{"report_id":"a57b319c-809d-4e4e-a2ee-699dfccf6d2b","version":0,"status":"done","tags":[],"date":"2026-07-27T09:45:13Z","url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":0,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"final":{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"title":"betaroi.ltd/","dom":{"size":514708,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (31266)","md5":"d3abbc4f8897e12c23cade45fefc6069","sha1":"82f3da73a04db18c3fb1399008108099dd494430","sha256":"9b9d959c02796bce8c1a2b4fdd5092893aeb8937817a5e76ffce9549c998ea52","sha512":"e2f451e96944c80a775a549610182a6582f8d6919c6df6f4cc3169d8237d39df9d108a161695dcd2fd62c76d42c0c5e6b03e7ef5f74f8cd94eac37ceac1e967a","ssdeep":"12288:5IRJQGaA1Wcu1YfpDdd2xuw3XHAyRJQGaA1Wcu1YfpDdd2xuw3XHAzRJQGaA1Wc8:o","tlshash":"61b485ba38a6c83a12bf52c641113b9cc84b972bd1324bd4b7ad02a467f4d537fd7216","dom_hash":"domhash5c348b2be899785ee52dfa02007c2a45","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":0,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T09:45:13Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":1}},"detection":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null},"summary":[{"fqdn":"cwlagos.com","ip":{"addr":"31.43.160.6","port":443,"asn":16509,"as":"AMAZON-02","country":"The Netherlands","country_code":"NL"},"domain_registered":"2016-07-08","domain_rank":0,"first_seen":"2026-07-27T08:06:48.723625Z","last_seen":"2026-07-27T08:06:48.723625Z","alert_count":0,"request_count":1,"received_data":317,"sent_data":486,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Framer Sites","description":"Framer is a no-code web design platform for designing and publishing responsive websites.","website":"https://www.framer.com","common_platform_enumeration":"","icon":"Framer Sites.svg","categories":["CMS","Page builders"]},{"name":"React","description":"React is an open-source JavaScript library for building user interfaces or UI components.","website":"https://reactjs.org","common_platform_enumeration":"cpe:2.3:a:facebook:react:*:*:*:*:*:*:*:*","icon":"React.svg","categories":["JavaScript frameworks"]}]},{"fqdn":"pixel.wp.com","ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"domain_registered":"1997-03-28","domain_rank":22824,"first_seen":"2017-01-30T05:31:40Z","last_seen":"2026-07-27T09:29:44.405247Z","alert_count":0,"request_count":1,"received_data":0,"sent_data":643,"comment":"","tags":null,"fingerprints":null},{"fqdn":"betaroi.ltd","ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"domain_registered":"2022-06-12","domain_rank":0,"first_seen":"2026-07-27T08:06:48.71126Z","last_seen":"2026-07-27T08:06:48.71126Z","alert_count":84,"request_count":84,"received_data":5238525,"sent_data":45291,"comment":"","tags":null,"fingerprints":[{"name":"Nginx","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"]},{"name":"Onsen UI","description":"Onsen UI is an open-source HTML5 hybrid app framework offering mobile UI components for PhoneGap and Cordova development.","website":"https://onsen.io","common_platform_enumeration":"","icon":"OnsenUI.svg","categories":["Mobile frameworks"]},{"name":"MySQL","description":"MySQL is an open-source relational database management system.","website":"https://mysql.com","common_platform_enumeration":"cpe:2.3:a:mysql:mysql:*:*:*:*:*:*:*:*","icon":"MySQL.svg","categories":["Databases"]},{"name":"Yoast SEO Premium:18.1","description":"Yoast SEO Premium is a search engine optimisation plugin for WordPress and other platforms.","website":"https://yoast.com/wordpress/plugins/seo/","common_platform_enumeration":"","icon":"Yoast SEO.png","categories":["SEO"]},{"name":"PHP:5.3.29","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"Magnific Popup:1.1.0","description":"Magnific Popup is a responsive lightbox \u0026 dialog script with focus on performance and providing best experience for user with any device.","website":"https://dimsemenov.com/plugins/magnific-popup/","common_platform_enumeration":"","icon":"Magnific Popup.png","categories":["JavaScript libraries"]},{"name":"Yoast SEO:18.5.1","description":"Yoast SEO is a search engine optimisation plugin for WordPress and other platforms.","website":"https://yoast.com/wordpress/plugins/seo/","common_platform_enumeration":"","icon":"Yoast SEO.png","categories":["SEO","WordPress plugins"]},{"name":"Site Kit:1.68.0","description":"Site Kit is a one-stop solution for WordPress users to use everything Google has to offer to make them successful on the web.","website":"https://sitekit.withgoogle.com/","common_platform_enumeration":"","icon":"Google.svg","categories":["Analytics","WordPress plugins"]},{"name":"Swiper","description":"Swiper is a JavaScript library that creates modern touch sliders with hardware-accelerated transitions.","website":"https://swiperjs.com","common_platform_enumeration":"","icon":"Swiper.svg","categories":["JavaScript libraries"]},{"name":"Redux Framework:4.1.24","description":"Redux Framework is a modular PHP library that allows developers to create customisable settings panels and controls for WordPress projects, providing a consistent user interface for managing options and settings.","website":"https://redux.io","common_platform_enumeration":"","icon":"Redux Framework.svg","categories":["WordPress plugins"]},{"name":"Slider Revolution:6.4.11","description":"Slider Revolution is a flexible and highly customisable slider.","website":"https://www.sliderrevolution.com","common_platform_enumeration":"","icon":"Slider Revolution.svg","categories":["Widgets","Photo galleries"]},{"name":"jQuery","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":"WordPress:5.9.3","description":"WordPress is a free and open-source content management system written in PHP and paired with a MySQL or MariaDB database. Features include a plugin architecture and a template system.","website":"https://wordpress.org","common_platform_enumeration":"cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:*","icon":"WordPress.svg","categories":["CMS","Blogs"]},{"name":"Slick","description":"","website":"https://kenwheeler.github.io/slick","common_platform_enumeration":"","icon":"Slick.svg","categories":["JavaScript libraries"]},{"name":"Underscore.js","description":"Underscore.js is a JavaScript library which provides utility functions for common programming tasks. It is comparable to features provided by Prototype.js and the Ruby language, but opts for a functional programming design instead of extending object prototypes.","website":"https://underscorejs.org","common_platform_enumeration":"","icon":"Underscore.js.png","categories":["JavaScript libraries"]},{"name":"Font Awesome","description":"Font Awesome is a font and icon toolkit based on CSS and Less.","website":"https://fontawesome.com/","common_platform_enumeration":"","icon":"Font Awesome.svg","categories":["Font scripts"]},{"name":"jQuery Migrate","description":"Query Migrate is a javascript library that allows you to preserve the compatibility of your jQuery code developed for versions of jQuery older than 1.9.","website":"https://github.com/jquery/jquery-migrate","common_platform_enumeration":"","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"JivoChat","description":"JivoChat is a live chat solution for websites offering customizable web and mobile chat widgets.","website":"https://www.jivosite.com","common_platform_enumeration":"","icon":"JivoChat.png","categories":["Live chat"]},{"name":"Bootstrap","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Chart.js","description":"Chart.js is an open-source JavaScript library that allows you to draw different types of charts by using the HTML5 canvas element.","website":"https://www.chartjs.org","common_platform_enumeration":"","icon":"Chart.js.svg","categories":["JavaScript graphics"]},{"name":"imagesLoaded","description":"jQuery plugin for seeing if the images are loaded.","website":"https://imagesloaded.desandro.com/","common_platform_enumeration":"","icon":"","categories":["JavaScript libraries"]}]},{"fqdn":"c0.wp.com","ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"domain_registered":"1997-03-28","domain_rank":63915,"first_seen":"2018-09-24T15:59:05Z","last_seen":"2026-07-20T23:43:20.778372Z","alert_count":0,"request_count":17,"received_data":399877,"sent_data":8359,"comment":"","tags":null,"fingerprints":[{"name":"Nginx","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"]},{"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":"cdnconsents.websitepolicies.com","ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"domain_registered":"2015-03-17","domain_rank":1372447,"first_seen":"2024-12-13T22:42:10.905843Z","last_seen":"2026-07-24T19:14:10.713148Z","alert_count":0,"request_count":2,"received_data":21014,"sent_data":1010,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"widgets.coingecko.com","ip":{"addr":"104.18.4.118","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2014-03-26","domain_rank":3132971,"first_seen":"2018-07-05T11:10:42Z","last_seen":"2026-07-23T05:31:16.754918Z","alert_count":0,"request_count":1,"received_data":398990,"sent_data":484,"comment":"","tags":null,"fingerprints":[{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"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":2,"received_data":232347,"sent_data":1745,"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":"translate.yandex.net","ip":{"addr":"213.180.204.194","port":443,"asn":13238,"as":"YANDEX LLC","country":"Russia","country_code":"RU"},"domain_registered":"2000-11-14","domain_rank":123882,"first_seen":"2013-04-25T11:29:08Z","last_seen":"2026-07-24T08:16:34.761788Z","alert_count":0,"request_count":2,"received_data":598,"sent_data":1205,"comment":"","tags":null,"fingerprints":null},{"fqdn":"stats.wp.com","ip":{"addr":"192.0.76.3","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"domain_registered":"1997-03-28","domain_rank":22660,"first_seen":"2017-01-30T05:06:59Z","last_seen":"2026-07-27T08:34:52.526387Z","alert_count":0,"request_count":1,"received_data":4263,"sent_data":450,"comment":"","tags":null,"fingerprints":[{"name":"Nginx","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":"cdn.websitepolicies.io","ip":{"addr":"104.21.52.101","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2021-05-31","domain_rank":1483191,"first_seen":"2021-05-31T16:13:42Z","last_seen":"2026-07-20T21:37:44.858222Z","alert_count":0,"request_count":1,"received_data":580,"sent_data":493,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}]},{"fqdn":"s3.tradingview.com","ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"domain_registered":"2010-03-20","domain_rank":165395,"first_seen":"2018-06-24T04:06:00Z","last_seen":"2026-07-25T05:38:23.80932Z","alert_count":0,"request_count":4,"received_data":56648,"sent_data":1964,"comment":"","tags":null,"fingerprints":[{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]}]},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2014-04-02T10:51:04Z","last_seen":"2026-07-26T22:19:52.505461Z","alert_count":0,"request_count":4,"received_data":168956,"sent_data":2212,"comment":"","tags":null,"fingerprints":null},{"fqdn":"api.coingecko.com","ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"domain_registered":"2014-03-26","domain_rank":442226,"first_seen":"2018-05-18T12:16:11Z","last_seen":"2026-07-21T20:24:11.162909Z","alert_count":0,"request_count":2,"received_data":0,"sent_data":1036,"comment":"","tags":null,"fingerprints":null},{"fqdn":"www.tradingview-widget.com","ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"domain_registered":"2020-06-05","domain_rank":196495,"first_seen":"2021-04-08T06:14:48Z","last_seen":"2026-07-24T15:28:31.440139Z","alert_count":0,"request_count":1,"received_data":0,"sent_data":594,"comment":"","tags":null,"fingerprints":null}],"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":"betaroi.ltd/wp-content/plugins/revslider/public/assets/js/rbtools.min.js?ver=6.4.8","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"36a5d1f1b8f9a73423510cb1cbf0238c","sha1":"48781d5388c24e91655b02128d4b621521beee41","sha256":"be20cda7bf9529f74f396ab2771a6efd8aed373a158cf33e12db1d6d8c20ce9c","sha512":"4cd8190e64ce1e2488fb1044aea19bf44b594ea3681e66da79499a913257d30357d7a6cee009d5851ae8ccc4dfd398d9127fa21c309046049d9d096e4c1e7a0c","ssdeep":"6144:5egnja/vs6Ws9sWIHA2EyMHXNbLfBmSVrlxhOX2BZtOmtCHnj1QM:8gja/vsPs9sWIHA2EyM3NbLbrbouZtOF","tlshash":"9314634967e235359203f13a4d5fdd09b23a688f2a4aec0a790c91f45f1c53c87b9fa9","size":200869,"data":"","first_seen":"2025-08-10T22:12:07.372466Z","last_seen":"2026-07-27T09:45:50.955279Z","times_seen":8,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver=5.0.10","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"367bd7a1a69c01509da43a50349e8788","sha1":"18e7ac3fbf31ff1f4cee6f5811844090404f04a6","sha256":"cb734b189032cb314fc8d3d34c1314d64c7a7698acfcba00e52050fdae9adb93","sha512":"c5190f86721797f0adc75f0e7147b1f685b954ad79f1535487f75a54272d8bbc51f17ac22548cfd378e92a02c19ffcda2409d8bc80a3af1aa4ccd9231bb00fb0","ssdeep":"192:bP6z6AN8i4/5VTcJ7QlnV8fPj0Al/+vLxoUi1hoFWYWlZyVL9J79hFmDzULK+Qo5:OZexqpQlVEjjN+viUhu0LKymvv64e","tlshash":"8ea2963ef5104da300815b19646419c57f4ac103bfaeb42a79bc6f9a2f8e42d93bd63d","size":22429,"data":"","first_seen":"2023-07-01T15:13:09Z","last_seen":"2026-07-27T10:21:19.624341Z","times_seen":28,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"5fa8e8cae554e2c73a6bbe460da5af2d","sha1":"11540ccc8e6bcf70a93fc52511d96c688bf2dead","sha256":"6d3098f0923cbf82210c6f5e25cea0341abf2c2961b49ea0d2486f78d438871c","sha512":"6161a9a7e3114f16453440a6e095efd868bb8f53cebbea66ea4dfcef35a4411469aa8149448676111df46bc4bc20f4bb282cc8831deaeba082ababa875aa487e","ssdeep":"","tlshash":"a24151763bd154942af208f3f12f1b0e3b2645030088a6368598aae0393edd5c0fad0d","size":2144,"data":"","first_seen":"2026-07-27T08:06:56.595726Z","last_seen":"2026-07-27T09:45:50.969937Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"cea93008b813a1cc1222a5fa8b51e2b5","sha1":"6593eddf68a2599a764cef0d5296ede6d1e9eac3","sha256":"4e206fb62275e070daee3d732881d96ae62e89a2dd9c474434092d2f8265187b","sha512":"7a64f5e9b142da6f95d80f85e123a5c886ac4aaeb1c9e31daa0e3231ae570555b3623e65a70dff7394ff2a90daff084b96ad9dfc8241c7c0789e129ad1455f6f","ssdeep":"","tlshash":"c69002556834684e0d444111b891e0b01505c9e151204659e92a7c50381a95a381539f","size":55,"data":"","first_seen":"2023-03-14T09:23:06Z","last_seen":"2026-07-27T09:45:50.970788Z","times_seen":10,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"06241031a8f931dbe611a2a329978a83","sha1":"37733d5e0a399b59b4f8fa08daadc48c376a5b3a","sha256":"6783a065a03b574d1cdb4fc0c50273dad405a73476386512fc43042199e34f9d","sha512":"0b2cc6e572a0a11e4bef5c0f9e1348b1c5dc9d4d93a975b5554aec3e082fb1918ff8dfceeb6bea5c3a6d4d007ee3e5b791833e86d680c5fb81ac1e1380b1d750","ssdeep":"","tlshash":"58d0950b390510203f79145c51354a2cf56b101254301416c487ec8ce234ef90a2425f","size":247,"data":"","first_seen":"2026-07-27T08:06:56.60053Z","last_seen":"2026-07-27T09:45:50.971672Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"0a6b7e166025cb6ef2d4ec504329664c","sha1":"ed8e390e38579bd897f79eb1f549a2bbbe2d8791","sha256":"fe07d0106cdd0ff442ae88d729b9c0b38dfcd40ce4130168940fb2e9fe70179f","sha512":"a78661f8d1f7adc68d33c5b39ec1e433bfb0abc0dbce52535f2d45c615b110f420c68461c3fe071f1b3283630f62951f2a14bc9f92d345302af4fbcc248cea2f","ssdeep":"","tlshash":"fce0689d2c92b16733e87639c237876b22610740348295288a16cc1564618d7489ac8e","size":380,"data":"","first_seen":"2023-03-07T12:38:51Z","last_seen":"2026-07-27T10:34:10.884216Z","times_seen":1417,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"759bea00173dca2e7cd57c23a81d62ce","sha1":"be030f1fefb4b91553829e507a4685fa9d148f51","sha256":"e7f4fbc8058da627ceb14f2261609ad5e03a6cfeeb533014e79fbe26196d27ec","sha512":"0dfe84040d502fd6935c2d728089b1fd4ba6d39cbe532d3d276f911799811fb364f51504ceac2777d0fea2ea89b707bb4991b52c811985bdd0d70586265543f5","ssdeep":"","tlshash":"12a0243114355171df51170d354d3c0335000001c50f510c30013715d50f0351000003","size":78,"data":"","first_seen":"2026-07-27T08:06:56.603432Z","last_seen":"2026-07-27T09:45:50.973428Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"58988db9230f92a68f35c7469be04254","sha1":"5a560630d7e182caff68e7f5db1db559ed1018f9","sha256":"db5969e6d2b17a06e7e71e75d9ee21d9cac6bda6bd6e0a5e4032d13c580accdd","sha512":"d6898a2bd50908bcf8d2ab80cd5c005fd504b49709e7cff3766b4b4fa4fd2201b6c6a6eb050b2de8413a480ca18d14620c181f73a933bff003ec70ae9e385d9b","ssdeep":"","tlshash":"1c80002000b82020e82a3830b00a08a0ba0ca203a0ac0002eaa20202ac02a080800a8c","size":29,"data":"","first_seen":"2023-03-07T12:38:51Z","last_seen":"2026-07-27T12:38:09.646782Z","times_seen":1806,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"6f740b956919fbaa673bb496be184ac1","sha1":"fa7d2aef8069f1be31c655fb889c897eae36757a","sha256":"c8d83f1bd6a850a6f197b9bcce38828132ad627358b9c2c78e7c4bef4d22c304","sha512":"e35920e657641e1a0fd7854febd24180da274bf4a9e243a3d3c356cb92281f7174c451d2bf89a98f618368cfecdc77fa11308eb8665b2719b4780390aa755364","ssdeep":"","tlshash":"93417b829b5c80fd88267269ad395315a67acc73130905b2be4d2c9dec54923c7cb9be","size":2326,"data":"","first_seen":"2023-03-07T01:02:18Z","last_seen":"2026-07-27T09:45:50.975263Z","times_seen":14996,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"199d3f2d880a45cb76f4d355f5edf5ed","sha1":"e7a478ac7c81b36e22894fd2be69085c6dba81d8","sha256":"38db327084e1b800d3f263fe22995a999545eb07b01fa350bc2453f940fa8795","sha512":"d0e11dde7a80af4c9dd34ef1e929e07ab03cc0240e004daa4377cc03bd7be6568f040cd61f64a52556f24822114f7a4f5d8e42b3ecfef6520fe3f6bab3bd34d8","ssdeep":"","tlshash":"2ce06808afac2c2a52606090bf99478fa72a2e42184148cbebb85983e4b5e103196c7c","size":369,"data":"","first_seen":"2023-03-07T01:02:56Z","last_seen":"2026-07-27T09:45:50.976169Z","times_seen":916,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"0cdff92eb2fb003bbb613a09a1ebc9f8","sha1":"4ae1b5d08f3dbe3f96c1b77751fcc396490210b3","sha256":"9bd8e4bfeb6201b5b9ea7271ac1c76f942c6893a207c478e33dc0bc5a0559e6a","sha512":"402690e610da6365408a2e181db22c9f16d47d3ba72c5eb4751b2c8685cc10c198c4f052899f09a07f0d466c0c6a20fe30497affa0892b96971254ebf27f48aa","ssdeep":"","tlshash":"2ed0126815d008b82497b39412af164034b823cb554dad807f5d6e106f00e502470b75","size":201,"data":"","first_seen":"2023-03-07T12:38:51Z","last_seen":"2026-07-27T10:34:10.886224Z","times_seen":532,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"6b31c51dc8b08298249d967945d2cf6d","sha1":"87be771555b81fbd59d669e7d2eab580e645f5b0","sha256":"433382583b22d69f505604d026e76c61d77a8b78ac8a2a8498292462d87bce2d","sha512":"d25e4038efc685aeb60cd538f1891f62260a4165a24a4bb17617dff220756f73c3fea35c2c9f691c5b8353b5f2edc1611375878a7e4afadcb6a31e235070661d","ssdeep":"","tlshash":"00b0920545f2359c0b9b13f4b28da15706ee19c260259a590288a20b1eae94c4052e1a","size":111,"data":"","first_seen":"2026-07-27T08:06:56.608379Z","last_seen":"2026-07-27T09:45:50.977911Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"eaf93aa0819f73fc6756f55c88846be9","sha1":"65dace07513a4dbd6a5b67b122e86a2c41eb21f4","sha256":"153ee935a64c15c819113183a73e4c52b7aec5a57e1ccee66aed22dc846f65b9","sha512":"9deb0c074d047de6b8a8f7f397532115ea59c5b867c31c231992ada4de41cce048ca55449df824944175d114038c6e9c6e9bcd928ad6355e32571f02c2e08be9","ssdeep":"","tlshash":"aac0804119c40e4653d605ec5b6d373391d112257928c84246c8d8644d65406c4c9259","size":162,"data":"","first_seen":"2026-07-27T08:06:56.610303Z","last_seen":"2026-07-27T09:45:50.978725Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"336b4b067dcb50351d5e2d7c92cf1631","sha1":"9709109f27eaad0c5a1e50facc142f8f197a11b6","sha256":"ef2f7f28db32250196ae2c8242611a7f7159c2a539dabd40b82071b1c07561c6","sha512":"43c83e5907dbc25a8620884fadba33a679e0668095a659e79e711c8b6d6331d778849aab0f19bef0131cfd5537e462f2ca238dc9134732ec6867ddd945ff5676","ssdeep":"","tlshash":"d3b012343c25b42d192b300c31df53643c3a4140fa016940d07e78441433f550b01f8c","size":102,"data":"","first_seen":"2023-03-07T01:02:19Z","last_seen":"2026-07-27T13:50:01.59619Z","times_seen":48260,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"b1c1643f2c64d832866a514e9f4bab46","sha1":"3272a68705805c2232b441771f7c3c1afad7c2d0","sha256":"835c8e457c9db0e588edf12c963e74f2594f06fd6848ecdbc7ab7b9c5dc02875","sha512":"a041840e323ffe52b8e2e895f3b44df2b95ace74db2d9178bc7571ae066adb7e85e1a52451ec3e251904947716dc7f26d23f398fbe5db08b8033b137b377901b","ssdeep":"","tlshash":"59c02b9456c05d4521f1c3dc035c7232724541038d1b979399cc83400fe9064c008251","size":136,"data":"","first_seen":"2026-07-27T08:06:56.612724Z","last_seen":"2026-07-27T09:45:50.980715Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"a89e2668e8c1b2dc3218fa75d1a6056d","sha1":"c34f1c212ed7fc3a58e0c61916bd0064a16268c3","sha256":"4bb53a2714943c7c4c7df5ec79a461fdbc2c811c67b3add2d058e0be9859be3c","sha512":"f1ddb97872e539725f10a2313c05b0e7f5e0ab8411a72b42f7caa369dbf8ba9d178d3b7542e18f2a61d17dcb015984b172d8d7c443716040a1aecf99f61db337","ssdeep":"","tlshash":"711190fd269c2c16da4627dc6455b657d3e220173b846bc25ffed91809b6059870c05b","size":908,"data":"","first_seen":"2026-07-27T08:06:56.614355Z","last_seen":"2026-07-27T09:45:50.981729Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"7a6ac20bfc670dc65361ca0e9acf3a22","sha1":"1c961adc88862d1e38c521a993f2b01704789f22","sha256":"0949b6c76fbd14088e759bbd7f86264c0bea2570a868559b15654910f6b6dd9e","sha512":"fee7020ed5d7c254a37e9449ec397362b60e3b13336b14192a46e458139349374a306e7e6d5409224afde0f8e9d86ceb0647543b2a6a80f58b611846f2eb6740","ssdeep":"","tlshash":"8bb02b4009c12ec2e09064f87564727317911201092458021fccc0020e60001c80c202","size":118,"data":"","first_seen":"2026-07-27T08:06:56.615916Z","last_seen":"2026-07-27T09:45:50.982761Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"dbc78609a0929d7930d6103525569e7d","sha1":"4301f0306b69cd47e97f3cc7b2f9a14d8c042ee4","sha256":"671606320a27ef19b4956fb6e262dec7eacd95fa0681e74bce7af0b0d039603b","sha512":"d7f2a120c3e8d84a5453be598c5ff60ee4321eb5e8cbc75a268a78bdca21bc66327d50ddee1480fcf5d3abdb42121a490622f222715e688249416399a7d18147","ssdeep":"","tlshash":"4101fd03a9ba6c1bd5cf53ca2a863a6d7ac78a1bb7e1063015c8bd80069dc00d21cd1a","size":819,"data":"","first_seen":"2026-07-27T08:06:56.617593Z","last_seen":"2026-07-27T09:45:50.983722Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"83e8d30564830de4a8822510096893a2","sha1":"14f0bdf582caab6e4796b00b8dca1e098adbddb6","sha256":"7dd36d1921a5045c7e3058b18419df5f1357d84ff8a6aa0a20fd16228bc8bbd1","sha512":"ae5421ad3c253263c3538e478cf5456870eb902ae0c05fc34178abb62f7163dff2d1333cba62a85d4ca3966a0ce900f082f6432ef8a43cc97168b05be2355426","ssdeep":"","tlshash":"9fe0f13762f1dc374de84bd0302c2402c9b3025940dcb2926fed4af6dfe98194258703","size":411,"data":"","first_seen":"2026-07-27T08:06:56.619115Z","last_seen":"2026-07-27T09:45:50.984708Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"1fc3be3db6dcd457fa3870b2f66281aa","sha1":"7abca41e79df06e9c24afb1f119bc32397c2af89","sha256":"954668a9770ed29b0fce34f205e5d5c44589d2bcb3c2666f2ea58ab4f7363a44","sha512":"d7e10ddebad07f474e95b6885d470344bfa4ca40b8c75cb1b6d984d9c9539cb41ae604f74048f8395c65c837d95a01172a06fce993e59dbb4966303ab07b9071","ssdeep":"","tlshash":"5ab0924066e4f88d207e75eabb9cb476aac221450a4a5d20e5ec930a5e93110906c789","size":113,"data":"","first_seen":"2026-07-27T08:06:56.621221Z","last_seen":"2026-07-27T09:45:50.985728Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"e04be0dd0188a36e0e18beef4e9b071c","sha1":"ae7eca76de5c8abc3072d1babb2d0b77986d621b","sha256":"fd996e5ed43fba47fff738ab926d7c5ad2db1365df6bcf1b5f8ae1b2f2c50bda","sha512":"3440b5de53f513f6b80dece0bdd4dae64d4a3450c6b3c4b658a6093e4011f3712d1cb0a601ae502f2438cb7ff127de85dcb014e1cbecab553de02521f6da66d5","ssdeep":"","tlshash":"6aa0228a30832800c08ec2a08e23fc00082020cb038fca083ae0ae30eaa0880b08322f","size":66,"data":"","first_seen":"2023-03-07T01:18:55Z","last_seen":"2026-07-27T14:16:57.716553Z","times_seen":8142,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"868254becd45be25bc67bc6861cf4192","sha1":"698ac9c2af1ad58ece77bbb29fb91a12f9b9e1e1","sha256":"a639855474665f9ca2e5367936706745f4b051c3292134a12adabccdd73c5738","sha512":"f0540c1453f1e9d0300680922c7d171864d633d73517264cee0193228b33f89e9c3a475c2eb33b24c4e98e00bcdcc19f2d5a9fc01bbdf9e319889fbd9fb8cce7","ssdeep":"","tlshash":"4cd0c28c3c238607c4dab29a3e6b7044a028f85842af5d1ba61fcd052d4091db6f360e","size":277,"data":"","first_seen":"2023-03-09T21:52:18Z","last_seen":"2026-07-27T09:45:50.987703Z","times_seen":43,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"2524f5d5849eb081b20cf4a612ad34b4","sha1":"b96e284aca0a193ee2cc9b54d6609199c70baca4","sha256":"78c6b3588963b2218d5bacffaeda5e00c2802c5b6dea271eed3b343b9c1d13fb","sha512":"4b961f5872a3f06b4b426ddbd5c5c6d0b623531f98bc6e8823c1d92e5498c90a596f6fed2433e5e20976bd9dac422788f5b5ba3198ff677f8d20e871f11295de","ssdeep":"","tlshash":"fb21ad962e210e2497aea7c871da3baf48d4033326d4b58d1ad9e06501f7c9ef0493f3","size":1143,"data":"","first_seen":"2026-07-27T08:06:56.624587Z","last_seen":"2026-07-27T09:45:50.988684Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"cdc8ed07cfe4ffc7147feaafabc5347b","sha1":"5480e5709c956f5fe8a7c25ad6af061c308d05d9","sha256":"d44a1783b17d172e8c2944d8c6571465bedd26a14e452acd576fdf467c38c466","sha512":"2d9445a59a0c6b3c4e6913523e70a287782353baeea4543f765c45f6be4856478a617d89743aa8ca2b31e47c5e879312c5d111e395ded2a6cb1afe875c0f382a","ssdeep":"","tlshash":"c94183287d48667b8193d7017623bf13ad3c022661057df9f878497c28bae7a2507c2b","size":2049,"data":"","first_seen":"2026-07-27T08:06:56.625955Z","last_seen":"2026-07-27T09:45:50.989649Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"197c7bba30a2c2fc6e008504900aa0ff","sha1":"0d97d450112eec8a14b57f0164449e192423d25b","sha256":"e95faa8d12cfd76b17beea1345f12b63e67dab2a9f231ceb318500e6c8c30663","sha512":"7831d5475189b07fb6438f1e2edcf5d09889583d29ea350e88ac2d7ffe6293ba4ec3baec5de4997a89740eec199d925c0b5c0b8e6f57f35faff0d77888c9a7fb","ssdeep":"","tlshash":"0db0125c64542f8b61e82ceaa158b3ab6ad1235058244c1127c5d5540f11804cd84345","size":94,"data":"","first_seen":"2023-03-10T06:41:12Z","last_seen":"2026-07-27T11:43:18.638492Z","times_seen":4679,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"c8a8704f60fb32291d05631a0d26b822","sha1":"22b92cd0caeb07e4e6d1d114e6af58f0da7659cd","sha256":"50eec5684ba868a01372596ffb6ecc2203a7c86076085c3d3cd97ed281656fae","sha512":"de96e5eb83f5653a9004e376dc60b3b750da70a1ca18ef8a517952e863f57bbf80f4a097f1739a989dd855d965ef0e45000114958da7afb4ecacc67a086b2a32","ssdeep":"","tlshash":"f6b0123ae8737ce51ed7041939cb00c3d7d20140f6505808148d83a11f3acc1c189fc9","size":108,"data":"","first_seen":"2023-03-11T14:09:25Z","last_seen":"2026-07-27T09:45:50.991444Z","times_seen":109,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":true,"md5":"f2580494409cd88dfd10f8450b481b68","sha1":"14965b5ac6411bac0f4e3f7da156b4b10b47a3ef","sha256":"8ea3a1dfb73ad67cee020a355c38d7261dd0ebb934dd94260d92d179051f57e2","sha512":"0570629bc1e6bba2ba343d8c4123e238fc6ef37de903b53c243ec693f578d4ca72521fb9d55d3e209a315f5cbe845ad62e1d42b88dd7841b223b76a9ca60672b","ssdeep":"","tlshash":"78c0127141b8a1be6251655c2029f56ea9d2054292a54c843ab8708c673b3c61180a80","size":178,"data":"","first_seen":"2026-07-27T08:06:56.628609Z","last_seen":"2026-07-27T09:45:50.992313Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/jquery.magnific-popup.min.js?ver=1.1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"342841c71bf97ea45ca04fe8d6cead55","sha1":"637e10197aa7b42cae85e8423a9570cb70afb674","sha256":"cb99922e6533e36934a738ae2fa05252cc1fd22dc76015fdc5e6e639795e88c0","sha512":"a75fc7d3daaebc0daada3b71521b6582768c93a5039c8ae287a7c6745c958d9af47d061a4c2e2f53278fd5647d60c5406543abafd62d8709d71c36dd72aac9d8","ssdeep":"768:X6pkptmFVQMxhOVvr2XZ+n6HSABdhbGQZD:X62XCwhGsoSABPbGOD","tlshash":"3ae25119f6f321279757b1388e7f9c0832759047ae05dd443e4c61a8afa883895f9fac","size":32802,"data":"","first_seen":"2023-03-10T00:49:37Z","last_seen":"2026-07-27T13:38:47.795544Z","times_seen":116,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/dist/vendor/wp-polyfill.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"60c88069166716db064d51e9d7eb9bc8","sha1":"28e5067d2a3b688bb5828500fffc8783f3884443","sha256":"bab8bc75e2e121a7b9d273f9f38c33881e07e29070704adeb351d8936d14a16f","sha512":"849d4a90765f79128e9f5f756b7994c23de4a38b4b177c7c7e7b588846667ed9e96768242a510d7b2df718fea346335b19cb4063c85410f87e528d725393b3ac","ssdeep":"384:jH/K6JXF19SF31ymHemyuaYIkP215c1oQWpHP+bmv5zS:jiK1IxAYIkPZzbaS","tlshash":"13825f8dfd89b0610373a17a922f840bf3bb1996745f99d0926ec5e06c7888f413be1d","size":19260,"data":"","first_seen":"2023-04-05T15:05:59Z","last_seen":"2026-07-27T13:52:26.906766Z","times_seen":36956,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/ui/slider.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"49cde5e6fac6c9450b87e3a4b7beb3a0","sha1":"7035ed9cb54c0f65c75f32e24926f486e845850a","sha256":"45ad602a77364ffb8bb717c9b1dd8431d8fcf91bfdeba4d2fbba3968f83de1d9","sha512":"5250e87f66cc01757a2ef62223392d22f374fe9d4af660a204d6fcbc3f2a24ea26c5c652d76184c0b5ee6dd6c6a9091a7eddddc66e290a6ca240130bfaa721a5","ssdeep":"192:6eASBogU9cCX7Wxcf5tI/6wgFKklFhtJAOnvY3yspt:6eAyPU9c/cn3Ct","tlshash":"4522744a320a2b015b9bd271653da8cbd77752c8a90449dcb074dfce485cf4992ebfb8","size":10750,"data":"","first_seen":"2023-03-07T01:34:38Z","last_seen":"2026-07-27T09:45:50.95204Z","times_seen":355,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/countdown.js?ver=20150315","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"b8386e00af5d6f59c1391b19eaa18248","sha1":"a53f3b6a23467ae5d6711574d7e0199fd749f05e","sha256":"29677816fdde607ce9c4f6974ba318be573c77f789917973341923b134dc8b9a","sha512":"2b65fe5130e53252e3e6778e04c4dc8be89adc0848414ed04706d73431eaf13e5cc7f0c751ef21150b924e7371cb2dfe45e116dbc2a68c9be490741c5170c60d","ssdeep":"","tlshash":"3c61ac28e0b715546877b0617a3f524e2b3692271c89d6113edc23e25f66c38d89aff4","size":3410,"data":"","first_seen":"2026-07-27T08:06:56.454291Z","last_seen":"2026-07-27T09:45:50.899659Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/p/jetpack/10.6/_inc/build/photon/photon.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"24626ac4453bf45fe07e6c5d4e859fbd","sha1":"9adbe5e7a5e1b5fb19aee82a9d765631b62ecb2f","sha256":"5cfd3418ebf7c95f8f7a9024ebfa383ff5a267a8568c9a2708c26733824bdf07","sha512":"843553cfc6b5e0c16f4ee4517bc292d666f4acd6e8d6ed693077682badf9070ac1105c368226f3e2f037b2bb47699b25dd51e888bfbb087af2c62555d377b984","ssdeep":"","tlshash":"b50194797304963258c25267946eb3c66c26207727c34c59151ceca38ca4d491935ce7","size":685,"data":"","first_seen":"2023-03-07T01:03:05Z","last_seen":"2026-07-27T09:45:50.862259Z","times_seen":1053,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/revslider/public/assets/js/rs6.min.js?ver=6.4.11","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"5f8c208fbdc7995fea7c192c6fc7976a","sha1":"108388171c81d7d860597115f8cf71f1212cfffb","sha256":"e9efe6177e31b948c8a402c0209341b0a7576279358477d5f7af0af945727162","sha512":"6a6943c7d05d4bb14f57c29ab202631f922612f80cec468820f44b3024f8b19a226072a891b059ee7bcfb6cfe01c8eb762a3402fb96b8b23c94dbe0c459fdc33","ssdeep":"6144:SysGPqBS7EATtNKWiw0LbcW5e4QiPOqIhzO50ZT5vvYmrK0ZfV0u382IzEJShrhK:SQ3EATt9hzRJShrhYbZdZnh","tlshash":"b4c42c95c6f1283c8297e12b9d3ecc04737aa90b6b06ac16796d96140f8c52c17f5ffa","size":572314,"data":"","first_seen":"2025-10-08T10:03:20.667928Z","last_seen":"2026-07-27T09:45:50.946743Z","times_seen":7,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widgets.coingecko.com/coingecko-coin-price-chart-widget.js","fqdn":"widgets.coingecko.com","domain":"coingecko.com","tld":"com"},"ip":{"addr":"104.18.4.118","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"7407ff5900429b97bfdcff61871f6c42","sha1":"370fd82d88ff97cd65fe5965b23eb428171f08fa","sha256":"9106f5db7bc26168c7328f30a66a562b709c6e54a9ea78260e4b1ad37a5cc404","sha512":"d1ef0a6ad4dfb2af4ed994030783563adc4428a707bbc22000c376a19697aa8d062c2f070b2045b5e03e3d77a8ee5efb94ecdfe9fd27e7188061c860c8e64899","ssdeep":"3072:G+20tYf422lfa8HvQOyslk061YSJQqGtroqEmuYBUZrnPPSiirUzpA1gvz:G5x20oyslk0WYSJdCVluYUBEuvz","tlshash":"16843bcdb2c0b15a47b353e5601f250ba33b29a86c4a8780f672f4d6687a48d6177f7c","size":398105,"data":"","first_seen":"2026-07-27T08:06:56.420851Z","last_seen":"2026-07-27T09:45:50.934118Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js?ver=4.0.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"6bf2d21e9bdb4d04e40b5f9decc60314","sha1":"1f16da2e4fd4d2c9db5fce1e101c3a44be54dd89","sha256":"02f83fb268599737a5a5c8e1db12d562bdaa9ae73cb906c4f63c7b871eeecdb4","sha512":"c23497a91d4221d642363cdf3f47b1a867ab0dca284df0029fd1277848585f119df5268816158889bb15991d477b1e94214ae0eca3d1e26adf7e99ecf53b8fad","ssdeep":"384:ZDCVFGE8Psl1GbOdoEMTGT6Gt7w50xioyTQTflUw4OSIU/3P:5/0JTHlh45IU/3P","tlshash":"de72df096ebb20126f9f7069fd0b55857237402b54899c2778dcd7d80fe24386eb6fa8","size":16048,"data":"","first_seen":"2023-03-12T11:49:12Z","last_seen":"2026-07-27T10:21:19.575257Z","times_seen":64,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/ui/mouse.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"f0a6215645c0c08e11eb34b62d75fc17","sha1":"4cada97302f25735f6bd8c23cb43ca50d154ba56","sha256":"37a579a050da890dfcb8e3e018834926e61e759f35923bc961bc995514a4b000","sha512":"fd1ebed2033399743c544f7dc3dc06d5309f0815ea0fef56bc23c2ed50f856ebc536b693e8f5c60363ffc103fd6a3c62748beb674b8ccefa6ab272fcfb49830a","ssdeep":"","tlshash":"d061ab8e33145e8342931736923baf4b7d3184d96406d51dbb79acd83a2c93960b79fc","size":3406,"data":"","first_seen":"2023-03-07T01:24:24Z","last_seen":"2026-07-27T09:45:50.891781Z","times_seen":702,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/leaflet.js?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"cbf71ca7e362576331c3e06924bef1d5","sha1":"1456e979b9b4220efb06ccd65de238f9e0dd5796","sha256":"855584a095a4394c1cfcd22245008edc4e551c51ab6a70456a20c4670db8656e","sha512":"a7842e8f80240dfc001752eaf3ffb496237b490097d031aee5f601017720489be36e42d1e05a38634a8add1ee84ed7a0318fbe5a4feb3a0f50f83a3479819feb","ssdeep":"6144:EzWBpMFtWND5UWD8QxvzQxOVBdFBNHTFOMVrDHUeKYztGiO:TpmtWND5UWD8QxvzQx8BBNzFOMVrDHUv","tlshash":"f624f00ab7e529369243b1395d3f850ab335908b294aad1c3d1c92ec5f1d43c96b6ff8","size":222245,"data":"","first_seen":"2026-07-27T08:06:56.533001Z","last_seen":"2026-07-27T09:45:50.930695Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/Control.Geocoder.js?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"639a239fee3339560736708fe8c11acb","sha1":"75760de614cb630b1395f718256791c0244c77dc","sha256":"86d34d924dfac0aa3bd5c4f902572fdfbadeb6ef04e6fb5fa1d4e8a898ecbc36","sha512":"f120a067ec8f3bfa4d4164ed83c7959dc451fa651556997a958e500f7acc27e06541ecc909f2a520234d4fcfafb074e9077d83f1c758f8fb1f185a0aa0617b16","ssdeep":"384:JPfMuR2fIrp94wqBme2mLNLENA/i/or7rh2CzIFcIHrLrQiLT34zsfifzg:pMsQJwNw3AC8ZHx4zsfifs","tlshash":"1f433e8eaab62254419370785faf5008b679e1476d0cad183d5c93c85f8dc3cb6faee4","size":59378,"data":"","first_seen":"2026-07-27T08:06:56.385381Z","last_seen":"2026-07-27T09:45:50.827289Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/leaflet.markercluster.js?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"3fddce552a72b8f5a3b0cdf190002654","sha1":"d24d4fd050a1a2df9ebdc1c1c5297587be616f9d","sha256":"ebcc2fcaf77ad754617475b26392c59dc0bfaa9423e5790e1abdf7b7e1156e76","sha512":"2007ff84f359f62352fe5ddff695b493d612529070283a15803d0a570c2f9534c8057109af2519116b50e28ebbf929e4d8aae10e46dc5f9b9281e4dc3ea1f190","ssdeep":"768:li/TCHO0TEg/F8aRRaXpzJ//ubuHuXjjskk7Xtq9YaYDJ47oX4EMnPi6EzLE3h:lIGT2aCzwX3GnaIJ47AcPi63","tlshash":"a3230e4a67e51676a743b23a0c3f8d1b6771405b1a85ad0c790ca2ed4f0e92c63b6ff4","size":49865,"data":"","first_seen":"2026-07-27T08:06:56.466457Z","last_seen":"2026-07-27T09:45:50.863881Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/dist/vendor/regenerator-runtime.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"64e89b93b02055fb75ea0913089ded0b","sha1":"9ccf854a6acedb27496725fa7570a670fd7bd572","sha256":"a3e64300797e8078baa41dbc49e2affc1d2bedd04a470f0c929ed7fac698fbcd","sha512":"a0249e580255ab1555cfffd5fddc4d02e7131accde87c748ff1484f06ef68d30e627fb8c9182d6c21da5f840546b88c6aadbd4d1197536fde4158298396a8a11","ssdeep":"192:qgmZqezJYiwDL+U3GA6qiY8qgx8s9Zqrr4PFkS:oUDl3t6CE9g8PFP","tlshash":"ded164ca71c6f01543977b25911f000be33a595ef9498558eb18e8e2fcb484e922beb8","size":6494,"data":"","first_seen":"2023-03-07T01:02:19Z","last_seen":"2026-07-27T13:52:26.90601Z","times_seen":37003,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/magnific/jquery.magnific-popup.min.js?ver=1.1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"342841c71bf97ea45ca04fe8d6cead55","sha1":"637e10197aa7b42cae85e8423a9570cb70afb674","sha256":"cb99922e6533e36934a738ae2fa05252cc1fd22dc76015fdc5e6e639795e88c0","sha512":"a75fc7d3daaebc0daada3b71521b6582768c93a5039c8ae287a7c6745c958d9af47d061a4c2e2f53278fd5647d60c5406543abafd62d8709d71c36dd72aac9d8","ssdeep":"768:X6pkptmFVQMxhOVvr2XZ+n6HSABdhbGQZD:X62XCwhGsoSABPbGOD","tlshash":"3ae25119f6f321279757b1388e7f9c0832759047ae05dd443e4c61a8afa883895f9fac","size":32802,"data":"","first_seen":"2023-03-10T00:49:37Z","last_seen":"2026-07-27T13:38:47.795544Z","times_seen":116,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/imagesloaded.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"3a56752b736635bf69cb069b8818cbfd","sha1":"42e0951fe74bb3f56a30f51291823bcd4a84d76e","sha256":"ff4bd34aa98a0214833619d3d751838db015722dfbbec15cd14dadc66cd67869","sha512":"a255d61de4e6cec2084aae0f027ccc0259039aef62268a27072c8097d348d76bb725ca35563386ceb068387c9ad3ab0e331bd270ba754a38a2a2d33944f305f5","ssdeep":"96:PwRxr6JAXgWWwrrSTrmM4KvlGC89QPjRxq2uVBXeHRGKrc4oPUGPgNhd+qLoBV7J:Pwjrycrr3rKvE9IjRxjGjgNhdTLo3re+","tlshash":"90c122cd77a27535229af0b3a21f020f72b6406e6918815d7959ecf65cfcd192633bb0","size":5629,"data":"","first_seen":"2023-03-07T01:02:40Z","last_seen":"2026-07-27T13:52:26.884454Z","times_seen":23323,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-private-message/assets/js/perfect-scrollbar.jquery.min.js?ver=0.6.10","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"c80b3ab299c9c19a5a17fee382c9ac46","sha1":"0846aa09d900e2985b188652dd93da222a20df8b","sha256":"7c19077efda00cbd8af46a60cc24fc7573b666535e18db4b76d8e4f29db15eb6","sha512":"627aaddb26f2ae85e78341067652908b8c6e5c5df12d9224690949dbca8412afe5e28462fbd9cbded3915dcf8cdc24c849f0721fb43bfe9883d954e91433b4c9","ssdeep":"768:ts2/5GZReXbf4tQnMouMSR6lKp5ewnLfmR9vpmUvwRpwY2XDJsRM0dI7oJo0I+md:SR8bf4+Q8+BNaLhsb2Bo0XDIC","tlshash":"3853124d66e2307951afb02edbdf420e32768053120de9807c5c9fb85fa5a741be1bad","size":63390,"data":"","first_seen":"2026-07-27T08:06:56.566931Z","last_seen":"2026-07-27T09:45:50.902226Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/property.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"e84324a6934d3c3445d2b80e66123b6d","sha1":"e51d76256c8adb6345a54ce9f17284de3ee2e588","sha256":"ce5ed08247cf2fb4223aacf4981c961d46e3bb383091e542a571431e8ed6cc63","sha512":"b6f8e22acbb06f1c180995dea682dd3bfe5ed94a7635dff59fd45e85c1403f4fa45ed52d3b00158a0b45fd41709ba39623d31a094fac1fcb913756b876890eaa","ssdeep":"384:b+dYnPPeU7wGBFupr87LrTXl83MikSGTHtlxjnA8s7a5AudzOzadwYPxjsEcU3S7:MiPeU7wuLrDlTIel3SNY0f/","tlshash":"7d437209f9f26875247b303f5bff74056a2a441b511acf20ba5c4b840fc552ce6b9bea","size":60623,"data":"","first_seen":"2026-07-27T08:06:56.541617Z","last_seen":"2026-07-27T09:45:50.967346Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/chart.min.js?ver=1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"2ff7cf679d6b39625b16d31ec82a6aee","sha1":"1191ca9954288ec9542b976c9e38156b402948c0","sha256":"2365319d8ead70aceb7842beb998efaf64f6d1f04b30dd57c29f1702be22bd4c","sha512":"5b790075869bd5831761fb26841d305ad84ee70e85aeab21acb6209f82b99e69376b9f62135cb459579a97d48832d3fde11b469619ac6d1718e5b0235e45931d","ssdeep":"1536:6OtW4Ca/zqnk1b2PqfftcXCKLZrqLi2tUhqLcuVu51VoK9+BzJKLViqTY5HEqW/P:83nD2Davp3TwhHFpUkg/ytBiOfE","tlshash":"72643149bae235349213f138592f89087236b44b2f4afd057e5c52a05f5c82d97fafe8","size":321467,"data":"","first_seen":"2026-07-27T08:06:56.569285Z","last_seen":"2026-07-27T09:45:50.866326Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/slick.min.js?ver=1.8.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"dc746a31d95fbbe018b9c3fcfd62d79c","sha1":"0a3bdaa54c5147b24b4d324ae734d871568953ed","sha256":"91c2a692376fe8f4339ad4db1c847dd4b54d15d8fce99164d0308477681315c4","sha512":"3a4b4d2d17b6954a42c58648779fa6cdfab08f341da57b5e9f94ea90c4ce35459235f98bd2e5696c35250c3718fe9025c1e33929f8f16df8fe8f225b4b6d50cd","ssdeep":"768:wn9DBxxCeMazcPCqYXw0P6+MBdXIfY2aTaAWrEaRgtTKN0YB3gMtq+TJLBUKLnDp:/Or1ZFdZZN","tlshash":"a9432e0a96e02735859bb0e66409c808a3fbf63b6b11d49039cc53956f5d828cfe7bf5","size":55646,"data":"","first_seen":"2023-05-31T21:10:18Z","last_seen":"2026-07-27T11:56:43.248236Z","times_seen":99,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/jquery.mmenu.js?ver=0.6.12","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"a1167f9ea6a3549ce5d9e8466932f306","sha1":"bc2d214097a32421e67259596abc6e100c097e20","sha256":"be61657bbb6909c52d166fcc2bd1ea5e92458e7a63218720916f7fab58efa743","sha512":"6844fab3297cbe4b8cdd046e73c91541b7ce4dcd645b5fb4b6c1b27de36d51ffc61bb6cb40acf55dca2aad729ce7ce00ffb37bacef7627e074a4dec656095c18","ssdeep":"768:mZ+vzfvva201hSEk28zMZ3+n0jDQh/FI+QVx:mZkmDI820gtIjVx","tlshash":"ebf2540ebbea21a2d597b1359eaf8814b133405f250acd487d5c93e40f2913856faff9","size":37461,"data":"","first_seen":"2026-07-27T08:06:56.539958Z","last_seen":"2026-07-27T09:45:50.940747Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/ui/core.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"e77ef4006bb97c97c8407f4a8abf4e3d","sha1":"1a27436ff6ef47ca5c3e352b792e50901ebb705e","sha256":"9d7da1b980a95ff3d31d0bb8733cbabd1d210ec601d15a1aac2b67394a33191d","sha512":"42bc78cf422404867ec9c74ea58a3d8e064552abd337b1b822073f683336ad3f31d29403cf764c20865e94512d99b0b2c16226ba960a61d09f9ddcc6e537f586","ssdeep":"384:Au1fevEqqqVS3dsfA/N1H1ib58fuxNhDGXvhHQfZw/OwR2op9FkFrFd:IS3V27+hJLp7kl","tlshash":"fb92d68db2453805c5fba275507f534fa132a29cb10a88ddf4acc9e92c7ae991073f79","size":20714,"data":"","first_seen":"2023-03-07T01:06:36Z","last_seen":"2026-07-27T09:45:50.825673Z","times_seen":4252,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/jquery.ui.touch-punch.min.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"1235b66b886793d7ffe52bb76f73a2a0","sha1":"b9ddc9406beb1e23d56512de31bd53588159a676","sha256":"b91f520d58f78934a9508d283053934acbbdf4e5f76ad17f7b5c4ee3af67bb3b","sha512":"e00e3bcebf49385d5a8e4ad00e9cf38563efdaac9f909aab8030732ba58599ac74e96c8c244585b510f5fedb79957ec8814bdc3f450c29e09797a29f420db33e","ssdeep":"","tlshash":"ca317b4b93e2646fe263b754f37b6e6e7235814b4106c9843a3e42e09f2943d17b898d","size":1819,"data":"","first_seen":"2026-07-27T08:06:56.499915Z","last_seen":"2026-07-27T09:45:50.859817Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/main.js?ver=20131022","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"a1b8e80e7340db27642acf331aa999d2","sha1":"0a9911309211e2c08c1e0dd33b273aa0c03f9f7e","sha256":"35c7a37cc8a2c10f6842eabe5a8dd8dd494813eb6d21c2f3adb631193962ed8f","sha512":"96275f8429f24c9066f2e9446a256ba77aed5e257a7046dd39b74e42e3d97fa8cdbed4995db48c6cb86a6bf667d624ebb5d2bc2f3ae4fbd0220cc89404939435","ssdeep":"768:QnCaXiz5dZbn/L+jLy2d01Rds9nHnWu1yKy+/AgnvSIDPi:QnCaXildZbn/iJ0Pds3/AgnvSYPi","tlshash":"da63420cb6255caa49b7337b9fbfa405fa7a0127810347147e7c92d45f71848a229fbd","size":68482,"data":"","first_seen":"2026-07-27T08:06:56.571178Z","last_seen":"2026-07-27T09:45:50.849552Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/svg-support/js/min/svgs-inline-min.js?ver=1.0.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"0c01ab9fd82b5a7ab597c13fb9b28bb3","sha1":"1b311df15a3b7ce36d8ffd857b75a042778a44a9","sha256":"b8695dc320002faa65408e6ba906d9f2018f35cf8fb4790e6aa9dcad958a263e","sha512":"ff4950f13598fd1c6da22388e30f63438fe1efcb53cf940aa56c86ae3e487e139fce59ed445448df14baab31c95f692efdc0d8ef65cdb49d49daf594d1676edb","ssdeep":"","tlshash":"1f51e0a9bbe910bd691770748aeeb0583534542b1604dc107a1cb9e21f5ad2823fdbdf","size":2611,"data":"","first_seen":"2026-07-27T08:06:56.513578Z","last_seen":"2026-07-27T09:45:50.94766Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/sticky.min.js?ver=4.0.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"f7f1703ee9dda81c864d2185aa879e05","sha1":"9e957778d21389fd55b9cbe31b1661948c6c319d","sha256":"40b8f39d84cbc9dd7801d47b17bb85ba2975cf62e9fc8b60a790396dea502063","sha512":"b4c8b16b5f46009ad59b6d03cdf33561b0349ebcf13379bd2a4fed1db8433978940b935c9fb7b29512188fb77a8ab858158cfc3268a3a173c50095329982b7d9","ssdeep":"","tlshash":"d431580a7af13112538760ef2c1b090cb2b2423e6947681d74fc83cd5f2282826bae74","size":1556,"data":"","first_seen":"2026-07-27T08:06:56.364221Z","last_seen":"2026-07-27T09:45:50.900492Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-private-message/assets/js/main.js?ver=20131022","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"b070055824ebcd76e29e63e209e0313b","sha1":"bc9d73c041c0369056f1c9bed468f6ed5ba853fb","sha256":"a7d619b84c20f02ea3bd306e6c4ce77c94d45bf2f78e986a4bcf62918809a9be","sha512":"0ab9786fab152856f91606e23a55e81a789594068a33e9dc4e36c66fd73bb2dfa8b79697d8f39db571b10ecc630d8eb615f32da99531cd4b337ca09fc7f314ea","ssdeep":"192:ue984XgY4i7ZaCl4XwmCaKj6mcbxmz7iXOU7iKb+YUAuzjyM:oi7ZaCoic+CvpZk","tlshash":"0142ee0db4f65cbc54b3702fbaef70022915a817510fee19b56c16e06f984acb2787a8","size":12244,"data":"","first_seen":"2026-07-27T08:06:56.443899Z","last_seen":"2026-07-27T09:45:50.956042Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/jquery.highlight.js?ver=5","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"c7ee5ef9d09c0e48a4da296500ed24fa","sha1":"050e21c1200b99475e975c3fb560048eedddaf51","sha256":"6fe5fd1b538cdc13214348ccb45b7efc3a3fd6c4fc01d5f36fb844818336fc33","sha512":"d932fea52f4609324b9ce8891b5d5f2dacb10311e8e7938edb9e80246d21d9efec287ce1444c83c88fc56e5e296b67f528d5c263fc68129ac62a3e5919bc5e70","ssdeep":"","tlshash":"7931e148bfd3131ea42734b72fbfd10cbe7698d32408c4547a5c56815f508a126eb7b4","size":1706,"data":"","first_seen":"2026-07-27T08:06:56.458024Z","last_seen":"2026-07-27T09:45:50.860631Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/LeafletHtmlIcon.js?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"d0bda3031a93e9fe4952897579f5048c","sha1":"5fd0462e92521e11299d4671e208f4b45da1c049","sha256":"1f6497b7e90c3e4aedda2af396887a26b575d13c14af1a0eb2ead8b925389b47","sha512":"b5be53e765f2249216a818a75f8e153a4bdeb4323835f4ddb17266b39a623444aebf28add93a49dd4626f35f43b5a8ae9dea0cc05937f19ba7456b43aa169d2f","ssdeep":"","tlshash":"83f04c4e79e6604223d372952abb6046f231820b3a045c55bc1e43c05f20a24d597f9c","size":602,"data":"","first_seen":"2026-07-27T08:06:56.518312Z","last_seen":"2026-07-27T09:45:50.853118Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/jquery-migrate.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"79b4956b7ec478ec10244b5e2d33ac7d","sha1":"a46025b9d05e3df30d610a8aef14f392c7058dc9","sha256":"029e0a2e809fd6b5dbe76abe8b7a74936be306c9a8c27c814c4d44aa54623300","sha512":"217f86fee871fa36eca4f25830e3917c7bf57a681140b135c508aa32f2a1e3eff5a80661f3b5ba46747d0c305af10b658d207f449550f3d417d9683216feea8f","ssdeep":"192:JrprDNvD66fPP/+I6OP1fQP0OIr96DB6MHXcwr1RF:JrprxG6fPP3P1fQMOIsDsMMS","tlshash":"8232c59d71a6b4624eb735b8b03f939f71b605d9250d8940d26cc9f6782c84ec22bf68","size":11224,"data":"","first_seen":"2023-03-07T01:02:02Z","last_seen":"2026-07-27T14:17:47.202464Z","times_seen":85884,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/bootstrap.min.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"b268134716140fd15bc95145126aa692","sha1":"2ac90e83628763b67ab641ae858c57200afed58e","sha256":"0ada45837e213d979e22d39c383cd69b54855b1b3fd63ae5182adf918863591e","sha512":"79d9496b242a699939e79ce953e189a57a6616f643b7adf3bdc5872b6ecc1bc79d5185ce156bee8ed4bd9173e969ad8626f1e65d9d776ced94341178ad3021a4","ssdeep":"768:X42NROdp5aYWbrMAD/3oyAoxyJbmozEzOGpjnqw50WU7nXPISahEj/l5JlA6Zl1J:oOgdrGbrZ4nOz7nP3MXJlA+l1/2u","tlshash":"ad33840bb7f22062976bb0a58e5f45087235492fa64bdc5c3c5c92e06f2583855bbfbc","size":50156,"data":"","first_seen":"2023-05-15T11:46:25Z","last_seen":"2026-07-27T09:45:50.895401Z","times_seen":17,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/jquery.unveil.js?ver=1.1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"4151f9b52a775a4a77e591b8d45d7d01","sha1":"597ec87af6a4e0e2d3616dd5a9912f74ca381d8f","sha256":"4da6818c4bfccb5fdbcc8b32bdc8852a6e6d4224c00a770f00941258eb4c5a00","sha512":"85e47bd515c655d0aa6b131cfdf99be18e8b3cdfd59a68267570dce96f844ba3122988c5419ffb53cd980a91c486e837c3980395d106b8c308fd3152034775bc","ssdeep":"","tlshash":"6d41fd2f2d6a32336c23316a8f9b6049f66190374805e61af92c5094dfb8c3e0275ee8","size":2130,"data":"","first_seen":"2026-07-27T08:06:56.362315Z","last_seen":"2026-07-27T09:45:50.939982Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/perfect-scrollbar.min.js?ver=1.5.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"7956bedadec179d9ab13636febbb4203","sha1":"d15e5a5c12e36d927d4c3f97085ba2c2503673b8","sha256":"06d76dc28cdaf8e9947b0bf64bf93fff6cdb1aefe14f1897f6adebcae1abc7a1","sha512":"9fa1ed915fad196394ed040d8150a43a9626b6f548e9f0cb1d8b7e0d8eaeb2be51f57b43692287bcfe56bc2425ba84fd440773a73e419a999dcee464fea93140","ssdeep":"768:8K3qCzQqFIjr+0LesEF6z058Ls1bE3BRQv:8KzQXX+0LesEF6z058LsC3zw","tlshash":"dbd21d0966e1307990efb02ed99f8b4c32368017674e9cd8384cceb86f646785772f69","size":29685,"data":"","first_seen":"2026-07-27T08:06:56.520188Z","last_seen":"2026-07-27T09:45:50.963667Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/functions.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"e4e47f9df7358641216d7dd6baf6d1e3","sha1":"39fb9b6d65ed8bda5af6989e08a9d2ea0347712a","sha256":"0ec02a79c1f273e68245ca538293ce641d17fb739e8eb003de826cf83ea48a95","sha512":"9337c220a435641bbbecc606ec8a8931fca9d26d90c6db2b9457ad6ee8b1f20dca750579510ac9583ba22cab3564fc59222769f4eb9c12f3c182b5e91b6e47e8","ssdeep":"192:03SOh4RGbIJjVnAxta5HO6g2S48+WXS+QhtT3qaPRi3ZOBQATa7a5lGq5cDSCLmG:gQtCjiA/szI","tlshash":"e8a20208bcf710325063743e9bdf5014a7ab6887450dde11bd9c56980f95a28eaf8bfc","size":22318,"data":"","first_seen":"2026-07-27T08:06:56.559484Z","last_seen":"2026-07-27T09:45:50.896274Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/contact-form-7/includes/js/index.js?ver=5.5.6","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"introduction_type":"scriptElement","is_inline":false,"md5":"7f53a99cb61b7cda29d6e15bd48b1009","sha1":"3a415cba548ed853015fe55415be34231aae188a","sha256":"25c9f9032e28797678891f7f79036fab91aeb5f7bb6cf392347dccf6b3e6bc1e","sha512":"5883346745c21c8b822e64170e56fe2b3a730ff4aeecc44790b9e2f2d954de6f1ab60aa6d21161efcd422fa1511277217312695a3ffaf42d8d226f0dc6bb8cca","ssdeep":"192:om6tMth9AzbzOmfyYnNQFzu78A6lkftVY08ZFtDwtxuCbQ+8RX0DSak15hPp9tmG:geQfyV4MHGyxP9jHLXH","tlshash":"b662932717f20432033370a6459b9741b325701bdcca9f503e5c86686f5cdbaa9f2bea","size":15407,"data":"","first_seen":"2025-05-15T11:09:19.008874Z","last_seen":"2026-07-27T09:45:50.958607Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/jquery.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"02dd5d04add4759122013c5ab4dc5cc2","sha1":"a45a56e396ac549b4ff39b696ce9e0c16a7612de","sha256":"bd4de6a3fc0fb68d6f76ba7b93514b96a92e585c295b5351c31ad92a4b0777ea","sha512":"04690d9875e98f5ae6bf94f5c71b7a0177b374bc09609a0f58312e1c337348749a40e07fe226737dc248bd8fe2f6a489071258619affc7f1df644e4255159615","ssdeep":"1536:DjExXUqJnxDjoXEZxkMV4QYSt0zvDL6gP3h8cApwEIOzVTB/UjPazMdLiX4mQ1vM:DIh8GgP3hujzwbhd3XvSiDQ47GKq","tlshash":"e99309ddb2c6702257a720ba007f510bf236199d6c4d8450f169d8eabc78a4e827bf7d","size":89521,"data":"","first_seen":"2023-03-07T01:02:02Z","last_seen":"2026-07-27T13:52:26.928236Z","times_seen":59818,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":[{"level":"log","text":"JQMIGRATE: Migrate is installed, version 3.3.2","filename":"https://c0.wp.com/c/5.9.3/wp-includes/js/jquery/jquery-migrate.min.js","line_number":2,"column_number":709},{"level":"warn","text":"[CoingeckoCoinPriceChartWidget] This widget is deprecated and is no longer maintained. Please visit https://www.coingecko.com/widgets to get the new version of this widget, which features a new design and better performance!","filename":"https://widgets.coingecko.com/coingecko-coin-price-chart-widget.js","line_number":7,"column_number":72376}]},"http":[{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/flaticon.css?ver=1.0.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.303Z","timestamp":1785145482303,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/flaticon.css?ver=1.0.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 4976\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":4976,"size_decoded":5185,"mime_type":"text/css","magic":"Unicode text, UTF-8 text","md5":"b440df2b205772c1507989bb5d9ec0cc","sha1":"270cd35311d2803cdf24108725e7b3fcd8e6423d","sha256":"7846d5ced0bd2cee7a583abfe8f020d4c03744a3a564a1ce66b285ed7ff93ca4","sha512":"ae3244ca557e0727afb89d6ac574e7a58fb4626a092cc116a4fc58120864fb0f35a9965996966446c50c7833d75a19e268cbf3e4e6e4f42487e96268c1c78dd8","ssdeep":"48:DXq893NXA2TZjvx2K8nj453oxAnzddaoVON7xlHvspD4WKm/6cbrFOrYraqc:DXpN5DYenzdYtlPsp4mdNkY7c","tlshash":"a3a15d989ebe4040a311db451a9f67c16334b13e5cc49c9cf2159fadf6f1a5043e26ee","first_seen":"2026-07-27T08:06:56.488733Z","last_seen":"2026-07-27T09:45:50.953694Z","times_seen":3,"resource_available":false,"data":"CS8qCiAgCUZsYXRpY29uIGljb24gZm9udDogRmxhdGljb24KICAJQ3JlYXRpb24gZGF0ZTogMDkvMDEvMjAyMCAwODoxOAogIAkqLwoKCUBmb250LWZhY2UgewoJICAgIGZvbnQtZmFtaWx5OiAiRmxhdGljb24iOwoJICAgIHNyYzogdXJsKCIuLi9mb250cy9GbGF0aWNvbi5lb3QiKTsKCSAgICBzcmM6IHVybCgiLi4vZm9udHMvRmxhdGljb24uZW90PyNpZWZpeCIpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSwgdXJsKCIuLi9mb250cy9GbGF0aWNvbi53b2ZmMiIpIGZvcm1hdCgid29mZjIiKSwgdXJsKCIuLi9mb250cy9GbGF0aWNvbi53b2ZmIikgZm9ybWF0KCJ3b2ZmIiksIHVybCgiLi4vZm9udHMvRmxhdGljb24udHRmIikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoIi4uL2ZvbnRzL0ZsYXRpY29uLnN2ZyNGbGF0aWNvbiIpIGZvcm1hdCgic3ZnIik7CgkgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKCSAgICBmb250LXN0eWxlOiBub3JtYWw7Cgl9CgoJQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7CgkgICAgQGZvbnQtZmFjZSB7CgkgICAgICAgIGZvbnQtZmFtaWx5OiAiRmxhdGljb24iOwoJICAgICAgICBzcmM6IHVybCgiLi4vZm9udHMvRmxhdGljb24uc3ZnI0ZsYXRpY29uIikgZm9ybWF0KCJzdmciKTsKCSAgICB9Cgl9CgoJW2NsYXNzXj0iZmxhdGljb24tIl06YmVmb3JlLAoJW2NsYXNzKj0iIGZsYXRpY29uLSJdOmJlZm9yZSwKCVtjbGFzc149ImZsYXRpY29uLSJdOmFmdGVyLAoJW2NsYXNzKj0iIGZsYXRpY29uLSJdOmFmdGVyIHsKCSAgICBmb250LWZhbWlseTogRmxhdGljb247CgkgICAgZm9udC1zdHlsZTogbm9ybWFsOwoJfQoKCS5mbGF0aWNvbi1jYWxlbmRhcjpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEwMCI7Cgl9CgoJLmZsYXRpY29uLXBlcmNlbnQ6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMDEiOwoJfQoKCS5mbGF0aWNvbi1tb25leS1iYWc6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMDIiOwoJfQoKCS5mbGF0aWNvbi1jbG9zZTpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEwMyI7Cgl9CgoJLmZsYXRpY29uLWZpbHRlci1yZXN1bHRzLWJ1dHRvbjpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEwNCI7Cgl9CgoJLmZsYXRpY29uLXBpbjpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEwNSI7Cgl9CgoJLmZsYXRpY29uLXN0cmVldC12aWV3OmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTA2IjsKCX0KCgkuZmxhdGljb24tcGhvdG8tY2FtZXJhOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTA3IjsKCX0KCgkuZmxhdGljb24tc2hhcmU6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMDgiOwoJfQoKCS5mbGF0aWNvbi1wcmludGVyOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTA5IjsKCX0KCgkuZmxhdGljb24tdGljazpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEwYSI7Cgl9CgoJLmZsYXRpY29uLXBsYXk6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMGIiOwoJfQoKCS5mbGF0aWNvbi1jb2xsZWdlLWdyYWR1YXRpb246YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMGMiOwoJfQoKCS5mbGF0aWNvbi1oZWFydGJlYXQ6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMGQiOwoJfQoKCS5mbGF0aWNvbi1mcm9udC1vZi1idXM6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMGUiOwoJfQoKCS5mbGF0aWNvbi1wZGY6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMGYiOwoJfQoKCS5mbGF0aWNvbi1kb2N1bWVudDpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjExMCI7Cgl9CgoJLmZsYXRpY29uLWRvd25sb2FkOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTExIjsKCX0KCgkuZmxhdGljb24tc21hcnRwaG9uZS1jYWxsOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTEyIjsKCX0KCgkuZmxhdGljb24tdGVsZXBob25lOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTEzIjsKCX0KCgkuZmxhdGljb24tYmxhY2stYmFjay1jbG9zZWQtZW52ZWxvcGUtc2hhcGU6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMTQiOwoJfQoKCS5mbGF0aWNvbi1sYXllcnM6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMTUiOwoJfQoKCS5mbGF0aWNvbi1lbnZlbG9wZTpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjExNiI7Cgl9CgoJLmZsYXRpY29uLWhvbWU6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMTciOwoJfQoKCS5mbGF0aWNvbi1oZWFydDpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjExOCI7Cgl9CgoJLmZsYXRpY29uLWludm9pY2U6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMTkiOwoJfQoKCS5mbGF0aWNvbi1tYWduaWZ5aW5nLWdsYXNzOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTFhIjsKCX0KCgkuZmxhdGljb24tY2hhdDpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjExYiI7Cgl9CgoJLmZsYXRpY29uLWJveDpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjExYyI7Cgl9CgoJLmZsYXRpY29uLXVzZXI6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMWQiOwoJfQoKCS5mbGF0aWNvbi1sb2dvdXQ6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMWUiOwoJfQoKCS5mbGF0aWNvbi12aWV3OmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTFmIjsKCX0KCgkuZmxhdGljb24tZWRpdDpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEyMCI7Cgl9CgoJLmZsYXRpY29uLWdhcmJhZ2U6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMjEiOwoJfQoKCS5mbGF0aWNvbi1yZXBseTpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEyMiI7Cgl9CgoJLmZsYXRpY29uLWxlZnQtYXJyb3c6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMjMiOwoJfQoKCS5mbGF0aWNvbi10cmFuc2ZlcjpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEyNCI7Cgl9CgoJLmZsYXRpY29uLXpvb20taW46YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMjUiOwoJfQoKCS5mbGF0aWNvbi1kcm9wLWRvd24tYXJyb3c6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMjYiOwoJfQoKCS5mbGF0aWNvbi1tYXBzLWFuZC1mbGFnczpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEyNyI7Cgl9CgoJLmZsYXRpY29uLW1vcmU6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMjgiOwoJfQoKCS5mbGF0aWNvbi10cmFuc2Zlci0xOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTI5IjsKCX0KCgkuZmxhdGljb24taGlnaC1maXZlOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTJhIjsKCX0KCgkuZmxhdGljb24taG9tZS0xOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTJiIjsKCX0KCgkuZmxhdGljb24tcHJvZml0OmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTJjIjsKCX0KCgkuZmxhdGljb24tbmV4dDpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEyZCI7Cgl9CgoJLmZsYXRpY29uLWFycm93czpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEyZSI7Cgl9CgoJLmZsYXRpY29uLWFuZ2xlLWFycm93LWRvd246YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMmYiOwoJfQoKCS5mbGF0aWNvbi1wbHVzOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTMwIjsKCX0KCgkuZmxhdGljb24tbW91c2U6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMzEiOwoJfQoKCS5mbGF0aWNvbi1tb3VzZS0xOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTMyIjsKCX0KCgkuZmxhdGljb24tYmFjazpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEzMyI7Cgl9CgoJLmZsYXRpY29uLWRvd25sb2FkLTE6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMzQiOwoJfQoKCS5mbGF0aWNvbi11cGxvYWQ6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMzUiOwoJfQoKCS5mbGF0aWNvbi1sZWZ0LWFycm93LTE6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMzYiOwoJfQoKCS5mbGF0aWNvbi1yaWdodC1hcnJvdzpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEzNyI7Cgl9CgoJLmZsYXRpY29uLWRvd25sb2FkLWFycm93OmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTM4IjsKCX0KCgkuZmxhdGljb24taG91c2U6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxMzkiOwoJfQoKCS5mbGF0aWNvbi1ob3VzZS0xOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTNhIjsKCX0KCgkuZmxhdGljb24taG91c2UtMjpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEzYiI7Cgl9CgoJLmZsYXRpY29uLWJ1aWxkaW5nOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTNjIjsKCX0KCgkuZmxhdGljb24tcGxhY2Vob2xkZXI6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxM2QiOwoJfQoKCS5mbGF0aWNvbi1wbGF5LWJ1dHRvbjpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjEzZSI7Cgl9CgoJLmZsYXRpY29uLWNhcmV0LWRvd246YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxM2YiOwoJfQoKCS5mbGF0aWNvbi1wYXNzd29yZDpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjE0MCI7Cgl9CgoJLmZsYXRpY29uLWxvZ2luOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTQxIjsKCX0KCgkuZmxhdGljb24tdXNlci0xOmJlZm9yZSB7CgkgICAgY29udGVudDogIlxmMTQyIjsKCX0KCgkuZmxhdGljb24tbGlzdDpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjE0MyI7Cgl9CgoJLmZsYXRpY29uLW1lbnU6YmVmb3JlIHsKCSAgICBjb250ZW50OiAiXGYxNDQiOwoJfQoKCS5mbGF0aWNvbi10YXNrczpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjE0NSI7Cgl9CgoJLmZsYXRpY29uLW1lbnUtMTpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjE0NiI7Cgl9CgoJLmZsYXRpY29uLWxpc3QtMTpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICJcZjE0NyI7Cgl9CgoJLnRlc3RpbW9uaWFscy1pdGVtIC5hdmFydGE6YmVmb3JlLAoJYmxvY2txdW90ZTpiZWZvcmUgewoJICAgIGNvbnRlbnQ6ICfDouKCrMWTJzsKCX0="}},"time_used":463,"timings":{"blocked":369,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo-child/style.css?ver=5.9.3","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.314Z","timestamp":1785145482314,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo-child/style.css?ver=5.9.3 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/css\r\nContent-Length: 1589\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":1589,"size_decoded":1798,"mime_type":"text/css","magic":"assembler source, ASCII text","md5":"8a1de954c95544a04ab9be3f2d899097","sha1":"4b2bc8cc547c88aed3d131aba3d87b659ad37749","sha256":"fea1f7c5652e87382e11252d68506a0270d6e040d7e014a543308453268db9ed","sha512":"c94e5c9b782b9a1071e635cd986cd7549d0bef5bb7342d8a9c9cd6341a71d06ed1d7a3f4f59c4ca0f6ec5ce3b6fe3f60bce67c43e6eaedaa2e4ee6299db15de0","ssdeep":"","tlshash":"9331ef02f6e71c96702f8104247eb3797f7c6182c32acebabb5c77710b1a3869535644","first_seen":"2026-07-27T08:06:56.553529Z","last_seen":"2026-07-27T09:45:50.834331Z","times_seen":3,"resource_available":false,"data":"LyoKIFRoZW1lIE5hbWU6ICAgSG9tZW8gQ2hpbGQKIFRoZW1lIFVSSTogICAgaHR0cHM6Ly90aGVtZWZvcmVzdC5uZXQvaXRlbS9ob21lby1yZWFsLWVzdGF0ZS13b3JkcHJlc3MtdGhlbWUvMjYzNzI5ODYKIERlc2NyaXB0aW9uOiAgSG9tZW8gQ2hpbGQgVGhlbWUKIEF1dGhvcjogICAgICAgQXB1c1RoZW1lCiBBdXRob3IgVVJJOiAgIGh0dHA6Ly9hcHVzdGhlbWVzLmNvbQogVGVtcGxhdGU6ICAgICBob21lbwogVmVyc2lvbjogICAgICAxLjAuMAogVGV4dCBEb21haW46ICBob21lby1jaGlsZAoqLwoKLnByb3BlcnR5LWl0ZW0gLnRvcC1sYWJlbD4qIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDMwNDkgIWltcG9ydGFudDsKfQoKLnByb3BlcnR5LWl0ZW0gLnRvcC1sYWJlbD4qLmZlYXR1cmVkLXByb3BlcnR5IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkI2MEIgIWltcG9ydGFudDsKfQoKLmFwdXMtYnJlYWRzY3J1bWIgLmJyZWFkY3J1bWIgbGkgc3Bhbi5hY3RpdmUgewogICAgY29sb3I6ICNGRkI2MEIgIWltcG9ydGFudDsKfQoKLndpZGdldC10ZWFtIC5zb2NpYWwgbGkgYSB7CiAgICBsaW5lLWhlaWdodDogMzRweCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGQjYwQiAhaW1wb3J0YW50Owp9Cgoud2lkZ2V0LXRlYW0gLnNvY2lhbCBsaSBhOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDMwNDkgIWltcG9ydGFudDsKfQoKYS5idG4uYnRuLXNob3dtZW51LmJ0bi10aGVtZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAzMDQ5ICFpbXBvcnRhbnQ7CiAgICBib3JkZXItY29sb3I6ICMwMDMwNDkgIWltcG9ydGFudDsKfQoKLnRleHQtYy1jZW50ZXIgLmVsZW1lbnRvci1jb3VudGVyIC5lbGVtZW50b3ItY291bnRlci1udW1iZXItd3JhcHBlciB7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNCAuaW5uZXIgewogICAgcGFkZGluZzogNDVweCAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5pbm5lcmdhbGxlcnkgLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5LnYxIGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiA0NTBweCAhaW1wb3J0YW50OwogICAgLypvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OyovCiAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlciAhaW1wb3J0YW50Owp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnAtcG9wdXAtaW1hZ2UudjE6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDAuMSAhaW1wb3J0YW50Owp9CgouYWdlbnRzaWRlYmFyaW5mbyAuYWdlbnRzLW9yZGVyaW5nLXdyYXBwZXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmFnZW50c2lkZWJhcmluZm8gLmNvbC1zbS02LmNvbC1tZC02LmNvbC14cy0xMiB7CiAgICB3aWR0aDogMTAwJTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAuZnRtb2JpbGUgLmVsZW1lbnRvci1jb2x1bW4gewogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9Cn0="}},"time_used":754,"timings":{"blocked":657,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/jquery-migrate.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.321Z","timestamp":1785145482321,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/jquery/jquery-migrate.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\r\nSec-Fetch-Dest: script\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Wed, 18 Nov 2020 09:06:06 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":11224,"size_decoded":4816,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (11126)","md5":"79b4956b7ec478ec10244b5e2d33ac7d","sha1":"a46025b9d05e3df30d610a8aef14f392c7058dc9","sha256":"029e0a2e809fd6b5dbe76abe8b7a74936be306c9a8c27c814c4d44aa54623300","sha512":"217f86fee871fa36eca4f25830e3917c7bf57a681140b135c508aa32f2a1e3eff5a80661f3b5ba46747d0c305af10b658d207f449550f3d417d9683216feea8f","ssdeep":"192:JrprDNvD66fPP/+I6OP1fQP0OIr96DB6MHXcwr1RF:JrprxG6fPP3P1fQMOIsDsMMS","tlshash":"8232c59d71a6b4624eb735b8b03f939f71b605d9250d8940d26cc9f6782c84ec22bf68","first_seen":"2023-03-07T01:02:02Z","last_seen":"2026-07-27T14:17:47.202464Z","times_seen":85884,"resource_available":true,"data":"LyohIGpRdWVyeSBNaWdyYXRlIHYzLjMuMiB8IChjKSBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiJ1bmRlZmluZWQiPT10eXBlb2YgalF1ZXJ5Lm1pZ3JhdGVNdXRlJiYoalF1ZXJ5Lm1pZ3JhdGVNdXRlPSEwKSxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxmdW5jdGlvbihlKXtyZXR1cm4gdChlLHdpbmRvdyl9KToib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSx3aW5kb3cpOnQoalF1ZXJ5LHdpbmRvdyl9KGZ1bmN0aW9uKHMsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSl7cmV0dXJuIDA8PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS9eKFxkKylcLihcZCspXC4oXGQrKS8sbj1yLmV4ZWMoZSl8fFtdLG89ci5leGVjKHQpfHxbXSxpPTE7aTw9MztpKyspe2lmKCtvW2ldPCtuW2ldKXJldHVybiAxO2lmKCtuW2ldPCtvW2ldKXJldHVybi0xfXJldHVybiAwfShzLmZuLmpxdWVyeSxlKX1zLm1pZ3JhdGVWZXJzaW9uPSIzLjMuMiIsbi5jb25zb2xlJiZuLmNvbnNvbGUubG9nJiYocyYmZSgiMy4wLjAiKXx8bi5jb25zb2xlLmxvZygiSlFNSUdSQVRFOiBqUXVlcnkgMy4wLjArIFJFUVVJUkVEIikscy5taWdyYXRlV2FybmluZ3MmJm4uY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBwbHVnaW4gbG9hZGVkIG11bHRpcGxlIHRpbWVzIiksbi5jb25zb2xlLmxvZygiSlFNSUdSQVRFOiBNaWdyYXRlIGlzIGluc3RhbGxlZCIrKHMubWlncmF0ZU11dGU/IiI6IiB3aXRoIGxvZ2dpbmcgYWN0aXZlIikrIiwgdmVyc2lvbiAiK3MubWlncmF0ZVZlcnNpb24pKTt2YXIgcj17fTtmdW5jdGlvbiB1KGUpe3ZhciB0PW4uY29uc29sZTtzLm1pZ3JhdGVEZWR1cGxpY2F0ZVdhcm5pbmdzJiZyW2VdfHwocltlXT0hMCxzLm1pZ3JhdGVXYXJuaW5ncy5wdXNoKGUpLHQmJnQud2FybiYmIXMubWlncmF0ZU11dGUmJih0Lndhcm4oIkpRTUlHUkFURTogIitlKSxzLm1pZ3JhdGVUcmFjZSYmdC50cmFjZSYmdC50cmFjZSgpKSl9ZnVuY3Rpb24gdChlLHQscixuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdShuKSxyfSxzZXQ6ZnVuY3Rpb24oZSl7dShuKSxyPWV9fSl9ZnVuY3Rpb24gbyhlLHQscixuKXtlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHUobiksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXMubWlncmF0ZURlZHVwbGljYXRlV2FybmluZ3M9ITAscy5taWdyYXRlV2FybmluZ3M9W10sdm9pZCAwPT09cy5taWdyYXRlVHJhY2UmJihzLm1pZ3JhdGVUcmFjZT0hMCkscy5taWdyYXRlUmVzZXQ9ZnVuY3Rpb24oKXtyPXt9LHMubWlncmF0ZVdhcm5pbmdzLmxlbmd0aD0wfSwiQmFja0NvbXBhdCI9PT1uLmRvY3VtZW50LmNvbXBhdE1vZGUmJnUoImpRdWVyeSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFF1aXJrcyBNb2RlIik7dmFyIGksYSxjLGQ9e30sbD1zLmZuLmluaXQscD1zLmZpbmQsZj0vXFsoXHMqWy1cd10rXHMqKShbfnxeJCpdPz0pXHMqKFstXHcjXSo/I1stXHcjXSopXHMqXF0vLHk9L1xbKFxzKlstXHddK1xzKikoW358XiQqXT89KVxzKihbLVx3I10qPyNbLVx3I10qKVxzKlxdL2csbT0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2c7Zm9yKGkgaW4gcy5mbi5pbml0PWZ1bmN0aW9uKGUpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYiIyI9PT1lJiYodSgialF1ZXJ5KCAnIycgKSBpcyBub3QgYSB2YWxpZCBzZWxlY3RvciIpLHRbMF09W10pLGwuYXBwbHkodGhpcyx0KX0scy5mbi5pbml0LnByb3RvdHlwZT1zLmZuLHMuZmluZD1mdW5jdGlvbih0KXt2YXIgcj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmZi50ZXN0KHQpKXRyeXtuLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCl9Y2F0Y2goZSl7dD10LnJlcGxhY2UoeSxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4iWyIrdCtyKyciJytuKyciXSd9KTt0cnl7bi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpLHUoIkF0dHJpYnV0ZSBzZWxlY3RvciB3aXRoICcjJyBtdXN0IGJlIHF1b3RlZDogIityWzBdKSxyWzBdPXR9Y2F0Y2goZSl7dSgiQXR0cmlidXRlIHNlbGVjdG9yIHdpdGggJyMnIHdhcyBub3QgZml4ZWQ6ICIrclswXSl9fXJldHVybiBwLmFwcGx5KHRoaXMscil9LHApT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHAsaSkmJihzLmZpbmRbaV09cFtpXSk7byhzLmZuLCJzaXplIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sImpRdWVyeS5mbi5zaXplKCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDsgdXNlIHRoZSAubGVuZ3RoIHByb3BlcnR5IiksbyhzLCJwYXJzZUpTT04iLGZ1bmN0aW9uKCl7cmV0dXJuIEpTT04ucGFyc2UuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwialF1ZXJ5LnBhcnNlSlNPTiBpcyBkZXByZWNhdGVkOyB1c2UgSlNPTi5wYXJzZSIpLG8ocywiaG9sZFJlYWR5IixzLmhvbGRSZWFkeSwialF1ZXJ5LmhvbGRSZWFkeSBpcyBkZXByZWNhdGVkIiksbyhzLCJ1bmlxdWUiLHMudW5pcXVlU29ydCwialF1ZXJ5LnVuaXF1ZSBpcyBkZXByZWNhdGVkOyB1c2UgalF1ZXJ5LnVuaXF1ZVNvcnQiKSx0KHMuZXhwciwiZmlsdGVycyIscy5leHByLnBzZXVkb3MsImpRdWVyeS5leHByLmZpbHRlcnMgaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKSx0KHMuZXhwciwiOiIscy5leHByLnBzZXVkb3MsImpRdWVyeS5leHByWyc6J10gaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKSxlKCIzLjEuMSIpJiZvKHMsInRyaW0iLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKG0sIiIpfSwialF1ZXJ5LnRyaW0gaXMgZGVwcmVjYXRlZDsgdXNlIFN0cmluZy5wcm90b3R5cGUudHJpbSIpLGUoIjMuMi4wIikmJihvKHMsIm5vZGVOYW1lIixmdW5jdGlvbihlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9LCJqUXVlcnkubm9kZU5hbWUgaXMgZGVwcmVjYXRlZCIpLG8ocywiaXNBcnJheSIsQXJyYXkuaXNBcnJheSwialF1ZXJ5LmlzQXJyYXkgaXMgZGVwcmVjYXRlZDsgdXNlIEFycmF5LmlzQXJyYXkiKSksZSgiMy4zLjAiKSYmKG8ocywiaXNOdW1lcmljIixmdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4oIm51bWJlciI9PXR8fCJzdHJpbmciPT10KSYmIWlzTmFOKGUtcGFyc2VGbG9hdChlKSl9LCJqUXVlcnkuaXNOdW1lcmljKCkgaXMgZGVwcmVjYXRlZCIpLHMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtkWyJbb2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pLG8ocywidHlwZSIsZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/ZSsiIjoib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP2RbT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpXXx8Im9iamVjdCI6dHlwZW9mIGV9LCJqUXVlcnkudHlwZSBpcyBkZXByZWNhdGVkIiksbyhzLCJpc0Z1bmN0aW9uIixmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX0sImpRdWVyeS5pc0Z1bmN0aW9uKCkgaXMgZGVwcmVjYXRlZCIpLG8ocywiaXNXaW5kb3ciLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlPT09ZS53aW5kb3d9LCJqUXVlcnkuaXNXaW5kb3coKSBpcyBkZXByZWNhdGVkIikpLHMuYWpheCYmKGE9cy5hamF4LGM9Lyg9KVw/KD89JnwkKXxcP1w/LyxzLmFqYXg9ZnVuY3Rpb24oKXt2YXIgZT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZS5wcm9taXNlJiYobyhlLCJzdWNjZXNzIixlLmRvbmUsImpRWEhSLnN1Y2Nlc3MgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLG8oZSwiZXJyb3IiLGUuZmFpbCwialFYSFIuZXJyb3IgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLG8oZSwiY29tcGxldGUiLGUuYWx3YXlzLCJqUVhIUi5jb21wbGV0ZSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIikpLGV9LGUoIjQuMC4wIil8fHMuYWpheFByZWZpbHRlcigiK2pzb24iLGZ1bmN0aW9uKGUpeyExIT09ZS5qc29ucCYmKGMudGVzdChlLnVybCl8fCJzdHJpbmciPT10eXBlb2YgZS5kYXRhJiYwPT09KGUuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYy50ZXN0KGUuZGF0YSkpJiZ1KCJKU09OLXRvLUpTT05QIGF1dG8tcHJvbW90aW9uIGlzIGRlcHJlY2F0ZWQiKX0pKTt2YXIgZz1zLmZuLnJlbW92ZUF0dHIsaD1zLmZuLnRvZ2dsZUNsYXNzLHY9L1xTKy9nO2Z1bmN0aW9uIGooZSl7cmV0dXJuIGUucmVwbGFjZSgvLShbYS16XSkvZyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX1zLmZuLnJlbW92ZUF0dHI9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gcy5lYWNoKGUubWF0Y2godiksZnVuY3Rpb24oZSx0KXtzLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpJiYodSgialF1ZXJ5LmZuLnJlbW92ZUF0dHIgbm8gbG9uZ2VyIHNldHMgYm9vbGVhbiBwcm9wZXJ0aWVzOiAiK3QpLHIucHJvcCh0LCExKSl9KSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIFEsYj0hKHMuZm4udG9nZ2xlQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJiJib29sZWFuIiE9dHlwZW9mIHQ/aC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KHUoImpRdWVyeS5mbi50b2dnbGVDbGFzcyggYm9vbGVhbiApIGlzIGRlcHJlY2F0ZWQiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEF0dHJpYnV0ZSYmdGhpcy5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO2UmJnMuZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIiwhZSYmITEhPT10JiZzLmRhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIil9KSl9KSx3PS9eW2Etel0vLHg9L14oPzpCb3JkZXIoPzpUb3B8UmlnaHR8Qm90dG9tfExlZnQpPyg/OldpZHRofCl8KD86TWFyZ2lufFBhZGRpbmcpPyg/OlRvcHxSaWdodHxCb3R0b218TGVmdCk/fCg/Ok1pbnxNYXgpPyg/OldpZHRofEhlaWdodCkpJC87cy5zd2FwJiZzLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCIsInJlbGlhYmxlTWFyZ2luUmlnaHQiXSxmdW5jdGlvbihlLHQpe3ZhciByPXMuY3NzSG9va3NbdF0mJnMuY3NzSG9va3NbdF0uZ2V0O3ImJihzLmNzc0hvb2tzW3RdLmdldD1mdW5jdGlvbigpe3ZhciBlO3JldHVybiBiPSEwLGU9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYj0hMSxlfSl9KSxzLnN3YXA9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIG8saSxhPXt9O2ZvcihpIGluIGJ8fHUoImpRdWVyeS5zd2FwKCkgaXMgdW5kb2N1bWVudGVkIGFuZCBkZXByZWNhdGVkIiksdClhW2ldPWUuc3R5bGVbaV0sZS5zdHlsZVtpXT10W2ldO2ZvcihpIGluIG89ci5hcHBseShlLG58fFtdKSx0KWUuc3R5bGVbaV09YVtpXTtyZXR1cm4gb30sZSgiMy40LjAiKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm94eSYmKHMuY3NzUHJvcHM9bmV3IFByb3h5KHMuY3NzUHJvcHN8fHt9LHtzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdSgiSlFNSUdSQVRFOiBqUXVlcnkuY3NzUHJvcHMgaXMgZGVwcmVjYXRlZCIpLFJlZmxlY3Quc2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KSkscy5jc3NOdW1iZXJ8fChzLmNzc051bWJlcj17fSksUT1zLmZuLmNzcyxzLmZuLmNzcz1mdW5jdGlvbihlLHQpe3ZhciByLG4sbz10aGlzO3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpPyhzLmVhY2goZSxmdW5jdGlvbihlLHQpe3MuZm4uY3NzLmNhbGwobyxlLHQpfSksdGhpcyk6KCJudW1iZXIiPT10eXBlb2YgdCYmKHI9aihlKSxuPXIsdy50ZXN0KG4pJiZ4LnRlc3QoblswXS50b1VwcGVyQ2FzZSgpK24uc2xpY2UoMSkpfHxzLmNzc051bWJlcltyXXx8dSgnTnVtYmVyLXR5cGVkIHZhbHVlcyBhcmUgZGVwcmVjYXRlZCBmb3IgalF1ZXJ5LmZuLmNzcyggIicrZSsnIiwgdmFsdWUgKScpKSxRLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9O3ZhciBBLGssUyxNLE49cy5kYXRhO3MuZGF0YT1mdW5jdGlvbihlLHQscil7dmFyIG4sbyxpO2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCYmMj09PWFyZ3VtZW50cy5sZW5ndGgpe2ZvcihpIGluIG49cy5oYXNEYXRhKGUpJiZOLmNhbGwodGhpcyxlKSxvPXt9LHQpaSE9PWooaSk/KHUoImpRdWVyeS5kYXRhKCkgYWx3YXlzIHNldHMvZ2V0cyBjYW1lbENhc2VkIG5hbWVzOiAiK2kpLG5baV09dFtpXSk6b1tpXT10W2ldO3JldHVybiBOLmNhbGwodGhpcyxlLG8pLHR9cmV0dXJuIHQmJiJzdHJpbmciPT10eXBlb2YgdCYmdCE9PWoodCkmJihuPXMuaGFzRGF0YShlKSYmTi5jYWxsKHRoaXMsZSkpJiZ0IGluIG4/KHUoImpRdWVyeS5kYXRhKCkgYWx3YXlzIHNldHMvZ2V0cyBjYW1lbENhc2VkIG5hbWVzOiAiK3QpLDI8YXJndW1lbnRzLmxlbmd0aCYmKG5bdF09ciksblt0XSk6Ti5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHMuZngmJihTPXMuVHdlZW4ucHJvdG90eXBlLnJ1bixNPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxzLlR3ZWVuLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXsxPHMuZWFzaW5nW3RoaXMuZWFzaW5nXS5sZW5ndGgmJih1KCInalF1ZXJ5LmVhc2luZy4iK3RoaXMuZWFzaW5nLnRvU3RyaW5nKCkrIicgc2hvdWxkIHVzZSBvbmx5IG9uZSBhcmd1bWVudCIpLHMuZWFzaW5nW3RoaXMuZWFzaW5nXT1NKSxTLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sQT1zLmZ4LmludGVydmFsfHwxMyxrPSJqUXVlcnkuZnguaW50ZXJ2YWwgaXMgZGVwcmVjYXRlZCIsbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLmZ4LCJpbnRlcnZhbCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmRvY3VtZW50LmhpZGRlbnx8dShrKSxBfSxzZXQ6ZnVuY3Rpb24oZSl7dShrKSxBPWV9fSkpO3ZhciBSPXMuZm4ubG9hZCxIPXMuZXZlbnQuYWRkLEM9cy5ldmVudC5maXg7cy5ldmVudC5wcm9wcz1bXSxzLmV2ZW50LmZpeEhvb2tzPXt9LHQocy5ldmVudC5wcm9wcywiY29uY2F0IixzLmV2ZW50LnByb3BzLmNvbmNhdCwialF1ZXJ5LmV2ZW50LnByb3BzLmNvbmNhdCgpIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQiKSxzLmV2ZW50LmZpeD1mdW5jdGlvbihlKXt2YXIgdCxyPWUudHlwZSxuPXRoaXMuZml4SG9va3Nbcl0sbz1zLmV2ZW50LnByb3BzO2lmKG8ubGVuZ3RoKXt1KCJqUXVlcnkuZXZlbnQucHJvcHMgYXJlIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQ6ICIrby5qb2luKCkpO3doaWxlKG8ubGVuZ3RoKXMuZXZlbnQuYWRkUHJvcChvLnBvcCgpKX1pZihuJiYhbi5fbWlncmF0ZWRfJiYobi5fbWlncmF0ZWRfPSEwLHUoImpRdWVyeS5ldmVudC5maXhIb29rcyBhcmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDogIityKSwobz1uLnByb3BzKSYmby5sZW5ndGgpKXdoaWxlKG8ubGVuZ3RoKXMuZXZlbnQuYWRkUHJvcChvLnBvcCgpKTtyZXR1cm4gdD1DLmNhbGwodGhpcyxlKSxuJiZuLmZpbHRlcj9uLmZpbHRlcih0LGUpOnR9LHMuZXZlbnQuYWRkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT1uJiYibG9hZCI9PT10JiYiY29tcGxldGUiPT09bi5kb2N1bWVudC5yZWFkeVN0YXRlJiZ1KCJqUXVlcnkod2luZG93KS5vbignbG9hZCcuLi4pIGNhbGxlZCBhZnRlciBsb2FkIGV2ZW50IG9jY3VycmVkIiksSC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHMuZWFjaChbImxvYWQiLCJ1bmxvYWQiLCJlcnJvciJdLGZ1bmN0aW9uKGUsdCl7cy5mblt0XT1mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4ibG9hZCI9PT10JiYic3RyaW5nIj09dHlwZW9mIGVbMF0/Ui5hcHBseSh0aGlzLGUpOih1KCJqUXVlcnkuZm4uIit0KyIoKSBpcyBkZXByZWNhdGVkIiksZS5zcGxpY2UoMCwwLHQpLGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbi5hcHBseSh0aGlzLGUpOih0aGlzLnRyaWdnZXJIYW5kbGVyLmFwcGx5KHRoaXMsZSksdGhpcykpfX0pLHMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHIpe3MuZm5bcl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdSgialF1ZXJ5LmZuLiIrcisiKCkgZXZlbnQgc2hvcnRoYW5kIGlzIGRlcHJlY2F0ZWQiKSwwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihyLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIocil9fSkscyhmdW5jdGlvbigpe3Mobi5kb2N1bWVudCkudHJpZ2dlckhhbmRsZXIoInJlYWR5Iil9KSxzLmV2ZW50LnNwZWNpYWwucmVhZHk9e3NldHVwOmZ1bmN0aW9uKCl7dGhpcz09PW4uZG9jdW1lbnQmJnUoIidyZWFkeScgZXZlbnQgaXMgZGVwcmVjYXRlZCIpfX0scy5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB1KCJqUXVlcnkuZm4uYmluZCgpIGlzIGRlcHJlY2F0ZWQiKSx0aGlzLm9uKGUsbnVsbCx0LHIpfSx1bmJpbmQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdSgialF1ZXJ5LmZuLnVuYmluZCgpIGlzIGRlcHJlY2F0ZWQiKSx0aGlzLm9mZihlLG51bGwsdCl9LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB1KCJqUXVlcnkuZm4uZGVsZWdhdGUoKSBpcyBkZXByZWNhdGVkIiksdGhpcy5vbih0LGUscixuKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHUoImpRdWVyeS5mbi51bmRlbGVnYXRlKCkgaXMgZGVwcmVjYXRlZCIpLDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGUsIioqIik6dGhpcy5vZmYodCxlfHwiKioiLHIpfSxob3ZlcjpmdW5jdGlvbihlLHQpe3JldHVybiB1KCJqUXVlcnkuZm4uaG92ZXIoKSBpcyBkZXByZWNhdGVkIiksdGhpcy5vbigibW91c2VlbnRlciIsZSkub24oIm1vdXNlbGVhdmUiLHR8fGUpfX0pO2Z1bmN0aW9uIFQoZSl7dmFyIHQ9bi5kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpO3JldHVybiB0LmJvZHkuaW5uZXJIVE1MPWUsdC5ib2R5JiZ0LmJvZHkuaW5uZXJIVE1MfWZ1bmN0aW9uIFAoZSl7dmFyIHQ9ZS5yZXBsYWNlKE8sIjwkMT48LyQyPiIpO3QhPT1lJiZUKGUpIT09VCh0KSYmdSgiSFRNTCB0YWdzIG11c3QgYmUgcHJvcGVybHkgbmVzdGVkIGFuZCBjbG9zZWQ6ICIrZSl9dmFyIE89LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopW14+XSopXC8+L2dpLHE9cy5odG1sUHJlZmlsdGVyO3MuVU5TQUZFX3Jlc3RvcmVMZWdhY3lIdG1sUHJlZmlsdGVyPWZ1bmN0aW9uKCl7cy5odG1sUHJlZmlsdGVyPWZ1bmN0aW9uKGUpe3JldHVybiBQKGUpLGUucmVwbGFjZShPLCI8JDE+PC8kMj4iKX19LHMuaHRtbFByZWZpbHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gUChlKSxxKGUpfTt2YXIgRCxfPXMuZm4ub2Zmc2V0O3MuZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpc1swXTtyZXR1cm4hZXx8ZS5ub2RlVHlwZSYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q/Xy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KHUoImpRdWVyeS5mbi5vZmZzZXQoKSByZXF1aXJlcyBhIHZhbGlkIERPTSBlbGVtZW50IiksYXJndW1lbnRzLmxlbmd0aD90aGlzOnZvaWQgMCl9LHMuYWpheCYmKEQ9cy5wYXJhbSxzLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIHI9cy5hamF4U2V0dGluZ3MmJnMuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsO3JldHVybiB2b2lkIDA9PT10JiZyJiYodSgialF1ZXJ5LnBhcmFtKCkgbm8gbG9uZ2VyIHVzZXMgalF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCIpLHQ9ciksRC5jYWxsKHRoaXMsZSx0KX0pO3ZhciBFLEYsSj1zLmZuLmFuZFNlbGZ8fHMuZm4uYWRkQmFjaztyZXR1cm4gcy5mbi5hbmRTZWxmPWZ1bmN0aW9uKCl7cmV0dXJuIHUoImpRdWVyeS5mbi5hbmRTZWxmKCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCwgdXNlIGpRdWVyeS5mbi5hZGRCYWNrKCkiKSxKLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0scy5EZWZlcnJlZCYmKEU9cy5EZWZlcnJlZCxGPVtbInJlc29sdmUiLCJkb25lIixzLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxzLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLHMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3RlZCJdLFsibm90aWZ5IiwicHJvZ3Jlc3MiLHMuQ2FsbGJhY2tzKCJtZW1vcnkiKSxzLkNhbGxiYWNrcygibWVtb3J5IildXSxzLkRlZmVycmVkPWZ1bmN0aW9uKGUpe3ZhciBpPUUoKSxhPWkucHJvbWlzZSgpO3JldHVybiBpLnBpcGU9YS5waXBlPWZ1bmN0aW9uKCl7dmFyIG89YXJndW1lbnRzO3JldHVybiB1KCJkZWZlcnJlZC5waXBlKCkgaXMgZGVwcmVjYXRlZCIpLHMuRGVmZXJyZWQoZnVuY3Rpb24obil7cy5lYWNoKEYsZnVuY3Rpb24oZSx0KXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2Ygb1tlXSYmb1tlXTtpW3RbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9ciYmci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvbWlzZT9lLnByb21pc2UoKS5kb25lKG4ucmVzb2x2ZSkuZmFpbChuLnJlamVjdCkucHJvZ3Jlc3Mobi5ub3RpZnkpOm5bdFswXSsiV2l0aCJdKHRoaXM9PT1hP24ucHJvbWlzZSgpOnRoaXMscj9bZV06YXJndW1lbnRzKX0pfSksbz1udWxsfSkucHJvbWlzZSgpfSxlJiZlLmNhbGwoaSxpKSxpfSxzLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9RS5leGNlcHRpb25Ib29rKSxzfSk7Cg=="}},"time_used":57,"timings":{"blocked":-1,"dns":0,"connect":8,"send":0,"wait":17,"receive":0,"ssl":28},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver=5.0.10","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.326Z","timestamp":1785145482326,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver=5.0.10 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\r\nSec-Fetch-Dest: script\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 22429\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":22429,"size_decoded":22646,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"367bd7a1a69c01509da43a50349e8788","sha1":"18e7ac3fbf31ff1f4cee6f5811844090404f04a6","sha256":"cb734b189032cb314fc8d3d34c1314d64c7a7698acfcba00e52050fdae9adb93","sha512":"c5190f86721797f0adc75f0e7147b1f685b954ad79f1535487f75a54272d8bbc51f17ac22548cfd378e92a02c19ffcda2409d8bc80a3af1aa4ccd9231bb00fb0","ssdeep":"192:bP6z6AN8i4/5VTcJ7QlnV8fPj0Al/+vLxoUi1hoFWYWlZyVL9J79hFmDzULK+Qo5:OZexqpQlVEjjN+viUhu0LKymvv64e","tlshash":"8ea2963ef5104da300815b19646419c57f4ac103bfaeb42a79bc6f9a2f8e42d93bd63d","first_seen":"2023-07-01T15:13:09Z","last_seen":"2026-07-27T10:21:19.624341Z","times_seen":28,"resource_available":true,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMSBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KdmFyIGwsIGE7CmwgPSB0aGlzLCBhID0gZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgbCA9IHt9LAogICAgICAgIGEgPSB7fTsKICAgIHRyeSB7CiAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiAobCA9IHdpbmRvdyksICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCAmJiAoYSA9IGRvY3VtZW50KQogICAgfSBjYXRjaCAobCkge30KICAgIHZhciBlID0gKGwubmF2aWdhdG9yIHx8IHt9KS51c2VyQWdlbnQsCiAgICAgICAgciA9IHZvaWQgMCA9PT0gZSA/ICIiIDogZSwKICAgICAgICBuID0gbCwKICAgICAgICBvID0gYSwKICAgICAgICB1ID0gKG4uZG9jdW1lbnQsICEhby5kb2N1bWVudEVsZW1lbnQgJiYgISFvLmhlYWQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygby5hZGRFdmVudExpc3RlbmVyICYmIG8uY3JlYXRlRWxlbWVudCwgfnIuaW5kZXhPZigiTVNJRSIpIHx8IHIuaW5kZXhPZigiVHJpZGVudC8iKSwgIl9fX0ZPTlRfQVdFU09NRV9fXyIpLAogICAgICAgIHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiAicHJvZHVjdGlvbiIgPT09IHByb2Nlc3MuZW52Lk5PREVfRU5WCiAgICAgICAgICAgIH0gY2F0Y2ggKGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSgpOwogICAgdmFyIGYgPSBuIHx8IHt9OwogICAgZlt1XSB8fCAoZlt1XSA9IHt9KSwgZlt1XS5zdHlsZXMgfHwgKGZbdV0uc3R5bGVzID0ge30pLCBmW3VdLmhvb2tzIHx8IChmW3VdLmhvb2tzID0ge30pLCBmW3VdLnNoaW1zIHx8IChmW3VdLnNoaW1zID0gW10pOwogICAgdmFyIGkgPSBmW3VdLAogICAgICAgIHMgPSBbCiAgICAgICAgICAgIFsiZ2xhc3MiLCBudWxsLCAiZ2xhc3MtbWFydGluaSJdLAogICAgICAgICAgICBbIm1lZXR1cCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzdGFyLW8iLCAiZmFyIiwgInN0YXIiXSwKICAgICAgICAgICAgWyJyZW1vdmUiLCBudWxsLCAidGltZXMiXSwKICAgICAgICAgICAgWyJjbG9zZSIsIG51bGwsICJ0aW1lcyJdLAogICAgICAgICAgICBbImdlYXIiLCBudWxsLCAiY29nIl0sCiAgICAgICAgICAgIFsidHJhc2gtbyIsICJmYXIiLCAidHJhc2gtYWx0Il0sCiAgICAgICAgICAgIFsiZmlsZS1vIiwgImZhciIsICJmaWxlIl0sCiAgICAgICAgICAgIFsiY2xvY2stbyIsICJmYXIiLCAiY2xvY2siXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby1kb3duIiwgImZhciIsICJhcnJvdy1hbHQtY2lyY2xlLWRvd24iXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby11cCIsICJmYXIiLCAiYXJyb3ctYWx0LWNpcmNsZS11cCJdLAogICAgICAgICAgICBbInBsYXktY2lyY2xlLW8iLCAiZmFyIiwgInBsYXktY2lyY2xlIl0sCiAgICAgICAgICAgIFsicmVwZWF0IiwgbnVsbCwgInJlZG8iXSwKICAgICAgICAgICAgWyJyb3RhdGUtcmlnaHQiLCBudWxsLCAicmVkbyJdLAogICAgICAgICAgICBbInJlZnJlc2giLCBudWxsLCAic3luYyJdLAogICAgICAgICAgICBbImxpc3QtYWx0IiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImRlZGVudCIsIG51bGwsICJvdXRkZW50Il0sCiAgICAgICAgICAgIFsidmlkZW8tY2FtZXJhIiwgbnVsbCwgInZpZGVvIl0sCiAgICAgICAgICAgIFsicGljdHVyZS1vIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbInBob3RvIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbImltYWdlIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbInBlbmNpbCIsIG51bGwsICJwZW5jaWwtYWx0Il0sCiAgICAgICAgICAgIFsibWFwLW1hcmtlciIsIG51bGwsICJtYXAtbWFya2VyLWFsdCJdLAogICAgICAgICAgICBbInBlbmNpbC1zcXVhcmUtbyIsICJmYXIiLCAiZWRpdCJdLAogICAgICAgICAgICBbInNoYXJlLXNxdWFyZS1vIiwgImZhciIsICJzaGFyZS1zcXVhcmUiXSwKICAgICAgICAgICAgWyJjaGVjay1zcXVhcmUtbyIsICJmYXIiLCAiY2hlY2stc3F1YXJlIl0sCiAgICAgICAgICAgIFsiYXJyb3dzIiwgbnVsbCwgImFycm93cy1hbHQiXSwKICAgICAgICAgICAgWyJ0aW1lcy1jaXJjbGUtbyIsICJmYXIiLCAidGltZXMtY2lyY2xlIl0sCiAgICAgICAgICAgIFsiY2hlY2stY2lyY2xlLW8iLCAiZmFyIiwgImNoZWNrLWNpcmNsZSJdLAogICAgICAgICAgICBbIm1haWwtZm9yd2FyZCIsIG51bGwsICJzaGFyZSJdLAogICAgICAgICAgICBbImV4cGFuZCIsIG51bGwsICJleHBhbmQtYWx0Il0sCiAgICAgICAgICAgIFsiY29tcHJlc3MiLCBudWxsLCAiY29tcHJlc3MtYWx0Il0sCiAgICAgICAgICAgIFsiZXllIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImV5ZS1zbGFzaCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3YXJuaW5nIiwgbnVsbCwgImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIl0sCiAgICAgICAgICAgIFsiY2FsZW5kYXIiLCBudWxsLCAiY2FsZW5kYXItYWx0Il0sCiAgICAgICAgICAgIFsiYXJyb3dzLXYiLCBudWxsLCAiYXJyb3dzLWFsdC12Il0sCiAgICAgICAgICAgIFsiYXJyb3dzLWgiLCBudWxsLCAiYXJyb3dzLWFsdC1oIl0sCiAgICAgICAgICAgIFsiYmFyLWNoYXJ0IiwgImZhciIsICJjaGFydC1iYXIiXSwKICAgICAgICAgICAgWyJiYXItY2hhcnQtbyIsICJmYXIiLCAiY2hhcnQtYmFyIl0sCiAgICAgICAgICAgIFsidHdpdHRlci1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZmFjZWJvb2stc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdlYXJzIiwgbnVsbCwgImNvZ3MiXSwKICAgICAgICAgICAgWyJ0aHVtYnMtby11cCIsICJmYXIiLCAidGh1bWJzLXVwIl0sCiAgICAgICAgICAgIFsidGh1bWJzLW8tZG93biIsICJmYXIiLCAidGh1bWJzLWRvd24iXSwKICAgICAgICAgICAgWyJoZWFydC1vIiwgImZhciIsICJoZWFydCJdLAogICAgICAgICAgICBbInNpZ24tb3V0IiwgbnVsbCwgInNpZ24tb3V0LWFsdCJdLAogICAgICAgICAgICBbImxpbmtlZGluLXNxdWFyZSIsICJmYWIiLCAibGlua2VkaW4iXSwKICAgICAgICAgICAgWyJ0aHVtYi10YWNrIiwgbnVsbCwgInRodW1idGFjayJdLAogICAgICAgICAgICBbImV4dGVybmFsLWxpbmsiLCBudWxsLCAiZXh0ZXJuYWwtbGluay1hbHQiXSwKICAgICAgICAgICAgWyJzaWduLWluIiwgbnVsbCwgInNpZ24taW4tYWx0Il0sCiAgICAgICAgICAgIFsiZ2l0aHViLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsZW1vbi1vIiwgImZhciIsICJsZW1vbiJdLAogICAgICAgICAgICBbInNxdWFyZS1vIiwgImZhciIsICJzcXVhcmUiXSwKICAgICAgICAgICAgWyJib29rbWFyay1vIiwgImZhciIsICJib29rbWFyayJdLAogICAgICAgICAgICBbInR3aXR0ZXIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZmFjZWJvb2siLCAiZmFiIiwgImZhY2Vib29rLWYiXSwKICAgICAgICAgICAgWyJmYWNlYm9vay1mIiwgImZhYiIsICJmYWNlYm9vay1mIl0sCiAgICAgICAgICAgIFsiZ2l0aHViIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNyZWRpdC1jYXJkIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImZlZWQiLCBudWxsLCAicnNzIl0sCiAgICAgICAgICAgIFsiaGRkLW8iLCAiZmFyIiwgImhkZCJdLAogICAgICAgICAgICBbImhhbmQtby1yaWdodCIsICJmYXIiLCAiaGFuZC1wb2ludC1yaWdodCJdLAogICAgICAgICAgICBbImhhbmQtby1sZWZ0IiwgImZhciIsICJoYW5kLXBvaW50LWxlZnQiXSwKICAgICAgICAgICAgWyJoYW5kLW8tdXAiLCAiZmFyIiwgImhhbmQtcG9pbnQtdXAiXSwKICAgICAgICAgICAgWyJoYW5kLW8tZG93biIsICJmYXIiLCAiaGFuZC1wb2ludC1kb3duIl0sCiAgICAgICAgICAgIFsiYXJyb3dzLWFsdCIsIG51bGwsICJleHBhbmQtYXJyb3dzLWFsdCJdLAogICAgICAgICAgICBbImdyb3VwIiwgbnVsbCwgInVzZXJzIl0sCiAgICAgICAgICAgIFsiY2hhaW4iLCBudWxsLCAibGluayJdLAogICAgICAgICAgICBbInNjaXNzb3JzIiwgbnVsbCwgImN1dCJdLAogICAgICAgICAgICBbImZpbGVzLW8iLCAiZmFyIiwgImNvcHkiXSwKICAgICAgICAgICAgWyJmbG9wcHktbyIsICJmYXIiLCAic2F2ZSJdLAogICAgICAgICAgICBbIm5hdmljb24iLCBudWxsLCAiYmFycyJdLAogICAgICAgICAgICBbInJlb3JkZXIiLCBudWxsLCAiYmFycyJdLAogICAgICAgICAgICBbInBpbnRlcmVzdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaW50ZXJlc3Qtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdvb2dsZS1wbHVzLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cyIsICJmYWIiLCAiZ29vZ2xlLXBsdXMtZyJdLAogICAgICAgICAgICBbIm1vbmV5IiwgImZhciIsICJtb25leS1iaWxsLWFsdCJdLAogICAgICAgICAgICBbInVuc29ydGVkIiwgbnVsbCwgInNvcnQiXSwKICAgICAgICAgICAgWyJzb3J0LWRlc2MiLCBudWxsLCAic29ydC1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1hc2MiLCBudWxsLCAic29ydC11cCJdLAogICAgICAgICAgICBbImxpbmtlZGluIiwgImZhYiIsICJsaW5rZWRpbi1pbiJdLAogICAgICAgICAgICBbInJvdGF0ZS1sZWZ0IiwgbnVsbCwgInVuZG8iXSwKICAgICAgICAgICAgWyJsZWdhbCIsIG51bGwsICJnYXZlbCJdLAogICAgICAgICAgICBbInRhY2hvbWV0ZXIiLCBudWxsLCAidGFjaG9tZXRlci1hbHQiXSwKICAgICAgICAgICAgWyJkYXNoYm9hcmQiLCBudWxsLCAidGFjaG9tZXRlci1hbHQiXSwKICAgICAgICAgICAgWyJjb21tZW50LW8iLCAiZmFyIiwgImNvbW1lbnQiXSwKICAgICAgICAgICAgWyJjb21tZW50cy1vIiwgImZhciIsICJjb21tZW50cyJdLAogICAgICAgICAgICBbImZsYXNoIiwgbnVsbCwgImJvbHQiXSwKICAgICAgICAgICAgWyJjbGlwYm9hcmQiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsicGFzdGUiLCAiZmFyIiwgImNsaXBib2FyZCJdLAogICAgICAgICAgICBbImxpZ2h0YnVsYi1vIiwgImZhciIsICJsaWdodGJ1bGIiXSwKICAgICAgICAgICAgWyJleGNoYW5nZSIsIG51bGwsICJleGNoYW5nZS1hbHQiXSwKICAgICAgICAgICAgWyJjbG91ZC1kb3dubG9hZCIsIG51bGwsICJjbG91ZC1kb3dubG9hZC1hbHQiXSwKICAgICAgICAgICAgWyJjbG91ZC11cGxvYWQiLCBudWxsLCAiY2xvdWQtdXBsb2FkLWFsdCJdLAogICAgICAgICAgICBbImJlbGwtbyIsICJmYXIiLCAiYmVsbCJdLAogICAgICAgICAgICBbImN1dGxlcnkiLCBudWxsLCAidXRlbnNpbHMiXSwKICAgICAgICAgICAgWyJmaWxlLXRleHQtbyIsICJmYXIiLCAiZmlsZS1hbHQiXSwKICAgICAgICAgICAgWyJidWlsZGluZy1vIiwgImZhciIsICJidWlsZGluZyJdLAogICAgICAgICAgICBbImhvc3BpdGFsLW8iLCAiZmFyIiwgImhvc3BpdGFsIl0sCiAgICAgICAgICAgIFsidGFibGV0IiwgbnVsbCwgInRhYmxldC1hbHQiXSwKICAgICAgICAgICAgWyJtb2JpbGUiLCBudWxsLCAibW9iaWxlLWFsdCJdLAogICAgICAgICAgICBbIm1vYmlsZS1waG9uZSIsIG51bGwsICJtb2JpbGUtYWx0Il0sCiAgICAgICAgICAgIFsiY2lyY2xlLW8iLCAiZmFyIiwgImNpcmNsZSJdLAogICAgICAgICAgICBbIm1haWwtcmVwbHkiLCBudWxsLCAicmVwbHkiXSwKICAgICAgICAgICAgWyJnaXRodWItYWx0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZvbGRlci1vIiwgImZhciIsICJmb2xkZXIiXSwKICAgICAgICAgICAgWyJmb2xkZXItb3Blbi1vIiwgImZhciIsICJmb2xkZXItb3BlbiJdLAogICAgICAgICAgICBbInNtaWxlLW8iLCAiZmFyIiwgInNtaWxlIl0sCiAgICAgICAgICAgIFsiZnJvd24tbyIsICJmYXIiLCAiZnJvd24iXSwKICAgICAgICAgICAgWyJtZWgtbyIsICJmYXIiLCAibWVoIl0sCiAgICAgICAgICAgIFsia2V5Ym9hcmQtbyIsICJmYXIiLCAia2V5Ym9hcmQiXSwKICAgICAgICAgICAgWyJmbGFnLW8iLCAiZmFyIiwgImZsYWciXSwKICAgICAgICAgICAgWyJtYWlsLXJlcGx5LWFsbCIsIG51bGwsICJyZXBseS1hbGwiXSwKICAgICAgICAgICAgWyJzdGFyLWhhbGYtbyIsICJmYXIiLCAic3Rhci1oYWxmIl0sCiAgICAgICAgICAgIFsic3Rhci1oYWxmLWVtcHR5IiwgImZhciIsICJzdGFyLWhhbGYiXSwKICAgICAgICAgICAgWyJzdGFyLWhhbGYtZnVsbCIsICJmYXIiLCAic3Rhci1oYWxmIl0sCiAgICAgICAgICAgIFsiY29kZS1mb3JrIiwgbnVsbCwgImNvZGUtYnJhbmNoIl0sCiAgICAgICAgICAgIFsiY2hhaW4tYnJva2VuIiwgbnVsbCwgInVubGluayJdLAogICAgICAgICAgICBbInNoaWVsZCIsIG51bGwsICJzaGllbGQtYWx0Il0sCiAgICAgICAgICAgIFsiY2FsZW5kYXItbyIsICJmYXIiLCAiY2FsZW5kYXIiXSwKICAgICAgICAgICAgWyJtYXhjZG4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiaHRtbDUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY3NzMyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0aWNrZXQiLCBudWxsLCAidGlja2V0LWFsdCJdLAogICAgICAgICAgICBbIm1pbnVzLXNxdWFyZS1vIiwgImZhciIsICJtaW51cy1zcXVhcmUiXSwKICAgICAgICAgICAgWyJsZXZlbC11cCIsIG51bGwsICJsZXZlbC11cC1hbHQiXSwKICAgICAgICAgICAgWyJsZXZlbC1kb3duIiwgbnVsbCwgImxldmVsLWRvd24tYWx0Il0sCiAgICAgICAgICAgIFsicGVuY2lsLXNxdWFyZSIsIG51bGwsICJwZW4tc3F1YXJlIl0sCiAgICAgICAgICAgIFsiZXh0ZXJuYWwtbGluay1zcXVhcmUiLCBudWxsLCAiZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0Il0sCiAgICAgICAgICAgIFsiY29tcGFzcyIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYXJldC1zcXVhcmUtby1kb3duIiwgImZhciIsICJjYXJldC1zcXVhcmUtZG93biJdLAogICAgICAgICAgICBbInRvZ2dsZS1kb3duIiwgImZhciIsICJjYXJldC1zcXVhcmUtZG93biJdLAogICAgICAgICAgICBbImNhcmV0LXNxdWFyZS1vLXVwIiwgImZhciIsICJjYXJldC1zcXVhcmUtdXAiXSwKICAgICAgICAgICAgWyJ0b2dnbGUtdXAiLCAiZmFyIiwgImNhcmV0LXNxdWFyZS11cCJdLAogICAgICAgICAgICBbImNhcmV0LXNxdWFyZS1vLXJpZ2h0IiwgImZhciIsICJjYXJldC1zcXVhcmUtcmlnaHQiXSwKICAgICAgICAgICAgWyJ0b2dnbGUtcmlnaHQiLCAiZmFyIiwgImNhcmV0LXNxdWFyZS1yaWdodCJdLAogICAgICAgICAgICBbImV1ciIsIG51bGwsICJldXJvLXNpZ24iXSwKICAgICAgICAgICAgWyJldXJvIiwgbnVsbCwgImV1cm8tc2lnbiJdLAogICAgICAgICAgICBbImdicCIsIG51bGwsICJwb3VuZC1zaWduIl0sCiAgICAgICAgICAgIFsidXNkIiwgbnVsbCwgImRvbGxhci1zaWduIl0sCiAgICAgICAgICAgIFsiZG9sbGFyIiwgbnVsbCwgImRvbGxhci1zaWduIl0sCiAgICAgICAgICAgIFsiaW5yIiwgbnVsbCwgInJ1cGVlLXNpZ24iXSwKICAgICAgICAgICAgWyJydXBlZSIsIG51bGwsICJydXBlZS1zaWduIl0sCiAgICAgICAgICAgIFsianB5IiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsiY255IiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsicm1iIiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsieWVuIiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsicnViIiwgbnVsbCwgInJ1YmxlLXNpZ24iXSwKICAgICAgICAgICAgWyJydWJsZSIsIG51bGwsICJydWJsZS1zaWduIl0sCiAgICAgICAgICAgIFsicm91YmxlIiwgbnVsbCwgInJ1YmxlLXNpZ24iXSwKICAgICAgICAgICAgWyJrcnciLCBudWxsLCAid29uLXNpZ24iXSwKICAgICAgICAgICAgWyJ3b24iLCBudWxsLCAid29uLXNpZ24iXSwKICAgICAgICAgICAgWyJidGMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYml0Y29pbiIsICJmYWIiLCAiYnRjIl0sCiAgICAgICAgICAgIFsiZmlsZS10ZXh0IiwgbnVsbCwgImZpbGUtYWx0Il0sCiAgICAgICAgICAgIFsic29ydC1hbHBoYS1hc2MiLCBudWxsLCAic29ydC1hbHBoYS1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1hbHBoYS1kZXNjIiwgbnVsbCwgInNvcnQtYWxwaGEtZG93bi1hbHQiXSwKICAgICAgICAgICAgWyJzb3J0LWFtb3VudC1hc2MiLCBudWxsLCAic29ydC1hbW91bnQtZG93biJdLAogICAgICAgICAgICBbInNvcnQtYW1vdW50LWRlc2MiLCBudWxsLCAic29ydC1hbW91bnQtZG93bi1hbHQiXSwKICAgICAgICAgICAgWyJzb3J0LW51bWVyaWMtYXNjIiwgbnVsbCwgInNvcnQtbnVtZXJpYy1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1udW1lcmljLWRlc2MiLCBudWxsLCAic29ydC1udW1lcmljLWRvd24tYWx0Il0sCiAgICAgICAgICAgIFsieW91dHViZS1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsieW91dHViZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ4aW5nIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInhpbmctc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInlvdXR1YmUtcGxheSIsICJmYWIiLCAieW91dHViZSJdLAogICAgICAgICAgICBbImRyb3Bib3giLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RhY2stb3ZlcmZsb3ciLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiaW5zdGFncmFtIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZsaWNrciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJhZG4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYml0YnVja2V0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImJpdGJ1Y2tldC1zcXVhcmUiLCAiZmFiIiwgImJpdGJ1Y2tldCJdLAogICAgICAgICAgICBbInR1bWJsciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0dW1ibHItc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImxvbmctYXJyb3ctZG93biIsIG51bGwsICJsb25nLWFycm93LWFsdC1kb3duIl0sCiAgICAgICAgICAgIFsibG9uZy1hcnJvdy11cCIsIG51bGwsICJsb25nLWFycm93LWFsdC11cCJdLAogICAgICAgICAgICBbImxvbmctYXJyb3ctbGVmdCIsIG51bGwsICJsb25nLWFycm93LWFsdC1sZWZ0Il0sCiAgICAgICAgICAgIFsibG9uZy1hcnJvdy1yaWdodCIsIG51bGwsICJsb25nLWFycm93LWFsdC1yaWdodCJdLAogICAgICAgICAgICBbImFwcGxlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndpbmRvd3MiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW5kcm9pZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsaW51eCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkcmliYmJsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJza3lwZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmb3Vyc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRyZWxsbyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJncmF0aXBheSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnaXR0aXAiLCAiZmFiIiwgImdyYXRpcGF5Il0sCiAgICAgICAgICAgIFsic3VuLW8iLCAiZmFyIiwgInN1biJdLAogICAgICAgICAgICBbIm1vb24tbyIsICJmYXIiLCAibW9vbiJdLAogICAgICAgICAgICBbInZrIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndlaWJvIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlbnJlbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwYWdlbGluZXMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RhY2stZXhjaGFuZ2UiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYXJyb3ctY2lyY2xlLW8tcmlnaHQiLCAiZmFyIiwgImFycm93LWFsdC1jaXJjbGUtcmlnaHQiXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby1sZWZ0IiwgImZhciIsICJhcnJvdy1hbHQtY2lyY2xlLWxlZnQiXSwKICAgICAgICAgICAgWyJjYXJldC1zcXVhcmUtby1sZWZ0IiwgImZhciIsICJjYXJldC1zcXVhcmUtbGVmdCJdLAogICAgICAgICAgICBbInRvZ2dsZS1sZWZ0IiwgImZhciIsICJjYXJldC1zcXVhcmUtbGVmdCJdLAogICAgICAgICAgICBbImRvdC1jaXJjbGUtbyIsICJmYXIiLCAiZG90LWNpcmNsZSJdLAogICAgICAgICAgICBbInZpbWVvLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0cnkiLCBudWxsLCAibGlyYS1zaWduIl0sCiAgICAgICAgICAgIFsidHVya2lzaC1saXJhIiwgbnVsbCwgImxpcmEtc2lnbiJdLAogICAgICAgICAgICBbInBsdXMtc3F1YXJlLW8iLCAiZmFyIiwgInBsdXMtc3F1YXJlIl0sCiAgICAgICAgICAgIFsic2xhY2siLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid29yZHByZXNzIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9wZW5pZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJpbnN0aXR1dGlvbiIsIG51bGwsICJ1bml2ZXJzaXR5Il0sCiAgICAgICAgICAgIFsiYmFuayIsIG51bGwsICJ1bml2ZXJzaXR5Il0sCiAgICAgICAgICAgIFsibW9ydGFyLWJvYXJkIiwgbnVsbCwgImdyYWR1YXRpb24tY2FwIl0sCiAgICAgICAgICAgIFsieWFob28iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ29vZ2xlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlZGRpdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJyZWRkaXQtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInN0dW1ibGV1cG9uLWNpcmNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzdHVtYmxldXBvbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkZWxpY2lvdXMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZGlnZyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaWVkLXBpcGVyLXBwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInBpZWQtcGlwZXItYWx0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRydXBhbCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJqb29tbGEiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3Bvb24iLCBudWxsLCAidXRlbnNpbC1zcG9vbiJdLAogICAgICAgICAgICBbImJlaGFuY2UiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYmVoYW5jZS1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RlYW0iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RlYW0tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImF1dG9tb2JpbGUiLCBudWxsLCAiY2FyIl0sCiAgICAgICAgICAgIFsiZW52ZWxvcGUtbyIsICJmYXIiLCAiZW52ZWxvcGUiXSwKICAgICAgICAgICAgWyJzcG90aWZ5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRldmlhbnRhcnQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic291bmRjbG91ZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmaWxlLXBkZi1vIiwgImZhciIsICJmaWxlLXBkZiJdLAogICAgICAgICAgICBbImZpbGUtd29yZC1vIiwgImZhciIsICJmaWxlLXdvcmQiXSwKICAgICAgICAgICAgWyJmaWxlLWV4Y2VsLW8iLCAiZmFyIiwgImZpbGUtZXhjZWwiXSwKICAgICAgICAgICAgWyJmaWxlLXBvd2VycG9pbnQtbyIsICJmYXIiLCAiZmlsZS1wb3dlcnBvaW50Il0sCiAgICAgICAgICAgIFsiZmlsZS1pbWFnZS1vIiwgImZhciIsICJmaWxlLWltYWdlIl0sCiAgICAgICAgICAgIFsiZmlsZS1waG90by1vIiwgImZhciIsICJmaWxlLWltYWdlIl0sCiAgICAgICAgICAgIFsiZmlsZS1waWN0dXJlLW8iLCAiZmFyIiwgImZpbGUtaW1hZ2UiXSwKICAgICAgICAgICAgWyJmaWxlLWFyY2hpdmUtbyIsICJmYXIiLCAiZmlsZS1hcmNoaXZlIl0sCiAgICAgICAgICAgIFsiZmlsZS16aXAtbyIsICJmYXIiLCAiZmlsZS1hcmNoaXZlIl0sCiAgICAgICAgICAgIFsiZmlsZS1hdWRpby1vIiwgImZhciIsICJmaWxlLWF1ZGlvIl0sCiAgICAgICAgICAgIFsiZmlsZS1zb3VuZC1vIiwgImZhciIsICJmaWxlLWF1ZGlvIl0sCiAgICAgICAgICAgIFsiZmlsZS12aWRlby1vIiwgImZhciIsICJmaWxlLXZpZGVvIl0sCiAgICAgICAgICAgIFsiZmlsZS1tb3ZpZS1vIiwgImZhciIsICJmaWxlLXZpZGVvIl0sCiAgICAgICAgICAgIFsiZmlsZS1jb2RlLW8iLCAiZmFyIiwgImZpbGUtY29kZSJdLAogICAgICAgICAgICBbInZpbmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY29kZXBlbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJqc2ZpZGRsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsaWZlLXJpbmciLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsibGlmZS1ib3V5IiwgImZhciIsICJsaWZlLXJpbmciXSwKICAgICAgICAgICAgWyJsaWZlLWJ1b3kiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbImxpZmUtc2F2ZXIiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbInN1cHBvcnQiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbImNpcmNsZS1vLW5vdGNoIiwgbnVsbCwgImNpcmNsZS1ub3RjaCJdLAogICAgICAgICAgICBbInJlYmVsIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJhIiwgImZhYiIsICJyZWJlbCJdLAogICAgICAgICAgICBbInJlc2lzdGFuY2UiLCAiZmFiIiwgInJlYmVsIl0sCiAgICAgICAgICAgIFsiZW1waXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdlIiwgImZhYiIsICJlbXBpcmUiXSwKICAgICAgICAgICAgWyJnaXQtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdpdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJoYWNrZXItbmV3cyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5LWNvbWJpbmF0b3Itc3F1YXJlIiwgImZhYiIsICJoYWNrZXItbmV3cyJdLAogICAgICAgICAgICBbInljLXNxdWFyZSIsICJmYWIiLCAiaGFja2VyLW5ld3MiXSwKICAgICAgICAgICAgWyJ0ZW5jZW50LXdlaWJvIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInFxIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndlaXhpbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3ZWNoYXQiLCAiZmFiIiwgIndlaXhpbiJdLAogICAgICAgICAgICBbInNlbmQiLCBudWxsLCAicGFwZXItcGxhbmUiXSwKICAgICAgICAgICAgWyJwYXBlci1wbGFuZS1vIiwgImZhciIsICJwYXBlci1wbGFuZSJdLAogICAgICAgICAgICBbInNlbmQtbyIsICJmYXIiLCAicGFwZXItcGxhbmUiXSwKICAgICAgICAgICAgWyJjaXJjbGUtdGhpbiIsICJmYXIiLCAiY2lyY2xlIl0sCiAgICAgICAgICAgIFsiaGVhZGVyIiwgbnVsbCwgImhlYWRpbmciXSwKICAgICAgICAgICAgWyJzbGlkZXJzIiwgbnVsbCwgInNsaWRlcnMtaCJdLAogICAgICAgICAgICBbImZ1dGJvbC1vIiwgImZhciIsICJmdXRib2wiXSwKICAgICAgICAgICAgWyJzb2NjZXItYmFsbC1vIiwgImZhciIsICJmdXRib2wiXSwKICAgICAgICAgICAgWyJzbGlkZXNoYXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInR3aXRjaCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5ZWxwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm5ld3NwYXBlci1vIiwgImZhciIsICJuZXdzcGFwZXIiXSwKICAgICAgICAgICAgWyJwYXlwYWwiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ29vZ2xlLXdhbGxldCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYy12aXNhIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjLW1hc3RlcmNhcmQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2MtZGlzY292ZXIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2MtYW1leCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYy1wYXlwYWwiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2Mtc3RyaXBlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImJlbGwtc2xhc2gtbyIsICJmYXIiLCAiYmVsbC1zbGFzaCJdLAogICAgICAgICAgICBbInRyYXNoIiwgbnVsbCwgInRyYXNoLWFsdCJdLAogICAgICAgICAgICBbImNvcHlyaWdodCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJleWVkcm9wcGVyIiwgbnVsbCwgImV5ZS1kcm9wcGVyIl0sCiAgICAgICAgICAgIFsiYXJlYS1jaGFydCIsIG51bGwsICJjaGFydC1hcmVhIl0sCiAgICAgICAgICAgIFsicGllLWNoYXJ0IiwgbnVsbCwgImNoYXJ0LXBpZSJdLAogICAgICAgICAgICBbImxpbmUtY2hhcnQiLCBudWxsLCAiY2hhcnQtbGluZSJdLAogICAgICAgICAgICBbImxhc3RmbSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsYXN0Zm0tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImlveGhvc3QiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW5nZWxsaXN0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjIiwgImZhciIsICJjbG9zZWQtY2FwdGlvbmluZyJdLAogICAgICAgICAgICBbImlscyIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbInNoZWtlbCIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbInNoZXFlbCIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbIm1lYW5wYXRoIiwgImZhYiIsICJmb250LWF3ZXNvbWUiXSwKICAgICAgICAgICAgWyJidXlzZWxsYWRzIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNvbm5lY3RkZXZlbG9wIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRhc2hjdWJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZvcnVtYmVlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImxlYW5wdWIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2VsbHN5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNoaXJ0c2luYnVsayIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzaW1wbHlidWlsdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJza3lhdGxhcyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkaWFtb25kIiwgImZhciIsICJnZW0iXSwKICAgICAgICAgICAgWyJpbnRlcnNleCIsIG51bGwsICJ0cmFuc2dlbmRlciJdLAogICAgICAgICAgICBbImZhY2Vib29rLW9mZmljaWFsIiwgImZhYiIsICJmYWNlYm9vayJdLAogICAgICAgICAgICBbInBpbnRlcmVzdC1wIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndoYXRzYXBwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImhvdGVsIiwgbnVsbCwgImJlZCJdLAogICAgICAgICAgICBbInZpYWNvaW4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsibWVkaXVtIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInktY29tYmluYXRvciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5YyIsICJmYWIiLCAieS1jb21iaW5hdG9yIl0sCiAgICAgICAgICAgIFsib3B0aW4tbW9uc3RlciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJvcGVuY2FydCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJleHBlZGl0ZWRzc2wiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYmF0dGVyeS00IiwgbnVsbCwgImJhdHRlcnktZnVsbCJdLAogICAgICAgICAgICBbImJhdHRlcnkiLCBudWxsLCAiYmF0dGVyeS1mdWxsIl0sCiAgICAgICAgICAgIFsiYmF0dGVyeS0zIiwgbnVsbCwgImJhdHRlcnktdGhyZWUtcXVhcnRlcnMiXSwKICAgICAgICAgICAgWyJiYXR0ZXJ5LTIiLCBudWxsLCAiYmF0dGVyeS1oYWxmIl0sCiAgICAgICAgICAgIFsiYmF0dGVyeS0xIiwgbnVsbCwgImJhdHRlcnktcXVhcnRlciJdLAogICAgICAgICAgICBbImJhdHRlcnktMCIsIG51bGwsICJiYXR0ZXJ5LWVtcHR5Il0sCiAgICAgICAgICAgIFsib2JqZWN0LWdyb3VwIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbIm9iamVjdC11bmdyb3VwIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbInN0aWNreS1ub3RlLW8iLCAiZmFyIiwgInN0aWNreS1ub3RlIl0sCiAgICAgICAgICAgIFsiY2MtamNiIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjLWRpbmVycy1jbHViIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNsb25lIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImhvdXJnbGFzcy1vIiwgImZhciIsICJob3VyZ2xhc3MiXSwKICAgICAgICAgICAgWyJob3VyZ2xhc3MtMSIsIG51bGwsICJob3VyZ2xhc3Mtc3RhcnQiXSwKICAgICAgICAgICAgWyJob3VyZ2xhc3MtMiIsIG51bGwsICJob3VyZ2xhc3MtaGFsZiJdLAogICAgICAgICAgICBbImhvdXJnbGFzcy0zIiwgbnVsbCwgImhvdXJnbGFzcy1lbmQiXSwKICAgICAgICAgICAgWyJoYW5kLXJvY2stbyIsICJmYXIiLCAiaGFuZC1yb2NrIl0sCiAgICAgICAgICAgIFsiaGFuZC1ncmFiLW8iLCAiZmFyIiwgImhhbmQtcm9jayJdLAogICAgICAgICAgICBbImhhbmQtcGFwZXItbyIsICJmYXIiLCAiaGFuZC1wYXBlciJdLAogICAgICAgICAgICBbImhhbmQtc3RvcC1vIiwgImZhciIsICJoYW5kLXBhcGVyIl0sCiAgICAgICAgICAgIFsiaGFuZC1zY2lzc29ycy1vIiwgImZhciIsICJoYW5kLXNjaXNzb3JzIl0sCiAgICAgICAgICAgIFsiaGFuZC1saXphcmQtbyIsICJmYXIiLCAiaGFuZC1saXphcmQiXSwKICAgICAgICAgICAgWyJoYW5kLXNwb2NrLW8iLCAiZmFyIiwgImhhbmQtc3BvY2siXSwKICAgICAgICAgICAgWyJoYW5kLXBvaW50ZXItbyIsICJmYXIiLCAiaGFuZC1wb2ludGVyIl0sCiAgICAgICAgICAgIFsiaGFuZC1wZWFjZS1vIiwgImZhciIsICJoYW5kLXBlYWNlIl0sCiAgICAgICAgICAgIFsicmVnaXN0ZXJlZCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJjcmVhdGl2ZS1jb21tb25zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdnIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdnLWNpcmNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0cmlwYWR2aXNvciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJvZG5va2xhc3NuaWtpIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9kbm9rbGFzc25pa2ktc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdldC1wb2NrZXQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid2lraXBlZGlhLXciLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2FmYXJpIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNocm9tZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmaXJlZm94IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9wZXJhIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImludGVybmV0LWV4cGxvcmVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRlbGV2aXNpb24iLCBudWxsLCAidHYiXSwKICAgICAgICAgICAgWyJjb250YW8iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiNTAwcHgiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW1hem9uIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNhbGVuZGFyLXBsdXMtbyIsICJmYXIiLCAiY2FsZW5kYXItcGx1cyJdLAogICAgICAgICAgICBbImNhbGVuZGFyLW1pbnVzLW8iLCAiZmFyIiwgImNhbGVuZGFyLW1pbnVzIl0sCiAgICAgICAgICAgIFsiY2FsZW5kYXItdGltZXMtbyIsICJmYXIiLCAiY2FsZW5kYXItdGltZXMiXSwKICAgICAgICAgICAgWyJjYWxlbmRhci1jaGVjay1vIiwgImZhciIsICJjYWxlbmRhci1jaGVjayJdLAogICAgICAgICAgICBbIm1hcC1vIiwgImZhciIsICJtYXAiXSwKICAgICAgICAgICAgWyJjb21tZW50aW5nIiwgbnVsbCwgImNvbW1lbnQtZG90cyJdLAogICAgICAgICAgICBbImNvbW1lbnRpbmctbyIsICJmYXIiLCAiY29tbWVudC1kb3RzIl0sCiAgICAgICAgICAgIFsiaG91enoiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidmltZW8iLCAiZmFiIiwgInZpbWVvLXYiXSwKICAgICAgICAgICAgWyJibGFjay10aWUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZm9udGljb25zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlZGRpdC1hbGllbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJlZGdlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNyZWRpdC1jYXJkLWFsdCIsIG51bGwsICJjcmVkaXQtY2FyZCJdLAogICAgICAgICAgICBbImNvZGllcGllIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm1vZHgiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZm9ydC1hd2Vzb21lIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInVzYiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwcm9kdWN0LWh1bnQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsibWl4Y2xvdWQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2NyaWJkIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInBhdXNlLWNpcmNsZS1vIiwgImZhciIsICJwYXVzZS1jaXJjbGUiXSwKICAgICAgICAgICAgWyJzdG9wLWNpcmNsZS1vIiwgImZhciIsICJzdG9wLWNpcmNsZSJdLAogICAgICAgICAgICBbImJsdWV0b290aCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJibHVldG9vdGgtYiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnaXRsYWIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid3BiZWdpbm5lciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3cGZvcm1zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImVudmlyYSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3aGVlbGNoYWlyLWFsdCIsICJmYWIiLCAiYWNjZXNzaWJsZS1pY29uIl0sCiAgICAgICAgICAgIFsicXVlc3Rpb24tY2lyY2xlLW8iLCAiZmFyIiwgInF1ZXN0aW9uLWNpcmNsZSJdLAogICAgICAgICAgICBbInZvbHVtZS1jb250cm9sLXBob25lIiwgbnVsbCwgInBob25lLXZvbHVtZSJdLAogICAgICAgICAgICBbImFzbC1pbnRlcnByZXRpbmciLCBudWxsLCAiYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmciXSwKICAgICAgICAgICAgWyJkZWFmbmVzcyIsIG51bGwsICJkZWFmIl0sCiAgICAgICAgICAgIFsiaGFyZC1vZi1oZWFyaW5nIiwgbnVsbCwgImRlYWYiXSwKICAgICAgICAgICAgWyJnbGlkZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnbGlkZS1nIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNpZ25pbmciLCBudWxsLCAic2lnbi1sYW5ndWFnZSJdLAogICAgICAgICAgICBbInZpYWRlbyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ2aWFkZW8tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0LWdob3N0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0LXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaWVkLXBpcGVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZpcnN0LW9yZGVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInlvYXN0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRoZW1laXNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cy1vZmZpY2lhbCIsICJmYWIiLCAiZ29vZ2xlLXBsdXMiXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cy1jaXJjbGUiLCAiZmFiIiwgImdvb2dsZS1wbHVzIl0sCiAgICAgICAgICAgIFsiZm9udC1hd2Vzb21lIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZhIiwgImZhYiIsICJmb250LWF3ZXNvbWUiXSwKICAgICAgICAgICAgWyJoYW5kc2hha2UtbyIsICJmYXIiLCAiaGFuZHNoYWtlIl0sCiAgICAgICAgICAgIFsiZW52ZWxvcGUtb3Blbi1vIiwgImZhciIsICJlbnZlbG9wZS1vcGVuIl0sCiAgICAgICAgICAgIFsibGlub2RlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImFkZHJlc3MtYm9vay1vIiwgImZhciIsICJhZGRyZXNzLWJvb2siXSwKICAgICAgICAgICAgWyJ2Y2FyZCIsIG51bGwsICJhZGRyZXNzLWNhcmQiXSwKICAgICAgICAgICAgWyJhZGRyZXNzLWNhcmQtbyIsICJmYXIiLCAiYWRkcmVzcy1jYXJkIl0sCiAgICAgICAgICAgIFsidmNhcmQtbyIsICJmYXIiLCAiYWRkcmVzcy1jYXJkIl0sCiAgICAgICAgICAgIFsidXNlci1jaXJjbGUtbyIsICJmYXIiLCAidXNlci1jaXJjbGUiXSwKICAgICAgICAgICAgWyJ1c2VyLW8iLCAiZmFyIiwgInVzZXIiXSwKICAgICAgICAgICAgWyJpZC1iYWRnZSIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJkcml2ZXJzLWxpY2Vuc2UiLCBudWxsLCAiaWQtY2FyZCJdLAogICAgICAgICAgICBbImlkLWNhcmQtbyIsICJmYXIiLCAiaWQtY2FyZCJdLAogICAgICAgICAgICBbImRyaXZlcnMtbGljZW5zZS1vIiwgImZhciIsICJpZC1jYXJkIl0sCiAgICAgICAgICAgIFsicXVvcmEiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZnJlZS1jb2RlLWNhbXAiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGVsZWdyYW0iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGhlcm1vbWV0ZXItNCIsIG51bGwsICJ0aGVybW9tZXRlci1mdWxsIl0sCiAgICAgICAgICAgIFsidGhlcm1vbWV0ZXIiLCBudWxsLCAidGhlcm1vbWV0ZXItZnVsbCJdLAogICAgICAgICAgICBbInRoZXJtb21ldGVyLTMiLCBudWxsLCAidGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnMiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0yIiwgbnVsbCwgInRoZXJtb21ldGVyLWhhbGYiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0xIiwgbnVsbCwgInRoZXJtb21ldGVyLXF1YXJ0ZXIiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0wIiwgbnVsbCwgInRoZXJtb21ldGVyLWVtcHR5Il0sCiAgICAgICAgICAgIFsiYmF0aHR1YiIsIG51bGwsICJiYXRoIl0sCiAgICAgICAgICAgIFsiczE1IiwgbnVsbCwgImJhdGgiXSwKICAgICAgICAgICAgWyJ3aW5kb3ctbWF4aW1pemUiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsid2luZG93LXJlc3RvcmUiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGltZXMtcmVjdGFuZ2xlIiwgbnVsbCwgIndpbmRvdy1jbG9zZSJdLAogICAgICAgICAgICBbIndpbmRvdy1jbG9zZS1vIiwgImZhciIsICJ3aW5kb3ctY2xvc2UiXSwKICAgICAgICAgICAgWyJ0aW1lcy1yZWN0YW5nbGUtbyIsICJmYXIiLCAid2luZG93LWNsb3NlIl0sCiAgICAgICAgICAgIFsiYmFuZGNhbXAiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ3JhdiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJldHN5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImltZGIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsicmF2ZWxyeSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJlZXJjYXN0IiwgImZhYiIsICJzZWxsY2FzdCJdLAogICAgICAgICAgICBbInNub3dmbGFrZS1vIiwgImZhciIsICJzbm93Zmxha2UiXSwKICAgICAgICAgICAgWyJzdXBlcnBvd2VycyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3cGV4cGxvcmVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNhYiIsIG51bGwsICJ0YXhpIl0KICAgICAgICBdOwogICAgcmV0dXJuIGZ1bmN0aW9uKGwpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBsKCkKICAgICAgICB9IGNhdGNoIChsKSB7CiAgICAgICAgICAgIGlmICghdCkgdGhyb3cgbAogICAgICAgIH0KICAgIH0oZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGw7CiAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgaS5ob29rcy5hZGRTaGltcyA/IGkuaG9va3MuYWRkU2hpbXMocykgOiAobCA9IGkuc2hpbXMpLnB1c2guYXBwbHkobCwgcykKICAgIH0pLCBzCn0sICJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IGEoKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGEpIDogbFsiZm9udGF3ZXNvbWUtZnJlZS1zaGltcyJdID0gYSgpOw=="}},"time_used":859,"timings":{"blocked":762,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-private-message/assets/js/main.js?ver=20131022","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.468Z","timestamp":1785145482468,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-private-message/assets/js/main.js?ver=20131022 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 12244\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":12244,"size_decoded":12461,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"b070055824ebcd76e29e63e209e0313b","sha1":"bc9d73c041c0369056f1c9bed468f6ed5ba853fb","sha256":"a7d619b84c20f02ea3bd306e6c4ce77c94d45bf2f78e986a4bcf62918809a9be","sha512":"0ab9786fab152856f91606e23a55e81a789594068a33e9dc4e36c66fd73bb2dfa8b79697d8f39db571b10ecc630d8eb615f32da99531cd4b337ca09fc7f314ea","ssdeep":"192:ue984XgY4i7ZaCl4XwmCaKj6mcbxmz7iXOU7iKb+YUAuzjyM:oi7ZaCoic+CvpZk","tlshash":"0142ee0db4f65cbc54b3702fbaef70022915a817510fee19b56c16e06f984acb2787a8","first_seen":"2026-07-27T08:06:56.443899Z","last_seen":"2026-07-27T09:45:50.956042Z","times_seen":3,"resource_available":true,"data":"KGZ1bmN0aW9uKCQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBpZiAoISQud2piRXh0ZW5zaW9ucykKICAgICAgICAkLndqYkV4dGVuc2lvbnMgPSB7fTsKCiAgICBmdW5jdGlvbiBXSkJNYWluQ29yZSgpIHsKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgc2VsZi5pbml0KCk7CiAgICB9OwoKICAgIFdKQk1haW5Db3JlLnByb3RvdHlwZSA9IHsKICAgICAgICAvKioKICAgICAgICAgKiAgSW5pdGlhbGl6ZQogICAgICAgICAqLwogICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICAgICAgICBzZWxmLnNlbmRNZXNzYWdlKCk7CgogICAgICAgICAgICBzZWxmLnJlcGx5TWVzc2FnZSgpOwoKICAgICAgICAgICAgc2VsZi5jaG9vc2VNZXNzYWdlKCk7CgogICAgICAgICAgICBzZWxmLnNlYXJjaE1lc3NhZ2UoKTsKCiAgICAgICAgICAgIHNlbGYubWVzc2FnZUxvYWRtb3JlKCk7CgogICAgICAgICAgICBzZWxmLnJlcGxpZWRMb2FkbW9yZSgpOwoKICAgICAgICAgICAgc2VsZi5kZWxldGVNZXNzYWdlKCk7CgogICAgICAgICAgICAkKCcubGlzdC1tZXNzYWdlLWlubmVyJykucGVyZmVjdFNjcm9sbGJhcigpOwogICAgICAgICAgICAkKCcubGlzdC1yZXBsaWVzLWlubmVyJykucGVyZmVjdFNjcm9sbGJhcigpOwogICAgICAgICAgICAkKCIubGlzdC1yZXBsaWVzLWlubmVyIikuc2Nyb2xsVG9wKCQoIi5saXN0LXJlcGxpZXMtaW5uZXIiKS5wcm9wKCJzY3JvbGxIZWlnaHQiKSk7CiAgICAgICAgICAgICQoIi5saXN0LXJlcGxpZXMtaW5uZXIiKS5wZXJmZWN0U2Nyb2xsYmFyKCd1cGRhdGUnKTsKCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcudG9nZ2xlLW1lc3NhZ2UtYnRuJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubGlzdC1tZXNzYWdlLXdyYXBwZXInKS5zbGlkZVRvZ2dsZSgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHNlbGYubG9hZEV4dGVuc2lvbigpOwogICAgICAgIH0sCiAgICAgICAgbG9hZEV4dGVuc2lvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgICAgICAgIGlmICgkLndqYkV4dGVuc2lvbnMuYWpheF91cGxvYWQpIHsKICAgICAgICAgICAgICAgICQud2piRXh0ZW5zaW9ucy5hamF4X3VwbG9hZC5jYWxsKHNlbGYpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBzZW5kTWVzc2FnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ3N1Ym1pdCcsICdmb3JtLnNlbmQtbWVzc2FnZS1mb3JtJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdmFyIGZvcm1faWQgPSAkKHRoaXMpLmF0dHIoJ2lkJyk7CiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnLmFsZXJ0JykucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCcuc2VuZC1tZXNzYWdlLWJ0bicpLmFkZENsYXNzKCdsb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB2YXIgZm9ybV9kYXRhID0gbmV3IEZvcm1EYXRhKCQoJyMnICsgZm9ybV9pZClbMF0pOwoKICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9wcml2YXRlX21lc3NhZ2Vfb3B0cy5hamF4dXJsLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IGZvcm1fZGF0YSwKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6IGZhbHNlLAogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnLnNlbmQtbWVzc2FnZS1idG4nKS5yZW1vdmVDbGFzcygnbG9hZGluZycpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucHJlcGVuZCgnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+JyArIGRhdGEubXNnICsgJzwvZGl2PicpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCd0ZXh0YXJlYVtuYW1lPXN1YmplY3RdJykudmFsKCcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgndGV4dGFyZWFbbmFtZT1tZXNzYWdlXScpLnZhbCgnJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucHJlcGVuZCgnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+JyArIGRhdGEubXNnICsgJzwvZGl2PicpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICByZXBseU1lc3NhZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdzdWJtaXQnLCAnZm9ybS5yZXBseS1tZXNzYWdlLWZvcm0nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICB2YXIgZm9ybV9pZCA9ICQodGhpcykuYXR0cignaWQnKTsKICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCcuYWxlcnQnKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJy5yZXBseS1tZXNzYWdlLWJ0bicpLmFkZENsYXNzKCdsb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB2YXIgZm9ybV9kYXRhID0gbmV3IEZvcm1EYXRhKCQoJyMnICsgZm9ybV9pZClbMF0pOwoKICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9wcml2YXRlX21lc3NhZ2Vfb3B0cy5hamF4dXJsLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IGZvcm1fZGF0YSwKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6IGZhbHNlLAogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnLnJlcGx5LW1lc3NhZ2UtYnRuJykucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5yZXBsaWVzLWNvbnRlbnQnKS5maW5kKCcubGlzdC1yZXBsaWVzJykuYXBwZW5kKGRhdGEubXNnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgndGV4dGFyZWFbbmFtZT1tZXNzYWdlXScpLnZhbCgnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoIi5saXN0LXJlcGxpZXMtaW5uZXIiKS5zY3JvbGxUb3AoJCgiLmxpc3QtcmVwbGllcy1pbm5lciIpLnByb3AoInNjcm9sbEhlaWdodCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgiLmxpc3QtcmVwbGllcy1pbm5lciIpLnBlcmZlY3RTY3JvbGxiYXIoJ3VwZGF0ZScpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2hvd01lc3NhZ2UoZGF0YS5tc2csIGRhdGEuc3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBjaG9vc2VNZXNzYWdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnYS5tZXNzYWdlLWl0ZW0nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgdmFyIHBhcmVudCA9ICQodGhpcykucGFyZW50KCk7CgogICAgICAgICAgICAgICAgaWYgKHBhcmVudC5oYXNDbGFzcygnYWN0aXZlJykpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkKCd1bC5saXN0LW1lc3NhZ2UgbGknKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBwYXJlbnQuYWRkQ2xhc3MoJ2FjdGl2ZScpLmFkZENsYXNzKCdyZWFkJykucmVtb3ZlQ2xhc3MoJ3VucmVhZCcpOwoKICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5tZXNzYWdlLXNlY3Rpb24td3JhcHBlcicpLmZpbmQoJy5yZXBsaWVzLWNvbnRlbnQnKS5hZGRDbGFzcygnbG9hZGluZycpOwoKICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9wcml2YXRlX21lc3NhZ2Vfb3B0cy5hamF4dXJsLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2VfaWQnOiAkKHRoaXMpLmRhdGEoJ2lkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiAnd3BfcHJpdmF0ZV9tZXNzYWdlX2Nob29zZV9tZXNzYWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmNlJzogJCh0aGlzKS5kYXRhKCdub25jZScpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLm1lc3NhZ2Utc2VjdGlvbi13cmFwcGVyJykuZmluZCgnLnJlcGxpZXMtY29udGVudCcpLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7CgogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXInKS5maW5kKCcucmVwbGllcy1jb250ZW50JykuaHRtbChkYXRhLm1zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkaW5uZXIgPSAkdGhpcy5jbG9zZXN0KCcubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXInKS5maW5kKCIubGlzdC1yZXBsaWVzLWlubmVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbm5lci5wZXJmZWN0U2Nyb2xsYmFyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbm5lci5zY3JvbGxUb3AoJGlubmVyLnByb3AoInNjcm9sbEhlaWdodCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGlubmVyLnBlcmZlY3RTY3JvbGxiYXIoJ3VwZGF0ZScpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2hvd01lc3NhZ2UoZGF0YS5tc2csIGRhdGEuc3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBzZWFyY2hNZXNzYWdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignc3VibWl0JywgJ2Zvcm0uc2VhcmNoLW1lc3NhZ2UtZm9ybScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICB2YXIgZm9ybV9pZCA9ICR0aGlzLmF0dHIoJ2lkJyk7CiAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcubGlzdC1tZXNzYWdlLXdyYXBwZXInKS5hZGRDbGFzcygnbG9hZGluZycpOwogICAgICAgICAgICAgICAgdmFyIGZvcm1fZGF0YSA9IG5ldyBGb3JtRGF0YSgkKCcjJyArIGZvcm1faWQpWzBdKTsKCiAgICAgICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAgICAgIHVybDogd3BfcHJpdmF0ZV9tZXNzYWdlX29wdHMuYWpheHVybCwKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgICAgICBkYXRhOiBmb3JtX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGE6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBmYWxzZSwKICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5saXN0LW1lc3NhZ2Utd3JhcHBlcicpLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7CgogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcubGlzdC1tZXNzYWdlLXdyYXBwZXInKS5maW5kKCd1bC5saXN0LW1lc3NhZ2UnKS5odG1sKGRhdGEub3V0cHV0KTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLmxpc3QtbWVzc2FnZS13cmFwcGVyJykuZmluZCgnLmxvYWRtb3JlLWFjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5uZXh0X3BhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5saXN0LW1lc3NhZ2Utd3JhcHBlcicpLmZpbmQoJy5saXN0LW1lc3NhZ2UtaW5uZXInKS5hcHBlbmQoZGF0YS5uZXh0X3BhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkaW5uZXIgPSAkdGhpcy5jbG9zZXN0KCcubGlzdC1tZXNzYWdlLXdyYXBwZXInKS5maW5kKCcubGlzdC1tZXNzYWdlLWlubmVyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbm5lci5wZXJmZWN0U2Nyb2xsYmFyKCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaG93TWVzc2FnZShkYXRhLm1zZywgZGF0YS5zdGF0dXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsICdpbnB1dFtuYW1lPXNlYXJjaF9yZWFkXScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnZm9ybS5zZWFyY2gtbWVzc2FnZS1mb3JtJykudHJpZ2dlcignc3VibWl0Jyk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgbWVzc2FnZUxvYWRtb3JlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmxvYWRtb3JlLW1lc3NhZ2UtYnRuJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB2YXIgc2VhcmNoID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoJCgnZm9ybS5zZWFyY2gtbWVzc2FnZS1mb3JtJykubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIHNlYXJjaCA9ICQoJ2Zvcm0uc2VhcmNoLW1lc3NhZ2UtZm9ybScpLmZpbmQoJ2lucHV0W25hbWU9c2VhcmNoXScpLnZhbCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICB1cmw6IHdwX3ByaXZhdGVfbWVzc2FnZV9vcHRzLmFqYXh1cmwsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICAncGFnZWQnOiAkdGhpcy5kYXRhKCdwYWdlZCcpLAogICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ3dwX3ByaXZhdGVfbWVzc2FnZV9tZXNzYWdlX2xvYWRtb3JlJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3NlYXJjaCc6IHNlYXJjaCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLmxpc3QtbWVzc2FnZS1pbm5lcicpLmZpbmQoJy5saXN0LW1lc3NhZ2UnKS5hcHBlbmQoZGF0YS5vdXRwdXQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5uZXh0X3BhZ2UgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdkYXRhLXBhZ2VkJywgZGF0YS5uZXh0X3BhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICByZXBsaWVkTG9hZG1vcmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcubG9hZG1vcmUtcmVwbGllZC1idG4nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ2xvYWRpbmcnKTsKCiAgICAgICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAgICAgIHVybDogd3BfcHJpdmF0ZV9tZXNzYWdlX29wdHMuYWpheHVybCwKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICdwYWdlZCc6ICR0aGlzLmF0dHIoJ2RhdGEtcGFnZWQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbic6ICd3cF9wcml2YXRlX21lc3NhZ2VfcmVwbGllZF9sb2FkbW9yZScsCiAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnQnOiAkdGhpcy5kYXRhKCdwYXJlbnQnKSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLmxpc3QtcmVwbGllcy1pbm5lcicpLmZpbmQoJy5saXN0LXJlcGxpZXMnKS5wcmVwZW5kKGRhdGEub3V0cHV0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubmV4dF9wYWdlID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuYXR0cignZGF0YS1wYWdlZCcsIGRhdGEubmV4dF9wYWdlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgZGVsZXRlTWVzc2FnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ2EuZGVsZXRlLW1lc3NhZ2UtYnRuJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlX2lkID0gJHRoaXMuZGF0YSgnaWQnKTsKICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5yZXBsaWVzLWNvbnRlbnQnKS5hZGRDbGFzcygnbG9hZGluZycpOwoKICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9wcml2YXRlX21lc3NhZ2Vfb3B0cy5hamF4dXJsLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2VfaWQnOiBtZXNzYWdlX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ3dwX3ByaXZhdGVfbWVzc2FnZV9kZWxldGVfbWVzc2FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICdub25jZSc6ICR0aGlzLmRhdGEoJ25vbmNlJykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcucmVwbGllcy1jb250ZW50JykucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5tZXNzYWdlLXNlY3Rpb24td3JhcHBlcicpLmZpbmQoJyNtZXNzYWdlLWlkLScgKyBtZXNzYWdlX2lkKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLnJlcGxpZXMtY29udGVudCcpLmh0bWwoJycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dNZXNzYWdlKGRhdGEubXNnLCBkYXRhLnN0YXR1cyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBzaG93TWVzc2FnZTogZnVuY3Rpb24obXNnLCBzdGF0dXMpIHsKICAgICAgICAgICAgY29uc29sZS5sb2cobXNnKTsKICAgICAgICAgICAgaWYgKG1zZykgewogICAgICAgICAgICAgICAgdmFyIGNsYXNzZXMgPSAnYWxlcnQgYmctd2FybmluZyc7CiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgY2xhc3NlcyA9ICdhbGVydCBiZy1pbmZvJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciAkaHRtbCA9ICc8ZGl2IGlkPSJ3cC1wcml2YXRlLW1lc3NhZ2UtcG9wdXAtbWVzc2FnZSIgY2xhc3M9ImFuaW1hdGVkIGZhZGVJblJpZ2h0Ij48ZGl2IGNsYXNzPSJtZXNzYWdlLWlubmVyICcgKyBjbGFzc2VzICsgJyI+JyArIG1zZyArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgICAgICAgICAgJCgnYm9keScpLmZpbmQoJyN3cC1wcml2YXRlLW1lc3NhZ2UtcG9wdXAtbWVzc2FnZScpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZCgkaHRtbCkuZmFkZUluKDUwMCk7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5maW5kKCcjd3AtcHJpdmF0ZS1tZXNzYWdlLXBvcHVwLW1lc3NhZ2UnKS5yZW1vdmVDbGFzcygnZmFkZUluUmlnaHQnKS5hZGRDbGFzcygnZGVsYXktMnMgZmFkZU91dFJpZ2h0Jyk7CiAgICAgICAgICAgICAgICB9LCAyNTAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkLndqYk1haW5Db3JlID0gV0pCTWFpbkNvcmUucHJvdG90eXBlOwoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgICAgIC8vIEluaXRpYWxpemUgc2NyaXB0CiAgICAgICAgbmV3IFdKQk1haW5Db3JlKCk7CgogICAgfSk7Cgp9KShqUXVlcnkpOw=="}},"time_used":1015,"timings":{"blocked":920,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"cdnconsents.websitepolicies.com/legacy/lib/cookieconsent/cookieconsent.min.css","fqdn":"cdnconsents.websitepolicies.com","domain":"websitepolicies.com","tld":"com"},"ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:46.041Z","timestamp":1785145486041,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cdnconsents.websitepolicies.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 18 Jul 2026 01:02:42 GMT","end":"Fri, 16 Oct 2026 01:02:41 GMT"},"fingerprint":{"sha1":"F4:8A:64:84:E9:6C:5C:DC:A8:BA:32:56:66:3D:AE:37:B0:6B:CE:12","sha256":"B8:0C:85:7D:C7:FE:E6:09:AA:99:31:0E:F0:15:26:1F:4B:9F:59:92:F3:F4:57:89:A2:6E:56:CF:F1:22:B8:79"}}},"request":{"raw":"GET /legacy/lib/cookieconsent/cookieconsent.min.css HTTP/1.1\r\nHost: cdnconsents.websitepolicies.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://betaroi.ltd/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 09:44:46 GMT\r\ncontent-type: text/css\r\nserver: BunnyCDN-NO1-830\r\ncdn-pullzone: 2253271\r\ncdn-requestcountrycode: NO\r\nvary: Accept-Encoding\r\naccess-control-allow-origin: *\r\naccess-control-allow-headers: Server, x-goog-meta-frames, Content-Length, Content-Type, Range, X-Requested-With, If-Modified-Since, If-None-Match\r\naccess-control-expose-headers: Server, x-goog-meta-frames, Content-Length, Content-Type, Range, X-Requested-With, If-Modified-Since, If-None-Match\r\nage: 151627\r\ncache-control: max-age=2678400\r\ncontent-encoding: zstd\r\netag: W/\"675c6325-1158\"\r\nexpires: Sun, 20 Jul 2025 12:53:31 GMT\r\nlast-modified: Fri, 13 Dec 2024 16:39:01 GMT\r\ncdn-cachedat: 08/14/2025 09:09:46\r\nstrict-transport-security: max-age=31536000\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncf-cache-status: HIT\r\nreport-to: {\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=m%2BYAx1Tr68BBqIGwgQGWrddyTSWYx%2FAE3XXPaecXphLMtfZQptNT8wIGyp%2BvlcJfy194u85VHYydMhDKbRzYZW112dyNkG8vjXdlRADECxbtuavHxq%2FFsAElrDSIpShplwwPiH0RDjH1oAdkWv5c\"}],\"group\":\"cf-nel\",\"max_age\":604800}\r\nnel: {\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}\r\ncf-ray: 954a4078ac42ebac-CDG\r\nserver-timing: cfL4;desc=\"?proto=TCP\u0026rtt=1042\u0026min_rtt=1039\u0026rtt_var=299\u0026sent=5\u0026recv=7\u0026lost=0\u0026retrans=0\u0026sent_bytes=3135\u0026recv_bytes=1679\u0026delivery_rate=4094250\u0026cwnd=252\u0026unsent_bytes=0\u0026cid=800815cbf0d38ca2\u0026ts=30\u0026x=0\"\r\ncdn-proxyver: 1.33\r\ncdn-requestpullcode: 200\r\ncdn-requestpullsuccess: True\r\ncdn-edgestorageid: 830\r\ncdn-status: 200\r\ncdn-requesttime: 0\r\ncdn-requestid: b360b4e36d6577faf1eb80925890be87\r\ncdn-cache: HIT\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":4440,"size_decoded":3132,"mime_type":"text/css","magic":"ASCII text, with very long lines (4370)","md5":"39ad57b1588f09da7d6e67e5cc02521f","sha1":"e4d6bee9bfe50b5038e44a7b6d8c8436d1b7f2da","sha256":"9ac596fe11a40f6a180d57d138de9c84eda774becd94314ecafde75128c0b6b5","sha512":"79bc2bc340d0e94533757167f63c7a75b0d904780013d18ec1a08c3fa13c9e22b909d325bf356b63aea6ca33f16503375822493b1f9a9402788ea081b153430e","ssdeep":"96:Ph/9K1sptaTSoBQBj0Wa7slHn5tnLwWnw4zuwC:PFU2+WaKVLZnzuwC","tlshash":"f3914224ff812038a0fb85fa96d1d16478febd11dae78bcaf5cc6731861d269093168c","first_seen":"2025-04-20T22:26:19.574298Z","last_seen":"2026-07-27T10:40:33.137417Z","times_seen":149,"resource_available":false,"data":"LyogaHR0cHM6Ly93d3cud2Vic2l0ZXBvbGljaWVzLmNvbS9jb29raWUtY29uc2VudC1iYW5uZXItZ2VuZXJhdG9yICovCi53cGNjLWNvbnRhaW5lcntvcGFjaXR5OjF9LndwY2MtdHJhbnNwYXJlbmN5LTV7b3BhY2l0eTouOTV9LndwY2MtdHJhbnNwYXJlbmN5LTEwe29wYWNpdHk6Ljl9LndwY2MtdHJhbnNwYXJlbmN5LTE1e29wYWNpdHk6Ljg1fS53cGNjLXRyYW5zcGFyZW5jeS0yMHtvcGFjaXR5Oi44fS53cGNjLXRyYW5zcGFyZW5jeS0yNXtvcGFjaXR5Oi43NX0ud3BjYy1jb250YWluZXJ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOm5vd3JhcDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNWVtOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IDFzIGVhc2U7LW1vei10cmFuc2l0aW9uOm9wYWNpdHkgMXMgZWFzZTstbXMtdHJhbnNpdGlvbjpvcGFjaXR5IDFzIGVhc2U7LW8tdHJhbnNpdGlvbjpvcGFjaXR5IDFzIGVhc2U7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmZpeGVkO3RyYW5zaXRpb246b3BhY2l0eSAxcyBlYXNlO3otaW5kZXg6OTk5OX1AbWVkaWEgcHJpbnR7LndwY2MtY29udGFpbmVye2Rpc3BsYXk6bm9uZX19LndwY2MtcHVzaGRvd24td3JhcHttYXgtaGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtdHJhbnNpdGlvbjptYXgtaGVpZ2h0IDFzOy1tb3otdHJhbnNpdGlvbjptYXgtaGVpZ2h0IDFzOy1tcy10cmFuc2l0aW9uOm1heC1oZWlnaHQgMXM7LW8tdHJhbnNpdGlvbjptYXgtaGVpZ2h0IDFzO3RyYW5zaXRpb246bWF4LWhlaWdodCAxc30ud3BjYy1wdXNoZG93bnttYXJnaW46MCFpbXBvcnRhbnQ7cG9zaXRpb246c3RhdGljfS53cGNjLWludmlzaWJsZXtvcGFjaXR5OjB9LndwY2MtZm9udHNpemUtdGlueXtmb250LXNpemU6MTJweH0ud3BjYy1mb250c2l6ZS1zbWFsbHtmb250LXNpemU6MTRweH0ud3BjYy1mb250c2l6ZS1sYXJnZXtmb250LXNpemU6MThweH0ud3BjYy1ib3JkZXItdGhpbntib3JkZXItd2lkdGg6MXB4fS53cGNjLWJvcmRlci1ub3JtYWx7Ym9yZGVyLXdpZHRoOjNweH0ud3BjYy1ib3JkZXItdGhpY2t7Ym9yZGVyLXdpZHRoOjVweH0ud3BjYy1mbG9hdHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWF4LXdpZHRoOjIyZW07cGFkZGluZzoxLjVlbX0ud3BjYy1mbG9hdC53cGNjLXBhZGRpbmctc21hbGx7cGFkZGluZzoxZW19LndwY2MtZmxvYXQud3BjYy1wYWRkaW5nLWxhcmdle3BhZGRpbmc6MmVtfS53cGNjLWJhbm5lcntmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXA7bWFyZ2luOjFlbTtwYWRkaW5nOjFlbX0ud3BjYy1iYW5uZXIud3BjYy1wYWRkaW5nLXNtYWxse3BhZGRpbmc6LjVlbSAuNWVtIC41ZW0gMWVtfS53cGNjLWJhbm5lci53cGNjLXBhZGRpbmctbGFyZ2V7cGFkZGluZzoxLjVlbX0ud3BjYy1iYW5uZXIud3BjYy1tYXJnaW4tbm9uZXttYXJnaW46MH0ud3BjYy1iYW5uZXIud3BjYy1tYXJnaW4tc21hbGx7bWFyZ2luOi41ZW19LndwY2MtYmFubmVyLndwY2MtbWFyZ2luLWxhcmdle21hcmdpbjoxLjVlbX0ud3BjYy1wYWRkaW5nLW5vbmV7cGFkZGluZzowfS53cGNjLXBhZGRpbmctbm9uZS53cGNjLWZsb2F0IC53cGNjLW1lc3NhZ2V7bWFyZ2luOjFlbX0ud3BjYy1wYWRkaW5nLW5vbmUud3BjYy1iYW5uZXIgLndwY2MtbWVzc2FnZXttYXJnaW46LjhlbSAxZW19LndwY2MtcGFkZGluZy1ub25lLndwY2MtYmFubmVyIC53cGNjLWJ0bntoZWlnaHQ6MTAwJTtwYWRkaW5nOi45ZW0gMS41ZW07d2lkdGg6YXV0b30ud3BjYy1idG4sLndwY2MtcHJpdmFjeXtjdXJzb3I6cG9pbnRlcn0ud3BjYy1wcml2YWN5e2Rpc3BsYXk6aW5saW5lLWJsb2NrO29wYWNpdHk6Ljg1O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LndwY2MtcHJpdmFjeTpob3ZlcntvcGFjaXR5OjF9LndwY2MtcHJpdmFjeTphY3RpdmUsLndwY2MtcHJpdmFjeTp2aXNpdGVke2NvbG9yOmluaXRpYWx9LndwY2MtYnRue2JvcmRlcjowO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOi45ZW07Zm9udC13ZWlnaHQ6NzAwO291dGxpbmU6MDtwYWRkaW5nOi40ZW0gLjhlbTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZTstbW96LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZTstbXMtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlOy1vLXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZX0ud3BjYy1idG46aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LndwY2MtYnRuOmZvY3VzLC53cGNjLXByaXZhY3k6Zm9jdXN7b3V0bGluZToxcHggZG90dGVkICMyMjJ9LndwY2MtdG9we3RvcDoxZW19LndwY2MtdG9wLndwY2MtbWFyZ2luLW5vbmV7dG9wOjB9LndwY2MtdG9wLndwY2MtbWFyZ2luLXNtYWxse3RvcDouNWVtfS53cGNjLXRvcC53cGNjLW1hcmdpbi1sYXJnZXt0b3A6MS41ZW19LndwY2MtbGVmdHtsZWZ0OjFlbX0ud3BjYy1sZWZ0LndwY2MtbWFyZ2luLW5vbmV7bGVmdDowfS53cGNjLWxlZnQud3BjYy1tYXJnaW4tc21hbGx7bGVmdDouNWVtfS53cGNjLWxlZnQud3BjYy1tYXJnaW4tbGFyZ2V7bGVmdDoxLjVlbX0ud3BjYy1yaWdodHtyaWdodDoxZW19LndwY2MtcmlnaHQud3BjYy1tYXJnaW4tbm9uZXtyaWdodDowfS53cGNjLXJpZ2h0LndwY2MtbWFyZ2luLXNtYWxse3JpZ2h0Oi41ZW19LndwY2MtcmlnaHQud3BjYy1tYXJnaW4tbGFyZ2V7cmlnaHQ6MS41ZW19LndwY2MtYm90dG9te2JvdHRvbToxZW19LndwY2MtYm90dG9tLndwY2MtbWFyZ2luLW5vbmV7Ym90dG9tOjB9LndwY2MtYm90dG9tLndwY2MtbWFyZ2luLXNtYWxse2JvdHRvbTouNWVtfS53cGNjLWJvdHRvbS53cGNjLW1hcmdpbi1sYXJnZXtib3R0b206MS41ZW19LndwY2MtZmxvYXQgLndwY2MtbWVzc2FnZXtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MWVtfS53cGNjLWJhbm5lcnthbGlnbi1pdGVtczpjZW50ZXJ9LndwY2MtYmFubmVyLndwY2MtdG9we2xlZnQ6MDtyaWdodDowO3RvcDowfS53cGNjLWJhbm5lci53cGNjLWJvdHRvbXtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MH0ud3BjYy1iYW5uZXIgLndwY2MtbWVzc2FnZXtkaXNwbGF5OmJsb2NrO2ZsZXg6MSAxIGF1dG87bWFyZ2luLXJpZ2h0OjFlbTttYXgtd2lkdGg6MTAwJX0ud3BjYy1mbG9hdCAud3BjYy1jb21wbGlhbmNle2ZsZXg6MSAwIGF1dG99LndwY2MtY29ybmVycy1zbWFsbHtib3JkZXItcmFkaXVzOjVweH0ud3BjYy1jb3JuZXJzLW5vcm1hbHtib3JkZXItcmFkaXVzOjdweH0ud3BjYy1jb3JuZXJzLWxhcmdle2JvcmRlci1yYWRpdXM6MTBweH0ud3BjYy1jb3JuZXJzLXJvdW5kIC53cGNjLWJ0bntib3JkZXItcmFkaXVzOjRweH0ud3BjYy1jb3JuZXJzLXJvdW5kLndwY2MtbWFyZ2luLW5vbmUsLndwY2MtY29ybmVycy1yb3VuZC53cGNjLXBhZGRpbmctbm9uZSAud3BjYy1idG57Ym9yZGVyLXJhZGl1czowfS53cGNjLWNvcm5lcnMtcm91bmQud3BjYy1tYXJnaW4tbm9uZXtib3JkZXItcmFkaXVzOjB9LndwY2MtYmFubmVyIC53cGNjLXBvd2VyZWRieXtmbGV4LWJhc2lzOjEwMCV9LndwY2MtZmxvYXQgLndwY2MtcG93ZXJlZGJ5e3BhZGRpbmctdG9wOjAuNWVtfS53cGNjLXBvd2VyZWRieSBhe3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sc3lzdGVtLXVpLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIjtmb250LXNpemU6MC44ZW19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MTRweCkgYW5kIChvcmllbnRhdGlvbjpwb3J0cmFpdCksc2NyZWVuIGFuZCAobWF4LXdpZHRoOjczNnB4KSBhbmQgKG9yaWVudGF0aW9uOmxhbmRzY2FwZSl7LndwY2MtdG9we3RvcDowIWltcG9ydGFudH0ud3BjYy1ib3R0b217Ym90dG9tOjAhaW1wb3J0YW50fS53cGNjLWJhbm5lciwud3BjYy1mbG9hdCwud3BjYy1sZWZ0LC53cGNjLXJpZ2h0e2xlZnQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3JpZ2h0OjAhaW1wb3J0YW50fS53cGNjLWJhbm5lcnthbGlnbi1pdGVtczp1bnNldDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LndwY2MtY29ybmVycy1yb3VuZHtib3JkZXItcmFkaXVzOjAhaW1wb3J0YW50fS53cGNjLWZsb2F0e21heC13aWR0aDpub25lfS53cGNjLW1lc3NhZ2V7bWFyZ2luLWJvdHRvbToxZW19LndwY2MtYmFubmVyLndwY2MtcGFkZGluZy1zbWFsbHtwYWRkaW5nOi41ZW19LndwY2MtcGFkZGluZy1zbWFsbCAud3BjYy1tZXNzYWdle21hcmdpbi1ib3R0b206LjVlbX19"}},"time_used":2,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":2,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"s3.tradingview.com/external-embedding/embed-widget-hotlists.js","fqdn":"s3.tradingview.com","domain":"tradingview.com","tld":"com"},"ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.361Z","timestamp":1785145482361,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.tradingview.com","organization":""},"issuer":{"commonName":"DigiCert Global G2 TLS RSA SHA256 2020 CA1","organization":"DigiCert Inc"},"validity":{"start":"Tue, 21 Oct 2025 00:00:00 GMT","end":"Tue, 17 Nov 2026 23:59:59 GMT"},"fingerprint":{"sha1":"C4:FE:64:00:30:2A:CD:16:30:95:7E:E1:70:D1:31:3A:D6:33:3A:CC","sha256":"87:D2:67:7D:3E:02:F0:3B:58:BD:38:17:DA:FE:73:C0:CA:25:F9:58:CC:11:14:E0:3A:6E:C3:58:84:9E:BF:52"}}},"request":{"raw":"GET /external-embedding/embed-widget-hotlists.js HTTP/1.1\r\nHost: s3.tradingview.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://betaroi.ltd/\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\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: text/javascript\r\nserver: BunnyCDN-NO1-830\r\ncdn-pullzone: 1837468\r\ncdn-requestcountrycode: NO\r\nvary: Accept-Encoding\r\naccess-control-allow-methods: GET\r\naccess-control-allow-origin: *\r\naccess-control-max-age: 3000\r\ncache-control: public, max-age=300\r\ncontent-encoding: zstd\r\netag: \"1876063c03768f29206c47bcbefbd678\"\r\nlast-modified: Fri, 24 Jul 2026 10:29:23 GMT\r\nx-amz-id-2: nYjH9MKCyZtSEDYhSxsgx0h+EEEteYHWy0ASLq2kGD2LI9yDAbPi+8MP2iApdK6lGOc0xftxeo0=\r\nx-amz-request-id: 0Z37V28JV1158FPE\r\nx-amz-server-side-encryption: AES256\r\nx-amz-version-id: y3nMmwegtpyh0AdCt4Y.72LhBnzn4eFR\r\ncdn-proxyver: 1.58\r\ncdn-requestpullcode: 200\r\ncdn-requestpullsuccess: True\r\ncdn-edgestorageid: 830\r\ncontent-security-policy: default-src 'none'\r\ncdn-cachedat: 07/24/2026 10:33:38\r\ncdn-status: 200\r\ncdn-requesttime: 0\r\ncdn-requestid: 11cff2305c74828221c1815bbaab511b\r\ncdn-cache: REVALIDATED\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]}],"data":{"size":13083,"size_decoded":5983,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (3458)","md5":"1876063c03768f29206c47bcbefbd678","sha1":"eb7614161b4dea58cebcafe5ff227cff1dcba1fe","sha256":"ed071ab87442ead4f6e5d879f4f9406e462664ef5ed66fa1d9beddff4498467e","sha512":"e5fbb6b595901635c11bcd9ade7bf0be7f49b052b1ed71991c84b13f4c3b0bfb893c99882d2886b932e4ea7a4e5ec8cdad6b986a78fa9952d6e11f86dd450edc","ssdeep":"384:gf6uCWoofYkFdj9uA222tEVSdDmMasVBvSRs:uDluA222tEVSdDmMaEY6","tlshash":"1442e7aab660dcbd51d945dba07a2320b61d3954f203aca4b9ace4c550fdccca431f7e","first_seen":"2026-07-17T06:29:35.534159Z","last_seen":"2026-07-27T12:54:15.408927Z","times_seen":19,"resource_available":true,"data":"KCgpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQodCxlKXtpZihudWxsPT09dCl0aHJvdyBuZXcgRXJyb3IoYCR7ZT8/IlZhbHVlIn0gaXMgbnVsbGApO3JldHVybiB0fWNvbnN0IGU9eyJjb2xvci1jb2xkLWdyYXktMzAwIjoiI0IyQjVCRSIsImNvbG9yLWJyYW5kIjoiIzI5NjJGRiIsImNvbG9yLWJyYW5kLWhvdmVyIjoiIzFFNTNFNSIsImNvbG9yLWJyYW5kLWFjdGl2ZSI6IiMxODQ4Q0MifQo7Y29uc3QgaT1KU09OLnBhcnNlKCd7ImNyeXB0by1ta3Qtc2NyZWVuZXIiOnsid2lkdGgiOjEwMDAsImhlaWdodCI6NDkwLCJkZWZhdWx0Q29sdW1uIjoib3ZlcnZpZXciLCJtYXJrZXQiOiJjcnlwdG8iLCJzY3JlZW5lcl90eXBlIjoiY3J5cHRvX21rdCIsImRpc3BsYXlDdXJyZW5jeSI6IlVTRCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwiZXZlbnRzIjp7IndpZHRoIjo1MTAsImhlaWdodCI6NjAwLCJpc1RyYW5zcGFyZW50IjpmYWxzZSwiaGlkZUltcG9ydGFuY2VJbmRpY2F0b3IiOmZhbHNlLCJhdXRvc2l6ZSI6ZmFsc2V9LCJmb3JleC1jcm9zcy1yYXRlcyI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImN1cnJlbmNpZXMiOlsiRVVSIiwiVVNEIiwiSlBZIiwiR0JQIiwiQ0hGIiwiQVVEIiwiQ0FEIiwiTlpEIl0sImZyYW1lRWxlbWVudElkIjpudWxsLCJhdXRvc2l6ZSI6ZmFsc2V9LCJmb3JleC1oZWF0LW1hcCI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImN1cnJlbmNpZXMiOlsiRVVSIiwiVVNEIiwiSlBZIiwiR0JQIiwiQ0hGIiwiQVVEIiwiQ0FEIiwiTlpEIiwiQ05ZIl0sImZyYW1lRWxlbWVudElkIjpudWxsLCJhdXRvc2l6ZSI6ZmFsc2V9LCJob3RsaXN0cyI6eyJ3aWR0aCI6NDAwLCJoZWlnaHQiOjYwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImRhdGVSYW5nZSI6IjEyTSIsInNob3dTeW1ib2xMb2dvIjpmYWxzZX0sIm1hcmtldC1vdmVydmlldyI6eyJ3aWR0aCI6NDAwLCJoZWlnaHQiOjY1MCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImRhdGVSYW5nZSI6IjEyTSIsInNob3dTeW1ib2xMb2dvIjp0cnVlfSwibWFya2V0LXF1b3RlcyI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQ1MCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsInNob3dTeW1ib2xMb2dvIjpmYWxzZX0sIm1pbmktc3ltYm9sLW92ZXJ2aWV3Ijp7IndpZHRoIjozNTAsImhlaWdodCI6MjIwLCJzeW1ib2wiOiJGWDpFVVJVU0QiLCJkYXRlUmFuZ2UiOiIxMk0iLCJpc1RyYW5zcGFyZW50IjpmYWxzZSwiYXV0b3NpemUiOmZhbHNlLCJsYXJnZUNoYXJ0VXJsIjoiIn0sInN5bWJvbC1vdmVydmlldyI6eyJ3aWR0aCI6MTAwMCwiaGVpZ2h0Ijo1MDAsInN5bWJvbHMiOltbIkFwcGxlIiwiQUFQTHwxRCJdLFsiR29vZ2xlIiwiR09PR0x8MUQiXSxbIk1pY3Jvc29mdCIsIk1TRlR8MUQiXV0sImF1dG9zaXplIjpmYWxzZSwiY2hhcnRPbmx5IjpmYWxzZSwiaGlkZURhdGVSYW5nZXMiOmZhbHNlLCJoaWRlTWFya2V0U3RhdHVzIjpmYWxzZSwiaGlkZVN5bWJvbExvZ28iOmZhbHNlLCJzY2FsZVBvc2l0aW9uIjoicmlnaHQiLCJzY2FsZU1vZGUiOiJOb3JtYWwiLCJmb250RmFtaWx5IjoiLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBUcmVidWNoZXQgTVMsIFJvYm90bywgVWJ1bnR1LCBzYW5zLXNlcmlmIiwiZm9udFNpemUiOiIxMCIsIm5vVGltZVNjYWxlIjpmYWxzZSwiY2hhcnRUeXBlIjoiYXJlYSIsInZhbHVlc1RyYWNraW5nIjoiMCIsImNoYW5nZU1vZGUiOiJwcmljZS1hbmQtcGVyY2VudCJ9LCJhZHZhbmNlZC1jaGFydCI6eyJib2R5SWQiOiJ3aWRnZXQtY29udGFpbmVyIiwiYm9keUNsYXNzZXMiOlsiY2hhcnQtcGFnZSIsInVuc2VsZWN0YWJsZSIsIm9uLXdpZGdldCJdfSwic2NyZWVuZXIiOnsid2lkdGgiOjExMDAsImhlaWdodCI6NTIzLCJkZWZhdWx0Q29sdW1uIjoib3ZlcnZpZXciLCJkZWZhdWx0U2NyZWVuIjoiZ2VuZXJhbCIsIm1hcmtldCI6ImZvcmV4Iiwic2hvd1Rvb2xiYXIiOnRydWUsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwic2luZ2xlLXF1b3RlIjp7IndpZHRoIjozNTAsInN5bWJvbCI6IkZYOkVVUlVTRCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwic3ltYm9sLXByb2ZpbGUiOnsid2lkdGgiOjQ4MCwiaGVpZ2h0Ijo2NTAsInN5bWJvbCI6Ik5BU0RBUTpBQVBMIiwiaXNUcmFuc3BhcmVudCI6ZmFsc2V9LCJzeW1ib2wtaW5mbyI6eyJ3aWR0aCI6MTAwMCwic3ltYm9sIjoiTkFTREFROkFBUEwiLCJpc1RyYW5zcGFyZW50IjpmYWxzZX0sInRlY2huaWNhbC1hbmFseXNpcyI6eyJpbnRlcnZhbCI6IjFtIiwid2lkdGgiOjQyNSwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImhlaWdodCI6NDUwLCJzeW1ib2wiOiJOQVNEQVE6QUFQTCIsInNob3dJbnRlcnZhbFRhYnMiOnRydWUsImRpc3BsYXlNb2RlIjoic2luZ2xlIn0sInRpY2tlci10YXBlIjp7ImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6ImFkYXB0aXZlIiwic2hvd1N5bWJvbExvZ28iOmZhbHNlfSwidGlja2VycyI6eyJpc1RyYW5zcGFyZW50IjpmYWxzZSwic2hvd1N5bWJvbExvZ28iOmZhbHNlfSwiZmluYW5jaWFscyI6eyJ3aWR0aCI6NDgwLCJoZWlnaHQiOjgzMCwiYXV0b3NpemUiOmZhbHNlLCJzeW1ib2wiOiJOQVNEQVE6QUFQTCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6InJlZ3VsYXIiLCJsYXJnZUNoYXJ0VXJsIjoiIn0sInRpbWVsaW5lIjp7IndpZHRoIjo0ODAsImhlaWdodCI6ODMwLCJhdXRvc2l6ZSI6ZmFsc2UsImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6InJlZ3VsYXIiLCJmZWVkTW9kZSI6ImFsbF9zeW1ib2xzIn0sInN0b2NrLWhlYXRtYXAiOnsid2lkdGgiOjUwMCwiaGVpZ2h0Ijo1MDAsImF1dG9zaXplIjp0cnVlLCJkYXRhU291cmNlIjoiU1BYNTAwIiwiZXhjaGFuZ2VzIjpbXSwiZ3JvdXBpbmciOiJzZWN0b3IiLCJibG9ja1NpemUiOiJtYXJrZXRfY2FwX2Jhc2ljIiwiYmxvY2tDb2xvciI6ImNoYW5nZSIsImhhc1RvcEJhciI6ZmFsc2UsImlzRGF0YVNldEVuYWJsZWQiOmZhbHNlLCJpc1pvb21FbmFibGVkIjp0cnVlLCJoYXNTeW1ib2xUb29sdGlwIjp0cnVlLCJzeW1ib2xVcmwiOiIiLCJpc01vbm9TaXplIjpmYWxzZX0sImNyeXB0by1jb2lucy1oZWF0bWFwIjp7IndpZHRoIjo1MDAsImhlaWdodCI6NTAwLCJhdXRvc2l6ZSI6dHJ1ZSwiZGF0YVNvdXJjZSI6IkNyeXB0byIsImJsb2NrU2l6ZSI6Im1hcmtldF9jYXBfY2FsYyIsImJsb2NrQ29sb3IiOiIyNGhfY2xvc2VfY2hhbmdlfDUiLCJoYXNUb3BCYXIiOmZhbHNlLCJpc0RhdGFTZXRFbmFibGVkIjpmYWxzZSwiaXNab29tRW5hYmxlZCI6dHJ1ZSwiaGFzU3ltYm9sVG9vbHRpcCI6dHJ1ZSwic3ltYm9sVXJsIjoiIiwiaXNNb25vU2l6ZSI6ZmFsc2V9LCJldGYtaGVhdG1hcCI6eyJ3aWR0aCI6NTAwLCJoZWlnaHQiOjUwMCwiYXV0b3NpemUiOnRydWUsImRhdGFTb3VyY2UiOiJBbGxVU0V0ZiIsImJsb2NrU2l6ZSI6InZvbHVtZSIsImJsb2NrQ29sb3IiOiJjaGFuZ2UiLCJncm91cGluZyI6ImFzc2V0X2NsYXNzIiwiaGFzVG9wQmFyIjpmYWxzZSwiaXNEYXRhU2V0RW5hYmxlZCI6ZmFsc2UsImlzWm9vbUVuYWJsZWQiOnRydWUsImhhc1N5bWJvbFRvb2x0aXAiOnRydWUsInN5bWJvbFVybCI6IiIsImlzTW9ub1NpemUiOmZhbHNlfX0nKQo7dmFyIHIsbzshZnVuY3Rpb24odCl7bGV0IGU7IWZ1bmN0aW9uKHQpe3QuU2V0U3ltYm9sPSJzZXQtc3ltYm9sIix0LlNldEludGVydmFsPSJzZXQtaW50ZXJ2YWwifShlPXQuTmFtZXN8fCh0Lk5hbWVzPXt9KSl9KHJ8fChyPXt9KSksZnVuY3Rpb24odCl7bGV0IGU7IWZ1bmN0aW9uKHQpe3QuU3ltYm9sQ2xpY2s9InR2LXdpZGdldC1zeW1ib2wtY2xpY2siLHQuV2lkZ2V0TG9hZD0idHYtd2lkZ2V0LWxvYWQiLHQuV2lkZ2V0UmVhZHk9InR2LXdpZGdldC1yZWFkeSIsdC5SZXNpemVJZnJhbWU9InR2LXdpZGdldC1yZXNpemUtaWZyYW1lIix0Lk5vRGF0YT0idHYtd2lkZ2V0LW5vLWRhdGEifShlPXQuTmFtZXN8fCh0Lk5hbWVzPXt9KSl9KG98fChvPXt9KSk7Y29uc3Qgcz0iX19GQUlMX18iLG49Il9fTkhUVFBfXyIsYT1uZXcgUmVnRXhwKCJeaHR0cChzKT86KC8vKT8iKTtmdW5jdGlvbiBsKHQ9bG9jYXRpb24uaHJlZil7Y29uc3QgZT1mdW5jdGlvbih0KXt0cnl7Y29uc3QgZT1uZXcgVVJMKHQpO3JldHVybiBhLnRlc3QoZS5wcm90b2NvbCk/bnVsbDpufWNhdGNoKHQpe3JldHVybiBzfX0odCk7cmV0dXJuIGV8fHQucmVwbGFjZShhLCIiKX1jb25zdCBoPXt3aWRnZXRIb3N0OiJodHRwczovL3d3dy50cmFkaW5ndmlldy13aWRnZXQuY29tIixlbnY6IkJBVFRMRSJ9O2NvbnN0IGM9WyJsb2NhbGUiLCJzeW1ib2wiLCJtYXJrZXQiXTtjbGFzcyBke2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NvcHlyaWdodENvbnRhaW5lcj1udWxsO2NvbnN0IGU9dD8/dGhpcy5fZ2V0U2NyaXB0SW5mbygpO2UmJnRoaXMuX3JlcGxhY2VTY3JpcHQoZSl9aGFzQ29weXJpZ2h0KCl7cmV0dXJuISF0aGlzLl9jb3B5cmlnaHRDb250YWluZXJ9Z2V0IHdpZGdldElkKCl7dGhyb3cgbmV3IEVycm9yKCJNZXRob2QgbXVzdCBiZSBvdmVycmlkZGVuIil9d2lkZ2V0VXRtTmFtZSgpe3JldHVybiB0aGlzLndpZGdldElkfWdldCBkZWZhdWx0U2V0dGluZ3MoKXtyZXR1cm4gaVt0aGlzLndpZGdldElkXX1nZXQgcHJvcGVydGllc1RvV29ya1dpdGgoKXtyZXR1cm5bXX1nZXQgdXNlUGFyYW1zRm9yQ29ubmVjdFNvY2tldCgpe3JldHVybiExfWdldCB1c2VTbm93cGxvd1BhZ2VWaWV3KCl7cmV0dXJuITF9dXNlUXVlcnlTdHJpbmdQYXJhbWV0ZXJzKHQpe3JldHVybnt9fWZpbHRlclJhd1NldHRpbmdzKHQpe2NvbnN0IGU9e30saT17Li4udCwuLi50aGlzLnVzZVF1ZXJ5U3RyaW5nUGFyYW1ldGVycyh0KX0scj1PYmplY3Qua2V5cyhpKSxvPW5ldyBTZXQodGhpcy5wcm9wZXJ0aWVzVG9Xb3JrV2l0aCk7cmV0dXJuIHIuZm9yRWFjaCgodD0+e28uaGFzKHQpJiYoZVt0XT1pW3RdKX0pKSxlfWdldCBzaG91bGRMaXN0ZW5Ub0lmcmFtZVJlc2l6ZSgpe3JldHVybiEwfWdldCBwcm9wZXJ0aWVzVG9Ta2lwSW5IYXNoKCl7cmV0dXJuWyJjdXN0b21lciIsImxvY2FsZSJdfWdldCBwcm9wZXJ0aWVzVG9BZGRUb0dldFBhcmFtcygpe3JldHVyblsibG9jYWxlIl19c2hvdWxkQWRkQ29weXJpZ2h0U3R5bGVzKCl7cmV0dXJuITB9X2RlZmF1bHRXaWR0aCgpe31fZGVmYXVsdEhlaWdodCgpe31fZ2V0U2NyaXB0SW5mbygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3VycmVudFNjcmlwdDtpZighdHx8IXQuc3JjKXJldHVybiBjb25zb2xlLmVycm9yKCJDb3VsZCBub3Qgc2VsZi1yZXBsYWNlIHRoZSBzY3JpcHQsIHdpZGdldCBlbWJlZGRpbmcgaGFzIGJlZW4gYWJvcnRlZCIpLG51bGw7cmV0dXJue3NjcmlwdFVSTDpmdW5jdGlvbih0KXtjb25zdCBlPW5ldyBVUkwodCxkb2N1bWVudC5iYXNlVVJJKTtyZXR1cm57aG9zdDplLmhvc3QscGF0aG5hbWU6ZS5wYXRobmFtZSxocmVmOmUuaHJlZixwcm90b2NvbDplLnByb3RvY29sfX0odC5zcmMpLHNjcmlwdEVsZW1lbnQ6dCxpZDp0LmlkLHJhd1NldHRpbmdzOnRoaXMuX3NjcmlwdENvbnRlbnRUb0pTT04odCksb3ZlcnJpZGVIb3N0OnQuZ2V0QXR0cmlidXRlKCJvdmVycmlkZS1ob3N0Iil9fV9yZXBsYWNlU2NyaXB0KGkpe2NvbnN0e3NjcmlwdFVSTDpyLHNjcmlwdEVsZW1lbnQ6cyxyYXdTZXR0aW5nczpuLGlkOmEsb3ZlcnJpZGVIb3N0Omx9PWksYz1sfHxmdW5jdGlvbih0LGU9aCl7aWYoIkJBVFRMRSI9PT1lLmVudil7aWYod2luZG93LldJREdFVF9IT1NUKXJldHVybiB3aW5kb3cuV0lER0VUX0hPU1Q7aWYodC5ob3N0Lm1hdGNoKC9cLlx3c3RcdypcLlx3diQvaSkpcmV0dXJuYGh0dHBzOi8vJHsoaT10Lmhvc3Qscj0zLGkuc3BsaXQoIi4iKS5zbGljZSgtcikuam9pbigiLiIpKS5yZXBsYWNlKC9eYmV0YTAoPz1cLnhzdGFnaW5nXC50diQpL2ksImJldGEwLXhzdGFnaW5nIikucmVwbGFjZSgvXC4oXHcpdiQvaSwoKHQsZSk9PmAtd2lkZ2V0LiR7ZX12YCkpfWB9dmFyIGkscjtyZXR1cm4gZS53aWRnZXRIb3N0fShyKSxkPXMucGFyZW50Tm9kZTtuJiYidGltZWxpbmUiPT09dGhpcy53aWRnZXRVdG1OYW1lKCkmJihuLmxvY2FsZT0iZW4iKTtjb25zdCBnPXMubm9uY2V8fHMuZ2V0QXR0cmlidXRlKCJub25jZSIpLG09ZnVuY3Rpb24odCl7aWYobnVsbD09PXQpcmV0dXJuIG51bGw7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoIiN0cmFkaW5ndmlldy1jb3B5cmlnaHQiKSxpPXQucXVlcnlTZWxlY3RvcigiI3RyYWRpbmd2aWV3LXF1b3RlcyIpLHI9ZXx8aTtyZXR1cm4gciYmdC5yZW1vdmVDaGlsZChyKSxyfShkKSx1PWQucXVlcnlTZWxlY3RvcigiLnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQiKTt0aGlzLl9jb3B5cmlnaHRDb250YWluZXI9bXx8dTtjb25zdCBwPWQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0cmFkaW5ndmlldy13aWRnZXQtY29udGFpbmVyIik7dGhpcy5pZnJhbWVDb250YWluZXI9ZCYmcD9kOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG4mJih0aGlzLnNldHRpbmdzPXRoaXMuZmlsdGVyUmF3U2V0dGluZ3MobikpLG4mJnRoaXMuX3ZhbGlkYXRlU2V0dGluZ3MoKXx8KGNvbnNvbGUuZXJyb3IoIkludmFsaWQgc2V0dGluZ3MgcHJvdmlkZWQsIGZhbGwgYmFjayB0byBkZWZhdWx0cyIpLHRoaXMuc2V0dGluZ3M9dGhpcy5maWx0ZXJSYXdTZXR0aW5ncyh0aGlzLmRlZmF1bHRTZXR0aW5ncykpCjtjb25zdCBmPSIzMnB4Iix7d2lkdGg6dyxoZWlnaHQ6eX09dGhpcy5zZXR0aW5ncyxiPXZvaWQgMD09PXk/dm9pZCAwOmAke3l9JHtOdW1iZXIuaXNJbnRlZ2VyKHkpPyJweCI6IiJ9YCxTPXZvaWQgMD09PXc/dm9pZCAwOmAke3d9JHtOdW1iZXIuaXNJbnRlZ2VyKHcpPyJweCI6IiJ9YDtpZih2b2lkIDAhPT1TJiYodGhpcy5pZnJhbWVDb250YWluZXIuc3R5bGUud2lkdGg9Uyksdm9pZCAwIT09YiYmKHRoaXMuaWZyYW1lQ29udGFpbmVyLnN0eWxlLmhlaWdodD1iKSx0aGlzLnNob3VsZEFkZENvcHlyaWdodFN0eWxlcygpKXtjb25zdCB0PWZ1bmN0aW9uKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0LmlubmVySFRNTD1gXG5cdC50cmFkaW5ndmlldy13aWRnZXQtY29weXJpZ2h0IHtcblx0XHRmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcblx0XHRsaW5lLWhlaWdodDogMzJweCAhaW1wb3J0YW50O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDtcblx0XHQvKiBAbWl4aW4gc2YtcHJvLWRpc3BsYXktZm9udDsgKi9cblx0XHRmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnVHJlYnVjaGV0IE1TJywgUm9ib3RvLCBVYnVudHUsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1jb2xkLWdyYXktMzAwIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQgYSB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0Y29sb3I6ICR7ZVsiY29sb3ItY29sZC1ncmF5LTMwMCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQgYTp2aXNpdGVkIHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1jb2xkLWdyYXktMzAwIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCBhOmhvdmVyIC5ibHVlLXRleHQge1xuXHRcdGNvbG9yOiAke2VbImNvbG9yLWJyYW5kLWhvdmVyIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCBhOmFjdGl2ZSAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZC1hY3RpdmUiXX0gIWltcG9ydGFudDtcblx0fVxuXG5cdC50cmFkaW5ndmlldy13aWRnZXQtY29weXJpZ2h0IGE6dmlzaXRlZCAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cdGAsdH0oKTtnJiZ0LnNldEF0dHJpYnV0ZSgibm9uY2UiLGcpLHRoaXMuaWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpfWNvbnN0IHY9dGhpcy5oYXNDb3B5cmlnaHQoKT9gY2FsYygxMDAlIC0gJHtmfSlgOiIxMDAlIixDPWxvY2F0aW9uLmhvc3RuYW1lLFQ9dT8id2lkZ2V0X25ldyI6IndpZGdldCIsXz10aGlzLndpZGdldFV0bU5hbWUoKTt0aGlzLnNldHRpbmdzLnV0bV9zb3VyY2U9Qyx0aGlzLnNldHRpbmdzLnV0bV9tZWRpdW09VCx0aGlzLnNldHRpbmdzLnV0bV9jYW1wYWlnbj1fLHRoaXMuX3VwZGF0ZUNvcHlyaWdodEhyZWZQYXJhbXMoQyxULF8pO2NvbnN0IEE9dGhpcy5zZXR0aW5ncy5pZnJhbWVUaXRsZXx8YCR7dGhpcy53aWRnZXRJZC5yZXBsYWNlKCItIiwiICIpfSBUcmFkaW5nVmlldyB3aWRnZXRgLGs9dGhpcy5zZXR0aW5ncy5pZnJhbWVMYW5nfHwiZW4iO3RoaXMuaWZyYW1lPXRoaXMuX2NyZWF0ZUlmcmFtZSh2LGMsYSxBLGspLHRoaXMuX2FkZENTUEVycm9yTGlzdGVuZXIoYyksZyYmdGhpcy5pZnJhbWUuc2V0QXR0cmlidXRlKCJub25jZSIsZyk7Y29uc3QgTD10aGlzLmlmcmFtZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIudHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lcl9fd2lkZ2V0Iik7aWYoTD8odChMLnBhcmVudEVsZW1lbnQpLnJlcGxhY2VDaGlsZCh0aGlzLmlmcmFtZSxMKSxzPy5yZW1vdmUoKSk6cD8odGhpcy5pZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLHM/LnJlbW92ZSgpKToodGhpcy5pZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLGQucmVwbGFjZUNoaWxkKHRoaXMuaWZyYW1lQ29udGFpbmVyLHQocykpKSx0aGlzLnNob3VsZExpc3RlblRvSWZyYW1lUmVzaXplJiZmdW5jdGlvbih0LGUsaSl7Y29uc3Qgcj1lLmNvbnRlbnRXaW5kb3c7aWYoIXIpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIkNhbm5vdCBsaXN0ZW4gdG8gdGhlIGV2ZW50IGZyb20gdGhlIHByb3ZpZGVkIGlmcmFtZSwgY29udGVudFdpbmRvdyBpcyBub3QgYXZhaWxhYmxlIiksKCk9Pnt9O2Z1bmN0aW9uIG8oZSl7ZS5zb3VyY2UmJmUuc291cmNlPT09ciYmZS5kYXRhJiZlLmRhdGEubmFtZSYmZS5kYXRhLm5hbWU9PT10JiZpKGUuZGF0YS5kYXRhKX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbywhMSl9KG8uTmFtZXMuUmVzaXplSWZyYW1lLHRoaXMuaWZyYW1lLCh0PT57dC53aWR0aCYmKHRoaXMuaWZyYW1lLnN0eWxlLndpZHRoPXQud2lkdGgrInB4Iix0aGlzLmlmcmFtZUNvbnRhaW5lci5zdHlsZS53aWR0aD10LndpZHRoKyJweCIpLHRoaXMuaWZyYW1lLnN0eWxlLmhlaWdodD10LmhlaWdodCsicHgiLHRoaXMuaWZyYW1lQ29udGFpbmVyLnN0eWxlLmhlaWdodD10LmhlaWdodCsodGhpcy5oYXNDb3B5cmlnaHQoKT8zMjowKSsicHgifSkpLG0pe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5zdHlsZS5oZWlnaHQ9Zix0LnN0eWxlLmxpbmVIZWlnaHQ9Zix2b2lkIDAhPT1TJiYodC5zdHlsZS53aWR0aD1TKSx0LnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIix0LnN0eWxlLnZlcnRpY2FsQWxpZ249Im1pZGRsZSIsdC5pbm5lckhUTUw9bS5pbm5lckhUTUwsCnRoaXMuaWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpfX1faWZyYW1lU3JjQmFzZSh0KXtsZXQgZT1gJHt0fS9lbWJlZC13aWRnZXQvJHt0aGlzLndpZGdldElkfS9gO3JldHVybiB0aGlzLnNldHRpbmdzLmN1c3RvbWVyJiYtMSE9PXRoaXMucHJvcGVydGllc1RvU2tpcEluSGFzaC5pbmRleE9mKCJjdXN0b21lciIpJiYoZSs9YCR7dGhpcy5zZXR0aW5ncy5jdXN0b21lcn0vYCksZX1fdmFsaWRhdGVTZXR0aW5ncygpe2NvbnN0IHQ9KHQsZSk9PntpZih2b2lkIDA9PT10KXJldHVybiBlO2NvbnN0IGk9U3RyaW5nKHQpO3JldHVybi9eXGQrJC8udGVzdChpKT9wYXJzZUludChpKTovXihcZCslfGF1dG8pJC8udGVzdChpKT9pOm51bGx9LGU9dCh0aGlzLnNldHRpbmdzLndpZHRoLHRoaXMuX2RlZmF1bHRXaWR0aCgpKSxpPXQodGhpcy5zZXR0aW5ncy5oZWlnaHQsdGhpcy5fZGVmYXVsdEhlaWdodCgpKTtyZXR1cm4gbnVsbCE9PWUmJm51bGwhPT1pJiYodGhpcy5zZXR0aW5ncy53aWR0aD1lLHRoaXMuc2V0dGluZ3MuaGVpZ2h0PWksITApfV9zZXRTZXR0aW5nc1F1ZXJ5U3RyaW5nKHQpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzVG9BZGRUb0dldFBhcmFtcy5maWx0ZXIoKHQ9Pi0xIT09Yy5pbmRleE9mKHQpKSksaT1mdW5jdGlvbih0LGUpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpO2Zvcihjb25zdCByIG9mIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihpW3JdPXRbcl0pO3JldHVybiBpfSh0aGlzLnNldHRpbmdzLGUpO2Zvcihjb25zdFtlLHJdb2YgT2JqZWN0LmVudHJpZXMoaSkpdC5zZWFyY2hQYXJhbXMuYXBwZW5kKGUscil9X3NldEhhc2hTdHJpbmcodCxlKXtjb25zdCBpPXt9O2UmJihpLmZyYW1lRWxlbWVudElkPWUpLE9iamVjdC5rZXlzKHRoaXMuc2V0dGluZ3MpLmZvckVhY2goKHQ9PnstMT09PXRoaXMucHJvcGVydGllc1RvU2tpcEluSGFzaC5pbmRleE9mKHQpJiYoaVt0XT10aGlzLnNldHRpbmdzW3RdKX0pKSwodGhpcy51c2VQYXJhbXNGb3JDb25uZWN0U29ja2V0fHx0aGlzLnVzZVNub3dwbG93UGFnZVZpZXcpJiYoaVsicGFnZS11cmkiXT1sKCkpO09iamVjdC5rZXlzKGkpLmxlbmd0aD4wJiYodC5oYXNoPWVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpfV9zY3JpcHRDb250ZW50VG9KU09OKHQpe2NvbnN0IGU9dC5pbm5lckhUTUwudHJpbSgpO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcihgV2lkZ2V0IHNldHRpbmdzIHBhcnNlIGVycm9yOiAke3R9YCksbnVsbH19X2NyZWF0ZUlmcmFtZSh0LGUsaSxyLG8pe2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7aSYmKHMuaWQ9aSksdGhpcy5zZXR0aW5ncy5lbmFibGVTY3JvbGxpbmd8fHMuc2V0QXR0cmlidXRlKCJzY3JvbGxpbmciLCJubyIpLHMuc2V0QXR0cmlidXRlKCJhbGxvd3RyYW5zcGFyZW5jeSIsInRydWUiKSxzLnNldEF0dHJpYnV0ZSgiZnJhbWVib3JkZXIiLCIwIikscy5zdHlsZS51c2VyU2VsZWN0PSJub25lIixzLnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCIscy5zdHlsZS5kaXNwbGF5PSJibG9jayIscy5zdHlsZS5oZWlnaHQ9dCxzLnN0eWxlLndpZHRoPSIxMDAlIjtjb25zdCBuPW5ldyBVUkwodGhpcy5faWZyYW1lU3JjQmFzZShlKSk7cmV0dXJuIHRoaXMuX3NldFNldHRpbmdzUXVlcnlTdHJpbmcobiksdGhpcy5fc2V0SGFzaFN0cmluZyhuLGkpLHMuc2V0QXR0cmlidXRlKCJzcmMiLG4udG9TdHJpbmcoKSkscy50aXRsZT1yLHMubGFuZz1vLHN9X2FkZENTUEVycm9yTGlzdGVuZXIodCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLChlPT57ZS5ibG9ja2VkVVJJLmluY2x1ZGVzKHQpJiYodGhpcy5fdHJ5Rml4Q1NQSXNzdWVXaXRoRmFsbGJhY2sodCksY29uc29sZS53YXJuKCJQbGVhc2UgdXBkYXRlIHlvdXIgQ1NQIHJ1bGVzIHRvIGFsbG93IHRoZSB0cmFkaW5ndmlldy13aWRnZXQuY29tIG9yaWdpbiBmb3IgZnJhbWUtc3JjLiIpKX0pKX1fdHJ5Rml4Q1NQSXNzdWVXaXRoRmFsbGJhY2sodCl7Y29uc3QgZT10aGlzLmlmcmFtZS5nZXRBdHRyaWJ1dGUoInNyYyIpO2lmKGUpe2NvbnN0IGk9bmV3IFVSTChlLnJlcGxhY2UodCwiaHR0cHM6Ly9zLnRyYWRpbmd2aWV3LmNvbSIpKTt0aGlzLmlmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsaS5ocmVmKX19X3VwZGF0ZUNvcHlyaWdodEhyZWZQYXJhbXModCxlLGkpe2lmKHRoaXMuX2NvcHlyaWdodENvbnRhaW5lcil7Y29uc3Qgcj10aGlzLl9jb3B5cmlnaHRDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiYSIpO3ImJnIuZm9yRWFjaCgocj0+e2NvbnN0IG89ci5nZXRBdHRyaWJ1dGUoImhyZWYiKTtpZihvKXRyeXtjb25zdCBzPW5ldyBVUkwobyk7cy5zZWFyY2hQYXJhbXMuc2V0KCJ1dG1fc291cmNlIix0KSxzLnNlYXJjaFBhcmFtcy5zZXQoInV0bV9tZWRpdW0iLGUpLHMuc2VhcmNoUGFyYW1zLnNldCgidXRtX2NhbXBhaWduIixpKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIscy50b1N0cmluZygpKX1jYXRjaCh0KXtjb25zb2xlLmxvZyhgQ2Fubm90IHVwZGF0ZSBsaW5rIFVUTSBwYXJhbXMsIGhyZWY9IiR7b30iYCl9fSkpfX19bmV3IGNsYXNzIGV4dGVuZHMgZHtnZXQgd2lkZ2V0SWQoKXtyZXR1cm4iaG90bGlzdHMifWdldCB1c2VQYXJhbXNGb3JDb25uZWN0U29ja2V0KCl7cmV0dXJuITB9Z2V0IHByb3BlcnRpZXNUb1dvcmtXaXRoKCl7CnJldHVyblsiYmVsb3dMaW5lRmlsbENvbG9yRmFsbGluZyIsImJlbG93TGluZUZpbGxDb2xvckdyb3dpbmciLCJiZWxvd0xpbmVGaWxsQ29sb3JGYWxsaW5nQm90dG9tIiwiYmVsb3dMaW5lRmlsbENvbG9yR3Jvd2luZ0JvdHRvbSIsImNvbG9yVGhlbWUiLCJjdXN0b21lciIsImV4Y2hhbmdlIiwiZ3JpZExpbmVDb2xvciIsImhlaWdodCIsImRhdGVSYW5nZSIsImlzVHJhbnNwYXJlbnQiLCJsYXJnZUNoYXJ0VXJsIiwibG9jYWxlIiwicGxvdExpbmVDb2xvckZhbGxpbmciLCJwbG90TGluZUNvbG9yR3Jvd2luZyIsInNjYWxlRm9udENvbG9yIiwic2hvd0NoYXJ0Iiwic2hvd1N5bWJvbExvZ28iLCJzaG93RmxvYXRpbmdUb29sdGlwIiwic3ltYm9sQWN0aXZlQ29sb3IiLCJzeW1ib2xEZXNjcmlwdGlvbkNvbG9yIiwic3ltYm9sU2VwYXJhdG9yQ29sb3IiLCJzeW1ib2xTaG9ydE5hbWVDb2xvciIsInRpY2tlckNvbG9yRmFsbGluZyIsInRpY2tlckNvbG9yR3Jvd2luZyIsIndpZHRoIl19fX0pKCk7"}},"time_used":348,"timings":{"blocked":-1,"dns":3,"connect":1,"send":0,"wait":130,"receive":-1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/share-link/share-link.min.js?ver=3.6.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.507Z","timestamp":1785145482507,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/share-link/share-link.min.js?ver=3.6.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 3931\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":3931,"size_decoded":4147,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"3235f021a053f08a9dfb4c3964b0b021","sha1":"87f5a86b13a26842e65d603d9cd68fea6540830a","sha256":"43f1dd769974392ba320e8d7c7073953bfb6a73126bad7516b7bf79849e430cf","sha512":"fc9f66ccc9343bb3adc38b26b51daea430d7795763ed1c16e2e273c765a9fbd9ee6812000d93e7a1f3916dc75c02b1281ba8b6515cab8c8237a829d81b500e50","ssdeep":"","tlshash":"6b81fea779a5942742037035905f7518b333404b8d8aec45ba5cbaa11f684bf76fdb8c","first_seen":"2023-03-12T11:49:12Z","last_seen":"2026-07-27T10:21:19.746325Z","times_seen":39,"resource_available":true,"data":"KGZ1bmN0aW9uKGEpIHsKICAgIHdpbmRvdy5TaGFyZUxpbmsgPSBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgdmFyIGQsIGUgPSB7fSwKICAgICAgICAgICAgZiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHZhciBiID0gYS5zdWJzdHIoMCwgZS5jbGFzc1ByZWZpeExlbmd0aCk7CiAgICAgICAgICAgICAgICByZXR1cm4gYiA9PT0gZS5jbGFzc1ByZWZpeCA/IGEuc3Vic3RyKGUuY2xhc3NQcmVmaXhMZW5ndGgpIDogbnVsbAogICAgICAgICAgICB9LAogICAgICAgICAgICBnID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgZC5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBoKGEpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBoID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgdmFyIGIgPSAiIjsKICAgICAgICAgICAgICAgIGlmIChlLndpZHRoICYmIGUuaGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBzY3JlZW4ud2lkdGggLyAyIC0gZS53aWR0aCAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBzY3JlZW4uaGVpZ2h0IC8gMiAtIGUuaGVpZ2h0IC8gMjsKICAgICAgICAgICAgICAgICAgICBiID0gInRvb2xiYXI9MCxzdGF0dXM9MCx3aWR0aD0iICsgZS53aWR0aCArICIsaGVpZ2h0PSIgKyBlLmhlaWdodCArICIsdG9wPSIgKyBkICsgIixsZWZ0PSIgKyBjCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgZiA9IFNoYXJlTGluay5nZXROZXR3b3JrTGluayhhLCBlKSwKICAgICAgICAgICAgICAgICAgICBnID0gL15odHRwcz86XC9cLy8udGVzdChmKSwKICAgICAgICAgICAgICAgICAgICBoID0gZyA/ICIiIDogIl9zZWxmIjsKICAgICAgICAgICAgICAgIG9wZW4oZiwgaCwgYikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYS5lYWNoKGIuY2xhc3NMaXN0LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGYodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHJldHVybiBnKGEpLCAhMQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYS5leHRlbmQoZSwgU2hhcmVMaW5rLmRlZmF1bHRTZXR0aW5ncywgYyksIFsidGl0bGUiLCAidGV4dCJdLmZvckVhY2goZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGVbYV0gPSBlW2FdLnJlcGxhY2UoIiMiLCAiIikKICAgICAgICAgICAgICAgIH0pLCBlLmNsYXNzUHJlZml4TGVuZ3RoID0gZS5jbGFzc1ByZWZpeC5sZW5ndGgKICAgICAgICAgICAgfSwKICAgICAgICAgICAgayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZCA9IGEoYikKICAgICAgICAgICAgfTsKICAgICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGooKSwgaygpLCBpKCkKICAgICAgICB9KSgpCiAgICB9LCBTaGFyZUxpbmsubmV0d29ya1RlbXBsYXRlcyA9IHsKICAgICAgICB0d2l0dGVyOiAiaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/dGV4dD17dGV4dH1ceDIwe3VybH0iLAogICAgICAgIHBpbnRlcmVzdDogImh0dHBzOi8vd3d3LnBpbnRlcmVzdC5jb20vcGluL2NyZWF0ZS9idXR0b24vP3VybD17dXJsfSZtZWRpYT17aW1hZ2V9IiwKICAgICAgICBmYWNlYm9vazogImh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZXIucGhwP3U9e3VybH0iLAogICAgICAgIHZrOiAiaHR0cHM6Ly92a29udGFrdGUucnUvc2hhcmUucGhwP3VybD17dXJsfSZ0aXRsZT17dGl0bGV9JmRlc2NyaXB0aW9uPXt0ZXh0fSZpbWFnZT17aW1hZ2V9IiwKICAgICAgICBsaW5rZWRpbjogImh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9zaGFyZUFydGljbGU/bWluaT10cnVlJnVybD17dXJsfSZ0aXRsZT17dGl0bGV9JnN1bW1hcnk9e3RleHR9JnNvdXJjZT17dXJsfSIsCiAgICAgICAgb2Rub2tsYXNzbmlraTogImh0dHBzOi8vY29ubmVjdC5vay5ydS9vZmZlcj91cmw9e3VybH0mdGl0bGU9e3RpdGxlfSZpbWFnZVVybD17aW1hZ2V9IiwKICAgICAgICB0dW1ibHI6ICJodHRwczovL3R1bWJsci5jb20vc2hhcmUvbGluaz91cmw9e3VybH0iLAogICAgICAgIGdvb2dsZTogImh0dHBzOi8vcGx1cy5nb29nbGUuY29tL3NoYXJlP3VybD17dXJsfSIsCiAgICAgICAgZGlnZzogImh0dHBzOi8vZGlnZy5jb20vc3VibWl0P3VybD17dXJsfSIsCiAgICAgICAgcmVkZGl0OiAiaHR0cHM6Ly9yZWRkaXQuY29tL3N1Ym1pdD91cmw9e3VybH0mdGl0bGU9e3RpdGxlfSIsCiAgICAgICAgc3R1bWJsZXVwb246ICJodHRwczovL3d3dy5zdHVtYmxldXBvbi5jb20vc3VibWl0P3VybD17dXJsfSIsCiAgICAgICAgcG9ja2V0OiAiaHR0cHM6Ly9nZXRwb2NrZXQuY29tL2VkaXQ/dXJsPXt1cmx9IiwKICAgICAgICB3aGF0c2FwcDogImh0dHBzOi8vYXBpLndoYXRzYXBwLmNvbS9zZW5kP3RleHQ9Knt0aXRsZX0qXG57dGV4dH1cbnt1cmx9IiwKICAgICAgICB4aW5nOiAiaHR0cHM6Ly93d3cueGluZy5jb20vYXBwL3VzZXI/b3A9c2hhcmUmdXJsPXt1cmx9IiwKICAgICAgICBwcmludDogImphdmFzY3JpcHQ6cHJpbnQoKSIsCiAgICAgICAgZW1haWw6ICJtYWlsdG86P3N1YmplY3Q9e3RpdGxlfSZib2R5PXt0ZXh0fVxue3VybH0iLAogICAgICAgIHRlbGVncmFtOiAiaHR0cHM6Ly90ZWxlZ3JhbS5tZS9zaGFyZS91cmw/dXJsPXt1cmx9JnRleHQ9e3RleHR9IiwKICAgICAgICBza3lwZTogImh0dHBzOi8vd2ViLnNreXBlLmNvbS9zaGFyZT91cmw9e3VybH0iCiAgICB9LCBTaGFyZUxpbmsuZGVmYXVsdFNldHRpbmdzID0gewogICAgICAgIHRpdGxlOiAiIiwKICAgICAgICB0ZXh0OiAiIiwKICAgICAgICBpbWFnZTogIiIsCiAgICAgICAgdXJsOiBsb2NhdGlvbi5ocmVmLAogICAgICAgIGNsYXNzUHJlZml4OiAic18iLAogICAgICAgIHdpZHRoOiA2NDAsCiAgICAgICAgaGVpZ2h0OiA0ODAKICAgIH0sIFNoYXJlTGluay5nZXROZXR3b3JrTGluayA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICB2YXIgYyA9IFNoYXJlTGluay5uZXR3b3JrVGVtcGxhdGVzW2FdLnJlcGxhY2UoL3soW159XSspfS9nLCBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgIHJldHVybiBiW2NdIHx8ICIiCiAgICAgICAgfSk7CiAgICAgICAgaWYgKCJlbWFpbCIgPT09IGEpIHsKICAgICAgICAgICAgaWYgKC0xIDwgYi50aXRsZS5pbmRleE9mKCImIikgfHwgLTEgPCBiLnRleHQuaW5kZXhPZigiJiIpKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IHsKICAgICAgICAgICAgICAgICAgICB0ZXh0OiBiLnRleHQucmVwbGFjZSgvJi9nLCAiJTI2IiksCiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGIudGl0bGUucmVwbGFjZSgvJi9nLCAiJTI2IiksCiAgICAgICAgICAgICAgICAgICAgdXJsOiBiLnVybAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGMgPSBTaGFyZUxpbmsubmV0d29ya1RlbXBsYXRlc1thXS5yZXBsYWNlKC97KFtefV0rKX0vZywgZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkW2JdCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBjLmluZGV4T2YoIj9zdWJqZWN0PSZib2R5IikgJiYgKGMgPSBjLnJlcGxhY2UoInN1YmplY3Q9JiIsICIiKSksIGMKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGMKICAgIH0sIGEuZm4uc2hhcmVMaW5rID0gZnVuY3Rpb24oYikgewogICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGEodGhpcykuZGF0YSgic2hhcmVMaW5rIiwgbmV3IFNoYXJlTGluayh0aGlzLCBiKSkKICAgICAgICB9KQogICAgfQp9KShqUXVlcnkpOw=="}},"time_used":1285,"timings":{"blocked":1173,"dns":0,"connect":0,"send":0,"wait":112,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/nunito/v32/XRXV3I6Li01BKofINeaB.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.905Z","timestamp":1785145485905,"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/nunito/v32/XRXV3I6Li01BKofINeaB.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://betaroi.ltd\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: 39128\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 10:29:09 GMT\r\nexpires: Sat, 24 Jul 2027 10:29:09 GMT\r\ncache-control: public, max-age=31536000\r\nage: 256536\r\nlast-modified: Mon, 15 Sep 2025 17:03:34 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":39128,"size_decoded":39941,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 39128, version 1.0","md5":"166202cc391c71a57730bed12cbcb159","sha1":"76388dbfe374be06fdc6f9ba38d3f4e479025eeb","sha256":"ba344451eab25b217a165363b1982048a5e5830a0daf36577973955a04cac793","sha512":"9f4d1c14aa729e837b964898a1dd27e99ff674256c43326aa982cc0c17fa8b0d71a0b7df627f03cb4ac6ec7f22f0a19d65302743ff09187ce81414dde74c43e2","ssdeep":"768:lxbc6Qon+A9wOfdj2rELqjOmaLqLqKeI+00t0xIj:layndm0j2cqjOmGq+tbUIj","tlshash":"d9030284fd6a02d8c7fc1f6ef25a9f28272c2078440b6a9c44a79a6bd5975f84dd3330","first_seen":"2025-09-17T01:48:11.920934Z","last_seen":"2026-07-27T14:15:49.505533Z","times_seen":40913,"resource_available":false,"data":"d09GMgABAAAAAJjYABQAAAABUqwAAJhmAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoQAG/5SHIouP0hWQVKGVgZgP1NUQVSBKicyAIUqL3QRCAqBt3iBjzgLhEoAMIKrKAE2AiQDiRAEIAWIAAeMGwwHW8M6cUCmw4KLu9ebVfX4cMz/iBWqWzo56s0yDp2XDxZwY5x2O7jfx1N/Zv//JyWVMTQtPmmh4H6POksahVxmj8GaYywIM8RRiBzq/YwaPfj5/cOVC/G/qbnF3vdpezAQtKK5dyGpXhhlCK0mZYWkQiZ6pcALkkNDb0oORTk0tCQ67V3miuZUjVrm+XHd23jx9Qpl6KgxDB02vC5Xm2huXHLElu/H9DxguifOryx9xY4jZE4leMy97zR6JjFHmFcQSYjFJE7ITI47XrsI2jqhScSamabXKLOf6/Giefk8bh0Qj82hSiRtrDjP9+f5uf259723t71tb8E2xgZjRY/siYAYRZTZWNh8ZJRF2YhZzArCL5FGof0b/VHGzB8bnp/O/1NYk5ubpCaRWkwbUWsjTSppaqkKxboVaAtsXgpFpfiYIGP4BtubwRhv+/9hMjf4onvrTXVvSJFwTyQY1Zgdy4n+Iarf73l79r4PiArYE2MSCwjlSTj0iUYNKAkOT/8d4t+Zt6lFG2CzWMAikhPwEAbEv/4deKfayyALECxLloljh1oeHOEDpHq6ffwcE75x2y3FpCHHPng36wfvlqWGeBEPDSZBQxCtQM3k9POeiH6duq63NF02ly9e+sSAOxRAwKBuZiJy9kS0MDPEPEYJlVAd3N++f9++Lcwt9PCMZvIzJnJFhtiQIStDftRZ3xOQJRnjhIc+MLXXAlUERZvxh/K65uq7CpAHdzeZgFmCz/3CpqWB8gq3cIy4MzFrIv43aeXqGmvz03fVfxGRqCywWTXiBdB3nn+5gqZz78f38hfy7GyP2GI55cCJ/8upzcRJ4Y9UlDRFAkEaB2iZ3It1XHmXBSU2rwNkoCAq8uvpusPntE8ZQoOZz7RFplu7x6JKdFrmYQoZEseWQYhPzAPvaZ9R7nb3RP0paQp6SjuAlQbmQSZ4OPa+H9HUrbGZJugB+oqggLHBnENOWQD/VzazdPu62oA7J4P0qDVj+shB+kkizWq1NxqNZaDdORlYJ8OBiUQ+fIYQAGX5ASgEDB3kDp+zHCgIgs+jDyP6+1K1rg2Jj4LzJ51+b/zc+Dmx5a25hxSOPhw3NkC02IAoTQNU+A2K1gckqhpQqAYlulrQcGsIQoGyvGVp6YmaAA8nhPwAka4PyPK00g4mc0JMsjbFcNx82tt1j3u5rpX7+TbJigKhrKpXeSlcaHqFjyQB7UnV3haQhAsOIXR204nOdaxqcPYtHrhckPnE450uxMi3wOoAiLLCj/p3zrEMuXLRdvYv3boXiCGTmcL/2/Xy5OVl45sF601F54CNcT//G1+qFmTB+hdaMKxw4X8z0fdl6aWHhTGkhBBEZMf5zrdynrQ97sxeIQRjhFGNMMIYrxvCkB5fQ/7qe37//zr9+Jn7PM+x1ahRFVUVEbFE1NnWMgPB40xhVqSAlULw8dvbTLaaPdfidiEvZoXn/zG1DOzN5b3Ua4xMlSV8BBWp76ACpmtmL9hQ/2yfAimkXrLUWGHa3rnp9yU/+WERQgixFmshy4rLOTP3FQBCSABACqAOwG1cmJYYgn1liRQkInoc2Ix7gRFgekOMhUQjYkYGi5WiVzNERIpcHVLkGZWigC8yxVeWmsfmA8InnxH+DQVEaMQHIiLkiIghBgiCAfgBEMAofWcIkEAhO7wDBIUKA5qJ3ABNBmhkrlYijZLeiwjAhrU2b7dlp607dQKAAaAY+tOV0+sf7ckjY2HhDuP/O/x/eBadxZfJdXonW+VB4UhEE5bynBfCKBUMEC5dJ48pZsTey5xKFnAtrAhFJGK4KWOkjcyizSBDZ7E5bB5fwBfxLjFLdIkeeYw8Ts1SJ6iTtEXbtMMYdZkASFkIOYueTc2m5ZByLpSey8hl5rHy2HmcfOaJW8ArLCoUFApxYrykiF6kKlaX6ksNZcYyE4lOUpHMVBfNQ387AsHFv++EKCkVyHr1AqegsbG2pUCxu/IkNFRrQfc0ywzCR8GABSJAJFpc9dcAOadXhgJyrkBLAzlIAGC3i6zGxOVvQwPkt9ciQLgqzyUgB0i2SuF+AapMDYzLkQQEQIAzSJLp57DdoiCZ0XlE4xFVWxOAOHnSDZYQfv/kWh0iYOt8dDBAPcYgvnDg9nAGvHee6G319Fw6ShxFt14ApqUFlb1ttgL2zOPfAM3h/jK0kgrruFD//lFf2n+YnEZ+dDEKzROAA/eK1lI4DCI/A2AAEKAIELFnw7yzBJQ1mHMP8bmq82akdt4EtBRZMBPpQh48benrAAPr9EvISeSSJ7O3YyMyivQhdUgJzqciCZeWhYQQ//zU/YToR1xDXEGcQbyO2IXYgHjpUvoMog+RQETyeh6ECaFA8BFUBIFLyUJA2cJcf/xbb9t40nX38nOP3bNqYev8ZGthDM3FNTu04eEd2PfOrmXnHLPHrVJab3zb3ATfvZaCV62a//mhtBUAEH/Pa0B8Ny/sNt13W+cKzY7NntkypbNyFszrmc6lZc6wSRiKAPNvPc/RjGwYAvDvfdUXvdnWnuux1nZtF3Vmx+PI6R1Sc8Nqqr7SYvTpsvGv9OdZvzd+KevhgqX5899B8P299L8vt/8WWcbzLB6YKjZ57996EyJw/B8gzpmlnf4Zux6ys6hTeEv/R7ZZG+CH19nHFtBSJD3FSJMQVfFrXhLvDgFuJiGuAN9wgMxGQa3C2NkfIOgj/uANbrPZABrob4qZPoVqpE+pk8xC+pDE0gm10um8irJIzj0tZ57fBRGfUzZ8nGAPmXgXYisNU6mUEMkzea2vLwh57rWTDylTh1TKXxdB0DVQV69aMp1/aw3GxXkwC0EON/pXa4KQ1kM8tWftbyYHgevuFW1x4bQdbOFCw0ZhtcSJ7qnClDwlh8dMAwLv/Hduy8v3hK3nhcBnb/tfyxcOq0Mp8tlnQFDqdHg3r1cAfnMAwLM7EPdQ/2ue8D0FPAk2OUXYWDuTHDWgMhhmta1N13lMq0TkhCor+S6Ny04Bfy229MxKRy+Rxx+7y6BZJG/nQYD7AND/vXlnU35yFEehoFzwE7Wf/PvAfBtk2eMHmPBEPosFZ/jAosXz3J8hPSWdHSLO+78mWxVMY/ut/3jA3XlneZULaHh+fYqgD8DfTxebMbFdnImfcEI0Q5MTX3e7zsiSJsd7alYOQFii4zpUzPGw6xrsTYhuviWFnvEaUQ80ZqFBTK2h5XMEgH+U0xzPwCu6k1oKginFpHbVhc22fdfNr+cmlz4Av/G9eWe5la79xCFuM0PELUpxM7UEqPRDIXyR2zj30OHOD5Sg4xJn1GmWPuD3KkGGzzAcxoHYx2xUoAWDMnl4vu8vQQSw6Wkmsn1UOVJL15KRJoBTBgAShYBsvij0zcGJKBT9rVAG48KL/4CB530BE+D/me/3EC3AdKGXRcN8MT3TXfRKpasc6aMGQ263P8c/9WSRksR1L+TMh2+66dRuRfmts08hzKS0jClNlnh60cs1FbdaOCSjfNQ0IxvNu8vmUz+XoGuuO9NOe4akL61zxMMB7f+vt03fvI8C+CbvE9D/rG/ODvX0c/Ud6sswTeN8ws2e8bhlcPUkbcW4lyXv1r/aX5vg7jfrJb56qPjgQ/nl0xdk+NfmKjdFhX+FH3i30qTl3sA/544+6lFoFN6OvCWkLPN/Jv9eXssL7jlg7A3wv29OzSn+Al1vZKk+XOh6xrmOrT6eRs2R9T6VtHo8fq8ZhmkyJynPw1H7CtlkGjn+Wxf+1x6osXjKEoR61+xcLWXOybaoe7M7v8N6T5fyms+5aHlukBlpw7Oz4Q3JGrbtmc8UJzL4GknWlVGXtQO6052cJPf1UfHop3865jw/PKRZvOHd2BFy7N1lr5akCu3Afby/NbSZDtegzHhSeLYWjWHJH/3ILOXUdUd91YXGmYgGrOwhKGNyr03YZIYm9O5zUI6z+OwddYE6Jxwqrn1wUB7Tkwx7h0wyJLib6Mc1Euec9HQ+coizHNBPZo+W3+8h4tj969t42NafNeca9Svwxklrv4+lNJp4Zb58L2O/+Q6e8RW1mHliOwMpa878stFKa3rd1bSQuadHsk13K57NMlRWrk27QVbPGc87Z2rpHqvEqlDjb736S1GeM68uT0KvcwjFgqQd+0uP5ue2ifr16+/YGJyMRHPDDGGPg45Zx94MAzJmXJnVVDWOE24L0rPcopJforHiDq96FYvuNUmaiaQ43719wY3LfZIx5apcJcoojYkk4UAby0ZbC1q4l3PLgprgW0hJ6+cH1eqzxIRC5670vV3TNGW+FrZt1BFeuvxFDVZyLGw9oLBvywQW5XtA8DPt074rxDO3p2nfrsmgB/R0crv4qE6UOzXSP1cYI8u4Pl3WiLsXZ+AcI/pEqkryLTuftGq10bK4t1035jHYbCqM4oMhaYw3l3pYDt0uL6+1uEdTw4ZDddIfbz19b9TIFTBzcvFvrB4/I++yo/kxykYcYLy0fC17U/jURAb4M8IKidvu1VebPKykQ738MLjir4Ev+MxPw9zYUkAShVokfs0L2dxy2CX9N+ViRKwcXSJ0GKwPV5HwhnRS/PISLMsAMiDHS3H63Q3PTN+B1bBHs+VhKKMmzvXBqMD2pXEQb4Ir7jo0KjVlzxXEyLQOc3OL8NFJWfVfBiMf7vRohWabV5DekfhN3vuZny9/yBf85yask9FkqvXay2Ldcegj2JM9NQmrtyMpE2eSdWqehQ1kRk+8sgZM1i+LESZL3bdUTtYEvXX6BvSRszDVL6G8Pbw1MlEPhb0LxQQKeQ36eowh5DrLlap1A3kjfZ4jX+5SCpczBKepcuzH6MO9KN7RvioEeB/TLkKhKURyFXMn/SRMlaVyzi2EKnfyKpEpkvYfSdqnL+rY/22EvGmJnlEUS9EJ6x7LEElw/iX7mwz0GrXdyR4bj4uTrZEDbd70T6DwDOcOfBRS4wMyyoIbIYA74GKifV3WLnnK5UrO6tb+JDlnWouO31Mn0aV/hCE5LJG+lCt128Fclc6sftTkyDT5w3ni4GdJeiIJGoWjVMnNbh9WyZFzxyYZF26FdeZKT1D2pqdXqr32cP1m40xJa6cBzzXstykDRLOAc4TlqCcuJa3IZr+vTyRPgXYS6ZrI89wWXuRHcEDrtjXxlec5Z6IP6cGtneEjc2fHI6xvHGmYy8k7/jDXzHz8WX4EuEPvj3KgN0uYI/7Iu9V5O/cD/qeM0v33cQWkIyjI1e4uR9GHLZcVCmR4ZPjZtd8rFqdH5chdnvA+IeEqcyMvrkRs5kQmcF/hTAat8qjjvniKtC9Yc/RlqYpdR5t73inwaY2ziPpgm2rW0w7BHQmCQft5F4OyOF5+OWeSX6Z8EKrptOhju/eXUA024sbCOTmAlQmye3kqZ8v84znPXo8K8dYc6XepI6CHrB0cN8CLK650pHSqDW3uEV67MD8EqdTl4ocGL1dQo57O3VqO93LsErBe4c2FHYwnyXWmCI5wPGNyOUcxiMDM2PGlPKZELI2SujXwFuOLqAGywSvT3dWm6TW54y9T7l3ML7l3T2xDR+zLtV60TnZsirKxR3JroTlECV7ZW7rFfX4ZvO/uu3LvHomiPHjP7SdRGeu2PHvUxVDUQXeaC/OwkzNkSVN6m2L7uReLNuBEaJNxAiWOAX1sYzyICIKDiTT5nLmT2JV/+PX2T46oabBPcF/miOYMDoHLGJ3HyLAvbR0oy9Rp9CB9Z4ua2/t4lwaW0U7rlQqinP/1ziRqggfP3313sa7VimxT8bJFsycrwDogPczfGfeoVT3TE1zPkhoYKImerCHHir/JQ0rhW5Oti6M+optnss927EK9o086BfrLVKn+vtRvf/eJF62F1wd5Kv+fXuFrRk+5n7C/smhB2Lvbl8ajgJni3i/vJHisGrRzJ3Va98I5TysDvxWFWtKnHPQ+M5Gavvx7RKPc/XmNJie+/688/fnrnsezP/CzA3fr56oLRmKJMBovGTHnsWdfjzZHPz12ZFwn9iHsHXZeB3xLhm9Z7idktvscV+AN3py7c7bqMBdLZ+0xfsEVggTuMlp1u5pcoezB+RpetpulJ+wwbtErl0rg+Slp+Zn60m+HvQu2ACG3oUlW7mij6GdhV3seh2zEjniHn9uGqdAYtul7R2IOzOOdPV+TdYu4R0RjIsmfw9XAf6CA9+4dfVh3iiptTACJXaKFXI6PQk9bYo29VtjhiBJWV5Rr0GiTZq22aNepTrdHdnviO/XeeusCDN0LsBGYfS9qSiU30KpNIxNcp5Ixk2Rq0bhM46nCJBEyJIZvQI0KbFajnGw4xJQUfDSEVIpOQeilIIWUkma7AoFA86zfoRhGHAXOF7V2EnPJVa5jiHABEqbDNx3gfH+837QMCcGSQ8j+HCRoYjFHXjVX8RchYCGLvgIv4I83vBgGIGck12abOuZJQipQl5Ny58GbD6EJA8yXUQmRkVJRBip5hnIk7czlg1AwPkHPiwmh/bjFAlPypDm0bbmy79AUpugp7ESKwhW9OfZyjYqBZG2NKEPxYWJTKQElBqBmvoTMmaotrhc+OswJmeKQFwI6QLYmMVDDAffImHHgBw4jwwoltxZ8AlH4lpgbsByQPI8LOBpePjlnEi4CYzkXQYKFiyAy4a8NIwUAECHjQgcuEMUylJb4eHDmoxhG/BB2c30vgbHT9idKZgJA07EEZ26FK/JXRvlpjXA4vPJEvNqzd7U6hYF1Tinn+LwQDZMUAZWCQsIiqkRVGzBo2IgFllhqo32sTjnrohatu3B0eD1wc8tGSVEAWHAOjwGgiqYwgBYggMQsUtOOuihFwZJ9zZHtq/OkCmjSTe0bAmpboSQAMvlfMICVGMQQhPUokVXGgNXYip24tHaeyF0vilTYQi0HpmI6ZmAmZmE2jsGxOAvn4erXc4HGJlcwKrTxVK7jgl1G78ExuoE38ZaF+d0LOBjJP5+nM/RkQcAUq7CBXRFMjXIbeBNvRUA9BiGG8SjBfMzHfMzHfMzHfMzHfMzHfMyH/Eoyec5LlnQR+I6ex6GcpAFZBjJIxWixVCymYvSGAIzayO6mxxEaecJU81d/NgSI21ZIKOi9p5aXivvrcaAJ5Ai2zYuPjiYO9AmbPKT7oTPaN7PLGCoWcE5jdQGUlzs8o3EVTP93Bs8DBleYBEHrCscKqFww1zRxzVYNgDkaEykA0shFHjg0JbBExAzCBPHeKV5fxrErnZAZbF9PlIkt32dbcjPMyoXEPdKE6NVk1hZxAhSy3xDJlIYTeFhKFQ4TB9s3T6HIASukTgMogngs5OC8mEZGf+WcfgrXXqmMtQDnTntzrMWzpGpajvQRiGvpfMxd/P1M0j3SKcqkcLbCVoCEc8qRUcIPmLHdtOU+Q81pr+IjNlxBhkkGyeCQYhtciVfutiX2BGwaufQ1gGhQA3wci2MXMsg8EbayJnrKbEYqkDlL59UQjc6dY3xHyv071yejoJapxs+/B0eFRSIs2KSIW2UXbjI4DJJ9GY0UKb4I0oBDxCixOzMrvK+tuToDB30KCrKFmOszd2E/KAD/dfO/01/5geV75m49m39fiX4nSbhVZHBYYM80F/FOmThQcSSRxiGyyKOI40CO3S+FQArIct73p4AGIDepZ/MB85PPIf+G1Bi+/xFRC+TiEedOLE3USQajpE4GIEemWCNGStJePdLc+sqZ2MFN4a0RwxGlgNohzrpwjgYyplowJSF/WkSlt1BwIHbP7nBqlaku+c+0PvEP+7umiDEAjldLiEWCR2f52DIMocjx45QzkqKPrM8w3HiH50xdpngkww9IIgCmUnVkVwtzxh3qzITvx9MdsXIBIcOXCOXD5cieAYLz1BaUUkV0I4tJ+BJtKaC1zgaV39tJTB7AMKARzOAECYeniOxVuUNu/CqcUO5vUhGHWY1xvok1UFnA3XpwhwqIqVTDD2L2jAitF4tzJGqasCccKiUFd/9Vh7W8sEAKUcIYRHv83UnDKwSAXABUAGQQAADp7eBTGcCywjMrTa4xtcaLG7y00fRm67bas8f+/d484uJp757xwTkfX3T1oquX/O86PQAYAIoEUyKUMdIhukSPOklbjM+6rM9FfHR2j7om1eWm0lQ7Wk8f6ENjZGXmmjWz10sirD/BJ1IavsxMspCsZDvFQXFSPTQHzU3z0L10P2P+URxgVDBDrEpWkB1hV3Gi3GpeDb9OkBA0CpulXfI+xaCmaRWc6HPdZIXpRgH8eLMBGDpz6BhC9A9DdhFSYMa0ISEvJlP7RwLOAP2Ywrv/zwFyeUzPAHoFAKBv2gJAi4AulTiTwGtshO/5mVkd+6vGE2teH05Kw1uUZAG12gxJAQCooBtorEMmIMI4JKqZhz9wXtgH2dC/L85u2c+7f39Cmx5AlF5uDcXRgZhyEPOJ6+8PuOjd1yAaoCT9RguKjz1BK4B33wgh13lLA+DiSFlCfM/I2sbdgqkAvlohf5EK/YswCkxam9rZZ30xiCAJHmF4RrRn2ntbtU3btUO7bY/sbaFep3ZZV1jJyDxNHWUf+qa2cTAQHcEdeGfLtn7mlj3M/qkD5hL9UrAjuzPHzdo/v0r+EPmDxxmaEPwt8p9AP45+6U3c2or+F/oF9L3ob9361t/dukBZxB4jyisGQLZba9Dr2eXrYPRyap0tej7bfLXHnXPfVT9656EHWrW54menNLNqcNoZf/rdHy7ogzD4hERk5BQHCs+n4UpLz5uJL7/0q0OFFa3vL0qnRl3eaIlarCQWNg5ePv414/XFVKtRKy6pTbsOXboLRzHU7X+jLvhWh7+dcN73+v3gpe88jsoTRW577Zqn0XruL4cdibO3HrkUnUMs7jhgv4Mu4sBI3NxbCzgk6/1BSk3JiQpLx52BkSc3v/KwmlFhoognXqov7z7EfYpJSCvJKyjqFL1fbdYYASFT2B/KtKAzLDErbhIbMUTv3wDYQsJNt3TrdUMPlGs0RmS4mNkXTSfgRy3xgyU3Wc0QGhFCzBPDjwwJgJ4dflQoAPRrdnQ4AMmhdkzoGRhEY8O9WMytD6Fx4eFpPxp/ETW7RRXM/jAA3vCpaUC94BZdHwDyawbKJ6rtK3IIsKLtHYqO3e6mJpKsfKSXP0ydGCYiJwKsMytIIJbW+WXfKThZwLvIimEtl3kZiLi+Te4KBCyydTtiZ6KBTrcun3SwoxdLsqiDGceSeWdHfpyWDJKgJOofIIf+i/nEgnqk+jDg8LukUN7szRJstbptk9TIVWyWXMNfyKO8uQvY9bxDjpZSiXSz/6yVcza7kgfYbV5Vch3LzOEFvEEd+iy5gGWOsCuXyuXBm9vXKUmkG7MavluMJxWrfKYWuN+Dlm2c3SgmYUaDeLs9epyqcGZNzhb2iGA+xGbBxmdhXti9xXOGGPGLnXo9WRYVHEddm3OInbs0WeB4rws4yCZHGp/DAnY8gj4vHzlBrmJX8DXGERSOrpGKSUy4DMO+Jpndx3JifL1WOquErJSgY9oRdo1go2u8Y6sgsuZsdpUJMXBYgcI/bSY7o5adyZzXTJV+ZlnEZ/CfGF4d4usT5PXMxnRd/6x0A7sud33LZlUStRuYpTkb1ItozpbV2pIITGC5XCJwiYqS+KanYcgW8c4BOb58AasOABa0RnMcu0Axluq4Yei6KWQc0GwbWesrjxW4Jy0r4U+/jkvZwoCsLcYW3uh2Hl9tUT2f9HBeb+9Ax48uK0BlE0OSCla5DluQ+mfEuup2mu0YdjFFoLv0vQGv016lB792iMl22fY5Du8hH1k36lz90g8Mg8u7hQ9hOZFa0FS1wWU87MkS8rHO9q5PSbHEYklmuoTOZM2B7Hub6D1mtUdzzTXo9EtSQoaqKk2MAbk7bufOKtmhK0B7lOkXhtfgf245NApHN4xsl2Vy9xOrPuVXjCRD6zeQm5yeoeGjW0zTsnx8evrOUJa5d6cme5k2lKThpuN2zQB60rXyGRis40xhW94x0zA2w/cLn5qWYy4Y3Me6fjeoBHpXBVSJesSVy92vJBCcv2xSNyrj8P574F4txff0O1RGSrn9Qdi1fLqp4pyrX1nkJW1ce5x+hphRwR3BM/4Yv29Lb9MpvIGgsWanAA7bUjU9pJtsNml4K0j9ZjB5krNpehJcpcqeTtSGHGMwy70n0+pgomDuBezXqSMTe02dPQRvdi6ModnxTtQsZLfZzYG6PzRoc9WBoa2cNRbQDqshPF8AkxcCgZrMGwqOvFHUdbmgoHeJDZ5zE986sFl4Bt9VkY745Dw32KE2oS9kHfyXE0qLuzFQNrbGqr/uy7zxPgpqKi2ZI0PHysSp1bjLoP7R1YA9L3+GaEvKqWy7zs0I3ZErvr6mUgthNRz8gCBy4L0RoRSLbX1Tfl6+j5v/UKa2SHl/Na45VgvIS+QcQ+nNC2tp/XpO13u3jP15q+G1BoX1mQudc5Je4w2vrhtv6bpp0s8cWeHIxhLge0O+oKsiVGJDYARF9Qrm0swvTmFNyQUZidIU7rM0HbmixaWxpGkgRr5r1MwFudfTVrpmYug8iJzeL027kUOwugX/4OgVB88/z25NxgLpPAj4p3nk3LFA4AHyyGWFdMrhQNEydwkPmLXj95mgpWBiprA3DZBcT4itPf3NZeO7wF/ztnMBWuRQCfr9CpLfL4GyIuJVaEhEH26pHCGQlwNK0J/jo7AeqLbGzGMH1NcNabTE+YfO4Z4/xaLLW2FfGJMwpnCUPwvjiVub9BTh034M0vuTsSCzr2VdE/f5+04NRAFTTiDQX2xGfSoYMyP9Xjt8xDeF1Ul12zjyRI0GNp3ECQFlRK6TJUTUbZApWYyeVOpape4p/OExfeBuFuYHjolrWVBTPrG4u+xUhPXw+D78Max5K2ZG9KPhI2GDckV2kXosPDKIX7BNGU9klCsQG13BDz+Q8evC0pZUCL6KuWzjPYCS8BoeRH+EDm7Dpm4/U7lHjvVDV7PJrb5MBnSNuobcdkuu/4QvGXs36oi8USh0zVyU3WbPh5RYM2ze2r9pf7gwbQR/JJJMig0TPjiA4Rg7DQ0HExLB8XW4dWJv9ztsCT6f+/sxEbHY9pSgoINW/xWVEE7Gj4fkYCAvkPTFCFUko6yihbKj7FDfW4dPeLaVsjQLRqBJCkoVh3Rq3jfbqSVe3DeyZe162rD/yhElZtvBUY7extf3Tz9I9YO20jU2a2b6NCKI9coTq4q0YKP1Z+jj55i/s+3Jk86NlRGK8yVFM3FZ4mx9/wNwbQ2W3MFPTSU5zPfDT8a6XgfdH9WQOxbJNSh1XsYxVHq3YtTsOpE9v+B8f8pG3v3JIWZvdXUwvtVtPqIKL3rRrRInm4+plZ6P+XnDiyNBcftBmUrhiv4uTsfYWw8fBL2t68bcCNjxrQ6pWxt6gs6Wjdk3FL4GeLTg6CmkDbbDQ9KqG0j3U6nSrKd8hXGvzm0x9qAMGo3s0vzq8XYrKd1WspDMDlrEGZpYWwjntjzzk0Whl/hPHVYzB97027NBNxsI/1ALIHkjHYB98ajrBO92JNla4dJTsSRBArqhmUqkWfra11LBOAUZCguumyGoPLOkDvpzABjbVYqdfPAE7b8YaH/+8+dVZEbZQ2K1jXvDL8RNNMoi3UQ1/XB8XDVwawR6rdb7OZhQ5FCTtYvfv/PKdWw5KI8By//gAdJQxkmC58RveFEn0OpkDnl7c9fU0a38Dy+A/zX2NSrB48iuBFL6onDLtiVbBpNL472z6Di+6aarYTFVIf8vnuaPc9/zNiN1ciunwa7NBhv2ZoLtShuthWDapa5xrsiDniZxvrCVe+kzdG7SHsgh5y9LA+6IfGITfclTzf9JpXdCkuIjize8q68/QpYTo0vWv73BQlySq0qZgarBtGIwV2HGT4z8+ZyRNewq8Zs42RBfjO0HaN+jxGkKIF4hhvDRGizyK872jrhIacEcnxaYCoQPvVLwLm2003RtXxbyy0+wpyik/ZlMXnHvkCrlz8KaVcx3anjg4KKMdSPnHSsUulE/b6r0boiuv/XO86L1lr8dNqa9m7oGt6K2GGy6nbYOacKdUuLyllv6G8Uno3M0Al75l+KX1SbnghwzOpxM2/Y725PZI5BTtkjR7FiR+a3k6+oKS5/lbW6QGAldpbXexcK1/uFRHtGXCEE7IrWSpbB2l9IqIef6B6NfUz0uSei66LLdUkTO6sTkFxYGwUJGYqy7SCWxwhmHAYgxNNYamWwecdF1EKxTLfqSRetQbcHfr3mb+Czuq9p3WMVAyf45Ji+pG8WYeWzwSKJNDTsWJc1ebAyODRyOx9UwuTS6HowMfwVlnHNewor2KLPq8fc+dXzoREVq4f0V7UIDqVqTp5TrCwHsp5fGFobn/aa9XGW4Mtwo/VuFs7D0crJUuUQKEVRKiJt/lajUIirF26opzsSXytOOlWiDTWLUPJTVXmzo3+LLbjNvSCGnK7Xl6TPDfuKLp4NZLNX/uyeRDtASmRBokWW6Xjn3nmdTcEMY7vNGtpXCNIH7AovmUpTyYhFSuyzgQxczCQE5mDYuW7giW891X0i0UPJ3YuEwVt+B9oYbjbBGp+1lQToNUJNbRRnisE3YIu8z3h5LYjXU45DICKIuEnGD5Wd5OcP3gfJF3/+iPQDH51VXvVzlBzoQoHMsMyfTaPPRL86gQq5WGDahZ/B66imIR1l7dl6MIxnMNNzeU5MbYWc4/NB5Lgs9C9nb3TPF4ye3Kl4Zz/m2Dk8ti3xWubRBWfrZUp1nsOjjRVW5ZmJzuRe65Qy9u/mHv36o2L2NqQL+3pp7yOVlV96HzXp/xKKH5v4EMHToVirQ0tEbj7zP/73ptfTP/hNG/52fPVD56GJfxDiJz4Y4SX909ix8dbuJjwauXjxz4vU5JNvakDjq2/p9d1v7r7//75+/QOuaIpFdYIXgfczz40fjY1sDU+RXGb1hIzbNgYhEXbWD8a571HvV1TaXu9pafY/2abTGYbHW2KOfgkV0w6qQY2tPJWOZr3qg3GEaYEw0a5xrPh4aSJA0oWGH+rmm5saUryWkaiAvG/pojZPYdLyXMdBbd2bX0aMHQpzxcGQpp+Igdc7VS3O6KYOeDTMb1s4RyDF4L0qvh7tLY/UFMVa3Czapd8lpMzD0z5qmUv/1Wv3aQvAi3Tld6dzaN7JrtSxgzAUJzpkzwT3J07xseH77i7KGnG2vFR6A96FQe+Ez8D44F3IG6ofzwQAFz8Fb0cIc1qNlX8iuya0QG57W8IUBXt+Z3BrPfmHfKQix8oV5A2qn5p/L8wPcBpeZReZ07POaNTO/QMwMYWissviFqpnivTB0fWixfR5HsZQ5OSfeZ1cm0aoU0WCNQjG2moVQM1KGlECTWidQ0OxwNmrwwVMFhBLpiUetlZSUFq7MgMW4ZAt6vW+59fZzeRPCQaFGU7JVEHKXJZM70Ucoum4q7NjaXclY5q3uLbfFV4bsWyLKXO6taWylVw461M81r53ctbTi7yxNM1N7wK4jR4/tn6qDYleUO+Q62dRX+l9x9VKdHsqAZ8PMRrWR9egT8OPuwdZEwojuTwvjACp4raa6wu+H/WuuWWb1yKc4kRdv+T+/Fg1sjaQvOHcpWxnnfc/q5+tO71EqMFGSNpvq1OJQM9s2B1FbFvV9ak2fQqL2SPo/e9VYqtxIZwRQjR/X1Xg9bvPJX/cxENOCqkxX6aMmt2smrelestTW2Og1SOyqioxEdk1WLOzklNl+CjuLDZ3Ud5s0rhVpzTvryhTKMJVv5SuMBmdaIrspp95nZZaabkdxgEzBc/DKv+EGFOo4TJ7k1N+Om20GbWgkGSxlLaZt1phlw8K+kZ7e3pGFG5rtb4uqFg1rgZtCf+EoWk9n7kSi1kqLN+YXbZTuQUErcLSLY1R8AbgUfNL5YFZxEI3ao3iwuejBeqff2kq7HeHhZsZxGL0xI5Un0WjGx9it1Tm3VyvnQBlvD8byd5j5Sh/B7kFCO613xZhbYutOCFqLjXylh/8OJ2P2oBCXLD+55T+5ky+BYgqeQ9fuml8bSZ9BQq9Zf7CJfrBxjw05kZacX7umNh+Yubuc2sjpZfnH0EquQl9oDpyLRe9X8BnNc1JYOrrENVbQy6DQGjoy9tH4BpWca2LTXOV9NqleQ7flDi07O8J2NkyG81lSK6XMrWbB64PwPduKnvndpAGPaL6TwtbRJR1j+d0cCquhI30fjW9UKfgWDtUnTDoUBg3DLuCTLpLPdnnMKGNOgaHZYgW+yUWswqAkFbUP3UJp/kNJqjRzRWKPgBnVIBtruyMkW25h061dDvXgo2ARL9wTzPZnoV0NUeBDW+I2DLorIlje+4Y50di41WKIq4Tdbpeop05loIrd5YxaQ2N1l+/vR0eNsbGmC0hoc0Ir6nXJidHn/aUiqgf3jQntmP6o+fI5F5YefyHPJWiM9QaJ5y5P/2jagTZ948EBNK2Pq0Q9Lrew2z5vg6Xe+jd6aEp6gbvQf9WnmIbCBLS+XiZqsVgkLeJtZRC6yUL7m9mgK3VvhejpDfqXr1XXvrxYBFffndm22PXpNuaJw7cWChOvp3tHksUYtCcp434bvl1i9ZObJW4OI6Ssqm72id0HK6iKRRuBC21rUcq63C5ZT6PGwLMVs3BBCXY/epAyiFaTQhauWOGT0GtUqY2Jjiq6OQdny+LjKiJYHATcYS98HII+yapmmZFAPIB4sWcNgzns++HnocvGWTyJ3gtBe9Fjh/NAaaO4kfi8kaWY3FJx2ldQ7nRXepfDNxtsZmO9StRhlRDDz3nLhOYG2010r11Cnk7Wtw58LXGXM6Lq6poOn9jDZ1Rp5CN3glkpZ3YjRlOv0SlcdIpfTbYkVuJWW83u6lofIq8sgjtOI6fh9XBbRllGZomO4V6zHswODF+jdilxM6jvvzI/aXnpjxV0p52cepdOUx3ORJneKQfmfXd96DMYWosdBj8Z876eKV4Jod7Zg7o97//zwA1aa/LZi1HrAvVfXPhjJLQchT7+SfwMaBew4MLrOotuRhODWrXepTmU/nt1ol5sppN8GhV7JFad2T+xmVB5InvCOhrtNml+whjaEFeLul1yYkym95aVNx6TpyzPH3cx8Q5J6ye7NDb6/N+Vad+dnrZoljc729dd5VWFpJxmO3Y/uo/S+5uSFDRzRTK3hF6jRCRqu6IUE/R+un8La9jh3mCWPyvL0xpxBc02s67Cc/CIeQe65nVXnUpEhD3xvuDXyqb3+g22juDt07ngVqosmPsiiehxuatMu1Q/4zvytJErvMI2ccq2q4eZca0Odcl/cR4+bEcEgtYseD34neYGC58zsliT2MaYM5eqN5Wzyi7hA9nfHChnHPCUitg+/MkgWzl9pukNfR5JbRSxy9Z9HsjWpf9erq63gSU0K4T7vdHEWoMdQFpzS5VGIYvkvusv/Iub+7P8kepDAi3Gd/mjFfdA8k6725TsqeHqCGIyPXZx/PS+jGLWj16lQSem7XOVgn9EkJFaahOR/TFghX9CuRUTz8/6N+V5vF5oUufuQSGmUKmO+pct4D8R6WRQ/GoS1izFLrXdaI/GvanN7IW8nJXh8xDDrdODfxj/r+qrR+VFe2HUpPStywWnL0snYXgqTfbmqy4M+IqC0a61ryo1u5GoGcaGK7it511oNBqv2nget+WKYgUML0inz76qQsMw2rX1cvGOyyo0uI2zO23Bya9wh75YkLYbAb1u2f6f9O3/sbwOtX3rgRvZxx95l0IHv8jQ12O5BF69ilqXQTNtynnn6ii0K+dfkU2oUN3yGTCcu1yhDnF3YellTSFoHUqN2ilnW8r3pomys8I3AfyFlsaJ7EqVayKtieXL51YE/TZrxB0bzx/spJvNZbfXOas6eppbzlv8t/Yln6Z9UOK3NLNlfrnRUvd+mtjJZThFGkGolp10ubCvLpB61shkDSMyf5R5zHk0vA+di8aKnseBbw7nzetMXe/zyV2cI1R2gKYzEg3SlYSCEhrxzedK5dRBasFlxbJjDnVDuwNPzX+efDArE5qC6PPSYPCvXfQLJCOHSzJcoDth4HKi9i8s4VUrFNU8bodC0QF86MGRNw4Pize3+j1Dw68dHRJvAcRNT9Ru2L6jZrbBivXbt/sVoE7jk3tpFP98U2PahFI1MJVofAYJnUCvnNwyh90T/j8q1Sn8EVlQnpRa/DafpIrcN3SGd5KcoKGLozbEmDy/gokPSCr3f/nHspzhTTHSmgHqzkoOawI7eLW+RCL3kOgmgaPWFfP09/Z3iRxUhqVcHzC7RdVlweaPp12a5lAXU6mLMvgeKbvEdm4WtmN8tTaVKJzggV0mPoE1BvgkjLBLnPctr0PQCfS9ur4+OHVr4PXFn1ySaT/GgBit7qfdMLGdEx81HUuUiqVeFtMj8keTPnGA/qV0Nwo+BXejT8A1dB+NdkfawXqhxlArFTYYdeJEQgYMtK/LK59pryE9a443lGv5zUyamehcc645J1DKtDbaRS93dSE8smh1uVwXl0oSep2ksV5moIs8HLZPLDam3VN0mw1spxC71LLARsKk3vM3jd6LQhZKrSulM8CHdnWwZUF1Oc1p5f2MSsC6anVKaaCJZTI3sgSuZJZZv7uMsqLCdXZ1iaqd7aIlGpxud4MjUd/ogDem0RmPyH0kloFrqXOFgnGXxRL3AKADmlnyRs+2fEMZ09ZwI25ZLFaueJkNOr20IS7TajktqlZ61VuE0dveIcnxVUbLTJ421yrb1xTNwTdtwBg4VcKI+BTRfxJVgZWybGgdbK/LqZBN31nIW+4RVR5DIgZtyC5tThZqHQyamN1IKGaamP7xDQ11hlbYn1jx3SrR0BpzPokaO0cqKzbkTL4Mf4gZ/m5MM+Uvby5edXsi0VdECbFYy3hSeB0KSj9PDm8Bg3SJtbnMqOQzr37OCT/FpopOAAoP9d3H4JVIZExyPN2yG1lTyBLAa1GpeRK44XX45V+h9v+RDo9iqjF/sLl45fcT5gYi288r/5ZJeKE0+AYyvwl+PyfnE3zkzB7U3ZVl1M04Fs37N+Bd7PC11dtojQ6RuOS6sSlt1ccrSlLy1fr6qjJkjGktUdrsShr7k36WicvTw+ESPF4CLMLQZJr07SW4myZq8zt0OZRaR32zWzIDmrHJr5SyW9egph5SxG6FVmuCYsrDKdSaVrY0uYORJJyl0WaFnxDBJa6TTHZwuY5mayc4jEveCQx9hvaHaCJynlNxSLrD15qw0pocItrFEbRmsYw8rgHMoSTHXhzGSF4+8QdBS0ErzghmZFbq5qLMDDFoT0/emUlrPbwjg551pYmejrUgs+U+wdXN2Ii/H/bWe6x1N2IShv/A3sJitGlr4eWpWx4lryb98DV4EoEYKdGu7YeuvPxlOL8HuQCmZhroZsa53Dt4gVmhFoVLfRM/7IqpG/K3MpRiD5ll5JQUdubfW8LgoRYit9I6HzZOjUhvs5gUl+37ytASUBzDApj815Ksm8UGEs8sU4tjJX5Oz7t2WJdk0kNSTfmxMY+pWeV+brlXwOX6/AIRP8Ap9wnL+V4/D4wtG0hps49YnpuHfYxCPcJa2wzh2rIaBn6PDlyAMCxohxoHstpsI8Hn35JHKNgUTsgGgcyBAShqGEEMJx/9DRgU/Byn9EBuPXQhgoD/i02KhShoxbPWz4pL9hE+h+EuInHzqaIdhCdPZUU7c+OoY2EkZtEmhPNWXPrOeNlRwhU0/BynePfJkv3yOiVfneL/cQrKPdZgp5X5P/74R4AH7jBGUk5j19DOjwIgStdC1XuoAdIDX/1GAecTdBWJfBO6Ab3Z7HG8Ce8P1PwZONzSJnjKym8vv9HjzH2R9XyJVXb34jg5wURblb3KasleDaZH7J0X7oLbKr16LUmIJmqv1RZrzirq21Fec/FuhKCNd6PXmfsy83nw6jxeQCGkMCUfQXNIaB/0kYQJmHV0M3R8VEejy2vOTyXWRHBP4SLVRYj85jxdwkYOAtSeP1LIzib5oXxEUXWy8KnCZA0xNYqfYzdDm/GGXAJghnOhfRByDuJKmSnMlQwwfsc9CbnNwLjwR+lkdQrrfxHLLBsnqi5wrtJ0pS1ZuSXO9i/c28KtzX3j6s9Tgi9L06SVL0mOJfq8NttztmftWqAb16e1OzPyybyJxDFJRljTrJz/36CcB01nESNI+BH8LRra1Y6EHqEmwE/769apOnoVW5vj6s29Axs0tb1z1fEdnWHuWIVFrpBa1vW9HJXznYGaCoesP6HXyCyS55EYtyQXXoVnAZwMRc4uY+vU5B5nffil2Yqmvv0N8aNDi2NHd9f1+54un5rMOJE59e0LkhfmCzxKTote96yy3Cvl1GuNKguQ0oYaBt8hLM03vNR+36qgOuksis5M5il8Fk3ZrF5zg3D5CfM4z4ytKIL3wfB6ODerhuAtyWwZaSbuhpDLQlUtaS2DagvV0CSj5tz4bfqQtXeKoq409T0jeMLLvxHI/9H4aCuO3QSIq/Ac/KOsgsepEIs5FRU8+XnM+xhXXi48B2untHngcaMsRvzciFdOYJuu+wrYHHNRO4vD1s3VchbeWUmmkG3L3PZjxVKhK8KQCCOEJ5UcxcyZpte9BQym4Z3z4X68xMqrUxQKyfbK0UpE7ijjcg69yFzqo95ffL/EnyhiYC3BmddXhwLbade4pL5eMu5yS56pjz8jcbuNE497zu2SjMfrMRfJNMgPR/iDZjM44TCkTeYYwlrkz7HdHbWtI4lEa28t1YpfYcLJpw8P7ujBOSpiFYGKegfu6Z0Tt1elBXdbcT2919ntuXmLMO9jpvRmtUJuUenpxIlT3D7XC2hoLVW4cO5ocWTPwbxbAwIki/mbcACcdUTtg5chrQOp0HLpHnW29qTLIWjd+ehys+FZOJYxS5JMIxDTko2krFhuXpPvmYDXPRyQ/HYmel4RcLGe/rPXk+792fxC3vMy6GTdvWF2hMOJsFlJDicJ5iH0N2i054pS0AnmhZF5HZwaTl4ODb0+QLkcOonq2HiuWifqsggJIYneSb26fAHqJJT6bF6wnO7HH69kO6Zvr3jlxzKGgfhLgYtXH++uIP24fdvtaRar4nKAQD/YgZoDXstyh/+3FO9lsXHe52625LS0+EbeeuIhslguwuP1I76W4ZzJky8QvBwOwbv51EjOcHPe8IbHTgKL5Sb+/p9h/ndySUgiqJbLBdUhqU/sI0JN+P6QAPFy6CTU9b51IX08qHbOnBmsqaO6dJUkpo5Fuq0vjdZmV2WFwna5NNIo0INheZDcRqirvaSNZTVhPphnmg0RsibYHLTK9XprWm12fXaNzyKT+RNs3bz/dENzoIi2tOuMC+HwZCtyHxLai2weYQKX01Dz1ddxHI4YR7PvHIsyTlNaCFU7rrbkuAkcRZVQ3gK7kSehdRByFnrzHblb896b732vroBd8uTYUsF1EXJaru6IEsyOOjrQy+WdgJJJhY6nxbaPQ8nGDRpWZYSlFzaQBU3Y2K4zwVIfQWB32h2bTG/IeBQlR+nWuD4ZYH4dNLv/FLxXHYZP9dUjO5D3JceiyC8e0c/uQa9D0GRTc1eM3EYUvzy9/fnggvuyti1LB8/C1z7+v0T64w+D2KB92LUXBWvX1oBk5sHAlZchwFRs83d7Rc1nz7W3ZxCiO88GbbCtfdntE+nD589PZhupOuDZszSZJ5/t6bTSSOZVM154ZrJuNW//y5c+oSDr239uBBNtuPyZQiunRDEj5/rfvmbPQm3cAQS+znNkog68sse7z3L0n7HYcXnAyoNn4TmlOuZgLt7cyzd9vnHg39/hftpz7O1M/NRfNtvFGhn9IhX30u7l93PxK//84NFeB/xtd9bAl45U9oVdCd/IBa4ybE/1Z++E70SmdzbBsfE05Az107MKvS5sGJS+qtN/dBCx3qba+dUIPWRh5vyf0HVAyrVdPLoAK33+pO21cwuI1rfWuULdSTOtzlYucIa7W8xUpxaQqRGCVxHWRWWUJMGjiOABU8w4dlxMcl4PRs3M+JoE3Z5Hbr+AQFQuOjyNtwaWVN3/ZCU2fPbOgz1fPBfB8hb4eIkW+eGZQu1Fv7sQa8rMXXzTbI+WfdaidZ/cHxw9KFUeO3ryxEePKaWR0n7/kx1FVrAyXKrccVRct/FhXmo7Pg2q90YfoVCPosDgyvm4qPgjTnEJ8aPioo+J/5KQ0tL9pLJTpaWnwLaRyCmU/JfRP7ML7OBzWvCgIX8FArmuUL8pUvjijUPMgCJdfBVzYLyIsNidm20I4vb29LQzG18mEp59mknhLH21BjtJt/9kk9Eq2ubq/L6ZVYClyw+zaBD+5rNZe6sp03u3zgW3GvdTOmmtXxLGjn5yPyewxIqfPtx1gKR1jH8oXLlrUQTjjCU9/Xk8+tix7a/m5bt2XM/NYt4uLqy+FMtHTYLTk/cnrKeaM83X+92u18Z3XMjGU3LTS3Kg77dtesEggCGMn4pxZB5tgEs+LibNAcqhHGCPC0Q0Vo8LevPmqqnM3kUOp01dvZedeM7Cmj578swb0yxLhETuXV2XFgaz/wvFCN7S+GzrLyjeL63WseAZf2IOtT0DPj0btmJ90CzyqQZLKmwwi5hMiwhlSLX0z0fuK8D6wlbwCXguPzhXzdY7Qcf/fmYqB28NPDk9I6du1OF18fff9H98Fe7MhPjcGO7OBsxVW+rq/HCXT8JiE4G3U8RD3CmSDx2Yg2dtplYTR1YBbPt3GNDMAWszAXzvnI9qB5zn2KbHYp7Fw33Hzn/imN/x8qe5Gcxb+NzI4WAOci3YkfZaxoDweOEnBx5VSLYfHcZIKLqLRtZFqr5xEGDt0BJh8I9n6wP8cmBv8bN/APPcQQoA0Aid0gI2yMQSQyRhpmV6oHtEyqLA9gXgQKS36BQdMUQmXPJnHIQeXGtMjQzYJW6iy2UF34eZGCIJt4UpI06Xzbd7TxIxRCZsWc7K3cbvyb2mCXgAAZ7I3aYzLaxyzuqgvYR4PORZXuRRlm3pUmTaYf4uJx7ybF4sFTMOXPryWh/WZ+sLcfFca5Jlx4u/C5mHPMuLWXa3wVUCUsBDns2LMby81E77F6x3lS0Jfk13nzcAHnJdMw8OAABH6rEJIkxN5KQNnKkAaGJQJVVRNdXQRtpEm2lL1dZDeajU+1JQwqwqp0JSoCZvjra6sJeYJmH1zOeuOWpwmgDcF5qrwm7drSLAm3QTb9EtvBu4aw/eo3v4QD1QuXAanXzUjdn6xylxDbVf/Di+Tsv9f8PMBwfgtcmB0x8s/vHXfpU3D//nYvn13acA0QrpChZPJ2Fi8Z/Aht6N9sCcAh0ma1uLU9T3amoNbD/Q2e3ZLfDzbTGRvkOJU2RtsVha1Ap2uu+vmRVR87PbYXI9ZrXAcn7WejkzWVsulgy2Z39itcbAkhjImlqMNYL2pWHWSU+ql/PtYmZ5Tvcj6AOdpI9oL3e2D4S2T1KfP2xwnuf9SB/o5LAfZbTa7123Zf1aH3ZuvaiTBlmVZd1fytUav8gjy6irl1b0kl66UrQDaemb/TTTx1Q9hV3a5/LMQcOTMtr3pdUNskHj22XQ/uqm1sonioxuh8lRJaZt/FQzlCjMMQPAJCZkIhqd2hZAKgSJITt4Qjp4J0ZYNGnOTO0DhlHkV5T1syW2umEGs/gluXF286NVkZfTpdRd2wGqcu2ijE1GLgsFRo89NOfCx13PPrVmJaUnTSlXr+ujyRh/c1icSf1wyTIksfbMqJzrA8MrUtC9m7QfiIZsKb804GNL98w85dOzZ2m10LP2OqvNw6Q+uMil/n36v3lVX/SvAWLkGGfe/LES1qJVuratY6th2alpB9iwCYFBNCGGER8h7iB+QnKQBUgmUoWcQ/4KjYTeQ6lQF+BUuApuhxfDz8Nb4cfoMPoUBoXBYzox45g12FwsDSvHOrE12G7s02nmtMPpeen09OmM8ozZjP0ZpzM+yriT6c68lsXJ6svanHUk63zWp1kPs37P9mY/m/1lDj/n1VxMblFub+547nTu7tzjeWV5orz/5pvyDxUQCroLHhSuxgFcDq4DtxT3Em4n7it8Ff40ASYQCFzCEDGDSCUeJ75PvFkUKFpf9L/i8uINJeyS5aUppWOlZ8sMZWdJGaQI6VUynzxB/pVST9lATaOOfB59J/VN6nvU/8E3gX9oaa9EThuhnaYX0Nn0EfoFhoVxkfENfx0x21lklp+1hDXHusF6xM5ma9gt7CPsPzjPcJ/i2riT3He4n3O/5gHeAN4y3gxvH+8Ov5DP5sfKS8rvCFiCX4XrRA7RAzFPXC3uFs+Kb0rapJD0iGxI9qd8pfw1xVMKnmKB4poSrwwpX1T+oXKrFqneUBPUb6n/1FRqDmmua/7R0rS12p3av3UFuvt6n35Y/4kh31BtOGS4bhQae41XTBSTxzRsOmD6xiw2T1gQlm7L59YUa7V1q/WBTW5rtG2zHbNdtF23PbT9ZufZcXaWPWnfXgJ0UIQBD2xmAGAGGGVOKQE6gEOKMhFO3PgfWhOZ3WmlEYtIpjD2ptjYkMXkG80dcAY4PrehqbmNB0Kcxxvh61wMGqjbRzxfHJFwATxlgX9ZkvYcc5Ux7turxdpfLfLWBFjstdHtk7PV39cBC+8nS4S/qP989hIgn6u8mt+sPSf3i/S/O7+jz11UvLf+46NH4euyxfedxEjkK2voxyexAikhCTlzDNel5v7/5jFA/gumnLpoKH7BRVIxDOiektKDDbGNUP5VWzJzf10YU8q+atxSrmn/1E3TF3S6LisDskHO+0cgdV6Cph60drJC9oX5Y8nhpk1p4HuBFI/M2q9bdEYcO+L5ZIjBF9BTFvinJfEvwAMl/s63nI0bZ6qgpP+rUVCu/3HlzskKYzDn1wYbBB/bf+4BVDxjPWtpjwcs+Es5/0egal7iVe9c4nMXTt9//ElYIoj7iFrAnVYSfnzvOGo0dga9cfvRI/OrhMX3nVSSJI1DJQQhmGPKBUeuJ1tOUGZps9mocLYxJVOCT8LpFI+xtiIzBfLm86D55CcGHCklZowyhDlfSt6FhlQua6/QUsgc9MCVL4Eb3Fp9bdPhYVWJRK2f0w7/m3D1Cv/VS/+9qODyhba+eO6/gWk+D3r+6ft8cCQ0CqJEgKm2S8nPQp1FNwbad1G8f5dqYYfIolZB8NAwBaFlDEk74kGX1/tGddNDWAPbgBwllKJCqVK/iwKyc08SAAHvDs6LtOpFVIt8un37X+AsJkp7pJRuH9ELqY4auUK0SS4OOc6AWTb+CZ1FTPwzu/risN0EMLKiLXje7mc+nNuzCSogKwoUcihzwICTKtrwuBNhbFzdo6UM2JfhkrnlIVT9ZQDGaTNa7ujPG45XJyNemGs3G9mLBFAISsgsl2tNSHTOQmwmpYTIg4NDki35kAAlHRUkjxHK46sMIYdVauDWyio4XjfClW0S72+JdKKAMDRXHez+HekfzEHBZQZuOlIakIcIF/DVBCAuL5lrJSVwZuBkq7pLkW4+UC4ygROMQCxXF1wc13TiT4sPw0dV1WGzw7KsQrP8D8jOVv29RG/V1XoC4tKil3jRpV/ZPT/ncvjnD8uyCj17AAOyM0p/L9Gr7tKiuwLNSA1I/ot5gwKIlbIuT+KkaRJfLa98kXWDcODKrJCJImFgetUwxWVkHwPK5g69zTNLk2ygl48gTwSxaz05uQSEQfaPen6zkqNPzsS7ubQZVeb3F4cBcRvZrU0FFzZuL7vTNKEDdj1XVWeRYRouqXnsjlyvEdISmmusuAvEITAiTzw8w1Lp6aiYczpUfLpUR6kgElDup8/2kLZcxPD3id3b/xZmNeCQoOGh/iM9cEZVVLIT1aJoXSFKTydDjjHSKcHmZa6s3YX7JE7WEIBFVGCnEQY6ZK5dW9IU7DmHo70zo+wSpwfk4fgtpMCYM55yWyp3bx02MlLrYnNsf1C+0gLedqcv91jpB3zkHMc79079YbjtTBss0LxcZbYOSkR7WZ9AZqJccrLQrqAokMeVhBx5zSSMWOhZ91f2WYG8Kv0ea96EbUy9DOuN7uqdxX9b91T3Fl394tHMug5XN1RxLfMHWvc/6mdk9UuJib+y6V6Lq5yTjS7BCWVgvOXqOKp75hNWwLDQmKjsnh8jtJ56ctPtFgGfWKHuv1g5iCAqRZPa4+7REq8i063rLYSLO3yQU5CQqK24Phr2uK9bBNTG5nHMRUHFVcf05Kih2h7T3eqMg7hohxzjGXgTWWYnRE0MQCDA+V5S/57HfceunTeJaYwpBQIwNpWn9BM8wozcFgk6ccCCObdimFHAzGx9dDsZLDz5Fv1j8ctBVt6kH60leyZaOhtrafs8VIPQiAXw42t9O6GlnISuAHv7nS7+p/1bpEt3xvJrUZk/UKq156r40CNt3Phk9a/IckS1GJOjX4Avm2wdGFfolEMc162gHIHuYokVNrykCcjZ/HPX7PK4V/doObzUCysll9B7N/rC0Y7ttwqLP/tkAlCLEU0ktDqEOEwMIS2orK5kwGLp/E0hpnJDUTEj2kN2Lrt8No7c7xyBGqCAioRU+45D4LPxr3Z8keKiS59nyasE/u/0KPsChWWQ4GeSWlxnInogxWa1xoEo4B71gptadKPeWdSGDu4jC7cnmQTKkPq5VdA8NGDK/K70my/61LFnS2DCNHvBquL2rRTD4mqhJ598yXWJmZTDpLIfx+4uWooEDzR2qzoUP+FUVuz1ResjFnl8DXy3v3pnrZEJMjAkpPo37eZI6/uBPGZmb5/JOtS5JkWVaG/GkXvypmOiSOEnQTSxce3h1u3xIskrgZvLR99YmW2BPOT63bkjTz1ntUSRjC7nH56rb11PcoumZtvzILsXtBbeXYHii6rRIVigfY2qyWZhHtER623Nm9XCupM+xpJUF8k/tQUo4zr5OhTy4JyEK4RLYiQ72k2U/zmu1vA5l48oGnu+rvg2AvWOb5zf9MWb5xbHRvs51AvXkJQ5kInW1qiXJQfcsZXFZAPw9se+/dkXOx5Bfa/j6iTqroUyogLzf9PlUAMz0lLGUfP7XuCxwvG0+A33T4RxqOHGuhRofSK3LHfcldMFBbJYgmnId3KSFeeN9r3J7mJ+57geQurK71Ajfb4ehGeO/mL6k57r0Pob69L4V782OLU2bQRyV50u3VDMEsxAPXeTsMzlibwyMaEcnxtOoVD/C4gnoNprkvMKpQ5tolMSDN3C2nac2JoqngqdkSOe5Lx/yYU+K5AnKNPf3DHHJWOTiDq7M5yLxsdH/4NB6Iu/uOPgF89PfLM3EDpkpAzs9cIJFrd4EHrXM4vv1LG9a3AF099LkBF0rak1UVauZ7Ds4hLpv3F6SbQFHrVOUaZ1shRj4olQmHQ+fUktvETlvL1cIi7caj9Xcj7TVOt+XlM9xYknHjj4zcuw9S3ydP2p542q4sGV4lBKKUX628LSt1NeYf2zCQKCRljys5a/7bKItDwLMoO56PS4hi5euyAXYi9XWQSadq6cZMnxLQacD2T6u53FVHHPuVsV23/cqEE8xH9Ozv9SOWSJvvTZRXXW9eoWD3HonMozHTseDm/2R+tayTTQVJ7sLRiPaWxpmjFp4SLtdkVZ4GqiqDTTviEggNWMlS3SrxCWL2QLLmFet5r4ixX5SodO1dmvA0WCJVyVIuerd3dM7Dx+E9akIDw+kcHHBHiIudcFSF/ffX6rra03XM+tqQ78X0yW//PfCzSN8ZeQpn5xZDyhVRiCMnUkk5GVmcloSdSGGno6muAyd+0oz8MIndMEjlEdmwN+yGpqee0CTBrUq4k/1BmgeN4XK0InFFq1Ve1viFNJpoqKantbhjCIHrE5j6eF2UPatimx9kLPU0Uawg6OZ23fdZE4rrbvNsj4qxdhZ1u7vqfKddDzLLm6YeDC02p4Lv+mz2gM+GvfZC7T39mWY8z5XdDil/nu/8S+Uis29CzHAAuKQx6/d3fv1p3NvXHq04YLqJ6xe886JRiw78MRZrU9xsIpVzLprCqriKuFcghIJns8ivEMcwVbq6J1tKSO9kHRACQ8rdr3aHSwnsn9nr3/7/FJlixpD+9q/ER1H6uKpbqliA78pWIjXIfQjOX5/mDtbDqH8bv3dp1/SBpDBhM0PbWyqBQ+E8wZUHvW+pBFwaEVXMiiIQEo3nndwbtYvXLDShNx7hR2UAwmymUG+9yvsCpk//xjrdvig8ycoQDKsGUOUtayvJWq4igyPC1KLh6ckUsNOXRXorSLC2X/tcpBBsQ8SXqs0F5faqop1BzSUNtSKkXEZowpI+BSkqCVx7EQdzE8+I3uj369HaP1QRcDE7FUDfDmqtJqGcFBCTJKyD/eYTaTYk0hCrhYb4KH+5ovd/zs9Kf9eEc7SzA1uOOH5dnm4aWqRr5qoBpm3q5Il+FbnaNGhBUCCuErl9D1Vjdd3Jn3Y2UIzbpaSrCDV8mPsRDyJvS60V9QeoWHfzX7aeTE/U0fxmJ/dgyHMoH/e/CV1Oz9YsLmygOU3D7W3I+DCM05jLzMKlZgsI31+bfftKvNjMztTk3+8PbpVFkUgLGahxpOp4+9f+/x+ntLcBg39BvAwfEw74r5slK88dEwUfkuAv9HlI1jyQUh6H9fmXYyltJIErnEosGZCqjBNTElPIKq3W6pXlMl/L/Py3anGwMYPEiIGzDuZ8On/muvZPR28HlcFqwOhzOjhhp/hakvzHrYex3v9BH68S/15hGuNiZxYKPfxeFTbaZWLkbjU1Oeu8zSo91bBxOjehhDolW4k0eZH7b36779/yc/7Dc/mXwp+6yhGg++WGN7+59CisXlcuff9zbxLQ00kJLyDjwxHLWl8gl7qFgtox5QLo88jdQWJQ8V1BZfLK+OHzvdMTT6hlbNUQ+9ucofJE0Mgav1hkRjdts/NIqDltmxr/6fF87TRcLm+z0DgEXRwF3UW8f53/7sRYZpdMl08t0jz5kb394XNo7+0fpeXVCsg9FZAWpoQWVzHvyB8duHJwneuDUvlg2NrLYYgIQJsvZyyP30R3LORwof3BOzs57JnNl5/HfBcZROt+5qWYa+DPzhL7u6JBfApoEf2oG0wsWBfHAdrLriGFRz6GEJkOfNgEPR1h+G1trReA6jj68l2XfbMM8EORvReFyDD1DACXVZimwt4AVrwADrgA7UxoB7VsHGF53qskFrNmAA7mCdwACsej5j6zh2zTY6pmzb0mbS73FZMNKbxz6IOaTwY6ljQhsmPahLLw2lZvgVOp73oMGlIDAR2jXzvZnVOBth1XCG4CzJe4gVqBIc2ttfxi3xmei6G7VgDlKDRjESyyFB7J95+lyPkYwOkOZ6E7s+6fFynes8+tzT2qGm4qOFcrIQXGhTK68wlnG8iPb/TG1G3edwWmYvvfNRBJmb3GBb3dNIOHJF/Cx18cK9eM+PLEi6uMuCM+Q4YPhvuhyOw4mstlBoVFiGVgkoOEzBlQ0ZuArDozRIkEkItd9i0WpQt8dJ0SYw//rmj1crLoBw6Dc5WZVQu1QTTYOFVV/SxKunEL6M17kdq+0sgQcH5e1Z/VmSqJDOCbCMhdf5tmkcNDz8c4+WAhr3kNSrBHIp9WOg3BEEuylmWtAvBL6amICCoay0M3CtXEVQn4PpEz41DwZly6napCz8Qf2e4eGVj1tNPVPPSYtUIrN7RsWnRGGQGQqbyw7Qms8Mx5bUHrDg0jSEX9+t/+zTgmKybhXpi8S5Lna1OD66WHz6ncQSj/01Uuf2a62FyFkVIzs7OwTlQBziBW69P15Tj4ScTTtCZcZP1wb1WlrnaikhNJrF1mhP5/CBknkVmmjas5Slv2AgHvGazUHBOSPIw7f0IrrgTanHxkTuZbVv7RweRfczcmu0Gz95Mb9otLsmGq3hYtHCo8lN9uXzwz9ZOIcNmFXzarRYs4q+WQnfny73fRSSwa1iqK9+dM5XAm5/mKe3+NVa7W/iPp21kkGob6hU6gSv2LFjS4jUc6Pc37DQqtwQQFkemgaHlAy0wS8kIowLnVhd9kUyyy8mcksxRtog2PRDi146RlyedJ7bk3RsaHMsSl6bdwYJvThVndzbZQQlQF+3w353sIrz7WTQ0UEyAcjziFdU4KKyYZDjbpPbGd9aGZLADW3q3e7fvzLr3QEdcZ9Y6dbfXYX2RXMAGeLQ5HFvBmHgt0RRMBb0JDA7uoVlYkHSnyw4a6/MvOG2A0wNLmnucGbba6tDHy08DXMvOlIVqXlVlZD9vV3deWb6F7qu4MYBN1q8C97a35zed6bf4BwGvtaNQwKDUg/fO5utLa0+2nSvlvet4Hl45Xwtqc8j4EWaRJYZJNgClvu5/pjp1fIGmJUWgkRVgsG6onbWrlf0m28GEld0hY116gxAaQl9nvNdncm65L43NN4wimsHu7v3txeKKTD4fLZUMprDXV4IZWHTGCeJWioQjty39mNmJe/TYG61aj+bnSTjzp/Hmh7qsoaj+gY2hEPgNr9esYHrLwV1l0Nb3IFtB6ZWZgcW19dXFuRHCtaocmd3A7833quabAfcNtB9Hij2Zd4bqoxh9H8+rFGKlJN70//5twvDeqMzVHkCbAsSuHX08PHO2hO7QbMJ//GFNtXJyn+wjS7ojfrpBZVBLfTraPtUIUpUKkeuSn0u673A+/z+RBjdEUStF1VqKLQMemktp4YyPm8+IEVVK8lpmBfb21ybqZJDnBtLFO55llloMLBzRYrwzhzJewq52BCMN8TSzZH7Wx4/YRNszNLDNzpMjtJ1RQIGfp0W6HzKHDhsVBtyZZyFl3K+p0qPRyufs86qX50zN1RoDr1Nk7VsoJuFMlID9P9i5RCBSYlMq4taOp2op1XuDg0NnT0S13vSSNIVGlfVQmmLygx00ovIjE+Hbo4z1tzT0s550sFyZeXm7SEjx242Ji/Zl0vyCeKtWvoUK087dbvjSV3u0jAOeCDN9y/GAUT02SP1Y31btbIvFhApGniHp13Za0KnXHal+e5kTAEVgwfnt/IEInPCjl1n9neXlot4m4JhFJZmlAXWixhmzKnIVt6gh2QJEEvs1xzlVJLk0gvr9JjKg568phm4Ywopmw+ReOK2jBk4cc9eLncZxKgHU8YFlznwbiDQG/ZFHL59mHBFZ0pIOqLaMOuWNDs8ZAltTZaxQDhi3Xg4lynHVgZPXg6G4+jxfLuTiSvY/ugJqgfO9I02JFFHubWiiqP1Ck8tXytQvjc1uumhQpmQu28z41MPnUH/c7dlcfHXK2EqtPFhnon5Lza6/xSKn0JxiKPWZqNuryt0G89FPbbeLPa2p7ch7HpeoYZpn4ylYpc/qpei1vdjD2kGCNX9jdraX5memQY9In2/p0+7ZxY/IfQzbPa6Au3yYaOwKFM8fPRbWW0vdAcKwPaUojVDTXyqS4lgDKJGYHEq8wHytq/Agq2v4MsDJaGclufKpScDWI3MlBaRwjZV4uYR0Qx3P+S/VNzX+vqP58Q+upHucXhrPDHCFNekhyfj2GKnugIKB1hWqPgAJlWZA3dfrFBBtQkEC1gEgcr/hsrBBo1j1WsZW9WbsfqsZI5+ol6R5lFFNIWOZAI2LQ1Xu4jXhxmrh0jt8xzH0FAdNoFgiKtG6ma20dI2I4CFb7E12ADuSrVqcfRIRbiflqkf83V2LS7m6g3+iQUZuEytAR88VyzA+cQBNhm2KvFo4cD9D0yOwaoWfNAxlWcwx3lGLix7zOjfADRoM1fQq+bCVx8PuHs20dM54Zt8h1KyM4ewpqFjV/nWfrsV5o3a+75bTrcngQUPuIgoi7AoKOP9VjfVX9ndU2OCXAvfUm/kjbi84dw79I+sxyAILbj2N4m3KvI7rjHhaUA6arP7TEo5D9iOkGCsuoqTaTh8KBwVWrUnNuSOJT/6x5JEIlXqd86sb6CGKooyH4XQiOiuUbXdsaNhh34V/slhBDYBc3lDyIaREOZyen3BgMcfzLQN6evIiWaRx/o9HjxR80Sn0mqaCEe3XjnhrHVjlkdnnTiea6s4V0uaI0UvxlHTgi6/u7U6Pj6/sLk+u7S+QSivXTwMJQfJ0VCTYfVE58eZdvdvFfHGMQ7vvV261seMRuLrlHd98vjCbME5roCiiTsGxYPbWAnBySk8V67iwW2CtMNJl/JiY45VJf3UoCcL5eaqWn7NIk7e4O4rsxkkU3uTypVcRHubLG+h1QaeF1NPyoZAV3td5VCTewJv3srV6Hyj1oCbrGgEOGcvRopqLlCZATw/rfL8XLgkhe3NV1RB7gjcNdmUd6x8nvCiZ6eMbCyIqlGZAor0o5pvN56LypGhvn6mfKQvZ3CNWrBnKrJwaxVo0foo+G39lqLSwZfyI2jHXo+f/73M231ODitaIYElprW08SAtVaorgkEpHvGA1l1yDsX8ps5PlrK+t6s3pCFQJAqva3RJwcIGNIEriklt9agzopbxkRMzh4aNxL2EHhj0ReQ4HjBZPlkuQbulNgwvNDtNhs9glanNk6eI40i0btW6vC/9ceN+o3Fd7bl3NfKK5Xohs7tGxSdpVadNh/ZYMUK291G9Pur4UVXSBqDCgbEufnup1/R/Dq+2MnrIC51SL8+KjBDQlSwEpuKjzw05q6/N+UtL2xum3GW9UUSIJE4jVVHjcb+e1ur1b/5gbTq1KZjP6ZRHlIXNnAmNRLzpcKi+i83jxFL/3tHR0dHhzjJifIbE7x5dNDEq+NEdYxb+3XdDIxFv+ujw8GepedESya6z2jPgbMDOnZdA9lzangFnM3eutkGnJh9NhU8JMBvCfZbFwUQSE0q11WnDHPRxia73qBq4gEg60ZcdV0Asiuav7fb8vX2kQDUUbzE60PfG69CuZhR1mnW99w6lSqRP+sfaKyDsFenIf/kiKe/M6g8q6fCU1f7fs6obfUMWoBe5Gfua/zEOe03sFHTn0cN1TPkybgnTLxTcV+POeKzfAMo+T0L8eEb9DCOwPCD6Kpij2BLZv3pAQmHYNL4afhbbL5f4xQy0mj8qpX92dqjgKqK166aMjFF9x4XZ0PXXl+qI4EbGimNJiORr5LQOc2jH8bM8gIXtUyfEjO5a0SJqksrOdUxvyxQoSCyLCDUVjUNB9JzzqmYpPByk02yG6aHI2ZsHUsCn98NOoN9+t1Rra5JCS/HatCnk2Gm983yYvmRTb1XTANy8xSuHEqr54JwlWAeq0sExQ6EciBkJcphW6Bvznf1bo1yLO7BJpzdpRbS7htUwp9ROp5N+LSg3ZmesFh2TtksPIubbBocNTf2G75OwMm+z3LsYCqttau3spk21kVBx/h1JkEKsSJHQshqllVpXtUUXE9+LyqxgPHdU8piVjMFHxM+drvPdx264SVOKaDgzHVWhc6pzuAm8+wYQKA+m2zsmCcAjRAT1fVCpoMuX9bIsjoWCIXc67m8lbHOH1l0dRRAw+vm7LmEB3MAxcH7jZmCZCZDRamjGAJtmkZv/mUacjpT6p1odsSum4s7Ycb2oukPe+btdrJz3TnbEoRd9fynRCT0Y2k7sh7o7gIuaCkopEN25LCdc+E2SswoihIs0dD05om/HiDPM8bizbrG6g6NciEENOlhLqN6sinXSP5ciFivhNgSCIY9OQAWuYAlKzicPVockin8YNSPaYyAobqTkxmMAry/jOeJyEGg61tvTP72ZssnWJhwwAQ3htcxwzq9YNNU/qyLqigvbvPaFtzWTMUPAWWnu3782o6PkVVhH+CQaSnpm7B4hqFLUFA9OoICR6O/hUNywW87Q4Vrnln5ZP3jpmJM4M5iK5LZDLsRaDloPppudhLB3WJwdCdA2Kx0mjFmI5M/2Z5Wapp4+TR0475eBt3Phz5EWUPZ/ZSBGGB1vp/x/B5At16UAvCmYAGJdsaZd27BlYmtsgIgDz+jUVCA/kz+TCtF8q/5u3cNSDDUyBg3mD2d7+e1kMXvOcGnNZM+K7/3Mxx1lvC3785gI4H7wLbTe+7UwLGd3qN08uszdaOZtBucb5jMVKCD5TmdzxcAMb/tU9LoTWbuTK+TECwvGv7Sa82HFq0U8mIpMNRx3XSB/HmOL5L0a7Y+bfmkdl2zOeFKsr2Xs+a1Y953vzKy3c/UivL/UWWkjOdU2yu8+7gutse1ExH/hONfRea+x2ktDrL1bfyT/0moE/th75pvv/Yof3U569cI3OU/Ug511Zg3747gh2caFhZRi49+KryxulqWaPP4/j2UJ1MJtVMuTPOic8ZJKW3JChTDU220t8NlcJJIbzj1WCUCnDiFZdcDdQpjEXi66HO02IXb0zMsHKZ8nWOe/YZ7GiXW/aAS18WXwfEl/4DxtbACp/LOY2U5zo3LBJfvTZsXdbgZkDW/FfBZ+B5Dw98PoOqI+/eRW8sOfWPz6o9iDn/M9kil4dUeDfsVfBEpO+vlreJ/8ZFFT5J1mD+GGYj6vqsoec84qk08kIE9sqTq1sPTxG34v/rCIvoTWIzoHqzG2XKbX8ev2S3Wgij0jvOfTqzqjLemfhbkAZ07yBFs1Tuw/5BqsdoTTa5+N/nfXYP7CBYCz8+WgBjWKZ6EszNFv+7bzUaOEPt5UTIUejQAic5JXIXk+T6+f7k5/PWLG5Cp5OnjXSGVQn2rO4a7stG9/e746BO3bd7Ybk6b1T/3/ysnpK+j+Ozf31tsWvkF9sXCr0Ufot/yM+aCFBZbDOqW2nA4nzTjpbjrNTHUlhxXRecWEUxZI5OcGOmQmYgDd886XKlVjdcv5AwG/xxXGbgagEkfC7srHnNqkd4TQtZxiX/ckZVCmR/zvyg338An5Tdhj5w0DRyBWNU3VFAxmrjCAAwQ9Vns7x2MAwQM7KDpPbmKIDqKAl7vdhvUokAco5fZafk/LXlQrzt377PmsTidZOx1uZW1tcWYyxHAbXBFX5ueLDXocD5cmt9HT4lv/re+KBUbZu1dK2MTpL5oW3AOlG2pBfiahNkMYNsqGXi5hbiZQfAvfjIP7okgrB4CdEBql37cdiEHsRZc3hAidp+YjMq9xeCPB4UbMj+7Pbw5XDYabE2s3NQxPidwpsWXSo7xCp8SdYzmGOgd/li8HbXlkIjcM2aYqSvGUURVJd2yvj5Qm9nI7KDZAyhbw3eearb35sZJuRZQsUuVOh4t3EqD6lF+u79oWaIYdKDKGUXkiSLEUP7lSJxJLbFnd1sV0j8O5Yr4jI3dGs5g0k2oMmmGNHIXuUG2GMLR2QihJk3FBzqEVyzxtTt9PDdbrUUi9iZpyJENNmgwpE4hYd+kiSFkvF2g0b7BSIoq2o1xBM44gdeH3jZph+L0Gccw8S1vHxGCWvZjZYr7FnbrmnPVO9Qg0LNKaphAuxFLko1TmydODLUhh0cVtv0KPzhtJLAgk0S5oyriQUwthuDs0Hi8WYqbJgDKfOK/tPV8t57jkCUV2aiRZdrkclMnMcJnBkXhDMTmNhArgHc0rAQhhKEcANT+uk8ijR0Kw88w4Rp8EcqKlhaNtpgi1/JB2tfa9fiEgmWt59p5ojR0p8rzI3x6oMdYRpVUGaEAGMjmmzO1mQYtkxkgdDtupAFmTxa1MgUbJI4wBIch9z9TK93cwKl1rml1K90kmxxCHTMfQtbV0E1r793J1pvBKK2KCACEUdX+7py7cgB0x99b+B0APPlmcDwVDBPj/+R4QC4spLklepIQ9CO91jR6fzbM6bnsLPTa9cXd9KqW9E2HIXvvBeBKWtNSjHUNIfajPfR3CcA7+7OC09WhbNxIdEMOZ1kYpQ2YJVBONKSAWZ7Rh/KpDbX+8q8Phq4a6Zu9hwg0bNUpo7kcIYZgaRPIvi5PwO+v/lPrJmKdCDnP0oCernJCzGPh8Xtz0E+GU1NCcl1aftcR89cyF8fK/KPc84WZwxmxZmTXGsUUUZ7R4Gbd0urvLMKt950sh9ZArOkr4a9jS6JPOU7Qy2SQpT6U8kNPvh2aK/WZkzjZt1McqyfeDnennEnMD2SveP7JwDHlPdrFfhgvGmumtv6NBS4ECxmClWr1XA/gDPbWqsPJlZBAmNeZI5wqzqyL7asqpJzJBHTP0tM8JlcOJiqrKkpKU5ho00cRnchgH7Q16xDZ9QOt2ba08cwBWTX8onhYDKmr0YMwXAqGoeDjiAV6bJqG0T5L+tFNZisNP0IvtlpP9JZdOLh9+gqKeOc2PyvQOQbhbeO8rRgyXNjudenokYwWjvBococU956IVbSnMJdIf0lg37qqflbPJiH1j9vkWOsTkZR80bSgnk5Y+XOe0gxohLlXAXFWAC3ySdEc8LPJMbmyI+LdXZq4dcntNImD0uo0sr1t+WZSFuu3/j8GB0Hunj4SY3MbfpGwu4PEv45ZvvuQlMecyz9p7P6RaWTUo2bfe6PKHE/LYekSg0XfZbBBV30eZxauL976jwTxXvrv1Q7NP/nSpl1r54cD/c7TF92z8Kx+Gc90pWuiAIbXoetoLT9FiKZCZzR89Th3c7iqaCIIrwAJyvWXqrNxv6jg2j1TCWR4pYHO2KWB3xCAOuhthQhUNJlQINzaS8986cILHTu9Dyy5pRGijNQeAO7t20R2Mj6QtV9gjHoqw1Bk/6dZ6KYH2O2Bg6zfNcfmS+cMGgyZg+fE7w97usFsczelu9Z66UKdP/L1C7oH3x9RhcQ/g6329PX1LQay4RRYFTGoJ+mA4KynwYAhxU6roOviAhWIAWmycDmNo9xqeJgs8RyPIx0cc7kFc6WcrdJbOWAAVJ1gktTQkVVkReYjBW47H47rB+miiJrGb+VIJphIqKhVSSsdZT0/5JWFYd0Oi8rwVlvkbKAOJjWf3Ymhuj1sk9UrEWcyKu8DmTJetdW9nXV9xxvEKoymmU8Yf9BrUcPfClKh/Bg/futf416Faua/CUmVK6d69FuPQt/e/yDY7YZw+Z9ARgwCUWD6cyaKxv791oMkytb9hNubJd9tqhkFT91vfTl4NzThwmMsc30TSKwBLrZ3hAfof5AR/IvOSnTPjucvqPzWKMpBX3bMNM2q/XixpuoADt25L+2WXD+M6pg1DnUMynAZ2emzbNB0uaBCPsnjSXbzVc6QGg5WrQNqTpwHfPhr2oAIdGD06G0CDKN+82l0SL1c+FuShokwYsOAU4DtGAZmFGmUYjMwnCfxAHxRCB8LMLrUlEg5HEChKU72kEMwiyEa1Wst7BoZubpaaod7fMAnw/yeZ1Ap1/qG1KBvwCsPaxgy9n2RMOM1QqC+zOClaNF6VqPubVTt+Z1fMfvHcgHIcrqRbNGY0//HpsfEpd3N1FVtObmQ5l2iLgYbJ4YxWdNPi3KzXaJFnEN65SYw5wkdMPMjEDCAOLydKsY3ahgZOaby/j0gO523iHIgKWEoFwHOJCRfm8gDf0sylmaic+BJakYS1HXvAkzufZWqQCFQLljmGc7zXVOwq7zKHnQcucbnxDzvOk7szgVLru8WD0dSbTO51tQQ9vxnt+k+KZo+WE1Tg9arKp07ccP7VNiXhLz5DZRuD17Pjp+VgAlN2TJOh9XYcqTQGqkoh1XmKcyB0ZAc3z2WWbAEJkP5EwRYRfHMFJlg5ooPsUq5Lh+ONDBLfYIkIcu4/nOVOIa624eApmQUNQgtw/OFB95M5HZvJHV73hbGB+si+MO6/CeI1zBCSI0l56++glGaGCEl0hyh61iCgpiVjwauXf3O8mmKggMbbcfvAOvRJ+Kcu+5cTwsIfHPi73dvDM46V2mHd/ibRjFk6pO8UL56uEXuFNyg3OkMXMwW3VtBayZVdLvjAJ2mEsglj5Hc4omSBRzG88zKc86JHZHA8Ox4vn1YiAM+T22bYGhLKzuLmXDeliGYRkOKUD2VBpX+8fhmP7ralF5PPntZEueziN2TQAWVC4WZDCylE4b8O/bpWEhk8Tz49vpDoxkET7IHOn9z0zmM8Hxv0fRhPgpjJzyKGPuhXSU9qEKHleS1r32FkEaXInikUvqFHATfVDCiDlwcZDGSExsJcRZdMT2iyINEEXXGr6BZJNT10FZHmPH5+tAyQrTIgRcGIhgoFYhgDwP0dtrI5uQyhlUjekX2+KZR8pgvFo5sqJ6Nv8AUH5CGF+yfLMBWtzMsqCzM9Re1JCmR12htedKl0G9ONKnJp4XB04Rd71T7mmonB3IdJWkVUJxShqIc5ALgyY/rNeHrz2IBXrqKgCs0iACIjJXTSJpeF+5IeT7bh9EoMGcUm7g1fIWvhOYrjGz3wAikXf7R4UlYwYd/000cGWHBx+TLNGpJC/ZgQyuOjhG8fjb+88jRi4PxSgxdISf/Xzho5O3wX5YCvn417nV+9661vrblk6NAEzY35B3meOcBKnYj9GGIdyUxa5MskdEO7u0213EUXAlWnsUq8dEi9r+4cn8Jqqh2FSlCqnGlHxkzYcEKsM4j+giogKZnCqYSbbugdINjAtzp3eNE6Oys57gvXkihobwcSMODr2LVO11BERacxcwJrorY4ueP0eh0iOYQ1lqKyCoxO/kc4wSYOrtCySya2wYah1ATUQZ3k5AtfZaHCFKSy0uW0TM0CeD9wNZ5jGGmgnUwjRBxkCZNKw8SRX/YrbQL8MRAw+TSSZRbCGOXEw6sWhQIJGSDaGpeqWyMqSRdt0DKkCIq20T0X3mY3iaPAZTqFL4YUdNSJp2SgqINjv+zPejY4OBzfM8p/93Kj4VMEk4Z58T1TA7jbyWVyx+JswAc+ksdCiZc+RNauyQp21BcbMvirNStDpZTjgCLC6nEBhSozHWxD0hTP4RPW/Lg6clsWBbc3k6Il/VFMfVcvbpw7pNUczfD9ozsSSn4jUSG0QIscC8i9Yo7jBGu9QCLKpGz7uTCKVoMh/O0Taxs0fpoi2UReBTGyTbPJsgtphOdBRt2rFluituUFZy2qiUs7SlWaYaooqg92WYqmdxnmAogOivp+6GQoxGkHVBaQAnxVqULauHA9w0StIxQU4hlk2WWHloSAqnj/vbOQSHahBsKZaeZd4oEvhGOna2aAodQ/qCQqw1yBWOUPHvEzNKvajhsW1FCiGczbjTgY+oVw4l5vMHICCMeSEYUveapqpc7HCiFP6f/mynY3SAJcvkJ53s6z1K9m5JwXEJKvpMOb8POzy1acZpnsdw2LkXn7/z2qtdJAIWeKqMckk46a7XUffBo6mRBOqU6CHJZpkTIQb/WVBfuQGV3Wk34aoPKFts+WiDyz60gzZaAURYO6Pu1Wb1Vk4TJLlD89aSXjWvJdslh0Jw1AzxFOYtI43grfSfABd284A6gTcomKWp4b7PI15bWBe6q7w/nngHR/TIJrIbWTIclQ8qk1/CcogyLQSA5HcZtiTufDdEDBJyHVOJIYHV4daRI6yhbFQaa7cQZuRB6LuxNNMaAVTyfGEtoTtt3pRcdSDkaC6tTxaG4o4fX+4/CiQCH/SjqYZI5zQhKSZ/GsGu9UHhQXyzRkDa3WwNgKVcq53tdhrgtuJHz14Npjl+sAPRYnz7xN9nmiup8KkAA+RSxPJdluxXHdf33OK8W2nuZo8V8lGXLunMypJV/EGx7uVOsthwd/YJ4lcIAD2vZBo4RKiPZBp5CJ2PahSDkTUO6MoqrCCxCw1ZQg+zS8phy44QW8ioGL3cTkw870T0GLSfP/iSwzEzq0qpDHtBeKBtPvSU97dPiFYGpSv4Rg3WnfQm6k97TpALvaqusONwHDXV0bUWD1f9fR78z19/z5YTa6et5UANOizKk9OlTyhnMK1BKJsTI/CQv33d1oXcONfwuV6/+XUJTu/ApiBSYId9VtRQGetwmMKPOXpnUna1lVnyRjMyPNDpgjC5VCDyzJSDR35/O5P+Hpah4Q6t7ExBBsCrKMz4d1WC1NGy0aKFBMS0oybZ0ARfPOC+nkjE4UavTKUcJli9vIFWXUkUidkj4No1Ro5GG931aw7L1hFsM5V0AezjX/eN3arlCIReOeTTNfrl6owY6NgfrmxjqHgBxLz7SevuhHFgIx8/w3dQ/rQRWA9PfnxNYJNZpFq7N4ybs008drccvhhm1tWTXzQJs8t7MpqpfJF+uSLFx4hYVB4FmWnRFqDjOD2nhLydHwyCkjTWeLUmMbARoyKRmSgCJoAGsTdJFFH031htw3LzmzSo10I4cRuKFFcV1xmu9+ziOmoghx/rAy52mniskST2E44wl7UCNrF2NDCShq1TdKhCdAc9CoKzk4jZ09lmon60/L8gBV2jqq0JLEH4LZNbnW5BxSAtewdpDeM3qWP3gD8X6wNWIs3kcRsfMrEe1tVeTb4wLChnXNbCHkwB/1H82frAUXvSYK2L/vU0MfIj0J3egyTSDqSZaYfTO+E7qSYkCgW7VkJUalJrMfjU2VkVhY2HojdBlC2jLUjSi+EzlWj8FqsWHUuMXHfhVbF/g4HtCRwCwkBsuJsSluHeBk/+TzOzrcViissbRfJ2LD151rqMmpZVTvEnxFFpFftTrG5SrnU2gBXu5YVZ9iDFrZdpVA5WXoNtiUr+w9XPbokMSTg9tWI8H74tPCgwna04e3Pj/DicDjB/fWtvXn4BE1I92Haz/+GpEaDsJBTItBknkbtsLgIiObSt36RONI2pi4YOJFYHCW7j7MiVaCiCAi/1TdCGTKl4ou7Mp2AD5zmS01TZLakRXuOoXN+48wL2UzaKr8dVvmNxjLCfuEybwaBRmlb+TE2Vtba5XcPpGjdMjOm8auLDAQrp58TLrbELRT4bexlfO0cAGF++aODZs9ve505ULSdeITTP62N9Rpo7mN+oaXyyiY9E9dvr+BmV2Fd0r/PWEBcvEoSSf57z2kbHtPfu/eb5ytgyF1ML7bekUbnXnvTqs549Vc9BsCJsZYiIn/c5RxgU/L1P1/nzrX+NZaJd84kTNxaZ9P429fWXAocufJxyTzGsnbmY22sZXzFfGFqjiV8rVJVUUV0dQNq95rAXIUFZ/EMtb3uEUaRas+yoPNTrfIakZ0GuptH4E3+RnEP5macOz7CkppU/YGT3qYo1Kh2jMHIw6PVcERWXnfgwBDu+M1j296mDNNaN7dOXIwMtMbUg+zU/c4i3k+PGl3SMuQ1tapFx11ddOzrmSVSMIL+t6mPEl5GqulR5mc6aRy62RbHBhMFzjDGPBC/NsunTcHCWdUv9y5gVcIrFQmBLKqSzag1JJP5JQwakUtLZ3MCFO1HdasHM37pOAIALrbkpWB0bc2FMXF6VQNX/OehsT5C3614gRASWeJSBFoVmavZ7hO5cIxjp1jbITASD2Z++IcuwjreL9x+84dxpJN0idCqhAKwfQ/Fn5CKLptirDgVVQ0o6IYm+K28nss+C+sO5gOB0+wfSvF5MDq4kjMLh8DncyT2TmjDWVb2skpZu0OkYQPbkr2A2ejeeLIcX/+SBXOZMQiY3CcMQL4TR6plaK+tDgLbAiwUL8CzVb7uLH92CvqAF2Ia7qQoyCXry5KtrvySasrAt1orfHhODUrTmc8+PSpOGpF4xnZnfWrjXO+SMYPKxqT7Xnhum5BRAzUjNFHfUaWie8QKuimGeDlqkUGz1TkLjhFIJ3jyXgrgBGiXq5XwHZuVAxWG/RV2jC0fXD+4F4Ujp2EHRCkwxB0wjUF71hAo0QRApHuVI6yyNE4iB5vknYUnEzcZ+KZXi6bNvcvWzg8sLMknOppP5UPDx8rrq/L62WSdyxT/b20tkK9btxs4LrsVYTr53z+xU3ymqsdcRYUU8QeDXWWUuKRQ9w8/HEvc5T5thZgwkUyHuJAdLSJrt9qZkZYpW0+sKfhBGDG16dCCVxX5srgf69dH0rJhwU8ztsfw+r3D/6iknox2dkiNvS6+a/w40srq0rY56hCO1wpvQsRE3o69RTgDjCf0VBPOmTWQam+qDe6El5JM9F8ezYfzYwz/oiLfFSN3ESyoc/7Y1gXGLPWuDnkoa21I8+UXBjRPV0hl7FldCQe9Afn+at1BT5OPedDVMgdhPpMBfdyjqxpL8e/XPBPtgAFxfLG2YAIQZJCuZztuEbLLfTzWUqsRKy4tPChHFItaln2y2ryJ2vc5UzJt0f/FOwJYj7hyXD/2v+s3Poi0oZywLPiEecUoFvN4HE85fZELUDw1qA65QeuyT+O9XE65blFnS1j97E4HU7gx1S3WPhYujVIi7/9AuYfL/J4QBNQDv4u8YTnzKpbS2QsIabvOFSzuN2a+J4/zV4tYdN5udBaYm3NNsHQ2dt9HVEWI/9bE+88HGC8H+6ZTv6Kj24vVEfmYf4/TwAQAIYLs7WezqAU8XhcrZ8Sd4czfkNVdU648kLcvHvz4ODef1glwpvcOVobAspecGXdkbrRqEv3As3q8lvpvQiOi/9V3l4j1/6+jrO58/tJ9u3W1Zzj5+e7Yt12ox3O/EpG2Fb9b69CP7W4OX30rw021iW00cIeXP973EWqDJVkz7fQyXsnX2pjbUXFu3R43i8HJk+Jm8564oX12/NKMka2st79CtAY+S7o3hUBgA28f8xzPAWE9ZNaP+krXq3X2OJ364BwziZeIs/CUCvUE7y0ljs6cwSTn7PDxamjsrbfb5yq7mrQgTLye+aqwXSJU85ofqa91AW7rkwcDLt9Zw/OqpNt03jY3s3eyRqjNftpt5v26ireUUVbz/V9gSeEMiNjrd3zTP40SnsPrB1tOb0/7I62dUQ7a8WDX8Hi437+hnBadhXwDf2xSXPJvfb2giWYfWNvQDF4LUA2bQKfKhk8nES20RGc7nSt3XQAxpwcKAn9Mejm8V5Y9vcVOP4yNVUZrFfZTC4YbG3Ug9Fib47Mjbff6Rfp1c7nwpxR9nB8+Sl0z+29PO6SqPmEKUiY8ShLNTTEJ3HNgKEssiwO4qmqd8i54rkOTGFKqc1lHAkndghFw8mW4UBcx5ZVDNFUh2WCDVucByCXYtEbWMYRwjZUfVgu8OYYthynV5SQKc5vdw1b7V2urloBpyE8m9CcEpSa7CnpogGByDn1/ZFWYiYLarTYJMpmKi4tlXVGRJk989HA1MQVeFoSEZmoDF1bF8HiaNU1es3TJgNM4GI2yXma1ZvrIQSaVBzv7RGOQ40m1ldyVxGYe9q72NjMAthlPC0YS5zEEwrzWc4lq8o3xVXKtJApS/HaX/qGs+OfMUrbk/OchNl357d4s2ifaCqnlXRGBG62PDgpPtYsxpLVXTb5mmHzXrODo/CWp1WZXGbvPI9c/78WSyRfHc9vvz9dM/CKkIGdx6PzNrNeNRq3putcg2ReTRMFh4o9Jzt0xdaWHSrh3S7fTjwJlzRbBj58CUIrlRwIssyixk7VzaA3GoWt84JVP9Wum1CxIWSOYlyqmJ22y9QW1Twl7t1RyMN9Tnlqd4M3ktH3Z6ITNDor48y1xBlc/JqTc+ztOiotDjBmbTssyre+f0amdrb8Evd0pT7vLvYRwIMOCfCwObDet7Hd5hR+2HyuZ0ZiRVe4Df+VeBMBBNiFt5qhbyUtjrUnUbkDsxkselFCK6EZjIhezC5NDh89PSr6s4J4dP32QfH58T4MD+pxpVh7mhTFzjFv/aG8muF3Dot/czFvpFYGj2evnwncLT3/P7pD9SPtGaqDXez6H5Usuy4mgsoiJPV6pQR7PREhkbZBC0gwYWwViE8fPtwe+m2BfcfMLy+IZyfzSiLewBWh2+xDO7o4aQIqY4Uc7o8X1NZ8gAlSjaxWOfq7bep5G58W2Du3fcsXhv9UVwMgrTNwTq01HEuhdBGbUeSrFHWLq8xOuIuYaKJ9FIIagigbYS0NJKKaym5nHU7obapGE65pB0ZrjPcqw2FD67sMSfqERnJwcMp00vYQ4PUMJHYCRBueU2kYLqBzAb1gCZJmNCf+F4grhghb65TEK4mOE7+XaR/ioOaVy76vcvhpTcHKHDmf6kyp5SZhoNAQ95i/h1IMgIPfmQzq4rzeaWyZdSJjj5WLR7/UTJUVB/yRFiKM4iSub1YGbWyZd+tbyaUYkxYdKHH7ub5hltCeaxjC2/19fXXivzWXasXCpFF9//XnJptVTX1gnHEgnqj3g3WfK1xnOHsJ1fzhjcPLU9MLi0568j8Pp17ieyBz6npGf/hPDSYN79L5j1orW50oFNIpRyCK4puCutOEH0bWZZ+MB3MZu8VJ9pJ/PaifnXdRJqyBPxSVOUZL6eBb5GkJYx4tQyELPUNQASIqTDiyTBSpDqcgkJcqbmUX8xoXMIOGOI2hQvCuUjLyMVb7ZZFyfNzyJmUlAZFFy/+EzQUi0kZLJNpCqc8yhUjlRXze1Gi5WotQ09l86CTvXwqHmmc3IuSyRCiPl6HMVViD4pbAEs3lNAZsg75SY3JHcmI4ojCysX+uD4WdLO/rda7AQaBnZN2xAJWjbGp+0lSYEqKuJhpecwvgiWLO87SSp8p84GHW9MHGZT3UW9/7nHEe1TQs9Dnbu4Zd+7pbfbcpJi2uwyqTE0YqMdUHvGBsFXp2rOgpNj2pe6iTjyuQn7RjXnL8Qb881baWKcadl4llaW1+33eaui8BGbSYW9wVw+q8TTHpxh9k2ShfG4dhiNeGoyE5c212X6s2I05vchpq+h65+rhy+m+3a4F560tiz9RuMVecsWDj2+X72IXqNZGUst8KlFDIwx8kiAPGO4X8u3vW8GwiMztxb7s1ZdR6RlcKguicxZvveh2oSaNsJHU5l5zhGWxWRW8rSS39LYUWgFfgsTDqJ44g8NT7uebvC0Lj/gsnvFH/tieMjh21tIlfELH6iRhX+1EBn+mjNxY7Sx+b8GgaObFARzIGMEpM/YGuSid3cysBjEJOSz7FxvLV7pHulkSUABkKyBy1IVqxZEDDLuGQPkLUFT+Kp+BV/EM6dj1OF5zBaHcJCXf6XjjLjwavH10t8H97vmTficvpwRlxnppcKY7iL2Q7ZF82uZ8M/3x3UFe1RynS0tcLWOmycFyB7UBmPGH4hEoZq4IG0u090a1gT2U9XyShrW/CPrWgVuKlbGqlK5dyahI1WKRQwqB1ZHeEDRQZeDTHJDN0ivX6wJLw+TZ9YuLOCDfrOAQ2xwBOY1vvCNH6BFAjtCii2xcrbU+LoxOFxYv3jA60Na8WxSz7+WrnGejkIatc2jDvtN4V4/VyYJrjom6Hv+BtG24T75wcdyTXrz51aRyQfelhD/itclGbiU9Y8fG/XYGmUx581/JMj90rkFtmTayq4jN/ewYrL9yduZWhEEdP1nr1n68ALIFxqQJzza/zbtsu8dYjmjHOUxM1HY4sU4CRlqhua7pNE7ZKYm/kusGhFWMvh2SzCTRNnckZAcOeFYD39USo2usNA21GSofFSOQQbiGmzJ0cQ6fWilU4Cyjyek4BfKl013yep0gWCCfsURXSJseiyGTL7/UCJOs47e2GhQawtmgm+bpIO06q5W5Lh4yxelVINZvw6tTALTQHqNInCSc7iHk6qiukDJBx6ICHO5cmtXw4/Zaztbl5hLaauIsFTaUA3DMDi3nAy50v+5clg6zgojQDSoEgVgp0Ak0TPwZS4kQyr0sF2akhj/OCAwaFDZD3sJE85m6sGvd01AFhOkAHtYJjgIJG6Z0aOEqxU6VmrI7Wx36ScUSVshq5ksmmXuZ5tg3/7ihhgO/Qg8EA9SBJRtmMxQlzg7LQyC23MSO8StXxCdTWebWkuOGRdIbVCRpo5hzgrTOGUTvlc4I9z4Y3XmycvHghWXAUZhy/EyVqFHgYDcyGooRKkWVluVWqWtZrgmHnIGJ2hRVEmkFcLPOZtz1y+tMrwVLg1kkanYGgkPO0fmOCWdgux+JDsVtYTlsobSsNJMLonBbxLUF6bQKHDNtPQolYFQ2rNBzxcKw6LXY09VCR4DkGfMLQVXnfoVS8aTWEACqBDYnleqWf5N7SJPFKkzXg+JuMIye7MtVabnA+nLDAN9/TwvRhtzqLTRD5HtIVOFyFkqHJmVR2VeJ0Fdyk6WDaMZGMviyEG3HZ2GJKF6SwS5VWHatsetfp6wZ6tI+2wvgf4ZzM2Rh5hw7a9fHJKBnFq1NDUkArjO0k99RX9ey0G63/IZWW3xsv5B0UFCuDdiD2c4R/D0paOOjX8f7jS7OSWOf1xh+/+uxpl8UsiAMZxvYFQ4RDcFGJpKgOvGxGLfOaszuW/ZVMJy22jWM3qHGx9ENOVolMqoXSe6fMxgwt7nEa3Z1t6LW9tT1baiHRESpSagK4j7K8XSXL06Oifm9IDK7VxYSmhFxQ1GAYCad8zuFI7vABrjsyyRJKVe42NebmrACJtCQZm/pmK0ROYLN5X4+cCZXwUhPWu0+4D5krP4EROOFMmnBCd1gpwNBtDFHLzh5d2g/T/l8vKOARuC9Mn1p+TfoXi/XAMgzzfnXmwsD//pcgIX/Ey+4OL5mtqh0iuFdUeJX59rKoXgQ2o6Vb0T6NuVilPI2oDWeDFvv48OoMd0AuynOzN15+9owrlpKrck40cu/JolS/f/HZ5xtA6edr4f1ozi0Trk+HMlHCICyVchnN2liRr7Osc66UUZ25xrZSE1qULJoISKI7LePqZDVXn8sT+OnOTSg1At/D85YZp7FJJPsajRExY+DIzDCiMpwCmuCQPejK2NQogXea9gMGvsPdP3yZ2zE+2fjN3aWzZ4oO7Yu/vqu2mBsnhliNVPhwgLXuehIaScvvOza5Fbdb33ErAYYCz2/UHgae8fqRJFzpQGwlefQu6iko2E7x/s7lBSVJOuI7W8mwwC2sO6/G3xbghDGYlGMx1qrIuWK6WmV+hf/h/CQYLOrjCxWIP89/dG8h5238Qnq9CtzQuV+ZgCmfrUEzFz9I3UqJ2uVsjKnWyt7H3GW2v0X/zvHVNEMcq9ClyO587CoX4e4d/q9YwpeyVj/fg8l48Yj+X+2/6U0Jpeazz+7Vgy2gQbX195/U+s7pC99pC2v716u+avlsWFm/EgJTfryHV8889ROqZNrUfkt9KsVMee37Lvolt+bvHrzqmPv3FVnGKVcqBudjV7lYrtwxrV/6K9L1U3mXTS8dzWR4H7OKkEUxVTGfi1gL5hi9syH0vVbsJO8nT/F2YrXJMxiQqvgojRAxJVcTTPbGCzahB01NviyNwEwGr8TtGNtmcKS6wHM4wJdyx5MiXyUs0nPVSNBR2pIfm/301dKUegCMWKh/PxRAcpP8wOinL5G4MvB4YXpfK8krclQUqwiPp8QpTa06WBWbsZ7RqsaM9fjWk1oCtKD9Vw5Co8xDevT3s7AIZ0kL+PCxlbfh2ZsZDYfY7J9zWpAxitu5B5gWtkV4/lZBbRLptKsGZaj4/+Hs7/QyyOri03aHOtl/eiPYfcrvBv/6obv+dnB0XonLOU2206c0zVdabUq0PvrRu9HN2mVV0Pd2yEyqY382Sx5fRml/S+kCumM1TUANpqCnBzDdpPd5K6oS4yCk2ngTPex1BgmJcHJLBaUI6IknoRbERVP4U7MqKMvHcaHUGoXocMQhiFJYl8tIqiQzgApUe8EjrnDuAHAWzj6IactqsXmhArpKWrw1WSXTqdZKjRbSCkzVpNv+S1euzoGiUokyrRe7WuP0J9ZAVllwSklVQ7/V5Z84PKbNrKcX9FzEU3DK2wFSpCV1x34ByvJyMPj5CTRY43BKRY3jsw2ttJ+/Rzbn97r0C97cYOd2halHUNvG/yZORcE+qqDbWit2TsJtSR3qKDiqc4s+PrSe6rZ8EVERN77sTjdvRF+nUoFU6pPco5mCSspw/9LTMdZtv1T+05sywdG7/qLBxqSLTL5UV2bMZLMLn72NUiU9+PJmebe22xSZcZB5PFNK0ty6Mo4XvBddfo4spnxVj/Jl4tOiamte+NWL0oU/WrCopClf3uVoK/awKSQ3zpPr7ha5g/4E5cu50eK/aaTPkcXG2fpHZ+Mriz+CrVXpXoKYttHE9QxKxWlTxyo55Ekw4lg5cKhOItMJfFeXuYVTeq+yITJ0U1bUTD+NduhiZC6Yl83ftlskV8z6pkOuFEgsSByNSd8QkPszu2rVe4am70AgkeFBGzGLU6pF1bOol3TGN3TEO1rxaMkIMBA9kNj/E0cuocpA+BHj2KV4VD1wFcmIio0dOObudYnVPs63lcu5TTK2D+TkapDWjNjD0780o5AmQfifWB/m5aN2IxKTgf3UsFNmHTRt4zgL2bOXmem4T9hP50qQkO/K+cq3r30EDS/+0owOrkpYx+/6+xYXfl6dHX1H7zf92Xe4i7G1yjXny3EOEIVojln0KXWPyjVdBd2FDqo4JCfGqvFk6XaZtBUlqZzFfqO1vIo44Q5zVRNebKWrbe6Y+uJD8cuF5ZWusX9dHd1sPEcXIduf1l3Z0QXyx+LzmHjorOc+u9EbCPGM+5X9C6/ca29vb9eZ8S/N2jLe3f1FphTwMsyG0PaaDl3E4txurKJLh/5UZoU1gTnmcgs7YkrOtZASFwyRyVZQ63DNOJAKOdcOoFfPBELJAeK804YVkXrpzQJ13h7am0mCEBEFhVHyZCukC96SciEhUmvZkGXICwcGV0n46tTGwJgamvZdJ81mP1yvL0VI+EuqnLUG6S1xASNBQBgOFcHaBREzB7Z3keLOyiqsMT1b1cLFK2ycolv+6lkw5RNUgKZoB/8ERM1nZ2iwfvepyJ3I77kHoyGa5YQwUbeOKfapXiOhNLgAag54+Ny/KvWkoJwTSgTJdb9YUnIn9Kf1IX9wXa8XT/EJQAhCmUeiUIrCWUz1WwpKlQAiw/uOY5Ay1qlhwQycenDqMeCuFNL6T6XSh0dfomYZMgwvkO5Pna1gs4aCOFOoZsGfnyBZovOZHz9ayaGH6pmnQI1aZf5JSdCjGtLiKW1nh9KTykeNwmLKqaowvmjnp6z4qeFtufKr0f5iJ2AKgPV4Mv/9Wjy4tzbTiR3cF9fA3P9LSo/iC+BpVQ5b5DK7WYpWRjY9WNa3NCDEDIxQYfD45Fv7FMOxNTBufIjd4rhkmNNdngunxyxrXBqo6igaXlTII2nK/Ft8kYuZGjoXisJCDAQgZMYYT9n1IbpmC2XyJ3pHilSHl53D3aYiZK7Zpr6HiLPlb3gZGXHcPxCB+DcIzP9tzUilrOMtlFtwlHERICIl1AMRlr+J32ZnqLtd78s2d4DBUc1fCZDsKfD7CQX/nHrVHmYmgJkXD/QskFQ+ww2QcmgW6ymB1/ocf6MCOzwYIV4SN1waNgHOJhO468nAbXSTRqHnK5uTWTD1URS0DrBxNoDwrkrGnRAgieT5JiBFbuz36HYK2UKoi/UAd0TI5HYphLy49AlknPKjfKdCQof+3nYOzlSGj3dtp5O3+JA3puJxKJdwRHXINAUaUoq4tbkB2WJpYlHWJ9K4gf1aMnjJ6wmTyNljIjdlOTMDmetMgFGk0hDM1MYNiJpQQzOu64tNkST9OmuL+Ng+LNr1d+ACzzzjdy0FAN1OnATvoa8pJfhAlWWRIKggFcqZg/0kgVKe6rSWyjFjhGgJPIcRhUtJMJWlW1XxNW+bKTmZHU8Jq3LS1RDbVsb5crPRSuUiQZhgm/M44LcqWxBDX9KYnsfYrF6JyizYyrsQcTl8JlToRIePZPPbT7pra8BIeo4w8NZ1IJNqiogpFCRimODGviLzoJb1FUXHNJuo6lKVYTiK65xGuwjhWpEIEQ2NgBpDpEqnfwIrwsfE4WxlFTWiPgtjhRiF3UYigCUQHcQaF9igv69puW35iXa2qcixy1TGayJaASQLMGbtPBmdp0aR6ISohtHRb4At+WHUPEOOfyFUjlC+gavN7R1Iq2FUJ8k/bO/C1WP8SMagsyguwK970S6Q5S+Cq5o2bFijdOXlety/hzSLLJ5ZwyFHL9l2gFOS9Fo3b5Vk6aXFOA7S9NKdCdWQp0B3RtOw0ySH1Cx4bgfNdHLFVsJR2UKqpCp1NKQKu2yXC3XyQe0eBxKZa1pJFHKNGEUQWjf5ykgiW5E1lswgsIscSMlAyZSaRqhIHt8TrNOY3WONtuGwUE2sYS84xK2m6ytk5kmNaKEygNV9CNOp3oJF8fRTcfJGptMCjbxQ1ngxU7Ed3Xw7p84nz6gucsUlD2d6bpfz+xE+l8+PDd/1oGec2GGe75PFNRSnfp7Cey96tJIjwE1WIvJaOUVeH20p92AiW6gIEznCPsD+S2ZM66cLIPOdVyw3PypXAFjBXlIzdFAQvHdUpyjScM+zNPa9RJTECcOIbigpxYQHghRF+f65mA0fqRzhrL+bUKsZLlu1kBMG44rX3sjRNDtAeOJb2nONBsBIECeIVzVlCEpVjGuuP26c0iqEGAFRy0q57z+aT+I4zQi9R9wHCEBARV0USWgpmrfPI9dW5QHQDdu7gzmOtYW0JecagsCFarcDLahCZAxrww7uUx8kYEIZX/KkobDZqC7NMAttBRsfUsBUKPJIfjpFViTLYBSFn2PvxFlWZpB5U5VOgSjRlNAPylKF0Nr6HBDlUpslD7ZZXiwxrU9MgOeuOxA894oKHgW8g7xa4fvfHb4cdbpGOuZ3RFUibqBLSHwfW9G4y9CSHxerUQChGYdxBnrX8ITuTndNHuZV366drkSm2VJ+iJdtVa0MUlNRMSZ2qygRdYkaOxEyVYrPtuJOwawhXWzDLiKoElrUzfpmBM8kMryOg9eWsR/AYV9gJon/J7iyUyHpUFU0Brjyb5BSTKGFCIsK/P91ivHDao+YJ5MVp5f+PcTeEJj8u1X6OH+y+gcSRBM6MIqAFynQrjZEI1fWtAQi9d9NsNAIf7wMIi+QmLMuW9VRvi1ADrKfAQtYx5wlMcCPTvgHNoTwJCZmSLwy/jlJkzHR6O1mHgMXHhdgKdl/4cQXbOD+C/X8yqeQtl2B87Xc/uKfkyqiblT6j1ZZj1+o31ohRV35ejUgAcn8jSkTx9S8EuMJy8CocBw3cmVaFjjMtKQKK+WQon05VxYTjmsVEby06vcfOHqHJiZcwJSgWqNQgCxprQidRjngwHLcOUHExdi/dJc/1tNuRipNVO7g2fvcWLIS1CGVJk7WwQ3qylmeMAjxfQd2Kg+kCTOokRe1z5OoUpusbaXsXZLau6UKsIItPLS3Zc1MAaFTVhYZVdBMUwQUyaiWRSIkc7Bj26lTEUg01BEK6UYHUAQuBAhUY5CuLTjCIsfHSw9SZBRsato5F8JuK6UkqLparOZcicLOOmkWgoWY1QGi5ipjUSjEKg2Z7dx4pny2hMF8eJG6sF6k3/bEB42OaWs0N6iA10IqEPJ96RRB8K6bDxLZtkZmUHIa58MXjmfowuDCXiO+7UMfK6uioCYaj2RFksyzGZLQfDyihThQru0VUqexXjV8hy2cVsWHV0oM330SQg91OyRR1vc4RibLx8r7uuxgHEmaXg2OI8nTS8o1EH7NqUnJ1GvtzP3WNSm5+q39c80KvkewQTt5uq0oCvt8X4jiFKPsVlHiOinINAJG2eTrF02metaoHK7CLnI0JVuU09JeBL1y4tuER2H3lDXiUIKhKhZ6aq6sLSEzj2t4Uzmv/qanpvtEiLEYUx/0ZZrl8aYTGXCFmpo5Na/+XO1KtgR9Jcm1fca+C/jwsgWfMQ5aW+GZh7osbS3PSoyRjSUqiImWUJ2Io1imQ92ojB0DGN4GdIKzRb4ONLgILE+j4LYyx1/HhdBKn7ZnBCOPMEAch3AAgcY0cFRiOV3yaqWVzInKxsR4RSCf+pYikNr0vyLwmzIOr7SAYQCIQpRRVAYlMzIpBI4AG38tJem6FkGAP5klvOX1MJ97NjnnsChL/m9PqMZdhbQQpmqOEvWlkWurcGaodqS/SwlaFkgaT6TfGGYC9aZuHan++dslp0WmGGr0jXzdlH/UpncWE1J79S0f2Tz2B7VOWXngN53jYYm4YvNFm720Doij296zTbOadTT5Z7N9qwxhZ4CAir4jbbmlAa2xh9YVyjuZRAbazAJRcLxZSN628i4BmAdrhtDDI/P7TgayLgUE950dEl0icO47FKJdKpAucoMFBOAICk+oRiKSikUdraBUKSZvOLcDBORHedkSWFfQNu4VX4+Kd0pDvSkNRpOumttuJVpzhiaOYpecGYOnb1ZBJK4dcxrTYPxLkUZjn5mQQVAR05FjMl8UkVXdSjx2ECKaWDZtyCwleMxLqmEqDN5MeduWMJkhJLcrcnCE4GZNFhAmejK1bT8JHbsrWVGtPRy3XdnwonUdR1zZcGkGEADi9YfF7i+Oh8X8kwTxCwB4Pu7wQwDw7ZLDoeRpZ6dtiQCAAwMAQOD/bJimpl3Qlh8Vkp/GaHZsguom76+H7G7gV52JtdPAjDw0Ue62otaVIaJM3r6s/b3KE0g3sxYQJfHaSUfEKIKJ3TCJetEn7qu/DUz32CRnJi7ikKyqU51NUEN23bvGiMPtxPYGYtQy5BoAk914PJ9yMPG+wmBOdzmOjpCRLqFwRkVEXG4DvyRByIoa5Sr1kuGaQXRknNHMgSwe1XSP2x6SyZ04kO+ShfV9uK9UQqPd+rgPCyI0g7wkz4VXUjy/ZgDPkEYN84lLF8cvX3ivK3bxzJ3C6qqJOSmjAMhKsijlByWGNslwlU0DLAM3GEAB1eBQtjCjTgEWkCAusJUSIAD6ucLUDGN3e2O2zurmEYerr/XBpD6w6g6v8EAizlcrsThWJFIrPZcARuc6Q2XDB+xvYBj4PPskh22bzi/jxYaNk5lhz8QJmLHBjQWRsO1aTGC3hLdeFFaoP0QNG5pMTlcqdKcNrFoJZRqPbEDnzx/8F9i/gpG2df5PpnGosjUAC+SQBhzIho0kaGlcgUMypWQe7tjTbZEA2KsYFsI3sBpsYIEayDnifMg/4kJ1JqetCzawVH2Y1RRAbMsFT21NA5yF1C0V601Nqga8RNrDOmZqyYzvu6b422WyMDYPIYBmmwxpvtS9SpLhluoMMR/q8dY/HQ6UTIg+b4Wx6RchIvXvZFoUVTYdOVkuWLDCEjVBAIL4UUGpFwZZWBHAhDRZcgVRIPBJHBD7RTRwfS8uSN0WDxjtlnhZQVJK9XLgrEYyKkslp5EtBYUEOdLSS0mJ+Vc6DID1VsOpIE2JTcNYOL8YBYTJ0pi0fI5GPsbw+gtJ3SPc6ihV9yRUQBFIjU0+EWpCGtxHW8Z7UXg8yWxzfRZy5sx5i+eWc012y9099rKsHZR1WBuV+FNkDLtgehaMRgYzsENYiwWYQpHgiZCqmyhLKfgvXGp+C73tzAPlNIKIgHsh4jLui5KykmSJZsU2sH1BK+Kpt7BK4tGWAlFIWPQRDYDmsfAqjBDzVGKt/mK3R/I6rlzgapWWsKRnQ7fEI8iFSAg+6hTUtHq7kTVB372Q0h7GoYbHcQl1Uc4WJprtwxr1BEOXyQ6Y4qAabtxNRfMrT9Ok5Xw5L958mNx0y213JA59+4GmE7jrnhmu2ui0M4L9KUQW0S+mz0MzXRcpSrQYv4sNgUhI1KpdhzZdOm2RxKKb1RMpepj4ML3sHJxcPpNvyHAoWMIdDoyQZFSMdC++wEKLjNrqK0ek+UYy0I9zSpaIJcZYrFYlKqbaVxqMC424cF1LeLDbHg5ylToyiWo1ZymBb0aAhIiVFbhelHGKSv5DFue4aGLz3odo4hptdNEjYogxbiREXGicRDpI74A2awhxSMXHnTgezjkvAZrAeHEaZhd0uOCiSy477oRrvkZhGPCsVW6D9SqUxDNeJnikVDM63spsiw/W3167QkvH1WaT7PAj8D6yEFMutfUxzcvz9f58f/9fY+MTk1PTM7Nz8wuLS8srq2sYEOi8gUEgsddpfa2x/YUM6tDTLMS2Rce5gMKxUiokDrLarD3We62NWn7H1lhI1LRI1FChRpBiBqSrvitGpyzs3nnG2gAaLQJ/ufrULteoGFnflvZ+c0Cgb/YqCk4rY+YEeZ/Jlqpa5GisajmOxu/TmEbJ4y9bAyQAQANTAhQCACihgakGQICiDnw11J72kXghsh6vbTYdNRkHNYRUVFnBqF3Xa1yGq7NOlclq/Kvhd5TYrhM6u10xcmaz5n1VpFWRPXHafzxCeWiaMmuZeW1P3f9PV6VNIdfeOy6gaOdM9jfVPYspZLJ4oJYr+XDojiOxl04c+2iggrC2nB7laca5DBEvxMlDwq2Km5sZvk/SaHLTzZVPCTlNi9Y9ntJE508jOyQnJg2xWLvH4yQFJq5Qc3v4+YEWLTucJh7MhtPUSEytcl46ovjb1HWLmc5u4xbfPxD7+S/zcwA="}},"time_used":88,"timings":{"blocked":-1,"dns":2,"connect":29,"send":0,"wait":27,"receive":30,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/revslider/public/assets/js/rbtools.min.js?ver=6.4.8","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.322Z","timestamp":1785145482322,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/revslider/public/assets/js/rbtools.min.js?ver=6.4.8 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\r\nSec-Fetch-Dest: script\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 200869\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":200869,"size_decoded":201087,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (514)","md5":"36a5d1f1b8f9a73423510cb1cbf0238c","sha1":"48781d5388c24e91655b02128d4b621521beee41","sha256":"be20cda7bf9529f74f396ab2771a6efd8aed373a158cf33e12db1d6d8c20ce9c","sha512":"4cd8190e64ce1e2488fb1044aea19bf44b594ea3681e66da79499a913257d30357d7a6cee009d5851ae8ccc4dfd398d9127fa21c309046049d9d096e4c1e7a0c","ssdeep":"6144:5egnja/vs6Ws9sWIHA2EyMHXNbLfBmSVrlxhOX2BZtOmtCHnj1QM:8gja/vsPs9sWIHA2EyM3NbLbrbouZtOF","tlshash":"9314634967e235359203f13a4d5fdd09b23a688f2a4aec0a790c91f45f1c53c87b9fa9","first_seen":"2025-08-10T22:12:07.372466Z","last_seen":"2026-07-27T09:45:50.955279Z","times_seen":8,"resource_available":true,"data":"ISBmdW5jdGlvbih0KSB7CiAgICB2YXIgZSA9IHt9OwoKICAgIGZ1bmN0aW9uIG4ocikgewogICAgICAgIGlmIChlW3JdKSByZXR1cm4gZVtyXS5leHBvcnRzOwogICAgICAgIHZhciBpID0gZVtyXSA9IHsKICAgICAgICAgICAgaTogciwKICAgICAgICAgICAgbDogITEsCiAgICAgICAgICAgIGV4cG9ydHM6IHt9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gdFtyXS5jYWxsKGkuZXhwb3J0cywgaSwgaS5leHBvcnRzLCBuKSwgaS5sID0gITAsIGkuZXhwb3J0cwogICAgfQogICAgbi5tID0gdCwgbi5jID0gZSwgbi5kID0gZnVuY3Rpb24odCwgZSwgcikgewogICAgICAgIG4ubyh0LCBlKSB8fCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwgewogICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgZ2V0OiByCiAgICAgICAgfSkKICAgIH0sIG4uciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAidW5kZWZpbmVkIiAhPSB0eXBlb2YgU3ltYm9sICYmIFN5bWJvbC50b1N0cmluZ1RhZyAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7CiAgICAgICAgICAgIHZhbHVlOiAiTW9kdWxlIgogICAgICAgIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pCiAgICB9LCBuLnQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgaWYgKDEgJiBlICYmICh0ID0gbih0KSksIDggJiBlKSByZXR1cm4gdDsKICAgICAgICBpZiAoNCAmIGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgdCAmJiB0Ll9fZXNNb2R1bGUpIHJldHVybiB0OwogICAgICAgIHZhciByID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICBpZiAobi5yKHIpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkociwgImRlZmF1bHQiLCB7CiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgIH0pLCAyICYgZSAmJiAic3RyaW5nIiAhPSB0eXBlb2YgdCkKICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0KSBuLmQociwgaSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRbZV0KICAgICAgICAgICAgfS5iaW5kKG51bGwsIGkpKTsKICAgICAgICByZXR1cm4gcgogICAgfSwgbi5uID0gZnVuY3Rpb24odCkgewogICAgICAgIHZhciBlID0gdCAmJiB0Ll9fZXNNb2R1bGUgPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHQuZGVmYXVsdAogICAgICAgIH0gOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9OwogICAgICAgIHJldHVybiBuLmQoZSwgImEiLCBlKSwgZQogICAgfSwgbi5vID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgZSkKICAgIH0sIG4ucCA9ICIiLCBuKG4ucyA9IDEpCn0oW2Z1bmN0aW9uKHQsIGUpIHsKICAgIHQuZXhwb3J0cyA9IGpRdWVyeQp9LCBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICBuKDIpLCBuKDYpLCB0LmV4cG9ydHMgPSBuKDQpCn0sIGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgIHZhciByLCBpLCB1LCBzOwogICAgLyohCiAgICAgKiBAZmlsZU92ZXJ2aWV3IFRvdWNoU3dpcGUgLSBqUXVlcnkgUGx1Z2luIEB2ZXJzaW9uIDEuNi4xOCAvIFNBTkRCT1hFRCBWRVJTSU9OIEZPUiBUUAogICAgICogQGF1dGhvciBNYXR0IEJyeXNvbiBodHRwOi8vd3d3LmdpdGh1Yi5jb20vbWF0dGJyeXNvbgogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWF0dGJyeXNvbi9Ub3VjaFN3aXBlLUpxdWVyeS1QbHVnaW4KICAgICAqIEBzZWUgaHR0cDovL2xhYnMucmFtcGludGVyYWN0aXZlLmNvLnVrL3RvdWNoU3dpcGUvCiAgICAgKiBAc2VlIGh0dHA6Ly9wbHVnaW5zLmpxdWVyeS5jb20vcHJvamVjdC90b3VjaFN3aXBlCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTUgTWF0dCBCcnlzb24KICAgICAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogICAgICoKICAgICAqLwogICAgcyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGUgPSAibGVmdCIsCiAgICAgICAgICAgIG4gPSAicmlnaHQiLAogICAgICAgICAgICByID0gInVwIiwKICAgICAgICAgICAgaSA9ICJkb3duIiwKICAgICAgICAgICAgdSA9ICJub25lIiwKICAgICAgICAgICAgcyA9ICJkb3VibGV0YXAiLAogICAgICAgICAgICBvID0gImxvbmd0YXAiLAogICAgICAgICAgICBhID0gImhvcml6b250YWwiLAogICAgICAgICAgICBsID0gInZlcnRpY2FsIiwKICAgICAgICAgICAgaCA9ICJhbGwiLAogICAgICAgICAgICBmID0gIm1vdmUiLAogICAgICAgICAgICBEID0gImVuZCIsCiAgICAgICAgICAgIHAgPSAiY2FuY2VsIiwKICAgICAgICAgICAgYyA9ICJvbnRvdWNoc3RhcnQiIGluIHdpbmRvdywKICAgICAgICAgICAgZCA9IHdpbmRvdy5uYXZpZ2F0b3IubXNQb2ludGVyRW5hYmxlZCAmJiAhd2luZG93LlBvaW50ZXJFdmVudCAmJiAhYywKICAgICAgICAgICAgZyA9ICh3aW5kb3cuUG9pbnRlckV2ZW50IHx8IHdpbmRvdy5uYXZpZ2F0b3IubXNQb2ludGVyRW5hYmxlZCkgJiYgIWMsCiAgICAgICAgICAgIF8gPSAiVG91Y2hTd2lwZSI7CgogICAgICAgIGZ1bmN0aW9uIG0obSwgdikgewogICAgICAgICAgICB2ID0gdC5leHRlbmQoe30sIHYpOwogICAgICAgICAgICB2YXIgeSA9IGMgfHwgZyB8fCAhdi5mYWxsYmFja1RvTW91c2VFdmVudHMsCiAgICAgICAgICAgICAgICBDID0geSA/IGcgPyBkID8gIk1TUG9pbnRlckRvd24iIDogInBvaW50ZXJkb3duIiA6ICJ0b3VjaHN0YXJ0IiA6ICJtb3VzZWRvd24iLAogICAgICAgICAgICAgICAgeCA9IHkgPyBnID8gZCA/ICJNU1BvaW50ZXJNb3ZlIiA6ICJwb2ludGVybW92ZSIgOiAidG91Y2htb3ZlIiA6ICJtb3VzZW1vdmUiLAogICAgICAgICAgICAgICAgRiA9IHkgPyBnID8gZCA/ICJNU1BvaW50ZXJVcCIgOiAicG9pbnRlcnVwIiA6ICJ0b3VjaGVuZCIgOiAibW91c2V1cCIsCiAgICAgICAgICAgICAgICB3ID0geSA/IGcgPyAibW91c2VsZWF2ZSIgOiBudWxsIDogIm1vdXNlbGVhdmUiLAogICAgICAgICAgICAgICAgRSA9IGcgPyBkID8gIk1TUG9pbnRlckNhbmNlbCIgOiAicG9pbnRlcmNhbmNlbCIgOiAidG91Y2hjYW5jZWwiLAogICAgICAgICAgICAgICAgYiA9IDAsCiAgICAgICAgICAgICAgICBUID0gbnVsbCwKICAgICAgICAgICAgICAgIEEgPSBudWxsLAogICAgICAgICAgICAgICAgTSA9IDAsCiAgICAgICAgICAgICAgICBPID0gMCwKICAgICAgICAgICAgICAgIFMgPSAwLAogICAgICAgICAgICAgICAgUCA9IDEsCiAgICAgICAgICAgICAgICBCID0gMCwKICAgICAgICAgICAgICAgIGsgPSAwLAogICAgICAgICAgICAgICAgTCA9IG51bGwsCiAgICAgICAgICAgICAgICBOID0gdChtKSwKICAgICAgICAgICAgICAgIFIgPSAic3RhcnQiLAogICAgICAgICAgICAgICAgSSA9IDAsCiAgICAgICAgICAgICAgICB6ID0ge30sCiAgICAgICAgICAgICAgICBZID0gMCwKICAgICAgICAgICAgICAgIFggPSAwLAogICAgICAgICAgICAgICAgaiA9IDAsCiAgICAgICAgICAgICAgICBWID0gMCwKICAgICAgICAgICAgICAgIFUgPSAwLAogICAgICAgICAgICAgICAgVyA9IG51bGwsCiAgICAgICAgICAgICAgICBxID0gbnVsbDsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIE4ub24oQywgRyksIE4ub24oRSwgSykKICAgICAgICAgICAgfSBjYXRjaCAobSkgewogICAgICAgICAgICAgICAgdC5lcnJvcigiZXZlbnRzIG5vdCBzdXBwb3J0ZWQgIiArIEMgKyAiLCIgKyBFICsgIiBvbiBqUXVlcnkuc3dpcGUiKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBHKHUpIHsKICAgICAgICAgICAgICAgIGlmICghMCAhPT0gTi5kYXRhKF8gKyAiX2ludG91Y2giKSAmJiAhKDAgPCB0KHUudGFyZ2V0KS5jbG9zZXN0KHYuZXhjbHVkZWRFbGVtZW50cywgTikubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gdS5vcmlnaW5hbEV2ZW50ID8gdS5vcmlnaW5hbEV2ZW50IDogdTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXMucG9pbnRlclR5cGUgfHwgIm1vdXNlIiAhPSBzLnBvaW50ZXJUeXBlIHx8IDAgIT0gdi5mYWxsYmFja1RvTW91c2VFdmVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIGwgPSBzLnRvdWNoZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbCA/IGxbMF0gOiBzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUiA9ICJzdGFydCIsIGwgPyBJID0gbC5sZW5ndGggOiAhMSAhPT0gdi5wcmV2ZW50RGVmYXVsdEV2ZW50cyAmJiB1LnByZXZlbnREZWZhdWx0KCksIGsgPSBBID0gVCA9IG51bGwsIFAgPSAxLCBCID0gUyA9IE8gPSBNID0gYiA9IDAsIChhID0ge30pW2VdID0geXQoZSksIGFbbl0gPSB5dChuKSwgYS51cCA9IHl0KHIpLCBhW2ldID0geXQoaSksIEwgPSBhLCBjdCgpLCBfdCgwLCBmKSwgIWwgfHwgSSA9PT0gdi5maW5nZXJzIHx8IHYuZmluZ2VycyA9PT0gaCB8fCBzdCgpID8gKFkgPSB3dCgpLCAyID09IEkgJiYgKF90KDEsIGxbMV0pLCBPID0gUyA9IHh0KHpbMF0uc3RhcnQsIHpbMV0uc3RhcnQpKSwgKHYuc3dpcGVTdGF0dXMgfHwgdi5waW5jaFN0YXR1cykgJiYgKG8gPSB0dChzLCBSKSkpIDogbyA9ICExLCAhMSA9PT0gbyA/ICh0dChzLCBSID0gcCksIG8pIDogKHYuaG9sZCAmJiAocSA9IHNldFRpbWVvdXQodC5wcm94eSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOLnRyaWdnZXIoImhvbGQiLCBbcy50YXJnZXRdKSwgdi5ob2xkICYmIChvID0gdi5ob2xkLmNhbGwoTiwgcywgcy50YXJnZXQpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcyksIHYubG9uZ1RhcFRocmVzaG9sZCkpLCBndCghMCksIG51bGwpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBIKHMpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gcy5vcmlnaW5hbEV2ZW50ID8gcy5vcmlnaW5hbEV2ZW50IDogczsKICAgICAgICAgICAgICAgIGlmIChSICE9PSBEICYmIFIgIT09IHAgJiYgIWR0KCkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYywgZCwgZywgXywgbSwgeSwgQywgeCA9IG8udG91Y2hlcywKICAgICAgICAgICAgICAgICAgICAgICAgRiA9IG10KHggPyB4WzBdIDogbyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKFggPSB3dCgpLCB4ICYmIChJID0geC5sZW5ndGgpLCB2LmhvbGQgJiYgY2xlYXJUaW1lb3V0KHEpLCBSID0gZiwgMiA9PSBJICYmICgwID09IE8gPyAoX3QoMSwgeFsxXSksIE8gPSBTID0geHQoelswXS5zdGFydCwgelsxXS5zdGFydCkpIDogKG10KHhbMV0pLCBTID0geHQoelswXS5lbmQsIHpbMV0uZW5kKSwgelswXS5lbmQsIHpbMV0uZW5kLCBrID0gUCA8IDEgPyAib3V0IiA6ICJpbiIpLCBQID0gKFMgLyBPICogMSkudG9GaXhlZCgyKSwgQiA9IE1hdGguYWJzKE8gLSBTKSksIEkgPT09IHYuZmluZ2VycyB8fCB2LmZpbmdlcnMgPT09IGggfHwgIXggfHwgc3QoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoVCA9IEZ0KEYuc3RhcnQsIEYuZW5kKSwgZnVuY3Rpb24odCwgcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMSAhPT0gdi5wcmV2ZW50RGVmYXVsdEV2ZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYuYWxsb3dQYWdlU2Nyb2xsID09PSB1KSB0LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAiYXV0byIgPT09IHYuYWxsb3dQYWdlU2Nyb2xsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodi5zd2lwZUxlZnQgJiYgbyB8fCAhbyAmJiB2LmFsbG93UGFnZVNjcm9sbCAhPSBhKSAmJiB0LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHYuc3dpcGVSaWdodCAmJiBvIHx8ICFvICYmIHYuYWxsb3dQYWdlU2Nyb2xsICE9IGEpICYmIHQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSByOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodi5zd2lwZVVwICYmIG8gfHwgIW8gJiYgdi5hbGxvd1BhZ2VTY3JvbGwgIT0gbCkgJiYgdC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2LnN3aXBlRG93biAmJiBvIHx8ICFvICYmIHYuYWxsb3dQYWdlU2Nyb2xsICE9IGwpICYmIHQucHJldmVudERlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHMsIEEgPSBGdChGLmxhc3QsIEYuZW5kKSksIHkgPSBGLnN0YXJ0LCBDID0gRi5lbmQsIGIgPSBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyhDLnggLSB5LngsIDIpICsgTWF0aC5wb3coQy55IC0geS55LCAyKSkpLCBNID0gQ3QoKSwgZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgIT0gdSAmJiAoZSA9IE1hdGgubWF4KGUsIHZ0KHQpKSwgTFt0XS5kaXN0YW5jZSA9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KFQsIGIpLCBjID0gdHQobywgUiksICF2LnRyaWdnZXJPblRvdWNoRW5kIHx8IHYudHJpZ2dlck9uVG91Y2hMZWF2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYudHJpZ2dlck9uVG91Y2hMZWF2ZSAmJiAoZyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAobSA9IChfID0gdChfID0gdGhpcykpLm9mZnNldCgpKS5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBtLmxlZnQgKyBfLm91dGVyV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IG0udG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogbS50b3AgKyBfLm91dGVySGVpZ2h0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHcgPSAoZCA9IEYuZW5kKS54ID4gZy5sZWZ0ICYmIGQueCA8IGcucmlnaHQgJiYgZC55ID4gZy50b3AgJiYgZC55IDwgZy5ib3R0b20pLCAhdi50cmlnZ2VyT25Ub3VjaEVuZCAmJiB3ID8gUiA9IEooZikgOiB2LnRyaWdnZXJPblRvdWNoTGVhdmUgJiYgIXcgJiYgKFIgPSBKKEQpKSwgUiAhPSBwICYmIFIgIT0gRCB8fCB0dChvLCBSKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHR0KG8sIFIgPSBwKTsKICAgICAgICAgICAgICAgICAgICAhMSA9PT0gYyAmJiB0dChvLCBSID0gcCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gUSh0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbiA9IHQub3JpZ2luYWxFdmVudCA/IHQub3JpZ2luYWxFdmVudCA6IHQsCiAgICAgICAgICAgICAgICAgICAgciA9IG4udG91Y2hlczsKICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIubGVuZ3RoICYmICFkdCgpKSByZXR1cm4gZSA9IG4sIGogPSB3dCgpLCBWID0gZS50b3VjaGVzLmxlbmd0aCArIDEsICEwOwogICAgICAgICAgICAgICAgICAgIGlmIChyLmxlbmd0aCAmJiBkdCgpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBkdCgpICYmIChJID0gViksIFggPSB3dCgpLCBNID0gQ3QoKSwgcnQoKSB8fCAhbnQoKSA/IHR0KG4sIFIgPSBwKSA6IHYudHJpZ2dlck9uVG91Y2hFbmQgfHwgITEgPT09IHYudHJpZ2dlck9uVG91Y2hFbmQgJiYgUiA9PT0gZiA/ICghMSAhPT0gdi5wcmV2ZW50RGVmYXVsdEV2ZW50cyAmJiAhMSAhPT0gdC5jYW5jZWxhYmxlICYmIHQucHJldmVudERlZmF1bHQoKSwgdHQobiwgUiA9IEQpKSA6ICF2LnRyaWdnZXJPblRvdWNoRW5kICYmIGZ0KCkgPyBldChuLCBSID0gRCwgInRhcCIpIDogUiA9PT0gZiAmJiB0dChuLCBSID0gcCksIGd0KCExKSwgbnVsbAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBLKCkgewogICAgICAgICAgICAgICAgUyA9IE8gPSBZID0gWCA9IEkgPSAwLCBQID0gMSwgY3QoKSwgZ3QoITEpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFoodCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0Lm9yaWdpbmFsRXZlbnQgPyB0Lm9yaWdpbmFsRXZlbnQgOiB0OwogICAgICAgICAgICAgICAgdi50cmlnZ2VyT25Ub3VjaExlYXZlICYmIHR0KGUsIFIgPSBKKEQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiAkKCkgewogICAgICAgICAgICAgICAgTi5vZmYoQywgRyksIE4ub2ZmKEUsIEspLCBOLm9mZih4LCBIKSwgTi5vZmYoRiwgUSksIHcgJiYgTi5vZmYodywgWiksIGd0KCExKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBKKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdCwKICAgICAgICAgICAgICAgICAgICBuID0gaXQoKSwKICAgICAgICAgICAgICAgICAgICByID0gbnQoKSwKICAgICAgICAgICAgICAgICAgICBpID0gcnQoKTsKICAgICAgICAgICAgICAgIHJldHVybiAhbiB8fCBpID8gZSA9IHAgOiAhciB8fCB0ICE9IGYgfHwgdi50cmlnZ2VyT25Ub3VjaEVuZCAmJiAhdi50cmlnZ2VyT25Ub3VjaExlYXZlID8gIXIgJiYgdCA9PSBEICYmIHYudHJpZ2dlck9uVG91Y2hMZWF2ZSAmJiAoZSA9IHApIDogZSA9IEQsIGUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdHQodCwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4sIHIgPSB0LnRvdWNoZXM7CiAgICAgICAgICAgICAgICByZXR1cm4gKG90KCkgJiYgYXQoKSB8fCBhdCgpKSAmJiAobiA9IGV0KHQsIGUsICJzd2lwZSIpKSwgKHV0KCkgJiYgc3QoKSB8fCBzdCgpKSAmJiAhMSAhPT0gbiAmJiAobiA9IGV0KHQsIGUsICJwaW5jaCIpKSwgcHQoKSAmJiBEdCgpICYmICExICE9PSBuID8gbiA9IGV0KHQsIGUsIHMpIDogTSA+IHYubG9uZ1RhcFRocmVzaG9sZCAmJiBiIDwgMTAgJiYgdi5sb25nVGFwICYmICExICE9PSBuID8gbiA9IGV0KHQsIGUsIG8pIDogMSAhPT0gSSAmJiBjIHx8ICEoaXNOYU4oYikgfHwgYiA8IHYudGhyZXNob2xkKSB8fCAhZnQoKSB8fCAhMSA9PT0gbiB8fCAobiA9IGV0KHQsIGUsICJ0YXAiKSksIGUgPT09IHAgJiYgSygpLCBlID09PSBEICYmIChyICYmIHIubGVuZ3RoIHx8IEsoKSksIG4KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZXQodSwgYSwgbCkgewogICAgICAgICAgICAgICAgdmFyIGg7CiAgICAgICAgICAgICAgICBpZiAoInN3aXBlIiA9PSBsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKE4udHJpZ2dlcigic3dpcGVTdGF0dXMiLCBbYSwgVCB8fCBudWxsLCBiIHx8IDAsIE0gfHwgMCwgSSwgeiwgQV0pLCB2LnN3aXBlU3RhdHVzICYmICExID09PSAoaCA9IHYuc3dpcGVTdGF0dXMuY2FsbChOLCB1LCBhLCBUIHx8IG51bGwsIGIgfHwgMCwgTSB8fCAwLCBJLCB6LCBBKSkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBpZiAoYSA9PSBEICYmIG90KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChXKSwgY2xlYXJUaW1lb3V0KHEpLCBOLnRyaWdnZXIoInN3aXBlIiwgW1QsIGIsIE0sIEksIHosIEFdKSwgdi5zd2lwZSAmJiAhMSA9PT0gKGggPSB2LnN3aXBlLmNhbGwoTiwgdSwgVCwgYiwgTSwgSSwgeiwgQSkpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4udHJpZ2dlcigic3dpcGVMZWZ0IiwgW1QsIGIsIE0sIEksIHosIEFdKSwgdi5zd2lwZUxlZnQgJiYgKGggPSB2LnN3aXBlTGVmdC5jYWxsKE4sIHUsIFQsIGIsIE0sIEksIHosIEEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOLnRyaWdnZXIoInN3aXBlUmlnaHQiLCBbVCwgYiwgTSwgSSwgeiwgQV0pLCB2LnN3aXBlUmlnaHQgJiYgKGggPSB2LnN3aXBlUmlnaHQuY2FsbChOLCB1LCBULCBiLCBNLCBJLCB6LCBBKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTi50cmlnZ2VyKCJzd2lwZVVwIiwgW1QsIGIsIE0sIEksIHosIEFdKSwgdi5zd2lwZVVwICYmIChoID0gdi5zd2lwZVVwLmNhbGwoTiwgdSwgVCwgYiwgTSwgSSwgeiwgQSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4udHJpZ2dlcigic3dpcGVEb3duIiwgW1QsIGIsIE0sIEksIHosIEFdKSwgdi5zd2lwZURvd24gJiYgKGggPSB2LnN3aXBlRG93bi5jYWxsKE4sIHUsIFQsIGIsIE0sIEksIHosIEEpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCJwaW5jaCIgPT0gbCkgewogICAgICAgICAgICAgICAgICAgIGlmIChOLnRyaWdnZXIoInBpbmNoU3RhdHVzIiwgW2EsIGsgfHwgbnVsbCwgQiB8fCAwLCBNIHx8IDAsIEksIFAsIHpdKSwgdi5waW5jaFN0YXR1cyAmJiAhMSA9PT0gKGggPSB2LnBpbmNoU3RhdHVzLmNhbGwoTiwgdSwgYSwgayB8fCBudWxsLCBCIHx8IDAsIE0gfHwgMCwgSSwgUCwgeikpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEgPT0gRCAmJiB1dCgpKSBzd2l0Y2ggKGspIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW4iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTi50cmlnZ2VyKCJwaW5jaEluIiwgW2sgfHwgbnVsbCwgQiB8fCAwLCBNIHx8IDAsIEksIFAsIHpdKSwgdi5waW5jaEluICYmIChoID0gdi5waW5jaEluLmNhbGwoTiwgdSwgayB8fCBudWxsLCBCIHx8IDAsIE0gfHwgMCwgSSwgUCwgeikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm91dCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOLnRyaWdnZXIoInBpbmNoT3V0IiwgW2sgfHwgbnVsbCwgQiB8fCAwLCBNIHx8IDAsIEksIFAsIHpdKSwgdi5waW5jaE91dCAmJiAoaCA9IHYucGluY2hPdXQuY2FsbChOLCB1LCBrIHx8IG51bGwsIEIgfHwgMCwgTSB8fCAwLCBJLCBQLCB6KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gInRhcCIgPT0gbCA/IGEgIT09IHAgJiYgYSAhPT0gRCB8fCAoY2xlYXJUaW1lb3V0KFcpLCBjbGVhclRpbWVvdXQocSksIER0KCkgJiYgIXB0KCkgPyAoVSA9IHd0KCksIFcgPSBzZXRUaW1lb3V0KHQucHJveHkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIFUgPSBudWxsLCBOLnRyaWdnZXIoInRhcCIsIFt1LnRhcmdldF0pLCB2LnRhcCAmJiAoaCA9IHYudGFwLmNhbGwoTiwgdSwgdS50YXJnZXQpKQogICAgICAgICAgICAgICAgfSksIHRoaXMpLCB2LmRvdWJsZVRhcFRocmVzaG9sZCkpIDogKFUgPSBudWxsLCBOLnRyaWdnZXIoInRhcCIsIFt1LnRhcmdldF0pLCB2LnRhcCAmJiAoaCA9IHYudGFwLmNhbGwoTiwgdSwgdS50YXJnZXQpKSkpIDogbCA9PSBzID8gYSAhPT0gcCAmJiBhICE9PSBEIHx8IChjbGVhclRpbWVvdXQoVyksIGNsZWFyVGltZW91dChxKSwgVSA9IG51bGwsIE4udHJpZ2dlcigiZG91YmxldGFwIiwgW3UudGFyZ2V0XSksIHYuZG91YmxlVGFwICYmIChoID0gdi5kb3VibGVUYXAuY2FsbChOLCB1LCB1LnRhcmdldCkpKSA6IGwgPT0gbyAmJiAoYSAhPT0gcCAmJiBhICE9PSBEIHx8IChjbGVhclRpbWVvdXQoVyksIFUgPSBudWxsLCBOLnRyaWdnZXIoImxvbmd0YXAiLCBbdS50YXJnZXRdKSwgdi5sb25nVGFwICYmIChoID0gdi5sb25nVGFwLmNhbGwoTiwgdSwgdS50YXJnZXQpKSkpLCBoCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIG50KCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAhMDsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSB2LnRocmVzaG9sZCAmJiAodCA9IGIgPj0gdi50aHJlc2hvbGQpLCB0CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHJ0KCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAhMTsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSB2LmNhbmNlbFRocmVzaG9sZCAmJiBudWxsICE9PSBUICYmICh0ID0gdnQoVCkgLSBiID49IHYuY2FuY2VsVGhyZXNob2xkKSwgdAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBpdCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhKHYubWF4VGltZVRocmVzaG9sZCAmJiBNID49IHYubWF4VGltZVRocmVzaG9sZCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdXQoKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGx0KCksCiAgICAgICAgICAgICAgICAgICAgZSA9IGh0KCksCiAgICAgICAgICAgICAgICAgICAgbiA9IG51bGwgPT09IHYucGluY2hUaHJlc2hvbGQgfHwgQiA+PSB2LnBpbmNoVGhyZXNob2xkOwogICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgZSAmJiBuCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHN0KCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHYucGluY2hTdGF0dXMgfHwgdi5waW5jaEluIHx8IHYucGluY2hPdXQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gb3QoKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGl0KCksCiAgICAgICAgICAgICAgICAgICAgZSA9IG50KCksCiAgICAgICAgICAgICAgICAgICAgbiA9IGx0KCksCiAgICAgICAgICAgICAgICAgICAgciA9IGh0KCk7CiAgICAgICAgICAgICAgICByZXR1cm4gIXJ0KCkgJiYgciAmJiBuICYmIGUgJiYgdAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBhdCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2LnN3aXBlIHx8IHYuc3dpcGVTdGF0dXMgfHwgdi5zd2lwZUxlZnQgfHwgdi5zd2lwZVJpZ2h0IHx8IHYuc3dpcGVVcCB8fCB2LnN3aXBlRG93bgogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBsdCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBJID09PSB2LmZpbmdlcnMgfHwgdi5maW5nZXJzID09PSBoIHx8ICFjCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGh0KCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDAgIT09IHpbMF0uZW5kLngKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZnQoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdi50YXAKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gRHQoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISF2LmRvdWJsZVRhcAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBwdCgpIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09IFUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIHZhciB0ID0gd3QoKTsKICAgICAgICAgICAgICAgIHJldHVybiBEdCgpICYmIHQgLSBVIDw9IHYuZG91YmxlVGFwVGhyZXNob2xkCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGN0KCkgewogICAgICAgICAgICAgICAgViA9IGogPSAwCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGR0KCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAhMTsKICAgICAgICAgICAgICAgIHJldHVybiBqICYmIHd0KCkgLSBqIDw9IHYuZmluZ2VyUmVsZWFzZVRocmVzaG9sZCAmJiAodCA9ICEwKSwgdAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBndCh0KSB7CiAgICAgICAgICAgICAgICBOICYmICghMCA9PT0gdCA/IChOLm9uKHgsIEgpLCBOLm9uKEYsIFEpLCB3ICYmIE4ub24odywgWikpIDogKE4ub2ZmKHgsIEgsICExKSwgTi5vZmYoRiwgUSwgITEpLCB3ICYmIE4ub2ZmKHcsIFosICExKSksIE4uZGF0YShfICsgIl9pbnRvdWNoIiwgITAgPT09IHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBfdCh0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHsKICAgICAgICAgICAgICAgICAgICBzdGFydDogewogICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB5OiAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBsYXN0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVuZDogewogICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB5OiAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBuLnN0YXJ0LnggPSBuLmxhc3QueCA9IG4uZW5kLnggPSBlLnBhZ2VYIHx8IGUuY2xpZW50WCwgbi5zdGFydC55ID0gbi5sYXN0LnkgPSBuLmVuZC55ID0gZS5wYWdlWSB8fCBlLmNsaWVudFksIHpbdF0gPSBuCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIG10KHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdm9pZCAwICE9PSB0LmlkZW50aWZpZXIgPyB0LmlkZW50aWZpZXIgOiAwLAogICAgICAgICAgICAgICAgICAgIG4gPSB6W2VdIHx8IG51bGw7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbiAmJiAobiA9IF90KGUsIHQpKSwgbi5sYXN0LnggPSBuLmVuZC54LCBuLmxhc3QueSA9IG4uZW5kLnksIG4uZW5kLnggPSB0LnBhZ2VYIHx8IHQuY2xpZW50WCwgbi5lbmQueSA9IHQucGFnZVkgfHwgdC5jbGllbnRZLCBuCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHZ0KHQpIHsKICAgICAgICAgICAgICAgIGlmIChMW3RdKSByZXR1cm4gTFt0XS5kaXN0YW5jZQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB5dCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdCwKICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBDdCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBYIC0gWQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB4dCh0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IE1hdGguYWJzKHQueCAtIGUueCksCiAgICAgICAgICAgICAgICAgICAgciA9IE1hdGguYWJzKHQueSAtIGUueSk7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLnNxcnQobiAqIG4gKyByICogcikpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEZ0KHQsIHMpIHsKICAgICAgICAgICAgICAgIGlmIChhID0gcywgKG8gPSB0KS54ID09IGEueCAmJiBvLnkgPT0gYS55KSByZXR1cm4gdTsKICAgICAgICAgICAgICAgIHZhciBvLCBhLCBsLCBoLCBmLCBELCBwLCBjLCBkID0gKGggPSBzLCBmID0gKGwgPSB0KS54IC0gaC54LCBEID0gaC55IC0gbC55LCBwID0gTWF0aC5hdGFuMihELCBmKSwgKGMgPSBNYXRoLnJvdW5kKDE4MCAqIHAgLyBNYXRoLlBJKSkgPCAwICYmIChjID0gMzYwIC0gTWF0aC5hYnMoYykpLCBjKTsKICAgICAgICAgICAgICAgIHJldHVybiBkIDw9IDQ1ICYmIDAgPD0gZCB8fCBkIDw9IDM2MCAmJiAzMTUgPD0gZCA/IGUgOiAxMzUgPD0gZCAmJiBkIDw9IDIyNSA/IG4gOiA0NSA8IGQgJiYgZCA8IDEzNSA/IGkgOiByCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHd0KCkgewogICAgICAgICAgICAgICAgcmV0dXJuIChuZXcgRGF0ZSkuZ2V0VGltZSgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5lbmFibGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc2FibGUoKSwgTi5vbihDLCBHKSwgTi5vbihFLCBLKSwgTgogICAgICAgICAgICB9LCB0aGlzLmRpc2FibGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkKCksIE4KICAgICAgICAgICAgfSwgdGhpcy5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCksIE4uZGF0YShfLCBudWxsKSwgTiA9IG51bGwKICAgICAgICAgICAgfSwgdGhpcy5vcHRpb24gPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUpIHYgPSB0LmV4dGVuZCh2LCBlKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZvaWQgMCAhPT0gdltlXSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IG4pIHJldHVybiB2W2VdOwogICAgICAgICAgICAgICAgICAgIHZbZV0gPSBuCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICghZSkgcmV0dXJuIHY7CiAgICAgICAgICAgICAgICAgICAgdC5lcnJvcigiT3B0aW9uICIgKyBlICsgIiBkb2VzIG5vdCBleGlzdCBvbiBqUXVlcnkuc3dpcGUub3B0aW9ucyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQuZm4ucnNzd2lwZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSB0KHRoaXMpLAogICAgICAgICAgICAgICAgciA9IG4uZGF0YShfKTsKICAgICAgICAgICAgaWYgKHIgJiYgInN0cmluZyIgPT0gdHlwZW9mIGUpIHsKICAgICAgICAgICAgICAgIGlmIChyW2VdKSByZXR1cm4gcltlXS5hcHBseShyLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsKICAgICAgICAgICAgICAgIHQuZXJyb3IoIk1ldGhvZCAiICsgZSArICIgZG9lcyBub3QgZXhpc3Qgb24galF1ZXJ5LnJzc3dpcGUiKQogICAgICAgICAgICB9IGVsc2UgaWYgKHIgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUpIHIub3B0aW9uLmFwcGx5KHIsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIGVsc2UgaWYgKCEociB8fCAib2JqZWN0IiAhPSB0eXBlb2YgZSAmJiBlKSkgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhZSB8fCB2b2lkIDAgIT09IGUuYWxsb3dQYWdlU2Nyb2xsIHx8IHZvaWQgMCA9PT0gZS5zd2lwZSAmJiB2b2lkIDAgPT09IGUuc3dpcGVTdGF0dXMgfHwgKGUuYWxsb3dQYWdlU2Nyb2xsID0gdSksIHZvaWQgMCAhPT0gZS5jbGljayAmJiB2b2lkIDAgPT09IGUudGFwICYmIChlLnRhcCA9IGUuY2xpY2spLCBlID0gZSB8fCB7fSwgZSA9IHQuZXh0ZW5kKHt9LCB0LmZuLnJzc3dpcGUuZGVmYXVsdHMsIGUpLCB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4uZGF0YShfKTsKICAgICAgICAgICAgICAgICAgICByIHx8IChyID0gbmV3IG0odGhpcywgZSksIG4uZGF0YShfLCByKSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgfSwgdC5mbi5yc3N3aXBlLnZlcnNpb24gPSAiMS42LjE4IiwgdC5mbi5yc3N3aXBlLmRlZmF1bHRzID0gewogICAgICAgICAgICBmaW5nZXJzOiAxLAogICAgICAgICAgICB0aHJlc2hvbGQ6IDc1LAogICAgICAgICAgICBjYW5jZWxUaHJlc2hvbGQ6IG51bGwsCiAgICAgICAgICAgIHBpbmNoVGhyZXNob2xkOiAyMCwKICAgICAgICAgICAgbWF4VGltZVRocmVzaG9sZDogbnVsbCwKICAgICAgICAgICAgZmluZ2VyUmVsZWFzZVRocmVzaG9sZDogMjUwLAogICAgICAgICAgICBsb25nVGFwVGhyZXNob2xkOiA1MDAsCiAgICAgICAgICAgIGRvdWJsZVRhcFRocmVzaG9sZDogMjAwLAogICAgICAgICAgICBzd2lwZTogbnVsbCwKICAgICAgICAgICAgc3dpcGVMZWZ0OiBudWxsLAogICAgICAgICAgICBzd2lwZVJpZ2h0OiBudWxsLAogICAgICAgICAgICBzd2lwZVVwOiBudWxsLAogICAgICAgICAgICBzd2lwZURvd246IG51bGwsCiAgICAgICAgICAgIHN3aXBlU3RhdHVzOiBudWxsLAogICAgICAgICAgICBwaW5jaEluOiBudWxsLAogICAgICAgICAgICBwaW5jaE91dDogbnVsbCwKICAgICAgICAgICAgcGluY2hTdGF0dXM6IG51bGwsCiAgICAgICAgICAgIGNsaWNrOiBudWxsLAogICAgICAgICAgICB0YXA6IG51bGwsCiAgICAgICAgICAgIGRvdWJsZVRhcDogbnVsbCwKICAgICAgICAgICAgbG9uZ1RhcDogbnVsbCwKICAgICAgICAgICAgaG9sZDogbnVsbCwKICAgICAgICAgICAgdHJpZ2dlck9uVG91Y2hFbmQ6ICEwLAogICAgICAgICAgICB0cmlnZ2VyT25Ub3VjaExlYXZlOiAhMSwKICAgICAgICAgICAgYWxsb3dQYWdlU2Nyb2xsOiAiYXV0byIsCiAgICAgICAgICAgIGZhbGxiYWNrVG9Nb3VzZUV2ZW50czogITAsCiAgICAgICAgICAgIGV4Y2x1ZGVkRWxlbWVudHM6ICIubm9Td2lwZSIsCiAgICAgICAgICAgIHByZXZlbnREZWZhdWx0RXZlbnRzOiAhMAogICAgICAgIH0sIHQuZm4ucnNzd2lwZS5waGFzZXMgPSB7CiAgICAgICAgICAgIFBIQVNFX1NUQVJUOiAic3RhcnQiLAogICAgICAgICAgICBQSEFTRV9NT1ZFOiBmLAogICAgICAgICAgICBQSEFTRV9FTkQ6IEQsCiAgICAgICAgICAgIFBIQVNFX0NBTkNFTDogcAogICAgICAgIH0sIHQuZm4ucnNzd2lwZS5kaXJlY3Rpb25zID0gewogICAgICAgICAgICBMRUZUOiBlLAogICAgICAgICAgICBSSUdIVDogbiwKICAgICAgICAgICAgVVA6IHIsCiAgICAgICAgICAgIERPV046IGksCiAgICAgICAgICAgIElOOiAiaW4iLAogICAgICAgICAgICBPVVQ6ICJvdXQiCiAgICAgICAgfSwgdC5mbi5yc3N3aXBlLnBhZ2VTY3JvbGwgPSB7CiAgICAgICAgICAgIE5PTkU6IHUsCiAgICAgICAgICAgIEhPUklaT05UQUw6IGEsCiAgICAgICAgICAgIFZFUlRJQ0FMOiBsLAogICAgICAgICAgICBBVVRPOiAiYXV0byIKICAgICAgICB9LCB0LmZuLnJzc3dpcGUuZmluZ2VycyA9IHsKICAgICAgICAgICAgT05FOiAxLAogICAgICAgICAgICBUV086IDIsCiAgICAgICAgICAgIFRIUkVFOiAzLAogICAgICAgICAgICBGT1VSOiA0LAogICAgICAgICAgICBGSVZFOiA1LAogICAgICAgICAgICBBTEw6IGgKICAgICAgICB9CiAgICB9LCBuKDMpLmpRdWVyeSA/IChpID0gW24oMCldLCB2b2lkIDAgPT09ICh1ID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YociA9IHMpID8gci5hcHBseShlLCBpKSA6IHIpIHx8ICh0LmV4cG9ydHMgPSB1KSkgOiB0LmV4cG9ydHMgPyBzKG4oMCkpIDogcyhqUXVlcnkpCn0sIGZ1bmN0aW9uKHQsIGUpIHsKICAgIChmdW5jdGlvbihlKSB7CiAgICAgICAgdC5leHBvcnRzID0gZQogICAgfSkuY2FsbCh0aGlzLCB7fSkKfSwgZnVuY3Rpb24odCwgZSkgewogICAgdmFyIG47CiAgICAobiA9IGpRdWVyeSkud2FpdEZvckltYWdlcyA9IHsKICAgICAgICBoYXNJbWFnZVByb3BlcnRpZXM6IFsiYmFja2dyb3VuZEltYWdlIiwgImxpc3RTdHlsZUltYWdlIiwgImJvcmRlckltYWdlIiwgImJvcmRlckNvcm5lckltYWdlIl0KICAgIH0sIG4uZXhwci5wc2V1ZG9zLnVuY2FjaGVkID0gZnVuY3Rpb24odCkgewogICAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CiAgICAgICAgcmV0dXJuIGUuc3JjID0gdC5zcmMsIG4odCkuaXMoJ2ltZ1tzcmMhPSIiXScpICYmICFlLmNvbXBsZXRlCiAgICB9LCBuLmZuLndhaXRGb3JJbWFnZXMgPSBmdW5jdGlvbih0LCBlLCByKSB7CiAgICAgICAgaWYgKG4uaXNQbGFpbk9iamVjdCh0KSAmJiAoZSA9IHQuZWFjaCwgciA9IHQud2FpdEZvckFsbCwgdCA9IHQuZmluaXNoZWQpLCB0ID0gdCB8fCBuLm5vb3AsIGUgPSBlIHx8IG4ubm9vcCwgciA9ICEhciwgIW4uaXNGdW5jdGlvbih0KSB8fCAhbi5pc0Z1bmN0aW9uKGUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJBbiBpbnZhbGlkIGNhbGxiYWNrIHdhcyBzdXBwbGllZC4iKTsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGkgPSBuKHRoaXMpLAogICAgICAgICAgICAgICAgdSA9IFtdOwogICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgdmFyIHMgPSBuLndhaXRGb3JJbWFnZXMuaGFzSW1hZ2VQcm9wZXJ0aWVzIHx8IFtdLAogICAgICAgICAgICAgICAgICAgIG8gPSAvdXJsXCgoWyciXT8pKC4qPylcMVwpL2c7CiAgICAgICAgICAgICAgICBpLmZpbmQoIioiKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4odGhpcyk7CiAgICAgICAgICAgICAgICAgICAgdC5pcygiaW1nOnVuY2FjaGVkIikgJiYgdS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0LmF0dHIoInNyYyIpLAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0WzBdCiAgICAgICAgICAgICAgICAgICAgfSksIG4uZWFjaChzLCAoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgaSA9IHQuY3NzKG4pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHIgPSBvLmV4ZWMoaSk7KSB1LnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiByWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdFswXQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0gZWxzZSBpLmZpbmQoImltZzp1bmNhY2hlZCIpLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuc3JjLAogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgdmFyIGEgPSB1Lmxlbmd0aCwKICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAwID09IGEgJiYgdC5jYWxsKGlbMF0pLCBuLmVhY2godSwgKGZ1bmN0aW9uKHIsIHUpIHsKICAgICAgICAgICAgICAgIHZhciBzID0gbmV3IEltYWdlOwogICAgICAgICAgICAgICAgbihzKS5iaW5kKCJsb2FkIGVycm9yIiwgKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAobCsrLCBlLmNhbGwodS5lbGVtZW50LCBsLCBhLCAibG9hZCIgPT0gbi50eXBlKSwgbCA9PSBhKSByZXR1cm4gdC5jYWxsKGlbMF0pLCAhMQogICAgICAgICAgICAgICAgfSkpLCBzLnNyYyA9IHUuc3JjCiAgICAgICAgICAgIH0pKQogICAgICAgIH0pKQogICAgfQp9LCAsIGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiByKHQpIHsKICAgICAgICBpZiAodm9pZCAwID09PSB0KSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgIHJldHVybiB0CiAgICB9CgogICAgZnVuY3Rpb24gaSh0LCBlKSB7CiAgICAgICAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSwgdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0LCB0Ll9fcHJvdG9fXyA9IGUKICAgIH0KICAgIC8qIQogICAgICogR1NBUCAzLjUuMQogICAgICogaHR0cHM6Ly9ncmVlbnNvY2suY29tCiAgICAgKgogICAgICogQGxpY2Vuc2UgQ29weXJpZ2h0IDIwMDgtMjAyMCwgR3JlZW5Tb2NrLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogU3ViamVjdCB0byB0aGUgdGVybXMgYXQgaHR0cHM6Ly9ncmVlbnNvY2suY29tL3N0YW5kYXJkLWxpY2Vuc2Ugb3IgZm9yCiAgICAgKiBDbHViIEdyZWVuU29jayBtZW1iZXJzLCB0aGUgYWdyZWVtZW50IGlzc3VlZCB3aXRoIHRoYXQgbWVtYmVyc2hpcC4KICAgICAqIEBhdXRob3I6IEphY2sgRG95bGUsIGphY2tAZ3JlZW5zb2NrLmNvbQogICAgICovCiAgICBuLnIoZSk7CiAgICB2YXIgdSwgcywgbywgYSwgbCwgaCwgZiwgRCwgcCwgYywgZCwgZywgXywgbSwgdiwgeSwgQywgeCwgRiwgdywgRSwgYiwgVCwgQSwgTSwgTywgUywgUCA9IHsKICAgICAgICAgICAgYXV0b1NsZWVwOiAxMjAsCiAgICAgICAgICAgIGZvcmNlM0Q6ICJhdXRvIiwKICAgICAgICAgICAgbnVsbFRhcmdldFdhcm46IDEsCiAgICAgICAgICAgIHVuaXRzOiB7CiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAiIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBCID0gewogICAgICAgICAgICBkdXJhdGlvbjogLjUsCiAgICAgICAgICAgIG92ZXJ3cml0ZTogITEsCiAgICAgICAgICAgIGRlbGF5OiAwCiAgICAgICAgfSwKICAgICAgICBrID0gMWU4LAogICAgICAgIEwgPSAyICogTWF0aC5QSSwKICAgICAgICBOID0gTCAvIDQsCiAgICAgICAgUiA9IDAsCiAgICAgICAgSSA9IE1hdGguc3FydCwKICAgICAgICB6ID0gTWF0aC5jb3MsCiAgICAgICAgWSA9IE1hdGguc2luLAogICAgICAgIFggPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdAogICAgICAgIH0sCiAgICAgICAgaiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQKICAgICAgICB9LAogICAgICAgIFYgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiA9PSB0eXBlb2YgdAogICAgICAgIH0sCiAgICAgICAgVSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdAogICAgICAgIH0sCiAgICAgICAgVyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiB0CiAgICAgICAgfSwKICAgICAgICBxID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gITEgIT09IHQKICAgICAgICB9LAogICAgICAgIEcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cKICAgICAgICB9LAogICAgICAgIEggPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBqKHQpIHx8IFgodCkKICAgICAgICB9LAogICAgICAgIFEgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBBcnJheUJ1ZmZlciAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcgfHwgZnVuY3Rpb24oKSB7fSwKICAgICAgICBLID0gQXJyYXkuaXNBcnJheSwKICAgICAgICBaID0gLyg/Oi0/XC4/XGR8XC4pKy9naSwKICAgICAgICAkID0gL1stKz0uXSpcZCtbLmVcLStdKlxkKltlXC1cK10qXGQqL2csCiAgICAgICAgSiA9IC9bLSs9Ll0qXGQrWy5lLV0qXGQqW2EteiVdKi9nLAogICAgICAgIHR0ID0gL1stKz0uXSpcZCsoPzpcLnxlLXxlKSpcZCovZ2ksCiAgICAgICAgZXQgPSAvWystXT0tP1tcLlxkXSsvLAogICAgICAgIG50ID0gL1sjXC0rLl0qXGJbYS16XGQtPSslLl0rL2dpLAogICAgICAgIHJ0ID0ge30sCiAgICAgICAgaXQgPSB7fSwKICAgICAgICB1dCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIChpdCA9IFN0KHQsIHJ0KSkgJiYgY24KICAgICAgICB9LAogICAgICAgIHN0ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKCJJbnZhbGlkIHByb3BlcnR5IiwgdCwgInNldCB0byIsIGUsICJNaXNzaW5nIHBsdWdpbj8gZ3NhcC5yZWdpc3RlclBsdWdpbigpIikKICAgICAgICB9LAogICAgICAgIG90ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gIWUgJiYgY29uc29sZS53YXJuKHQpCiAgICAgICAgfSwKICAgICAgICBhdCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHQgJiYgKHJ0W3RdID0gZSkgJiYgaXQgJiYgKGl0W3RdID0gZSkgfHwgcnQKICAgICAgICB9LAogICAgICAgIGx0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgfSwKICAgICAgICBodCA9IHt9LAogICAgICAgIGZ0ID0gW10sCiAgICAgICAgRHQgPSB7fSwKICAgICAgICBwdCA9IHt9LAogICAgICAgIGN0ID0ge30sCiAgICAgICAgZHQgPSAzMCwKICAgICAgICBndCA9IFtdLAogICAgICAgIF90ID0gIiIsCiAgICAgICAgbXQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlLCBuLCByID0gdFswXTsKICAgICAgICAgICAgaWYgKFcocikgfHwgaihyKSB8fCAodCA9IFt0XSksICEoZSA9IChyLl9nc2FwIHx8IHt9KS5oYXJuZXNzKSkgewogICAgICAgICAgICAgICAgZm9yIChuID0gZ3QubGVuZ3RoOyBuLS0gJiYgIWd0W25dLnRhcmdldFRlc3Qocik7KTsKICAgICAgICAgICAgICAgIGUgPSBndFtuXQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAobiA9IHQubGVuZ3RoOyBuLS07KSB0W25dICYmICh0W25dLl9nc2FwIHx8ICh0W25dLl9nc2FwID0gbmV3IEllKHRbbl0sIGUpKSkgfHwgdC5zcGxpY2UobiwgMSk7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSwKICAgICAgICB2dCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQuX2dzYXAgfHwgbXQoaWUodCkpWzBdLl9nc2FwCiAgICAgICAgfSwKICAgICAgICB5dCA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIChuID0gdFtlXSkgJiYgaihuKSA/IHRbZV0oKSA6IFUobikgJiYgdC5nZXRBdHRyaWJ1dGUgJiYgdC5nZXRBdHRyaWJ1dGUoZSkgfHwgbgogICAgICAgIH0sCiAgICAgICAgQ3QgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiAodCA9IHQuc3BsaXQoIiwiKSkuZm9yRWFjaChlKSB8fCB0CiAgICAgICAgfSwKICAgICAgICB4dCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoMWU1ICogdCkgLyAxZTUgfHwgMAogICAgICAgIH0sCiAgICAgICAgRnQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSBlLmxlbmd0aCwgciA9IDA7IHQuaW5kZXhPZihlW3JdKSA8IDAgJiYgKytyIDwgbjspOwogICAgICAgICAgICByZXR1cm4gciA8IG4KICAgICAgICB9LAogICAgICAgIHd0ID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICB2YXIgciwgaSA9IFYodFsxXSksCiAgICAgICAgICAgICAgICB1ID0gKGkgPyAyIDogMSkgKyAoZSA8IDIgPyAwIDogMSksCiAgICAgICAgICAgICAgICBzID0gdFt1XTsKICAgICAgICAgICAgaWYgKGkgJiYgKHMuZHVyYXRpb24gPSB0WzFdKSwgcy5wYXJlbnQgPSBuLCBlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHIgPSBzOyBuICYmICEoImltbWVkaWF0ZVJlbmRlciIgaW4gcik7KSByID0gbi52YXJzLmRlZmF1bHRzIHx8IHt9LCBuID0gcShuLnZhcnMuaW5oZXJpdCkgJiYgbi5wYXJlbnQ7CiAgICAgICAgICAgICAgICBzLmltbWVkaWF0ZVJlbmRlciA9IHEoci5pbW1lZGlhdGVSZW5kZXIpLCBlIDwgMiA/IHMucnVuQmFja3dhcmRzID0gMSA6IHMuc3RhcnRBdCA9IHRbdSAtIDFdCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICB9LAogICAgICAgIEV0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0LCBlLCBuID0gZnQubGVuZ3RoLAogICAgICAgICAgICAgICAgciA9IGZ0LnNsaWNlKDApOwogICAgICAgICAgICBmb3IgKER0ID0ge30sIGZ0Lmxlbmd0aCA9IDAsIHQgPSAwOyB0IDwgbjsgdCsrKShlID0gclt0XSkgJiYgZS5fbGF6eSAmJiAoZS5yZW5kZXIoZS5fbGF6eVswXSwgZS5fbGF6eVsxXSwgITApLl9sYXp5ID0gMCkKICAgICAgICB9LAogICAgICAgIGJ0ID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICBmdC5sZW5ndGggJiYgRXQoKSwgdC5yZW5kZXIoZSwgbiwgciksIGZ0Lmxlbmd0aCAmJiBFdCgpCiAgICAgICAgfSwKICAgICAgICBUdCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGUgPSBwYXJzZUZsb2F0KHQpOwogICAgICAgICAgICByZXR1cm4gKGUgfHwgMCA9PT0gZSkgJiYgKHQgKyAiIikubWF0Y2gobnQpLmxlbmd0aCA8IDIgPyBlIDogWCh0KSA/IHQudHJpbSgpIDogdAogICAgICAgIH0sCiAgICAgICAgQXQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSwKICAgICAgICBNdCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBlKSBuIGluIHQgfHwgKHRbbl0gPSBlW25dKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9LAogICAgICAgIE90ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBmb3IgKHZhciBuIGluIGUpIG4gaW4gdCB8fCAiZHVyYXRpb24iID09PSBuIHx8ICJlYXNlIiA9PT0gbiB8fCAodFtuXSA9IGVbbl0pCiAgICAgICAgfSwKICAgICAgICBTdCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBlKSB0W25dID0gZVtuXTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9LAogICAgICAgIFB0ID0gZnVuY3Rpb24gdChlLCBuKSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgaW4gbikgZVtyXSA9IFcobltyXSkgPyB0KGVbcl0gfHwgKGVbcl0gPSB7fSksIG5bcl0pIDogbltyXTsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LAogICAgICAgIEJ0ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgbiwgciA9IHt9OwogICAgICAgICAgICBmb3IgKG4gaW4gdCkgbiBpbiBlIHx8IChyW25dID0gdFtuXSk7CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfSwKICAgICAgICBrdCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGUgPSB0LnBhcmVudCB8fCB1LAogICAgICAgICAgICAgICAgbiA9IHQua2V5ZnJhbWVzID8gT3QgOiBNdDsKICAgICAgICAgICAgaWYgKHEodC5pbmhlcml0KSkKICAgICAgICAgICAgICAgIGZvciAoOyBlOykgbih0LCBlLnZhcnMuZGVmYXVsdHMpLCBlID0gZS5wYXJlbnQgfHwgZS5fZHA7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSwKICAgICAgICBMdCA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBuICYmIChuID0gIl9maXJzdCIpLCB2b2lkIDAgPT09IHIgJiYgKHIgPSAiX2xhc3QiKTsKICAgICAgICAgICAgdmFyIGkgPSBlLl9wcmV2LAogICAgICAgICAgICAgICAgdSA9IGUuX25leHQ7CiAgICAgICAgICAgIGkgPyBpLl9uZXh0ID0gdSA6IHRbbl0gPT09IGUgJiYgKHRbbl0gPSB1KSwgdSA/IHUuX3ByZXYgPSBpIDogdFtyXSA9PT0gZSAmJiAodFtyXSA9IGkpLCBlLl9uZXh0ID0gZS5fcHJldiA9IGUucGFyZW50ID0gbnVsbAogICAgICAgIH0sCiAgICAgICAgTnQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHQucGFyZW50ICYmICghZSB8fCB0LnBhcmVudC5hdXRvUmVtb3ZlQ2hpbGRyZW4pICYmIHQucGFyZW50LnJlbW92ZSh0KSwgdC5fYWN0ID0gMAogICAgICAgIH0sCiAgICAgICAgUnQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGlmICh0ICYmICghZSB8fCBlLl9lbmQgPiB0Ll9kdXIgfHwgZS5fc3RhcnQgPCAwKSkKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSB0OyBuOykgbi5fZGlydHkgPSAxLCBuID0gbi5wYXJlbnQ7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSwKICAgICAgICBJdCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IHQucGFyZW50OyBlICYmIGUucGFyZW50OykgZS5fZGlydHkgPSAxLCBlLnRvdGFsRHVyYXRpb24oKSwgZSA9IGUucGFyZW50OwogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0sCiAgICAgICAgenQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0Ll9yZXBlYXQgPyBZdCh0Ll90VGltZSwgdCA9IHQuZHVyYXRpb24oKSArIHQuX3JEZWxheSkgKiB0IDogMAogICAgICAgIH0sCiAgICAgICAgWXQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiAodCAvPSBlKSAmJiB+fnQgPT09IHQgPyB+fnQgLSAxIDogfn50CiAgICAgICAgfSwKICAgICAgICBYdCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuICh0IC0gZS5fc3RhcnQpICogZS5fdHMgKyAoZS5fdHMgPj0gMCA/IDAgOiBlLl9kaXJ0eSA/IGUudG90YWxEdXJhdGlvbigpIDogZS5fdER1cikKICAgICAgICB9LAogICAgICAgIGp0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5fZW5kID0geHQodC5fc3RhcnQgKyAodC5fdER1ciAvIE1hdGguYWJzKHQuX3RzIHx8IHQuX3J0cyB8fCAxZS04KSB8fCAwKSkKICAgICAgICB9LAogICAgICAgIFZ0ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgbiA9IHQuX2RwOwogICAgICAgICAgICByZXR1cm4gbiAmJiBuLnNtb290aENoaWxkVGltaW5nICYmIHQuX3RzICYmICh0Ll9zdGFydCA9IHh0KHQuX2RwLl90aW1lIC0gKHQuX3RzID4gMCA/IGUgLyB0Ll90cyA6ICgodC5fZGlydHkgPyB0LnRvdGFsRHVyYXRpb24oKSA6IHQuX3REdXIpIC0gZSkgLyAtdC5fdHMpKSwganQodCksIG4uX2RpcnR5IHx8IFJ0KG4sIHQpKSwgdAogICAgICAgIH0sCiAgICAgICAgVXQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICBpZiAoKGUuX3RpbWUgfHwgZS5faW5pdHRlZCAmJiAhZS5fZHVyKSAmJiAobiA9IFh0KHQucmF3VGltZSgpLCBlKSwgKCFlLl9kdXIgfHwgSnQoMCwgZS50b3RhbER1cmF0aW9uKCksIG4pIC0gZS5fdFRpbWUgPiAxZS04KSAmJiBlLnJlbmRlcihuLCAhMCkpLCBSdCh0LCBlKS5fZHAgJiYgdC5faW5pdHRlZCAmJiB0Ll90aW1lID49IHQuX2R1ciAmJiB0Ll90cykgewogICAgICAgICAgICAgICAgaWYgKHQuX2R1ciA8IHQuZHVyYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSB0OyBuLl9kcDspIG4ucmF3VGltZSgpID49IDAgJiYgbi50b3RhbFRpbWUobi5fdFRpbWUpLCBuID0gbi5fZHA7CiAgICAgICAgICAgICAgICB0Ll96VGltZSA9IC0xZS04CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIFd0ID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gZS5wYXJlbnQgJiYgTnQoZSksIGUuX3N0YXJ0ID0geHQobiArIGUuX2RlbGF5KSwgZS5fZW5kID0geHQoZS5fc3RhcnQgKyAoZS50b3RhbER1cmF0aW9uKCkgLyBNYXRoLmFicyhlLnRpbWVTY2FsZSgpKSB8fCAwKSksCiAgICAgICAgICAgICAgICBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBuICYmIChuID0gIl9maXJzdCIpLCB2b2lkIDAgPT09IHIgJiYgKHIgPSAiX2xhc3QiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdSwgcyA9IHRbcl07CiAgICAgICAgICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGVbaV07IHMgJiYgc1tpXSA+IHU7KSBzID0gcy5fcHJldjsKICAgICAgICAgICAgICAgICAgICBzID8gKGUuX25leHQgPSBzLl9uZXh0LCBzLl9uZXh0ID0gZSkgOiAoZS5fbmV4dCA9IHRbbl0sIHRbbl0gPSBlKSwgZS5fbmV4dCA/IGUuX25leHQuX3ByZXYgPSBlIDogdFtyXSA9IGUsIGUuX3ByZXYgPSBzLCBlLnBhcmVudCA9IGUuX2RwID0gdAogICAgICAgICAgICAgICAgfSh0LCBlLCAiX2ZpcnN0IiwgIl9sYXN0IiwgdC5fc29ydCA/ICJfc3RhcnQiIDogMCksIHQuX3JlY2VudCA9IGUsIHIgfHwgVXQodCwgZSksIHQKICAgICAgICB9LAogICAgICAgIHF0ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gKHJ0LlNjcm9sbFRyaWdnZXIgfHwgc3QoInNjcm9sbFRyaWdnZXIiLCBlKSkgJiYgcnQuU2Nyb2xsVHJpZ2dlci5jcmVhdGUoZSwgdCkKICAgICAgICB9LAogICAgICAgIEd0ID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gV2UodCwgZSksIHQuX2luaXR0ZWQgPyAhbiAmJiB0Ll9wdCAmJiAodC5fZHVyICYmICExICE9PSB0LnZhcnMubGF6eSB8fCAhdC5fZHVyICYmIHQudmFycy5sYXp5KSAmJiBoICE9PSBFZS5mcmFtZSA/IChmdC5wdXNoKHQpLCB0Ll9sYXp5ID0gW2UsIHJdLCAxKSA6IHZvaWQgMCA6IDEKICAgICAgICB9LAogICAgICAgIEh0ID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICB2YXIgaSA9IHQuX3JlcGVhdCwKICAgICAgICAgICAgICAgIHUgPSB4dChlKSB8fCAwLAogICAgICAgICAgICAgICAgcyA9IHQuX3RUaW1lIC8gdC5fdER1cjsKICAgICAgICAgICAgcmV0dXJuIHMgJiYgIXIgJiYgKHQuX3RpbWUgKj0gdSAvIHQuX2R1ciksIHQuX2R1ciA9IHUsIHQuX3REdXIgPSBpID8gaSA8IDAgPyAxZTEwIDogeHQodSAqIChpICsgMSkgKyB0Ll9yRGVsYXkgKiBpKSA6IHUsIHMgJiYgIXIgPyBWdCh0LCB0Ll90VGltZSA9IHQuX3REdXIgKiBzKSA6IHQucGFyZW50ICYmIGp0KHQpLCBuIHx8IFJ0KHQucGFyZW50LCB0KSwgdAogICAgICAgIH0sCiAgICAgICAgUXQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0IGluc3RhbmNlb2YgWWUgPyBSdCh0KSA6IEh0KHQsIHQuX2R1cikKICAgICAgICB9LAogICAgICAgIEt0ID0gewogICAgICAgICAgICBfc3RhcnQ6IDAsCiAgICAgICAgICAgIGVuZFRpbWU6IGx0CiAgICAgICAgfSwKICAgICAgICBadCA9IGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgdSA9IGUubGFiZWxzLAogICAgICAgICAgICAgICAgcyA9IGUuX3JlY2VudCB8fCBLdCwKICAgICAgICAgICAgICAgIG8gPSBlLmR1cmF0aW9uKCkgPj0gayA/IHMuZW5kVGltZSghMSkgOiBlLl9kdXI7CiAgICAgICAgICAgIHJldHVybiBYKG4pICYmIChpc05hTihuKSB8fCBuIGluIHUpID8gIjwiID09PSAociA9IG4uY2hhckF0KDApKSB8fCAiPiIgPT09IHIgPyAoIjwiID09PSByID8gcy5fc3RhcnQgOiBzLmVuZFRpbWUocy5fcmVwZWF0ID49IDApKSArIChwYXJzZUZsb2F0KG4uc3Vic3RyKDEpKSB8fCAwKSA6IChyID0gbi5pbmRleE9mKCI9IikpIDwgMCA/IChuIGluIHUgfHwgKHVbbl0gPSBvKSwgdVtuXSkgOiAoaSA9ICsobi5jaGFyQXQociAtIDEpICsgbi5zdWJzdHIociArIDEpKSwgciA+IDEgPyB0KGUsIG4uc3Vic3RyKDAsIHIgLSAxKSkgKyBpIDogbyArIGkpIDogbnVsbCA9PSBuID8gbyA6ICtuCiAgICAgICAgfSwKICAgICAgICAkdCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHQgfHwgMCA9PT0gdCA/IGUodCkgOiBlCiAgICAgICAgfSwKICAgICAgICBKdCA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIG4gPCB0ID8gdCA6IG4gPiBlID8gZSA6IG4KICAgICAgICB9LAogICAgICAgIHRlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gKHQgPSAodCArICIiKS5zdWJzdHIoKHBhcnNlRmxvYXQodCkgKyAiIikubGVuZ3RoKSkgJiYgaXNOYU4odCkgPyB0IDogIiIKICAgICAgICB9LAogICAgICAgIGVlID0gW10uc2xpY2UsCiAgICAgICAgbmUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiB0ICYmIFcodCkgJiYgImxlbmd0aCIgaW4gdCAmJiAoIWUgJiYgIXQubGVuZ3RoIHx8IHQubGVuZ3RoIC0gMSBpbiB0ICYmIFcodFswXSkpICYmICF0Lm5vZGVUeXBlICYmIHQgIT09IHMKICAgICAgICB9LAogICAgICAgIHJlID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBuICYmIChuID0gW10pLCB0LmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgcmV0dXJuIFgodCkgJiYgIWUgfHwgbmUodCwgMSkgPyAociA9IG4pLnB1c2guYXBwbHkociwgaWUodCkpIDogbi5wdXNoKHQpCiAgICAgICAgICAgIH0pKSB8fCBuCiAgICAgICAgfSwKICAgICAgICBpZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuICFYKHQpIHx8IGUgfHwgIW8gJiYgYmUoKSA/IEsodCkgPyByZSh0LCBlKSA6IG5lKHQpID8gZWUuY2FsbCh0LCAwKSA6IHQgPyBbdF0gOiBbXSA6IGVlLmNhbGwoYS5xdWVyeVNlbGVjdG9yQWxsKHQpLCAwKQogICAgICAgIH0sCiAgICAgICAgdWUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0LnNvcnQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIC41IC0gTWF0aC5yYW5kb20oKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIHNlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBpZiAoaih0KSkgcmV0dXJuIHQ7CiAgICAgICAgICAgIHZhciBlID0gVyh0KSA/IHQgOiB7CiAgICAgICAgICAgICAgICAgICAgZWFjaDogdAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG4gPSBCZShlLmVhc2UpLAogICAgICAgICAgICAgICAgciA9IGUuZnJvbSB8fCAwLAogICAgICAgICAgICAgICAgaSA9IHBhcnNlRmxvYXQoZS5iYXNlKSB8fCAwLAogICAgICAgICAgICAgICAgdSA9IHt9LAogICAgICAgICAgICAgICAgcyA9IHIgPiAwICYmIHIgPCAxLAogICAgICAgICAgICAgICAgbyA9IGlzTmFOKHIpIHx8IHMsCiAgICAgICAgICAgICAgICBhID0gZS5heGlzLAogICAgICAgICAgICAgICAgbCA9IHIsCiAgICAgICAgICAgICAgICBoID0gcjsKICAgICAgICAgICAgcmV0dXJuIFgocikgPyBsID0gaCA9IHsKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IC41LAogICAgICAgICAgICAgICAgICAgIGVkZ2VzOiAuNSwKICAgICAgICAgICAgICAgICAgICBlbmQ6IDEKICAgICAgICAgICAgICAgIH1bcl0gfHwgMCA6ICFzICYmIG8gJiYgKGwgPSByWzBdLCBoID0gclsxXSksCiAgICAgICAgICAgICAgICBmdW5jdGlvbih0LCBzLCBmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIEQsIHAsIGMsIGQsIGcsIF8sIG0sIHYsIHksIEMgPSAoZiB8fCBlKS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB1W0NdOwogICAgICAgICAgICAgICAgICAgIGlmICgheCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh5ID0gImF1dG8iID09PSBlLmdyaWQgPyAwIDogKGUuZ3JpZCB8fCBbMSwga10pWzFdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChtID0gLWs7IG0gPCAobSA9IGZbeSsrXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSAmJiB5IDwgQzspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeS0tCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh4ID0gdVtDXSA9IFtdLCBEID0gbyA/IE1hdGgubWluKHksIEMpICogbCAtIC41IDogciAlIHksIHAgPSBvID8gQyAqIGggLyB5IC0gLjUgOiByIC8geSB8IDAsIG0gPSAwLCB2ID0gaywgXyA9IDA7IF8gPCBDOyBfKyspIGMgPSBfICUgeSAtIEQsIGQgPSBwIC0gKF8gLyB5IHwgMCksIHhbX10gPSBnID0gYSA/IE1hdGguYWJzKCJ5IiA9PT0gYSA/IGQgOiBjKSA6IEkoYyAqIGMgKyBkICogZCksIGcgPiBtICYmIChtID0gZyksIGcgPCB2ICYmICh2ID0gZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICJyYW5kb20iID09PSByICYmIHVlKHgpLCB4Lm1heCA9IG0gLSB2LCB4Lm1pbiA9IHYsIHgudiA9IEMgPSAocGFyc2VGbG9hdChlLmFtb3VudCkgfHwgcGFyc2VGbG9hdChlLmVhY2gpICogKHkgPiBDID8gQyAtIDEgOiBhID8gInkiID09PSBhID8gQyAvIHkgOiB5IDogTWF0aC5tYXgoeSwgQyAvIHkpKSB8fCAwKSAqICgiZWRnZXMiID09PSByID8gLTEgOiAxKSwgeC5iID0gQyA8IDAgPyBpIC0gQyA6IGksIHgudSA9IHRlKGUuYW1vdW50IHx8IGUuZWFjaCkgfHwgMCwgbiA9IG4gJiYgQyA8IDAgPyBTZShuKSA6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEMgPSAoeFt0XSAtIHgubWluKSAvIHgubWF4IHx8IDAsIHh0KHguYiArIChuID8gbihDKSA6IEMpICogeC52KSArIHgudQogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgb2UgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gdCA8IDEgPyBNYXRoLnBvdygxMCwgKHQgKyAiIikubGVuZ3RoIC0gMikgOiAxOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yb3VuZChwYXJzZUZsb2F0KG4pIC8gdCkgKiB0ICogZSkgLyBlICsgKFYobikgPyAwIDogdGUobikpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGFlID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgbiwgciwgaSA9IEsodCk7CiAgICAgICAgICAgIHJldHVybiAhaSAmJiBXKHQpICYmIChuID0gaSA9IHQucmFkaXVzIHx8IGssIHQudmFsdWVzID8gKHQgPSBpZSh0LnZhbHVlcyksIChyID0gIVYodFswXSkpICYmIChuICo9IG4pKSA6IHQgPSBvZSh0LmluY3JlbWVudCkpLCAkdChlLCBpID8gaih0KSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiByID0gdChlKSwgTWF0aC5hYnMociAtIGUpIDw9IG4gPyByIDogZQogICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSwgdSwgcyA9IHBhcnNlRmxvYXQociA/IGUueCA6IGUpLCBvID0gcGFyc2VGbG9hdChyID8gZS55IDogMCksIGEgPSBrLCBsID0gMCwgaCA9IHQubGVuZ3RoOyBoLS07KShpID0gciA/IChpID0gdFtoXS54IC0gcykgKiBpICsgKHUgPSB0W2hdLnkgLSBvKSAqIHUgOiBNYXRoLmFicyh0W2hdIC0gcykpIDwgYSAmJiAoYSA9IGksIGwgPSBoKTsKICAgICAgICAgICAgICAgIHJldHVybiBsID0gIW4gfHwgYSA8PSBuID8gdFtsXSA6IGUsIHIgfHwgbCA9PT0gZSB8fCBWKGUpID8gbCA6IGwgKyB0ZShlKQogICAgICAgICAgICB9IDogb2UodCkpCiAgICAgICAgfSwKICAgICAgICBsZSA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIpIHsKICAgICAgICAgICAgcmV0dXJuICR0KEsodCkgPyAhZSA6ICEwID09PSBuID8gISEobiA9IDApIDogIXIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBLKHQpID8gdFt+fihNYXRoLnJhbmRvbSgpICogdC5sZW5ndGgpXSA6IChuID0gbiB8fCAxZS01KSAmJiAociA9IG4gPCAxID8gTWF0aC5wb3coMTAsIChuICsgIiIpLmxlbmd0aCAtIDIpIDogMSkgJiYgTWF0aC5mbG9vcihNYXRoLnJvdW5kKCh0ICsgTWF0aC5yYW5kb20oKSAqIChlIC0gdCkpIC8gbikgKiBuICogcikgLyByCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgaGUgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiAkdChuLCAoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgcmV0dXJuIHRbfn5lKG4pXQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIGZlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBmb3IgKHZhciBlLCBuLCByLCBpLCB1ID0gMCwgcyA9ICIiOyB+KGUgPSB0LmluZGV4T2YoInJhbmRvbSgiLCB1KSk7KSByID0gdC5pbmRleE9mKCIpIiwgZSksIGkgPSAiWyIgPT09IHQuY2hhckF0KGUgKyA3KSwgbiA9IHQuc3Vic3RyKGUgKyA3LCByIC0gZSAtIDcpLm1hdGNoKGkgPyBudCA6IFopLCBzICs9IHQuc3Vic3RyKHUsIGUgLSB1KSArIGxlKGkgPyBuIDogK25bMF0sIGkgPyAwIDogK25bMV0sICtuWzJdIHx8IDFlLTUpLCB1ID0gciArIDE7CiAgICAgICAgICAgIHJldHVybiBzICsgdC5zdWJzdHIodSwgdC5sZW5ndGggLSB1KQogICAgICAgIH0sCiAgICAgICAgRGUgPSBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgIHZhciB1ID0gZSAtIHQsCiAgICAgICAgICAgICAgICBzID0gciAtIG47CiAgICAgICAgICAgIHJldHVybiAkdChpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG4gKyAoKGUgLSB0KSAvIHUgKiBzIHx8IDApCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgcGUgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCB1LCBzID0gdC5sYWJlbHMsCiAgICAgICAgICAgICAgICBvID0gazsKICAgICAgICAgICAgZm9yIChyIGluIHMpKGkgPSBzW3JdIC0gZSkgPCAwID09ICEhbiAmJiBpICYmIG8gPiAoaSA9IE1hdGguYWJzKGkpKSAmJiAodSA9IHIsIG8gPSBpKTsKICAgICAgICAgICAgcmV0dXJuIHUKICAgICAgICB9LAogICAgICAgIGNlID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgdSA9IHQudmFycywKICAgICAgICAgICAgICAgIHMgPSB1W2VdOwogICAgICAgICAgICBpZiAocykgcmV0dXJuIHIgPSB1W2UgKyAiUGFyYW1zIl0sIGkgPSB1LmNhbGxiYWNrU2NvcGUgfHwgdCwgbiAmJiBmdC5sZW5ndGggJiYgRXQoKSwgciA/IHMuYXBwbHkoaSwgcikgOiBzLmNhbGwoaSkKICAgICAgICB9LAogICAgICAgIGRlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gTnQodCksIHQucHJvZ3Jlc3MoKSA8IDEgJiYgY2UodCwgIm9uSW50ZXJydXB0IiksIHQKICAgICAgICB9LAogICAgICAgIGdlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSA9ICh0ID0gIXQubmFtZSAmJiB0LmRlZmF1bHQgfHwgdCkubmFtZSwKICAgICAgICAgICAgICAgIG4gPSBqKHQpLAogICAgICAgICAgICAgICAgciA9IGUgJiYgIW4gJiYgdC5pbml0ID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvcHMgPSBbXQogICAgICAgICAgICAgICAgfSA6IHQsCiAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgIGluaXQ6IGx0LAogICAgICAgICAgICAgICAgICAgIHJlbmRlcjogdW4sCiAgICAgICAgICAgICAgICAgICAgYWRkOiBWZSwKICAgICAgICAgICAgICAgICAgICBraWxsOiBvbiwKICAgICAgICAgICAgICAgICAgICBtb2RpZmllcjogc24sCiAgICAgICAgICAgICAgICAgICAgcmF3VmFyczogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VGVzdDogMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IDAsCiAgICAgICAgICAgICAgICAgICAgZ2V0U2V0dGVyOiB0biwKICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiB7fSwKICAgICAgICAgICAgICAgICAgICByZWdpc3RlcjogMAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKGJlKCksIHQgIT09IHIpIHsKICAgICAgICAgICAgICAgIGlmIChwdFtlXSkgcmV0dXJuOwogICAgICAgICAgICAgICAgTXQociwgTXQoQnQodCwgaSksIHUpKSwgU3Qoci5wcm90b3R5cGUsIFN0KGksIEJ0KHQsIHUpKSksIHB0W3IucHJvcCA9IGVdID0gciwgdC50YXJnZXRUZXN0ICYmIChndC5wdXNoKHIpLCBodFtlXSA9IDEpLCBlID0gKCJjc3MiID09PSBlID8gIkNTUyIgOiBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZS5zdWJzdHIoMSkpICsgIlBsdWdpbiIKICAgICAgICAgICAgfQogICAgICAgICAgICBhdChlLCByKSwgdC5yZWdpc3RlciAmJiB0LnJlZ2lzdGVyKGNuLCByLCBobikKICAgICAgICB9LAogICAgICAgIF9lID0gewogICAgICAgICAgICBhcXVhOiBbMCwgMjU1LCAyNTVdLAogICAgICAgICAgICBsaW1lOiBbMCwgMjU1LCAwXSwKICAgICAgICAgICAgc2lsdmVyOiBbMTkyLCAxOTIsIDE5Ml0sCiAgICAgICAgICAgIGJsYWNrOiBbMCwgMCwgMF0sCiAgICAgICAgICAgIG1hcm9vbjogWzEyOCwgMCwgMF0sCiAgICAgICAgICAgIHRlYWw6IFswLCAxMjgsIDEyOF0sCiAgICAgICAgICAgIGJsdWU6IFswLCAwLCAyNTVdLAogICAgICAgICAgICBuYXZ5OiBbMCwgMCwgMTI4XSwKICAgICAgICAgICAgd2hpdGU6IFsyNTUsIDI1NSwgMjU1XSwKICAgICAgICAgICAgb2xpdmU6IFsxMjgsIDEyOCwgMF0sCiAgICAgICAgICAgIHllbGxvdzogWzI1NSwgMjU1LCAwXSwKICAgICAgICAgICAgb3JhbmdlOiBbMjU1LCAxNjUsIDBdLAogICAgICAgICAgICBncmF5OiBbMTI4LCAxMjgsIDEyOF0sCiAgICAgICAgICAgIHB1cnBsZTogWzEyOCwgMCwgMTI4XSwKICAgICAgICAgICAgZ3JlZW46IFswLCAxMjgsIDBdLAogICAgICAgICAgICByZWQ6IFsyNTUsIDAsIDBdLAogICAgICAgICAgICBwaW5rOiBbMjU1LCAxOTIsIDIwM10sCiAgICAgICAgICAgIGN5YW46IFswLCAyNTUsIDI1NV0sCiAgICAgICAgICAgIHRyYW5zcGFyZW50OiBbMjU1LCAyNTUsIDI1NSwgMF0KICAgICAgICB9LAogICAgICAgIG1lID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICByZXR1cm4gMjU1ICogKDYgKiAodCA9IHQgPCAwID8gdCArIDEgOiB0ID4gMSA/IHQgLSAxIDogdCkgPCAxID8gZSArIChuIC0gZSkgKiB0ICogNiA6IHQgPCAuNSA/IG4gOiAzICogdCA8IDIgPyBlICsgKG4gLSBlKSAqICgyIC8gMyAtIHQpICogNiA6IGUpICsgLjUgfCAwCiAgICAgICAgfSwKICAgICAgICB2ZSA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdmFyIHIsIGksIHUsIHMsIG8sIGEsIGwsIGgsIGYsIEQsIHAgPSB0ID8gVih0KSA/IFt0ID4+IDE2LCB0ID4+IDggJiAyNTUsIDI1NSAmIHRdIDogMCA6IF9lLmJsYWNrOwogICAgICAgICAgICBpZiAoIXApIHsKICAgICAgICAgICAgICAgIGlmICgiLCIgPT09IHQuc3Vic3RyKC0xKSAmJiAodCA9IHQuc3Vic3RyKDAsIHQubGVuZ3RoIC0gMSkpLCBfZVt0XSkgcCA9IF9lW3RdOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoIiMiID09PSB0LmNoYXJBdCgwKSkgNCA9PT0gdC5sZW5ndGggJiYgKHIgPSB0LmNoYXJBdCgxKSwgaSA9IHQuY2hhckF0KDIpLCB1ID0gdC5jaGFyQXQoMyksIHQgPSAiIyIgKyByICsgciArIGkgKyBpICsgdSArIHUpLCBwID0gWyh0ID0gcGFyc2VJbnQodC5zdWJzdHIoMSksIDE2KSkgPj4gMTYsIHQgPj4gOCAmIDI1NSwgMjU1ICYgdF07CiAgICAgICAgICAgICAgICBlbHNlIGlmICgiaHNsIiA9PT0gdC5zdWJzdHIoMCwgMykpCiAgICAgICAgICAgICAgICAgICAgaWYgKHAgPSBEID0gdC5tYXRjaChaKSwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAofnQuaW5kZXhPZigiPSIpKSByZXR1cm4gcCA9IHQubWF0Y2goJCksIG4gJiYgcC5sZW5ndGggPCA0ICYmIChwWzNdID0gMSksIHAKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgcyA9ICtwWzBdICUgMzYwIC8gMzYwLCBvID0gK3BbMV0gLyAxMDAsIHIgPSAyICogKGEgPSArcFsyXSAvIDEwMCkgLSAoaSA9IGEgPD0gLjUgPyBhICogKG8gKyAxKSA6IGEgKyBvIC0gYSAqIG8pLCBwLmxlbmd0aCA+IDMgJiYgKHBbM10gKj0gMSksIHBbMF0gPSBtZShzICsgMSAvIDMsIHIsIGkpLCBwWzFdID0gbWUocywgciwgaSksIHBbMl0gPSBtZShzIC0gMSAvIDMsIHIsIGkpOwogICAgICAgICAgICAgICAgZWxzZSBwID0gdC5tYXRjaChaKSB8fCBfZS50cmFuc3BhcmVudDsKICAgICAgICAgICAgICAgIHAgPSBwLm1hcChOdW1iZXIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUgJiYgIUQgJiYgKHIgPSBwWzBdIC8gMjU1LCBpID0gcFsxXSAvIDI1NSwgdSA9IHBbMl0gLyAyNTUsIGEgPSAoKGwgPSBNYXRoLm1heChyLCBpLCB1KSkgKyAoaCA9IE1hdGgubWluKHIsIGksIHUpKSkgLyAyLCBsID09PSBoID8gcyA9IG8gPSAwIDogKGYgPSBsIC0gaCwgbyA9IGEgPiAuNSA/IGYgLyAoMiAtIGwgLSBoKSA6IGYgLyAobCArIGgpLCBzID0gbCA9PT0gciA/IChpIC0gdSkgLyBmICsgKGkgPCB1ID8gNiA6IDApIDogbCA9PT0gaSA/ICh1IC0gcikgLyBmICsgMiA6IChyIC0gaSkgLyBmICsgNCwgcyAqPSA2MCksIHBbMF0gPSB+fihzICsgLjUpLCBwWzFdID0gfn4oMTAwICogbyArIC41KSwgcFsyXSA9IH5+KDEwMCAqIGEgKyAuNSkpLCBuICYmIHAubGVuZ3RoIDwgNCAmJiAocFszXSA9IDEpLCBwCiAgICAgICAgfSwKICAgICAgICB5ZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGUgPSBbXSwKICAgICAgICAgICAgICAgIG4gPSBbXSwKICAgICAgICAgICAgICAgIHIgPSAtMTsKICAgICAgICAgICAgcmV0dXJuIHQuc3BsaXQoeGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdC5tYXRjaChKKSB8fCBbXTsKICAgICAgICAgICAgICAgIGUucHVzaC5hcHBseShlLCBpKSwgbi5wdXNoKHIgKz0gaS5sZW5ndGggKyAxKQogICAgICAgICAgICB9KSksIGUuYyA9IG4sIGUKICAgICAgICB9LAogICAgICAgIENlID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgdSwgcywgbyA9ICIiLAogICAgICAgICAgICAgICAgYSA9ICh0ICsgbykubWF0Y2goeGUpLAogICAgICAgICAgICAgICAgbCA9IGUgPyAiaHNsYSgiIDogInJnYmEoIiwKICAgICAgICAgICAgICAgIGggPSAwOwogICAgICAgICAgICBpZiAoIWEpIHJldHVybiB0OwogICAgICAgICAgICBpZiAoYSA9IGEubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0ID0gdmUodCwgZSwgMSkpICYmIGwgKyAoZSA/IHRbMF0gKyAiLCIgKyB0WzFdICsgIiUsIiArIHRbMl0gKyAiJSwiICsgdFszXSA6IHQuam9pbigiLCIpKSArICIpIgogICAgICAgICAgICAgICAgfSkpLCBuICYmICh1ID0geWUodCksIChyID0gbi5jKS5qb2luKG8pICE9PSB1LmMuam9pbihvKSkpCiAgICAgICAgICAgICAgICBmb3IgKHMgPSAoaSA9IHQucmVwbGFjZSh4ZSwgIjEiKS5zcGxpdChKKSkubGVuZ3RoIC0gMTsgaCA8IHM7IGgrKykgbyArPSBpW2hdICsgKH5yLmluZGV4T2YoaCkgPyBhLnNoaWZ0KCkgfHwgbCArICIwLDAsMCwwKSIgOiAodS5sZW5ndGggPyB1IDogYS5sZW5ndGggPyBhIDogbikuc2hpZnQoKSk7CiAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgIGZvciAocyA9IChpID0gdC5zcGxpdCh4ZSkpLmxlbmd0aCAtIDE7IGggPCBzOyBoKyspIG8gKz0gaVtoXSArIGFbaF07CiAgICAgICAgICAgIHJldHVybiBvICsgaVtzXQogICAgICAgIH0sCiAgICAgICAgeGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQsIGUgPSAiKD86XFxiKD86KD86cmdifHJnYmF8aHNsfGhzbGEpXFwoLis/XFwpKXxcXEIjKD86WzAtOWEtZl17M30pezEsMn1cXGIiOwogICAgICAgICAgICBmb3IgKHQgaW4gX2UpIGUgKz0gInwiICsgdCArICJcXGIiOwogICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChlICsgIikiLCAiZ2kiKQogICAgICAgIH0oKSwKICAgICAgICBGZSA9IC9oc2xbYV0/XCgvLAogICAgICAgIHdlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSwgbiA9IHQuam9pbigiICIpOwogICAgICAgICAgICBpZiAoeGUubGFzdEluZGV4ID0gMCwgeGUudGVzdChuKSkgcmV0dXJuIGUgPSBGZS50ZXN0KG4pLCB0WzFdID0gQ2UodFsxXSwgZSksIHRbMF0gPSBDZSh0WzBdLCBlLCB5ZSh0WzFdKSksICEwCiAgICAgICAgfSwKICAgICAgICBFZSA9ICh2ID0gRGF0ZS5ub3csIHkgPSA1MDAsIEMgPSAzMywgeCA9IHYoKSwgRiA9IHgsIEUgPSB3ID0gMWUzIC8gMjQwLCBUID0gZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgIHZhciBuLCByLCBpLCB1LCBzID0gdigpIC0gRiwKICAgICAgICAgICAgICAgIG8gPSAhMCA9PT0gZTsKICAgICAgICAgICAgaWYgKHMgPiB5ICYmICh4ICs9IHMgLSBDKSwgKChuID0gKGkgPSAoRiArPSBzKSAtIHgpIC0gRSkgPiAwIHx8IG8pICYmICh1ID0gKytnLmZyYW1lLCBfID0gaSAtIDFlMyAqIGcudGltZSwgZy50aW1lID0gaSAvPSAxZTMsIEUgKz0gbiArIChuID49IHcgPyA0IDogdyAtIG4pLCByID0gMSksIG8gfHwgKHAgPSBjKHQpKSwgcikKICAgICAgICAgICAgICAgIGZvciAobSA9IDA7IG0gPCBiLmxlbmd0aDsgbSsrKSBiW21dKGksIF8sIHUsIGUpCiAgICAgICAgfSwgZyA9IHsKICAgICAgICAgICAgdGltZTogMCwKICAgICAgICAgICAgZnJhbWU6IDAsCiAgICAgICAgICAgIHRpY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgVCghMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVsdGFSYXRpbzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIF8gLyAoMWUzIC8gKHQgfHwgNjApKQogICAgICAgICAgICB9LAogICAgICAgICAgICB3YWtlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGwgJiYgKCFvICYmIEcoKSAmJiAocyA9IG8gPSB3aW5kb3csIGEgPSBzLmRvY3VtZW50IHx8IHt9LCBydC5nc2FwID0gY24sIChzLmdzYXBWZXJzaW9ucyB8fCAocy5nc2FwVmVyc2lvbnMgPSBbXSkpLnB1c2goY24udmVyc2lvbiksIHV0KGl0IHx8IHMuR3JlZW5Tb2NrR2xvYmFscyB8fCAhcy5nc2FwICYmIHMgfHwge30pLCBkID0gcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpLCBwICYmIGcuc2xlZXAoKSwgYyA9IGQgfHwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KHQsIEUgLSAxZTMgKiBnLnRpbWUgKyAxIHwgMCkKICAgICAgICAgICAgICAgIH0sIEQgPSAxLCBUKDIpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzbGVlcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAoZCA/IHMuY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBjbGVhclRpbWVvdXQpKHApLCBEID0gMCwgYyA9IGx0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxhZ1Ntb290aGluZzogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgeSA9IHQgfHwgMSAvIDFlLTgsIEMgPSBNYXRoLm1pbihlLCB5LCAwKQogICAgICAgICAgICB9LAogICAgICAgICAgICBmcHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHcgPSAxZTMgLyAodCB8fCAyNDApLCBFID0gMWUzICogZy50aW1lICsgdwogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGIuaW5kZXhPZih0KSA8IDAgJiYgYi5wdXNoKHQpLCBiZSgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgICAgICB+KGUgPSBiLmluZGV4T2YodCkpICYmIGIuc3BsaWNlKGUsIDEpICYmIG0gPj0gZSAmJiBtLS0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2xpc3RlbmVyczogYiA9IFtdCiAgICAgICAgfSksCiAgICAgICAgYmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICFEICYmIEVlLndha2UoKQogICAgICAgIH0sCiAgICAgICAgVGUgPSB7fSwKICAgICAgICBBZSA9IC9eW1xkLlwtTV1bXGQuXC0sXHNdLywKICAgICAgICBNZSA9IC9bIiddL2csCiAgICAgICAgT2UgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGUsIG4sIHIsIGkgPSB7fSwgdSA9IHQuc3Vic3RyKDEsIHQubGVuZ3RoIC0gMykuc3BsaXQoIjoiKSwgcyA9IHVbMF0sIG8gPSAxLCBhID0gdS5sZW5ndGg7IG8gPCBhOyBvKyspIG4gPSB1W29dLCBlID0gbyAhPT0gYSAtIDEgPyBuLmxhc3RJbmRleE9mKCIsIikgOiBuLmxlbmd0aCwgciA9IG4uc3Vic3RyKDAsIGUpLCBpW3NdID0gaXNOYU4ocikgPyByLnJlcGxhY2UoTWUsICIiKS50cmltKCkgOiArciwgcyA9IG4uc3Vic3RyKGUgKyAxKS50cmltKCk7CiAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgfSwKICAgICAgICBTZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAxIC0gdCgxIC0gZSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgUGUgPSBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgZm9yICh2YXIgciwgaSA9IGUuX2ZpcnN0OyBpOykgaSBpbnN0YW5jZW9mIFllID8gdChpLCBuKSA6ICFpLnZhcnMueW95b0Vhc2UgfHwgaS5feW95byAmJiBpLl9yZXBlYXQgfHwgaS5feW95byA9PT0gbiB8fCAoaS50aW1lbGluZSA/IHQoaS50aW1lbGluZSwgbikgOiAociA9IGkuX2Vhc2UsIGkuX2Vhc2UgPSBpLl95RWFzZSwgaS5feUVhc2UgPSByLCBpLl95b3lvID0gbikpLCBpID0gaS5fbmV4dAogICAgICAgIH0sCiAgICAgICAgQmUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiB0ICYmIChqKHQpID8gdCA6IFRlW3RdIHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBuLCByLCBpLCB1ID0gKHQgKyAiIikuc3BsaXQoIigiKSwKICAgICAgICAgICAgICAgICAgICBzID0gVGVbdVswXV07CiAgICAgICAgICAgICAgICByZXR1cm4gcyAmJiB1Lmxlbmd0aCA+IDEgJiYgcy5jb25maWcgPyBzLmNvbmZpZy5hcHBseShudWxsLCB+dC5pbmRleE9mKCJ7IikgPyBbT2UodVsxXSldIDogKGUgPSB0LCBuID0gZS5pbmRleE9mKCIoIikgKyAxLCByID0gZS5pbmRleE9mKCIpIiksIGkgPSBlLmluZGV4T2YoIigiLCBuKSwgZS5zdWJzdHJpbmcobiwgfmkgJiYgaSA8IHIgPyBlLmluZGV4T2YoIikiLCByICsgMSkgOiByKSkuc3BsaXQoIiwiKS5tYXAoVHQpKSA6IFRlLl9DRSAmJiBBZS50ZXN0KHQpID8gVGUuX0NFKCIiLCB0KSA6IHMKICAgICAgICAgICAgfSh0KSkgfHwgZQogICAgICAgIH0sCiAgICAgICAga2UgPSBmdW5jdGlvbih0LCBlLCBuLCByKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gbiAmJiAobiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAxIC0gZSgxIC0gdCkKICAgICAgICAgICAgfSksIHZvaWQgMCA9PT0gciAmJiAociA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0IDwgLjUgPyBlKDIgKiB0KSAvIDIgOiAxIC0gZSgyICogKDEgLSB0KSkgLyAyCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgaSwgdSA9IHsKICAgICAgICAgICAgICAgIGVhc2VJbjogZSwKICAgICAgICAgICAgICAgIGVhc2VPdXQ6IG4sCiAgICAgICAgICAgICAgICBlYXNlSW5PdXQ6IHIKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIEN0KHQsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIFRlW3RdID0gcnRbdF0gPSB1LCBUZVtpID0gdC50b0xvd2VyQ2FzZSgpXSA9IG4sIHUpIFRlW2kgKyAoImVhc2VJbiIgPT09IGUgPyAiLmluIiA6ICJlYXNlT3V0IiA9PT0gZSA/ICIub3V0IiA6ICIuaW5PdXQiKV0gPSBUZVt0ICsgIi4iICsgZV0gPSB1W2VdCiAgICAgICAgICAgIH0pKSwgdQogICAgICAgIH0sCiAgICAgICAgTGUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA8IC41ID8gKDEgLSB0KDEgLSAyICogZSkpIC8gMiA6IC41ICsgdCgyICogKGUgLSAuNSkpIC8gMgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBOZSA9IGZ1bmN0aW9uIHQoZSwgbiwgcikgewogICAgICAgICAgICB2YXIgaSA9IG4gPj0gMSA/IG4gOiAxLAogICAgICAgICAgICAgICAgdSA9IChyIHx8IChlID8gLjMgOiAuNDUpKSAvIChuIDwgMSA/IG4gOiAxKSwKICAgICAgICAgICAgICAgIHMgPSB1IC8gTCAqIChNYXRoLmFzaW4oMSAvIGkpIHx8IDApLAogICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSA9PT0gdCA/IDEgOiBpICogTWF0aC5wb3coMiwgLTEwICogdCkgKiBZKCh0IC0gcykgKiB1KSArIDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhID0gIm91dCIgPT09IGUgPyBvIDogImluIiA9PT0gZSA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAtIG8oMSAtIHQpCiAgICAgICAgICAgICAgICB9IDogTGUobyk7CiAgICAgICAgICAgIHJldHVybiB1ID0gTCAvIHUsIGEuY29uZmlnID0gZnVuY3Rpb24obiwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIHQoZSwgbiwgcikKICAgICAgICAgICAgfSwgYQogICAgICAgIH0sCiAgICAgICAgUmUgPSBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgdm9pZCAwID09PSBuICYmIChuID0gMS43MDE1OCk7CiAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID8gLS10ICogdCAqICgobiArIDEpICogdCArIG4pICsgMSA6IDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpID0gIm91dCIgPT09IGUgPyByIDogImluIiA9PT0gZSA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAtIHIoMSAtIHQpCiAgICAgICAgICAgICAgICB9IDogTGUocik7CiAgICAgICAgICAgIHJldHVybiBpLmNvbmZpZyA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiB0KGUsIG4pCiAgICAgICAgICAgIH0sIGkKICAgICAgICB9OwogICAgQ3QoIkxpbmVhcixRdWFkLEN1YmljLFF1YXJ0LFF1aW50LFN0cm9uZyIsIChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgdmFyIG4gPSBlIDwgNSA/IGUgKyAxIDogZTsKICAgICAgICBrZSh0ICsgIixQb3dlciIgKyAobiAtIDEpLCBlID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gTWF0aC5wb3codCwgbikKICAgICAgICB9IDogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0sIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAxIC0gTWF0aC5wb3coMSAtIHQsIG4pCiAgICAgICAgfSksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0IDwgLjUgPyBNYXRoLnBvdygyICogdCwgbikgLyAyIDogMSAtIE1hdGgucG93KDIgKiAoMSAtIHQpLCBuKSAvIDIKICAgICAgICB9KSkKICAgIH0pKSwgVGUuTGluZWFyLmVhc2VOb25lID0gVGUubm9uZSA9IFRlLkxpbmVhci5lYXNlSW4sIGtlKCJFbGFzdGljIiwgTmUoImluIiksIE5lKCJvdXQiKSwgTmUoKSksIEEgPSA3LjU2MjUsIE8gPSAxIC8gKE0gPSAyLjc1KSwga2UoIkJvdW5jZSIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIDEgLSBTKDEgLSB0KQogICAgfSksIFMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIHQgPCBPID8gQSAqIHQgKiB0IDogdCA8IC43MjcyNzI3MjcyNzI3MjczID8gQSAqIE1hdGgucG93KHQgLSAxLjUgLyBNLCAyKSArIC43NSA6IHQgPCAuOTA5MDkwOTA5MDkwOTA5MiA/IEEgKiAodCAtPSAyLjI1IC8gTSkgKiB0ICsgLjkzNzUgOiBBICogTWF0aC5wb3codCAtIDIuNjI1IC8gTSwgMikgKyAuOTg0Mzc1CiAgICB9KSwga2UoIkV4cG8iLCAoZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiB0ID8gTWF0aC5wb3coMiwgMTAgKiAodCAtIDEpKSA6IDAKICAgIH0pKSwga2UoIkNpcmMiLCAoZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiAtKEkoMSAtIHQgKiB0KSAtIDEpCiAgICB9KSksIGtlKCJTaW5lIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gMSA9PT0gdCA/IDEgOiAxIC0geih0ICogTikKICAgIH0pKSwga2UoIkJhY2siLCBSZSgiaW4iKSwgUmUoIm91dCIpLCBSZSgpKSwgVGUuU3RlcHBlZEVhc2UgPSBUZS5zdGVwcyA9IHJ0LlN0ZXBwZWRFYXNlID0gewogICAgICAgIGNvbmZpZzogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSAxKTsKICAgICAgICAgICAgdmFyIG4gPSAxIC8gdCwKICAgICAgICAgICAgICAgIHIgPSB0ICsgKGUgPyAwIDogMSksCiAgICAgICAgICAgICAgICBpID0gZSA/IDEgOiAwOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuICgociAqIEp0KDAsIDEgLSAxZS04LCB0KSB8IDApICsgaSkgKiBuCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBCLmVhc2UgPSBUZVsicXVhZC5vdXQiXSwgQ3QoIm9uQ29tcGxldGUsb25VcGRhdGUsb25TdGFydCxvblJlcGVhdCxvblJldmVyc2VDb21wbGV0ZSxvbkludGVycnVwdCIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIF90ICs9IHQgKyAiLCIgKyB0ICsgIlBhcmFtcywiCiAgICB9KSk7CiAgICB2YXIgSWUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHRoaXMuaWQgPSBSKyssIHQuX2dzYXAgPSB0aGlzLCB0aGlzLnRhcmdldCA9IHQsIHRoaXMuaGFybmVzcyA9IGUsIHRoaXMuZ2V0ID0gZSA/IGUuZ2V0IDogeXQsIHRoaXMuc2V0ID0gZSA/IGUuZ2V0U2V0dGVyIDogdG4KICAgICAgICB9LAogICAgICAgIHplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0LnBhcmVudCB8fCB1OwogICAgICAgICAgICAgICAgdGhpcy52YXJzID0gdCwgdGhpcy5fZGVsYXkgPSArdC5kZWxheSB8fCAwLCAodGhpcy5fcmVwZWF0ID0gdC5yZXBlYXQgfHwgMCkgJiYgKHRoaXMuX3JEZWxheSA9IHQucmVwZWF0RGVsYXkgfHwgMCwgdGhpcy5feW95byA9ICEhdC55b3lvIHx8ICEhdC55b3lvRWFzZSksIHRoaXMuX3RzID0gMSwgSHQodGhpcywgK3QuZHVyYXRpb24sIDEsIDEpLCB0aGlzLmRhdGEgPSB0LmRhdGEsIEQgfHwgRWUud2FrZSgpLCBuICYmIFd0KG4sIHRoaXMsIGUgfHwgMCA9PT0gZSA/IGUgOiBuLl90aW1lLCAxKSwgdC5yZXZlcnNlZCAmJiB0aGlzLnJldmVyc2UoKSwgdC5wYXVzZWQgJiYgdGhpcy5wYXVzZWQoITApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGUgPSB0LnByb3RvdHlwZTsKICAgICAgICAgICAgcmV0dXJuIGUuZGVsYXkgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCB8fCAwID09PSB0ID8gKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LnNtb290aENoaWxkVGltaW5nICYmIHRoaXMuc3RhcnRUaW1lKHRoaXMuX3N0YXJ0ICsgdCAtIHRoaXMuX2RlbGF5KSwgdGhpcy5fZGVsYXkgPSB0LCB0aGlzKSA6IHRoaXMuX2RlbGF5CiAgICAgICAgICAgIH0sIGUuZHVyYXRpb24gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMudG90YWxEdXJhdGlvbih0aGlzLl9yZXBlYXQgPiAwID8gdCArICh0ICsgdGhpcy5fckRlbGF5KSAqIHRoaXMuX3JlcGVhdCA6IHQpIDogdGhpcy50b3RhbER1cmF0aW9uKCkgJiYgdGhpcy5fZHVyCiAgICAgICAgICAgIH0sIGUudG90YWxEdXJhdGlvbiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX2RpcnR5ID0gMCwgSHQodGhpcywgdGhpcy5fcmVwZWF0IDwgMCA/IHQgOiAodCAtIHRoaXMuX3JlcGVhdCAqIHRoaXMuX3JEZWxheSkgLyAodGhpcy5fcmVwZWF0ICsgMSkpKSA6IHRoaXMuX3REdXIKICAgICAgICAgICAgfSwgZS50b3RhbFRpbWUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICBpZiAoYmUoKSwgIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB0aGlzLl90VGltZTsKICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fZHA7CiAgICAgICAgICAgICAgICBpZiAobiAmJiBuLnNtb290aENoaWxkVGltaW5nICYmIHRoaXMuX3RzKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChWdCh0aGlzLCB0KTsgbi5wYXJlbnQ7KSBuLnBhcmVudC5fdGltZSAhPT0gbi5fc3RhcnQgKyAobi5fdHMgPj0gMCA/IG4uX3RUaW1lIC8gbi5fdHMgOiAobi50b3RhbER1cmF0aW9uKCkgLSBuLl90VGltZSkgLyAtbi5fdHMpICYmIG4udG90YWxUaW1lKG4uX3RUaW1lLCAhMCksIG4gPSBuLnBhcmVudDsKICAgICAgICAgICAgICAgICAgICAhdGhpcy5wYXJlbnQgJiYgdGhpcy5fZHAuYXV0b1JlbW92ZUNoaWxkcmVuICYmICh0aGlzLl90cyA+IDAgJiYgdCA8IHRoaXMuX3REdXIgfHwgdGhpcy5fdHMgPCAwICYmIHQgPiAwIHx8ICF0aGlzLl90RHVyICYmICF0KSAmJiBXdCh0aGlzLl9kcCwgdGhpcywgdGhpcy5fc3RhcnQgLSB0aGlzLl9kZWxheSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5fdFRpbWUgIT09IHQgfHwgIXRoaXMuX2R1ciAmJiAhZSB8fCB0aGlzLl9pbml0dGVkICYmIDFlLTggPT09IE1hdGguYWJzKHRoaXMuX3pUaW1lKSB8fCAhdCAmJiAhdGhpcy5faW5pdHRlZCAmJiAodGhpcy5hZGQgfHwgdGhpcy5fcHRMb29rdXApKSAmJiAodGhpcy5fdHMgfHwgKHRoaXMuX3BUaW1lID0gdCksIGJ0KHRoaXMsIHQsIGUpKSwgdGhpcwogICAgICAgICAgICB9LCBlLnRpbWUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMudG90YWxUaW1lKE1hdGgubWluKHRoaXMudG90YWxEdXJhdGlvbigpLCB0ICsgenQodGhpcykpICUgdGhpcy5fZHVyIHx8ICh0ID8gdGhpcy5fZHVyIDogMCksIGUpIDogdGhpcy5fdGltZQogICAgICAgICAgICB9LCBlLnRvdGFsUHJvZ3Jlc3MgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMudG90YWxUaW1lKHRoaXMudG90YWxEdXJhdGlvbigpICogdCwgZSkgOiB0aGlzLnRvdGFsRHVyYXRpb24oKSA/IE1hdGgubWluKDEsIHRoaXMuX3RUaW1lIC8gdGhpcy5fdER1cikgOiB0aGlzLnJhdGlvCiAgICAgICAgICAgIH0sIGUucHJvZ3Jlc3MgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMudG90YWxUaW1lKHRoaXMuZHVyYXRpb24oKSAqICghdGhpcy5feW95byB8fCAxICYgdGhpcy5pdGVyYXRpb24oKSA/IHQgOiAxIC0gdCkgKyB6dCh0aGlzKSwgZSkgOiB0aGlzLmR1cmF0aW9uKCkgPyBNYXRoLm1pbigxLCB0aGlzLl90aW1lIC8gdGhpcy5fZHVyKSA6IHRoaXMucmF0aW8KICAgICAgICAgICAgfSwgZS5pdGVyYXRpb24gPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuZHVyYXRpb24oKSArIHRoaXMuX3JEZWxheTsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy50b3RhbFRpbWUodGhpcy5fdGltZSArICh0IC0gMSkgKiBuLCBlKSA6IHRoaXMuX3JlcGVhdCA/IFl0KHRoaXMuX3RUaW1lLCBuKSArIDEgOiAxCiAgICAgICAgICAgIH0sIGUudGltZVNjYWxlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gLTFlLTggPT09IHRoaXMuX3J0cyA/IDAgOiB0aGlzLl9ydHM7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcnRzID09PSB0KSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5wYXJlbnQgJiYgdGhpcy5fdHMgPyBYdCh0aGlzLnBhcmVudC5fdGltZSwgdGhpcykgOiB0aGlzLl90VGltZTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9ydHMgPSArdCB8fCAwLCB0aGlzLl90cyA9IHRoaXMuX3BzIHx8IC0xZS04ID09PSB0ID8gMCA6IHRoaXMuX3J0cywgSXQodGhpcy50b3RhbFRpbWUoSnQoLXRoaXMuX2RlbGF5LCB0aGlzLl90RHVyLCBlKSwgITApKQogICAgICAgICAgICB9LCBlLnBhdXNlZCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3BzICE9PSB0ICYmICh0aGlzLl9wcyA9IHQsIHQgPyAodGhpcy5fcFRpbWUgPSB0aGlzLl90VGltZSB8fCBNYXRoLm1heCgtdGhpcy5fZGVsYXksIHRoaXMucmF3VGltZSgpKSwgdGhpcy5fdHMgPSB0aGlzLl9hY3QgPSAwKSA6IChiZSgpLCB0aGlzLl90cyA9IHRoaXMuX3J0cywgdGhpcy50b3RhbFRpbWUodGhpcy5wYXJlbnQgJiYgIXRoaXMucGFyZW50LnNtb290aENoaWxkVGltaW5nID8gdGhpcy5yYXdUaW1lKCkgOiB0aGlzLl90VGltZSB8fCB0aGlzLl9wVGltZSwgMSA9PT0gdGhpcy5wcm9ncmVzcygpICYmICh0aGlzLl90VGltZSAtPSAxZS04KSAmJiAxZS04ICE9PSBNYXRoLmFicyh0aGlzLl96VGltZSkpKSksIHRoaXMpIDogdGhpcy5fcHMKICAgICAgICAgICAgfSwgZS5zdGFydFRpbWUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0ID0gdDsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucGFyZW50IHx8IHRoaXMuX2RwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIChlLl9zb3J0IHx8ICF0aGlzLnBhcmVudCkgJiYgV3QoZSwgdGhpcywgdCAtIHRoaXMuX2RlbGF5KSwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0CiAgICAgICAgICAgIH0sIGUuZW5kVGltZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydCArIChxKHQpID8gdGhpcy50b3RhbER1cmF0aW9uKCkgOiB0aGlzLmR1cmF0aW9uKCkpIC8gTWF0aC5hYnModGhpcy5fdHMpCiAgICAgICAgICAgIH0sIGUucmF3VGltZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5wYXJlbnQgfHwgdGhpcy5fZHA7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA/IHQgJiYgKCF0aGlzLl90cyB8fCB0aGlzLl9yZXBlYXQgJiYgdGhpcy5fdGltZSAmJiB0aGlzLnRvdGFsUHJvZ3Jlc3MoKSA8IDEpID8gdGhpcy5fdFRpbWUgJSAodGhpcy5fZHVyICsgdGhpcy5fckRlbGF5KSA6IHRoaXMuX3RzID8gWHQoZS5yYXdUaW1lKHQpLCB0aGlzKSA6IHRoaXMuX3RUaW1lIDogdGhpcy5fdFRpbWUKICAgICAgICAgICAgfSwgZS5nbG9iYWxUaW1lID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHRoaXMsIG4gPSBhcmd1bWVudHMubGVuZ3RoID8gdCA6IGUucmF3VGltZSgpOyBlOykgbiA9IGUuX3N0YXJ0ICsgbiAvIChlLl90cyB8fCAxKSwgZSA9IGUuX2RwOwogICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgfSwgZS5yZXBlYXQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9yZXBlYXQgPSB0LCBRdCh0aGlzKSkgOiB0aGlzLl9yZXBlYXQKICAgICAgICAgICAgfSwgZS5yZXBlYXREZWxheSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3JEZWxheSA9IHQsIFF0KHRoaXMpKSA6IHRoaXMuX3JEZWxheQogICAgICAgICAgICB9LCBlLnlveW8gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl95b3lvID0gdCwgdGhpcykgOiB0aGlzLl95b3lvCiAgICAgICAgICAgIH0sIGUuc2VlayA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvdGFsVGltZShadCh0aGlzLCB0KSwgcShlKSkKICAgICAgICAgICAgfSwgZS5yZXN0YXJ0ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGxheSgpLnRvdGFsVGltZSh0ID8gLXRoaXMuX2RlbGF5IDogMCwgcShlKSkKICAgICAgICAgICAgfSwgZS5wbGF5ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gdCAmJiB0aGlzLnNlZWsodCwgZSksIHRoaXMucmV2ZXJzZWQoITEpLnBhdXNlZCghMSkKICAgICAgICAgICAgfSwgZS5yZXZlcnNlID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gdCAmJiB0aGlzLnNlZWsodCB8fCB0aGlzLnRvdGFsRHVyYXRpb24oKSwgZSksIHRoaXMucmV2ZXJzZWQoITApLnBhdXNlZCghMSkKICAgICAgICAgICAgfSwgZS5wYXVzZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgJiYgdGhpcy5zZWVrKHQsIGUpLCB0aGlzLnBhdXNlZCghMCkKICAgICAgICAgICAgfSwgZS5yZXN1bWUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhdXNlZCghMSkKICAgICAgICAgICAgfSwgZS5yZXZlcnNlZCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKCEhdCAhPT0gdGhpcy5yZXZlcnNlZCgpICYmIHRoaXMudGltZVNjYWxlKC10aGlzLl9ydHMgfHwgKHQgPyAtMWUtOCA6IDApKSwgdGhpcykgOiB0aGlzLl9ydHMgPCAwCiAgICAgICAgICAgIH0sIGUuaW52YWxpZGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2luaXR0ZWQgPSAwLCB0aGlzLl96VGltZSA9IC0xZS04LCB0aGlzCiAgICAgICAgICAgIH0sIGUuaXNBY3RpdmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBlID0gdGhpcy5wYXJlbnQgfHwgdGhpcy5fZHAsCiAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuX3N0YXJ0OwogICAgICAgICAgICAgICAgcmV0dXJuICEoZSAmJiAhKHRoaXMuX3RzICYmIHRoaXMuX2luaXR0ZWQgJiYgZS5pc0FjdGl2ZSgpICYmICh0ID0gZS5yYXdUaW1lKCEwKSkgPj0gbiAmJiB0IDwgdGhpcy5lbmRUaW1lKCEwKSAtIDFlLTgpKQogICAgICAgICAgICB9LCBlLmV2ZW50Q2FsbGJhY2sgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMudmFyczsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMSA/IChlID8gKHJbdF0gPSBlLCBuICYmIChyW3QgKyAiUGFyYW1zIl0gPSBuKSwgIm9uVXBkYXRlIiA9PT0gdCAmJiAodGhpcy5fb25VcGRhdGUgPSBlKSkgOiBkZWxldGUgclt0XSwgdGhpcykgOiByW3RdCiAgICAgICAgICAgIH0sIGUudGhlbiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gaih0KSA/IHQgOiBBdCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnRoZW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRoZW4gPSBudWxsLCBqKHIpICYmIChyID0gcihlKSkgJiYgKHIudGhlbiB8fCByID09PSBlKSAmJiAoZS50aGVuID0gdCksIG4ociksIGUudGhlbiA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlLl9pbml0dGVkICYmIDEgPT09IGUudG90YWxQcm9ncmVzcygpICYmIGUuX3RzID49IDAgfHwgIWUuX3RUaW1lICYmIGUuX3RzIDwgMCA/IGkoKSA6IGUuX3Byb20gPSBpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwgZS5raWxsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBkZSh0aGlzKQogICAgICAgICAgICB9LCB0CiAgICAgICAgfSgpOwogICAgTXQoemUucHJvdG90eXBlLCB7CiAgICAgICAgX3RpbWU6IDAsCiAgICAgICAgX3N0YXJ0OiAwLAogICAgICAgIF9lbmQ6IDAsCiAgICAgICAgX3RUaW1lOiAwLAogICAgICAgIF90RHVyOiAwLAogICAgICAgIF9kaXJ0eTogMCwKICAgICAgICBfcmVwZWF0OiAwLAogICAgICAgIF95b3lvOiAhMSwKICAgICAgICBwYXJlbnQ6IG51bGwsCiAgICAgICAgX2luaXR0ZWQ6ICExLAogICAgICAgIF9yRGVsYXk6IDAsCiAgICAgICAgX3RzOiAxLAogICAgICAgIF9kcDogMCwKICAgICAgICByYXRpbzogMCwKICAgICAgICBfelRpbWU6IC0xZS04LAogICAgICAgIF9wcm9tOiAwLAogICAgICAgIF9wczogITEsCiAgICAgICAgX3J0czogMQogICAgfSk7CiAgICB2YXIgWWUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgZnVuY3Rpb24gZShlLCBuKSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlICYmIChlID0ge30pLCAoaSA9IHQuY2FsbCh0aGlzLCBlLCBuKSB8fCB0aGlzKS5sYWJlbHMgPSB7fSwgaS5zbW9vdGhDaGlsZFRpbWluZyA9ICEhZS5zbW9vdGhDaGlsZFRpbWluZywgaS5hdXRvUmVtb3ZlQ2hpbGRyZW4gPSAhIWUuYXV0b1JlbW92ZUNoaWxkcmVuLCBpLl9zb3J0ID0gcShlLnNvcnRDaGlsZHJlbiksIGkucGFyZW50ICYmIFV0KGkucGFyZW50LCByKGkpKSwgZS5zY3JvbGxUcmlnZ2VyICYmIHF0KHIoaSksIGUuc2Nyb2xsVHJpZ2dlciksIGkKICAgICAgICB9CiAgICAgICAgaShlLCB0KTsKICAgICAgICB2YXIgbiA9IGUucHJvdG90eXBlOwogICAgICAgIHJldHVybiBuLnRvID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICByZXR1cm4gbmV3IFFlKHQsIHd0KGFyZ3VtZW50cywgMCwgdGhpcyksIFp0KHRoaXMsIFYoZSkgPyBhcmd1bWVudHNbM10gOiBuKSksIHRoaXMKICAgICAgICB9LCBuLmZyb20gPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUWUodCwgd3QoYXJndW1lbnRzLCAxLCB0aGlzKSwgWnQodGhpcywgVihlKSA/IGFyZ3VtZW50c1szXSA6IG4pKSwgdGhpcwogICAgICAgIH0sIG4uZnJvbVRvID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gbmV3IFFlKHQsIHd0KGFyZ3VtZW50cywgMiwgdGhpcyksIFp0KHRoaXMsIFYoZSkgPyBhcmd1bWVudHNbNF0gOiByKSksIHRoaXMKICAgICAgICB9LCBuLnNldCA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGUuZHVyYXRpb24gPSAwLCBlLnBhcmVudCA9IHRoaXMsIGt0KGUpLnJlcGVhdERlbGF5IHx8IChlLnJlcGVhdCA9IDApLCBlLmltbWVkaWF0ZVJlbmRlciA9ICEhZS5pbW1lZGlhdGVSZW5kZXIsIG5ldyBRZSh0LCBlLCBadCh0aGlzLCBuKSwgMSksIHRoaXMKICAgICAgICB9LCBuLmNhbGwgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBXdCh0aGlzLCBRZS5kZWxheWVkQ2FsbCgwLCB0LCBlKSwgWnQodGhpcywgbikpCiAgICAgICAgfSwgbi5zdGFnZ2VyVG8gPSBmdW5jdGlvbih0LCBlLCBuLCByLCBpLCB1LCBzKSB7CiAgICAgICAgICAgIHJldHVybiBuLmR1cmF0aW9uID0gZSwgbi5zdGFnZ2VyID0gbi5zdGFnZ2VyIHx8IHIsIG4ub25Db21wbGV0ZSA9IHUsIG4ub25Db21wbGV0ZVBhcmFtcyA9IHMsIG4ucGFyZW50ID0gdGhpcywgbmV3IFFlKHQsIG4sIFp0KHRoaXMsIGkpKSwgdGhpcwogICAgICAgIH0sIG4uc3RhZ2dlckZyb20gPSBmdW5jdGlvbih0LCBlLCBuLCByLCBpLCB1LCBzKSB7CiAgICAgICAgICAgIHJldHVybiBuLnJ1bkJhY2t3YXJkcyA9IDEsIGt0KG4pLmltbWVkaWF0ZVJlbmRlciA9IHEobi5pbW1lZGlhdGVSZW5kZXIpLCB0aGlzLnN0YWdnZXJUbyh0LCBlLCBuLCByLCBpLCB1LCBzKQogICAgICAgIH0sIG4uc3RhZ2dlckZyb21UbyA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGksIHUsIHMsIG8pIHsKICAgICAgICAgICAgcmV0dXJuIHIuc3RhcnRBdCA9IG4sIGt0KHIpLmltbWVkaWF0ZVJlbmRlciA9IHEoci5pbW1lZGlhdGVSZW5kZXIpLCB0aGlzLnN0YWdnZXJUbyh0LCBlLCByLCBpLCB1LCBzLCBvKQogICAgICAgIH0sIG4ucmVuZGVyID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgcywgbywgYSwgbCwgaCwgZiwgRCwgcCwgYywgZCwgZyA9IHRoaXMuX3RpbWUsCiAgICAgICAgICAgICAgICBfID0gdGhpcy5fZGlydHkgPyB0aGlzLnRvdGFsRHVyYXRpb24oKSA6IHRoaXMuX3REdXIsCiAgICAgICAgICAgICAgICBtID0gdGhpcy5fZHVyLAogICAgICAgICAgICAgICAgdiA9IHRoaXMgIT09IHUgJiYgdCA+IF8gLSAxZS04ICYmIHQgPj0gMCA/IF8gOiB0IDwgMWUtOCA/IDAgOiB0LAogICAgICAgICAgICAgICAgeSA9IHRoaXMuX3pUaW1lIDwgMCAhPSB0IDwgMCAmJiAodGhpcy5faW5pdHRlZCB8fCAhbSk7CiAgICAgICAgICAgIGlmICh2ICE9PSB0aGlzLl90VGltZSB8fCBuIHx8IHkpIHsKICAgICAgICAgICAgICAgIGlmIChnICE9PSB0aGlzLl90aW1lICYmIG0gJiYgKHYgKz0gdGhpcy5fdGltZSAtIGcsIHQgKz0gdGhpcy5fdGltZSAtIGcpLCByID0gdiwgRCA9IHRoaXMuX3N0YXJ0LCBsID0gIShmID0gdGhpcy5fdHMpLCB5ICYmIChtIHx8IChnID0gdGhpcy5felRpbWUpLCAodCB8fCAhZSkgJiYgKHRoaXMuX3pUaW1lID0gdCkpLCB0aGlzLl9yZXBlYXQgJiYgKGMgPSB0aGlzLl95b3lvLCBhID0gbSArIHRoaXMuX3JEZWxheSwgciA9IHh0KHYgJSBhKSwgdiA9PT0gXyA/IChvID0gdGhpcy5fcmVwZWF0LCByID0gbSkgOiAoKG8gPSB+fih2IC8gYSkpICYmIG8gPT09IHYgLyBhICYmIChyID0gbSwgby0tKSwgciA+IG0gJiYgKHIgPSBtKSksIHAgPSBZdCh0aGlzLl90VGltZSwgYSksICFnICYmIHRoaXMuX3RUaW1lICYmIHAgIT09IG8gJiYgKHAgPSBvKSwgYyAmJiAxICYgbyAmJiAociA9IG0gLSByLCBkID0gMSksIG8gIT09IHAgJiYgIXRoaXMuX2xvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIEMgPSBjICYmIDEgJiBwLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gQyA9PT0gKGMgJiYgMSAmIG8pOwogICAgICAgICAgICAgICAgICAgIGlmIChvIDwgcCAmJiAoQyA9ICFDKSwgZyA9IEMgPyAwIDogbSwgdGhpcy5fbG9jayA9IDEsIHRoaXMucmVuZGVyKGcgfHwgKGQgPyAwIDogeHQobyAqIGEpKSwgZSwgIW0pLl9sb2NrID0gMCwgIWUgJiYgdGhpcy5wYXJlbnQgJiYgY2UodGhpcywgIm9uUmVwZWF0IiksIHRoaXMudmFycy5yZXBlYXRSZWZyZXNoICYmICFkICYmICh0aGlzLmludmFsaWRhdGUoKS5fbG9jayA9IDEpLCBnICE9PSB0aGlzLl90aW1lIHx8IGwgIT09ICF0aGlzLl90cykgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKG0gPSB0aGlzLl9kdXIsIF8gPSB0aGlzLl90RHVyLCB4ICYmICh0aGlzLl9sb2NrID0gMiwgZyA9IEMgPyBtIDogLTFlLTQsIHRoaXMucmVuZGVyKGcsICEwKSwgdGhpcy52YXJzLnJlcGVhdFJlZnJlc2ggJiYgIWQgJiYgdGhpcy5pbnZhbGlkYXRlKCkpLCB0aGlzLl9sb2NrID0gMCwgIXRoaXMuX3RzICYmICFsKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICBQZSh0aGlzLCBkKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHRoaXMuX2hhc1BhdXNlICYmICF0aGlzLl9mb3JjaW5nICYmIHRoaXMuX2xvY2sgPCAyICYmIChoID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPiBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gdC5fZmlyc3Q7IHIgJiYgci5fc3RhcnQgPD0gbjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuX2R1ciAmJiAiaXNQYXVzZSIgPT09IHIuZGF0YSAmJiByLl9zdGFydCA+IGUpIHJldHVybiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLl9uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSB0Ll9sYXN0OyByICYmIHIuX3N0YXJ0ID49IG47KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghci5fZHVyICYmICJpc1BhdXNlIiA9PT0gci5kYXRhICYmIHIuX3N0YXJ0IDwgZSkgcmV0dXJuIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLl9wcmV2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0odGhpcywgeHQoZyksIHh0KHIpKSkgJiYgKHYgLT0gciAtIChyID0gaC5fc3RhcnQpKSwgdGhpcy5fdFRpbWUgPSB2LCB0aGlzLl90aW1lID0gciwgdGhpcy5fYWN0ID0gIWYsIHRoaXMuX2luaXR0ZWQgfHwgKHRoaXMuX29uVXBkYXRlID0gdGhpcy52YXJzLm9uVXBkYXRlLCB0aGlzLl9pbml0dGVkID0gMSwgdGhpcy5felRpbWUgPSB0KSwgIWcgJiYgciAmJiAhZSAmJiBjZSh0aGlzLCAib25TdGFydCIpLCByID49IGcgJiYgdCA+PSAwKQogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IHRoaXMuX2ZpcnN0OyBpOykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IGkuX25leHQsIChpLl9hY3QgfHwgciA+PSBpLl9zdGFydCkgJiYgaS5fdHMgJiYgaCAhPT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkucGFyZW50ICE9PSB0aGlzKSByZXR1cm4gdGhpcy5yZW5kZXIodCwgZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5yZW5kZXIoaS5fdHMgPiAwID8gKHIgLSBpLl9zdGFydCkgKiBpLl90cyA6IChpLl9kaXJ0eSA/IGkudG90YWxEdXJhdGlvbigpIDogaS5fdER1cikgKyAociAtIGkuX3N0YXJ0KSAqIGkuX3RzLCBlLCBuKSwgciAhPT0gdGhpcy5fdGltZSB8fCAhdGhpcy5fdHMgJiYgIWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMCwgcyAmJiAodiArPSB0aGlzLl96VGltZSA9IC0xZS04KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX2xhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIEYgPSB0IDwgMCA/IHQgOiByOyBpOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBpLl9wcmV2LCAoaS5fYWN0IHx8IEYgPD0gaS5fZW5kKSAmJiBpLl90cyAmJiBoICE9PSBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkucGFyZW50ICE9PSB0aGlzKSByZXR1cm4gdGhpcy5yZW5kZXIodCwgZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkucmVuZGVyKGkuX3RzID4gMCA/IChGIC0gaS5fc3RhcnQpICogaS5fdHMgOiAoaS5fZGlydHkgPyBpLnRvdGFsRHVyYXRpb24oKSA6IGkuX3REdXIpICsgKEYgLSBpLl9zdGFydCkgKiBpLl90cywgZSwgbiksIHIgIT09IHRoaXMuX3RpbWUgfHwgIXRoaXMuX3RzICYmICFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAwLCBzICYmICh2ICs9IHRoaXMuX3pUaW1lID0gRiA/IC0xZS04IDogMWUtOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHMKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChoICYmICFlICYmICh0aGlzLnBhdXNlKCksIGgucmVuZGVyKHIgPj0gZyA/IDAgOiAtMWUtOCkuX3pUaW1lID0gciA+PSBnID8gMSA6IC0xLCB0aGlzLl90cykpIHJldHVybiB0aGlzLl9zdGFydCA9IEQsIGp0KHRoaXMpLCB0aGlzLnJlbmRlcih0LCBlLCBuKTsKICAgICAgICAgICAgICAgIHRoaXMuX29uVXBkYXRlICYmICFlICYmIGNlKHRoaXMsICJvblVwZGF0ZSIsICEwKSwgKHYgPT09IF8gJiYgXyA+PSB0aGlzLnRvdGFsRHVyYXRpb24oKSB8fCAhdiAmJiBnKSAmJiAoRCAhPT0gdGhpcy5fc3RhcnQgJiYgTWF0aC5hYnMoZikgPT09IE1hdGguYWJzKHRoaXMuX3RzKSB8fCB0aGlzLl9sb2NrIHx8ICgodCB8fCAhbSkgJiYgKHYgPT09IF8gJiYgdGhpcy5fdHMgPiAwIHx8ICF2ICYmIHRoaXMuX3RzIDwgMCkgJiYgTnQodGhpcywgMSksIGUgfHwgdCA8IDAgJiYgIWcgfHwgIXYgJiYgIWcgfHwgKGNlKHRoaXMsIHYgPT09IF8gPyAib25Db21wbGV0ZSIgOiAib25SZXZlcnNlQ29tcGxldGUiLCAhMCksIHRoaXMuX3Byb20gJiYgISh2IDwgXyAmJiB0aGlzLnRpbWVTY2FsZSgpID4gMCkgJiYgdGhpcy5fcHJvbSgpKSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LCBuLmFkZCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICBpZiAoVihlKSB8fCAoZSA9IFp0KHRoaXMsIGUpKSwgISh0IGluc3RhbmNlb2YgemUpKSB7CiAgICAgICAgICAgICAgICBpZiAoSyh0KSkgcmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmFkZCh0LCBlKQogICAgICAgICAgICAgICAgfSkpLCB0aGlzOwogICAgICAgICAgICAgICAgaWYgKFgodCkpIHJldHVybiB0aGlzLmFkZExhYmVsKHQsIGUpOwogICAgICAgICAgICAgICAgaWYgKCFqKHQpKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgIHQgPSBRZS5kZWxheWVkQ2FsbCgwLCB0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzICE9PSB0ID8gV3QodGhpcywgdCwgZSkgOiB0aGlzCiAgICAgICAgfSwgbi5nZXRDaGlsZHJlbiA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIpIHsKICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITApLCB2b2lkIDAgPT09IGUgJiYgKGUgPSAhMCksIHZvaWQgMCA9PT0gbiAmJiAobiA9ICEwKSwgdm9pZCAwID09PSByICYmIChyID0gLWspOwogICAgICAgICAgICBmb3IgKHZhciBpID0gW10sIHUgPSB0aGlzLl9maXJzdDsgdTspIHUuX3N0YXJ0ID49IHIgJiYgKHUgaW5zdGFuY2VvZiBRZSA/IGUgJiYgaS5wdXNoKHUpIDogKG4gJiYgaS5wdXNoKHUpLCB0ICYmIGkucHVzaC5hcHBseShpLCB1LmdldENoaWxkcmVuKCEwLCBlLCBuKSkpKSwgdSA9IHUuX25leHQ7CiAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgfSwgbi5nZXRCeUlkID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy5nZXRDaGlsZHJlbigxLCAxLCAxKSwgbiA9IGUubGVuZ3RoOyBuLS07KQogICAgICAgICAgICAgICAgaWYgKGVbbl0udmFycy5pZCA9PT0gdCkgcmV0dXJuIGVbbl0KICAgICAgICB9LCBuLnJlbW92ZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIFgodCkgPyB0aGlzLnJlbW92ZUxhYmVsKHQpIDogaih0KSA/IHRoaXMua2lsbFR3ZWVuc09mKHQpIDogKEx0KHRoaXMsIHQpLCB0ID09PSB0aGlzLl9yZWNlbnQgJiYgKHRoaXMuX3JlY2VudCA9IHRoaXMuX2xhc3QpLCBSdCh0aGlzKSkKICAgICAgICB9LCBuLnRvdGFsVGltZSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5fZm9yY2luZyA9IDEsICF0aGlzLl9kcCAmJiB0aGlzLl90cyAmJiAodGhpcy5fc3RhcnQgPSB4dChFZS50aW1lIC0gKHRoaXMuX3RzID4gMCA/IGUgLyB0aGlzLl90cyA6ICh0aGlzLnRvdGFsRHVyYXRpb24oKSAtIGUpIC8gLXRoaXMuX3RzKSkpLCB0LnByb3RvdHlwZS50b3RhbFRpbWUuY2FsbCh0aGlzLCBlLCBuKSwgdGhpcy5fZm9yY2luZyA9IDAsIHRoaXMpIDogdGhpcy5fdFRpbWUKICAgICAgICB9LCBuLmFkZExhYmVsID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5sYWJlbHNbdF0gPSBadCh0aGlzLCBlKSwgdGhpcwogICAgICAgIH0sIG4ucmVtb3ZlTGFiZWwgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBkZWxldGUgdGhpcy5sYWJlbHNbdF0sIHRoaXMKICAgICAgICB9LCBuLmFkZFBhdXNlID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICB2YXIgciA9IFFlLmRlbGF5ZWRDYWxsKDAsIGUgfHwgbHQsIG4pOwogICAgICAgICAgICByZXR1cm4gci5kYXRhID0gImlzUGF1c2UiLCB0aGlzLl9oYXNQYXVzZSA9IDEsIFd0KHRoaXMsIHIsIFp0KHRoaXMsIHQpKQogICAgICAgIH0sIG4ucmVtb3ZlUGF1c2UgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZmlyc3Q7CiAgICAgICAgICAgIGZvciAodCA9IFp0KHRoaXMsIHQpOyBlOykgZS5fc3RhcnQgPT09IHQgJiYgImlzUGF1c2UiID09PSBlLmRhdGEgJiYgTnQoZSksIGUgPSBlLl9uZXh0CiAgICAgICAgfSwgbi5raWxsVHdlZW5zT2YgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgPSB0aGlzLmdldFR3ZWVuc09mKHQsIG4pLCBpID0gci5sZW5ndGg7IGktLTspIFhlICE9PSByW2ldICYmIHJbaV0ua2lsbCh0LCBlKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LCBuLmdldFR3ZWVuc09mID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBmb3IgKHZhciBuLCByID0gW10sIGkgPSBpZSh0KSwgdSA9IHRoaXMuX2ZpcnN0LCBzID0gVihlKTsgdTspIHUgaW5zdGFuY2VvZiBRZSA/IEZ0KHUuX3RhcmdldHMsIGkpICYmIChzID8gKCFYZSB8fCB1Ll9pbml0dGVkICYmIHUuX3RzKSAmJiB1Lmdsb2JhbFRpbWUoMCkgPD0gZSAmJiB1Lmdsb2JhbFRpbWUodS50b3RhbER1cmF0aW9uKCkpID4gZSA6ICFlIHx8IHUuaXNBY3RpdmUoKSkgJiYgci5wdXNoKHUpIDogKG4gPSB1LmdldFR3ZWVuc09mKGksIGUpKS5sZW5ndGggJiYgci5wdXNoLmFwcGx5KHIsIG4pLCB1ID0gdS5fbmV4dDsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9LCBuLnR3ZWVuVG8gPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGUgPSBlIHx8IHt9OwogICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICByID0gWnQobiwgdCksCiAgICAgICAgICAgICAgICBpID0gZSwKICAgICAgICAgICAgICAgIHUgPSBpLnN0YXJ0QXQsCiAgICAgICAgICAgICAgICBzID0gaS5vblN0YXJ0LAogICAgICAgICAgICAgICAgbyA9IGkub25TdGFydFBhcmFtcywKICAgICAgICAgICAgICAgIGEgPSBRZS50byhuLCBNdChlLCB7CiAgICAgICAgICAgICAgICAgICAgZWFzZTogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgIGxhenk6ICExLAogICAgICAgICAgICAgICAgICAgIHRpbWU6IHIsCiAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IGUuZHVyYXRpb24gfHwgTWF0aC5hYnMoKHIgLSAodSAmJiAidGltZSIgaW4gdSA/IHUudGltZSA6IG4uX3RpbWUpKSAvIG4udGltZVNjYWxlKCkpIHx8IDFlLTgsCiAgICAgICAgICAgICAgICAgICAgb25TdGFydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmR1cmF0aW9uIHx8IE1hdGguYWJzKChyIC0gbi5fdGltZSkgLyBuLnRpbWVTY2FsZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5fZHVyICE9PSB0ICYmIEh0KGEsIHQsIDAsIDEpLnJlbmRlcihhLl90aW1lLCAhMCwgITApLCBzICYmIHMuYXBwbHkoYSwgbyB8fCBbXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgfSwgbi50d2VlbkZyb21UbyA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMudHdlZW5UbyhlLCBNdCh7CiAgICAgICAgICAgICAgICBzdGFydEF0OiB7CiAgICAgICAgICAgICAgICAgICAgdGltZTogWnQodGhpcywgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgbikpCiAgICAgICAgfSwgbi5yZWNlbnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY2VudAogICAgICAgIH0sIG4ubmV4dExhYmVsID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ICYmICh0ID0gdGhpcy5fdGltZSksIHBlKHRoaXMsIFp0KHRoaXMsIHQpKQogICAgICAgIH0sIG4ucHJldmlvdXNMYWJlbCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiAodCA9IHRoaXMuX3RpbWUpLCBwZSh0aGlzLCBadCh0aGlzLCB0KSwgMSkKICAgICAgICB9LCBuLmN1cnJlbnRMYWJlbCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzLnNlZWsodCwgITApIDogdGhpcy5wcmV2aW91c0xhYmVsKHRoaXMuX3RpbWUgKyAxZS04KQogICAgICAgIH0sIG4uc2hpZnRDaGlsZHJlbiA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdm9pZCAwID09PSBuICYmIChuID0gMCk7CiAgICAgICAgICAgIGZvciAodmFyIHIsIGkgPSB0aGlzLl9maXJzdCwgdSA9IHRoaXMubGFiZWxzOyBpOykgaS5fc3RhcnQgPj0gbiAmJiAoaS5fc3RhcnQgKz0gdCwgaS5fZW5kICs9IHQpLCBpID0gaS5fbmV4dDsKICAgICAgICAgICAgaWYgKGUpCiAgICAgICAgICAgICAgICBmb3IgKHIgaW4gdSkgdVtyXSA+PSBuICYmICh1W3JdICs9IHQpOwogICAgICAgICAgICByZXR1cm4gUnQodGhpcykKICAgICAgICB9LCBuLmludmFsaWRhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9maXJzdDsKICAgICAgICAgICAgZm9yICh0aGlzLl9sb2NrID0gMDsgZTspIGUuaW52YWxpZGF0ZSgpLCBlID0gZS5fbmV4dDsKICAgICAgICAgICAgcmV0dXJuIHQucHJvdG90eXBlLmludmFsaWRhdGUuY2FsbCh0aGlzKQogICAgICAgIH0sIG4uY2xlYXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9ICEwKTsKICAgICAgICAgICAgZm9yICh2YXIgZSwgbiA9IHRoaXMuX2ZpcnN0OyBuOykgZSA9IG4uX25leHQsIHRoaXMucmVtb3ZlKG4pLCBuID0gZTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWUgPSB0aGlzLl90VGltZSA9IHRoaXMuX3BUaW1lID0gMCwgdCAmJiAodGhpcy5sYWJlbHMgPSB7fSksIFJ0KHRoaXMpCiAgICAgICAgfSwgbi50b3RhbER1cmF0aW9uID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSwgbiwgciwgaSA9IDAsCiAgICAgICAgICAgICAgICBzID0gdGhpcywKICAgICAgICAgICAgICAgIG8gPSBzLl9sYXN0LAogICAgICAgICAgICAgICAgYSA9IGs7CiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gcy50aW1lU2NhbGUoKHMuX3JlcGVhdCA8IDAgPyBzLmR1cmF0aW9uKCkgOiBzLnRvdGFsRHVyYXRpb24oKSkgLyAocy5yZXZlcnNlZCgpID8gLXQgOiB0KSk7CiAgICAgICAgICAgIGlmIChzLl9kaXJ0eSkgewogICAgICAgICAgICAgICAgZm9yIChyID0gcy5wYXJlbnQ7IG87KSBlID0gby5fcHJldiwgby5fZGlydHkgJiYgby50b3RhbER1cmF0aW9uKCksIChuID0gby5fc3RhcnQpID4gYSAmJiBzLl9zb3J0ICYmIG8uX3RzICYmICFzLl9sb2NrID8gKHMuX2xvY2sgPSAxLCBXdChzLCBvLCBuIC0gby5fZGVsYXksIDEpLl9sb2NrID0gMCkgOiBhID0gbiwgbiA8IDAgJiYgby5fdHMgJiYgKGkgLT0gbiwgKCFyICYmICFzLl9kcCB8fCByICYmIHIuc21vb3RoQ2hpbGRUaW1pbmcpICYmIChzLl9zdGFydCArPSBuIC8gcy5fdHMsIHMuX3RpbWUgLT0gbiwgcy5fdFRpbWUgLT0gbiksIHMuc2hpZnRDaGlsZHJlbigtbiwgITEsIC1JbmZpbml0eSksIGEgPSAwKSwgby5fZW5kID4gaSAmJiBvLl90cyAmJiAoaSA9IG8uX2VuZCksIG8gPSBlOwogICAgICAgICAgICAgICAgSHQocywgcyA9PT0gdSAmJiBzLl90aW1lID4gaSA/IHMuX3RpbWUgOiBpLCAxLCAxKSwgcy5fZGlydHkgPSAwCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHMuX3REdXIKICAgICAgICB9LCBlLnVwZGF0ZVJvb3QgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICh1Ll90cyAmJiAoYnQodSwgWHQodCwgdSkpLCBoID0gRWUuZnJhbWUpLCBFZS5mcmFtZSA+PSBkdCkgewogICAgICAgICAgICAgICAgZHQgKz0gUC5hdXRvU2xlZXAgfHwgMTIwOwogICAgICAgICAgICAgICAgdmFyIGUgPSB1Ll9maXJzdDsKICAgICAgICAgICAgICAgIGlmICgoIWUgfHwgIWUuX3RzKSAmJiBQLmF1dG9TbGVlcCAmJiBFZS5fbGlzdGVuZXJzLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZSAmJiAhZS5fdHM7KSBlID0gZS5fbmV4dDsKICAgICAgICAgICAgICAgICAgICBlIHx8IEVlLnNsZWVwKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIGUKICAgIH0oemUpOwogICAgTXQoWWUucHJvdG90eXBlLCB7CiAgICAgICAgX2xvY2s6IDAsCiAgICAgICAgX2hhc1BhdXNlOiAwLAogICAgICAgIF9mb3JjaW5nOiAwCiAgICB9KTsKICAgIHZhciBYZSwgamUgPSBmdW5jdGlvbih0LCBlLCBuLCByLCBpLCB1LCBzKSB7CiAgICAgICAgICAgIHZhciBvLCBhLCBsLCBoLCBmLCBELCBwLCBjLCBkID0gbmV3IGhuKHRoaXMuX3B0LCB0LCBlLCAwLCAxLCBybiwgbnVsbCwgaSksCiAgICAgICAgICAgICAgICBnID0gMCwKICAgICAgICAgICAgICAgIF8gPSAwOwogICAgICAgICAgICBmb3IgKGQuYiA9IG4sIGQuZSA9IHIsIG4gKz0gIiIsIChwID0gfihyICs9ICIiKS5pbmRleE9mKCJyYW5kb20oIikpICYmIChyID0gZmUocikpLCB1ICYmICh1KGMgPSBbbiwgcl0sIHQsIGUpLCBuID0gY1swXSwgciA9IGNbMV0pLCBhID0gbi5tYXRjaCh0dCkgfHwgW107IG8gPSB0dC5leGVjKHIpOykgaCA9IG9bMF0sIGYgPSByLnN1YnN0cmluZyhnLCBvLmluZGV4KSwgbCA/IGwgPSAobCArIDEpICUgNSA6ICJyZ2JhKCIgPT09IGYuc3Vic3RyKC01KSAmJiAobCA9IDEpLCBoICE9PSBhW18rK10gJiYgKEQgPSBwYXJzZUZsb2F0KGFbXyAtIDFdKSB8fCAwLCBkLl9wdCA9IHsKICAgICAgICAgICAgICAgIF9uZXh0OiBkLl9wdCwKICAgICAgICAgICAgICAgIHA6IGYgfHwgMSA9PT0gXyA/IGYgOiAiLCIsCiAgICAgICAgICAgICAgICBzOiBELAogICAgICAgICAgICAgICAgYzogIj0iID09PSBoLmNoYXJBdCgxKSA/IHBhcnNlRmxvYXQoaC5zdWJzdHIoMikpICogKCItIiA9PT0gaC5jaGFyQXQoMCkgPyAtMSA6IDEpIDogcGFyc2VGbG9hdChoKSAtIEQsCiAgICAgICAgICAgICAgICBtOiBsICYmIGwgPCA0ID8gTWF0aC5yb3VuZCA6IDAKICAgICAgICAgICAgfSwgZyA9IHR0Lmxhc3RJbmRleCk7CiAgICAgICAgICAgIHJldHVybiBkLmMgPSBnIDwgci5sZW5ndGggPyByLnN1YnN0cmluZyhnLCByLmxlbmd0aCkgOiAiIiwgZC5mcCA9IHMsIChldC50ZXN0KHIpIHx8IHApICYmIChkLmUgPSAwKSwgdGhpcy5fcHQgPSBkLCBkCiAgICAgICAgfSwKICAgICAgICBWZSA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGksIHUsIHMsIG8sIGEpIHsKICAgICAgICAgICAgaihyKSAmJiAociA9IHIoaSB8fCAwLCB0LCB1KSk7CiAgICAgICAgICAgIHZhciBsLCBoID0gdFtlXSwKICAgICAgICAgICAgICAgIGYgPSAiZ2V0IiAhPT0gbiA/IG4gOiBqKGgpID8gYSA/IHRbZS5pbmRleE9mKCJzZXQiKSB8fCAhaih0WyJnZXQiICsgZS5zdWJzdHIoMyldKSA/IGUgOiAiZ2V0IiArIGUuc3Vic3RyKDMpXShhKSA6IHRbZV0oKSA6IGgsCiAgICAgICAgICAgICAgICBEID0gaihoKSA/IGEgPyAkZSA6IFplIDogS2U7CiAgICAgICAgICAgIGlmIChYKHIpICYmICh+ci5pbmRleE9mKCJyYW5kb20oIikgJiYgKHIgPSBmZShyKSksICI9IiA9PT0gci5jaGFyQXQoMSkgJiYgKHIgPSBwYXJzZUZsb2F0KGYpICsgcGFyc2VGbG9hdChyLnN1YnN0cigyKSkgKiAoIi0iID09PSByLmNoYXJBdCgwKSA/IC0xIDogMSkgKyAodGUoZikgfHwgMCkpKSwgZiAhPT0gcikgcmV0dXJuIGlzTmFOKGYgKiByKSA/ICghaCAmJiAhKGUgaW4gdCkgJiYgc3QoZSwgciksIGplLmNhbGwodGhpcywgdCwgZSwgZiwgciwgRCwgbyB8fCBQLnN0cmluZ0ZpbHRlciwgYSkpIDogKGwgPSBuZXcgaG4odGhpcy5fcHQsIHQsIGUsICtmIHx8IDAsIHIgLSAoZiB8fCAwKSwgImJvb2xlYW4iID09IHR5cGVvZiBoID8gbm4gOiBlbiwgMCwgRCksIGEgJiYgKGwuZnAgPSBhKSwgcyAmJiBsLm1vZGlmaWVyKHMsIHRoaXMsIHQpLCB0aGlzLl9wdCA9IGwpCiAgICAgICAgfSwKICAgICAgICBVZSA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGksIHUpIHsKICAgICAgICAgICAgdmFyIHMsIG8sIGEsIGw7CiAgICAgICAgICAgIGlmIChwdFt0XSAmJiAhMSAhPT0gKHMgPSBuZXcgcHRbdF0pLmluaXQoaSwgcy5yYXdWYXJzID8gZVt0XSA6IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaih0KSAmJiAodCA9IHFlKHQsIGksIGUsIG4sIHIpKSwgIVcodCkgfHwgdC5zdHlsZSAmJiB0Lm5vZGVUeXBlIHx8IEsodCkgfHwgUSh0KSkgcmV0dXJuIFgodCkgPyBxZSh0LCBpLCBlLCBuLCByKSA6IHQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUsIHMgPSB7fTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHUgaW4gdCkgc1t1XSA9IHFlKHRbdV0sIGksIGUsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgICAgICAgICB9KGVbdF0sIHIsIGksIHUsIG4pLCBuLCByLCB1KSAmJiAobi5fcHQgPSBvID0gbmV3IGhuKG4uX3B0LCBpLCB0LCAwLCAxLCBzLnJlbmRlciwgcywgMCwgcy5wcmlvcml0eSksIG4gIT09IGYpKQogICAgICAgICAgICAgICAgZm9yIChhID0gbi5fcHRMb29rdXBbbi5fdGFyZ2V0cy5pbmRleE9mKGkpXSwgbCA9IHMuX3Byb3BzLmxlbmd0aDsgbC0tOykgYVtzLl9wcm9wc1tsXV0gPSBvOwogICAgICAgICAgICByZXR1cm4gcwogICAgICAgIH0sCiAgICAgICAgV2UgPSBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgdmFyIHIsIGksIHMsIG8sIGEsIGwsIGgsIGYsIEQsIHAsIGMsIGQsIGcsIF8gPSBlLnZhcnMsCiAgICAgICAgICAgICAgICBtID0gXy5lYXNlLAogICAgICAgICAgICAgICAgdiA9IF8uc3RhcnRBdCwKICAgICAgICAgICAgICAgIHkgPSBfLmltbWVkaWF0ZVJlbmRlciwKICAgICAgICAgICAgICAgIEMgPSBfLmxhenksCiAgICAgICAgICAgICAgICB4ID0gXy5vblVwZGF0ZSwKICAgICAgICAgICAgICAgIEYgPSBfLm9uVXBkYXRlUGFyYW1zLAogICAgICAgICAgICAgICAgdyA9IF8uY2FsbGJhY2tTY29wZSwKICAgICAgICAgICAgICAgIEUgPSBfLnJ1bkJhY2t3YXJkcywKICAgICAgICAgICAgICAgIGIgPSBfLnlveW9FYXNlLAogICAgICAgICAgICAgICAgVCA9IF8ua2V5ZnJhbWVzLAogICAgICAgICAgICAgICAgQSA9IF8uYXV0b1JldmVydCwKICAgICAgICAgICAgICAgIE0gPSBlLl9kdXIsCiAgICAgICAgICAgICAgICBPID0gZS5fc3RhcnRBdCwKICAgICAgICAgICAgICAgIFMgPSBlLl90YXJnZXRzLAogICAgICAgICAgICAgICAgUCA9IGUucGFyZW50LAogICAgICAgICAgICAgICAgayA9IFAgJiYgIm5lc3RlZCIgPT09IFAuZGF0YSA/IFAucGFyZW50Ll90YXJnZXRzIDogUywKICAgICAgICAgICAgICAgIEwgPSAiYXV0byIgPT09IGUuX292ZXJ3cml0ZSwKICAgICAgICAgICAgICAgIE4gPSBlLnRpbWVsaW5lOwogICAgICAgICAgICBpZiAoTiAmJiAoIVQgfHwgIW0pICYmIChtID0gIm5vbmUiKSwgZS5fZWFzZSA9IEJlKG0sIEIuZWFzZSksIGUuX3lFYXNlID0gYiA/IFNlKEJlKCEwID09PSBiID8gbSA6IGIsIEIuZWFzZSkpIDogMCwgYiAmJiBlLl95b3lvICYmICFlLl9yZXBlYXQgJiYgKGIgPSBlLl95RWFzZSwgZS5feUVhc2UgPSBlLl9lYXNlLCBlLl9lYXNlID0gYiksICFOKSB7CiAgICAgICAgICAgICAgICBpZiAoZCA9IChmID0gU1swXSA/IHZ0KFNbMF0pLmhhcm5lc3MgOiAwKSAmJiBfW2YucHJvcF0sIHIgPSBCdChfLCBodCksIE8gJiYgTy5yZW5kZXIoLTEsICEwKS5raWxsKCksIHYpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoTnQoZS5fc3RhcnRBdCA9IFFlLnNldChTLCBNdCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiAiaXNTdGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlUmVuZGVyOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhenk6IHEoQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEF0OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZTogeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlUGFyYW1zOiBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tTY29wZTogdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdnZXI6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdikpKSwgeSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPiAwKSBBIHx8IChlLl9zdGFydEF0ID0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKE0gJiYgIShuIDwgMCAmJiBPKSkgcmV0dXJuIHZvaWQobiAmJiAoZS5felRpbWUgPSBuKSkKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoRSAmJiBNKQogICAgICAgICAgICAgICAgICAgIGlmIChPKSAhQSAmJiAoZS5fc3RhcnRBdCA9IDApOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG4gJiYgKHkgPSAhMSksIHMgPSBNdCh7CiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ3cml0ZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6ICJpc0Zyb21TdGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhenk6IHkgJiYgcShDKSwKICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlUmVuZGVyOiB5LAogICAgICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IFAKICAgICAgICAgICAgICAgICAgICB9LCByKSwgZCAmJiAoc1tmLnByb3BdID0gZCksIE50KGUuX3N0YXJ0QXQgPSBRZS5zZXQoUywgcykpLCB5KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuKSByZXR1cm4KICAgICAgICAgICAgICAgIH0gZWxzZSB0KGUuX3N0YXJ0QXQsIDFlLTgpOwogICAgICAgICAgICAgICAgZm9yIChlLl9wdCA9IDAsIEMgPSBNICYmIHEoQykgfHwgQyAmJiAhTSwgaSA9IDA7IGkgPCBTLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGggPSAoYSA9IFNbaV0pLl9nc2FwIHx8IG10KFMpW2ldLl9nc2FwLCBlLl9wdExvb2t1cFtpXSA9IHAgPSB7fSwgRHRbaC5pZF0gJiYgZnQubGVuZ3RoICYmIEV0KCksIGMgPSBrID09PSBTID8gaSA6IGsuaW5kZXhPZihhKSwgZiAmJiAhMSAhPT0gKEQgPSBuZXcgZikuaW5pdChhLCBkIHx8IHIsIGUsIGMsIGspICYmIChlLl9wdCA9IG8gPSBuZXcgaG4oZS5fcHQsIGEsIEQubmFtZSwgMCwgMSwgRC5yZW5kZXIsIEQsIDAsIEQucHJpb3JpdHkpLCBELl9wcm9wcy5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW3RdID0gbwogICAgICAgICAgICAgICAgICAgICAgICB9KSksIEQucHJpb3JpdHkgJiYgKGwgPSAxKSksICFmIHx8IGQpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyBpbiByKSBwdFtzXSAmJiAoRCA9IFVlKHMsIHIsIGUsIGMsIGEsIGspKSA/IEQucHJpb3JpdHkgJiYgKGwgPSAxKSA6IHBbc10gPSBvID0gVmUuY2FsbChlLCBhLCBzLCAiZ2V0IiwgcltzXSwgYywgaywgMCwgXy5zdHJpbmdGaWx0ZXIpOwogICAgICAgICAgICAgICAgICAgIGUuX29wICYmIGUuX29wW2ldICYmIGUua2lsbChhLCBlLl9vcFtpXSksIEwgJiYgZS5fcHQgJiYgKFhlID0gZSwgdS5raWxsVHdlZW5zT2YoYSwgcCwgZS5nbG9iYWxUaW1lKDApKSwgZyA9ICFlLnBhcmVudCwgWGUgPSAwKSwgZS5fcHQgJiYgQyAmJiAoRHRbaC5pZF0gPSAxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbCAmJiBsbihlKSwgZS5fb25Jbml0ICYmIGUuX29uSW5pdChlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGUuX2Zyb20gPSAhTiAmJiAhIV8ucnVuQmFja3dhcmRzLCBlLl9vblVwZGF0ZSA9IHgsIGUuX2luaXR0ZWQgPSAoIWUuX29wIHx8IGUuX3B0KSAmJiAhZwogICAgICAgIH0sCiAgICAgICAgcWUgPSBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgIHJldHVybiBqKHQpID8gdC5jYWxsKGUsIG4sIHIsIGkpIDogWCh0KSAmJiB+dC5pbmRleE9mKCJyYW5kb20oIikgPyBmZSh0KSA6IHQKICAgICAgICB9LAogICAgICAgIEdlID0gX3QgKyAicmVwZWF0LHJlcGVhdERlbGF5LHlveW8scmVwZWF0UmVmcmVzaCx5b3lvRWFzZSIsCiAgICAgICAgSGUgPSAoR2UgKyAiLGlkLHN0YWdnZXIsZGVsYXksZHVyYXRpb24scGF1c2VkLHNjcm9sbFRyaWdnZXIiKS5zcGxpdCgiLCIpLAogICAgICAgIFFlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBmdW5jdGlvbiBlKGUsIG4sIGksIHMpIHsKICAgICAgICAgICAgICAgIHZhciBvOwogICAgICAgICAgICAgICAgIm51bWJlciIgPT0gdHlwZW9mIG4gJiYgKGkuZHVyYXRpb24gPSBuLCBuID0gaSwgaSA9IG51bGwpOwogICAgICAgICAgICAgICAgdmFyIGEsIGwsIGgsIGYsIEQsIHAsIGMsIGQsIGcgPSAobyA9IHQuY2FsbCh0aGlzLCBzID8gbiA6IGt0KG4pLCBpKSB8fCB0aGlzKS52YXJzLAogICAgICAgICAgICAgICAgICAgIF8gPSBnLmR1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgIG0gPSBnLmRlbGF5LAogICAgICAgICAgICAgICAgICAgIHYgPSBnLmltbWVkaWF0ZVJlbmRlciwKICAgICAgICAgICAgICAgICAgICB5ID0gZy5zdGFnZ2VyLAogICAgICAgICAgICAgICAgICAgIEMgPSBnLm92ZXJ3cml0ZSwKICAgICAgICAgICAgICAgICAgICB4ID0gZy5rZXlmcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgRiA9IGcuZGVmYXVsdHMsCiAgICAgICAgICAgICAgICAgICAgdyA9IGcuc2Nyb2xsVHJpZ2dlciwKICAgICAgICAgICAgICAgICAgICBFID0gZy55b3lvRWFzZSwKICAgICAgICAgICAgICAgICAgICBiID0gby5wYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgVCA9IChLKGUpIHx8IFEoZSkgPyBWKGVbMF0pIDogImxlbmd0aCIgaW4gbikgPyBbZV0gOiBpZShlKTsKICAgICAgICAgICAgICAgIGlmIChvLl90YXJnZXRzID0gVC5sZW5ndGggPyBtdChUKSA6IG90KCJHU0FQIHRhcmdldCAiICsgZSArICIgbm90IGZvdW5kLiBodHRwczovL2dyZWVuc29jay5jb20iLCAhUC5udWxsVGFyZ2V0V2FybikgfHwgW10sIG8uX3B0TG9va3VwID0gW10sIG8uX292ZXJ3cml0ZSA9IEMsIHggfHwgeSB8fCBIKF8pIHx8IEgobSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobiA9IG8udmFycywgKGEgPSBvLnRpbWVsaW5lID0gbmV3IFllKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6ICJuZXN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHM6IEYgfHwge30KICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmtpbGwoKSwgYS5wYXJlbnQgPSByKG8pLCB4KSBNdChhLnZhcnMuZGVmYXVsdHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogIm5vbmUiCiAgICAgICAgICAgICAgICAgICAgfSksIHguZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS50byhULCB0LCAiPiIpCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IFQubGVuZ3RoLCBjID0geSA/IHNlKHkpIDogbHQsIFcoeSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEQgaW4geSkgfkdlLmluZGV4T2YoRCkgJiYgKGQgfHwgKGQgPSB7fSksIGRbRF0gPSB5W0RdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gMDsgbCA8IGY7IGwrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChEIGluIGggPSB7fSwgbikgSGUuaW5kZXhPZihEKSA8IDAgJiYgKGhbRF0gPSBuW0RdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguc3RhZ2dlciA9IDAsIEUgJiYgKGgueW95b0Vhc2UgPSBFKSwgZCAmJiBTdChoLCBkKSwgcCA9IFRbbF0sIGguZHVyYXRpb24gPSArcWUoXywgcihvKSwgbCwgcCwgVCksIGguZGVsYXkgPSAoK3FlKG0sIHIobyksIGwsIHAsIFQpIHx8IDApIC0gby5fZGVsYXksICF5ICYmIDEgPT09IGYgJiYgaC5kZWxheSAmJiAoby5fZGVsYXkgPSBtID0gaC5kZWxheSwgby5fc3RhcnQgKz0gbSwgaC5kZWxheSA9IDApLCBhLnRvKHAsIGgsIGMobCwgcCwgVCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYS5kdXJhdGlvbigpID8gXyA9IG0gPSAwIDogby50aW1lbGluZSA9IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgXyB8fCBvLmR1cmF0aW9uKF8gPSBhLmR1cmF0aW9uKCkpCiAgICAgICAgICAgICAgICB9IGVsc2Ugby50aW1lbGluZSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IEMgJiYgKFhlID0gcihvKSwgdS5raWxsVHdlZW5zT2YoVCksIFhlID0gMCksIGIgJiYgVXQoYiwgcihvKSksICh2IHx8ICFfICYmICF4ICYmIG8uX3N0YXJ0ID09PSB4dChiLl90aW1lKSAmJiBxKHYpICYmIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhZSB8fCBlLl90cyAmJiB0KGUucGFyZW50KQogICAgICAgICAgICAgICAgfShyKG8pKSAmJiAibmVzdGVkIiAhPT0gYi5kYXRhKSAmJiAoby5fdFRpbWUgPSAtMWUtOCwgby5yZW5kZXIoTWF0aC5tYXgoMCwgLW0pKSksIHcgJiYgcXQocihvKSwgdyksIG8KICAgICAgICAgICAgfQogICAgICAgICAgICBpKGUsIHQpOwogICAgICAgICAgICB2YXIgbiA9IGUucHJvdG90eXBlOwogICAgICAgICAgICByZXR1cm4gbi5yZW5kZXIgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgaSwgdSwgcywgbywgYSwgbCwgaCwgZiwgRCA9IHRoaXMuX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgcCA9IHRoaXMuX3REdXIsCiAgICAgICAgICAgICAgICAgICAgYyA9IHRoaXMuX2R1ciwKICAgICAgICAgICAgICAgICAgICBkID0gdCA+IHAgLSAxZS04ICYmIHQgPj0gMCA/IHAgOiB0IDwgMWUtOCA/IDAgOiB0OwogICAgICAgICAgICAgICAgaWYgKGMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZCAhPT0gdGhpcy5fdFRpbWUgfHwgIXQgfHwgbiB8fCB0aGlzLl9zdGFydEF0ICYmIHRoaXMuX3pUaW1lIDwgMCAhPSB0IDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGQsIGggPSB0aGlzLnRpbWVsaW5lLCB0aGlzLl9yZXBlYXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gYyArIHRoaXMuX3JEZWxheSwgciA9IHh0KGQgJSBzKSwgZCA9PT0gcCA/ICh1ID0gdGhpcy5fcmVwZWF0LCByID0gYykgOiAoKHUgPSB+fihkIC8gcykpICYmIHUgPT09IGQgLyBzICYmIChyID0gYywgdS0tKSwgciA+IGMgJiYgKHIgPSBjKSksIChhID0gdGhpcy5feW95byAmJiAxICYgdSkgJiYgKGYgPSB0aGlzLl95RWFzZSwgciA9IGMgLSByKSwgbyA9IFl0KHRoaXMuX3RUaW1lLCBzKSwgciA9PT0gRCAmJiAhbiAmJiB0aGlzLl9pbml0dGVkKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgIT09IG8gJiYgKGggJiYgdGhpcy5feUVhc2UgJiYgUGUoaCwgYSksICF0aGlzLnZhcnMucmVwZWF0UmVmcmVzaCB8fCBhIHx8IHRoaXMuX2xvY2sgfHwgKHRoaXMuX2xvY2sgPSBuID0gMSwgdGhpcy5yZW5kZXIoeHQocyAqIHUpLCAhMCkuaW52YWxpZGF0ZSgpLl9sb2NrID0gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pbml0dGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoR3QodGhpcywgdCA8IDAgPyB0IDogciwgbiwgZSkpIHJldHVybiB0aGlzLl90VGltZSA9IDAsIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPT0gdGhpcy5fZHVyKSByZXR1cm4gdGhpcy5yZW5kZXIodCwgZSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuX3RUaW1lID0gZCwgdGhpcy5fdGltZSA9IHIsICF0aGlzLl9hY3QgJiYgdGhpcy5fdHMgJiYgKHRoaXMuX2FjdCA9IDEsIHRoaXMuX2xhenkgPSAwKSwgdGhpcy5yYXRpbyA9IGwgPSAoZiB8fCB0aGlzLl9lYXNlKShyIC8gYyksIHRoaXMuX2Zyb20gJiYgKHRoaXMucmF0aW8gPSBsID0gMSAtIGwpLCByICYmICFEICYmICFlICYmIGNlKHRoaXMsICJvblN0YXJ0IiksIGkgPSB0aGlzLl9wdDsgaTspIGkucihsLCBpLmQpLCBpID0gaS5fbmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgaCAmJiBoLnJlbmRlcih0IDwgMCA/IHQgOiAhciAmJiBhID8gLTFlLTggOiBoLl9kdXIgKiBsLCBlLCBuKSB8fCB0aGlzLl9zdGFydEF0ICYmICh0aGlzLl96VGltZSA9IHQpLCB0aGlzLl9vblVwZGF0ZSAmJiAhZSAmJiAodCA8IDAgJiYgdGhpcy5fc3RhcnRBdCAmJiB0aGlzLl9zdGFydEF0LnJlbmRlcih0LCAhMCwgbiksIGNlKHRoaXMsICJvblVwZGF0ZSIpKSwgdGhpcy5fcmVwZWF0ICYmIHUgIT09IG8gJiYgdGhpcy52YXJzLm9uUmVwZWF0ICYmICFlICYmIHRoaXMucGFyZW50ICYmIGNlKHRoaXMsICJvblJlcGVhdCIpLCBkICE9PSB0aGlzLl90RHVyICYmIGQgfHwgdGhpcy5fdFRpbWUgIT09IGQgfHwgKHQgPCAwICYmIHRoaXMuX3N0YXJ0QXQgJiYgIXRoaXMuX29uVXBkYXRlICYmIHRoaXMuX3N0YXJ0QXQucmVuZGVyKHQsICEwLCAhMCksICh0IHx8ICFjKSAmJiAoZCA9PT0gdGhpcy5fdER1ciAmJiB0aGlzLl90cyA+IDAgfHwgIWQgJiYgdGhpcy5fdHMgPCAwKSAmJiBOdCh0aGlzLCAxKSwgZSB8fCB0IDwgMCAmJiAhRCB8fCAhZCAmJiAhRCB8fCAoY2UodGhpcywgZCA9PT0gcCA/ICJvbkNvbXBsZXRlIiA6ICJvblJldmVyc2VDb21wbGV0ZSIsICEwKSwgdGhpcy5fcHJvbSAmJiAhKGQgPCBwICYmIHRoaXMudGltZVNjYWxlKCkgPiAwKSAmJiB0aGlzLl9wcm9tKCkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSAhIGZ1bmN0aW9uKHQsIGUsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgdSwgcyA9IHQucmF0aW8sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlIDwgMCB8fCAhZSAmJiBzICYmICF0Ll9zdGFydCAmJiB0Ll96VGltZSA+IDFlLTggJiYgIXQuX2RwLl9sb2NrIHx8ICh0Ll90cyA8IDAgfHwgdC5fZHAuX3RzIDwgMCkgJiYgImlzRnJvbVN0YXJ0IiAhPT0gdC5kYXRhICYmICJpc1N0YXJ0IiAhPT0gdC5kYXRhID8gMCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0Ll9yRGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmIChhICYmIHQuX3JlcGVhdCAmJiAobCA9IEp0KDAsIHQuX3REdXIsIGUpLCBZdChsLCBhKSAhPT0gKHUgPSBZdCh0Ll90VGltZSwgYSkpICYmIChzID0gMSAtIG8sIHQudmFycy5yZXBlYXRSZWZyZXNoICYmIHQuX2luaXR0ZWQgJiYgdC5pbnZhbGlkYXRlKCkpKSwgbyAhPT0gcyB8fCByIHx8IDFlLTggPT09IHQuX3pUaW1lIHx8ICFlICYmIHQuX3pUaW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdC5faW5pdHRlZCAmJiBHdCh0LCBlLCByLCBuKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSB0Ll96VGltZSwgdC5felRpbWUgPSBlIHx8IChuID8gMWUtOCA6IDApLCBuIHx8IChuID0gZSAmJiAhdSksIHQucmF0aW8gPSBvLCB0Ll9mcm9tICYmIChvID0gMSAtIG8pLCB0Ll90aW1lID0gMCwgdC5fdFRpbWUgPSBsLCBuIHx8IGNlKHQsICJvblN0YXJ0IiksIGkgPSB0Ll9wdDsgaTspIGkucihvLCBpLmQpLCBpID0gaS5fbmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgdC5fc3RhcnRBdCAmJiBlIDwgMCAmJiB0Ll9zdGFydEF0LnJlbmRlcihlLCAhMCwgITApLCB0Ll9vblVwZGF0ZSAmJiAhbiAmJiBjZSh0LCAib25VcGRhdGUiKSwgbCAmJiB0Ll9yZXBlYXQgJiYgIW4gJiYgdC5wYXJlbnQgJiYgY2UodCwgIm9uUmVwZWF0IiksIChlID49IHQuX3REdXIgfHwgZSA8IDApICYmIHQucmF0aW8gPT09IG8gJiYgKG8gJiYgTnQodCwgMSksIG4gfHwgKGNlKHQsIG8gPyAib25Db21wbGV0ZSIgOiAib25SZXZlcnNlQ29tcGxldGUiLCAhMCksIHQuX3Byb20gJiYgdC5fcHJvbSgpKSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdC5felRpbWUgfHwgKHQuX3pUaW1lID0gZSkKICAgICAgICAgICAgICAgIH0odGhpcywgdCwgZSwgbik7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9LCBuLnRhcmdldHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90YXJnZXRzCiAgICAgICAgICAgIH0sIG4uaW52YWxpZGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3B0ID0gdGhpcy5fb3AgPSB0aGlzLl9zdGFydEF0ID0gdGhpcy5fb25VcGRhdGUgPSB0aGlzLl9hY3QgPSB0aGlzLl9sYXp5ID0gMCwgdGhpcy5fcHRMb29rdXAgPSBbXSwgdGhpcy50aW1lbGluZSAmJiB0aGlzLnRpbWVsaW5lLmludmFsaWRhdGUoKSwgdC5wcm90b3R5cGUuaW52YWxpZGF0ZS5jYWxsKHRoaXMpCiAgICAgICAgICAgIH0sIG4ua2lsbCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUgJiYgKGUgPSAiYWxsIiksICEodCB8fCBlICYmICJhbGwiICE9PSBlKSAmJiAodGhpcy5fbGF6eSA9IDAsIHRoaXMucGFyZW50KSkgcmV0dXJuIGRlKHRoaXMpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZWxpbmUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMudGltZWxpbmUudG90YWxEdXJhdGlvbigpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRpbWVsaW5lLmtpbGxUd2VlbnNPZih0LCBlLCBYZSAmJiAhMCAhPT0gWGUudmFycy5vdmVyd3JpdGUpLl9maXJzdCB8fCBkZSh0aGlzKSwgdGhpcy5wYXJlbnQgJiYgbiAhPT0gdGhpcy50aW1lbGluZS50b3RhbER1cmF0aW9uKCkgJiYgSHQodGhpcywgdGhpcy5fZHVyICogdGhpcy50aW1lbGluZS5fdER1ciAvIG4sIDAsIDEpLCB0aGlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgciwgaSwgdSwgcywgbywgYSwgbCwgaCA9IHRoaXMuX3RhcmdldHMsCiAgICAgICAgICAgICAgICAgICAgZiA9IHQgPyBpZSh0KSA6IGgsCiAgICAgICAgICAgICAgICAgICAgRCA9IHRoaXMuX3B0TG9va3VwLAogICAgICAgICAgICAgICAgICAgIHAgPSB0aGlzLl9wdDsKICAgICAgICAgICAgICAgIGlmICgoIWUgfHwgImFsbCIgPT09IGUpICYmIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IHQubGVuZ3RoLCByID0gbiA9PT0gZS5sZW5ndGg7IHIgJiYgbi0tICYmIHRbbl0gPT09IGVbbl07KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPCAwCiAgICAgICAgICAgICAgICAgICAgfShoLCBmKSkgcmV0dXJuICJhbGwiID09PSBlICYmICh0aGlzLl9wdCA9IDApLCBkZSh0aGlzKTsKICAgICAgICAgICAgICAgIGZvciAociA9IHRoaXMuX29wID0gdGhpcy5fb3AgfHwgW10sICJhbGwiICE9PSBlICYmIChYKGUpICYmIChvID0ge30sIEN0KGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvW3RdID0gMQogICAgICAgICAgICAgICAgICAgIH0pKSwgZSA9IG8pLCBlID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciwgaSwgdSwgcyA9IHRbMF0gPyB2dCh0WzBdKS5oYXJuZXNzIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBzICYmIHMuYWxpYXNlczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyIGluIG4gPSBTdCh7fSwgZSksIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociBpbiBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9ICh1ID0gb1tyXS5zcGxpdCgiLCIpKS5sZW5ndGg7IGktLTspIG5bdVtpXV0gPSBuW3JdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgIH0oaCwgZSkpLCBsID0gaC5sZW5ndGg7IGwtLTspCiAgICAgICAgICAgICAgICAgICAgaWYgKH5mLmluZGV4T2YoaFtsXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyBpbiBpID0gRFtsXSwgImFsbCIgPT09IGUgPyAocltsXSA9IGUsIHMgPSBpLCB1ID0ge30pIDogKHUgPSByW2xdID0gcltsXSB8fCB7fSwgcyA9IGUpLCBzKShhID0gaSAmJiBpW29dKSAmJiAoImtpbGwiIGluIGEuZCAmJiAhMCAhPT0gYS5kLmtpbGwobykgfHwgTHQodGhpcywgYSwgIl9wdCIpLCBkZWxldGUgaVtvXSksICJhbGwiICE9PSB1ICYmICh1W29dID0gMSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faW5pdHRlZCAmJiAhdGhpcy5fcHQgJiYgcCAmJiBkZSh0aGlzKSwgdGhpcwogICAgICAgICAgICB9LCBlLnRvID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBlKHQsIG4sIGFyZ3VtZW50c1syXSkKICAgICAgICAgICAgfSwgZS5mcm9tID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBlKHQsIHd0KGFyZ3VtZW50cywgMSkpCiAgICAgICAgICAgIH0sIGUuZGVsYXllZENhbGwgPSBmdW5jdGlvbih0LCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGUobiwgMCwgewogICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZVJlbmRlcjogITEsCiAgICAgICAgICAgICAgICAgICAgbGF6eTogITEsCiAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlOiAhMSwKICAgICAgICAgICAgICAgICAgICBkZWxheTogdCwKICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBuLAogICAgICAgICAgICAgICAgICAgIG9uUmV2ZXJzZUNvbXBsZXRlOiBuLAogICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGVQYXJhbXM6IHIsCiAgICAgICAgICAgICAgICAgICAgb25SZXZlcnNlQ29tcGxldGVQYXJhbXM6IHIsCiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tTY29wZTogaQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwgZS5mcm9tVG8gPSBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGUodCwgd3QoYXJndW1lbnRzLCAyKSkKICAgICAgICAgICAgfSwgZS5zZXQgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5kdXJhdGlvbiA9IDAsIG4ucmVwZWF0RGVsYXkgfHwgKG4ucmVwZWF0ID0gMCksIG5ldyBlKHQsIG4pCiAgICAgICAgICAgIH0sIGUua2lsbFR3ZWVuc09mID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIHUua2lsbFR3ZWVuc09mKHQsIGUsIG4pCiAgICAgICAgICAgIH0sIGUKICAgICAgICB9KHplKTsKICAgIE10KFFlLnByb3RvdHlwZSwgewogICAgICAgIF90YXJnZXRzOiBbXSwKICAgICAgICBfbGF6eTogMCwKICAgICAgICBfc3RhcnRBdDogMCwKICAgICAgICBfb3A6IDAsCiAgICAgICAgX29uSW5pdDogMAogICAgfSksIEN0KCJzdGFnZ2VyVG8sc3RhZ2dlckZyb20sc3RhZ2dlckZyb21UbyIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgUWVbdF0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBuZXcgWWUsCiAgICAgICAgICAgICAgICBuID0gZWUuY2FsbChhcmd1bWVudHMsIDApOwogICAgICAgICAgICByZXR1cm4gbi5zcGxpY2UoInN0YWdnZXJGcm9tVG8iID09PSB0ID8gNSA6IDQsIDAsIDApLCBlW3RdLmFwcGx5KGUsIG4pCiAgICAgICAgfQogICAgfSkpOwogICAgdmFyIEtlID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICByZXR1cm4gdFtlXSA9IG4KICAgICAgICB9LAogICAgICAgIFplID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICByZXR1cm4gdFtlXShuKQogICAgICAgIH0sCiAgICAgICAgJGUgPSBmdW5jdGlvbih0LCBlLCBuLCByKSB7CiAgICAgICAgICAgIHJldHVybiB0W2VdKHIuZnAsIG4pCiAgICAgICAgfSwKICAgICAgICBKZSA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHQuc2V0QXR0cmlidXRlKGUsIG4pCiAgICAgICAgfSwKICAgICAgICB0biA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGoodFtlXSkgPyBaZSA6IFUodFtlXSkgJiYgdC5zZXRBdHRyaWJ1dGUgPyBKZSA6IEtlCiAgICAgICAgfSwKICAgICAgICBlbiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuc2V0KGUudCwgZS5wLCBNYXRoLnJvdW5kKDFlNCAqIChlLnMgKyBlLmMgKiB0KSkgLyAxZTQsIGUpCiAgICAgICAgfSwKICAgICAgICBubiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuc2V0KGUudCwgZS5wLCAhIShlLnMgKyBlLmMgKiB0KSwgZSkKICAgICAgICB9LAogICAgICAgIHJuID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgbiA9IGUuX3B0LAogICAgICAgICAgICAgICAgciA9ICIiOwogICAgICAgICAgICBpZiAoIXQgJiYgZS5iKSByID0gZS5iOwogICAgICAgICAgICBlbHNlIGlmICgxID09PSB0ICYmIGUuZSkgciA9IGUuZTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IgKDsgbjspIHIgPSBuLnAgKyAobi5tID8gbi5tKG4ucyArIG4uYyAqIHQpIDogTWF0aC5yb3VuZCgxZTQgKiAobi5zICsgbi5jICogdCkpIC8gMWU0KSArIHIsIG4gPSBuLl9uZXh0OwogICAgICAgICAgICAgICAgciArPSBlLmMKICAgICAgICAgICAgfQogICAgICAgICAgICBlLnNldChlLnQsIGUucCwgciwgZSkKICAgICAgICB9LAogICAgICAgIHVuID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBmb3IgKHZhciBuID0gZS5fcHQ7IG47KSBuLnIodCwgbi5kKSwgbiA9IG4uX25leHQKICAgICAgICB9LAogICAgICAgIHNuID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICBmb3IgKHZhciBpLCB1ID0gdGhpcy5fcHQ7IHU7KSBpID0gdS5fbmV4dCwgdS5wID09PSByICYmIHUubW9kaWZpZXIodCwgZSwgbiksIHUgPSBpCiAgICAgICAgfSwKICAgICAgICBvbiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSwgbiwgciA9IHRoaXMuX3B0OyByOykgbiA9IHIuX25leHQsIHIucCA9PT0gdCAmJiAhci5vcCB8fCByLm9wID09PSB0ID8gTHQodGhpcywgciwgIl9wdCIpIDogci5kZXAgfHwgKGUgPSAxKSwgciA9IG47CiAgICAgICAgICAgIHJldHVybiAhZQogICAgICAgIH0sCiAgICAgICAgYW4gPSBmdW5jdGlvbih0LCBlLCBuLCByKSB7CiAgICAgICAgICAgIHIubVNldCh0LCBlLCByLm0uY2FsbChyLnR3ZWVuLCBuLCByLm10KSwgcikKICAgICAgICB9LAogICAgICAgIGxuID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBmb3IgKHZhciBlLCBuLCByLCBpLCB1ID0gdC5fcHQ7IHU7KSB7CiAgICAgICAgICAgICAgICBmb3IgKGUgPSB1Ll9uZXh0LCBuID0gcjsgbiAmJiBuLnByID4gdS5wcjspIG4gPSBuLl9uZXh0OwogICAgICAgICAgICAgICAgKHUuX3ByZXYgPSBuID8gbi5fcHJldiA6IGkpID8gdS5fcHJldi5fbmV4dCA9IHU6IHIgPSB1LCAodS5fbmV4dCA9IG4pID8gbi5fcHJldiA9IHUgOiBpID0gdSwgdSA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICB0Ll9wdCA9IHIKICAgICAgICB9LAogICAgICAgIGhuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgZSwgbiwgciwgaSwgdSwgcywgbywgYSkgewogICAgICAgICAgICAgICAgdGhpcy50ID0gZSwgdGhpcy5zID0gciwgdGhpcy5jID0gaSwgdGhpcy5wID0gbiwgdGhpcy5yID0gdSB8fCBlbiwgdGhpcy5kID0gcyB8fCB0aGlzLCB0aGlzLnNldCA9IG8gfHwgS2UsIHRoaXMucHIgPSBhIHx8IDAsIHRoaXMuX25leHQgPSB0LCB0ICYmICh0Ll9wcmV2ID0gdGhpcykKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdC5wcm90b3R5cGUubW9kaWZpZXIgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICB0aGlzLm1TZXQgPSB0aGlzLm1TZXQgfHwgdGhpcy5zZXQsIHRoaXMuc2V0ID0gYW4sIHRoaXMubSA9IHQsIHRoaXMubXQgPSBuLCB0aGlzLnR3ZWVuID0gZQogICAgICAgICAgICB9LCB0CiAgICAgICAgfSgpOwogICAgQ3QoX3QgKyAicGFyZW50LGR1cmF0aW9uLGVhc2UsZGVsYXksb3ZlcndyaXRlLHJ1bkJhY2t3YXJkcyxzdGFydEF0LHlveW8saW1tZWRpYXRlUmVuZGVyLHJlcGVhdCxyZXBlYXREZWxheSxkYXRhLHBhdXNlZCxyZXZlcnNlZCxsYXp5LGNhbGxiYWNrU2NvcGUsc3RyaW5nRmlsdGVyLGlkLHlveW9FYXNlLHN0YWdnZXIsaW5oZXJpdCxyZXBlYXRSZWZyZXNoLGtleWZyYW1lcyxhdXRvUmV2ZXJ0LHNjcm9sbFRyaWdnZXIiLCAoZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiBodFt0XSA9IDEKICAgIH0pKSwgcnQuVHdlZW5NYXggPSBydC5Ud2VlbkxpdGUgPSBRZSwgcnQuVGltZWxpbmVMaXRlID0gcnQuVGltZWxpbmVNYXggPSBZZSwgdSA9IG5ldyBZZSh7CiAgICAgICAgc29ydENoaWxkcmVuOiAhMSwKICAgICAgICBkZWZhdWx0czogQiwKICAgICAgICBhdXRvUmVtb3ZlQ2hpbGRyZW46ICEwLAogICAgICAgIGlkOiAicm9vdCIsCiAgICAgICAgc21vb3RoQ2hpbGRUaW1pbmc6ICEwCiAgICB9KSwgUC5zdHJpbmdGaWx0ZXIgPSB3ZTsKICAgIHZhciBmbiA9IHsKICAgICAgICByZWdpc3RlclBsdWdpbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoLCBlID0gbmV3IEFycmF5KHQpLCBuID0gMDsgbiA8IHQ7IG4rKykgZVtuXSA9IGFyZ3VtZW50c1tuXTsKICAgICAgICAgICAgZS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZ2UodCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICB0aW1lbGluZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbmV3IFllKHQpCiAgICAgICAgfSwKICAgICAgICBnZXRUd2VlbnNPZjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gdS5nZXRUd2VlbnNPZih0LCBlKQogICAgICAgIH0sCiAgICAgICAgZ2V0UHJvcGVydHk6IGZ1bmN0aW9uKHQsIGUsIG4sIHIpIHsKICAgICAgICAgICAgWCh0KSAmJiAodCA9IGllKHQpWzBdKTsKICAgICAgICAgICAgdmFyIGkgPSB2dCh0IHx8IHt9KS5nZXQsCiAgICAgICAgICAgICAgICB1ID0gbiA/IEF0IDogVHQ7CiAgICAgICAgICAgIHJldHVybiAibmF0aXZlIiA9PT0gbiAmJiAobiA9ICIiKSwgdCA/IGUgPyB1KChwdFtlXSAmJiBwdFtlXS5nZXQgfHwgaSkodCwgZSwgbiwgcikpIDogZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIHUoKHB0W2VdICYmIHB0W2VdLmdldCB8fCBpKSh0LCBlLCBuLCByKSkKICAgICAgICAgICAgfSA6IHQKICAgICAgICB9LAogICAgICAgIHF1aWNrU2V0dGVyOiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIGlmICgodCA9IGllKHQpKS5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHQubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbi5xdWlja1NldHRlcih0LCBlLCBuKQogICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICBpID0gci5sZW5ndGg7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBpOyBlLS07KSByW2VdKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdCA9IHRbMF0gfHwge307CiAgICAgICAgICAgIHZhciB1ID0gcHRbZV0sCiAgICAgICAgICAgICAgICBzID0gdnQodCksCiAgICAgICAgICAgICAgICBvID0gcy5oYXJuZXNzICYmIChzLmhhcm5lc3MuYWxpYXNlcyB8fCB7fSlbZV0gfHwgZSwKICAgICAgICAgICAgICAgIGEgPSB1ID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gbmV3IHU7CiAgICAgICAgICAgICAgICAgICAgZi5fcHQgPSAwLCByLmluaXQodCwgbiA/IGUgKyBuIDogZSwgZiwgMCwgW3RdKSwgci5yZW5kZXIoMSwgciksIGYuX3B0ICYmIHVuKDEsIGYpCiAgICAgICAgICAgICAgICB9IDogcy5zZXQodCwgbyk7CiAgICAgICAgICAgIHJldHVybiB1ID8gYSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhKHQsIG8sIG4gPyBlICsgbiA6IGUsIHMsIDEpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGlzVHdlZW5pbmc6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHUuZ2V0VHdlZW5zT2YodCwgITApLmxlbmd0aCA+IDAKICAgICAgICB9LAogICAgICAgIGRlZmF1bHRzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0ICYmIHQuZWFzZSAmJiAodC5lYXNlID0gQmUodC5lYXNlLCBCLmVhc2UpKSwgUHQoQiwgdCB8fCB7fSkKICAgICAgICB9LAogICAgICAgIGNvbmZpZzogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gUHQoUCwgdCB8fCB7fSkKICAgICAgICB9LAogICAgICAgIHJlZ2lzdGVyRWZmZWN0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gdC5uYW1lLAogICAgICAgICAgICAgICAgbiA9IHQuZWZmZWN0LAogICAgICAgICAgICAgICAgciA9IHQucGx1Z2lucywKICAgICAgICAgICAgICAgIGkgPSB0LmRlZmF1bHRzLAogICAgICAgICAgICAgICAgdSA9IHQuZXh0ZW5kVGltZWxpbmU7CiAgICAgICAgICAgIChyIHx8ICIiKS5zcGxpdCgiLCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0ICYmICFwdFt0XSAmJiAhcnRbdF0gJiYgb3QoZSArICIgZWZmZWN0IHJlcXVpcmVzICIgKyB0ICsgIiBwbHVnaW4uIikKICAgICAgICAgICAgfSkpLCBjdFtlXSA9IGZ1bmN0aW9uKHQsIGUsIHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuKGllKHQpLCBNdChlIHx8IHt9LCBpKSwgcikKICAgICAgICAgICAgfSwgdSAmJiAoWWUucHJvdG90eXBlW2VdID0gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGN0W2VdKHQsIFcobikgPyBuIDogKHIgPSBuKSAmJiB7fSwgdGhpcyksIHIpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICByZWdpc3RlckVhc2U6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgVGVbdF0gPSBCZShlKQogICAgICAgIH0sCiAgICAgICAgcGFyc2VFYXNlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gQmUodCwgZSkgOiBUZQogICAgICAgIH0sCiAgICAgICAgZ2V0QnlJZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdS5nZXRCeUlkKHQpCiAgICAgICAgfSwKICAgICAgICBleHBvcnRSb290OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9IHt9KTsKICAgICAgICAgICAgdmFyIG4sIHIsIGkgPSBuZXcgWWUodCk7CiAgICAgICAgICAgIGZvciAoaS5zbW9vdGhDaGlsZFRpbWluZyA9IHEodC5zbW9vdGhDaGlsZFRpbWluZyksIHUucmVtb3ZlKGkpLCBpLl9kcCA9IDAsIGkuX3RpbWUgPSBpLl90VGltZSA9IHUuX3RpbWUsIG4gPSB1Ll9maXJzdDsgbjspIHIgPSBuLl9uZXh0LCAhZSAmJiAhbi5fZHVyICYmIG4gaW5zdGFuY2VvZiBRZSAmJiBuLnZhcnMub25Db21wbGV0ZSA9PT0gbi5fdGFyZ2V0c1swXSB8fCBXdChpLCBuLCBuLl9zdGFydCAtIG4uX2RlbGF5KSwgbiA9IHI7CiAgICAgICAgICAgIHJldHVybiBXdCh1LCBpLCAwKSwgaQogICAgICAgIH0sCiAgICAgICAgdXRpbHM6IHsKICAgICAgICAgICAgd3JhcDogZnVuY3Rpb24gdChlLCBuLCByKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IG4gLSBlOwogICAgICAgICAgICAgICAgcmV0dXJuIEsoZSkgPyBoZShlLCB0KDAsIGUubGVuZ3RoKSwgbikgOiAkdChyLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoaSArICh0IC0gZSkgJSBpKSAlIGkgKyBlCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgd3JhcFlveW86IGZ1bmN0aW9uIHQoZSwgbiwgcikgewogICAgICAgICAgICAgICAgdmFyIGkgPSBuIC0gZSwKICAgICAgICAgICAgICAgICAgICB1ID0gMiAqIGk7CiAgICAgICAgICAgICAgICByZXR1cm4gSyhlKSA/IGhlKGUsIHQoMCwgZS5sZW5ndGggLSAxKSwgbikgOiAkdChyLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICsgKCh0ID0gKHUgKyAodCAtIGUpICUgdSkgJSB1IHx8IDApID4gaSA/IHUgLSB0IDogdCkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXN0cmlidXRlOiBzZSwKICAgICAgICAgICAgcmFuZG9tOiBsZSwKICAgICAgICAgICAgc25hcDogYWUsCiAgICAgICAgICAgIG5vcm1hbGl6ZTogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIERlKHQsIGUsIDAsIDEsIG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFVuaXQ6IHRlLAogICAgICAgICAgICBjbGFtcDogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuICR0KG4sIChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEp0KHQsIGUsIG4pCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc3BsaXRDb2xvcjogdmUsCiAgICAgICAgICAgIHRvQXJyYXk6IGllLAogICAgICAgICAgICBtYXBSYW5nZTogRGUsCiAgICAgICAgICAgIHBpcGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGgsIGUgPSBuZXcgQXJyYXkodCksIG4gPSAwOyBuIDwgdDsgbisrKSBlW25dID0gYXJndW1lbnRzW25dOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodCkKICAgICAgICAgICAgICAgICAgICB9KSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdW5pdGl6ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdChwYXJzZUZsb2F0KG4pKSArIChlIHx8IHRlKG4pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbnRlcnBvbGF0ZTogZnVuY3Rpb24gdChlLCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IGlzTmFOKGUgKyBuKSA/IDAgOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgxIC0gdCkgKiBlICsgdCAqIG4KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAoIXUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcywgbywgYSwgbCwgaCwgZiA9IFgoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIEQgPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoITAgPT09IHIgJiYgKGkgPSAxKSAmJiAociA9IG51bGwpLCBmKSBlID0gewogICAgICAgICAgICAgICAgICAgICAgICBwOiBlCiAgICAgICAgICAgICAgICAgICAgfSwgbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcDogbgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoSyhlKSAmJiAhSyhuKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBbXSwgbCA9IGUubGVuZ3RoLCBoID0gbCAtIDIsIG8gPSAxOyBvIDwgbDsgbysrKSBhLnB1c2godChlW28gLSAxXSwgZVtvXSkpOwogICAgICAgICAgICAgICAgICAgICAgICBsLS0sIHUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ICo9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IE1hdGgubWluKGgsIH5+dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYVtlXSh0IC0gZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgciA9IG4KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaSB8fCAoZSA9IFN0KEsoZSkgPyBbXSA6IHt9LCBlKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyBpbiBuKSBWZS5jYWxsKEQsIGUsIHMsICJnZXQiLCBuW3NdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bih0LCBEKSB8fCAoZiA/IGUucCA6IGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHQociwgdSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2h1ZmZsZTogdWUKICAgICAgICB9LAogICAgICAgIGluc3RhbGw6IHV0LAogICAgICAgIGVmZmVjdHM6IGN0LAogICAgICAgIHRpY2tlcjogRWUsCiAgICAgICAgdXBkYXRlUm9vdDogWWUudXBkYXRlUm9vdCwKICAgICAgICBwbHVnaW5zOiBwdCwKICAgICAgICBnbG9iYWxUaW1lbGluZTogdSwKICAgICAgICBjb3JlOiB7CiAgICAgICAgICAgIFByb3BUd2VlbjogaG4sCiAgICAgICAgICAgIGdsb2JhbHM6IGF0LAogICAgICAgICAgICBUd2VlbjogUWUsCiAgICAgICAgICAgIFRpbWVsaW5lOiBZZSwKICAgICAgICAgICAgQW5pbWF0aW9uOiB6ZSwKICAgICAgICAgICAgZ2V0Q2FjaGU6IHZ0LAogICAgICAgICAgICBfcmVtb3ZlTGlua2VkTGlzdEl0ZW06IEx0CiAgICAgICAgfQogICAgfTsKICAgIEN0KCJ0byxmcm9tLGZyb21UbyxkZWxheWVkQ2FsbCxzZXQsa2lsbFR3ZWVuc09mIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gZm5bdF0gPSBRZVt0XQogICAgfSkpLCBFZS5hZGQoWWUudXBkYXRlUm9vdCksIGYgPSBmbi50byh7fSwgewogICAgICAgIGR1cmF0aW9uOiAwCiAgICB9KTsKICAgIHZhciBEbiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IHQuX3B0OyBuICYmIG4ucCAhPT0gZSAmJiBuLm9wICE9PSBlICYmIG4uZnAgIT09IGU7KSBuID0gbi5fbmV4dDsKICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICB9LAogICAgICAgIHBuID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgbmFtZTogdCwKICAgICAgICAgICAgICAgIHJhd1ZhcnM6IDEsCiAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgci5fb25Jbml0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgaTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFgobikgJiYgKHIgPSB7fSwgQ3QobiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gclt0XSA9IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbiA9IHIpLCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4gciA9IHt9LCBuKSByW2ldID0gZShuW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByCiAgICAgICAgICAgICAgICAgICAgICAgIH0hIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByLCBpLCB1ID0gdC5fdGFyZ2V0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiBpbiBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IHUubGVuZ3RoOyByLS07KShpID0gdC5fcHRMb29rdXBbcl1bbl0pICYmIChpID0gaS5kKSAmJiAoaS5fcHQgJiYgKGkgPSBEbihpLCBuKSksIGkgJiYgaS5tb2RpZmllciAmJiBpLm1vZGlmaWVyKGVbbl0sIHQsIHVbcl0sIG4pKQogICAgICAgICAgICAgICAgICAgICAgICB9KHQsIG4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBjbiA9IGZuLnJlZ2lzdGVyUGx1Z2luKHsKICAgICAgICAgICAgbmFtZTogImF0dHIiLAogICAgICAgICAgICBpbml0OiBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgdSwgczsKICAgICAgICAgICAgICAgIGZvciAodSBpbiBlKShzID0gdGhpcy5hZGQodCwgInNldEF0dHJpYnV0ZSIsICh0LmdldEF0dHJpYnV0ZSh1KSB8fCAwKSArICIiLCBlW3VdLCByLCBpLCAwLCAwLCB1KSkgJiYgKHMub3AgPSB1KSwgdGhpcy5fcHJvcHMucHVzaCh1KQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBuYW1lOiAiZW5kQXJyYXkiLAogICAgICAgICAgICBpbml0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gZS5sZW5ndGg7IG4tLTspIHRoaXMuYWRkKHQsIG4sIHRbbl0gfHwgMCwgZVtuXSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHBuKCJyb3VuZFByb3BzIiwgb2UpLCBwbigibW9kaWZpZXJzIiksIHBuKCJzbmFwIiwgYWUpKSB8fCBmbjsKICAgIFFlLnZlcnNpb24gPSBZZS52ZXJzaW9uID0gY24udmVyc2lvbiA9ICIzLjUuMSIsIGwgPSAxLCBHKCkgJiYgYmUoKTsKICAgIFRlLlBvd2VyMCwgVGUuUG93ZXIxLCBUZS5Qb3dlcjIsIFRlLlBvd2VyMywgVGUuUG93ZXI0LCBUZS5MaW5lYXIsIFRlLlF1YWQsIFRlLkN1YmljLCBUZS5RdWFydCwgVGUuUXVpbnQsIFRlLlN0cm9uZywgVGUuRWxhc3RpYywgVGUuQmFjaywgVGUuU3RlcHBlZEVhc2UsIFRlLkJvdW5jZSwgVGUuU2luZSwgVGUuRXhwbywgVGUuQ2lyYzsKICAgIC8qIQogICAgICogQ1NTUGx1Z2luIDMuNS4xCiAgICAgKiBodHRwczovL2dyZWVuc29jay5jb20KICAgICAqCiAgICAgKiBDb3B5cmlnaHQgMjAwOC0yMDIwLCBHcmVlblNvY2suIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhdCBodHRwczovL2dyZWVuc29jay5jb20vc3RhbmRhcmQtbGljZW5zZSBvciBmb3IKICAgICAqIENsdWIgR3JlZW5Tb2NrIG1lbWJlcnMsIHRoZSBhZ3JlZW1lbnQgaXNzdWVkIHdpdGggdGhhdCBtZW1iZXJzaGlwLgogICAgICogQGF1dGhvcjogSmFjayBEb3lsZSwgamFja0BncmVlbnNvY2suY29tCiAgICAgKi8KICAgIHZhciBkbiwgZ24sIF9uLCBtbiwgdm4sIHluLCBDbiwgeG4sIEZuID0ge30sCiAgICAgICAgd24gPSAxODAgLyBNYXRoLlBJLAogICAgICAgIEVuID0gTWF0aC5QSSAvIDE4MCwKICAgICAgICBibiA9IE1hdGguYXRhbjIsCiAgICAgICAgVG4gPSAvKFtBLVpdKS9nLAogICAgICAgIEFuID0gLyg/OmxlZnR8cmlnaHR8d2lkdGh8bWFyZ2lufHBhZGRpbmd8eCkvaSwKICAgICAgICBNbiA9IC9bXHMsXChdXFMvLAogICAgICAgIE9uID0gewogICAgICAgICAgICBhdXRvQWxwaGE6ICJvcGFjaXR5LHZpc2liaWxpdHkiLAogICAgICAgICAgICBzY2FsZTogInNjYWxlWCxzY2FsZVkiLAogICAgICAgICAgICBhbHBoYTogIm9wYWNpdHkiCiAgICAgICAgfSwKICAgICAgICBTbiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuc2V0KGUudCwgZS5wLCBNYXRoLnJvdW5kKDFlNCAqIChlLnMgKyBlLmMgKiB0KSkgLyAxZTQgKyBlLnUsIGUpCiAgICAgICAgfSwKICAgICAgICBQbiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuc2V0KGUudCwgZS5wLCAxID09PSB0ID8gZS5lIDogTWF0aC5yb3VuZCgxZTQgKiAoZS5zICsgZS5jICogdCkpIC8gMWU0ICsgZS51LCBlKQogICAgICAgIH0sCiAgICAgICAgQm4gPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnNldChlLnQsIGUucCwgdCA/IE1hdGgucm91bmQoMWU0ICogKGUucyArIGUuYyAqIHQpKSAvIDFlNCArIGUudSA6IGUuYiwgZSkKICAgICAgICB9LAogICAgICAgIGtuID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgbiA9IGUucyArIGUuYyAqIHQ7CiAgICAgICAgICAgIGUuc2V0KGUudCwgZS5wLCB+fihuICsgKG4gPCAwID8gLS41IDogLjUpKSArIGUudSwgZSkKICAgICAgICB9LAogICAgICAgIExuID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gZS5zZXQoZS50LCBlLnAsIHQgPyBlLmUgOiBlLmIsIGUpCiAgICAgICAgfSwKICAgICAgICBObiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuc2V0KGUudCwgZS5wLCAxICE9PSB0ID8gZS5iIDogZS5lLCBlKQogICAgICAgIH0sCiAgICAgICAgUm4gPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiB0LnN0eWxlW2VdID0gbgogICAgICAgIH0sCiAgICAgICAgSW4gPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiB0LnN0eWxlLnNldFByb3BlcnR5KGUsIG4pCiAgICAgICAgfSwKICAgICAgICB6biA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHQuX2dzYXBbZV0gPSBuCiAgICAgICAgfSwKICAgICAgICBZbiA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHQuX2dzYXAuc2NhbGVYID0gdC5fZ3NhcC5zY2FsZVkgPSBuCiAgICAgICAgfSwKICAgICAgICBYbiA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGkpIHsKICAgICAgICAgICAgdmFyIHUgPSB0Ll9nc2FwOwogICAgICAgICAgICB1LnNjYWxlWCA9IHUuc2NhbGVZID0gbiwgdS5yZW5kZXJUcmFuc2Zvcm0oaSwgdSkKICAgICAgICB9LAogICAgICAgIGpuID0gZnVuY3Rpb24odCwgZSwgbiwgciwgaSkgewogICAgICAgICAgICB2YXIgdSA9IHQuX2dzYXA7CiAgICAgICAgICAgIHVbZV0gPSBuLCB1LnJlbmRlclRyYW5zZm9ybShpLCB1KQogICAgICAgIH0sCiAgICAgICAgVm4gPSAidHJhbnNmb3JtIiwKICAgICAgICBVbiA9IFZuICsgIk9yaWdpbiIsCiAgICAgICAgV24gPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBuID0gZ24uY3JlYXRlRWxlbWVudE5TID8gZ24uY3JlYXRlRWxlbWVudE5TKChlIHx8ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIikucmVwbGFjZSgvXmh0dHBzLywgImh0dHAiKSwgdCkgOiBnbi5jcmVhdGVFbGVtZW50KHQpOwogICAgICAgICAgICByZXR1cm4gbi5zdHlsZSA/IG4gOiBnbi5jcmVhdGVFbGVtZW50KHQpCiAgICAgICAgfSwKICAgICAgICBxbiA9IGZ1bmN0aW9uIHQoZSwgbiwgcikgewogICAgICAgICAgICB2YXIgaSA9IGdldENvbXB1dGVkU3R5bGUoZSk7CiAgICAgICAgICAgIHJldHVybiBpW25dIHx8IGkuZ2V0UHJvcGVydHlWYWx1ZShuLnJlcGxhY2UoVG4sICItJDEiKS50b0xvd2VyQ2FzZSgpKSB8fCBpLmdldFByb3BlcnR5VmFsdWUobikgfHwgIXIgJiYgdChlLCBIbihuKSB8fCBuLCAxKSB8fCAiIgogICAgICAgIH0sCiAgICAgICAgR24gPSAiTyxNb3osbXMsTXMsV2Via2l0Ii5zcGxpdCgiLCIpLAogICAgICAgIEhuID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICB2YXIgciA9IChlIHx8IHZuKS5zdHlsZSwKICAgICAgICAgICAgICAgIGkgPSA1OwogICAgICAgICAgICBpZiAodCBpbiByICYmICFuKSByZXR1cm4gdDsKICAgICAgICAgICAgZm9yICh0ID0gdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHQuc3Vic3RyKDEpOyBpLS0gJiYgIShHbltpXSArIHQgaW4gcik7KTsKICAgICAgICAgICAgcmV0dXJuIGkgPCAwID8gbnVsbCA6ICgzID09PSBpID8gIm1zIiA6IGkgPj0gMCA/IEduW2ldIDogIiIpICsgdAogICAgICAgIH0sCiAgICAgICAgUW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgKGRuID0gd2luZG93LCBnbiA9IGRuLmRvY3VtZW50LCBfbiA9IGduLmRvY3VtZW50RWxlbWVudCwgdm4gPSBXbigiZGl2IikgfHwgewogICAgICAgICAgICAgICAgc3R5bGU6IHt9CiAgICAgICAgICAgIH0sIHluID0gV24oImRpdiIpLCBWbiA9IEhuKFZuKSwgVW4gPSBWbiArICJPcmlnaW4iLCB2bi5zdHlsZS5jc3NUZXh0ID0gImJvcmRlci13aWR0aDowO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7cGFkZGluZzowIiwgeG4gPSAhIUhuKCJwZXJzcGVjdGl2ZSIpLCBtbiA9IDEpCiAgICAgICAgfSwKICAgICAgICBLbiA9IGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICB2YXIgbiwgciA9IFduKCJzdmciLCB0aGlzLm93bmVyU1ZHRWxlbWVudCAmJiB0aGlzLm93bmVyU1ZHRWxlbWVudC5nZXRBdHRyaWJ1dGUoInhtbG5zIikgfHwgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiksCiAgICAgICAgICAgICAgICBpID0gdGhpcy5wYXJlbnROb2RlLAogICAgICAgICAgICAgICAgdSA9IHRoaXMubmV4dFNpYmxpbmcsCiAgICAgICAgICAgICAgICBzID0gdGhpcy5zdHlsZS5jc3NUZXh0OwogICAgICAgICAgICBpZiAoX24uYXBwZW5kQ2hpbGQociksIHIuYXBwZW5kQ2hpbGQodGhpcyksIHRoaXMuc3R5bGUuZGlzcGxheSA9ICJibG9jayIsIGUpIHRyeSB7CiAgICAgICAgICAgICAgICBuID0gdGhpcy5nZXRCQm94KCksIHRoaXMuX2dzYXBCQm94ID0gdGhpcy5nZXRCQm94LCB0aGlzLmdldEJCb3ggPSB0CiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9IGVsc2UgdGhpcy5fZ3NhcEJCb3ggJiYgKG4gPSB0aGlzLl9nc2FwQkJveCgpKTsKICAgICAgICAgICAgcmV0dXJuIGkgJiYgKHUgPyBpLmluc2VydEJlZm9yZSh0aGlzLCB1KSA6IGkuYXBwZW5kQ2hpbGQodGhpcykpLCBfbi5yZW1vdmVDaGlsZChyKSwgdGhpcy5zdHlsZS5jc3NUZXh0ID0gcywgbgogICAgICAgIH0sCiAgICAgICAgWm4gPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSBlLmxlbmd0aDsgbi0tOykKICAgICAgICAgICAgICAgIGlmICh0Lmhhc0F0dHJpYnV0ZShlW25dKSkgcmV0dXJuIHQuZ2V0QXR0cmlidXRlKGVbbl0pCiAgICAgICAgfSwKICAgICAgICAkbiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBlID0gdC5nZXRCQm94KCkKICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgZSA9IEtuLmNhbGwodCwgITApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUgJiYgKGUud2lkdGggfHwgZS5oZWlnaHQpIHx8IHQuZ2V0QkJveCA9PT0gS24gfHwgKGUgPSBLbi5jYWxsKHQsICEwKSksICFlIHx8IGUud2lkdGggfHwgZS54IHx8IGUueSA/IGUgOiB7CiAgICAgICAgICAgICAgICB4OiArWm4odCwgWyJ4IiwgImN4IiwgIngxIl0pIHx8IDAsCiAgICAgICAgICAgICAgICB5OiArWm4odCwgWyJ5IiwgImN5IiwgInkxIl0pIHx8IDAsCiAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgIGhlaWdodDogMAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBKbiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICEoIXQuZ2V0Q1RNIHx8IHQucGFyZW50Tm9kZSAmJiAhdC5vd25lclNWR0VsZW1lbnQgfHwgISRuKHQpKQogICAgICAgIH0sCiAgICAgICAgdHIgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHQuc3R5bGU7CiAgICAgICAgICAgICAgICBlIGluIEZuICYmIGUgIT09IFVuICYmIChlID0gVm4pLCBuLnJlbW92ZVByb3BlcnR5ID8gKCJtcyIgIT09IGUuc3Vic3RyKDAsIDIpICYmICJ3ZWJraXQiICE9PSBlLnN1YnN0cigwLCA2KSB8fCAoZSA9ICItIiArIGUpLCBuLnJlbW92ZVByb3BlcnR5KGUucmVwbGFjZShUbiwgIi0kMSIpLnRvTG93ZXJDYXNlKCkpKSA6IG4ucmVtb3ZlQXR0cmlidXRlKGUpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGVyID0gZnVuY3Rpb24odCwgZSwgbiwgciwgaSwgdSkgewogICAgICAgICAgICB2YXIgcyA9IG5ldyBobih0Ll9wdCwgZSwgbiwgMCwgMSwgdSA/IE5uIDogTG4pOwogICAgICAgICAgICByZXR1cm4gdC5fcHQgPSBzLCBzLmIgPSByLCBzLmUgPSBpLCB0Ll9wcm9wcy5wdXNoKG4pLCBzCiAgICAgICAgfSwKICAgICAgICBuciA9IHsKICAgICAgICAgICAgZGVnOiAxLAogICAgICAgICAgICByYWQ6IDEsCiAgICAgICAgICAgIHR1cm46IDEKICAgICAgICB9LAogICAgICAgIHJyID0gZnVuY3Rpb24gdChlLCBuLCByLCBpKSB7CiAgICAgICAgICAgIHZhciB1LCBzLCBvLCBhLCBsID0gcGFyc2VGbG9hdChyKSB8fCAwLAogICAgICAgICAgICAgICAgaCA9IChyICsgIiIpLnRyaW0oKS5zdWJzdHIoKGwgKyAiIikubGVuZ3RoKSB8fCAicHgiLAogICAgICAgICAgICAgICAgZiA9IHZuLnN0eWxlLAogICAgICAgICAgICAgICAgRCA9IEFuLnRlc3QobiksCiAgICAgICAgICAgICAgICBwID0gInN2ZyIgPT09IGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpLAogICAgICAgICAgICAgICAgYyA9IChwID8gImNsaWVudCIgOiAib2Zmc2V0IikgKyAoRCA/ICJXaWR0aCIgOiAiSGVpZ2h0IiksCiAgICAgICAgICAgICAgICBkID0gInB4IiA9PT0gaSwKICAgICAgICAgICAgICAgIGcgPSAiJSIgPT09IGk7CiAgICAgICAgICAgIHJldHVybiBpID09PSBoIHx8ICFsIHx8IG5yW2ldIHx8IG5yW2hdID8gbCA6ICgicHgiICE9PSBoICYmICFkICYmIChsID0gdChlLCBuLCByLCAicHgiKSksIGEgPSBlLmdldENUTSAmJiBKbihlKSwgZyAmJiAoRm5bbl0gfHwgfm4uaW5kZXhPZigiYWRpdXMiKSkgPyB4dChsIC8gKGEgPyBlLmdldEJCb3goKVtEID8gIndpZHRoIiA6ICJoZWlnaHQiXSA6IGVbY10pICogMTAwKSA6IChmW0QgPyAid2lkdGgiIDogImhlaWdodCJdID0gMTAwICsgKGQgPyBoIDogaSksIHMgPSB+bi5pbmRleE9mKCJhZGl1cyIpIHx8ICJlbSIgPT09IGkgJiYgZS5hcHBlbmRDaGlsZCAmJiAhcCA/IGUgOiBlLnBhcmVudE5vZGUsIGEgJiYgKHMgPSAoZS5vd25lclNWR0VsZW1lbnQgfHwge30pLnBhcmVudE5vZGUpLCBzICYmIHMgIT09IGduICYmIHMuYXBwZW5kQ2hpbGQgfHwgKHMgPSBnbi5ib2R5KSwgKG8gPSBzLl9nc2FwKSAmJiBnICYmIG8ud2lkdGggJiYgRCAmJiBvLnRpbWUgPT09IEVlLnRpbWUgPyB4dChsIC8gby53aWR0aCAqIDEwMCkgOiAoKGcgfHwgIiUiID09PSBoKSAmJiAoZi5wb3NpdGlvbiA9IHFuKGUsICJwb3NpdGlvbiIpKSwgcyA9PT0gZSAmJiAoZi5wb3NpdGlvbiA9ICJzdGF0aWMiKSwgcy5hcHBlbmRDaGlsZCh2biksIHUgPSB2bltjXSwgcy5yZW1vdmVDaGlsZCh2biksIGYucG9zaXRpb24gPSAiYWJzb2x1dGUiLCBEICYmIGcgJiYgKChvID0gdnQocykpLnRpbWUgPSBFZS50aW1lLCBvLndpZHRoID0gc1tjXSksIHh0KGQgPyB1ICogbCAvIDEwMCA6IHUgJiYgbCA/IDEwMCAvIHUgKiBsIDogMCkpKSkKICAgICAgICB9LAogICAgICAgIGlyID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgcmV0dXJuIG1uIHx8IFFuKCksIGUgaW4gT24gJiYgInRyYW5zZm9ybSIgIT09IGUgJiYgfihlID0gT25bZV0pLmluZGV4T2YoIiwiKSAmJiAoZSA9IGUuc3BsaXQoIiwiKVswXSksIEZuW2VdICYmICJ0cmFuc2Zvcm0iICE9PSBlID8gKGkgPSBkcih0LCByKSwgaSA9ICJ0cmFuc2Zvcm1PcmlnaW4iICE9PSBlID8gaVtlXSA6IGdyKHFuKHQsIFVuKSkgKyAiICIgKyBpLnpPcmlnaW4gKyAicHgiKSA6ICghKGkgPSB0LnN0eWxlW2VdKSB8fCAiYXV0byIgPT09IGkgfHwgciB8fCB+KGkgKyAiIikuaW5kZXhPZigiY2FsYygiKSkgJiYgKGkgPSBhcltlXSAmJiBhcltlXSh0LCBlLCBuKSB8fCBxbih0LCBlKSB8fCB5dCh0LCBlKSB8fCAoIm9wYWNpdHkiID09PSBlID8gMSA6IDApKSwgbiAmJiAhfihpICsgIiIpLmluZGV4T2YoIiAiKSA/IHJyKHQsIGUsIGksIG4pICsgbiA6IGkKICAgICAgICB9LAogICAgICAgIHVyID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICBpZiAoIW4gfHwgIm5vbmUiID09PSBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IEhuKGUsIHQsIDEpLAogICAgICAgICAgICAgICAgICAgIHUgPSBpICYmIHFuKHQsIGksIDEpOwogICAgICAgICAgICAgICAgdSAmJiB1ICE9PSBuID8gKGUgPSBpLCBuID0gdSkgOiAiYm9yZGVyQ29sb3IiID09PSBlICYmIChuID0gcW4odCwgImJvcmRlclRvcENvbG9yIikpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHMsIG8sIGEsIGwsIGgsIGYsIEQsIHAsIGMsIGQsIGcsIF8sIG0gPSBuZXcgaG4odGhpcy5fcHQsIHQuc3R5bGUsIGUsIDAsIDEsIHJuKSwKICAgICAgICAgICAgICAgIHYgPSAwLAogICAgICAgICAgICAgICAgeSA9IDA7CiAgICAgICAgICAgIGlmIChtLmIgPSBuLCBtLmUgPSByLCBuICs9ICIiLCAiYXV0byIgPT09IChyICs9ICIiKSAmJiAodC5zdHlsZVtlXSA9IHIsIHIgPSBxbih0LCBlKSB8fCByLCB0LnN0eWxlW2VdID0gbiksIHdlKHMgPSBbbiwgcl0pLCByID0gc1sxXSwgYSA9IChuID0gc1swXSkubWF0Y2goSikgfHwgW10sIChyLm1hdGNoKEopIHx8IFtdKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGZvciAoOyBvID0gSi5leGVjKHIpOykgRCA9IG9bMF0sIGMgPSByLnN1YnN0cmluZyh2LCBvLmluZGV4KSwgaCA/IGggPSAoaCArIDEpICUgNSA6ICJyZ2JhKCIgIT09IGMuc3Vic3RyKC01KSAmJiAiaHNsYSgiICE9PSBjLnN1YnN0cigtNSkgfHwgKGggPSAxKSwgRCAhPT0gKGYgPSBhW3krK10gfHwgIiIpICYmIChsID0gcGFyc2VGbG9hdChmKSB8fCAwLCBnID0gZi5zdWJzdHIoKGwgKyAiIikubGVuZ3RoKSwgKF8gPSAiPSIgPT09IEQuY2hhckF0KDEpID8gKyhELmNoYXJBdCgwKSArICIxIikgOiAwKSAmJiAoRCA9IEQuc3Vic3RyKDIpKSwgcCA9IHBhcnNlRmxvYXQoRCksIGQgPSBELnN1YnN0cigocCArICIiKS5sZW5ndGgpLCB2ID0gSi5sYXN0SW5kZXggLSBkLmxlbmd0aCwgZCB8fCAoZCA9IGQgfHwgUC51bml0c1tlXSB8fCBnLCB2ID09PSByLmxlbmd0aCAmJiAociArPSBkLCBtLmUgKz0gZCkpLCBnICE9PSBkICYmIChsID0gcnIodCwgZSwgZiwgZCkgfHwgMCksIG0uX3B0ID0gewogICAgICAgICAgICAgICAgICAgIF9uZXh0OiBtLl9wdCwKICAgICAgICAgICAgICAgICAgICBwOiBjIHx8IDEgPT09IHkgPyBjIDogIiwiLAogICAgICAgICAgICAgICAgICAgIHM6IGwsCiAgICAgICAgICAgICAgICAgICAgYzogXyA/IF8gKiBwIDogcCAtIGwsCiAgICAgICAgICAgICAgICAgICAgbTogaCAmJiBoIDwgNCA/IE1hdGgucm91bmQgOiAwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG0uYyA9IHYgPCByLmxlbmd0aCA/IHIuc3Vic3RyaW5nKHYsIHIubGVuZ3RoKSA6ICIiCiAgICAgICAgICAgIH0gZWxzZSBtLnIgPSAiZGlzcGxheSIgPT09IGUgJiYgIm5vbmUiID09PSByID8gTm4gOiBMbjsKICAgICAgICAgICAgcmV0dXJuIGV0LnRlc3QocikgJiYgKG0uZSA9IDApLCB0aGlzLl9wdCA9IG0sIG0KICAgICAgICB9LAogICAgICAgIHNyID0gewogICAgICAgICAgICB0b3A6ICIwJSIsCiAgICAgICAgICAgIGJvdHRvbTogIjEwMCUiLAogICAgICAgICAgICBsZWZ0OiAiMCUiLAogICAgICAgICAgICByaWdodDogIjEwMCUiLAogICAgICAgICAgICBjZW50ZXI6ICI1MCUiCiAgICAgICAgfSwKICAgICAgICBvciA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgaWYgKGUudHdlZW4gJiYgZS50d2Vlbi5fdGltZSA9PT0gZS50d2Vlbi5fZHVyKSB7CiAgICAgICAgICAgICAgICB2YXIgbiwgciwgaSwgdSA9IGUudCwKICAgICAgICAgICAgICAgICAgICBzID0gdS5zdHlsZSwKICAgICAgICAgICAgICAgICAgICBvID0gZS51LAogICAgICAgICAgICAgICAgICAgIGEgPSB1Ll9nc2FwOwogICAgICAgICAgICAgICAgaWYgKCJhbGwiID09PSBvIHx8ICEwID09PSBvKSBzLmNzc1RleHQgPSAiIiwgciA9IDE7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gKG8gPSBvLnNwbGl0KCIsIikpLmxlbmd0aDsgLS1pID4gLTE7KSBuID0gb1tpXSwgRm5bbl0gJiYgKHIgPSAxLCBuID0gInRyYW5zZm9ybU9yaWdpbiIgPT09IG4gPyBVbiA6IFZuKSwgdHIodSwgbik7CiAgICAgICAgICAgICAgICByICYmICh0cih1LCBWbiksIGEgJiYgKGEuc3ZnICYmIHUucmVtb3ZlQXR0cmlidXRlKCJ0cmFuc2Zvcm0iKSwgZHIodSwgMSksIGEudW5jYWNoZSA9IDEpKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhciA9IHsKICAgICAgICAgICAgY2xlYXJQcm9wczogZnVuY3Rpb24odCwgZSwgbiwgciwgaSkgewogICAgICAgICAgICAgICAgaWYgKCJpc0Zyb21TdGFydCIgIT09IGkuZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gdC5fcHQgPSBuZXcgaG4odC5fcHQsIGUsIG4sIDAsIDAsIG9yKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdS51ID0gciwgdS5wciA9IC0xMCwgdS50d2VlbiA9IGksIHQuX3Byb3BzLnB1c2gobiksIDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbHIgPSBbMSwgMCwgMCwgMSwgMCwgMF0sCiAgICAgICAgaHIgPSB7fSwKICAgICAgICBmciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCkiID09PSB0IHx8ICJub25lIiA9PT0gdCB8fCAhdAogICAgICAgIH0sCiAgICAgICAgRHIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gcW4odCwgVm4pOwogICAgICAgICAgICByZXR1cm4gZnIoZSkgPyBsciA6IGUuc3Vic3RyKDcpLm1hdGNoKCQpLm1hcCh4dCkKICAgICAgICB9LAogICAgICAgIHByID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgbiwgciwgaSwgdSwgcyA9IHQuX2dzYXAgfHwgdnQodCksCiAgICAgICAgICAgICAgICBvID0gdC5zdHlsZSwKICAgICAgICAgICAgICAgIGEgPSBEcih0KTsKICAgICAgICAgICAgcmV0dXJuIHMuc3ZnICYmIHQuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKSA/ICIxLDAsMCwxLDAsMCIgPT09IChhID0gWyhpID0gdC50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJpeCkuYSwgaS5iLCBpLmMsIGkuZCwgaS5lLCBpLmZdKS5qb2luKCIsIikgPyBsciA6IGEgOiAoYSAhPT0gbHIgfHwgdC5vZmZzZXRQYXJlbnQgfHwgdCA9PT0gX24gfHwgcy5zdmcgfHwgKGkgPSBvLmRpc3BsYXksIG8uZGlzcGxheSA9ICJibG9jayIsIChuID0gdC5wYXJlbnROb2RlKSAmJiB0Lm9mZnNldFBhcmVudCB8fCAodSA9IDEsIHIgPSB0Lm5leHRTaWJsaW5nLCBfbi5hcHBlbmRDaGlsZCh0KSksIGEgPSBEcih0KSwgaSA/IG8uZGlzcGxheSA9IGkgOiB0cih0LCAiZGlzcGxheSIpLCB1ICYmIChyID8gbi5pbnNlcnRCZWZvcmUodCwgcikgOiBuID8gbi5hcHBlbmRDaGlsZCh0KSA6IF9uLnJlbW92ZUNoaWxkKHQpKSksIGUgJiYgYS5sZW5ndGggPiA2ID8gW2FbMF0sIGFbMV0sIGFbNF0sIGFbNV0sIGFbMTJdLCBhWzEzXV0gOiBhKQogICAgICAgIH0sCiAgICAgICAgY3IgPSBmdW5jdGlvbih0LCBlLCBuLCByLCBpLCB1KSB7CiAgICAgICAgICAgIHZhciBzLCBvLCBhLCBsID0gdC5fZ3NhcCwKICAgICAgICAgICAgICAgIGggPSBpIHx8IHByKHQsICEwKSwKICAgICAgICAgICAgICAgIGYgPSBsLnhPcmlnaW4gfHwgMCwKICAgICAgICAgICAgICAgIEQgPSBsLnlPcmlnaW4gfHwgMCwKICAgICAgICAgICAgICAgIHAgPSBsLnhPZmZzZXQgfHwgMCwKICAgICAgICAgICAgICAgIGMgPSBsLnlPZmZzZXQgfHwgMCwKICAgICAgICAgICAgICAgIGQgPSBoWzBdLAogICAgICAgICAgICAgICAgZyA9IGhbMV0sCiAgICAgICAgICAgICAgICBfID0gaFsyXSwKICAgICAgICAgICAgICAgIG0gPSBoWzNdLAogICAgICAgICAgICAgICAgdiA9IGhbNF0sCiAgICAgICAgICAgICAgICB5ID0gaFs1XSwKICAgICAgICAgICAgICAgIEMgPSBlLnNwbGl0KCIgIiksCiAgICAgICAgICAgICAgICB4ID0gcGFyc2VGbG9hdChDWzBdKSB8fCAwLAogICAgICAgICAgICAgICAgRiA9IHBhcnNlRmxvYXQoQ1sxXSkgfHwgMDsKICAgICAgICAgICAgbiA/IGggIT09IGxyICYmIChvID0gZCAqIG0gLSBnICogXykgJiYgKGEgPSB4ICogKC1nIC8gbykgKyBGICogKGQgLyBvKSAtIChkICogeSAtIGcgKiB2KSAvIG8sIHggPSB4ICogKG0gLyBvKSArIEYgKiAoLV8gLyBvKSArIChfICogeSAtIG0gKiB2KSAvIG8sIEYgPSBhKSA6ICh4ID0gKHMgPSAkbih0KSkueCArICh+Q1swXS5pbmRleE9mKCIlIikgPyB4IC8gMTAwICogcy53aWR0aCA6IHgpLCBGID0gcy55ICsgKH4oQ1sxXSB8fCBDWzBdKS5pbmRleE9mKCIlIikgPyBGIC8gMTAwICogcy5oZWlnaHQgOiBGKSksIHIgfHwgITEgIT09IHIgJiYgbC5zbW9vdGggPyAodiA9IHggLSBmLCB5ID0gRiAtIEQsIGwueE9mZnNldCA9IHAgKyAodiAqIGQgKyB5ICogXykgLSB2LCBsLnlPZmZzZXQgPSBjICsgKHYgKiBnICsgeSAqIG0pIC0geSkgOiBsLnhPZmZzZXQgPSBsLnlPZmZzZXQgPSAwLCBsLnhPcmlnaW4gPSB4LCBsLnlPcmlnaW4gPSBGLCBsLnNtb290aCA9ICEhciwgbC5vcmlnaW4gPSBlLCBsLm9yaWdpbklzQWJzb2x1dGUgPSAhIW4sIHQuc3R5bGVbVW5dID0gIjBweCAwcHgiLCB1ICYmIChlcih1LCBsLCAieE9yaWdpbiIsIGYsIHgpLCBlcih1LCBsLCAieU9yaWdpbiIsIEQsIEYpLCBlcih1LCBsLCAieE9mZnNldCIsIHAsIGwueE9mZnNldCksIGVyKHUsIGwsICJ5T2Zmc2V0IiwgYywgbC55T2Zmc2V0KSksIHQuc2V0QXR0cmlidXRlKCJkYXRhLXN2Zy1vcmlnaW4iLCB4ICsgIiAiICsgRikKICAgICAgICB9LAogICAgICAgIGRyID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgbiA9IHQuX2dzYXAgfHwgbmV3IEllKHQpOwogICAgICAgICAgICBpZiAoIngiIGluIG4gJiYgIWUgJiYgIW4udW5jYWNoZSkgcmV0dXJuIG47CiAgICAgICAgICAgIHZhciByLCBpLCB1LCBzLCBvLCBhLCBsLCBoLCBmLCBELCBwLCBjLCBkLCBnLCBfLCBtLCB2LCB5LCBDLCB4LCBGLCB3LCBFLCBiLCBULCBBLCBNLCBPLCBTLCBCLCBrLCBMLCBOID0gdC5zdHlsZSwKICAgICAgICAgICAgICAgIFIgPSBuLnNjYWxlWCA8IDAsCiAgICAgICAgICAgICAgICBJID0gcW4odCwgVW4pIHx8ICIwIjsKICAgICAgICAgICAgcmV0dXJuIHIgPSBpID0gdSA9IGEgPSBsID0gaCA9IGYgPSBEID0gcCA9IDAsIHMgPSBvID0gMSwgbi5zdmcgPSAhKCF0LmdldENUTSB8fCAhSm4odCkpLCBnID0gcHIodCwgbi5zdmcpLCBuLnN2ZyAmJiAoYiA9ICFuLnVuY2FjaGUgJiYgdC5nZXRBdHRyaWJ1dGUoImRhdGEtc3ZnLW9yaWdpbiIpLCBjcih0LCBiIHx8IEksICEhYiB8fCBuLm9yaWdpbklzQWJzb2x1dGUsICExICE9PSBuLnNtb290aCwgZykpLCBjID0gbi54T3JpZ2luIHx8IDAsIGQgPSBuLnlPcmlnaW4gfHwgMCwgZyAhPT0gbHIgJiYgKHkgPSBnWzBdLCBDID0gZ1sxXSwgeCA9IGdbMl0sIEYgPSBnWzNdLCByID0gdyA9IGdbNF0sIGkgPSBFID0gZ1s1XSwgNiA9PT0gZy5sZW5ndGggPyAocyA9IE1hdGguc3FydCh5ICogeSArIEMgKiBDKSwgbyA9IE1hdGguc3FydChGICogRiArIHggKiB4KSwgYSA9IHkgfHwgQyA/IGJuKEMsIHkpICogd24gOiAwLCAoZiA9IHggfHwgRiA/IGJuKHgsIEYpICogd24gKyBhIDogMCkgJiYgKG8gKj0gTWF0aC5jb3MoZiAqIEVuKSksIG4uc3ZnICYmIChyIC09IGMgLSAoYyAqIHkgKyBkICogeCksIGkgLT0gZCAtIChjICogQyArIGQgKiBGKSkpIDogKEwgPSBnWzZdLCBCID0gZ1s3XSwgTSA9IGdbOF0sIE8gPSBnWzldLCBTID0gZ1sxMF0sIGsgPSBnWzExXSwgciA9IGdbMTJdLCBpID0gZ1sxM10sIHUgPSBnWzE0XSwgbCA9IChfID0gYm4oTCwgUykpICogd24sIF8gJiYgKGIgPSB3ICogKG0gPSBNYXRoLmNvcygtXykpICsgTSAqICh2ID0gTWF0aC5zaW4oLV8pKSwgVCA9IEUgKiBtICsgTyAqIHYsIEEgPSBMICogbSArIFMgKiB2LCBNID0gdyAqIC12ICsgTSAqIG0sIE8gPSBFICogLXYgKyBPICogbSwgUyA9IEwgKiAtdiArIFMgKiBtLCBrID0gQiAqIC12ICsgayAqIG0sIHcgPSBiLCBFID0gVCwgTCA9IEEpLCBoID0gKF8gPSBibigteCwgUykpICogd24sIF8gJiYgKG0gPSBNYXRoLmNvcygtXyksIGsgPSBGICogKHYgPSBNYXRoLnNpbigtXykpICsgayAqIG0sIHkgPSBiID0geSAqIG0gLSBNICogdiwgQyA9IFQgPSBDICogbSAtIE8gKiB2LCB4ID0gQSA9IHggKiBtIC0gUyAqIHYpLCBhID0gKF8gPSBibihDLCB5KSkgKiB3biwgXyAmJiAoYiA9IHkgKiAobSA9IE1hdGguY29zKF8pKSArIEMgKiAodiA9IE1hdGguc2luKF8pKSwgVCA9IHcgKiBtICsgRSAqIHYsIEMgPSBDICogbSAtIHkgKiB2LCBFID0gRSAqIG0gLSB3ICogdiwgeSA9IGIsIHcgPSBUKSwgbCAmJiBNYXRoLmFicyhsKSArIE1hdGguYWJzKGEpID4gMzU5LjkgJiYgKGwgPSBhID0gMCwgaCA9IDE4MCAtIGgpLCBzID0geHQoTWF0aC5zcXJ0KHkgKiB5ICsgQyAqIEMgKyB4ICogeCkpLCBvID0geHQoTWF0aC5zcXJ0KEUgKiBFICsgTCAqIEwpKSwgXyA9IGJuKHcsIEUpLCBmID0gTWF0aC5hYnMoXykgPiAyZS00ID8gXyAqIHduIDogMCwgcCA9IGsgPyAxIC8gKGsgPCAwID8gLWsgOiBrKSA6IDApLCBuLnN2ZyAmJiAoYiA9IHQuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKSwgbi5mb3JjZUNTUyA9IHQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAiIikgfHwgIWZyKHFuKHQsIFZuKSksIGIgJiYgdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIGIpKSksIE1hdGguYWJzKGYpID4gOTAgJiYgTWF0aC5hYnMoZikgPCAyNzAgJiYgKFIgPyAocyAqPSAtMSwgZiArPSBhIDw9IDAgPyAxODAgOiAtMTgwLCBhICs9IGEgPD0gMCA/IDE4MCA6IC0xODApIDogKG8gKj0gLTEsIGYgKz0gZiA8PSAwID8gMTgwIDogLTE4MCkpLCBuLnggPSAoKG4ueFBlcmNlbnQgPSByICYmIE1hdGgucm91bmQodC5vZmZzZXRXaWR0aCAvIDIpID09PSBNYXRoLnJvdW5kKC1yKSA/IC01MCA6IDApID8gMCA6IHIpICsgInB4Iiwgbi55ID0gKChuLnlQZXJjZW50ID0gaSAmJiBNYXRoLnJvdW5kKHQub2Zmc2V0SGVpZ2h0IC8gMikgPT09IE1hdGgucm91bmQoLWkpID8gLTUwIDogMCkgPyAwIDogaSkgKyAicHgiLCBuLnogPSB1ICsgInB4Iiwgbi5zY2FsZVggPSB4dChzKSwgbi5zY2FsZVkgPSB4dChvKSwgbi5yb3RhdGlvbiA9IHh0KGEpICsgImRlZyIsIG4ucm90YXRpb25YID0geHQobCkgKyAiZGVnIiwgbi5yb3RhdGlvblkgPSB4dChoKSArICJkZWciLCBuLnNrZXdYID0gZiArICJkZWciLCBuLnNrZXdZID0gRCArICJkZWciLCBuLnRyYW5zZm9ybVBlcnNwZWN0aXZlID0gcCArICJweCIsIChuLnpPcmlnaW4gPSBwYXJzZUZsb2F0KEkuc3BsaXQoIiAiKVsyXSkgfHwgMCkgJiYgKE5bVW5dID0gZ3IoSSkpLCBuLnhPZmZzZXQgPSBuLnlPZmZzZXQgPSAwLCBuLmZvcmNlM0QgPSBQLmZvcmNlM0QsIG4ucmVuZGVyVHJhbnNmb3JtID0gbi5zdmcgPyB5ciA6IHhuID8gdnIgOiBtciwgbi51bmNhY2hlID0gMCwgbgogICAgICAgIH0sCiAgICAgICAgZ3IgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAodCA9IHQuc3BsaXQoIiAiKSlbMF0gKyAiICIgKyB0WzFdCiAgICAgICAgfSwKICAgICAgICBfciA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdmFyIHIgPSB0ZShlKTsKICAgICAgICAgICAgcmV0dXJuIHh0KHBhcnNlRmxvYXQoZSkgKyBwYXJzZUZsb2F0KHJyKHQsICJ4IiwgbiArICJweCIsIHIpKSkgKyByCiAgICAgICAgfSwKICAgICAgICBtciA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgZS56ID0gIjBweCIsIGUucm90YXRpb25ZID0gZS5yb3RhdGlvblggPSAiMGRlZyIsIGUuZm9yY2UzRCA9IDAsIHZyKHQsIGUpCiAgICAgICAgfSwKICAgICAgICB2ciA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlIHx8IHRoaXMsCiAgICAgICAgICAgICAgICByID0gbi54UGVyY2VudCwKICAgICAgICAgICAgICAgIGkgPSBuLnlQZXJjZW50LAogICAgICAgICAgICAgICAgdSA9IG4ueCwKICAgICAgICAgICAgICAgIHMgPSBuLnksCiAgICAgICAgICAgICAgICBvID0gbi56LAogICAgICAgICAgICAgICAgYSA9IG4ucm90YXRpb24sCiAgICAgICAgICAgICAgICBsID0gbi5yb3RhdGlvblksCiAgICAgICAgICAgICAgICBoID0gbi5yb3RhdGlvblgsCiAgICAgICAgICAgICAgICBmID0gbi5za2V3WCwKICAgICAgICAgICAgICAgIEQgPSBuLnNrZXdZLAogICAgICAgICAgICAgICAgcCA9IG4uc2NhbGVYLAogICAgICAgICAgICAgICAgYyA9IG4uc2NhbGVZLAogICAgICAgICAgICAgICAgZCA9IG4udHJhbnNmb3JtUGVyc3BlY3RpdmUsCiAgICAgICAgICAgICAgICBnID0gbi5mb3JjZTNELAogICAgICAgICAgICAgICAgXyA9IG4udGFyZ2V0LAogICAgICAgICAgICAgICAgbSA9IG4uek9yaWdpbiwKICAgICAgICAgICAgICAgIHYgPSAiIiwKICAgICAgICAgICAgICAgIHkgPSAiYXV0byIgPT09IGcgJiYgdCAmJiAxICE9PSB0IHx8ICEwID09PSBnOwogICAgICAgICAgICBpZiAobSAmJiAoIjBkZWciICE9PSBoIHx8ICIwZGVnIiAhPT0gbCkpIHsKICAgICAgICAgICAgICAgIHZhciBDLCB4ID0gcGFyc2VGbG9hdChsKSAqIEVuLAogICAgICAgICAgICAgICAgICAgIEYgPSBNYXRoLnNpbih4KSwKICAgICAgICAgICAgICAgICAgICB3ID0gTWF0aC5jb3MoeCk7CiAgICAgICAgICAgICAgICB4ID0gcGFyc2VGbG9hdChoKSAqIEVuLCBDID0gTWF0aC5jb3MoeCksIHUgPSBfcihfLCB1LCBGICogQyAqIC1tKSwgcyA9IF9yKF8sIHMsIC1NYXRoLnNpbih4KSAqIC1tKSwgbyA9IF9yKF8sIG8sIHcgKiBDICogLW0gKyBtKQogICAgICAgICAgICB9CiAgICAgICAgICAgICIwcHgiICE9PSBkICYmICh2ICs9ICJwZXJzcGVjdGl2ZSgiICsgZCArICIpICIpLCAociB8fCBpKSAmJiAodiArPSAidHJhbnNsYXRlKCIgKyByICsgIiUsICIgKyBpICsgIiUpICIpLCAoeSB8fCAiMHB4IiAhPT0gdSB8fCAiMHB4IiAhPT0gcyB8fCAiMHB4IiAhPT0gbykgJiYgKHYgKz0gIjBweCIgIT09IG8gfHwgeSA/ICJ0cmFuc2xhdGUzZCgiICsgdSArICIsICIgKyBzICsgIiwgIiArIG8gKyAiKSAiIDogInRyYW5zbGF0ZSgiICsgdSArICIsICIgKyBzICsgIikgIiksICIwZGVnIiAhPT0gYSAmJiAodiArPSAicm90YXRlKCIgKyBhICsgIikgIiksICIwZGVnIiAhPT0gbCAmJiAodiArPSAicm90YXRlWSgiICsgbCArICIpICIpLCAiMGRlZyIgIT09IGggJiYgKHYgKz0gInJvdGF0ZVgoIiArIGggKyAiKSAiKSwgIjBkZWciID09PSBmICYmICIwZGVnIiA9PT0gRCB8fCAodiArPSAic2tldygiICsgZiArICIsICIgKyBEICsgIikgIiksIDEgPT09IHAgJiYgMSA9PT0gYyB8fCAodiArPSAic2NhbGUoIiArIHAgKyAiLCAiICsgYyArICIpICIpLCBfLnN0eWxlW1ZuXSA9IHYgfHwgInRyYW5zbGF0ZSgwLCAwKSIKICAgICAgICB9LAogICAgICAgIHlyID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgbiwgciwgaSwgdSwgcywgbyA9IGUgfHwgdGhpcywKICAgICAgICAgICAgICAgIGEgPSBvLnhQZXJjZW50LAogICAgICAgICAgICAgICAgbCA9IG8ueVBlcmNlbnQsCiAgICAgICAgICAgICAgICBoID0gby54LAogICAgICAgICAgICAgICAgZiA9IG8ueSwKICAgICAgICAgICAgICAgIEQgPSBvLnJvdGF0aW9uLAogICAgICAgICAgICAgICAgcCA9IG8uc2tld1gsCiAgICAgICAgICAgICAgICBjID0gby5za2V3WSwKICAgICAgICAgICAgICAgIGQgPSBvLnNjYWxlWCwKICAgICAgICAgICAgICAgIGcgPSBvLnNjYWxlWSwKICAgICAgICAgICAgICAgIF8gPSBvLnRhcmdldCwKICAgICAgICAgICAgICAgIG0gPSBvLnhPcmlnaW4sCiAgICAgICAgICAgICAgICB2ID0gby55T3JpZ2luLAogICAgICAgICAgICAgICAgeSA9IG8ueE9mZnNldCwKICAgICAgICAgICAgICAgIEMgPSBvLnlPZmZzZXQsCiAgICAgICAgICAgICAgICB4ID0gby5mb3JjZUNTUywKICAgICAgICAgICAgICAgIEYgPSBwYXJzZUZsb2F0KGgpLAogICAgICAgICAgICAgICAgdyA9IHBhcnNlRmxvYXQoZik7CiAgICAgICAgICAgIEQgPSBwYXJzZUZsb2F0KEQpLCBwID0gcGFyc2VGbG9hdChwKSwgKGMgPSBwYXJzZUZsb2F0KGMpKSAmJiAocCArPSBjID0gcGFyc2VGbG9hdChjKSwgRCArPSBjKSwgRCB8fCBwID8gKEQgKj0gRW4sIHAgKj0gRW4sIG4gPSBNYXRoLmNvcyhEKSAqIGQsIHIgPSBNYXRoLnNpbihEKSAqIGQsIGkgPSBNYXRoLnNpbihEIC0gcCkgKiAtZywgdSA9IE1hdGguY29zKEQgLSBwKSAqIGcsIHAgJiYgKGMgKj0gRW4sIHMgPSBNYXRoLnRhbihwIC0gYyksIGkgKj0gcyA9IE1hdGguc3FydCgxICsgcyAqIHMpLCB1ICo9IHMsIGMgJiYgKHMgPSBNYXRoLnRhbihjKSwgbiAqPSBzID0gTWF0aC5zcXJ0KDEgKyBzICogcyksIHIgKj0gcykpLCBuID0geHQobiksIHIgPSB4dChyKSwgaSA9IHh0KGkpLCB1ID0geHQodSkpIDogKG4gPSBkLCB1ID0gZywgciA9IGkgPSAwKSwgKEYgJiYgIX4oaCArICIiKS5pbmRleE9mKCJweCIpIHx8IHcgJiYgIX4oZiArICIiKS5pbmRleE9mKCJweCIpKSAmJiAoRiA9IHJyKF8sICJ4IiwgaCwgInB4IiksIHcgPSBycihfLCAieSIsIGYsICJweCIpKSwgKG0gfHwgdiB8fCB5IHx8IEMpICYmIChGID0geHQoRiArIG0gLSAobSAqIG4gKyB2ICogaSkgKyB5KSwgdyA9IHh0KHcgKyB2IC0gKG0gKiByICsgdiAqIHUpICsgQykpLCAoYSB8fCBsKSAmJiAocyA9IF8uZ2V0QkJveCgpLCBGID0geHQoRiArIGEgLyAxMDAgKiBzLndpZHRoKSwgdyA9IHh0KHcgKyBsIC8gMTAwICogcy5oZWlnaHQpKSwgcyA9ICJtYXRyaXgoIiArIG4gKyAiLCIgKyByICsgIiwiICsgaSArICIsIiArIHUgKyAiLCIgKyBGICsgIiwiICsgdyArICIpIiwgXy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIHMpLCB4ICYmIChfLnN0eWxlW1ZuXSA9IHMpCiAgICAgICAgfSwKICAgICAgICBDciA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGksIHUpIHsKICAgICAgICAgICAgdmFyIHMsIG8sIGEgPSBYKGkpLAogICAgICAgICAgICAgICAgbCA9IHBhcnNlRmxvYXQoaSkgKiAoYSAmJiB+aS5pbmRleE9mKCJyYWQiKSA/IHduIDogMSksCiAgICAgICAgICAgICAgICBoID0gdSA/IGwgKiB1IDogbCAtIHIsCiAgICAgICAgICAgICAgICBmID0gciArIGggKyAiZGVnIjsKICAgICAgICAgICAgcmV0dXJuIGEgJiYgKCJzaG9ydCIgPT09IChzID0gaS5zcGxpdCgiXyIpWzFdKSAmJiAoaCAlPSAzNjApICE9PSBoICUgMTgwICYmIChoICs9IGggPCAwID8gMzYwIDogLTM2MCksICJjdyIgPT09IHMgJiYgaCA8IDAgPyBoID0gKGggKyAzNmU5KSAlIDM2MCAtIDM2MCAqIH5+KGggLyAzNjApIDogImNjdyIgPT09IHMgJiYgaCA+IDAgJiYgKGggPSAoaCAtIDM2ZTkpICUgMzYwIC0gMzYwICogfn4oaCAvIDM2MCkpKSwgdC5fcHQgPSBvID0gbmV3IGhuKHQuX3B0LCBlLCBuLCByLCBoLCBQbiksIG8uZSA9IGYsIG8udSA9ICJkZWciLCB0Ll9wcm9wcy5wdXNoKG4pLCBvCiAgICAgICAgfSwKICAgICAgICB4ciA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdmFyIHIsIGksIHUsIHMsIG8sIGEsIGwsIGggPSB5bi5zdHlsZSwKICAgICAgICAgICAgICAgIGYgPSBuLl9nc2FwOwogICAgICAgICAgICBmb3IgKGkgaW4gaC5jc3NUZXh0ID0gZ2V0Q29tcHV0ZWRTdHlsZShuKS5jc3NUZXh0ICsgIjtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrOyIsIGhbVm5dID0gZSwgZ24uYm9keS5hcHBlbmRDaGlsZCh5biksIHIgPSBkcih5biwgMSksIEZuKSh1ID0gZltpXSkgIT09IChzID0gcltpXSkgJiYgInBlcnNwZWN0aXZlLGZvcmNlM0QsdHJhbnNmb3JtT3JpZ2luLHN2Z09yaWdpbiIuaW5kZXhPZihpKSA8IDAgJiYgKG8gPSB0ZSh1KSAhPT0gKGwgPSB0ZShzKSkgPyBycihuLCBpLCB1LCBsKSA6IHBhcnNlRmxvYXQodSksIGEgPSBwYXJzZUZsb2F0KHMpLCB0Ll9wdCA9IG5ldyBobih0Ll9wdCwgZiwgaSwgbywgYSAtIG8sIFNuKSwgdC5fcHQudSA9IGwgfHwgMCwgdC5fcHJvcHMucHVzaChpKSk7CiAgICAgICAgICAgIGduLmJvZHkucmVtb3ZlQ2hpbGQoeW4pCiAgICAgICAgfTsKICAgIEN0KCJwYWRkaW5nLG1hcmdpbixXaWR0aCxSYWRpdXMiLCAoZnVuY3Rpb24odCwgZSkgewogICAgICAgIHZhciBuID0gIlRvcCIsCiAgICAgICAgICAgIHIgPSAiUmlnaHQiLAogICAgICAgICAgICBpID0gIkJvdHRvbSIsCiAgICAgICAgICAgIHUgPSAiTGVmdCIsCiAgICAgICAgICAgIHMgPSAoZSA8IDMgPyBbbiwgciwgaSwgdV0gOiBbbiArIHUsIG4gKyByLCBpICsgciwgaSArIHVdKS5tYXAoKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlIDwgMiA/IHQgKyBuIDogImJvcmRlciIgKyBuICsgdAogICAgICAgICAgICB9KSk7CiAgICAgICAgYXJbZSA+IDEgPyAiYm9yZGVyIiArIHQgOiB0XSA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGkpIHsKICAgICAgICAgICAgdmFyIHUsIG87CiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgNCkgcmV0dXJuIHUgPSBzLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGlyKHQsIGUsIG4pCiAgICAgICAgICAgIH0pKSwgNSA9PT0gKG8gPSB1LmpvaW4oIiAiKSkuc3BsaXQodVswXSkubGVuZ3RoID8gdVswXSA6IG87CiAgICAgICAgICAgIHUgPSAociArICIiKS5zcGxpdCgiICIpLCBvID0ge30sIHMuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG9bdF0gPSB1W2VdID0gdVtlXSB8fCB1WyhlIC0gMSkgLyAyIHwgMF0KICAgICAgICAgICAgfSkpLCB0LmluaXQoZSwgbywgaSkKICAgICAgICB9CiAgICB9KSk7CiAgICB2YXIgRnIsIHdyLCBFciA9IHsKICAgICAgICBuYW1lOiAiY3NzIiwKICAgICAgICByZWdpc3RlcjogUW4sCiAgICAgICAgdGFyZ2V0VGVzdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5zdHlsZSAmJiB0Lm5vZGVUeXBlCiAgICAgICAgfSwKICAgICAgICBpbml0OiBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgIHZhciB1LCBzLCBvLCBhLCBsLCBoLCBmLCBELCBwLCBjLCBkLCBnLCBfLCBtLCB2LCB5LCBDLCB4LCBGLCB3ID0gdGhpcy5fcHJvcHMsCiAgICAgICAgICAgICAgICBFID0gdC5zdHlsZTsKICAgICAgICAgICAgZm9yIChmIGluIG1uIHx8IFFuKCksIGUpCiAgICAgICAgICAgICAgICBpZiAoImF1dG9Sb3VuZCIgIT09IGYgJiYgKHMgPSBlW2ZdLCAhcHRbZl0gfHwgIVVlKGYsIGUsIG4sIHIsIHQsIGkpKSkKICAgICAgICAgICAgICAgICAgICBpZiAobCA9IHR5cGVvZiBzLCBoID0gYXJbZl0sICJmdW5jdGlvbiIgPT09IGwgJiYgKGwgPSB0eXBlb2YocyA9IHMuY2FsbChuLCByLCB0LCBpKSkpLCAic3RyaW5nIiA9PT0gbCAmJiB+cy5pbmRleE9mKCJyYW5kb20oIikgJiYgKHMgPSBmZShzKSksIGgpIGgodGhpcywgdCwgZiwgcywgbikgJiYgKHYgPSAxKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgiLS0iID09PSBmLnN1YnN0cigwLCAyKSkgdGhpcy5hZGQoRSwgInNldFByb3BlcnR5IiwgZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKGYpICsgIiIsIHMgKyAiIiwgciwgaSwgMCwgMCwgZik7CiAgICAgICAgICAgIGVsc2UgaWYgKCJ1bmRlZmluZWQiICE9PSBsKSB7CiAgICAgICAgICAgICAgICBpZiAodSA9IGlyKHQsIGYpLCBhID0gcGFyc2VGbG9hdCh1KSwgKGMgPSAic3RyaW5nIiA9PT0gbCAmJiAiPSIgPT09IHMuY2hhckF0KDEpID8gKyhzLmNoYXJBdCgwKSArICIxIikgOiAwKSAmJiAocyA9IHMuc3Vic3RyKDIpKSwgbyA9IHBhcnNlRmxvYXQocyksIGYgaW4gT24gJiYgKCJhdXRvQWxwaGEiID09PSBmICYmICgxID09PSBhICYmICJoaWRkZW4iID09PSBpcih0LCAidmlzaWJpbGl0eSIpICYmIG8gJiYgKGEgPSAwKSwgZXIodGhpcywgRSwgInZpc2liaWxpdHkiLCBhID8gImluaGVyaXQiIDogImhpZGRlbiIsIG8gPyAiaW5oZXJpdCIgOiAiaGlkZGVuIiwgIW8pKSwgInNjYWxlIiAhPT0gZiAmJiAidHJhbnNmb3JtIiAhPT0gZiAmJiB+KGYgPSBPbltmXSkuaW5kZXhPZigiLCIpICYmIChmID0gZi5zcGxpdCgiLCIpWzBdKSksIGQgPSBmIGluIEZuKQogICAgICAgICAgICAgICAgICAgIGlmIChnIHx8ICgoXyA9IHQuX2dzYXApLnJlbmRlclRyYW5zZm9ybSB8fCBkcih0KSwgbSA9ICExICE9PSBlLnNtb290aE9yaWdpbiAmJiBfLnNtb290aCwgKGcgPSB0aGlzLl9wdCA9IG5ldyBobih0aGlzLl9wdCwgRSwgVm4sIDAsIDEsIF8ucmVuZGVyVHJhbnNmb3JtLCBfLCAwLCAtMSkpLmRlcCA9IDEpLCAic2NhbGUiID09PSBmKSB0aGlzLl9wdCA9IG5ldyBobih0aGlzLl9wdCwgXywgInNjYWxlWSIsIF8uc2NhbGVZLCBjID8gYyAqIG8gOiBvIC0gXy5zY2FsZVkpLCB3LnB1c2goInNjYWxlWSIsIGYpLCBmICs9ICJYIjsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ0cmFuc2Zvcm1PcmlnaW4iID09PSBmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gdm9pZCAwLCB4ID0gdm9pZCAwLCBGID0gdm9pZCAwLCBDID0gKHkgPSBzKS5zcGxpdCgiICIpLCB4ID0gQ1swXSwgRiA9IENbMV0gfHwgIjUwJSIsICJ0b3AiICE9PSB4ICYmICJib3R0b20iICE9PSB4ICYmICJsZWZ0IiAhPT0gRiAmJiAicmlnaHQiICE9PSBGIHx8ICh5ID0geCwgeCA9IEYsIEYgPSB5KSwgQ1swXSA9IHNyW3hdIHx8IHgsIENbMV0gPSBzcltGXSB8fCBGLCBzID0gQy5qb2luKCIgIiksIF8uc3ZnID8gY3IodCwgcywgMCwgbSwgMCwgdGhpcykgOiAoKHAgPSBwYXJzZUZsb2F0KHMuc3BsaXQoIiAiKVsyXSkgfHwgMCkgIT09IF8uek9yaWdpbiAmJiBlcih0aGlzLCBfLCAiek9yaWdpbiIsIF8uek9yaWdpbiwgcCksIGVyKHRoaXMsIEUsIGYsIGdyKHUpLCBncihzKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN2Z09yaWdpbiIgPT09IGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyKHQsIHMsIDEsIG0sIDAsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiBpbiBocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3IodGhpcywgXywgZiwgYSwgcywgYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic21vb3RoT3JpZ2luIiA9PT0gZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXIodGhpcywgXywgInNtb290aCIsIF8uc21vb3RoLCBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmb3JjZTNEIiA9PT0gZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1tmXSA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidHJhbnNmb3JtIiA9PT0gZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHIodGhpcywgcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBmIGluIEUgfHwgKGYgPSBIbihmKSB8fCBmKTsKICAgICAgICAgICAgICAgIGlmIChkIHx8IChvIHx8IDAgPT09IG8pICYmIChhIHx8IDAgPT09IGEpICYmICFNbi50ZXN0KHMpICYmIGYgaW4gRSkgbyB8fCAobyA9IDApLCAoRCA9ICh1ICsgIiIpLnN1YnN0cigoYSArICIiKS5sZW5ndGgpKSAhPT0gKHAgPSB0ZShzKSB8fCAoZiBpbiBQLnVuaXRzID8gUC51bml0c1tmXSA6IEQpKSAmJiAoYSA9IHJyKHQsIGYsIHUsIHApKSwgdGhpcy5fcHQgPSBuZXcgaG4odGhpcy5fcHQsIGQgPyBfIDogRSwgZiwgYSwgYyA/IGMgKiBvIDogbyAtIGEsICJweCIgIT09IHAgfHwgITEgPT09IGUuYXV0b1JvdW5kIHx8IGQgPyBTbiA6IGtuKSwgdGhpcy5fcHQudSA9IHAgfHwgMCwgRCAhPT0gcCAmJiAodGhpcy5fcHQuYiA9IHUsIHRoaXMuX3B0LnIgPSBCbik7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChmIGluIEUpIHVyLmNhbGwodGhpcywgdCwgZiwgdSwgcyk7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIShmIGluIHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0KGYsIHMpOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZCh0LCBmLCB0W2ZdLCBzLCByLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdy5wdXNoKGYpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdiAmJiBsbih0aGlzKQogICAgICAgIH0sCiAgICAgICAgZ2V0OiBpciwKICAgICAgICBhbGlhc2VzOiBPbiwKICAgICAgICBnZXRTZXR0ZXI6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdmFyIHIgPSBPbltlXTsKICAgICAgICAgICAgcmV0dXJuIHIgJiYgci5pbmRleE9mKCIsIikgPCAwICYmIChlID0gciksIGUgaW4gRm4gJiYgZSAhPT0gVW4gJiYgKHQuX2dzYXAueCB8fCBpcih0LCAieCIpKSA/IG4gJiYgQ24gPT09IG4gPyAic2NhbGUiID09PSBlID8gWW4gOiB6biA6IChDbiA9IG4gfHwge30pICYmICgic2NhbGUiID09PSBlID8gWG4gOiBqbikgOiB0LnN0eWxlICYmICFVKHQuc3R5bGVbZV0pID8gUm4gOiB+ZS5pbmRleE9mKCItIikgPyBJbiA6IHRuKHQsIGUpCiAgICAgICAgfSwKICAgICAgICBjb3JlOiB7CiAgICAgICAgICAgIF9yZW1vdmVQcm9wZXJ0eTogdHIsCiAgICAgICAgICAgIF9nZXRNYXRyaXg6IHByCiAgICAgICAgfQogICAgfTsKICAgIGNuLnV0aWxzLmNoZWNrUHJlZml4ID0gSG4sIHdyID0gQ3QoIngseSx6LHNjYWxlLHNjYWxlWCxzY2FsZVkseFBlcmNlbnQseVBlcmNlbnQsIiArIChGciA9ICJyb3RhdGlvbixyb3RhdGlvblgscm90YXRpb25ZLHNrZXdYLHNrZXdZIikgKyAiLHRyYW5zZm9ybSx0cmFuc2Zvcm1PcmlnaW4sc3ZnT3JpZ2luLGZvcmNlM0Qsc21vb3RoT3JpZ2luLHRyYW5zZm9ybVBlcnNwZWN0aXZlIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICBGblt0XSA9IDEKICAgIH0pKSwgQ3QoRnIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgUC51bml0c1t0XSA9ICJkZWciLCBoclt0XSA9IDEKICAgIH0pKSwgT25bd3JbMTNdXSA9ICJ4LHkseixzY2FsZSxzY2FsZVgsc2NhbGVZLHhQZXJjZW50LHlQZXJjZW50LCIgKyBGciwgQ3QoIjA6dHJhbnNsYXRlWCwxOnRyYW5zbGF0ZVksMjp0cmFuc2xhdGVaLDg6cm90YXRlLDg6cm90YXRpb25aLDg6cm90YXRlWiw5OnJvdGF0ZVgsMTA6cm90YXRlWSIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIGUgPSB0LnNwbGl0KCI6Iik7CiAgICAgICAgT25bZVsxXV0gPSB3cltlWzBdXQogICAgfSkpLCBDdCgieCx5LHosdG9wLHJpZ2h0LGJvdHRvbSxsZWZ0LHdpZHRoLGhlaWdodCxmb250U2l6ZSxwYWRkaW5nLG1hcmdpbixwZXJzcGVjdGl2ZSIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgUC51bml0c1t0XSA9ICJweCIKICAgIH0pKSwgY24ucmVnaXN0ZXJQbHVnaW4oRXIpOwogICAgdmFyIGJyLCBUciwgQXIsIE1yID0gY24ucmVnaXN0ZXJQbHVnaW4oRXIpIHx8IGNuLAogICAgICAgIE9yID0gTXIuY29yZS5Ud2VlbiwKICAgICAgICBTciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gYnIgfHwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiAoYnIgPSB3aW5kb3cuZ3NhcCkgJiYgYnIucmVnaXN0ZXJQbHVnaW4gJiYgYnIKICAgICAgICB9LAogICAgICAgIFByID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBiciA9IFNyKCksIChBciA9IGJyICYmIGJyLnBhcnNlRWFzZSgiX0NFIikpID8gKFRyID0gMSwgYnIucGFyc2VFYXNlKCJib3VuY2UiKS5jb25maWcgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIHQgPyBrcigiIiwgdCkgOiBrcigiYm91bmNlKCIgKyB0ICsgIikiLCB7CiAgICAgICAgICAgICAgICAgICAgc3RyZW5ndGg6ICt0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSA6IHQgJiYgY29uc29sZS53YXJuKCJQbGVhc2UgZ3NhcC5yZWdpc3RlclBsdWdpbihDdXN0b21FYXNlLCBDdXN0b21Cb3VuY2UpIikKICAgICAgICB9LAogICAgICAgIEJyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSwgbiA9IHQubGVuZ3RoLAogICAgICAgICAgICAgICAgciA9IDEgLyB0W24gLSAyXTsKICAgICAgICAgICAgZm9yIChlID0gMjsgZSA8IG47IGUgKz0gMikgdFtlXSA9IH5+KHRbZV0gKiByICogMWUzKSAvIDFlMzsKICAgICAgICAgICAgdFtuIC0gMl0gPSAxCiAgICAgICAgfSwKICAgICAgICBrciA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgVHIgfHwgUHIoMSksIGUgPSBlIHx8IHt9OwogICAgICAgICAgICB2YXIgbiwgciwgaSwgdSwgcywgbywgYSwgbCA9IE1hdGgubWluKC45OTksIGUuc3RyZW5ndGggfHwgLjcpLAogICAgICAgICAgICAgICAgaCA9IGwsCiAgICAgICAgICAgICAgICBmID0gKGUuc3F1YXNoIHx8IDApIC8gMTAwLAogICAgICAgICAgICAgICAgRCA9IGYsCiAgICAgICAgICAgICAgICBwID0gMSAvIC4wMywKICAgICAgICAgICAgICAgIGMgPSAuMiwKICAgICAgICAgICAgICAgIGQgPSAxLAogICAgICAgICAgICAgICAgZyA9IC4xLAogICAgICAgICAgICAgICAgXyA9IFswLCAwLCAuMDcsIDAsIC4xLCAxLCAuMSwgMV0sCiAgICAgICAgICAgICAgICBtID0gWzAsIDAsIDAsIDAsIC4xLCAwLCAuMSwgMF07CiAgICAgICAgICAgIGZvciAocyA9IDA7IHMgPCAyMDAgJiYgKG8gPSBnICsgKGMgKj0gaCAqICgoaCArIDEpIC8gMikpLCB1ID0gMSAtIChkICo9IGwgKiBsKSwgciA9IChpID0gZyArIC40OSAqIGMpICsgLjggKiAoaSAtIChuID0gZyArIGQgLyBwKSksIGYgJiYgKGcgKz0gZiwgbiArPSBmLCBpICs9IGYsIHIgKz0gZiwgbyArPSBmLCBhID0gZiAvIEQsIG0ucHVzaChnIC0gZiwgMCwgZyAtIGYsIGEsIGcgLSBmIC8gMiwgYSwgZywgYSwgZywgMCwgZywgMCwgZywgLS42ICogYSwgZyArIChvIC0gZykgLyA2LCAwLCBvLCAwKSwgXy5wdXNoKGcgLSBmLCAxLCBnLCAxLCBnLCAxKSwgZiAqPSBsICogbCksIF8ucHVzaChnLCAxLCBuLCB1LCBpLCB1LCByLCB1LCBvLCAxLCBvLCAxKSwgbCAqPSAuOTUsIHAgPSBkIC8gKG8gLSByKSwgZyA9IG8sICEodSA+IC45OTkpKTsgcysrKTsKICAgICAgICAgICAgaWYgKGUuZW5kQXRTdGFydCAmJiAiZmFsc2UiICE9PSBlLmVuZEF0U3RhcnQpIHsKICAgICAgICAgICAgICAgIGlmIChpID0gLS4xLCBfLnVuc2hpZnQoaSwgMSwgaSwgMSwgLS4wNywgMCksIEQpCiAgICAgICAgICAgICAgICAgICAgZm9yIChpIC09IGYgPSAyLjUgKiBELCBfLnVuc2hpZnQoaSwgMSwgaSwgMSwgaSwgMSksIG0uc3BsaWNlKDAsIDYpLCBtLnVuc2hpZnQoaSwgMCwgaSwgMCwgaSwgMSwgaSArIGYgLyAyLCAxLCBpICsgZiwgMSwgaSArIGYsIDAsIGkgKyBmLCAwLCBpICsgZiwgLS42LCBpICsgZiArIC4wMzMsIDApLCBzID0gMDsgcyA8IG0ubGVuZ3RoOyBzICs9IDIpIG1bc10gLT0gaTsKICAgICAgICAgICAgICAgIGZvciAocyA9IDA7IHMgPCBfLmxlbmd0aDsgcyArPSAyKSBfW3NdIC09IGksIF9bcyArIDFdID0gMSAtIF9bcyArIDFdCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGYgJiYgKEJyKG0pLCBtWzJdID0gIkMiICsgbVsyXSwgQXIoZS5zcXVhc2hJRCB8fCB0ICsgIi1zcXVhc2giLCAiTSIgKyBtLmpvaW4oIiwiKSkpLCBCcihfKSwgX1syXSA9ICJDIiArIF9bMl0sIEFyKHQsICJNIiArIF8uam9pbigiLCIpKQogICAgICAgIH0sCiAgICAgICAgTHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdCh0LCBlKSB7CiAgICAgICAgICAgICAgICB0aGlzLmVhc2UgPSBrcih0LCBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0LmNyZWF0ZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBrcih0LCBlKQogICAgICAgICAgICB9LCB0LnJlZ2lzdGVyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgYnIgPSB0LCBQcigpCiAgICAgICAgICAgIH0sIHQKICAgICAgICB9KCk7CiAgICAvKiEKICAgICAqIEN1c3RvbUJvdW5jZSAzLjUuMQogICAgICogaHR0cHM6Ly9ncmVlbnNvY2suY29tCiAgICAgKgogICAgICogQGxpY2Vuc2UgQ29weXJpZ2h0IDIwMDgtMjAyMCwgR3JlZW5Tb2NrLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogU3ViamVjdCB0byB0aGUgdGVybXMgYXQgaHR0cHM6Ly9ncmVlbnNvY2suY29tL3N0YW5kYXJkLWxpY2Vuc2Ugb3IgZm9yCiAgICAgKiBDbHViIEdyZWVuU29jayBtZW1iZXJzLCB0aGUgYWdyZWVtZW50IGlzc3VlZCB3aXRoIHRoYXQgbWVtYmVyc2hpcC4KICAgICAqIEBhdXRob3I6IEphY2sgRG95bGUsIGphY2tAZ3JlZW5zb2NrLmNvbQogICAgICovCiAgICBTcigpICYmIGJyLnJlZ2lzdGVyUGx1Z2luKExyKSwgTHIudmVyc2lvbiA9ICIzLjUuMSI7CiAgICAvKiEKICAgICAqIHBhdGhzIDMuNS4xCiAgICAgKiBodHRwczovL2dyZWVuc29jay5jb20KICAgICAqCiAgICAgKiBDb3B5cmlnaHQgMjAwOC0yMDIwLCBHcmVlblNvY2suIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhdCBodHRwczovL2dyZWVuc29jay5jb20vc3RhbmRhcmQtbGljZW5zZSBvciBmb3IKICAgICAqIENsdWIgR3JlZW5Tb2NrIG1lbWJlcnMsIHRoZSBhZ3JlZW1lbnQgaXNzdWVkIHdpdGggdGhhdCBtZW1iZXJzaGlwLgogICAgICogQGF1dGhvcjogSmFjayBEb3lsZSwgamFja0BncmVlbnNvY2suY29tCiAgICAgKi8KICAgIHZhciBOciA9IC9bYWNobG1xc3R2el18KC0/XGQqXC4/XGQqKD86ZVtcLStdP1xkKyk/KVswLTldL2dpLAogICAgICAgIFJyID0gLyg/OigtKT9cZCpcLj9cZCooPzplW1wtK10/XGQrKT8pWzAtOV0vZ2ksCiAgICAgICAgSXIgPSAvW1wrXC1dP1xkKlwuP1xkK2VbXCtcLV0/XGQrL2dpLAogICAgICAgIHpyID0gLyheWyNcLl1bYS16XXxbYS15XVthLXpdKS9pLAogICAgICAgIFlyID0gTWF0aC5QSSAvIDE4MCwKICAgICAgICBYciA9IDE4MCAvIE1hdGguUEksCiAgICAgICAganIgPSBNYXRoLnNpbiwKICAgICAgICBWciA9IE1hdGguY29zLAogICAgICAgIFVyID0gTWF0aC5hYnMsCiAgICAgICAgV3IgPSBNYXRoLnNxcnQsCiAgICAgICAgcXIgPSBNYXRoLmF0YW4yLAogICAgICAgIEdyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQKICAgICAgICB9LAogICAgICAgIEhyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIHQKICAgICAgICB9LAogICAgICAgIFFyID0ge30sCiAgICAgICAgS3IgPSB7fSwKICAgICAgICBaciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoKHQgKyAxZTgpICUgMSAqIDFlNSkgLyAxZTUgfHwgKHQgPCAwID8gMCA6IDEpCiAgICAgICAgfSwKICAgICAgICAkciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoMWU1ICogdCkgLyAxZTUgfHwgMAogICAgICAgIH0sCiAgICAgICAgSnIgPSBmdW5jdGlvbih0LCBlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBpID0gdFtlXSwKICAgICAgICAgICAgICAgIHUgPSAxID09PSByID8gNiA6IGhpKGksIG4sIHIpOwogICAgICAgICAgICBpZiAodSAmJiB1ICsgbiArIDIgPCBpLmxlbmd0aCkgcmV0dXJuIHQuc3BsaWNlKGUsIDAsIGkuc2xpY2UoMCwgbiArIHUgKyAyKSksIGkuc3BsaWNlKDAsIG4gKyB1KSwgMQogICAgICAgIH0sCiAgICAgICAgdGkgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnRvdGFsTGVuZ3RoID0gdC50b3RhbExlbmd0aCwgdC5zYW1wbGVzID8gKGUuc2FtcGxlcyA9IHQuc2FtcGxlcy5zbGljZSgwKSwgZS5sb29rdXAgPSB0Lmxvb2t1cC5zbGljZSgwKSwgZS5taW5MZW5ndGggPSB0Lm1pbkxlbmd0aCwgZS5yZXNvbHV0aW9uID0gdC5yZXNvbHV0aW9uKSA6IGUudG90YWxQb2ludHMgPSB0LnRvdGFsUG9pbnRzLCBlCiAgICAgICAgfSwKICAgICAgICBlaSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSB0Lmxlbmd0aCwKICAgICAgICAgICAgICAgIHIgPSB0W24gLSAxXSB8fCBbXSwKICAgICAgICAgICAgICAgIGkgPSByLmxlbmd0aDsKICAgICAgICAgICAgZVswXSA9PT0gcltpIC0gMl0gJiYgZVsxXSA9PT0gcltpIC0gMV0gJiYgKGUgPSByLmNvbmNhdChlLnNsaWNlKDIpKSwgbi0tKSwgdFtuXSA9IGUKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIG5pKHQpIHsKICAgICAgICB2YXIgZSwgbiA9ICh0ID0gR3IodCkgJiYgenIudGVzdCh0KSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpIHx8IHQpLmdldEF0dHJpYnV0ZSA/IHQgOiAwOwogICAgICAgIHJldHVybiBuICYmICh0ID0gdC5nZXRBdHRyaWJ1dGUoImQiKSkgPyAobi5fZ3NQYXRoIHx8IChuLl9nc1BhdGggPSB7fSksIChlID0gbi5fZ3NQYXRoW3RdKSAmJiAhZS5fZGlydHkgPyBlIDogbi5fZ3NQYXRoW3RdID0gZGkodCkpIDogdCA/IEdyKHQpID8gZGkodCkgOiBIcih0WzBdKSA/IFt0XSA6IHQgOiBjb25zb2xlLndhcm4oIkV4cGVjdGluZyBhIDxwYXRoPiBlbGVtZW50IG9yIGFuIFNWRyBwYXRoIGRhdGEgc3RyaW5nIikKICAgIH0KCiAgICBmdW5jdGlvbiByaSh0KSB7CiAgICAgICAgdmFyIGUsIG4gPSAwOwogICAgICAgIGZvciAodC5yZXZlcnNlKCk7IG4gPCB0Lmxlbmd0aDsgbiArPSAyKSBlID0gdFtuXSwgdFtuXSA9IHRbbiArIDFdLCB0W24gKyAxXSA9IGU7CiAgICAgICAgdC5yZXZlcnNlZCA9ICF0LnJldmVyc2VkCiAgICB9CiAgICB2YXIgaWkgPSB7CiAgICAgICAgcmVjdDogInJ4LHJ5LHgseSx3aWR0aCxoZWlnaHQiLAogICAgICAgIGNpcmNsZTogInIsY3gsY3kiLAogICAgICAgIGVsbGlwc2U6ICJyeCxyeSxjeCxjeSIsCiAgICAgICAgbGluZTogIngxLHgyLHkxLHkyIgogICAgfTsKCiAgICBmdW5jdGlvbiB1aSh0LCBlKSB7CiAgICAgICAgdmFyIG4sIHIsIGksIHUsIHMsIG8sIGEsIGwsIGgsIGYsIEQsIHAsIGMsIGQsIGcsIF8sIG0sIHYsIHksIEMsIHgsIEYsIHcgPSB0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSwKICAgICAgICAgICAgRSA9IC41NTIyODQ3NDk4MzE7CiAgICAgICAgcmV0dXJuICJwYXRoIiAhPT0gdyAmJiB0LmdldEJCb3ggPyAobyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgdmFyIG4sIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInBhdGgiKSwKICAgICAgICAgICAgICAgIGkgPSBbXS5zbGljZS5jYWxsKHQuYXR0cmlidXRlcyksCiAgICAgICAgICAgICAgICB1ID0gaS5sZW5ndGg7CiAgICAgICAgICAgIGZvciAoZSA9ICIsIiArIGUgKyAiLCI7IC0tdSA+IC0xOykgbiA9IGlbdV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwgZS5pbmRleE9mKCIsIiArIG4gKyAiLCIpIDwgMCAmJiByLnNldEF0dHJpYnV0ZU5TKG51bGwsIG4sIGlbdV0ubm9kZVZhbHVlKTsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9KHQsICJ4LHksd2lkdGgsaGVpZ2h0LGN4LGN5LHJ4LHJ5LHIseDEseDIseTEseTIscG9pbnRzIiksIEYgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSBlID8gZS5zcGxpdCgiLCIpIDogW10sIHIgPSB7fSwgaSA9IG4ubGVuZ3RoOyAtLWkgPiAtMTspIHJbbltpXV0gPSArdC5nZXRBdHRyaWJ1dGUobltpXSkgfHwgMDsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9KHQsIGlpW3ddKSwgInJlY3QiID09PSB3ID8gKHUgPSBGLnJ4LCBzID0gRi5yeSB8fCB1LCByID0gRi54LCBpID0gRi55LCBmID0gRi53aWR0aCAtIDIgKiB1LCBEID0gRi5oZWlnaHQgLSAyICogcywgbiA9IHUgfHwgcyA/ICJNIiArIChfID0gKGQgPSAoYyA9IHIgKyB1KSArIGYpICsgdSkgKyAiLCIgKyAodiA9IGkgKyBzKSArICIgViIgKyAoeSA9IHYgKyBEKSArICIgQyIgKyBbXywgQyA9IHkgKyBzICogRSwgZyA9IGQgKyB1ICogRSwgeCA9IHkgKyBzLCBkLCB4LCBkIC0gKGQgLSBjKSAvIDMsIHgsIGMgKyAoZCAtIGMpIC8gMywgeCwgYywgeCwgcCA9IHIgKyB1ICogKDEgLSBFKSwgeCwgciwgQywgciwgeSwgciwgeSAtICh5IC0gdikgLyAzLCByLCB2ICsgKHkgLSB2KSAvIDMsIHIsIHYsIHIsIG0gPSBpICsgcyAqICgxIC0gRSksIHAsIGksIGMsIGksIGMgKyAoZCAtIGMpIC8gMywgaSwgZCAtIChkIC0gYykgLyAzLCBpLCBkLCBpLCBnLCBpLCBfLCBtLCBfLCB2XS5qb2luKCIsIikgKyAieiIgOiAiTSIgKyAociArIGYpICsgIiwiICsgaSArICIgdiIgKyBEICsgIiBoIiArIC1mICsgIiB2IiArIC1EICsgIiBoIiArIGYgKyAieiIpIDogImNpcmNsZSIgPT09IHcgfHwgImVsbGlwc2UiID09PSB3ID8gKCJjaXJjbGUiID09PSB3ID8gbCA9ICh1ID0gcyA9IEYucikgKiBFIDogKHUgPSBGLnJ4LCBsID0gKHMgPSBGLnJ5KSAqIEUpLCBuID0gIk0iICsgKChyID0gRi5jeCkgKyB1KSArICIsIiArIChpID0gRi5jeSkgKyAiIEMiICsgW3IgKyB1LCBpICsgbCwgciArIChhID0gdSAqIEUpLCBpICsgcywgciwgaSArIHMsIHIgLSBhLCBpICsgcywgciAtIHUsIGkgKyBsLCByIC0gdSwgaSwgciAtIHUsIGkgLSBsLCByIC0gYSwgaSAtIHMsIHIsIGkgLSBzLCByICsgYSwgaSAtIHMsIHIgKyB1LCBpIC0gbCwgciArIHUsIGldLmpvaW4oIiwiKSArICJ6IikgOiAibGluZSIgPT09IHcgPyBuID0gIk0iICsgRi54MSArICIsIiArIEYueTEgKyAiIEwiICsgRi54MiArICIsIiArIEYueTIgOiAicG9seWxpbmUiICE9PSB3ICYmICJwb2x5Z29uIiAhPT0gdyB8fCAobiA9ICJNIiArIChyID0gKGggPSAodC5nZXRBdHRyaWJ1dGUoInBvaW50cyIpICsgIiIpLm1hdGNoKFJyKSB8fCBbXSkuc2hpZnQoKSkgKyAiLCIgKyAoaSA9IGguc2hpZnQoKSkgKyAiIEwiICsgaC5qb2luKCIsIiksICJwb2x5Z29uIiA9PT0gdyAmJiAobiArPSAiLCIgKyByICsgIiwiICsgaSArICJ6IikpLCBvLnNldEF0dHJpYnV0ZSgiZCIsIG1pKG8uX2dzUmF3UGF0aCA9IGRpKG4pKSksIGUgJiYgdC5wYXJlbnROb2RlICYmICh0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8sIHQpLCB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCkpLCBvKSA6IHQKICAgIH0KCiAgICBmdW5jdGlvbiBzaSh0LCBlLCBuKSB7CiAgICAgICAgdmFyIHIsIGkgPSB0W2VdLAogICAgICAgICAgICB1ID0gdFtlICsgMl0sCiAgICAgICAgICAgIHMgPSB0W2UgKyA0XTsKICAgICAgICByZXR1cm4gaSArPSAodSAtIGkpICogbiwgaSArPSAoKHUgKz0gKHMgLSB1KSAqIG4pIC0gaSkgKiBuLCByID0gdSArIChzICsgKHRbZSArIDZdIC0gcykgKiBuIC0gdSkgKiBuIC0gaSwgaSA9IHRbZSArIDFdLCBpICs9ICgodSA9IHRbZSArIDNdKSAtIGkpICogbiwgaSArPSAoKHUgKz0gKChzID0gdFtlICsgNV0pIC0gdSkgKiBuKSAtIGkpICogbiwgJHIocXIodSArIChzICsgKHRbZSArIDddIC0gcykgKiBuIC0gdSkgKiBuIC0gaSwgcikgKiBYcikKICAgIH0KCiAgICBmdW5jdGlvbiBvaSh0LCBlLCBuKSB7CiAgICAgICAgdm9pZCAwID09PSBuICYmIChuID0gMSk7CiAgICAgICAgdmFyIHIgPSAoZSA9IGUgfHwgMCkgPiBuLAogICAgICAgICAgICBpID0gTWF0aC5tYXgoMCwgfn4oVXIobiAtIGUpIC0gMWUtOCkpOwogICAgICAgIGlmIChyICYmIChyID0gbiwgbiA9IGUsIGUgPSByLCByID0gMSwgaSAtPSBpID8gMSA6IDApLCBlIDwgMCB8fCBuIDwgMCkgewogICAgICAgICAgICB2YXIgdSA9IDEgKyB+fk1hdGgubWluKGUsIG4pOwogICAgICAgICAgICBlICs9IHUsIG4gKz0gdQogICAgICAgIH0KICAgICAgICB2YXIgcywgbywgYSwgbCwgaCwgZiwgRCwgcCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBbXSwgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSBlW25dID0gdGkodFtuXSwgdFtuXS5zbGljZSgwKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGkodCwgZSkKICAgICAgICAgICAgfSh0LnRvdGFsTGVuZ3RoID8gdCA6IGxpKHQpKSwKICAgICAgICAgICAgYyA9IG4gPiAxLAogICAgICAgICAgICBkID0gZmkocCwgZSwgUXIsICEwKSwKICAgICAgICAgICAgZyA9IGZpKHAsIG4sIEtyKSwKICAgICAgICAgICAgXyA9IGcuc2VnbWVudCwKICAgICAgICAgICAgbSA9IGQuc2VnbWVudCwKICAgICAgICAgICAgdiA9IGcuc2VnSW5kZXgsCiAgICAgICAgICAgIHkgPSBkLnNlZ0luZGV4LAogICAgICAgICAgICBDID0gZy5pLAogICAgICAgICAgICB4ID0gZC5pLAogICAgICAgICAgICBGID0geSA9PT0gdiwKICAgICAgICAgICAgdyA9IEMgPT09IHggJiYgRiwKICAgICAgICAgICAgRSA9IEYgJiYgeCA+IEMgfHwgdyAmJiBkLnQgPiBnLnQ7CiAgICAgICAgaWYgKGMgfHwgaSkgewogICAgICAgICAgICBpZiAoSnIocCwgeSwgeCwgZC50KSAmJiAocyA9IDEsIHkrKywgdyA/IEUgPyBnLnQgLz0gZC50IDogKGcudCA9IChnLnQgLSBkLnQpIC8gKDEgLSBkLnQpLCB2KyssIEMgPSAwKSA6IHkgPD0gdiArIDEgJiYgIUUgJiYgKHYrKywgRiAmJiAoQyAtPSB4KSkpLCBnLnQgPyBKcihwLCB2LCBDLCBnLnQpICYmIChFICYmIHMgJiYgeSsrLCByICYmIHYrKykgOiAodi0tLCByICYmIHktLSksIGwgPSBbXSwgZiA9IDEgKyAoaCA9IHAubGVuZ3RoKSAqIGksIEQgPSB5LCByKQogICAgICAgICAgICAgICAgZm9yIChmICs9IChoIC0gKHYgPSAodiB8fCBoKSAtIDEpICsgeSkgJSBoLCBhID0gMDsgYSA8IGY7IGErKykgZWkobCwgcFtEXSksIEQgPSAoRCB8fCBoKSAtIDE7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAoZiArPSAoaCAtIHkgKyB2KSAlIGgsIGEgPSAwOyBhIDwgZjsgYSsrKSBlaShsLCBwW0QrKyAlIGhdKTsKICAgICAgICAgICAgcCA9IGwKICAgICAgICB9IGVsc2UgaWYgKG8gPSAxID09PSBnLnQgPyA2IDogaGkoXywgQywgZy50KSwgZSAhPT0gbikKICAgICAgICAgICAgZm9yIChzID0gaGkobSwgeCwgdyA/IGQudCAvIGcudCA6IGQudCksIEYgJiYgKG8gKz0gcyksIF8uc3BsaWNlKEMgKyBvICsgMiksIChzIHx8IHgpICYmIG0uc3BsaWNlKDAsIHggKyBzKSwgYSA9IHAubGVuZ3RoOyBhLS07KShhIDwgeSB8fCBhID4gdikgJiYgcC5zcGxpY2UoYSwgMSk7CiAgICAgICAgZWxzZSBfLmFuZ2xlID0gc2koXywgQyArIG8sIDApLCBkID0gX1tDICs9IG9dLCBnID0gX1tDICsgMV0sIF8ubGVuZ3RoID0gXy50b3RhbExlbmd0aCA9IDAsIF8udG90YWxQb2ludHMgPSBwLnRvdGFsUG9pbnRzID0gOCwgXy5wdXNoKGQsIGcsIGQsIGcsIGQsIGcsIGQsIGcpOwogICAgICAgIHJldHVybiByICYmIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSB0Lmxlbmd0aDsKICAgICAgICAgICAgZm9yIChlIHx8IHQucmV2ZXJzZSgpOyBuLS07KSB0W25dLnJldmVyc2VkIHx8IHJpKHRbbl0pCiAgICAgICAgfShwLCBjIHx8IGkpLCBwLnRvdGFsTGVuZ3RoID0gMCwgcAogICAgfQoKICAgIGZ1bmN0aW9uIGFpKHQsIGUsIG4pIHsKICAgICAgICBlID0gZSB8fCAwLCB0LnNhbXBsZXMgfHwgKHQuc2FtcGxlcyA9IFtdLCB0Lmxvb2t1cCA9IFtdKTsKICAgICAgICB2YXIgciwgaSwgdSwgcywgbywgYSwgbCwgaCwgZiwgRCwgcCwgYywgZCwgZywgXywgbSwgdiwgeSA9IH5+dC5yZXNvbHV0aW9uIHx8IDEyLAogICAgICAgICAgICBDID0gMSAvIHksCiAgICAgICAgICAgIHggPSBuID8gZSArIDYgKiBuICsgMSA6IHQubGVuZ3RoLAogICAgICAgICAgICBGID0gdFtlXSwKICAgICAgICAgICAgdyA9IHRbZSArIDFdLAogICAgICAgICAgICBFID0gZSA/IGUgLyA2ICogeSA6IDAsCiAgICAgICAgICAgIGIgPSB0LnNhbXBsZXMsCiAgICAgICAgICAgIFQgPSB0Lmxvb2t1cCwKICAgICAgICAgICAgQSA9IChlID8gdC5taW5MZW5ndGggOiAxZTgpIHx8IDFlOCwKICAgICAgICAgICAgTSA9IGJbRSArIG4gKiB5IC0gMV0sCiAgICAgICAgICAgIE8gPSBlID8gYltFIC0gMV0gOiAwOwogICAgICAgIGZvciAoYi5sZW5ndGggPSBULmxlbmd0aCA9IDAsIGkgPSBlICsgMjsgaSA8IHg7IGkgKz0gNikgewogICAgICAgICAgICBpZiAodSA9IHRbaSArIDRdIC0gRiwgcyA9IHRbaSArIDJdIC0gRiwgbyA9IHRbaV0gLSBGLCBoID0gdFtpICsgNV0gLSB3LCBmID0gdFtpICsgM10gLSB3LCBEID0gdFtpICsgMV0gLSB3LCBhID0gbCA9IHAgPSBjID0gMCwgVXIodSkgPCAxZS01ICYmIFVyKGgpIDwgMWUtNSAmJiBVcihvKSArIFVyKEQpIDwgMWUtNSkgdC5sZW5ndGggPiA4ICYmICh0LnNwbGljZShpLCA2KSwgaSAtPSA2LCB4IC09IDYpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKHIgPSAxOyByIDw9IHk7IHIrKykgYSA9IGwgLSAobCA9ICgoZyA9IEMgKiByKSAqIGcgKiB1ICsgMyAqIChkID0gMSAtIGcpICogKGcgKiBzICsgZCAqIG8pKSAqIGcpLCBwID0gYyAtIChjID0gKGcgKiBnICogaCArIDMgKiBkICogKGcgKiBmICsgZCAqIEQpKSAqIGcpLCAobSA9IFdyKHAgKiBwICsgYSAqIGEpKSA8IEEgJiYgKEEgPSBtKSwgTyArPSBtLCBiW0UrK10gPSBPOwogICAgICAgICAgICBGICs9IHUsIHcgKz0gaAogICAgICAgIH0KICAgICAgICBpZiAoTSkKICAgICAgICAgICAgZm9yIChNIC09IE87IEUgPCBiLmxlbmd0aDsgRSsrKSBiW0VdICs9IE07CiAgICAgICAgaWYgKGIubGVuZ3RoICYmIEEpCiAgICAgICAgICAgIGZvciAodC50b3RhbExlbmd0aCA9IHYgPSBiW2IubGVuZ3RoIC0gMV0gfHwgMCwgdC5taW5MZW5ndGggPSBBLCBtID0gXyA9IDAsIHIgPSAwOyByIDwgdjsgciArPSBBKSBUW20rK10gPSBiW19dIDwgciA/ICsrXyA6IF87CiAgICAgICAgZWxzZSB0LnRvdGFsTGVuZ3RoID0gYlswXSA9IDA7CiAgICAgICAgcmV0dXJuIGUgPyBPIC0gYltlIC8gMiAtIDFdIDogTwogICAgfQoKICAgIGZ1bmN0aW9uIGxpKHQsIGUpIHsKICAgICAgICB2YXIgbiwgciwgaTsKICAgICAgICBmb3IgKGkgPSBuID0gciA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKSB0W2ldLnJlc29sdXRpb24gPSB+fmUgfHwgMTIsIHIgKz0gdFtpXS5sZW5ndGgsIG4gKz0gYWkodFtpXSk7CiAgICAgICAgcmV0dXJuIHQudG90YWxQb2ludHMgPSByLCB0LnRvdGFsTGVuZ3RoID0gbiwgdAogICAgfQoKICAgIGZ1bmN0aW9uIGhpKHQsIGUsIG4pIHsKICAgICAgICBpZiAobiA8PSAwIHx8IG4gPj0gMSkgcmV0dXJuIDA7CiAgICAgICAgdmFyIHIgPSB0W2VdLAogICAgICAgICAgICBpID0gdFtlICsgMV0sCiAgICAgICAgICAgIHUgPSB0W2UgKyAyXSwKICAgICAgICAgICAgcyA9IHRbZSArIDNdLAogICAgICAgICAgICBvID0gdFtlICsgNF0sCiAgICAgICAgICAgIGEgPSB0W2UgKyA1XSwKICAgICAgICAgICAgbCA9IHIgKyAodSAtIHIpICogbiwKICAgICAgICAgICAgaCA9IHUgKyAobyAtIHUpICogbiwKICAgICAgICAgICAgZiA9IGkgKyAocyAtIGkpICogbiwKICAgICAgICAgICAgRCA9IHMgKyAoYSAtIHMpICogbiwKICAgICAgICAgICAgcCA9IGwgKyAoaCAtIGwpICogbiwKICAgICAgICAgICAgYyA9IGYgKyAoRCAtIGYpICogbiwKICAgICAgICAgICAgZCA9IG8gKyAodFtlICsgNl0gLSBvKSAqIG4sCiAgICAgICAgICAgIGcgPSBhICsgKHRbZSArIDddIC0gYSkgKiBuOwogICAgICAgIHJldHVybiBoICs9IChkIC0gaCkgKiBuLCBEICs9IChnIC0gRCkgKiBuLCB0LnNwbGljZShlICsgMiwgNCwgJHIobCksICRyKGYpLCAkcihwKSwgJHIoYyksICRyKHAgKyAoaCAtIHApICogbiksICRyKGMgKyAoRCAtIGMpICogbiksICRyKGgpLCAkcihEKSwgJHIoZCksICRyKGcpKSwgdC5zYW1wbGVzICYmIHQuc2FtcGxlcy5zcGxpY2UoZSAvIDYgKiB0LnJlc29sdXRpb24gfCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgNgogICAgfQoKICAgIGZ1bmN0aW9uIGZpKHQsIGUsIG4sIHIpIHsKICAgICAgICBuID0gbiB8fCB7fSwgdC50b3RhbExlbmd0aCB8fCBsaSh0KSwgKGUgPCAwIHx8IGUgPiAxKSAmJiAoZSA9IFpyKGUpKTsKICAgICAgICB2YXIgaSwgdSwgcywgbywgYSwgbCwgaCwgZiA9IDAsCiAgICAgICAgICAgIEQgPSB0WzBdOwogICAgICAgIGlmICh0Lmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgZm9yIChzID0gdC50b3RhbExlbmd0aCAqIGUsIGEgPSBsID0gMDsKICAgICAgICAgICAgICAgIChhICs9IHRbbCsrXS50b3RhbExlbmd0aCkgPCBzOykgZiA9IGw7CiAgICAgICAgICAgIGUgPSAocyAtIChvID0gYSAtIChEID0gdFtmXSkudG90YWxMZW5ndGgpKSAvIChhIC0gbykgfHwgMAogICAgICAgIH0KICAgICAgICByZXR1cm4gaSA9IEQuc2FtcGxlcywgdSA9IEQucmVzb2x1dGlvbiwgcyA9IEQudG90YWxMZW5ndGggKiBlLCBvID0gKGwgPSBELmxvb2t1cFt+fihzIC8gRC5taW5MZW5ndGgpXSB8fCAwKSA/IGlbbCAtIDFdIDogMCwgKGEgPSBpW2xdKSA8IHMgJiYgKG8gPSBhLCBhID0gaVsrK2xdKSwgaCA9IDEgLyB1ICogKChzIC0gbykgLyAoYSAtIG8pICsgbCAlIHUpLCBsID0gNiAqIH5+KGwgLyB1KSwgciAmJiAxID09PSBoICYmIChsICsgNiA8IEQubGVuZ3RoID8gKGwgKz0gNiwgaCA9IDApIDogZiArIDEgPCB0Lmxlbmd0aCAmJiAobCA9IGggPSAwLCBEID0gdFsrK2ZdKSksIG4udCA9IGgsIG4uaSA9IGwsIG4ucGF0aCA9IHQsIG4uc2VnbWVudCA9IEQsIG4uc2VnSW5kZXggPSBmLCBuCiAgICB9CgogICAgZnVuY3Rpb24gRGkodCwgZSwgbiwgcikgewogICAgICAgIHZhciBpLCB1LCBzLCBvLCBhLCBsLCBoLCBmLCBELCBwID0gdFswXSwKICAgICAgICAgICAgYyA9IHIgfHwge307CiAgICAgICAgaWYgKChlIDwgMCB8fCBlID4gMSkgJiYgKGUgPSBacihlKSksIHQubGVuZ3RoID4gMSkgewogICAgICAgICAgICBmb3IgKHMgPSB0LnRvdGFsTGVuZ3RoICogZSwgYSA9IGwgPSAwOwogICAgICAgICAgICAgICAgKGEgKz0gdFtsKytdLnRvdGFsTGVuZ3RoKSA8IHM7KSBwID0gdFtsXTsKICAgICAgICAgICAgZSA9IChzIC0gKG8gPSBhIC0gcC50b3RhbExlbmd0aCkpIC8gKGEgLSBvKSB8fCAwCiAgICAgICAgfQogICAgICAgIHJldHVybiBpID0gcC5zYW1wbGVzLCB1ID0gcC5yZXNvbHV0aW9uLCBzID0gcC50b3RhbExlbmd0aCAqIGUsIG8gPSAobCA9IHAubG9va3VwW35+KHMgLyBwLm1pbkxlbmd0aCldIHx8IDApID8gaVtsIC0gMV0gOiAwLCAoYSA9IGlbbF0pIDwgcyAmJiAobyA9IGEsIGEgPSBpWysrbF0pLCBEID0gMSAtIChoID0gMSAvIHUgKiAoKHMgLSBvKSAvIChhIC0gbykgKyBsICUgdSkgfHwgMCksIGYgPSBwW2wgPSA2ICogfn4obCAvIHUpXSwgYy54ID0gJHIoKGggKiBoICogKHBbbCArIDZdIC0gZikgKyAzICogRCAqIChoICogKHBbbCArIDRdIC0gZikgKyBEICogKHBbbCArIDJdIC0gZikpKSAqIGggKyBmKSwgYy55ID0gJHIoKGggKiBoICogKHBbbCArIDddIC0gKGYgPSBwW2wgKyAxXSkpICsgMyAqIEQgKiAoaCAqIChwW2wgKyA1XSAtIGYpICsgRCAqIChwW2wgKyAzXSAtIGYpKSkgKiBoICsgZiksIG4gJiYgKGMuYW5nbGUgPSBwLnRvdGFsTGVuZ3RoID8gc2kocCwgbCwgaCA+PSAxID8gMSAtIDFlLTkgOiBoIHx8IDFlLTkpIDogcC5hbmdsZSB8fCAwKSwgYwogICAgfQoKICAgIGZ1bmN0aW9uIHBpKHQsIGUsIG4sIHIsIGksIHUsIHMpIHsKICAgICAgICBmb3IgKHZhciBvLCBhLCBsLCBoLCBmLCBEID0gdC5sZW5ndGg7IC0tRCA+IC0xOykKICAgICAgICAgICAgZm9yIChhID0gKG8gPSB0W0RdKS5sZW5ndGgsIGwgPSAwOyBsIDwgYTsgbCArPSAyKSBoID0gb1tsXSwgZiA9IG9bbCArIDFdLCBvW2xdID0gaCAqIGUgKyBmICogciArIHUsIG9bbCArIDFdID0gaCAqIG4gKyBmICogaSArIHM7CiAgICAgICAgcmV0dXJuIHQuX2RpcnR5ID0gMSwgdAogICAgfQoKICAgIGZ1bmN0aW9uIGNpKHQsIGUsIG4sIHIsIGksIHUsIHMsIG8sIGEpIHsKICAgICAgICBpZiAodCAhPT0gbyB8fCBlICE9PSBhKSB7CiAgICAgICAgICAgIG4gPSBVcihuKSwgciA9IFVyKHIpOwogICAgICAgICAgICB2YXIgbCA9IGkgJSAzNjAgKiBZciwKICAgICAgICAgICAgICAgIGggPSBWcihsKSwKICAgICAgICAgICAgICAgIGYgPSBqcihsKSwKICAgICAgICAgICAgICAgIEQgPSBNYXRoLlBJLAogICAgICAgICAgICAgICAgcCA9IDIgKiBELAogICAgICAgICAgICAgICAgYyA9ICh0IC0gbykgLyAyLAogICAgICAgICAgICAgICAgZCA9IChlIC0gYSkgLyAyLAogICAgICAgICAgICAgICAgZyA9IGggKiBjICsgZiAqIGQsCiAgICAgICAgICAgICAgICBfID0gLWYgKiBjICsgaCAqIGQsCiAgICAgICAgICAgICAgICBtID0gZyAqIGcsCiAgICAgICAgICAgICAgICB2ID0gXyAqIF8sCiAgICAgICAgICAgICAgICB5ID0gbSAvIChuICogbikgKyB2IC8gKHIgKiByKTsKICAgICAgICAgICAgeSA+IDEgJiYgKG4gPSBXcih5KSAqIG4sIHIgPSBXcih5KSAqIHIpOwogICAgICAgICAgICB2YXIgQyA9IG4gKiBuLAogICAgICAgICAgICAgICAgeCA9IHIgKiByLAogICAgICAgICAgICAgICAgRiA9IChDICogeCAtIEMgKiB2IC0geCAqIG0pIC8gKEMgKiB2ICsgeCAqIG0pOwogICAgICAgICAgICBGIDwgMCAmJiAoRiA9IDApOwogICAgICAgICAgICB2YXIgdyA9ICh1ID09PSBzID8gLTEgOiAxKSAqIFdyKEYpLAogICAgICAgICAgICAgICAgRSA9IHcgKiAobiAqIF8gLyByKSwKICAgICAgICAgICAgICAgIGIgPSB3ICogKC1yICogZyAvIG4pLAogICAgICAgICAgICAgICAgVCA9ICh0ICsgbykgLyAyICsgKGggKiBFIC0gZiAqIGIpLAogICAgICAgICAgICAgICAgQSA9IChlICsgYSkgLyAyICsgKGYgKiBFICsgaCAqIGIpLAogICAgICAgICAgICAgICAgTSA9IChnIC0gRSkgLyBuLAogICAgICAgICAgICAgICAgTyA9IChfIC0gYikgLyByLAogICAgICAgICAgICAgICAgUyA9ICgtZyAtIEUpIC8gbiwKICAgICAgICAgICAgICAgIFAgPSAoLV8gLSBiKSAvIHIsCiAgICAgICAgICAgICAgICBCID0gTSAqIE0gKyBPICogTywKICAgICAgICAgICAgICAgIGsgPSAoTyA8IDAgPyAtMSA6IDEpICogTWF0aC5hY29zKE0gLyBXcihCKSksCiAgICAgICAgICAgICAgICBMID0gKE0gKiBQIC0gTyAqIFMgPCAwID8gLTEgOiAxKSAqIE1hdGguYWNvcygoTSAqIFMgKyBPICogUCkgLyBXcihCICogKFMgKiBTICsgUCAqIFApKSk7CiAgICAgICAgICAgIGlzTmFOKEwpICYmIChMID0gRCksICFzICYmIEwgPiAwID8gTCAtPSBwIDogcyAmJiBMIDwgMCAmJiAoTCArPSBwKSwgayAlPSBwLCBMICU9IHA7CiAgICAgICAgICAgIHZhciBOLCBSID0gTWF0aC5jZWlsKFVyKEwpIC8gKHAgLyA0KSksCiAgICAgICAgICAgICAgICBJID0gW10sCiAgICAgICAgICAgICAgICB6ID0gTCAvIFIsCiAgICAgICAgICAgICAgICBZID0gNCAvIDMgKiBqcih6IC8gMikgLyAoMSArIFZyKHogLyAyKSksCiAgICAgICAgICAgICAgICBYID0gaCAqIG4sCiAgICAgICAgICAgICAgICBqID0gZiAqIG4sCiAgICAgICAgICAgICAgICBWID0gZiAqIC1yLAogICAgICAgICAgICAgICAgVSA9IGggKiByOwogICAgICAgICAgICBmb3IgKE4gPSAwOyBOIDwgUjsgTisrKSBnID0gVnIoaSA9IGsgKyBOICogeiksIF8gPSBqcihpKSwgTSA9IFZyKGkgKz0geiksIE8gPSBqcihpKSwgSS5wdXNoKGcgLSBZICogXywgXyArIFkgKiBnLCBNICsgWSAqIE8sIE8gLSBZICogTSwgTSwgTyk7CiAgICAgICAgICAgIGZvciAoTiA9IDA7IE4gPCBJLmxlbmd0aDsgTiArPSAyKSBnID0gSVtOXSwgXyA9IElbTiArIDFdLCBJW05dID0gZyAqIFggKyBfICogViArIFQsIElbTiArIDFdID0gZyAqIGogKyBfICogVSArIEE7CiAgICAgICAgICAgIHJldHVybiBJW04gLSAyXSA9IG8sIElbTiAtIDFdID0gYSwgSQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkaSh0KSB7CiAgICAgICAgdmFyIGUsIG4sIHIsIGksIHUsIHMsIG8sIGEsIGwsIGgsIGYsIEQsIHAsIGMsIGQsIGcgPSAodCArICIiKS5yZXBsYWNlKElyLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSArdDsKICAgICAgICAgICAgICAgIHJldHVybiBlIDwgMWUtNCAmJiBlID4gLTFlLTQgPyAwIDogZQogICAgICAgICAgICB9KSkubWF0Y2goTnIpIHx8IFtdLAogICAgICAgICAgICBfID0gW10sCiAgICAgICAgICAgIG0gPSAwLAogICAgICAgICAgICB2ID0gMCwKICAgICAgICAgICAgeSA9IGcubGVuZ3RoLAogICAgICAgICAgICBDID0gMCwKICAgICAgICAgICAgeCA9ICJFUlJPUjogbWFsZm9ybWVkIHBhdGg6ICIgKyB0LAogICAgICAgICAgICBGID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICAgICAgaCA9IChuIC0gdCkgLyAzLCBmID0gKHIgLSBlKSAvIDMsIG8ucHVzaCh0ICsgaCwgZSArIGYsIG4gLSBoLCByIC0gZiwgbiwgcikKICAgICAgICAgICAgfTsKICAgICAgICBpZiAoIXQgfHwgIWlzTmFOKGdbMF0pIHx8IGlzTmFOKGdbMV0pKSByZXR1cm4gY29uc29sZS5sb2coeCksIF87CiAgICAgICAgZm9yIChlID0gMDsgZSA8IHk7IGUrKykKICAgICAgICAgICAgaWYgKHAgPSB1LCBpc05hTihnW2VdKSA/IHMgPSAodSA9IGdbZV0udG9VcHBlckNhc2UoKSkgIT09IGdbZV0gOiBlLS0sIHIgPSArZ1tlICsgMV0sIGkgPSArZ1tlICsgMl0sIHMgJiYgKHIgKz0gbSwgaSArPSB2KSwgZSB8fCAoYSA9IHIsIGwgPSBpKSwgIk0iID09PSB1KSBvICYmIChvLmxlbmd0aCA8IDggPyBfLmxlbmd0aCAtPSAxIDogQyArPSBvLmxlbmd0aCksIG0gPSBhID0gciwgdiA9IGwgPSBpLCBvID0gW3IsIGldLCBfLnB1c2gobyksIGUgKz0gMiwgdSA9ICJMIjsKICAgICAgICAgICAgZWxzZSBpZiAoIkMiID09PSB1KSBvIHx8IChvID0gWzAsIDBdKSwgcyB8fCAobSA9IHYgPSAwKSwgby5wdXNoKHIsIGksIG0gKyAxICogZ1tlICsgM10sIHYgKyAxICogZ1tlICsgNF0sIG0gKz0gMSAqIGdbZSArIDVdLCB2ICs9IDEgKiBnW2UgKyA2XSksIGUgKz0gNjsKICAgICAgICBlbHNlIGlmICgiUyIgPT09IHUpIGggPSBtLCBmID0gdiwgIkMiICE9PSBwICYmICJTIiAhPT0gcCB8fCAoaCArPSBtIC0gb1tvLmxlbmd0aCAtIDRdLCBmICs9IHYgLSBvW28ubGVuZ3RoIC0gM10pLCBzIHx8IChtID0gdiA9IDApLCBvLnB1c2goaCwgZiwgciwgaSwgbSArPSAxICogZ1tlICsgM10sIHYgKz0gMSAqIGdbZSArIDRdKSwgZSArPSA0OwogICAgICAgIGVsc2UgaWYgKCJRIiA9PT0gdSkgaCA9IG0gKyAyIC8gMyAqIChyIC0gbSksIGYgPSB2ICsgMiAvIDMgKiAoaSAtIHYpLCBzIHx8IChtID0gdiA9IDApLCBtICs9IDEgKiBnW2UgKyAzXSwgdiArPSAxICogZ1tlICsgNF0sIG8ucHVzaChoLCBmLCBtICsgMiAvIDMgKiAociAtIG0pLCB2ICsgMiAvIDMgKiAoaSAtIHYpLCBtLCB2KSwgZSArPSA0OwogICAgICAgIGVsc2UgaWYgKCJUIiA9PT0gdSkgaCA9IG0gLSBvW28ubGVuZ3RoIC0gNF0sIGYgPSB2IC0gb1tvLmxlbmd0aCAtIDNdLCBvLnB1c2gobSArIGgsIHYgKyBmLCByICsgMiAvIDMgKiAobSArIDEuNSAqIGggLSByKSwgaSArIDIgLyAzICogKHYgKyAxLjUgKiBmIC0gaSksIG0gPSByLCB2ID0gaSksIGUgKz0gMjsKICAgICAgICBlbHNlIGlmICgiSCIgPT09IHUpIEYobSwgdiwgbSA9IHIsIHYpLCBlICs9IDE7CiAgICAgICAgZWxzZSBpZiAoIlYiID09PSB1KSBGKG0sIHYsIG0sIHYgPSByICsgKHMgPyB2IC0gbSA6IDApKSwgZSArPSAxOwogICAgICAgIGVsc2UgaWYgKCJMIiA9PT0gdSB8fCAiWiIgPT09IHUpICJaIiA9PT0gdSAmJiAociA9IGEsIGkgPSBsLCBvLmNsb3NlZCA9ICEwKSwgKCJMIiA9PT0gdSB8fCBVcihtIC0gcikgPiAuNSB8fCBVcih2IC0gaSkgPiAuNSkgJiYgKEYobSwgdiwgciwgaSksICJMIiA9PT0gdSAmJiAoZSArPSAyKSksIG0gPSByLCB2ID0gaTsKICAgICAgICBlbHNlIGlmICgiQSIgPT09IHUpIHsKICAgICAgICAgICAgaWYgKGMgPSBnW2UgKyA0XSwgZCA9IGdbZSArIDVdLCBoID0gZ1tlICsgNl0sIGYgPSBnW2UgKyA3XSwgbiA9IDcsIGMubGVuZ3RoID4gMSAmJiAoYy5sZW5ndGggPCAzID8gKGYgPSBoLCBoID0gZCwgbi0tKSA6IChmID0gZCwgaCA9IGMuc3Vic3RyKDIpLCBuIC09IDIpLCBkID0gYy5jaGFyQXQoMSksIGMgPSBjLmNoYXJBdCgwKSksIEQgPSBjaShtLCB2LCArZ1tlICsgMV0sICtnW2UgKyAyXSwgK2dbZSArIDNdLCArYywgK2QsIChzID8gbSA6IDApICsgMSAqIGgsIChzID8gdiA6IDApICsgMSAqIGYpLCBlICs9IG4sIEQpCiAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgRC5sZW5ndGg7IG4rKykgby5wdXNoKERbbl0pOwogICAgICAgICAgICBtID0gb1tvLmxlbmd0aCAtIDJdLCB2ID0gb1tvLmxlbmd0aCAtIDFdCiAgICAgICAgfSBlbHNlIGNvbnNvbGUubG9nKHgpOwogICAgICAgIHJldHVybiAoZSA9IG8ubGVuZ3RoKSA8IDYgPyAoXy5wb3AoKSwgZSA9IDApIDogb1swXSA9PT0gb1tlIC0gMl0gJiYgb1sxXSA9PT0gb1tlIC0gMV0gJiYgKG8uY2xvc2VkID0gITApLCBfLnRvdGFsUG9pbnRzID0gQyArIGUsIF8KICAgIH0KCiAgICBmdW5jdGlvbiBnaSh0LCBlKSB7CiAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gMSk7CiAgICAgICAgZm9yICh2YXIgbiA9IHRbMF0sIHIgPSAwLCBpID0gW24sIHJdLCB1ID0gMjsgdSA8IHQubGVuZ3RoOyB1ICs9IDIpIGkucHVzaChuLCByLCB0W3VdLCByID0gKHRbdV0gLSBuKSAqIGUgLyAyLCBuID0gdFt1XSwgLXIpOwogICAgICAgIHJldHVybiBpCiAgICB9CgogICAgZnVuY3Rpb24gX2kodCwgZSwgbikgewogICAgICAgIHZhciByLCBpLCB1LCBzLCBvLCBhLCBsLCBoLCBmLCBELCBwLCBjLCBkLCBnLCBfID0gdC5sZW5ndGggLSAyLAogICAgICAgICAgICBtID0gK3RbMF0sCiAgICAgICAgICAgIHYgPSArdFsxXSwKICAgICAgICAgICAgeSA9ICt0WzJdLAogICAgICAgICAgICBDID0gK3RbM10sCiAgICAgICAgICAgIHggPSBbbSwgdiwgbSwgdl0sCiAgICAgICAgICAgIEYgPSB5IC0gbSwKICAgICAgICAgICAgdyA9IEMgLSB2LAogICAgICAgICAgICBFID0gTWF0aC5hYnModFtfXSAtIG0pIDwgLjAwMSAmJiBNYXRoLmFicyh0W18gKyAxXSAtIHYpIDwgLjAwMTsKICAgICAgICBmb3IgKGlzTmFOKG4pICYmIChuID0gTWF0aC5QSSAvIDEwKSwgRSAmJiAodC5wdXNoKHksIEMpLCB5ID0gbSwgQyA9IHYsIG0gPSB0W18gLSAyXSwgdiA9IHRbXyAtIDFdLCB0LnVuc2hpZnQobSwgdiksIF8gKz0gNCksIGUgPSBlIHx8IDAgPT09IGUgPyArZSA6IDEsIG8gPSAyOyBvIDwgXzsgbyArPSAyKSByID0gbSwgaSA9IHYsIG0gPSB5LCB2ID0gQywgYyA9IChhID0gRikgKiBhICsgKGggPSB3KSAqIGgsIGQgPSAoRiA9ICh5ID0gK3RbbyArIDJdKSAtIG0pICogRiArICh3ID0gKEMgPSArdFtvICsgM10pIC0gdikgKiB3LCBnID0gKGwgPSB5IC0gcikgKiBsICsgKGYgPSBDIC0gaSkgKiBmLCBwID0gKHUgPSBNYXRoLmFjb3MoKGMgKyBkIC0gZykgLyBXcig0ICogYyAqIGQpKSkgLyBNYXRoLlBJICogZSwgRCA9IFdyKGMpICogcCwgcCAqPSBXcihkKSwgbSA9PT0gciAmJiB2ID09PSBpIHx8ICh1ID4gbiA/IChzID0gcXIoZiwgbCksIHgucHVzaCgkcihtIC0gVnIocykgKiBEKSwgJHIodiAtIGpyKHMpICogRCksICRyKG0pLCAkcih2KSwgJHIobSArIFZyKHMpICogcCksICRyKHYgKyBqcihzKSAqIHApKSkgOiAocyA9IHFyKGgsIGEpLCB4LnB1c2goJHIobSAtIFZyKHMpICogRCksICRyKHYgLSBqcihzKSAqIEQpKSwgcyA9IHFyKHcsIEYpLCB4LnB1c2goJHIobSksICRyKHYpLCAkcihtICsgVnIocykgKiBwKSwgJHIodiArIGpyKHMpICogcCkpKSk7CiAgICAgICAgcmV0dXJuIHgucHVzaCgkcih5KSwgJHIoQyksICRyKHkpLCAkcihDKSksIEUgJiYgKHguc3BsaWNlKDAsIDYpLCB4Lmxlbmd0aCA9IHgubGVuZ3RoIC0gNiksIHgKICAgIH0KCiAgICBmdW5jdGlvbiBtaSh0KSB7CiAgICAgICAgSHIodFswXSkgJiYgKHQgPSBbdF0pOwogICAgICAgIHZhciBlLCBuLCByLCBpLCB1ID0gIiIsCiAgICAgICAgICAgIHMgPSB0Lmxlbmd0aDsKICAgICAgICBmb3IgKG4gPSAwOyBuIDwgczsgbisrKSB7CiAgICAgICAgICAgIGZvciAoaSA9IHRbbl0sIHUgKz0gIk0iICsgJHIoaVswXSkgKyAiLCIgKyAkcihpWzFdKSArICIgQyIsIGUgPSBpLmxlbmd0aCwgciA9IDI7IHIgPCBlOyByKyspIHUgKz0gJHIoaVtyKytdKSArICIsIiArICRyKGlbcisrXSkgKyAiICIgKyAkcihpW3IrK10pICsgIiwiICsgJHIoaVtyKytdKSArICIgIiArICRyKGlbcisrXSkgKyAiLCIgKyAkcihpW3JdKSArICIgIjsKICAgICAgICAgICAgaS5jbG9zZWQgJiYgKHUgKz0gInoiKQogICAgICAgIH0KICAgICAgICByZXR1cm4gdQogICAgfQogICAgLyohCiAgICAgKiBDdXN0b21FYXNlIDMuNS4xCiAgICAgKiBodHRwczovL2dyZWVuc29jay5jb20KICAgICAqCiAgICAgKiBAbGljZW5zZSBDb3B5cmlnaHQgMjAwOC0yMDIwLCBHcmVlblNvY2suIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhdCBodHRwczovL2dyZWVuc29jay5jb20vc3RhbmRhcmQtbGljZW5zZSBvciBmb3IKICAgICAqIENsdWIgR3JlZW5Tb2NrIG1lbWJlcnMsIHRoZSBhZ3JlZW1lbnQgaXNzdWVkIHdpdGggdGhhdCBtZW1iZXJzaGlwLgogICAgICogQGF1dGhvcjogSmFjayBEb3lsZSwgamFja0BncmVlbnNvY2suY29tCiAgICAgKi8KICAgIHZhciB2aSwgeWksIENpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB2aSB8fCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmICh2aSA9IHdpbmRvdy5nc2FwKSAmJiB2aS5yZWdpc3RlclBsdWdpbiAmJiB2aQogICAgICAgIH0sCiAgICAgICAgeGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgKHZpID0gQ2koKSkgPyAodmkucmVnaXN0ZXJFYXNlKCJfQ0UiLCBUaS5jcmVhdGUpLCB5aSA9IDEpIDogY29uc29sZS53YXJuKCJQbGVhc2UgZ3NhcC5yZWdpc3RlclBsdWdpbihDdXN0b21FYXNlKSIpCiAgICAgICAgfSwKICAgICAgICBGaSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIH5+KDFlMyAqIHQgKyAodCA8IDAgPyAtLjUgOiAuNSkpIC8gMWUzCiAgICAgICAgfSwKICAgICAgICB3aSA9IC9bLSs9XC5dKlxkK1tcLmVcLVwrXSpcZCpbZVwtXCtdKlxkKi9naSwKICAgICAgICBFaSA9IC9bY0xsc1NhQWhIdlZ0VHFRXS9nLAogICAgICAgIGJpID0gZnVuY3Rpb24gdChlLCBuLCByLCBpLCB1LCBzLCBvLCBhLCBsLCBoLCBmKSB7CiAgICAgICAgICAgIHZhciBELCBwID0gKGUgKyByKSAvIDIsCiAgICAgICAgICAgICAgICBjID0gKG4gKyBpKSAvIDIsCiAgICAgICAgICAgICAgICBkID0gKHIgKyB1KSAvIDIsCiAgICAgICAgICAgICAgICBnID0gKGkgKyBzKSAvIDIsCiAgICAgICAgICAgICAgICBfID0gKHUgKyBvKSAvIDIsCiAgICAgICAgICAgICAgICBtID0gKHMgKyBhKSAvIDIsCiAgICAgICAgICAgICAgICB2ID0gKHAgKyBkKSAvIDIsCiAgICAgICAgICAgICAgICB5ID0gKGMgKyBnKSAvIDIsCiAgICAgICAgICAgICAgICBDID0gKGQgKyBfKSAvIDIsCiAgICAgICAgICAgICAgICB4ID0gKGcgKyBtKSAvIDIsCiAgICAgICAgICAgICAgICBGID0gKHYgKyBDKSAvIDIsCiAgICAgICAgICAgICAgICB3ID0gKHkgKyB4KSAvIDIsCiAgICAgICAgICAgICAgICBFID0gbyAtIGUsCiAgICAgICAgICAgICAgICBiID0gYSAtIG4sCiAgICAgICAgICAgICAgICBUID0gTWF0aC5hYnMoKHIgLSBvKSAqIGIgLSAoaSAtIGEpICogRSksCiAgICAgICAgICAgICAgICBBID0gTWF0aC5hYnMoKHUgLSBvKSAqIGIgLSAocyAtIGEpICogRSk7CiAgICAgICAgICAgIHJldHVybiBoIHx8IChoID0gW3sKICAgICAgICAgICAgICAgIHg6IGUsCiAgICAgICAgICAgICAgICB5OiBuCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIHg6IG8sCiAgICAgICAgICAgICAgICB5OiBhCiAgICAgICAgICAgIH1dLCBmID0gMSksIGguc3BsaWNlKGYgfHwgaC5sZW5ndGggLSAxLCAwLCB7CiAgICAgICAgICAgICAgICB4OiBGLAogICAgICAgICAgICAgICAgeTogdwogICAgICAgICAgICB9KSwgKFQgKyBBKSAqIChUICsgQSkgPiBsICogKEUgKiBFICsgYiAqIGIpICYmIChEID0gaC5sZW5ndGgsIHQoZSwgbiwgcCwgYywgdiwgeSwgRiwgdywgbCwgaCwgZiksIHQoRiwgdywgQywgeCwgXywgbSwgbywgYSwgbCwgaCwgZiArIDEgKyAoaC5sZW5ndGggLSBEKSkpLCBoCiAgICAgICAgfSwKICAgICAgICBUaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgIHlpIHx8IHhpKCksIHRoaXMuaWQgPSB0LCB0aGlzLnNldERhdGEoZSwgbikKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZSA9IHQucHJvdG90eXBlOwogICAgICAgICAgICByZXR1cm4gZS5zZXREYXRhID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgZSA9IGUgfHwge307CiAgICAgICAgICAgICAgICB2YXIgbiwgciwgaSwgdSwgcywgbywgYSwgbCwgaCwgZiA9ICh0ID0gdCB8fCAiMCwwLDEsMSIpLm1hdGNoKHdpKSwKICAgICAgICAgICAgICAgICAgICBEID0gMSwKICAgICAgICAgICAgICAgICAgICBwID0gW10sCiAgICAgICAgICAgICAgICAgICAgYyA9IFtdLAogICAgICAgICAgICAgICAgICAgIGQgPSBlLnByZWNpc2lvbiB8fCAxLAogICAgICAgICAgICAgICAgICAgIGcgPSBkIDw9IDE7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhID0gdCwgKEVpLnRlc3QodCkgfHwgfnQuaW5kZXhPZigiTSIpICYmIHQuaW5kZXhPZigiQyIpIDwgMCkgJiYgKGYgPSBkaSh0KVswXSksIDQgPT09IChuID0gZi5sZW5ndGgpKSBmLnVuc2hpZnQoMCwgMCksIGYucHVzaCgxLCAxKSwgbiA9IDg7CiAgICAgICAgICAgICAgICBlbHNlIGlmICgobiAtIDIpICUgNikgdGhyb3cgIkludmFsaWQgQ3VzdG9tRWFzZSI7CiAgICAgICAgICAgICAgICBmb3IgKDAgPT0gK2ZbMF0gJiYgMSA9PSArZltuIC0gMl0gfHwgZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICBuIHx8IDAgPT09IG4gfHwgKG4gPSBNYXRoLm1heCgrdFt0Lmxlbmd0aCAtIDFdLCArdFsxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgaSA9IC0xICogK3RbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gLW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMSAvICgrdFtzIC0gMl0gKyBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAtZSB8fCAoTWF0aC5hYnMoK3RbcyAtIDFdIC0gK3RbMV0pIDwgLjAxICogKCt0W3MgLSAyXSAtICt0WzBdKSA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgbiA9IHQubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMWUyMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAxOyBlIDwgbjsgZSArPSA2KSArIHRbZV0gPCByICYmIChyID0gK3RbZV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQpICsgdSA6ICt0W3MgLSAxXSArIHUpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBhID8gMSAvIGEgOiAtbywgciA9IDA7IHIgPCBzOyByICs9IDIpIHRbcl0gPSAoK3Rbcl0gKyBpKSAqIG8sIHRbciArIDFdID0gKCt0W3IgKyAxXSArIHUpICogYQogICAgICAgICAgICAgICAgICAgIH0oZiwgZS5oZWlnaHQsIGUub3JpZ2luWSksIHRoaXMuc2VnbWVudCA9IGYsIHUgPSAyOyB1IDwgbjsgdSArPSA2KSByID0gewogICAgICAgICAgICAgICAgICAgIHg6ICtmW3UgLSAyXSwKICAgICAgICAgICAgICAgICAgICB5OiArZlt1IC0gMV0KICAgICAgICAgICAgICAgIH0sIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgeDogK2ZbdSArIDRdLAogICAgICAgICAgICAgICAgICAgIHk6ICtmW3UgKyA1XQogICAgICAgICAgICAgICAgfSwgcC5wdXNoKHIsIGkpLCBiaShyLngsIHIueSwgK2ZbdV0sICtmW3UgKyAxXSwgK2ZbdSArIDJdLCArZlt1ICsgM10sIGkueCwgaS55LCAxIC8gKDJlNSAqIGQpLCBwLCBwLmxlbmd0aCAtIDEpOwogICAgICAgICAgICAgICAgZm9yIChuID0gcC5sZW5ndGgsIHUgPSAwOyB1IDwgbjsgdSsrKSBhID0gcFt1XSwgbCA9IHBbdSAtIDFdIHx8IGEsIChhLnggPiBsLnggfHwgbC55ICE9PSBhLnkgJiYgbC54ID09PSBhLnggfHwgYSA9PT0gbCkgJiYgYS54IDw9IDEgPyAobC5jeCA9IGEueCAtIGwueCwgbC5jeSA9IGEueSAtIGwueSwgbC5uID0gYSwgbC5ueCA9IGEueCwgZyAmJiB1ID4gMSAmJiBNYXRoLmFicyhsLmN5IC8gbC5jeCAtIHBbdSAtIDJdLmN5IC8gcFt1IC0gMl0uY3gpID4gMiAmJiAoZyA9IDApLCBsLmN4IDwgRCAmJiAobC5jeCA/IEQgPSBsLmN4IDogKGwuY3ggPSAuMDAxLCB1ID09PSBuIC0gMSAmJiAobC54IC09IC4wMDEsIEQgPSBNYXRoLm1pbihELCAuMDAxKSwgZyA9IDApKSkpIDogKHAuc3BsaWNlKHUtLSwgMSksIG4tLSk7CiAgICAgICAgICAgICAgICBpZiAocyA9IDEgLyAobiA9IDEgLyBEICsgMSB8IDApLCBvID0gMCwgYSA9IHBbMF0sIGcpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSAwOyB1IDwgbjsgdSsrKSBoID0gdSAqIHMsIGEubnggPCBoICYmIChhID0gcFsrK29dKSwgciA9IGEueSArIChoIC0gYS54KSAvIGEuY3ggKiBhLmN5LCBjW3VdID0gewogICAgICAgICAgICAgICAgICAgICAgICB4OiBoLAogICAgICAgICAgICAgICAgICAgICAgICBjeDogcywKICAgICAgICAgICAgICAgICAgICAgICAgeTogciwKICAgICAgICAgICAgICAgICAgICAgICAgY3k6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG54OiA5CiAgICAgICAgICAgICAgICAgICAgfSwgdSAmJiAoY1t1IC0gMV0uY3kgPSByIC0gY1t1IC0gMV0ueSk7CiAgICAgICAgICAgICAgICAgICAgY1tuIC0gMV0uY3kgPSBwW3AubGVuZ3RoIC0gMV0ueSAtIHIKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gMDsgdSA8IG47IHUrKykgYS5ueCA8IHUgKiBzICYmIChhID0gcFsrK29dKSwgY1t1XSA9IGE7CiAgICAgICAgICAgICAgICAgICAgbyA8IHAubGVuZ3RoIC0gMSAmJiAoY1t1IC0gMV0gPSBwW3AubGVuZ3RoIC0gMl0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYXNlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gY1t0ICogbiB8IDBdIHx8IGNbbiAtIDFdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm54IDwgdCAmJiAoZSA9IGUubiksIGUueSArICh0IC0gZS54KSAvIGUuY3ggKiBlLmN5CiAgICAgICAgICAgICAgICB9LCB0aGlzLmVhc2UuY3VzdG9tID0gdGhpcywgdGhpcy5pZCAmJiB2aS5yZWdpc3RlckVhc2UodGhpcy5pZCwgdGhpcy5lYXNlKSwgdGhpcwogICAgICAgICAgICB9LCBlLmdldFNWR0RhdGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdC5nZXRTVkdEYXRhKHRoaXMsIGUpCiAgICAgICAgICAgIH0sIHQuY3JlYXRlID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0KGUsIG4sIHIpLmVhc2UKICAgICAgICAgICAgfSwgdC5yZWdpc3RlciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZpID0gdCwgeGkoKQogICAgICAgICAgICB9LCB0LmdldCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2aS5wYXJzZUVhc2UodCkKICAgICAgICAgICAgfSwgdC5nZXRTVkdEYXRhID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgdmFyIHIsIGksIHUsIHMsIG8sIGEsIGwsIGgsIGYsIEQsIHAgPSAobiA9IG4gfHwge30pLndpZHRoIHx8IDEwMCwKICAgICAgICAgICAgICAgICAgICBjID0gbi5oZWlnaHQgfHwgMTAwLAogICAgICAgICAgICAgICAgICAgIGQgPSBuLnggfHwgMCwKICAgICAgICAgICAgICAgICAgICBnID0gKG4ueSB8fCAwKSArIGMsCiAgICAgICAgICAgICAgICAgICAgXyA9IHZpLnV0aWxzLnRvQXJyYXkobi5wYXRoKVswXTsKICAgICAgICAgICAgICAgIGlmIChuLmludmVydCAmJiAoYyA9IC1jLCBnID0gMCksICJzdHJpbmciID09IHR5cGVvZiBlICYmIChlID0gdmkucGFyc2VFYXNlKGUpKSwgZS5jdXN0b20gJiYgKGUgPSBlLmN1c3RvbSksIGUgaW5zdGFuY2VvZiB0KSByID0gbWkocGkoW2Uuc2VnbWVudF0sIHAsIDAsIDAsIC1jLCBkLCBnKSk7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBbZCwgZ10sIHMgPSAxIC8gKGwgPSBNYXRoLm1heCg1LCAyMDAgKiAobi5wcmVjaXNpb24gfHwgMSkpKSwgaCA9IDUgLyAobCArPSAyKSwgZiA9IEZpKGQgKyBzICogcCksIGkgPSAoKEQgPSBGaShnICsgZShzKSAqIC1jKSkgLSBnKSAvIChmIC0gZCksIHUgPSAyOyB1IDwgbDsgdSsrKSBvID0gRmkoZCArIHUgKiBzICogcCksIGEgPSBGaShnICsgZSh1ICogcykgKiAtYyksIChNYXRoLmFicygoYSAtIEQpIC8gKG8gLSBmKSAtIGkpID4gaCB8fCB1ID09PSBsIC0gMSkgJiYgKHIucHVzaChmLCBEKSwgaSA9IChhIC0gRCkgLyAobyAtIGYpKSwgZiA9IG8sIEQgPSBhOwogICAgICAgICAgICAgICAgICAgIHIgPSAiTSIgKyByLmpvaW4oIiwiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIF8gJiYgXy5zZXRBdHRyaWJ1dGUoImQiLCByKSwgcgogICAgICAgICAgICB9LCB0CiAgICAgICAgfSgpOwogICAgQ2koKSAmJiB2aS5yZWdpc3RlclBsdWdpbihUaSksIFRpLnZlcnNpb24gPSAiMy41LjEiOwogICAgLyohCiAgICAgKiBDdXN0b21XaWdnbGUgMy41LjEKICAgICAqIGh0dHBzOi8vZ3JlZW5zb2NrLmNvbQogICAgICoKICAgICAqIEBsaWNlbnNlIENvcHlyaWdodCAyMDA4LTIwMjAsIEdyZWVuU29jay4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFN1YmplY3QgdG8gdGhlIHRlcm1zIGF0IGh0dHBzOi8vZ3JlZW5zb2NrLmNvbS9zdGFuZGFyZC1saWNlbnNlIG9yIGZvcgogICAgICogQ2x1YiBHcmVlblNvY2sgbWVtYmVycywgdGhlIGFncmVlbWVudCBpc3N1ZWQgd2l0aCB0aGF0IG1lbWJlcnNoaXAuCiAgICAgKiBAYXV0aG9yOiBKYWNrIERveWxlLCBqYWNrQGdyZWVuc29jay5jb20KICAgICAqLwogICAgdmFyIEFpLCBNaSwgT2ksIFNpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBBaSB8fCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmIChBaSA9IHdpbmRvdy5nc2FwKSAmJiBBaS5yZWdpc3RlclBsdWdpbiAmJiBBaQogICAgICAgIH0sCiAgICAgICAgUGkgPSB7CiAgICAgICAgICAgIGVhc2VPdXQ6ICJNMCwxLEMwLjcsMSwwLjYsMCwxLDAiLAogICAgICAgICAgICBlYXNlSW5PdXQ6ICJNMCwwLEMwLjEsMCwwLjI0LDEsMC40NDQsMSwwLjY0NCwxLDAuNiwwLDEsMCIsCiAgICAgICAgICAgIGFudGljaXBhdGU6ICJNMCwwLEMwLDAuMjIyLDAuMDI0LDAuMzg2LDAsMC40LDAuMTgsMC40NTUsMC42NSwwLjY0NiwwLjcsMC42NywwLjksMC43NiwxLDAuODQ2LDEsMSIsCiAgICAgICAgICAgIHVuaWZvcm06ICJNMCwwLEMwLDAuOTUsMCwxLDAsMSwwLDEsMSwxLDEsMSwxLDEsMSwwLDEsMCIKICAgICAgICB9LAogICAgICAgIEJpID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0sCiAgICAgICAga2kgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICghTWkpCiAgICAgICAgICAgICAgICBpZiAoQWkgPSBTaSgpLCBPaSA9IEFpICYmIEFpLnBhcnNlRWFzZSgiX0NFIikpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIFBpKSBQaVtlXSA9IE9pKCIiLCBQaVtlXSk7CiAgICAgICAgICAgICAgICAgICAgTWkgPSAxLCBOaSgid2lnZ2xlIikuY29uZmlnID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIHQgPyBOaSgiIiwgdCkgOiBOaSgid2lnZ2xlKCIgKyB0ICsgIikiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWdnbGVzOiArdAogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB0ICYmIGNvbnNvbGUud2FybigiUGxlYXNlIGdzYXAucmVnaXN0ZXJQbHVnaW4oQ3VzdG9tRWFzZSwgQ3VzdG9tV2lnZ2xlKSIpCiAgICAgICAgfSwKICAgICAgICBMaSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgKHQgPSBBaS5wYXJzZUVhc2UodCkgfHwgT2koIiIsIHQpKSwgdC5jdXN0b20gfHwgIWUgPyB0IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIDEgLSB0KGUpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIE5pID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBNaSB8fCBraSgxKTsKICAgICAgICAgICAgdmFyIG4sIHIsIGksIHUsIHMsIG8sIGEsIGwsIGgsIGYgPSAwIHwgKChlID0gZSB8fCB7fSkud2lnZ2xlcyB8fCAxMCksCiAgICAgICAgICAgICAgICBEID0gMSAvIGYsCiAgICAgICAgICAgICAgICBwID0gRCAvIDIsCiAgICAgICAgICAgICAgICBjID0gImFudGljaXBhdGUiID09PSBlLnR5cGUsCiAgICAgICAgICAgICAgICBkID0gUGlbZS50eXBlXSB8fCBQaS5lYXNlT3V0LAogICAgICAgICAgICAgICAgZyA9IEJpOwogICAgICAgICAgICBpZiAoYyAmJiAoZyA9IGQsIGQgPSBQaS5lYXNlT3V0KSwgZS50aW1pbmdFYXNlICYmIChnID0gTGkoZS50aW1pbmdFYXNlKSksIGUuYW1wbGl0dWRlRWFzZSAmJiAoZCA9IExpKGUuYW1wbGl0dWRlRWFzZSwgITApKSwgbCA9IFswLCAwLCAobyA9IGcocCkpIC8gNCwgMCwgbyAvIDIsIGEgPSBjID8gLWQocCkgOiBkKHApLCBvLCBhXSwgInJhbmRvbSIgPT09IGUudHlwZSkgewogICAgICAgICAgICAgICAgZm9yIChsLmxlbmd0aCA9IDQsIG4gPSBnKEQpLCByID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxLCBoID0gMjsgaCA8IGY7IGgrKykgcCA9IG4sIGEgPSByLCBuID0gZyhEICogaCksIHIgPSAyICogTWF0aC5yYW5kb20oKSAtIDEsIGkgPSBNYXRoLmF0YW4yKHIgLSBsW2wubGVuZ3RoIC0gM10sIG4gLSBsW2wubGVuZ3RoIC0gNF0pLCB1ID0gTWF0aC5jb3MoaSkgKiBELCBzID0gTWF0aC5zaW4oaSkgKiBELCBsLnB1c2gocCAtIHUsIGEgLSBzLCBwLCBhLCBwICsgdSwgYSArIHMpOwogICAgICAgICAgICAgICAgbC5wdXNoKG4sIDAsIDEsIDApCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IgKGggPSAxOyBoIDwgZjsgaCsrKSBsLnB1c2goZyhwICsgRCAvIDIpLCBhKSwgcCArPSBELCBhID0gKGEgPiAwID8gLTEgOiAxKSAqIGQoaCAqIEQpLCBvID0gZyhwKSwgbC5wdXNoKGcocCAtIEQgLyAyKSwgYSwgbywgYSk7CiAgICAgICAgICAgICAgICBsLnB1c2goZyhwICsgRCAvIDQpLCBhLCBnKHAgKyBEIC8gNCksIDAsIDEsIDApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChoID0gbC5sZW5ndGg7IC0taCA+IC0xOykgbFtoXSA9IH5+KDFlMyAqIGxbaF0pIC8gMWUzOwogICAgICAgICAgICByZXR1cm4gbFsyXSA9ICJDIiArIGxbMl0sIE9pKHQsICJNIiArIGwuam9pbigiLCIpKQogICAgICAgIH0sCiAgICAgICAgUmkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdCh0LCBlKSB7CiAgICAgICAgICAgICAgICB0aGlzLmVhc2UgPSBOaSh0LCBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0LmNyZWF0ZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBOaSh0LCBlKQogICAgICAgICAgICB9LCB0LnJlZ2lzdGVyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgQWkgPSB0LCBraSgpCiAgICAgICAgICAgIH0sIHQKICAgICAgICB9KCk7CiAgICBTaSgpICYmIEFpLnJlZ2lzdGVyUGx1Z2luKFJpKSwgUmkudmVyc2lvbiA9ICIzLjUuMSI7CiAgICAvKiEKICAgICAqIERyYXdTVkdQbHVnaW4gMy41LjEKICAgICAqIGh0dHBzOi8vZ3JlZW5zb2NrLmNvbQogICAgICoKICAgICAqIEBsaWNlbnNlIENvcHlyaWdodCAyMDA4LTIwMjAsIEdyZWVuU29jay4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFN1YmplY3QgdG8gdGhlIHRlcm1zIGF0IGh0dHBzOi8vZ3JlZW5zb2NrLmNvbS9zdGFuZGFyZC1saWNlbnNlIG9yIGZvcgogICAgICogQ2x1YiBHcmVlblNvY2sgbWVtYmVycywgdGhlIGFncmVlbWVudCBpc3N1ZWQgd2l0aCB0aGF0IG1lbWJlcnNoaXAuCiAgICAgKiBAYXV0aG9yOiBKYWNrIERveWxlLCBqYWNrQGdyZWVuc29jay5jb20KICAgICAqLwogICAgdmFyIElpLCB6aSwgWWksIFhpLCBqaSwgVmkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cKICAgICAgICB9LAogICAgICAgIFVpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBJaSB8fCBWaSgpICYmIChJaSA9IHdpbmRvdy5nc2FwKSAmJiBJaS5yZWdpc3RlclBsdWdpbiAmJiBJaQogICAgICAgIH0sCiAgICAgICAgV2kgPSAvWy0rPVwuXSpcZCtbXC5lXC1cK10qXGQqW2VcLVwrXSpcZCovZ2ksCiAgICAgICAgcWkgPSB7CiAgICAgICAgICAgIHJlY3Q6IFsid2lkdGgiLCAiaGVpZ2h0Il0sCiAgICAgICAgICAgIGNpcmNsZTogWyJyIiwgInIiXSwKICAgICAgICAgICAgZWxsaXBzZTogWyJyeCIsICJyeSJdLAogICAgICAgICAgICBsaW5lOiBbIngyIiwgInkyIl0KICAgICAgICB9LAogICAgICAgIEdpID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgxZTQgKiB0KSAvIDFlNAogICAgICAgIH0sCiAgICAgICAgSGkgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHQgfHwgMCkKICAgICAgICB9LAogICAgICAgIFFpID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gSGkodC5nZXRBdHRyaWJ1dGUoZSkpCiAgICAgICAgfSwKICAgICAgICBLaSA9IE1hdGguc3FydCwKICAgICAgICBaaSA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGksIHUpIHsKICAgICAgICAgICAgcmV0dXJuIEtpKE1hdGgucG93KChIaShuKSAtIEhpKHQpKSAqIGksIDIpICsgTWF0aC5wb3coKEhpKHIpIC0gSGkoZSkpICogdSwgMikpCiAgICAgICAgfSwKICAgICAgICAkaSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUud2Fybih0KQogICAgICAgIH0sCiAgICAgICAgSmkgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAibm9uLXNjYWxpbmctc3Ryb2tlIiA9PT0gdC5nZXRBdHRyaWJ1dGUoInZlY3Rvci1lZmZlY3QiKQogICAgICAgIH0sCiAgICAgICAgdHUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICghKHQgPSB6aSh0KVswXSkpIHJldHVybiAwOwogICAgICAgICAgICB2YXIgZSwgbiwgciwgaSwgdSwgcywgbywgYSA9IHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpLAogICAgICAgICAgICAgICAgbCA9IHQuc3R5bGUsCiAgICAgICAgICAgICAgICBoID0gMSwKICAgICAgICAgICAgICAgIGYgPSAxOwogICAgICAgICAgICBKaSh0KSAmJiAoZiA9IHQuZ2V0U2NyZWVuQ1RNKCksIGggPSBLaShmLmEgKiBmLmEgKyBmLmIgKiBmLmIpLCBmID0gS2koZi5kICogZi5kICsgZi5jICogZi5jKSk7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBuID0gdC5nZXRCQm94KCkKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgJGkoIlNvbWUgYnJvd3NlcnMgd29uJ3QgbWVhc3VyZSBpbnZpc2libGUgZWxlbWVudHMgKGxpa2UgZGlzcGxheTpub25lIG9yIG1hc2tzIGluc2lkZSBkZWZzKS4iKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBEID0gbiB8fCB7CiAgICAgICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHAgPSBELngsCiAgICAgICAgICAgICAgICBjID0gRC55LAogICAgICAgICAgICAgICAgZCA9IEQud2lkdGgsCiAgICAgICAgICAgICAgICBnID0gRC5oZWlnaHQ7CiAgICAgICAgICAgIGlmIChuICYmIChkIHx8IGcpIHx8ICFxaVthXSB8fCAoZCA9IFFpKHQsIHFpW2FdWzBdKSwgZyA9IFFpKHQsIHFpW2FdWzFdKSwgInJlY3QiICE9PSBhICYmICJsaW5lIiAhPT0gYSAmJiAoZCAqPSAyLCBnICo9IDIpLCAibGluZSIgPT09IGEgJiYgKHAgPSBRaSh0LCAieDEiKSwgYyA9IFFpKHQsICJ5MSIpLCBkID0gTWF0aC5hYnMoZCAtIHApLCBnID0gTWF0aC5hYnMoZyAtIGMpKSksICJwYXRoIiA9PT0gYSkgaSA9IGwuc3Ryb2tlRGFzaGFycmF5LCBsLnN0cm9rZURhc2hhcnJheSA9ICJub25lIiwgZSA9IHQuZ2V0VG90YWxMZW5ndGgoKSB8fCAwLCBoICE9PSBmICYmICRpKCJXYXJuaW5nOiA8cGF0aD4gbGVuZ3RoIGNhbm5vdCBiZSBtZWFzdXJlZCB3aGVuIHZlY3Rvci1lZmZlY3QgaXMgbm9uLXNjYWxpbmctc3Ryb2tlIGFuZCB0aGUgZWxlbWVudCBpc24ndCBwcm9wb3J0aW9uYWxseSBzY2FsZWQuIiksIGUgKj0gKGggKyBmKSAvIDIsIGwuc3Ryb2tlRGFzaGFycmF5ID0gaTsKICAgICAgICAgICAgZWxzZSBpZiAoInJlY3QiID09PSBhKSBlID0gMiAqIGQgKiBoICsgMiAqIGcgKiBmOwogICAgICAgICAgICBlbHNlIGlmICgibGluZSIgPT09IGEpIGUgPSBaaShwLCBjLCBwICsgZCwgYyArIGcsIGgsIGYpOwogICAgICAgICAgICBlbHNlIGlmICgicG9seWxpbmUiID09PSBhIHx8ICJwb2x5Z29uIiA9PT0gYSkKICAgICAgICAgICAgICAgIGZvciAociA9IHQuZ2V0QXR0cmlidXRlKCJwb2ludHMiKS5tYXRjaChXaSkgfHwgW10sICJwb2x5Z29uIiA9PT0gYSAmJiByLnB1c2goclswXSwgclsxXSksIGUgPSAwLCB1ID0gMjsgdSA8IHIubGVuZ3RoOyB1ICs9IDIpIGUgKz0gWmkoclt1IC0gMl0sIHJbdSAtIDFdLCByW3VdLCByW3UgKyAxXSwgaCwgZikgfHwgMDsKICAgICAgICAgICAgZWxzZSAiY2lyY2xlIiAhPT0gYSAmJiAiZWxsaXBzZSIgIT09IGEgfHwgKHMgPSBkIC8gMiAqIGgsIG8gPSBnIC8gMiAqIGYsIGUgPSBNYXRoLlBJICogKDMgKiAocyArIG8pIC0gS2koKDMgKiBzICsgbykgKiAocyArIDMgKiBvKSkpKTsKICAgICAgICAgICAgcmV0dXJuIGUgfHwgMAogICAgICAgIH0sCiAgICAgICAgZXUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGlmICghKHQgPSB6aSh0KVswXSkpIHJldHVybiBbMCwgMF07CiAgICAgICAgICAgIGUgfHwgKGUgPSB0dSh0KSArIDEpOwogICAgICAgICAgICB2YXIgbiA9IFlpLmdldENvbXB1dGVkU3R5bGUodCksCiAgICAgICAgICAgICAgICByID0gbi5zdHJva2VEYXNoYXJyYXkgfHwgIiIsCiAgICAgICAgICAgICAgICBpID0gSGkobi5zdHJva2VEYXNob2Zmc2V0KSwKICAgICAgICAgICAgICAgIHUgPSByLmluZGV4T2YoIiwiKTsKICAgICAgICAgICAgcmV0dXJuIHUgPCAwICYmICh1ID0gci5pbmRleE9mKCIgIikpLCAociA9IHUgPCAwID8gZSA6IEhpKHIuc3Vic3RyKDAsIHUpKSB8fCAxZS01KSA+IGUgJiYgKHIgPSBlKSwgW01hdGgubWF4KDAsIC1pKSwgTWF0aC5tYXgoMCwgciAtIGkpXQogICAgICAgIH0sCiAgICAgICAgbnUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgVmkoKSAmJiAoZG9jdW1lbnQsIFlpID0gd2luZG93LCBqaSA9IElpID0gVWkoKSwgemkgPSBJaS51dGlscy50b0FycmF5LCBYaSA9IC0xICE9PSAoKFlpLm5hdmlnYXRvciB8fCB7fSkudXNlckFnZW50IHx8ICIiKS5pbmRleE9mKCJFZGdlIikpCiAgICAgICAgfSwKICAgICAgICBydSA9IHsKICAgICAgICAgICAgdmVyc2lvbjogIjMuNS4xIiwKICAgICAgICAgICAgbmFtZTogImRyYXdTVkciLAogICAgICAgICAgICByZWdpc3RlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgSWkgPSB0LCBudSgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGkpIHsKICAgICAgICAgICAgICAgIGlmICghdC5nZXRCQm94KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICBqaSB8fCBudSgpOwogICAgICAgICAgICAgICAgdmFyIHUsIHMsIG8sIGEsIGwgPSB0dSh0KSArIDE7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGUgPSB0LnN0eWxlLCB0aGlzLl90YXJnZXQgPSB0LCBlICsgIiIgPT0gInRydWUiID8gZSA9ICIwIDEwMCUiIDogZSA/IC0xID09PSAoZSArICIiKS5pbmRleE9mKCIgIikgJiYgKGUgPSAiMCAiICsgZSkgOiBlID0gIjAgMCIsIHMgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIsIGksIHUgPSB0LmluZGV4T2YoIiAiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA8IDAgPyAociA9IHZvaWQgMCAhPT0gbiA/IG4gKyAiIiA6IHQsIGkgPSB0KSA6IChyID0gdC5zdWJzdHIoMCwgdSksIGkgPSB0LnN1YnN0cih1ICsgMSkpLCAociA9IH5yLmluZGV4T2YoIiUiKSA/IEhpKHIpIC8gMTAwICogZSA6IEhpKHIpKSA+IChpID0gfmkuaW5kZXhPZigiJSIpID8gSGkoaSkgLyAxMDAgKiBlIDogSGkoaSkpID8gW2ksIHJdIDogW3IsIGldCiAgICAgICAgICAgICAgICB9KGUsIGwsICh1ID0gZXUodCwgbCkpWzBdKSwgdGhpcy5fbGVuZ3RoID0gR2kobCArIDEwKSwgMCA9PT0gdVswXSAmJiAwID09PSBzWzBdID8gKG8gPSBNYXRoLm1heCgxZS01LCBzWzFdIC0gbCksIHRoaXMuX2Rhc2ggPSBHaShsICsgbyksIHRoaXMuX29mZnNldCA9IEdpKGwgLSB1WzFdICsgbyksIHRoaXMuX29mZnNldFBUID0gdGhpcy5hZGQodGhpcywgIl9vZmZzZXQiLCB0aGlzLl9vZmZzZXQsIEdpKGwgLSBzWzFdICsgbykpKSA6ICh0aGlzLl9kYXNoID0gR2kodVsxXSAtIHVbMF0pIHx8IDFlLTYsIHRoaXMuX29mZnNldCA9IEdpKC11WzBdKSwgdGhpcy5fZGFzaFBUID0gdGhpcy5hZGQodGhpcywgIl9kYXNoIiwgdGhpcy5fZGFzaCwgR2koc1sxXSAtIHNbMF0pIHx8IDFlLTUpLCB0aGlzLl9vZmZzZXRQVCA9IHRoaXMuYWRkKHRoaXMsICJfb2Zmc2V0IiwgdGhpcy5fb2Zmc2V0LCBHaSgtc1swXSkpKSwgWGkgJiYgKGEgPSBZaS5nZXRDb21wdXRlZFN0eWxlKHQpKS5zdHJva2VMaW5lY2FwICE9PSBhLnN0cm9rZUxpbmVqb2luICYmIChzID0gSGkoYS5zdHJva2VNaXRlcmxpbWl0KSwgdGhpcy5hZGQodC5zdHlsZSwgInN0cm9rZU1pdGVybGltaXQiLCBzLCBzICsgLjAxKSksIHRoaXMuX2xpdmUgPSBKaSh0KSB8fCB+KGUgKyAiIikuaW5kZXhPZigibGl2ZSIpLCB0aGlzLl9wcm9wcy5wdXNoKCJkcmF3U1ZHIiksIDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiwgciwgaSwgdSwgcyA9IGUuX3B0LAogICAgICAgICAgICAgICAgICAgIG8gPSBlLl9zdHlsZTsKICAgICAgICAgICAgICAgIGlmIChzKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChlLl9saXZlICYmIChuID0gdHUoZS5fdGFyZ2V0KSArIDExKSAhPT0gZS5fbGVuZ3RoICYmIChyID0gbiAvIGUuX2xlbmd0aCwgZS5fbGVuZ3RoID0gbiwgZS5fb2Zmc2V0UFQucyAqPSByLCBlLl9vZmZzZXRQVC5jICo9IHIsIGUuX2Rhc2hQVCA/IChlLl9kYXNoUFQucyAqPSByLCBlLl9kYXNoUFQuYyAqPSByKSA6IGUuX2Rhc2ggKj0gcik7IHM7KSBzLnIodCwgcy5kKSwgcyA9IHMuX25leHQ7CiAgICAgICAgICAgICAgICAgICAgaSA9IGUuX2Rhc2gsIHUgPSBlLl9vZmZzZXQsIG4gPSBlLl9sZW5ndGgsIG8uc3Ryb2tlRGFzaG9mZnNldCA9IGUuX29mZnNldCwgMSAhPT0gdCAmJiB0ID8gby5zdHJva2VEYXNoYXJyYXkgPSBpICsgInB4LCIgKyBuICsgInB4IiA6IChpIC0gdSA8IC4wMDEgJiYgbiAtIGkgPD0gMTAgJiYgKG8uc3Ryb2tlRGFzaG9mZnNldCA9IHUgKyAxKSwgby5zdHJva2VEYXNoYXJyYXkgPSB1IDwgLjAwMSAmJiBuIC0gaSA8PSAxMCA/ICJub25lIiA6IHUgPT09IGkgPyAiMHB4LCA5OTk5OTlweCIgOiBpICsgInB4LCIgKyBuICsgInB4IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TGVuZ3RoOiB0dSwKICAgICAgICAgICAgZ2V0UG9zaXRpb246IGV1CiAgICAgICAgfTsKICAgIFVpKCkgJiYgSWkucmVnaXN0ZXJQbHVnaW4ocnUpOwogICAgLyohCiAgICAgKiBtYXRyaXggMy41LjEKICAgICAqIGh0dHBzOi8vZ3JlZW5zb2NrLmNvbQogICAgICoKICAgICAqIENvcHlyaWdodCAyMDA4LTIwMjAsIEdyZWVuU29jay4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFN1YmplY3QgdG8gdGhlIHRlcm1zIGF0IGh0dHBzOi8vZ3JlZW5zb2NrLmNvbS9zdGFuZGFyZC1saWNlbnNlIG9yIGZvcgogICAgICogQ2x1YiBHcmVlblNvY2sgbWVtYmVycywgdGhlIGFncmVlbWVudCBpc3N1ZWQgd2l0aCB0aGF0IG1lbWJlcnNoaXAuCiAgICAgKiBAYXV0aG9yOiBKYWNrIERveWxlLCBqYWNrQGdyZWVuc29jay5jb20KICAgICAqLwogICAgdmFyIGl1LCB1dSwgc3UsIG91LCBhdSwgbHUsIGh1LCBmdSwgRHUgPSAidHJhbnNmb3JtIiwKICAgICAgICBwdSA9IER1ICsgIk9yaWdpbiIsCiAgICAgICAgY3UgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gdC5vd25lckRvY3VtZW50IHx8IHQ7CiAgICAgICAgICAgICEoRHUgaW4gdC5zdHlsZSkgJiYgIm1zVHJhbnNmb3JtIiBpbiB0LnN0eWxlICYmIChwdSA9IChEdSA9ICJtc1RyYW5zZm9ybSIpICsgIk9yaWdpbiIpOwogICAgICAgICAgICBmb3IgKDsgZS5wYXJlbnROb2RlICYmIChlID0gZS5wYXJlbnROb2RlKTspOwogICAgICAgICAgICBpZiAodXUgPSB3aW5kb3csIGh1ID0gbmV3IEN1LCBlKSB7CiAgICAgICAgICAgICAgICBpdSA9IGUsIHN1ID0gZS5kb2N1bWVudEVsZW1lbnQsIG91ID0gZS5ib2R5OwogICAgICAgICAgICAgICAgdmFyIG4gPSBlLmNyZWF0ZUVsZW1lbnQoImRpdiIpLAogICAgICAgICAgICAgICAgICAgIHIgPSBlLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgICAgb3UuYXBwZW5kQ2hpbGQobiksIG4uYXBwZW5kQ2hpbGQociksIG4uc3R5bGUucG9zaXRpb24gPSAic3RhdGljIiwgbi5zdHlsZVtEdV0gPSAidHJhbnNsYXRlM2QoMCwwLDFweCkiLCBmdSA9IHIub2Zmc2V0UGFyZW50ICE9PSBuLCBvdS5yZW1vdmVDaGlsZChuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfSwKICAgICAgICBkdSA9IFtdLAogICAgICAgIGd1ID0gW10sCiAgICAgICAgX3UgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0Lm93bmVyU1ZHRWxlbWVudCB8fCAoInN2ZyIgPT09ICh0LnRhZ05hbWUgKyAiIikudG9Mb3dlckNhc2UoKSA/IHQgOiBudWxsKQogICAgICAgIH0sCiAgICAgICAgbXUgPSBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgaWYgKGUucGFyZW50Tm9kZSAmJiAoaXUgfHwgY3UoZSkpKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IF91KGUpLAogICAgICAgICAgICAgICAgICAgIGkgPSByID8gci5nZXRBdHRyaWJ1dGUoInhtbG5zIikgfHwgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiA6ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwKICAgICAgICAgICAgICAgICAgICB1ID0gciA/IG4gPyAicmVjdCIgOiAiZyIgOiAiZGl2IiwKICAgICAgICAgICAgICAgICAgICBzID0gMiAhPT0gbiA/IDAgOiAxMDAsCiAgICAgICAgICAgICAgICAgICAgbyA9IDMgPT09IG4gPyAxMDAgOiAwLAogICAgICAgICAgICAgICAgICAgIGEgPSAicG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztwb2ludGVyLWV2ZW50czpub25lOyIsCiAgICAgICAgICAgICAgICAgICAgbCA9IGl1LmNyZWF0ZUVsZW1lbnROUyA/IGl1LmNyZWF0ZUVsZW1lbnROUyhpLnJlcGxhY2UoL15odHRwcy8sICJodHRwIiksIHUpIDogaXUuY3JlYXRlRWxlbWVudCh1KTsKICAgICAgICAgICAgICAgIHJldHVybiBuICYmIChyID8gKGx1IHx8IChsdSA9IHQoZSkpLCBsLnNldEF0dHJpYnV0ZSgid2lkdGgiLCAuMDEpLCBsLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgLjAxKSwgbC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHMgKyAiLCIgKyBvICsgIikiKSwgbHUuYXBwZW5kQ2hpbGQobCkpIDogKGF1IHx8ICgoYXUgPSB0KGUpKS5zdHlsZS5jc3NUZXh0ID0gYSksIGwuc3R5bGUuY3NzVGV4dCA9IGEgKyAid2lkdGg6MC4xcHg7aGVpZ2h0OjAuMXB4O3RvcDoiICsgbyArICJweDtsZWZ0OiIgKyBzICsgInB4IiwgYXUuYXBwZW5kQ2hpbGQobCkpKSwgbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHRocm93ICJOZWVkIGRvY3VtZW50IGFuZCBwYXJlbnQuIgogICAgICAgIH0sCiAgICAgICAgdnUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBuLCByLCBpLCB1LCBzLCBvID0gX3UodCksCiAgICAgICAgICAgICAgICBhID0gdCA9PT0gbywKICAgICAgICAgICAgICAgIGwgPSBvID8gZHUgOiBndTsKICAgICAgICAgICAgaWYgKHQgPT09IHV1KSByZXR1cm4gdDsKICAgICAgICAgICAgaWYgKGwubGVuZ3RoIHx8IGwucHVzaChtdSh0LCAxKSwgbXUodCwgMiksIG11KHQsIDMpKSwgbiA9IG8gPyBsdSA6IGF1LCBvKSBpID0gYSA/IHsKICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICB5OiAwCiAgICAgICAgICAgIH0gOiB0LmdldEJCb3goKSwgKHIgPSB0LnRyYW5zZm9ybSA/IHQudHJhbnNmb3JtLmJhc2VWYWwgOiB7fSkubnVtYmVyT2ZJdGVtcyA/ICh1ID0gKHIgPSByLm51bWJlck9mSXRlbXMgPiAxID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IG5ldyBDdSwgbiA9IDA7IG4gPCB0Lm51bWJlck9mSXRlbXM7IG4rKykgZS5tdWx0aXBseSh0LmdldEl0ZW0obikubWF0cml4KTsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0ocikgOiByLmdldEl0ZW0oMCkubWF0cml4KS5hICogaS54ICsgci5jICogaS55LCBzID0gci5iICogaS54ICsgci5kICogaS55KSA6IChyID0gaHUsIHUgPSBpLngsIHMgPSBpLnkpLCBlICYmICJnIiA9PT0gdC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgJiYgKHUgPSBzID0gMCksIG4uc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAibWF0cml4KCIgKyByLmEgKyAiLCIgKyByLmIgKyAiLCIgKyByLmMgKyAiLCIgKyByLmQgKyAiLCIgKyAoci5lICsgdSkgKyAiLCIgKyAoci5mICsgcykgKyAiKSIpLCAoYSA/IG8gOiB0LnBhcmVudE5vZGUpLmFwcGVuZENoaWxkKG4pOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICh1ID0gcyA9IDAsIGZ1KQogICAgICAgICAgICAgICAgICAgIGZvciAociA9IHQub2Zmc2V0UGFyZW50LCBpID0gdDsgaSAmJiAoaSA9IGkucGFyZW50Tm9kZSkgJiYgaSAhPT0gciAmJiBpLnBhcmVudE5vZGU7KSh1dS5nZXRDb21wdXRlZFN0eWxlKGkpW0R1XSArICIiKS5sZW5ndGggPiA0ICYmICh1ID0gaS5vZmZzZXRMZWZ0LCBzID0gaS5vZmZzZXRUb3AsIGkgPSAwKTsKICAgICAgICAgICAgICAgIChpID0gbi5zdHlsZSkudG9wID0gdC5vZmZzZXRUb3AgLSBzICsgInB4IiwgaS5sZWZ0ID0gdC5vZmZzZXRMZWZ0IC0gdSArICJweCIsIHIgPSB1dS5nZXRDb21wdXRlZFN0eWxlKHQpLCBpW0R1XSA9IHJbRHVdLCBpW3B1XSA9IHJbcHVdLCBpLmJvcmRlciA9IHIuYm9yZGVyLCBpLmJvcmRlckxlZnRTdHlsZSA9IHIuYm9yZGVyTGVmdFN0eWxlLCBpLmJvcmRlclRvcFN0eWxlID0gci5ib3JkZXJUb3BTdHlsZSwgaS5ib3JkZXJMZWZ0V2lkdGggPSByLmJvcmRlckxlZnRXaWR0aCwgaS5ib3JkZXJUb3BXaWR0aCA9IHIuYm9yZGVyVG9wV2lkdGgsIGkucG9zaXRpb24gPSAiZml4ZWQiID09PSByLnBvc2l0aW9uID8gImZpeGVkIiA6ICJhYnNvbHV0ZSIsIHQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgfSwKICAgICAgICB5dSA9IGZ1bmN0aW9uKHQsIGUsIG4sIHIsIGksIHUsIHMpIHsKICAgICAgICAgICAgcmV0dXJuIHQuYSA9IGUsIHQuYiA9IG4sIHQuYyA9IHIsIHQuZCA9IGksIHQuZSA9IHUsIHQuZiA9IHMsIHQKICAgICAgICB9LAogICAgICAgIEN1ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgZSwgbiwgciwgaSwgdSkgewogICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gMSksIHZvaWQgMCA9PT0gZSAmJiAoZSA9IDApLCB2b2lkIDAgPT09IG4gJiYgKG4gPSAwKSwgdm9pZCAwID09PSByICYmIChyID0gMSksIHZvaWQgMCA9PT0gaSAmJiAoaSA9IDApLCB2b2lkIDAgPT09IHUgJiYgKHUgPSAwKSwgeXUodGhpcywgdCwgZSwgbiwgciwgaSwgdSkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZSA9IHQucHJvdG90eXBlOwogICAgICAgICAgICByZXR1cm4gZS5pbnZlcnNlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuYSwKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5iLAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmMsCiAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZCwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5lLAogICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLmYsCiAgICAgICAgICAgICAgICAgICAgcyA9IHQgKiByIC0gZSAqIG4gfHwgMWUtMTA7CiAgICAgICAgICAgICAgICByZXR1cm4geXUodGhpcywgciAvIHMsIC1lIC8gcywgLW4gLyBzLCB0IC8gcywgKG4gKiB1IC0gciAqIGkpIC8gcywgLSh0ICogdSAtIGUgKiBpKSAvIHMpCiAgICAgICAgICAgIH0sIGUubXVsdGlwbHkgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuYSwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5iLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmMsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZCwKICAgICAgICAgICAgICAgICAgICB1ID0gdGhpcy5lLAogICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmYsCiAgICAgICAgICAgICAgICAgICAgbyA9IHQuYSwKICAgICAgICAgICAgICAgICAgICBhID0gdC5jLAogICAgICAgICAgICAgICAgICAgIGwgPSB0LmIsCiAgICAgICAgICAgICAgICAgICAgaCA9IHQuZCwKICAgICAgICAgICAgICAgICAgICBmID0gdC5lLAogICAgICAgICAgICAgICAgICAgIEQgPSB0LmY7CiAgICAgICAgICAgICAgICByZXR1cm4geXUodGhpcywgbyAqIGUgKyBsICogciwgbyAqIG4gKyBsICogaSwgYSAqIGUgKyBoICogciwgYSAqIG4gKyBoICogaSwgdSArIGYgKiBlICsgRCAqIHIsIHMgKyBmICogbiArIEQgKiBpKQogICAgICAgICAgICB9LCBlLmNsb25lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHQodGhpcy5hLCB0aGlzLmIsIHRoaXMuYywgdGhpcy5kLCB0aGlzLmUsIHRoaXMuZikKICAgICAgICAgICAgfSwgZS5lcXVhbHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuYSwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5iLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmMsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZCwKICAgICAgICAgICAgICAgICAgICB1ID0gdGhpcy5lLAogICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmY7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdC5hICYmIG4gPT09IHQuYiAmJiByID09PSB0LmMgJiYgaSA9PT0gdC5kICYmIHUgPT09IHQuZSAmJiBzID09PSB0LmYKICAgICAgICAgICAgfSwgZS5hcHBseSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IHt9KTsKICAgICAgICAgICAgICAgIHZhciBuID0gdC54LAogICAgICAgICAgICAgICAgICAgIHIgPSB0LnksCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuYSwKICAgICAgICAgICAgICAgICAgICB1ID0gdGhpcy5iLAogICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmMsCiAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZCwKICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5lLAogICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLmY7CiAgICAgICAgICAgICAgICByZXR1cm4gZS54ID0gbiAqIGkgKyByICogcyArIGEgfHwgMCwgZS55ID0gbiAqIHUgKyByICogbyArIGwgfHwgMCwgZQogICAgICAgICAgICB9LCB0CiAgICAgICAgfSgpOwoKICAgIGZ1bmN0aW9uIHh1KHQsIGUsIG4pIHsKICAgICAgICBpZiAoIXQgfHwgIXQucGFyZW50Tm9kZSB8fCAoaXUgfHwgY3UodCkpLmRvY3VtZW50RWxlbWVudCA9PT0gdCkgcmV0dXJuIG5ldyBDdTsKICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUsIG47IHQgJiYgdCAhPT0gb3U7KShuID0gdC5fZ3NhcCkgJiYgIW4uc2NhbGVYICYmICFuLnNjYWxlWSAmJiBuLnJlbmRlclRyYW5zZm9ybSAmJiAobi5zY2FsZVggPSBuLnNjYWxlWSA9IDFlLTQsIG4ucmVuZGVyVHJhbnNmb3JtKDEsIG4pLCBlID8gZS5wdXNoKG4pIDogZSA9IFtuXSksIHQgPSB0LnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9KHQucGFyZW50Tm9kZSksCiAgICAgICAgICAgIGkgPSBfdSh0KSA/IGR1IDogZ3UsCiAgICAgICAgICAgIHUgPSB2dSh0LCBuKSwKICAgICAgICAgICAgcyA9IGlbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgIG8gPSBpWzFdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICBhID0gaVsyXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgbCA9IHUucGFyZW50Tm9kZSwKICAgICAgICAgICAgaCA9IGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJmaXhlZCIgPT09IHV1LmdldENvbXB1dGVkU3R5bGUoZSkucG9zaXRpb24gfHwgKChlID0gZS5wYXJlbnROb2RlKSAmJiAxID09PSBlLm5vZGVUeXBlID8gdChlKSA6IHZvaWQgMCkKICAgICAgICAgICAgfSh0KSwKICAgICAgICAgICAgZiA9IG5ldyBDdSgoby5sZWZ0IC0gcy5sZWZ0KSAvIDEwMCwgKG8udG9wIC0gcy50b3ApIC8gMTAwLCAoYS5sZWZ0IC0gcy5sZWZ0KSAvIDEwMCwgKGEudG9wIC0gcy50b3ApIC8gMTAwLCBzLmxlZnQgKyAoaCA/IDAgOiB1dS5wYWdlWE9mZnNldCB8fCBpdS5zY3JvbGxMZWZ0IHx8IHN1LnNjcm9sbExlZnQgfHwgb3Uuc2Nyb2xsTGVmdCB8fCAwKSwgcy50b3AgKyAoaCA/IDAgOiB1dS5wYWdlWU9mZnNldCB8fCBpdS5zY3JvbGxUb3AgfHwgc3Uuc2Nyb2xsVG9wIHx8IG91LnNjcm9sbFRvcCB8fCAwKSk7CiAgICAgICAgaWYgKGwucmVtb3ZlQ2hpbGQodSksIHIpCiAgICAgICAgICAgIGZvciAocyA9IHIubGVuZ3RoOyBzLS07KShvID0gcltzXSkuc2NhbGVYID0gby5zY2FsZVkgPSAwLCBvLnJlbmRlclRyYW5zZm9ybSgxLCBvKTsKICAgICAgICByZXR1cm4gZSA/IGYuaW52ZXJzZSgpIDogZgogICAgfQogICAgLyohCiAgICAgKiBNb3Rpb25QYXRoUGx1Z2luIDMuNS4xCiAgICAgKiBodHRwczovL2dyZWVuc29jay5jb20KICAgICAqCiAgICAgKiBAbGljZW5zZSBDb3B5cmlnaHQgMjAwOC0yMDIwLCBHcmVlblNvY2suIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhdCBodHRwczovL2dyZWVuc29jay5jb20vc3RhbmRhcmQtbGljZW5zZSBvciBmb3IKICAgICAqIENsdWIgR3JlZW5Tb2NrIG1lbWJlcnMsIHRoZSBhZ3JlZW1lbnQgaXNzdWVkIHdpdGggdGhhdCBtZW1iZXJzaGlwLgogICAgICogQGF1dGhvcjogSmFjayBEb3lsZSwgamFja0BncmVlbnNvY2suY29tCiAgICAgKi8KICAgIHZhciBGdSwgd3UsIEV1LCBidSwgVHUgPSBbIngiLCAidHJhbnNsYXRlWCIsICJsZWZ0IiwgIm1hcmdpbkxlZnQiXSwKICAgICAgICBBdSA9IFsieSIsICJ0cmFuc2xhdGVZIiwgInRvcCIsICJtYXJnaW5Ub3AiXSwKICAgICAgICBNdSA9IE1hdGguUEkgLyAxODAsCiAgICAgICAgT3UgPSBmdW5jdGlvbih0LCBlLCBuLCByKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSBlLmxlbmd0aCwgdSA9IDIgPT09IHIgPyAwIDogciwgcyA9IDA7IHMgPCBpOyBzKyspIHRbdV0gPSBwYXJzZUZsb2F0KGVbc11bbl0pLCAyID09PSByICYmICh0W3UgKyAxXSA9IDApLCB1ICs9IDI7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSwKICAgICAgICBTdSA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodC5fZ3NhcC5nZXQodCwgZSwgbiB8fCAicHgiKSkgfHwgMAogICAgICAgIH0sCiAgICAgICAgUHUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlLCBuID0gdFswXSwKICAgICAgICAgICAgICAgIHIgPSB0WzFdOwogICAgICAgICAgICBmb3IgKGUgPSAyOyBlIDwgdC5sZW5ndGg7IGUgKz0gMikgbiA9IHRbZV0gKz0gbiwgciA9IHRbZSArIDFdICs9IHIKICAgICAgICB9LAogICAgICAgIEJ1ID0gZnVuY3Rpb24odCwgZSwgbiwgciwgaSwgdSwgcykgewogICAgICAgICAgICAiY3ViaWMiID09PSBzLnR5cGUgPyBlID0gW2VdIDogKGUudW5zaGlmdChTdShuLCByLCBzLnVuaXRYKSwgaSA/IFN1KG4sIGksIHMudW5pdFkpIDogMCksIHMucmVsYXRpdmUgJiYgUHUoZSksIGUgPSBbKGkgPyBfaSA6IGdpKShlLCBzLmN1cnZpbmVzcyldKTsKICAgICAgICAgICAgcmV0dXJuIGUgPSB1KEl1KGUsIG4sIHMpKSwgenUodCwgbiwgciwgZSwgIngiLCBzLnVuaXRYKSwgaSAmJiB6dSh0LCBuLCBpLCBlLCAieSIsIHMudW5pdFkpLCBsaShlLCBzLnJlc29sdXRpb24gfHwgKDAgPT09IHMuY3VydmluZXNzID8gMjAgOiAxMikpCiAgICAgICAgfSwKICAgICAgICBrdSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9LAogICAgICAgIEx1ID0gL1stK1wuXSpcZCtbXC5lXC1cK10qXGQqW2VcLVwrXSpcZCovZywKICAgICAgICBOdSA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdmFyIHIsIGksIHUsIHMgPSB4dSh0KTsKICAgICAgICAgICAgcmV0dXJuICJzdmciID09PSAodC50YWdOYW1lICsgIiIpLnRvTG93ZXJDYXNlKCkgPyAoaSA9IChyID0gdC52aWV3Qm94LmJhc2VWYWwpLngsIHUgPSByLnksIHIud2lkdGggfHwgKHIgPSB7CiAgICAgICAgICAgICAgICB3aWR0aDogK3QuZ2V0QXR0cmlidXRlKCJ3aWR0aCIpLAogICAgICAgICAgICAgICAgaGVpZ2h0OiArdC5nZXRBdHRyaWJ1dGUoImhlaWdodCIpCiAgICAgICAgICAgIH0pKSA6IChyID0gZSAmJiB0LmdldEJCb3ggJiYgdC5nZXRCQm94KCksIGkgPSB1ID0gMCksIGUgJiYgImF1dG8iICE9PSBlICYmIChpICs9IGUucHVzaCA/IGVbMF0gKiAociA/IHIud2lkdGggOiB0Lm9mZnNldFdpZHRoIHx8IDApIDogZS54LCB1ICs9IGUucHVzaCA/IGVbMV0gKiAociA/IHIuaGVpZ2h0IDogdC5vZmZzZXRIZWlnaHQgfHwgMCkgOiBlLnkpLCBuLmFwcGx5KGkgfHwgdSA/IHMuYXBwbHkoewogICAgICAgICAgICAgICAgeDogaSwKICAgICAgICAgICAgICAgIHk6IHUKICAgICAgICAgICAgfSkgOiB7CiAgICAgICAgICAgICAgICB4OiBzLmUsCiAgICAgICAgICAgICAgICB5OiBzLmYKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIFJ1ID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICB2YXIgaSwgdSA9IHh1KHQucGFyZW50Tm9kZSwgITAsICEwKSwKICAgICAgICAgICAgICAgIHMgPSB1LmNsb25lKCkubXVsdGlwbHkoeHUoZSkpLAogICAgICAgICAgICAgICAgbyA9IE51KHQsIG4sIHUpLAogICAgICAgICAgICAgICAgYSA9IE51KGUsIHIsIHUpLAogICAgICAgICAgICAgICAgbCA9IGEueCwKICAgICAgICAgICAgICAgIGggPSBhLnk7CiAgICAgICAgICAgIHJldHVybiBzLmUgPSBzLmYgPSAwLCAiYXV0byIgPT09IHIgJiYgZS5nZXRUb3RhbExlbmd0aCAmJiAicGF0aCIgPT09IGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpICYmIChpID0gZS5nZXRBdHRyaWJ1dGUoImQiKS5tYXRjaChMdSkgfHwgW10sIGwgKz0gKGkgPSBzLmFwcGx5KHsKICAgICAgICAgICAgICAgIHg6ICtpWzBdLAogICAgICAgICAgICAgICAgeTogK2lbMV0KICAgICAgICAgICAgfSkpLngsIGggKz0gaS55KSwgKGkgfHwgZS5nZXRCQm94ICYmIHQuZ2V0QkJveCAmJiBlLm93bmVyU1ZHRWxlbWVudCA9PT0gdC5vd25lclNWR0VsZW1lbnQpICYmIChsIC09IChpID0gcy5hcHBseShlLmdldEJCb3goKSkpLngsIGggLT0gaS55KSwgcy5lID0gbCAtIG8ueCwgcy5mID0gaCAtIG8ueSwgcwogICAgICAgIH0sCiAgICAgICAgSXUgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCB1LCBzID0gbi5hbGlnbiwKICAgICAgICAgICAgICAgIG8gPSBuLm1hdHJpeCwKICAgICAgICAgICAgICAgIGEgPSBuLm9mZnNldFgsCiAgICAgICAgICAgICAgICBsID0gbi5vZmZzZXRZLAogICAgICAgICAgICAgICAgaCA9IG4uYWxpZ25PcmlnaW4sCiAgICAgICAgICAgICAgICBmID0gdFswXVswXSwKICAgICAgICAgICAgICAgIEQgPSB0WzBdWzFdLAogICAgICAgICAgICAgICAgcCA9IFN1KGUsICJ4IiksCiAgICAgICAgICAgICAgICBjID0gU3UoZSwgInkiKTsKICAgICAgICAgICAgcmV0dXJuIHQgJiYgdC5sZW5ndGggPyAocyAmJiAoInNlbGYiID09PSBzIHx8IChyID0gYnUocylbMF0gfHwgZSkgPT09IGUgPyBwaSh0LCAxLCAwLCAwLCAxLCBwIC0gZiwgYyAtIEQpIDogKGggJiYgITEgIT09IGhbMl0gPyBGdS5zZXQoZSwgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAxMDAgKiBoWzBdICsgIiUgIiArIDEwMCAqIGhbMV0gKyAiJSIKICAgICAgICAgICAgfSkgOiBoID0gW1N1KGUsICJ4UGVyY2VudCIpIC8gLTEwMCwgU3UoZSwgInlQZXJjZW50IikgLyAtMTAwXSwgdSA9IChpID0gUnUoZSwgciwgaCwgImF1dG8iKSkuYXBwbHkoewogICAgICAgICAgICAgICAgeDogZiwKICAgICAgICAgICAgICAgIHk6IEQKICAgICAgICAgICAgfSksIHBpKHQsIGkuYSwgaS5iLCBpLmMsIGkuZCwgcCArIGkuZSAtICh1LnggLSBpLmUpLCBjICsgaS5mIC0gKHUueSAtIGkuZikpKSksIG8gPyBwaSh0LCBvLmEsIG8uYiwgby5jLCBvLmQsIG8uZSwgby5mKSA6IChhIHx8IGwpICYmIHBpKHQsIDEsIDAsIDAsIDEsIGEgfHwgMCwgbCB8fCAwKSwgdCkgOiBuaSgiTTAsMEwwLDAiKQogICAgICAgIH0sCiAgICAgICAgenUgPSBmdW5jdGlvbih0LCBlLCBuLCByLCBpLCB1KSB7CiAgICAgICAgICAgIHZhciBzID0gZS5fZ3NhcCwKICAgICAgICAgICAgICAgIG8gPSBzLmhhcm5lc3MsCiAgICAgICAgICAgICAgICBhID0gbyAmJiBvLmFsaWFzZXMgJiYgby5hbGlhc2VzW25dLAogICAgICAgICAgICAgICAgbCA9IGEgJiYgYS5pbmRleE9mKCIsIikgPCAwID8gYSA6IG4sCiAgICAgICAgICAgICAgICBoID0gdC5fcHQgPSBuZXcgd3UodC5fcHQsIGUsIGwsIDAsIDAsIGt1LCAwLCBzLnNldChlLCBsLCB0KSk7CiAgICAgICAgICAgIGgudSA9IEV1KHMuZ2V0KGUsIGwsIHUpKSB8fCAwLCBoLnBhdGggPSByLCBoLnBwID0gaSwgdC5fcHJvcHMucHVzaChsKQogICAgICAgIH0sCiAgICAgICAgWXUgPSB7CiAgICAgICAgICAgIHZlcnNpb246ICIzLjUuMSIsCiAgICAgICAgICAgIG5hbWU6ICJtb3Rpb25QYXRoIiwKICAgICAgICAgICAgcmVnaXN0ZXI6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgIEV1ID0gKEZ1ID0gdCkudXRpbHMuZ2V0VW5pdCwgYnUgPSBGdS51dGlscy50b0FycmF5LCB3dSA9IG4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgaWYgKCFGdSkgcmV0dXJuIGNvbnNvbGUud2FybigiUGxlYXNlIGdzYXAucmVnaXN0ZXJQbHVnaW4oTW90aW9uUGF0aFBsdWdpbikiKSwgITE7CiAgICAgICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAhZS5zdHlsZSAmJiBlLnBhdGggfHwgKGUgPSB7CiAgICAgICAgICAgICAgICAgICAgcGF0aDogZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgbiwgciwgaSwgdSwgcywgbywgYSA9IFtdLAogICAgICAgICAgICAgICAgICAgIGwgPSBlLnBhdGgsCiAgICAgICAgICAgICAgICAgICAgaCA9IGxbMF0sCiAgICAgICAgICAgICAgICAgICAgZiA9IGUuYXV0b1JvdGF0ZSwKICAgICAgICAgICAgICAgICAgICBEID0gKHMgPSBlLnN0YXJ0LCBvID0gImVuZCIgaW4gZSA/IGUuZW5kIDogMSwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyB8fCAxICE9PSBvID8gb2kodCwgcywgbykgOiB0CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5yYXdQYXRocyA9IGEsIHRoaXMudGFyZ2V0ID0gdCwgKHRoaXMucm90YXRlID0gZiB8fCAwID09PSBmKSAmJiAodGhpcy5yT2Zmc2V0ID0gcGFyc2VGbG9hdChmKSB8fCAwLCB0aGlzLnJhZGlhbnMgPSAhIWUudXNlUmFkaWFucywgdGhpcy5yUHJvcCA9IGUucm90YXRpb24gfHwgInJvdGF0aW9uIiwgdGhpcy5yU2V0ID0gdC5fZ3NhcC5zZXQodCwgdGhpcy5yUHJvcCwgdGhpcyksIHRoaXMucnUgPSBFdSh0Ll9nc2FwLmdldCh0LCB0aGlzLnJQcm9wKSkgfHwgMCksIEFycmF5LmlzQXJyYXkobCkgJiYgISgiY2xvc2VkIiBpbiBsKSAmJiAibnVtYmVyIiAhPSB0eXBlb2YgaCkgewogICAgICAgICAgICAgICAgICAgIGZvciAociBpbiBoKSB+VHUuaW5kZXhPZihyKSA/IGkgPSByIDogfkF1LmluZGV4T2YocikgJiYgKHUgPSByKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHIgaW4gaSAmJiB1ID8gYS5wdXNoKEJ1KHRoaXMsIE91KE91KFtdLCBsLCBpLCAwKSwgbCwgdSwgMSksIHQsIGUueCB8fCBpLCBlLnkgfHwgdSwgRCwgZSkpIDogaSA9IHUgPSAwLCBoKSByICE9PSBpICYmIHIgIT09IHUgJiYgYS5wdXNoKEJ1KHRoaXMsIE91KFtdLCBsLCByLCAyKSwgdCwgciwgMCwgRCwgZSkpCiAgICAgICAgICAgICAgICB9IGVsc2UgbGkobiA9IEQoSXUobmkoZS5wYXRoKSwgdCwgZSkpLCBlLnJlc29sdXRpb24pLCBhLnB1c2gobiksIHp1KHRoaXMsIHQsIGUueCB8fCAieCIsIG4sICJ4IiwgZS51bml0WCB8fCAicHgiKSwgenUodGhpcywgdCwgZS55IHx8ICJ5IiwgbiwgInkiLCBlLnVuaXRZIHx8ICJweCIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlLnJhd1BhdGhzLAogICAgICAgICAgICAgICAgICAgIHIgPSBuLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICBpID0gZS5fcHQ7CiAgICAgICAgICAgICAgICBmb3IgKHQgPiAxID8gdCA9IDEgOiB0IDwgMCAmJiAodCA9IDApOyByLS07KSBEaShuW3JdLCB0LCAhciAmJiBlLnJvdGF0ZSwgbltyXSk7CiAgICAgICAgICAgICAgICBmb3IgKDsgaTspIGkuc2V0KGkudCwgaS5wLCBpLnBhdGhbaS5wcF0gKyBpLnUsIGkuZCwgdCksIGkgPSBpLl9uZXh0OwogICAgICAgICAgICAgICAgZS5yb3RhdGUgJiYgZS5yU2V0KGUudGFyZ2V0LCBlLnJQcm9wLCBuWzBdLmFuZ2xlICogKGUucmFkaWFucyA/IE11IDogMSkgKyBlLnJPZmZzZXQgKyBlLnJ1LCBlLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRMZW5ndGg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsaShuaSh0KSkudG90YWxMZW5ndGgKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2xpY2VSYXdQYXRoOiBvaSwKICAgICAgICAgICAgZ2V0UmF3UGF0aDogbmksCiAgICAgICAgICAgIHBvaW50c1RvU2VnbWVudDogX2ksCiAgICAgICAgICAgIHN0cmluZ1RvUmF3UGF0aDogZGksCiAgICAgICAgICAgIHJhd1BhdGhUb1N0cmluZzogbWksCiAgICAgICAgICAgIHRyYW5zZm9ybVJhd1BhdGg6IHBpLAogICAgICAgICAgICBnZXRHbG9iYWxNYXRyaXg6IHh1LAogICAgICAgICAgICBnZXRQb3NpdGlvbk9uUGF0aDogRGksCiAgICAgICAgICAgIGNhY2hlUmF3UGF0aE1lYXN1cmVtZW50czogbGksCiAgICAgICAgICAgIGNvbnZlcnRUb1BhdGg6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBidSh0KS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdWkodCwgITEgIT09IGUpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29udmVydENvb3JkaW5hdGVzOiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHh1KGUsICEwLCAhMCkubXVsdGlwbHkoeHUodCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gPyByLmFwcGx5KG4pIDogcgogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRBbGlnbk1hdHJpeDogUnUsCiAgICAgICAgICAgIGdldFJlbGF0aXZlUG9zaXRpb246IGZ1bmN0aW9uKHQsIGUsIG4sIHIpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gUnUodCwgZSwgbiwgcik7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHg6IGkuZSwKICAgICAgICAgICAgICAgICAgICB5OiBpLmYKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXJyYXlUb1Jhd1BhdGg6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gT3UoT3UoW10sIHQsIChlID0gZSB8fCB7fSkueCB8fCAieCIsIDApLCB0LCBlLnkgfHwgInkiLCAxKTsKICAgICAgICAgICAgICAgIHJldHVybiBlLnJlbGF0aXZlICYmIFB1KG4pLCBbImN1YmljIiA9PT0gZS50eXBlID8gbiA6IF9pKG4sIGUuY3VydmluZXNzKV0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAoRnUgfHwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiAoRnUgPSB3aW5kb3cuZ3NhcCkgJiYgRnUucmVnaXN0ZXJQbHVnaW4gJiYgRnUpICYmIEZ1LnJlZ2lzdGVyUGx1Z2luKFl1KTsKICAgIC8qIQogICAgICogU2Nyb2xsVG9QbHVnaW4gMy41LjEKICAgICAqIGh0dHBzOi8vZ3JlZW5zb2NrLmNvbQogICAgICoKICAgICAqIEBsaWNlbnNlIENvcHlyaWdodCAyMDA4LTIwMjAsIEdyZWVuU29jay4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFN1YmplY3QgdG8gdGhlIHRlcm1zIGF0IGh0dHBzOi8vZ3JlZW5zb2NrLmNvbS9zdGFuZGFyZC1saWNlbnNlIG9yIGZvcgogICAgICogQ2x1YiBHcmVlblNvY2sgbWVtYmVycywgdGhlIGFncmVlbWVudCBpc3N1ZWQgd2l0aCB0aGF0IG1lbWJlcnNoaXAuCiAgICAgKiBAYXV0aG9yOiBKYWNrIERveWxlLCBqYWNrQGdyZWVuc29jay5jb20KICAgICAqLwogICAgdmFyIFh1LCBqdSwgVnUsIFV1LCBXdSwgcXUsIEd1LCBIdSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdwogICAgICAgIH0sCiAgICAgICAgUXUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIFh1IHx8IEh1KCkgJiYgKFh1ID0gd2luZG93LmdzYXApICYmIFh1LnJlZ2lzdGVyUGx1Z2luICYmIFh1CiAgICAgICAgfSwKICAgICAgICBLdSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiB0CiAgICAgICAgfSwKICAgICAgICBadSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSAieCIgPT09IGUgPyAiV2lkdGgiIDogIkhlaWdodCIsCiAgICAgICAgICAgICAgICByID0gInNjcm9sbCIgKyBuLAogICAgICAgICAgICAgICAgaSA9ICJjbGllbnQiICsgbjsKICAgICAgICAgICAgcmV0dXJuIHQgPT09IFZ1IHx8IHQgPT09IFV1IHx8IHQgPT09IFd1ID8gTWF0aC5tYXgoVXVbcl0sIFd1W3JdKSAtIChWdVsiaW5uZXIiICsgbl0gfHwgVXVbaV0gfHwgV3VbaV0pIDogdFtyXSAtIHRbIm9mZnNldCIgKyBuXQogICAgICAgIH0sCiAgICAgICAgJHUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBuID0gInNjcm9sbCIgKyAoIngiID09PSBlID8gIkxlZnQiIDogIlRvcCIpOwogICAgICAgICAgICByZXR1cm4gdCA9PT0gVnUgJiYgKG51bGwgIT0gdC5wYWdlWE9mZnNldCA/IG4gPSAicGFnZSIgKyBlLnRvVXBwZXJDYXNlKCkgKyAiT2Zmc2V0IiA6IHQgPSBudWxsICE9IFV1W25dID8gVXUgOiBXdSksCiAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFtuXQogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgSnUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBuID0gcXUodClbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICByID0gIWUgfHwgZSA9PT0gVnUgfHwgZSA9PT0gV3UsCiAgICAgICAgICAgICAgICBpID0gciA/IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IFV1LmNsaWVudFRvcCAtIChWdS5wYWdlWU9mZnNldCB8fCBVdS5zY3JvbGxUb3AgfHwgV3Uuc2Nyb2xsVG9wIHx8IDApLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IFV1LmNsaWVudExlZnQgLSAoVnUucGFnZVhPZmZzZXQgfHwgVXUuc2Nyb2xsTGVmdCB8fCBXdS5zY3JvbGxMZWZ0IHx8IDApCiAgICAgICAgICAgICAgICB9IDogZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgeDogbi5sZWZ0IC0gaS5sZWZ0LAogICAgICAgICAgICAgICAgICAgIHk6IG4udG9wIC0gaS50b3AKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiAhciAmJiBlICYmICh1LnggKz0gJHUoZSwgIngiKSgpLCB1LnkgKz0gJHUoZSwgInkiKSgpKSwgdQogICAgICAgIH0sCiAgICAgICAgdHMgPSBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgIHJldHVybiBpc05hTih0KSB8fCAib2JqZWN0IiA9PSB0eXBlb2YgdCA/IEt1KHQpICYmICI9IiA9PT0gdC5jaGFyQXQoMSkgPyBwYXJzZUZsb2F0KHQuc3Vic3RyKDIpKSAqICgiLSIgPT09IHQuY2hhckF0KDApID8gLTEgOiAxKSArIHIgLSBpIDogIm1heCIgPT09IHQgPyBadShlLCBuKSAtIGkgOiBNYXRoLm1pbihadShlLCBuKSwgSnUodCwgZSlbbl0gLSBpKSA6IHBhcnNlRmxvYXQodCkgLSBpCiAgICAgICAgfSwKICAgICAgICBlcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBYdSA9IFF1KCksIEh1KCkgJiYgWHUgJiYgZG9jdW1lbnQuYm9keSAmJiAoVnUgPSB3aW5kb3csIFd1ID0gZG9jdW1lbnQuYm9keSwgVXUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHF1ID0gWHUudXRpbHMudG9BcnJheSwgWHUuY29uZmlnKHsKICAgICAgICAgICAgICAgIGF1dG9LaWxsVGhyZXNob2xkOiA3CiAgICAgICAgICAgIH0pLCBHdSA9IFh1LmNvbmZpZygpLCBqdSA9IDEpCiAgICAgICAgfSwKICAgICAgICBucyA9IHsKICAgICAgICAgICAgdmVyc2lvbjogIjMuNS4xIiwKICAgICAgICAgICAgbmFtZTogInNjcm9sbFRvIiwKICAgICAgICAgICAgcmF3VmFyczogMSwKICAgICAgICAgICAgcmVnaXN0ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIFh1ID0gdCwgZXMoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0OiBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICBqdSB8fCBlcygpOwogICAgICAgICAgICAgICAgdGhpcy5pc1dpbiA9IHQgPT09IFZ1LCB0aGlzLnRhcmdldCA9IHQsIHRoaXMudHdlZW4gPSBuLCAib2JqZWN0IiAhPSB0eXBlb2YgZSA/IEt1KChlID0gewogICAgICAgICAgICAgICAgICAgIHk6IGUKICAgICAgICAgICAgICAgIH0pLnkpICYmICJtYXgiICE9PSBlLnkgJiYgIj0iICE9PSBlLnkuY2hhckF0KDEpICYmIChlLnggPSBlLnkpIDogZS5ub2RlVHlwZSAmJiAoZSA9IHsKICAgICAgICAgICAgICAgICAgICB5OiBlLAogICAgICAgICAgICAgICAgICAgIHg6IGUKICAgICAgICAgICAgICAgIH0pLCB0aGlzLnZhcnMgPSBlLCB0aGlzLmF1dG9LaWxsID0gISFlLmF1dG9LaWxsLCB0aGlzLmdldFggPSAkdSh0LCAieCIpLCB0aGlzLmdldFkgPSAkdSh0LCAieSIpLCB0aGlzLnggPSB0aGlzLnhQcmV2ID0gdGhpcy5nZXRYKCksIHRoaXMueSA9IHRoaXMueVByZXYgPSB0aGlzLmdldFkoKSwgbnVsbCAhPSBlLnggPyAodGhpcy5hZGQodGhpcywgIngiLCB0aGlzLngsIHRzKGUueCwgdCwgIngiLCB0aGlzLngsIGUub2Zmc2V0WCB8fCAwKSwgciwgaSwgTWF0aC5yb3VuZCksIHRoaXMuX3Byb3BzLnB1c2goInNjcm9sbFRvX3giKSkgOiB0aGlzLnNraXBYID0gMSwgbnVsbCAhPSBlLnkgPyAodGhpcy5hZGQodGhpcywgInkiLCB0aGlzLnksIHRzKGUueSwgdCwgInkiLCB0aGlzLnksIGUub2Zmc2V0WSB8fCAwKSwgciwgaSwgTWF0aC5yb3VuZCksIHRoaXMuX3Byb3BzLnB1c2goInNjcm9sbFRvX3kiKSkgOiB0aGlzLnNraXBZID0gMQogICAgICAgICAgICB9LAogICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIG4sIHIsIGksIHUsIHMsIG8gPSBlLl9wdCwgYSA9IGUudGFyZ2V0LCBsID0gZS50d2VlbiwgaCA9IGUuYXV0b0tpbGwsIGYgPSBlLnhQcmV2LCBEID0gZS55UHJldiwgcCA9IGUuaXNXaW47IG87KSBvLnIodCwgby5kKSwgbyA9IG8uX25leHQ7CiAgICAgICAgICAgICAgICBuID0gcCB8fCAhZS5za2lwWCA/IGUuZ2V0WCgpIDogZiwgaSA9IChyID0gcCB8fCAhZS5za2lwWSA/IGUuZ2V0WSgpIDogRCkgLSBELCB1ID0gbiAtIGYsIHMgPSBHdS5hdXRvS2lsbFRocmVzaG9sZCwgZS54IDwgMCAmJiAoZS54ID0gMCksIGUueSA8IDAgJiYgKGUueSA9IDApLCBoICYmICghZS5za2lwWCAmJiAodSA+IHMgfHwgdSA8IC1zKSAmJiBuIDwgWnUoYSwgIngiKSAmJiAoZS5za2lwWCA9IDEpLCAhZS5za2lwWSAmJiAoaSA+IHMgfHwgaSA8IC1zKSAmJiByIDwgWnUoYSwgInkiKSAmJiAoZS5za2lwWSA9IDEpLCBlLnNraXBYICYmIGUuc2tpcFkgJiYgKGwua2lsbCgpLCBlLnZhcnMub25BdXRvS2lsbCAmJiBlLnZhcnMub25BdXRvS2lsbC5hcHBseShsLCBlLnZhcnMub25BdXRvS2lsbFBhcmFtcyB8fCBbXSkpKSwgcCA/IFZ1LnNjcm9sbFRvKGUuc2tpcFggPyBuIDogZS54LCBlLnNraXBZID8gciA6IGUueSkgOiAoZS5za2lwWSB8fCAoYS5zY3JvbGxUb3AgPSBlLnkpLCBlLnNraXBYIHx8IChhLnNjcm9sbExlZnQgPSBlLngpKSwgZS54UHJldiA9IGUueCwgZS55UHJldiA9IGUueQogICAgICAgICAgICB9LAogICAgICAgICAgICBraWxsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9ICJzY3JvbGxUbyIgPT09IHQ7CiAgICAgICAgICAgICAgICAoZSB8fCAic2Nyb2xsVG9feCIgPT09IHQpICYmICh0aGlzLnNraXBYID0gMSksIChlIHx8ICJzY3JvbGxUb195IiA9PT0gdCkgJiYgKHRoaXMuc2tpcFkgPSAxKQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIG5zLm1heCA9IFp1LCBucy5nZXRPZmZzZXQgPSBKdSwgbnMuYnVpbGRHZXR0ZXIgPSAkdSwgUXUoKSAmJiBYdS5yZWdpc3RlclBsdWdpbihucyk7CiAgICAvKiEKICAgICAqIHN0cmluZ3M6IDMuNS4xCiAgICAgKiBodHRwczovL2dyZWVuc29jay5jb20KICAgICAqCiAgICAgKiBDb3B5cmlnaHQgMjAwOC0yMDIwLCBHcmVlblNvY2suIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhdCBodHRwczovL2dyZWVuc29jay5jb20vc3RhbmRhcmQtbGljZW5zZSBvciBmb3IKICAgICAqIENsdWIgR3JlZW5Tb2NrIG1lbWJlcnMsIHRoZSBhZ3JlZW1lbnQgaXNzdWVkIHdpdGggdGhhdCBtZW1iZXJzaGlwLgogICAgICogQGF1dGhvcjogSmFjayBEb3lsZSwgamFja0BncmVlbnNvY2suY29tCiAgICAgKi8KICAgIHZhciBycyA9IC8oW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdKD86W1x1MjAwRFx1RkUwRl1bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0pezIsfXxcdUQ4M0RcdURDNjkoPzpcdTIwMEQoPzooPzpcdUQ4M0RcdURDNjlcdTIwMEQpP1x1RDgzRFx1REM2N3woPzpcdUQ4M0RcdURDNjlcdTIwMEQpP1x1RDgzRFx1REM2Nil8XHVEODNDW1x1REZGQi1cdURGRkZdKXxcdUQ4M0RcdURDNjlcdTIwMEQoPzpcdUQ4M0RcdURDNjlcdTIwMEQpP1x1RDgzRFx1REM2Nlx1MjAwRFx1RDgzRFx1REM2NnxcdUQ4M0RcdURDNjlcdTIwMEQoPzpcdUQ4M0RcdURDNjlcdTIwMEQpP1x1RDgzRFx1REM2N1x1MjAwRCg/Olx1RDgzRFtcdURDNjZcdURDNjddKXxcdUQ4M0NcdURGRjNcdUZFMEZcdTIwMERcdUQ4M0NcdURGMDh8KD86XHVEODNDW1x1REZDM1x1REZDNFx1REZDQV18XHVEODNEW1x1REM2RVx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XXxcdUQ4M0VbXHVERDI2XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERENi1cdURERERdKSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSlcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRnxcdUQ4M0RcdURDNjkoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml0pfCg/Olx1RDgzQ1tcdURGQzNcdURGQzRcdURGQ0FdfFx1RDgzRFtcdURDNkVcdURDNkZcdURDNzFcdURDNzNcdURDNzdcdURDODFcdURDODJcdURDODZcdURDODdcdURFNDUtXHVERTQ3XHVERTRCXHVERTREXHVERTRFXHVERUEzXHVERUI0LVx1REVCNl18XHVEODNFW1x1REQyNlx1REQzNy1cdUREMzlcdUREM0MtXHVERDNFXHVEREQ2LVx1RERERl0pXHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEZ8XHVEODNDXHVEREZEXHVEODNDXHVEREYwfFx1RDgzQ1x1RERGNlx1RDgzQ1x1RERFNnxcdUQ4M0NcdURERjRcdUQ4M0NcdURERjJ8XHVEODNDXHVEREU5KD86XHVEODNDW1x1RERFQVx1RERFQ1x1RERFRlx1RERGMFx1RERGMlx1RERGNFx1RERGRl0pfFx1RDgzQ1x1RERGNyg/Olx1RDgzQ1tcdURERUFcdURERjRcdURERjhcdURERkFcdURERkNdKXxcdUQ4M0NcdURERTgoPzpcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRVx1RERGMC1cdURERjVcdURERjdcdURERkEtXHVEREZGXSl8KD86XHUyNkY5fFx1RDgzQ1tcdURGQ0JcdURGQ0NdfFx1RDgzRFx1REQ3NSkoPzpcdUZFMEZcdTIwMERbXHUyNjQwXHUyNjQyXXwoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pXHUyMDBEW1x1MjY0MFx1MjY0Ml0pXHVGRTBGfCg/Olx1RDgzRFx1REM0MVx1RkUwRlx1MjAwRFx1RDgzRFx1RERFOHxcdUQ4M0RcdURDNjkoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNEXHVEQzY5XHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNEXHVEQzY4KD86KD86XHVEODNDW1x1REZGQi1cdURGRkZdKVx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdKSlcdUZFMEZ8XHVEODNDXHVEREYyKD86XHVEODNDW1x1RERFNlx1RERFOC1cdURERURcdURERjAtXHVEREZGXSl8XHVEODNEXHVEQzY5XHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHUyNzY0XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKD86XHVEODNEW1x1REM2OFx1REM2OV0pfFx1RDgzRFtcdURDNjhcdURDNjldKSl8XHVEODNDXHVEREYxKD86XHVEODNDW1x1RERFNi1cdURERThcdURERUVcdURERjBcdURERjctXHVEREZCXHVEREZFXSl8XHVEODNDXHVEREVGKD86XHVEODNDW1x1RERFQVx1RERGMlx1RERGNFx1RERGNV0pfFx1RDgzQ1x1RERFRCg/Olx1RDgzQ1tcdURERjBcdURERjJcdURERjNcdURERjdcdURERjlcdURERkFdKXxcdUQ4M0NcdURERUIoPzpcdUQ4M0NbXHVEREVFLVx1RERGMFx1RERGMlx1RERGNFx1RERGN10pfFsjXCowLTldXHVGRTBGXHUyMEUzfFx1RDgzQ1x1RERFNyg/Olx1RDgzQ1tcdURERTZcdURERTdcdURERTktXHVEREVGXHVEREYxLVx1RERGNFx1RERGNi1cdURERjlcdURERkJcdURERkNcdURERkVcdURERkZdKXxcdUQ4M0NcdURERTYoPzpcdUQ4M0NbXHVEREU4LVx1RERFQ1x1RERFRVx1RERGMVx1RERGMlx1RERGNFx1RERGNi1cdURERkFcdURERkNcdURERkRcdURERkZdKXxcdUQ4M0NcdURERkYoPzpcdUQ4M0NbXHVEREU2XHVEREYyXHVEREZDXSl8XHVEODNDXHVEREY1KD86XHVEODNDW1x1RERFNlx1RERFQS1cdURERURcdURERjAtXHVEREYzXHVEREY3LVx1RERGOVx1RERGQ1x1RERGRV0pfFx1RDgzQ1x1RERGQig/Olx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERUVcdURERjNcdURERkFdKXxcdUQ4M0NcdURERjMoPzpcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBLVx1RERFQ1x1RERFRVx1RERGMVx1RERGNFx1RERGNVx1RERGN1x1RERGQVx1RERGRl0pfFx1RDgzQ1x1REZGNFx1REI0MFx1REM2N1x1REI0MFx1REM2Mig/Olx1REI0MFx1REM3N1x1REI0MFx1REM2Q1x1REI0MFx1REM3M3xcdURCNDBcdURDNzNcdURCNDBcdURDNjNcdURCNDBcdURDNzR8XHVEQjQwXHVEQzY1XHVEQjQwXHVEQzZFXHVEQjQwXHVEQzY3KVx1REI0MFx1REM3RnxcdUQ4M0RcdURDNjgoPzpcdTIwMEQoPzpcdTI3NjRcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRFx1REM2OHwoPzooPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdTIwMEQpP1x1RDgzRFx1REM2Nlx1MjAwRFx1RDgzRFx1REM2NnwoPzooPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdTIwMEQpP1x1RDgzRFx1REM2N1x1MjAwRCg/Olx1RDgzRFtcdURDNjZcdURDNjddKXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXSl8KD86XHVEODNDW1x1REZGQi1cdURGRkZdKVx1MjAwRCg/Olx1RDgzQ1tcdURGM0VcdURGNzNcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdKSl8XHVEODNDXHVEREY4KD86XHVEODNDW1x1RERFNi1cdURERUFcdURERUMtXHVEREY0XHVEREY3LVx1RERGOVx1RERGQlx1RERGRC1cdURERkZdKXxcdUQ4M0NcdURERjAoPzpcdUQ4M0NbXHVEREVBXHVEREVDLVx1RERFRVx1RERGMlx1RERGM1x1RERGNVx1RERGN1x1RERGQ1x1RERGRVx1RERGRl0pfFx1RDgzQ1x1RERGRSg/Olx1RDgzQ1tcdURERUFcdURERjldKXxcdUQ4M0NcdURERUUoPzpcdUQ4M0NbXHVEREU4LVx1RERFQVx1RERGMS1cdURERjRcdURERjYtXHVEREY5XSl8XHVEODNDXHVEREY5KD86XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERURcdURERUYtXHVEREY0XHVEREY3XHVEREY5XHVEREZCXHVEREZDXHVEREZGXSl8XHVEODNDXHVEREVDKD86XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUVcdURERjEtXHVEREYzXHVEREY1LVx1RERGQVx1RERGQ1x1RERGRV0pfFx1RDgzQ1x1RERGQSg/Olx1RDgzQ1tcdURERTZcdURERUNcdURERjJcdURERjNcdURERjhcdURERkVcdURERkZdKXxcdUQ4M0NcdURERUEoPzpcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBXHVEREVDXHVEREVEXHVEREY3LVx1RERGQV0pfFx1RDgzQ1x1RERGQyg/Olx1RDgzQ1tcdURERUJcdURERjhdKXwoPzpcdTI2Rjl8XHVEODNDW1x1REZDQlx1REZDQ118XHVEODNEXHVERDc1KSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8KD86XHVEODNDW1x1REZDM1x1REZDNFx1REZDQV18XHVEODNEW1x1REM2RVx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XXxcdUQ4M0VbXHVERDI2XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERENi1cdURERERdKSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8KD86W1x1MjYxRFx1MjcwQS1cdTI3MERdfFx1RDgzQ1tcdURGODVcdURGQzJcdURGQzddfFx1RDgzRFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2XHVEQzY3XHVEQzcwXHVEQzcyXHVEQzc0LVx1REM3Nlx1REM3OFx1REM3Q1x1REM4M1x1REM4NVx1RENBQVx1REQ3NFx1REQ3QVx1REQ5MFx1REQ5NVx1REQ5Nlx1REU0Q1x1REU0Rlx1REVDMFx1REVDQ118XHVEODNFW1x1REQxOC1cdUREMUNcdUREMUVcdUREMUZcdUREMzAtXHVERDM2XHVEREQxLVx1RERENV0pKD86XHVEODNDW1x1REZGQi1cdURGRkZdKXxcdUQ4M0RcdURDNjgoPzpcdTIwMEQoPzooPzooPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdTIwMEQpP1x1RDgzRFx1REM2N3woPzooPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdTIwMEQpP1x1RDgzRFx1REM2Nil8XHVEODNDW1x1REZGQi1cdURGRkZdKXwoPzpbXHUyNjFEXHUyNkY5XHUyNzBBLVx1MjcwRF18XHVEODNDW1x1REY4NVx1REZDMi1cdURGQzRcdURGQzdcdURGQ0EtXHVERkNDXXxcdUQ4M0RbXHVEQzQyXHVEQzQzXHVEQzQ2LVx1REM1MFx1REM2Ni1cdURDNjlcdURDNkVcdURDNzAtXHVEQzc4XHVEQzdDXHVEQzgxLVx1REM4M1x1REM4NS1cdURDODdcdURDQUFcdURENzRcdURENzVcdUREN0FcdUREOTBcdUREOTVcdUREOTZcdURFNDUtXHVERTQ3XHVERTRCLVx1REU0Rlx1REVBM1x1REVCNC1cdURFQjZcdURFQzBcdURFQ0NdfFx1RDgzRVtcdUREMTgtXHVERDFDXHVERDFFXHVERDFGXHVERDI2XHVERDMwLVx1REQzOVx1REQzRFx1REQzRVx1REREMS1cdURERERdKSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fCg/OltcdTIzMUFcdTIzMUJcdTIzRTktXHUyM0VDXHUyM0YwXHUyM0YzXHUyNUZEXHUyNUZFXHUyNjE0XHUyNjE1XHUyNjQ4LVx1MjY1M1x1MjY3Rlx1MjY5M1x1MjZBMVx1MjZBQVx1MjZBQlx1MjZCRFx1MjZCRVx1MjZDNFx1MjZDNVx1MjZDRVx1MjZENFx1MjZFQVx1MjZGMlx1MjZGM1x1MjZGNVx1MjZGQVx1MjZGRFx1MjcwNVx1MjcwQVx1MjcwQlx1MjcyOFx1Mjc0Q1x1Mjc0RVx1Mjc1My1cdTI3NTVcdTI3NTdcdTI3OTUtXHUyNzk3XHUyN0IwXHUyN0JGXHUyQjFCXHUyQjFDXHUyQjUwXHUyQjU1XXxcdUQ4M0NbXHVEQzA0XHVEQ0NGXHVERDhFXHVERDkxLVx1REQ5QVx1RERFNi1cdURERkZcdURFMDFcdURFMUFcdURFMkZcdURFMzItXHVERTM2XHVERTM4LVx1REUzQVx1REU1MFx1REU1MVx1REYwMC1cdURGMjBcdURGMkQtXHVERjM1XHVERjM3LVx1REY3Q1x1REY3RS1cdURGOTNcdURGQTAtXHVERkNBXHVERkNGLVx1REZEM1x1REZFMC1cdURGRjBcdURGRjRcdURGRjgtXHVERkZGXXxcdUQ4M0RbXHVEQzAwLVx1REMzRVx1REM0MFx1REM0Mi1cdURDRkNcdURDRkYtXHVERDNEXHVERDRCLVx1REQ0RVx1REQ1MC1cdURENjdcdUREN0FcdUREOTVcdUREOTZcdUREQTRcdURERkItXHVERTRGXHVERTgwLVx1REVDNVx1REVDQ1x1REVEMC1cdURFRDJcdURFRUJcdURFRUNcdURFRjQtXHVERUY4XXxcdUQ4M0VbXHVERDEwLVx1REQzQVx1REQzQy1cdUREM0VcdURENDAtXHVERDQ1XHVERDQ3LVx1REQ0Q1x1REQ1MC1cdURENkJcdUREODAtXHVERDk3XHVEREMwXHVEREQwLVx1RERFNl0pfCg/OlsjXCowLTlceEE5XHhBRVx1MjAzQ1x1MjA0OVx1MjEyMlx1MjEzOVx1MjE5NC1cdTIxOTlcdTIxQTlcdTIxQUFcdTIzMUFcdTIzMUJcdTIzMjhcdTIzQ0ZcdTIzRTktXHUyM0YzXHUyM0Y4LVx1MjNGQVx1MjRDMlx1MjVBQVx1MjVBQlx1MjVCNlx1MjVDMFx1MjVGQi1cdTI1RkVcdTI2MDAtXHUyNjA0XHUyNjBFXHUyNjExXHUyNjE0XHUyNjE1XHUyNjE4XHUyNjFEXHUyNjIwXHUyNjIyXHUyNjIzXHUyNjI2XHUyNjJBXHUyNjJFXHUyNjJGXHUyNjM4LVx1MjYzQVx1MjY0MFx1MjY0Mlx1MjY0OC1cdTI2NTNcdTI2NjBcdTI2NjNcdTI2NjVcdTI2NjZcdTI2NjhcdTI2N0JcdTI2N0ZcdTI2OTItXHUyNjk3XHUyNjk5XHUyNjlCXHUyNjlDXHUyNkEwXHUyNkExXHUyNkFBXHUyNkFCXHUyNkIwXHUyNkIxXHUyNkJEXHUyNkJFXHUyNkM0XHUyNkM1XHUyNkM4XHUyNkNFXHUyNkNGXHUyNkQxXHUyNkQzXHUyNkQ0XHUyNkU5XHUyNkVBXHUyNkYwLVx1MjZGNVx1MjZGNy1cdTI2RkFcdTI2RkRcdTI3MDJcdTI3MDVcdTI3MDgtXHUyNzBEXHUyNzBGXHUyNzEyXHUyNzE0XHUyNzE2XHUyNzFEXHUyNzIxXHUyNzI4XHUyNzMzXHUyNzM0XHUyNzQ0XHUyNzQ3XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc1N1x1Mjc2M1x1Mjc2NFx1Mjc5NS1cdTI3OTdcdTI3QTFcdTI3QjBcdTI3QkZcdTI5MzRcdTI5MzVcdTJCMDUtXHUyQjA3XHUyQjFCXHUyQjFDXHUyQjUwXHUyQjU1XHUzMDMwXHUzMDNEXHUzMjk3XHUzMjk5XXxcdUQ4M0NbXHVEQzA0XHVEQ0NGXHVERDcwXHVERDcxXHVERDdFXHVERDdGXHVERDhFXHVERDkxLVx1REQ5QVx1RERFNi1cdURERkZcdURFMDFcdURFMDJcdURFMUFcdURFMkZcdURFMzItXHVERTNBXHVERTUwXHVERTUxXHVERjAwLVx1REYyMVx1REYyNC1cdURGOTNcdURGOTZcdURGOTdcdURGOTktXHVERjlCXHVERjlFLVx1REZGMFx1REZGMy1cdURGRjVcdURGRjctXHVERkZGXXxcdUQ4M0RbXHVEQzAwLVx1RENGRFx1RENGRi1cdUREM0RcdURENDktXHVERDRFXHVERDUwLVx1REQ2N1x1REQ2Rlx1REQ3MFx1REQ3My1cdUREN0FcdUREODdcdUREOEEtXHVERDhEXHVERDkwXHVERDk1XHVERDk2XHVEREE0XHVEREE1XHVEREE4XHVEREIxXHVEREIyXHVEREJDXHVEREMyLVx1RERDNFx1REREMS1cdURERDNcdUREREMtXHVERERFXHVEREUxXHVEREUzXHVEREU4XHVEREVGXHVEREYzXHVEREZBLVx1REU0Rlx1REU4MC1cdURFQzVcdURFQ0ItXHVERUQyXHVERUUwLVx1REVFNVx1REVFOVx1REVFQlx1REVFQ1x1REVGMFx1REVGMy1cdURFRjhdfFx1RDgzRVtcdUREMTAtXHVERDNBXHVERDNDLVx1REQzRVx1REQ0MC1cdURENDVcdURENDctXHVERDRDXHVERDUwLVx1REQ2Qlx1REQ4MC1cdUREOTdcdUREQzBcdURERDAtXHVEREU2XSlcdUZFMEYpLzsKICAgIC8qIQogICAgICogU3BsaXRUZXh0OiAzLjUuMQogICAgICogaHR0cHM6Ly9ncmVlbnNvY2suY29tCiAgICAgKgogICAgICogQGxpY2Vuc2UgQ29weXJpZ2h0IDIwMDgtMjAyMCwgR3JlZW5Tb2NrLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogU3ViamVjdCB0byB0aGUgdGVybXMgYXQgaHR0cHM6Ly9ncmVlbnNvY2suY29tL3N0YW5kYXJkLWxpY2Vuc2Ugb3IgZm9yCiAgICAgKiBDbHViIEdyZWVuU29jayBtZW1iZXJzLCB0aGUgYWdyZWVtZW50IGlzc3VlZCB3aXRoIHRoYXQgbWVtYmVyc2hpcC4KICAgICAqIEBhdXRob3I6IEphY2sgRG95bGUsIGphY2tAZ3JlZW5zb2NrLmNvbQogICAgICovCiAgICB2YXIgaXMsIHVzLCBzcywgb3MsIGFzID0gLyg/OlxyfFxufFx0XHQpL2csCiAgICAgICAgbHMgPSAvKD86XHNccyspL2csCiAgICAgICAgaHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB1cy5nZXRDb21wdXRlZFN0eWxlKHQpCiAgICAgICAgfSwKICAgICAgICBmcyA9IEFycmF5LmlzQXJyYXksCiAgICAgICAgRHMgPSBbXS5zbGljZSwKICAgICAgICBwcyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgIHJldHVybiBmcyh0KSA/IHQgOiAic3RyaW5nIiA9PSAobiA9IHR5cGVvZiB0KSAmJiAhZSAmJiB0ID8gRHMuY2FsbChpcy5xdWVyeVNlbGVjdG9yQWxsKHQpLCAwKSA6IHQgJiYgIm9iamVjdCIgPT09IG4gJiYgImxlbmd0aCIgaW4gdCA/IERzLmNhbGwodCwgMCkgOiB0ID8gW3RdIDogW10KICAgICAgICB9LAogICAgICAgIGNzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gImFic29sdXRlIiA9PT0gdC5wb3NpdGlvbiB8fCAhMCA9PT0gdC5hYnNvbHV0ZQogICAgICAgIH0sCiAgICAgICAgZHMgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIG4sIHIgPSBlLmxlbmd0aDsgLS1yID4gLTE7KQogICAgICAgICAgICAgICAgaWYgKG4gPSBlW3JdLCB0LnN1YnN0cigwLCBuLmxlbmd0aCkgPT09IG4pIHJldHVybiBuLmxlbmd0aAogICAgICAgIH0sCiAgICAgICAgZ3MgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9ICIiKTsKICAgICAgICAgICAgdmFyIG4gPSB+dC5pbmRleE9mKCIrKyIpLAogICAgICAgICAgICAgICAgciA9IDE7CiAgICAgICAgICAgIHJldHVybiBuICYmICh0ID0gdC5zcGxpdCgiKysiKS5qb2luKCIiKSksCiAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgZSArICIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrOyciICsgKHQgPyAiIGNsYXNzPSciICsgdCArIChuID8gcisrIDogIiIpICsgIic+IiA6ICI+IikKICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIF9zID0gZnVuY3Rpb24gdChlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBpID0gZS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKDEgPT09IGkgfHwgOSA9PT0gaSB8fCAxMSA9PT0gaSkKICAgICAgICAgICAgICAgIGZvciAoZSA9IGUuZmlyc3RDaGlsZDsgZTsgZSA9IGUubmV4dFNpYmxpbmcpIHQoZSwgbiwgcik7CiAgICAgICAgICAgIGVsc2UgMyAhPT0gaSAmJiA0ICE9PSBpIHx8IChlLm5vZGVWYWx1ZSA9IGUubm9kZVZhbHVlLnNwbGl0KG4pLmpvaW4ocikpCiAgICAgICAgfSwKICAgICAgICBtcyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IGUubGVuZ3RoOyAtLW4gPiAtMTspIHQucHVzaChlW25dKQogICAgICAgIH0sCiAgICAgICAgdnMgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIGZvciAodmFyIHI7IHQgJiYgdCAhPT0gZTspIHsKICAgICAgICAgICAgICAgIGlmIChyID0gdC5fbmV4dCB8fCB0Lm5leHRTaWJsaW5nKSByZXR1cm4gci50ZXh0Q29udGVudC5jaGFyQXQoMCkgPT09IG47CiAgICAgICAgICAgICAgICB0ID0gdC5wYXJlbnROb2RlIHx8IHQuX3BhcmVudAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB5cyA9IGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICB2YXIgbiwgciwgaSA9IHBzKGUuY2hpbGROb2RlcyksCiAgICAgICAgICAgICAgICB1ID0gaS5sZW5ndGg7CiAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCB1OyBuKyspKHIgPSBpW25dKS5faXNTcGxpdCA/IHQocikgOiAobiAmJiAzID09PSByLnByZXZpb3VzU2libGluZy5ub2RlVHlwZSA/IHIucHJldmlvdXNTaWJsaW5nLm5vZGVWYWx1ZSArPSAzID09PSByLm5vZGVUeXBlID8gci5ub2RlVmFsdWUgOiByLmZpcnN0Q2hpbGQubm9kZVZhbHVlIDogMyAhPT0gci5ub2RlVHlwZSAmJiBlLmluc2VydEJlZm9yZShyLmZpcnN0Q2hpbGQsIHIpLCBlLnJlbW92ZUNoaWxkKHIpKQogICAgICAgIH0sCiAgICAgICAgQ3MgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGVbdF0pIHx8IDAKICAgICAgICB9LAogICAgICAgIHhzID0gZnVuY3Rpb24odCwgZSwgbiwgciwgaSwgdSwgcykgewogICAgICAgICAgICB2YXIgbywgYSwgbCwgaCwgZiwgRCwgcCwgYywgZCwgZywgXywgbSwgdiA9IGhzKHQpLAogICAgICAgICAgICAgICAgeSA9IENzKCJwYWRkaW5nTGVmdCIsIHYpLAogICAgICAgICAgICAgICAgQyA9IC05OTksCiAgICAgICAgICAgICAgICB4ID0gQ3MoImJvcmRlckJvdHRvbVdpZHRoIiwgdikgKyBDcygiYm9yZGVyVG9wV2lkdGgiLCB2KSwKICAgICAgICAgICAgICAgIEYgPSBDcygiYm9yZGVyTGVmdFdpZHRoIiwgdikgKyBDcygiYm9yZGVyUmlnaHRXaWR0aCIsIHYpLAogICAgICAgICAgICAgICAgdyA9IENzKCJwYWRkaW5nVG9wIiwgdikgKyBDcygicGFkZGluZ0JvdHRvbSIsIHYpLAogICAgICAgICAgICAgICAgRSA9IENzKCJwYWRkaW5nTGVmdCIsIHYpICsgQ3MoInBhZGRpbmdSaWdodCIsIHYpLAogICAgICAgICAgICAgICAgYiA9IENzKCJmb250U2l6ZSIsIHYpICogKGUubGluZVRocmVzaG9sZCB8fCAuMiksCiAgICAgICAgICAgICAgICBUID0gdi50ZXh0QWxpZ24sCiAgICAgICAgICAgICAgICBBID0gW10sCiAgICAgICAgICAgICAgICBNID0gW10sCiAgICAgICAgICAgICAgICBPID0gW10sCiAgICAgICAgICAgICAgICBTID0gZS53b3JkRGVsaW1pdGVyIHx8ICIgIiwKICAgICAgICAgICAgICAgIFAgPSBlLnRhZyA/IGUudGFnIDogZS5zcGFuID8gInNwYW4iIDogImRpdiIsCiAgICAgICAgICAgICAgICBCID0gZS50eXBlIHx8IGUuc3BsaXQgfHwgImNoYXJzLHdvcmRzLGxpbmVzIiwKICAgICAgICAgICAgICAgIGsgPSBpICYmIH5CLmluZGV4T2YoImxpbmVzIikgPyBbXSA6IG51bGwsCiAgICAgICAgICAgICAgICBMID0gfkIuaW5kZXhPZigid29yZHMiKSwKICAgICAgICAgICAgICAgIE4gPSB+Qi5pbmRleE9mKCJjaGFycyIpLAogICAgICAgICAgICAgICAgUiA9IGNzKGUpLAogICAgICAgICAgICAgICAgSSA9IGUubGluZXNDbGFzcywKICAgICAgICAgICAgICAgIHogPSB+KEkgfHwgIiIpLmluZGV4T2YoIisrIiksCiAgICAgICAgICAgICAgICBZID0gW107CiAgICAgICAgICAgIGZvciAoeiAmJiAoSSA9IEkuc3BsaXQoIisrIikuam9pbigiIikpLCBsID0gKGEgPSB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLmxlbmd0aCwgZiA9IFtdLCBvID0gMDsgbyA8IGw7IG8rKykgZltvXSA9IGFbb107CiAgICAgICAgICAgIGlmIChrIHx8IFIpCiAgICAgICAgICAgICAgICBmb3IgKG8gPSAwOyBvIDwgbDsgbysrKSgoRCA9IChoID0gZltvXSkucGFyZW50Tm9kZSA9PT0gdCkgfHwgUiB8fCBOICYmICFMKSAmJiAobSA9IGgub2Zmc2V0VG9wLCBrICYmIEQgJiYgTWF0aC5hYnMobSAtIEMpID4gYiAmJiAoIkJSIiAhPT0gaC5ub2RlTmFtZSB8fCAwID09PSBvKSAmJiAocCA9IFtdLCBrLnB1c2gocCksIEMgPSBtKSwgUiAmJiAoaC5feCA9IGgub2Zmc2V0TGVmdCwgaC5feSA9IG0sIGguX3cgPSBoLm9mZnNldFdpZHRoLCBoLl9oID0gaC5vZmZzZXRIZWlnaHQpLCBrICYmICgoaC5faXNTcGxpdCAmJiBEIHx8ICFOICYmIEQgfHwgTCAmJiBEIHx8ICFMICYmIGgucGFyZW50Tm9kZS5wYXJlbnROb2RlID09PSB0ICYmICFoLnBhcmVudE5vZGUuX2lzU3BsaXQpICYmIChwLnB1c2goaCksIGguX3ggLT0geSwgdnMoaCwgdCwgUykgJiYgKGguX3dvcmRFbmQgPSAhMCkpLCAiQlIiID09PSBoLm5vZGVOYW1lICYmIChoLm5leHRTaWJsaW5nICYmICJCUiIgPT09IGgubmV4dFNpYmxpbmcubm9kZU5hbWUgfHwgMCA9PT0gbykgJiYgay5wdXNoKFtdKSkpOwogICAgICAgICAgICBmb3IgKG8gPSAwOyBvIDwgbDsgbysrKSBEID0gKGggPSBmW29dKS5wYXJlbnROb2RlID09PSB0LCAiQlIiICE9PSBoLm5vZGVOYW1lID8gKFIgJiYgKGQgPSBoLnN0eWxlLCBMIHx8IEQgfHwgKGguX3ggKz0gaC5wYXJlbnROb2RlLl94LCBoLl95ICs9IGgucGFyZW50Tm9kZS5feSksIGQubGVmdCA9IGguX3ggKyAicHgiLCBkLnRvcCA9IGguX3kgKyAicHgiLCBkLnBvc2l0aW9uID0gImFic29sdXRlIiwgZC5kaXNwbGF5ID0gImJsb2NrIiwgZC53aWR0aCA9IGguX3cgKyAxICsgInB4IiwgZC5oZWlnaHQgPSBoLl9oICsgInB4IiksICFMICYmIE4gPyBoLl9pc1NwbGl0ID8gKGguX25leHQgPSBoLm5leHRTaWJsaW5nLCBoLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoaCkpIDogaC5wYXJlbnROb2RlLl9pc1NwbGl0ID8gKGguX3BhcmVudCA9IGgucGFyZW50Tm9kZSwgIWgucHJldmlvdXNTaWJsaW5nICYmIGguZmlyc3RDaGlsZCAmJiAoaC5maXJzdENoaWxkLl9pc0ZpcnN0ID0gITApLCBoLm5leHRTaWJsaW5nICYmICIgIiA9PT0gaC5uZXh0U2libGluZy50ZXh0Q29udGVudCAmJiAhaC5uZXh0U2libGluZy5uZXh0U2libGluZyAmJiBZLnB1c2goaC5uZXh0U2libGluZyksIGguX25leHQgPSBoLm5leHRTaWJsaW5nICYmIGgubmV4dFNpYmxpbmcuX2lzRmlyc3QgPyBudWxsIDogaC5uZXh0U2libGluZywgaC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGgpLCBmLnNwbGljZShvLS0sIDEpLCBsLS0pIDogRCB8fCAobSA9ICFoLm5leHRTaWJsaW5nICYmIHZzKGgucGFyZW50Tm9kZSwgdCwgUyksIGgucGFyZW50Tm9kZS5fcGFyZW50ICYmIGgucGFyZW50Tm9kZS5fcGFyZW50LmFwcGVuZENoaWxkKGgpLCBtICYmIGgucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChpcy5jcmVhdGVUZXh0Tm9kZSgiICIpKSwgInNwYW4iID09PSBQICYmIChoLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lIiksIEEucHVzaChoKSkgOiBoLnBhcmVudE5vZGUuX2lzU3BsaXQgJiYgIWguX2lzU3BsaXQgJiYgIiIgIT09IGguaW5uZXJIVE1MID8gTS5wdXNoKGgpIDogTiAmJiAhaC5faXNTcGxpdCAmJiAoInNwYW4iID09PSBQICYmIChoLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lIiksIEEucHVzaChoKSkpIDogayB8fCBSID8gKGgucGFyZW50Tm9kZSAmJiBoLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaCksIGYuc3BsaWNlKG8tLSwgMSksIGwtLSkgOiBMIHx8IHQuYXBwZW5kQ2hpbGQoaCk7CiAgICAgICAgICAgIGZvciAobyA9IFkubGVuZ3RoOyAtLW8gPiAtMTspIFlbb10ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChZW29dKTsKICAgICAgICAgICAgaWYgKGspIHsKICAgICAgICAgICAgICAgIGZvciAoUiAmJiAoZyA9IGlzLmNyZWF0ZUVsZW1lbnQoUCksIHQuYXBwZW5kQ2hpbGQoZyksIF8gPSBnLm9mZnNldFdpZHRoICsgInB4IiwgbSA9IGcub2Zmc2V0UGFyZW50ID09PSB0ID8gMCA6IHQub2Zmc2V0TGVmdCwgdC5yZW1vdmVDaGlsZChnKSksIGQgPSB0LnN0eWxlLmNzc1RleHQsIHQuc3R5bGUuY3NzVGV4dCA9ICJkaXNwbGF5Om5vbmU7IjsgdC5maXJzdENoaWxkOykgdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgICAgZm9yIChjID0gIiAiID09PSBTICYmICghUiB8fCAhTCAmJiAhTiksIG8gPSAwOyBvIDwgay5sZW5ndGg7IG8rKykgewogICAgICAgICAgICAgICAgICAgIGZvciAocCA9IGtbb10sIChnID0gaXMuY3JlYXRlRWxlbWVudChQKSkuc3R5bGUuY3NzVGV4dCA9ICJkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246IiArIFQgKyAiO3Bvc2l0aW9uOiIgKyAoUiA/ICJhYnNvbHV0ZTsiIDogInJlbGF0aXZlOyIpLCBJICYmIChnLmNsYXNzTmFtZSA9IEkgKyAoeiA/IG8gKyAxIDogIiIpKSwgTy5wdXNoKGcpLCBsID0gcC5sZW5ndGgsIGEgPSAwOyBhIDwgbDsgYSsrKSAiQlIiICE9PSBwW2FdLm5vZGVOYW1lICYmIChoID0gcFthXSwgZy5hcHBlbmRDaGlsZChoKSwgYyAmJiBoLl93b3JkRW5kICYmIGcuYXBwZW5kQ2hpbGQoaXMuY3JlYXRlVGV4dE5vZGUoIiAiKSksIFIgJiYgKDAgPT09IGEgJiYgKGcuc3R5bGUudG9wID0gaC5feSArICJweCIsIGcuc3R5bGUubGVmdCA9IHkgKyBtICsgInB4IiksIGguc3R5bGUudG9wID0gIjBweCIsIG0gJiYgKGguc3R5bGUubGVmdCA9IGguX3ggLSBtICsgInB4IikpKTsKICAgICAgICAgICAgICAgICAgICAwID09PSBsID8gZy5pbm5lckhUTUwgPSAiJm5ic3A7IiA6IEwgfHwgTiB8fCAoeXMoZyksIF9zKGcsIFN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKSwgIiAiKSksIFIgJiYgKGcuc3R5bGUud2lkdGggPSBfLCBnLnN0eWxlLmhlaWdodCA9IGguX2ggKyAicHgiKSwgdC5hcHBlbmRDaGlsZChnKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdC5zdHlsZS5jc3NUZXh0ID0gZAogICAgICAgICAgICB9CiAgICAgICAgICAgIFIgJiYgKHMgPiB0LmNsaWVudEhlaWdodCAmJiAodC5zdHlsZS5oZWlnaHQgPSBzIC0gdyArICJweCIsIHQuY2xpZW50SGVpZ2h0IDwgcyAmJiAodC5zdHlsZS5oZWlnaHQgPSBzICsgeCArICJweCIpKSwgdSA+IHQuY2xpZW50V2lkdGggJiYgKHQuc3R5bGUud2lkdGggPSB1IC0gRSArICJweCIsIHQuY2xpZW50V2lkdGggPCB1ICYmICh0LnN0eWxlLndpZHRoID0gdSArIEYgKyAicHgiKSkpLCBtcyhuLCBBKSwgTCAmJiBtcyhyLCBNKSwgbXMoaSwgTykKICAgICAgICB9LAogICAgICAgIEZzID0gZnVuY3Rpb24odCwgZSwgbiwgcikgewogICAgICAgICAgICB2YXIgaSwgdSwgcywgbywgYSwgbCwgaCwgZiwgRCA9IGUudGFnID8gZS50YWcgOiBlLnNwYW4gPyAic3BhbiIgOiAiZGl2IiwKICAgICAgICAgICAgICAgIHAgPSB+KGUudHlwZSB8fCBlLnNwbGl0IHx8ICJjaGFycyx3b3JkcyxsaW5lcyIpLmluZGV4T2YoImNoYXJzIiksCiAgICAgICAgICAgICAgICBjID0gY3MoZSksCiAgICAgICAgICAgICAgICBkID0gZS53b3JkRGVsaW1pdGVyIHx8ICIgIiwKICAgICAgICAgICAgICAgIGcgPSAiICIgIT09IGQgPyAiIiA6IGMgPyAiJiMxNzM7ICIgOiAiICIsCiAgICAgICAgICAgICAgICBfID0gIjwvIiArIEQgKyAiPiIsCiAgICAgICAgICAgICAgICBtID0gMSwKICAgICAgICAgICAgICAgIHYgPSBlLnNwZWNpYWxDaGFycyA/ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUuc3BlY2lhbENoYXJzID8gZS5zcGVjaWFsQ2hhcnMgOiBkcyA6IG51bGwsCiAgICAgICAgICAgICAgICB5ID0gaXMuY3JlYXRlRWxlbWVudCgiZGl2IiksCiAgICAgICAgICAgICAgICBDID0gdC5wYXJlbnROb2RlOwogICAgICAgICAgICBmb3IgKEMuaW5zZXJ0QmVmb3JlKHksIHQpLCB5LnRleHRDb250ZW50ID0gdC5ub2RlVmFsdWUsIEMucmVtb3ZlQ2hpbGQodCksIGggPSAtMSAhPT0gKGkgPSBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUubm9kZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAiIjsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gbiB8fCA5ID09PSBuIHx8IDExID09PSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZS50ZXh0Q29udGVudCkgcmV0dXJuIGUudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IGUuZmlyc3RDaGlsZDsgZTsgZSA9IGUubmV4dFNpYmxpbmcpIHIgKz0gdChlKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoMyA9PT0gbiB8fCA0ID09PSBuKSByZXR1cm4gZS5ub2RlVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgIH0odCA9IHkpKS5pbmRleE9mKCI8IiksICExICE9PSBlLnJlZHVjZVdoaXRlU3BhY2UgJiYgKGkgPSBpLnJlcGxhY2UobHMsICIgIikucmVwbGFjZShhcywgIiIpKSwgaCAmJiAoaSA9IGkuc3BsaXQoIjwiKS5qb2luKCJ7e0xUfX0iKSksIGEgPSBpLmxlbmd0aCwgdSA9ICgiICIgPT09IGkuY2hhckF0KDApID8gZyA6ICIiKSArIG4oKSwgcyA9IDA7IHMgPCBhOyBzKyspCiAgICAgICAgICAgICAgICBpZiAobCA9IGkuY2hhckF0KHMpLCB2ICYmIChmID0gdihpLnN1YnN0cihzKSwgZS5zcGVjaWFsQ2hhcnMpKSkgbCA9IGkuc3Vic3RyKHMsIGYgfHwgMSksIHUgKz0gcCAmJiAiICIgIT09IGwgPyByKCkgKyBsICsgIjwvIiArIEQgKyAiPiIgOiBsLCBzICs9IGYgLSAxOwogICAgICAgICAgICAgICAgZWxzZSBpZiAobCA9PT0gZCAmJiBpLmNoYXJBdChzIC0gMSkgIT09IGQgJiYgcykgewogICAgICAgICAgICAgICAgZm9yICh1ICs9IG0gPyBfIDogIiIsIG0gPSAwOyBpLmNoYXJBdChzICsgMSkgPT09IGQ7KSB1ICs9IGcsIHMrKzsKICAgICAgICAgICAgICAgIHMgPT09IGEgLSAxID8gdSArPSBnIDogIikiICE9PSBpLmNoYXJBdChzICsgMSkgJiYgKHUgKz0gZyArIG4oKSwgbSA9IDEpCiAgICAgICAgICAgIH0gZWxzZSAieyIgPT09IGwgJiYgInt7TFR9fSIgPT09IGkuc3Vic3RyKHMsIDYpID8gKHUgKz0gcCA/IHIoKSArICJ7e0xUfX08LyIgKyBEICsgIj4iIDogInt7TFR9fSIsIHMgKz0gNSkgOiBsLmNoYXJDb2RlQXQoMCkgPj0gNTUyOTYgJiYgbC5jaGFyQ29kZUF0KDApIDw9IDU2MzE5IHx8IGkuY2hhckNvZGVBdChzICsgMSkgPj0gNjUwMjQgJiYgaS5jaGFyQ29kZUF0KHMgKyAxKSA8PSA2NTAzOSA/IChvID0gKChpLnN1YnN0cihzLCAxMikuc3BsaXQocnMpIHx8IFtdKVsxXSB8fCAiIikubGVuZ3RoIHx8IDIsIHUgKz0gcCAmJiAiICIgIT09IGwgPyByKCkgKyBpLnN1YnN0cihzLCBvKSArICI8LyIgKyBEICsgIj4iIDogaS5zdWJzdHIocywgbyksIHMgKz0gbyAtIDEpIDogdSArPSBwICYmICIgIiAhPT0gbCA/IHIoKSArIGwgKyAiPC8iICsgRCArICI+IiA6IGw7CiAgICAgICAgICAgIHQub3V0ZXJIVE1MID0gdSArIChtID8gXyA6ICIiKSwgaCAmJiBfcyhDLCAie3tMVH19IiwgIjwiKQogICAgICAgIH0sCiAgICAgICAgd3MgPSBmdW5jdGlvbiB0KGUsIG4sIHIsIGkpIHsKICAgICAgICAgICAgdmFyIHUsIHMsIG8gPSBwcyhlLmNoaWxkTm9kZXMpLAogICAgICAgICAgICAgICAgYSA9IG8ubGVuZ3RoLAogICAgICAgICAgICAgICAgbCA9IGNzKG4pOwogICAgICAgICAgICBpZiAoMyAhPT0gZS5ub2RlVHlwZSB8fCBhID4gMSkgewogICAgICAgICAgICAgICAgZm9yIChuLmFic29sdXRlID0gITEsIHUgPSAwOyB1IDwgYTsgdSsrKSgzICE9PSAocyA9IG9bdV0pLm5vZGVUeXBlIHx8IC9cUysvLnRlc3Qocy5ub2RlVmFsdWUpKSAmJiAobCAmJiAzICE9PSBzLm5vZGVUeXBlICYmICJpbmxpbmUiID09PSBocyhzKS5kaXNwbGF5ICYmIChzLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIiwgcy5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSIpLCBzLl9pc1NwbGl0ID0gITAsIHQocywgbiwgciwgaSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIG4uYWJzb2x1dGUgPSBsLCB2b2lkKGUuX2lzU3BsaXQgPSAhMCkKICAgICAgICAgICAgfQogICAgICAgICAgICBGcyhlLCBuLCByLCBpKQogICAgICAgIH0sCiAgICAgICAgRXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdCh0LCBlKSB7CiAgICAgICAgICAgICAgICBzcyB8fCAoaXMgPSBkb2N1bWVudCwgdXMgPSB3aW5kb3csIHNzID0gMSksIHRoaXMuZWxlbWVudHMgPSBwcyh0KSwgdGhpcy5jaGFycyA9IFtdLCB0aGlzLndvcmRzID0gW10sIHRoaXMubGluZXMgPSBbXSwgdGhpcy5fb3JpZ2luYWxzID0gW10sIHRoaXMudmFycyA9IGUgfHwge30sIHRoaXMuc3BsaXQoZSkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZSA9IHQucHJvdG90eXBlOwogICAgICAgICAgICByZXR1cm4gZS5zcGxpdCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNTcGxpdCAmJiB0aGlzLnJldmVydCgpLCB0aGlzLnZhcnMgPSB0ID0gdCB8fCB0aGlzLnZhcnMsIHRoaXMuX29yaWdpbmFscy5sZW5ndGggPSB0aGlzLmNoYXJzLmxlbmd0aCA9IHRoaXMud29yZHMubGVuZ3RoID0gdGhpcy5saW5lcy5sZW5ndGggPSAwOwogICAgICAgICAgICAgICAgZm9yICh2YXIgZSwgbiwgciwgaSA9IHRoaXMuZWxlbWVudHMubGVuZ3RoLCB1ID0gdC50YWcgPyB0LnRhZyA6IHQuc3BhbiA/ICJzcGFuIiA6ICJkaXYiLCBzID0gZ3ModC53b3Jkc0NsYXNzLCB1KSwgbyA9IGdzKHQuY2hhcnNDbGFzcywgdSk7IC0taSA+IC0xOykgciA9IHRoaXMuZWxlbWVudHNbaV0sIHRoaXMuX29yaWdpbmFsc1tpXSA9IHIuaW5uZXJIVE1MLCBlID0gci5jbGllbnRIZWlnaHQsIG4gPSByLmNsaWVudFdpZHRoLCB3cyhyLCB0LCBzLCBvKSwgeHMociwgdCwgdGhpcy5jaGFycywgdGhpcy53b3JkcywgdGhpcy5saW5lcywgbiwgZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFycy5yZXZlcnNlKCksIHRoaXMud29yZHMucmV2ZXJzZSgpLCB0aGlzLmxpbmVzLnJldmVyc2UoKSwgdGhpcy5pc1NwbGl0ID0gITAsIHRoaXMKICAgICAgICAgICAgfSwgZS5yZXZlcnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fb3JpZ2luYWxzOwogICAgICAgICAgICAgICAgaWYgKCF0KSB0aHJvdyAicmV2ZXJ0KCkgY2FsbCB3YXNuJ3Qgc2NvcGVkIHByb3Blcmx5LiI7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5uZXJIVE1MID0gdFtuXQogICAgICAgICAgICAgICAgfSkpLCB0aGlzLmNoYXJzID0gW10sIHRoaXMud29yZHMgPSBbXSwgdGhpcy5saW5lcyA9IFtdLCB0aGlzLmlzU3BsaXQgPSAhMSwgdGhpcwogICAgICAgICAgICB9LCB0LmNyZWF0ZSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdChlLCBuKQogICAgICAgICAgICB9LCB0CiAgICAgICAgfSgpOwogICAgRXMudmVyc2lvbiA9ICIzLjUuMSIsIE1yLnJlZ2lzdGVyUGx1Z2luKFFlLCBPciwgWWUsIFllLCBMciwgVGksIFJpLCBydSwgWXUsIG5zLCBFcik7CiAgICB2YXIgYnMgPSBvcyA9IHdpbmRvdy5wdW5jaGdzID0gd2luZG93LnRwR1MgPSB7fTsKICAgIGZvciAodmFyIFRzIGluIGJzLmdzYXAgPSBNciwgYnMuVHdlZW5MaXRlID0gUWUsIGJzLlR3ZWVuTWF4ID0gT3IsIGJzLlRpbWVsaW5lTGl0ZSA9IFllLCBicy5UaW1lbGluZU1heCA9IFllLCBicy5DdXN0b21Cb3VuY2UgPSBMciwgYnMuQ3VzdG9tRWFzZSA9IFRpLCBicy5DdXN0b21XaWdnbGUgPSBSaSwgYnMuRHJhd1NWR1BsdWdpbiA9IHJ1LCBicy5Nb3Rpb25QYXRoUGx1Z2luID0gWXUsIGJzLlNjcm9sbFRvUGx1Z2luID0gbnMsIGJzLkNTU1BsdWdpbiA9IEVyLAogICAgICAgICAgICAvKiEgTWFwIFNwbGl0VGV4dCB0byB0cEdTIFRQR1NTUExJVFRFWFQgKi8KICAgICAgICAgICAgYnMuU3BsaXRUZXh0ID0gRXMsIGJzLlJBRDJERUcgPSAxODAgLyBNYXRoLlBJLCBicy5ERUcyUkFEID0gTWF0aC5QSSAvIDE4MCwKICAgICAgICAgICAgLyohIFJFR0lTVEVSIE1PVElPTiBQQVRIIChCRVpJRVIpICovCiAgICAgICAgICAgIGJzLmdzYXAucmVnaXN0ZXJQbHVnaW4oYnMuTW90aW9uUGF0aFBsdWdpbiksIGJzLmdzYXAuY29uZmlnKHsKICAgICAgICAgICAgICAgIG51bGxUYXJnZXRXYXJuOiAhMQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgLyohRmFsbEJhY2sgZm9yIG9sZCBhbmQgbmV3IEVhc2VzKi8KICAgICAgICAgICAgYnMuZWFzZXMgPSBicy5nc2FwLnBhcnNlRWFzZSgpLCBicy5lYXNlcykgYnMuZWFzZXMuaGFzT3duUHJvcGVydHkoVHMpICYmIHZvaWQgMCA9PT0gYnNbVHNdICYmIChic1tUc10gPSBicy5lYXNlc1tUc10pCiAgICAvKiEgRmFsbEJhY2sgZm9yIEVzc2VudGlhbCBHcmlkICovCiAgICA7CiAgICB2b2lkIDAgIT09IG9zICYmIHZvaWQgMCAhPT0gb3MuVHdlZW5MaXRlICYmIHZvaWQgMCA9PT0gb3MuVHdlZW5MaXRlLmxhZ1Ntb290aGluZyAmJiAob3MuVHdlZW5MaXRlLmxhZ1Ntb290aGluZyA9IGZ1bmN0aW9uKCkge30pOwogICAgdmFyIEFzID0gW107CgogICAgZnVuY3Rpb24gTXModCwgZSwgbikgewogICAgICAgIHZhciByID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksCiAgICAgICAgICAgIGkgPSByLmdldENvbnRleHQoIjJkIik7CiAgICAgICAgaWYgKHIud2lkdGggPSAxMDAsIHIuaGVpZ2h0ID0gMjAwLCAwID09PSB0Lmxlbmd0aCkgaS5maWxsU3R5bGUgPSBuOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgKHZhciB1ID0gaS5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAxMDAsIDApLCBzID0gMDsgcyA8IHQubGVuZ3RoOyBzKyspIHUuYWRkQ29sb3JTdG9wKHRbc10uc3RvcCAvIDEwMCwgdFtzXS5jb2xvcik7CiAgICAgICAgICAgIGkuZmlsbFN0eWxlID0gdQogICAgICAgIH0KICAgICAgICBpLmZpbGxSZWN0KDAsIDAsIDEwMCwgMjAwKTsKICAgICAgICB2YXIgbyA9IGkuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEwMCwgMikuZGF0YSwKICAgICAgICAgICAgYSA9ICIiOwogICAgICAgIGZvciAocyA9IDA7IHMgPCBlLmxlbmd0aDsgcysrKSB7CiAgICAgICAgICAgIHZhciBsID0gTWF0aC5jZWlsKGVbc10pLAogICAgICAgICAgICAgICAgaCA9IDQgKiAoMCAhPT0gbCA/IGwgLSAxIDogbCk7CiAgICAgICAgICAgIGEgKz0gInJnYmEoIiArIG9baF0gKyAiLCIgKyBvW2ggKyAxXSArICIsIiArIG9baCArIDJdICsgIiwiICsgb1toICsgM10gLyAyNTUgKyAiKSIsIGEgKz0gIiAiICsgbCArIChlLmxlbmd0aCAtIDEgPT09IHMgPyAiJSIgOiAiJSwiKQogICAgICAgIH0KICAgICAgICByZXR1cm4gci5yZW1vdmUoKSwgYQogICAgfQoKICAgIGZ1bmN0aW9uIE9zKHQsIGUsIG4sIHIpIHsKICAgICAgICBmb3IgKHZhciBpID0gIiIsIHUgPSBicy5nc2FwLnV0aWxzLm1hcFJhbmdlKDAsIHIubGVuZ3RoIC0gMSwgMCwgdC5sZW5ndGggLSAxKSwgcyA9IDA7IHMgPCByLmxlbmd0aDsgcysrKSB7CiAgICAgICAgICAgIHZhciBvID0gTWF0aC5yb3VuZCh1KHMpKTsKICAgICAgICAgICAgaSArPSB0W29dLmNvbG9yLCBpICs9ICIgIiArIHRbb10uc3RvcCArIChyLmxlbmd0aCAtIDEgPT09IHMgPyAiJSIgOiAiJSwiKQogICAgICAgIH0KICAgICAgICByZXR1cm4gaQogICAgfQoKICAgIGZ1bmN0aW9uIFNzKHQpIHsKICAgICAgICB2YXIgZSA9IC9yZ2IoW1xzXFNdKj8pJS9nLAogICAgICAgICAgICBuID0gW10sCiAgICAgICAgICAgIHIgPSBbXSwKICAgICAgICAgICAgaSA9IFtdOwogICAgICAgIGRvIHsKICAgICAgICAgICAgKHMgPSBlLmV4ZWModCkpICYmIG4ucHVzaChzWzBdKQogICAgICAgIH0gd2hpbGUgKHMpOwogICAgICAgIGZvciAodmFyIHUgPSAwOyB1IDwgbi5sZW5ndGg7IHUrKykgewogICAgICAgICAgICB2YXIgcyA9IG5bdV0sCiAgICAgICAgICAgICAgICBvID0gKHQgPSAvcmdiKFtcc1xTXSo/KVwpLy5leGVjKHMpLCAvXCkoW1xzXFNdKj8pJS8uZXhlYyhzKSk7CiAgICAgICAgICAgIHRbMF0gJiYgKHQgPSB0WzBdKSwgb1sxXSAmJiAobyA9IG9bMV0pLCBpLnB1c2gocGFyc2VGbG9hdChvKSksIHIucHVzaCh7CiAgICAgICAgICAgICAgICBjb2xvcjogdCwKICAgICAgICAgICAgICAgIHN0b3A6IHBhcnNlRmxvYXQobykKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDAgPT09IHIubGVuZ3RoICYmIChyLnB1c2goewogICAgICAgICAgICBjb2xvcjogdCwKICAgICAgICAgICAgc3RvcDogMAogICAgICAgIH0pLCBpLnB1c2goMCksIHIucHVzaCh7CiAgICAgICAgICAgIGNvbG9yOiB0LAogICAgICAgICAgICBzdG9wOiAxMDAKICAgICAgICB9KSwgaS5wdXNoKDEwMCkpLCB7CiAgICAgICAgICAgIHBvaW50czogciwKICAgICAgICAgICAgc3RvcHM6IGkKICAgICAgICB9CiAgICB9CiAgICBicy5nZXRTU0dDb2xvcnMgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgaWYgKG4gPSB2b2lkIDAgPT09IG4gPyAiZmFkaW5nIiA6IG4sIC0xID09PSB0LmluZGV4T2YoImdyYWRpZW50IikgJiYgLTEgPT09IGUuaW5kZXhPZigiZ3JhZGllbnQiKSkgcmV0dXJuIHsKICAgICAgICAgICAgZnJvbTogdCwKICAgICAgICAgICAgdG86IGUKICAgICAgICB9OwogICAgICAgIGZvciAodmFyIHIgPSB7CiAgICAgICAgICAgICAgICBmcm9tOiB0LAogICAgICAgICAgICAgICAgdG86IGUKICAgICAgICAgICAgfSwgaSA9IDA7IGkgPCBBcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoQXNbaV0uZnJvbSA9PT0gdCAmJiBBc1tpXS50byA9PT0gZSAmJiBBc1tpXS50eXBlID09PSBuKSByZXR1cm4gewogICAgICAgICAgICAgICAgZnJvbTogQXNbaV0uckZyb20sCiAgICAgICAgICAgICAgICB0bzogQXNbaV0uclRvCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmIChBc1tpXS5mcm9tID09PSBlICYmIEFzW2ldLnRvID09PSB0ICYmIEFzW2ldLnR5cGUgPT09IG4pIHJldHVybiB7CiAgICAgICAgICAgICAgICBmcm9tOiBBc1tpXS5yVG8sCiAgICAgICAgICAgICAgICB0bzogQXNbaV0uckZyb20KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2YXIgdSA9IFNzKHQpLAogICAgICAgICAgICBzID0gU3MoZSk7CiAgICAgICAgaWYgKHUuc3RvcHMubGVuZ3RoID09PSBzLnN0b3BzLmxlbmd0aCAmJiAtMSAhPT0gdC5pbmRleE9mKCJncmFkaWVudCIpICYmIC0xICE9PSBlLmluZGV4T2YoImdyYWRpZW50IikpIHJldHVybiB7CiAgICAgICAgICAgIGZyb206IHQsCiAgICAgICAgICAgIHRvOiBlCiAgICAgICAgfTsKICAgICAgICB2YXIgbywgYSwgbCA9IHUuc3RvcHM7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHMuc3RvcHMubGVuZ3RoOyBpKyspIC0gMSA9PT0gbC5pbmRleE9mKHMuc3RvcHNbaV0pICYmIGwucHVzaChzLnN0b3BzW2ldKTsKICAgICAgICBpZiAobC5zb3J0KChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAtIGUKICAgICAgICAgICAgfSkpLCAtMSAhPT0gdC5pbmRleE9mKCJncmFkaWVudCgiKSkgewogICAgICAgICAgICB2YXIgaCA9IC0xICE9PSB0LmluZGV4T2YoImRlZywiKSA/IHQuaW5kZXhPZigiZGVnLCIpICsgNCA6IC0xICE9PSB0LmluZGV4T2YoImF0IGNlbnRlciwiKSA/IHQuaW5kZXhPZigiYXQgY2VudGVyLCIpICsgMTAgOiB0LmluZGV4T2YoImdyYWRpZW50KCIpICsgOTsKICAgICAgICAgICAgbyA9IHQuc3Vic3RyaW5nKDAsIGgpLCAtMSA9PT0gZS5pbmRleE9mKCJncmFkaWVudCgiKSAmJiAoYSA9IHQuc3Vic3RyaW5nKDAsIGgpKQogICAgICAgIH0KICAgICAgICBpZiAoLTEgIT09IGUuaW5kZXhPZigiZ3JhZGllbnQoIikpIHsKICAgICAgICAgICAgaCA9IC0xICE9PSBlLmluZGV4T2YoImRlZywiKSA/IGUuaW5kZXhPZigiZGVnLCIpICsgNCA6IC0xICE9PSBlLmluZGV4T2YoImF0IGNlbnRlciwiKSA/IGUuaW5kZXhPZigiYXQgY2VudGVyLCIpICsgMTAgOiBlLmluZGV4T2YoImdyYWRpZW50KCIpICsgOTsKICAgICAgICAgICAgYSA9IGUuc3Vic3RyaW5nKDAsIGgpLCAtMSA9PT0gdC5pbmRleE9mKCJncmFkaWVudCgiKSAmJiAobyA9IGUuc3Vic3RyaW5nKDAsIGgpKQogICAgICAgIH0KICAgICAgICByZXR1cm4gImZhZGluZyIgPT09IG4gPyAodS5zdG9wcy5sZW5ndGgsIHMuc3RvcHMubGVuZ3RoLCBvICs9IE1zKHUucG9pbnRzLCBsLCB0KSwgYSArPSBNcyhzLnBvaW50cywgbCwgZSkpIDogInNsaWRpbmciID09PSBuICYmICh1LnN0b3BzLmxlbmd0aCA+IHMuc3RvcHMubGVuZ3RoID8gYSArPSBPcyhzLnBvaW50cywgbCwgZSwgdS5wb2ludHMpIDogbyArPSBPcyh1LnBvaW50cywgbCwgdCwgcy5wb2ludHMpKSwgbyArPSAiKSIsIGEgKz0gIikiLCAic2xpZGluZyIgPT09IG4gJiYgKHUuc3RvcHMubGVuZ3RoID4gcy5zdG9wcy5sZW5ndGggPyBvID0gdCA6IGEgPSBlKSwgci5yRnJvbSA9IG8sIHIuclRvID0gYSwgci50eWVwID0gbiwgQXMucHVzaChyKSwgewogICAgICAgICAgICBmcm9tOiBvLAogICAgICAgICAgICB0bzogYQogICAgICAgIH0KICAgIH0KfV0pOw=="}},"time_used":837,"timings":{"blocked":736,"dns":0,"connect":0,"send":0,"wait":95,"receive":6,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"s3.tradingview.com/external-embedding/embed-widget-ticker-tape.js","fqdn":"s3.tradingview.com","domain":"tradingview.com","tld":"com"},"ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.358Z","timestamp":1785145482358,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.tradingview.com","organization":""},"issuer":{"commonName":"DigiCert Global G2 TLS RSA SHA256 2020 CA1","organization":"DigiCert Inc"},"validity":{"start":"Tue, 21 Oct 2025 00:00:00 GMT","end":"Tue, 17 Nov 2026 23:59:59 GMT"},"fingerprint":{"sha1":"C4:FE:64:00:30:2A:CD:16:30:95:7E:E1:70:D1:31:3A:D6:33:3A:CC","sha256":"87:D2:67:7D:3E:02:F0:3B:58:BD:38:17:DA:FE:73:C0:CA:25:F9:58:CC:11:14:E0:3A:6E:C3:58:84:9E:BF:52"}}},"request":{"raw":"GET /external-embedding/embed-widget-ticker-tape.js HTTP/1.1\r\nHost: s3.tradingview.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://betaroi.ltd/\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\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: text/javascript\r\nserver: BunnyCDN-NO1-830\r\ncdn-pullzone: 1837468\r\ncdn-requestcountrycode: NO\r\nvary: Accept-Encoding\r\naccess-control-allow-methods: GET\r\naccess-control-allow-origin: *\r\naccess-control-max-age: 3000\r\ncache-control: public, max-age=300\r\ncontent-encoding: zstd\r\netag: \"2671d4a92091986b7abd2e1e685669ca\"\r\nlast-modified: Fri, 24 Jul 2026 10:29:29 GMT\r\nx-amz-id-2: MmO7S7qvpk7e7uAwyKi1zjeKKbKi5IBRI9Fnw08J6tdMbbVvXvrURHIxu7TxhDm94C2BFQDD1p8=\r\nx-amz-request-id: 6FDA3NKBBMZWPGT3\r\nx-amz-server-side-encryption: AES256\r\nx-amz-version-id: wQVqs5hr7RnUyN2oXxLylh_AKdOK0U2U\r\ncdn-proxyver: 1.58\r\ncdn-requestpullcode: 200\r\ncdn-requestpullsuccess: True\r\ncdn-edgestorageid: 830\r\ncontent-security-policy: default-src 'none'\r\ncdn-cachedat: 07/24/2026 10:30:10\r\ncdn-status: 200\r\ncdn-requesttime: 0\r\ncdn-requestid: 699004856d2abc7e1f48501accf27b0c\r\ncdn-cache: HIT\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]}],"data":{"size":13608,"size_decoded":6236,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (3458)","md5":"2671d4a92091986b7abd2e1e685669ca","sha1":"b59db96af3dd1593356058703fc7af3cd7269919","sha256":"986cfef49d6a6ccd5cb1f1cbf562e8341ed581936885830831a2f4c3dc2b5901","sha512":"c07159fc500c72469ba6dfb7ccf5afdbaf476906fb039e5bfc7ab2c95e79b0067a47e6e02ad44915b9ba426273dc39996ffb1899c029253b56e4b02f7d419883","ssdeep":"384:gf6uCWoofYkFdjhUjrb26n0q6Or26ZMViZMEmkfknYH:uD5Unb26nD6Or26ZkFE9fknE","tlshash":"8e52d8a9b660ecbd51d945dbe07a2321b6193944b203aca4b9ecd4c510fdccca131f7e","first_seen":"2026-07-20T13:42:57.5385Z","last_seen":"2026-07-27T14:17:31.047073Z","times_seen":1435,"resource_available":true,"data":"KCgpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQodCxlKXtpZihudWxsPT09dCl0aHJvdyBuZXcgRXJyb3IoYCR7ZT8/IlZhbHVlIn0gaXMgbnVsbGApO3JldHVybiB0fWNvbnN0IGU9eyJjb2xvci1jb2xkLWdyYXktMzAwIjoiI0IyQjVCRSIsImNvbG9yLWJyYW5kIjoiIzI5NjJGRiIsImNvbG9yLWJyYW5kLWhvdmVyIjoiIzFFNTNFNSIsImNvbG9yLWJyYW5kLWFjdGl2ZSI6IiMxODQ4Q0MifQo7Y29uc3QgaT1KU09OLnBhcnNlKCd7ImNyeXB0by1ta3Qtc2NyZWVuZXIiOnsid2lkdGgiOjEwMDAsImhlaWdodCI6NDkwLCJkZWZhdWx0Q29sdW1uIjoib3ZlcnZpZXciLCJtYXJrZXQiOiJjcnlwdG8iLCJzY3JlZW5lcl90eXBlIjoiY3J5cHRvX21rdCIsImRpc3BsYXlDdXJyZW5jeSI6IlVTRCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwiZXZlbnRzIjp7IndpZHRoIjo1MTAsImhlaWdodCI6NjAwLCJpc1RyYW5zcGFyZW50IjpmYWxzZSwiaGlkZUltcG9ydGFuY2VJbmRpY2F0b3IiOmZhbHNlLCJhdXRvc2l6ZSI6ZmFsc2V9LCJmb3JleC1jcm9zcy1yYXRlcyI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImN1cnJlbmNpZXMiOlsiRVVSIiwiVVNEIiwiSlBZIiwiR0JQIiwiQ0hGIiwiQVVEIiwiQ0FEIiwiTlpEIl0sImZyYW1lRWxlbWVudElkIjpudWxsLCJhdXRvc2l6ZSI6ZmFsc2V9LCJmb3JleC1oZWF0LW1hcCI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImN1cnJlbmNpZXMiOlsiRVVSIiwiVVNEIiwiSlBZIiwiR0JQIiwiQ0hGIiwiQVVEIiwiQ0FEIiwiTlpEIiwiQ05ZIl0sImZyYW1lRWxlbWVudElkIjpudWxsLCJhdXRvc2l6ZSI6ZmFsc2V9LCJob3RsaXN0cyI6eyJ3aWR0aCI6NDAwLCJoZWlnaHQiOjYwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImRhdGVSYW5nZSI6IjEyTSIsInNob3dTeW1ib2xMb2dvIjpmYWxzZX0sIm1hcmtldC1vdmVydmlldyI6eyJ3aWR0aCI6NDAwLCJoZWlnaHQiOjY1MCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImRhdGVSYW5nZSI6IjEyTSIsInNob3dTeW1ib2xMb2dvIjp0cnVlfSwibWFya2V0LXF1b3RlcyI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQ1MCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsInNob3dTeW1ib2xMb2dvIjpmYWxzZX0sIm1pbmktc3ltYm9sLW92ZXJ2aWV3Ijp7IndpZHRoIjozNTAsImhlaWdodCI6MjIwLCJzeW1ib2wiOiJGWDpFVVJVU0QiLCJkYXRlUmFuZ2UiOiIxMk0iLCJpc1RyYW5zcGFyZW50IjpmYWxzZSwiYXV0b3NpemUiOmZhbHNlLCJsYXJnZUNoYXJ0VXJsIjoiIn0sInN5bWJvbC1vdmVydmlldyI6eyJ3aWR0aCI6MTAwMCwiaGVpZ2h0Ijo1MDAsInN5bWJvbHMiOltbIkFwcGxlIiwiQUFQTHwxRCJdLFsiR29vZ2xlIiwiR09PR0x8MUQiXSxbIk1pY3Jvc29mdCIsIk1TRlR8MUQiXV0sImF1dG9zaXplIjpmYWxzZSwiY2hhcnRPbmx5IjpmYWxzZSwiaGlkZURhdGVSYW5nZXMiOmZhbHNlLCJoaWRlTWFya2V0U3RhdHVzIjpmYWxzZSwiaGlkZVN5bWJvbExvZ28iOmZhbHNlLCJzY2FsZVBvc2l0aW9uIjoicmlnaHQiLCJzY2FsZU1vZGUiOiJOb3JtYWwiLCJmb250RmFtaWx5IjoiLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBUcmVidWNoZXQgTVMsIFJvYm90bywgVWJ1bnR1LCBzYW5zLXNlcmlmIiwiZm9udFNpemUiOiIxMCIsIm5vVGltZVNjYWxlIjpmYWxzZSwiY2hhcnRUeXBlIjoiYXJlYSIsInZhbHVlc1RyYWNraW5nIjoiMCIsImNoYW5nZU1vZGUiOiJwcmljZS1hbmQtcGVyY2VudCJ9LCJhZHZhbmNlZC1jaGFydCI6eyJib2R5SWQiOiJ3aWRnZXQtY29udGFpbmVyIiwiYm9keUNsYXNzZXMiOlsiY2hhcnQtcGFnZSIsInVuc2VsZWN0YWJsZSIsIm9uLXdpZGdldCJdfSwic2NyZWVuZXIiOnsid2lkdGgiOjExMDAsImhlaWdodCI6NTIzLCJkZWZhdWx0Q29sdW1uIjoib3ZlcnZpZXciLCJkZWZhdWx0U2NyZWVuIjoiZ2VuZXJhbCIsIm1hcmtldCI6ImZvcmV4Iiwic2hvd1Rvb2xiYXIiOnRydWUsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwic2luZ2xlLXF1b3RlIjp7IndpZHRoIjozNTAsInN5bWJvbCI6IkZYOkVVUlVTRCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwic3ltYm9sLXByb2ZpbGUiOnsid2lkdGgiOjQ4MCwiaGVpZ2h0Ijo2NTAsInN5bWJvbCI6Ik5BU0RBUTpBQVBMIiwiaXNUcmFuc3BhcmVudCI6ZmFsc2V9LCJzeW1ib2wtaW5mbyI6eyJ3aWR0aCI6MTAwMCwic3ltYm9sIjoiTkFTREFROkFBUEwiLCJpc1RyYW5zcGFyZW50IjpmYWxzZX0sInRlY2huaWNhbC1hbmFseXNpcyI6eyJpbnRlcnZhbCI6IjFtIiwid2lkdGgiOjQyNSwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImhlaWdodCI6NDUwLCJzeW1ib2wiOiJOQVNEQVE6QUFQTCIsInNob3dJbnRlcnZhbFRhYnMiOnRydWUsImRpc3BsYXlNb2RlIjoic2luZ2xlIn0sInRpY2tlci10YXBlIjp7ImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6ImFkYXB0aXZlIiwic2hvd1N5bWJvbExvZ28iOmZhbHNlfSwidGlja2VycyI6eyJpc1RyYW5zcGFyZW50IjpmYWxzZSwic2hvd1N5bWJvbExvZ28iOmZhbHNlfSwiZmluYW5jaWFscyI6eyJ3aWR0aCI6NDgwLCJoZWlnaHQiOjgzMCwiYXV0b3NpemUiOmZhbHNlLCJzeW1ib2wiOiJOQVNEQVE6QUFQTCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6InJlZ3VsYXIiLCJsYXJnZUNoYXJ0VXJsIjoiIn0sInRpbWVsaW5lIjp7IndpZHRoIjo0ODAsImhlaWdodCI6ODMwLCJhdXRvc2l6ZSI6ZmFsc2UsImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6InJlZ3VsYXIiLCJmZWVkTW9kZSI6ImFsbF9zeW1ib2xzIn0sInN0b2NrLWhlYXRtYXAiOnsid2lkdGgiOjUwMCwiaGVpZ2h0Ijo1MDAsImF1dG9zaXplIjp0cnVlLCJkYXRhU291cmNlIjoiU1BYNTAwIiwiZXhjaGFuZ2VzIjpbXSwiZ3JvdXBpbmciOiJzZWN0b3IiLCJibG9ja1NpemUiOiJtYXJrZXRfY2FwX2Jhc2ljIiwiYmxvY2tDb2xvciI6ImNoYW5nZSIsImhhc1RvcEJhciI6ZmFsc2UsImlzRGF0YVNldEVuYWJsZWQiOmZhbHNlLCJpc1pvb21FbmFibGVkIjp0cnVlLCJoYXNTeW1ib2xUb29sdGlwIjp0cnVlLCJzeW1ib2xVcmwiOiIiLCJpc01vbm9TaXplIjpmYWxzZX0sImNyeXB0by1jb2lucy1oZWF0bWFwIjp7IndpZHRoIjo1MDAsImhlaWdodCI6NTAwLCJhdXRvc2l6ZSI6dHJ1ZSwiZGF0YVNvdXJjZSI6IkNyeXB0byIsImJsb2NrU2l6ZSI6Im1hcmtldF9jYXBfY2FsYyIsImJsb2NrQ29sb3IiOiIyNGhfY2xvc2VfY2hhbmdlfDUiLCJoYXNUb3BCYXIiOmZhbHNlLCJpc0RhdGFTZXRFbmFibGVkIjpmYWxzZSwiaXNab29tRW5hYmxlZCI6dHJ1ZSwiaGFzU3ltYm9sVG9vbHRpcCI6dHJ1ZSwic3ltYm9sVXJsIjoiIiwiaXNNb25vU2l6ZSI6ZmFsc2V9LCJldGYtaGVhdG1hcCI6eyJ3aWR0aCI6NTAwLCJoZWlnaHQiOjUwMCwiYXV0b3NpemUiOnRydWUsImRhdGFTb3VyY2UiOiJBbGxVU0V0ZiIsImJsb2NrU2l6ZSI6InZvbHVtZSIsImJsb2NrQ29sb3IiOiJjaGFuZ2UiLCJncm91cGluZyI6ImFzc2V0X2NsYXNzIiwiaGFzVG9wQmFyIjpmYWxzZSwiaXNEYXRhU2V0RW5hYmxlZCI6ZmFsc2UsImlzWm9vbUVuYWJsZWQiOnRydWUsImhhc1N5bWJvbFRvb2x0aXAiOnRydWUsInN5bWJvbFVybCI6IiIsImlzTW9ub1NpemUiOmZhbHNlfX0nKQo7dmFyIHIsczshZnVuY3Rpb24odCl7bGV0IGU7IWZ1bmN0aW9uKHQpe3QuU2V0U3ltYm9sPSJzZXQtc3ltYm9sIix0LlNldEludGVydmFsPSJzZXQtaW50ZXJ2YWwifShlPXQuTmFtZXN8fCh0Lk5hbWVzPXt9KSl9KHJ8fChyPXt9KSksZnVuY3Rpb24odCl7bGV0IGU7IWZ1bmN0aW9uKHQpe3QuU3ltYm9sQ2xpY2s9InR2LXdpZGdldC1zeW1ib2wtY2xpY2siLHQuV2lkZ2V0TG9hZD0idHYtd2lkZ2V0LWxvYWQiLHQuV2lkZ2V0UmVhZHk9InR2LXdpZGdldC1yZWFkeSIsdC5SZXNpemVJZnJhbWU9InR2LXdpZGdldC1yZXNpemUtaWZyYW1lIix0Lk5vRGF0YT0idHYtd2lkZ2V0LW5vLWRhdGEifShlPXQuTmFtZXN8fCh0Lk5hbWVzPXt9KSl9KHN8fChzPXt9KSk7Y29uc3Qgbj0iX19GQUlMX18iLG89Il9fTkhUVFBfXyIsYT1uZXcgUmVnRXhwKCJeaHR0cChzKT86KC8vKT8iKTtmdW5jdGlvbiBsKHQ9bG9jYXRpb24uaHJlZil7Y29uc3QgZT1mdW5jdGlvbih0KXt0cnl7Y29uc3QgZT1uZXcgVVJMKHQpO3JldHVybiBhLnRlc3QoZS5wcm90b2NvbCk/bnVsbDpvfWNhdGNoKHQpe3JldHVybiBufX0odCk7cmV0dXJuIGV8fHQucmVwbGFjZShhLCIiKX1jb25zdCBjPXt3aWRnZXRIb3N0OiJodHRwczovL3d3dy50cmFkaW5ndmlldy13aWRnZXQuY29tIixlbnY6IkJBVFRMRSJ9O2NvbnN0IGg9WyJsb2NhbGUiLCJzeW1ib2wiLCJtYXJrZXQiXTtjbGFzcyBke2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NvcHlyaWdodENvbnRhaW5lcj1udWxsO2NvbnN0IGU9dD8/dGhpcy5fZ2V0U2NyaXB0SW5mbygpO2UmJnRoaXMuX3JlcGxhY2VTY3JpcHQoZSl9aGFzQ29weXJpZ2h0KCl7cmV0dXJuISF0aGlzLl9jb3B5cmlnaHRDb250YWluZXJ9Z2V0IHdpZGdldElkKCl7dGhyb3cgbmV3IEVycm9yKCJNZXRob2QgbXVzdCBiZSBvdmVycmlkZGVuIil9d2lkZ2V0VXRtTmFtZSgpe3JldHVybiB0aGlzLndpZGdldElkfWdldCBkZWZhdWx0U2V0dGluZ3MoKXtyZXR1cm4gaVt0aGlzLndpZGdldElkXX1nZXQgcHJvcGVydGllc1RvV29ya1dpdGgoKXtyZXR1cm5bXX1nZXQgdXNlUGFyYW1zRm9yQ29ubmVjdFNvY2tldCgpe3JldHVybiExfWdldCB1c2VTbm93cGxvd1BhZ2VWaWV3KCl7cmV0dXJuITF9dXNlUXVlcnlTdHJpbmdQYXJhbWV0ZXJzKHQpe3JldHVybnt9fWZpbHRlclJhd1NldHRpbmdzKHQpe2NvbnN0IGU9e30saT17Li4udCwuLi50aGlzLnVzZVF1ZXJ5U3RyaW5nUGFyYW1ldGVycyh0KX0scj1PYmplY3Qua2V5cyhpKSxzPW5ldyBTZXQodGhpcy5wcm9wZXJ0aWVzVG9Xb3JrV2l0aCk7cmV0dXJuIHIuZm9yRWFjaCgodD0+e3MuaGFzKHQpJiYoZVt0XT1pW3RdKX0pKSxlfWdldCBzaG91bGRMaXN0ZW5Ub0lmcmFtZVJlc2l6ZSgpe3JldHVybiEwfWdldCBwcm9wZXJ0aWVzVG9Ta2lwSW5IYXNoKCl7cmV0dXJuWyJjdXN0b21lciIsImxvY2FsZSJdfWdldCBwcm9wZXJ0aWVzVG9BZGRUb0dldFBhcmFtcygpe3JldHVyblsibG9jYWxlIl19c2hvdWxkQWRkQ29weXJpZ2h0U3R5bGVzKCl7cmV0dXJuITB9X2RlZmF1bHRXaWR0aCgpe31fZGVmYXVsdEhlaWdodCgpe31fZ2V0U2NyaXB0SW5mbygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3VycmVudFNjcmlwdDtpZighdHx8IXQuc3JjKXJldHVybiBjb25zb2xlLmVycm9yKCJDb3VsZCBub3Qgc2VsZi1yZXBsYWNlIHRoZSBzY3JpcHQsIHdpZGdldCBlbWJlZGRpbmcgaGFzIGJlZW4gYWJvcnRlZCIpLG51bGw7cmV0dXJue3NjcmlwdFVSTDpmdW5jdGlvbih0KXtjb25zdCBlPW5ldyBVUkwodCxkb2N1bWVudC5iYXNlVVJJKTtyZXR1cm57aG9zdDplLmhvc3QscGF0aG5hbWU6ZS5wYXRobmFtZSxocmVmOmUuaHJlZixwcm90b2NvbDplLnByb3RvY29sfX0odC5zcmMpLHNjcmlwdEVsZW1lbnQ6dCxpZDp0LmlkLHJhd1NldHRpbmdzOnRoaXMuX3NjcmlwdENvbnRlbnRUb0pTT04odCksb3ZlcnJpZGVIb3N0OnQuZ2V0QXR0cmlidXRlKCJvdmVycmlkZS1ob3N0Iil9fV9yZXBsYWNlU2NyaXB0KGkpe2NvbnN0e3NjcmlwdFVSTDpyLHNjcmlwdEVsZW1lbnQ6bixyYXdTZXR0aW5nczpvLGlkOmEsb3ZlcnJpZGVIb3N0Omx9PWksaD1sfHxmdW5jdGlvbih0LGU9Yyl7aWYoIkJBVFRMRSI9PT1lLmVudil7aWYod2luZG93LldJREdFVF9IT1NUKXJldHVybiB3aW5kb3cuV0lER0VUX0hPU1Q7aWYodC5ob3N0Lm1hdGNoKC9cLlx3c3RcdypcLlx3diQvaSkpcmV0dXJuYGh0dHBzOi8vJHsoaT10Lmhvc3Qscj0zLGkuc3BsaXQoIi4iKS5zbGljZSgtcikuam9pbigiLiIpKS5yZXBsYWNlKC9eYmV0YTAoPz1cLnhzdGFnaW5nXC50diQpL2ksImJldGEwLXhzdGFnaW5nIikucmVwbGFjZSgvXC4oXHcpdiQvaSwoKHQsZSk9PmAtd2lkZ2V0LiR7ZX12YCkpfWB9dmFyIGkscjtyZXR1cm4gZS53aWRnZXRIb3N0fShyKSxkPW4ucGFyZW50Tm9kZTtvJiYidGltZWxpbmUiPT09dGhpcy53aWRnZXRVdG1OYW1lKCkmJihvLmxvY2FsZT0iZW4iKTtjb25zdCBnPW4ubm9uY2V8fG4uZ2V0QXR0cmlidXRlKCJub25jZSIpLHU9ZnVuY3Rpb24odCl7aWYobnVsbD09PXQpcmV0dXJuIG51bGw7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoIiN0cmFkaW5ndmlldy1jb3B5cmlnaHQiKSxpPXQucXVlcnlTZWxlY3RvcigiI3RyYWRpbmd2aWV3LXF1b3RlcyIpLHI9ZXx8aTtyZXR1cm4gciYmdC5yZW1vdmVDaGlsZChyKSxyfShkKSxtPWQucXVlcnlTZWxlY3RvcigiLnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQiKTt0aGlzLl9jb3B5cmlnaHRDb250YWluZXI9dXx8bTtjb25zdCBwPWQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0cmFkaW5ndmlldy13aWRnZXQtY29udGFpbmVyIik7dGhpcy5pZnJhbWVDb250YWluZXI9ZCYmcD9kOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG8mJih0aGlzLnNldHRpbmdzPXRoaXMuZmlsdGVyUmF3U2V0dGluZ3MobykpLG8mJnRoaXMuX3ZhbGlkYXRlU2V0dGluZ3MoKXx8KGNvbnNvbGUuZXJyb3IoIkludmFsaWQgc2V0dGluZ3MgcHJvdmlkZWQsIGZhbGwgYmFjayB0byBkZWZhdWx0cyIpLHRoaXMuc2V0dGluZ3M9dGhpcy5maWx0ZXJSYXdTZXR0aW5ncyh0aGlzLmRlZmF1bHRTZXR0aW5ncykpCjtjb25zdCBmPSIzMnB4Iix7d2lkdGg6dyxoZWlnaHQ6eX09dGhpcy5zZXR0aW5ncyxiPXZvaWQgMD09PXk/dm9pZCAwOmAke3l9JHtOdW1iZXIuaXNJbnRlZ2VyKHkpPyJweCI6IiJ9YCxTPXZvaWQgMD09PXc/dm9pZCAwOmAke3d9JHtOdW1iZXIuaXNJbnRlZ2VyKHcpPyJweCI6IiJ9YDtpZih2b2lkIDAhPT1TJiYodGhpcy5pZnJhbWVDb250YWluZXIuc3R5bGUud2lkdGg9Uyksdm9pZCAwIT09YiYmKHRoaXMuaWZyYW1lQ29udGFpbmVyLnN0eWxlLmhlaWdodD1iKSx0aGlzLnNob3VsZEFkZENvcHlyaWdodFN0eWxlcygpKXtjb25zdCB0PWZ1bmN0aW9uKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0LmlubmVySFRNTD1gXG5cdC50cmFkaW5ndmlldy13aWRnZXQtY29weXJpZ2h0IHtcblx0XHRmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcblx0XHRsaW5lLWhlaWdodDogMzJweCAhaW1wb3J0YW50O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDtcblx0XHQvKiBAbWl4aW4gc2YtcHJvLWRpc3BsYXktZm9udDsgKi9cblx0XHRmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnVHJlYnVjaGV0IE1TJywgUm9ib3RvLCBVYnVudHUsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1jb2xkLWdyYXktMzAwIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQgYSB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0Y29sb3I6ICR7ZVsiY29sb3ItY29sZC1ncmF5LTMwMCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQgYTp2aXNpdGVkIHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1jb2xkLWdyYXktMzAwIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCBhOmhvdmVyIC5ibHVlLXRleHQge1xuXHRcdGNvbG9yOiAke2VbImNvbG9yLWJyYW5kLWhvdmVyIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCBhOmFjdGl2ZSAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZC1hY3RpdmUiXX0gIWltcG9ydGFudDtcblx0fVxuXG5cdC50cmFkaW5ndmlldy13aWRnZXQtY29weXJpZ2h0IGE6dmlzaXRlZCAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cdGAsdH0oKTtnJiZ0LnNldEF0dHJpYnV0ZSgibm9uY2UiLGcpLHRoaXMuaWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpfWNvbnN0IHY9dGhpcy5oYXNDb3B5cmlnaHQoKT9gY2FsYygxMDAlIC0gJHtmfSlgOiIxMDAlIixDPWxvY2F0aW9uLmhvc3RuYW1lLFQ9bT8id2lkZ2V0X25ldyI6IndpZGdldCIsXz10aGlzLndpZGdldFV0bU5hbWUoKTt0aGlzLnNldHRpbmdzLnV0bV9zb3VyY2U9Qyx0aGlzLnNldHRpbmdzLnV0bV9tZWRpdW09VCx0aGlzLnNldHRpbmdzLnV0bV9jYW1wYWlnbj1fLHRoaXMuX3VwZGF0ZUNvcHlyaWdodEhyZWZQYXJhbXMoQyxULF8pO2NvbnN0IGs9dGhpcy5zZXR0aW5ncy5pZnJhbWVUaXRsZXx8YCR7dGhpcy53aWRnZXRJZC5yZXBsYWNlKCItIiwiICIpfSBUcmFkaW5nVmlldyB3aWRnZXRgLEE9dGhpcy5zZXR0aW5ncy5pZnJhbWVMYW5nfHwiZW4iO3RoaXMuaWZyYW1lPXRoaXMuX2NyZWF0ZUlmcmFtZSh2LGgsYSxrLEEpLHRoaXMuX2FkZENTUEVycm9yTGlzdGVuZXIoaCksZyYmdGhpcy5pZnJhbWUuc2V0QXR0cmlidXRlKCJub25jZSIsZyk7Y29uc3QgST10aGlzLmlmcmFtZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIudHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lcl9fd2lkZ2V0Iik7aWYoST8odChJLnBhcmVudEVsZW1lbnQpLnJlcGxhY2VDaGlsZCh0aGlzLmlmcmFtZSxJKSxuPy5yZW1vdmUoKSk6cD8odGhpcy5pZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLG4/LnJlbW92ZSgpKToodGhpcy5pZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLGQucmVwbGFjZUNoaWxkKHRoaXMuaWZyYW1lQ29udGFpbmVyLHQobikpKSx0aGlzLnNob3VsZExpc3RlblRvSWZyYW1lUmVzaXplJiZmdW5jdGlvbih0LGUsaSl7Y29uc3Qgcj1lLmNvbnRlbnRXaW5kb3c7aWYoIXIpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIkNhbm5vdCBsaXN0ZW4gdG8gdGhlIGV2ZW50IGZyb20gdGhlIHByb3ZpZGVkIGlmcmFtZSwgY29udGVudFdpbmRvdyBpcyBub3QgYXZhaWxhYmxlIiksKCk9Pnt9O2Z1bmN0aW9uIHMoZSl7ZS5zb3VyY2UmJmUuc291cmNlPT09ciYmZS5kYXRhJiZlLmRhdGEubmFtZSYmZS5kYXRhLm5hbWU9PT10JiZpKGUuZGF0YS5kYXRhKX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscywhMSl9KHMuTmFtZXMuUmVzaXplSWZyYW1lLHRoaXMuaWZyYW1lLCh0PT57dC53aWR0aCYmKHRoaXMuaWZyYW1lLnN0eWxlLndpZHRoPXQud2lkdGgrInB4Iix0aGlzLmlmcmFtZUNvbnRhaW5lci5zdHlsZS53aWR0aD10LndpZHRoKyJweCIpLHRoaXMuaWZyYW1lLnN0eWxlLmhlaWdodD10LmhlaWdodCsicHgiLHRoaXMuaWZyYW1lQ29udGFpbmVyLnN0eWxlLmhlaWdodD10LmhlaWdodCsodGhpcy5oYXNDb3B5cmlnaHQoKT8zMjowKSsicHgifSkpLHUpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5zdHlsZS5oZWlnaHQ9Zix0LnN0eWxlLmxpbmVIZWlnaHQ9Zix2b2lkIDAhPT1TJiYodC5zdHlsZS53aWR0aD1TKSx0LnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIix0LnN0eWxlLnZlcnRpY2FsQWxpZ249Im1pZGRsZSIsdC5pbm5lckhUTUw9dS5pbm5lckhUTUwsCnRoaXMuaWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpfX1faWZyYW1lU3JjQmFzZSh0KXtsZXQgZT1gJHt0fS9lbWJlZC13aWRnZXQvJHt0aGlzLndpZGdldElkfS9gO3JldHVybiB0aGlzLnNldHRpbmdzLmN1c3RvbWVyJiYtMSE9PXRoaXMucHJvcGVydGllc1RvU2tpcEluSGFzaC5pbmRleE9mKCJjdXN0b21lciIpJiYoZSs9YCR7dGhpcy5zZXR0aW5ncy5jdXN0b21lcn0vYCksZX1fdmFsaWRhdGVTZXR0aW5ncygpe2NvbnN0IHQ9KHQsZSk9PntpZih2b2lkIDA9PT10KXJldHVybiBlO2NvbnN0IGk9U3RyaW5nKHQpO3JldHVybi9eXGQrJC8udGVzdChpKT9wYXJzZUludChpKTovXihcZCslfGF1dG8pJC8udGVzdChpKT9pOm51bGx9LGU9dCh0aGlzLnNldHRpbmdzLndpZHRoLHRoaXMuX2RlZmF1bHRXaWR0aCgpKSxpPXQodGhpcy5zZXR0aW5ncy5oZWlnaHQsdGhpcy5fZGVmYXVsdEhlaWdodCgpKTtyZXR1cm4gbnVsbCE9PWUmJm51bGwhPT1pJiYodGhpcy5zZXR0aW5ncy53aWR0aD1lLHRoaXMuc2V0dGluZ3MuaGVpZ2h0PWksITApfV9zZXRTZXR0aW5nc1F1ZXJ5U3RyaW5nKHQpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzVG9BZGRUb0dldFBhcmFtcy5maWx0ZXIoKHQ9Pi0xIT09aC5pbmRleE9mKHQpKSksaT1mdW5jdGlvbih0LGUpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpO2Zvcihjb25zdCByIG9mIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihpW3JdPXRbcl0pO3JldHVybiBpfSh0aGlzLnNldHRpbmdzLGUpO2Zvcihjb25zdFtlLHJdb2YgT2JqZWN0LmVudHJpZXMoaSkpdC5zZWFyY2hQYXJhbXMuYXBwZW5kKGUscil9X3NldEhhc2hTdHJpbmcodCxlKXtjb25zdCBpPXt9O2UmJihpLmZyYW1lRWxlbWVudElkPWUpLE9iamVjdC5rZXlzKHRoaXMuc2V0dGluZ3MpLmZvckVhY2goKHQ9PnstMT09PXRoaXMucHJvcGVydGllc1RvU2tpcEluSGFzaC5pbmRleE9mKHQpJiYoaVt0XT10aGlzLnNldHRpbmdzW3RdKX0pKSwodGhpcy51c2VQYXJhbXNGb3JDb25uZWN0U29ja2V0fHx0aGlzLnVzZVNub3dwbG93UGFnZVZpZXcpJiYoaVsicGFnZS11cmkiXT1sKCkpO09iamVjdC5rZXlzKGkpLmxlbmd0aD4wJiYodC5oYXNoPWVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpfV9zY3JpcHRDb250ZW50VG9KU09OKHQpe2NvbnN0IGU9dC5pbm5lckhUTUwudHJpbSgpO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcihgV2lkZ2V0IHNldHRpbmdzIHBhcnNlIGVycm9yOiAke3R9YCksbnVsbH19X2NyZWF0ZUlmcmFtZSh0LGUsaSxyLHMpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7aSYmKG4uaWQ9aSksdGhpcy5zZXR0aW5ncy5lbmFibGVTY3JvbGxpbmd8fG4uc2V0QXR0cmlidXRlKCJzY3JvbGxpbmciLCJubyIpLG4uc2V0QXR0cmlidXRlKCJhbGxvd3RyYW5zcGFyZW5jeSIsInRydWUiKSxuLnNldEF0dHJpYnV0ZSgiZnJhbWVib3JkZXIiLCIwIiksbi5zdHlsZS51c2VyU2VsZWN0PSJub25lIixuLnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayIsbi5zdHlsZS5oZWlnaHQ9dCxuLnN0eWxlLndpZHRoPSIxMDAlIjtjb25zdCBvPW5ldyBVUkwodGhpcy5faWZyYW1lU3JjQmFzZShlKSk7cmV0dXJuIHRoaXMuX3NldFNldHRpbmdzUXVlcnlTdHJpbmcobyksdGhpcy5fc2V0SGFzaFN0cmluZyhvLGkpLG4uc2V0QXR0cmlidXRlKCJzcmMiLG8udG9TdHJpbmcoKSksbi50aXRsZT1yLG4ubGFuZz1zLG59X2FkZENTUEVycm9yTGlzdGVuZXIodCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLChlPT57ZS5ibG9ja2VkVVJJLmluY2x1ZGVzKHQpJiYodGhpcy5fdHJ5Rml4Q1NQSXNzdWVXaXRoRmFsbGJhY2sodCksY29uc29sZS53YXJuKCJQbGVhc2UgdXBkYXRlIHlvdXIgQ1NQIHJ1bGVzIHRvIGFsbG93IHRoZSB0cmFkaW5ndmlldy13aWRnZXQuY29tIG9yaWdpbiBmb3IgZnJhbWUtc3JjLiIpKX0pKX1fdHJ5Rml4Q1NQSXNzdWVXaXRoRmFsbGJhY2sodCl7Y29uc3QgZT10aGlzLmlmcmFtZS5nZXRBdHRyaWJ1dGUoInNyYyIpO2lmKGUpe2NvbnN0IGk9bmV3IFVSTChlLnJlcGxhY2UodCwiaHR0cHM6Ly9zLnRyYWRpbmd2aWV3LmNvbSIpKTt0aGlzLmlmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsaS5ocmVmKX19X3VwZGF0ZUNvcHlyaWdodEhyZWZQYXJhbXModCxlLGkpe2lmKHRoaXMuX2NvcHlyaWdodENvbnRhaW5lcil7Y29uc3Qgcj10aGlzLl9jb3B5cmlnaHRDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiYSIpO3ImJnIuZm9yRWFjaCgocj0+e2NvbnN0IHM9ci5nZXRBdHRyaWJ1dGUoImhyZWYiKTtpZihzKXRyeXtjb25zdCBuPW5ldyBVUkwocyk7bi5zZWFyY2hQYXJhbXMuc2V0KCJ1dG1fc291cmNlIix0KSxuLnNlYXJjaFBhcmFtcy5zZXQoInV0bV9tZWRpdW0iLGUpLG4uc2VhcmNoUGFyYW1zLnNldCgidXRtX2NhbXBhaWduIixpKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbi50b1N0cmluZygpKX1jYXRjaCh0KXtjb25zb2xlLmxvZyhgQ2Fubm90IHVwZGF0ZSBsaW5rIFVUTSBwYXJhbXMsIGhyZWY9IiR7c30iYCl9fSkpfX19Y29uc3QgZz03Njc7dmFyIHUsbSxwLGYsdzshZnVuY3Rpb24odCl7dC5BZGFwdGl2ZT0iYWRhcHRpdmUiLHQuUmVndWxhcj0icmVndWxhciIsdC5Db21wYWN0PSJjb21wYWN0In0odXx8KHU9e30pKSxmdW5jdGlvbih0KXt0LkFsbFN5bWJvbHM9ImFsbF9zeW1ib2xzIix0Lk1hcmtldD0ibWFya2V0Iix0LlN5bWJvbD0ic3ltYm9sIn0obXx8KG09e30pKSxmdW5jdGlvbih0KXt0LkNyeXB0b2N1cnJlbmNpZXM9ImNyeXB0byIsdC5DdXJyZW5jaWVzPSJmb3JleCIsdC5TdG9ja3M9InN0b2NrIix0LkluZGljZXM9ImluZGV4Iix0LkZ1dHVyZXM9ImZ1dHVyZXMiLHQuQm9uZHM9ImNmZCJ9KHB8fChwPXt9KSksZnVuY3Rpb24odCl7dC5IVE1MPSJodG1sIix0LlJlYWN0PSJyZWFjdCJ9KGZ8fChmPXt9KSksZnVuY3Rpb24odCl7CnRbdC5UaWNrZXJJdGVtSGVpZ2h0Tm9ybWFsPTQ0XT0iVGlja2VySXRlbUhlaWdodE5vcm1hbCIsdFt0LlRpY2tlckl0ZW1IZWlnaHRDb21wYWN0PTcyXT0iVGlja2VySXRlbUhlaWdodENvbXBhY3QifSh3fHwodz17fSkpO2NvbnN0IHk9ZztuZXcgY2xhc3MgZXh0ZW5kcyBke2dldCB3aWRnZXRJZCgpe3JldHVybiJ0aWNrZXItdGFwZSJ9Z2V0IHVzZVBhcmFtc0ZvckNvbm5lY3RTb2NrZXQoKXtyZXR1cm4hMH1maWx0ZXJSYXdTZXR0aW5ncyh0KXt2b2lkIDAhPT10LnRoZW1lJiYodC5jb2xvclRoZW1lPXQudGhlbWUpO2NvbnN0IGU9c3VwZXIuZmlsdGVyUmF3U2V0dGluZ3ModCk7bGV0IGk7ZS53aWR0aD0iMTAwJSI7dHJ5e2k9dGhpcy5pZnJhbWVDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9ZmluYWxseXtlLmhlaWdodD1mdW5jdGlvbih0LGUsaSxyKXtsZXQgcz0obj10PT09dS5BZGFwdGl2ZSYmcj9yPD15OnQ9PT11LkNvbXBhY3Qsbj83Mjo0NCk7dmFyIG47cmV0dXJuIGV8fChzKz0yKSxpJiYocys9MzIpLHN9KHQuZGlzcGxheU1vZGUsdC5pc1RyYW5zcGFyZW50LHRoaXMuaGFzQ29weXJpZ2h0KCksaSl9cmV0dXJuIGV9Z2V0IHByb3BlcnRpZXNUb1dvcmtXaXRoKCl7cmV0dXJuWyJzeW1ib2xzIiwibG9jYWxlIiwic2hvd1N5bWJvbExvZ28iLCJjb2xvclRoZW1lIiwiaXNUcmFuc3BhcmVudCIsImxhcmdlQ2hhcnRVcmwiLCJkaXNwbGF5TW9kZSIsImN1c3RvbWVyIl19fX0pKCk7"}},"time_used":77,"timings":{"blocked":-1,"dns":31,"connect":31,"send":0,"wait":3,"receive":-1,"ssl":9},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/contact-form-7/includes/js/index.js?ver=5.5.6","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.436Z","timestamp":1785145482436,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/contact-form-7/includes/js/index.js?ver=5.5.6 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 15407\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":15407,"size_decoded":15624,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (448)","md5":"7f53a99cb61b7cda29d6e15bd48b1009","sha1":"3a415cba548ed853015fe55415be34231aae188a","sha256":"25c9f9032e28797678891f7f79036fab91aeb5f7bb6cf392347dccf6b3e6bc1e","sha512":"5883346745c21c8b822e64170e56fe2b3a730ff4aeecc44790b9e2f2d954de6f1ab60aa6d21161efcd422fa1511277217312695a3ffaf42d8d226f0dc6bb8cca","ssdeep":"192:om6tMth9AzbzOmfyYnNQFzu78A6lkftVY08ZFtDwtxuCbQ+8RX0DSak15hPp9tmG:geQfyV4MHGyxP9jHLXH","tlshash":"b662932717f20432033370a6459b9741b325701bdcca9f503e5c86686f5cdbaa9f2bea","first_seen":"2025-05-15T11:09:19.008874Z","last_seen":"2026-07-27T09:45:50.958607Z","times_seen":6,"resource_available":true,"data":"ISBmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIGNvbnN0IGUgPSBlID0+IE1hdGguYWJzKHBhcnNlSW50KGUsIDEwKSksCiAgICAgICAgdCA9IChlLCB0KSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHIgPSBuZXcgTWFwKFsKICAgICAgICAgICAgICAgIFsiaW5pdCIsICJpbml0Il0sCiAgICAgICAgICAgICAgICBbInZhbGlkYXRpb25fZmFpbGVkIiwgImludmFsaWQiXSwKICAgICAgICAgICAgICAgIFsiYWNjZXB0YW5jZV9taXNzaW5nIiwgInVuYWNjZXB0ZWQiXSwKICAgICAgICAgICAgICAgIFsic3BhbSIsICJzcGFtIl0sCiAgICAgICAgICAgICAgICBbImFib3J0ZWQiLCAiYWJvcnRlZCJdLAogICAgICAgICAgICAgICAgWyJtYWlsX3NlbnQiLCAic2VudCJdLAogICAgICAgICAgICAgICAgWyJtYWlsX2ZhaWxlZCIsICJmYWlsZWQiXSwKICAgICAgICAgICAgICAgIFsic3VibWl0dGluZyIsICJzdWJtaXR0aW5nIl0sCiAgICAgICAgICAgICAgICBbInJlc2V0dGluZyIsICJyZXNldHRpbmciXSwKICAgICAgICAgICAgICAgIFsicGF5bWVudF9yZXF1aXJlZCIsICJwYXltZW50LXJlcXVpcmVkIl0KICAgICAgICAgICAgXSk7CiAgICAgICAgICAgIHIuaGFzKHQpICYmICh0ID0gci5nZXQodCkpLCBBcnJheS5mcm9tKHIudmFsdWVzKCkpLmluY2x1ZGVzKHQpIHx8ICh0ID0gYGN1c3RvbS0ke3Q9KHQ9dC5yZXBsYWNlKC9bXjAtOWEtel0rL2ksIiAiKS50cmltKCkpLnJlcGxhY2UoL1xzKy8sIi0iKX1gKTsKICAgICAgICAgICAgY29uc3QgbiA9IGUuZ2V0QXR0cmlidXRlKCJkYXRhLXN0YXR1cyIpOwogICAgICAgICAgICByZXR1cm4gZS53cGNmNy5zdGF0dXMgPSB0LCBlLnNldEF0dHJpYnV0ZSgiZGF0YS1zdGF0dXMiLCB0KSwgZS5jbGFzc0xpc3QuYWRkKHQpLCBuICYmIG4gIT09IHQgJiYgZS5jbGFzc0xpc3QucmVtb3ZlKG4pLCB0CiAgICAgICAgfSwKICAgICAgICByID0gKGUsIHQsIHIpID0+IHsKICAgICAgICAgICAgY29uc3QgbiA9IG5ldyBDdXN0b21FdmVudChgd3BjZjcke3R9YCwgewogICAgICAgICAgICAgICAgYnViYmxlczogITAsCiAgICAgICAgICAgICAgICBkZXRhaWw6IHIKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBlICYmIChlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKSksIGUuZGlzcGF0Y2hFdmVudChuKQogICAgICAgIH0sCiAgICAgICAgbiA9IGUgPT4gewogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICByb290OiB0LAogICAgICAgICAgICAgICAgbmFtZXNwYWNlOiByID0gImNvbnRhY3QtZm9ybS03L3YxIgogICAgICAgICAgICB9ID0gd3BjZjcuYXBpOwogICAgICAgICAgICByZXR1cm4gYS5yZWR1Y2VSaWdodCgoKGUsIHQpID0+IHIgPT4gdChyLCBlKSksIChlID0+IHsKICAgICAgICAgICAgICAgIGxldCBuLCBhLCB7CiAgICAgICAgICAgICAgICAgICAgdXJsOiBjLAogICAgICAgICAgICAgICAgICAgIHBhdGg6IHMsCiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IG8sCiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaSwKICAgICAgICAgICAgICAgICAgICBib2R5OiBsLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IHAsCiAgICAgICAgICAgICAgICAgICAgLi4uZAogICAgICAgICAgICAgICAgfSA9IGU7CiAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgbyAmJiAobiA9IHIucmVwbGFjZSgvXlwvfFwvJC9nLCAiIiksIGEgPSBvLnJlcGxhY2UoL15cLy8sICIiKSwgcyA9IGEgPyBuICsgIi8iICsgYSA6IG4pLCAic3RyaW5nIiA9PSB0eXBlb2YgcyAmJiAoLTEgIT09IHQuaW5kZXhPZigiPyIpICYmIChzID0gcy5yZXBsYWNlKCI/IiwgIiYiKSksIHMgPSBzLnJlcGxhY2UoL15cLy8sICIiKSwgYyA9IHQgKyBzKSwgaSA9IHsKICAgICAgICAgICAgICAgICAgICBBY2NlcHQ6ICJhcHBsaWNhdGlvbi9qc29uLCAqLyo7cT0wLjEiLAogICAgICAgICAgICAgICAgICAgIC4uLmkKICAgICAgICAgICAgICAgIH0sIGRlbGV0ZSBpWyJYLVdQLU5vbmNlIl0sIHAgJiYgKGwgPSBKU09OLnN0cmluZ2lmeShwKSwgaVsiQ29udGVudC1UeXBlIl0gPSAiYXBwbGljYXRpb24vanNvbiIpOwogICAgICAgICAgICAgICAgY29uc3QgdSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogImZldGNoX2Vycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIllvdSBhcmUgcHJvYmFibHkgb2ZmbGluZS4iCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmID0gewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiAiaW52YWxpZF9qc29uIiwKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIlRoZSByZXNwb25zZSBpcyBub3QgYSB2YWxpZCBKU09OIHJlc3BvbnNlLiIKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5mZXRjaChjIHx8IHMgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYsIHsgLi4uZCwKICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBpLAogICAgICAgICAgICAgICAgICAgIGJvZHk6IGwKICAgICAgICAgICAgICAgIH0pLnRoZW4oKGUgPT4gUHJvbWlzZS5yZXNvbHZlKGUpLnRoZW4oKGUgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChlLnN0YXR1cyA+PSAyMDAgJiYgZS5zdGF0dXMgPCAzMDApIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIHRocm93IGUKICAgICAgICAgICAgICAgIH0pKS50aGVuKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoMjA0ID09PSBlLnN0YXR1cykgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS5qc29uKSByZXR1cm4gZS5qc29uKCkuY2F0Y2goKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZgogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBmCiAgICAgICAgICAgICAgICB9KSkpLCAoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIHRocm93IHUKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSkoZSkKICAgICAgICB9LAogICAgICAgIGEgPSBbXTsKCiAgICBmdW5jdGlvbiBjKGUpIHsKICAgICAgICBsZXQgYSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgICAgaWYgKHdwY2Y3LmJsb2NrZWQpIHJldHVybiBzKGUpLCB2b2lkIHQoZSwgInN1Ym1pdHRpbmciKTsKICAgICAgICBjb25zdCBjID0gbmV3IEZvcm1EYXRhKGUpOwogICAgICAgIGEuc3VibWl0dGVyICYmIGEuc3VibWl0dGVyLm5hbWUgJiYgYy5hcHBlbmQoYS5zdWJtaXR0ZXIubmFtZSwgYS5zdWJtaXR0ZXIudmFsdWUpOwogICAgICAgIGNvbnN0IG8gPSB7CiAgICAgICAgICAgICAgICBjb250YWN0Rm9ybUlkOiBlLndwY2Y3LmlkLAogICAgICAgICAgICAgICAgcGx1Z2luVmVyc2lvbjogZS53cGNmNy5wbHVnaW5WZXJzaW9uLAogICAgICAgICAgICAgICAgY29udGFjdEZvcm1Mb2NhbGU6IGUud3BjZjcubG9jYWxlLAogICAgICAgICAgICAgICAgdW5pdFRhZzogZS53cGNmNy51bml0VGFnLAogICAgICAgICAgICAgICAgY29udGFpbmVyUG9zdElkOiBlLndwY2Y3LmNvbnRhaW5lclBvc3QsCiAgICAgICAgICAgICAgICBzdGF0dXM6IGUud3BjZjcuc3RhdHVzLAogICAgICAgICAgICAgICAgaW5wdXRzOiBBcnJheS5mcm9tKGMsIChlID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbMV07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0Lm1hdGNoKC9eXy8pICYmIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSkuZmlsdGVyKChlID0+ICExICE9PSBlKSksCiAgICAgICAgICAgICAgICBmb3JtRGF0YTogYwogICAgICAgICAgICB9LAogICAgICAgICAgICBpID0gdCA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKICAgICAgICAgICAgICAgIHIuc2V0QXR0cmlidXRlKCJpZCIsIHQuZXJyb3JfaWQpLCB0LmlkcmVmID8gci5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsIGA8YSBocmVmPSIjJHt0LmlkcmVmfSI+JHt0Lm1lc3NhZ2V9PC9hPmApIDogci5pbnNlcnRBZGphY2VudFRleHQoImJlZm9yZWVuZCIsIHQubWVzc2FnZSksIGUud3BjZjcucGFyZW50LnF1ZXJ5U2VsZWN0b3IoIi5zY3JlZW4tcmVhZGVyLXJlc3BvbnNlIHVsIikuYXBwZW5kQ2hpbGQocikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbCA9IHQgPT4gewogICAgICAgICAgICAgICAgY29uc3QgciA9IGUucXVlcnlTZWxlY3Rvcih0LmludG8pLAogICAgICAgICAgICAgICAgICAgIG4gPSByLnF1ZXJ5U2VsZWN0b3IoIi53cGNmNy1mb3JtLWNvbnRyb2wiKTsKICAgICAgICAgICAgICAgIG4uY2xhc3NMaXN0LmFkZCgid3BjZjctbm90LXZhbGlkIiksIG4uc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IiwgdC5lcnJvcl9pZCk7CiAgICAgICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgYS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgIndwY2Y3LW5vdC12YWxpZC10aXAiKSwgYS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwgInRydWUiKSwgYS5pbnNlcnRBZGphY2VudFRleHQoImJlZm9yZWVuZCIsIHQubWVzc2FnZSksIHIuYXBwZW5kQ2hpbGQoYSksIHIucXVlcnlTZWxlY3RvckFsbCgiW2FyaWEtaW52YWxpZF0iKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIiwgInRydWUiKQogICAgICAgICAgICAgICAgfSkpLCBuLmNsb3Nlc3QoIi51c2UtZmxvYXRpbmctdmFsaWRhdGlvbi10aXAiKSAmJiAobi5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIChlID0+IHsKICAgICAgICAgICAgICAgICAgICBhLnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiZGlzcGxheTogbm9uZSIpCiAgICAgICAgICAgICAgICB9KSksIGEuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgIGEuc2V0QXR0cmlidXRlKCJzdHlsZSIsICJkaXNwbGF5OiBub25lIikKICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgfTsKICAgICAgICBuKHsKICAgICAgICAgICAgZW5kcG9pbnQ6IGBjb250YWN0LWZvcm1zLyR7ZS53cGNmNy5pZH0vZmVlZGJhY2tgLAogICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwKICAgICAgICAgICAgYm9keTogYywKICAgICAgICAgICAgd3BjZjc6IHsKICAgICAgICAgICAgICAgIGVuZHBvaW50OiAiZmVlZGJhY2siLAogICAgICAgICAgICAgICAgZm9ybTogZSwKICAgICAgICAgICAgICAgIGRldGFpbDogbwogICAgICAgICAgICB9CiAgICAgICAgfSkudGhlbigobiA9PiB7CiAgICAgICAgICAgIGNvbnN0IGEgPSB0KGUsIG4uc3RhdHVzKTsKICAgICAgICAgICAgcmV0dXJuIG8uc3RhdHVzID0gbi5zdGF0dXMsIG8uYXBpUmVzcG9uc2UgPSBuLCBbImludmFsaWQiLCAidW5hY2NlcHRlZCIsICJzcGFtIiwgImFib3J0ZWQiXS5pbmNsdWRlcyhhKSA/IHIoZSwgYSwgbykgOiBbInNlbnQiLCAiZmFpbGVkIl0uaW5jbHVkZXMoYSkgJiYgcihlLCBgbWFpbCR7YX1gLCBvKSwgcihlLCAic3VibWl0IiwgbyksIG4KICAgICAgICB9KSkudGhlbigodCA9PiB7CiAgICAgICAgICAgIHQucG9zdGVkX2RhdGFfaGFzaCAmJiAoZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJfd3BjZjdfcG9zdGVkX2RhdGFfaGFzaCJdJykudmFsdWUgPSB0LnBvc3RlZF9kYXRhX2hhc2gpLCAibWFpbF9zZW50IiA9PT0gdC5zdGF0dXMgJiYgKGUucmVzZXQoKSwgZS53cGNmNy5yZXNldE9uTWFpbFNlbnQgPSAhMCksIHQuaW52YWxpZF9maWVsZHMgJiYgKHQuaW52YWxpZF9maWVsZHMuZm9yRWFjaChpKSwgdC5pbnZhbGlkX2ZpZWxkcy5mb3JFYWNoKGwpKSwgZS53cGNmNy5wYXJlbnQucXVlcnlTZWxlY3RvcignLnNjcmVlbi1yZWFkZXItcmVzcG9uc2UgW3JvbGU9InN0YXR1cyJdJykuaW5zZXJ0QWRqYWNlbnRUZXh0KCJiZWZvcmVlbmQiLCB0Lm1lc3NhZ2UpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIi53cGNmNy1yZXNwb25zZS1vdXRwdXQiKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIGUuaW5uZXJUZXh0ID0gdC5tZXNzYWdlCiAgICAgICAgICAgIH0pKQogICAgICAgIH0pKS5jYXRjaCgoZSA9PiBjb25zb2xlLmVycm9yKGUpKSkKICAgIH0KICAgIG4udXNlID0gZSA9PiB7CiAgICAgICAgYS51bnNoaWZ0KGUpCiAgICB9LCBuLnVzZSgoKGUsIG4pID0+IHsKICAgICAgICBpZiAoZS53cGNmNyAmJiAiZmVlZGJhY2siID09PSBlLndwY2Y3LmVuZHBvaW50KSB7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIGZvcm06IG4sCiAgICAgICAgICAgICAgICBkZXRhaWw6IGEKICAgICAgICAgICAgfSA9IGUud3BjZjc7CiAgICAgICAgICAgIHMobiksIHIobiwgImJlZm9yZXN1Ym1pdCIsIGEpLCB0KG4sICJzdWJtaXR0aW5nIikKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG4oZSkKICAgIH0pKTsKICAgIGNvbnN0IHMgPSBlID0+IHsKICAgICAgICBlLndwY2Y3LnBhcmVudC5xdWVyeVNlbGVjdG9yKCcuc2NyZWVuLXJlYWRlci1yZXNwb25zZSBbcm9sZT0ic3RhdHVzIl0nKS5pbm5lclRleHQgPSAiIiwgZS53cGNmNy5wYXJlbnQucXVlcnlTZWxlY3RvcigiLnNjcmVlbi1yZWFkZXItcmVzcG9uc2UgdWwiKS5pbm5lclRleHQgPSAiIiwgZS5xdWVyeVNlbGVjdG9yQWxsKCIud3BjZjctbm90LXZhbGlkLXRpcCIpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICBlLnJlbW92ZSgpCiAgICAgICAgfSkpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIlthcmlhLWludmFsaWRdIikuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCJhcmlhLWludmFsaWQiLCAiZmFsc2UiKQogICAgICAgIH0pKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCIud3BjZjctZm9ybS1jb250cm9sIikuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgIGUucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IiksIGUuY2xhc3NMaXN0LnJlbW92ZSgid3BjZjctbm90LXZhbGlkIikKICAgICAgICB9KSksIGUucXVlcnlTZWxlY3RvckFsbCgiLndwY2Y3LXJlc3BvbnNlLW91dHB1dCIpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICBlLmlubmVyVGV4dCA9ICIiCiAgICAgICAgfSkpCiAgICB9OwoKICAgIGZ1bmN0aW9uIG8oZSkgewogICAgICAgIGNvbnN0IGEgPSBuZXcgRm9ybURhdGEoZSksCiAgICAgICAgICAgIGMgPSB7CiAgICAgICAgICAgICAgICBjb250YWN0Rm9ybUlkOiBlLndwY2Y3LmlkLAogICAgICAgICAgICAgICAgcGx1Z2luVmVyc2lvbjogZS53cGNmNy5wbHVnaW5WZXJzaW9uLAogICAgICAgICAgICAgICAgY29udGFjdEZvcm1Mb2NhbGU6IGUud3BjZjcubG9jYWxlLAogICAgICAgICAgICAgICAgdW5pdFRhZzogZS53cGNmNy51bml0VGFnLAogICAgICAgICAgICAgICAgY29udGFpbmVyUG9zdElkOiBlLndwY2Y3LmNvbnRhaW5lclBvc3QsCiAgICAgICAgICAgICAgICBzdGF0dXM6IGUud3BjZjcuc3RhdHVzLAogICAgICAgICAgICAgICAgaW5wdXRzOiBBcnJheS5mcm9tKGEsIChlID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbMV07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0Lm1hdGNoKC9eXy8pICYmIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSkuZmlsdGVyKChlID0+ICExICE9PSBlKSksCiAgICAgICAgICAgICAgICBmb3JtRGF0YTogYQogICAgICAgICAgICB9OwogICAgICAgIG4oewogICAgICAgICAgICBlbmRwb2ludDogYGNvbnRhY3QtZm9ybXMvJHtlLndwY2Y3LmlkfS9yZWZpbGxgLAogICAgICAgICAgICBtZXRob2Q6ICJHRVQiLAogICAgICAgICAgICB3cGNmNzogewogICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICJyZWZpbGwiLAogICAgICAgICAgICAgICAgZm9ybTogZSwKICAgICAgICAgICAgICAgIGRldGFpbDogYwogICAgICAgICAgICB9CiAgICAgICAgfSkudGhlbigobiA9PiB7CiAgICAgICAgICAgIGUud3BjZjcucmVzZXRPbk1haWxTZW50ID8gKGRlbGV0ZSBlLndwY2Y3LnJlc2V0T25NYWlsU2VudCwgdChlLCAibWFpbF9zZW50IikpIDogdChlLCAiaW5pdCIpLCBjLmFwaVJlc3BvbnNlID0gbiwgcihlLCAicmVzZXQiLCBjKQogICAgICAgIH0pKS5jYXRjaCgoZSA9PiBjb25zb2xlLmVycm9yKGUpKSkKICAgIH0KICAgIG4udXNlKCgoZSwgcikgPT4gewogICAgICAgIGlmIChlLndwY2Y3ICYmICJyZWZpbGwiID09PSBlLndwY2Y3LmVuZHBvaW50KSB7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIGZvcm06IHIsCiAgICAgICAgICAgICAgICBkZXRhaWw6IG4KICAgICAgICAgICAgfSA9IGUud3BjZjc7CiAgICAgICAgICAgIHMociksIHQociwgInJlc2V0dGluZyIpCiAgICAgICAgfQogICAgICAgIHJldHVybiByKGUpCiAgICB9KSk7CiAgICBjb25zdCBpID0gKGUsIHQpID0+IHsKICAgICAgICAgICAgZm9yIChjb25zdCByIGluIHQpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0W3JdOwogICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKGBpbnB1dFtuYW1lPSIke3J9Il1gKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBlLnZhbHVlID0gIiIKICAgICAgICAgICAgICAgIH0pKSwgZS5xdWVyeVNlbGVjdG9yQWxsKGBpbWcud3BjZjctY2FwdGNoYS0ke3J9YCkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZS5zZXRBdHRyaWJ1dGUoInNyYyIsIG4pCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICBjb25zdCBhID0gLyhbMC05XSspXC4ocG5nfGdpZnxqcGVnKSQvLmV4ZWMobik7CiAgICAgICAgICAgICAgICBhICYmIGUucXVlcnlTZWxlY3RvckFsbChgaW5wdXRbbmFtZT0iX3dwY2Y3X2NhcHRjaGFfY2hhbGxlbmdlXyR7cn0iXWApLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgIGUudmFsdWUgPSBhWzFdCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbCA9IChlLCB0KSA9PiB7CiAgICAgICAgICAgIGZvciAoY29uc3QgciBpbiB0KSB7CiAgICAgICAgICAgICAgICBjb25zdCBuID0gdFtyXVswXSwKICAgICAgICAgICAgICAgICAgICBhID0gdFtyXVsxXTsKICAgICAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbChgLndwY2Y3LWZvcm0tY29udHJvbC13cmFwLiR7cn1gKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9IiR7cn0iXWApLnZhbHVlID0gIiIsIGUucXVlcnlTZWxlY3RvcigiLndwY2Y3LXF1aXotbGFiZWwiKS50ZXh0Q29udGVudCA9IG4sIGUucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT0iX3dwY2Y3X3F1aXpfYW5zd2VyXyR7cn0iXWApLnZhbHVlID0gYQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIHAodCkgewogICAgICAgIGNvbnN0IHIgPSBuZXcgRm9ybURhdGEodCk7CiAgICAgICAgdC53cGNmNyA9IHsKICAgICAgICAgICAgaWQ6IGUoci5nZXQoIl93cGNmNyIpKSwKICAgICAgICAgICAgc3RhdHVzOiB0LmdldEF0dHJpYnV0ZSgiZGF0YS1zdGF0dXMiKSwKICAgICAgICAgICAgcGx1Z2luVmVyc2lvbjogci5nZXQoIl93cGNmN192ZXJzaW9uIiksCiAgICAgICAgICAgIGxvY2FsZTogci5nZXQoIl93cGNmN19sb2NhbGUiKSwKICAgICAgICAgICAgdW5pdFRhZzogci5nZXQoIl93cGNmN191bml0X3RhZyIpLAogICAgICAgICAgICBjb250YWluZXJQb3N0OiBlKHIuZ2V0KCJfd3BjZjdfY29udGFpbmVyX3Bvc3QiKSksCiAgICAgICAgICAgIHBhcmVudDogdC5jbG9zZXN0KCIud3BjZjciKQogICAgICAgIH0sIHQucXVlcnlTZWxlY3RvckFsbCgiLmhhcy1zcGlubmVyIikuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgIGUuaW5zZXJ0QWRqYWNlbnRIVE1MKCJhZnRlcmVuZCIsICc8c3BhbiBjbGFzcz0id3BjZjctc3Bpbm5lciI+PC9zcGFuPicpCiAgICAgICAgfSkpLCAoZSA9PiB7CiAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiLndwY2Y3LWV4Y2x1c2l2ZS1jaGVja2JveCIpLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCAodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHQudGFyZ2V0LmdldEF0dHJpYnV0ZSgibmFtZSIpOwogICAgICAgICAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbChgaW5wdXRbdHlwZT0iY2hlY2tib3giXVtuYW1lPSIke3J9Il1gKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZSAhPT0gdC50YXJnZXQgJiYgKGUuY2hlY2tlZCA9ICExKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0pKHQpLCAoZSA9PiB7CiAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiLmhhcy1mcmVlLXRleHQiKS5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0LnF1ZXJ5U2VsZWN0b3IoImlucHV0LndwY2Y3LWZyZWUtdGV4dCIpLAogICAgICAgICAgICAgICAgICAgIG4gPSB0LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0sIGlucHV0W3R5cGU9InJhZGlvIl0nKTsKICAgICAgICAgICAgICAgIHIuZGlzYWJsZWQgPSAhbi5jaGVja2VkLCBlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIChlID0+IHsKICAgICAgICAgICAgICAgICAgICByLmRpc2FibGVkID0gIW4uY2hlY2tlZCwgZS50YXJnZXQgPT09IG4gJiYgbi5jaGVja2VkICYmIHIuZm9jdXMoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0pKHQpLCAoZSA9PiB7CiAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiLndwY2Y3LXZhbGlkYXRlcy1hcy11cmwiKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKHQgPT4gewogICAgICAgICAgICAgICAgICAgIGxldCByID0gZS52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgICAgICAgciAmJiAhci5tYXRjaCgvXlthLXpdW2EtejAtOS4rLV0qOi9pKSAmJiAtMSAhPT0gci5pbmRleE9mKCIuIikgJiYgKHIgPSByLnJlcGxhY2UoL15cLysvLCAiIiksIHIgPSAiaHR0cDovLyIgKyByKSwgZS52YWx1ZSA9IHIKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSkKICAgICAgICB9KSh0KSwgKGUgPT4gewogICAgICAgICAgICBpZiAoIWUucXVlcnlTZWxlY3RvcigiLndwY2Y3LWFjY2VwdGFuY2UiKSB8fCBlLmNsYXNzTGlzdC5jb250YWlucygid3BjZjctYWNjZXB0YW5jZS1hcy12YWxpZGF0aW9uIikpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgdCA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGxldCB0ID0gITA7CiAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIi53cGNmNy1hY2NlcHRhbmNlIikuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0IHx8IGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJvcHRpb25hbCIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT0iY2hlY2tib3giXScpOwogICAgICAgICAgICAgICAgICAgIChlLmNsYXNzTGlzdC5jb250YWlucygiaW52ZXJ0IikgJiYgci5jaGVja2VkIHx8ICFlLmNsYXNzTGlzdC5jb250YWlucygiaW52ZXJ0IikgJiYgIXIuY2hlY2tlZCkgJiYgKHQgPSAhMSkKICAgICAgICAgICAgICAgIH0pKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCIud3BjZjctc3VibWl0IikuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZS5kaXNhYmxlZCA9ICF0CiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdCgpLCBlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIChlID0+IHsKICAgICAgICAgICAgICAgIHQoKQogICAgICAgICAgICB9KSksIGUuYWRkRXZlbnRMaXN0ZW5lcigid3BjZjdyZXNldCIsIChlID0+IHsKICAgICAgICAgICAgICAgIHQoKQogICAgICAgICAgICB9KSkKICAgICAgICB9KSh0KSwgKHQgPT4gewogICAgICAgICAgICBjb25zdCByID0gKHQsIHIpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZSh0LmdldEF0dHJpYnV0ZSgiZGF0YS1zdGFydGluZy12YWx1ZSIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUodC5nZXRBdHRyaWJ1dGUoImRhdGEtbWF4aW11bS12YWx1ZSIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUodC5nZXRBdHRyaWJ1dGUoImRhdGEtbWluaW11bS12YWx1ZSIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuY2xhc3NMaXN0LmNvbnRhaW5zKCJkb3duIikgPyBuIC0gci52YWx1ZS5sZW5ndGggOiByLnZhbHVlLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgiZGF0YS1jdXJyZW50LXZhbHVlIiwgcyksIHQuaW5uZXJUZXh0ID0gcywgYSAmJiBhIDwgci52YWx1ZS5sZW5ndGggPyB0LmNsYXNzTGlzdC5hZGQoInRvby1sb25nIikgOiB0LmNsYXNzTGlzdC5yZW1vdmUoInRvby1sb25nIiksIGMgJiYgci52YWx1ZS5sZW5ndGggPCBjID8gdC5jbGFzc0xpc3QuYWRkKCJ0b28tc2hvcnQiKSA6IHQuY2xhc3NMaXN0LnJlbW92ZSgidG9vLXNob3J0IikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBuID0gZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmUKICAgICAgICAgICAgICAgICAgICB9LCB0LnF1ZXJ5U2VsZWN0b3JBbGwoIi53cGNmNy1jaGFyYWN0ZXItY291bnQiKS5mb3JFYWNoKChuID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IG4uZ2V0QXR0cmlidXRlKCJkYXRhLXRhcmdldC1uYW1lIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0iJHthfSJdYCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGMgJiYgKGMudmFsdWUgPSBjLmRlZmF1bHRWYWx1ZSwgcihuLCBjKSwgZS5pbml0ICYmIGMuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCAoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByKG4sIGMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIG4oewogICAgICAgICAgICAgICAgaW5pdDogITAKICAgICAgICAgICAgfSksIHQuYWRkRXZlbnRMaXN0ZW5lcigid3BjZjdyZXNldCIsIChlID0+IHsKICAgICAgICAgICAgICAgIG4oKQogICAgICAgICAgICB9KSkKICAgICAgICB9KSh0KSwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoZSA9PiB7CiAgICAgICAgICAgIHdwY2Y3LmNhY2hlZCAmJiB0LnJlc2V0KCkKICAgICAgICB9KSksIHQuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXQiLCAoZSA9PiB7CiAgICAgICAgICAgIHdwY2Y3LnJlc2V0KHQpCiAgICAgICAgfSkpLCB0LmFkZEV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsIChlID0+IHsKICAgICAgICAgICAgY29uc3QgciA9IGUuc3VibWl0dGVyOwogICAgICAgICAgICB3cGNmNy5zdWJtaXQodCwgewogICAgICAgICAgICAgICAgc3VibWl0dGVyOiByCiAgICAgICAgICAgIH0pLCBlLnByZXZlbnREZWZhdWx0KCkKICAgICAgICB9KSksIHQuYWRkRXZlbnRMaXN0ZW5lcigid3BjZjdzdWJtaXQiLCAoZSA9PiB7CiAgICAgICAgICAgIGUuZGV0YWlsLmFwaVJlc3BvbnNlLmNhcHRjaGEgJiYgaSh0LCBlLmRldGFpbC5hcGlSZXNwb25zZS5jYXB0Y2hhKSwgZS5kZXRhaWwuYXBpUmVzcG9uc2UucXVpeiAmJiBsKHQsIGUuZGV0YWlsLmFwaVJlc3BvbnNlLnF1aXopCiAgICAgICAgfSkpLCB0LmFkZEV2ZW50TGlzdGVuZXIoIndwY2Y3cmVzZXQiLCAoZSA9PiB7CiAgICAgICAgICAgIGUuZGV0YWlsLmFwaVJlc3BvbnNlLmNhcHRjaGEgJiYgaSh0LCBlLmRldGFpbC5hcGlSZXNwb25zZS5jYXB0Y2hhKSwgZS5kZXRhaWwuYXBpUmVzcG9uc2UucXVpeiAmJiBsKHQsIGUuZGV0YWlsLmFwaVJlc3BvbnNlLnF1aXopCiAgICAgICAgfSkpCiAgICB9CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgKGUgPT4gewogICAgICAgIHZhciB0OwogICAgICAgIGlmICgidW5kZWZpbmVkIiA9PSB0eXBlb2Ygd3BjZjcpIHJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIndwY2Y3IGlzIG5vdCBkZWZpbmVkLiIpOwogICAgICAgIGlmICh2b2lkIDAgPT09IHdwY2Y3LmFwaSkgcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigid3BjZjcuYXBpIGlzIG5vdCBkZWZpbmVkLiIpOwogICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB3aW5kb3cuZmV0Y2gpIHJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIllvdXIgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgd2luZG93LmZldGNoKCkuIik7CiAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHdpbmRvdy5Gb3JtRGF0YSkgcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiWW91ciBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCB3aW5kb3cuRm9ybURhdGEoKS4iKTsKICAgICAgICBjb25zdCByID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLndwY2Y3ID4gZm9ybSIpOwogICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIHIuZm9yRWFjaCA/ICh3cGNmNyA9IHsKICAgICAgICAgICAgaW5pdDogcCwKICAgICAgICAgICAgc3VibWl0OiBjLAogICAgICAgICAgICByZXNldDogbywKICAgICAgICAgICAgLi4ubnVsbCAhPT0gKHQgPSB3cGNmNykgJiYgdm9pZCAwICE9PSB0ID8gdCA6IHt9CiAgICAgICAgfSwgci5mb3JFYWNoKChlID0+IHdwY2Y3LmluaXQoZSkpKSkgOiBjb25zb2xlLmVycm9yKCJZb3VyIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IE5vZGVMaXN0LmZvckVhY2goKS4iKQogICAgfSkpCn0oKTs="}},"time_used":983,"timings":{"blocked":888,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"widgets.coingecko.com/coingecko-coin-price-chart-widget.js","fqdn":"widgets.coingecko.com","domain":"coingecko.com","tld":"com"},"ip":{"addr":"104.18.4.118","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.378Z","timestamp":1785145482378,"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":"coingecko.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 25 Jun 2026 14:12:31 GMT","end":"Wed, 23 Sep 2026 14:12:30 GMT"},"fingerprint":{"sha1":"79:92:C9:C4:9C:3B:8E:38:3D:B4:5C:FA:23:B7:32:6D:E5:6E:21:4C","sha256":"9F:04:05:47:D7:AB:A2:ED:CE:9E:40:05:15:CB:1D:E0:9F:A7:BB:C0:DC:EC:A2:90:53:EC:F5:8E:57:D6:62:B0"}}},"request":{"raw":"GET /coingecko-coin-price-chart-widget.js HTTP/1.1\r\nHost: widgets.coingecko.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://betaroi.ltd/\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\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nx-amz-id-2: HVt48XPcQcPd2BSM7XO0bTe1gA4PZbeAZPupqJ1u1QMGHHX1jmfrrwagQKROu9ovxZv5L1gFP+3Vz0txc4x+NEYgxxvdWvPQ\r\nx-amz-request-id: M0NVENZ475JWFM19\r\nx-amz-replication-status: COMPLETED\r\nlast-modified: Fri, 03 Jul 2026 04:41:15 GMT\r\nvary: accept-encoding\r\nx-amz-server-side-encryption: AES256\r\nx-amz-version-id: z8OQcqXxjMuZuzpsqdlY13waDUsbHeqL\r\nserver: cloudflare\r\npriority: u=3,i=?0\r\nage: 276879\r\nexpires: Tue, 28 Jul 2026 09:44:42 GMT\r\ncache-control: public, max-age=86400\r\ncf-cache-status: HIT\r\nstrict-transport-security: max-age=31536000; includeSubDomains; preload\r\nx-content-type-options: nosniff\r\nspeculation-rules: \"/cdn-cgi/speculation\"\r\netag: W/\"7407ff5900429b97bfdcff61871f6c42\"\r\ncontent-encoding: br\r\ncf-ray: a21ab5010f9d8deb-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":398105,"size_decoded":119848,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (37101)","md5":"7407ff5900429b97bfdcff61871f6c42","sha1":"370fd82d88ff97cd65fe5965b23eb428171f08fa","sha256":"9106f5db7bc26168c7328f30a66a562b709c6e54a9ea78260e4b1ad37a5cc404","sha512":"d1ef0a6ad4dfb2af4ed994030783563adc4428a707bbc22000c376a19697aa8d062c2f070b2045b5e03e3d77a8ee5efb94ecdfe9fd27e7188061c860c8e64899","ssdeep":"3072:G+20tYf422lfa8HvQOyslk061YSJQqGtroqEmuYBUZrnPPSiirUzpA1gvz:G5x20oyslk0WYSJdCVluYUBEuvz","tlshash":"16843bcdb2c0b15a47b353e5601f250ba33b29a86c4a8780f672f4d6687a48d6177f7c","first_seen":"2026-07-27T08:06:56.420851Z","last_seen":"2026-07-27T09:45:50.934118Z","times_seen":3,"resource_available":true,"data":"KGZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBpPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoaS5leHBvcnRzLGksaS5leHBvcnRzLG4pLGkubD0hMCxpLmV4cG9ydHN9bi5tPWUsbi5jPXQsbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLnI9ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCIhPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbihlLHQpe2lmKDEmdCYmKGU9bihlKSksOCZ0KXJldHVybiBlO2lmKDQmdCYmIm9iamVjdCI9PT10eXBlb2YgZSYmZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTplfSksMiZ0JiYic3RyaW5nIiE9dHlwZW9mIGUpZm9yKHZhciBpIGluIGUpbi5kKHIsaSxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0uYmluZChudWxsLGkpKTtyZXR1cm4gcn0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlWyJkZWZhdWx0Il19OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCwiYSIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9Ii8iLG4obi5zPTE5KX0pKHsiMDE0YiI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlNTNkIiksaT1uKCIwN2UzIiksYT1uKCI4ZTYwIiksbz1uKCI2M2I2Iikscz1uKCI5MTM4IiksYz1uKCJlYmZkIikuS0VZLGw9bigiMjk0YyIpLHU9bigiZGJkYiIpLGQ9bigiNDVmMiIpLHA9bigiNjJhMCIpLGY9bigiNTE2OCIpLGg9bigiY2NiOSIpLG09bigiNjcxOCIpLF89bigiNDdlZSIpLGc9bigiOTAwMyIpLHY9bigiZTRhZSIpLHk9bigiZjc3MiIpLGI9bigiMjQxZSIpLHc9bigiMzZjMyIpLHg9bigiMWJjMyIpLGs9bigiYWViZCIpLEM9bigiYTE1OSIpLFM9bigiMDM5NSIpLFA9bigiYmYwYiIpLE09bigiOWFhOSIpLEE9bigiZDlmNiIpLE89bigiYzNhMSIpLEQ9UC5mLFQ9QS5mLEk9Uy5mLGo9ci5TeW1ib2wsRj1yLkpTT04sej1GJiZGLnN0cmluZ2lmeSxMPSJwcm90b3R5cGUiLEU9ZigiX2hpZGRlbiIpLE49ZigidG9QcmltaXRpdmUiKSxSPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFY9dSgic3ltYm9sLXJlZ2lzdHJ5IiksQj11KCJzeW1ib2xzIiksJD11KCJvcC1zeW1ib2xzIiksVz1PYmplY3RbTF0sSD0iZnVuY3Rpb24iPT10eXBlb2YgaiYmISFNLmYsVT1yLlFPYmplY3QsRz0hVXx8IVVbTF18fCFVW0xdLmZpbmRDaGlsZCxxPWEmJmwoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPUMoVCh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiBUKHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pKT9mdW5jdGlvbihlLHQsbil7dmFyIHI9RChXLHQpO3ImJmRlbGV0ZSBXW3RdLFQoZSx0LG4pLHImJmUhPT1XJiZUKFcsdCxyKX06VCxLPWZ1bmN0aW9uKGUpe3ZhciB0PUJbZV09QyhqW0xdKTtyZXR1cm4gdC5faz1lLHR9LEo9SCYmInN5bWJvbCI9PXR5cGVvZiBqLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBqfSxZPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT09PVcmJlkoJCx0LG4pLHYoZSksdD14KHQsITApLHYobiksaShCLHQpPyhuLmVudW1lcmFibGU/KGkoZSxFKSYmZVtFXVt0XSYmKGVbRV1bdF09ITEpLG49QyhuLHtlbnVtZXJhYmxlOmsoMCwhMSl9KSk6KGkoZSxFKXx8VChlLEUsaygxLHt9KSksZVtFXVt0XT0hMCkscShlLHQsbikpOlQoZSx0LG4pfSxYPWZ1bmN0aW9uKGUsdCl7dihlKTt2YXIgbixyPV8odD13KHQpKSxpPTAsYT1yLmxlbmd0aDt3aGlsZShhPmkpWShlLG49cltpKytdLHRbbl0pO3JldHVybiBlfSxaPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/QyhlKTpYKEMoZSksdCl9LFE9ZnVuY3Rpb24oZSl7dmFyIHQ9Ui5jYWxsKHRoaXMsZT14KGUsITApKTtyZXR1cm4hKHRoaXM9PT1XJiZpKEIsZSkmJiFpKCQsZSkpJiYoISh0fHwhaSh0aGlzLGUpfHwhaShCLGUpfHxpKHRoaXMsRSkmJnRoaXNbRV1bZV0pfHx0KX0sZWU9ZnVuY3Rpb24oZSx0KXtpZihlPXcoZSksdD14KHQsITApLGUhPT1XfHwhaShCLHQpfHxpKCQsdCkpe3ZhciBuPUQoZSx0KTtyZXR1cm4hbnx8IWkoQix0KXx8aShlLEUpJiZlW0VdW3RdfHwobi5lbnVtZXJhYmxlPSEwKSxufX0sdGU9ZnVuY3Rpb24oZSl7dmFyIHQsbj1JKHcoZSkpLHI9W10sYT0wO3doaWxlKG4ubGVuZ3RoPmEpaShCLHQ9blthKytdKXx8dD09RXx8dD09Y3x8ci5wdXNoKHQpO3JldHVybiByfSxuZT1mdW5jdGlvbihlKXt2YXIgdCxuPWU9PT1XLHI9SShuPyQ6dyhlKSksYT1bXSxvPTA7d2hpbGUoci5sZW5ndGg+bykhaShCLHQ9cltvKytdKXx8biYmIWkoVyx0KXx8YS5wdXNoKEJbdF0pO3JldHVybiBhfTtIfHwoaj1mdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBqKXRocm93IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yISIpO3ZhciBlPXAoYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApLHQ9ZnVuY3Rpb24obil7dGhpcz09PVcmJnQuY2FsbCgkLG4pLGkodGhpcyxFKSYmaSh0aGlzW0VdLGUpJiYodGhpc1tFXVtlXT0hMSkscSh0aGlzLGUsaygxLG4pKX07cmV0dXJuIGEmJkcmJnEoVyxlLHtjb25maWd1cmFibGU6ITAsc2V0OnR9KSxLKGUpfSxzKGpbTF0sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fa30pKSxQLmY9ZWUsQS5mPVksbigiNmFiZiIpLmY9Uy5mPXRlLG4oIjM1NWQiKS5mPVEsTS5mPW5lLGEmJiFuKCJiOGUzIikmJnMoVywicHJvcGVydHlJc0VudW1lcmFibGUiLFEsITApLGguZj1mdW5jdGlvbihlKXtyZXR1cm4gSyhmKGUpKX0pLG8oby5HK28uVytvLkYqIUgse1N5bWJvbDpqfSk7Zm9yKHZhciByZT0iaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMiLnNwbGl0KCIsIiksaWU9MDtyZS5sZW5ndGg+aWU7KWYocmVbaWUrK10pO2Zvcih2YXIgYWU9TyhmLnN0b3JlKSxvZT0wO2FlLmxlbmd0aD5vZTspbShhZVtvZSsrXSk7byhvLlMrby5GKiFILCJTeW1ib2wiLHtmb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoVixlKz0iIik/VltlXTpWW2VdPWooZSl9LGtleUZvcjpmdW5jdGlvbihlKXtpZighSihlKSl0aHJvdyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBhIHN5bWJvbCEiKTtmb3IodmFyIHQgaW4gVilpZihWW3RdPT09ZSlyZXR1cm4gdH0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7Rz0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7Rz0hMX19KSxvKG8uUytvLkYqIUgsIk9iamVjdCIse2NyZWF0ZTpaLGRlZmluZVByb3BlcnR5OlksZGVmaW5lUHJvcGVydGllczpYLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjplZSxnZXRPd25Qcm9wZXJ0eU5hbWVzOnRlLGdldE93blByb3BlcnR5U3ltYm9sczpuZX0pO3ZhciBzZT1sKChmdW5jdGlvbigpe00uZigxKX0pKTtvKG8uUytvLkYqc2UsIk9iamVjdCIse2dldE93blByb3BlcnR5U3ltYm9sczpmdW5jdGlvbihlKXtyZXR1cm4gTS5mKGIoZSkpfX0pLEYmJm8oby5TK28uRiooIUh8fGwoKGZ1bmN0aW9uKCl7dmFyIGU9aigpO3JldHVybiJbbnVsbF0iIT16KFtlXSl8fCJ7fSIhPXooe2E6ZX0pfHwie30iIT16KE9iamVjdChlKSl9KSkpLCJKU09OIix7c3RyaW5naWZ5OmZ1bmN0aW9uKGUpe3ZhciB0LG4scj1bZV0saT0xO3doaWxlKGFyZ3VtZW50cy5sZW5ndGg+aSlyLnB1c2goYXJndW1lbnRzW2krK10pO2lmKG49dD1yWzFdLCh5KHQpfHx2b2lkIDAhPT1lKSYmIUooZSkpcmV0dXJuIGcodCl8fCh0PWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4mJih0PW4uY2FsbCh0aGlzLGUsdCkpLCFKKHQpKXJldHVybiB0fSksclsxXT10LHouYXBwbHkoRixyKX19KSxqW0xdW05dfHxuKCIzNWU4IikoaltMXSxOLGpbTF0udmFsdWVPZiksZChqLCJTeW1ib2wiKSxkKE1hdGgsIk1hdGgiLCEwKSxkKHIuSlNPTiwiSlNPTiIsITApfSwiMDFmOSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyZDAwIiksaT1uKCI1Y2ExIiksYT1uKCIyYWJhIiksbz1uKCIzMmU5Iikscz1uKCI4NGYyIiksYz1uKCI0MWEwIiksbD1uKCI3ZjIwIiksdT1uKCIzOGZkIiksZD1uKCIyYjRjIikoIml0ZXJhdG9yIikscD0hKFtdLmtleXMmJiJuZXh0ImluW10ua2V5cygpKSxmPSJAQGl0ZXJhdG9yIixoPSJrZXlzIixtPSJ2YWx1ZXMiLF89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLGcsdix5LGIpe2Mobix0LGcpO3ZhciB3LHgsayxDPWZ1bmN0aW9uKGUpe2lmKCFwJiZlIGluIEEpcmV0dXJuIEFbZV07c3dpdGNoKGUpe2Nhc2UgaDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyxlKX07Y2FzZSBtOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyxlKX19LFM9dCsiIEl0ZXJhdG9yIixQPXY9PW0sTT0hMSxBPWUucHJvdG90eXBlLE89QVtkXXx8QVtmXXx8diYmQVt2XSxEPU98fEModiksVD12P1A/QygiZW50cmllcyIpOkQ6dm9pZCAwLEk9IkFycmF5Ij09dCYmQS5lbnRyaWVzfHxPO2lmKEkmJihrPXUoSS5jYWxsKG5ldyBlKSksayE9PU9iamVjdC5wcm90b3R5cGUmJmsubmV4dCYmKGwoayxTLCEwKSxyfHwiZnVuY3Rpb24iPT10eXBlb2Yga1tkXXx8byhrLGQsXykpKSxQJiZPJiZPLm5hbWUhPT1tJiYoTT0hMCxEPWZ1bmN0aW9uKCl7cmV0dXJuIE8uY2FsbCh0aGlzKX0pLHImJiFifHwhcCYmIU0mJkFbZF18fG8oQSxkLEQpLHNbdF09RCxzW1NdPV8sdilpZih3PXt2YWx1ZXM6UD9EOkMobSksa2V5czp5P0Q6QyhoKSxlbnRyaWVzOlR9LGIpZm9yKHggaW4gdyl4IGluIEF8fGEoQSx4LHdbeF0pO2Vsc2UgaShpLlAraS5GKihwfHxNKSx0LHcpO3JldHVybiB3fX0sIjAyZjQiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI0NTg4IiksaT1uKCJiZTEzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciBhLG8scz1TdHJpbmcoaSh0KSksYz1yKG4pLGw9cy5sZW5ndGg7cmV0dXJuIGM8MHx8Yz49bD9lPyIiOnZvaWQgMDooYT1zLmNoYXJDb2RlQXQoYyksYTw1NTI5Nnx8YT41NjMxOXx8YysxPT09bHx8KG89cy5jaGFyQ29kZUF0KGMrMSkpPDU2MzIwfHxvPjU3MzQzP2U/cy5jaGFyQXQoYyk6YTplP3Muc2xpY2UoYyxjKzIpOm8tNTYzMjArKGEtNTUyOTY8PDEwKSs2NTUzNil9fX0sIjAzOTAiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMDJmNCIpKCEwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0KyhuP3IoZSx0KS5sZW5ndGg6MSl9fSwiMDM5NSI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjM2YzMiKSxpPW4oIjZhYmYiKS5mLGE9e30udG9TdHJpbmcsbz0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdLHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBpKGUpfWNhdGNoKHQpe3JldHVybiBvLnNsaWNlKCl9fTtlLmV4cG9ydHMuZj1mdW5jdGlvbihlKXtyZXR1cm4gbyYmIltvYmplY3QgV2luZG93XSI9PWEuY2FsbChlKT9zKGUpOmkocihlKSl9fSwiMDQyMyI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IuaZguS+oee3j+mhjeODqeODs+OCryIsIm1jYXAiOiLmmYLkvqHnt4/poY0iLCIyNGhfdm9sdW1lIjoiMjTmmYLplpPps6XosrTml48iLCIyNGhfaGlnaF9sb3ciOiIyNOaZgumWkyDmnIDpq5jlgKQv5pyA5a6J5YCkIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH3jgavjgojjgovmj5DkvpsiLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IuS7ruaDs+mAmuiyqOS+oeagvOOBruavlOi8gyIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiLku67mg7PpgJrosqjmmYLkvqHnt4/poY3jga7mr5TovIMifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR944Gr44KI44KL5o+Q5L6bIn0sImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjRI5pyA6auY5YCkIiwiMjRoX2xvdyI6IjI0SOacgOWuieWApCIsInZpZXdfcHJpY2VfY2hhcnQiOiIle2NvaW5944Gu5L6h5qC844OB44Oj44O844OI44KS6KaL44KLIiwicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH3jgavjgojjgovmj5DkvpsifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfeOBq+OCiOOCi+aPkOS+myJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR944Gr44KI44KL5o+Q5L6bIn0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR944Gr44KI44KL5o+Q5L6bIn0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0SOacgOmrmOWApCIsIjI0aF9sb3ciOiIyNEjmnIDlronlgKQiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufeOBruS+oeagvOODgeODo+ODvOODiOOCkuimi+OCiyIsInBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR944Gr44KI44KL5o+Q5L6bIn0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufeOBruS+oeagvOODgeODo+ODvOODiOOCkuimi+OCiyIsInBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR944Gr44KI44KL5o+Q5L6bIn0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiLku67mg7PpgJrosqjjg4fjg7zjgr/kuIDopqciLCJzdWJ0aXRsZSI6IijmmYLkvqHnt4/poY3kuIrkvY0le3RvcH0pIiwicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH3jgavjgojjgovmj5DkvpsifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiLlhY3osqzkuovpoIU6IOOBk+OBruODhOODvOODq+OBr+OCqOODs+OCv+ODvOODhuOCpOODoeODs+ODiOOCkuebrueahOOBqOOBl+OBpuaPkOS+m+OBleOCjOOBpuOBiuOCiuOAgeiyoeWLmeeahOOBquWKqeiogOOCkuaIkOOBmeOCguOBruOBp+OBr+OBguOCiuOBvuOBm+OCk+OAgiIsInNwaW4iOiLjgrnjg5Tjg7MiLCJhdmFpbGFibGVfY29pbnMiOiLliKnnlKjlj6/og73jgarjgrPjgqTjg7MifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJDb2luR2Vja28g5L6h5qC844Ki44OD44OX44OH44O844OIIiwidG90YWxfbWNhcCI6IuaZguS+oee3j+mhjeWQiOioiCIsIjI0aF92b2wiOiIyNEjlj5blvJXpq5giLCJkb20iOiLljaDmnInnjocifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoi5Y+W5byV5omAIiwicGFpciI6IumAmuiyqOODmuOCoiIsInByaWNlIjoi5L6h5qC8Iiwidm9sdW1lIjoi5Y+W5byV6auYIiwidHJ1c3Rfc2NvcmUiOiLjg4jjg6njgrnjg4jjgrnjgrPjgqIiLCJ2aWV3X3ByaWNlX2NoYXJ0Ijoi5L6h5qC844OB44Oj44O844OI44KS6KaL44KLIiwicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH3jgavjgojjgovmj5DkvpsiLCJ2aWV3X2FsbCI6IuOBmeOBueOBpuOBriAle2NvaW59IOODnuODvOOCseODg+ODiOOCkuihqOekuiJ9fScpfSwiMDU2YyI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6Iue4veW4guWAvOaOkuWQjSIsIm1jYXAiOiLnuL3luILlgLwiLCIyNGhfdm9sdW1lIjoiMjQg5bCP5pmC5Lqk5piT6YePIiwiMjRoX2hpZ2hfbG93IjoiMjQg5bCP5pmC6auY5YO5L+S9juWDuSJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLnlLEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDmj5DkvpsiLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IuWKoOWvhuiyqOW5o+WMr+eOh+avlOi8gyIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiLliqDlr4bosqjluaPluILlgLzmr5TovIMifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLnlLEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDmj5DkvpsifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNCDlsI/mmYLpq5jlg7kiLCIyNGhfbG93IjoiMjQg5bCP5pmC5L2O5YO5Iiwidmlld19wcmljZV9jaGFydCI6IuafpeeciyAle2NvaW59IOeahOWMr+eOh+WcluihqCIsInBvd2VyZWRfYnkiOiLnlLEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDmj5DkvpsifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi55SxICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g5o+Q5L6bIn0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IueUsSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOaPkOS+myJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi55SxICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g5o+Q5L6bIn0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0IOWwj+aZgumrmOWDuSIsIjI0aF9sb3ciOiIyNCDlsI/mmYLkvY7lg7kiLCJ2aWV3X3ByaWNlX2NoYXJ0Ijoi5p+l55yLICV7Y29pbn0g55qE5Yyv546H5ZyW6KGoIiwicG93ZXJlZF9ieSI6IueUsSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOaPkOS+myJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6IuafpeeciyAle2NvaW59IOeahOWMr+eOh+i1sOWLouWcliIsInBvd2VyZWRfYnkiOiLnlLEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDmj5DkvpsifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6IuWKoOWvhuiyqOW5o+aoueeLgOWcliIsInN1YnRpdGxlIjoiKOW4guWAvOWJjSAle3RvcH0g5ZCNKSIsInBvd2VyZWRfYnkiOiLnlLEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDmj5DkvpsifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiLlhY3osqzogbLmmI7vvJrmraTlt6Xlhbflg4XkvpvlqJvmqILkuYvnlKjvvIzkuI3mp4vmiJDosqHli5nlu7rorbDjgIIiLCJzcGluIjoiU3BpbiIsImF2YWlsYWJsZV9jb2lucyI6IuWPr+eUqOiyqOW5oyJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6IkNvaW5HZWNrbyDljK/njofmm7TmlrAiLCJ0b3RhbF9tY2FwIjoi57i95biC5YC8IiwiMjRoX3ZvbCI6IjI0IOWwj+aZguS6pOaYk+mHjyIsImRvbSI6IuW4guS9lOeOhyJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiLkuqTmmJPlubPlj7AiLCJwYWlyIjoi5bCNIiwicHJpY2UiOiLlg7nmoLwiLCJ2b2x1bWUiOiLkuqTmmJPph48iLCJ0cnVzdF9zY29yZSI6IuS/oeS7u+WIhuaVuCIsInZpZXdfcHJpY2VfY2hhcnQiOiLmn6XnnIvljK/njofotbDli6LlnJYiLCJwb3dlcmVkX2J5Ijoi55SxICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g5o+Q5L6bIiwidmlld19hbGwiOiLmn6XnnIvmiYDmnIkgJXtjb2lufSDluILloLQifX0nKX0sIjA3ZTMiOmZ1bmN0aW9uKGUsdCl7dmFyIG49e30uaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uY2FsbChlLHQpfX0sIjA4MjUiOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJDbGFzc2lmaWNhIGNhcC4gZGkgbWVyY2F0byIsIm1jYXAiOiJDYXAuIGRpIG1lcmNhdG8iLCIyNGhfdm9sdW1lIjoiVm9sdW1lIGluIDI0IG9yZSIsIjI0aF9oaWdoX2xvdyI6Ik1heC9taW4gaW4gMjQgb3JlIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlBvd2VyZWQgYnkgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiQ29uZnJvbnRvIHByZXp6aSBkZWxsZSBjcmlwdG8iLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiQ29uZnJvbnRvIGRpIGNhcGl0YWxpenphemlvbmUgZGkgbWVyY2F0byBkZWxsZSBjcmlwdG8ifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiJNYXNzaW1vIGluIDI0IG9yZSIsIjI0aF9sb3ciOiJNaW5pbW8gaW4gMjQgb3JlIiwidmlld19wcmljZV9jaGFydCI6IlZpc3VhbGl6emEgZ3JhZmljbyBwcmV6emkgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUG93ZXJlZCBieSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlBvd2VyZWQgYnkgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUG93ZXJlZCBieSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6Ik1hc3NpbW8gaW4gMjQgb3JlIiwiMjRoX2xvdyI6Ik1pbmltbyBpbiAyNCBvcmUiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmlzdWFsaXp6YSBncmFmaWNvIHByZXp6aSAle2NvaW59IiwicG93ZXJlZF9ieSI6IlBvd2VyZWQgYnkgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6IlZpc3VhbGl6emEgZ3JhZmljbyBwcmV6emkgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6Ik1hcHBhIGFkIGFsYmVybyBkZWxsZSBjcmlwdG92YWx1dGUiLCJzdWJ0aXRsZSI6IihWYWx1dGUgdG9wICV7dG9wfSBwZXIgY2FwaXRhbGl6emF6aW9uZSBkaSBtZXJjYXRvKSIsInBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJEaXNjbGFpbWVyOiBRdWVzdGkgc3RydW1lbnRpIHNvbm8gYSBzY29wbyBkaSBpbnRyYXR0ZW5pbWVudG8gZSBub24gY29zdGl0dWlzY29ubyB1bmEgY29uc3VsZW56YSBmaW5hbnppYXJpYS4iLCJzcGluIjoiU3BpbiIsImF2YWlsYWJsZV9jb2lucyI6IlZhbHV0ZSBEaXNwb25pYmlsaSJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6IkFnZ2lvcm5hbWVudG8gcHJlenppIENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiJDYXAuIGRpIG1lcmNhdG8gdG90YWxlIiwiMjRoX3ZvbCI6IlZvbHVtZSBpbiAyNCBvcmUiLCJkb20iOiJEb20ifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiRXhjaGFuZ2UiLCJwYWlyIjoiQ29wcGlhIiwicHJpY2UiOiJQcmV6em8iLCJ2b2x1bWUiOiJWb2x1bWUiLCJ0cnVzdF9zY29yZSI6IlB1bnRlZ2dpbyBkaSBmaWR1Y2lhIiwidmlld19wcmljZV9jaGFydCI6IlZpc3VhbGl6emEgZ3JhZmljbyBwcmV6emkiLCJwb3dlcmVkX2J5IjoiUG93ZXJlZCBieSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiJWaXN1YWxpenphIHR1dHRpIGkgbWVyY2F0aSAle2NvaW59In19Jyl9LCIwYmZiIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNiN2MiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1yKHRoaXMpLHQ9IiI7cmV0dXJuIGUuZ2xvYmFsJiYodCs9ImciKSxlLmlnbm9yZUNhc2UmJih0Kz0iaSIpLGUubXVsdGlsaW5lJiYodCs9Im0iKSxlLnVuaWNvZGUmJih0Kz0idSIpLGUuc3RpY2t5JiYodCs9InkiKSx0fX0sIjBkNTgiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJjZTEwIiksaT1uKCJlMTFlIik7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gcihlLGkpfX0sIjBmN2MiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNjg4ZSIpO2UuZXhwb3J0cz1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8cn0sIjBmYzkiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCIzYTM4IiksaT1NYXRoLm1heCxhPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlPXIoZSksZTwwP2koZSt0LDApOmEoZSx0KX19LCIxMTNkIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24ucih0KTtuKCI2YjU0Iik7dmFyIHI9bigiMmIwZSIpLGk9bigiYzg5NCIpLGE9bigiNTMwOSIpLG89bigiYWYxNCIpLHM9bigiYzY0OSIpLGM9bigiMmYwOCIpLGw9bigiZDg1MCIpLHU9bi5uKGwpO3JbImEiXS51c2UoaVsiYSJdKTt2YXIgZD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7c2hhZG93OiExfTtyWyJhIl0uY3VzdG9tRWxlbWVudCgiY29pbmdlY2tvLWNvaW4tcHJpY2UtY2hhcnQtd2lkZ2V0IixjWyJhIl0se3NoYWRvdzplLnNoYWRvdyxzaGFkb3dDc3M6dS5hLnRvU3RyaW5nKCksY29ubmVjdGVkQ2FsbGJhY2s6ZnVuY3Rpb24oKXtpZighZS5zaGFkb3cpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5pbm5lckhUTUw9dS5hLnRvU3RyaW5nKCksZG9jdW1lbnQuaGVhZC5hcHBlbmQodCl9fX0pfTtPYmplY3Qob1siYSJdKSgpP2Qoe3NoYWRvdzohMH0pOk9iamVjdChzWyJjIl0pKFthWyJhIl0uY3VzdG9tRWxlbWVudCxhWyJhIl0uZmV0Y2gsYVsiYSJdLmNzc3Zhcl0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGQoe3NoYWRvdzohMX0pfSkpfSwxMTUzOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODNjMiIpLGk9cigiJVN0cmluZyUiKSxhPXIoIiVUeXBlRXJyb3IlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJzeW1ib2wiPT09dHlwZW9mIGUpdGhyb3cgbmV3IGEoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIGkoZSl9fSwiMTFlOSI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjUyYTciKSxpPW4oIjQ2MzAiKSxhPW4oIjY4MjEiKSxvPW4oIjZhOTkiKSxzPW4oIjY5YTgiKSxjPW4oImM2OWEiKSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPW4oIjllMWUiKT9sOmZ1bmN0aW9uKGUsdCl7aWYoZT1hKGUpLHQ9byh0LCEwKSxjKXRyeXtyZXR1cm4gbChlLHQpfWNhdGNoKG4pe31pZihzKGUsdCkpcmV0dXJuIGkoIXIuZi5jYWxsKGUsdCksZVt0XSl9fSwxNDk1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI4NmNjIiksaT1uKCJjYjdjIiksYT1uKCIwZDU4Iik7ZS5leHBvcnRzPW4oIjllMWUiKT9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbihlLHQpe2koZSk7dmFyIG4sbz1hKHQpLHM9by5sZW5ndGgsYz0wO3doaWxlKHM+YylyLmYoZSxuPW9bYysrXSx0W25dKTtyZXR1cm4gZX19LDE2NTQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI3MWMxIikoITApO24oIjMwZjEiKShTdHJpbmcsIlN0cmluZyIsKGZ1bmN0aW9uKGUpe3RoaXMuX3Q9U3RyaW5nKGUpLHRoaXMuX2k9MH0pLChmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5fdCxuPXRoaXMuX2k7cmV0dXJuIG4+PXQubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KGU9cih0LG4pLHRoaXMuX2krPWUubGVuZ3RoLHt2YWx1ZTplLGRvbmU6ITF9KX0pKX0sMTY5MTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSwxOTpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oIjExM2QiKX0sIjFhZjYiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI2M2I2Iik7cihyLlMsIkFycmF5Iix7aXNBcnJheTpuKCI5MDAzIil9KX0sIjFiN2YiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNTYyZSIpLGk9IuKAiyI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUudHJpbSYmaS50cmltKCk9PT1pP1N0cmluZy5wcm90b3R5cGUudHJpbTpyfX0sIjFiYzMiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJmNzcyIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIXIoZSkpcmV0dXJuIGU7dmFyIG4saTtpZih0JiYiZnVuY3Rpb24iPT10eXBlb2Yobj1lLnRvU3RyaW5nKSYmIXIoaT1uLmNhbGwoZSkpKXJldHVybiBpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihuPWUudmFsdWVPZikmJiFyKGk9bi5jYWxsKGUpKSlyZXR1cm4gaTtpZighdCYmImZ1bmN0aW9uIj09dHlwZW9mKG49ZS50b1N0cmluZykmJiFyKGk9bi5jYWxsKGUpKSlyZXR1cm4gaTt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sIjFlYzkiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJmNzcyIiksaT1uKCJlNTNkIikuZG9jdW1lbnQsYT1yKGkpJiZyKGkuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhP2kuY3JlYXRlRWxlbWVudChlKTp7fX19LCIxZjY5IjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjJiMGUiKSxpPW4oImM2NDkiKSxhPWZ1bmN0aW9uKGUpe3JldHVybiByWyJhIl0ubWl4aW4oe2RhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y29udGFpbmVyQ2xhc3M6ImxhcmdlIn19LG1ldGhvZHM6e3VwZGF0ZUNvbnRhaW5lckNsYXNzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7dmFyIG49dC4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7dC5jb250YWluZXJDbGFzcz1uPD1lPyJzbWFsbCI6ImxhcmdlIn0pKX19LHdhdGNoOnt3aWR0aDpmdW5jdGlvbigpe3RoaXMudXBkYXRlQ29udGFpbmVyQ2xhc3MoKX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixPYmplY3QoaVsiYiJdKSh0aGlzLnVwZGF0ZUNvbnRhaW5lckNsYXNzLmJpbmQodGhpcyksMjAwKSksdGhpcy51cGRhdGVDb250YWluZXJDbGFzcygpfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoZnVuY3Rpb24oKXt9KSl9fSl9O3RbImEiXT1hfSwiMjEwYyI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IlBlcmluZ2thdCBLYXAgUGFzYXIiLCJtY2FwIjoiS2FwaXRhbGlzYXNpIFBhc2FyIiwiMjRoX3ZvbHVtZSI6IlZvbHVtZSAyNEoiLCIyNGhfaGlnaF9sb3ciOiJUaW5nZ2kvUmVuZGFoIDI0SiJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEaWR1a3VuZyBvbGVoICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IlBlcmJhbmRpbmdhbiBIYXJnYSBLcmlwdG8iLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiUGVyYmFuZGluZ2FuIEthcCBQYWFyIEtyaXB0byJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IkRpZHVrdW5nIG9sZWggJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0SiBUaW5nZ2kiLCIyNGhfbG93IjoiMjRKIFJlbmRhaCIsInZpZXdfcHJpY2VfY2hhcnQiOiJMaWhhdCBHcmFmaWsgSGFyZ2EgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJEaWR1a3VuZyBvbGVoICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiRGlkdWt1bmcgb2xlaCAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IkRpZHVrdW5nIG9sZWggJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiRGlkdWt1bmcgb2xlaCAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0SiBUaW5nZ2kiLCIyNGhfbG93IjoiMjRKIFJlbmRhaCIsInZpZXdfcHJpY2VfY2hhcnQiOiJMaWhhdCBHcmFmaWsgSGFyZ2EgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJEaWR1a3VuZyBvbGVoICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJMaWhhdCBHcmFmaWsgSGFyZ2EgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJEaWR1a3VuZyBvbGVoICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6IlBldGEgUG9ob24gQ3J5cHRvY3VycmVuY3kiLCJzdWJ0aXRsZSI6Iigle3RvcH0gVGVyYXRhcyBCZXJkYXNhcmthbiBLYXAgUGFzYXIpIiwicG93ZXJlZF9ieSI6IkRpZHVrdW5nIG9sZWggJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IlNhbmdrYWxhbjogQWxhdCBpbmkgYmVyZnVuZ3NpIHNlYmFnYWkgaGlidXJhbiBkYW4gYnVrYW4gbWVydXBha2FuIHNhcmFuIGtldWFuZ2FuLiIsInNwaW4iOiJQdXRhciIsImF2YWlsYWJsZV9jb2lucyI6IktvaW4geWFuZyBUZXJzZWRpYSJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6IlBlbWJhcnVhbiBIYXJnYSBDb2luR2Vja28iLCJ0b3RhbF9tY2FwIjoiVG90YWwgS2FwIFAiLCIyNGhfdm9sIjoiVm9sdW1lIDI0SiIsImRvbSI6IkRvbSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiJCdXJzYSIsInBhaXIiOiJQYXNhbmdhbiIsInByaWNlIjoiSGFyZ2EiLCJ2b2x1bWUiOiJWb2x1bWUiLCJ0cnVzdF9zY29yZSI6IlNrb3IgS2VwZXJjYXlhYW4iLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiTGloYXQgR3JhZmlrIEhhcmdhIiwicG93ZXJlZF9ieSI6IkRpZHVrdW5nIG9sZWggJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsInZpZXdfYWxsIjoiTGloYXQgc2VtdWEgcGFzYXIgJXtjb2lufSJ9fScpfSwiMjE0ZiI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuKCJiMGM1Iik7dmFyIHI9bigiMmFiYSIpLGk9bigiMzJlOSIpLGE9bigiNzllNSIpLG89bigiYmUxMyIpLHM9bigiMmI0YyIpLGM9bigiNTIwYSIpLGw9cygic3BlY2llcyIpLHU9IWEoKGZ1bmN0aW9uKCl7dmFyIGU9Ly4vO3JldHVybiBlLmV4ZWM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gZS5ncm91cHM9e2E6IjcifSxlfSwiNyIhPT0iIi5yZXBsYWNlKGUsIiQ8YT4iKX0pKSxkPWZ1bmN0aW9uKCl7dmFyIGU9Lyg/OikvLHQ9ZS5leGVjO2UuZXhlYz1mdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIG49ImFiIi5zcGxpdChlKTtyZXR1cm4gMj09PW4ubGVuZ3RoJiYiYSI9PT1uWzBdJiYiYiI9PT1uWzFdfSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHA9cyhlKSxmPSFhKChmdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiB0W3BdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW2VdKHQpfSkpLGg9Zj8hYSgoZnVuY3Rpb24oKXt2YXIgdD0hMSxuPS9hLztyZXR1cm4gbi5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIHQ9ITAsbnVsbH0sInNwbGl0Ij09PWUmJihuLmNvbnN0cnVjdG9yPXt9LG4uY29uc3RydWN0b3JbbF09ZnVuY3Rpb24oKXtyZXR1cm4gbn0pLG5bcF0oIiIpLCF0fSkpOnZvaWQgMDtpZighZnx8IWh8fCJyZXBsYWNlIj09PWUmJiF1fHwic3BsaXQiPT09ZSYmIWQpe3ZhciBtPS8uL1twXSxfPW4obyxwLCIiW2VdLChmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiB0LmV4ZWM9PT1jP2YmJiFpP3tkb25lOiEwLHZhbHVlOm0uY2FsbCh0LG4scil9Ontkb25lOiEwLHZhbHVlOmUuY2FsbChuLHQscil9Ontkb25lOiExfX0pKSxnPV9bMF0sdj1fWzFdO3IoU3RyaW5nLnByb3RvdHlwZSxlLGcpLGkoUmVnRXhwLnByb3RvdHlwZSxwLDI9PXQ/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdi5jYWxsKGUsdGhpcyx0KX06ZnVuY3Rpb24oZSl7cmV0dXJuIHYuY2FsbChlLHRoaXMpfSl9fX0sIjIxYWEiOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJSYW5nbGlzdGUgZWZ0ZXIgbWFya2Vkc3bDpnJkaSIsIm1jYXAiOiJNYXJrZWRzdsOmcmRpIiwiMjRoX3ZvbHVtZSI6IjI0dCB2b2x1bWVuIiwiMjRoX2hpZ2hfbG93IjoiMjR0IGjDuGovbGF2In0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IkRyZXZldCBhZiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJTYW1tZW5saWduaW5nIGFmIGtyeXB0b2t1cnMiLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiU2FtbWVubGlnbmluZyBhZiBrcnlwdG9tYXJrZWRzdsOmcmRpIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiRHJldmV0IGFmICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNHQgaMO4aiIsIjI0aF9sb3ciOiIyNHQgbGF2Iiwidmlld19wcmljZV9jaGFydCI6IlZpcyBrdXJzZGlhZ3JhbSBmb3IgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJEcmV2ZXQgYWYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEcmV2ZXQgYWYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEcmV2ZXQgYWYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiRHJldmV0IGFmICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjR0IGjDuGoiLCIyNGhfbG93IjoiMjR0IGxhdiIsInZpZXdfcHJpY2VfY2hhcnQiOiJWaXMga3Vyc2RpYWdyYW0gZm9yICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiRHJldmV0IGFmICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJWaXMga3Vyc2RpYWdyYW0gZm9yICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiRHJldmV0IGFmICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6Ik92ZXJzaWd0IG92ZXIga3J5cHRvdmFsdXRhZXIiLCJzdWJ0aXRsZSI6IihUb3AgJXt0b3B9IHVkIGZyYSBtYXJrZWRzdsOmcmRpKSIsInBvd2VyZWRfYnkiOiJEcmV2ZXQgYWYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IkFuc3ZhcnNmcmFza3JpdmVsc2U6IERpc3NlIHbDpnJrdMO4amVyIGZ1bmdlcmVyIHNvbSB1bmRlcmhvbGRuaW5nIG9nIHVkZ8O4ciBpa2tlIGZpbmFuc2llbCByw6VkZ2l2bmluZy4iLCJzcGluIjoiS2FzdCIsImF2YWlsYWJsZV9jb2lucyI6IlRpbGfDpm5nZWxpZ2UgY29pbnMifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJDb2luR2Vja28ga3Vyc29wZGF0ZXJpbmciLCJ0b3RhbF9tY2FwIjoiTWFya2Vkc3bDpnJkaSBpIGFsdCIsIjI0aF92b2wiOiIyNHQgdm9sdW1lbiIsImRvbSI6IkRvbSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiJCw7hycyIsInBhaXIiOiJQYXIiLCJwcmljZSI6IlByaXMiLCJ2b2x1bWUiOiJWb2x1bWVuIiwidHJ1c3Rfc2NvcmUiOiJUaWxsaWRzc2NvcmUiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmlzIGt1cnNkaWFncmFtIiwicG93ZXJlZF9ieSI6IkRyZXZldCBhZiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiJWaXMgYWxsZSAle2NvaW59LW1hcmtlZGVyIn19Jyl9LCIyMWQwIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxpPS9eXHMqY2xhc3NcYi8sYT1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9ci5jYWxsKGUpO3JldHVybiBpLnRlc3QodCl9Y2F0Y2gobil7cmV0dXJuITF9fSxvPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hYShlKSYmKHIuY2FsbChlKSwhMCl9Y2F0Y2godCl7cmV0dXJuITF9fSxzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsYz0iW29iamVjdCBGdW5jdGlvbl0iLGw9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix1PSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiExO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgZSYmIm9iamVjdCIhPT10eXBlb2YgZSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUmJiFlLnByb3RvdHlwZSlyZXR1cm4hMDtpZih1KXJldHVybiBvKGUpO2lmKGEoZSkpcmV0dXJuITE7dmFyIHQ9cy5jYWxsKGUpO3JldHVybiB0PT09Y3x8dD09PWx9fSwiMjMwZSI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImQzZjQiKSxpPW4oIjc3MjYiKS5kb2N1bWVudCxhPXIoaSkmJnIoaS5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGE/aS5jcmVhdGVFbGVtZW50KGUpOnt9fX0sIjIzYzYiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCIyZDk1IiksaT1uKCIyYjRjIikoInRvU3RyaW5nVGFnIiksYT0iQXJndW1lbnRzIj09cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLG89ZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGVbdF19Y2F0Y2gobil7fX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LG4scztyZXR1cm4gdm9pZCAwPT09ZT8iVW5kZWZpbmVkIjpudWxsPT09ZT8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihuPW8odD1PYmplY3QoZSksaSkpP246YT9yKHQpOiJPYmplY3QiPT0ocz1yKHQpKSYmImZ1bmN0aW9uIj09dHlwZW9mIHQuY2FsbGVlPyJBcmd1bWVudHMiOnN9fSwiMjQxZSI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjI1ZWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdChyKGUpKX19LCIyNGZiIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1lWzFdfHwiIixyPWVbM107aWYoIXIpcmV0dXJuIG47aWYodCYmImZ1bmN0aW9uIj09PXR5cGVvZiBidG9hKXt2YXIgYT1pKHIpLG89ci5zb3VyY2VzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIi8qIyBzb3VyY2VVUkw9IityLnNvdXJjZVJvb3QrZSsiICovIn0pKTtyZXR1cm5bbl0uY29uY2F0KG8pLmNvbmNhdChbYV0pLmpvaW4oIlxuIil9cmV0dXJuW25dLmpvaW4oIlxuIil9ZnVuY3Rpb24gaShlKXt2YXIgdD1idG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShlKSkpKSxuPSJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwiK3Q7cmV0dXJuIi8qIyAiK24rIiAqLyJ9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKChmdW5jdGlvbih0KXt2YXIgbj1yKHQsZSk7cmV0dXJuIHRbMl0/IkBtZWRpYSAiK3RbMl0rInsiK24rIn0iOm59KSkuam9pbigiIil9LHQuaT1mdW5jdGlvbihlLG4peyJzdHJpbmciPT09dHlwZW9mIGUmJihlPVtbbnVsbCxlLCIiXV0pO2Zvcih2YXIgcj17fSxpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBhPXRoaXNbaV1bMF07bnVsbCE9YSYmKHJbYV09ITApfWZvcihpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07bnVsbCE9b1swXSYmcltvWzBdXXx8KG4mJiFvWzJdP29bMl09bjpuJiYob1syXT0iKCIrb1syXSsiKSBhbmQgKCIrbisiKSIpLHQucHVzaChvKSl9fSx0fX0sIjI1ZWIiOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09ZSl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICAiK2UpO3JldHVybiBlfX0sMjg3NzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixpLGEsbyxzKXt2YXIgYyxsPSJmdW5jdGlvbiI9PT10eXBlb2YgZT9lLm9wdGlvbnM6ZTtpZih0JiYobC5yZW5kZXI9dCxsLnN0YXRpY1JlbmRlckZucz1uLGwuX2NvbXBpbGVkPSEwKSxyJiYobC5mdW5jdGlvbmFsPSEwKSxhJiYobC5fc2NvcGVJZD0iZGF0YS12LSIrYSksbz8oYz1mdW5jdGlvbihlKXtlPWV8fHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fHx0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuJHZub2RlJiZ0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCxlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9ffHwoZT1fX1ZVRV9TU1JfQ09OVEVYVF9fKSxpJiZpLmNhbGwodGhpcyxlKSxlJiZlLl9yZWdpc3RlcmVkQ29tcG9uZW50cyYmZS5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG8pfSxsLl9zc3JSZWdpc3Rlcj1jKTppJiYoYz1zP2Z1bmN0aW9uKCl7aS5jYWxsKHRoaXMsdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KX06aSksYylpZihsLmZ1bmN0aW9uYWwpe2wuX2luamVjdFN0eWxlcz1jO3ZhciB1PWwucmVuZGVyO2wucmVuZGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGMuY2FsbCh0KSx1KGUsdCl9fWVsc2V7dmFyIGQ9bC5iZWZvcmVDcmVhdGU7bC5iZWZvcmVDcmVhdGU9ZD9bXS5jb25jYXQoZCxjKTpbY119cmV0dXJue2V4cG9ydHM6ZSxvcHRpb25zOmx9fW4uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0sIjI4OGEiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZDAyNCIpLGk9bigiZmE0ZSIpLGE9bigiYTBkMyIpLG89bigiY2E5ZiIpLHM9ZnVuY3Rpb24oZSl7aSghMSxlKX0sYz1TdHJpbmcucHJvdG90eXBlLnJlcGxhY2UsbD1TdHJpbmcucHJvdG90eXBlLnNwbGl0LHU9Inx8fHwiLGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDtyZXR1cm4gMTEhPT1lJiYxPT09dD8wOjI8PXQmJnQ8PTQmJiEoZT49MTImJmU8PTE0KT8xOjJ9LHA9e2FyYWJpYzpmdW5jdGlvbihlKXtpZihlPDMpcmV0dXJuIGU7dmFyIHQ9ZSUxMDA7cmV0dXJuIHQ+PTMmJnQ8PTEwPzM6dD49MTE/NDo1fSxib3NuaWFuX3NlcmJpYW46ZCxjaGluZXNlOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGNyb2F0aWFuOmQsZnJlbmNoOmZ1bmN0aW9uKGUpe3JldHVybiBlPjE/MTowfSxnZXJtYW46ZnVuY3Rpb24oZSl7cmV0dXJuIDEhPT1lPzE6MH0scnVzc2lhbjpkLGxpdGh1YW5pYW46ZnVuY3Rpb24oZSl7cmV0dXJuIGUlMTA9PT0xJiZlJTEwMCE9PTExPzA6ZSUxMD49MiYmZSUxMDw9OSYmKGUlMTAwPDExfHxlJTEwMD4xOSk/MToyfSxjemVjaDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/MDplPj0yJiZlPD00PzE6Mn0scG9saXNoOmZ1bmN0aW9uKGUpe2lmKDE9PT1lKXJldHVybiAwO3ZhciB0PWUlMTA7cmV0dXJuIDI8PXQmJnQ8PTQmJihlJTEwMDwxMHx8ZSUxMDA+PTIwKT8xOjJ9LGljZWxhbmRpYzpmdW5jdGlvbihlKXtyZXR1cm4gZSUxMCE9PTF8fGUlMTAwPT09MTE/MTowfSxzbG92ZW5pYW46ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDA7cmV0dXJuIDE9PT10PzA6Mj09PXQ/MTozPT09dHx8ND09PXQ/MjozfX0sZj17YXJhYmljOlsiYXIiXSxib3NuaWFuX3NlcmJpYW46WyJicy1MYXRuLUJBIiwiYnMtQ3lybC1CQSIsInNybC1SUyIsInNyLVJTIl0sY2hpbmVzZTpbImlkIiwiaWQtSUQiLCJqYSIsImtvIiwia28tS1IiLCJsbyIsIm1zIiwidGgiLCJ0aC1USCIsInpoIl0sY3JvYXRpYW46WyJociIsImhyLUhSIl0sZ2VybWFuOlsiZmEiLCJkYSIsImRlIiwiZW4iLCJlcyIsImZpIiwiZWwiLCJoZSIsImhpLUlOIiwiaHUiLCJodS1IVSIsIml0IiwibmwiLCJubyIsInB0Iiwic3YiLCJ0ciJdLGZyZW5jaDpbImZyIiwidGwiLCJwdC1iciJdLHJ1c3NpYW46WyJydSIsInJ1LVJVIl0sbGl0aHVhbmlhbjpbImx0Il0sY3plY2g6WyJjcyIsImNzLUNaIiwic2siXSxwb2xpc2g6WyJwbCJdLGljZWxhbmRpYzpbImlzIl0sc2xvdmVuaWFuOlsic2wtU0wiXX07ZnVuY3Rpb24gaChlKXt2YXIgdD17fTtyZXR1cm4gcihlLChmdW5jdGlvbihlLG4pe3IoZSwoZnVuY3Rpb24oZSl7dFtlXT1ufSkpfSkpLHR9ZnVuY3Rpb24gbShlKXt2YXIgdD1oKGYpO3JldHVybiB0W2VdfHx0W2wuY2FsbChlLC8tLywxKVswXV18fHQuZW59ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBwW20oZSldKHQpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiB2KGUpe3ZhciB0PWUmJmUucHJlZml4fHwiJXsiLG49ZSYmZS5zdWZmaXh8fCJ9IjtpZih0PT09dXx8bj09PXUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyInK3UrJyIgdG9rZW4gaXMgcmVzZXJ2ZWQgZm9yIHBsdXJhbGl6YXRpb24nKTtyZXR1cm4gbmV3IFJlZ0V4cChnKHQpKyIoLio/KSIrZyhuKSwiZyIpfXZhciB5PS9cJC9nLGI9IiQkIix3PS8lXHsoLio/KVx9L2c7ZnVuY3Rpb24geChlLHQsbixyKXtpZigic3RyaW5nIiE9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIlBvbHlnbG90LnRyYW5zZm9ybVBocmFzZSBleHBlY3RzIGFyZ3VtZW50ICMxIHRvIGJlIHN0cmluZyIpO2lmKG51bGw9PXQpcmV0dXJuIGU7dmFyIGk9ZSxzPXJ8fHcsZD0ibnVtYmVyIj09PXR5cGVvZiB0P3tzbWFydF9jb3VudDp0fTp0O2lmKG51bGwhPWQuc21hcnRfY291bnQmJmkpe3ZhciBwPWwuY2FsbChpLHUpO2k9byhwW18obnx8ImVuIixkLnNtYXJ0X2NvdW50KV18fHBbMF0pfXJldHVybiBpPWMuY2FsbChpLHMsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZCx0KSYmbnVsbCE9ZFt0XT9jLmNhbGwoZFt0XSx5LGIpOmV9KSksaX1mdW5jdGlvbiBrKGUpe3ZhciB0PWV8fHt9O3RoaXMucGhyYXNlcz17fSx0aGlzLmV4dGVuZCh0LnBocmFzZXN8fHt9KSx0aGlzLmN1cnJlbnRMb2NhbGU9dC5sb2NhbGV8fCJlbiI7dmFyIG49dC5hbGxvd01pc3Npbmc/eDpudWxsO3RoaXMub25NaXNzaW5nS2V5PSJmdW5jdGlvbiI9PT10eXBlb2YgdC5vbk1pc3NpbmdLZXk/dC5vbk1pc3NpbmdLZXk6bix0aGlzLndhcm49dC53YXJufHxzLHRoaXMudG9rZW5SZWdleD12KHQuaW50ZXJwb2xhdGlvbil9ay5wcm90b3R5cGUubG9jYWxlPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYodGhpcy5jdXJyZW50TG9jYWxlPWUpLHRoaXMuY3VycmVudExvY2FsZX0say5wcm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKGUsdCl7cihlLChmdW5jdGlvbihlLG4pe3ZhciByPXQ/dCsiLiIrbjpuOyJvYmplY3QiPT09dHlwZW9mIGU/dGhpcy5leHRlbmQoZSxyKTp0aGlzLnBocmFzZXNbcl09ZX0pLHRoaXMpfSxrLnByb3RvdHlwZS51bnNldD1mdW5jdGlvbihlLHQpeyJzdHJpbmciPT09dHlwZW9mIGU/ZGVsZXRlIHRoaXMucGhyYXNlc1tlXTpyKGUsKGZ1bmN0aW9uKGUsbil7dmFyIHI9dD90KyIuIituOm47Im9iamVjdCI9PT10eXBlb2YgZT90aGlzLnVuc2V0KGUscik6ZGVsZXRlIHRoaXMucGhyYXNlc1tyXX0pLHRoaXMpfSxrLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMucGhyYXNlcz17fX0say5wcm90b3R5cGUucmVwbGFjZT1mdW5jdGlvbihlKXt0aGlzLmNsZWFyKCksdGhpcy5leHRlbmQoZSl9LGsucHJvdG90eXBlLnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk9bnVsbD09dD97fTp0O2lmKCJzdHJpbmciPT09dHlwZW9mIHRoaXMucGhyYXNlc1tlXSluPXRoaXMucGhyYXNlc1tlXTtlbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIGkuXyluPWkuXztlbHNlIGlmKHRoaXMub25NaXNzaW5nS2V5KXt2YXIgYT10aGlzLm9uTWlzc2luZ0tleTtyPWEoZSxpLHRoaXMuY3VycmVudExvY2FsZSx0aGlzLnRva2VuUmVnZXgpfWVsc2UgdGhpcy53YXJuKCdNaXNzaW5nIHRyYW5zbGF0aW9uIGZvciBrZXk6ICInK2UrJyInKSxyPWU7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgbiYmKHI9eChuLGksdGhpcy5jdXJyZW50TG9jYWxlLHRoaXMudG9rZW5SZWdleCkpLHJ9LGsucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gYSh0aGlzLnBocmFzZXMsZSl9LGsudHJhbnNmb3JtUGhyYXNlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4geChlLHQsbil9LGUuZXhwb3J0cz1rfSwiMjk0YyI6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoKHQpe3JldHVybiEwfX19LCIyYWJhIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiNzcyNiIpLGk9bigiMzJlOSIpLGE9bigiNjlhOCIpLG89bigiY2E1YSIpKCJzcmMiKSxzPW4oImZhNWIiKSxjPSJ0b1N0cmluZyIsbD0oIiIrcykuc3BsaXQoYyk7bigiODM3OCIpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHMuY2FsbChlKX0sKGUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixzKXt2YXIgYz0iZnVuY3Rpb24iPT10eXBlb2YgbjtjJiYoYShuLCJuYW1lIil8fGkobiwibmFtZSIsdCkpLGVbdF0hPT1uJiYoYyYmKGEobixvKXx8aShuLG8sZVt0XT8iIitlW3RdOmwuam9pbihTdHJpbmcodCkpKSksZT09PXI/ZVt0XT1uOnM/ZVt0XT9lW3RdPW46aShlLHQsbik6KGRlbGV0ZSBlW3RdLGkoZSx0LG4pKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsYywoZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmdGhpc1tvXXx8cy5jYWxsKHRoaXMpfSkpfSwiMmFlYiI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImNiN2MiKSxpPW4oIjE0OTUiKSxhPW4oImUxMWUiKSxvPW4oIjYxM2IiKSgiSUVfUFJPVE8iKSxzPWZ1bmN0aW9uKCl7fSxjPSJwcm90b3R5cGUiLGw9ZnVuY3Rpb24oKXt2YXIgZSx0PW4oIjIzMGUiKSgiaWZyYW1lIikscj1hLmxlbmd0aCxpPSI8IixvPSI+Ijt0LnN0eWxlLmRpc3BsYXk9Im5vbmUiLG4oImZhYjIiKS5hcHBlbmRDaGlsZCh0KSx0LnNyYz0iamF2YXNjcmlwdDoiLGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50LGUub3BlbigpLGUud3JpdGUoaSsic2NyaXB0IitvKyJkb2N1bWVudC5GPU9iamVjdCIraSsiL3NjcmlwdCIrbyksZS5jbG9zZSgpLGw9ZS5GO3doaWxlKHItLSlkZWxldGUgbFtjXVthW3JdXTtyZXR1cm4gbCgpfTtlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9PWU/KHNbY109cihlKSxuPW5ldyBzLHNbY109bnVsbCxuW29dPWUpOm49bCgpLHZvaWQgMD09PXQ/bjppKG4sdCl9fSwiMmIwZSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24oZSl7Ci8qIQogKiBWdWUuanMgdjIuNS4yMQogKiAoYykgMjAxNC0yMDE4IEV2YW4gWW91CiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KICovCnZhciBuPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHZvaWQgMD09PWV8fG51bGw9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIHZvaWQgMCE9PWUmJm51bGwhPT1lfWZ1bmN0aW9uIGEoZSl7cmV0dXJuITA9PT1lfWZ1bmN0aW9uIG8oZSl7cmV0dXJuITE9PT1lfWZ1bmN0aW9uIHMoZSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZXx8Im51bWJlciI9PT10eXBlb2YgZXx8InN5bWJvbCI9PT10eXBlb2YgZXx8ImJvb2xlYW4iPT09dHlwZW9mIGV9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09dHlwZW9mIGV9dmFyIGw9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiB1KGUpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09bC5jYWxsKGUpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIltvYmplY3QgUmVnRXhwXSI9PT1sLmNhbGwoZSl9ZnVuY3Rpb24gcChlKXt2YXIgdD1wYXJzZUZsb2F0KFN0cmluZyhlKSk7cmV0dXJuIHQ+PTAmJk1hdGguZmxvb3IodCk9PT10JiZpc0Zpbml0ZShlKX1mdW5jdGlvbiBmKGUpe3JldHVybiBudWxsPT1lPyIiOiJvYmplY3QiPT09dHlwZW9mIGU/SlNPTi5zdHJpbmdpZnkoZSxudWxsLDIpOlN0cmluZyhlKX1mdW5jdGlvbiBoKGUpe3ZhciB0PXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHQpP2U6dH1mdW5jdGlvbiBtKGUsdCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1lLnNwbGl0KCIsIiksaT0wO2k8ci5sZW5ndGg7aSsrKW5bcltpXV09ITA7cmV0dXJuIHQ/ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXX06ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19fW0oInNsb3QsY29tcG9uZW50IiwhMCk7dmFyIF89bSgia2V5LHJlZixzbG90LHNsb3Qtc2NvcGUsaXMiKTtmdW5jdGlvbiBnKGUsdCl7aWYoZS5sZW5ndGgpe3ZhciBuPWUuaW5kZXhPZih0KTtpZihuPi0xKXJldHVybiBlLnNwbGljZShuLDEpfX12YXIgdj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHkoZSx0KXtyZXR1cm4gdi5jYWxsKGUsdCl9ZnVuY3Rpb24gYihlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj10W25dO3JldHVybiByfHwodFtuXT1lKG4pKX19dmFyIHc9Ly0oXHcpL2cseD1iKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHcsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/dC50b1VwcGVyQ2FzZSgpOiIifSkpfSkpLGs9YigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pKSxDPS9cQihbQS1aXSkvZyxTPWIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoQywiLSQxIikudG9Mb3dlckNhc2UoKX0pKTtmdW5jdGlvbiBQKGUsdCl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByP3I+MT9lLmFwcGx5KHQsYXJndW1lbnRzKTplLmNhbGwodCxuKTplLmNhbGwodCl9cmV0dXJuIG4uX2xlbmd0aD1lLmxlbmd0aCxufWZ1bmN0aW9uIE0oZSx0KXtyZXR1cm4gZS5iaW5kKHQpfXZhciBBPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kP006UDtmdW5jdGlvbiBPKGUsdCl7dD10fHwwO3ZhciBuPWUubGVuZ3RoLXQscj1uZXcgQXJyYXkobik7d2hpbGUobi0tKXJbbl09ZVtuK3RdO3JldHVybiByfWZ1bmN0aW9uIEQoZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gVChlKXtmb3IodmFyIHQ9e30sbj0wO248ZS5sZW5ndGg7bisrKWVbbl0mJkQodCxlW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBJKGUsdCxuKXt9dmFyIGo9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExfSxGPWZ1bmN0aW9uKGUpe3JldHVybiBlfTtmdW5jdGlvbiB6KGUsdCl7aWYoZT09PXQpcmV0dXJuITA7dmFyIG49YyhlKSxyPWModCk7aWYoIW58fCFyKXJldHVybiFuJiYhciYmU3RyaW5nKGUpPT09U3RyaW5nKHQpO3RyeXt2YXIgaT1BcnJheS5pc0FycmF5KGUpLGE9QXJyYXkuaXNBcnJheSh0KTtpZihpJiZhKXJldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoJiZlLmV2ZXJ5KChmdW5jdGlvbihlLG4pe3JldHVybiB6KGUsdFtuXSl9KSk7aWYoZSBpbnN0YW5jZW9mIERhdGUmJnQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpO2lmKGl8fGEpcmV0dXJuITE7dmFyIG89T2JqZWN0LmtleXMoZSkscz1PYmplY3Qua2V5cyh0KTtyZXR1cm4gby5sZW5ndGg9PT1zLmxlbmd0aCYmby5ldmVyeSgoZnVuY3Rpb24obil7cmV0dXJuIHooZVtuXSx0W25dKX0pKX1jYXRjaChsKXtyZXR1cm4hMX19ZnVuY3Rpb24gTChlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKHooZVtuXSx0KSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBFKGUpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyIE49ImRhdGEtc2VydmVyLXJlbmRlcmVkIixSPVsiY29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVyIl0sVj1bImJlZm9yZUNyZWF0ZSIsImNyZWF0ZWQiLCJiZWZvcmVNb3VudCIsIm1vdW50ZWQiLCJiZWZvcmVVcGRhdGUiLCJ1cGRhdGVkIiwiYmVmb3JlRGVzdHJveSIsImRlc3Ryb3llZCIsImFjdGl2YXRlZCIsImRlYWN0aXZhdGVkIiwiZXJyb3JDYXB0dXJlZCJdLEI9e29wdGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxwcm9kdWN0aW9uVGlwOiExLGRldnRvb2xzOiExLHBlcmZvcm1hbmNlOiExLGVycm9ySGFuZGxlcjpudWxsLHdhcm5IYW5kbGVyOm51bGwsaWdub3JlZEVsZW1lbnRzOltdLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRhZzpqLGlzUmVzZXJ2ZWRBdHRyOmosaXNVbmtub3duRWxlbWVudDpqLGdldFRhZ05hbWVzcGFjZTpJLHBhcnNlUGxhdGZvcm1UYWdOYW1lOkYsbXVzdFVzZVByb3A6aixhc3luYzohMCxfbGlmZWN5Y2xlSG9va3M6Vn07ZnVuY3Rpb24gJChlKXt2YXIgdD0oZSsiIikuY2hhckNvZGVBdCgwKTtyZXR1cm4gMzY9PT10fHw5NT09PXR9ZnVuY3Rpb24gVyhlLHQsbixyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ISFyLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfXZhciBIPS9bXlx3LiRdLztmdW5jdGlvbiBVKGUpe2lmKCFILnRlc3QoZSkpe3ZhciB0PWUuc3BsaXQoIi4iKTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe2lmKCFlKXJldHVybjtlPWVbdFtuXV19cmV0dXJuIGV9fX12YXIgRyxxPSJfX3Byb3RvX18iaW57fSxLPSJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyxKPSJ1bmRlZmluZWQiIT09dHlwZW9mIFdYRW52aXJvbm1lbnQmJiEhV1hFbnZpcm9ubWVudC5wbGF0Zm9ybSxZPUomJldYRW52aXJvbm1lbnQucGxhdGZvcm0udG9Mb3dlckNhc2UoKSxYPUsmJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksWj1YJiYvbXNpZXx0cmlkZW50Ly50ZXN0KFgpLFE9WCYmWC5pbmRleE9mKCJtc2llIDkuMCIpPjAsZWU9WCYmWC5pbmRleE9mKCJlZGdlLyIpPjAsdGU9KFgmJlguaW5kZXhPZigiYW5kcm9pZCIpLFgmJi9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChYKXx8ImlvcyI9PT1ZKSxuZT0oWCYmL2Nocm9tZVwvXGQrLy50ZXN0KFgpLHt9LndhdGNoKSxyZT0hMTtpZihLKXRyeXt2YXIgaWU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGllLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmU9ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QtcGFzc2l2ZSIsbnVsbCxpZSl9Y2F0Y2gob28pe312YXIgYWU9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09RyYmKEc9IUsmJiFKJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBlJiYoZVsicHJvY2VzcyJdJiYic2VydmVyIj09PWVbInByb2Nlc3MiXS5lbnYuVlVFX0VOVikpLEd9LG9lPUsmJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO2Z1bmN0aW9uIHNlKGUpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZSYmL25hdGl2ZSBjb2RlLy50ZXN0KGUudG9TdHJpbmcoKSl9dmFyIGNlLGxlPSJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmc2UoU3ltYm9sKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgUmVmbGVjdCYmc2UoUmVmbGVjdC5vd25LZXlzKTtjZT0idW5kZWZpbmVkIiE9PXR5cGVvZiBTZXQmJnNlKFNldCk/U2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4hMD09PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRbZV09ITB9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sZX0oKTt2YXIgdWU9SSxkZT0wLHBlPWZ1bmN0aW9uKCl7dGhpcy5pZD1kZSsrLHRoaXMuc3Vicz1bXX07cGUucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbihlKXt0aGlzLnN1YnMucHVzaChlKX0scGUucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbihlKXtnKHRoaXMuc3VicyxlKX0scGUucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe3BlLnRhcmdldCYmcGUudGFyZ2V0LmFkZERlcCh0aGlzKX0scGUucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3Vicy5zbGljZSgpO2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyllW3RdLnVwZGF0ZSgpfSxwZS50YXJnZXQ9bnVsbDt2YXIgZmU9W107ZnVuY3Rpb24gaGUoZSl7ZmUucHVzaChlKSxwZS50YXJnZXQ9ZX1mdW5jdGlvbiBtZSgpe2ZlLnBvcCgpLHBlLnRhcmdldD1mZVtmZS5sZW5ndGgtMV19dmFyIF9lPWZ1bmN0aW9uKGUsdCxuLHIsaSxhLG8scyl7dGhpcy50YWc9ZSx0aGlzLmRhdGE9dCx0aGlzLmNoaWxkcmVuPW4sdGhpcy50ZXh0PXIsdGhpcy5lbG09aSx0aGlzLm5zPXZvaWQgMCx0aGlzLmNvbnRleHQ9YSx0aGlzLmZuQ29udGV4dD12b2lkIDAsdGhpcy5mbk9wdGlvbnM9dm9pZCAwLHRoaXMuZm5TY29wZUlkPXZvaWQgMCx0aGlzLmtleT10JiZ0LmtleSx0aGlzLmNvbXBvbmVudE9wdGlvbnM9byx0aGlzLmNvbXBvbmVudEluc3RhbmNlPXZvaWQgMCx0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5yYXc9ITEsdGhpcy5pc1N0YXRpYz0hMSx0aGlzLmlzUm9vdEluc2VydD0hMCx0aGlzLmlzQ29tbWVudD0hMSx0aGlzLmlzQ2xvbmVkPSExLHRoaXMuaXNPbmNlPSExLHRoaXMuYXN5bmNGYWN0b3J5PXMsdGhpcy5hc3luY01ldGE9dm9pZCAwLHRoaXMuaXNBc3luY1BsYWNlaG9sZGVyPSExfSxnZT17Y2hpbGQ6e2NvbmZpZ3VyYWJsZTohMH19O2dlLmNoaWxkLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhfZS5wcm90b3R5cGUsZ2UpO3ZhciB2ZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0iIik7dmFyIHQ9bmV3IF9lO3JldHVybiB0LnRleHQ9ZSx0LmlzQ29tbWVudD0hMCx0fTtmdW5jdGlvbiB5ZShlKXtyZXR1cm4gbmV3IF9lKHZvaWQgMCx2b2lkIDAsdm9pZCAwLFN0cmluZyhlKSl9ZnVuY3Rpb24gYmUoZSl7dmFyIHQ9bmV3IF9lKGUudGFnLGUuZGF0YSxlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnNsaWNlKCksZS50ZXh0LGUuZWxtLGUuY29udGV4dCxlLmNvbXBvbmVudE9wdGlvbnMsZS5hc3luY0ZhY3RvcnkpO3JldHVybiB0Lm5zPWUubnMsdC5pc1N0YXRpYz1lLmlzU3RhdGljLHQua2V5PWUua2V5LHQuaXNDb21tZW50PWUuaXNDb21tZW50LHQuZm5Db250ZXh0PWUuZm5Db250ZXh0LHQuZm5PcHRpb25zPWUuZm5PcHRpb25zLHQuZm5TY29wZUlkPWUuZm5TY29wZUlkLHQuYXN5bmNNZXRhPWUuYXN5bmNNZXRhLHQuaXNDbG9uZWQ9ITAsdH12YXIgd2U9QXJyYXkucHJvdG90eXBlLHhlPU9iamVjdC5jcmVhdGUod2UpLGtlPVsicHVzaCIsInBvcCIsInNoaWZ0IiwidW5zaGlmdCIsInNwbGljZSIsInNvcnQiLCJyZXZlcnNlIl07a2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9d2VbZV07Vyh4ZSxlLChmdW5jdGlvbigpe3ZhciBuPVtdLHI9YXJndW1lbnRzLmxlbmd0aDt3aGlsZShyLS0pbltyXT1hcmd1bWVudHNbcl07dmFyIGksYT10LmFwcGx5KHRoaXMsbiksbz10aGlzLl9fb2JfXztzd2l0Y2goZSl7Y2FzZSJwdXNoIjpjYXNlInVuc2hpZnQiOmk9bjticmVhaztjYXNlInNwbGljZSI6aT1uLnNsaWNlKDIpO2JyZWFrfXJldHVybiBpJiZvLm9ic2VydmVBcnJheShpKSxvLmRlcC5ub3RpZnkoKSxhfSkpfSkpO3ZhciBDZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh4ZSksU2U9ITA7ZnVuY3Rpb24gUGUoZSl7U2U9ZX12YXIgTWU9ZnVuY3Rpb24oZSl7dGhpcy52YWx1ZT1lLHRoaXMuZGVwPW5ldyBwZSx0aGlzLnZtQ291bnQ9MCxXKGUsIl9fb2JfXyIsdGhpcyksQXJyYXkuaXNBcnJheShlKT8ocT9BZShlLHhlKTpPZShlLHhlLENlKSx0aGlzLm9ic2VydmVBcnJheShlKSk6dGhpcy53YWxrKGUpfTtmdW5jdGlvbiBBZShlLHQpe2UuX19wcm90b19fPXR9ZnVuY3Rpb24gT2UoZSx0LG4pe2Zvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7dmFyIGE9bltyXTtXKGUsYSx0W2FdKX19ZnVuY3Rpb24gRGUoZSx0KXt2YXIgbjtpZihjKGUpJiYhKGUgaW5zdGFuY2VvZiBfZSkpcmV0dXJuIHkoZSwiX19vYl9fIikmJmUuX19vYl9fIGluc3RhbmNlb2YgTWU/bj1lLl9fb2JfXzpTZSYmIWFlKCkmJihBcnJheS5pc0FycmF5KGUpfHx1KGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYobj1uZXcgTWUoZSkpLHQmJm4mJm4udm1Db3VudCsrLG59ZnVuY3Rpb24gVGUoZSx0LG4scixpKXt2YXIgYT1uZXcgcGUsbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7aWYoIW98fCExIT09by5jb25maWd1cmFibGUpe3ZhciBzPW8mJm8uZ2V0LGM9byYmby5zZXQ7cyYmIWN8fDIhPT1hcmd1bWVudHMubGVuZ3RofHwobj1lW3RdKTt2YXIgbD0haSYmRGUobik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9cz9zLmNhbGwoZSk6bjtyZXR1cm4gcGUudGFyZ2V0JiYoYS5kZXBlbmQoKSxsJiYobC5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheSh0KSYmRmUodCkpKSx0fSxzZXQ6ZnVuY3Rpb24odCl7dmFyIHI9cz9zLmNhbGwoZSk6bjt0PT09cnx8dCE9PXQmJnIhPT1yfHxzJiYhY3x8KGM/Yy5jYWxsKGUsdCk6bj10LGw9IWkmJkRlKHQpLGEubm90aWZ5KCkpfX0pfX1mdW5jdGlvbiBJZShlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSYmcCh0KSlyZXR1cm4gZS5sZW5ndGg9TWF0aC5tYXgoZS5sZW5ndGgsdCksZS5zcGxpY2UodCwxLG4pLG47aWYodCBpbiBlJiYhKHQgaW4gT2JqZWN0LnByb3RvdHlwZSkpcmV0dXJuIGVbdF09bixuO3ZhciByPWUuX19vYl9fO3JldHVybiBlLl9pc1Z1ZXx8ciYmci52bUNvdW50P246cj8oVGUoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOihlW3RdPW4sbil9ZnVuY3Rpb24gamUoZSx0KXtpZihBcnJheS5pc0FycmF5KGUpJiZwKHQpKWUuc3BsaWNlKHQsMSk7ZWxzZXt2YXIgbj1lLl9fb2JfXztlLl9pc1Z1ZXx8biYmbi52bUNvdW50fHx5KGUsdCkmJihkZWxldGUgZVt0XSxuJiZuLmRlcC5ub3RpZnkoKSl9fWZ1bmN0aW9uIEZlKGUpe2Zvcih2YXIgdD12b2lkIDAsbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0PWVbbl0sdCYmdC5fX29iX18mJnQuX19vYl9fLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KHQpJiZGZSh0KX1NZS5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj0wO248dC5sZW5ndGg7bisrKVRlKGUsdFtuXSl9LE1lLnByb3RvdHlwZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKURlKGVbdF0pfTt2YXIgemU9Qi5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7ZnVuY3Rpb24gTGUoZSx0KXtpZighdClyZXR1cm4gZTtmb3IodmFyIG4scixpLGE9T2JqZWN0LmtleXModCksbz0wO288YS5sZW5ndGg7bysrKW49YVtvXSxyPWVbbl0saT10W25dLHkoZSxuKT9yIT09aSYmdShyKSYmdShpKSYmTGUocixpKTpJZShlLG4saSk7cmV0dXJuIGV9ZnVuY3Rpb24gRWUoZSx0LG4pe3JldHVybiBuP2Z1bmN0aW9uKCl7dmFyIHI9ImZ1bmN0aW9uIj09PXR5cGVvZiB0P3QuY2FsbChuLG4pOnQsaT0iZnVuY3Rpb24iPT09dHlwZW9mIGU/ZS5jYWxsKG4sbik6ZTtyZXR1cm4gcj9MZShyLGkpOml9OnQ/ZT9mdW5jdGlvbigpe3JldHVybiBMZSgiZnVuY3Rpb24iPT09dHlwZW9mIHQ/dC5jYWxsKHRoaXMsdGhpcyk6dCwiZnVuY3Rpb24iPT09dHlwZW9mIGU/ZS5jYWxsKHRoaXMsdGhpcyk6ZSl9OnQ6ZX1mdW5jdGlvbiBOZShlLHQpe3JldHVybiB0P2U/ZS5jb25jYXQodCk6QXJyYXkuaXNBcnJheSh0KT90Olt0XTplfWZ1bmN0aW9uIFJlKGUsdCxuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUoZXx8bnVsbCk7cmV0dXJuIHQ/RChpLHQpOml9emUuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/RWUoZSx0LG4pOnQmJiJmdW5jdGlvbiIhPT10eXBlb2YgdD9lOkVlKGUsdCl9LFYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7emVbZV09TmV9KSksUi5mb3JFYWNoKChmdW5jdGlvbihlKXt6ZVtlKyJzIl09UmV9KSksemUud2F0Y2g9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT09PW5lJiYoZT12b2lkIDApLHQ9PT1uZSYmKHQ9dm9pZCAwKSwhdClyZXR1cm4gT2JqZWN0LmNyZWF0ZShlfHxudWxsKTtpZighZSlyZXR1cm4gdDt2YXIgaT17fTtmb3IodmFyIGEgaW4gRChpLGUpLHQpe3ZhciBvPWlbYV0scz10W2FdO28mJiFBcnJheS5pc0FycmF5KG8pJiYobz1bb10pLGlbYV09bz9vLmNvbmNhdChzKTpBcnJheS5pc0FycmF5KHMpP3M6W3NdfXJldHVybiBpfSx6ZS5wcm9wcz16ZS5tZXRob2RzPXplLmluamVjdD16ZS5jb21wdXRlZD1mdW5jdGlvbihlLHQsbixyKXtpZighZSlyZXR1cm4gdDt2YXIgaT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBEKGksZSksdCYmRChpLHQpLGl9LHplLnByb3ZpZGU9RWU7dmFyIFZlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/ZTp0fTtmdW5jdGlvbiBCZShlLHQpe3ZhciBuPWUucHJvcHM7aWYobil7dmFyIHIsaSxhLG89e307aWYoQXJyYXkuaXNBcnJheShuKSl7cj1uLmxlbmd0aDt3aGlsZShyLS0paT1uW3JdLCJzdHJpbmciPT09dHlwZW9mIGkmJihhPXgoaSksb1thXT17dHlwZTpudWxsfSl9ZWxzZSBpZih1KG4pKWZvcih2YXIgcyBpbiBuKWk9bltzXSxhPXgocyksb1thXT11KGkpP2k6e3R5cGU6aX07ZWxzZSAwO2UucHJvcHM9b319ZnVuY3Rpb24gJGUoZSx0KXt2YXIgbj1lLmluamVjdDtpZihuKXt2YXIgcj1lLmluamVjdD17fTtpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXJbbltpXV09e2Zyb206bltpXX07ZWxzZSBpZih1KG4pKWZvcih2YXIgYSBpbiBuKXt2YXIgbz1uW2FdO3JbYV09dShvKT9EKHtmcm9tOmF9LG8pOntmcm9tOm99fWVsc2UgMH19ZnVuY3Rpb24gV2UoZSl7dmFyIHQ9ZS5kaXJlY3RpdmVzO2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07ImZ1bmN0aW9uIj09PXR5cGVvZiByJiYodFtuXT17YmluZDpyLHVwZGF0ZTpyfSl9fWZ1bmN0aW9uIEhlKGUsdCxuKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHQmJih0PXQub3B0aW9ucyksQmUodCxuKSwkZSh0LG4pLFdlKHQpLCF0Ll9iYXNlJiYodC5leHRlbmRzJiYoZT1IZShlLHQuZXh0ZW5kcyxuKSksdC5taXhpbnMpKWZvcih2YXIgcj0wLGk9dC5taXhpbnMubGVuZ3RoO3I8aTtyKyspZT1IZShlLHQubWl4aW5zW3JdLG4pO3ZhciBhLG89e307Zm9yKGEgaW4gZSlzKGEpO2ZvcihhIGluIHQpeShlLGEpfHxzKGEpO2Z1bmN0aW9uIHMocil7dmFyIGk9emVbcl18fFZlO29bcl09aShlW3JdLHRbcl0sbixyKX1yZXR1cm4gb31mdW5jdGlvbiBVZShlLHQsbixyKXtpZigic3RyaW5nIj09PXR5cGVvZiBuKXt2YXIgaT1lW3RdO2lmKHkoaSxuKSlyZXR1cm4gaVtuXTt2YXIgYT14KG4pO2lmKHkoaSxhKSlyZXR1cm4gaVthXTt2YXIgbz1rKGEpO2lmKHkoaSxvKSlyZXR1cm4gaVtvXTt2YXIgcz1pW25dfHxpW2FdfHxpW29dO3JldHVybiBzfX1mdW5jdGlvbiBHZShlLHQsbixyKXt2YXIgaT10W2VdLGE9IXkobixlKSxvPW5bZV0scz1ZZShCb29sZWFuLGkudHlwZSk7aWYocz4tMSlpZihhJiYheShpLCJkZWZhdWx0Iikpbz0hMTtlbHNlIGlmKCIiPT09b3x8bz09PVMoZSkpe3ZhciBjPVllKFN0cmluZyxpLnR5cGUpOyhjPDB8fHM8YykmJihvPSEwKX1pZih2b2lkIDA9PT1vKXtvPXFlKHIsaSxlKTt2YXIgbD1TZTtQZSghMCksRGUobyksUGUobCl9cmV0dXJuIG99ZnVuY3Rpb24gcWUoZSx0LG4pe2lmKHkodCwiZGVmYXVsdCIpKXt2YXIgcj10LmRlZmF1bHQ7cmV0dXJuIGUmJmUuJG9wdGlvbnMucHJvcHNEYXRhJiZ2b2lkIDA9PT1lLiRvcHRpb25zLnByb3BzRGF0YVtuXSYmdm9pZCAwIT09ZS5fcHJvcHNbbl0/ZS5fcHJvcHNbbl06ImZ1bmN0aW9uIj09PXR5cGVvZiByJiYiRnVuY3Rpb24iIT09S2UodC50eXBlKT9yLmNhbGwoZSk6cn19ZnVuY3Rpb24gS2UoZSl7dmFyIHQ9ZSYmZS50b1N0cmluZygpLm1hdGNoKC9eXHMqZnVuY3Rpb24gKFx3KykvKTtyZXR1cm4gdD90WzFdOiIifWZ1bmN0aW9uIEplKGUsdCl7cmV0dXJuIEtlKGUpPT09S2UodCl9ZnVuY3Rpb24gWWUoZSx0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gSmUodCxlKT8wOi0xO2Zvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyO24rKylpZihKZSh0W25dLGUpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIFhlKGUsdCxuKXtpZih0KXt2YXIgcj10O3doaWxlKHI9ci4kcGFyZW50KXt2YXIgaT1yLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7aWYoaSlmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl0cnl7dmFyIG89ITE9PT1pW2FdLmNhbGwocixlLHQsbik7aWYobylyZXR1cm59Y2F0Y2gob28pe1plKG9vLHIsImVycm9yQ2FwdHVyZWQgaG9vayIpfX19WmUoZSx0LG4pfWZ1bmN0aW9uIFplKGUsdCxuKXtpZihCLmVycm9ySGFuZGxlcil0cnl7cmV0dXJuIEIuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCxlLHQsbil9Y2F0Y2gob28pe1FlKG9vLG51bGwsImNvbmZpZy5lcnJvckhhbmRsZXIiKX1RZShlLHQsbil9ZnVuY3Rpb24gUWUoZSx0LG4pe2lmKCFLJiYhSnx8InVuZGVmaW5lZCI9PT10eXBlb2YgY29uc29sZSl0aHJvdyBlO2NvbnNvbGUuZXJyb3IoZSl9dmFyIGV0LHR0LG50PVtdLHJ0PSExO2Z1bmN0aW9uIGl0KCl7cnQ9ITE7dmFyIGU9bnQuc2xpY2UoMCk7bnQubGVuZ3RoPTA7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfXZhciBhdD0hMTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBzZXRJbW1lZGlhdGUmJnNlKHNldEltbWVkaWF0ZSkpdHQ9ZnVuY3Rpb24oKXtzZXRJbW1lZGlhdGUoaXQpfTtlbHNlIGlmKCJ1bmRlZmluZWQiPT09dHlwZW9mIE1lc3NhZ2VDaGFubmVsfHwhc2UoTWVzc2FnZUNoYW5uZWwpJiYiW29iamVjdCBNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yXSIhPT1NZXNzYWdlQ2hhbm5lbC50b1N0cmluZygpKXR0PWZ1bmN0aW9uKCl7c2V0VGltZW91dChpdCwwKX07ZWxzZXt2YXIgb3Q9bmV3IE1lc3NhZ2VDaGFubmVsLHN0PW90LnBvcnQyO290LnBvcnQxLm9ubWVzc2FnZT1pdCx0dD1mdW5jdGlvbigpe3N0LnBvc3RNZXNzYWdlKDEpfX1pZigidW5kZWZpbmVkIiE9PXR5cGVvZiBQcm9taXNlJiZzZShQcm9taXNlKSl7dmFyIGN0PVByb21pc2UucmVzb2x2ZSgpO2V0PWZ1bmN0aW9uKCl7Y3QudGhlbihpdCksdGUmJnNldFRpbWVvdXQoSSl9fWVsc2UgZXQ9dHQ7ZnVuY3Rpb24gbHQoZSl7cmV0dXJuIGUuX3dpdGhUYXNrfHwoZS5fd2l0aFRhc2s9ZnVuY3Rpb24oKXthdD0hMDt0cnl7cmV0dXJuIGUuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZpbmFsbHl7YXQ9ITF9fSl9ZnVuY3Rpb24gdXQoZSx0KXt2YXIgbjtpZihudC5wdXNoKChmdW5jdGlvbigpe2lmKGUpdHJ5e2UuY2FsbCh0KX1jYXRjaChvbyl7WGUob28sdCwibmV4dFRpY2siKX1lbHNlIG4mJm4odCl9KSkscnR8fChydD0hMCxhdD90dCgpOmV0KCkpLCFlJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7bj1lfSkpfXZhciBkdD1uZXcgY2U7ZnVuY3Rpb24gcHQoZSl7ZnQoZSxkdCksZHQuY2xlYXIoKX1mdW5jdGlvbiBmdChlLHQpe3ZhciBuLHIsaT1BcnJheS5pc0FycmF5KGUpO2lmKCEoIWkmJiFjKGUpfHxPYmplY3QuaXNGcm96ZW4oZSl8fGUgaW5zdGFuY2VvZiBfZSkpe2lmKGUuX19vYl9fKXt2YXIgYT1lLl9fb2JfXy5kZXAuaWQ7aWYodC5oYXMoYSkpcmV0dXJuO3QuYWRkKGEpfWlmKGkpe249ZS5sZW5ndGg7d2hpbGUobi0tKWZ0KGVbbl0sdCl9ZWxzZXtyPU9iamVjdC5rZXlzKGUpLG49ci5sZW5ndGg7d2hpbGUobi0tKWZ0KGVbcltuXV0sdCl9fX12YXIgaHQsbXQ9YigoZnVuY3Rpb24oZSl7dmFyIHQ9IiYiPT09ZS5jaGFyQXQoMCk7ZT10P2Uuc2xpY2UoMSk6ZTt2YXIgbj0ifiI9PT1lLmNoYXJBdCgwKTtlPW4/ZS5zbGljZSgxKTplO3ZhciByPSIhIj09PWUuY2hhckF0KDApO3JldHVybiBlPXI/ZS5zbGljZSgxKTplLHtuYW1lOmUsb25jZTpuLGNhcHR1cmU6cixwYXNzaXZlOnR9fSkpO2Z1bmN0aW9uIF90KGUpe2Z1bmN0aW9uIHQoKXt2YXIgZT1hcmd1bWVudHMsbj10LmZucztpZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4gbi5hcHBseShudWxsLGFyZ3VtZW50cyk7Zm9yKHZhciByPW4uc2xpY2UoKSxpPTA7aTxyLmxlbmd0aDtpKyspcltpXS5hcHBseShudWxsLGUpfXJldHVybiB0LmZucz1lLHR9ZnVuY3Rpb24gZ3QoZSx0LG4saSxvLHMpe3ZhciBjLGwsdSxkO2ZvcihjIGluIGUpbD1lW2NdLHU9dFtjXSxkPW10KGMpLHIobCl8fChyKHUpPyhyKGwuZm5zKSYmKGw9ZVtjXT1fdChsKSksYShkLm9uY2UpJiYobD1lW2NdPW8oZC5uYW1lLGwsZC5jYXB0dXJlKSksbihkLm5hbWUsbCxkLmNhcHR1cmUsZC5wYXNzaXZlLGQucGFyYW1zKSk6bCE9PXUmJih1LmZucz1sLGVbY109dSkpO2ZvcihjIGluIHQpcihlW2NdKSYmKGQ9bXQoYyksaShkLm5hbWUsdFtjXSxkLmNhcHR1cmUpKX1mdW5jdGlvbiB2dChlLHQsbil7dmFyIG87ZSBpbnN0YW5jZW9mIF9lJiYoZT1lLmRhdGEuaG9va3x8KGUuZGF0YS5ob29rPXt9KSk7dmFyIHM9ZVt0XTtmdW5jdGlvbiBjKCl7bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZyhvLmZucyxjKX1yKHMpP289X3QoW2NdKTppKHMuZm5zKSYmYShzLm1lcmdlZCk/KG89cyxvLmZucy5wdXNoKGMpKTpvPV90KFtzLGNdKSxvLm1lcmdlZD0hMCxlW3RdPW99ZnVuY3Rpb24geXQoZSx0LG4pe3ZhciBhPXQub3B0aW9ucy5wcm9wcztpZighcihhKSl7dmFyIG89e30scz1lLmF0dHJzLGM9ZS5wcm9wcztpZihpKHMpfHxpKGMpKWZvcih2YXIgbCBpbiBhKXt2YXIgdT1TKGwpO2J0KG8sYyxsLHUsITApfHxidChvLHMsbCx1LCExKX1yZXR1cm4gb319ZnVuY3Rpb24gYnQoZSx0LG4scixhKXtpZihpKHQpKXtpZih5KHQsbikpcmV0dXJuIGVbbl09dFtuXSxhfHxkZWxldGUgdFtuXSwhMDtpZih5KHQscikpcmV0dXJuIGVbbl09dFtyXSxhfHxkZWxldGUgdFtyXSwhMH1yZXR1cm4hMX1mdW5jdGlvbiB3dChlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZihBcnJheS5pc0FycmF5KGVbdF0pKXJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUpO3JldHVybiBlfWZ1bmN0aW9uIHh0KGUpe3JldHVybiBzKGUpP1t5ZShlKV06QXJyYXkuaXNBcnJheShlKT9DdChlKTp2b2lkIDB9ZnVuY3Rpb24ga3QoZSl7cmV0dXJuIGkoZSkmJmkoZS50ZXh0KSYmbyhlLmlzQ29tbWVudCl9ZnVuY3Rpb24gQ3QoZSx0KXt2YXIgbixvLGMsbCx1PVtdO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspbz1lW25dLHIobyl8fCJib29sZWFuIj09PXR5cGVvZiBvfHwoYz11Lmxlbmd0aC0xLGw9dVtjXSxBcnJheS5pc0FycmF5KG8pP28ubGVuZ3RoPjAmJihvPUN0KG8sKHR8fCIiKSsiXyIrbiksa3Qob1swXSkmJmt0KGwpJiYodVtjXT15ZShsLnRleHQrb1swXS50ZXh0KSxvLnNoaWZ0KCkpLHUucHVzaC5hcHBseSh1LG8pKTpzKG8pP2t0KGwpP3VbY109eWUobC50ZXh0K28pOiIiIT09byYmdS5wdXNoKHllKG8pKTprdChvKSYma3QobCk/dVtjXT15ZShsLnRleHQrby50ZXh0KTooYShlLl9pc1ZMaXN0KSYmaShvLnRhZykmJnIoby5rZXkpJiZpKHQpJiYoby5rZXk9Il9fdmxpc3QiK3QrIl8iK24rIl9fIiksdS5wdXNoKG8pKSk7cmV0dXJuIHV9ZnVuY3Rpb24gU3QoZSx0KXtyZXR1cm4oZS5fX2VzTW9kdWxlfHxsZSYmIk1vZHVsZSI9PT1lW1N5bWJvbC50b1N0cmluZ1RhZ10pJiYoZT1lLmRlZmF1bHQpLGMoZSk/dC5leHRlbmQoZSk6ZX1mdW5jdGlvbiBQdChlLHQsbixyLGkpe3ZhciBhPXZlKCk7cmV0dXJuIGEuYXN5bmNGYWN0b3J5PWUsYS5hc3luY01ldGE9e2RhdGE6dCxjb250ZXh0Om4sY2hpbGRyZW46cix0YWc6aX0sYX1mdW5jdGlvbiBNdChlLHQsbil7aWYoYShlLmVycm9yKSYmaShlLmVycm9yQ29tcCkpcmV0dXJuIGUuZXJyb3JDb21wO2lmKGkoZS5yZXNvbHZlZCkpcmV0dXJuIGUucmVzb2x2ZWQ7aWYoYShlLmxvYWRpbmcpJiZpKGUubG9hZGluZ0NvbXApKXJldHVybiBlLmxvYWRpbmdDb21wO2lmKCFpKGUuY29udGV4dHMpKXt2YXIgbz1lLmNvbnRleHRzPVtuXSxzPSEwLGw9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1vLmxlbmd0aDt0PG47dCsrKW9bdF0uJGZvcmNlVXBkYXRlKCk7ZSYmKG8ubGVuZ3RoPTApfSx1PUUoKGZ1bmN0aW9uKG4pe2UucmVzb2x2ZWQ9U3Qobix0KSxzfHxsKCEwKX0pKSxkPUUoKGZ1bmN0aW9uKHQpe2koZS5lcnJvckNvbXApJiYoZS5lcnJvcj0hMCxsKCEwKSl9KSkscD1lKHUsZCk7cmV0dXJuIGMocCkmJigiZnVuY3Rpb24iPT09dHlwZW9mIHAudGhlbj9yKGUucmVzb2x2ZWQpJiZwLnRoZW4odSxkKTppKHAuY29tcG9uZW50KSYmImZ1bmN0aW9uIj09PXR5cGVvZiBwLmNvbXBvbmVudC50aGVuJiYocC5jb21wb25lbnQudGhlbih1LGQpLGkocC5lcnJvcikmJihlLmVycm9yQ29tcD1TdChwLmVycm9yLHQpKSxpKHAubG9hZGluZykmJihlLmxvYWRpbmdDb21wPVN0KHAubG9hZGluZyx0KSwwPT09cC5kZWxheT9lLmxvYWRpbmc9ITA6c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyKGUucmVzb2x2ZWQpJiZyKGUuZXJyb3IpJiYoZS5sb2FkaW5nPSEwLGwoITEpKX0pLHAuZGVsYXl8fDIwMCkpLGkocC50aW1lb3V0KSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyKGUucmVzb2x2ZWQpJiZkKG51bGwpfSkscC50aW1lb3V0KSkpLHM9ITEsZS5sb2FkaW5nP2UubG9hZGluZ0NvbXA6ZS5yZXNvbHZlZH1lLmNvbnRleHRzLnB1c2gobil9ZnVuY3Rpb24gQXQoZSl7cmV0dXJuIGUuaXNDb21tZW50JiZlLmFzeW5jRmFjdG9yeX1mdW5jdGlvbiBPdChlKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgbj1lW3RdO2lmKGkobikmJihpKG4uY29tcG9uZW50T3B0aW9ucyl8fEF0KG4pKSlyZXR1cm4gbn19ZnVuY3Rpb24gRHQoZSl7ZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksZS5faGFzSG9va0V2ZW50PSExO3ZhciB0PWUuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVyczt0JiZGdChlLHQpfWZ1bmN0aW9uIFR0KGUsdCl7aHQuJG9uKGUsdCl9ZnVuY3Rpb24gSXQoZSx0KXtodC4kb2ZmKGUsdCl9ZnVuY3Rpb24ganQoZSx0KXt2YXIgbj1odDtyZXR1cm4gZnVuY3Rpb24gcigpe3ZhciBpPXQuYXBwbHkobnVsbCxhcmd1bWVudHMpO251bGwhPT1pJiZuLiRvZmYoZSxyKX19ZnVuY3Rpb24gRnQoZSx0LG4pe2h0PWUsZ3QodCxufHx7fSxUdCxJdCxqdCxlKSxodD12b2lkIDB9ZnVuY3Rpb24genQoZSl7dmFyIHQ9L15ob29rOi87ZS5wcm90b3R5cGUuJG9uPWZ1bmN0aW9uKGUsbil7dmFyIHI9dGhpcztpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylyLiRvbihlW2ldLG4pO2Vsc2Uoci5fZXZlbnRzW2VdfHwoci5fZXZlbnRzW2VdPVtdKSkucHVzaChuKSx0LnRlc3QoZSkmJihyLl9oYXNIb29rRXZlbnQ9ITApO3JldHVybiByfSxlLnByb3RvdHlwZS4kb25jZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7ZnVuY3Rpb24gcigpe24uJG9mZihlLHIpLHQuYXBwbHkobixhcmd1bWVudHMpfXJldHVybiByLmZuPXQsbi4kb24oZSxyKSxufSxlLnByb3RvdHlwZS4kb2ZmPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbi5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksbjtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspbi4kb2ZmKGVbcl0sdCk7cmV0dXJuIG59dmFyIGE9bi5fZXZlbnRzW2VdO2lmKCFhKXJldHVybiBuO2lmKCF0KXJldHVybiBuLl9ldmVudHNbZV09bnVsbCxuO2lmKHQpe3ZhciBvLHM9YS5sZW5ndGg7d2hpbGUocy0tKWlmKG89YVtzXSxvPT09dHx8by5mbj09PXQpe2Euc3BsaWNlKHMsMSk7YnJlYWt9fXJldHVybiBufSxlLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5fZXZlbnRzW2VdO2lmKG4pe249bi5sZW5ndGg+MT9PKG4pOm47Zm9yKHZhciByPU8oYXJndW1lbnRzLDEpLGk9MCxhPW4ubGVuZ3RoO2k8YTtpKyspdHJ5e25baV0uYXBwbHkodCxyKX1jYXRjaChvbyl7WGUob28sdCwnZXZlbnQgaGFuZGxlciBmb3IgIicrZSsnIicpfX1yZXR1cm4gdH19ZnVuY3Rpb24gTHQoZSx0KXt2YXIgbj17fTtpZighZSlyZXR1cm4gbjtmb3IodmFyIHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe3ZhciBhPWVbcl0sbz1hLmRhdGE7aWYobyYmby5hdHRycyYmby5hdHRycy5zbG90JiZkZWxldGUgby5hdHRycy5zbG90LGEuY29udGV4dCE9PXQmJmEuZm5Db250ZXh0IT09dHx8IW98fG51bGw9PW8uc2xvdCkobi5kZWZhdWx0fHwobi5kZWZhdWx0PVtdKSkucHVzaChhKTtlbHNle3ZhciBzPW8uc2xvdCxjPW5bc118fChuW3NdPVtdKTsidGVtcGxhdGUiPT09YS50YWc/Yy5wdXNoLmFwcGx5KGMsYS5jaGlsZHJlbnx8W10pOmMucHVzaChhKX19Zm9yKHZhciBsIGluIG4pbltsXS5ldmVyeShFdCkmJmRlbGV0ZSBuW2xdO3JldHVybiBufWZ1bmN0aW9uIEV0KGUpe3JldHVybiBlLmlzQ29tbWVudCYmIWUuYXN5bmNGYWN0b3J5fHwiICI9PT1lLnRleHR9ZnVuY3Rpb24gTnQoZSx0KXt0PXR8fHt9O2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKUFycmF5LmlzQXJyYXkoZVtuXSk/TnQoZVtuXSx0KTp0W2Vbbl0ua2V5XT1lW25dLmZuO3JldHVybiB0fXZhciBSdD1udWxsO2Z1bmN0aW9uIFZ0KGUpe3ZhciB0PVJ0O3JldHVybiBSdD1lLGZ1bmN0aW9uKCl7UnQ9dH19ZnVuY3Rpb24gQnQoZSl7dmFyIHQ9ZS4kb3B0aW9ucyxuPXQucGFyZW50O2lmKG4mJiF0LmFic3RyYWN0KXt3aGlsZShuLiRvcHRpb25zLmFic3RyYWN0JiZuLiRwYXJlbnQpbj1uLiRwYXJlbnQ7bi4kY2hpbGRyZW4ucHVzaChlKX1lLiRwYXJlbnQ9bixlLiRyb290PW4/bi4kcm9vdDplLGUuJGNoaWxkcmVuPVtdLGUuJHJlZnM9e30sZS5fd2F0Y2hlcj1udWxsLGUuX2luYWN0aXZlPW51bGwsZS5fZGlyZWN0SW5hY3RpdmU9ITEsZS5faXNNb3VudGVkPSExLGUuX2lzRGVzdHJveWVkPSExLGUuX2lzQmVpbmdEZXN0cm95ZWQ9ITF9ZnVuY3Rpb24gJHQoZSl7ZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1uLiRlbCxpPW4uX3Zub2RlLGE9VnQobik7bi5fdm5vZGU9ZSxuLiRlbD1pP24uX19wYXRjaF9fKGksZSk6bi5fX3BhdGNoX18obi4kZWwsZSx0LCExKSxhKCksciYmKHIuX192dWVfXz1udWxsKSxuLiRlbCYmKG4uJGVsLl9fdnVlX189biksbi4kdm5vZGUmJm4uJHBhcmVudCYmbi4kdm5vZGU9PT1uLiRwYXJlbnQuX3Zub2RlJiYobi4kcGFyZW50LiRlbD1uLiRlbCl9LGUucHJvdG90eXBlLiRmb3JjZVVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5fd2F0Y2hlciYmZS5fd2F0Y2hlci51cGRhdGUoKX0sZS5wcm90b3R5cGUuJGRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCFlLl9pc0JlaW5nRGVzdHJveWVkKXtLdChlLCJiZWZvcmVEZXN0cm95IiksZS5faXNCZWluZ0Rlc3Ryb3llZD0hMDt2YXIgdD1lLiRwYXJlbnQ7IXR8fHQuX2lzQmVpbmdEZXN0cm95ZWR8fGUuJG9wdGlvbnMuYWJzdHJhY3R8fGcodC4kY2hpbGRyZW4sZSksZS5fd2F0Y2hlciYmZS5fd2F0Y2hlci50ZWFyZG93bigpO3ZhciBuPWUuX3dhdGNoZXJzLmxlbmd0aDt3aGlsZShuLS0pZS5fd2F0Y2hlcnNbbl0udGVhcmRvd24oKTtlLl9kYXRhLl9fb2JfXyYmZS5fZGF0YS5fX29iX18udm1Db3VudC0tLGUuX2lzRGVzdHJveWVkPSEwLGUuX19wYXRjaF9fKGUuX3Zub2RlLG51bGwpLEt0KGUsImRlc3Ryb3llZCIpLGUuJG9mZigpLGUuJGVsJiYoZS4kZWwuX192dWVfXz1udWxsKSxlLiR2bm9kZSYmKGUuJHZub2RlLnBhcmVudD1udWxsKX19fWZ1bmN0aW9uIFd0KGUsdCxuKXt2YXIgcjtyZXR1cm4gZS4kZWw9dCxlLiRvcHRpb25zLnJlbmRlcnx8KGUuJG9wdGlvbnMucmVuZGVyPXZlKSxLdChlLCJiZWZvcmVNb3VudCIpLHI9ZnVuY3Rpb24oKXtlLl91cGRhdGUoZS5fcmVuZGVyKCksbil9LG5ldyBsbihlLHIsSSx7YmVmb3JlOmZ1bmN0aW9uKCl7ZS5faXNNb3VudGVkJiYhZS5faXNEZXN0cm95ZWQmJkt0KGUsImJlZm9yZVVwZGF0ZSIpfX0sITApLG49ITEsbnVsbD09ZS4kdm5vZGUmJihlLl9pc01vdW50ZWQ9ITAsS3QoZSwibW91bnRlZCIpKSxlfWZ1bmN0aW9uIEh0KGUsdCxyLGksYSl7dmFyIG89ISEoYXx8ZS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW58fGkuZGF0YS5zY29wZWRTbG90c3x8ZS4kc2NvcGVkU2xvdHMhPT1uKTtpZihlLiRvcHRpb25zLl9wYXJlbnRWbm9kZT1pLGUuJHZub2RlPWksZS5fdm5vZGUmJihlLl92bm9kZS5wYXJlbnQ9aSksZS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW49YSxlLiRhdHRycz1pLmRhdGEuYXR0cnN8fG4sZS4kbGlzdGVuZXJzPXJ8fG4sdCYmZS4kb3B0aW9ucy5wcm9wcyl7UGUoITEpO2Zvcih2YXIgcz1lLl9wcm9wcyxjPWUuJG9wdGlvbnMuX3Byb3BLZXlzfHxbXSxsPTA7bDxjLmxlbmd0aDtsKyspe3ZhciB1PWNbbF0sZD1lLiRvcHRpb25zLnByb3BzO3NbdV09R2UodSxkLHQsZSl9UGUoITApLGUuJG9wdGlvbnMucHJvcHNEYXRhPXR9cj1yfHxuO3ZhciBwPWUuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztlLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM9cixGdChlLHIscCksbyYmKGUuJHNsb3RzPUx0KGEsaS5jb250ZXh0KSxlLiRmb3JjZVVwZGF0ZSgpKX1mdW5jdGlvbiBVdChlKXt3aGlsZShlJiYoZT1lLiRwYXJlbnQpKWlmKGUuX2luYWN0aXZlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEd0KGUsdCl7aWYodCl7aWYoZS5fZGlyZWN0SW5hY3RpdmU9ITEsVXQoZSkpcmV0dXJufWVsc2UgaWYoZS5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKGUuX2luYWN0aXZlfHxudWxsPT09ZS5faW5hY3RpdmUpe2UuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0wO248ZS4kY2hpbGRyZW4ubGVuZ3RoO24rKylHdChlLiRjaGlsZHJlbltuXSk7S3QoZSwiYWN0aXZhdGVkIil9fWZ1bmN0aW9uIHF0KGUsdCl7aWYoKCF0fHwoZS5fZGlyZWN0SW5hY3RpdmU9ITAsIVV0KGUpKSkmJiFlLl9pbmFjdGl2ZSl7ZS5faW5hY3RpdmU9ITA7Zm9yKHZhciBuPTA7bjxlLiRjaGlsZHJlbi5sZW5ndGg7bisrKXF0KGUuJGNoaWxkcmVuW25dKTtLdChlLCJkZWFjdGl2YXRlZCIpfX1mdW5jdGlvbiBLdChlLHQpe2hlKCk7dmFyIG49ZS4kb3B0aW9uc1t0XTtpZihuKWZvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl0cnl7bltyXS5jYWxsKGUpfWNhdGNoKG9vKXtYZShvbyxlLHQrIiBob29rIil9ZS5faGFzSG9va0V2ZW50JiZlLiRlbWl0KCJob29rOiIrdCksbWUoKX12YXIgSnQ9W10sWXQ9W10sWHQ9e30sWnQ9ITEsUXQ9ITEsZW49MDtmdW5jdGlvbiB0bigpe2VuPUp0Lmxlbmd0aD1ZdC5sZW5ndGg9MCxYdD17fSxadD1RdD0hMX1mdW5jdGlvbiBubigpe3ZhciBlLHQ7Zm9yKFF0PSEwLEp0LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQtdC5pZH0pKSxlbj0wO2VuPEp0Lmxlbmd0aDtlbisrKWU9SnRbZW5dLGUuYmVmb3JlJiZlLmJlZm9yZSgpLHQ9ZS5pZCxYdFt0XT1udWxsLGUucnVuKCk7dmFyIG49WXQuc2xpY2UoKSxyPUp0LnNsaWNlKCk7dG4oKSxvbihuKSxybihyKSxvZSYmQi5kZXZ0b29scyYmb2UuZW1pdCgiZmx1c2giKX1mdW5jdGlvbiBybihlKXt2YXIgdD1lLmxlbmd0aDt3aGlsZSh0LS0pe3ZhciBuPWVbdF0scj1uLnZtO3IuX3dhdGNoZXI9PT1uJiZyLl9pc01vdW50ZWQmJiFyLl9pc0Rlc3Ryb3llZCYmS3QociwidXBkYXRlZCIpfX1mdW5jdGlvbiBhbihlKXtlLl9pbmFjdGl2ZT0hMSxZdC5wdXNoKGUpfWZ1bmN0aW9uIG9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0uX2luYWN0aXZlPSEwLEd0KGVbdF0sITApfWZ1bmN0aW9uIHNuKGUpe3ZhciB0PWUuaWQ7aWYobnVsbD09WHRbdF0pe2lmKFh0W3RdPSEwLFF0KXt2YXIgbj1KdC5sZW5ndGgtMTt3aGlsZShuPmVuJiZKdFtuXS5pZD5lLmlkKW4tLTtKdC5zcGxpY2UobisxLDAsZSl9ZWxzZSBKdC5wdXNoKGUpO1p0fHwoWnQ9ITAsdXQobm4pKX19dmFyIGNuPTAsbG49ZnVuY3Rpb24oZSx0LG4scixpKXt0aGlzLnZtPWUsaSYmKGUuX3dhdGNoZXI9dGhpcyksZS5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlzLmRlZXA9ISFyLmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFyLnN5bmMsdGhpcy5iZWZvcmU9ci5iZWZvcmUpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0hMSx0aGlzLmNiPW4sdGhpcy5pZD0rK2NuLHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IGNlLHRoaXMubmV3RGVwSWRzPW5ldyBjZSx0aGlzLmV4cHJlc3Npb249IiIsImZ1bmN0aW9uIj09PXR5cGVvZiB0P3RoaXMuZ2V0dGVyPXQ6KHRoaXMuZ2V0dGVyPVUodCksdGhpcy5nZXR0ZXJ8fCh0aGlzLmdldHRlcj1JKSksdGhpcy52YWx1ZT10aGlzLmxhenk/dm9pZCAwOnRoaXMuZ2V0KCl9O2xuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXt2YXIgZTtoZSh0aGlzKTt2YXIgdD10aGlzLnZtO3RyeXtlPXRoaXMuZ2V0dGVyLmNhbGwodCx0KX1jYXRjaChvbyl7aWYoIXRoaXMudXNlcil0aHJvdyBvbztYZShvbyx0LCdnZXR0ZXIgZm9yIHdhdGNoZXIgIicrdGhpcy5leHByZXNzaW9uKyciJyl9ZmluYWxseXt0aGlzLmRlZXAmJnB0KGUpLG1lKCksdGhpcy5jbGVhbnVwRGVwcygpfXJldHVybiBlfSxsbi5wcm90b3R5cGUuYWRkRGVwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaWQ7dGhpcy5uZXdEZXBJZHMuaGFzKHQpfHwodGhpcy5uZXdEZXBJZHMuYWRkKHQpLHRoaXMubmV3RGVwcy5wdXNoKGUpLHRoaXMuZGVwSWRzLmhhcyh0KXx8ZS5hZGRTdWIodGhpcykpfSxsbi5wcm90b3R5cGUuY2xlYW51cERlcHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmRlcHMubGVuZ3RoO3doaWxlKGUtLSl7dmFyIHQ9dGhpcy5kZXBzW2VdO3RoaXMubmV3RGVwSWRzLmhhcyh0LmlkKXx8dC5yZW1vdmVTdWIodGhpcyl9dmFyIG49dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9bix0aGlzLm5ld0RlcElkcy5jbGVhcigpLG49dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPW4sdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxsbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6c24odGhpcyl9LGxuLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dmFyIGU9dGhpcy5nZXQoKTtpZihlIT09dGhpcy52YWx1ZXx8YyhlKXx8dGhpcy5kZWVwKXt2YXIgdD10aGlzLnZhbHVlO2lmKHRoaXMudmFsdWU9ZSx0aGlzLnVzZXIpdHJ5e3RoaXMuY2IuY2FsbCh0aGlzLnZtLGUsdCl9Y2F0Y2gob28pe1hlKG9vLHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVsc2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX19fSxsbi5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sbG4ucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZGVwcy5sZW5ndGg7d2hpbGUoZS0tKXRoaXMuZGVwc1tlXS5kZXBlbmQoKX0sbG4ucHJvdG90eXBlLnRlYXJkb3duPWZ1bmN0aW9uKCl7aWYodGhpcy5hY3RpdmUpe3RoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWR8fGcodGhpcy52bS5fd2F0Y2hlcnMsdGhpcyk7dmFyIGU9dGhpcy5kZXBzLmxlbmd0aDt3aGlsZShlLS0pdGhpcy5kZXBzW2VdLnJlbW92ZVN1Yih0aGlzKTt0aGlzLmFjdGl2ZT0hMX19O3ZhciB1bj17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0Okksc2V0Okl9O2Z1bmN0aW9uIGRuKGUsdCxuKXt1bi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0XVtuXX0sdW4uc2V0PWZ1bmN0aW9uKGUpe3RoaXNbdF1bbl09ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix1bil9ZnVuY3Rpb24gcG4oZSl7ZS5fd2F0Y2hlcnM9W107dmFyIHQ9ZS4kb3B0aW9uczt0LnByb3BzJiZmbihlLHQucHJvcHMpLHQubWV0aG9kcyYmd24oZSx0Lm1ldGhvZHMpLHQuZGF0YT9obihlKTpEZShlLl9kYXRhPXt9LCEwKSx0LmNvbXB1dGVkJiZnbihlLHQuY29tcHV0ZWQpLHQud2F0Y2gmJnQud2F0Y2ghPT1uZSYmeG4oZSx0LndhdGNoKX1mdW5jdGlvbiBmbihlLHQpe3ZhciBuPWUuJG9wdGlvbnMucHJvcHNEYXRhfHx7fSxyPWUuX3Byb3BzPXt9LGk9ZS4kb3B0aW9ucy5fcHJvcEtleXM9W10sYT0hZS4kcGFyZW50O2F8fFBlKCExKTt2YXIgbz1mdW5jdGlvbihhKXtpLnB1c2goYSk7dmFyIG89R2UoYSx0LG4sZSk7VGUocixhLG8pLGEgaW4gZXx8ZG4oZSwiX3Byb3BzIixhKX07Zm9yKHZhciBzIGluIHQpbyhzKTtQZSghMCl9ZnVuY3Rpb24gaG4oZSl7dmFyIHQ9ZS4kb3B0aW9ucy5kYXRhO3Q9ZS5fZGF0YT0iZnVuY3Rpb24iPT09dHlwZW9mIHQ/bW4odCxlKTp0fHx7fSx1KHQpfHwodD17fSk7dmFyIG49T2JqZWN0LmtleXModCkscj1lLiRvcHRpb25zLnByb3BzLGk9KGUuJG9wdGlvbnMubWV0aG9kcyxuLmxlbmd0aCk7d2hpbGUoaS0tKXt2YXIgYT1uW2ldOzAsciYmeShyLGEpfHwkKGEpfHxkbihlLCJfZGF0YSIsYSl9RGUodCwhMCl9ZnVuY3Rpb24gbW4oZSx0KXtoZSgpO3RyeXtyZXR1cm4gZS5jYWxsKHQsdCl9Y2F0Y2gob28pe3JldHVybiBYZShvbyx0LCJkYXRhKCkiKSx7fX1maW5hbGx5e21lKCl9fXZhciBfbj17bGF6eTohMH07ZnVuY3Rpb24gZ24oZSx0KXt2YXIgbj1lLl9jb21wdXRlZFdhdGNoZXJzPU9iamVjdC5jcmVhdGUobnVsbCkscj1hZSgpO2Zvcih2YXIgaSBpbiB0KXt2YXIgYT10W2ldLG89ImZ1bmN0aW9uIj09PXR5cGVvZiBhP2E6YS5nZXQ7MCxyfHwobltpXT1uZXcgbG4oZSxvfHxJLEksX24pKSxpIGluIGV8fHZuKGUsaSxhKX19ZnVuY3Rpb24gdm4oZSx0LG4pe3ZhciByPSFhZSgpOyJmdW5jdGlvbiI9PT10eXBlb2Ygbj8odW4uZ2V0PXI/eW4odCk6Ym4obiksdW4uc2V0PUkpOih1bi5nZXQ9bi5nZXQ/ciYmITEhPT1uLmNhY2hlP3luKHQpOmJuKG4uZ2V0KTpJLHVuLnNldD1uLnNldHx8SSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx1bil9ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29tcHV0ZWRXYXRjaGVycyYmdGhpcy5fY29tcHV0ZWRXYXRjaGVyc1tlXTtpZih0KXJldHVybiB0LmRpcnR5JiZ0LmV2YWx1YXRlKCkscGUudGFyZ2V0JiZ0LmRlcGVuZCgpLHQudmFsdWV9fWZ1bmN0aW9uIGJuKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0aGlzKX19ZnVuY3Rpb24gd24oZSx0KXtlLiRvcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiB0KWVbbl09ImZ1bmN0aW9uIiE9PXR5cGVvZiB0W25dP0k6QSh0W25dLGUpfWZ1bmN0aW9uIHhuKGUsdCl7Zm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylrbihlLG4scltpXSk7ZWxzZSBrbihlLG4scil9fWZ1bmN0aW9uIGtuKGUsdCxuLHIpe3JldHVybiB1KG4pJiYocj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09PXR5cGVvZiBuJiYobj1lW25dKSxlLiR3YXRjaCh0LG4scil9ZnVuY3Rpb24gQ24oZSl7dmFyIHQ9e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfX0sbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BzfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCIkZGF0YSIsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCIkcHJvcHMiLG4pLGUucHJvdG90eXBlLiRzZXQ9SWUsZS5wcm90b3R5cGUuJGRlbGV0ZT1qZSxlLnByb3RvdHlwZS4kd2F0Y2g9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYodSh0KSlyZXR1cm4ga24ocixlLHQsbik7bj1ufHx7fSxuLnVzZXI9ITA7dmFyIGk9bmV3IGxuKHIsZSx0LG4pO2lmKG4uaW1tZWRpYXRlKXRyeXt0LmNhbGwocixpLnZhbHVlKX1jYXRjaChhKXtYZShhLHIsJ2NhbGxiYWNrIGZvciBpbW1lZGlhdGUgd2F0Y2hlciAiJytpLmV4cHJlc3Npb24rJyInKX1yZXR1cm4gZnVuY3Rpb24oKXtpLnRlYXJkb3duKCl9fX1mdW5jdGlvbiBTbihlKXt2YXIgdD1lLiRvcHRpb25zLnByb3ZpZGU7dCYmKGUuX3Byb3ZpZGVkPSJmdW5jdGlvbiI9PT10eXBlb2YgdD90LmNhbGwoZSk6dCl9ZnVuY3Rpb24gUG4oZSl7dmFyIHQ9TW4oZS4kb3B0aW9ucy5pbmplY3QsZSk7dCYmKFBlKCExKSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKXtUZShlLG4sdFtuXSl9KSksUGUoITApKX1mdW5jdGlvbiBNbihlLHQpe2lmKGUpe2Zvcih2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9bGU/UmVmbGVjdC5vd25LZXlzKGUpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpOk9iamVjdC5rZXlzKGUpLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGE9cltpXSxvPWVbYV0uZnJvbSxzPXQ7d2hpbGUocyl7aWYocy5fcHJvdmlkZWQmJnkocy5fcHJvdmlkZWQsbykpe25bYV09cy5fcHJvdmlkZWRbb107YnJlYWt9cz1zLiRwYXJlbnR9aWYoIXMpaWYoImRlZmF1bHQiaW4gZVthXSl7dmFyIGM9ZVthXS5kZWZhdWx0O25bYV09ImZ1bmN0aW9uIj09PXR5cGVvZiBjP2MuY2FsbCh0KTpjfWVsc2UgMH1yZXR1cm4gbn19ZnVuY3Rpb24gQW4oZSx0KXt2YXIgbixyLGEsbyxzO2lmKEFycmF5LmlzQXJyYXkoZSl8fCJzdHJpbmciPT09dHlwZW9mIGUpZm9yKG49bmV3IEFycmF5KGUubGVuZ3RoKSxyPTAsYT1lLmxlbmd0aDtyPGE7cisrKW5bcl09dChlW3JdLHIpO2Vsc2UgaWYoIm51bWJlciI9PT10eXBlb2YgZSlmb3Iobj1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT10KHIrMSxyKTtlbHNlIGlmKGMoZSkpZm9yKG89T2JqZWN0LmtleXMoZSksbj1uZXcgQXJyYXkoby5sZW5ndGgpLHI9MCxhPW8ubGVuZ3RoO3I8YTtyKyspcz1vW3JdLG5bcl09dChlW3NdLHMscik7cmV0dXJuIGkobil8fChuPVtdKSxuLl9pc1ZMaXN0PSEwLG59ZnVuY3Rpb24gT24oZSx0LG4scil7dmFyIGksYT10aGlzLiRzY29wZWRTbG90c1tlXTthPyhuPW58fHt9LHImJihuPUQoRCh7fSxyKSxuKSksaT1hKG4pfHx0KTppPXRoaXMuJHNsb3RzW2VdfHx0O3ZhciBvPW4mJm4uc2xvdDtyZXR1cm4gbz90aGlzLiRjcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIse3Nsb3Q6b30saSk6aX1mdW5jdGlvbiBEbihlKXtyZXR1cm4gVWUodGhpcy4kb3B0aW9ucywiZmlsdGVycyIsZSwhMCl8fEZ9ZnVuY3Rpb24gVG4oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8tMT09PWUuaW5kZXhPZih0KTplIT09dH1mdW5jdGlvbiBJbihlLHQsbixyLGkpe3ZhciBhPUIua2V5Q29kZXNbdF18fG47cmV0dXJuIGkmJnImJiFCLmtleUNvZGVzW3RdP1RuKGkscik6YT9UbihhLGUpOnI/UyhyKSE9PXQ6dm9pZCAwfWZ1bmN0aW9uIGpuKGUsdCxuLHIsaSl7aWYobilpZihjKG4pKXt2YXIgYTtBcnJheS5pc0FycmF5KG4pJiYobj1UKG4pKTt2YXIgbz1mdW5jdGlvbihvKXtpZigiY2xhc3MiPT09b3x8InN0eWxlIj09PW98fF8obykpYT1lO2Vsc2V7dmFyIHM9ZS5hdHRycyYmZS5hdHRycy50eXBlO2E9cnx8Qi5tdXN0VXNlUHJvcCh0LHMsbyk/ZS5kb21Qcm9wc3x8KGUuZG9tUHJvcHM9e30pOmUuYXR0cnN8fChlLmF0dHJzPXt9KX12YXIgYz14KG8pO2lmKCEobyBpbiBhKSYmIShjIGluIGEpJiYoYVtvXT1uW29dLGkpKXt2YXIgbD1lLm9ufHwoZS5vbj17fSk7bFsidXBkYXRlOiIrY109ZnVuY3Rpb24oZSl7bltvXT1lfX19O2Zvcih2YXIgcyBpbiBuKW8ocyl9ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBGbihlLHQpe3ZhciBuPXRoaXMuX3N0YXRpY1RyZWVzfHwodGhpcy5fc3RhdGljVHJlZXM9W10pLHI9bltlXTtyZXR1cm4gciYmIXQ/cjoocj1uW2VdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSxMbihyLCJfX3N0YXRpY19fIitlLCExKSxyKX1mdW5jdGlvbiB6bihlLHQsbil7cmV0dXJuIExuKGUsIl9fb25jZV9fIit0KyhuPyJfIituOiIiKSwhMCksZX1mdW5jdGlvbiBMbihlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYic3RyaW5nIiE9PXR5cGVvZiBlW3JdJiZFbihlW3JdLHQrIl8iK3Isbik7ZWxzZSBFbihlLHQsbil9ZnVuY3Rpb24gRW4oZSx0LG4pe2UuaXNTdGF0aWM9ITAsZS5rZXk9dCxlLmlzT25jZT1ufWZ1bmN0aW9uIE5uKGUsdCl7aWYodClpZih1KHQpKXt2YXIgbj1lLm9uPWUub24/RCh7fSxlLm9uKTp7fTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9bltyXSxhPXRbcl07bltyXT1pP1tdLmNvbmNhdChpLGEpOmF9fWVsc2U7cmV0dXJuIGV9ZnVuY3Rpb24gUm4oZSl7ZS5fbz16bixlLl9uPWgsZS5fcz1mLGUuX2w9QW4sZS5fdD1PbixlLl9xPXosZS5faT1MLGUuX209Rm4sZS5fZj1EbixlLl9rPUluLGUuX2I9am4sZS5fdj15ZSxlLl9lPXZlLGUuX3U9TnQsZS5fZz1Obn1mdW5jdGlvbiBWbihlLHQscixpLG8pe3ZhciBzLGM9by5vcHRpb25zO3koaSwiX3VpZCIpPyhzPU9iamVjdC5jcmVhdGUoaSkscy5fb3JpZ2luYWw9aSk6KHM9aSxpPWkuX29yaWdpbmFsKTt2YXIgbD1hKGMuX2NvbXBpbGVkKSx1PSFsO3RoaXMuZGF0YT1lLHRoaXMucHJvcHM9dCx0aGlzLmNoaWxkcmVuPXIsdGhpcy5wYXJlbnQ9aSx0aGlzLmxpc3RlbmVycz1lLm9ufHxuLHRoaXMuaW5qZWN0aW9ucz1NbihjLmluamVjdCxpKSx0aGlzLnNsb3RzPWZ1bmN0aW9uKCl7cmV0dXJuIEx0KHIsaSl9LGwmJih0aGlzLiRvcHRpb25zPWMsdGhpcy4kc2xvdHM9dGhpcy5zbG90cygpLHRoaXMuJHNjb3BlZFNsb3RzPWUuc2NvcGVkU2xvdHN8fG4pLGMuX3Njb3BlSWQ/dGhpcy5fYz1mdW5jdGlvbihlLHQsbixyKXt2YXIgYT1RbihzLGUsdCxuLHIsdSk7cmV0dXJuIGEmJiFBcnJheS5pc0FycmF5KGEpJiYoYS5mblNjb3BlSWQ9Yy5fc2NvcGVJZCxhLmZuQ29udGV4dD1pKSxhfTp0aGlzLl9jPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBRbihzLGUsdCxuLHIsdSl9fWZ1bmN0aW9uIEJuKGUsdCxyLGEsbyl7dmFyIHM9ZS5vcHRpb25zLGM9e30sbD1zLnByb3BzO2lmKGkobCkpZm9yKHZhciB1IGluIGwpY1t1XT1HZSh1LGwsdHx8bik7ZWxzZSBpKHIuYXR0cnMpJiZXbihjLHIuYXR0cnMpLGkoci5wcm9wcykmJlduKGMsci5wcm9wcyk7dmFyIGQ9bmV3IFZuKHIsYyxvLGEsZSkscD1zLnJlbmRlci5jYWxsKG51bGwsZC5fYyxkKTtpZihwIGluc3RhbmNlb2YgX2UpcmV0dXJuICRuKHAscixkLnBhcmVudCxzLGQpO2lmKEFycmF5LmlzQXJyYXkocCkpe2Zvcih2YXIgZj14dChwKXx8W10saD1uZXcgQXJyYXkoZi5sZW5ndGgpLG09MDttPGYubGVuZ3RoO20rKyloW21dPSRuKGZbbV0scixkLnBhcmVudCxzLGQpO3JldHVybiBofX1mdW5jdGlvbiAkbihlLHQsbixyLGkpe3ZhciBhPWJlKGUpO3JldHVybiBhLmZuQ29udGV4dD1uLGEuZm5PcHRpb25zPXIsdC5zbG90JiYoKGEuZGF0YXx8KGEuZGF0YT17fSkpLnNsb3Q9dC5zbG90KSxhfWZ1bmN0aW9uIFduKGUsdCl7Zm9yKHZhciBuIGluIHQpZVt4KG4pXT10W25dfVJuKFZuLnByb3RvdHlwZSk7dmFyIEhuPXtpbml0OmZ1bmN0aW9uKGUsdCl7aWYoZS5jb21wb25lbnRJbnN0YW5jZSYmIWUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkJiZlLmRhdGEua2VlcEFsaXZlKXt2YXIgbj1lO0huLnByZXBhdGNoKG4sbil9ZWxzZXt2YXIgcj1lLmNvbXBvbmVudEluc3RhbmNlPXFuKGUsUnQpO3IuJG1vdW50KHQ/ZS5lbG06dm9pZCAwLHQpfX0scHJlcGF0Y2g6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmNvbXBvbmVudE9wdGlvbnMscj10LmNvbXBvbmVudEluc3RhbmNlPWUuY29tcG9uZW50SW5zdGFuY2U7SHQocixuLnByb3BzRGF0YSxuLmxpc3RlbmVycyx0LG4uY2hpbGRyZW4pfSxpbnNlcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb250ZXh0LG49ZS5jb21wb25lbnRJbnN0YW5jZTtuLl9pc01vdW50ZWR8fChuLl9pc01vdW50ZWQ9ITAsS3QobiwibW91bnRlZCIpKSxlLmRhdGEua2VlcEFsaXZlJiYodC5faXNNb3VudGVkP2FuKG4pOkd0KG4sITApKX0sZGVzdHJveTpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbXBvbmVudEluc3RhbmNlO3QuX2lzRGVzdHJveWVkfHwoZS5kYXRhLmtlZXBBbGl2ZT9xdCh0LCEwKTp0LiRkZXN0cm95KCkpfX0sVW49T2JqZWN0LmtleXMoSG4pO2Z1bmN0aW9uIEduKGUsdCxuLG8scyl7aWYoIXIoZSkpe3ZhciBsPW4uJG9wdGlvbnMuX2Jhc2U7aWYoYyhlKSYmKGU9bC5leHRlbmQoZSkpLCJmdW5jdGlvbiI9PT10eXBlb2YgZSl7dmFyIHU7aWYocihlLmNpZCkmJih1PWUsZT1NdCh1LGwsbiksdm9pZCAwPT09ZSkpcmV0dXJuIFB0KHUsdCxuLG8scyk7dD10fHx7fSxjcihlKSxpKHQubW9kZWwpJiZZbihlLm9wdGlvbnMsdCk7dmFyIGQ9eXQodCxlLHMpO2lmKGEoZS5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBCbihlLGQsdCxuLG8pO3ZhciBwPXQub247aWYodC5vbj10Lm5hdGl2ZU9uLGEoZS5vcHRpb25zLmFic3RyYWN0KSl7dmFyIGY9dC5zbG90O3Q9e30sZiYmKHQuc2xvdD1mKX1Lbih0KTt2YXIgaD1lLm9wdGlvbnMubmFtZXx8cyxtPW5ldyBfZSgidnVlLWNvbXBvbmVudC0iK2UuY2lkKyhoPyItIitoOiIiKSx0LHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4se0N0b3I6ZSxwcm9wc0RhdGE6ZCxsaXN0ZW5lcnM6cCx0YWc6cyxjaGlsZHJlbjpvfSx1KTtyZXR1cm4gbX19fWZ1bmN0aW9uIHFuKGUsdCl7dmFyIG49e19pc0NvbXBvbmVudDohMCxfcGFyZW50Vm5vZGU6ZSxwYXJlbnQ6dH0scj1lLmRhdGEuaW5saW5lVGVtcGxhdGU7cmV0dXJuIGkocikmJihuLnJlbmRlcj1yLnJlbmRlcixuLnN0YXRpY1JlbmRlckZucz1yLnN0YXRpY1JlbmRlckZucyksbmV3IGUuY29tcG9uZW50T3B0aW9ucy5DdG9yKG4pfWZ1bmN0aW9uIEtuKGUpe2Zvcih2YXIgdD1lLmhvb2t8fChlLmhvb2s9e30pLG49MDtuPFVuLmxlbmd0aDtuKyspe3ZhciByPVVuW25dLGk9dFtyXSxhPUhuW3JdO2k9PT1hfHxpJiZpLl9tZXJnZWR8fCh0W3JdPWk/Sm4oYSxpKTphKX19ZnVuY3Rpb24gSm4oZSx0KXt2YXIgbj1mdW5jdGlvbihuLHIpe2UobixyKSx0KG4scil9O3JldHVybiBuLl9tZXJnZWQ9ITAsbn1mdW5jdGlvbiBZbihlLHQpe3ZhciBuPWUubW9kZWwmJmUubW9kZWwucHJvcHx8InZhbHVlIixyPWUubW9kZWwmJmUubW9kZWwuZXZlbnR8fCJpbnB1dCI7KHQucHJvcHN8fCh0LnByb3BzPXt9KSlbbl09dC5tb2RlbC52YWx1ZTt2YXIgYT10Lm9ufHwodC5vbj17fSksbz1hW3JdLHM9dC5tb2RlbC5jYWxsYmFjaztpKG8pPyhBcnJheS5pc0FycmF5KG8pPy0xPT09by5pbmRleE9mKHMpOm8hPT1zKSYmKGFbcl09W3NdLmNvbmNhdChvKSk6YVtyXT1zfXZhciBYbj0xLFpuPTI7ZnVuY3Rpb24gUW4oZSx0LG4scixpLG8pe3JldHVybihBcnJheS5pc0FycmF5KG4pfHxzKG4pKSYmKGk9cixyPW4sbj12b2lkIDApLGEobykmJihpPVpuKSxlcihlLHQsbixyLGkpfWZ1bmN0aW9uIGVyKGUsdCxuLHIsYSl7aWYoaShuKSYmaShuLl9fb2JfXykpcmV0dXJuIHZlKCk7aWYoaShuKSYmaShuLmlzKSYmKHQ9bi5pcyksIXQpcmV0dXJuIHZlKCk7dmFyIG8scyxjOyhBcnJheS5pc0FycmF5KHIpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHJbMF0mJihuPW58fHt9LG4uc2NvcGVkU2xvdHM9e2RlZmF1bHQ6clswXX0sci5sZW5ndGg9MCksYT09PVpuP3I9eHQocik6YT09PVhuJiYocj13dChyKSksInN0cmluZyI9PT10eXBlb2YgdCk/KHM9ZS4kdm5vZGUmJmUuJHZub2RlLm5zfHxCLmdldFRhZ05hbWVzcGFjZSh0KSxvPUIuaXNSZXNlcnZlZFRhZyh0KT9uZXcgX2UoQi5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0KSxuLHIsdm9pZCAwLHZvaWQgMCxlKTpuJiZuLnByZXx8IWkoYz1VZShlLiRvcHRpb25zLCJjb21wb25lbnRzIix0KSk/bmV3IF9lKHQsbixyLHZvaWQgMCx2b2lkIDAsZSk6R24oYyxuLGUscix0KSk6bz1Hbih0LG4sZSxyKTtyZXR1cm4gQXJyYXkuaXNBcnJheShvKT9vOmkobyk/KGkocykmJnRyKG8scyksaShuKSYmbnIobiksbyk6dmUoKX1mdW5jdGlvbiB0cihlLHQsbil7aWYoZS5ucz10LCJmb3JlaWduT2JqZWN0Ij09PWUudGFnJiYodD12b2lkIDAsbj0hMCksaShlLmNoaWxkcmVuKSlmb3IodmFyIG89MCxzPWUuY2hpbGRyZW4ubGVuZ3RoO288cztvKyspe3ZhciBjPWUuY2hpbGRyZW5bb107aShjLnRhZykmJihyKGMubnMpfHxhKG4pJiYic3ZnIiE9PWMudGFnKSYmdHIoYyx0LG4pfX1mdW5jdGlvbiBucihlKXtjKGUuc3R5bGUpJiZwdChlLnN0eWxlKSxjKGUuY2xhc3MpJiZwdChlLmNsYXNzKX1mdW5jdGlvbiBycihlKXtlLl92bm9kZT1udWxsLGUuX3N0YXRpY1RyZWVzPW51bGw7dmFyIHQ9ZS4kb3B0aW9ucyxyPWUuJHZub2RlPXQuX3BhcmVudFZub2RlLGk9ciYmci5jb250ZXh0O2UuJHNsb3RzPUx0KHQuX3JlbmRlckNoaWxkcmVuLGkpLGUuJHNjb3BlZFNsb3RzPW4sZS5fYz1mdW5jdGlvbih0LG4scixpKXtyZXR1cm4gUW4oZSx0LG4scixpLCExKX0sZS4kY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LG4scixpKXtyZXR1cm4gUW4oZSx0LG4scixpLCEwKX07dmFyIGE9ciYmci5kYXRhO1RlKGUsIiRhdHRycyIsYSYmYS5hdHRyc3x8bixudWxsLCEwKSxUZShlLCIkbGlzdGVuZXJzIix0Ll9wYXJlbnRMaXN0ZW5lcnN8fG4sbnVsbCwhMCl9ZnVuY3Rpb24gaXIoZSl7Um4oZS5wcm90b3R5cGUpLGUucHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbihlKXtyZXR1cm4gdXQoZSx0aGlzKX0sZS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxyPXQuJG9wdGlvbnMsaT1yLnJlbmRlcixhPXIuX3BhcmVudFZub2RlO2EmJih0LiRzY29wZWRTbG90cz1hLmRhdGEuc2NvcGVkU2xvdHN8fG4pLHQuJHZub2RlPWE7dHJ5e2U9aS5jYWxsKHQuX3JlbmRlclByb3h5LHQuJGNyZWF0ZUVsZW1lbnQpfWNhdGNoKG9vKXtYZShvbyx0LCJyZW5kZXIiKSxlPXQuX3Zub2RlfXJldHVybiBlIGluc3RhbmNlb2YgX2V8fChlPXZlKCkpLGUucGFyZW50PWEsZX19dmFyIGFyPTA7ZnVuY3Rpb24gb3IoZSl7ZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0Ll91aWQ9YXIrKyx0Ll9pc1Z1ZT0hMCxlJiZlLl9pc0NvbXBvbmVudD9zcih0LGUpOnQuJG9wdGlvbnM9SGUoY3IodC5jb25zdHJ1Y3RvciksZXx8e30sdCksdC5fcmVuZGVyUHJveHk9dCx0Ll9zZWxmPXQsQnQodCksRHQodCkscnIodCksS3QodCwiYmVmb3JlQ3JlYXRlIiksUG4odCkscG4odCksU24odCksS3QodCwiY3JlYXRlZCIpLHQuJG9wdGlvbnMuZWwmJnQuJG1vdW50KHQuJG9wdGlvbnMuZWwpfX1mdW5jdGlvbiBzcihlLHQpe3ZhciBuPWUuJG9wdGlvbnM9T2JqZWN0LmNyZWF0ZShlLmNvbnN0cnVjdG9yLm9wdGlvbnMpLHI9dC5fcGFyZW50Vm5vZGU7bi5wYXJlbnQ9dC5wYXJlbnQsbi5fcGFyZW50Vm5vZGU9cjt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7bi5wcm9wc0RhdGE9aS5wcm9wc0RhdGEsbi5fcGFyZW50TGlzdGVuZXJzPWkubGlzdGVuZXJzLG4uX3JlbmRlckNoaWxkcmVuPWkuY2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPWkudGFnLHQucmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9dC5zdGF0aWNSZW5kZXJGbnMpfWZ1bmN0aW9uIGNyKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj1jcihlLnN1cGVyKSxyPWUuc3VwZXJPcHRpb25zO2lmKG4hPT1yKXtlLnN1cGVyT3B0aW9ucz1uO3ZhciBpPWxyKGUpO2kmJkQoZS5leHRlbmRPcHRpb25zLGkpLHQ9ZS5vcHRpb25zPUhlKG4sZS5leHRlbmRPcHRpb25zKSx0Lm5hbWUmJih0LmNvbXBvbmVudHNbdC5uYW1lXT1lKX19cmV0dXJuIHR9ZnVuY3Rpb24gbHIoZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLmV4dGVuZE9wdGlvbnMsaT1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBhIGluIG4pblthXSE9PWlbYV0mJih0fHwodD17fSksdFthXT11cihuW2FdLHJbYV0saVthXSkpO3JldHVybiB0fWZ1bmN0aW9uIHVyKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgcj1bXTtuPUFycmF5LmlzQXJyYXkobik/bjpbbl0sdD1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKSh0LmluZGV4T2YoZVtpXSk+PTB8fG4uaW5kZXhPZihlW2ldKTwwKSYmci5wdXNoKGVbaV0pO3JldHVybiByfXJldHVybiBlfWZ1bmN0aW9uIGRyKGUpe3RoaXMuX2luaXQoZSl9ZnVuY3Rpb24gcHIoZSl7ZS51c2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW5zdGFsbGVkUGx1Z2luc3x8KHRoaXMuX2luc3RhbGxlZFBsdWdpbnM9W10pO2lmKHQuaW5kZXhPZihlKT4tMSlyZXR1cm4gdGhpczt2YXIgbj1PKGFyZ3VtZW50cywxKTtyZXR1cm4gbi51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PT10eXBlb2YgZS5pbnN0YWxsP2UuaW5zdGFsbC5hcHBseShlLG4pOiJmdW5jdGlvbiI9PT10eXBlb2YgZSYmZS5hcHBseShudWxsLG4pLHQucHVzaChlKSx0aGlzfX1mdW5jdGlvbiBmcihlKXtlLm1peGluPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9wdGlvbnM9SGUodGhpcy5vcHRpb25zLGUpLHRoaXN9fWZ1bmN0aW9uIGhyKGUpe2UuY2lkPTA7dmFyIHQ9MTtlLmV4dGVuZD1mdW5jdGlvbihlKXtlPWV8fHt9O3ZhciBuPXRoaXMscj1uLmNpZCxpPWUuX0N0b3J8fChlLl9DdG9yPXt9KTtpZihpW3JdKXJldHVybiBpW3JdO3ZhciBhPWUubmFtZXx8bi5vcHRpb25zLm5hbWU7dmFyIG89ZnVuY3Rpb24oZSl7dGhpcy5faW5pdChlKX07cmV0dXJuIG8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLG8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW8sby5jaWQ9dCsrLG8ub3B0aW9ucz1IZShuLm9wdGlvbnMsZSksb1sic3VwZXIiXT1uLG8ub3B0aW9ucy5wcm9wcyYmbXIobyksby5vcHRpb25zLmNvbXB1dGVkJiZfcihvKSxvLmV4dGVuZD1uLmV4dGVuZCxvLm1peGluPW4ubWl4aW4sby51c2U9bi51c2UsUi5mb3JFYWNoKChmdW5jdGlvbihlKXtvW2VdPW5bZV19KSksYSYmKG8ub3B0aW9ucy5jb21wb25lbnRzW2FdPW8pLG8uc3VwZXJPcHRpb25zPW4ub3B0aW9ucyxvLmV4dGVuZE9wdGlvbnM9ZSxvLnNlYWxlZE9wdGlvbnM9RCh7fSxvLm9wdGlvbnMpLGlbcl09byxvfX1mdW5jdGlvbiBtcihlKXt2YXIgdD1lLm9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIHQpZG4oZS5wcm90b3R5cGUsIl9wcm9wcyIsbil9ZnVuY3Rpb24gX3IoZSl7dmFyIHQ9ZS5vcHRpb25zLmNvbXB1dGVkO2Zvcih2YXIgbiBpbiB0KXZuKGUucHJvdG90eXBlLG4sdFtuXSl9ZnVuY3Rpb24gZ3IoZSl7Ui5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4/KCJjb21wb25lbnQiPT09dCYmdShuKSYmKG4ubmFtZT1uLm5hbWV8fGUsbj10aGlzLm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKG4pKSwiZGlyZWN0aXZlIj09PXQmJiJmdW5jdGlvbiI9PT10eXBlb2YgbiYmKG49e2JpbmQ6bix1cGRhdGU6bn0pLHRoaXMub3B0aW9uc1t0KyJzIl1bZV09bixuKTp0aGlzLm9wdGlvbnNbdCsicyJdW2VdfX0pKX1mdW5jdGlvbiB2cihlKXtyZXR1cm4gZSYmKGUuQ3Rvci5vcHRpb25zLm5hbWV8fGUudGFnKX1mdW5jdGlvbiB5cihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuaW5kZXhPZih0KT4tMToic3RyaW5nIj09PXR5cGVvZiBlP2Uuc3BsaXQoIiwiKS5pbmRleE9mKHQpPi0xOiEhZChlKSYmZS50ZXN0KHQpfWZ1bmN0aW9uIGJyKGUsdCl7dmFyIG49ZS5jYWNoZSxyPWUua2V5cyxpPWUuX3Zub2RlO2Zvcih2YXIgYSBpbiBuKXt2YXIgbz1uW2FdO2lmKG8pe3ZhciBzPXZyKG8uY29tcG9uZW50T3B0aW9ucyk7cyYmIXQocykmJndyKG4sYSxyLGkpfX19ZnVuY3Rpb24gd3IoZSx0LG4scil7dmFyIGk9ZVt0XTshaXx8ciYmaS50YWc9PT1yLnRhZ3x8aS5jb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpLGVbdF09bnVsbCxnKG4sdCl9b3IoZHIpLENuKGRyKSx6dChkciksJHQoZHIpLGlyKGRyKTt2YXIgeHI9W1N0cmluZyxSZWdFeHAsQXJyYXldLGtyPXtuYW1lOiJrZWVwLWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTp4cixleGNsdWRlOnhyLG1heDpbU3RyaW5nLE51bWJlcl19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5rZXlzPVtdfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5jYWNoZSl3cih0aGlzLmNhY2hlLGUsdGhpcy5rZXlzKX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kd2F0Y2goImluY2x1ZGUiLChmdW5jdGlvbih0KXticihlLChmdW5jdGlvbihlKXtyZXR1cm4geXIodCxlKX0pKX0pKSx0aGlzLiR3YXRjaCgiZXhjbHVkZSIsKGZ1bmN0aW9uKHQpe2JyKGUsKGZ1bmN0aW9uKGUpe3JldHVybiF5cih0LGUpfSkpfSkpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRzbG90cy5kZWZhdWx0LHQ9T3QoZSksbj10JiZ0LmNvbXBvbmVudE9wdGlvbnM7aWYobil7dmFyIHI9dnIobiksaT10aGlzLGE9aS5pbmNsdWRlLG89aS5leGNsdWRlO2lmKGEmJighcnx8IXlyKGEscikpfHxvJiZyJiZ5cihvLHIpKXJldHVybiB0O3ZhciBzPXRoaXMsYz1zLmNhY2hlLGw9cy5rZXlzLHU9bnVsbD09dC5rZXk/bi5DdG9yLmNpZCsobi50YWc/Ijo6IituLnRhZzoiIik6dC5rZXk7Y1t1XT8odC5jb21wb25lbnRJbnN0YW5jZT1jW3VdLmNvbXBvbmVudEluc3RhbmNlLGcobCx1KSxsLnB1c2godSkpOihjW3VdPXQsbC5wdXNoKHUpLHRoaXMubWF4JiZsLmxlbmd0aD5wYXJzZUludCh0aGlzLm1heCkmJndyKGMsbFswXSxsLHRoaXMuX3Zub2RlKSksdC5kYXRhLmtlZXBBbGl2ZT0hMH1yZXR1cm4gdHx8ZSYmZVswXX19LENyPXtLZWVwQWxpdmU6a3J9O2Z1bmN0aW9uIFNyKGUpe3ZhciB0PXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQn19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjb25maWciLHQpLGUudXRpbD17d2Fybjp1ZSxleHRlbmQ6RCxtZXJnZU9wdGlvbnM6SGUsZGVmaW5lUmVhY3RpdmU6VGV9LGUuc2V0PUllLGUuZGVsZXRlPWplLGUubmV4dFRpY2s9dXQsZS5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksUi5mb3JFYWNoKChmdW5jdGlvbih0KXtlLm9wdGlvbnNbdCsicyJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSksZS5vcHRpb25zLl9iYXNlPWUsRChlLm9wdGlvbnMuY29tcG9uZW50cyxDcikscHIoZSksZnIoZSksaHIoZSksZ3IoZSl9U3IoZHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkci5wcm90b3R5cGUsIiRpc1NlcnZlciIse2dldDphZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkci5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkciwiRnVuY3Rpb25hbFJlbmRlckNvbnRleHQiLHt2YWx1ZTpWbn0pLGRyLnZlcnNpb249IjIuNS4yMSI7dmFyIFByPW0oInN0eWxlLGNsYXNzIiksTXI9bSgiaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCxwcm9ncmVzcyIpLEFyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idmFsdWUiPT09biYmTXIoZSkmJiJidXR0b24iIT09dHx8InNlbGVjdGVkIj09PW4mJiJvcHRpb24iPT09ZXx8ImNoZWNrZWQiPT09biYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT1uJiYidmlkZW8iPT09ZX0sT3I9bSgiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksRHI9bSgiYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLFRyPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixJcj1mdW5jdGlvbihlKXtyZXR1cm4iOiI9PT1lLmNoYXJBdCg1KSYmInhsaW5rIj09PWUuc2xpY2UoMCw1KX0sanI9ZnVuY3Rpb24oZSl7cmV0dXJuIElyKGUpP2Uuc2xpY2UoNixlLmxlbmd0aCk6IiJ9LEZyPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwhMT09PWV9O2Z1bmN0aW9uIHpyKGUpe3ZhciB0PWUuZGF0YSxuPWUscj1lO3doaWxlKGkoci5jb21wb25lbnRJbnN0YW5jZSkpcj1yLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSxyJiZyLmRhdGEmJih0PUxyKHIuZGF0YSx0KSk7d2hpbGUoaShuPW4ucGFyZW50KSluJiZuLmRhdGEmJih0PUxyKHQsbi5kYXRhKSk7cmV0dXJuIEVyKHQuc3RhdGljQ2xhc3MsdC5jbGFzcyl9ZnVuY3Rpb24gTHIoZSx0KXtyZXR1cm57c3RhdGljQ2xhc3M6TnIoZS5zdGF0aWNDbGFzcyx0LnN0YXRpY0NsYXNzKSxjbGFzczppKGUuY2xhc3MpP1tlLmNsYXNzLHQuY2xhc3NdOnQuY2xhc3N9fWZ1bmN0aW9uIEVyKGUsdCl7cmV0dXJuIGkoZSl8fGkodCk/TnIoZSxScih0KSk6IiJ9ZnVuY3Rpb24gTnIoZSx0KXtyZXR1cm4gZT90P2UrIiAiK3Q6ZTp0fHwiIn1mdW5jdGlvbiBScihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9WcihlKTpjKGUpP0JyKGUpOiJzdHJpbmciPT09dHlwZW9mIGU/ZToiIn1mdW5jdGlvbiBWcihlKXtmb3IodmFyIHQsbj0iIixyPTAsYT1lLmxlbmd0aDtyPGE7cisrKWkodD1ScihlW3JdKSkmJiIiIT09dCYmKG4mJihuKz0iICIpLG4rPXQpO3JldHVybiBufWZ1bmN0aW9uIEJyKGUpe3ZhciB0PSIiO2Zvcih2YXIgbiBpbiBlKWVbbl0mJih0JiYodCs9IiAiKSx0Kz1uKTtyZXR1cm4gdH12YXIgJHI9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwifSxXcj1tKCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCIpLEhyPW0oInN2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSxmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGluZSxtYXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybixwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3IiwhMCksVXI9ZnVuY3Rpb24oZSl7cmV0dXJuIFdyKGUpfHxIcihlKX07ZnVuY3Rpb24gR3IoZSl7cmV0dXJuIEhyKGUpPyJzdmciOiJtYXRoIj09PWU/Im1hdGgiOnZvaWQgMH12YXIgcXI9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBLcihlKXtpZighSylyZXR1cm4hMDtpZihVcihlKSlyZXR1cm4hMTtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsIT1xcltlXSlyZXR1cm4gcXJbZV07dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZS5pbmRleE9mKCItIik+LTE/cXJbZV09dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fHQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6cXJbZV09L0hUTUxVbmtub3duRWxlbWVudC8udGVzdCh0LnRvU3RyaW5nKCkpfXZhciBKcj1tKCJ0ZXh0LG51bWJlcixwYXNzd29yZCxzZWFyY2gsZW1haWwsdGVsLHVybCIpO2Z1bmN0aW9uIFlyKGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIGUpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk7cmV0dXJuIHR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfXJldHVybiBlfWZ1bmN0aW9uIFhyKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4ic2VsZWN0IiE9PWU/bjoodC5kYXRhJiZ0LmRhdGEuYXR0cnMmJnZvaWQgMCE9PXQuZGF0YS5hdHRycy5tdWx0aXBsZSYmbi5zZXRBdHRyaWJ1dGUoIm11bHRpcGxlIiwibXVsdGlwbGUiKSxuKX1mdW5jdGlvbiBacihlLHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJHJbZV0sdCl9ZnVuY3Rpb24gUXIoZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpfWZ1bmN0aW9uIGVpKGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KGUpfWZ1bmN0aW9uIHRpKGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfWZ1bmN0aW9uIG5pKGUsdCl7ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiByaShlLHQpe2UuYXBwZW5kQ2hpbGQodCl9ZnVuY3Rpb24gaWkoZSl7cmV0dXJuIGUucGFyZW50Tm9kZX1mdW5jdGlvbiBhaShlKXtyZXR1cm4gZS5uZXh0U2libGluZ31mdW5jdGlvbiBvaShlKXtyZXR1cm4gZS50YWdOYW1lfWZ1bmN0aW9uIHNpKGUsdCl7ZS50ZXh0Q29udGVudD10fWZ1bmN0aW9uIGNpKGUsdCl7ZS5zZXRBdHRyaWJ1dGUodCwiIil9dmFyIGxpPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVsZW1lbnQ6WHIsY3JlYXRlRWxlbWVudE5TOlpyLGNyZWF0ZVRleHROb2RlOlFyLGNyZWF0ZUNvbW1lbnQ6ZWksaW5zZXJ0QmVmb3JlOnRpLHJlbW92ZUNoaWxkOm5pLGFwcGVuZENoaWxkOnJpLHBhcmVudE5vZGU6aWksbmV4dFNpYmxpbmc6YWksdGFnTmFtZTpvaSxzZXRUZXh0Q29udGVudDpzaSxzZXRTdHlsZVNjb3BlOmNpfSksdWk9e2NyZWF0ZTpmdW5jdGlvbihlLHQpe2RpKHQpfSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXtlLmRhdGEucmVmIT09dC5kYXRhLnJlZiYmKGRpKGUsITApLGRpKHQpKX0sZGVzdHJveTpmdW5jdGlvbihlKXtkaShlLCEwKX19O2Z1bmN0aW9uIGRpKGUsdCl7dmFyIG49ZS5kYXRhLnJlZjtpZihpKG4pKXt2YXIgcj1lLmNvbnRleHQsYT1lLmNvbXBvbmVudEluc3RhbmNlfHxlLmVsbSxvPXIuJHJlZnM7dD9BcnJheS5pc0FycmF5KG9bbl0pP2cob1tuXSxhKTpvW25dPT09YSYmKG9bbl09dm9pZCAwKTplLmRhdGEucmVmSW5Gb3I/QXJyYXkuaXNBcnJheShvW25dKT9vW25dLmluZGV4T2YoYSk8MCYmb1tuXS5wdXNoKGEpOm9bbl09W2FdOm9bbl09YX19dmFyIHBpPW5ldyBfZSgiIix7fSxbXSksZmk9WyJjcmVhdGUiLCJhY3RpdmF0ZSIsInVwZGF0ZSIsInJlbW92ZSIsImRlc3Ryb3kiXTtmdW5jdGlvbiBoaShlLHQpe3JldHVybiBlLmtleT09PXQua2V5JiYoZS50YWc9PT10LnRhZyYmZS5pc0NvbW1lbnQ9PT10LmlzQ29tbWVudCYmaShlLmRhdGEpPT09aSh0LmRhdGEpJiZtaShlLHQpfHxhKGUuaXNBc3luY1BsYWNlaG9sZGVyKSYmZS5hc3luY0ZhY3Rvcnk9PT10LmFzeW5jRmFjdG9yeSYmcih0LmFzeW5jRmFjdG9yeS5lcnJvcikpfWZ1bmN0aW9uIG1pKGUsdCl7aWYoImlucHV0IiE9PWUudGFnKXJldHVybiEwO3ZhciBuLHI9aShuPWUuZGF0YSkmJmkobj1uLmF0dHJzKSYmbi50eXBlLGE9aShuPXQuZGF0YSkmJmkobj1uLmF0dHJzKSYmbi50eXBlO3JldHVybiByPT09YXx8SnIocikmJkpyKGEpfWZ1bmN0aW9uIF9pKGUsdCxuKXt2YXIgcixhLG89e307Zm9yKHI9dDtyPD1uOysrcilhPWVbcl0ua2V5LGkoYSkmJihvW2FdPXIpO3JldHVybiBvfWZ1bmN0aW9uIGdpKGUpe3ZhciB0LG4sbz17fSxjPWUubW9kdWxlcyxsPWUubm9kZU9wcztmb3IodD0wO3Q8ZmkubGVuZ3RoOysrdClmb3Iob1tmaVt0XV09W10sbj0wO248Yy5sZW5ndGg7KytuKWkoY1tuXVtmaVt0XV0pJiZvW2ZpW3RdXS5wdXNoKGNbbl1bZmlbdF1dKTtmdW5jdGlvbiB1KGUpe3JldHVybiBuZXcgX2UobC50YWdOYW1lKGUpLnRvTG93ZXJDYXNlKCkse30sW10sdm9pZCAwLGUpfWZ1bmN0aW9uIGQoZSx0KXtmdW5jdGlvbiBuKCl7MD09PS0tbi5saXN0ZW5lcnMmJnAoZSl9cmV0dXJuIG4ubGlzdGVuZXJzPXQsbn1mdW5jdGlvbiBwKGUpe3ZhciB0PWwucGFyZW50Tm9kZShlKTtpKHQpJiZsLnJlbW92ZUNoaWxkKHQsZSl9ZnVuY3Rpb24gZihlLHQsbixyLG8scyxjKXtpZihpKGUuZWxtKSYmaShzKSYmKGU9c1tjXT1iZShlKSksZS5pc1Jvb3RJbnNlcnQ9IW8sIWgoZSx0LG4scikpe3ZhciB1PWUuZGF0YSxkPWUuY2hpbGRyZW4scD1lLnRhZztpKHApPyhlLmVsbT1lLm5zP2wuY3JlYXRlRWxlbWVudE5TKGUubnMscCk6bC5jcmVhdGVFbGVtZW50KHAsZSkseChlKSx5KGUsZCx0KSxpKHUpJiZ3KGUsdCksdihuLGUuZWxtLHIpKTphKGUuaXNDb21tZW50KT8oZS5lbG09bC5jcmVhdGVDb21tZW50KGUudGV4dCksdihuLGUuZWxtLHIpKTooZS5lbG09bC5jcmVhdGVUZXh0Tm9kZShlLnRleHQpLHYobixlLmVsbSxyKSl9fWZ1bmN0aW9uIGgoZSx0LG4scil7dmFyIG89ZS5kYXRhO2lmKGkobykpe3ZhciBzPWkoZS5jb21wb25lbnRJbnN0YW5jZSkmJm8ua2VlcEFsaXZlO2lmKGkobz1vLmhvb2spJiZpKG89by5pbml0KSYmbyhlLCExKSxpKGUuY29tcG9uZW50SW5zdGFuY2UpKXJldHVybiBfKGUsdCksdihuLGUuZWxtLHIpLGEocykmJmcoZSx0LG4sciksITB9fWZ1bmN0aW9uIF8oZSx0KXtpKGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKHQucHVzaC5hcHBseSh0LGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSxlLmRhdGEucGVuZGluZ0luc2VydD1udWxsKSxlLmVsbT1lLmNvbXBvbmVudEluc3RhbmNlLiRlbCxiKGUpPyh3KGUsdCkseChlKSk6KGRpKGUpLHQucHVzaChlKSl9ZnVuY3Rpb24gZyhlLHQsbixyKXt2YXIgYSxzPWU7d2hpbGUocy5jb21wb25lbnRJbnN0YW5jZSlpZihzPXMuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLGkoYT1zLmRhdGEpJiZpKGE9YS50cmFuc2l0aW9uKSl7Zm9yKGE9MDthPG8uYWN0aXZhdGUubGVuZ3RoOysrYSlvLmFjdGl2YXRlW2FdKHBpLHMpO3QucHVzaChzKTticmVha312KG4sZS5lbG0scil9ZnVuY3Rpb24gdihlLHQsbil7aShlKSYmKGkobik/bC5wYXJlbnROb2RlKG4pPT09ZSYmbC5pbnNlcnRCZWZvcmUoZSx0LG4pOmwuYXBwZW5kQ2hpbGQoZSx0KSl9ZnVuY3Rpb24geShlLHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSl7MDtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcilmKHRbcl0sbixlLmVsbSxudWxsLCEwLHQscil9ZWxzZSBzKGUudGV4dCkmJmwuYXBwZW5kQ2hpbGQoZS5lbG0sbC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZS50ZXh0KSkpfWZ1bmN0aW9uIGIoZSl7d2hpbGUoZS5jb21wb25lbnRJbnN0YW5jZSllPWUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBpKGUudGFnKX1mdW5jdGlvbiB3KGUsbil7Zm9yKHZhciByPTA7cjxvLmNyZWF0ZS5sZW5ndGg7KytyKW8uY3JlYXRlW3JdKHBpLGUpO3Q9ZS5kYXRhLmhvb2ssaSh0KSYmKGkodC5jcmVhdGUpJiZ0LmNyZWF0ZShwaSxlKSxpKHQuaW5zZXJ0KSYmbi5wdXNoKGUpKX1mdW5jdGlvbiB4KGUpe3ZhciB0O2lmKGkodD1lLmZuU2NvcGVJZCkpbC5zZXRTdHlsZVNjb3BlKGUuZWxtLHQpO2Vsc2V7dmFyIG49ZTt3aGlsZShuKWkodD1uLmNvbnRleHQpJiZpKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJmwuc2V0U3R5bGVTY29wZShlLmVsbSx0KSxuPW4ucGFyZW50fWkodD1SdCkmJnQhPT1lLmNvbnRleHQmJnQhPT1lLmZuQ29udGV4dCYmaSh0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZsLnNldFN0eWxlU2NvcGUoZS5lbG0sdCl9ZnVuY3Rpb24gayhlLHQsbixyLGksYSl7Zm9yKDtyPD1pOysrcilmKG5bcl0sYSxlLHQsITEsbixyKX1mdW5jdGlvbiBDKGUpe3ZhciB0LG4scj1lLmRhdGE7aWYoaShyKSlmb3IoaSh0PXIuaG9vaykmJmkodD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PG8uZGVzdHJveS5sZW5ndGg7Kyt0KW8uZGVzdHJveVt0XShlKTtpZihpKHQ9ZS5jaGlsZHJlbikpZm9yKG49MDtuPGUuY2hpbGRyZW4ubGVuZ3RoOysrbilDKGUuY2hpbGRyZW5bbl0pfWZ1bmN0aW9uIFMoZSx0LG4scil7Zm9yKDtuPD1yOysrbil7dmFyIGE9dFtuXTtpKGEpJiYoaShhLnRhZyk/KFAoYSksQyhhKSk6cChhLmVsbSkpfX1mdW5jdGlvbiBQKGUsdCl7aWYoaSh0KXx8aShlLmRhdGEpKXt2YXIgbixyPW8ucmVtb3ZlLmxlbmd0aCsxO2ZvcihpKHQpP3QubGlzdGVuZXJzKz1yOnQ9ZChlLmVsbSxyKSxpKG49ZS5jb21wb25lbnRJbnN0YW5jZSkmJmkobj1uLl92bm9kZSkmJmkobi5kYXRhKSYmUChuLHQpLG49MDtuPG8ucmVtb3ZlLmxlbmd0aDsrK24pby5yZW1vdmVbbl0oZSx0KTtpKG49ZS5kYXRhLmhvb2spJiZpKG49bi5yZW1vdmUpP24oZSx0KTp0KCl9ZWxzZSBwKGUuZWxtKX1mdW5jdGlvbiBNKGUsdCxuLGEsbyl7dmFyIHMsYyx1LGQscD0wLGg9MCxtPXQubGVuZ3RoLTEsXz10WzBdLGc9dFttXSx2PW4ubGVuZ3RoLTEseT1uWzBdLGI9blt2XSx3PSFvO3doaWxlKHA8PW0mJmg8PXYpcihfKT9fPXRbKytwXTpyKGcpP2c9dFstLW1dOmhpKF8seSk/KE8oXyx5LGEsbixoKSxfPXRbKytwXSx5PW5bKytoXSk6aGkoZyxiKT8oTyhnLGIsYSxuLHYpLGc9dFstLW1dLGI9blstLXZdKTpoaShfLGIpPyhPKF8sYixhLG4sdiksdyYmbC5pbnNlcnRCZWZvcmUoZSxfLmVsbSxsLm5leHRTaWJsaW5nKGcuZWxtKSksXz10WysrcF0sYj1uWy0tdl0pOmhpKGcseSk/KE8oZyx5LGEsbixoKSx3JiZsLmluc2VydEJlZm9yZShlLGcuZWxtLF8uZWxtKSxnPXRbLS1tXSx5PW5bKytoXSk6KHIocykmJihzPV9pKHQscCxtKSksYz1pKHkua2V5KT9zW3kua2V5XTpBKHksdCxwLG0pLHIoYyk/Zih5LGEsZSxfLmVsbSwhMSxuLGgpOih1PXRbY10saGkodSx5KT8oTyh1LHksYSxuLGgpLHRbY109dm9pZCAwLHcmJmwuaW5zZXJ0QmVmb3JlKGUsdS5lbG0sXy5lbG0pKTpmKHksYSxlLF8uZWxtLCExLG4saCkpLHk9blsrK2hdKTtwPm0/KGQ9cihuW3YrMV0pP251bGw6blt2KzFdLmVsbSxrKGUsZCxuLGgsdixhKSk6aD52JiZTKGUsdCxwLG0pfWZ1bmN0aW9uIEEoZSx0LG4scil7Zm9yKHZhciBhPW47YTxyO2ErKyl7dmFyIG89dFthXTtpZihpKG8pJiZoaShlLG8pKXJldHVybiBhfX1mdW5jdGlvbiBPKGUsdCxuLHMsYyx1KXtpZihlIT09dCl7aSh0LmVsbSkmJmkocykmJih0PXNbY109YmUodCkpO3ZhciBkPXQuZWxtPWUuZWxtO2lmKGEoZS5pc0FzeW5jUGxhY2Vob2xkZXIpKWkodC5hc3luY0ZhY3RvcnkucmVzb2x2ZWQpP0koZS5lbG0sdCxuKTp0LmlzQXN5bmNQbGFjZWhvbGRlcj0hMDtlbHNlIGlmKGEodC5pc1N0YXRpYykmJmEoZS5pc1N0YXRpYykmJnQua2V5PT09ZS5rZXkmJihhKHQuaXNDbG9uZWQpfHxhKHQuaXNPbmNlKSkpdC5jb21wb25lbnRJbnN0YW5jZT1lLmNvbXBvbmVudEluc3RhbmNlO2Vsc2V7dmFyIHAsZj10LmRhdGE7aShmKSYmaShwPWYuaG9vaykmJmkocD1wLnByZXBhdGNoKSYmcChlLHQpO3ZhciBoPWUuY2hpbGRyZW4sbT10LmNoaWxkcmVuO2lmKGkoZikmJmIodCkpe2ZvcihwPTA7cDxvLnVwZGF0ZS5sZW5ndGg7KytwKW8udXBkYXRlW3BdKGUsdCk7aShwPWYuaG9vaykmJmkocD1wLnVwZGF0ZSkmJnAoZSx0KX1yKHQudGV4dCk/aShoKSYmaShtKT9oIT09bSYmTShkLGgsbSxuLHUpOmkobSk/KGkoZS50ZXh0KSYmbC5zZXRUZXh0Q29udGVudChkLCIiKSxrKGQsbnVsbCxtLDAsbS5sZW5ndGgtMSxuKSk6aShoKT9TKGQsaCwwLGgubGVuZ3RoLTEpOmkoZS50ZXh0KSYmbC5zZXRUZXh0Q29udGVudChkLCIiKTplLnRleHQhPT10LnRleHQmJmwuc2V0VGV4dENvbnRlbnQoZCx0LnRleHQpLGkoZikmJmkocD1mLmhvb2spJiZpKHA9cC5wb3N0cGF0Y2gpJiZwKGUsdCl9fX1mdW5jdGlvbiBEKGUsdCxuKXtpZihhKG4pJiZpKGUucGFyZW50KSllLnBhcmVudC5kYXRhLnBlbmRpbmdJbnNlcnQ9dDtlbHNlIGZvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKXRbcl0uZGF0YS5ob29rLmluc2VydCh0W3JdKX12YXIgVD1tKCJhdHRycyxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXkiKTtmdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBvLHM9dC50YWcsYz10LmRhdGEsbD10LmNoaWxkcmVuO2lmKHI9cnx8YyYmYy5wcmUsdC5lbG09ZSxhKHQuaXNDb21tZW50KSYmaSh0LmFzeW5jRmFjdG9yeSkpcmV0dXJuIHQuaXNBc3luY1BsYWNlaG9sZGVyPSEwLCEwO2lmKGkoYykmJihpKG89Yy5ob29rKSYmaShvPW8uaW5pdCkmJm8odCwhMCksaShvPXQuY29tcG9uZW50SW5zdGFuY2UpKSlyZXR1cm4gXyh0LG4pLCEwO2lmKGkocykpe2lmKGkobCkpaWYoZS5oYXNDaGlsZE5vZGVzKCkpaWYoaShvPWMpJiZpKG89by5kb21Qcm9wcykmJmkobz1vLmlubmVySFRNTCkpe2lmKG8hPT1lLmlubmVySFRNTClyZXR1cm4hMX1lbHNle2Zvcih2YXIgdT0hMCxkPWUuZmlyc3RDaGlsZCxwPTA7cDxsLmxlbmd0aDtwKyspe2lmKCFkfHwhSShkLGxbcF0sbixyKSl7dT0hMTticmVha31kPWQubmV4dFNpYmxpbmd9aWYoIXV8fGQpcmV0dXJuITF9ZWxzZSB5KHQsbCxuKTtpZihpKGMpKXt2YXIgZj0hMTtmb3IodmFyIGggaW4gYylpZighVChoKSl7Zj0hMCx3KHQsbik7YnJlYWt9IWYmJmNbImNsYXNzIl0mJnB0KGNbImNsYXNzIl0pfX1lbHNlIGUuZGF0YSE9PXQudGV4dCYmKGUuZGF0YT10LnRleHQpO3JldHVybiEwfXJldHVybiBmdW5jdGlvbihlLHQsbixzKXtpZighcih0KSl7dmFyIGM9ITEsZD1bXTtpZihyKGUpKWM9ITAsZih0LGQpO2Vsc2V7dmFyIHA9aShlLm5vZGVUeXBlKTtpZighcCYmaGkoZSx0KSlPKGUsdCxkLG51bGwsbnVsbCxzKTtlbHNle2lmKHApe2lmKDE9PT1lLm5vZGVUeXBlJiZlLmhhc0F0dHJpYnV0ZShOKSYmKGUucmVtb3ZlQXR0cmlidXRlKE4pLG49ITApLGEobikmJkkoZSx0LGQpKXJldHVybiBEKHQsZCwhMCksZTtlPXUoZSl9dmFyIGg9ZS5lbG0sbT1sLnBhcmVudE5vZGUoaCk7aWYoZih0LGQsaC5fbGVhdmVDYj9udWxsOm0sbC5uZXh0U2libGluZyhoKSksaSh0LnBhcmVudCkpe3ZhciBfPXQucGFyZW50LGc9Yih0KTt3aGlsZShfKXtmb3IodmFyIHY9MDt2PG8uZGVzdHJveS5sZW5ndGg7Kyt2KW8uZGVzdHJveVt2XShfKTtpZihfLmVsbT10LmVsbSxnKXtmb3IodmFyIHk9MDt5PG8uY3JlYXRlLmxlbmd0aDsrK3kpby5jcmVhdGVbeV0ocGksXyk7dmFyIHc9Xy5kYXRhLmhvb2suaW5zZXJ0O2lmKHcubWVyZ2VkKWZvcih2YXIgeD0xO3g8dy5mbnMubGVuZ3RoO3grKyl3LmZuc1t4XSgpfWVsc2UgZGkoXyk7Xz1fLnBhcmVudH19aShtKT9TKG0sW2VdLDAsMCk6aShlLnRhZykmJkMoZSl9fXJldHVybiBEKHQsZCxjKSx0LmVsbX1pKGUpJiZDKGUpfX12YXIgdmk9e2NyZWF0ZTp5aSx1cGRhdGU6eWksZGVzdHJveTpmdW5jdGlvbihlKXt5aShlLHBpKX19O2Z1bmN0aW9uIHlpKGUsdCl7KGUuZGF0YS5kaXJlY3RpdmVzfHx0LmRhdGEuZGlyZWN0aXZlcykmJmJpKGUsdCl9ZnVuY3Rpb24gYmkoZSx0KXt2YXIgbixyLGksYT1lPT09cGksbz10PT09cGkscz14aShlLmRhdGEuZGlyZWN0aXZlcyxlLmNvbnRleHQpLGM9eGkodC5kYXRhLmRpcmVjdGl2ZXMsdC5jb250ZXh0KSxsPVtdLHU9W107Zm9yKG4gaW4gYylyPXNbbl0saT1jW25dLHI/KGkub2xkVmFsdWU9ci52YWx1ZSxDaShpLCJ1cGRhdGUiLHQsZSksaS5kZWYmJmkuZGVmLmNvbXBvbmVudFVwZGF0ZWQmJnUucHVzaChpKSk6KENpKGksImJpbmQiLHQsZSksaS5kZWYmJmkuZGVmLmluc2VydGVkJiZsLnB1c2goaSkpO2lmKGwubGVuZ3RoKXt2YXIgZD1mdW5jdGlvbigpe2Zvcih2YXIgbj0wO248bC5sZW5ndGg7bisrKUNpKGxbbl0sImluc2VydGVkIix0LGUpfTthP3Z0KHQsImluc2VydCIsZCk6ZCgpfWlmKHUubGVuZ3RoJiZ2dCh0LCJwb3N0cGF0Y2giLChmdW5jdGlvbigpe2Zvcih2YXIgbj0wO248dS5sZW5ndGg7bisrKUNpKHVbbl0sImNvbXBvbmVudFVwZGF0ZWQiLHQsZSl9KSksIWEpZm9yKG4gaW4gcyljW25dfHxDaShzW25dLCJ1bmJpbmQiLGUsZSxvKX12YXIgd2k9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiB4aShlLHQpe3ZhciBuLHIsaT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBpO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspcj1lW25dLHIubW9kaWZpZXJzfHwoci5tb2RpZmllcnM9d2kpLGlba2kocildPXIsci5kZWY9VWUodC4kb3B0aW9ucywiZGlyZWN0aXZlcyIsci5uYW1lLCEwKTtyZXR1cm4gaX1mdW5jdGlvbiBraShlKXtyZXR1cm4gZS5yYXdOYW1lfHxlLm5hbWUrIi4iK09iamVjdC5rZXlzKGUubW9kaWZpZXJzfHx7fSkuam9pbigiLiIpfWZ1bmN0aW9uIENpKGUsdCxuLHIsaSl7dmFyIGE9ZS5kZWYmJmUuZGVmW3RdO2lmKGEpdHJ5e2Eobi5lbG0sZSxuLHIsaSl9Y2F0Y2gob28pe1hlKG9vLG4uY29udGV4dCwiZGlyZWN0aXZlICIrZS5uYW1lKyIgIit0KyIgaG9vayIpfX12YXIgU2k9W3VpLHZpXTtmdW5jdGlvbiBQaShlLHQpe3ZhciBuPXQuY29tcG9uZW50T3B0aW9ucztpZigoIWkobil8fCExIT09bi5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzKSYmKCFyKGUuZGF0YS5hdHRycyl8fCFyKHQuZGF0YS5hdHRycykpKXt2YXIgYSxvLHMsYz10LmVsbSxsPWUuZGF0YS5hdHRyc3x8e30sdT10LmRhdGEuYXR0cnN8fHt9O2ZvcihhIGluIGkodS5fX29iX18pJiYodT10LmRhdGEuYXR0cnM9RCh7fSx1KSksdSlvPXVbYV0scz1sW2FdLHMhPT1vJiZNaShjLGEsbyk7Zm9yKGEgaW4oWnx8ZWUpJiZ1LnZhbHVlIT09bC52YWx1ZSYmTWkoYywidmFsdWUiLHUudmFsdWUpLGwpcih1W2FdKSYmKElyKGEpP2MucmVtb3ZlQXR0cmlidXRlTlMoVHIsanIoYSkpOk9yKGEpfHxjLnJlbW92ZUF0dHJpYnV0ZShhKSl9fWZ1bmN0aW9uIE1pKGUsdCxuKXtlLnRhZ05hbWUuaW5kZXhPZigiLSIpPi0xP0FpKGUsdCxuKTpEcih0KT9GcihuKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KToobj0iYWxsb3dmdWxsc2NyZWVuIj09PXQmJiJFTUJFRCI9PT1lLnRhZ05hbWU/InRydWUiOnQsZS5zZXRBdHRyaWJ1dGUodCxuKSk6T3IodCk/ZS5zZXRBdHRyaWJ1dGUodCxGcihuKXx8ImZhbHNlIj09PW4/ImZhbHNlIjoidHJ1ZSIpOklyKHQpP0ZyKG4pP2UucmVtb3ZlQXR0cmlidXRlTlMoVHIsanIodCkpOmUuc2V0QXR0cmlidXRlTlMoVHIsdCxuKTpBaShlLHQsbil9ZnVuY3Rpb24gQWkoZSx0LG4pe2lmKEZyKG4pKWUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7aWYoWiYmIVEmJigiVEVYVEFSRUEiPT09ZS50YWdOYW1lfHwiSU5QVVQiPT09ZS50YWdOYW1lKSYmInBsYWNlaG9sZGVyIj09PXQmJiFlLl9faWVwaCl7dmFyIHI9ZnVuY3Rpb24odCl7dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImlucHV0IixyKX07ZS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsciksZS5fX2llcGg9ITB9ZS5zZXRBdHRyaWJ1dGUodCxuKX19dmFyIE9pPXtjcmVhdGU6UGksdXBkYXRlOlBpfTtmdW5jdGlvbiBEaShlLHQpe3ZhciBuPXQuZWxtLGE9dC5kYXRhLG89ZS5kYXRhO2lmKCEocihhLnN0YXRpY0NsYXNzKSYmcihhLmNsYXNzKSYmKHIobyl8fHIoby5zdGF0aWNDbGFzcykmJnIoby5jbGFzcykpKSl7dmFyIHM9enIodCksYz1uLl90cmFuc2l0aW9uQ2xhc3NlcztpKGMpJiYocz1OcihzLFJyKGMpKSkscyE9PW4uX3ByZXZDbGFzcyYmKG4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyksbi5fcHJldkNsYXNzPXMpfX12YXIgVGksSWk9e2NyZWF0ZTpEaSx1cGRhdGU6RGl9LGppPSJfX3IiLEZpPSJfX2MiO2Z1bmN0aW9uIHppKGUpe2lmKGkoZVtqaV0pKXt2YXIgdD1aPyJjaGFuZ2UiOiJpbnB1dCI7ZVt0XT1bXS5jb25jYXQoZVtqaV0sZVt0XXx8W10pLGRlbGV0ZSBlW2ppXX1pKGVbRmldKSYmKGUuY2hhbmdlPVtdLmNvbmNhdChlW0ZpXSxlLmNoYW5nZXx8W10pLGRlbGV0ZSBlW0ZpXSl9ZnVuY3Rpb24gTGkoZSx0LG4pe3ZhciByPVRpO3JldHVybiBmdW5jdGlvbiBpKCl7dmFyIGE9dC5hcHBseShudWxsLGFyZ3VtZW50cyk7bnVsbCE9PWEmJk5pKGUsaSxuLHIpfX1mdW5jdGlvbiBFaShlLHQsbixyKXt0PWx0KHQpLFRpLmFkZEV2ZW50TGlzdGVuZXIoZSx0LHJlP3tjYXB0dXJlOm4scGFzc2l2ZTpyfTpuKX1mdW5jdGlvbiBOaShlLHQsbixyKXsocnx8VGkpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0Ll93aXRoVGFza3x8dCxuKX1mdW5jdGlvbiBSaShlLHQpe2lmKCFyKGUuZGF0YS5vbil8fCFyKHQuZGF0YS5vbikpe3ZhciBuPXQuZGF0YS5vbnx8e30saT1lLmRhdGEub258fHt9O1RpPXQuZWxtLHppKG4pLGd0KG4saSxFaSxOaSxMaSx0LmNvbnRleHQpLFRpPXZvaWQgMH19dmFyIFZpPXtjcmVhdGU6UmksdXBkYXRlOlJpfTtmdW5jdGlvbiBCaShlLHQpe2lmKCFyKGUuZGF0YS5kb21Qcm9wcyl8fCFyKHQuZGF0YS5kb21Qcm9wcykpe3ZhciBuLGEsbz10LmVsbSxzPWUuZGF0YS5kb21Qcm9wc3x8e30sYz10LmRhdGEuZG9tUHJvcHN8fHt9O2ZvcihuIGluIGkoYy5fX29iX18pJiYoYz10LmRhdGEuZG9tUHJvcHM9RCh7fSxjKSkscylyKGNbbl0pJiYob1tuXT0iIik7Zm9yKG4gaW4gYyl7aWYoYT1jW25dLCJ0ZXh0Q29udGVudCI9PT1ufHwiaW5uZXJIVE1MIj09PW4pe2lmKHQuY2hpbGRyZW4mJih0LmNoaWxkcmVuLmxlbmd0aD0wKSxhPT09c1tuXSljb250aW51ZTsxPT09by5jaGlsZE5vZGVzLmxlbmd0aCYmby5yZW1vdmVDaGlsZChvLmNoaWxkTm9kZXNbMF0pfWlmKCJ2YWx1ZSI9PT1uKXtvLl92YWx1ZT1hO3ZhciBsPXIoYSk/IiI6U3RyaW5nKGEpOyRpKG8sbCkmJihvLnZhbHVlPWwpfWVsc2Ugb1tuXT1hfX19ZnVuY3Rpb24gJGkoZSx0KXtyZXR1cm4hZS5jb21wb3NpbmcmJigiT1BUSU9OIj09PWUudGFnTmFtZXx8V2koZSx0KXx8SGkoZSx0KSl9ZnVuY3Rpb24gV2koZSx0KXt2YXIgbj0hMDt0cnl7bj1kb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ZX1jYXRjaChvbyl7fXJldHVybiBuJiZlLnZhbHVlIT09dH1mdW5jdGlvbiBIaShlLHQpe3ZhciBuPWUudmFsdWUscj1lLl92TW9kaWZpZXJzO2lmKGkocikpe2lmKHIubGF6eSlyZXR1cm4hMTtpZihyLm51bWJlcilyZXR1cm4gaChuKSE9PWgodCk7aWYoci50cmltKXJldHVybiBuLnRyaW0oKSE9PXQudHJpbSgpfXJldHVybiBuIT09dH12YXIgVWk9e2NyZWF0ZTpCaSx1cGRhdGU6Qml9LEdpPWIoKGZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49LzsoPyFbXihdKlwpKS9nLHI9LzooLispLztyZXR1cm4gZS5zcGxpdChuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihlKXt2YXIgbj1lLnNwbGl0KHIpO24ubGVuZ3RoPjEmJih0W25bMF0udHJpbSgpXT1uWzFdLnRyaW0oKSl9fSkpLHR9KSk7ZnVuY3Rpb24gcWkoZSl7dmFyIHQ9S2koZS5zdHlsZSk7cmV0dXJuIGUuc3RhdGljU3R5bGU/RChlLnN0YXRpY1N0eWxlLHQpOnR9ZnVuY3Rpb24gS2koZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/VChlKToic3RyaW5nIj09PXR5cGVvZiBlP0dpKGUpOmV9ZnVuY3Rpb24gSmkoZSx0KXt2YXIgbixyPXt9O2lmKHQpe3ZhciBpPWU7d2hpbGUoaS5jb21wb25lbnRJbnN0YW5jZSlpPWkuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLGkmJmkuZGF0YSYmKG49cWkoaS5kYXRhKSkmJkQocixuKX0obj1xaShlLmRhdGEpKSYmRChyLG4pO3ZhciBhPWU7d2hpbGUoYT1hLnBhcmVudClhLmRhdGEmJihuPXFpKGEuZGF0YSkpJiZEKHIsbik7cmV0dXJuIHJ9dmFyIFlpLFhpPS9eLS0vLFppPS9ccyohaW1wb3J0YW50JC8sUWk9ZnVuY3Rpb24oZSx0LG4pe2lmKFhpLnRlc3QodCkpZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pO2Vsc2UgaWYoWmkudGVzdChuKSllLnN0eWxlLnNldFByb3BlcnR5KHQsbi5yZXBsYWNlKFppLCIiKSwiaW1wb3J0YW50Iik7ZWxzZXt2YXIgcj10YSh0KTtpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgaT0wLGE9bi5sZW5ndGg7aTxhO2krKyllLnN0eWxlW3JdPW5baV07ZWxzZSBlLnN0eWxlW3JdPW59fSxlYT1bIldlYmtpdCIsIk1veiIsIm1zIl0sdGE9YigoZnVuY3Rpb24oZSl7aWYoWWk9WWl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLGU9eChlKSwiZmlsdGVyIiE9PWUmJmUgaW4gWWkpcmV0dXJuIGU7Zm9yKHZhciB0PWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPTA7bjxlYS5sZW5ndGg7bisrKXt2YXIgcj1lYVtuXSt0O2lmKHIgaW4gWWkpcmV0dXJuIHJ9fSkpO2Z1bmN0aW9uIG5hKGUsdCl7dmFyIG49dC5kYXRhLGE9ZS5kYXRhO2lmKCEocihuLnN0YXRpY1N0eWxlKSYmcihuLnN0eWxlKSYmcihhLnN0YXRpY1N0eWxlKSYmcihhLnN0eWxlKSkpe3ZhciBvLHMsYz10LmVsbSxsPWEuc3RhdGljU3R5bGUsdT1hLm5vcm1hbGl6ZWRTdHlsZXx8YS5zdHlsZXx8e30sZD1sfHx1LHA9S2kodC5kYXRhLnN0eWxlKXx8e307dC5kYXRhLm5vcm1hbGl6ZWRTdHlsZT1pKHAuX19vYl9fKT9EKHt9LHApOnA7dmFyIGY9SmkodCwhMCk7Zm9yKHMgaW4gZClyKGZbc10pJiZRaShjLHMsIiIpO2ZvcihzIGluIGYpbz1mW3NdLG8hPT1kW3NdJiZRaShjLHMsbnVsbD09bz8iIjpvKX19dmFyIHJhPXtjcmVhdGU6bmEsdXBkYXRlOm5hfSxpYT0vXHMrLztmdW5jdGlvbiBhYShlLHQpe2lmKHQmJih0PXQudHJpbSgpKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0KGlhKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGFzc0xpc3QuYWRkKHQpfSkpOmUuY2xhc3NMaXN0LmFkZCh0KTtlbHNle3ZhciBuPSIgIisoZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICI7bi5pbmRleE9mKCIgIit0KyIgIik8MCYmZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwobit0KS50cmltKCkpfX1mdW5jdGlvbiBvYShlLHQpe2lmKHQmJih0PXQudHJpbSgpKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0KGlhKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGFzc0xpc3QucmVtb3ZlKHQpfSkpOmUuY2xhc3NMaXN0LnJlbW92ZSh0KSxlLmNsYXNzTGlzdC5sZW5ndGh8fGUucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpO2Vsc2V7dmFyIG49IiAiKyhlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIit0KyIgIjt3aGlsZShuLmluZGV4T2Yocik+PTApbj1uLnJlcGxhY2UociwiICIpO249bi50cmltKCksbj9lLnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4pOmUucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpfX1mdW5jdGlvbiBzYShlKXtpZihlKXtpZigib2JqZWN0Ij09PXR5cGVvZiBlKXt2YXIgdD17fTtyZXR1cm4hMSE9PWUuY3NzJiZEKHQsY2EoZS5uYW1lfHwidiIpKSxEKHQsZSksdH1yZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBlP2NhKGUpOnZvaWQgMH19dmFyIGNhPWIoKGZ1bmN0aW9uKGUpe3JldHVybntlbnRlckNsYXNzOmUrIi1lbnRlciIsZW50ZXJUb0NsYXNzOmUrIi1lbnRlci10byIsZW50ZXJBY3RpdmVDbGFzczplKyItZW50ZXItYWN0aXZlIixsZWF2ZUNsYXNzOmUrIi1sZWF2ZSIsbGVhdmVUb0NsYXNzOmUrIi1sZWF2ZS10byIsbGVhdmVBY3RpdmVDbGFzczplKyItbGVhdmUtYWN0aXZlIn19KSksbGE9SyYmIVEsdWE9InRyYW5zaXRpb24iLGRhPSJhbmltYXRpb24iLHBhPSJ0cmFuc2l0aW9uIixmYT0idHJhbnNpdGlvbmVuZCIsaGE9ImFuaW1hdGlvbiIsbWE9ImFuaW1hdGlvbmVuZCI7bGEmJih2b2lkIDA9PT13aW5kb3cub250cmFuc2l0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kJiYocGE9IldlYmtpdFRyYW5zaXRpb24iLGZhPSJ3ZWJraXRUcmFuc2l0aW9uRW5kIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihoYT0iV2Via2l0QW5pbWF0aW9uIixtYT0id2Via2l0QW5pbWF0aW9uRW5kIikpO3ZhciBfYT1LP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6c2V0VGltZW91dDpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfTtmdW5jdGlvbiBnYShlKXtfYSgoZnVuY3Rpb24oKXtfYShlKX0pKX1mdW5jdGlvbiB2YShlLHQpe3ZhciBuPWUuX3RyYW5zaXRpb25DbGFzc2VzfHwoZS5fdHJhbnNpdGlvbkNsYXNzZXM9W10pO24uaW5kZXhPZih0KTwwJiYobi5wdXNoKHQpLGFhKGUsdCkpfWZ1bmN0aW9uIHlhKGUsdCl7ZS5fdHJhbnNpdGlvbkNsYXNzZXMmJmcoZS5fdHJhbnNpdGlvbkNsYXNzZXMsdCksb2EoZSx0KX1mdW5jdGlvbiBiYShlLHQsbil7dmFyIHI9eGEoZSx0KSxpPXIudHlwZSxhPXIudGltZW91dCxvPXIucHJvcENvdW50O2lmKCFpKXJldHVybiBuKCk7dmFyIHM9aT09PXVhP2ZhOm1hLGM9MCxsPWZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHMsdSksbigpfSx1PWZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09ZSYmKytjPj1vJiZsKCl9O3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7YzxvJiZsKCl9KSxhKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLHUpfXZhciB3YT0vXGIodHJhbnNmb3JtfGFsbCkoLHwkKS87ZnVuY3Rpb24geGEoZSx0KXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLGk9KHJbcGErIkRlbGF5Il18fCIiKS5zcGxpdCgiLCAiKSxhPShyW3BhKyJEdXJhdGlvbiJdfHwiIikuc3BsaXQoIiwgIiksbz1rYShpLGEpLHM9KHJbaGErIkRlbGF5Il18fCIiKS5zcGxpdCgiLCAiKSxjPShyW2hhKyJEdXJhdGlvbiJdfHwiIikuc3BsaXQoIiwgIiksbD1rYShzLGMpLHU9MCxkPTA7dD09PXVhP28+MCYmKG49dWEsdT1vLGQ9YS5sZW5ndGgpOnQ9PT1kYT9sPjAmJihuPWRhLHU9bCxkPWMubGVuZ3RoKToodT1NYXRoLm1heChvLGwpLG49dT4wP28+bD91YTpkYTpudWxsLGQ9bj9uPT09dWE/YS5sZW5ndGg6Yy5sZW5ndGg6MCk7dmFyIHA9bj09PXVhJiZ3YS50ZXN0KHJbcGErIlByb3BlcnR5Il0pO3JldHVybnt0eXBlOm4sdGltZW91dDp1LHByb3BDb3VudDpkLGhhc1RyYW5zZm9ybTpwfX1mdW5jdGlvbiBrYShlLHQpe3doaWxlKGUubGVuZ3RoPHQubGVuZ3RoKWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsdC5tYXAoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIENhKHQpK0NhKGVbbl0pfSkpKX1mdW5jdGlvbiBDYShlKXtyZXR1cm4gMWUzKk51bWJlcihlLnNsaWNlKDAsLTEpLnJlcGxhY2UoIiwiLCIuIikpfWZ1bmN0aW9uIFNhKGUsdCl7dmFyIG49ZS5lbG07aShuLl9sZWF2ZUNiKSYmKG4uX2xlYXZlQ2IuY2FuY2VsbGVkPSEwLG4uX2xlYXZlQ2IoKSk7dmFyIGE9c2EoZS5kYXRhLnRyYW5zaXRpb24pO2lmKCFyKGEpJiYhaShuLl9lbnRlckNiKSYmMT09PW4ubm9kZVR5cGUpe3ZhciBvPWEuY3NzLHM9YS50eXBlLGw9YS5lbnRlckNsYXNzLHU9YS5lbnRlclRvQ2xhc3MsZD1hLmVudGVyQWN0aXZlQ2xhc3MscD1hLmFwcGVhckNsYXNzLGY9YS5hcHBlYXJUb0NsYXNzLG09YS5hcHBlYXJBY3RpdmVDbGFzcyxfPWEuYmVmb3JlRW50ZXIsZz1hLmVudGVyLHY9YS5hZnRlckVudGVyLHk9YS5lbnRlckNhbmNlbGxlZCxiPWEuYmVmb3JlQXBwZWFyLHc9YS5hcHBlYXIseD1hLmFmdGVyQXBwZWFyLGs9YS5hcHBlYXJDYW5jZWxsZWQsQz1hLmR1cmF0aW9uLFM9UnQsUD1SdC4kdm5vZGU7d2hpbGUoUCYmUC5wYXJlbnQpUD1QLnBhcmVudCxTPVAuY29udGV4dDt2YXIgTT0hUy5faXNNb3VudGVkfHwhZS5pc1Jvb3RJbnNlcnQ7aWYoIU18fHd8fCIiPT09dyl7dmFyIEE9TSYmcD9wOmwsTz1NJiZtP206ZCxEPU0mJmY/Zjp1LFQ9TSYmYnx8XyxJPU0mJiJmdW5jdGlvbiI9PT10eXBlb2Ygdz93Omcsaj1NJiZ4fHx2LEY9TSYma3x8eSx6PWgoYyhDKT9DLmVudGVyOkMpOzA7dmFyIEw9ITEhPT1vJiYhUSxOPUFhKEkpLFI9bi5fZW50ZXJDYj1FKChmdW5jdGlvbigpe0wmJih5YShuLEQpLHlhKG4sTykpLFIuY2FuY2VsbGVkPyhMJiZ5YShuLEEpLEYmJkYobikpOmomJmoobiksbi5fZW50ZXJDYj1udWxsfSkpO2UuZGF0YS5zaG93fHx2dChlLCJpbnNlcnQiLChmdW5jdGlvbigpe3ZhciB0PW4ucGFyZW50Tm9kZSxyPXQmJnQuX3BlbmRpbmcmJnQuX3BlbmRpbmdbZS5rZXldO3ImJnIudGFnPT09ZS50YWcmJnIuZWxtLl9sZWF2ZUNiJiZyLmVsbS5fbGVhdmVDYigpLEkmJkkobixSKX0pKSxUJiZUKG4pLEwmJih2YShuLEEpLHZhKG4sTyksZ2EoKGZ1bmN0aW9uKCl7eWEobixBKSxSLmNhbmNlbGxlZHx8KHZhKG4sRCksTnx8KE1hKHopP3NldFRpbWVvdXQoUix6KTpiYShuLHMsUikpKX0pKSksZS5kYXRhLnNob3cmJih0JiZ0KCksSSYmSShuLFIpKSxMfHxOfHxSKCl9fX1mdW5jdGlvbiBQYShlLHQpe3ZhciBuPWUuZWxtO2kobi5fZW50ZXJDYikmJihuLl9lbnRlckNiLmNhbmNlbGxlZD0hMCxuLl9lbnRlckNiKCkpO3ZhciBhPXNhKGUuZGF0YS50cmFuc2l0aW9uKTtpZihyKGEpfHwxIT09bi5ub2RlVHlwZSlyZXR1cm4gdCgpO2lmKCFpKG4uX2xlYXZlQ2IpKXt2YXIgbz1hLmNzcyxzPWEudHlwZSxsPWEubGVhdmVDbGFzcyx1PWEubGVhdmVUb0NsYXNzLGQ9YS5sZWF2ZUFjdGl2ZUNsYXNzLHA9YS5iZWZvcmVMZWF2ZSxmPWEubGVhdmUsbT1hLmFmdGVyTGVhdmUsXz1hLmxlYXZlQ2FuY2VsbGVkLGc9YS5kZWxheUxlYXZlLHY9YS5kdXJhdGlvbix5PSExIT09byYmIVEsYj1BYShmKSx3PWgoYyh2KT92LmxlYXZlOnYpOzA7dmFyIHg9bi5fbGVhdmVDYj1FKChmdW5jdGlvbigpe24ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLl9wZW5kaW5nJiYobi5wYXJlbnROb2RlLl9wZW5kaW5nW2Uua2V5XT1udWxsKSx5JiYoeWEobix1KSx5YShuLGQpKSx4LmNhbmNlbGxlZD8oeSYmeWEobixsKSxfJiZfKG4pKToodCgpLG0mJm0obikpLG4uX2xlYXZlQ2I9bnVsbH0pKTtnP2coayk6aygpfWZ1bmN0aW9uIGsoKXt4LmNhbmNlbGxlZHx8KCFlLmRhdGEuc2hvdyYmbi5wYXJlbnROb2RlJiYoKG4ucGFyZW50Tm9kZS5fcGVuZGluZ3x8KG4ucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1lKSxwJiZwKG4pLHkmJih2YShuLGwpLHZhKG4sZCksZ2EoKGZ1bmN0aW9uKCl7eWEobixsKSx4LmNhbmNlbGxlZHx8KHZhKG4sdSksYnx8KE1hKHcpP3NldFRpbWVvdXQoeCx3KTpiYShuLHMseCkpKX0pKSksZiYmZihuLHgpLHl8fGJ8fHgoKSl9fWZ1bmN0aW9uIE1hKGUpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBBYShlKXtpZihyKGUpKXJldHVybiExO3ZhciB0PWUuZm5zO3JldHVybiBpKHQpP0FhKEFycmF5LmlzQXJyYXkodCk/dFswXTp0KTooZS5fbGVuZ3RofHxlLmxlbmd0aCk+MX1mdW5jdGlvbiBPYShlLHQpeyEwIT09dC5kYXRhLnNob3cmJlNhKHQpfXZhciBEYT1LP3tjcmVhdGU6T2EsYWN0aXZhdGU6T2EscmVtb3ZlOmZ1bmN0aW9uKGUsdCl7ITAhPT1lLmRhdGEuc2hvdz9QYShlLHQpOnQoKX19Ont9LFRhPVtPaSxJaSxWaSxVaSxyYSxEYV0sSWE9VGEuY29uY2F0KFNpKSxqYT1naSh7bm9kZU9wczpsaSxtb2R1bGVzOklhfSk7USYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIiwoZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2UmJmUudm1vZGVsJiZCYShlLCJpbnB1dCIpfSkpO3ZhciBGYT17aW5zZXJ0ZWQ6ZnVuY3Rpb24oZSx0LG4scil7InNlbGVjdCI9PT1uLnRhZz8oci5lbG0mJiFyLmVsbS5fdk9wdGlvbnM/dnQobiwicG9zdHBhdGNoIiwoZnVuY3Rpb24oKXtGYS5jb21wb25lbnRVcGRhdGVkKGUsdCxuKX0pKTp6YShlLHQsbi5jb250ZXh0KSxlLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsTmEpKTooInRleHRhcmVhIj09PW4udGFnfHxKcihlLnR5cGUpKSYmKGUuX3ZNb2RpZmllcnM9dC5tb2RpZmllcnMsdC5tb2RpZmllcnMubGF6eXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsUmEpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLFZhKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsVmEpLFEmJihlLnZtb2RlbD0hMCkpKX0sY29tcG9uZW50VXBkYXRlZDpmdW5jdGlvbihlLHQsbil7aWYoInNlbGVjdCI9PT1uLnRhZyl7emEoZSx0LG4uY29udGV4dCk7dmFyIHI9ZS5fdk9wdGlvbnMsaT1lLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsTmEpO2lmKGkuc29tZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4heihlLHJbdF0pfSkpKXt2YXIgYT1lLm11bHRpcGxlP3QudmFsdWUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIEVhKGUsaSl9KSk6dC52YWx1ZSE9PXQub2xkVmFsdWUmJkVhKHQudmFsdWUsaSk7YSYmQmEoZSwiY2hhbmdlIil9fX19O2Z1bmN0aW9uIHphKGUsdCxuKXtMYShlLHQsbiksKFp8fGVlKSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtMYShlLHQsbil9KSwwKX1mdW5jdGlvbiBMYShlLHQsbil7dmFyIHI9dC52YWx1ZSxpPWUubXVsdGlwbGU7aWYoIWl8fEFycmF5LmlzQXJyYXkocikpe2Zvcih2YXIgYSxvLHM9MCxjPWUub3B0aW9ucy5sZW5ndGg7czxjO3MrKylpZihvPWUub3B0aW9uc1tzXSxpKWE9TChyLE5hKG8pKT4tMSxvLnNlbGVjdGVkIT09YSYmKG8uc2VsZWN0ZWQ9YSk7ZWxzZSBpZih6KE5hKG8pLHIpKXJldHVybiB2b2lkKGUuc2VsZWN0ZWRJbmRleCE9PXMmJihlLnNlbGVjdGVkSW5kZXg9cykpO2l8fChlLnNlbGVjdGVkSW5kZXg9LTEpfX1mdW5jdGlvbiBFYShlLHQpe3JldHVybiB0LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4heih0LGUpfSkpfWZ1bmN0aW9uIE5hKGUpe3JldHVybiJfdmFsdWUiaW4gZT9lLl92YWx1ZTplLnZhbHVlfWZ1bmN0aW9uIFJhKGUpe2UudGFyZ2V0LmNvbXBvc2luZz0hMH1mdW5jdGlvbiBWYShlKXtlLnRhcmdldC5jb21wb3NpbmcmJihlLnRhcmdldC5jb21wb3Npbmc9ITEsQmEoZS50YXJnZXQsImlucHV0IikpfWZ1bmN0aW9uIEJhKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTtuLmluaXRFdmVudCh0LCEwLCEwKSxlLmRpc3BhdGNoRXZlbnQobil9ZnVuY3Rpb24gJGEoZSl7cmV0dXJuIWUuY29tcG9uZW50SW5zdGFuY2V8fGUuZGF0YSYmZS5kYXRhLnRyYW5zaXRpb24/ZTokYShlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSl9dmFyIFdhPXtiaW5kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlO249JGEobik7dmFyIGk9bi5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbixhPWUuX192T3JpZ2luYWxEaXNwbGF5PSJub25lIj09PWUuc3R5bGUuZGlzcGxheT8iIjplLnN0eWxlLmRpc3BsYXk7ciYmaT8obi5kYXRhLnNob3c9ITAsU2EobiwoZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9YX0pKSk6ZS5zdHlsZS5kaXNwbGF5PXI/YToibm9uZSJ9LHVwZGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPXQub2xkVmFsdWU7aWYoIXIhPT0haSl7bj0kYShuKTt2YXIgYT1uLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uO2E/KG4uZGF0YS5zaG93PSEwLHI/U2EobiwoZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXl9KSk6UGEobiwoZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9Im5vbmUifSkpKTplLnN0eWxlLmRpc3BsYXk9cj9lLl9fdk9yaWdpbmFsRGlzcGxheToibm9uZSJ9fSx1bmJpbmQ6ZnVuY3Rpb24oZSx0LG4scixpKXtpfHwoZS5zdHlsZS5kaXNwbGF5PWUuX192T3JpZ2luYWxEaXNwbGF5KX19LEhhPXttb2RlbDpGYSxzaG93OldhfSxVYT17bmFtZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4sY3NzOkJvb2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpTdHJpbmcsZW50ZXJDbGFzczpTdHJpbmcsbGVhdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmluZyxsZWF2ZVRvQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhckNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyVG9DbGFzczpTdHJpbmcsZHVyYXRpb246W051bWJlcixTdHJpbmcsT2JqZWN0XX07ZnVuY3Rpb24gR2EoZSl7dmFyIHQ9ZSYmZS5jb21wb25lbnRPcHRpb25zO3JldHVybiB0JiZ0LkN0b3Iub3B0aW9ucy5hYnN0cmFjdD9HYShPdCh0LmNoaWxkcmVuKSk6ZX1mdW5jdGlvbiBxYShlKXt2YXIgdD17fSxuPWUuJG9wdGlvbnM7Zm9yKHZhciByIGluIG4ucHJvcHNEYXRhKXRbcl09ZVtyXTt2YXIgaT1uLl9wYXJlbnRMaXN0ZW5lcnM7Zm9yKHZhciBhIGluIGkpdFt4KGEpXT1pW2FdO3JldHVybiB0fWZ1bmN0aW9uIEthKGUsdCl7aWYoL1xkLWtlZXAtYWxpdmUkLy50ZXN0KHQudGFnKSlyZXR1cm4gZSgia2VlcC1hbGl2ZSIse3Byb3BzOnQuY29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGF9KX1mdW5jdGlvbiBKYShlKXt3aGlsZShlPWUucGFyZW50KWlmKGUuZGF0YS50cmFuc2l0aW9uKXJldHVybiEwfWZ1bmN0aW9uIFlhKGUsdCl7cmV0dXJuIHQua2V5PT09ZS5rZXkmJnQudGFnPT09ZS50YWd9dmFyIFhhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ3x8QXQoZSl9LFphPWZ1bmN0aW9uKGUpe3JldHVybiJzaG93Ij09PWUubmFtZX0sUWE9e25hbWU6InRyYW5zaXRpb24iLHByb3BzOlVhLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy4kc2xvdHMuZGVmYXVsdDtpZihuJiYobj1uLmZpbHRlcihYYSksbi5sZW5ndGgpKXswO3ZhciByPXRoaXMubW9kZTswO3ZhciBpPW5bMF07aWYoSmEodGhpcy4kdm5vZGUpKXJldHVybiBpO3ZhciBhPUdhKGkpO2lmKCFhKXJldHVybiBpO2lmKHRoaXMuX2xlYXZpbmcpcmV0dXJuIEthKGUsaSk7dmFyIG89Il9fdHJhbnNpdGlvbi0iK3RoaXMuX3VpZCsiLSI7YS5rZXk9bnVsbD09YS5rZXk/YS5pc0NvbW1lbnQ/bysiY29tbWVudCI6bythLnRhZzpzKGEua2V5KT8wPT09U3RyaW5nKGEua2V5KS5pbmRleE9mKG8pP2Eua2V5Om8rYS5rZXk6YS5rZXk7dmFyIGM9KGEuZGF0YXx8KGEuZGF0YT17fSkpLnRyYW5zaXRpb249cWEodGhpcyksbD10aGlzLl92bm9kZSx1PUdhKGwpO2lmKGEuZGF0YS5kaXJlY3RpdmVzJiZhLmRhdGEuZGlyZWN0aXZlcy5zb21lKFphKSYmKGEuZGF0YS5zaG93PSEwKSx1JiZ1LmRhdGEmJiFZYShhLHUpJiYhQXQodSkmJighdS5jb21wb25lbnRJbnN0YW5jZXx8IXUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLmlzQ29tbWVudCkpe3ZhciBkPXUuZGF0YS50cmFuc2l0aW9uPUQoe30sYyk7aWYoIm91dC1pbiI9PT1yKXJldHVybiB0aGlzLl9sZWF2aW5nPSEwLHZ0KGQsImFmdGVyTGVhdmUiLChmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0pKSxLYShlLGkpO2lmKCJpbi1vdXQiPT09cil7aWYoQXQoYSkpcmV0dXJuIGw7dmFyIHAsZj1mdW5jdGlvbigpe3AoKX07dnQoYywiYWZ0ZXJFbnRlciIsZiksdnQoYywiZW50ZXJDYW5jZWxsZWQiLGYpLHZ0KGQsImRlbGF5TGVhdmUiLChmdW5jdGlvbihlKXtwPWV9KSl9fXJldHVybiBpfX19LGVvPUQoe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sVWEpO2RlbGV0ZSBlby5tb2RlO3ZhciB0bz17cHJvcHM6ZW8sYmVmb3JlTW91bnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5fdXBkYXRlO3RoaXMuX3VwZGF0ZT1mdW5jdGlvbihuLHIpe3ZhciBpPVZ0KGUpO2UuX19wYXRjaF9fKGUuX3Zub2RlLGUua2VwdCwhMSwhMCksZS5fdm5vZGU9ZS5rZXB0LGkoKSx0LmNhbGwoZSxuLHIpfX0scmVuZGVyOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRhZ3x8dGhpcy4kdm5vZGUuZGF0YS50YWd8fCJzcGFuIixuPU9iamVjdC5jcmVhdGUobnVsbCkscj10aGlzLnByZXZDaGlsZHJlbj10aGlzLmNoaWxkcmVuLGk9dGhpcy4kc2xvdHMuZGVmYXVsdHx8W10sYT10aGlzLmNoaWxkcmVuPVtdLG89cWEodGhpcykscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYz1pW3NdO2lmKGMudGFnKWlmKG51bGwhPWMua2V5JiYwIT09U3RyaW5nKGMua2V5KS5pbmRleE9mKCJfX3ZsaXN0IikpYS5wdXNoKGMpLG5bYy5rZXldPWMsKGMuZGF0YXx8KGMuZGF0YT17fSkpLnRyYW5zaXRpb249bztlbHNlO31pZihyKXtmb3IodmFyIGw9W10sdT1bXSxkPTA7ZDxyLmxlbmd0aDtkKyspe3ZhciBwPXJbZF07cC5kYXRhLnRyYW5zaXRpb249byxwLmRhdGEucG9zPXAuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG5bcC5rZXldP2wucHVzaChwKTp1LnB1c2gocCl9dGhpcy5rZXB0PWUodCxudWxsLGwpLHRoaXMucmVtb3ZlZD11fXJldHVybiBlKHQsbnVsbCxhKX0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJldkNoaWxkcmVuLHQ9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtlLmxlbmd0aCYmdGhpcy5oYXNNb3ZlKGVbMF0uZWxtLHQpJiYoZS5mb3JFYWNoKG5vKSxlLmZvckVhY2gocm8pLGUuZm9yRWFjaChpbyksdGhpcy5fcmVmbG93PWRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoZS5kYXRhLm1vdmVkKXt2YXIgbj1lLmVsbSxyPW4uc3R5bGU7dmEobix0KSxyLnRyYW5zZm9ybT1yLldlYmtpdFRyYW5zZm9ybT1yLnRyYW5zaXRpb25EdXJhdGlvbj0iIixuLmFkZEV2ZW50TGlzdGVuZXIoZmEsbi5fbW92ZUNiPWZ1bmN0aW9uIGUocil7ciYmci50YXJnZXQhPT1ufHxyJiYhL3RyYW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKGZhLGUpLG4uX21vdmVDYj1udWxsLHlhKG4sdCkpfSl9fSkpKX0sbWV0aG9kczp7aGFzTW92ZTpmdW5jdGlvbihlLHQpe2lmKCFsYSlyZXR1cm4hMTtpZih0aGlzLl9oYXNNb3ZlKXJldHVybiB0aGlzLl9oYXNNb3ZlO3ZhciBuPWUuY2xvbmVOb2RlKCk7ZS5fdHJhbnNpdGlvbkNsYXNzZXMmJmUuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goKGZ1bmN0aW9uKGUpe29hKG4sZSl9KSksYWEobix0KSxuLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFwcGVuZENoaWxkKG4pO3ZhciByPXhhKG4pO3JldHVybiB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0aGlzLl9oYXNNb3ZlPXIuaGFzVHJhbnNmb3JtfX19O2Z1bmN0aW9uIG5vKGUpe2UuZWxtLl9tb3ZlQ2ImJmUuZWxtLl9tb3ZlQ2IoKSxlLmVsbS5fZW50ZXJDYiYmZS5lbG0uX2VudGVyQ2IoKX1mdW5jdGlvbiBybyhlKXtlLmRhdGEubmV3UG9zPWUuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIGlvKGUpe3ZhciB0PWUuZGF0YS5wb3Msbj1lLmRhdGEubmV3UG9zLHI9dC5sZWZ0LW4ubGVmdCxpPXQudG9wLW4udG9wO2lmKHJ8fGkpe2UuZGF0YS5tb3ZlZD0hMDt2YXIgYT1lLmVsbS5zdHlsZTthLnRyYW5zZm9ybT1hLldlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrcisicHgsIitpKyJweCkiLGEudHJhbnNpdGlvbkR1cmF0aW9uPSIwcyJ9fXZhciBhbz17VHJhbnNpdGlvbjpRYSxUcmFuc2l0aW9uR3JvdXA6dG99O2RyLmNvbmZpZy5tdXN0VXNlUHJvcD1Bcixkci5jb25maWcuaXNSZXNlcnZlZFRhZz1Vcixkci5jb25maWcuaXNSZXNlcnZlZEF0dHI9UHIsZHIuY29uZmlnLmdldFRhZ05hbWVzcGFjZT1Hcixkci5jb25maWcuaXNVbmtub3duRWxlbWVudD1LcixEKGRyLm9wdGlvbnMuZGlyZWN0aXZlcyxIYSksRChkci5vcHRpb25zLmNvbXBvbmVudHMsYW8pLGRyLnByb3RvdHlwZS5fX3BhdGNoX189Sz9qYTpJLGRyLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1lJiZLP1lyKGUpOnZvaWQgMCxXdCh0aGlzLGUsdCl9LEsmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7Qi5kZXZ0b29scyYmb2UmJm9lLmVtaXQoImluaXQiLGRyKX0pLDApLHRbImEiXT1kcn0pLmNhbGwodGhpcyxuKCJjOGJhIikpfSwiMmI0YyI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjU1MzciKSgid2tzIiksaT1uKCJjYTVhIiksYT1uKCI3NzI2IikuU3ltYm9sLG89ImZ1bmN0aW9uIj09dHlwZW9mIGEscz1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHJbZV18fChyW2VdPW8mJmFbZV18fChvP2E6aSkoIlN5bWJvbC4iK2UpKX07cy5zdG9yZT1yfSwiMmQwMCI6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ITF9LCIyZDk1IjpmdW5jdGlvbihlLHQpe3ZhciBuPXt9LnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbi5jYWxsKGUpLnNsaWNlKDgsLTEpfX0sIjJmMDgiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVudCxuPWUuX3NlbGYuX2N8fHQ7cmV0dXJuIG4oImRpdiIse3N0YXRpY0NsYXNzOiJjZy1jb250YWluZXIgY2ctZmxleCBjZy1mbGV4LWNvbHVtbiBjZy1yZWxhdGl2ZSIsY2xhc3M6ZS5jb250YWluZXJDbGFzcyxzdHlsZTpbZS5jb250YWluZXJTdHlsZSxlLmJhY2tncm91bmRDb2xvclN0eWxlXSxhdHRyczp7ImRhdGEtbG9hZGluZyI6ZS5sb2FkaW5nfX0sW2UubG9hZGluZz9uKCJkaXYiLHtzdGF0aWNDbGFzczoiY2ctcC0zIGNnLWJhc2UiLHN0eWxlOmUuYmFja2dyb3VuZENvbG9yU3R5bGV9LFtlLl92KCJMb2FkaW5nIHdpZGdldC4uLiIpXSk6ZS5fZSgpLGUuZXJyb3JNZXNzYWdlLmxlbmd0aD4wP24oImRpdiIse3N0YXRpY0NsYXNzOiJjZy1wLTMgY2ctYmFzZSIsc3R5bGU6ZS5iYWNrZ3JvdW5kQ29sb3JTdHlsZX0sW2UuX3YoIlxuICAgICIrZS5fcyhlLmVycm9yTWVzc2FnZSkrIlxuICAiKV0pOmUuX2UoKSxlLmlzTG9hZGluZz9lLl9lKCk6bigiZGl2Iix7c3RhdGljQ2xhc3M6ImNnLXdpZGdldC1jb250YWluZXIifSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6ImNnLXdpZGdldCBjZy1weS0zIGNnLXB4LTEiLHN0eWxlOltlLmhlYWRlclN0eWxlLGUuYmFja2dyb3VuZENvbG9yU3R5bGVdfSxbbigiYSIse3N0YXRpY0NsYXNzOiJjZy1sZWZ0LXBhbmVsIixhdHRyczp7aHJlZjplLmxpbmtUb1ByaWNlQ2hhcnQoImNvaW5zIiksdGFyZ2V0OiJfYmxhbmsifX0sW24oImltZyIse3N0YXRpY0NsYXNzOiJjZy1teS0xIixhdHRyczp7c3JjOmUuYXBpQ29pbkRhdGEuaW1hZ2Uuc21hbGx9fSksbigiZGl2Iix7c3RhdGljQ2xhc3M6ImNnLXB4LTIgY2ctZmxleCBjZy1mbGV4LWNvbHVtbiBjZy1pdGVtcy1jZW50ZXIifSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6ImNnLWJvbGQgY2ctbWVkaXVtIn0sW2UuX3YoIlxuICAgICAgICAgICAgIitlLl9zKGUuYXBpQ29pbkRhdGEubG9jYWxpemF0aW9uW2UubG9jYWxlXXx8ZS5hcGlDb2luRGF0YS5uYW1lKSsiXG4gICAgICAgICAgIildKSxuKCJkaXYiLHtzdGF0aWNDbGFzczoiY2ctYmFzZSBjZy10aWNrZXIifSxbZS5fdigiXG4gICAgICAgICAgICAiK2UuX3MoZS5hcGlDb2luRGF0YS5zeW1ib2wudG9VcHBlckNhc2UoKSkrIiAvICIrZS5fcyhlLmN1cnJlbmN5Q29kZS50b1VwcGVyQ2FzZSgpKSsiXG4gICAgICAgICAgIildKV0pXSksbigiZGl2Iix7c3RhdGljQ2xhc3M6ImNnLXJpZ2h0LXBhbmVsIGNnLW15LTEifSxbbigiZGl2IixbbigiZGl2Iix7c3RhdGljQ2xhc3M6ImNnLWJvbGQgY2ctbGcgY2ctbm93cmFwIixjbGFzczplLnByaWNpbmdIaWdobGlnaHRDbGFzc30sW2UuX3YoIlxuICAgICAgICAgICAgIitlLl9zKGUuZm9ybWF0Q3VycmVuY3koZS5hcGlDb2luRGF0YS5tYXJrZXRfZGF0YS5jdXJyZW50X3ByaWNlW2UuY3VycmVuY3lDb2RlXSkpKyJcbiAgICAgICAgICAiKV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJjZy1tYi0xIGNnLWJhc2UgY2ctY2VudGVyIixjbGFzczplLnBlcmNlbnRhZ2VDbGFzc30sW2UuX3YoIlxuICAgICAgICAgICAgKCIrZS5fcyhlLmZvcm1hdFBlcmNlbnRhZ2UoZS5hcGlDb2luRGF0YS5tYXJrZXRfZGF0YS5wcmljZV9jaGFuZ2VfcGVyY2VudGFnZV8yNGhfaW5fY3VycmVuY3lbZS5jdXJyZW5jeUNvZGVdKSkrIilcbiAgICAgICAgICAiKV0pXSksbigiZGl2Iix7c3RhdGljQ2xhc3M6ImNnLXNtLWhpZGUifSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6ImNnLWNlbnRlciJ9LFtlLl92KCJcbiAgICAgICAgICAgICIrZS5fcyhlLnBvbHlnbG90LnQoImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0LjI0aF9oaWdoIikpKyI6XG4gICAgICAgICAgICAiK2UuX3MoZS5mb3JtYXRDdXJyZW5jeShlLmFwaUNvaW5EYXRhLm1hcmtldF9kYXRhLmhpZ2hfMjRoW2UuY3VycmVuY3lDb2RlXSkpKyJcbiAgICAgICAgICAiKV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJjZy1jZW50ZXIifSxbZS5fdigiXG4gICAgICAgICAgICAiK2UuX3MoZS5wb2x5Z2xvdC50KCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldC4yNGhfbG93IikpKyI6XG4gICAgICAgICAgICAiK2UuX3MoZS5mb3JtYXRDdXJyZW5jeShlLmFwaUNvaW5EYXRhLm1hcmtldF9kYXRhLmxvd18yNGhbZS5jdXJyZW5jeUNvZGVdKSkrIlxuICAgICAgICAgICIpXSldKSxuKCJkaXYiLHtzdGF0aWNDbGFzczoiY2ctYm9sZCBjZy14cyBjZy1zZWxmLWVuZCBjZy1wLTEgY2ctcG93ZXJlZCIsZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKGUucG93ZXJlZEJ5Q29pbkdlY2tvKX19KV0pXSldKSxlLmlzTG9hZGluZz9lLl9lKCk6bigiY2FudmFzIix7cmVmOiJjaGFydCIsc3R5bGU6ZS5jYW52YXNTdHlsZX0pLGUuaXNMb2FkaW5nP2UuX2UoKTpuKCJhIix7c3RhdGljQ2xhc3M6ImNnLWJsb2NrIGNnLXAtMiBjZy1wcmljZS1jaGFydC1saW5rIGNnLWFic29sdXRlIGNnLW5vd3JhcCIsYXR0cnM6e2hyZWY6ZS5saW5rVG9QcmljZUNoYXJ0KCJwcmljZV9jaGFydHMiKSx0YXJnZXQ6Il9ibGFuayJ9fSxbZS5fdihlLl9zKGUudmlld1ByaWNlQ2hhcnQpKV0pXSl9LGk9W10sYT0obigiNDkxNyIpLG4oIjdmN2YiKSxuKCJhNzQ1IikpLG89bi5uKGEpO2Z1bmN0aW9uIHMoZSl7aWYobygpKGUpKXJldHVybiBlfXZhciBjPW4oIjVkNzMiKSxsPW4ubihjKSx1PW4oImM4YmIiKSxkPW4ubih1KTtmdW5jdGlvbiBwKGUsdCl7aWYoZCgpKE9iamVjdChlKSl8fCJbb2JqZWN0IEFyZ3VtZW50c10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXt2YXIgbj1bXSxyPSEwLGk9ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgbyxzPWwoKShlKTshKHI9KG89cy5uZXh0KCkpLmRvbmUpO3I9ITApaWYobi5wdXNoKG8udmFsdWUpLHQmJm4ubGVuZ3RoPT09dClicmVha31jYXRjaChjKXtpPSEwLGE9Y31maW5hbGx5e3RyeXtyfHxudWxsPT1zWyJyZXR1cm4iXXx8c1sicmV0dXJuIl0oKX1maW5hbGx5e2lmKGkpdGhyb3cgYX19cmV0dXJuIG59fWZ1bmN0aW9uIGYoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9ZnVuY3Rpb24gaChlLHQpe3JldHVybiBzKGUpfHxwKGUsdCl8fGYoKX1uKCJhYzZhIiksbigiNWRmMyIpLG4oIjVkZjIiKSxuKCJjNWY2Iik7dmFyIG09bigiMzBlZiIpLF89bigiZThiYSIpLGc9bigiZDUyNSIpLHY9bigiMWY2OSIpLHk9bigiYzFlMiIpLGI9bigiNTExOCIpLHc9bigiYzY0OSIpLHg9bigiMmY2ZCIpLGs9IiM0Yjg4MDAiLEM9IiM4ZGM2NDciLFM9IiNmMzRiMzUiLFA9IiNhMTFiMGEiLE09MTI1LEE9MzAwLE89e25hbWU6IkNvaW5nZWNrb0NvaW5QcmljZUNoYXJ0V2lkZ2V0IixtaXhpbnM6W09iamVjdCh2WyJhIl0pKEEpLE9iamVjdCh5WyJhIl0pKCkseFsiYSJdXSxwcm9wczp7YmFja2dyb3VuZENvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjZmZmZmZmIn0sY29pbklkOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJiaXRjb2luIn0sY3VycmVuY3k6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InVzZCJ9LGxvY2FsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiZW4ifSx3aWR0aDp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MzAwfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntsb2FkaW5nOiEwLGFwaUNvaW5EYXRhOm51bGwsYXBpQ29pbkNoYXJ0RGF0YTp7fSxwcmljaW5nSGlnaGxpZ2h0Q2xhc3M6bnVsbCxlcnJvck1lc3NhZ2U6IiIsY2hhcnQ6bnVsbH19LG1ldGhvZHM6e2Zvcm1hdEN1cnJlbmN5OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QoX1siZm9ybWF0Q3VycmVuY3kiXSkoZSx0aGlzLmN1cnJlbmN5Q29kZSx0aGlzLmxvY2FsZSl9LGZvcm1hdFBlcmNlbnRhZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9TnVtYmVyLnBhcnNlRmxvYXQoZSk7cmV0dXJuIiIuY29uY2F0KHQudG9GaXhlZCgyKSwiJSIpfSxmZXRjaENvaW5EYXRhOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmxvYWRpbmc9ITAsdGhpcy5lcnJvck1lc3NhZ2U9IiIsdGhpcy5hcGlDb2luRGF0YT1udWxsLHRoaXMuYXBpQ29pbkNoYXJ0RGF0YT17fSx0aGlzLmNoYXJ0PW51bGw7dmFyIHQ9ZmV0Y2goImh0dHBzOi8vYXBpLmNvaW5nZWNrby5jb20vYXBpL3YzL2NvaW5zLyIuY29uY2F0KHRoaXMuY29pbklkLnRvTG93ZXJDYXNlKCksIj9kZXZlbG9wZXJfZGF0YT1mYWxzZSZjb21tdW5pdHlfZGF0YT1mYWxzZSZ0aWNrZXJzPWZhbHNlIikpLG49ZmV0Y2goImh0dHBzOi8vYXBpLmNvaW5nZWNrby5jb20vYXBpL3YzL2NvaW5zLyIuY29uY2F0KHRoaXMuY29pbklkLnRvTG93ZXJDYXNlKCksIi9tYXJrZXRfY2hhcnQ/dnNfY3VycmVuY3k9IikuY29uY2F0KHRoaXMuY3VycmVuY3lDb2RlLCImZGF5cz0xIikpO1Byb21pc2UuYWxsKFt0LG5dKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmpzb24oKX0pKSl9KSkudGhlbigoZnVuY3Rpb24odCl7dmFyIG49aCh0LDIpLHI9blswXSxpPW5bMV07ZS5hcGlDb2luRGF0YT1yLGUuYXBpQ29pbkNoYXJ0RGF0YT1pLGUubG9hZGluZz0hMSxlLmRyYXdDaGFydCgpfSkpLmNhdGNoKChmdW5jdGlvbigpe2UuZXJyb3JNZXNzYWdlPSJFcnJvciBvbiBjb25uZWN0aW5nIHRvIENvaW5HZWNrbyBBUEkiLGUubG9hZGluZz0hMX0pKX0sbGlzdGVuRm9yUHJpY2VDaGFuZ2VzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmNvaW5EYXRhTGlzdGVuZXImJnRoaXMuY29pbkRhdGFMaXN0ZW5lci51bnN1YnNjcmliZSgpLHRoaXMuY29pbkRhdGFMaXN0ZW5lcj1PYmplY3QoZ1siYSJdKShbdGhpcy5jb2luSWRdLChmdW5jdGlvbih0KXt2YXIgbj1lLmFwaUNvaW5EYXRhLm1hcmtldF9kYXRhLmN1cnJlbnRfcHJpY2Uscj10LnAsaT1uW2UuY3VycmVuY3lDb2RlXSxhPXJbZS5jdXJyZW5jeUNvZGVdO2UuZm9ybWF0Q3VycmVuY3koaSkhPT1lLmZvcm1hdEN1cnJlbmN5KGEpJiYocGFyc2VGbG9hdChpKTw9cGFyc2VGbG9hdChhKT9lLmhpZ2hsaWdodFByaWNpbmcoImNnLXByaW1hcnktY29sb3IiKTplLmhpZ2hsaWdodFByaWNpbmcoImNnLXJlZC1jb2xvciIpKSxlLmFwaUNvaW5EYXRhLm1hcmtldF9kYXRhLmN1cnJlbnRfcHJpY2U9cixlLmFwaUNvaW5EYXRhLm1hcmtldF9kYXRhLnByaWNlX2NoYW5nZV9wZXJjZW50YWdlXzI0aF9pbl9jdXJyZW5jeT10LmV9KSl9LGhpZ2hsaWdodFByaWNpbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLnByaWNpbmdIaWdobGlnaHRDbGFzcz1lLE9iamVjdChiWyJzZXRUaW1lb3V0Il0pKChmdW5jdGlvbigpe3QucHJpY2luZ0hpZ2hsaWdodENsYXNzPW51bGx9KSwxZTMpfSxsaW5rVG9QcmljZUNoYXJ0OmZ1bmN0aW9uKGUpe3JldHVybiJodHRwczovL3d3dy5jb2luZ2Vja28uY29tL3Jlc291cmNlX3JlZGlyZWN0P2xvY2FsZT0iLmNvbmNhdCh0aGlzLmxvY2FsZSwiJnJvdXRlPSIpLmNvbmNhdChlLCIvIikuY29uY2F0KHRoaXMuYXBpQ29pbkRhdGEuaWQsIi8iKS5jb25jYXQodGhpcy5jdXJyZW5jeUNvZGUsIiYiKS5jb25jYXQodGhpcy51dG1QYXJhbXMpfSxkcmF3Q2hhcnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9W10sbj0wLHI9MCxpPTEvMCxhPS0xLzAsbz0wLHM9MDtpZih0aGlzLnByaWNlQ2hhcnREYXRhLmZvckVhY2goKGZ1bmN0aW9uKGMsbCl7MD09PWwmJihuPWNbMF0sbz1jWzFdKSxsPT09ZS5wcmljZUNoYXJ0RGF0YS5sZW5ndGgtMSYmKHI9Y1swXSxzPWNbMV0pLGwlOCE9PTAmJmwhPT1lLnByaWNlQ2hhcnREYXRhLmxlbmd0aC0xJiYwIT09bHx8KGNbMV08aSYmKGk9Y1sxXSksY1sxXT5hJiYoYT1jWzFdKSx0LnB1c2goe3g6Y1swXSx5OmNbMV19KSl9KSksdGhpcy5jaGFydClyZXR1cm4gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzWzBdLmRhdGE9dCx0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbMF0uYmFja2dyb3VuZENvbG9yPXM+PW8/QzpTLHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1swXS5ib3JkZXJDb2xvcj1zPj1vP2s6UCx0aGlzLmNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnhBeGVzWzBdLnRpY2tzLm1pbj1uLHRoaXMuY2hhcnQub3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0udGlja3MubWF4PXIsdGhpcy5jaGFydC5vcHRpb25zLnNjYWxlcy55QXhlc1swXS50aWNrcy5taW49Ljk5KmksdGhpcy5jaGFydC5vcHRpb25zLnNjYWxlcy55QXhlc1swXS50aWNrcy5tYXg9MS4wMSphLHRoaXMuY2hhcnQudXBkYXRlKCksdm9pZCB0aGlzLmNoYXJ0LnJlc2l6ZSgpO3ZhciBjPXt0eXBlOiJzY2F0dGVyIixkYXRhOntkYXRhc2V0czpbe2JhY2tncm91bmRDb2xvcjpzPj1vP0M6Uyxib3JkZXJDb2xvcjpzPj1vP2s6UCxwb2ludEJvcmRlcldpZHRoOjAscG9pbnRSYWRpdXM6MyxkYXRhOnQsc2hvd0xpbmU6ITAsZmlsbDohMH1dfSxvcHRpb25zOntyZXNwb25zaXZlOiEwLG1haW50YWluQXNwZWN0UmF0aW86ITEsdGl0bGU6e2Rpc3BsYXk6ITF9LGxlZ2VuZDp7ZGlzcGxheTohMX0sdG9vbHRpcHM6e2Rpc3BsYXlDb2xvcnM6ITEsY2FsbGJhY2tzOntsYWJlbDpmdW5jdGlvbih0KXt2YXIgbj1uZXcgRGF0ZSh0LnhMYWJlbCk7cmV0dXJuIiIuY29uY2F0KG4udG9Mb2NhbGVEYXRlU3RyaW5nKGUubG9jYWxlLHttb250aDoibG9uZyIsZGF5OiJudW1lcmljIix5ZWFyOiJudW1lcmljIn0pLCIgIikuY29uY2F0KG4udG9Mb2NhbGVUaW1lU3RyaW5nKCksIjogIikuY29uY2F0KGUuZm9ybWF0Q3VycmVuY3kodC55TGFiZWwpKX19fSxzY2FsZXM6e3hBeGVzOlt7ZGlzcGxheTohMSx0aWNrczp7bWF4OnIsbWluOm59fV0seUF4ZXM6W3tkaXNwbGF5OiExLHRpY2tzOnttYXg6MS4wMSphLG1pbjouOTkqaX19XX19fTt0aGlzLiRuZXh0VGljaygoZnVuY3Rpb24oKXt0aGlzLmNoYXJ0PW5ldyBtWyJDaGFydCJdKHRoaXMuJHJlZnMuY2hhcnQuZ2V0Q29udGV4dCgiMmQiKSxjKX0pKX19LGNvbXB1dGVkOnt2aWV3UHJpY2VDaGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvbHlnbG90LnQoImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0LnZpZXdfcHJpY2VfY2hhcnQiLHtjb2luOnRoaXMuYXBpQ29pbkRhdGEubmFtZX0pfSxpc0xvYWRpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2FkaW5nfHx0aGlzLmVycm9yTWVzc2FnZS5sZW5ndGg+MH0sY3VycmVuY3lDb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVuY3kudG9Mb3dlckNhc2UoKX0scHJpY2VDaGFydERhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcGlDb2luQ2hhcnREYXRhLnByaWNlc30scGVyY2VudGFnZUNsYXNzOmZ1bmN0aW9uKCl7dmFyIGU9TnVtYmVyKHRoaXMuYXBpQ29pbkRhdGEubWFya2V0X2RhdGEucHJpY2VfY2hhbmdlX3BlcmNlbnRhZ2VfMjRoX2luX2N1cnJlbmN5W3RoaXMuY3VycmVuY3lDb2RlXSk7cmV0dXJueyJjZy1wcmltYXJ5LWNvbG9yLWRhcmsiOmU+PTAsImNnLXJlZC1jb2xvci1kYXJrIjplPDB9fSxwb3dlcmVkQnlDb2luR2Vja286ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb2x5Z2xvdC50KCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldC5wb3dlcmVkX2J5Iix7bmFtZToiQ29pbkdlY2tvIixuYW1lX3N0YXJ0Oic8YSBjbGFzcz0iY2ctcHJpbWFyeS1jb2xvci1kYXJrIGNnLXhzIGNnLW5vLXVuZGVybGluZSIgaHJlZj0iaHR0cHM6Ly93d3cuY29pbmdlY2tvLmNvbS8nLmNvbmNhdCh0aGlzLmxvY2FsZSwiPyIpLmNvbmNhdCh0aGlzLnV0bVBhcmFtcywnIiB0YXJnZXQ9Il9ibGFuayI+JyksbmFtZV9lbmQ6IjwvYT4ifSl9LHV0bVBhcmFtczpmdW5jdGlvbigpe3JldHVybiJ1dG1fc291cmNlPSIuY29uY2F0KHdpbmRvdy5sb2NhdGlvbi5ob3N0LCImdXRtX21lZGl1bT1jb2luX3ByaWNlX2NoYXJ0X3dpZGdldCZ1dG1fY29udGVudD0iKS5jb25jYXQodGhpcy5jb2luSWQudG9Mb3dlckNhc2UoKSl9LGNvbnRhaW5lclN0eWxlOmZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOjA9PT10aGlzLndpZHRoPyIxMDAlIjoiIi5jb25jYXQodGhpcy53aWR0aCwicHgiKSxoZWlnaHQ6IiIuY29uY2F0KHRoaXMuaGVpZ2h0LCJweCIpLG1heEhlaWdodDoiIi5jb25jYXQodGhpcy5oZWlnaHQsInB4IiksbWluV2lkdGg6IjIwMHB4In19LGJhY2tncm91bmRDb2xvclN0eWxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5iYWNrZ3JvdW5kQ29sb3IubWF0Y2goL14jKFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezN9KSQvaSk/dGhpcy5iYWNrZ3JvdW5kQ29sb3I6IiNmZmZmZmYiO3JldHVybntiYWNrZ3JvdW5kQ29sb3I6ZX19LGNhbnZhc1N0eWxlOmZ1bmN0aW9uKCl7cmV0dXJue2hlaWdodDoiIi5jb25jYXQodGhpcy5oZWlnaHQtTS0yLCJweCIpLG1heEhlaWdodDoiIi5jb25jYXQodGhpcy5oZWlnaHQtTS0yLCJweCIpLHdpZHRoOiIxMDAlIn19LGhlYWRlclN0eWxlOmZ1bmN0aW9uKCl7cmV0dXJue2hlaWdodDoiIi5jb25jYXQoTSwicHgiKX19fSx3YXRjaDp7aGVpZ2h0Ok9iamVjdCh3WyJiIl0pKChmdW5jdGlvbigpe3RoaXMuZHJhd0NoYXJ0KCl9KSwyMDApLHdpZHRoOk9iamVjdCh3WyJiIl0pKChmdW5jdGlvbigpe3RoaXMuZHJhd0NoYXJ0KCl9KSwyMDApLGNvaW5JZDpmdW5jdGlvbigpe3RoaXMuZmV0Y2hDb2luRGF0YSgpLHRoaXMubGlzdGVuRm9yUHJpY2VDaGFuZ2VzKCl9LGN1cnJlbmN5OmZ1bmN0aW9uKCl7dGhpcy5mZXRjaENvaW5EYXRhKCl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5mZXRjaENvaW5EYXRhKCksdGhpcy5saXN0ZW5Gb3JQcmljZUNoYW5nZXMoKSx0aGlzLnJlbG9hZExvY2FsZSgpfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNvaW5EYXRhTGlzdGVuZXImJnRoaXMuY29pbkRhdGFMaXN0ZW5lci51bnN1YnNjcmliZSgpfX0sRD1PLFQ9bigiMjg3NyIpLEk9T2JqZWN0KFRbImEiXSkoRCxyLGksITEsbnVsbCxudWxsLG51bGwpO3RbImEiXT1JLmV4cG9ydHN9LCIyZjZkIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKTtuKCI3ZjdmIik7dmFyIHI9e2NyZWF0ZWQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlsiLmNvbmNhdCh0aGlzLiRvcHRpb25zLm5hbWUsIl0gVGhpcyB3aWRnZXQgaXMgZGVwcmVjYXRlZCBhbmQgaXMgbm8gbG9uZ2VyIG1haW50YWluZWQuIFBsZWFzZSB2aXNpdCBodHRwczovL3d3dy5jb2luZ2Vja28uY29tL3dpZGdldHMgdG8gZ2V0IHRoZSBuZXcgdmVyc2lvbiBvZiB0aGlzIHdpZGdldCwgd2hpY2ggZmVhdHVyZXMgYSBuZXcgZGVzaWduIGFuZCBiZXR0ZXIgcGVyZm9ybWFuY2UhIikpfX19LCIzMGVmIjpmdW5jdGlvbihlLHQsbil7dmFyIGk7Ci8qIQogKiBDaGFydC5qcwogKiBodHRwOi8vY2hhcnRqcy5vcmcvCiAqIFZlcnNpb246IDIuNy4zCiAqCiAqIENvcHlyaWdodCAyMDE4IENoYXJ0LmpzIENvbnRyaWJ1dG9ycwogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICogaHR0cHM6Ly9naXRodWIuY29tL2NoYXJ0anMvQ2hhcnQuanMvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZAogKi8KKGZ1bmN0aW9uKHQpe2UuZXhwb3J0cz10KCl9KSgoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBhKHMsYyl7aWYoIW5bc10pe2lmKCF0W3NdKXt2YXIgbD0iZnVuY3Rpb24iPT10eXBlb2YgaSYmaTtpZighYyYmbClyZXR1cm4gaShzLCEwKTtpZihvKXJldHVybiBvKHMsITApO3ZhciB1PW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK3MrIiciKTt0aHJvdyB1LmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLHV9dmFyIGQ9bltzXT17ZXhwb3J0czp7fX07dFtzXVswXS5jYWxsKGQuZXhwb3J0cywoZnVuY3Rpb24oZSl7dmFyIG49dFtzXVsxXVtlXTtyZXR1cm4gYShufHxlKX0pLGQsZC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW3NdLmV4cG9ydHN9Zm9yKHZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpLHM9MDtzPHIubGVuZ3RoO3MrKylhKHJbc10pO3JldHVybiBhfXJldHVybiBlfSgpKHsxOltmdW5jdGlvbihlLHQsbil7fSx7fV0sMjpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoNik7ZnVuY3Rpb24gaShlKXtpZihlKXt2YXIgdD0vXiMoW2EtZkEtRjAtOV17M30pJC9pLG49L14jKFthLWZBLUYwLTldezZ9KSQvaSxpPS9ecmdiYT9cKFxzKihbKy1dP1xkKylccyosXHMqKFsrLV0/XGQrKVxzKixccyooWystXT9cZCspXHMqKD86LFxzKihbKy1dP1tcZFwuXSspXHMqKT9cKSQvaSxhPS9ecmdiYT9cKFxzKihbKy1dP1tcZFwuXSspXCVccyosXHMqKFsrLV0/W1xkXC5dKylcJVxzKixccyooWystXT9bXGRcLl0rKVwlXHMqKD86LFxzKihbKy1dP1tcZFwuXSspXHMqKT9cKSQvaSxvPS8oXHcrKS8scz1bMCwwLDBdLGM9MSxsPWUubWF0Y2godCk7aWYobCl7bD1sWzFdO2Zvcih2YXIgdT0wO3U8cy5sZW5ndGg7dSsrKXNbdV09cGFyc2VJbnQobFt1XStsW3VdLDE2KX1lbHNlIGlmKGw9ZS5tYXRjaChuKSl7bD1sWzFdO2Zvcih1PTA7dTxzLmxlbmd0aDt1Kyspc1t1XT1wYXJzZUludChsLnNsaWNlKDIqdSwyKnUrMiksMTYpfWVsc2UgaWYobD1lLm1hdGNoKGkpKXtmb3IodT0wO3U8cy5sZW5ndGg7dSsrKXNbdV09cGFyc2VJbnQobFt1KzFdKTtjPXBhcnNlRmxvYXQobFs0XSl9ZWxzZSBpZihsPWUubWF0Y2goYSkpe2Zvcih1PTA7dTxzLmxlbmd0aDt1Kyspc1t1XT1NYXRoLnJvdW5kKDIuNTUqcGFyc2VGbG9hdChsW3UrMV0pKTtjPXBhcnNlRmxvYXQobFs0XSl9ZWxzZSBpZihsPWUubWF0Y2gobykpe2lmKCJ0cmFuc3BhcmVudCI9PWxbMV0pcmV0dXJuWzAsMCwwLDBdO2lmKHM9cltsWzFdXSwhcylyZXR1cm59Zm9yKHU9MDt1PHMubGVuZ3RoO3UrKylzW3VdPXkoc1t1XSwwLDI1NSk7cmV0dXJuIGM9Y3x8MD09Yz95KGMsMCwxKToxLHNbM109YyxzfX1mdW5jdGlvbiBhKGUpe2lmKGUpe3ZhciB0PS9eaHNsYT9cKFxzKihbKy1dP1xkKykoPzpkZWcpP1xzKixccyooWystXT9bXGRcLl0rKSVccyosXHMqKFsrLV0/W1xkXC5dKyklXHMqKD86LFxzKihbKy1dP1tcZFwuXSspXHMqKT9cKS8sbj1lLm1hdGNoKHQpO2lmKG4pe3ZhciByPXBhcnNlRmxvYXQobls0XSksaT15KHBhcnNlSW50KG5bMV0pLDAsMzYwKSxhPXkocGFyc2VGbG9hdChuWzJdKSwwLDEwMCksbz15KHBhcnNlRmxvYXQoblszXSksMCwxMDApLHM9eShpc05hTihyKT8xOnIsMCwxKTtyZXR1cm5baSxhLG8sc119fX1mdW5jdGlvbiBvKGUpe2lmKGUpe3ZhciB0PS9eaHdiXChccyooWystXT9cZCspKD86ZGVnKT9ccyosXHMqKFsrLV0/W1xkXC5dKyklXHMqLFxzKihbKy1dP1tcZFwuXSspJVxzKig/OixccyooWystXT9bXGRcLl0rKVxzKik/XCkvLG49ZS5tYXRjaCh0KTtpZihuKXt2YXIgcj1wYXJzZUZsb2F0KG5bNF0pLGk9eShwYXJzZUludChuWzFdKSwwLDM2MCksYT15KHBhcnNlRmxvYXQoblsyXSksMCwxMDApLG89eShwYXJzZUZsb2F0KG5bM10pLDAsMTAwKSxzPXkoaXNOYU4ocik/MTpyLDAsMSk7cmV0dXJuW2ksYSxvLHNdfX19ZnVuY3Rpb24gcyhlKXt2YXIgdD1pKGUpO3JldHVybiB0JiZ0LnNsaWNlKDAsMyl9ZnVuY3Rpb24gYyhlKXt2YXIgdD1hKGUpO3JldHVybiB0JiZ0LnNsaWNlKDAsMyl9ZnVuY3Rpb24gbChlKXt2YXIgdD1pKGUpO3JldHVybiB0P3RbM106KHQ9YShlKSk/dFszXToodD1vKGUpKT90WzNdOnZvaWQgMH1mdW5jdGlvbiB1KGUpe3JldHVybiIjIitiKGVbMF0pK2IoZVsxXSkrYihlWzJdKX1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIHQ8MXx8ZVszXSYmZVszXTwxP3AoZSx0KToicmdiKCIrZVswXSsiLCAiK2VbMV0rIiwgIitlWzJdKyIpIn1mdW5jdGlvbiBwKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXZvaWQgMCE9PWVbM10/ZVszXToxKSwicmdiYSgiK2VbMF0rIiwgIitlWzFdKyIsICIrZVsyXSsiLCAiK3QrIikifWZ1bmN0aW9uIGYoZSx0KXtpZih0PDF8fGVbM10mJmVbM108MSlyZXR1cm4gaChlLHQpO3ZhciBuPU1hdGgucm91bmQoZVswXS8yNTUqMTAwKSxyPU1hdGgucm91bmQoZVsxXS8yNTUqMTAwKSxpPU1hdGgucm91bmQoZVsyXS8yNTUqMTAwKTtyZXR1cm4icmdiKCIrbisiJSwgIityKyIlLCAiK2krIiUpIn1mdW5jdGlvbiBoKGUsdCl7dmFyIG49TWF0aC5yb3VuZChlWzBdLzI1NSoxMDApLHI9TWF0aC5yb3VuZChlWzFdLzI1NSoxMDApLGk9TWF0aC5yb3VuZChlWzJdLzI1NSoxMDApO3JldHVybiJyZ2JhKCIrbisiJSwgIityKyIlLCAiK2krIiUsICIrKHR8fGVbM118fDEpKyIpIn1mdW5jdGlvbiBtKGUsdCl7cmV0dXJuIHQ8MXx8ZVszXSYmZVszXTwxP18oZSx0KToiaHNsKCIrZVswXSsiLCAiK2VbMV0rIiUsICIrZVsyXSsiJSkifWZ1bmN0aW9uIF8oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9dm9pZCAwIT09ZVszXT9lWzNdOjEpLCJoc2xhKCIrZVswXSsiLCAiK2VbMV0rIiUsICIrZVsyXSsiJSwgIit0KyIpIn1mdW5jdGlvbiBnKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXZvaWQgMCE9PWVbM10/ZVszXToxKSwiaHdiKCIrZVswXSsiLCAiK2VbMV0rIiUsICIrZVsyXSsiJSIrKHZvaWQgMCE9PXQmJjEhPT10PyIsICIrdDoiIikrIikifWZ1bmN0aW9uIHYoZSl7cmV0dXJuIHdbZS5zbGljZSgwLDMpXX1mdW5jdGlvbiB5KGUsdCxuKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgodCxlKSxuKX1mdW5jdGlvbiBiKGUpe3ZhciB0PWUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIHQubGVuZ3RoPDI/IjAiK3Q6dH10LmV4cG9ydHM9e2dldFJnYmE6aSxnZXRIc2xhOmEsZ2V0UmdiOnMsZ2V0SHNsOmMsZ2V0SHdiOm8sZ2V0QWxwaGE6bCxoZXhTdHJpbmc6dSxyZ2JTdHJpbmc6ZCxyZ2JhU3RyaW5nOnAscGVyY2VudFN0cmluZzpmLHBlcmNlbnRhU3RyaW5nOmgsaHNsU3RyaW5nOm0saHNsYVN0cmluZzpfLGh3YlN0cmluZzpnLGtleXdvcmQ6dn07dmFyIHc9e307Zm9yKHZhciB4IGluIHIpd1tyW3hdXT14fSx7Njo2fV0sMzpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoNSksaT1lKDIpLGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBhP2U6dGhpcyBpbnN0YW5jZW9mIGE/KHRoaXMudmFsaWQ9ITEsdGhpcy52YWx1ZXM9e3JnYjpbMCwwLDBdLGhzbDpbMCwwLDBdLGhzdjpbMCwwLDBdLGh3YjpbMCwwLDBdLGNteWs6WzAsMCwwLDBdLGFscGhhOjF9LHZvaWQoInN0cmluZyI9PT10eXBlb2YgZT8odD1pLmdldFJnYmEoZSksdD90aGlzLnNldFZhbHVlcygicmdiIix0KToodD1pLmdldEhzbGEoZSkpP3RoaXMuc2V0VmFsdWVzKCJoc2wiLHQpOih0PWkuZ2V0SHdiKGUpKSYmdGhpcy5zZXRWYWx1ZXMoImh3YiIsdCkpOiJvYmplY3QiPT09dHlwZW9mIGUmJih0PWUsdm9pZCAwIT09dC5yfHx2b2lkIDAhPT10LnJlZD90aGlzLnNldFZhbHVlcygicmdiIix0KTp2b2lkIDAhPT10Lmx8fHZvaWQgMCE9PXQubGlnaHRuZXNzP3RoaXMuc2V0VmFsdWVzKCJoc2wiLHQpOnZvaWQgMCE9PXQudnx8dm9pZCAwIT09dC52YWx1ZT90aGlzLnNldFZhbHVlcygiaHN2Iix0KTp2b2lkIDAhPT10Lnd8fHZvaWQgMCE9PXQud2hpdGVuZXNzP3RoaXMuc2V0VmFsdWVzKCJod2IiLHQpOnZvaWQgMD09PXQuYyYmdm9pZCAwPT09dC5jeWFufHx0aGlzLnNldFZhbHVlcygiY215ayIsdCkpKSk6bmV3IGEoZSk7dmFyIHR9O2EucHJvdG90eXBlPXtpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsaWR9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldFNwYWNlKCJyZ2IiLGFyZ3VtZW50cyl9LGhzbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldFNwYWNlKCJoc2wiLGFyZ3VtZW50cyl9LGhzdjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldFNwYWNlKCJoc3YiLGFyZ3VtZW50cyl9LGh3YjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldFNwYWNlKCJod2IiLGFyZ3VtZW50cyl9LGNteWs6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXRTcGFjZSgiY215ayIsYXJndW1lbnRzKX0scmdiQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMucmdifSxoc2xBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5oc2x9LGhzdkFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLmhzdn0saHdiQXJyYXk6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnZhbHVlcztyZXR1cm4gMSE9PWUuYWxwaGE/ZS5od2IuY29uY2F0KFtlLmFscGhhXSk6ZS5od2J9LGNteWtBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5jbXlrfSxyZ2JhQXJyYXk6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnZhbHVlcztyZXR1cm4gZS5yZ2IuY29uY2F0KFtlLmFscGhhXSl9LGhzbGFBcnJheTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmFsdWVzO3JldHVybiBlLmhzbC5jb25jYXQoW2UuYWxwaGFdKX0sYWxwaGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy52YWx1ZXMuYWxwaGE6KHRoaXMuc2V0VmFsdWVzKCJhbHBoYSIsZSksdGhpcyl9LHJlZDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJyZ2IiLDAsZSl9LGdyZWVuOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldENoYW5uZWwoInJnYiIsMSxlKX0sYmx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJyZ2IiLDIsZSl9LGh1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmKGUlPTM2MCxlPWU8MD8zNjArZTplKSx0aGlzLnNldENoYW5uZWwoImhzbCIsMCxlKX0sc2F0dXJhdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJoc2wiLDEsZSl9LGxpZ2h0bmVzczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJoc2wiLDIsZSl9LHNhdHVyYXRpb252OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldENoYW5uZWwoImhzdiIsMSxlKX0sd2hpdGVuZXNzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldENoYW5uZWwoImh3YiIsMSxlKX0sYmxhY2tuZXNzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldENoYW5uZWwoImh3YiIsMixlKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiaHN2IiwyLGUpfSxjeWFuOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldENoYW5uZWwoImNteWsiLDAsZSl9LG1hZ2VudGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiY215ayIsMSxlKX0seWVsbG93OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldENoYW5uZWwoImNteWsiLDIsZSl9LGJsYWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldENoYW5uZWwoImNteWsiLDMsZSl9LGhleFN0cmluZzpmdW5jdGlvbigpe3JldHVybiBpLmhleFN0cmluZyh0aGlzLnZhbHVlcy5yZ2IpfSxyZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gaS5yZ2JTdHJpbmcodGhpcy52YWx1ZXMucmdiLHRoaXMudmFsdWVzLmFscGhhKX0scmdiYVN0cmluZzpmdW5jdGlvbigpe3JldHVybiBpLnJnYmFTdHJpbmcodGhpcy52YWx1ZXMucmdiLHRoaXMudmFsdWVzLmFscGhhKX0scGVyY2VudFN0cmluZzpmdW5jdGlvbigpe3JldHVybiBpLnBlcmNlbnRTdHJpbmcodGhpcy52YWx1ZXMucmdiLHRoaXMudmFsdWVzLmFscGhhKX0saHNsU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGkuaHNsU3RyaW5nKHRoaXMudmFsdWVzLmhzbCx0aGlzLnZhbHVlcy5hbHBoYSl9LGhzbGFTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gaS5oc2xhU3RyaW5nKHRoaXMudmFsdWVzLmhzbCx0aGlzLnZhbHVlcy5hbHBoYSl9LGh3YlN0cmluZzpmdW5jdGlvbigpe3JldHVybiBpLmh3YlN0cmluZyh0aGlzLnZhbHVlcy5od2IsdGhpcy52YWx1ZXMuYWxwaGEpfSxrZXl3b3JkOmZ1bmN0aW9uKCl7cmV0dXJuIGkua2V5d29yZCh0aGlzLnZhbHVlcy5yZ2IsdGhpcy52YWx1ZXMuYWxwaGEpfSxyZ2JOdW1iZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnZhbHVlcy5yZ2I7cmV0dXJuIGVbMF08PDE2fGVbMV08PDh8ZVsyXX0sbHVtaW5vc2l0eTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnZhbHVlcy5yZ2IsdD1bXSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl0vMjU1O3Rbbl09cjw9LjAzOTI4P3IvMTIuOTI6TWF0aC5wb3coKHIrLjA1NSkvMS4wNTUsMi40KX1yZXR1cm4uMjEyNip0WzBdKy43MTUyKnRbMV0rLjA3MjIqdFsyXX0sY29udHJhc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sdW1pbm9zaXR5KCksbj1lLmx1bWlub3NpdHkoKTtyZXR1cm4gdD5uPyh0Ky4wNSkvKG4rLjA1KToobisuMDUpLyh0Ky4wNSl9LGxldmVsOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY29udHJhc3QoZSk7cmV0dXJuIHQ+PTcuMT8iQUFBIjp0Pj00LjU/IkFBIjoiIn0sZGFyazpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmFsdWVzLnJnYix0PSgyOTkqZVswXSs1ODcqZVsxXSsxMTQqZVsyXSkvMWUzO3JldHVybiB0PDEyOH0sbGlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5kYXJrKCl9LG5lZ2F0ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDwzO3QrKyllW3RdPTI1NS10aGlzLnZhbHVlcy5yZ2JbdF07cmV0dXJuIHRoaXMuc2V0VmFsdWVzKCJyZ2IiLGUpLHRoaXN9LGxpZ2h0ZW46ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy52YWx1ZXMuaHNsO3JldHVybiB0WzJdKz10WzJdKmUsdGhpcy5zZXRWYWx1ZXMoImhzbCIsdCksdGhpc30sZGFya2VuOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudmFsdWVzLmhzbDtyZXR1cm4gdFsyXS09dFsyXSplLHRoaXMuc2V0VmFsdWVzKCJoc2wiLHQpLHRoaXN9LHNhdHVyYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudmFsdWVzLmhzbDtyZXR1cm4gdFsxXSs9dFsxXSplLHRoaXMuc2V0VmFsdWVzKCJoc2wiLHQpLHRoaXN9LGRlc2F0dXJhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy52YWx1ZXMuaHNsO3JldHVybiB0WzFdLT10WzFdKmUsdGhpcy5zZXRWYWx1ZXMoImhzbCIsdCksdGhpc30sd2hpdGVuOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudmFsdWVzLmh3YjtyZXR1cm4gdFsxXSs9dFsxXSplLHRoaXMuc2V0VmFsdWVzKCJod2IiLHQpLHRoaXN9LGJsYWNrZW46ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy52YWx1ZXMuaHdiO3JldHVybiB0WzJdKz10WzJdKmUsdGhpcy5zZXRWYWx1ZXMoImh3YiIsdCksdGhpc30sZ3JleXNjYWxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52YWx1ZXMucmdiLHQ9LjMqZVswXSsuNTkqZVsxXSsuMTEqZVsyXTtyZXR1cm4gdGhpcy5zZXRWYWx1ZXMoInJnYiIsW3QsdCx0XSksdGhpc30sY2xlYXJlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnZhbHVlcy5hbHBoYTtyZXR1cm4gdGhpcy5zZXRWYWx1ZXMoImFscGhhIix0LXQqZSksdGhpc30sb3BhcXVlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnZhbHVlcy5hbHBoYTtyZXR1cm4gdGhpcy5zZXRWYWx1ZXMoImFscGhhIix0K3QqZSksdGhpc30scm90YXRlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudmFsdWVzLmhzbCxuPSh0WzBdK2UpJTM2MDtyZXR1cm4gdFswXT1uPDA/MzYwK246bix0aGlzLnNldFZhbHVlcygiaHNsIix0KSx0aGlzfSxtaXg6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9ZSxpPXZvaWQgMD09PXQ/LjU6dCxhPTIqaS0xLG89bi5hbHBoYSgpLXIuYWxwaGEoKSxzPSgoYSpvPT09LTE/YTooYStvKS8oMSthKm8pKSsxKS8yLGM9MS1zO3JldHVybiB0aGlzLnJnYihzKm4ucmVkKCkrYypyLnJlZCgpLHMqbi5ncmVlbigpK2Mqci5ncmVlbigpLHMqbi5ibHVlKCkrYypyLmJsdWUoKSkuYWxwaGEobi5hbHBoYSgpKmkrci5hbHBoYSgpKigxLWkpKX0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGUsdCxuPW5ldyBhLHI9dGhpcy52YWx1ZXMsaT1uLnZhbHVlcztmb3IodmFyIG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiYoZT1yW29dLHQ9e30udG9TdHJpbmcuY2FsbChlKSwiW29iamVjdCBBcnJheV0iPT09dD9pW29dPWUuc2xpY2UoMCk6IltvYmplY3QgTnVtYmVyXSI9PT10P2lbb109ZTpjb25zb2xlLmVycm9yKCJ1bmV4cGVjdGVkIGNvbG9yIHZhbHVlOiIsZSkpO3JldHVybiBufX0sYS5wcm90b3R5cGUuc3BhY2VzPXtyZ2I6WyJyZWQiLCJncmVlbiIsImJsdWUiXSxoc2w6WyJodWUiLCJzYXR1cmF0aW9uIiwibGlnaHRuZXNzIl0saHN2OlsiaHVlIiwic2F0dXJhdGlvbiIsInZhbHVlIl0saHdiOlsiaHVlIiwid2hpdGVuZXNzIiwiYmxhY2tuZXNzIl0sY215azpbImN5YW4iLCJtYWdlbnRhIiwieWVsbG93IiwiYmxhY2siXX0sYS5wcm90b3R5cGUubWF4ZXM9e3JnYjpbMjU1LDI1NSwyNTVdLGhzbDpbMzYwLDEwMCwxMDBdLGhzdjpbMzYwLDEwMCwxMDBdLGh3YjpbMzYwLDEwMCwxMDBdLGNteWs6WzEwMCwxMDAsMTAwLDEwMF19LGEucHJvdG90eXBlLmdldFZhbHVlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy52YWx1ZXMsbj17fSxyPTA7cjxlLmxlbmd0aDtyKyspbltlLmNoYXJBdChyKV09dFtlXVtyXTtyZXR1cm4gMSE9PXQuYWxwaGEmJihuLmE9dC5hbHBoYSksbn0sYS5wcm90b3R5cGUuc2V0VmFsdWVzPWZ1bmN0aW9uKGUsdCl7dmFyIG4saSxhPXRoaXMudmFsdWVzLG89dGhpcy5zcGFjZXMscz10aGlzLm1heGVzLGM9MTtpZih0aGlzLnZhbGlkPSEwLCJhbHBoYSI9PT1lKWM9dDtlbHNlIGlmKHQubGVuZ3RoKWFbZV09dC5zbGljZSgwLGUubGVuZ3RoKSxjPXRbZS5sZW5ndGhdO2Vsc2UgaWYodm9pZCAwIT09dFtlLmNoYXJBdCgwKV0pe2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspYVtlXVtuXT10W2UuY2hhckF0KG4pXTtjPXQuYX1lbHNlIGlmKHZvaWQgMCE9PXRbb1tlXVswXV0pe3ZhciBsPW9bZV07Zm9yKG49MDtuPGUubGVuZ3RoO24rKylhW2VdW25dPXRbbFtuXV07Yz10LmFscGhhfWlmKGEuYWxwaGE9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHZvaWQgMD09PWM/YS5hbHBoYTpjKSksImFscGhhIj09PWUpcmV0dXJuITE7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylpPU1hdGgubWF4KDAsTWF0aC5taW4oc1tlXVtuXSxhW2VdW25dKSksYVtlXVtuXT1NYXRoLnJvdW5kKGkpO2Zvcih2YXIgdSBpbiBvKXUhPT1lJiYoYVt1XT1yW2VdW3VdKGFbZV0pKTtyZXR1cm4hMH0sYS5wcm90b3R5cGUuc2V0U3BhY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10WzBdO3JldHVybiB2b2lkIDA9PT1uP3RoaXMuZ2V0VmFsdWVzKGUpOigibnVtYmVyIj09PXR5cGVvZiBuJiYobj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSksdGhpcy5zZXRWYWx1ZXMoZSxuKSx0aGlzKX0sYS5wcm90b3R5cGUuc2V0Q2hhbm5lbD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy52YWx1ZXNbZV07cmV0dXJuIHZvaWQgMD09PW4/clt0XTpuPT09clt0XT90aGlzOihyW3RdPW4sdGhpcy5zZXRWYWx1ZXMoZSxyKSx0aGlzKX0sInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiYod2luZG93LkNvbG9yPWEpLHQuZXhwb3J0cz1hfSx7MjoyLDU6NX1dLDQ6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBpKGUpe3ZhciB0LG4scixpPWVbMF0vMjU1LGE9ZVsxXS8yNTUsbz1lWzJdLzI1NSxzPU1hdGgubWluKGksYSxvKSxjPU1hdGgubWF4KGksYSxvKSxsPWMtcztyZXR1cm4gYz09cz90PTA6aT09Yz90PShhLW8pL2w6YT09Yz90PTIrKG8taSkvbDpvPT1jJiYodD00KyhpLWEpL2wpLHQ9TWF0aC5taW4oNjAqdCwzNjApLHQ8MCYmKHQrPTM2MCkscj0ocytjKS8yLG49Yz09cz8wOnI8PS41P2wvKGMrcyk6bC8oMi1jLXMpLFt0LDEwMCpuLDEwMCpyXX1mdW5jdGlvbiBhKGUpe3ZhciB0LG4scixpPWVbMF0sYT1lWzFdLG89ZVsyXSxzPU1hdGgubWluKGksYSxvKSxjPU1hdGgubWF4KGksYSxvKSxsPWMtcztyZXR1cm4gbj0wPT1jPzA6bC9jKjFlMy8xMCxjPT1zP3Q9MDppPT1jP3Q9KGEtbykvbDphPT1jP3Q9Misoby1pKS9sOm89PWMmJih0PTQrKGktYSkvbCksdD1NYXRoLm1pbig2MCp0LDM2MCksdDwwJiYodCs9MzYwKSxyPWMvMjU1KjFlMy8xMCxbdCxuLHJdfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZVswXSxuPWVbMV0scj1lWzJdLGE9aShlKVswXSxvPTEvMjU1Kk1hdGgubWluKHQsTWF0aC5taW4obixyKSk7cj0xLTEvMjU1Kk1hdGgubWF4KHQsTWF0aC5tYXgobixyKSk7cmV0dXJuW2EsMTAwKm8sMTAwKnJdfWZ1bmN0aW9uIHMoZSl7dmFyIHQsbixyLGksYT1lWzBdLzI1NSxvPWVbMV0vMjU1LHM9ZVsyXS8yNTU7cmV0dXJuIGk9TWF0aC5taW4oMS1hLDEtbywxLXMpLHQ9KDEtYS1pKS8oMS1pKXx8MCxuPSgxLW8taSkvKDEtaSl8fDAscj0oMS1zLWkpLygxLWkpfHwwLFsxMDAqdCwxMDAqbiwxMDAqciwxMDAqaV19ZnVuY3Rpb24gYyhlKXtyZXR1cm4gWFtKU09OLnN0cmluZ2lmeShlKV19ZnVuY3Rpb24gbChlKXt2YXIgdD1lWzBdLzI1NSxuPWVbMV0vMjU1LHI9ZVsyXS8yNTU7dD10Pi4wNDA0NT9NYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpOnQvMTIuOTIsbj1uPi4wNDA0NT9NYXRoLnBvdygobisuMDU1KS8xLjA1NSwyLjQpOm4vMTIuOTIscj1yPi4wNDA0NT9NYXRoLnBvdygocisuMDU1KS8xLjA1NSwyLjQpOnIvMTIuOTI7dmFyIGk9LjQxMjQqdCsuMzU3NipuKy4xODA1KnIsYT0uMjEyNip0Ky43MTUyKm4rLjA3MjIqcixvPS4wMTkzKnQrLjExOTIqbisuOTUwNSpyO3JldHVyblsxMDAqaSwxMDAqYSwxMDAqb119ZnVuY3Rpb24gdShlKXt2YXIgdCxuLHIsaT1sKGUpLGE9aVswXSxvPWlbMV0scz1pWzJdO3JldHVybiBhLz05NS4wNDcsby89MTAwLHMvPTEwOC44ODMsYT1hPi4wMDg4NTY/TWF0aC5wb3coYSwxLzMpOjcuNzg3KmErMTYvMTE2LG89bz4uMDA4ODU2P01hdGgucG93KG8sMS8zKTo3Ljc4NypvKzE2LzExNixzPXM+LjAwODg1Nj9NYXRoLnBvdyhzLDEvMyk6Ny43ODcqcysxNi8xMTYsdD0xMTYqby0xNixuPTUwMCooYS1vKSxyPTIwMCooby1zKSxbdCxuLHJdfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIE4odShlKSl9ZnVuY3Rpb24gcChlKXt2YXIgdCxuLHIsaSxhLG89ZVswXS8zNjAscz1lWzFdLzEwMCxjPWVbMl0vMTAwO2lmKDA9PXMpcmV0dXJuIGE9MjU1KmMsW2EsYSxhXTtuPWM8LjU/YyooMStzKTpjK3MtYypzLHQ9MipjLW4saT1bMCwwLDBdO2Zvcih2YXIgbD0wO2w8MztsKyspcj1vKzEvMyotKGwtMSkscjwwJiZyKysscj4xJiZyLS0sYT02KnI8MT90KzYqKG4tdCkqcjoyKnI8MT9uOjMqcjwyP3QrKG4tdCkqKDIvMy1yKSo2OnQsaVtsXT0yNTUqYTtyZXR1cm4gaX1mdW5jdGlvbiBmKGUpe3ZhciB0LG4scj1lWzBdLGk9ZVsxXS8xMDAsYT1lWzJdLzEwMDtyZXR1cm4gMD09PWE/WzAsMCwwXTooYSo9MixpKj1hPD0xP2E6Mi1hLG49KGEraSkvMix0PTIqaS8oYStpKSxbciwxMDAqdCwxMDAqbl0pfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIG8ocChlKSl9ZnVuY3Rpb24gbShlKXtyZXR1cm4gcyhwKGUpKX1mdW5jdGlvbiBfKGUpe3JldHVybiBjKHAoZSkpfWZ1bmN0aW9uIHYoZSl7dmFyIHQ9ZVswXS82MCxuPWVbMV0vMTAwLHI9ZVsyXS8xMDAsaT1NYXRoLmZsb29yKHQpJTYsYT10LU1hdGguZmxvb3IodCksbz0yNTUqciooMS1uKSxzPTI1NSpyKigxLW4qYSksYz0yNTUqciooMS1uKigxLWEpKTtyKj0yNTU7c3dpdGNoKGkpe2Nhc2UgMDpyZXR1cm5bcixjLG9dO2Nhc2UgMTpyZXR1cm5bcyxyLG9dO2Nhc2UgMjpyZXR1cm5bbyxyLGNdO2Nhc2UgMzpyZXR1cm5bbyxzLHJdO2Nhc2UgNDpyZXR1cm5bYyxvLHJdO2Nhc2UgNTpyZXR1cm5bcixvLHNdfX1mdW5jdGlvbiB5KGUpe3ZhciB0LG4scj1lWzBdLGk9ZVsxXS8xMDAsYT1lWzJdLzEwMDtyZXR1cm4gbj0oMi1pKSphLHQ9aSphLHQvPW48PTE/bjoyLW4sdD10fHwwLG4vPTIsW3IsMTAwKnQsMTAwKm5dfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIG8odihlKSl9ZnVuY3Rpb24geChlKXtyZXR1cm4gcyh2KGUpKX1mdW5jdGlvbiBrKGUpe3JldHVybiBjKHYoZSkpfWZ1bmN0aW9uIEMoZSl7dmFyIHQsbixpLGEsbz1lWzBdLzM2MCxzPWVbMV0vMTAwLGM9ZVsyXS8xMDAsbD1zK2M7c3dpdGNoKGw+MSYmKHMvPWwsYy89bCksdD1NYXRoLmZsb29yKDYqbyksbj0xLWMsaT02Km8tdCwwIT0oMSZ0KSYmKGk9MS1pKSxhPXMraSoobi1zKSx0KXtkZWZhdWx0OmNhc2UgNjpjYXNlIDA6cj1uLGc9YSxiPXM7YnJlYWs7Y2FzZSAxOnI9YSxnPW4sYj1zO2JyZWFrO2Nhc2UgMjpyPXMsZz1uLGI9YTticmVhaztjYXNlIDM6cj1zLGc9YSxiPW47YnJlYWs7Y2FzZSA0OnI9YSxnPXMsYj1uO2JyZWFrO2Nhc2UgNTpyPW4sZz1zLGI9YTticmVha31yZXR1cm5bMjU1KnIsMjU1KmcsMjU1KmJdfWZ1bmN0aW9uIFMoZSl7cmV0dXJuIGkoQyhlKSl9ZnVuY3Rpb24gUChlKXtyZXR1cm4gYShDKGUpKX1mdW5jdGlvbiBNKGUpe3JldHVybiBzKEMoZSkpfWZ1bmN0aW9uIEEoZSl7cmV0dXJuIGMoQyhlKSl9ZnVuY3Rpb24gTyhlKXt2YXIgdCxuLHIsaT1lWzBdLzEwMCxhPWVbMV0vMTAwLG89ZVsyXS8xMDAscz1lWzNdLzEwMDtyZXR1cm4gdD0xLU1hdGgubWluKDEsaSooMS1zKStzKSxuPTEtTWF0aC5taW4oMSxhKigxLXMpK3MpLHI9MS1NYXRoLm1pbigxLG8qKDEtcykrcyksWzI1NSp0LDI1NSpuLDI1NSpyXX1mdW5jdGlvbiBEKGUpe3JldHVybiBpKE8oZSkpfWZ1bmN0aW9uIFQoZSl7cmV0dXJuIGEoTyhlKSl9ZnVuY3Rpb24gSShlKXtyZXR1cm4gbyhPKGUpKX1mdW5jdGlvbiBqKGUpe3JldHVybiBjKE8oZSkpfWZ1bmN0aW9uIEYoZSl7dmFyIHQsbixyLGk9ZVswXS8xMDAsYT1lWzFdLzEwMCxvPWVbMl0vMTAwO3JldHVybiB0PTMuMjQwNippKy0xLjUzNzIqYSstLjQ5ODYqbyxuPS0uOTY4OSppKzEuODc1OCphKy4wNDE1Km8scj0uMDU1NyppKy0uMjA0KmErMS4wNTcqbyx0PXQ+LjAwMzEzMDg/MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NTp0Kj0xMi45MixuPW4+LjAwMzEzMDg/MS4wNTUqTWF0aC5wb3cobiwxLzIuNCktLjA1NTpuKj0xMi45MixyPXI+LjAwMzEzMDg/MS4wNTUqTWF0aC5wb3cociwxLzIuNCktLjA1NTpyKj0xMi45Mix0PU1hdGgubWluKE1hdGgubWF4KDAsdCksMSksbj1NYXRoLm1pbihNYXRoLm1heCgwLG4pLDEpLHI9TWF0aC5taW4oTWF0aC5tYXgoMCxyKSwxKSxbMjU1KnQsMjU1Km4sMjU1KnJdfWZ1bmN0aW9uIHooZSl7dmFyIHQsbixyLGk9ZVswXSxhPWVbMV0sbz1lWzJdO3JldHVybiBpLz05NS4wNDcsYS89MTAwLG8vPTEwOC44ODMsaT1pPi4wMDg4NTY/TWF0aC5wb3coaSwxLzMpOjcuNzg3KmkrMTYvMTE2LGE9YT4uMDA4ODU2P01hdGgucG93KGEsMS8zKTo3Ljc4NyphKzE2LzExNixvPW8+LjAwODg1Nj9NYXRoLnBvdyhvLDEvMyk6Ny43ODcqbysxNi8xMTYsdD0xMTYqYS0xNixuPTUwMCooaS1hKSxyPTIwMCooYS1vKSxbdCxuLHJdfWZ1bmN0aW9uIEwoZSl7cmV0dXJuIE4oeihlKSl9ZnVuY3Rpb24gRShlKXt2YXIgdCxuLHIsaSxhPWVbMF0sbz1lWzFdLHM9ZVsyXTtyZXR1cm4gYTw9OD8obj0xMDAqYS85MDMuMyxpPW4vMTAwKjcuNzg3KzE2LzExNik6KG49MTAwKk1hdGgucG93KChhKzE2KS8xMTYsMyksaT1NYXRoLnBvdyhuLzEwMCwxLzMpKSx0PXQvOTUuMDQ3PD0uMDA4ODU2P3Q9OTUuMDQ3KihvLzUwMCtpLTE2LzExNikvNy43ODc6OTUuMDQ3Kk1hdGgucG93KG8vNTAwK2ksMykscj1yLzEwOC44ODM8PS4wMDg4NTk/cj0xMDguODgzKihpLXMvMjAwLTE2LzExNikvNy43ODc6MTA4Ljg4MypNYXRoLnBvdyhpLXMvMjAwLDMpLFt0LG4scl19ZnVuY3Rpb24gTihlKXt2YXIgdCxuLHIsaT1lWzBdLGE9ZVsxXSxvPWVbMl07cmV0dXJuIHQ9TWF0aC5hdGFuMihvLGEpLG49MzYwKnQvMi9NYXRoLlBJLG48MCYmKG4rPTM2MCkscj1NYXRoLnNxcnQoYSphK28qbyksW2kscixuXX1mdW5jdGlvbiBSKGUpe3JldHVybiBGKEUoZSkpfWZ1bmN0aW9uIFYoZSl7dmFyIHQsbixyLGk9ZVswXSxhPWVbMV0sbz1lWzJdO3JldHVybiByPW8vMzYwKjIqTWF0aC5QSSx0PWEqTWF0aC5jb3Mociksbj1hKk1hdGguc2luKHIpLFtpLHQsbl19ZnVuY3Rpb24gQihlKXtyZXR1cm4gRShWKGUpKX1mdW5jdGlvbiAkKGUpe3JldHVybiBSKFYoZSkpfWZ1bmN0aW9uIFcoZSl7cmV0dXJuIFlbZV19ZnVuY3Rpb24gSChlKXtyZXR1cm4gaShXKGUpKX1mdW5jdGlvbiBVKGUpe3JldHVybiBhKFcoZSkpfWZ1bmN0aW9uIEcoZSl7cmV0dXJuIG8oVyhlKSl9ZnVuY3Rpb24gcShlKXtyZXR1cm4gcyhXKGUpKX1mdW5jdGlvbiBLKGUpe3JldHVybiB1KFcoZSkpfWZ1bmN0aW9uIEooZSl7cmV0dXJuIGwoVyhlKSl9dC5leHBvcnRzPXtyZ2IyaHNsOmkscmdiMmhzdjphLHJnYjJod2I6byxyZ2IyY215azpzLHJnYjJrZXl3b3JkOmMscmdiMnh5ejpsLHJnYjJsYWI6dSxyZ2IybGNoOmQsaHNsMnJnYjpwLGhzbDJoc3Y6Zixoc2wyaHdiOmgsaHNsMmNteWs6bSxoc2wya2V5d29yZDpfLGhzdjJyZ2I6dixoc3YyaHNsOnksaHN2Mmh3Yjp3LGhzdjJjbXlrOngsaHN2MmtleXdvcmQ6ayxod2IycmdiOkMsaHdiMmhzbDpTLGh3YjJoc3Y6UCxod2IyY215azpNLGh3YjJrZXl3b3JkOkEsY215azJyZ2I6TyxjbXlrMmhzbDpELGNteWsyaHN2OlQsY215azJod2I6SSxjbXlrMmtleXdvcmQ6aixrZXl3b3JkMnJnYjpXLGtleXdvcmQyaHNsOkgsa2V5d29yZDJoc3Y6VSxrZXl3b3JkMmh3YjpHLGtleXdvcmQyY215azpxLGtleXdvcmQybGFiOkssa2V5d29yZDJ4eXo6Six4eXoycmdiOkYseHl6MmxhYjp6LHh5ejJsY2g6TCxsYWIyeHl6OkUsbGFiMnJnYjpSLGxhYjJsY2g6TixsY2gybGFiOlYsbGNoMnh5ejpCLGxjaDJyZ2I6JH07dmFyIFk9e2FsaWNlYmx1ZTpbMjQwLDI0OCwyNTVdLGFudGlxdWV3aGl0ZTpbMjUwLDIzNSwyMTVdLGFxdWE6WzAsMjU1LDI1NV0sYXF1YW1hcmluZTpbMTI3LDI1NSwyMTJdLGF6dXJlOlsyNDAsMjU1LDI1NV0sYmVpZ2U6WzI0NSwyNDUsMjIwXSxiaXNxdWU6WzI1NSwyMjgsMTk2XSxibGFjazpbMCwwLDBdLGJsYW5jaGVkYWxtb25kOlsyNTUsMjM1LDIwNV0sYmx1ZTpbMCwwLDI1NV0sYmx1ZXZpb2xldDpbMTM4LDQzLDIyNl0sYnJvd246WzE2NSw0Miw0Ml0sYnVybHl3b29kOlsyMjIsMTg0LDEzNV0sY2FkZXRibHVlOls5NSwxNTgsMTYwXSxjaGFydHJldXNlOlsxMjcsMjU1LDBdLGNob2NvbGF0ZTpbMjEwLDEwNSwzMF0sY29yYWw6WzI1NSwxMjcsODBdLGNvcm5mbG93ZXJibHVlOlsxMDAsMTQ5LDIzN10sY29ybnNpbGs6WzI1NSwyNDgsMjIwXSxjcmltc29uOlsyMjAsMjAsNjBdLGN5YW46WzAsMjU1LDI1NV0sZGFya2JsdWU6WzAsMCwxMzldLGRhcmtjeWFuOlswLDEzOSwxMzldLGRhcmtnb2xkZW5yb2Q6WzE4NCwxMzQsMTFdLGRhcmtncmF5OlsxNjksMTY5LDE2OV0sZGFya2dyZWVuOlswLDEwMCwwXSxkYXJrZ3JleTpbMTY5LDE2OSwxNjldLGRhcmtraGFraTpbMTg5LDE4MywxMDddLGRhcmttYWdlbnRhOlsxMzksMCwxMzldLGRhcmtvbGl2ZWdyZWVuOls4NSwxMDcsNDddLGRhcmtvcmFuZ2U6WzI1NSwxNDAsMF0sZGFya29yY2hpZDpbMTUzLDUwLDIwNF0sZGFya3JlZDpbMTM5LDAsMF0sZGFya3NhbG1vbjpbMjMzLDE1MCwxMjJdLGRhcmtzZWFncmVlbjpbMTQzLDE4OCwxNDNdLGRhcmtzbGF0ZWJsdWU6WzcyLDYxLDEzOV0sZGFya3NsYXRlZ3JheTpbNDcsNzksNzldLGRhcmtzbGF0ZWdyZXk6WzQ3LDc5LDc5XSxkYXJrdHVycXVvaXNlOlswLDIwNiwyMDldLGRhcmt2aW9sZXQ6WzE0OCwwLDIxMV0sZGVlcHBpbms6WzI1NSwyMCwxNDddLGRlZXBza3libHVlOlswLDE5MSwyNTVdLGRpbWdyYXk6WzEwNSwxMDUsMTA1XSxkaW1ncmV5OlsxMDUsMTA1LDEwNV0sZG9kZ2VyYmx1ZTpbMzAsMTQ0LDI1NV0sZmlyZWJyaWNrOlsxNzgsMzQsMzRdLGZsb3JhbHdoaXRlOlsyNTUsMjUwLDI0MF0sZm9yZXN0Z3JlZW46WzM0LDEzOSwzNF0sZnVjaHNpYTpbMjU1LDAsMjU1XSxnYWluc2Jvcm86WzIyMCwyMjAsMjIwXSxnaG9zdHdoaXRlOlsyNDgsMjQ4LDI1NV0sZ29sZDpbMjU1LDIxNSwwXSxnb2xkZW5yb2Q6WzIxOCwxNjUsMzJdLGdyYXk6WzEyOCwxMjgsMTI4XSxncmVlbjpbMCwxMjgsMF0sZ3JlZW55ZWxsb3c6WzE3MywyNTUsNDddLGdyZXk6WzEyOCwxMjgsMTI4XSxob25leWRldzpbMjQwLDI1NSwyNDBdLGhvdHBpbms6WzI1NSwxMDUsMTgwXSxpbmRpYW5yZWQ6WzIwNSw5Miw5Ml0saW5kaWdvOls3NSwwLDEzMF0saXZvcnk6WzI1NSwyNTUsMjQwXSxraGFraTpbMjQwLDIzMCwxNDBdLGxhdmVuZGVyOlsyMzAsMjMwLDI1MF0sbGF2ZW5kZXJibHVzaDpbMjU1LDI0MCwyNDVdLGxhd25ncmVlbjpbMTI0LDI1MiwwXSxsZW1vbmNoaWZmb246WzI1NSwyNTAsMjA1XSxsaWdodGJsdWU6WzE3MywyMTYsMjMwXSxsaWdodGNvcmFsOlsyNDAsMTI4LDEyOF0sbGlnaHRjeWFuOlsyMjQsMjU1LDI1NV0sbGlnaHRnb2xkZW5yb2R5ZWxsb3c6WzI1MCwyNTAsMjEwXSxsaWdodGdyYXk6WzIxMSwyMTEsMjExXSxsaWdodGdyZWVuOlsxNDQsMjM4LDE0NF0sbGlnaHRncmV5OlsyMTEsMjExLDIxMV0sbGlnaHRwaW5rOlsyNTUsMTgyLDE5M10sbGlnaHRzYWxtb246WzI1NSwxNjAsMTIyXSxsaWdodHNlYWdyZWVuOlszMiwxNzgsMTcwXSxsaWdodHNreWJsdWU6WzEzNSwyMDYsMjUwXSxsaWdodHNsYXRlZ3JheTpbMTE5LDEzNiwxNTNdLGxpZ2h0c2xhdGVncmV5OlsxMTksMTM2LDE1M10sbGlnaHRzdGVlbGJsdWU6WzE3NiwxOTYsMjIyXSxsaWdodHllbGxvdzpbMjU1LDI1NSwyMjRdLGxpbWU6WzAsMjU1LDBdLGxpbWVncmVlbjpbNTAsMjA1LDUwXSxsaW5lbjpbMjUwLDI0MCwyMzBdLG1hZ2VudGE6WzI1NSwwLDI1NV0sbWFyb29uOlsxMjgsMCwwXSxtZWRpdW1hcXVhbWFyaW5lOlsxMDIsMjA1LDE3MF0sbWVkaXVtYmx1ZTpbMCwwLDIwNV0sbWVkaXVtb3JjaGlkOlsxODYsODUsMjExXSxtZWRpdW1wdXJwbGU6WzE0NywxMTIsMjE5XSxtZWRpdW1zZWFncmVlbjpbNjAsMTc5LDExM10sbWVkaXVtc2xhdGVibHVlOlsxMjMsMTA0LDIzOF0sbWVkaXVtc3ByaW5nZ3JlZW46WzAsMjUwLDE1NF0sbWVkaXVtdHVycXVvaXNlOls3MiwyMDksMjA0XSxtZWRpdW12aW9sZXRyZWQ6WzE5OSwyMSwxMzNdLG1pZG5pZ2h0Ymx1ZTpbMjUsMjUsMTEyXSxtaW50Y3JlYW06WzI0NSwyNTUsMjUwXSxtaXN0eXJvc2U6WzI1NSwyMjgsMjI1XSxtb2NjYXNpbjpbMjU1LDIyOCwxODFdLG5hdmFqb3doaXRlOlsyNTUsMjIyLDE3M10sbmF2eTpbMCwwLDEyOF0sb2xkbGFjZTpbMjUzLDI0NSwyMzBdLG9saXZlOlsxMjgsMTI4LDBdLG9saXZlZHJhYjpbMTA3LDE0MiwzNV0sb3JhbmdlOlsyNTUsMTY1LDBdLG9yYW5nZXJlZDpbMjU1LDY5LDBdLG9yY2hpZDpbMjE4LDExMiwyMTRdLHBhbGVnb2xkZW5yb2Q6WzIzOCwyMzIsMTcwXSxwYWxlZ3JlZW46WzE1MiwyNTEsMTUyXSxwYWxldHVycXVvaXNlOlsxNzUsMjM4LDIzOF0scGFsZXZpb2xldHJlZDpbMjE5LDExMiwxNDddLHBhcGF5YXdoaXA6WzI1NSwyMzksMjEzXSxwZWFjaHB1ZmY6WzI1NSwyMTgsMTg1XSxwZXJ1OlsyMDUsMTMzLDYzXSxwaW5rOlsyNTUsMTkyLDIwM10scGx1bTpbMjIxLDE2MCwyMjFdLHBvd2RlcmJsdWU6WzE3NiwyMjQsMjMwXSxwdXJwbGU6WzEyOCwwLDEyOF0scmViZWNjYXB1cnBsZTpbMTAyLDUxLDE1M10scmVkOlsyNTUsMCwwXSxyb3N5YnJvd246WzE4OCwxNDMsMTQzXSxyb3lhbGJsdWU6WzY1LDEwNSwyMjVdLHNhZGRsZWJyb3duOlsxMzksNjksMTldLHNhbG1vbjpbMjUwLDEyOCwxMTRdLHNhbmR5YnJvd246WzI0NCwxNjQsOTZdLHNlYWdyZWVuOls0NiwxMzksODddLHNlYXNoZWxsOlsyNTUsMjQ1LDIzOF0sc2llbm5hOlsxNjAsODIsNDVdLHNpbHZlcjpbMTkyLDE5MiwxOTJdLHNreWJsdWU6WzEzNSwyMDYsMjM1XSxzbGF0ZWJsdWU6WzEwNiw5MCwyMDVdLHNsYXRlZ3JheTpbMTEyLDEyOCwxNDRdLHNsYXRlZ3JleTpbMTEyLDEyOCwxNDRdLHNub3c6WzI1NSwyNTAsMjUwXSxzcHJpbmdncmVlbjpbMCwyNTUsMTI3XSxzdGVlbGJsdWU6WzcwLDEzMCwxODBdLHRhbjpbMjEwLDE4MCwxNDBdLHRlYWw6WzAsMTI4LDEyOF0sdGhpc3RsZTpbMjE2LDE5MSwyMTZdLHRvbWF0bzpbMjU1LDk5LDcxXSx0dXJxdW9pc2U6WzY0LDIyNCwyMDhdLHZpb2xldDpbMjM4LDEzMCwyMzhdLHdoZWF0OlsyNDUsMjIyLDE3OV0sd2hpdGU6WzI1NSwyNTUsMjU1XSx3aGl0ZXNtb2tlOlsyNDUsMjQ1LDI0NV0seWVsbG93OlsyNTUsMjU1LDBdLHllbGxvd2dyZWVuOlsxNTQsMjA1LDUwXX0sWD17fTtmb3IodmFyIFogaW4gWSlYW0pTT04uc3RyaW5naWZ5KFlbWl0pXT1afSx7fV0sNTpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoNCksaT1mdW5jdGlvbigpe3JldHVybiBuZXcgbH07Zm9yKHZhciBhIGluIHIpe2lbYSsiUmF3Il09ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmKHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkscltlXSh0KX19KGEpO3ZhciBvPS8oXHcrKTIoXHcrKS8uZXhlYyhhKSxzPW9bMV0sYz1vWzJdO2lbc109aVtzXXx8e30saVtzXVtjXT1pW2FdPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXsibnVtYmVyIj09dHlwZW9mIHQmJih0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO3ZhciBuPXJbZV0odCk7aWYoInN0cmluZyI9PXR5cGVvZiBufHx2b2lkIDA9PT1uKXJldHVybiBuO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKW5baV09TWF0aC5yb3VuZChuW2ldKTtyZXR1cm4gbn19KGEpfXZhciBsPWZ1bmN0aW9uKCl7dGhpcy5jb252cz17fX07bC5wcm90b3R5cGUucm91dGVTcGFjZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRbMF07cmV0dXJuIHZvaWQgMD09PW4/dGhpcy5nZXRWYWx1ZXMoZSk6KCJudW1iZXIiPT10eXBlb2YgbiYmKG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpLHRoaXMuc2V0VmFsdWVzKGUsbikpfSxsLnByb3RvdHlwZS5zZXRWYWx1ZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zcGFjZT1lLHRoaXMuY29udnM9e30sdGhpcy5jb252c1tlXT10LHRoaXN9LGwucHJvdG90eXBlLmdldFZhbHVlcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbnZzW2VdO2lmKCF0KXt2YXIgbj10aGlzLnNwYWNlLHI9dGhpcy5jb252c1tuXTt0PWlbbl1bZV0ociksdGhpcy5jb252c1tlXT10fXJldHVybiB0fSxbInJnYiIsImhzbCIsImhzdiIsImNteWsiLCJrZXl3b3JkIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7bC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucm91dGVTcGFjZShlLGFyZ3VtZW50cyl9fSkpLHQuZXhwb3J0cz1pfSx7NDo0fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9e2FsaWNlYmx1ZTpbMjQwLDI0OCwyNTVdLGFudGlxdWV3aGl0ZTpbMjUwLDIzNSwyMTVdLGFxdWE6WzAsMjU1LDI1NV0sYXF1YW1hcmluZTpbMTI3LDI1NSwyMTJdLGF6dXJlOlsyNDAsMjU1LDI1NV0sYmVpZ2U6WzI0NSwyNDUsMjIwXSxiaXNxdWU6WzI1NSwyMjgsMTk2XSxibGFjazpbMCwwLDBdLGJsYW5jaGVkYWxtb25kOlsyNTUsMjM1LDIwNV0sYmx1ZTpbMCwwLDI1NV0sYmx1ZXZpb2xldDpbMTM4LDQzLDIyNl0sYnJvd246WzE2NSw0Miw0Ml0sYnVybHl3b29kOlsyMjIsMTg0LDEzNV0sY2FkZXRibHVlOls5NSwxNTgsMTYwXSxjaGFydHJldXNlOlsxMjcsMjU1LDBdLGNob2NvbGF0ZTpbMjEwLDEwNSwzMF0sY29yYWw6WzI1NSwxMjcsODBdLGNvcm5mbG93ZXJibHVlOlsxMDAsMTQ5LDIzN10sY29ybnNpbGs6WzI1NSwyNDgsMjIwXSxjcmltc29uOlsyMjAsMjAsNjBdLGN5YW46WzAsMjU1LDI1NV0sZGFya2JsdWU6WzAsMCwxMzldLGRhcmtjeWFuOlswLDEzOSwxMzldLGRhcmtnb2xkZW5yb2Q6WzE4NCwxMzQsMTFdLGRhcmtncmF5OlsxNjksMTY5LDE2OV0sZGFya2dyZWVuOlswLDEwMCwwXSxkYXJrZ3JleTpbMTY5LDE2OSwxNjldLGRhcmtraGFraTpbMTg5LDE4MywxMDddLGRhcmttYWdlbnRhOlsxMzksMCwxMzldLGRhcmtvbGl2ZWdyZWVuOls4NSwxMDcsNDddLGRhcmtvcmFuZ2U6WzI1NSwxNDAsMF0sZGFya29yY2hpZDpbMTUzLDUwLDIwNF0sZGFya3JlZDpbMTM5LDAsMF0sZGFya3NhbG1vbjpbMjMzLDE1MCwxMjJdLGRhcmtzZWFncmVlbjpbMTQzLDE4OCwxNDNdLGRhcmtzbGF0ZWJsdWU6WzcyLDYxLDEzOV0sZGFya3NsYXRlZ3JheTpbNDcsNzksNzldLGRhcmtzbGF0ZWdyZXk6WzQ3LDc5LDc5XSxkYXJrdHVycXVvaXNlOlswLDIwNiwyMDldLGRhcmt2aW9sZXQ6WzE0OCwwLDIxMV0sZGVlcHBpbms6WzI1NSwyMCwxNDddLGRlZXBza3libHVlOlswLDE5MSwyNTVdLGRpbWdyYXk6WzEwNSwxMDUsMTA1XSxkaW1ncmV5OlsxMDUsMTA1LDEwNV0sZG9kZ2VyYmx1ZTpbMzAsMTQ0LDI1NV0sZmlyZWJyaWNrOlsxNzgsMzQsMzRdLGZsb3JhbHdoaXRlOlsyNTUsMjUwLDI0MF0sZm9yZXN0Z3JlZW46WzM0LDEzOSwzNF0sZnVjaHNpYTpbMjU1LDAsMjU1XSxnYWluc2Jvcm86WzIyMCwyMjAsMjIwXSxnaG9zdHdoaXRlOlsyNDgsMjQ4LDI1NV0sZ29sZDpbMjU1LDIxNSwwXSxnb2xkZW5yb2Q6WzIxOCwxNjUsMzJdLGdyYXk6WzEyOCwxMjgsMTI4XSxncmVlbjpbMCwxMjgsMF0sZ3JlZW55ZWxsb3c6WzE3MywyNTUsNDddLGdyZXk6WzEyOCwxMjgsMTI4XSxob25leWRldzpbMjQwLDI1NSwyNDBdLGhvdHBpbms6WzI1NSwxMDUsMTgwXSxpbmRpYW5yZWQ6WzIwNSw5Miw5Ml0saW5kaWdvOls3NSwwLDEzMF0saXZvcnk6WzI1NSwyNTUsMjQwXSxraGFraTpbMjQwLDIzMCwxNDBdLGxhdmVuZGVyOlsyMzAsMjMwLDI1MF0sbGF2ZW5kZXJibHVzaDpbMjU1LDI0MCwyNDVdLGxhd25ncmVlbjpbMTI0LDI1MiwwXSxsZW1vbmNoaWZmb246WzI1NSwyNTAsMjA1XSxsaWdodGJsdWU6WzE3MywyMTYsMjMwXSxsaWdodGNvcmFsOlsyNDAsMTI4LDEyOF0sbGlnaHRjeWFuOlsyMjQsMjU1LDI1NV0sbGlnaHRnb2xkZW5yb2R5ZWxsb3c6WzI1MCwyNTAsMjEwXSxsaWdodGdyYXk6WzIxMSwyMTEsMjExXSxsaWdodGdyZWVuOlsxNDQsMjM4LDE0NF0sbGlnaHRncmV5OlsyMTEsMjExLDIxMV0sbGlnaHRwaW5rOlsyNTUsMTgyLDE5M10sbGlnaHRzYWxtb246WzI1NSwxNjAsMTIyXSxsaWdodHNlYWdyZWVuOlszMiwxNzgsMTcwXSxsaWdodHNreWJsdWU6WzEzNSwyMDYsMjUwXSxsaWdodHNsYXRlZ3JheTpbMTE5LDEzNiwxNTNdLGxpZ2h0c2xhdGVncmV5OlsxMTksMTM2LDE1M10sbGlnaHRzdGVlbGJsdWU6WzE3NiwxOTYsMjIyXSxsaWdodHllbGxvdzpbMjU1LDI1NSwyMjRdLGxpbWU6WzAsMjU1LDBdLGxpbWVncmVlbjpbNTAsMjA1LDUwXSxsaW5lbjpbMjUwLDI0MCwyMzBdLG1hZ2VudGE6WzI1NSwwLDI1NV0sbWFyb29uOlsxMjgsMCwwXSxtZWRpdW1hcXVhbWFyaW5lOlsxMDIsMjA1LDE3MF0sbWVkaXVtYmx1ZTpbMCwwLDIwNV0sbWVkaXVtb3JjaGlkOlsxODYsODUsMjExXSxtZWRpdW1wdXJwbGU6WzE0NywxMTIsMjE5XSxtZWRpdW1zZWFncmVlbjpbNjAsMTc5LDExM10sbWVkaXVtc2xhdGVibHVlOlsxMjMsMTA0LDIzOF0sbWVkaXVtc3ByaW5nZ3JlZW46WzAsMjUwLDE1NF0sbWVkaXVtdHVycXVvaXNlOls3MiwyMDksMjA0XSxtZWRpdW12aW9sZXRyZWQ6WzE5OSwyMSwxMzNdLG1pZG5pZ2h0Ymx1ZTpbMjUsMjUsMTEyXSxtaW50Y3JlYW06WzI0NSwyNTUsMjUwXSxtaXN0eXJvc2U6WzI1NSwyMjgsMjI1XSxtb2NjYXNpbjpbMjU1LDIyOCwxODFdLG5hdmFqb3doaXRlOlsyNTUsMjIyLDE3M10sbmF2eTpbMCwwLDEyOF0sb2xkbGFjZTpbMjUzLDI0NSwyMzBdLG9saXZlOlsxMjgsMTI4LDBdLG9saXZlZHJhYjpbMTA3LDE0MiwzNV0sb3JhbmdlOlsyNTUsMTY1LDBdLG9yYW5nZXJlZDpbMjU1LDY5LDBdLG9yY2hpZDpbMjE4LDExMiwyMTRdLHBhbGVnb2xkZW5yb2Q6WzIzOCwyMzIsMTcwXSxwYWxlZ3JlZW46WzE1MiwyNTEsMTUyXSxwYWxldHVycXVvaXNlOlsxNzUsMjM4LDIzOF0scGFsZXZpb2xldHJlZDpbMjE5LDExMiwxNDddLHBhcGF5YXdoaXA6WzI1NSwyMzksMjEzXSxwZWFjaHB1ZmY6WzI1NSwyMTgsMTg1XSxwZXJ1OlsyMDUsMTMzLDYzXSxwaW5rOlsyNTUsMTkyLDIwM10scGx1bTpbMjIxLDE2MCwyMjFdLHBvd2RlcmJsdWU6WzE3NiwyMjQsMjMwXSxwdXJwbGU6WzEyOCwwLDEyOF0scmViZWNjYXB1cnBsZTpbMTAyLDUxLDE1M10scmVkOlsyNTUsMCwwXSxyb3N5YnJvd246WzE4OCwxNDMsMTQzXSxyb3lhbGJsdWU6WzY1LDEwNSwyMjVdLHNhZGRsZWJyb3duOlsxMzksNjksMTldLHNhbG1vbjpbMjUwLDEyOCwxMTRdLHNhbmR5YnJvd246WzI0NCwxNjQsOTZdLHNlYWdyZWVuOls0NiwxMzksODddLHNlYXNoZWxsOlsyNTUsMjQ1LDIzOF0sc2llbm5hOlsxNjAsODIsNDVdLHNpbHZlcjpbMTkyLDE5MiwxOTJdLHNreWJsdWU6WzEzNSwyMDYsMjM1XSxzbGF0ZWJsdWU6WzEwNiw5MCwyMDVdLHNsYXRlZ3JheTpbMTEyLDEyOCwxNDRdLHNsYXRlZ3JleTpbMTEyLDEyOCwxNDRdLHNub3c6WzI1NSwyNTAsMjUwXSxzcHJpbmdncmVlbjpbMCwyNTUsMTI3XSxzdGVlbGJsdWU6WzcwLDEzMCwxODBdLHRhbjpbMjEwLDE4MCwxNDBdLHRlYWw6WzAsMTI4LDEyOF0sdGhpc3RsZTpbMjE2LDE5MSwyMTZdLHRvbWF0bzpbMjU1LDk5LDcxXSx0dXJxdW9pc2U6WzY0LDIyNCwyMDhdLHZpb2xldDpbMjM4LDEzMCwyMzhdLHdoZWF0OlsyNDUsMjIyLDE3OV0sd2hpdGU6WzI1NSwyNTUsMjU1XSx3aGl0ZXNtb2tlOlsyNDUsMjQ1LDI0NV0seWVsbG93OlsyNTUsMjU1LDBdLHllbGxvd2dyZWVuOlsxNTQsMjA1LDUwXX19LHt9XSw3OltmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgzMCkoKTtyLmhlbHBlcnM9ZSg0NiksZSgyOCkociksci5BbmltYXRpb249ZSgyMiksci5hbmltYXRpb25TZXJ2aWNlPWUoMjMpLHIuZGVmYXVsdHM9ZSgyNiksci5FbGVtZW50PWUoMjcpLHIuZWxlbWVudHM9ZSg0MSksci5JbnRlcmFjdGlvbj1lKDI5KSxyLmxheW91dHM9ZSgzMSksci5wbGF0Zm9ybT1lKDQ5KSxyLnBsdWdpbnM9ZSgzMiksci5TY2FsZT1lKDMzKSxyLnNjYWxlU2VydmljZT1lKDM0KSxyLlRpY2tzPWUoMzUpLHIuVG9vbHRpcD1lKDM2KSxlKDI0KShyKSxlKDI1KShyKSxlKDU2KShyKSxlKDU0KShyKSxlKDU1KShyKSxlKDU3KShyKSxlKDU4KShyKSxlKDU5KShyKSxlKDE1KShyKSxlKDE2KShyKSxlKDE3KShyKSxlKDE4KShyKSxlKDE5KShyKSxlKDIwKShyKSxlKDIxKShyKSxlKDgpKHIpLGUoOSkociksZSgxMCkociksZSgxMSkociksZSgxMikociksZSgxMykociksZSgxNCkocik7dmFyIGk9ZSg1MCk7Zm9yKHZhciBhIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShhKSYmci5wbHVnaW5zLnJlZ2lzdGVyKGlbYV0pO3IucGxhdGZvcm0uaW5pdGlhbGl6ZSgpLHQuZXhwb3J0cz1yLCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5DaGFydD1yKSxyLkxlZ2VuZD1pLmxlZ2VuZC5fZWxlbWVudCxyLlRpdGxlPWkudGl0bGUuX2VsZW1lbnQsci5wbHVnaW5TZXJ2aWNlPXIucGx1Z2lucyxyLlBsdWdpbkJhc2U9ci5FbGVtZW50LmV4dGVuZCh7fSksci5jYW52YXNIZWxwZXJzPXIuaGVscGVycy5jYW52YXMsci5sYXlvdXRTZXJ2aWNlPXIubGF5b3V0c30sezEwOjEwLDExOjExLDEyOjEyLDEzOjEzLDE0OjE0LDE1OjE1LDE2OjE2LDE3OjE3LDE4OjE4LDE5OjE5LDIwOjIwLDIxOjIxLDIyOjIyLDIzOjIzLDI0OjI0LDI1OjI1LDI2OjI2LDI3OjI3LDI4OjI4LDI5OjI5LDMwOjMwLDMxOjMxLDMyOjMyLDMzOjMzLDM0OjM0LDM1OjM1LDM2OjM2LDQxOjQxLDQ2OjQ2LDQ5OjQ5LDUwOjUwLDU0OjU0LDU1OjU1LDU2OjU2LDU3OjU3LDU4OjU4LDU5OjU5LDg6OCw5Ojl9XSw4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLkJhcj1mdW5jdGlvbih0LG4pe3JldHVybiBuLnR5cGU9ImJhciIsbmV3IGUodCxuKX19fSx7fV0sOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5CdWJibGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbi50eXBlPSJidWJibGUiLG5ldyBlKHQsbil9fX0se31dLDEwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLkRvdWdobnV0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIG4udHlwZT0iZG91Z2hudXQiLG5ldyBlKHQsbil9fX0se31dLDExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLkxpbmU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbi50eXBlPSJsaW5lIixuZXcgZSh0LG4pfX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5Qb2xhckFyZWE9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbi50eXBlPSJwb2xhckFyZWEiLG5ldyBlKHQsbil9fX0se31dLDEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLlJhZGFyPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG4udHlwZT0icmFkYXIiLG5ldyBlKHQsbil9fX0se31dLDE0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLlNjYXR0ZXI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbi50eXBlPSJzY2F0dGVyIixuZXcgZSh0LG4pfX19LHt9XSwxNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDI2KSxpPWUoNDEpLGE9ZSg0Nik7ZnVuY3Rpb24gbyhlLHQpe3ZhciBuLHIsaSxhLG89ZS5pc0hvcml6b250YWwoKT9lLndpZHRoOmUuaGVpZ2h0LHM9ZS5nZXRUaWNrcygpO2ZvcihpPTEsYT10Lmxlbmd0aDtpPGE7KytpKW89TWF0aC5taW4obyx0W2ldLXRbaS0xXSk7Zm9yKGk9MCxhPXMubGVuZ3RoO2k8YTsrK2kpcj1lLmdldFBpeGVsRm9yVGljayhpKSxvPWk+MD9NYXRoLm1pbihvLHItbik6byxuPXI7cmV0dXJuIG99ZnVuY3Rpb24gcyhlLHQsbil7dmFyIHIsaSxvPW4uYmFyVGhpY2tuZXNzLHM9dC5zdGFja0NvdW50LGM9dC5waXhlbHNbZV07cmV0dXJuIGEuaXNOdWxsT3JVbmRlZihvKT8ocj10Lm1pbipuLmNhdGVnb3J5UGVyY2VudGFnZSxpPW4uYmFyUGVyY2VudGFnZSk6KHI9bypzLGk9MSkse2NodW5rOnIvcyxyYXRpbzppLHN0YXJ0OmMtci8yfX1mdW5jdGlvbiBjKGUsdCxuKXt2YXIgcixpLGE9dC5waXhlbHMsbz1hW2VdLHM9ZT4wP2FbZS0xXTpudWxsLGM9ZTxhLmxlbmd0aC0xP2FbZSsxXTpudWxsLGw9bi5jYXRlZ29yeVBlcmNlbnRhZ2U7cmV0dXJuIG51bGw9PT1zJiYocz1vLShudWxsPT09Yz90LmVuZC1vOmMtbykpLG51bGw9PT1jJiYoYz1vK28tcykscj1vLShvLXMpLzIqbCxpPShjLXMpLzIqbCx7Y2h1bms6aS90LnN0YWNrQ291bnQscmF0aW86bi5iYXJQZXJjZW50YWdlLHN0YXJ0OnJ9fXIuX3NldCgiYmFyIix7aG92ZXI6e21vZGU6ImxhYmVsIn0sc2NhbGVzOnt4QXhlczpbe3R5cGU6ImNhdGVnb3J5IixjYXRlZ29yeVBlcmNlbnRhZ2U6LjgsYmFyUGVyY2VudGFnZTouOSxvZmZzZXQ6ITAsZ3JpZExpbmVzOntvZmZzZXRHcmlkTGluZXM6ITB9fV0seUF4ZXM6W3t0eXBlOiJsaW5lYXIifV19fSksci5fc2V0KCJob3Jpem9udGFsQmFyIix7aG92ZXI6e21vZGU6ImluZGV4IixheGlzOiJ5In0sc2NhbGVzOnt4QXhlczpbe3R5cGU6ImxpbmVhciIscG9zaXRpb246ImJvdHRvbSJ9XSx5QXhlczpbe3Bvc2l0aW9uOiJsZWZ0Iix0eXBlOiJjYXRlZ29yeSIsY2F0ZWdvcnlQZXJjZW50YWdlOi44LGJhclBlcmNlbnRhZ2U6Ljksb2Zmc2V0OiEwLGdyaWRMaW5lczp7b2Zmc2V0R3JpZExpbmVzOiEwfX1dfSxlbGVtZW50czp7cmVjdGFuZ2xlOntib3JkZXJTa2lwcGVkOiJsZWZ0In19LHRvb2x0aXBzOntjYWxsYmFja3M6e3RpdGxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49IiI7cmV0dXJuIGUubGVuZ3RoPjAmJihlWzBdLnlMYWJlbD9uPWVbMF0ueUxhYmVsOnQubGFiZWxzLmxlbmd0aD4wJiZlWzBdLmluZGV4PHQubGFiZWxzLmxlbmd0aCYmKG49dC5sYWJlbHNbZVswXS5pbmRleF0pKSxufSxsYWJlbDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGF0YXNldHNbZS5kYXRhc2V0SW5kZXhdLmxhYmVsfHwiIjtyZXR1cm4gbisiOiAiK2UueExhYmVsfX0sbW9kZToiaW5kZXgiLGF4aXM6InkifX0pLHQuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNvbnRyb2xsZXJzLmJhcj1lLkRhdGFzZXRDb250cm9sbGVyLmV4dGVuZCh7ZGF0YUVsZW1lbnRUeXBlOmkuUmVjdGFuZ2xlLGluaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgdCxuPXRoaXM7ZS5EYXRhc2V0Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseShuLGFyZ3VtZW50cyksdD1uLmdldE1ldGEoKSx0LnN0YWNrPW4uZ2V0RGF0YXNldCgpLnN0YWNrLHQuYmFyPSEwfSx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPXRoaXMsaT1yLmdldE1ldGEoKS5kYXRhO2ZvcihyLl9ydWxlcj1yLmdldFJ1bGVyKCksdD0wLG49aS5sZW5ndGg7dDxuOysrdClyLnVwZGF0ZUVsZW1lbnQoaVt0XSx0LGUpfSx1cGRhdGVFbGVtZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLGk9ci5jaGFydCxvPXIuZ2V0TWV0YSgpLHM9ci5nZXREYXRhc2V0KCksYz1lLmN1c3RvbXx8e30sbD1pLm9wdGlvbnMuZWxlbWVudHMucmVjdGFuZ2xlO2UuX3hTY2FsZT1yLmdldFNjYWxlRm9ySWQoby54QXhpc0lEKSxlLl95U2NhbGU9ci5nZXRTY2FsZUZvcklkKG8ueUF4aXNJRCksZS5fZGF0YXNldEluZGV4PXIuaW5kZXgsZS5faW5kZXg9dCxlLl9tb2RlbD17ZGF0YXNldExhYmVsOnMubGFiZWwsbGFiZWw6aS5kYXRhLmxhYmVsc1t0XSxib3JkZXJTa2lwcGVkOmMuYm9yZGVyU2tpcHBlZD9jLmJvcmRlclNraXBwZWQ6bC5ib3JkZXJTa2lwcGVkLGJhY2tncm91bmRDb2xvcjpjLmJhY2tncm91bmRDb2xvcj9jLmJhY2tncm91bmRDb2xvcjphLnZhbHVlQXRJbmRleE9yRGVmYXVsdChzLmJhY2tncm91bmRDb2xvcix0LGwuYmFja2dyb3VuZENvbG9yKSxib3JkZXJDb2xvcjpjLmJvcmRlckNvbG9yP2MuYm9yZGVyQ29sb3I6YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQocy5ib3JkZXJDb2xvcix0LGwuYm9yZGVyQ29sb3IpLGJvcmRlcldpZHRoOmMuYm9yZGVyV2lkdGg/Yy5ib3JkZXJXaWR0aDphLnZhbHVlQXRJbmRleE9yRGVmYXVsdChzLmJvcmRlcldpZHRoLHQsbC5ib3JkZXJXaWR0aCl9LHIudXBkYXRlRWxlbWVudEdlb21ldHJ5KGUsdCxuKSxlLnBpdm90KCl9LHVwZGF0ZUVsZW1lbnRHZW9tZXRyeTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxpPWUuX21vZGVsLGE9ci5nZXRWYWx1ZVNjYWxlKCksbz1hLmdldEJhc2VQaXhlbCgpLHM9YS5pc0hvcml6b250YWwoKSxjPXIuX3J1bGVyfHxyLmdldFJ1bGVyKCksbD1yLmNhbGN1bGF0ZUJhclZhbHVlUGl4ZWxzKHIuaW5kZXgsdCksdT1yLmNhbGN1bGF0ZUJhckluZGV4UGl4ZWxzKHIuaW5kZXgsdCxjKTtpLmhvcml6b250YWw9cyxpLmJhc2U9bj9vOmwuYmFzZSxpLng9cz9uP286bC5oZWFkOnUuY2VudGVyLGkueT1zP3UuY2VudGVyOm4/bzpsLmhlYWQsaS5oZWlnaHQ9cz91LnNpemU6dm9pZCAwLGkud2lkdGg9cz92b2lkIDA6dS5zaXplfSxnZXRWYWx1ZVNjYWxlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRNZXRhKCkueUF4aXNJRH0sZ2V0SW5kZXhTY2FsZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TWV0YSgpLnhBeGlzSUR9LGdldFZhbHVlU2NhbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRTY2FsZUZvcklkKHRoaXMuZ2V0VmFsdWVTY2FsZUlkKCkpfSxnZXRJbmRleFNjYWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0U2NhbGVGb3JJZCh0aGlzLmdldEluZGV4U2NhbGVJZCgpKX0sX2dldFN0YWNrczpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcyxpPXIuY2hhcnQsYT1yLmdldEluZGV4U2NhbGUoKSxvPWEub3B0aW9ucy5zdGFja2VkLHM9dm9pZCAwPT09ZT9pLmRhdGEuZGF0YXNldHMubGVuZ3RoOmUrMSxjPVtdO2Zvcih0PTA7dDxzOysrdCluPWkuZ2V0RGF0YXNldE1ldGEodCksbi5iYXImJmkuaXNEYXRhc2V0VmlzaWJsZSh0KSYmKCExPT09b3x8ITA9PT1vJiYtMT09PWMuaW5kZXhPZihuLnN0YWNrKXx8dm9pZCAwPT09byYmKHZvaWQgMD09PW4uc3RhY2t8fC0xPT09Yy5pbmRleE9mKG4uc3RhY2spKSkmJmMucHVzaChuLnN0YWNrKTtyZXR1cm4gY30sZ2V0U3RhY2tDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRTdGFja3MoKS5sZW5ndGh9LGdldFN0YWNrSW5kZXg6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9nZXRTdGFja3MoZSkscj12b2lkIDAhPT10P24uaW5kZXhPZih0KTotMTtyZXR1cm4tMT09PXI/bi5sZW5ndGgtMTpyfSxnZXRSdWxlcjpmdW5jdGlvbigpe3ZhciBlLHQsbixyPXRoaXMsaT1yLmdldEluZGV4U2NhbGUoKSxzPXIuZ2V0U3RhY2tDb3VudCgpLGM9ci5pbmRleCxsPWkuaXNIb3Jpem9udGFsKCksdT1sP2kubGVmdDppLnRvcCxkPXUrKGw/aS53aWR0aDppLmhlaWdodCkscD1bXTtmb3IoZT0wLHQ9ci5nZXRNZXRhKCkuZGF0YS5sZW5ndGg7ZTx0OysrZSlwLnB1c2goaS5nZXRQaXhlbEZvclZhbHVlKG51bGwsZSxjKSk7cmV0dXJuIG49YS5pc051bGxPclVuZGVmKGkub3B0aW9ucy5iYXJUaGlja25lc3MpP28oaSxwKTotMSx7bWluOm4scGl4ZWxzOnAsc3RhcnQ6dSxlbmQ6ZCxzdGFja0NvdW50OnMsc2NhbGU6aX19LGNhbGN1bGF0ZUJhclZhbHVlUGl4ZWxzOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLGEsbyxzLGM9dGhpcyxsPWMuY2hhcnQsdT1jLmdldE1ldGEoKSxkPWMuZ2V0VmFsdWVTY2FsZSgpLHA9bC5kYXRhLmRhdGFzZXRzLGY9ZC5nZXRSaWdodFZhbHVlKHBbZV0uZGF0YVt0XSksaD1kLm9wdGlvbnMuc3RhY2tlZCxtPXUuc3RhY2ssXz0wO2lmKGh8fHZvaWQgMD09PWgmJnZvaWQgMCE9PW0pZm9yKG49MDtuPGU7KytuKXI9bC5nZXREYXRhc2V0TWV0YShuKSxyLmJhciYmci5zdGFjaz09PW0mJnIuY29udHJvbGxlci5nZXRWYWx1ZVNjYWxlSWQoKT09PWQuaWQmJmwuaXNEYXRhc2V0VmlzaWJsZShuKSYmKGk9ZC5nZXRSaWdodFZhbHVlKHBbbl0uZGF0YVt0XSksKGY8MCYmaTwwfHxmPj0wJiZpPjApJiYoXys9aSkpO3JldHVybiBhPWQuZ2V0UGl4ZWxGb3JWYWx1ZShfKSxvPWQuZ2V0UGl4ZWxGb3JWYWx1ZShfK2YpLHM9KG8tYSkvMix7c2l6ZTpzLGJhc2U6YSxoZWFkOm8sY2VudGVyOm8rcy8yfX0sY2FsY3VsYXRlQmFySW5kZXhQaXhlbHM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsaT1uLnNjYWxlLm9wdGlvbnMsbz0iZmxleCI9PT1pLmJhclRoaWNrbmVzcz9jKHQsbixpKTpzKHQsbixpKSxsPXIuZ2V0U3RhY2tJbmRleChlLHIuZ2V0TWV0YSgpLnN0YWNrKSx1PW8uc3RhcnQrby5jaHVuaypsK28uY2h1bmsvMixkPU1hdGgubWluKGEudmFsdWVPckRlZmF1bHQoaS5tYXhCYXJUaGlja25lc3MsMS8wKSxvLmNodW5rKm8ucmF0aW8pO3JldHVybntiYXNlOnUtZC8yLGhlYWQ6dStkLzIsY2VudGVyOnUsc2l6ZTpkfX0sZHJhdzpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmNoYXJ0LG49ZS5nZXRWYWx1ZVNjYWxlKCkscj1lLmdldE1ldGEoKS5kYXRhLGk9ZS5nZXREYXRhc2V0KCksbz1yLmxlbmd0aCxzPTA7Zm9yKGEuY2FudmFzLmNsaXBBcmVhKHQuY3R4LHQuY2hhcnRBcmVhKTtzPG87KytzKWlzTmFOKG4uZ2V0UmlnaHRWYWx1ZShpLmRhdGFbc10pKXx8cltzXS5kcmF3KCk7YS5jYW52YXMudW5jbGlwQXJlYSh0LmN0eCl9fSksZS5jb250cm9sbGVycy5ob3Jpem9udGFsQmFyPWUuY29udHJvbGxlcnMuYmFyLmV4dGVuZCh7Z2V0VmFsdWVTY2FsZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TWV0YSgpLnhBeGlzSUR9LGdldEluZGV4U2NhbGVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1ldGEoKS55QXhpc0lEfX0pfX0sezI2OjI2LDQxOjQxLDQ2OjQ2fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyNiksaT1lKDQxKSxhPWUoNDYpO3IuX3NldCgiYnViYmxlIix7aG92ZXI6e21vZGU6InNpbmdsZSJ9LHNjYWxlczp7eEF4ZXM6W3t0eXBlOiJsaW5lYXIiLHBvc2l0aW9uOiJib3R0b20iLGlkOiJ4LWF4aXMtMCJ9XSx5QXhlczpbe3R5cGU6ImxpbmVhciIscG9zaXRpb246ImxlZnQiLGlkOiJ5LWF4aXMtMCJ9XX0sdG9vbHRpcHM6e2NhbGxiYWNrczp7dGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sbGFiZWw6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRhdGFzZXRzW2UuZGF0YXNldEluZGV4XS5sYWJlbHx8IiIscj10LmRhdGFzZXRzW2UuZGF0YXNldEluZGV4XS5kYXRhW2UuaW5kZXhdO3JldHVybiBuKyI6ICgiK2UueExhYmVsKyIsICIrZS55TGFiZWwrIiwgIityLnIrIikifX19fSksdC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY29udHJvbGxlcnMuYnViYmxlPWUuRGF0YXNldENvbnRyb2xsZXIuZXh0ZW5kKHtkYXRhRWxlbWVudFR5cGU6aS5Qb2ludCx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQuZ2V0TWV0YSgpLHI9bi5kYXRhO2EuZWFjaChyLChmdW5jdGlvbihuLHIpe3QudXBkYXRlRWxlbWVudChuLHIsZSl9KSl9LHVwZGF0ZUVsZW1lbnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsaT1yLmdldE1ldGEoKSxhPWUuY3VzdG9tfHx7fSxvPXIuZ2V0U2NhbGVGb3JJZChpLnhBeGlzSUQpLHM9ci5nZXRTY2FsZUZvcklkKGkueUF4aXNJRCksYz1yLl9yZXNvbHZlRWxlbWVudE9wdGlvbnMoZSx0KSxsPXIuZ2V0RGF0YXNldCgpLmRhdGFbdF0sdT1yLmluZGV4LGQ9bj9vLmdldFBpeGVsRm9yRGVjaW1hbCguNSk6by5nZXRQaXhlbEZvclZhbHVlKCJvYmplY3QiPT09dHlwZW9mIGw/bDpOYU4sdCx1KSxwPW4/cy5nZXRCYXNlUGl4ZWwoKTpzLmdldFBpeGVsRm9yVmFsdWUobCx0LHUpO2UuX3hTY2FsZT1vLGUuX3lTY2FsZT1zLGUuX29wdGlvbnM9YyxlLl9kYXRhc2V0SW5kZXg9dSxlLl9pbmRleD10LGUuX21vZGVsPXtiYWNrZ3JvdW5kQ29sb3I6Yy5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6Yy5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDpjLmJvcmRlcldpZHRoLGhpdFJhZGl1czpjLmhpdFJhZGl1cyxwb2ludFN0eWxlOmMucG9pbnRTdHlsZSxyb3RhdGlvbjpjLnJvdGF0aW9uLHJhZGl1czpuPzA6Yy5yYWRpdXMsc2tpcDphLnNraXB8fGlzTmFOKGQpfHxpc05hTihwKSx4OmQseTpwfSxlLnBpdm90KCl9LHNldEhvdmVyU3R5bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fbW9kZWwsbj1lLl9vcHRpb25zO2UuJHByZXZpb3VzU3R5bGU9e2JhY2tncm91bmRDb2xvcjp0LmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjp0LmJvcmRlckNvbG9yLGJvcmRlcldpZHRoOnQuYm9yZGVyV2lkdGgscmFkaXVzOnQucmFkaXVzfSx0LmJhY2tncm91bmRDb2xvcj1hLnZhbHVlT3JEZWZhdWx0KG4uaG92ZXJCYWNrZ3JvdW5kQ29sb3IsYS5nZXRIb3ZlckNvbG9yKG4uYmFja2dyb3VuZENvbG9yKSksdC5ib3JkZXJDb2xvcj1hLnZhbHVlT3JEZWZhdWx0KG4uaG92ZXJCb3JkZXJDb2xvcixhLmdldEhvdmVyQ29sb3Iobi5ib3JkZXJDb2xvcikpLHQuYm9yZGVyV2lkdGg9YS52YWx1ZU9yRGVmYXVsdChuLmhvdmVyQm9yZGVyV2lkdGgsbi5ib3JkZXJXaWR0aCksdC5yYWRpdXM9bi5yYWRpdXMrbi5ob3ZlclJhZGl1c30sX3Jlc29sdmVFbGVtZW50T3B0aW9uczpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvPXRoaXMscz1vLmNoYXJ0LGM9cy5kYXRhLmRhdGFzZXRzLGw9Y1tvLmluZGV4XSx1PWUuY3VzdG9tfHx7fSxkPXMub3B0aW9ucy5lbGVtZW50cy5wb2ludCxwPWEub3B0aW9ucy5yZXNvbHZlLGY9bC5kYXRhW3RdLGg9e30sbT17Y2hhcnQ6cyxkYXRhSW5kZXg6dCxkYXRhc2V0OmwsZGF0YXNldEluZGV4Om8uaW5kZXh9LF89WyJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwiaG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCJob3ZlckJvcmRlckNvbG9yIiwiaG92ZXJCb3JkZXJXaWR0aCIsImhvdmVyUmFkaXVzIiwiaGl0UmFkaXVzIiwicG9pbnRTdHlsZSIsInJvdGF0aW9uIl07Zm9yKG49MCxyPV8ubGVuZ3RoO248cjsrK24paT1fW25dLGhbaV09cChbdVtpXSxsW2ldLGRbaV1dLG0sdCk7cmV0dXJuIGgucmFkaXVzPXAoW3UucmFkaXVzLGY/Zi5yOnZvaWQgMCxsLnJhZGl1cyxkLnJhZGl1c10sbSx0KSxofX0pfX0sezI2OjI2LDQxOjQxLDQ2OjQ2fV0sMTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyNiksaT1lKDQxKSxhPWUoNDYpO3IuX3NldCgiZG91Z2hudXQiLHthbmltYXRpb246e2FuaW1hdGVSb3RhdGU6ITAsYW5pbWF0ZVNjYWxlOiExfSxob3Zlcjp7bW9kZToic2luZ2xlIn0sbGVnZW5kQ2FsbGJhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9W107dC5wdXNoKCc8dWwgY2xhc3M9IicrZS5pZCsnLWxlZ2VuZCI+Jyk7dmFyIG49ZS5kYXRhLHI9bi5kYXRhc2V0cyxpPW4ubGFiZWxzO2lmKHIubGVuZ3RoKWZvcih2YXIgYT0wO2E8clswXS5kYXRhLmxlbmd0aDsrK2EpdC5wdXNoKCc8bGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6JytyWzBdLmJhY2tncm91bmRDb2xvclthXSsnIj48L3NwYW4+JyksaVthXSYmdC5wdXNoKGlbYV0pLHQucHVzaCgiPC9saT4iKTtyZXR1cm4gdC5wdXNoKCI8L3VsPiIpLHQuam9pbigiIil9LGxlZ2VuZDp7bGFiZWxzOntnZW5lcmF0ZUxhYmVsczpmdW5jdGlvbihlKXt2YXIgdD1lLmRhdGE7cmV0dXJuIHQubGFiZWxzLmxlbmd0aCYmdC5kYXRhc2V0cy5sZW5ndGg/dC5sYWJlbHMubWFwKChmdW5jdGlvbihuLHIpe3ZhciBpPWUuZ2V0RGF0YXNldE1ldGEoMCksbz10LmRhdGFzZXRzWzBdLHM9aS5kYXRhW3JdLGM9cyYmcy5jdXN0b218fHt9LGw9YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQsdT1lLm9wdGlvbnMuZWxlbWVudHMuYXJjLGQ9Yy5iYWNrZ3JvdW5kQ29sb3I/Yy5iYWNrZ3JvdW5kQ29sb3I6bChvLmJhY2tncm91bmRDb2xvcixyLHUuYmFja2dyb3VuZENvbG9yKSxwPWMuYm9yZGVyQ29sb3I/Yy5ib3JkZXJDb2xvcjpsKG8uYm9yZGVyQ29sb3Iscix1LmJvcmRlckNvbG9yKSxmPWMuYm9yZGVyV2lkdGg/Yy5ib3JkZXJXaWR0aDpsKG8uYm9yZGVyV2lkdGgscix1LmJvcmRlcldpZHRoKTtyZXR1cm57dGV4dDpuLGZpbGxTdHlsZTpkLHN0cm9rZVN0eWxlOnAsbGluZVdpZHRoOmYsaGlkZGVuOmlzTmFOKG8uZGF0YVtyXSl8fGkuZGF0YVtyXS5oaWRkZW4saW5kZXg6cn19KSk6W119fSxvbkNsaWNrOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLGE9dC5pbmRleCxvPXRoaXMuY2hhcnQ7Zm9yKG49MCxyPShvLmRhdGEuZGF0YXNldHN8fFtdKS5sZW5ndGg7bjxyOysrbilpPW8uZ2V0RGF0YXNldE1ldGEobiksaS5kYXRhW2FdJiYoaS5kYXRhW2FdLmhpZGRlbj0haS5kYXRhW2FdLmhpZGRlbik7by51cGRhdGUoKX19LGN1dG91dFBlcmNlbnRhZ2U6NTAscm90YXRpb246LS41Kk1hdGguUEksY2lyY3VtZmVyZW5jZToyKk1hdGguUEksdG9vbHRpcHM6e2NhbGxiYWNrczp7dGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sbGFiZWw6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmxhYmVsc1tlLmluZGV4XSxyPSI6ICIrdC5kYXRhc2V0c1tlLmRhdGFzZXRJbmRleF0uZGF0YVtlLmluZGV4XTtyZXR1cm4gYS5pc0FycmF5KG4pPyhuPW4uc2xpY2UoKSxuWzBdKz1yKTpuKz1yLG59fX19KSxyLl9zZXQoInBpZSIsYS5jbG9uZShyLmRvdWdobnV0KSksci5fc2V0KCJwaWUiLHtjdXRvdXRQZXJjZW50YWdlOjB9KSx0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jb250cm9sbGVycy5kb3VnaG51dD1lLmNvbnRyb2xsZXJzLnBpZT1lLkRhdGFzZXRDb250cm9sbGVyLmV4dGVuZCh7ZGF0YUVsZW1lbnRUeXBlOmkuQXJjLGxpbmtTY2FsZXM6YS5ub29wLGdldFJpbmdJbmRleDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPTA7bjxlOysrbil0aGlzLmNoYXJ0LmlzRGF0YXNldFZpc2libGUobikmJisrdDtyZXR1cm4gdH0sdXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10LmNoYXJ0LHI9bi5jaGFydEFyZWEsaT1uLm9wdGlvbnMsbz1pLmVsZW1lbnRzLmFyYyxzPXIucmlnaHQtci5sZWZ0LW8uYm9yZGVyV2lkdGgsYz1yLmJvdHRvbS1yLnRvcC1vLmJvcmRlcldpZHRoLGw9TWF0aC5taW4ocyxjKSx1PXt4OjAseTowfSxkPXQuZ2V0TWV0YSgpLHA9aS5jdXRvdXRQZXJjZW50YWdlLGY9aS5jaXJjdW1mZXJlbmNlO2lmKGY8MipNYXRoLlBJKXt2YXIgaD1pLnJvdGF0aW9uJSgyKk1hdGguUEkpO2grPTIqTWF0aC5QSSooaD49TWF0aC5QST8tMTpoPC1NYXRoLlBJPzE6MCk7dmFyIG09aCtmLF89e3g6TWF0aC5jb3MoaCkseTpNYXRoLnNpbihoKX0sZz17eDpNYXRoLmNvcyhtKSx5Ok1hdGguc2luKG0pfSx2PWg8PTAmJm0+PTB8fGg8PTIqTWF0aC5QSSYmMipNYXRoLlBJPD1tLHk9aDw9LjUqTWF0aC5QSSYmLjUqTWF0aC5QSTw9bXx8aDw9Mi41Kk1hdGguUEkmJjIuNSpNYXRoLlBJPD1tLGI9aDw9LU1hdGguUEkmJi1NYXRoLlBJPD1tfHxoPD1NYXRoLlBJJiZNYXRoLlBJPD1tLHc9aDw9LjUqLU1hdGguUEkmJi41Ki1NYXRoLlBJPD1tfHxoPD0xLjUqTWF0aC5QSSYmMS41Kk1hdGguUEk8PW0seD1wLzEwMCxrPXt4OmI/LTE6TWF0aC5taW4oXy54KihfLng8MD8xOngpLGcueCooZy54PDA/MTp4KSkseTp3Py0xOk1hdGgubWluKF8ueSooXy55PDA/MTp4KSxnLnkqKGcueTwwPzE6eCkpfSxDPXt4OnY/MTpNYXRoLm1heChfLngqKF8ueD4wPzE6eCksZy54KihnLng+MD8xOngpKSx5Onk/MTpNYXRoLm1heChfLnkqKF8ueT4wPzE6eCksZy55KihnLnk+MD8xOngpKX0sUz17d2lkdGg6LjUqKEMueC1rLngpLGhlaWdodDouNSooQy55LWsueSl9O2w9TWF0aC5taW4ocy9TLndpZHRoLGMvUy5oZWlnaHQpLHU9e3g6LS41KihDLngray54KSx5Oi0uNSooQy55K2sueSl9fW4uYm9yZGVyV2lkdGg9dC5nZXRNYXhCb3JkZXJXaWR0aChkLmRhdGEpLG4ub3V0ZXJSYWRpdXM9TWF0aC5tYXgoKGwtbi5ib3JkZXJXaWR0aCkvMiwwKSxuLmlubmVyUmFkaXVzPU1hdGgubWF4KHA/bi5vdXRlclJhZGl1cy8xMDAqcDowLDApLG4ucmFkaXVzTGVuZ3RoPShuLm91dGVyUmFkaXVzLW4uaW5uZXJSYWRpdXMpL24uZ2V0VmlzaWJsZURhdGFzZXRDb3VudCgpLG4ub2Zmc2V0WD11Lngqbi5vdXRlclJhZGl1cyxuLm9mZnNldFk9dS55Km4ub3V0ZXJSYWRpdXMsZC50b3RhbD10LmNhbGN1bGF0ZVRvdGFsKCksdC5vdXRlclJhZGl1cz1uLm91dGVyUmFkaXVzLW4ucmFkaXVzTGVuZ3RoKnQuZ2V0UmluZ0luZGV4KHQuaW5kZXgpLHQuaW5uZXJSYWRpdXM9TWF0aC5tYXgodC5vdXRlclJhZGl1cy1uLnJhZGl1c0xlbmd0aCwwKSxhLmVhY2goZC5kYXRhLChmdW5jdGlvbihuLHIpe3QudXBkYXRlRWxlbWVudChuLHIsZSl9KSl9LHVwZGF0ZUVsZW1lbnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsaT1yLmNoYXJ0LG89aS5jaGFydEFyZWEscz1pLm9wdGlvbnMsYz1zLmFuaW1hdGlvbixsPShvLmxlZnQrby5yaWdodCkvMix1PShvLnRvcCtvLmJvdHRvbSkvMixkPXMucm90YXRpb24scD1zLnJvdGF0aW9uLGY9ci5nZXREYXRhc2V0KCksaD1uJiZjLmFuaW1hdGVSb3RhdGU/MDplLmhpZGRlbj8wOnIuY2FsY3VsYXRlQ2lyY3VtZmVyZW5jZShmLmRhdGFbdF0pKihzLmNpcmN1bWZlcmVuY2UvKDIqTWF0aC5QSSkpLG09biYmYy5hbmltYXRlU2NhbGU/MDpyLmlubmVyUmFkaXVzLF89biYmYy5hbmltYXRlU2NhbGU/MDpyLm91dGVyUmFkaXVzLGc9YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQ7YS5leHRlbmQoZSx7X2RhdGFzZXRJbmRleDpyLmluZGV4LF9pbmRleDp0LF9tb2RlbDp7eDpsK2kub2Zmc2V0WCx5OnUraS5vZmZzZXRZLHN0YXJ0QW5nbGU6ZCxlbmRBbmdsZTpwLGNpcmN1bWZlcmVuY2U6aCxvdXRlclJhZGl1czpfLGlubmVyUmFkaXVzOm0sbGFiZWw6ZyhmLmxhYmVsLHQsaS5kYXRhLmxhYmVsc1t0XSl9fSk7dmFyIHY9ZS5fbW9kZWwseT1lLmN1c3RvbXx8e30sYj1hLnZhbHVlQXRJbmRleE9yRGVmYXVsdCx3PXRoaXMuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5hcmM7di5iYWNrZ3JvdW5kQ29sb3I9eS5iYWNrZ3JvdW5kQ29sb3I/eS5iYWNrZ3JvdW5kQ29sb3I6YihmLmJhY2tncm91bmRDb2xvcix0LHcuYmFja2dyb3VuZENvbG9yKSx2LmJvcmRlckNvbG9yPXkuYm9yZGVyQ29sb3I/eS5ib3JkZXJDb2xvcjpiKGYuYm9yZGVyQ29sb3IsdCx3LmJvcmRlckNvbG9yKSx2LmJvcmRlcldpZHRoPXkuYm9yZGVyV2lkdGg/eS5ib3JkZXJXaWR0aDpiKGYuYm9yZGVyV2lkdGgsdCx3LmJvcmRlcldpZHRoKSxuJiZjLmFuaW1hdGVSb3RhdGV8fCh2LnN0YXJ0QW5nbGU9MD09PXQ/cy5yb3RhdGlvbjpyLmdldE1ldGEoKS5kYXRhW3QtMV0uX21vZGVsLmVuZEFuZ2xlLHYuZW5kQW5nbGU9di5zdGFydEFuZ2xlK3YuY2lyY3VtZmVyZW5jZSksZS5waXZvdCgpfSxjYWxjdWxhdGVUb3RhbDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5nZXREYXRhc2V0KCksbj10aGlzLmdldE1ldGEoKSxyPTA7cmV0dXJuIGEuZWFjaChuLmRhdGEsKGZ1bmN0aW9uKG4saSl7ZT10LmRhdGFbaV0saXNOYU4oZSl8fG4uaGlkZGVufHwocis9TWF0aC5hYnMoZSkpfSkpLHJ9LGNhbGN1bGF0ZUNpcmN1bWZlcmVuY2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRNZXRhKCkudG90YWw7cmV0dXJuIHQ+MCYmIWlzTmFOKGUpPzIqTWF0aC5QSSooTWF0aC5hYnMoZSkvdCk6MH0sZ2V0TWF4Qm9yZGVyV2lkdGg6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scj0wLGk9dGhpcy5pbmRleCxhPWUubGVuZ3RoLG89MDtvPGE7bysrKXQ9ZVtvXS5fbW9kZWw/ZVtvXS5fbW9kZWwuYm9yZGVyV2lkdGg6MCxuPWVbb10uX2NoYXJ0P2Vbb10uX2NoYXJ0LmNvbmZpZy5kYXRhLmRhdGFzZXRzW2ldLmhvdmVyQm9yZGVyV2lkdGg6MCxyPXQ+cj90OnIscj1uPnI/bjpyO3JldHVybiByfX0pfX0sezI2OjI2LDQxOjQxLDQ2OjQ2fV0sMTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyNiksaT1lKDQxKSxhPWUoNDYpO3IuX3NldCgibGluZSIse3Nob3dMaW5lczohMCxzcGFuR2FwczohMSxob3Zlcjp7bW9kZToibGFiZWwifSxzY2FsZXM6e3hBeGVzOlt7dHlwZToiY2F0ZWdvcnkiLGlkOiJ4LWF4aXMtMCJ9XSx5QXhlczpbe3R5cGU6ImxpbmVhciIsaWQ6InktYXhpcy0wIn1dfX0pLHQuZXhwb3J0cz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7cmV0dXJuIGEudmFsdWVPckRlZmF1bHQoZS5zaG93TGluZSx0LnNob3dMaW5lcyl9ZS5jb250cm9sbGVycy5saW5lPWUuRGF0YXNldENvbnRyb2xsZXIuZXh0ZW5kKHtkYXRhc2V0RWxlbWVudFR5cGU6aS5MaW5lLGRhdGFFbGVtZW50VHlwZTppLlBvaW50LHVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgbixyLGksbz10aGlzLHM9by5nZXRNZXRhKCksYz1zLmRhdGFzZXQsbD1zLmRhdGF8fFtdLHU9by5jaGFydC5vcHRpb25zLGQ9dS5lbGVtZW50cy5saW5lLHA9by5nZXRTY2FsZUZvcklkKHMueUF4aXNJRCksZj1vLmdldERhdGFzZXQoKSxoPXQoZix1KTtmb3IoaCYmKGk9Yy5jdXN0b218fHt9LHZvaWQgMCE9PWYudGVuc2lvbiYmdm9pZCAwPT09Zi5saW5lVGVuc2lvbiYmKGYubGluZVRlbnNpb249Zi50ZW5zaW9uKSxjLl9zY2FsZT1wLGMuX2RhdGFzZXRJbmRleD1vLmluZGV4LGMuX2NoaWxkcmVuPWwsYy5fbW9kZWw9e3NwYW5HYXBzOmYuc3BhbkdhcHM/Zi5zcGFuR2Fwczp1LnNwYW5HYXBzLHRlbnNpb246aS50ZW5zaW9uP2kudGVuc2lvbjphLnZhbHVlT3JEZWZhdWx0KGYubGluZVRlbnNpb24sZC50ZW5zaW9uKSxiYWNrZ3JvdW5kQ29sb3I6aS5iYWNrZ3JvdW5kQ29sb3I/aS5iYWNrZ3JvdW5kQ29sb3I6Zi5iYWNrZ3JvdW5kQ29sb3J8fGQuYmFja2dyb3VuZENvbG9yLGJvcmRlcldpZHRoOmkuYm9yZGVyV2lkdGg/aS5ib3JkZXJXaWR0aDpmLmJvcmRlcldpZHRofHxkLmJvcmRlcldpZHRoLGJvcmRlckNvbG9yOmkuYm9yZGVyQ29sb3I/aS5ib3JkZXJDb2xvcjpmLmJvcmRlckNvbG9yfHxkLmJvcmRlckNvbG9yLGJvcmRlckNhcFN0eWxlOmkuYm9yZGVyQ2FwU3R5bGU/aS5ib3JkZXJDYXBTdHlsZTpmLmJvcmRlckNhcFN0eWxlfHxkLmJvcmRlckNhcFN0eWxlLGJvcmRlckRhc2g6aS5ib3JkZXJEYXNoP2kuYm9yZGVyRGFzaDpmLmJvcmRlckRhc2h8fGQuYm9yZGVyRGFzaCxib3JkZXJEYXNoT2Zmc2V0OmkuYm9yZGVyRGFzaE9mZnNldD9pLmJvcmRlckRhc2hPZmZzZXQ6Zi5ib3JkZXJEYXNoT2Zmc2V0fHxkLmJvcmRlckRhc2hPZmZzZXQsYm9yZGVySm9pblN0eWxlOmkuYm9yZGVySm9pblN0eWxlP2kuYm9yZGVySm9pblN0eWxlOmYuYm9yZGVySm9pblN0eWxlfHxkLmJvcmRlckpvaW5TdHlsZSxmaWxsOmkuZmlsbD9pLmZpbGw6dm9pZCAwIT09Zi5maWxsP2YuZmlsbDpkLmZpbGwsc3RlcHBlZExpbmU6aS5zdGVwcGVkTGluZT9pLnN0ZXBwZWRMaW5lOmEudmFsdWVPckRlZmF1bHQoZi5zdGVwcGVkTGluZSxkLnN0ZXBwZWQpLGN1YmljSW50ZXJwb2xhdGlvbk1vZGU6aS5jdWJpY0ludGVycG9sYXRpb25Nb2RlP2kuY3ViaWNJbnRlcnBvbGF0aW9uTW9kZTphLnZhbHVlT3JEZWZhdWx0KGYuY3ViaWNJbnRlcnBvbGF0aW9uTW9kZSxkLmN1YmljSW50ZXJwb2xhdGlvbk1vZGUpfSxjLnBpdm90KCkpLG49MCxyPWwubGVuZ3RoO248cjsrK24pby51cGRhdGVFbGVtZW50KGxbbl0sbixlKTtmb3IoaCYmMCE9PWMuX21vZGVsLnRlbnNpb24mJm8udXBkYXRlQmV6aWVyQ29udHJvbFBvaW50cygpLG49MCxyPWwubGVuZ3RoO248cjsrK24pbFtuXS5waXZvdCgpfSxnZXRQb2ludEJhY2tncm91bmRDb2xvcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludC5iYWNrZ3JvdW5kQ29sb3Iscj10aGlzLmdldERhdGFzZXQoKSxpPWUuY3VzdG9tfHx7fTtyZXR1cm4gaS5iYWNrZ3JvdW5kQ29sb3I/bj1pLmJhY2tncm91bmRDb2xvcjpyLnBvaW50QmFja2dyb3VuZENvbG9yP249YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQoci5wb2ludEJhY2tncm91bmRDb2xvcix0LG4pOnIuYmFja2dyb3VuZENvbG9yJiYobj1yLmJhY2tncm91bmRDb2xvciksbn0sZ2V0UG9pbnRCb3JkZXJDb2xvcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludC5ib3JkZXJDb2xvcixyPXRoaXMuZ2V0RGF0YXNldCgpLGk9ZS5jdXN0b218fHt9O3JldHVybiBpLmJvcmRlckNvbG9yP249aS5ib3JkZXJDb2xvcjpyLnBvaW50Qm9yZGVyQ29sb3I/bj1hLnZhbHVlQXRJbmRleE9yRGVmYXVsdChyLnBvaW50Qm9yZGVyQ29sb3IsdCxuKTpyLmJvcmRlckNvbG9yJiYobj1yLmJvcmRlckNvbG9yKSxufSxnZXRQb2ludEJvcmRlcldpZHRoOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jaGFydC5vcHRpb25zLmVsZW1lbnRzLnBvaW50LmJvcmRlcldpZHRoLHI9dGhpcy5nZXREYXRhc2V0KCksaT1lLmN1c3RvbXx8e307cmV0dXJuIGlzTmFOKGkuYm9yZGVyV2lkdGgpPyFpc05hTihyLnBvaW50Qm9yZGVyV2lkdGgpfHxhLmlzQXJyYXkoci5wb2ludEJvcmRlcldpZHRoKT9uPWEudmFsdWVBdEluZGV4T3JEZWZhdWx0KHIucG9pbnRCb3JkZXJXaWR0aCx0LG4pOmlzTmFOKHIuYm9yZGVyV2lkdGgpfHwobj1yLmJvcmRlcldpZHRoKTpuPWkuYm9yZGVyV2lkdGgsbn0sZ2V0UG9pbnRSb3RhdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludC5yb3RhdGlvbixyPXRoaXMuZ2V0RGF0YXNldCgpLGk9ZS5jdXN0b218fHt9O3JldHVybiBpc05hTihpLnJvdGF0aW9uKT9pc05hTihyLnBvaW50Um90YXRpb24pJiYhYS5pc0FycmF5KHIucG9pbnRSb3RhdGlvbil8fChuPWEudmFsdWVBdEluZGV4T3JEZWZhdWx0KHIucG9pbnRSb3RhdGlvbix0LG4pKTpuPWkucm90YXRpb24sbn0sdXBkYXRlRWxlbWVudDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXRoaXMscz1vLmdldE1ldGEoKSxjPWUuY3VzdG9tfHx7fSxsPW8uZ2V0RGF0YXNldCgpLHU9by5pbmRleCxkPWwuZGF0YVt0XSxwPW8uZ2V0U2NhbGVGb3JJZChzLnlBeGlzSUQpLGY9by5nZXRTY2FsZUZvcklkKHMueEF4aXNJRCksaD1vLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMucG9pbnQ7dm9pZCAwIT09bC5yYWRpdXMmJnZvaWQgMD09PWwucG9pbnRSYWRpdXMmJihsLnBvaW50UmFkaXVzPWwucmFkaXVzKSx2b2lkIDAhPT1sLmhpdFJhZGl1cyYmdm9pZCAwPT09bC5wb2ludEhpdFJhZGl1cyYmKGwucG9pbnRIaXRSYWRpdXM9bC5oaXRSYWRpdXMpLHI9Zi5nZXRQaXhlbEZvclZhbHVlKCJvYmplY3QiPT09dHlwZW9mIGQ/ZDpOYU4sdCx1KSxpPW4/cC5nZXRCYXNlUGl4ZWwoKTpvLmNhbGN1bGF0ZVBvaW50WShkLHQsdSksZS5feFNjYWxlPWYsZS5feVNjYWxlPXAsZS5fZGF0YXNldEluZGV4PXUsZS5faW5kZXg9dCxlLl9tb2RlbD17eDpyLHk6aSxza2lwOmMuc2tpcHx8aXNOYU4ocil8fGlzTmFOKGkpLHJhZGl1czpjLnJhZGl1c3x8YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQobC5wb2ludFJhZGl1cyx0LGgucmFkaXVzKSxwb2ludFN0eWxlOmMucG9pbnRTdHlsZXx8YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQobC5wb2ludFN0eWxlLHQsaC5wb2ludFN0eWxlKSxyb3RhdGlvbjpvLmdldFBvaW50Um90YXRpb24oZSx0KSxiYWNrZ3JvdW5kQ29sb3I6by5nZXRQb2ludEJhY2tncm91bmRDb2xvcihlLHQpLGJvcmRlckNvbG9yOm8uZ2V0UG9pbnRCb3JkZXJDb2xvcihlLHQpLGJvcmRlcldpZHRoOm8uZ2V0UG9pbnRCb3JkZXJXaWR0aChlLHQpLHRlbnNpb246cy5kYXRhc2V0Ll9tb2RlbD9zLmRhdGFzZXQuX21vZGVsLnRlbnNpb246MCxzdGVwcGVkTGluZTohIXMuZGF0YXNldC5fbW9kZWwmJnMuZGF0YXNldC5fbW9kZWwuc3RlcHBlZExpbmUsaGl0UmFkaXVzOmMuaGl0UmFkaXVzfHxhLnZhbHVlQXRJbmRleE9yRGVmYXVsdChsLnBvaW50SGl0UmFkaXVzLHQsaC5oaXRSYWRpdXMpfX0sY2FsY3VsYXRlUG9pbnRZOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLGEsbz10aGlzLHM9by5jaGFydCxjPW8uZ2V0TWV0YSgpLGw9by5nZXRTY2FsZUZvcklkKGMueUF4aXNJRCksdT0wLGQ9MDtpZihsLm9wdGlvbnMuc3RhY2tlZCl7Zm9yKHI9MDtyPG47cisrKWlmKGk9cy5kYXRhLmRhdGFzZXRzW3JdLGE9cy5nZXREYXRhc2V0TWV0YShyKSwibGluZSI9PT1hLnR5cGUmJmEueUF4aXNJRD09PWwuaWQmJnMuaXNEYXRhc2V0VmlzaWJsZShyKSl7dmFyIHA9TnVtYmVyKGwuZ2V0UmlnaHRWYWx1ZShpLmRhdGFbdF0pKTtwPDA/ZCs9cHx8MDp1Kz1wfHwwfXZhciBmPU51bWJlcihsLmdldFJpZ2h0VmFsdWUoZSkpO3JldHVybiBmPDA/bC5nZXRQaXhlbEZvclZhbHVlKGQrZik6bC5nZXRQaXhlbEZvclZhbHVlKHUrZil9cmV0dXJuIGwuZ2V0UGl4ZWxGb3JWYWx1ZShlKX0sdXBkYXRlQmV6aWVyQ29udHJvbFBvaW50czpmdW5jdGlvbigpe3ZhciBlLHQsbixyLGksbz10aGlzLHM9by5nZXRNZXRhKCksYz1vLmNoYXJ0LmNoYXJ0QXJlYSxsPXMuZGF0YXx8W107ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKGUsbiksdCl9aWYocy5kYXRhc2V0Ll9tb2RlbC5zcGFuR2FwcyYmKGw9bC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFlLl9tb2RlbC5za2lwfSkpKSwibW9ub3RvbmUiPT09cy5kYXRhc2V0Ll9tb2RlbC5jdWJpY0ludGVycG9sYXRpb25Nb2RlKWEuc3BsaW5lQ3VydmVNb25vdG9uZShsKTtlbHNlIGZvcihlPTAsdD1sLmxlbmd0aDtlPHQ7KytlKW49bFtlXSxyPW4uX21vZGVsLGk9YS5zcGxpbmVDdXJ2ZShhLnByZXZpb3VzSXRlbShsLGUpLl9tb2RlbCxyLGEubmV4dEl0ZW0obCxlKS5fbW9kZWwscy5kYXRhc2V0Ll9tb2RlbC50ZW5zaW9uKSxyLmNvbnRyb2xQb2ludFByZXZpb3VzWD1pLnByZXZpb3VzLngsci5jb250cm9sUG9pbnRQcmV2aW91c1k9aS5wcmV2aW91cy55LHIuY29udHJvbFBvaW50TmV4dFg9aS5uZXh0Lngsci5jb250cm9sUG9pbnROZXh0WT1pLm5leHQueTtpZihvLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMubGluZS5jYXBCZXppZXJQb2ludHMpZm9yKGU9MCx0PWwubGVuZ3RoO2U8dDsrK2Upcj1sW2VdLl9tb2RlbCxyLmNvbnRyb2xQb2ludFByZXZpb3VzWD11KHIuY29udHJvbFBvaW50UHJldmlvdXNYLGMubGVmdCxjLnJpZ2h0KSxyLmNvbnRyb2xQb2ludFByZXZpb3VzWT11KHIuY29udHJvbFBvaW50UHJldmlvdXNZLGMudG9wLGMuYm90dG9tKSxyLmNvbnRyb2xQb2ludE5leHRYPXUoci5jb250cm9sUG9pbnROZXh0WCxjLmxlZnQsYy5yaWdodCksci5jb250cm9sUG9pbnROZXh0WT11KHIuY29udHJvbFBvaW50TmV4dFksYy50b3AsYy5ib3R0b20pfSxkcmF3OmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHI9bi5jaGFydCxpPW4uZ2V0TWV0YSgpLG89aS5kYXRhfHxbXSxzPXIuY2hhcnRBcmVhLGM9by5sZW5ndGgsbD0wO2Zvcih0KG4uZ2V0RGF0YXNldCgpLHIub3B0aW9ucykmJihlPShpLmRhdGFzZXQuX21vZGVsLmJvcmRlcldpZHRofHwwKS8yLGEuY2FudmFzLmNsaXBBcmVhKHIuY3R4LHtsZWZ0OnMubGVmdCxyaWdodDpzLnJpZ2h0LHRvcDpzLnRvcC1lLGJvdHRvbTpzLmJvdHRvbStlfSksaS5kYXRhc2V0LmRyYXcoKSxhLmNhbnZhcy51bmNsaXBBcmVhKHIuY3R4KSk7bDxjOysrbClvW2xdLmRyYXcocyl9LHNldEhvdmVyU3R5bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW2UuX2RhdGFzZXRJbmRleF0sbj1lLl9pbmRleCxyPWUuY3VzdG9tfHx7fSxpPWUuX21vZGVsO2UuJHByZXZpb3VzU3R5bGU9e2JhY2tncm91bmRDb2xvcjppLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjppLmJvcmRlckNvbG9yLGJvcmRlcldpZHRoOmkuYm9yZGVyV2lkdGgscmFkaXVzOmkucmFkaXVzfSxpLmJhY2tncm91bmRDb2xvcj1yLmhvdmVyQmFja2dyb3VuZENvbG9yfHxhLnZhbHVlQXRJbmRleE9yRGVmYXVsdCh0LnBvaW50SG92ZXJCYWNrZ3JvdW5kQ29sb3IsbixhLmdldEhvdmVyQ29sb3IoaS5iYWNrZ3JvdW5kQ29sb3IpKSxpLmJvcmRlckNvbG9yPXIuaG92ZXJCb3JkZXJDb2xvcnx8YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQodC5wb2ludEhvdmVyQm9yZGVyQ29sb3IsbixhLmdldEhvdmVyQ29sb3IoaS5ib3JkZXJDb2xvcikpLGkuYm9yZGVyV2lkdGg9ci5ob3ZlckJvcmRlcldpZHRofHxhLnZhbHVlQXRJbmRleE9yRGVmYXVsdCh0LnBvaW50SG92ZXJCb3JkZXJXaWR0aCxuLGkuYm9yZGVyV2lkdGgpLGkucmFkaXVzPXIuaG92ZXJSYWRpdXN8fGEudmFsdWVBdEluZGV4T3JEZWZhdWx0KHQucG9pbnRIb3ZlclJhZGl1cyxuLHRoaXMuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludC5ob3ZlclJhZGl1cyl9fSl9fSx7MjY6MjYsNDE6NDEsNDY6NDZ9XSwxOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDI2KSxpPWUoNDEpLGE9ZSg0Nik7ci5fc2V0KCJwb2xhckFyZWEiLHtzY2FsZTp7dHlwZToicmFkaWFsTGluZWFyIixhbmdsZUxpbmVzOntkaXNwbGF5OiExfSxncmlkTGluZXM6e2NpcmN1bGFyOiEwfSxwb2ludExhYmVsczp7ZGlzcGxheTohMX0sdGlja3M6e2JlZ2luQXRaZXJvOiEwfX0sYW5pbWF0aW9uOnthbmltYXRlUm90YXRlOiEwLGFuaW1hdGVTY2FsZTohMH0sc3RhcnRBbmdsZTotLjUqTWF0aC5QSSxsZWdlbmRDYWxsYmFjazpmdW5jdGlvbihlKXt2YXIgdD1bXTt0LnB1c2goJzx1bCBjbGFzcz0iJytlLmlkKyctbGVnZW5kIj4nKTt2YXIgbj1lLmRhdGEscj1uLmRhdGFzZXRzLGk9bi5sYWJlbHM7aWYoci5sZW5ndGgpZm9yKHZhciBhPTA7YTxyWzBdLmRhdGEubGVuZ3RoOysrYSl0LnB1c2goJzxsaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonK3JbMF0uYmFja2dyb3VuZENvbG9yW2FdKyciPjwvc3Bhbj4nKSxpW2FdJiZ0LnB1c2goaVthXSksdC5wdXNoKCI8L2xpPiIpO3JldHVybiB0LnB1c2goIjwvdWw+IiksdC5qb2luKCIiKX0sbGVnZW5kOntsYWJlbHM6e2dlbmVyYXRlTGFiZWxzOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YTtyZXR1cm4gdC5sYWJlbHMubGVuZ3RoJiZ0LmRhdGFzZXRzLmxlbmd0aD90LmxhYmVscy5tYXAoKGZ1bmN0aW9uKG4scil7dmFyIGk9ZS5nZXREYXRhc2V0TWV0YSgwKSxvPXQuZGF0YXNldHNbMF0scz1pLmRhdGFbcl0sYz1zLmN1c3RvbXx8e30sbD1hLnZhbHVlQXRJbmRleE9yRGVmYXVsdCx1PWUub3B0aW9ucy5lbGVtZW50cy5hcmMsZD1jLmJhY2tncm91bmRDb2xvcj9jLmJhY2tncm91bmRDb2xvcjpsKG8uYmFja2dyb3VuZENvbG9yLHIsdS5iYWNrZ3JvdW5kQ29sb3IpLHA9Yy5ib3JkZXJDb2xvcj9jLmJvcmRlckNvbG9yOmwoby5ib3JkZXJDb2xvcixyLHUuYm9yZGVyQ29sb3IpLGY9Yy5ib3JkZXJXaWR0aD9jLmJvcmRlcldpZHRoOmwoby5ib3JkZXJXaWR0aCxyLHUuYm9yZGVyV2lkdGgpO3JldHVybnt0ZXh0Om4sZmlsbFN0eWxlOmQsc3Ryb2tlU3R5bGU6cCxsaW5lV2lkdGg6ZixoaWRkZW46aXNOYU4oby5kYXRhW3JdKXx8aS5kYXRhW3JdLmhpZGRlbixpbmRleDpyfX0pKTpbXX19LG9uQ2xpY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksYT10LmluZGV4LG89dGhpcy5jaGFydDtmb3Iobj0wLHI9KG8uZGF0YS5kYXRhc2V0c3x8W10pLmxlbmd0aDtuPHI7KytuKWk9by5nZXREYXRhc2V0TWV0YShuKSxpLmRhdGFbYV0uaGlkZGVuPSFpLmRhdGFbYV0uaGlkZGVuO28udXBkYXRlKCl9fSx0b29sdGlwczp7Y2FsbGJhY2tzOnt0aXRsZTpmdW5jdGlvbigpe3JldHVybiIifSxsYWJlbDpmdW5jdGlvbihlLHQpe3JldHVybiB0LmxhYmVsc1tlLmluZGV4XSsiOiAiK2UueUxhYmVsfX19fSksdC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY29udHJvbGxlcnMucG9sYXJBcmVhPWUuRGF0YXNldENvbnRyb2xsZXIuZXh0ZW5kKHtkYXRhRWxlbWVudFR5cGU6aS5BcmMsbGlua1NjYWxlczphLm5vb3AsdXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpPXRoaXMsbz1pLmdldERhdGFzZXQoKSxzPWkuZ2V0TWV0YSgpLGM9aS5jaGFydC5vcHRpb25zLnN0YXJ0QW5nbGV8fDAsbD1pLl9zdGFydHM9W10sdT1pLl9hbmdsZXM9W107Zm9yKGkuX3VwZGF0ZVJhZGl1cygpLHMuY291bnQ9aS5jb3VudFZpc2libGVFbGVtZW50cygpLHQ9MCxuPW8uZGF0YS5sZW5ndGg7dDxuO3QrKylsW3RdPWMscj1pLl9jb21wdXRlQW5nbGUodCksdVt0XT1yLGMrPXI7YS5lYWNoKHMuZGF0YSwoZnVuY3Rpb24odCxuKXtpLnVwZGF0ZUVsZW1lbnQodCxuLGUpfSkpfSxfdXBkYXRlUmFkaXVzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuY2hhcnQsbj10LmNoYXJ0QXJlYSxyPXQub3B0aW9ucyxpPXIuZWxlbWVudHMuYXJjLGE9TWF0aC5taW4obi5yaWdodC1uLmxlZnQsbi5ib3R0b20tbi50b3ApO3Qub3V0ZXJSYWRpdXM9TWF0aC5tYXgoKGEtaS5ib3JkZXJXaWR0aC8yKS8yLDApLHQuaW5uZXJSYWRpdXM9TWF0aC5tYXgoci5jdXRvdXRQZXJjZW50YWdlP3Qub3V0ZXJSYWRpdXMvMTAwKnIuY3V0b3V0UGVyY2VudGFnZToxLDApLHQucmFkaXVzTGVuZ3RoPSh0Lm91dGVyUmFkaXVzLXQuaW5uZXJSYWRpdXMpL3QuZ2V0VmlzaWJsZURhdGFzZXRDb3VudCgpLGUub3V0ZXJSYWRpdXM9dC5vdXRlclJhZGl1cy10LnJhZGl1c0xlbmd0aCplLmluZGV4LGUuaW5uZXJSYWRpdXM9ZS5vdXRlclJhZGl1cy10LnJhZGl1c0xlbmd0aH0sdXBkYXRlRWxlbWVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxpPXIuY2hhcnQsbz1yLmdldERhdGFzZXQoKSxzPWkub3B0aW9ucyxjPXMuYW5pbWF0aW9uLGw9aS5zY2FsZSx1PWkuZGF0YS5sYWJlbHMsZD1sLnhDZW50ZXIscD1sLnlDZW50ZXIsZj1zLnN0YXJ0QW5nbGUsaD1lLmhpZGRlbj8wOmwuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoby5kYXRhW3RdKSxtPXIuX3N0YXJ0c1t0XSxfPW0rKGUuaGlkZGVuPzA6ci5fYW5nbGVzW3RdKSxnPWMuYW5pbWF0ZVNjYWxlPzA6bC5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZShvLmRhdGFbdF0pO2EuZXh0ZW5kKGUse19kYXRhc2V0SW5kZXg6ci5pbmRleCxfaW5kZXg6dCxfc2NhbGU6bCxfbW9kZWw6e3g6ZCx5OnAsaW5uZXJSYWRpdXM6MCxvdXRlclJhZGl1czpuP2c6aCxzdGFydEFuZ2xlOm4mJmMuYW5pbWF0ZVJvdGF0ZT9mOm0sZW5kQW5nbGU6biYmYy5hbmltYXRlUm90YXRlP2Y6XyxsYWJlbDphLnZhbHVlQXRJbmRleE9yRGVmYXVsdCh1LHQsdVt0XSl9fSk7dmFyIHY9dGhpcy5jaGFydC5vcHRpb25zLmVsZW1lbnRzLmFyYyx5PWUuY3VzdG9tfHx7fSxiPWEudmFsdWVBdEluZGV4T3JEZWZhdWx0LHc9ZS5fbW9kZWw7dy5iYWNrZ3JvdW5kQ29sb3I9eS5iYWNrZ3JvdW5kQ29sb3I/eS5iYWNrZ3JvdW5kQ29sb3I6YihvLmJhY2tncm91bmRDb2xvcix0LHYuYmFja2dyb3VuZENvbG9yKSx3LmJvcmRlckNvbG9yPXkuYm9yZGVyQ29sb3I/eS5ib3JkZXJDb2xvcjpiKG8uYm9yZGVyQ29sb3IsdCx2LmJvcmRlckNvbG9yKSx3LmJvcmRlcldpZHRoPXkuYm9yZGVyV2lkdGg/eS5ib3JkZXJXaWR0aDpiKG8uYm9yZGVyV2lkdGgsdCx2LmJvcmRlcldpZHRoKSxlLnBpdm90KCl9LGNvdW50VmlzaWJsZUVsZW1lbnRzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXREYXRhc2V0KCksdD10aGlzLmdldE1ldGEoKSxuPTA7cmV0dXJuIGEuZWFjaCh0LmRhdGEsKGZ1bmN0aW9uKHQscil7aXNOYU4oZS5kYXRhW3JdKXx8dC5oaWRkZW58fG4rK30pKSxufSxfY29tcHV0ZUFuZ2xlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLmdldE1ldGEoKS5jb3VudCxyPXQuZ2V0RGF0YXNldCgpLGk9dC5nZXRNZXRhKCk7aWYoaXNOYU4oci5kYXRhW2VdKXx8aS5kYXRhW2VdLmhpZGRlbilyZXR1cm4gMDt2YXIgbz17Y2hhcnQ6dC5jaGFydCxkYXRhSW5kZXg6ZSxkYXRhc2V0OnIsZGF0YXNldEluZGV4OnQuaW5kZXh9O3JldHVybiBhLm9wdGlvbnMucmVzb2x2ZShbdC5jaGFydC5vcHRpb25zLmVsZW1lbnRzLmFyYy5hbmdsZSwyKk1hdGguUEkvbl0sbyxlKX19KX19LHsyNjoyNiw0MTo0MSw0Njo0Nn1dLDIwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjYpLGk9ZSg0MSksYT1lKDQ2KTtyLl9zZXQoInJhZGFyIix7c2NhbGU6e3R5cGU6InJhZGlhbExpbmVhciJ9LGVsZW1lbnRzOntsaW5lOnt0ZW5zaW9uOjB9fX0pLHQuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNvbnRyb2xsZXJzLnJhZGFyPWUuRGF0YXNldENvbnRyb2xsZXIuZXh0ZW5kKHtkYXRhc2V0RWxlbWVudFR5cGU6aS5MaW5lLGRhdGFFbGVtZW50VHlwZTppLlBvaW50LGxpbmtTY2FsZXM6YS5ub29wLHVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5nZXRNZXRhKCkscj1uLmRhdGFzZXQsaT1uLmRhdGEsbz1yLmN1c3RvbXx8e30scz10LmdldERhdGFzZXQoKSxjPXQuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5saW5lLGw9dC5jaGFydC5zY2FsZTt2b2lkIDAhPT1zLnRlbnNpb24mJnZvaWQgMD09PXMubGluZVRlbnNpb24mJihzLmxpbmVUZW5zaW9uPXMudGVuc2lvbiksYS5leHRlbmQobi5kYXRhc2V0LHtfZGF0YXNldEluZGV4OnQuaW5kZXgsX3NjYWxlOmwsX2NoaWxkcmVuOmksX2xvb3A6ITAsX21vZGVsOnt0ZW5zaW9uOm8udGVuc2lvbj9vLnRlbnNpb246YS52YWx1ZU9yRGVmYXVsdChzLmxpbmVUZW5zaW9uLGMudGVuc2lvbiksYmFja2dyb3VuZENvbG9yOm8uYmFja2dyb3VuZENvbG9yP28uYmFja2dyb3VuZENvbG9yOnMuYmFja2dyb3VuZENvbG9yfHxjLmJhY2tncm91bmRDb2xvcixib3JkZXJXaWR0aDpvLmJvcmRlcldpZHRoP28uYm9yZGVyV2lkdGg6cy5ib3JkZXJXaWR0aHx8Yy5ib3JkZXJXaWR0aCxib3JkZXJDb2xvcjpvLmJvcmRlckNvbG9yP28uYm9yZGVyQ29sb3I6cy5ib3JkZXJDb2xvcnx8Yy5ib3JkZXJDb2xvcixmaWxsOm8uZmlsbD9vLmZpbGw6dm9pZCAwIT09cy5maWxsP3MuZmlsbDpjLmZpbGwsYm9yZGVyQ2FwU3R5bGU6by5ib3JkZXJDYXBTdHlsZT9vLmJvcmRlckNhcFN0eWxlOnMuYm9yZGVyQ2FwU3R5bGV8fGMuYm9yZGVyQ2FwU3R5bGUsYm9yZGVyRGFzaDpvLmJvcmRlckRhc2g/by5ib3JkZXJEYXNoOnMuYm9yZGVyRGFzaHx8Yy5ib3JkZXJEYXNoLGJvcmRlckRhc2hPZmZzZXQ6by5ib3JkZXJEYXNoT2Zmc2V0P28uYm9yZGVyRGFzaE9mZnNldDpzLmJvcmRlckRhc2hPZmZzZXR8fGMuYm9yZGVyRGFzaE9mZnNldCxib3JkZXJKb2luU3R5bGU6by5ib3JkZXJKb2luU3R5bGU/by5ib3JkZXJKb2luU3R5bGU6cy5ib3JkZXJKb2luU3R5bGV8fGMuYm9yZGVySm9pblN0eWxlfX0pLG4uZGF0YXNldC5waXZvdCgpLGEuZWFjaChpLChmdW5jdGlvbihuLHIpe3QudXBkYXRlRWxlbWVudChuLHIsZSl9KSx0KSx0LnVwZGF0ZUJlemllckNvbnRyb2xQb2ludHMoKX0sdXBkYXRlRWxlbWVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxpPWUuY3VzdG9tfHx7fSxvPXIuZ2V0RGF0YXNldCgpLHM9ci5jaGFydC5zY2FsZSxjPXIuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludCxsPXMuZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKHQsby5kYXRhW3RdKTt2b2lkIDAhPT1vLnJhZGl1cyYmdm9pZCAwPT09by5wb2ludFJhZGl1cyYmKG8ucG9pbnRSYWRpdXM9by5yYWRpdXMpLHZvaWQgMCE9PW8uaGl0UmFkaXVzJiZ2b2lkIDA9PT1vLnBvaW50SGl0UmFkaXVzJiYoby5wb2ludEhpdFJhZGl1cz1vLmhpdFJhZGl1cyksYS5leHRlbmQoZSx7X2RhdGFzZXRJbmRleDpyLmluZGV4LF9pbmRleDp0LF9zY2FsZTpzLF9tb2RlbDp7eDpuP3MueENlbnRlcjpsLngseTpuP3MueUNlbnRlcjpsLnksdGVuc2lvbjppLnRlbnNpb24/aS50ZW5zaW9uOmEudmFsdWVPckRlZmF1bHQoby5saW5lVGVuc2lvbixyLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMubGluZS50ZW5zaW9uKSxyYWRpdXM6aS5yYWRpdXM/aS5yYWRpdXM6YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQoby5wb2ludFJhZGl1cyx0LGMucmFkaXVzKSxiYWNrZ3JvdW5kQ29sb3I6aS5iYWNrZ3JvdW5kQ29sb3I/aS5iYWNrZ3JvdW5kQ29sb3I6YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQoby5wb2ludEJhY2tncm91bmRDb2xvcix0LGMuYmFja2dyb3VuZENvbG9yKSxib3JkZXJDb2xvcjppLmJvcmRlckNvbG9yP2kuYm9yZGVyQ29sb3I6YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQoby5wb2ludEJvcmRlckNvbG9yLHQsYy5ib3JkZXJDb2xvciksYm9yZGVyV2lkdGg6aS5ib3JkZXJXaWR0aD9pLmJvcmRlcldpZHRoOmEudmFsdWVBdEluZGV4T3JEZWZhdWx0KG8ucG9pbnRCb3JkZXJXaWR0aCx0LGMuYm9yZGVyV2lkdGgpLHBvaW50U3R5bGU6aS5wb2ludFN0eWxlP2kucG9pbnRTdHlsZTphLnZhbHVlQXRJbmRleE9yRGVmYXVsdChvLnBvaW50U3R5bGUsdCxjLnBvaW50U3R5bGUpLHJvdGF0aW9uOmkucm90YXRpb24/aS5yb3RhdGlvbjphLnZhbHVlQXRJbmRleE9yRGVmYXVsdChvLnBvaW50Um90YXRpb24sdCxjLnJvdGF0aW9uKSxoaXRSYWRpdXM6aS5oaXRSYWRpdXM/aS5oaXRSYWRpdXM6YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQoby5wb2ludEhpdFJhZGl1cyx0LGMuaGl0UmFkaXVzKX19KSxlLl9tb2RlbC5za2lwPWkuc2tpcD9pLnNraXA6aXNOYU4oZS5fbW9kZWwueCl8fGlzTmFOKGUuX21vZGVsLnkpfSx1cGRhdGVCZXppZXJDb250cm9sUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jaGFydC5jaGFydEFyZWEsdD10aGlzLmdldE1ldGEoKTthLmVhY2godC5kYXRhLChmdW5jdGlvbihuLHIpe3ZhciBpPW4uX21vZGVsLG89YS5zcGxpbmVDdXJ2ZShhLnByZXZpb3VzSXRlbSh0LmRhdGEsciwhMCkuX21vZGVsLGksYS5uZXh0SXRlbSh0LmRhdGEsciwhMCkuX21vZGVsLGkudGVuc2lvbik7aS5jb250cm9sUG9pbnRQcmV2aW91c1g9TWF0aC5tYXgoTWF0aC5taW4oby5wcmV2aW91cy54LGUucmlnaHQpLGUubGVmdCksaS5jb250cm9sUG9pbnRQcmV2aW91c1k9TWF0aC5tYXgoTWF0aC5taW4oby5wcmV2aW91cy55LGUuYm90dG9tKSxlLnRvcCksaS5jb250cm9sUG9pbnROZXh0WD1NYXRoLm1heChNYXRoLm1pbihvLm5leHQueCxlLnJpZ2h0KSxlLmxlZnQpLGkuY29udHJvbFBvaW50TmV4dFk9TWF0aC5tYXgoTWF0aC5taW4oby5uZXh0LnksZS5ib3R0b20pLGUudG9wKSxuLnBpdm90KCl9KSl9LHNldEhvdmVyU3R5bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW2UuX2RhdGFzZXRJbmRleF0sbj1lLmN1c3RvbXx8e30scj1lLl9pbmRleCxpPWUuX21vZGVsO2UuJHByZXZpb3VzU3R5bGU9e2JhY2tncm91bmRDb2xvcjppLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjppLmJvcmRlckNvbG9yLGJvcmRlcldpZHRoOmkuYm9yZGVyV2lkdGgscmFkaXVzOmkucmFkaXVzfSxpLnJhZGl1cz1uLmhvdmVyUmFkaXVzP24uaG92ZXJSYWRpdXM6YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQodC5wb2ludEhvdmVyUmFkaXVzLHIsdGhpcy5jaGFydC5vcHRpb25zLmVsZW1lbnRzLnBvaW50LmhvdmVyUmFkaXVzKSxpLmJhY2tncm91bmRDb2xvcj1uLmhvdmVyQmFja2dyb3VuZENvbG9yP24uaG92ZXJCYWNrZ3JvdW5kQ29sb3I6YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQodC5wb2ludEhvdmVyQmFja2dyb3VuZENvbG9yLHIsYS5nZXRIb3ZlckNvbG9yKGkuYmFja2dyb3VuZENvbG9yKSksaS5ib3JkZXJDb2xvcj1uLmhvdmVyQm9yZGVyQ29sb3I/bi5ob3ZlckJvcmRlckNvbG9yOmEudmFsdWVBdEluZGV4T3JEZWZhdWx0KHQucG9pbnRIb3ZlckJvcmRlckNvbG9yLHIsYS5nZXRIb3ZlckNvbG9yKGkuYm9yZGVyQ29sb3IpKSxpLmJvcmRlcldpZHRoPW4uaG92ZXJCb3JkZXJXaWR0aD9uLmhvdmVyQm9yZGVyV2lkdGg6YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQodC5wb2ludEhvdmVyQm9yZGVyV2lkdGgscixpLmJvcmRlcldpZHRoKX19KX19LHsyNjoyNiw0MTo0MSw0Njo0Nn1dLDIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjYpO3IuX3NldCgic2NhdHRlciIse2hvdmVyOnttb2RlOiJzaW5nbGUifSxzY2FsZXM6e3hBeGVzOlt7aWQ6IngtYXhpcy0xIix0eXBlOiJsaW5lYXIiLHBvc2l0aW9uOiJib3R0b20ifV0seUF4ZXM6W3tpZDoieS1heGlzLTEiLHR5cGU6ImxpbmVhciIscG9zaXRpb246ImxlZnQifV19LHNob3dMaW5lczohMSx0b29sdGlwczp7Y2FsbGJhY2tzOnt0aXRsZTpmdW5jdGlvbigpe3JldHVybiIifSxsYWJlbDpmdW5jdGlvbihlKXtyZXR1cm4iKCIrZS54TGFiZWwrIiwgIitlLnlMYWJlbCsiKSJ9fX19KSx0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jb250cm9sbGVycy5zY2F0dGVyPWUuY29udHJvbGxlcnMubGluZX19LHsyNjoyNn1dLDIyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjcpO249dC5leHBvcnRzPXIuZXh0ZW5kKHtjaGFydDpudWxsLGN1cnJlbnRTdGVwOjAsbnVtU3RlcHM6NjAsZWFzaW5nOiIiLHJlbmRlcjpudWxsLG9uQW5pbWF0aW9uUHJvZ3Jlc3M6bnVsbCxvbkFuaW1hdGlvbkNvbXBsZXRlOm51bGx9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsImFuaW1hdGlvbk9iamVjdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwiY2hhcnRJbnN0YW5jZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYXJ0fSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5jaGFydD1lfX0pfSx7Mjc6Mjd9XSwyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDI2KSxpPWUoNDYpO3IuX3NldCgiZ2xvYmFsIix7YW5pbWF0aW9uOntkdXJhdGlvbjoxZTMsZWFzaW5nOiJlYXNlT3V0UXVhcnQiLG9uUHJvZ3Jlc3M6aS5ub29wLG9uQ29tcGxldGU6aS5ub29wfX0pLHQuZXhwb3J0cz17ZnJhbWVEdXJhdGlvbjoxNyxhbmltYXRpb25zOltdLGRyb3BGcmFtZXM6MCxyZXF1ZXN0Om51bGwsYWRkQW5pbWF0aW9uOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLGEsbz10aGlzLmFuaW1hdGlvbnM7Zm9yKHQuY2hhcnQ9ZSxyfHwoZS5hbmltYXRpbmc9ITApLGk9MCxhPW8ubGVuZ3RoO2k8YTsrK2kpaWYob1tpXS5jaGFydD09PWUpcmV0dXJuIHZvaWQob1tpXT10KTtvLnB1c2godCksMT09PW8ubGVuZ3RoJiZ0aGlzLnJlcXVlc3RBbmltYXRpb25GcmFtZSgpfSxjYW5jZWxBbmltYXRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9aS5maW5kSW5kZXgodGhpcy5hbmltYXRpb25zLChmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFydD09PWV9KSk7LTEhPT10JiYodGhpcy5hbmltYXRpb25zLnNwbGljZSh0LDEpLGUuYW5pbWF0aW5nPSExKX0scmVxdWVzdEFuaW1hdGlvbkZyYW1lOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztudWxsPT09ZS5yZXF1ZXN0JiYoZS5yZXF1ZXN0PWkucmVxdWVzdEFuaW1GcmFtZS5jYWxsKHdpbmRvdywoZnVuY3Rpb24oKXtlLnJlcXVlc3Q9bnVsbCxlLnN0YXJ0RGlnZXN0KCl9KSkpfSxzdGFydERpZ2VzdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1EYXRlLm5vdygpLG49MDtlLmRyb3BGcmFtZXM+MSYmKG49TWF0aC5mbG9vcihlLmRyb3BGcmFtZXMpLGUuZHJvcEZyYW1lcz1lLmRyb3BGcmFtZXMlMSksZS5hZHZhbmNlKDErbik7dmFyIHI9RGF0ZS5ub3coKTtlLmRyb3BGcmFtZXMrPShyLXQpL2UuZnJhbWVEdXJhdGlvbixlLmFuaW1hdGlvbnMubGVuZ3RoPjAmJmUucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCl9LGFkdmFuY2U6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPXRoaXMuYW5pbWF0aW9ucyxhPTA7d2hpbGUoYTxyLmxlbmd0aCl0PXJbYV0sbj10LmNoYXJ0LHQuY3VycmVudFN0ZXA9KHQuY3VycmVudFN0ZXB8fDApK2UsdC5jdXJyZW50U3RlcD1NYXRoLm1pbih0LmN1cnJlbnRTdGVwLHQubnVtU3RlcHMpLGkuY2FsbGJhY2sodC5yZW5kZXIsW24sdF0sbiksaS5jYWxsYmFjayh0Lm9uQW5pbWF0aW9uUHJvZ3Jlc3MsW3RdLG4pLHQuY3VycmVudFN0ZXA+PXQubnVtU3RlcHM/KGkuY2FsbGJhY2sodC5vbkFuaW1hdGlvbkNvbXBsZXRlLFt0XSxuKSxuLmFuaW1hdGluZz0hMSxyLnNwbGljZShhLDEpKTorK2F9fX0sezI2OjI2LDQ2OjQ2fV0sMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyMiksaT1lKDIzKSxhPWUoMjYpLG89ZSg0Nikscz1lKDI5KSxjPWUoMzEpLGw9ZSg0OSksdT1lKDMyKSxkPWUoMzQpLHA9ZSgzNik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7ZT1lfHx7fTt2YXIgdD1lLmRhdGE9ZS5kYXRhfHx7fTtyZXR1cm4gdC5kYXRhc2V0cz10LmRhdGFzZXRzfHxbXSx0LmxhYmVscz10LmxhYmVsc3x8W10sZS5vcHRpb25zPW8uY29uZmlnTWVyZ2UoYS5nbG9iYWwsYVtlLnR5cGVdLGUub3B0aW9uc3x8e30pLGV9ZnVuY3Rpb24gbih0KXt2YXIgbj10Lm9wdGlvbnM7by5lYWNoKHQuc2NhbGVzLChmdW5jdGlvbihlKXtjLnJlbW92ZUJveCh0LGUpfSkpLG49by5jb25maWdNZXJnZShlLmRlZmF1bHRzLmdsb2JhbCxlLmRlZmF1bHRzW3QuY29uZmlnLnR5cGVdLG4pLHQub3B0aW9ucz10LmNvbmZpZy5vcHRpb25zPW4sdC5lbnN1cmVTY2FsZXNIYXZlSURzKCksdC5idWlsZE9yVXBkYXRlU2NhbGVzKCksdC50b29sdGlwLl9vcHRpb25zPW4udG9vbHRpcHMsdC50b29sdGlwLmluaXRpYWxpemUoKX1mdW5jdGlvbiBmKGUpe3JldHVybiJ0b3AiPT09ZXx8ImJvdHRvbSI9PT1lfWUudHlwZXM9e30sZS5pbnN0YW5jZXM9e30sZS5jb250cm9sbGVycz17fSxvLmV4dGVuZChlLnByb3RvdHlwZSx7Y29uc3RydWN0OmZ1bmN0aW9uKG4scil7dmFyIGk9dGhpcztyPXQocik7dmFyIGE9bC5hY3F1aXJlQ29udGV4dChuLHIpLHM9YSYmYS5jYW52YXMsYz1zJiZzLmhlaWdodCx1PXMmJnMud2lkdGg7aS5pZD1vLnVpZCgpLGkuY3R4PWEsaS5jYW52YXM9cyxpLmNvbmZpZz1yLGkud2lkdGg9dSxpLmhlaWdodD1jLGkuYXNwZWN0UmF0aW89Yz91L2M6bnVsbCxpLm9wdGlvbnM9ci5vcHRpb25zLGkuX2J1ZmZlcmVkUmVuZGVyPSExLGkuY2hhcnQ9aSxpLmNvbnRyb2xsZXI9aSxlLmluc3RhbmNlc1tpLmlkXT1pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJkYXRhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuY29uZmlnLmRhdGF9LHNldDpmdW5jdGlvbihlKXtpLmNvbmZpZy5kYXRhPWV9fSksYSYmcz8oaS5pbml0aWFsaXplKCksaS51cGRhdGUoKSk6Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBjaGFydDogY2FuJ3QgYWNxdWlyZSBjb250ZXh0IGZyb20gdGhlIGdpdmVuIGl0ZW0iKX0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHUubm90aWZ5KGUsImJlZm9yZUluaXQiKSxvLnJldGluYVNjYWxlKGUsZS5vcHRpb25zLmRldmljZVBpeGVsUmF0aW8pLGUuYmluZEV2ZW50cygpLGUub3B0aW9ucy5yZXNwb25zaXZlJiZlLnJlc2l6ZSghMCksZS5lbnN1cmVTY2FsZXNIYXZlSURzKCksZS5idWlsZE9yVXBkYXRlU2NhbGVzKCksZS5pbml0VG9vbFRpcCgpLHUubm90aWZ5KGUsImFmdGVySW5pdCIpLGV9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIG8uY2FudmFzLmNsZWFyKHRoaXMpLHRoaXN9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jYW5jZWxBbmltYXRpb24odGhpcyksdGhpc30scmVzaXplOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10Lm9wdGlvbnMscj10LmNhbnZhcyxpPW4ubWFpbnRhaW5Bc3BlY3RSYXRpbyYmdC5hc3BlY3RSYXRpb3x8bnVsbCxhPU1hdGgubWF4KDAsTWF0aC5mbG9vcihvLmdldE1heGltdW1XaWR0aChyKSkpLHM9TWF0aC5tYXgoMCxNYXRoLmZsb29yKGk/YS9pOm8uZ2V0TWF4aW11bUhlaWdodChyKSkpO2lmKCh0LndpZHRoIT09YXx8dC5oZWlnaHQhPT1zKSYmKHIud2lkdGg9dC53aWR0aD1hLHIuaGVpZ2h0PXQuaGVpZ2h0PXMsci5zdHlsZS53aWR0aD1hKyJweCIsci5zdHlsZS5oZWlnaHQ9cysicHgiLG8ucmV0aW5hU2NhbGUodCxuLmRldmljZVBpeGVsUmF0aW8pLCFlKSl7dmFyIGM9e3dpZHRoOmEsaGVpZ2h0OnN9O3Uubm90aWZ5KHQsInJlc2l6ZSIsW2NdKSx0Lm9wdGlvbnMub25SZXNpemUmJnQub3B0aW9ucy5vblJlc2l6ZSh0LGMpLHQuc3RvcCgpLHQudXBkYXRlKHtkdXJhdGlvbjp0Lm9wdGlvbnMucmVzcG9uc2l2ZUFuaW1hdGlvbkR1cmF0aW9ufSl9fSxlbnN1cmVTY2FsZXNIYXZlSURzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLHQ9ZS5zY2FsZXN8fHt9LG49ZS5zY2FsZTtvLmVhY2godC54QXhlcywoZnVuY3Rpb24oZSx0KXtlLmlkPWUuaWR8fCJ4LWF4aXMtIit0fSkpLG8uZWFjaCh0LnlBeGVzLChmdW5jdGlvbihlLHQpe2UuaWQ9ZS5pZHx8InktYXhpcy0iK3R9KSksbiYmKG4uaWQ9bi5pZHx8InNjYWxlIil9LGJ1aWxkT3JVcGRhdGVTY2FsZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLG49ZS5zY2FsZXN8fHt9LHI9W10saT1PYmplY3Qua2V5cyhuKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09ITEsZX0pLHt9KTt0LnNjYWxlcyYmKHI9ci5jb25jYXQoKHQuc2NhbGVzLnhBeGVzfHxbXSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm57b3B0aW9uczplLGR0eXBlOiJjYXRlZ29yeSIsZHBvc2l0aW9uOiJib3R0b20ifX0pKSwodC5zY2FsZXMueUF4ZXN8fFtdKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybntvcHRpb25zOmUsZHR5cGU6ImxpbmVhciIsZHBvc2l0aW9uOiJsZWZ0In19KSkpKSx0LnNjYWxlJiZyLnB1c2goe29wdGlvbnM6dC5zY2FsZSxkdHlwZToicmFkaWFsTGluZWFyIixpc0RlZmF1bHQ6ITAsZHBvc2l0aW9uOiJjaGFydEFyZWEifSksby5lYWNoKHIsKGZ1bmN0aW9uKHQpe3ZhciByPXQub3B0aW9ucyxhPXIuaWQscz1vLnZhbHVlT3JEZWZhdWx0KHIudHlwZSx0LmR0eXBlKTtmKHIucG9zaXRpb24pIT09Zih0LmRwb3NpdGlvbikmJihyLnBvc2l0aW9uPXQuZHBvc2l0aW9uKSxpW2FdPSEwO3ZhciBjPW51bGw7aWYoYSBpbiBuJiZuW2FdLnR5cGU9PT1zKWM9blthXSxjLm9wdGlvbnM9cixjLmN0eD1lLmN0eCxjLmNoYXJ0PWU7ZWxzZXt2YXIgbD1kLmdldFNjYWxlQ29uc3RydWN0b3Iocyk7aWYoIWwpcmV0dXJuO2M9bmV3IGwoe2lkOmEsdHlwZTpzLG9wdGlvbnM6cixjdHg6ZS5jdHgsY2hhcnQ6ZX0pLG5bYy5pZF09Y31jLm1lcmdlVGlja3NPcHRpb25zKCksdC5pc0RlZmF1bHQmJihlLnNjYWxlPWMpfSkpLG8uZWFjaChpLChmdW5jdGlvbihlLHQpe2V8fGRlbGV0ZSBuW3RdfSkpLGUuc2NhbGVzPW4sZC5hZGRTY2FsZXNUb0xheW91dCh0aGlzKX0sYnVpbGRPclVwZGF0ZUNvbnRyb2xsZXJzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPVtdLHI9W107cmV0dXJuIG8uZWFjaCh0LmRhdGEuZGF0YXNldHMsKGZ1bmN0aW9uKGksYSl7dmFyIG89dC5nZXREYXRhc2V0TWV0YShhKSxzPWkudHlwZXx8dC5jb25maWcudHlwZTtpZihvLnR5cGUmJm8udHlwZSE9PXMmJih0LmRlc3Ryb3lEYXRhc2V0TWV0YShhKSxvPXQuZ2V0RGF0YXNldE1ldGEoYSkpLG8udHlwZT1zLG4ucHVzaChvLnR5cGUpLG8uY29udHJvbGxlcilvLmNvbnRyb2xsZXIudXBkYXRlSW5kZXgoYSksby5jb250cm9sbGVyLmxpbmtTY2FsZXMoKTtlbHNle3ZhciBjPWUuY29udHJvbGxlcnNbby50eXBlXTtpZih2b2lkIDA9PT1jKXRocm93IG5ldyBFcnJvcignIicrby50eXBlKyciIGlzIG5vdCBhIGNoYXJ0IHR5cGUuJyk7by5jb250cm9sbGVyPW5ldyBjKHQsYSksci5wdXNoKG8uY29udHJvbGxlcil9fSksdCkscn0scmVzZXRFbGVtZW50czpmdW5jdGlvbigpe3ZhciBlPXRoaXM7by5lYWNoKGUuZGF0YS5kYXRhc2V0cywoZnVuY3Rpb24odCxuKXtlLmdldERhdGFzZXRNZXRhKG4pLmNvbnRyb2xsZXIucmVzZXQoKX0pLGUpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMucmVzZXRFbGVtZW50cygpLHRoaXMudG9vbHRpcC5pbml0aWFsaXplKCl9LHVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKGUmJiJvYmplY3QiPT09dHlwZW9mIGV8fChlPXtkdXJhdGlvbjplLGxhenk6YXJndW1lbnRzWzFdfSksbih0KSx1Ll9pbnZhbGlkYXRlKHQpLCExIT09dS5ub3RpZnkodCwiYmVmb3JlVXBkYXRlIikpe3QudG9vbHRpcC5fZGF0YT10LmRhdGE7dmFyIHI9dC5idWlsZE9yVXBkYXRlQ29udHJvbGxlcnMoKTtvLmVhY2godC5kYXRhLmRhdGFzZXRzLChmdW5jdGlvbihlLG4pe3QuZ2V0RGF0YXNldE1ldGEobikuY29udHJvbGxlci5idWlsZE9yVXBkYXRlRWxlbWVudHMoKX0pLHQpLHQudXBkYXRlTGF5b3V0KCksdC5vcHRpb25zLmFuaW1hdGlvbiYmdC5vcHRpb25zLmFuaW1hdGlvbi5kdXJhdGlvbiYmby5lYWNoKHIsKGZ1bmN0aW9uKGUpe2UucmVzZXQoKX0pKSx0LnVwZGF0ZURhdGFzZXRzKCksdC50b29sdGlwLmluaXRpYWxpemUoKSx0Lmxhc3RBY3RpdmU9W10sdS5ub3RpZnkodCwiYWZ0ZXJVcGRhdGUiKSx0Ll9idWZmZXJlZFJlbmRlcj90Ll9idWZmZXJlZFJlcXVlc3Q9e2R1cmF0aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGxhenk6ZS5sYXp5fTp0LnJlbmRlcihlKX19LHVwZGF0ZUxheW91dDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ITEhPT11Lm5vdGlmeShlLCJiZWZvcmVMYXlvdXQiKSYmKGMudXBkYXRlKHRoaXMsdGhpcy53aWR0aCx0aGlzLmhlaWdodCksdS5ub3RpZnkoZSwiYWZ0ZXJTY2FsZVVwZGF0ZSIpLHUubm90aWZ5KGUsImFmdGVyTGF5b3V0IikpfSx1cGRhdGVEYXRhc2V0czpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoITEhPT11Lm5vdGlmeShlLCJiZWZvcmVEYXRhc2V0c1VwZGF0ZSIpKXtmb3IodmFyIHQ9MCxuPWUuZGF0YS5kYXRhc2V0cy5sZW5ndGg7dDxuOysrdCllLnVwZGF0ZURhdGFzZXQodCk7dS5ub3RpZnkoZSwiYWZ0ZXJEYXRhc2V0c1VwZGF0ZSIpfX0sdXBkYXRlRGF0YXNldDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5nZXREYXRhc2V0TWV0YShlKSxyPXttZXRhOm4saW5kZXg6ZX07ITEhPT11Lm5vdGlmeSh0LCJiZWZvcmVEYXRhc2V0VXBkYXRlIixbcl0pJiYobi5jb250cm9sbGVyLnVwZGF0ZSgpLHUubm90aWZ5KHQsImFmdGVyRGF0YXNldFVwZGF0ZSIsW3JdKSl9LHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2UmJiJvYmplY3QiPT09dHlwZW9mIGV8fChlPXtkdXJhdGlvbjplLGxhenk6YXJndW1lbnRzWzFdfSk7dmFyIG49ZS5kdXJhdGlvbixhPWUubGF6eTtpZighMSE9PXUubm90aWZ5KHQsImJlZm9yZVJlbmRlciIpKXt2YXIgcz10Lm9wdGlvbnMuYW5pbWF0aW9uLGM9ZnVuY3Rpb24oZSl7dS5ub3RpZnkodCwiYWZ0ZXJSZW5kZXIiKSxvLmNhbGxiYWNrKHMmJnMub25Db21wbGV0ZSxbZV0sdCl9O2lmKHMmJigidW5kZWZpbmVkIiE9PXR5cGVvZiBuJiYwIT09bnx8InVuZGVmaW5lZCI9PT10eXBlb2YgbiYmMCE9PXMuZHVyYXRpb24pKXt2YXIgbD1uZXcgcih7bnVtU3RlcHM6KG58fHMuZHVyYXRpb24pLzE2LjY2LGVhc2luZzplLmVhc2luZ3x8cy5lYXNpbmcscmVuZGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49by5lYXNpbmcuZWZmZWN0c1t0LmVhc2luZ10scj10LmN1cnJlbnRTdGVwLGk9ci90Lm51bVN0ZXBzO2UuZHJhdyhuKGkpLGkscil9LG9uQW5pbWF0aW9uUHJvZ3Jlc3M6cy5vblByb2dyZXNzLG9uQW5pbWF0aW9uQ29tcGxldGU6Y30pO2kuYWRkQW5pbWF0aW9uKHQsbCxuLGEpfWVsc2UgdC5kcmF3KCksYyhuZXcgcih7bnVtU3RlcHM6MCxjaGFydDp0fSkpO3JldHVybiB0fX0sZHJhdzpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3QuY2xlYXIoKSxvLmlzTnVsbE9yVW5kZWYoZSkmJihlPTEpLHQudHJhbnNpdGlvbihlKSx0LndpZHRoPD0wfHx0LmhlaWdodDw9MHx8ITEhPT11Lm5vdGlmeSh0LCJiZWZvcmVEcmF3IixbZV0pJiYoby5lYWNoKHQuYm94ZXMsKGZ1bmN0aW9uKGUpe2UuZHJhdyh0LmNoYXJ0QXJlYSl9KSx0KSx0LnNjYWxlJiZ0LnNjYWxlLmRyYXcoKSx0LmRyYXdEYXRhc2V0cyhlKSx0Ll9kcmF3VG9vbHRpcChlKSx1Lm5vdGlmeSh0LCJhZnRlckRyYXciLFtlXSkpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLG49MCxyPSh0LmRhdGEuZGF0YXNldHN8fFtdKS5sZW5ndGg7bjxyOysrbil0LmlzRGF0YXNldFZpc2libGUobikmJnQuZ2V0RGF0YXNldE1ldGEobikuY29udHJvbGxlci50cmFuc2l0aW9uKGUpO3QudG9vbHRpcC50cmFuc2l0aW9uKGUpfSxkcmF3RGF0YXNldHM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZighMSE9PXUubm90aWZ5KHQsImJlZm9yZURhdGFzZXRzRHJhdyIsW2VdKSl7Zm9yKHZhciBuPSh0LmRhdGEuZGF0YXNldHN8fFtdKS5sZW5ndGgtMTtuPj0wOy0tbil0LmlzRGF0YXNldFZpc2libGUobikmJnQuZHJhd0RhdGFzZXQobixlKTt1Lm5vdGlmeSh0LCJhZnRlckRhdGFzZXRzRHJhdyIsW2VdKX19LGRyYXdEYXRhc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPW4uZ2V0RGF0YXNldE1ldGEoZSksaT17bWV0YTpyLGluZGV4OmUsZWFzaW5nVmFsdWU6dH07ITEhPT11Lm5vdGlmeShuLCJiZWZvcmVEYXRhc2V0RHJhdyIsW2ldKSYmKHIuY29udHJvbGxlci5kcmF3KHQpLHUubm90aWZ5KG4sImFmdGVyRGF0YXNldERyYXciLFtpXSkpfSxfZHJhd1Rvb2x0aXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQudG9vbHRpcCxyPXt0b29sdGlwOm4sZWFzaW5nVmFsdWU6ZX07ITEhPT11Lm5vdGlmeSh0LCJiZWZvcmVUb29sdGlwRHJhdyIsW3JdKSYmKG4uZHJhdygpLHUubm90aWZ5KHQsImFmdGVyVG9vbHRpcERyYXciLFtyXSkpfSxnZXRFbGVtZW50QXRFdmVudDpmdW5jdGlvbihlKXtyZXR1cm4gcy5tb2Rlcy5zaW5nbGUodGhpcyxlKX0sZ2V0RWxlbWVudHNBdEV2ZW50OmZ1bmN0aW9uKGUpe3JldHVybiBzLm1vZGVzLmxhYmVsKHRoaXMsZSx7aW50ZXJzZWN0OiEwfSl9LGdldEVsZW1lbnRzQXRYQXhpczpmdW5jdGlvbihlKXtyZXR1cm4gcy5tb2Rlc1sieC1heGlzIl0odGhpcyxlLHtpbnRlcnNlY3Q6ITB9KX0sZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9cy5tb2Rlc1t0XTtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIHI/cih0aGlzLGUsbik6W119LGdldERhdGFzZXRBdEV2ZW50OmZ1bmN0aW9uKGUpe3JldHVybiBzLm1vZGVzLmRhdGFzZXQodGhpcyxlLHtpbnRlcnNlY3Q6ITB9KX0sZ2V0RGF0YXNldE1ldGE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQuZGF0YS5kYXRhc2V0c1tlXTtuLl9tZXRhfHwobi5fbWV0YT17fSk7dmFyIHI9bi5fbWV0YVt0LmlkXTtyZXR1cm4gcnx8KHI9bi5fbWV0YVt0LmlkXT17dHlwZTpudWxsLGRhdGE6W10sZGF0YXNldDpudWxsLGNvbnRyb2xsZXI6bnVsbCxoaWRkZW46bnVsbCx4QXhpc0lEOm51bGwseUF4aXNJRDpudWxsfSkscn0sZ2V0VmlzaWJsZURhdGFzZXRDb3VudDpmdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MCxuPXRoaXMuZGF0YS5kYXRhc2V0cy5sZW5ndGg7dDxuOysrdCl0aGlzLmlzRGF0YXNldFZpc2libGUodCkmJmUrKztyZXR1cm4gZX0saXNEYXRhc2V0VmlzaWJsZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldERhdGFzZXRNZXRhKGUpO3JldHVybiJib29sZWFuIj09PXR5cGVvZiB0LmhpZGRlbj8hdC5oaWRkZW46IXRoaXMuZGF0YS5kYXRhc2V0c1tlXS5oaWRkZW59LGdlbmVyYXRlTGVnZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZWdlbmRDYWxsYmFjayh0aGlzKX0sZGVzdHJveURhdGFzZXRNZXRhOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaWQsbj10aGlzLmRhdGEuZGF0YXNldHNbZV0scj1uLl9tZXRhJiZuLl9tZXRhW3RdO3ImJihyLmNvbnRyb2xsZXIuZGVzdHJveSgpLGRlbGV0ZSBuLl9tZXRhW3RdKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciB0LG4scj10aGlzLGk9ci5jYW52YXM7Zm9yKHIuc3RvcCgpLHQ9MCxuPXIuZGF0YS5kYXRhc2V0cy5sZW5ndGg7dDxuOysrdClyLmRlc3Ryb3lEYXRhc2V0TWV0YSh0KTtpJiYoci51bmJpbmRFdmVudHMoKSxvLmNhbnZhcy5jbGVhcihyKSxsLnJlbGVhc2VDb250ZXh0KHIuY3R4KSxyLmNhbnZhcz1udWxsLHIuY3R4PW51bGwpLHUubm90aWZ5KHIsImRlc3Ryb3kiKSxkZWxldGUgZS5pbnN0YW5jZXNbci5pZF19LHRvQmFzZTY0SW1hZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW52YXMudG9EYXRhVVJMLmFwcGx5KHRoaXMuY2FudmFzLGFyZ3VtZW50cyl9LGluaXRUb29sVGlwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLnRvb2x0aXA9bmV3IHAoe19jaGFydDplLF9jaGFydEluc3RhbmNlOmUsX2RhdGE6ZS5kYXRhLF9vcHRpb25zOmUub3B0aW9ucy50b29sdGlwc30sZSl9LGJpbmRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5fbGlzdGVuZXJzPXt9LG49ZnVuY3Rpb24oKXtlLmV2ZW50SGFuZGxlci5hcHBseShlLGFyZ3VtZW50cyl9O28uZWFjaChlLm9wdGlvbnMuZXZlbnRzLChmdW5jdGlvbihyKXtsLmFkZEV2ZW50TGlzdGVuZXIoZSxyLG4pLHRbcl09bn0pKSxlLm9wdGlvbnMucmVzcG9uc2l2ZSYmKG49ZnVuY3Rpb24oKXtlLnJlc2l6ZSgpfSxsLmFkZEV2ZW50TGlzdGVuZXIoZSwicmVzaXplIixuKSx0LnJlc2l6ZT1uKX0sdW5iaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuX2xpc3RlbmVyczt0JiYoZGVsZXRlIGUuX2xpc3RlbmVycyxvLmVhY2godCwoZnVuY3Rpb24odCxuKXtsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuLHQpfSkpKX0sdXBkYXRlSG92ZXJTdHlsZTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxhLG89bj8ic2V0SG92ZXJTdHlsZSI6InJlbW92ZUhvdmVyU3R5bGUiO2ZvcihpPTAsYT1lLmxlbmd0aDtpPGE7KytpKXI9ZVtpXSxyJiZ0aGlzLmdldERhdGFzZXRNZXRhKHIuX2RhdGFzZXRJbmRleCkuY29udHJvbGxlcltvXShyKX0sZXZlbnRIYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10LnRvb2x0aXA7aWYoITEhPT11Lm5vdGlmeSh0LCJiZWZvcmVFdmVudCIsW2VdKSl7dC5fYnVmZmVyZWRSZW5kZXI9ITAsdC5fYnVmZmVyZWRSZXF1ZXN0PW51bGw7dmFyIHI9dC5oYW5kbGVFdmVudChlKTtuJiYocj1uLl9zdGFydD9uLmhhbmRsZUV2ZW50KGUpOnJ8bi5oYW5kbGVFdmVudChlKSksdS5ub3RpZnkodCwiYWZ0ZXJFdmVudCIsW2VdKTt2YXIgaT10Ll9idWZmZXJlZFJlcXVlc3Q7cmV0dXJuIGk/dC5yZW5kZXIoaSk6ciYmIXQuYW5pbWF0aW5nJiYodC5zdG9wKCksdC5yZW5kZXIoe2R1cmF0aW9uOnQub3B0aW9ucy5ob3Zlci5hbmltYXRpb25EdXJhdGlvbixsYXp5OiEwfSkpLHQuX2J1ZmZlcmVkUmVuZGVyPSExLHQuX2J1ZmZlcmVkUmVxdWVzdD1udWxsLHR9fSxoYW5kbGVFdmVudDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5vcHRpb25zfHx7fSxyPW4uaG92ZXIsaT0hMTtyZXR1cm4gdC5sYXN0QWN0aXZlPXQubGFzdEFjdGl2ZXx8W10sIm1vdXNlb3V0Ij09PWUudHlwZT90LmFjdGl2ZT1bXTp0LmFjdGl2ZT10LmdldEVsZW1lbnRzQXRFdmVudEZvck1vZGUoZSxyLm1vZGUsciksby5jYWxsYmFjayhuLm9uSG92ZXJ8fG4uaG92ZXIub25Ib3ZlcixbZS5uYXRpdmUsdC5hY3RpdmVdLHQpLCJtb3VzZXVwIiE9PWUudHlwZSYmImNsaWNrIiE9PWUudHlwZXx8bi5vbkNsaWNrJiZuLm9uQ2xpY2suY2FsbCh0LGUubmF0aXZlLHQuYWN0aXZlKSx0Lmxhc3RBY3RpdmUubGVuZ3RoJiZ0LnVwZGF0ZUhvdmVyU3R5bGUodC5sYXN0QWN0aXZlLHIubW9kZSwhMSksdC5hY3RpdmUubGVuZ3RoJiZyLm1vZGUmJnQudXBkYXRlSG92ZXJTdHlsZSh0LmFjdGl2ZSxyLm1vZGUsITApLGk9IW8uYXJyYXlFcXVhbHModC5hY3RpdmUsdC5sYXN0QWN0aXZlKSx0Lmxhc3RBY3RpdmU9dC5hY3RpdmUsaX19KSxlLkNvbnRyb2xsZXI9ZX19LHsyMjoyMiwyMzoyMywyNjoyNiwyOToyOSwzMTozMSwzMjozMiwzNDozNCwzNjozNiw0Njo0Niw0OTo0OX1dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDYpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1bInB1c2giLCJwb3AiLCJzaGlmdCIsInNwbGljZSIsInVuc2hpZnQiXTtmdW5jdGlvbiBuKGUsbil7ZS5fY2hhcnRqcz9lLl9jaGFydGpzLmxpc3RlbmVycy5wdXNoKG4pOihPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX2NoYXJ0anMiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTp7bGlzdGVuZXJzOltuXX19KSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPSJvbkRhdGEiK3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKSxpPWVbdF07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLGE9aS5hcHBseSh0aGlzLHQpO3JldHVybiByLmVhY2goZS5fY2hhcnRqcy5saXN0ZW5lcnMsKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PT10eXBlb2YgZVtuXSYmZVtuXS5hcHBseShlLHQpfSkpLGF9fSl9KSkpfWZ1bmN0aW9uIGkoZSxuKXt2YXIgcj1lLl9jaGFydGpzO2lmKHIpe3ZhciBpPXIubGlzdGVuZXJzLGE9aS5pbmRleE9mKG4pOy0xIT09YSYmaS5zcGxpY2UoYSwxKSxpLmxlbmd0aD4wfHwodC5mb3JFYWNoKChmdW5jdGlvbih0KXtkZWxldGUgZVt0XX0pKSxkZWxldGUgZS5fY2hhcnRqcyl9fWUuRGF0YXNldENvbnRyb2xsZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLmluaXRpYWxpemUoZSx0KX0sci5leHRlbmQoZS5EYXRhc2V0Q29udHJvbGxlci5wcm90b3R5cGUse2RhdGFzZXRFbGVtZW50VHlwZTpudWxsLGRhdGFFbGVtZW50VHlwZTpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO24uY2hhcnQ9ZSxuLmluZGV4PXQsbi5saW5rU2NhbGVzKCksbi5hZGRFbGVtZW50cygpfSx1cGRhdGVJbmRleDpmdW5jdGlvbihlKXt0aGlzLmluZGV4PWV9LGxpbmtTY2FsZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5nZXRNZXRhKCksbj1lLmdldERhdGFzZXQoKTtudWxsIT09dC54QXhpc0lEJiZ0LnhBeGlzSUQgaW4gZS5jaGFydC5zY2FsZXN8fCh0LnhBeGlzSUQ9bi54QXhpc0lEfHxlLmNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnhBeGVzWzBdLmlkKSxudWxsIT09dC55QXhpc0lEJiZ0LnlBeGlzSUQgaW4gZS5jaGFydC5zY2FsZXN8fCh0LnlBeGlzSUQ9bi55QXhpc0lEfHxlLmNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnlBeGVzWzBdLmlkKX0sZ2V0RGF0YXNldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbdGhpcy5pbmRleF19LGdldE1ldGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFydC5nZXREYXRhc2V0TWV0YSh0aGlzLmluZGV4KX0sZ2V0U2NhbGVGb3JJZDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jaGFydC5zY2FsZXNbZV19LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy51cGRhdGUoITApfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fZGF0YSYmaSh0aGlzLl9kYXRhLHRoaXMpfSxjcmVhdGVNZXRhRGF0YXNldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmRhdGFzZXRFbGVtZW50VHlwZTtyZXR1cm4gdCYmbmV3IHQoe19jaGFydDplLmNoYXJ0LF9kYXRhc2V0SW5kZXg6ZS5pbmRleH0pfSxjcmVhdGVNZXRhRGF0YTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5kYXRhRWxlbWVudFR5cGU7cmV0dXJuIG4mJm5ldyBuKHtfY2hhcnQ6dC5jaGFydCxfZGF0YXNldEluZGV4OnQuaW5kZXgsX2luZGV4OmV9KX0sYWRkRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgZSx0LG49dGhpcyxyPW4uZ2V0TWV0YSgpLGk9bi5nZXREYXRhc2V0KCkuZGF0YXx8W10sYT1yLmRhdGE7Zm9yKGU9MCx0PWkubGVuZ3RoO2U8dDsrK2UpYVtlXT1hW2VdfHxuLmNyZWF0ZU1ldGFEYXRhKGUpO3IuZGF0YXNldD1yLmRhdGFzZXR8fG4uY3JlYXRlTWV0YURhdGFzZXQoKX0sYWRkRWxlbWVudEFuZFJlc2V0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3JlYXRlTWV0YURhdGEoZSk7dGhpcy5nZXRNZXRhKCkuZGF0YS5zcGxpY2UoZSwwLHQpLHRoaXMudXBkYXRlRWxlbWVudCh0LGUsITApfSxidWlsZE9yVXBkYXRlRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5nZXREYXRhc2V0KCkscj10LmRhdGF8fCh0LmRhdGE9W10pO2UuX2RhdGEhPT1yJiYoZS5fZGF0YSYmaShlLl9kYXRhLGUpLG4ocixlKSxlLl9kYXRhPXIpLGUucmVzeW5jRWxlbWVudHMoKX0sdXBkYXRlOnIubm9vcCx0cmFuc2l0aW9uOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLmdldE1ldGEoKSxuPXQuZGF0YXx8W10scj1uLmxlbmd0aCxpPTA7aTxyOysraSluW2ldLnRyYW5zaXRpb24oZSk7dC5kYXRhc2V0JiZ0LmRhdGFzZXQudHJhbnNpdGlvbihlKX0sZHJhdzpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0TWV0YSgpLHQ9ZS5kYXRhfHxbXSxuPXQubGVuZ3RoLHI9MDtmb3IoZS5kYXRhc2V0JiZlLmRhdGFzZXQuZHJhdygpO3I8bjsrK3IpdFtyXS5kcmF3KCl9LHJlbW92ZUhvdmVyU3R5bGU6ZnVuY3Rpb24oZSl7ci5tZXJnZShlLl9tb2RlbCxlLiRwcmV2aW91c1N0eWxlfHx7fSksZGVsZXRlIGUuJHByZXZpb3VzU3R5bGV9LHNldEhvdmVyU3R5bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW2UuX2RhdGFzZXRJbmRleF0sbj1lLl9pbmRleCxpPWUuY3VzdG9tfHx7fSxhPXIudmFsdWVBdEluZGV4T3JEZWZhdWx0LG89ci5nZXRIb3ZlckNvbG9yLHM9ZS5fbW9kZWw7ZS4kcHJldmlvdXNTdHlsZT17YmFja2dyb3VuZENvbG9yOnMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnMuYm9yZGVyQ29sb3IsYm9yZGVyV2lkdGg6cy5ib3JkZXJXaWR0aH0scy5iYWNrZ3JvdW5kQ29sb3I9aS5ob3ZlckJhY2tncm91bmRDb2xvcj9pLmhvdmVyQmFja2dyb3VuZENvbG9yOmEodC5ob3ZlckJhY2tncm91bmRDb2xvcixuLG8ocy5iYWNrZ3JvdW5kQ29sb3IpKSxzLmJvcmRlckNvbG9yPWkuaG92ZXJCb3JkZXJDb2xvcj9pLmhvdmVyQm9yZGVyQ29sb3I6YSh0LmhvdmVyQm9yZGVyQ29sb3IsbixvKHMuYm9yZGVyQ29sb3IpKSxzLmJvcmRlcldpZHRoPWkuaG92ZXJCb3JkZXJXaWR0aD9pLmhvdmVyQm9yZGVyV2lkdGg6YSh0LmhvdmVyQm9yZGVyV2lkdGgsbixzLmJvcmRlcldpZHRoKX0scmVzeW5jRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5nZXRNZXRhKCksbj1lLmdldERhdGFzZXQoKS5kYXRhLHI9dC5kYXRhLmxlbmd0aCxpPW4ubGVuZ3RoO2k8cj90LmRhdGEuc3BsaWNlKGksci1pKTppPnImJmUuaW5zZXJ0RWxlbWVudHMocixpLXIpfSxpbnNlcnRFbGVtZW50czpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDsrK24pdGhpcy5hZGRFbGVtZW50QW5kUmVzZXQoZStuKX0sb25EYXRhUHVzaDpmdW5jdGlvbigpe3RoaXMuaW5zZXJ0RWxlbWVudHModGhpcy5nZXREYXRhc2V0KCkuZGF0YS5sZW5ndGgtMSxhcmd1bWVudHMubGVuZ3RoKX0sb25EYXRhUG9wOmZ1bmN0aW9uKCl7dGhpcy5nZXRNZXRhKCkuZGF0YS5wb3AoKX0sb25EYXRhU2hpZnQ6ZnVuY3Rpb24oKXt0aGlzLmdldE1ldGEoKS5kYXRhLnNoaWZ0KCl9LG9uRGF0YVNwbGljZTpmdW5jdGlvbihlLHQpe3RoaXMuZ2V0TWV0YSgpLmRhdGEuc3BsaWNlKGUsdCksdGhpcy5pbnNlcnRFbGVtZW50cyhlLGFyZ3VtZW50cy5sZW5ndGgtMil9LG9uRGF0YVVuc2hpZnQ6ZnVuY3Rpb24oKXt0aGlzLmluc2VydEVsZW1lbnRzKDAsYXJndW1lbnRzLmxlbmd0aCl9fSksZS5EYXRhc2V0Q29udHJvbGxlci5leHRlbmQ9ci5pbmhlcml0c319LHs0Njo0Nn1dLDI2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDYpO3QuZXhwb3J0cz17X3NldDpmdW5jdGlvbihlLHQpe3JldHVybiByLm1lcmdlKHRoaXNbZV18fCh0aGlzW2VdPXt9KSx0KX19fSx7NDY6NDZ9XSwyNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMpLGk9ZSg0Nik7ZnVuY3Rpb24gYShlLHQsbixpKXt2YXIgYSxvLHMsYyxsLHUsZCxwLGYsaD1PYmplY3Qua2V5cyhuKTtmb3IoYT0wLG89aC5sZW5ndGg7YTxvOysrYSlpZihzPWhbYV0sdT1uW3NdLHQuaGFzT3duUHJvcGVydHkocyl8fCh0W3NdPXUpLGM9dFtzXSxjIT09dSYmIl8iIT09c1swXSl7aWYoZS5oYXNPd25Qcm9wZXJ0eShzKXx8KGVbc109YyksbD1lW3NdLGQ9dHlwZW9mIHUsZD09PXR5cGVvZiBsKWlmKCJzdHJpbmciPT09ZCl7aWYocD1yKGwpLHAudmFsaWQmJihmPXIodSksZi52YWxpZCkpe3Rbc109Zi5taXgocCxpKS5yZ2JTdHJpbmcoKTtjb250aW51ZX19ZWxzZSBpZigibnVtYmVyIj09PWQmJmlzRmluaXRlKGwpJiZpc0Zpbml0ZSh1KSl7dFtzXT1sKyh1LWwpKmk7Y29udGludWV9dFtzXT11fX12YXIgbz1mdW5jdGlvbihlKXtpLmV4dGVuZCh0aGlzLGUpLHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2kuZXh0ZW5kKG8ucHJvdG90eXBlLHtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5oaWRkZW49ITF9LHBpdm90OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5fdmlld3x8KGUuX3ZpZXc9aS5jbG9uZShlLl9tb2RlbCkpLGUuX3N0YXJ0PXt9LGV9LHRyYW5zaXRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQuX21vZGVsLHI9dC5fc3RhcnQsaT10Ll92aWV3O3JldHVybiBuJiYxIT09ZT8oaXx8KGk9dC5fdmlldz17fSkscnx8KHI9dC5fc3RhcnQ9e30pLGEocixpLG4sZSksdCk6KHQuX3ZpZXc9bix0Ll9zdGFydD1udWxsLHQpfSx0b29sdGlwUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm57eDp0aGlzLl9tb2RlbC54LHk6dGhpcy5fbW9kZWwueX19LGhhc1ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuaXNOdW1iZXIodGhpcy5fbW9kZWwueCkmJmkuaXNOdW1iZXIodGhpcy5fbW9kZWwueSl9fSksby5leHRlbmQ9aS5pbmhlcml0cyx0LmV4cG9ydHM9b30sezM6Myw0Njo0Nn1dLDI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMyksaT1lKDI2KSxhPWUoNDYpLG89ZSgzNCk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dmFyIHI7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZT8ocj1wYXJzZUludChlLDEwKSwtMSE9PWUuaW5kZXhPZigiJSIpJiYocj1yLzEwMCp0LnBhcmVudE5vZGVbbl0pKTpyPWUscn1mdW5jdGlvbiB0KGUpe3JldHVybiB2b2lkIDAhPT1lJiZudWxsIT09ZSYmIm5vbmUiIT09ZX1mdW5jdGlvbiBuKG4scixpKXt2YXIgbz1kb2N1bWVudC5kZWZhdWx0VmlldyxzPWEuX2dldFBhcmVudE5vZGUobiksYz1vLmdldENvbXB1dGVkU3R5bGUobilbcl0sbD1vLmdldENvbXB1dGVkU3R5bGUocylbcl0sdT10KGMpLGQ9dChsKSxwPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtyZXR1cm4gdXx8ZD9NYXRoLm1pbih1P2UoYyxuLGkpOnAsZD9lKGwscyxpKTpwKToibm9uZSJ9YS5jb25maWdNZXJnZT1mdW5jdGlvbigpe3JldHVybiBhLm1lcmdlKGEuY2xvbmUoYXJndW1lbnRzWzBdKSxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSx7bWVyZ2VyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRbZV18fHt9LHM9bltlXTsic2NhbGVzIj09PWU/dFtlXT1hLnNjYWxlTWVyZ2UoaSxzKToic2NhbGUiPT09ZT90W2VdPWEubWVyZ2UoaSxbby5nZXRTY2FsZURlZmF1bHRzKHMudHlwZSksc10pOmEuX21lcmdlcihlLHQsbixyKX19KX0sYS5zY2FsZU1lcmdlPWZ1bmN0aW9uKCl7cmV0dXJuIGEubWVyZ2UoYS5jbG9uZShhcmd1bWVudHNbMF0pLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHttZXJnZXI6ZnVuY3Rpb24oZSx0LG4scil7aWYoInhBeGVzIj09PWV8fCJ5QXhlcyI9PT1lKXt2YXIgaSxzLGMsbD1uW2VdLmxlbmd0aDtmb3IodFtlXXx8KHRbZV09W10pLGk9MDtpPGw7KytpKWM9bltlXVtpXSxzPWEudmFsdWVPckRlZmF1bHQoYy50eXBlLCJ4QXhlcyI9PT1lPyJjYXRlZ29yeSI6ImxpbmVhciIpLGk+PXRbZV0ubGVuZ3RoJiZ0W2VdLnB1c2goe30pLCF0W2VdW2ldLnR5cGV8fGMudHlwZSYmYy50eXBlIT09dFtlXVtpXS50eXBlP2EubWVyZ2UodFtlXVtpXSxbby5nZXRTY2FsZURlZmF1bHRzKHMpLGNdKTphLm1lcmdlKHRbZV1baV0sYyl9ZWxzZSBhLl9tZXJnZXIoZSx0LG4scil9fSl9LGEud2hlcmU9ZnVuY3Rpb24oZSx0KXtpZihhLmlzQXJyYXkoZSkmJkFycmF5LnByb3RvdHlwZS5maWx0ZXIpcmV0dXJuIGUuZmlsdGVyKHQpO3ZhciBuPVtdO3JldHVybiBhLmVhY2goZSwoZnVuY3Rpb24oZSl7dChlKSYmbi5wdXNoKGUpfSkpLG59LGEuZmluZEluZGV4PUFycmF5LnByb3RvdHlwZS5maW5kSW5kZXg/ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmZpbmRJbmRleCh0LG4pfTpmdW5jdGlvbihlLHQsbil7bj12b2lkIDA9PT1uP2U6bjtmb3IodmFyIHI9MCxpPWUubGVuZ3RoO3I8aTsrK3IpaWYodC5jYWxsKG4sZVtyXSxyLGUpKXJldHVybiByO3JldHVybi0xfSxhLmZpbmROZXh0V2hlcmU9ZnVuY3Rpb24oZSx0LG4pe2EuaXNOdWxsT3JVbmRlZihuKSYmKG49LTEpO2Zvcih2YXIgcj1uKzE7cjxlLmxlbmd0aDtyKyspe3ZhciBpPWVbcl07aWYodChpKSlyZXR1cm4gaX19LGEuZmluZFByZXZpb3VzV2hlcmU9ZnVuY3Rpb24oZSx0LG4pe2EuaXNOdWxsT3JVbmRlZihuKSYmKG49ZS5sZW5ndGgpO2Zvcih2YXIgcj1uLTE7cj49MDtyLS0pe3ZhciBpPWVbcl07aWYodChpKSlyZXR1cm4gaX19LGEuaXNOdW1iZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoZSkpJiZpc0Zpbml0ZShlKX0sYS5hbG1vc3RFcXVhbHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBNYXRoLmFicyhlLXQpPG59LGEuYWxtb3N0V2hvbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1NYXRoLnJvdW5kKGUpO3JldHVybiBuLXQ8ZSYmbit0PmV9LGEubWF4PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gaXNOYU4odCk/ZTpNYXRoLm1heChlLHQpfSksTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKX0sYS5taW49ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBpc05hTih0KT9lOk1hdGgubWluKGUsdCl9KSxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfSxhLnNpZ249TWF0aC5zaWduP2Z1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNpZ24oZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBlPStlLDA9PT1lfHxpc05hTihlKT9lOmU+MD8xOi0xfSxhLmxvZzEwPU1hdGgubG9nMTA/ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nMTAoZSl9OmZ1bmN0aW9uKGUpe3ZhciB0PU1hdGgubG9nKGUpKk1hdGguTE9HMTBFLG49TWF0aC5yb3VuZCh0KSxyPWU9PT1NYXRoLnBvdygxMCxuKTtyZXR1cm4gcj9uOnR9LGEudG9SYWRpYW5zPWZ1bmN0aW9uKGUpe3JldHVybiBlKihNYXRoLlBJLzE4MCl9LGEudG9EZWdyZWVzPWZ1bmN0aW9uKGUpe3JldHVybiBlKigxODAvTWF0aC5QSSl9LGEuZ2V0QW5nbGVGcm9tUG9pbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LngtZS54LHI9dC55LWUueSxpPU1hdGguc3FydChuKm4rcipyKSxhPU1hdGguYXRhbjIocixuKTtyZXR1cm4gYTwtLjUqTWF0aC5QSSYmKGErPTIqTWF0aC5QSSkse2FuZ2xlOmEsZGlzdGFuY2U6aX19LGEuZGlzdGFuY2VCZXR3ZWVuUG9pbnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyh0LngtZS54LDIpK01hdGgucG93KHQueS1lLnksMikpfSxhLmFsaWFzUGl4ZWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUlMj09PTA/MDouNX0sYS5zcGxpbmVDdXJ2ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1lLnNraXA/dDplLGE9dCxvPW4uc2tpcD90Om4scz1NYXRoLnNxcnQoTWF0aC5wb3coYS54LWkueCwyKStNYXRoLnBvdyhhLnktaS55LDIpKSxjPU1hdGguc3FydChNYXRoLnBvdyhvLngtYS54LDIpK01hdGgucG93KG8ueS1hLnksMikpLGw9cy8ocytjKSx1PWMvKHMrYyk7bD1pc05hTihsKT8wOmwsdT1pc05hTih1KT8wOnU7dmFyIGQ9cipsLHA9cip1O3JldHVybntwcmV2aW91czp7eDphLngtZCooby54LWkueCkseTphLnktZCooby55LWkueSl9LG5leHQ6e3g6YS54K3AqKG8ueC1pLngpLHk6YS55K3AqKG8ueS1pLnkpfX19LGEuRVBTSUxPTj1OdW1iZXIuRVBTSUxPTnx8MWUtMTQsYS5zcGxpbmVDdXJ2ZU1vbm90b25lPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8scyxjLGwsdSxkPShlfHxbXSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm57bW9kZWw6ZS5fbW9kZWwsZGVsdGFLOjAsbUs6MH19KSkscD1kLmxlbmd0aDtmb3IodD0wO3Q8cDsrK3QpaWYocj1kW3RdLCFyLm1vZGVsLnNraXApe2lmKG49dD4wP2RbdC0xXTpudWxsLGk9dDxwLTE/ZFt0KzFdOm51bGwsaSYmIWkubW9kZWwuc2tpcCl7dmFyIGY9aS5tb2RlbC54LXIubW9kZWwueDtyLmRlbHRhSz0wIT09Zj8oaS5tb2RlbC55LXIubW9kZWwueSkvZjowfSFufHxuLm1vZGVsLnNraXA/ci5tSz1yLmRlbHRhSzohaXx8aS5tb2RlbC5za2lwP3IubUs9bi5kZWx0YUs6dGhpcy5zaWduKG4uZGVsdGFLKSE9PXRoaXMuc2lnbihyLmRlbHRhSyk/ci5tSz0wOnIubUs9KG4uZGVsdGFLK3IuZGVsdGFLKS8yfWZvcih0PTA7dDxwLTE7Kyt0KXI9ZFt0XSxpPWRbdCsxXSxyLm1vZGVsLnNraXB8fGkubW9kZWwuc2tpcHx8KGEuYWxtb3N0RXF1YWxzKHIuZGVsdGFLLDAsdGhpcy5FUFNJTE9OKT9yLm1LPWkubUs9MDoobz1yLm1LL3IuZGVsdGFLLHM9aS5tSy9yLmRlbHRhSyxsPU1hdGgucG93KG8sMikrTWF0aC5wb3cocywyKSxsPD05fHwoYz0zL01hdGguc3FydChsKSxyLm1LPW8qYypyLmRlbHRhSyxpLm1LPXMqYypyLmRlbHRhSykpKTtmb3IodD0wO3Q8cDsrK3Qpcj1kW3RdLHIubW9kZWwuc2tpcHx8KG49dD4wP2RbdC0xXTpudWxsLGk9dDxwLTE/ZFt0KzFdOm51bGwsbiYmIW4ubW9kZWwuc2tpcCYmKHU9KHIubW9kZWwueC1uLm1vZGVsLngpLzMsci5tb2RlbC5jb250cm9sUG9pbnRQcmV2aW91c1g9ci5tb2RlbC54LXUsci5tb2RlbC5jb250cm9sUG9pbnRQcmV2aW91c1k9ci5tb2RlbC55LXUqci5tSyksaSYmIWkubW9kZWwuc2tpcCYmKHU9KGkubW9kZWwueC1yLm1vZGVsLngpLzMsci5tb2RlbC5jb250cm9sUG9pbnROZXh0WD1yLm1vZGVsLngrdSxyLm1vZGVsLmNvbnRyb2xQb2ludE5leHRZPXIubW9kZWwueSt1KnIubUspKX0sYS5uZXh0SXRlbT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dD49ZS5sZW5ndGgtMT9lWzBdOmVbdCsxXTp0Pj1lLmxlbmd0aC0xP2VbZS5sZW5ndGgtMV06ZVt0KzFdfSxhLnByZXZpb3VzSXRlbT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dDw9MD9lW2UubGVuZ3RoLTFdOmVbdC0xXTp0PD0wP2VbMF06ZVt0LTFdfSxhLm5pY2VOdW09ZnVuY3Rpb24oZSx0KXt2YXIgbixyPU1hdGguZmxvb3IoYS5sb2cxMChlKSksaT1lL01hdGgucG93KDEwLHIpO3JldHVybiBuPXQ/aTwxLjU/MTppPDM/MjppPDc/NToxMDppPD0xPzE6aTw9Mj8yOmk8PTU/NToxMCxuKk1hdGgucG93KDEwLHIpfSxhLnJlcXVlc3RBbmltRnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3c/ZnVuY3Rpb24oZSl7ZSgpfTp3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cub1JlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbihlKXtyZXR1cm4gd2luZG93LnNldFRpbWVvdXQoZSwxZTMvNjApfX0oKSxhLmdldFJlbGF0aXZlUG9zaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk9ZS5vcmlnaW5hbEV2ZW50fHxlLG89ZS50YXJnZXR8fGUuc3JjRWxlbWVudCxzPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYz1pLnRvdWNoZXM7YyYmYy5sZW5ndGg+MD8obj1jWzBdLmNsaWVudFgscj1jWzBdLmNsaWVudFkpOihuPWkuY2xpZW50WCxyPWkuY2xpZW50WSk7dmFyIGw9cGFyc2VGbG9hdChhLmdldFN0eWxlKG8sInBhZGRpbmctbGVmdCIpKSx1PXBhcnNlRmxvYXQoYS5nZXRTdHlsZShvLCJwYWRkaW5nLXRvcCIpKSxkPXBhcnNlRmxvYXQoYS5nZXRTdHlsZShvLCJwYWRkaW5nLXJpZ2h0IikpLHA9cGFyc2VGbG9hdChhLmdldFN0eWxlKG8sInBhZGRpbmctYm90dG9tIikpLGY9cy5yaWdodC1zLmxlZnQtbC1kLGg9cy5ib3R0b20tcy50b3AtdS1wO3JldHVybiBuPU1hdGgucm91bmQoKG4tcy5sZWZ0LWwpL2Yqby53aWR0aC90LmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvKSxyPU1hdGgucm91bmQoKHItcy50b3AtdSkvaCpvLmhlaWdodC90LmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvKSx7eDpuLHk6cn19LGEuZ2V0Q29uc3RyYWludFdpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUsIm1heC13aWR0aCIsImNsaWVudFdpZHRoIil9LGEuZ2V0Q29uc3RyYWludEhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gbihlLCJtYXgtaGVpZ2h0IiwiY2xpZW50SGVpZ2h0Iil9LGEuX2NhbGN1bGF0ZVBhZGRpbmc9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PWEuZ2V0U3R5bGUoZSx0KSx0LmluZGV4T2YoIiUiKT4tMT9uL3BhcnNlSW50KHQsMTApOnBhcnNlSW50KHQsMTApfSxhLl9nZXRQYXJlbnROb2RlPWZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5ob3N0JiYodD10Lmhvc3QpLHR9LGEuZ2V0TWF4aW11bVdpZHRoPWZ1bmN0aW9uKGUpe3ZhciB0PWEuX2dldFBhcmVudE5vZGUoZSk7aWYoIXQpcmV0dXJuIGUuY2xpZW50V2lkdGg7dmFyIG49dC5jbGllbnRXaWR0aCxyPWEuX2NhbGN1bGF0ZVBhZGRpbmcodCwicGFkZGluZy1sZWZ0IixuKSxpPWEuX2NhbGN1bGF0ZVBhZGRpbmcodCwicGFkZGluZy1yaWdodCIsbiksbz1uLXItaSxzPWEuZ2V0Q29uc3RyYWludFdpZHRoKGUpO3JldHVybiBpc05hTihzKT9vOk1hdGgubWluKG8scyl9LGEuZ2V0TWF4aW11bUhlaWdodD1mdW5jdGlvbihlKXt2YXIgdD1hLl9nZXRQYXJlbnROb2RlKGUpO2lmKCF0KXJldHVybiBlLmNsaWVudEhlaWdodDt2YXIgbj10LmNsaWVudEhlaWdodCxyPWEuX2NhbGN1bGF0ZVBhZGRpbmcodCwicGFkZGluZy10b3AiLG4pLGk9YS5fY2FsY3VsYXRlUGFkZGluZyh0LCJwYWRkaW5nLWJvdHRvbSIsbiksbz1uLXItaSxzPWEuZ2V0Q29uc3RyYWludEhlaWdodChlKTtyZXR1cm4gaXNOYU4ocyk/bzpNYXRoLm1pbihvLHMpfSxhLmdldFN0eWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY3VycmVudFN0eWxlP2UuY3VycmVudFN0eWxlW3RdOmRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpfSxhLnJldGluYVNjYWxlPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbz10fHwidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxO2lmKDEhPT1uKXt2YXIgcj1lLmNhbnZhcyxpPWUuaGVpZ2h0LGE9ZS53aWR0aDtyLmhlaWdodD1pKm4sci53aWR0aD1hKm4sZS5jdHguc2NhbGUobixuKSxyLnN0eWxlLmhlaWdodHx8ci5zdHlsZS53aWR0aHx8KHIuc3R5bGUuaGVpZ2h0PWkrInB4IixyLnN0eWxlLndpZHRoPWErInB4Iil9fSxhLmZvbnRTdHJpbmc9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0KyIgIitlKyJweCAiK259LGEubG9uZ2VzdFRleHQ9ZnVuY3Rpb24oZSx0LG4scil7cj1yfHx7fTt2YXIgaT1yLmRhdGE9ci5kYXRhfHx7fSxvPXIuZ2FyYmFnZUNvbGxlY3Q9ci5nYXJiYWdlQ29sbGVjdHx8W107ci5mb250IT09dCYmKGk9ci5kYXRhPXt9LG89ci5nYXJiYWdlQ29sbGVjdD1bXSxyLmZvbnQ9dCksZS5mb250PXQ7dmFyIHM9MDthLmVhY2gobiwoZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmbnVsbCE9PXQmJiEwIT09YS5pc0FycmF5KHQpP3M9YS5tZWFzdXJlVGV4dChlLGksbyxzLHQpOmEuaXNBcnJheSh0KSYmYS5lYWNoKHQsKGZ1bmN0aW9uKHQpe3ZvaWQgMD09PXR8fG51bGw9PT10fHxhLmlzQXJyYXkodCl8fChzPWEubWVhc3VyZVRleHQoZSxpLG8scyx0KSl9KSl9KSk7dmFyIGM9by5sZW5ndGgvMjtpZihjPm4ubGVuZ3RoKXtmb3IodmFyIGw9MDtsPGM7bCsrKWRlbGV0ZSBpW29bbF1dO28uc3BsaWNlKDAsYyl9cmV0dXJuIHN9LGEubWVhc3VyZVRleHQ9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYT10W2ldO3JldHVybiBhfHwoYT10W2ldPWUubWVhc3VyZVRleHQoaSkud2lkdGgsbi5wdXNoKGkpKSxhPnImJihyPWEpLHJ9LGEubnVtYmVyT2ZMYWJlbExpbmVzPWZ1bmN0aW9uKGUpe3ZhciB0PTE7cmV0dXJuIGEuZWFjaChlLChmdW5jdGlvbihlKXthLmlzQXJyYXkoZSkmJmUubGVuZ3RoPnQmJih0PWUubGVuZ3RoKX0pKSx0fSxhLmNvbG9yPXI/ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDYW52YXNHcmFkaWVudCYmKGU9aS5nbG9iYWwuZGVmYXVsdENvbG9yKSxyKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS5lcnJvcigiQ29sb3IuanMgbm90IGZvdW5kISIpLGV9LGEuZ2V0SG92ZXJDb2xvcj1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIENhbnZhc1BhdHRlcm4/ZTphLmNvbG9yKGUpLnNhdHVyYXRlKC41KS5kYXJrZW4oLjEpLnJnYlN0cmluZygpfX19LHsyNjoyNiwzOjMsMzQ6MzQsNDY6NDZ9XSwyOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQ2KTtmdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGUubmF0aXZlP3t4OmUueCx5OmUueX06ci5nZXRSZWxhdGl2ZVBvc2l0aW9uKGUsdCl9ZnVuY3Rpb24gYShlLHQpe3ZhciBuLHIsaSxhLG8scz1lLmRhdGEuZGF0YXNldHM7Zm9yKHI9MCxhPXMubGVuZ3RoO3I8YTsrK3IpaWYoZS5pc0RhdGFzZXRWaXNpYmxlKHIpKWZvcihuPWUuZ2V0RGF0YXNldE1ldGEociksaT0wLG89bi5kYXRhLmxlbmd0aDtpPG87KytpKXt2YXIgYz1uLmRhdGFbaV07Yy5fdmlldy5za2lwfHx0KGMpfX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49W107cmV0dXJuIGEoZSwoZnVuY3Rpb24oZSl7ZS5pblJhbmdlKHQueCx0LnkpJiZuLnB1c2goZSl9KSksbn1mdW5jdGlvbiBzKGUsdCxuLHIpe3ZhciBpPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxvPVtdO3JldHVybiBhKGUsKGZ1bmN0aW9uKGUpe2lmKCFufHxlLmluUmFuZ2UodC54LHQueSkpe3ZhciBhPWUuZ2V0Q2VudGVyUG9pbnQoKSxzPXIodCxhKTtzPGk/KG89W2VdLGk9cyk6cz09PWkmJm8ucHVzaChlKX19KSksb31mdW5jdGlvbiBjKGUpe3ZhciB0PS0xIT09ZS5pbmRleE9mKCJ4Iiksbj0tMSE9PWUuaW5kZXhPZigieSIpO3JldHVybiBmdW5jdGlvbihlLHIpe3ZhciBpPXQ/TWF0aC5hYnMoZS54LXIueCk6MCxhPW4/TWF0aC5hYnMoZS55LXIueSk6MDtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KGksMikrTWF0aC5wb3coYSwyKSl9fWZ1bmN0aW9uIGwoZSx0LG4pe3ZhciByPWkodCxlKTtuLmF4aXM9bi5heGlzfHwieCI7dmFyIGE9YyhuLmF4aXMpLGw9bi5pbnRlcnNlY3Q/byhlLHIpOnMoZSxyLCExLGEpLHU9W107cmV0dXJuIGwubGVuZ3RoPyhlLmRhdGEuZGF0YXNldHMuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtpZihlLmlzRGF0YXNldFZpc2libGUobikpe3ZhciByPWUuZ2V0RGF0YXNldE1ldGEobiksaT1yLmRhdGFbbFswXS5faW5kZXhdO2kmJiFpLl92aWV3LnNraXAmJnUucHVzaChpKX19KSksdSk6W119dC5leHBvcnRzPXttb2Rlczp7c2luZ2xlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aSh0LGUpLHI9W107cmV0dXJuIGEoZSwoZnVuY3Rpb24oZSl7aWYoZS5pblJhbmdlKG4ueCxuLnkpKXJldHVybiByLnB1c2goZSkscn0pKSxyLnNsaWNlKDAsMSl9LGxhYmVsOmwsaW5kZXg6bCxkYXRhc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pKHQsZSk7bi5heGlzPW4uYXhpc3x8Inh5Ijt2YXIgYT1jKG4uYXhpcyksbD1uLmludGVyc2VjdD9vKGUscik6cyhlLHIsITEsYSk7cmV0dXJuIGwubGVuZ3RoPjAmJihsPWUuZ2V0RGF0YXNldE1ldGEobFswXS5fZGF0YXNldEluZGV4KS5kYXRhKSxsfSwieC1heGlzIjpmdW5jdGlvbihlLHQpe3JldHVybiBsKGUsdCx7aW50ZXJzZWN0OiExfSl9LHBvaW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49aSh0LGUpO3JldHVybiBvKGUsbil9LG5lYXJlc3Q6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkodCxlKTtuLmF4aXM9bi5heGlzfHwieHkiO3ZhciBhPWMobi5heGlzKSxvPXMoZSxyLG4uaW50ZXJzZWN0LGEpO3JldHVybiBvLmxlbmd0aD4xJiZvLnNvcnQoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRBcmVhKCkscj10LmdldEFyZWEoKSxpPW4tcjtyZXR1cm4gMD09PWkmJihpPWUuX2RhdGFzZXRJbmRleC10Ll9kYXRhc2V0SW5kZXgpLGl9KSksby5zbGljZSgwLDEpfSx4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pKHQsZSksbz1bXSxzPSExO3JldHVybiBhKGUsKGZ1bmN0aW9uKGUpe2UuaW5YUmFuZ2Uoci54KSYmby5wdXNoKGUpLGUuaW5SYW5nZShyLngsci55KSYmKHM9ITApfSkpLG4uaW50ZXJzZWN0JiYhcyYmKG89W10pLG99LHk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkodCxlKSxvPVtdLHM9ITE7cmV0dXJuIGEoZSwoZnVuY3Rpb24oZSl7ZS5pbllSYW5nZShyLnkpJiZvLnB1c2goZSksZS5pblJhbmdlKHIueCxyLnkpJiYocz0hMCl9KSksbi5pbnRlcnNlY3QmJiFzJiYobz1bXSksb319fX0sezQ2OjQ2fV0sMzA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyNik7ci5fc2V0KCJnbG9iYWwiLHtyZXNwb25zaXZlOiEwLHJlc3BvbnNpdmVBbmltYXRpb25EdXJhdGlvbjowLG1haW50YWluQXNwZWN0UmF0aW86ITAsZXZlbnRzOlsibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJjbGljayIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiXSxob3Zlcjp7b25Ib3ZlcjpudWxsLG1vZGU6Im5lYXJlc3QiLGludGVyc2VjdDohMCxhbmltYXRpb25EdXJhdGlvbjo0MDB9LG9uQ2xpY2s6bnVsbCxkZWZhdWx0Q29sb3I6InJnYmEoMCwwLDAsMC4xKSIsZGVmYXVsdEZvbnRDb2xvcjoiIzY2NiIsZGVmYXVsdEZvbnRGYW1pbHk6IidIZWx2ZXRpY2EgTmV1ZScsICdIZWx2ZXRpY2EnLCAnQXJpYWwnLCBzYW5zLXNlcmlmIixkZWZhdWx0Rm9udFNpemU6MTIsZGVmYXVsdEZvbnRTdHlsZToibm9ybWFsIixzaG93TGluZXM6ITAsZWxlbWVudHM6e30sbGF5b3V0OntwYWRkaW5nOnt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH19fSksdC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3QoZSx0KSx0aGlzfTtyZXR1cm4gZS5DaGFydD1lLGV9fSx7MjY6MjZ9XSwzMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQ2KTtmdW5jdGlvbiBpKGUsdCl7cmV0dXJuIHIud2hlcmUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUucG9zaXRpb249PT10fSkpfWZ1bmN0aW9uIGEoZSx0KXtlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX3RtcEluZGV4Xz10LGV9KSksZS5zb3J0KChmdW5jdGlvbihlLG4pe3ZhciByPXQ/bjplLGk9dD9lOm47cmV0dXJuIHIud2VpZ2h0PT09aS53ZWlnaHQ/ci5fdG1wSW5kZXhfLWkuX3RtcEluZGV4XzpyLndlaWdodC1pLndlaWdodH0pKSxlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2RlbGV0ZSBlLl90bXBJbmRleF99KSl9dC5leHBvcnRzPXtkZWZhdWx0czp7fSxhZGRCb3g6ZnVuY3Rpb24oZSx0KXtlLmJveGVzfHwoZS5ib3hlcz1bXSksdC5mdWxsV2lkdGg9dC5mdWxsV2lkdGh8fCExLHQucG9zaXRpb249dC5wb3NpdGlvbnx8InRvcCIsdC53ZWlnaHQ9dC53ZWlnaHR8fDAsZS5ib3hlcy5wdXNoKHQpfSxyZW1vdmVCb3g6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJveGVzP2UuYm94ZXMuaW5kZXhPZih0KTotMTstMSE9PW4mJmUuYm94ZXMuc3BsaWNlKG4sMSl9LGNvbmZpZ3VyZTpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByLGk9WyJmdWxsV2lkdGgiLCJwb3NpdGlvbiIsIndlaWdodCJdLGE9aS5sZW5ndGgsbz0wO288YTsrK28pcj1pW29dLG4uaGFzT3duUHJvcGVydHkocikmJih0W3JdPW5bcl0pfSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe2lmKGUpe3ZhciBvPWUub3B0aW9ucy5sYXlvdXR8fHt9LHM9ci5vcHRpb25zLnRvUGFkZGluZyhvLnBhZGRpbmcpLGM9cy5sZWZ0LGw9cy5yaWdodCx1PXMudG9wLGQ9cy5ib3R0b20scD1pKGUuYm94ZXMsImxlZnQiKSxmPWkoZS5ib3hlcywicmlnaHQiKSxoPWkoZS5ib3hlcywidG9wIiksbT1pKGUuYm94ZXMsImJvdHRvbSIpLF89aShlLmJveGVzLCJjaGFydEFyZWEiKTthKHAsITApLGEoZiwhMSksYShoLCEwKSxhKG0sITEpO3ZhciBnPXQtYy1sLHY9bi11LWQseT1nLzIsYj12LzIsdz0odC15KS8ocC5sZW5ndGgrZi5sZW5ndGgpLHg9KG4tYikvKGgubGVuZ3RoK20ubGVuZ3RoKSxrPWcsQz12LFM9W107ci5lYWNoKHAuY29uY2F0KGYsaCxtKSxWKTt2YXIgUD0wLE09MCxBPTAsTz0wO3IuZWFjaChoLmNvbmNhdChtKSwoZnVuY3Rpb24oZSl7aWYoZS5nZXRQYWRkaW5nKXt2YXIgdD1lLmdldFBhZGRpbmcoKTtQPU1hdGgubWF4KFAsdC5sZWZ0KSxNPU1hdGgubWF4KE0sdC5yaWdodCl9fSkpLHIuZWFjaChwLmNvbmNhdChmKSwoZnVuY3Rpb24oZSl7aWYoZS5nZXRQYWRkaW5nKXt2YXIgdD1lLmdldFBhZGRpbmcoKTtBPU1hdGgubWF4KEEsdC50b3ApLE89TWF0aC5tYXgoTyx0LmJvdHRvbSl9fSkpO3ZhciBEPWMsVD1sLEk9dSxqPWQ7ci5lYWNoKHAuY29uY2F0KGYpLEIpLHIuZWFjaChwLChmdW5jdGlvbihlKXtEKz1lLndpZHRofSkpLHIuZWFjaChmLChmdW5jdGlvbihlKXtUKz1lLndpZHRofSkpLHIuZWFjaChoLmNvbmNhdChtKSxCKSxyLmVhY2goaCwoZnVuY3Rpb24oZSl7SSs9ZS5oZWlnaHR9KSksci5lYWNoKG0sKGZ1bmN0aW9uKGUpe2orPWUuaGVpZ2h0fSkpLHIuZWFjaChwLmNvbmNhdChmKSwkKSxEPWMsVD1sLEk9dSxqPWQsci5lYWNoKHAsKGZ1bmN0aW9uKGUpe0QrPWUud2lkdGh9KSksci5lYWNoKGYsKGZ1bmN0aW9uKGUpe1QrPWUud2lkdGh9KSksci5lYWNoKGgsKGZ1bmN0aW9uKGUpe0krPWUuaGVpZ2h0fSkpLHIuZWFjaChtLChmdW5jdGlvbihlKXtqKz1lLmhlaWdodH0pKTt2YXIgRj1NYXRoLm1heChQLUQsMCk7RCs9RixUKz1NYXRoLm1heChNLVQsMCk7dmFyIHo9TWF0aC5tYXgoQS1JLDApO0krPXosais9TWF0aC5tYXgoTy1qLDApO3ZhciBMPW4tSS1qLEU9dC1ELVQ7RT09PWsmJkw9PT1DfHwoci5lYWNoKHAsKGZ1bmN0aW9uKGUpe2UuaGVpZ2h0PUx9KSksci5lYWNoKGYsKGZ1bmN0aW9uKGUpe2UuaGVpZ2h0PUx9KSksci5lYWNoKGgsKGZ1bmN0aW9uKGUpe2UuZnVsbFdpZHRofHwoZS53aWR0aD1FKX0pKSxyLmVhY2gobSwoZnVuY3Rpb24oZSl7ZS5mdWxsV2lkdGh8fChlLndpZHRoPUUpfSkpLEM9TCxrPUUpO3ZhciBOPWMrRixSPXUrejtyLmVhY2gocC5jb25jYXQoaCksVyksTis9ayxSKz1DLHIuZWFjaChmLFcpLHIuZWFjaChtLFcpLGUuY2hhcnRBcmVhPXtsZWZ0OkQsdG9wOkkscmlnaHQ6RCtrLGJvdHRvbTpJK0N9LHIuZWFjaChfLChmdW5jdGlvbih0KXt0LmxlZnQ9ZS5jaGFydEFyZWEubGVmdCx0LnRvcD1lLmNoYXJ0QXJlYS50b3AsdC5yaWdodD1lLmNoYXJ0QXJlYS5yaWdodCx0LmJvdHRvbT1lLmNoYXJ0QXJlYS5ib3R0b20sdC51cGRhdGUoayxDKX0pKX1mdW5jdGlvbiBWKGUpe3ZhciB0LG49ZS5pc0hvcml6b250YWwoKTtuPyh0PWUudXBkYXRlKGUuZnVsbFdpZHRoP2c6ayx4KSxDLT10LmhlaWdodCk6KHQ9ZS51cGRhdGUodyxDKSxrLT10LndpZHRoKSxTLnB1c2goe2hvcml6b250YWw6bixtaW5TaXplOnQsYm94OmV9KX1mdW5jdGlvbiBCKGUpe3ZhciB0PXIuZmluZE5leHRXaGVyZShTLChmdW5jdGlvbih0KXtyZXR1cm4gdC5ib3g9PT1lfSkpO2lmKHQpaWYoZS5pc0hvcml6b250YWwoKSl7dmFyIG49e2xlZnQ6TWF0aC5tYXgoRCxQKSxyaWdodDpNYXRoLm1heChULE0pLHRvcDowLGJvdHRvbTowfTtlLnVwZGF0ZShlLmZ1bGxXaWR0aD9nOmssdi8yLG4pfWVsc2UgZS51cGRhdGUodC5taW5TaXplLndpZHRoLEMpfWZ1bmN0aW9uICQoZSl7dmFyIHQ9ci5maW5kTmV4dFdoZXJlKFMsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJveD09PWV9KSksbj17bGVmdDowLHJpZ2h0OjAsdG9wOkksYm90dG9tOmp9O3QmJmUudXBkYXRlKHQubWluU2l6ZS53aWR0aCxDLG4pfWZ1bmN0aW9uIFcoZSl7ZS5pc0hvcml6b250YWwoKT8oZS5sZWZ0PWUuZnVsbFdpZHRoP2M6RCxlLnJpZ2h0PWUuZnVsbFdpZHRoP3QtbDpEK2ssZS50b3A9UixlLmJvdHRvbT1SK2UuaGVpZ2h0LFI9ZS5ib3R0b20pOihlLmxlZnQ9TixlLnJpZ2h0PU4rZS53aWR0aCxlLnRvcD1JLGUuYm90dG9tPUkrQyxOPWUucmlnaHQpfX19fSx7NDY6NDZ9XSwzMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDI2KSxpPWUoNDYpO3IuX3NldCgiZ2xvYmFsIix7cGx1Z2luczp7fX0pLHQuZXhwb3J0cz17X3BsdWdpbnM6W10sX2NhY2hlSWQ6MCxyZWdpc3RlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9wbHVnaW5zO1tdLmNvbmNhdChlKS5mb3JFYWNoKChmdW5jdGlvbihlKXstMT09PXQuaW5kZXhPZihlKSYmdC5wdXNoKGUpfSkpLHRoaXMuX2NhY2hlSWQrK30sdW5yZWdpc3RlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9wbHVnaW5zO1tdLmNvbmNhdChlKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj10LmluZGV4T2YoZSk7LTEhPT1uJiZ0LnNwbGljZShuLDEpfSkpLHRoaXMuX2NhY2hlSWQrK30sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLl9wbHVnaW5zPVtdLHRoaXMuX2NhY2hlSWQrK30sY291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGx1Z2lucy5sZW5ndGh9LGdldEFsbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wbHVnaW5zfSxub3RpZnk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksYSxvLHMsYz10aGlzLmRlc2NyaXB0b3JzKGUpLGw9Yy5sZW5ndGg7Zm9yKHI9MDtyPGw7KytyKWlmKGk9Y1tyXSxhPWkucGx1Z2luLHM9YVt0XSwiZnVuY3Rpb24iPT09dHlwZW9mIHMmJihvPVtlXS5jb25jYXQobnx8W10pLG8ucHVzaChpLm9wdGlvbnMpLCExPT09cy5hcHBseShhLG8pKSlyZXR1cm4hMTtyZXR1cm4hMH0sZGVzY3JpcHRvcnM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kcGx1Z2luc3x8KGUuJHBsdWdpbnM9e30pO2lmKHQuaWQ9PT10aGlzLl9jYWNoZUlkKXJldHVybiB0LmRlc2NyaXB0b3JzO3ZhciBuPVtdLGE9W10sbz1lJiZlLmNvbmZpZ3x8e30scz1vLm9wdGlvbnMmJm8ub3B0aW9ucy5wbHVnaW5zfHx7fTtyZXR1cm4gdGhpcy5fcGx1Z2lucy5jb25jYXQoby5wbHVnaW5zfHxbXSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9bi5pbmRleE9mKGUpO2lmKC0xPT09dCl7dmFyIG89ZS5pZCxjPXNbb107ITEhPT1jJiYoITA9PT1jJiYoYz1pLmNsb25lKHIuZ2xvYmFsLnBsdWdpbnNbb10pKSxuLnB1c2goZSksYS5wdXNoKHtwbHVnaW46ZSxvcHRpb25zOmN8fHt9fSkpfX0pKSx0LmRlc2NyaXB0b3JzPWEsdC5pZD10aGlzLl9jYWNoZUlkLGF9LF9pbnZhbGlkYXRlOmZ1bmN0aW9uKGUpe2RlbGV0ZSBlLiRwbHVnaW5zfX19LHsyNjoyNiw0Njo0Nn1dLDMzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjYpLGk9ZSgyNyksYT1lKDQ2KSxvPWUoMzUpO2Z1bmN0aW9uIHMoZSl7dmFyIHQsbixyPVtdO2Zvcih0PTAsbj1lLmxlbmd0aDt0PG47Kyt0KXIucHVzaChlW3RdLmxhYmVsKTtyZXR1cm4gcn1mdW5jdGlvbiBjKGUsdCxuKXt2YXIgcj1lLmdldFBpeGVsRm9yVGljayh0KTtyZXR1cm4gbiYmKHItPTA9PT10PyhlLmdldFBpeGVsRm9yVGljaygxKS1yKS8yOihyLWUuZ2V0UGl4ZWxGb3JUaWNrKHQtMSkpLzIpLHJ9ZnVuY3Rpb24gbChlLHQsbil7cmV0dXJuIGEuaXNBcnJheSh0KT9hLmxvbmdlc3RUZXh0KGUsbix0KTplLm1lYXN1cmVUZXh0KHQpLndpZHRofWZ1bmN0aW9uIHUoZSl7dmFyIHQ9YS52YWx1ZU9yRGVmYXVsdCxuPXIuZ2xvYmFsLGk9dChlLmZvbnRTaXplLG4uZGVmYXVsdEZvbnRTaXplKSxvPXQoZS5mb250U3R5bGUsbi5kZWZhdWx0Rm9udFN0eWxlKSxzPXQoZS5mb250RmFtaWx5LG4uZGVmYXVsdEZvbnRGYW1pbHkpO3JldHVybntzaXplOmksc3R5bGU6byxmYW1pbHk6cyxmb250OmEuZm9udFN0cmluZyhpLG8scyl9fWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGEub3B0aW9ucy50b0xpbmVIZWlnaHQoYS52YWx1ZU9yRGVmYXVsdChlLmxpbmVIZWlnaHQsMS4yKSxhLnZhbHVlT3JEZWZhdWx0KGUuZm9udFNpemUsci5nbG9iYWwuZGVmYXVsdEZvbnRTaXplKSl9ci5fc2V0KCJzY2FsZSIse2Rpc3BsYXk6ITAscG9zaXRpb246ImxlZnQiLG9mZnNldDohMSxncmlkTGluZXM6e2Rpc3BsYXk6ITAsY29sb3I6InJnYmEoMCwgMCwgMCwgMC4xKSIsbGluZVdpZHRoOjEsZHJhd0JvcmRlcjohMCxkcmF3T25DaGFydEFyZWE6ITAsZHJhd1RpY2tzOiEwLHRpY2tNYXJrTGVuZ3RoOjEwLHplcm9MaW5lV2lkdGg6MSx6ZXJvTGluZUNvbG9yOiJyZ2JhKDAsMCwwLDAuMjUpIix6ZXJvTGluZUJvcmRlckRhc2g6W10semVyb0xpbmVCb3JkZXJEYXNoT2Zmc2V0OjAsb2Zmc2V0R3JpZExpbmVzOiExLGJvcmRlckRhc2g6W10sYm9yZGVyRGFzaE9mZnNldDowfSxzY2FsZUxhYmVsOntkaXNwbGF5OiExLGxhYmVsU3RyaW5nOiIiLGxpbmVIZWlnaHQ6MS4yLHBhZGRpbmc6e3RvcDo0LGJvdHRvbTo0fX0sdGlja3M6e2JlZ2luQXRaZXJvOiExLG1pblJvdGF0aW9uOjAsbWF4Um90YXRpb246NTAsbWlycm9yOiExLHBhZGRpbmc6MCxyZXZlcnNlOiExLGRpc3BsYXk6ITAsYXV0b1NraXA6ITAsYXV0b1NraXBQYWRkaW5nOjAsbGFiZWxPZmZzZXQ6MCxjYWxsYmFjazpvLmZvcm1hdHRlcnMudmFsdWVzLG1pbm9yOnt9LG1ham9yOnt9fX0pLHQuZXhwb3J0cz1pLmV4dGVuZCh7Z2V0UGFkZGluZzpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJue2xlZnQ6ZS5wYWRkaW5nTGVmdHx8MCx0b3A6ZS5wYWRkaW5nVG9wfHwwLHJpZ2h0OmUucGFkZGluZ1JpZ2h0fHwwLGJvdHRvbTplLnBhZGRpbmdCb3R0b218fDB9fSxnZXRUaWNrczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90aWNrc30sbWVyZ2VUaWNrc09wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMudGlja3M7Zm9yKHZhciB0IGluITE9PT1lLm1pbm9yJiYoZS5taW5vcj17ZGlzcGxheTohMX0pLCExPT09ZS5tYWpvciYmKGUubWFqb3I9e2Rpc3BsYXk6ITF9KSxlKSJtYWpvciIhPT10JiYibWlub3IiIT09dCYmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGUubWlub3JbdF0mJihlLm1pbm9yW3RdPWVbdF0pLCJ1bmRlZmluZWQiPT09dHlwZW9mIGUubWFqb3JbdF0mJihlLm1ham9yW3RdPWVbdF0pKX0sYmVmb3JlVXBkYXRlOmZ1bmN0aW9uKCl7YS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlVXBkYXRlLFt0aGlzXSl9LHVwZGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLHMsYyxsLHU9dGhpcztmb3IodS5iZWZvcmVVcGRhdGUoKSx1Lm1heFdpZHRoPWUsdS5tYXhIZWlnaHQ9dCx1Lm1hcmdpbnM9YS5leHRlbmQoe2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfSxuKSx1Lmxvbmdlc3RUZXh0Q2FjaGU9dS5sb25nZXN0VGV4dENhY2hlfHx7fSx1LmJlZm9yZVNldERpbWVuc2lvbnMoKSx1LnNldERpbWVuc2lvbnMoKSx1LmFmdGVyU2V0RGltZW5zaW9ucygpLHUuYmVmb3JlRGF0YUxpbWl0cygpLHUuZGV0ZXJtaW5lRGF0YUxpbWl0cygpLHUuYWZ0ZXJEYXRhTGltaXRzKCksdS5iZWZvcmVCdWlsZFRpY2tzKCksYz11LmJ1aWxkVGlja3MoKXx8W10sdS5hZnRlckJ1aWxkVGlja3MoKSx1LmJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbigpLG89dS5jb252ZXJ0VGlja3NUb0xhYmVscyhjKXx8dS50aWNrcyx1LmFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uKCksdS50aWNrcz1vLHI9MCxpPW8ubGVuZ3RoO3I8aTsrK3Ipcz1vW3JdLGw9Y1tyXSxsP2wubGFiZWw9czpjLnB1c2gobD17bGFiZWw6cyxtYWpvcjohMX0pO3JldHVybiB1Ll90aWNrcz1jLHUuYmVmb3JlQ2FsY3VsYXRlVGlja1JvdGF0aW9uKCksdS5jYWxjdWxhdGVUaWNrUm90YXRpb24oKSx1LmFmdGVyQ2FsY3VsYXRlVGlja1JvdGF0aW9uKCksdS5iZWZvcmVGaXQoKSx1LmZpdCgpLHUuYWZ0ZXJGaXQoKSx1LmFmdGVyVXBkYXRlKCksdS5taW5TaXplfSxhZnRlclVwZGF0ZTpmdW5jdGlvbigpe2EuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyVXBkYXRlLFt0aGlzXSl9LGJlZm9yZVNldERpbWVuc2lvbnM6ZnVuY3Rpb24oKXthLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5iZWZvcmVTZXREaW1lbnNpb25zLFt0aGlzXSl9LHNldERpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuaXNIb3Jpem9udGFsKCk/KGUud2lkdGg9ZS5tYXhXaWR0aCxlLmxlZnQ9MCxlLnJpZ2h0PWUud2lkdGgpOihlLmhlaWdodD1lLm1heEhlaWdodCxlLnRvcD0wLGUuYm90dG9tPWUuaGVpZ2h0KSxlLnBhZGRpbmdMZWZ0PTAsZS5wYWRkaW5nVG9wPTAsZS5wYWRkaW5nUmlnaHQ9MCxlLnBhZGRpbmdCb3R0b209MH0sYWZ0ZXJTZXREaW1lbnNpb25zOmZ1bmN0aW9uKCl7YS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJTZXREaW1lbnNpb25zLFt0aGlzXSl9LGJlZm9yZURhdGFMaW1pdHM6ZnVuY3Rpb24oKXthLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5iZWZvcmVEYXRhTGltaXRzLFt0aGlzXSl9LGRldGVybWluZURhdGFMaW1pdHM6YS5ub29wLGFmdGVyRGF0YUxpbWl0czpmdW5jdGlvbigpe2EuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyRGF0YUxpbWl0cyxbdGhpc10pfSxiZWZvcmVCdWlsZFRpY2tzOmZ1bmN0aW9uKCl7YS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlQnVpbGRUaWNrcyxbdGhpc10pfSxidWlsZFRpY2tzOmEubm9vcCxhZnRlckJ1aWxkVGlja3M6ZnVuY3Rpb24oKXthLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5hZnRlckJ1aWxkVGlja3MsW3RoaXNdKX0sYmVmb3JlVGlja1RvTGFiZWxDb252ZXJzaW9uOmZ1bmN0aW9uKCl7YS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlVGlja1RvTGFiZWxDb252ZXJzaW9uLFt0aGlzXSl9LGNvbnZlcnRUaWNrc1RvTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUub3B0aW9ucy50aWNrcztlLnRpY2tzPWUudGlja3MubWFwKHQudXNlckNhbGxiYWNrfHx0LmNhbGxiYWNrLHRoaXMpfSxhZnRlclRpY2tUb0xhYmVsQ29udmVyc2lvbjpmdW5jdGlvbigpe2EuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uLFt0aGlzXSl9LGJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbjpmdW5jdGlvbigpe2EuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbixbdGhpc10pfSxjYWxjdWxhdGVUaWNrUm90YXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5jdHgsbj1lLm9wdGlvbnMudGlja3Mscj1zKGUuX3RpY2tzKSxpPXUobik7dC5mb250PWkuZm9udDt2YXIgbz1uLm1pblJvdGF0aW9ufHwwO2lmKHIubGVuZ3RoJiZlLm9wdGlvbnMuZGlzcGxheSYmZS5pc0hvcml6b250YWwoKSl7dmFyIGMsbCxkPWEubG9uZ2VzdFRleHQodCxpLmZvbnQscixlLmxvbmdlc3RUZXh0Q2FjaGUpLHA9ZCxmPWUuZ2V0UGl4ZWxGb3JUaWNrKDEpLWUuZ2V0UGl4ZWxGb3JUaWNrKDApLTY7d2hpbGUocD5mJiZvPG4ubWF4Um90YXRpb24pe3ZhciBoPWEudG9SYWRpYW5zKG8pO2lmKGM9TWF0aC5jb3MoaCksbD1NYXRoLnNpbihoKSxsKmQ+ZS5tYXhIZWlnaHQpe28tLTticmVha31vKysscD1jKmR9fWUubGFiZWxSb3RhdGlvbj1vfSxhZnRlckNhbGN1bGF0ZVRpY2tSb3RhdGlvbjpmdW5jdGlvbigpe2EuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyQ2FsY3VsYXRlVGlja1JvdGF0aW9uLFt0aGlzXSl9LGJlZm9yZUZpdDpmdW5jdGlvbigpe2EuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZUZpdCxbdGhpc10pfSxmaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5taW5TaXplPXt3aWR0aDowLGhlaWdodDowfSxuPXMoZS5fdGlja3MpLHI9ZS5vcHRpb25zLGk9ci50aWNrcyxvPXIuc2NhbGVMYWJlbCxjPXIuZ3JpZExpbmVzLHA9ci5kaXNwbGF5LGY9ZS5pc0hvcml6b250YWwoKSxoPXUoaSksbT1yLmdyaWRMaW5lcy50aWNrTWFya0xlbmd0aDtpZih0LndpZHRoPWY/ZS5pc0Z1bGxXaWR0aCgpP2UubWF4V2lkdGgtZS5tYXJnaW5zLmxlZnQtZS5tYXJnaW5zLnJpZ2h0OmUubWF4V2lkdGg6cCYmYy5kcmF3VGlja3M/bTowLHQuaGVpZ2h0PWY/cCYmYy5kcmF3VGlja3M/bTowOmUubWF4SGVpZ2h0LG8uZGlzcGxheSYmcCl7dmFyIF89ZChvKSxnPWEub3B0aW9ucy50b1BhZGRpbmcoby5wYWRkaW5nKSx2PV8rZy5oZWlnaHQ7Zj90LmhlaWdodCs9djp0LndpZHRoKz12fWlmKGkuZGlzcGxheSYmcCl7dmFyIHk9YS5sb25nZXN0VGV4dChlLmN0eCxoLmZvbnQsbixlLmxvbmdlc3RUZXh0Q2FjaGUpLGI9YS5udW1iZXJPZkxhYmVsTGluZXMobiksdz0uNSpoLnNpemUseD1lLm9wdGlvbnMudGlja3MucGFkZGluZztpZihmKXtlLmxvbmdlc3RMYWJlbFdpZHRoPXk7dmFyIGs9YS50b1JhZGlhbnMoZS5sYWJlbFJvdGF0aW9uKSxDPU1hdGguY29zKGspLFM9TWF0aC5zaW4oayksUD1TKnkraC5zaXplKmIrdyooYi0xKSt3O3QuaGVpZ2h0PU1hdGgubWluKGUubWF4SGVpZ2h0LHQuaGVpZ2h0K1AreCksZS5jdHguZm9udD1oLmZvbnQ7dmFyIE09bChlLmN0eCxuWzBdLGguZm9udCksQT1sKGUuY3R4LG5bbi5sZW5ndGgtMV0saC5mb250KTswIT09ZS5sYWJlbFJvdGF0aW9uPyhlLnBhZGRpbmdMZWZ0PSJib3R0b20iPT09ci5wb3NpdGlvbj9DKk0rMzpDKncrMyxlLnBhZGRpbmdSaWdodD0iYm90dG9tIj09PXIucG9zaXRpb24/Qyp3KzM6QypBKzMpOihlLnBhZGRpbmdMZWZ0PU0vMiszLGUucGFkZGluZ1JpZ2h0PUEvMiszKX1lbHNlIGkubWlycm9yP3k9MDp5Kz14K3csdC53aWR0aD1NYXRoLm1pbihlLm1heFdpZHRoLHQud2lkdGgreSksZS5wYWRkaW5nVG9wPWguc2l6ZS8yLGUucGFkZGluZ0JvdHRvbT1oLnNpemUvMn1lLmhhbmRsZU1hcmdpbnMoKSxlLndpZHRoPXQud2lkdGgsZS5oZWlnaHQ9dC5oZWlnaHR9LGhhbmRsZU1hcmdpbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UubWFyZ2lucyYmKGUucGFkZGluZ0xlZnQ9TWF0aC5tYXgoZS5wYWRkaW5nTGVmdC1lLm1hcmdpbnMubGVmdCwwKSxlLnBhZGRpbmdUb3A9TWF0aC5tYXgoZS5wYWRkaW5nVG9wLWUubWFyZ2lucy50b3AsMCksZS5wYWRkaW5nUmlnaHQ9TWF0aC5tYXgoZS5wYWRkaW5nUmlnaHQtZS5tYXJnaW5zLnJpZ2h0LDApLGUucGFkZGluZ0JvdHRvbT1NYXRoLm1heChlLnBhZGRpbmdCb3R0b20tZS5tYXJnaW5zLmJvdHRvbSwwKSl9LGFmdGVyRml0OmZ1bmN0aW9uKCl7YS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJGaXQsW3RoaXNdKX0saXNIb3Jpem9udGFsOmZ1bmN0aW9uKCl7cmV0dXJuInRvcCI9PT10aGlzLm9wdGlvbnMucG9zaXRpb258fCJib3R0b20iPT09dGhpcy5vcHRpb25zLnBvc2l0aW9ufSxpc0Z1bGxXaWR0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuZnVsbFdpZHRofSxnZXRSaWdodFZhbHVlOmZ1bmN0aW9uKGUpe2lmKGEuaXNOdWxsT3JVbmRlZihlKSlyZXR1cm4gTmFOO2lmKCJudW1iZXIiPT09dHlwZW9mIGUmJiFpc0Zpbml0ZShlKSlyZXR1cm4gTmFOO2lmKGUpaWYodGhpcy5pc0hvcml6b250YWwoKSl7aWYodm9pZCAwIT09ZS54KXJldHVybiB0aGlzLmdldFJpZ2h0VmFsdWUoZS54KX1lbHNlIGlmKHZvaWQgMCE9PWUueSlyZXR1cm4gdGhpcy5nZXRSaWdodFZhbHVlKGUueSk7cmV0dXJuIGV9LGdldExhYmVsRm9ySW5kZXg6YS5ub29wLGdldFBpeGVsRm9yVmFsdWU6YS5ub29wLGdldFZhbHVlRm9yUGl4ZWw6YS5ub29wLGdldFBpeGVsRm9yVGljazpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5vcHRpb25zLm9mZnNldDtpZih0LmlzSG9yaXpvbnRhbCgpKXt2YXIgcj10LndpZHRoLSh0LnBhZGRpbmdMZWZ0K3QucGFkZGluZ1JpZ2h0KSxpPXIvTWF0aC5tYXgodC5fdGlja3MubGVuZ3RoLShuPzA6MSksMSksYT1pKmUrdC5wYWRkaW5nTGVmdDtuJiYoYSs9aS8yKTt2YXIgbz10LmxlZnQrTWF0aC5yb3VuZChhKTtyZXR1cm4gbys9dC5pc0Z1bGxXaWR0aCgpP3QubWFyZ2lucy5sZWZ0OjAsb312YXIgcz10LmhlaWdodC0odC5wYWRkaW5nVG9wK3QucGFkZGluZ0JvdHRvbSk7cmV0dXJuIHQudG9wK2UqKHMvKHQuX3RpY2tzLmxlbmd0aC0xKSl9LGdldFBpeGVsRm9yRGVjaW1hbDpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHQuaXNIb3Jpem9udGFsKCkpe3ZhciBuPXQud2lkdGgtKHQucGFkZGluZ0xlZnQrdC5wYWRkaW5nUmlnaHQpLHI9biplK3QucGFkZGluZ0xlZnQsaT10LmxlZnQrTWF0aC5yb3VuZChyKTtyZXR1cm4gaSs9dC5pc0Z1bGxXaWR0aCgpP3QubWFyZ2lucy5sZWZ0OjAsaX1yZXR1cm4gdC50b3ArZSp0LmhlaWdodH0sZ2V0QmFzZVBpeGVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UGl4ZWxGb3JWYWx1ZSh0aGlzLmdldEJhc2VWYWx1ZSgpKX0sZ2V0QmFzZVZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUubWluLG49ZS5tYXg7cmV0dXJuIGUuYmVnaW5BdFplcm8/MDp0PDAmJm48MD9uOnQ+MCYmbj4wP3Q6MH0sX2F1dG9Ta2lwOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8scz10aGlzLGM9cy5pc0hvcml6b250YWwoKSxsPXMub3B0aW9ucy50aWNrcy5taW5vcix1PWUubGVuZ3RoLGQ9YS50b1JhZGlhbnMocy5sYWJlbFJvdGF0aW9uKSxwPU1hdGguY29zKGQpLGY9cy5sb25nZXN0TGFiZWxXaWR0aCpwLGg9W107Zm9yKGwubWF4VGlja3NMaW1pdCYmKG89bC5tYXhUaWNrc0xpbWl0KSxjJiYodD0hMSwoZitsLmF1dG9Ta2lwUGFkZGluZykqdT5zLndpZHRoLShzLnBhZGRpbmdMZWZ0K3MucGFkZGluZ1JpZ2h0KSYmKHQ9MStNYXRoLmZsb29yKChmK2wuYXV0b1NraXBQYWRkaW5nKSp1LyhzLndpZHRoLShzLnBhZGRpbmdMZWZ0K3MucGFkZGluZ1JpZ2h0KSkpKSxvJiZ1Pm8mJih0PU1hdGgubWF4KHQsTWF0aC5mbG9vcih1L28pKSkpLG49MDtuPHU7bisrKXI9ZVtuXSxpPXQ+MSYmbiV0PjB8fG4ldD09PTAmJm4rdD49dSxpJiZuIT09dS0xJiZkZWxldGUgci5sYWJlbCxoLnB1c2gocik7cmV0dXJuIGh9LGRyYXc6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQub3B0aW9ucztpZihuLmRpc3BsYXkpe3ZhciBpPXQuY3R4LG89ci5nbG9iYWwscz1uLnRpY2tzLm1pbm9yLGw9bi50aWNrcy5tYWpvcnx8cyxwPW4uZ3JpZExpbmVzLGY9bi5zY2FsZUxhYmVsLGg9MCE9PXQubGFiZWxSb3RhdGlvbixtPXQuaXNIb3Jpem9udGFsKCksXz1zLmF1dG9Ta2lwP3QuX2F1dG9Ta2lwKHQuZ2V0VGlja3MoKSk6dC5nZXRUaWNrcygpLGc9YS52YWx1ZU9yRGVmYXVsdChzLmZvbnRDb2xvcixvLmRlZmF1bHRGb250Q29sb3IpLHY9dShzKSx5PWEudmFsdWVPckRlZmF1bHQobC5mb250Q29sb3Isby5kZWZhdWx0Rm9udENvbG9yKSxiPXUobCksdz1wLmRyYXdUaWNrcz9wLnRpY2tNYXJrTGVuZ3RoOjAseD1hLnZhbHVlT3JEZWZhdWx0KGYuZm9udENvbG9yLG8uZGVmYXVsdEZvbnRDb2xvciksaz11KGYpLEM9YS5vcHRpb25zLnRvUGFkZGluZyhmLnBhZGRpbmcpLFM9YS50b1JhZGlhbnModC5sYWJlbFJvdGF0aW9uKSxQPVtdLE09dC5vcHRpb25zLmdyaWRMaW5lcy5saW5lV2lkdGgsQT0icmlnaHQiPT09bi5wb3NpdGlvbj90LmxlZnQ6dC5yaWdodC1NLXcsTz0icmlnaHQiPT09bi5wb3NpdGlvbj90LmxlZnQrdzp0LnJpZ2h0LEQ9ImJvdHRvbSI9PT1uLnBvc2l0aW9uP3QudG9wK006dC5ib3R0b20tdy1NLFQ9ImJvdHRvbSI9PT1uLnBvc2l0aW9uP3QudG9wK00rdzp0LmJvdHRvbStNO2lmKGEuZWFjaChfLChmdW5jdGlvbihyLGkpe2lmKCFhLmlzTnVsbE9yVW5kZWYoci5sYWJlbCkpe3ZhciBsLHUsZCxmLGcsdix5LGIseCxrLEMsSSxqLEYsej1yLmxhYmVsO2k9PT10Lnplcm9MaW5lSW5kZXgmJm4ub2Zmc2V0PT09cC5vZmZzZXRHcmlkTGluZXM/KGw9cC56ZXJvTGluZVdpZHRoLHU9cC56ZXJvTGluZUNvbG9yLGQ9cC56ZXJvTGluZUJvcmRlckRhc2gsZj1wLnplcm9MaW5lQm9yZGVyRGFzaE9mZnNldCk6KGw9YS52YWx1ZUF0SW5kZXhPckRlZmF1bHQocC5saW5lV2lkdGgsaSksdT1hLnZhbHVlQXRJbmRleE9yRGVmYXVsdChwLmNvbG9yLGkpLGQ9YS52YWx1ZU9yRGVmYXVsdChwLmJvcmRlckRhc2gsby5ib3JkZXJEYXNoKSxmPWEudmFsdWVPckRlZmF1bHQocC5ib3JkZXJEYXNoT2Zmc2V0LG8uYm9yZGVyRGFzaE9mZnNldCkpO3ZhciBMPSJtaWRkbGUiLEU9Im1pZGRsZSIsTj1zLnBhZGRpbmc7aWYobSl7dmFyIFI9dytOOyJib3R0b20iPT09bi5wb3NpdGlvbj8oRT1oPyJtaWRkbGUiOiJ0b3AiLEw9aD8icmlnaHQiOiJjZW50ZXIiLEY9dC50b3ArUik6KEU9aD8ibWlkZGxlIjoiYm90dG9tIixMPWg/ImxlZnQiOiJjZW50ZXIiLEY9dC5ib3R0b20tUik7dmFyIFY9Yyh0LGkscC5vZmZzZXRHcmlkTGluZXMmJl8ubGVuZ3RoPjEpO1Y8dC5sZWZ0JiYodT0icmdiYSgwLDAsMCwwKSIpLFYrPWEuYWxpYXNQaXhlbChsKSxqPXQuZ2V0UGl4ZWxGb3JUaWNrKGkpK3MubGFiZWxPZmZzZXQsZz15PXg9Qz1WLHY9RCxiPVQsaz1lLnRvcCxJPWUuYm90dG9tK019ZWxzZXt2YXIgQiwkPSJsZWZ0Ij09PW4ucG9zaXRpb247cy5taXJyb3I/KEw9JD8ibGVmdCI6InJpZ2h0IixCPU4pOihMPSQ/InJpZ2h0IjoibGVmdCIsQj13K04pLGo9JD90LnJpZ2h0LUI6dC5sZWZ0K0I7dmFyIFc9Yyh0LGkscC5vZmZzZXRHcmlkTGluZXMmJl8ubGVuZ3RoPjEpO1c8dC50b3AmJih1PSJyZ2JhKDAsMCwwLDApIiksVys9YS5hbGlhc1BpeGVsKGwpLEY9dC5nZXRQaXhlbEZvclRpY2soaSkrcy5sYWJlbE9mZnNldCxnPUEseT1PLHg9ZS5sZWZ0LEM9ZS5yaWdodCtNLHY9Yj1rPUk9V31QLnB1c2goe3R4MTpnLHR5MTp2LHR4Mjp5LHR5MjpiLHgxOngseTE6ayx4MjpDLHkyOkksbGFiZWxYOmosbGFiZWxZOkYsZ2xXaWR0aDpsLGdsQ29sb3I6dSxnbEJvcmRlckRhc2g6ZCxnbEJvcmRlckRhc2hPZmZzZXQ6Zixyb3RhdGlvbjotMSpTLGxhYmVsOnosbWFqb3I6ci5tYWpvcix0ZXh0QmFzZWxpbmU6RSx0ZXh0QWxpZ246TH0pfX0pKSxhLmVhY2goUCwoZnVuY3Rpb24oZSl7aWYocC5kaXNwbGF5JiYoaS5zYXZlKCksaS5saW5lV2lkdGg9ZS5nbFdpZHRoLGkuc3Ryb2tlU3R5bGU9ZS5nbENvbG9yLGkuc2V0TGluZURhc2gmJihpLnNldExpbmVEYXNoKGUuZ2xCb3JkZXJEYXNoKSxpLmxpbmVEYXNoT2Zmc2V0PWUuZ2xCb3JkZXJEYXNoT2Zmc2V0KSxpLmJlZ2luUGF0aCgpLHAuZHJhd1RpY2tzJiYoaS5tb3ZlVG8oZS50eDEsZS50eTEpLGkubGluZVRvKGUudHgyLGUudHkyKSkscC5kcmF3T25DaGFydEFyZWEmJihpLm1vdmVUbyhlLngxLGUueTEpLGkubGluZVRvKGUueDIsZS55MikpLGkuc3Ryb2tlKCksaS5yZXN0b3JlKCkpLHMuZGlzcGxheSl7aS5zYXZlKCksaS50cmFuc2xhdGUoZS5sYWJlbFgsZS5sYWJlbFkpLGkucm90YXRlKGUucm90YXRpb24pLGkuZm9udD1lLm1ham9yP2IuZm9udDp2LmZvbnQsaS5maWxsU3R5bGU9ZS5tYWpvcj95OmcsaS50ZXh0QmFzZWxpbmU9ZS50ZXh0QmFzZWxpbmUsaS50ZXh0QWxpZ249ZS50ZXh0QWxpZ247dmFyIG49ZS5sYWJlbDtpZihhLmlzQXJyYXkobikpZm9yKHZhciByPW4ubGVuZ3RoLG89MS41KnYuc2l6ZSxjPXQuaXNIb3Jpem9udGFsKCk/MDotbyooci0xKS8yLGw9MDtsPHI7KytsKWkuZmlsbFRleHQoIiIrbltsXSwwLGMpLGMrPW87ZWxzZSBpLmZpbGxUZXh0KG4sMCwwKTtpLnJlc3RvcmUoKX19KSksZi5kaXNwbGF5KXt2YXIgSSxqLEY9MCx6PWQoZikvMjtpZihtKUk9dC5sZWZ0Kyh0LnJpZ2h0LXQubGVmdCkvMixqPSJib3R0b20iPT09bi5wb3NpdGlvbj90LmJvdHRvbS16LUMuYm90dG9tOnQudG9wK3orQy50b3A7ZWxzZXt2YXIgTD0ibGVmdCI9PT1uLnBvc2l0aW9uO0k9TD90LmxlZnQreitDLnRvcDp0LnJpZ2h0LXotQy50b3Asaj10LnRvcCsodC5ib3R0b20tdC50b3ApLzIsRj1MPy0uNSpNYXRoLlBJOi41Kk1hdGguUEl9aS5zYXZlKCksaS50cmFuc2xhdGUoSSxqKSxpLnJvdGF0ZShGKSxpLnRleHRBbGlnbj0iY2VudGVyIixpLnRleHRCYXNlbGluZT0ibWlkZGxlIixpLmZpbGxTdHlsZT14LGkuZm9udD1rLmZvbnQsaS5maWxsVGV4dChmLmxhYmVsU3RyaW5nLDAsMCksaS5yZXN0b3JlKCl9aWYocC5kcmF3Qm9yZGVyKXtpLmxpbmVXaWR0aD1hLnZhbHVlQXRJbmRleE9yRGVmYXVsdChwLmxpbmVXaWR0aCwwKSxpLnN0cm9rZVN0eWxlPWEudmFsdWVBdEluZGV4T3JEZWZhdWx0KHAuY29sb3IsMCk7dmFyIEU9dC5sZWZ0LE49dC5yaWdodCtNLFI9dC50b3AsVj10LmJvdHRvbStNLEI9YS5hbGlhc1BpeGVsKGkubGluZVdpZHRoKTttPyhSPVY9InRvcCI9PT1uLnBvc2l0aW9uP3QuYm90dG9tOnQudG9wLFIrPUIsVis9Qik6KEU9Tj0ibGVmdCI9PT1uLnBvc2l0aW9uP3QucmlnaHQ6dC5sZWZ0LEUrPUIsTis9QiksaS5iZWdpblBhdGgoKSxpLm1vdmVUbyhFLFIpLGkubGluZVRvKE4sViksaS5zdHJva2UoKX19fX0pfSx7MjY6MjYsMjc6MjcsMzU6MzUsNDY6NDZ9XSwzNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDI2KSxpPWUoNDYpLGE9ZSgzMSk7dC5leHBvcnRzPXtjb25zdHJ1Y3RvcnM6e30sZGVmYXVsdHM6e30scmVnaXN0ZXJTY2FsZVR5cGU6ZnVuY3Rpb24oZSx0LG4pe3RoaXMuY29uc3RydWN0b3JzW2VdPXQsdGhpcy5kZWZhdWx0c1tlXT1pLmNsb25lKG4pfSxnZXRTY2FsZUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9ycy5oYXNPd25Qcm9wZXJ0eShlKT90aGlzLmNvbnN0cnVjdG9yc1tlXTp2b2lkIDB9LGdldFNjYWxlRGVmYXVsdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGVmYXVsdHMuaGFzT3duUHJvcGVydHkoZSk/aS5tZXJnZSh7fSxbci5zY2FsZSx0aGlzLmRlZmF1bHRzW2VdXSk6e319LHVwZGF0ZVNjYWxlRGVmYXVsdHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO24uZGVmYXVsdHMuaGFzT3duUHJvcGVydHkoZSkmJihuLmRlZmF1bHRzW2VdPWkuZXh0ZW5kKG4uZGVmYXVsdHNbZV0sdCkpfSxhZGRTY2FsZXNUb0xheW91dDpmdW5jdGlvbihlKXtpLmVhY2goZS5zY2FsZXMsKGZ1bmN0aW9uKHQpe3QuZnVsbFdpZHRoPXQub3B0aW9ucy5mdWxsV2lkdGgsdC5wb3NpdGlvbj10Lm9wdGlvbnMucG9zaXRpb24sdC53ZWlnaHQ9dC5vcHRpb25zLndlaWdodCxhLmFkZEJveChlLHQpfSkpfX19LHsyNjoyNiwzMTozMSw0Njo0Nn1dLDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDYpO3QuZXhwb3J0cz17Zm9ybWF0dGVyczp7dmFsdWVzOmZ1bmN0aW9uKGUpe3JldHVybiByLmlzQXJyYXkoZSk/ZToiIitlfSxsaW5lYXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4ubGVuZ3RoPjM/blsyXS1uWzFdOm5bMV0tblswXTtNYXRoLmFicyhpKT4xJiZlIT09TWF0aC5mbG9vcihlKSYmKGk9ZS1NYXRoLmZsb29yKGUpKTt2YXIgYT1yLmxvZzEwKE1hdGguYWJzKGkpKSxvPSIiO2lmKDAhPT1lKXt2YXIgcz1NYXRoLm1heChNYXRoLmFicyhuWzBdKSxNYXRoLmFicyhuW24ubGVuZ3RoLTFdKSk7aWYoczwxZS00KXt2YXIgYz1yLmxvZzEwKE1hdGguYWJzKGUpKTtvPWUudG9FeHBvbmVudGlhbChNYXRoLmZsb29yKGMpLU1hdGguZmxvb3IoYSkpfWVsc2V7dmFyIGw9LTEqTWF0aC5mbG9vcihhKTtsPU1hdGgubWF4KE1hdGgubWluKGwsMjApLDApLG89ZS50b0ZpeGVkKGwpfX1lbHNlIG89IjAiO3JldHVybiBvfSxsb2dhcml0aG1pYzpmdW5jdGlvbihlLHQsbil7dmFyIGk9ZS9NYXRoLnBvdygxMCxNYXRoLmZsb29yKHIubG9nMTAoZSkpKTtyZXR1cm4gMD09PWU/IjAiOjE9PT1pfHwyPT09aXx8NT09PWl8fDA9PT10fHx0PT09bi5sZW5ndGgtMT9lLnRvRXhwb25lbnRpYWwoKToiIn19fX0sezQ2OjQ2fV0sMzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyNiksaT1lKDI3KSxhPWUoNDYpO3IuX3NldCgiZ2xvYmFsIix7dG9vbHRpcHM6e2VuYWJsZWQ6ITAsY3VzdG9tOm51bGwsbW9kZToibmVhcmVzdCIscG9zaXRpb246ImF2ZXJhZ2UiLGludGVyc2VjdDohMCxiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMCwwLDAsMC44KSIsdGl0bGVGb250U3R5bGU6ImJvbGQiLHRpdGxlU3BhY2luZzoyLHRpdGxlTWFyZ2luQm90dG9tOjYsdGl0bGVGb250Q29sb3I6IiNmZmYiLHRpdGxlQWxpZ246ImxlZnQiLGJvZHlTcGFjaW5nOjIsYm9keUZvbnRDb2xvcjoiI2ZmZiIsYm9keUFsaWduOiJsZWZ0Iixmb290ZXJGb250U3R5bGU6ImJvbGQiLGZvb3RlclNwYWNpbmc6Mixmb290ZXJNYXJnaW5Ub3A6Nixmb290ZXJGb250Q29sb3I6IiNmZmYiLGZvb3RlckFsaWduOiJsZWZ0Iix5UGFkZGluZzo2LHhQYWRkaW5nOjYsY2FyZXRQYWRkaW5nOjIsY2FyZXRTaXplOjUsY29ybmVyUmFkaXVzOjYsbXVsdGlLZXlCYWNrZ3JvdW5kOiIjZmZmIixkaXNwbGF5Q29sb3JzOiEwLGJvcmRlckNvbG9yOiJyZ2JhKDAsMCwwLDApIixib3JkZXJXaWR0aDowLGNhbGxiYWNrczp7YmVmb3JlVGl0bGU6YS5ub29wLHRpdGxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49IiIscj10LmxhYmVscyxpPXI/ci5sZW5ndGg6MDtpZihlLmxlbmd0aD4wKXt2YXIgYT1lWzBdO2EueExhYmVsP249YS54TGFiZWw6aT4wJiZhLmluZGV4PGkmJihuPXJbYS5pbmRleF0pfXJldHVybiBufSxhZnRlclRpdGxlOmEubm9vcCxiZWZvcmVCb2R5OmEubm9vcCxiZWZvcmVMYWJlbDphLm5vb3AsbGFiZWw6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRhdGFzZXRzW2UuZGF0YXNldEluZGV4XS5sYWJlbHx8IiI7cmV0dXJuIG4mJihuKz0iOiAiKSxuKz1lLnlMYWJlbCxufSxsYWJlbENvbG9yOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXREYXRhc2V0TWV0YShlLmRhdGFzZXRJbmRleCkscj1uLmRhdGFbZS5pbmRleF0saT1yLl92aWV3O3JldHVybntib3JkZXJDb2xvcjppLmJvcmRlckNvbG9yLGJhY2tncm91bmRDb2xvcjppLmJhY2tncm91bmRDb2xvcn19LGxhYmVsVGV4dENvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuYm9keUZvbnRDb2xvcn0sYWZ0ZXJMYWJlbDphLm5vb3AsYWZ0ZXJCb2R5OmEubm9vcCxiZWZvcmVGb290ZXI6YS5ub29wLGZvb3RlcjphLm5vb3AsYWZ0ZXJGb290ZXI6YS5ub29wfX19KTt2YXIgbz17YXZlcmFnZTpmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpcmV0dXJuITE7dmFyIHQsbixyPTAsaT0wLGE9MDtmb3IodD0wLG49ZS5sZW5ndGg7dDxuOysrdCl7dmFyIG89ZVt0XTtpZihvJiZvLmhhc1ZhbHVlKCkpe3ZhciBzPW8udG9vbHRpcFBvc2l0aW9uKCk7cis9cy54LGkrPXMueSwrK2F9fXJldHVybnt4Ok1hdGgucm91bmQoci9hKSx5Ok1hdGgucm91bmQoaS9hKX19LG5lYXJlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbz10Lngscz10LnksYz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7Zm9yKG49MCxyPWUubGVuZ3RoO248cjsrK24pe3ZhciBsPWVbbl07aWYobCYmbC5oYXNWYWx1ZSgpKXt2YXIgdT1sLmdldENlbnRlclBvaW50KCksZD1hLmRpc3RhbmNlQmV0d2VlblBvaW50cyh0LHUpO2Q8YyYmKGM9ZCxpPWwpfX1pZihpKXt2YXIgcD1pLnRvb2x0aXBQb3NpdGlvbigpO289cC54LHM9cC55fXJldHVybnt4Om8seTpzfX19O2Z1bmN0aW9uIHMoZSx0KXt2YXIgbj1hLmNvbG9yKGUpO3JldHVybiBuLmFscGhhKHQqbi5hbHBoYSgpKS5yZ2JhU3RyaW5nKCl9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiB0JiYoYS5pc0FycmF5KHQpP0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGUsdCk6ZS5wdXNoKHQpKSxlfWZ1bmN0aW9uIGwoZSl7cmV0dXJuKCJzdHJpbmciPT09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBTdHJpbmcpJiZlLmluZGV4T2YoIlxuIik+LTE/ZS5zcGxpdCgiXG4iKTplfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5feFNjYWxlLG49ZS5feVNjYWxlfHxlLl9zY2FsZSxyPWUuX2luZGV4LGk9ZS5fZGF0YXNldEluZGV4O3JldHVybnt4TGFiZWw6dD90LmdldExhYmVsRm9ySW5kZXgocixpKToiIix5TGFiZWw6bj9uLmdldExhYmVsRm9ySW5kZXgocixpKToiIixpbmRleDpyLGRhdGFzZXRJbmRleDppLHg6ZS5fbW9kZWwueCx5OmUuX21vZGVsLnl9fWZ1bmN0aW9uIGQoZSl7dmFyIHQ9ci5nbG9iYWwsbj1hLnZhbHVlT3JEZWZhdWx0O3JldHVybnt4UGFkZGluZzplLnhQYWRkaW5nLHlQYWRkaW5nOmUueVBhZGRpbmcseEFsaWduOmUueEFsaWduLHlBbGlnbjplLnlBbGlnbixib2R5Rm9udENvbG9yOmUuYm9keUZvbnRDb2xvcixfYm9keUZvbnRGYW1pbHk6bihlLmJvZHlGb250RmFtaWx5LHQuZGVmYXVsdEZvbnRGYW1pbHkpLF9ib2R5Rm9udFN0eWxlOm4oZS5ib2R5Rm9udFN0eWxlLHQuZGVmYXVsdEZvbnRTdHlsZSksX2JvZHlBbGlnbjplLmJvZHlBbGlnbixib2R5Rm9udFNpemU6bihlLmJvZHlGb250U2l6ZSx0LmRlZmF1bHRGb250U2l6ZSksYm9keVNwYWNpbmc6ZS5ib2R5U3BhY2luZyx0aXRsZUZvbnRDb2xvcjplLnRpdGxlRm9udENvbG9yLF90aXRsZUZvbnRGYW1pbHk6bihlLnRpdGxlRm9udEZhbWlseSx0LmRlZmF1bHRGb250RmFtaWx5KSxfdGl0bGVGb250U3R5bGU6bihlLnRpdGxlRm9udFN0eWxlLHQuZGVmYXVsdEZvbnRTdHlsZSksdGl0bGVGb250U2l6ZTpuKGUudGl0bGVGb250U2l6ZSx0LmRlZmF1bHRGb250U2l6ZSksX3RpdGxlQWxpZ246ZS50aXRsZUFsaWduLHRpdGxlU3BhY2luZzplLnRpdGxlU3BhY2luZyx0aXRsZU1hcmdpbkJvdHRvbTplLnRpdGxlTWFyZ2luQm90dG9tLGZvb3RlckZvbnRDb2xvcjplLmZvb3RlckZvbnRDb2xvcixfZm9vdGVyRm9udEZhbWlseTpuKGUuZm9vdGVyRm9udEZhbWlseSx0LmRlZmF1bHRGb250RmFtaWx5KSxfZm9vdGVyRm9udFN0eWxlOm4oZS5mb290ZXJGb250U3R5bGUsdC5kZWZhdWx0Rm9udFN0eWxlKSxmb290ZXJGb250U2l6ZTpuKGUuZm9vdGVyRm9udFNpemUsdC5kZWZhdWx0Rm9udFNpemUpLF9mb290ZXJBbGlnbjplLmZvb3RlckFsaWduLGZvb3RlclNwYWNpbmc6ZS5mb290ZXJTcGFjaW5nLGZvb3Rlck1hcmdpblRvcDplLmZvb3Rlck1hcmdpblRvcCxjYXJldFNpemU6ZS5jYXJldFNpemUsY29ybmVyUmFkaXVzOmUuY29ybmVyUmFkaXVzLGJhY2tncm91bmRDb2xvcjplLmJhY2tncm91bmRDb2xvcixvcGFjaXR5OjAsbGVnZW5kQ29sb3JCYWNrZ3JvdW5kOmUubXVsdGlLZXlCYWNrZ3JvdW5kLGRpc3BsYXlDb2xvcnM6ZS5kaXNwbGF5Q29sb3JzLGJvcmRlckNvbG9yOmUuYm9yZGVyQ29sb3IsYm9yZGVyV2lkdGg6ZS5ib3JkZXJXaWR0aH19ZnVuY3Rpb24gcChlLHQpe3ZhciBuPWUuX2NoYXJ0LmN0eCxyPTIqdC55UGFkZGluZyxpPTAsbz10LmJvZHkscz1vLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmJlZm9yZS5sZW5ndGgrdC5saW5lcy5sZW5ndGgrdC5hZnRlci5sZW5ndGh9KSwwKTtzKz10LmJlZm9yZUJvZHkubGVuZ3RoK3QuYWZ0ZXJCb2R5Lmxlbmd0aDt2YXIgYz10LnRpdGxlLmxlbmd0aCxsPXQuZm9vdGVyLmxlbmd0aCx1PXQudGl0bGVGb250U2l6ZSxkPXQuYm9keUZvbnRTaXplLHA9dC5mb290ZXJGb250U2l6ZTtyKz1jKnUscis9Yz8oYy0xKSp0LnRpdGxlU3BhY2luZzowLHIrPWM/dC50aXRsZU1hcmdpbkJvdHRvbTowLHIrPXMqZCxyKz1zPyhzLTEpKnQuYm9keVNwYWNpbmc6MCxyKz1sP3QuZm9vdGVyTWFyZ2luVG9wOjAscis9bCpwLHIrPWw/KGwtMSkqdC5mb290ZXJTcGFjaW5nOjA7dmFyIGY9MCxoPWZ1bmN0aW9uKGUpe2k9TWF0aC5tYXgoaSxuLm1lYXN1cmVUZXh0KGUpLndpZHRoK2YpfTtyZXR1cm4gbi5mb250PWEuZm9udFN0cmluZyh1LHQuX3RpdGxlRm9udFN0eWxlLHQuX3RpdGxlRm9udEZhbWlseSksYS5lYWNoKHQudGl0bGUsaCksbi5mb250PWEuZm9udFN0cmluZyhkLHQuX2JvZHlGb250U3R5bGUsdC5fYm9keUZvbnRGYW1pbHkpLGEuZWFjaCh0LmJlZm9yZUJvZHkuY29uY2F0KHQuYWZ0ZXJCb2R5KSxoKSxmPXQuZGlzcGxheUNvbG9ycz9kKzI6MCxhLmVhY2gobywoZnVuY3Rpb24oZSl7YS5lYWNoKGUuYmVmb3JlLGgpLGEuZWFjaChlLmxpbmVzLGgpLGEuZWFjaChlLmFmdGVyLGgpfSkpLGY9MCxuLmZvbnQ9YS5mb250U3RyaW5nKHAsdC5fZm9vdGVyRm9udFN0eWxlLHQuX2Zvb3RlckZvbnRGYW1pbHkpLGEuZWFjaCh0LmZvb3RlcixoKSxpKz0yKnQueFBhZGRpbmcse3dpZHRoOmksaGVpZ2h0OnJ9fWZ1bmN0aW9uIGYoZSx0KXt2YXIgbixyLGksYSxvLHM9ZS5fbW9kZWwsYz1lLl9jaGFydCxsPWUuX2NoYXJ0LmNoYXJ0QXJlYSx1PSJjZW50ZXIiLGQ9ImNlbnRlciI7cy55PHQuaGVpZ2h0P2Q9InRvcCI6cy55PmMuaGVpZ2h0LXQuaGVpZ2h0JiYoZD0iYm90dG9tIik7dmFyIHA9KGwubGVmdCtsLnJpZ2h0KS8yLGY9KGwudG9wK2wuYm90dG9tKS8yOyJjZW50ZXIiPT09ZD8obj1mdW5jdGlvbihlKXtyZXR1cm4gZTw9cH0scj1mdW5jdGlvbihlKXtyZXR1cm4gZT5wfSk6KG49ZnVuY3Rpb24oZSl7cmV0dXJuIGU8PXQud2lkdGgvMn0scj1mdW5jdGlvbihlKXtyZXR1cm4gZT49Yy53aWR0aC10LndpZHRoLzJ9KSxpPWZ1bmN0aW9uKGUpe3JldHVybiBlK3Qud2lkdGgrcy5jYXJldFNpemUrcy5jYXJldFBhZGRpbmc+Yy53aWR0aH0sYT1mdW5jdGlvbihlKXtyZXR1cm4gZS10LndpZHRoLXMuY2FyZXRTaXplLXMuY2FyZXRQYWRkaW5nPDB9LG89ZnVuY3Rpb24oZSl7cmV0dXJuIGU8PWY/InRvcCI6ImJvdHRvbSJ9LG4ocy54KT8odT0ibGVmdCIsaShzLngpJiYodT0iY2VudGVyIixkPW8ocy55KSkpOnIocy54KSYmKHU9InJpZ2h0IixhKHMueCkmJih1PSJjZW50ZXIiLGQ9byhzLnkpKSk7dmFyIGg9ZS5fb3B0aW9ucztyZXR1cm57eEFsaWduOmgueEFsaWduP2gueEFsaWduOnUseUFsaWduOmgueUFsaWduP2gueUFsaWduOmR9fWZ1bmN0aW9uIGgoZSx0LG4scil7dmFyIGk9ZS54LGE9ZS55LG89ZS5jYXJldFNpemUscz1lLmNhcmV0UGFkZGluZyxjPWUuY29ybmVyUmFkaXVzLGw9bi54QWxpZ24sdT1uLnlBbGlnbixkPW8rcyxwPWMrcztyZXR1cm4icmlnaHQiPT09bD9pLT10LndpZHRoOiJjZW50ZXIiPT09bCYmKGktPXQud2lkdGgvMixpK3Qud2lkdGg+ci53aWR0aCYmKGk9ci53aWR0aC10LndpZHRoKSxpPDAmJihpPTApKSwidG9wIj09PXU/YSs9ZDphLT0iYm90dG9tIj09PXU/dC5oZWlnaHQrZDp0LmhlaWdodC8yLCJjZW50ZXIiPT09dT8ibGVmdCI9PT1sP2krPWQ6InJpZ2h0Ij09PWwmJihpLT1kKToibGVmdCI9PT1sP2ktPXA6InJpZ2h0Ij09PWwmJihpKz1wKSx7eDppLHk6YX19ZnVuY3Rpb24gbShlKXtyZXR1cm4gYyhbXSxsKGUpKX1uPXQuZXhwb3J0cz1pLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuX21vZGVsPWQodGhpcy5fb3B0aW9ucyksdGhpcy5fbGFzdEFjdGl2ZT1bXX0sZ2V0VGl0bGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5fb3B0aW9ucyxuPXQuY2FsbGJhY2tzLHI9bi5iZWZvcmVUaXRsZS5hcHBseShlLGFyZ3VtZW50cyksaT1uLnRpdGxlLmFwcGx5KGUsYXJndW1lbnRzKSxhPW4uYWZ0ZXJUaXRsZS5hcHBseShlLGFyZ3VtZW50cyksbz1bXTtyZXR1cm4gbz1jKG8sbChyKSksbz1jKG8sbChpKSksbz1jKG8sbChhKSksb30sZ2V0QmVmb3JlQm9keTpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX29wdGlvbnMuY2FsbGJhY2tzLmJlZm9yZUJvZHkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZ2V0Qm9keTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1uLl9vcHRpb25zLmNhbGxiYWNrcyxpPVtdO3JldHVybiBhLmVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIGE9e2JlZm9yZTpbXSxsaW5lczpbXSxhZnRlcjpbXX07YyhhLmJlZm9yZSxsKHIuYmVmb3JlTGFiZWwuY2FsbChuLGUsdCkpKSxjKGEubGluZXMsci5sYWJlbC5jYWxsKG4sZSx0KSksYyhhLmFmdGVyLGwoci5hZnRlckxhYmVsLmNhbGwobixlLHQpKSksaS5wdXNoKGEpfSkpLGl9LGdldEFmdGVyQm9keTpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX29wdGlvbnMuY2FsbGJhY2tzLmFmdGVyQm9keS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxnZXRGb290ZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5fb3B0aW9ucy5jYWxsYmFja3Msbj10LmJlZm9yZUZvb3Rlci5hcHBseShlLGFyZ3VtZW50cykscj10LmZvb3Rlci5hcHBseShlLGFyZ3VtZW50cyksaT10LmFmdGVyRm9vdGVyLmFwcGx5KGUsYXJndW1lbnRzKSxhPVtdO3JldHVybiBhPWMoYSxsKG4pKSxhPWMoYSxsKHIpKSxhPWMoYSxsKGkpKSxhfSx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPXRoaXMsaT1yLl9vcHRpb25zLHM9ci5fbW9kZWwsYz1yLl9tb2RlbD1kKGkpLGw9ci5fYWN0aXZlLG09ci5fZGF0YSxfPXt4QWxpZ246cy54QWxpZ24seUFsaWduOnMueUFsaWdufSxnPXt4OnMueCx5OnMueX0sdj17d2lkdGg6cy53aWR0aCxoZWlnaHQ6cy5oZWlnaHR9LHk9e3g6cy5jYXJldFgseTpzLmNhcmV0WX07aWYobC5sZW5ndGgpe2Mub3BhY2l0eT0xO3ZhciBiPVtdLHc9W107eT1vW2kucG9zaXRpb25dLmNhbGwocixsLHIuX2V2ZW50UG9zaXRpb24pO3ZhciB4PVtdO2Zvcih0PTAsbj1sLmxlbmd0aDt0PG47Kyt0KXgucHVzaCh1KGxbdF0pKTtpLmZpbHRlciYmKHg9eC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBpLmZpbHRlcihlLG0pfSkpKSxpLml0ZW1Tb3J0JiYoeD14LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkuaXRlbVNvcnQoZSx0LG0pfSkpKSxhLmVhY2goeCwoZnVuY3Rpb24oZSl7Yi5wdXNoKGkuY2FsbGJhY2tzLmxhYmVsQ29sb3IuY2FsbChyLGUsci5fY2hhcnQpKSx3LnB1c2goaS5jYWxsYmFja3MubGFiZWxUZXh0Q29sb3IuY2FsbChyLGUsci5fY2hhcnQpKX0pKSxjLnRpdGxlPXIuZ2V0VGl0bGUoeCxtKSxjLmJlZm9yZUJvZHk9ci5nZXRCZWZvcmVCb2R5KHgsbSksYy5ib2R5PXIuZ2V0Qm9keSh4LG0pLGMuYWZ0ZXJCb2R5PXIuZ2V0QWZ0ZXJCb2R5KHgsbSksYy5mb290ZXI9ci5nZXRGb290ZXIoeCxtKSxjLng9TWF0aC5yb3VuZCh5LngpLGMueT1NYXRoLnJvdW5kKHkueSksYy5jYXJldFBhZGRpbmc9aS5jYXJldFBhZGRpbmcsYy5sYWJlbENvbG9ycz1iLGMubGFiZWxUZXh0Q29sb3JzPXcsYy5kYXRhUG9pbnRzPXgsdj1wKHRoaXMsYyksXz1mKHRoaXMsdiksZz1oKGMsdixfLHIuX2NoYXJ0KX1lbHNlIGMub3BhY2l0eT0wO3JldHVybiBjLnhBbGlnbj1fLnhBbGlnbixjLnlBbGlnbj1fLnlBbGlnbixjLng9Zy54LGMueT1nLnksYy53aWR0aD12LndpZHRoLGMuaGVpZ2h0PXYuaGVpZ2h0LGMuY2FyZXRYPXkueCxjLmNhcmV0WT15Lnksci5fbW9kZWw9YyxlJiZpLmN1c3RvbSYmaS5jdXN0b20uY2FsbChyLGMpLHJ9LGRyYXdDYXJldDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2NoYXJ0LmN0eCxyPXRoaXMuX3ZpZXcsaT10aGlzLmdldENhcmV0UG9zaXRpb24oZSx0LHIpO24ubGluZVRvKGkueDEsaS55MSksbi5saW5lVG8oaS54MixpLnkyKSxuLmxpbmVUbyhpLngzLGkueTMpfSxnZXRDYXJldFBvc2l0aW9uOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLGEsbyxzLGMsbD1uLmNhcmV0U2l6ZSx1PW4uY29ybmVyUmFkaXVzLGQ9bi54QWxpZ24scD1uLnlBbGlnbixmPWUueCxoPWUueSxtPXQud2lkdGgsXz10LmhlaWdodDtpZigiY2VudGVyIj09PXApcz1oK18vMiwibGVmdCI9PT1kPyhyPWYsaT1yLWwsYT1yLG89cytsLGM9cy1sKToocj1mK20saT1yK2wsYT1yLG89cy1sLGM9cytsKTtlbHNlIGlmKCJsZWZ0Ij09PWQ/KGk9Zit1K2wscj1pLWwsYT1pK2wpOiJyaWdodCI9PT1kPyhpPWYrbS11LWwscj1pLWwsYT1pK2wpOihpPW4uY2FyZXRYLHI9aS1sLGE9aStsKSwidG9wIj09PXApbz1oLHM9by1sLGM9bztlbHNle289aCtfLHM9bytsLGM9bzt2YXIgZz1hO2E9cixyPWd9cmV0dXJue3gxOnIseDI6aSx4MzphLHkxOm8seTI6cyx5MzpjfX0sZHJhd1RpdGxlOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXQudGl0bGU7aWYoaS5sZW5ndGgpe24udGV4dEFsaWduPXQuX3RpdGxlQWxpZ24sbi50ZXh0QmFzZWxpbmU9InRvcCI7dmFyIG8sYyxsPXQudGl0bGVGb250U2l6ZSx1PXQudGl0bGVTcGFjaW5nO2ZvcihuLmZpbGxTdHlsZT1zKHQudGl0bGVGb250Q29sb3Isciksbi5mb250PWEuZm9udFN0cmluZyhsLHQuX3RpdGxlRm9udFN0eWxlLHQuX3RpdGxlRm9udEZhbWlseSksbz0wLGM9aS5sZW5ndGg7bzxjOysrbyluLmZpbGxUZXh0KGlbb10sZS54LGUueSksZS55Kz1sK3UsbysxPT09aS5sZW5ndGgmJihlLnkrPXQudGl0bGVNYXJnaW5Cb3R0b20tdSl9fSxkcmF3Qm9keTpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT10LmJvZHlGb250U2l6ZSxvPXQuYm9keVNwYWNpbmcsYz10LmJvZHk7bi50ZXh0QWxpZ249dC5fYm9keUFsaWduLG4udGV4dEJhc2VsaW5lPSJ0b3AiLG4uZm9udD1hLmZvbnRTdHJpbmcoaSx0Ll9ib2R5Rm9udFN0eWxlLHQuX2JvZHlGb250RmFtaWx5KTt2YXIgbD0wLHU9ZnVuY3Rpb24odCl7bi5maWxsVGV4dCh0LGUueCtsLGUueSksZS55Kz1pK299O24uZmlsbFN0eWxlPXModC5ib2R5Rm9udENvbG9yLHIpLGEuZWFjaCh0LmJlZm9yZUJvZHksdSk7dmFyIGQ9dC5kaXNwbGF5Q29sb3JzO2w9ZD9pKzI6MCxhLmVhY2goYywoZnVuY3Rpb24obyxjKXt2YXIgbD1zKHQubGFiZWxUZXh0Q29sb3JzW2NdLHIpO24uZmlsbFN0eWxlPWwsYS5lYWNoKG8uYmVmb3JlLHUpLGEuZWFjaChvLmxpbmVzLChmdW5jdGlvbihhKXtkJiYobi5maWxsU3R5bGU9cyh0LmxlZ2VuZENvbG9yQmFja2dyb3VuZCxyKSxuLmZpbGxSZWN0KGUueCxlLnksaSxpKSxuLmxpbmVXaWR0aD0xLG4uc3Ryb2tlU3R5bGU9cyh0LmxhYmVsQ29sb3JzW2NdLmJvcmRlckNvbG9yLHIpLG4uc3Ryb2tlUmVjdChlLngsZS55LGksaSksbi5maWxsU3R5bGU9cyh0LmxhYmVsQ29sb3JzW2NdLmJhY2tncm91bmRDb2xvcixyKSxuLmZpbGxSZWN0KGUueCsxLGUueSsxLGktMixpLTIpLG4uZmlsbFN0eWxlPWwpLHUoYSl9KSksYS5lYWNoKG8uYWZ0ZXIsdSl9KSksbD0wLGEuZWFjaCh0LmFmdGVyQm9keSx1KSxlLnktPW99LGRyYXdGb290ZXI6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5mb290ZXI7aS5sZW5ndGgmJihlLnkrPXQuZm9vdGVyTWFyZ2luVG9wLG4udGV4dEFsaWduPXQuX2Zvb3RlckFsaWduLG4udGV4dEJhc2VsaW5lPSJ0b3AiLG4uZmlsbFN0eWxlPXModC5mb290ZXJGb250Q29sb3Isciksbi5mb250PWEuZm9udFN0cmluZyh0LmZvb3RlckZvbnRTaXplLHQuX2Zvb3RlckZvbnRTdHlsZSx0Ll9mb290ZXJGb250RmFtaWx5KSxhLmVhY2goaSwoZnVuY3Rpb24ocil7bi5maWxsVGV4dChyLGUueCxlLnkpLGUueSs9dC5mb290ZXJGb250U2l6ZSt0LmZvb3RlclNwYWNpbmd9KSkpfSxkcmF3QmFja2dyb3VuZDpmdW5jdGlvbihlLHQsbixyLGkpe24uZmlsbFN0eWxlPXModC5iYWNrZ3JvdW5kQ29sb3IsaSksbi5zdHJva2VTdHlsZT1zKHQuYm9yZGVyQ29sb3IsaSksbi5saW5lV2lkdGg9dC5ib3JkZXJXaWR0aDt2YXIgYT10LnhBbGlnbixvPXQueUFsaWduLGM9ZS54LGw9ZS55LHU9ci53aWR0aCxkPXIuaGVpZ2h0LHA9dC5jb3JuZXJSYWRpdXM7bi5iZWdpblBhdGgoKSxuLm1vdmVUbyhjK3AsbCksInRvcCI9PT1vJiZ0aGlzLmRyYXdDYXJldChlLHIpLG4ubGluZVRvKGMrdS1wLGwpLG4ucXVhZHJhdGljQ3VydmVUbyhjK3UsbCxjK3UsbCtwKSwiY2VudGVyIj09PW8mJiJyaWdodCI9PT1hJiZ0aGlzLmRyYXdDYXJldChlLHIpLG4ubGluZVRvKGMrdSxsK2QtcCksbi5xdWFkcmF0aWNDdXJ2ZVRvKGMrdSxsK2QsYyt1LXAsbCtkKSwiYm90dG9tIj09PW8mJnRoaXMuZHJhd0NhcmV0KGUsciksbi5saW5lVG8oYytwLGwrZCksbi5xdWFkcmF0aWNDdXJ2ZVRvKGMsbCtkLGMsbCtkLXApLCJjZW50ZXIiPT09byYmImxlZnQiPT09YSYmdGhpcy5kcmF3Q2FyZXQoZSxyKSxuLmxpbmVUbyhjLGwrcCksbi5xdWFkcmF0aWNDdXJ2ZVRvKGMsbCxjK3AsbCksbi5jbG9zZVBhdGgoKSxuLmZpbGwoKSx0LmJvcmRlcldpZHRoPjAmJm4uc3Ryb2tlKCl9LGRyYXc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jaGFydC5jdHgsdD10aGlzLl92aWV3O2lmKDAhPT10Lm9wYWNpdHkpe3ZhciBuPXt3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH0scj17eDp0LngseTp0Lnl9LGk9TWF0aC5hYnModC5vcGFjaXR5PC4wMDEpPzA6dC5vcGFjaXR5LGE9dC50aXRsZS5sZW5ndGh8fHQuYmVmb3JlQm9keS5sZW5ndGh8fHQuYm9keS5sZW5ndGh8fHQuYWZ0ZXJCb2R5Lmxlbmd0aHx8dC5mb290ZXIubGVuZ3RoO3RoaXMuX29wdGlvbnMuZW5hYmxlZCYmYSYmKHRoaXMuZHJhd0JhY2tncm91bmQocix0LGUsbixpKSxyLngrPXQueFBhZGRpbmcsci55Kz10LnlQYWRkaW5nLHRoaXMuZHJhd1RpdGxlKHIsdCxlLGkpLHRoaXMuZHJhd0JvZHkocix0LGUsaSksdGhpcy5kcmF3Rm9vdGVyKHIsdCxlLGkpKX19LGhhbmRsZUV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10Ll9vcHRpb25zLHI9ITE7cmV0dXJuIHQuX2xhc3RBY3RpdmU9dC5fbGFzdEFjdGl2ZXx8W10sIm1vdXNlb3V0Ij09PWUudHlwZT90Ll9hY3RpdmU9W106dC5fYWN0aXZlPXQuX2NoYXJ0LmdldEVsZW1lbnRzQXRFdmVudEZvck1vZGUoZSxuLm1vZGUsbikscj0hYS5hcnJheUVxdWFscyh0Ll9hY3RpdmUsdC5fbGFzdEFjdGl2ZSksciYmKHQuX2xhc3RBY3RpdmU9dC5fYWN0aXZlLChuLmVuYWJsZWR8fG4uY3VzdG9tKSYmKHQuX2V2ZW50UG9zaXRpb249e3g6ZS54LHk6ZS55fSx0LnVwZGF0ZSghMCksdC5waXZvdCgpKSkscn19KTtuLnBvc2l0aW9uZXJzPW99LHsyNjoyNiwyNzoyNyw0Njo0Nn1dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjYpLGk9ZSgyNyksYT1lKDQ2KTtyLl9zZXQoImdsb2JhbCIse2VsZW1lbnRzOnthcmM6e2JhY2tncm91bmRDb2xvcjpyLmdsb2JhbC5kZWZhdWx0Q29sb3IsYm9yZGVyQ29sb3I6IiNmZmYiLGJvcmRlcldpZHRoOjJ9fX0pLHQuZXhwb3J0cz1pLmV4dGVuZCh7aW5MYWJlbFJhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3ZpZXc7cmV0dXJuISF0JiZNYXRoLnBvdyhlLXQueCwyKTxNYXRoLnBvdyh0LnJhZGl1cyt0LmhvdmVyUmFkaXVzLDIpfSxpblJhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fdmlldztpZihuKXt2YXIgcj1hLmdldEFuZ2xlRnJvbVBvaW50KG4se3g6ZSx5OnR9KSxpPXIuYW5nbGUsbz1yLmRpc3RhbmNlLHM9bi5zdGFydEFuZ2xlLGM9bi5lbmRBbmdsZTt3aGlsZShjPHMpYys9MipNYXRoLlBJO3doaWxlKGk+YylpLT0yKk1hdGguUEk7d2hpbGUoaTxzKWkrPTIqTWF0aC5QSTt2YXIgbD1pPj1zJiZpPD1jLHU9bz49bi5pbm5lclJhZGl1cyYmbzw9bi5vdXRlclJhZGl1cztyZXR1cm4gbCYmdX1yZXR1cm4hMX0sZ2V0Q2VudGVyUG9pbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl92aWV3LHQ9KGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKS8yLG49KGUuaW5uZXJSYWRpdXMrZS5vdXRlclJhZGl1cykvMjtyZXR1cm57eDplLngrTWF0aC5jb3ModCkqbix5OmUueStNYXRoLnNpbih0KSpufX0sZ2V0QXJlYTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ZpZXc7cmV0dXJuIE1hdGguUEkqKChlLmVuZEFuZ2xlLWUuc3RhcnRBbmdsZSkvKDIqTWF0aC5QSSkpKihNYXRoLnBvdyhlLm91dGVyUmFkaXVzLDIpLU1hdGgucG93KGUuaW5uZXJSYWRpdXMsMikpfSx0b29sdGlwUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl92aWV3LHQ9ZS5zdGFydEFuZ2xlKyhlLmVuZEFuZ2xlLWUuc3RhcnRBbmdsZSkvMixuPShlLm91dGVyUmFkaXVzLWUuaW5uZXJSYWRpdXMpLzIrZS5pbm5lclJhZGl1cztyZXR1cm57eDplLngrTWF0aC5jb3ModCkqbix5OmUueStNYXRoLnNpbih0KSpufX0sZHJhdzpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NoYXJ0LmN0eCx0PXRoaXMuX3ZpZXcsbj10LnN0YXJ0QW5nbGUscj10LmVuZEFuZ2xlO2UuYmVnaW5QYXRoKCksZS5hcmModC54LHQueSx0Lm91dGVyUmFkaXVzLG4sciksZS5hcmModC54LHQueSx0LmlubmVyUmFkaXVzLHIsbiwhMCksZS5jbG9zZVBhdGgoKSxlLnN0cm9rZVN0eWxlPXQuYm9yZGVyQ29sb3IsZS5saW5lV2lkdGg9dC5ib3JkZXJXaWR0aCxlLmZpbGxTdHlsZT10LmJhY2tncm91bmRDb2xvcixlLmZpbGwoKSxlLmxpbmVKb2luPSJiZXZlbCIsdC5ib3JkZXJXaWR0aCYmZS5zdHJva2UoKX19KX0sezI2OjI2LDI3OjI3LDQ2OjQ2fV0sMzg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyNiksaT1lKDI3KSxhPWUoNDYpLG89ci5nbG9iYWw7ci5fc2V0KCJnbG9iYWwiLHtlbGVtZW50czp7bGluZTp7dGVuc2lvbjouNCxiYWNrZ3JvdW5kQ29sb3I6by5kZWZhdWx0Q29sb3IsYm9yZGVyV2lkdGg6Myxib3JkZXJDb2xvcjpvLmRlZmF1bHRDb2xvcixib3JkZXJDYXBTdHlsZToiYnV0dCIsYm9yZGVyRGFzaDpbXSxib3JkZXJEYXNoT2Zmc2V0OjAsYm9yZGVySm9pblN0eWxlOiJtaXRlciIsY2FwQmV6aWVyUG9pbnRzOiEwLGZpbGw6ITB9fX0pLHQuZXhwb3J0cz1pLmV4dGVuZCh7ZHJhdzpmdW5jdGlvbigpe3ZhciBlLHQsbixyLGk9dGhpcyxzPWkuX3ZpZXcsYz1pLl9jaGFydC5jdHgsbD1zLnNwYW5HYXBzLHU9aS5fY2hpbGRyZW4uc2xpY2UoKSxkPW8uZWxlbWVudHMubGluZSxwPS0xO2ZvcihpLl9sb29wJiZ1Lmxlbmd0aCYmdS5wdXNoKHVbMF0pLGMuc2F2ZSgpLGMubGluZUNhcD1zLmJvcmRlckNhcFN0eWxlfHxkLmJvcmRlckNhcFN0eWxlLGMuc2V0TGluZURhc2gmJmMuc2V0TGluZURhc2gocy5ib3JkZXJEYXNofHxkLmJvcmRlckRhc2gpLGMubGluZURhc2hPZmZzZXQ9cy5ib3JkZXJEYXNoT2Zmc2V0fHxkLmJvcmRlckRhc2hPZmZzZXQsYy5saW5lSm9pbj1zLmJvcmRlckpvaW5TdHlsZXx8ZC5ib3JkZXJKb2luU3R5bGUsYy5saW5lV2lkdGg9cy5ib3JkZXJXaWR0aHx8ZC5ib3JkZXJXaWR0aCxjLnN0cm9rZVN0eWxlPXMuYm9yZGVyQ29sb3J8fG8uZGVmYXVsdENvbG9yLGMuYmVnaW5QYXRoKCkscD0tMSxlPTA7ZTx1Lmxlbmd0aDsrK2UpdD11W2VdLG49YS5wcmV2aW91c0l0ZW0odSxlKSxyPXQuX3ZpZXcsMD09PWU/ci5za2lwfHwoYy5tb3ZlVG8oci54LHIueSkscD1lKToobj0tMT09PXA/bjp1W3BdLHIuc2tpcHx8KHAhPT1lLTEmJiFsfHwtMT09PXA/Yy5tb3ZlVG8oci54LHIueSk6YS5jYW52YXMubGluZVRvKGMsbi5fdmlldyx0Ll92aWV3KSxwPWUpKTtjLnN0cm9rZSgpLGMucmVzdG9yZSgpfX0pfSx7MjY6MjYsMjc6MjcsNDY6NDZ9XSwzOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDI2KSxpPWUoMjcpLGE9ZSg0Niksbz1yLmdsb2JhbC5kZWZhdWx0Q29sb3I7ZnVuY3Rpb24gcyhlKXt2YXIgdD10aGlzLl92aWV3O3JldHVybiEhdCYmTWF0aC5hYnMoZS10LngpPHQucmFkaXVzK3QuaGl0UmFkaXVzfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9dGhpcy5fdmlldztyZXR1cm4hIXQmJk1hdGguYWJzKGUtdC55KTx0LnJhZGl1cyt0LmhpdFJhZGl1c31yLl9zZXQoImdsb2JhbCIse2VsZW1lbnRzOntwb2ludDp7cmFkaXVzOjMscG9pbnRTdHlsZToiY2lyY2xlIixiYWNrZ3JvdW5kQ29sb3I6byxib3JkZXJDb2xvcjpvLGJvcmRlcldpZHRoOjEsaGl0UmFkaXVzOjEsaG92ZXJSYWRpdXM6NCxob3ZlckJvcmRlcldpZHRoOjF9fX0pLHQuZXhwb3J0cz1pLmV4dGVuZCh7aW5SYW5nZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX3ZpZXc7cmV0dXJuISFuJiZNYXRoLnBvdyhlLW4ueCwyKStNYXRoLnBvdyh0LW4ueSwyKTxNYXRoLnBvdyhuLmhpdFJhZGl1cytuLnJhZGl1cywyKX0saW5MYWJlbFJhbmdlOnMsaW5YUmFuZ2U6cyxpbllSYW5nZTpjLGdldENlbnRlclBvaW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdmlldztyZXR1cm57eDplLngseTplLnl9fSxnZXRBcmVhOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguUEkqTWF0aC5wb3codGhpcy5fdmlldy5yYWRpdXMsMil9LHRvb2x0aXBQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ZpZXc7cmV0dXJue3g6ZS54LHk6ZS55LHBhZGRpbmc6ZS5yYWRpdXMrZS5ib3JkZXJXaWR0aH19LGRyYXc6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fdmlldyxuPXRoaXMuX21vZGVsLGk9dGhpcy5fY2hhcnQuY3R4LHM9dC5wb2ludFN0eWxlLGM9dC5yb3RhdGlvbixsPXQucmFkaXVzLHU9dC54LGQ9dC55LHA9MS4wMTt0LnNraXB8fCh2b2lkIDA9PT1lfHxuLng+PWUubGVmdCYmZS5yaWdodCpwPj1uLngmJm4ueT49ZS50b3AmJmUuYm90dG9tKnA+PW4ueSkmJihpLnN0cm9rZVN0eWxlPXQuYm9yZGVyQ29sb3J8fG8saS5saW5lV2lkdGg9YS52YWx1ZU9yRGVmYXVsdCh0LmJvcmRlcldpZHRoLHIuZ2xvYmFsLmVsZW1lbnRzLnBvaW50LmJvcmRlcldpZHRoKSxpLmZpbGxTdHlsZT10LmJhY2tncm91bmRDb2xvcnx8byxhLmNhbnZhcy5kcmF3UG9pbnQoaSxzLGwsdSxkLGMpKX19KX0sezI2OjI2LDI3OjI3LDQ2OjQ2fV0sNDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyNiksaT1lKDI3KTtmdW5jdGlvbiBhKGUpe3JldHVybiB2b2lkIDAhPT1lLl92aWV3LndpZHRofWZ1bmN0aW9uIG8oZSl7dmFyIHQsbixyLGksbz1lLl92aWV3O2lmKGEoZSkpe3ZhciBzPW8ud2lkdGgvMjt0PW8ueC1zLG49by54K3Mscj1NYXRoLm1pbihvLnksby5iYXNlKSxpPU1hdGgubWF4KG8ueSxvLmJhc2UpfWVsc2V7dmFyIGM9by5oZWlnaHQvMjt0PU1hdGgubWluKG8ueCxvLmJhc2UpLG49TWF0aC5tYXgoby54LG8uYmFzZSkscj1vLnktYyxpPW8ueStjfXJldHVybntsZWZ0OnQsdG9wOnIscmlnaHQ6bixib3R0b206aX19ci5fc2V0KCJnbG9iYWwiLHtlbGVtZW50czp7cmVjdGFuZ2xlOntiYWNrZ3JvdW5kQ29sb3I6ci5nbG9iYWwuZGVmYXVsdENvbG9yLGJvcmRlckNvbG9yOnIuZ2xvYmFsLmRlZmF1bHRDb2xvcixib3JkZXJTa2lwcGVkOiJib3R0b20iLGJvcmRlcldpZHRoOjB9fX0pLHQuZXhwb3J0cz1pLmV4dGVuZCh7ZHJhdzpmdW5jdGlvbigpe3ZhciBlLHQsbixyLGksYSxvLHM9dGhpcy5fY2hhcnQuY3R4LGM9dGhpcy5fdmlldyxsPWMuYm9yZGVyV2lkdGg7aWYoYy5ob3Jpem9udGFsPyhlPWMuYmFzZSx0PWMueCxuPWMueS1jLmhlaWdodC8yLHI9Yy55K2MuaGVpZ2h0LzIsaT10PmU/MTotMSxhPTEsbz1jLmJvcmRlclNraXBwZWR8fCJsZWZ0Iik6KGU9Yy54LWMud2lkdGgvMix0PWMueCtjLndpZHRoLzIsbj1jLnkscj1jLmJhc2UsaT0xLGE9cj5uPzE6LTEsbz1jLmJvcmRlclNraXBwZWR8fCJib3R0b20iKSxsKXt2YXIgdT1NYXRoLm1pbihNYXRoLmFicyhlLXQpLE1hdGguYWJzKG4tcikpO2w9bD51P3U6bDt2YXIgZD1sLzIscD1lKygibGVmdCIhPT1vP2QqaTowKSxmPXQrKCJyaWdodCIhPT1vPy1kKmk6MCksaD1uKygidG9wIiE9PW8/ZCphOjApLG09cisoImJvdHRvbSIhPT1vPy1kKmE6MCk7cCE9PWYmJihuPWgscj1tKSxoIT09bSYmKGU9cCx0PWYpfXMuYmVnaW5QYXRoKCkscy5maWxsU3R5bGU9Yy5iYWNrZ3JvdW5kQ29sb3Iscy5zdHJva2VTdHlsZT1jLmJvcmRlckNvbG9yLHMubGluZVdpZHRoPWw7dmFyIF89W1tlLHJdLFtlLG5dLFt0LG5dLFt0LHJdXSxnPVsiYm90dG9tIiwibGVmdCIsInRvcCIsInJpZ2h0Il0sdj1nLmluZGV4T2YobywwKTtmdW5jdGlvbiB5KGUpe3JldHVybiBfWyh2K2UpJTRdfS0xPT09diYmKHY9MCk7dmFyIGI9eSgwKTtzLm1vdmVUbyhiWzBdLGJbMV0pO2Zvcih2YXIgdz0xO3c8NDt3KyspYj15KHcpLHMubGluZVRvKGJbMF0sYlsxXSk7cy5maWxsKCksbCYmcy5zdHJva2UoKX0saGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdmlldztyZXR1cm4gZS5iYXNlLWUueX0saW5SYW5nZTpmdW5jdGlvbihlLHQpe3ZhciBuPSExO2lmKHRoaXMuX3ZpZXcpe3ZhciByPW8odGhpcyk7bj1lPj1yLmxlZnQmJmU8PXIucmlnaHQmJnQ+PXIudG9wJiZ0PD1yLmJvdHRvbX1yZXR1cm4gbn0saW5MYWJlbFJhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZighbi5fdmlldylyZXR1cm4hMTt2YXIgcj0hMSxpPW8obik7cmV0dXJuIHI9YShuKT9lPj1pLmxlZnQmJmU8PWkucmlnaHQ6dD49aS50b3AmJnQ8PWkuYm90dG9tLHJ9LGluWFJhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PW8odGhpcyk7cmV0dXJuIGU+PXQubGVmdCYmZTw9dC5yaWdodH0saW5ZUmFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzKTtyZXR1cm4gZT49dC50b3AmJmU8PXQuYm90dG9tfSxnZXRDZW50ZXJQb2ludDpmdW5jdGlvbigpe3ZhciBlLHQsbj10aGlzLl92aWV3O3JldHVybiBhKHRoaXMpPyhlPW4ueCx0PShuLnkrbi5iYXNlKS8yKTooZT0obi54K24uYmFzZSkvMix0PW4ueSkse3g6ZSx5OnR9fSxnZXRBcmVhOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdmlldztyZXR1cm4gZS53aWR0aCpNYXRoLmFicyhlLnktZS5iYXNlKX0sdG9vbHRpcFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdmlldztyZXR1cm57eDplLngseTplLnl9fX0pfSx7MjY6MjYsMjc6Mjd9XSw0MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9e30sdC5leHBvcnRzLkFyYz1lKDM3KSx0LmV4cG9ydHMuTGluZT1lKDM4KSx0LmV4cG9ydHMuUG9pbnQ9ZSgzOSksdC5leHBvcnRzLlJlY3RhbmdsZT1lKDQwKX0sezM3OjM3LDM4OjM4LDM5OjM5LDQwOjQwfV0sNDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0Myk7bj10LmV4cG9ydHM9e2NsZWFyOmZ1bmN0aW9uKGUpe2UuY3R4LmNsZWFyUmVjdCgwLDAsZS53aWR0aCxlLmhlaWdodCl9LHJvdW5kZWRSZWN0OmZ1bmN0aW9uKGUsdCxuLHIsaSxhKXtpZihhKXt2YXIgbz0xZS03LHM9TWF0aC5taW4oYSxpLzItbyxyLzItbyk7ZS5tb3ZlVG8odCtzLG4pLGUubGluZVRvKHQrci1zLG4pLGUuYXJjVG8odCtyLG4sdCtyLG4rcyxzKSxlLmxpbmVUbyh0K3IsbitpLXMpLGUuYXJjVG8odCtyLG4raSx0K3ItcyxuK2kscyksZS5saW5lVG8odCtzLG4raSksZS5hcmNUbyh0LG4raSx0LG4raS1zLHMpLGUubGluZVRvKHQsbitzKSxlLmFyY1RvKHQsbix0K3MsbixzKSxlLmNsb3NlUGF0aCgpLGUubW92ZVRvKHQsbil9ZWxzZSBlLnJlY3QodCxuLHIsaSl9LGRyYXdQb2ludDpmdW5jdGlvbihlLHQsbixyLGksYSl7dmFyIG8scyxjLGwsdSxkO2lmKGE9YXx8MCx0JiYib2JqZWN0Ij09PXR5cGVvZiB0JiYobz10LnRvU3RyaW5nKCksIltvYmplY3QgSFRNTEltYWdlRWxlbWVudF0iPT09b3x8IltvYmplY3QgSFRNTENhbnZhc0VsZW1lbnRdIj09PW8pKWUuZHJhd0ltYWdlKHQsci10LndpZHRoLzIsaS10LmhlaWdodC8yLHQud2lkdGgsdC5oZWlnaHQpO2Vsc2UgaWYoIShpc05hTihuKXx8bjw9MCkpe3N3aXRjaChlLnNhdmUoKSxlLnRyYW5zbGF0ZShyLGkpLGUucm90YXRlKGEqTWF0aC5QSS8xODApLGUuYmVnaW5QYXRoKCksdCl7ZGVmYXVsdDplLmFyYygwLDAsbiwwLDIqTWF0aC5QSSksZS5jbG9zZVBhdGgoKTticmVhaztjYXNlInRyaWFuZ2xlIjpzPTMqbi9NYXRoLnNxcnQoMyksdT1zKk1hdGguc3FydCgzKS8yLGUubW92ZVRvKC1zLzIsdS8zKSxlLmxpbmVUbyhzLzIsdS8zKSxlLmxpbmVUbygwLC0yKnUvMyksZS5jbG9zZVBhdGgoKTticmVhaztjYXNlInJlY3QiOmQ9MS9NYXRoLlNRUlQyKm4sZS5yZWN0KC1kLC1kLDIqZCwyKmQpO2JyZWFrO2Nhc2UicmVjdFJvdW5kZWQiOnZhciBwPW4vTWF0aC5TUVJUMixmPS1wLGg9LXAsbT1NYXRoLlNRUlQyKm47dGhpcy5yb3VuZGVkUmVjdChlLGYsaCxtLG0sLjQyNSpuKTticmVhaztjYXNlInJlY3RSb3QiOmQ9MS9NYXRoLlNRUlQyKm4sZS5tb3ZlVG8oLWQsMCksZS5saW5lVG8oMCxkKSxlLmxpbmVUbyhkLDApLGUubGluZVRvKDAsLWQpLGUuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSJjcm9zcyI6ZS5tb3ZlVG8oMCxuKSxlLmxpbmVUbygwLC1uKSxlLm1vdmVUbygtbiwwKSxlLmxpbmVUbyhuLDApO2JyZWFrO2Nhc2UiY3Jvc3NSb3QiOmM9TWF0aC5jb3MoTWF0aC5QSS80KSpuLGw9TWF0aC5zaW4oTWF0aC5QSS80KSpuLGUubW92ZVRvKC1jLC1sKSxlLmxpbmVUbyhjLGwpLGUubW92ZVRvKC1jLGwpLGUubGluZVRvKGMsLWwpO2JyZWFrO2Nhc2Uic3RhciI6ZS5tb3ZlVG8oMCxuKSxlLmxpbmVUbygwLC1uKSxlLm1vdmVUbygtbiwwKSxlLmxpbmVUbyhuLDApLGM9TWF0aC5jb3MoTWF0aC5QSS80KSpuLGw9TWF0aC5zaW4oTWF0aC5QSS80KSpuLGUubW92ZVRvKC1jLC1sKSxlLmxpbmVUbyhjLGwpLGUubW92ZVRvKC1jLGwpLGUubGluZVRvKGMsLWwpO2JyZWFrO2Nhc2UibGluZSI6ZS5tb3ZlVG8oLW4sMCksZS5saW5lVG8obiwwKTticmVhaztjYXNlImRhc2giOmUubW92ZVRvKDAsMCksZS5saW5lVG8obiwwKTticmVha31lLmZpbGwoKSxlLnN0cm9rZSgpLGUucmVzdG9yZSgpfX0sY2xpcEFyZWE6ZnVuY3Rpb24oZSx0KXtlLnNhdmUoKSxlLmJlZ2luUGF0aCgpLGUucmVjdCh0LmxlZnQsdC50b3AsdC5yaWdodC10LmxlZnQsdC5ib3R0b20tdC50b3ApLGUuY2xpcCgpfSx1bmNsaXBBcmVhOmZ1bmN0aW9uKGUpe2UucmVzdG9yZSgpfSxsaW5lVG86ZnVuY3Rpb24oZSx0LG4scil7aWYobi5zdGVwcGVkTGluZSlyZXR1cm4iYWZ0ZXIiPT09bi5zdGVwcGVkTGluZSYmIXJ8fCJhZnRlciIhPT1uLnN0ZXBwZWRMaW5lJiZyP2UubGluZVRvKHQueCxuLnkpOmUubGluZVRvKG4ueCx0LnkpLHZvaWQgZS5saW5lVG8obi54LG4ueSk7bi50ZW5zaW9uP2UuYmV6aWVyQ3VydmVUbyhyP3QuY29udHJvbFBvaW50UHJldmlvdXNYOnQuY29udHJvbFBvaW50TmV4dFgscj90LmNvbnRyb2xQb2ludFByZXZpb3VzWTp0LmNvbnRyb2xQb2ludE5leHRZLHI/bi5jb250cm9sUG9pbnROZXh0WDpuLmNvbnRyb2xQb2ludFByZXZpb3VzWCxyP24uY29udHJvbFBvaW50TmV4dFk6bi5jb250cm9sUG9pbnRQcmV2aW91c1ksbi54LG4ueSk6ZS5saW5lVG8obi54LG4ueSl9fTtyLmNsZWFyPW4uY2xlYXIsci5kcmF3Um91bmRlZFJlY3RhbmdsZT1mdW5jdGlvbihlKXtlLmJlZ2luUGF0aCgpLG4ucm91bmRlZFJlY3QuYXBwbHkobixhcmd1bWVudHMpfX0sezQzOjQzfV0sNDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e25vb3A6ZnVuY3Rpb24oKXt9LHVpZDpmdW5jdGlvbigpe3ZhciBlPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUrK319KCksaXNOdWxsT3JVbmRlZjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGV9LGlzQXJyYXk6QXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5OmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9LGlzT2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9LHZhbHVlT3JEZWZhdWx0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuInVuZGVmaW5lZCI9PT10eXBlb2YgZT90OmV9LHZhbHVlQXRJbmRleE9yRGVmYXVsdDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIudmFsdWVPckRlZmF1bHQoci5pc0FycmF5KGUpP2VbdF06ZSxuKX0sY2FsbGJhY2s6ZnVuY3Rpb24oZSx0LG4pe2lmKGUmJiJmdW5jdGlvbiI9PT10eXBlb2YgZS5jYWxsKXJldHVybiBlLmFwcGx5KG4sdCl9LGVhY2g6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGEsbyxzO2lmKHIuaXNBcnJheShlKSlpZihvPWUubGVuZ3RoLGkpZm9yKGE9by0xO2E+PTA7YS0tKXQuY2FsbChuLGVbYV0sYSk7ZWxzZSBmb3IoYT0wO2E8bzthKyspdC5jYWxsKG4sZVthXSxhKTtlbHNlIGlmKHIuaXNPYmplY3QoZSkpZm9yKHM9T2JqZWN0LmtleXMoZSksbz1zLmxlbmd0aCxhPTA7YTxvO2ErKyl0LmNhbGwobixlW3NbYV1dLHNbYV0pfSxhcnJheUVxdWFsczpmdW5jdGlvbihlLHQpe3ZhciBuLGksYSxvO2lmKCFlfHwhdHx8ZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3Iobj0wLGk9ZS5sZW5ndGg7bjxpOysrbilpZihhPWVbbl0sbz10W25dLGEgaW5zdGFuY2VvZiBBcnJheSYmbyBpbnN0YW5jZW9mIEFycmF5KXtpZighci5hcnJheUVxdWFscyhhLG8pKXJldHVybiExfWVsc2UgaWYoYSE9PW8pcmV0dXJuITE7cmV0dXJuITB9LGNsb25lOmZ1bmN0aW9uKGUpe2lmKHIuaXNBcnJheShlKSlyZXR1cm4gZS5tYXAoci5jbG9uZSk7aWYoci5pc09iamVjdChlKSl7Zm9yKHZhciB0PXt9LG49T2JqZWN0LmtleXMoZSksaT1uLmxlbmd0aCxhPTA7YTxpOysrYSl0W25bYV1dPXIuY2xvbmUoZVtuW2FdXSk7cmV0dXJuIHR9cmV0dXJuIGV9LF9tZXJnZXI6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9dFtlXSxvPW5bZV07ci5pc09iamVjdChhKSYmci5pc09iamVjdChvKT9yLm1lcmdlKGEsbyxpKTp0W2VdPXIuY2xvbmUobyl9LF9tZXJnZXJJZjpmdW5jdGlvbihlLHQsbil7dmFyIGk9dFtlXSxhPW5bZV07ci5pc09iamVjdChpKSYmci5pc09iamVjdChhKT9yLm1lcmdlSWYoaSxhKTp0Lmhhc093blByb3BlcnR5KGUpfHwodFtlXT1yLmNsb25lKGEpKX0sbWVyZ2U6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLGEsbyxzLGMsbD1yLmlzQXJyYXkodCk/dDpbdF0sdT1sLmxlbmd0aDtpZighci5pc09iamVjdChlKSlyZXR1cm4gZTtmb3Iobj1ufHx7fSxpPW4ubWVyZ2VyfHxyLl9tZXJnZXIsYT0wO2E8dTsrK2EpaWYodD1sW2FdLHIuaXNPYmplY3QodCkpZm9yKG89T2JqZWN0LmtleXModCksYz0wLHM9by5sZW5ndGg7YzxzOysrYylpKG9bY10sZSx0LG4pO3JldHVybiBlfSxtZXJnZUlmOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIubWVyZ2UoZSx0LHttZXJnZXI6ci5fbWVyZ2VySWZ9KX0sZXh0ZW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1mdW5jdGlvbih0LG4pe2Vbbl09dH0sbj0xLGk9YXJndW1lbnRzLmxlbmd0aDtuPGk7KytuKXIuZWFjaChhcmd1bWVudHNbbl0sdCk7cmV0dXJuIGV9LGluaGVyaXRzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1lJiZlLmhhc093blByb3BlcnR5KCJjb25zdHJ1Y3RvciIpP2UuY29uc3RydWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGk9ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yPW59O3JldHVybiBpLnByb3RvdHlwZT10LnByb3RvdHlwZSxuLnByb3RvdHlwZT1uZXcgaSxuLmV4dGVuZD1yLmluaGVyaXRzLGUmJnIuZXh0ZW5kKG4ucHJvdG90eXBlLGUpLG4uX19zdXBlcl9fPXQucHJvdG90eXBlLG59fTt0LmV4cG9ydHM9cixyLmNhbGxDYWxsYmFjaz1yLmNhbGxiYWNrLHIuaW5kZXhPZj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LG4pfSxyLmdldFZhbHVlT3JEZWZhdWx0PXIudmFsdWVPckRlZmF1bHQsci5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQ9ci52YWx1ZUF0SW5kZXhPckRlZmF1bHR9LHt9XSw0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQzKSxpPXtsaW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGVhc2VJblF1YWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqZX0sZWFzZU91dFF1YWQ6ZnVuY3Rpb24oZSl7cmV0dXJuLWUqKGUtMil9LGVhc2VJbk91dFF1YWQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGUvPS41KTwxPy41KmUqZTotLjUqKC0tZSooZS0yKS0xKX0sZWFzZUluQ3ViaWM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqZSplfSxlYXNlT3V0Q3ViaWM6ZnVuY3Rpb24oZSl7cmV0dXJuKGUtPTEpKmUqZSsxfSxlYXNlSW5PdXRDdWJpYzpmdW5jdGlvbihlKXtyZXR1cm4oZS89LjUpPDE/LjUqZSplKmU6LjUqKChlLT0yKSplKmUrMil9LGVhc2VJblF1YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiBlKmUqZSplfSxlYXNlT3V0UXVhcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuLSgoZS09MSkqZSplKmUtMSl9LGVhc2VJbk91dFF1YXJ0OmZ1bmN0aW9uKGUpe3JldHVybihlLz0uNSk8MT8uNSplKmUqZSplOi0uNSooKGUtPTIpKmUqZSplLTIpfSxlYXNlSW5RdWludDpmdW5jdGlvbihlKXtyZXR1cm4gZSplKmUqZSplfSxlYXNlT3V0UXVpbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGUtPTEpKmUqZSplKmUrMX0sZWFzZUluT3V0UXVpbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGUvPS41KTwxPy41KmUqZSplKmUqZTouNSooKGUtPTIpKmUqZSplKmUrMil9LGVhc2VJblNpbmU6ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5jb3MoZSooTWF0aC5QSS8yKSl9LGVhc2VPdXRTaW5lOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNpbihlKihNYXRoLlBJLzIpKX0sZWFzZUluT3V0U2luZTpmdW5jdGlvbihlKXtyZXR1cm4tLjUqKE1hdGguY29zKE1hdGguUEkqZSktMSl9LGVhc2VJbkV4cG86ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzA6TWF0aC5wb3coMiwxMCooZS0xKSl9LGVhc2VPdXRFeHBvOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8xOjEtTWF0aC5wb3coMiwtMTAqZSl9LGVhc2VJbk91dEV4cG86ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzA6MT09PWU/MTooZS89LjUpPDE/LjUqTWF0aC5wb3coMiwxMCooZS0xKSk6LjUqKDItTWF0aC5wb3coMiwtMTAqLS1lKSl9LGVhc2VJbkNpcmM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTE/ZTotKE1hdGguc3FydCgxLWUqZSktMSl9LGVhc2VPdXRDaXJjOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNxcnQoMS0oZS09MSkqZSl9LGVhc2VJbk91dENpcmM6ZnVuY3Rpb24oZSl7cmV0dXJuKGUvPS41KTwxPy0uNSooTWF0aC5zcXJ0KDEtZSplKS0xKTouNSooTWF0aC5zcXJ0KDEtKGUtPTIpKmUpKzEpfSxlYXNlSW5FbGFzdGljOmZ1bmN0aW9uKGUpe3ZhciB0PTEuNzAxNTgsbj0wLHI9MTtyZXR1cm4gMD09PWU/MDoxPT09ZT8xOihufHwobj0uMykscjwxPyhyPTEsdD1uLzQpOnQ9bi8oMipNYXRoLlBJKSpNYXRoLmFzaW4oMS9yKSwtcipNYXRoLnBvdygyLDEwKihlLT0xKSkqTWF0aC5zaW4oKGUtdCkqKDIqTWF0aC5QSSkvbikpfSxlYXNlT3V0RWxhc3RpYzpmdW5jdGlvbihlKXt2YXIgdD0xLjcwMTU4LG49MCxyPTE7cmV0dXJuIDA9PT1lPzA6MT09PWU/MToobnx8KG49LjMpLHI8MT8ocj0xLHQ9bi80KTp0PW4vKDIqTWF0aC5QSSkqTWF0aC5hc2luKDEvcikscipNYXRoLnBvdygyLC0xMCplKSpNYXRoLnNpbigoZS10KSooMipNYXRoLlBJKS9uKSsxKX0sZWFzZUluT3V0RWxhc3RpYzpmdW5jdGlvbihlKXt2YXIgdD0xLjcwMTU4LG49MCxyPTE7cmV0dXJuIDA9PT1lPzA6Mj09PShlLz0uNSk/MToobnx8KG49LjQ1KSxyPDE/KHI9MSx0PW4vNCk6dD1uLygyKk1hdGguUEkpKk1hdGguYXNpbigxL3IpLGU8MT9yKk1hdGgucG93KDIsMTAqKGUtPTEpKSpNYXRoLnNpbigoZS10KSooMipNYXRoLlBJKS9uKSotLjU6cipNYXRoLnBvdygyLC0xMCooZS09MSkpKk1hdGguc2luKChlLXQpKigyKk1hdGguUEkpL24pKi41KzEpfSxlYXNlSW5CYWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTEuNzAxNTg7cmV0dXJuIGUqZSooKHQrMSkqZS10KX0sZWFzZU91dEJhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9MS43MDE1ODtyZXR1cm4oZS09MSkqZSooKHQrMSkqZSt0KSsxfSxlYXNlSW5PdXRCYWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTEuNzAxNTg7cmV0dXJuKGUvPS41KTwxP2UqZSooKDErKHQqPTEuNTI1KSkqZS10KSouNTouNSooKGUtPTIpKmUqKCgxKyh0Kj0xLjUyNSkpKmUrdCkrMil9LGVhc2VJbkJvdW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gMS1pLmVhc2VPdXRCb3VuY2UoMS1lKX0sZWFzZU91dEJvdW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZTwxLzIuNzU/Ny41NjI1KmUqZTplPDIvMi43NT83LjU2MjUqKGUtPTEuNS8yLjc1KSplKy43NTplPDIuNS8yLjc1PzcuNTYyNSooZS09Mi4yNS8yLjc1KSplKy45Mzc1OjcuNTYyNSooZS09Mi42MjUvMi43NSkqZSsuOTg0Mzc1fSxlYXNlSW5PdXRCb3VuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGU8LjU/LjUqaS5lYXNlSW5Cb3VuY2UoMiplKTouNSppLmVhc2VPdXRCb3VuY2UoMiplLTEpKy41fX07dC5leHBvcnRzPXtlZmZlY3RzOml9LHIuZWFzaW5nRWZmZWN0cz1pfSx7NDM6NDN9XSw0NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQzKTt0LmV4cG9ydHM9e3RvTGluZUhlaWdodDpmdW5jdGlvbihlLHQpe3ZhciBuPSgiIitlKS5tYXRjaCgvXihub3JtYWx8KFxkKyg/OlwuXGQrKT8pKHB4fGVtfCUpPykkLyk7aWYoIW58fCJub3JtYWwiPT09blsxXSlyZXR1cm4gMS4yKnQ7c3dpdGNoKGU9K25bMl0sblszXSl7Y2FzZSJweCI6cmV0dXJuIGU7Y2FzZSIlIjplLz0xMDA7YnJlYWs7ZGVmYXVsdDpicmVha31yZXR1cm4gdCplfSx0b1BhZGRpbmc6ZnVuY3Rpb24oZSl7dmFyIHQsbixpLGE7cmV0dXJuIHIuaXNPYmplY3QoZSk/KHQ9K2UudG9wfHwwLG49K2UucmlnaHR8fDAsaT0rZS5ib3R0b218fDAsYT0rZS5sZWZ0fHwwKTp0PW49aT1hPStlfHwwLHt0b3A6dCxyaWdodDpuLGJvdHRvbTppLGxlZnQ6YSxoZWlnaHQ6dCtpLHdpZHRoOmErbn19LHJlc29sdmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLGEsbztmb3IoaT0wLGE9ZS5sZW5ndGg7aTxhOysraSlpZihvPWVbaV0sdm9pZCAwIT09byYmKHZvaWQgMCE9PXQmJiJmdW5jdGlvbiI9PT10eXBlb2YgbyYmKG89byh0KSksdm9pZCAwIT09biYmci5pc0FycmF5KG8pJiYobz1vW25dKSx2b2lkIDAhPT1vKSlyZXR1cm4gb319fSx7NDM6NDN9XSw0NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9ZSg0MyksdC5leHBvcnRzLmVhc2luZz1lKDQ0KSx0LmV4cG9ydHMuY2FudmFzPWUoNDIpLHQuZXhwb3J0cy5vcHRpb25zPWUoNDUpfSx7NDI6NDIsNDM6NDMsNDQ6NDQsNDU6NDV9XSw0NzpbZnVuY3Rpb24oZSx0LG4pe3QuZXhwb3J0cz17YWNxdWlyZUNvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuY2FudmFzJiYoZT1lLmNhbnZhcyksZSYmZS5nZXRDb250ZXh0KCIyZCIpfHxudWxsfX19LHt9XSw0ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQ2KSxpPSIkY2hhcnRqcyIsYT0iY2hhcnRqcy0iLG89YSsicmVuZGVyLW1vbml0b3IiLHM9YSsicmVuZGVyLWFuaW1hdGlvbiIsYz1bImFuaW1hdGlvbnN0YXJ0Iiwid2Via2l0QW5pbWF0aW9uU3RhcnQiXSxsPXt0b3VjaHN0YXJ0OiJtb3VzZWRvd24iLHRvdWNobW92ZToibW91c2Vtb3ZlIix0b3VjaGVuZDoibW91c2V1cCIscG9pbnRlcmVudGVyOiJtb3VzZWVudGVyIixwb2ludGVyZG93bjoibW91c2Vkb3duIixwb2ludGVybW92ZToibW91c2Vtb3ZlIixwb2ludGVydXA6Im1vdXNldXAiLHBvaW50ZXJsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJvdXQ6Im1vdXNlb3V0In07ZnVuY3Rpb24gdShlLHQpe3ZhciBuPXIuZ2V0U3R5bGUoZSx0KSxpPW4mJm4ubWF0Y2goL14oXGQrKShcLlxkKyk/cHgkLyk7cmV0dXJuIGk/TnVtYmVyKGlbMV0pOnZvaWQgMH1mdW5jdGlvbiBkKGUsdCl7dmFyIG49ZS5zdHlsZSxyPWUuZ2V0QXR0cmlidXRlKCJoZWlnaHQiKSxhPWUuZ2V0QXR0cmlidXRlKCJ3aWR0aCIpO2lmKGVbaV09e2luaXRpYWw6e2hlaWdodDpyLHdpZHRoOmEsc3R5bGU6e2Rpc3BsYXk6bi5kaXNwbGF5LGhlaWdodDpuLmhlaWdodCx3aWR0aDpuLndpZHRofX19LG4uZGlzcGxheT1uLmRpc3BsYXl8fCJibG9jayIsbnVsbD09PWF8fCIiPT09YSl7dmFyIG89dShlLCJ3aWR0aCIpO3ZvaWQgMCE9PW8mJihlLndpZHRoPW8pfWlmKG51bGw9PT1yfHwiIj09PXIpaWYoIiI9PT1lLnN0eWxlLmhlaWdodCllLmhlaWdodD1lLndpZHRoLyh0Lm9wdGlvbnMuYXNwZWN0UmF0aW98fDIpO2Vsc2V7dmFyIHM9dShlLCJoZWlnaHQiKTt2b2lkIDAhPT1vJiYoZS5oZWlnaHQ9cyl9cmV0dXJuIGV9dmFyIHA9ZnVuY3Rpb24oKXt2YXIgZT0hMTt0cnl7dmFyIHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7ZT0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZSIsbnVsbCx0KX1jYXRjaChuKXt9cmV0dXJuIGV9KCksZj0hIXAmJntwYXNzaXZlOiEwfTtmdW5jdGlvbiBoKGUsdCxuKXtlLmFkZEV2ZW50TGlzdGVuZXIodCxuLGYpfWZ1bmN0aW9uIG0oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sZil9ZnVuY3Rpb24gXyhlLHQsbixyLGkpe3JldHVybnt0eXBlOmUsY2hhcnQ6dCxuYXRpdmU6aXx8bnVsbCx4OnZvaWQgMCE9PW4/bjpudWxsLHk6dm9pZCAwIT09cj9yOm51bGx9fWZ1bmN0aW9uIGcoZSx0KXt2YXIgbj1sW2UudHlwZV18fGUudHlwZSxpPXIuZ2V0UmVsYXRpdmVQb3NpdGlvbihlLHQpO3JldHVybiBfKG4sdCxpLngsaS55LGUpfWZ1bmN0aW9uIHYoZSx0KXt2YXIgbj0hMSxpPVtdO3JldHVybiBmdW5jdGlvbigpe2k9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PXR8fHRoaXMsbnx8KG49ITAsci5yZXF1ZXN0QW5pbUZyYW1lLmNhbGwod2luZG93LChmdW5jdGlvbigpe249ITEsZS5hcHBseSh0LGkpfSkpKX19ZnVuY3Rpb24geShlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxuPWErInNpemUtbW9uaXRvciIscj0xZTYsaT0icG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7b3ZlcmZsb3c6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmU7dmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDotMTsiO3Quc3R5bGUuY3NzVGV4dD1pLHQuY2xhc3NOYW1lPW4sdC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9IicrbisnLWV4cGFuZCIgc3R5bGU9IicraSsnIj48ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDonK3IrInB4O2hlaWdodDoiK3IrJ3B4O2xlZnQ6MDt0b3A6MCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iJytuKyctc2hyaW5rIiBzdHlsZT0iJytpKyciPjxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwMCU7aGVpZ2h0OjIwMCU7bGVmdDowOyB0b3A6MCI+PC9kaXY+PC9kaXY+Jzt2YXIgbz10LmNoaWxkTm9kZXNbMF0scz10LmNoaWxkTm9kZXNbMV07dC5fcmVzZXQ9ZnVuY3Rpb24oKXtvLnNjcm9sbExlZnQ9cixvLnNjcm9sbFRvcD1yLHMuc2Nyb2xsTGVmdD1yLHMuc2Nyb2xsVG9wPXJ9O3ZhciBjPWZ1bmN0aW9uKCl7dC5fcmVzZXQoKSxlKCl9O3JldHVybiBoKG8sInNjcm9sbCIsYy5iaW5kKG8sImV4cGFuZCIpKSxoKHMsInNjcm9sbCIsYy5iaW5kKHMsInNocmluayIpKSx0fWZ1bmN0aW9uIGIoZSx0KXt2YXIgbj1lW2ldfHwoZVtpXT17fSksYT1uLnJlbmRlclByb3h5PWZ1bmN0aW9uKGUpe2UuYW5pbWF0aW9uTmFtZT09PXMmJnQoKX07ci5lYWNoKGMsKGZ1bmN0aW9uKHQpe2goZSx0LGEpfSkpLG4ucmVmbG93PSEhZS5vZmZzZXRQYXJlbnQsZS5jbGFzc0xpc3QuYWRkKG8pfWZ1bmN0aW9uIHcoZSl7dmFyIHQ9ZVtpXXx8e30sbj10LnJlbmRlclByb3h5O24mJihyLmVhY2goYywoZnVuY3Rpb24odCl7bShlLHQsbil9KSksZGVsZXRlIHQucmVuZGVyUHJveHkpLGUuY2xhc3NMaXN0LnJlbW92ZShvKX1mdW5jdGlvbiB4KGUsdCxuKXt2YXIgcj1lW2ldfHwoZVtpXT17fSksYT1yLnJlc2l6ZXI9eSh2KChmdW5jdGlvbigpe2lmKHIucmVzaXplcilyZXR1cm4gdChfKCJyZXNpemUiLG4pKX0pKSk7YihlLChmdW5jdGlvbigpe2lmKHIucmVzaXplcil7dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJnQhPT1hLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKGEsdC5maXJzdENoaWxkKSxhLl9yZXNldCgpfX0pKX1mdW5jdGlvbiBrKGUpe3ZhciB0PWVbaV18fHt9LG49dC5yZXNpemVyO2RlbGV0ZSB0LnJlc2l6ZXIsdyhlKSxuJiZuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX1mdW5jdGlvbiBDKGUsdCl7dmFyIG49ZS5fc3R5bGV8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS5fc3R5bGV8fChlLl9zdHlsZT1uLHQ9Ii8qIENoYXJ0LmpzICovXG4iK3Qsbi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2NzcyIpLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQobikpLG4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCkpfXQuZXhwb3J0cz17X2VuYWJsZWQ6InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9PXR5cGVvZiBkb2N1bWVudCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIGU9ImZyb217b3BhY2l0eTowLjk5fXRve29wYWNpdHk6MX0iO0ModGhpcywiQC13ZWJraXQta2V5ZnJhbWVzICIrcysieyIrZSsifUBrZXlmcmFtZXMgIitzKyJ7IitlKyJ9LiIrbysiey13ZWJraXQtYW5pbWF0aW9uOiIrcysiIDAuMDAxczthbmltYXRpb246IitzKyIgMC4wMDFzO30iKX0sYWNxdWlyZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXsic3RyaW5nIj09PXR5cGVvZiBlP2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk6ZS5sZW5ndGgmJihlPWVbMF0pLGUmJmUuY2FudmFzJiYoZT1lLmNhbnZhcyk7dmFyIG49ZSYmZS5nZXRDb250ZXh0JiZlLmdldENvbnRleHQoIjJkIik7cmV0dXJuIG4mJm4uY2FudmFzPT09ZT8oZChlLHQpLG4pOm51bGx9LHJlbGVhc2VDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY2FudmFzO2lmKHRbaV0pe3ZhciBuPXRbaV0uaW5pdGlhbDtbImhlaWdodCIsIndpZHRoIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9bltlXTtyLmlzTnVsbE9yVW5kZWYoaSk/dC5yZW1vdmVBdHRyaWJ1dGUoZSk6dC5zZXRBdHRyaWJ1dGUoZSxpKX0pKSxyLmVhY2gobi5zdHlsZXx8e30sKGZ1bmN0aW9uKGUsbil7dC5zdHlsZVtuXT1lfSkpLHQud2lkdGg9dC53aWR0aCxkZWxldGUgdFtpXX19LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuY2FudmFzO2lmKCJyZXNpemUiIT09dCl7dmFyIGE9bltpXXx8KG5baV09e30pLG89YS5wcm94aWVzfHwoYS5wcm94aWVzPXt9KSxzPW9bZS5pZCsiXyIrdF09ZnVuY3Rpb24odCl7bihnKHQsZSkpfTtoKHIsdCxzKX1lbHNlIHgocixuLGUpfSxyZW1vdmVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmNhbnZhcztpZigicmVzaXplIiE9PXQpe3ZhciBhPW5baV18fHt9LG89YS5wcm94aWVzfHx7fSxzPW9bZS5pZCsiXyIrdF07cyYmbShyLHQscyl9ZWxzZSBrKHIsbil9fSxyLmFkZEV2ZW50PWgsci5yZW1vdmVFdmVudD1tfSx7NDY6NDZ9XSw0OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQ2KSxpPWUoNDcpLGE9ZSg0OCksbz1hLl9lbmFibGVkP2E6aTt0LmV4cG9ydHM9ci5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oKXt9LGFjcXVpcmVDb250ZXh0OmZ1bmN0aW9uKCl7fSxyZWxlYXNlQ29udGV4dDpmdW5jdGlvbigpe30sYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbigpe30scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbigpe319LG8pfSx7NDY6NDYsNDc6NDcsNDg6NDh9XSw1MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9e30sdC5leHBvcnRzLmZpbGxlcj1lKDUxKSx0LmV4cG9ydHMubGVnZW5kPWUoNTIpLHQuZXhwb3J0cy50aXRsZT1lKDUzKX0sezUxOjUxLDUyOjUyLDUzOjUzfV0sNTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgyNiksaT1lKDQxKSxhPWUoNDYpO3IuX3NldCgiZ2xvYmFsIix7cGx1Z2luczp7ZmlsbGVyOntwcm9wYWdhdGU6ITB9fX0pO3ZhciBvPXtkYXRhc2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuZmlsbCxuPWUuY2hhcnQscj1uLmdldERhdGFzZXRNZXRhKHQpLGk9ciYmbi5pc0RhdGFzZXRWaXNpYmxlKHQpLGE9aSYmci5kYXRhc2V0Ll9jaGlsZHJlbnx8W10sbz1hLmxlbmd0aHx8MDtyZXR1cm4gbz9mdW5jdGlvbihlLHQpe3JldHVybiB0PG8mJmFbdF0uX3ZpZXd8fG51bGx9Om51bGx9LGJvdW5kYXJ5OmZ1bmN0aW9uKGUpe3ZhciB0PWUuYm91bmRhcnksbj10P3QueDpudWxsLHI9dD90Lnk6bnVsbDtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJue3g6bnVsbD09PW4/ZS54Om4seTpudWxsPT09cj9lLnk6cn19fX07ZnVuY3Rpb24gcyhlLHQsbil7dmFyIHIsaT1lLl9tb2RlbHx8e30sYT1pLmZpbGw7aWYodm9pZCAwPT09YSYmKGE9ISFpLmJhY2tncm91bmRDb2xvciksITE9PT1hfHxudWxsPT09YSlyZXR1cm4hMTtpZighMD09PWEpcmV0dXJuIm9yaWdpbiI7aWYocj1wYXJzZUZsb2F0KGEsMTApLGlzRmluaXRlKHIpJiZNYXRoLmZsb29yKHIpPT09cilyZXR1cm4iLSIhPT1hWzBdJiYiKyIhPT1hWzBdfHwocj10K3IpLCEocj09PXR8fHI8MHx8cj49bikmJnI7c3dpdGNoKGEpe2Nhc2UiYm90dG9tIjpyZXR1cm4ic3RhcnQiO2Nhc2UidG9wIjpyZXR1cm4iZW5kIjtjYXNlInplcm8iOnJldHVybiJvcmlnaW4iO2Nhc2Uib3JpZ2luIjpjYXNlInN0YXJ0IjpjYXNlImVuZCI6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gYyhlKXt2YXIgdCxuPWUuZWwuX21vZGVsfHx7fSxyPWUuZWwuX3NjYWxlfHx7fSxpPWUuZmlsbCxhPW51bGw7aWYoaXNGaW5pdGUoaSkpcmV0dXJuIG51bGw7aWYoInN0YXJ0Ij09PWk/YT12b2lkIDA9PT1uLnNjYWxlQm90dG9tP3IuYm90dG9tOm4uc2NhbGVCb3R0b206ImVuZCI9PT1pP2E9dm9pZCAwPT09bi5zY2FsZVRvcD9yLnRvcDpuLnNjYWxlVG9wOnZvaWQgMCE9PW4uc2NhbGVaZXJvP2E9bi5zY2FsZVplcm86ci5nZXRCYXNlUG9zaXRpb24/YT1yLmdldEJhc2VQb3NpdGlvbigpOnIuZ2V0QmFzZVBpeGVsJiYoYT1yLmdldEJhc2VQaXhlbCgpKSx2b2lkIDAhPT1hJiZudWxsIT09YSl7aWYodm9pZCAwIT09YS54JiZ2b2lkIDAhPT1hLnkpcmV0dXJuIGE7aWYoIm51bWJlciI9PT10eXBlb2YgYSYmaXNGaW5pdGUoYSkpcmV0dXJuIHQ9ci5pc0hvcml6b250YWwoKSx7eDp0P2E6bnVsbCx5OnQ/bnVsbDphfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBsKGUsdCxuKXt2YXIgcixpPWVbdF0sYT1pLmZpbGwsbz1bdF07aWYoIW4pcmV0dXJuIGE7d2hpbGUoITEhPT1hJiYtMT09PW8uaW5kZXhPZihhKSl7aWYoIWlzRmluaXRlKGEpKXJldHVybiBhO2lmKHI9ZVthXSwhcilyZXR1cm4hMTtpZihyLnZpc2libGUpcmV0dXJuIGE7by5wdXNoKGEpLGE9ci5maWxsfXJldHVybiExfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5maWxsLG49ImRhdGFzZXQiO3JldHVybiExPT09dD9udWxsOihpc0Zpbml0ZSh0KXx8KG49ImJvdW5kYXJ5Iiksb1tuXShlKSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZSYmIWUuc2tpcH1mdW5jdGlvbiBwKGUsdCxuLHIsaSl7dmFyIG87aWYociYmaSl7Zm9yKGUubW92ZVRvKHRbMF0ueCx0WzBdLnkpLG89MTtvPHI7KytvKWEuY2FudmFzLmxpbmVUbyhlLHRbby0xXSx0W29dKTtmb3IoZS5saW5lVG8obltpLTFdLngsbltpLTFdLnkpLG89aS0xO28+MDstLW8pYS5jYW52YXMubGluZVRvKGUsbltvXSxuW28tMV0sITApfX1mdW5jdGlvbiBmKGUsdCxuLHIsaSxhKXt2YXIgbyxzLGMsbCx1LGYsaCxtPXQubGVuZ3RoLF89ci5zcGFuR2FwcyxnPVtdLHY9W10seT0wLGI9MDtmb3IoZS5iZWdpblBhdGgoKSxvPTAscz1tKyEhYTtvPHM7KytvKWM9byVtLGw9dFtjXS5fdmlldyx1PW4obCxjLHIpLGY9ZChsKSxoPWQodSksZiYmaD8oeT1nLnB1c2gobCksYj12LnB1c2godSkpOnkmJmImJihfPyhmJiZnLnB1c2gobCksaCYmdi5wdXNoKHUpKToocChlLGcsdix5LGIpLHk9Yj0wLGc9W10sdj1bXSkpO3AoZSxnLHYseSxiKSxlLmNsb3NlUGF0aCgpLGUuZmlsbFN0eWxlPWksZS5maWxsKCl9dC5leHBvcnRzPXtpZDoiZmlsbGVyIixhZnRlckRhdGFzZXRzVXBkYXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixhLG8sZD0oZS5kYXRhLmRhdGFzZXRzfHxbXSkubGVuZ3RoLHA9dC5wcm9wYWdhdGUsZj1bXTtmb3Iocj0wO3I8ZDsrK3Ipbj1lLmdldERhdGFzZXRNZXRhKHIpLGE9bi5kYXRhc2V0LG89bnVsbCxhJiZhLl9tb2RlbCYmYSBpbnN0YW5jZW9mIGkuTGluZSYmKG89e3Zpc2libGU6ZS5pc0RhdGFzZXRWaXNpYmxlKHIpLGZpbGw6cyhhLHIsZCksY2hhcnQ6ZSxlbDphfSksbi4kZmlsbGVyPW8sZi5wdXNoKG8pO2ZvcihyPTA7cjxkOysrcilvPWZbcl0sbyYmKG8uZmlsbD1sKGYscixwKSxvLmJvdW5kYXJ5PWMobyksby5tYXBwZXI9dShvKSl9LGJlZm9yZURhdGFzZXREcmF3OmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5tZXRhLiRmaWxsZXI7aWYobil7dmFyIGk9ZS5jdHgsbz1uLmVsLHM9by5fdmlldyxjPW8uX2NoaWxkcmVufHxbXSxsPW4ubWFwcGVyLHU9cy5iYWNrZ3JvdW5kQ29sb3J8fHIuZ2xvYmFsLmRlZmF1bHRDb2xvcjtsJiZ1JiZjLmxlbmd0aCYmKGEuY2FudmFzLmNsaXBBcmVhKGksZS5jaGFydEFyZWEpLGYoaSxjLGwscyx1LG8uX2xvb3ApLGEuY2FudmFzLnVuY2xpcEFyZWEoaSkpfX19fSx7MjY6MjYsNDE6NDEsNDY6NDZ9XSw1MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDI2KSxpPWUoMjcpLGE9ZSg0Niksbz1lKDMxKSxzPWEubm9vcDtmdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGUudXNlUG9pbnRTdHlsZT90Kk1hdGguU1FSVDI6ZS5ib3hXaWR0aH1yLl9zZXQoImdsb2JhbCIse2xlZ2VuZDp7ZGlzcGxheTohMCxwb3NpdGlvbjoidG9wIixmdWxsV2lkdGg6ITAscmV2ZXJzZTohMSx3ZWlnaHQ6MWUzLG9uQ2xpY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRhdGFzZXRJbmRleCxyPXRoaXMuY2hhcnQsaT1yLmdldERhdGFzZXRNZXRhKG4pO2kuaGlkZGVuPW51bGw9PT1pLmhpZGRlbj8hci5kYXRhLmRhdGFzZXRzW25dLmhpZGRlbjpudWxsLHIudXBkYXRlKCl9LG9uSG92ZXI6bnVsbCxsYWJlbHM6e2JveFdpZHRoOjQwLHBhZGRpbmc6MTAsZ2VuZXJhdGVMYWJlbHM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO3JldHVybiBhLmlzQXJyYXkodC5kYXRhc2V0cyk/dC5kYXRhc2V0cy5tYXAoKGZ1bmN0aW9uKHQsbil7cmV0dXJue3RleHQ6dC5sYWJlbCxmaWxsU3R5bGU6YS5pc0FycmF5KHQuYmFja2dyb3VuZENvbG9yKT90LmJhY2tncm91bmRDb2xvclswXTp0LmJhY2tncm91bmRDb2xvcixoaWRkZW46IWUuaXNEYXRhc2V0VmlzaWJsZShuKSxsaW5lQ2FwOnQuYm9yZGVyQ2FwU3R5bGUsbGluZURhc2g6dC5ib3JkZXJEYXNoLGxpbmVEYXNoT2Zmc2V0OnQuYm9yZGVyRGFzaE9mZnNldCxsaW5lSm9pbjp0LmJvcmRlckpvaW5TdHlsZSxsaW5lV2lkdGg6dC5ib3JkZXJXaWR0aCxzdHJva2VTdHlsZTp0LmJvcmRlckNvbG9yLHBvaW50U3R5bGU6dC5wb2ludFN0eWxlLGRhdGFzZXRJbmRleDpufX0pLHRoaXMpOltdfX19LGxlZ2VuZENhbGxiYWNrOmZ1bmN0aW9uKGUpe3ZhciB0PVtdO3QucHVzaCgnPHVsIGNsYXNzPSInK2UuaWQrJy1sZWdlbmQiPicpO2Zvcih2YXIgbj0wO248ZS5kYXRhLmRhdGFzZXRzLmxlbmd0aDtuKyspdC5wdXNoKCc8bGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6JytlLmRhdGEuZGF0YXNldHNbbl0uYmFja2dyb3VuZENvbG9yKyciPjwvc3Bhbj4nKSxlLmRhdGEuZGF0YXNldHNbbl0ubGFiZWwmJnQucHVzaChlLmRhdGEuZGF0YXNldHNbbl0ubGFiZWwpLHQucHVzaCgiPC9saT4iKTtyZXR1cm4gdC5wdXNoKCI8L3VsPiIpLHQuam9pbigiIil9fSk7dmFyIGw9aS5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7YS5leHRlbmQodGhpcyxlKSx0aGlzLmxlZ2VuZEhpdEJveGVzPVtdLHRoaXMuZG91Z2hudXRNb2RlPSExfSxiZWZvcmVVcGRhdGU6cyx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7cmV0dXJuIHIuYmVmb3JlVXBkYXRlKCksci5tYXhXaWR0aD1lLHIubWF4SGVpZ2h0PXQsci5tYXJnaW5zPW4sci5iZWZvcmVTZXREaW1lbnNpb25zKCksci5zZXREaW1lbnNpb25zKCksci5hZnRlclNldERpbWVuc2lvbnMoKSxyLmJlZm9yZUJ1aWxkTGFiZWxzKCksci5idWlsZExhYmVscygpLHIuYWZ0ZXJCdWlsZExhYmVscygpLHIuYmVmb3JlRml0KCksci5maXQoKSxyLmFmdGVyRml0KCksci5hZnRlclVwZGF0ZSgpLHIubWluU2l6ZX0sYWZ0ZXJVcGRhdGU6cyxiZWZvcmVTZXREaW1lbnNpb25zOnMsc2V0RGltZW5zaW9uczpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5pc0hvcml6b250YWwoKT8oZS53aWR0aD1lLm1heFdpZHRoLGUubGVmdD0wLGUucmlnaHQ9ZS53aWR0aCk6KGUuaGVpZ2h0PWUubWF4SGVpZ2h0LGUudG9wPTAsZS5ib3R0b209ZS5oZWlnaHQpLGUucGFkZGluZ0xlZnQ9MCxlLnBhZGRpbmdUb3A9MCxlLnBhZGRpbmdSaWdodD0wLGUucGFkZGluZ0JvdHRvbT0wLGUubWluU2l6ZT17d2lkdGg6MCxoZWlnaHQ6MH19LGFmdGVyU2V0RGltZW5zaW9uczpzLGJlZm9yZUJ1aWxkTGFiZWxzOnMsYnVpbGRMYWJlbHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLmxhYmVsc3x8e30sbj1hLmNhbGxiYWNrKHQuZ2VuZXJhdGVMYWJlbHMsW2UuY2hhcnRdLGUpfHxbXTt0LmZpbHRlciYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiB0LmZpbHRlcihuLGUuY2hhcnQuZGF0YSl9KSkpLGUub3B0aW9ucy5yZXZlcnNlJiZuLnJldmVyc2UoKSxlLmxlZ2VuZEl0ZW1zPW59LGFmdGVyQnVpbGRMYWJlbHM6cyxiZWZvcmVGaXQ6cyxmaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLG49dC5sYWJlbHMsaT10LmRpc3BsYXksbz1lLmN0eCxzPXIuZ2xvYmFsLGw9YS52YWx1ZU9yRGVmYXVsdCx1PWwobi5mb250U2l6ZSxzLmRlZmF1bHRGb250U2l6ZSksZD1sKG4uZm9udFN0eWxlLHMuZGVmYXVsdEZvbnRTdHlsZSkscD1sKG4uZm9udEZhbWlseSxzLmRlZmF1bHRGb250RmFtaWx5KSxmPWEuZm9udFN0cmluZyh1LGQscCksaD1lLmxlZ2VuZEhpdEJveGVzPVtdLG09ZS5taW5TaXplLF89ZS5pc0hvcml6b250YWwoKTtpZihfPyhtLndpZHRoPWUubWF4V2lkdGgsbS5oZWlnaHQ9aT8xMDowKToobS53aWR0aD1pPzEwOjAsbS5oZWlnaHQ9ZS5tYXhIZWlnaHQpLGkpaWYoby5mb250PWYsXyl7dmFyIGc9ZS5saW5lV2lkdGhzPVswXSx2PWUubGVnZW5kSXRlbXMubGVuZ3RoP3Urbi5wYWRkaW5nOjA7by50ZXh0QWxpZ249ImxlZnQiLG8udGV4dEJhc2VsaW5lPSJ0b3AiLGEuZWFjaChlLmxlZ2VuZEl0ZW1zLChmdW5jdGlvbih0LHIpe3ZhciBpPWMobix1KSxhPWkrdS8yK28ubWVhc3VyZVRleHQodC50ZXh0KS53aWR0aDtnW2cubGVuZ3RoLTFdK2Erbi5wYWRkaW5nPj1lLndpZHRoJiYodis9dStuLnBhZGRpbmcsZ1tnLmxlbmd0aF09ZS5sZWZ0KSxoW3JdPXtsZWZ0OjAsdG9wOjAsd2lkdGg6YSxoZWlnaHQ6dX0sZ1tnLmxlbmd0aC0xXSs9YStuLnBhZGRpbmd9KSksbS5oZWlnaHQrPXZ9ZWxzZXt2YXIgeT1uLnBhZGRpbmcsYj1lLmNvbHVtbldpZHRocz1bXSx3PW4ucGFkZGluZyx4PTAsaz0wLEM9dSt5O2EuZWFjaChlLmxlZ2VuZEl0ZW1zLChmdW5jdGlvbihlLHQpe3ZhciByPWMobix1KSxpPXIrdS8yK28ubWVhc3VyZVRleHQoZS50ZXh0KS53aWR0aDtrK0M+bS5oZWlnaHQmJih3Kz14K24ucGFkZGluZyxiLnB1c2goeCkseD0wLGs9MCkseD1NYXRoLm1heCh4LGkpLGsrPUMsaFt0XT17bGVmdDowLHRvcDowLHdpZHRoOmksaGVpZ2h0OnV9fSkpLHcrPXgsYi5wdXNoKHgpLG0ud2lkdGgrPXd9ZS53aWR0aD1tLndpZHRoLGUuaGVpZ2h0PW0uaGVpZ2h0fSxhZnRlckZpdDpzLGlzSG9yaXpvbnRhbDpmdW5jdGlvbigpe3JldHVybiJ0b3AiPT09dGhpcy5vcHRpb25zLnBvc2l0aW9ufHwiYm90dG9tIj09PXRoaXMub3B0aW9ucy5wb3NpdGlvbn0sZHJhdzpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm9wdGlvbnMsbj10LmxhYmVscyxpPXIuZ2xvYmFsLG89aS5lbGVtZW50cy5saW5lLHM9ZS53aWR0aCxsPWUubGluZVdpZHRocztpZih0LmRpc3BsYXkpe3ZhciB1LGQ9ZS5jdHgscD1hLnZhbHVlT3JEZWZhdWx0LGY9cChuLmZvbnRDb2xvcixpLmRlZmF1bHRGb250Q29sb3IpLGg9cChuLmZvbnRTaXplLGkuZGVmYXVsdEZvbnRTaXplKSxtPXAobi5mb250U3R5bGUsaS5kZWZhdWx0Rm9udFN0eWxlKSxfPXAobi5mb250RmFtaWx5LGkuZGVmYXVsdEZvbnRGYW1pbHkpLGc9YS5mb250U3RyaW5nKGgsbSxfKTtkLnRleHRBbGlnbj0ibGVmdCIsZC50ZXh0QmFzZWxpbmU9Im1pZGRsZSIsZC5saW5lV2lkdGg9LjUsZC5zdHJva2VTdHlsZT1mLGQuZmlsbFN0eWxlPWYsZC5mb250PWc7dmFyIHY9YyhuLGgpLHk9ZS5sZWdlbmRIaXRCb3hlcyxiPWZ1bmN0aW9uKGUsbixyKXtpZighKGlzTmFOKHYpfHx2PD0wKSl7ZC5zYXZlKCksZC5maWxsU3R5bGU9cChyLmZpbGxTdHlsZSxpLmRlZmF1bHRDb2xvciksZC5saW5lQ2FwPXAoci5saW5lQ2FwLG8uYm9yZGVyQ2FwU3R5bGUpLGQubGluZURhc2hPZmZzZXQ9cChyLmxpbmVEYXNoT2Zmc2V0LG8uYm9yZGVyRGFzaE9mZnNldCksZC5saW5lSm9pbj1wKHIubGluZUpvaW4sby5ib3JkZXJKb2luU3R5bGUpLGQubGluZVdpZHRoPXAoci5saW5lV2lkdGgsby5ib3JkZXJXaWR0aCksZC5zdHJva2VTdHlsZT1wKHIuc3Ryb2tlU3R5bGUsaS5kZWZhdWx0Q29sb3IpO3ZhciBzPTA9PT1wKHIubGluZVdpZHRoLG8uYm9yZGVyV2lkdGgpO2lmKGQuc2V0TGluZURhc2gmJmQuc2V0TGluZURhc2gocChyLmxpbmVEYXNoLG8uYm9yZGVyRGFzaCkpLHQubGFiZWxzJiZ0LmxhYmVscy51c2VQb2ludFN0eWxlKXt2YXIgYz1oKk1hdGguU1FSVDIvMixsPWMvTWF0aC5TUVJUMix1PWUrbCxmPW4rbDthLmNhbnZhcy5kcmF3UG9pbnQoZCxyLnBvaW50U3R5bGUsYyx1LGYpfWVsc2Ugc3x8ZC5zdHJva2VSZWN0KGUsbix2LGgpLGQuZmlsbFJlY3QoZSxuLHYsaCk7ZC5yZXN0b3JlKCl9fSx3PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPWgvMixhPXYraStlLG89dCtpO2QuZmlsbFRleHQobi50ZXh0LGEsbyksbi5oaWRkZW4mJihkLmJlZ2luUGF0aCgpLGQubGluZVdpZHRoPTIsZC5tb3ZlVG8oYSxvKSxkLmxpbmVUbyhhK3IsbyksZC5zdHJva2UoKSl9LHg9ZS5pc0hvcml6b250YWwoKTt1PXg/e3g6ZS5sZWZ0KyhzLWxbMF0pLzIseTplLnRvcCtuLnBhZGRpbmcsbGluZTowfTp7eDplLmxlZnQrbi5wYWRkaW5nLHk6ZS50b3Arbi5wYWRkaW5nLGxpbmU6MH07dmFyIGs9aCtuLnBhZGRpbmc7YS5lYWNoKGUubGVnZW5kSXRlbXMsKGZ1bmN0aW9uKHQscil7dmFyIGk9ZC5tZWFzdXJlVGV4dCh0LnRleHQpLndpZHRoLGE9ditoLzIraSxvPXUueCxjPXUueTt4P28rYT49cyYmKGM9dS55Kz1rLHUubGluZSsrLG89dS54PWUubGVmdCsocy1sW3UubGluZV0pLzIpOmMraz5lLmJvdHRvbSYmKG89dS54PW8rZS5jb2x1bW5XaWR0aHNbdS5saW5lXStuLnBhZGRpbmcsYz11Lnk9ZS50b3Arbi5wYWRkaW5nLHUubGluZSsrKSxiKG8sYyx0KSx5W3JdLmxlZnQ9byx5W3JdLnRvcD1jLHcobyxjLHQsaSkseD91LngrPWErbi5wYWRkaW5nOnUueSs9a30pKX19LGhhbmRsZUV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10Lm9wdGlvbnMscj0ibW91c2V1cCI9PT1lLnR5cGU/ImNsaWNrIjplLnR5cGUsaT0hMTtpZigibW91c2Vtb3ZlIj09PXIpe2lmKCFuLm9uSG92ZXIpcmV0dXJufWVsc2V7aWYoImNsaWNrIiE9PXIpcmV0dXJuO2lmKCFuLm9uQ2xpY2spcmV0dXJufXZhciBhPWUueCxvPWUueTtpZihhPj10LmxlZnQmJmE8PXQucmlnaHQmJm8+PXQudG9wJiZvPD10LmJvdHRvbSlmb3IodmFyIHM9dC5sZWdlbmRIaXRCb3hlcyxjPTA7YzxzLmxlbmd0aDsrK2Mpe3ZhciBsPXNbY107aWYoYT49bC5sZWZ0JiZhPD1sLmxlZnQrbC53aWR0aCYmbz49bC50b3AmJm88PWwudG9wK2wuaGVpZ2h0KXtpZigiY2xpY2siPT09cil7bi5vbkNsaWNrLmNhbGwodCxlLm5hdGl2ZSx0LmxlZ2VuZEl0ZW1zW2NdKSxpPSEwO2JyZWFrfWlmKCJtb3VzZW1vdmUiPT09cil7bi5vbkhvdmVyLmNhbGwodCxlLm5hdGl2ZSx0LmxlZ2VuZEl0ZW1zW2NdKSxpPSEwO2JyZWFrfX19cmV0dXJuIGl9fSk7ZnVuY3Rpb24gdShlLHQpe3ZhciBuPW5ldyBsKHtjdHg6ZS5jdHgsb3B0aW9uczp0LGNoYXJ0OmV9KTtvLmNvbmZpZ3VyZShlLG4sdCksby5hZGRCb3goZSxuKSxlLmxlZ2VuZD1ufXQuZXhwb3J0cz17aWQ6ImxlZ2VuZCIsX2VsZW1lbnQ6bCxiZWZvcmVJbml0OmZ1bmN0aW9uKGUpe3ZhciB0PWUub3B0aW9ucy5sZWdlbmQ7dCYmdShlLHQpfSxiZWZvcmVVcGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLmxlZ2VuZCxuPWUubGVnZW5kO3Q/KGEubWVyZ2VJZih0LHIuZ2xvYmFsLmxlZ2VuZCksbj8oby5jb25maWd1cmUoZSxuLHQpLG4ub3B0aW9ucz10KTp1KGUsdCkpOm4mJihvLnJlbW92ZUJveChlLG4pLGRlbGV0ZSBlLmxlZ2VuZCl9LGFmdGVyRXZlbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlZ2VuZDtuJiZuLmhhbmRsZUV2ZW50KHQpfX19LHsyNjoyNiwyNzoyNywzMTozMSw0Njo0Nn1dLDUzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjYpLGk9ZSgyNyksYT1lKDQ2KSxvPWUoMzEpLHM9YS5ub29wO3IuX3NldCgiZ2xvYmFsIix7dGl0bGU6e2Rpc3BsYXk6ITEsZm9udFN0eWxlOiJib2xkIixmdWxsV2lkdGg6ITAsbGluZUhlaWdodDoxLjIscGFkZGluZzoxMCxwb3NpdGlvbjoidG9wIix0ZXh0OiIiLHdlaWdodDoyZTN9fSk7dmFyIGM9aS5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczthLmV4dGVuZCh0LGUpLHQubGVnZW5kSGl0Qm94ZXM9W119LGJlZm9yZVVwZGF0ZTpzLHVwZGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztyZXR1cm4gci5iZWZvcmVVcGRhdGUoKSxyLm1heFdpZHRoPWUsci5tYXhIZWlnaHQ9dCxyLm1hcmdpbnM9bixyLmJlZm9yZVNldERpbWVuc2lvbnMoKSxyLnNldERpbWVuc2lvbnMoKSxyLmFmdGVyU2V0RGltZW5zaW9ucygpLHIuYmVmb3JlQnVpbGRMYWJlbHMoKSxyLmJ1aWxkTGFiZWxzKCksci5hZnRlckJ1aWxkTGFiZWxzKCksci5iZWZvcmVGaXQoKSxyLmZpdCgpLHIuYWZ0ZXJGaXQoKSxyLmFmdGVyVXBkYXRlKCksci5taW5TaXplfSxhZnRlclVwZGF0ZTpzLGJlZm9yZVNldERpbWVuc2lvbnM6cyxzZXREaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLmlzSG9yaXpvbnRhbCgpPyhlLndpZHRoPWUubWF4V2lkdGgsZS5sZWZ0PTAsZS5yaWdodD1lLndpZHRoKTooZS5oZWlnaHQ9ZS5tYXhIZWlnaHQsZS50b3A9MCxlLmJvdHRvbT1lLmhlaWdodCksZS5wYWRkaW5nTGVmdD0wLGUucGFkZGluZ1RvcD0wLGUucGFkZGluZ1JpZ2h0PTAsZS5wYWRkaW5nQm90dG9tPTAsZS5taW5TaXplPXt3aWR0aDowLGhlaWdodDowfX0sYWZ0ZXJTZXREaW1lbnNpb25zOnMsYmVmb3JlQnVpbGRMYWJlbHM6cyxidWlsZExhYmVsczpzLGFmdGVyQnVpbGRMYWJlbHM6cyxiZWZvcmVGaXQ6cyxmaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9YS52YWx1ZU9yRGVmYXVsdCxuPWUub3B0aW9ucyxpPW4uZGlzcGxheSxvPXQobi5mb250U2l6ZSxyLmdsb2JhbC5kZWZhdWx0Rm9udFNpemUpLHM9ZS5taW5TaXplLGM9YS5pc0FycmF5KG4udGV4dCk/bi50ZXh0Lmxlbmd0aDoxLGw9YS5vcHRpb25zLnRvTGluZUhlaWdodChuLmxpbmVIZWlnaHQsbyksdT1pP2MqbCsyKm4ucGFkZGluZzowO2UuaXNIb3Jpem9udGFsKCk/KHMud2lkdGg9ZS5tYXhXaWR0aCxzLmhlaWdodD11KToocy53aWR0aD11LHMuaGVpZ2h0PWUubWF4SGVpZ2h0KSxlLndpZHRoPXMud2lkdGgsZS5oZWlnaHQ9cy5oZWlnaHR9LGFmdGVyRml0OnMsaXNIb3Jpem9udGFsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLnBvc2l0aW9uO3JldHVybiJ0b3AiPT09ZXx8ImJvdHRvbSI9PT1lfSxkcmF3OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuY3R4LG49YS52YWx1ZU9yRGVmYXVsdCxpPWUub3B0aW9ucyxvPXIuZ2xvYmFsO2lmKGkuZGlzcGxheSl7dmFyIHMsYyxsLHU9bihpLmZvbnRTaXplLG8uZGVmYXVsdEZvbnRTaXplKSxkPW4oaS5mb250U3R5bGUsby5kZWZhdWx0Rm9udFN0eWxlKSxwPW4oaS5mb250RmFtaWx5LG8uZGVmYXVsdEZvbnRGYW1pbHkpLGY9YS5mb250U3RyaW5nKHUsZCxwKSxoPWEub3B0aW9ucy50b0xpbmVIZWlnaHQoaS5saW5lSGVpZ2h0LHUpLG09aC8yK2kucGFkZGluZyxfPTAsZz1lLnRvcCx2PWUubGVmdCx5PWUuYm90dG9tLGI9ZS5yaWdodDt0LmZpbGxTdHlsZT1uKGkuZm9udENvbG9yLG8uZGVmYXVsdEZvbnRDb2xvciksdC5mb250PWYsZS5pc0hvcml6b250YWwoKT8oYz12KyhiLXYpLzIsbD1nK20scz1iLXYpOihjPSJsZWZ0Ij09PWkucG9zaXRpb24/dittOmItbSxsPWcrKHktZykvMixzPXktZyxfPU1hdGguUEkqKCJsZWZ0Ij09PWkucG9zaXRpb24/LS41Oi41KSksdC5zYXZlKCksdC50cmFuc2xhdGUoYyxsKSx0LnJvdGF0ZShfKSx0LnRleHRBbGlnbj0iY2VudGVyIix0LnRleHRCYXNlbGluZT0ibWlkZGxlIjt2YXIgdz1pLnRleHQ7aWYoYS5pc0FycmF5KHcpKWZvcih2YXIgeD0wLGs9MDtrPHcubGVuZ3RoOysrayl0LmZpbGxUZXh0KHdba10sMCx4LHMpLHgrPWg7ZWxzZSB0LmZpbGxUZXh0KHcsMCwwLHMpO3QucmVzdG9yZSgpfX19KTtmdW5jdGlvbiBsKGUsdCl7dmFyIG49bmV3IGMoe2N0eDplLmN0eCxvcHRpb25zOnQsY2hhcnQ6ZX0pO28uY29uZmlndXJlKGUsbix0KSxvLmFkZEJveChlLG4pLGUudGl0bGVCbG9jaz1ufXQuZXhwb3J0cz17aWQ6InRpdGxlIixfZWxlbWVudDpjLGJlZm9yZUluaXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLnRpdGxlO3QmJmwoZSx0KX0sYmVmb3JlVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWUub3B0aW9ucy50aXRsZSxuPWUudGl0bGVCbG9jazt0PyhhLm1lcmdlSWYodCxyLmdsb2JhbC50aXRsZSksbj8oby5jb25maWd1cmUoZSxuLHQpLG4ub3B0aW9ucz10KTpsKGUsdCkpOm4mJihvLnJlbW92ZUJveChlLG4pLGRlbGV0ZSBlLnRpdGxlQmxvY2spfX19LHsyNjoyNiwyNzoyNywzMTozMSw0Njo0Nn1dLDU0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMzMpLGk9ZSgzNCk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9e3Bvc2l0aW9uOiJib3R0b20ifSx0PXIuZXh0ZW5kKHtnZXRMYWJlbHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNoYXJ0LmRhdGE7cmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbHN8fCh0aGlzLmlzSG9yaXpvbnRhbCgpP2UueExhYmVsczplLnlMYWJlbHMpfHxlLmxhYmVsc30sZGV0ZXJtaW5lRGF0YUxpbWl0czpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxuPXQuZ2V0TGFiZWxzKCk7dC5taW5JbmRleD0wLHQubWF4SW5kZXg9bi5sZW5ndGgtMSx2b2lkIDAhPT10Lm9wdGlvbnMudGlja3MubWluJiYoZT1uLmluZGV4T2YodC5vcHRpb25zLnRpY2tzLm1pbiksdC5taW5JbmRleD0tMSE9PWU/ZTp0Lm1pbkluZGV4KSx2b2lkIDAhPT10Lm9wdGlvbnMudGlja3MubWF4JiYoZT1uLmluZGV4T2YodC5vcHRpb25zLnRpY2tzLm1heCksdC5tYXhJbmRleD0tMSE9PWU/ZTp0Lm1heEluZGV4KSx0Lm1pbj1uW3QubWluSW5kZXhdLHQubWF4PW5bdC5tYXhJbmRleF19LGJ1aWxkVGlja3M6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5nZXRMYWJlbHMoKTtlLnRpY2tzPTA9PT1lLm1pbkluZGV4JiZlLm1heEluZGV4PT09dC5sZW5ndGgtMT90OnQuc2xpY2UoZS5taW5JbmRleCxlLm1heEluZGV4KzEpfSxnZXRMYWJlbEZvckluZGV4OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPW4uY2hhcnQuZGF0YSxpPW4uaXNIb3Jpem9udGFsKCk7cmV0dXJuIHIueUxhYmVscyYmIWk/bi5nZXRSaWdodFZhbHVlKHIuZGF0YXNldHNbdF0uZGF0YVtlXSk6bi50aWNrc1tlLW4ubWluSW5kZXhdfSxnZXRQaXhlbEZvclZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzLGk9ci5vcHRpb25zLm9mZnNldCxhPU1hdGgubWF4KHIubWF4SW5kZXgrMS1yLm1pbkluZGV4LShpPzA6MSksMSk7aWYodm9pZCAwIT09ZSYmbnVsbCE9PWUmJihuPXIuaXNIb3Jpem9udGFsKCk/ZS54OmUueSksdm9pZCAwIT09bnx8dm9pZCAwIT09ZSYmaXNOYU4odCkpe3ZhciBvPXIuZ2V0TGFiZWxzKCk7ZT1ufHxlO3ZhciBzPW8uaW5kZXhPZihlKTt0PS0xIT09cz9zOnR9aWYoci5pc0hvcml6b250YWwoKSl7dmFyIGM9ci53aWR0aC9hLGw9YyoodC1yLm1pbkluZGV4KTtyZXR1cm4gaSYmKGwrPWMvMiksci5sZWZ0K01hdGgucm91bmQobCl9dmFyIHU9ci5oZWlnaHQvYSxkPXUqKHQtci5taW5JbmRleCk7cmV0dXJuIGkmJihkKz11LzIpLHIudG9wK01hdGgucm91bmQoZCl9LGdldFBpeGVsRm9yVGljazpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5nZXRQaXhlbEZvclZhbHVlKHRoaXMudGlja3NbZV0sZSt0aGlzLm1pbkluZGV4LG51bGwpfSxnZXRWYWx1ZUZvclBpeGVsOmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcyxyPW4ub3B0aW9ucy5vZmZzZXQsaT1NYXRoLm1heChuLl90aWNrcy5sZW5ndGgtKHI/MDoxKSwxKSxhPW4uaXNIb3Jpem9udGFsKCksbz0oYT9uLndpZHRoOm4uaGVpZ2h0KS9pO3JldHVybiBlLT1hP24ubGVmdDpuLnRvcCxyJiYoZS09by8yKSx0PWU8PTA/MDpNYXRoLnJvdW5kKGUvbyksdCtuLm1pbkluZGV4fSxnZXRCYXNlUGl4ZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ib3R0b219fSk7aS5yZWdpc3RlclNjYWxlVHlwZSgiY2F0ZWdvcnkiLHQsZSl9fSx7MzM6MzMsMzQ6MzR9XSw1NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDI2KSxpPWUoNDYpLGE9ZSgzNCksbz1lKDM1KTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e3Bvc2l0aW9uOiJsZWZ0Iix0aWNrczp7Y2FsbGJhY2s6by5mb3JtYXR0ZXJzLmxpbmVhcn19LG49ZS5MaW5lYXJTY2FsZUJhc2UuZXh0ZW5kKHtkZXRlcm1pbmVEYXRhTGltaXRzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUub3B0aW9ucyxuPWUuY2hhcnQscj1uLmRhdGEsYT1yLmRhdGFzZXRzLG89ZS5pc0hvcml6b250YWwoKSxzPTAsYz0xO2Z1bmN0aW9uIGwodCl7cmV0dXJuIG8/dC54QXhpc0lEPT09ZS5pZDp0LnlBeGlzSUQ9PT1lLmlkfWUubWluPW51bGwsZS5tYXg9bnVsbDt2YXIgdT10LnN0YWNrZWQ7aWYodm9pZCAwPT09dSYmaS5lYWNoKGEsKGZ1bmN0aW9uKGUsdCl7aWYoIXUpe3ZhciByPW4uZ2V0RGF0YXNldE1ldGEodCk7bi5pc0RhdGFzZXRWaXNpYmxlKHQpJiZsKHIpJiZ2b2lkIDAhPT1yLnN0YWNrJiYodT0hMCl9fSkpLHQuc3RhY2tlZHx8dSl7dmFyIGQ9e307aS5lYWNoKGEsKGZ1bmN0aW9uKHIsYSl7dmFyIG89bi5nZXREYXRhc2V0TWV0YShhKSxzPVtvLnR5cGUsdm9pZCAwPT09dC5zdGFja2VkJiZ2b2lkIDA9PT1vLnN0YWNrP2E6IiIsby5zdGFja10uam9pbigiLiIpO3ZvaWQgMD09PWRbc10mJihkW3NdPXtwb3NpdGl2ZVZhbHVlczpbXSxuZWdhdGl2ZVZhbHVlczpbXX0pO3ZhciBjPWRbc10ucG9zaXRpdmVWYWx1ZXMsdT1kW3NdLm5lZ2F0aXZlVmFsdWVzO24uaXNEYXRhc2V0VmlzaWJsZShhKSYmbChvKSYmaS5lYWNoKHIuZGF0YSwoZnVuY3Rpb24obixyKXt2YXIgaT0rZS5nZXRSaWdodFZhbHVlKG4pO2lzTmFOKGkpfHxvLmRhdGFbcl0uaGlkZGVufHwoY1tyXT1jW3JdfHwwLHVbcl09dVtyXXx8MCx0LnJlbGF0aXZlUG9pbnRzP2Nbcl09MTAwOmk8MD91W3JdKz1pOmNbcl0rPWkpfSkpfSkpLGkuZWFjaChkLChmdW5jdGlvbih0KXt2YXIgbj10LnBvc2l0aXZlVmFsdWVzLmNvbmNhdCh0Lm5lZ2F0aXZlVmFsdWVzKSxyPWkubWluKG4pLGE9aS5tYXgobik7ZS5taW49bnVsbD09PWUubWluP3I6TWF0aC5taW4oZS5taW4sciksZS5tYXg9bnVsbD09PWUubWF4P2E6TWF0aC5tYXgoZS5tYXgsYSl9KSl9ZWxzZSBpLmVhY2goYSwoZnVuY3Rpb24odCxyKXt2YXIgYT1uLmdldERhdGFzZXRNZXRhKHIpO24uaXNEYXRhc2V0VmlzaWJsZShyKSYmbChhKSYmaS5lYWNoKHQuZGF0YSwoZnVuY3Rpb24odCxuKXt2YXIgcj0rZS5nZXRSaWdodFZhbHVlKHQpO2lzTmFOKHIpfHxhLmRhdGFbbl0uaGlkZGVufHwobnVsbD09PWUubWluP2UubWluPXI6cjxlLm1pbiYmKGUubWluPXIpLG51bGw9PT1lLm1heD9lLm1heD1yOnI+ZS5tYXgmJihlLm1heD1yKSl9KSl9KSk7ZS5taW49aXNGaW5pdGUoZS5taW4pJiYhaXNOYU4oZS5taW4pP2UubWluOnMsZS5tYXg9aXNGaW5pdGUoZS5tYXgpJiYhaXNOYU4oZS5tYXgpP2UubWF4OmMsdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl9LGdldFRpY2tMaW1pdDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxuPXQub3B0aW9ucy50aWNrcztpZih0LmlzSG9yaXpvbnRhbCgpKWU9TWF0aC5taW4obi5tYXhUaWNrc0xpbWl0P24ubWF4VGlja3NMaW1pdDoxMSxNYXRoLmNlaWwodC53aWR0aC81MCkpO2Vsc2V7dmFyIGE9aS52YWx1ZU9yRGVmYXVsdChuLmZvbnRTaXplLHIuZ2xvYmFsLmRlZmF1bHRGb250U2l6ZSk7ZT1NYXRoLm1pbihuLm1heFRpY2tzTGltaXQ/bi5tYXhUaWNrc0xpbWl0OjExLE1hdGguY2VpbCh0LmhlaWdodC8oMiphKSkpfXJldHVybiBlfSxoYW5kbGVEaXJlY3Rpb25hbENoYW5nZXM6ZnVuY3Rpb24oKXt0aGlzLmlzSG9yaXpvbnRhbCgpfHx0aGlzLnRpY2tzLnJldmVyc2UoKX0sZ2V0TGFiZWxGb3JJbmRleDpmdW5jdGlvbihlLHQpe3JldHVybit0aGlzLmdldFJpZ2h0VmFsdWUodGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW3RdLmRhdGFbZV0pfSxnZXRQaXhlbEZvclZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcyxyPW4uc3RhcnQsaT0rbi5nZXRSaWdodFZhbHVlKGUpLGE9bi5lbmQtcjtyZXR1cm4gdD1uLmlzSG9yaXpvbnRhbCgpP24ubGVmdCtuLndpZHRoL2EqKGktcik6bi5ib3R0b20tbi5oZWlnaHQvYSooaS1yKSx0fSxnZXRWYWx1ZUZvclBpeGVsOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10LmlzSG9yaXpvbnRhbCgpLHI9bj90LndpZHRoOnQuaGVpZ2h0LGk9KG4/ZS10LmxlZnQ6dC5ib3R0b20tZSkvcjtyZXR1cm4gdC5zdGFydCsodC5lbmQtdC5zdGFydCkqaX0sZ2V0UGl4ZWxGb3JUaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldFBpeGVsRm9yVmFsdWUodGhpcy50aWNrc0FzTnVtYmVyc1tlXSl9fSk7YS5yZWdpc3RlclNjYWxlVHlwZSgibGluZWFyIixuLHQpfX0sezI2OjI2LDM0OjM0LDM1OjM1LDQ2OjQ2fV0sNTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0NiksaT1lKDMzKTtmdW5jdGlvbiBhKGUsdCl7dmFyIG4saSxhLG89W107aWYoZS5zdGVwU2l6ZSYmZS5zdGVwU2l6ZT4wKWE9ZS5zdGVwU2l6ZTtlbHNle3ZhciBzPXIubmljZU51bSh0Lm1heC10Lm1pbiwhMSk7YT1yLm5pY2VOdW0ocy8oZS5tYXhUaWNrcy0xKSwhMCksaT1lLnByZWNpc2lvbix2b2lkIDAhPT1pJiYobj1NYXRoLnBvdygxMCxpKSxhPU1hdGguY2VpbChhKm4pL24pfXZhciBjPU1hdGguZmxvb3IodC5taW4vYSkqYSxsPU1hdGguY2VpbCh0Lm1heC9hKSphO3IuaXNOdWxsT3JVbmRlZihlLm1pbil8fHIuaXNOdWxsT3JVbmRlZihlLm1heCl8fCFlLnN0ZXBTaXplfHxyLmFsbW9zdFdob2xlKChlLm1heC1lLm1pbikvZS5zdGVwU2l6ZSxhLzFlMykmJihjPWUubWluLGw9ZS5tYXgpO3ZhciB1PShsLWMpL2E7dT1yLmFsbW9zdEVxdWFscyh1LE1hdGgucm91bmQodSksYS8xZTMpP01hdGgucm91bmQodSk6TWF0aC5jZWlsKHUpLGk9MSxhPDEmJihpPU1hdGgucG93KDEwLDEtTWF0aC5mbG9vcihyLmxvZzEwKGEpKSksYz1NYXRoLnJvdW5kKGMqaSkvaSxsPU1hdGgucm91bmQobCppKS9pKSxvLnB1c2godm9pZCAwIT09ZS5taW4/ZS5taW46Yyk7Zm9yKHZhciBkPTE7ZDx1OysrZClvLnB1c2goTWF0aC5yb3VuZCgoYytkKmEpKmkpL2kpO3JldHVybiBvLnB1c2godm9pZCAwIT09ZS5tYXg/ZS5tYXg6bCksb310LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5ub29wO2UuTGluZWFyU2NhbGVCYXNlPWkuZXh0ZW5kKHtnZXRSaWdodFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGU/K2U6aS5wcm90b3R5cGUuZ2V0UmlnaHRWYWx1ZS5jYWxsKHRoaXMsZSl9LGhhbmRsZVRpY2tSYW5nZU9wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLG49dC50aWNrcztpZihuLmJlZ2luQXRaZXJvKXt2YXIgaT1yLnNpZ24oZS5taW4pLGE9ci5zaWduKGUubWF4KTtpPDAmJmE8MD9lLm1heD0wOmk+MCYmYT4wJiYoZS5taW49MCl9dmFyIG89dm9pZCAwIT09bi5taW58fHZvaWQgMCE9PW4uc3VnZ2VzdGVkTWluLHM9dm9pZCAwIT09bi5tYXh8fHZvaWQgMCE9PW4uc3VnZ2VzdGVkTWF4O3ZvaWQgMCE9PW4ubWluP2UubWluPW4ubWluOnZvaWQgMCE9PW4uc3VnZ2VzdGVkTWluJiYobnVsbD09PWUubWluP2UubWluPW4uc3VnZ2VzdGVkTWluOmUubWluPU1hdGgubWluKGUubWluLG4uc3VnZ2VzdGVkTWluKSksdm9pZCAwIT09bi5tYXg/ZS5tYXg9bi5tYXg6dm9pZCAwIT09bi5zdWdnZXN0ZWRNYXgmJihudWxsPT09ZS5tYXg/ZS5tYXg9bi5zdWdnZXN0ZWRNYXg6ZS5tYXg9TWF0aC5tYXgoZS5tYXgsbi5zdWdnZXN0ZWRNYXgpKSxvIT09cyYmZS5taW4+PWUubWF4JiYobz9lLm1heD1lLm1pbisxOmUubWluPWUubWF4LTEpLGUubWluPT09ZS5tYXgmJihlLm1heCsrLG4uYmVnaW5BdFplcm98fGUubWluLS0pfSxnZXRUaWNrTGltaXQ6dCxoYW5kbGVEaXJlY3Rpb25hbENoYW5nZXM6dCxidWlsZFRpY2tzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUub3B0aW9ucyxuPXQudGlja3MsaT1lLmdldFRpY2tMaW1pdCgpO2k9TWF0aC5tYXgoMixpKTt2YXIgbz17bWF4VGlja3M6aSxtaW46bi5taW4sbWF4Om4ubWF4LHByZWNpc2lvbjpuLnByZWNpc2lvbixzdGVwU2l6ZTpyLnZhbHVlT3JEZWZhdWx0KG4uZml4ZWRTdGVwU2l6ZSxuLnN0ZXBTaXplKX0scz1lLnRpY2tzPWEobyxlKTtlLmhhbmRsZURpcmVjdGlvbmFsQ2hhbmdlcygpLGUubWF4PXIubWF4KHMpLGUubWluPXIubWluKHMpLG4ucmV2ZXJzZT8ocy5yZXZlcnNlKCksZS5zdGFydD1lLm1heCxlLmVuZD1lLm1pbik6KGUuc3RhcnQ9ZS5taW4sZS5lbmQ9ZS5tYXgpfSxjb252ZXJ0VGlja3NUb0xhYmVsczpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS50aWNrc0FzTnVtYmVycz1lLnRpY2tzLnNsaWNlKCksZS56ZXJvTGluZUluZGV4PWUudGlja3MuaW5kZXhPZigwKSxpLnByb3RvdHlwZS5jb252ZXJ0VGlja3NUb0xhYmVscy5jYWxsKGUpfX0pfX0sezMzOjMzLDQ2OjQ2fV0sNTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0NiksaT1lKDMzKSxhPWUoMzQpLG89ZSgzNSk7ZnVuY3Rpb24gcyhlLHQpe3ZhciBuLGksYT1bXSxvPXIudmFsdWVPckRlZmF1bHQscz1vKGUubWluLE1hdGgucG93KDEwLE1hdGguZmxvb3Ioci5sb2cxMCh0Lm1pbikpKSksYz1NYXRoLmZsb29yKHIubG9nMTAodC5tYXgpKSxsPU1hdGguY2VpbCh0Lm1heC9NYXRoLnBvdygxMCxjKSk7MD09PXM/KG49TWF0aC5mbG9vcihyLmxvZzEwKHQubWluTm90WmVybykpLGk9TWF0aC5mbG9vcih0Lm1pbk5vdFplcm8vTWF0aC5wb3coMTAsbikpLGEucHVzaChzKSxzPWkqTWF0aC5wb3coMTAsbikpOihuPU1hdGguZmxvb3Ioci5sb2cxMChzKSksaT1NYXRoLmZsb29yKHMvTWF0aC5wb3coMTAsbikpKTt2YXIgdT1uPDA/TWF0aC5wb3coMTAsTWF0aC5hYnMobikpOjE7ZG97YS5wdXNoKHMpLCsraSwxMD09PWkmJihpPTEsKytuLHU9bj49MD8xOnUpLHM9TWF0aC5yb3VuZChpKk1hdGgucG93KDEwLG4pKnUpL3V9d2hpbGUobjxjfHxuPT09YyYmaTxsKTt2YXIgZD1vKGUubWF4LHMpO3JldHVybiBhLnB1c2goZCksYX10LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e3Bvc2l0aW9uOiJsZWZ0Iix0aWNrczp7Y2FsbGJhY2s6by5mb3JtYXR0ZXJzLmxvZ2FyaXRobWljfX0sbj1pLmV4dGVuZCh7ZGV0ZXJtaW5lRGF0YUxpbWl0czpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm9wdGlvbnMsbj1lLmNoYXJ0LGk9bi5kYXRhLGE9aS5kYXRhc2V0cyxvPWUuaXNIb3Jpem9udGFsKCk7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbz90LnhBeGlzSUQ9PT1lLmlkOnQueUF4aXNJRD09PWUuaWR9ZS5taW49bnVsbCxlLm1heD1udWxsLGUubWluTm90WmVybz1udWxsO3ZhciBjPXQuc3RhY2tlZDtpZih2b2lkIDA9PT1jJiZyLmVhY2goYSwoZnVuY3Rpb24oZSx0KXtpZighYyl7dmFyIHI9bi5nZXREYXRhc2V0TWV0YSh0KTtuLmlzRGF0YXNldFZpc2libGUodCkmJnMocikmJnZvaWQgMCE9PXIuc3RhY2smJihjPSEwKX19KSksdC5zdGFja2VkfHxjKXt2YXIgbD17fTtyLmVhY2goYSwoZnVuY3Rpb24oaSxhKXt2YXIgbz1uLmdldERhdGFzZXRNZXRhKGEpLGM9W28udHlwZSx2b2lkIDA9PT10LnN0YWNrZWQmJnZvaWQgMD09PW8uc3RhY2s/YToiIixvLnN0YWNrXS5qb2luKCIuIik7bi5pc0RhdGFzZXRWaXNpYmxlKGEpJiZzKG8pJiYodm9pZCAwPT09bFtjXSYmKGxbY109W10pLHIuZWFjaChpLmRhdGEsKGZ1bmN0aW9uKHQsbil7dmFyIHI9bFtjXSxpPStlLmdldFJpZ2h0VmFsdWUodCk7aXNOYU4oaSl8fG8uZGF0YVtuXS5oaWRkZW58fGk8MHx8KHJbbl09cltuXXx8MCxyW25dKz1pKX0pKSl9KSksci5lYWNoKGwsKGZ1bmN0aW9uKHQpe2lmKHQubGVuZ3RoPjApe3ZhciBuPXIubWluKHQpLGk9ci5tYXgodCk7ZS5taW49bnVsbD09PWUubWluP246TWF0aC5taW4oZS5taW4sbiksZS5tYXg9bnVsbD09PWUubWF4P2k6TWF0aC5tYXgoZS5tYXgsaSl9fSkpfWVsc2Ugci5lYWNoKGEsKGZ1bmN0aW9uKHQsaSl7dmFyIGE9bi5nZXREYXRhc2V0TWV0YShpKTtuLmlzRGF0YXNldFZpc2libGUoaSkmJnMoYSkmJnIuZWFjaCh0LmRhdGEsKGZ1bmN0aW9uKHQsbil7dmFyIHI9K2UuZ2V0UmlnaHRWYWx1ZSh0KTtpc05hTihyKXx8YS5kYXRhW25dLmhpZGRlbnx8cjwwfHwobnVsbD09PWUubWluP2UubWluPXI6cjxlLm1pbiYmKGUubWluPXIpLG51bGw9PT1lLm1heD9lLm1heD1yOnI+ZS5tYXgmJihlLm1heD1yKSwwIT09ciYmKG51bGw9PT1lLm1pbk5vdFplcm98fHI8ZS5taW5Ob3RaZXJvKSYmKGUubWluTm90WmVybz1yKSl9KSl9KSk7dGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl9LGhhbmRsZVRpY2tSYW5nZU9wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLG49dC50aWNrcyxpPXIudmFsdWVPckRlZmF1bHQsYT0xLG89MTA7ZS5taW49aShuLm1pbixlLm1pbiksZS5tYXg9aShuLm1heCxlLm1heCksZS5taW49PT1lLm1heCYmKDAhPT1lLm1pbiYmbnVsbCE9PWUubWluPyhlLm1pbj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKHIubG9nMTAoZS5taW4pKS0xKSxlLm1heD1NYXRoLnBvdygxMCxNYXRoLmZsb29yKHIubG9nMTAoZS5tYXgpKSsxKSk6KGUubWluPWEsZS5tYXg9bykpLG51bGw9PT1lLm1pbiYmKGUubWluPU1hdGgucG93KDEwLE1hdGguZmxvb3Ioci5sb2cxMChlLm1heCkpLTEpKSxudWxsPT09ZS5tYXgmJihlLm1heD0wIT09ZS5taW4/TWF0aC5wb3coMTAsTWF0aC5mbG9vcihyLmxvZzEwKGUubWluKSkrMSk6byksbnVsbD09PWUubWluTm90WmVybyYmKGUubWluPjA/ZS5taW5Ob3RaZXJvPWUubWluOmUubWF4PDE/ZS5taW5Ob3RaZXJvPU1hdGgucG93KDEwLE1hdGguZmxvb3Ioci5sb2cxMChlLm1heCkpKTplLm1pbk5vdFplcm89YSl9LGJ1aWxkVGlja3M6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLG49dC50aWNrcyxpPSFlLmlzSG9yaXpvbnRhbCgpLGE9e21pbjpuLm1pbixtYXg6bi5tYXh9LG89ZS50aWNrcz1zKGEsZSk7ZS5tYXg9ci5tYXgobyksZS5taW49ci5taW4obyksbi5yZXZlcnNlPyhpPSFpLGUuc3RhcnQ9ZS5tYXgsZS5lbmQ9ZS5taW4pOihlLnN0YXJ0PWUubWluLGUuZW5kPWUubWF4KSxpJiZvLnJldmVyc2UoKX0sY29udmVydFRpY2tzVG9MYWJlbHM6ZnVuY3Rpb24oKXt0aGlzLnRpY2tWYWx1ZXM9dGhpcy50aWNrcy5zbGljZSgpLGkucHJvdG90eXBlLmNvbnZlcnRUaWNrc1RvTGFiZWxzLmNhbGwodGhpcyl9LGdldExhYmVsRm9ySW5kZXg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4rdGhpcy5nZXRSaWdodFZhbHVlKHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1t0XS5kYXRhW2VdKX0sZ2V0UGl4ZWxGb3JUaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldFBpeGVsRm9yVmFsdWUodGhpcy50aWNrVmFsdWVzW2VdKX0sX2dldEZpcnN0VGlja1ZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PU1hdGguZmxvb3Ioci5sb2cxMChlKSksbj1NYXRoLmZsb29yKGUvTWF0aC5wb3coMTAsdCkpO3JldHVybiBuKk1hdGgucG93KDEwLHQpfSxnZXRQaXhlbEZvclZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuLGksYSxvLHMsYz10aGlzLGw9Yy5vcHRpb25zLnRpY2tzLnJldmVyc2UsdT1yLmxvZzEwLGQ9Yy5fZ2V0Rmlyc3RUaWNrVmFsdWUoYy5taW5Ob3RaZXJvKSxwPTA7cmV0dXJuIHQ9K2MuZ2V0UmlnaHRWYWx1ZSh0KSxsPyhhPWMuZW5kLG89Yy5zdGFydCxzPS0xKTooYT1jLnN0YXJ0LG89Yy5lbmQscz0xKSxjLmlzSG9yaXpvbnRhbCgpPyhuPWMud2lkdGgsaT1sP2MucmlnaHQ6Yy5sZWZ0KToobj1jLmhlaWdodCxzKj0tMSxpPWw/Yy50b3A6Yy5ib3R0b20pLHQhPT1hJiYoMD09PWEmJihwPXIuZ2V0VmFsdWVPckRlZmF1bHQoYy5vcHRpb25zLnRpY2tzLmZvbnRTaXplLGUuZGVmYXVsdHMuZ2xvYmFsLmRlZmF1bHRGb250U2l6ZSksbi09cCxhPWQpLDAhPT10JiYocCs9bi8odShvKS11KGEpKSoodSh0KS11KGEpKSksaSs9cypwKSxpfSxnZXRWYWx1ZUZvclBpeGVsOmZ1bmN0aW9uKHQpe3ZhciBuLGksYSxvLHM9dGhpcyxjPXMub3B0aW9ucy50aWNrcy5yZXZlcnNlLGw9ci5sb2cxMCx1PXMuX2dldEZpcnN0VGlja1ZhbHVlKHMubWluTm90WmVybyk7aWYoYz8oaT1zLmVuZCxhPXMuc3RhcnQpOihpPXMuc3RhcnQsYT1zLmVuZCkscy5pc0hvcml6b250YWwoKT8obj1zLndpZHRoLG89Yz9zLnJpZ2h0LXQ6dC1zLmxlZnQpOihuPXMuaGVpZ2h0LG89Yz90LXMudG9wOnMuYm90dG9tLXQpLG8hPT1pKXtpZigwPT09aSl7dmFyIGQ9ci5nZXRWYWx1ZU9yRGVmYXVsdChzLm9wdGlvbnMudGlja3MuZm9udFNpemUsZS5kZWZhdWx0cy5nbG9iYWwuZGVmYXVsdEZvbnRTaXplKTtvLT1kLG4tPWQsaT11fW8qPWwoYSktbChpKSxvLz1uLG89TWF0aC5wb3coMTAsbChpKStvKX1yZXR1cm4gb319KTthLnJlZ2lzdGVyU2NhbGVUeXBlKCJsb2dhcml0aG1pYyIsbix0KX19LHszMzozMywzNDozNCwzNTozNSw0Njo0Nn1dLDU4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjYpLGk9ZSg0NiksYT1lKDM0KSxvPWUoMzUpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1yLmdsb2JhbCxuPXtkaXNwbGF5OiEwLGFuaW1hdGU6ITAscG9zaXRpb246ImNoYXJ0QXJlYSIsYW5nbGVMaW5lczp7ZGlzcGxheTohMCxjb2xvcjoicmdiYSgwLCAwLCAwLCAwLjEpIixsaW5lV2lkdGg6MX0sZ3JpZExpbmVzOntjaXJjdWxhcjohMX0sdGlja3M6e3Nob3dMYWJlbEJhY2tkcm9wOiEwLGJhY2tkcm9wQ29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC43NSkiLGJhY2tkcm9wUGFkZGluZ1k6MixiYWNrZHJvcFBhZGRpbmdYOjIsY2FsbGJhY2s6by5mb3JtYXR0ZXJzLmxpbmVhcn0scG9pbnRMYWJlbHM6e2Rpc3BsYXk6ITAsZm9udFNpemU6MTAsY2FsbGJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fX07ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLm9wdGlvbnM7cmV0dXJuIHQuYW5nbGVMaW5lcy5kaXNwbGF5fHx0LnBvaW50TGFiZWxzLmRpc3BsYXk/ZS5jaGFydC5kYXRhLmxhYmVscy5sZW5ndGg6MH1mdW5jdGlvbiBjKGUpe3ZhciBuPWUub3B0aW9ucy5wb2ludExhYmVscyxyPWkudmFsdWVPckRlZmF1bHQobi5mb250U2l6ZSx0LmRlZmF1bHRGb250U2l6ZSksYT1pLnZhbHVlT3JEZWZhdWx0KG4uZm9udFN0eWxlLHQuZGVmYXVsdEZvbnRTdHlsZSksbz1pLnZhbHVlT3JEZWZhdWx0KG4uZm9udEZhbWlseSx0LmRlZmF1bHRGb250RmFtaWx5KSxzPWkuZm9udFN0cmluZyhyLGEsbyk7cmV0dXJue3NpemU6cixzdHlsZTphLGZhbWlseTpvLGZvbnQ6c319ZnVuY3Rpb24gbChlLHQsbil7cmV0dXJuIGkuaXNBcnJheShuKT97dzppLmxvbmdlc3RUZXh0KGUsZS5mb250LG4pLGg6bi5sZW5ndGgqdCsxLjUqKG4ubGVuZ3RoLTEpKnR9Ont3OmUubWVhc3VyZVRleHQobikud2lkdGgsaDp0fX1mdW5jdGlvbiB1KGUsdCxuLHIsaSl7cmV0dXJuIGU9PT1yfHxlPT09aT97c3RhcnQ6dC1uLzIsZW5kOnQrbi8yfTplPHJ8fGU+aT97c3RhcnQ6dC1uLTUsZW5kOnR9OntzdGFydDp0LGVuZDp0K24rNX19ZnVuY3Rpb24gZChlKXt2YXIgdCxuLHIsYT1jKGUpLG89TWF0aC5taW4oZS5oZWlnaHQvMixlLndpZHRoLzIpLGQ9e3I6ZS53aWR0aCxsOjAsdDplLmhlaWdodCxiOjB9LHA9e307ZS5jdHguZm9udD1hLmZvbnQsZS5fcG9pbnRMYWJlbFNpemVzPVtdO3ZhciBmPXMoZSk7Zm9yKHQ9MDt0PGY7dCsrKXtyPWUuZ2V0UG9pbnRQb3NpdGlvbih0LG8pLG49bChlLmN0eCxhLnNpemUsZS5wb2ludExhYmVsc1t0XXx8IiIpLGUuX3BvaW50TGFiZWxTaXplc1t0XT1uO3ZhciBoPWUuZ2V0SW5kZXhBbmdsZSh0KSxtPWkudG9EZWdyZWVzKGgpJTM2MCxfPXUobSxyLngsbi53LDAsMTgwKSxnPXUobSxyLnksbi5oLDkwLDI3MCk7Xy5zdGFydDxkLmwmJihkLmw9Xy5zdGFydCxwLmw9aCksXy5lbmQ+ZC5yJiYoZC5yPV8uZW5kLHAucj1oKSxnLnN0YXJ0PGQudCYmKGQudD1nLnN0YXJ0LHAudD1oKSxnLmVuZD5kLmImJihkLmI9Zy5lbmQscC5iPWgpfWUuc2V0UmVkdWN0aW9ucyhvLGQscCl9ZnVuY3Rpb24gcChlKXt2YXIgdD1NYXRoLm1pbihlLmhlaWdodC8yLGUud2lkdGgvMik7ZS5kcmF3aW5nQXJlYT1NYXRoLnJvdW5kKHQpLGUuc2V0Q2VudGVyUG9pbnQoMCwwLDAsMCl9ZnVuY3Rpb24gZihlKXtyZXR1cm4gMD09PWV8fDE4MD09PWU/ImNlbnRlciI6ZTwxODA/ImxlZnQiOiJyaWdodCJ9ZnVuY3Rpb24gaChlLHQsbixyKXtpZihpLmlzQXJyYXkodCkpZm9yKHZhciBhPW4ueSxvPTEuNSpyLHM9MDtzPHQubGVuZ3RoOysrcyllLmZpbGxUZXh0KHRbc10sbi54LGEpLGErPW87ZWxzZSBlLmZpbGxUZXh0KHQsbi54LG4ueSl9ZnVuY3Rpb24gbShlLHQsbil7OTA9PT1lfHwyNzA9PT1lP24ueS09dC5oLzI6KGU+MjcwfHxlPDkwKSYmKG4ueS09dC5oKX1mdW5jdGlvbiBfKGUpe3ZhciBuPWUuY3R4LHI9ZS5vcHRpb25zLGE9ci5hbmdsZUxpbmVzLG89ci5wb2ludExhYmVscztuLmxpbmVXaWR0aD1hLmxpbmVXaWR0aCxuLnN0cm9rZVN0eWxlPWEuY29sb3I7dmFyIGw9ZS5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZShyLnRpY2tzLnJldmVyc2U/ZS5taW46ZS5tYXgpLHU9YyhlKTtuLnRleHRCYXNlbGluZT0idG9wIjtmb3IodmFyIGQ9cyhlKS0xO2Q+PTA7ZC0tKXtpZihhLmRpc3BsYXkpe3ZhciBwPWUuZ2V0UG9pbnRQb3NpdGlvbihkLGwpO24uYmVnaW5QYXRoKCksbi5tb3ZlVG8oZS54Q2VudGVyLGUueUNlbnRlciksbi5saW5lVG8ocC54LHAueSksbi5zdHJva2UoKSxuLmNsb3NlUGF0aCgpfWlmKG8uZGlzcGxheSl7dmFyIF89ZS5nZXRQb2ludFBvc2l0aW9uKGQsbCs1KSxnPWkudmFsdWVBdEluZGV4T3JEZWZhdWx0KG8uZm9udENvbG9yLGQsdC5kZWZhdWx0Rm9udENvbG9yKTtuLmZvbnQ9dS5mb250LG4uZmlsbFN0eWxlPWc7dmFyIHY9ZS5nZXRJbmRleEFuZ2xlKGQpLHk9aS50b0RlZ3JlZXModik7bi50ZXh0QWxpZ249Zih5KSxtKHksZS5fcG9pbnRMYWJlbFNpemVzW2RdLF8pLGgobixlLnBvaW50TGFiZWxzW2RdfHwiIixfLHUuc2l6ZSl9fX1mdW5jdGlvbiBnKGUsdCxuLHIpe3ZhciBhPWUuY3R4O2lmKGEuc3Ryb2tlU3R5bGU9aS52YWx1ZUF0SW5kZXhPckRlZmF1bHQodC5jb2xvcixyLTEpLGEubGluZVdpZHRoPWkudmFsdWVBdEluZGV4T3JEZWZhdWx0KHQubGluZVdpZHRoLHItMSksZS5vcHRpb25zLmdyaWRMaW5lcy5jaXJjdWxhcilhLmJlZ2luUGF0aCgpLGEuYXJjKGUueENlbnRlcixlLnlDZW50ZXIsbiwwLDIqTWF0aC5QSSksYS5jbG9zZVBhdGgoKSxhLnN0cm9rZSgpO2Vsc2V7dmFyIG89cyhlKTtpZigwPT09bylyZXR1cm47YS5iZWdpblBhdGgoKTt2YXIgYz1lLmdldFBvaW50UG9zaXRpb24oMCxuKTthLm1vdmVUbyhjLngsYy55KTtmb3IodmFyIGw9MTtsPG87bCsrKWM9ZS5nZXRQb2ludFBvc2l0aW9uKGwsbiksYS5saW5lVG8oYy54LGMueSk7YS5jbG9zZVBhdGgoKSxhLnN0cm9rZSgpfX1mdW5jdGlvbiB2KGUpe3JldHVybiBpLmlzTnVtYmVyKGUpP2U6MH12YXIgeT1lLkxpbmVhclNjYWxlQmFzZS5leHRlbmQoe3NldERpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5vcHRpb25zLHI9bi50aWNrcztlLndpZHRoPWUubWF4V2lkdGgsZS5oZWlnaHQ9ZS5tYXhIZWlnaHQsZS54Q2VudGVyPU1hdGgucm91bmQoZS53aWR0aC8yKSxlLnlDZW50ZXI9TWF0aC5yb3VuZChlLmhlaWdodC8yKTt2YXIgYT1pLm1pbihbZS5oZWlnaHQsZS53aWR0aF0pLG89aS52YWx1ZU9yRGVmYXVsdChyLmZvbnRTaXplLHQuZGVmYXVsdEZvbnRTaXplKTtlLmRyYXdpbmdBcmVhPW4uZGlzcGxheT9hLzItKG8vMityLmJhY2tkcm9wUGFkZGluZ1kpOmEvMn0sZGV0ZXJtaW5lRGF0YUxpbWl0czpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmNoYXJ0LG49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHI9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2kuZWFjaCh0LmRhdGEuZGF0YXNldHMsKGZ1bmN0aW9uKGEsbyl7aWYodC5pc0RhdGFzZXRWaXNpYmxlKG8pKXt2YXIgcz10LmdldERhdGFzZXRNZXRhKG8pO2kuZWFjaChhLmRhdGEsKGZ1bmN0aW9uKHQsaSl7dmFyIGE9K2UuZ2V0UmlnaHRWYWx1ZSh0KTtpc05hTihhKXx8cy5kYXRhW2ldLmhpZGRlbnx8KG49TWF0aC5taW4oYSxuKSxyPU1hdGgubWF4KGEscikpfSkpfX0pKSxlLm1pbj1uPT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZPzA6bixlLm1heD1yPT09TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZPzA6cixlLmhhbmRsZVRpY2tSYW5nZU9wdGlvbnMoKX0sZ2V0VGlja0xpbWl0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLnRpY2tzLG49aS52YWx1ZU9yRGVmYXVsdChlLmZvbnRTaXplLHQuZGVmYXVsdEZvbnRTaXplKTtyZXR1cm4gTWF0aC5taW4oZS5tYXhUaWNrc0xpbWl0P2UubWF4VGlja3NMaW1pdDoxMSxNYXRoLmNlaWwodGhpcy5kcmF3aW5nQXJlYS8oMS41Km4pKSl9LGNvbnZlcnRUaWNrc1RvTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztlLkxpbmVhclNjYWxlQmFzZS5wcm90b3R5cGUuY29udmVydFRpY2tzVG9MYWJlbHMuY2FsbCh0KSx0LnBvaW50TGFiZWxzPXQuY2hhcnQuZGF0YS5sYWJlbHMubWFwKHQub3B0aW9ucy5wb2ludExhYmVscy5jYWxsYmFjayx0KX0sZ2V0TGFiZWxGb3JJbmRleDpmdW5jdGlvbihlLHQpe3JldHVybit0aGlzLmdldFJpZ2h0VmFsdWUodGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW3RdLmRhdGFbZV0pfSxmaXQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMucG9pbnRMYWJlbHMuZGlzcGxheT9kKHRoaXMpOnAodGhpcyl9LHNldFJlZHVjdGlvbnM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsaT10LmwvTWF0aC5zaW4obi5sKSxhPU1hdGgubWF4KHQuci1yLndpZHRoLDApL01hdGguc2luKG4uciksbz0tdC50L01hdGguY29zKG4udCkscz0tTWF0aC5tYXgodC5iLXIuaGVpZ2h0LDApL01hdGguY29zKG4uYik7aT12KGkpLGE9dihhKSxvPXYobykscz12KHMpLHIuZHJhd2luZ0FyZWE9TWF0aC5taW4oTWF0aC5yb3VuZChlLShpK2EpLzIpLE1hdGgucm91bmQoZS0obytzKS8yKSksci5zZXRDZW50ZXJQb2ludChpLGEsbyxzKX0sc2V0Q2VudGVyUG9pbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcyxhPWkud2lkdGgtdC1pLmRyYXdpbmdBcmVhLG89ZStpLmRyYXdpbmdBcmVhLHM9bitpLmRyYXdpbmdBcmVhLGM9aS5oZWlnaHQtci1pLmRyYXdpbmdBcmVhO2kueENlbnRlcj1NYXRoLnJvdW5kKChvK2EpLzIraS5sZWZ0KSxpLnlDZW50ZXI9TWF0aC5yb3VuZCgocytjKS8yK2kudG9wKX0sZ2V0SW5kZXhBbmdsZTpmdW5jdGlvbihlKXt2YXIgdD0yKk1hdGguUEkvcyh0aGlzKSxuPXRoaXMuY2hhcnQub3B0aW9ucyYmdGhpcy5jaGFydC5vcHRpb25zLnN0YXJ0QW5nbGU/dGhpcy5jaGFydC5vcHRpb25zLnN0YXJ0QW5nbGU6MCxyPW4qTWF0aC5QSSoyLzM2MDtyZXR1cm4gZSp0K3J9LGdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYobnVsbD09PWUpcmV0dXJuIDA7dmFyIG49dC5kcmF3aW5nQXJlYS8odC5tYXgtdC5taW4pO3JldHVybiB0Lm9wdGlvbnMudGlja3MucmV2ZXJzZT8odC5tYXgtZSkqbjooZS10Lm1pbikqbn0sZ2V0UG9pbnRQb3NpdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1uLmdldEluZGV4QW5nbGUoZSktTWF0aC5QSS8yO3JldHVybnt4Ok1hdGgucm91bmQoTWF0aC5jb3MocikqdCkrbi54Q2VudGVyLHk6TWF0aC5yb3VuZChNYXRoLnNpbihyKSp0KStuLnlDZW50ZXJ9fSxnZXRQb2ludFBvc2l0aW9uRm9yVmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5nZXRQb2ludFBvc2l0aW9uKGUsdGhpcy5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZSh0KSl9LGdldEJhc2VQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm1pbixuPWUubWF4O3JldHVybiBlLmdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZSgwLGUuYmVnaW5BdFplcm8/MDp0PDAmJm48MD9uOnQ+MCYmbj4wP3Q6MCl9LGRyYXc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5vcHRpb25zLHI9bi5ncmlkTGluZXMsYT1uLnRpY2tzLG89aS52YWx1ZU9yRGVmYXVsdDtpZihuLmRpc3BsYXkpe3ZhciBzPWUuY3R4LGM9dGhpcy5nZXRJbmRleEFuZ2xlKDApLGw9byhhLmZvbnRTaXplLHQuZGVmYXVsdEZvbnRTaXplKSx1PW8oYS5mb250U3R5bGUsdC5kZWZhdWx0Rm9udFN0eWxlKSxkPW8oYS5mb250RmFtaWx5LHQuZGVmYXVsdEZvbnRGYW1pbHkpLHA9aS5mb250U3RyaW5nKGwsdSxkKTtpLmVhY2goZS50aWNrcywoZnVuY3Rpb24obixpKXtpZihpPjB8fGEucmV2ZXJzZSl7dmFyIHU9ZS5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZShlLnRpY2tzQXNOdW1iZXJzW2ldKTtpZihyLmRpc3BsYXkmJjAhPT1pJiZnKGUscix1LGkpLGEuZGlzcGxheSl7dmFyIGQ9byhhLmZvbnRDb2xvcix0LmRlZmF1bHRGb250Q29sb3IpO2lmKHMuZm9udD1wLHMuc2F2ZSgpLHMudHJhbnNsYXRlKGUueENlbnRlcixlLnlDZW50ZXIpLHMucm90YXRlKGMpLGEuc2hvd0xhYmVsQmFja2Ryb3Ape3ZhciBmPXMubWVhc3VyZVRleHQobikud2lkdGg7cy5maWxsU3R5bGU9YS5iYWNrZHJvcENvbG9yLHMuZmlsbFJlY3QoLWYvMi1hLmJhY2tkcm9wUGFkZGluZ1gsLXUtbC8yLWEuYmFja2Ryb3BQYWRkaW5nWSxmKzIqYS5iYWNrZHJvcFBhZGRpbmdYLGwrMiphLmJhY2tkcm9wUGFkZGluZ1kpfXMudGV4dEFsaWduPSJjZW50ZXIiLHMudGV4dEJhc2VsaW5lPSJtaWRkbGUiLHMuZmlsbFN0eWxlPWQscy5maWxsVGV4dChuLDAsLXUpLHMucmVzdG9yZSgpfX19KSksKG4uYW5nbGVMaW5lcy5kaXNwbGF5fHxuLnBvaW50TGFiZWxzLmRpc3BsYXkpJiZfKGUpfX19KTthLnJlZ2lzdGVyU2NhbGVUeXBlKCJyYWRpYWxMaW5lYXIiLHksbil9fSx7MjY6MjYsMzQ6MzQsMzU6MzUsNDY6NDZ9XSw1OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEpO3I9ImZ1bmN0aW9uIj09PXR5cGVvZiByP3I6d2luZG93Lm1vbWVudDt2YXIgaT1lKDI2KSxhPWUoNDYpLG89ZSgzMykscz1lKDM0KSxjPU51bWJlci5NSU5fU0FGRV9JTlRFR0VSfHwtOTAwNzE5OTI1NDc0MDk5MSxsPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSfHw5MDA3MTk5MjU0NzQwOTkxLHU9e21pbGxpc2Vjb25kOntjb21tb246ITAsc2l6ZToxLHN0ZXBzOlsxLDIsNSwxMCwyMCw1MCwxMDAsMjUwLDUwMF19LHNlY29uZDp7Y29tbW9uOiEwLHNpemU6MWUzLHN0ZXBzOlsxLDIsNSwxMCwxNSwzMF19LG1pbnV0ZTp7Y29tbW9uOiEwLHNpemU6NmU0LHN0ZXBzOlsxLDIsNSwxMCwxNSwzMF19LGhvdXI6e2NvbW1vbjohMCxzaXplOjM2ZTUsc3RlcHM6WzEsMiwzLDYsMTJdfSxkYXk6e2NvbW1vbjohMCxzaXplOjg2NGU1LHN0ZXBzOlsxLDIsNV19LHdlZWs6e2NvbW1vbjohMSxzaXplOjYwNDhlNSxzdGVwczpbMSwyLDMsNF19LG1vbnRoOntjb21tb246ITAsc2l6ZToyNjI4ZTYsc3RlcHM6WzEsMiwzXX0scXVhcnRlcjp7Y29tbW9uOiExLHNpemU6Nzg4NGU2LHN0ZXBzOlsxLDIsMyw0XX0seWVhcjp7Y29tbW9uOiEwLHNpemU6MzE1NGU3fX0sZD1PYmplY3Qua2V5cyh1KTtmdW5jdGlvbiBwKGUsdCl7cmV0dXJuIGUtdH1mdW5jdGlvbiBmKGUpe3ZhciB0LG4scixpPXt9LGE9W107Zm9yKHQ9MCxuPWUubGVuZ3RoO3Q8bjsrK3Qpcj1lW3RdLGlbcl18fChpW3JdPSEwLGEucHVzaChyKSk7cmV0dXJuIGF9ZnVuY3Rpb24gaChlLHQsbixyKXtpZigibGluZWFyIj09PXJ8fCFlLmxlbmd0aClyZXR1cm5be3RpbWU6dCxwb3M6MH0se3RpbWU6bixwb3M6MX1dO3ZhciBpLGEsbyxzLGMsbD1bXSx1PVt0XTtmb3IoaT0wLGE9ZS5sZW5ndGg7aTxhOysraSlzPWVbaV0scz50JiZzPG4mJnUucHVzaChzKTtmb3IodS5wdXNoKG4pLGk9MCxhPXUubGVuZ3RoO2k8YTsrK2kpYz11W2krMV0sbz11W2ktMV0scz11W2ldLHZvaWQgMCE9PW8mJnZvaWQgMCE9PWMmJk1hdGgucm91bmQoKGMrbykvMik9PT1zfHxsLnB1c2goe3RpbWU6cyxwb3M6aS8oYS0xKX0pO3JldHVybiBsfWZ1bmN0aW9uIG0oZSx0LG4pe3ZhciByLGksYSxvPTAscz1lLmxlbmd0aC0xO3doaWxlKG8+PTAmJm88PXMpe2lmKHI9bytzPj4xLGk9ZVtyLTFdfHxudWxsLGE9ZVtyXSwhaSlyZXR1cm57bG86bnVsbCxoaTphfTtpZihhW3RdPG4pbz1yKzE7ZWxzZXtpZighKGlbdF0+bikpcmV0dXJue2xvOmksaGk6YX07cz1yLTF9fXJldHVybntsbzphLGhpOm51bGx9fWZ1bmN0aW9uIF8oZSx0LG4scil7dmFyIGk9bShlLHQsbiksYT1pLmxvP2kuaGk/aS5sbzplW2UubGVuZ3RoLTJdOmVbMF0sbz1pLmxvP2kuaGk/aS5oaTplW2UubGVuZ3RoLTFdOmVbMV0scz1vW3RdLWFbdF0sYz1zPyhuLWFbdF0pL3M6MCxsPShvW3JdLWFbcl0pKmM7cmV0dXJuIGFbcl0rbH1mdW5jdGlvbiBnKGUsdCl7dmFyIG49dC5wYXJzZXIsaT10LnBhcnNlcnx8dC5mb3JtYXQ7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBuP24oZSk6InN0cmluZyI9PT10eXBlb2YgZSYmInN0cmluZyI9PT10eXBlb2YgaT9yKGUsaSk6KGUgaW5zdGFuY2VvZiByfHwoZT1yKGUpKSxlLmlzVmFsaWQoKT9lOiJmdW5jdGlvbiI9PT10eXBlb2YgaT9pKGUpOmUpfWZ1bmN0aW9uIHYoZSx0KXtpZihhLmlzTnVsbE9yVW5kZWYoZSkpcmV0dXJuIG51bGw7dmFyIG49dC5vcHRpb25zLnRpbWUscj1nKHQuZ2V0UmlnaHRWYWx1ZShlKSxuKTtyZXR1cm4gci5pc1ZhbGlkKCk/KG4ucm91bmQmJnIuc3RhcnRPZihuLnJvdW5kKSxyLnZhbHVlT2YoKSk6bnVsbH1mdW5jdGlvbiB5KGUsdCxuLHIpe3ZhciBpLGEsbyxzPXQtZSxjPXVbbl0sbD1jLnNpemUsZD1jLnN0ZXBzO2lmKCFkKXJldHVybiBNYXRoLmNlaWwocy8ocipsKSk7Zm9yKGk9MCxhPWQubGVuZ3RoO2k8YTsrK2kpaWYobz1kW2ldLE1hdGguY2VpbChzLyhsKm8pKTw9cilicmVhaztyZXR1cm4gb31mdW5jdGlvbiBiKGUsdCxuLHIpe3ZhciBpLGEsbyxzPWQubGVuZ3RoO2ZvcihpPWQuaW5kZXhPZihlKTtpPHMtMTsrK2kpaWYoYT11W2RbaV1dLG89YS5zdGVwcz9hLnN0ZXBzW2Euc3RlcHMubGVuZ3RoLTFdOmwsYS5jb21tb24mJk1hdGguY2VpbCgobi10KS8obyphLnNpemUpKTw9cilyZXR1cm4gZFtpXTtyZXR1cm4gZFtzLTFdfWZ1bmN0aW9uIHcoZSx0LG4saSl7dmFyIGEsbyxzPXIuZHVyYXRpb24ocihpKS5kaWZmKHIobikpKSxjPWQubGVuZ3RoO2ZvcihhPWMtMTthPj1kLmluZGV4T2YodCk7YS0tKWlmKG89ZFthXSx1W29dLmNvbW1vbiYmcy5hcyhvKT49ZS5sZW5ndGgpcmV0dXJuIG87cmV0dXJuIGRbdD9kLmluZGV4T2YodCk6MF19ZnVuY3Rpb24geChlKXtmb3IodmFyIHQ9ZC5pbmRleE9mKGUpKzEsbj1kLmxlbmd0aDt0PG47Kyt0KWlmKHVbZFt0XV0uY29tbW9uKXJldHVybiBkW3RdfWZ1bmN0aW9uIGsoZSx0LG4saSl7dmFyIG8scz1pLnRpbWUsYz1zLnVuaXR8fGIocy5taW5Vbml0LGUsdCxuKSxsPXgoYyksZD1hLnZhbHVlT3JEZWZhdWx0KHMuc3RlcFNpemUscy51bml0U3RlcFNpemUpLHA9IndlZWsiPT09YyYmcy5pc29XZWVrZGF5LGY9aS50aWNrcy5tYWpvci5lbmFibGVkLGg9dVtjXSxtPXIoZSksXz1yKHQpLGc9W107Zm9yKGR8fChkPXkoZSx0LGMsbikpLHAmJihtPW0uaXNvV2Vla2RheShwKSxfPV8uaXNvV2Vla2RheShwKSksbT1tLnN0YXJ0T2YocD8iZGF5IjpjKSxfPV8uc3RhcnRPZihwPyJkYXkiOmMpLF88dCYmXy5hZGQoMSxjKSxvPXIobSksZiYmbCYmIXAmJiFzLnJvdW5kJiYoby5zdGFydE9mKGwpLG8uYWRkKH5+KChtLW8pLyhoLnNpemUqZCkpKmQsYykpO288XztvLmFkZChkLGMpKWcucHVzaCgrbyk7cmV0dXJuIGcucHVzaCgrbyksZ31mdW5jdGlvbiBDKGUsdCxuLHIsaSl7dmFyIGEsbyxzPTAsYz0wO3JldHVybiBpLm9mZnNldCYmdC5sZW5ndGgmJihpLnRpbWUubWlufHwoYT10Lmxlbmd0aD4xP3RbMV06cixvPXRbMF0scz0oXyhlLCJ0aW1lIixhLCJwb3MiKS1fKGUsInRpbWUiLG8sInBvcyIpKS8yKSxpLnRpbWUubWF4fHwoYT10W3QubGVuZ3RoLTFdLG89dC5sZW5ndGg+MT90W3QubGVuZ3RoLTJdOm4sYz0oXyhlLCJ0aW1lIixhLCJwb3MiKS1fKGUsInRpbWUiLG8sInBvcyIpKS8yKSkse2xlZnQ6cyxyaWdodDpjfX1mdW5jdGlvbiBTKGUsdCl7dmFyIG4saSxhLG8scz1bXTtmb3Iobj0wLGk9ZS5sZW5ndGg7bjxpOysrbilhPWVbbl0sbz0hIXQmJmE9PT0rcihhKS5zdGFydE9mKHQpLHMucHVzaCh7dmFsdWU6YSxtYWpvcjpvfSk7cmV0dXJuIHN9ZnVuY3Rpb24gUChlLHQpe3ZhciBuLHIsaSxhPWUubGVuZ3RoO2ZvcihuPTA7bjxhO24rKyl7aWYocj1nKGVbbl0sdCksMCE9PXIubWlsbGlzZWNvbmQoKSlyZXR1cm4iTU1NIEQsIFlZWVkgaDptbTpzcy5TU1MgYSI7MD09PXIuc2Vjb25kKCkmJjA9PT1yLm1pbnV0ZSgpJiYwPT09ci5ob3VyKCl8fChpPSEwKX1yZXR1cm4gaT8iTU1NIEQsIFlZWVkgaDptbTpzcyBhIjoiTU1NIEQsIFlZWVkifXQuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPXtwb3NpdGlvbjoiYm90dG9tIixkaXN0cmlidXRpb246ImxpbmVhciIsYm91bmRzOiJkYXRhIix0aW1lOntwYXJzZXI6ITEsZm9ybWF0OiExLHVuaXQ6ITEscm91bmQ6ITEsZGlzcGxheUZvcm1hdDohMSxpc29XZWVrZGF5OiExLG1pblVuaXQ6Im1pbGxpc2Vjb25kIixkaXNwbGF5Rm9ybWF0czp7bWlsbGlzZWNvbmQ6Img6bW06c3MuU1NTIGEiLHNlY29uZDoiaDptbTpzcyBhIixtaW51dGU6Img6bW0gYSIsaG91cjoiaEEiLGRheToiTU1NIEQiLHdlZWs6ImxsIixtb250aDoiTU1NIFlZWVkiLHF1YXJ0ZXI6IltRXVEgLSBZWVlZIix5ZWFyOiJZWVlZIn19LHRpY2tzOnthdXRvU2tpcDohMSxzb3VyY2U6ImF1dG8iLG1ham9yOntlbmFibGVkOiExfX19LHQ9by5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oKXtpZighcil0aHJvdyBuZXcgRXJyb3IoIkNoYXJ0LmpzIC0gTW9tZW50LmpzIGNvdWxkIG5vdCBiZSBmb3VuZCEgWW91IG11c3QgaW5jbHVkZSBpdCBiZWZvcmUgQ2hhcnQuanMgdG8gdXNlIHRoZSB0aW1lIHNjYWxlLiBEb3dubG9hZCBhdCBodHRwczovL21vbWVudGpzLmNvbSIpO3RoaXMubWVyZ2VUaWNrc09wdGlvbnMoKSxvLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyl9LHVwZGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm9wdGlvbnM7cmV0dXJuIHQudGltZSYmdC50aW1lLmZvcm1hdCYmY29uc29sZS53YXJuKCJvcHRpb25zLnRpbWUuZm9ybWF0IGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IG9wdGlvbnMudGltZS5wYXJzZXIuIiksby5wcm90b3R5cGUudXBkYXRlLmFwcGx5KGUsYXJndW1lbnRzKX0sZ2V0UmlnaHRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmdm9pZCAwIT09ZS50JiYoZT1lLnQpLG8ucHJvdG90eXBlLmdldFJpZ2h0VmFsdWUuY2FsbCh0aGlzLGUpfSxkZXRlcm1pbmVEYXRhTGltaXRzOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLGksbyxzLHU9dGhpcyxkPXUuY2hhcnQsaD11Lm9wdGlvbnMudGltZSxtPWgudW5pdHx8ImRheSIsXz1sLGc9Yyx5PVtdLGI9W10sdz1bXTtmb3IoZT0wLG49ZC5kYXRhLmxhYmVscy5sZW5ndGg7ZTxuOysrZSl3LnB1c2godihkLmRhdGEubGFiZWxzW2VdLHUpKTtmb3IoZT0wLG49KGQuZGF0YS5kYXRhc2V0c3x8W10pLmxlbmd0aDtlPG47KytlKWlmKGQuaXNEYXRhc2V0VmlzaWJsZShlKSlpZihvPWQuZGF0YS5kYXRhc2V0c1tlXS5kYXRhLGEuaXNPYmplY3Qob1swXSkpZm9yKGJbZV09W10sdD0wLGk9by5sZW5ndGg7dDxpOysrdClzPXYob1t0XSx1KSx5LnB1c2gocyksYltlXVt0XT1zO2Vsc2UgeS5wdXNoLmFwcGx5KHksdyksYltlXT13LnNsaWNlKDApO2Vsc2UgYltlXT1bXTt3Lmxlbmd0aCYmKHc9Zih3KS5zb3J0KHApLF89TWF0aC5taW4oXyx3WzBdKSxnPU1hdGgubWF4KGcsd1t3Lmxlbmd0aC0xXSkpLHkubGVuZ3RoJiYoeT1mKHkpLnNvcnQocCksXz1NYXRoLm1pbihfLHlbMF0pLGc9TWF0aC5tYXgoZyx5W3kubGVuZ3RoLTFdKSksXz12KGgubWluLHUpfHxfLGc9dihoLm1heCx1KXx8ZyxfPV89PT1sPytyKCkuc3RhcnRPZihtKTpfLGc9Zz09PWM/K3IoKS5lbmRPZihtKSsxOmcsdS5taW49TWF0aC5taW4oXyxnKSx1Lm1heD1NYXRoLm1heChfKzEsZyksdS5faG9yaXpvbnRhbD11LmlzSG9yaXpvbnRhbCgpLHUuX3RhYmxlPVtdLHUuX3RpbWVzdGFtcHM9e2RhdGE6eSxkYXRhc2V0czpiLGxhYmVsczp3fX0sYnVpbGRUaWNrczpmdW5jdGlvbigpe3ZhciBlLHQsbixyPXRoaXMsaT1yLm1pbixhPXIubWF4LG89ci5vcHRpb25zLHM9by50aW1lLGM9W10sbD1bXTtzd2l0Y2goby50aWNrcy5zb3VyY2Upe2Nhc2UiZGF0YSI6Yz1yLl90aW1lc3RhbXBzLmRhdGE7YnJlYWs7Y2FzZSJsYWJlbHMiOmM9ci5fdGltZXN0YW1wcy5sYWJlbHM7YnJlYWs7Y2FzZSJhdXRvIjpkZWZhdWx0OmM9ayhpLGEsci5nZXRMYWJlbENhcGFjaXR5KGkpLG8pfWZvcigidGlja3MiPT09by5ib3VuZHMmJmMubGVuZ3RoJiYoaT1jWzBdLGE9Y1tjLmxlbmd0aC0xXSksaT12KHMubWluLHIpfHxpLGE9dihzLm1heCxyKXx8YSxlPTAsdD1jLmxlbmd0aDtlPHQ7KytlKW49Y1tlXSxuPj1pJiZuPD1hJiZsLnB1c2gobik7cmV0dXJuIHIubWluPWksci5tYXg9YSxyLl91bml0PXMudW5pdHx8dyhsLHMubWluVW5pdCxyLm1pbixyLm1heCksci5fbWFqb3JVbml0PXgoci5fdW5pdCksci5fdGFibGU9aChyLl90aW1lc3RhbXBzLmRhdGEsaSxhLG8uZGlzdHJpYnV0aW9uKSxyLl9vZmZzZXRzPUMoci5fdGFibGUsbCxpLGEsbyksci5fbGFiZWxGb3JtYXQ9UChyLl90aW1lc3RhbXBzLmRhdGEscyksUyhsLHIuX21ham9yVW5pdCl9LGdldExhYmVsRm9ySW5kZXg6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9bi5jaGFydC5kYXRhLGk9bi5vcHRpb25zLnRpbWUsbz1yLmxhYmVscyYmZTxyLmxhYmVscy5sZW5ndGg/ci5sYWJlbHNbZV06IiIscz1yLmRhdGFzZXRzW3RdLmRhdGFbZV07cmV0dXJuIGEuaXNPYmplY3QocykmJihvPW4uZ2V0UmlnaHRWYWx1ZShzKSksaS50b29sdGlwRm9ybWF0P2cobyxpKS5mb3JtYXQoaS50b29sdGlwRm9ybWF0KToic3RyaW5nIj09PXR5cGVvZiBvP286ZyhvLGkpLmZvcm1hdChuLl9sYWJlbEZvcm1hdCl9LHRpY2tGb3JtYXRGdW5jdGlvbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLG89aS5vcHRpb25zLHM9ZS52YWx1ZU9mKCksYz1vLnRpbWUuZGlzcGxheUZvcm1hdHMsbD1jW2kuX3VuaXRdLHU9aS5fbWFqb3JVbml0LGQ9Y1t1XSxwPWUuY2xvbmUoKS5zdGFydE9mKHUpLnZhbHVlT2YoKSxmPW8udGlja3MubWFqb3IsaD1mLmVuYWJsZWQmJnUmJmQmJnM9PT1wLG09ZS5mb3JtYXQocnx8KGg/ZDpsKSksXz1oP2Y6by50aWNrcy5taW5vcixnPWEudmFsdWVPckRlZmF1bHQoXy5jYWxsYmFjayxfLnVzZXJDYWxsYmFjayk7cmV0dXJuIGc/ZyhtLHQsbik6bX0sY29udmVydFRpY2tzVG9MYWJlbHM6ZnVuY3Rpb24oZSl7dmFyIHQsbixpPVtdO2Zvcih0PTAsbj1lLmxlbmd0aDt0PG47Kyt0KWkucHVzaCh0aGlzLnRpY2tGb3JtYXRGdW5jdGlvbihyKGVbdF0udmFsdWUpLHQsZSkpO3JldHVybiBpfSxnZXRQaXhlbEZvck9mZnNldDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5faG9yaXpvbnRhbD90LndpZHRoOnQuaGVpZ2h0LHI9dC5faG9yaXpvbnRhbD90LmxlZnQ6dC50b3AsaT1fKHQuX3RhYmxlLCJ0aW1lIixlLCJwb3MiKTtyZXR1cm4gcituKih0Ll9vZmZzZXRzLmxlZnQraSkvKHQuX29mZnNldHMubGVmdCsxK3QuX29mZnNldHMucmlnaHQpfSxnZXRQaXhlbEZvclZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLGk9bnVsbDtpZih2b2lkIDAhPT10JiZ2b2lkIDAhPT1uJiYoaT1yLl90aW1lc3RhbXBzLmRhdGFzZXRzW25dW3RdKSxudWxsPT09aSYmKGk9dihlLHIpKSxudWxsIT09aSlyZXR1cm4gci5nZXRQaXhlbEZvck9mZnNldChpKX0sZ2V0UGl4ZWxGb3JUaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0VGlja3MoKTtyZXR1cm4gZT49MCYmZTx0Lmxlbmd0aD90aGlzLmdldFBpeGVsRm9yT2Zmc2V0KHRbZV0udmFsdWUpOm51bGx9LGdldFZhbHVlRm9yUGl4ZWw6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQuX2hvcml6b250YWw/dC53aWR0aDp0LmhlaWdodCxpPXQuX2hvcml6b250YWw/dC5sZWZ0OnQudG9wLGE9KG4/KGUtaSkvbjowKSoodC5fb2Zmc2V0cy5sZWZ0KzErdC5fb2Zmc2V0cy5sZWZ0KS10Ll9vZmZzZXRzLnJpZ2h0LG89Xyh0Ll90YWJsZSwicG9zIixhLCJ0aW1lIik7cmV0dXJuIHIobyl9LGdldExhYmVsV2lkdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQub3B0aW9ucy50aWNrcyxyPXQuY3R4Lm1lYXN1cmVUZXh0KGUpLndpZHRoLG89YS50b1JhZGlhbnMobi5tYXhSb3RhdGlvbikscz1NYXRoLmNvcyhvKSxjPU1hdGguc2luKG8pLGw9YS52YWx1ZU9yRGVmYXVsdChuLmZvbnRTaXplLGkuZ2xvYmFsLmRlZmF1bHRGb250U2l6ZSk7cmV0dXJuIHIqcytsKmN9LGdldExhYmVsQ2FwYWNpdHk6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQub3B0aW9ucy50aW1lLmRpc3BsYXlGb3JtYXRzLm1pbGxpc2Vjb25kLGk9dC50aWNrRm9ybWF0RnVuY3Rpb24ocihlKSwwLFtdLG4pLGE9dC5nZXRMYWJlbFdpZHRoKGkpLG89dC5pc0hvcml6b250YWwoKT90LndpZHRoOnQuaGVpZ2h0LHM9TWF0aC5mbG9vcihvL2EpO3JldHVybiBzPjA/czoxfX0pO3MucmVnaXN0ZXJTY2FsZVR5cGUoInRpbWUiLHQsZSl9fSx7MToxLDI2OjI2LDMzOjMzLDM0OjM0LDQ2OjQ2fV19LHt9LFs3XSkoNyl9KSl9LCIzMGYxIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImI4ZTMiKSxpPW4oIjYzYjYiKSxhPW4oIjkxMzgiKSxvPW4oIjM1ZTgiKSxzPW4oIjQ4MWIiKSxjPW4oIjhmNjAiKSxsPW4oIjQ1ZjIiKSx1PW4oIjUzZTIiKSxkPW4oIjUxNjgiKSgiaXRlcmF0b3IiKSxwPSEoW10ua2V5cyYmIm5leHQiaW5bXS5rZXlzKCkpLGY9IkBAaXRlcmF0b3IiLGg9ImtleXMiLG09InZhbHVlcyIsXz1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4sZyx2LHksYil7YyhuLHQsZyk7dmFyIHcseCxrLEM9ZnVuY3Rpb24oZSl7aWYoIXAmJmUgaW4gQSlyZXR1cm4gQVtlXTtzd2l0Y2goZSl7Y2FzZSBoOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLGUpfTtjYXNlIG06cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLGUpfX0sUz10KyIgSXRlcmF0b3IiLFA9dj09bSxNPSExLEE9ZS5wcm90b3R5cGUsTz1BW2RdfHxBW2ZdfHx2JiZBW3ZdLEQ9T3x8Qyh2KSxUPXY/UD9DKCJlbnRyaWVzIik6RDp2b2lkIDAsST0iQXJyYXkiPT10JiZBLmVudHJpZXN8fE87aWYoSSYmKGs9dShJLmNhbGwobmV3IGUpKSxrIT09T2JqZWN0LnByb3RvdHlwZSYmay5uZXh0JiYobChrLFMsITApLHJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBrW2RdfHxvKGssZCxfKSkpLFAmJk8mJk8ubmFtZSE9PW0mJihNPSEwLEQ9ZnVuY3Rpb24oKXtyZXR1cm4gTy5jYWxsKHRoaXMpfSksciYmIWJ8fCFwJiYhTSYmQVtkXXx8byhBLGQsRCksc1t0XT1ELHNbU109Xyx2KWlmKHc9e3ZhbHVlczpQP0Q6QyhtKSxrZXlzOnk/RDpDKGgpLGVudHJpZXM6VH0sYilmb3IoeCBpbiB3KXggaW4gQXx8YShBLHgsd1t4XSk7ZWxzZSBpKGkuUCtpLkYqKHB8fE0pLHQsdyk7cmV0dXJuIHd9fSwiMzJlOSI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjg2Y2MiKSxpPW4oIjQ2MzAiKTtlLmV4cG9ydHM9bigiOWUxZSIpP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gci5mKGUsdCxpKDEsbikpfTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGVbdF09bixlfX0sIjMyZmMiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJlNTNkIikuZG9jdW1lbnQ7ZS5leHBvcnRzPXImJnIuZG9jdW1lbnRFbGVtZW50fSwiMzM1YyI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjZiNGMiKTtlLmV4cG9ydHM9T2JqZWN0KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCk/T2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiJTdHJpbmciPT1yKGUpP2Uuc3BsaXQoIiIpOk9iamVjdChlKX19LDM1MDQ6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IuaAu+W4guWAvOaOkuWQjSIsIm1jYXAiOiLmgLvluILlgLwiLCIyNGhfdm9sdW1lIjoiMjQg5bCP5pe25Lqk5piT6YePIiwiMjRoX2hpZ2hfbG93IjoiMjTlsI/ml7bpq5gv5L2OIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IueUsSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOaUr+aMgSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoi5Yqg5a+G5Lu35qC85q+U6L6DIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IuWKoOWvhui0p+W4geW4guWAvOavlOi+gyJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IueUsSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOaUr+aMgSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0IOWwj+aXtuacgOmrmOS7t+agvCIsIjI0aF9sb3ciOiIyNCDlsI/ml7bmnIDkvY7ku7fmoLwiLCJ2aWV3X3ByaWNlX2NoYXJ0Ijoi5p+l55yLICV7Y29pbn0g5Lu35qC86LWw5Yq/5Zu+IiwicG93ZXJlZF9ieSI6IueUsSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOaUr+aMgSJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLnlLEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDmlK/mjIEifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi55SxICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g5pSv5oyBIn0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLnlLEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDmlK/mjIEifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjQg5bCP5pe25pyA6auY5Lu35qC8IiwiMjRoX2xvdyI6IjI0IOWwj+aXtuacgOS9juS7t+agvCIsInZpZXdfcHJpY2VfY2hhcnQiOiLmn6XnnIsgJXtjb2lufSDku7fmoLzotbDlir/lm74iLCJwb3dlcmVkX2J5Ijoi55SxICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g5pSv5oyBIn0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0Ijoi5p+l55yLICV7Y29pbn0g5Lu35qC86LWw5Yq/5Zu+IiwicG93ZXJlZF9ieSI6IueUsSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOaUr+aMgSJ9LCJjb2luX2hlYXRtYXBfd2lkZ2V0Ijp7InRpdGxlIjoi5Yqg5a+G6LSn5biB5qCR5Z6L5Zu+Iiwic3VidGl0bGUiOiLvvIjluILlgLzmjpLlkI3liY0le3RvcH3vvIkiLCJwb3dlcmVkX2J5Ijoi55SxICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g5pSv5oyBIn0sInJhbmRvbV9jb2luX3dpZGdldCI6eyJkaXNjbGFpbWVyIjoi5YWN6LSj5aOw5piO77ya5q2k5bel5YW35LuF55So5LqO5aix5LmQ55uu55qE77yM5LiN5p6E5oiQ5Lu75L2V6YeR6J6N5bu66K6u44CCIiwic3BpbiI6IlNwaW4iLCJhdmFpbGFibGVfY29pbnMiOiLlj6/nlKjku6PluIEifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJDb2luR2Vja28g5Lu35qC85pu05pawIiwidG90YWxfbWNhcCI6IuaAu+W4guWAvCIsIjI0aF92b2wiOiIyNOWwj+aXtuS6pOaYk+mHjyIsImRvbSI6IuW4guWNoOeOhyJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiLkuqTmmJPmiYAiLCJwYWlyIjoi6LSn5biB57uE5ZCIIiwicHJpY2UiOiLku7fmoLwiLCJ2b2x1bWUiOiLkuqTmmJPph48iLCJ0cnVzdF9zY29yZSI6IuS/oeeUqOivhOWIhiIsInZpZXdfcHJpY2VfY2hhcnQiOiLmn6XnnIvku7fmoLzotbDlir/lm74iLCJwb3dlcmVkX2J5Ijoi55SxICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g5pSv5oyBIiwidmlld19hbGwiOiLmn6XnnIvmiYDmnIkgJXtjb2lufSDluILlnLoifX0nKX0sIjM1NWQiOmZ1bmN0aW9uKGUsdCl7dC5mPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlfSwiMzVlOCI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImQ5ZjYiKSxpPW4oImFlYmQiKTtlLmV4cG9ydHM9bigiOGU2MCIpP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gci5mKGUsdCxpKDEsbikpfTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGVbdF09bixlfX0sIjM2YzMiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCIzMzVjIiksaT1uKCIyNWViIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGkoZSkpfX0sMzg0NjpmdW5jdGlvbihlLHQsbil7bigiOWUxZSIpJiYiZyIhPS8uL2cuZmxhZ3MmJm4oIjg2Y2MiKS5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpuKCIwYmZiIil9KX0sIjM4ZmQiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI2OWE4IiksaT1uKCI0YmY4IiksYT1uKCI2MTNiIikoIklFX1BST1RPIiksbz1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUpe3JldHVybiBlPWkoZSkscihlLGEpP2VbYV06ImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3ImJmUgaW5zdGFuY2VvZiBlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IucHJvdG90eXBlOmUgaW5zdGFuY2VvZiBPYmplY3Q/bzpudWxsfX0sIjNhMzgiOmZ1bmN0aW9uKGUsdCl7dmFyIG49TWF0aC5jZWlsLHI9TWF0aC5mbG9vcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGlzTmFOKGU9K2UpPzA6KGU+MD9yOm4pKGUpfX0sIjNkYTkiOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJQb3JhZGllIHRyaG92ZWoga2FwaXRhbGl6w6FjaWUiLCJtY2FwIjoiVHJob3bDoSBrYXBpdGFsaXrDoWNpYSIsIjI0aF92b2x1bWUiOiJPYmplbSB6YSAyNEgiLCIyNGhfaGlnaF9sb3ciOiIyNEggdnlzb2vDoS9uw616a2EifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUG9ow6HFiGFuw6kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiUG9yb3ZuYW5pZSBjaWVuIGtyeXB0b21pZW4iLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiUG9yb3ZuYW5pZSB0cmhvdmVqIGthcGl0YWxpesOhY2llIGtyeXB0b21pZW4ifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQb2jDocWIYW7DqSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjRIIHZ5c29rw6EiLCIyNGhfbG93IjoiMjRIIG7DrXprYSIsInZpZXdfcHJpY2VfY2hhcnQiOiJab2JyYXppxaUgY2Vub3bDvSBncmFmIHByZSAle2NvaW59IiwicG93ZXJlZF9ieSI6IlBvaMOhxYhhbsOpICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUG9ow6HFiGFuw6kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQb2jDocWIYW7DqSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQb2jDocWIYW7DqSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0SCB2eXNva8OhIiwiMjRoX2xvdyI6IjI0SCBuw616a2EiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiWm9icmF6acWlIGNlbm92w70gZ3JhZiBwcmUgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJQb2jDocWIYW7DqSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiWm9icmF6acWlIGNlbm92w70gZ3JhZiBwcmUgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJQb2jDocWIYW7DqSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJNYXBhIGtyeXB0b21pZW4iLCJzdWJ0aXRsZSI6IihUb3AgJXt0b3B9IHBvZMS+YSB0cmhvdmVqIGthcCkiLCJwb3dlcmVkX2J5IjoiUG9ow6HFiGFuw6kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IlpyaWVrbnV0aWUgc2Egem9kcG92ZWRub3N0aTogVGVudG8gbsOhc3Ryb2ogc2zDusW+aWEgbmEgesOhYmF2dSBhIG5lcHJlZHN0YXZ1asO6IGZpbmFuxI1uw6kgcG9yYWRlbnN0dm8uIiwic3BpbiI6IlRvxI1pxaUiLCJhdmFpbGFibGVfY29pbnMiOiJEb3N0dXBuw6kgY29pbnkifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJBa3R1YWxpesOhY2lhIGNlbnkgQ29pbkdlY2tvIiwidG90YWxfbWNhcCI6IkNlbGtvdsOhIHRyaC4ga2FwLiIsIjI0aF92b2wiOiJPYmplbSB6YSAyNGgiLCJkb20iOiJEb21pbmFuY2lhIn0sImNvaW5fbWFya2V0X3RpY2tlcl9saXN0X3dpZGdldCI6eyJleGNoYW5nZSI6IkJ1cnphIiwicGFpciI6IlDDoXIiLCJwcmljZSI6IkNlbmEiLCJ2b2x1bWUiOiJPYmplbSIsInRydXN0X3Njb3JlIjoiU2vDs3JlIGTDtHZlcnlob2Rub3N0aSIsInZpZXdfcHJpY2VfY2hhcnQiOiJab2JyYXppxaUgY2Vub3bDvSBncmFmIiwicG93ZXJlZF9ieSI6IlBvaMOhxYhhbsOpICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6IlpvYnJhemnFpSB2xaFldGt5IHRyaHkgJXtjb2lufSJ9fScpfSwiNDBjMyI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjZiNGMiKSxpPW4oIjUxNjgiKSgidG9TdHJpbmdUYWciKSxhPSJBcmd1bWVudHMiPT1yKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSksbz1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChuKXt9fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQsbixzO3JldHVybiB2b2lkIDA9PT1lPyJVbmRlZmluZWQiOm51bGw9PT1lPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKG49byh0PU9iamVjdChlKSxpKSk/bjphP3IodCk6Ik9iamVjdCI9PShzPXIodCkpJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5jYWxsZWU/IkFyZ3VtZW50cyI6c319LCI0MWEwIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjJhZWIiKSxpPW4oIjQ2MzAiKSxhPW4oIjdmMjAiKSxvPXt9O24oIjMyZTkiKShvLG4oIjJiNGMiKSgiaXRlcmF0b3IiKSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe2UucHJvdG90eXBlPXIobyx7bmV4dDppKDEsbil9KSxhKGUsdCsiIEl0ZXJhdG9yIil9fSw0MzYyOmZ1bmN0aW9uKGUsdCxuKXt0Lm5leHRUaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7dC5zaGlmdCgpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5hcHBseShudWxsLHQpfSksMCl9LHQucGxhdGZvcm09dC5hcmNoPXQuZXhlY1BhdGg9dC50aXRsZT0iYnJvd3NlciIsdC5waWQ9MSx0LmJyb3dzZXI9ITAsdC5lbnY9e30sdC5hcmd2PVtdLHQuYmluZGluZz1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIk5vIHN1Y2ggbW9kdWxlLiAoUG9zc2libHkgbm90IHlldCBsb2FkZWQpIil9LGZ1bmN0aW9uKCl7dmFyIGUscj0iLyI7dC5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4gcn0sdC5jaGRpcj1mdW5jdGlvbih0KXtlfHwoZT1uKCJkZjdjIikpLHI9ZS5yZXNvbHZlKHQscil9fSgpLHQuZXhpdD10LmtpbGw9dC51bWFzaz10LmRsb3Blbj10LnVwdGltZT10Lm1lbW9yeVVzYWdlPXQudXZDb3VudGVycz1mdW5jdGlvbigpe30sdC5mZWF0dXJlcz17fX0sNDU4ODpmdW5jdGlvbihlLHQpe3ZhciBuPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpc05hTihlPStlKT8wOihlPjA/cjpuKShlKX19LCI0NWYyIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiZDlmNiIpLmYsaT1uKCIwN2UzIiksYT1uKCI1MTY4IikoInRvU3RyaW5nVGFnIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtlJiYhaShlPW4/ZTplLnByb3RvdHlwZSxhKSYmcihlLGEse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTp0fSl9fSw0NjAxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODNjMiIpLGk9cigiJVR5cGVFcnJvciUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXRocm93IG5ldyBpKHR8fCJDYW5ub3QgY2FsbCBtZXRob2Qgb24gIitlKTtyZXR1cm4gZX19LDQ2MzA6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEmZSksY29uZmlndXJhYmxlOiEoMiZlKSx3cml0YWJsZTohKDQmZSksdmFsdWU6dH19fSwiNDY5ZiI6ZnVuY3Rpb24oZSx0LG4pe24oIjZjMWMiKSxuKCIxNjU0IiksZS5leHBvcnRzPW4oIjdkN2IiKX0sIjQ3ZWUiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJjM2ExIiksaT1uKCI5YWE5IiksYT1uKCIzNTVkIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXIoZSksbj1pLmY7aWYobil7dmFyIG8scz1uKGUpLGM9YS5mLGw9MDt3aGlsZShzLmxlbmd0aD5sKWMuY2FsbChlLG89c1tsKytdKSYmdC5wdXNoKG8pfXJldHVybiB0fX0sIjQ4MWIiOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXt9fSw0OTE3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2I3YyIpLGk9bigiOWRlZiIpLGE9bigiMDM5MCIpLG89bigiNWYxYiIpO24oIjIxNGYiKSgibWF0Y2giLDEsKGZ1bmN0aW9uKGUsdCxuLHMpe3JldHVybltmdW5jdGlvbihuKXt2YXIgcj1lKHRoaXMpLGk9dm9pZCAwPT1uP3ZvaWQgMDpuW3RdO3JldHVybiB2b2lkIDAhPT1pP2kuY2FsbChuLHIpOm5ldyBSZWdFeHAobilbdF0oU3RyaW5nKHIpKX0sZnVuY3Rpb24oZSl7dmFyIHQ9cyhuLGUsdGhpcyk7aWYodC5kb25lKXJldHVybiB0LnZhbHVlO3ZhciBjPXIoZSksbD1TdHJpbmcodGhpcyk7aWYoIWMuZ2xvYmFsKXJldHVybiBvKGMsbCk7dmFyIHU9Yy51bmljb2RlO2MubGFzdEluZGV4PTA7dmFyIGQscD1bXSxmPTA7d2hpbGUobnVsbCE9PShkPW8oYyxsKSkpe3ZhciBoPVN0cmluZyhkWzBdKTtwW2ZdPWgsIiI9PT1oJiYoYy5sYXN0SW5kZXg9YShsLGkoYy5sYXN0SW5kZXgpLHUpKSxmKyt9cmV0dXJuIDA9PT1mP251bGw6cH1dfSkpfSwiNGJmOCI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImJlMTMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdChyKGUpKX19LCI0YzViIjpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJjb2luX2RldGFpbHMiOnsibWNhcF9yYW5rIjoiQsO2cnN2w6RyZGVzcmFua25pbmciLCJtY2FwIjoiQsO2cnN2w6RyZGUiLCIyNGhfdm9sdW1lIjoiVm9seW0gMjQgaCIsIjI0aF9oaWdoX2xvdyI6IjI0SCBow7Znc3QvbMOkZ3N0YSJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEcml2cyBhdiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJKw6RtZsO2cmVsc2UgYXYga3J5cHRvcHJpc2VyIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IkrDpG1mw7ZyZWxzZSBhdiBrcnlwdG9iw7Zyc3bDpHJkZSJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IkRyaXZzIGF2ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNCBoIGjDtmdzdGEiLCIyNGhfbG93IjoiMjRoIGzDpGdzdGEiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmlzYSBwcmlzbGlzdGEgZsO2ciAle2NvaW59IiwicG93ZXJlZF9ieSI6IkRyaXZzIGF2ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiRHJpdnMgYXYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEcml2cyBhdiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEcml2cyBhdiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0IGggaMO2Z3N0YSIsIjI0aF9sb3ciOiIyNGggbMOkZ3N0YSIsInZpZXdfcHJpY2VfY2hhcnQiOiJWaXNhIHByaXNsaXN0YSBmw7ZyICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiRHJpdnMgYXYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6IlZpc2EgcHJpc2xpc3RhIGbDtnIgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJEcml2cyBhdiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJUcsOkZGthcnRhIMO2dmVyIGtyeXB0b3ZhbHV0b3IiLCJzdWJ0aXRsZSI6Iigle3RvcH0gaSB0b3BwIGVmdGVyIGLDtnJzdsOkcmRlKSIsInBvd2VyZWRfYnkiOiJEcml2cyBhdiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sInJhbmRvbV9jb2luX3dpZGdldCI6eyJkaXNjbGFpbWVyIjoiT2JzISBEZXNzYSB2ZXJrdHlnIGZ1bmdlcmFyIHNvbSB1bmRlcmjDpWxsbmluZyBvY2ggdXRnw7ZyIGludGUgZmluYW5zaWVsbCByw6VkZ2l2bmluZy4iLCJzcGluIjoiU251cnJhIiwiYXZhaWxhYmxlX2NvaW5zIjoiVGlsbGfDpG5nbGlnYSBteW50In0sImNvaW5fZGFpbHlfcHJpY2Vfd2lkZ2V0Ijp7InRpdGxlIjoiUHJpc3VwcGRhdGVyaW5nIGhvcyBDb2luR2Vja28iLCJ0b3RhbF9tY2FwIjoiVG90YWx0IGLDtnJzdsOkcmRlIiwiMjRoX3ZvbCI6IlZvbHltIDI0IGgiLCJkb20iOiJEb20ifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiSGFuZGVsIiwicGFpciI6IlBhciIsInByaWNlIjoiUHJpcyIsInZvbHVtZSI6IlZvbHltIiwidHJ1c3Rfc2NvcmUiOiJGw7ZydHJvZW5kZWJldHlnIiwidmlld19wcmljZV9jaGFydCI6IlZpc2EgcHJpc3RhYmVsbCIsInBvd2VyZWRfYnkiOiJEcml2cyBhdiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiJWaXNhIGFsbGEgJXtjb2lufS1tYXJrbmFkZXIifX0nKX0sIjRkMDEiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMGY3YyIpLGk9bigiODNjMiIpLGE9aSgiJUZ1bmN0aW9uJSIpLG89YS5hcHBseSxzPWEuY2FsbDtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseShzLGFyZ3VtZW50cyl9LGUuZXhwb3J0cy5hcHBseT1mdW5jdGlvbigpe3JldHVybiByLmFwcGx5KG8sYXJndW1lbnRzKX19LCI0ZTczIjpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJjb2luX2RldGFpbHMiOnsibWNhcF9yYW5rIjoiS2FwaXRhbGl6w6FjacOzcyByYW5nIiwibWNhcCI6IlBpYWNpIGthcGl0YWxpesOhY2nDsyIsIjI0aF92b2x1bWUiOiIyNCDDs3LDoXMgZm9yZ2Fsb20iLCIyNGhfaGlnaF9sb3ciOiIyNCDDs3LDoXMgbWF4aW11bS9taW5pbXVtIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IkEoeikgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSBqw7N2b2x0w6Fiw7NsIiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJLcmlwdG/DoXJmb2x5YW1vayDDtnNzemVoYXNvbmzDrXTDoXNhIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IktyaXB0b3BpYWNpIGthcGl0YWxpesOhY2nDsyDDtnNzemVoYXNvbmzDrXTDoXNhIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiQSh6KSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IGrDs3ZvbHTDoWLDs2wifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNCDDs3LDoXMgbWF4aW11bSIsIjI0aF9sb3ciOiIyNCDDs3LDoXMgbWluaW11bSIsInZpZXdfcHJpY2VfY2hhcnQiOiIle2NvaW59LcOhcmZvbHlhbWRpYWdyYW0gbWVndGVraW50w6lzZSIsInBvd2VyZWRfYnkiOiJBKHopICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gasOzdm9sdMOhYsOzbCJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJBKHopICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gasOzdm9sdMOhYsOzbCJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJBKHopICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gasOzdm9sdMOhYsOzbCJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiQSh6KSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IGrDs3ZvbHTDoWLDs2wifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjQgw7Nyw6FzIG1heGltdW0iLCIyNGhfbG93IjoiMjQgw7Nyw6FzIG1pbmltdW0iLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufS3DoXJmb2x5YW1kaWFncmFtIG1lZ3Rla2ludMOpc2UiLCJwb3dlcmVkX2J5IjoiQSh6KSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IGrDs3ZvbHTDoWLDs2wifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiIle2NvaW59LcOhcmZvbHlhbWRpYWdyYW0gbWVndGVraW50w6lzZSIsInBvd2VyZWRfYnkiOiJBKHopICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gasOzdm9sdMOhYsOzbCJ9LCJjb2luX2hlYXRtYXBfd2lkZ2V0Ijp7InRpdGxlIjoiS3JpcHRvZGV2aXrDoWsgZmFzdHJ1a3TDunJhLXTDqXJrw6lwZSIsInN1YnRpdGxlIjoiKEVsc8WRICV7dG9wfSBrYXBpdGFsaXrDoWNpw7MgYWxhcGrDoW4pIiwicG93ZXJlZF9ieSI6IkEoeikgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSBqw7N2b2x0w6Fiw7NsIn0sInJhbmRvbV9jb2luX3dpZGdldCI6eyJkaXNjbGFpbWVyIjoiRmVsZWzFkXNzw6lnaSBueWlsYXRrb3phdDogZXogYXogY3NhayBlc3prw7Z6IHN6w7NyYWtvenRhdMOhc3JhIHN6b2xnw6FsLCBuZW0gbWluxZFzw7xsIHDDqW56w7xneWkgdGFuw6Fjc2Fkw6FzbmFrLiIsInNwaW4iOiJQw7ZyZ2V0w6lzIiwiYXZhaWxhYmxlX2NvaW5zIjoiRWzDqXJoZXTFkSDDqXJtw6lrIn0sImNvaW5fZGFpbHlfcHJpY2Vfd2lkZ2V0Ijp7InRpdGxlIjoiQ29pbkdlY2tvLcOhcmZvbHlhbWZyaXNzw610w6lzIiwidG90YWxfbWNhcCI6IlRlbGplcyBwLiBrYXAuIiwiMjRoX3ZvbCI6IjI0IMOzcsOhcyBmb3JnYWxvbSIsImRvbSI6IkRvbWluYW5jaWEifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiVMWRenNkZSIsInBhaXIiOiJEZXZpemFww6FyIiwicHJpY2UiOiLDgXJmb2x5YW0iLCJ2b2x1bWUiOiJGb3JnYWxvbSIsInRydXN0X3Njb3JlIjoiTWVnYsOtemhhdMOzc8OhZ2kgcG9udHN6w6FtIiwidmlld19wcmljZV9jaGFydCI6IsOBcmZvbHlhbWRpYWdyYW0gbWVndGVraW50w6lzZSIsInBvd2VyZWRfYnkiOiJBKHopICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gasOzdm9sdMOhYsOzbCIsInZpZXdfYWxsIjoiw5Zzc3plcyAle2NvaW59LXBpYWMgbWVndGVraW50w6lzZSJ9fScpfSwiNTBlZCI6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dmFsdWU6dCxkb25lOiEhZX19fSw1MTE4OmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSl7dmFyIHI9InVuZGVmaW5lZCIhPT10eXBlb2YgZSYmZXx8InVuZGVmaW5lZCIhPT10eXBlb2Ygc2VsZiYmc2VsZnx8d2luZG93LGk9RnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5O2Z1bmN0aW9uIGEoZSx0KXt0aGlzLl9pZD1lLHRoaXMuX2NsZWFyRm49dH10LnNldFRpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEoaS5jYWxsKHNldFRpbWVvdXQscixhcmd1bWVudHMpLGNsZWFyVGltZW91dCl9LHQuc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEoaS5jYWxsKHNldEludGVydmFsLHIsYXJndW1lbnRzKSxjbGVhckludGVydmFsKX0sdC5jbGVhclRpbWVvdXQ9dC5jbGVhckludGVydmFsPWZ1bmN0aW9uKGUpe2UmJmUuY2xvc2UoKX0sYS5wcm90b3R5cGUudW5yZWY9YS5wcm90b3R5cGUucmVmPWZ1bmN0aW9uKCl7fSxhLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3RoaXMuX2NsZWFyRm4uY2FsbChyLHRoaXMuX2lkKX0sdC5lbnJvbGw9ZnVuY3Rpb24oZSx0KXtjbGVhclRpbWVvdXQoZS5faWRsZVRpbWVvdXRJZCksZS5faWRsZVRpbWVvdXQ9dH0sdC51bmVucm9sbD1mdW5jdGlvbihlKXtjbGVhclRpbWVvdXQoZS5faWRsZVRpbWVvdXRJZCksZS5faWRsZVRpbWVvdXQ9LTF9LHQuX3VucmVmQWN0aXZlPXQuYWN0aXZlPWZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dChlLl9pZGxlVGltZW91dElkKTt2YXIgdD1lLl9pZGxlVGltZW91dDt0Pj0wJiYoZS5faWRsZVRpbWVvdXRJZD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UuX29uVGltZW91dCYmZS5fb25UaW1lb3V0KCl9KSx0KSl9LG4oIjYwMTciKSx0LnNldEltbWVkaWF0ZT0idW5kZWZpbmVkIiE9PXR5cGVvZiBzZWxmJiZzZWxmLnNldEltbWVkaWF0ZXx8InVuZGVmaW5lZCIhPT10eXBlb2YgZSYmZS5zZXRJbW1lZGlhdGV8fHRoaXMmJnRoaXMuc2V0SW1tZWRpYXRlLHQuY2xlYXJJbW1lZGlhdGU9InVuZGVmaW5lZCIhPT10eXBlb2Ygc2VsZiYmc2VsZi5jbGVhckltbWVkaWF0ZXx8InVuZGVmaW5lZCIhPT10eXBlb2YgZSYmZS5jbGVhckltbWVkaWF0ZXx8dGhpcyYmdGhpcy5jbGVhckltbWVkaWF0ZX0pLmNhbGwodGhpcyxuKCJjOGJhIikpfSw1MTY4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJkYmRiIikoIndrcyIpLGk9bigiNjJhMCIpLGE9bigiZTUzZCIpLlN5bWJvbCxvPSJmdW5jdGlvbiI9PXR5cGVvZiBhLHM9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByW2VdfHwocltlXT1vJiZhW2VdfHwobz9hOmkpKCJTeW1ib2wuIitlKSl9O3Muc3RvcmU9cn0sIjUyMGEiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMGJmYiIpLGk9UmVnRXhwLnByb3RvdHlwZS5leGVjLGE9U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLG89aSxzPSJsYXN0SW5kZXgiLGM9ZnVuY3Rpb24oKXt2YXIgZT0vYS8sdD0vYiovZztyZXR1cm4gaS5jYWxsKGUsImEiKSxpLmNhbGwodCwiYSIpLDAhPT1lW3NdfHwwIT09dFtzXX0oKSxsPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXSx1PWN8fGw7dSYmKG89ZnVuY3Rpb24oZSl7dmFyIHQsbixvLHUsZD10aGlzO3JldHVybiBsJiYobj1uZXcgUmVnRXhwKCJeIitkLnNvdXJjZSsiJCg/IVxccykiLHIuY2FsbChkKSkpLGMmJih0PWRbc10pLG89aS5jYWxsKGQsZSksYyYmbyYmKGRbc109ZC5nbG9iYWw/by5pbmRleCtvWzBdLmxlbmd0aDp0KSxsJiZvJiZvLmxlbmd0aD4xJiZhLmNhbGwob1swXSxuLChmdW5jdGlvbigpe2Zvcih1PTE7dTxhcmd1bWVudHMubGVuZ3RoLTI7dSsrKXZvaWQgMD09PWFyZ3VtZW50c1t1XSYmKG9bdV09dm9pZCAwKX0pKSxvfSksZS5leHBvcnRzPW99LCI1MmE3IjpmdW5jdGlvbihlLHQpe3QuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sNTMwOTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKTt2YXIgcj17Y3VzdG9tRWxlbWVudDp7c3JjOiJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9kb2N1bWVudC1yZWdpc3Rlci1lbGVtZW50LzEuMTEuMS9kb2N1bWVudC1yZWdpc3Rlci1lbGVtZW50LmpzIixpbnRlZ3JpdHk6InNoYTM4NC16QTZWNGNoWUZHZ3NlemgxeUFRenVzMlZOVWN5VHlHSTNOTzdMNXBFaUU4QU9YdjNFQytPUzJDLy83MlZVNk1nIn0sZmV0Y2g6e3NyYzoiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZmV0Y2gvMi4wLjQvZmV0Y2gubWluLmpzIixpbnRlZ3JpdHk6InNoYTM4NC0ya2t1cXdTQ0Z6ZTF5N1VjQWVqVUg2d3QyTXBRNG5hYSsreldQMFN4eVVDL2pud3E5MVNBZmUxNFJBcnVYdG5WIn0sY3NzdmFyOntzcmM6Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vY3NzLXZhcnMtcG9ueWZpbGxAMS4xNi4yIixpbnRlZ3JpdHk6InNoYTM4NC00c1ZWc3RHQVg1RUVIUXp4c2ZmMDVDZWRZNDZVVmpYT01jVTVlbHU5NHZ6dEc1Yk8yVlNBcTY5RDFaUEdQTDVFIn0sY29uZmV0dGk6e3NyYzoiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9jYW52YXMtY29uZmV0dGlAMS45LjMvZGlzdC9jb25mZXR0aS5icm93c2VyLm1pbi5qcyIsaW50ZWdyaXR5OiJzaGEzODQtR3ZKMjRPN0Jwbjd6TG5rVHpLRndhUE8wVWN6MG5uSlJra24yeFMwK1NaOHZ1Q01Zbi9QakMvaCtXSWVobkdTTSJ9fX0sIjUzZTIiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCIwN2UzIiksaT1uKCIyNDFlIiksYT1uKCI1NTU5IikoIklFX1BST1RPIiksbz1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUpe3JldHVybiBlPWkoZSkscihlLGEpP2VbYV06ImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3ImJmUgaW5zdGFuY2VvZiBlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IucHJvdG90eXBlOmUgaW5zdGFuY2VvZiBPYmplY3Q/bzpudWxsfX0sIjU0YTEiOmZ1bmN0aW9uKGUsdCxuKXtuKCI2YzFjIiksbigiMTY1NCIpLGUuZXhwb3J0cz1uKCI5NWQ1Iil9LDU1Mzc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjgzNzgiKSxpPW4oIjc3MjYiKSxhPSJfX2NvcmUtanNfc2hhcmVkX18iLG89aVthXXx8KGlbYV09e30pOyhlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gb1tlXXx8KG9bZV09dm9pZCAwIT09dD90Ont9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246ci52ZXJzaW9uLG1vZGU6bigiMmQwMCIpPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSl9LDU1NTk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImRiZGIiKSgia2V5cyIpLGk9bigiNjJhMCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcltlXXx8KHJbZV09aShlKSl9fSwiNTYyZSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI0NjAxIiksaT1uKCIxMTUzIiksYT1uKCI4YWI1Iiksbz1hKCJTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UiKSxzPS9eW1x4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4QTBcdTE2ODBcdTE4MEVcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDNcdTIwMDRcdTIwMDVcdTIwMDZcdTIwMDdcdTIwMDhcdTIwMDlcdTIwMEFcdTIwMkZcdTIwNUZcdTMwMDBcdTIwMjhcdTIwMjlcdUZFRkZdKy8sYz0vW1x4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4QTBcdTE2ODBcdTE4MEVcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDNcdTIwMDRcdTIwMDVcdTIwMDZcdTIwMDdcdTIwMDhcdTIwMDlcdTIwMEFcdTIwMkZcdTIwNUZcdTMwMDBcdTIwMjhcdTIwMjlcdUZFRkZdKyQvO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPWkocih0aGlzKSk7cmV0dXJuIG8obyhlLHMsIiIpLGMsIiIpfX0sNTc1NDpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJjb2luX2RldGFpbHMiOnsibWNhcF9yYW5rIjoiTWFya2tpbmEtYXJ2b24gc2lqYSIsIm1jYXAiOiJNYXJra2luYS1hcnZvIiwiMjRoX3ZvbHVtZSI6IjI0dCB2b2x5eW1pIiwiMjRoX2hpZ2hfbG93IjoiMjR0IGtvcmtlaW4gLyBhbGluIGhpbnRhIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlBhbHZlbHVuIHRhcmpvYWEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiS3J5cHRvamVuIGhpbm5hbnZlcnRhaWx1IiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IktyeXB0b2plbiBtYXJra2luYS1hcnZvamVuIHZlcnRhaWx1In0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUGFsdmVsdW4gdGFyam9hYSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjR0IEtvcmtlaW4iLCIyNGhfbG93IjoiMjR0IEFsaGFpc2luIiwidmlld19wcmljZV9jaGFydCI6Ik7DpHl0w6Qga29saWtvbiAle2NvaW59IGhpbnRha2FhdmlvIiwicG93ZXJlZF9ieSI6IlBhbHZlbHVuIHRhcmpvYWEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQYWx2ZWx1biB0YXJqb2FhICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUGFsdmVsdW4gdGFyam9hYSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQYWx2ZWx1biB0YXJqb2FhICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjR0IEtvcmtlaW4iLCIyNGhfbG93IjoiMjR0IEFsaGFpc2luIiwidmlld19wcmljZV9jaGFydCI6Ik7DpHl0w6Qga29saWtvbiAle2NvaW59IGhpbnRha2FhdmlvIiwicG93ZXJlZF9ieSI6IlBhbHZlbHVuIHRhcmpvYWEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6Ik7DpHl0w6Qga29saWtvbiAle2NvaW59IGhpbnRha2FhdmlvIiwicG93ZXJlZF9ieSI6IlBhbHZlbHVuIHRhcmpvYWEgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2hlYXRtYXBfd2lkZ2V0Ijp7InRpdGxlIjoiS3J5cHRvdmFsdXV0dG9qZW4gcHV1a2FhdmlvIiwic3VidGl0bGUiOiIoUGFyaGFhdCAle3RvcH0gbWFya2tpbmEtYXJ2b24gbXVrYWFuKSIsInBvd2VyZWRfYnkiOiJQYWx2ZWx1biB0YXJqb2FhICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJWYXN0dXV2YXBhdXNsYXVzZWtlOiBUw6Rtw6QgdHnDtmthbHUgb24gdGFya29pdGV0dHUgdmlpaGRla8OkeXR0w7bDtm4sIGphIHNlbiBzaXPDpGx0w7YgZWkgb2xlIHRhbG91ZGVsbGlzdGEgbmV1dm9udGFhLiIsInNwaW4iOiJQecO2csOkeXTDpCIsImF2YWlsYWJsZV9jb2lucyI6IlNhYXRhdmlsbGEgb2xldmF0IGtvbGlrb3QifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJDb2luR2Vja28gaGlubmFucMOkaXZpdHlzIiwidG90YWxfbWNhcCI6Iktva29uYWlzbWFya2tpbmEtYXJ2byIsIjI0aF92b2wiOiIyNCB0dW5uaW4gdm9seXltaSIsImRvbSI6IkRvbWluYW5zc2kifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiS3J5cHRvcMO2cnNzaSIsInBhaXIiOiJQYXJpIiwicHJpY2UiOiJIaW50YSIsInZvbHVtZSI6IlZvbHl5bWkiLCJ0cnVzdF9zY29yZSI6IlRydXN0IFNjb3JlIiwidmlld19wcmljZV9jaGFydCI6Ik7DpHl0w6QgaGludGFrYWF2aW8iLCJwb3dlcmVkX2J5IjoiUGFsdmVsdW4gdGFyam9hYSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiJOw6R5dMOkIGthaWtraSAle2NvaW59IG1hcmtraW5hdCJ9fScpfSwiNTg0YSI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmV4cG9ydHM9e3ZlcnNpb246IjIuNi4xMSJ9OyJudW1iZXIiPT10eXBlb2YgX19lJiYoX19lPW4pfSwiNWI0ZSI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjM2YzMiKSxpPW4oImI0NDciKSxhPW4oIjBmYzkiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixvKXt2YXIgcyxjPXIodCksbD1pKGMubGVuZ3RoKSx1PWEobyxsKTtpZihlJiZuIT1uKXt3aGlsZShsPnUpaWYocz1jW3UrK10scyE9cylyZXR1cm4hMH1lbHNlIGZvcig7bD51O3UrKylpZigoZXx8dSBpbiBjKSYmY1t1XT09PW4pcmV0dXJuIGV8fHV8fDA7cmV0dXJuIWUmJi0xfX19LCI1Y2ExIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiNzcyNiIpLGk9bigiODM3OCIpLGE9bigiMzJlOSIpLG89bigiMmFiYSIpLHM9bigiOWI0MyIpLGM9InByb3RvdHlwZSIsbD1mdW5jdGlvbihlLHQsbil7dmFyIHUsZCxwLGYsaD1lJmwuRixtPWUmbC5HLF89ZSZsLlMsZz1lJmwuUCx2PWUmbC5CLHk9bT9yOl8/clt0XXx8KHJbdF09e30pOihyW3RdfHx7fSlbY10sYj1tP2k6aVt0XXx8KGlbdF09e30pLHc9YltjXXx8KGJbY109e30pO2Zvcih1IGluIG0mJihuPXQpLG4pZD0haCYmeSYmdm9pZCAwIT09eVt1XSxwPShkP3k6bilbdV0sZj12JiZkP3MocCxyKTpnJiYiZnVuY3Rpb24iPT10eXBlb2YgcD9zKEZ1bmN0aW9uLmNhbGwscCk6cCx5JiZvKHksdSxwLGUmbC5VKSxiW3VdIT1wJiZhKGIsdSxmKSxnJiZ3W3VdIT1wJiYod1t1XT1wKX07ci5jb3JlPWksbC5GPTEsbC5HPTIsbC5TPTQsbC5QPTgsbC5CPTE2LGwuVz0zMixsLlU9NjQsbC5SPTEyOCxlLmV4cG9ydHM9bH0sIjVkNTgiOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigiZDhkNiIpfSwiNWQ2NyI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IkNsYXNzaWZpY2HDp8OjbyBkYSBjYXBpdGFsaXphw6fDo28gZGUgbWVyY2FkbyIsIm1jYXAiOiJDYXBpdGFsaXphw6fDo28gZGUgbWVyY2FkbyIsIjI0aF92b2x1bWUiOiJWb2x1bWUgZW0gMjQgSCIsIjI0aF9oaWdoX2xvdyI6IjI0SCBBbHRhL0JhaXhhIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IkRlc2Vudm9sdmlkbyBwb3IgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiQ29tcGFyYcOnw6NvIGRlIFByZcOnb3MgZGUgQ3JpcHRvIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IkNvbXBhcmHDp8OjbyBkZSBDYXBpdGFsaXphw6fDo28gZGUgTWVyY2FkbyBkZSBDcmlwdG8ifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEZXNlbnZvbHZpZG8gcG9yICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiJBbHRhIGRlIDI0IGgiLCIyNGhfbG93IjoiQmFpeGEgZGUgMjQgaCIsInZpZXdfcHJpY2VfY2hhcnQiOiJWZXIgR3LDoWZpY28gZGUgUHJlw6dvcyAle2NvaW59IiwicG93ZXJlZF9ieSI6IkRlc2Vudm9sdmlkbyBwb3IgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEZXNlbnZvbHZpZG8gcG9yICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiRGVzZW52b2x2aWRvIHBvciAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEZXNlbnZvbHZpZG8gcG9yICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiQWx0YSBkZSAyNCBoIiwiMjRoX2xvdyI6IkJhaXhhIGRlIDI0IGgiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmVyIEdyw6FmaWNvIGRlIFByZcOnb3MgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJEZXNlbnZvbHZpZG8gcG9yICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJWZXIgR3LDoWZpY28gZGUgUHJlw6dvcyAle2NvaW59IiwicG93ZXJlZF9ieSI6IkRlc2Vudm9sdmlkbyBwb3IgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2hlYXRtYXBfd2lkZ2V0Ijp7InRpdGxlIjoiTWFwYSBkZSDDoXJ2b3JlIGRlIGNyaXB0b21vZWRhcyIsInN1YnRpdGxlIjoiKFByaW5jaXBhaXMgJXt0b3B9IE1vZWRhcyBwb3IgQ2FwaXRhbGl6YcOnw6NvIGRlIE1lcmNhZG8pIiwicG93ZXJlZF9ieSI6IkRlc2Vudm9sdmlkbyBwb3IgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IkF0ZW7Dp8OjbzogRXN0YXMgZmVycmFtZW50YXMgc8OjbyBwYXJhIGZpbnMgZGUgZW50cmV0ZW5pbWVudG8gZSBuw6NvIGNvbnN0aXR1ZW0gY29uc2VsaG9zIGZpbmFuY2Vpcm9zLiIsInNwaW4iOiJHaXJhciIsImF2YWlsYWJsZV9jb2lucyI6Ik1vZWRhcyBEaXNwb27DrXZlaXMifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJBdHVhbGl6YcOnw6NvIGRvIFByZcOnb3MgQ29pbkdlY2tvIiwidG90YWxfbWNhcCI6IkNhcGl0YWxpemHDp8OjbyBUb3RhbCBkZSBNZXJjYWRvIiwiMjRoX3ZvbCI6IlZvbHVtZSBlbSAyNCBoIiwiZG9tIjoiRG9tIn0sImNvaW5fbWFya2V0X3RpY2tlcl9saXN0X3dpZGdldCI6eyJleGNoYW5nZSI6IkPDom1iaW8iLCJwYWlyIjoiUGFyIiwicHJpY2UiOiJQcmXDp28iLCJ2b2x1bWUiOiJWb2x1bWUiLCJ0cnVzdF9zY29yZSI6IlBsYWNhciBkZSBDb25maWFuw6dhIiwidmlld19wcmljZV9jaGFydCI6IlZlciBHcsOhZmljbyBkZSBQcmXDp29zIiwicG93ZXJlZF9ieSI6IkRlc2Vudm9sdmlkbyBwb3IgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsInZpZXdfYWxsIjoiVmVyIHRvZG9zIG9zIG1lcmNhZG9zICV7Y29pbn0ifX0nKX0sIjVkNzMiOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigiNDY5ZiIpfSwiNWRiYyI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImQzZjQiKSxpPW4oIjhiOTciKS5zZXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYSxvPXQuY29uc3RydWN0b3I7cmV0dXJuIG8hPT1uJiYiZnVuY3Rpb24iPT10eXBlb2YgbyYmKGE9by5wcm90b3R5cGUpIT09bi5wcm90b3R5cGUmJnIoYSkmJmkmJmkoZSxhKSxlfX0sIjVkZjIiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI1Y2ExIiksaT1uKCJkNzUyIik7cihyLlMrci5GKihOdW1iZXIucGFyc2VGbG9hdCE9aSksIk51bWJlciIse3BhcnNlRmxvYXQ6aX0pfSwiNWRmMyI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIwMmY0IikoITApO24oIjAxZjkiKShTdHJpbmcsIlN0cmluZyIsKGZ1bmN0aW9uKGUpe3RoaXMuX3Q9U3RyaW5nKGUpLHRoaXMuX2k9MH0pLChmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5fdCxuPXRoaXMuX2k7cmV0dXJuIG4+PXQubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KGU9cih0LG4pLHRoaXMuX2krPWUubGVuZ3RoLHt2YWx1ZTplLGRvbmU6ITF9KX0pKX0sIjVmMWIiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNjNiIpLGk9UmVnRXhwLnByb3RvdHlwZS5leGVjO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZXhlYztpZigiZnVuY3Rpb24iPT09dHlwZW9mIG4pe3ZhciBhPW4uY2FsbChlLHQpO2lmKCJvYmplY3QiIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIGF9aWYoIlJlZ0V4cCIhPT1yKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gaS5jYWxsKGUsdCl9fSw2MDE3OmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSx0KXsoZnVuY3Rpb24oZSxuKXsidXNlIHN0cmljdCI7aWYoIWUuc2V0SW1tZWRpYXRlKXt2YXIgcixpPTEsYT17fSxvPSExLHM9ZS5kb2N1bWVudCxjPU9iamVjdC5nZXRQcm90b3R5cGVPZiYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2M9YyYmYy5zZXRUaW1lb3V0P2M6ZSwiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKGUucHJvY2Vzcyk/ZigpOmgoKT9tKCk6ZS5NZXNzYWdlQ2hhbm5lbD9fKCk6cyYmIm9ucmVhZHlzdGF0ZWNoYW5nZSJpbiBzLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpP2coKTp2KCksYy5zZXRJbW1lZGlhdGU9bCxjLmNsZWFySW1tZWRpYXRlPXV9ZnVuY3Rpb24gbChlKXsiZnVuY3Rpb24iIT09dHlwZW9mIGUmJihlPW5ldyBGdW5jdGlvbigiIitlKSk7Zm9yKHZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpLG49MDtuPHQubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuKzFdO3ZhciBvPXtjYWxsYmFjazplLGFyZ3M6dH07cmV0dXJuIGFbaV09byxyKGkpLGkrK31mdW5jdGlvbiB1KGUpe2RlbGV0ZSBhW2VdfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9ZS5jYWxsYmFjayxyPWUuYXJncztzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDp0KCk7YnJlYWs7Y2FzZSAxOnQoclswXSk7YnJlYWs7Y2FzZSAyOnQoclswXSxyWzFdKTticmVhaztjYXNlIDM6dChyWzBdLHJbMV0sclsyXSk7YnJlYWs7ZGVmYXVsdDp0LmFwcGx5KG4scik7YnJlYWt9fWZ1bmN0aW9uIHAoZSl7aWYobylzZXRUaW1lb3V0KHAsMCxlKTtlbHNle3ZhciB0PWFbZV07aWYodCl7bz0hMDt0cnl7ZCh0KX1maW5hbGx5e3UoZSksbz0hMX19fX1mdW5jdGlvbiBmKCl7cj1mdW5jdGlvbihlKXt0Lm5leHRUaWNrKChmdW5jdGlvbigpe3AoZSl9KSl9fWZ1bmN0aW9uIGgoKXtpZihlLnBvc3RNZXNzYWdlJiYhZS5pbXBvcnRTY3JpcHRzKXt2YXIgdD0hMCxuPWUub25tZXNzYWdlO3JldHVybiBlLm9ubWVzc2FnZT1mdW5jdGlvbigpe3Q9ITF9LGUucG9zdE1lc3NhZ2UoIiIsIioiKSxlLm9ubWVzc2FnZT1uLHR9fWZ1bmN0aW9uIG0oKXt2YXIgdD0ic2V0SW1tZWRpYXRlJCIrTWF0aC5yYW5kb20oKSsiJCIsbj1mdW5jdGlvbihuKXtuLnNvdXJjZT09PWUmJiJzdHJpbmciPT09dHlwZW9mIG4uZGF0YSYmMD09PW4uZGF0YS5pbmRleE9mKHQpJiZwKCtuLmRhdGEuc2xpY2UodC5sZW5ndGgpKX07ZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbiwhMSk6ZS5hdHRhY2hFdmVudCgib25tZXNzYWdlIixuKSxyPWZ1bmN0aW9uKG4pe2UucG9zdE1lc3NhZ2UodCtuLCIqIil9fWZ1bmN0aW9uIF8oKXt2YXIgZT1uZXcgTWVzc2FnZUNoYW5uZWw7ZS5wb3J0MS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO3AodCl9LHI9ZnVuY3Rpb24odCl7ZS5wb3J0Mi5wb3N0TWVzc2FnZSh0KX19ZnVuY3Rpb24gZygpe3ZhciBlPXMuZG9jdW1lbnRFbGVtZW50O3I9ZnVuY3Rpb24odCl7dmFyIG49cy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3AodCksbi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxlLnJlbW92ZUNoaWxkKG4pLG49bnVsbH0sZS5hcHBlbmRDaGlsZChuKX19ZnVuY3Rpb24gdigpe3I9ZnVuY3Rpb24oZSl7c2V0VGltZW91dChwLDAsZSl9fX0pKCJ1bmRlZmluZWQiPT09dHlwZW9mIHNlbGY/InVuZGVmaW5lZCI9PT10eXBlb2YgZT90aGlzOmU6c2VsZil9KS5jYWxsKHRoaXMsbigiYzhiYSIpLG4oIjQzNjIiKSl9LDYwNDU6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IlJpbmtvcyBrYXBpdGFsaXphY2lqb3MgcmVpdGluZ2FzIiwibWNhcCI6IlJpbmtvcyBrYXBpdGFsaXphY2lqYSIsIjI0aF92b2x1bWUiOiIyNCB2YWwuIGFwaW10aXMiLCIyNGhfaGlnaF9sb3ciOiJBdWvFocSNaWF1c2lhIC8gbWHFvmlhdXNpYSBwZXIgMjQgdmFsLiJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLErmRpZWd0YSBwYWdhbCAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJLcmlwdG92YWxpdXTFsyBrYWluxbMgcGFseWdpbmltYXMiLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiS3JpcHRvdmFsaXV0xbMgcmlua29zIHRhbHBvcyBwYWx5Z2luaW1hcyJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IsSuZGllZ3RhIHBhZ2FsICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiJEaWTFvmlhdXNpYSBwZXIgMjQgdmFsLiIsIjI0aF9sb3ciOiLFvWVtaWF1c2lhIHBlciAyNCB2YWwuIiwidmlld19wcmljZV9jaGFydCI6IlBlcsW+acWrcsSXdGkgJXtjb2lufSBLYWluxbMgZGlhZ3JhbWEiLCJwb3dlcmVkX2J5IjoixK5kaWVndGEgcGFnYWwgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLErmRpZWd0YSBwYWdhbCAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IsSuZGllZ3RhIHBhZ2FsICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IsSuZGllZ3RhIHBhZ2FsICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiRGlkxb5pYXVzaWEgcGVyIDI0IHZhbC4iLCIyNGhfbG93Ijoixb1lbWlhdXNpYSBwZXIgMjQgdmFsLiIsInZpZXdfcHJpY2VfY2hhcnQiOiJQZXLFvmnFq3LEl3RpICV7Y29pbn0gS2FpbsWzIGRpYWdyYW1hIiwicG93ZXJlZF9ieSI6IsSuZGllZ3RhIHBhZ2FsICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJQZXLFvmnFq3LEl3RpICV7Y29pbn0gS2FpbsWzIGRpYWdyYW1hIiwicG93ZXJlZF9ieSI6IsSuZGllZ3RhIHBhZ2FsICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6IktyaXB0b3ZhbGl1dMWzIG1lZGlzIiwic3VidGl0bGUiOiIoUG9wdWxpYXJpYXVzaW9zICAle3RvcH0gcGFnYWwgcmlua29zIGthcGl0YWxpemFjaWrEhSkiLCJwb3dlcmVkX2J5IjoixK5kaWVndGEgcGFnYWwgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IkF0c2Frb215YsSXcyBhcHJpYm9qaW1hczogxaBpZSDEr3JhbmtpYWkgc2tpcnRpIHByYW1vZ2FpIGlyIG7El3JhIGZpbmFuc2luxJdzIGtvbnN1bHRhY2lqb3MuIiwic3BpbiI6IlN1a3RpIiwiYXZhaWxhYmxlX2NvaW5zIjoiUHJpZWluYW1vcyBtb25ldG9zIn0sImNvaW5fZGFpbHlfcHJpY2Vfd2lkZ2V0Ijp7InRpdGxlIjoiQ29pbkdlY2tvIEthaW7FsyBBdG5hdWppbmltYXMiLCJ0b3RhbF9tY2FwIjoiQmVuZHJhIE0gcmliYSIsIjI0aF92b2wiOiJBcGltdGlzIHBlciAyNCB2YWwuIiwiZG9tIjoiRG9taW5hdmltYXMifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiS2VpdHlrbGEiLCJwYWlyIjoiUG9yYSIsInByaWNlIjoiS2FpbmEiLCJ2b2x1bWUiOiJBcGltdGlzIiwidHJ1c3Rfc2NvcmUiOiJQYXNpdGlrxJdqaW1vIGJhbGFzIiwidmlld19wcmljZV9jaGFydCI6IlBlcsW+acWrcsSXdGkgS2FpbsWzIGRpYWdyYW3EhSIsInBvd2VyZWRfYnkiOiLErmRpZWd0YSBwYWdhbCAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiJQZXLFvmnFq3LEl3RpIHZpc2FzICV7Y29pbn0gcmlua2FzIn19Jyl9LCI2MTNiIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiNTUzNyIpKCJrZXlzIiksaT1uKCJjYTVhIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByW2VdfHwocltlXT1pKGUpKX19LCI2MjZhIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiMmQ5NSIpO2UuZXhwb3J0cz1PYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIlN0cmluZyI9PXIoZSk/ZS5zcGxpdCgiIik6T2JqZWN0KGUpfX0sIjYyYTAiOmZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09ZT8iIjplLCIpXyIsKCsrbityKS50b1N0cmluZygzNikpfX0sIjYyZWEiOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiLQoNC10LnRgtC40L3QsyDRgNC40L3QutC+0LLQvtGXINC60LDQv9GW0YLQsNC70ZbQt9Cw0YbRltGXIiwibWNhcCI6ItCg0LjQvdC60L7QstCwINC60LDQv9GW0YLQsNC70ZbQt9Cw0YbRltGPIiwiMjRoX3ZvbHVtZSI6ItCe0LHRgdGP0LMg0LfQsCAyNCDQs9C+0LTQuNC90LgiLCIyNGhfaGlnaF9sb3ciOiLQnNCw0LrRgS4v0LzRltC9LiDQt9CwIDI0INCz0L7QtNC40L3QuCJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLQn9GA0LDRhtGO0ZQg0L3QsCDQv9C70LDRgtGE0L7RgNC80ZYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoi0J/QvtGA0ZbQstC90Y/QvdC90Y8g0YbRltC9INC60YDQuNC/0YLQvtCy0LDQu9GO0YIiLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoi0J/QvtGA0ZbQstC90Y/QvdC90Y8g0YDQuNC90LrQvtCy0L7RlyDQutCw0L/RltGC0LDQu9GW0LfQsNGG0ZbRlyDQutGA0LjQv9GC0L7QstCw0LvRjtGCIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/RgNCw0YbRjtGUINC90LAg0L/Qu9Cw0YLRhNC+0YDQvNGWICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiLQnNCw0LrRgdC40LzRg9C8INC30LAgMjQg0LPQvtC00LjQvdC4IiwiMjRoX2xvdyI6ItCc0ZbQvdGW0LzRg9C8INC30LAgMjQg0LPQvtC00LjQvdC4Iiwidmlld19wcmljZV9jaGFydCI6ItCf0LXRgNC10LPQu9GP0L3Rg9GC0Lgg0LPRgNCw0YTRltC6INGG0ZbQvdC4ICV7Y29pbn0iLCJwb3dlcmVkX2J5Ijoi0J/RgNCw0YbRjtGUINC90LAg0L/Qu9Cw0YLRhNC+0YDQvNGWICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/RgNCw0YbRjtGUINC90LAg0L/Qu9Cw0YLRhNC+0YDQvNGWICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/RgNCw0YbRjtGUINC90LAg0L/Qu9Cw0YLRhNC+0YDQvNGWICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6ItCf0YDQsNGG0Y7RlCDQvdCwINC/0LvQsNGC0YTQvtGA0LzRliAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6ItCc0LDQutGB0LjQvNGD0Lwg0LfQsCAyNCDQs9C+0LTQuNC90LgiLCIyNGhfbG93Ijoi0JzRltC90ZbQvNGD0Lwg0LfQsCAyNCDQs9C+0LTQuNC90LgiLCJ2aWV3X3ByaWNlX2NoYXJ0Ijoi0J/QtdGA0LXQs9C70Y/QvdGD0YLQuCDQs9GA0LDRhNGW0Log0YbRltC90LggJXtjb2lufSIsInBvd2VyZWRfYnkiOiLQn9GA0LDRhtGO0ZQg0L3QsCDQv9C70LDRgtGE0L7RgNC80ZYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6ItCf0LXRgNC10LPQu9GP0L3Rg9GC0Lgg0LPRgNCw0YTRltC6INGG0ZbQvdC4ICV7Y29pbn0iLCJwb3dlcmVkX2J5Ijoi0J/RgNCw0YbRjtGUINC90LAg0L/Qu9Cw0YLRhNC+0YDQvNGWICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6ItCa0LDRgNGC0LAg0LTQtdGA0LXQstCwINC60YDQuNC/0YLQvtCy0LDQu9GO0YLQuCIsInN1YnRpdGxlIjoiKNCa0YDQsNGJ0ZYgJXt0b3B9INC30LAg0YDQuNC90LrQvtCy0L7RjiDQutCw0L/RltGC0LDQu9GW0LfQsNGG0ZbRlNGOKSIsInBvd2VyZWRfYnkiOiLQn9GA0LDRhtGO0ZQg0L3QsCDQv9C70LDRgtGE0L7RgNC80ZYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6ItCS0ZbQtNC80L7QstCwINCy0ZbQtCDQstGW0LTQv9C+0LLRltC00LDQu9GM0L3QvtGB0YLRljog0KbRliDRltC90YHRgtGA0YPQvNC10L3RgtC4INC00LDQvdGWINGP0Log0YDQvtC30LLQsNC20LDQu9GM0L3RliDQuSDQvdC1INGUINGE0ZbQvdCw0L3RgdC+0LLQuNC80Lgg0YDQtdC60L7QvNC10L3QtNCw0YbRltGP0LzQuC4iLCJzcGluIjoi0KHQv9GW0L0iLCJhdmFpbGFibGVfY29pbnMiOiLQlNC+0YHRgtGD0L/QvdGWINC80L7QvdC10YLQuCJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6ItCe0L3QvtCy0LvQtdC90L3RjyDRhtGW0L3QuCBDb2luR2Vja28iLCJ0b3RhbF9tY2FwIjoi0JfQsNCz0LDQu9GM0L3QsCDRgNC40L0uINC60LDQvy4iLCIyNGhfdm9sIjoi0J7QsdGB0Y/QsyDRgtC+0YDQs9GW0LIg0LfQsCAyNCDQs9C+0LTQuNC90LgiLCJkb20iOiLQlNC+0LzRltC90YPQstCw0L3QvdGPIn0sImNvaW5fbWFya2V0X3RpY2tlcl9saXN0X3dpZGdldCI6eyJleGNoYW5nZSI6ItCR0ZbRgNC20LAiLCJwYWlyIjoi0J/QsNGA0LAiLCJwcmljZSI6ItCm0ZbQvdCwIiwidm9sdW1lIjoi0J7QsdGB0Y/QsyIsInRydXN0X3Njb3JlIjoi0J/QvtC60LDQt9C90LjQuiDQvdCw0LTRltC50L3QvtGB0YLRliIsInZpZXdfcHJpY2VfY2hhcnQiOiLQn9C10YDQtdCz0LvRj9C90YPRgtC4INCz0YDQsNGE0ZbQuiDRhtGW0L3QuCIsInBvd2VyZWRfYnkiOiLQn9GA0LDRhtGO0ZQg0L3QsCDQv9C70LDRgtGE0L7RgNC80ZYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsInZpZXdfYWxsIjoi0J/QtdGA0LXQs9C70Y/QvdGD0YLQuCDQstGB0ZYg0YDQuNC90LrQuCAle2NvaW59In19Jyl9LCI2M2I2IjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiZTUzZCIpLGk9bigiNTg0YSIpLGE9bigiZDg2NCIpLG89bigiMzVlOCIpLHM9bigiMDdlMyIpLGM9InByb3RvdHlwZSIsbD1mdW5jdGlvbihlLHQsbil7dmFyIHUsZCxwLGY9ZSZsLkYsaD1lJmwuRyxtPWUmbC5TLF89ZSZsLlAsZz1lJmwuQix2PWUmbC5XLHk9aD9pOmlbdF18fChpW3RdPXt9KSxiPXlbY10sdz1oP3I6bT9yW3RdOihyW3RdfHx7fSlbY107Zm9yKHUgaW4gaCYmKG49dCksbilkPSFmJiZ3JiZ2b2lkIDAhPT13W3VdLGQmJnMoeSx1KXx8KHA9ZD93W3VdOm5bdV0seVt1XT1oJiYiZnVuY3Rpb24iIT10eXBlb2Ygd1t1XT9uW3VdOmcmJmQ/YShwLHIpOnYmJndbdV09PXA/ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24odCxuLHIpe2lmKHRoaXMgaW5zdGFuY2VvZiBlKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgZTtjYXNlIDE6cmV0dXJuIG5ldyBlKHQpO2Nhc2UgMjpyZXR1cm4gbmV3IGUodCxuKX1yZXR1cm4gbmV3IGUodCxuLHIpfXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIHRbY109ZVtjXSx0fShwKTpfJiYiZnVuY3Rpb24iPT10eXBlb2YgcD9hKEZ1bmN0aW9uLmNhbGwscCk6cCxfJiYoKHkudmlydHVhbHx8KHkudmlydHVhbD17fSkpW3VdPXAsZSZsLlImJmImJiFiW3VdJiZvKGIsdSxwKSkpfTtsLkY9MSxsLkc9MixsLlM9NCxsLlA9OCxsLkI9MTYsbC5XPTMyLGwuVT02NCxsLlI9MTI4LGUuZXhwb3J0cz1sfSw2NzE4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJlNTNkIiksaT1uKCI1ODRhIiksYT1uKCJiOGUzIiksbz1uKCJjY2I5Iikscz1uKCJkOWY2IikuZjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9aS5TeW1ib2x8fChpLlN5bWJvbD1hP3t9OnIuU3ltYm9sfHx7fSk7Il8iPT1lLmNoYXJBdCgwKXx8ZSBpbiB0fHxzKHQsZSx7dmFsdWU6by5mKGUpfSl9fSwiNjdiYiI6ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKCJmOTIxIil9LDY4MjE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjYyNmEiKSxpPW4oImJlMTMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoaShlKSl9fSwiNjg4ZSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAiLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxvPSJbb2JqZWN0IEZ1bmN0aW9uXSI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiB0fHxhLmNhbGwodCkhPT1vKXRocm93IG5ldyBUeXBlRXJyb3Iocit0KTtmb3IodmFyIG4scz1pLmNhbGwoYXJndW1lbnRzLDEpLGM9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2Ygbil7dmFyIHI9dC5hcHBseSh0aGlzLHMuY29uY2F0KGkuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIE9iamVjdChyKT09PXI/cjp0aGlzfXJldHVybiB0LmFwcGx5KGUscy5jb25jYXQoaS5jYWxsKGFyZ3VtZW50cykpKX0sbD1NYXRoLm1heCgwLHQubGVuZ3RoLXMubGVuZ3RoKSx1PVtdLGQ9MDtkPGw7ZCsrKXUucHVzaCgiJCIrZCk7aWYobj1GdW5jdGlvbigiYmluZGVyIiwicmV0dXJuIGZ1bmN0aW9uICgiK3Uuam9pbigiLCIpKyIpeyByZXR1cm4gYmluZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsgfSIpKGMpLHQucHJvdG90eXBlKXt2YXIgcD1mdW5jdGlvbigpe307cC5wcm90b3R5cGU9dC5wcm90b3R5cGUsbi5wcm90b3R5cGU9bmV3IHAscC5wcm90b3R5cGU9bnVsbH1yZXR1cm4gbn19LCI2OWE4IjpmdW5jdGlvbihlLHQpe3ZhciBuPXt9Lmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuLmNhbGwoZSx0KX19LCI2OWQzIjpmdW5jdGlvbihlLHQsbil7bigiNjcxOCIpKCJhc3luY0l0ZXJhdG9yIil9LCI2YTk5IjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiZDNmNCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCFyKGUpKXJldHVybiBlO3ZhciBuLGk7aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mKG49ZS50b1N0cmluZykmJiFyKGk9bi5jYWxsKGUpKSlyZXR1cm4gaTtpZigiZnVuY3Rpb24iPT10eXBlb2Yobj1lLnZhbHVlT2YpJiYhcihpPW4uY2FsbChlKSkpcmV0dXJuIGk7aWYoIXQmJiJmdW5jdGlvbiI9PXR5cGVvZihuPWUudG9TdHJpbmcpJiYhcihpPW4uY2FsbChlKSkpcmV0dXJuIGk7dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LCI2YWJmIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiZTZmMyIpLGk9bigiMTY5MSIpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gcihlLGkpfX0sIjZiNGMiOmZ1bmN0aW9uKGUsdCl7dmFyIG49e30udG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuLmNhbGwoZSkuc2xpY2UoOCwtMSl9fSwiNmI1NCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuKCIzODQ2Iik7dmFyIHI9bigiY2I3YyIpLGk9bigiMGJmYiIpLGE9bigiOWUxZSIpLG89InRvU3RyaW5nIixzPS8uL1tvXSxjPWZ1bmN0aW9uKGUpe24oIjJhYmEiKShSZWdFeHAucHJvdG90eXBlLG8sZSwhMCl9O24oIjc5ZTUiKSgoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPXMuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKT9jKChmdW5jdGlvbigpe3ZhciBlPXIodGhpcyk7cmV0dXJuIi8iLmNvbmNhdChlLnNvdXJjZSwiLyIsImZsYWdzImluIGU/ZS5mbGFnczohYSYmZSBpbnN0YW5jZW9mIFJlZ0V4cD9pLmNhbGwoZSk6dm9pZCAwKX0pKTpzLm5hbWUhPW8mJmMoKGZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0pKX0sIjZjMWMiOmZ1bmN0aW9uKGUsdCxuKXtuKCJjMzY3Iik7Zm9yKHZhciByPW4oImU1M2QiKSxpPW4oIjM1ZTgiKSxhPW4oIjQ4MWIiKSxvPW4oIjUxNjgiKSgidG9TdHJpbmdUYWciKSxzPSJDU1NSdWxlTGlzdCxDU1NTdHlsZURlY2xhcmF0aW9uLENTU1ZhbHVlTGlzdCxDbGllbnRSZWN0TGlzdCxET01SZWN0TGlzdCxET01TdHJpbmdMaXN0LERPTVRva2VuTGlzdCxEYXRhVHJhbnNmZXJJdGVtTGlzdCxGaWxlTGlzdCxIVE1MQWxsQ29sbGVjdGlvbixIVE1MQ29sbGVjdGlvbixIVE1MRm9ybUVsZW1lbnQsSFRNTFNlbGVjdEVsZW1lbnQsTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCxTVkdQYXRoU2VnTGlzdCxTVkdQb2ludExpc3QsU1ZHU3RyaW5nTGlzdCxTVkdUcmFuc2Zvcm1MaXN0LFNvdXJjZUJ1ZmZlckxpc3QsU3R5bGVTaGVldExpc3QsVGV4dFRyYWNrQ3VlTGlzdCxUZXh0VHJhY2tMaXN0LFRvdWNoTGlzdCIuc3BsaXQoIiwiKSxjPTA7YzxzLmxlbmd0aDtjKyspe3ZhciBsPXNbY10sdT1yW2xdLGQ9dSYmdS5wcm90b3R5cGU7ZCYmIWRbb10mJmkoZCxvLGwpLGFbbF09YS5BcnJheX19LCI2Y2UyIjpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJjb2luX2RldGFpbHMiOnsibWNhcF9yYW5rIjoiTWFya3RrYXBpdGFsaXNpZXJ1bmdzcmFuZyIsIm1jYXAiOiJNYXJrdGthcGl0YWxpc2llcnVuZyIsIjI0aF92b2x1bWUiOiIyNC1TdHVuZGVuIFZvbHVtZW4iLCIyNGhfaGlnaF9sb3ciOiIyNC1TdHVuZGVuLUhvY2gvLVRpZWYifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiVW50ZXJzdMO8dHp0IHZvbiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJLcnlwdG8tS3Vyc3ZlcmdsZWljaCIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiJLcnlwdG8tTWFya3RrYXBpdGFsaXNpZXJ1bmdzdmVyZ2xlaWNoIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiVW50ZXJzdMO8dHp0IHZvbiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjQtU3R1bmRlbi1Ib2NoIiwiMjRoX2xvdyI6IjI0LVN0dW5kZW4tVGllZiIsInZpZXdfcHJpY2VfY2hhcnQiOiIle2NvaW59IEt1cnNkaWFncmFtbSBhbnplaWdlbiIsInBvd2VyZWRfYnkiOiJVbnRlcnN0w7x0enQgdm9uICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiVW50ZXJzdMO8dHp0IHZvbiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlVudGVyc3TDvHR6dCB2b24gJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiVW50ZXJzdMO8dHp0IHZvbiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0LVN0dW5kZW4tSG9jaCIsIjI0aF9sb3ciOiIyNC1TdHVuZGVuLVRpZWYiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSBLdXJzZGlhZ3JhbW0gYW56ZWlnZW4iLCJwb3dlcmVkX2J5IjoiVW50ZXJzdMO8dHp0IHZvbiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSBLdXJzZGlhZ3JhbW0gYW56ZWlnZW4iLCJwb3dlcmVkX2J5IjoiVW50ZXJzdMO8dHp0IHZvbiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJLcnlwdG93w6RocnVuZ3MtVHJlZS1NYXAiLCJzdWJ0aXRsZSI6IihUb3AtJXt0b3B9IG5hY2ggTWFya3RrYXBpdGFsaXNpZXJ1bmcpIiwicG93ZXJlZF9ieSI6IlVudGVyc3TDvHR6dCB2b24gJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IkRpc2NsYWltZXI6IERpZXNlIFdlcmt6ZXVnZSBkaWVuZW4gYWxzIFVudGVyaGFsdHVuZyB1bmQgc3RlbGxlbiBrZWluZSBmaW5hbnppZWxsZSBCZXJhdHVuZyBkYXIuIiwic3BpbiI6IkRyZWhlbiIsImF2YWlsYWJsZV9jb2lucyI6IlZlcmbDvGdiYXJlIENvaW5zIn0sImNvaW5fZGFpbHlfcHJpY2Vfd2lkZ2V0Ijp7InRpdGxlIjoiQ29pbkdlY2tvIEt1cnNha3R1YWxpc2llcnVuZyIsInRvdGFsX21jYXAiOiJNYXJrdGthcGl0YWxpc2llcnVuZyBpbnNnZXNhbXQiLCIyNGhfdm9sIjoiMjQtU3R1bmRlbi1Wb2x1bWVuIiwiZG9tIjoiRG9taW5hbnoifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiQsO2cnNlIiwicGFpciI6IlBhYXIiLCJwcmljZSI6Ikt1cnMiLCJ2b2x1bWUiOiJWb2x1bWVuIiwidHJ1c3Rfc2NvcmUiOiJWZXJ0cmF1ZW5zd2VydCIsInZpZXdfcHJpY2VfY2hhcnQiOiIgS3Vyc2RpYWdyYW1tIGFuemVpZ2VuIiwicG93ZXJlZF9ieSI6IlVudGVyc3TDvHR6dCB2b24gJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsInZpZXdfYWxsIjoiQWxsZSAle2NvaW59LU3DpHJrdGUgYW56ZWlnZW4ifX0nKX0sIjcxYzEiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCIzYTM4IiksaT1uKCIyNWViIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciBhLG8scz1TdHJpbmcoaSh0KSksYz1yKG4pLGw9cy5sZW5ndGg7cmV0dXJuIGM8MHx8Yz49bD9lPyIiOnZvaWQgMDooYT1zLmNoYXJDb2RlQXQoYyksYTw1NTI5Nnx8YT41NjMxOXx8YysxPT09bHx8KG89cy5jaGFyQ29kZUF0KGMrMSkpPDU2MzIwfHxvPjU3MzQzP2U/cy5jaGFyQXQoYyk6YTplP3Muc2xpY2UoYyxjKzIpOm8tNTYzMjArKGEtNTUyOTY8PDEwKSs2NTUzNil9fX0sIjc1ZmMiOmZ1bmN0aW9uKGUsdCxuKXt0PWUuZXhwb3J0cz1uKCIyNGZiIikoITEpLHQucHVzaChbZS5pLCIuY2ctZGVmYXVsdCB7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIHNlZ29lIHVpLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmLFxuICAgIGFwcGxlIGNvbG9yIGVtb2ppLCBzZWdvZSB1aSBlbW9qaSwgc2Vnb2UgdWkgc3ltYm9sO1xufVxuLmNnLWJvbGQge1xuICBmb250LXdlaWdodDogNjAwO1xufVxuLmNnLWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5jZy1wcmltYXJ5LWNvbG9yIHtcbiAgY29sb3I6ICM4ZGM2NDcgIWltcG9ydGFudDtcbn1cbi5jZy1wcmltYXJ5LWNvbG9yLWRhcmsge1xuICBjb2xvcjogIzRiODgwMCAhaW1wb3J0YW50O1xufVxuLmNnLXJlZC1jb2xvci1kYXJrIHtcbiAgY29sb3I6ICNjMjIyMGQgIWltcG9ydGFudDtcbn1cbi5jZy1yZWQtY29sb3Ige1xuICBjb2xvcjogI2ZmNjE0ZCAhaW1wb3J0YW50O1xufVxuLmNnLTJ4cyB7XG4gIGZvbnQtc2l6ZTogOC44cHg7IC8qIDAuNTVyZW07ICovXG59XG4uY2cteHMge1xuICBmb250LXNpemU6IDEwLjRweDsgLyogMC42NXJlbSAqL1xufVxuLmNnLXNtIHtcbiAgZm9udC1zaXplOiAxMi44cHg7IC8qIDAuOHJlbSAqL1xufVxuLmNnLW5vcm1hbCB7XG4gIGZvbnQtc2l6ZTogMTMuNnB4OyAvKiAwLjg1cmVtICovXG59XG4uY2ctYmFzZSB7XG4gIGZvbnQtc2l6ZTogMTZweDsgLyogMTZweCAqL1xufVxuLmNnLW1lZGl1bSB7XG4gIGZvbnQtc2l6ZTogMTkuMnB4OyAvKiAxLjJyZW0gKi9cbn1cbi5jZy1sZyB7XG4gIGZvbnQtc2l6ZTogMjRweDsgLyogMS41cmVtICovXG59XG4uY2cteGwge1xuICBmb250LXNpemU6IDMwLjRweDsgLyogMS45cmVtICovXG59XG4uY2ctY2FwIHtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG4uY2ctbm8tdW5kZXJsaW5lIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmNnLW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jZy1tLTAge1xuICBtYXJnaW46IDA7XG59XG4uY2ctbS0xIHtcbiAgbWFyZ2luOiA0cHg7XG59XG4uY2ctbS0yIHtcbiAgbWFyZ2luOiA4cHg7XG59XG4uY2ctbXQtMSB7XG4gIG1hcmdpbi10b3A6IDRweDtcbn1cbi5jZy1tYi0xIHtcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xufVxuLmNnLW1sLTEge1xuICBtYXJnaW4tbGVmdDogNHB4O1xufVxuLmNnLW1yLTEge1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbn1cbi5jZy1tdC0yIHtcbiAgbWFyZ2luLXRvcDogOHB4O1xufVxuLmNnLW1sLTIge1xuICBtYXJnaW4tbGVmdDogOHB4O1xufVxuLmNnLW1yLTIge1xuICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5jZy1tYi0yIHtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLmNnLW14LTEge1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbn1cbi5jZy1teS0xIHtcbiAgbWFyZ2luLXRvcDogNHB4O1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG59XG4uY2ctbXgtMiB7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuLmNnLW15LTIge1xuICBtYXJnaW4tdG9wOiA4cHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cbi5jZy1teS01IHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLmNnLXAtMSB7XG4gIHBhZGRpbmc6IDRweDtcbn1cbi5jZy1wLTIge1xuICBwYWRkaW5nOiA4cHg7XG59XG4uY2ctcC0zIHtcbiAgcGFkZGluZzogMTJweDtcbn1cbi5jZy1wLTQge1xuICBwYWRkaW5nOiAxNnB4O1xufVxuLmNnLXB0LTEge1xuICBwYWRkaW5nLXRvcDogNHB4O1xufVxuLmNnLXBiLTEge1xuICBwYWRkaW5nLWJvdHRvbTogNHB4O1xufVxuLmNnLXB0LTIge1xuICBwYWRkaW5nLXRvcDogOHB4O1xufVxuLmNnLXBiLTIge1xuICBwYWRkaW5nLWJvdHRvbTogOHB4O1xufVxuLmNnLXB0LTMge1xuICBwYWRkaW5nLXRvcDogMTJweDtcbn1cbi5jZy1wYi0zIHtcbiAgcGFkZGluZy1ib3R0b206IDEycHg7XG59XG4uY2ctcHktMSB7XG4gIHBhZGRpbmctdG9wOiA0cHg7XG4gIHBhZGRpbmctYm90dG9tOiA0cHg7XG59XG4uY2ctcHgtMSB7XG4gIHBhZGRpbmctbGVmdDogNHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG59XG4uY2ctcHktMiB7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIHBhZGRpbmctYm90dG9tOiA4cHg7XG59XG4uY2ctcHgtMiB7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG59XG4uY2ctcHktMyB7XG4gIHBhZGRpbmctdG9wOiAxMnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTJweDtcbn1cbi5jZy1weC0zIHtcbiAgcGFkZGluZy1sZWZ0OiAxMnB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xufVxuLmNnLXB4LTQge1xuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDE2cHg7XG59XG4uY2ctcHktNCB7XG4gIHBhZGRpbmctdG9wOiAxNnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTZweDtcbn1cbi5jZy1weS01IHtcbiAgcGFkZGluZy10b3A6IDIwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuLmNnLXByLTEge1xuICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG59XG4uY2ctcHItMiB7XG4gIHBhZGRpbmctcmlnaHQ6IDhweDtcbn1cblxuLmNnLWZsZXgge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG59XG4uY2ctZmxleC1yb3cge1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuLmNnLWZsZXgtY29sdW1uIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmNnLWl0ZW1zLXN0cmV0Y2gge1xuICBhbGlnbi1pdGVtczogZmxleC1zdHJldGNoO1xufVxuLmNnLWl0ZW1zLXN0YXJ0IHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG4uY2ctaXRlbXMtY2VudGVyIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5jZy1pdGVtcy1lbmQge1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG59XG4uY2ctaXRlbXMtYmFzZWxpbmUge1xuICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG59XG5cbi5jZy1qdXN0aWZ5LXN0YXJ0IHtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuLmNnLWp1c3RpZnktY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uY2ctanVzdGlmeS1lbmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuLmNnLWp1c3RpZnktYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5jZy1qdXN0aWZ5LWFyb3VuZCB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuXG4uY2ctc2VsZi1hdXRvIHtcbiAgYWxpZ24tc2VsZjogYXV0bztcbn1cbi5jZy1zZWxmLXN0YXJ0IHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbn1cbi5jZy1zZWxmLWNlbnRlciB7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbn1cbi5jZy1zZWxmLWVuZCB7XG4gIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xufVxuLmNnLXNlbGYtc3RyZXRjaCB7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG59XG5cbi5jZy1yZWxhdGl2ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jZy1hYnNvbHV0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5jZy1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuIiwiIl0pfSw3NjE4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQsImEiLChmdW5jdGlvbigpe3JldHVybiBzfSkpO3ZhciByPW4oIjVkNTgiKSxpPW4ubihyKSxhPW4oIjY3YmIiKSxvPW4ubihhKTtmdW5jdGlvbiBzKGUpe3JldHVybiBzPSJmdW5jdGlvbiI9PT10eXBlb2Ygby5hJiYic3ltYm9sIj09PXR5cGVvZiBpLmE/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBvLmEmJmUuY29uc3RydWN0b3I9PT1vLmEmJmUhPT1vLmEucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxzKGUpfX0sIjc2NWQiOmZ1bmN0aW9uKGUsdCxuKXtuKCI2NzE4IikoIm9ic2VydmFibGUiKX0sNzcwNDpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJjb2luX2RldGFpbHMiOnsibWNhcF9yYW5rIjoi0J/QvtC30LjRhtC40Y8g0LIg0YDQtdC50YLQuNC90LPQtSDQv9C+INGA0YvQvdC+0YfQvdC+0Lkg0LrQsNC/0LjRgtCw0LvQuNC30LDRhtC40LgiLCJtY2FwIjoi0KDRi9C90L7Rh9C90LDRjyDQutCw0L/QuNGC0LDQu9C40LfQsNGG0LjRjyIsIjI0aF92b2x1bWUiOiLQntCx0YrQtdC8INC30LAgMjQg0YfQsNGB0LAiLCIyNGhfaGlnaF9sb3ciOiLQnNCw0LrRgS4v0LzQuNC9LiDQt9CwIDI0INGH0LDRgdCwIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6ItCf0YDQuCDQv9C+0LTQtNC10YDQttC60LUgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoi0KHRgNCw0LLQvdC10L3QuNC1INGG0LXQvSDQutGA0LjQv9GC0L7QstCw0LvRjtGCIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6ItCh0YDQsNCy0L3QtdC90LjQtSDRgNGL0L3QvtGH0L3QvtC5INC60LDQv9C40YLQsNC70LjQt9Cw0YbQuNC4INC60YDQuNC/0YLQvtCy0LDQu9GO0YIifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLQn9GA0Lgg0L/QvtC00LTQtdGA0LbQutC1ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiLQnNCw0LrRgS4g0LfQsCAyNCDRh9Cw0YHQsCIsIjI0aF9sb3ciOiLQnNC40L0uINC30LAgMjTCoNGH0LDRgdCwIiwidmlld19wcmljZV9jaGFydCI6ItCf0L7RgdC80L7RgtGA0LXRgtGMINCz0YDQsNGE0LjQuiDRhtC10L0gJXtjb2lufSIsInBvd2VyZWRfYnkiOiLQn9GA0Lgg0L/QvtC00LTQtdGA0LbQutC1ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/RgNC4INC/0L7QtNC00LXRgNC20LrQtSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6ItCf0YDQuCDQv9C+0LTQtNC10YDQttC60LUgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/RgNC4INC/0L7QtNC00LXRgNC20LrQtSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6ItCc0LDQutGBLiDQt9CwIDI0wqDRh9Cw0YHQsCIsIjI0aF9sb3ciOiLQnNC40L0uINC30LAgMjTCoNGH0LDRgdCwIiwidmlld19wcmljZV9jaGFydCI6ItCf0L7RgdC80L7RgtGA0LXRgtGMINCz0YDQsNGE0LjQuiDRhtC10L0gJXtjb2lufSIsInBvd2VyZWRfYnkiOiLQn9GA0Lgg0L/QvtC00LTQtdGA0LbQutC1ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiLQn9C+0YHQvNC+0YLRgNC10YLRjCDQs9GA0LDRhNC40Log0YbQtdC9ICV7Y29pbn0iLCJwb3dlcmVkX2J5Ijoi0J/RgNC4INC/0L7QtNC00LXRgNC20LrQtSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiLQmtCw0YDRgtCwINC00LXRgNC10LLQsCDQutGA0LjQv9GC0L7QstCw0LvRjtGCIiwic3VidGl0bGUiOiIo0JvRg9GH0YjQuNC1INC80L7QvdC10YLRiyAle3RvcH0g0L/QviDRgNGL0L3QvtGH0L3QvtC5INC60LDQv9C40YLQsNC70LjQt9Cw0YbQuNC4KSIsInBvd2VyZWRfYnkiOiLQn9GA0Lgg0L/QvtC00LTQtdGA0LbQutC1ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiLQntGC0LrQsNC3INC+0YIg0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+0YHRgtC4OiDQrdGC0Lgg0LjQvdGB0YLRgNGD0LzQtdC90YLRiyDQtNCw0L3RiyDQsiDQutCw0YfQtdGB0YLQstC1INGA0LDQt9Cy0LvQtdC60LDRgtC10LvRjNC90YvRhSDQuCDQvdC1INGP0LLQu9GP0Y7RgtGB0Y8g0YTQuNC90LDQvdGB0L7QstGL0LzQuCDRgNC10LrQvtC80LXQvdC00LDRhtC40Y/QvNC4LiIsInNwaW4iOiLQodC/0LjQvSIsImF2YWlsYWJsZV9jb2lucyI6ItCU0L7RgdGC0YPQv9C90YvQtSDQvNC+0L3QtdGC0YsifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiLQntCx0L3QvtCy0LvQtdC90LjQtSDRhtC10L3RiyBDb2luR2Vja28iLCJ0b3RhbF9tY2FwIjoi0KDRi9C9LtC60LDQvy4g0LLRgdC10LPQviIsIjI0aF92b2wiOiLQntCx0YrQtdC8INGC0L7RgNCz0L7QsiDQt9CwIDI0INGH0LDRgdCwIiwiZG9tIjoi0JTQvtC80LjQvdC40YDQvtCy0LDQvdC40LUifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoi0JHQuNGA0LbQsCIsInBhaXIiOiLQn9Cw0YDQsCIsInByaWNlIjoi0KbQtdC90LAiLCJ2b2x1bWUiOiLQntCx0L7RgNC+0YIiLCJ0cnVzdF9zY29yZSI6ItCf0L7QutCw0LfQsNGC0LXQu9GMINC90LDQtNC10LbQvdC+0YHRgtC4Iiwidmlld19wcmljZV9jaGFydCI6ItCf0L7RgdC80L7RgtGA0LXRgtGMINCz0YDQsNGE0LjQuiDRhtC10L0iLCJwb3dlcmVkX2J5Ijoi0J/RgNC4INC/0L7QtNC00LXRgNC20LrQtSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiLQn9C+0YHQvNC+0YLRgNC10YLRjCDQstGB0LUg0YDRi9C90LrQuCAle2NvaW59In19Jyl9LDc3MjY6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBfX2cmJihfX2c9bil9LCI3N2YxIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiNDU4OCIpLGk9TWF0aC5tYXgsYT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1yKGUpLGU8MD9pKGUrdCwwKTphKGUsdCl9fSwiNzk0YiI6ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz0hbigiOGU2MCIpJiYhbigiMjk0YyIpKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkobigiMWVjOSIpKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSl9LCI3OWFhIjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBhIGZ1bmN0aW9uISIpO3JldHVybiBlfX0sIjc5ZTUiOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaCh0KXtyZXR1cm4hMH19fSwiN2EwMyI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IuCkruCkvuCksOCljeCkleClh+CknyDgpJXgpYjgpKog4KSw4KWI4KSC4KSVIiwibWNhcCI6IuCkruCkvuCksOCljeCkleClh+CknyDgpJXgpYjgpKoiLCIyNGhfdm9sdW1lIjoiMjTgpJjgpIIg4KSV4KS+IOCkteCkvuCksuCljeCkr+ClguCkriIsIjI0aF9oaWdoX2xvdyI6IjI04KSY4KSCIOCkleCkviDgpLngpL7gpIgv4KSy4KWLIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g4KSm4KWN4KS14KS+4KSw4KS+IOCkuOCkguCkmuCkvuCksuCkv+CkpCIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoi4KSV4KWN4KSw4KS/4KSq4KWN4KSf4KWLIOCkquCljeCksOCkvuCkh+CkuCDgpJXgpYAg4KSk4KWB4KSy4KSo4KS+IiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IuCkleCljeCksOCkv+CkquCljeCkn+CliyDgpK7gpL7gpLDgpY3gpJXgpYfgpJ8g4KSV4KWI4KSqIOCkleClgCDgpKTgpYHgpLLgpKjgpL4ifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOCkpuCljeCkteCkvuCksOCkviDgpLjgpILgpJrgpL7gpLLgpL/gpKQifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNOCkmOCkgiDgpJXgpL4g4KS54KS+4KSIIiwiMjRoX2xvdyI6IjI04KSY4KSCIOCkleCkviDgpLLgpYsiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSDgpJXgpL4g4KSq4KWN4KSw4KS+4KSH4KS4IOCkmuCkvuCksOCljeCknyDgpKbgpYfgpJbgpYfgpIIiLCJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDgpKbgpY3gpLXgpL7gpLDgpL4g4KS44KSC4KSa4KS+4KSy4KS/4KSkIn0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g4KSm4KWN4KS14KS+4KSw4KS+IOCkuOCkguCkmuCkvuCksuCkv+CkpCJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOCkpuCljeCkteCkvuCksOCkviDgpLjgpILgpJrgpL7gpLLgpL/gpKQifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g4KSm4KWN4KS14KS+4KSw4KS+IOCkuOCkguCkmuCkvuCksuCkv+CkpCJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNOCkmOCkgiDgpJXgpL4g4KS54KS+4KSIIiwiMjRoX2xvdyI6IjI04KSY4KSCIOCkleCkviDgpLLgpYsiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSDgpJXgpL4g4KSq4KWN4KSw4KS+4KSH4KS4IOCkmuCkvuCksOCljeCknyDgpKbgpYfgpJbgpYfgpIIiLCJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDgpKbgpY3gpLXgpL7gpLDgpL4g4KS44KSC4KSa4KS+4KSy4KS/4KSkIn0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSDgpJXgpL4g4KSq4KWN4KSw4KS+4KSH4KS4IOCkmuCkvuCksOCljeCknyDgpKbgpYfgpJbgpYfgpIIiLCJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDgpKbgpY3gpLXgpL7gpLDgpL4g4KS44KSC4KSa4KS+4KSy4KS/4KSkIn0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiLgpJXgpY3gpLDgpL/gpKrgpY3gpJ/gpYvgpJXgpLDgpILgpLjgpYAg4KSf4KWN4KSw4KWAIOCkruCliOCkqiIsInN1YnRpdGxlIjoiKOCkruCkvuCksOCljeCkleClh+CknyDgpJXgpYjgpKog4KSV4KWHIOCkhuCkp+CkvuCksCDgpKrgpLAg4KSf4KWJ4KSqICV7dG9wfSkiLCJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDgpKbgpY3gpLXgpL7gpLDgpL4g4KS44KSC4KSa4KS+4KSy4KS/4KSkIn0sInJhbmRvbV9jb2luX3dpZGdldCI6eyJkaXNjbGFpbWVyIjoi4KSh4KS/4KS44KWN4KSV4KWN4KSy4KWH4KSu4KSwOiDgpK/gpLkg4KSu4KSo4KWL4KSw4KSC4KSc4KSoIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkleCkvuCkriDgpJXgpLDgpKTgpL4g4KS54KWIIOCklOCksCDgpIfgpLjgpK7gpYfgpIIg4KSV4KWL4KSIIOCkhuCksOCljeCkpeCkv+CklSDgpLjgpLLgpL7gpLkg4KSo4KS54KWA4KSCIOCkpuClgCDgpJzgpL7gpKTgpYAg4KS54KWI4KWkIiwic3BpbiI6IuCkuOCljeCkquCkv+CkqCDgpJXgpLDgpYfgpIIiLCJhdmFpbGFibGVfY29pbnMiOiLgpK7gpYzgpJzgpYLgpKYg4KSV4KWJ4KSH4KSoIn0sImNvaW5fZGFpbHlfcHJpY2Vfd2lkZ2V0Ijp7InRpdGxlIjoiQ29pbkdlY2tvIOCkquCljeCksOCkvuCkh+CkuCDgpIXgpKrgpKHgpYfgpJ8iLCJ0b3RhbF9tY2FwIjoi4KSV4KWB4KSyIOCkruCkvuCksOCljeCkleClh+CknyDgpJXgpYjgpKoiLCIyNGhfdm9sIjoiMjTgpJjgpILgpJ/gpYcg4KSV4KS+IOCkteCkvuCksuCljeCkr+ClguCkriIsImRvbSI6IuCkteCksOCljeCkmuCkuOCljeCktSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiLgpI/gpJXgpY3gpLjgpJrgpYfgpILgpJwiLCJwYWlyIjoi4KSq4KWH4KSv4KSwIiwicHJpY2UiOiLgpKrgpY3gpLDgpL7gpIfgpLgiLCJ2b2x1bWUiOiLgpLXgpL7gpLLgpY3gpK/gpYLgpK4iLCJ0cnVzdF9zY29yZSI6IuCkn+CljeCksOCkuOCljeCknyDgpLjgpY3gpJXgpYvgpLAiLCJ2aWV3X3ByaWNlX2NoYXJ0Ijoi4KSq4KWN4KSw4KS+4KSH4KS4IOCkmuCkvuCksOCljeCknyDgpKbgpYfgpJXgpYfgpIIiLCJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDgpKbgpY3gpLXgpL7gpLDgpL4g4KS44KSC4KSa4KS+4KSy4KS/4KSkIiwidmlld19hbGwiOiLgpLjgpK3gpYAgJXtjb2lufSDgpK7gpL7gpLDgpY3gpJXgpYfgpJ/gpYvgpIIg4KSV4KWLIOCkpuClh+CkluClh+CkgiJ9fScpfSwiN2NkNiI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjQwYzMiKSxpPW4oIjUxNjgiKSgiaXRlcmF0b3IiKSxhPW4oIjQ4MWIiKTtlLmV4cG9ydHM9bigiNTg0YSIpLmdldEl0ZXJhdG9yTWV0aG9kPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9ZSlyZXR1cm4gZVtpXXx8ZVsiQEBpdGVyYXRvciJdfHxhW3IoZSldfX0sIjdkN2IiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJlNGFlIiksaT1uKCI3Y2Q2Iik7ZS5leHBvcnRzPW4oIjU4NGEiKS5nZXRJdGVyYXRvcj1mdW5jdGlvbihlKXt2YXIgdD1pKGUpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcihlKyIgaXMgbm90IGl0ZXJhYmxlISIpO3JldHVybiByKHQuY2FsbChlKSl9fSwiN2U5MCI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImQ5ZjYiKSxpPW4oImU0YWUiKSxhPW4oImMzYTEiKTtlLmV4cG9ydHM9bigiOGU2MCIpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7aShlKTt2YXIgbixvPWEodCkscz1vLmxlbmd0aCxjPTA7d2hpbGUocz5jKXIuZihlLG49b1tjKytdLHRbbl0pO3JldHVybiBlfX0sIjdmMjAiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI4NmNjIikuZixpPW4oIjY5YTgiKSxhPW4oIjJiNGMiKSgidG9TdHJpbmdUYWciKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe2UmJiFpKGU9bj9lOmUucHJvdG90eXBlLGEpJiZyKGUsYSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOnR9KX19LCI3ZjdmIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiODZjYyIpLmYsaT1GdW5jdGlvbi5wcm90b3R5cGUsYT0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLyxvPSJuYW1lIjtvIGluIGl8fG4oIjllMWUiKSYmcihpLG8se2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuKCIiK3RoaXMpLm1hdGNoKGEpWzFdfWNhdGNoKGUpe3JldHVybiIifX19KX0sODM3ODpmdW5jdGlvbihlLHQpe3ZhciBuPWUuZXhwb3J0cz17dmVyc2lvbjoiMi42LjExIn07Im51bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9bil9LCI4M2MyIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLGk9VHlwZUVycm9yLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtpZihhKXRyeXthKHt9LCIiKX1jYXRjaChTKXthPW51bGx9dmFyIG8scyxjLGw9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgaX0sdT1hP2Z1bmN0aW9uKCl7dHJ5e3JldHVybiBhcmd1bWVudHMuY2FsbGVlLGx9Y2F0Y2goZSl7dHJ5e3JldHVybiBhKGFyZ3VtZW50cywiY2FsbGVlIikuZ2V0fWNhdGNoKHQpe3JldHVybiBsfX19KCk6bCxkPW4oIjlkM2MiKSgpLHA9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX199LGY9bz9wKG8pOnIsaD1zP3MuY29uc3RydWN0b3I6cixtPWM/cChjKTpyLF89Yz9jKCk6cixnPSJ1bmRlZmluZWQiPT09dHlwZW9mIFVpbnQ4QXJyYXk/cjpwKFVpbnQ4QXJyYXkpLHY9eyIlQXJyYXklIjpBcnJheSwiJUFycmF5QnVmZmVyJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgQXJyYXlCdWZmZXI/cjpBcnJheUJ1ZmZlciwiJUFycmF5QnVmZmVyUHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgQXJyYXlCdWZmZXI/cjpBcnJheUJ1ZmZlci5wcm90b3R5cGUsIiVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSI6ZD9wKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSk6ciwiJUFycmF5UHJvdG90eXBlJSI6QXJyYXkucHJvdG90eXBlLCIlQXJyYXlQcm90b19lbnRyaWVzJSI6QXJyYXkucHJvdG90eXBlLmVudHJpZXMsIiVBcnJheVByb3RvX2ZvckVhY2glIjpBcnJheS5wcm90b3R5cGUuZm9yRWFjaCwiJUFycmF5UHJvdG9fa2V5cyUiOkFycmF5LnByb3RvdHlwZS5rZXlzLCIlQXJyYXlQcm90b192YWx1ZXMlIjpBcnJheS5wcm90b3R5cGUudmFsdWVzLCIlQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlJSI6ciwiJUFzeW5jRnVuY3Rpb24lIjpoLCIlQXN5bmNGdW5jdGlvblByb3RvdHlwZSUiOmg/aC5wcm90b3R5cGU6ciwiJUFzeW5jR2VuZXJhdG9yJSI6Yz9wKF8pOnIsIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSI6bSwiJUFzeW5jR2VuZXJhdG9yUHJvdG90eXBlJSI6bT9tLnByb3RvdHlwZTpyLCIlQXN5bmNJdGVyYXRvclByb3RvdHlwZSUiOl8mJmQmJlN5bWJvbC5hc3luY0l0ZXJhdG9yP19bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk6ciwiJUF0b21pY3MlIjoidW5kZWZpbmVkIj09PXR5cGVvZiBBdG9taWNzP3I6QXRvbWljcywiJUJvb2xlYW4lIjpCb29sZWFuLCIlQm9vbGVhblByb3RvdHlwZSUiOkJvb2xlYW4ucHJvdG90eXBlLCIlRGF0YVZpZXclIjoidW5kZWZpbmVkIj09PXR5cGVvZiBEYXRhVmlldz9yOkRhdGFWaWV3LCIlRGF0YVZpZXdQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09PXR5cGVvZiBEYXRhVmlldz9yOkRhdGFWaWV3LnByb3RvdHlwZSwiJURhdGUlIjpEYXRlLCIlRGF0ZVByb3RvdHlwZSUiOkRhdGUucHJvdG90eXBlLCIlZGVjb2RlVVJJJSI6ZGVjb2RlVVJJLCIlZGVjb2RlVVJJQ29tcG9uZW50JSI6ZGVjb2RlVVJJQ29tcG9uZW50LCIlZW5jb2RlVVJJJSI6ZW5jb2RlVVJJLCIlZW5jb2RlVVJJQ29tcG9uZW50JSI6ZW5jb2RlVVJJQ29tcG9uZW50LCIlRXJyb3IlIjpFcnJvciwiJUVycm9yUHJvdG90eXBlJSI6RXJyb3IucHJvdG90eXBlLCIlZXZhbCUiOmV2YWwsIiVFdmFsRXJyb3IlIjpFdmFsRXJyb3IsIiVFdmFsRXJyb3JQcm90b3R5cGUlIjpFdmFsRXJyb3IucHJvdG90eXBlLCIlRmxvYXQzMkFycmF5JSI6InVuZGVmaW5lZCI9PT10eXBlb2YgRmxvYXQzMkFycmF5P3I6RmxvYXQzMkFycmF5LCIlRmxvYXQzMkFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgRmxvYXQzMkFycmF5P3I6RmxvYXQzMkFycmF5LnByb3RvdHlwZSwiJUZsb2F0NjRBcnJheSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIEZsb2F0NjRBcnJheT9yOkZsb2F0NjRBcnJheSwiJUZsb2F0NjRBcnJheVByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIEZsb2F0NjRBcnJheT9yOkZsb2F0NjRBcnJheS5wcm90b3R5cGUsIiVGdW5jdGlvbiUiOkZ1bmN0aW9uLCIlRnVuY3Rpb25Qcm90b3R5cGUlIjpGdW5jdGlvbi5wcm90b3R5cGUsIiVHZW5lcmF0b3IlIjpvP3AobygpKTpyLCIlR2VuZXJhdG9yRnVuY3Rpb24lIjpmLCIlR2VuZXJhdG9yUHJvdG90eXBlJSI6Zj9mLnByb3RvdHlwZTpyLCIlSW50OEFycmF5JSI6InVuZGVmaW5lZCI9PT10eXBlb2YgSW50OEFycmF5P3I6SW50OEFycmF5LCIlSW50OEFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgSW50OEFycmF5P3I6SW50OEFycmF5LnByb3RvdHlwZSwiJUludDE2QXJyYXklIjoidW5kZWZpbmVkIj09PXR5cGVvZiBJbnQxNkFycmF5P3I6SW50MTZBcnJheSwiJUludDE2QXJyYXlQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09PXR5cGVvZiBJbnQxNkFycmF5P3I6SW50OEFycmF5LnByb3RvdHlwZSwiJUludDMyQXJyYXklIjoidW5kZWZpbmVkIj09PXR5cGVvZiBJbnQzMkFycmF5P3I6SW50MzJBcnJheSwiJUludDMyQXJyYXlQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09PXR5cGVvZiBJbnQzMkFycmF5P3I6SW50MzJBcnJheS5wcm90b3R5cGUsIiVpc0Zpbml0ZSUiOmlzRmluaXRlLCIlaXNOYU4lIjppc05hTiwiJUl0ZXJhdG9yUHJvdG90eXBlJSI6ZD9wKHAoW11bU3ltYm9sLml0ZXJhdG9yXSgpKSk6ciwiJUpTT04lIjoib2JqZWN0Ij09PXR5cGVvZiBKU09OP0pTT046ciwiJUpTT05QYXJzZSUiOiJvYmplY3QiPT09dHlwZW9mIEpTT04/SlNPTi5wYXJzZTpyLCIlTWFwJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgTWFwP3I6TWFwLCIlTWFwSXRlcmF0b3JQcm90b3R5cGUlIjoidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmQ/cCgobmV3IE1hcClbU3ltYm9sLml0ZXJhdG9yXSgpKTpyLCIlTWFwUHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgTWFwP3I6TWFwLnByb3RvdHlwZSwiJU1hdGglIjpNYXRoLCIlTnVtYmVyJSI6TnVtYmVyLCIlTnVtYmVyUHJvdG90eXBlJSI6TnVtYmVyLnByb3RvdHlwZSwiJU9iamVjdCUiOk9iamVjdCwiJU9iamVjdFByb3RvdHlwZSUiOk9iamVjdC5wcm90b3R5cGUsIiVPYmpQcm90b190b1N0cmluZyUiOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsIiVPYmpQcm90b192YWx1ZU9mJSI6T2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mLCIlcGFyc2VGbG9hdCUiOnBhcnNlRmxvYXQsIiVwYXJzZUludCUiOnBhcnNlSW50LCIlUHJvbWlzZSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFByb21pc2U/cjpQcm9taXNlLCIlUHJvbWlzZVByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFByb21pc2U/cjpQcm9taXNlLnByb3RvdHlwZSwiJVByb21pc2VQcm90b190aGVuJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgUHJvbWlzZT9yOlByb21pc2UucHJvdG90eXBlLnRoZW4sIiVQcm9taXNlX2FsbCUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFByb21pc2U/cjpQcm9taXNlLmFsbCwiJVByb21pc2VfcmVqZWN0JSI6InVuZGVmaW5lZCI9PT10eXBlb2YgUHJvbWlzZT9yOlByb21pc2UucmVqZWN0LCIlUHJvbWlzZV9yZXNvbHZlJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgUHJvbWlzZT9yOlByb21pc2UucmVzb2x2ZSwiJVByb3h5JSI6InVuZGVmaW5lZCI9PT10eXBlb2YgUHJveHk/cjpQcm94eSwiJVJhbmdlRXJyb3IlIjpSYW5nZUVycm9yLCIlUmFuZ2VFcnJvclByb3RvdHlwZSUiOlJhbmdlRXJyb3IucHJvdG90eXBlLCIlUmVmZXJlbmNlRXJyb3IlIjpSZWZlcmVuY2VFcnJvciwiJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJSI6UmVmZXJlbmNlRXJyb3IucHJvdG90eXBlLCIlUmVmbGVjdCUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFJlZmxlY3Q/cjpSZWZsZWN0LCIlUmVnRXhwJSI6UmVnRXhwLCIlUmVnRXhwUHJvdG90eXBlJSI6UmVnRXhwLnByb3RvdHlwZSwiJVNldCUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFNldD9yOlNldCwiJVNldEl0ZXJhdG9yUHJvdG90eXBlJSI6InVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZkP3AoKG5ldyBTZXQpW1N5bWJvbC5pdGVyYXRvcl0oKSk6ciwiJVNldFByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFNldD9yOlNldC5wcm90b3R5cGUsIiVTaGFyZWRBcnJheUJ1ZmZlciUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyP3I6U2hhcmVkQXJyYXlCdWZmZXIsIiVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyP3I6U2hhcmVkQXJyYXlCdWZmZXIucHJvdG90eXBlLCIlU3RyaW5nJSI6U3RyaW5nLCIlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlIjpkP3AoIiJbU3ltYm9sLml0ZXJhdG9yXSgpKTpyLCIlU3RyaW5nUHJvdG90eXBlJSI6U3RyaW5nLnByb3RvdHlwZSwiJVN5bWJvbCUiOmQ/U3ltYm9sOnIsIiVTeW1ib2xQcm90b3R5cGUlIjpkP1N5bWJvbC5wcm90b3R5cGU6ciwiJVN5bnRheEVycm9yJSI6U3ludGF4RXJyb3IsIiVTeW50YXhFcnJvclByb3RvdHlwZSUiOlN5bnRheEVycm9yLnByb3RvdHlwZSwiJVRocm93VHlwZUVycm9yJSI6dSwiJVR5cGVkQXJyYXklIjpnLCIlVHlwZWRBcnJheVByb3RvdHlwZSUiOmc/Zy5wcm90b3R5cGU6ciwiJVR5cGVFcnJvciUiOmksIiVUeXBlRXJyb3JQcm90b3R5cGUlIjppLnByb3RvdHlwZSwiJVVpbnQ4QXJyYXklIjoidW5kZWZpbmVkIj09PXR5cGVvZiBVaW50OEFycmF5P3I6VWludDhBcnJheSwiJVVpbnQ4QXJyYXlQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09PXR5cGVvZiBVaW50OEFycmF5P3I6VWludDhBcnJheS5wcm90b3R5cGUsIiVVaW50OENsYW1wZWRBcnJheSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5P3I6VWludDhDbGFtcGVkQXJyYXksIiVVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5P3I6VWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlLCIlVWludDE2QXJyYXklIjoidW5kZWZpbmVkIj09PXR5cGVvZiBVaW50MTZBcnJheT9yOlVpbnQxNkFycmF5LCIlVWludDE2QXJyYXlQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09PXR5cGVvZiBVaW50MTZBcnJheT9yOlVpbnQxNkFycmF5LnByb3RvdHlwZSwiJVVpbnQzMkFycmF5JSI6InVuZGVmaW5lZCI9PT10eXBlb2YgVWludDMyQXJyYXk/cjpVaW50MzJBcnJheSwiJVVpbnQzMkFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgVWludDMyQXJyYXk/cjpVaW50MzJBcnJheS5wcm90b3R5cGUsIiVVUklFcnJvciUiOlVSSUVycm9yLCIlVVJJRXJyb3JQcm90b3R5cGUlIjpVUklFcnJvci5wcm90b3R5cGUsIiVXZWFrTWFwJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgV2Vha01hcD9yOldlYWtNYXAsIiVXZWFrTWFwUHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PT10eXBlb2YgV2Vha01hcD9yOldlYWtNYXAucHJvdG90eXBlLCIlV2Vha1NldCUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFdlYWtTZXQ/cjpXZWFrU2V0LCIlV2Vha1NldFByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT09dHlwZW9mIFdlYWtTZXQ/cjpXZWFrU2V0LnByb3RvdHlwZX0seT1uKCIwZjdjIiksYj15LmNhbGwoRnVuY3Rpb24uY2FsbCxTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLHc9L1teJS5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCUkKSkvZyx4PS9cXChcXCk/L2csaz1mdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gYihlLHcsKGZ1bmN0aW9uKGUsbixyLGkpe3RbdC5sZW5ndGhdPXI/YihpLHgsIiQxIik6bnx8ZX0pKSx0fSxDPWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluIHYpKXRocm93IG5ldyBTeW50YXhFcnJvcigiaW50cmluc2ljICIrZSsiIGRvZXMgbm90IGV4aXN0ISIpO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHZbZV0mJiF0KXRocm93IG5ldyBpKCJpbnRyaW5zaWMgIitlKyIgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhIik7cmV0dXJuIHZbZV19O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCJzdHJpbmciIT09dHlwZW9mIGV8fDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmImJvb2xlYW4iIT09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignImFsbG93TWlzc2luZyIgYXJndW1lbnQgbXVzdCBiZSBhIGJvb2xlYW4nKTtmb3IodmFyIG49ayhlKSxyPUMoIiUiKyhuLmxlbmd0aD4wP25bMF06IiIpKyIlIix0KSxvPTE7bzxuLmxlbmd0aDtvKz0xKWlmKG51bGwhPXIpaWYoYSYmbysxPj1uLmxlbmd0aCl7dmFyIHM9YShyLG5bb10pO2lmKCF0JiYhKG5bb11pbiByKSl0aHJvdyBuZXcgaSgiYmFzZSBpbnRyaW5zaWMgZm9yICIrZSsiIGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLiIpO3I9cz9zLmdldHx8cy52YWx1ZTpyW25bb11dfWVsc2Ugcj1yW25bb11dO3JldHVybiByfX0sODQzNjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbigpe319LCI4NGYyIjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17fX0sODY4MDpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJjb2luX2RldGFpbHMiOnsibWNhcF9yYW5rIjoi4Lit4Lix4LiZ4LiU4Lix4Lia4Lih4Li54Lil4LiE4LmI4Liy4LiV4Liy4Lih4Lij4Liy4LiE4Liy4LiV4Lil4Liy4LiUIiwibWNhcCI6IuC4oeC4ueC4peC4hOC5iOC4suC4leC4suC4oeC4o+C4suC4hOC4suC4leC4peC4suC4lCIsIjI0aF92b2x1bWUiOiLguJvguKPguLTguKHguLLguJMgMjQg4LiK4Lix4LmI4Lin4LmC4Lih4LiHIiwiMjRoX2hpZ2hfbG93Ijoi4Liq4Li54LiHIC8g4LiV4LmI4LizIDI0IOC4iuC4oS4ifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi4LiC4Lix4Lia4LmA4LiE4Lil4Li34LmI4Lit4LiZ4LmC4LiU4LiiICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IuC4geC4suC4o+C5gOC4m+C4o+C4teC4ouC4muC5gOC4l+C4teC4ouC4muC4o+C4suC4hOC4suC4hOC4o+C4tOC4m+C5guC4lSIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiLguIHguLLguKPguYDguJvguKPguLXguKLguJrguYDguJfguLXguKLguJrguKHguLnguKXguITguYjguLLguJXguKXguLLguJTguITguKPguLTguJvguYLguJUifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLguILguLHguJrguYDguITguKXguLfguYjguK3guJnguYLguJTguKIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0IOC4iuC4oS4g4Liq4Li54LiH4Liq4Li44LiUIiwiMjRoX2xvdyI6IjI0IOC4iuC4oS4g4LiV4LmI4Liz4Liq4Li44LiUIiwidmlld19wcmljZV9jaGFydCI6IuC4lOC4ueC4geC4o+C4suC4n+C4o+C4suC4hOC4siAle2NvaW59IiwicG93ZXJlZF9ieSI6IuC4guC4seC4muC5gOC4hOC4peC4t+C5iOC4reC4meC5guC4lOC4oiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IuC4guC4seC4muC5gOC4hOC4peC4t+C5iOC4reC4meC5guC4lOC4oiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IuC4guC4seC4muC5gOC4hOC4peC4t+C5iOC4reC4meC5guC4lOC4oiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLguILguLHguJrguYDguITguKXguLfguYjguK3guJnguYLguJTguKIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNCDguIrguKEuIOC4quC4ueC4h+C4quC4uOC4lCIsIjI0aF9sb3ciOiIyNCDguIrguKEuIOC4leC5iOC4s+C4quC4uOC4lCIsInZpZXdfcHJpY2VfY2hhcnQiOiLguJTguLnguIHguKPguLLguJ/guKPguLLguITguLIgJXtjb2lufSIsInBvd2VyZWRfYnkiOiLguILguLHguJrguYDguITguKXguLfguYjguK3guJnguYLguJTguKIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6IuC4lOC4ueC4geC4o+C4suC4n+C4o+C4suC4hOC4siAle2NvaW59IiwicG93ZXJlZF9ieSI6IuC4guC4seC4muC5gOC4hOC4peC4t+C5iOC4reC4meC5guC4lOC4oiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiLguYHguJzguJnguJfguLXguYjguKPguLnguJvguJXguYnguJnguYTguKHguYkgQ3J5cHRvY3VycmVuY3kiLCJzdWJ0aXRsZSI6Iigle3RvcH0g4Liq4Li54LiH4Liq4Li44LiU4LiV4Liy4Lih4Lih4Li54Lil4LiE4LmI4Liy4LiV4Lil4Liy4LiUKSIsInBvd2VyZWRfYnkiOiLguILguLHguJrguYDguITguKXguLfguYjguK3guJnguYLguJTguKIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IuC4guC5ieC4reC4iOC4s+C4geC4seC4lOC4hOC4p+C4suC4oeC4o+C4seC4muC4nOC4tOC4lOC4iuC4reC4mjog4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lih4Li34Lit4LiZ4Li14LmJ4LiX4Liz4Lir4LiZ4LmJ4Liy4LiX4Li14LmI4LmA4Lib4LmH4LiZ4LiE4Lin4Liy4Lih4Lia4Lix4LiZ4LmA4LiX4Li04LiH4LmB4Lil4Liw4LmE4Lih4LmI4LmD4LiK4LmI4LiE4Liz4LmB4LiZ4Liw4LiZ4Liz4LiX4Liy4LiH4LiB4Liy4Lij4LmA4LiH4Li04LiZIiwic3BpbiI6IuC4q+C4oeC4uOC4mSIsImF2YWlsYWJsZV9jb2lucyI6IuC5gOC4q+C4o+C4teC4ouC4jeC4l+C4teC5iOC4oeC4teC4reC4ouC4ueC5iCJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6IuC4reC4seC4nuC5gOC4lOC4l+C4o+C4suC4hOC4siBDb2luR2Vja28iLCJ0b3RhbF9tY2FwIjoi4LiE4Lin4Liy4Lih4LiI4Li44LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiC4Lit4LiHIE0iLCIyNGhfdm9sIjoi4Lib4Lij4Li04Lih4Liy4LiTIDI0IOC4iuC4oS4iLCJkb20iOiLguIHguLLguKPguITguKPguK3guIfguKrguYjguKfguJnguYHguJrguYjguIfguYPguJnguJXguKXguLLguJQifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoi4LiV4Lil4Liy4LiU4LmB4Lil4LiB4LmA4Lib4Lil4Li14LmI4Lii4LiZIiwicGFpciI6IuC4hOC4ueC5iCIsInByaWNlIjoi4Lij4Liy4LiE4LiyIiwidm9sdW1lIjoi4Lib4Lij4Li04Lih4Liy4LiTIiwidHJ1c3Rfc2NvcmUiOiLguITguLDguYHguJnguJnguITguKfguLLguKHguJnguYjguLLguYDguIrguLfguYjguK3guJbguLfguK0iLCJ2aWV3X3ByaWNlX2NoYXJ0Ijoi4LiU4Li54LiB4Lij4Liy4Lif4Lij4Liy4LiE4LiyIiwicG93ZXJlZF9ieSI6IuC4guC4seC4muC5gOC4hOC4peC4t+C5iOC4reC4meC5guC4lOC4oiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiLguJTguLnguJXguKXguLLguJQgJXtjb2lufSDguJfguLHguYnguIfguKvguKHguJQifX0nKX0sIjg2Y2MiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJjYjdjIiksaT1uKCJjNjlhIiksYT1uKCI2YTk5Iiksbz1PYmplY3QuZGVmaW5lUHJvcGVydHk7dC5mPW4oIjllMWUiKT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZSx0LG4pe2lmKHIoZSksdD1hKHQsITApLHIobiksaSl0cnl7cmV0dXJuIG8oZSx0LG4pfWNhdGNoKHMpe31pZigiZ2V0ImluIG58fCJzZXQiaW4gbil0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiJ2YWx1ZSJpbiBuJiYoZVt0XT1uLnZhbHVlKSxlfX0sIjg5YjIiOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJPY2VuYSB3Zy4ga2FwaXRhbGl6YWNqaSByeW5rdSIsIm1jYXAiOiJLYXBpdGFsaXphY2phIHJ5bmtvd2EiLCIyNGhfdm9sdW1lIjoiV29sdW1lbiDigJMgMjQgZ29kei4iLCIyNGhfaGlnaF9sb3ciOiIyNCBoIOKAkyBtYWtzLi9taW4uIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6Ik9ic8WCdWdpd2FuZSBwcnpleiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJQb3LDs3duYW5pZSBrdXJzdSBrcnlwdG8iLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiUG9yw7N3bmFuaWUga2FwaXRhbGl6YWNqaSByeW5rb3dlaiBrcnlwdG8ifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJPYnPFgnVnaXdhbmUgcHJ6ZXogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0IGdvZHouIOKAkyB3eXNva28iLCIyNGhfbG93IjoiMjQgZ29kei4g4oCTIG5pc2tvIiwidmlld19wcmljZV9jaGFydCI6Ild5xZt3aWV0bCB3eWtyZXMga3Vyc3UgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJPYnPFgnVnaXdhbmUgcHJ6ZXogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJPYnPFgnVnaXdhbmUgcHJ6ZXogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJPYnPFgnVnaXdhbmUgcHJ6ZXogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiT2JzxYJ1Z2l3YW5lIHByemV6ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjQgZ29kei4g4oCTIHd5c29rbyIsIjI0aF9sb3ciOiIyNCBnb2R6LiDigJMgbmlza28iLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiV3nFm3dpZXRsIHd5a3JlcyBrdXJzdSAle2NvaW59IiwicG93ZXJlZF9ieSI6Ik9ic8WCdWdpd2FuZSBwcnpleiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiV3nFm3dpZXRsIHd5a3JlcyBrdXJzdSAle2NvaW59IiwicG93ZXJlZF9ieSI6Ik9ic8WCdWdpd2FuZSBwcnpleiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJEcnpld28ga3J5cHRvd2FsdXQiLCJzdWJ0aXRsZSI6IihUb3AgJXt0b3B9IHdlZMWCdWcga2FwaXRhbGl6YWNqaSByeW5rb3dlaikiLCJwb3dlcmVkX2J5IjoiT2JzxYJ1Z2l3YW5lIHByemV6ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJPxZt3aWFkY3plbmllOiBOYXJ6xJlkemlhIHRlIHPFgnXFvMSFIHJvenJ5d2NlIGkgbmllIHN0YW5vd2nEhSBwb3JhZHkgZmluYW5zb3dlai4iLCJzcGluIjoiWmFrcsSZxIciLCJhdmFpbGFibGVfY29pbnMiOiJEb3N0xJlwbmUgd2FsdXR5In0sImNvaW5fZGFpbHlfcHJpY2Vfd2lkZ2V0Ijp7InRpdGxlIjoiQWt0dWFsaXphY2phIGt1cnN1IENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiJDYcWCa293aXRhIGthcGl0YWxpemFjamEgcnlua293YSIsIjI0aF92b2wiOiJXb2x1bWVuIOKAkyAyNCBnb2R6LiIsImRvbSI6IkRvbWluYWNqYSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiJHaWXFgmRhIiwicGFpciI6IlBhcmEiLCJwcmljZSI6Ikt1cnMiLCJ2b2x1bWUiOiJXb2x1bWVuIiwidHJ1c3Rfc2NvcmUiOiJXc2thxbpuaWsgemF1ZmFuaWEiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiV3nFm3dpZXRsIHd5a3JlcyBrdXJzdSIsInBvd2VyZWRfYnkiOiJPYnPFgnVnaXdhbmUgcHJ6ZXogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsInZpZXdfYWxsIjoiWm9iYWN6IHdzenlzdGtpZSByeW5raSAle2NvaW59In19Jyl9LCI4YWI1IjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgzYzIiKSxpPW4oIjRkMDEiKSxhPWkocigiU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mIikpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXIoZSwhIXQpO3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgbiYmYShlLCIucHJvdG90eXBlLiIpP2kobik6bn19LCI4Yjk3IjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiZDNmNCIpLGk9bigiY2I3YyIpLGE9ZnVuY3Rpb24oZSx0KXtpZihpKGUpLCFyKHQpJiZudWxsIT09dCl0aHJvdyBUeXBlRXJyb3IodCsiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlISIpfTtlLmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oZSx0LHIpe3RyeXtyPW4oIjliNDMiKShGdW5jdGlvbi5jYWxsLG4oIjExZTkiKS5mKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwyKSxyKGUsW10pLHQ9IShlIGluc3RhbmNlb2YgQXJyYXkpfWNhdGNoKGkpe3Q9ITB9cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGEoZSxuKSx0P2UuX19wcm90b19fPW46cihlLG4pLGV9fSh7fSwhMSk6dm9pZCAwKSxjaGVjazphfX0sIjhlNjAiOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9IW4oIjI5NGMiKSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sIjhmNjAiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYTE1OSIpLGk9bigiYWViZCIpLGE9bigiNDVmMiIpLG89e307bigiMzVlOCIpKG8sbigiNTE2OCIpKCJpdGVyYXRvciIpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7ZS5wcm90b3R5cGU9cihvLHtuZXh0OmkoMSxuKX0pLGEoZSx0KyIgSXRlcmF0b3IiKX19LDkwMDM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjZiNGMiKTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIkFycmF5Ij09cihlKX19LDkwOTM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImNlMTAiKSxpPW4oImUxMWUiKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSxpKX19LDkxMzg6ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKCIzNWU4Iil9LCI5MmQ3IjpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJjb2luX2RldGFpbHMiOnsibWNhcF9yYW5rIjoiUmFuZyBwcmVtYSB0csW+acWhbm9qIGthcGl0LiIsIm1jYXAiOiJUcsW+acWhbmEga2FwaXQuIiwiMjRoX3ZvbHVtZSI6IlZvbHVtZW4gdSAyNCBoIiwiMjRoX2hpZ2hfbG93IjoiVmlzb2thL25pc2thIHUgMjQgaCJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQb2tyZcSHZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJVc3BvcmVkYmEgY2lqZW5lIGtyaXB0b3ZhbHV0YSIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiJVc3BvcmVkYmEgdHLFvmnFoW5lIGthcGl0YWxpemFjaWplIGtyaXB0b3ZhbHV0YSJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlBva3JlxIdlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiJWaXNva2EgdSAyNCBoIiwiMjRoX2xvdyI6Ik5pc2thIHUgMjQgaCIsInZpZXdfcHJpY2VfY2hhcnQiOiJQcmlrYcW+aSBncmFmaWtvbiBjaWplbmUgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJQb2tyZcSHZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlBva3JlxIdlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUG9rcmXEh2UgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUG9rcmXEh2UgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiJWaXNva2EgdSAyNCBoIiwiMjRoX2xvdyI6Ik5pc2thIHUgMjQgaCIsInZpZXdfcHJpY2VfY2hhcnQiOiJQcmlrYcW+aSBncmFmaWtvbiBjaWplbmUgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJQb2tyZcSHZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiUHJpa2HFvmkgZ3JhZmlrb24gY2lqZW5lICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiUG9rcmXEh2UgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2hlYXRtYXBfd2lkZ2V0Ijp7InRpdGxlIjoiS2FydGEgc2Egc3RhYmxvbSBrcmlwdG92YWx1dGEiLCJzdWJ0aXRsZSI6IihOYWp2ZcSHaWggJXt0b3B9IHByZW1hIHRyxb5pxaFub2oga2FwaXRhbGl6YWNpamkpIiwicG93ZXJlZF9ieSI6IlBva3JlxIdlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJJemphdmEgbyBvZHJpY2FuanUgb2Rnb3Zvcm5vc3RpOiBvdmkgYWxhdGkgemFiYXZub2cgc3Uga2FyYWt0ZXJhIGkgbmUgcHJlZHN0YXZsamFqdSBmaW5hbmNpanNraSBzYXZqZXQuIiwic3BpbiI6IlNwaW4iLCJhdmFpbGFibGVfY29pbnMiOiJEb3N0dXBuaSBub3bEjWnEh2kifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJBxb51cmlyYW5qZSBjaWplbmUgbmEgcGxhdGZvcm1pIENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiJVa3VwbmEgdHLFvi4ga2FwaXRhbGl6YWNpamEiLCIyNGhfdm9sIjoiVm9sdW1lbiB1IDI0IGgiLCJkb20iOiJEb21pbmFudG5vc3QifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiQnVyemEiLCJwYWlyIjoiUGFyIiwicHJpY2UiOiJDaWplbmEiLCJ2b2x1bWUiOiJWb2x1bWVuIiwidHJ1c3Rfc2NvcmUiOiJPY2plbmEgcG91emRhbm9zdGkiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiUHJpa2HFvmkgZ3JhZmlrb24gY2lqZW5lIiwicG93ZXJlZF9ieSI6IlBva3JlxIdlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6IlByaWthxb5pIHN2YSB0csW+acWhdGEgemEgJXtjb2lufSJ9fScpfSw5NTQyOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJSYW5nIGNhcGl0YWxpemFyZSBsYSBidXJzxIMiLCJtY2FwIjoiQ2FwaXRhbGl6YXJlIGxhIGJ1cnPEgyIsIjI0aF92b2x1bWUiOiJWb2x1bSDDrm4gdWx0aW1lbGUgMjQgb3JlIiwiMjRoX2hpZ2hfbG93IjoiTWF4aW0vTWluaW0gw65uIDI0aCJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJTdXPIm2ludXQgZGUgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiQ29tcGFyYXJlYSBwcmXIm3VyaWxvciBDcmlwdG8iLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiQ29tcGFyYXJlIGNhcGl0YWxpemFyZWEgbGEgYnVyc2EgY3JpcHRvIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiU3VzyJtpbnV0IGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiJNYXhpbSDDrm4gdWx0aW1lbGUgMjQgb3JlIiwiMjRoX2xvdyI6Ik1pbmltIMOubiB1bHRpbWVsZSAyNCBvcmUiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmV6aSBncmFmaWN1bCBkZSBwcmXIm3VyaSAle2NvaW59IiwicG93ZXJlZF9ieSI6IlN1c8ibaW51dCBkZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlN1c8ibaW51dCBkZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlN1c8ibaW51dCBkZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJTdXPIm2ludXQgZGUgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiJNYXhpbSDDrm4gdWx0aW1lbGUgMjQgb3JlIiwiMjRoX2xvdyI6Ik1pbmltIMOubiB1bHRpbWVsZSAyNCBvcmUiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmV6aSBncmFmaWN1bCBkZSBwcmXIm3VyaSAle2NvaW59IiwicG93ZXJlZF9ieSI6IlN1c8ibaW51dCBkZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmV6aSBncmFmaWN1bCBkZSBwcmXIm3VyaSAle2NvaW59IiwicG93ZXJlZF9ieSI6IlN1c8ibaW51dCBkZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJIYXJ0YSBhcmJvcmVzY2VudMSDIGEgY3JpcHRvbW9uZWRlbG9yIiwic3VidGl0bGUiOiIoVG9wICV7dG9wfSBkdXDEgyBjYXBpdGFsaXphcmVhIGJ1cnNpZXLEgykiLCJwb3dlcmVkX2J5IjoiU3VzyJtpbnV0IGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJBdmVydGlzbWVudDogQWNlc3QgaW5zdHJ1bWVudCBlc3RlIHBlbnRydSBkaXZlcnRpc21lbnQgyJlpIG51IGFyZSByb2x1bCBkZSBjb25zaWxpZXJlIGZpbmFuY2lhcsSDLiIsInNwaW4iOiJSb3RpcmUiLCJhdmFpbGFibGVfY29pbnMiOiJNb25lZGUgZGlzcG9uaWJpbGUifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJBY3R1YWxpemFyZSBQcmXImyBDb2luR2Vja28iLCJ0b3RhbF9tY2FwIjoiVG90YWwgY2FwaXRhbGl6YXJlIGxhIGJ1cnPEgyIsIjI0aF92b2wiOiJWb2x1bSDDrm4gdWx0aW1lbGUgMjQgb3JlIiwiZG9tIjoiRG9taW5hyJtpZSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiJTY2hpbWIiLCJwYWlyIjoiUGVyZWNoZSIsInByaWNlIjoiUHJlyJsiLCJ2b2x1bWUiOiJWb2x1bSIsInRydXN0X3Njb3JlIjoiU2NvciBkZSDDrm5jcmVkZXJlIiwidmlld19wcmljZV9jaGFydCI6IlZlemkgZ3JhZmljdWwgZGUgcHJlyJt1cmkiLCJwb3dlcmVkX2J5IjoiU3VzyJtpbnV0IGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6IlZlemkgdG9hdGUgcGllyJtlbGUgJXtjb2lufSJ9fScpfSwiOTVkNSI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjQwYzMiKSxpPW4oIjUxNjgiKSgiaXRlcmF0b3IiKSxhPW4oIjQ4MWIiKTtlLmV4cG9ydHM9bigiNTg0YSIpLmlzSXRlcmFibGU9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KGUpO3JldHVybiB2b2lkIDAhPT10W2ldfHwiQEBpdGVyYXRvciJpbiB0fHxhLmhhc093blByb3BlcnR5KHIodCkpfX0sIjlhYTkiOmZ1bmN0aW9uKGUsdCl7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LCI5YjQzIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiZDhlOCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7aWYocihlKSx2b2lkIDA9PT10KXJldHVybiBlO3N3aXRjaChuKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlLmNhbGwodCxuKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihuLHIpe3JldHVybiBlLmNhbGwodCxuLHIpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKG4scixpKXtyZXR1cm4gZS5jYWxsKHQsbixyLGkpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0sIjljNmMiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCIyYjRjIikoInVuc2NvcGFibGVzIiksaT1BcnJheS5wcm90b3R5cGU7dm9pZCAwPT1pW3JdJiZuKCIzMmU5IikoaSxyLHt9KSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aVtyXVtlXT0hMH19LCI5ZDNjIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj10LlN5bWJvbCxpPW4oImQ2ZGEiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIHImJigiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmKCJzeW1ib2wiPT09dHlwZW9mIHIoImZvbyIpJiYoInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sKCJiYXIiKSYmaSgpKSkpfX0pLmNhbGwodGhpcyxuKCJjOGJhIikpfSwiOWRlZiI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjQ1ODgiKSxpPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT4wP2kocihlKSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sIjllMWUiOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9IW4oIjc5ZTUiKSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sYTBkMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjBmN2MiKTtlLmV4cG9ydHM9ci5jYWxsKEZ1bmN0aW9uLmNhbGwsT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSl9LGExNTk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImU0YWUiKSxpPW4oIjdlOTAiKSxhPW4oIjE2OTEiKSxvPW4oIjU1NTkiKSgiSUVfUFJPVE8iKSxzPWZ1bmN0aW9uKCl7fSxjPSJwcm90b3R5cGUiLGw9ZnVuY3Rpb24oKXt2YXIgZSx0PW4oIjFlYzkiKSgiaWZyYW1lIikscj1hLmxlbmd0aCxpPSI8IixvPSI+Ijt0LnN0eWxlLmRpc3BsYXk9Im5vbmUiLG4oIjMyZmMiKS5hcHBlbmRDaGlsZCh0KSx0LnNyYz0iamF2YXNjcmlwdDoiLGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50LGUub3BlbigpLGUud3JpdGUoaSsic2NyaXB0IitvKyJkb2N1bWVudC5GPU9iamVjdCIraSsiL3NjcmlwdCIrbyksZS5jbG9zZSgpLGw9ZS5GO3doaWxlKHItLSlkZWxldGUgbFtjXVthW3JdXTtyZXR1cm4gbCgpfTtlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9PWU/KHNbY109cihlKSxuPW5ldyBzLHNbY109bnVsbCxuW29dPWUpOm49bCgpLHZvaWQgMD09PXQ/bjppKG4sdCl9fSxhMzA2OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJDbGFzaWZpY2FjacOzbiBkZSBjYXBpdGFsaXphY2nDs24gZGUgbWVyY2FkbyIsIm1jYXAiOiJDYXAuIGRlIG1lcmNhZG8iLCIyNGhfdm9sdW1lIjoiMjRIIFZvbHVtZW4iLCIyNGhfaGlnaF9sb3ciOiJNw6F4aW1vL23DrW5pbW8gZW4gMjTCoGgifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiQ29uIHRlY25vbG9nw61hIGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IkNvbXBhcmFjacOzbiBkZSBwcmVjaW9zIGRlIGNyaXB0b21vbmVkYXMiLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiQ29tcGFyYWNpw7NuIGRlIGxhIGNhcGl0YWxpemFjacOzbiBkZWwgbWVyY2FkbyBkZSBjcmlwdG9tb25lZGFzIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiQ29uIHRlY25vbG9nw61hIGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiJNw6F4aW1vIGVuIDI0IGgiLCIyNGhfbG93IjoiTcOtbmltbyBlbiAyNCBoIiwidmlld19wcmljZV9jaGFydCI6IlZlciBncsOhZmljbyBkZSBwcmVjaW9zIGRlICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiQ29uIHRlY25vbG9nw61hIGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiQ29uIHRlY25vbG9nw61hIGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiQ29uIHRlY25vbG9nw61hIGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IkNvbiB0ZWNub2xvZ8OtYSBkZSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6Ik3DoXhpbW8gZW4gMjQgaCIsIjI0aF9sb3ciOiJNw61uaW1vIGVuIDI0IGgiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmVyIGdyw6FmaWNvIGRlIHByZWNpb3MgZGUgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJDb24gdGVjbm9sb2fDrWEgZGUgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6IlZlciBncsOhZmljbyBkZSBwcmVjaW9zIGRlICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiQ29uIHRlY25vbG9nw61hIGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6Ik1hcGEgZGUgw6FyYm9sIGRlIGNyaXB0b21vbmVkYXMiLCJzdWJ0aXRsZSI6IihQcmluY2lwYWxlcyAle3RvcH0gc2Vnw7puIGxhIGNhcGl0YWxpemFjacOzbiBkZSBtZXJjYWRvKSIsInBvd2VyZWRfYnkiOiJDb24gdGVjbm9sb2fDrWEgZGUgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IkRlc2NhcmdvIGRlIHJlc3BvbnNhYmlsaWRhZDogZXN0YXMgaGVycmFtaWVudGFzIHRpZW5lbiBmaW5lcyBpbmZvcm1hdGl2b3MgeSBubyBjb25zdGl0dXllbiBhc2Vzb3JhbWllbnRvIGZpbmFuY2llcm8uIiwic3BpbiI6IkdpcmFyIiwiYXZhaWxhYmxlX2NvaW5zIjoiTW9uZWRhcyBkaXNwb25pYmxlcyJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6IkFjdHVhbGl6YWNpw7NuIGRlIHByZWNpbyBkZSBDb2luR2Vja28iLCJ0b3RhbF9tY2FwIjoiQ2FwIE0gdG90YWwiLCIyNGhfdm9sIjoiVm9sdW1lbiBlbiAyNMKgaCIsImRvbSI6IkRvbSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiJJbnRlcmNhbWJpb3MiLCJwYWlyIjoiUGFyIiwicHJpY2UiOiJQcmVjaW8iLCJ2b2x1bWUiOiJWb2x1bWVuIiwidHJ1c3Rfc2NvcmUiOiJQdW50dWFjacOzbiBkZSBjb25maWFuemEiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmVyIGdyw6FmaWNvIGRlIHByZWNpb3MiLCJwb3dlcmVkX2J5IjoiQ29uIHRlY25vbG9nw61hIGRlICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6IlZlciB0b2RvcyBsb3MgbWVyY2Fkb3MgZGUgJXtjb2lufSJ9fScpfSxhNDgxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2I3YyIpLGk9bigiNGJmOCIpLGE9bigiOWRlZiIpLG89bigiNDU4OCIpLHM9bigiMDM5MCIpLGM9bigiNWYxYiIpLGw9TWF0aC5tYXgsdT1NYXRoLm1pbixkPU1hdGguZmxvb3IscD0vXCQoWyQmYCddfFxkXGQ/fDxbXj5dKj4pL2csZj0vXCQoWyQmYCddfFxkXGQ/KS9nLGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/ZTpTdHJpbmcoZSl9O24oIjIxNGYiKSgicmVwbGFjZSIsMiwoZnVuY3Rpb24oZSx0LG4sbSl7cmV0dXJuW2Z1bmN0aW9uKHIsaSl7dmFyIGE9ZSh0aGlzKSxvPXZvaWQgMD09cj92b2lkIDA6clt0XTtyZXR1cm4gdm9pZCAwIT09bz9vLmNhbGwocixhLGkpOm4uY2FsbChTdHJpbmcoYSkscixpKX0sZnVuY3Rpb24oZSx0KXt2YXIgaT1tKG4sZSx0aGlzLHQpO2lmKGkuZG9uZSlyZXR1cm4gaS52YWx1ZTt2YXIgZD1yKGUpLHA9U3RyaW5nKHRoaXMpLGY9ImZ1bmN0aW9uIj09PXR5cGVvZiB0O2Z8fCh0PVN0cmluZyh0KSk7dmFyIGc9ZC5nbG9iYWw7aWYoZyl7dmFyIHY9ZC51bmljb2RlO2QubGFzdEluZGV4PTB9dmFyIHk9W107d2hpbGUoMSl7dmFyIGI9YyhkLHApO2lmKG51bGw9PT1iKWJyZWFrO2lmKHkucHVzaChiKSwhZylicmVhazt2YXIgdz1TdHJpbmcoYlswXSk7IiI9PT13JiYoZC5sYXN0SW5kZXg9cyhwLGEoZC5sYXN0SW5kZXgpLHYpKX1mb3IodmFyIHg9IiIsaz0wLEM9MDtDPHkubGVuZ3RoO0MrKyl7Yj15W0NdO2Zvcih2YXIgUz1TdHJpbmcoYlswXSksUD1sKHUobyhiLmluZGV4KSxwLmxlbmd0aCksMCksTT1bXSxBPTE7QTxiLmxlbmd0aDtBKyspTS5wdXNoKGgoYltBXSkpO3ZhciBPPWIuZ3JvdXBzO2lmKGYpe3ZhciBEPVtTXS5jb25jYXQoTSxQLHApO3ZvaWQgMCE9PU8mJkQucHVzaChPKTt2YXIgVD1TdHJpbmcodC5hcHBseSh2b2lkIDAsRCkpfWVsc2UgVD1fKFMscCxQLE0sTyx0KTtQPj1rJiYoeCs9cC5zbGljZShrLFApK1Qsaz1QK1MubGVuZ3RoKX1yZXR1cm4geCtwLnNsaWNlKGspfV07ZnVuY3Rpb24gXyhlLHQscixhLG8scyl7dmFyIGM9citlLmxlbmd0aCxsPWEubGVuZ3RoLHU9ZjtyZXR1cm4gdm9pZCAwIT09byYmKG89aShvKSx1PXApLG4uY2FsbChzLHUsKGZ1bmN0aW9uKG4saSl7dmFyIHM7c3dpdGNoKGkuY2hhckF0KDApKXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJldHVybiBlO2Nhc2UiYCI6cmV0dXJuIHQuc2xpY2UoMCxyKTtjYXNlIiciOnJldHVybiB0LnNsaWNlKGMpO2Nhc2UiPCI6cz1vW2kuc2xpY2UoMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIHU9K2k7aWYoMD09PXUpcmV0dXJuIG47aWYodT5sKXt2YXIgcD1kKHUvMTApO3JldHVybiAwPT09cD9uOnA8PWw/dm9pZCAwPT09YVtwLTFdP2kuY2hhckF0KDEpOmFbcC0xXStpLmNoYXJBdCgxKTpufXM9YVt1LTFdfXJldHVybiB2b2lkIDA9PT1zPyIiOnN9KSl9fSkpfSxhNjI1OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJSYW5nb3JkZSBtYXJrdGthcGl0YWxpc2F0aWUiLCJtY2FwIjoiTWFya3RrYXAuIiwiMjRoX3ZvbHVtZSI6IjI0VSB2b2x1bWUiLCIyNGhfaGlnaF9sb3ciOiIyNC11dXJzIGhvb2cvbGFhZyJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJNb2dlbGlqayBnZW1hYWt0IGRvb3IgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiVmVyZ2VsaWpraW5nIHZhbiBjcnlwdG9wcmlqemVuIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IlZlcmdlbGlqa2luZyB2YW4gY3J5cHRvbWFya3RrYXBpdGFsaXNhdGllcyJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6Ik1vZ2VsaWprIGdlbWFha3QgZG9vciAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjRVIGhvb2ciLCIyNGhfbG93IjoiMjRVIGxhYWciLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiS29lcnNncmFmaWVrIHZhbiAle2NvaW59IGJla2lqa2VuIiwicG93ZXJlZF9ieSI6Ik1vZ2VsaWprIGdlbWFha3QgZG9vciAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6Ik1vZ2VsaWprIGdlbWFha3QgZG9vciAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6Ik1vZ2VsaWprIGdlbWFha3QgZG9vciAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJNb2dlbGlqayBnZW1hYWt0IGRvb3IgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNFUgaG9vZyIsIjI0aF9sb3ciOiIyNFUgbGFhZyIsInZpZXdfcHJpY2VfY2hhcnQiOiJLb2Vyc2dyYWZpZWsgdmFuICV7Y29pbn0gYmVraWprZW4iLCJwb3dlcmVkX2J5IjoiTW9nZWxpamsgZ2VtYWFrdCBkb29yICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJLb2Vyc2dyYWZpZWsgdmFuICV7Y29pbn0gYmVraWprZW4iLCJwb3dlcmVkX2J5IjoiTW9nZWxpamsgZ2VtYWFrdCBkb29yICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6IkJvb21rYWFydCBjcnlwdG9jdXJyZW5jeVwncyIsInN1YnRpdGxlIjoiKFRvcCAle3RvcH0gbXVudGVuIG9wIG1hcmt0a2FwaXRhbGlzYXRpZSkiLCJwb3dlcmVkX2J5IjoiTW9nZWxpamsgZ2VtYWFrdCBkb29yICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJEaXNjbGFpbWVyOiBEZXplIHRvb2xzIHppam4gYmVkb2VsZCBhbHMgZW50ZXJ0YWlubWVudCBlbiB2b3JtZW4gZ2VlbiBmaW5hbmNpZWVsIGFkdmllcy4iLCJzcGluIjoiRHJhYWllbiIsImF2YWlsYWJsZV9jb2lucyI6IkJlc2NoaWtiYXJlIG11bnRlbiJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6IkNvaW5HZWNrbyBwcmlqc3VwZGF0ZSIsInRvdGFsX21jYXAiOiJUb3RhbGUgbWFya3RrYXBpdGFsaXNhdGllIiwiMjRoX3ZvbCI6IjI0aCBWb2x1bWUiLCJkb20iOiJEb21pbmFudGllIn0sImNvaW5fbWFya2V0X3RpY2tlcl9saXN0X3dpZGdldCI6eyJleGNoYW5nZSI6IkJldXJzIiwicGFpciI6IlBhYXIiLCJwcmljZSI6IlByaWpzIiwidm9sdW1lIjoiVm9sdW1lIiwidHJ1c3Rfc2NvcmUiOiJUcnVzdCBTY29yZSIsInZpZXdfcHJpY2VfY2hhcnQiOiJLb2Vyc2dyYWZpZWsgYmVraWprZW4iLCJwb3dlcmVkX2J5IjoiTW9nZWxpamsgZ2VtYWFrdCBkb29yICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6IkJla2lqayBhbGxlICV7Y29pbn0tbWFya3RlbiJ9fScpfSxhNzQ1OmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigiZjQxMCIpfSxhYTc3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI1Y2ExIiksaT1uKCJiZTEzIiksYT1uKCI3OWU1Iiksbz1uKCJmZGVmIikscz0iWyIrbysiXSIsYz0i4oCLwoUiLGw9UmVnRXhwKCJeIitzK3MrIioiKSx1PVJlZ0V4cChzK3MrIiokIiksZD1mdW5jdGlvbihlLHQsbil7dmFyIGk9e30scz1hKChmdW5jdGlvbigpe3JldHVybiEhb1tlXSgpfHxjW2VdKCkhPWN9KSksbD1pW2VdPXM/dChwKTpvW2VdO24mJihpW25dPWwpLHIoci5QK3IuRipzLCJTdHJpbmciLGkpfSxwPWQudHJpbT1mdW5jdGlvbihlLHQpe3JldHVybiBlPVN0cmluZyhpKGUpKSwxJnQmJihlPWUucmVwbGFjZShsLCIiKSksMiZ0JiYoZT1lLnJlcGxhY2UodSwiIikpLGV9O2UuZXhwb3J0cz1kfSxhYzZhOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bigiY2FkZiIpLGk9bigiMGQ1OCIpLGE9bigiMmFiYSIpLG89bigiNzcyNiIpLHM9bigiMzJlOSIpLGM9bigiODRmMiIpLGw9bigiMmI0YyIpLHU9bCgiaXRlcmF0b3IiKSxkPWwoInRvU3RyaW5nVGFnIikscD1jLkFycmF5LGY9e0NTU1J1bGVMaXN0OiEwLENTU1N0eWxlRGVjbGFyYXRpb246ITEsQ1NTVmFsdWVMaXN0OiExLENsaWVudFJlY3RMaXN0OiExLERPTVJlY3RMaXN0OiExLERPTVN0cmluZ0xpc3Q6ITEsRE9NVG9rZW5MaXN0OiEwLERhdGFUcmFuc2Zlckl0ZW1MaXN0OiExLEZpbGVMaXN0OiExLEhUTUxBbGxDb2xsZWN0aW9uOiExLEhUTUxDb2xsZWN0aW9uOiExLEhUTUxGb3JtRWxlbWVudDohMSxIVE1MU2VsZWN0RWxlbWVudDohMSxNZWRpYUxpc3Q6ITAsTWltZVR5cGVBcnJheTohMSxOYW1lZE5vZGVNYXA6ITEsTm9kZUxpc3Q6ITAsUGFpbnRSZXF1ZXN0TGlzdDohMSxQbHVnaW46ITEsUGx1Z2luQXJyYXk6ITEsU1ZHTGVuZ3RoTGlzdDohMSxTVkdOdW1iZXJMaXN0OiExLFNWR1BhdGhTZWdMaXN0OiExLFNWR1BvaW50TGlzdDohMSxTVkdTdHJpbmdMaXN0OiExLFNWR1RyYW5zZm9ybUxpc3Q6ITEsU291cmNlQnVmZmVyTGlzdDohMSxTdHlsZVNoZWV0TGlzdDohMCxUZXh0VHJhY2tDdWVMaXN0OiExLFRleHRUcmFja0xpc3Q6ITEsVG91Y2hMaXN0OiExfSxoPWkoZiksbT0wO208aC5sZW5ndGg7bSsrKXt2YXIgXyxnPWhbbV0sdj1mW2ddLHk9b1tnXSxiPXkmJnkucHJvdG90eXBlO2lmKGImJihiW3VdfHxzKGIsdSxwKSxiW2RdfHxzKGIsZCxnKSxjW2ddPXAsdikpZm9yKF8gaW4gciliW19dfHxhKGIsXyxyW19dLCEwKX19LGFjZWQ6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6Iljhur9wIGjhuqFuZyBW4buRbiBow7NhIHRo4buLIHRyxrDhu51uZyIsIm1jYXAiOiJW4buRbiBow7NhIHRo4buLIHRyxrDhu51uZyIsIjI0aF92b2x1bWUiOiJLaOG7kWkgbMaw4bujbmcgdHJvbmcgMjRoIiwiMjRoX2hpZ2hfbG93IjoiTeG7qWMgY2FvIG5o4bqldC90aOG6pXAgbmjhuqV0IHRyb25nIDI0IGdp4budIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IsSQxrDhu6NjIGjhu5cgdHLhu6MgYuG7n2kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiU28gc8OhbmggZ2nDoSB0aeG7gW4gbcOjIGjDs2EiLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoiU28gc8OhbmggZ2nDoSB0cuG7iyB24buRbiBow7NhIHRo4buLIHRyxrDhu51uZyBj4bunYSB0aeG7gW4gbcOjIGjDs2EifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLEkMaw4bujYyBo4buXIHRy4bujIGLhu59pICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiJDYW8gdHJvbmcgMjRIIiwiMjRoX2xvdyI6IlRo4bqlcCB0cm9uZyAyNEgiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiWGVtIGJp4buDdSDEkeG7kyBnacOhICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoixJDGsOG7o2MgaOG7lyB0cuG7oyBi4bufaSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IsSQxrDhu6NjIGjhu5cgdHLhu6MgYuG7n2kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLEkMaw4bujYyBo4buXIHRy4bujIGLhu59pICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IsSQxrDhu6NjIGjhu5cgdHLhu6MgYuG7n2kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiJDYW8gdHJvbmcgMjRIIiwiMjRoX2xvdyI6IlRo4bqlcCB0cm9uZyAyNEgiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiWGVtIGJp4buDdSDEkeG7kyBnacOhICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoixJDGsOG7o2MgaOG7lyB0cuG7oyBi4bufaSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiWGVtIGJp4buDdSDEkeG7kyBnacOhICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoixJDGsOG7o2MgaOG7lyB0cuG7oyBi4bufaSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJTxqEgxJHhu5MgY8OieSBUaeG7gW4gbcOjIGjDs2EiLCJzdWJ0aXRsZSI6Iigle3RvcH0gaMOgbmcgxJHhuqd1IHRoZW8gZ2nDoSB0cuG7iyB24buRbiBow7NhIHRo4buLIHRyxrDhu51uZykiLCJwb3dlcmVkX2J5IjoixJDGsOG7o2MgaOG7lyB0cuG7oyBi4bufaSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sInJhbmRvbV9jb2luX3dpZGdldCI6eyJkaXNjbGFpbWVyIjoiVHV5w6puIGLhu5EgbWnhu4VuIHRy4burIHRyw6FjaCBuaGnhu4dtOiBDw7RuZyBj4bulIG7DoHkgxJHGsOG7o2MgZMO5bmcgY2hvIG3hu6VjIMSRw61jaCBnaeG6o2kgdHLDrSB2w6Aga2jDtG5nIGPhuqV1IHRow6BuaCB0aMO0bmcgdGluIHTGsCB24bqlbiB0w6BpIGNow61uaC4iLCJzcGluIjoixJDhu5NuZyBTcGluIiwiYXZhaWxhYmxlX2NvaW5zIjoiVGnhu4FuIOG6o28ga2jhuqMgZOG7pW5nIn0sImNvaW5fZGFpbHlfcHJpY2Vfd2lkZ2V0Ijp7InRpdGxlIjoiQ+G6rXAgbmjhuq10IGdpw6EgdHLDqm4gQ29pbkdlY2tvIiwidG90YWxfbWNhcCI6IlThu5VuZyBnacOhIHRy4buLIHbhu5FuIGjDs2EgdGjhu4sgdHLGsOG7nW5nIiwiMjRoX3ZvbCI6Ikto4buRaSBsxrDhu6NuZyBnaWFvIGThu4tjaCB0cm9uZyAyNCBnaeG7nSIsImRvbSI6IsavdSB0aOG6vyJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiJTw6BuIGdpYW8gZOG7i2NoIiwicGFpciI6IkPhurdwIiwicHJpY2UiOiJHacOhIiwidm9sdW1lIjoiS2jhu5FpIGzGsOG7o25nIiwidHJ1c3Rfc2NvcmUiOiLEkGnhu4NtIHRpbiBj4bqteSIsInZpZXdfcHJpY2VfY2hhcnQiOiJYZW0gYmnhu4N1IMSR4buTIGdpw6EiLCJwb3dlcmVkX2J5IjoixJDGsOG7o2MgaOG7lyB0cuG7oyBi4bufaSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiJYZW0gdOG6pXQgY+G6oyBjw6FjIHRo4buLIHRyxrDhu51uZyAle2NvaW59In19Jyl9LGFlYmQ6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEmZSksY29uZmlndXJhYmxlOiEoMiZlKSx3cml0YWJsZTohKDQmZSksdmFsdWU6dH19fSxhZjA4OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiLYqti12YbZitmBINin2YTZgtmK2YXYqSDYp9mE2LPZiNmC2YrYqSIsIm1jYXAiOiLYp9mE2YLZitmF2Kkg2KfZhNiz2YjZgtmK2KkgIiwiMjRoX3ZvbHVtZSI6Itit2KzZhSDYp9mE2KrYr9in2YjZhCDYudmE2Ykg2YXYr9in2LEgMjQg2LPYp9i52KkiLCIyNGhfaGlnaF9sb3ciOiLYp9ix2KrZgdin2Lkv2KfZhtiu2YHYp9i2INi52YTZiSDZhdiv2KfYsSAyNCDYs9in2LnYqSJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLZhdiv2LnZiNmFINmF2YYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoi2YXZgtin2LHZhtipINiz2LnYsSDYp9mE2LnZhdmE2KfYqiDYp9mE2YXYtNmB2LHYqSIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiLZhdmC2KfYsdmG2Kkg2KfZhNmC2YrZhdipINin2YTYs9mI2YLZitipINmE2YTYudmF2YTYp9iqINin2YTZhdi02YHYsdipIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi2YXYr9i52YjZhSDZhdmGICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiLZhdix2KrZgdi5INi52YTZiSDZhdiv2KfYsSAyNCDYs9in2LnYqSIsIjI0aF9sb3ciOiLZhdmG2K7Zgdi2INi52YTZiSDZhdiv2KfYsSAyNCDYs9in2LnYqSIsInZpZXdfcHJpY2VfY2hhcnQiOiLYudix2LYg2KfZhNix2LPZhSDYp9mE2KjZitin2YbZiiDZhNiz2LnYsSAle2NvaW59IiwicG93ZXJlZF9ieSI6ItmF2K/YudmI2YUg2YXZhiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6ItmF2K/YudmI2YUg2YXZhiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6ItmF2K/YudmI2YUg2YXZhiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLZhdiv2LnZiNmFINmF2YYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiLZhdix2KrZgdi5INi52YTZiSDZhdiv2KfYsSAyNCDYs9in2LnYqSIsIjI0aF9sb3ciOiLZhdmG2K7Zgdi2INi52YTZiSDZhdiv2KfYsSAyNCDYs9in2LnYqSIsInZpZXdfcHJpY2VfY2hhcnQiOiLYudix2LYgJXtjb2lufSDYp9mE2LHYs9mFINin2YTYqNmK2KfZhtmKINmE2YTYs9i52LEiLCJwb3dlcmVkX2J5Ijoi2YXYr9i52YjZhSDZhdmGICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiLYudix2LYgJXtjb2lufSDYp9mE2LHYs9mFINin2YTYqNmK2KfZhtmKINmE2YTYs9i52LEiLCJwb3dlcmVkX2J5Ijoi2YXYr9i52YjZhSDZhdmGICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6Itiu2LHZiti32Kkg2LTYrNix2Kkg2KfZhNi52YXZhNin2Kog2KfZhNmF2LTZgdix2KkiLCJzdWJ0aXRsZSI6IijYo9mB2LbZhCAle3RvcH0g2YjZgdmC2YvYpyDZhNmE2YLZitmF2Kkg2KfZhNiz2YjZgtmK2KkpIiwicG93ZXJlZF9ieSI6ItmF2K/YudmI2YUg2YXZhiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sInJhbmRvbV9jb2luX3dpZGdldCI6eyJkaXNjbGFpbWVyIjoi2KXYrtmE2KfYoSDYp9mE2YXYs9ik2YjZhNmK2Kk6INiq2LPYqtiu2K/ZhSDZh9iw2Ycg2KfZhNij2K/ZiNin2Kog2YPYo9iv2YjYp9iqINiq2LHZgdmK2YfZitipINmI2YTYpyDYqti02YPZkdmEINmF2LTZiNix2Kkg2YXYp9mE2YrYqS4iLCJzcGluIjoi2K/ZiNix2KfZhiIsImF2YWlsYWJsZV9jb2lucyI6Iti52YXZhNin2Kog2YXYqtin2K3YqSJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6Itiq2K3Yr9mK2Ksg2LPYudixIENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiLYpdis2YXYp9mE2Yog2KfZhNmC2YrZhdipINin2YTYs9mI2YLZitipIiwiMjRoX3ZvbCI6Itin2YTYrdis2YUg2LnZhNmJINmF2K/Yp9ixIDI0INiz2KfYudipIiwiZG9tIjoi2KfZhNmH2YrZhdmG2KkifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoi2KjZiNix2LXYqSIsInBhaXIiOiLYstmI2KwiLCJwcmljZSI6Itin2YTYs9i52LEiLCJ2b2x1bWUiOiLYp9mE2K3YrNmFIiwidHJ1c3Rfc2NvcmUiOiLZhtmC2KfYtyDYp9mE2KvZgtipIFRydXN0IFNjb3JlIiwidmlld19wcmljZV9jaGFydCI6Iti52LHYtiDYp9mE2LHYs9mFINin2YTYqNmK2KfZhtmKINmE2YTYs9i52LEiLCJwb3dlcmVkX2J5Ijoi2YXYr9i52YjZhSDZhdmGICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6Iti52LHYtiDYrNmF2YrYuSDYo9iz2YjYp9mCICV7Y29pbn0ifX0nKX0sYWYxNDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKTtuKCI3NjE4Iik7ZnVuY3Rpb24gcigpe3JldHVybiBudWxsIT1kb2N1bWVudC5oZWFkLmF0dGFjaFNoYWRvdyYmbnVsbCE9d2luZG93LmN1c3RvbUVsZW1lbnRzJiZudWxsIT13aW5kb3cuZmV0Y2h9fSxiMGM1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNTIwYSIpO24oIjVjYTEiKSh7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDpyIT09Ly4vLmV4ZWN9LHtleGVjOnJ9KX0sYjNmZDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImYzNjciKSxpPW4oIjFiN2YiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1pKCk7cmV0dXJuIHIoU3RyaW5nLnByb3RvdHlwZSx7dHJpbTplfSx7dHJpbTpmdW5jdGlvbigpe3JldHVybiBTdHJpbmcucHJvdG90eXBlLnRyaW0hPT1lfX0pLGV9fSxiNDQ3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCIzYTM4IiksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKHIoZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGI4ZTM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ITB9LGJhOGQ6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IteT16jXkteqINep15XXldeZINep15XXpyIsIm1jYXAiOiLXqdeV15XXmSDXqdeV16ciLCIyNGhfdm9sdW1lIjoi16DXpNeXINee16HXl9eoINeRLTI0INep16LXldeqIiwiMjRoX2hpZ2hfbG93Ijoi16nXmdeQL9ep16TXnCDXkS0yNCDXqdei15XXqiJ9LCJjb2luX2NvbXBhcmVfY2hhcnRfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLXnteV16TXotecINei15wg15nXk9eZICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IteU16nXldeV15DXqiDXnteX15nXqNeZINee15jXkdei15XXqiDXp9eo15nXpNeY15UiLCJjcnlwdG9fbWFya2V0X2NhcF9jb21wYXJpc29uIjoi15TXqdeV15XXkNeqINep15XXldeZINep15XXpyDXqdecINee15jXkdei15XXqiDXp9eo15nXpNeY15UifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLXnteV16TXotecINei15wg15nXk9eZICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiLXqdeZ15Ag15EtMjQg16nXoteV16oiLCIyNGhfbG93Ijoi16nXpNecINeRLTI0INep16LXldeqIiwidmlld19wcmljZV9jaGFydCI6IteU16bXkiDXkNeqINeY15HXnNeqINeU157Xl9eZ16jXmdedINep15wgJXtjb2lufSIsInBvd2VyZWRfYnkiOiLXnteV16TXotecINei15wg15nXk9eZICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi157Xldek16LXnCDXotecINeZ15PXmSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6Itee15XXpNei15wg16LXnCDXmdeT15kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi157Xldek16LXnCDXotecINeZ15PXmSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6Itep15nXkCDXkS0yNCDXqdei15XXqiIsIjI0aF9sb3ciOiLXqdek15wg15EtMjQg16nXoteV16oiLCJ2aWV3X3ByaWNlX2NoYXJ0Ijoi15TXpteSINeQ16og15jXkdec16og15TXnteX15nXqNeZ150g16nXnCAle2NvaW59IiwicG93ZXJlZF9ieSI6Itee15XXpNei15wg16LXnCDXmdeT15kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6IteU16bXkiDXkNeqINeY15HXnNeqINeU157Xl9eZ16jXmdedINep15wgJXtjb2lufSIsInBvd2VyZWRfYnkiOiLXnteV16TXotecINei15wg15nXk9eZICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6Itee16TXqiDXlNei16Ug16nXnCDXnteY15HXoteV16og16fXqNeZ16TXmNeVIiwic3VidGl0bGUiOiIoJXt0b3B9INee15XXkdeZ15zXmdedINec16TXmSDXqdeV15XXmSDXqdeV16cpIiwicG93ZXJlZF9ieSI6Itee15XXpNei15wg16LXnCDXmdeT15kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6Iteb16rXkSDXldeZ16rXldeoOiDXm9ec15nXnSDXkNec15Ug157Xqdee16nXmdedINec16bXldeo15og15HXmdeT15XXqCDXldeQ15nXoNedINee15TXldeV15nXnSDXmdeZ16LXldelINek15nXoNeg16HXmS4iLCJzcGluIjoi16HXldeR15EiLCJhdmFpbGFibGVfY29pbnMiOiLXnteY15HXoteV16og15bXnteZ16DXmdedIn0sImNvaW5fZGFpbHlfcHJpY2Vfd2lkZ2V0Ijp7InRpdGxlIjoi16LXk9eb15XXnyDXnteX15nXqNeZIENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiLXqdeV15XXmSDXqdeV16cg15vXldec15wiLCIyNGhfdm9sIjoi16DXpNeXINeRLTI0INep16LXldeqIiwiZG9tIjoi15PXldee15nXoNeg15jXmdeV16oifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoi15HXldeo16HXlCIsInBhaXIiOiLXptee15MiLCJwcmljZSI6Itee15fXmdeo157Xl9eZ16giLCJ2b2x1bWUiOiLXoNek15ciLCJ0cnVzdF9zY29yZSI6Item15nXldefINeQ157Xmdeg15XXqiIsInZpZXdfcHJpY2VfY2hhcnQiOiLXlNem15Ig15jXkdec16og157Xl9eZ16jXmdedIiwicG93ZXJlZF9ieSI6Itee15XXpNei15wg16LXnCDXmdeT15kgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsInZpZXdfYWxsIjoi15TXpteSINeQ16og15vXnCDXlNep15XXlden15nXnSDXqdecICV7Y29pbn0ifX0nKX0sYmUxMzpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PWUpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIitlKTtyZXR1cm4gZX19LGJmMGI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjM1NWQiKSxpPW4oImFlYmQiKSxhPW4oIjM2YzMiKSxvPW4oIjFiYzMiKSxzPW4oIjA3ZTMiKSxjPW4oIjc5NGIiKSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPW4oIjhlNjAiKT9sOmZ1bmN0aW9uKGUsdCl7aWYoZT1hKGUpLHQ9byh0LCEwKSxjKXRyeXtyZXR1cm4gbChlLHQpfWNhdGNoKG4pe31pZihzKGUsdCkpcmV0dXJuIGkoIXIuZi5jYWxsKGUsdCksZVt0XSl9fSxiZjBmOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQsImIiLChmdW5jdGlvbigpe3JldHVybiBSfSkpO3ZhciByPW4oIjc2MTgiKSxpPW4oImFmMDgiKSxhPW4oImRjZDAiKSxvPW4oImM2ODYiKSxzPW4oIjIxYWEiKSxjPW4oIjZjZTIiKSxsPW4oImYxODQiKSx1PW4oImVkZDQiKSxkPW4oImEzMDYiKSxwPW4oIjU3NTQiKSxmPW4oImY2OTMiKSxoPW4oImJhOGQiKSxtPW4oIjdhMDMiKSxfPW4oIjkyZDciKSxnPW4oIjRlNzMiKSx2PW4oIjIxMGMiKSx5PW4oIjA4MjUiKSxiPW4oIjA0MjMiKSx3PW4oImRkMTEiKSx4PW4oIjYwNDUiKSxrPW4oImE2MjUiKSxDPW4oImY5NDciKSxTPW4oIjg5YjIiKSxQPW4oIjVkNjciKSxNPW4oIjk1NDIiKSxBPW4oIjc3MDQiKSxPPW4oIjNkYTkiKSxEPW4oImQzNGEiKSxUPW4oIjRjNWIiKSxJPW4oIjg2ODAiKSxqPW4oImZmZWIiKSxGPW4oIjYyZWEiKSx6PW4oImFjZWQiKSxMPW4oIjM1MDQiKSxFPW4oIjA1NmMiKSxOPXthcjppLGJnOmEsY3M6byxkYTpzLGRlOmMsZWw6bCxlbjp1LGVzOmQsZmk6cCxmcjpmLGhlOmgsaGk6bSxocjpfLGh1OmcsaWQ6dixpdDp5LGphOmIsa286dyxsdDp4LG5sOmssbm86QyxwbDpTLHB0OlAscm86TSxydTpBLHNrOk8sc2w6RCxzdjpULHRoOkksdHI6aix1azpGLHZpOnosemg6TCwiemgtdHciOkV9O2Z1bmN0aW9uIFIoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJlbiI7cmV0dXJuIFYoTltlXSxOW3RdKX1mdW5jdGlvbiBWKGUsdCl7dmFyIG49SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0KSk7Zm9yKHZhciBpIGluIG4pe3ZhciBhPWVbaV0sbz1uW2ldO2lmKGEmJm8paWYoIm9iamVjdCI9PT1PYmplY3QoclsiYSJdKShhKSYmIm9iamVjdCI9PT1PYmplY3QoclsiYSJdKShvKSlmb3IodmFyIHMgaW4gZVtpXSluW2ldW3NdPWVbaV1bc107ZWxzZSBuW2ldPWVbaV19cmV0dXJuIG59dFsiYSJdPU59LGMxZTI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyYjBlIiksaT1uKCIyODhhIiksYT1uLm4oaSksbz1uKCJiZjBmIikscz1mdW5jdGlvbigpe3JldHVybiByWyJhIl0ubWl4aW4oe2RhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cG9seWdsb3Q6bmV3IGEuYSh7cGhyYXNlczpPYmplY3Qob1siYiJdKSgiZW4iKX0pfX0sbWV0aG9kczp7cmVsb2FkTG9jYWxlOmZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dGhpcy5sb2NhbGUpe2lmKCFvWyJhIl1bdGhpcy5sb2NhbGVdKXRocm93IG5ldyBFcnJvcigiTG9jYWxlIG5vdCBzdXBwb3J0ZWQgYnkgd2lkZ2V0LiBDb250YWN0IHN1cHBvcnRAY29pbmdlY2tvLmNvbSBmb3IgaGVscC4iKTt0aGlzLnBvbHlnbG90PW5ldyBhLmEoe3BocmFzZXM6T2JqZWN0KG9bImIiXSkodGhpcy5sb2NhbGUsImVuIil9KX19fSx3YXRjaDp7bG9jYWxlOmZ1bmN0aW9uKCl7dGhpcy5yZWxvYWRMb2NhbGUoKX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnJlbG9hZExvY2FsZSgpfX0pfTt0WyJhIl09c30sYzIwNzpmdW5jdGlvbihlLHQpe30sYzM2NjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiNjgyMSIpLGk9bigiOWRlZiIpLGE9bigiNzdmMSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuLG8pe3ZhciBzLGM9cih0KSxsPWkoYy5sZW5ndGgpLHU9YShvLGwpO2lmKGUmJm4hPW4pe3doaWxlKGw+dSlpZihzPWNbdSsrXSxzIT1zKXJldHVybiEwfWVsc2UgZm9yKDtsPnU7dSsrKWlmKChlfHx1IGluIGMpJiZjW3VdPT09bilyZXR1cm4gZXx8dXx8MDtyZXR1cm4hZSYmLTF9fX0sYzM2NzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjg0MzYiKSxpPW4oIjUwZWQiKSxhPW4oIjQ4MWIiKSxvPW4oIjM2YzMiKTtlLmV4cG9ydHM9bigiMzBmMSIpKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKGUsdCl7dGhpcy5fdD1vKGUpLHRoaXMuX2k9MCx0aGlzLl9rPXR9KSwoZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90LHQ9dGhpcy5fayxuPXRoaXMuX2krKztyZXR1cm4hZXx8bj49ZS5sZW5ndGg/KHRoaXMuX3Q9dm9pZCAwLGkoMSkpOmkoMCwia2V5cyI9PXQ/bjoidmFsdWVzIj09dD9lW25dOltuLGVbbl1dKX0pLCJ2YWx1ZXMiKSxhLkFyZ3VtZW50cz1hLkFycmF5LHIoImtleXMiKSxyKCJ2YWx1ZXMiKSxyKCJlbnRyaWVzIil9LGMzYTE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImU2ZjMiKSxpPW4oIjE2OTEiKTtlLmV4cG9ydHM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGUpe3JldHVybiByKGUsaSl9fSxjNWY2OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNzcyNiIpLGk9bigiNjlhOCIpLGE9bigiMmQ5NSIpLG89bigiNWRiYyIpLHM9bigiNmE5OSIpLGM9bigiNzllNSIpLGw9bigiOTA5MyIpLmYsdT1uKCIxMWU5IikuZixkPW4oIjg2Y2MiKS5mLHA9bigiYWE3NyIpLnRyaW0sZj0iTnVtYmVyIixoPXJbZl0sbT1oLF89aC5wcm90b3R5cGUsZz1hKG4oIjJhZWIiKShfKSk9PWYsdj0idHJpbSJpbiBTdHJpbmcucHJvdG90eXBlLHk9ZnVuY3Rpb24oZSl7dmFyIHQ9cyhlLCExKTtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoPjIpe3Q9dj90LnRyaW0oKTpwKHQsMyk7dmFyIG4scixpLGE9dC5jaGFyQ29kZUF0KDApO2lmKDQzPT09YXx8NDU9PT1hKXtpZihuPXQuY2hhckNvZGVBdCgyKSw4OD09PW58fDEyMD09PW4pcmV0dXJuIE5hTn1lbHNlIGlmKDQ4PT09YSl7c3dpdGNoKHQuY2hhckNvZGVBdCgxKSl7Y2FzZSA2NjpjYXNlIDk4OnI9MixpPTQ5O2JyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6cj04LGk9NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4rdH1mb3IodmFyIG8sYz10LnNsaWNlKDIpLGw9MCx1PWMubGVuZ3RoO2w8dTtsKyspaWYobz1jLmNoYXJDb2RlQXQobCksbzw0OHx8bz5pKXJldHVybiBOYU47cmV0dXJuIHBhcnNlSW50KGMscil9fXJldHVybit0fTtpZighaCgiIDBvMSIpfHwhaCgiMGIxIil8fGgoIisweDEiKSl7aD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPDE/MDplLG49dGhpcztyZXR1cm4gbiBpbnN0YW5jZW9mIGgmJihnP2MoKGZ1bmN0aW9uKCl7Xy52YWx1ZU9mLmNhbGwobil9KSk6YShuKSE9Zik/byhuZXcgbSh5KHQpKSxuLGgpOnkodCl9O2Zvcih2YXIgYix3PW4oIjllMWUiKT9sKG0pOiJNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSxFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsTUlOX1NBRkVfSU5URUdFUixwYXJzZUZsb2F0LHBhcnNlSW50LGlzSW50ZWdlciIuc3BsaXQoIiwiKSx4PTA7dy5sZW5ndGg+eDt4KyspaShtLGI9d1t4XSkmJiFpKGgsYikmJmQoaCxiLHUobSxiKSk7aC5wcm90b3R5cGU9XyxfLmNvbnN0cnVjdG9yPWgsbigiMmFiYSIpKHIsZixoKX19LGM2NDk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCwiYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKHQsImIiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKTtuKCJhNDgxIiksbigiNWRmMyIpLG4oImFjNmEiKTtmdW5jdGlvbiByKGUpe3ZhciB0PVtdO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxuKXtpKGUsdCxuKX0pKSl9KSksUHJvbWlzZS5hbGwodCl9ZnVuY3Rpb24gaShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZnVuY3Rpb24oKXt9LG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmZ1bmN0aW9uKCl7fSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Iuc3JjPWUuc3JjLHIuY3Jvc3NPcmlnaW49ImFub255bW91cyIsci5pbnRlZ3JpdHk9ZS5pbnRlZ3JpdHksci5vbmxvYWQ9dCxyLm9uZXJyb3I9ZnVuY3Rpb24oKXtuKG5ldyBFcnJvcigiRmFpbGVkIHRvIGxvYWQgc2NyaXB0ICIrZS5zcmMpKX0sZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyKX1mdW5jdGlvbiBhKGUsdCxuKXt2YXIgcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT10aGlzLGE9YXJndW1lbnRzLG89ZnVuY3Rpb24oKXtyPW51bGwsbnx8ZS5hcHBseShpLGEpfSxzPW4mJiFyO2NsZWFyVGltZW91dChyKSxyPXNldFRpbWVvdXQobyx0KSxzJiZlLmFwcGx5KGksYSl9fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9W10uc2xpY2Usbj0xPD1hcmd1bWVudHMubGVuZ3RoP3QuY2FsbChhcmd1bWVudHMsMCk6W10scj0vKF58W1xzXG5dfDxbQS1aYS16XSpcLz8+KSgoPzpodHRwcz98ZnRwKTpcL1wvW1wtQS1aMC05K1x1MDAyNlx1MjAxOUAjXC8lPz0oKX5ffCE6LC47XSpbXC1BLVowLTkrXHUwMDI2QCNcLyU9figpX3xdKS9naTtyZXR1cm4gbi5sZW5ndGg+MD9lLnJlcGxhY2UociwoZnVuY3Rpb24oZSx0LG4pe3ZhciByPSc8YSBocmVmPSInK24rJyIgY2xhc3M9ImNnLXByaW1hcnktY29sb3ItZGFyayBjZy1uby11bmRlcmxpbmUiIHRhcmdldD0iX2JsYW5rIj4nK24rIjwvYT4iO3JldHVybiIiK3Qrcn0pKTplLnJlcGxhY2UociwnJDE8YSBjbGFzcz0iY2ctcHJpbWFyeS1jb2xvci1kYXJrIGNnLW5vLXVuZGVybGluZSIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IiQyIj4kMjwvYT4nKX19LGM2ODY6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IlBvxZlhZMOtIHBvZGxlIHRyxb5uw60ga2FwaXRhbGl6YWNlIiwibWNhcCI6IlRyxb5uw60ga2FwaXRhbGl6YWNlIiwiMjRoX3ZvbHVtZSI6Ik9iamVtIHphIDI0IGhvZC4iLCIyNGhfaGlnaF9sb3ciOiJOZWp2ecWhxaHDrS9uZWpuacW+xaHDrSB6YSAyNCBob2QuIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlZ5dcW+w612w6EgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiU3Jvdm7DoW7DrSBjZW4ga3J5cHRvbcSbbiIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiJTcm92bsOhbsOtIGthcGl0YWxpemFjZSBrcnlwdG8gdHJodSJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlZ5dcW+w612w6EgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6Ik5lanZ5xaHFocOtIHphIDI0IGhvZC4iLCIyNGhfbG93IjoiTmVqbmnFvsWhw60gemEgMjQgaG9kLiIsInZpZXdfcHJpY2VfY2hhcnQiOiJab2JyYXppdCBjZW5vdsO9IGdyYWYgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJWeXXFvsOtdsOhICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiVnl1xb7DrXbDoSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlZ5dcW+w612w6EgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiVnl1xb7DrXbDoSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6Ik5lanZ5xaHFocOtIHphIDI0IGhvZC4iLCIyNGhfbG93IjoiTmVqbmnFvsWhw60gemEgMjQgaG9kLiIsInZpZXdfcHJpY2VfY2hhcnQiOiJab2JyYXppdCBjZW5vdsO9IGdyYWYgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJWeXXFvsOtdsOhICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJab2JyYXppdCBjZW5vdsO9IGdyYWYgJXtjb2lufSIsInBvd2VyZWRfYnkiOiJWeXXFvsOtdsOhICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6IlN0cm9tb3bDoSBtYXBhIGtyeXB0b23Em24iLCJzdWJ0aXRsZSI6IihOZWogJXt0b3B9IHBvZGxlIHRyxb5uw60ga2FwaXRhbGl6YWNlKSIsInBvd2VyZWRfYnkiOiJWeXXFvsOtdsOhICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJPZG3DrXRudXTDrSBvZHBvdsSbZG5vc3RpOiB0eXRvIG7DoXN0cm9qZSBzbG91xb7DrSBwcm8gesOhYmF2dSBhIG5lcMWZZWRzdGF2dWrDrSBmb3JtdSBmaW5hbsSNbsOtaG8gcG9yYWRlbnN0dsOtLiIsInNwaW4iOiJSb3p0b8SNaXQiLCJhdmFpbGFibGVfY29pbnMiOiJEb3N0dXBuw6kgbWluY2UifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJBa3R1YWxpemFjZSBjZW55IENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiJDZWxrb3bDoSB0csW+bsOtIGthcC4iLCIyNGhfdm9sIjoiT2JqZW0gKDI0IGguKSIsImRvbSI6IkRvbSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiJCdXJ6YSIsInBhaXIiOiJQw6FyIiwicHJpY2UiOiJDZW5hIiwidm9sdW1lIjoiT2JqZW0iLCJ0cnVzdF9zY29yZSI6IlNrw7NyZSBkxa92xJtyeWhvZG5vc3RpIiwidmlld19wcmljZV9jaGFydCI6IlpvYnJheml0IGNlbm92w70gZ3JhZiIsInBvd2VyZWRfYnkiOiJWeXXFvsOtdsOhICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6IlpvYnJheml0IHbFoWVjaG55IHRyaHkgcHJvICV7Y29pbn0ifX0nKX0sYzY5YTpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPSFuKCI5ZTFlIikmJiFuKCI3OWU1IikoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuKCIyMzBlIikoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sYzg5NDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOwovKioKICAqIHZ1ZS1jdXN0b20tZWxlbWVudCB2My4yLjYKICAqIChjKSAyMDE4IEthcm9sIEZhYmphxYRjenVrCiAgKiBAbGljZW5zZSBNSVQKICAqL2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfU9iamVjdC5zZXRQcm90b3R5cGVPZj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHI7ci5iaW5kKE9iamVjdCk7ZnVuY3Rpb24gaSgpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmInVuZGVmaW5lZCIhPT10eXBlb2YgUmVmbGVjdCYmInVuZGVmaW5lZCIhPT10eXBlb2YgUHJveHkmJiFPYmplY3QuaXNTZWFsZWQoUHJveHkpfXZhciBhPWkoKSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpO2Z1bmN0aW9uIHMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBjKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBsKGUsdCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdSgpe3JldHVybiBSZWZsZWN0LmNvbnN0cnVjdChIVE1MRWxlbWVudCxbXSx0aGlzLl9fcHJvdG9fXy5jb25zdHJ1Y3Rvcil9ZnVuY3Rpb24gZChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgY3VzdG9tRWxlbWVudHMpe2lmKGEpe3ZhciBuPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oZSl7dmFyIHQ7cyh0aGlzLG4pO3ZhciByPWModGhpcywobi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKSkuY2FsbCh0aGlzKSksYT1lP0hUTUxFbGVtZW50LmNhbGwoZSk6cjtyZXR1cm4gaS5jYWxsKGEpLHQ9YSxjKHIsdCl9cmV0dXJuIGwobixlKSxvKG4sbnVsbCxbe2tleToib2JzZXJ2ZWRBdHRyaWJ1dGVzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5vYnNlcnZlZEF0dHJpYnV0ZXN8fFtdfX1dKSxufSh1KTtyZXR1cm4gbi5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2s9ZCxuLnByb3RvdHlwZS5kaXNjb25uZWN0ZWRDYWxsYmFjaz1wLG4ucHJvdG90eXBlLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaz1mLGgoZSxuKSxufXZhciByPWZ1bmN0aW9uKGUpe3ZhciB0PWU/SFRNTEVsZW1lbnQuY2FsbChlKTp0aGlzO3JldHVybiBpLmNhbGwodCksdH07cmV0dXJuIHIub2JzZXJ2ZWRBdHRyaWJ1dGVzPXQub2JzZXJ2ZWRBdHRyaWJ1dGVzfHxbXSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfX0pLHIucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrPWQsci5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s9cCxyLnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s9ZixoKGUscikscn1mdW5jdGlvbiBpKCl7ITA9PT10LnNoYWRvdyYmSFRNTEVsZW1lbnQucHJvdG90eXBlLmF0dGFjaFNoYWRvdyYmdGhpcy5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksImZ1bmN0aW9uIj09PXR5cGVvZiB0LmNvbnN0cnVjdG9yQ2FsbGJhY2smJnQuY29uc3RydWN0b3JDYWxsYmFjay5jYWxsKHRoaXMpfWZ1bmN0aW9uIGQoKXsiZnVuY3Rpb24iPT09dHlwZW9mIHQuY29ubmVjdGVkQ2FsbGJhY2smJnQuY29ubmVjdGVkQ2FsbGJhY2suY2FsbCh0aGlzKX1mdW5jdGlvbiBwKCl7ImZ1bmN0aW9uIj09PXR5cGVvZiB0LmRpc2Nvbm5lY3RlZENhbGxiYWNrJiZ0LmRpc2Nvbm5lY3RlZENhbGxiYWNrLmNhbGwodGhpcyl9ZnVuY3Rpb24gZihlLG4scil7ImZ1bmN0aW9uIj09PXR5cGVvZiB0LmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayYmdC5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2suY2FsbCh0aGlzLGUsbixyKX1mdW5jdGlvbiBoKGUsdCl7dmFyIG49Y3VzdG9tRWxlbWVudHMuZ2V0KGUpO3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIG4/bjpjdXN0b21FbGVtZW50cy5kZWZpbmUoZSx0KX19T2JqZWN0LnNldFByb3RvdHlwZU9mKHUucHJvdG90eXBlLEhUTUxFbGVtZW50LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHUsSFRNTEVsZW1lbnQpO3ZhciBwPS8tKFx3KS9nLGY9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShwLChmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKToiIn0pKX0saD0vKFteLV0pKFtBLVpdKS9nLG09ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShoLCIkMS0kMiIpLnJlcGxhY2UoaCwiJDEtJDIiKS50b0xvd2VyQ2FzZSgpfTtmdW5jdGlvbiBfKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLG49ZS5sZW5ndGgtdCxyPW5ldyBBcnJheShuKTt3aGlsZShuLS0pcltuXT1lW24rdF07cmV0dXJuIHJ9dmFyIGc9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O2Z1bmN0aW9uIHYoZSx0KXt2YXIgbj1lLHI9WyJ0cnVlIiwiZmFsc2UiXS5pbmRleE9mKGUpPi0xLGk9cGFyc2VGbG9hdChuLDEwKSxhPSFpc05hTihpKSYmaXNGaW5pdGUobikmJiJzdHJpbmciPT09dHlwZW9mIG4mJiFuLm1hdGNoKC9eMCtbXi5dXGQqJC9nKTtyZXR1cm4gdCYmdCE9PUJvb2xlYW4mJigidW5kZWZpbmVkIj09PXR5cGVvZiBuPyJ1bmRlZmluZWQiOmcobikpIT09dD9uPXQoZSk6cnx8dD09PUJvb2xlYW4/bj0iIj09PW58fCJ0cnVlIj09PW46YSYmKG49aSksbn1mdW5jdGlvbiB5KGUsdCl7aWYoZSYmZS5sZW5ndGgpZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1mKGUpOy0xPT09dC5jYW1lbENhc2UuaW5kZXhPZihuKSYmdC5jYW1lbENhc2UucHVzaChuKX0pKTtlbHNlIGlmKGUmJiJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT09dHlwZW9mIGU/InVuZGVmaW5lZCI6ZyhlKSkpZm9yKHZhciBuIGluIGUpe3ZhciByPWYobik7LTE9PT10LmNhbWVsQ2FzZS5pbmRleE9mKHIpJiZ0LmNhbWVsQ2FzZS5wdXNoKHIpLGVbcl0mJmVbcl0udHlwZSYmKHQudHlwZXNbbl09W10uY29uY2F0KGVbcl0udHlwZSlbMF0pfX1mdW5jdGlvbiBiKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9e2NhbWVsQ2FzZTpbXSxoeXBoZW5hdGU6W10sdHlwZXM6e319O2lmKGUubWl4aW5zJiZlLm1peGlucy5mb3JFYWNoKChmdW5jdGlvbihlKXt5KGUucHJvcHMsdCl9KSksZS5leHRlbmRzJiZlLmV4dGVuZHMucHJvcHMpe3ZhciBuPWUuZXh0ZW5kcy5wcm9wczt5KG4sdCl9cmV0dXJuIHkoZS5wcm9wcyx0KSx0LmNhbWVsQ2FzZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0Lmh5cGhlbmF0ZS5wdXNoKG0oZSkpfSkpLHR9ZnVuY3Rpb24gdyhlLHQpe3QuY2FtZWxDYXNlLmZvckVhY2goKGZ1bmN0aW9uKG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX192dWVfY3VzdG9tX2VsZW1lbnRfX1tuXX0sc2V0OmZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiIT09KCJ1bmRlZmluZWQiPT09dHlwZW9mIGU/InVuZGVmaW5lZCI6ZyhlKSkmJiJmdW5jdGlvbiIhPT10eXBlb2YgZXx8IXRoaXMuX192dWVfY3VzdG9tX2VsZW1lbnRfXyl7dmFyIG49dC50eXBlc1t0LmNhbWVsQ2FzZVtyXV07dGhpcy5zZXRBdHRyaWJ1dGUodC5oeXBoZW5hdGVbcl0sdihlLG4pKX1lbHNle3ZhciBpPXQuY2FtZWxDYXNlW3JdO3RoaXMuX192dWVfY3VzdG9tX2VsZW1lbnRfX1tpXT1lfX19KX0pKX1mdW5jdGlvbiB4KGUsdCxuKXt2YXIgcj10LnByb3BzRGF0YXx8e307cmV0dXJuIG4uaHlwaGVuYXRlLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIGE9bi5jYW1lbENhc2VbaV0sbz1lLmF0dHJpYnV0ZXNbdF18fGVbYV0scz1udWxsO24udHlwZXNbYV0mJihzPW4udHlwZXNbYV0pLG8gaW5zdGFuY2VvZiBBdHRyP3JbYV09dihvLnZhbHVlLHMpOiJ1bmRlZmluZWQiIT09dHlwZW9mIG8mJihyW2FdPW8pfSkpLHJ9ZnVuY3Rpb24gayhlKXt2YXIgdD17fTtyZXR1cm4gXyhlLmF0dHJpYnV0ZXMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbInZ1ZS1zbG90Ij09PWUubm9kZU5hbWU/InNsb3QiOmUubm9kZU5hbWVdPWUubm9kZVZhbHVlfSkpLHR9ZnVuY3Rpb24gQyhlKXtpZihlLmNoaWxkTm9kZXMubGVuZ3RoKXJldHVybiBlLmNoaWxkTm9kZXM7aWYoZS5jb250ZW50JiZlLmNvbnRlbnQuY2hpbGROb2RlcyYmZS5jb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoKXJldHVybiBlLmNvbnRlbnQuY2hpbGROb2Rlczt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5pbm5lckhUTUw9ZS5pbm5lckhUTUwsdC5jaGlsZE5vZGVzfWZ1bmN0aW9uIFMoZSx0LG4pe3ZhciByPUModCksaT1fKHIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIiN0ZXh0Ij09PXQubm9kZU5hbWU/dC5ub2RlVmFsdWU6ZSh0LnRhZ05hbWUse2F0dHJzOmsodCksZG9tUHJvcHM6e2lubmVySFRNTDp0LmlubmVySFRNTH19KX0pKTtyZXR1cm4gbi5zbG90PXQuaWQsZSgidGVtcGxhdGUiLG4saSl9ZnVuY3Rpb24gUCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSx0PWFyZ3VtZW50c1sxXSxuPVtdO3JldHVybiBfKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKCIjdGV4dCI9PT1lLm5vZGVOYW1lKWUubm9kZVZhbHVlLnRyaW0oKSYmbi5wdXNoKHQoInNwYW4iLGUubm9kZVZhbHVlKSk7ZWxzZSBpZigiI2NvbW1lbnQiIT09ZS5ub2RlTmFtZSl7dmFyIHI9ayhlKSxpPXthdHRyczpyLGRvbVByb3BzOntpbm5lckhUTUw6IiI9PT1lLmlubmVySFRNTD9lLmlubmVyVGV4dDplLmlubmVySFRNTH19O3Iuc2xvdCYmKGkuc2xvdD1yLnNsb3Qsci5zbG90PXZvaWQgMCk7dmFyIGE9IlRFTVBMQVRFIj09PWUudGFnTmFtZT9TKHQsZSxpKTp0KGUudGFnTmFtZSxpKTtuLnB1c2goYSl9fSkpLG59ZnVuY3Rpb24gTShlLHQpe3ZhciBuPXtidWJibGVzOiExLGNhbmNlbGFibGU6ITEsZGV0YWlsOnR9LHI9dm9pZCAwO3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93LkN1c3RvbUV2ZW50P3I9bmV3IEN1c3RvbUV2ZW50KGUsbik6KHI9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkN1c3RvbUV2ZW50Iiksci5pbml0Q3VzdG9tRXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlLG4uZGV0YWlsKSkscn1mdW5jdGlvbiBBKGUsdCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheShuPjI/bi0yOjApLGk9MjtpPG47aSsrKXJbaS0yXT1hcmd1bWVudHNbaV07dmFyIGE9TSh0LFtdLmNvbmNhdChyKSk7ZS5kaXNwYXRjaEV2ZW50KGEpfWZ1bmN0aW9uIE8oZSx0LG4scixpKXtpZighZS5fX3Z1ZV9jdXN0b21fZWxlbWVudF9fKXt2YXIgYT1mdW5jdGlvbigpe3RoaXMuJGVtaXQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQsbj1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkobiksaT0wO2k8bjtpKyspcltpXT1hcmd1bWVudHNbaV07QS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChyKSksdGhpcy5fX3Byb3RvX18mJih0PXRoaXMuX19wcm90b19fLiRlbWl0KS5jYWxsLmFwcGx5KHQsW3RoaXNdLmNvbmNhdChyKSl9fSxvPXQudXRpbC5leHRlbmQoe30sbikscz14KGUsbyxyKSxjPXQudmVyc2lvbiYmcGFyc2VJbnQodC52ZXJzaW9uLnNwbGl0KCIuIilbMF0sMTApfHwwO2lmKG8uYmVmb3JlQ3JlYXRlPVtdLmNvbmNhdChvLmJlZm9yZUNyZWF0ZXx8W10sYSksby5fY29tcGlsZWQpe3ZhciBsPXt9O28uX0N0b3ImJihsPU9iamVjdC52YWx1ZXMoby5fQ3RvcilbMF0ub3B0aW9ucyksbC5iZWZvcmVDcmVhdGU9by5iZWZvcmVDcmVhdGV9dmFyIHU9dm9pZCAwO2lmKGM+PTIpe3ZhciBkPWUuY2xvbmVOb2RlKCEwKS5jaGlsZE5vZGVzO3U9e3Byb3BzRGF0YTpzLHByb3BzOnIuY2FtZWxDYXNlLGNvbXB1dGVkOntyZWFjdGl2ZVByb3BzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXt9O3JldHVybiByLmNhbWVsQ2FzZS5mb3JFYWNoKChmdW5jdGlvbihuKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBlW25dJiYodFtuXT1lW25dKX0pKSx0fX0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXtwcm9wczp0aGlzLnJlYWN0aXZlUHJvcHN9O3JldHVybiBlKG8sdCxQKGQsZSkpfX19ZWxzZSBpZigxPT09Yyl1PW8sdS5wcm9wc0RhdGE9cztlbHNle3U9bzt2YXIgcD17fTtPYmplY3Qua2V5cyhzKS5mb3JFYWNoKChmdW5jdGlvbihlKXtwW2VdPXtkZWZhdWx0OnNbZV19fSkpLHUucHJvcHM9cH12YXIgZj1jPj0yPyI8ZGl2PjwvZGl2PiI6KCI8ZGl2PiIrZS5pbm5lckhUTUwrIjwvZGl2PiIpLnJlcGxhY2UoL3Z1ZS1zbG90PS9nLCJzbG90PSIpO2lmKGkuc2hhZG93JiZlLnNoYWRvd1Jvb3Q/KGUuc2hhZG93Um9vdC5pbm5lckhUTUw9Zix1LmVsPWUuc2hhZG93Um9vdC5jaGlsZHJlblswXSk6KGUuaW5uZXJIVE1MPWYsdS5lbD1lLmNoaWxkcmVuWzBdKSx3KGUsciksImZ1bmN0aW9uIj09PXR5cGVvZiBpLmJlZm9yZUNyZWF0ZVZ1ZUluc3RhbmNlJiYodT1pLmJlZm9yZUNyZWF0ZVZ1ZUluc3RhbmNlKHUpfHx1KSxlLl9fdnVlX2N1c3RvbV9lbGVtZW50X189bmV3IHQodSksZS5fX3Z1ZV9jdXN0b21fZWxlbWVudF9wcm9wc19fPXIsZS5nZXRWdWVJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBlLl9fdnVlX2N1c3RvbV9lbGVtZW50X18uJGNoaWxkcmVuWzBdfSxpLnNoYWRvdyYmaS5zaGFkb3dDc3MmJmUuc2hhZG93Um9vdCl7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtoLnR5cGU9InRleHQvY3NzIixoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGkuc2hhZG93Q3NzKSksZS5zaGFkb3dSb290LmFwcGVuZENoaWxkKGgpfWUucmVtb3ZlQXR0cmlidXRlKCJ2Y2UtY2xvYWsiKSxlLnNldEF0dHJpYnV0ZSgidmNlLXJlYWR5IiwiIiksQShlLCJ2Y2UtcmVhZHkiKX19ZnVuY3Rpb24gRChlKXtlLmN1c3RvbUVsZW1lbnQ9ZnVuY3Rpb24odCxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30saT0iZnVuY3Rpb24iPT09dHlwZW9mIG4sYT1pJiZ7cHJvcHM6ci5wcm9wc3x8W119LG89YihpP2E6bikscz1kKHQse2NvbnN0cnVjdG9yQ2FsbGJhY2s6ZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT09dHlwZW9mIHIuY29uc3RydWN0b3JDYWxsYmFjayYmci5jb25zdHJ1Y3RvckNhbGxiYWNrLmNhbGwodGhpcyl9LGNvbm5lY3RlZENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxzPWkmJm4oKSxjPXMmJnMudGhlbiYmImZ1bmN0aW9uIj09PXR5cGVvZiBzLnRoZW47aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByLmNvbm5lY3RlZENhbGxiYWNrJiZyLmNvbm5lY3RlZENhbGxiYWNrLmNhbGwodGhpcyksaSYmIWMpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBjb21wb25lbnQgIit0KyIgZG8gbm90IHJldHVybnMgUHJvbWlzZSIpO3RoaXMuX19kZXRhY2hlZF9ffHwoYz9zLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBuPWIodCk7TyhhLGUsdCxuLHIpLCJmdW5jdGlvbiI9PT10eXBlb2Ygci52dWVJbnN0YW5jZUNyZWF0ZWRDYWxsYmFjayYmci52dWVJbnN0YW5jZUNyZWF0ZWRDYWxsYmFjay5jYWxsKGEpfSkpOihPKHRoaXMsZSxuLG8sciksImZ1bmN0aW9uIj09PXR5cGVvZiByLnZ1ZUluc3RhbmNlQ3JlYXRlZENhbGxiYWNrJiZyLnZ1ZUluc3RhbmNlQ3JlYXRlZENhbGxiYWNrLmNhbGwodGhpcykpKSx0aGlzLl9fZGV0YWNoZWRfXz0hMX0sZGlzY29ubmVjdGVkQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX19kZXRhY2hlZF9fPSEwLCJmdW5jdGlvbiI9PT10eXBlb2Ygci5kaXNjb25uZWN0ZWRDYWxsYmFjayYmci5kaXNjb25uZWN0ZWRDYWxsYmFjay5jYWxsKHRoaXMpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5fX2RldGFjaGVkX18mJmUuX192dWVfY3VzdG9tX2VsZW1lbnRfXyYmKGUuX192dWVfY3VzdG9tX2VsZW1lbnRfXy4kZGVzdHJveSghMCksZGVsZXRlIGUuX192dWVfY3VzdG9tX2VsZW1lbnRfXyxkZWxldGUgZS5fX3Z1ZV9jdXN0b21fZWxlbWVudF9wcm9wc19fKX0pLHIuZGVzdHJveVRpbWVvdXR8fDNlMyl9LGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjazpmdW5jdGlvbihlLHQsbil7aWYodGhpcy5fX3Z1ZV9jdXN0b21fZWxlbWVudF9fJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBuKXt2YXIgaT1mKGUpOyJmdW5jdGlvbiI9PT10eXBlb2Ygci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2smJnIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrLmNhbGwodGhpcyxlLHQsbik7dmFyIGE9dGhpcy5fX3Z1ZV9jdXN0b21fZWxlbWVudF9wcm9wc19fLnR5cGVzW2ldO3RoaXMuX192dWVfY3VzdG9tX2VsZW1lbnRfX1tpXT12KG4sYSl9fSxvYnNlcnZlZEF0dHJpYnV0ZXM6by5oeXBoZW5hdGUsc2hhZG93OiEhci5zaGFkb3cmJiEhSFRNTEVsZW1lbnQucHJvdG90eXBlLmF0dGFjaFNoYWRvd30pO3JldHVybiBzfX0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5WdWUmJih3aW5kb3cuVnVlLnVzZShEKSxELmluc3RhbGxlZCYmKEQuaW5zdGFsbGVkPSExKSksdFsiYSJdPUR9LGM4YmE6ZnVuY3Rpb24oZSx0KXt2YXIgbjtuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCk7dHJ5e249bnx8bmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9Y2F0Y2gocil7Im9iamVjdCI9PT10eXBlb2Ygd2luZG93JiYobj13aW5kb3cpfWUuZXhwb3J0cz1ufSxjOGJiOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigiNTRhMSIpfSxjYTVhOmZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09ZT8iIjplLCIpXyIsKCsrbityKS50b1N0cmluZygzNikpfX0sY2E5ZjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjRkMDEiKSxpPW4oImYzNjciKSxhPW4oIjU2MmUiKSxvPW4oIjFiN2YiKSxzPW4oImIzZmQiKSxjPXIobygpKTtpKGMse2dldFBvbHlmaWxsOm8saW1wbGVtZW50YXRpb246YSxzaGltOnN9KSxlLmV4cG9ydHM9Y30sY2FkZjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjljNmMiKSxpPW4oImQ1M2IiKSxhPW4oIjg0ZjIiKSxvPW4oIjY4MjEiKTtlLmV4cG9ydHM9bigiMDFmOSIpKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKGUsdCl7dGhpcy5fdD1vKGUpLHRoaXMuX2k9MCx0aGlzLl9rPXR9KSwoZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90LHQ9dGhpcy5fayxuPXRoaXMuX2krKztyZXR1cm4hZXx8bj49ZS5sZW5ndGg/KHRoaXMuX3Q9dm9pZCAwLGkoMSkpOmkoMCwia2V5cyI9PXQ/bjoidmFsdWVzIj09dD9lW25dOltuLGVbbl1dKX0pLCJ2YWx1ZXMiKSxhLkFyZ3VtZW50cz1hLkFycmF5LHIoImtleXMiKSxyKCJ2YWx1ZXMiKSxyKCJlbnRyaWVzIil9LGNiN2M6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImQzZjQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIXIoZSkpdGhyb3cgVHlwZUVycm9yKGUrIiBpcyBub3QgYW4gb2JqZWN0ISIpO3JldHVybiBlfX0sY2NiOTpmdW5jdGlvbihlLHQsbil7dC5mPW4oIjUxNjgiKX0sY2UxMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiNjlhOCIpLGk9bigiNjgyMSIpLGE9bigiYzM2NiIpKCExKSxvPW4oIjYxM2IiKSgiSUVfUFJPVE8iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixzPWkoZSksYz0wLGw9W107Zm9yKG4gaW4gcyluIT1vJiZyKHMsbikmJmwucHVzaChuKTt3aGlsZSh0Lmxlbmd0aD5jKXIocyxuPXRbYysrXSkmJih+YShsLG4pfHxsLnB1c2gobikpO3JldHVybiBsfX0sZDAyNDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIxZDAiKSxpPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG89ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKylhLmNhbGwoZSxyKSYmKG51bGw9PW4/dChlW3JdLHIsZSk6dC5jYWxsKG4sZVtyXSxyLGUpKX0scz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKW51bGw9PW4/dChlLmNoYXJBdChyKSxyLGUpOnQuY2FsbChuLGUuY2hhckF0KHIpLHIsZSl9LGM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBlKWEuY2FsbChlLHIpJiYobnVsbD09bj90KGVbcl0scixlKTp0LmNhbGwobixlW3JdLHIsZSkpfSxsPWZ1bmN0aW9uKGUsdCxuKXtpZighcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpdGVyYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgYTthcmd1bWVudHMubGVuZ3RoPj0zJiYoYT1uKSwiW29iamVjdCBBcnJheV0iPT09aS5jYWxsKGUpP28oZSx0LGEpOiJzdHJpbmciPT09dHlwZW9mIGU/cyhlLHQsYSk6YyhlLHQsYSl9O2UuZXhwb3J0cz1sfSxkMzRhOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJSYW5nIHRyxb5uZSBrYXBpdGFsaXphY2lqZSIsIm1jYXAiOiJUcsW+bmEga2FwaXRhbGl6YWNpamEiLCIyNGhfdm9sdW1lIjoiT2JzZWcgdiAyNCBoIiwiMjRoX2hpZ2hfbG93IjoiTmFqdi4vbmFqbS4gdiAyNCBoIn0sImNvaW5fY29tcGFyZV9jaGFydF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlVwb3JhYmxqYSB0ZWhub2xvZ2lqbyAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJQcmltZXJqYXZhIGNlbiBrcmlwdG92YWx1dCIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiJQcmltZXJqYXZhIHRyxb5uZSBrYXBpdGFsaXphY2lqZSBrcmlwdG92YWx1dCJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlVwb3JhYmxqYSB0ZWhub2xvZ2lqbyAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiTmFqdi4gdiAyNCBoIiwiMjRoX2xvdyI6Ik5ham0uIHYgMjQgaCIsInZpZXdfcHJpY2VfY2hhcnQiOiJPZ2xlZCBncmFmaWtvbmEga292YW5jYSAle2NvaW59IiwicG93ZXJlZF9ieSI6IlVwb3JhYmxqYSB0ZWhub2xvZ2lqbyAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlVwb3JhYmxqYSB0ZWhub2xvZ2lqbyAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlVwb3JhYmxqYSB0ZWhub2xvZ2lqbyAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImJlYW1fd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJVcG9yYWJsamEgdGVobm9sb2dpam8gJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiJOYWp2LiB2IDI0IGgiLCIyNGhfbG93IjoiTmFqbS4gdiAyNCBoIiwidmlld19wcmljZV9jaGFydCI6Ik9nbGVkIGdyYWZpa29uYSBrb3ZhbmNhICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiVXBvcmFibGphIHRlaG5vbG9naWpvICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJPZ2xlZCBncmFmaWtvbmEga292YW5jYSAle2NvaW59IiwicG93ZXJlZF9ieSI6IlVwb3JhYmxqYSB0ZWhub2xvZ2lqbyAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJEcmV2ZXNuaSBwb2dsZWQga3JpcHRvdmFsdXQiLCJzdWJ0aXRsZSI6IihUb3AgJXt0b3B9IHBvIHRyxb5uaSBrYXBpdGFsaXphY2lqaSkiLCJwb3dlcmVkX2J5IjoiVXBvcmFibGphIHRlaG5vbG9naWpvICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJJemphdmEgbyBvbWVqaXR2aSBvZGdvdm9ybm9zdGk6IFRhIG9yb2RqYSBzbyBuYW1lbmplbmEgcmF6dmVkcmlsdSBpbiBuZSBwcmVkc3RhdmxqYWpvIGZpbmFuxI1uZWdhIHN2ZXRvdmFuamEuIiwic3BpbiI6IlphdnJ0aSIsImF2YWlsYWJsZV9jb2lucyI6IlJhenBvbG/FvmxqaXZpIGtvdmFuY2kifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJQb3NvZG9iaXRldiBjZW5lIENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiJTa3VwLiB0ci4ga2FwLiIsIjI0aF92b2wiOiJPYnNlZyB0cmdvdmFuamEgdiAyNCBoIiwiZG9tIjoiRG9taW5hbnRub3N0In0sImNvaW5fbWFya2V0X3RpY2tlcl9saXN0X3dpZGdldCI6eyJleGNoYW5nZSI6IkJvcnphIiwicGFpciI6IlBhciIsInByaWNlIjoiQ2VuYSIsInZvbHVtZSI6Ik9ic2VnIiwidHJ1c3Rfc2NvcmUiOiJPY2VuYSB6YXVwYW5qYSIsInZpZXdfcHJpY2VfY2hhcnQiOiJPZ2xlZCBjZW5pa2EiLCJwb3dlcmVkX2J5IjoiVXBvcmFibGphIHRlaG5vbG9naWpvICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6Ik9nbGVkIHZzZWggdHJnb3Yga292YW5jYSAle2NvaW59In19Jyl9LGQzZjQ6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgZT9udWxsIT09ZToiZnVuY3Rpb24iPT09dHlwZW9mIGV9fSxkNGFiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5jYWxsKGUpLG49IltvYmplY3QgQXJndW1lbnRzXSI9PT10O3JldHVybiBufHwobj0iW29iamVjdCBBcnJheV0iIT09dCYmbnVsbCE9PWUmJiJvYmplY3QiPT09dHlwZW9mIGUmJiJudW1iZXIiPT09dHlwZW9mIGUubGVuZ3RoJiZlLmxlbmd0aD49MCYmIltvYmplY3QgRnVuY3Rpb25dIj09PXIuY2FsbChlLmNhbGxlZSkpLG59fSxkNTI1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybnt1bnN1YnNjcmliZTpmdW5jdGlvbigpe319fW4uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0sZDUzYjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybnt2YWx1ZTp0LGRvbmU6ISFlfX19LGQ2Yzc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxhPUFycmF5LnByb3RvdHlwZS5zbGljZSxvPW4oImQ0YWIiKSxzPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsYz0hcy5jYWxsKHt0b1N0cmluZzpudWxsfSwidG9TdHJpbmciKSxsPXMuY2FsbCgoZnVuY3Rpb24oKXt9KSwicHJvdG90eXBlIiksdT1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gdCYmdC5wcm90b3R5cGU9PT1lfSxwPXskYXBwbGljYXRpb25DYWNoZTohMCwkY29uc29sZTohMCwkZXh0ZXJuYWw6ITAsJGZyYW1lOiEwLCRmcmFtZUVsZW1lbnQ6ITAsJGZyYW1lczohMCwkaW5uZXJIZWlnaHQ6ITAsJGlubmVyV2lkdGg6ITAsJG91dGVySGVpZ2h0OiEwLCRvdXRlcldpZHRoOiEwLCRwYWdlWE9mZnNldDohMCwkcGFnZVlPZmZzZXQ6ITAsJHBhcmVudDohMCwkc2Nyb2xsTGVmdDohMCwkc2Nyb2xsVG9wOiEwLCRzY3JvbGxYOiEwLCRzY3JvbGxZOiEwLCRzZWxmOiEwLCR3ZWJraXRJbmRleGVkREI6ITAsJHdlYmtpdFN0b3JhZ2VJbmZvOiEwLCR3aW5kb3c6ITB9LGY9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cpcmV0dXJuITE7Zm9yKHZhciBlIGluIHdpbmRvdyl0cnl7aWYoIXBbIiQiK2VdJiZyLmNhbGwod2luZG93LGUpJiZudWxsIT09d2luZG93W2VdJiYib2JqZWN0Ij09PXR5cGVvZiB3aW5kb3dbZV0pdHJ5e2Qod2luZG93W2VdKX1jYXRjaCh0KXtyZXR1cm4hMH19Y2F0Y2godCl7cmV0dXJuITB9cmV0dXJuITF9KCksaD1mdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3d8fCFmKXJldHVybiBkKGUpO3RyeXtyZXR1cm4gZChlKX1jYXRjaCh0KXtyZXR1cm4hMX19LG09ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCE9PWUmJiJvYmplY3QiPT09dHlwZW9mIGUsbj0iW29iamVjdCBGdW5jdGlvbl0iPT09aS5jYWxsKGUpLGE9byhlKSxzPXQmJiJbb2JqZWN0IFN0cmluZ10iPT09aS5jYWxsKGUpLGQ9W107aWYoIXQmJiFuJiYhYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIHA9bCYmbjtpZihzJiZlLmxlbmd0aD4wJiYhci5jYWxsKGUsMCkpZm9yKHZhciBmPTA7ZjxlLmxlbmd0aDsrK2YpZC5wdXNoKFN0cmluZyhmKSk7aWYoYSYmZS5sZW5ndGg+MClmb3IodmFyIG09MDttPGUubGVuZ3RoOysrbSlkLnB1c2goU3RyaW5nKG0pKTtlbHNlIGZvcih2YXIgXyBpbiBlKXAmJiJwcm90b3R5cGUiPT09X3x8IXIuY2FsbChlLF8pfHxkLnB1c2goU3RyaW5nKF8pKTtpZihjKWZvcih2YXIgZz1oKGUpLHY9MDt2PHUubGVuZ3RoOysrdilnJiYiY29uc3RydWN0b3IiPT09dVt2XXx8IXIuY2FsbChlLHVbdl0pfHxkLnB1c2godVt2XSk7cmV0dXJuIGR9O20uc2hpbT1mdW5jdGlvbigpe2lmKE9iamVjdC5rZXlzKXt2YXIgZT1mdW5jdGlvbigpe3JldHVybiAyPT09KE9iamVjdC5rZXlzKGFyZ3VtZW50cyl8fCIiKS5sZW5ndGh9KDEsMik7aWYoIWUpe3ZhciB0PU9iamVjdC5rZXlzO09iamVjdC5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBvKGUpP3QoYS5jYWxsKGUpKTp0KGUpfX19ZWxzZSBPYmplY3Qua2V5cz1tO3JldHVybiBPYmplY3Qua2V5c3x8bX0sZS5leHBvcnRzPW19LGQ2ZGE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIFN5bWJvbHx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXJldHVybiExO2lmKCJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcilyZXR1cm4hMDt2YXIgZT17fSx0PVN5bWJvbCgidGVzdCIpLG49T2JqZWN0KHQpO2lmKCJzdHJpbmciPT09dHlwZW9mIHQpcmV0dXJuITE7aWYoIltvYmplY3QgU3ltYm9sXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpcmV0dXJuITE7aWYoIltvYmplY3QgU3ltYm9sXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobikpcmV0dXJuITE7dmFyIHI9NDI7Zm9yKHQgaW4gZVt0XT1yLGUpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBPYmplY3Qua2V5cyYmMCE9PU9iamVjdC5rZXlzKGUpLmxlbmd0aClyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzJiYwIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkubGVuZ3RoKXJldHVybiExO3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7aWYoMSE9PWkubGVuZ3RofHxpWzBdIT09dClyZXR1cm4hMTtpZighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsdCkpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7aWYoYS52YWx1ZSE9PXJ8fCEwIT09YS5lbnVtZXJhYmxlKXJldHVybiExfXJldHVybiEwfX0sZDc1MjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiNzcyNiIpLnBhcnNlRmxvYXQsaT1uKCJhYTc3IikudHJpbTtlLmV4cG9ydHM9MS9yKG4oImZkZWYiKSsiLTAiKSE9PS0xLzA/ZnVuY3Rpb24oZSl7dmFyIHQ9aShTdHJpbmcoZSksMyksbj1yKHQpO3JldHVybiAwPT09biYmIi0iPT10LmNoYXJBdCgwKT8tMDpufTpyfSxkODUwOmZ1bmN0aW9uKGUsdCxuKXt0PWUuZXhwb3J0cz1uKCIyNGZiIikoITEpLHQuaShuKCI3NWZjIiksIiIpLHQucHVzaChbZS5pLCIuY2ctY29udGFpbmVyIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7XG5cbiAgY29sb3I6ICM0YzRjNGM7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICBmb250LXNpemU6IDEycHg7XG5cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5jZy1jb250YWluZXJbZGF0YS1sb2FkaW5nXSAuY2ctd2lkZ2V0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY2ctY29udGFpbmVyW2RhdGEtbG9hZGluZ10gY2FudmFzIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXgtaGVpZ2h0OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5jZy13aWRnZXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uY2ctd2lkZ2V0IGEge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjNGM0YzRjO1xufVxuXG4uY2ctbGVmdC1wYW5lbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXg6IDEgMSBhdXRvO1xuXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmNnLXJpZ2h0LXBhbmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogMiAyIGF1dG87XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5zbWFsbCAuY2ctd2lkZ2V0IHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5zbWFsbCAuY2ctbGVmdC1wYW5lbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXg6IDEgMSBhdXRvO1xufVxuLnNtYWxsIC5jZy1yaWdodC1wYW5lbCB7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG59XG4uc21hbGwgLmNnLXRpY2tlciB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLmNnLXBvd2VyZWQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTIwcHg7XG4gIHJpZ2h0OiAwO1xufVxuXG4uY2ctcHJpY2UtY2hhcnQtbGluayB7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDEwMDtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmNnLXdpZGdldCBpbWcge1xuICB3aWR0aDogMzVweCAhaW1wb3J0YW50O1xufVxuXG4uY2ctY29udGFpbmVyIGNhbnZhcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGYwYzA7XG59XG5cbi5sYXJnZSAuY2ctbGctaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uc21hbGwgLmNnLXNtLWhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuIiwiIl0pfSxkODY0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI3OWFhIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtpZihyKGUpLHZvaWQgMD09PXQpcmV0dXJuIGU7c3dpdGNoKG4pe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUuY2FsbCh0LG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIGUuY2FsbCh0LG4scil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24obixyLGkpe3JldHVybiBlLmNhbGwodCxuLHIsaSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19fSxkOGQ2OmZ1bmN0aW9uKGUsdCxuKXtuKCIxNjU0IiksbigiNmMxYyIpLGUuZXhwb3J0cz1uKCJjY2I5IikuZigiaXRlcmF0b3IiKX0sZDhlODpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBhIGZ1bmN0aW9uISIpO3JldHVybiBlfX0sZDlmNjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiZTRhZSIpLGk9bigiNzk0YiIpLGE9bigiMWJjMyIpLG89T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZj1uKCI4ZTYwIik/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxuKXtpZihyKGUpLHQ9YSh0LCEwKSxyKG4pLGkpdHJ5e3JldHVybiBvKGUsdCxuKX1jYXRjaChzKXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gbiYmKGVbdF09bi52YWx1ZSksZX19LGRiZGI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjU4NGEiKSxpPW4oImU1M2QiKSxhPSJfX2NvcmUtanNfc2hhcmVkX18iLG89aVthXXx8KGlbYV09e30pOyhlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gb1tlXXx8KG9bZV09dm9pZCAwIT09dD90Ont9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246ci52ZXJzaW9uLG1vZGU6bigiYjhlMyIpPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSl9LGRjZDA6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6ItCg0LXQudGC0LjQvdCzINC/0L4g0L/QsNC30LDRgNC90LAg0LrQsNC/0LjRgtCw0LvQuNC30LDRhtC40Y8iLCJtY2FwIjoi0J/QsNC30LDRgNC90LAg0LrQsNC/0LjRgtCw0LvQuNC30LDRhtC40Y8iLCIyNGhfdm9sdW1lIjoi0J7QsdC10Lwg0LfQsCAyNCDRhy4iLCIyNGhfaGlnaF9sb3ciOiLQndCw0Lkt0LLQuNGB0L7QutCwL9C90LDQuS3QvdC40YHQutCwINGB0YLQvtC50L3QvtGB0YIg0LfQsCAyNCDRhy4ifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/QvtC00LTRitGA0LbQsCDRgdC1INC+0YIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoi0KHRgNCw0LLQvdC10L3QuNC1INC90LAg0YbQtdC90LjRgtC1INC90LAg0LrRgNC40L/RgtC+0LLQsNC70YPRgtC40YLQtSIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiLQodGA0LDQstC90LXQvdC40LUg0L3QsCDQv9Cw0LfQsNGA0L3QsNGC0LAg0LrQsNC/0LjRgtCw0LvQuNC30LDRhtC40Y8g0L3QsCDQutGA0LjQv9GC0L7QstCw0LvRg9GC0LjRgtC1In0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/QvtC00LTRitGA0LbQsCDRgdC1INC+0YIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6ItCd0LDQuS3QstC40YHQvtC60LAg0YHRgtC+0LnQvdC+0YHRgiDQt9CwIDI0INGHLiIsIjI0aF9sb3ciOiLQndCw0Lkt0L3QuNGB0LrQsCDRgdGC0L7QudC90L7RgdGCINC30LAgMjQg0YcuIiwidmlld19wcmljZV9jaGFydCI6ItCf0YDQtdCz0LvQtdC0INC90LAg0LPRgNCw0YTQuNC60LDRgtCwINC90LAg0YbQtdC90LjRgtC1INC90LAgJXtjb2lufSIsInBvd2VyZWRfYnkiOiLQn9C+0LTQtNGK0YDQttCwINGB0LUg0L7RgiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6ItCf0L7QtNC00YrRgNC20LAg0YHQtSDQvtGCICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/QvtC00LTRitGA0LbQsCDRgdC1INC+0YIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5Ijoi0J/QvtC00LTRitGA0LbQsCDRgdC1INC+0YIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiLQndCw0Lkt0LLQuNGB0L7QutCwINGB0YLQvtC50L3QvtGB0YIg0LfQsCAyNCDRhy4iLCIyNGhfbG93Ijoi0J3QsNC5LdC90LjRgdC60LAg0YHRgtC+0LnQvdC+0YHRgiDQt9CwIDI0INGHLiIsInZpZXdfcHJpY2VfY2hhcnQiOiLQn9GA0LXQs9C70LXQtCDQvdCwINCz0YDQsNGE0LjQutCw0YLQsCDQvdCwINGG0LXQvdC40YLQtSDQvdCwICV7Y29pbn0iLCJwb3dlcmVkX2J5Ijoi0J/QvtC00LTRitGA0LbQsCDRgdC1INC+0YIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6ItCf0YDQtdCz0LvQtdC0INC90LAg0LPRgNCw0YTQuNC60LDRgtCwINC90LAg0YbQtdC90LjRgtC1INC90LAgJXtjb2lufSIsInBvd2VyZWRfYnkiOiLQn9C+0LTQtNGK0YDQttCwINGB0LUg0L7RgiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiLQlNGK0YDQstC+0LLQuNC00L3QsCDQutCw0YDRgtCwINC90LAg0LrRgNC40L/RgtC+0LLQsNC70YPRgtC40YLQtSIsInN1YnRpdGxlIjoiKNCi0L7QvyAle3RvcH0g0L/QviDQv9Cw0LfQsNGA0L3QsCDQutCw0L/QuNGC0LDQu9C40LfQsNGG0LjRjykiLCJwb3dlcmVkX2J5Ijoi0J/QvtC00LTRitGA0LbQsCDRgdC1INC+0YIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6ItCe0YLQutCw0Lcg0L7RgiDQvtGC0LPQvtCy0L7RgNC90L7RgdGCOiDQotC10LfQuCDQuNC90YHRgtGA0YPQvNC10L3RgtC4INGB0LAg0LfQsCDRgNCw0LfQstC70LXRh9C10L3QuNC1INC4INC90LUg0L/RgNC10LTRgdGC0LDQstC70Y/QstCw0YIg0YTQuNC90LDQvdGB0L7QsiDRgdGK0LLQtdGCLiIsInNwaW4iOiLQn9C70LDRgtGE0L7RgNC80LAgU3BpbiIsImF2YWlsYWJsZV9jb2lucyI6ItCd0LDQu9C40YfQvdC4INCy0LDQu9GD0YLQuCJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6ItCQ0LrRgtGD0LDQu9C40LfQuNGA0LDQvdC1INC90LAg0YbQtdC90LjRgtC1INCyIENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiLQntCx0YnQsCDQv9Cw0LfQsNGA0L3QsCDQutCw0L/QuNGC0LDQu9C40LfQsNGG0LjRjyIsIjI0aF92b2wiOiLQntCx0LXQvCDQt9CwIDI0INGHLiIsImRvbSI6ItCU0L7QvC4ifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoi0JHQvtGA0YHQsCIsInBhaXIiOiLQlNCy0L7QudC60LAiLCJwcmljZSI6ItCm0LXQvdCwIiwidm9sdW1lIjoi0J7QsdC10LwiLCJ0cnVzdF9zY29yZSI6ItCg0LXQt9GD0LvRgtCw0YIg0LfQsCDQtNC+0LLQtdGA0LjQtSIsInZpZXdfcHJpY2VfY2hhcnQiOiLQn9GA0LXQs9C70LXQtCDQvdCwINCz0YDQsNGE0LjQutCw0YLQsCDQvdCwINGG0LXQvdC40YLQtSIsInBvd2VyZWRfYnkiOiLQn9C+0LTQtNGK0YDQttCwINGB0LUg0L7RgiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9Iiwidmlld19hbGwiOiLQn9GA0LXQs9C70LXQtCDQvdCwINCy0YHQuNGH0LrQuCDQv9Cw0LfQsNGA0Lgg0LfQsCAle2NvaW59In19Jyl9LGRkMTE6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IuyLnOqwgOy0neyVoSDsiJzsnIQiLCJtY2FwIjoi7Iuc6rCA7LSd7JWhIiwiMjRoX3ZvbHVtZSI6IjI07Iuc6rCEIOuzvOulqCIsIjI0aF9oaWdoX2xvdyI6IjI07Iuc6rCEIOqzoOqwgC/soIDqsIAifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDsoJzqs7UiLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IuyVlO2YuO2ZlO2PkCDqsIDqsqkg67mE6rWQIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IuyVlO2YuO2ZlO2PkCDsi5zqsIDstJ3slaEg67mE6rWQIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDsoJzqs7UifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNOyLnOqwhCDqs6DqsIAiLCIyNGhfbG93IjoiMjTsi5zqsIQg7KCA6rCAIiwidmlld19wcmljZV9jaGFydCI6IiV7Y29pbn0g6rCA6rKpIOywqO2KuCDsobDtmowiLCJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDsoJzqs7UifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDsoJzqs7UifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDsoJzqs7UifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0g7KCc6rO1In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6IjI07Iuc6rCEIOqzoOqwgCIsIjI0aF9sb3ciOiIyNOyLnOqwhCDsoIDqsIAiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSDqsIDqsqkg7LCo7Yq4IOyhsO2ajCIsInBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOygnOqztSJ9LCJjb2luX2NvbnZlcnRlcl93aWRnZXQiOnsidmlld19wcmljZV9jaGFydCI6IiV7Y29pbn0g6rCA6rKpIOywqO2KuCDsobDtmowiLCJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSDsoJzqs7UifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6IuyVlO2YuO2ZlO2PkCDrgpjrrLTsp4Drj4QiLCJzdWJ0aXRsZSI6Iijsi5zqsIDstJ3slaEg6riw7KSAIOyDgeychCAle3RvcH0g7L2U7J24KSIsInBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOygnOqztSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IuqzoOyngCDsgqztla06IOuzuCDrj4TqtazripQg7J6s66+466Gc66eMIO2ZnOyaqe2VoCDsiJgg7J6I7Iq164uI64ukLCDquIjsnLXsoIHsnbgg7J6Q66y47J20IOyVhOuLmeuLiOuLpC4iLCJzcGluIjoi7ZqM7KCEIiwiYXZhaWxhYmxlX2NvaW5zIjoi7IKs7JqpIOqwgOuKpSDsvZTsnbgifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJDb2luR2Vja28g6rCA6rKpIOyXheuNsOydtO2KuCIsInRvdGFsX21jYXAiOiLstJ0g7Iuc6rCA7LSd7JWhIiwiMjRoX3ZvbCI6IjI07Iuc6rCEIOqxsOuemOufiSIsImRvbSI6IuyngOuwsOugpSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiLqsbDrnpjshowiLCJwYWlyIjoi7IyNIiwicHJpY2UiOiLsi5zshLgiLCJ2b2x1bWUiOiLqsbDrnpjrn4kiLCJ0cnVzdF9zY29yZSI6IuyLoOuisOyngOyImCIsInZpZXdfcHJpY2VfY2hhcnQiOiLqsIDqsqkg7LCo7Yq4IOyhsO2ajCIsInBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IOygnOqztSIsInZpZXdfYWxsIjoi7KCE7LK0ICV7Y29pbn0g66eI7LyTIOyhsO2ajCJ9fScpfSxkZjdjOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIGk9ZVtyXTsiLiI9PT1pP2Uuc3BsaWNlKHIsMSk6Ii4uIj09PWk/KGUuc3BsaWNlKHIsMSksbisrKTpuJiYoZS5zcGxpY2UociwxKSxuLS0pfWlmKHQpZm9yKDtuLS07billLnVuc2hpZnQoIi4uIik7cmV0dXJuIGV9ZnVuY3Rpb24gcihlKXsic3RyaW5nIiE9PXR5cGVvZiBlJiYoZSs9IiIpO3ZhciB0LG49MCxyPS0xLGk9ITA7Zm9yKHQ9ZS5sZW5ndGgtMTt0Pj0wOy0tdClpZig0Nz09PWUuY2hhckNvZGVBdCh0KSl7aWYoIWkpe249dCsxO2JyZWFrfX1lbHNlLTE9PT1yJiYoaT0hMSxyPXQrMSk7cmV0dXJuLTE9PT1yPyIiOmUuc2xpY2UobixyKX1mdW5jdGlvbiBpKGUsdCl7aWYoZS5maWx0ZXIpcmV0dXJuIGUuZmlsdGVyKHQpO2Zvcih2YXIgbj1bXSxyPTA7cjxlLmxlbmd0aDtyKyspdChlW3JdLHIsZSkmJm4ucHVzaChlW3JdKTtyZXR1cm4gbn10LnJlc29sdmU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9IiIscj0hMSxhPWFyZ3VtZW50cy5sZW5ndGgtMTthPj0tMSYmIXI7YS0tKXt2YXIgbz1hPj0wP2FyZ3VtZW50c1thXTplLmN3ZCgpO2lmKCJzdHJpbmciIT09dHlwZW9mIG8pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKTtvJiYodD1vKyIvIit0LHI9Ii8iPT09by5jaGFyQXQoMCkpfXJldHVybiB0PW4oaSh0LnNwbGl0KCIvIiksKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pKSwhcikuam9pbigiLyIpLChyPyIvIjoiIikrdHx8Ii4ifSx0Lm5vcm1hbGl6ZT1mdW5jdGlvbihlKXt2YXIgcj10LmlzQWJzb2x1dGUoZSksbz0iLyI9PT1hKGUsLTEpO3JldHVybiBlPW4oaShlLnNwbGl0KCIvIiksKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pKSwhcikuam9pbigiLyIpLGV8fHJ8fChlPSIuIiksZSYmbyYmKGUrPSIvIiksKHI/Ii8iOiIiKStlfSx0LmlzQWJzb2x1dGU9ZnVuY3Rpb24oZSl7cmV0dXJuIi8iPT09ZS5jaGFyQXQoMCl9LHQuam9pbj1mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdC5ub3JtYWxpemUoaShlLChmdW5jdGlvbihlLHQpe2lmKCJzdHJpbmciIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MiKTtyZXR1cm4gZX0pKS5qb2luKCIvIikpfSx0LnJlbGF0aXZlPWZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZigiIiE9PWVbdF0pYnJlYWs7Zm9yKHZhciBuPWUubGVuZ3RoLTE7bj49MDtuLS0paWYoIiIhPT1lW25dKWJyZWFrO3JldHVybiB0Pm4/W106ZS5zbGljZSh0LG4tdCsxKX1lPXQucmVzb2x2ZShlKS5zdWJzdHIoMSksbj10LnJlc29sdmUobikuc3Vic3RyKDEpO2Zvcih2YXIgaT1yKGUuc3BsaXQoIi8iKSksYT1yKG4uc3BsaXQoIi8iKSksbz1NYXRoLm1pbihpLmxlbmd0aCxhLmxlbmd0aCkscz1vLGM9MDtjPG87YysrKWlmKGlbY10hPT1hW2NdKXtzPWM7YnJlYWt9dmFyIGw9W107Zm9yKGM9cztjPGkubGVuZ3RoO2MrKylsLnB1c2goIi4uIik7cmV0dXJuIGw9bC5jb25jYXQoYS5zbGljZShzKSksbC5qb2luKCIvIil9LHQuc2VwPSIvIix0LmRlbGltaXRlcj0iOiIsdC5kaXJuYW1lPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciIT09dHlwZW9mIGUmJihlKz0iIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIHQ9ZS5jaGFyQ29kZUF0KDApLG49NDc9PT10LHI9LTEsaT0hMCxhPWUubGVuZ3RoLTE7YT49MTstLWEpaWYodD1lLmNoYXJDb2RlQXQoYSksNDc9PT10KXtpZighaSl7cj1hO2JyZWFrfX1lbHNlIGk9ITE7cmV0dXJuLTE9PT1yP24/Ii8iOiIuIjpuJiYxPT09cj8iLyI6ZS5zbGljZSgwLHIpfSx0LmJhc2VuYW1lPWZ1bmN0aW9uKGUsdCl7dmFyIG49cihlKTtyZXR1cm4gdCYmbi5zdWJzdHIoLTEqdC5sZW5ndGgpPT09dCYmKG49bi5zdWJzdHIoMCxuLmxlbmd0aC10Lmxlbmd0aCkpLG59LHQuZXh0bmFtZT1mdW5jdGlvbihlKXsic3RyaW5nIiE9PXR5cGVvZiBlJiYoZSs9IiIpO2Zvcih2YXIgdD0tMSxuPTAscj0tMSxpPSEwLGE9MCxvPWUubGVuZ3RoLTE7bz49MDstLW8pe3ZhciBzPWUuY2hhckNvZGVBdChvKTtpZig0NyE9PXMpLTE9PT1yJiYoaT0hMSxyPW8rMSksNDY9PT1zPy0xPT09dD90PW86MSE9PWEmJihhPTEpOi0xIT09dCYmKGE9LTEpO2Vsc2UgaWYoIWkpe249bysxO2JyZWFrfX1yZXR1cm4tMT09PXR8fC0xPT09cnx8MD09PWF8fDE9PT1hJiZ0PT09ci0xJiZ0PT09bisxPyIiOmUuc2xpY2UodCxyKX07dmFyIGE9ImIiPT09ImFiIi5zdWJzdHIoLTEpP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5zdWJzdHIodCxuKX06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PDAmJih0PWUubGVuZ3RoK3QpLGUuc3Vic3RyKHQsbil9fSkuY2FsbCh0aGlzLG4oIjQzNjIiKSl9LGUxMWU6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZiIuc3BsaXQoIiwiKX0sZTRhZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiZjc3MiIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighcihlKSl0aHJvdyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBhbiBvYmplY3QhIik7cmV0dXJuIGV9fSxlNTNkOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpOyJudW1iZXIiPT10eXBlb2YgX19nJiYoX19nPW4pfSxlNmYzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCIwN2UzIiksaT1uKCIzNmMzIiksYT1uKCI1YjRlIikoITEpLG89bigiNTU1OSIpKCJJRV9QUk9UTyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLHM9aShlKSxjPTAsbD1bXTtmb3IobiBpbiBzKW4hPW8mJnIocyxuKSYmbC5wdXNoKG4pO3doaWxlKHQubGVuZ3RoPmMpcihzLG49dFtjKytdKSYmKH5hKGwsbil8fGwucHVzaChuKSk7cmV0dXJuIGx9fSxlOGJhOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSxuKXtuKHQpfSkoMCwoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2NvbnN0IHQ9e0JUQzoi4oK/IixFVEg6Is6eIixVU0Q6IiQiLENBRDoiQyQiLEdCUDoiwqMiLEVVUjoi4oKsIixDSEY6IkZyLiIsU0VLOiJrciIsSlBZOiLCpSIsQ05ZOiLCpSIsSU5SOiLigrkiLFJVQjoi4oK9IixBVUQ6IkEkIixIS0Q6IkhLJCIsU0dEOiJTJCIsVFdEOiJOVCQiLEJSTDoiUiQiLEtSVzoi4oKpIixaQVI6IlIiLE1ZUjoiUk0iLElEUjoiUnAiLE5aRDoiTlokIixNWE46Ik1YJCIsUEhQOiLigrEiLERLSzoia3IuIixQTE46InrFgiIsQUVEOiJESCIsQVJTOiIkIixDTFA6IkNMUCIsQ1pLOiJLxI0iLEhVRjoiRnQiLElMUzoi4oKqIixLV0Q6IktEIixMS1I6IlJzIixOT0s6ImtyIixQS1I6IuKCqCIsU0FSOiJTUiIsVEhCOiLguL8iLFRSWToi4oK6IixYQVU6IlhBVSIsWEFHOiJYQUciLFhEUjoiWERSIn0sbj17TVlSOntsb2NhdGlvbjp7c3RhcnQ6ITB9LGZvckxvY2FsZXM6e2VuOiEwfX0sU0dEOntsb2NhdGlvbjp7c3RhcnQ6ITB9LGZvckxvY2FsZXM6e2VuOiEwfX0sUEhQOntsb2NhdGlvbjp7c3RhcnQ6ITB9LGZvckxvY2FsZXM6e2VuOiEwfX0sQlRDOntsb2NhdGlvbjp7c3RhcnQ6ITB9LGZvckxvY2FsZXM6e2VuOiEwfX0sRVRIOntsb2NhdGlvbjp7c3RhcnQ6ITB9LGZvckxvY2FsZXM6e2VuOiEwfX19O2Z1bmN0aW9uIHIoKXtyZXR1cm4hKCJvYmplY3QiIT10eXBlb2YgSW50bHx8IUludGx8fCJmdW5jdGlvbiIhPXR5cGVvZiBJbnRsLk51bWJlckZvcm1hdCl9ZnVuY3Rpb24gaShlKXtyZXR1cm4iQlRDIj09PWV8fCJFVEgiPT09ZX1mdW5jdGlvbiBhKGUpe3JldHVybiBpKGUpfHxudWxsPT10W2VdfWZ1bmN0aW9uIG8oZSx0KXtjb25zdCBuPW5ldyBSZWdFeHAoYChcXC58LCkoMHske3QrMX0sfSkoPz1bMS05XT8pYCk7cmV0dXJuIGUucmVwbGFjZShuLCh0LG4scik9PmAke259MDxzdWIgdGl0bGU9IiR7ZX0iPiR7ci5sZW5ndGh9PC9zdWI+YCl9ZnVuY3Rpb24gcyhlLHI9ImVuIixpKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBpJiYoZT1vKGUsaSkpO2NvbnN0IGE9ZS5tYXRjaCgvXltBLVpdezN9XHM/Lyk7aWYobnVsbCE9YSl7Y29uc3QgaT1hWzBdLnRyaW0oKSxvPW5baV07cmV0dXJuIG8mJm8ubG9jYXRpb24uc3RhcnQmJm8uZm9yTG9jYWxlc1tyXT9lLnJlcGxhY2UoYVswXSx0W2ldKTplfWNvbnN0IHM9ZS5tYXRjaCgvW0EtWl17M30kLyk7aWYobnVsbCE9cyl7Y29uc3QgaT1zWzBdLGE9bltpXTtyZXR1cm4gYSYmYS5sb2NhdGlvbi5lbmQmJmEuZm9yTG9jYWxlc1tyXT9lLnJlcGxhY2UoaSx0W2ldKTplfXJldHVybiBlfWZ1bmN0aW9uIGMoZSx0LG4scil7dHJ5e2NvbnN0IGk9e3N0eWxlOiJjdXJyZW5jeSIsY3VycmVuY3k6ZSxjdXJyZW5jeURpc3BsYXk6InN5bWJvbCJ9O3JldHVybiB2b2lkIDAhPT1uPyhpLm1pbmltdW1GcmFjdGlvbkRpZ2l0cz1uLGkubWF4aW11bUZyYWN0aW9uRGlnaXRzPW4pOnZvaWQgMCE9PXImJihpLm1heGltdW1TaWduaWZpY2FudERpZ2l0cz1yKSxuZXcgSW50bC5OdW1iZXJGb3JtYXQodCxpKX1jYXRjaChpKXtyZXR1cm4gbChlLHQsbil9fWZ1bmN0aW9uIGwoZSx0LG49Mil7cmV0dXJuIGU9ZS50b1VwcGVyQ2FzZSgpLG4+Mj97Zm9ybWF0OnQ9PmEoZSk/YCR7dC50b0ZpeGVkKG4pfSAke2V9YDpgJHtlfSAke3QudG9GaXhlZChuKX1gfTp7Zm9ybWF0Om49PmEoZSk/YCR7bi50b0xvY2FsZVN0cmluZyh0KX0gJHtlfWA6YCR7ZX0gJHtuLnRvTG9jYWxlU3RyaW5nKHQpfWB9fWZ1bmN0aW9uIHUoZSx0KXtpZighcigpKXJldHVybiBsKGUsdCwwKTtsZXQgbj17c3R5bGU6ImRlY2ltYWwiLG5vdGF0aW9uOiJjb21wYWN0IixtaW5pbXVtRnJhY3Rpb25EaWdpdHM6MCxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6M307cmV0dXJuIGEoZSkmJiFpKGUpfHwobi5zdHlsZT0iY3VycmVuY3kiLG4uY3VycmVuY3k9ZSksbmV3IEludGwuTnVtYmVyRm9ybWF0KHQsbil9ZnVuY3Rpb24gZChlLHQsbixvKXtjb25zdCBzPXIoKSx1PXMmJighYShlKXx8aShlKSk7cmV0dXJuIHU/YyhlLHQsbixvKTpsKGUsdCxuKX1sZXQgcCxmLGgsbSxfLGcsdix5LGIsdyx4LGssQz17fTtmdW5jdGlvbiBTKCl7Qz17fX1mdW5jdGlvbiBQKGUsdCl7Y29uc3Qgbj1gJHtlfS0ke3R9YCxyPUNbbl07aD1yP3IuY3VycmVuY3lGb3JtYXR0ZXJOb3JtYWw6ZChlLHQpLG09cj9yLmN1cnJlbmN5Rm9ybWF0dGVyTm9EZWNpbWFsOmQoZSx0LDApLF89cj9yLmN1cnJlbmN5Rm9ybWF0dGVyTWVkaXVtOmQoZSx0LDMpLGc9cj9yLmN1cnJlbmN5Rm9ybWF0dGVyVHdvRGVjaW1hbDpkKGUsdCwyKSx2PXI/ci5jdXJyZW5jeUZvcm1hdHRlclNtYWxsOmQoZSx0LDYpLHk9cj9yLmN1cnJlbmN5Rm9ybWF0dGVyVmVyeVNtYWxsOmQoZSx0LDgpLGI9cj9yLmN1cnJlbmN5Rm9ybWF0dGVyVmVyeVZlcnlTbWFsbDpkKGUsdCwxMiksdz1yP3IuY3VycmVuY3lGb3JtYXR0ZXIxNURQOmQoZSx0LDE1KSx4PXI/ci5jdXJyZW5jeUZvcm1hdHRlcjE4RFA6ZChlLHQsMTgpLGs9cj9yLmN1cnJlbmN5Rm9ybWF0dGVyQWJicmV2aWF0ZWQ6dShlLHQpLG51bGw9PXImJihDW25dPXt9LENbbl0uY3VycmVuY3lGb3JtYXR0ZXJOb3JtYWw9aCxDW25dLmN1cnJlbmN5Rm9ybWF0dGVyTm9EZWNpbWFsPW0sQ1tuXS5jdXJyZW5jeUZvcm1hdHRlck1lZGl1bT1fLENbbl0uY3VycmVuY3lGb3JtYXR0ZXJUd29EZWNpbWFsPWcsQ1tuXS5jdXJyZW5jeUZvcm1hdHRlclNtYWxsPXYsQ1tuXS5jdXJyZW5jeUZvcm1hdHRlclZlcnlTbWFsbD15LENbbl0uY3VycmVuY3lGb3JtYXR0ZXJWZXJ5VmVyeVNtYWxsPWIsQ1tuXS5jdXJyZW5jeUZvcm1hdHRlcjE1RFA9dyxDW25dLmN1cnJlbmN5Rm9ybWF0dGVyMThEUD14LENbbl0uY3VycmVuY3lGb3JtYXR0ZXJBYmJyZXZpYXRlZD1rKX1jb25zdCBNPTUwLEE9MWUzLE89MWU1O2Z1bmN0aW9uIEQoZSx0LG49ImVuIixyPSExLG89ITEsYz0hMSl7dD10LnRvVXBwZXJDYXNlKCk7bGV0IGw9dm9pZCAwO2lmKHA9PT10JiZmPT1ufHwocD10LGY9bixQKHQsbikpLGMpe2xldCByPWsuZm9ybWF0KGUpO3JldHVybiBhKHQpJiYhaSh0KSYmKHI9YCR7cn0gJHt0fWApLHMocixuKX1pZighMD09PW8mJmU+MTAwKXJldHVybiBzKG0uZm9ybWF0KGUpLG4pO2lmKCJvYmplY3QiPT09dHlwZW9mIG8mJm51bGwhPT1vKXtpZihyKXtsZXQgdD1vLmhhc093blByb3BlcnR5KCJkZWNpbWFsUGxhY2VzIik/ZS50b0ZpeGVkKG8uZGVjaW1hbFBsYWNlcyk6ZTtyZXR1cm5gJHtwYXJzZUZsb2F0KHQpLnRvUHJlY2lzaW9uKG8uc2lnbmlmaWNhbnRGaWd1cmVzKS8xfWB9aWYoby5oYXNPd25Qcm9wZXJ0eSgibWF4aW11bURlY2ltYWxUcmFpbGluZ1plcm9lcyIpJiYobD1vLm1heGltdW1EZWNpbWFsVHJhaWxpbmdaZXJvZXMpLG8uaGFzT3duUHJvcGVydHkoImRlY2ltYWxQbGFjZXMiKSYmby5oYXNPd25Qcm9wZXJ0eSgic2lnbmlmaWNhbnRGaWd1cmVzIikpe2NvbnN0IHI9ZCh0LG4sdm9pZCAwLG8uc2lnbmlmaWNhbnRGaWd1cmVzKTtyZXR1cm4gcyhyLmZvcm1hdChOdW1iZXIucGFyc2VGbG9hdChlLnRvRml4ZWQoby5kZWNpbWFsUGxhY2VzKSkpLG4sbCl9aWYoby5oYXNPd25Qcm9wZXJ0eSgiZGVjaW1hbFBsYWNlcyIpfHxvLmhhc093blByb3BlcnR5KCJzaWduaWZpY2FudEZpZ3VyZXMiKSl7Y29uc3Qgcj1kKHQsbixvLmRlY2ltYWxQbGFjZXMsby5zaWduaWZpY2FudEZpZ3VyZXMpO3JldHVybiBzKHIuZm9ybWF0KGUpLG4sbCl9fWlmKCFhKHQpKXtjb25zdCBpPU1hdGguYWJzKGUpO3JldHVybiByP2k8MWUtMTI/ZS50b0ZpeGVkKDE4KTppPDFlLTk/ZS50b0ZpeGVkKDE1KTppPDFlLTY/ZS50b0ZpeGVkKDEyKTppPC4wMDE/ZS50b0ZpeGVkKDgpOmk8MT9lLnRvRml4ZWQoNik6ZS50b0ZpeGVkKDIpOjA9PT1pP3MoaC5mb3JtYXQoZSksbixsKTppPDFlLTEyP3MoeC5mb3JtYXQoZSksbixsKTppPDFlLTk/cyh3LmZvcm1hdChlKSxuLGwpOmk8MWUtNj9zKGIuZm9ybWF0KGUpLG4sbCk6aTwuMDU/cyh5LmZvcm1hdChlKSxuLGwpOmk8MT9zKHYuZm9ybWF0KGUpLG4sbCk6IkpQWSI9PT10JiZpPDEwMD9zKGcuZm9ybWF0KGUpLG4sbCk6cyhpPk8/bS5mb3JtYXQoZSk6aC5mb3JtYXQoZSksbil9e2xldCB0PXBhcnNlRmxvYXQoZSk7aWYocilyZXR1cm4gMD09PWU/dC50b0ZpeGVkKDIpOnQudG9QcmVjaXNpb24oOCk7aWYoMD09PWUpcmV0dXJuIHMoaC5mb3JtYXQoZSksbixsKTtpZih0Pj1BKXJldHVybiBzKG0uZm9ybWF0KGUpLG4pO2lmKHQ+PU0mJnQ8QSlyZXR1cm4gcyhfLmZvcm1hdChlKSxuLGwpO2lmKHQ+PTEmJnQ8TSlyZXR1cm4gcyh2LmZvcm1hdChlKSxuLGwpO2lmKHQ+PTFlLTYmJnQ8MSlyZXR1cm4gcyh5LmZvcm1hdChlKSxuLGwpO2lmKHQ+PTFlLTkmJnQ8MWUtNilyZXR1cm4gcyhiLmZvcm1hdChlKSxuLGwpO2lmKHQ+PTFlLTEyJiZ0PDFlLTkpcmV0dXJuIHMody5mb3JtYXQoZSksbixsKTtpZih0PDFlLTEyKXJldHVybiBzKHguZm9ybWF0KGUpLG4sbCl9fWUuY2xlYXJDYWNoZT1TLGUuZm9ybWF0Q3VycmVuY3k9RCxlLmlzQ3J5cHRvPWEsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSkpfSxlYmZkOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCI2MmEwIikoIm1ldGEiKSxpPW4oImY3NzIiKSxhPW4oIjA3ZTMiKSxvPW4oImQ5ZjYiKS5mLHM9MCxjPU9iamVjdC5pc0V4dGVuc2libGV8fGZ1bmN0aW9uKCl7cmV0dXJuITB9LGw9IW4oIjI5NGMiKSgoZnVuY3Rpb24oKXtyZXR1cm4gYyhPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pKSx1PWZ1bmN0aW9uKGUpe28oZSxyLHt2YWx1ZTp7aToiTyIrICsrcyx3Ont9fX0pfSxkPWZ1bmN0aW9uKGUsdCl7aWYoIWkoZSkpcmV0dXJuInN5bWJvbCI9PXR5cGVvZiBlP2U6KCJzdHJpbmciPT10eXBlb2YgZT8iUyI6IlAiKStlO2lmKCFhKGUscikpe2lmKCFjKGUpKXJldHVybiJGIjtpZighdClyZXR1cm4iRSI7dShlKX1yZXR1cm4gZVtyXS5pfSxwPWZ1bmN0aW9uKGUsdCl7aWYoIWEoZSxyKSl7aWYoIWMoZSkpcmV0dXJuITA7aWYoIXQpcmV0dXJuITE7dShlKX1yZXR1cm4gZVtyXS53fSxmPWZ1bmN0aW9uKGUpe3JldHVybiBsJiZoLk5FRUQmJmMoZSkmJiFhKGUscikmJnUoZSksZX0saD1lLmV4cG9ydHM9e0tFWTpyLE5FRUQ6ITEsZmFzdEtleTpkLGdldFdlYWs6cCxvbkZyZWV6ZTpmfX0sZWRkNDpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJhcGlfZXJyb3IiOiJDYW5cJ3QgY29ubmVjdCB0byBDb2luR2Vja28gQVBJLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLiIsInBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5IiwiY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6Ik1hcmtldCBDYXAgUmFuayIsIm1jYXAiOiJNYXJrZXQgQ2FwIiwiMjRoX3ZvbHVtZSI6IjI0aCBWb2x1bWUiLCIyNGhfaGlnaF9sb3ciOiIyNGggSGlnaC9Mb3cifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUG93ZXJlZCBieSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IiwiY3J5cHRvX3ByaWNlX2NvbXBhcmlzb24iOiJDcnlwdG8gUHJpY2UgQ29tcGFyaXNvbiIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiJDcnlwdG8gTWFya2V0IENhcCBDb21wYXJpc29uIn0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUG93ZXJlZCBieSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfY2hhcnRfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjRIIEhpZ2giLCIyNGhfbG93IjoiMjRIIExvdyIsInZpZXdfcHJpY2VfY2hhcnQiOiJWaWV3ICV7Y29pbn0gUHJpY2UgQ2hhcnQiLCJwb3dlcmVkX2J5IjoiUG93ZXJlZCBieSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlBvd2VyZWQgYnkgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlBvd2VyZWQgYnkgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNEggSGlnaCIsIjI0aF9sb3ciOiIyNEggTG93Iiwidmlld19wcmljZV9jaGFydCI6IlZpZXcgJXtjb2lufSBQcmljZSBDaGFydCIsInBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJWaWV3ICV7Y29pbn0gUHJpY2UgQ2hhcnQiLCJwb3dlcmVkX2J5IjoiUG93ZXJlZCBieSAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJDcnlwdG9jdXJyZW5jaWVzIFRyZWUgTWFwIiwic3VidGl0bGUiOiIoVG9wICV7dG9wfSBieSBNYXJrZXQgQ2FwKSIsInBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJwcmljZSI6IlByaWNlIiwibWFya2V0X2NhcCI6Ik1hcmtldCBDYXAiLCIyNGhfY2hhbmdlIjoiMjRoIENoYW5nZSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsicmFuZG9tX2NvaW5fZ2VuZXJhdG9yIjoiUmFuZG9tIENvaW4gR2VuZXJhdG9yIiwiY29pbnNfZnJvbSI6ImNvaW5zIGZyb20iLCJkaXNjbGFpbWVyIjoiRGlzY2xhaW1lcjogVGhpcyB0b29sIGlzIGNyZWF0ZWQgZm9yIGVudGVydGFpbm1lbnQgcHVycG9zZXMgYW5kIGRvZXMgbm90IGNvbnN0aXR1dGUgZmluYW5jaWFsIGFkdmljZS4iLCJzcGluIjoiU3BpbiIsImF2YWlsYWJsZV9jb2lucyI6IkF2YWlsYWJsZSBDb2lucyJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6IkNvaW5HZWNrbyBQcmljZSBVcGRhdGUiLCJ0b3RhbF9tY2FwIjoiVG90YWwgTSBjYXAiLCIyNGhfdm9sIjoiMjRoIFZvbHVtZSIsImRvbSI6IkRvbSJ9LCJjb2luX21hcmtldF90aWNrZXJfbGlzdF93aWRnZXQiOnsiZXhjaGFuZ2UiOiJFeGNoYW5nZSIsInBhaXIiOiJQYWlyIiwicHJpY2UiOiJQcmljZSIsInZvbHVtZSI6IlZvbHVtZSIsInRydXN0X3Njb3JlIjoiVHJ1c3QgU2NvcmUiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVmlldyBQcmljZSBDaGFydCIsInBvd2VyZWRfYnkiOiJQb3dlcmVkIGJ5ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6IlZpZXcgYWxsICV7Y29pbn0gbWFya2V0cyJ9fScpfSxmMTg0OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiLOms6xz4TOrM+EzrHOvs63IM66zrXPhs6xzrvOsc65zr/PgM6/zq/Ot8+DzrfPgiIsIm1jYXAiOiLOms61z4bOsc67zrHOuc6/z4DOv86vzrfPg863IiwiMjRoX3ZvbHVtZSI6Is6MzrPOus6/z4IgMjQgz4nPgc+Ozr0iLCIyNGhfaGlnaF9sb3ciOiLOpc+IzrfOu8+Mz4IvzqfOsc68zrfOu8+Mz4IgMjQgz4nPgc+Ozr0ifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoizqDOsc+Bzq3Ph861z4TOsc65IM6xz4DPjDogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoizqPPjc6zzrrPgc65z4POtyDPhM65zrzPjs69IM66z4HPhc+Az4TOv869zr/OvM65z4POvM6sz4TPic69IiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6Is6jz43Os866z4HOuc+DzrcgzrrOtc+GzrHOu86xzrnOv8+Azr/Or863z4POt8+CIM66z4HPhc+Az4TOv869zr/OvM65z4POvM6sz4TPic69In0sImNvaW5fcHJpY2Vfc3RhdGljX2hlYWRsaW5lX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoizqDOsc+Bzq3Ph861z4TOsc65IM6xz4DPjDogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6Is6lz4jOt867z4zPgiAyNCDPic+Bz47OvSIsIjI0aF9sb3ciOiLOp86xzrzOt867z4zPgiAyNCDPic+Bz47OvSIsInZpZXdfcHJpY2VfY2hhcnQiOiLOoM+Bzr/Oss6/zrvOriDOs8+BzrHPhs6uzrzOsc+Ezr/PgiDPhM65zrzPjs69ICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoizqDOsc+Bzq3Ph861z4TOsc65IM6xz4DPjDogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiLOoM6xz4HOrc+HzrXPhM6xzrkgzrHPgM+MOiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fbGlzdF93aWRnZXQiOnsicG93ZXJlZF9ieSI6Is6gzrHPgc6tz4fOtc+EzrHOuSDOsc+Az4w6ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6Is6gzrHPgc6tz4fOtc+EzrHOuSDOsc+Az4w6ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoizqXPiM63zrvPjM+CIDI0IM+Jz4HPjs69IiwiMjRoX2xvdyI6Is6nzrHOvM63zrvPjM+CIDI0IM+Jz4HPjs69Iiwidmlld19wcmljZV9jaGFydCI6Is6gz4HOv86yzr/Ou86uIM6zz4HOsc+Gzq7OvM6xz4TOv8+CIM+EzrnOvM+Ozr0gJXtjb2lufSIsInBvd2VyZWRfYnkiOiLOoM6xz4HOrc+HzrXPhM6xzrkgzrHPgM+MOiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoizqDPgc6/zrLOv867zq4gzrPPgc6xz4bOrs68zrHPhM6/z4Igz4TOuc68z47OvSAle2NvaW59IiwicG93ZXJlZF9ieSI6Is6gzrHPgc6tz4fOtc+EzrHOuSDOsc+Az4w6ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9oZWF0bWFwX3dpZGdldCI6eyJ0aXRsZSI6Is6Tz4HOrM+GzrfOvM6xIHRyZWVtYXAgzrrPgc+Fz4DPhM6/zr3Ov868zrnPg868zqzPhM+Jzr0iLCJzdWJ0aXRsZSI6IijOms6/z4HPhc+GzrHOr86xICV7dG9wfSDOus6xz4TOrCDOus61z4bOsc67zrHOuc6/z4DOv86vzrfPg863KSIsInBvd2VyZWRfYnkiOiLOoM6xz4HOrc+HzrXPhM6xzrkgzrHPgM+MOiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sInJhbmRvbV9jb2luX3dpZGdldCI6eyJkaXNjbGFpbWVyIjoizpHPgM6/z4DOv86vzrfPg863IM61z4XOuM+Fzr3Pjs69OiDOkc+Fz4TOrCDPhM6xIM61z4HOs86xzrvOtc6vzrEgz4fPgc63z4POuc68zr/PgM6/zrnOv8+Nzr3PhM6xzrkgzrPOuc6xIM67z4zOs86/z4XPgiDPiM+Fz4fOsc6zz4nOs86vzrHPgiDOus6xzrkgzrTOtc69IM6xz4DOv8+EzrXOu86/z43OvSDPh8+BzrfOvM6xz4TOv86/zrnOus6/zr3Ov868zrnOus6tz4Igz4PPhc68zrLOv8+FzrvOrc+CLiIsInNwaW4iOiJTcGluIiwiYXZhaWxhYmxlX2NvaW5zIjoizpTOuc6xzrjOrc+DzrnOvM6xIM69zr/OvM6vz4POvM6xz4TOsSJ9LCJjb2luX2RhaWx5X3ByaWNlX3dpZGdldCI6eyJ0aXRsZSI6Is6Vzr3Ot868zq3Pgc+Jz4POtyDPhM65zrzPjs69IM6xz4DPjCDPhM6/IENvaW5HZWNrbyIsInRvdGFsX21jYXAiOiLOo8+Fzr3Ov867zrnOus6uIM66zrXPhs6xzrvOsc65zr/PgM6/zq/Ot8+DzrciLCIyNGhfdm9sIjoizozOs866zr/PgiDPhM65z4Igz4TOtc67zrXPhc+EzrHOr861z4IgMjQgz47Pgc61z4IiLCJkb20iOiLOms+Fz4HOuc6xz4HPh86vzrEifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoizpHOvc+EzrHOu867zrHOus+Ezq7Pgc65zr8iLCJwYWlyIjoizpbOtc+NzrPOv8+CIiwicHJpY2UiOiLOpM65zrzOriIsInZvbHVtZSI6Is6MzrPOus6/z4IiLCJ0cnVzdF9zY29yZSI6IlRydXN0IFNjb3JlIiwidmlld19wcmljZV9jaGFydCI6Is6gz4HOv86yzr/Ou86uIM6zz4HOsc+Gzq7OvM6xz4TOv8+CIM+EzrnOvM+Ozr0iLCJwb3dlcmVkX2J5IjoizqDOsc+Bzq3Ph861z4TOsc65IM6xz4DPjDogJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsInZpZXdfYWxsIjoizqDPgc6/zrLOv867zq4gz4zOu8+Jzr0gz4TPic69IM6xzrPOv8+Bz47OvSAle2NvaW59In19Jyl9LGYzNjc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkNmM3IiksaT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sKCJmb28iKSxhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsbz1BcnJheS5wcm90b3R5cGUuY29uY2F0LHM9T2JqZWN0LmRlZmluZVByb3BlcnR5LGM9ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBlJiYiW29iamVjdCBGdW5jdGlvbl0iPT09YS5jYWxsKGUpfSxsPWZ1bmN0aW9uKCl7dmFyIGU9e307dHJ5e2Zvcih2YXIgdCBpbiBzKGUsIngiLHtlbnVtZXJhYmxlOiExLHZhbHVlOmV9KSxlKXJldHVybiExO3JldHVybiBlLng9PT1lfWNhdGNoKG4pe3JldHVybiExfX0sdT1zJiZsKCksZD1mdW5jdGlvbihlLHQsbixyKXsoISh0IGluIGUpfHxjKHIpJiZyKCkpJiYodT9zKGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bix3cml0YWJsZTohMH0pOmVbdF09bil9LHA9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnt9LGE9cih0KTtpJiYoYT1vLmNhbGwoYSxPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKSk7Zm9yKHZhciBzPTA7czxhLmxlbmd0aDtzKz0xKWQoZSxhW3NdLHRbYVtzXV0sblthW3NdXSl9O3Auc3VwcG9ydHNEZXNjcmlwdG9ycz0hIXUsZS5leHBvcnRzPXB9LGY0MTA6ZnVuY3Rpb24oZSx0LG4pe24oIjFhZjYiKSxlLmV4cG9ydHM9bigiNTg0YSIpLkFycmF5LmlzQXJyYXl9LGY2OTM6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IkNsYXNzZW1lbnQiLCJtY2FwIjoiQ2FwaXRhbGlzYXRpb24gYm91cnNpw6hyZSIsIjI0aF92b2x1bWUiOiJWb2x1bWUgc3VyIDI0wqBoIiwiMjRoX2hpZ2hfbG93IjoiMjRIIEhhdXQgLyBCYXMifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUHJvcG9zw6kgcGFyICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IkNvbXBhcmFpc29uIENvdXJzIENyeXB0b21vbm5haWVzIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IkNvbXBhcmFpc29uIENhcGl0YWxpc2F0aW9ucyBDcnlwdG8ifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJQcm9wb3PDqSBwYXIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6IkxlIHBsdXMgw6lsZXbDqSBzdXIgMjTCoGgiLCIyNGhfbG93IjoiTGUgcGx1cyBiYXMgc3VyIDI0wqBoIiwidmlld19wcmljZV9jaGFydCI6IlZvaXIgbGUgR3JhcGhpcXVlIGRlIENvdXJzIGRlICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiUHJvcG9zw6kgcGFyICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9wcmljZV9tYXJxdWVlX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUHJvcG9zw6kgcGFyICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiUHJvcG9zw6kgcGFyICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiYmVhbV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IlByb3Bvc8OpIHBhciAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fdGlja2VyX3dpZGdldCI6eyIyNGhfaGlnaCI6IkxlIHBsdXMgw6lsZXbDqSBzdXIgMjTCoGgiLCIyNGhfbG93IjoiTGUgcGx1cyBiYXMgc3VyIDI0wqBoIiwidmlld19wcmljZV9jaGFydCI6IlZvaXIgbGUgR3JhcGhpcXVlIGRlIENvdXJzIGRlICV7Y29pbn0iLCJwb3dlcmVkX2J5IjoiUHJvcG9zw6kgcGFyICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl9jb252ZXJ0ZXJfd2lkZ2V0Ijp7InZpZXdfcHJpY2VfY2hhcnQiOiJWb2lyIGxlIEdyYXBoaXF1ZSBkZSBDb3VycyBkZSAle2NvaW59IiwicG93ZXJlZF9ieSI6IlByb3Bvc8OpIHBhciAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJEaWFncmFtbWUgZGVzIGNyeXB0by1tb25uYWllcyIsInN1YnRpdGxlIjoiKFRvcCAle3RvcH0gcGFyIENhcGl0YWxpc2F0aW9uKSIsInBvd2VyZWRfYnkiOiJQcm9wb3PDqSBwYXIgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJyYW5kb21fY29pbl93aWRnZXQiOnsiZGlzY2xhaW1lciI6IkF2ZXJ0aXNzZW1lbnQgOiBDZXMgb3V0aWxzIHNlcnZlbnQgZGUgZGl2ZXJ0aXNzZW1lbnQgZXQgbmUgY29uc3RpdHVlbnQgcGFzIGRlcyBjb25zZWlscyBmaW5hbmNpZXJzLiIsInNwaW4iOiJUb3VybmVyIiwiYXZhaWxhYmxlX2NvaW5zIjoiTW9ubmFpZXMgRGlzcG9uaWJsZXMifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJNaXNlIMOgIEpvdXIgQ291cnMgQ29pbkdlY2tvIiwidG90YWxfbWNhcCI6IlRvdGFsIENhcGl0YWxpc2F0aW9uIiwiMjRoX3ZvbCI6IlZvbHVtZSBzdXIgMjTCoGgiLCJkb20iOiJEb20ifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiUGxhdGUtZm9ybWUgZFwnw6ljaGFuZ2UiLCJwYWlyIjoiUGFpcmUiLCJwcmljZSI6IkNvdXJzIiwidm9sdW1lIjoiVm9sdW1lIiwidHJ1c3Rfc2NvcmUiOiJTY29yZSBkZSBjb25maWFuY2UiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiVm9pciBHcmFwaGlxdWUgQ291cnMiLCJwb3dlcmVkX2J5IjoiUHJvcG9zw6kgcGFyICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJ2aWV3X2FsbCI6IlZvaXIgdG91cyBsZXMgbWFyY2jDqXMgJXtjb2lufSJ9fScpfSxmNzcyOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT09dHlwZW9mIGU/bnVsbCE9PWU6ImZ1bmN0aW9uIj09PXR5cGVvZiBlfX0sZjkyMTpmdW5jdGlvbihlLHQsbil7bigiMDE0YiIpLG4oImMyMDciKSxuKCI2OWQzIiksbigiNzY1ZCIpLGUuZXhwb3J0cz1uKCI1ODRhIikuU3ltYm9sfSxmOTQ3OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImNvaW5fZGV0YWlscyI6eyJtY2FwX3JhbmsiOiJSYW5nZXJpbmcgZXR0ZXIgbWFya2Vkc3ZlcmRpIiwibWNhcCI6Ik1hcmtlZHN2ZXJkaSIsIjI0aF92b2x1bWUiOiIyNC10aW1lcnMgVm9sdW0iLCIyNGhfaGlnaF9sb3ciOiIyNC10aW1lcnMgSMO4eS9MYXYifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiRHJldmV0IGF2ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0iLCJjcnlwdG9fcHJpY2VfY29tcGFyaXNvbiI6IktyeXB0b3ByaXMgc2FtbWVubGlnbmluZyIsImNyeXB0b19tYXJrZXRfY2FwX2NvbXBhcmlzb24iOiJLcnlwdG8gbWFya2Vkc3ZlcmRpIHNhbW1lbmxpZ25pbmcifSwiY29pbl9wcmljZV9zdGF0aWNfaGVhZGxpbmVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEcmV2ZXQgYXYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX2NoYXJ0X3dpZGdldCI6eyIyNGhfaGlnaCI6IjI0LXRpbWVycyBow7h5IiwiMjRoX2xvdyI6IjI0LXRpbWVycyBsYXYiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiU2UgJXtjb2lufSBwcmlzZGlhZ3JhbSIsInBvd2VyZWRfYnkiOiJEcmV2ZXQgYXYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX3ByaWNlX21hcnF1ZWVfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEcmV2ZXQgYXYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2xpc3Rfd2lkZ2V0Ijp7InBvd2VyZWRfYnkiOiJEcmV2ZXQgYXYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiRHJldmV0IGF2ICV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0ifSwiY29pbl90aWNrZXJfd2lkZ2V0Ijp7IjI0aF9oaWdoIjoiMjQtdGltZXJzIGjDuHkiLCIyNGhfbG93IjoiMjQtdGltZXJzIGxhdiIsInZpZXdfcHJpY2VfY2hhcnQiOiJTZSAle2NvaW59IHByaXNkaWFncmFtIiwicG93ZXJlZF9ieSI6IkRyZXZldCBhdiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiU2UgJXtjb2lufSBwcmlzZGlhZ3JhbSIsInBvd2VyZWRfYnkiOiJEcmV2ZXQgYXYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSJ9LCJjb2luX2hlYXRtYXBfd2lkZ2V0Ijp7InRpdGxlIjoiVHJlZGlhZ3JhbSBmb3Iga3J5cHRvdmFsdXRhZXIiLCJzdWJ0aXRsZSI6IihUb3BwICV7dG9wfSBldHRlciBtYXJrZWRzdmVyZGkpIiwicG93ZXJlZF9ieSI6IkRyZXZldCBhdiAle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9In0sInJhbmRvbV9jb2luX3dpZGdldCI6eyJkaXNjbGFpbWVyIjoiQW5zdmFyc2ZyYXNrcml2ZWxzZTogRGV0dGUgZXIgdmVya3TDuHkgc29tIHVuZGVyaG9sZG5pbmcgb2cgdXRnasO4ciBpa2tlIMO4a29ub21pc2tlIHLDpWQuIiwic3BpbiI6IlNudXJyIiwiYXZhaWxhYmxlX2NvaW5zIjoiVGlsZ2plbmdlbGlnZSBteW50ZXIifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJDb2luR2Vja28gcHJpc29wcGRhdGVyaW5nIiwidG90YWxfbWNhcCI6IlRvdGFsIE0gTWFya2Vkc3ZlcmRpIiwiMjRoX3ZvbCI6IjI0dCBvbXNldG5pbmciLCJkb20iOiJEb20ifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiQsO4cnMiLCJwYWlyIjoiUGFyIiwicHJpY2UiOiJLdXJzIiwidm9sdW1lIjoiT21zZXRuaW5nIiwidHJ1c3Rfc2NvcmUiOiJUcnVzdC1wb2VuZ3N1bSIsInZpZXdfcHJpY2VfY2hhcnQiOiJTZSBwcmlzZGlhZ3JhbSIsInBvd2VyZWRfYnkiOiJEcmV2ZXQgYXYgJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSIsInZpZXdfYWxsIjoiVmlzIGFsbGUgJXtjb2lufSBtYXJrZWRlciJ9fScpfSxmYTRlOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ITEsaT1mdW5jdGlvbigpe307aWYocil7dmFyIGE9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoO3Q9bmV3IEFycmF5KG4+MT9uLTE6MCk7Zm9yKHZhciByPTE7cjxuO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO3ZhciBpPTAsYT0iV2FybmluZzogIitlLnJlcGxhY2UoLyVzL2csKGZ1bmN0aW9uKCl7cmV0dXJuIHRbaSsrXX0pKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLmVycm9yKGEpO3RyeXt0aHJvdyBuZXcgRXJyb3IoYSl9Y2F0Y2gobyl7fX07aT1mdW5jdGlvbihlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtuPW5ldyBBcnJheShyPjI/ci0yOjApO2Zvcih2YXIgaT0yO2k8cjtpKyspbltpLTJdPWFyZ3VtZW50c1tpXTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgbWVzc2FnZSBhcmd1bWVudCIpO2V8fGEuYXBwbHkobnVsbCxbdF0uY29uY2F0KG4pKX19ZS5leHBvcnRzPWl9LGZhNWI6ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKCI1NTM3IikoIm5hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmciLEZ1bmN0aW9uLnRvU3RyaW5nKX0sZmFiMjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiNzcyNiIpLmRvY3VtZW50O2UuZXhwb3J0cz1yJiZyLmRvY3VtZW50RWxlbWVudH0sZmRlZjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz0iXHRcblx2XGZcciDCoOGagOGgjuKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LGZmZWI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siY29pbl9kZXRhaWxzIjp7Im1jYXBfcmFuayI6IlBpeWFzYSBEZcSfZXJpIFPEsXJhbGFtYXPEsSIsIm1jYXAiOiJQaXlhc2EgRGXEn2VyaSIsIjI0aF92b2x1bWUiOiIyNCBTYWF0bGlrIEhhY2ltIiwiMjRoX2hpZ2hfbG93IjoiMjRTQSBZw7xrc2VrIC8gRMO8xZ/DvGsifSwiY29pbl9jb21wYXJlX2NoYXJ0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSB0YXJhZsSxbmRhbiBkZXN0ZWtsZW5tZWt0ZWRpciIsImNyeXB0b19wcmljZV9jb21wYXJpc29uIjoiS3JpcHRvIEZpeWF0IEthcsWfxLFsYcWfdMSxcm1hc8SxIiwiY3J5cHRvX21hcmtldF9jYXBfY29tcGFyaXNvbiI6IktyaXB0byBQaXlhc2EgRGXEn2VyaSBLYXLFn8SxbGHFn3TEsXJtYXPEsSJ9LCJjb2luX3ByaWNlX3N0YXRpY19oZWFkbGluZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gdGFyYWbEsW5kYW4gZGVzdGVrbGVubWVrdGVkaXIifSwiY29pbl9wcmljZV9jaGFydF93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNFMgWcO8a3NlayIsIjI0aF9sb3ciOiIyNFMgRMO8xZ/DvGsiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSBGaXlhdCBHcmFmacSfaW5pIEfDtnLDvG50w7xsZSIsInBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IHRhcmFmxLFuZGFuIGRlc3Rla2xlbm1la3RlZGlyIn0sImNvaW5fcHJpY2VfbWFycXVlZV93aWRnZXQiOnsicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gdGFyYWbEsW5kYW4gZGVzdGVrbGVubWVrdGVkaXIifSwiY29pbl9saXN0X3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSB0YXJhZsSxbmRhbiBkZXN0ZWtsZW5tZWt0ZWRpciJ9LCJiZWFtX3dpZGdldCI6eyJwb3dlcmVkX2J5IjoiJXtuYW1lX3N0YXJ0fSV7bmFtZX0le25hbWVfZW5kfSB0YXJhZsSxbmRhbiBkZXN0ZWtsZW5tZWt0ZWRpciJ9LCJjb2luX3RpY2tlcl93aWRnZXQiOnsiMjRoX2hpZ2giOiIyNFMgWcO8a3NlayIsIjI0aF9sb3ciOiIyNFMgRMO8xZ/DvGsiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSBGaXlhdCBHcmFmacSfaW5pIEfDtnLDvG50w7xsZSIsInBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IHRhcmFmxLFuZGFuIGRlc3Rla2xlbm1la3RlZGlyIn0sImNvaW5fY29udmVydGVyX3dpZGdldCI6eyJ2aWV3X3ByaWNlX2NoYXJ0IjoiJXtjb2lufSBGaXlhdCBHcmFmacSfaW5pIEfDtnLDvG50w7xsZSIsInBvd2VyZWRfYnkiOiIle25hbWVfc3RhcnR9JXtuYW1lfSV7bmFtZV9lbmR9IHRhcmFmxLFuZGFuIGRlc3Rla2xlbm1la3RlZGlyIn0sImNvaW5faGVhdG1hcF93aWRnZXQiOnsidGl0bGUiOiJLcmlwdG8gUGFyYSBBxJ9hY8SxIEhhcml0YXPEsSIsInN1YnRpdGxlIjoiKFBpeWFzYSBEZcSfZXJpbmUgR8O2cmUgRW4gxLB5aSAle3RvcH0pIiwicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gdGFyYWbEsW5kYW4gZGVzdGVrbGVubWVrdGVkaXIifSwicmFuZG9tX2NvaW5fd2lkZ2V0Ijp7ImRpc2NsYWltZXIiOiJTb3J1bWx1bHVrIFJlZGRpOiBCdSBhcmHDp2xhciBlxJ9sZW5jZSBhbWHDp2zEsWTEsXIgdmUgZmluYW5zYWwgdGF2c2l5ZSB0ZcWfa2lsIGV0bWV6LiIsInNwaW4iOiJEw7ZuZMO8ciIsImF2YWlsYWJsZV9jb2lucyI6Ik1ldmN1dCBDb2luXCdsZXIifSwiY29pbl9kYWlseV9wcmljZV93aWRnZXQiOnsidGl0bGUiOiJDb2luR2Vja28gRml5YXQgR8O8bmNlbGxlbWVzaSIsInRvdGFsX21jYXAiOiJUb3BsYW0gUCBkZcSfZXJpIiwiMjRoX3ZvbCI6IjI0IFNhYXRsaWsgSGFjaW0iLCJkb20iOiJIa20ifSwiY29pbl9tYXJrZXRfdGlja2VyX2xpc3Rfd2lkZ2V0Ijp7ImV4Y2hhbmdlIjoiQm9yc2EiLCJwYWlyIjoiw4dpZnQiLCJwcmljZSI6IkZpeWF0Iiwidm9sdW1lIjoiSGFjaW0iLCJ0cnVzdF9zY29yZSI6IkfDvHZlbiBQdWFuxLEiLCJ2aWV3X3ByaWNlX2NoYXJ0IjoiIEZpeWF0IEdyYWZpxJ9pbmkgR8O2csO8bnTDvGxlIiwicG93ZXJlZF9ieSI6IiV7bmFtZV9zdGFydH0le25hbWV9JXtuYW1lX2VuZH0gdGFyYWbEsW5kYW4gZGVzdGVrbGVubWVrdGVkaXIiLCJ2aWV3X2FsbCI6IlTDvG0gJXtjb2lufSBwaXlhc2FsYXLEsW7EsSBnw7Zyw7xudMO8bGUifX0nKX19KTs="}},"time_used":55,"timings":{"blocked":-1,"dns":7,"connect":21,"send":0,"wait":24,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/slick.min.js?ver=1.8.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.401Z","timestamp":1785145482401,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/slick.min.js?ver=1.8.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 55646\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":55646,"size_decoded":55863,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (2383)","md5":"dc746a31d95fbbe018b9c3fcfd62d79c","sha1":"0a3bdaa54c5147b24b4d324ae734d871568953ed","sha256":"91c2a692376fe8f4339ad4db1c847dd4b54d15d8fce99164d0308477681315c4","sha512":"3a4b4d2d17b6954a42c58648779fa6cdfab08f341da57b5e9f94ea90c4ce35459235f98bd2e5696c35250c3718fe9025c1e33929f8f16df8fe8f225b4b6d50cd","ssdeep":"768:wn9DBxxCeMazcPCqYXw0P6+MBdXIfY2aTaAWrEaRgtTKN0YB3gMtq+TJLBUKLnDp:/Or1ZFdZZN","tlshash":"a9432e0a96e02735859bb0e66409c808a3fbf63b6b11d49039cc53956f5d828cfe7bf5","first_seen":"2023-05-31T21:10:18Z","last_seen":"2026-07-27T11:56:43.248236Z","times_seen":99,"resource_available":true,"data":"ISBmdW5jdGlvbihpKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImpxdWVyeSJdLCBpKSA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBleHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSBpKHJlcXVpcmUoImpxdWVyeSIpKSA6IGkoalF1ZXJ5KQp9KGZ1bmN0aW9uKGkpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBlID0gd2luZG93LlNsaWNrIHx8IHt9OwogICAgKGUgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSA9IDA7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG8pIHsKICAgICAgICAgICAgdmFyIHMsIG4gPSB0aGlzOwogICAgICAgICAgICBuLmRlZmF1bHRzID0gewogICAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0eTogITAsCiAgICAgICAgICAgICAgICBhZGFwdGl2ZUhlaWdodDogITEsCiAgICAgICAgICAgICAgICBhcHBlbmRBcnJvd3M6IGkodCksCiAgICAgICAgICAgICAgICBhcHBlbmREb3RzOiBpKHQpLAogICAgICAgICAgICAgICAgYXJyb3dzOiAhMCwKICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBudWxsLAogICAgICAgICAgICAgICAgcHJldkFycm93OiAnPGJ1dHRvbiBjbGFzcz0ic2xpY2stcHJldiIgYXJpYS1sYWJlbD0iUHJldmlvdXMiIHR5cGU9ImJ1dHRvbiI+UHJldmlvdXM8L2J1dHRvbj4nLAogICAgICAgICAgICAgICAgbmV4dEFycm93OiAnPGJ1dHRvbiBjbGFzcz0ic2xpY2stbmV4dCIgYXJpYS1sYWJlbD0iTmV4dCIgdHlwZT0iYnV0dG9uIj5OZXh0PC9idXR0b24+JywKICAgICAgICAgICAgICAgIGF1dG9wbGF5OiAhMSwKICAgICAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IDNlMywKICAgICAgICAgICAgICAgIGNlbnRlck1vZGU6ICExLAogICAgICAgICAgICAgICAgY2VudGVyUGFkZGluZzogIjUwcHgiLAogICAgICAgICAgICAgICAgY3NzRWFzZTogImVhc2UiLAogICAgICAgICAgICAgICAgY3VzdG9tUGFnaW5nOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoJzxidXR0b24gdHlwZT0iYnV0dG9uIiAvPicpLnRleHQodCArIDEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZG90czogITEsCiAgICAgICAgICAgICAgICBkb3RzQ2xhc3M6ICJzbGljay1kb3RzIiwKICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogITAsCiAgICAgICAgICAgICAgICBlYXNpbmc6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgZWRnZUZyaWN0aW9uOiAuMzUsCiAgICAgICAgICAgICAgICBmYWRlOiAhMSwKICAgICAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6ICExLAogICAgICAgICAgICAgICAgZm9jdXNPbkNoYW5nZTogITEsCiAgICAgICAgICAgICAgICBpbmZpbml0ZTogITAsCiAgICAgICAgICAgICAgICBpbml0aWFsU2xpZGU6IDAsCiAgICAgICAgICAgICAgICBsYXp5TG9hZDogIm9uZGVtYW5kIiwKICAgICAgICAgICAgICAgIG1vYmlsZUZpcnN0OiAhMSwKICAgICAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogITAsCiAgICAgICAgICAgICAgICBwYXVzZU9uRm9jdXM6ICEwLAogICAgICAgICAgICAgICAgcGF1c2VPbkRvdHNIb3ZlcjogITEsCiAgICAgICAgICAgICAgICByZXNwb25kVG86ICJ3aW5kb3ciLAogICAgICAgICAgICAgICAgcmVzcG9uc2l2ZTogbnVsbCwKICAgICAgICAgICAgICAgIHJvd3M6IDEsCiAgICAgICAgICAgICAgICBydGw6ICExLAogICAgICAgICAgICAgICAgc2xpZGU6ICIiLAogICAgICAgICAgICAgICAgc2xpZGVzUGVyUm93OiAxLAogICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLAogICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsCiAgICAgICAgICAgICAgICBzcGVlZDogNTAwLAogICAgICAgICAgICAgICAgc3dpcGU6ICEwLAogICAgICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiAhMSwKICAgICAgICAgICAgICAgIHRvdWNoTW92ZTogITAsCiAgICAgICAgICAgICAgICB0b3VjaFRocmVzaG9sZDogNSwKICAgICAgICAgICAgICAgIHVzZUNTUzogITAsCiAgICAgICAgICAgICAgICB1c2VUcmFuc2Zvcm06ICEwLAogICAgICAgICAgICAgICAgdmFyaWFibGVXaWR0aDogITEsCiAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogITEsCiAgICAgICAgICAgICAgICB2ZXJ0aWNhbFN3aXBpbmc6ICExLAogICAgICAgICAgICAgICAgd2FpdEZvckFuaW1hdGU6ICEwLAogICAgICAgICAgICAgICAgekluZGV4OiAxZTMKICAgICAgICAgICAgfSwgbi5pbml0aWFscyA9IHsKICAgICAgICAgICAgICAgIGFuaW1hdGluZzogITEsCiAgICAgICAgICAgICAgICBkcmFnZ2luZzogITEsCiAgICAgICAgICAgICAgICBhdXRvUGxheVRpbWVyOiBudWxsLAogICAgICAgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogMCwKICAgICAgICAgICAgICAgIGN1cnJlbnRMZWZ0OiBudWxsLAogICAgICAgICAgICAgICAgY3VycmVudFNsaWRlOiAwLAogICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAxLAogICAgICAgICAgICAgICAgJGRvdHM6IG51bGwsCiAgICAgICAgICAgICAgICBsaXN0V2lkdGg6IG51bGwsCiAgICAgICAgICAgICAgICBsaXN0SGVpZ2h0OiBudWxsLAogICAgICAgICAgICAgICAgbG9hZEluZGV4OiAwLAogICAgICAgICAgICAgICAgJG5leHRBcnJvdzogbnVsbCwKICAgICAgICAgICAgICAgICRwcmV2QXJyb3c6IG51bGwsCiAgICAgICAgICAgICAgICBzY3JvbGxpbmc6ICExLAogICAgICAgICAgICAgICAgc2xpZGVDb3VudDogbnVsbCwKICAgICAgICAgICAgICAgIHNsaWRlV2lkdGg6IG51bGwsCiAgICAgICAgICAgICAgICAkc2xpZGVUcmFjazogbnVsbCwKICAgICAgICAgICAgICAgICRzbGlkZXM6IG51bGwsCiAgICAgICAgICAgICAgICBzbGlkaW5nOiAhMSwKICAgICAgICAgICAgICAgIHNsaWRlT2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgc3dpcGVMZWZ0OiBudWxsLAogICAgICAgICAgICAgICAgc3dpcGluZzogITEsCiAgICAgICAgICAgICAgICAkbGlzdDogbnVsbCwKICAgICAgICAgICAgICAgIHRvdWNoT2JqZWN0OiB7fSwKICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNFbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgIHVuc2xpY2tlZDogITEKICAgICAgICAgICAgfSwgaS5leHRlbmQobiwgbi5pbml0aWFscyksIG4uYWN0aXZlQnJlYWtwb2ludCA9IG51bGwsIG4uYW5pbVR5cGUgPSBudWxsLCBuLmFuaW1Qcm9wID0gbnVsbCwgbi5icmVha3BvaW50cyA9IFtdLCBuLmJyZWFrcG9pbnRTZXR0aW5ncyA9IFtdLCBuLmNzc1RyYW5zaXRpb25zID0gITEsIG4uZm9jdXNzZWQgPSAhMSwgbi5pbnRlcnJ1cHRlZCA9ICExLCBuLmhpZGRlbiA9ICJoaWRkZW4iLCBuLnBhdXNlZCA9ICEwLCBuLnBvc2l0aW9uUHJvcCA9IG51bGwsIG4ucmVzcG9uZFRvID0gbnVsbCwgbi5yb3dDb3VudCA9IDEsIG4uc2hvdWxkQ2xpY2sgPSAhMCwgbi4kc2xpZGVyID0gaSh0KSwgbi4kc2xpZGVzQ2FjaGUgPSBudWxsLCBuLnRyYW5zZm9ybVR5cGUgPSBudWxsLCBuLnRyYW5zaXRpb25UeXBlID0gbnVsbCwgbi52aXNpYmlsaXR5Q2hhbmdlID0gInZpc2liaWxpdHljaGFuZ2UiLCBuLndpbmRvd1dpZHRoID0gMCwgbi53aW5kb3dUaW1lciA9IG51bGwsIHMgPSBpKHQpLmRhdGEoInNsaWNrIikgfHwge30sIG4ub3B0aW9ucyA9IGkuZXh0ZW5kKHt9LCBuLmRlZmF1bHRzLCBvLCBzKSwgbi5jdXJyZW50U2xpZGUgPSBuLm9wdGlvbnMuaW5pdGlhbFNsaWRlLCBuLm9yaWdpbmFsU2V0dGluZ3MgPSBuLm9wdGlvbnMsIHZvaWQgMCAhPT0gZG9jdW1lbnQubW96SGlkZGVuID8gKG4uaGlkZGVuID0gIm1vekhpZGRlbiIsIG4udmlzaWJpbGl0eUNoYW5nZSA9ICJtb3p2aXNpYmlsaXR5Y2hhbmdlIikgOiB2b2lkIDAgIT09IGRvY3VtZW50LndlYmtpdEhpZGRlbiAmJiAobi5oaWRkZW4gPSAid2Via2l0SGlkZGVuIiwgbi52aXNpYmlsaXR5Q2hhbmdlID0gIndlYmtpdHZpc2liaWxpdHljaGFuZ2UiKSwgbi5hdXRvUGxheSA9IGkucHJveHkobi5hdXRvUGxheSwgbiksIG4uYXV0b1BsYXlDbGVhciA9IGkucHJveHkobi5hdXRvUGxheUNsZWFyLCBuKSwgbi5hdXRvUGxheUl0ZXJhdG9yID0gaS5wcm94eShuLmF1dG9QbGF5SXRlcmF0b3IsIG4pLCBuLmNoYW5nZVNsaWRlID0gaS5wcm94eShuLmNoYW5nZVNsaWRlLCBuKSwgbi5jbGlja0hhbmRsZXIgPSBpLnByb3h5KG4uY2xpY2tIYW5kbGVyLCBuKSwgbi5zZWxlY3RIYW5kbGVyID0gaS5wcm94eShuLnNlbGVjdEhhbmRsZXIsIG4pLCBuLnNldFBvc2l0aW9uID0gaS5wcm94eShuLnNldFBvc2l0aW9uLCBuKSwgbi5zd2lwZUhhbmRsZXIgPSBpLnByb3h5KG4uc3dpcGVIYW5kbGVyLCBuKSwgbi5kcmFnSGFuZGxlciA9IGkucHJveHkobi5kcmFnSGFuZGxlciwgbiksIG4ua2V5SGFuZGxlciA9IGkucHJveHkobi5rZXlIYW5kbGVyLCBuKSwgbi5pbnN0YW5jZVVpZCA9IGUrKywgbi5odG1sRXhwciA9IC9eKD86XHMqKDxbXHdcV10rPilbXj5dKikkLywgbi5yZWdpc3RlckJyZWFrcG9pbnRzKCksIG4uaW5pdCghMCkKICAgICAgICB9CiAgICB9KCkpLnByb3RvdHlwZS5hY3RpdmF0ZUFEQSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuJHNsaWRlVHJhY2suZmluZCgiLnNsaWNrLWFjdGl2ZSIpLmF0dHIoewogICAgICAgICAgICAiYXJpYS1oaWRkZW4iOiAiZmFsc2UiCiAgICAgICAgfSkuZmluZCgiYSwgaW5wdXQsIGJ1dHRvbiwgc2VsZWN0IikuYXR0cih7CiAgICAgICAgICAgIHRhYmluZGV4OiAiMCIKICAgICAgICB9KQogICAgfSwgZS5wcm90b3R5cGUuYWRkU2xpZGUgPSBlLnByb3RvdHlwZS5zbGlja0FkZCA9IGZ1bmN0aW9uKGUsIHQsIG8pIHsKICAgICAgICB2YXIgcyA9IHRoaXM7CiAgICAgICAgaWYgKCJib29sZWFuIiA9PSB0eXBlb2YgdCkgbyA9IHQsIHQgPSBudWxsOwogICAgICAgIGVsc2UgaWYgKHQgPCAwIHx8IHQgPj0gcy5zbGlkZUNvdW50KSByZXR1cm4gITE7CiAgICAgICAgcy51bmxvYWQoKSwgIm51bWJlciIgPT0gdHlwZW9mIHQgPyAwID09PSB0ICYmIDAgPT09IHMuJHNsaWRlcy5sZW5ndGggPyBpKGUpLmFwcGVuZFRvKHMuJHNsaWRlVHJhY2spIDogbyA/IGkoZSkuaW5zZXJ0QmVmb3JlKHMuJHNsaWRlcy5lcSh0KSkgOiBpKGUpLmluc2VydEFmdGVyKHMuJHNsaWRlcy5lcSh0KSkgOiAhMCA9PT0gbyA/IGkoZSkucHJlcGVuZFRvKHMuJHNsaWRlVHJhY2spIDogaShlKS5hcHBlbmRUbyhzLiRzbGlkZVRyYWNrKSwgcy4kc2xpZGVzID0gcy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLCBzLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCksIHMuJHNsaWRlVHJhY2suYXBwZW5kKHMuJHNsaWRlcyksIHMuJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaSh0KS5hdHRyKCJkYXRhLXNsaWNrLWluZGV4IiwgZSkKICAgICAgICB9KSwgcy4kc2xpZGVzQ2FjaGUgPSBzLiRzbGlkZXMsIHMucmVpbml0KCkKICAgIH0sIGUucHJvdG90eXBlLmFuaW1hdGVIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgaWYgKDEgPT09IGkub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgITAgPT09IGkub3B0aW9ucy5hZGFwdGl2ZUhlaWdodCAmJiAhMSA9PT0gaS5vcHRpb25zLnZlcnRpY2FsKSB7CiAgICAgICAgICAgIHZhciBlID0gaS4kc2xpZGVzLmVxKGkuY3VycmVudFNsaWRlKS5vdXRlckhlaWdodCghMCk7CiAgICAgICAgICAgIGkuJGxpc3QuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGUKICAgICAgICAgICAgfSwgaS5vcHRpb25zLnNwZWVkKQogICAgICAgIH0KICAgIH0sIGUucHJvdG90eXBlLmFuaW1hdGVTbGlkZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbyA9IHt9LAogICAgICAgICAgICBzID0gdGhpczsKICAgICAgICBzLmFuaW1hdGVIZWlnaHQoKSwgITAgPT09IHMub3B0aW9ucy5ydGwgJiYgITEgPT09IHMub3B0aW9ucy52ZXJ0aWNhbCAmJiAoZSA9IC1lKSwgITEgPT09IHMudHJhbnNmb3Jtc0VuYWJsZWQgPyAhMSA9PT0gcy5vcHRpb25zLnZlcnRpY2FsID8gcy4kc2xpZGVUcmFjay5hbmltYXRlKHsKICAgICAgICAgICAgbGVmdDogZQogICAgICAgIH0sIHMub3B0aW9ucy5zcGVlZCwgcy5vcHRpb25zLmVhc2luZywgdCkgOiBzLiRzbGlkZVRyYWNrLmFuaW1hdGUoewogICAgICAgICAgICB0b3A6IGUKICAgICAgICB9LCBzLm9wdGlvbnMuc3BlZWQsIHMub3B0aW9ucy5lYXNpbmcsIHQpIDogITEgPT09IHMuY3NzVHJhbnNpdGlvbnMgPyAoITAgPT09IHMub3B0aW9ucy5ydGwgJiYgKHMuY3VycmVudExlZnQgPSAtcy5jdXJyZW50TGVmdCksIGkoewogICAgICAgICAgICBhbmltU3RhcnQ6IHMuY3VycmVudExlZnQKICAgICAgICB9KS5hbmltYXRlKHsKICAgICAgICAgICAgYW5pbVN0YXJ0OiBlCiAgICAgICAgfSwgewogICAgICAgICAgICBkdXJhdGlvbjogcy5vcHRpb25zLnNwZWVkLAogICAgICAgICAgICBlYXNpbmc6IHMub3B0aW9ucy5lYXNpbmcsCiAgICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgIGkgPSBNYXRoLmNlaWwoaSksICExID09PSBzLm9wdGlvbnMudmVydGljYWwgPyAob1tzLmFuaW1UeXBlXSA9ICJ0cmFuc2xhdGUoIiArIGkgKyAicHgsIDBweCkiLCBzLiRzbGlkZVRyYWNrLmNzcyhvKSkgOiAob1tzLmFuaW1UeXBlXSA9ICJ0cmFuc2xhdGUoMHB4LCIgKyBpICsgInB4KSIsIHMuJHNsaWRlVHJhY2suY3NzKG8pKQogICAgICAgICAgICB9LAogICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0ICYmIHQuY2FsbCgpCiAgICAgICAgICAgIH0KICAgICAgICB9KSkgOiAocy5hcHBseVRyYW5zaXRpb24oKSwgZSA9IE1hdGguY2VpbChlKSwgITEgPT09IHMub3B0aW9ucy52ZXJ0aWNhbCA/IG9bcy5hbmltVHlwZV0gPSAidHJhbnNsYXRlM2QoIiArIGUgKyAicHgsIDBweCwgMHB4KSIgOiBvW3MuYW5pbVR5cGVdID0gInRyYW5zbGF0ZTNkKDBweCwiICsgZSArICJweCwgMHB4KSIsIHMuJHNsaWRlVHJhY2suY3NzKG8pLCB0ICYmIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHMuZGlzYWJsZVRyYW5zaXRpb24oKSwgdC5jYWxsKCkKICAgICAgICB9LCBzLm9wdGlvbnMuc3BlZWQpKQogICAgfSwgZS5wcm90b3R5cGUuZ2V0TmF2VGFyZ2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICB0ID0gZS5vcHRpb25zLmFzTmF2Rm9yOwogICAgICAgIHJldHVybiB0ICYmIG51bGwgIT09IHQgJiYgKHQgPSBpKHQpLm5vdChlLiRzbGlkZXIpKSwgdAogICAgfSwgZS5wcm90b3R5cGUuYXNOYXZGb3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSB0aGlzLmdldE5hdlRhcmdldCgpOwogICAgICAgIG51bGwgIT09IHQgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgdC5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IGkodGhpcykuc2xpY2soImdldFNsaWNrIik7CiAgICAgICAgICAgIHQudW5zbGlja2VkIHx8IHQuc2xpZGVIYW5kbGVyKGUsICEwKQogICAgICAgIH0pCiAgICB9LCBlLnByb3RvdHlwZS5hcHBseVRyYW5zaXRpb24gPSBmdW5jdGlvbihpKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICB0ID0ge307CiAgICAgICAgITEgPT09IGUub3B0aW9ucy5mYWRlID8gdFtlLnRyYW5zaXRpb25UeXBlXSA9IGUudHJhbnNmb3JtVHlwZSArICIgIiArIGUub3B0aW9ucy5zcGVlZCArICJtcyAiICsgZS5vcHRpb25zLmNzc0Vhc2UgOiB0W2UudHJhbnNpdGlvblR5cGVdID0gIm9wYWNpdHkgIiArIGUub3B0aW9ucy5zcGVlZCArICJtcyAiICsgZS5vcHRpb25zLmNzc0Vhc2UsICExID09PSBlLm9wdGlvbnMuZmFkZSA/IGUuJHNsaWRlVHJhY2suY3NzKHQpIDogZS4kc2xpZGVzLmVxKGkpLmNzcyh0KQogICAgfSwgZS5wcm90b3R5cGUuYXV0b1BsYXkgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgaS5hdXRvUGxheUNsZWFyKCksIGkuc2xpZGVDb3VudCA+IGkub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgKGkuYXV0b1BsYXlUaW1lciA9IHNldEludGVydmFsKGkuYXV0b1BsYXlJdGVyYXRvciwgaS5vcHRpb25zLmF1dG9wbGF5U3BlZWQpKQogICAgfSwgZS5wcm90b3R5cGUuYXV0b1BsYXlDbGVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICBpLmF1dG9QbGF5VGltZXIgJiYgY2xlYXJJbnRlcnZhbChpLmF1dG9QbGF5VGltZXIpCiAgICB9LCBlLnByb3RvdHlwZS5hdXRvUGxheUl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzLAogICAgICAgICAgICBlID0gaS5jdXJyZW50U2xpZGUgKyBpLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7CiAgICAgICAgaS5wYXVzZWQgfHwgaS5pbnRlcnJ1cHRlZCB8fCBpLmZvY3Vzc2VkIHx8ICghMSA9PT0gaS5vcHRpb25zLmluZmluaXRlICYmICgxID09PSBpLmRpcmVjdGlvbiAmJiBpLmN1cnJlbnRTbGlkZSArIDEgPT09IGkuc2xpZGVDb3VudCAtIDEgPyBpLmRpcmVjdGlvbiA9IDAgOiAwID09PSBpLmRpcmVjdGlvbiAmJiAoZSA9IGkuY3VycmVudFNsaWRlIC0gaS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsLCBpLmN1cnJlbnRTbGlkZSAtIDEgPT0gMCAmJiAoaS5kaXJlY3Rpb24gPSAxKSkpLCBpLnNsaWRlSGFuZGxlcihlKSkKICAgIH0sIGUucHJvdG90eXBlLmJ1aWxkQXJyb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICEwID09PSBlLm9wdGlvbnMuYXJyb3dzICYmIChlLiRwcmV2QXJyb3cgPSBpKGUub3B0aW9ucy5wcmV2QXJyb3cpLmFkZENsYXNzKCJzbGljay1hcnJvdyIpLCBlLiRuZXh0QXJyb3cgPSBpKGUub3B0aW9ucy5uZXh0QXJyb3cpLmFkZENsYXNzKCJzbGljay1hcnJvdyIpLCBlLnNsaWRlQ291bnQgPiBlLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gKGUuJHByZXZBcnJvdy5yZW1vdmVDbGFzcygic2xpY2staGlkZGVuIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4gdGFiaW5kZXgiKSwgZS4kbmV4dEFycm93LnJlbW92ZUNsYXNzKCJzbGljay1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiB0YWJpbmRleCIpLCBlLmh0bWxFeHByLnRlc3QoZS5vcHRpb25zLnByZXZBcnJvdykgJiYgZS4kcHJldkFycm93LnByZXBlbmRUbyhlLm9wdGlvbnMuYXBwZW5kQXJyb3dzKSwgZS5odG1sRXhwci50ZXN0KGUub3B0aW9ucy5uZXh0QXJyb3cpICYmIGUuJG5leHRBcnJvdy5hcHBlbmRUbyhlLm9wdGlvbnMuYXBwZW5kQXJyb3dzKSwgITAgIT09IGUub3B0aW9ucy5pbmZpbml0ZSAmJiBlLiRwcmV2QXJyb3cuYWRkQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJ0cnVlIikpIDogZS4kcHJldkFycm93LmFkZChlLiRuZXh0QXJyb3cpLmFkZENsYXNzKCJzbGljay1oaWRkZW4iKS5hdHRyKHsKICAgICAgICAgICAgImFyaWEtZGlzYWJsZWQiOiAidHJ1ZSIsCiAgICAgICAgICAgIHRhYmluZGV4OiAiLTEiCiAgICAgICAgfSkpCiAgICB9LCBlLnByb3RvdHlwZS5idWlsZERvdHMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSwgdCwgbyA9IHRoaXM7CiAgICAgICAgaWYgKCEwID09PSBvLm9wdGlvbnMuZG90cykgewogICAgICAgICAgICBmb3IgKG8uJHNsaWRlci5hZGRDbGFzcygic2xpY2stZG90dGVkIiksIHQgPSBpKCI8dWwgLz4iKS5hZGRDbGFzcyhvLm9wdGlvbnMuZG90c0NsYXNzKSwgZSA9IDA7IGUgPD0gby5nZXREb3RDb3VudCgpOyBlICs9IDEpIHQuYXBwZW5kKGkoIjxsaSAvPiIpLmFwcGVuZChvLm9wdGlvbnMuY3VzdG9tUGFnaW5nLmNhbGwodGhpcywgbywgZSkpKTsKICAgICAgICAgICAgby4kZG90cyA9IHQuYXBwZW5kVG8oby5vcHRpb25zLmFwcGVuZERvdHMpLCBvLiRkb3RzLmZpbmQoImxpIikuZmlyc3QoKS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikKICAgICAgICB9CiAgICB9LCBlLnByb3RvdHlwZS5idWlsZE91dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICBlLiRzbGlkZXMgPSBlLiRzbGlkZXIuY2hpbGRyZW4oZS5vcHRpb25zLnNsaWRlICsgIjpub3QoLnNsaWNrLWNsb25lZCkiKS5hZGRDbGFzcygic2xpY2stc2xpZGUiKSwgZS5zbGlkZUNvdW50ID0gZS4kc2xpZGVzLmxlbmd0aCwgZS4kc2xpZGVzLmVhY2goZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBpKHQpLmF0dHIoImRhdGEtc2xpY2staW5kZXgiLCBlKS5kYXRhKCJvcmlnaW5hbFN0eWxpbmciLCBpKHQpLmF0dHIoInN0eWxlIikgfHwgIiIpCiAgICAgICAgfSksIGUuJHNsaWRlci5hZGRDbGFzcygic2xpY2stc2xpZGVyIiksIGUuJHNsaWRlVHJhY2sgPSAwID09PSBlLnNsaWRlQ291bnQgPyBpKCc8ZGl2IGNsYXNzPSJzbGljay10cmFjayIvPicpLmFwcGVuZFRvKGUuJHNsaWRlcikgOiBlLiRzbGlkZXMud3JhcEFsbCgnPGRpdiBjbGFzcz0ic2xpY2stdHJhY2siLz4nKS5wYXJlbnQoKSwgZS4kbGlzdCA9IGUuJHNsaWRlVHJhY2sud3JhcCgnPGRpdiBjbGFzcz0ic2xpY2stbGlzdCIvPicpLnBhcmVudCgpLCBlLiRzbGlkZVRyYWNrLmNzcygib3BhY2l0eSIsIDApLCAhMCAhPT0gZS5vcHRpb25zLmNlbnRlck1vZGUgJiYgITAgIT09IGUub3B0aW9ucy5zd2lwZVRvU2xpZGUgfHwgKGUub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA9IDEpLCBpKCJpbWdbZGF0YS1sYXp5XSIsIGUuJHNsaWRlcikubm90KCJbc3JjXSIpLmFkZENsYXNzKCJzbGljay1sb2FkaW5nIiksIGUuc2V0dXBJbmZpbml0ZSgpLCBlLmJ1aWxkQXJyb3dzKCksIGUuYnVpbGREb3RzKCksIGUudXBkYXRlRG90cygpLCBlLnNldFNsaWRlQ2xhc3NlcygibnVtYmVyIiA9PSB0eXBlb2YgZS5jdXJyZW50U2xpZGUgPyBlLmN1cnJlbnRTbGlkZSA6IDApLCAhMCA9PT0gZS5vcHRpb25zLmRyYWdnYWJsZSAmJiBlLiRsaXN0LmFkZENsYXNzKCJkcmFnZ2FibGUiKQogICAgfSwgZS5wcm90b3R5cGUuYnVpbGRSb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGksIGUsIHQsIG8sIHMsIG4sIHIsIGwgPSB0aGlzOwogICAgICAgIGlmIChvID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLCBuID0gbC4kc2xpZGVyLmNoaWxkcmVuKCksIGwub3B0aW9ucy5yb3dzID4gMSkgewogICAgICAgICAgICBmb3IgKHIgPSBsLm9wdGlvbnMuc2xpZGVzUGVyUm93ICogbC5vcHRpb25zLnJvd3MsIHMgPSBNYXRoLmNlaWwobi5sZW5ndGggLyByKSwgaSA9IDA7IGkgPCBzOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgbC5vcHRpb25zLnJvd3M7IGUrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IGwub3B0aW9ucy5zbGlkZXNQZXJSb3c7IHQrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGkgKiByICsgKGUgKiBsLm9wdGlvbnMuc2xpZGVzUGVyUm93ICsgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uZ2V0KGMpICYmIGEuYXBwZW5kQ2hpbGQobi5nZXQoYykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kQ2hpbGQoYSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG8uYXBwZW5kQ2hpbGQoZCkKICAgICAgICAgICAgfQogICAgICAgICAgICBsLiRzbGlkZXIuZW1wdHkoKS5hcHBlbmQobyksIGwuJHNsaWRlci5jaGlsZHJlbigpLmNoaWxkcmVuKCkuY2hpbGRyZW4oKS5jc3MoewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCAvIGwub3B0aW9ucy5zbGlkZXNQZXJSb3cgKyAiJSIsCiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiaW5saW5lLWJsb2NrIgogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0sIGUucHJvdG90eXBlLmNoZWNrUmVzcG9uc2l2ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbywgcywgbiwgciA9IHRoaXMsCiAgICAgICAgICAgIGwgPSAhMSwKICAgICAgICAgICAgZCA9IHIuJHNsaWRlci53aWR0aCgpLAogICAgICAgICAgICBhID0gd2luZG93LmlubmVyV2lkdGggfHwgaSh3aW5kb3cpLndpZHRoKCk7CiAgICAgICAgaWYgKCJ3aW5kb3ciID09PSByLnJlc3BvbmRUbyA/IG4gPSBhIDogInNsaWRlciIgPT09IHIucmVzcG9uZFRvID8gbiA9IGQgOiAibWluIiA9PT0gci5yZXNwb25kVG8gJiYgKG4gPSBNYXRoLm1pbihhLCBkKSksIHIub3B0aW9ucy5yZXNwb25zaXZlICYmIHIub3B0aW9ucy5yZXNwb25zaXZlLmxlbmd0aCAmJiBudWxsICE9PSByLm9wdGlvbnMucmVzcG9uc2l2ZSkgewogICAgICAgICAgICBzID0gbnVsbDsKICAgICAgICAgICAgZm9yIChvIGluIHIuYnJlYWtwb2ludHMpIHIuYnJlYWtwb2ludHMuaGFzT3duUHJvcGVydHkobykgJiYgKCExID09PSByLm9yaWdpbmFsU2V0dGluZ3MubW9iaWxlRmlyc3QgPyBuIDwgci5icmVha3BvaW50c1tvXSAmJiAocyA9IHIuYnJlYWtwb2ludHNbb10pIDogbiA+IHIuYnJlYWtwb2ludHNbb10gJiYgKHMgPSByLmJyZWFrcG9pbnRzW29dKSk7CiAgICAgICAgICAgIG51bGwgIT09IHMgPyBudWxsICE9PSByLmFjdGl2ZUJyZWFrcG9pbnQgPyAocyAhPT0gci5hY3RpdmVCcmVha3BvaW50IHx8IHQpICYmIChyLmFjdGl2ZUJyZWFrcG9pbnQgPSBzLCAidW5zbGljayIgPT09IHIuYnJlYWtwb2ludFNldHRpbmdzW3NdID8gci51bnNsaWNrKHMpIDogKHIub3B0aW9ucyA9IGkuZXh0ZW5kKHt9LCByLm9yaWdpbmFsU2V0dGluZ3MsIHIuYnJlYWtwb2ludFNldHRpbmdzW3NdKSwgITAgPT09IGUgJiYgKHIuY3VycmVudFNsaWRlID0gci5vcHRpb25zLmluaXRpYWxTbGlkZSksIHIucmVmcmVzaChlKSksIGwgPSBzKSA6IChyLmFjdGl2ZUJyZWFrcG9pbnQgPSBzLCAidW5zbGljayIgPT09IHIuYnJlYWtwb2ludFNldHRpbmdzW3NdID8gci51bnNsaWNrKHMpIDogKHIub3B0aW9ucyA9IGkuZXh0ZW5kKHt9LCByLm9yaWdpbmFsU2V0dGluZ3MsIHIuYnJlYWtwb2ludFNldHRpbmdzW3NdKSwgITAgPT09IGUgJiYgKHIuY3VycmVudFNsaWRlID0gci5vcHRpb25zLmluaXRpYWxTbGlkZSksIHIucmVmcmVzaChlKSksIGwgPSBzKSA6IG51bGwgIT09IHIuYWN0aXZlQnJlYWtwb2ludCAmJiAoci5hY3RpdmVCcmVha3BvaW50ID0gbnVsbCwgci5vcHRpb25zID0gci5vcmlnaW5hbFNldHRpbmdzLCAhMCA9PT0gZSAmJiAoci5jdXJyZW50U2xpZGUgPSByLm9wdGlvbnMuaW5pdGlhbFNsaWRlKSwgci5yZWZyZXNoKGUpLCBsID0gcyksIGUgfHwgITEgPT09IGwgfHwgci4kc2xpZGVyLnRyaWdnZXIoImJyZWFrcG9pbnQiLCBbciwgbF0pCiAgICAgICAgfQogICAgfSwgZS5wcm90b3R5cGUuY2hhbmdlU2xpZGUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIG8sIHMsIG4sIHIgPSB0aGlzLAogICAgICAgICAgICBsID0gaShlLmN1cnJlbnRUYXJnZXQpOwogICAgICAgIHN3aXRjaCAobC5pcygiYSIpICYmIGUucHJldmVudERlZmF1bHQoKSwgbC5pcygibGkiKSB8fCAobCA9IGwuY2xvc2VzdCgibGkiKSksIG4gPSByLnNsaWRlQ291bnQgJSByLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT0gMCwgbyA9IG4gPyAwIDogKHIuc2xpZGVDb3VudCAtIHIuY3VycmVudFNsaWRlKSAlIHIub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCwgZS5kYXRhLm1lc3NhZ2UpIHsKICAgICAgICAgICAgY2FzZSAicHJldmlvdXMiOgogICAgICAgICAgICAgICAgcyA9IDAgPT09IG8gPyByLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiByLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gbywgci5zbGlkZUNvdW50ID4gci5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiByLnNsaWRlSGFuZGxlcihyLmN1cnJlbnRTbGlkZSAtIHMsICExLCB0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJuZXh0IjoKICAgICAgICAgICAgICAgIHMgPSAwID09PSBvID8gci5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogbywgci5zbGlkZUNvdW50ID4gci5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiByLnNsaWRlSGFuZGxlcihyLmN1cnJlbnRTbGlkZSArIHMsICExLCB0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJpbmRleCI6CiAgICAgICAgICAgICAgICB2YXIgZCA9IDAgPT09IGUuZGF0YS5pbmRleCA/IDAgOiBlLmRhdGEuaW5kZXggfHwgbC5pbmRleCgpICogci5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsOwogICAgICAgICAgICAgICAgci5zbGlkZUhhbmRsZXIoci5jaGVja05hdmlnYWJsZShkKSwgITEsIHQpLCBsLmNoaWxkcmVuKCkudHJpZ2dlcigiZm9jdXMiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgfQogICAgfSwgZS5wcm90b3R5cGUuY2hlY2tOYXZpZ2FibGUgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgdmFyIGUsIHQ7CiAgICAgICAgaWYgKGUgPSB0aGlzLmdldE5hdmlnYWJsZUluZGV4ZXMoKSwgdCA9IDAsIGkgPiBlW2UubGVuZ3RoIC0gMV0pIGkgPSBlW2UubGVuZ3RoIC0gMV07CiAgICAgICAgZWxzZQogICAgICAgICAgICBmb3IgKHZhciBvIGluIGUpIHsKICAgICAgICAgICAgICAgIGlmIChpIDwgZVtvXSkgewogICAgICAgICAgICAgICAgICAgIGkgPSB0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ID0gZVtvXQogICAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIGkKICAgIH0sIGUucHJvdG90eXBlLmNsZWFuVXBFdmVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgZS5vcHRpb25zLmRvdHMgJiYgbnVsbCAhPT0gZS4kZG90cyAmJiAoaSgibGkiLCBlLiRkb3RzKS5vZmYoImNsaWNrLnNsaWNrIiwgZS5jaGFuZ2VTbGlkZSkub2ZmKCJtb3VzZWVudGVyLnNsaWNrIiwgaS5wcm94eShlLmludGVycnVwdCwgZSwgITApKS5vZmYoIm1vdXNlbGVhdmUuc2xpY2siLCBpLnByb3h5KGUuaW50ZXJydXB0LCBlLCAhMSkpLCAhMCA9PT0gZS5vcHRpb25zLmFjY2Vzc2liaWxpdHkgJiYgZS4kZG90cy5vZmYoImtleWRvd24uc2xpY2siLCBlLmtleUhhbmRsZXIpKSwgZS4kc2xpZGVyLm9mZigiZm9jdXMuc2xpY2sgYmx1ci5zbGljayIpLCAhMCA9PT0gZS5vcHRpb25zLmFycm93cyAmJiBlLnNsaWRlQ291bnQgPiBlLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIChlLiRwcmV2QXJyb3cgJiYgZS4kcHJldkFycm93Lm9mZigiY2xpY2suc2xpY2siLCBlLmNoYW5nZVNsaWRlKSwgZS4kbmV4dEFycm93ICYmIGUuJG5leHRBcnJvdy5vZmYoImNsaWNrLnNsaWNrIiwgZS5jaGFuZ2VTbGlkZSksICEwID09PSBlLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSAmJiAoZS4kcHJldkFycm93ICYmIGUuJHByZXZBcnJvdy5vZmYoImtleWRvd24uc2xpY2siLCBlLmtleUhhbmRsZXIpLCBlLiRuZXh0QXJyb3cgJiYgZS4kbmV4dEFycm93Lm9mZigia2V5ZG93bi5zbGljayIsIGUua2V5SGFuZGxlcikpKSwgZS4kbGlzdC5vZmYoInRvdWNoc3RhcnQuc2xpY2sgbW91c2Vkb3duLnNsaWNrIiwgZS5zd2lwZUhhbmRsZXIpLCBlLiRsaXN0Lm9mZigidG91Y2htb3ZlLnNsaWNrIG1vdXNlbW92ZS5zbGljayIsIGUuc3dpcGVIYW5kbGVyKSwgZS4kbGlzdC5vZmYoInRvdWNoZW5kLnNsaWNrIG1vdXNldXAuc2xpY2siLCBlLnN3aXBlSGFuZGxlciksIGUuJGxpc3Qub2ZmKCJ0b3VjaGNhbmNlbC5zbGljayBtb3VzZWxlYXZlLnNsaWNrIiwgZS5zd2lwZUhhbmRsZXIpLCBlLiRsaXN0Lm9mZigiY2xpY2suc2xpY2siLCBlLmNsaWNrSGFuZGxlciksIGkoZG9jdW1lbnQpLm9mZihlLnZpc2liaWxpdHlDaGFuZ2UsIGUudmlzaWJpbGl0eSksIGUuY2xlYW5VcFNsaWRlRXZlbnRzKCksICEwID09PSBlLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSAmJiBlLiRsaXN0Lm9mZigia2V5ZG93bi5zbGljayIsIGUua2V5SGFuZGxlciksICEwID09PSBlLm9wdGlvbnMuZm9jdXNPblNlbGVjdCAmJiBpKGUuJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub2ZmKCJjbGljay5zbGljayIsIGUuc2VsZWN0SGFuZGxlciksIGkod2luZG93KS5vZmYoIm9yaWVudGF0aW9uY2hhbmdlLnNsaWNrLnNsaWNrLSIgKyBlLmluc3RhbmNlVWlkLCBlLm9yaWVudGF0aW9uQ2hhbmdlKSwgaSh3aW5kb3cpLm9mZigicmVzaXplLnNsaWNrLnNsaWNrLSIgKyBlLmluc3RhbmNlVWlkLCBlLnJlc2l6ZSksIGkoIltkcmFnZ2FibGUhPXRydWVdIiwgZS4kc2xpZGVUcmFjaykub2ZmKCJkcmFnc3RhcnQiLCBlLnByZXZlbnREZWZhdWx0KSwgaSh3aW5kb3cpLm9mZigibG9hZC5zbGljay5zbGljay0iICsgZS5pbnN0YW5jZVVpZCwgZS5zZXRQb3NpdGlvbikKICAgIH0sIGUucHJvdG90eXBlLmNsZWFuVXBTbGlkZUV2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICBlLiRsaXN0Lm9mZigibW91c2VlbnRlci5zbGljayIsIGkucHJveHkoZS5pbnRlcnJ1cHQsIGUsICEwKSksIGUuJGxpc3Qub2ZmKCJtb3VzZWxlYXZlLnNsaWNrIiwgaS5wcm94eShlLmludGVycnVwdCwgZSwgITEpKQogICAgfSwgZS5wcm90b3R5cGUuY2xlYW5VcFJvd3MgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSwgZSA9IHRoaXM7CiAgICAgICAgZS5vcHRpb25zLnJvd3MgPiAxICYmICgoaSA9IGUuJHNsaWRlcy5jaGlsZHJlbigpLmNoaWxkcmVuKCkpLnJlbW92ZUF0dHIoInN0eWxlIiksIGUuJHNsaWRlci5lbXB0eSgpLmFwcGVuZChpKSkKICAgIH0sIGUucHJvdG90eXBlLmNsaWNrSGFuZGxlciA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICAhMSA9PT0gdGhpcy5zaG91bGRDbGljayAmJiAoaS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwgaS5zdG9wUHJvcGFnYXRpb24oKSwgaS5wcmV2ZW50RGVmYXVsdCgpKQogICAgfSwgZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgdC5hdXRvUGxheUNsZWFyKCksIHQudG91Y2hPYmplY3QgPSB7fSwgdC5jbGVhblVwRXZlbnRzKCksIGkoIi5zbGljay1jbG9uZWQiLCB0LiRzbGlkZXIpLmRldGFjaCgpLCB0LiRkb3RzICYmIHQuJGRvdHMucmVtb3ZlKCksIHQuJHByZXZBcnJvdyAmJiB0LiRwcmV2QXJyb3cubGVuZ3RoICYmICh0LiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoInNsaWNrLWRpc2FibGVkIHNsaWNrLWFycm93IHNsaWNrLWhpZGRlbiIpLnJlbW92ZUF0dHIoImFyaWEtaGlkZGVuIGFyaWEtZGlzYWJsZWQgdGFiaW5kZXgiKS5jc3MoImRpc3BsYXkiLCAiIiksIHQuaHRtbEV4cHIudGVzdCh0Lm9wdGlvbnMucHJldkFycm93KSAmJiB0LiRwcmV2QXJyb3cucmVtb3ZlKCkpLCB0LiRuZXh0QXJyb3cgJiYgdC4kbmV4dEFycm93Lmxlbmd0aCAmJiAodC4kbmV4dEFycm93LnJlbW92ZUNsYXNzKCJzbGljay1kaXNhYmxlZCBzbGljay1hcnJvdyBzbGljay1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiBhcmlhLWRpc2FibGVkIHRhYmluZGV4IikuY3NzKCJkaXNwbGF5IiwgIiIpLCB0Lmh0bWxFeHByLnRlc3QodC5vcHRpb25zLm5leHRBcnJvdykgJiYgdC4kbmV4dEFycm93LnJlbW92ZSgpKSwgdC4kc2xpZGVzICYmICh0LiRzbGlkZXMucmVtb3ZlQ2xhc3MoInNsaWNrLXNsaWRlIHNsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50IikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJkYXRhLXNsaWNrLWluZGV4IikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaSh0aGlzKS5hdHRyKCJzdHlsZSIsIGkodGhpcykuZGF0YSgib3JpZ2luYWxTdHlsaW5nIikpCiAgICAgICAgfSksIHQuJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKSwgdC4kc2xpZGVUcmFjay5kZXRhY2goKSwgdC4kbGlzdC5kZXRhY2goKSwgdC4kc2xpZGVyLmFwcGVuZCh0LiRzbGlkZXMpKSwgdC5jbGVhblVwUm93cygpLCB0LiRzbGlkZXIucmVtb3ZlQ2xhc3MoInNsaWNrLXNsaWRlciIpLCB0LiRzbGlkZXIucmVtb3ZlQ2xhc3MoInNsaWNrLWluaXRpYWxpemVkIiksIHQuJHNsaWRlci5yZW1vdmVDbGFzcygic2xpY2stZG90dGVkIiksIHQudW5zbGlja2VkID0gITAsIGUgfHwgdC4kc2xpZGVyLnRyaWdnZXIoImRlc3Ryb3kiLCBbdF0pCiAgICB9LCBlLnByb3RvdHlwZS5kaXNhYmxlVHJhbnNpdGlvbiA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgIHQgPSB7fTsKICAgICAgICB0W2UudHJhbnNpdGlvblR5cGVdID0gIiIsICExID09PSBlLm9wdGlvbnMuZmFkZSA/IGUuJHNsaWRlVHJhY2suY3NzKHQpIDogZS4kc2xpZGVzLmVxKGkpLmNzcyh0KQogICAgfSwgZS5wcm90b3R5cGUuZmFkZVNsaWRlID0gZnVuY3Rpb24oaSwgZSkgewogICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAhMSA9PT0gdC5jc3NUcmFuc2l0aW9ucyA/ICh0LiRzbGlkZXMuZXEoaSkuY3NzKHsKICAgICAgICAgICAgekluZGV4OiB0Lm9wdGlvbnMuekluZGV4CiAgICAgICAgfSksIHQuJHNsaWRlcy5lcShpKS5hbmltYXRlKHsKICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgIH0sIHQub3B0aW9ucy5zcGVlZCwgdC5vcHRpb25zLmVhc2luZywgZSkpIDogKHQuYXBwbHlUcmFuc2l0aW9uKGkpLCB0LiRzbGlkZXMuZXEoaSkuY3NzKHsKICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgekluZGV4OiB0Lm9wdGlvbnMuekluZGV4CiAgICAgICAgfSksIGUgJiYgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdC5kaXNhYmxlVHJhbnNpdGlvbihpKSwgZS5jYWxsKCkKICAgICAgICB9LCB0Lm9wdGlvbnMuc3BlZWQpKQogICAgfSwgZS5wcm90b3R5cGUuZmFkZVNsaWRlT3V0ID0gZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAhMSA9PT0gZS5jc3NUcmFuc2l0aW9ucyA/IGUuJHNsaWRlcy5lcShpKS5hbmltYXRlKHsKICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgekluZGV4OiBlLm9wdGlvbnMuekluZGV4IC0gMgogICAgICAgIH0sIGUub3B0aW9ucy5zcGVlZCwgZS5vcHRpb25zLmVhc2luZykgOiAoZS5hcHBseVRyYW5zaXRpb24oaSksIGUuJHNsaWRlcy5lcShpKS5jc3MoewogICAgICAgICAgICBvcGFjaXR5OiAwLAogICAgICAgICAgICB6SW5kZXg6IGUub3B0aW9ucy56SW5kZXggLSAyCiAgICAgICAgfSkpCiAgICB9LCBlLnByb3RvdHlwZS5maWx0ZXJTbGlkZXMgPSBlLnByb3RvdHlwZS5zbGlja0ZpbHRlciA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgbnVsbCAhPT0gaSAmJiAoZS4kc2xpZGVzQ2FjaGUgPSBlLiRzbGlkZXMsIGUudW5sb2FkKCksIGUuJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKSwgZS4kc2xpZGVzQ2FjaGUuZmlsdGVyKGkpLmFwcGVuZFRvKGUuJHNsaWRlVHJhY2spLCBlLnJlaW5pdCgpKQogICAgfSwgZS5wcm90b3R5cGUuZm9jdXNIYW5kbGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgIGUuJHNsaWRlci5vZmYoImZvY3VzLnNsaWNrIGJsdXIuc2xpY2siKS5vbigiZm9jdXMuc2xpY2sgYmx1ci5zbGljayIsICIqIiwgZnVuY3Rpb24odCkgewogICAgICAgICAgICB0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwogICAgICAgICAgICB2YXIgbyA9IGkodGhpcyk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBlLm9wdGlvbnMucGF1c2VPbkZvY3VzICYmIChlLmZvY3Vzc2VkID0gby5pcygiOmZvY3VzIiksIGUuYXV0b1BsYXkoKSkKICAgICAgICAgICAgfSwgMCkKICAgICAgICB9KQogICAgfSwgZS5wcm90b3R5cGUuZ2V0Q3VycmVudCA9IGUucHJvdG90eXBlLnNsaWNrQ3VycmVudFNsaWRlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNsaWRlCiAgICB9LCBlLnByb3RvdHlwZS5nZXREb3RDb3VudCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgZSA9IDAsCiAgICAgICAgICAgIHQgPSAwLAogICAgICAgICAgICBvID0gMDsKICAgICAgICBpZiAoITAgPT09IGkub3B0aW9ucy5pbmZpbml0ZSkKICAgICAgICAgICAgaWYgKGkuc2xpZGVDb3VudCA8PSBpLm9wdGlvbnMuc2xpZGVzVG9TaG93KSArK287CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAoOyBlIDwgaS5zbGlkZUNvdW50OykgKytvLCBlID0gdCArIGkub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCwgdCArPSBpLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPD0gaS5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IGkub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IGkub3B0aW9ucy5zbGlkZXNUb1Nob3c7CiAgICAgICAgZWxzZSBpZiAoITAgPT09IGkub3B0aW9ucy5jZW50ZXJNb2RlKSBvID0gaS5zbGlkZUNvdW50OwogICAgICAgIGVsc2UgaWYgKGkub3B0aW9ucy5hc05hdkZvcikKICAgICAgICAgICAgZm9yICg7IGUgPCBpLnNsaWRlQ291bnQ7KSArK28sIGUgPSB0ICsgaS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsLCB0ICs9IGkub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA8PSBpLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gaS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogaS5vcHRpb25zLnNsaWRlc1RvU2hvdzsKICAgICAgICBlbHNlIG8gPSAxICsgTWF0aC5jZWlsKChpLnNsaWRlQ291bnQgLSBpLm9wdGlvbnMuc2xpZGVzVG9TaG93KSAvIGkub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCk7CiAgICAgICAgcmV0dXJuIG8gLSAxCiAgICB9LCBlLnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBlLCB0LCBvLCBzLCBuID0gdGhpcywKICAgICAgICAgICAgciA9IDA7CiAgICAgICAgcmV0dXJuIG4uc2xpZGVPZmZzZXQgPSAwLCB0ID0gbi4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQoITApLCAhMCA9PT0gbi5vcHRpb25zLmluZmluaXRlID8gKG4uc2xpZGVDb3VudCA+IG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgKG4uc2xpZGVPZmZzZXQgPSBuLnNsaWRlV2lkdGggKiBuLm9wdGlvbnMuc2xpZGVzVG9TaG93ICogLTEsIHMgPSAtMSwgITAgPT09IG4ub3B0aW9ucy52ZXJ0aWNhbCAmJiAhMCA9PT0gbi5vcHRpb25zLmNlbnRlck1vZGUgJiYgKDIgPT09IG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBzID0gLTEuNSA6IDEgPT09IG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgKHMgPSAtMikpLCByID0gdCAqIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKiBzKSwgbi5zbGlkZUNvdW50ICUgbi5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9IDAgJiYgaSArIG4ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA+IG4uc2xpZGVDb3VudCAmJiBuLnNsaWRlQ291bnQgPiBuLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIChpID4gbi5zbGlkZUNvdW50ID8gKG4uc2xpZGVPZmZzZXQgPSAobi5vcHRpb25zLnNsaWRlc1RvU2hvdyAtIChpIC0gbi5zbGlkZUNvdW50KSkgKiBuLnNsaWRlV2lkdGggKiAtMSwgciA9IChuLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gKGkgLSBuLnNsaWRlQ291bnQpKSAqIHQgKiAtMSkgOiAobi5zbGlkZU9mZnNldCA9IG4uc2xpZGVDb3VudCAlIG4ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAqIG4uc2xpZGVXaWR0aCAqIC0xLCByID0gbi5zbGlkZUNvdW50ICUgbi5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICogdCAqIC0xKSkpIDogaSArIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPiBuLnNsaWRlQ291bnQgJiYgKG4uc2xpZGVPZmZzZXQgPSAoaSArIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSBuLnNsaWRlQ291bnQpICogbi5zbGlkZVdpZHRoLCByID0gKGkgKyBuLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gbi5zbGlkZUNvdW50KSAqIHQpLCBuLnNsaWRlQ291bnQgPD0gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAobi5zbGlkZU9mZnNldCA9IDAsIHIgPSAwKSwgITAgPT09IG4ub3B0aW9ucy5jZW50ZXJNb2RlICYmIG4uc2xpZGVDb3VudCA8PSBuLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gbi5zbGlkZU9mZnNldCA9IG4uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3Iobi5vcHRpb25zLnNsaWRlc1RvU2hvdykgLyAyIC0gbi5zbGlkZVdpZHRoICogbi5zbGlkZUNvdW50IC8gMiA6ICEwID09PSBuLm9wdGlvbnMuY2VudGVyTW9kZSAmJiAhMCA9PT0gbi5vcHRpb25zLmluZmluaXRlID8gbi5zbGlkZU9mZnNldCArPSBuLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKSAtIG4uc2xpZGVXaWR0aCA6ICEwID09PSBuLm9wdGlvbnMuY2VudGVyTW9kZSAmJiAobi5zbGlkZU9mZnNldCA9IDAsIG4uc2xpZGVPZmZzZXQgKz0gbi5zbGlkZVdpZHRoICogTWF0aC5mbG9vcihuLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMikpLCBlID0gITEgPT09IG4ub3B0aW9ucy52ZXJ0aWNhbCA/IGkgKiBuLnNsaWRlV2lkdGggKiAtMSArIG4uc2xpZGVPZmZzZXQgOiBpICogdCAqIC0xICsgciwgITAgPT09IG4ub3B0aW9ucy52YXJpYWJsZVdpZHRoICYmIChvID0gbi5zbGlkZUNvdW50IDw9IG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgfHwgITEgPT09IG4ub3B0aW9ucy5pbmZpbml0ZSA/IG4uJHNsaWRlVHJhY2suY2hpbGRyZW4oIi5zbGljay1zbGlkZSIpLmVxKGkpIDogbi4kc2xpZGVUcmFjay5jaGlsZHJlbigiLnNsaWNrLXNsaWRlIikuZXEoaSArIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLCBlID0gITAgPT09IG4ub3B0aW9ucy5ydGwgPyBvWzBdID8gLTEgKiAobi4kc2xpZGVUcmFjay53aWR0aCgpIC0gb1swXS5vZmZzZXRMZWZ0IC0gby53aWR0aCgpKSA6IDAgOiBvWzBdID8gLTEgKiBvWzBdLm9mZnNldExlZnQgOiAwLCAhMCA9PT0gbi5vcHRpb25zLmNlbnRlck1vZGUgJiYgKG8gPSBuLnNsaWRlQ291bnQgPD0gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyB8fCAhMSA9PT0gbi5vcHRpb25zLmluZmluaXRlID8gbi4kc2xpZGVUcmFjay5jaGlsZHJlbigiLnNsaWNrLXNsaWRlIikuZXEoaSkgOiBuLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCIuc2xpY2stc2xpZGUiKS5lcShpICsgbi5vcHRpb25zLnNsaWRlc1RvU2hvdyArIDEpLCBlID0gITAgPT09IG4ub3B0aW9ucy5ydGwgPyBvWzBdID8gLTEgKiAobi4kc2xpZGVUcmFjay53aWR0aCgpIC0gb1swXS5vZmZzZXRMZWZ0IC0gby53aWR0aCgpKSA6IDAgOiBvWzBdID8gLTEgKiBvWzBdLm9mZnNldExlZnQgOiAwLCBlICs9IChuLiRsaXN0LndpZHRoKCkgLSBvLm91dGVyV2lkdGgoKSkgLyAyKSksIGUKICAgIH0sIGUucHJvdG90eXBlLmdldE9wdGlvbiA9IGUucHJvdG90eXBlLnNsaWNrR2V0T3B0aW9uID0gZnVuY3Rpb24oaSkgewogICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbaV0KICAgIH0sIGUucHJvdG90eXBlLmdldE5hdmlnYWJsZUluZGV4ZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSwgZSA9IHRoaXMsCiAgICAgICAgICAgIHQgPSAwLAogICAgICAgICAgICBvID0gMCwKICAgICAgICAgICAgcyA9IFtdOwogICAgICAgIGZvciAoITEgPT09IGUub3B0aW9ucy5pbmZpbml0ZSA/IGkgPSBlLnNsaWRlQ291bnQgOiAodCA9IC0xICogZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsLCBvID0gLTEgKiBlLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwsIGkgPSAyICogZS5zbGlkZUNvdW50KTsgdCA8IGk7KSBzLnB1c2godCksIHQgPSBvICsgZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsLCBvICs9IGUub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA8PSBlLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogZS5vcHRpb25zLnNsaWRlc1RvU2hvdzsKICAgICAgICByZXR1cm4gcwogICAgfSwgZS5wcm90b3R5cGUuZ2V0U2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcwogICAgfSwgZS5wcm90b3R5cGUuZ2V0U2xpZGVDb3VudCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlLCB0LCBvID0gdGhpczsKICAgICAgICByZXR1cm4gdCA9ICEwID09PSBvLm9wdGlvbnMuY2VudGVyTW9kZSA/IG8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3Ioby5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpIDogMCwgITAgPT09IG8ub3B0aW9ucy5zd2lwZVRvU2xpZGUgPyAoby4kc2xpZGVUcmFjay5maW5kKCIuc2xpY2stc2xpZGUiKS5lYWNoKGZ1bmN0aW9uKHMsIG4pIHsKICAgICAgICAgICAgaWYgKG4ub2Zmc2V0TGVmdCAtIHQgKyBpKG4pLm91dGVyV2lkdGgoKSAvIDIgPiAtMSAqIG8uc3dpcGVMZWZ0KSByZXR1cm4gZSA9IG4sICExCiAgICAgICAgfSksIE1hdGguYWJzKGkoZSkuYXR0cigiZGF0YS1zbGljay1pbmRleCIpIC0gby5jdXJyZW50U2xpZGUpIHx8IDEpIDogby5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsCiAgICB9LCBlLnByb3RvdHlwZS5nb1RvID0gZS5wcm90b3R5cGUuc2xpY2tHb1RvID0gZnVuY3Rpb24oaSwgZSkgewogICAgICAgIHRoaXMuY2hhbmdlU2xpZGUoewogICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICBtZXNzYWdlOiAiaW5kZXgiLAogICAgICAgICAgICAgICAgaW5kZXg6IHBhcnNlSW50KGkpCiAgICAgICAgICAgIH0KICAgICAgICB9LCBlKQogICAgfSwgZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgaSh0LiRzbGlkZXIpLmhhc0NsYXNzKCJzbGljay1pbml0aWFsaXplZCIpIHx8IChpKHQuJHNsaWRlcikuYWRkQ2xhc3MoInNsaWNrLWluaXRpYWxpemVkIiksIHQuYnVpbGRSb3dzKCksIHQuYnVpbGRPdXQoKSwgdC5zZXRQcm9wcygpLCB0LnN0YXJ0TG9hZCgpLCB0LmxvYWRTbGlkZXIoKSwgdC5pbml0aWFsaXplRXZlbnRzKCksIHQudXBkYXRlQXJyb3dzKCksIHQudXBkYXRlRG90cygpLCB0LmNoZWNrUmVzcG9uc2l2ZSghMCksIHQuZm9jdXNIYW5kbGVyKCkpLCBlICYmIHQuJHNsaWRlci50cmlnZ2VyKCJpbml0IiwgW3RdKSwgITAgPT09IHQub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ICYmIHQuaW5pdEFEQSgpLCB0Lm9wdGlvbnMuYXV0b3BsYXkgJiYgKHQucGF1c2VkID0gITEsIHQuYXV0b1BsYXkoKSkKICAgIH0sIGUucHJvdG90eXBlLmluaXRBREEgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgIHQgPSBNYXRoLmNlaWwoZS5zbGlkZUNvdW50IC8gZS5vcHRpb25zLnNsaWRlc1RvU2hvdyksCiAgICAgICAgICAgIG8gPSBlLmdldE5hdmlnYWJsZUluZGV4ZXMoKS5maWx0ZXIoZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkgPj0gMCAmJiBpIDwgZS5zbGlkZUNvdW50CiAgICAgICAgICAgIH0pOwogICAgICAgIGUuJHNsaWRlcy5hZGQoZS4kc2xpZGVUcmFjay5maW5kKCIuc2xpY2stY2xvbmVkIikpLmF0dHIoewogICAgICAgICAgICAiYXJpYS1oaWRkZW4iOiAidHJ1ZSIsCiAgICAgICAgICAgIHRhYmluZGV4OiAiLTEiCiAgICAgICAgfSkuZmluZCgiYSwgaW5wdXQsIGJ1dHRvbiwgc2VsZWN0IikuYXR0cih7CiAgICAgICAgICAgIHRhYmluZGV4OiAiLTEiCiAgICAgICAgfSksIG51bGwgIT09IGUuJGRvdHMgJiYgKGUuJHNsaWRlcy5ub3QoZS4kc2xpZGVUcmFjay5maW5kKCIuc2xpY2stY2xvbmVkIikpLmVhY2goZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgcyA9IG8uaW5kZXhPZih0KTsKICAgICAgICAgICAgaSh0aGlzKS5hdHRyKHsKICAgICAgICAgICAgICAgIHJvbGU6ICJ0YWJwYW5lbCIsCiAgICAgICAgICAgICAgICBpZDogInNsaWNrLXNsaWRlIiArIGUuaW5zdGFuY2VVaWQgKyB0LAogICAgICAgICAgICAgICAgdGFiaW5kZXg6IC0xCiAgICAgICAgICAgIH0pLCAtMSAhPT0gcyAmJiBpKHRoaXMpLmF0dHIoewogICAgICAgICAgICAgICAgImFyaWEtZGVzY3JpYmVkYnkiOiAic2xpY2stc2xpZGUtY29udHJvbCIgKyBlLmluc3RhbmNlVWlkICsgcwogICAgICAgICAgICB9KQogICAgICAgIH0pLCBlLiRkb3RzLmF0dHIoInJvbGUiLCAidGFibGlzdCIpLmZpbmQoImxpIikuZWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIHZhciBuID0gb1tzXTsKICAgICAgICAgICAgaSh0aGlzKS5hdHRyKHsKICAgICAgICAgICAgICAgIHJvbGU6ICJwcmVzZW50YXRpb24iCiAgICAgICAgICAgIH0pLCBpKHRoaXMpLmZpbmQoImJ1dHRvbiIpLmZpcnN0KCkuYXR0cih7CiAgICAgICAgICAgICAgICByb2xlOiAidGFiIiwKICAgICAgICAgICAgICAgIGlkOiAic2xpY2stc2xpZGUtY29udHJvbCIgKyBlLmluc3RhbmNlVWlkICsgcywKICAgICAgICAgICAgICAgICJhcmlhLWNvbnRyb2xzIjogInNsaWNrLXNsaWRlIiArIGUuaW5zdGFuY2VVaWQgKyBuLAogICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiOiBzICsgMSArICIgb2YgIiArIHQsCiAgICAgICAgICAgICAgICAiYXJpYS1zZWxlY3RlZCI6IG51bGwsCiAgICAgICAgICAgICAgICB0YWJpbmRleDogIi0xIgogICAgICAgICAgICB9KQogICAgICAgIH0pLmVxKGUuY3VycmVudFNsaWRlKS5maW5kKCJidXR0b24iKS5hdHRyKHsKICAgICAgICAgICAgImFyaWEtc2VsZWN0ZWQiOiAidHJ1ZSIsCiAgICAgICAgICAgIHRhYmluZGV4OiAiMCIKICAgICAgICB9KS5lbmQoKSk7CiAgICAgICAgZm9yICh2YXIgcyA9IGUuY3VycmVudFNsaWRlLCBuID0gcyArIGUub3B0aW9ucy5zbGlkZXNUb1Nob3c7IHMgPCBuOyBzKyspIGUuJHNsaWRlcy5lcShzKS5hdHRyKCJ0YWJpbmRleCIsIDApOwogICAgICAgIGUuYWN0aXZhdGVBREEoKQogICAgfSwgZS5wcm90b3R5cGUuaW5pdEFycm93RXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICEwID09PSBpLm9wdGlvbnMuYXJyb3dzICYmIGkuc2xpZGVDb3VudCA+IGkub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgKGkuJHByZXZBcnJvdy5vZmYoImNsaWNrLnNsaWNrIikub24oImNsaWNrLnNsaWNrIiwgewogICAgICAgICAgICBtZXNzYWdlOiAicHJldmlvdXMiCiAgICAgICAgfSwgaS5jaGFuZ2VTbGlkZSksIGkuJG5leHRBcnJvdy5vZmYoImNsaWNrLnNsaWNrIikub24oImNsaWNrLnNsaWNrIiwgewogICAgICAgICAgICBtZXNzYWdlOiAibmV4dCIKICAgICAgICB9LCBpLmNoYW5nZVNsaWRlKSwgITAgPT09IGkub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ICYmIChpLiRwcmV2QXJyb3cub24oImtleWRvd24uc2xpY2siLCBpLmtleUhhbmRsZXIpLCBpLiRuZXh0QXJyb3cub24oImtleWRvd24uc2xpY2siLCBpLmtleUhhbmRsZXIpKSkKICAgIH0sIGUucHJvdG90eXBlLmluaXREb3RFdmVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgITAgPT09IGUub3B0aW9ucy5kb3RzICYmIChpKCJsaSIsIGUuJGRvdHMpLm9uKCJjbGljay5zbGljayIsIHsKICAgICAgICAgICAgbWVzc2FnZTogImluZGV4IgogICAgICAgIH0sIGUuY2hhbmdlU2xpZGUpLCAhMCA9PT0gZS5vcHRpb25zLmFjY2Vzc2liaWxpdHkgJiYgZS4kZG90cy5vbigia2V5ZG93bi5zbGljayIsIGUua2V5SGFuZGxlcikpLCAhMCA9PT0gZS5vcHRpb25zLmRvdHMgJiYgITAgPT09IGUub3B0aW9ucy5wYXVzZU9uRG90c0hvdmVyICYmIGkoImxpIiwgZS4kZG90cykub24oIm1vdXNlZW50ZXIuc2xpY2siLCBpLnByb3h5KGUuaW50ZXJydXB0LCBlLCAhMCkpLm9uKCJtb3VzZWxlYXZlLnNsaWNrIiwgaS5wcm94eShlLmludGVycnVwdCwgZSwgITEpKQogICAgfSwgZS5wcm90b3R5cGUuaW5pdFNsaWRlRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgIGUub3B0aW9ucy5wYXVzZU9uSG92ZXIgJiYgKGUuJGxpc3Qub24oIm1vdXNlZW50ZXIuc2xpY2siLCBpLnByb3h5KGUuaW50ZXJydXB0LCBlLCAhMCkpLCBlLiRsaXN0Lm9uKCJtb3VzZWxlYXZlLnNsaWNrIiwgaS5wcm94eShlLmludGVycnVwdCwgZSwgITEpKSkKICAgIH0sIGUucHJvdG90eXBlLmluaXRpYWxpemVFdmVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgZS5pbml0QXJyb3dFdmVudHMoKSwgZS5pbml0RG90RXZlbnRzKCksIGUuaW5pdFNsaWRlRXZlbnRzKCksIGUuJGxpc3Qub24oInRvdWNoc3RhcnQuc2xpY2sgbW91c2Vkb3duLnNsaWNrIiwgewogICAgICAgICAgICBhY3Rpb246ICJzdGFydCIKICAgICAgICB9LCBlLnN3aXBlSGFuZGxlciksIGUuJGxpc3Qub24oInRvdWNobW92ZS5zbGljayBtb3VzZW1vdmUuc2xpY2siLCB7CiAgICAgICAgICAgIGFjdGlvbjogIm1vdmUiCiAgICAgICAgfSwgZS5zd2lwZUhhbmRsZXIpLCBlLiRsaXN0Lm9uKCJ0b3VjaGVuZC5zbGljayBtb3VzZXVwLnNsaWNrIiwgewogICAgICAgICAgICBhY3Rpb246ICJlbmQiCiAgICAgICAgfSwgZS5zd2lwZUhhbmRsZXIpLCBlLiRsaXN0Lm9uKCJ0b3VjaGNhbmNlbC5zbGljayBtb3VzZWxlYXZlLnNsaWNrIiwgewogICAgICAgICAgICBhY3Rpb246ICJlbmQiCiAgICAgICAgfSwgZS5zd2lwZUhhbmRsZXIpLCBlLiRsaXN0Lm9uKCJjbGljay5zbGljayIsIGUuY2xpY2tIYW5kbGVyKSwgaShkb2N1bWVudCkub24oZS52aXNpYmlsaXR5Q2hhbmdlLCBpLnByb3h5KGUudmlzaWJpbGl0eSwgZSkpLCAhMCA9PT0gZS5vcHRpb25zLmFjY2Vzc2liaWxpdHkgJiYgZS4kbGlzdC5vbigia2V5ZG93bi5zbGljayIsIGUua2V5SGFuZGxlciksICEwID09PSBlLm9wdGlvbnMuZm9jdXNPblNlbGVjdCAmJiBpKGUuJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub24oImNsaWNrLnNsaWNrIiwgZS5zZWxlY3RIYW5kbGVyKSwgaSh3aW5kb3cpLm9uKCJvcmllbnRhdGlvbmNoYW5nZS5zbGljay5zbGljay0iICsgZS5pbnN0YW5jZVVpZCwgaS5wcm94eShlLm9yaWVudGF0aW9uQ2hhbmdlLCBlKSksIGkod2luZG93KS5vbigicmVzaXplLnNsaWNrLnNsaWNrLSIgKyBlLmluc3RhbmNlVWlkLCBpLnByb3h5KGUucmVzaXplLCBlKSksIGkoIltkcmFnZ2FibGUhPXRydWVdIiwgZS4kc2xpZGVUcmFjaykub24oImRyYWdzdGFydCIsIGUucHJldmVudERlZmF1bHQpLCBpKHdpbmRvdykub24oImxvYWQuc2xpY2suc2xpY2stIiArIGUuaW5zdGFuY2VVaWQsIGUuc2V0UG9zaXRpb24pLCBpKGUuc2V0UG9zaXRpb24pCiAgICB9LCBlLnByb3RvdHlwZS5pbml0VUkgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgITAgPT09IGkub3B0aW9ucy5hcnJvd3MgJiYgaS5zbGlkZUNvdW50ID4gaS5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAoaS4kcHJldkFycm93LnNob3coKSwgaS4kbmV4dEFycm93LnNob3coKSksICEwID09PSBpLm9wdGlvbnMuZG90cyAmJiBpLnNsaWRlQ291bnQgPiBpLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIGkuJGRvdHMuc2hvdygpCiAgICB9LCBlLnByb3RvdHlwZS5rZXlIYW5kbGVyID0gZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICBpLnRhcmdldC50YWdOYW1lLm1hdGNoKCJURVhUQVJFQXxJTlBVVHxTRUxFQ1QiKSB8fCAoMzcgPT09IGkua2V5Q29kZSAmJiAhMCA9PT0gZS5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPyBlLmNoYW5nZVNsaWRlKHsKICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgbWVzc2FnZTogITAgPT09IGUub3B0aW9ucy5ydGwgPyAibmV4dCIgOiAicHJldmlvdXMiCiAgICAgICAgICAgIH0KICAgICAgICB9KSA6IDM5ID09PSBpLmtleUNvZGUgJiYgITAgPT09IGUub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ICYmIGUuY2hhbmdlU2xpZGUoewogICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICBtZXNzYWdlOiAhMCA9PT0gZS5vcHRpb25zLnJ0bCA/ICJwcmV2aW91cyIgOiAibmV4dCIKICAgICAgICAgICAgfQogICAgICAgIH0pKQogICAgfSwgZS5wcm90b3R5cGUubGF6eUxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiBlKGUpIHsKICAgICAgICAgICAgaSgiaW1nW2RhdGEtbGF6eV0iLCBlKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBpKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIHQgPSBpKHRoaXMpLmF0dHIoImRhdGEtbGF6eSIpLAogICAgICAgICAgICAgICAgICAgIG8gPSBpKHRoaXMpLmF0dHIoImRhdGEtc3Jjc2V0IiksCiAgICAgICAgICAgICAgICAgICAgcyA9IGkodGhpcykuYXR0cigiZGF0YS1zaXplcyIpIHx8IG4uJHNsaWRlci5hdHRyKCJkYXRhLXNpemVzIiksCiAgICAgICAgICAgICAgICAgICAgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwogICAgICAgICAgICAgICAgci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgICAgICAgICAgfSwgMTAwLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiAoZS5hdHRyKCJzcmNzZXQiLCBvKSwgcyAmJiBlLmF0dHIoInNpemVzIiwgcykpLCBlLmF0dHIoInNyYyIsIHQpLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVBdHRyKCJkYXRhLWxhenkgZGF0YS1zcmNzZXQgZGF0YS1zaXplcyIpLnJlbW92ZUNsYXNzKCJzbGljay1sb2FkaW5nIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4uJHNsaWRlci50cmlnZ2VyKCJsYXp5TG9hZGVkIiwgW24sIGUsIHRdKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LCByLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUF0dHIoImRhdGEtbGF6eSIpLnJlbW92ZUNsYXNzKCJzbGljay1sb2FkaW5nIikuYWRkQ2xhc3MoInNsaWNrLWxhenlsb2FkLWVycm9yIiksIG4uJHNsaWRlci50cmlnZ2VyKCJsYXp5TG9hZEVycm9yIiwgW24sIGUsIHRdKQogICAgICAgICAgICAgICAgfSwgci5zcmMgPSB0CiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgICAgIHZhciB0LCBvLCBzLCBuID0gdGhpczsKICAgICAgICBpZiAoITAgPT09IG4ub3B0aW9ucy5jZW50ZXJNb2RlID8gITAgPT09IG4ub3B0aW9ucy5pbmZpbml0ZSA/IHMgPSAobyA9IG4uY3VycmVudFNsaWRlICsgKG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyICsgMSkpICsgbi5vcHRpb25zLnNsaWRlc1RvU2hvdyArIDIgOiAobyA9IE1hdGgubWF4KDAsIG4uY3VycmVudFNsaWRlIC0gKG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyICsgMSkpLCBzID0gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIgKyAxICsgMiArIG4uY3VycmVudFNsaWRlKSA6IChvID0gbi5vcHRpb25zLmluZmluaXRlID8gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyArIG4uY3VycmVudFNsaWRlIDogbi5jdXJyZW50U2xpZGUsIHMgPSBNYXRoLmNlaWwobyArIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLCAhMCA9PT0gbi5vcHRpb25zLmZhZGUgJiYgKG8gPiAwICYmIG8tLSwgcyA8PSBuLnNsaWRlQ291bnQgJiYgcysrKSksIHQgPSBuLiRzbGlkZXIuZmluZCgiLnNsaWNrLXNsaWRlIikuc2xpY2UobywgcyksICJhbnRpY2lwYXRlZCIgPT09IG4ub3B0aW9ucy5sYXp5TG9hZCkKICAgICAgICAgICAgZm9yICh2YXIgciA9IG8gLSAxLCBsID0gcywgZCA9IG4uJHNsaWRlci5maW5kKCIuc2xpY2stc2xpZGUiKSwgYSA9IDA7IGEgPCBuLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7IGErKykgciA8IDAgJiYgKHIgPSBuLnNsaWRlQ291bnQgLSAxKSwgdCA9ICh0ID0gdC5hZGQoZC5lcShyKSkpLmFkZChkLmVxKGwpKSwgci0tLCBsKys7CiAgICAgICAgZSh0KSwgbi5zbGlkZUNvdW50IDw9IG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBlKG4uJHNsaWRlci5maW5kKCIuc2xpY2stc2xpZGUiKSkgOiBuLmN1cnJlbnRTbGlkZSA+PSBuLnNsaWRlQ291bnQgLSBuLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gZShuLiRzbGlkZXIuZmluZCgiLnNsaWNrLWNsb25lZCIpLnNsaWNlKDAsIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKSA6IDAgPT09IG4uY3VycmVudFNsaWRlICYmIGUobi4kc2xpZGVyLmZpbmQoIi5zbGljay1jbG9uZWQiKS5zbGljZSgtMSAqIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKQogICAgfSwgZS5wcm90b3R5cGUubG9hZFNsaWRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICBpLnNldFBvc2l0aW9uKCksIGkuJHNsaWRlVHJhY2suY3NzKHsKICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgIH0pLCBpLiRzbGlkZXIucmVtb3ZlQ2xhc3MoInNsaWNrLWxvYWRpbmciKSwgaS5pbml0VUkoKSwgInByb2dyZXNzaXZlIiA9PT0gaS5vcHRpb25zLmxhenlMb2FkICYmIGkucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpCiAgICB9LCBlLnByb3RvdHlwZS5uZXh0ID0gZS5wcm90b3R5cGUuc2xpY2tOZXh0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5jaGFuZ2VTbGlkZSh7CiAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJuZXh0IgogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGUucHJvdG90eXBlLm9yaWVudGF0aW9uQ2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgIGkuY2hlY2tSZXNwb25zaXZlKCksIGkuc2V0UG9zaXRpb24oKQogICAgfSwgZS5wcm90b3R5cGUucGF1c2UgPSBlLnByb3RvdHlwZS5zbGlja1BhdXNlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgIGkuYXV0b1BsYXlDbGVhcigpLCBpLnBhdXNlZCA9ICEwCiAgICB9LCBlLnByb3RvdHlwZS5wbGF5ID0gZS5wcm90b3R5cGUuc2xpY2tQbGF5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgIGkuYXV0b1BsYXkoKSwgaS5vcHRpb25zLmF1dG9wbGF5ID0gITAsIGkucGF1c2VkID0gITEsIGkuZm9jdXNzZWQgPSAhMSwgaS5pbnRlcnJ1cHRlZCA9ICExCiAgICB9LCBlLnByb3RvdHlwZS5wb3N0U2xpZGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgIHQudW5zbGlja2VkIHx8ICh0LiRzbGlkZXIudHJpZ2dlcigiYWZ0ZXJDaGFuZ2UiLCBbdCwgZV0pLCB0LmFuaW1hdGluZyA9ICExLCB0LnNsaWRlQ291bnQgPiB0Lm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIHQuc2V0UG9zaXRpb24oKSwgdC5zd2lwZUxlZnQgPSBudWxsLCB0Lm9wdGlvbnMuYXV0b3BsYXkgJiYgdC5hdXRvUGxheSgpLCAhMCA9PT0gdC5vcHRpb25zLmFjY2Vzc2liaWxpdHkgJiYgKHQuaW5pdEFEQSgpLCB0Lm9wdGlvbnMuZm9jdXNPbkNoYW5nZSAmJiBpKHQuJHNsaWRlcy5nZXQodC5jdXJyZW50U2xpZGUpKS5hdHRyKCJ0YWJpbmRleCIsIDApLmZvY3VzKCkpKQogICAgfSwgZS5wcm90b3R5cGUucHJldiA9IGUucHJvdG90eXBlLnNsaWNrUHJldiA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuY2hhbmdlU2xpZGUoewogICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICBtZXNzYWdlOiAicHJldmlvdXMiCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZS5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgaS5wcmV2ZW50RGVmYXVsdCgpCiAgICB9LCBlLnByb3RvdHlwZS5wcm9ncmVzc2l2ZUxhenlMb2FkID0gZnVuY3Rpb24oZSkgewogICAgICAgIGUgPSBlIHx8IDE7CiAgICAgICAgdmFyIHQsIG8sIHMsIG4sIHIsIGwgPSB0aGlzLAogICAgICAgICAgICBkID0gaSgiaW1nW2RhdGEtbGF6eV0iLCBsLiRzbGlkZXIpOwogICAgICAgIGQubGVuZ3RoID8gKHQgPSBkLmZpcnN0KCksIG8gPSB0LmF0dHIoImRhdGEtbGF6eSIpLCBzID0gdC5hdHRyKCJkYXRhLXNyY3NldCIpLCBuID0gdC5hdHRyKCJkYXRhLXNpemVzIikgfHwgbC4kc2xpZGVyLmF0dHIoImRhdGEtc2l6ZXMiKSwgKHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSkub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHMgJiYgKHQuYXR0cigic3Jjc2V0IiwgcyksIG4gJiYgdC5hdHRyKCJzaXplcyIsIG4pKSwgdC5hdHRyKCJzcmMiLCBvKS5yZW1vdmVBdHRyKCJkYXRhLWxhenkgZGF0YS1zcmNzZXQgZGF0YS1zaXplcyIpLnJlbW92ZUNsYXNzKCJzbGljay1sb2FkaW5nIiksICEwID09PSBsLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgJiYgbC5zZXRQb3NpdGlvbigpLCBsLiRzbGlkZXIudHJpZ2dlcigibGF6eUxvYWRlZCIsIFtsLCB0LCBvXSksIGwucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpCiAgICAgICAgfSwgci5vbmVycm9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGUgPCAzID8gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGwucHJvZ3Jlc3NpdmVMYXp5TG9hZChlICsgMSkKICAgICAgICAgICAgfSwgNTAwKSA6ICh0LnJlbW92ZUF0dHIoImRhdGEtbGF6eSIpLnJlbW92ZUNsYXNzKCJzbGljay1sb2FkaW5nIikuYWRkQ2xhc3MoInNsaWNrLWxhenlsb2FkLWVycm9yIiksIGwuJHNsaWRlci50cmlnZ2VyKCJsYXp5TG9hZEVycm9yIiwgW2wsIHQsIG9dKSwgbC5wcm9ncmVzc2l2ZUxhenlMb2FkKCkpCiAgICAgICAgfSwgci5zcmMgPSBvKSA6IGwuJHNsaWRlci50cmlnZ2VyKCJhbGxJbWFnZXNMb2FkZWQiLCBbbF0pCiAgICB9LCBlLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0LCBvLCBzID0gdGhpczsKICAgICAgICBvID0gcy5zbGlkZUNvdW50IC0gcy5vcHRpb25zLnNsaWRlc1RvU2hvdywgIXMub3B0aW9ucy5pbmZpbml0ZSAmJiBzLmN1cnJlbnRTbGlkZSA+IG8gJiYgKHMuY3VycmVudFNsaWRlID0gbyksIHMuc2xpZGVDb3VudCA8PSBzLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIChzLmN1cnJlbnRTbGlkZSA9IDApLCB0ID0gcy5jdXJyZW50U2xpZGUsIHMuZGVzdHJveSghMCksIGkuZXh0ZW5kKHMsIHMuaW5pdGlhbHMsIHsKICAgICAgICAgICAgY3VycmVudFNsaWRlOiB0CiAgICAgICAgfSksIHMuaW5pdCgpLCBlIHx8IHMuY2hhbmdlU2xpZGUoewogICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICBtZXNzYWdlOiAiaW5kZXgiLAogICAgICAgICAgICAgICAgaW5kZXg6IHQKICAgICAgICAgICAgfQogICAgICAgIH0sICExKQogICAgfSwgZS5wcm90b3R5cGUucmVnaXN0ZXJCcmVha3BvaW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlLCB0LCBvLCBzID0gdGhpcywKICAgICAgICAgICAgbiA9IHMub3B0aW9ucy5yZXNwb25zaXZlIHx8IG51bGw7CiAgICAgICAgaWYgKCJhcnJheSIgPT09IGkudHlwZShuKSAmJiBuLmxlbmd0aCkgewogICAgICAgICAgICBzLnJlc3BvbmRUbyA9IHMub3B0aW9ucy5yZXNwb25kVG8gfHwgIndpbmRvdyI7CiAgICAgICAgICAgIGZvciAoZSBpbiBuKQogICAgICAgICAgICAgICAgaWYgKG8gPSBzLmJyZWFrcG9pbnRzLmxlbmd0aCAtIDEsIG4uaGFzT3duUHJvcGVydHkoZSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBuW2VdLmJyZWFrcG9pbnQ7IG8gPj0gMDspIHMuYnJlYWtwb2ludHNbb10gJiYgcy5icmVha3BvaW50c1tvXSA9PT0gdCAmJiBzLmJyZWFrcG9pbnRzLnNwbGljZShvLCAxKSwgby0tOwogICAgICAgICAgICAgICAgICAgIHMuYnJlYWtwb2ludHMucHVzaCh0KSwgcy5icmVha3BvaW50U2V0dGluZ3NbdF0gPSBuW2VdLnNldHRpbmdzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHMuYnJlYWtwb2ludHMuc29ydChmdW5jdGlvbihpLCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcy5vcHRpb25zLm1vYmlsZUZpcnN0ID8gaSAtIGUgOiBlIC0gaQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0sIGUucHJvdG90eXBlLnJlaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICBlLiRzbGlkZXMgPSBlLiRzbGlkZVRyYWNrLmNoaWxkcmVuKGUub3B0aW9ucy5zbGlkZSkuYWRkQ2xhc3MoInNsaWNrLXNsaWRlIiksIGUuc2xpZGVDb3VudCA9IGUuJHNsaWRlcy5sZW5ndGgsIGUuY3VycmVudFNsaWRlID49IGUuc2xpZGVDb3VudCAmJiAwICE9PSBlLmN1cnJlbnRTbGlkZSAmJiAoZS5jdXJyZW50U2xpZGUgPSBlLmN1cnJlbnRTbGlkZSAtIGUub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCksIGUuc2xpZGVDb3VudCA8PSBlLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIChlLmN1cnJlbnRTbGlkZSA9IDApLCBlLnJlZ2lzdGVyQnJlYWtwb2ludHMoKSwgZS5zZXRQcm9wcygpLCBlLnNldHVwSW5maW5pdGUoKSwgZS5idWlsZEFycm93cygpLCBlLnVwZGF0ZUFycm93cygpLCBlLmluaXRBcnJvd0V2ZW50cygpLCBlLmJ1aWxkRG90cygpLCBlLnVwZGF0ZURvdHMoKSwgZS5pbml0RG90RXZlbnRzKCksIGUuY2xlYW5VcFNsaWRlRXZlbnRzKCksIGUuaW5pdFNsaWRlRXZlbnRzKCksIGUuY2hlY2tSZXNwb25zaXZlKCExLCAhMCksICEwID09PSBlLm9wdGlvbnMuZm9jdXNPblNlbGVjdCAmJiBpKGUuJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub24oImNsaWNrLnNsaWNrIiwgZS5zZWxlY3RIYW5kbGVyKSwgZS5zZXRTbGlkZUNsYXNzZXMoIm51bWJlciIgPT0gdHlwZW9mIGUuY3VycmVudFNsaWRlID8gZS5jdXJyZW50U2xpZGUgOiAwKSwgZS5zZXRQb3NpdGlvbigpLCBlLmZvY3VzSGFuZGxlcigpLCBlLnBhdXNlZCA9ICFlLm9wdGlvbnMuYXV0b3BsYXksIGUuYXV0b1BsYXkoKSwgZS4kc2xpZGVyLnRyaWdnZXIoInJlSW5pdCIsIFtlXSkKICAgIH0sIGUucHJvdG90eXBlLnJlc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICBpKHdpbmRvdykud2lkdGgoKSAhPT0gZS53aW5kb3dXaWR0aCAmJiAoY2xlYXJUaW1lb3V0KGUud2luZG93RGVsYXkpLCBlLndpbmRvd0RlbGF5ID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGUud2luZG93V2lkdGggPSBpKHdpbmRvdykud2lkdGgoKSwgZS5jaGVja1Jlc3BvbnNpdmUoKSwgZS51bnNsaWNrZWQgfHwgZS5zZXRQb3NpdGlvbigpCiAgICAgICAgfSwgNTApKQogICAgfSwgZS5wcm90b3R5cGUucmVtb3ZlU2xpZGUgPSBlLnByb3RvdHlwZS5zbGlja1JlbW92ZSA9IGZ1bmN0aW9uKGksIGUsIHQpIHsKICAgICAgICB2YXIgbyA9IHRoaXM7CiAgICAgICAgaWYgKGkgPSAiYm9vbGVhbiIgPT0gdHlwZW9mIGkgPyAhMCA9PT0gKGUgPSBpKSA/IDAgOiBvLnNsaWRlQ291bnQgLSAxIDogITAgPT09IGUgPyAtLWkgOiBpLCBvLnNsaWRlQ291bnQgPCAxIHx8IGkgPCAwIHx8IGkgPiBvLnNsaWRlQ291bnQgLSAxKSByZXR1cm4gITE7CiAgICAgICAgby51bmxvYWQoKSwgITAgPT09IHQgPyBvLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCkucmVtb3ZlKCkgOiBvLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZXEoaSkucmVtb3ZlKCksIG8uJHNsaWRlcyA9IG8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKSwgby4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpLCBvLiRzbGlkZVRyYWNrLmFwcGVuZChvLiRzbGlkZXMpLCBvLiRzbGlkZXNDYWNoZSA9IG8uJHNsaWRlcywgby5yZWluaXQoKQogICAgfSwgZS5wcm90b3R5cGUuc2V0Q1NTID0gZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBlLCB0LCBvID0gdGhpcywKICAgICAgICAgICAgcyA9IHt9OwogICAgICAgICEwID09PSBvLm9wdGlvbnMucnRsICYmIChpID0gLWkpLCBlID0gImxlZnQiID09IG8ucG9zaXRpb25Qcm9wID8gTWF0aC5jZWlsKGkpICsgInB4IiA6ICIwcHgiLCB0ID0gInRvcCIgPT0gby5wb3NpdGlvblByb3AgPyBNYXRoLmNlaWwoaSkgKyAicHgiIDogIjBweCIsIHNbby5wb3NpdGlvblByb3BdID0gaSwgITEgPT09IG8udHJhbnNmb3Jtc0VuYWJsZWQgPyBvLiRzbGlkZVRyYWNrLmNzcyhzKSA6IChzID0ge30sICExID09PSBvLmNzc1RyYW5zaXRpb25zID8gKHNbby5hbmltVHlwZV0gPSAidHJhbnNsYXRlKCIgKyBlICsgIiwgIiArIHQgKyAiKSIsIG8uJHNsaWRlVHJhY2suY3NzKHMpKSA6IChzW28uYW5pbVR5cGVdID0gInRyYW5zbGF0ZTNkKCIgKyBlICsgIiwgIiArIHQgKyAiLCAwcHgpIiwgby4kc2xpZGVUcmFjay5jc3MocykpKQogICAgfSwgZS5wcm90b3R5cGUuc2V0RGltZW5zaW9ucyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICAhMSA9PT0gaS5vcHRpb25zLnZlcnRpY2FsID8gITAgPT09IGkub3B0aW9ucy5jZW50ZXJNb2RlICYmIGkuJGxpc3QuY3NzKHsKICAgICAgICAgICAgcGFkZGluZzogIjBweCAiICsgaS5vcHRpb25zLmNlbnRlclBhZGRpbmcKICAgICAgICB9KSA6IChpLiRsaXN0LmhlaWdodChpLiRzbGlkZXMuZmlyc3QoKS5vdXRlckhlaWdodCghMCkgKiBpLm9wdGlvbnMuc2xpZGVzVG9TaG93KSwgITAgPT09IGkub3B0aW9ucy5jZW50ZXJNb2RlICYmIGkuJGxpc3QuY3NzKHsKICAgICAgICAgICAgcGFkZGluZzogaS5vcHRpb25zLmNlbnRlclBhZGRpbmcgKyAiIDBweCIKICAgICAgICB9KSksIGkubGlzdFdpZHRoID0gaS4kbGlzdC53aWR0aCgpLCBpLmxpc3RIZWlnaHQgPSBpLiRsaXN0LmhlaWdodCgpLCAhMSA9PT0gaS5vcHRpb25zLnZlcnRpY2FsICYmICExID09PSBpLm9wdGlvbnMudmFyaWFibGVXaWR0aCA/IChpLnNsaWRlV2lkdGggPSBNYXRoLmNlaWwoaS5saXN0V2lkdGggLyBpLm9wdGlvbnMuc2xpZGVzVG9TaG93KSwgaS4kc2xpZGVUcmFjay53aWR0aChNYXRoLmNlaWwoaS5zbGlkZVdpZHRoICogaS4kc2xpZGVUcmFjay5jaGlsZHJlbigiLnNsaWNrLXNsaWRlIikubGVuZ3RoKSkpIDogITAgPT09IGkub3B0aW9ucy52YXJpYWJsZVdpZHRoID8gaS4kc2xpZGVUcmFjay53aWR0aCg1ZTMgKiBpLnNsaWRlQ291bnQpIDogKGkuc2xpZGVXaWR0aCA9IE1hdGguY2VpbChpLmxpc3RXaWR0aCksIGkuJHNsaWRlVHJhY2suaGVpZ2h0KE1hdGguY2VpbChpLiRzbGlkZXMuZmlyc3QoKS5vdXRlckhlaWdodCghMCkgKiBpLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCIuc2xpY2stc2xpZGUiKS5sZW5ndGgpKSk7CiAgICAgICAgdmFyIGUgPSBpLiRzbGlkZXMuZmlyc3QoKS5vdXRlcldpZHRoKCEwKSAtIGkuJHNsaWRlcy5maXJzdCgpLndpZHRoKCk7CiAgICAgICAgITEgPT09IGkub3B0aW9ucy52YXJpYWJsZVdpZHRoICYmIGkuJHNsaWRlVHJhY2suY2hpbGRyZW4oIi5zbGljay1zbGlkZSIpLndpZHRoKGkuc2xpZGVXaWR0aCAtIGUpCiAgICB9LCBlLnByb3RvdHlwZS5zZXRGYWRlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUsIHQgPSB0aGlzOwogICAgICAgIHQuJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKG8sIHMpIHsKICAgICAgICAgICAgZSA9IHQuc2xpZGVXaWR0aCAqIG8gKiAtMSwgITAgPT09IHQub3B0aW9ucy5ydGwgPyBpKHMpLmNzcyh7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogInJlbGF0aXZlIiwKICAgICAgICAgICAgICAgIHJpZ2h0OiBlLAogICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgekluZGV4OiB0Lm9wdGlvbnMuekluZGV4IC0gMiwKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgfSkgOiBpKHMpLmNzcyh7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogInJlbGF0aXZlIiwKICAgICAgICAgICAgICAgIGxlZnQ6IGUsCiAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICB6SW5kZXg6IHQub3B0aW9ucy56SW5kZXggLSAyLAogICAgICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgICB9KQogICAgICAgIH0pLCB0LiRzbGlkZXMuZXEodC5jdXJyZW50U2xpZGUpLmNzcyh7CiAgICAgICAgICAgIHpJbmRleDogdC5vcHRpb25zLnpJbmRleCAtIDEsCiAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICB9KQogICAgfSwgZS5wcm90b3R5cGUuc2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgIGlmICgxID09PSBpLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmICEwID09PSBpLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgJiYgITEgPT09IGkub3B0aW9ucy52ZXJ0aWNhbCkgewogICAgICAgICAgICB2YXIgZSA9IGkuJHNsaWRlcy5lcShpLmN1cnJlbnRTbGlkZSkub3V0ZXJIZWlnaHQoITApOwogICAgICAgICAgICBpLiRsaXN0LmNzcygiaGVpZ2h0IiwgZSkKICAgICAgICB9CiAgICB9LCBlLnByb3RvdHlwZS5zZXRPcHRpb24gPSBlLnByb3RvdHlwZS5zbGlja1NldE9wdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlLCB0LCBvLCBzLCBuLCByID0gdGhpcywKICAgICAgICAgICAgbCA9ICExOwogICAgICAgIGlmICgib2JqZWN0IiA9PT0gaS50eXBlKGFyZ3VtZW50c1swXSkgPyAobyA9IGFyZ3VtZW50c1swXSwgbCA9IGFyZ3VtZW50c1sxXSwgbiA9ICJtdWx0aXBsZSIpIDogInN0cmluZyIgPT09IGkudHlwZShhcmd1bWVudHNbMF0pICYmIChvID0gYXJndW1lbnRzWzBdLCBzID0gYXJndW1lbnRzWzFdLCBsID0gYXJndW1lbnRzWzJdLCAicmVzcG9uc2l2ZSIgPT09IGFyZ3VtZW50c1swXSAmJiAiYXJyYXkiID09PSBpLnR5cGUoYXJndW1lbnRzWzFdKSA/IG4gPSAicmVzcG9uc2l2ZSIgOiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSAmJiAobiA9ICJzaW5nbGUiKSksICJzaW5nbGUiID09PSBuKSByLm9wdGlvbnNbb10gPSBzOwogICAgICAgIGVsc2UgaWYgKCJtdWx0aXBsZSIgPT09IG4pIGkuZWFjaChvLCBmdW5jdGlvbihpLCBlKSB7CiAgICAgICAgICAgIHIub3B0aW9uc1tpXSA9IGUKICAgICAgICB9KTsKICAgICAgICBlbHNlIGlmICgicmVzcG9uc2l2ZSIgPT09IG4pCiAgICAgICAgICAgIGZvciAodCBpbiBzKQogICAgICAgICAgICAgICAgaWYgKCJhcnJheSIgIT09IGkudHlwZShyLm9wdGlvbnMucmVzcG9uc2l2ZSkpIHIub3B0aW9ucy5yZXNwb25zaXZlID0gW3NbdF1dOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gci5vcHRpb25zLnJlc3BvbnNpdmUubGVuZ3RoIC0gMTsgZSA+PSAwOykgci5vcHRpb25zLnJlc3BvbnNpdmVbZV0uYnJlYWtwb2ludCA9PT0gc1t0XS5icmVha3BvaW50ICYmIHIub3B0aW9ucy5yZXNwb25zaXZlLnNwbGljZShlLCAxKSwgZS0tOwogICAgICAgICAgICAgICAgICAgIHIub3B0aW9ucy5yZXNwb25zaXZlLnB1c2goc1t0XSkKICAgICAgICAgICAgICAgIH0KICAgICAgICBsICYmIChyLnVubG9hZCgpLCByLnJlaW5pdCgpKQogICAgfSwgZS5wcm90b3R5cGUuc2V0UG9zaXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgaS5zZXREaW1lbnNpb25zKCksIGkuc2V0SGVpZ2h0KCksICExID09PSBpLm9wdGlvbnMuZmFkZSA/IGkuc2V0Q1NTKGkuZ2V0TGVmdChpLmN1cnJlbnRTbGlkZSkpIDogaS5zZXRGYWRlKCksIGkuJHNsaWRlci50cmlnZ2VyKCJzZXRQb3NpdGlvbiIsIFtpXSkKICAgIH0sIGUucHJvdG90eXBlLnNldFByb3BzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzLAogICAgICAgICAgICBlID0gZG9jdW1lbnQuYm9keS5zdHlsZTsKICAgICAgICBpLnBvc2l0aW9uUHJvcCA9ICEwID09PSBpLm9wdGlvbnMudmVydGljYWwgPyAidG9wIiA6ICJsZWZ0IiwgInRvcCIgPT09IGkucG9zaXRpb25Qcm9wID8gaS4kc2xpZGVyLmFkZENsYXNzKCJzbGljay12ZXJ0aWNhbCIpIDogaS4kc2xpZGVyLnJlbW92ZUNsYXNzKCJzbGljay12ZXJ0aWNhbCIpLCB2b2lkIDAgPT09IGUuV2Via2l0VHJhbnNpdGlvbiAmJiB2b2lkIDAgPT09IGUuTW96VHJhbnNpdGlvbiAmJiB2b2lkIDAgPT09IGUubXNUcmFuc2l0aW9uIHx8ICEwID09PSBpLm9wdGlvbnMudXNlQ1NTICYmIChpLmNzc1RyYW5zaXRpb25zID0gITApLCBpLm9wdGlvbnMuZmFkZSAmJiAoIm51bWJlciIgPT0gdHlwZW9mIGkub3B0aW9ucy56SW5kZXggPyBpLm9wdGlvbnMuekluZGV4IDwgMyAmJiAoaS5vcHRpb25zLnpJbmRleCA9IDMpIDogaS5vcHRpb25zLnpJbmRleCA9IGkuZGVmYXVsdHMuekluZGV4KSwgdm9pZCAwICE9PSBlLk9UcmFuc2Zvcm0gJiYgKGkuYW5pbVR5cGUgPSAiT1RyYW5zZm9ybSIsIGkudHJhbnNmb3JtVHlwZSA9ICItby10cmFuc2Zvcm0iLCBpLnRyYW5zaXRpb25UeXBlID0gIk9UcmFuc2l0aW9uIiwgdm9pZCAwID09PSBlLnBlcnNwZWN0aXZlUHJvcGVydHkgJiYgdm9pZCAwID09PSBlLndlYmtpdFBlcnNwZWN0aXZlICYmIChpLmFuaW1UeXBlID0gITEpKSwgdm9pZCAwICE9PSBlLk1velRyYW5zZm9ybSAmJiAoaS5hbmltVHlwZSA9ICJNb3pUcmFuc2Zvcm0iLCBpLnRyYW5zZm9ybVR5cGUgPSAiLW1vei10cmFuc2Zvcm0iLCBpLnRyYW5zaXRpb25UeXBlID0gIk1velRyYW5zaXRpb24iLCB2b2lkIDAgPT09IGUucGVyc3BlY3RpdmVQcm9wZXJ0eSAmJiB2b2lkIDAgPT09IGUuTW96UGVyc3BlY3RpdmUgJiYgKGkuYW5pbVR5cGUgPSAhMSkpLCB2b2lkIDAgIT09IGUud2Via2l0VHJhbnNmb3JtICYmIChpLmFuaW1UeXBlID0gIndlYmtpdFRyYW5zZm9ybSIsIGkudHJhbnNmb3JtVHlwZSA9ICItd2Via2l0LXRyYW5zZm9ybSIsIGkudHJhbnNpdGlvblR5cGUgPSAid2Via2l0VHJhbnNpdGlvbiIsIHZvaWQgMCA9PT0gZS5wZXJzcGVjdGl2ZVByb3BlcnR5ICYmIHZvaWQgMCA9PT0gZS53ZWJraXRQZXJzcGVjdGl2ZSAmJiAoaS5hbmltVHlwZSA9ICExKSksIHZvaWQgMCAhPT0gZS5tc1RyYW5zZm9ybSAmJiAoaS5hbmltVHlwZSA9ICJtc1RyYW5zZm9ybSIsIGkudHJhbnNmb3JtVHlwZSA9ICItbXMtdHJhbnNmb3JtIiwgaS50cmFuc2l0aW9uVHlwZSA9ICJtc1RyYW5zaXRpb24iLCB2b2lkIDAgPT09IGUubXNUcmFuc2Zvcm0gJiYgKGkuYW5pbVR5cGUgPSAhMSkpLCB2b2lkIDAgIT09IGUudHJhbnNmb3JtICYmICExICE9PSBpLmFuaW1UeXBlICYmIChpLmFuaW1UeXBlID0gInRyYW5zZm9ybSIsIGkudHJhbnNmb3JtVHlwZSA9ICJ0cmFuc2Zvcm0iLCBpLnRyYW5zaXRpb25UeXBlID0gInRyYW5zaXRpb24iKSwgaS50cmFuc2Zvcm1zRW5hYmxlZCA9IGkub3B0aW9ucy51c2VUcmFuc2Zvcm0gJiYgbnVsbCAhPT0gaS5hbmltVHlwZSAmJiAhMSAhPT0gaS5hbmltVHlwZQogICAgfSwgZS5wcm90b3R5cGUuc2V0U2xpZGVDbGFzc2VzID0gZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBlLCB0LCBvLCBzLCBuID0gdGhpczsKICAgICAgICBpZiAodCA9IG4uJHNsaWRlci5maW5kKCIuc2xpY2stc2xpZGUiKS5yZW1vdmVDbGFzcygic2xpY2stYWN0aXZlIHNsaWNrLWNlbnRlciBzbGljay1jdXJyZW50IikuYXR0cigiYXJpYS1oaWRkZW4iLCAidHJ1ZSIpLCBuLiRzbGlkZXMuZXEoaSkuYWRkQ2xhc3MoInNsaWNrLWN1cnJlbnQiKSwgITAgPT09IG4ub3B0aW9ucy5jZW50ZXJNb2RlKSB7CiAgICAgICAgICAgIHZhciByID0gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyAlIDIgPT0gMCA/IDEgOiAwOwogICAgICAgICAgICBlID0gTWF0aC5mbG9vcihuLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMiksICEwID09PSBuLm9wdGlvbnMuaW5maW5pdGUgJiYgKGkgPj0gZSAmJiBpIDw9IG4uc2xpZGVDb3VudCAtIDEgLSBlID8gbi4kc2xpZGVzLnNsaWNlKGkgLSBlICsgciwgaSArIGUgKyAxKS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKSA6IChvID0gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyArIGksIHQuc2xpY2UobyAtIGUgKyAxICsgciwgbyArIGUgKyAyKS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKSksIDAgPT09IGkgPyB0LmVxKHQubGVuZ3RoIC0gMSAtIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLmFkZENsYXNzKCJzbGljay1jZW50ZXIiKSA6IGkgPT09IG4uc2xpZGVDb3VudCAtIDEgJiYgdC5lcShuLm9wdGlvbnMuc2xpZGVzVG9TaG93KS5hZGRDbGFzcygic2xpY2stY2VudGVyIikpLCBuLiRzbGlkZXMuZXEoaSkuYWRkQ2xhc3MoInNsaWNrLWNlbnRlciIpCiAgICAgICAgfSBlbHNlIGkgPj0gMCAmJiBpIDw9IG4uc2xpZGVDb3VudCAtIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBuLiRzbGlkZXMuc2xpY2UoaSwgaSArIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLmFkZENsYXNzKCJzbGljay1hY3RpdmUiKS5hdHRyKCJhcmlhLWhpZGRlbiIsICJmYWxzZSIpIDogdC5sZW5ndGggPD0gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IHQuYWRkQ2xhc3MoInNsaWNrLWFjdGl2ZSIpLmF0dHIoImFyaWEtaGlkZGVuIiwgImZhbHNlIikgOiAocyA9IG4uc2xpZGVDb3VudCAlIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3csIG8gPSAhMCA9PT0gbi5vcHRpb25zLmluZmluaXRlID8gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyArIGkgOiBpLCBuLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09IG4ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAmJiBuLnNsaWRlQ291bnQgLSBpIDwgbi5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IHQuc2xpY2UobyAtIChuLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gcyksIG8gKyBzKS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKSA6IHQuc2xpY2UobywgbyArIG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLmFkZENsYXNzKCJzbGljay1hY3RpdmUiKS5hdHRyKCJhcmlhLWhpZGRlbiIsICJmYWxzZSIpKTsKICAgICAgICAib25kZW1hbmQiICE9PSBuLm9wdGlvbnMubGF6eUxvYWQgJiYgImFudGljaXBhdGVkIiAhPT0gbi5vcHRpb25zLmxhenlMb2FkIHx8IG4ubGF6eUxvYWQoKQogICAgfSwgZS5wcm90b3R5cGUuc2V0dXBJbmZpbml0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlLCB0LCBvLCBzID0gdGhpczsKICAgICAgICBpZiAoITAgPT09IHMub3B0aW9ucy5mYWRlICYmIChzLm9wdGlvbnMuY2VudGVyTW9kZSA9ICExKSwgITAgPT09IHMub3B0aW9ucy5pbmZpbml0ZSAmJiAhMSA9PT0gcy5vcHRpb25zLmZhZGUgJiYgKHQgPSBudWxsLCBzLnNsaWRlQ291bnQgPiBzLm9wdGlvbnMuc2xpZGVzVG9TaG93KSkgewogICAgICAgICAgICBmb3IgKG8gPSAhMCA9PT0gcy5vcHRpb25zLmNlbnRlck1vZGUgPyBzLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgMSA6IHMub3B0aW9ucy5zbGlkZXNUb1Nob3csIGUgPSBzLnNsaWRlQ291bnQ7IGUgPiBzLnNsaWRlQ291bnQgLSBvOyBlIC09IDEpIHQgPSBlIC0gMSwgaShzLiRzbGlkZXNbdF0pLmNsb25lKCEwKS5hdHRyKCJpZCIsICIiKS5hdHRyKCJkYXRhLXNsaWNrLWluZGV4IiwgdCAtIHMuc2xpZGVDb3VudCkucHJlcGVuZFRvKHMuJHNsaWRlVHJhY2spLmFkZENsYXNzKCJzbGljay1jbG9uZWQiKTsKICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IG8gKyBzLnNsaWRlQ291bnQ7IGUgKz0gMSkgdCA9IGUsIGkocy4kc2xpZGVzW3RdKS5jbG9uZSghMCkuYXR0cigiaWQiLCAiIikuYXR0cigiZGF0YS1zbGljay1pbmRleCIsIHQgKyBzLnNsaWRlQ291bnQpLmFwcGVuZFRvKHMuJHNsaWRlVHJhY2spLmFkZENsYXNzKCJzbGljay1jbG9uZWQiKTsKICAgICAgICAgICAgcy4kc2xpZGVUcmFjay5maW5kKCIuc2xpY2stY2xvbmVkIikuZmluZCgiW2lkXSIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpKHRoaXMpLmF0dHIoImlkIiwgIiIpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSwgZS5wcm90b3R5cGUuaW50ZXJydXB0ID0gZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICBpIHx8IGUuYXV0b1BsYXkoKSwgZS5pbnRlcnJ1cHRlZCA9IGkKICAgIH0sIGUucHJvdG90eXBlLnNlbGVjdEhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICBvID0gaShlLnRhcmdldCkuaXMoIi5zbGljay1zbGlkZSIpID8gaShlLnRhcmdldCkgOiBpKGUudGFyZ2V0KS5wYXJlbnRzKCIuc2xpY2stc2xpZGUiKSwKICAgICAgICAgICAgcyA9IHBhcnNlSW50KG8uYXR0cigiZGF0YS1zbGljay1pbmRleCIpKTsKICAgICAgICBzIHx8IChzID0gMCksIHQuc2xpZGVDb3VudCA8PSB0Lm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gdC5zbGlkZUhhbmRsZXIocywgITEsICEwKSA6IHQuc2xpZGVIYW5kbGVyKHMpCiAgICB9LCBlLnByb3RvdHlwZS5zbGlkZUhhbmRsZXIgPSBmdW5jdGlvbihpLCBlLCB0KSB7CiAgICAgICAgdmFyIG8sIHMsIG4sIHIsIGwsIGQgPSBudWxsLAogICAgICAgICAgICBhID0gdGhpczsKICAgICAgICBpZiAoZSA9IGUgfHwgITEsICEoITAgPT09IGEuYW5pbWF0aW5nICYmICEwID09PSBhLm9wdGlvbnMud2FpdEZvckFuaW1hdGUgfHwgITAgPT09IGEub3B0aW9ucy5mYWRlICYmIGEuY3VycmVudFNsaWRlID09PSBpKSkKICAgICAgICAgICAgaWYgKCExID09PSBlICYmIGEuYXNOYXZGb3IoaSksIG8gPSBpLCBkID0gYS5nZXRMZWZ0KG8pLCByID0gYS5nZXRMZWZ0KGEuY3VycmVudFNsaWRlKSwgYS5jdXJyZW50TGVmdCA9IG51bGwgPT09IGEuc3dpcGVMZWZ0ID8gciA6IGEuc3dpcGVMZWZ0LCAhMSA9PT0gYS5vcHRpb25zLmluZmluaXRlICYmICExID09PSBhLm9wdGlvbnMuY2VudGVyTW9kZSAmJiAoaSA8IDAgfHwgaSA+IGEuZ2V0RG90Q291bnQoKSAqIGEub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpICExID09PSBhLm9wdGlvbnMuZmFkZSAmJiAobyA9IGEuY3VycmVudFNsaWRlLCAhMCAhPT0gdCA/IGEuYW5pbWF0ZVNsaWRlKHIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYS5wb3N0U2xpZGUobykKICAgICAgICAgICAgfSkgOiBhLnBvc3RTbGlkZShvKSk7CiAgICAgICAgICAgIGVsc2UgaWYgKCExID09PSBhLm9wdGlvbnMuaW5maW5pdGUgJiYgITAgPT09IGEub3B0aW9ucy5jZW50ZXJNb2RlICYmIChpIDwgMCB8fCBpID4gYS5zbGlkZUNvdW50IC0gYS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSkgITEgPT09IGEub3B0aW9ucy5mYWRlICYmIChvID0gYS5jdXJyZW50U2xpZGUsICEwICE9PSB0ID8gYS5hbmltYXRlU2xpZGUociwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGEucG9zdFNsaWRlKG8pCiAgICAgICAgfSkgOiBhLnBvc3RTbGlkZShvKSk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmIChhLm9wdGlvbnMuYXV0b3BsYXkgJiYgY2xlYXJJbnRlcnZhbChhLmF1dG9QbGF5VGltZXIpLCBzID0gbyA8IDAgPyBhLnNsaWRlQ291bnQgJSBhLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT0gMCA/IGEuc2xpZGVDb3VudCAtIGEuc2xpZGVDb3VudCAlIGEub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IGEuc2xpZGVDb3VudCArIG8gOiBvID49IGEuc2xpZGVDb3VudCA/IGEuc2xpZGVDb3VudCAlIGEub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPSAwID8gMCA6IG8gLSBhLnNsaWRlQ291bnQgOiBvLCBhLmFuaW1hdGluZyA9ICEwLCBhLiRzbGlkZXIudHJpZ2dlcigiYmVmb3JlQ2hhbmdlIiwgW2EsIGEuY3VycmVudFNsaWRlLCBzXSksIG4gPSBhLmN1cnJlbnRTbGlkZSwgYS5jdXJyZW50U2xpZGUgPSBzLCBhLnNldFNsaWRlQ2xhc3NlcyhhLmN1cnJlbnRTbGlkZSksIGEub3B0aW9ucy5hc05hdkZvciAmJiAobCA9IChsID0gYS5nZXROYXZUYXJnZXQoKSkuc2xpY2soImdldFNsaWNrIikpLnNsaWRlQ291bnQgPD0gbC5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiBsLnNldFNsaWRlQ2xhc3NlcyhhLmN1cnJlbnRTbGlkZSksIGEudXBkYXRlRG90cygpLCBhLnVwZGF0ZUFycm93cygpLCAhMCA9PT0gYS5vcHRpb25zLmZhZGUpIHJldHVybiAhMCAhPT0gdCA/IChhLmZhZGVTbGlkZU91dChuKSwgYS5mYWRlU2xpZGUocywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBhLnBvc3RTbGlkZShzKQogICAgICAgICAgICB9KSkgOiBhLnBvc3RTbGlkZShzKSwgdm9pZCBhLmFuaW1hdGVIZWlnaHQoKTsKICAgICAgICAgICAgITAgIT09IHQgPyBhLmFuaW1hdGVTbGlkZShkLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGEucG9zdFNsaWRlKHMpCiAgICAgICAgICAgIH0pIDogYS5wb3N0U2xpZGUocykKICAgICAgICB9CiAgICB9LCBlLnByb3RvdHlwZS5zdGFydExvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgITAgPT09IGkub3B0aW9ucy5hcnJvd3MgJiYgaS5zbGlkZUNvdW50ID4gaS5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAoaS4kcHJldkFycm93LmhpZGUoKSwgaS4kbmV4dEFycm93LmhpZGUoKSksICEwID09PSBpLm9wdGlvbnMuZG90cyAmJiBpLnNsaWRlQ291bnQgPiBpLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIGkuJGRvdHMuaGlkZSgpLCBpLiRzbGlkZXIuYWRkQ2xhc3MoInNsaWNrLWxvYWRpbmciKQogICAgfSwgZS5wcm90b3R5cGUuc3dpcGVEaXJlY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSwgZSwgdCwgbywgcyA9IHRoaXM7CiAgICAgICAgcmV0dXJuIGkgPSBzLnRvdWNoT2JqZWN0LnN0YXJ0WCAtIHMudG91Y2hPYmplY3QuY3VyWCwgZSA9IHMudG91Y2hPYmplY3Quc3RhcnRZIC0gcy50b3VjaE9iamVjdC5jdXJZLCB0ID0gTWF0aC5hdGFuMihlLCBpKSwgKG8gPSBNYXRoLnJvdW5kKDE4MCAqIHQgLyBNYXRoLlBJKSkgPCAwICYmIChvID0gMzYwIC0gTWF0aC5hYnMobykpLCBvIDw9IDQ1ICYmIG8gPj0gMCA/ICExID09PSBzLm9wdGlvbnMucnRsID8gImxlZnQiIDogInJpZ2h0IiA6IG8gPD0gMzYwICYmIG8gPj0gMzE1ID8gITEgPT09IHMub3B0aW9ucy5ydGwgPyAibGVmdCIgOiAicmlnaHQiIDogbyA+PSAxMzUgJiYgbyA8PSAyMjUgPyAhMSA9PT0gcy5vcHRpb25zLnJ0bCA/ICJyaWdodCIgOiAibGVmdCIgOiAhMCA9PT0gcy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA/IG8gPj0gMzUgJiYgbyA8PSAxMzUgPyAiZG93biIgOiAidXAiIDogInZlcnRpY2FsIgogICAgfSwgZS5wcm90b3R5cGUuc3dpcGVFbmQgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgdmFyIGUsIHQsIG8gPSB0aGlzOwogICAgICAgIGlmIChvLmRyYWdnaW5nID0gITEsIG8uc3dpcGluZyA9ICExLCBvLnNjcm9sbGluZykgcmV0dXJuIG8uc2Nyb2xsaW5nID0gITEsICExOwogICAgICAgIGlmIChvLmludGVycnVwdGVkID0gITEsIG8uc2hvdWxkQ2xpY2sgPSAhKG8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiAxMCksIHZvaWQgMCA9PT0gby50b3VjaE9iamVjdC5jdXJYKSByZXR1cm4gITE7CiAgICAgICAgaWYgKCEwID09PSBvLnRvdWNoT2JqZWN0LmVkZ2VIaXQgJiYgby4kc2xpZGVyLnRyaWdnZXIoImVkZ2UiLCBbbywgby5zd2lwZURpcmVjdGlvbigpXSksIG8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPj0gby50b3VjaE9iamVjdC5taW5Td2lwZSkgewogICAgICAgICAgICBzd2l0Y2ggKHQgPSBvLnN3aXBlRGlyZWN0aW9uKCkpIHsKICAgICAgICAgICAgICAgIGNhc2UgImxlZnQiOgogICAgICAgICAgICAgICAgY2FzZSAiZG93biI6CiAgICAgICAgICAgICAgICAgICAgZSA9IG8ub3B0aW9ucy5zd2lwZVRvU2xpZGUgPyBvLmNoZWNrTmF2aWdhYmxlKG8uY3VycmVudFNsaWRlICsgby5nZXRTbGlkZUNvdW50KCkpIDogby5jdXJyZW50U2xpZGUgKyBvLmdldFNsaWRlQ291bnQoKSwgby5jdXJyZW50RGlyZWN0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInJpZ2h0IjoKICAgICAgICAgICAgICAgIGNhc2UgInVwIjoKICAgICAgICAgICAgICAgICAgICBlID0gby5vcHRpb25zLnN3aXBlVG9TbGlkZSA/IG8uY2hlY2tOYXZpZ2FibGUoby5jdXJyZW50U2xpZGUgLSBvLmdldFNsaWRlQ291bnQoKSkgOiBvLmN1cnJlbnRTbGlkZSAtIG8uZ2V0U2xpZGVDb3VudCgpLCBvLmN1cnJlbnREaXJlY3Rpb24gPSAxCiAgICAgICAgICAgIH0KICAgICAgICAgICAgInZlcnRpY2FsIiAhPSB0ICYmIChvLnNsaWRlSGFuZGxlcihlKSwgby50b3VjaE9iamVjdCA9IHt9LCBvLiRzbGlkZXIudHJpZ2dlcigic3dpcGUiLCBbbywgdF0pKQogICAgICAgIH0gZWxzZSBvLnRvdWNoT2JqZWN0LnN0YXJ0WCAhPT0gby50b3VjaE9iamVjdC5jdXJYICYmIChvLnNsaWRlSGFuZGxlcihvLmN1cnJlbnRTbGlkZSksIG8udG91Y2hPYmplY3QgPSB7fSkKICAgIH0sIGUucHJvdG90eXBlLnN3aXBlSGFuZGxlciA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgaWYgKCEoITEgPT09IGUub3B0aW9ucy5zd2lwZSB8fCAib250b3VjaGVuZCIgaW4gZG9jdW1lbnQgJiYgITEgPT09IGUub3B0aW9ucy5zd2lwZSB8fCAhMSA9PT0gZS5vcHRpb25zLmRyYWdnYWJsZSAmJiAtMSAhPT0gaS50eXBlLmluZGV4T2YoIm1vdXNlIikpKSBzd2l0Y2ggKGUudG91Y2hPYmplY3QuZmluZ2VyQ291bnQgPSBpLm9yaWdpbmFsRXZlbnQgJiYgdm9pZCAwICE9PSBpLm9yaWdpbmFsRXZlbnQudG91Y2hlcyA/IGkub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aCA6IDEsIGUudG91Y2hPYmplY3QubWluU3dpcGUgPSBlLmxpc3RXaWR0aCAvIGUub3B0aW9ucy50b3VjaFRocmVzaG9sZCwgITAgPT09IGUub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgJiYgKGUudG91Y2hPYmplY3QubWluU3dpcGUgPSBlLmxpc3RIZWlnaHQgLyBlLm9wdGlvbnMudG91Y2hUaHJlc2hvbGQpLCBpLmRhdGEuYWN0aW9uKSB7CiAgICAgICAgICAgIGNhc2UgInN0YXJ0IjoKICAgICAgICAgICAgICAgIGUuc3dpcGVTdGFydChpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJtb3ZlIjoKICAgICAgICAgICAgICAgIGUuc3dpcGVNb3ZlKGkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICBlLnN3aXBlRW5kKGkpCiAgICAgICAgfQogICAgfSwgZS5wcm90b3R5cGUuc3dpcGVNb3ZlID0gZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBlLCB0LCBvLCBzLCBuLCByLCBsID0gdGhpczsKICAgICAgICByZXR1cm4gbiA9IHZvaWQgMCAhPT0gaS5vcmlnaW5hbEV2ZW50ID8gaS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgOiBudWxsLCAhKCFsLmRyYWdnaW5nIHx8IGwuc2Nyb2xsaW5nIHx8IG4gJiYgMSAhPT0gbi5sZW5ndGgpICYmIChlID0gbC5nZXRMZWZ0KGwuY3VycmVudFNsaWRlKSwgbC50b3VjaE9iamVjdC5jdXJYID0gdm9pZCAwICE9PSBuID8gblswXS5wYWdlWCA6IGkuY2xpZW50WCwgbC50b3VjaE9iamVjdC5jdXJZID0gdm9pZCAwICE9PSBuID8gblswXS5wYWdlWSA6IGkuY2xpZW50WSwgbC50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA9IE1hdGgucm91bmQoTWF0aC5zcXJ0KE1hdGgucG93KGwudG91Y2hPYmplY3QuY3VyWCAtIGwudG91Y2hPYmplY3Quc3RhcnRYLCAyKSkpLCByID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cobC50b3VjaE9iamVjdC5jdXJZIC0gbC50b3VjaE9iamVjdC5zdGFydFksIDIpKSksICFsLm9wdGlvbnMudmVydGljYWxTd2lwaW5nICYmICFsLnN3aXBpbmcgJiYgciA+IDQgPyAobC5zY3JvbGxpbmcgPSAhMCwgITEpIDogKCEwID09PSBsLm9wdGlvbnMudmVydGljYWxTd2lwaW5nICYmIChsLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID0gciksIHQgPSBsLnN3aXBlRGlyZWN0aW9uKCksIHZvaWQgMCAhPT0gaS5vcmlnaW5hbEV2ZW50ICYmIGwudG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiA0ICYmIChsLnN3aXBpbmcgPSAhMCwgaS5wcmV2ZW50RGVmYXVsdCgpKSwgcyA9ICghMSA9PT0gbC5vcHRpb25zLnJ0bCA/IDEgOiAtMSkgKiAobC50b3VjaE9iamVjdC5jdXJYID4gbC50b3VjaE9iamVjdC5zdGFydFggPyAxIDogLTEpLCAhMCA9PT0gbC5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyAmJiAocyA9IGwudG91Y2hPYmplY3QuY3VyWSA+IGwudG91Y2hPYmplY3Quc3RhcnRZID8gMSA6IC0xKSwgbyA9IGwudG91Y2hPYmplY3Quc3dpcGVMZW5ndGgsIGwudG91Y2hPYmplY3QuZWRnZUhpdCA9ICExLCAhMSA9PT0gbC5vcHRpb25zLmluZmluaXRlICYmICgwID09PSBsLmN1cnJlbnRTbGlkZSAmJiAicmlnaHQiID09PSB0IHx8IGwuY3VycmVudFNsaWRlID49IGwuZ2V0RG90Q291bnQoKSAmJiAibGVmdCIgPT09IHQpICYmIChvID0gbC50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCAqIGwub3B0aW9ucy5lZGdlRnJpY3Rpb24sIGwudG91Y2hPYmplY3QuZWRnZUhpdCA9ICEwKSwgITEgPT09IGwub3B0aW9ucy52ZXJ0aWNhbCA/IGwuc3dpcGVMZWZ0ID0gZSArIG8gKiBzIDogbC5zd2lwZUxlZnQgPSBlICsgbyAqIChsLiRsaXN0LmhlaWdodCgpIC8gbC5saXN0V2lkdGgpICogcywgITAgPT09IGwub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgJiYgKGwuc3dpcGVMZWZ0ID0gZSArIG8gKiBzKSwgITAgIT09IGwub3B0aW9ucy5mYWRlICYmICExICE9PSBsLm9wdGlvbnMudG91Y2hNb3ZlICYmICghMCA9PT0gbC5hbmltYXRpbmcgPyAobC5zd2lwZUxlZnQgPSBudWxsLCAhMSkgOiB2b2lkIGwuc2V0Q1NTKGwuc3dpcGVMZWZ0KSkpKQogICAgfSwgZS5wcm90b3R5cGUuc3dpcGVTdGFydCA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICB2YXIgZSwgdCA9IHRoaXM7CiAgICAgICAgaWYgKHQuaW50ZXJydXB0ZWQgPSAhMCwgMSAhPT0gdC50b3VjaE9iamVjdC5maW5nZXJDb3VudCB8fCB0LnNsaWRlQ291bnQgPD0gdC5vcHRpb25zLnNsaWRlc1RvU2hvdykgcmV0dXJuIHQudG91Y2hPYmplY3QgPSB7fSwgITE7CiAgICAgICAgdm9pZCAwICE9PSBpLm9yaWdpbmFsRXZlbnQgJiYgdm9pZCAwICE9PSBpLm9yaWdpbmFsRXZlbnQudG91Y2hlcyAmJiAoZSA9IGkub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdKSwgdC50b3VjaE9iamVjdC5zdGFydFggPSB0LnRvdWNoT2JqZWN0LmN1clggPSB2b2lkIDAgIT09IGUgPyBlLnBhZ2VYIDogaS5jbGllbnRYLCB0LnRvdWNoT2JqZWN0LnN0YXJ0WSA9IHQudG91Y2hPYmplY3QuY3VyWSA9IHZvaWQgMCAhPT0gZSA/IGUucGFnZVkgOiBpLmNsaWVudFksIHQuZHJhZ2dpbmcgPSAhMAogICAgfSwgZS5wcm90b3R5cGUudW5maWx0ZXJTbGlkZXMgPSBlLnByb3RvdHlwZS5zbGlja1VuZmlsdGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgIG51bGwgIT09IGkuJHNsaWRlc0NhY2hlICYmIChpLnVubG9hZCgpLCBpLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCksIGkuJHNsaWRlc0NhY2hlLmFwcGVuZFRvKGkuJHNsaWRlVHJhY2spLCBpLnJlaW5pdCgpKQogICAgfSwgZS5wcm90b3R5cGUudW5sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgIGkoIi5zbGljay1jbG9uZWQiLCBlLiRzbGlkZXIpLnJlbW92ZSgpLCBlLiRkb3RzICYmIGUuJGRvdHMucmVtb3ZlKCksIGUuJHByZXZBcnJvdyAmJiBlLmh0bWxFeHByLnRlc3QoZS5vcHRpb25zLnByZXZBcnJvdykgJiYgZS4kcHJldkFycm93LnJlbW92ZSgpLCBlLiRuZXh0QXJyb3cgJiYgZS5odG1sRXhwci50ZXN0KGUub3B0aW9ucy5uZXh0QXJyb3cpICYmIGUuJG5leHRBcnJvdy5yZW1vdmUoKSwgZS4kc2xpZGVzLnJlbW92ZUNsYXNzKCJzbGljay1zbGlkZSBzbGljay1hY3RpdmUgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50IikuYXR0cigiYXJpYS1oaWRkZW4iLCAidHJ1ZSIpLmNzcygid2lkdGgiLCAiIikKICAgIH0sIGUucHJvdG90eXBlLnVuc2xpY2sgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgIGUuJHNsaWRlci50cmlnZ2VyKCJ1bnNsaWNrIiwgW2UsIGldKSwgZS5kZXN0cm95KCkKICAgIH0sIGUucHJvdG90eXBlLnVwZGF0ZUFycm93cyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICBNYXRoLmZsb29yKGkub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKSwgITAgPT09IGkub3B0aW9ucy5hcnJvd3MgJiYgaS5zbGlkZUNvdW50ID4gaS5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAhaS5vcHRpb25zLmluZmluaXRlICYmIChpLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJmYWxzZSIpLCBpLiRuZXh0QXJyb3cucmVtb3ZlQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJmYWxzZSIpLCAwID09PSBpLmN1cnJlbnRTbGlkZSA/IChpLiRwcmV2QXJyb3cuYWRkQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJ0cnVlIiksIGkuJG5leHRBcnJvdy5yZW1vdmVDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwgImZhbHNlIikpIDogaS5jdXJyZW50U2xpZGUgPj0gaS5zbGlkZUNvdW50IC0gaS5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAhMSA9PT0gaS5vcHRpb25zLmNlbnRlck1vZGUgPyAoaS4kbmV4dEFycm93LmFkZENsYXNzKCJzbGljay1kaXNhYmxlZCIpLmF0dHIoImFyaWEtZGlzYWJsZWQiLCAidHJ1ZSIpLCBpLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJmYWxzZSIpKSA6IGkuY3VycmVudFNsaWRlID49IGkuc2xpZGVDb3VudCAtIDEgJiYgITAgPT09IGkub3B0aW9ucy5jZW50ZXJNb2RlICYmIChpLiRuZXh0QXJyb3cuYWRkQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJ0cnVlIiksIGkuJHByZXZBcnJvdy5yZW1vdmVDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwgImZhbHNlIikpKQogICAgfSwgZS5wcm90b3R5cGUudXBkYXRlRG90cyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICBudWxsICE9PSBpLiRkb3RzICYmIChpLiRkb3RzLmZpbmQoImxpIikucmVtb3ZlQ2xhc3MoInNsaWNrLWFjdGl2ZSIpLmVuZCgpLCBpLiRkb3RzLmZpbmQoImxpIikuZXEoTWF0aC5mbG9vcihpLmN1cnJlbnRTbGlkZSAvIGkub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpLmFkZENsYXNzKCJzbGljay1hY3RpdmUiKSkKICAgIH0sIGUucHJvdG90eXBlLnZpc2liaWxpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgaS5vcHRpb25zLmF1dG9wbGF5ICYmIChkb2N1bWVudFtpLmhpZGRlbl0gPyBpLmludGVycnVwdGVkID0gITAgOiBpLmludGVycnVwdGVkID0gITEpCiAgICB9LCBpLmZuLnNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGksIHQsIG8gPSB0aGlzLAogICAgICAgICAgICBzID0gYXJndW1lbnRzWzBdLAogICAgICAgICAgICBuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwKICAgICAgICAgICAgciA9IG8ubGVuZ3RoOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCByOyBpKyspCiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgcyB8fCB2b2lkIDAgPT09IHMgPyBvW2ldLnNsaWNrID0gbmV3IGUob1tpXSwgcykgOiB0ID0gb1tpXS5zbGlja1tzXS5hcHBseShvW2ldLnNsaWNrLCBuKSwgdm9pZCAwICE9PSB0KSByZXR1cm4gdDsKICAgICAgICByZXR1cm4gbwogICAgfQp9KTs="}},"time_used":860,"timings":{"blocked":761,"dns":0,"connect":0,"send":0,"wait":97,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/leaflet.markercluster.js?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.473Z","timestamp":1785145482473,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/leaflet/leaflet.markercluster.js?ver=1.5.1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 49865\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":49865,"size_decoded":50082,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (600)","md5":"3fddce552a72b8f5a3b0cdf190002654","sha1":"d24d4fd050a1a2df9ebdc1c1c5297587be616f9d","sha256":"ebcc2fcaf77ad754617475b26392c59dc0bfaa9423e5790e1abdf7b7e1156e76","sha512":"2007ff84f359f62352fe5ddff695b493d612529070283a15803d0a570c2f9534c8057109af2519116b50e28ebbf929e4d8aae10e46dc5f9b9281e4dc3ea1f190","ssdeep":"768:li/TCHO0TEg/F8aRRaXpzJ//ubuHuXjjskk7Xtq9YaYDJ47oX4EMnPi6EzLE3h:lIGT2aCzwX3GnaIJ47AcPi63","tlshash":"a3230e4a67e51676a743b23a0c3f8d1b6771405b1a85ad0c790ca2ed4f0e92c63b6ff4","first_seen":"2026-07-27T08:06:56.466457Z","last_seen":"2026-07-27T09:45:50.863881Z","times_seen":3,"resource_available":true,"data":"ISBmdW5jdGlvbihlLCB0KSB7CiAgICAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlID8gdChleHBvcnRzKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsiZXhwb3J0cyJdLCB0KSA6IHQoKGUuTGVhZmxldCA9IGUuTGVhZmxldCB8fCB7fSwgZS5MZWFmbGV0Lm1hcmtlcmNsdXN0ZXIgPSBlLkxlYWZsZXQubWFya2VyY2x1c3RlciB8fCB7fSkpCn0odGhpcywgZnVuY3Rpb24oZSkgewogICAgInVzZSBzdHJpY3QiOwogICAgdmFyIHQgPSBMLk1hcmtlckNsdXN0ZXJHcm91cCA9IEwuRmVhdHVyZUdyb3VwLmV4dGVuZCh7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBtYXhDbHVzdGVyUmFkaXVzOiA4MCwKICAgICAgICAgICAgaWNvbkNyZWF0ZUZ1bmN0aW9uOiBudWxsLAogICAgICAgICAgICBjbHVzdGVyUGFuZTogTC5NYXJrZXIucHJvdG90eXBlLm9wdGlvbnMucGFuZSwKICAgICAgICAgICAgc3BpZGVyZnlPbk1heFpvb206ICEwLAogICAgICAgICAgICBzaG93Q292ZXJhZ2VPbkhvdmVyOiAhMCwKICAgICAgICAgICAgem9vbVRvQm91bmRzT25DbGljazogITAsCiAgICAgICAgICAgIHNpbmdsZU1hcmtlck1vZGU6ICExLAogICAgICAgICAgICBkaXNhYmxlQ2x1c3RlcmluZ0F0Wm9vbTogbnVsbCwKICAgICAgICAgICAgcmVtb3ZlT3V0c2lkZVZpc2libGVCb3VuZHM6ICEwLAogICAgICAgICAgICBhbmltYXRlOiAhMCwKICAgICAgICAgICAgYW5pbWF0ZUFkZGluZ01hcmtlcnM6ICExLAogICAgICAgICAgICBzcGlkZXJmeURpc3RhbmNlTXVsdGlwbGllcjogMSwKICAgICAgICAgICAgc3BpZGVyTGVnUG9seWxpbmVPcHRpb25zOiB7CiAgICAgICAgICAgICAgICB3ZWlnaHQ6IDEuNSwKICAgICAgICAgICAgICAgIGNvbG9yOiAiIzIyMiIsCiAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNQogICAgICAgICAgICB9LAogICAgICAgICAgICBjaHVua2VkTG9hZGluZzogITEsCiAgICAgICAgICAgIGNodW5rSW50ZXJ2YWw6IDIwMCwKICAgICAgICAgICAgY2h1bmtEZWxheTogNTAsCiAgICAgICAgICAgIGNodW5rUHJvZ3Jlc3M6IG51bGwsCiAgICAgICAgICAgIHBvbHlnb25PcHRpb25zOiB7fQogICAgICAgIH0sCiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBMLlV0aWwuc2V0T3B0aW9ucyh0aGlzLCBlKSwgdGhpcy5vcHRpb25zLmljb25DcmVhdGVGdW5jdGlvbiB8fCAodGhpcy5vcHRpb25zLmljb25DcmVhdGVGdW5jdGlvbiA9IHRoaXMuX2RlZmF1bHRJY29uQ3JlYXRlRnVuY3Rpb24pLCB0aGlzLl9mZWF0dXJlR3JvdXAgPSBMLmZlYXR1cmVHcm91cCgpLCB0aGlzLl9mZWF0dXJlR3JvdXAuYWRkRXZlbnRQYXJlbnQodGhpcyksIHRoaXMuX25vblBvaW50R3JvdXAgPSBMLmZlYXR1cmVHcm91cCgpLCB0aGlzLl9ub25Qb2ludEdyb3VwLmFkZEV2ZW50UGFyZW50KHRoaXMpLCB0aGlzLl9pblpvb21BbmltYXRpb24gPSAwLCB0aGlzLl9uZWVkc0NsdXN0ZXJpbmcgPSBbXSwgdGhpcy5fbmVlZHNSZW1vdmluZyA9IFtdLCB0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHMgPSBudWxsLCB0aGlzLl9xdWV1ZSA9IFtdLCB0aGlzLl9jaGlsZE1hcmtlckV2ZW50SGFuZGxlcnMgPSB7CiAgICAgICAgICAgICAgICBkcmFnc3RhcnQ6IHRoaXMuX2NoaWxkTWFya2VyRHJhZ1N0YXJ0LAogICAgICAgICAgICAgICAgbW92ZTogdGhpcy5fY2hpbGRNYXJrZXJNb3ZlZCwKICAgICAgICAgICAgICAgIGRyYWdlbmQ6IHRoaXMuX2NoaWxkTWFya2VyRHJhZ0VuZAogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgdCA9IEwuRG9tVXRpbC5UUkFOU0lUSU9OICYmIHRoaXMub3B0aW9ucy5hbmltYXRlOwogICAgICAgICAgICBMLmV4dGVuZCh0aGlzLCB0ID8gdGhpcy5fd2l0aEFuaW1hdGlvbiA6IHRoaXMuX25vQW5pbWF0aW9uKSwgdGhpcy5fbWFya2VyQ2x1c3RlciA9IHQgPyBMLk1hcmtlckNsdXN0ZXIgOiBMLk1hcmtlckNsdXN0ZXJOb25BbmltYXRlZAogICAgICAgIH0sCiAgICAgICAgYWRkTGF5ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBMLkxheWVyR3JvdXApIHJldHVybiB0aGlzLmFkZExheWVycyhbZV0pOwogICAgICAgICAgICBpZiAoIWUuZ2V0TGF0TG5nKSByZXR1cm4gdGhpcy5fbm9uUG9pbnRHcm91cC5hZGRMYXllcihlKSwgdGhpcy5maXJlKCJsYXllcmFkZCIsIHsKICAgICAgICAgICAgICAgIGxheWVyOiBlCiAgICAgICAgICAgIH0pLCB0aGlzOwogICAgICAgICAgICBpZiAoIXRoaXMuX21hcCkgcmV0dXJuIHRoaXMuX25lZWRzQ2x1c3RlcmluZy5wdXNoKGUpLCB0aGlzLmZpcmUoImxheWVyYWRkIiwgewogICAgICAgICAgICAgICAgbGF5ZXI6IGUKICAgICAgICAgICAgfSksIHRoaXM7CiAgICAgICAgICAgIGlmICh0aGlzLmhhc0xheWVyKGUpKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgdGhpcy5fdW5zcGlkZXJmeSAmJiB0aGlzLl91bnNwaWRlcmZ5KCksIHRoaXMuX2FkZExheWVyKGUsIHRoaXMuX21heFpvb20pLCB0aGlzLmZpcmUoImxheWVyYWRkIiwgewogICAgICAgICAgICAgICAgbGF5ZXI6IGUKICAgICAgICAgICAgfSksIHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjYWxjdWxhdGVCb3VuZHMoKSwgdGhpcy5fcmVmcmVzaENsdXN0ZXJzSWNvbnMoKTsKICAgICAgICAgICAgdmFyIHQgPSBlLAogICAgICAgICAgICAgICAgaSA9IHRoaXMuX3pvb207CiAgICAgICAgICAgIGlmIChlLl9fcGFyZW50KQogICAgICAgICAgICAgICAgZm9yICg7IHQuX19wYXJlbnQuX3pvb20gPj0gaTspIHQgPSB0Ll9fcGFyZW50OwogICAgICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFNob3duQm91bmRzLmNvbnRhaW5zKHQuZ2V0TGF0TG5nKCkpICYmICh0aGlzLm9wdGlvbnMuYW5pbWF0ZUFkZGluZ01hcmtlcnMgPyB0aGlzLl9hbmltYXRpb25BZGRMYXllcihlLCB0KSA6IHRoaXMuX2FuaW1hdGlvbkFkZExheWVyTm9uQW5pbWF0ZWQoZSwgdCkpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICByZW1vdmVMYXllcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEwuTGF5ZXJHcm91cCA/IHRoaXMucmVtb3ZlTGF5ZXJzKFtlXSkgOiBlLmdldExhdExuZyA/IHRoaXMuX21hcCA/IGUuX19wYXJlbnQgPyAodGhpcy5fdW5zcGlkZXJmeSAmJiAodGhpcy5fdW5zcGlkZXJmeSgpLCB0aGlzLl91bnNwaWRlcmZ5TGF5ZXIoZSkpLCB0aGlzLl9yZW1vdmVMYXllcihlLCAhMCksIHRoaXMuZmlyZSgibGF5ZXJyZW1vdmUiLCB7CiAgICAgICAgICAgICAgICBsYXllcjogZQogICAgICAgICAgICB9KSwgdGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWNhbGN1bGF0ZUJvdW5kcygpLCB0aGlzLl9yZWZyZXNoQ2x1c3RlcnNJY29ucygpLCBlLm9mZih0aGlzLl9jaGlsZE1hcmtlckV2ZW50SGFuZGxlcnMsIHRoaXMpLCB0aGlzLl9mZWF0dXJlR3JvdXAuaGFzTGF5ZXIoZSkgJiYgKHRoaXMuX2ZlYXR1cmVHcm91cC5yZW1vdmVMYXllcihlKSwgZS5jbHVzdGVyU2hvdyAmJiBlLmNsdXN0ZXJTaG93KCkpLCB0aGlzKSA6IHRoaXMgOiAoIXRoaXMuX2FycmF5U3BsaWNlKHRoaXMuX25lZWRzQ2x1c3RlcmluZywgZSkgJiYgdGhpcy5oYXNMYXllcihlKSAmJiB0aGlzLl9uZWVkc1JlbW92aW5nLnB1c2goewogICAgICAgICAgICAgICAgbGF5ZXI6IGUsCiAgICAgICAgICAgICAgICBsYXRsbmc6IGUuX2xhdGxuZwogICAgICAgICAgICB9KSwgdGhpcy5maXJlKCJsYXllcnJlbW92ZSIsIHsKICAgICAgICAgICAgICAgIGxheWVyOiBlCiAgICAgICAgICAgIH0pLCB0aGlzKSA6ICh0aGlzLl9ub25Qb2ludEdyb3VwLnJlbW92ZUxheWVyKGUpLCB0aGlzLmZpcmUoImxheWVycmVtb3ZlIiwgewogICAgICAgICAgICAgICAgbGF5ZXI6IGUKICAgICAgICAgICAgfSksIHRoaXMpCiAgICAgICAgfSwKICAgICAgICBhZGRMYXllcnM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKCFMLlV0aWwuaXNBcnJheShlKSkgcmV0dXJuIHRoaXMuYWRkTGF5ZXIoZSk7CiAgICAgICAgICAgIHZhciBpLCBuID0gdGhpcy5fZmVhdHVyZUdyb3VwLAogICAgICAgICAgICAgICAgciA9IHRoaXMuX25vblBvaW50R3JvdXAsCiAgICAgICAgICAgICAgICBzID0gdGhpcy5vcHRpb25zLmNodW5rZWRMb2FkaW5nLAogICAgICAgICAgICAgICAgbyA9IHRoaXMub3B0aW9ucy5jaHVua0ludGVydmFsLAogICAgICAgICAgICAgICAgYSA9IHRoaXMub3B0aW9ucy5jaHVua1Byb2dyZXNzLAogICAgICAgICAgICAgICAgaCA9IGUubGVuZ3RoLAogICAgICAgICAgICAgICAgbCA9IDAsCiAgICAgICAgICAgICAgICB1ID0gITA7CiAgICAgICAgICAgIGlmICh0aGlzLl9tYXApIHsKICAgICAgICAgICAgICAgIHZhciBfID0gKG5ldyBEYXRlKS5nZXRUaW1lKCksCiAgICAgICAgICAgICAgICAgICAgZCA9IEwuYmluZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpOyBoID4gbDsgbCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyAmJiAwID09PSBsICUgMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSAobmV3IERhdGUpLmdldFRpbWUoKSAtIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPiBvKSBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2xdLCBpIGluc3RhbmNlb2YgTC5MYXllckdyb3VwKSB1ICYmIChlID0gZS5zbGljZSgpLCB1ID0gITEpLCB0aGlzLl9leHRyYWN0Tm9uR3JvdXBMYXllcnMoaSwgZSksIGggPSBlLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkuZ2V0TGF0TG5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0xheWVyKGkpICYmICh0aGlzLl9hZGRMYXllcihpLCB0aGlzLl9tYXhab29tKSwgdCB8fCB0aGlzLmZpcmUoImxheWVyYWRkIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuX19wYXJlbnQgJiYgMiA9PT0gaS5fX3BhcmVudC5nZXRDaGlsZENvdW50KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gaS5fX3BhcmVudC5nZXRBbGxDaGlsZE1hcmtlcnMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBmWzBdID09PSBpID8gZlsxXSA6IGZbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucmVtb3ZlTGF5ZXIobSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugci5hZGRMYXllcihpKSwgdCB8fCB0aGlzLmZpcmUoImxheWVyYWRkIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGEgJiYgYShsLCBoLCAobmV3IERhdGUpLmdldFRpbWUoKSAtIF8pLCBsID09PSBoID8gKHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjYWxjdWxhdGVCb3VuZHMoKSwgdGhpcy5fcmVmcmVzaENsdXN0ZXJzSWNvbnMoKSwgdGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseUFkZENoaWxkcmVuVG9NYXAobnVsbCwgdGhpcy5fem9vbSwgdGhpcy5fY3VycmVudFNob3duQm91bmRzKSkgOiBzZXRUaW1lb3V0KGQsIHRoaXMub3B0aW9ucy5jaHVua0RlbGF5KQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMpOwogICAgICAgICAgICAgICAgZCgpCiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IHRoaXMuX25lZWRzQ2x1c3RlcmluZzsgaCA+IGw7IGwrKykgaSA9IGVbbF0sIGkgaW5zdGFuY2VvZiBMLkxheWVyR3JvdXAgPyAodSAmJiAoZSA9IGUuc2xpY2UoKSwgdSA9ICExKSwgdGhpcy5fZXh0cmFjdE5vbkdyb3VwTGF5ZXJzKGksIGUpLCBoID0gZS5sZW5ndGgpIDogaS5nZXRMYXRMbmcgPyB0aGlzLmhhc0xheWVyKGkpIHx8IGMucHVzaChpKSA6IHIuYWRkTGF5ZXIoaSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICByZW1vdmVMYXllcnM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIGksIG4gPSBlLmxlbmd0aCwKICAgICAgICAgICAgICAgIHIgPSB0aGlzLl9mZWF0dXJlR3JvdXAsCiAgICAgICAgICAgICAgICBzID0gdGhpcy5fbm9uUG9pbnRHcm91cCwKICAgICAgICAgICAgICAgIG8gPSAhMDsKICAgICAgICAgICAgaWYgKCF0aGlzLl9tYXApIHsKICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IG4gPiB0OyB0KyspIGkgPSBlW3RdLCBpIGluc3RhbmNlb2YgTC5MYXllckdyb3VwID8gKG8gJiYgKGUgPSBlLnNsaWNlKCksIG8gPSAhMSksIHRoaXMuX2V4dHJhY3ROb25Hcm91cExheWVycyhpLCBlKSwgbiA9IGUubGVuZ3RoKSA6ICh0aGlzLl9hcnJheVNwbGljZSh0aGlzLl9uZWVkc0NsdXN0ZXJpbmcsIGkpLCBzLnJlbW92ZUxheWVyKGkpLCB0aGlzLmhhc0xheWVyKGkpICYmIHRoaXMuX25lZWRzUmVtb3ZpbmcucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgbGF5ZXI6IGksCiAgICAgICAgICAgICAgICAgICAgbGF0bG5nOiBpLl9sYXRsbmcKICAgICAgICAgICAgICAgIH0pLCB0aGlzLmZpcmUoImxheWVycmVtb3ZlIiwgewogICAgICAgICAgICAgICAgICAgIGxheWVyOiBpCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLl91bnNwaWRlcmZ5KSB7CiAgICAgICAgICAgICAgICB0aGlzLl91bnNwaWRlcmZ5KCk7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGUuc2xpY2UoKSwKICAgICAgICAgICAgICAgICAgICBoID0gbjsKICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IGggPiB0OyB0KyspIGkgPSBhW3RdLCBpIGluc3RhbmNlb2YgTC5MYXllckdyb3VwID8gKHRoaXMuX2V4dHJhY3ROb25Hcm91cExheWVycyhpLCBhKSwgaCA9IGEubGVuZ3RoKSA6IHRoaXMuX3Vuc3BpZGVyZnlMYXllcihpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodCA9IDA7IG4gPiB0OyB0KyspIGkgPSBlW3RdLCBpIGluc3RhbmNlb2YgTC5MYXllckdyb3VwID8gKG8gJiYgKGUgPSBlLnNsaWNlKCksIG8gPSAhMSksIHRoaXMuX2V4dHJhY3ROb25Hcm91cExheWVycyhpLCBlKSwgbiA9IGUubGVuZ3RoKSA6IGkuX19wYXJlbnQgPyAodGhpcy5fcmVtb3ZlTGF5ZXIoaSwgITAsICEwKSwgdGhpcy5maXJlKCJsYXllcnJlbW92ZSIsIHsKICAgICAgICAgICAgICAgIGxheWVyOiBpCiAgICAgICAgICAgIH0pLCByLmhhc0xheWVyKGkpICYmIChyLnJlbW92ZUxheWVyKGkpLCBpLmNsdXN0ZXJTaG93ICYmIGkuY2x1c3RlclNob3coKSkpIDogKHMucmVtb3ZlTGF5ZXIoaSksIHRoaXMuZmlyZSgibGF5ZXJyZW1vdmUiLCB7CiAgICAgICAgICAgICAgICBsYXllcjogaQogICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY2FsY3VsYXRlQm91bmRzKCksIHRoaXMuX3JlZnJlc2hDbHVzdGVyc0ljb25zKCksIHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKG51bGwsIHRoaXMuX3pvb20sIHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcyksIHRoaXMKICAgICAgICB9LAogICAgICAgIGNsZWFyTGF5ZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hcCB8fCAodGhpcy5fbmVlZHNDbHVzdGVyaW5nID0gW10sIHRoaXMuX25lZWRzUmVtb3ZpbmcgPSBbXSwgZGVsZXRlIHRoaXMuX2dyaWRDbHVzdGVycywgZGVsZXRlIHRoaXMuX2dyaWRVbmNsdXN0ZXJlZCksIHRoaXMuX25vYW5pbWF0aW9uVW5zcGlkZXJmeSAmJiB0aGlzLl9ub2FuaW1hdGlvblVuc3BpZGVyZnkoKSwgdGhpcy5fZmVhdHVyZUdyb3VwLmNsZWFyTGF5ZXJzKCksIHRoaXMuX25vblBvaW50R3JvdXAuY2xlYXJMYXllcnMoKSwgdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5vZmYodGhpcy5fY2hpbGRNYXJrZXJFdmVudEhhbmRsZXJzLCB0aGlzKSwgZGVsZXRlIGUuX19wYXJlbnQKICAgICAgICAgICAgfSwgdGhpcyksIHRoaXMuX21hcCAmJiB0aGlzLl9nZW5lcmF0ZUluaXRpYWxDbHVzdGVycygpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBnZXRCb3VuZHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IG5ldyBMLkxhdExuZ0JvdW5kczsKICAgICAgICAgICAgdGhpcy5fdG9wQ2x1c3RlckxldmVsICYmIGUuZXh0ZW5kKHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fYm91bmRzKTsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IHRoaXMuX25lZWRzQ2x1c3RlcmluZy5sZW5ndGggLSAxOyB0ID49IDA7IHQtLSkgZS5leHRlbmQodGhpcy5fbmVlZHNDbHVzdGVyaW5nW3RdLmdldExhdExuZygpKTsKICAgICAgICAgICAgcmV0dXJuIGUuZXh0ZW5kKHRoaXMuX25vblBvaW50R3JvdXAuZ2V0Qm91bmRzKCkpLCBlCiAgICAgICAgfSwKICAgICAgICBlYWNoTGF5ZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIGksIG4sIHIsIHMgPSB0aGlzLl9uZWVkc0NsdXN0ZXJpbmcuc2xpY2UoKSwKICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9uZWVkc1JlbW92aW5nOwogICAgICAgICAgICBmb3IgKHRoaXMuX3RvcENsdXN0ZXJMZXZlbCAmJiB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuZ2V0QWxsQ2hpbGRNYXJrZXJzKHMpLCBuID0gcy5sZW5ndGggLSAxOyBuID49IDA7IG4tLSkgewogICAgICAgICAgICAgICAgZm9yIChpID0gITAsIHIgPSBvLmxlbmd0aCAtIDE7IHIgPj0gMDsgci0tKQogICAgICAgICAgICAgICAgICAgIGlmIChvW3JdLmxheWVyID09PSBzW25dKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpICYmIGUuY2FsbCh0LCBzW25dKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX25vblBvaW50R3JvdXAuZWFjaExheWVyKGUsIHQpCiAgICAgICAgfSwKICAgICAgICBnZXRMYXllcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IFtdOwogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZS5wdXNoKHQpCiAgICAgICAgICAgIH0pLCBlCiAgICAgICAgfSwKICAgICAgICBnZXRMYXllcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IG51bGw7CiAgICAgICAgICAgIHJldHVybiBlID0gcGFyc2VJbnQoZSwgMTApLCB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICBMLnN0YW1wKGkpID09PSBlICYmICh0ID0gaSkKICAgICAgICAgICAgfSksIHQKICAgICAgICB9LAogICAgICAgIGhhc0xheWVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICghZSkgcmV0dXJuICExOwogICAgICAgICAgICB2YXIgdCwgaSA9IHRoaXMuX25lZWRzQ2x1c3RlcmluZzsKICAgICAgICAgICAgZm9yICh0ID0gaS5sZW5ndGggLSAxOyB0ID49IDA7IHQtLSkKICAgICAgICAgICAgICAgIGlmIChpW3RdID09PSBlKSByZXR1cm4gITA7CiAgICAgICAgICAgIGZvciAoaSA9IHRoaXMuX25lZWRzUmVtb3ZpbmcsIHQgPSBpLmxlbmd0aCAtIDE7IHQgPj0gMDsgdC0tKQogICAgICAgICAgICAgICAgaWYgKGlbdF0ubGF5ZXIgPT09IGUpIHJldHVybiAhMTsKICAgICAgICAgICAgcmV0dXJuICEoIWUuX19wYXJlbnQgfHwgZS5fX3BhcmVudC5fZ3JvdXAgIT09IHRoaXMpIHx8IHRoaXMuX25vblBvaW50R3JvdXAuaGFzTGF5ZXIoZSkKICAgICAgICB9LAogICAgICAgIHpvb21Ub1Nob3dMYXllcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmICh0ID0gZnVuY3Rpb24oKSB7fSk7CiAgICAgICAgICAgIHZhciBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAhZS5faWNvbiAmJiAhZS5fX3BhcmVudC5faWNvbiB8fCB0aGlzLl9pblpvb21BbmltYXRpb24gfHwgKHRoaXMuX21hcC5vZmYoIm1vdmVlbmQiLCBpLCB0aGlzKSwgdGhpcy5vZmYoImFuaW1hdGlvbmVuZCIsIGksIHRoaXMpLCBlLl9pY29uID8gdCgpIDogZS5fX3BhcmVudC5faWNvbiAmJiAodGhpcy5vbmNlKCJzcGlkZXJmaWVkIiwgdCwgdGhpcyksIGUuX19wYXJlbnQuc3BpZGVyZnkoKSkpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGUuX2ljb24gJiYgdGhpcy5fbWFwLmdldEJvdW5kcygpLmNvbnRhaW5zKGUuZ2V0TGF0TG5nKCkpID8gdCgpIDogZS5fX3BhcmVudC5fem9vbSA8IE1hdGgucm91bmQodGhpcy5fbWFwLl96b29tKSA/ICh0aGlzLl9tYXAub24oIm1vdmVlbmQiLCBpLCB0aGlzKSwgdGhpcy5fbWFwLnBhblRvKGUuZ2V0TGF0TG5nKCkpKSA6ICh0aGlzLl9tYXAub24oIm1vdmVlbmQiLCBpLCB0aGlzKSwgdGhpcy5vbigiYW5pbWF0aW9uZW5kIiwgaSwgdGhpcyksIGUuX19wYXJlbnQuem9vbVRvQm91bmRzKCkpCiAgICAgICAgfSwKICAgICAgICBvbkFkZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aGlzLl9tYXAgPSBlOwogICAgICAgICAgICB2YXIgdCwgaSwgbjsKICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZSh0aGlzLl9tYXAuZ2V0TWF4Wm9vbSgpKSkgdGhyb3cgIk1hcCBoYXMgbm8gbWF4Wm9vbSBzcGVjaWZpZWQiOwogICAgICAgICAgICBmb3IgKHRoaXMuX2ZlYXR1cmVHcm91cC5hZGRUbyhlKSwgdGhpcy5fbm9uUG9pbnRHcm91cC5hZGRUbyhlKSwgdGhpcy5fZ3JpZENsdXN0ZXJzIHx8IHRoaXMuX2dlbmVyYXRlSW5pdGlhbENsdXN0ZXJzKCksIHRoaXMuX21heExhdCA9IGUub3B0aW9ucy5jcnMucHJvamVjdGlvbi5NQVhfTEFUSVRVREUsIHQgPSAwLCBpID0gdGhpcy5fbmVlZHNSZW1vdmluZy5sZW5ndGg7IGkgPiB0OyB0KyspIG4gPSB0aGlzLl9uZWVkc1JlbW92aW5nW3RdLCBuLm5ld2xhdGxuZyA9IG4ubGF5ZXIuX2xhdGxuZywgbi5sYXllci5fbGF0bG5nID0gbi5sYXRsbmc7CiAgICAgICAgICAgIGZvciAodCA9IDAsIGkgPSB0aGlzLl9uZWVkc1JlbW92aW5nLmxlbmd0aDsgaSA+IHQ7IHQrKykgbiA9IHRoaXMuX25lZWRzUmVtb3ZpbmdbdF0sIHRoaXMuX3JlbW92ZUxheWVyKG4ubGF5ZXIsICEwKSwgbi5sYXllci5fbGF0bG5nID0gbi5uZXdsYXRsbmc7CiAgICAgICAgICAgIHRoaXMuX25lZWRzUmVtb3ZpbmcgPSBbXSwgdGhpcy5fem9vbSA9IE1hdGgucm91bmQodGhpcy5fbWFwLl96b29tKSwgdGhpcy5fY3VycmVudFNob3duQm91bmRzID0gdGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCksIHRoaXMuX21hcC5vbigiem9vbWVuZCIsIHRoaXMuX3pvb21FbmQsIHRoaXMpLCB0aGlzLl9tYXAub24oIm1vdmVlbmQiLCB0aGlzLl9tb3ZlRW5kLCB0aGlzKSwgdGhpcy5fc3BpZGVyZmllck9uQWRkICYmIHRoaXMuX3NwaWRlcmZpZXJPbkFkZCgpLCB0aGlzLl9iaW5kRXZlbnRzKCksIGkgPSB0aGlzLl9uZWVkc0NsdXN0ZXJpbmcsIHRoaXMuX25lZWRzQ2x1c3RlcmluZyA9IFtdLCB0aGlzLmFkZExheWVycyhpLCAhMCkKICAgICAgICB9LAogICAgICAgIG9uUmVtb3ZlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUub2ZmKCJ6b29tZW5kIiwgdGhpcy5fem9vbUVuZCwgdGhpcyksIGUub2ZmKCJtb3ZlZW5kIiwgdGhpcy5fbW92ZUVuZCwgdGhpcyksIHRoaXMuX3VuYmluZEV2ZW50cygpLCB0aGlzLl9tYXAuX21hcFBhbmUuY2xhc3NOYW1lID0gdGhpcy5fbWFwLl9tYXBQYW5lLmNsYXNzTmFtZS5yZXBsYWNlKCIgbGVhZmxldC1jbHVzdGVyLWFuaW0iLCAiIiksIHRoaXMuX3NwaWRlcmZpZXJPblJlbW92ZSAmJiB0aGlzLl9zcGlkZXJmaWVyT25SZW1vdmUoKSwgZGVsZXRlIHRoaXMuX21heExhdCwgdGhpcy5faGlkZUNvdmVyYWdlKCksIHRoaXMuX2ZlYXR1cmVHcm91cC5yZW1vdmUoKSwgdGhpcy5fbm9uUG9pbnRHcm91cC5yZW1vdmUoKSwgdGhpcy5fZmVhdHVyZUdyb3VwLmNsZWFyTGF5ZXJzKCksIHRoaXMuX21hcCA9IG51bGwKICAgICAgICB9LAogICAgICAgIGdldFZpc2libGVQYXJlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IGU7IHQgJiYgIXQuX2ljb247KSB0ID0gdC5fX3BhcmVudDsKICAgICAgICAgICAgcmV0dXJuIHQgfHwgbnVsbAogICAgICAgIH0sCiAgICAgICAgX2FycmF5U3BsaWNlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSBlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgICAgICAgICAgaWYgKGVbaV0gPT09IHQpIHJldHVybiBlLnNwbGljZShpLCAxKSwgITAKICAgICAgICB9LAogICAgICAgIF9yZW1vdmVGcm9tR3JpZFVuY2x1c3RlcmVkOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9tYXAsIG4gPSB0aGlzLl9ncmlkVW5jbHVzdGVyZWQsIHIgPSBNYXRoLmZsb29yKHRoaXMuX21hcC5nZXRNaW5ab29tKCkpOyB0ID49IHIgJiYgblt0XS5yZW1vdmVPYmplY3QoZSwgaS5wcm9qZWN0KGUuZ2V0TGF0TG5nKCksIHQpKTsgdC0tKTsKICAgICAgICB9LAogICAgICAgIF9jaGlsZE1hcmtlckRyYWdTdGFydDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnRhcmdldC5fX2RyYWdTdGFydCA9IGUudGFyZ2V0Ll9sYXRsbmcKICAgICAgICB9LAogICAgICAgIF9jaGlsZE1hcmtlck1vdmVkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5faWdub3JlTW92ZSAmJiAhZS50YXJnZXQuX19kcmFnU3RhcnQpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS50YXJnZXQuX3BvcHVwICYmIGUudGFyZ2V0Ll9wb3B1cC5pc09wZW4oKTsKICAgICAgICAgICAgICAgIHRoaXMuX21vdmVDaGlsZChlLnRhcmdldCwgZS5vbGRMYXRMbmcsIGUubGF0bG5nKSwgdCAmJiBlLnRhcmdldC5vcGVuUG9wdXAoKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfbW92ZUNoaWxkOiBmdW5jdGlvbihlLCB0LCBpKSB7CiAgICAgICAgICAgIGUuX2xhdGxuZyA9IHQsIHRoaXMucmVtb3ZlTGF5ZXIoZSksIGUuX2xhdGxuZyA9IGksIHRoaXMuYWRkTGF5ZXIoZSkKICAgICAgICB9LAogICAgICAgIF9jaGlsZE1hcmtlckRyYWdFbmQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnRhcmdldC5fX2RyYWdTdGFydDsKICAgICAgICAgICAgZGVsZXRlIGUudGFyZ2V0Ll9fZHJhZ1N0YXJ0LCB0ICYmIHRoaXMuX21vdmVDaGlsZChlLnRhcmdldCwgdCwgZS50YXJnZXQuX2xhdGxuZykKICAgICAgICB9LAogICAgICAgIF9yZW1vdmVMYXllcjogZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICB2YXIgbiA9IHRoaXMuX2dyaWRDbHVzdGVycywKICAgICAgICAgICAgICAgIHIgPSB0aGlzLl9ncmlkVW5jbHVzdGVyZWQsCiAgICAgICAgICAgICAgICBzID0gdGhpcy5fZmVhdHVyZUdyb3VwLAogICAgICAgICAgICAgICAgbyA9IHRoaXMuX21hcCwKICAgICAgICAgICAgICAgIGEgPSBNYXRoLmZsb29yKHRoaXMuX21hcC5nZXRNaW5ab29tKCkpOwogICAgICAgICAgICB0ICYmIHRoaXMuX3JlbW92ZUZyb21HcmlkVW5jbHVzdGVyZWQoZSwgdGhpcy5fbWF4Wm9vbSk7CiAgICAgICAgICAgIHZhciBoLCBsID0gZS5fX3BhcmVudCwKICAgICAgICAgICAgICAgIHUgPSBsLl9tYXJrZXJzOwogICAgICAgICAgICBmb3IgKHRoaXMuX2FycmF5U3BsaWNlKHUsIGUpOyBsICYmIChsLl9jaGlsZENvdW50LS0sIGwuX2JvdW5kc05lZWRVcGRhdGUgPSAhMCwgIShsLl96b29tIDwgYSkpOykgdCAmJiBsLl9jaGlsZENvdW50IDw9IDEgPyAoaCA9IGwuX21hcmtlcnNbMF0gPT09IGUgPyBsLl9tYXJrZXJzWzFdIDogbC5fbWFya2Vyc1swXSwgbltsLl96b29tXS5yZW1vdmVPYmplY3QobCwgby5wcm9qZWN0KGwuX2NMYXRMbmcsIGwuX3pvb20pKSwgcltsLl96b29tXS5hZGRPYmplY3QoaCwgby5wcm9qZWN0KGguZ2V0TGF0TG5nKCksIGwuX3pvb20pKSwgdGhpcy5fYXJyYXlTcGxpY2UobC5fX3BhcmVudC5fY2hpbGRDbHVzdGVycywgbCksIGwuX19wYXJlbnQuX21hcmtlcnMucHVzaChoKSwgaC5fX3BhcmVudCA9IGwuX19wYXJlbnQsIGwuX2ljb24gJiYgKHMucmVtb3ZlTGF5ZXIobCksIGkgfHwgcy5hZGRMYXllcihoKSkpIDogbC5faWNvbk5lZWRzVXBkYXRlID0gITAsIGwgPSBsLl9fcGFyZW50OwogICAgICAgICAgICBkZWxldGUgZS5fX3BhcmVudAogICAgICAgIH0sCiAgICAgICAgX2lzT3JJc1BhcmVudDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBmb3IgKDsgdDspIHsKICAgICAgICAgICAgICAgIGlmIChlID09PSB0KSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICB0ID0gdC5wYXJlbnROb2RlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfSwKICAgICAgICBmaXJlOiBmdW5jdGlvbihlLCB0LCBpKSB7CiAgICAgICAgICAgIGlmICh0ICYmIHQubGF5ZXIgaW5zdGFuY2VvZiBMLk1hcmtlckNsdXN0ZXIpIHsKICAgICAgICAgICAgICAgIGlmICh0Lm9yaWdpbmFsRXZlbnQgJiYgdGhpcy5faXNPcklzUGFyZW50KHQubGF5ZXIuX2ljb24sIHQub3JpZ2luYWxFdmVudC5yZWxhdGVkVGFyZ2V0KSkgcmV0dXJuOwogICAgICAgICAgICAgICAgZSA9ICJjbHVzdGVyIiArIGUKICAgICAgICAgICAgfQogICAgICAgICAgICBMLkZlYXR1cmVHcm91cC5wcm90b3R5cGUuZmlyZS5jYWxsKHRoaXMsIGUsIHQsIGkpCiAgICAgICAgfSwKICAgICAgICBsaXN0ZW5zOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBMLkZlYXR1cmVHcm91cC5wcm90b3R5cGUubGlzdGVucy5jYWxsKHRoaXMsIGUsIHQpIHx8IEwuRmVhdHVyZUdyb3VwLnByb3RvdHlwZS5saXN0ZW5zLmNhbGwodGhpcywgImNsdXN0ZXIiICsgZSwgdCkKICAgICAgICB9LAogICAgICAgIF9kZWZhdWx0SWNvbkNyZWF0ZUZ1bmN0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5nZXRDaGlsZENvdW50KCksCiAgICAgICAgICAgICAgICBpID0gIiBtYXJrZXItY2x1c3Rlci0iOwogICAgICAgICAgICByZXR1cm4gaSArPSAxMCA+IHQgPyAic21hbGwiIDogMTAwID4gdCA/ICJtZWRpdW0iIDogImxhcmdlIiwgbmV3IEwuRGl2SWNvbih7CiAgICAgICAgICAgICAgICBodG1sOiAiPGRpdj48c3Bhbj4iICsgdCArICI8L3NwYW4+PC9kaXY+IiwKICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogIm1hcmtlci1jbHVzdGVyIiArIGksCiAgICAgICAgICAgICAgICBpY29uU2l6ZTogbmV3IEwuUG9pbnQoNDAsIDQwKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgX2JpbmRFdmVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMuX21hcCwKICAgICAgICAgICAgICAgIHQgPSB0aGlzLm9wdGlvbnMuc3BpZGVyZnlPbk1heFpvb20sCiAgICAgICAgICAgICAgICBpID0gdGhpcy5vcHRpb25zLnNob3dDb3ZlcmFnZU9uSG92ZXIsCiAgICAgICAgICAgICAgICBuID0gdGhpcy5vcHRpb25zLnpvb21Ub0JvdW5kc09uQ2xpY2s7CiAgICAgICAgICAgICh0IHx8IG4pICYmIHRoaXMub24oImNsdXN0ZXJjbGljayIsIHRoaXMuX3pvb21PclNwaWRlcmZ5LCB0aGlzKSwgaSAmJiAodGhpcy5vbigiY2x1c3Rlcm1vdXNlb3ZlciIsIHRoaXMuX3Nob3dDb3ZlcmFnZSwgdGhpcyksIHRoaXMub24oImNsdXN0ZXJtb3VzZW91dCIsIHRoaXMuX2hpZGVDb3ZlcmFnZSwgdGhpcyksIGUub24oInpvb21lbmQiLCB0aGlzLl9oaWRlQ292ZXJhZ2UsIHRoaXMpKQogICAgICAgIH0sCiAgICAgICAgX3pvb21PclNwaWRlcmZ5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSBlLmxheWVyLCBpID0gdDsgMSA9PT0gaS5fY2hpbGRDbHVzdGVycy5sZW5ndGg7KSBpID0gaS5fY2hpbGRDbHVzdGVyc1swXTsKICAgICAgICAgICAgaS5fem9vbSA9PT0gdGhpcy5fbWF4Wm9vbSAmJiBpLl9jaGlsZENvdW50ID09PSB0Ll9jaGlsZENvdW50ICYmIHRoaXMub3B0aW9ucy5zcGlkZXJmeU9uTWF4Wm9vbSA/IHQuc3BpZGVyZnkoKSA6IHRoaXMub3B0aW9ucy56b29tVG9Cb3VuZHNPbkNsaWNrICYmIHQuem9vbVRvQm91bmRzKCksIGUub3JpZ2luYWxFdmVudCAmJiAxMyA9PT0gZS5vcmlnaW5hbEV2ZW50LmtleUNvZGUgJiYgdGhpcy5fbWFwLl9jb250YWluZXIuZm9jdXMoKQogICAgICAgIH0sCiAgICAgICAgX3Nob3dDb3ZlcmFnZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX21hcDsKICAgICAgICAgICAgdGhpcy5faW5ab29tQW5pbWF0aW9uIHx8ICh0aGlzLl9zaG93blBvbHlnb24gJiYgdC5yZW1vdmVMYXllcih0aGlzLl9zaG93blBvbHlnb24pLCBlLmxheWVyLmdldENoaWxkQ291bnQoKSA+IDIgJiYgZS5sYXllciAhPT0gdGhpcy5fc3BpZGVyZmllZCAmJiAodGhpcy5fc2hvd25Qb2x5Z29uID0gbmV3IEwuUG9seWdvbihlLmxheWVyLmdldENvbnZleEh1bGwoKSwgdGhpcy5vcHRpb25zLnBvbHlnb25PcHRpb25zKSwgdC5hZGRMYXllcih0aGlzLl9zaG93blBvbHlnb24pKSkKICAgICAgICB9LAogICAgICAgIF9oaWRlQ292ZXJhZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLl9zaG93blBvbHlnb24gJiYgKHRoaXMuX21hcC5yZW1vdmVMYXllcih0aGlzLl9zaG93blBvbHlnb24pLCB0aGlzLl9zaG93blBvbHlnb24gPSBudWxsKQogICAgICAgIH0sCiAgICAgICAgX3VuYmluZEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcHRpb25zLnNwaWRlcmZ5T25NYXhab29tLAogICAgICAgICAgICAgICAgdCA9IHRoaXMub3B0aW9ucy5zaG93Q292ZXJhZ2VPbkhvdmVyLAogICAgICAgICAgICAgICAgaSA9IHRoaXMub3B0aW9ucy56b29tVG9Cb3VuZHNPbkNsaWNrLAogICAgICAgICAgICAgICAgbiA9IHRoaXMuX21hcDsKICAgICAgICAgICAgKGUgfHwgaSkgJiYgdGhpcy5vZmYoImNsdXN0ZXJjbGljayIsIHRoaXMuX3pvb21PclNwaWRlcmZ5LCB0aGlzKSwgdCAmJiAodGhpcy5vZmYoImNsdXN0ZXJtb3VzZW92ZXIiLCB0aGlzLl9zaG93Q292ZXJhZ2UsIHRoaXMpLCB0aGlzLm9mZigiY2x1c3Rlcm1vdXNlb3V0IiwgdGhpcy5faGlkZUNvdmVyYWdlLCB0aGlzKSwgbi5vZmYoInpvb21lbmQiLCB0aGlzLl9oaWRlQ292ZXJhZ2UsIHRoaXMpKQogICAgICAgIH0sCiAgICAgICAgX3pvb21FbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLl9tYXAgJiYgKHRoaXMuX21lcmdlU3BsaXRDbHVzdGVycygpLCB0aGlzLl96b29tID0gTWF0aC5yb3VuZCh0aGlzLl9tYXAuX3pvb20pLCB0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHMgPSB0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSkKICAgICAgICB9LAogICAgICAgIF9tb3ZlRW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCF0aGlzLl9pblpvb21BbmltYXRpb24pIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCk7CiAgICAgICAgICAgICAgICB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcywgTWF0aC5mbG9vcih0aGlzLl9tYXAuZ2V0TWluWm9vbSgpKSwgdGhpcy5fem9vbSwgZSksIHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKG51bGwsIE1hdGgucm91bmQodGhpcy5fbWFwLl96b29tKSwgZSksIHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcyA9IGUKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX2dlbmVyYXRlSW5pdGlhbENsdXN0ZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBNYXRoLmNlaWwodGhpcy5fbWFwLmdldE1heFpvb20oKSksCiAgICAgICAgICAgICAgICB0ID0gTWF0aC5mbG9vcih0aGlzLl9tYXAuZ2V0TWluWm9vbSgpKSwKICAgICAgICAgICAgICAgIGkgPSB0aGlzLm9wdGlvbnMubWF4Q2x1c3RlclJhZGl1cywKICAgICAgICAgICAgICAgIG4gPSBpOwogICAgICAgICAgICAiZnVuY3Rpb24iICE9IHR5cGVvZiBpICYmIChuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICB9KSwgbnVsbCAhPT0gdGhpcy5vcHRpb25zLmRpc2FibGVDbHVzdGVyaW5nQXRab29tICYmIChlID0gdGhpcy5vcHRpb25zLmRpc2FibGVDbHVzdGVyaW5nQXRab29tIC0gMSksIHRoaXMuX21heFpvb20gPSBlLCB0aGlzLl9ncmlkQ2x1c3RlcnMgPSB7fSwgdGhpcy5fZ3JpZFVuY2x1c3RlcmVkID0ge307CiAgICAgICAgICAgIGZvciAodmFyIHIgPSBlOyByID49IHQ7IHItLSkgdGhpcy5fZ3JpZENsdXN0ZXJzW3JdID0gbmV3IEwuRGlzdGFuY2VHcmlkKG4ocikpLCB0aGlzLl9ncmlkVW5jbHVzdGVyZWRbcl0gPSBuZXcgTC5EaXN0YW5jZUdyaWQobihyKSk7CiAgICAgICAgICAgIHRoaXMuX3RvcENsdXN0ZXJMZXZlbCA9IG5ldyB0aGlzLl9tYXJrZXJDbHVzdGVyKHRoaXMsIHQgLSAxKQogICAgICAgIH0sCiAgICAgICAgX2FkZExheWVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBpLCBuLCByID0gdGhpcy5fZ3JpZENsdXN0ZXJzLAogICAgICAgICAgICAgICAgcyA9IHRoaXMuX2dyaWRVbmNsdXN0ZXJlZCwKICAgICAgICAgICAgICAgIG8gPSBNYXRoLmZsb29yKHRoaXMuX21hcC5nZXRNaW5ab29tKCkpOwogICAgICAgICAgICBmb3IgKHRoaXMub3B0aW9ucy5zaW5nbGVNYXJrZXJNb2RlICYmIHRoaXMuX292ZXJyaWRlTWFya2VySWNvbihlKSwgZS5vbih0aGlzLl9jaGlsZE1hcmtlckV2ZW50SGFuZGxlcnMsIHRoaXMpOyB0ID49IG87IHQtLSkgewogICAgICAgICAgICAgICAgaSA9IHRoaXMuX21hcC5wcm9qZWN0KGUuZ2V0TGF0TG5nKCksIHQpOwogICAgICAgICAgICAgICAgdmFyIGEgPSByW3RdLmdldE5lYXJPYmplY3QoaSk7CiAgICAgICAgICAgICAgICBpZiAoYSkgcmV0dXJuIGEuX2FkZENoaWxkKGUpLCBlLl9fcGFyZW50ID0gYSwgdm9pZCAwOwogICAgICAgICAgICAgICAgaWYgKGEgPSBzW3RdLmdldE5lYXJPYmplY3QoaSkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGEuX19wYXJlbnQ7CiAgICAgICAgICAgICAgICAgICAgaCAmJiB0aGlzLl9yZW1vdmVMYXllcihhLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBuZXcgdGhpcy5fbWFya2VyQ2x1c3Rlcih0aGlzLCB0LCBhLCBlKTsKICAgICAgICAgICAgICAgICAgICByW3RdLmFkZE9iamVjdChsLCB0aGlzLl9tYXAucHJvamVjdChsLl9jTGF0TG5nLCB0KSksIGEuX19wYXJlbnQgPSBsLCBlLl9fcGFyZW50ID0gbDsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGw7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gdCAtIDE7IG4gPiBoLl96b29tOyBuLS0pIHUgPSBuZXcgdGhpcy5fbWFya2VyQ2x1c3Rlcih0aGlzLCBuLCB1KSwgcltuXS5hZGRPYmplY3QodSwgdGhpcy5fbWFwLnByb2plY3QoYS5nZXRMYXRMbmcoKSwgbikpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBoLl9hZGRDaGlsZCh1KSwgdGhpcy5fcmVtb3ZlRnJvbUdyaWRVbmNsdXN0ZXJlZChhLCB0KSwgdm9pZCAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzW3RdLmFkZE9iamVjdChlLCBpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fYWRkQ2hpbGQoZSksIGUuX19wYXJlbnQgPSB0aGlzLl90b3BDbHVzdGVyTGV2ZWwKICAgICAgICB9LAogICAgICAgIF9yZWZyZXNoQ2x1c3RlcnNJY29uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX2ZlYXR1cmVHcm91cC5lYWNoTGF5ZXIoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZSBpbnN0YW5jZW9mIEwuTWFya2VyQ2x1c3RlciAmJiBlLl9pY29uTmVlZHNVcGRhdGUgJiYgZS5fdXBkYXRlSWNvbigpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBfZW5xdWV1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKGUpLCB0aGlzLl9xdWV1ZVRpbWVvdXQgfHwgKHRoaXMuX3F1ZXVlVGltZW91dCA9IHNldFRpbWVvdXQoTC5iaW5kKHRoaXMuX3Byb2Nlc3NRdWV1ZSwgdGhpcyksIDMwMCkpCiAgICAgICAgfSwKICAgICAgICBfcHJvY2Vzc1F1ZXVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCB0aGlzLl9xdWV1ZS5sZW5ndGg7IGUrKykgdGhpcy5fcXVldWVbZV0uY2FsbCh0aGlzKTsKICAgICAgICAgICAgdGhpcy5fcXVldWUubGVuZ3RoID0gMCwgY2xlYXJUaW1lb3V0KHRoaXMuX3F1ZXVlVGltZW91dCksIHRoaXMuX3F1ZXVlVGltZW91dCA9IG51bGwKICAgICAgICB9LAogICAgICAgIF9tZXJnZVNwbGl0Q2x1c3RlcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IE1hdGgucm91bmQodGhpcy5fbWFwLl96b29tKTsKICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1F1ZXVlKCksIHRoaXMuX3pvb20gPCBlICYmIHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcy5pbnRlcnNlY3RzKHRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpKSA/ICh0aGlzLl9hbmltYXRpb25TdGFydCgpLCB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcywgTWF0aC5mbG9vcih0aGlzLl9tYXAuZ2V0TWluWm9vbSgpKSwgdGhpcy5fem9vbSwgdGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCkpLCB0aGlzLl9hbmltYXRpb25ab29tSW4odGhpcy5fem9vbSwgZSkpIDogdGhpcy5fem9vbSA+IGUgPyAodGhpcy5fYW5pbWF0aW9uU3RhcnQoKSwgdGhpcy5fYW5pbWF0aW9uWm9vbU91dCh0aGlzLl96b29tLCBlKSkgOiB0aGlzLl9tb3ZlRW5kKCkKICAgICAgICB9LAogICAgICAgIF9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJlbW92ZU91dHNpZGVWaXNpYmxlQm91bmRzID8gTC5Ccm93c2VyLm1vYmlsZSA/IHRoaXMuX2NoZWNrQm91bmRzTWF4TGF0KHRoaXMuX21hcC5nZXRCb3VuZHMoKSkgOiB0aGlzLl9jaGVja0JvdW5kc01heExhdCh0aGlzLl9tYXAuZ2V0Qm91bmRzKCkucGFkKDEpKSA6IHRoaXMuX21hcEJvdW5kc0luZmluaXRlCiAgICAgICAgfSwKICAgICAgICBfY2hlY2tCb3VuZHNNYXhMYXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9tYXhMYXQ7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQgJiYgKGUuZ2V0Tm9ydGgoKSA+PSB0ICYmIChlLl9ub3J0aEVhc3QubGF0ID0gMSAvIDApLCBlLmdldFNvdXRoKCkgPD0gLXQgJiYgKGUuX3NvdXRoV2VzdC5sYXQgPSAtMSAvIDApKSwgZQogICAgICAgIH0sCiAgICAgICAgX2FuaW1hdGlvbkFkZExheWVyTm9uQW5pbWF0ZWQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKHQgPT09IGUpIHRoaXMuX2ZlYXR1cmVHcm91cC5hZGRMYXllcihlKTsKICAgICAgICAgICAgZWxzZSBpZiAoMiA9PT0gdC5fY2hpbGRDb3VudCkgewogICAgICAgICAgICAgICAgdC5fYWRkVG9NYXAoKTsKICAgICAgICAgICAgICAgIHZhciBpID0gdC5nZXRBbGxDaGlsZE1hcmtlcnMoKTsKICAgICAgICAgICAgICAgIHRoaXMuX2ZlYXR1cmVHcm91cC5yZW1vdmVMYXllcihpWzBdKSwgdGhpcy5fZmVhdHVyZUdyb3VwLnJlbW92ZUxheWVyKGlbMV0pCiAgICAgICAgICAgIH0gZWxzZSB0Ll91cGRhdGVJY29uKCkKICAgICAgICB9LAogICAgICAgIF9leHRyYWN0Tm9uR3JvdXBMYXllcnM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIGksIG4gPSBlLmdldExheWVycygpLAogICAgICAgICAgICAgICAgciA9IDA7CiAgICAgICAgICAgIGZvciAodCA9IHQgfHwgW107IHIgPCBuLmxlbmd0aDsgcisrKSBpID0gbltyXSwgaSBpbnN0YW5jZW9mIEwuTGF5ZXJHcm91cCA/IHRoaXMuX2V4dHJhY3ROb25Hcm91cExheWVycyhpLCB0KSA6IHQucHVzaChpKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9LAogICAgICAgIF9vdmVycmlkZU1hcmtlckljb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLm9wdGlvbnMuaWNvbiA9IHRoaXMub3B0aW9ucy5pY29uQ3JlYXRlRnVuY3Rpb24oewogICAgICAgICAgICAgICAgZ2V0Q2hpbGRDb3VudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRBbGxDaGlsZE1hcmtlcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbZV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQogICAgfSk7CiAgICBMLk1hcmtlckNsdXN0ZXJHcm91cC5pbmNsdWRlKHsKICAgICAgICBfbWFwQm91bmRzSW5maW5pdGU6IG5ldyBMLkxhdExuZ0JvdW5kcyhuZXcgTC5MYXRMbmcoLTEgLyAwLCAtMSAvIDApLCBuZXcgTC5MYXRMbmcoMSAvIDAsIDEgLyAwKSkKICAgIH0pLCBMLk1hcmtlckNsdXN0ZXJHcm91cC5pbmNsdWRlKHsKICAgICAgICBfbm9BbmltYXRpb246IHsKICAgICAgICAgICAgX2FuaW1hdGlvblN0YXJ0OiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICBfYW5pbWF0aW9uWm9vbUluOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcywgTWF0aC5mbG9vcih0aGlzLl9tYXAuZ2V0TWluWm9vbSgpKSwgZSksIHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKG51bGwsIHQsIHRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpKSwgdGhpcy5maXJlKCJhbmltYXRpb25lbmQiKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYW5pbWF0aW9uWm9vbU91dDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseVJlbW92ZUNoaWxkcmVuRnJvbU1hcCh0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHMsIE1hdGguZmxvb3IodGhpcy5fbWFwLmdldE1pblpvb20oKSksIGUpLCB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLCB0LCB0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSksIHRoaXMuZmlyZSgiYW5pbWF0aW9uZW5kIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2FuaW1hdGlvbkFkZExheWVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl9hbmltYXRpb25BZGRMYXllck5vbkFuaW1hdGVkKGUsIHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIF93aXRoQW5pbWF0aW9uOiB7CiAgICAgICAgICAgIF9hbmltYXRpb25TdGFydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9tYXAuX21hcFBhbmUuY2xhc3NOYW1lICs9ICIgbGVhZmxldC1jbHVzdGVyLWFuaW0iLCB0aGlzLl9pblpvb21BbmltYXRpb24rKwogICAgICAgICAgICB9LAogICAgICAgICAgICBfYW5pbWF0aW9uWm9vbUluOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgbiA9IHRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLl9mZWF0dXJlR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguZmxvb3IodGhpcy5fbWFwLmdldE1pblpvb20oKSk7CiAgICAgICAgICAgICAgICB0aGlzLl9pZ25vcmVNb3ZlID0gITAsIHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHkobiwgZSwgcywgZnVuY3Rpb24ocykgewogICAgICAgICAgICAgICAgICAgIHZhciBvLCBhID0gcy5fbGF0bG5nLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gcy5fbWFya2VyczsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4uY29udGFpbnMoYSkgfHwgKGEgPSBudWxsKSwgcy5faXNTaW5nbGVQYXJlbnQoKSAmJiBlICsgMSA9PT0gdCA/IChyLnJlbW92ZUxheWVyKHMpLCBzLl9yZWN1cnNpdmVseUFkZENoaWxkcmVuVG9NYXAobnVsbCwgdCwgbikpIDogKHMuY2x1c3RlckhpZGUoKSwgcy5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKGEsIHQsIG4pKSwgaSA9IGgubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIG8gPSBoW2ldLCBuLmNvbnRhaW5zKG8uX2xhdGxuZykgfHwgci5yZW1vdmVMYXllcihvKQogICAgICAgICAgICAgICAgfSksIHRoaXMuX2ZvcmNlTGF5b3V0KCksIHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlCZWNvbWVWaXNpYmxlKG4sIHQpLCByLmVhY2hMYXllcihmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZSBpbnN0YW5jZW9mIEwuTWFya2VyQ2x1c3RlciB8fCAhZS5faWNvbiB8fCBlLmNsdXN0ZXJTaG93KCkKICAgICAgICAgICAgICAgIH0pLCB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5KG4sIGUsIHQsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLl9yZWN1cnNpdmVseVJlc3RvcmVDaGlsZFBvc2l0aW9ucyh0KQogICAgICAgICAgICAgICAgfSksIHRoaXMuX2lnbm9yZU1vdmUgPSAhMSwgdGhpcy5fZW5xdWV1ZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5KG4sIGUsIHMsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgci5yZW1vdmVMYXllcihlKSwgZS5jbHVzdGVyU2hvdygpCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2FuaW1hdGlvbkVuZCgpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYW5pbWF0aW9uWm9vbU91dDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uWm9vbU91dFNpbmdsZSh0aGlzLl90b3BDbHVzdGVyTGV2ZWwsIGUgLSAxLCB0KSwgdGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseUFkZENoaWxkcmVuVG9NYXAobnVsbCwgdCwgdGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCkpLCB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcywgTWF0aC5mbG9vcih0aGlzLl9tYXAuZ2V0TWluWm9vbSgpKSwgZSwgdGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9hbmltYXRpb25BZGRMYXllcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9mZWF0dXJlR3JvdXA7CiAgICAgICAgICAgICAgICBuLmFkZExheWVyKGUpLCB0ICE9PSBlICYmICh0Ll9jaGlsZENvdW50ID4gMiA/ICh0Ll91cGRhdGVJY29uKCksIHRoaXMuX2ZvcmNlTGF5b3V0KCksIHRoaXMuX2FuaW1hdGlvblN0YXJ0KCksIGUuX3NldFBvcyh0aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHQuZ2V0TGF0TG5nKCkpKSwgZS5jbHVzdGVySGlkZSgpLCB0aGlzLl9lbnF1ZXVlKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIG4ucmVtb3ZlTGF5ZXIoZSksIGUuY2x1c3RlclNob3coKSwgaS5fYW5pbWF0aW9uRW5kKCkKICAgICAgICAgICAgICAgIH0pKSA6ICh0aGlzLl9mb3JjZUxheW91dCgpLCBpLl9hbmltYXRpb25TdGFydCgpLCBpLl9hbmltYXRpb25ab29tT3V0U2luZ2xlKHQsIHRoaXMuX21hcC5nZXRNYXhab29tKCksIHRoaXMuX3pvb20pKSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX2FuaW1hdGlvblpvb21PdXRTaW5nbGU6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSwKICAgICAgICAgICAgICAgIHIgPSBNYXRoLmZsb29yKHRoaXMuX21hcC5nZXRNaW5ab29tKCkpOwogICAgICAgICAgICBlLl9yZWN1cnNpdmVseUFuaW1hdGVDaGlsZHJlbkluQW5kQWRkU2VsZlRvTWFwKG4sIHIsIHQgKyAxLCBpKTsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzOwogICAgICAgICAgICB0aGlzLl9mb3JjZUxheW91dCgpLCBlLl9yZWN1cnNpdmVseUJlY29tZVZpc2libGUobiwgaSksIHRoaXMuX2VucXVldWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoMSA9PT0gZS5fY2hpbGRDb3VudCkgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5fbWFya2Vyc1swXTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9pZ25vcmVNb3ZlID0gITAsIG8uc2V0TGF0TG5nKG8uZ2V0TGF0TG5nKCkpLCB0aGlzLl9pZ25vcmVNb3ZlID0gITEsIG8uY2x1c3RlclNob3cgJiYgby5jbHVzdGVyU2hvdygpCiAgICAgICAgICAgICAgICB9IGVsc2UgZS5fcmVjdXJzaXZlbHkobiwgaSwgciwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKG4sIHIsIHQgKyAxKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzLl9hbmltYXRpb25FbmQoKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgX2FuaW1hdGlvbkVuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX21hcCAmJiAodGhpcy5fbWFwLl9tYXBQYW5lLmNsYXNzTmFtZSA9IHRoaXMuX21hcC5fbWFwUGFuZS5jbGFzc05hbWUucmVwbGFjZSgiIGxlYWZsZXQtY2x1c3Rlci1hbmltIiwgIiIpKSwgdGhpcy5faW5ab29tQW5pbWF0aW9uLS0sIHRoaXMuZmlyZSgiYW5pbWF0aW9uZW5kIikKICAgICAgICB9LAogICAgICAgIF9mb3JjZUxheW91dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIEwuVXRpbC5mYWxzZUZuKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpCiAgICAgICAgfQogICAgfSksIEwubWFya2VyQ2x1c3Rlckdyb3VwID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBuZXcgTC5NYXJrZXJDbHVzdGVyR3JvdXAoZSkKICAgIH07CiAgICB2YXIgaSA9IEwuTWFya2VyQ2x1c3RlciA9IEwuTWFya2VyLmV4dGVuZCh7CiAgICAgICAgb3B0aW9uczogTC5JY29uLnByb3RvdHlwZS5vcHRpb25zLAogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGUsIHQsIGksIG4pIHsKICAgICAgICAgICAgTC5NYXJrZXIucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBpID8gaS5fY0xhdExuZyB8fCBpLmdldExhdExuZygpIDogbmV3IEwuTGF0TG5nKDAsIDApLCB7CiAgICAgICAgICAgICAgICBpY29uOiB0aGlzLAogICAgICAgICAgICAgICAgcGFuZTogZS5vcHRpb25zLmNsdXN0ZXJQYW5lCiAgICAgICAgICAgIH0pLCB0aGlzLl9ncm91cCA9IGUsIHRoaXMuX3pvb20gPSB0LCB0aGlzLl9tYXJrZXJzID0gW10sIHRoaXMuX2NoaWxkQ2x1c3RlcnMgPSBbXSwgdGhpcy5fY2hpbGRDb3VudCA9IDAsIHRoaXMuX2ljb25OZWVkc1VwZGF0ZSA9ICEwLCB0aGlzLl9ib3VuZHNOZWVkVXBkYXRlID0gITAsIHRoaXMuX2JvdW5kcyA9IG5ldyBMLkxhdExuZ0JvdW5kcywgaSAmJiB0aGlzLl9hZGRDaGlsZChpKSwgbiAmJiB0aGlzLl9hZGRDaGlsZChuKQogICAgICAgIH0sCiAgICAgICAgZ2V0QWxsQ2hpbGRNYXJrZXJzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGUgPSBlIHx8IFtdOwogICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5fY2hpbGRDbHVzdGVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgdGhpcy5fY2hpbGRDbHVzdGVyc1tpXS5nZXRBbGxDaGlsZE1hcmtlcnMoZSk7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSB0aGlzLl9tYXJrZXJzLmxlbmd0aCAtIDE7IG4gPj0gMDsgbi0tKSB0ICYmIHRoaXMuX21hcmtlcnNbbl0uX19kcmFnU3RhcnQgfHwgZS5wdXNoKHRoaXMuX21hcmtlcnNbbl0pOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0sCiAgICAgICAgZ2V0Q2hpbGRDb3VudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jaGlsZENvdW50CiAgICAgICAgfSwKICAgICAgICB6b29tVG9Cb3VuZHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCwgaSA9IHRoaXMuX2NoaWxkQ2x1c3RlcnMuc2xpY2UoKSwgbiA9IHRoaXMuX2dyb3VwLl9tYXAsIHIgPSBuLmdldEJvdW5kc1pvb20odGhpcy5fYm91bmRzKSwgcyA9IHRoaXMuX3pvb20gKyAxLCBvID0gbi5nZXRab29tKCk7IGkubGVuZ3RoID4gMCAmJiByID4gczspIHsKICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgIHZhciBhID0gW107CiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgaS5sZW5ndGg7IHQrKykgYSA9IGEuY29uY2F0KGlbdF0uX2NoaWxkQ2x1c3RlcnMpOwogICAgICAgICAgICAgICAgaSA9IGEKICAgICAgICAgICAgfQogICAgICAgICAgICByID4gcyA/IHRoaXMuX2dyb3VwLl9tYXAuc2V0Vmlldyh0aGlzLl9sYXRsbmcsIHMpIDogbyA+PSByID8gdGhpcy5fZ3JvdXAuX21hcC5zZXRWaWV3KHRoaXMuX2xhdGxuZywgbyArIDEpIDogdGhpcy5fZ3JvdXAuX21hcC5maXRCb3VuZHModGhpcy5fYm91bmRzLCBlKQogICAgICAgIH0sCiAgICAgICAgZ2V0Qm91bmRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBuZXcgTC5MYXRMbmdCb3VuZHM7CiAgICAgICAgICAgIHJldHVybiBlLmV4dGVuZCh0aGlzLl9ib3VuZHMpLCBlCiAgICAgICAgfSwKICAgICAgICBfdXBkYXRlSWNvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX2ljb25OZWVkc1VwZGF0ZSA9ICEwLCB0aGlzLl9pY29uICYmIHRoaXMuc2V0SWNvbih0aGlzKQogICAgICAgIH0sCiAgICAgICAgY3JlYXRlSWNvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pY29uTmVlZHNVcGRhdGUgJiYgKHRoaXMuX2ljb25PYmogPSB0aGlzLl9ncm91cC5vcHRpb25zLmljb25DcmVhdGVGdW5jdGlvbih0aGlzKSwgdGhpcy5faWNvbk5lZWRzVXBkYXRlID0gITEpLCB0aGlzLl9pY29uT2JqLmNyZWF0ZUljb24oKQogICAgICAgIH0sCiAgICAgICAgY3JlYXRlU2hhZG93OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ljb25PYmouY3JlYXRlU2hhZG93KCkKICAgICAgICB9LAogICAgICAgIF9hZGRDaGlsZDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB0aGlzLl9pY29uTmVlZHNVcGRhdGUgPSAhMCwgdGhpcy5fYm91bmRzTmVlZFVwZGF0ZSA9ICEwLCB0aGlzLl9zZXRDbHVzdGVyQ2VudGVyKGUpLCBlIGluc3RhbmNlb2YgTC5NYXJrZXJDbHVzdGVyID8gKHQgfHwgKHRoaXMuX2NoaWxkQ2x1c3RlcnMucHVzaChlKSwgZS5fX3BhcmVudCA9IHRoaXMpLCB0aGlzLl9jaGlsZENvdW50ICs9IGUuX2NoaWxkQ291bnQpIDogKHQgfHwgdGhpcy5fbWFya2Vycy5wdXNoKGUpLCB0aGlzLl9jaGlsZENvdW50KyspLCB0aGlzLl9fcGFyZW50ICYmIHRoaXMuX19wYXJlbnQuX2FkZENoaWxkKGUsICEwKQogICAgICAgIH0sCiAgICAgICAgX3NldENsdXN0ZXJDZW50ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdGhpcy5fY0xhdExuZyB8fCAodGhpcy5fY0xhdExuZyA9IGUuX2NMYXRMbmcgfHwgZS5fbGF0bG5nKQogICAgICAgIH0sCiAgICAgICAgX3Jlc2V0Qm91bmRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9ib3VuZHM7CiAgICAgICAgICAgIGUuX3NvdXRoV2VzdCAmJiAoZS5fc291dGhXZXN0LmxhdCA9IDEgLyAwLCBlLl9zb3V0aFdlc3QubG5nID0gMSAvIDApLCBlLl9ub3J0aEVhc3QgJiYgKGUuX25vcnRoRWFzdC5sYXQgPSAtMSAvIDAsIGUuX25vcnRoRWFzdC5sbmcgPSAtMSAvIDApCiAgICAgICAgfSwKICAgICAgICBfcmVjYWxjdWxhdGVCb3VuZHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSwgdCwgaSwgbiwgciA9IHRoaXMuX21hcmtlcnMsCiAgICAgICAgICAgICAgICBzID0gdGhpcy5fY2hpbGRDbHVzdGVycywKICAgICAgICAgICAgICAgIG8gPSAwLAogICAgICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICAgICBoID0gdGhpcy5fY2hpbGRDb3VudDsKICAgICAgICAgICAgaWYgKDAgIT09IGgpIHsKICAgICAgICAgICAgICAgIGZvciAodGhpcy5fcmVzZXRCb3VuZHMoKSwgZSA9IDA7IGUgPCByLmxlbmd0aDsgZSsrKSBpID0gcltlXS5fbGF0bG5nLCB0aGlzLl9ib3VuZHMuZXh0ZW5kKGkpLCBvICs9IGkubGF0LCBhICs9IGkubG5nOwogICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IHMubGVuZ3RoOyBlKyspIHQgPSBzW2VdLCB0Ll9ib3VuZHNOZWVkVXBkYXRlICYmIHQuX3JlY2FsY3VsYXRlQm91bmRzKCksIHRoaXMuX2JvdW5kcy5leHRlbmQodC5fYm91bmRzKSwgaSA9IHQuX3dMYXRMbmcsIG4gPSB0Ll9jaGlsZENvdW50LCBvICs9IGkubGF0ICogbiwgYSArPSBpLmxuZyAqIG47CiAgICAgICAgICAgICAgICB0aGlzLl9sYXRsbmcgPSB0aGlzLl93TGF0TG5nID0gbmV3IEwuTGF0TG5nKG8gLyBoLCBhIC8gaCksIHRoaXMuX2JvdW5kc05lZWRVcGRhdGUgPSAhMQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfYWRkVG9NYXA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZSAmJiAodGhpcy5fYmFja3VwTGF0bG5nID0gdGhpcy5fbGF0bG5nLCB0aGlzLnNldExhdExuZyhlKSksIHRoaXMuX2dyb3VwLl9mZWF0dXJlR3JvdXAuYWRkTGF5ZXIodGhpcykKICAgICAgICB9LAogICAgICAgIF9yZWN1cnNpdmVseUFuaW1hdGVDaGlsZHJlbkluOiBmdW5jdGlvbihlLCB0LCBpKSB7CiAgICAgICAgICAgIHRoaXMuX3JlY3Vyc2l2ZWx5KGUsIHRoaXMuX2dyb3VwLl9tYXAuZ2V0TWluWm9vbSgpLCBpIC0gMSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIGksIG4sIHIgPSBlLl9tYXJrZXJzOwogICAgICAgICAgICAgICAgZm9yIChpID0gci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgbiA9IHJbaV0sIG4uX2ljb24gJiYgKG4uX3NldFBvcyh0KSwgbi5jbHVzdGVySGlkZSgpKQogICAgICAgICAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgbiwgciA9IGUuX2NoaWxkQ2x1c3RlcnM7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSByLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBuID0gcltpXSwgbi5faWNvbiAmJiAobi5fc2V0UG9zKHQpLCBuLmNsdXN0ZXJIaWRlKCkpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBfcmVjdXJzaXZlbHlBbmltYXRlQ2hpbGRyZW5JbkFuZEFkZFNlbGZUb01hcDogZnVuY3Rpb24oZSwgdCwgaSwgbikgewogICAgICAgICAgICB0aGlzLl9yZWN1cnNpdmVseShlLCBuLCB0LCBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByLl9yZWN1cnNpdmVseUFuaW1hdGVDaGlsZHJlbkluKGUsIHIuX2dyb3VwLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHIuZ2V0TGF0TG5nKCkpLnJvdW5kKCksIGkpLCByLl9pc1NpbmdsZVBhcmVudCgpICYmIGkgLSAxID09PSBuID8gKHIuY2x1c3RlclNob3coKSwgci5fcmVjdXJzaXZlbHlSZW1vdmVDaGlsZHJlbkZyb21NYXAoZSwgdCwgaSkpIDogci5jbHVzdGVySGlkZSgpLCByLl9hZGRUb01hcCgpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBfcmVjdXJzaXZlbHlCZWNvbWVWaXNpYmxlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHRoaXMuX3JlY3Vyc2l2ZWx5KGUsIHRoaXMuX2dyb3VwLl9tYXAuZ2V0TWluWm9vbSgpLCB0LCBudWxsLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmNsdXN0ZXJTaG93KCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9yZWN1cnNpdmVseUFkZENoaWxkcmVuVG9NYXA6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgdGhpcy5fcmVjdXJzaXZlbHkoaSwgdGhpcy5fZ3JvdXAuX21hcC5nZXRNaW5ab29tKCkgLSAxLCB0LCBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICBpZiAodCAhPT0gbi5fem9vbSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gbi5fbWFya2Vycy5sZW5ndGggLSAxOyByID49IDA7IHItLSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG4uX21hcmtlcnNbcl07CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY29udGFpbnMocy5fbGF0bG5nKSAmJiAoZSAmJiAocy5fYmFja3VwTGF0bG5nID0gcy5nZXRMYXRMbmcoKSwgcy5zZXRMYXRMbmcoZSksIHMuY2x1c3RlckhpZGUgJiYgcy5jbHVzdGVySGlkZSgpKSwgbi5fZ3JvdXAuX2ZlYXR1cmVHcm91cC5hZGRMYXllcihzKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHQuX2FkZFRvTWFwKGUpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBfcmVjdXJzaXZlbHlSZXN0b3JlQ2hpbGRQb3NpdGlvbnM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IHRoaXMuX21hcmtlcnMubGVuZ3RoIC0gMTsgdCA+PSAwOyB0LS0pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fbWFya2Vyc1t0XTsKICAgICAgICAgICAgICAgIGkuX2JhY2t1cExhdGxuZyAmJiAoaS5zZXRMYXRMbmcoaS5fYmFja3VwTGF0bG5nKSwgZGVsZXRlIGkuX2JhY2t1cExhdGxuZykKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZSAtIDEgPT09IHRoaXMuX3pvb20pCiAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gdGhpcy5fY2hpbGRDbHVzdGVycy5sZW5ndGggLSAxOyBuID49IDA7IG4tLSkgdGhpcy5fY2hpbGRDbHVzdGVyc1tuXS5fcmVzdG9yZVBvc2l0aW9uKCk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSB0aGlzLl9jaGlsZENsdXN0ZXJzLmxlbmd0aCAtIDE7IHIgPj0gMDsgci0tKSB0aGlzLl9jaGlsZENsdXN0ZXJzW3JdLl9yZWN1cnNpdmVseVJlc3RvcmVDaGlsZFBvc2l0aW9ucyhlKQogICAgICAgIH0sCiAgICAgICAgX3Jlc3RvcmVQb3NpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX2JhY2t1cExhdGxuZyAmJiAodGhpcy5zZXRMYXRMbmcodGhpcy5fYmFja3VwTGF0bG5nKSwgZGVsZXRlIHRoaXMuX2JhY2t1cExhdGxuZykKICAgICAgICB9LAogICAgICAgIF9yZWN1cnNpdmVseVJlbW92ZUNoaWxkcmVuRnJvbU1hcDogZnVuY3Rpb24oZSwgdCwgaSwgbikgewogICAgICAgICAgICB2YXIgciwgczsKICAgICAgICAgICAgdGhpcy5fcmVjdXJzaXZlbHkoZSwgdCAtIDEsIGkgLSAxLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHMgPSBlLl9tYXJrZXJzLmxlbmd0aCAtIDE7IHMgPj0gMDsgcy0tKSByID0gZS5fbWFya2Vyc1tzXSwgbiAmJiBuLmNvbnRhaW5zKHIuX2xhdGxuZykgfHwgKGUuX2dyb3VwLl9mZWF0dXJlR3JvdXAucmVtb3ZlTGF5ZXIociksIHIuY2x1c3RlclNob3cgJiYgci5jbHVzdGVyU2hvdygpKQogICAgICAgICAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHMgPSBlLl9jaGlsZENsdXN0ZXJzLmxlbmd0aCAtIDE7IHMgPj0gMDsgcy0tKSByID0gZS5fY2hpbGRDbHVzdGVyc1tzXSwgbiAmJiBuLmNvbnRhaW5zKHIuX2xhdGxuZykgfHwgKGUuX2dyb3VwLl9mZWF0dXJlR3JvdXAucmVtb3ZlTGF5ZXIociksIHIuY2x1c3RlclNob3cgJiYgci5jbHVzdGVyU2hvdygpKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgX3JlY3Vyc2l2ZWx5OiBmdW5jdGlvbihlLCB0LCBpLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBzLCBvLCBhID0gdGhpcy5fY2hpbGRDbHVzdGVycywKICAgICAgICAgICAgICAgIGggPSB0aGlzLl96b29tOwogICAgICAgICAgICBpZiAoaCA+PSB0ICYmIChuICYmIG4odGhpcyksIHIgJiYgaCA9PT0gaSAmJiByKHRoaXMpKSwgdCA+IGggfHwgaSA+IGgpCiAgICAgICAgICAgICAgICBmb3IgKHMgPSBhLmxlbmd0aCAtIDE7IHMgPj0gMDsgcy0tKSBvID0gYVtzXSwgby5fYm91bmRzTmVlZFVwZGF0ZSAmJiBvLl9yZWNhbGN1bGF0ZUJvdW5kcygpLCBlLmludGVyc2VjdHMoby5fYm91bmRzKSAmJiBvLl9yZWN1cnNpdmVseShlLCB0LCBpLCBuLCByKQogICAgICAgIH0sCiAgICAgICAgX2lzU2luZ2xlUGFyZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkQ2x1c3RlcnMubGVuZ3RoID4gMCAmJiB0aGlzLl9jaGlsZENsdXN0ZXJzWzBdLl9jaGlsZENvdW50ID09PSB0aGlzLl9jaGlsZENvdW50CiAgICAgICAgfQogICAgfSk7CiAgICBMLk1hcmtlci5pbmNsdWRlKHsKICAgICAgICAgICAgY2x1c3RlckhpZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9wdGlvbnMub3BhY2l0eTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE9wYWNpdHkoMCksIHRoaXMub3B0aW9ucy5vcGFjaXR5ID0gZSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBjbHVzdGVyU2hvdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRPcGFjaXR5KHRoaXMub3B0aW9ucy5vcGFjaXR5KQogICAgICAgICAgICB9CiAgICAgICAgfSksIEwuRGlzdGFuY2VHcmlkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aGlzLl9jZWxsU2l6ZSA9IGUsIHRoaXMuX3NxQ2VsbFNpemUgPSBlICogZSwgdGhpcy5fZ3JpZCA9IHt9LCB0aGlzLl9vYmplY3RQb2ludCA9IHt9CiAgICAgICAgfSwgTC5EaXN0YW5jZUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICBhZGRPYmplY3Q6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fZ2V0Q29vcmQodC54KSwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5fZ2V0Q29vcmQodC55KSwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5fZ3JpZCwKICAgICAgICAgICAgICAgICAgICBzID0gcltuXSA9IHJbbl0gfHwge30sCiAgICAgICAgICAgICAgICAgICAgbyA9IHNbaV0gPSBzW2ldIHx8IFtdLAogICAgICAgICAgICAgICAgICAgIGEgPSBMLlV0aWwuc3RhbXAoZSk7CiAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3RQb2ludFthXSA9IHQsIG8ucHVzaChlKQogICAgICAgICAgICB9LAogICAgICAgICAgICB1cGRhdGVPYmplY3Q6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlT2JqZWN0KGUpLCB0aGlzLmFkZE9iamVjdChlLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICByZW1vdmVPYmplY3Q6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBuLCByID0gdGhpcy5fZ2V0Q29vcmQodC54KSwKICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5fZ2V0Q29vcmQodC55KSwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5fZ3JpZCwKICAgICAgICAgICAgICAgICAgICBhID0gb1tzXSA9IG9bc10gfHwge30sCiAgICAgICAgICAgICAgICAgICAgaCA9IGFbcl0gPSBhW3JdIHx8IFtdOwogICAgICAgICAgICAgICAgZm9yIChkZWxldGUgdGhpcy5fb2JqZWN0UG9pbnRbTC5VdGlsLnN0YW1wKGUpXSwgaSA9IDAsIG4gPSBoLmxlbmd0aDsgbiA+IGk7IGkrKykKICAgICAgICAgICAgICAgICAgICBpZiAoaFtpXSA9PT0gZSkgcmV0dXJuIGguc3BsaWNlKGksIDEpLCAxID09PSBuICYmIGRlbGV0ZSBhW3JdLCAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBlYWNoT2JqZWN0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgbiwgciwgcywgbywgYSwgaCwgbCA9IHRoaXMuX2dyaWQ7CiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gbCkgewogICAgICAgICAgICAgICAgICAgIG8gPSBsW2ldOwogICAgICAgICAgICAgICAgICAgIGZvciAobiBpbiBvKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBvW25dLCByID0gMCwgcyA9IGEubGVuZ3RoOyBzID4gcjsgcisrKSBoID0gZS5jYWxsKHQsIGFbcl0pLCBoICYmIChyLS0sIHMtLSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TmVhck9iamVjdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIGksIG4sIHIsIHMsIG8sIGEsIGgsIGwgPSB0aGlzLl9nZXRDb29yZChlLngpLAogICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLl9nZXRDb29yZChlLnkpLAogICAgICAgICAgICAgICAgICAgIF8gPSB0aGlzLl9vYmplY3RQb2ludCwKICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy5fc3FDZWxsU2l6ZSwKICAgICAgICAgICAgICAgICAgICBjID0gbnVsbDsKICAgICAgICAgICAgICAgIGZvciAodCA9IHUgLSAxOyB1ICsgMSA+PSB0OyB0KyspCiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0aGlzLl9ncmlkW3RdKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBsIC0gMTsgbCArIDEgPj0gaTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSByW2ldKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDAsIG8gPSBzLmxlbmd0aDsgbyA+IG47IG4rKykgYSA9IHNbbl0sIGggPSB0aGlzLl9zcURpc3QoX1tMLlV0aWwuc3RhbXAoYSldLCBlKSwgKGQgPiBoIHx8IGQgPj0gaCAmJiBudWxsID09PSBjKSAmJiAoZCA9IGgsIGMgPSBhKTsKICAgICAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRDb29yZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBNYXRoLmZsb29yKGUgLyB0aGlzLl9jZWxsU2l6ZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gaXNGaW5pdGUodCkgPyB0IDogZQogICAgICAgICAgICB9LAogICAgICAgICAgICBfc3FEaXN0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHQueCAtIGUueCwKICAgICAgICAgICAgICAgICAgICBuID0gdC55IC0gZS55OwogICAgICAgICAgICAgICAgcmV0dXJuIGkgKiBpICsgbiAqIG4KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIEwuUXVpY2tIdWxsID0gewogICAgICAgICAgICAgICAgZ2V0RGlzdGFudDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdFsxXS5sYXQgLSB0WzBdLmxhdCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRbMF0ubG5nIC0gdFsxXS5sbmc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gKiAoZS5sYXQgLSB0WzBdLmxhdCkgKyBpICogKGUubG5nIC0gdFswXS5sbmcpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmluZE1vc3REaXN0YW50UG9pbnRGcm9tQmFzZUxpbmU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgbiwgciwgcyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgbiA9IHRbaV0sIHIgPSB0aGlzLmdldERpc3RhbnQobiwgZSksIHIgPiAwICYmIChhLnB1c2gobiksIHIgPiBzICYmIChzID0gciwgbyA9IG4pKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBtYXhQb2ludDogbywKICAgICAgICAgICAgICAgICAgICAgICAgbmV3UG9pbnRzOiBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJ1aWxkQ29udmV4SHVsbDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmZpbmRNb3N0RGlzdGFudFBvaW50RnJvbUJhc2VMaW5lKGUsIHQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLm1heFBvaW50ID8gKGkgPSBpLmNvbmNhdCh0aGlzLmJ1aWxkQ29udmV4SHVsbChbZVswXSwgbi5tYXhQb2ludF0sIG4ubmV3UG9pbnRzKSksIGkgPSBpLmNvbmNhdCh0aGlzLmJ1aWxkQ29udmV4SHVsbChbbi5tYXhQb2ludCwgZVsxXV0sIG4ubmV3UG9pbnRzKSkpIDogW2VbMF1dCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0Q29udmV4SHVsbDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBpID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgXyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZS5sZW5ndGggLSAxOyB0ID49IDA7IHQtLSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIChpID09PSAhMSB8fCBkLmxhdCA+IGkpICYmIChvID0gZCwgaSA9IGQubGF0KSwgKG4gPT09ICExIHx8IGQubGF0IDwgbikgJiYgKGEgPSBkLCBuID0gZC5sYXQpLCAociA9PT0gITEgfHwgZC5sbmcgPiByKSAmJiAoaCA9IGQsIHIgPSBkLmxuZyksIChzID09PSAhMSB8fCBkLmxuZyA8IHMpICYmIChsID0gZCwgcyA9IGQubG5nKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBuICE9PSBpID8gKF8gPSBhLCB1ID0gbykgOiAoXyA9IGwsIHUgPSBoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IFtdLmNvbmNhdCh0aGlzLmJ1aWxkQ29udmV4SHVsbChbXywgdV0sIGUpLCB0aGlzLmJ1aWxkQ29udmV4SHVsbChbdSwgX10sIGUpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSgpLCBMLk1hcmtlckNsdXN0ZXIuaW5jbHVkZSh7CiAgICAgICAgICAgIGdldENvbnZleEh1bGw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQsIGkgPSB0aGlzLmdldEFsbENoaWxkTWFya2VycygpLAogICAgICAgICAgICAgICAgICAgIG4gPSBbXTsKICAgICAgICAgICAgICAgIGZvciAodCA9IGkubGVuZ3RoIC0gMTsgdCA+PSAwOyB0LS0pIGUgPSBpW3RdLmdldExhdExuZygpLCBuLnB1c2goZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gTC5RdWlja0h1bGwuZ2V0Q29udmV4SHVsbChuKQogICAgICAgICAgICB9CiAgICAgICAgfSksIEwuTWFya2VyQ2x1c3Rlci5pbmNsdWRlKHsKICAgICAgICAgICAgXzJQSTogMiAqIE1hdGguUEksCiAgICAgICAgICAgIF9jaXJjbGVGb290U2VwYXJhdGlvbjogMjUsCiAgICAgICAgICAgIF9jaXJjbGVTdGFydEFuZ2xlOiAwLAogICAgICAgICAgICBfc3BpcmFsRm9vdFNlcGFyYXRpb246IDI4LAogICAgICAgICAgICBfc3BpcmFsTGVuZ3RoU3RhcnQ6IDExLAogICAgICAgICAgICBfc3BpcmFsTGVuZ3RoRmFjdG9yOiA1LAogICAgICAgICAgICBfY2lyY2xlU3BpcmFsU3dpdGNob3ZlcjogOSwKICAgICAgICAgICAgc3BpZGVyZnk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dyb3VwLl9zcGlkZXJmaWVkICE9PSB0aGlzICYmICF0aGlzLl9ncm91cC5faW5ab29tQW5pbWF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQgPSB0aGlzLmdldEFsbENoaWxkTWFya2VycyhudWxsLCAhMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLl9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkuX21hcCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXAuX3Vuc3BpZGVyZnkoKSwgdGhpcy5fZ3JvdXAuX3NwaWRlcmZpZWQgPSB0aGlzLCB0Lmxlbmd0aCA+PSB0aGlzLl9jaXJjbGVTcGlyYWxTd2l0Y2hvdmVyID8gZSA9IHRoaXMuX2dlbmVyYXRlUG9pbnRzU3BpcmFsKHQubGVuZ3RoLCByKSA6IChyLnkgKz0gMTAsIGUgPSB0aGlzLl9nZW5lcmF0ZVBvaW50c0NpcmNsZSh0Lmxlbmd0aCwgcikpLCB0aGlzLl9hbmltYXRpb25TcGlkZXJmeSh0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICB1bnNwaWRlcmZ5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9ncm91cC5faW5ab29tQW5pbWF0aW9uIHx8ICh0aGlzLl9hbmltYXRpb25VbnNwaWRlcmZ5KGUpLCB0aGlzLl9ncm91cC5fc3BpZGVyZmllZCA9IG51bGwpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZW5lcmF0ZVBvaW50c0NpcmNsZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGksIG4sIHIgPSB0aGlzLl9ncm91cC5vcHRpb25zLnNwaWRlcmZ5RGlzdGFuY2VNdWx0aXBsaWVyICogdGhpcy5fY2lyY2xlRm9vdFNlcGFyYXRpb24gKiAoMiArIGUpLAogICAgICAgICAgICAgICAgICAgIHMgPSByIC8gdGhpcy5fMlBJLAogICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl8yUEkgLyBlLAogICAgICAgICAgICAgICAgICAgIGEgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAocyA9IE1hdGgubWF4KHMsIDM1KSwgYS5sZW5ndGggPSBlLCBpID0gMDsgZSA+IGk7IGkrKykgbiA9IHRoaXMuX2NpcmNsZVN0YXJ0QW5nbGUgKyBpICogbywgYVtpXSA9IG5ldyBMLlBvaW50KHQueCArIHMgKiBNYXRoLmNvcyhuKSwgdC55ICsgcyAqIE1hdGguc2luKG4pKS5fcm91bmQoKTsKICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZW5lcmF0ZVBvaW50c1NwaXJhbDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGksIG4gPSB0aGlzLl9ncm91cC5vcHRpb25zLnNwaWRlcmZ5RGlzdGFuY2VNdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgIHIgPSBuICogdGhpcy5fc3BpcmFsTGVuZ3RoU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgcyA9IG4gKiB0aGlzLl9zcGlyYWxGb290U2VwYXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICBvID0gbiAqIHRoaXMuX3NwaXJhbExlbmd0aEZhY3RvciAqIHRoaXMuXzJQSSwKICAgICAgICAgICAgICAgICAgICBhID0gMCwKICAgICAgICAgICAgICAgICAgICBoID0gW107CiAgICAgICAgICAgICAgICBmb3IgKGgubGVuZ3RoID0gZSwgaSA9IGU7IGkgPj0gMDsgaS0tKSBlID4gaSAmJiAoaFtpXSA9IG5ldyBMLlBvaW50KHQueCArIHIgKiBNYXRoLmNvcyhhKSwgdC55ICsgciAqIE1hdGguc2luKGEpKS5fcm91bmQoKSksIGEgKz0gcyAvIHIgKyA1ZS00ICogaSwgciArPSBvIC8gYTsKICAgICAgICAgICAgICAgIHJldHVybiBoCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9ub2FuaW1hdGlvblVuc3BpZGVyZnk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQsIGkgPSB0aGlzLl9ncm91cCwKICAgICAgICAgICAgICAgICAgICBuID0gaS5fbWFwLAogICAgICAgICAgICAgICAgICAgIHIgPSBpLl9mZWF0dXJlR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZ2V0QWxsQ2hpbGRNYXJrZXJzKG51bGwsICEwKTsKICAgICAgICAgICAgICAgIGZvciAoaS5faWdub3JlTW92ZSA9ICEwLCB0aGlzLnNldE9wYWNpdHkoMSksIHQgPSBzLmxlbmd0aCAtIDE7IHQgPj0gMDsgdC0tKSBlID0gc1t0XSwgci5yZW1vdmVMYXllcihlKSwgZS5fcHJlU3BpZGVyZnlMYXRsbmcgJiYgKGUuc2V0TGF0TG5nKGUuX3ByZVNwaWRlcmZ5TGF0bG5nKSwgZGVsZXRlIGUuX3ByZVNwaWRlcmZ5TGF0bG5nKSwgZS5zZXRaSW5kZXhPZmZzZXQgJiYgZS5zZXRaSW5kZXhPZmZzZXQoMCksIGUuX3NwaWRlckxlZyAmJiAobi5yZW1vdmVMYXllcihlLl9zcGlkZXJMZWcpLCBkZWxldGUgZS5fc3BpZGVyTGVnKTsKICAgICAgICAgICAgICAgIGkuZmlyZSgidW5zcGlkZXJmaWVkIiwgewogICAgICAgICAgICAgICAgICAgIGNsdXN0ZXI6IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgbWFya2VyczogcwogICAgICAgICAgICAgICAgfSksIGkuX2lnbm9yZU1vdmUgPSAhMSwgaS5fc3BpZGVyZmllZCA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0pLCBMLk1hcmtlckNsdXN0ZXJOb25BbmltYXRlZCA9IEwuTWFya2VyQ2x1c3Rlci5leHRlbmQoewogICAgICAgICAgICBfYW5pbWF0aW9uU3BpZGVyZnk6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBuLCByLCBzLCBvID0gdGhpcy5fZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgYSA9IG8uX21hcCwKICAgICAgICAgICAgICAgICAgICBoID0gby5fZmVhdHVyZUdyb3VwLAogICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLl9ncm91cC5vcHRpb25zLnNwaWRlckxlZ1BvbHlsaW5lT3B0aW9uczsKICAgICAgICAgICAgICAgIGZvciAoby5faWdub3JlTW92ZSA9ICEwLCBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIHMgPSBhLmxheWVyUG9pbnRUb0xhdExuZyh0W2ldKSwgbiA9IGVbaV0sIHIgPSBuZXcgTC5Qb2x5bGluZShbdGhpcy5fbGF0bG5nLCBzXSwgbCksIGEuYWRkTGF5ZXIociksIG4uX3NwaWRlckxlZyA9IHIsIG4uX3ByZVNwaWRlcmZ5TGF0bG5nID0gbi5fbGF0bG5nLCBuLnNldExhdExuZyhzKSwgbi5zZXRaSW5kZXhPZmZzZXQgJiYgbi5zZXRaSW5kZXhPZmZzZXQoMWU2KSwgaC5hZGRMYXllcihuKTsKICAgICAgICAgICAgICAgIHRoaXMuc2V0T3BhY2l0eSguMyksIG8uX2lnbm9yZU1vdmUgPSAhMSwgby5maXJlKCJzcGlkZXJmaWVkIiwgewogICAgICAgICAgICAgICAgICAgIGNsdXN0ZXI6IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgbWFya2VyczogZQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2FuaW1hdGlvblVuc3BpZGVyZnk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fbm9hbmltYXRpb25VbnNwaWRlcmZ5KCkKICAgICAgICAgICAgfQogICAgICAgIH0pLCBMLk1hcmtlckNsdXN0ZXIuaW5jbHVkZSh7CiAgICAgICAgICAgIF9hbmltYXRpb25TcGlkZXJmeTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGksIG4sIHIsIHMsIG8sIGEsIGggPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLl9ncm91cCwKICAgICAgICAgICAgICAgICAgICB1ID0gbC5fbWFwLAogICAgICAgICAgICAgICAgICAgIF8gPSBsLl9mZWF0dXJlR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuX2xhdGxuZywKICAgICAgICAgICAgICAgICAgICBjID0gdS5sYXRMbmdUb0xheWVyUG9pbnQoZCksCiAgICAgICAgICAgICAgICAgICAgcCA9IEwuUGF0aC5TVkcsCiAgICAgICAgICAgICAgICAgICAgZiA9IEwuZXh0ZW5kKHt9LCB0aGlzLl9ncm91cC5vcHRpb25zLnNwaWRlckxlZ1BvbHlsaW5lT3B0aW9ucyksCiAgICAgICAgICAgICAgICAgICAgbSA9IGYub3BhY2l0eTsKICAgICAgICAgICAgICAgIGZvciAodm9pZCAwID09PSBtICYmIChtID0gTC5NYXJrZXJDbHVzdGVyR3JvdXAucHJvdG90eXBlLm9wdGlvbnMuc3BpZGVyTGVnUG9seWxpbmVPcHRpb25zLm9wYWNpdHkpLCBwID8gKGYub3BhY2l0eSA9IDAsIGYuY2xhc3NOYW1lID0gKGYuY2xhc3NOYW1lIHx8ICIiKSArICIgbGVhZmxldC1jbHVzdGVyLXNwaWRlci1sZWciKSA6IGYub3BhY2l0eSA9IG0sIGwuX2lnbm9yZU1vdmUgPSAhMCwgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKSBuID0gZVtpXSwgYSA9IHUubGF5ZXJQb2ludFRvTGF0TG5nKHRbaV0pLCByID0gbmV3IEwuUG9seWxpbmUoW2QsIGFdLCBmKSwgdS5hZGRMYXllcihyKSwgbi5fc3BpZGVyTGVnID0gciwgcCAmJiAocyA9IHIuX3BhdGgsIG8gPSBzLmdldFRvdGFsTGVuZ3RoKCkgKyAuMSwgcy5zdHlsZS5zdHJva2VEYXNoYXJyYXkgPSBvLCBzLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBvKSwgbi5zZXRaSW5kZXhPZmZzZXQgJiYgbi5zZXRaSW5kZXhPZmZzZXQoMWU2KSwgbi5jbHVzdGVySGlkZSAmJiBuLmNsdXN0ZXJIaWRlKCksIF8uYWRkTGF5ZXIobiksIG4uX3NldFBvcyAmJiBuLl9zZXRQb3MoYyk7CiAgICAgICAgICAgICAgICBmb3IgKGwuX2ZvcmNlTGF5b3V0KCksIGwuX2FuaW1hdGlvblN0YXJ0KCksIGkgPSBlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBhID0gdS5sYXllclBvaW50VG9MYXRMbmcodFtpXSksIG4gPSBlW2ldLCBuLl9wcmVTcGlkZXJmeUxhdGxuZyA9IG4uX2xhdGxuZywgbi5zZXRMYXRMbmcoYSksIG4uY2x1c3RlclNob3cgJiYgbi5jbHVzdGVyU2hvdygpLCBwICYmIChyID0gbi5fc3BpZGVyTGVnLCBzID0gci5fcGF0aCwgcy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gMCwgci5zZXRTdHlsZSh7CiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogbQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgdGhpcy5zZXRPcGFjaXR5KC4zKSwgbC5faWdub3JlTW92ZSA9ICExLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGwuX2FuaW1hdGlvbkVuZCgpLCBsLmZpcmUoInNwaWRlcmZpZWQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXI6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnM6IGUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgMjAwKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYW5pbWF0aW9uVW5zcGlkZXJmeTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIGksIG4sIHIsIHMsIG8sIGEgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGggPSB0aGlzLl9ncm91cCwKICAgICAgICAgICAgICAgICAgICBsID0gaC5fbWFwLAogICAgICAgICAgICAgICAgICAgIHUgPSBoLl9mZWF0dXJlR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgXyA9IGUgPyBsLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLCBlLnpvb20sIGUuY2VudGVyKSA6IGwubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyksCiAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuZ2V0QWxsQ2hpbGRNYXJrZXJzKG51bGwsICEwKSwKICAgICAgICAgICAgICAgICAgICBjID0gTC5QYXRoLlNWRzsKICAgICAgICAgICAgICAgIGZvciAoaC5faWdub3JlTW92ZSA9ICEwLCBoLl9hbmltYXRpb25TdGFydCgpLCB0aGlzLnNldE9wYWNpdHkoMSksIGkgPSBkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB0ID0gZFtpXSwgdC5fcHJlU3BpZGVyZnlMYXRsbmcgJiYgKHQuY2xvc2VQb3B1cCgpLCB0LnNldExhdExuZyh0Ll9wcmVTcGlkZXJmeUxhdGxuZyksIGRlbGV0ZSB0Ll9wcmVTcGlkZXJmeUxhdGxuZywgbyA9ICEwLCB0Ll9zZXRQb3MgJiYgKHQuX3NldFBvcyhfKSwgbyA9ICExKSwgdC5jbHVzdGVySGlkZSAmJiAodC5jbHVzdGVySGlkZSgpLCBvID0gITEpLCBvICYmIHUucmVtb3ZlTGF5ZXIodCksIGMgJiYgKG4gPSB0Ll9zcGlkZXJMZWcsIHIgPSBuLl9wYXRoLCBzID0gci5nZXRUb3RhbExlbmd0aCgpICsgLjEsIHIuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IHMsIG4uc2V0U3R5bGUoewogICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICAgICAgICBoLl9pZ25vcmVNb3ZlID0gITEsIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHQgPSBkW2ldLCB0Ll9zcGlkZXJMZWcgJiYgZSsrOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHQgPSBkW2ldLCB0Ll9zcGlkZXJMZWcgJiYgKHQuY2x1c3RlclNob3cgJiYgdC5jbHVzdGVyU2hvdygpLCB0LnNldFpJbmRleE9mZnNldCAmJiB0LnNldFpJbmRleE9mZnNldCgwKSwgZSA+IDEgJiYgdS5yZW1vdmVMYXllcih0KSwgbC5yZW1vdmVMYXllcih0Ll9zcGlkZXJMZWcpLCBkZWxldGUgdC5fc3BpZGVyTGVnKTsKICAgICAgICAgICAgICAgICAgICBoLl9hbmltYXRpb25FbmQoKSwgaC5maXJlKCJ1bnNwaWRlcmZpZWQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnM6IGQKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgMjAwKQogICAgICAgICAgICB9CiAgICAgICAgfSksIEwuTWFya2VyQ2x1c3Rlckdyb3VwLmluY2x1ZGUoewogICAgICAgICAgICBfc3BpZGVyZmllZDogbnVsbCwKICAgICAgICAgICAgdW5zcGlkZXJmeTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl91bnNwaWRlcmZ5LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3NwaWRlcmZpZXJPbkFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9tYXAub24oImNsaWNrIiwgdGhpcy5fdW5zcGlkZXJmeVdyYXBwZXIsIHRoaXMpLCB0aGlzLl9tYXAub3B0aW9ucy56b29tQW5pbWF0aW9uICYmIHRoaXMuX21hcC5vbigiem9vbXN0YXJ0IiwgdGhpcy5fdW5zcGlkZXJmeVpvb21TdGFydCwgdGhpcyksIHRoaXMuX21hcC5vbigiem9vbWVuZCIsIHRoaXMuX25vYW5pbWF0aW9uVW5zcGlkZXJmeSwgdGhpcyksIEwuQnJvd3Nlci50b3VjaCB8fCB0aGlzLl9tYXAuZ2V0UmVuZGVyZXIodGhpcykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3NwaWRlcmZpZXJPblJlbW92ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9tYXAub2ZmKCJjbGljayIsIHRoaXMuX3Vuc3BpZGVyZnlXcmFwcGVyLCB0aGlzKSwgdGhpcy5fbWFwLm9mZigiem9vbXN0YXJ0IiwgdGhpcy5fdW5zcGlkZXJmeVpvb21TdGFydCwgdGhpcyksIHRoaXMuX21hcC5vZmYoInpvb21hbmltIiwgdGhpcy5fdW5zcGlkZXJmeVpvb21BbmltLCB0aGlzKSwgdGhpcy5fbWFwLm9mZigiem9vbWVuZCIsIHRoaXMuX25vYW5pbWF0aW9uVW5zcGlkZXJmeSwgdGhpcyksIHRoaXMuX25vYW5pbWF0aW9uVW5zcGlkZXJmeSgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91bnNwaWRlcmZ5Wm9vbVN0YXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21hcCAmJiB0aGlzLl9tYXAub24oInpvb21hbmltIiwgdGhpcy5fdW5zcGlkZXJmeVpvb21BbmltLCB0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdW5zcGlkZXJmeVpvb21BbmltOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBMLkRvbVV0aWwuaGFzQ2xhc3ModGhpcy5fbWFwLl9tYXBQYW5lLCAibGVhZmxldC10b3VjaGluZyIpIHx8ICh0aGlzLl9tYXAub2ZmKCJ6b29tYW5pbSIsIHRoaXMuX3Vuc3BpZGVyZnlab29tQW5pbSwgdGhpcyksIHRoaXMuX3Vuc3BpZGVyZnkoZSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91bnNwaWRlcmZ5V3JhcHBlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl91bnNwaWRlcmZ5KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3Vuc3BpZGVyZnk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3NwaWRlcmZpZWQgJiYgdGhpcy5fc3BpZGVyZmllZC51bnNwaWRlcmZ5KGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9ub2FuaW1hdGlvblVuc3BpZGVyZnk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fc3BpZGVyZmllZCAmJiB0aGlzLl9zcGlkZXJmaWVkLl9ub2FuaW1hdGlvblVuc3BpZGVyZnkoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdW5zcGlkZXJmeUxheWVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLl9zcGlkZXJMZWcgJiYgKHRoaXMuX2ZlYXR1cmVHcm91cC5yZW1vdmVMYXllcihlKSwgZS5jbHVzdGVyU2hvdyAmJiBlLmNsdXN0ZXJTaG93KCksIGUuc2V0WkluZGV4T2Zmc2V0ICYmIGUuc2V0WkluZGV4T2Zmc2V0KDApLCB0aGlzLl9tYXAucmVtb3ZlTGF5ZXIoZS5fc3BpZGVyTGVnKSwgZGVsZXRlIGUuX3NwaWRlckxlZykKICAgICAgICAgICAgfQogICAgICAgIH0pLCBMLk1hcmtlckNsdXN0ZXJHcm91cC5pbmNsdWRlKHsKICAgICAgICAgICAgcmVmcmVzaENsdXN0ZXJzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA/IGUgaW5zdGFuY2VvZiBMLk1hcmtlckNsdXN0ZXJHcm91cCA/IGUgPSBlLl90b3BDbHVzdGVyTGV2ZWwuZ2V0QWxsQ2hpbGRNYXJrZXJzKCkgOiBlIGluc3RhbmNlb2YgTC5MYXllckdyb3VwID8gZSA9IGUuX2xheWVycyA6IGUgaW5zdGFuY2VvZiBMLk1hcmtlckNsdXN0ZXIgPyBlID0gZS5nZXRBbGxDaGlsZE1hcmtlcnMoKSA6IGUgaW5zdGFuY2VvZiBMLk1hcmtlciAmJiAoZSA9IFtlXSkgOiBlID0gdGhpcy5fdG9wQ2x1c3RlckxldmVsLmdldEFsbENoaWxkTWFya2VycygpLCB0aGlzLl9mbGFnUGFyZW50c0ljb25zTmVlZFVwZGF0ZShlKSwgdGhpcy5fcmVmcmVzaENsdXN0ZXJzSWNvbnMoKSwgdGhpcy5vcHRpb25zLnNpbmdsZU1hcmtlck1vZGUgJiYgdGhpcy5fcmVmcmVzaFNpbmdsZU1hcmtlck1vZGVNYXJrZXJzKGUpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9mbGFnUGFyZW50c0ljb25zTmVlZFVwZGF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIGk7CiAgICAgICAgICAgICAgICBmb3IgKHQgaW4gZSkKICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBlW3RdLl9fcGFyZW50OyBpOykgaS5faWNvbk5lZWRzVXBkYXRlID0gITAsIGkgPSBpLl9fcGFyZW50CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9yZWZyZXNoU2luZ2xlTWFya2VyTW9kZU1hcmtlcnM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBpOwogICAgICAgICAgICAgICAgZm9yICh0IGluIGUpIGkgPSBlW3RdLCB0aGlzLmhhc0xheWVyKGkpICYmIGkuc2V0SWNvbih0aGlzLl9vdmVycmlkZU1hcmtlckljb24oaSkpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgTC5NYXJrZXIuaW5jbHVkZSh7CiAgICAgICAgICAgIHJlZnJlc2hJY29uT3B0aW9uczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLm9wdGlvbnMuaWNvbjsKICAgICAgICAgICAgICAgIHJldHVybiBMLnNldE9wdGlvbnMoaSwgZSksIHRoaXMuc2V0SWNvbihpKSwgdCAmJiB0aGlzLl9fcGFyZW50ICYmIHRoaXMuX19wYXJlbnQuX2dyb3VwLnJlZnJlc2hDbHVzdGVycyh0aGlzKSwgdGhpcwogICAgICAgICAgICB9CiAgICAgICAgfSksIGUuTWFya2VyQ2x1c3Rlckdyb3VwID0gdCwgZS5NYXJrZXJDbHVzdGVyID0gaQp9KTs="}},"time_used":1060,"timings":{"blocked":962,"dns":0,"connect":0,"send":0,"wait":97,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/imagesloaded.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.476Z","timestamp":1785145482476,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/imagesloaded.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Sat, 13 Jun 2020 18:53:27 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","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":5629,"size_decoded":2377,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (5477)","md5":"3a56752b736635bf69cb069b8818cbfd","sha1":"42e0951fe74bb3f56a30f51291823bcd4a84d76e","sha256":"ff4bd34aa98a0214833619d3d751838db015722dfbbec15cd14dadc66cd67869","sha512":"a255d61de4e6cec2084aae0f027ccc0259039aef62268a27072c8097d348d76bb725ca35563386ceb068387c9ad3ab0e331bd270ba754a38a2a2d33944f305f5","ssdeep":"96:PwRxr6JAXgWWwrrSTrmM4KvlGC89QPjRxq2uVBXeHRGKrc4oPUGPgNhd+qLoBV7J:Pwjrycrr3rKvE9IjRxjGjgNhdTLo3re+","tlshash":"90c122cd77a27535229af0b3a21f020f72b6406e6918815d7959ecf65cfcd192633bb0","first_seen":"2023-03-07T01:02:40Z","last_seen":"2026-07-27T13:52:26.884454Z","times_seen":23323,"resource_available":true,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwovKiEKICogaW1hZ2VzTG9hZGVkIFBBQ0tBR0VEIHY0LjEuNAogKiBKYXZhU2NyaXB0IGlzIGFsbCBsaWtlICJZb3UgaW1hZ2VzIGFyZSBkb25lIHlldCBvciB3aGF0PyIKICogTUlUIExpY2Vuc2UKICovCgohZnVuY3Rpb24oZSx0KXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiZXYtZW1pdHRlci9ldi1lbWl0dGVyIix0KToib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dCgpOmUuRXZFbWl0dGVyPXQoKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXZhciB0PWUucHJvdG90eXBlO3JldHVybiB0Lm9uPWZ1bmN0aW9uKGUsdCl7aWYoZSYmdCl7dmFyIGk9dGhpcy5fZXZlbnRzPXRoaXMuX2V2ZW50c3x8e30sbj1pW2VdPWlbZV18fFtdO3JldHVybiBuLmluZGV4T2YodCk9PS0xJiZuLnB1c2godCksdGhpc319LHQub25jZT1mdW5jdGlvbihlLHQpe2lmKGUmJnQpe3RoaXMub24oZSx0KTt2YXIgaT10aGlzLl9vbmNlRXZlbnRzPXRoaXMuX29uY2VFdmVudHN8fHt9LG49aVtlXT1pW2VdfHx7fTtyZXR1cm4gblt0XT0hMCx0aGlzfX0sdC5vZmY9ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLl9ldmVudHMmJnRoaXMuX2V2ZW50c1tlXTtpZihpJiZpLmxlbmd0aCl7dmFyIG49aS5pbmRleE9mKHQpO3JldHVybiBuIT0tMSYmaS5zcGxpY2UobiwxKSx0aGlzfX0sdC5lbWl0RXZlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLl9ldmVudHMmJnRoaXMuX2V2ZW50c1tlXTtpZihpJiZpLmxlbmd0aCl7aT1pLnNsaWNlKDApLHQ9dHx8W107Zm9yKHZhciBuPXRoaXMuX29uY2VFdmVudHMmJnRoaXMuX29uY2VFdmVudHNbZV0sbz0wO288aS5sZW5ndGg7bysrKXt2YXIgcj1pW29dLHM9biYmbltyXTtzJiYodGhpcy5vZmYoZSxyKSxkZWxldGUgbltyXSksci5hcHBseSh0aGlzLHQpfXJldHVybiB0aGlzfX0sdC5hbGxPZmY9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fZXZlbnRzLGRlbGV0ZSB0aGlzLl9vbmNlRXZlbnRzfSxlfSksZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJldi1lbWl0dGVyL2V2LWVtaXR0ZXIiXSxmdW5jdGlvbihpKXtyZXR1cm4gdChlLGkpfSk6Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPXQoZSxyZXF1aXJlKCJldi1lbWl0dGVyIikpOmUuaW1hZ2VzTG9hZGVkPXQoZSxlLkV2RW1pdHRlcil9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgaSBpbiB0KWVbaV09dFtpXTtyZXR1cm4gZX1mdW5jdGlvbiBuKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7dmFyIHQ9Im9iamVjdCI9PXR5cGVvZiBlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoO3JldHVybiB0P2QuY2FsbChlKTpbZV19ZnVuY3Rpb24gbyhlLHQscil7aWYoISh0aGlzIGluc3RhbmNlb2YgbykpcmV0dXJuIG5ldyBvKGUsdCxyKTt2YXIgcz1lO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKSkscz8odGhpcy5lbGVtZW50cz1uKHMpLHRoaXMub3B0aW9ucz1pKHt9LHRoaXMub3B0aW9ucyksImZ1bmN0aW9uIj09dHlwZW9mIHQ/cj10OmkodGhpcy5vcHRpb25zLHQpLHImJnRoaXMub24oImFsd2F5cyIsciksdGhpcy5nZXRJbWFnZXMoKSxoJiYodGhpcy5qcURlZmVycmVkPW5ldyBoLkRlZmVycmVkKSx2b2lkIHNldFRpbWVvdXQodGhpcy5jaGVjay5iaW5kKHRoaXMpKSk6dm9pZCBhLmVycm9yKCJCYWQgZWxlbWVudCBmb3IgaW1hZ2VzTG9hZGVkICIrKHN8fGUpKX1mdW5jdGlvbiByKGUpe3RoaXMuaW1nPWV9ZnVuY3Rpb24gcyhlLHQpe3RoaXMudXJsPWUsdGhpcy5lbGVtZW50PXQsdGhpcy5pbWc9bmV3IEltYWdlfXZhciBoPWUualF1ZXJ5LGE9ZS5jb25zb2xlLGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlO28ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpLG8ucHJvdG90eXBlLm9wdGlvbnM9e30sby5wcm90b3R5cGUuZ2V0SW1hZ2VzPWZ1bmN0aW9uKCl7dGhpcy5pbWFnZXM9W10sdGhpcy5lbGVtZW50cy5mb3JFYWNoKHRoaXMuYWRkRWxlbWVudEltYWdlcyx0aGlzKX0sby5wcm90b3R5cGUuYWRkRWxlbWVudEltYWdlcz1mdW5jdGlvbihlKXsiSU1HIj09ZS5ub2RlTmFtZSYmdGhpcy5hZGRJbWFnZShlKSx0aGlzLm9wdGlvbnMuYmFja2dyb3VuZD09PSEwJiZ0aGlzLmFkZEVsZW1lbnRCYWNrZ3JvdW5kSW1hZ2VzKGUpO3ZhciB0PWUubm9kZVR5cGU7aWYodCYmdVt0XSl7Zm9yKHZhciBpPWUucXVlcnlTZWxlY3RvckFsbCgiaW1nIiksbj0wO248aS5sZW5ndGg7bisrKXt2YXIgbz1pW25dO3RoaXMuYWRkSW1hZ2Uobyl9aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZCl7dmFyIHI9ZS5xdWVyeVNlbGVjdG9yQWxsKHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kKTtmb3Iobj0wO248ci5sZW5ndGg7bisrKXt2YXIgcz1yW25dO3RoaXMuYWRkRWxlbWVudEJhY2tncm91bmRJbWFnZXMocyl9fX19O3ZhciB1PXsxOiEwLDk6ITAsMTE6ITB9O3JldHVybiBvLnByb3RvdHlwZS5hZGRFbGVtZW50QmFja2dyb3VuZEltYWdlcz1mdW5jdGlvbihlKXt2YXIgdD1nZXRDb21wdXRlZFN0eWxlKGUpO2lmKHQpZm9yKHZhciBpPS91cmxcKChbJyJdKT8oLio/KVwxXCkvZ2ksbj1pLmV4ZWModC5iYWNrZ3JvdW5kSW1hZ2UpO251bGwhPT1uOyl7dmFyIG89biYmblsyXTtvJiZ0aGlzLmFkZEJhY2tncm91bmQobyxlKSxuPWkuZXhlYyh0LmJhY2tncm91bmRJbWFnZSl9fSxvLnByb3RvdHlwZS5hZGRJbWFnZT1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcihlKTt0aGlzLmltYWdlcy5wdXNoKHQpfSxvLnByb3RvdHlwZS5hZGRCYWNrZ3JvdW5kPWZ1bmN0aW9uKGUsdCl7dmFyIGk9bmV3IHMoZSx0KTt0aGlzLmltYWdlcy5wdXNoKGkpfSxvLnByb3RvdHlwZS5jaGVjaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxpLG4pe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnByb2dyZXNzKGUsaSxuKX0pfXZhciB0PXRoaXM7cmV0dXJuIHRoaXMucHJvZ3Jlc3NlZENvdW50PTAsdGhpcy5oYXNBbnlCcm9rZW49ITEsdGhpcy5pbWFnZXMubGVuZ3RoP3ZvaWQgdGhpcy5pbWFnZXMuZm9yRWFjaChmdW5jdGlvbih0KXt0Lm9uY2UoInByb2dyZXNzIixlKSx0LmNoZWNrKCl9KTp2b2lkIHRoaXMuY29tcGxldGUoKX0sby5wcm90b3R5cGUucHJvZ3Jlc3M9ZnVuY3Rpb24oZSx0LGkpe3RoaXMucHJvZ3Jlc3NlZENvdW50KyssdGhpcy5oYXNBbnlCcm9rZW49dGhpcy5oYXNBbnlCcm9rZW58fCFlLmlzTG9hZGVkLHRoaXMuZW1pdEV2ZW50KCJwcm9ncmVzcyIsW3RoaXMsZSx0XSksdGhpcy5qcURlZmVycmVkJiZ0aGlzLmpxRGVmZXJyZWQubm90aWZ5JiZ0aGlzLmpxRGVmZXJyZWQubm90aWZ5KHRoaXMsZSksdGhpcy5wcm9ncmVzc2VkQ291bnQ9PXRoaXMuaW1hZ2VzLmxlbmd0aCYmdGhpcy5jb21wbGV0ZSgpLHRoaXMub3B0aW9ucy5kZWJ1ZyYmYSYmYS5sb2coInByb2dyZXNzOiAiK2ksZSx0KX0sby5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhhc0FueUJyb2tlbj8iZmFpbCI6ImRvbmUiO2lmKHRoaXMuaXNDb21wbGV0ZT0hMCx0aGlzLmVtaXRFdmVudChlLFt0aGlzXSksdGhpcy5lbWl0RXZlbnQoImFsd2F5cyIsW3RoaXNdKSx0aGlzLmpxRGVmZXJyZWQpe3ZhciB0PXRoaXMuaGFzQW55QnJva2VuPyJyZWplY3QiOiJyZXNvbHZlIjt0aGlzLmpxRGVmZXJyZWRbdF0odGhpcyl9fSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jaGVjaz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0SXNJbWFnZUNvbXBsZXRlKCk7cmV0dXJuIGU/dm9pZCB0aGlzLmNvbmZpcm0oMCE9PXRoaXMuaW1nLm5hdHVyYWxXaWR0aCwibmF0dXJhbFdpZHRoIik6KHRoaXMucHJveHlJbWFnZT1uZXcgSW1hZ2UsdGhpcy5wcm94eUltYWdlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHRoaXMpLHRoaXMucHJveHlJbWFnZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsdGhpcyksdGhpcy5pbWcuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsdGhpcyksdGhpcy5pbWcuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHRoaXMpLHZvaWQodGhpcy5wcm94eUltYWdlLnNyYz10aGlzLmltZy5zcmMpKX0sci5wcm90b3R5cGUuZ2V0SXNJbWFnZUNvbXBsZXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW1nLmNvbXBsZXRlJiZ0aGlzLmltZy5uYXR1cmFsV2lkdGh9LHIucHJvdG90eXBlLmNvbmZpcm09ZnVuY3Rpb24oZSx0KXt0aGlzLmlzTG9hZGVkPWUsdGhpcy5lbWl0RXZlbnQoInByb2dyZXNzIixbdGhpcyx0aGlzLmltZyx0XSl9LHIucHJvdG90eXBlLmhhbmRsZUV2ZW50PWZ1bmN0aW9uKGUpe3ZhciB0PSJvbiIrZS50eXBlO3RoaXNbdF0mJnRoaXNbdF0oZSl9LHIucHJvdG90eXBlLm9ubG9hZD1mdW5jdGlvbigpe3RoaXMuY29uZmlybSghMCwib25sb2FkIiksdGhpcy51bmJpbmRFdmVudHMoKX0sci5wcm90b3R5cGUub25lcnJvcj1mdW5jdGlvbigpe3RoaXMuY29uZmlybSghMSwib25lcnJvciIpLHRoaXMudW5iaW5kRXZlbnRzKCl9LHIucHJvdG90eXBlLnVuYmluZEV2ZW50cz1mdW5jdGlvbigpe3RoaXMucHJveHlJbWFnZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIix0aGlzKSx0aGlzLnByb3h5SW1hZ2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHRoaXMpLHRoaXMuaW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHRoaXMpLHRoaXMuaW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIix0aGlzKX0scy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyLnByb3RvdHlwZSkscy5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24oKXt0aGlzLmltZy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIix0aGlzKSx0aGlzLmltZy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsdGhpcyksdGhpcy5pbWcuc3JjPXRoaXMudXJsO3ZhciBlPXRoaXMuZ2V0SXNJbWFnZUNvbXBsZXRlKCk7ZSYmKHRoaXMuY29uZmlybSgwIT09dGhpcy5pbWcubmF0dXJhbFdpZHRoLCJuYXR1cmFsV2lkdGgiKSx0aGlzLnVuYmluZEV2ZW50cygpKX0scy5wcm90b3R5cGUudW5iaW5kRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5pbWcucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsdGhpcyksdGhpcy5pbWcucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHRoaXMpfSxzLnByb3RvdHlwZS5jb25maXJtPWZ1bmN0aW9uKGUsdCl7dGhpcy5pc0xvYWRlZD1lLHRoaXMuZW1pdEV2ZW50KCJwcm9ncmVzcyIsW3RoaXMsdGhpcy5lbGVtZW50LHRdKX0sby5tYWtlSlF1ZXJ5UGx1Z2luPWZ1bmN0aW9uKHQpe3Q9dHx8ZS5qUXVlcnksdCYmKGg9dCxoLmZuLmltYWdlc0xvYWRlZD1mdW5jdGlvbihlLHQpe3ZhciBpPW5ldyBvKHRoaXMsZSx0KTtyZXR1cm4gaS5qcURlZmVycmVkLnByb21pc2UoaCh0aGlzKSl9KX0sby5tYWtlSlF1ZXJ5UGx1Z2luKCksb30pOw=="}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/select2/select2.full.min.js?ver=4.0.5","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.479Z","timestamp":1785145482479,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/select2/select2.full.min.js?ver=4.0.5 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 156575\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":156575,"size_decoded":156793,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (347)","md5":"21867462fe5e24b626ec0495536beb74","sha1":"cd8c3f889a8b49bd807505d24d8fbca417f355fe","sha256":"cb562ebd1f09f2a064c8eed6409c03c0b452bef8728e1c67fd57d787d66ae900","sha512":"d8038e20197b0c25b6f0f46a2c717e5346f0ebf72ac2a4b09ad9469cb26cfe4269286470be57c01f50ed3fa9307549b5816c907db9a16cc3c93c4ae51707b29b","ssdeep":"1536:GPrwlu3iXauB7rm5JtWH5282Sn1wv1hQWc5Ar2N+i5o:GtPtLs81hQWc5Ax","tlshash":"34e32f49eaf3293791177025996f58047231843f5d49bd883a0c86ec5f2c83e97bafad","first_seen":"2026-07-27T08:06:56.561974Z","last_seen":"2026-07-27T09:45:50.964791Z","times_seen":3,"resource_available":true,"data":"LyohIFNlbGVjdDIgNC4wLjUgfCBodHRwczovL2dpdGh1Yi5jb20vc2VsZWN0Mi9zZWxlY3QyL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQgKi8gISBmdW5jdGlvbihhKSB7CiAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImpxdWVyeSJdLCBhKSA6ICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUgJiYgbW9kdWxlLmV4cG9ydHMgPyBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICByZXR1cm4gdm9pZCAwID09PSBjICYmIChjID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyA/IHJlcXVpcmUoImpxdWVyeSIpIDogcmVxdWlyZSgianF1ZXJ5IikoYikpLCBhKGMpLCBjCiAgICB9IDogYShqUXVlcnkpCn0oZnVuY3Rpb24oYSkgewogICAgdmFyIGIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKGEgJiYgYS5mbiAmJiBhLmZuLnNlbGVjdDIgJiYgYS5mbi5zZWxlY3QyLmFtZCkgdmFyIGIgPSBhLmZuLnNlbGVjdDIuYW1kOwogICAgICAgICAgICB2YXIgYjsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICghYiB8fCAhYi5yZXF1aXJlanMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYiA/IGMgPSBiIDogYiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSwgYywgZDsKICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi5jYWxsKGEsIGIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwsIG0sIG4sIG8gPSBiICYmIGIuc3BsaXQoIi8iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHQubWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gcCAmJiBwWyIqIl0gfHwge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gYS5zcGxpdCgiLyIpLCBnID0gYS5sZW5ndGggLSAxLCB0Lm5vZGVJZENvbXBhdCAmJiB4LnRlc3QoYVtnXSkgJiYgKGFbZ10gPSBhW2ddLnJlcGxhY2UoeCwgIiIpKSwgIi4iID09PSBhWzBdLmNoYXJBdCgwKSAmJiBvICYmIChuID0gby5zbGljZSgwLCBvLmxlbmd0aCAtIDEpLCBhID0gbi5jb25jYXQoYSkpLCBrID0gMDsgayA8IGEubGVuZ3RoOyBrKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIi4iID09PSAobSA9IGFba10pKSBhLnNwbGljZShrLCAxKSwgayAtPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIi4uIiA9PT0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGsgfHwgMSA9PT0gayAmJiAiLi4iID09PSBhWzJdIHx8ICIuLiIgPT09IGFbayAtIDFdKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPiAwICYmIChhLnNwbGljZShrIC0gMSwgMiksIGsgLT0gMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gYS5qb2luKCIvIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvIHx8IHEpICYmIHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gYS5zcGxpdCgiLyIpLCBrID0gYy5sZW5ndGg7IGsgPiAwOyBrIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkID0gYy5zbGljZSgwLCBrKS5qb2luKCIvIiksIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gby5sZW5ndGg7IGwgPiAwOyBsIC09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZSA9IHBbby5zbGljZSgwLCBsKS5qb2luKCIvIildKSAmJiAoZSA9IGVbZF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZSwgaCA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZikgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaSAmJiBxICYmIHFbZF0gJiYgKGkgPSBxW2RdLCBqID0gaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSFmICYmIGkgJiYgKGYgPSBpLCBoID0gaiksIGYgJiYgKGMuc3BsaWNlKDAsIGgsIGYpLCBhID0gYy5qb2luKCIvIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHcuY2FsbChhcmd1bWVudHMsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIGRbMF0gJiYgMSA9PT0gZC5sZW5ndGggJiYgZC5wdXNoKG51bGwpLCBvLmFwcGx5KGIsIGQuY29uY2F0KFthLCBjXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGgoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmKGIsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbYV0gPSBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGooYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKHMsIGEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gc1thXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNbYV0sIHVbYV0gPSAhMCwgbi5hcHBseShiLCBjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUociwgYSkgJiYgIWUodSwgYSkpIHRocm93IG5ldyBFcnJvcigiTm8gIiArIGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByW2FdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gayhhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIsIGMgPSBhID8gYS5pbmRleE9mKCIhIikgOiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyA+IC0xICYmIChiID0gYS5zdWJzdHJpbmcoMCwgYyksIGEgPSBhLnN1YnN0cmluZyhjICsgMSwgYS5sZW5ndGgpKSwgW2IsIGFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPyBrKGEpIDogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIHQuY29uZmlnICYmIHQuY29uZmlnW2FdIHx8IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIG8sIHAsIHEsIHIgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gW10uc2xpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IC9cLmpzJC87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjLCBkID0gayhhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGRbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBiWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gZFsxXSwgZSAmJiAoZSA9IGYoZSwgZyksIGMgPSBqKGUpKSwgZSA/IGEgPSBjICYmIGMubm9ybWFsaXplID8gYy5ub3JtYWxpemUoYSwgaChnKSkgOiBmKGEsIGcpIDogKGEgPSBmKGEsIGcpLCBkID0gayhhKSwgZSA9IGRbMF0sIGEgPSBkWzFdLCBlICYmIChjID0gaihlKSkpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IGUgPyBlICsgIiEiICsgYSA6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwOiBjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gclthXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gYiA/IGIgOiByW2FdID0ge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZTogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmk6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogclthXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogbShhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbiA9IGZ1bmN0aW9uKGEsIGMsIGQsIGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCwgaywgbSwgbiwgbywgdCwgdiwgdyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gdHlwZW9mIGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBmIHx8IGEsIHQgPSBsKGYpLCAidW5kZWZpbmVkIiA9PT0geCB8fCAiZnVuY3Rpb24iID09PSB4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9ICFjLmxlbmd0aCAmJiBkLmxlbmd0aCA/IFsicmVxdWlyZSIsICJleHBvcnRzIiwgIm1vZHVsZSJdIDogYywgbyA9IDA7IG8gPCBjLmxlbmd0aDsgbyArPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBwKGNbb10sIHQpLCAicmVxdWlyZSIgPT09IChrID0gbi5mKSkgd1tvXSA9IHEucmVxdWlyZShhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJleHBvcnRzIiA9PT0gaykgd1tvXSA9IHEuZXhwb3J0cyhhKSwgdiA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgibW9kdWxlIiA9PT0gaykgaCA9IHdbb10gPSBxLm1vZHVsZShhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZShyLCBrKSB8fCBlKHMsIGspIHx8IGUodSwgaykpIHdbb10gPSBqKGspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbi5wKSB0aHJvdyBuZXcgRXJyb3IoYSArICIgbWlzc2luZyAiICsgayk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnAubG9hZChuLm4sIGcoZiwgITApLCBpKGspLCB7fSksIHdbb10gPSByW2tdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGQgPyBkLmFwcGx5KHJbYV0sIHcpIDogdm9pZCAwLCBhICYmIChoICYmIGguZXhwb3J0cyAhPT0gYiAmJiBoLmV4cG9ydHMgIT09IHJbYV0gPyByW2FdID0gaC5leHBvcnRzIDogbSA9PT0gYiAmJiB2IHx8IChyW2FdID0gbSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGEgJiYgKHJbYV0gPSBkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYSA9IGMgPSBvID0gZnVuY3Rpb24oYSwgYywgZCwgZSwgZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgYSkgcmV0dXJuIHFbYV0gPyBxW2FdKGMpIDogaihwKGEsIGwoYykpLmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYS5zcGxpY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBhLCB0LmRlcHMgJiYgbyh0LmRlcHMsIHQuY2FsbGJhY2spLCAhYykgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnNwbGljZSA/IChhID0gYywgYyA9IGQsIGQgPSBudWxsKSA6IGEgPSBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjID0gYyB8fCBmdW5jdGlvbigpIHt9LCAiZnVuY3Rpb24iID09IHR5cGVvZiBkICYmIChkID0gZSwgZSA9IGYpLCBlID8gbihiLCBhLCBjLCBkKSA6IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4oYiwgYSwgYywgZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA0KSwgbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgby5jb25maWcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8oYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEuX2RlZmluZWQgPSByLCBkID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgYSkgdGhyb3cgbmV3IEVycm9yKCJTZWUgYWxtb25kIFJFQURNRTogaW5jb3JyZWN0IG1vZHVsZSBidWlsZCwgbm8gbW9kdWxlIG5hbWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLnNwbGljZSB8fCAoYyA9IGIsIGIgPSBbXSksIGUociwgYSkgfHwgZShzLCBhKSB8fCAoc1thXSA9IFthLCBiLCBjXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGQuYW1kID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSgpLCBiLnJlcXVpcmVqcyA9IGEsIGIucmVxdWlyZSA9IGMsIGIuZGVmaW5lID0gZAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oKSwgYi5kZWZpbmUoImFsbW9uZCIsIGZ1bmN0aW9uKCkge30pLCBiLmRlZmluZSgianF1ZXJ5IiwgW10sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBiID0gYSB8fCAkOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGIgJiYgY29uc29sZSAmJiBjb25zb2xlLmVycm9yICYmIGNvbnNvbGUuZXJyb3IoIlNlbGVjdDI6IEFuIGluc3RhbmNlIG9mIGpRdWVyeSBvciBhIGpRdWVyeS1jb21wYXRpYmxlIGxpYnJhcnkgd2FzIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHRoYXQgeW91IGFyZSBpbmNsdWRpbmcgalF1ZXJ5IGJlZm9yZSBTZWxlY3QyIG9uIHlvdXIgd2ViIHBhZ2UuIiksIGIKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi91dGlscyIsIFsianF1ZXJ5Il0sIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCBpbiBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBiW2RdICYmICgiY29uc3RydWN0b3IiICE9PSBkICYmIGMucHVzaChkKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHt9OwogICAgICAgICAgICAgICAgICAgIGMuRXh0ZW5kID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHt9Lmhhc093blByb3BlcnR5OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIGIpIGQuY2FsbChiLCBlKSAmJiAoYVtlXSA9IGJbZV0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgYS5wcm90b3R5cGUgPSBuZXcgYywgYS5fX3N1cGVyX18gPSBiLnByb3RvdHlwZSwgYQogICAgICAgICAgICAgICAgICAgIH0sIGMuRGVjb3JhdGUgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEucHJvdG90eXBlLmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA+IDAgJiYgKGIuY2FsbChhcmd1bWVudHMsIGEucHJvdG90eXBlLmNvbnN0cnVjdG9yKSwgZSA9IGMucHJvdG90eXBlLmNvbnN0cnVjdG9yKSwgZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gYihjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBiKGEpOwogICAgICAgICAgICAgICAgICAgICAgICBjLmRpc3BsYXlOYW1lID0gYS5kaXNwbGF5TmFtZSwgZC5wcm90b3R5cGUgPSBuZXcgZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaCA9IDA7IGggPCBnLmxlbmd0aDsgaCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGdbaF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnByb3RvdHlwZVtpXSA9IGEucHJvdG90eXBlW2ldCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IChmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBmdW5jdGlvbigpIHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgaW4gZC5wcm90b3R5cGUgJiYgKGIgPSBkLnByb3RvdHlwZVthXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBjLnByb3RvdHlwZVthXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKGFyZ3VtZW50cywgYiksIGUuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBrID0gMDsgayA8IGYubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gZltrXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHJvdG90eXBlW2xdID0gaihsKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVycyA9IHt9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5wcm90b3R5cGUub24gPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnMgfHwge30sIGEgaW4gdGhpcy5saXN0ZW5lcnMgPyB0aGlzLmxpc3RlbmVyc1thXS5wdXNoKGIpIDogdGhpcy5saXN0ZW5lcnNbYV0gPSBbYl0KICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IEFycmF5LnByb3RvdHlwZS5zbGljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBiLmNhbGwoYXJndW1lbnRzLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycyB8fCB7fSwgbnVsbCA9PSBjICYmIChjID0gW10pLCAwID09PSBjLmxlbmd0aCAmJiBjLnB1c2goe30pLCBjWzBdLl90eXBlID0gYSwgYSBpbiB0aGlzLmxpc3RlbmVycyAmJiB0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1thXSwgYi5jYWxsKGFyZ3VtZW50cywgMSkpLCAiKiIgaW4gdGhpcy5saXN0ZW5lcnMgJiYgdGhpcy5pbnZva2UodGhpcy5saXN0ZW5lcnNbIioiXSwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgIH0sIGQucHJvdG90eXBlLmludm9rZSA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDAsIGQgPSBhLmxlbmd0aDsgYyA8IGQ7IGMrKykgYVtjXS5hcHBseSh0aGlzLCBiKQogICAgICAgICAgICAgICAgICAgIH0sIGMuT2JzZXJ2YWJsZSA9IGQsIGMuZ2VuZXJhdGVDaGFycyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYiA9ICIiLCBjID0gMDsgYyA8IGE7IGMrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiArPSBNYXRoLmZsb29yKDM2ICogTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIKICAgICAgICAgICAgICAgICAgICB9LCBjLmJpbmQgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuYXBwbHkoYiwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgYy5fY29udmVydERhdGEgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGIgaW4gYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBiLnNwbGl0KCItIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSAhPT0gYy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IGMubGVuZ3RoOyBlKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBjW2VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZi5zdWJzdHJpbmcoMCwgMSkudG9Mb3dlckNhc2UoKSArIGYuc3Vic3RyaW5nKDEpLCBmIGluIGQgfHwgKGRbZl0gPSB7fSksIGUgPT0gYy5sZW5ndGggLSAxICYmIChkW2ZdID0gYVtiXSksIGQgPSBkW2ZdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhW2JdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICB9LCBjLmhhc1Njcm9sbCA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBhKGMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGMuc3R5bGUub3ZlcmZsb3dYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGMuc3R5bGUub3ZlcmZsb3dZOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUgIT09IGYgfHwgImhpZGRlbiIgIT09IGYgJiYgInZpc2libGUiICE9PSBmKSAmJiAoInNjcm9sbCIgPT09IGUgfHwgInNjcm9sbCIgPT09IGYgfHwgKGQuaW5uZXJIZWlnaHQoKSA8IGMuc2Nyb2xsSGVpZ2h0IHx8IGQuaW5uZXJXaWR0aCgpIDwgYy5zY3JvbGxXaWR0aCkpCiAgICAgICAgICAgICAgICAgICAgfSwgYy5lc2NhcGVNYXJrdXAgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcIjogIiYjOTI7IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICImIjogIiZhbXA7IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8IjogIiZsdDsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIj4iOiAiJmd0OyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIic6ICImcXVvdDsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiciOiAiJiMzOTsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iOiAiJiM0NzsiCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgYSA/IGEgOiBTdHJpbmcoYSkucmVwbGFjZSgvWyY8PiInXC9cXF0vZywgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJbYV0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBjLmFwcGVuZE1hbnkgPSBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiMS43IiA9PT0gYS5mbi5qcXVlcnkuc3Vic3RyKDAsIDMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEubWFwKGMsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZC5hZGQoYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBjID0gZAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGIuYXBwZW5kKGMpCiAgICAgICAgICAgICAgICAgICAgfSwgYwogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL3Jlc3VsdHMiLCBbImpxdWVyeSIsICIuL3V0aWxzIl0sIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGEsIGIsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudCA9IGEsIHRoaXMuZGF0YSA9IGQsIHRoaXMub3B0aW9ucyA9IGIsIGMuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuRXh0ZW5kKGMsIGIuT2JzZXJ2YWJsZSksIGMucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEoJzx1bCBjbGFzcz0ic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIiByb2xlPSJ0cmVlIj48L3VsPicpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCgibXVsdGlwbGUiKSAmJiBiLmF0dHIoImFyaWEtbXVsdGlzZWxlY3RhYmxlIiwgInRydWUiKSwgdGhpcy4kcmVzdWx0cyA9IGIsIGIKICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZXN1bHRzLmVtcHR5KCkKICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS5kaXNwbGF5TWVzc2FnZSA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLm9wdGlvbnMuZ2V0KCJlc2NhcGVNYXJrdXAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpLCB0aGlzLmhpZGVMb2FkaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gYSgnPGxpIHJvbGU9InRyZWVpdGVtIiBhcmlhLWxpdmU9ImFzc2VydGl2ZSIgY2xhc3M9InNlbGVjdDItcmVzdWx0c19fb3B0aW9uIj48L2xpPicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMub3B0aW9ucy5nZXQoInRyYW5zbGF0aW9ucyIpLmdldChiLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZChjKGUoYi5hcmdzKSkpLCBkWzBdLmNsYXNzTmFtZSArPSAiIHNlbGVjdDItcmVzdWx0c19fbWVzc2FnZSIsIHRoaXMuJHJlc3VsdHMuYXBwZW5kKGQpCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuaGlkZU1lc3NhZ2VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0c19fbWVzc2FnZSIpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGEucmVzdWx0cyB8fCAwID09PSBhLnJlc3VsdHMubGVuZ3RoKSByZXR1cm4gdm9pZCgwID09PSB0aGlzLiRyZXN1bHRzLmNoaWxkcmVuKCkubGVuZ3RoICYmIHRoaXMudHJpZ2dlcigicmVzdWx0czptZXNzYWdlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIm5vUmVzdWx0cyIKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICBhLnJlc3VsdHMgPSB0aGlzLnNvcnQoYS5yZXN1bHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBhLnJlc3VsdHMubGVuZ3RoOyBjKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gYS5yZXN1bHRzW2NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLm9wdGlvbihkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIucHVzaChlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlc3VsdHMuYXBwZW5kKGIpCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuZmluZCgiLnNlbGVjdDItcmVzdWx0cyIpLmFwcGVuZChhKQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLnNvcnQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCJzb3J0ZXIiKShhKQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLmhpZ2hsaWdodEZpcnN0SXRlbSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuJHJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYS5maWx0ZXIoIlthcmlhLXNlbGVjdGVkPXRydWVdIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGIubGVuZ3RoID4gMCA/IGIuZmlyc3QoKS50cmlnZ2VyKCJtb3VzZWVudGVyIikgOiBhLmZpcnN0KCkudHJpZ2dlcigibW91c2VlbnRlciIpLCB0aGlzLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLnNldENsYXNzZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEuY3VycmVudChmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEubWFwKGMsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5pZC50b1N0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuJHJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhLmRhdGEodGhpcywgImRhdGEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9ICIiICsgYy5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGMuZWxlbWVudCAmJiBjLmVsZW1lbnQuc2VsZWN0ZWQgfHwgbnVsbCA9PSBjLmVsZW1lbnQgJiYgYS5pbkFycmF5KGUsIGQpID4gLTEgPyBiLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIpIDogYi5hdHRyKCJhcmlhLXNlbGVjdGVkIiwgImZhbHNlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuc2hvd0xvYWRpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUxvYWRpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzLm9wdGlvbnMuZ2V0KCJ0cmFuc2xhdGlvbnMiKS5nZXQoInNlYXJjaGluZyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogYihhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLm9wdGlvbihjKTsKICAgICAgICAgICAgICAgICAgICAgICAgZC5jbGFzc05hbWUgKz0gIiBsb2FkaW5nLXJlc3VsdHMiLCB0aGlzLiRyZXN1bHRzLnByZXBlbmQoZCkKICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS5oaWRlTG9hZGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZXN1bHRzLmZpbmQoIi5sb2FkaW5nLXJlc3VsdHMiKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLm9wdGlvbiA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwogICAgICAgICAgICAgICAgICAgICAgICBjLmNsYXNzTmFtZSA9ICJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogInRyZWVpdGVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLXNlbGVjdGVkIjogImZhbHNlIgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBiLmRpc2FibGVkICYmIChkZWxldGUgZFsiYXJpYS1zZWxlY3RlZCJdLCBkWyJhcmlhLWRpc2FibGVkIl0gPSAidHJ1ZSIpLCBudWxsID09IGIuaWQgJiYgZGVsZXRlIGRbImFyaWEtc2VsZWN0ZWQiXSwgbnVsbCAhPSBiLl9yZXN1bHRJZCAmJiAoYy5pZCA9IGIuX3Jlc3VsdElkKSwgYi50aXRsZSAmJiAoYy50aXRsZSA9IGIudGl0bGUpLCBiLmNoaWxkcmVuICYmIChkLnJvbGUgPSAiZ3JvdXAiLCBkWyJhcmlhLWxhYmVsIl0gPSBiLnRleHQsIGRlbGV0ZSBkWyJhcmlhLXNlbGVjdGVkIl0pOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gZFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0QXR0cmlidXRlKGUsIGYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIuY2hpbGRyZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gYShjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Ryb25nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmNsYXNzTmFtZSA9ICJzZWxlY3QyLXJlc3VsdHNfX2dyb3VwIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEoaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlKGIsIGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IFtdLCBqID0gMDsgaiA8IGIuY2hpbGRyZW4ubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgayA9IGIuY2hpbGRyZW5bal0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLm9wdGlvbihrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnB1c2gobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gYSgiPHVsPjwvdWw+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHNlbGVjdDItcmVzdWx0c19fb3B0aW9ucy0tbmVzdGVkIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmFwcGVuZChpKSwgZy5hcHBlbmQoaCksIGcuYXBwZW5kKG0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLnRlbXBsYXRlKGIsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhKGMsICJkYXRhIiwgYiksIGMKICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYi5pZCArICItcmVzdWx0cyI7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlc3VsdHMuYXR0cigiaWQiLCBlKSwgYi5vbigicmVzdWx0czphbGwiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmNsZWFyKCksIGQuYXBwZW5kKGEuZGF0YSksIGIuaXNPcGVuKCkgJiYgKGQuc2V0Q2xhc3NlcygpLCBkLmhpZ2hsaWdodEZpcnN0SXRlbSgpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigicmVzdWx0czphcHBlbmQiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZChhLmRhdGEpLCBiLmlzT3BlbigpICYmIGQuc2V0Q2xhc3NlcygpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBiLm9uKCJxdWVyeSIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuaGlkZU1lc3NhZ2VzKCksIGQuc2hvd0xvYWRpbmcoYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGIub24oInNlbGVjdCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5pc09wZW4oKSAmJiAoZC5zZXRDbGFzc2VzKCksIGQuaGlnaGxpZ2h0Rmlyc3RJdGVtKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBiLm9uKCJ1bnNlbGVjdCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5pc09wZW4oKSAmJiAoZC5zZXRDbGFzc2VzKCksIGQuaGlnaGxpZ2h0Rmlyc3RJdGVtKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBiLm9uKCJvcGVuIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLiRyZXN1bHRzLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAidHJ1ZSIpLCBkLiRyZXN1bHRzLmF0dHIoImFyaWEtaGlkZGVuIiwgImZhbHNlIiksIGQuc2V0Q2xhc3NlcygpLCBkLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigiY2xvc2UiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuJHJlc3VsdHMuYXR0cigiYXJpYS1leHBhbmRlZCIsICJmYWxzZSIpLCBkLiRyZXN1bHRzLmF0dHIoImFyaWEtaGlkZGVuIiwgInRydWUiKSwgZC4kcmVzdWx0cy5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigicmVzdWx0czp0b2dnbGUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZC5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgIT09IGEubGVuZ3RoICYmIGEudHJpZ2dlcigibW91c2V1cCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBiLm9uKCJyZXN1bHRzOnNlbGVjdCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IGEubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhLmRhdGEoImRhdGEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJ1ZSIgPT0gYS5hdHRyKCJhcmlhLXNlbGVjdGVkIikgPyBkLnRyaWdnZXIoImNsb3NlIiwge30pIDogZC50cmlnZ2VyKCJzZWxlY3QiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigicmVzdWx0czpwcmV2aW91cyIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBkLiRyZXN1bHRzLmZpbmQoIlthcmlhLXNlbGVjdGVkXSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBiLmluZGV4KGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IGEubGVuZ3RoICYmIChlID0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBiLmVxKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYudHJpZ2dlcigibW91c2VlbnRlciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZC4kcmVzdWx0cy5vZmZzZXQoKS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmLm9mZnNldCgpLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGQuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyAoaCAtIGcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IGUgPyBkLiRyZXN1bHRzLnNjcm9sbFRvcCgwKSA6IGggLSBnIDwgMCAmJiBkLiRyZXN1bHRzLnNjcm9sbFRvcChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigicmVzdWx0czpuZXh0IiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGQuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGQuJHJlc3VsdHMuZmluZCgiW2FyaWEtc2VsZWN0ZWRdIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGIuaW5kZXgoYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGMgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSA+PSBiLmxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGIuZXEoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi50cmlnZ2VyKCJtb3VzZWVudGVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBkLiRyZXN1bHRzLm9mZnNldCgpLnRvcCArIGQuJHJlc3VsdHMub3V0ZXJIZWlnaHQoITEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZi5vZmZzZXQoKS50b3AgKyBmLm91dGVySGVpZ2h0KCExKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGQuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyBoIC0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBlID8gZC4kcmVzdWx0cy5zY3JvbGxUb3AoMCkgOiBoID4gZyAmJiBkLiRyZXN1bHRzLnNjcm9sbFRvcChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigicmVzdWx0czpmb2N1cyIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZWxlbWVudC5hZGRDbGFzcygic2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGIub24oInJlc3VsdHM6bWVzc2FnZSIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZGlzcGxheU1lc3NhZ2UoYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEuZm4ubW91c2V3aGVlbCAmJiB0aGlzLiRyZXN1bHRzLm9uKCJtb3VzZXdoZWVsIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBkLiRyZXN1bHRzLnNjcm9sbFRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBkLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQgLSBiICsgYS5kZWx0YVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEuZGVsdGFZID4gMCAmJiBiIC0gYS5kZWx0YVkgPD0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYS5kZWx0YVkgPCAwICYmIGMgPD0gZC4kcmVzdWx0cy5oZWlnaHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPyAoZC4kcmVzdWx0cy5zY3JvbGxUb3AoMCksIGEucHJldmVudERlZmF1bHQoKSwgYS5zdG9wUHJvcGFnYXRpb24oKSkgOiBmICYmIChkLiRyZXN1bHRzLnNjcm9sbFRvcChkLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQgLSBkLiRyZXN1bHRzLmhlaWdodCgpKSwgYS5wcmV2ZW50RGVmYXVsdCgpLCBhLnN0b3BQcm9wYWdhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kcmVzdWx0cy5vbigibW91c2V1cCIsICIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF0iLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGMuZGF0YSgiZGF0YSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ0cnVlIiA9PT0gYy5hdHRyKCJhcmlhLXNlbGVjdGVkIikpIHJldHVybiB2b2lkKGQub3B0aW9ucy5nZXQoIm11bHRpcGxlIikgPyBkLnRyaWdnZXIoInVuc2VsZWN0IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBkLnRyaWdnZXIoImNsb3NlIiwge30pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQudHJpZ2dlcigic2VsZWN0IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuJHJlc3VsdHMub24oIm1vdXNlZW50ZXIiLCAiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIiwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBhKHRoaXMpLmRhdGEoImRhdGEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCkucmVtb3ZlQ2xhc3MoInNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCIpLCBkLnRyaWdnZXIoInJlc3VsdHM6Zm9jdXMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBhKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLmdldEhpZ2hsaWdodGVkUmVzdWx0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kcmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkIikKICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlc3VsdHMucmVtb3ZlKCkKICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS5lbnN1cmVIaWdobGlnaHRWaXNpYmxlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IGEubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuJHJlc3VsdHMuZmluZCgiW2FyaWEtc2VsZWN0ZWRdIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGIuaW5kZXgoYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuJHJlc3VsdHMub2Zmc2V0KCkudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBhLm9mZnNldCgpLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AoKSArIChlIC0gZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGUgLSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAtPSAyICogYS5vdXRlckhlaWdodCghMSksIGMgPD0gMiA/IHRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKDApIDogKGcgPiB0aGlzLiRyZXN1bHRzLm91dGVySGVpZ2h0KCkgfHwgZyA8IDApICYmIHRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKGYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS50ZW1wbGF0ZSA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLm9wdGlvbnMuZ2V0KCJ0ZW1wbGF0ZVJlc3VsdCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMub3B0aW9ucy5nZXQoImVzY2FwZU1hcmt1cCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGQoYiwgYyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gZiA/IGMuc3R5bGUuZGlzcGxheSA9ICJub25lIiA6ICJzdHJpbmciID09IHR5cGVvZiBmID8gYy5pbm5lckhUTUwgPSBlKGYpIDogYShjKS5hcHBlbmQoZikKICAgICAgICAgICAgICAgICAgICB9LCBjCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIva2V5cyIsIFtdLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBCQUNLU1BBQ0U6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIFRBQjogOSwKICAgICAgICAgICAgICAgICAgICAgICAgRU5URVI6IDEzLAogICAgICAgICAgICAgICAgICAgICAgICBTSElGVDogMTYsCiAgICAgICAgICAgICAgICAgICAgICAgIENUUkw6IDE3LAogICAgICAgICAgICAgICAgICAgICAgICBBTFQ6IDE4LAogICAgICAgICAgICAgICAgICAgICAgICBFU0M6IDI3LAogICAgICAgICAgICAgICAgICAgICAgICBTUEFDRTogMzIsCiAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfVVA6IDMzLAogICAgICAgICAgICAgICAgICAgICAgICBQQUdFX0RPV046IDM0LAogICAgICAgICAgICAgICAgICAgICAgICBFTkQ6IDM1LAogICAgICAgICAgICAgICAgICAgICAgICBIT01FOiAzNiwKICAgICAgICAgICAgICAgICAgICAgICAgTEVGVDogMzcsCiAgICAgICAgICAgICAgICAgICAgICAgIFVQOiAzOCwKICAgICAgICAgICAgICAgICAgICAgICAgUklHSFQ6IDM5LAogICAgICAgICAgICAgICAgICAgICAgICBET1dOOiA0MCwKICAgICAgICAgICAgICAgICAgICAgICAgREVMRVRFOiA0NgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vYmFzZSIsIFsianF1ZXJ5IiwgIi4uL3V0aWxzIiwgIi4uL2tleXMiXSwgZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50ID0gYSwgdGhpcy5vcHRpb25zID0gYiwgZC5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5FeHRlbmQoZCwgYi5PYnNlcnZhYmxlKSwgZC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYSgnPHNwYW4gY2xhc3M9InNlbGVjdDItc2VsZWN0aW9uIiByb2xlPSJjb21ib2JveCIgIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj48L3NwYW4+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90YWJpbmRleCA9IDAsIG51bGwgIT0gdGhpcy4kZWxlbWVudC5kYXRhKCJvbGQtdGFiaW5kZXgiKSA/IHRoaXMuX3RhYmluZGV4ID0gdGhpcy4kZWxlbWVudC5kYXRhKCJvbGQtdGFiaW5kZXgiKSA6IG51bGwgIT0gdGhpcy4kZWxlbWVudC5hdHRyKCJ0YWJpbmRleCIpICYmICh0aGlzLl90YWJpbmRleCA9IHRoaXMuJGVsZW1lbnQuYXR0cigidGFiaW5kZXgiKSksIGIuYXR0cigidGl0bGUiLCB0aGlzLiRlbGVtZW50LmF0dHIoInRpdGxlIikpLCBiLmF0dHIoInRhYmluZGV4IiwgdGhpcy5fdGFiaW5kZXgpLCB0aGlzLiRzZWxlY3Rpb24gPSBiLCBiCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IChhLmlkLCBhLmlkICsgIi1yZXN1bHRzIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gYSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJmb2N1cyIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQudHJpZ2dlcigiZm9jdXMiLCBhKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJibHVyIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5faGFuZGxlQmx1cihhKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJrZXlkb3duIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC50cmlnZ2VyKCJrZXlwcmVzcyIsIGEpLCBhLndoaWNoID09PSBjLlNQQUNFICYmIGEucHJldmVudERlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYS5vbigicmVzdWx0czpmb2N1cyIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuJHNlbGVjdGlvbi5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLCBhLmRhdGEuX3Jlc3VsdElkKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYS5vbigic2VsZWN0aW9uOnVwZGF0ZSIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQudXBkYXRlKGEuZGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEub24oIm9wZW4iLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuJHNlbGVjdGlvbi5hdHRyKCJhcmlhLWV4cGFuZGVkIiwgInRydWUiKSwgZC4kc2VsZWN0aW9uLmF0dHIoImFyaWEtb3ducyIsIGUpLCBkLl9hdHRhY2hDbG9zZUhhbmRsZXIoYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEub24oImNsb3NlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLiRzZWxlY3Rpb24uYXR0cigiYXJpYS1leHBhbmRlZCIsICJmYWxzZSIpLCBkLiRzZWxlY3Rpb24ucmVtb3ZlQXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IiksIGQuJHNlbGVjdGlvbi5yZW1vdmVBdHRyKCJhcmlhLW93bnMiKSwgZC4kc2VsZWN0aW9uLmZvY3VzKCksIGQuX2RldGFjaENsb3NlSGFuZGxlcihhKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYS5vbigiZW5hYmxlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLiRzZWxlY3Rpb24uYXR0cigidGFiaW5kZXgiLCBkLl90YWJpbmRleCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEub24oImRpc2FibGUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuJHNlbGVjdGlvbi5hdHRyKCJ0YWJpbmRleCIsICItMSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUuX2hhbmRsZUJsdXIgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGMuJHNlbGVjdGlvblswXSB8fCBhLmNvbnRhaW5zKGMuJHNlbGVjdGlvblswXSwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkgfHwgYy50cmlnZ2VyKCJibHVyIiwgYikKICAgICAgICAgICAgICAgICAgICAgICAgfSwgMSkKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5fYXR0YWNoQ2xvc2VIYW5kbGVyID0gZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICBhKGRvY3VtZW50LmJvZHkpLm9uKCJtb3VzZWRvd24uc2VsZWN0Mi4iICsgYi5pZCwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBhKGIudGFyZ2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYy5jbG9zZXN0KCIuc2VsZWN0MiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSgiLnNlbGVjdDIuc2VsZWN0Mi1jb250YWluZXItLW9wZW4iKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzICE9IGRbMF0gJiYgYi5kYXRhKCJlbGVtZW50Iikuc2VsZWN0MigiY2xvc2UiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5fZGV0YWNoQ2xvc2VIYW5kbGVyID0gZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICBhKGRvY3VtZW50LmJvZHkpLm9mZigibW91c2Vkb3duLnNlbGVjdDIuIiArIGIuaWQpCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuZmluZCgiLnNlbGVjdGlvbiIpLmFwcGVuZChhKQogICAgICAgICAgICAgICAgICAgIH0sIGQucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGV0YWNoQ2xvc2VIYW5kbGVyKHRoaXMuY29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgIH0sIGQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUaGUgYHVwZGF0ZWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLiIpCiAgICAgICAgICAgICAgICAgICAgfSwgZAogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL3NlbGVjdGlvbi9zaW5nbGUiLCBbImpxdWVyeSIsICIuL2Jhc2UiLCAiLi4vdXRpbHMiLCAiLi4va2V5cyJdLCBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5FeHRlbmQoZSwgYiksIGUucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5hZGRDbGFzcygic2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSIpLCBhLmh0bWwoJzxzcGFuIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IiByb2xlPSJwcmVzZW50YXRpb24iPjxiIHJvbGU9InByZXNlbnRhdGlvbiI+PC9iPjwvc3Bhbj4nKSwgYQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3N1cGVyX18uYmluZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEuaWQgKyAiLWNvbnRhaW5lciI7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIikuYXR0cigiaWQiLCBkKSwgdGhpcy4kc2VsZWN0aW9uLmF0dHIoImFyaWEtbGFiZWxsZWRieSIsIGQpLCB0aGlzLiRzZWxlY3Rpb24ub24oIm1vdXNlZG93biIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IGEud2hpY2ggJiYgYy50cmlnZ2VyKCJ0b2dnbGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuJHNlbGVjdGlvbi5vbigiZm9jdXMiLCBmdW5jdGlvbihhKSB7fSksIHRoaXMuJHNlbGVjdGlvbi5vbigiYmx1ciIsIGZ1bmN0aW9uKGEpIHt9KSwgYS5vbigiZm9jdXMiLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmlzT3BlbigpIHx8IGMuJHNlbGVjdGlvbi5mb2N1cygpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhLm9uKCJzZWxlY3Rpb246dXBkYXRlIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYy51cGRhdGUoYS5kYXRhKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIikuZW1wdHkoKQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmRpc3BsYXkgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdGhpcy5vcHRpb25zLmdldCgidGVtcGxhdGVTZWxlY3Rpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoImVzY2FwZU1hcmt1cCIpKGMoYSwgYikpCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKCI8c3Bhbj48L3NwYW4+IikKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBhLmxlbmd0aCkgcmV0dXJuIHZvaWQgdGhpcy5jbGVhcigpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGFbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLmRpc3BsYXkoYiwgYyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGMuZW1wdHkoKS5hcHBlbmQoZCksIGMucHJvcCgidGl0bGUiLCBiLnRpdGxlIHx8IGIudGV4dCkKICAgICAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvc2VsZWN0aW9uL211bHRpcGxlIiwgWyJqcXVlcnkiLCAiLi9iYXNlIiwgIi4uL3V0aWxzIl0sIGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5FeHRlbmQoZCwgYiksIGQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGQuX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5hZGRDbGFzcygic2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIiksIGEuaHRtbCgnPHVsIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiPjwvdWw+JyksIGEKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJjbGljayIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudHJpZ2dlcigidG9nZ2xlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRzZWxlY3Rpb24ub24oImNsaWNrIiwgIi5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmUiLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUub3B0aW9ucy5nZXQoImRpc2FibGVkIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjLnBhcmVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZC5kYXRhKCJkYXRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50cmlnZ2VyKCJ1bnNlbGVjdCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiKS5lbXB0eSgpCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUuZGlzcGxheSA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLm9wdGlvbnMuZ2V0KCJ0ZW1wbGF0ZVNlbGVjdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCgiZXNjYXBlTWFya3VwIikoYyhhLCBiKSkKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEoJzxsaSBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSI+PHNwYW4gY2xhc3M9InNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZSIgcm9sZT0icHJlc2VudGF0aW9uIj4mdGltZXM7PC9zcGFuPjwvbGk+JykKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsZWFyKCksIDAgIT09IGEubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBiID0gW10sIGQgPSAwOyBkIDwgYS5sZW5ndGg7IGQrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYVtkXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMuc2VsZWN0aW9uQ29udGFpbmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0aGlzLmRpc3BsYXkoZSwgZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5hcHBlbmQoZyksIGYucHJvcCgidGl0bGUiLCBlLnRpdGxlIHx8IGUudGV4dCksIGYuZGF0YSgiZGF0YSIsIGUpLCBiLnB1c2goZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuYXBwZW5kTWFueShoLCBiKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgZAogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL3NlbGVjdGlvbi9wbGFjZWhvbGRlciIsIFsiLi4vdXRpbHMiXSwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihjLmdldCgicGxhY2Vob2xkZXIiKSksIGEuY2FsbCh0aGlzLCBiLCBjKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXIgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgYiAmJiAoYiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGIKICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5jcmVhdGVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5odG1sKHRoaXMuZGlzcGxheShiKSksIGMuYWRkQ2xhc3MoInNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlIiksIGMKICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gMSA9PSBiLmxlbmd0aCAmJiBiWzBdLmlkICE9IHRoaXMucGxhY2Vob2xkZXIuaWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLmxlbmd0aCA+IDEgfHwgYykgcmV0dXJuIGEuY2FsbCh0aGlzLCBiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuY3JlYXRlUGxhY2Vob2xkZXIodGhpcy5wbGFjZWhvbGRlcik7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIikuYXBwZW5kKGQpCiAgICAgICAgICAgICAgICAgICAgfSwgYgogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL3NlbGVjdGlvbi9hbGxvd0NsZWFyIiwgWyJqcXVlcnkiLCAiLi4va2V5cyJdLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYygpIHt9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKHRoaXMsIGIsIGMpLCBudWxsID09IHRoaXMucGxhY2Vob2xkZXIgJiYgdGhpcy5vcHRpb25zLmdldCgiZGVidWciKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yICYmIGNvbnNvbGUuZXJyb3IoIlNlbGVjdDI6IFRoZSBgYWxsb3dDbGVhcmAgb3B0aW9uIHNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGBwbGFjZWhvbGRlcmAgb3B0aW9uLiIpLCB0aGlzLiRzZWxlY3Rpb24ub24oIm1vdXNlZG93biIsICIuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5faGFuZGxlQ2xlYXIoYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGIub24oImtleXByZXNzIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5faGFuZGxlS2V5Ym9hcmRDbGVhcihhLCBiKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLl9oYW5kbGVDbGVhciA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZ2V0KCJkaXNhYmxlZCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gYy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSBjLmRhdGEoImRhdGEiKSwgZSA9IDA7IGUgPCBkLmxlbmd0aDsgZSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZFtlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyKCJ1bnNlbGVjdCIsIGYpLCBmLnByZXZlbnRlZCkgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQudmFsKHRoaXMucGxhY2Vob2xkZXIuaWQpLnRyaWdnZXIoImNoYW5nZSIpLCB0aGlzLnRyaWdnZXIoInRvZ2dsZSIsIHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuX2hhbmRsZUtleWJvYXJkQ2xlYXIgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuaXNPcGVuKCkgfHwgYy53aGljaCAhPSBiLkRFTEVURSAmJiBjLndoaWNoICE9IGIuQkFDS1NQQUNFIHx8IHRoaXMuX2hhbmRsZUNsZWFyKGMpCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYi5jYWxsKHRoaXMsIGMpLCAhKHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIikubGVuZ3RoID4gMCB8fCAwID09PSBjLmxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gYSgnPHNwYW4gY2xhc3M9InNlbGVjdDItc2VsZWN0aW9uX19jbGVhciI+JnRpbWVzOzwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZGF0YSgiZGF0YSIsIGMpLCB0aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLnByZXBlbmQoZCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGMKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vc2VhcmNoIiwgWyJqcXVlcnkiLCAiLi4vdXRpbHMiLCAiLi4va2V5cyJdLCBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2FsbCh0aGlzLCBiLCBjKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEoJzxsaSBjbGFzcz0ic2VsZWN0Mi1zZWFyY2ggc2VsZWN0Mi1zZWFyY2gtLWlubGluZSI+PGlucHV0IGNsYXNzPSJzZWxlY3QyLXNlYXJjaF9fZmllbGQiIHR5cGU9InNlYXJjaCIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiIgYXV0b2NvcnJlY3Q9Im9mZiIgYXV0b2NhcGl0YWxpemU9Im5vbmUiIHNwZWxsY2hlY2s9ImZhbHNlIiByb2xlPSJ0ZXh0Ym94IiBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIgLz48L2xpPicpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZWFyY2hDb250YWluZXIgPSBjLCB0aGlzLiRzZWFyY2ggPSBjLmZpbmQoImlucHV0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gYi5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmZXJUYWJJbmRleCgpLCBkCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGEsIGIsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBhLmNhbGwodGhpcywgYiwgZCksIGIub24oIm9wZW4iLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuJHNlYXJjaC50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBiLm9uKCJjbG9zZSIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS4kc2VhcmNoLnZhbCgiIiksIGUuJHNlYXJjaC5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKSwgZS4kc2VhcmNoLnRyaWdnZXIoImZvY3VzIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGIub24oImVuYWJsZSIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS4kc2VhcmNoLnByb3AoImRpc2FibGVkIiwgITEpLCBlLl90cmFuc2ZlclRhYkluZGV4KCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGIub24oImRpc2FibGUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuJHNlYXJjaC5wcm9wKCJkaXNhYmxlZCIsICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigiZm9jdXMiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLiRzZWFyY2gudHJpZ2dlcigiZm9jdXMiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigicmVzdWx0czpmb2N1cyIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuJHNlYXJjaC5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLCBhLmlkKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJmb2N1c2luIiwgIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50cmlnZ2VyKCJmb2N1cyIsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRzZWxlY3Rpb24ub24oImZvY3Vzb3V0IiwgIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5faGFuZGxlQmx1cihhKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJrZXlkb3duIiwgIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEuc3RvcFByb3BhZ2F0aW9uKCksIGUudHJpZ2dlcigia2V5cHJlc3MiLCBhKSwgZS5fa2V5VXBQcmV2ZW50ZWQgPSBhLmlzRGVmYXVsdFByZXZlbnRlZCgpLCBhLndoaWNoID09PSBjLkJBQ0tTUEFDRSAmJiAiIiA9PT0gZS4kc2VhcmNoLnZhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBlLiRzZWFyY2hDb250YWluZXIucHJldigiLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYi5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gYi5kYXRhKCJkYXRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2VhcmNoUmVtb3ZlQ2hvaWNlKGQpLCBhLnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGRvY3VtZW50LmRvY3VtZW50TW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBmICYmIGYgPD0gMTE7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNlbGVjdGlvbi5vbigiaW5wdXQuc2VhcmNoY2hlY2siLCAiLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZykgcmV0dXJuIHZvaWQgZS4kc2VsZWN0aW9uLm9mZigiaW5wdXQuc2VhcmNoIGlucHV0LnNlYXJjaGNoZWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLiRzZWxlY3Rpb24ub2ZmKCJrZXl1cC5zZWFyY2giKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJrZXl1cC5zZWFyY2ggaW5wdXQuc2VhcmNoIiwgIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgJiYgImlucHV0IiA9PT0gYS50eXBlKSByZXR1cm4gdm9pZCBlLiRzZWxlY3Rpb24ub2ZmKCJpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2siKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS53aGljaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgIT0gYy5TSElGVCAmJiBiICE9IGMuQ1RSTCAmJiBiICE9IGMuQUxUICYmIGIgIT0gYy5UQUIgJiYgZS5oYW5kbGVTZWFyY2goYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5fdHJhbnNmZXJUYWJJbmRleCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2VhcmNoLmF0dHIoInRhYmluZGV4IiwgdGhpcy4kc2VsZWN0aW9uLmF0dHIoInRhYmluZGV4IikpLCB0aGlzLiRzZWxlY3Rpb24uYXR0cigidGFiaW5kZXgiLCAiLTEiKQogICAgICAgICAgICAgICAgICAgIH0sIGQucHJvdG90eXBlLmNyZWF0ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZWFyY2guYXR0cigicGxhY2Vob2xkZXIiLCBiLnRleHQpCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXMuJHNlYXJjaFswXSA9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZWFyY2guYXR0cigicGxhY2Vob2xkZXIiLCAiIiksIGEuY2FsbCh0aGlzLCBiKSwgdGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiKS5hcHBlbmQodGhpcy4kc2VhcmNoQ29udGFpbmVyKSwgdGhpcy5yZXNpemVTZWFyY2goKSwgYyAmJiB0aGlzLiRzZWFyY2guZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIH0sIGQucHJvdG90eXBlLmhhbmRsZVNlYXJjaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXNpemVTZWFyY2goKSwgIXRoaXMuX2tleVVwUHJldmVudGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuJHNlYXJjaC52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigicXVlcnkiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybTogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlVcFByZXZlbnRlZCA9ICExCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUuc2VhcmNoUmVtb3ZlQ2hvaWNlID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoInVuc2VsZWN0IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogYgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kc2VhcmNoLnZhbChiLnRleHQpLCB0aGlzLmhhbmRsZVNlYXJjaCgpCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUucmVzaXplU2VhcmNoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNlYXJjaC5jc3MoIndpZHRoIiwgIjI1cHgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIiICE9PSB0aGlzLiRzZWFyY2guYXR0cigicGxhY2Vob2xkZXIiKSkgYSA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIikuaW5uZXJXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAuNzUgKiAodGhpcy4kc2VhcmNoLnZhbCgpLmxlbmd0aCArIDEpICsgImVtIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNlYXJjaC5jc3MoIndpZHRoIiwgYSkKICAgICAgICAgICAgICAgICAgICB9LCBkCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvc2VsZWN0aW9uL2V2ZW50UmVsYXkiLCBbImpxdWVyeSJdLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYigpIHt9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBbIm9wZW4iLCAib3BlbmluZyIsICJjbG9zZSIsICJjbG9zaW5nIiwgInNlbGVjdCIsICJzZWxlY3RpbmciLCAidW5zZWxlY3QiLCAidW5zZWxlY3RpbmciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBbIm9wZW5pbmciLCAiY2xvc2luZyIsICJzZWxlY3RpbmciLCAidW5zZWxlY3RpbmciXTsKICAgICAgICAgICAgICAgICAgICAgICAgYi5jYWxsKHRoaXMsIGMsIGQpLCBjLm9uKCIqIiwgZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSBhLmluQXJyYXkoYiwgZikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYyB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEuRXZlbnQoInNlbGVjdDI6IiArIGIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS4kZWxlbWVudC50cmlnZ2VyKGQpLCAtMSAhPT0gYS5pbkFycmF5KGIsIGcpICYmIChjLnByZXZlbnRlZCA9IGQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYgogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL3RyYW5zbGF0aW9uIiwgWyJqcXVlcnkiLCAicmVxdWlyZSJdLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGljdCA9IGEgfHwge30KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaWN0CiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaWN0W2FdCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpY3QgPSBhLmV4dGVuZCh7fSwgYi5hbGwoKSwgdGhpcy5kaWN0KQogICAgICAgICAgICAgICAgICAgIH0sIGMuX2NhY2hlID0ge30sIGMubG9hZFBhdGggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgaW4gYy5fY2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGIoYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLl9jYWNoZVthXSA9IGQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGMoYy5fY2FjaGVbYV0pCiAgICAgICAgICAgICAgICAgICAgfSwgYwogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2RpYWNyaXRpY3MiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgIuKStiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+8oSI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOAIjogIkEiLAogICAgICAgICAgICAgICAgICAgICAgICAiw4EiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDgiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6piI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6pCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6qiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6qCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsODIjogIkEiLAogICAgICAgICAgICAgICAgICAgICAgICAixIAiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEgiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6sCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6riI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6tCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6siI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsimIjogIkEiLAogICAgICAgICAgICAgICAgICAgICAgICAix6AiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDhCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIseeIjogIkEiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqiIjogIkEiLAogICAgICAgICAgICAgICAgICAgICAgICAiw4UiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHuiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIseNIjogIkEiLAogICAgICAgICAgICAgICAgICAgICAgICAiyIAiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIgiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6oCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6rCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6tiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4gCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSEIjogIkEiLAogICAgICAgICAgICAgICAgICAgICAgICAiyLoiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLisa8iOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnLIiOiAiQUEiLAogICAgICAgICAgICAgICAgICAgICAgICAiw4YiOiAiQUUiLAogICAgICAgICAgICAgICAgICAgICAgICAix7wiOiAiQUUiLAogICAgICAgICAgICAgICAgICAgICAgICAix6IiOiAiQUUiLAogICAgICAgICAgICAgICAgICAgICAgICAi6py0IjogIkFPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqctiI6ICJBVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnLgiOiAiQVYiLAogICAgICAgICAgICAgICAgICAgICAgICAi6py6IjogIkFWIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqcvCI6ICJBWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLikrciOiAiQiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvKIiOiAiQiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuIIiOiAiQiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuIQiOiAiQiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuIYiOiAiQiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLJgyI6ICJCIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsaCIjogIkIiLAogICAgICAgICAgICAgICAgICAgICAgICAixoEiOiAiQiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLikrgiOiAiQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvKMiOiAiQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEhiI6ICJDIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSIIjogIkMiLAogICAgICAgICAgICAgICAgICAgICAgICAixIoiOiAiQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEjCI6ICJDIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOHIjogIkMiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biIIjogIkMiLAogICAgICAgICAgICAgICAgICAgICAgICAixociOiAiQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIuyI6ICJDIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqcviI6ICJDIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKSuSI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+8pCI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4iiI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSOIjogIkQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biMIjogIkQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biQIjogIkQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biSIjogIkQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biOIjogIkQiLAogICAgICAgICAgICAgICAgICAgICAgICAixJAiOiAiRCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGiyI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsaKIjogIkQiLAogICAgICAgICAgICAgICAgICAgICAgICAixokiOiAiRCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnbkiOiAiRCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHsSI6ICJEWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHhCI6ICJEWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHsiI6ICJEeiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHhSI6ICJEeiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLikroiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvKUiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDiCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOJIjogIkUiLAogICAgICAgICAgICAgICAgICAgICAgICAiw4oiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu4AiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhur4iOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu4QiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu4IiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhurwiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEkiI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4lCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4liI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSUIjogIkUiLAogICAgICAgICAgICAgICAgICAgICAgICAixJYiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDiyI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6uiI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSaIjogIkUiLAogICAgICAgICAgICAgICAgICAgICAgICAiyIQiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIhiI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6uCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7hiI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsioIjogIkUiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bicIjogIkUiLAogICAgICAgICAgICAgICAgICAgICAgICAixJgiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuJgiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuJoiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGkCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsaOIjogIkUiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pK7IjogIkYiLAogICAgICAgICAgICAgICAgICAgICAgICAi77ymIjogIkYiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bieIjogIkYiLAogICAgICAgICAgICAgICAgICAgICAgICAixpEiOiAiRiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnbsiOiAiRiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLikrwiOiAiRyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvKciOiAiRyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHtCI6ICJHIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsScIjogIkciLAogICAgICAgICAgICAgICAgICAgICAgICAi4bigIjogIkciLAogICAgICAgICAgICAgICAgICAgICAgICAixJ4iOiAiRyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEoCI6ICJHIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsemIjogIkciLAogICAgICAgICAgICAgICAgICAgICAgICAixKIiOiAiRyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHpCI6ICJHIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsaTIjogIkciLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6gIjogIkciLAogICAgICAgICAgICAgICAgICAgICAgICAi6p29IjogIkciLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2+IjogIkciLAogICAgICAgICAgICAgICAgICAgICAgICAi4pK9IjogIkgiLAogICAgICAgICAgICAgICAgICAgICAgICAi77yoIjogIkgiLAogICAgICAgICAgICAgICAgICAgICAgICAixKQiOiAiSCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuKIiOiAiSCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuKYiOiAiSCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIniI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4pCI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4qCI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4qiI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSmIjogIkgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGnIjogIkgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rG1IjogIkgiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6NIjogIkgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pK+IjogIkkiLAogICAgICAgICAgICAgICAgICAgICAgICAi77ypIjogIkkiLAogICAgICAgICAgICAgICAgICAgICAgICAiw4wiOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDjSI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOOIjogIkkiLAogICAgICAgICAgICAgICAgICAgICAgICAixKgiOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEqiI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSsIjogIkkiLAogICAgICAgICAgICAgICAgICAgICAgICAixLAiOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDjyI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4riI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7iCI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsePIjogIkkiLAogICAgICAgICAgICAgICAgICAgICAgICAiyIgiOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIiiI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7iiI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSuIjogIkkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bisIjogIkkiLAogICAgICAgICAgICAgICAgICAgICAgICAixpciOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLikr8iOiAiSiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvKoiOiAiSiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEtCI6ICJKIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmIIjogIkoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOAIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAi77yrIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biwIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAix6giOiAiSyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuLIiOiAiSyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEtiI6ICJLIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4tCI6ICJLIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsaYIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGpIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2AIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2CIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2EIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6iIjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOBIjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAi77ysIjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAixL8iOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEuSI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsS9IjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bi2IjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bi4IjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAixLsiOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuLwiOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuLoiOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFgSI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsi9IjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGiIjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGgIjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2IIjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2GIjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6AIjogIkwiLAogICAgICAgICAgICAgICAgICAgICAgICAix4ciOiAiTEoiLAogICAgICAgICAgICAgICAgICAgICAgICAix4giOiAiTGoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOCIjogIk0iLAogICAgICAgICAgICAgICAgICAgICAgICAi77ytIjogIk0iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bi+IjogIk0iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmAIjogIk0iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmCIjogIk0iLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGuIjogIk0iLAogICAgICAgICAgICAgICAgICAgICAgICAixpwiOiAiTSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik4MiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvK4iOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHuCI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWDIjogIk4iLAogICAgICAgICAgICAgICAgICAgICAgICAiw5EiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuYQiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFhyI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5hiI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWFIjogIk4iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmKIjogIk4iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmIIjogIk4iLAogICAgICAgICAgICAgICAgICAgICAgICAiyKAiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGnSI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqekCI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqepCI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgIseKIjogIk5KIiwKICAgICAgICAgICAgICAgICAgICAgICAgIseLIjogIk5qIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKThCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+8ryI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOSIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAiw5MiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDlCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7kiI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7kCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7liI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7lCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOVIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmMIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAiyKwiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuY4iOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFjCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5kCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5kiI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWOIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAiyK4iOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIsCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOWIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAiyKoiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu44iOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFkCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIseRIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAiyIwiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIjiI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsagIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bucIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4buaIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bugIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bueIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4buiIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4buMIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4buYIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAix6oiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHrCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOYIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAix74iOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGhiI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsafIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2KIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2MIjogIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAixqIiOiAiT0kiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2OIjogIk9PIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsiiIjogIk9VIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKThSI6ICJQIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+8sCI6ICJQIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5lCI6ICJQIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5liI6ICJQIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsakIjogIlAiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGjIjogIlAiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2QIjogIlAiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2SIjogIlAiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2UIjogIlAiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOGIjogIlEiLAogICAgICAgICAgICAgICAgICAgICAgICAi77yxIjogIlEiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2WIjogIlEiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2YIjogIlEiLAogICAgICAgICAgICAgICAgICAgICAgICAiyYoiOiAiUSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik4ciOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvLIiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFlCI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5mCI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWYIjogIlIiLAogICAgICAgICAgICAgICAgICAgICAgICAiyJAiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIkiI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5miI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5nCI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWWIjogIlIiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmeIjogIlIiLAogICAgICAgICAgICAgICAgICAgICAgICAiyYwiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLisaQiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnZoiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnqYiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnoIiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik4giOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvLMiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhup4iOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFmiI6ICJTIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5pCI6ICJTIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWcIjogIlMiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmgIjogIlMiLAogICAgICAgICAgICAgICAgICAgICAgICAixaAiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuaYiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuaIiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuagiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLImCI6ICJTIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWeIjogIlMiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rG+IjogIlMiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6oIjogIlMiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6EIjogIlMiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOJIjogIlQiLAogICAgICAgICAgICAgICAgICAgICAgICAi77y0IjogIlQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmqIjogIlQiLAogICAgICAgICAgICAgICAgICAgICAgICAixaQiOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuawiOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLImiI6ICJUIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWiIjogIlQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmwIjogIlQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmuIjogIlQiLAogICAgICAgICAgICAgICAgICAgICAgICAixaYiOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGrCI6ICJUIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsauIjogIlQiLAogICAgICAgICAgICAgICAgICAgICAgICAiyL4iOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnoYiOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnKgiOiAiVFoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOKIjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAi77y1IjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAiw5kiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDmiI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsObIjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAixagiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhubgiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFqiI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5uiI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWsIjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAiw5wiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHmyI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIseXIjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAix5UiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHmSI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7piI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWuIjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAixbAiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHkyI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsiUIjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAiyJYiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGryI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7qiI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7qCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7riI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7rCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7sCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7pCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5siI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWyIjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bm2IjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bm0IjogIlUiLAogICAgICAgICAgICAgICAgICAgICAgICAiyYQiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik4siOiAiViIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvLYiOiAiViIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhubwiOiAiViIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhub4iOiAiViIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGsiI6ICJWIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqdniI6ICJWIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmFIjogIlYiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2gIjogIlZZIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKTjCI6ICJXIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+8tyI6ICJXIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6gCI6ICJXIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6giI6ICJXIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsW0IjogIlciLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqGIjogIlciLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqEIjogIlciLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqIIjogIlciLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGyIjogIlciLAogICAgICAgICAgICAgICAgICAgICAgICAi4pONIjogIlgiLAogICAgICAgICAgICAgICAgICAgICAgICAi77y4IjogIlgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqKIjogIlgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqMIjogIlgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOOIjogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAi77y5IjogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4buyIjogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAiw50iOiAiWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFtiI6ICJZIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7uCI6ICJZIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsiyIjogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqOIjogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAixbgiOiAiWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu7YiOiAiWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu7QiOiAiWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGsyI6ICJZIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmOIjogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bu+IjogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOPIjogIloiLAogICAgICAgICAgICAgICAgICAgICAgICAi77y6IjogIloiLAogICAgICAgICAgICAgICAgICAgICAgICAixbkiOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhupAiOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFuyI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsW9IjogIloiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqSIjogIloiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqUIjogIloiLAogICAgICAgICAgICAgICAgICAgICAgICAixrUiOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIpCI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKxvyI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKxqyI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqdoiI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKTkCI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+9gSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6miI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOgIjogImEiLAogICAgICAgICAgICAgICAgICAgICAgICAiw6EiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDoiI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6pyI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6pSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6qyI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6qSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOjIjogImEiLAogICAgICAgICAgICAgICAgICAgICAgICAixIEiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEgyI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6sSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6ryI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6tSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6syI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsinIjogImEiLAogICAgICAgICAgICAgICAgICAgICAgICAix6EiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDpCI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsefIjogImEiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqjIjogImEiLAogICAgICAgICAgICAgICAgICAgICAgICAiw6UiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHuyI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIseOIjogImEiLAogICAgICAgICAgICAgICAgICAgICAgICAiyIEiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIgyI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6oSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6rSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6tyI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4gSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSFIjogImEiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGlIjogImEiLAogICAgICAgICAgICAgICAgICAgICAgICAiyZAiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnLMiOiAiYWEiLAogICAgICAgICAgICAgICAgICAgICAgICAiw6YiOiAiYWUiLAogICAgICAgICAgICAgICAgICAgICAgICAix70iOiAiYWUiLAogICAgICAgICAgICAgICAgICAgICAgICAix6MiOiAiYWUiLAogICAgICAgICAgICAgICAgICAgICAgICAi6py1IjogImFvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqctyI6ICJhdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnLkiOiAiYXYiLAogICAgICAgICAgICAgICAgICAgICAgICAi6py7IjogImF2IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqcvSI6ICJheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik5EiOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvYIiOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuIMiOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuIUiOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuIciOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGgCI6ICJiIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsaDIjogImIiLAogICAgICAgICAgICAgICAgICAgICAgICAiyZMiOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik5IiOiAiYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvYMiOiAiYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEhyI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSJIjogImMiLAogICAgICAgICAgICAgICAgICAgICAgICAixIsiOiAiYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEjSI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOnIjogImMiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biJIjogImMiLAogICAgICAgICAgICAgICAgICAgICAgICAixogiOiAiYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIvCI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqcvyI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKGhCI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKTkyI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+9hCI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4iyI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSPIjogImQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biNIjogImQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biRIjogImQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biTIjogImQiLAogICAgICAgICAgICAgICAgICAgICAgICAi4biPIjogImQiLAogICAgICAgICAgICAgICAgICAgICAgICAixJEiOiAiZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGjCI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmWIjogImQiLAogICAgICAgICAgICAgICAgICAgICAgICAiyZciOiAiZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnboiOiAiZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHsyI6ICJkeiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHhiI6ICJkeiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik5QiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvYUiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDqCI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOpIjogImUiLAogICAgICAgICAgICAgICAgICAgICAgICAiw6oiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu4EiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhur8iOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu4UiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu4MiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhur0iOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEkyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4lSI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4lyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSVIjogImUiLAogICAgICAgICAgICAgICAgICAgICAgICAixJciOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDqyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6uyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSbIjogImUiLAogICAgICAgICAgICAgICAgICAgICAgICAiyIUiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIhyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6uSI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7hyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsipIjogImUiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bidIjogImUiLAogICAgICAgICAgICAgICAgICAgICAgICAixJkiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuJkiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuJsiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLJhyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmbIjogImUiLAogICAgICAgICAgICAgICAgICAgICAgICAix50iOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik5UiOiAiZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvYYiOiAiZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuJ8iOiAiZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGkiI6ICJmIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqdvCI6ICJmIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKTliI6ICJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+9hyI6ICJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgIse1IjogImciLAogICAgICAgICAgICAgICAgICAgICAgICAixJ0iOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuKEiOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEnyI6ICJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsShIjogImciLAogICAgICAgICAgICAgICAgICAgICAgICAix6ciOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEoyI6ICJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgIselIjogImciLAogICAgICAgICAgICAgICAgICAgICAgICAiyaAiOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnqEiOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhtbkiOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnb8iOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik5ciOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvYgiOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEpSI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4oyI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4pyI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsifIjogImgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bilIjogImgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bipIjogImgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4birIjogImgiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqWIjogImgiLAogICAgICAgICAgICAgICAgICAgICAgICAixKciOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLisagiOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLisbYiOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLJpSI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsaVIjogImh2IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKTmCI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+9iSI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOsIjogImkiLAogICAgICAgICAgICAgICAgICAgICAgICAiw60iOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDriI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSpIjogImkiLAogICAgICAgICAgICAgICAgICAgICAgICAixKsiOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLErSI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsOvIjogImkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bivIjogImkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4buJIjogImkiLAogICAgICAgICAgICAgICAgICAgICAgICAix5AiOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIiSI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsiLIjogImkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4buLIjogImkiLAogICAgICAgICAgICAgICAgICAgICAgICAixK8iOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuK0iOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLJqCI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsSxIjogImkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOZIjogImoiLAogICAgICAgICAgICAgICAgICAgICAgICAi772KIjogImoiLAogICAgICAgICAgICAgICAgICAgICAgICAixLUiOiAiaiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHsCI6ICJqIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmJIjogImoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOaIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAi772LIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bixIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAix6kiOiAiayIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuLMiOiAiayIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEtyI6ICJrIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4tSI6ICJrIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsaZIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGqIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2BIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2DIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2FIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6jIjogImsiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pObIjogImwiLAogICAgICAgICAgICAgICAgICAgICAgICAi772MIjogImwiLAogICAgICAgICAgICAgICAgICAgICAgICAixYAiOiAibCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLEuiI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsS+IjogImwiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bi3IjogImwiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bi5IjogImwiLAogICAgICAgICAgICAgICAgICAgICAgICAixLwiOiAibCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuL0iOiAibCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuLsiOiAibCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFvyI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWCIjogImwiLAogICAgICAgICAgICAgICAgICAgICAgICAixpoiOiAibCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLJqyI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKxoSI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqdiSI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqegSI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqdhyI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIseJIjogImxqIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKTnCI6ICJtIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+9jSI6ICJtIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG4vyI6ICJtIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5gSI6ICJtIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5gyI6ICJtIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmxIjogIm0iLAogICAgICAgICAgICAgICAgICAgICAgICAiya8iOiAibSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik50iOiAibiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvY4iOiAibiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHuSI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWEIjogIm4iLAogICAgICAgICAgICAgICAgICAgICAgICAiw7EiOiAibiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuYUiOiAibiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFiCI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5hyI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWGIjogIm4iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmLIjogIm4iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmJIjogIm4iLAogICAgICAgICAgICAgICAgICAgICAgICAixp4iOiAibiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLJsiI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWJIjogIm4iLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6RIjogIm4iLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6lIjogIm4iLAogICAgICAgICAgICAgICAgICAgICAgICAix4wiOiAibmoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOeIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi772PIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAiw7IiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDsyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsO0IjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4buTIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4buRIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4buXIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4buVIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAiw7UiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuY0iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIrSI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5jyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWNIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmRIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmTIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAixY8iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIryI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsixIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAiw7YiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIqyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7jyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWRIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAix5IiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIjSI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsiPIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAixqEiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu50iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu5siOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu6EiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu58iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu6MiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu40iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu5kiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHqyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsetIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAiw7giOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHvyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmUIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2LIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2NIjogIm8iLAogICAgICAgICAgICAgICAgICAgICAgICAiybUiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGoyI6ICJvaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIoyI6ICJvdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnY8iOiAib28iLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOfIjogInAiLAogICAgICAgICAgICAgICAgICAgICAgICAi772QIjogInAiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmVIjogInAiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmXIjogInAiLAogICAgICAgICAgICAgICAgICAgICAgICAixqUiOiAicCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhtb0iOiAicCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnZEiOiAicCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnZMiOiAicCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnZUiOiAicCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik6AiOiAicSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvZEiOiAicSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLJiyI6ICJxIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqdlyI6ICJxIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqdmSI6ICJxIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKToSI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+9kiI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWVIjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmZIjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAixZkiOiAiciIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIkSI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsiTIjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmbIjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmdIjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAixZciOiAiciIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuZ8iOiAiciIsCiAgICAgICAgICAgICAgICAgICAgICAgICLJjSI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsm9IjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2bIjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6nIjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p6DIjogInIiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOiIjogInMiLAogICAgICAgICAgICAgICAgICAgICAgICAi772TIjogInMiLAogICAgICAgICAgICAgICAgICAgICAgICAiw58iOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFmyI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5pSI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWdIjogInMiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bmhIjogInMiLAogICAgICAgICAgICAgICAgICAgICAgICAixaEiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuaciOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuaMiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuakiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLImSI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWfIjogInMiLAogICAgICAgICAgICAgICAgICAgICAgICAiyL8iOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnqkiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnoUiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhupsiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik6MiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvZQiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhuasiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhupciOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFpSI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5rSI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsibIjogInQiLAogICAgICAgICAgICAgICAgICAgICAgICAixaMiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhubEiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhua8iOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFpyI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsatIjogInQiLAogICAgICAgICAgICAgICAgICAgICAgICAiyogiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLisaYiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnociOiAidCIsCiAgICAgICAgICAgICAgICAgICAgICAgICLqnKkiOiAidHoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOkIjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAi772VIjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAiw7kiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLDuiI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsO7IjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAixakiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhubkiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFqyI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5uyI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWtIjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAiw7wiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHnCI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIseYIjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAix5YiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHmiI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7pyI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWvIjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAixbEiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLHlCI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsiVIjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAiyJciOiAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGsCI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7qyI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7qSI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7ryI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7rSI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7sSI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7pSI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG5syI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsWzIjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bm3IjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bm1IjogInUiLAogICAgICAgICAgICAgICAgICAgICAgICAiyokiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLik6UiOiAidiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLvvZYiOiAidiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhub0iOiAidiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhub8iOiAidiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLKiyI6ICJ2IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuqdnyI6ICJ2IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsqMIjogInYiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2hIjogInZ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuKTpiI6ICJ3IiwKICAgICAgICAgICAgICAgICAgICAgICAgIu+9lyI6ICJ3IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6gSI6ICJ3IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG6gyI6ICJ3IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsW1IjogInciLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqHIjogInciLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqFIjogInciLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqYIjogInciLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqJIjogInciLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGzIjogInciLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOnIjogIngiLAogICAgICAgICAgICAgICAgICAgICAgICAi772YIjogIngiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqLIjogIngiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqNIjogIngiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOoIjogInkiLAogICAgICAgICAgICAgICAgICAgICAgICAi772ZIjogInkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4buzIjogInkiLAogICAgICAgICAgICAgICAgICAgICAgICAiw70iOiAieSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFtyI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgIuG7uSI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsizIjogInkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqPIjogInkiLAogICAgICAgICAgICAgICAgICAgICAgICAiw78iOiAieSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu7ciOiAieSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhupkiOiAieSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhu7UiOiAieSIsCiAgICAgICAgICAgICAgICAgICAgICAgICLGtCI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmPIjogInkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bu/IjogInkiLAogICAgICAgICAgICAgICAgICAgICAgICAi4pOpIjogInoiLAogICAgICAgICAgICAgICAgICAgICAgICAi772aIjogInoiLAogICAgICAgICAgICAgICAgICAgICAgICAixboiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLhupEiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLFvCI6ICJ6IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsW+IjogInoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqTIjogInoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4bqVIjogInoiLAogICAgICAgICAgICAgICAgICAgICAgICAixrYiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgICAgICLIpSI6ICJ6IiwKICAgICAgICAgICAgICAgICAgICAgICAgIsmAIjogInoiLAogICAgICAgICAgICAgICAgICAgICAgICAi4rGsIjogInoiLAogICAgICAgICAgICAgICAgICAgICAgICAi6p2jIjogInoiLAogICAgICAgICAgICAgICAgICAgICAgICAizoYiOiAizpEiLAogICAgICAgICAgICAgICAgICAgICAgICAizogiOiAizpUiLAogICAgICAgICAgICAgICAgICAgICAgICAizokiOiAizpciLAogICAgICAgICAgICAgICAgICAgICAgICAizooiOiAizpkiLAogICAgICAgICAgICAgICAgICAgICAgICAizqoiOiAizpkiLAogICAgICAgICAgICAgICAgICAgICAgICAizowiOiAizp8iLAogICAgICAgICAgICAgICAgICAgICAgICAizo4iOiAizqUiLAogICAgICAgICAgICAgICAgICAgICAgICAizqsiOiAizqUiLAogICAgICAgICAgICAgICAgICAgICAgICAizo8iOiAizqkiLAogICAgICAgICAgICAgICAgICAgICAgICAizqwiOiAizrEiLAogICAgICAgICAgICAgICAgICAgICAgICAizq0iOiAizrUiLAogICAgICAgICAgICAgICAgICAgICAgICAizq4iOiAizrciLAogICAgICAgICAgICAgICAgICAgICAgICAizq8iOiAizrkiLAogICAgICAgICAgICAgICAgICAgICAgICAiz4oiOiAizrkiLAogICAgICAgICAgICAgICAgICAgICAgICAizpAiOiAizrkiLAogICAgICAgICAgICAgICAgICAgICAgICAiz4wiOiAizr8iLAogICAgICAgICAgICAgICAgICAgICAgICAiz40iOiAiz4UiLAogICAgICAgICAgICAgICAgICAgICAgICAiz4siOiAiz4UiLAogICAgICAgICAgICAgICAgICAgICAgICAizrAiOiAiz4UiLAogICAgICAgICAgICAgICAgICAgICAgICAiz4kiOiAiz4kiLAogICAgICAgICAgICAgICAgICAgICAgICAiz4IiOiAiz4MiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2RhdGEvYmFzZSIsIFsiLi4vdXRpbHMiXSwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoYSwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBiLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLkV4dGVuZChiLCBhLk9ic2VydmFibGUpLCBiLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRoZSBgY3VycmVudGAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLiIpCiAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGhlIGBxdWVyeWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLiIpCiAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGEsIGIpIHt9LCBiLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7fSwgYi5wcm90b3R5cGUuZ2VuZXJhdGVSZXN1bHRJZCA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBiLmlkICsgIi1yZXN1bHQtIjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQgKz0gYS5nZW5lcmF0ZUNoYXJzKDQpLCBudWxsICE9IGMuaWQgPyBkICs9ICItIiArIGMuaWQudG9TdHJpbmcoKSA6IGQgKz0gIi0iICsgYS5nZW5lcmF0ZUNoYXJzKDQpLCBkCiAgICAgICAgICAgICAgICAgICAgfSwgYgogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2RhdGEvc2VsZWN0IiwgWyIuL2Jhc2UiLCAiLi4vdXRpbHMiLCAianF1ZXJ5Il0sIGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudCA9IGEsIHRoaXMub3B0aW9ucyA9IGIsIGQuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuRXh0ZW5kKGQsIGEpLCBkLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgiOnNlbGVjdGVkIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gYyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZC5pdGVtKGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5wdXNoKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhKGIpCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLnNlbGVjdGVkID0gITAsIGMoYS5lbGVtZW50KS5pcygib3B0aW9uIikpIHJldHVybiBhLmVsZW1lbnQuc2VsZWN0ZWQgPSAhMCwgdm9pZCB0aGlzLiRlbGVtZW50LnRyaWdnZXIoImNoYW5nZSIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4kZWxlbWVudC5wcm9wKCJtdWx0aXBsZSIpKSB0aGlzLmN1cnJlbnQoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBbYV0sIGEucHVzaC5hcHBseShhLCBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGYgPSAwOyBmIDwgYS5sZW5ndGg7IGYrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gYVtmXS5pZDsgLSAxID09PSBjLmluQXJyYXkoZywgZSkgJiYgZS5wdXNoKGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLiRlbGVtZW50LnZhbChlKSwgYi4kZWxlbWVudC50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEuaWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LnZhbChkKSwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUudW5zZWxlY3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGVsZW1lbnQucHJvcCgibXVsdGlwbGUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEuc2VsZWN0ZWQgPSAhMSwgYyhhLmVsZW1lbnQpLmlzKCJvcHRpb24iKSkgcmV0dXJuIGEuZWxlbWVudC5zZWxlY3RlZCA9ICExLCB2b2lkIHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiY2hhbmdlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBbXSwgZiA9IDA7IGYgPCBkLmxlbmd0aDsgZisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZFtmXS5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyAhPT0gYS5pZCAmJiAtMSA9PT0gYy5pbkFycmF5KGcsIGUpICYmIGUucHVzaChnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLiRlbGVtZW50LnZhbChlKSwgYi4kZWxlbWVudC50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGQucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBhLCBhLm9uKCJzZWxlY3QiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnNlbGVjdChhLmRhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhLm9uKCJ1bnNlbGVjdCIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMudW5zZWxlY3QoYS5kYXRhKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGQucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKCIqIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMucmVtb3ZlRGF0YSh0aGlzLCAiZGF0YSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGModGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYi5pcygib3B0aW9uIikgfHwgYi5pcygib3B0Z3JvdXAiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gZS5pdGVtKGIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZS5tYXRjaGVzKGEsIGYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGcgJiYgZC5wdXNoKGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBiKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6IGQKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5hZGRPcHRpb25zID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICBiLmFwcGVuZE1hbnkodGhpcy4kZWxlbWVudCwgYSkKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5vcHRpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiOwogICAgICAgICAgICAgICAgICAgICAgICBhLmNoaWxkcmVuID8gKGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRncm91cCIpLCBiLmxhYmVsID0gYS50ZXh0KSA6IChiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIiksIHZvaWQgMCAhPT0gYi50ZXh0Q29udGVudCA/IGIudGV4dENvbnRlbnQgPSBhLnRleHQgOiBiLmlubmVyVGV4dCA9IGEudGV4dCksIHZvaWQgMCAhPT0gYS5pZCAmJiAoYi52YWx1ZSA9IGEuaWQpLCBhLmRpc2FibGVkICYmIChiLmRpc2FibGVkID0gITApLCBhLnNlbGVjdGVkICYmIChiLnNlbGVjdGVkID0gITApLCBhLnRpdGxlICYmIChiLnRpdGxlID0gYS50aXRsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gYyhiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGEpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5lbGVtZW50ID0gYiwgYy5kYXRhKGIsICJkYXRhIiwgZSksIGQKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5pdGVtID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSAoYiA9IGMuZGF0YShhWzBdLCAiZGF0YSIpKSkgcmV0dXJuIGI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmlzKCJvcHRpb24iKSkgYiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogYS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogYS5wcm9wKCJkaXNhYmxlZCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGEucHJvcCgic2VsZWN0ZWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhLnByb3AoInRpdGxlIikKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYS5pcygib3B0Z3JvdXAiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhLnByb3AoImxhYmVsIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhLnByb3AoInRpdGxlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gYS5jaGlsZHJlbigib3B0aW9uIiksIGUgPSBbXSwgZiA9IDA7IGYgPCBkLmxlbmd0aDsgZisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBjKGRbZl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy5pdGVtKGcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHVzaChoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5jaGlsZHJlbiA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYiA9IHRoaXMuX25vcm1hbGl6ZUl0ZW0oYiksIGIuZWxlbWVudCA9IGFbMF0sIGMuZGF0YShhWzBdLCAiZGF0YSIsIGIpLCBiCiAgICAgICAgICAgICAgICAgICAgfSwgZC5wcm90b3R5cGUuX25vcm1hbGl6ZUl0ZW0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMuaXNQbGFpbk9iamVjdChhKSB8fCAoYSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogYQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYSA9IGMuZXh0ZW5kKHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9LCBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gYS5pZCAmJiAoYS5pZCA9IGEuaWQudG9TdHJpbmcoKSksIG51bGwgIT0gYS50ZXh0ICYmIChhLnRleHQgPSBhLnRleHQudG9TdHJpbmcoKSksIG51bGwgPT0gYS5fcmVzdWx0SWQgJiYgYS5pZCAmJiBudWxsICE9IHRoaXMuY29udGFpbmVyICYmIChhLl9yZXN1bHRJZCA9IHRoaXMuZ2VuZXJhdGVSZXN1bHRJZCh0aGlzLmNvbnRhaW5lciwgYSkpLCBjLmV4dGVuZCh7fSwgYiwgYSkKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5tYXRjaGVzID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCgibWF0Y2hlciIpKGEsIGIpCiAgICAgICAgICAgICAgICAgICAgfSwgZAogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2RhdGEvYXJyYXkiLCBbIi4vc2VsZWN0IiwgIi4uL3V0aWxzIiwgImpxdWVyeSJdLCBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYi5nZXQoImRhdGEiKSB8fCBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZC5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCBhLCBiKSwgdGhpcy5hZGRPcHRpb25zKHRoaXMuY29udmVydFRvT3B0aW9ucyhjKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuRXh0ZW5kKGQsIGEpLCBkLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy4kZWxlbWVudC5maW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMudmFsdWUgPT0gYS5pZC50b1N0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAwID09PSBiLmxlbmd0aCAmJiAoYiA9IHRoaXMub3B0aW9uKGEpLCB0aGlzLmFkZE9wdGlvbnMoYikpLCBkLl9fc3VwZXJfXy5zZWxlY3QuY2FsbCh0aGlzLCBhKQogICAgICAgICAgICAgICAgICAgIH0sIGQucHJvdG90eXBlLmNvbnZlcnRUb09wdGlvbnMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKHRoaXMpLnZhbCgpID09IGEuaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcywgZiA9IHRoaXMuJGVsZW1lbnQuZmluZCgib3B0aW9uIiksIGcgPSBmLm1hcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5pdGVtKGModGhpcykpLmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5nZXQoKSwgaCA9IFtdLCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqID0gdGhpcy5fbm9ybWFsaXplSXRlbShhW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjLmluQXJyYXkoai5pZCwgZykgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gZi5maWx0ZXIoZChqKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLml0ZW0oayksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBjLmV4dGVuZCghMCwge30sIGosIGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5vcHRpb24obSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgay5yZXBsYWNlV2l0aChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMub3B0aW9uKGopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gdGhpcy5jb252ZXJ0VG9PcHRpb25zKGouY2hpbGRyZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmFwcGVuZE1hbnkobywgcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5wdXNoKG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgKICAgICAgICAgICAgICAgICAgICB9LCBkCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZGF0YS9hamF4IiwgWyIuL2FycmF5IiwgIi4uL3V0aWxzIiwgImpxdWVyeSJdLCBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWpheE9wdGlvbnMgPSB0aGlzLl9hcHBseURlZmF1bHRzKGIuZ2V0KCJhamF4IikpLCBudWxsICE9IHRoaXMuYWpheE9wdGlvbnMucHJvY2Vzc1Jlc3VsdHMgJiYgKHRoaXMucHJvY2Vzc1Jlc3VsdHMgPSB0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzKSwgZC5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCBhLCBiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5FeHRlbmQoZCwgYSksIGQucHJvdG90eXBlLl9hcHBseURlZmF1bHRzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5leHRlbmQoe30sIGEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcTogYS50ZXJtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQ6IGZ1bmN0aW9uKGEsIGIsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGMuYWpheChhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50aGVuKGIpLCBlLmZhaWwoZCksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZXh0ZW5kKHt9LCBiLCBhLCAhMCkKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5wcm9jZXNzUmVzdWx0cyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICB9LCBkLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZi50cmFuc3BvcnQoZiwgZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gZS5wcm9jZXNzUmVzdWx0cyhkLCBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm9wdGlvbnMuZ2V0KCJkZWJ1ZyIpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUuZXJyb3IgJiYgKGYgJiYgZi5yZXN1bHRzICYmIGMuaXNBcnJheShmLnJlc3VsdHMpIHx8IGNvbnNvbGUuZXJyb3IoIlNlbGVjdDI6IFRoZSBBSkFYIHJlc3VsdHMgZGlkIG5vdCByZXR1cm4gYW4gYXJyYXkgaW4gdGhlIGByZXN1bHRzYCBrZXkgb2YgdGhlIHJlc3BvbnNlLiIpKSwgYihmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5zdGF0dXMgJiYgIjAiID09PSBkLnN0YXR1cyB8fCBlLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogImVycm9yTG9hZGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9yZXF1ZXN0ID0gZAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLl9yZXF1ZXN0ICYmIChjLmlzRnVuY3Rpb24odGhpcy5fcmVxdWVzdC5hYm9ydCkgJiYgdGhpcy5fcmVxdWVzdC5hYm9ydCgpLCB0aGlzLl9yZXF1ZXN0ID0gbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gYy5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIkdFVCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5hamF4T3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGYudXJsICYmIChmLnVybCA9IGYudXJsLmNhbGwodGhpcy4kZWxlbWVudCwgYSkpLCAiZnVuY3Rpb24iID09IHR5cGVvZiBmLmRhdGEgJiYgKGYuZGF0YSA9IGYuZGF0YS5jYWxsKHRoaXMuJGVsZW1lbnQsIGEpKSwgdGhpcy5hamF4T3B0aW9ucy5kZWxheSAmJiBudWxsICE9IGEudGVybSA/ICh0aGlzLl9xdWVyeVRpbWVvdXQgJiYgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9xdWVyeVRpbWVvdXQpLCB0aGlzLl9xdWVyeVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChkLCB0aGlzLmFqYXhPcHRpb25zLmRlbGF5KSkgOiBkKCkKICAgICAgICAgICAgICAgICAgICB9LCBkCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZGF0YS90YWdzIiwgWyJqcXVlcnkiXSwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoYiwgYywgZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGQuZ2V0KCJ0YWdzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZC5nZXQoImNyZWF0ZVRhZyIpOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGYgJiYgKHRoaXMuY3JlYXRlVGFnID0gZik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZC5nZXQoImluc2VydFRhZyIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBnICYmICh0aGlzLmluc2VydFRhZyA9IGcpLCBiLmNhbGwodGhpcywgYywgZCksIGEuaXNBcnJheShlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGggPSAwOyBoIDwgZS5sZW5ndGg7IGgrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZVtoXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHRoaXMuX25vcm1hbGl6ZUl0ZW0oaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB0aGlzLm9wdGlvbihqKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmFwcGVuZChrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoYSwgZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZyA9IGEucmVzdWx0cywgaCA9IDA7IGggPCBnLmxlbmd0aDsgaCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBnW2hdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gbnVsbCAhPSBpLmNoaWxkcmVuICYmICFkKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6IGkuY2hpbGRyZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaS50ZXh0IHx8ICIiKS50b1VwcGVyQ2FzZSgpID09PSAoYi50ZXJtIHx8ICIiKS50b1VwcGVyQ2FzZSgpIHx8IGopIHJldHVybiAhZiAmJiAoYS5kYXRhID0gZywgdm9pZCBjKGEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gZS5jcmVhdGVUYWcoYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLm9wdGlvbihrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmF0dHIoImRhdGEtc2VsZWN0Mi10YWciLCAhMCksIGUuYWRkT3B0aW9ucyhbbF0pLCBlLmluc2VydFRhZyhnLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5yZXN1bHRzID0gZywgYyhhKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3JlbW92ZU9sZFRhZ3MoKSwgbnVsbCA9PSBiLnRlcm0gfHwgbnVsbCAhPSBiLnBhZ2UpIHJldHVybiB2b2lkIGEuY2FsbCh0aGlzLCBiLCBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKHRoaXMsIGIsIGQpCiAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuY3JlYXRlVGFnID0gZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEudHJpbShjLnRlcm0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIgPT09IGQgPyBudWxsIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBkCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5pbnNlcnRUYWcgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIudW5zaGlmdChjKQogICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLl9yZW1vdmVPbGRUYWdzID0gZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0VGFnOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoIm9wdGlvbltkYXRhLXNlbGVjdDItdGFnXSIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkIHx8IGEodGhpcykucmVtb3ZlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBiCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZGF0YS90b2tlbml6ZXIiLCBbImpxdWVyeSJdLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gYy5nZXQoInRva2VuaXplciIpOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGQgJiYgKHRoaXMudG9rZW5pemVyID0gZCksIGEuY2FsbCh0aGlzLCBiLCBjKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKHRoaXMsIGIsIGMpLCB0aGlzLiRzZWFyY2ggPSBiLmRyb3Bkb3duLiRzZWFyY2ggfHwgYi5zZWxlY3Rpb24uJHNlYXJjaCB8fCBjLmZpbmQoIi5zZWxlY3QyLXNlYXJjaF9fZmllbGQiKQogICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24oYiwgYywgZCkgewogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gZy5fbm9ybWFsaXplSXRlbShiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZy4kZWxlbWVudC5maW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMpLnZhbCgpID09PSBjLmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBnLm9wdGlvbihjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmF0dHIoImRhdGEtc2VsZWN0Mi10YWciLCAhMCksIGcuX3JlbW92ZU9sZFRhZ3MoKSwgZy5hZGRPcHRpb25zKFtkXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYoYykKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLnRyaWdnZXIoInNlbGVjdCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgYy50ZXJtID0gYy50ZXJtIHx8ICIiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHRoaXMudG9rZW5pemVyKGMsIHRoaXMub3B0aW9ucywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGgudGVybSAhPT0gYy50ZXJtICYmICh0aGlzLiRzZWFyY2gubGVuZ3RoICYmICh0aGlzLiRzZWFyY2gudmFsKGgudGVybSksIHRoaXMuJHNlYXJjaC5mb2N1cygpKSwgYy50ZXJtID0gaC50ZXJtKSwgYi5jYWxsKHRoaXMsIGMsIGQpCiAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUudG9rZW5pemVyID0gZnVuY3Rpb24oYiwgYywgZCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmID0gZC5nZXQoInRva2VuU2VwYXJhdG9ycyIpIHx8IFtdLCBnID0gYy50ZXJtLCBoID0gMCwgaSA9IHRoaXMuY3JlYXRlVGFnIHx8IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYS50ZXJtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhLnRlcm0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyBoIDwgZy5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaiA9IGdbaF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT09IGEuaW5BcnJheShqLCBmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gZy5zdWJzdHIoMCwgaCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhLmV4dGVuZCh7fSwgYywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybTogawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGkobCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBtID8gKGUobSksIGcgPSBnLnN1YnN0cihoICsgMSkgfHwgIiIsIGggPSAwKSA6IGgrKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGgrKwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtOiBnCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBiCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluaW11bUlucHV0TGVuZ3RoID0gYy5nZXQoIm1pbmltdW1JbnB1dExlbmd0aCIpLCBhLmNhbGwodGhpcywgYiwgYykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYi50ZXJtID0gYi50ZXJtIHx8ICIiLCBiLnRlcm0ubGVuZ3RoIDwgdGhpcy5taW5pbXVtSW5wdXRMZW5ndGgpIHJldHVybiB2b2lkIHRoaXMudHJpZ2dlcigicmVzdWx0czptZXNzYWdlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogImlucHV0VG9vU2hvcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IHRoaXMubWluaW11bUlucHV0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBiLnRlcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBhLmNhbGwodGhpcywgYiwgYykKICAgICAgICAgICAgICAgICAgICB9LCBhCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4aW11bUlucHV0TGVuZ3RoID0gYy5nZXQoIm1heGltdW1JbnB1dExlbmd0aCIpLCBhLmNhbGwodGhpcywgYiwgYykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYi50ZXJtID0gYi50ZXJtIHx8ICIiLCB0aGlzLm1heGltdW1JbnB1dExlbmd0aCA+IDAgJiYgYi50ZXJtLmxlbmd0aCA+IHRoaXMubWF4aW11bUlucHV0TGVuZ3RoKSByZXR1cm4gdm9pZCB0aGlzLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJpbnB1dFRvb0xvbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IHRoaXMubWF4aW11bUlucHV0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBiLnRlcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBhLmNhbGwodGhpcywgYiwgYykKICAgICAgICAgICAgICAgICAgICB9LCBhCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZGF0YS9tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIiwgW10sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPSBjLmdldCgibWF4aW11bVNlbGVjdGlvbkxlbmd0aCIpLCBhLmNhbGwodGhpcywgYiwgYykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IG51bGwgIT0gZSA/IGUubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPiAwICYmIGYgPj0gZC5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoKSByZXR1cm4gdm9pZCBkLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAibWF4aW11bVNlbGVjdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IGQubWF4aW11bVNlbGVjdGlvbkxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKGQsIGIsIGMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYQogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2Ryb3Bkb3duIiwgWyJqcXVlcnkiLCAiLi91dGlscyJdLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQgPSBhLCB0aGlzLm9wdGlvbnMgPSBiLCBjLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBiLkV4dGVuZChjLCBiLk9ic2VydmFibGUpLCBjLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhKCc8c3BhbiBjbGFzcz0ic2VsZWN0Mi1kcm9wZG93biI+PHNwYW4gY2xhc3M9InNlbGVjdDItcmVzdWx0cyI+PC9zcGFuPjwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuYXR0cigiZGlyIiwgdGhpcy5vcHRpb25zLmdldCgiZGlyIikpLCB0aGlzLiRkcm9wZG93biA9IGIsIGIKICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oKSB7fSwgYy5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbihhLCBiKSB7fSwgYy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRkcm9wZG93bi5yZW1vdmUoKQogICAgICAgICAgICAgICAgICAgIH0sIGMKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9zZWFyY2giLCBbImpxdWVyeSIsICIuLi91dGlscyJdLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYygpIHt9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBiLmNhbGwodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYSgnPHNwYW4gY2xhc3M9InNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1kcm9wZG93biI+PGlucHV0IGNsYXNzPSJzZWxlY3QyLXNlYXJjaF9fZmllbGQiIHR5cGU9InNlYXJjaCIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiIgYXV0b2NvcnJlY3Q9Im9mZiIgYXV0b2NhcGl0YWxpemU9Im5vbmUiIHNwZWxsY2hlY2s9ImZhbHNlIiByb2xlPSJ0ZXh0Ym94IiAvPjwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9IGQsIHRoaXMuJHNlYXJjaCA9IGQuZmluZCgiaW5wdXQiKSwgYy5wcmVwZW5kKGQpLCBjCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGIsIGMsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBiLmNhbGwodGhpcywgYywgZCksIHRoaXMuJHNlYXJjaC5vbigia2V5ZG93biIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudHJpZ2dlcigia2V5cHJlc3MiLCBhKSwgZS5fa2V5VXBQcmV2ZW50ZWQgPSBhLmlzRGVmYXVsdFByZXZlbnRlZCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRzZWFyY2gub24oImlucHV0IiwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSh0aGlzKS5vZmYoImtleXVwIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuJHNlYXJjaC5vbigia2V5dXAgaW5wdXQiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmhhbmRsZVNlYXJjaChhKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYy5vbigib3BlbiIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS4kc2VhcmNoLmF0dHIoInRhYmluZGV4IiwgMCksIGUuJHNlYXJjaC5mb2N1cygpLCB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLiRzZWFyY2guZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGMub24oImNsb3NlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLiRzZWFyY2guYXR0cigidGFiaW5kZXgiLCAtMSksIGUuJHNlYXJjaC52YWwoIiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBjLm9uKCJmb2N1cyIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pc09wZW4oKSB8fCBlLiRzZWFyY2guZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYy5vbigicmVzdWx0czphbGwiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBhLnF1ZXJ5LnRlcm0gfHwgIiIgPT09IGEucXVlcnkudGVybSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2hvd1NlYXJjaChhKSA/IGUuJHNlYXJjaENvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1zZWFyY2gtLWhpZGUiKSA6IGUuJHNlYXJjaENvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1zZWFyY2gtLWhpZGUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLmhhbmRsZVNlYXJjaCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9rZXlVcFByZXZlbnRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzLiRzZWFyY2gudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoInF1ZXJ5IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm06IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5VXBQcmV2ZW50ZWQgPSAhMQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgIH0sIGMKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXIiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKGMuZ2V0KCJwbGFjZWhvbGRlciIpKSwgYS5jYWxsKHRoaXMsIGIsIGMsIGQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIucmVzdWx0cyA9IHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIoYi5yZXN1bHRzKSwgYS5jYWxsKHRoaXMsIGIpCiAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXIgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgYiAmJiAoYiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGIKICAgICAgICAgICAgICAgICAgICB9LCBhLnByb3RvdHlwZS5yZW1vdmVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IGIuc2xpY2UoMCksIGQgPSBiLmxlbmd0aCAtIDE7IGQgPj0gMDsgZC0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGJbZF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyLmlkID09PSBlLmlkICYmIGMuc3BsaWNlKGQsIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMKICAgICAgICAgICAgICAgICAgICB9LCBhCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vaW5maW5pdGVTY3JvbGwiLCBbImpxdWVyeSJdLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFBhcmFtcyA9IHt9LCBhLmNhbGwodGhpcywgYiwgYywgZCksIHRoaXMuJGxvYWRpbmdNb3JlID0gdGhpcy5jcmVhdGVMb2FkaW5nTW9yZSgpLCB0aGlzLmxvYWRpbmcgPSAhMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsb2FkaW5nTW9yZS5yZW1vdmUoKSwgdGhpcy5sb2FkaW5nID0gITEsIGEuY2FsbCh0aGlzLCBiKSwgdGhpcy5zaG93TG9hZGluZ01vcmUoYikgJiYgdGhpcy4kcmVzdWx0cy5hcHBlbmQodGhpcy4kbG9hZGluZ01vcmUpCiAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGIsIGMsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBiLmNhbGwodGhpcywgYywgZCksIGMub24oInF1ZXJ5IiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5sYXN0UGFyYW1zID0gYSwgZS5sb2FkaW5nID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGMub24oInF1ZXJ5OmFwcGVuZCIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGFzdFBhcmFtcyA9IGEsIGUubG9hZGluZyA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRyZXN1bHRzLm9uKCJzY3JvbGwiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5jb250YWlucyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGUuJGxvYWRpbmdNb3JlWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5sb2FkaW5nICYmIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLiRyZXN1bHRzLm9mZnNldCgpLnRvcCArIGUuJHJlc3VsdHMub3V0ZXJIZWlnaHQoITEpICsgNTAgPj0gZS4kbG9hZGluZ01vcmUub2Zmc2V0KCkudG9wICsgZS4kbG9hZGluZ01vcmUub3V0ZXJIZWlnaHQoITEpICYmIGUubG9hZE1vcmUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLmxvYWRNb3JlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEuZXh0ZW5kKHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiAxCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMubGFzdFBhcmFtcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGIucGFnZSsrLCB0aGlzLnRyaWdnZXIoInF1ZXJ5OmFwcGVuZCIsIGIpCiAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2hvd0xvYWRpbmdNb3JlID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5wYWdpbmF0aW9uICYmIGIucGFnaW5hdGlvbi5tb3JlCiAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuY3JlYXRlTG9hZGluZ01vcmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhKCc8bGkgY2xhc3M9InNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1sb2FkLW1vcmUicm9sZT0idHJlZWl0ZW0iIGFyaWEtZGlzYWJsZWQ9InRydWUiPjwvbGk+JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdGhpcy5vcHRpb25zLmdldCgidHJhbnNsYXRpb25zIikuZ2V0KCJsb2FkaW5nTW9yZSIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5odG1sKGModGhpcy5sYXN0UGFyYW1zKSksIGIKICAgICAgICAgICAgICAgICAgICB9LCBiCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vYXR0YWNoQm9keSIsIFsianF1ZXJ5IiwgIi4uL3V0aWxzIl0sIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGIsIGMsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZHJvcGRvd25QYXJlbnQgPSBkLmdldCgiZHJvcGRvd25QYXJlbnQiKSB8fCBhKGRvY3VtZW50LmJvZHkpLCBiLmNhbGwodGhpcywgYywgZCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKHRoaXMsIGIsIGMpLCBiLm9uKCJvcGVuIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLl9zaG93RHJvcGRvd24oKSwgZC5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGIpLCBlIHx8IChlID0gITAsIGIub24oInJlc3VsdHM6YWxsIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5fcG9zaXRpb25Ecm9wZG93bigpLCBkLl9yZXNpemVEcm9wZG93bigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigicmVzdWx0czphcHBlbmQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLl9wb3NpdGlvbkRyb3Bkb3duKCksIGQuX3Jlc2l6ZURyb3Bkb3duKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5vbigiY2xvc2UiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuX2hpZGVEcm9wZG93bigpLCBkLl9kZXRhY2hQb3NpdGlvbmluZ0hhbmRsZXIoYikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLm9uKCJtb3VzZWRvd24iLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKHRoaXMpLCB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5yZW1vdmUoKQogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBiLmF0dHIoImNsYXNzIiwgYy5hdHRyKCJjbGFzcyIpKSwgYi5yZW1vdmVDbGFzcygic2VsZWN0MiIpLCBiLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tb3BlbiIpLCBiLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogLTk5OTk5OQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kY29udGFpbmVyID0gYwogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBhKCI8c3Bhbj48L3NwYW4+IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYi5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5hcHBlbmQoZCksIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyID0gYywgYwogICAgICAgICAgICAgICAgICAgIH0sIGMucHJvdG90eXBlLl9oaWRlRHJvcGRvd24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmRldGFjaCgpCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuX2F0dGFjaFBvc2l0aW9uaW5nSGFuZGxlciA9IGZ1bmN0aW9uKGMsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICJzY3JvbGwuc2VsZWN0Mi4iICsgZC5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAicmVzaXplLnNlbGVjdDIuIiArIGQuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gIm9yaWVudGF0aW9uY2hhbmdlLnNlbGVjdDIuIiArIGQuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy4kY29udGFpbmVyLnBhcmVudHMoKS5maWx0ZXIoYi5oYXNTY3JvbGwpOwogICAgICAgICAgICAgICAgICAgICAgICBpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKHRoaXMpLmRhdGEoInNlbGVjdDItc2Nyb2xsLXBvc2l0aW9uIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGEodGhpcykuc2Nyb2xsTGVmdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGEodGhpcykuc2Nyb2xsVG9wKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLm9uKGYsIGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYSh0aGlzKS5kYXRhKCJzZWxlY3QyLXNjcm9sbC1wb3NpdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSh0aGlzKS5zY3JvbGxUb3AoYy55KQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYSh3aW5kb3cpLm9uKGYgKyAiICIgKyBnICsgIiAiICsgaCwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fcG9zaXRpb25Ecm9wZG93bigpLCBlLl9yZXNpemVEcm9wZG93bigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlciA9IGZ1bmN0aW9uKGMsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAic2Nyb2xsLnNlbGVjdDIuIiArIGQuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gInJlc2l6ZS5zZWxlY3QyLiIgKyBkLmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICJvcmllbnRhdGlvbmNoYW5nZS5zZWxlY3QyLiIgKyBkLmlkOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRjb250YWluZXIucGFyZW50cygpLmZpbHRlcihiLmhhc1Njcm9sbCkub2ZmKGUpLCBhKHdpbmRvdykub2ZmKGUgKyAiICIgKyBmICsgIiAiICsgZykKICAgICAgICAgICAgICAgICAgICB9LCBjLnByb3RvdHlwZS5fcG9zaXRpb25Ecm9wZG93biA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEod2luZG93KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0aGlzLiRkcm9wZG93bi5oYXNDbGFzcygic2VsZWN0Mi1kcm9wZG93bi0tYWJvdmUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLiRkcm9wZG93bi5oYXNDbGFzcygic2VsZWN0Mi1kcm9wZG93bi0tYmVsb3ciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZi5ib3R0b20gPSBmLnRvcCArIHRoaXMuJGNvbnRhaW5lci5vdXRlckhlaWdodCghMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLiRjb250YWluZXIub3V0ZXJIZWlnaHQoITEpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGcudG9wID0gZi50b3AsIGcuYm90dG9tID0gZi50b3AgKyBnLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLiRkcm9wZG93bi5vdXRlckhlaWdodCghMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogYi5zY3JvbGxUb3AoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IGIuc2Nyb2xsVG9wKCkgKyBiLmhlaWdodCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGkudG9wIDwgZi50b3AgLSBoLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBpLmJvdHRvbSA+IGYuYm90dG9tICsgaC5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGYubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGcuYm90dG9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHRoaXMuJGRyb3Bkb3duUGFyZW50OwogICAgICAgICAgICAgICAgICAgICAgICAic3RhdGljIiA9PT0gbS5jc3MoInBvc2l0aW9uIikgJiYgKG0gPSBtLm9mZnNldFBhcmVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBtLm9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICBsLnRvcCAtPSBuLnRvcCwgbC5sZWZ0IC09IG4ubGVmdCwgYyB8fCBkIHx8IChlID0gImJlbG93IiksIGsgfHwgIWogfHwgYyA/ICFqICYmIGsgJiYgYyAmJiAoZSA9ICJiZWxvdyIpIDogZSA9ICJhYm92ZSIsICgiYWJvdmUiID09IGUgfHwgYyAmJiAiYmVsb3ciICE9PSBlKSAmJiAobC50b3AgPSBnLnRvcCAtIG4udG9wIC0gaC5oZWlnaHQpLCBudWxsICE9IGUgJiYgKHRoaXMuJGRyb3Bkb3duLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyBzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZSIpLmFkZENsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLS0iICsgZSksIHRoaXMuJGNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItLWJlbG93IHNlbGVjdDItY29udGFpbmVyLS1hYm92ZSIpLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tIiArIGUpKSwgdGhpcy4kZHJvcGRvd25Db250YWluZXIuY3NzKGwpCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuX3Jlc2l6ZURyb3Bkb3duID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuJGNvbnRhaW5lci5vdXRlcldpZHRoKCExKSArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmdldCgiZHJvcGRvd25BdXRvV2lkdGgiKSAmJiAoYS5taW5XaWR0aCA9IGEud2lkdGgsIGEucG9zaXRpb24gPSAicmVsYXRpdmUiLCBhLndpZHRoID0gImF1dG8iKSwgdGhpcy4kZHJvcGRvd24uY3NzKGEpCiAgICAgICAgICAgICAgICAgICAgfSwgYy5wcm90b3R5cGUuX3Nob3dEcm9wZG93biA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIuYXBwZW5kVG8odGhpcy4kZHJvcGRvd25QYXJlbnQpLCB0aGlzLl9wb3NpdGlvbkRyb3Bkb3duKCksIHRoaXMuX3Jlc2l6ZURyb3Bkb3duKCkKICAgICAgICAgICAgICAgICAgICB9LCBjCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vbWluaW11bVJlc3VsdHNGb3JTZWFyY2giLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwLCBkID0gMDsgZCA8IGIubGVuZ3RoOyBkKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYltkXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY2hpbGRyZW4gPyBjICs9IGEoZS5jaGlsZHJlbikgOiBjKysKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPSBjLmdldCgibWluaW11bVJlc3VsdHNGb3JTZWFyY2giKSwgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA8IDAgJiYgKHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPSAxIC8gMCksIGEuY2FsbCh0aGlzLCBiLCBjLCBkKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5wcm90b3R5cGUuc2hvd1NlYXJjaCA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoYShjLmRhdGEucmVzdWx0cykgPCB0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoKSAmJiBiLmNhbGwodGhpcywgYykKICAgICAgICAgICAgICAgICAgICB9LCBiCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vc2VsZWN0T25DbG9zZSIsIFtdLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKCkge30KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBhLmNhbGwodGhpcywgYiwgYyksIGIub24oImNsb3NlIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5faGFuZGxlU2VsZWN0T25DbG9zZShhKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLl9oYW5kbGVTZWxlY3RPbkNsb3NlID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiAmJiBudWxsICE9IGIub3JpZ2luYWxTZWxlY3QyRXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYi5vcmlnaW5hbFNlbGVjdDJFdmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic2VsZWN0IiA9PT0gYy5fdHlwZSB8fCAidW5zZWxlY3QiID09PSBjLl90eXBlKSByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGQubGVuZ3RoIDwgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZC5kYXRhKCJkYXRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGUuZWxlbWVudCAmJiBlLmVsZW1lbnQuc2VsZWN0ZWQgfHwgbnVsbCA9PSBlLmVsZW1lbnQgJiYgZS5zZWxlY3RlZCB8fCB0aGlzLnRyaWdnZXIoInNlbGVjdCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgYQogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2Ryb3Bkb3duL2Nsb3NlT25TZWxlY3QiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYSgpIHt9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKHRoaXMsIGIsIGMpLCBiLm9uKCJzZWxlY3QiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLl9zZWxlY3RUcmlnZ2VyZWQoYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGIub24oInVuc2VsZWN0IiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5fc2VsZWN0VHJpZ2dlcmVkKGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUuX3NlbGVjdFRyaWdnZXJlZCA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBiLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGMgJiYgYy5jdHJsS2V5IHx8IHRoaXMudHJpZ2dlcigiY2xvc2UiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxTZWxlY3QyRXZlbnQ6IGIKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBhCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvaTE4bi9lbiIsIFtdLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvckxvYWRpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJUaGUgcmVzdWx0cyBjb3VsZCBub3QgYmUgbG9hZGVkLiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRUb29Mb25nOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEuaW5wdXQubGVuZ3RoIC0gYS5tYXhpbXVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAiUGxlYXNlIGRlbGV0ZSAiICsgYiArICIgY2hhcmFjdGVyIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxICE9IGIgJiYgKGMgKz0gInMiKSwgYwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFRvb1Nob3J0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlBsZWFzZSBlbnRlciAiICsgKGEubWluaW11bSAtIGEuaW5wdXQubGVuZ3RoKSArICIgb3IgbW9yZSBjaGFyYWN0ZXJzIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nTW9yZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkxvYWRpbmcgbW9yZSByZXN1bHRz4oCmIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gIllvdSBjYW4gb25seSBzZWxlY3QgIiArIGEubWF4aW11bSArICIgaXRlbSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAhPSBhLm1heGltdW0gJiYgKGIgKz0gInMiKSwgYgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBub1Jlc3VsdHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJObyByZXN1bHRzIGZvdW5kIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJTZWFyY2hpbmfigKYiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZGVmYXVsdHMiLCBbImpxdWVyeSIsICJyZXF1aXJlIiwgIi4vcmVzdWx0cyIsICIuL3NlbGVjdGlvbi9zaW5nbGUiLCAiLi9zZWxlY3Rpb24vbXVsdGlwbGUiLCAiLi9zZWxlY3Rpb24vcGxhY2Vob2xkZXIiLCAiLi9zZWxlY3Rpb24vYWxsb3dDbGVhciIsICIuL3NlbGVjdGlvbi9zZWFyY2giLCAiLi9zZWxlY3Rpb24vZXZlbnRSZWxheSIsICIuL3V0aWxzIiwgIi4vdHJhbnNsYXRpb24iLCAiLi9kaWFjcml0aWNzIiwgIi4vZGF0YS9zZWxlY3QiLCAiLi9kYXRhL2FycmF5IiwgIi4vZGF0YS9hamF4IiwgIi4vZGF0YS90YWdzIiwgIi4vZGF0YS90b2tlbml6ZXIiLCAiLi9kYXRhL21pbmltdW1JbnB1dExlbmd0aCIsICIuL2RhdGEvbWF4aW11bUlucHV0TGVuZ3RoIiwgIi4vZGF0YS9tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIiwgIi4vZHJvcGRvd24iLCAiLi9kcm9wZG93bi9zZWFyY2giLCAiLi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXIiLCAiLi9kcm9wZG93bi9pbmZpbml0ZVNjcm9sbCIsICIuL2Ryb3Bkb3duL2F0dGFjaEJvZHkiLCAiLi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCIsICIuL2Ryb3Bkb3duL3NlbGVjdE9uQ2xvc2UiLCAiLi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0IiwgIi4vaTE4bi9lbiJdLCBmdW5jdGlvbihhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsLCBtLCBuLCBvLCBwLCBxLCByLCBzLCB0LCB1LCB2LCB3LCB4LCB5LCB6LCBBLCBCLCBDKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gRCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBELnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uKGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBhLmV4dGVuZCghMCwge30sIHRoaXMuZGVmYXVsdHMsIGwpLCBudWxsID09IGwuZGF0YUFkYXB0ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGwuYWpheCA/IGwuZGF0YUFkYXB0ZXIgPSBvIDogbnVsbCAhPSBsLmRhdGEgPyBsLmRhdGFBZGFwdGVyID0gbiA6IGwuZGF0YUFkYXB0ZXIgPSBtLCBsLm1pbmltdW1JbnB1dExlbmd0aCA+IDAgJiYgKGwuZGF0YUFkYXB0ZXIgPSBqLkRlY29yYXRlKGwuZGF0YUFkYXB0ZXIsIHIpKSwgbC5tYXhpbXVtSW5wdXRMZW5ndGggPiAwICYmIChsLmRhdGFBZGFwdGVyID0gai5EZWNvcmF0ZShsLmRhdGFBZGFwdGVyLCBzKSksIGwubWF4aW11bVNlbGVjdGlvbkxlbmd0aCA+IDAgJiYgKGwuZGF0YUFkYXB0ZXIgPSBqLkRlY29yYXRlKGwuZGF0YUFkYXB0ZXIsIHQpKSwgbC50YWdzICYmIChsLmRhdGFBZGFwdGVyID0gai5EZWNvcmF0ZShsLmRhdGFBZGFwdGVyLCBwKSksIG51bGwgPT0gbC50b2tlblNlcGFyYXRvcnMgJiYgbnVsbCA9PSBsLnRva2VuaXplciB8fCAobC5kYXRhQWRhcHRlciA9IGouRGVjb3JhdGUobC5kYXRhQWRhcHRlciwgcSkpLCBudWxsICE9IGwucXVlcnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQyA9IGIobC5hbWRCYXNlICsgImNvbXBhdC9xdWVyeSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuZGF0YUFkYXB0ZXIgPSBqLkRlY29yYXRlKGwuZGF0YUFkYXB0ZXIsIEMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBsLmluaXRTZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRCA9IGIobC5hbWRCYXNlICsgImNvbXBhdC9pbml0U2VsZWN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5kYXRhQWRhcHRlciA9IGouRGVjb3JhdGUobC5kYXRhQWRhcHRlciwgRCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBsLnJlc3VsdHNBZGFwdGVyICYmIChsLnJlc3VsdHNBZGFwdGVyID0gYywgbnVsbCAhPSBsLmFqYXggJiYgKGwucmVzdWx0c0FkYXB0ZXIgPSBqLkRlY29yYXRlKGwucmVzdWx0c0FkYXB0ZXIsIHgpKSwgbnVsbCAhPSBsLnBsYWNlaG9sZGVyICYmIChsLnJlc3VsdHNBZGFwdGVyID0gai5EZWNvcmF0ZShsLnJlc3VsdHNBZGFwdGVyLCB3KSksIGwuc2VsZWN0T25DbG9zZSAmJiAobC5yZXN1bHRzQWRhcHRlciA9IGouRGVjb3JhdGUobC5yZXN1bHRzQWRhcHRlciwgQSkpKSwgbnVsbCA9PSBsLmRyb3Bkb3duQWRhcHRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwubXVsdGlwbGUpIGwuZHJvcGRvd25BZGFwdGVyID0gdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBFID0gai5EZWNvcmF0ZSh1LCB2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmRyb3Bkb3duQWRhcHRlciA9IEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBsLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoICYmIChsLmRyb3Bkb3duQWRhcHRlciA9IGouRGVjb3JhdGUobC5kcm9wZG93bkFkYXB0ZXIsIHopKSwgbC5jbG9zZU9uU2VsZWN0ICYmIChsLmRyb3Bkb3duQWRhcHRlciA9IGouRGVjb3JhdGUobC5kcm9wZG93bkFkYXB0ZXIsIEIpKSwgbnVsbCAhPSBsLmRyb3Bkb3duQ3NzQ2xhc3MgfHwgbnVsbCAhPSBsLmRyb3Bkb3duQ3NzIHx8IG51bGwgIT0gbC5hZGFwdERyb3Bkb3duQ3NzQ2xhc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRiA9IGIobC5hbWRCYXNlICsgImNvbXBhdC9kcm9wZG93bkNzcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuZHJvcGRvd25BZGFwdGVyID0gai5EZWNvcmF0ZShsLmRyb3Bkb3duQWRhcHRlciwgRikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuZHJvcGRvd25BZGFwdGVyID0gai5EZWNvcmF0ZShsLmRyb3Bkb3duQWRhcHRlciwgeSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBsLnNlbGVjdGlvbkFkYXB0ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLm11bHRpcGxlID8gbC5zZWxlY3Rpb25BZGFwdGVyID0gZSA6IGwuc2VsZWN0aW9uQWRhcHRlciA9IGQsIG51bGwgIT0gbC5wbGFjZWhvbGRlciAmJiAobC5zZWxlY3Rpb25BZGFwdGVyID0gai5EZWNvcmF0ZShsLnNlbGVjdGlvbkFkYXB0ZXIsIGYpKSwgbC5hbGxvd0NsZWFyICYmIChsLnNlbGVjdGlvbkFkYXB0ZXIgPSBqLkRlY29yYXRlKGwuc2VsZWN0aW9uQWRhcHRlciwgZykpLCBsLm11bHRpcGxlICYmIChsLnNlbGVjdGlvbkFkYXB0ZXIgPSBqLkRlY29yYXRlKGwuc2VsZWN0aW9uQWRhcHRlciwgaCkpLCBudWxsICE9IGwuY29udGFpbmVyQ3NzQ2xhc3MgfHwgbnVsbCAhPSBsLmNvbnRhaW5lckNzcyB8fCBudWxsICE9IGwuYWRhcHRDb250YWluZXJDc3NDbGFzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBHID0gYihsLmFtZEJhc2UgKyAiY29tcGF0L2NvbnRhaW5lckNzcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuc2VsZWN0aW9uQWRhcHRlciA9IGouRGVjb3JhdGUobC5zZWxlY3Rpb25BZGFwdGVyLCBHKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5zZWxlY3Rpb25BZGFwdGVyID0gai5EZWNvcmF0ZShsLnNlbGVjdGlvbkFkYXB0ZXIsIGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBsLmxhbmd1YWdlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwubGFuZ3VhZ2UuaW5kZXhPZigiLSIpID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBIID0gbC5sYW5ndWFnZS5zcGxpdCgiLSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gSFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmxhbmd1YWdlID0gW2wubGFuZ3VhZ2UsIEldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgbC5sYW5ndWFnZSA9IFtsLmxhbmd1YWdlXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEuaXNBcnJheShsLmxhbmd1YWdlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEogPSBuZXcgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwubGFuZ3VhZ2UucHVzaCgiZW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIEsgPSBsLmxhbmd1YWdlLCBMID0gMDsgTCA8IEsubGVuZ3RoOyBMKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgTSA9IEtbTF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gay5sb2FkUGF0aChNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gPSB0aGlzLmRlZmF1bHRzLmFtZExhbmd1YWdlQmFzZSArIE0sIE4gPSBrLmxvYWRQYXRoKE0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGxhbmd1YWdlIGZpbGUgZm9yICInICsgTSArICciIGNvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZC4gQSBmYWxsYmFjayB3aWxsIGJlIHVzZWQgaW5zdGVhZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSi5leHRlbmQoTikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwudHJhbnNsYXRpb25zID0gSgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8gPSBrLmxvYWRQYXRoKHRoaXMuZGVmYXVsdHMuYW1kTGFuZ3VhZ2VCYXNlICsgImVuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCA9IG5ldyBrKGwubGFuZ3VhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgUC5leHRlbmQoTyksIGwudHJhbnNsYXRpb25zID0gUAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsCiAgICAgICAgICAgICAgICAgICAgfSwgRC5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbFthXSB8fCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5yZXBsYWNlKC9bXlx1MDAwMC1cdTAwN0VdL2csIGIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIiID09PSBhLnRyaW0oZC50ZXJtKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5jaGlsZHJlbiAmJiBlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmID0gYS5leHRlbmQoITAsIHt9LCBlKSwgZyA9IGUuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgZyA+PSAwOyBnLS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSBjKGQsIGUuY2hpbGRyZW5bZ10pICYmIGYuY2hpbGRyZW4uc3BsaWNlKGcsIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmLmNoaWxkcmVuLmxlbmd0aCA+IDAgPyBmIDogYyhkLCBmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBiKGUudGV4dCkudG9VcHBlckNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYihkLnRlcm0pLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaC5pbmRleE9mKGkpID4gLTEgPyBlIDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbWRCYXNlOiAiLi8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1kTGFuZ3VhZ2VCYXNlOiAiLi9pMThuLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZU9uU2VsZWN0OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duQXV0b1dpZHRoOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZU1hcmt1cDogai5lc2NhcGVNYXJrdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXI6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtSW5wdXRMZW5ndGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtSW5wdXRMZW5ndGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPbkNsb3NlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlcjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVSZXN1bHQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS50ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS50ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU6ICJkZWZhdWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAicmVzb2x2ZSIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIEQucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBhLmNhbWVsQ2FzZShiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgZVtkXSA9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gai5fY29udmVydERhdGEoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuZXh0ZW5kKHRoaXMuZGVmYXVsdHMsIGYpCiAgICAgICAgICAgICAgICAgICAgfSwgbmV3IEQKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9vcHRpb25zIiwgWyJyZXF1aXJlIiwgImpxdWVyeSIsICIuL2RlZmF1bHRzIiwgIi4vdXRpbHMiXSwgZnVuY3Rpb24oYSwgYiwgYywgZCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoYiwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zID0gYiwgbnVsbCAhPSBlICYmIHRoaXMuZnJvbUVsZW1lbnQoZSksIHRoaXMub3B0aW9ucyA9IGMuYXBwbHkodGhpcy5vcHRpb25zKSwgZSAmJiBlLmlzKCJpbnB1dCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGEodGhpcy5nZXQoImFtZEJhc2UiKSArICJjb21wYXQvaW5wdXREYXRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBkLkRlY29yYXRlKHRoaXMub3B0aW9ucy5kYXRhQWRhcHRlciwgZikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wcm90b3R5cGUuZnJvbUVsZW1lbnQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gWyJzZWxlY3QyIl07CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gdGhpcy5vcHRpb25zLm11bHRpcGxlICYmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUgPSBhLnByb3AoIm11bHRpcGxlIikpLCBudWxsID09IHRoaXMub3B0aW9ucy5kaXNhYmxlZCAmJiAodGhpcy5vcHRpb25zLmRpc2FibGVkID0gYS5wcm9wKCJkaXNhYmxlZCIpKSwgbnVsbCA9PSB0aGlzLm9wdGlvbnMubGFuZ3VhZ2UgJiYgKGEucHJvcCgibGFuZyIpID8gdGhpcy5vcHRpb25zLmxhbmd1YWdlID0gYS5wcm9wKCJsYW5nIikudG9Mb3dlckNhc2UoKSA6IGEuY2xvc2VzdCgiW2xhbmddIikucHJvcCgibGFuZyIpICYmICh0aGlzLm9wdGlvbnMubGFuZ3VhZ2UgPSBhLmNsb3Nlc3QoIltsYW5nXSIpLnByb3AoImxhbmciKSkpLCBudWxsID09IHRoaXMub3B0aW9ucy5kaXIgJiYgKGEucHJvcCgiZGlyIikgPyB0aGlzLm9wdGlvbnMuZGlyID0gYS5wcm9wKCJkaXIiKSA6IGEuY2xvc2VzdCgiW2Rpcl0iKS5wcm9wKCJkaXIiKSA/IHRoaXMub3B0aW9ucy5kaXIgPSBhLmNsb3Nlc3QoIltkaXJdIikucHJvcCgiZGlyIikgOiB0aGlzLm9wdGlvbnMuZGlyID0gImx0ciIpLCBhLnByb3AoImRpc2FibGVkIiwgdGhpcy5vcHRpb25zLmRpc2FibGVkKSwgYS5wcm9wKCJtdWx0aXBsZSIsIHRoaXMub3B0aW9ucy5tdWx0aXBsZSksIGEuZGF0YSgic2VsZWN0MlRhZ3MiKSAmJiAodGhpcy5vcHRpb25zLmRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBgZGF0YS1zZWxlY3QyLXRhZ3NgIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIHVzZSB0aGUgYGRhdGEtZGF0YWAgYW5kIGBkYXRhLXRhZ3M9InRydWUiYCBhdHRyaWJ1dGVzIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuJyksIGEuZGF0YSgiZGF0YSIsIGEuZGF0YSgic2VsZWN0MlRhZ3MiKSksIGEuZGF0YSgidGFncyIsICEwKSksIGEuZGF0YSgiYWpheFVybCIpICYmICh0aGlzLm9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybigiU2VsZWN0MjogVGhlIGBkYXRhLWFqYXgtdXJsYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byBgZGF0YS1hamF4LS11cmxgIGFuZCBzdXBwb3J0IGZvciB0aGUgb2xkIGF0dHJpYnV0ZSB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuIiksIGEuYXR0cigiYWpheC0tdXJsIiwgYS5kYXRhKCJhamF4VXJsIikpLCBhLmRhdGEoImFqYXgtLXVybCIsIGEuZGF0YSgiYWpheFVybCIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBiLmZuLmpxdWVyeSAmJiAiMS4iID09IGIuZm4uanF1ZXJ5LnN1YnN0cigwLCAyKSAmJiBhWzBdLmRhdGFzZXQgPyBiLmV4dGVuZCghMCwge30sIGFbMF0uZGF0YXNldCwgYS5kYXRhKCkpIDogYS5kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gYi5leHRlbmQoITAsIHt9LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGQuX2NvbnZlcnREYXRhKGYpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnIGluIGYpIGIuaW5BcnJheShnLCBjKSA+IC0xIHx8IChiLmlzUGxhaW5PYmplY3QodGhpcy5vcHRpb25zW2ddKSA/IGIuZXh0ZW5kKHRoaXMub3B0aW9uc1tnXSwgZltnXSkgOiB0aGlzLm9wdGlvbnNbZ10gPSBmW2ddKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbYV0KICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1thXSA9IGIKICAgICAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvY29yZSIsIFsianF1ZXJ5IiwgIi4vb3B0aW9ucyIsICIuL3V0aWxzIiwgIi4va2V5cyJdLCBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gYS5kYXRhKCJzZWxlY3QyIikgJiYgYS5kYXRhKCJzZWxlY3QyIikuZGVzdHJveSgpLCB0aGlzLiRlbGVtZW50ID0gYSwgdGhpcy5pZCA9IHRoaXMuX2dlbmVyYXRlSWQoYSksIGMgPSBjIHx8IHt9LCB0aGlzLm9wdGlvbnMgPSBuZXcgYihjLCBhKSwgZS5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBhLmF0dHIoInRhYmluZGV4IikgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhKCJvbGQtdGFiaW5kZXgiLCBkKSwgYS5hdHRyKCJ0YWJpbmRleCIsICItMSIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IHRoaXMub3B0aW9ucy5nZXQoImRhdGFBZGFwdGVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUFkYXB0ZXIgPSBuZXcgZihhLCB0aGlzLm9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHRoaXMucmVuZGVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BsYWNlQ29udGFpbmVyKGcpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHRoaXMub3B0aW9ucy5nZXQoInNlbGVjdGlvbkFkYXB0ZXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBuZXcgaChhLCB0aGlzLm9wdGlvbnMpLCB0aGlzLiRzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5yZW5kZXIoKSwgdGhpcy5zZWxlY3Rpb24ucG9zaXRpb24odGhpcy4kc2VsZWN0aW9uLCBnKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLm9wdGlvbnMuZ2V0KCJkcm9wZG93bkFkYXB0ZXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93biA9IG5ldyBpKGEsIHRoaXMub3B0aW9ucyksIHRoaXMuJGRyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5yZW5kZXIoKSwgdGhpcy5kcm9wZG93bi5wb3NpdGlvbih0aGlzLiRkcm9wZG93biwgZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqID0gdGhpcy5vcHRpb25zLmdldCgicmVzdWx0c0FkYXB0ZXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gbmV3IGooYSwgdGhpcy5vcHRpb25zLCB0aGlzLmRhdGFBZGFwdGVyKSwgdGhpcy4kcmVzdWx0cyA9IHRoaXMucmVzdWx0cy5yZW5kZXIoKSwgdGhpcy5yZXN1bHRzLnBvc2l0aW9uKHRoaXMuJHJlc3VsdHMsIHRoaXMuJGRyb3Bkb3duKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9iaW5kQWRhcHRlcnMoKSwgdGhpcy5fcmVnaXN0ZXJEb21FdmVudHMoKSwgdGhpcy5fcmVnaXN0ZXJEYXRhRXZlbnRzKCksIHRoaXMuX3JlZ2lzdGVyU2VsZWN0aW9uRXZlbnRzKCksIHRoaXMuX3JlZ2lzdGVyRHJvcGRvd25FdmVudHMoKSwgdGhpcy5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzKCksIHRoaXMuX3JlZ2lzdGVyRXZlbnRzKCksIHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrLnRyaWdnZXIoInNlbGVjdGlvbjp1cGRhdGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEuYWRkQ2xhc3MoInNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUiKSwgYS5hdHRyKCJhcmlhLWhpZGRlbiIsICJ0cnVlIiksIHRoaXMuX3N5bmNBdHRyaWJ1dGVzKCksIGEuZGF0YSgic2VsZWN0MiIsIHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5FeHRlbmQoZSwgYy5PYnNlcnZhYmxlKSwgZS5wcm90b3R5cGUuX2dlbmVyYXRlSWQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiID0gbnVsbCAhPSBhLmF0dHIoImlkIikgPyBhLmF0dHIoImlkIikgOiBudWxsICE9IGEuYXR0cigibmFtZSIpID8gYS5hdHRyKCJuYW1lIikgKyAiLSIgKyBjLmdlbmVyYXRlQ2hhcnMoMikgOiBjLmdlbmVyYXRlQ2hhcnMoNCksIGIgPSBiLnJlcGxhY2UoLyg6fFwufFxbfFxdfCwpL2csICIiKSwgYiA9ICJzZWxlY3QyLSIgKyBiCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuX3BsYWNlQ29udGFpbmVyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICBhLmluc2VydEFmdGVyKHRoaXMuJGVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX3Jlc29sdmVXaWR0aCh0aGlzLiRlbGVtZW50LCB0aGlzLm9wdGlvbnMuZ2V0KCJ3aWR0aCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBiICYmIGEuY3NzKCJ3aWR0aCIsIGIpCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuX3Jlc29sdmVXaWR0aCA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAvXndpZHRoOigoWy0rXT8oWzAtOV0qXC4pP1swLTldKykocHh8ZW18ZXh8JXxpbnxjbXxtbXxwdHxwYykpL2k7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgicmVzb2x2ZSIgPT0gYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLl9yZXNvbHZlV2lkdGgoYSwgInN0eWxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBkID8gZCA6IHRoaXMuX3Jlc29sdmVXaWR0aChhLCAiZWxlbWVudCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJlbGVtZW50IiA9PSBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGEub3V0ZXJXaWR0aCghMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA8PSAwID8gImF1dG8iIDogZSArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0eWxlIiA9PSBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGEuYXR0cigic3R5bGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZikgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnID0gZi5zcGxpdCgiOyIpLCBoID0gMCwgaSA9IGcubGVuZ3RoOyBoIDwgaTsgaCArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGogPSBnW2hdLnJlcGxhY2UoL1xzL2csICIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGoubWF0Y2goYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGsgJiYgay5sZW5ndGggPj0gMSkgcmV0dXJuIGtbMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5fYmluZEFkYXB0ZXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUFkYXB0ZXIuYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpLCB0aGlzLnNlbGVjdGlvbi5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lciksIHRoaXMuZHJvcGRvd24uYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpLCB0aGlzLnJlc3VsdHMuYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuX3JlZ2lzdGVyRG9tRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5vbigiY2hhbmdlLnNlbGVjdDIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi50cmlnZ2VyKCJzZWxlY3Rpb246dXBkYXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRlbGVtZW50Lm9uKCJmb2N1cy5zZWxlY3QyIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi50cmlnZ2VyKCJmb2N1cyIsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9zeW5jQSA9IGMuYmluZCh0aGlzLl9zeW5jQXR0cmlidXRlcywgdGhpcyksIHRoaXMuX3N5bmNTID0gYy5iaW5kKHRoaXMuX3N5bmNTdWJ0cmVlLCB0aGlzKSwgdGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudCAmJiB0aGlzLiRlbGVtZW50WzBdLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIiwgdGhpcy5fc3luY0EpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5Nb3pNdXRhdGlvbk9ic2VydmVyOwogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGQgPyAodGhpcy5fb2JzZXJ2ZXIgPSBuZXcgZChmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmVhY2goYywgYi5fc3luY0EpLCBhLmVhY2goYywgYi5fc3luY1MpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuJGVsZW1lbnRbMF0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyZWU6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHRoaXMuJGVsZW1lbnRbMF0uYWRkRXZlbnRMaXN0ZW5lciAmJiAodGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKCJET01BdHRyTW9kaWZpZWQiLCBiLl9zeW5jQSwgITEpLCB0aGlzLiRlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIGIuX3N5bmNTLCAhMSksIHRoaXMuJGVsZW1lbnRbMF0uYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCBiLl9zeW5jUywgITEpKQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLl9yZWdpc3RlckRhdGFFdmVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFBZGFwdGVyLm9uKCIqIiwgZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS50cmlnZ2VyKGIsIGMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuX3JlZ2lzdGVyU2VsZWN0aW9uRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBbInRvZ2dsZSIsICJmb2N1cyJdOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5vbigidG9nZ2xlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLnRvZ2dsZURyb3Bkb3duKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuc2VsZWN0aW9uLm9uKCJmb2N1cyIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZm9jdXMoYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuc2VsZWN0aW9uLm9uKCIqIiwgZnVuY3Rpb24oZCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgPT09IGEuaW5BcnJheShkLCBjKSAmJiBiLnRyaWdnZXIoZCwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5fcmVnaXN0ZXJEcm9wZG93bkV2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ub24oIioiLCBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnRyaWdnZXIoYiwgYykKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzLm9uKCIqIiwgZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS50cmlnZ2VyKGIsIGMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuX3JlZ2lzdGVyRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbigib3BlbiIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS4kY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tb3BlbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLm9uKCJjbG9zZSIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS4kY29udGFpbmVyLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tb3BlbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLm9uKCJlbmFibGUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuJGNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMub24oImRpc2FibGUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuJGNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMub24oImJsdXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuJGNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItLWZvY3VzIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMub24oInF1ZXJ5IiwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5pc09wZW4oKSB8fCBhLnRyaWdnZXIoIm9wZW4iLCB7fSksIHRoaXMuZGF0YUFkYXB0ZXIucXVlcnkoYiwgZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEudHJpZ2dlcigicmVzdWx0czphbGwiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLm9uKCJxdWVyeTphcHBlbmQiLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KGIsIGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnRyaWdnZXIoInJlc3VsdHM6YXBwZW5kIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGIud2hpY2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmlzT3BlbigpID8gYyA9PT0gZC5FU0MgfHwgYyA9PT0gZC5UQUIgfHwgYyA9PT0gZC5VUCAmJiBiLmFsdEtleSA/IChhLmNsb3NlKCksIGIucHJldmVudERlZmF1bHQoKSkgOiBjID09PSBkLkVOVEVSID8gKGEudHJpZ2dlcigicmVzdWx0czpzZWxlY3QiLCB7fSksIGIucHJldmVudERlZmF1bHQoKSkgOiBjID09PSBkLlNQQUNFICYmIGIuY3RybEtleSA/IChhLnRyaWdnZXIoInJlc3VsdHM6dG9nZ2xlIiwge30pLCBiLnByZXZlbnREZWZhdWx0KCkpIDogYyA9PT0gZC5VUCA/IChhLnRyaWdnZXIoInJlc3VsdHM6cHJldmlvdXMiLCB7fSksIGIucHJldmVudERlZmF1bHQoKSkgOiBjID09PSBkLkRPV04gJiYgKGEudHJpZ2dlcigicmVzdWx0czpuZXh0Iiwge30pLCBiLnByZXZlbnREZWZhdWx0KCkpIDogKGMgPT09IGQuRU5URVIgfHwgYyA9PT0gZC5TUEFDRSB8fCBjID09PSBkLkRPV04gJiYgYi5hbHRLZXkpICYmIChhLm9wZW4oKSwgYi5wcmV2ZW50RGVmYXVsdCgpKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLl9zeW5jQXR0cmlidXRlcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2V0KCJkaXNhYmxlZCIsIHRoaXMuJGVsZW1lbnQucHJvcCgiZGlzYWJsZWQiKSksIHRoaXMub3B0aW9ucy5nZXQoImRpc2FibGVkIikgPyAodGhpcy5pc09wZW4oKSAmJiB0aGlzLmNsb3NlKCksIHRoaXMudHJpZ2dlcigiZGlzYWJsZSIsIHt9KSkgOiB0aGlzLnRyaWdnZXIoImVuYWJsZSIsIHt9KQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLl9zeW5jU3VidHJlZSA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEgfHwgIWEudGFyZ2V0IHx8ICJPUFRJT04iID09PSBhLnRhcmdldC5ub2RlTmFtZSB8fCAiT1BUR1JPVVAiID09PSBhLnRhcmdldC5ub2RlTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIuYWRkZWROb2RlcyAmJiBiLmFkZGVkTm9kZXMubGVuZ3RoID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCBiLmFkZGVkTm9kZXMubGVuZ3RoOyBlKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gYi5hZGRlZE5vZGVzW2VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5zZWxlY3RlZCAmJiAoYyA9ICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYi5yZW1vdmVkTm9kZXMgJiYgYi5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCAmJiAoYyA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGMgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgJiYgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnRyaWdnZXIoInNlbGVjdGlvbjp1cGRhdGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gZS5fX3N1cGVyX18udHJpZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbjogIm9wZW5pbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlOiAiY2xvc2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiAic2VsZWN0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdDogInVuc2VsZWN0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYiAmJiAoYiA9IHt9KSwgYSBpbiBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGRbYV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnczogYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5jYWxsKHRoaXMsIGYsIGcpLCBnLnByZXZlbnRlZCkgcmV0dXJuIHZvaWQoYi5wcmV2ZW50ZWQgPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwodGhpcywgYSwgYikKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS50b2dnbGVEcm9wZG93biA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0KCJkaXNhYmxlZCIpIHx8ICh0aGlzLmlzT3BlbigpID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCkpCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbigpIHx8IHRoaXMudHJpZ2dlcigicXVlcnkiLCB7fSkKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbigpICYmIHRoaXMudHJpZ2dlcigiY2xvc2UiLCB7fSkKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5pc09wZW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lci5oYXNDbGFzcygic2VsZWN0Mi1jb250YWluZXItLW9wZW4iKQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmhhc0ZvY3VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRjb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS1mb2N1cyIpCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRm9jdXMoKSB8fCAodGhpcy4kY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMiKSwgdGhpcy50cmlnZ2VyKCJmb2N1cyIsIHt9KSkKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5nZXQoImRlYnVnIikgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGBzZWxlY3QyKCJlbmFibGUiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQucHJvcCgiZGlzYWJsZWQiKSBpbnN0ZWFkLicpLCBudWxsICE9IGEgJiYgMCAhPT0gYS5sZW5ndGggfHwgKGEgPSBbITBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSAhYVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsIGIpCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0KCJkZWJ1ZyIpICYmIGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLndhcm4oJ1NlbGVjdDI6IERhdGEgY2FuIG5vIGxvbmdlciBiZSBzZXQgdXNpbmcgYHNlbGVjdDIoImRhdGEiKWAuIFlvdSBzaG91bGQgY29uc2lkZXIgc2V0dGluZyB0aGUgdmFsdWUgaW5zdGVhZCB1c2luZyBgJGVsZW1lbnQudmFsKClgLicpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhCiAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUudmFsID0gZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmdldCgiZGVidWciKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4gJiYgY29uc29sZS53YXJuKCdTZWxlY3QyOiBUaGUgYHNlbGVjdDIoInZhbCIpYCBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGxhdGVyIFNlbGVjdDIgdmVyc2lvbnMuIFVzZSAkZWxlbWVudC52YWwoKSBpbnN0ZWFkLicpLCBudWxsID09IGIgfHwgMCA9PT0gYi5sZW5ndGgpIHJldHVybiB0aGlzLiRlbGVtZW50LnZhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGJbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGEuaXNBcnJheShjKSAmJiAoYyA9IGEubWFwKGMsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLiRlbGVtZW50LnZhbChjKS50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kY29udGFpbmVyLnJlbW92ZSgpLCB0aGlzLiRlbGVtZW50WzBdLmRldGFjaEV2ZW50ICYmIHRoaXMuJGVsZW1lbnRbMF0uZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLCB0aGlzLl9zeW5jQSksIG51bGwgIT0gdGhpcy5fb2JzZXJ2ZXIgPyAodGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpLCB0aGlzLl9vYnNlcnZlciA9IG51bGwpIDogdGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyICYmICh0aGlzLiRlbGVtZW50WzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUF0dHJNb2RpZmllZCIsIHRoaXMuX3N5bmNBLCAhMSksIHRoaXMuJGVsZW1lbnRbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhpcy5fc3luY1MsICExKSwgdGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIHRoaXMuX3N5bmNTLCAhMSkpLCB0aGlzLl9zeW5jQSA9IG51bGwsIHRoaXMuX3N5bmNTID0gbnVsbCwgdGhpcy4kZWxlbWVudC5vZmYoIi5zZWxlY3QyIiksIHRoaXMuJGVsZW1lbnQuYXR0cigidGFiaW5kZXgiLCB0aGlzLiRlbGVtZW50LmRhdGEoIm9sZC10YWJpbmRleCIpKSwgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygic2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSIpLCB0aGlzLiRlbGVtZW50LmF0dHIoImFyaWEtaGlkZGVuIiwgImZhbHNlIiksIHRoaXMuJGVsZW1lbnQucmVtb3ZlRGF0YSgic2VsZWN0MiIpLCB0aGlzLmRhdGFBZGFwdGVyLmRlc3Ryb3koKSwgdGhpcy5zZWxlY3Rpb24uZGVzdHJveSgpLCB0aGlzLmRyb3Bkb3duLmRlc3Ryb3koKSwgdGhpcy5yZXN1bHRzLmRlc3Ryb3koKSwgdGhpcy5kYXRhQWRhcHRlciA9IG51bGwsIHRoaXMuc2VsZWN0aW9uID0gbnVsbCwgdGhpcy5kcm9wZG93biA9IG51bGwsIHRoaXMucmVzdWx0cyA9IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhKCc8c3BhbiBjbGFzcz0ic2VsZWN0MiBzZWxlY3QyLWNvbnRhaW5lciI+PHNwYW4gY2xhc3M9InNlbGVjdGlvbiI+PC9zcGFuPjxzcGFuIGNsYXNzPSJkcm9wZG93bi13cmFwcGVyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPjwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuYXR0cigiZGlyIiwgdGhpcy5vcHRpb25zLmdldCgiZGlyIikpLCB0aGlzLiRjb250YWluZXIgPSBiLCB0aGlzLiRjb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS0iICsgdGhpcy5vcHRpb25zLmdldCgidGhlbWUiKSksIGIuZGF0YSgiZWxlbWVudCIsIHRoaXMuJGVsZW1lbnQpLCBiCiAgICAgICAgICAgICAgICAgICAgfSwgZQogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2NvbXBhdC91dGlscyIsIFsianF1ZXJ5Il0sIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGIsIGMsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIGYsIGcgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEudHJpbShiLmF0dHIoImNsYXNzIikpLCBlICYmIChlID0gIiIgKyBlLCBhKGUuc3BsaXQoL1xzKy8pKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gdGhpcy5pbmRleE9mKCJzZWxlY3QyLSIpICYmIGcucHVzaCh0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUgPSBhLnRyaW0oYy5hdHRyKCJjbGFzcyIpKSwgZSAmJiAoZSA9ICIiICsgZSwgYShlLnNwbGl0KC9ccysvKSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgIT09IHRoaXMuaW5kZXhPZigic2VsZWN0Mi0iKSAmJiBudWxsICE9IChmID0gZCh0aGlzKSkgJiYgZy5wdXNoKGYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYi5hdHRyKCJjbGFzcyIsIGcuam9pbigiICIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzeW5jQ3NzQ2xhc3NlczogYgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9jb21wYXQvY29udGFpbmVyQ3NzIiwgWyJqcXVlcnkiLCAiLi91dGlscyJdLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKCkge30KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGQuY2FsbCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB0aGlzLm9wdGlvbnMuZ2V0KCJjb250YWluZXJDc3NDbGFzcyIpIHx8ICIiOwogICAgICAgICAgICAgICAgICAgICAgICBhLmlzRnVuY3Rpb24oZikgJiYgKGYgPSBmKHRoaXMuJGVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSB0aGlzLm9wdGlvbnMuZ2V0KCJhZGFwdENvbnRhaW5lckNzc0NsYXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZyB8fCBjLCAtMSAhPT0gZi5pbmRleE9mKCI6YWxsOiIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZi5yZXBsYWNlKCI6YWxsOiIsICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBoKGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGIgPyBiICsgIiAiICsgYSA6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMub3B0aW9ucy5nZXQoImNvbnRhaW5lckNzcyIpIHx8IHt9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5pc0Z1bmN0aW9uKGkpICYmIChpID0gaSh0aGlzLiRlbGVtZW50KSksIGIuc3luY0Nzc0NsYXNzZXMoZSwgdGhpcy4kZWxlbWVudCwgZyksIGUuY3NzKGkpLCBlLmFkZENsYXNzKGYpLCBlCiAgICAgICAgICAgICAgICAgICAgfSwgZAogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2NvbXBhdC9kcm9wZG93bkNzcyIsIFsianF1ZXJ5IiwgIi4vdXRpbHMiXSwgZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoYSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZCgpIHt9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBkLmNhbGwodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdGhpcy5vcHRpb25zLmdldCgiZHJvcGRvd25Dc3NDbGFzcyIpIHx8ICIiOwogICAgICAgICAgICAgICAgICAgICAgICBhLmlzRnVuY3Rpb24oZikgJiYgKGYgPSBmKHRoaXMuJGVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSB0aGlzLm9wdGlvbnMuZ2V0KCJhZGFwdERyb3Bkb3duQ3NzQ2xhc3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnIHx8IGMsIC0xICE9PSBmLmluZGV4T2YoIjphbGw6IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmLnJlcGxhY2UoIjphbGw6IiwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGgoYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gYiA/IGIgKyAiICIgKyBhIDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5vcHRpb25zLmdldCgiZHJvcGRvd25Dc3MiKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuaXNGdW5jdGlvbihpKSAmJiAoaSA9IGkodGhpcy4kZWxlbWVudCkpLCBiLnN5bmNDc3NDbGFzc2VzKGUsIHRoaXMuJGVsZW1lbnQsIGcpLCBlLmNzcyhpKSwgZS5hZGRDbGFzcyhmKSwgZQogICAgICAgICAgICAgICAgICAgIH0sIGQKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9jb21wYXQvaW5pdFNlbGVjdGlvbiIsIFsianF1ZXJ5Il0sIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXQoImRlYnVnIikgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybigiU2VsZWN0MjogVGhlIGBpbml0U2VsZWN0aW9uYCBvcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBhIGN1c3RvbSBkYXRhIGFkYXB0ZXIgdGhhdCBvdmVycmlkZXMgdGhlIGBjdXJyZW50YCBtZXRob2QuIFRoaXMgbWV0aG9kIGlzIG5vdyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaW5zdGVhZCBvZiBhIHNpbmdsZSB0aW1lIHdoZW4gdGhlIGluc3RhbmNlIGlzIGluaXRpYWxpemVkLiBTdXBwb3J0IHdpbGwgYmUgcmVtb3ZlZCBmb3IgdGhlIGBpbml0U2VsZWN0aW9uYCBvcHRpb24gaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIiKSwgdGhpcy5pbml0U2VsZWN0aW9uID0gYy5nZXQoImluaXRTZWxlY3Rpb24iKSwgdGhpcy5faXNJbml0aWFsaXplZCA9ICExLCBhLmNhbGwodGhpcywgYiwgYykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIucHJvdG90eXBlLmN1cnJlbnQgPSBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6ZWQpIHJldHVybiB2b2lkIGIuY2FsbCh0aGlzLCBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U2VsZWN0aW9uLmNhbGwobnVsbCwgdGhpcy4kZWxlbWVudCwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5faXNJbml0aWFsaXplZCA9ICEwLCBhLmlzQXJyYXkoYikgfHwgKGIgPSBbYl0pLCBjKGIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYgogICAgICAgICAgICAgICAgfSksIGIuZGVmaW5lKCJzZWxlY3QyL2NvbXBhdC9pbnB1dERhdGEiLCBbImpxdWVyeSJdLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRhID0gW10sIHRoaXMuX3ZhbHVlU2VwYXJhdG9yID0gYy5nZXQoInZhbHVlU2VwYXJhdG9yIikgfHwgIiwiLCAiaGlkZGVuIiA9PT0gYi5wcm9wKCJ0eXBlIikgJiYgYy5nZXQoImRlYnVnIikgJiYgY29uc29sZSAmJiBjb25zb2xlLndhcm4gJiYgY29uc29sZS53YXJuKCJTZWxlY3QyOiBVc2luZyBhIGhpZGRlbiBpbnB1dCB3aXRoIFNlbGVjdDIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBhbmQgbWF5IHN0b3Agd29ya2luZyBpbiB0aGUgZnV0dXJlLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBgPHNlbGVjdD5gIGVsZW1lbnQgaW5zdGVhZC4iKSwgYS5jYWxsKHRoaXMsIGIsIGMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5zZWxlY3RlZCB8fCAtMSAhPT0gYS5pbkFycmF5KGIuaWQsIGMpID8gKGIuc2VsZWN0ZWQgPSAhMCwgZS5wdXNoKGIpKSA6IGIuc2VsZWN0ZWQgPSAhMSwgYi5jaGlsZHJlbiAmJiBlLnB1c2guYXBwbHkoZSwgZChiLmNoaWxkcmVuLCBjKSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gW10sIGYgPSAwOyBmIDwgdGhpcy5fY3VycmVudERhdGEubGVuZ3RoOyBmKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gdGhpcy5fY3VycmVudERhdGFbZl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnB1c2guYXBwbHkoZSwgZChnLCB0aGlzLiRlbGVtZW50LnZhbCgpLnNwbGl0KHRoaXMuX3ZhbHVlU2VwYXJhdG9yKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYyhlKQogICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoIm11bHRpcGxlIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy4kZWxlbWVudC52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgKz0gdGhpcy5fdmFsdWVTZXBhcmF0b3IgKyBjLmlkLCB0aGlzLiRlbGVtZW50LnZhbChkKSwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5jdXJyZW50KGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEubWFwKGIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnNlbGVjdGVkID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRlbGVtZW50LnZhbChjLmlkKSwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLnVuc2VsZWN0ID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuc2VsZWN0ZWQgPSAhMSwgdGhpcy5jdXJyZW50KGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSBbXSwgZSA9IDA7IGUgPCBhLmxlbmd0aDsgZSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBhW2VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuaWQgIT0gZi5pZCAmJiBkLnB1c2goZi5pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuJGVsZW1lbnQudmFsKGQuam9pbihjLl92YWx1ZVNlcGFyYXRvcikpLCBjLiRlbGVtZW50LnRyaWdnZXIoImNoYW5nZSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSBbXSwgZSA9IDA7IGUgPCB0aGlzLl9jdXJyZW50RGF0YS5sZW5ndGg7IGUrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSB0aGlzLl9jdXJyZW50RGF0YVtlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gdGhpcy5tYXRjaGVzKGIsIGYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZyAmJiBkLnB1c2goZykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6IGQKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5hZGRPcHRpb25zID0gZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEubWFwKGMsIGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEoYlswXSwgImRhdGEiKQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudERhdGEucHVzaC5hcHBseSh0aGlzLl9jdXJyZW50RGF0YSwgZCkKICAgICAgICAgICAgICAgICAgICB9LCBiCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvY29tcGF0L21hdGNoZXIiLCBbImpxdWVyeSJdLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoYywgZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBhLmV4dGVuZCghMCwge30sIGQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gYy50ZXJtIHx8ICIiID09PSBhLnRyaW0oYy50ZXJtKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZC5jaGlsZHJlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGYgPSBkLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGYgPj0gMDsgZi0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZC5jaGlsZHJlbltmXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYihjLnRlcm0sIGcudGV4dCwgZykgfHwgZS5jaGlsZHJlbi5zcGxpY2UoZiwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiKGMudGVybSwgZC50ZXh0LCBkKSA/IGUgOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9jb21wYXQvcXVlcnkiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0KCJkZWJ1ZyIpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgcXVlcnlgIG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGEgY3VzdG9tIGRhdGEgYWRhcHRlciB0aGF0IG92ZXJyaWRlcyB0aGUgYHF1ZXJ5YCBtZXRob2QuIFN1cHBvcnQgd2lsbCBiZSByZW1vdmVkIGZvciB0aGUgYHF1ZXJ5YCBvcHRpb24gaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuIiksIGEuY2FsbCh0aGlzLCBiLCBjKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuY2FsbGJhY2sgPSBjLCB0aGlzLm9wdGlvbnMuZ2V0KCJxdWVyeSIpLmNhbGwobnVsbCwgYikKICAgICAgICAgICAgICAgICAgICB9LCBhCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vYXR0YWNoQ29udGFpbmVyIiwgW10sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBhLmNhbGwodGhpcywgYiwgYykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBjLmZpbmQoIi5kcm9wZG93bi13cmFwcGVyIikuYXBwZW5kKGIpLCBiLmFkZENsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyIpLCBjLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tYmVsb3ciKQogICAgICAgICAgICAgICAgICAgIH0sIGEKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9zdG9wUHJvcGFnYXRpb24iLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYSgpIHt9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2FsbCh0aGlzLCBiLCBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBbImJsdXIiLCAiY2hhbmdlIiwgImNsaWNrIiwgImRibGNsaWNrIiwgImZvY3VzIiwgImZvY3VzaW4iLCAiZm9jdXNvdXQiLCAiaW5wdXQiLCAia2V5ZG93biIsICJrZXl1cCIsICJrZXlwcmVzcyIsICJtb3VzZWRvd24iLCAibW91c2VlbnRlciIsICJtb3VzZWxlYXZlIiwgIm1vdXNlbW92ZSIsICJtb3VzZW92ZXIiLCAibW91c2V1cCIsICJzZWFyY2giLCAidG91Y2hlbmQiLCAidG91Y2hzdGFydCJdOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRkcm9wZG93bi5vbihkLmpvaW4oIiAiKSwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIGEKICAgICAgICAgICAgICAgIH0pLCBiLmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vc3RvcFByb3BhZ2F0aW9uIiwgW10sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoKSB7fQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBhLmNhbGwodGhpcywgYiwgYyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gWyJibHVyIiwgImNoYW5nZSIsICJjbGljayIsICJkYmxjbGljayIsICJmb2N1cyIsICJmb2N1c2luIiwgImZvY3Vzb3V0IiwgImlucHV0IiwgImtleWRvd24iLCAia2V5dXAiLCAia2V5cHJlc3MiLCAibW91c2Vkb3duIiwgIm1vdXNlZW50ZXIiLCAibW91c2VsZWF2ZSIsICJtb3VzZW1vdmUiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAic2VhcmNoIiwgInRvdWNoZW5kIiwgInRvdWNoc3RhcnQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2VsZWN0aW9uLm9uKGQuam9pbigiICIpLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgYQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYi5kZWZpbmUgJiYgYi5kZWZpbmUuYW1kID8gYi5kZWZpbmUoImpxdWVyeS1tb3VzZXdoZWVsIiwgWyJqcXVlcnkiXSwgYykgOiAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyA/IG1vZHVsZS5leHBvcnRzID0gYyA6IGMoYSkKICAgICAgICAgICAgICAgIH0oZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoYikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGIgfHwgd2luZG93LmV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGkuY2FsbChhcmd1bWVudHMsIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiA9IGEuZXZlbnQuZml4KGcpLCBiLnR5cGUgPSAibW91c2V3aGVlbCIsICJkZXRhaWwiIGluIGcgJiYgKG0gPSAtMSAqIGcuZGV0YWlsKSwgIndoZWVsRGVsdGEiIGluIGcgJiYgKG0gPSBnLndoZWVsRGVsdGEpLCAid2hlZWxEZWx0YVkiIGluIGcgJiYgKG0gPSBnLndoZWVsRGVsdGFZKSwgIndoZWVsRGVsdGFYIiBpbiBnICYmIChsID0gLTEgKiBnLndoZWVsRGVsdGFYKSwgImF4aXMiIGluIGcgJiYgZy5heGlzID09PSBnLkhPUklaT05UQUxfQVhJUyAmJiAobCA9IC0xICogbSwgbSA9IDApLCBqID0gMCA9PT0gbSA/IGwgOiBtLCAiZGVsdGFZIiBpbiBnICYmIChtID0gLTEgKiBnLmRlbHRhWSwgaiA9IG0pLCAiZGVsdGFYIiBpbiBnICYmIChsID0gZy5kZWx0YVgsIDAgPT09IG0gJiYgKGogPSAtMSAqIGwpKSwgMCAhPT0gbSB8fCAwICE9PSBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gZy5kZWx0YU1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcSA9IGEuZGF0YSh0aGlzLCAibW91c2V3aGVlbC1saW5lLWhlaWdodCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogKj0gcSwgbSAqPSBxLCBsICo9IHEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoMiA9PT0gZy5kZWx0YU1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGEuZGF0YSh0aGlzLCAibW91c2V3aGVlbC1wYWdlLWhlaWdodCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogKj0gciwgbSAqPSByLCBsICo9IHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gTWF0aC5tYXgoTWF0aC5hYnMobSksIE1hdGguYWJzKGwpKSwgKCFmIHx8IG4gPCBmKSAmJiAoZiA9IG4sIGQoZywgbikgJiYgKGYgLz0gNDApKSwgZChnLCBuKSAmJiAoaiAvPSA0MCwgbCAvPSA0MCwgbSAvPSA0MCksIGogPSBNYXRoW2ogPj0gMSA/ICJmbG9vciIgOiAiY2VpbCJdKGogLyBmKSwgbCA9IE1hdGhbbCA+PSAxID8gImZsb29yIiA6ICJjZWlsIl0obCAvIGYpLCBtID0gTWF0aFttID49IDEgPyAiZmxvb3IiIDogImNlaWwiXShtIC8gZiksIGsuc2V0dGluZ3Mubm9ybWFsaXplT2Zmc2V0ICYmIHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBiLmNsaWVudFggLSBzLmxlZnQsIHAgPSBiLmNsaWVudFkgLSBzLnRvcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuZGVsdGFYID0gbCwgYi5kZWx0YVkgPSBtLCBiLmRlbHRhRmFjdG9yID0gZiwgYi5vZmZzZXRYID0gbywgYi5vZmZzZXRZID0gcCwgYi5kZWx0YU1vZGUgPSAwLCBoLnVuc2hpZnQoYiwgaiwgbCwgbSksIGUgJiYgY2xlYXJUaW1lb3V0KGUpLCBlID0gc2V0VGltZW91dChjLCAyMDApLCAoYS5ldmVudC5kaXNwYXRjaCB8fCBhLmV2ZW50LmhhbmRsZSkuYXBwbHkodGhpcywgaCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG51bGwKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gay5zZXR0aW5ncy5hZGp1c3RPbGREZWx0YXMgJiYgIm1vdXNld2hlZWwiID09PSBhLnR5cGUgJiYgYiAlIDEyMCA9PSAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBlLCBmLCBnID0gWyJ3aGVlbCIsICJtb3VzZXdoZWVsIiwgIkRPTU1vdXNlU2Nyb2xsIiwgIk1vek1vdXNlUGl4ZWxTY3JvbGwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9ICJvbndoZWVsIiBpbiBkb2N1bWVudCB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPj0gOSA/IFsid2hlZWwiXSA6IFsibW91c2V3aGVlbCIsICJEb21Nb3VzZVNjcm9sbCIsICJNb3pNb3VzZVBpeGVsU2Nyb2xsIl0sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuZXZlbnQuZml4SG9va3MpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBnLmxlbmd0aDsgajspIGEuZXZlbnQuZml4SG9va3NbZ1stLWpdXSA9IGEuZXZlbnQubW91c2VIb29rczsKICAgICAgICAgICAgICAgICAgICB2YXIgayA9IGEuZXZlbnQuc3BlY2lhbC5tb3VzZXdoZWVsID0gewogICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiAiMy4xLjEyIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWRkRXZlbnRMaXN0ZW5lcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gaC5sZW5ndGg7IGM7KSB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoaFstLWNdLCBiLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMub25tb3VzZXdoZWVsID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YSh0aGlzLCAibW91c2V3aGVlbC1saW5lLWhlaWdodCIsIGsuZ2V0TGluZUhlaWdodCh0aGlzKSksIGEuZGF0YSh0aGlzLCAibW91c2V3aGVlbC1wYWdlLWhlaWdodCIsIGsuZ2V0UGFnZUhlaWdodCh0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gaC5sZW5ndGg7IGM7KSB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaFstLWNdLCBiLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMub25tb3VzZXdoZWVsID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucmVtb3ZlRGF0YSh0aGlzLCAibW91c2V3aGVlbC1saW5lLWhlaWdodCIpLCBhLnJlbW92ZURhdGEodGhpcywgIm1vdXNld2hlZWwtcGFnZS1oZWlnaHQiKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBnZXRMaW5lSGVpZ2h0OiBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEoYiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbIm9mZnNldFBhcmVudCIgaW4gYS5mbiA/ICJvZmZzZXRQYXJlbnQiIDogInBhcmVudCJdKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5sZW5ndGggfHwgKGQgPSBhKCJib2R5IikpLCBwYXJzZUludChkLmNzcygiZm9udFNpemUiKSwgMTApIHx8IHBhcnNlSW50KGMuY3NzKCJmb250U2l6ZSIpLCAxMCkgfHwgMTYKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UGFnZUhlaWdodDogZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEoYikuaGVpZ2h0KCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkanVzdE9sZERlbHRhczogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVPZmZzZXQ6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGEuZm4uZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2V3aGVlbDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPyB0aGlzLmJpbmQoIm1vdXNld2hlZWwiLCBhKSA6IHRoaXMudHJpZ2dlcigibW91c2V3aGVlbCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVubW91c2V3aGVlbDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5iaW5kKCJtb3VzZXdoZWVsIiwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgYi5kZWZpbmUoImpxdWVyeS5zZWxlY3QyIiwgWyJqcXVlcnkiLCAianF1ZXJ5LW1vdXNld2hlZWwiLCAiLi9zZWxlY3QyL2NvcmUiLCAiLi9zZWxlY3QyL2RlZmF1bHRzIl0sIGZ1bmN0aW9uKGEsIGIsIGMsIGQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBhLmZuLnNlbGVjdDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBbIm9wZW4iLCAiY2xvc2UiLCAiZGVzdHJveSJdOwogICAgICAgICAgICAgICAgICAgICAgICBhLmZuLnNlbGVjdDIgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mKGIgPSBiIHx8IHt9KSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEuZXh0ZW5kKCEwLCB7fSwgYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGMoYSh0aGlzKSwgZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQsIGYgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYSh0aGlzKS5kYXRhKCJzZWxlY3QyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gYyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yICYmIGNvbnNvbGUuZXJyb3IoIlRoZSBzZWxlY3QyKCciICsgYiArICInKSBtZXRob2Qgd2FzIGNhbGxlZCBvbiBhbiBlbGVtZW50IHRoYXQgaXMgbm90IHVzaW5nIFNlbGVjdDIuIiksIGQgPSBjW2JdLmFwcGx5KGMsIGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEuaW5BcnJheShiLCBlKSA+IC0xID8gdGhpcyA6IGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgZm9yIFNlbGVjdDI6ICIgKyBiKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGEuZm4uc2VsZWN0Mi5kZWZhdWx0cyAmJiAoYS5mbi5zZWxlY3QyLmRlZmF1bHRzID0gZCksIGMKICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgZGVmaW5lOiBiLmRlZmluZSwKICAgICAgICAgICAgICAgICAgICByZXF1aXJlOiBiLnJlcXVpcmUKICAgICAgICAgICAgICAgIH0KICAgICAgICB9KCksCiAgICAgICAgYyA9IGIucmVxdWlyZSgianF1ZXJ5LnNlbGVjdDIiKTsKICAgIHJldHVybiBhLmZuLnNlbGVjdDIuYW1kID0gYiwgYwp9KTs="}},"time_used":1162,"timings":{"blocked":1060,"dns":0,"connect":0,"send":0,"wait":99,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/mailchimp-for-wp/assets/js/forms.js?ver=4.8.7","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.482Z","timestamp":1785145482482,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/mailchimp-for-wp/assets/js/forms.js?ver=4.8.7 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 12394\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":12394,"size_decoded":12611,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"e849df45aefc0be024b952fce1fcbedd","sha1":"7a71530a5fdc501280725d7dba960851ac1a32e3","sha256":"6a1ae2a9743f4308d724e8510b1038efc841175c4bbc336d2d49adebe9571065","sha512":"7ccd6eae07fc1422629a6d96efca125e219a172ea85b023bff5a96c1acc9d2f2ccb18440a8af8a750f498ddf9126c7e888565a9f243c047442a1d3f8bc3314cd","ssdeep":"192:lB3yyagkEnlToGmzg4SMSoVdsPidk33gS9VlMUVKR4m+nBnfyigzgSZJH5VHy4BT:lB3yyagboGmzg41VciKH8U7m+GzJ3ZbT","tlshash":"f042955977f62534532bb0764baf8408b236614b168ddd013d0ca1a15fd8c386bfafe8","first_seen":"2025-08-02T14:07:29.07558Z","last_seen":"2026-07-27T09:45:50.938321Z","times_seen":7,"resource_available":true,"data":"KCgpID0+IHsKICAgIHZhciBlID0gewogICAgICAgICAgICAxNjc3OiAoKSA9PiB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gISFlLmdldEF0dHJpYnV0ZSgiZGF0YS1zaG93LWlmIiksIHIgPSB0ID8gZS5nZXRBdHRyaWJ1dGUoImRhdGEtc2hvdy1pZiIpLnNwbGl0KCI6IikgOiBlLmdldEF0dHJpYnV0ZSgiZGF0YS1oaWRlLWlmIikuc3BsaXQoIjoiKSwgbiA9IHJbMF0sIGEgPSAoci5sZW5ndGggPiAxID8gclsxXSA6ICIqIikuc3BsaXQoInwiKSwgaSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBbXSwgbiA9IGUucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0iJyArIHQgKyAnIl0sc2VsZWN0W25hbWU9IicgKyB0ICsgJyJdLHRleHRhcmVhW25hbWU9IicgKyB0ICsgJyJdJyksIGEgPSAwOyBhIDwgbi5sZW5ndGg7IGErKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gblthXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInJhZGlvIiAhPT0gaS50eXBlICYmICJjaGVja2JveCIgIT09IGkudHlwZSB8fCBpLmNoZWNrZWQpICYmIHIucHVzaChpLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICAgICAgfShmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gZTsgdC5wYXJlbnRFbGVtZW50OykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIkZPUk0iID09PSAodCA9IHQucGFyZW50RWxlbWVudCkudGFnTmFtZSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9KGUpLCBuKSwgbyA9ICExLCBzID0gMDsgcyA8IGkubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBpW3NdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGEuaW5kZXhPZihjKSA+IC0xIHx8IGEuaW5kZXhPZigiKiIpID4gLTEgJiYgYy5sZW5ndGggPiAwKSBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlLnN0eWxlLmRpc3BsYXkgPSB0ID8gbyA/ICIiIDogIm5vbmUiIDogbyA/ICJub25lIiA6ICIiOwogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gZS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCxzZWxlY3QsdGV4dGFyZWEiKTsKICAgICAgICAgICAgICAgICAgICBbXS5mb3JFYWNoLmNhbGwodSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKG8gfHwgdCkgJiYgZS5nZXRBdHRyaWJ1dGUoImRhdGEtd2FzLXJlcXVpcmVkIikgJiYgKGUucmVxdWlyZWQgPSAhMCwgZS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtd2FzLXJlcXVpcmVkIikpLCBvICYmIHQgfHwgIWUucmVxdWlyZWQgfHwgKGUuc2V0QXR0cmlidXRlKCJkYXRhLXdhcy1yZXF1aXJlZCIsICJ0cnVlIiksIGUucmVxdWlyZWQgPSAhMSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLm1jNHdwLWZvcm0gW2RhdGEtc2hvdy1pZl0sLm1jNHdwLWZvcm0gW2RhdGEtaGlkZS1pZl0iKTsKICAgICAgICAgICAgICAgICAgICBbXS5mb3JFYWNoLmNhbGwodCwgZSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiByKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodC50YXJnZXQgJiYgdC50YXJnZXQuZm9ybSAmJiAhKHQudGFyZ2V0LmZvcm0uY2xhc3NOYW1lLmluZGV4T2YoIm1jNHdwLWZvcm0iKSA8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC50YXJnZXQuZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1zaG93LWlmXSxbZGF0YS1oaWRlLWlmXSIpOwogICAgICAgICAgICAgICAgICAgICAgICBbXS5mb3JFYWNoLmNhbGwociwgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHIsICEwKSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgciwgITApLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtYzR3cC1yZWZyZXNoIiwgdCwgITApLCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHQpLCB0KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjU3MzogKGUsIHQsIHIpID0+IHsKICAgICAgICAgICAgICAgIHZhciBuID0gcig3NDIyKSwKICAgICAgICAgICAgICAgICAgICBhID0gcigzNDA5KSwKICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkID0gZSwgdGhpcy5lbGVtZW50ID0gdCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIiksIHRoaXMubmFtZSA9IHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtbmFtZSIpIHx8ICJGb3JtICMiICsgdGhpcy5pZCwgdGhpcy5lcnJvcnMgPSBbXSwgdGhpcy5zdGFydGVkID0gITEKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgaS5wcm90b3R5cGUuc2V0RGF0YSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBhKHRoaXMuZWxlbWVudCwgZSkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5nZXREYXRhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4odGhpcy5lbGVtZW50LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc2g6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBlbXB0eTogITAKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuZ2V0U2VyaWFsaXplZERhdGEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbih0aGlzLmVsZW1lbnQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5OiAhMAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5zZXRSZXNwb25zZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiLm1jNHdwLXJlc3BvbnNlIikuaW5uZXJIVE1MID0gZQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlc3BvbnNlKCIiKSwgdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tYzR3cC1mb3JtLWZpZWxkcyIpLnN0eWxlLmRpc3BsYXkgPSAiIiwgdGhpcy5lbGVtZW50LnJlc2V0KCkKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IGkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgODU5MjogKGUsIHQsIHIpID0+IHsKICAgICAgICAgICAgICAgIHZhciBuID0gcigyNTczKSwKICAgICAgICAgICAgICAgICAgICBhID0gW10sCiAgICAgICAgICAgICAgICAgICAgaSA9IHt9OwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlbZV0gPSBpW2VdIHx8IFtdLCBpW2VdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYXBwbHkobnVsbCwgdCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB0ID0gdCB8fCBwYXJzZUludChlLmdldEF0dHJpYnV0ZSgiZGF0YS1pZCIpKSB8fCAwOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gbmV3IG4odCwgZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucHVzaChyKSwgcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gewogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlID0gcGFyc2VJbnQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgYS5sZW5ndGg7IHQrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhW3RdLmlkID09PSBlKSByZXR1cm4gYVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLm1jNHdwLWZvcm0tIiArIGUpLCBlKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0QnlFbGVtZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBlLmZvcm0gfHwgZSwgciA9IDA7IHIgPCBhLmxlbmd0aDsgcisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFbcl0uZWxlbWVudCA9PT0gdCkgcmV0dXJuIGFbcl07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvbjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpW2VdID0gaVtlXSB8fCBbXSwgaVtlXS5wdXNoKHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvZmY6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaVtlXSA9IGlbZV0gfHwgW10sIGlbZV0gPSBpW2VdLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgIT09IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzdWJtaXQiID09PSBlIHx8IGUuaW5kZXhPZigiLnN1Ym1pdCIpID4gMCA/IG8oZSwgdCkgOiB3aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzQyMjogZSA9PiB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSwKICAgICAgICAgICAgICAgICAgICByID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pLAogICAgICAgICAgICAgICAgICAgIG4gPSAvKFxbW15cW1xdXSpcXSkvZzsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdC5sZW5ndGgpIHJldHVybiByOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5zaGlmdCgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5tYXRjaCgvXlxbKC4rPylcXSQvKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIltdIiA9PT0gbikgcmV0dXJuIGUgPSBlIHx8IFtdLCBBcnJheS5pc0FycmF5KGUpID8gZS5wdXNoKGEobnVsbCwgdCwgcikpIDogKGUuX3ZhbHVlcyA9IGUuX3ZhbHVlcyB8fCBbXSwgZS5fdmFsdWVzLnB1c2goYShudWxsLCB0LCByKSkpLCBlOwogICAgICAgICAgICAgICAgICAgIGlmIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gaVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSArbzsKICAgICAgICAgICAgICAgICAgICAgICAgaXNOYU4ocykgPyAoZSA9IGUgfHwge30pW29dID0gYShlW29dLCB0LCByKSA6IChlID0gZSB8fCBbXSlbc10gPSBhKGVbc10sIHQsIHIpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGVbbl0gPSBhKGVbbl0sIHQsIHIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQubWF0Y2gobikpIGEoZSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBSZWdFeHAobiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gL14oW15cW1xdXSopLy5leGVjKGUpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGFbMV0gJiYgdC5wdXNoKGFbMV0pOyBudWxsICE9PSAoYSA9IHIuZXhlYyhlKSk7KSB0LnB1c2goYVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgfSh0KSwgcik7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA/IChBcnJheS5pc0FycmF5KGkpIHx8IChlW3RdID0gW2ldKSwgZVt0XS5wdXNoKHIpKSA6IGVbdF0gPSByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPSByLnJlcGxhY2UoLyhccik/XG4vZywgIlxyXG4iKSwgciA9IChyID0gZW5jb2RlVVJJQ29tcG9uZW50KHIpKS5yZXBsYWNlKC8lMjAvZywgIisiKSwgZSArIChlID8gIiYiIDogIiIpICsgZW5jb2RlVVJJQ29tcG9uZW50KHQpICsgIj0iICsgcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICJvYmplY3QiICE9IHR5cGVvZiBuID8gbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogISFuCiAgICAgICAgICAgICAgICAgICAgfSA6IHZvaWQgMCA9PT0gbi5oYXNoICYmIChuLmhhc2ggPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IG4uaGFzaCA/IHt9IDogIiIsIHMgPSBuLnNlcmlhbGl6ZXIgfHwgKG4uaGFzaCA/IGkgOiBvKSwgYyA9IGUgJiYgZS5lbGVtZW50cyA/IGUuZWxlbWVudHMgOiBbXSwgdSA9IE9iamVjdC5jcmVhdGUobnVsbCksIGwgPSAwOyBsIDwgYy5sZW5ndGg7ICsrbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGNbbF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobi5kaXNhYmxlZCB8fCAhZi5kaXNhYmxlZCkgJiYgZi5uYW1lICYmIHIudGVzdChmLm5vZGVOYW1lKSAmJiAhdC50ZXN0KGYudHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZi5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBmLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJjaGVja2JveCIgIT09IGYudHlwZSAmJiAicmFkaW8iICE9PSBmLnR5cGUgfHwgZi5jaGVja2VkIHx8IChtID0gdm9pZCAwKSwgbi5lbXB0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiY2hlY2tib3giICE9PSBmLnR5cGUgfHwgZi5jaGVja2VkIHx8IChtID0gIiIpLCAicmFkaW8iID09PSBmLnR5cGUgJiYgKHVbZi5uYW1lXSB8fCBmLmNoZWNrZWQgPyBmLmNoZWNrZWQgJiYgKHVbZi5uYW1lXSA9ICEwKSA6IHVbZi5uYW1lXSA9ICExKSwgbnVsbCA9PSBtICYmICJyYWRpbyIgPT0gZi50eXBlKSBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInNlbGVjdC1tdWx0aXBsZSIgIT09IGYudHlwZSkgYSA9IHMoYSwgZCwgbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCA9IGYub3B0aW9ucywgaCA9ICExLCB2ID0gMDsgdiA8IHAubGVuZ3RoOyArK3YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBwW3ZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG4uZW1wdHkgJiYgIWcudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gZy52YWx1ZSB8fCB5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLnNlbGVjdGVkICYmIHcgJiYgKGggPSAhMCwgYSA9IG4uaGFzaCAmJiAiW10iICE9PSBkLnNsaWNlKGQubGVuZ3RoIC0gMikgPyBzKGEsIGQgKyAiW10iLCBnLnZhbHVlKSA6IHMoYSwgZCwgZy52YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSFoICYmIG4uZW1wdHkgJiYgKGEgPSBzKGEsIGQsICIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobi5lbXB0eSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCBpbiB1KSB1W2RdIHx8IChhID0gcyhhLCBkLCAiIikpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDM0MDk6IGUgPT4gewogICAgICAgICAgICAgICAgZS5leHBvcnRzICYmIChlLmV4cG9ydHMgPSBmdW5jdGlvbiBlKHQsIHIsIG4pIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhIGluIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmhhc093blByb3BlcnR5KGEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHJbYV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBvICYmIChvID0gIiIpLCBudWxsID09PSBvICYmIChvID0gIiIpLCB2b2lkIDAgIT09IG4gJiYgKGkgPSBuICsgIlsiICsgYSArICJdIiksIG8uY29uc3RydWN0b3IgPT09IEFycmF5KSBpICs9ICJbXSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUodCwgbywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gdC5lbGVtZW50cy5uYW1lZEl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocykgc3dpdGNoIChzLnR5cGUgfHwgc1swXS50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogcy52YWx1ZSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmFkaW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY2hlY2tib3giOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IG8uY29uc3RydWN0b3IgPT09IEFycmF5ID8gbyA6IFtvXSwgdSA9IDA7IHUgPCBzLmxlbmd0aDsgdSsrKSBzW3VdLmNoZWNrZWQgPSBjLmluZGV4T2Yoc1t1XS52YWx1ZSkgPiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0LW11bHRpcGxlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBvLmNvbnN0cnVjdG9yID09PSBBcnJheSA/IG8gOiBbb107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgcy5vcHRpb25zLmxlbmd0aDsgbCsrKSBzLm9wdGlvbnNbbF0uc2VsZWN0ZWQgPSBjLmluZGV4T2Yocy5vcHRpb25zW2xdLnZhbHVlKSA+IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0LW9uZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnZhbHVlID0gby50b1N0cmluZygpIHx8IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy52YWx1ZSA9IG5ldyBEYXRlKG8pLnRvSVNPU3RyaW5nKCkuc3BsaXQoIlQiKVswXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB0ID0ge307CgogICAgZnVuY3Rpb24gcihuKSB7CiAgICAgICAgdmFyIGEgPSB0W25dOwogICAgICAgIGlmICh2b2lkIDAgIT09IGEpIHJldHVybiBhLmV4cG9ydHM7CiAgICAgICAgdmFyIGkgPSB0W25dID0gewogICAgICAgICAgICBleHBvcnRzOiB7fQogICAgICAgIH07CiAgICAgICAgcmV0dXJuIGVbbl0oaSwgaS5leHBvcnRzLCByKSwgaS5leHBvcnRzCiAgICB9KCgpID0+IHsKICAgICAgICB2YXIgZSA9IHdpbmRvdy5tYzR3cCB8fCB7fSwKICAgICAgICAgICAgdCA9IHIoODU5Mik7CgogICAgICAgIGZ1bmN0aW9uIG4oZSwgcikgewogICAgICAgICAgICB0LnRyaWdnZXIoclswXS5pZCArICIuIiArIGUsIHIpLCB0LnRyaWdnZXIoZSwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGUsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gITE7CiAgICAgICAgICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIHIuY2xhc3NOYW1lICYmIChuID0gci5jbGFzc05hbWUuaW5kZXhPZigibWM0d3AtZm9ybSIpID4gLTEpLCBuIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIHIubWF0Y2hlcyB8fCAobiA9IHIubWF0Y2hlcygiLm1jNHdwLWZvcm0gKiIpKSwgbiAmJiB0LmNhbGwoZSwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksICEwKQogICAgICAgIH0KICAgICAgICBpZiAocigxNjc3KSwgYSgic3VibWl0IiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdC5nZXRCeUVsZW1lbnQoZS50YXJnZXQpOwogICAgICAgICAgICAgICAgZS5kZWZhdWx0UHJldmVudGVkIHx8IHQudHJpZ2dlcihyLmlkICsgIi5zdWJtaXQiLCBbciwgZV0pLCBlLmRlZmF1bHRQcmV2ZW50ZWQgfHwgdC50cmlnZ2VyKCJzdWJtaXQiLCBbciwgZV0pCiAgICAgICAgICAgIH0pKSwgYSgiZm9jdXMiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHIgPSB0LmdldEJ5RWxlbWVudChlLnRhcmdldCk7CiAgICAgICAgICAgICAgICByLnN0YXJ0ZWQgfHwgKG4oInN0YXJ0ZWQiLCBbciwgZV0pLCByLnN0YXJ0ZWQgPSAhMCkKICAgICAgICAgICAgfSkpLCBhKCJjaGFuZ2UiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgbigiY2hhbmdlIiwgW3QuZ2V0QnlFbGVtZW50KGUudGFyZ2V0KSwgZV0pCiAgICAgICAgICAgIH0pKSwgZS5saXN0ZW5lcnMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IGUubGlzdGVuZXJzLCBvID0gMDsgbyA8IGkubGVuZ3RoOyBvKyspIHQub24oaVtvXS5ldmVudCwgaVtvXS5jYWxsYmFjayk7CiAgICAgICAgICAgIGRlbGV0ZSBlLmxpc3RlbmVycwogICAgICAgIH0KICAgICAgICBlLmZvcm1zID0gdCwgd2luZG93Lm1jNHdwID0gZQogICAgfSkoKQp9KSgpOw=="}},"time_used":1199,"timings":{"blocked":1105,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/js/preloaded-modules.min.js?ver=3.6.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.514Z","timestamp":1785145482514,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/js/preloaded-modules.min.js?ver=3.6.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 79404\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":79404,"size_decoded":79621,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (777)","md5":"5bec485115a8c17e99f1b1296b866347","sha1":"07b8c4f6c440a57cf4977be2b85a387f047b7e9c","sha256":"d7742fe7723a9d7ce1ee75f13920a60b874c09a5fed77bc77f74617d9ecc7224","sha512":"a935365ffd30d1ea29fcfbb5fb053648c2507e2bf4b2945d6ca55185b6f18ba210c857825c54d82643610acccd65837af32215450517fdc813b64afdc0c7273a","ssdeep":"1536:6bLGS0WgMFC7yVZkDgz3rAKo5EY7gAN5AG/yWCZ+3e9JPDvx4WiXDMaLycni+z2j:gG+TSBp9jO","tlshash":"a373b30e72f25466825b74bb3d1bc4197225824b6c09bd2c3e9c46848f68d6cb7f2fb5","first_seen":"2026-07-27T08:06:56.530024Z","last_seen":"2026-07-27T09:45:50.890634Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvciAtIHYzLjYuMiAtIDA0LTA0LTIwMjIgKi8KKHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yID0gc2VsZi53ZWJwYWNrQ2h1bmtlbGVtZW50b3IgfHwgW10pLnB1c2goWwogICAgWzg4MiwgNzIzLCAyMDksIDc0NSwgMTIwLCAxOTIsIDUyMCwgMTgxLCA3OTEsIDI2OCwgMzU3XSwgewogICAgICAgIDU1MjY6IGUgPT4gewogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgdCwgcykgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHMsCiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAKICAgICAgICAgICAgICAgIH0pIDogZVt0XSA9IHMsIGUKICAgICAgICAgICAgfSwgZS5leHBvcnRzLmRlZmF1bHQgPSBlLmV4cG9ydHMsIGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gITAKICAgICAgICB9LAogICAgICAgIDg0NzA6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoOTcyOCkpOwogICAgICAgICAgICBjbGFzcyBBY2NvcmRpb24gZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnN1cGVyLmdldERlZmF1bHRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBzaG93VGFiRm46ICJzbGlkZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlVGFiRm46ICJzbGlkZVVwIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBBY2NvcmRpb24KICAgICAgICB9LAogICAgICAgIDkyNjk6IChlLCB0KSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIEFsZXJ0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlIHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc21pc3NCdXR0b246ICIuZWxlbWVudG9yLWFsZXJ0LWRpc21pc3MiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkaXNtaXNzQnV0dG9uOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5kaXNtaXNzQnV0dG9uKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kZGlzbWlzc0J1dHRvbi5vbigiY2xpY2siLCB0aGlzLm9uRGlzbWlzc0J1dHRvbkNsaWNrLmJpbmQodGhpcykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkRpc21pc3NCdXR0b25DbGljaygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZhZGVPdXQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEFsZXJ0CiAgICAgICAgfSwKICAgICAgICA5NzI4OiAoZSwgdCkgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBiYXNlVGFicyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsaXN0OiAnW3JvbGU9InRhYmxpc3QiXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJUaXRsZTogIi5lbGVtZW50b3ItdGFiLXRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkNvbnRlbnQ6ICIuZWxlbWVudG9yLXRhYi1jb250ZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6ICJlbGVtZW50b3ItYWN0aXZlIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzaG93VGFiRm46ICJzaG93IiwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVRhYkZuOiAiaGlkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVNlbGY6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlUHJldmlvdXM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBhdXRvRXhwYW5kOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAga2V5RGlyZWN0aW9uOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJvd0xlZnQ6IGVsZW1lbnRvckZyb250ZW5kQ29uZmlnLmlzX3J0bCA/IDEgOiAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycm93VXA6IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyb3dSaWdodDogZWxlbWVudG9yRnJvbnRlbmRDb25maWcuaXNfcnRsID8gLTEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyb3dEb3duOiAxCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJUaXRsZXM6IHRoaXMuZmluZEVsZW1lbnQoZS50YWJUaXRsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJDb250ZW50czogdGhpcy5maW5kRWxlbWVudChlLnRhYkNvbnRlbnQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWN0aXZhdGVEZWZhdWx0VGFiKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmF1dG9FeHBhbmQgfHwgImVkaXRvciIgPT09IGUuYXV0b0V4cGFuZCAmJiAhdGhpcy5pc0VkaXQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRFZGl0U2V0dGluZ3MoImFjdGl2ZUl0ZW1JbmRleCIpIHx8IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGFiRm46IGUuc2hvd1RhYkZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVRhYkZuOiBlLmhpZGVUYWJGbgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2V0dGluZ3MoewogICAgICAgICAgICAgICAgICAgICAgICBzaG93VGFiRm46ICJzaG93IiwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVRhYkZuOiAiaGlkZSIKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5jaGFuZ2VBY3RpdmVUYWIodCksIHRoaXMuc2V0U2V0dGluZ3MocykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkTmF2aWdhdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUuY3VycmVudFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGpRdWVyeSh0LmNsb3Nlc3QodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIikudGFibGlzdCkpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gcy5maW5kKHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLnRhYlRpdGxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICJ2ZXJ0aWNhbCIgPT09IHMuYXR0cigiYXJpYS1vcmllbnRhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiQXJyb3dMZWZ0IjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiQXJyb3dSaWdodCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkFycm93VXAiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJBcnJvd0Rvd24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiSG9tZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLCB2b2lkIG4uZmlyc3QoKS50cmlnZ2VyKCJmb2N1cyIpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJFbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSwgdm9pZCBuLmxhc3QoKS50cmlnZ2VyKCJmb2N1cyIpOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0LmdldEF0dHJpYnV0ZSgiZGF0YS10YWIiKSAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmdldFNldHRpbmdzKCJrZXlEaXJlY3Rpb24iKVtlLmtleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuW28gKyBhXTsKICAgICAgICAgICAgICAgICAgICByID8gci5mb2N1cygpIDogLTEgPT09IG8gKyBhID8gbi5sYXN0KCkudHJpZ2dlcigiZm9jdXMiKSA6IG4uZmlyc3QoKS50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZWFjdGl2YXRlQWN0aXZlVGFiKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5jbGFzc2VzLmFjdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUgPyAnW2RhdGEtdGFiPSInICsgZSArICciXScgOiAiLiIgKyBzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5lbGVtZW50cy4kdGFiVGl0bGVzLmZpbHRlcihuKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZWxlbWVudHMuJHRhYkNvbnRlbnRzLmZpbHRlcihuKTsKICAgICAgICAgICAgICAgICAgICBpLmFkZChvKS5yZW1vdmVDbGFzcyhzKSwgaS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg6ICItMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLXNlbGVjdGVkIjogImZhbHNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtZXhwYW5kZWQiOiAiZmFsc2UiCiAgICAgICAgICAgICAgICAgICAgfSksIG9bdC5oaWRlVGFiRm5dKCksIG8uYXR0cigiaGlkZGVuIiwgImhpZGRlbiIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhY3RpdmF0ZVRhYihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuY2xhc3Nlcy5hY3RpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmVsZW1lbnRzLiR0YWJUaXRsZXMuZmlsdGVyKCdbZGF0YS10YWI9IicgKyBlICsgJyJdJyksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmVsZW1lbnRzLiR0YWJDb250ZW50cy5maWx0ZXIoJ1tkYXRhLXRhYj0iJyArIGUgKyAnIl0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICJzaG93IiA9PT0gdC5zaG93VGFiRm4gPyAwIDogNDAwOwogICAgICAgICAgICAgICAgICAgIG4uYWRkKGkpLmFkZENsYXNzKHMpLCBuLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleDogIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1zZWxlY3RlZCI6ICJ0cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtZXhwYW5kZWQiOiAidHJ1ZSIKICAgICAgICAgICAgICAgICAgICB9KSwgaVt0LnNob3dUYWJGbl0obywgKCgpID0+IGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cudHJpZ2dlcigiZWxlbWVudG9yLXByby9tb3Rpb24tZngvcmVjYWxjIikpKSwgaS5yZW1vdmVBdHRyKCJoaWRkZW4iKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNBY3RpdmVUYWIoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzLiR0YWJUaXRsZXMuZmlsdGVyKCdbZGF0YS10YWI9IicgKyBlICsgJyJdJykuaGFzQ2xhc3ModGhpcy5nZXRTZXR0aW5ncygiY2xhc3Nlcy5hY3RpdmUiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kdGFiVGl0bGVzLm9uKHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5ZG93bjogZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZS50YXJnZXQpLmlzKCJhIikgJiYgIkVudGVyIiA9PT0gZS5rZXkgJiYgZS5wcmV2ZW50RGVmYXVsdCgpLCBbIkVuZCIsICJIb21lIiwgIkFycm93VXAiLCAiQXJyb3dEb3duIl0uaW5jbHVkZXMoZS5rZXkpICYmIHRoaXMuaGFuZGxlS2V5Ym9hcmROYXZpZ2F0aW9uKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGtleXVwOiBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJBcnJvd0xlZnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkFycm93UmlnaHQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUtleWJvYXJkTmF2aWdhdGlvbihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRW50ZXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlNwYWNlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLmNoYW5nZUFjdGl2ZVRhYihlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLXRhYiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuY2hhbmdlQWN0aXZlVGFiKGUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtdGFiIikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KC4uLmUpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoLi4uZSksIHRoaXMuYWN0aXZhdGVEZWZhdWx0VGFiKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWRpdFNldHRpbmdzQ2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICAiYWN0aXZlSXRlbUluZGV4IiA9PT0gZSAmJiB0aGlzLmFjdGl2YXRlRGVmYXVsdFRhYigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjaGFuZ2VBY3RpdmVUYWIoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmlzQWN0aXZlVGFiKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgICFzLnRvZ2dsZVNlbGYgJiYgdCB8fCAhcy5oaWRlUHJldmlvdXMgfHwgdGhpcy5kZWFjdGl2YXRlQWN0aXZlVGFiKCksICFzLmhpZGVQcmV2aW91cyAmJiB0ICYmIHRoaXMuZGVhY3RpdmF0ZUFjdGl2ZVRhYihlKSwgdCB8fCB0aGlzLmFjdGl2YXRlVGFiKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gYmFzZVRhYnMKICAgICAgICB9LAogICAgICAgIDc4ODQ6IChlLCB0KSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIENvdW50ZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlck51bWJlcjogIi5lbGVtZW50b3ItY291bnRlci1udW1iZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGVyTnVtYmVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5jb3VudGVyTnVtYmVyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoKSwgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlciA9IGVsZW1lbnRvck1vZHVsZXMudXRpbHMuU2Nyb2xsLnNjcm9sbE9ic2VydmVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuaXNJblZpZXdwb3J0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci51bm9ic2VydmUodGhpcy5lbGVtZW50cy4kY291bnRlck51bWJlclswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudHMuJGNvdW50ZXJOdW1iZXIuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS50b1ZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL1wuKC4qKS8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgKGUucm91bmRpbmcgPSB0WzFdLmxlbmd0aCksIHRoaXMuZWxlbWVudHMuJGNvdW50ZXJOdW1iZXIubnVtZXJhdG9yKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudHMuJGNvdW50ZXJOdW1iZXJbMF0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gQ291bnRlcgogICAgICAgIH0sCiAgICAgICAgNTkxNDogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgSW1hZ2VDYXJvdXNlbCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuU3dpcGVyQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbDogIi5lbGVtZW50b3ItaW1hZ2UtY2Fyb3VzZWwtd3JhcHBlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUNvbnRlbnQ6ICIuc3dpcGVyLXNsaWRlIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzd2lwZXJDb250YWluZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLmNhcm91c2VsKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LiRzbGlkZXMgPSB0LiRzd2lwZXJDb250YWluZXIuZmluZChlLnNsaWRlQ29udGVudCksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFN3aXBlclNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gK2Uuc2xpZGVzX3RvX3Nob3cgfHwgMywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDEgPT09IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxldDogcyA/IDEgOiAyCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcDogInllcyIgPT09IGUuaW5maW5pdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZDogZS5zcGVlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUVsZW1lbnRvckJyZWFrcG9pbnRzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGxldCBhID0gdDsKICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhuKS5yZXZlcnNlKCkuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBpW3RdID8gaVt0XSA6IGE7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uYnJlYWtwb2ludHNbblt0XS52YWx1ZV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiArZVsic2xpZGVzX3RvX3Nob3dfIiArIHRdIHx8IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogK2VbInNsaWRlc190b19zY3JvbGxfIiArIHRdIHx8IDEKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYSA9ICtlWyJzbGlkZXNfdG9fc2hvd18iICsgdF0gfHwgcwogICAgICAgICAgICAgICAgICAgIH0pKSwgInllcyIgPT09IGUuYXV0b3BsYXkgJiYgKG8uYXV0b3BsYXkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBlLmF1dG9wbGF5X3NwZWVkLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlT25JbnRlcmFjdGlvbjogInllcyIgPT09IGUucGF1c2Vfb25faW50ZXJhY3Rpb24KICAgICAgICAgICAgICAgICAgICB9KSwgcyA/IChvLmVmZmVjdCA9IGUuZWZmZWN0LCAiZmFkZSIgPT09IGUuZWZmZWN0ICYmIChvLmZhZGVFZmZlY3QgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzRmFkZTogITAKICAgICAgICAgICAgICAgICAgICB9KSkgOiBvLnNsaWRlc1Blckdyb3VwID0gK2Uuc2xpZGVzX3RvX3Njcm9sbCB8fCAxLCBlLmltYWdlX3NwYWNpbmdfY3VzdG9tICYmIChvLnNwYWNlQmV0d2VlbiA9IGUuaW1hZ2Vfc3BhY2luZ19jdXN0b20uc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9ICJhcnJvd3MiID09PSBlLm5hdmlnYXRpb24gfHwgImJvdGgiID09PSBlLm5hdmlnYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAiZG90cyIgPT09IGUubmF2aWdhdGlvbiB8fCAiYm90aCIgPT09IGUubmF2aWdhdGlvbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gciAmJiAoby5uYXZpZ2F0aW9uID0gewogICAgICAgICAgICAgICAgICAgICAgICBwcmV2RWw6ICIuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRFbDogIi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0IgogICAgICAgICAgICAgICAgICAgIH0pLCBsICYmIChvLnBhZ2luYXRpb24gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsOiAiLnN3aXBlci1wYWdpbmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImJ1bGxldHMiLAogICAgICAgICAgICAgICAgICAgICAgICBjbGlja2FibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksICJ5ZXMiID09PSBlLmxhenlsb2FkICYmIChvLmxhenkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dEFtb3VudDogMQogICAgICAgICAgICAgICAgICAgIH0pLCBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhc3luYyBvbkluaXQoLi4uZSkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5lKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lci5sZW5ndGggfHwgMiA+IHRoaXMuZWxlbWVudHMuJHNsaWRlcy5sZW5ndGgpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuc3dpcGVyOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyID0gYXdhaXQgbmV3IHModGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLCB0aGlzLmdldFN3aXBlclNldHRpbmdzKCkpLCB0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIuZGF0YSgic3dpcGVyIiwgdGhpcy5zd2lwZXIpLCAieWVzIiA9PT0gdC5wYXVzZV9vbl9ob3ZlciAmJiB0aGlzLnRvZ2dsZVBhdXNlT25Ib3ZlcighMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZVN3aXBlck9wdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKClbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLnN3aXBlci5wYXJhbXM7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImltYWdlX3NwYWNpbmdfY3VzdG9tIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuc3BhY2VCZXR3ZWVuID0gdC5zaXplIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYXV0b3BsYXlfc3BlZWQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hdXRvcGxheS5kZWxheSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic3BlZWQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5zcGVlZCA9IHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zd2lwZXIudXBkYXRlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldENoYW5nZWFibGVQcm9wZXJ0aWVzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlX29uX2hvdmVyOiAicGF1c2VPbkhvdmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXlfc3BlZWQ6ICJkZWxheSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiAic3BlZWQiLAogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZV9zcGFjaW5nX2N1c3RvbTogInNwYWNlQmV0d2VlbiIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldENoYW5nZWFibGVQcm9wZXJ0aWVzKClbZV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgicGF1c2Vfb25faG92ZXIiID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInBhdXNlX29uX2hvdmVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVBhdXNlT25Ib3ZlcigieWVzIiA9PT0gZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMudXBkYXRlU3dpcGVyT3B0aW9uKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkVkaXRTZXR0aW5nc0NoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgImFjdGl2ZUl0ZW1JbmRleCIgPT09IGUgJiYgdGhpcy5zd2lwZXIuc2xpZGVUb0xvb3AodGhpcy5nZXRFZGl0U2V0dGluZ3MoImFjdGl2ZUl0ZW1JbmRleCIpIC0gMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBJbWFnZUNhcm91c2VsCiAgICAgICAgfSwKICAgICAgICAxMzUxOiAoZSwgdCkgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBQcm9ncmVzcyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc051bWJlcjogIi5lbGVtZW50b3ItcHJvZ3Jlc3MtYmFyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkcHJvZ3Jlc3NOdW1iZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLnByb2dyZXNzTnVtYmVyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoKSwgZWxlbWVudG9yRnJvbnRlbmQud2F5cG9pbnQodGhpcy5lbGVtZW50cy4kcHJvZ3Jlc3NOdW1iZXIsICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmVsZW1lbnRzLiRwcm9ncmVzc051bWJlcjsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jc3MoIndpZHRoIiwgZS5kYXRhKCJtYXgiKSArICIlIikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBQcm9ncmVzcwogICAgICAgIH0sCiAgICAgICAgOTQ1OTogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg5NzI4KSk7CiAgICAgICAgICAgIGNsYXNzIFRhYnMgZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnN1cGVyLmdldERlZmF1bHRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVTZWxmOiAhMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBUYWJzCiAgICAgICAgfSwKICAgICAgICAxMzI3OiAoZSwgdCkgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBUZXh0RWRpdG9yIGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlIHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaDogInA6Zmlyc3QiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BDYXA6ICJlbGVtZW50b3ItZHJvcC1jYXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcENhcExldHRlcjogImVsZW1lbnRvci1kcm9wLWNhcC1sZXR0ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0galF1ZXJ5KCI8c3Bhbj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogdC5kcm9wQ2FwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBuID0galF1ZXJ5KCI8c3Bhbj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogdC5kcm9wQ2FwTGV0dGVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzLmFwcGVuZChuKSwgewogICAgICAgICAgICAgICAgICAgICAgICAkcGFyYWdyYXBoOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5wYXJhZ3JhcGgpLAogICAgICAgICAgICAgICAgICAgICAgICAkZHJvcENhcDogcywKICAgICAgICAgICAgICAgICAgICAgICAgJGRyb3BDYXBMZXR0ZXI6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3cmFwRHJvcENhcCgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJkcm9wX2NhcCIpKSByZXR1cm4gdm9pZCh0aGlzLmRyb3BDYXBMZXR0ZXIgJiYgKHRoaXMuZWxlbWVudHMuJGRyb3BDYXAucmVtb3ZlKCksIHRoaXMuZWxlbWVudHMuJHBhcmFncmFwaC5wcmVwZW5kKHRoaXMuZHJvcENhcExldHRlciksIHRoaXMuZHJvcENhcExldHRlciA9ICIiKSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudHMuJHBhcmFncmFwaDsKICAgICAgICAgICAgICAgICAgICBpZiAoIWUubGVuZ3RoKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUuaHRtbCgpLnJlcGxhY2UoLyZuYnNwOy9nLCAiICIpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5tYXRjaCgvXiAqKFteIF0gPykvKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXMpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gc1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4udHJpbSgpOwogICAgICAgICAgICAgICAgICAgIGlmICgiPCIgPT09IGkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BDYXBMZXR0ZXIgPSBuLCB0aGlzLmVsZW1lbnRzLiRkcm9wQ2FwTGV0dGVyLnRleHQoaSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IHQuc2xpY2Uobi5sZW5ndGgpLnJlcGxhY2UoL14gKi8sIChlID0+IG5ldyBBcnJheShlLmxlbmd0aCArIDEpLmpvaW4oIiZuYnNwOyIpKSk7CiAgICAgICAgICAgICAgICAgICAgZS5odG1sKG8pLnByZXBlbmQodGhpcy5lbGVtZW50cy4kZHJvcENhcCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCguLi5lKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmUpLCB0aGlzLndyYXBEcm9wQ2FwKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgImRyb3BfY2FwIiA9PT0gZSAmJiB0aGlzLndyYXBEcm9wQ2FwKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBUZXh0RWRpdG9yCiAgICAgICAgfSwKICAgICAgICAyOiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDk3MjgpKTsKICAgICAgICAgICAgY2xhc3MgVG9nZ2xlIGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdXBlci5nZXREZWZhdWx0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RhYkZuOiAic2xpZGVEb3duIiwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVRhYkZuOiAic2xpZGVVcCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVQcmV2aW91czogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9FeHBhbmQ6ICJlZGl0b3IiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IFRvZ2dsZQogICAgICAgIH0sCiAgICAgICAgNTM2MzogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgVmlkZW8gZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VPdmVybGF5OiAiLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtaW1hZ2Utb3ZlcmxheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlbzogIi5lbGVtZW50b3ItdmlkZW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9JZnJhbWU6ICIuZWxlbWVudG9yLXZpZGVvLWlmcmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5SWNvbjogIi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbWFnZU92ZXJsYXk6IHRoaXMuJGVsZW1lbnQuZmluZChlLmltYWdlT3ZlcmxheSksCiAgICAgICAgICAgICAgICAgICAgICAgICR2aWRlbzogdGhpcy4kZWxlbWVudC5maW5kKGUudmlkZW8pLAogICAgICAgICAgICAgICAgICAgICAgICAkdmlkZW9JZnJhbWU6IHRoaXMuJGVsZW1lbnQuZmluZChlLnZpZGVvSWZyYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHBsYXlJY29uOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5wbGF5SWNvbikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoYW5kbGVWaWRlbygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygibGlnaHRib3giKSB8fCAoInlvdXR1YmUiID09PSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygidmlkZW9fdHlwZSIpID8gdGhpcy5hcGlQcm92aWRlci5vbkFwaVJlYWR5KChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kaW1hZ2VPdmVybGF5LnJlbW92ZSgpLCB0aGlzLnByZXBhcmVZVFZpZGVvKGUsICEwKQogICAgICAgICAgICAgICAgICAgIH0pKSA6ICh0aGlzLmVsZW1lbnRzLiRpbWFnZU92ZXJsYXkucmVtb3ZlKCksIHRoaXMucGxheVZpZGVvKCkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGxheVZpZGVvKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnRzLiR2aWRlby5sZW5ndGgpIHJldHVybiB2b2lkKHRoaXMueW91dHViZVBsYXllciA/IHRoaXMueW91dHViZVBsYXllci5wbGF5VmlkZW8oKSA6IHRoaXMuZWxlbWVudHMuJHZpZGVvWzBdLnBsYXkoKSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudHMuJHZpZGVvSWZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS5kYXRhKCJsYXp5LWxvYWQiKTsKICAgICAgICAgICAgICAgICAgICB0ICYmIGUuYXR0cigic3JjIiwgdCksIGVbMF0uc3JjID0gdGhpcy5hcGlQcm92aWRlci5nZXRBdXRvcGxheVVSTChlWzBdLnNyYykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFzeW5jIGFuaW1hdGVWaWRlbygpIHsKICAgICAgICAgICAgICAgICAgICAoYXdhaXQgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMubGlnaHRib3gpLnNldEVudHJhbmNlQW5pbWF0aW9uKHRoaXMuZ2V0Q3VycmVudERldmljZVNldHRpbmcoImxpZ2h0Ym94X2NvbnRlbnRfYW5pbWF0aW9uIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhc3luYyBoYW5kbGVBc3BlY3RSYXRpbygpIHsKICAgICAgICAgICAgICAgICAgICAoYXdhaXQgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMubGlnaHRib3gpLnNldFZpZGVvQXNwZWN0UmF0aW8odGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImFzcGVjdF9yYXRpbyIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXN5bmMgaGlkZUxpZ2h0Ym94KCkgewogICAgICAgICAgICAgICAgICAgIChhd2FpdCBlbGVtZW50b3JGcm9udGVuZC51dGlscy5saWdodGJveCkuZ2V0TW9kYWwoKS5oaWRlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHByZXBhcmVZVFZpZGVvKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHRoaXMudmlkZW9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVhZHk6ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5tdXRlICYmIHRoaXMueW91dHViZVBsYXllci5tdXRlKCksIChzLmF1dG9wbGF5IHx8IHQpICYmIHRoaXMueW91dHViZVBsYXllci5wbGF5VmlkZW8oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdGF0ZUNoYW5nZTogdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZGF0YSA9PT0gZS5QbGF5ZXJTdGF0ZS5FTkRFRCAmJiBzLmxvb3AgJiYgdGhpcy55b3V0dWJlUGxheWVyLnNlZWtUbyhzLnN0YXJ0IHx8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sczogcy5jb250cm9scyA/IDEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogcy5yZWwgPyAxIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5c2lubGluZTogcy5wbGF5X29uX21vYmlsZSA/IDEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVzdGJyYW5kaW5nOiBzLm1vZGVzdGJyYW5kaW5nID8gMSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXk6IHMuYXV0b3BsYXkgPyAxIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcy5zdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHMuZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcy55dF9wcml2YWN5ICYmIChuLmhvc3QgPSAiaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20iLCBuLm9yaWdpbiA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSksIHRoaXMueW91dHViZVBsYXllciA9IG5ldyBlLlBsYXllcih0aGlzLmVsZW1lbnRzLiR2aWRlb1swXSwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kaW1hZ2VPdmVybGF5Lm9uKCJjbGljayIsIHRoaXMuaGFuZGxlVmlkZW8uYmluZCh0aGlzKSksIHRoaXMuZWxlbWVudHMuJHBsYXlJY29uLm9uKCJrZXlkb3duIiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBbMTMsIDMyXS5pbmNsdWRlcyhlLmtleUNvZGUpICYmIHRoaXMuaGFuZGxlVmlkZW8oKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCgpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50b3JGcm9udGVuZC51dGlsc1tlLnZpZGVvX3R5cGVdID8gdGhpcy5hcGlQcm92aWRlciA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzW2UudmlkZW9fdHlwZV0gOiB0aGlzLmFwaVByb3ZpZGVyID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuYmFzZVZpZGVvTG9hZGVyLCAieW91dHViZSIgPT09IGUudmlkZW9fdHlwZSAmJiAodGhpcy52aWRlb0lEID0gdGhpcy5hcGlQcm92aWRlci5nZXRWaWRlb0lERnJvbVVSTChlLnlvdXR1YmVfdXJsKSwgdGhpcy52aWRlb0lEICYmICghZS5zaG93X2ltYWdlX292ZXJsYXkgfHwgIWUuaW1hZ2Vfb3ZlcmxheS51cmwpKSkgcmV0dXJuIGUubGF6eV9sb2FkID8gKHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLlNjcm9sbC5zY3JvbGxPYnNlcnZlcih7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaXNJblZpZXdwb3J0ICYmICh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRzLiR2aWRlby5wYXJlbnQoKVswXSksIHRoaXMuYXBpUHJvdmlkZXIub25BcGlSZWFkeSgoZSA9PiB0aGlzLnByZXBhcmVZVFZpZGVvKGUpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdm9pZCB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50cy4kdmlkZW8ucGFyZW50KClbMF0pKSA6IHZvaWQoZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmV4cGVyaW1lbnRhbEZlYXR1cmVzLmVfb3B0aW1pemVkX2Fzc2V0c19sb2FkaW5nID8gdGhpcy5hcGlQcm92aWRlci5vbkFwaVJlYWR5KChlID0+IHRoaXMucHJlcGFyZVlUVmlkZW8oZSkpKSA6IHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcGlQcm92aWRlci5vbkFwaVJlYWR5KChlID0+IHRoaXMucHJlcGFyZVlUVmlkZW8oZSkpKQogICAgICAgICAgICAgICAgICAgIH0pLCAwKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGUuaW5kZXhPZigibGlnaHRib3hfY29udGVudF9hbmltYXRpb24iKSkgcmV0dXJuIHZvaWQgdGhpcy5hbmltYXRlVmlkZW8oKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImxpZ2h0Ym94Iik7CiAgICAgICAgICAgICAgICAgICAgImxpZ2h0Ym94IiAhPT0gZSB8fCB0ID8gImFzcGVjdF9yYXRpbyIgPT09IGUgJiYgdCAmJiB0aGlzLmhhbmRsZUFzcGVjdFJhdGlvKCkgOiB0aGlzLmhpZGVMaWdodGJveCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gVmlkZW8KICAgICAgICB9LAogICAgICAgIDEyMTA6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpLAogICAgICAgICAgICAgICAgaSA9IG4ocyg4NDcwKSksCiAgICAgICAgICAgICAgICBvID0gbihzKDkyNjkpKSwKICAgICAgICAgICAgICAgIGEgPSBuKHMoNzg4NCkpLAogICAgICAgICAgICAgICAgciA9IG4ocygxMzUxKSksCiAgICAgICAgICAgICAgICBsID0gbihzKDk0NTkpKSwKICAgICAgICAgICAgICAgIGQgPSBuKHMoMikpLAogICAgICAgICAgICAgICAgYyA9IG4ocyg1MzYzKSksCiAgICAgICAgICAgICAgICBoID0gbihzKDU5MTQpKSwKICAgICAgICAgICAgICAgIHUgPSBuKHMoMTMyNykpLAogICAgICAgICAgICAgICAgbSA9IG4ocygzODk2KSk7CiAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oImVsZW1lbnRvci9mcm9udGVuZC9pbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5lbGVtZW50c0hhbmRsZXJzID0gewogICAgICAgICAgICAgICAgICAgICJhY2NvcmRpb24uZGVmYXVsdCI6IGkuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAiYWxlcnQuZGVmYXVsdCI6IG8uZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAiY291bnRlci5kZWZhdWx0IjogYS5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICJwcm9ncmVzcy5kZWZhdWx0Ijogci5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICJ0YWJzLmRlZmF1bHQiOiBsLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgInRvZ2dsZS5kZWZhdWx0IjogZC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICJ2aWRlby5kZWZhdWx0IjogYy5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICJpbWFnZS1jYXJvdXNlbC5kZWZhdWx0IjogaC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICJ0ZXh0LWVkaXRvci5kZWZhdWx0IjogdS5kZWZhdWx0CiAgICAgICAgICAgICAgICB9LCBlbGVtZW50b3JGcm9udGVuZC5vbigiY29tcG9uZW50czppbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMubGlnaHRib3gsIGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLmxpZ2h0Ym94ID0gbmV3IG0uZGVmYXVsdAogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgNTYyNjogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC56b29tT3V0Qm9sZCA9IHQuem9vbUluQm9sZCA9IHQudHdpdHRlciA9IHQuc2hhcmVBcnJvdyA9IHQucGludGVyZXN0ID0gdC5sb2FkaW5nID0gdC5mcmFtZU1pbmltaXplID0gdC5mcmFtZUV4cGFuZCA9IHQuZmFjZWJvb2sgPSB0LmRvd25sb2FkQm9sZCA9IHQuY2xvc2UgPSB0LmNoZXZyb25SaWdodCA9IHQuY2hldnJvbkxlZnQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNvbnN0IGkgPSBuZXcobihzKDQ1MDgpKS5kZWZhdWx0KSgiZWljb24iKSwKICAgICAgICAgICAgICAgIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgZ2V0IGVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoImNoZXZyb24tbGVmdCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICJNNjQ2IDEyNUM2MjkgMTI1IDYxMyAxMzMgNjA0IDE0MkwzMDggNDQyQzI5NiA0NTQgMjkyIDQ3MSAyOTIgNDg3IDI5MiA1MDQgMjk2IDUyMSAzMDggNTMzTDYwNCA4NTRDNjE3IDg2NyA2MjkgODc1IDY0NiA4NzUgNjYzIDg3NSA2NzkgODcxIDY5MiA4NTggNzA0IDg0NiA3MTMgODI5IDcxMyA4MTIgNzEzIDc5NiA3MDggNzc5IDY5MiA3NjdMNDM4IDQ4NyA2OTIgMjI1QzcwMCAyMTcgNzA4IDIwNCA3MDggMTg3IDcwOCAxNzEgNzA0IDE1NCA2OTIgMTQyIDY3NSAxMjkgNjYzIDEyNSA2NDYgMTI1WiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMWUzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxZTMKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB0LmNoZXZyb25MZWZ0ID0gbzsKICAgICAgICAgICAgY29uc3QgYSA9IHsKICAgICAgICAgICAgICAgIGdldCBlbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoImNoZXZyb24tcmlnaHQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICJNNjk2IDUzM0M3MDggNTIxIDcxMyA1MDQgNzEzIDQ4NyA3MTMgNDcxIDcwOCA0NTQgNjk2IDQ0Nkw0MDAgMTQ2QzM4OCAxMzMgMzc1IDEyNSAzNTQgMTI1IDMzOCAxMjUgMzI1IDEyOSAzMTMgMTQyIDMwMCAxNTQgMjkyIDE3MSAyOTIgMTg3IDI5MiAyMDQgMjk2IDIyMSAzMDggMjMzTDU2MyA0OTIgMzA0IDc3MUMyOTIgNzgzIDI4OCA4MDAgMjg4IDgxNyAyODggODMzIDI5NiA4NTAgMzA4IDg2MyAzMjEgODcxIDMzOCA4NzUgMzU0IDg3NSAzNzEgODc1IDM4OCA4NjcgNDAwIDg1NEw2OTYgNTMzWiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMWUzCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC5jaGV2cm9uUmlnaHQgPSBhOwogICAgICAgICAgICBjb25zdCByID0gewogICAgICAgICAgICAgICAgZ2V0IGVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuY3JlYXRlU3ZnRWxlbWVudCgiY2xvc2UiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICJNNzQyIDE2N0w1MDAgNDA4IDI1OCAxNjdDMjQ2IDE1NCAyMzMgMTUwIDIxNyAxNTAgMTk2IDE1MCAxNzkgMTU4IDE2NyAxNjcgMTU0IDE3OSAxNTAgMTk2IDE1MCAyMTIgMTUwIDIyOSAxNTQgMjQyIDE3MSAyNTRMNDA4IDUwMCAxNjcgNzQyQzEzOCA3NzEgMTM4IDgwMCAxNjcgODI5IDE5NiA4NTggMjI1IDg1OCAyNTQgODI5TDQ5NiA1ODcgNzM4IDgyOUM3NTAgODQyIDc2NyA4NDYgNzgzIDg0NiA4MDAgODQ2IDgxNyA4NDIgODI5IDgyOSA4NDIgODE3IDg0NiA4MDQgODQ2IDc4MyA4NDYgNzY3IDg0MiA3NTAgODI5IDczN0w1ODggNTAwIDgzMyAyNThDODYzIDIyOSA4NjMgMjAwIDgzMyAxNzEgODA0IDEzNyA3NzUgMTM3IDc0MiAxNjdaIiwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDFlMywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxZTMKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICB0LmNsb3NlID0gcjsKICAgICAgICAgICAgY29uc3QgbCA9IHsKICAgICAgICAgICAgICAgIGdldCBlbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoImRvd25sb2FkLWJvbGQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICJNNTcyIDQySDQyOEM0MDUgNDIgMzg1IDYxIDM4NSA4NVYzODVIMjI4QzE5NyAzODUgMTgwIDQyNCAyMDMgNDQ3TDQ3NSA3MTlDNDg5IDczMiA1MTEgNzMyIDUyNCA3MTlMNzk3IDQ0N0M4MTkgNDI0IDgwMyAzODUgNzcxIDM4NUg2MTRWODVDNjE1IDYxIDU5NSA0MiA1NzIgNDJaTTk1OCA5MTVWNzE1Qzk1OCA2OTEgOTM5IDY3MiA5MTUgNjcySDY1M0w1NjUgNzYwQzUyOSA3OTYgNDcxIDc5NiA0MzUgNzYwTDM0NyA2NzJIODVDNjEgNjcyIDQyIDY5MSA0MiA3MTVWOTE1QzQyIDkzOSA2MSA5NTggODUgOTU4SDkxNUM5MzkgOTU4IDk1OCA5MzkgOTU4IDkxNVpNNzM2IDg3M0M3MzYgODUzIDcyMCA4MzcgNzAwIDgzNyA2ODEgODM3IDY2NSA4NTMgNjY1IDg3MyA2NjUgODkyIDY4MSA5MDggNzAwIDkwOCA3MjAgOTA4IDczNiA4OTIgNzM2IDg3M1pNODE1IDgzN0M4MzUgODM3IDg1MSA4NTMgODUxIDg3MyA4NTEgODkyIDgzNSA5MDggODE1IDkwOCA3OTUgOTA4IDc3OSA4OTIgNzc5IDg3MyA3NzkgODUzIDc5NSA4MzcgODE1IDgzN1oiLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMWUzLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDFlMwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHQuZG93bmxvYWRCb2xkID0gbDsKICAgICAgICAgICAgY29uc3QgZCA9IHsKICAgICAgICAgICAgICAgIGdldCBlbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoImZhY2Vib29rIiwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAiTTg1OCA0MkgxNDJDODggNDIgNDIgODcgNDIgMTQyVjg2M0M0MiA5MTMgODggOTU4IDE0MiA5NThINDIxVjY0NkgyOTJWNTAwSDQyMVYzODdDNDIxIDI1OCA0OTYgMTkyIDYxMyAxOTIgNjY3IDE5MiA3MjUgMjAwIDcyNSAyMDBWMzI1SDY2M0M2MDAgMzI1IDU3OSAzNjIgNTc5IDQwNFY1MDBINzIxTDcwMCA2NDZINTgzVjk1OEg4NjNDOTE3IDk1OCA5NjMgOTEzIDk2MyA4NThWMTQyQzk1OCA4NyA5MTMgNDIgODU4IDQyTDg1OCA0MloiLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMWUzLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDFlMwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHQuZmFjZWJvb2sgPSBkOwogICAgICAgICAgICBjb25zdCBjID0gewogICAgICAgICAgICAgICAgZ2V0IGVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuY3JlYXRlU3ZnRWxlbWVudCgiZnJhbWUtZXhwYW5kIiwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAiTTg2MyA1ODNDODkwIDU4MyA5MTQgNjA1IDkxNiA2MzJMOTE3IDYzN1Y4NjNMOTE2IDg2OEM5MTQgODkzIDg5MyA5MTQgODY4IDkxNkw4NjMgOTE3SDYzOEw2MzIgOTE2QzYwNyA5MTQgNTg2IDg5MyA1ODQgODY4TDU4MyA4NjMgNTg0IDg1N0M1ODYgODMyIDYwNyA4MTEgNjMyIDgwOUw2MzggODA4SDgwOFY2MzdMODA5IDYzMkM4MTEgNjA1IDgzNSA1ODMgODYzIDU4M1pNMTM4IDU4M0MxNjUgNTgzIDE4OSA2MDUgMTkxIDYzMkwxOTIgNjM3VjgwOEgzNjNDMzkwIDgwOCA0MTQgODMwIDQxNiA4NTdMNDE3IDg2M0M0MTcgODkwIDM5NSA5MTQgMzY4IDkxNkwzNjMgOTE3SDEzOEMxMTAgOTE3IDg2IDg5NSA4NCA4NjhMODMgODYzVjYzN0M4MyA2MDcgMTA4IDU4MyAxMzggNTgzWk04NjMgODNDODkwIDgzIDkxNCAxMDUgOTE2IDEzMkw5MTcgMTM3VjM2MkM5MTcgMzkyIDg5MyA0MTcgODYzIDQxNyA4MzUgNDE3IDgxMSAzOTUgODA5IDM2OEw4MDggMzYyVjE5Mkg2MzhDNjEwIDE5MiA1ODYgMTcwIDU4NCAxNDNMNTgzIDEzN0M1ODMgMTEwIDYwNSA4NiA2MzIgODRMNjM4IDgzSDg2M1pNMzYzIDgzTDM2OCA4NEMzOTMgODYgNDE0IDEwNyA0MTYgMTMyTDQxNyAxMzcgNDE2IDE0M0M0MTQgMTY4IDM5MyAxODkgMzY4IDE5MUwzNjMgMTkySDE5MlYzNjJMMTkxIDM2OEMxODkgMzk1IDE2NSA0MTcgMTM4IDQxN1M4NiAzOTUgODQgMzY4TDgzIDM2MlYxMzdMODQgMTMyQzg2IDEwNyAxMDcgODYgMTMyIDg0TDEzOCA4M0gzNjNaIiwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDFlMywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxZTMKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICB0LmZyYW1lRXhwYW5kID0gYzsKICAgICAgICAgICAgY29uc3QgaCA9IHsKICAgICAgICAgICAgICAgIGdldCBlbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoImZyYW1lLW1pbmltaXplIiwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAiTTM2MyA1ODNDMzkyIDU4MyA0MTMgNjA0IDQxNyA2MzNMNDE3IDYzN1Y4NjNDNDE3IDg5MiAzOTIgOTE3IDM2MyA5MTcgMzMzIDkxNyAzMTMgODk2IDMwOCA4NjdMMzA4IDg2M1Y2OTJIMTM4QzEwOCA2OTIgODggNjcxIDgzIDY0Mkw4MyA2MzdDODMgNjA4IDEwNCA1ODcgMTMzIDU4M0wxMzggNTgzSDM2M1pNNjM4IDU4M0M2MDggNTgzIDU4OCA2MDQgNTgzIDYzM0w1ODMgNjM3Vjg2M0M1ODMgODkyIDYwOCA5MTcgNjM4IDkxNyA2NjcgOTE3IDY4OCA4OTYgNjkyIDg2N0w2OTIgODYzVjY5Mkg4NjNDODkyIDY5MiA5MTMgNjcxIDkxNyA2NDJMOTE3IDYzN0M5MTcgNjA4IDg5NiA1ODcgODY3IDU4M0w4NjMgNTgzSDYzOFpNMzYzIDQxN0MzOTIgNDE3IDQxMyAzOTYgNDE3IDM2N0w0MTcgMzYyVjEzN0M0MTcgMTA4IDM5MiA4MyAzNjMgODMgMzMzIDgzIDMxMyAxMDQgMzA4IDEzM0wzMDggMTM3VjMwOEgxMzhDMTA4IDMwOCA4OCAzMjkgODMgMzU4TDgzIDM2MkM4MyAzOTIgMTA0IDQxMiAxMzMgNDE3TDEzOCA0MTdIMzYzWk02MzggNDE3QzYwOCA0MTcgNTg4IDM5NiA1ODMgMzY3TDU4MyAzNjJWMTM3QzU4MyAxMDggNjA4IDgzIDYzOCA4MyA2NjcgODMgNjg4IDEwNCA2OTIgMTMzTDY5MiAxMzdWMzA4SDg2M0M4OTIgMzA4IDkxMyAzMjkgOTE3IDM1OEw5MTcgMzYyQzkxNyAzOTIgODk2IDQxMiA4NjcgNDE3TDg2MyA0MTdINjM4WiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMWUzCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC5mcmFtZU1pbmltaXplID0gaDsKICAgICAgICAgICAgY29uc3QgdSA9IHsKICAgICAgICAgICAgICAgIGdldCBlbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoImxvYWRpbmciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICJNNTAwIDk3NVY4NThDNjk2IDg1OCA4NTggNjk2IDg1OCA1MDBTNjk2IDE0MiA1MDAgMTQyIDE0MiAzMDQgMTQyIDUwMEgyNUMyNSAyMzcgMjM4IDI1IDUwMCAyNVM5NzUgMjM3IDk3NSA1MDAgNzYzIDk3NSA1MDAgOTc1WiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMWUzCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC5sb2FkaW5nID0gdTsKICAgICAgICAgICAgY29uc3QgbSA9IHsKICAgICAgICAgICAgICAgIGdldCBlbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoInBpbnRlcmVzdCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogIk05NTAgNDk2Qzk1MCA3NDYgNzQ2IDk1MCA0OTYgOTUwIDQ1MCA5NTAgNDA0IDk0MiAzNjMgOTI5IDM3OSA5MDAgNDA4IDg1MCA0MjEgODA4IDQyNSA3ODcgNDUwIDcwMCA0NTAgNzAwIDQ2NyA3MjkgNTA4IDc1NCA1NTQgNzU0IDY5MiA3NTQgNzkyIDYyOSA3OTIgNDcxIDc5MiAzMjEgNjcxIDIwOCA1MTMgMjA4IDMxNyAyMDggMjEzIDM0MiAyMTMgNDgzIDIxMyA1NTAgMjUwIDYzMyAzMDQgNjU4IDMxMyA2NjIgMzE3IDY2MiAzMjEgNjU0IDMyMSA2NTAgMzI5IDYxNyAzMzMgNjA0IDMzMyA2MDAgMzMzIDU5NiAzMjkgNTkyIDMxMyA1NjcgMjk2IDUyNSAyOTYgNDg3IDI4OCAzODcgMzY3IDI5MiA0OTYgMjkyIDYwOCAyOTIgNjg4IDM2NyA2ODggNDc1IDY4OCA2MDAgNjI1IDY4MyA1NDYgNjgzIDUwMCA2ODMgNDY3IDY0NiA0NzkgNjAwIDQ5MiA1NDYgNTE3IDQ4NyA1MTcgNDUwIDUxNyA0MTcgNTAwIDM4NyA0NTggMzg3IDQxMyAzODcgMzc1IDQzMyAzNzUgNDk2IDM3NSA1MzcgMzg4IDU2MiAzODggNTYyUzM0MiA3NTQgMzMzIDc4N0MzMjUgODI1IDMyOSA4ODMgMzMzIDkxNyAxNjMgODU0IDQyIDY4NyA0MiA0OTYgNDIgMjQ2IDI0NiA0MiA0OTYgNDJTOTUwIDI0NiA5NTAgNDk2WiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMWUzCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC5waW50ZXJlc3QgPSBtOwogICAgICAgICAgICBjb25zdCBwID0gewogICAgICAgICAgICAgICAgZ2V0IGVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuY3JlYXRlU3ZnRWxlbWVudCgic2hhcmUtYXJyb3ciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICJNOTQ2IDM4M0w2NjcgMTMzQzY0MiAxMTIgNjA0IDEyOSA2MDQgMTYyVjI5MkMyMzggMjk2IDcxIDYzNyA0MiA4MTIgMjM4IDU4NyAzNjMgNTIxIDYwNCA1MTdWNjU4QzYwNCA2OTIgNjQyIDcwOCA2NjcgNjg3TDk0NiA0NDJDOTYzIDQyNSA5NjMgNDAwIDk0NiAzODNaIiwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDFlMywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxZTMKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICB0LnNoYXJlQXJyb3cgPSBwOwogICAgICAgICAgICBjb25zdCBnID0gewogICAgICAgICAgICAgICAgZ2V0IGVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuY3JlYXRlU3ZnRWxlbWVudCgidHdpdHRlciIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogIk04NjMgMzEyQzg2MyAzMjEgODYzIDMyOSA4NjMgMzM3IDg2MyA1ODcgNjc1IDg3MSAzMjkgODcxIDIyMSA4NzEgMTI1IDg0MiA0MiA3ODcgNTggNzg3IDcxIDc5MiA4OCA3OTIgMTc1IDc5MiAyNTQgNzYyIDMyMSA3MTIgMjM4IDcxMiAxNzEgNjU4IDE0NiA1ODMgMTU4IDU4MyAxNzEgNTg3IDE4MyA1ODcgMjAwIDU4NyAyMTcgNTgzIDIzMyA1NzkgMTQ2IDU2MiA4MyA0ODcgODMgMzk2VjM4N0MxMDggNDAwIDEzOCA0MDggMTY3IDQxMiAxMTcgMzc5IDgzIDMyMSA4MyAyNTQgODMgMjIxIDkyIDE4NyAxMDggMTU4IDIwMCAyNzEgMzQyIDM0NiA0OTYgMzU0IDQ5MiAzNDIgNDkyIDMyNSA0OTIgMzEyIDQ5MiAyMDggNTc1IDEyNSA2NzkgMTI1IDczMyAxMjUgNzgzIDE0NiA4MTcgMTgzIDg1OCAxNzUgOTAwIDE1OCA5MzggMTM3IDkyNSAxNzkgODk2IDIxNyA4NTQgMjQyIDg5MiAyMzcgOTI5IDIyOSA5NjMgMjEyIDkzMyAyNTAgOTAwIDI4MyA4NjMgMzEyWiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMWUzCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC50d2l0dGVyID0gZzsKICAgICAgICAgICAgY29uc3QgZiA9IHsKICAgICAgICAgICAgICAgIGdldCBlbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoInpvb20taW4tYm9sZCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogIk0zODggMzgzVjMxMkMzODggMjgzIDQxMyAyNTggNDQyIDI1OCA0NzEgMjU4IDQ5NiAyODMgNDk2IDMxMlYzODNINTY3QzU5NiAzODMgNjIxIDQwOCA2MjEgNDM3UzU5NiA0OTIgNTY3IDQ5Mkg0OTZWNTYyQzQ5NiA1OTIgNDcxIDYxNyA0NDIgNjE3IDQxMyA2MTcgMzg4IDU5MiAzODggNTYyVjQ5MkgzMTdDMjg4IDQ5MiAyNjMgNDY3IDI2MyA0MzdTMjg4IDM4MyAzMTcgMzgzSDM4OFpNNjU0IDczM0M1OTIgNzc5IDUxNyA4MDQgNDM4IDgwNCAyMzMgODA0IDcxIDY0MiA3MSA0MzdTMjMzIDcxIDQzOCA3MSA4MDQgMjMzIDgwNCA0MzdDODA0IDUyMSA3NzkgNTk2IDczMyA2NTRMODk2IDgxN0M5MTcgODM3IDkxNyA4NzEgODk2IDg5MiA4NzUgOTEzIDg0MiA5MTMgODIxIDg5Mkw2NTQgNzMzWk00MzggNjk2QzU3OSA2OTYgNjk2IDU3OSA2OTYgNDM3UzU3OSAxNzkgNDM4IDE3OSAxNzkgMjk2IDE3OSA0MzcgMjk2IDY5NiA0MzggNjk2WiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMWUzCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC56b29tSW5Cb2xkID0gZjsKICAgICAgICAgICAgY29uc3QgdiA9IHsKICAgICAgICAgICAgICAgIGdldCBlbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoInpvb20tb3V0LWJvbGQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICJNNzUwIDY4M0w5NDYgODc5Qzk2MyA4OTYgOTYzIDkyOSA5NDYgOTQ2IDkyOSA5NjMgODk2IDk2NyA4NzkgOTQ2TDY4MyA3NTBDNjE3IDgwNCA1MzMgODMzIDQzOCA4MzMgMjIxIDgzMyA0MiA2NTQgNDIgNDM3UzIyMSA0MiA0MzggNDIgODMzIDIyMSA4MzMgNDM3QzgzMyA1MjkgODAwIDYxMiA3NTAgNjgzWk0yOTYgMzkySDU3NUM2MDAgMzkyIDYyMSA0MTIgNjIxIDQ0MiA2MjEgNDY3IDYwMCA0ODcgNTc1IDQ4N0gyOTZDMjcxIDQ4NyAyNTAgNDY3IDI1MCA0NDIgMjUwIDQxMiAyNzEgMzkyIDI5NiAzOTJaTTQzOCA3MzdDNjA0IDczNyA3MzggNjA0IDczOCA0MzdTNjA0IDEzNyA0MzggMTM3IDEzOCAyNzEgMTM4IDQzNyAyNzEgNzM3IDQzOCA3MzdaIiwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDFlMywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxZTMKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICB0Lnpvb21PdXRCb2xkID0gdgogICAgICAgIH0sCiAgICAgICAgNDUwODogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg1NTI2KSk7CiAgICAgICAgICAgIGNsYXNzIEljb25zTWFuYWdlciB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVmaXggPSBgJHtlfS1gLCB0aGlzLmNyZWF0ZVN2Z1N5bWJvbHNDb250YWluZXIoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3JlYXRlU3ZnRWxlbWVudChlLCB7CiAgICAgICAgICAgICAgICAgICAgcGF0aDogdCwKICAgICAgICAgICAgICAgICAgICB3aWR0aDogcywKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG4KICAgICAgICAgICAgICAgIH0pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gdGhpcy5wcmVmaXggKyBlLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gIiMiICsgdGhpcy5wcmVmaXggKyBlOwogICAgICAgICAgICAgICAgICAgIGlmICghSWNvbnNNYW5hZ2VyLmljb25zVXNhZ2VMaXN0LmluY2x1ZGVzKGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSWNvbnNNYW5hZ2VyLnN5bWJvbHNDb250YWluZXIucXVlcnlTZWxlY3RvcihvKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuY3JlYXRlU3ltYm9sRWxlbWVudCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWNvbnNNYW5hZ2VyLnN5bWJvbHNDb250YWluZXIuYXBwZW5kQ2hpbGQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBJY29uc01hbmFnZXIuaWNvbnNVc2FnZUxpc3QucHVzaChpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTdmdJY29uRWxlbWVudCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGljb25OYW1lOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBpY29uU2VsZWN0b3I6IG8KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3JlYXRlU3ZnTm9kZShlLCB7CiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHQgPSB7fSwKICAgICAgICAgICAgICAgICAgICBhdHRyczogcyA9IHt9CiAgICAgICAgICAgICAgICB9KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCBlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModCkubWFwKChlID0+IG5bZV0gPSB0W2VdKSksIE9iamVjdC5rZXlzKHMpLm1hcCgoZSA9PiBuLnNldEF0dHJpYnV0ZU5TKG51bGwsIGUsIHNbZV0pKSksIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNyZWF0ZVN2Z0ljb25FbGVtZW50KHsKICAgICAgICAgICAgICAgICAgICBpY29uTmFtZTogZSwKICAgICAgICAgICAgICAgICAgICBpY29uU2VsZWN0b3I6IHQKICAgICAgICAgICAgICAgIH0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTdmdOb2RlKCJzdmciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUw6ICc8dXNlIHhsaW5rOmhyZWY9IicgKyB0ICsgJyIgLz4nCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImUtZm9udC1pY29uLXN2ZyBlLSIgKyBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3JlYXRlU3ZnU3ltYm9sc0NvbnRhaW5lcigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIUljb25zTWFuYWdlci5zeW1ib2xzQ29udGFpbmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSAiZS1mb250LWljb24tc3ZnLXN5bWJvbHMiOwogICAgICAgICAgICAgICAgICAgICAgICBJY29uc01hbmFnZXIuc3ltYm9sc0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpLCBJY29uc01hbmFnZXIuc3ltYm9sc0NvbnRhaW5lciB8fCAoSWNvbnNNYW5hZ2VyLnN5bWJvbHNDb250YWluZXIgPSB0aGlzLmNyZWF0ZVN2Z05vZGUoInN2ZyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICJkaXNwbGF5OiBub25lOyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoSWNvbnNNYW5hZ2VyLnN5bWJvbHNDb250YWluZXIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNyZWF0ZVN5bWJvbEVsZW1lbnQoewogICAgICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgICAgIHBhdGg6IHQsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHMsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBuCiAgICAgICAgICAgICAgICB9KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU3ZnTm9kZSgic3ltYm9sIiwgewogICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MOiAnPHBhdGggZD0iJyArIHQgKyAnIj48L3BhdGg+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94OiAiMCAwICIgKyBzICsgIiAiICsgbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBJY29uc01hbmFnZXIsICgwLCBpLmRlZmF1bHQpKEljb25zTWFuYWdlciwgInN5bWJvbHNDb250YWluZXIiLCB2b2lkIDApLCAoMCwgaS5kZWZhdWx0KShJY29uc01hbmFnZXIsICJpY29uc1VzYWdlTGlzdCIsIFtdKQogICAgICAgIH0sCiAgICAgICAgMzg5NjogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCkocygzMjUxKSksCiAgICAgICAgICAgICAgICBpID0gcyg1NjI2KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBvbGRBc3BlY3RSYXRpbzogbnVsbCwKICAgICAgICAgICAgICAgIG9sZEFuaW1hdGlvbjogbnVsbCwKICAgICAgICAgICAgICAgIHN3aXBlcjogbnVsbCwKICAgICAgICAgICAgICAgIHBsYXllcjogbnVsbCwKICAgICAgICAgICAgICAgIGlzRm9udEljb25TdmdFeHBlcmltZW50OiBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuZXhwZXJpbWVudGFsRmVhdHVyZXMuZV9mb250X2ljb25fc3ZnLAogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbzogImVsZW1lbnRvci1hc3BlY3QtcmF0aW8tJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogImVsZW1lbnRvci1saWdodGJveC1pdGVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiAiZWxlbWVudG9yLWxpZ2h0Ym94LWltYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvQ29udGFpbmVyOiAiZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1dyYXBwZXI6ICJlbGVtZW50b3ItZml0LWFzcGVjdC1yYXRpbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5QnV0dG9uOiAiZWxlbWVudG9yLWN1c3RvbS1lbWJlZC1wbGF5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlCdXR0b25JY29uOiAiZmEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWluZzogImVsZW1lbnRvci1wbGF5aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbjogImVsZW1lbnRvci1oaWRkZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52aXNpYmxlOiAiZWxlbWVudG9yLWludmlzaWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50Q2xvc2U6ICJlbGVtZW50b3ItbGlnaHRib3gtcHJldmVudC1jbG9zZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNob3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICJzd2lwZXItY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNXcmFwcGVyOiAic3dpcGVyLXdyYXBwZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZCdXR0b246ICJlbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBlbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnV0dG9uOiAiZWxlbWVudG9yLXN3aXBlci1idXR0b24gZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldkJ1dHRvbkljb246ICJlaWNvbi1jaGV2cm9uLWxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCdXR0b25JY29uOiAiZWljb24tY2hldnJvbi1yaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGU6ICJzd2lwZXItc2xpZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogImVsZW1lbnRvci1zbGlkZXNob3dfX2hlYWRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyOiAiZWxlbWVudG9yLXNsaWRlc2hvd19fZm9vdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogImVsZW1lbnRvci1zbGlkZXNob3dfX3RpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogImVsZW1lbnRvci1zbGlkZXNob3dfX2Rlc2NyaXB0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyOiAiZWxlbWVudG9yLXNsaWRlc2hvd19fY291bnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkV4cGFuZDogImVpY29uLWZyYW1lLWV4cGFuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNocmluazogImVpY29uLWZyYW1lLW1pbmltaXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uWm9vbUluOiAiZWljb24tem9vbS1pbi1ib2xkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uWm9vbU91dDogImVpY29uLXpvb20tb3V0LWJvbGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaGFyZTogImVpY29uLXNoYXJlLWFycm93IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZU1lbnU6ICJlbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1tZW51IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUxpbmtzOiAiZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVVaVZpc2liaWxpdHk6ICJlbGVtZW50b3Itc2xpZGVzaG93LS11aS1oaWRkZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlTW9kZTogImVsZW1lbnRvci1zbGlkZXNob3ctLXNoYXJlLW1vZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlOiAiZWxlbWVudG9yLXNsaWRlc2hvdy0tZnVsbHNjcmVlbi1tb2RlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tTW9kZTogImVsZW1lbnRvci1zbGlkZXNob3ctLXpvb20tbW9kZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogIi5lbGVtZW50b3ItbGlnaHRib3gtaW1hZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6ICJhLCBbZGF0YS1lbGVtZW50b3ItbGlnaHRib3hdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc2hvdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVNsaWRlOiAiLnN3aXBlci1zbGlkZS1hY3RpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTbGlkZTogIi5zd2lwZXItc2xpZGUtcHJldiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNsaWRlOiAiLnN3aXBlci1zbGlkZS1uZXh0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBtb2RhbE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAiZWxlbWVudG9yLWxpZ2h0Ym94IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJhbmNlQW5pbWF0aW9uOiAiem9vbUluIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvQXNwZWN0UmF0aW86IDE2OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldE1vZGFsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5leHBvcnRzLm1vZGFsIHx8IHRoaXMuaW5pdE1vZGFsKCksIGUuZXhwb3J0cy5tb2RhbAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaXRNb2RhbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHt9OwogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGb250SWNvblN2Z0V4cGVyaW1lbnQgPyB0Lmljb25FbGVtZW50ID0gaS5jbG9zZS5lbGVtZW50IDogdC5pY29uQ2xhc3MgPSAiZWljb24tY2xvc2UiOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBlLmV4cG9ydHMubW9kYWwgPSBlbGVtZW50b3JGcm9udGVuZC5nZXREaWFsb2dzTWFuYWdlcigpLmNyZWF0ZVdpZGdldCgibGlnaHRib3giLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImVsZW1lbnRvci1saWdodGJveCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VCdXR0b25PcHRpb25zOiB7IC4uLnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogImJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiOiBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaTE4bi5jbG9zZSArICIgKEVzYykiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudENsb3NlOiAiLiIgKyB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzLnByZXZlbnRDbG9zZSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBzLm9uKCJoaWRlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBzLnNldE1lc3NhZ2UoIiIpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2hvd01vZGFsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUudXJsICYmICFlLnVybC5zdGFydHNXaXRoKCJodHRwIikpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRjbG9zZUJ1dHRvbiA9IHRoaXMuZ2V0TW9kYWwoKS5nZXRFbGVtZW50cygiY2xvc2VCdXR0b24iKSwgdGhpcy4kYnV0dG9ucyA9IHRoaXMuZWxlbWVudHMuJGNsb3NlQnV0dG9uLCB0aGlzLmZvY3VzZWRCdXR0b24gPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5nZXREZWZhdWx0U2V0dGluZ3MoKS5tb2RhbE9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgdC5pZCA9IGUuaWQsIHQuc2V0U2V0dGluZ3MoIm1vZGFsT3B0aW9ucyIsIGpRdWVyeS5leHRlbmQocywgZS5tb2RhbE9wdGlvbnMpKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gdC5nZXRNb2RhbCgpOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaS5zZXRJRCh0LmdldFNldHRpbmdzKCJtb2RhbE9wdGlvbnMuaWQiKSksIGkub25TaG93ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIERpYWxvZ3NNYW5hZ2VyLmdldFdpZGdldFR5cGUoImxpZ2h0Ym94IikucHJvdG90eXBlLm9uU2hvdy5hcHBseShpLCBhcmd1bWVudHMpLCB0LnNldEVudHJhbmNlQW5pbWF0aW9uKCkKICAgICAgICAgICAgICAgICAgICB9LCBpLm9uSGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBEaWFsb2dzTWFuYWdlci5nZXRXaWRnZXRUeXBlKCJsaWdodGJveCIpLnByb3RvdHlwZS5vbkhpZGUuYXBwbHkoaSwgYXJndW1lbnRzKSwgaS5nZXRFbGVtZW50cygibWVzc2FnZSIpLnJlbW92ZUNsYXNzKCJhbmltYXRlZCIpLCBuLmRlZmF1bHQuaXNGdWxsc2NyZWVuICYmIHQuZGVhY3RpdmF0ZUZ1bGxzY3JlZW4oKSwgdC51bmJpbmRIb3RLZXlzKCkKICAgICAgICAgICAgICAgICAgICB9LCBlLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmlkZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zZXRWaWRlb0NvbnRlbnQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW1hZ2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGUudXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBlLnRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBlLmRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2g6IGUuaGFzaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNsaWRlc2hvdyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNsaWRlc2hvdyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNldFNsaWRlc2hvd0NvbnRlbnQoZS5zbGlkZXNob3cpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNldEhUTUxDb250ZW50KGUuaHRtbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaS5zaG93KCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjcmVhdGVMaWdodGJveDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YXNldC5lbGVtZW50b3JMaWdodGJveCAmJiAodCA9IEpTT04ucGFyc2UoZS5kYXRhc2V0LmVsZW1lbnRvckxpZ2h0Ym94KSksIHQudHlwZSAmJiAic2xpZGVzaG93IiAhPT0gdC50eXBlKSByZXR1cm4gdm9pZCB0aGlzLnNob3dNb2RhbCh0KTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWUuZGF0YXNldC5lbGVtZW50b3JMaWdodGJveFNsaWRlc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gInNpbmdsZS1pbWciOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCB0aGlzLnNob3dNb2RhbCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiaW1hZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGUuaHJlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2g6IGUuZ2V0QXR0cmlidXRlKCJlLWFjdGlvbi1oYXNoIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZS5kYXRhc2V0LmVsZW1lbnRvckxpZ2h0Ym94VGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZS5kYXRhc2V0LmVsZW1lbnRvckxpZ2h0Ym94RGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogImVsZW1lbnRvci1saWdodGJveC1zbGlkZXNob3ctIiArIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IGUuZGF0YXNldC5lbGVtZW50b3JMaWdodGJveFZpZGVvIHx8IGUuaHJlZjsKICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5TbGlkZXNob3coZS5kYXRhc2V0LmVsZW1lbnRvckxpZ2h0Ym94U2xpZGVzaG93LCBzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldEhUTUxDb250ZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmVsZW1lbnRvckNvbW1vbiAmJiBlbGVtZW50b3JDb21tb24uaGVscGVycy5oYXJkRGVwcmVjYXRlZCgiZWxlbWVudG9yRnJvbnRlbmQudXRpbHMubGlnaHRib3guc2V0SFRNTENvbnRlbnQiLCAiMy4xLjQiKSwgdGhpcy5nZXRNb2RhbCgpLnNldE1lc3NhZ2UoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRWaWRlb0NvbnRlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0galF1ZXJ5LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdCgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogYCR7cy52aWRlb0NvbnRhaW5lcn0gJHtzLnByZXZlbnRDbG9zZX1gCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdCgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogcy52aWRlb1dyYXBwZXIKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmdldE1vZGFsKCk7CiAgICAgICAgICAgICAgICAgICAgbGV0IGE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJob3N0ZWQiID09PSBlLnZpZGVvVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBlLnVybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnZpZGVvUGFyYW1zKTsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQoIjx2aWRlbz4iLCBzKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT09IGUudXJsLmluZGV4T2YoInZpbWVvLmNvbSIpKSBzID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMudmltZW87CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLnVybC5tYXRjaCgvXig/Omh0dHBzPzpcL1wvKT8oPzp3d3dcLik/KD86bVwuKT8oPzp5b3V0dVwuYmVcL3x5b3V0dWJlXC5jb218eW91dHViZS1ub2Nvb2tpZVwuY29tKS8pKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMueW91dHViZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0KCI8aWZyYW1lPiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogcy5nZXRBdXRvcGxheVVSTChlLnVybCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2Z1bGxzY3JlZW46IDEKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbi5hcHBlbmQoaSksIGkuYXBwZW5kKGEpLCBvLnNldE1lc3NhZ2UobiksIHRoaXMuc2V0VmlkZW9Bc3BlY3RSYXRpbygpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBvLm9uSGlkZTsKICAgICAgICAgICAgICAgICAgICBvLm9uSGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByKCksIHRoaXMuJGJ1dHRvbnMgPSBqUXVlcnkoKSwgdGhpcy5mb2N1c2VkQnV0dG9uID0gbnVsbCwgby5nZXRFbGVtZW50cygibWVzc2FnZSIpLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItZml0LWFzcGVjdC1yYXRpbyIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFNoYXJlTGlua3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaTE4bjogZQogICAgICAgICAgICAgICAgICAgIH0gPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcsIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2Vib29rOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZS5zaGFyZU9uRmFjZWJvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uRWxlbWVudDogaS5mYWNlYm9vawogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0d2l0dGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZS5zaGFyZU9uVHdpdHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25FbGVtZW50OiBpLnR3aXR0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcGludGVyZXN0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZS5waW5JdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25FbGVtZW50OiBpLnBpbnRlcmVzdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgcyA9IGpRdWVyeSwgbiA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKSwgbyA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLCBhID0gcygiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBuLnNsaWRlc2hvdy5zaGFyZUxpbmtzCiAgICAgICAgICAgICAgICAgICAgfSksIHIgPSB0aGlzLmdldFNsaWRlKCJhY3RpdmUiKSwgbCA9IHIuZmluZChvLmltYWdlKSwgZCA9IHIuZGF0YSgiZWxlbWVudG9yLXNsaWRlc2hvdy12aWRlbyIpOwogICAgICAgICAgICAgICAgICAgIGxldCBjOwogICAgICAgICAgICAgICAgICAgIGlmIChjID0gZCB8fCBsLmF0dHIoInNyYyIpLCBzLmVhY2godCwgKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdC5sYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcygiPGE+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiB0aGlzLmNyZWF0ZVNoYXJlTGluayhlLCBjLCByLmF0dHIoImUtYWN0aW9uLWhhc2giKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogIl9ibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS50ZXh0KG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmlzRm9udEljb25TdmdFeHBlcmltZW50ID8gcyh0Lmljb25FbGVtZW50LmVsZW1lbnQpIDogcygiPGk+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImVpY29uLSIgKyBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnByZXBlbmQobyksIGEuYXBwZW5kKGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgIWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuaXNGb250SWNvblN2Z0V4cGVyaW1lbnQgPyBzKGkuZG93bmxvYWRCb2xkLmVsZW1lbnQpIDogcygiPGk+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJlaWNvbi1kb3dubG9hZC1ib2xkIgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5hdHRyKCJhcmlhLWxhYmVsIiwgZS5kb3dubG9hZCksIGEuYXBwZW5kKHMoIjxhPiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZDogIiIKICAgICAgICAgICAgICAgICAgICAgICAgfSkudGV4dChlLmRvd25sb2FkSW1hZ2UpLnByZXBlbmQodCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY3JlYXRlU2hhcmVMaW5rOiBmdW5jdGlvbihlLCB0LCBzID0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInBpbnRlcmVzdCIgPT09IGUgPyBuLmltYWdlID0gZW5jb2RlVVJJQ29tcG9uZW50KHQpIDogbi51cmwgPSBlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24uaHJlZi5yZXBsYWNlKC8jLiovLCAiIikgKyBzKSwgU2hhcmVMaW5rLmdldE5ldHdvcmtMaW5rKGUsIG4pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0U2xpZGVzaG93SGVhZGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkxOG46IGUKICAgICAgICAgICAgICAgICAgICB9ID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLCB0ID0galF1ZXJ5LCBzID0gInllcyIgPT09IGVsZW1lbnRvckZyb250ZW5kLmdldEtpdFNldHRpbmdzKCJsaWdodGJveF9lbmFibGVfY291bnRlciIpLCBuID0gInllcyIgPT09IGVsZW1lbnRvckZyb250ZW5kLmdldEtpdFNldHRpbmdzKCJsaWdodGJveF9lbmFibGVfZnVsbHNjcmVlbiIpLCBvID0gInllcyIgPT09IGVsZW1lbnRvckZyb250ZW5kLmdldEtpdFNldHRpbmdzKCJsaWdodGJveF9lbmFibGVfem9vbSIpLCBhID0gInllcyIgPT09IGVsZW1lbnRvckZyb250ZW5kLmdldEtpdFNldHRpbmdzKCJsaWdodGJveF9lbmFibGVfc2hhcmUiKSwgciA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKSwgbCA9IHIuc2xpZGVzaG93LCBkID0gdGhpcy5lbGVtZW50czsKICAgICAgICAgICAgICAgICAgICBpZiAocyB8fCBuIHx8IG8gfHwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZC4kaGVhZGVyID0gdCgiPGhlYWRlcj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGwuaGVhZGVyICsgIiAiICsgci5wcmV2ZW50Q2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5pc0ZvbnRJY29uU3ZnRXhwZXJpbWVudCA/IGkuc2hhcmVBcnJvdy5lbGVtZW50IDogIjxpPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLiRpY29uU2hhcmUgPSB0KHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbC5pY29uU2hhcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogImJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiOiBlLnNoYXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWV4cGFuZGVkIjogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmFwcGVuZCh0KCI8c3Bhbj4iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdCgiPGRpdj4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ub24oImNsaWNrIiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZC4kc2hhcmVNZW51ID0gdCgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGwuc2hhcmVNZW51CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5hcHBlbmQobiksIGQuJGljb25TaGFyZS5hZGQoZC4kc2hhcmVNZW51KS5vbigiY2xpY2siLCB0aGlzLnRvZ2dsZVNoYXJlTWVudSksIGQuJGhlYWRlci5hcHBlbmQoZC4kaWNvblNoYXJlLCBkLiRzaGFyZU1lbnUpLCB0aGlzLiRidXR0b25zID0gdGhpcy4kYnV0dG9ucy5hZGQoZC4kaWNvblNoYXJlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5pc0ZvbnRJY29uU3ZnRXhwZXJpbWVudCA/IGkuem9vbUluQm9sZC5lbGVtZW50IDogIjxpPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6ICJzd2l0Y2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1jaGVja2VkIjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWxhYmVsIjogZS56b29tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0geyAuLi5vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGb250SWNvblN2Z0V4cGVyaW1lbnQgfHwgKGEuY2xhc3MgPSBsLmljb25ab29tSW4pLCBkLiRpY29uWm9vbSA9IHQocykuYXR0cihhKS5vbigiY2xpY2siLCB0aGlzLnRvZ2dsZVpvb21Nb2RlKSwgbi5wdXNoKGQuJGljb25ab29tKSwgdGhpcy5pc0ZvbnRJY29uU3ZnRXhwZXJpbWVudCAmJiAoZC4kaWNvblpvb21PdXQgPSB0KGkuem9vbU91dEJvbGQuZWxlbWVudCkuYXR0cihvKS5hZGRDbGFzcyhyLmhpZGRlbikub24oImNsaWNrIiwgdGhpcy50b2dnbGVab29tTW9kZSksIG4ucHVzaChkLiRpY29uWm9vbU91dCkpLCBkLiRoZWFkZXIuYXBwZW5kKG4pLCB0aGlzLiRidXR0b25zID0gdGhpcy4kYnV0dG9ucy5hZGQobikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuaXNGb250SWNvblN2Z0V4cGVyaW1lbnQgPyBpLmZyYW1lRXhwYW5kLmVsZW1lbnQgOiAiPGk+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogInN3aXRjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWNoZWNrZWQiOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiOiBlLmZ1bGxzY3JlZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB7IC4uLm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZvbnRJY29uU3ZnRXhwZXJpbWVudCB8fCAoYS5jbGFzcyA9IGwuaWNvbkV4cGFuZCksIGQuJGljb25FeHBhbmQgPSB0KHMpLmFwcGVuZCh0KCI8c3Bhbj4iKSwgdCgiPHNwYW4+IikpLmF0dHIoYSkub24oImNsaWNrIiwgdGhpcy50b2dnbGVGdWxsc2NyZWVuKSwgbi5wdXNoKGQuJGljb25FeHBhbmQpLCB0aGlzLmlzRm9udEljb25TdmdFeHBlcmltZW50ICYmIChkLiRpY29uTWluaW1pemUgPSB0KGkuZnJhbWVNaW5pbWl6ZS5lbGVtZW50KS5hdHRyKG8pLmFkZENsYXNzKHIuaGlkZGVuKS5vbigiY2xpY2siLCB0aGlzLnRvZ2dsZUZ1bGxzY3JlZW4pLCBuLnB1c2goZC4kaWNvbk1pbmltaXplKSksIGQuJGhlYWRlci5hcHBlbmQobiksIHRoaXMuJGJ1dHRvbnMgPSB0aGlzLiRidXR0b25zLmFkZChuKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzICYmIChkLiRjb3VudGVyID0gdCgiPHNwYW4+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGwuY291bnRlcgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgZC4kaGVhZGVyLmFwcGVuZChkLiRjb3VudGVyKSksIGQuJGhlYWRlcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b2dnbGVGdWxsc2NyZWVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBuLmRlZmF1bHQuaXNGdWxsc2NyZWVuID8gdGhpcy5kZWFjdGl2YXRlRnVsbHNjcmVlbigpIDogbi5kZWZhdWx0LmlzRW5hYmxlZCAmJiB0aGlzLmFjdGl2YXRlRnVsbHNjcmVlbigpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9nZ2xlWm9vbU1vZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIDEgIT09IHRoaXMuc3dpcGVyLnpvb20uc2NhbGUgPyB0aGlzLmRlYWN0aXZhdGVab29tKCkgOiB0aGlzLmFjdGl2YXRlWm9vbSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9nZ2xlU2hhcmVNZW51OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNoYXJlTW9kZSA/IHRoaXMuZGVhY3RpdmF0ZVNoYXJlTW9kZSgpIDogKHRoaXMuZWxlbWVudHMuJHNoYXJlTWVudS5odG1sKHRoaXMuZ2V0U2hhcmVMaW5rcygpKSwgdGhpcy5hY3RpdmF0ZVNoYXJlTW9kZSgpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFjdGl2YXRlU2hhcmVNb2RlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lci5hZGRDbGFzcyhlLnNsaWRlc2hvdy5zaGFyZU1vZGUpLCB0aGlzLmVsZW1lbnRzLiRpY29uU2hhcmUuYXR0cigiYXJpYS1leHBhbmRlZCIsICEwKSwgdGhpcy5zd2lwZXIuZGV0YWNoRXZlbnRzKCksIHRoaXMuJG9yaWdpbmFsQnV0dG9ucyA9IHRoaXMuJGJ1dHRvbnMsIHRoaXMuJGJ1dHRvbnMgPSB0aGlzLmVsZW1lbnRzLiRpY29uU2hhcmUuYWRkKHRoaXMuZWxlbWVudHMuJHNoYXJlTWVudS5maW5kKCJhIikpLCB0aGlzLnNoYXJlTW9kZSA9ICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVhY3RpdmF0ZVNoYXJlTW9kZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRjb250YWluZXIucmVtb3ZlQ2xhc3MoZS5zbGlkZXNob3cuc2hhcmVNb2RlKSwgdGhpcy5lbGVtZW50cy4kaWNvblNoYXJlLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAhMSksIHRoaXMuc3dpcGVyLmF0dGFjaEV2ZW50cygpLCB0aGlzLiRidXR0b25zID0gdGhpcy4kb3JpZ2luYWxCdXR0b25zLCB0aGlzLnNoYXJlTW9kZSA9ICExCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYWN0aXZhdGVGdWxsc2NyZWVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpOwogICAgICAgICAgICAgICAgICAgIG4uZGVmYXVsdC5yZXF1ZXN0KHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lci5wYXJlbnRzKCIuZGlhbG9nLXdpZGdldCIpWzBdKSwgdGhpcy5pc0ZvbnRJY29uU3ZnRXhwZXJpbWVudCA/ICh0aGlzLmVsZW1lbnRzLiRpY29uRXhwYW5kLmFkZENsYXNzKGUuaGlkZGVuKS5hdHRyKCJhcmlhLWNoZWNrZWQiLCAiZmFsc2UiKSwgdGhpcy5lbGVtZW50cy4kaWNvbk1pbmltaXplLnJlbW92ZUNsYXNzKGUuaGlkZGVuKS5hdHRyKCJhcmlhLWNoZWNrZWQiLCAidHJ1ZSIpKSA6IHRoaXMuZWxlbWVudHMuJGljb25FeHBhbmQucmVtb3ZlQ2xhc3MoZS5zbGlkZXNob3cuaWNvbkV4cGFuZCkuYWRkQ2xhc3MoZS5zbGlkZXNob3cuaWNvblNocmluaykuYXR0cigiYXJpYS1jaGVja2VkIiwgInRydWUiKSwgdGhpcy5lbGVtZW50cy4kY29udGFpbmVyLmFkZENsYXNzKGUuc2xpZGVzaG93LmZ1bGxzY3JlZW5Nb2RlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVGdWxsc2NyZWVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpOwogICAgICAgICAgICAgICAgICAgIG4uZGVmYXVsdC5leGl0KCksIHRoaXMuaXNGb250SWNvblN2Z0V4cGVyaW1lbnQgPyAodGhpcy5lbGVtZW50cy4kaWNvbkV4cGFuZC5yZW1vdmVDbGFzcyhlLmhpZGRlbikuYXR0cigiYXJpYS1jaGVja2VkIiwgInRydWUiKSwgdGhpcy5lbGVtZW50cy4kaWNvbk1pbmltaXplLmFkZENsYXNzKGUuaGlkZGVuKS5hdHRyKCJhcmlhLWNoZWNrZWQiLCAiZmFsc2UiKSkgOiB0aGlzLmVsZW1lbnRzLiRpY29uRXhwYW5kLnJlbW92ZUNsYXNzKGUuc2xpZGVzaG93Lmljb25TaHJpbmspLmFkZENsYXNzKGUuc2xpZGVzaG93Lmljb25FeHBhbmQpLmF0dHIoImFyaWEtY2hlY2tlZCIsICJmYWxzZSIpLCB0aGlzLmVsZW1lbnRzLiRjb250YWluZXIucmVtb3ZlQ2xhc3MoZS5zbGlkZXNob3cuZnVsbHNjcmVlbk1vZGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYWN0aXZhdGVab29tOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5zd2lwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpOwogICAgICAgICAgICAgICAgICAgIGUuem9vbS5pbigpLCBlLmFsbG93U2xpZGVOZXh0ID0gITEsIGUuYWxsb3dTbGlkZVByZXYgPSAhMSwgZS5hbGxvd1RvdWNoTW92ZSA9ICExLCB0LiRjb250YWluZXIuYWRkQ2xhc3Mocy5zbGlkZXNob3cuem9vbU1vZGUpLCB0aGlzLmlzRm9udEljb25TdmdFeHBlcmltZW50ID8gKHQuJGljb25ab29tLmFkZENsYXNzKHMuaGlkZGVuKS5hdHRyKCJhcmlhLWNoZWNrZWQiLCAiZmFsc2UiKSwgdC4kaWNvblpvb21PdXQucmVtb3ZlQ2xhc3Mocy5oaWRkZW4pLmF0dHIoImFyaWEtY2hlY2tlZCIsICJ0cnVlIikpIDogdC4kaWNvblpvb20ucmVtb3ZlQ2xhc3Mocy5zbGlkZXNob3cuaWNvblpvb21JbikuYWRkQ2xhc3Mocy5zbGlkZXNob3cuaWNvblpvb21PdXQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVhY3RpdmF0ZVpvb206IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLnN3aXBlciwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIik7CiAgICAgICAgICAgICAgICAgICAgZS56b29tLm91dCgpLCBlLmFsbG93U2xpZGVOZXh0ID0gITAsIGUuYWxsb3dTbGlkZVByZXYgPSAhMCwgZS5hbGxvd1RvdWNoTW92ZSA9ICEwLCB0LiRjb250YWluZXIucmVtb3ZlQ2xhc3Mocy5zbGlkZXNob3cuem9vbU1vZGUpLCB0aGlzLmlzRm9udEljb25TdmdFeHBlcmltZW50ID8gKHQuJGljb25ab29tLnJlbW92ZUNsYXNzKHMuaGlkZGVuKS5hdHRyKCJhcmlhLWNoZWNrZWQiLCAidHJ1ZSIpLCB0LiRpY29uWm9vbU91dC5hZGRDbGFzcyhzLmhpZGRlbikuYXR0cigiYXJpYS1jaGVja2VkIiwgImZhbHNlIikpIDogdC4kaWNvblpvb20ucmVtb3ZlQ2xhc3Mocy5zbGlkZXNob3cuaWNvblpvb21PdXQpLmFkZENsYXNzKHMuc2xpZGVzaG93Lmljb25ab29tSW4pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0U2xpZGVzaG93Rm9vdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0galF1ZXJ5LAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZSgiPGZvb3Rlcj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogdC5zbGlkZXNob3cuZm9vdGVyICsgIiAiICsgdC5wcmV2ZW50Q2xvc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlKCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB0LnNsaWRlc2hvdy50aXRsZQogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHQuc2xpZGVzaG93LmRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzLmFwcGVuZChuLCBpKSwgcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldFNsaWRlc2hvd0NvbnRlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkxOG46IHQKICAgICAgICAgICAgICAgICAgICB9ID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLCBzID0galF1ZXJ5LCBuID0gMSA9PT0gZS5zbGlkZXMubGVuZ3RoLCBvID0gIiIgIT09IGVsZW1lbnRvckZyb250ZW5kLmdldEtpdFNldHRpbmdzKCJsaWdodGJveF90aXRsZV9zcmMiKSwgYSA9ICIiICE9PSBlbGVtZW50b3JGcm9udGVuZC5nZXRLaXRTZXR0aW5ncygibGlnaHRib3hfZGVzY3JpcHRpb25fc3JjIiksIHIgPSBvIHx8IGEsIGwgPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIiksIGQgPSBsLnNsaWRlc2hvdywgYyA9IHMoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZC5jb250YWluZXIKICAgICAgICAgICAgICAgICAgICB9KSwgaCA9IHMoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZC5zbGlkZXNXcmFwcGVyCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHUsIG07CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuc2xpZGVzLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSBkLnNsaWRlICsgIiAiICsgbC5pdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS52aWRlbyAmJiAobiArPSAiICIgKyBsLnZpZGVvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBzKCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS52aWRlbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uYXR0cigiZGF0YS1lbGVtZW50b3Itc2xpZGVzaG93LXZpZGVvIiwgZS52aWRlbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuaXNGb250SWNvblN2Z0V4cGVyaW1lbnQgPyBpLmxvYWRpbmcuZWxlbWVudCA6ICI8aT4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcygiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbC5wbGF5QnV0dG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmh0bWwocyhuKS5hdHRyKCJhcmlhLWxhYmVsIiwgdC5wbGF5VmlkZW8pLmFkZENsYXNzKGwucGxheUJ1dHRvbkljb24pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmFwcGVuZChhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gcygiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogInN3aXBlci16b29tLWNvbnRhaW5lciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzKCc8ZGl2IGNsYXNzPSJzd2lwZXItbGF6eS1wcmVsb2FkZXIiPjwvZGl2PicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEtc3JjIjogZS5pbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBsLmltYWdlICsgIiAiICsgbC5wcmV2ZW50Q2xvc2UgKyAiIHN3aXBlci1sYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGl0bGUgJiYgKGlbImRhdGEtdGl0bGUiXSA9IGUudGl0bGUsIGkuYWx0ID0gZS50aXRsZSksIGUuZGVzY3JpcHRpb24gJiYgKGlbImRhdGEtZGVzY3JpcHRpb24iXSA9IGUuZGVzY3JpcHRpb24sIGkuYWx0ICs9ICIgLSAiICsgZS5kZXNjcmlwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHMoIjxpbWc+IiwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hcHBlbmQoW2EsIG5dKSwgby5hcHBlbmQodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaGFzaCAmJiBvLmF0dHIoImUtYWN0aW9uLWhhc2giLCBlLmhhc2gpLCBoLmFwcGVuZChvKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lciA9IGMsIHRoaXMuZWxlbWVudHMuJGhlYWRlciA9IHRoaXMuZ2V0U2xpZGVzaG93SGVhZGVyKCksIGMucHJlcGVuZCh0aGlzLmVsZW1lbnRzLiRoZWFkZXIpLmFwcGVuZChoKSwgIW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuaXNGb250SWNvblN2Z0V4cGVyaW1lbnQgPyBzKGkuY2hldnJvbkxlZnQuZWxlbWVudCkgOiBzKCI8aT4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGQucHJldkJ1dHRvbkljb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuaXNGb250SWNvblN2Z0V4cGVyaW1lbnQgPyBzKGkuY2hldnJvblJpZ2h0LmVsZW1lbnQpIDogcygiPGk+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBkLm5leHRCdXR0b25JY29uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGQucHJldkJ1dHRvbiArICIgIiArIGwucHJldmVudENsb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiOiB0LnByZXZpb3VzCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmh0bWwoZSksIG0gPSBzKCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBkLm5leHRCdXR0b24gKyAiICIgKyBsLnByZXZlbnRDbG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWxhYmVsIjogdC5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmh0bWwobiksIGMuYXBwZW5kKG0sIHUpLCB0aGlzLiRidXR0b25zID0gdGhpcy4kYnV0dG9ucy5hZGQobSkuYWRkKHUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHIgJiYgKHRoaXMuZWxlbWVudHMuJGZvb3RlciA9IHRoaXMuZ2V0U2xpZGVzaG93Rm9vdGVyKCksIGMuYXBwZW5kKHRoaXMuZWxlbWVudHMuJGZvb3RlcikpLCB0aGlzLnNldFNldHRpbmdzKCJoaWRlVWlUaW1lb3V0IiwgIiIpLCBjLm9uKCJjbGljayBtb3VzZW1vdmUga2V5cHJlc3MiLCB0aGlzLnNob3dMaWdodGJveFVpKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gdGhpcy5nZXRNb2RhbCgpOwogICAgICAgICAgICAgICAgICAgIHAuc2V0TWVzc2FnZShjKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBnID0gcC5vblNob3c7CiAgICAgICAgICAgICAgICAgICAgcC5vblNob3cgPSBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbDogIi4iICsgZC5jb3VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJmcmFjdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlQ2hhbmdlVHJhbnNpdGlvbkVuZDogdGhpcy5vblNsaWRlQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF6eTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dDogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhYkN1cnNvcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5DYWxsYmFja3NPbkluaXQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlib2FyZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbGVtZW50b3JCcmVha3BvaW50czogITAKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgbiB8fCAodC5uYXZpZ2F0aW9uID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldkVsOiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEVsOiBtCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLnN3aXBlciAmJiBzLmV4dGVuZCh0LCBlLnN3aXBlcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy5zd2lwZXI7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyID0gYXdhaXQgbmV3IGkoYywgdCksIGMuZGF0YSgic3dpcGVyIiwgdGhpcy5zd2lwZXIpLCB0aGlzLnNldFZpZGVvQXNwZWN0UmF0aW8oKSwgdGhpcy5wbGF5U2xpZGVWaWRlbygpLCByICYmIHRoaXMudXBkYXRlRm9vdGVyVGV4dCgpLCB0aGlzLmJpbmRIb3RLZXlzKCksIHRoaXMubWFrZUJ1dHRvbnNBY2Nlc3NpYmxlKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbWFrZUJ1dHRvbnNBY2Nlc3NpYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRidXR0b25zLmF0dHIoInRhYmluZGV4IiwgMCkub24oImtleXByZXNzIiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAxMyAhPT0gZS53aGljaCAmJiAzMiAhPT0gZS53aGljaCB8fCBqUXVlcnkoZS5jdXJyZW50VGFyZ2V0KS50cmlnZ2VyKCJjbGljayIpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2hvd0xpZ2h0Ym94VWk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIikuc2xpZGVzaG93OwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lci5yZW1vdmVDbGFzcyhlLmhpZGVVaVZpc2liaWxpdHkpLCBjbGVhclRpbWVvdXQodGhpcy5nZXRTZXR0aW5ncygiaGlkZVVpVGltZW91dCIpKSwgdGhpcy5zZXRTZXR0aW5ncygiaGlkZVVpVGltZW91dCIsIHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGFyZU1vZGUgfHwgdGhpcy5lbGVtZW50cy4kY29udGFpbmVyLmFkZENsYXNzKGUuaGlkZVVpVmlzaWJpbGl0eSkKICAgICAgICAgICAgICAgICAgICB9KSwgMzUwMCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmluZEhvdEtleXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TW9kYWwoKS5nZXRFbGVtZW50cygid2luZG93Iikub24oImtleWRvd24iLCB0aGlzLmFjdGl2ZUtleURvd24pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5iaW5kSG90S2V5czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNb2RhbCgpLmdldEVsZW1lbnRzKCJ3aW5kb3ciKS5vZmYoImtleWRvd24iLCB0aGlzLmFjdGl2ZUtleURvd24pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYWN0aXZlS2V5RG93bjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xpZ2h0Ym94VWkoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoOSA9PT0gZS53aGljaCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy4kYnV0dG9uczsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMsIG4gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5lYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0W2VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeShvKS5pcygiOmZvY3VzIikpIHJldHVybiBzID0gbywgbiA9IDAgPT09IGUsIGkgPSB0Lmxlbmd0aCAtIDEgPT09IGUsICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZS5zaGlmdEtleSA/IG4gJiYgKGUucHJldmVudERlZmF1bHQoKSwgdC5sYXN0KCkudHJpZ2dlcigiZm9jdXMiKSkgOiAhaSAmJiBzIHx8IChlLnByZXZlbnREZWZhdWx0KCksIHQuZmlyc3QoKS50cmlnZ2VyKCJmb2N1cyIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRWaWRlb0FzcGVjdFJhdGlvOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGUgfHwgdGhpcy5nZXRTZXR0aW5ncygibW9kYWxPcHRpb25zLnZpZGVvQXNwZWN0UmF0aW8iKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRNb2RhbCgpLmdldEVsZW1lbnRzKCJ3aWRnZXRDb250ZW50IiksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLm9sZEFzcGVjdFJhdGlvLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3Nlcy5hc3BlY3RSYXRpbyIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMub2xkQXNwZWN0UmF0aW8gPSBlLCBzICYmIHQucmVtb3ZlQ2xhc3Mobi5yZXBsYWNlKCIlcyIsIHMpKSwgZSAmJiB0LmFkZENsYXNzKG4ucmVwbGFjZSgiJXMiLCBlKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRTbGlkZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkodGhpcy5zd2lwZXIuc2xpZGVzKS5maWx0ZXIodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLnNsaWRlc2hvdy4iICsgZSArICJTbGlkZSIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVwZGF0ZUZvb3RlclRleHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbGVtZW50cy4kZm9vdGVyKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U2xpZGUoImFjdGl2ZSIpLmZpbmQoIi5lbGVtZW50b3ItbGlnaHRib3gtaW1hZ2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuZGF0YSgidGl0bGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZGF0YSgiZGVzY3JpcHRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZWxlbWVudHMuJGZvb3Rlci5maW5kKCIuIiArIGUuc2xpZGVzaG93LnRpdGxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZWxlbWVudHMuJGZvb3Rlci5maW5kKCIuIiArIGUuc2xpZGVzaG93LmRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICBpLnRleHQocyB8fCAiIiksIG8udGV4dChuIHx8ICIiKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHBsYXlTbGlkZVZpZGVvOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTbGlkZSgiYWN0aXZlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLmRhdGEoImVsZW1lbnRvci1zbGlkZXNob3ctdmlkZW8iKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBzLnZpZGVvQ29udGFpbmVyICsgIiAiICsgcy5pbnZpc2libGUKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHMudmlkZW9XcmFwcGVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5jaGlsZHJlbigiLiIgKyBzLnBsYXlCdXR0b24pOwogICAgICAgICAgICAgICAgICAgIGxldCBhLCByOwogICAgICAgICAgICAgICAgICAgIG4uYXBwZW5kKGkpLCBlLmFwcGVuZChuKSwgLTEgIT09IHQuaW5kZXhPZigidmltZW8uY29tIikgPyAoYSA9ICJ2aW1lbyIsIHIgPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy52aW1lbykgOiB0Lm1hdGNoKC9eKD86aHR0cHM/OlwvXC8pPyg/Ond3d1wuKT8oPzptXC4pPyg/OnlvdXR1XC5iZVwvfHlvdXR1YmVcLmNvbSkvKSAmJiAoYSA9ICJ5b3V0dWJlIiwgciA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLnlvdXR1YmUpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGwgPSByLmdldFZpZGVvSURGcm9tVVJMKHQpOwogICAgICAgICAgICAgICAgICAgIHIub25BcGlSZWFkeSgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ5b3V0dWJlIiA9PT0gYSA/IHRoaXMucHJlcGFyZVlUVmlkZW8oZSwgbCwgbiwgaSwgbykgOiAidmltZW8iID09PSBhICYmIHRoaXMucHJlcGFyZVZpbWVvVmlkZW8oZSwgdCwgbiwgaSwgbykKICAgICAgICAgICAgICAgICAgICB9KSksIG8uYWRkQ2xhc3Mocy5wbGF5aW5nKS5yZW1vdmVDbGFzcyhzLmhpZGRlbikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwcmVwYXJlWVRWaWRlbzogZnVuY3Rpb24oZSwgdCwgcywgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBqUXVlcnkoIjxkaXY+Iik7CiAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSBlLlBsYXllclN0YXRlLlBMQVlJTkc7CiAgICAgICAgICAgICAgICAgICAgbi5hcHBlbmQoYSksIHdpbmRvdy5jaHJvbWUgJiYgKHIgPSBlLlBsYXllclN0YXRlLlVOU1RBUlRFRCksIHMuYWRkQ2xhc3MoImVsZW1lbnRvci1sb2FkaW5nICIgKyBvLmludmlzaWJsZSksIHRoaXMucGxheWVyID0gbmV3IGUuUGxheWVyKGFbMF0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9JZDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlYWR5OiAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5hZGRDbGFzcyhvLmhpZGRlbiksIHMucmVtb3ZlQ2xhc3Moby5pbnZpc2libGUpLCB0aGlzLnBsYXllci5wbGF5VmlkZW8oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U6IGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YSA9PT0gciAmJiBzLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItbG9hZGluZyAiICsgby5pbnZpc2libGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHByZXBhcmVWaW1lb1ZpZGVvOiBmdW5jdGlvbihlLCB0LCBzLCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlzaW5saW5lOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyID0gbmV3IGUuUGxheWVyKG4sIGEpLCB0aGlzLnBsYXllci5yZWFkeSgpLnRoZW4oKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5hZGRDbGFzcyhvLmhpZGRlbiksIHMucmVtb3ZlQ2xhc3Moby5pbnZpc2libGUpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0RW50cmFuY2VBbmltYXRpb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCBlbGVtZW50b3JGcm9udGVuZC5nZXRDdXJyZW50RGV2aWNlU2V0dGluZyh0aGlzLmdldFNldHRpbmdzKCJtb2RhbE9wdGlvbnMiKSwgImVudHJhbmNlQW5pbWF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0TW9kYWwoKS5nZXRFbGVtZW50cygibWVzc2FnZSIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMub2xkQW5pbWF0aW9uICYmIHQucmVtb3ZlQ2xhc3ModGhpcy5vbGRBbmltYXRpb24pLCB0aGlzLm9sZEFuaW1hdGlvbiA9IGUsIGUgJiYgdC5hZGRDbGFzcygiYW5pbWF0ZWQgIiArIGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb3BlblNsaWRlc2hvdzogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBqUXVlcnkodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmxpbmtzIikpLmZpbHRlcigoKHQsIHMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBqUXVlcnkocyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gcy5kYXRhc2V0LmVsZW1lbnRvckxpZ2h0Ym94U2xpZGVzaG93ICYmICFuLnBhcmVudCgiLnN3aXBlci1zbGlkZS1kdXBsaWNhdGUiKS5sZW5ndGggJiYgIW4ucGFyZW50cygiLnNsaWNrLWNsb25lZCIpLmxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBbXTsKICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgcy5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZGF0YXNldC5lbGVtZW50b3JMaWdodGJveFZpZGVvOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgbyA9IHRoaXMuZGF0YXNldC5lbGVtZW50b3JMaWdodGJveEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IG8gJiYgKG8gPSBzLmluZGV4KHRoaXMpKSwgKHQgPT09IHRoaXMuaHJlZiB8fCBlICYmIHQgPT09IGUpICYmIChpID0gbyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5ocmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5kYXRhc2V0LmVsZW1lbnRvckxpZ2h0Ym94VGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kYXRhc2V0LmVsZW1lbnRvckxpZ2h0Ym94RGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiB0aGlzLmdldEF0dHJpYnV0ZSgiZS1hY3Rpb24taGFzaCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgKGEudmlkZW8gPSBlKSwgbi5wdXNoKGEpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLnNvcnQoKChlLCB0KSA9PiBlLmluZGV4IC0gdC5pbmRleCkpLCB0aGlzLnNob3dNb2RhbCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJzbGlkZXNob3ciLAogICAgICAgICAgICAgICAgICAgICAgICBpZDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxPcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogImVsZW1lbnRvci1saWdodGJveC1zbGlkZXNob3ctIiArIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzaG93OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsU2xpZGU6ICtpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9uU2xpZGVDaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGUoInByZXYiKS5hZGQodGhpcy5nZXRTbGlkZSgibmV4dCIpKS5hZGQodGhpcy5nZXRTbGlkZSgiYWN0aXZlIikpLmZpbmQoIi4iICsgdGhpcy5nZXRTZXR0aW5ncygiY2xhc3Nlcy52aWRlb1dyYXBwZXIiKSkucmVtb3ZlKCksIHRoaXMucGxheVNsaWRlVmlkZW8oKSwgdGhpcy51cGRhdGVGb290ZXJUZXh0KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIDMyNTE6IGUgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICEgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgdm9pZCAwICE9PSB3aW5kb3cuZG9jdW1lbnQgPyB3aW5kb3cuZG9jdW1lbnQgOiB7fSwKICAgICAgICAgICAgICAgICAgICBzID0gZS5leHBvcnRzLAogICAgICAgICAgICAgICAgICAgIG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSwgcyA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbInJlcXVlc3RGdWxsc2NyZWVuIiwgImV4aXRGdWxsc2NyZWVuIiwgImZ1bGxzY3JlZW5FbGVtZW50IiwgImZ1bGxzY3JlZW5FbmFibGVkIiwgImZ1bGxzY3JlZW5jaGFuZ2UiLCAiZnVsbHNjcmVlbmVycm9yIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJ3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbiIsICJ3ZWJraXRFeGl0RnVsbHNjcmVlbiIsICJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCIsICJ3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCIsICJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIiwgIndlYmtpdGZ1bGxzY3JlZW5lcnJvciJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsid2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4iLCAid2Via2l0Q2FuY2VsRnVsbFNjcmVlbiIsICJ3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiLCAid2Via2l0Q2FuY2VsRnVsbFNjcmVlbiIsICJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIiwgIndlYmtpdGZ1bGxzY3JlZW5lcnJvciJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibW96UmVxdWVzdEZ1bGxTY3JlZW4iLCAibW96Q2FuY2VsRnVsbFNjcmVlbiIsICJtb3pGdWxsU2NyZWVuRWxlbWVudCIsICJtb3pGdWxsU2NyZWVuRW5hYmxlZCIsICJtb3pmdWxsc2NyZWVuY2hhbmdlIiwgIm1vemZ1bGxzY3JlZW5lcnJvciJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibXNSZXF1ZXN0RnVsbHNjcmVlbiIsICJtc0V4aXRGdWxsc2NyZWVuIiwgIm1zRnVsbHNjcmVlbkVsZW1lbnQiLCAibXNGdWxsc2NyZWVuRW5hYmxlZCIsICJNU0Z1bGxzY3JlZW5DaGFuZ2UiLCAiTVNGdWxsc2NyZWVuRXJyb3IiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgbiA9IDAsIGkgPSBzLmxlbmd0aCwgbyA9IHt9OyBuIDwgaTsgbisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlID0gc1tuXSkgJiYgZVsxXSBpbiB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgYTsgbisrKSBvW3NbMF1bbl1dID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlOiBuLmZ1bGxzY3JlZW5jaGFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBuLmZ1bGxzY3JlZW5lcnJvcgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHMsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9mZigiY2hhbmdlIiwgbyksIHMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKCJjaGFuZ2UiLCBvKSwgZSA9IGUgfHwgdC5kb2N1bWVudEVsZW1lbnQsIFByb21pc2UucmVzb2x2ZShlW24ucmVxdWVzdEZ1bGxzY3JlZW5dKCkpLmNhdGNoKGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsIHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2ZmKCJjaGFuZ2UiLCBpKSwgZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbigiY2hhbmdlIiwgaSksIFByb21pc2UucmVzb2x2ZSh0W24uZXhpdEZ1bGxzY3JlZW5dKCkpLmNhdGNoKHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRnVsbHNjcmVlbiA/IHRoaXMuZXhpdCgpIDogdGhpcy5yZXF1ZXN0KGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKCJjaGFuZ2UiLCBlKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvbmVycm9yOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKCJlcnJvciIsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiBmdW5jdGlvbihlLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGlbZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICYmIHQuYWRkRXZlbnRMaXN0ZW5lcihuLCBzLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgb2ZmOiBmdW5jdGlvbihlLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGlbZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICYmIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLCBzLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmF3OiBuCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIG4gPyAoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobywgewogICAgICAgICAgICAgICAgICAgIGlzRnVsbHNjcmVlbjogewogICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW4odFtuLmZ1bGxzY3JlZW5FbGVtZW50XSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogewogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0W24uZnVsbHNjcmVlbkVsZW1lbnRdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGlzRW5hYmxlZDogewogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuKHRbbi5mdWxsc2NyZWVuRW5hYmxlZF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgcyA/IGUuZXhwb3J0cyA9IG8gOiB3aW5kb3cuc2NyZWVuZnVsbCA9IG8pIDogcyA/IGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICB9IDogd2luZG93LnNjcmVlbmZ1bGwgPSB7CiAgICAgICAgICAgICAgICAgICAgaXNFbmFibGVkOiAhMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KCkKICAgICAgICB9CiAgICB9LAogICAgZSA9PiB7CiAgICAgICAgZS5PKDAsIFs4MTksIDM1NF0sICgoKSA9PiB7CiAgICAgICAgICAgIHJldHVybiB0ID0gMTIxMCwgZShlLnMgPSB0KTsKICAgICAgICAgICAgdmFyIHQKICAgICAgICB9KSk7CiAgICAgICAgZS5PKCkKICAgIH0KXSk7"}},"time_used":1369,"timings":{"blocked":1274,"dns":0,"connect":0,"send":0,"wait":94,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/wp-util.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.523Z","timestamp":1785145482523,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/wp-util.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Fri, 25 Jun 2021 14:50:58 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=2.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":1340,"size_decoded":1216,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (1305)","md5":"8637362089372427b52fa10a43d8109c","sha1":"6009bed674718329dce6055ab09fa95181162d81","sha256":"b8e78b48acc08ce31457aff168d6fb2c814d51a8739a97693cdba585d60f5b35","sha512":"2674895f82bd2002a0c31c51fc139b01bdd78a22675252d72d99c1310faa2f31a6a0e32f5a0583ad8a08267369182f84828fa069a57e9ebee5866f247ccb2571","ssdeep":"","tlshash":"a6215685f15ab9e3013330b9c33f0607b332e8145a669951e4d8c4e1ae70d56f5b7a29","first_seen":"2023-03-07T01:02:51Z","last_seen":"2026-07-27T09:45:50.924866Z","times_seen":3844,"resource_available":true,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwp3aW5kb3cud3A9d2luZG93LndwfHx7fSxmdW5jdGlvbihzKXt2YXIgdD0idW5kZWZpbmVkIj09dHlwZW9mIF93cFV0aWxTZXR0aW5ncz97fTpfd3BVdGlsU2V0dGluZ3M7d3AudGVtcGxhdGU9Xy5tZW1vaXplKGZ1bmN0aW9uKGUpe3ZhciBhLG49e2V2YWx1YXRlOi88IyhbXHNcU10rPykjPi9nLGludGVycG9sYXRlOi9ce1x7XHsoW1xzXFNdKz8pXH1cfVx9L2csZXNjYXBlOi9ce1x7KFteXH1dKz8pXH1cfSg/IVx9KS9nLHZhcmlhYmxlOiJkYXRhIn07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybihhPWF8fF8udGVtcGxhdGUocygiI3RtcGwtIitlKS5odG1sKCksbikpKHQpfX0pLHdwLmFqYXg9e3NldHRpbmdzOnQuYWpheHx8e30scG9zdDpmdW5jdGlvbih0LGUpe3JldHVybiB3cC5hamF4LnNlbmQoe2RhdGE6Xy5pc09iamVjdCh0KT90Ol8uZXh0ZW5kKGV8fHt9LHthY3Rpb246dH0pfSl9LHNlbmQ6ZnVuY3Rpb24obix0KXt2YXIgZSxhO3JldHVybiBfLmlzT2JqZWN0KG4pP3Q9bjoodD10fHx7fSkuZGF0YT1fLmV4dGVuZCh0LmRhdGF8fHt9LHthY3Rpb246bn0pLHQ9Xy5kZWZhdWx0cyh0fHx7fSx7dHlwZToiUE9TVCIsdXJsOndwLmFqYXguc2V0dGluZ3MudXJsLGNvbnRleHQ6dGhpc30pLChlPShhPXMuRGVmZXJyZWQoZnVuY3Rpb24oYSl7dC5zdWNjZXNzJiZhLmRvbmUodC5zdWNjZXNzKSx0LmVycm9yJiZhLmZhaWwodC5lcnJvciksZGVsZXRlIHQuc3VjY2VzcyxkZWxldGUgdC5lcnJvcixhLmpxWEhSPXMuYWpheCh0KS5kb25lKGZ1bmN0aW9uKHQpe3ZhciBlOyIxIiE9PXQmJjEhPT10fHwodD17c3VjY2VzczohMH0pLF8uaXNPYmplY3QodCkmJiFfLmlzVW5kZWZpbmVkKHQuc3VjY2Vzcyk/KGU9dGhpcyxhLmRvbmUoZnVuY3Rpb24oKXtuJiZuLmRhdGEmJiJxdWVyeS1hdHRhY2htZW50cyI9PT1uLmRhdGEuYWN0aW9uJiZhLmpxWEhSLmhhc093blByb3BlcnR5KCJnZXRSZXNwb25zZUhlYWRlciIpJiZhLmpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCJYLVdQLVRvdGFsIik/ZS50b3RhbEF0dGFjaG1lbnRzPXBhcnNlSW50KGEuanFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIlgtV1AtVG90YWwiKSwxMCk6ZS50b3RhbEF0dGFjaG1lbnRzPTB9KSxhW3Quc3VjY2Vzcz8icmVzb2x2ZVdpdGgiOiJyZWplY3RXaXRoIl0odGhpcyxbdC5kYXRhXSkpOmEucmVqZWN0V2l0aCh0aGlzLFt0XSl9KS5mYWlsKGZ1bmN0aW9uKCl7YS5yZWplY3RXaXRoKHRoaXMsYXJndW1lbnRzKX0pfSkpLnByb21pc2UoKSkuYWJvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYS5qcVhIUi5hYm9ydCgpLHRoaXN9LGV9fX0oalF1ZXJ5KTs="}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":10,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor-pro/assets/css/frontend.min.css?ver=3.6.4","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.297Z","timestamp":1785145482297,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor-pro/assets/css/frontend.min.css?ver=3.6.4 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 495784\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":495784,"size_decoded":495995,"mime_type":"text/css","magic":"ASCII text","md5":"38ac921e45d4cf9b4cf33258a1fb3d77","sha1":"d590989077614bdcd5c62ac5b0525b970de9b19f","sha256":"939760857258026b32e599b0fc3c65e5639aa0a2c690accb8387911be2ba197b","sha512":"34bb6ef07d301265e3eda6d893e172c5d2c76706bb7b1c54c8cd8293799702d719d881cc6857463f3189a74c34c082e2c5aa51d9c7fd3d64b2f131dc6a4a19e8","ssdeep":"3072:KiGBqWE58BbJEBRandOh+q3qT8A8AinTQl8ln8/L//Zai1bgutSGyuxzplek5LVH:KiPKUHuCLr+oo4B+","tlshash":"87b49563bc230920666f541f83cb55cc3aa091c79502a9f8fd96268b4feacf8736175d","first_seen":"2026-07-27T08:06:56.564971Z","last_seen":"2026-07-27T09:45:50.968256Z","times_seen":3,"resource_available":false,"data":"LyohIGVsZW1lbnRvci1wcm8gLSB2My42LjQgLSAxNS0wMy0yMDIyICovCgpAY2hhcnNldCAiVVRGLTgiOwouZWxlbWVudG9yLWJnLXRyYW5zZm9ybSAuZWxlbWVudG9yLWJnIHsKICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0KfQoKLmVsZW1lbnRvci1iZy10cmFuc2Zvcm0tem9vbS1pbjpob3ZlciAuZWxlbWVudG9yLWJnLAouZWxlbWVudG9yLWJnLXRyYW5zZm9ybS16b29tLW91dCAuZWxlbWVudG9yLWJnIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKQp9CgouZWxlbWVudG9yLWJnLXRyYW5zZm9ybS16b29tLW91dDpob3ZlciAuZWxlbWVudG9yLWJnIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKQp9CgouZWxlbWVudG9yLWJnLXRyYW5zZm9ybS1tb3ZlLWxlZnQgLmVsZW1lbnRvci1iZyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVYKDglKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMikgdHJhbnNsYXRlWCg4JSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMikgdHJhbnNsYXRlWCg4JSkKfQoKLmVsZW1lbnRvci1iZy10cmFuc2Zvcm0tbW92ZS1sZWZ0OmhvdmVyIC5lbGVtZW50b3ItYmcsCi5lbGVtZW50b3ItYmctdHJhbnNmb3JtLW1vdmUtcmlnaHQgLmVsZW1lbnRvci1iZyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVYKC04JSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjIpIHRyYW5zbGF0ZVgoLTglKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVYKC04JSkKfQoKLmVsZW1lbnRvci1iZy10cmFuc2Zvcm0tbW92ZS1yaWdodDpob3ZlciAuZWxlbWVudG9yLWJnIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpIHRyYW5zbGF0ZVgoOCUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVYKDglKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVYKDglKQp9CgouZWxlbWVudG9yLWJnLXRyYW5zZm9ybS1tb3ZlLXVwIC5lbGVtZW50b3ItYmcgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMikgdHJhbnNsYXRlWSg4JSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjIpIHRyYW5zbGF0ZVkoOCUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpIHRyYW5zbGF0ZVkoOCUpCn0KCi5lbGVtZW50b3ItYmctdHJhbnNmb3JtLW1vdmUtZG93biAuZWxlbWVudG9yLWJnLAouZWxlbWVudG9yLWJnLXRyYW5zZm9ybS1tb3ZlLXVwOmhvdmVyIC5lbGVtZW50b3ItYmcgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMikgdHJhbnNsYXRlWSgtOCUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVZKC04JSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMikgdHJhbnNsYXRlWSgtOCUpCn0KCi5lbGVtZW50b3ItYmctdHJhbnNmb3JtLW1vdmUtZG93bjpob3ZlciAuZWxlbWVudG9yLWJnIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpIHRyYW5zbGF0ZVkoOCUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVZKDglKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVZKDglKQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgewogICAgLS10cmFuc2xhdGU6IDAsIDAKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZ3JvdyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSkKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tc2hyaW5rIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguODUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoLjg1KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjg1KQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1zaHJpbmstY29udGFpbmVkIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1lbnRlci16b29tLWluLAouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1lbnRlci16b29tLW91dCwKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZmFkZS1pbiB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudDpob3ZlciAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWV4aXQtem9vbS1pbiwKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZXhpdC16b29tLW91dCwKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZmFkZS1vdXQgewogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1leGl0LXpvb20tb3V0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguMik7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguMik7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4yKQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1leGl0LXpvb20taW4gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDIpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMik7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDIpCn0KCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudDpob3ZlciAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tYm90dG9tLAouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1lbnRlci1mcm9tLWxlZnQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudDpob3ZlciAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tcmlnaHQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudDpob3ZlciAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tdG9wIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVgoMCkKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZXhpdC10by1yaWdodCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMDBweCkKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZXhpdC10by1sZWZ0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwMHB4KQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1leGl0LXRvLXRvcCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNjAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNjAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02MDBweCkKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZXhpdC10by1ib3R0b20gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNjAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg2MDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNjAwcHgpCn0KCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudDpob3ZlciAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWV4aXQtdG8tYm90dG9tLAouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1leGl0LXRvLWxlZnQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudDpob3ZlciAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWV4aXQtdG8tcmlnaHQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudDpob3ZlciAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWV4aXQtdG8tdG9wIHsKICAgIG9wYWNpdHk6IDAKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tbW92ZS1yaWdodCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgzMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCkKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tbW92ZS1sZWZ0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMHB4KQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1tb3ZlLXVwIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1tb3ZlLWRvd24gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpCn0KCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudDpob3ZlciAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLW1vdmUtY29udGFpbmVkLXJpZ2h0IHsKICAgIC0tdHJhbnNsYXRlOiA4JSwgMAp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQ6aG92ZXIgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1tb3ZlLWNvbnRhaW5lZC1sZWZ0IHsKICAgIC0tdHJhbnNsYXRlOiAtOCUsIDAKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tbW92ZS1jb250YWluZWQtdG9wIHsKICAgIC0tdHJhbnNsYXRlOiAwLCAtOCUKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50OmhvdmVyIC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tbW92ZS1jb250YWluZWQtYm90dG9tIHsKICAgIC0tdHJhbnNsYXRlOiAwLCA4JQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgW2NsYXNzXj1lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbV0gewogICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1zaHJpbmstY29udGFpbmVkIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjE3KTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMTcpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE3KQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1lbnRlci16b29tLWluIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguMik7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguMik7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4yKQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1lbnRlci16b29tLW91dCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMik7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgyKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMikKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50IC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZW50ZXItem9vbS1pbiwKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50IC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZW50ZXItem9vbS1vdXQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWZhZGUtaW4gewogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1leGl0LXpvb20taW4sCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWV4aXQtem9vbS1vdXQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWZhZGUtb3V0IHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50IC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZW50ZXItZnJvbS1yaWdodCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMDBweCkKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50IC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZW50ZXItZnJvbS1sZWZ0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwMHB4KQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1lbnRlci1mcm9tLXRvcCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNjAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNjAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02MDBweCkKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50IC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZW50ZXItZnJvbS1ib3R0b20gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNTAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNTAwcHgpCn0KCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tYm90dG9tLAouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1lbnRlci1mcm9tLWxlZnQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tcmlnaHQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tdG9wIHsKICAgIG9wYWNpdHk6IDAKfQoKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50IC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZXhpdC10by1ib3R0b20sCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWV4aXQtdG8tbGVmdCwKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50IC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZXhpdC10by1yaWdodCwKLmVsZW1lbnRvci1hbmltYXRlZC1jb250ZW50IC5lbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tZXhpdC10by10b3AgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgdHJhbnNsYXRlWCgwKQp9CgouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1tb3ZlLWNvbnRhaW5lZC1ib3R0b20sCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLW1vdmUtY29udGFpbmVkLWxlZnQsCi5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLW1vdmUtY29udGFpbmVkLXJpZ2h0LAouZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1tb3ZlLWNvbnRhaW5lZC10b3AgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMikgdHJhbnNsYXRlKHZhcigtLXRyYW5zbGF0ZSkpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGUodmFyKC0tdHJhbnNsYXRlKSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMikgdHJhbnNsYXRlKHZhcigtLXRyYW5zbGF0ZSkpCn0KCi5lbGVtZW50b3ItZWRpdG9yLWFjdGl2ZSAuZWxlbWVudG9yLmVsZW1lbnRvci1lZGl0LW1vZGUgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWdsb2JhbC13aWRnZXQ6aG92ZXIgewogICAgb3V0bGluZTogMXB4IHNvbGlkICNmZWM0NDkKfQoKLmVsZW1lbnRvci1lZGl0b3ItYWN0aXZlIC5lbGVtZW50b3IuZWxlbWVudG9yLWVkaXQtbW9kZSAuZWxlbWVudG9yLWdsb2JhbC13aWRnZXQgLmVsZW1lbnRvci1lZGl0b3Itd2lkZ2V0LXNldHRpbmdzIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChib3R0b20sICNmZWI0MTYsICNmZWM0NDkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbSgjZmViNDE2KSwgdG8oI2ZlYzQ0OSkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDBkZWcsICNmZWI0MTYsICNmZWM0NDkpCn0KCi5lbGVtZW50b3ItZWRpdG9yLWFjdGl2ZSAuZWxlbWVudG9yLmVsZW1lbnRvci1lZGl0LW1vZGUgLmVsZW1lbnRvci1nbG9iYWwtd2lkZ2V0IC5lbGVtZW50b3ItZWRpdG9yLXdpZGdldC1zZXR0aW5ncyAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZlYjQxNgp9CgouZWxlbWVudG9yLWVkaXRvci1hY3RpdmUgLmVsZW1lbnRvci5lbGVtZW50b3ItZWRpdC1tb2RlIC5lbGVtZW50b3ItZ2xvYmFsLXdpZGdldCAuZWxlbWVudG9yLWVkaXRvci13aWRnZXQtc2V0dGluZ3MgLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1zZXR0aW5nLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1zYXZlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci10aGVtZS1idWlsZGVyLWNvbnRlbnQtYXJlYSB7CiAgICBoZWlnaHQ6IDQwMHB4Cn0KCi5lbGVtZW50b3ItbG9jYXRpb24tZm9vdGVyOmJlZm9yZSwKLmVsZW1lbnRvci1sb2NhdGlvbi1oZWFkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZGlzcGxheTogdGFibGU7CiAgICBjbGVhcjogYm90aAp9CgouZWxlbWVudG9yLXBvc3RzLmVsZW1lbnRvci1wb3N0cy0tc2tpbi1hcmNoaXZlX2Z1bGxfY29udGVudCBhcnRpY2xlLmVsZW1lbnRvci1wb3N0IHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3Itc3RpY2t5LS1hY3RpdmUgewogICAgei1pbmRleDogOTkKfQoKW2RhdGEtZWxlbWVudG9yLXR5cGU9cG9wdXBdIC5lbGVtZW50b3Itc2VjdGlvbi13cmFwOm5vdCg6ZW1wdHkpKyNlbGVtZW50b3ItYWRkLW5ldy1zZWN0aW9uLApbZGF0YS1lbGVtZW50b3ItdHlwZT1wb3B1cF06bm90KC5lbGVtZW50b3ItZWRpdC1hcmVhKSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3ItcG9wdXAtbW9kYWwgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYXV0bzsKICAgIC1tb3otdXNlci1zZWxlY3Q6IGF1dG87CiAgICAtbXMtdXNlci1zZWxlY3Q6IGF1dG87CiAgICB1c2VyLXNlbGVjdDogYXV0bwp9CgouZWxlbWVudG9yLXBvcHVwLW1vZGFsIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyLAouZWxlbWVudG9yLXBvcHVwLW1vZGFsIC5kaWFsb2ctaGVhZGVyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1wb3B1cC1tb2RhbCAuZGlhbG9nLWNsb3NlLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBub25lOwogICAgdG9wOiAyMHB4OwogICAgbWFyZ2luLXRvcDogMDsKICAgIHJpZ2h0OiAyMHB4OwogICAgb3BhY2l0eTogMTsKICAgIHotaW5kZXg6IDk5OTk7CiAgICBwb2ludGVyLWV2ZW50czogYWxsCn0KCi5lbGVtZW50b3ItcG9wdXAtbW9kYWwgLmRpYWxvZy1jbG9zZS1idXR0b24gc3ZnIHsKICAgIGZpbGw6ICMzNzNhM2M7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1wb3B1cC1tb2RhbCAuZGlhbG9nLXdpZGdldC1jb250ZW50IHsKICAgIHdpZHRoOiBhdXRvOwogICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBtYXgtaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICBwb2ludGVyLWV2ZW50czogYWxsCn0KCi5lbGVtZW50b3ItcG9wdXAtbW9kYWwgLmRpYWxvZy1tZXNzYWdlIHsKICAgIHdpZHRoOiA2NDBweDsKICAgIG1heC13aWR0aDogMTAwdnc7CiAgICBtYXgtaGVpZ2h0OiAxMDB2aDsKICAgIHBhZGRpbmc6IDA7CiAgICBvdmVyZmxvdzogYXV0bzsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3ItcG9wdXAtbW9kYWwgLmVsZW1lbnRvciB7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQsCi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXIgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHksIC13ZWJraXQtdHJhbnNmb3JtOwogICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5OwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5OwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAuMzMsIC4wNywgMS4wMyk7CiAgICAtby10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIC4zMywgLjA3LCAxLjAzKTsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgLjMzLCAuMDcsIDEuMDMpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxczsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IDFzOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMXMKfQoKLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdmFyKC0tZS10cmFuc2Zvcm0tb3JpZ2luLXkpIHZhcigtLWUtdHJhbnNmb3JtLW9yaWdpbi14KTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1lLXRyYW5zZm9ybS1vcmlnaW4teSkgdmFyKC0tZS10cmFuc2Zvcm0tb3JpZ2luLXgpOwogICAgdHJhbnNmb3JtLW9yaWdpbjogdmFyKC0tZS10cmFuc2Zvcm0tb3JpZ2luLXkpIHZhcigtLWUtdHJhbnNmb3JtLW9yaWdpbi14KQp9CgouZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiBjb3Zlcgp9CgouZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLXBlcnNwZWN0aXZlIHsKICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6IDEyMDBweDsKICAgIHBlcnNwZWN0aXZlOiAxMjAwcHgKfQoKYm9keS53b29jb21tZXJjZSAjY29udGVudCBkaXYucHJvZHVjdCAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWltYWdlcyBkaXYuaW1hZ2VzLApib2R5Lndvb2NvbW1lcmNlLXBhZ2UgI2NvbnRlbnQgZGl2LnByb2R1Y3QgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1pbWFnZXMgZGl2LmltYWdlcywKYm9keS53b29jb21tZXJjZS1wYWdlIGRpdi5wcm9kdWN0IC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtaW1hZ2VzIGRpdi5pbWFnZXMsCmJvZHkud29vY29tbWVyY2UgZGl2LnByb2R1Y3QgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1pbWFnZXMgZGl2LmltYWdlcyB7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMAp9Cgpib2R5LnJ0bC53b29jb21tZXJjZSAjY29udGVudCBkaXYucHJvZHVjdCAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWltYWdlcyBkaXYuaW1hZ2VzLApib2R5LnJ0bC53b29jb21tZXJjZS1wYWdlICNjb250ZW50IGRpdi5wcm9kdWN0IC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtaW1hZ2VzIGRpdi5pbWFnZXMsCmJvZHkucnRsLndvb2NvbW1lcmNlLXBhZ2UgZGl2LnByb2R1Y3QgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1pbWFnZXMgZGl2LmltYWdlcywKYm9keS5ydGwud29vY29tbWVyY2UgZGl2LnByb2R1Y3QgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1pbWFnZXMgZGl2LmltYWdlcyB7CiAgICBmbG9hdDogbm9uZTsKICAgIHBhZGRpbmc6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQgZm9ybS5jYXJ0LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIGZvcm0uY2FydCB7CiAgICBtYXJnaW46IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydCBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSkgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7CiAgICBmbGV4LXdyYXA6IG5vd3JhcAp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydCAucXVhbnRpdHksCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLnF1YW50aXR5IHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQgLnF1YW50aXR5IC5xdHksCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLnF1YW50aXR5IC5xdHkgewogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIG1hcmdpbi1yaWdodDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydCAucXVhbnRpdHkgaW5wdXQsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLnF1YW50aXR5IGlucHV0IHsKICAgIGhlaWdodDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydCAucXVhbnRpdHkrYnV0dG9uLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5xdWFudGl0eStidXR0b24gewogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1idXR0b24tc3BhY2luZywgMTBweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtYXV0byBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LXN0YWNrZWQgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWxheW91dC1zdGFja2VkIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtc3RhY2tlZCBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtc3RhY2tlZCBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtYXV0byBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LXN0YWNrZWQgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtc3RhY2tlZCBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWxheW91dC1hdXRvIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtc3RhY2tlZCAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtYXV0byAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtc3RhY2tlZCAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWxheW91dC1hdXRvIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LXN0YWNrZWQgLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LXN0YWNrZWQgLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LXN0YWNrZWQgLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtc3RhY2tlZCAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcAp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWxheW91dC1zdGFja2VkIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlcj4qLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LXN0YWNrZWQgLmUtYXRjLXF0eS1idXR0b24taG9sZGVyPiosCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWxheW91dC1zdGFja2VkIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlcj4qIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwogICAgZmxleC1iYXNpczogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWxheW91dC1zdGFja2VkIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciBidXR0b24sCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtc3RhY2tlZCAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgYnV0dG9uLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtc3RhY2tlZCAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgYnV0dG9uIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXRvcDogdmFyKC0tYnV0dG9uLXNwYWNpbmcsIDEwcHgpOwogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CiAgICBmbGV4LWJhc2lzOiBhdXRvCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtYXV0byAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgZmxleC13cmFwOiBub3dyYXAKfQoKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtYXV0byAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgLnF1YW50aXR5LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIC5xdWFudGl0eSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIC5xdWFudGl0eSB7CiAgICBtYXJnaW4tcmlnaHQ6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1sYXlvdXQtYXV0byAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgYnV0dG9uLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIGJ1dHRvbiwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tbGF5b3V0LWF1dG8gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIGJ1dHRvbiB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgIHRleHQtYWxpZ246IHN0YXJ0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIHRleHQtYWxpZ246IGVuZAp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBkaXYucXVhbnRpdHksCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgbWFyZ2luLXJpZ2h0OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgYnV0dG9uLAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24sCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24sCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgYnV0dG9uLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CiAgICBmbGV4LWJhc2lzOiBhdXRvCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICBmbGV4LWJhc2lzOiAxMDAlCn0KCkBtZWRpYSAobWluLXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIHRleHQtYWxpZ246IHN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiBlbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIHRleHQtYWxpZ246IGVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgYnV0dG9uLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGJ1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CiAgICAgICAgZmxleC1iYXNpczogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgZGl2LnF1YW50aXR5IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGJ1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICAgICAgZmxleC1iYXNpczogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIHRleHQtYWxpZ246IGVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgYnV0dG9uLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGJ1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CiAgICAgICAgZmxleC1iYXNpczogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgZGl2LnF1YW50aXR5IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGJ1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICAgICAgZmxleC1iYXNpczogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uLAogICAgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24sCiAgICAud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0IC5xdWFudGl0eSB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0IC5xdWFudGl0eSAucXR5IHsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB3aWR0aDogMy42MzFlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydCAucXVhbnRpdHkrYnV0dG9uIHsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tbGVmdDogdmFyKC0tYnV0dG9uLXNwYWNpbmcsIDEwcHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1idXR0b24taW5mbyBidXR0b24uYnV0dG9uLmFsdC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1YmMwZGUKfQoKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWJ1dHRvbi1zdWNjZXNzIGJ1dHRvbi5idXR0b24uYWx0LmVsZW1lbnRvci1idXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYnV0dG9uLXdhcm5pbmcgYnV0dG9uLmJ1dHRvbi5hbHQuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1idXR0b24tZGFuZ2VyIGJ1dHRvbi5idXR0b24uYWx0LmVsZW1lbnRvci1idXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5NTM0Zgp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgIHRleHQtYWxpZ246IHN0YXJ0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIHRleHQtYWxpZ246IGVuZAp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5IHsKICAgIG1hcmdpbi1yaWdodDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgYnV0dG9uLAouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgZmxleC1iYXNpczogYXV0bwp9CgouZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICBmbGV4LWJhc2lzOiAxMDAlCn0KCkBtZWRpYSAobWluLXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1yaWdodDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0W2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIHRleHQtYWxpZ246IGVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBkaXYucXVhbnRpdHksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtd2lkZXNjcmVlbi0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgYnV0dG9uLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC13aWRlc2NyZWVuLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXdpZGVzY3JlZW4tLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGJ1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICAgICAgZmxleC1iYXNpczogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1sYXB0b3AtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbGFwdG9wLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LWxhcHRvcC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiBlbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldF9leHRyYS0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXRfZXh0cmEtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0X2V4dHJhLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0W2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydC52YXJpYXRpb25zX2Zvcm0gLndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLXJpZ2h0Om5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tcmlnaHRbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tY2VudGVyOm5vdChbY2xhc3MqPSItLWxheW91dC1zdGFja2VkIl0pOm5vdChbY2xhc3MqPSItLWxheW91dC1hdXRvIl0pIGZvcm0uY2FydDpub3QoLmdyb3VwZWRfZm9ybSk6bm90KC52YXJpYXRpb25zX2Zvcm0pLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWNlbnRlcltjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC10YWJsZXQtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tY2VudGVyIGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1sZWZ0IGZvcm0uY2FydCBidXR0b24sCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1yaWdodCBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtdGFibGV0LS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBkaXYucXVhbnRpdHkgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LXRhYmxldC0tYWxpZ24tanVzdGlmeSBmb3JtLmNhcnQgYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiBlbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZV9leHRyYS0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGVfZXh0cmEtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlX2V4dHJhLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdDpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQ6bm90KC5ncm91cGVkX2Zvcm0pOm5vdCgudmFyaWF0aW9uc19mb3JtKSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnRbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0LnZhcmlhdGlvbnNfZm9ybSAud29vY29tbWVyY2UtdmFyaWF0aW9uLWFkZC10by1jYXJ0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tcmlnaHQ6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1yaWdodFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSAuZS1hdGMtcXR5LWJ1dHRvbi1ob2xkZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiBlbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlcjpub3QoW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdKTpub3QoW2NsYXNzKj0iLS1sYXlvdXQtYXV0byJdKSBmb3JtLmNhcnQudmFyaWF0aW9uc19mb3JtIC53b29jb21tZXJjZS12YXJpYXRpb24tYWRkLXRvLWNhcnQsCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1jZW50ZXI6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LXN0YWNrZWQiXSk6bm90KFtjbGFzcyo9Ii0tbGF5b3V0LWF1dG8iXSkgZm9ybS5jYXJ0Om5vdCguZ3JvdXBlZF9mb3JtKTpub3QoLnZhcmlhdGlvbnNfZm9ybSksCiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1jZW50ZXJbY2xhc3MqPSItLWxheW91dC1hdXRvIl0gLmUtYXRjLXF0eS1idXR0b24taG9sZGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tY2VudGVyW2NsYXNzKj0iLS1sYXlvdXQtc3RhY2tlZCJdIC5lLWF0Yy1xdHktYnV0dG9uLWhvbGRlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWNlbnRlciBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tbGVmdCBmb3JtLmNhcnQgZGl2LnF1YW50aXR5LAogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYWRkLXRvLWNhcnQuZWxlbWVudG9yLWFkZC10by1jYXJ0LW1vYmlsZS0tYWxpZ24tcmlnaHQgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1jZW50ZXIgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWxlZnQgZm9ybS5jYXJ0IGJ1dHRvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLXJpZ2h0IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFkZC10by1jYXJ0LmVsZW1lbnRvci1hZGQtdG8tY2FydC1tb2JpbGUtLWFsaWduLWp1c3RpZnkgZm9ybS5jYXJ0IGRpdi5xdWFudGl0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hZGQtdG8tY2FydC5lbGVtZW50b3ItYWRkLXRvLWNhcnQtbW9iaWxlLS1hbGlnbi1qdXN0aWZ5IGZvcm0uY2FydCBidXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KfQoKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciB1bC50YWJzOmJlZm9yZSB7CiAgICBwb3NpdGlvbjogc3RhdGljOwogICAgY29udGVudDogbm9uZTsKICAgIHdpZHRoOiBhdXRvOwogICAgYm90dG9tOiBhdXRvOwogICAgbGVmdDogYXV0bzsKICAgIGJvcmRlci1ib3R0b206IDA7CiAgICB6LWluZGV4OiBhdXRvCn0KCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgdWwudGFicyB7CiAgICBtYXJnaW46IDAKfQoKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciB1bC50YWJzIGxpIHsKICAgIHBhZGRpbmc6IDAKfQoKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciB1bC50YWJzIGxpIGEgewogICAgcGFkZGluZzogLjhlbSAxLjJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxCn0KCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgdWwudGFicyBsaTphZnRlciwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciB1bC50YWJzIGxpOmJlZm9yZSB7CiAgICBib3JkZXI6IDA7CiAgICBwb3NpdGlvbjogc3RhdGljOwogICAgYm90dG9tOiBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBjb250ZW50OiBub25lOwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9Cgoud29vY29tbWVyY2UgZGl2LnByb2R1Y3QuZWxlbWVudG9yIC53b29jb21tZXJjZS10YWJzIC5wYW5lbCB7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGJvcmRlci13aWR0aDogMDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDNjZWQyOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIG1hcmdpbjogLTFweCAwIDAKfQoKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAuZWxlbWVudG9yLXByb2R1Y3QtcHJpY2UtYmxvY2steWVzIC5wcmljZSBkZWwsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLmVsZW1lbnRvci1wcm9kdWN0LXByaWNlLWJsb2NrLXllcyAucHJpY2UgaW5zIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtbWV0YSAuZGV0YWlsLWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHJvZHVjdC1tZXRhIC5kZXRhaWwtY29udGFpbmVyOmFmdGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LW1ldGEgLmRldGFpbC1sYWJlbCB7CiAgICBmb250LXdlaWdodDogNzAwCn0KCi5lbGVtZW50b3Itd29vLW1ldGEtLXZpZXctaW5saW5lIC5wcm9kdWN0X21ldGEgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgZmxleC13cmFwOiB3cmFwCn0KCi5lbGVtZW50b3Itd29vLW1ldGEtLXZpZXctaW5saW5lIC5wcm9kdWN0X21ldGEgLmRldGFpbC1jb250YWluZXI6YWZ0ZXIgewogICAgd2lkdGg6IGF1dG87CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IGF1dG87CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB0b3A6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIGJvcmRlci10b3A6IDA7CiAgICBib3JkZXItYm90dG9tOiAwOwogICAgYm9yZGVyLXJpZ2h0OiAwOwogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICByaWdodDogLThweAp9CgouZWxlbWVudG9yLXdvby1tZXRhLS12aWV3LXRhYmxlIC5wcm9kdWN0X21ldGEgewogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uCn0KCi5lbGVtZW50b3Itd29vLW1ldGEtLXZpZXctdGFibGUgLnByb2R1Y3RfbWV0YSwKLmVsZW1lbnRvci13b28tbWV0YS0tdmlldy10YWJsZSAucHJvZHVjdF9tZXRhIC5kZXRhaWwtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3Itd29vLW1ldGEtLXZpZXctdGFibGUgLnByb2R1Y3RfbWV0YSAuZGV0YWlsLWxhYmVsIHsKICAgIG1pbi13aWR0aDogMTA4cHgKfQoKLmVsZW1lbnRvci13b28tbWV0YS0tdmlldy1zdGFja2VkIC5wcm9kdWN0X21ldGEgLmRldGFpbC1jb250YWluZXIgewogICAgZGlzcGxheTogYmxvY2sKfQoKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciAud29vY29tbWVyY2UtcHJvZHVjdC1yYXRpbmcgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyCn0KCi53b29jb21tZXJjZSBkaXYucHJvZHVjdC5lbGVtZW50b3IgLnN0YXItcmF0aW5nIHsKICAgIG1hcmdpbi10b3A6IDAKfQoKLmVsZW1lbnRvci1wcm9kdWN0LXJhdGluZy0tYWxpZ24tbGVmdCAud29vY29tbWVyY2UtcHJvZHVjdC1yYXRpbmcgewogICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAp9CgouZWxlbWVudG9yLXByb2R1Y3QtcmF0aW5nLS1hbGlnbi1yaWdodCAud29vY29tbWVyY2UtcHJvZHVjdC1yYXRpbmcgewogICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLXByb2R1Y3QtcmF0aW5nLS1hbGlnbi1jZW50ZXIgLndvb2NvbW1lcmNlLXByb2R1Y3QtcmF0aW5nIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5lbGVtZW50b3ItcHJvZHVjdC1yYXRpbmctLWFsaWduLWp1c3RpZnkgLndvb2NvbW1lcmNlLXByb2R1Y3QtcmF0aW5nIC53b29jb21tZXJjZS1yZXZpZXctbGluayB7CiAgICBtYXJnaW4tbGVmdDogYXV0bwp9CgouZWxlbWVudG9yLXByb2R1Y3RzLWdyaWQgdWwucHJvZHVjdHMuZWxlbWVudG9yLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIG1hcmdpbjogMDsKICAgIGdyaWQtY29sdW1uLWdhcDogMjBweDsKICAgIGdyaWQtcm93LWdhcDogNDBweAp9CgouZWxlbWVudG9yLXByb2R1Y3RzLWdyaWQgdWwucHJvZHVjdHMuZWxlbWVudG9yLWdyaWQ6YWZ0ZXIsCi5lbGVtZW50b3ItcHJvZHVjdHMtZ3JpZCB1bC5wcm9kdWN0cy5lbGVtZW50b3ItZ3JpZDpiZWZvcmUgewogICAgY29udGVudDogbm9uZTsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1wcm9kdWN0cy1ncmlkIHVsLnByb2R1Y3RzLmVsZW1lbnRvci1ncmlkIGxpLnByb2R1Y3QgewogICAgd2lkdGg6IGF1dG87CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgZmxvYXQ6IG5vbmUKfQoKLmVsZW1lbnRvci1wcm9kdWN0cy1ncmlkIHVsLnByb2R1Y3RzLmVsZW1lbnRvci1ncmlkIGxpLnByb2R1Y3QgLm9uc2FsZSB7CiAgICBwYWRkaW5nOiAwOwogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXByb2R1Y3RzLWdyaWQgdWwucHJvZHVjdHMuZWxlbWVudG9yLWdyaWQgbGkucHJvZHVjdCBhLndvb2NvbW1lcmNlLWxvb3AtcHJvZHVjdF9fbGluayB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLXByb2R1Y3RzLWdyaWQ6bm90KC5zaG93LWhlYWRpbmcteWVzKSAucHJvZHVjdHM+aDIgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXByb2R1Y3RzLWdyaWQgbmF2Lndvb2NvbW1lcmNlLXBhZ2luYXRpb24gewogICAgbWFyZ2luLXRvcDogNDBweAp9CgouZWxlbWVudG9yLXByb2R1Y3RzLWdyaWQ6bm90KC5lbGVtZW50b3Itc2hvdy1wYWdpbmF0aW9uLWJvcmRlci15ZXMpIG5hdi53b29jb21tZXJjZS1wYWdpbmF0aW9uIHVsIHsKICAgIGJvcmRlcjogMAp9CgouZWxlbWVudG9yLXByb2R1Y3RzLWdyaWQ6bm90KC5lbGVtZW50b3Itc2hvdy1wYWdpbmF0aW9uLWJvcmRlci15ZXMpIG5hdi53b29jb21tZXJjZS1wYWdpbmF0aW9uIHVsIGxpIHsKICAgIGJvcmRlci1yaWdodDogMDsKICAgIGJvcmRlci1sZWZ0OiAwCn0KCi5lbGVtZW50b3ItcHJvZHVjdC1sb29wLWl0ZW0tLWFsaWduLWxlZnQgdWwucHJvZHVjdHMgbGkucHJvZHVjdCAuc3Rhci1yYXRpbmcgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3ItcHJvZHVjdC1sb29wLWl0ZW0tLWFsaWduLXJpZ2h0IHVsLnByb2R1Y3RzIGxpLnByb2R1Y3QgLnN0YXItcmF0aW5nIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvCn0KCi5lbGVtZW50b3ItcHJvZHVjdC1sb29wLWl0ZW0tLWFsaWduLWNlbnRlciB1bC5wcm9kdWN0cyBsaS5wcm9kdWN0IC5zdGFyLXJhdGluZyB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogYXV0bwp9Cgoud29vY29tbWVyY2UgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1wcm9kdWN0cy1ncmlkIHVsLnByb2R1Y3RzIGxpLnByb2R1Y3QsCi53b29jb21tZXJjZSBkaXYucHJvZHVjdCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXByb2R1Y3RzLWdyaWQgLnJlbGF0ZWQucHJvZHVjdHMgdWwucHJvZHVjdHMgbGkucHJvZHVjdCwKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItcHJvZHVjdHMtZ3JpZCAudXBzZWxscy5wcm9kdWN0cyB1bC5wcm9kdWN0cyBsaS5wcm9kdWN0IHsKICAgIHdpZHRoOiBhdXRvCn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYXJjaGl2ZS1wcm9kdWN0cyAud29vY29tbWVyY2UuY29sdW1ucy0yIHVsLnByb2R1Y3RzIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hcmNoaXZlLXByb2R1Y3RzIC53b29jb21tZXJjZS5jb2x1bW5zLTMgdWwucHJvZHVjdHMgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFyY2hpdmUtcHJvZHVjdHMgLndvb2NvbW1lcmNlLmNvbHVtbnMtNCB1bC5wcm9kdWN0cyB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYXJjaGl2ZS1wcm9kdWN0cyAud29vY29tbWVyY2UuY29sdW1ucy01IHVsLnByb2R1Y3RzIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hcmNoaXZlLXByb2R1Y3RzIC53b29jb21tZXJjZS5jb2x1bW5zLTYgdWwucHJvZHVjdHMgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFyY2hpdmUtcHJvZHVjdHMgLndvb2NvbW1lcmNlLmNvbHVtbnMtNyB1bC5wcm9kdWN0cyB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYXJjaGl2ZS1wcm9kdWN0cyAud29vY29tbWVyY2UuY29sdW1ucy04IHVsLnByb2R1Y3RzIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hcmNoaXZlLXByb2R1Y3RzIC53b29jb21tZXJjZS5jb2x1bW5zLTkgdWwucHJvZHVjdHMgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdjLWFyY2hpdmUtcHJvZHVjdHMgLndvb2NvbW1lcmNlLmNvbHVtbnMtMTAgdWwucHJvZHVjdHMgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEwLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hcmNoaXZlLXByb2R1Y3RzIC53b29jb21tZXJjZS5jb2x1bW5zLTExIHVsLnByb2R1Y3RzIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYXJjaGl2ZS1wcm9kdWN0cyAud29vY29tbWVyY2UuY29sdW1ucy0xMiB1bC5wcm9kdWN0cyB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcikKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13Yy1hcmNoaXZlLXByb2R1Y3RzIC5wcm9kdWN0cyB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd2MtYXJjaGl2ZS1wcm9kdWN0cyAucHJvZHVjdHMgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikKICAgIH0KfQoKLmVsZW1lbnRvci5wcm9kdWN0IC53b29jb21tZXJjZS1wcm9kdWN0LWdhbGxlcnlfX3RyaWdnZXIrLndvb2NvbW1lcmNlLXByb2R1Y3QtZ2FsbGVyeV9fd3JhcHBlciB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi53b29jb21tZXJjZSAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wcm9kdWN0LWltYWdlcyBzcGFuLm9uc2FsZSB7CiAgICBwYWRkaW5nOiAwCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X193cmFwcGVyIHsKICAgIHRleHQtYWxpZ246IHZhcigtLW1haW4tYWxpZ25tZW50LCBsZWZ0KQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlX3dyYXBwZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdG9nZ2xlLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICBjb2xvcjogdmFyKC0tdG9nZ2xlLWJ1dHRvbi10ZXh0LWNvbG9yLCAjODE4YTkxKTsKICAgIGJvcmRlcjogdmFyKC0tdG9nZ2xlLWJ1dHRvbi1ib3JkZXItd2lkdGgsIDFweCkgdmFyKC0tdG9nZ2xlLWJ1dHRvbi1ib3JkZXItdHlwZSwgc29saWQpIHZhcigtLXRvZ2dsZS1idXR0b24tYm9yZGVyLWNvbG9yLCAjODE4YTkxKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRvZ2dsZS1idXR0b24tYm9yZGVyLXJhZGl1cywgMCk7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwYWRkaW5nOiB2YXIoLS10b2dnbGUtaWNvbi1wYWRkaW5nLCAxMnB4IDI0cHgpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b246aG92ZXIgewogICAgY29sb3I6IHZhcigtLXRvZ2dsZS1idXR0b24taG92ZXItdGV4dC1jb2xvciwgIzgxOGE5MSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10b2dnbGUtYnV0dG9uLWhvdmVyLWJhY2tncm91bmQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdG9nZ2xlLWJ1dHRvbi1ob3Zlci1ib3JkZXItY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b246aG92ZXIgLmVsZW1lbnRvci1idXR0b24taWNvbiB7CiAgICBjb2xvcjogdmFyKC0tdG9nZ2xlLWJ1dHRvbi1pY29uLWhvdmVyLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlIC5lbGVtZW50b3ItYnV0dG9uLXRleHQgewogICAgLXdlYmtpdC1tYXJnaW4tZW5kOiAuM2VtOwogICAgbWFyZ2luLWlubGluZS1lbmQ6IC4zZW0KfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgLjFzOwogICAgLW8tdHJhbnNpdGlvbjogY29sb3IgLjFzOwogICAgdHJhbnNpdGlvbjogY29sb3IgLjFzOwogICAgY29sb3I6IHZhcigtLXRvZ2dsZS1idXR0b24taWNvbi1jb2xvciwgIzgxOGE5MSk7CiAgICBmb250LXNpemU6IHZhcigtLXRvZ2dsZS1pY29uLXNpemUsIGluaGVyaXQpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0LS1pdGVtcy1pbmRpY2F0b3ItYnViYmxlIC5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbltkYXRhLWNvdW50ZXJdOmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtY291bnRlcik7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG1pbi13aWR0aDogMS42ZW07CiAgICBoZWlnaHQ6IDEuNmVtOwogICAgbGluZS1oZWlnaHQ6IDEuNWVtOwogICAgdG9wOiAtLjdlbTsKICAgIGluc2V0LWlubGluZS1lbmQ6IC0uN2VtOwogICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgIGNvbG9yOiB2YXIoLS1pdGVtcy1pbmRpY2F0b3ItdGV4dC1jb2xvciwgI2ZmZik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pdGVtcy1pbmRpY2F0b3ItYmFja2dyb3VuZC1jb2xvciwgI2Q5NTM0Zik7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBmb250LXNpemU6IDEwcHgKfQoKLmVsZW1lbnRvci1tZW51LWNhcnQtLWl0ZW1zLWluZGljYXRvci1wbGFpbiAuZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlIC5lbGVtZW50b3ItYnV0dG9uLWljb25bZGF0YS1jb3VudGVyXTpiZWZvcmUgewogICAgY29udGVudDogYXR0cihkYXRhLWNvdW50ZXIpOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fY29udGFpbmVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiA5OTk4OwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDB2dzsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjI1KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMsIC13ZWJraXQtdHJhbnNmb3JtIDBzOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMsIC13ZWJraXQtdHJhbnNmb3JtIDBzOwogICAgLW8tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMsIHRyYW5zZm9ybSAwczsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjRzLCB0cmFuc2Zvcm0gMHM7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cywgdHJhbnNmb3JtIDBzLCAtd2Via2l0LXRyYW5zZm9ybSAwczsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX21haW4gewogICAgcG9zaXRpb246IGZpeGVkOwogICAgbGVmdDogdmFyKC0tc2lkZS1jYXJ0LWFsaWdubWVudC1sZWZ0LCBhdXRvKTsKICAgIHJpZ2h0OiB2YXIoLS1zaWRlLWNhcnQtYWxpZ25tZW50LXJpZ2h0LCAwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOwogICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1pbi1oZWlnaHQ6IDIwMHB4OwogICAgd2lkdGg6IDM1MHB4OwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAuM3M7CiAgICAtby10cmFuc2l0aW9uOiAuM3M7CiAgICB0cmFuc2l0aW9uOiAuM3M7CiAgICBwYWRkaW5nOiB2YXIoLS1jYXJ0LXBhZGRpbmcsIDIwcHggMzBweCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jYXJ0LWJhY2tncm91bmQtY29sb3IsICNmZmYpOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgIGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoMCwgMCwgMCwgLjIpOwogICAgYm9yZGVyLXN0eWxlOiB2YXIoLS1jYXJ0LWJvcmRlci1zdHlsZSwgbm9uZSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWNhcnQtYm9yZGVyLWNvbG9yLCBpbml0aWFsKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNhcnQtYm9yZGVyLXJhZGl1cywgMCk7CiAgICBtYXJnaW4tdG9wOiB2YXIoLS1taW5pLWNhcnQtc3BhY2luZywgMCkKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX21haW4sCi5lbGVtZW50b3ItbWVudS1jYXJ0X19tYWluIC53aWRnZXRfc2hvcHBpbmdfY2FydF9jb250ZW50IHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19tYWluIC53aWRnZXRfc2hvcHBpbmdfY2FydF9jb250ZW50IHsKICAgIGhlaWdodDogMTAwJQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fbWFpbiAud2lkZ2V0X3Nob3BwaW5nX2NhcnRfY29udGVudCAud29vY29tbWVyY2UtbWluaS1jYXJ0X19lbXB0eS1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoLS1lbXB0eS1tZXNzYWdlLWNvbG9yLCBpbmhlcml0KTsKICAgIHRleHQtYWxpZ246IHZhcigtLWVtcHR5LW1lc3NhZ2UtYWxpZ25tZW50LCBsZWZ0KQp9Cgpib2R5LmVsZW1lbnRvci1kZWZhdWx0IC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW1lbnUtY2FydDpub3QoLmVsZW1lbnRvci1tZW51LWNhcnQtLXNob3duKSAuZWxlbWVudG9yLW1lbnUtY2FydF9fY29udGFpbmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cywgLXdlYmtpdC10cmFuc2Zvcm0gMHMgLjRzOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMsIC13ZWJraXQtdHJhbnNmb3JtIDBzIC40czsKICAgIC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjRzLCB0cmFuc2Zvcm0gMHMgLjRzOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMsIHRyYW5zZm9ybSAwcyAuNHM7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cywgdHJhbnNmb3JtIDBzIC40cywgLXdlYmtpdC10cmFuc2Zvcm0gMHMgLjRzCn0KCmJvZHkuZWxlbWVudG9yLWRlZmF1bHQgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0Om5vdCguZWxlbWVudG9yLW1lbnUtY2FydC0tc2hvd24pIC5lbGVtZW50b3ItbWVudS1jYXJ0X19jb250YWluZXIgLmRpYWxvZy1saWdodGJveC1jbG9zZS1idXR0b24gewogICAgZGlzcGxheTogbm9uZQp9Cgpib2R5LmVsZW1lbnRvci1kZWZhdWx0IC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW1lbnUtY2FydDpub3QoLmVsZW1lbnRvci1tZW51LWNhcnQtLXNob3duKSAuZWxlbWVudG9yLW1lbnUtY2FydF9fbWFpbiB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB2YXIoLS1zaWRlLWNhcnQtYWxpZ25tZW50LXRyYW5zZm9ybSwgdHJhbnNsYXRlWCgxMDAlKSk7CiAgICAtbXMtdHJhbnNmb3JtOiB2YXIoLS1zaWRlLWNhcnQtYWxpZ25tZW50LXRyYW5zZm9ybSwgdHJhbnNsYXRlWCgxMDAlKSk7CiAgICB0cmFuc2Zvcm06IHZhcigtLXNpZGUtY2FydC1hbGlnbm1lbnQtdHJhbnNmb3JtLCB0cmFuc2xhdGVYKDEwMCUpKQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fY2xvc2UtYnV0dG9uIHsKICAgIHdpZHRoOiB2YXIoLS1jYXJ0LWNsb3NlLWljb24tc2l6ZSwgMjVweCk7CiAgICBoZWlnaHQ6IHZhcigtLWNhcnQtY2xvc2UtaWNvbi1zaXplLCAyNXB4KTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbjogMCAwIDIwcHg7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBlbmQ7CiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtZmFtaWx5OiBlaWNvbnM7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbjogLjNzCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19jbG9zZS1idXR0b246YWZ0ZXIsCi5lbGVtZW50b3ItbWVudS1jYXJ0X19jbG9zZS1idXR0b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgaGVpZ2h0OiAzcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogMDsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXJ0LWNsb3NlLWJ1dHRvbi1jb2xvciwgIzgxOGE5MSk7CiAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC4zczsKICAgIC1vLXRyYW5zaXRpb246IC4zczsKICAgIHRyYW5zaXRpb246IC4zcwp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fY2xvc2UtYnV0dG9uOmhvdmVyOmFmdGVyLAouZWxlbWVudG9yLW1lbnUtY2FydF9fY2xvc2UtYnV0dG9uOmhvdmVyOmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXJ0LWNsb3NlLWJ1dHRvbi1ob3Zlci1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX2Nsb3NlLWJ1dHRvbjpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19jbG9zZS1idXR0b246YWZ0ZXIgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0cyB7CiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjUwcHgpOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2gKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjglIGF1dG87CiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHZhcigtLXByaWNlLXF1YW50aXR5LXBvc2l0aW9uLS1ncmlkLXRlbXBsYXRlLXJvd3MsIGF1dG8gYXV0byk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3JkZXItd2lkdGg6IDA7CiAgICBib3JkZXItYm90dG9tOiB2YXIoLS1kaXZpZGVyLXdpZHRoLCAxcHgpIHZhcigtLWRpdmlkZXItc3R5bGUsIHNvbGlkKSB2YXIoLS1kaXZpZGVyLWNvbG9yLCAjZDRkNGQ0KQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdCAudmFyaWF0aW9uIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IC13ZWJraXQtbWF4LWNvbnRlbnQgYXV0bzsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWF4LWNvbnRlbnQgYXV0bzsKICAgIG1hcmdpbjogMTBweCAwOwogICAgY29sb3I6IHZhcigtLXByb2R1Y3QtdmFyaWF0aW9ucy1jb2xvciwgIzM3M2EzYykKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QgLnZhcmlhdGlvbiBkdCB7CiAgICBncmlkLWNvbHVtbi1zdGFydDogMQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdCAudmFyaWF0aW9uIGRkIHsKICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAyOwogICAgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDVweDsKICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDVweAp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdCAudmFyaWF0aW9uIGRkIHAgewogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1pbWFnZSB7CiAgICBncmlkLXJvdy1zdGFydDogMTsKICAgIGdyaWQtcm93LWVuZDogMzsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0LWltYWdlIGEsCi5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0LWltYWdlIGltZyB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1uYW1lIHsKICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAyOwogICAgZ3JpZC1jb2x1bW4tZW5kOiAzOwogICAgbWFyZ2luOiAwCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0LW5hbWUgYSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC4zczsKICAgIC1vLXRyYW5zaXRpb246IC4zczsKICAgIHRyYW5zaXRpb246IC4zcwp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1wcmljZSB7CiAgICBncmlkLWNvbHVtbi1zdGFydDogMjsKICAgIGdyaWQtY29sdW1uLWVuZDogMzsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHZhcigtLXByaWNlLXF1YW50aXR5LXBvc2l0aW9uLS1hbGlnbi1zZWxmLCBlbmQpOwogICAgYWxpZ24tc2VsZjogdmFyKC0tcHJpY2UtcXVhbnRpdHktcG9zaXRpb24tLWFsaWduLXNlbGYsIGVuZCk7CiAgICBmb250LXdlaWdodDogMzAwOwogICAgY29sb3I6IHZhcigtLXByb2R1Y3QtcHJpY2UtY29sb3IsICNkNGQ0ZDQpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0LW5hbWUsCi5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0LXByaWNlIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHBhZGRpbmctbGVmdDogMjBweAp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1yZW1vdmUgewogICAgY29sb3I6ICM4MThhOTE7CiAgICB3aWR0aDogdmFyKC0tcmVtb3ZlLWl0ZW0tYnV0dG9uLXNpemUsIDIycHgpOwogICAgaGVpZ2h0OiB2YXIoLS1yZW1vdmUtaXRlbS1idXR0b24tc2l6ZSwgMjJweCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yZW1vdmUtaXRlbS1idXR0b24tc2l6ZSwgMjJweCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1yZW1vdmUtaXRlbS1idXR0b24tY29sb3IsICNkNGQ0ZDQpOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgYm90dG9tOiAyMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAuM3M7CiAgICAtby10cmFuc2l0aW9uOiAuM3M7CiAgICB0cmFuc2l0aW9uOiAuM3MKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QtcmVtb3ZlOmhvdmVyIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJlbW92ZS1pdGVtLWJ1dHRvbi1ob3Zlci1jb2xvciwgI2Q0ZDRkNCkKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QtcmVtb3ZlOmhvdmVyOmFmdGVyLAouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1yZW1vdmU6aG92ZXI6YmVmb3JlIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXJlbW92ZS1pdGVtLWJ1dHRvbi1ob3Zlci1jb2xvciwgI2Q0ZDRkNCkKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QtcmVtb3ZlOmFmdGVyLAouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1yZW1vdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgaGVpZ2h0OiAxcHg7CiAgICB3aWR0aDogNTAlOwogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAyNSU7CiAgICBtYXJnaW4tdG9wOiAtMXB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tcmVtb3ZlLWl0ZW0tYnV0dG9uLWNvbG9yLCAjZDRkNGQ0KTsKICAgIHotaW5kZXg6IDE7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC4zczsKICAgIC1vLXRyYW5zaXRpb246IC4zczsKICAgIHRyYW5zaXRpb246IC4zcwp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1yZW1vdmU6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1yZW1vdmU6YWZ0ZXIgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0LXJlbW92ZT5hIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgei1pbmRleDogMjsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIG9wYWNpdHk6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGUKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QtcmVtb3ZlPmEucmVtb3ZlX2Zyb21fY2FydF9idXR0b24gewogICAgZGlzcGxheTogdmFyKC0tcmVtb3ZlLWZyb20tY2FydC1idXR0b24sIGJsb2NrKQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdC1yZW1vdmU+YS5lbGVtZW50b3JfcmVtb3ZlX2Zyb21fY2FydF9idXR0b24gewogICAgZGlzcGxheTogdmFyKC0tZWxlbWVudG9yLXJlbW92ZS1mcm9tLWNhcnQtYnV0dG9uLCBub25lKQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdDpsYXN0LWNoaWxkIHsKICAgIGJvcmRlcjogbm9uZQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fZm9vdGVyLWJ1dHRvbnMsCi5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0Om5vdCg6Zmlyc3Qtb2YtdHlwZSksCi5lbGVtZW50b3ItbWVudS1jYXJ0X19zdWJ0b3RhbCB7CiAgICBwYWRkaW5nLXRvcDogdmFyKC0tcHJvZHVjdC1kaXZpZGVyLWdhcCwgMjBweCkKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QgewogICAgcGFkZGluZy1yaWdodDogMzBweAp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdCwKLmVsZW1lbnRvci1tZW51LWNhcnRfX3N1YnRvdGFsIHsKICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1wcm9kdWN0LWRpdmlkZXItZ2FwLCAyMHB4KQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fc3VidG90YWwgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgdGV4dC1hbGlnbjogdmFyKC0tbWVudS1jYXJ0LXN1YnRvdGFsLXRleHQtYWxpZ24sIGNlbnRlcik7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6IHZhcigtLW1lbnUtY2FydC1zdWJ0b3RhbC1jb2xvciwgaW5oZXJpdCk7CiAgICBib3JkZXItbGVmdDogdmFyKC0tc3VidG90YWwtZGl2aWRlci1sZWZ0LXdpZHRoLCAxcHgpIHZhcigtLXN1YnRvdGFsLWRpdmlkZXItc3R5bGUsIHNvbGlkKSB2YXIoLS1zdWJ0b3RhbC1kaXZpZGVyLWNvbG9yLCAjZDRkNGQ0KTsKICAgIGJvcmRlci1ib3R0b206IHZhcigtLXN1YnRvdGFsLWRpdmlkZXItYm90dG9tLXdpZHRoLCAxcHgpIHZhcigtLXN1YnRvdGFsLWRpdmlkZXItc3R5bGUsIHNvbGlkKSB2YXIoLS1zdWJ0b3RhbC1kaXZpZGVyLWNvbG9yLCAjZDRkNGQ0KTsKICAgIGJvcmRlci1yaWdodDogdmFyKC0tc3VidG90YWwtZGl2aWRlci1yaWdodC13aWR0aCwgMXB4KSB2YXIoLS1zdWJ0b3RhbC1kaXZpZGVyLXN0eWxlLCBzb2xpZCkgdmFyKC0tc3VidG90YWwtZGl2aWRlci1jb2xvciwgI2Q0ZDRkNCk7CiAgICBib3JkZXItdG9wOiB2YXIoLS1zdWJ0b3RhbC1kaXZpZGVyLXRvcC13aWR0aCwgMXB4KSB2YXIoLS1zdWJ0b3RhbC1kaXZpZGVyLXN0eWxlLCBzb2xpZCkgdmFyKC0tc3VidG90YWwtZGl2aWRlci1jb2xvciwgI2Q0ZDRkNCkKfQoKLmVsZW1lbnRvci1tZW51LWNhcnRfX2Zvb3Rlci1idXR0b25zIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIHRleHQtYWxpZ246IHZhcigtLWNhcnQtZm9vdGVyLWJ1dHRvbnMtYWxpZ25tZW50LXRleHQtYWxpZ24sIGNlbnRlcik7CiAgICBkaXNwbGF5OiB2YXIoLS1jYXJ0LWZvb3Rlci1idXR0b25zLWFsaWdubWVudC1kaXNwbGF5LCBncmlkKTsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tY2FydC1mb290ZXItbGF5b3V0LCAxZnIgMWZyKTsKICAgIG1hcmdpbi10b3A6IHZhcigtLWNhcnQtYnV0dG9ucy1wb3NpdGlvbi1tYXJnaW4sIDApOwogICAgZ3JpZC1jb2x1bW4tZ2FwOiB2YXIoLS1zcGFjZS1iZXR3ZWVuLWJ1dHRvbnMsIDEwcHgpOwogICAgZ3JpZC1yb3ctZ2FwOiB2YXIoLS1zcGFjZS1iZXR3ZWVuLWJ1dHRvbnMsIDEwcHgpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19mb290ZXItYnV0dG9ucyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYXJ0LWZvb3Rlci1idXR0b25zLWJvcmRlci1yYWRpdXMsIDApOwogICAgaGVpZ2h0OiAtd2Via2l0LWZpdC1jb250ZW50OwogICAgaGVpZ2h0OiAtbW96LWZpdC1jb250ZW50OwogICAgaGVpZ2h0OiBmaXQtY29udGVudAp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fZm9vdGVyLWJ1dHRvbnMgLmVsZW1lbnRvci1idXR0b24tLXZpZXctY2FydCB7CiAgICBkaXNwbGF5OiB2YXIoLS12aWV3LWNhcnQtYnV0dG9uLWRpc3BsYXksIGlubGluZS1ibG9jayk7CiAgICBjb2xvcjogdmFyKC0tdmlldy1jYXJ0LWJ1dHRvbi10ZXh0LWNvbG9yLCAjZmZmKTsKICAgIHBhZGRpbmc6IHZhcigtLXZpZXctY2FydC1idXR0b24tcGFkZGluZywgMTVweCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12aWV3LWNhcnQtYnV0dG9uLWJhY2tncm91bmQtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3ItbWVudS1jYXJ0X19mb290ZXItYnV0dG9ucyAuZWxlbWVudG9yLWJ1dHRvbi0tdmlldy1jYXJ0OmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS12aWV3LWNhcnQtYnV0dG9uLWhvdmVyLXRleHQtY29sb3IsICNmZmYpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdmlldy1jYXJ0LWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fZm9vdGVyLWJ1dHRvbnMgLmVsZW1lbnRvci1idXR0b24tLWNoZWNrb3V0IHsKICAgIGRpc3BsYXk6IHZhcigtLWNoZWNrb3V0LWJ1dHRvbi1kaXNwbGF5LCBpbmxpbmUtYmxvY2spOwogICAgY29sb3I6IHZhcigtLWNoZWNrb3V0LWJ1dHRvbi10ZXh0LWNvbG9yLCAjZmZmKTsKICAgIHBhZGRpbmc6IHZhcigtLWNoZWNrb3V0LWJ1dHRvbi1wYWRkaW5nLCAxNXB4KTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNoZWNrb3V0LWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLW1lbnUtY2FydF9fZm9vdGVyLWJ1dHRvbnMgLmVsZW1lbnRvci1idXR0b24tLWNoZWNrb3V0OmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1jaGVja291dC1idXR0b24taG92ZXItdGV4dC1jb2xvciwgI2ZmZik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jaGVja291dC1idXR0b24taG92ZXItYmFja2dyb3VuZC1jb2xvciwgIzgxOGE5MSkKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbWVudS1jYXJ0X19mb290ZXItYnV0dG9ucyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHgKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0Om5vdCguZWxlbWVudG9yLW1lbnUtY2FydC0tc2hvdy1zdWJ0b3RhbC15ZXMpIC5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24tdGV4dCB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW1lbnUtY2FydC5lbGVtZW50b3ItbWVudS1jYXJ0LS1lbXB0eS1pbmRpY2F0b3ItaGlkZSAuZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlIC5lbGVtZW50b3ItYnV0dG9uLWljb25bZGF0YS1jb3VudGVyPSIwIl06YmVmb3JlIHsKICAgIGNvbnRlbnQ6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LnRvZ2dsZS1pY29uLS1iYWctbGlnaHQgLmVsZW1lbnRvci1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uIGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZThlMyIKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LnRvZ2dsZS1pY29uLS1iYWctbWVkaXVtIC5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU4ZTQiCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW1lbnUtY2FydC50b2dnbGUtaWNvbi0tYmFnLXNvbGlkIC5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU4ZTUiCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW1lbnUtY2FydC50b2dnbGUtaWNvbi0tYmFza2V0LWxpZ2h0IC5lbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU4ZTYiCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW1lbnUtY2FydC50b2dnbGUtaWNvbi0tYmFza2V0LW1lZGl1bSAuZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlIC5lbGVtZW50b3ItYnV0dG9uLWljb24gaTpiZWZvcmUgewogICAgY29udGVudDogIlxlOGU3Igp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1tZW51LWNhcnQudG9nZ2xlLWljb24tLWJhc2tldC1zb2xpZCAuZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlIC5lbGVtZW50b3ItYnV0dG9uLWljb24gaTpiZWZvcmUgewogICAgY29udGVudDogIlxlOGU4Igp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1tZW51LWNhcnQudG9nZ2xlLWljb24tLWNhcnQtbGlnaHQgLmVsZW1lbnRvci1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uIGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZThlOSIKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LnRvZ2dsZS1pY29uLS1jYXJ0LW1lZGl1bSAuZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlIC5lbGVtZW50b3ItYnV0dG9uLWljb24gaTpiZWZvcmUgewogICAgY29udGVudDogIlxlOGVhIgp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1tZW51LWNhcnQudG9nZ2xlLWljb24tLWNhcnQtc29saWQgLmVsZW1lbnRvci1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uIGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZThlYiIKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0Om5vdCguZWxlbWVudG9yLW1lbnUtY2FydC0tc2hvdy1yZW1vdmUtYnV0dG9uLXllcykgLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QgewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFkZGluZy1yaWdodDogMDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjUlIGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0Om5vdCguZWxlbWVudG9yLW1lbnUtY2FydC0tc2hvdy1yZW1vdmUtYnV0dG9uLXllcykgLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QtcmVtb3ZlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LnJlbW92ZS1pdGVtLXBvc2l0aW9uLS10b3AgLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QtcmVtb3ZlIHsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogYXV0bwp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1tZW51LWNhcnQucmVtb3ZlLWl0ZW0tcG9zaXRpb24tLXRvcCAuZWxlbWVudG9yLW1lbnUtY2FydF9fcHJvZHVjdHMgLmNhcnRfaXRlbTpub3QoOmZpcnN0LW9mLXR5cGUpIC5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0LXJlbW92ZSB7CiAgICB0b3A6IDIwcHg7CiAgICBib3R0b206IGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LnJlbW92ZS1pdGVtLXBvc2l0aW9uLS1taWRkbGUgLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3QtcmVtb3ZlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNTAlKTsKICAgIGJvdHRvbTogNTAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW1lbnUtY2FydC5yZW1vdmUtaXRlbS1wb3NpdGlvbi0tYm90dG9tIC5lbGVtZW50b3ItbWVudS1jYXJ0X19wcm9kdWN0LXJlbW92ZSB7CiAgICB0b3A6IGF1dG87CiAgICBib3R0b206IDIwcHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LmVsZW1lbnRvci1tZW51LWNhcnQtLWNhcnQtdHlwZS1taW5pLWNhcnQgLmVsZW1lbnRvci1tZW51LWNhcnRfX2NvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgdG9wOiAxMDAlOwogICAgYm90dG9tOiBhdXRvOwogICAgYmFja2dyb3VuZDogbm9uZTsKICAgIG1pbi13aWR0aDogMzMwcHg7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IGF1dG87CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjRzLCAtd2Via2l0LXRyYW5zZm9ybSAwczsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjRzLCAtd2Via2l0LXRyYW5zZm9ybSAwczsKICAgIC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjRzLCB0cmFuc2Zvcm0gMHM7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cywgdHJhbnNmb3JtIDBzOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMsIHRyYW5zZm9ybSAwcywgLXdlYmtpdC10cmFuc2Zvcm0gMHMKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LmVsZW1lbnRvci1tZW51LWNhcnQtLWNhcnQtdHlwZS1taW5pLWNhcnQgLmVsZW1lbnRvci1tZW51LWNhcnRfX21haW4gewogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IGF1dG87CiAgICBib3R0b206IGF1dG87CiAgICByaWdodDogYXV0bzsKICAgIGxlZnQ6IGF1dG87CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbjogLjNzCn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1tZW51LWNhcnQuZWxlbWVudG9yLW1lbnUtY2FydC0tY2FydC10eXBlLW1pbmktY2FydCAuZWxlbWVudG9yLW1lbnUtY2FydF9fY29udGFpbmVyIHsKICAgICAgICBtaW4td2lkdGg6IDMwMHB4CiAgICB9Cn0KCmJvZHkuZWxlbWVudG9yLWRlZmF1bHQgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LmVsZW1lbnRvci1tZW51LWNhcnQtLWNhcnQtdHlwZS1taW5pLWNhcnQ6bm90KC5lbGVtZW50b3ItbWVudS1jYXJ0LS1zaG93bikgLmVsZW1lbnRvci1tZW51LWNhcnRfX2NvbnRhaW5lciB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjRzLCAtd2Via2l0LXRyYW5zZm9ybSAwcyAuNHM7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cywgLXdlYmtpdC10cmFuc2Zvcm0gMHMgLjRzOwogICAgLW8tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMsIHRyYW5zZm9ybSAwcyAuNHM7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cywgdHJhbnNmb3JtIDBzIC40czsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjRzLCB0cmFuc2Zvcm0gMHMgLjRzLCAtd2Via2l0LXRyYW5zZm9ybSAwcyAuNHMKfQoKYm9keS5lbGVtZW50b3ItZGVmYXVsdCAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1tZW51LWNhcnQuZWxlbWVudG9yLW1lbnUtY2FydC0tY2FydC10eXBlLW1pbmktY2FydDpub3QoLmVsZW1lbnRvci1tZW51LWNhcnQtLXNob3duKSAuZWxlbWVudG9yLW1lbnUtY2FydF9fbWFpbiB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpCn0KCi5lbGVtZW50b3ItZWRpdC1hcmVhLWFjdGl2ZSAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1tZW51LWNhcnQuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbG9hZGluZy5lbGVtZW50b3ItbWVudS1jYXJ0LS1zaG93biB7CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3ItZWRpdC1hcmVhLWFjdGl2ZSAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1tZW51LWNhcnQuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbG9hZGluZy5lbGVtZW50b3ItbWVudS1jYXJ0LS1zaG93biAuZWxlbWVudG9yLW1lbnUtY2FydF9fY29udGFpbmVyIHsKICAgIHotaW5kZXg6IDk5OTkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbWVudS1jYXJ0LmVsZW1lbnRvci1tZW51LWNhcnQtLWNhcnQtdHlwZS1kcm9wZG93biAuZWxlbWVudG9yLW1lbnUtY2FydF9fY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgY29sb3I6ICM4MThhOTEKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSB0YWJsZSB0Ym9keSB0cjpob3Zlcj50ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSB0YWJsZSB0Ym9keSB0cjpob3Zlcj50aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS10aGFua3lvdS1vcmRlci1kZXRhaWxzIHsKICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDogMDsKICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwOwogICAgbWFyZ2luOiAwIDAgMmVtOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgZmxleC13cmFwOiB3cmFwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS10aGFua3lvdS1vcmRlci1kZXRhaWxzIGxpIHsKICAgIGJvcmRlci1yaWdodDogdmFyKC0tcGF5bWVudC1kZXRhaWxzLWJvcmRlci13aWR0aCwgMXB4KSB2YXIoLS1wYXltZW50LWRldGFpbHMtYm9yZGVyLXR5cGUsIHNvbGlkKSB2YXIoLS1wYXltZW50LWRldGFpbHMtYm9yZGVyLWNvbG9yLCAjZDRkNGQ0KTsKICAgIGNvbG9yOiB2YXIoLS1wYXltZW50LWRldGFpbHMtdGl0bGVzLWNvbG9yLCAjMDAwKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgIG1hcmdpbi1yaWdodDogdmFyKC0tcGF5bWVudC1kZXRhaWxzLXNwYWNlLWJldHdlZW4sIDRlbSk7CiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1wYXltZW50LWRldGFpbHMtc3BhY2UtYmV0d2VlbiwgNGVtKTsKICAgIGZsb2F0OiB1bnNldDsKICAgIG1hcmdpbi1ib3R0b206IDMwcHgKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtdGhhbmt5b3Utb3JkZXItZGV0YWlscyBsaSB7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgICAgIGJvcmRlci1ib3R0b206IHZhcigtLXBheW1lbnQtZGV0YWlscy1ib3JkZXItd2lkdGgsIDFweCkgdmFyKC0tcGF5bWVudC1kZXRhaWxzLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tcGF5bWVudC1kZXRhaWxzLWJvcmRlci1jb2xvciwgI2Q0ZDRkNCk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tcGF5bWVudC1kZXRhaWxzLXNwYWNlLWJldHdlZW4sIDIwcHgpIC8gMik7CiAgICAgICAgcGFkZGluZy1ib3R0b206IGNhbGModmFyKC0tcGF5bWVudC1kZXRhaWxzLXNwYWNlLWJldHdlZW4sIDIwcHgpIC8gMik7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDAKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLXRoYW5reW91LW9yZGVyLWRldGFpbHMgbGkgc3Ryb25nIHsKICAgIGNvbG9yOiB2YXIoLS1wYXltZW50LWRldGFpbHMtaXRlbXMtY29sb3IsICM4MThhOTEpOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbi10b3A6IHZhcigtLXBheW1lbnQtZGV0YWlscy10aXRsZXMtc3BhY2luZywgMTBweCk7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICB0ZXh0LXNoYWRvdzogbm9uZTsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGxldHRlci1zcGFjaW5nOiAwCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLXRoYW5reW91LW9yZGVyLWRldGFpbHMgbGkgc3Ryb25nIHsKICAgICAgICBtYXJnaW4tdG9wOiAwCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1iYWNzLWJhbmstZGV0YWlscyAud2MtYmFjcy1iYW5rLWRldGFpbHMgewogICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiAwOwogICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLWJhY3MtYmFuay1kZXRhaWxzIC53Yy1iYWNzLWJhbmstZGV0YWlscyBsaSB7CiAgICBib3JkZXItcmlnaHQ6IHZhcigtLWJhbmstZGV0YWlscy1ib3JkZXItd2lkdGgsIDFweCkgdmFyKC0tYmFuay1kZXRhaWxzLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tYmFuay1kZXRhaWxzLWJvcmRlci1jb2xvciwgI2Q0ZDRkNCk7CiAgICBjb2xvcjogdmFyKC0tYmFuay1kZXRhaWxzLXRpdGxlcy1jb2xvciwgIzAwMCk7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWJhbmstZGV0YWlscy1zcGFjZS1iZXR3ZWVuLCA0ZW0pOwogICAgcGFkZGluZy1yaWdodDogdmFyKC0tYmFuay1kZXRhaWxzLXNwYWNlLWJldHdlZW4sIDRlbSk7CiAgICBmbG9hdDogdW5zZXQ7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLWJhY3MtYmFuay1kZXRhaWxzIC53Yy1iYWNzLWJhbmstZGV0YWlscyBsaSB7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgICAgIGJvcmRlci1ib3R0b206IHZhcigtLWJhbmstZGV0YWlscy1ib3JkZXItd2lkdGgsIDFweCkgdmFyKC0tYmFuay1kZXRhaWxzLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tYmFuay1kZXRhaWxzLWJvcmRlci1jb2xvciwgI2Q0ZDRkNCk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tYmFuay1kZXRhaWxzLXNwYWNlLWJldHdlZW4sIDIwcHgpIC8gMik7CiAgICAgICAgcGFkZGluZy1ib3R0b206IGNhbGModmFyKC0tYmFuay1kZXRhaWxzLXNwYWNlLWJldHdlZW4sIDIwcHgpIC8gMik7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDAKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLWJhY3MtYmFuay1kZXRhaWxzIC53Yy1iYWNzLWJhbmstZGV0YWlscyBsaSBzdHJvbmcgewogICAgY29sb3I6IHZhcigtLWJhbmstZGV0YWlscy1pdGVtcy1jb2xvciwgIzgxOGE5MSk7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgbWFyZ2luLXRvcDogdmFyKC0tYmFuay1kZXRhaWxzLXRpdGxlcy1zcGFjaW5nLCAxMHB4KTsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIHRleHQtc2hhZG93OiBub25lOwogICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgbGV0dGVyLXNwYWNpbmc6IDAKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtYmFjcy1iYW5rLWRldGFpbHMgLndjLWJhY3MtYmFuay1kZXRhaWxzIGxpIHN0cm9uZyB7CiAgICAgICAgbWFyZ2luLXRvcDogMAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtYmFjcy1iYW5rLWRldGFpbHMgLndjLWJhY3MtYmFuay1kZXRhaWxzIGxpOmxhc3Qtb2YtdHlwZSB7CiAgICBib3JkZXItcmlnaHQ6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLndjLWl0ZW0tbWV0YSAud2MtaXRlbS1tZXRhLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud2MtaXRlbS1tZXRhIGxpIHAgewogICAgY29sb3I6IHZhcigtLW9yZGVyLWRldGFpbHMtdmFyaWF0aW9ucy1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgewogICAgZm9udC1zaXplOiAxNHB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHBhZGRpbmc6IHZhcigtLXNlY3Rpb25zLXBhZGRpbmcsIDE1cHggMzBweCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWN0aW9ucy1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNlY3Rpb25zLWJvcmRlci1yYWRpdXMsIDNweCk7CiAgICBib3JkZXI6IDFweCB2YXIoLS1zZWN0aW9ucy1ib3JkZXItdHlwZSwgc29saWQpIHZhcigtLXNlY3Rpb25zLWJvcmRlci1jb2xvciwgI2Q0ZDRkNCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgLmJ1dHRvbi5hbHQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1idXR0b24tYm9yZGVyLXJhZGl1cywgM3B4KTsKICAgIGJvcmRlcjogMnB4IHZhcigtLWJ1dHRvbnMtYm9yZGVyLXR5cGUsIHNvbGlkKSB2YXIoLS1idXR0b25zLWJvcmRlci1jb2xvciwgIzViYzBkZSk7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY29sb3I6IHZhcigtLWJ1dHRvbi1ub3JtYWwtdGV4dC1jb2xvciwgIzgxOGE5MSk7CiAgICBwYWRkaW5nOiB2YXIoLS1idXR0b24tcGFkZGluZywgNXB4IDEwcHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIC5idXR0b24uYWx0OmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1idXR0b24taG92ZXItdGV4dC1jb2xvciwgIzgxOGE5MSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWJ1dHRvbi1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tYnV0dG9uLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1idXR0b24taG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgdGggewogICAgYm9yZGVyOiAwOwogICAgYm9yZGVyLXRvcDogdmFyKC0tdGFibGVzLWRpdmlkZXItYm9yZGVyLXdpZHRoLCAxcHgpIHZhcigtLXRhYmxlcy1kaXZpZGVyLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tdGFibGVzLWRpdmlkZXItYm9yZGVyLWNvbG9yLCAjZDRkNGQ0KTsKICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLW9yZGVyLWRldGFpbHMtcm93cy1nYXAsIDE4cHgpIC8gMik7CiAgICBwYWRkaW5nLWJvdHRvbTogY2FsYyh2YXIoLS1vcmRlci1kZXRhaWxzLXJvd3MtZ2FwLCAxOHB4KSAvIDIpOwogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFkZGluZy1yaWdodDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0aGVhZCB0ciB0aCB7CiAgICBjb2xvcjogdmFyKC0tb3JkZXItZGV0YWlscy10aXRsZXMtdG90YWxzLWNvbG9yLCAjMDAwKTsKICAgIGJvcmRlci10b3A6IG5vbmU7CiAgICBwYWRkaW5nLXRvcDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0aGVhZCB0ciB0aCBzcGFuIHsKICAgIGNvbG9yOiB2YXIoLS1vcmRlci1kZXRhaWxzLXRpdGxlcy10b3RhbHMtY29sb3IsICMwMDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHRib2R5IHRkIHsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBsaW5lLWhlaWdodDogdW5zZXQKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgdGJvZHkgdGQgLndvb2NvbW1lcmNlLVByaWNlLWFtb3VudCB7CiAgICBjb2xvcjogdmFyKC0tb3JkZXItZGV0YWlscy1pdGVtcy1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgdGZvb3QgdGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHRmb290IHRoIHsKICAgIGNvbG9yOiB2YXIoLS1vcmRlci1kZXRhaWxzLXRpdGxlcy10b3RhbHMtY29sb3IsICMwMDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHRmb290IHRyOmxhc3QtY2hpbGQgdGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHRmb290IHRyOmxhc3QtY2hpbGQgdGggewogICAgcGFkZGluZy1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgLnByb2R1Y3QtcXVhbnRpdHksCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHRkLmRvd25sb2FkLWV4cGlyZXMsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHRkLmRvd25sb2FkLXJlbWFpbmluZyB7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgY29sb3I6IHZhcigtLW9yZGVyLWRldGFpbHMtaXRlbXMtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIC5wcm9kdWN0LXB1cmNoYXNlLW5vdGUgdGQgewogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIHBhZGRpbmctdG9wOiAwOwogICAgY29sb3I6IHZhcigtLWdlbmVyYWwtdGV4dC1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLm9yZGVyLWFnYWluIC5idXR0b24gewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjNWJjMGRlOwogICAgYm9yZGVyOiAycHggdmFyKC0tYnV0dG9ucy1ib3JkZXItdHlwZSwgc29saWQpIHZhcigtLWJ1dHRvbnMtYm9yZGVyLWNvbG9yLCAjNWJjMGRlKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJ1dHRvbi1ib3JkZXItcmFkaXVzLCAzcHgpOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIGNvbG9yOiB2YXIoLS1idXR0b24tbm9ybWFsLXRleHQtY29sb3IsICM4MThhOTEpOwogICAgbWFyZ2luLXRvcDogNDBweDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBwYWRkaW5nOiB2YXIoLS1idXR0b24tcGFkZGluZywgMTJweCAzMnB4KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAub3JkZXItYWdhaW4gLmJ1dHRvbjpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tYnV0dG9uLWhvdmVyLXRleHQtY29sb3IsICM4MThhOTEpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1idXR0b24taG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWJ1dHRvbi1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tYnV0dG9uLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcykKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgaDIgewogICAgY29sb3I6IHZhcigtLXRpdGxlcy1jb2xvciwgIzAwMCk7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10aXRsZXMtc3BhY2luZywgNDVweCk7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1vcmRlci1kZXRhaWxzIGgyIHsKICAgIHRleHQtYWxpZ246IHZhcigtLW9yZGVyLXN1bW1hcnktYWxpZ25tZW50LCBpbmhlcml0KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud2MtYmFjcy1iYW5rLWRldGFpbHMtaGVhZGluZyB7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1iYW5rLWRldGFpbHMtYWxpZ25tZW50LCBpbmhlcml0KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud29vY29tbWVyY2Utb3JkZXItZG93bmxvYWRzX190aXRsZSB7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1kb3dubG9hZHMtYWxpZ25tZW50LCBpbmhlcml0KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtY29sdW1uLS1iaWxsaW5nLWFkZHJlc3MgaDIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1jdXN0b21lci1kZXRhaWxzPmgyIHsKICAgIHRleHQtYWxpZ246IHZhcigtLWJpbGxpbmctZGV0YWlscy1hbGlnbm1lbnQsIGluaGVyaXQpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1jb2x1bW4tLXNoaXBwaW5nLWFkZHJlc3MgaDIgewogICAgdGV4dC1hbGlnbjogdmFyKC0tc2hpcHBpbmctZGV0YWlscy1hbGlnbm1lbnQsIGluaGVyaXQpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIGEgewogICAgY29sb3I6IHZhcigtLW9yZGVyLWRldGFpbHMtcHJvZHVjdC1saW5rcy1ub3JtYWwtY29sb3IsICM1YmMwZGUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIGE6aG92ZXIgewogICAgY29sb3I6IHZhcigtLW9yZGVyLWRldGFpbHMtcHJvZHVjdC1saW5rcy1ob3Zlci1jb2xvciwgIzViYzBkZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgcCB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS10aGFua3lvdS1vcmRlci1yZWNlaXZlZCB7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zZWN0aW9ucy1zcGFjaW5nLCA0MHB4KTsKICAgIGNvbG9yOiB2YXIoLS1jb25maXJtYXRpb24tbWVzc2FnZS1jb2xvciwgIzgxOGE5MSk7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1jb25maXJtYXRpb24tbWVzc2FnZS1hbGlnbm1lbnQsIGluaGVyaXQpOwogICAgZGlzcGxheTogdmFyKC0tY29uZmlybWF0aW9uLW1lc3NhZ2UtZGlzcGxheSwgbm9uZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2Ugc3Ryb25nIHsKICAgIGNvbG9yOiB2YXIoLS1nZW5lcmFsLXRleHQtY29sb3IsICMwMDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIHRhYmxlIHRib2R5PnRyOm50aC1jaGlsZChvZGQpPnRkLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSB0YWJsZSB0Ym9keT50cjpudGgtY2hpbGQob2RkKT50aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSBhZGRyZXNzIHsKICAgIHBhZGRpbmc6IHZhcigtLXNlY3Rpb25zLXBhZGRpbmcsIDE1cHggMzBweCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWN0aW9ucy1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNlY3Rpb25zLWJvcmRlci1yYWRpdXMsIDNweCk7CiAgICBib3JkZXI6IDFweCB2YXIoLS1zZWN0aW9ucy1ib3JkZXItdHlwZSwgc29saWQpIHZhcigtLXNlY3Rpb25zLWJvcmRlci1jb2xvciwgI2Q0ZDRkNCk7CiAgICBjb2xvcjogdmFyKC0tZ2VuZXJhbC10ZXh0LWNvbG9yLCAjODE4YTkxKQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UtY29sdW1uLS0yIHsKICAgICAgICBtYXJnaW4tdG9wOiAyZW0KICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLXRoYW5reW91LW9yZGVyLWRldGFpbHMrcCB7CiAgICBjb2xvcjogdmFyKC0tZ2VuZXJhbC10ZXh0LWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud2MtYmFjcy1iYW5rLWRldGFpbHMtYWNjb3VudC1uYW1lIHsKICAgIGNvbG9yOiB2YXIoLS1hY2NvdW50LXRpdGxlLWNvbG9yLCAjMDAwKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1hY2NvdW50LXRpdGxlLXNwYWNpbmcsIDFyZW0pCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlIHNlY3Rpb24gewogICAgbWFyZ2luLXRvcDogdmFyKC0tc2VjdGlvbnMtc3BhY2luZywgNGVtKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZSAud2MtYmFjcy1iYW5rLWRldGFpbHM6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlLXRhYmxlX19saW5lLWl0ZW0ub3JkZXJfaXRlbSAud29vY29tbWVyY2UtdGFibGVfX3Byb2R1Y3QtbmFtZS5wcm9kdWN0LXB1cmNoYXNlLW5vdGUtaXMtYmVsb3csCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkgLndvb2NvbW1lcmNlLXRhYmxlX19saW5lLWl0ZW0ub3JkZXJfaXRlbSAud29vY29tbWVyY2UtdGFibGVfX3Byb2R1Y3QtdG90YWwucHJvZHVjdC10b3RhbC5wcm9kdWN0LXB1cmNoYXNlLW5vdGUtaXMtYmVsb3cgewogICAgcGFkZGluZy1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtcHVyY2hhc2Utc3VtbWFyeSAud29vY29tbWVyY2UtdGFibGUtLW9yZGVyLWRldGFpbHMgewogICAgdGFibGUtbGF5b3V0OiBmaXhlZAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IC53b29jb21tZXJjZS10YWJsZS0tb3JkZXItZGV0YWlscyB0ZCB7CiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMjFweDsKICAgIGNvbG9yOiAjODE4YTkxCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UuZS1jaGVja291dC1sYXlvdXQtb25lLWNvbHVtbiAuZS1jaGVja291dF9fY29udGFpbmVyIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0bwp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1jb2xvciwgaW5oZXJpdCk7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCBpbmhlcml0KTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgb3BhY2l0eTogLjYKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1jb2xvciwgaW5oZXJpdCk7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgOjpwbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1jb2xvciwgaW5oZXJpdCk7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgdGFibGUgdGJvZHkgdHI6aG92ZXI+dGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgdGFibGUgdGJvZHkgdHI6aG92ZXI+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1ub3JtYWwtY29sb3IsICM4MThhOTEpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWZvcm1zLWZpZWxkcy1ib3JkZXItcmFkaXVzLCAwKTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGhlaWdodDogNDVweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZTpmb2N1cyB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLWNvbG9yLCAjODE4YTkxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1ib3JkZXItY29sb3IsIGluaXRpYWwpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcykKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1jb2xvciwgIzgxOGE5MSk7CiAgICBsaW5lLWhlaWdodDogNDVweDsKICAgIHBhZGRpbmctbGVmdDogMXJlbTsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7CiAgICBoZWlnaHQ6IDQ1cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItZHJvcGRvd24tLWJlbG93IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3ZjcKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuZS1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKC0tc2VjdGlvbnMtZGVzY3JpcHRpb25zLWNvbG9yLCAjODE4YTkxKTsKICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zZWN0aW9ucy1kZXNjcmlwdGlvbnMtc3BhY2luZywgMCk7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLmUtd29vY29tbWVyY2UtbG9naW4tc2VjdGlvbiB7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLmUtd29vY29tbWVyY2UtbG9naW4tc2VjdGlvbiAuZS1jaGVja291dC1zZWNvbmRhcnktdGl0bGUgewogICAgdGV4dC1hbGlnbjogdmFyKC0tbG9naW4tdGl0bGUtYWxpZ25tZW50LCBsZWZ0KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5lLXdvb2NvbW1lcmNlLWxvZ2luLW51ZGdlIHsKICAgIG1hcmdpbi10b3A6IHZhcigtLXNlY3Rpb25zLXNlY29uZGFyeS10aXRsZS1zcGFjaW5nLCAyNHB4KTsKICAgIG1hcmdpbi1ib3R0b206IDE1cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuZS1jb3Vwb24tYW5jaG9yIHsKICAgIG1hcmdpbi10b3A6IHZhcigtLXNlY3Rpb25zLXNlY29uZGFyeS10aXRsZS1zcGFjaW5nLCAyNHB4KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5lLWNvdXBvbi1ib3ggewogICAgbWFyZ2luLXRvcDogMjRweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5lLWNvdXBvbi1hbmNob3ItZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhcigtLWZvcm1zLWxhYmVscy1jb2xvciwgIzgxOGE5MSk7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1mb3Jtcy1sYWJlbC1zcGFjaW5nLCAzcHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLmUtbG9naW4td3JhcCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5lLWxvZ2luLXdyYXAtc3RhcnQgewogICAgLXdlYmtpdC1ib3gtZmxleDogNzUlOwogICAgLW1zLWZsZXg6IDc1JTsKICAgIGZsZXg6IDc1JQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5lLWxvZ2luLXdyYXAtZW5kIHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDIwJTsKICAgIC1tcy1mbGV4OiAyMCU7CiAgICBmbGV4OiAyMCU7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLmUtbG9naW4td3JhcCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLmUtbG9naW4td3JhcC1lbmQgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuZS1sb2dpbi13cmFwLWVuZCBsYWJlbC5lLWxvZ2luLWxhYmVsIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLmUtbG9naW4tYWN0aW9ucy13cmFwIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBtYXJnaW4tdG9wOiA2cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuZS1sb2dpbi1hY3Rpb25zLXdyYXAtZW5kIC5sb3N0X3Bhc3N3b3JkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBmb250LXNpemU6IDEycHgKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5lLWxvZ2luLWFjdGlvbnMtd3JhcC1lbmQgLmxvc3RfcGFzc3dvcmQgewogICAgICAgIGZvbnQtc2l6ZTogMTFweAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5lLWFwcGx5LWNvdXBvbiB7CiAgICB3aWR0aDogOTAlCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuZS1hcHBseS1jb3Vwb24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLmUtY2hlY2tvdXRfX2NvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTYlIGF1dG87CiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDsKICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoOwogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICBncmlkLWNvbHVtbi1nYXA6IHZhcigtLXNlY3Rpb25zLW1hcmdpbiwgMjRweCk7CiAgICBncmlkLXJvdy1nYXA6IHZhcigtLXNlY3Rpb25zLW1hcmdpbiwgMjRweCkKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC5lLWNoZWNrb3V0X19jb250YWluZXIgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcikKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAuZS1jaGVja291dC1zZWNvbmRhcnktdGl0bGUgewogICAgY29sb3I6IHZhcigtLXNlY3Rpb25zLXNlY29uZGFyeS10aXRsZS1jb2xvciwgIzgxOGE5MSk7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLmUtd29vY29tbWVyY2UtY291cG9uLW51ZGdlIHsKICAgIHRleHQtYWxpZ246IHZhcigtLWNvdXBvbi10aXRsZS1hbGlnbm1lbnQsIGxlZnQpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgI3NoaXAtdG8tZGlmZmVyZW50LWFkZHJlc3MgewogICAgbWFyZ2luLXRvcDogMTNweDsKICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc2hpcHBpbmctaGVhZGluZy1wYWRkaW5nLXN0YXJ0LCAzMHB4KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlICNzaGlwLXRvLWRpZmZlcmVudC1hZGRyZXNzIHNwYW4gewogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIGEgewogICAgY29sb3I6IHZhcigtLWxpbmtzLW5vcm1hbC1jb2xvciwgIzViYzBkZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSBhOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1saW5rcy1ob3Zlci1jb2xvciwgIzViYzBkZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgI2N1c3RvbWVyX2RldGFpbHMgLmZvcm0tcm93LAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuZS1jb3Vwb24tYm94IC5mb3JtLXJvdywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtd29vY29tbWVyY2UtbG9naW4tYW5jaG9yIC5mb3JtLXJvdyB7CiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLWZvcm1zLWNvbHVtbnMtZ2FwLXBhZGRpbmcsIDApOwogICAgcGFkZGluZy1yaWdodDogdmFyKC0tZm9ybXMtY29sdW1ucy1nYXAtcGFkZGluZywgMCk7CiAgICBtYXJnaW4tbGVmdDogdmFyKC0tZm9ybXMtY29sdW1ucy1nYXAtbWFyZ2luLCAwKTsKICAgIG1hcmdpbi1yaWdodDogdmFyKC0tZm9ybXMtY29sdW1ucy1nYXAtbWFyZ2luLCAwKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAjY3VzdG9tZXJfZGV0YWlscyAuZm9ybS1yb3cgbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5lLWNvdXBvbi1ib3ggLmZvcm0tcm93IGxhYmVsLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuZS13b29jb21tZXJjZS1sb2dpbi1hbmNob3IgLmZvcm0tcm93IGxhYmVsIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1sYWJlbHMtY29sb3IsICM4MThhOTEpOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZm9ybXMtbGFiZWwtc3BhY2luZywgM3B4KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAjY3VzdG9tZXJfZGV0YWlscyAuZm9ybS1yb3cgLmlucHV0LXRleHQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlICNjdXN0b21lcl9kZXRhaWxzIC5mb3JtLXJvdyBzZWxlY3QsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlICNjdXN0b21lcl9kZXRhaWxzIC5mb3JtLXJvdyB0ZXh0YXJlYSwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtY291cG9uLWJveCAuZm9ybS1yb3cgLmlucHV0LXRleHQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5lLWNvdXBvbi1ib3ggLmZvcm0tcm93IHNlbGVjdCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtY291cG9uLWJveCAuZm9ybS1yb3cgdGV4dGFyZWEsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5lLXdvb2NvbW1lcmNlLWxvZ2luLWFuY2hvciAuZm9ybS1yb3cgLmlucHV0LXRleHQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5lLXdvb2NvbW1lcmNlLWxvZ2luLWFuY2hvciAuZm9ybS1yb3cgc2VsZWN0LAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuZS13b29jb21tZXJjZS1sb2dpbi1hbmNob3IgLmZvcm0tcm93IHRleHRhcmVhIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCAjODE4YTkxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1mb3Jtcy1maWVsZHMtYm9yZGVyLXJhZGl1cywgMCk7CiAgICBwYWRkaW5nOiB2YXIoLS1mb3Jtcy1maWVsZHMtcGFkZGluZywgMTZweCk7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBib3JkZXI6IG5vbmU7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlICNjdXN0b21lcl9kZXRhaWxzIC5mb3JtLXJvdyAuaW5wdXQtdGV4dDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgI2N1c3RvbWVyX2RldGFpbHMgLmZvcm0tcm93IHNlbGVjdDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgI2N1c3RvbWVyX2RldGFpbHMgLmZvcm0tcm93IHRleHRhcmVhOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuZS1jb3Vwb24tYm94IC5mb3JtLXJvdyAuaW5wdXQtdGV4dDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtY291cG9uLWJveCAuZm9ybS1yb3cgc2VsZWN0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuZS1jb3Vwb24tYm94IC5mb3JtLXJvdyB0ZXh0YXJlYTpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtd29vY29tbWVyY2UtbG9naW4tYW5jaG9yIC5mb3JtLXJvdyAuaW5wdXQtdGV4dDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtd29vY29tbWVyY2UtbG9naW4tYW5jaG9yIC5mb3JtLXJvdyBzZWxlY3Q6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5lLXdvb2NvbW1lcmNlLWxvZ2luLWFuY2hvciAuZm9ybS1yb3cgdGV4dGFyZWE6Zm9jdXMgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1jb2xvciwgIzgxOGE5MSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtYm9yZGVyLWNvbG9yLCAjODE4YTkxKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlICNjdXN0b21lcl9kZXRhaWxzICNiaWxsaW5nX2FkZHJlc3NfMV9maWVsZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtY291cG9uLWJveCAjYmlsbGluZ19hZGRyZXNzXzFfZmllbGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5lLXdvb2NvbW1lcmNlLWxvZ2luLWFuY2hvciAjYmlsbGluZ19hZGRyZXNzXzFfZmllbGQgewogICAgbWFyZ2luLWJvdHRvbTogNXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5jcmVhdGUtYWNjb3VudCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtY291cG9uLWJveCAuZm9ybS1yb3cgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlICNzaGlwcGluZ19tZXRob2QgbGkgaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5pbnB1dC1yYWRpbyB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWZvcm1fX2lucHV0LWNoZWNrYm94IHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBtYXJnaW46IDAgNXB4IDAgMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1mb3JtX19sYWJlbC1mb3ItY2hlY2tib3ggc3BhbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IDJweDsKICAgIGNvbG9yOiB2YXIoLS1zZWN0aW9ucy1jaGVja2JveGVzLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAjc2hpcHBpbmdfbWV0aG9kIGxpIGxhYmVsLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAud2NfcGF5bWVudF9tZXRob2QgbGFiZWwgewogICAgY29sb3I6IHZhcigtLXNlY3Rpb25zLXJhZGlvLWJ1dHRvbnMtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53Y19wYXltZW50X21ldGhvZCBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgYnV0dG9uLndvb2NvbW1lcmNlLWJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgY29sb3I6IHZhcigtLWZvcm1zLWJ1dHRvbnMtbm9ybWFsLXRleHQtY29sb3IsICM2ZjZmNmYpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZm9ybXMtYnV0dG9ucy1ib3JkZXItcmFkaXVzLCAzcHgpOwogICAgcGFkZGluZzogMXJlbTsKICAgIGJvcmRlcjogMnB4IHZhcigtLWZvcm1zLWJ1dHRvbnMtYm9yZGVyLXR5cGUsIHNvbGlkKSB2YXIoLS1mb3Jtcy1idXR0b25zLWJvcmRlci1jb2xvciwgIzViYzBkZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgYnV0dG9uLndvb2NvbW1lcmNlLWJ1dHRvbjpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci10ZXh0LWNvbG9yLCAjNmY2ZjZmKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlICNjb3Vwb25fY29kZSB7CiAgICBtYXJnaW4tcmlnaHQ6IDElCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgI2NvdXBvbl9jb2RlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1pbmZvIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBwYWRkaW5nOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLXByaXZhY3ktcG9saWN5LXRleHQgcCB7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxMnB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWZvcm0tbG9naW4tdG9nZ2xlIC53b29jb21tZXJjZS1pbmZvIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlICNjdXN0b21lcl9kZXRhaWxzIC5jb2wtMSwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtY2hlY2tvdXRfX29yZGVyX3JldmlldywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtY291cG9uLWJveCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmUtd29vY29tbWVyY2UtbG9naW4tc2VjdGlvbiwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLnNoaXBwaW5nX2FkZHJlc3MsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1hZGRpdGlvbmFsLWZpZWxkcywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0ICNwYXltZW50IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNlY3Rpb25zLWJhY2tncm91bmQtY29sb3IsICNmZmYpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2VjdGlvbnMtYm9yZGVyLXJhZGl1cywgM3B4KTsKICAgIHBhZGRpbmc6IHZhcigtLXNlY3Rpb25zLXBhZGRpbmcsIDE2cHggMzBweCk7CiAgICBtYXJnaW46IHZhcigtLXNlY3Rpb25zLW1hcmdpbiwgMCAwIDI0cHggMCk7CiAgICBib3JkZXI6IDFweCB2YXIoLS1zZWN0aW9ucy1ib3JkZXItdHlwZSwgc29saWQpIHZhcigtLXNlY3Rpb25zLWJvcmRlci1jb2xvciwgI2Q0ZDRkNCk7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAud29vY29tbWVyY2UtYWRkaXRpb25hbC1maWVsZHMgewogICAgZGlzcGxheTogdmFyKC0tYWRkaXRpb25hbC1pbmZvcm1hdGlvbi1kaXNwbGF5LCBub25lKQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1hZGRpdGlvbmFsLWZpZWxkcyB7CiAgICAgICAgbWFyZ2luOiB2YXIoLS1zZWN0aW9ucy1tYXJnaW4sIDApCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5lLWNoZWNrb3V0LW1lc3NhZ2UsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1jaGVja291dCAjcGF5bWVudCAucGF5bWVudF9ib3gsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1wcml2YWN5LXBvbGljeS10ZXh0IHsKICAgIGNvbG9yOiB2YXIoLS1zZWN0aW9ucy1tZXNzYWdlcy1jb2xvciwgIzgxOGE5MSk7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1wcml2YWN5LXBvbGljeS10ZXh0IHAgewogICAgbWFyZ2luLXRvcDogMjVweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAjY3VzdG9tZXJfZGV0YWlscyAuY29sMi1zZXQgLmNvbC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgI2N1c3RvbWVyX2RldGFpbHMgLmNvbDItc2V0IC5jb2wtMiB7CiAgICBwYWRkaW5nLXRvcDogMTVweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAjb3JkZXJfcmV2aWV3X2hlYWRpbmcgewogICAgdGV4dC1hbGlnbjogdmFyKC0tb3JkZXItcmV2aWV3LXRpdGxlLWFsaWdubWVudCwgbGVmdCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGJvcmRlcjogMDsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0aGVhZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0aGVhZCB0ciB0aCB7CiAgICBwYWRkaW5nLXRvcDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0Ym9keSB0ZCB7CiAgICBjb2xvcjogIzAwMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0Ym9keSB0ZCAucHJvZHVjdC1xdWFudGl0eSB7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHRmb290IHRkLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0Zm9vdCB0aCB7CiAgICBjb2xvcjogIzgxOGE5MQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgdGgsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHRyIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4OwogICAgcGFkZGluZy10b3A6IDE1cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgLm9yZGVyLXRvdGFsIHRkLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuc2hvcF90YWJsZSAub3JkZXItdG90YWwgdGgsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIC5vcmRlci10b3RhbCB0ciB7CiAgICBwYWRkaW5nLWJvdHRvbTogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0cjpudGgtY2hpbGQob2RkKT50ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLnNob3BfdGFibGUgdHI6bnRoLWNoaWxkKG9kZCk+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0LXJldmlldy1vcmRlci10YWJsZSAuY2FydF9pdGVtIHRkIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogdmFyKC0tb3JkZXItc3VtbWFyeS1pdGVtcy1jb2xvciwgIzAwMCk7CiAgICBib3JkZXItYm90dG9tOiB2YXIoLS1vcmRlci1zdW1tYXJ5LWl0ZW1zLWRpdmlkZXItd2VpZ2h0LCAwKSBzb2xpZCB2YXIoLS1vcmRlci1zdW1tYXJ5LWl0ZW1zLWRpdmlkZXItY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1jaGVja291dC1yZXZpZXctb3JkZXItdGFibGUgLmNhcnRfaXRlbSB0ZC5wcm9kdWN0LW5hbWUgewogICAgcGFkZGluZy1yaWdodDogNDBweDsKICAgIG1heC13aWR0aDogMTUwcHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0LXJldmlldy1vcmRlci10YWJsZSAuY2FydF9pdGVtIHRkLnByb2R1Y3QtdG90YWwgewogICAgdmVydGljYWwtYWxpZ246IHRvcAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAud29vY29tbWVyY2UtY2hlY2tvdXQtcmV2aWV3LW9yZGVyLXRhYmxlIHRkLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAud29vY29tbWVyY2UtY2hlY2tvdXQtcmV2aWV3LW9yZGVyLXRhYmxlIHRoIHsKICAgIHBhZGRpbmctdG9wOiB2YXIoLS1vcmRlci1zdW1tYXJ5LXJvd3MtZ2FwLXRvcCwgMTVweCk7CiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tb3JkZXItc3VtbWFyeS1yb3dzLWdhcC1ib3R0b20sIDE1cHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1jaGVja291dC1yZXZpZXctb3JkZXItdGFibGUgdGZvb3QgdGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1jaGVja291dC1yZXZpZXctb3JkZXItdGFibGUgdGZvb3QgdGgsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1jaGVja291dC1yZXZpZXctb3JkZXItdGFibGUgdGhlYWQgdGggewogICAgY29sb3I6IHZhcigtLW9yZGVyLXN1bW1hcnktdG90YWxzLWNvbG9yLCAjODE4YTkxKTsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3AKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0LXJldmlldy1vcmRlci10YWJsZSAub3JkZXItdG90YWwgdGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1jaGVja291dC1yZXZpZXctb3JkZXItdGFibGUgLm9yZGVyLXRvdGFsIHRoIHsKICAgIGJvcmRlci10b3A6IHZhcigtLW9yZGVyLXN1bW1hcnktdG90YWxzLWRpdmlkZXItd2VpZ2h0LCAwKSBzb2xpZCB2YXIoLS1vcmRlci1zdW1tYXJ5LXRvdGFscy1kaXZpZGVyLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1zaGlwcGluZy10b3RhbHMgdGQgewogICAgbWF4LXdpZHRoOiA3MHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIGgzIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2VjdGlvbnMtdGl0bGUtc3BhY2luZywgMzBweCk7CiAgICBjb2xvcjogdmFyKC0tc2VjdGlvbnMtdGl0bGUtY29sb3IsICMwMDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0IC5mb3JtLXJvdz5zcGFuIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXJnaW4tYm90dG9tOiAzcHg7CiAgICBjb2xvcjogIzgxOGE5MQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAuZm9ybS1yb3ctZmlyc3QsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0IC5mb3JtLXJvdy1sYXN0IHsKICAgIHdpZHRoOiA0OCUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQgLmZvcm0tcm93IC5pbnB1dC1jaGVja2JveCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgbWFyZ2luOiAwIDVweCAwIDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQgLndvb2NvbW1lcmNlLWJpbGxpbmctZmllbGRzIGgzIHsKICAgIHRleHQtYWxpZ246IHZhcigtLWJpbGxpbmctZGV0YWlscy10aXRsZS1hbGlnbm1lbnQsIGxlZnQpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0IC53b29jb21tZXJjZS1hY2NvdW50LWZpZWxkcyAuZm9ybS1yb3csCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0IC53b29jb21tZXJjZS1iaWxsaW5nLWZpZWxkcyAuZm9ybS1yb3csCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0IC53b29jb21tZXJjZS1zaGlwcGluZy1maWVsZHMgLmZvcm0tcm93IHsKICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWZvcm1zLXJvd3MtZ2FwLCA1cHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0IC53b29jb21tZXJjZS1hY2NvdW50LWZpZWxkcyAuZm9ybS1yb3c6bGFzdC1jaGlsZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQgLndvb2NvbW1lcmNlLWJpbGxpbmctZmllbGRzIC5mb3JtLXJvdzpsYXN0LWNoaWxkLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAud29vY29tbWVyY2Utc2hpcHBpbmctZmllbGRzIC5mb3JtLXJvdzpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQubG9naW4gewogICAgbWFyZ2luLXRvcDogLThweDsKICAgIHotaW5kZXg6IDk5OTsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItdG9wLXdpZHRoOiAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGNvbG9yOiAjODE4YTkxCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQgLmZvcm0tcm93LWZpcnN0LAogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQgLmZvcm0tcm93LWxhc3QgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWZvcm0tY291cG9uLXRvZ2dsZSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWZvcm0tbG9naW5fX3N1Ym1pdCB7CiAgICB3aWR0aDogODUlCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtZm9ybS1sb2dpbl9fc3VibWl0IHsKICAgICAgICB3aWR0aDogMzUlCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWFkZGl0aW9uYWwtZmllbGRzIGgzIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWFkZGl0aW9uYWwtZmllbGRzLXRpdGxlLWFsaWdubWVudCwgbGVmdCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2Utc2hpcHBpbmctZmllbGRzIC5zaGlwcGluZ19hZGRyZXNzIHsKICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNlY3Rpb25zLW1hcmdpbiwgMjBweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQgI3BheW1lbnQgewogICAgbWFyZ2luLXRvcDogMjRweDsKICAgIHBhZGRpbmc6IDE1cHggMjVweCAyNXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0ICNwYXltZW50IC5wYXltZW50X21ldGhvZHMgewogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIHBhZGRpbmc6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQgI3BheW1lbnQgLnBheW1lbnRfbWV0aG9kcyAucGF5bWVudF9ib3ggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNwp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAjcGF5bWVudCAucGF5bWVudF9tZXRob2RzIC5wYXltZW50X2JveDpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAjcGF5bWVudCAucGF5bWVudF9tZXRob2RzIGxpIHsKICAgIGxpbmUtaGVpZ2h0OiAyMXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0ICNwYXltZW50IC5wYXltZW50X21ldGhvZHMgbGkgbGFiZWwgYSB7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgICBmb250LXNpemU6IDEycHgKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAjcGF5bWVudCAucGF5bWVudF9tZXRob2RzIGxpIGxhYmVsIGEgewogICAgICAgIGZsb2F0OiBub25lOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHgKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAjcGF5bWVudCAucGF5bWVudF9tZXRob2RzIGxpIGxhYmVsIGltZyB7CiAgICAgICAgd2lkdGg6IDU1cHgKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UtY2hlY2tvdXQgI3BheW1lbnQgLnBsYWNlLW9yZGVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IHZhcigtLXBsYWNlLW9yZGVyLXRpdGxlLWFsaWdubWVudCwgc3RyZXRjaCk7CiAgICAtbXMtZmxleC1hbGlnbjogdmFyKC0tcGxhY2Utb3JkZXItdGl0bGUtYWxpZ25tZW50LCBzdHJldGNoKTsKICAgIGFsaWduLWl0ZW1zOiB2YXIoLS1wbGFjZS1vcmRlci10aXRsZS1hbGlnbm1lbnQsIHN0cmV0Y2gpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0ICNwYXltZW50ICNwbGFjZV9vcmRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwogICAgd2lkdGg6IHZhcigtLXB1cmNoYXNlLWJ1dHRvbi13aWR0aCwgYXV0byk7CiAgICBmbG9hdDogbm9uZTsKICAgIGNvbG9yOiB2YXIoLS1wdXJjaGFzZS1idXR0b24tbm9ybWFsLXRleHQtY29sb3IsICNmZmYpOwogICAgbWluLWhlaWdodDogYXV0bzsKICAgIHBhZGRpbmc6IHZhcigtLXB1cmNoYXNlLWJ1dHRvbi1wYWRkaW5nLCAxZW0gMWVtKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXB1cmNoYXNlLWJ1dHRvbi1ib3JkZXItcmFkaXVzLCAzcHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlLWNoZWNrb3V0ICNwYXltZW50ICNwbGFjZV9vcmRlcjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwogICAgY29sb3I6IHZhcigtLXB1cmNoYXNlLWJ1dHRvbi1ob3Zlci10ZXh0LWNvbG9yLCAjZmZmKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHVyY2hhc2UtYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvciwgIzViYzBkZSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXB1cmNoYXNlLWJ1dHRvbi1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcHVyY2hhc2UtYnV0dG9uLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1wdXJjaGFzZS1idXR0b24taG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAjcGF5bWVudCAud29vY29tbWVyY2UtaW5mbzpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAuY29sMi1zZXQgLmNvbC0xLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZS1jaGVja291dCAuY29sMi1zZXQgLmNvbC0yIHsKICAgIHdpZHRoOiBhdXRvOwogICAgZmxvYXQ6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmNvdXBvbi1jb250YWluZXItZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIGF1dG87CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmNvdXBvbi1jb250YWluZXItZ3JpZCAuY291cG9uLWNvbC0yIHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSAud29vY29tbWVyY2UgLmNvdXBvbi1jb250YWluZXItZ3JpZCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5jb3Vwb24tY29udGFpbmVyLWdyaWQgLmNvdXBvbi1jb2wtMiB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jaGVja291dC1wYWdlIC53b29jb21tZXJjZSAjYWNjb3VudF9wYXNzd29yZF9maWVsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UgLndvb2NvbW1lcmNlIC5wcm9kdWN0LW5hbWUgLnZhcmlhdGlvbiB7CiAgICBjb2xvcjogdmFyKC0tb3JkZXItc3VtbWFyeS12YXJpYXRpb25zLWNvbG9yLCAjMDAwKTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGxpbmUtaGVpZ2h0OiAyMXB4Cn0KCi5lLXdvby1zZWxlY3QyLXdyYXBwZXIgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLAouZS13b28tc2VsZWN0Mi13cmFwcGVyIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbjpmb2N1cyB7CiAgICBjb2xvcjogIzgxOGE5MQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0LmUtY2FydC1sYXlvdXQtb25lLWNvbHVtbiAuZS1jYXJ0X19jb250YWluZXIgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgdGFibGUgdGJvZHkgdHI6aG92ZXI+dGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgdGFibGUgdGJvZHkgdHI6aG92ZXI+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC5lLWNsZWFyIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBoZWlnaHQ6IDA7CiAgICB3aWR0aDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC5lLWNhcnQtc2VjdGlvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWN0aW9ucy1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKTsKICAgIHBhZGRpbmc6IHZhcigtLXNlY3Rpb25zLXBhZGRpbmcsIDE2cHggMzBweCk7CiAgICBtYXJnaW46IHZhcigtLXNlY3Rpb25zLW1hcmdpbiwgMCAwIDMwcHggMCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zZWN0aW9ucy1ib3JkZXItcmFkaXVzLCAzcHgpOwogICAgYm9yZGVyOiAxcHggdmFyKC0tc2VjdGlvbnMtYm9yZGVyLXR5cGUsIHNvbGlkKSB2YXIoLS1zZWN0aW9ucy1ib3JkZXItY29sb3IsICNkNGQ0ZDQpCn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAuZS1jYXJ0LXNlY3Rpb246bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luOiB2YXIoLS1zZWN0aW9ucy1tYXJnaW4sIDApCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLmUtY2FydC1jb250ZW50IHsKICAgIGNvbG9yOiB2YXIoLS1zZWN0aW9ucy1kZXNjcmlwdGlvbnMtY29sb3IsICM4MThhOTEpOwogICAgZm9udC1zaXplOiAxNXB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxpbmUtaGVpZ2h0OiAyM3B4OwogICAgbGV0dGVyLXNwYWNpbmc6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAuZS1jYXJ0X19jb250YWluZXIgewogICAgZGlzcGxheTogZ3JpZDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDU5JSBhdXRvOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CiAgICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgZ3JpZC1jb2x1bW4tZ2FwOiB2YXIoLS1zZWN0aW9ucy1tYXJnaW4sIDMwcHgpOwogICAgZ3JpZC1yb3ctZ2FwOiB2YXIoLS1zZWN0aW9ucy1tYXJnaW4sIDMwcHgpCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAuZS1jYXJ0X19jb250YWluZXIgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcikKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAuZS1jYXJ0LWxheW91dC1vbmUtY29sdW1uIC5lLWNhcnRfX2NvbnRhaW5lciB7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAuc2VsZWN0Mi1jb250YWluZXIgewogICAgbWFyZ2luLWJvdHRvbTogNHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCAjODE4YTkxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1mb3Jtcy1maWVsZHMtYm9yZGVyLXJhZGl1cywgMCk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBoZWlnaHQ6IDQ1cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGU6Zm9jdXMgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1jb2xvciwgIzgxOGE5MSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtYm9yZGVyLWNvbG9yLCBpbml0aWFsKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1ub3JtYWwtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1ub3JtYWwtY29sb3IsICM4MThhOTEpOwogICAgbGluZS1oZWlnaHQ6IDQ1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07CiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgewogICAgaGVpZ2h0OiA0NXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHsKICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWYKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgYnV0dG9uLmJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgY29sb3I6IHZhcigtLWZvcm1zLWJ1dHRvbnMtbm9ybWFsLXRleHQtY29sb3IsICM4MThhOTEpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZm9ybXMtYnV0dG9ucy1ib3JkZXItcmFkaXVzLCAzcHgpOwogICAgcGFkZGluZzogdmFyKC0tZm9ybXMtYnV0dG9ucy1wYWRkaW5nLCAuODhyZW0gMnJlbSk7CiAgICB3aWR0aDogdmFyKC0tZm9ybXMtYnV0dG9ucy13aWR0aCwgYXV0byk7CiAgICBib3JkZXI6IDJweCB2YXIoLS1mb3Jtcy1idXR0b25zLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tZm9ybXMtYnV0dG9ucy1ib3JkZXItY29sb3IsICM1YmMwZGUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b246aG92ZXIgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWJ1dHRvbnMtaG92ZXItdGV4dC1jb2xvciwgIzgxOGE5MSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWJ1dHRvbnMtaG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWJ1dHRvbnMtaG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWJ1dHRvbnMtaG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci1ib3JkZXItY29sb3IsICM1YmMwZGUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uZGlzYWJsZWQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b246ZGlzYWJsZWQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b246ZGlzYWJsZWRbZGlzYWJsZWRdIHsKICAgIHBhZGRpbmc6IHZhcigtLWZvcm1zLWJ1dHRvbnMtcGFkZGluZywgLjg4cmVtIDJyZW0pOwogICAgY29sb3I6IHZhcigtLWZvcm1zLWJ1dHRvbnMtbm9ybWFsLXRleHQtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uZGlzYWJsZWQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b246ZGlzYWJsZWQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b246ZGlzYWJsZWRbZGlzYWJsZWRdOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvcm1zLWJ1dHRvbnMtaG92ZXItYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci10ZXh0LWNvbG9yLCAjODE4YTkxKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLWJvcmRlci1jb2xvciwgIzViYzBkZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgI3NoaXBwaW5nX21ldGhvZCBsaSBsYWJlbCB7CiAgICBjb2xvcjogdmFyKC0tc2VjdGlvbnMtcmFkaW8tYnV0dG9ucy1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgI3NoaXBwaW5nX21ldGhvZCBsaSBpbnB1dCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5zaGlwcGluZy1jYWxjdWxhdG9yLWZvcm0gewogICAgbWFyZ2luLXRvcDogdmFyKC0tc2VjdGlvbnMtZGVzY3JpcHRpb25zLXNwYWNpbmcsIDE1cHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1zaGlwcGluZy1kZXN0aW5hdGlvbiB7CiAgICBjb2xvcjogdmFyKC0tc2VjdGlvbnMtZGVzY3JpcHRpb25zLWNvbG9yLCAjODE4YTkxKTsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UtcGFnZSAuY2FydF90b3RhbHMgdGFibGUuc2hvcF90YWJsZV9yZXNwb25zaXZlIHRib2R5IHRoLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY2FydF90b3RhbHMgdGFibGUuc2hvcF90YWJsZV9yZXNwb25zaXZlIHRib2R5IHRoIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UtcGFnZSAuY2FydF90b3RhbHMgdGFibGUuc2hvcF90YWJsZV9yZXNwb25zaXZlIHRyLndvb2NvbW1lcmNlLXNoaXBwaW5nLXRvdGFscyB0ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNhcnRfdG90YWxzIHRhYmxlLnNob3BfdGFibGVfcmVzcG9uc2l2ZSB0ci53b29jb21tZXJjZS1zaGlwcGluZy10b3RhbHMgdGQgewogICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlLXBhZ2UgLmNhcnRfdG90YWxzIHRhYmxlLnNob3BfdGFibGVfcmVzcG9uc2l2ZSB0ci53b29jb21tZXJjZS1zaGlwcGluZy10b3RhbHMgdGQ6YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY2FydF90b3RhbHMgdGFibGUuc2hvcF90YWJsZV9yZXNwb25zaXZlIHRyLndvb2NvbW1lcmNlLXNoaXBwaW5nLXRvdGFscyB0ZDpiZWZvcmUgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlLXBhZ2UgLmNhcnRfdG90YWxzIHRhYmxlLnNob3BfdGFibGVfcmVzcG9uc2l2ZSB0ciB0ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNhcnRfdG90YWxzIHRhYmxlLnNob3BfdGFibGVfcmVzcG9uc2l2ZSB0ciB0ZCB7CiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlLXBhZ2UgLmNhcnRfdG90YWxzIHRhYmxlLnNob3BfdGFibGVfcmVzcG9uc2l2ZSB0ciB0ZDpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0X3RvdGFscyB0YWJsZS5zaG9wX3RhYmxlX3Jlc3BvbnNpdmUgdHIgdGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS10aXRsZSk7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZmxvYXQ6IGxlZnQKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNhcnRfdG90YWxzIGgyIHsKICAgIHRleHQtYWxpZ246IHZhcigtLXRvdGFscy10aXRsZS1hbGlnbm1lbnQsIGxlZnQpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0X3RvdGFscyB0YWJsZS5zaG9wX3RhYmxlIHRkIHsKICAgIHBhZGRpbmctdG9wOiB2YXIoLS10b3RhbHMtcm93cy1nYXAtdG9wLCAxMnB4KTsKICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS10b3RhbHMtcm93cy1nYXAtYm90dG9tLCA5cHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0X3RvdGFscyB0YWJsZS5zaG9wX3RhYmxlIHRkIC53b29jb21tZXJjZS1QcmljZS1hbW91bnQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0X3RvdGFscyB0YWJsZS5zaG9wX3RhYmxlIHRkOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKC0tdG90YWxzLWNvbG9yLCAjODE4YTkxKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNhcnRfdG90YWxzIHRhYmxlLnNob3BfdGFibGUgdHIub3JkZXItdG90YWwgdGQgewogICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tdG90YWxzLWRpdmlkZXItY29sb3IsICM4MThhOTEpOwogICAgYm9yZGVyLXRvcC13aWR0aDogdmFyKC0tdG90YWxzLWRpdmlkZXItd2VpZ2h0LCAwKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY2FydF90b3RhbHMgLmZvcm0tcm93IHsKICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWZvcm1zLXJvd3MtZ2FwLCA2cHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5wcm9kdWN0LW5hbWUgYSB7CiAgICBjb2xvcjogdmFyKC0tcHJvZHVjdC1saW5rLW5vcm1hbC1jb2xvciwgIzAwMCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLnByb2R1Y3QtbmFtZSBhOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1wcm9kdWN0LWxpbmstaG92ZXItY29sb3IsICMwMDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5mb3JtLXJvdyB7CiAgICBwYWRkaW5nOiAzcHggMDsKICAgIG1hcmdpbjogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuaW5wdXQtdGV4dCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2Ugc2VsZWN0IHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCAjODE4YTkxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1mb3Jtcy1maWVsZHMtYm9yZGVyLXJhZGl1cywgM3B4KTsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBhZGRpbmc6IHZhcigtLWZvcm1zLWZpZWxkcy1wYWRkaW5nLCAxNnB4KTsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuaW5wdXQtdGV4dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2Ugc2VsZWN0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCBpbmhlcml0KTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgb3BhY2l0eTogLjYKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmlucHV0LXRleHQ6Oi1tb3otcGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHNlbGVjdDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1jb2xvciwgaW5oZXJpdCk7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5pbnB1dC10ZXh0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHNlbGVjdDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCBpbmhlcml0KTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgb3BhY2l0eTogLjYKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmlucHV0LXRleHQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSBzZWxlY3Q6OnBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCBpbmhlcml0KTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgb3BhY2l0eTogLjYKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmlucHV0LXRleHQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHNlbGVjdDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLWNvbG9yLCAjODE4YTkxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1ib3JkZXItY29sb3IsIHRyYW5zcGFyZW50KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5pbnB1dC10ZXh0OmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSBzZWxlY3Q6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmlucHV0LXRleHQ6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHNlbGVjdDpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuaW5wdXQtdGV4dDpmb2N1czo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSBzZWxlY3Q6Zm9jdXM6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuaW5wdXQtdGV4dDpmb2N1czo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHNlbGVjdDpmb2N1czo6cGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmlucHV0LXRleHQucXR5IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgY29sb3I6IHZhcigtLW9yZGVyLXN1bW1hcnktY29sb3IsICMwMDApOwogICAgYm9yZGVyOiB2YXIoLS1vcmRlci1zdW1tYXJ5LXF1YW50aXR5LWJvcmRlci13ZWlnaHQsIDFweCkgc29saWQgdmFyKC0tb3JkZXItc3VtbWFyeS1xdWFudGl0eS1ib3JkZXItY29sb3IsICNkNGQ0ZDQpOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgcGFkZGluZzogMXB4IDJweDsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtaW4taGVpZ2h0OiAyOHB4OwogICAgbWF4LWhlaWdodDogMjhweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAud2MtcHJvY2VlZC10by1jaGVja291dCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIC13ZWJraXQtYm94LWFsaWduOiB2YXIoLS1wbGFjZS1vcmRlci10aXRsZS1hbGlnbm1lbnQsIHN0cmV0Y2gpOwogICAgLW1zLWZsZXgtYWxpZ246IHZhcigtLXBsYWNlLW9yZGVyLXRpdGxlLWFsaWdubWVudCwgc3RyZXRjaCk7CiAgICBhbGlnbi1pdGVtczogdmFyKC0tcGxhY2Utb3JkZXItdGl0bGUtYWxpZ25tZW50LCBzdHJldGNoKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAud2MtcHJvY2VlZC10by1jaGVja291dCAuY2hlY2tvdXQtYnV0dG9uIHsKICAgIHBhZGRpbmc6IHZhcigtLWNoZWNrb3V0LWJ1dHRvbi1wYWRkaW5nLCAxNXB4IDFlbSk7CiAgICB3aWR0aDogdmFyKC0tY2hlY2tvdXQtYnV0dG9uLXdpZHRoLCBhdXRvKTsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGNvbG9yOiB2YXIoLS1jaGVja291dC1idXR0b24tbm9ybWFsLXRleHQtY29sb3IsICNmZmYpOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZWNrb3V0LWJ1dHRvbi1ib3JkZXItcmFkaXVzLCAzcHgpOwogICAgbWluLWhlaWdodDogYXV0bzsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLndjLXByb2NlZWQtdG8tY2hlY2tvdXQgLmNoZWNrb3V0LWJ1dHRvbjpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tY2hlY2tvdXQtYnV0dG9uLWhvdmVyLXRleHQtY29sb3IsICNmZmYpOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlY2tvdXQtYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvciwgIzViYzBkZSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWNoZWNrb3V0LWJ1dHRvbi1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tY2hlY2tvdXQtYnV0dG9uLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1jaGVja291dC1idXR0b24taG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAucmVtb3ZlIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY29sb3I6IHZhcigtLW9yZGVyLXN1bW1hcnktcmVtb3ZlLWljb24tbm9ybWFsLWNvbG9yLCAjMDAwKSAhaW1wb3J0YW50OwogICAgd2lkdGg6IGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLnJlbW92ZTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiB2YXIoLS1vcmRlci1zdW1tYXJ5LXJlbW92ZS1pY29uLWhvdmVyLWNvbG9yLCAjNWJjMGRlKSAhaW1wb3J0YW50Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0LWNvbGxhdGVyYWxzIC5jYXJ0X3RvdGFscyB7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0LWNvbGxhdGVyYWxzIC5jYXJ0X3RvdGFscyB0ZCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNhcnQtY29sbGF0ZXJhbHMgLmNhcnRfdG90YWxzIC53b29jb21tZXJjZS1zaGlwcGluZy10b3RhbHMgdGQgewogICAgcGFkZGluZy1yaWdodDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY291cG9uIC5idXR0b24gewogICAgZmxvYXQ6IHJpZ2h0OwogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNvdXBvbiAuZm9ybS1yb3cgewogICAgcGFkZGluZzogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY291cG9uLWNvbCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY291cG9uLWNvbC1zdGFydCB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAyOwogICAgLW1zLWZsZXg6IDI7CiAgICBmbGV4OiAyOwogICAgcGFkZGluZy1yaWdodDogMzBweAp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jb3Vwb24tY29sLXN0YXJ0IHsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jb3Vwb24tY29sLWVuZCB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1zLWZsZXg6IDE7CiAgICBmbGV4OiAxCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNvdXBvbi1jb2wgewogICAgICAgIGRpc3BsYXk6IGJsb2NrCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNvdXBvbiB7CiAgICAgICAgbWFyZ2luOiB2YXIoLS1zZWN0aW9ucy1tYXJnaW4sIDApCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY291cG9uICNjb3Vwb25fY29kZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHgKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jb3Vwb24gLmJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuc2hvcF90YWJsZSB7CiAgICBib3JkZXI6IDAgc29saWQKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuc2hvcF90YWJsZSAuYnV0dG9uIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZm9udC13ZWlnaHQ6IDcwMAp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLnNob3BfdGFibGUgLmJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IG5vbmU7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuc2hvcF90YWJsZSB0ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuc2hvcF90YWJsZSB0aCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuc2hvcF90YWJsZSB0ciB7CiAgICBib3JkZXI6IDAgc29saWQKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuc2hvcF90YWJsZSB0cjpudGgtY2hpbGQob2RkKT50ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuc2hvcF90YWJsZSB0cjpudGgtY2hpbGQob2RkKT50aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5zaG9wX3RhYmxlIC5hY3Rpb25zIHsKICAgIHBhZGRpbmc6IDE2cHggMCAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLnNob3BfdGFibGUgLnByb2R1Y3QtcmVtb3ZlIGEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLnNob3BfdGFibGUuY2FydCB0Ym9keSB0cjpsYXN0LWNoaWxkIHsKICAgIGRpc3BsYXk6IHZhcigtLXVwZGF0ZS1jYXJ0LWF1dG9tYXRpY2FsbHktZGlzcGxheSwgdGFibGUtcm93KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuY2FydCBpbWcgewogICAgd2lkdGg6IDU1cHg7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkIHsKICAgIHBhZGRpbmctdG9wOiB2YXIoLS1vcmRlci1zdW1tYXJ5LXJvd3MtZ2FwLXRvcCwgMjBweCk7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogICAgcGFkZGluZy1ib3R0b206IHZhcigtLW9yZGVyLXN1bW1hcnktcm93cy1nYXAtYm90dG9tLCAyMHB4KTsKICAgIHBhZGRpbmctbGVmdDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkIHNwYW4gewogICAgY29sb3I6IHZhcigtLW9yZGVyLXN1bW1hcnktY29sb3IsICMwMDApOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkLmFjdGlvbnMsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdGQucHJvZHVjdC1uYW1lLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkLnByb2R1Y3QtcHJpY2UsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdGQucHJvZHVjdC1xdWFudGl0eSwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuY2FydCB0ZC5wcm9kdWN0LXJlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuY2FydCB0ZC5wcm9kdWN0LXN1YnRvdGFsLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkLnByb2R1Y3QtdGh1bWJuYWlsIHsKICAgIGJvcmRlci10b3A6IHZhcigtLW9yZGVyLXN1bW1hcnktaXRlbXMtZGl2aWRlci13ZWlnaHQsIDFweCkgc29saWQgdmFyKC0tb3JkZXItc3VtbWFyeS1pdGVtcy1kaXZpZGVyLWNvbG9yLCAjZDRkNGQ0KQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuY2FydCB0ZC5hY3Rpb25zLAogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuY2FydCB0ZC5wcm9kdWN0LW5hbWUsCiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkLnByb2R1Y3QtcHJpY2UsCiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkLnByb2R1Y3QtcXVhbnRpdHksCiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkLnByb2R1Y3QtcmVtb3ZlLAogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuY2FydCB0ZC5wcm9kdWN0LXN1YnRvdGFsLAogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgdGFibGUuY2FydCB0ZC5wcm9kdWN0LXRodW1ibmFpbCB7CiAgICAgICAgYm9yZGVyLXRvcC13aWR0aDogMAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkLnByb2R1Y3QtcmVtb3ZlIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHBhZGRpbmctcmlnaHQ6IDAKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQgewogICAgICAgIGJvcmRlci10b3A6IG5vbmUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0LnByb2R1Y3QtcmVtb3ZlIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQucHJvZHVjdC1uYW1lIHsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRyIHsKICAgICAgICBib3JkZXItdG9wLXdpZHRoOiB2YXIoLS1vcmRlci1zdW1tYXJ5LWl0ZW1zLWRpdmlkZXItd2VpZ2h0LCAxcHgpOwogICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLW9yZGVyLXN1bW1hcnktaXRlbXMtZGl2aWRlci1jb2xvciwgI2Q0ZDRkNCkKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdHI6Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci10b3A6IG5vbmUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY4cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdGQgewogICAgICAgIHBhZGRpbmctbGVmdDogMDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHsKICAgICAgICBwYWRkaW5nOiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRyIHsKICAgICAgICBwYWRkaW5nOiAxNnB4IDI4cHgKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdHI6Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci10b3A6IG5vbmUKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdGQgewogICAgICAgIHBhZGRpbmctbGVmdDogMDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5jYXJ0IHRkLnByb2R1Y3QtbmFtZSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdGQ6Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci10b3A6IG5vbmUKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIHRhYmxlLmNhcnQgdGQuYWN0aW9ucyB7CiAgICAgICAgcGFkZGluZzogMAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSBhIHsKICAgIGNvbG9yOiB2YXIoLS1saW5rcy1ub3JtYWwtY29sb3IsICM1YmMwZGUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIGE6aG92ZXIgewogICAgY29sb3I6IHZhcigtLWxpbmtzLWhvdmVyLWNvbG9yLCAjNWJjMGRlKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY2FydF90b3RhbHMgaDIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0IHRoIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgcGFkZGluZzogMCAyMHB4IDhweCAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0X3RvdGFscyBoMiB7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zZWN0aW9ucy10aXRsZS1zcGFjaW5nLCAxcmVtKTsKICAgIGNvbG9yOiB2YXIoLS1zZWN0aW9ucy10aXRsZS1jb2xvciwgIzAwMCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCAud29vY29tbWVyY2UgLmNhcnQgdGggewogICAgcGFkZGluZy1ib3R0b206IHZhcigtLW9yZGVyLXN1bW1hcnktdGl0bGUtc3BhY2luZywgOHB4KTsKICAgIGNvbG9yOiB2YXIoLS1vcmRlci1zdW1tYXJ5LXRpdGxlLWNvbG9yLCAjMDAwKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSAuY2FydCB0ZDpiZWZvcmUgewogICAgY29sb3I6IHZhcigtLW9yZGVyLXN1bW1hcnktdGl0bGUtY29sb3IsICMwMDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5zaGlwcGluZy1jYWxjdWxhdG9yLWJ1dHRvbjphZnRlciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5wcm9kdWN0LW5hbWUgLnZhcmlhdGlvbiB7CiAgICBjb2xvcjogdmFyKC0tb3JkZXItc3VtbWFyeS12YXJpYXRpb25zLWNvbG9yLCAjMDAwKQp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlLXBhZ2UgdGFibGUuc2hvcF90YWJsZV9yZXNwb25zaXZlIHRyOm50aC1jaGlsZCgybikgdGQsCiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1jYXJ0IC53b29jb21tZXJjZSB0YWJsZS5zaG9wX3RhYmxlX3Jlc3BvbnNpdmUgdHI6bnRoLWNoaWxkKDJuKSB0ZCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNhcnQgLndvb2NvbW1lcmNlIC5jYXJ0X3RvdGFscyAuc2hvcF90YWJsZV9yZXNwb25zaXZlIHRkIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDAKICAgIH0KfQoKLmUtd29vLXNlbGVjdDItd3JhcHBlciAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gewogICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCAjODE4YTkxKQp9CgouZS13b28tc2VsZWN0Mi13cmFwcGVyIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbjpmb2N1cyB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLWNvbG9yLCAjODE4YTkxKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLWJvcmRlci1jb2xvciwgIzgxOGE5MSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IHsKICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICBjb2xvcjogIzgxOGE5MQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5lLW15LWFjY291bnQtdGFiX19kYXNoYm9hcmQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50LXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX2Rvd25sb2FkcyAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQtd3JhcHBlciwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fZWRpdC1hY2NvdW50IC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudC13cmFwcGVyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5lLW15LWFjY291bnQtdGFiX19lZGl0LWFkZHJlc3MgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50LXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX29yZGVycyAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQtd3JhcHBlciB7CiAgICBib3JkZXI6IDFweCB2YXIoLS1zZWN0aW9ucy1ib3JkZXItdHlwZSwgc29saWQpIHZhcigtLXNlY3Rpb25zLWJvcmRlci1jb2xvciwgI2Q0ZDRkNCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zZWN0aW9ucy1ib3JkZXItcmFkaXVzLCAzcHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX2Rhc2hib2FyZCAuc2hvcF90YWJsZSwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fZG93bmxvYWRzIC5zaG9wX3RhYmxlLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5lLW15LWFjY291bnQtdGFiX19lZGl0LWFjY291bnQgLnNob3BfdGFibGUsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX2VkaXQtYWRkcmVzcyAuc2hvcF90YWJsZSwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fb3JkZXJzIC5zaG9wX3RhYmxlIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fZGFzaGJvYXJkIC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudC13cmFwcGVyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5lLW15LWFjY291bnQtdGFiX19kb3dubG9hZHMgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50LXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX2VkaXQtYWNjb3VudCAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQtd3JhcHBlciwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fb3JkZXJzIC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudC13cmFwcGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlY3Rpb25zLWJhY2tncm91bmQtY29sb3IsICNmZmYpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX2Rhc2hib2FyZCAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQtd3JhcHBlciwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fZWRpdC1hY2NvdW50IC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudC13cmFwcGVyIHsKICAgIHBhZGRpbmc6IHZhcigtLXNlY3Rpb25zLXBhZGRpbmcsIDE2cHggMzBweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fZG93bmxvYWRzIC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudC13cmFwcGVyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5lLW15LWFjY291bnQtdGFiX19vcmRlcnMgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50LXdyYXBwZXIgewogICAgcGFkZGluZzogdmFyKC0tc2VjdGlvbnMtcGFkZGluZywgMTZweCAzMHB4IDNweCAzMHB4KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5lLW15LWFjY291bnQtdGFiIC53b29jb21tZXJjZS1hZGRyZXNzLWZpZWxkcywKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYiBhZGRyZXNzIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlY3Rpb25zLWJhY2tncm91bmQtY29sb3IsICNmZmYpOwogICAgcGFkZGluZzogdmFyKC0tc2VjdGlvbnMtcGFkZGluZywgMTZweCAzMHB4KTsKICAgIGJvcmRlcjogMXB4IHZhcigtLXNlY3Rpb25zLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tc2VjdGlvbnMtYm9yZGVyLWNvbG9yLCAjZDRkNGQ0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNlY3Rpb25zLWJvcmRlci1yYWRpdXMsIDNweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fZWRpdC1hZGRyZXNzIC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fdmlldy1vcmRlciAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQgewogICAgYm9yZGVyOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX2VkaXQtYWRkcmVzcyAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQtd3JhcHBlciwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuZS1teS1hY2NvdW50LXRhYl9fdmlldy1vcmRlciAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQtd3JhcHBlciB7CiAgICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX3ZpZXctb3JkZXIgLm9yZGVyX2RldGFpbHMgewogICAgbWFyZ2luLWJvdHRvbTogNDBweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5lLW15LWFjY291bnQtdGFiX192aWV3LW9yZGVyIC5vcmRlcl9kZXRhaWxzLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5lLW15LWFjY291bnQtdGFiX192aWV3LW9yZGVyIC53b29jb21tZXJjZS10YWJsZS0tb3JkZXItZG93bmxvYWRzIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlY3Rpb25zLWJhY2tncm91bmQtY29sb3IsICNmZmYpOwogICAgcGFkZGluZzogdmFyKC0tc2VjdGlvbnMtcGFkZGluZywgMTZweCAzMHB4IDNweCAzMHB4KTsKICAgIGJvcmRlcjogMXB4IHZhcigtLXNlY3Rpb25zLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tc2VjdGlvbnMtYm9yZGVyLWNvbG9yLCAjZDRkNGQ0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNlY3Rpb25zLWJvcmRlci1yYWRpdXMsIDNweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQ+ZGl2PnAgewogICAgY29sb3I6IHZhcigtLWdlbmVyYWwtdGV4dC1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1ub3JtYWwtY29sb3IsICM4MThhOTEpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1iYWNrZ3JvdW5kLWNvbG9yLCAjZjdmN2Y3KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWZvcm1zLWZpZWxkcy1ib3JkZXItcmFkaXVzLCAwKTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGhlaWdodDogNDVweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZTpmb2N1cyB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLWNvbG9yLCAjODE4YTkxKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yLCAjZjdmN2Y3KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLWJvcmRlci1jb2xvciwgaW5pdGlhbCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1maWVsZHMtbm9ybWFsLWNvbG9yLCAjODE4YTkxKTsKICAgIGxpbmUtaGVpZ2h0OiA0NXB4OwogICAgcGFkZGluZy1sZWZ0OiAxcmVtOwogICAgcGFkZGluZy1yaWdodDogMXJlbQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHsKICAgIGhlaWdodDogNDVweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiAuc2VsZWN0Mi1kcm9wZG93bi0tYmVsb3cgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1iYWNrZ3JvdW5kLWNvbG9yLCAjZjdmN2Y3KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSA6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1ub3JtYWwtY29sb3IsIGluaGVyaXQpOwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSA6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1ub3JtYWwtY29sb3IsIGluaGVyaXQpOwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtZmllbGRzLW5vcm1hbC1jb2xvciwgaW5oZXJpdCk7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIDo6cGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1ub3JtYWwtY29sb3IsIGluaGVyaXQpOwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1tZXNzYWdlIHsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSBhZGRyZXNzIHsKICAgIGNvbG9yOiB2YXIoLS1nZW5lcmFsLXRleHQtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIGEgewogICAgY29sb3I6IHZhcigtLWxpbmtzLW5vcm1hbC1jb2xvciwgIzViYzBkZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgYTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tbGlua3MtaG92ZXItY29sb3IsICM1YmMwZGUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIGEuYnV0dG9uLmFsdDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgYS5idXR0b246aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSBlbSB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBjb2xvcjogdmFyKC0tbG9naW4tbWVzc2FnZXMtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5mb3JtLXJvdyB7CiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLWZvcm1zLWNvbHVtbnMtZ2FwLXBhZGRpbmctbGVmdCwgMCk7CiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1mb3Jtcy1jb2x1bW5zLWdhcC1wYWRkaW5nLXJpZ2h0LCAwKTsKICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1mb3Jtcy1jb2x1bW5zLWdhcC1tYXJnaW4tbGVmdCwgMCk7CiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWZvcm1zLWNvbHVtbnMtZ2FwLW1hcmdpbi1yaWdodCwgMCk7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1mb3Jtcy1yb3dzLWdhcCwgNnB4KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAuZm9ybS1yb3cgbGFiZWwgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWxhYmVscy1jb2xvciwgIzgxOGE5MSk7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1mb3Jtcy1sYWJlbC1zcGFjaW5nLCAwKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAuZm9ybS1yb3cgLmlucHV0LXRleHQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5mb3JtLXJvdyBzZWxlY3QgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1ub3JtYWwtY29sb3IsICM4MThhOTEpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZm9ybXMtZmllbGRzLWJvcmRlci1yYWRpdXMsIDApOwogICAgcGFkZGluZzogdmFyKC0tZm9ybXMtZmllbGRzLXBhZGRpbmcsIDE2cHgpOwogICAgYmFja2dyb3VuZDogI2Y3ZjdmNzsKICAgIGJvcmRlcjogbm9uZTsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAuZm9ybS1yb3cgLmlucHV0LXRleHQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5mb3JtLXJvdyBzZWxlY3Q6Zm9jdXMgewogICAgY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1jb2xvciwgIzgxOGE5MSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy1ib3JkZXItY29sb3IsICM4MThhOTEpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1maWVsZHMtZm9jdXMtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWZvcm1zLWZpZWxkcy1mb2N1cy10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZm9ybXMtZmllbGRzLWZvY3VzLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcykKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgI2JpbGxpbmdfYWRkcmVzc18xX2ZpZWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDVweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAubG9naW4gLndvb2NvbW1lcmNlLXByaXZhY3ktcG9saWN5LXRleHQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5yZWdpc3RlciAud29vY29tbWVyY2UtcHJpdmFjeS1wb2xpY3ktdGV4dCB7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgY29sb3I6IHZhcigtLWxvZ2luLW1lc3NhZ2VzLWNvbG9yLCAjODE4YTkxKTsKICAgIGZvbnQtc2l6ZTogMTJweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAubG9naW4gcDpudGgtY2hpbGQoMiksCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5yZWdpc3RlciBwOm50aC1jaGlsZCgyKSB7CiAgICBjb2xvcjogdmFyKC0tbG9naW4tbWVzc2FnZXMtY29sb3IsICM4MThhOTEpOwogICAgZm9udC1zaXplOiAxMnB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5sb2dpbiAud29vY29tbWVyY2UtTG9zdFBhc3N3b3JkLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAucmVnaXN0ZXIgLndvb2NvbW1lcmNlLUxvc3RQYXNzd29yZCB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1SZXNldFBhc3N3b3JkIHsKICAgIHdpZHRoOiA1MCUKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtUmVzZXRQYXNzd29yZCB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLVJlc2V0UGFzc3dvcmQgcCB7CiAgICBjb2xvcjogdmFyKC0tZ2VuZXJhbC10ZXh0LWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtUmVzZXRQYXNzd29yZCAuZm9ybS1yb3ctZmlyc3QgewogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLmxvZ2luLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAucmVnaXN0ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC53b29jb21tZXJjZS1SZXNldFBhc3N3b3JkIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlY3Rpb25zLWJhY2tncm91bmQtY29sb3IsICNmZmYpOwogICAgcGFkZGluZzogdmFyKC0tc2VjdGlvbnMtcGFkZGluZywgMTZweCAzMHB4KTsKICAgIGJvcmRlcjogMXB4IHZhcigtLXNlY3Rpb25zLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tc2VjdGlvbnMtYm9yZGVyLWNvbG9yLCAjZDRkNGQ0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNlY3Rpb25zLWJvcmRlci1yYWRpdXMsIDNweCk7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLmxvZ2luIC5idXR0b24sCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5yZWdpc3RlciAuYnV0dG9uLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtUmVzZXRQYXNzd29yZCAuYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6ICM1YmMwZGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ub3JtYWwtdGV4dC1jb2xvciwgI2ZmZik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1mb3Jtcy1idXR0b25zLWJvcmRlci1yYWRpdXMsIDNweCk7CiAgICBwYWRkaW5nOiB2YXIoLS1mb3Jtcy1idXR0b25zLXBhZGRpbmcsIDEycHggMzJweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLmxvZ2luIC5idXR0b246aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5yZWdpc3RlciAuYnV0dG9uOmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtUmVzZXRQYXNzd29yZCAuYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLXRleHQtY29sb3IsICNmZmYpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcykKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLmxvZ2luIHA6bnRoLWNoaWxkKDMpIHsKICAgIG1hcmdpbi10b3A6IDIwcHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLnJlZ2lzdGVyIHA6bnRoLWNoaWxkKDIpIHsKICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICBmb250LXNpemU6IDEycHgKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLndvb2NvbW1lcmNlLWZvcm1fX2lucHV0LWNoZWNrYm94IHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgcDpsYXN0LW9mLXR5cGUgewogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAud29vY29tbWVyY2UtZm9ybV9fbGFiZWwtZm9yLWNoZWNrYm94IHNwYW4gewogICAgY29sb3I6IHZhcigtLWNoZWNrYm94ZXMtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIHRkLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSB0aCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgdHIgewogICAgYm9yZGVyOiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIGgyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSBoMyB7CiAgICBjb2xvcjogdmFyKC0tdHlwb2dyYXBoeS1zZWN0aW9uLXRpdGxlcy1jb2xvciwgIzAwMCk7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2VjdGlvbi10aXRsZS1zcGFjaW5nLCA0NXB4KTsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2Ugc3Ryb25nIHsKICAgIGNvbG9yOiB2YXIoLS1nZW5lcmFsLXRleHQtY29sb3IsICMwMDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC53Yy1pdGVtLW1ldGEsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIHN0cm9uZy53Yy1pdGVtLW1ldGEtbGFiZWwgewogICAgY29sb3I6IHZhcigtLXZhcmlhdGlvbnMtY29sb3IsICM4MThhOTEpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5wcm9kdWN0LXF1YW50aXR5IHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogdmFyKC0tdGFibGVzLWl0ZW1zLWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAud29vY29tbWVyY2Utb3JkZXItZG93bmxvYWRzIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24gewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogMjUlCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIHsKICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDogMDsKICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpIHsKICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgIG1hcmdpbjogY2FsYyh2YXIoLS10YWJzLXNwYWNpbmcsIDJweCkgLyAyKSAwIGNhbGModmFyKC0tdGFicy1zcGFjaW5nLCAycHgpIC8gMikgMDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYnMtZGl2aWRlci1jb2xvciwgIzgxOGE5MSk7CiAgICBoZWlnaHQ6IHZhcigtLXRhYnMtZGl2aWRlci13ZWlnaHQsIDApOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiBjYWxjKHZhcigtLXRhYnMtc3BhY2luZywgMnB4KSAvIDIpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpLmlzLWFjdGl2ZSBhIHsKICAgIGNvbG9yOiB2YXIoLS10YWJzLWFjdGl2ZS1jb2xvciwgIzViYzBkZSk7CiAgICBiYWNrZ3JvdW5kOiAjZWNlZWVmOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YWJzLWFjdGl2ZS1ib3JkZXItY29sb3IsIHRyYW5zcGFyZW50KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1NeUFjY291bnQtbmF2aWdhdGlvbiB1bCBsaSBhIHsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBjb2xvcjogdmFyKC0tdGFicy1ub3JtYWwtY29sb3IsICM4MThhOTEpOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiB2YXIoLS10YWJzLXBhZGRpbmcsIDEycHggMjBweCk7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS10YWJzLWFsaWdubWVudCwgc3RhcnQpOwogICAgYmFja2dyb3VuZDogI2Y3ZjdmNzsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRhYnMtYm9yZGVyLXJhZGl1cywgMCk7CiAgICBib3JkZXI6IDAgdmFyKC0tdGFicy1ib3JkZXItdHlwZSwgc29saWQpIHZhcigtLXRhYnMtYm9yZGVyLWNvbG9yLCB0cmFuc3BhcmVudCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24gdWwgbGkgYTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tdGFicy1ob3Zlci1jb2xvciwgIzViYzBkZSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXRhYnMtaG92ZXItYm9yZGVyLWNvbG9yLCB0cmFuc3BhcmVudCkKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1NeUFjY291bnQtbmF2aWdhdGlvbiB1bCBsaSBhIHsKICAgICAgICBwYWRkaW5nOiB2YXIoLS10YWJzLXBhZGRpbmcsIDEwcHgpCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uLWxpbmstLWRhc2hib2FyZCB7CiAgICBtYXJnaW4tdG9wOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uLWxpbmstLWN1c3RvbWVyLWxvZ291dCB7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uLWxpbmstLWN1c3RvbWVyLWxvZ291dDphZnRlciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50IHsKICAgIGZsb2F0OiByaWdodDsKICAgIHdpZHRoOiA3NSU7CiAgICBwYWRkaW5nOiAwOwogICAgcGFkZGluZy1sZWZ0OiB2YXIoLS10YWItY29udGVudC1zcGFjaW5nLCA2JSkKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZzogdmFyKC0tdGFiLWNvbnRlbnQtc3BhY2luZywgNiUpIDAgMCAwCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50LXdyYXBwZXIgewogICAgZm9udC1zaXplOiAxNHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50IHA6bGFzdC1vZi10eXBlIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtTXlBY2NvdW50LWNvbnRlbnQgaDI6Zmlyc3Qtb2YtdHlwZSB7CiAgICBtYXJnaW4tdG9wOiAzMHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50IG1hcmsgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6IHZhcigtLWdlbmVyYWwtdGV4dC1jb2xvciwgIzAwMCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgY29sZ3JvdXArdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoIHsKICAgIGJvcmRlci10b3A6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRoIHsKICAgIGJvcmRlci10b3A6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXRvcDogMDsKICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS10YWJsZXMtdGl0bGVzLXNwYWNpbmcsIDlweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgdGJvZHk+dHI6bnRoLWNoaWxkKDJuKT50ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgdGJvZHk+dHI6bnRoLWNoaWxkKDJuKT50aCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgdGJvZHk+dHI6bnRoLWNoaWxkKG9kZCk+dGQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIHRib2R5PnRyOm50aC1jaGlsZChvZGQpPnRoIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFkZGluZy10b3A6IHZhcigtLW9yZGVyLXN1bW1hcnktcm93cy1nYXAtdG9wLCA5cHgpOwogICAgcGFkZGluZy1ib3R0b206IHZhcigtLW9yZGVyLXN1bW1hcnktcm93cy1nYXAtYm90dG9tLCA5cHgpOwogICAgY29sb3I6IHZhcigtLXRhYmxlcy1pdGVtcy1jb2xvciwgIzgxOGE5MSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgdGJvZHkgLndvb2NvbW1lcmNlLW9yZGVycy10YWJsZV9fY2VsbC53b29jb21tZXJjZS1vcmRlcnMtdGFibGVfX2NlbGwtb3JkZXItbnVtYmVyPmEgewogICAgY29sb3I6IHZhcigtLXRhYmxlcy1saW5rcy1ub3JtYWwtY29sb3IsICM1YmMwZGUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIHRib2R5IC53b29jb21tZXJjZS1vcmRlcnMtdGFibGVfX2NlbGwud29vY29tbWVyY2Utb3JkZXJzLXRhYmxlX19jZWxsLW9yZGVyLW51bWJlcj5hOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS10YWJsZXMtbGlua3MtaG92ZXItY29sb3IsICM1YmMwZGUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIHsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAuc2hvcF90YWJsZSAuYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGFibGVzLWJ1dHRvbi1ib3JkZXItcmFkaXVzLCAzcHgpOwogICAgYm9yZGVyOiAycHggdmFyKC0tdGFibGVzLWJ1dHRvbnMtYm9yZGVyLXR5cGUsIHNvbGlkKSB2YXIoLS10YWJsZXMtYnV0dG9ucy1ib3JkZXItY29sb3IsICM1YmMwZGUpOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIGNvbG9yOiB2YXIoLS10YWJsZXMtYnV0dG9uLW5vcm1hbC10ZXh0LWNvbG9yLCAjODE4YTkxKTsKICAgIHBhZGRpbmc6IHZhcigtLXRhYmxlcy1idXR0b24tcGFkZGluZywgNXB4IDEwcHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5zaG9wX3RhYmxlIC5idXR0b246aG92ZXIgewogICAgY29sb3I6IHZhcigtLXRhYmxlcy1idXR0b24taG92ZXItdGV4dC1jb2xvciwgIzgxOGE5MSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXRhYmxlcy1idXR0b24taG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXRhYmxlcy1idXR0b24taG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKTsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXRhYmxlcy1idXR0b24taG92ZXItdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjNzKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLnNob3BfdGFibGUgdGggewogICAgYm9yZGVyLXRvcDogdmFyKC0tdGFibGVzLWRpdmlkZXItYm9yZGVyLXdpZHRoLCAxcHgpIHZhcigtLXRhYmxlcy1kaXZpZGVyLWJvcmRlci10eXBlLCBzb2xpZCkgdmFyKC0tdGFibGVzLWRpdmlkZXItYm9yZGVyLWNvbG9yLCAjZDRkNGQ0KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAuc2hvcF90YWJsZSB0aGVhZCB0ciB0aCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLnNob3BfdGFibGUgdGhlYWQgdHIgdGggc3BhbiB7CiAgICBjb2xvcjogdmFyKC0tdGFibGVzLXRpdGxlLWNvbG9yLCAjMDAwKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAub3JkZXJfZGV0YWlscyB0Zm9vdCB0ZCwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLm9yZGVyX2RldGFpbHMgdGZvb3QgdGggewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgY29sb3I6IHZhcigtLXRhYmxlcy10aXRsZS1jb2xvciwgIzAwMCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLm9yZGVyX2RldGFpbHMgLmRvd25sb2FkLXByb2R1Y3QgYSwKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLm9yZGVyX2RldGFpbHMgLnByb2R1Y3QtbmFtZSBhIHsKICAgIGNvbG9yOiB2YXIoLS10YWJsZXMtbGlua3Mtbm9ybWFsLWNvbG9yLCAjNWJjMGRlKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAub3JkZXJfZGV0YWlscyAuZG93bmxvYWQtcHJvZHVjdCBhOmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZSAub3JkZXJfZGV0YWlscyAucHJvZHVjdC1uYW1lIGE6aG92ZXIgewogICAgY29sb3I6IHZhcigtLXRhYmxlcy1saW5rcy1ob3Zlci1jb2xvciwgIzViYzBkZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLm9yZGVyX2RldGFpbHMgLnByb2R1Y3QtcHVyY2hhc2Utbm90ZSB0ZCB7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgcGFkZGluZy10b3A6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLm9yZGVyLWFnYWluIC5idXR0b24gewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjNWJjMGRlOwogICAgYm9yZGVyOiAycHggdmFyKC0tdGFibGVzLWJ1dHRvbnMtYm9yZGVyLXR5cGUsIHNvbGlkKSB2YXIoLS10YWJsZXMtYnV0dG9ucy1ib3JkZXItY29sb3IsICM1YmMwZGUpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGFibGVzLWJ1dHRvbi1ib3JkZXItcmFkaXVzLCAzcHgpOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIGNvbG9yOiB2YXIoLS10YWJsZXMtYnV0dG9uLW5vcm1hbC10ZXh0LWNvbG9yLCAjODE4YTkxKTsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgcGFkZGluZzogdmFyKC0tdGFibGVzLWJ1dHRvbi1wYWRkaW5nLCAxMnB4IDMycHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlIC5vcmRlci1hZ2FpbiAuYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS10YWJsZXMtYnV0dG9uLWhvdmVyLXRleHQtY29sb3IsICM4MThhOTEpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10YWJsZXMtYnV0dG9uLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10YWJsZXMtYnV0dG9uLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10YWJsZXMtYnV0dG9uLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcykKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtQWRkcmVzcyAudGl0bGUgaDMsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLUFkZHJlc3NlcyAudGl0bGUgaDMgewogICAgZmxvYXQ6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtQWRkcmVzcyBhZGRyZXNzLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1BZGRyZXNzZXMgYWRkcmVzcyB7CiAgICBwYWRkaW5nOiB2YXIoLS1zZWN0aW9ucy1wYWRkaW5nLCA0NXB4IDMwcHggMTZweCAzMHB4KQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1BZGRyZXNzIC5lZGl0LAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1BZGRyZXNzZXMgLmVkaXQgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBtYXJnaW4tbGVmdDogdmFyKC0tZWRpdC1saW5rLW1hcmdpbi1zdGFydCwgMzBweCk7CiAgICBtYXJnaW4tdG9wOiB2YXIoLS1lZGl0LWxpbmstbWFyZ2luLXRvcCwgMTBweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UgLnUtY29sdW1ucyB7CiAgICBtYXJnaW4tdG9wOiAyMHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLWFkZHJlc3MtZmllbGRzIGZpZWxkc2V0LAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1FZGl0QWNjb3VudEZvcm0gZmllbGRzZXQgewogICAgYm9yZGVyOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiAwOwogICAgbWFyZ2luLWlubGluZS1zdGFydDogMAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS1hZGRyZXNzLWZpZWxkcyBmaWVsZHNldCBsZWdlbmQsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLUVkaXRBY2NvdW50Rm9ybSBmaWVsZHNldCBsZWdlbmQgewogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHBhZGRpbmc6IDIwcHggMDsKICAgIGNvbG9yOiB2YXIoLS1nZW5lcmFsLXRleHQtY29sb3IsICMwMDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLWFkZHJlc3MtZmllbGRzIC5idXR0b24sCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLUVkaXRBY2NvdW50Rm9ybSAuYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6ICM1YmMwZGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBjb2xvcjogdmFyKC0tZm9ybXMtYnV0dG9ucy1ub3JtYWwtdGV4dC1jb2xvciwgI2ZmZik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1mb3Jtcy1idXR0b25zLWJvcmRlci1yYWRpdXMsIDNweCk7CiAgICBwYWRkaW5nOiB2YXIoLS1mb3Jtcy1idXR0b25zLXBhZGRpbmcsIDEycHggMzJweCk7CiAgICBtYXJnaW4tdG9wOiAyMHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLWFkZHJlc3MtZmllbGRzIC5idXR0b246aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLUVkaXRBY2NvdW50Rm9ybSAuYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLXRleHQtY29sb3IsICNmZmYpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1mb3Jtcy1idXR0b25zLWhvdmVyLXRyYW5zaXRpb24tZHVyYXRpb24sIC4zcykKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtcGFnaW5hdGlvbiB7CiAgICBwYWRkaW5nOiAxNnB4IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtbXktYWNjb3VudCAud29vY29tbWVyY2UtcGFnaW5hdGlvbiAuYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGFibGVzLWJ1dHRvbi1ib3JkZXItcmFkaXVzLCAzcHgpOwogICAgYm9yZGVyOiAycHggdmFyKC0tdGFibGVzLWJ1dHRvbnMtYm9yZGVyLXR5cGUsIHNvbGlkKSB2YXIoLS10YWJsZXMtYnV0dG9ucy1ib3JkZXItY29sb3IsICM1YmMwZGUpOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIGNvbG9yOiB2YXIoLS10YWJsZXMtYnV0dG9uLW5vcm1hbC10ZXh0LWNvbG9yLCAjODE4YTkxKTsKICAgIHBhZGRpbmc6IHZhcigtLXRhYmxlcy1idXR0b24tcGFkZGluZywgNXB4IDEwcHgpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLXBhZ2luYXRpb24gLmJ1dHRvbjpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tdGFibGVzLWJ1dHRvbi1ob3Zlci10ZXh0LWNvbG9yLCAjODE4YTkxKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tdGFibGVzLWJ1dHRvbi1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tdGFibGVzLWJ1dHRvbi1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tdGFibGVzLWJ1dHRvbi1ob3Zlci10cmFuc2l0aW9uLWR1cmF0aW9uLCAuM3MpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU9yZGVyVXBkYXRlcyB7CiAgICBjb2xvcjogdmFyKC0tZ2VuZXJhbC10ZXh0LWNvbG9yLCAjODE4YTkxKQp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS10YWJsZV9fbGluZS1pdGVtLm9yZGVyX2l0ZW0gLndvb2NvbW1lcmNlLXRhYmxlX19wcm9kdWN0LW5hbWUucHJvZHVjdC1wdXJjaGFzZS1ub3RlLWlzLWJlbG93LAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1teS1hY2NvdW50IC53b29jb21tZXJjZS10YWJsZV9fbGluZS1pdGVtLm9yZGVyX2l0ZW0gLndvb2NvbW1lcmNlLXRhYmxlX19wcm9kdWN0LXRvdGFsLnByb2R1Y3QtdG90YWwucHJvZHVjdC1wdXJjaGFzZS1ub3RlLWlzLWJlbG93IHsKICAgIHBhZGRpbmctYm90dG9tOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLmUtbXktYWNjb3VudC10YWJfX3ZpZXctb3JkZXIgLnNob3BfdGFibGUgdGQgewogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGxpbmUtaGVpZ2h0OiB1bnNldAp9CgouZS13Yy1hY2NvdW50LXRhYnMtbmF2IC53b29jb21tZXJjZS1NeUFjY291bnQtbmF2aWdhdGlvbiB7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiAxMDAlCn0KCi5lLXdjLWFjY291bnQtdGFicy1uYXYgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZS1teS1hY2NvdW50LXRhYnMtdmVydGljYWwgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lLW15LWFjY291bnQtdGFicy1ob3Jpem9udGFsIC53b29jb21tZXJjZS1NeUFjY291bnQtbmF2aWdhdGlvbiwKLmUtbXktYWNjb3VudC10YWJzLXZlcnRpY2FsIC5lLXdjLWFjY291bnQtdGFicy1uYXYgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmUtbXktYWNjb3VudC10YWJzLWhvcml6b250YWwgLmUtd2MtYWNjb3VudC10YWJzLW5hdiAud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24gewogICAgZGlzcGxheTogYmxvY2sKfQoKLmUtbXktYWNjb3VudC10YWJzLWhvcml6b250YWwgLmUtd2MtYWNjb3VudC10YWJzLW5hdiAud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24gdWwgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LXBhY2s6IHZhcigtLXRhYnMtY29udGFpbmVyLWp1c3RpZnktY29udGVudCwgc3BhY2UtYmV0d2Vlbik7CiAgICAtbXMtZmxleC1wYWNrOiB2YXIoLS10YWJzLWNvbnRhaW5lci1qdXN0aWZ5LWNvbnRlbnQsIHNwYWNlLWJldHdlZW4pOwogICAganVzdGlmeS1jb250ZW50OiB2YXIoLS10YWJzLWNvbnRhaW5lci1qdXN0aWZ5LWNvbnRlbnQsIHNwYWNlLWJldHdlZW4pCn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZS1teS1hY2NvdW50LXRhYnMtaG9yaXpvbnRhbCAuZS13Yy1hY2NvdW50LXRhYnMtbmF2IC53b29jb21tZXJjZS1NeUFjY291bnQtbmF2aWdhdGlvbiB1bCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sKICAgIH0KfQoKLmUtbXktYWNjb3VudC10YWJzLWhvcml6b250YWwgLmUtd2MtYWNjb3VudC10YWJzLW5hdiAud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24gdWwgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IHZhcigtLXRhYi13aWR0aCwgMTAwJSk7CiAgICBwYWRkaW5nOiAwIGNhbGModmFyKC0tdGFicy1zcGFjaW5nLCAycHgpIC8gMikgMCBjYWxjKHZhcigtLXRhYnMtc3BhY2luZywgMnB4KSAvIDIpOwogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS10YWJzLWRpdmlkZXItd2VpZ2h0LCAwKSBzb2xpZCB2YXIoLS10YWJzLWRpdmlkZXItY29sb3IsICM4MThhOTEpCn0KCi5lLW15LWFjY291bnQtdGFicy1ob3Jpem9udGFsIC5lLXdjLWFjY291bnQtdGFicy1uYXYgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpOmFmdGVyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmUtbXktYWNjb3VudC10YWJzLWhvcml6b250YWwgLmUtd2MtYWNjb3VudC10YWJzLW5hdiAud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24gdWwgbGk6Zmlyc3Qtb2YtdHlwZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDAKfQoKLmUtbXktYWNjb3VudC10YWJzLWhvcml6b250YWwgLmUtd2MtYWNjb3VudC10YWJzLW5hdiAud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24gdWwgbGk6bGFzdC1vZi10eXBlIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDAKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lLW15LWFjY291bnQtdGFicy1ob3Jpem9udGFsIC5lLXdjLWFjY291bnQtdGFicy1uYXYgLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIHVsIGxpIHsKICAgICAgICBtYXJnaW46IGNhbGModmFyKC0tdGFicy1zcGFjaW5nLCAycHgpIC8gMikgMCBjYWxjKHZhcigtLXRhYnMtc3BhY2luZywgMnB4KSAvIDIpIDA7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCi5lLW15LWFjY291bnQtdGFicy1ob3Jpem9udGFsIC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudCB7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogdmFyKC0tdGFiLWNvbnRlbnQtc3BhY2luZywgNTBweCkgMCAwIDAKfQoKLmVsZW1lbnRvci1lZGl0b3ItYWN0aXZlIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciwKLmVsZW1lbnRvci1lZGl0b3ItcHJldmlldyAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgbWluLWhlaWdodDogMXB4Cn0KCi5lbGVtZW50b3ItZWRpdG9yLWFjdGl2ZSB0cjpub3QoOmZpcnN0LWNoaWxkKSAud29vY29tbWVyY2Utb3JkZXJzLXRhYmxlX19jZWxsLW9yZGVyLW51bWJlciBhLAouZWxlbWVudG9yLWVkaXRvci1wcmV2aWV3IHRyOm5vdCg6Zmlyc3QtY2hpbGQpIC53b29jb21tZXJjZS1vcmRlcnMtdGFibGVfX2NlbGwtb3JkZXItbnVtYmVyIGEgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmVsZW1lbnRvci1lZGl0b3ItYWN0aXZlIHRyOm5vdCg6Zmlyc3QtY2hpbGQpIC53b29jb21tZXJjZS1vcmRlcnMtdGFibGVfX2NlbGwtb3JkZXItYWN0aW9ucyAuYnV0dG9uLAouZWxlbWVudG9yLWVkaXRvci1wcmV2aWV3IHRyOm5vdCg6Zmlyc3QtY2hpbGQpIC53b29jb21tZXJjZS1vcmRlcnMtdGFibGVfX2NlbGwtb3JkZXItYWN0aW9ucyAuYnV0dG9uIHsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgb3BhY2l0eTogLjMKfQoKLmVsZW1lbnRvci1lZGl0b3ItYWN0aXZlIC5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW15LWFjY291bnQgLndvb2NvbW1lcmNlLU15QWNjb3VudC1jb250ZW50Om5vdCg6Zmlyc3Qtb2YtdHlwZSkgewogICAgZGlzcGxheTogbm9uZQp9CgoucHJvZHVjdCAuY291bnQgewogICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdAp9CgouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1ub3RpY2VzIC5lLXdvb2NvbW1lcmNlLW5vdGljZXMtd3JhcHBlci5lLXdvb2NvbW1lcmNlLW5vdGljZXMtd3JhcHBlci1sb2FkaW5nICosCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLXByb2R1Y3QtYWRkaXRpb25hbC1pbmZvcm1hdGlvbjpub3QoLmVsZW1lbnRvci1zaG93LWhlYWRpbmcteWVzKSBoMiB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLW5vdGljZXMgLndvb2NvbW1lcmNlLWVycm9yLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1ub3RpY2VzIC53b29jb21tZXJjZS1pbmZvLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1ub3RpY2VzIC53b29jb21tZXJjZS1tZXNzYWdlLAouZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1ub3RpY2VzIC53b29jb21tZXJjZS1ub3RpY2VzLXdyYXBwZXIgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmUtcHJldmlldy0tc2hvdy1oaWRkZW4tZWxlbWVudHM6bm90KC5lbGVtZW50b3ItZWRpdG9yLWFjdGl2ZSkgLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2Utbm90aWNlcyAuZS1ub3RpY2VzLWRlbW8tbm90aWNlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0LmVsZW1lbnRvciBmb3JtLmNhcnQgZGl2LnByb2R1Y3QtYWRkb24gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICBmbGV4LWJhc2lzOiAxMDAlOwogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7CiAgICBmbGV4LXNocmluazogMAp9CgouZS1zdGlja3ktcmlnaHQtY29sdW1uLS1hY3RpdmUgewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIHRvcDogMAp9CgouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbi1ib3JkZXJzLXllcyAuZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbi5lbGVtZW50b3ItZ3JpZCB7CiAgICBjb2xvcjogI2Q0ZDRkNDsKICAgIGJvcmRlcjogMXB4IHNvbGlkOwogICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICBwYWRkaW5nLXRvcDogMTBweDsKICAgIHBhZGRpbmctYm90dG9tOiAxMHB4Cn0KCi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uLWJvcmRlcnMteWVzIC5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uX19zZXBhcmF0b3IgewogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDFweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZDRkNAp9CgouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXgKfQoKLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb24gLnBvc3QtbmF2aWdhdGlvbl9fYXJyb3ctd3JhcHBlciB7CiAgICBjb2xvcjogI2Q0ZDRkNAp9CgouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiAucG9zdC1uYXZpZ2F0aW9uX19hcnJvdy13cmFwcGVyLnBvc3QtbmF2aWdhdGlvbl9fYXJyb3ctcHJldiB7CiAgICBmb250LXNpemU6IDMwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4Cn0KCi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uIC5wb3N0LW5hdmlnYXRpb25fX2Fycm93LXdyYXBwZXIucG9zdC1uYXZpZ2F0aW9uX19hcnJvdy1uZXh0IHsKICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIHBhZGRpbmctbGVmdDogMTVweAp9CgouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiAucG9zdC1uYXZpZ2F0aW9uX19hcnJvdy13cmFwcGVyIGkgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNSUpCn0KCi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uIC5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uX19saW5rX19uZXh0LAouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiAuZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbl9fbGlua19fcHJldiB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uIC5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uX19saW5rIGEgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb24gLnBvc3QtbmF2aWdhdGlvbl9fbmV4dC0tbGFiZWwsCi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uIC5wb3N0LW5hdmlnYXRpb25fX3ByZXYtLWxhYmVsIHsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBmb250LXNpemU6IC44ZW0KfQoKLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb24gLnBvc3QtbmF2aWdhdGlvbl9fbmV4dC0tdGl0bGUsCi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uIC5wb3N0LW5hdmlnYXRpb25fX3ByZXYtLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogLjdlbQp9CgouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiAucG9zdC1uYXZpZ2F0aW9uX19uZXh0LS1sYWJlbCwKLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb24gLnBvc3QtbmF2aWdhdGlvbl9fbmV4dC0tdGl0bGUsCi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uIC5wb3N0LW5hdmlnYXRpb25fX3ByZXYtLWxhYmVsLAouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiAucG9zdC1uYXZpZ2F0aW9uX19wcmV2LS10aXRsZSB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgLW8tdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcwp9CgouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiBzcGFuLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb25fX2xpbmtfX25leHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb24gc3Bhbi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uX19saW5rX19uZXh0LAouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiBzcGFuLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb25fX2xpbmtfX3ByZXYgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4KfQoKLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb24gLmVsZW1lbnRvci1ncmlkIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7CiAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuCn0KCi5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uIC5lbGVtZW50b3ItcG9zdC1uYXZpZ2F0aW9uX19saW5rIHsKICAgIHdpZHRoOiBjYWxjKDUwJSAtICgxcHggLyAyKSk7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC1vLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMKfQoKLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb24gLmVsZW1lbnRvci1wb3N0LW5hdmlnYXRpb25fX3NlcGFyYXRvci13cmFwcGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiAuZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbl9fbmV4dCB7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgouZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbiAuZWxlbWVudG9yLXBvc3QtbmF2aWdhdGlvbl9fbmV4dCBhIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjJzOwogICAgLW8tdHJhbnNpdGlvbjogLjJzOwogICAgdHJhbnNpdGlvbjogLjJzCn0KCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0gLmUtZm9udC1pY29uLXN2Zy1jb250YWluZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0gYnV0dG9uLAouZWxlbWVudG9yLXNlYXJjaC1mb3JtIGlucHV0W3R5cGU9c2VhcmNoXSB7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXI6IDA7CiAgICBwYWRkaW5nOiAwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBtaW4td2lkdGg6IDA7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmUKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybSBidXR0b246Zm9jdXMsCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0gaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7CiAgICBjb2xvcjogaW5oZXJpdAp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtIGJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODE4YTkxOwogICAgZm9udC1zaXplOiB2YXIoLS1lLXNlYXJjaC1mb3JtLXN1Ym1pdC1pY29uLXNpemUsIDE2cHgpOwogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAwCn0KCi5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX2NvbnRhaW5lciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjJzOwogICAgLW8tdHJhbnNpdGlvbjogLjJzOwogICAgdHJhbnNpdGlvbjogLjJzOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIG1pbi1oZWlnaHQ6IDUwcHgKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9fY29udGFpbmVyOm5vdCguZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1mdWxsLXNjcmVlbikgewogICAgYmFja2dyb3VuZDogI2VjZWVlZgp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtX19pbnB1dCB7CiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgIGZsZXgtYmFzaXM6IDEwMCU7CiAgICBjb2xvcjogIzU1NTk1YzsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgLjJzOwogICAgLW8tdHJhbnNpdGlvbjogY29sb3IgLjJzOwogICAgdHJhbnNpdGlvbjogY29sb3IgLjJzCn0KCi5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX2lucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtX19pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX2lucHV0Oi1tb3otcGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX2lucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtX19pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtX19pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX3N1Ym1pdCB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIC4ycywgYmFja2dyb3VuZCAuMnM7CiAgICAtby10cmFuc2l0aW9uOiBjb2xvciAuMnMsIGJhY2tncm91bmQgLjJzOwogICAgdHJhbnNpdGlvbjogY29sb3IgLjJzLCBiYWNrZ3JvdW5kIC4yczsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZS1zZWFyY2gtZm9ybS1zdWJtaXQtaWNvbi1zaXplLCAxNnB4KQp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtX19zdWJtaXQgc3ZnIHsKICAgIGZpbGw6IHZhcigtLWUtc2VhcmNoLWZvcm0tc3VibWl0LXRleHQtY29sb3IsICNmZmYpOwogICAgd2lkdGg6IHZhcigtLWUtc2VhcmNoLWZvcm0tc3VibWl0LWljb24tc2l6ZSwgMTZweCk7CiAgICBoZWlnaHQ6IHZhcigtLWUtc2VhcmNoLWZvcm0tc3VibWl0LWljb24tc2l6ZSwgMTZweCkKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybSAuZWxlbWVudG9yLXNlYXJjaC1mb3JtX19zdWJtaXQsCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0gLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9fc3VibWl0OmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1lLXNlYXJjaC1mb3JtLXN1Ym1pdC10ZXh0LWNvbG9yLCAjZmZmKTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDAKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybS0tYnV0dG9uLXR5cGUtdGV4dCAuZWxlbWVudG9yLXNlYXJjaC1mb3JtX19zdWJtaXQgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7CiAgICBmbGV4LXNocmluazogMAp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9faWNvbiB7CiAgICBvcGFjaXR5OiAuNjsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIGNvbG9yOiAjNTU1OTVjOwogICAgZmlsbDogIzU1NTk1YzsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZS1zZWFyY2gtZm9ybS1pY29uLXNpemUtbWluaW1hbCwgMTVweCkKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybS0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX2ljb24gc3ZnIHsKICAgIHdpZHRoOiB2YXIoLS1lLXNlYXJjaC1mb3JtLWljb24tc2l6ZS1taW5pbWFsLCAxNXB4KTsKICAgIGhlaWdodDogdmFyKC0tZS1zZWFyY2gtZm9ybS1pY29uLXNpemUtbWluaW1hbCwgMTVweCkKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybS0tc2tpbi1mdWxsX3NjcmVlbiAuZWxlbWVudG9yLXNlYXJjaC1mb3JtIGlucHV0W3R5cGU9c2VhcmNoXS5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX2lucHV0IHsKICAgIGZvbnQtc2l6ZTogNTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlcjogc29saWQgI2ZmZjsKICAgIGJvcmRlci13aWR0aDogMCAwIDFweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBjb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1za2luLWZ1bGxfc2NyZWVuIC5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX3RvZ2dsZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY29sb3I6IHZhcigtLWUtc2VhcmNoLWZvcm0tdG9nZ2xlLWNvbG9yLCAjNDk0YzRmKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZS1zZWFyY2gtZm9ybS10b2dnbGUtc2l6ZSwgMzNweCkKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybS0tc2tpbi1mdWxsX3NjcmVlbiAuZWxlbWVudG9yLXNlYXJjaC1mb3JtX190b2dnbGUgLmUtZm9udC1pY29uLXN2Zy1jb250YWluZXIsCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0tLXNraW4tZnVsbF9zY3JlZW4gLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9fdG9nZ2xlIGkgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC4yczsKICAgIC1vLXRyYW5zaXRpb246IC4yczsKICAgIHRyYW5zaXRpb246IC4yczsKICAgIHdpZHRoOiB2YXIoLS1lLXNlYXJjaC1mb3JtLXRvZ2dsZS1zaXplLCAzM3B4KTsKICAgIGhlaWdodDogdmFyKC0tZS1zZWFyY2gtZm9ybS10b2dnbGUtc2l6ZSwgMzNweCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLXNlYXJjaC1mb3JtLXRvZ2dsZS1iYWNrZ3JvdW5kLWNvbG9yLCByZ2JhKDAsIDAsIDAsIC4wNSkpOwogICAgYm9yZGVyOiB2YXIoLS1lLXNlYXJjaC1mb3JtLXRvZ2dsZS1ib3JkZXItd2lkdGgsIDApIHNvbGlkIHZhcigtLWUtc2VhcmNoLWZvcm0tdG9nZ2xlLWNvbG9yLCAjNDk0YzRmKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWUtc2VhcmNoLWZvcm0tdG9nZ2xlLWJvcmRlci1yYWRpdXMsIDNweCkKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybS0tc2tpbi1mdWxsX3NjcmVlbiAuZWxlbWVudG9yLXNlYXJjaC1mb3JtX190b2dnbGUgLmUtZm9udC1pY29uLXN2Zy1jb250YWluZXI6YmVmb3JlLAouZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1za2luLWZ1bGxfc2NyZWVuIC5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX3RvZ2dsZSAuZS1mb250LWljb24tc3ZnLWNvbnRhaW5lciBzdmcsCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0tLXNraW4tZnVsbF9zY3JlZW4gLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9fdG9nZ2xlIGk6YmVmb3JlLAouZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1za2luLWZ1bGxfc2NyZWVuIC5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX3RvZ2dsZSBpIHN2ZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiA1MCU7CiAgICB0b3A6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKQp9CgouZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1za2luLWZ1bGxfc2NyZWVuIC5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX3RvZ2dsZSAuZS1mb250LWljb24tc3ZnLWNvbnRhaW5lcjpiZWZvcmUsCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0tLXNraW4tZnVsbF9zY3JlZW4gLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9fdG9nZ2xlIGk6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZS1zZWFyY2gtZm9ybS10b2dnbGUtaWNvbi1zaXplLCAuNTVlbSkKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybS0tc2tpbi1mdWxsX3NjcmVlbiAuZWxlbWVudG9yLXNlYXJjaC1mb3JtX190b2dnbGUgLmUtZm9udC1pY29uLXN2Zy1jb250YWluZXIgc3ZnLAouZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1za2luLWZ1bGxfc2NyZWVuIC5lbGVtZW50b3Itc2VhcmNoLWZvcm1fX3RvZ2dsZSBpIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1lLXNlYXJjaC1mb3JtLXRvZ2dsZS1jb2xvciwgIzQ5NGM0Zik7CiAgICB3aWR0aDogdmFyKC0tZS1zZWFyY2gtZm9ybS10b2dnbGUtaWNvbi1zaXplLCAuNTVlbSk7CiAgICBoZWlnaHQ6IHZhcigtLWUtc2VhcmNoLWZvcm0tdG9nZ2xlLWljb24tc2l6ZSwgLjU1ZW0pCn0KCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0tLXNraW4tZnVsbF9zY3JlZW4gLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9fY29udGFpbmVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbjogLjNzOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgei1pbmRleDogOTk5ODsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGhlaWdodDogMTAwdmg7CiAgICBwYWRkaW5nOiAwIDE1JTsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpCn0KCi5lbGVtZW50b3Itc2VhcmNoLWZvcm0tLXNraW4tZnVsbF9zY3JlZW4gLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9fY29udGFpbmVyOm5vdCguZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1mdWxsLXNjcmVlbikgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCkKfQoKLmVsZW1lbnRvci1zZWFyY2gtZm9ybS0tc2tpbi1mdWxsX3NjcmVlbiAuZWxlbWVudG9yLXNlYXJjaC1mb3JtX19jb250YWluZXI6bm90KC5lbGVtZW50b3Itc2VhcmNoLWZvcm0tLWZ1bGwtc2NyZWVuKSAuZGlhbG9nLWxpZ2h0Ym94LWNsb3NlLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLWF1dGhvci1ib3hfX2F2YXRhciB7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMDsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAgbWFyZ2luLXJpZ2h0OiAyNXB4Cn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveF9fYXZhdGFyIGltZyB7CiAgICB3aWR0aDogMTAwcHg7CiAgICBib3JkZXItcmFkaXVzOiA1MDBweDsKICAgIC1vLW9iamVjdC1maXQ6IGNvdmVyOwogICAgb2JqZWN0LWZpdDogY292ZXIKfQoKLmVsZW1lbnRvci1hdXRob3ItYm94X190ZXh0IHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMTsKICAgIGZvbnQtc2l6ZTogMTdweAp9CgouZWxlbWVudG9yLWF1dGhvci1ib3hfX25hbWUgewogICAgZm9udC1zaXplOiAyNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Cn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveF9fYmlvLAouZWxlbWVudG9yLWF1dGhvci1ib3hfX2JpbyBwIHsKICAgIG1hcmdpbi1ib3R0b206IC44ZW0KfQoKLmVsZW1lbnRvci1hdXRob3ItYm94X19iaW8gcDpsYXN0LW9mLXR5cGUgewogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouZWxlbWVudG9yLWF1dGhvci1ib3gtLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItYXV0aG9yLWJveCB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdwp9CgouZWxlbWVudG9yLWF1dGhvci1ib3gtLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItYXV0aG9yLWJveF9fYXZhdGFyIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAyNXB4Cn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveC0tbGF5b3V0LWltYWdlLXJpZ2h0IC5lbGVtZW50b3ItYXV0aG9yLWJveCB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlCn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveC0tbGF5b3V0LWltYWdlLXJpZ2h0IC5lbGVtZW50b3ItYXV0aG9yLWJveF9fYXZhdGFyIHsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIG1hcmdpbi1sZWZ0OiAyNXB4Cn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveC0tbGF5b3V0LWltYWdlLWFib3ZlIC5lbGVtZW50b3ItYXV0aG9yLWJveCB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLWF1dGhvci1ib3gtLWxheW91dC1pbWFnZS1hYm92ZSAuZWxlbWVudG9yLWF1dGhvci1ib3hfX2F2YXRhciB7CiAgICBtYXJnaW46IDAgYXV0byAxNXB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveC0tbGF5b3V0LWltYWdlLWFib3ZlLmVsZW1lbnRvci1hdXRob3ItYm94LS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYXV0aG9yLWJveF9fYXZhdGFyIHsKICAgIG1hcmdpbi1sZWZ0OiAwCn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveC0tbGF5b3V0LWltYWdlLWFib3ZlLmVsZW1lbnRvci1hdXRob3ItYm94LS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWF1dGhvci1ib3hfX2F2YXRhciB7CiAgICBtYXJnaW4tcmlnaHQ6IDAKfQoKLmVsZW1lbnRvci1hdXRob3ItYm94LS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYXV0aG9yLWJveCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveC0tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1hdXRob3ItYm94IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Cn0KCi5lbGVtZW50b3ItYXV0aG9yLWJveC0tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItYXV0aG9yLWJveCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1idXR0b24uZWxlbWVudG9yLWF1dGhvci1ib3hfX2J1dHRvbiB7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjNTU1OTVjOwogICAgZm9udC1zaXplOiAxNXB4OwogICAgZm9udC13ZWlnaHQ6IDEwMDsKICAgIHBhZGRpbmc6IDEwcHggMThweAp9CgouZWxlbWVudG9yLWJ1dHRvbi5lbGVtZW50b3ItYXV0aG9yLWJveF9fYnV0dG9uLAouZWxlbWVudG9yLWJ1dHRvbi5lbGVtZW50b3ItYXV0aG9yLWJveF9fYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY29sb3I6ICM1NTU5NWMKfQoKLmVsZW1lbnRvci13aWRnZXQtYXV0aG9yLWJveDpub3QoLmVsZW1lbnRvci1hdXRob3ItYm94LS1sYXlvdXQtaW1hZ2UtYWJvdmUpLmVsZW1lbnRvci1hdXRob3ItYm94LS1pbWFnZS12YWxpZ24tdG9wIC5lbGVtZW50b3ItYXV0aG9yLWJveF9fYXZhdGFyLAouZWxlbWVudG9yLXdpZGdldC1hdXRob3ItYm94Om5vdCguZWxlbWVudG9yLWF1dGhvci1ib3gtLWxheW91dC1pbWFnZS1hYm92ZSkgLmVsZW1lbnRvci1hdXRob3ItYm94X19hdmF0YXIgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQ7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWF1dGhvci1ib3g6bm90KC5lbGVtZW50b3ItYXV0aG9yLWJveC0tbGF5b3V0LWltYWdlLWFib3ZlKS5lbGVtZW50b3ItYXV0aG9yLWJveC0taW1hZ2UtdmFsaWduLW1pZGRsZSAuZWxlbWVudG9yLWF1dGhvci1ib3hfX2F2YXRhciB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1wb3N0LWluZm9fX3Rlcm1zLWxpc3QgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3ItcG9zdC1pbmZvIC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24gLmVsZW1lbnRvci1hdmF0YXIgewogICAgYm9yZGVyLXJhZGl1czogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC1wb3N0LWluZm8uZWxlbWVudG9yLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgIG1hcmdpbjogaW5pdGlhbAp9CgouZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIC5lbGVtZW50b3ItaWNvbi1saXN0LXRleHQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gLmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCBhLAouZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIC5lbGVtZW50b3ItaWNvbi1saXN0LXRleHQgc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtYnJlYWRjcnVtYnMgewogICAgZm9udC1zaXplOiAuODVlbQp9CgouZWxlbWVudG9yLXdpZGdldC1icmVhZGNydW1icyBwIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci1zaXRlbWFwLXdyYXAgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwOwogICAgZmxleC1mbG93OiByb3cgd3JhcAp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzOmFmdGVyLAouZWxlbWVudG9yLXdpZGdldC1wb3N0czphZnRlciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3ItcG9zdHMtY29udGFpbmVyLmVsZW1lbnRvci1wb3N0cy1tYXNvbnJ5IHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDsKICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3ItcG9zdHMtY29udGFpbmVyOm5vdCguZWxlbWVudG9yLXBvc3RzLW1hc29ucnkpIHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOwogICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaAp9CgouZWxlbWVudG9yLXBvc3RzLWNvbnRhaW5lciAuZWxlbWVudG9yLXBvc3QgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMAp9CgouZWxlbWVudG9yLXBvc3RzLWNvbnRhaW5lciAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbCB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3ItcG9zdHMtY29udGFpbmVyIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsIGltZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LWhlaWdodDogbm9uZTsKICAgIG1heC13aWR0aDogbm9uZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC1maWx0ZXIgLjNzOwogICAgdHJhbnNpdGlvbjogLXdlYmtpdC1maWx0ZXIgLjNzOwogICAgLW8tdHJhbnNpdGlvbjogZmlsdGVyIC4zczsKICAgIHRyYW5zaXRpb246IGZpbHRlciAuM3M7CiAgICB0cmFuc2l0aW9uOiBmaWx0ZXIgLjNzLCAtd2Via2l0LWZpbHRlciAuM3MKfQoKLmVsZW1lbnRvci1wb3N0cy1jb250YWluZXIgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXBvc3RzLWNvbnRhaW5lci5lbGVtZW50b3ItaGFzLWl0ZW0tcmF0aW8gLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWwgewogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgYm90dG9tOiAwCn0KCi5lbGVtZW50b3ItcG9zdHMtY29udGFpbmVyLmVsZW1lbnRvci1oYXMtaXRlbS1yYXRpbyAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbCBpbWcgewogICAgaGVpZ2h0OiBhdXRvOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiBjYWxjKDUwJSArIDFweCk7CiAgICBsZWZ0OiBjYWxjKDUwJSArIDFweCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wMSkgdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4wMSkgdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAxKSB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKLmVsZW1lbnRvci1wb3N0cy1jb250YWluZXIuZWxlbWVudG9yLWhhcy1pdGVtLXJhdGlvIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsLmVsZW1lbnRvci1maXQtaGVpZ2h0IGltZyB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogYXV0bwp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZCwgYm9yZGVyLCAtd2Via2l0LWJveC1zaGFkb3c7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLCBib3JkZXIsIC13ZWJraXQtYm94LXNoYWRvdzsKICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQsIGJvcmRlciwgYm94LXNoYWRvdzsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQsIGJvcmRlciwgYm94LXNoYWRvdzsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQsIGJvcmRlciwgYm94LXNoYWRvdywgLXdlYmtpdC1ib3gtc2hhZG93OwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAuMjVzOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogLjI1czsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4yNXMKfQoKLmVsZW1lbnRvci1wb3N0cyAuZWxlbWVudG9yLXBvc3RfX3RpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1hcmdpbjogMAp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fZXhjZXJwdCB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Cn0KCi5lbGVtZW50b3ItcG9zdHMgLmVsZW1lbnRvci1wb3N0X19leGNlcnB0IHAgewogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDEuNWVtOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgY29sb3I6ICM3NzcKfQoKLmVsZW1lbnRvci1wb3N0cyAuZWxlbWVudG9yLXBvc3RfX21ldGEtZGF0YSB7CiAgICBsaW5lLWhlaWdodDogMS4zZW07CiAgICBmb250LXNpemU6IDEycHg7CiAgICBtYXJnaW4tYm90dG9tOiAxM3B4OwogICAgY29sb3I6ICNhZGFkYWQKfQoKLmVsZW1lbnRvci1wb3N0cyAuZWxlbWVudG9yLXBvc3RfX3JlYWQtbW9yZSB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNzAwCn0KCi5lbGVtZW50b3ItcG9zdHMgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3ItcG9zdHMtLXNraW4tY2xhc3NpYyB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcAp9CgouZWxlbWVudG9yLXBvc3RzLS1za2luLWNsYXNzaWM6bm90KC5lbGVtZW50b3ItcG9zdHMtbWFzb25yeSkgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CiAgICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoCn0KCi5lbGVtZW50b3ItcG9zdHMtLXNraW4tY2xhc3NpYyAuZWxlbWVudG9yLXBvc3QgewogICAgb3ZlcmZsb3c6IGhpZGRlbgp9CgouZWxlbWVudG9yLXBvc3RzLS1za2luLWNsYXNzaWMgLmVsZW1lbnRvci1wb3N0X190ZXh0IHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMQp9CgouZWxlbWVudG9yLXBvc3RzLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItcG9zdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5lbGVtZW50b3ItcG9zdHMtLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItcG9zdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgouZWxlbWVudG9yLXBvc3RzLS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1wb3N0IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXBvc3RzLS10aHVtYm5haWwtdG9wIC5lbGVtZW50b3ItcG9zdCB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLXBvc3RzLS10aHVtYm5haWwtdG9wIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsX19saW5rIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHgKfQoKLmVsZW1lbnRvci1wb3N0cy0tdGh1bWJuYWlsLXRvcCAuZWxlbWVudG9yLXBvc3RfX3RleHQgewogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci1wb3N0cy0tdGh1bWJuYWlsLXRvcC5lbGVtZW50b3ItcG9zdHMtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3ItcG9zdHMtLXRodW1ibmFpbC10b3AuZWxlbWVudG9yLXBvc3RzLS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbF9fbGluayB7CiAgICBtYXJnaW4tbGVmdDogYXV0bwp9CgouZWxlbWVudG9yLXBvc3RzLS10aHVtYm5haWwtdG9wLmVsZW1lbnRvci1wb3N0cy0tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsX19saW5rIHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvCn0KCi5lbGVtZW50b3ItcG9zdHMtLXRodW1ibmFpbC1sZWZ0IC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsX19saW5rLAouZWxlbWVudG9yLXBvc3RzLS10aHVtYm5haWwtcmlnaHQgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7CiAgICBmbGV4LXNocmluazogMDsKICAgIHdpZHRoOiAyNSUKfQoKLmVsZW1lbnRvci1wb3N0cy0tdGh1bWJuYWlsLWxlZnQgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTsKICAgIC1tcy1mbGV4LW9yZGVyOiAwOwogICAgb3JkZXI6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDIwcHgKfQoKLmVsZW1lbnRvci1wb3N0cy0tdGh1bWJuYWlsLXJpZ2h0IC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsX19saW5rIHsKICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDY7CiAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgIG9yZGVyOiA1OwogICAgbWFyZ2luLWxlZnQ6IDIwcHgKfQoKLmVsZW1lbnRvci1wb3N0cy0tdGh1bWJuYWlsLW5vbmUgLmVsZW1lbnRvci1wb3N0cy1jb250YWluZXIgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fY2FyZCB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIHdpZHRoOiAxMDAlOwogICAgbWluLWhlaWdodDogMTAwJTsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGJvcmRlcjogMCBzb2xpZCAjODE4YTkxOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjI1czsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAuMjVzOwogICAgdHJhbnNpdGlvbjogYWxsIC4yNXMKfQoKLmVsZW1lbnRvci1wb3N0cyAuZWxlbWVudG9yLXBvc3RfX2NhcmQgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsKICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZAp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbCBpbWcgewogICAgd2lkdGg6IGNhbGMoMTAwJSArIDFweCkKfQoKLmVsZW1lbnRvci1wb3N0cyAuZWxlbWVudG9yLXBvc3RfX2NhcmQgLmVsZW1lbnRvci1wb3N0X190ZXh0IHsKICAgIHBhZGRpbmc6IDAgMzBweDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBtYXJnaW4tdG9wOiAyMHB4Cn0KCi5lbGVtZW50b3ItcG9zdHMgLmVsZW1lbnRvci1wb3N0X19jYXJkIC5lbGVtZW50b3ItcG9zdF9fcmVhZC1tb3JlIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKLmVsZW1lbnRvci1wb3N0cyAuZWxlbWVudG9yLXBvc3RfX2NhcmQgLmVsZW1lbnRvci1wb3N0X19tZXRhLWRhdGEgewogICAgcGFkZGluZzogMTVweCAzMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWFlYWVhCn0KCi5lbGVtZW50b3ItcG9zdHMgLmVsZW1lbnRvci1wb3N0X19jYXJkIC5lbGVtZW50b3ItcG9zdF9fbWV0YS1kYXRhIHNwYW4rc3BhbjpiZWZvcmUgewogICAgbWFyZ2luOiAwIDVweAp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX3RpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjFweAp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX2V4Y2VycHQgewogICAgbGluZS1oZWlnaHQ6IDEuNwp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX2V4Y2VycHQsCi5lbGVtZW50b3ItcG9zdHMgLmVsZW1lbnRvci1wb3N0X19jYXJkIC5lbGVtZW50b3ItcG9zdF9fdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogMjVweAp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX2JhZGdlLAouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX3JlYWQtbW9yZSB7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlCn0KCi5lbGVtZW50b3ItcG9zdHMgLmVsZW1lbnRvci1wb3N0X19iYWRnZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBiYWNrZ3JvdW5kOiAjODE4YTkxOwogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBwYWRkaW5nOiAuNmVtIDEuMmVtOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbWFyZ2luOiAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogOTk5cHgKfQoKLmVsZW1lbnRvci1wb3N0cyAuZWxlbWVudG9yLXBvc3RfX2F2YXRhciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nOiAwIDMwcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIHRvcDogLTI1cHg7CiAgICBoZWlnaHQ6IDA7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdF9fYXZhdGFyIGltZyB7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICB3aWR0aDogNjBweDsKICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkKfQoKLmVsZW1lbnRvci1wb3N0cy0tdGh1bWJuYWlsLXRvcCAuZWxlbWVudG9yLXBvc3RzLS1za2luLWNhcmRzOm5vdCguZWxlbWVudG9yLXBvc3RzLW1hc29ucnkpIC5lbGVtZW50b3ItcG9zdF9fY2FyZCwKLmVsZW1lbnRvci1wb3N0cyAuZWxlbWVudG9yLXBvc3RzLS1za2luLWNhcmRzOm5vdCguZWxlbWVudG9yLXBvc3RzLW1hc29ucnkpIC5lbGVtZW50b3ItcG9zdF9fY2FyZCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKfQoKLmVsZW1lbnRvci1wb3N0cy0tdGh1bWJuYWlsLXRvcCAuZWxlbWVudG9yLXBvc3RzLS1za2luLWNhcmRzOm5vdCguZWxlbWVudG9yLXBvc3RzLW1hc29ucnkpIC5lbGVtZW50b3ItcG9zdF9fbWV0YS1kYXRhLAouZWxlbWVudG9yLXBvc3RzIC5lbGVtZW50b3ItcG9zdHMtLXNraW4tY2FyZHM6bm90KC5lbGVtZW50b3ItcG9zdHMtbWFzb25yeSkgLmVsZW1lbnRvci1wb3N0X19tZXRhLWRhdGEgewogICAgbWFyZ2luLXRvcDogYXV0bwp9CgouZWxlbWVudG9yLXBvc3RzLS10aHVtYm5haWwtbm9uZSAuZWxlbWVudG9yLXBvc3RfX2NhcmQgLmVsZW1lbnRvci1wb3N0X19hdmF0YXIgewogICAgcGFkZGluZy10b3A6IDA7CiAgICBwb3NpdGlvbjogc3RhdGljOwogICAgaGVpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3ItcG9zdHMtLXRodW1ibmFpbC1ub25lIC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX2F2YXRhciBpbWcuYXZhdGFyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b20KfQoKLmVsZW1lbnRvci1wb3N0cy0tc2hvdy1hdmF0YXIgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgbWFyZ2luLWJvdHRvbTogMjVweAp9CgouZWxlbWVudG9yLXBvc3RzX19ob3Zlci1ncmFkaWVudCAuZWxlbWVudG9yLXBvc3RfX2NhcmQgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbms6YWZ0ZXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb250ZW50OiAiIjsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChib3R0b20sIHJnYmEoMCwgMCwgMCwgLjM1KSAwLCB0cmFuc3BhcmVudCA3NSUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShyZ2JhKDAsIDAsIDAsIC4zNSkpLCBjb2xvci1zdG9wKDc1JSwgdHJhbnNwYXJlbnQpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDAsIDAsIDAsIC4zNSksIHRyYW5zcGFyZW50IDc1JSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjNzIGVhc2Utb3V0OwogICAgLW8tdHJhbnNpdGlvbjogYWxsIC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZS1vdXQKfQoKLmVsZW1lbnRvci1wb3N0c19faG92ZXItZ3JhZGllbnQgLmVsZW1lbnRvci1wb3N0X19jYXJkOmhvdmVyIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsX19saW5rOmFmdGVyIHsKICAgIG9wYWNpdHk6IC41Cn0KCi5lbGVtZW50b3ItcG9zdHNfX2hvdmVyLXpvb20taW4gLmVsZW1lbnRvci1wb3N0X19jYXJkIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsLmVsZW1lbnRvci1maXQtaGVpZ2h0IGltZyB7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci1wb3N0c19faG92ZXItem9vbS1pbiAuZWxlbWVudG9yLXBvc3RfX2NhcmQgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWw6bm90KC5lbGVtZW50b3ItZml0LWhlaWdodCkgaW1nIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxcHgpCn0KCi5lbGVtZW50b3ItcG9zdHNfX2hvdmVyLXpvb20taW4gLmVsZW1lbnRvci1wb3N0X19jYXJkOmhvdmVyIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsLmVsZW1lbnRvci1maXQtaGVpZ2h0IGltZyB7CiAgICBoZWlnaHQ6IDExNSUKfQoKLmVsZW1lbnRvci1wb3N0c19faG92ZXItem9vbS1pbiAuZWxlbWVudG9yLXBvc3RfX2NhcmQ6aG92ZXIgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWw6bm90KC5lbGVtZW50b3ItZml0LWhlaWdodCkgaW1nIHsKICAgIHdpZHRoOiAxMTUlCn0KCi5lbGVtZW50b3ItcG9zdHNfX2hvdmVyLXpvb20tb3V0IC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbC5lbGVtZW50b3ItZml0LWhlaWdodCBpbWcgewogICAgaGVpZ2h0OiAxMTUlCn0KCi5lbGVtZW50b3ItcG9zdHNfX2hvdmVyLXpvb20tb3V0IC5lbGVtZW50b3ItcG9zdF9fY2FyZCAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbDpub3QoLmVsZW1lbnRvci1maXQtaGVpZ2h0KSBpbWcgewogICAgd2lkdGg6IDExNSUKfQoKLmVsZW1lbnRvci1wb3N0c19faG92ZXItem9vbS1vdXQgLmVsZW1lbnRvci1wb3N0X19jYXJkOmhvdmVyIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsLmVsZW1lbnRvci1maXQtaGVpZ2h0IGltZyB7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci1wb3N0c19faG92ZXItem9vbS1vdXQgLmVsZW1lbnRvci1wb3N0X19jYXJkOmhvdmVyIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsOm5vdCguZWxlbWVudG9yLWZpdC1oZWlnaHQpIGltZyB7CiAgICB3aWR0aDogY2FsYygxMDAlICsgMXB4KQp9CgouZWxlbWVudG9yLXBvc3RzX19ob3Zlci16b29tLWluIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsIGltZywKLmVsZW1lbnRvci1wb3N0c19faG92ZXItem9vbS1vdXQgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWwgaW1nIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogaGVpZ2h0IDFzIGN1YmljLWJlemllcigwLCAuMjUsIC4wNywgMSksIHdpZHRoIDFzIGN1YmljLWJlemllcigwLCAuMjUsIC4wNywgMSksIC13ZWJraXQtZmlsdGVyIC4zczsKICAgIHRyYW5zaXRpb246IGhlaWdodCAxcyBjdWJpYy1iZXppZXIoMCwgLjI1LCAuMDcsIDEpLCB3aWR0aCAxcyBjdWJpYy1iZXppZXIoMCwgLjI1LCAuMDcsIDEpLCAtd2Via2l0LWZpbHRlciAuM3M7CiAgICAtby10cmFuc2l0aW9uOiBmaWx0ZXIgLjNzLCBoZWlnaHQgMXMgY3ViaWMtYmV6aWVyKDAsIC4yNSwgLjA3LCAxKSwgd2lkdGggMXMgY3ViaWMtYmV6aWVyKDAsIC4yNSwgLjA3LCAxKTsKICAgIHRyYW5zaXRpb246IGZpbHRlciAuM3MsIGhlaWdodCAxcyBjdWJpYy1iZXppZXIoMCwgLjI1LCAuMDcsIDEpLCB3aWR0aCAxcyBjdWJpYy1iZXppZXIoMCwgLjI1LCAuMDcsIDEpOwogICAgdHJhbnNpdGlvbjogZmlsdGVyIC4zcywgaGVpZ2h0IDFzIGN1YmljLWJlemllcigwLCAuMjUsIC4wNywgMSksIHdpZHRoIDFzIGN1YmljLWJlemllcigwLCAuMjUsIC4wNywgMSksIC13ZWJraXQtZmlsdGVyIC4zcwp9CgouZWxlbWVudG9yLWNhcmQtc2hhZG93LXllcyAuZWxlbWVudG9yLXBvc3RfX2NhcmQgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMTBweCAwIHJnYmEoMCwgMCwgMCwgLjE1KTsKICAgIGJveC1zaGFkb3c6IDAgMCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAuMTUpCn0KCi5lbGVtZW50b3ItY2FyZC1zaGFkb3cteWVzIC5lbGVtZW50b3ItcG9zdF9fY2FyZDpob3ZlciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzMHB4IDAgcmdiYSgwLCAwLCAwLCAuMTUpOwogICAgYm94LXNoYWRvdzogMCAwIDMwcHggMCByZ2JhKDAsIDAsIDAsIC4xNSkKfQoKLmVsZW1lbnRvci1wb3N0cy0tc2tpbi1mdWxsX2NvbnRlbnQgYXJ0aWNsZSB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3ItcG9zdHMtLXNraW4tZnVsbF9jb250ZW50IGFydGljbGUgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWwgewogICAgcGFkZGluZy1ib3R0b206IDAKfQoKYm9keS5lbGVtZW50b3ItZWRpdG9yLWFjdGl2ZSAuZWxlbWVudG9yLXBvc3RzLS1za2luLWFyY2hpdmVfZnVsbF9jb250ZW50LApib2R5LmVsZW1lbnRvci1lZGl0b3ItYWN0aXZlIC5lbGVtZW50b3ItcG9zdHMtLXNraW4tZnVsbF9jb250ZW50IHsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lCn0KCmJvZHkuZWxlbWVudG9yLWVkaXRvci1hY3RpdmUgLmVsZW1lbnRvci1wb3N0cy0tc2tpbi1hcmNoaXZlX2Z1bGxfY29udGVudCAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbF9fbGluaywKYm9keS5lbGVtZW50b3ItZWRpdG9yLWFjdGl2ZSAuZWxlbWVudG9yLXBvc3RzLS1za2luLWZ1bGxfY29udGVudCAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbF9fbGluayB7CiAgICBkaXNwbGF5OiBub25lCn0KCmJvZHkuZWxlbWVudG9yLWVkaXRvci1hY3RpdmUgLmVsZW1lbnRvci1wb3N0cy0tc2hvdy10aHVtYm5haWwgLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmVsZW1lbnRvci1wb3J0Zm9saW9fX2ZpbHRlcnMgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMAp9CgouZWxlbWVudG9yLXBvcnRmb2xpb19fZmlsdGVyIHsKICAgIG1hcmdpbjogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHBhZGRpbmc6IDhweAp9CgouZWxlbWVudG9yLXBvcnRmb2xpby1pdGVtIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0OwogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTsKICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eSwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgIC1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsKICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgbWFyZ2luOiAwCn0KCi5lbGVtZW50b3ItcG9ydGZvbGlvLWl0ZW1fX3RpdGxlIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3ItcG9ydGZvbGlvLWl0ZW1fX3RhZ3NfX3NlcGFyYXRvcjpiZWZvcmUgewogICAgY29udGVudDogIiwgIgp9CgouZWxlbWVudG9yLXBvcnRmb2xpby1pdGVtX19vdmVybGF5IHsKICAgIG9wYWNpdHk6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDFzOwogICAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAxczsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTI5LCAxMzgsIDE0NSwgLjgpCn0KCi5lbGVtZW50b3ItcG9ydGZvbGlvLWl0ZW1fX292ZXJsYXk6aG92ZXIgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAuNXM7CiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IC41czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjVzCn0KCi5lbGVtZW50b3ItcG9ydGZvbGlvLWl0ZW1fX2ltZyBpbWdbc3JjPSIiXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4xKTsKICAgIGhlaWdodDogMTAwJQp9CgouZWxlbWVudG9yLXBvcnRmb2xpby5lbGVtZW50b3ItaGFzLWl0ZW0tcmF0aW8gewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBoZWlnaHQgLjVzOwogICAgLW8tdHJhbnNpdGlvbjogaGVpZ2h0IC41czsKICAgIHRyYW5zaXRpb246IGhlaWdodCAuNXMKfQoKLmVsZW1lbnRvci1wb3J0Zm9saW8uZWxlbWVudG9yLWhhcy1pdGVtLXJhdGlvIC5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpCn0KCi5lbGVtZW50b3ItcG9ydGZvbGlvLmVsZW1lbnRvci1oYXMtaXRlbS1yYXRpbyAuZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbF9fbGluayB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlCn0KCi5lbGVtZW50b3IgdWwgbGkuZWxlbWVudG9yLXBvcnRmb2xpb19fZmlsdGVyIHsKICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzLmxvYWQtbW9yZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmVsZW1lbnRvci13aWRnZXQtcG9zdHMubG9hZC1tb3JlLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzLmxvYWQtbW9yZS1hbGlnbi1zdGFydCAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cy5sb2FkLW1vcmUtYWxpZ24tc3RhcnQgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciB7CiAgICB0ZXh0LWFsaWduOiBzdGFydAp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzLmxvYWQtbW9yZS1hbGlnbi1lbmQgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmVsZW1lbnRvci13aWRnZXQtcG9zdHMubG9hZC1tb3JlLWFsaWduLWVuZCAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIHsKICAgIHRleHQtYWxpZ246IGVuZAp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzLmxvYWQtbW9yZS1hbGlnbi1qdXN0aWZ5IC5lbGVtZW50b3ItYnV0dG9uLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cy5sb2FkLW1vcmUtYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzIC5lLWxvYWQtbW9yZS1zcGlubmVyLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cyAuZS1sb2FkLW1vcmUtc3Bpbm5lciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzIC5lLWxvYWQtbW9yZS1zcGlubmVyIGksCi5lbGVtZW50b3Itd2lkZ2V0LWFyY2hpdmUtcG9zdHMgLmUtbG9hZC1tb3JlLXNwaW5uZXIgc3ZnLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cyAuZS1sb2FkLW1vcmUtc3Bpbm5lciBpLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cyAuZS1sb2FkLW1vcmUtc3Bpbm5lciBzdmcgewogICAgbWFyZ2luOiAwIGF1dG87CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFyY2hpdmUtcG9zdHMgLmUtbG9hZC1tb3JlLXNwaW5uZXIgaSwKLmVsZW1lbnRvci13aWRnZXQtcG9zdHMgLmUtbG9hZC1tb3JlLXNwaW5uZXIgaSB7CiAgICBjb2xvcjogdmFyKC0tbG9hZC1tb3JlLXNwaW5uZXItY29sb3IpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFyY2hpdmUtcG9zdHMgLmUtbG9hZC1tb3JlLXNwaW5uZXIgc3ZnLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cyAuZS1sb2FkLW1vcmUtc3Bpbm5lciBzdmcgewogICAgZmlsbDogdmFyKC0tbG9hZC1tb3JlLXNwaW5uZXItY29sb3IpOwogICAgaGVpZ2h0OiAxZW07CiAgICB3aWR0aDogMWVtCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFyY2hpdmUtcG9zdHMgLmUtbG9hZC1tb3JlLW1lc3NhZ2UsCi5lbGVtZW50b3Itd2lkZ2V0LXBvc3RzIC5lLWxvYWQtbW9yZS1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoLS1sb2FkLW1vcmUtbWVzc2FnZS1jb2xvcik7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1sb2FkLW1vcmUtbWVzc2FnZS1hbGlnbm1lbnQsIGNlbnRlcik7CiAgICBkaXNwbGF5OiBub25lOwogICAgbWFyZ2luLXRvcDogdmFyKC0tbG9hZC1tb3Jlw6LigqzigJ1zcGFjaW5nLCAzMHB4KQp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzLmUtbG9hZC1tb3JlLXBhZ2luYXRpb24tbG9hZGluZywKLmVsZW1lbnRvci13aWRnZXQtcG9zdHMuZS1sb2FkLW1vcmUtcGFnaW5hdGlvbi1sb2FkaW5nIHsKICAgIGN1cnNvcjogZGVmYXVsdAp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzLmUtbG9hZC1tb3JlLXBhZ2luYXRpb24tbG9hZGluZyAuZS1sb2FkLW1vcmUtc3Bpbm5lciwKLmVsZW1lbnRvci13aWRnZXQtcG9zdHMuZS1sb2FkLW1vcmUtcGFnaW5hdGlvbi1sb2FkaW5nIC5lLWxvYWQtbW9yZS1zcGlubmVyIHsKICAgIG1hcmdpbi10b3A6IHZhcigtLWxvYWQtbW9yZcOi4oKs4oCdc3BhY2luZywgMzBweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtYXJjaGl2ZS1wb3N0cy5lLWxvYWQtbW9yZS1wYWdpbmF0aW9uLWxvYWRpbmcgLmUtbG9hZC1tb3JlLXNwaW5uZXIgaSwKLmVsZW1lbnRvci13aWRnZXQtYXJjaGl2ZS1wb3N0cy5lLWxvYWQtbW9yZS1wYWdpbmF0aW9uLWxvYWRpbmcgLmUtbG9hZC1tb3JlLXNwaW5uZXIgc3ZnLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cy5lLWxvYWQtbW9yZS1wYWdpbmF0aW9uLWxvYWRpbmcgLmUtbG9hZC1tb3JlLXNwaW5uZXIgaSwKLmVsZW1lbnRvci13aWRnZXQtcG9zdHMuZS1sb2FkLW1vcmUtcGFnaW5hdGlvbi1sb2FkaW5nIC5lLWxvYWQtbW9yZS1zcGlubmVyIHN2ZyB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC1hcmNoaXZlLXBvc3RzLmUtbG9hZC1tb3JlLXBhZ2luYXRpb24tbG9hZGluZyAuZWxlbWVudG9yLWJ1dHRvbi1jb250ZW50LXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXBvc3RzLmUtbG9hZC1tb3JlLXBhZ2luYXRpb24tbG9hZGluZyAuZWxlbWVudG9yLWJ1dHRvbi1jb250ZW50LXdyYXBwZXIgewogICAgdmlzaWJpbGl0eTogaGlkZGVuCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFyY2hpdmUtcG9zdHMuZS1sb2FkLW1vcmUtcGFnaW5hdGlvbi1lbmQgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmVsZW1lbnRvci13aWRnZXQtcG9zdHMuZS1sb2FkLW1vcmUtcGFnaW5hdGlvbi1lbmQgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFyY2hpdmUtcG9zdHMuZS1sb2FkLW1vcmUtcGFnaW5hdGlvbi1lbmQgLmUtbG9hZC1tb3JlLW1lc3NhZ2UsCi5lbGVtZW50b3Itd2lkZ2V0LXBvc3RzLmUtbG9hZC1tb3JlLXBhZ2luYXRpb24tZW5kIC5lLWxvYWQtbW9yZS1tZXNzYWdlIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFyY2hpdmUtcG9zdHMuZS1sb2FkLW1vcmUtbm8tc3Bpbm5lciAuZWxlbWVudG9yLWJ1dHRvbi1jb250ZW50LXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXBvc3RzLmUtbG9hZC1tb3JlLW5vLXNwaW5uZXIgLmVsZW1lbnRvci1idXR0b24tY29udGVudC13cmFwcGVyIHsKICAgIHZpc2liaWxpdHk6IHZpc2libGUKfQoKLmVsZW1lbnRvci13aWRnZXQtYXJjaGl2ZS1wb3N0cyAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cyAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIHsKICAgIG1hcmdpbi10b3A6IHZhcigtLWxvYWQtbW9yZcOi4oKs4oCdc3BhY2luZywgMzBweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtYXJjaGl2ZS1wb3N0cyAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIC5lLWxvYWQtbW9yZS1zcGlubmVyLAouZWxlbWVudG9yLXdpZGdldC1wb3N0cyAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIC5lLWxvYWQtbW9yZS1zcGlubmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDUwJTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgbWFyZ2luOiBpbmhlcml0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFyY2hpdmUtcG9zdHMgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciAuZWxlbWVudG9yLWJ1dHRvbiwKLmVsZW1lbnRvci13aWRnZXQtcG9zdHMgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci1idXR0b24uZWxlbWVudG9yLWhpZGRlbiwKLmVsZW1lbnRvci1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZQp9CgouZS1mb3JtX19zdGVwIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lLWZvcm1fX3N0ZXA6bm90KC5lbGVtZW50b3ItaGlkZGVuKSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXAKfQoKLmUtZm9ybV9fYnV0dG9ucyB7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgZmxleC13cmFwOiB3cmFwCn0KCi5lLWZvcm1fX2J1dHRvbnMsCi5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXgKfQoKLmUtZm9ybV9faW5kaWNhdG9ycyB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OwogICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvcnMtc3BhY2luZykKfQoKLmUtZm9ybV9faW5kaWNhdG9ycywKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvciB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwogICAgZmxleC1iYXNpczogMDsKICAgIHBhZGRpbmc6IDAgdmFyKC0tZS1mb3JtLXN0ZXBzLWRpdmlkZXItZ2FwKQp9CgouZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3JfX3Byb2dyZXNzIHsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1wcm9ncmVzcy1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3ItcHJvZ3Jlc3MtYm9yZGVyLXJhZGl1cyk7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fcHJvZ3Jlc3NfX21ldGVyIHsKICAgIHdpZHRoOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLXByb2dyZXNzLW1ldGVyLXdpZHRoLCAwKTsKICAgIGhlaWdodDogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1wcm9ncmVzcy1oZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3ItcHJvZ3Jlc3MtaGVpZ2h0KTsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLXByb2dyZXNzLWJvcmRlci1yYWRpdXMpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1wcm9ncmVzcy1jb2xvcik7CiAgICBjb2xvcjogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1wcm9ncmVzcy1tZXRlci1jb2xvcik7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggLjFzIGxpbmVhcjsKICAgIC1vLXRyYW5zaXRpb246IHdpZHRoIC4xcyBsaW5lYXI7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAuMXMgbGluZWFyCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcjpmaXJzdC1jaGlsZCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAKfQoKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yOmxhc3QtY2hpbGQgewogICAgcGFkZGluZy1yaWdodDogMAp9CgouZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3ItLXN0YXRlLWluYWN0aXZlIHsKICAgIGNvbG9yOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLWluYWN0aXZlLXByaW1hcnktY29sb3IsICNjMmNiZDIpCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtaW5hY3RpdmUgW2NsYXNzKj1pbmRpY2F0b3ItLXNoYXBlLV06bm90KC5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc2hhcGUtbm9uZSkgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1pbmFjdGl2ZS1zZWNvbmRhcnktY29sb3IsICNmZmYpCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtaW5hY3RpdmUgb2JqZWN0LAouZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3ItLXN0YXRlLWluYWN0aXZlIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLWluYWN0aXZlLXByaW1hcnktY29sb3IsICNjMmNiZDIpCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtYWN0aXZlIHsKICAgIGNvbG9yOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLWFjdGl2ZS1wcmltYXJ5LWNvbG9yLCAjMzliNTRhKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1hY3RpdmUtc2Vjb25kYXJ5LWNvbG9yLCAjZmZmKQp9CgouZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3ItLXN0YXRlLWFjdGl2ZSBbY2xhc3MqPWluZGljYXRvci0tc2hhcGUtXTpub3QoLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yLS1zaGFwZS1ub25lKSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLWFjdGl2ZS1zZWNvbmRhcnktY29sb3IsICNmZmYpCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtYWN0aXZlIG9iamVjdCwKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yLS1zdGF0ZS1hY3RpdmUgc3ZnIHsKICAgIGZpbGw6IHZhcigtLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3ItYWN0aXZlLXByaW1hcnktY29sb3IsICMzOWI1NGEpCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtY29tcGxldGVkIHsKICAgIGNvbG9yOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLWNvbXBsZXRlZC1zZWNvbmRhcnktY29sb3IsICNmZmYpCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtY29tcGxldGVkIFtjbGFzcyo9aW5kaWNhdG9yLS1zaGFwZS1dOm5vdCguZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3ItLXNoYXBlLW5vbmUpIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3ItY29tcGxldGVkLXByaW1hcnktY29sb3IsICMzOWI1NGEpCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtY29tcGxldGVkIC5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fbGFiZWwgewogICAgY29sb3I6IHZhcigtLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3ItY29tcGxldGVkLXByaW1hcnktY29sb3IsICMzOWI1NGEpCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtY29tcGxldGVkIC5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc2hhcGUtbm9uZSB7CiAgICBjb2xvcjogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1jb21wbGV0ZWQtcHJpbWFyeS1jb2xvciwgIzM5YjU0YSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtY29tcGxldGVkIG9iamVjdCwKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yLS1zdGF0ZS1jb21wbGV0ZWQgc3ZnIHsKICAgIGZpbGw6IHZhcigtLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3ItY29tcGxldGVkLXNlY29uZGFyeS1jb2xvciwgI2ZmZikKfQoKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yX19pY29uIHsKICAgIHdpZHRoOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLXBhZGRpbmcsIDMwcHgpOwogICAgaGVpZ2h0OiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLXBhZGRpbmcsIDMwcHgpOwogICAgZm9udC1zaXplOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLWljb24tc2l6ZSk7CiAgICBib3JkZXItd2lkdGg6IDFweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIG1hcmdpbi1ib3R0b206IDEwcHgKfQoKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yX19pY29uIGltZywKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yX19pY29uIG9iamVjdCwKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yX19pY29uIHN2ZyB7CiAgICB3aWR0aDogdmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1pY29uLXNpemUpOwogICAgaGVpZ2h0OiBhdXRvCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9faWNvbiAuZS1mb250LWljb24tc3ZnIHsKICAgIGhlaWdodDogMWVtCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fbnVtYmVyIHsKICAgIHdpZHRoOiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLXBhZGRpbmcsIDMwcHgpOwogICAgaGVpZ2h0OiB2YXIoLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLXBhZGRpbmcsIDMwcHgpOwogICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDEwcHgKfQoKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yLS1zaGFwZS1jaXJjbGUgewogICAgYm9yZGVyLXJhZGl1czogNTAlCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc2hhcGUtc3F1YXJlIHsKICAgIGJvcmRlci1yYWRpdXM6IDAKfQoKLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yLS1zaGFwZS1yb3VuZGVkIHsKICAgIGJvcmRlci1yYWRpdXM6IDVweAp9CgouZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3ItLXNoYXBlLW5vbmUgewogICAgYm9yZGVyOiAwCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fbGFiZWwgewogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fc2VwYXJhdG9yIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiB2YXIoLS1lLWZvcm0tc3RlcHMtZGl2aWRlci13aWR0aCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzJjYmQyCn0KCi5lLWZvcm1fX2luZGljYXRvcnMtLXR5cGUtaWNvbiwKLmUtZm9ybV9faW5kaWNhdG9ycy0tdHlwZS1pY29uX3RleHQsCi5lLWZvcm1fX2luZGljYXRvcnMtLXR5cGUtbnVtYmVyLAouZS1mb3JtX19pbmRpY2F0b3JzLS10eXBlLW51bWJlcl90ZXh0IHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDsKICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Cn0KCi5lLWZvcm1fX2luZGljYXRvcnMtLXR5cGUtaWNvbiAuZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3JfX3NlcGFyYXRvciwKLmUtZm9ybV9faW5kaWNhdG9ycy0tdHlwZS1pY29uX3RleHQgLmUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yX19zZXBhcmF0b3IsCi5lLWZvcm1fX2luZGljYXRvcnMtLXR5cGUtbnVtYmVyIC5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fc2VwYXJhdG9yLAouZS1mb3JtX19pbmRpY2F0b3JzLS10eXBlLW51bWJlcl90ZXh0IC5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fc2VwYXJhdG9yIHsKICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1wYWRkaW5nLCAzMHB4KSAvIDIgLSB2YXIoLS1lLWZvcm0tc3RlcHMtZGl2aWRlci13aWR0aCwgMXB4KSAvIDIpCn0KCi5lbGVtZW50b3ItZmllbGQtdHlwZS1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLWZpZWxkLXR5cGUtaHRtbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKLmVsZW1lbnRvci1sb2dpbiAuZWxlbWVudG9yLWxvc3QtcGFzc3dvcmQsCi5lbGVtZW50b3ItbG9naW4gLmVsZW1lbnRvci1yZW1lbWJlci1tZSB7CiAgICBmb250LXNpemU6IC44NWVtCn0KCi5lbGVtZW50b3ItZmllbGQtdHlwZS1yZWNhcHRjaGFfdjMgLmVsZW1lbnRvci1maWVsZC1sYWJlbCB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3ItZmllbGQtdHlwZS1yZWNhcHRjaGFfdjMgLmdyZWNhcHRjaGEtYmFkZ2UgewogICAgei1pbmRleDogMQp9CgouZWxlbWVudG9yLWJ1dHRvbiAuZWxlbWVudG9yLWZvcm0tc3Bpbm5lciB7CiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0OwogICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICBvcmRlcjogMwp9CgouZWxlbWVudG9yLWZvcm0gLmVsZW1lbnRvci1idXR0b24+c3BhbiB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyCn0KCi5lbGVtZW50b3ItZm9ybSAuZWxlbWVudG9yLWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbi10ZXh0IHsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICAtd2Via2l0LWJveC1mbGV4OiAwOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDA7CiAgICBmbGV4LWdyb3c6IDAKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uIHN2ZyB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uIC5lLWZvbnQtaWNvbi1zdmcgewogICAgaGVpZ2h0OiAxZW0KfQoKLmVsZW1lbnRvci13aWRnZXQtcHJpY2UtbGlzdCAuZWxlbWVudG9yLXByaWNlLWxpc3QgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtcHJpY2UtbGlzdCAuZWxlbWVudG9yLXByaWNlLWxpc3QgbGkgewogICAgbWFyZ2luOiAwCn0KCi5lbGVtZW50b3ItcHJpY2UtbGlzdCBsaTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHgKfQoKLmVsZW1lbnRvci1wcmljZS1saXN0IC5lbGVtZW50b3ItcHJpY2UtbGlzdC1pbWFnZSB7CiAgICBtYXgtd2lkdGg6IDUwJTsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgZmxleC1zaHJpbms6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNXB4Cn0KCi5lbGVtZW50b3ItcHJpY2UtbGlzdCAuZWxlbWVudG9yLXByaWNlLWxpc3QtaW1hZ2UgaW1nIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItcHJpY2UtbGlzdCAuZWxlbWVudG9yLXByaWNlLWxpc3QtaGVhZGVyLAouZWxlbWVudG9yLXByaWNlLWxpc3QgLmVsZW1lbnRvci1wcmljZS1saXN0LWl0ZW0sCi5lbGVtZW50b3ItcHJpY2UtbGlzdCAuZWxlbWVudG9yLXByaWNlLWxpc3QtdGV4dCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXByaWNlLWxpc3QgLmVsZW1lbnRvci1wcmljZS1saXN0LWl0ZW0gewogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OwogICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQKfQoKLmVsZW1lbnRvci1wcmljZS1saXN0IC5lbGVtZW50b3ItcHJpY2UtbGlzdC1pdGVtIC5lbGVtZW50b3ItcHJpY2UtbGlzdC10ZXh0IHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDsKICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMQp9CgouZWxlbWVudG9yLXByaWNlLWxpc3QgLmVsZW1lbnRvci1wcmljZS1saXN0LWl0ZW0gLmVsZW1lbnRvci1wcmljZS1saXN0LWhlYWRlciB7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgIGZsZXgtYmFzaXM6IDEwMCU7CiAgICBmb250LXNpemU6IDE5cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7CiAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuCn0KCi5lbGVtZW50b3ItcHJpY2UtbGlzdCAuZWxlbWVudG9yLXByaWNlLWxpc3QtaXRlbSAuZWxlbWVudG9yLXByaWNlLWxpc3QtdGl0bGUgewogICAgbWF4LXdpZHRoOiA4MCUKfQoKLmVsZW1lbnRvci1wcmljZS1saXN0IC5lbGVtZW50b3ItcHJpY2UtbGlzdC1pdGVtIC5lbGVtZW50b3ItcHJpY2UtbGlzdC1wcmljZSB7CiAgICBmb250LXdlaWdodDogNjAwCn0KCi5lbGVtZW50b3ItcHJpY2UtbGlzdCAuZWxlbWVudG9yLXByaWNlLWxpc3QtaXRlbSBwLmVsZW1lbnRvci1wcmljZS1saXN0LWRlc2NyaXB0aW9uIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwogICAgZmxleC1iYXNpczogMTAwJTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbjogMAp9CgouZWxlbWVudG9yLXByaWNlLWxpc3QgLmVsZW1lbnRvci1wcmljZS1saXN0LWl0ZW0gLmVsZW1lbnRvci1wcmljZS1saXN0LXNlcGFyYXRvciB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDE7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IGRvdHRlZDsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDsKICAgIGhlaWdodDogMAp9CgouZWxlbWVudG9yLXByaWNlLXRhYmxlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXByaWNlLXRhYmxlIC5lbGVtZW50b3ItcHJpY2UtdGFibGVfX2hlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1lLXByaWNlLXRhYmxlLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yLCAjNTU1KTsKICAgIHBhZGRpbmc6IDIwcHggMAp9CgouZWxlbWVudG9yLXByaWNlLXRhYmxlIC5lbGVtZW50b3ItcHJpY2UtdGFibGVfX2hlYWRpbmcgewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICBmb250LXNpemU6IDI0cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmYKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19zdWJoZWFkaW5nIHsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLXByaWNlLXRhYmxlIC5lbGVtZW50b3ItcHJpY2UtdGFibGVfX29yaWdpbmFsLXByaWNlIHsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogICAgZm9udC1zaXplOiAuNWVtOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyOwogICAgYWxpZ24tc2VsZjogY2VudGVyCn0KCi5lbGVtZW50b3ItcHJpY2UtdGFibGUgLmVsZW1lbnRvci1wcmljZS10YWJsZV9fb3JpZ2luYWwtcHJpY2UgLmVsZW1lbnRvci1wcmljZS10YWJsZV9fY3VycmVuY3kgewogICAgZm9udC1zaXplOiAxZW07CiAgICBtYXJnaW46IDAKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19wcmljZSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgY29sb3I6ICM1NTU7CiAgICBmb250LXdlaWdodDogODAwOwogICAgZm9udC1zaXplOiA2NXB4OwogICAgcGFkZGluZzogNDBweCAwCn0KCi5lbGVtZW50b3ItcHJpY2UtdGFibGUgLmVsZW1lbnRvci1wcmljZS10YWJsZV9fcHJpY2UgLmVsZW1lbnRvci10eXBvLWV4Y2x1ZGVkIHsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiBtZWRpdW07CiAgICBmb250LXN0eWxlOiBub3JtYWwKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19hZnRlci1wcmljZSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7CiAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbgp9CgouZWxlbWVudG9yLXByaWNlLXRhYmxlIC5lbGVtZW50b3ItcHJpY2UtdGFibGVfX2ludGVnZXItcGFydCB7CiAgICBsaW5lLWhlaWdodDogLjgKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19jdXJyZW5jeSwKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19mcmFjdGlvbmFsLXBhcnQgewogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBmb250LXNpemU6IC4zZW0KfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19jdXJyZW5jeSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNweAp9CgouZWxlbWVudG9yLXByaWNlLXRhYmxlIC5lbGVtZW50b3ItcHJpY2UtdGFibGVfX3BlcmlvZCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19mZWF0dXJlcy1saXN0IHsKICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGNvbG9yOiB2YXIoLS1lLXByaWNlLXRhYmxlLWZlYXR1cmVzLWxpc3QtY29sb3IpCn0KCi5lbGVtZW50b3ItcHJpY2UtdGFibGUgLmVsZW1lbnRvci1wcmljZS10YWJsZV9fZmVhdHVyZXMtbGlzdCBsaSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDAKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19mZWF0dXJlcy1saXN0IGxpIC5lbGVtZW50b3ItcHJpY2UtdGFibGVfX2ZlYXR1cmUtaW5uZXIgewogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHgKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19mZWF0dXJlcy1saXN0IGxpOm5vdCg6Zmlyc3QtY2hpbGQpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYm9yZGVyOiAwIHNvbGlkIGhzbGEoMCwgMCUsIDQ3LjglLCAuMyk7CiAgICBtYXJnaW46IDEwcHggMTIuNSUKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19mZWF0dXJlcy1saXN0IGkgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgZm9udC1zaXplOiAxLjNlbQp9CgouZWxlbWVudG9yLXByaWNlLXRhYmxlIC5lbGVtZW50b3ItcHJpY2UtdGFibGVfX2ZlYXR1cmVzLWxpc3Qgc3ZnIHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIGZpbGw6IHZhcigtLWUtcHJpY2UtdGFibGUtZmVhdHVyZXMtbGlzdC1jb2xvcik7CiAgICBoZWlnaHQ6IDEuM2VtOwogICAgd2lkdGg6IDEuM2VtCn0KCi5lbGVtZW50b3ItcHJpY2UtdGFibGUgLmVsZW1lbnRvci1wcmljZS10YWJsZV9fZmVhdHVyZXMtbGlzdCBzdmd+KiB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZSAuZWxlbWVudG9yLXByaWNlLXRhYmxlX19mb290ZXIgewogICAgcGFkZGluZzogMzBweCAwCn0KCi5lbGVtZW50b3ItcHJpY2UtdGFibGUgLmVsZW1lbnRvci1wcmljZS10YWJsZV9fYWRkaXRpb25hbF9pbmZvIHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjQKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZV9fcmliYm9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIHdpZHRoOiAxNTBweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBoZWlnaHQ6IDE1MHB4Cn0KCi5lbGVtZW50b3ItcHJpY2UtdGFibGVfX3JpYmJvbi1pbm5lciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDIwMCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVgoMzVweCkgcm90YXRlKC00NWRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWCgzNXB4KSByb3RhdGUoLTQ1ZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVgoMzVweCkgcm90YXRlKC00NWRlZyk7CiAgICBtYXJnaW4tdG9wOiAzNXB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgbGluZS1oZWlnaHQ6IDI7CiAgICBmb250LXdlaWdodDogODAwOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGJhY2tncm91bmQ6ICMwMDAKfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZV9fcmliYm9uLmVsZW1lbnRvci1yaWJib24tbGVmdCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IGF1dG8KfQoKLmVsZW1lbnRvci1wcmljZS10YWJsZV9fcmliYm9uLmVsZW1lbnRvci1yaWJib24tcmlnaHQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXByaWNlLXRhYmxlIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNwp9CgouZWxlbWVudG9yLWZsaXAtYm94IHsKICAgIGhlaWdodDogMjgwcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAxMDAwcHg7CiAgICBwZXJzcGVjdGl2ZTogMTAwMHB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOwogICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZAp9CgpAbWVkaWEgKG1heC1kZXZpY2Utd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLWZsaXAtYm94IHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXIKICAgIH0KfQoKLmVsZW1lbnRvci1mbGlwLWJveF9fZnJvbnQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFhYmM5Ywp9CgouZWxlbWVudG9yLWZsaXAtYm94X19iYWNrIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0MDU0YjI7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLWZsaXAtYm94X19sYXllciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC42cyBlYXNlLWluLW91dDsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAuNnMgZWFzZS1pbi1vdXQ7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjZzIGVhc2UtaW4tb3V0Cn0KCi5lbGVtZW50b3ItZmxpcC1ib3hfX2xheWVyX19vdmVybGF5IHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOwogICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDM1cHg7CiAgICBjb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLWZsaXAtYm94X19sYXllcl9fdGl0bGUgewogICAgZm9udC1zaXplOiAyMXB4Cn0KCi5lbGVtZW50b3ItZmxpcC1ib3hfX2xheWVyX19kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLmVsZW1lbnRvci1mbGlwLWJveF9fbGF5ZXJfX2Rlc2NyaXB0aW9uOm5vdCg6bGFzdC1jaGlsZCksCi5lbGVtZW50b3ItZmxpcC1ib3hfX2xheWVyX190aXRsZTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIG1hcmdpbjogMCAwIDIwcHg7CiAgICBwYWRkaW5nOiAwCn0KCi5lbGVtZW50b3ItZmxpcC1ib3hfX2xheWVyX190aXRsZSB7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGZvbnQtd2VpZ2h0OiA2MDAKfQoKLmVsZW1lbnRvci1mbGlwLWJveCwKLmVsZW1lbnRvci1mbGlwLWJveCAuZWxlbWVudG9yLXZpZXctZnJhbWVkLAouZWxlbWVudG9yLWZsaXAtYm94IC5lbGVtZW50b3Itdmlldy1zdGFja2VkIHsKICAgIC0tZS1mbGlwLWJveC12aWV3LWZyYW1lZC1zdGFja2VkLWljb24tY29sb3I6ICNmZmYKfQoKLmVsZW1lbnRvci1mbGlwLWJveCAuZWxlbWVudG9yLWljb24sCi5lbGVtZW50b3ItZmxpcC1ib3ggLmVsZW1lbnRvci12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWljb24sCi5lbGVtZW50b3ItZmxpcC1ib3ggLmVsZW1lbnRvci12aWV3LXN0YWNrZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIGNvbG9yOiB2YXIoLS1lLWZsaXAtYm94LXZpZXctZnJhbWVkLXN0YWNrZWQtaWNvbi1jb2xvcikKfQoKLmVsZW1lbnRvci1mbGlwLWJveCAuZWxlbWVudG9yLWljb24gc3ZnLAouZWxlbWVudG9yLWZsaXAtYm94IC5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uIHN2ZywKLmVsZW1lbnRvci1mbGlwLWJveCAuZWxlbWVudG9yLXZpZXctc3RhY2tlZCAuZWxlbWVudG9yLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhcigtLWUtZmxpcC1ib3gtdmlldy1mcmFtZWQtc3RhY2tlZC1pY29uLWNvbG9yKQp9CgouZWxlbWVudG9yLWZsaXAtYm94IC5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIGJvcmRlci1jb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLWZsaXAtYm94IC5lbGVtZW50b3Itdmlldy1zdGFja2VkIC5lbGVtZW50b3ItaWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC41KQp9CgouZWxlbWVudG9yLWZsaXAtYm94X19idXR0b24uZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIGJvcmRlcjogMnB4IHNvbGlkICNmZmY7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLWZsaXAtYm94X19idXR0b24uZWxlbWVudG9yLWJ1dHRvbjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9CgouZWxlbWVudG9yLWZsaXAtYm94X19pbWFnZSB7CiAgICBtYXJnaW46IDAgMCAyMHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci1mbGlwLWJveF9faW1hZ2UgaW1nIHsKICAgIHdpZHRoOiA1MCUKfQoKLmVsZW1lbnRvci1mbGlwLWJveCAuZWxlbWVudG9yLWljb24td3JhcHBlciB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Cn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLTNkIC5lbGVtZW50b3ItZmxpcC1ib3hfX2xheWVyX19pbm5lciB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWig5MHB4KSBzY2FsZSguOTEpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDkwcHgpIHNjYWxlKC45MSkKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tM2QgLmVsZW1lbnRvci1mbGlwLWJveF9fbGF5ZXJfX292ZXJsYXkgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOwogICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC4xcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC4xcHgpCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1mbGlwIC5lbGVtZW50b3ItZmxpcC1ib3ggewogICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogMTAwMHB4OwogICAgcGVyc3BlY3RpdmU6IDEwMDBweDsKICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsKICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LWZsaXAgLmVsZW1lbnRvci1mbGlwLWJveF9fbGF5ZXIgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOwogICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1mbGlwIC5lbGVtZW50b3ItZmxpcC1ib3hfX2Zyb250IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lOwogICAgLW1zLXRyYW5zZm9ybTogbm9uZTsKICAgIHRyYW5zZm9ybTogbm9uZTsKICAgIHotaW5kZXg6IDEKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LWZsaXAgLmVsZW1lbnRvci1mbGlwLWJveDpob3ZlciAuZWxlbWVudG9yLWZsaXAtYm94X19iYWNrIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lOwogICAgLW1zLXRyYW5zZm9ybTogbm9uZTsKICAgIHRyYW5zZm9ybTogbm9uZQp9CgouZWxlbWVudG9yLWZsaXAtYm94LS1lZmZlY3QtZmxpcC5lbGVtZW50b3ItZmxpcC1ib3gtLWRpcmVjdGlvbi1yaWdodCAuZWxlbWVudG9yLWZsaXAtYm94X19iYWNrIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDApIHJvdGF0ZVkoLTE4MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMCkgcm90YXRlWSgtMTgwZGVnKQp9CgouZWxlbWVudG9yLWZsaXAtYm94LS1lZmZlY3QtZmxpcC5lbGVtZW50b3ItZmxpcC1ib3gtLWRpcmVjdGlvbi1sZWZ0IC5lbGVtZW50b3ItZmxpcC1ib3hfX2JhY2ssCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1mbGlwLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLXJpZ2h0IC5lbGVtZW50b3ItZmxpcC1ib3g6aG92ZXIgLmVsZW1lbnRvci1mbGlwLWJveF9fZnJvbnQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMCkgcm90YXRlWSgxODBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGVYKDApIHJvdGF0ZVkoMTgwZGVnKQp9CgouZWxlbWVudG9yLWZsaXAtYm94LS1lZmZlY3QtZmxpcC5lbGVtZW50b3ItZmxpcC1ib3gtLWRpcmVjdGlvbi1sZWZ0IC5lbGVtZW50b3ItZmxpcC1ib3g6aG92ZXIgLmVsZW1lbnRvci1mbGlwLWJveF9fZnJvbnQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMCkgcm90YXRlWSgtMTgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgwKSByb3RhdGVZKC0xODBkZWcpCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1mbGlwLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLXVwIC5lbGVtZW50b3ItZmxpcC1ib3hfX2JhY2sgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoLTE4MGRlZykgcm90YXRlWSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgtMTgwZGVnKSByb3RhdGVZKDApCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1mbGlwLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLWRvd24gLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjaywKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LWZsaXAuZWxlbWVudG9yLWZsaXAtYm94LS1kaXJlY3Rpb24tdXAgLmVsZW1lbnRvci1mbGlwLWJveDpob3ZlciAuZWxlbWVudG9yLWZsaXAtYm94X19mcm9udCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGVZKDApCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1mbGlwLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLWRvd24gLmVsZW1lbnRvci1mbGlwLWJveDpob3ZlciAuZWxlbWVudG9yLWZsaXAtYm94X19mcm9udCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgtMTgwZGVnKSByb3RhdGVZKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGVYKC0xODBkZWcpIHJvdGF0ZVkoMCkKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXB1c2ggLmVsZW1lbnRvci1mbGlwLWJveF9fZnJvbnQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAtbXMtdHJhbnNmb3JtOiBub25lOwogICAgdHJhbnNmb3JtOiBub25lCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1wdXNoLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLXJpZ2h0IC5lbGVtZW50b3ItZmxpcC1ib3g6aG92ZXIgLmVsZW1lbnRvci1mbGlwLWJveF9fZnJvbnQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkgdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkgdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKSB0cmFuc2xhdGVZKDApCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1wdXNoLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLWxlZnQgLmVsZW1lbnRvci1mbGlwLWJveDpob3ZlciAuZWxlbWVudG9yLWZsaXAtYm94X19mcm9udCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSkgdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpIHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpIHRyYW5zbGF0ZVkoMCkKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXB1c2guZWxlbWVudG9yLWZsaXAtYm94LS1kaXJlY3Rpb24tdXAgLmVsZW1lbnRvci1mbGlwLWJveDpob3ZlciAuZWxlbWVudG9yLWZsaXAtYm94X19mcm9udCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKC0xMDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgtMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgtMTAwJSkKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXB1c2guZWxlbWVudG9yLWZsaXAtYm94LS1kaXJlY3Rpb24tZG93biAuZWxlbWVudG9yLWZsaXAtYm94OmhvdmVyIC5lbGVtZW50b3ItZmxpcC1ib3hfX2Zyb250IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVkoMTAwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVkoMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgxMDAlKQp9CgouZWxlbWVudG9yLWZsaXAtYm94LS1lZmZlY3QtcHVzaCAuZWxlbWVudG9yLWZsaXAtYm94LAouZWxlbWVudG9yLWZsaXAtYm94LS1lZmZlY3Qtc2xpZGUgLmVsZW1lbnRvci1mbGlwLWJveCB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1wdXNoIC5lbGVtZW50b3ItZmxpcC1ib3g6aG92ZXIgLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjaywKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXNsaWRlIC5lbGVtZW50b3ItZmxpcC1ib3g6aG92ZXIgLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjayB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgIC1tcy10cmFuc2Zvcm06IG5vbmU7CiAgICB0cmFuc2Zvcm06IG5vbmUKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXB1c2guZWxlbWVudG9yLWZsaXAtYm94LS1kaXJlY3Rpb24tcmlnaHQgLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjaywKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXNsaWRlLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLXJpZ2h0IC5lbGVtZW50b3ItZmxpcC1ib3hfX2JhY2sgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpIHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKSB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKSB0cmFuc2xhdGVZKDApCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1wdXNoLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLWxlZnQgLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjaywKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXNsaWRlLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLWxlZnQgLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjayB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKSB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKSB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHRyYW5zbGF0ZVkoMCkKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXB1c2guZWxlbWVudG9yLWZsaXAtYm94LS1kaXJlY3Rpb24tdXAgLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjaywKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXNsaWRlLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLXVwIC5lbGVtZW50b3ItZmxpcC1ib3hfX2JhY2sgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgxMDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgxMDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDEwMCUpCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC1wdXNoLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLWRvd24gLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjaywKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXNsaWRlLmVsZW1lbnRvci1mbGlwLWJveC0tZGlyZWN0aW9uLWRvd24gLmVsZW1lbnRvci1mbGlwLWJveF9fYmFjayB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKC0xMDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgtMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgtMTAwJSkKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXpvb20tb3V0IC5lbGVtZW50b3ItZmxpcC1ib3ggLmVsZW1lbnRvci1mbGlwLWJveF9fZnJvbnQgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4zNXMsIHdpZHRoIC4xbXMsIC13ZWJraXQtdHJhbnNmb3JtIC43czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjM1cywgd2lkdGggLjFtcywgLXdlYmtpdC10cmFuc2Zvcm0gLjdzOwogICAgLW8tdHJhbnNpdGlvbjogdHJhbnNmb3JtIC43cywgb3BhY2l0eSAuMzVzLCB3aWR0aCAuMW1zOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC43cywgb3BhY2l0eSAuMzVzLCB3aWR0aCAuMW1zOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC43cywgb3BhY2l0eSAuMzVzLCB3aWR0aCAuMW1zLCAtd2Via2l0LXRyYW5zZm9ybSAuN3M7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgei1pbmRleDogMTsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItZmxpcC1ib3gtLWVmZmVjdC16b29tLW91dCAuZWxlbWVudG9yLWZsaXAtYm94OmhvdmVyIC5lbGVtZW50b3ItZmxpcC1ib3hfX2Zyb250IHsKICAgIHdpZHRoOiAwOwogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguNyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguNyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC43KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAuN3MgLjFzLCB3aWR0aCAuMW1zIC43cywgLXdlYmtpdC10cmFuc2Zvcm0gLjhzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuN3MgLjFzLCB3aWR0aCAuMW1zIC43cywgLXdlYmtpdC10cmFuc2Zvcm0gLjhzOwogICAgLW8tdHJhbnNpdGlvbjogdHJhbnNmb3JtIC44cywgb3BhY2l0eSAuN3MgLjFzLCB3aWR0aCAuMW1zIC43czsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuOHMsIG9wYWNpdHkgLjdzIC4xcywgd2lkdGggLjFtcyAuN3M7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjhzLCBvcGFjaXR5IC43cyAuMXMsIHdpZHRoIC4xbXMgLjdzLCAtd2Via2l0LXRyYW5zZm9ybSAuOHMKfQoKLmVsZW1lbnRvci1mbGlwLWJveC0tZWZmZWN0LXpvb20taW4gLmVsZW1lbnRvci1mbGlwLWJveCAuZWxlbWVudG9yLWZsaXAtYm94X19iYWNrIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAuNXMgLjJzLCAtd2Via2l0LXRyYW5zZm9ybSAuN3M7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC41cyAuMnMsIC13ZWJraXQtdHJhbnNmb3JtIC43czsKICAgIC1vLXRyYW5zaXRpb246IHRyYW5zZm9ybSAuN3MsIG9wYWNpdHkgLjVzIC4yczsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuN3MsIG9wYWNpdHkgLjVzIC4yczsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuN3MsIG9wYWNpdHkgLjVzIC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gLjdzOwogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguNyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguNyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC43KQp9CgouZWxlbWVudG9yLWZsaXAtYm94LS1lZmZlY3Qtem9vbS1pbiAuZWxlbWVudG9yLWZsaXAtYm94OmhvdmVyIC5lbGVtZW50b3ItZmxpcC1ib3hfX2JhY2sgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC41cywgLXdlYmtpdC10cmFuc2Zvcm0gLjdzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuNXMsIC13ZWJraXQtdHJhbnNmb3JtIC43czsKICAgIC1vLXRyYW5zaXRpb246IHRyYW5zZm9ybSAuN3MsIG9wYWNpdHkgLjVzOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC43cywgb3BhY2l0eSAuNXM7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjdzLCBvcGFjaXR5IC41cywgLXdlYmtpdC10cmFuc2Zvcm0gLjdzOwogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKQp9CgouZWxlbWVudG9yLWZsaXAtYm94LS1lZmZlY3QtZmFkZSAuZWxlbWVudG9yLWZsaXAtYm94IC5lbGVtZW50b3ItZmxpcC1ib3hfX2JhY2sgewogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLWZsaXAtYm94LS1lZmZlY3QtZmFkZSAuZWxlbWVudG9yLWZsaXAtYm94OmhvdmVyIC5lbGVtZW50b3ItZmxpcC1ib3hfX2JhY2sgewogICAgb3BhY2l0eTogMQp9CgouZWxlbWVudG9yLXdpZGdldC1mbGlwLWJveC5lbGVtZW50b3ItZmxpcC1ib3gtLWZsaXBwZWQgLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIC5lbGVtZW50b3ItZmxpcC1ib3hfX2Zyb250IHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtZmxpcC1ib3guZWxlbWVudG9yLWZsaXAtYm94LS1mbGlwcGVkIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciAuZWxlbWVudG9yLWZsaXAtYm94X19iYWNrIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lOwogICAgLW1zLXRyYW5zZm9ybTogbm9uZTsKICAgIHRyYW5zZm9ybTogbm9uZTsKICAgIG9wYWNpdHk6IDEKfQoKLmVsZW1lbnRvci1jdGEsCi5lbGVtZW50b3Itd2lkZ2V0LWNhbGwtdG8tYWN0aW9uIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3ItY3RhIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAuNXM7CiAgICAtby10cmFuc2l0aW9uOiAuNXM7CiAgICB0cmFuc2l0aW9uOiAuNXMKfQoKLmVsZW1lbnRvci1jdGEtLXNraW4tY2xhc3NpYyAuZWxlbWVudG9yLWN0YSB7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgZmxleC13cmFwOiB3cmFwCn0KCi5lbGVtZW50b3ItY3RhLS1za2luLWNsYXNzaWMgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWluLWhlaWdodDogMjAwcHg7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWN0YS0tc2tpbi1jbGFzc2ljIC5lbGVtZW50b3ItY3RhX19jb250ZW50IHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC40czsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAuNHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgd2lkdGg6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3Cn0KCi5lbGVtZW50b3ItY3RhLS1za2luLWNsYXNzaWMgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQtaXRlbSwKLmVsZW1lbnRvci1jdGEtLXNraW4tY2xhc3NpYyAuZWxlbWVudG9yLWN0YV9fY29udGVudC1pdGVtIC5lbGVtZW50b3ItaWNvbiB7CiAgICBjb2xvcjogIzU1NTk1YzsKICAgIGJvcmRlci1jb2xvcjogIzU1NTk1YzsKICAgIGZpbGw6ICM1NTU5NWMKfQoKLmVsZW1lbnRvci1jdGEtLXNraW4tY2xhc3NpYyAuZWxlbWVudG9yLWN0YV9fYnV0dG9uLmVsZW1lbnRvci1idXR0b24gewogICAgY29sb3I6ICM1NTU5NWM7CiAgICBib3JkZXItY29sb3I6ICM1NTU5NWMKfQoKLmVsZW1lbnRvci1jdGEtLXNraW4tY292ZXIgLmVsZW1lbnRvci1jdGEgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmVsZW1lbnRvci1jdGEtLXNraW4tY292ZXIgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgYm90dG9tOiAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIC40czsKICAgIHRyYW5zaXRpb246IGFsbCAuNHM7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWN0YS0tc2tpbi1jb3ZlciAuZWxlbWVudG9yLWN0YV9fY29udGVudCB7CiAgICBtaW4taGVpZ2h0OiAyODBweAp9CgouZWxlbWVudG9yLWN0YS0tc2tpbi1jb3ZlciAuZWxlbWVudG9yLWN0YV9fYnV0dG9uLmVsZW1lbnRvci1idXR0b24sCi5lbGVtZW50b3ItY3RhLS1za2luLWNvdmVyIC5lbGVtZW50b3ItY3RhX19jb250ZW50LWl0ZW0sCi5lbGVtZW50b3ItY3RhLS1za2luLWNvdmVyIC5lbGVtZW50b3ItY3RhX19jb250ZW50LWl0ZW0gLmVsZW1lbnRvci1pY29uIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3ItY3RhLS1sYXlvdXQtaW1hZ2UtYWJvdmUgLmVsZW1lbnRvci1jdGEgewogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcAp9CgouZWxlbWVudG9yLWN0YS0tbGF5b3V0LWltYWdlLWFib3ZlIC5lbGVtZW50b3ItY3RhX19iZy13cmFwcGVyIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItY3RhLS1sYXlvdXQtaW1hZ2UtbGVmdCAuZWxlbWVudG9yLWN0YSwKLmVsZW1lbnRvci1jdGEtLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YSB7CiAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7CiAgICBmbGV4LXdyYXA6IG5vd3JhcAp9CgouZWxlbWVudG9yLWN0YS0tbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIsCi5lbGVtZW50b3ItY3RhLS1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIgewogICAgd2lkdGg6IGF1dG87CiAgICBtaW4td2lkdGg6IDUwJQp9CgouZWxlbWVudG9yLWN0YS0tbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQsCi5lbGVtZW50b3ItY3RhLS1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQgewogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxCn0KCi5lbGVtZW50b3ItY3RhLS1sYXlvdXQtaW1hZ2UtbGVmdCAuZWxlbWVudG9yLWN0YSB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdwp9CgouZWxlbWVudG9yLWN0YS0tbGF5b3V0LWltYWdlLXJpZ2h0IC5lbGVtZW50b3ItY3RhIHsKICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UKfQoKLmVsZW1lbnRvci1jdGFfX2JnLAouZWxlbWVudG9yLWN0YV9fYmctb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAuNHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgdHJhbnNpdGlvbjogYWxsIC40cwp9CgouZWxlbWVudG9yLWN0YV9fYmctd3JhcHBlciB7CiAgICB6LWluZGV4OiAxOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9CgouZWxlbWVudG9yLWN0YV9fYmcgewogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJTsKICAgIHotaW5kZXg6IDEKfQoKLmVsZW1lbnRvci1jdGFfX2JnLW92ZXJsYXkgewogICAgei1pbmRleDogMgp9CgouZWxlbWVudG9yLWN0YV9fYnV0dG9uLmVsZW1lbnRvci1idXR0b24gewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyOwogICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBib3JkZXI6IDJweCBzb2xpZCAjZmZmOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQKfQoKLmVsZW1lbnRvci1jdGFfX2J1dHRvbi5lbGVtZW50b3ItYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lCn0KCi5lbGVtZW50b3ItY3RhX190aXRsZSB7CiAgICBmb250LXNpemU6IDIzcHgKfQoKLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQgewogICAgei1pbmRleDogMTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlcjsKICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDM1cHg7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWN0YV9fY29udGVudCwKLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQtaXRlbSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC41czsKICAgIC1vLXRyYW5zaXRpb246IC41czsKICAgIHRyYW5zaXRpb246IC41czsKICAgIGNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3ItY3RhX19jb250ZW50LWl0ZW0gewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW46IDAKfQoKLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHgKfQoKLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQtaXRlbSAuZWxlbWVudG9yLWljb24gewogICAgY29sb3I6ICNmZmYKfQoKLmVsZW1lbnRvci1jdGEtLXZhbGlnbi10b3AgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydDsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7CiAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydAp9CgouZWxlbWVudG9yLWN0YS0tdmFsaWduLW1pZGRsZSAuZWxlbWVudG9yLWN0YV9fY29udGVudCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlcjsKICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLWN0YS0tdmFsaWduLWJvdHRvbSAuZWxlbWVudG9yLWN0YV9fY29udGVudCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZDsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQKfQoKLmVsZW1lbnRvci1jdGE6aG92ZXIgLmVsZW1lbnRvci1jdGFfX2JnLW92ZXJsYXkgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMykKfQoKQG1lZGlhIChtYXgtZGV2aWNlLXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci1jdGEgewogICAgICAgIGN1cnNvcjogcG9pbnRlcgogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLWN0YS0td2lkZXNjcmVlbi1sYXlvdXQtaW1hZ2UtYWJvdmUgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0td2lkZXNjcmVlbi1sYXlvdXQtaW1hZ2UtYWJvdmUgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0td2lkZXNjcmVlbi1sYXlvdXQtaW1hZ2UtbGVmdCAuZWxlbWVudG9yLWN0YSwKICAgIC5lbGVtZW50b3ItY3RhLS13aWRlc2NyZWVuLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YSB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0td2lkZXNjcmVlbi1sYXlvdXQtaW1hZ2UtbGVmdCAuZWxlbWVudG9yLWN0YV9fYmctd3JhcHBlciwKICAgIC5lbGVtZW50b3ItY3RhLS13aWRlc2NyZWVuLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YV9fYmctd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgbWluLXdpZHRoOiA1MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS13aWRlc2NyZWVuLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhX19jb250ZW50LAogICAgLmVsZW1lbnRvci1jdGEtLXdpZGVzY3JlZW4tbGF5b3V0LWltYWdlLXJpZ2h0IC5lbGVtZW50b3ItY3RhX19jb250ZW50IHsKICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgIGZsZXgtZ3JvdzogMQogICAgfQogICAgLmVsZW1lbnRvci1jdGEtLXdpZGVzY3JlZW4tbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93CiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0td2lkZXNjcmVlbi1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci1jdGEtLWxhcHRvcC1sYXlvdXQtaW1hZ2UtYWJvdmUgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbGFwdG9wLWxheW91dC1pbWFnZS1hYm92ZSAuZWxlbWVudG9yLWN0YV9fYmctd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS1sYXB0b3AtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGEsCiAgICAuZWxlbWVudG9yLWN0YS0tbGFwdG9wLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YSB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbGFwdG9wLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhX19iZy13cmFwcGVyLAogICAgLmVsZW1lbnRvci1jdGEtLWxhcHRvcC1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIG1pbi13aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbGFwdG9wLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhX19jb250ZW50LAogICAgLmVsZW1lbnRvci1jdGEtLWxhcHRvcC1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQgewogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgZmxleC1ncm93OiAxCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbGFwdG9wLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhIHsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdwogICAgfQogICAgLmVsZW1lbnRvci1jdGEtLWxhcHRvcC1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci1jdGEtLXRhYmxldF9leHRyYS1sYXlvdXQtaW1hZ2UtYWJvdmUgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0X2V4dHJhLWxheW91dC1pbWFnZS1hYm92ZSAuZWxlbWVudG9yLWN0YV9fYmctd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS10YWJsZXRfZXh0cmEtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGEsCiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0X2V4dHJhLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YSB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0X2V4dHJhLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhX19iZy13cmFwcGVyLAogICAgLmVsZW1lbnRvci1jdGEtLXRhYmxldF9leHRyYS1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIG1pbi13aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0X2V4dHJhLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhX19jb250ZW50LAogICAgLmVsZW1lbnRvci1jdGEtLXRhYmxldF9leHRyYS1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQgewogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgZmxleC1ncm93OiAxCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0X2V4dHJhLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhIHsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdwogICAgfQogICAgLmVsZW1lbnRvci1jdGEtLXRhYmxldF9leHRyYS1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0LWxheW91dC1pbWFnZS1hYm92ZSAuZWxlbWVudG9yLWN0YSB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXAKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS10YWJsZXQtbGF5b3V0LWltYWdlLWFib3ZlIC5lbGVtZW50b3ItY3RhX19iZy13cmFwcGVyIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQogICAgLmVsZW1lbnRvci1jdGEtLXRhYmxldC1sYXlvdXQtaW1hZ2UtbGVmdCAuZWxlbWVudG9yLWN0YSwKICAgIC5lbGVtZW50b3ItY3RhLS10YWJsZXQtbGF5b3V0LWltYWdlLXJpZ2h0IC5lbGVtZW50b3ItY3RhIHsKICAgICAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXAKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS10YWJsZXQtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIsCiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0LWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YV9fYmctd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgbWluLXdpZHRoOiA1MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS10YWJsZXQtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQsCiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0LWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YV9fY29udGVudCB7CiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgICAgICBmbGV4LWdyb3c6IDEKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS10YWJsZXQtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93CiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tdGFibGV0LWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlX2V4dHJhLWxheW91dC1pbWFnZS1hYm92ZSAuZWxlbWVudG9yLWN0YSB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXAKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS1tb2JpbGVfZXh0cmEtbGF5b3V0LWltYWdlLWFib3ZlIC5lbGVtZW50b3ItY3RhX19iZy13cmFwcGVyIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQogICAgLmVsZW1lbnRvci1jdGEtLW1vYmlsZV9leHRyYS1sYXlvdXQtaW1hZ2UtbGVmdCAuZWxlbWVudG9yLWN0YSwKICAgIC5lbGVtZW50b3ItY3RhLS1tb2JpbGVfZXh0cmEtbGF5b3V0LWltYWdlLXJpZ2h0IC5lbGVtZW50b3ItY3RhIHsKICAgICAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXAKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS1tb2JpbGVfZXh0cmEtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIsCiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlX2V4dHJhLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YV9fYmctd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgbWluLXdpZHRoOiA1MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS1tb2JpbGVfZXh0cmEtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQsCiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlX2V4dHJhLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YV9fY29udGVudCB7CiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgICAgICBmbGV4LWdyb3c6IDEKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS1tb2JpbGVfZXh0cmEtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93CiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlX2V4dHJhLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1jdGEtLW1vYmlsZS1sYXlvdXQtaW1hZ2UtYWJvdmUgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlLWxheW91dC1pbWFnZS1hYm92ZSAuZWxlbWVudG9yLWN0YV9fYmctd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY3RhLS1tb2JpbGUtbGF5b3V0LWltYWdlLWxlZnQgLmVsZW1lbnRvci1jdGEsCiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlLWxheW91dC1pbWFnZS1yaWdodCAuZWxlbWVudG9yLWN0YSB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhX19iZy13cmFwcGVyLAogICAgLmVsZW1lbnRvci1jdGEtLW1vYmlsZS1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGFfX2JnLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIG1pbi13aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhX19jb250ZW50LAogICAgLmVsZW1lbnRvci1jdGEtLW1vYmlsZS1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGFfX2NvbnRlbnQgewogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgZmxleC1ncm93OiAxCiAgICB9CiAgICAuZWxlbWVudG9yLWN0YS0tbW9iaWxlLWxheW91dC1pbWFnZS1sZWZ0IC5lbGVtZW50b3ItY3RhIHsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdwogICAgfQogICAgLmVsZW1lbnRvci1jdGEtLW1vYmlsZS1sYXlvdXQtaW1hZ2UtcmlnaHQgLmVsZW1lbnRvci1jdGEgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UKICAgIH0KfQoKLmVsZW1lbnRvci1yaWJib24gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogMTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIHdpZHRoOiAxNTBweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBoZWlnaHQ6IDE1MHB4Cn0KCi5lbGVtZW50b3ItcmliYm9uLWlubmVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMjAwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWCgzNXB4KSByb3RhdGUoLTQ1ZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVYKDM1cHgpIHJvdGF0ZSgtNDVkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWCgzNXB4KSByb3RhdGUoLTQ1ZGVnKTsKICAgIG1hcmdpbi10b3A6IDM1cHg7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBsaW5lLWhlaWdodDogMjsKICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgYmFja2dyb3VuZDogIzAwMDsKICAgIGNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3ItcmliYm9uLmVsZW1lbnRvci1yaWJib24tbGVmdCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IGF1dG8KfQoKLmVsZW1lbnRvci1yaWJib24uZWxlbWVudG9yLXJpYmJvbi1yaWdodCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtY291bnRkb3duIC5lbGVtZW50b3ItY291bnRkb3duLWV4cGlyZS0tbWVzc2FnZSB7CiAgICBkaXNwbGF5OiBub25lOwogICAgcGFkZGluZzogMjBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC1jb3VudGRvd24gLmVsZW1lbnRvci1jb3VudGRvd24td3JhcHBlciB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdwp9CgouZWxlbWVudG9yLXdpZGdldC1jb3VudGRvd24gLmVsZW1lbnRvci1jb3VudGRvd24taXRlbSB7CiAgICBwYWRkaW5nOiAyMHB4IDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLXdpZGdldC1jb3VudGRvd24gLmVsZW1lbnRvci1jb3VudGRvd24tZGlnaXRzLAouZWxlbWVudG9yLXdpZGdldC1jb3VudGRvd24gLmVsZW1lbnRvci1jb3VudGRvd24tbGFiZWwgewogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmVsZW1lbnRvci13aWRnZXQtY291bnRkb3duIC5lbGVtZW50b3ItY291bnRkb3duLWRpZ2l0cyB7CiAgICBmb250LXNpemU6IDY5cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtY291bnRkb3duIC5lbGVtZW50b3ItY291bnRkb3duLWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTlweAp9CgouZWxlbWVudG9yLXdpZGdldC1jb3VudGRvd24uZWxlbWVudG9yLWNvdW50ZG93bi0tbGFiZWwtYmxvY2sgLmVsZW1lbnRvci1jb3VudGRvd24td3JhcHBlciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtY291bnRkb3duLmVsZW1lbnRvci1jb3VudGRvd24tLWxhYmVsLWJsb2NrIC5lbGVtZW50b3ItY291bnRkb3duLWRpZ2l0cywKLmVsZW1lbnRvci13aWRnZXQtY291bnRkb3duLmVsZW1lbnRvci1jb3VudGRvd24tLWxhYmVsLWJsb2NrIC5lbGVtZW50b3ItY291bnRkb3duLWxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWNvdW50ZG93bi5lbGVtZW50b3ItY291bnRkb3duLS1sYWJlbC1ibG9jayAuZWxlbWVudG9yLWNvdW50ZG93bi1pdGVtIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwogICAgZmxleC1iYXNpczogMDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMQp9CgouZWxlbWVudG9yLXdpZGdldC1jb3VudGRvd24uZWxlbWVudG9yLWNvdW50ZG93bi0tbGFiZWwtaW5saW5lIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC1jb3VudGRvd24uZWxlbWVudG9yLWNvdW50ZG93bi0tbGFiZWwtaW5saW5lIC5lbGVtZW50b3ItY291bnRkb3duLWl0ZW0gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA1cHgKfQoKLmVsZW1lbnRvci1zbGlkZXMgLnN3aXBlci1zbGlkZS1iZyB7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIG1pbi13aWR0aDogMTAwJTsKICAgIG1pbi1oZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci1zbGlkZXMgLnN3aXBlci1zbGlkZS1pbm5lciB7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiAwOwogICAgcGFkZGluZzogNTBweDsKICAgIG1hcmdpbjogYXV0bwp9CgouZWxlbWVudG9yLXNsaWRlcyAuc3dpcGVyLXNsaWRlLWlubmVyLAouZWxlbWVudG9yLXNsaWRlcyAuc3dpcGVyLXNsaWRlLWlubmVyOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXgKfQoKLmVsZW1lbnRvci1zbGlkZXMgLnN3aXBlci1zbGlkZS1pbm5lciAuZWxlbWVudG9yLWJhY2tncm91bmQtb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAwOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwCn0KCi5lbGVtZW50b3Itc2xpZGVzIC5zd2lwZXItc2xpZGUtaW5uZXIgLmVsZW1lbnRvci1zbGlkZS1jb250ZW50IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXNsaWRlcyAuc3dpcGVyLXNsaWRlLWlubmVyIC5lbGVtZW50b3Itc2xpZGUtaGVhZGluZyB7CiAgICBmb250LXNpemU6IDM1cHg7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmVsZW1lbnRvci1zbGlkZXMgLnN3aXBlci1zbGlkZS1pbm5lciAuZWxlbWVudG9yLXNsaWRlLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTdweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjQKfQoKLmVsZW1lbnRvci1zbGlkZXMgLnN3aXBlci1zbGlkZS1pbm5lciAuZWxlbWVudG9yLXNsaWRlLWRlc2NyaXB0aW9uOm5vdCg6bGFzdC1jaGlsZCksCi5lbGVtZW50b3Itc2xpZGVzIC5zd2lwZXItc2xpZGUtaW5uZXIgLmVsZW1lbnRvci1zbGlkZS1oZWFkaW5nOm5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLWJvdHRvbTogMzBweAp9CgouZWxlbWVudG9yLXNsaWRlcyAuc3dpcGVyLXNsaWRlLWlubmVyIC5lbGVtZW50b3Itc2xpZGUtYnV0dG9uIHsKICAgIGJvcmRlcjogMnB4IHNvbGlkICNmZmY7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3Itc2xpZGVzIC5zd2lwZXItc2xpZGUtaW5uZXIgLmVsZW1lbnRvci1zbGlkZS1idXR0b24sCi5lbGVtZW50b3Itc2xpZGVzIC5zd2lwZXItc2xpZGUtaW5uZXIgLmVsZW1lbnRvci1zbGlkZS1idXR0b246aG92ZXIgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9CgouZWxlbWVudG9yLS12LXBvc2l0aW9uLXRvcCAuc3dpcGVyLXNsaWRlLWlubmVyIHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDsKICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3ItLXYtcG9zaXRpb24tYm90dG9tIC5zd2lwZXItc2xpZGUtaW5uZXIgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQKfQoKLmVsZW1lbnRvci0tdi1wb3NpdGlvbi1taWRkbGUgLnN3aXBlci1zbGlkZS1pbm5lciB7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci0taC1wb3NpdGlvbi1sZWZ0IC5zd2lwZXItc2xpZGUtaW5uZXIgewogICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAp9CgouZWxlbWVudG9yLS1oLXBvc2l0aW9uLXJpZ2h0IC5zd2lwZXItc2xpZGUtaW5uZXIgewogICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLS1oLXBvc2l0aW9uLWNlbnRlciAuc3dpcGVyLXNsaWRlLWlubmVyIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCmJvZHkucnRsIC5lbGVtZW50b3Itd2lkZ2V0LXNsaWRlcyAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICBsZWZ0OiAxMHB4OwogICAgcmlnaHQ6IGF1dG8KfQoKYm9keS5ydGwgLmVsZW1lbnRvci13aWRnZXQtc2xpZGVzIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgIHJpZ2h0OiAxMHB4OwogICAgbGVmdDogYXV0bwp9CgouZWxlbWVudG9yLXNsaWRlcy13cmFwcGVyIGRpdjpub3QoLnN3aXBlci1zbGlkZSk+LnN3aXBlci1zbGlkZS1pbm5lciB7CiAgICBkaXNwbGF5OiBub25lCn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLXNsaWRlcyAuc3dpcGVyLXNsaWRlLWlubmVyIHsKICAgICAgICBwYWRkaW5nOiAzMHB4CiAgICB9CiAgICAuZWxlbWVudG9yLXNsaWRlcyAuc3dpcGVyLXNsaWRlLWlubmVyIC5lbGVtZW50b3Itc2xpZGUtaGVhZGluZyB7CiAgICAgICAgZm9udC1zaXplOiAyM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHgKICAgIH0KICAgIC5lbGVtZW50b3Itc2xpZGVzIC5zd2lwZXItc2xpZGUtaW5uZXIgLmVsZW1lbnRvci1zbGlkZS1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweAogICAgfQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLWN1c3RvbS5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLWN1c3RvbS5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0biB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLXNoYXJlLWJ1dHRvbnMtcHJpbWFyeS1jb2xvciwgI2VhNDMzNSkKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1jdXN0b20uZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1jdXN0b20uZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1jdXN0b20uZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3ItY3VzdG9tLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX190ZXh0IHsKICAgIGNvbG9yOiB2YXIoLS1lLXNoYXJlLWJ1dHRvbnMtc2Vjb25kYXJ5LWNvbG9yLCAjZmZmKQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLWN1c3RvbS5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1jdXN0b20uZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3ItY3VzdG9tLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1jdXN0b20uZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fX3RleHQgc3ZnIHsKICAgIGZpbGw6IHZhcigtLWUtc2hhcmUtYnV0dG9ucy1zZWNvbmRhcnktY29sb3IsICNmZmYpCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3ItY3VzdG9tLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLWN1c3RvbS5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG4sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3ItY3VzdG9tLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG4gewogICAgY29sb3I6IHZhcigtLWUtc2hhcmUtYnV0dG9ucy1wcmltYXJ5LWNvbG9yLCAjZWE0MzM1KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZS1zaGFyZS1idXR0b25zLXByaW1hcnktY29sb3IsICNlYTQzMzUpCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3ItY3VzdG9tLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLWN1c3RvbS5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtc2hhcmUtYnV0dG9ucy1wcmltYXJ5LWNvbG9yLCAjZWE0MzM1KTsKICAgIGNvbG9yOiB2YXIoLS1lLXNoYXJlLWJ1dHRvbnMtc2Vjb25kYXJ5LWNvbG9yLCAjZmZmKQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLWN1c3RvbS5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3ItY3VzdG9tLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gc3ZnIHsKICAgIGZpbGw6IHZhcigtLWUtc2hhcmUtYnV0dG9ucy1zZWNvbmRhcnktY29sb3IsICNmZmYpCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3ItY3VzdG9tLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBjb2xvcjogdmFyKC0tZS1zaGFyZS1idXR0b25zLXByaW1hcnktY29sb3IsICNlYTQzMzUpCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3ItY3VzdG9tLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiBzdmcgewogICAgZmlsbDogdmFyKC0tZS1zaGFyZS1idXR0b25zLXByaW1hcnktY29sb3IsICNlYTQzMzUpCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwgLmVsZW1lbnRvci1zaGFyZS1idG46aG92ZXIgewogICAgLXdlYmtpdC1maWx0ZXI6IHNhdHVyYXRlKDEuNSkgYnJpZ2h0bmVzcygxLjIpOwogICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjUpIGJyaWdodG5lc3MoMS4yKQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fZGlnZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9kaWdnIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDViZTIKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX2VtYWlsLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX2VtYWlsIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYTQzMzUKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX3ByaW50LAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX3ByaW50IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWEKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX2ZhY2Vib29rLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX2ZhY2Vib29rIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzYjU5OTgKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX2dvb2dsZSwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9nb29nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkNGIzOQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fcG9ja2V0LAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX3BvY2tldCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWYzZjU2Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9saW5rZWRpbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9saW5rZWRpbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N2I1Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9vZG5va2xhc3NuaWtpLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX29kbm9rbGFzc25pa2kgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NzMxYwp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fcGludGVyZXN0LAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX3BpbnRlcmVzdCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQwODFjCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9yZWRkaXQsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fcmVkZGl0IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjQ1MDAKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX3NreXBlLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX3NreXBlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGFmZjAKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX3NsaWRlc2hhcmUsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fc2xpZGVzaGFyZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N2I1Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zbmFwY2hhdCwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zbmFwY2hhdCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmYzAwCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zdHVtYmxldXBvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zdHVtYmxldXBvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWI0OTI0Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9taXgsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fbWl4IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzc4MmIKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX3R1bWJsciwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90dW1ibHIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzM1NDY1Ywp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fdHdpdGNoLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXRjaCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjQ0MWE1Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90ZWxlZ3JhbSwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90ZWxlZ3JhbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmNhNWUwCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90d2l0dGVyLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXR0ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMgp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fdmltZW8sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fdmltZW8gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFhYjdlYQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fdmssCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fdmsgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzQ1NjY4ZQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fd2hhdHNhcHAsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fd2hhdHNhcHAgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI1ZDM2Ngp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fd29yZHByZXNzLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX3dvcmRwcmVzcyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE3NTliCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl94aW5nLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX3hpbmcgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAyNjQ2Ngp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX2RpZ2csCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX2RpZ2cgewogICAgY29sb3I6ICMwMDViZTIKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9kaWdnIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fZGlnZyBzdmcgewogICAgZmlsbDogIzAwNWJlMgp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX2VtYWlsLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9lbWFpbCB7CiAgICBjb2xvcjogI2VhNDMzNQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX2VtYWlsIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fZW1haWwgc3ZnIHsKICAgIGZpbGw6ICNlYTQzMzUKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9wcmludCwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fcHJpbnQgewogICAgY29sb3I6ICNhYWEKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9wcmludCBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3ByaW50IHN2ZyB7CiAgICBmaWxsOiAjYWFhCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fZmFjZWJvb2ssCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX2ZhY2Vib29rIHsKICAgIGNvbG9yOiAjM2I1OTk4Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fZmFjZWJvb2sgc3ZnLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9mYWNlYm9vayBzdmcgewogICAgZmlsbDogIzNiNTk5OAp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX2dvb2dsZSwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fZ29vZ2xlIHsKICAgIGNvbG9yOiAjZGQ0YjM5Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fZ29vZ2xlIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fZ29vZ2xlIHN2ZyB7CiAgICBmaWxsOiAjZGQ0YjM5Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fcG9ja2V0LAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9wb2NrZXQgewogICAgY29sb3I6ICNlZjNmNTYKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9wb2NrZXQgc3ZnLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9wb2NrZXQgc3ZnIHsKICAgIGZpbGw6ICNlZjNmNTYKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9saW5rZWRpbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fbGlua2VkaW4gewogICAgY29sb3I6ICMwMDc3YjUKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9saW5rZWRpbiBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX2xpbmtlZGluIHN2ZyB7CiAgICBmaWxsOiAjMDA3N2I1Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fb2Rub2tsYXNzbmlraSwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fb2Rub2tsYXNzbmlraSB7CiAgICBjb2xvcjogI2Y0NzMxYwp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX29kbm9rbGFzc25pa2kgc3ZnLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9vZG5va2xhc3NuaWtpIHN2ZyB7CiAgICBmaWxsOiAjZjQ3MzFjCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fcGludGVyZXN0LAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9waW50ZXJlc3QgewogICAgY29sb3I6ICNiZDA4MWMKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9waW50ZXJlc3Qgc3ZnLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9waW50ZXJlc3Qgc3ZnIHsKICAgIGZpbGw6ICNiZDA4MWMKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9yZWRkaXQsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3JlZGRpdCB7CiAgICBjb2xvcjogI2ZmNDUwMAp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3JlZGRpdCBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3JlZGRpdCBzdmcgewogICAgZmlsbDogI2ZmNDUwMAp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3NreXBlLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9za3lwZSB7CiAgICBjb2xvcjogIzAwYWZmMAp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3NreXBlIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fc2t5cGUgc3ZnIHsKICAgIGZpbGw6ICMwMGFmZjAKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zbGlkZXNoYXJlLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zbGlkZXNoYXJlIHsKICAgIGNvbG9yOiAjMDA3N2I1Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fc2xpZGVzaGFyZSBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3NsaWRlc2hhcmUgc3ZnIHsKICAgIGZpbGw6ICMwMDc3YjUKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zbmFwY2hhdCwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fc25hcGNoYXQgewogICAgY29sb3I6ICNmZmZjMDAKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zbmFwY2hhdCBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3NuYXBjaGF0IHN2ZyB7CiAgICBmaWxsOiAjZmZmYzAwCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fc3R1bWJsZXVwb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3N0dW1ibGV1cG9uIHsKICAgIGNvbG9yOiAjZWI0OTI0Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fc3R1bWJsZXVwb24gc3ZnLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zdHVtYmxldXBvbiBzdmcgewogICAgZmlsbDogI2ViNDkyNAp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX21peCwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fbWl4IHsKICAgIGNvbG9yOiAjZjM3ODJiCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fbWl4IHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fbWl4IHN2ZyB7CiAgICBmaWxsOiAjZjM3ODJiCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fdHVtYmxyLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90dW1ibHIgewogICAgY29sb3I6ICMzNTQ2NWMKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90dW1ibHIgc3ZnLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90dW1ibHIgc3ZnIHsKICAgIGZpbGw6ICMzNTQ2NWMKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90d2l0Y2gsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXRjaCB7CiAgICBjb2xvcjogIzY0NDFhNQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXRjaCBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXRjaCBzdmcgewogICAgZmlsbDogIzY0NDFhNQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3RlbGVncmFtLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90ZWxlZ3JhbSB7CiAgICBjb2xvcjogIzJjYTVlMAp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3RlbGVncmFtIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fdGVsZWdyYW0gc3ZnIHsKICAgIGZpbGw6ICMyY2E1ZTAKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90d2l0dGVyLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90d2l0dGVyIHsKICAgIGNvbG9yOiAjMWRhMWYyCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fdHdpdHRlciBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXR0ZXIgc3ZnIHsKICAgIGZpbGw6ICMxZGExZjIKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl92aW1lbywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fdmltZW8gewogICAgY29sb3I6ICMxYWI3ZWEKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl92aW1lbyBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3ZpbWVvIHN2ZyB7CiAgICBmaWxsOiAjMWFiN2VhCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fdmssCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3ZrIHsKICAgIGNvbG9yOiAjNDU2NjhlCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fdmsgc3ZnLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl92ayBzdmcgewogICAgZmlsbDogIzQ1NjY4ZQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3doYXRzYXBwLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZyYW1lZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl93aGF0c2FwcCB7CiAgICBjb2xvcjogIzI1ZDM2Ngp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3doYXRzYXBwIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fd2hhdHNhcHAgc3ZnIHsKICAgIGZpbGw6ICMyNWQzNjYKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl93b3JkcHJlc3MsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3dvcmRwcmVzcyB7CiAgICBjb2xvcjogIzIxNzU5Ygp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3dvcmRwcmVzcyBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3dvcmRwcmVzcyBzdmcgewogICAgZmlsbDogIzIxNzU5Ygp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3hpbmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3hpbmcgewogICAgY29sb3I6ICMwMjY0NjYKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl94aW5nIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG5feGluZyBzdmcgewogICAgZmlsbDogIzAyNjQ2Ngp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX2RpZ2cgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9kaWdnIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDViZTIKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9lbWFpbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX2VtYWlsIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYTQzMzUKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9wcmludCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX3ByaW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWEKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9mYWNlYm9vayAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX2ZhY2Vib29rIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzYjU5OTgKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9nb29nbGUgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9nb29nbGUgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkNGIzOQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3BvY2tldCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX3BvY2tldCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWYzZjU2Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fbGlua2VkaW4gLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9saW5rZWRpbiAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N2I1Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fb2Rub2tsYXNzbmlraSAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX29kbm9rbGFzc25pa2kgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NzMxYwp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3BpbnRlcmVzdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX3BpbnRlcmVzdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQwODFjCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fcmVkZGl0IC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG5fcmVkZGl0IC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjQ1MDAKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9za3lwZSAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX3NreXBlIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGFmZjAKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zbGlkZXNoYXJlIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG5fc2xpZGVzaGFyZSAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N2I1Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fc25hcGNoYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zbmFwY2hhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmYzAwCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fc3R1bWJsZXVwb24gLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9zdHVtYmxldXBvbiAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWI0OTI0Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fbWl4IC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG5fbWl4IC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzc4MmIKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90dW1ibHIgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90dW1ibHIgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzM1NDY1Ywp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXRjaCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXRjaCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjQ0MWE1Cn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fdGVsZWdyYW0gLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl90ZWxlZ3JhbSAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmNhNWUwCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fdHdpdHRlciAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX3R3aXR0ZXIgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMgp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3ZpbWVvIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG5fdmltZW8gLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFhYjdlYQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3ZrIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG5fdmsgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzQ1NjY4ZQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3doYXRzYXBwIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG5fd2hhdHNhcHAgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI1ZDM2Ngp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX3dvcmRwcmVzcyAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX3dvcmRwcmVzcyAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE3NTliCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tY29sb3Itb2ZmaWNpYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG5feGluZyAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuX3hpbmcgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAyNjQ2Ngp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwgLmVsZW1lbnRvci1zaGFyZS1idG4gLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgY29sb3I6IHZhcigtLWUtc2hhcmUtYnV0dG9ucy1pY29uLWNvbG9yLCAjZmZmKQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWNvbG9yLW9mZmljaWFsLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHN2ZywKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1jb2xvci1vZmZpY2lhbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1taW5pbWFsIC5lbGVtZW50b3Itc2hhcmUtYnRuIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1lLXNoYXJlLWJ1dHRvbnMtaWNvbi1jb2xvciwgI2ZmZikKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWJveGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZnJhbWVkIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIG1hcmdpbi1sZWZ0OiAtLjJlbQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tYm94ZWQgLmVsZW1lbnRvci1zaGFyZS1idG4sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mcmFtZWQgLmVsZW1lbnRvci1zaGFyZS1idG4gewogICAgYm9yZGVyLXN0eWxlOiBzb2xpZAp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fX3RleHQsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tdmlldy1pY29uIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCByZ2JhKDAsIDAsIDAsIC4xMiksIHRyYW5zcGFyZW50KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHJnYmEoMCwgMCwgMCwgLjEyKSksIHRvKHRyYW5zcGFyZW50KSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMCwgMCwgMCwgLjEyKSwgdHJhbnNwYXJlbnQpCn0KCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWdyYWRpZW50IC5lbGVtZW50b3Itc2hhcmUtYnRuX190ZXh0LAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCB7CiAgICBwYWRkaW5nLWxlZnQ6IC45ZW0KfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG4sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0biB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLXNoYXJlLWJ1dHRvbnMtcHJpbWFyeS1jb2xvciwgI2VhNDMzNSkKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1mbGF0IC5lbGVtZW50b3Itc2hhcmUtYnRuX190ZXh0LAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZ3JhZGllbnQgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCB7CiAgICBjb2xvcjogdmFyKC0tZS1zaGFyZS1idXR0b25zLXNlY29uZGFyeS1jb2xvciwgI2ZmZikKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLWZsYXQgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gc3ZnLAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tZmxhdCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiBzdmcsCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2tpbi1ncmFkaWVudCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCBzdmcgewogICAgZmlsbDogdmFyKC0tZS1zaGFyZS1idXR0b25zLXNlY29uZGFyeS1jb2xvciwgI2ZmZikKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1za2luLW1pbmltYWwuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNoYXBlLXJvdW5kZWQgLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgYm9yZGVyLXJhZGl1czogLjVlbQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXNraW4tbWluaW1hbC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tc2hhcGUtY2lyY2xlIC5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIHsKICAgIGJvcmRlci1yYWRpdXM6IDk5LjllbQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXZpZXctdGV4dCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCB7CiAgICBwYWRkaW5nLWxlZnQ6IDFlbQp9CgouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXZpZXctaWNvbiAuZWxlbWVudG9yLXNoYXJlLWJ0biwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS12aWV3LXRleHQgLmVsZW1lbnRvci1zaGFyZS1idG4gewogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS12aWV3LWljb24gLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24sCi5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tdmlldy1pY29uIC5lbGVtZW50b3Itc2hhcmUtYnRuX190ZXh0LAouZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLXZpZXctdGV4dCAuZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS12aWV3LXRleHQgLmVsZW1lbnRvci1zaGFyZS1idG5fX3RleHQgewogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxOwogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1zaGFwZS1yb3VuZGVkIC5lbGVtZW50b3Itc2hhcmUtYnRuIHsKICAgIGJvcmRlci1yYWRpdXM6IC41ZW0KfQoKLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1zaGFwZS1jaXJjbGUgLmVsZW1lbnRvci1zaGFyZS1idG4gewogICAgYm9yZGVyLXJhZGl1czogOTkuOWVtCn0KCi5lbGVtZW50b3Itc2hhcmUtYnRuIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBmb250LXNpemU6IDEwcHg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvciwgLXdlYmtpdC1maWx0ZXI7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIC13ZWJraXQtZmlsdGVyOwogICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogZmlsdGVyLCBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3I7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBmaWx0ZXIsIGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvcjsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGZpbHRlciwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLCAtd2Via2l0LWZpbHRlcjsKICAgIGhlaWdodDogNC41ZW07CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmVsZW1lbnRvci1zaGFyZS1idG4sCi5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uLAouZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IC4yczsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IC4yczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4ycwp9CgouZWxlbWVudG9yLXNoYXJlLWJ0bl9faWNvbiwKLmVsZW1lbnRvci1zaGFyZS1idG5fX3RleHQgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBjb2xvciwgYmFja2dyb3VuZC1jb2xvcjsKICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IGNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogY29sb3IsIGJhY2tncm91bmQtY29sb3IKfQoKLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgd2lkdGg6IDQuNWVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3Itc2hhcmUtYnRuX19pY29uIGkgewogICAgZm9udC1zaXplOiB2YXIoLS1lLXNoYXJlLWJ1dHRvbnMtaWNvbi1zaXplLCAxLjdlbSkKfQoKLmVsZW1lbnRvci1zaGFyZS1idG5fX2ljb24gc3ZnIHsKICAgIHdpZHRoOiB2YXIoLS1lLXNoYXJlLWJ1dHRvbnMtaWNvbi1zaXplLCAxLjdlbSk7CiAgICBoZWlnaHQ6IHZhcigtLWUtc2hhcmUtYnV0dG9ucy1pY29uLXNpemUsIDEuN2VtKQp9CgouZWxlbWVudG9yLXNoYXJlLWJ0bl9fdGV4dCB7CiAgICBmb250LXNpemU6IDEuNWVtOwogICAgcGFkZGluZy1yaWdodDogMWVtOwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDE7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQtd2VpZ2h0OiAxMDAKfQoKLmVsZW1lbnRvci1zaGFyZS1idG5fX3RpdGxlIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMDsKICAgIGZsZXgtc2hyaW5rOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXNoYXJlLWJ1dHRvbnMgewogICAgdGV4dC1hbGlnbjogdmFyKC0tYWxpZ25tZW50LCBpbmhlcml0KTsKICAgIC1tb3otdGV4dC1hbGlnbi1sYXN0OiB2YXIoLS1hbGlnbm1lbnQsIGluaGVyaXQpOwogICAgdGV4dC1hbGlnbi1sYXN0OiB2YXIoLS1hbGlnbm1lbnQsIGluaGVyaXQpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXNoYXJlLWJ1dHRvbnMuZWxlbWVudG9yLWdyaWQtMCAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgZm9udC1zaXplOiAwCn0KCi5lbGVtZW50b3Itc2tpbi1jYXJvdXNlbCAuZWxlbWVudG9yLW1haW4tc3dpcGVyLAouZWxlbWVudG9yLXNraW4tY292ZXJmbG93IC5lbGVtZW50b3ItbWFpbi1zd2lwZXIgewogICAgaGVpZ2h0OiAyMzBweAp9CgouZWxlbWVudG9yLXNraW4tc2xpZGVzaG93IC5lbGVtZW50b3ItbWFpbi1zd2lwZXIgewogICAgaGVpZ2h0OiA0NTBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLXNraW4tc2xpZGVzaG93IC5lbGVtZW50b3ItdGh1bWJuYWlscy1zd2lwZXIgLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtcGxheSBpIHsKICAgIGZvbnQtc2l6ZTogNTBweAp9CgouZWxlbWVudG9yLXNraW4tc2xpZGVzaG93IC5lbGVtZW50b3ItdGh1bWJuYWlscy1zd2lwZXIgLnN3aXBlci1zbGlkZSB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmVsZW1lbnRvci1za2luLXNsaWRlc2hvdyAuZWxlbWVudG9yLXRodW1ibmFpbHMtc3dpcGVyIC5zd2lwZXItc2xpZGU6bm90KC5zd2lwZXItc2xpZGUtYWN0aXZlKTphZnRlciB7CiAgICBjb250ZW50OiAiIjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjMpCn0KCi5lbGVtZW50b3ItY2Fyb3VzZWwtaW1hZ2UgewogICAgYmFja2dyb3VuZDogbm8tcmVwZWF0IDUwJTsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci1jYXJvdXNlbC1pbWFnZS1vdmVybGF5IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgY29sb3I6IHZhcigtLWUtY2Fyb3VzZWwtaW1hZ2Utb3ZlcmxheS1jb2xvciwgI2ZmZik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyOSwgMTM4LCAxNDUsIC44KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAuNXMsIC13ZWJraXQtdHJhbnNmb3JtIC41czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjVzLCAtd2Via2l0LXRyYW5zZm9ybSAuNXM7CiAgICAtby10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjVzLCBvcGFjaXR5IC41czsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXMsIG9wYWNpdHkgLjVzOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC41cywgb3BhY2l0eSAuNXMsIC13ZWJraXQtdHJhbnNmb3JtIC41cwp9CgouZWxlbWVudG9yLWNhcm91c2VsLWltYWdlLW92ZXJsYXkgaSB7CiAgICBmb250LXNpemU6IHZhcigtLWUtY2Fyb3VzZWwtaW1hZ2Utb3ZlcmxheS1pY29uLXNpemUsIDIxcHgpCn0KCi5lbGVtZW50b3ItY2Fyb3VzZWwtaW1hZ2Utb3ZlcmxheSBzdmcgewogICAgZmlsbDogdmFyKC0tZS1jYXJvdXNlbC1pbWFnZS1vdmVybGF5LWNvbG9yLCAjZmZmKTsKICAgIHdpZHRoOiB2YXIoLS1lLWNhcm91c2VsLWltYWdlLW92ZXJsYXktaWNvbi1zaXplLCAyMXB4KTsKICAgIGhlaWdodDogdmFyKC0tZS1jYXJvdXNlbC1pbWFnZS1vdmVybGF5LWljb24tc2l6ZSwgMjFweCkKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7CiAgICBmbGV4LXNocmluazogMAp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZSBpbWcgewogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICAtby1vYmplY3QtZml0OiBjb3ZlcjsKICAgIG9iamVjdC1maXQ6IGNvdmVyCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faGVhZGVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciBjaXRlLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsX19oZWFkZXIgY2l0ZSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjUKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fbmFtZSB7CiAgICBmb250LXdlaWdodDogNzAwCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgIG1hcmdpbi1sZWZ0OiAyMHB4Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgIG1hcmdpbi1yaWdodDogMjBweDsKICAgIG1hcmdpbi1sZWZ0OiAwCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLWxlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIG1hcmdpbi1sZWZ0OiAyMHB4Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgIG1hcmdpbi10b3A6IDI1cHgKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZQp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDI1cHgKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX3N0YWNrZWQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgIG1hcmdpbi10b3A6IDI1cHg7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgZmxleC13cmFwOiB3cmFwCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9zdGFja2VkIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2Vfc3RhY2tlZCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsIGNpdGUgewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWwsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CiAgICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX3JpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMDsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgIG1hcmdpbi10b3A6IDE1cHgKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2xlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfcmlnaHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2xlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbCB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsIHsKICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tYWxpZ24tcmlnaHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZAp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSB7CiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICBtYXJnaW4tbGVmdDogMAp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tYWxpZ24tbGVmdC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogc3RhcnQKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tYWxpZ24tbGVmdC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIG1hcmdpbi1sZWZ0OiAyMHB4Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLXRlc3RpbW9uaWFsIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1jZW50ZXIuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1jZW50ZXIuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1jZW50ZXIuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUgewogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1za2luLWRlZmF1bHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY2l0ZSwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1kZWZhdWx0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2xlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY2l0ZSwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1kZWZhdWx0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX3JpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2NpdGUgewogICAgd2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIG1hcmdpbi10b3A6IDI1cHgKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1idWJibGUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlOWVjOwogICAgcGFkZGluZzogMjBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1za2luLWJ1YmJsZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19jb250ZW50OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTRweDsKICAgIGhlaWdodDogMTRweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU5ZWM7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC43NSkgcm90YXRlKDQ1ZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNzUpIHJvdGF0ZSg0NWRlZyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHJvdGF0ZSg0NWRlZyk7CiAgICBib3JkZXItd2lkdGg6IDA7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgYm94LXNpemluZzogY29udGVudC1ib3gKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1idWJibGUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudDphZnRlciB7CiAgICBib3R0b206IGNhbGMoMTAwJSAtIDdweCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC43NSkgcm90YXRlKC0xMzVkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGVYKC43NSkgcm90YXRlKC0xMzVkZWcpOwogICAgdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSByb3RhdGUoLTEzNWRlZykKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1idWJibGUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudDphZnRlciB7CiAgICBsZWZ0OiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSBzY2FsZVgoLjc1KSByb3RhdGUoLTEzNWRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHNjYWxlWCguNzUpIHJvdGF0ZSgtMTM1ZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSBzY2FsZVgoLjc1KSByb3RhdGUoLTEzNWRlZykKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1idWJibGUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2NvbnRlbnQ6YWZ0ZXIsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLXNraW4tYnViYmxlLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX3N0YWNrZWQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudDphZnRlciB7CiAgICB0b3A6IGNhbGMoMTAwJSAtIDdweCkKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1idWJibGUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2NvbnRlbnQ6YWZ0ZXIsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLXNraW4tYnViYmxlLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX3N0YWNrZWQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudDphZnRlciB7CiAgICBsZWZ0OiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSBzY2FsZVgoLjc1KSByb3RhdGUoNDVkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSBzY2FsZVgoLjc1KSByb3RhdGUoNDVkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHNjYWxlWCguNzUpIHJvdGF0ZSg0NWRlZykKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1idWJibGUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2NvbnRlbnQ6YWZ0ZXIsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLXNraW4tYnViYmxlLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLWxlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudDphZnRlciwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1idWJibGUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2Vfc3RhY2tlZC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLWxlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudDphZnRlciB7CiAgICBsZWZ0OiBjYWxjKDIwcHggKyAoNTBweCAvIDIpKQp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1za2luLWJ1YmJsZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2NvbnRlbnQ6YWZ0ZXIsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLXNraW4tYnViYmxlLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2NvbnRlbnQ6YWZ0ZXIsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLXNraW4tYnViYmxlLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX3N0YWNrZWQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19jb250ZW50OmFmdGVyIHsKICAgIHJpZ2h0OiBjYWxjKDIwcHggKyAoNTBweCAvIDIpKQp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1za2luLWJ1YmJsZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2NvbnRlbnQ6YWZ0ZXIgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSguNzUpIHJvdGF0ZSgxMzVkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGVZKC43NSkgcm90YXRlKDEzNWRlZyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlWSguNzUpIHJvdGF0ZSgxMzVkZWcpOwogICAgbGVmdDogLThweAp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1za2luLWJ1YmJsZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19jb250ZW50OmFmdGVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoLjc1KSByb3RhdGUoLTQ1ZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWSguNzUpIHJvdGF0ZSgtNDVkZWcpOwogICAgdHJhbnNmb3JtOiBzY2FsZVkoLjc1KSByb3RhdGUoLTQ1ZGVnKTsKICAgIHJpZ2h0OiAtOHB4Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLXNraW4tYnViYmxlLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2xlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudDphZnRlciwKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tc2tpbi1idWJibGUuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfcmlnaHQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudDphZnRlciB7CiAgICB0b3A6IGNhbGMoMjBweCArICg1MHB4IC8gMikpCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtLXNraW4tYnViYmxlLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2xlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAouZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1za2luLWJ1YmJsZS5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgcGFkZGluZy10b3A6IDIwcHgKfQoKQG1lZGlhIChtaW4td2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0td2lkZXNjcmVlbi1hbGlnbi1yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0td2lkZXNjcmVlbi1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIsCiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS13aWRlc2NyZWVuLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0td2lkZXNjcmVlbi1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0td2lkZXNjcmVlbi1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0td2lkZXNjcmVlbi1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXdpZGVzY3JlZW4tYWxpZ24tbGVmdC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS13aWRlc2NyZWVuLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXdpZGVzY3JlZW4tYWxpZ24tbGVmdC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4CiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS13aWRlc2NyZWVuLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLXRlc3RpbW9uaWFsIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxhcHRvcC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGFwdG9wLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxhcHRvcC1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBlbmQKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxhcHRvcC1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGFwdG9wLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxhcHRvcC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxhcHRvcC1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxhcHRvcC1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxhcHRvcC1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUsCiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXB0b3AtYWxpZ24tbGVmdC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4CiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXB0b3AtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGFwdG9wLWFsaWduLWNlbnRlci5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIsCiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXB0b3AtYWxpZ24tY2VudGVyLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxhcHRvcC1hbGlnbi1jZW50ZXIuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS10YWJsZXRfZXh0cmEtYWxpZ24tcmlnaHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUsCiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS10YWJsZXRfZXh0cmEtYWxpZ24tcmlnaHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUgewogICAgICAgIG1hcmdpbi1yaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0X2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0X2V4dHJhLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0X2V4dHJhLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0X2V4dHJhLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldF9leHRyYS1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHgKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbCB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS10YWJsZXRfZXh0cmEtYWxpZ24tY2VudGVyLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0X2V4dHJhLWFsaWduLWNlbnRlci5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0LWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldC1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyIHsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBlbmQKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldC1hbGlnbi1yaWdodC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0LWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldC1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldC1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldC1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUsCiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS10YWJsZXQtYWxpZ24tbGVmdC5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4CiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS10YWJsZXQtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tdGFibGV0LWFsaWduLWNlbnRlci5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9hYm92ZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIsCiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS10YWJsZXQtYWxpZ24tY2VudGVyLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLXRhYmxldC1hbGlnbi1jZW50ZXIuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlX2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlX2V4dHJhLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlX2V4dHJhLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUsCiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUgewogICAgICAgIG1hcmdpbi1yaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHgKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLW1vYmlsZV9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbCB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLW1vYmlsZV9leHRyYS1hbGlnbi1jZW50ZXIuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlX2V4dHJhLWFsaWduLWNlbnRlci5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItdGVzdGltb25pYWwgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1tb2JpbGUtYWxpZ24tcmlnaHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19mb290ZXIgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlLWFsaWduLXJpZ2h0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUsCiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1tb2JpbGUtYWxpZ24tcmlnaHQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUgewogICAgICAgIG1hcmdpbi1yaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlLWFsaWduLWxlZnQgLmVsZW1lbnRvci10ZXN0aW1vbmlhbCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fZm9vdGVyLAogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzdGFydAogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlLWFsaWduLWxlZnQuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfYWJvdmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLW1vYmlsZS1hbGlnbi1sZWZ0LmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2lubGluZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZStjaXRlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHgKICAgIH0KICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLW1vYmlsZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbCB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1tb2JpbGUtYWxpZ24tY2VudGVyLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbGF5b3V0LWltYWdlX2Fib3ZlIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciwKICAgIC5lbGVtZW50b3ItdGVzdGltb25pYWwtLW1vYmlsZS1hbGlnbi1jZW50ZXIuZWxlbWVudG9yLXRlc3RpbW9uaWFsLS1sYXlvdXQtaW1hZ2VfaW5saW5lIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2Zvb3RlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC0tbW9iaWxlLWFsaWduLWNlbnRlci5lbGVtZW50b3ItdGVzdGltb25pYWwtLWxheW91dC1pbWFnZV9pbmxpbmUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UrY2l0ZSB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbC1jYXJvdXNlbCAuc3dpcGVyLXNsaWRlIHsKICAgIHBhZGRpbmc6IDIwcHgKfQoKLmVsZW1lbnRvci13aWRnZXQtdGVzdGltb25pYWwtY2Fyb3VzZWwgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fdGV4dCB7CiAgICBmb250LXNpemU6IDEuM2VtOwogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgbGluZS1oZWlnaHQ6IDEuNQp9CgouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbC1jYXJvdXNlbCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pbWFnZSBpbWcgewogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHgKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuc3dpcGVyLXNsaWRlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTFlOGVkOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgcGFkZGluZzogMAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX3RleHQgewogICAgZm9udC1zaXplOiAxNHB4OwogICAgbGluZS1oZWlnaHQ6IDIwcHgKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19uYW1lIHsKICAgIGNvbG9yOiAjMWMyMDIyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fdGl0bGUgewogICAgY29sb3I6ICM2OTc4ODI7CiAgICBmb250LXNpemU6IDEyLjVweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LWZhbWlseTogaW5oZXJpdAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faW1hZ2UgaW1nIHsKICAgIHdpZHRoOiAzNnB4OwogICAgaGVpZ2h0OiAzNnB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbiB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIGZvbnQtc2l6ZTogMTdweAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24gLmZhKy5mYSB7CiAgICBtYXJnaW4tbGVmdDogLjE1ZW0KfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uIHsKICAgIGNvbG9yOiB2YXIoLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3IpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1hbmRyb2lkIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjYTRjNjM5Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1hcHBsZSB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzk5OQp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tYmVoYW5jZSB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzE3NjlmZgp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tYml0YnVja2V0IHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjMjA1MDgxCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1jb2RlcGVuIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjMDAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1kZWxpY2lvdXMgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMzOWYKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLWRpZ2cgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMwMDViZTIKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLWRyaWJiYmxlIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjZWE0Yzg5Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1lbnZlbG9wZSB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogI2VhNDMzNQp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tZmFjZWJvb2sgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMzYjU5OTgKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLWZsaWNrciB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzAwNjNkYwp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tZm91cnNxdWFyZSB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzJkNWJlMwp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tZ2l0aHViIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjMzMzCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1nb29nbGUtcGx1cyB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogI2RkNGIzOQp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24taG91enogewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICM3YWMxNDIKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLWluc3RhZ3JhbSB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzI2MjYyNgp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tanNmaWRkbGUgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICM0ODdhYTIKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLWxpbmtlZGluIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjMDA3N2I1Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1tZWRpdW0gewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMwMGFiNmIKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLW1lZXR1cCB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogI2VjMWM0MAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tbWl4Y2xvdWQgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMyNzNhNGIKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLW9kbm9rbGFzc25pa2kgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICNmNDczMWMKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXBpbnRlcmVzdCB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogI2JkMDgxYwp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tcHJvZHVjdC1odW50IHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjZGE1NTJmCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1yZWRkaXQgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICNmZjQ1MDAKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXJzcyB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogI2YyNjUyMgp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tc2hvcHBpbmctY2FydCB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzRjYWY1MAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tc2t5cGUgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMwMGFmZjAKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXNsaWRlc2hhcmUgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMwMDc3YjUKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXNuYXBjaGF0IHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjZmZmYzAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1zb3VuZGNsb3VkIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjZjgwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1zcG90aWZ5IHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjMmViZDU5Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi1zdGFjay1vdmVyZmxvdyB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogI2ZlN2ExNQp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tc3RlYW0gewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMwMGFkZWUKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXN0dW1ibGV1cG9uIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjZWI0OTI0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi10ZWxlZ3JhbSB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzJjYTVlMAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tdGh1bWItdGFjaywKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXRodW1idGFjayB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzFhYTFkOAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tdHJpcGFkdmlzb3IgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICM1ODk0NDIKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXR1bWJsciB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzM1NDY1Ywp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tdHdpdGNoIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjNjQ0MWE1Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi10d2l0dGVyIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjMWRhMWYyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi12aW1lbyB7CiAgICAtLWUtdGVzdGltb25pYWwtaWNvbi1jb2xvcjogIzFhYjdlYQp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ljb24uZWxlbWVudG9yLWljb24tdmsgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICM0NTY2OGUKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXdlaWJvIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjZGQyNDMwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi13ZWl4aW4gewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMzMWE5MTgKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXdoYXRzYXBwIHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjMjVkMzY2Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbi13b3JkcHJlc3MgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMyMTc1OWIKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXhpbmcgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICMwMjY0NjYKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXllbHAgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICNhZjA2MDYKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLXlvdXR1YmUgewogICAgLS1lLXRlc3RpbW9uaWFsLWljb24tY29sb3I6ICNjZDIwMWYKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19pY29uLmVsZW1lbnRvci1pY29uLTUwMHB4IHsKICAgIC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yOiAjMDA5OWU1Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faWNvbi5lbGVtZW50b3ItaWNvbiBzdmcgewogICAgZmlsbDogdmFyKC0tZS10ZXN0aW1vbmlhbC1pY29uLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX3JhdGluZyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQobGVmdCwgI2ZmYzgyYyB2YXIoLS1yYXRpbmcpLCAjY2NjIHZhcigtLXJhdGluZykpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20oI2ZmYzgyYyksIHRvKCNjY2MpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2ZmYzgyYyB2YXIoLS1yYXRpbmcpLCAjY2NjIHZhcigtLXJhdGluZykpOwogICAgZm9udC1mYW1pbHk6IGVpY29ucwp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2hlYWRlciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIHBhZGRpbmctdG9wOiAxNXB4OwogICAgcGFkZGluZy1ib3R0b206IDZweAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2ltYWdlK2NpdGUgewogICAgbWFyZ2luLWxlZnQ6IDlweAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX3NlcGFyYXRvciB7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIGJvcmRlci10b3A6IDA7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UxZThlZDsKICAgIGhlaWdodDogMAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3ItdGVzdGltb25pYWxfX2NvbnRlbnQgewogICAgcGFkZGluZy10b3A6IDZweDsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9fY29udGVudCwKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLXRlc3RpbW9uaWFsX19oZWFkZXIgewogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgcGFkZGluZy1yaWdodDogMTVweAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzLmVsZW1lbnRvci1yZXZpZXctLWhhcy1zZXBhcmF0b3IgLmVsZW1lbnRvci10ZXN0aW1vbmlhbF9faGVhZGVyIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTFlOGVkCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgY3Vyc29yOiBkZWZhdWx0Cn0KCi5zd2lwZXItc2xpZGUgewogICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItd2lkdGg6IDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IC41czsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IC41czsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC41czsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYm9yZGVyLCBiYWNrZ3JvdW5kLCAtd2Via2l0LXRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJvcmRlciwgYmFja2dyb3VuZCwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICAtby10cmFuc2l0aW9uLXByb3BlcnR5OiBib3JkZXIsIGJhY2tncm91bmQsIHRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJvcmRlciwgYmFja2dyb3VuZCwgdHJhbnNmb3JtOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYm9yZGVyLCBiYWNrZ3JvdW5kLCB0cmFuc2Zvcm0sIC13ZWJraXQtdHJhbnNmb3JtOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9Cgouc3dpcGVyLXNsaWRlOm5vdCg6aG92ZXIpIC5lLW92ZXJsYXktYW5pbWF0aW9uLWZhZGUgewogICAgb3BhY2l0eTogMAp9Cgouc3dpcGVyLXNsaWRlOm5vdCg6aG92ZXIpIC5lLW92ZXJsYXktYW5pbWF0aW9uLXNsaWRlLXVwIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKQp9Cgouc3dpcGVyLXNsaWRlOm5vdCg6aG92ZXIpIC5lLW92ZXJsYXktYW5pbWF0aW9uLXNsaWRlLWRvd24gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpCn0KCi5zd2lwZXItc2xpZGU6bm90KDpob3ZlcikgLmUtb3ZlcmxheS1hbmltYXRpb24tc2xpZGUtcmlnaHQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpCn0KCi5zd2lwZXItc2xpZGU6bm90KDpob3ZlcikgLmUtb3ZlcmxheS1hbmltYXRpb24tc2xpZGUtbGVmdCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkKfQoKLnN3aXBlci1zbGlkZTpub3QoOmhvdmVyKSAuZS1vdmVybGF5LWFuaW1hdGlvbi16b29tLWluIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguNSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguNSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC41KTsKICAgIG9wYWNpdHk6IDAKfQoKLnN3aXBlci1zbGlkZSBhIHsKICAgIGRpc3BsYXk6IGlubGluZQp9Cgouc3dpcGVyLXNsaWRlIGEuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLWFycm93cy15ZXMgLmVsZW1lbnRvci1tYWluLXN3aXBlciwKLmVsZW1lbnRvci13aWRnZXQtdGVzdGltb25pYWwtY2Fyb3VzZWwgLmVsZW1lbnRvci1hcnJvd3MteWVzIC5lbGVtZW50b3ItbWFpbi1zd2lwZXIgewogICAgd2lkdGg6IGNhbGMoOTUlIC0gNDBweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuZWxlbWVudG9yLW1haW4tc3dpcGVyLAouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbC1jYXJvdXNlbCAuZWxlbWVudG9yLW1haW4tc3dpcGVyIHsKICAgIHdpZHRoOiA5NSUKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cyAuc3dpcGVyLXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXRlc3RpbW9uaWFsLWNhcm91c2VsIC5zd2lwZXItd3JhcHBlciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOwogICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5zd2lwZXItc2xpZGUsCi5lbGVtZW50b3Itd2lkZ2V0LXRlc3RpbW9uaWFsLWNhcm91c2VsIC5zd2lwZXItc2xpZGUgewogICAgaGVpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MuZWxlbWVudG9yLXBhZ2luYXRpb24tdHlwZS1idWxsZXRzIC5zd2lwZXItY29udGFpbmVyLAouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzLmVsZW1lbnRvci1wYWdpbmF0aW9uLXR5cGUtZnJhY3Rpb24gLnN3aXBlci1jb250YWluZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXRlc3RpbW9uaWFsLWNhcm91c2VsLmVsZW1lbnRvci1wYWdpbmF0aW9uLXR5cGUtYnVsbGV0cyAuc3dpcGVyLWNvbnRhaW5lciwKLmVsZW1lbnRvci13aWRnZXQtdGVzdGltb25pYWwtY2Fyb3VzZWwuZWxlbWVudG9yLXBhZ2luYXRpb24tdHlwZS1mcmFjdGlvbiAuc3dpcGVyLWNvbnRhaW5lciB7CiAgICBwYWRkaW5nLWJvdHRvbTogNDBweAp9CgouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLXdpZGdldC1yZXZpZXdzIC5zd2lwZXItY29udGFpbmVyLXJ0bCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci13aWRnZXQtdGVzdGltb25pYWwtY2Fyb3VzZWwgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYsCi5lbGVtZW50b3Itd2lkZ2V0LXRlc3RpbW9uaWFsLWNhcm91c2VsIC5zd2lwZXItY29udGFpbmVyLXJ0bCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IHVuc2V0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MgLnN3aXBlci1jb250YWluZXItcnRsIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbC1jYXJvdXNlbCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci13aWRnZXQtdGVzdGltb25pYWwtY2Fyb3VzZWwgLnN3aXBlci1jb250YWluZXItcnRsIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogdW5zZXQKfQoKLmVsZW1lbnRvci13aWRnZXQtcmV2aWV3cy5lbGVtZW50b3ItcGFnaW5hdGlvbi10eXBlLWJ1bGxldHMgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3Itd2lkZ2V0LXJldmlld3MuZWxlbWVudG9yLXBhZ2luYXRpb24tdHlwZS1idWxsZXRzIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbC1jYXJvdXNlbC5lbGVtZW50b3ItcGFnaW5hdGlvbi10eXBlLWJ1bGxldHMgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3Itd2lkZ2V0LXRlc3RpbW9uaWFsLWNhcm91c2VsLmVsZW1lbnRvci1wYWdpbmF0aW9uLXR5cGUtYnVsbGV0cyAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICB0b3A6IGNhbGMoNTAlIC0gKDQwcHggLyAyKSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbWVkaWEtY2Fyb3VzZWwgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYsCi5lbGVtZW50b3Itd2lkZ2V0LW1lZGlhLWNhcm91c2VsIC5zd2lwZXItY29udGFpbmVyLXJ0bCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICBsZWZ0OiAxMHB4OwogICAgcmlnaHQ6IHVuc2V0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1lZGlhLWNhcm91c2VsIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLXdpZGdldC1tZWRpYS1jYXJvdXNlbCAuc3dpcGVyLWNvbnRhaW5lci1ydGwgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYgewogICAgcmlnaHQ6IDEwcHg7CiAgICBsZWZ0OiB1bnNldAp9CgouZW50cnktY29udGVudCBibG9ja3F1b3RlLmVsZW1lbnRvci1ibG9ja3F1b3RlOm5vdCguYWxpZ25yaWdodCk6bm90KC5hbGlnbmxlZnQpLAouZW50cnktc3VtbWFyeSBibG9ja3F1b3RlLmVsZW1lbnRvci1ibG9ja3F1b3RlIHsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIG1hcmdpbi1sZWZ0OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWJsb2NrcXVvdGUgYmxvY2txdW90ZSB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgb3V0bGluZTogMDsKICAgIGZvbnQtc2l6ZTogMTAwJTsKICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgcXVvdGVzOiBub25lOwogICAgYm9yZGVyOiAwOwogICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgY29sb3I6ICM1NTU5NWMKfQoKLmVsZW1lbnRvci13aWRnZXQtYmxvY2txdW90ZSBibG9ja3F1b3RlOmFmdGVyLAouZWxlbWVudG9yLXdpZGdldC1ibG9ja3F1b3RlIGJsb2NrcXVvdGU6YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1ibG9ja3F1b3RlIGJsb2NrcXVvdGUgY2l0ZTphZnRlciwKLmVsZW1lbnRvci13aWRnZXQtYmxvY2txdW90ZSBibG9ja3F1b3RlIGNpdGU6YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1ibG9ja3F1b3RlIGJsb2NrcXVvdGUgZm9vdGVyOmFmdGVyLAouZWxlbWVudG9yLXdpZGdldC1ibG9ja3F1b3RlIGJsb2NrcXVvdGUgZm9vdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIGNvbnRlbnQ6IG5vbmUKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbjogLjNzCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZV9fYXV0aG9yLAouZWxlbWVudG9yLWJsb2NrcXVvdGVfX2NvbnRlbnQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbAp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGVfX2F1dGhvciB7CiAgICBmb250LXdlaWdodDogNzAwCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZSBmb290ZXIgewogICAgbWFyZ2luLXRvcDogMTJweDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4KfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b24gewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC4zczsKICAgIC1vLXRyYW5zaXRpb246IC4zczsKICAgIHRyYW5zaXRpb246IC4zczsKICAgIGNvbG9yOiAjMWRhMWYyOwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kOwogICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAtd2Via2l0LW1heC1jb250ZW50OwogICAgd2lkdGg6IC1tb3otbWF4LWNvbnRlbnQ7CiAgICB3aWR0aDogbWF4LWNvbnRlbnQKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b246aG92ZXIgewogICAgY29sb3I6ICMwOTY3YTAKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b24gc3BhbiB7CiAgICBmb250LXdlaWdodDogNjAwCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uIGksCi5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uIHNwYW4gewogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGVfX3R3ZWV0LWJ1dHRvbiBpK3NwYW4sCi5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uIHN2ZytzcGFuIHsKICAgIG1hcmdpbi1sZWZ0OiAuNWVtCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uIHN2ZyB7CiAgICBmaWxsOiAjMWRhMWYyOwogICAgaGVpZ2h0OiAxZW07CiAgICB3aWR0aDogMWVtCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtbGFiZWwgewogICAgd2hpdGUtc3BhY2U6IHByZS13cmFwCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXNraW4tYnViYmxlIC5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uLAouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWJ1dHRvbi1za2luLWNsYXNzaWMgLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b24gewogICAgcGFkZGluZzogLjdlbSAxLjJlbTsKICAgIGJvcmRlci1yYWRpdXM6IDEwMGVtOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiAxNXB4Cn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXNraW4tYnViYmxlIC5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uOmhvdmVyLAouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWJ1dHRvbi1za2luLWNsYXNzaWMgLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b246aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzA5NjdhMDsKICAgIGNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXNraW4tYnViYmxlIC5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uOmhvdmVyOmJlZm9yZSwKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1idXR0b24tc2tpbi1jbGFzc2ljIC5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uOmhvdmVyOmJlZm9yZSB7CiAgICBib3JkZXItcmlnaHQtY29sb3I6ICMwOTY3YTAKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1idXR0b24tc2tpbi1idWJibGUgLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b24gc3ZnLAouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWJ1dHRvbi1za2luLWNsYXNzaWMgLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b24gc3ZnIHsKICAgIGZpbGw6ICNmZmY7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1idXR0b24tc2tpbi1idWJibGUuZWxlbWVudG9yLWJsb2NrcXVvdGUtLWJ1dHRvbi12aWV3LWljb24gLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b24sCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXNraW4tY2xhc3NpYy5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXZpZXctaWNvbiAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX3R3ZWV0LWJ1dHRvbiB7CiAgICBwYWRkaW5nOiAwOwogICAgd2lkdGg6IDJlbTsKICAgIGhlaWdodDogMmVtCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXNraW4tYnViYmxlLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1idXR0b24tdmlldy1pY29uIC5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uIGksCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXNraW4tY2xhc3NpYy5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXZpZXctaWNvbiAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX3R3ZWV0LWJ1dHRvbiBpIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDUwJTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXNraW4tYnViYmxlIC5lbGVtZW50b3ItYmxvY2txdW90ZV9fdHdlZXQtYnV0dG9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIGJvcmRlcjogLjVlbSBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzFkYTFmMjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IC0uOGVtOwogICAgdG9wOiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZVkoLjY1KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGVZKC42NSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGVZKC42NSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC4zczsKICAgIC1vLXRyYW5zaXRpb246IC4zczsKICAgIHRyYW5zaXRpb246IC4zcwp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWJ1dHRvbi1za2luLWJ1YmJsZS5lbGVtZW50b3ItYmxvY2txdW90ZS0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX3R3ZWV0LWJ1dHRvbjpiZWZvcmUgewogICAgcmlnaHQ6IGF1dG87CiAgICBsZWZ0OiAtLjhlbTsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzFkYTFmMjsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWJ1dHRvbi1za2luLWJ1YmJsZS5lbGVtZW50b3ItYmxvY2txdW90ZS0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX3R3ZWV0LWJ1dHRvbjpob3ZlcjpiZWZvcmUgewogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDk2N2EwCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tYnV0dG9uLXNraW4tYnViYmxlLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX3R3ZWV0LWJ1dHRvbjpiZWZvcmUgewogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAtLjhlbTsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItbGVmdC1jb2xvcjogIzFkYTFmMgp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWJ1dHRvbi1za2luLWJ1YmJsZS5lbGVtZW50b3ItYmxvY2txdW90ZS0tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ibG9ja3F1b3RlX190d2VldC1idXR0b246aG92ZXI6YmVmb3JlIHsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDk2N2EwCn0KCi5lbGVtZW50b3ItYmxvY2txdW90ZS0tc2tpbi1ib3hlZCAuZWxlbWVudG9yLWJsb2NrcXVvdGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTllYzsKICAgIHBhZGRpbmc6IDMwcHgKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1za2luLWJvcmRlciAuZWxlbWVudG9yLWJsb2NrcXVvdGUgewogICAgYm9yZGVyLWNvbG9yOiAjZTZlOWVjOwogICAgYm9yZGVyLWxlZnQ6IDdweCAjZTZlOWVjOwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIHBhZGRpbmctbGVmdDogMjBweAp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGUtLXNraW4tcXVvdGF0aW9uIC5lbGVtZW50b3ItYmxvY2txdW90ZTpiZWZvcmUgewogICAgY29udGVudDogIsOi4oKsxZMiOwogICAgZm9udC1zaXplOiAxMDBweDsKICAgIGNvbG9yOiAjZTZlOWVjOwogICAgZm9udC1mYW1pbHk6IFRpbWVzIE5ldyBSb21hbiwgVGltZXMsIHNlcmlmOwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IC42ZW0KfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1za2luLXF1b3RhdGlvbiAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX2NvbnRlbnQgewogICAgbWFyZ2luLXRvcDogMTVweAp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ibG9ja3F1b3RlX19jb250ZW50IHsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYmxvY2txdW90ZSBmb290ZXIgewogICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX2NvbnRlbnQgewogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWJsb2NrcXVvdGUgZm9vdGVyIHsKICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UKfQoKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1ibG9ja3F1b3RlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX2F1dGhvciwKLmVsZW1lbnRvci1ibG9ja3F1b3RlLS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1ibG9ja3F1b3RlIGZvb3RlciB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLWJsb2NrcXVvdGUtLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWJsb2NrcXVvdGVfX3R3ZWV0LWJ1dHRvbiB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogYXV0bwp9CgouZWxlbWVudG9yLWhlYWRsaW5lIHsKICAgIGZvbnQtc2l6ZTogNDNweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtdGV4dCB7CiAgICBjb2xvcjogdmFyKC0tZHluYW1pYy10ZXh0LWNvbG9yLCAjYWViY2I5KQp9CgouZWxlbWVudG9yLWhlYWRsaW5lLS1zdHlsZS1yb3RhdGUgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLWhlYWRsaW5lLS1zdHlsZS1oaWdobGlnaHQgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIgewogICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICB0ZXh0LWFsaWduOiBpbmhlcml0Cn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtLXN0eWxlLWhpZ2hsaWdodCAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtdGV4dCB7CiAgICB6LWluZGV4OiAxCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtLXN0eWxlLWhpZ2hsaWdodCAuZWxlbWVudG9yLWhlYWRsaW5lLXBsYWluLXRleHQgewogICAgei1pbmRleDogMTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLWhlYWRsaW5lLS1zdHlsZS1oaWdobGlnaHQgc3ZnIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgd2lkdGg6IGNhbGMoMTAwJSArIDIwcHgpOwogICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAyMHB4KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIG92ZXJmbG93OiB2aXNpYmxlCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtLXN0eWxlLWhpZ2hsaWdodCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHJlZDsKICAgIHN0cm9rZS13aWR0aDogOTsKICAgIGZpbGw6IG5vbmU7CiAgICBvcGFjaXR5OiAwOwogICAgc3Ryb2tlLWRhc2hhcnJheTogMCAxNTAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAuM3M7CiAgICAtby10cmFuc2l0aW9uOiAuM3M7CiAgICB0cmFuc2l0aW9uOiAuM3MKfQoKLmVsZW1lbnRvci1oZWFkbGluZS5lLWFuaW1hdGVkIHN2ZyBwYXRoIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtZGFzaCBmb3J3YXJkczsKICAgIGFuaW1hdGlvbjogZWxlbWVudG9yLWhlYWRsaW5lLWRhc2ggZm9yd2FyZHM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tYW5pbWF0aW9uLWR1cmF0aW9uLCAxLjJzKTsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tYW5pbWF0aW9uLWR1cmF0aW9uLCAxLjJzKTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEKfQoKLmVsZW1lbnRvci1oZWFkbGluZS5lLWFuaW1hdGVkIHN2ZyBwYXRoOm50aC1vZi10eXBlKDIpIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiBjYWxjKHZhcigtLWFuaW1hdGlvbi1kdXJhdGlvbiwgMS4ycykgLyAyKTsKICAgIGFuaW1hdGlvbi1kZWxheTogY2FsYyh2YXIoLS1hbmltYXRpb24tZHVyYXRpb24sIDEuMnMpIC8gMikKfQoKLmVsZW1lbnRvci1oZWFkbGluZS5lLWhpZGUtaGlnaGxpZ2h0IHN2ZyBwYXRoIHsKICAgIG9wYWNpdHk6IDE7CiAgICBzdHJva2UtZGFzaGFycmF5OiAxNTAwIDE1MDA7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogaGlkZS1oaWdobGlnaHQgLjRzIGZvcndhcmRzOwogICAgYW5pbWF0aW9uOiBoaWRlLWhpZ2hsaWdodCAuNHMgZm9yd2FyZHM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxCn0KCkAtd2Via2l0LWtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtZGFzaCB7CiAgICAwJSB7CiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMCAxNTAwOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KICAgIHRvIHsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiAxNTAwIDE1MDA7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1kYXNoIHsKICAgIDAlIHsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiAwIDE1MDA7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQogICAgdG8gewogICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDE1MDAgMTUwMDsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBoaWRlLWhpZ2hsaWdodCB7CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiAxNTAwIDE1MDAKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgIGZpbHRlcjogYmx1cigxMHB4KQogICAgfQp9CgpAa2V5ZnJhbWVzIGhpZGUtaGlnaGxpZ2h0IHsKICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDE1MDAgMTUwMAogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgZmlsdGVyOiBibHVyKDEwcHgpCiAgICB9Cn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtdGV4dC13cmFwcGVyIHsKICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b20KfQoKLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy10ZXh0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDAKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQuZWxlbWVudG9yLWhlYWRsaW5lLXRleHQtYWN0aXZlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWZsaXAgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIgewogICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogMzAwcHg7CiAgICBwZXJzcGVjdGl2ZTogMzAwcHgKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1mbGlwIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy10ZXh0IHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSAxMDAlOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDUwJSAxMDAlOwogICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDEwMCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1mbGlwIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy10ZXh0LmVsZW1lbnRvci1oZWFkbGluZS10ZXh0LWFjdGl2ZSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZWxlbWVudG9yLWhlYWRsaW5lLWZsaXAtaW4gMS4yczsKICAgIGFuaW1hdGlvbjogZWxlbWVudG9yLWhlYWRsaW5lLWZsaXAtaW4gMS4ycwp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWZsaXAgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQuZWxlbWVudG9yLWhlYWRsaW5lLXRleHQtaW5hY3RpdmUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpOwogICAgLXdlYmtpdC1hbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1mbGlwLW91dCAxLjJzOwogICAgYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtZmxpcC1vdXQgMS4ycwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLWZsaXAtaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZyk7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQogICAgMzUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgxMjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgxMjBkZWcpOwogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIDY1JSB7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDF0dXJuKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMXR1cm4pOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtZmxpcC1pbiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICAzNSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDEyMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVYKDEyMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQogICAgNjUlIHsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMXR1cm4pOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgxdHVybik7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLWZsaXAtb3V0IHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQogICAgMzUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgtNDBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgtNDBkZWcpOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KICAgIDY1JSB7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZyk7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1mbGlwLW91dCB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KICAgIDM1JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoLTQwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoLTQwZGVnKTsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9CiAgICA2NSUgewogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpOwogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS10eXBpbmcgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIgewogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIG92ZXJmbG93OiBoaWRkZW4KfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS10eXBpbmcgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXI6YWZ0ZXIgewogICAgY29udGVudDogIiI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IDA7CiAgICB0b3A6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIGhlaWdodDogOTAlOwogICAgd2lkdGg6IDFweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwZDBkMGQKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS10eXBpbmcgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXI6bm90KC5lbGVtZW50b3ItaGVhZGxpbmUtdHlwaW5nLXNlbGVjdGVkKTphZnRlciB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZWxlbWVudG9yLWhlYWRsaW5lLXB1bHNlIDFzIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtcHVsc2UgMXMgaW5maW5pdGUKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS10eXBpbmcgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIuZWxlbWVudG9yLWhlYWRsaW5lLXR5cGluZy1zZWxlY3RlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10eXBpbmctc2VsZWN0ZWQtYmctY29sb3IsICMwZDBkMGQpCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtdHlwaW5nIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyLmVsZW1lbnRvci1oZWFkbGluZS10eXBpbmctc2VsZWN0ZWQ6YWZ0ZXIgewogICAgdmlzaWJpbGl0eTogaGlkZGVuCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtdHlwaW5nIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyLmVsZW1lbnRvci1oZWFkbGluZS10eXBpbmctc2VsZWN0ZWQgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQgewogICAgY29sb3I6IHZhcigtLXR5cGluZy1zZWxlY3RlZC1jb2xvciwgdmFyKC0tZHluYW1pYy10ZXh0LWNvbG9yKSwgI2FlYmNiOSkKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS10eXBpbmcgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQ6bm90KC5lbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1hY3RpdmUpIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbgp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXR5cGluZyAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtbGV0dGVyOm5vdCguZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi1pbikgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdmlzaWJpbGl0eTogaGlkZGVuCn0KCkAtd2Via2l0LWtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtcHVsc2UgewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9CiAgICA0MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKC45KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoLjkpOwogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMCk7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1wdWxzZSB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEpOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KICAgIDQwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoLjkpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSguOSk7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9Cn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtc3dpcmwgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIgewogICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogMzAwcHg7CiAgICBwZXJzcGVjdGl2ZTogMzAwcHgKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1zd2lybCAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtbGV0dGVyIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtc3dpcmwgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxLjAwMDUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGVYKDEuMDAwNSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxLjAwMDUpOwogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXN3aXJsIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy1sZXR0ZXIgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOwogICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMjBweCkgcm90YXRlWCg5MGRlZyk7CiAgICBvcGFjaXR5OiAwCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1hY3RpdmUgLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1zd2lybCAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtbGV0dGVyIHsKICAgIG9wYWNpdHk6IDEKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1zd2lybCAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtbGV0dGVyLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24taW4gewogICAgLXdlYmtpdC1hbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zd2lybC1pbiAuNHMgZm9yd2FyZHM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zd2lybC1pbiAuNHMgZm9yd2FyZHMKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1zd2lybCAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtbGV0dGVyOm5vdCguZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi1pbikgewogICAgLXdlYmtpdC1hbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zd2lybC1vdXQgLjRzIGZvcndhcmRzOwogICAgYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtc3dpcmwtb3V0IC40cyBmb3J3YXJkcwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLXN3aXJsLWluIHsKICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKDkwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoOTBkZWcpCiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoLTEwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoLTEwZGVnKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKDBkZWcpCiAgICB9Cn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLXN3aXJsLWluIHsKICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKDkwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoOTBkZWcpCiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoLTEwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoLTEwZGVnKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKDBkZWcpCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtc3dpcmwtb3V0IHsKICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMjBweCkgcm90YXRlWCgwKQogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKC0xMDBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMjBweCkgcm90YXRlWCgtMTAwZGVnKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoLTkwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoLTkwZGVnKQogICAgfQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1zd2lybC1vdXQgewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKDApCiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTIwcHgpIHJvdGF0ZVgoLTEwMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0yMHB4KSByb3RhdGVYKC0xMDBkZWcpCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigtMjBweCkgcm90YXRlWCgtOTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMjBweCkgcm90YXRlWCgtOTBkZWcpCiAgICB9Cn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtc2xpZGUtZG93biAuZWxlbWVudG9yLWhlYWRsaW5lLXRleHQtd3JhcHBlciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAuMmVtIDAKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1zbGlkZS1kb3duIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtc2xpZGUtZG93biAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtdGV4dCB7CiAgICBvcGFjaXR5OiAwOwogICAgdG9wOiAuMmVtCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtc2xpZGUtZG93biAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtdGV4dC5lbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1hY3RpdmUgewogICAgdG9wOiAwOwogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtc2xpZGUtZG93bi1pbiAuNnM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1kb3duLWluIC42cwp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXNsaWRlLWRvd24gLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQuZWxlbWVudG9yLWhlYWRsaW5lLXRleHQtaW5hY3RpdmUgewogICAgLXdlYmtpdC1hbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1kb3duLW91dCAuNnM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1kb3duLW91dCAuNnMKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1kb3duLWluIHsKICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpCiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAlKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApCiAgICB9Cn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLXNsaWRlLWRvd24taW4gewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1kb3duLW91dCB7CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMjAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTIwJSkKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKQogICAgfQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1kb3duLW91dCB7CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMjAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTIwJSkKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKQogICAgfQp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWNsaXAgLmVsZW1lbnRvci1oZWFkbGluZS10ZXh0LXdyYXBwZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogLjJlbSAwCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtY2xpcCAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtd3JhcHBlciB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdmVydGljYWwtYWxpZ246IHRvcAp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWNsaXAgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXI6YWZ0ZXIgewogICAgY29udGVudDogIiI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogMnB4OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzBkMGQwZAp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWNsaXAgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQgewogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWNsaXAgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQuZWxlbWVudG9yLWhlYWRsaW5lLXRleHQtYWN0aXZlIHsKICAgIG9wYWNpdHk6IDEKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1kcm9wLWluIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyIHsKICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6IDMwMHB4OwogICAgcGVyc3BlY3RpdmU6IDMwMHB4Cn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtZHJvcC1pbiAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtdGV4dCB7CiAgICBvcGFjaXR5OiAwCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtZHJvcC1pbiAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtdGV4dC5lbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1hY3RpdmUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtZHJvcC1pbi1pbiAuOHM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1kcm9wLWluLWluIC44cwp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWRyb3AtaW4gLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQuZWxlbWVudG9yLWhlYWRsaW5lLXRleHQtaW5hY3RpdmUgewogICAgLXdlYmtpdC1hbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1kcm9wLWluLW91dCAuOHM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1kcm9wLWluLW91dCAuOHMKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1kcm9wLWluLWluIHsKICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDEwMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMTAwcHgpCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkKICAgIH0KfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtZHJvcC1pbi1pbiB7CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigxMDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDEwMHB4KQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtZHJvcC1pbi1vdXQgewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTAwcHgpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTAwcHgpCiAgICB9Cn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLWRyb3AtaW4tb3V0IHsKICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwMHB4KQogICAgfQp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWJsaW5kcyAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtd3JhcHBlciB7CiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAzMDBweDsKICAgIHBlcnNwZWN0aXZlOiAzMDBweAp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWJsaW5kcyAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtdGV4dCB7CiAgICBvcGFjaXR5OiAwCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtYmxpbmRzIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy1sZXR0ZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW4KfQoKLmVsZW1lbnRvci1oZWFkbGluZS10ZXh0LWFjdGl2ZSAuZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWJsaW5kcyAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtbGV0dGVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtYmxpbmRzIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy1sZXR0ZXIuZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi1pbiB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZWxlbWVudG9yLWhlYWRsaW5lLWJsaW5kcy1pbiAuNnMgZm9yd2FyZHM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1ibGluZHMtaW4gLjZzIGZvcndhcmRzCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtYmxpbmRzIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy1sZXR0ZXI6bm90KC5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLWluKSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZWxlbWVudG9yLWhlYWRsaW5lLWJsaW5kcy1vdXQgLjZzIGZvcndhcmRzOwogICAgYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtYmxpbmRzLW91dCAuNnMgZm9yd2FyZHMKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1ibGluZHMtaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZykKICAgIH0KfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtYmxpbmRzLWluIHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtYmxpbmRzLW91dCB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDApCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoLTE4MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKC0xODBkZWcpCiAgICB9Cn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLWJsaW5kcy1vdXQgewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDApOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgwKQogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKC0xODBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgtMTgwZGVnKQogICAgfQp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXdhdmUgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQgewogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXdhdmUgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLWxldHRlciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1hY3RpdmUgLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS13YXZlIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy1sZXR0ZXIgewogICAgb3BhY2l0eTogMQp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXdhdmUgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLWxldHRlci5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLWluIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtd2F2ZS11cCAuNnMgZm9yd2FyZHM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS13YXZlLXVwIC42cyBmb3J3YXJkcwp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXdhdmUgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLWxldHRlcjpub3QoLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24taW4pIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBlbGVtZW50b3ItaGVhZGxpbmUtd2F2ZS1kb3duIC42cyBmb3J3YXJkczsKICAgIGFuaW1hdGlvbjogZWxlbWVudG9yLWhlYWRsaW5lLXdhdmUtZG93biAuNnMgZm9yd2FyZHMKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS13YXZlLXVwIHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICA2MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS13YXZlLXVwIHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICA2MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLXdhdmUtZG93biB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQogICAgNjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9Cn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWhlYWRsaW5lLXdhdmUtZG93biB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQogICAgNjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9Cn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtc2xpZGUgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQgewogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXNsaWRlIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy10ZXh0LmVsZW1lbnRvci1oZWFkbGluZS10ZXh0LWFjdGl2ZSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC1hbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1pbiAuNnM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1pbiAuNnMKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1zbGlkZSAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtdGV4dC5lbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1pbmFjdGl2ZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZWxlbWVudG9yLWhlYWRsaW5lLXNsaWRlLW91dCAuNnM7CiAgICBhbmltYXRpb246IGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1vdXQgLjZzCn0KCkAtd2Via2l0LWtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtc2xpZGUtaW4gewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMCUpCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkKICAgIH0KfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtc2xpZGUtaW4gewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMCUpCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGVsZW1lbnRvci1oZWFkbGluZS1zbGlkZS1vdXQgewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApCiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTEwJSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDExMCUpCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkKICAgIH0KfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItaGVhZGxpbmUtc2xpZGUtb3V0IHsKICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKQogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDExMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMTAlKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpCiAgICB9Cn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtYmxpbmRzIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyLAouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLWRyb3AtaW4gLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIsCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtZmxpcCAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtd3JhcHBlciwKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1zbGlkZS1kb3duIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyLAouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXNsaWRlIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyLAouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXN3aXJsIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy13cmFwcGVyLAouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXdhdmUgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAuNXM7CiAgICAtby10cmFuc2l0aW9uOiB3aWR0aCAuNXM7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAuNXMKfQoKLmVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24tdHlwZS1ibGluZHMgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIsCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtc3dpcmwgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXdyYXBwZXIsCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtd2F2ZSAuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtd3JhcHBlciB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3ItaGVhZGxpbmUtYW5pbWF0aW9uLXR5cGUtYmxpbmRzIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy10ZXh0LAouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXN3aXJsIC5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy10ZXh0LAouZWxlbWVudG9yLWhlYWRsaW5lLWFuaW1hdGlvbi10eXBlLXdhdmUgLmVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcAp9CgouZWxlbWVudG9yLW1zaWUgLmVsZW1lbnRvci1oZWFkbGluZS0tc3R5bGUtaGlnaGxpZ2h0IHN2ZyB7CiAgICB0b3A6IGF1dG87CiAgICBsZWZ0OiBhdXRvOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCUpCn0KCkAtd2Via2l0LWtleWZyYW1lcyBlLWhvdHNwb3Qtc29mdC1iZWF0IHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKQogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKQogICAgfQp9CgpAa2V5ZnJhbWVzIGUtaG90c3BvdC1zb2Z0LWJlYXQgewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBlLWhvdHNwb3QtZXhwYW5kIHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjUpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoLjUpOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQp9CgpAa2V5ZnJhbWVzIGUtaG90c3BvdC1leHBhbmQgewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguNSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguNSk7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjUpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhvdHNwb3QgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1wYWNrOiB2YXIoLS1iYWNrZ3JvdW5kLWFsaWduKTsKICAgIC1tcy1mbGV4LXBhY2s6IHZhcigtLWJhY2tncm91bmQtYWxpZ24pOwogICAganVzdGlmeS1jb250ZW50OiB2YXIoLS1iYWNrZ3JvdW5kLWFsaWduKQp9CgouZWxlbWVudG9yLXdpZGdldC1ob3RzcG90IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogdmFyKC0tY29udGFpbmVyLXdpZHRoKTsKICAgIG1heC13aWR0aDogdmFyKC0tY29udGFpbmVyLW1heC13aWR0aCk7CiAgICBoZWlnaHQ6IHZhcigtLWNvbnRhaW5lci1oZWlnaHQpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhvdHNwb3QgLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyPmltZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiB2YXIoLS1pbWFnZS13aWR0aCwgYXV0byk7CiAgICBoZWlnaHQ6IHZhcigtLWNvbnRhaW5lci1oZWlnaHQpOwogICAgb3BhY2l0eTogdmFyKC0tb3BhY2l0eSwgMSkKfQoKLmUtaG90c3BvdCB7CiAgICB6LWluZGV4OiAxOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQp9CgouZS1ob3RzcG90LS1wb3NpdGlvbi1sZWZ0LmUtaG90c3BvdC0tcG9zaXRpb24tdG9wIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtMSAqIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXgpKSwgY2FsYygtMSAqIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXkpKSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtMSAqIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXgpKSwgY2FsYygtMSAqIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXkpKSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKC0xICogdmFyKC0taG90c3BvdC10cmFuc2xhdGUteCkpLCBjYWxjKC0xICogdmFyKC0taG90c3BvdC10cmFuc2xhdGUteSkpKQp9CgouZS1ob3RzcG90LS1wb3NpdGlvbi1sZWZ0LmUtaG90c3BvdC0tcG9zaXRpb24tYm90dG9tIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtMSAqIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXgpKSwgdmFyKC0taG90c3BvdC10cmFuc2xhdGUteSkpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKGNhbGMoLTEgKiB2YXIoLS1ob3RzcG90LXRyYW5zbGF0ZS14KSksIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXkpKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKGNhbGMoLTEgKiB2YXIoLS1ob3RzcG90LXRyYW5zbGF0ZS14KSksIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXkpKQp9CgouZS1ob3RzcG90LS1wb3NpdGlvbi1yaWdodC5lLWhvdHNwb3QtLXBvc2l0aW9uLXRvcCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXgpLCBjYWxjKC0xICogdmFyKC0taG90c3BvdC10cmFuc2xhdGUteSkpKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS1ob3RzcG90LXRyYW5zbGF0ZS14KSwgY2FsYygtMSAqIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXkpKSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS1ob3RzcG90LXRyYW5zbGF0ZS14KSwgY2FsYygtMSAqIHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXkpKSkKfQoKLmUtaG90c3BvdC0tcG9zaXRpb24tcmlnaHQuZS1ob3RzcG90LS1wb3NpdGlvbi1ib3R0b20gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS1ob3RzcG90LXRyYW5zbGF0ZS14KSwgdmFyKC0taG90c3BvdC10cmFuc2xhdGUteSkpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLWhvdHNwb3QtdHJhbnNsYXRlLXgpLCB2YXIoLS1ob3RzcG90LXRyYW5zbGF0ZS15KSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS1ob3RzcG90LXRyYW5zbGF0ZS14KSwgdmFyKC0taG90c3BvdC10cmFuc2xhdGUteSkpCn0KCi5lLWhvdHNwb3QtLWFjdGl2ZSB7CiAgICB6LWluZGV4OiAyCn0KCi5lLWhvdHNwb3RfX2lubmVyLWNpcmNsZSwKLmUtaG90c3BvdF9fb3V0ZXItY2lyY2xlIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgYm9yZGVyLXJhZGl1czogNTAlCn0KCi5lLWhvdHNwb3RfX2lubmVyLWNpcmNsZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWhvdHNwb3QtY29sb3IpOwogICAgcGFkZGluZzogY2FsYyh2YXIoLS1ob3RzcG90LXNpemUsIDE4cHgpIC8gMikKfQoKLmUtaG90c3BvdF9fb3V0ZXItY2lyY2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWhvdHNwb3QtY29sb3IpOwogICAgcGFkZGluZzogdmFyKC0taG90c3BvdC1wYWRkaW5nLCA0cHgpCn0KCi5lLWhvdHNwb3QtLWljb24gLmUtaG90c3BvdF9fYnV0dG9uLAouZS1ob3RzcG90X19vdXRlci1jaXJjbGUgewogICAgd2lkdGg6IHZhcigtLWhvdHNwb3Qtc2l6ZSwgMThweCk7CiAgICBoZWlnaHQ6IHZhcigtLWhvdHNwb3Qtc2l6ZSwgMThweCkKfQoKLmUtaG90c3BvdC0taWNvbiAuZS1ob3RzcG90X19idXR0b24gewogICAgbGluZS1oZWlnaHQ6IDA7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBmb250LXNpemU6IHZhcigtLWhvdHNwb3Qtc2l6ZSwgMThweCkKfQoKLmUtaG90c3BvdF9faWNvbiwKLmUtaG90c3BvdF9fbGFiZWwgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZS1ob3RzcG90X19pY29uIHN2ZywKLmUtaG90c3BvdF9fbGFiZWwgc3ZnIHsKICAgIHdpZHRoOiB2YXIoLS1ob3RzcG90LXNpemUsIDE4cHgpOwogICAgaGVpZ2h0OiBhdXRvCn0KCi5lLWhvdHNwb3RfX2J1dHRvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY29sb3I6IHZhcigtLWhvdHNwb3QtY29sb3IpOwogICAgZm9udC1zaXplOiB2YXIoLS1ob3RzcG90LXNpemUsIDE4cHgpOwogICAgbWluLXdpZHRoOiB2YXIoLS1ob3RzcG90LWJ1dHRvbi13aWR0aCk7CiAgICBtaW4taGVpZ2h0OiB2YXIoLS1ob3RzcG90LWJ1dHRvbi1oZWlnaHQpCn0KCi5lLWhvdHNwb3RfX2J1dHRvbjpiZWZvcmUgewogICAgei1pbmRleDogLTI7CiAgICBjb250ZW50OiAiIjsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgbGVmdDogLTVweDsKICAgIHRvcDogLTVweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHBhZGRpbmc6IDVweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveAp9CgouZS1ob3RzcG90X19idXR0b24gc3ZnIHsKICAgIGZpbGw6IHZhcigtLWhvdHNwb3QtY29sb3IpCn0KCi5lLWhvdHNwb3Q6bm90KC5lLWhvdHNwb3QtLWNpcmNsZSkgLmUtaG90c3BvdF9fYnV0dG9uIHsKICAgIG1pbi13aWR0aDogdmFyKC0taG90c3BvdC1taW4td2lkdGgpOwogICAgbWluLWhlaWdodDogdmFyKC0taG90c3BvdC1taW4taGVpZ2h0KTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWhvdHNwb3QtYm94LWNvbG9yKTsKICAgIHBhZGRpbmc6IHZhcigtLWhvdHNwb3QtcGFkZGluZywgNHB4KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWhvdHNwb3QtYm9yZGVyLXJhZGl1cywgM3B4KQp9CgouZS1ob3RzcG90Om5vdCguZS1ob3RzcG90LS1jaXJjbGUpIC5lLWhvdHNwb3RfX2J1dHRvbjpiZWZvcmUgewogICAgYm9yZGVyLXJhZGl1czogdmFyKC0taG90c3BvdC1ib3JkZXItcmFkaXVzLCAzcHgpCn0KCi5lLWhvdHNwb3Q6bm90KC5lLWhvdHNwb3QtLWNpcmNsZSkgLmUtaG90c3BvdC0tZXhwYW5kOmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ob3RzcG90LWJveC1jb2xvcikKfQoKLmUtaG90c3BvdC0tb3ZlcmxheSB7CiAgICBvcGFjaXR5OiAuNzsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAuMnM7CiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IC4yczsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzCn0KCi5lLWhvdHNwb3QtLWFjdGl2ZSAuZS1ob3RzcG90LS1vdmVybGF5LAouZS1ob3RzcG90LS1vdmVybGF5OmhvdmVyIHsKICAgIG9wYWNpdHk6IDEKfQoKLmUtaG90c3BvdC0tc29mdC1iZWF0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBlLWhvdHNwb3Qtc29mdC1iZWF0IC43cyBpbmZpbml0ZSBhbHRlcm5hdGU7CiAgICBhbmltYXRpb246IGUtaG90c3BvdC1zb2Z0LWJlYXQgLjdzIGluZmluaXRlIGFsdGVybmF0ZTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UKfQoKLmUtaG90c3BvdC0tZXhwYW5kIC5lLWhvdHNwb3RfX291dGVyLWNpcmNsZSwKLmUtaG90c3BvdDpub3QoLmUtaG90c3BvdC0tY2lyY2xlKSAuZS1ob3RzcG90LS1leHBhbmQ6YmVmb3JlIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBlLWhvdHNwb3QtZXhwYW5kIDJzIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBlLWhvdHNwb3QtZXhwYW5kIDJzIGluZmluaXRlCn0KCi5lLWhvdHNwb3Q6bm90KC5lLWhvdHNwb3QtLWNpcmNsZSkgLmUtaG90c3BvdC0tZXhwYW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogLTE7CiAgICBvcGFjaXR5OiAwCn0KCi5lLWhvdHNwb3QtLXNlcXVlbmNlZCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmFkZUluIC4zczsKICAgIGFuaW1hdGlvbjogZmFkZUluIC4zczsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoCn0KCi5lLWhvdHNwb3RfX2RpcmVjdGlvbi1tYXNrIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgouZS1ob3RzcG90X190b29sdGlwIHsKICAgIHdoaXRlLXNwYWNlOiB2YXIoLS13aGl0ZS1zcGFjZSwgbm93cmFwKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTsKICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eSwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXRvb2x0aXAtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjVzKTsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXRvb2x0aXAtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjVzKTsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXRvb2x0aXAtdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjVzKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgY29sb3I6IHZhcigtLXRvb2x0aXAtdGV4dC1jb2xvciwgI2ZmZik7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS10b29sdGlwLWFsaWduKTsKICAgIG1pbi13aWR0aDogdmFyKC0tdG9vbHRpcC1taW4td2lkdGgpOwogICAgcGFkZGluZzogdmFyKC0tdG9vbHRpcC1wYWRkaW5nLCA4cHgpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdG9vbHRpcC1ib3JkZXItcmFkaXVzKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRvb2x0aXAtY29sb3IpCn0KCi5lLWhvdHNwb3RfX3Rvb2x0aXAgcDpsYXN0LW9mLXR5cGUgewogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouZS1ob3RzcG90X19kaXJlY3Rpb24tbWFzayAuZS1ob3RzcG90X190b29sdGlwIHsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IHN0YXRpYwp9CgouZS1ob3RzcG90LS1hY3RpdmUgLmUtaG90c3BvdF9fdG9vbHRpcCB7CiAgICBwb2ludGVyLWV2ZW50czogdmlzaWJsZQp9CgouZS1ob3RzcG90LS1mYWRlLWluLW91dCB7CiAgICBvcGFjaXR5OiAwCn0KCi5lLWhvdHNwb3QtLWFjdGl2ZSAuZS1ob3RzcG90LS1mYWRlLWluLW91dCB7CiAgICBvcGFjaXR5OiAxCn0KCi5lLWhvdHNwb3QtLWZhZGUtZ3JvdyB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApCn0KCi5lLWhvdHNwb3QtLWFjdGl2ZSAuZS1ob3RzcG90LS1mYWRlLWdyb3cgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKQp9CgouZS1ob3RzcG90LS1vdmVycmlkZS10b29sdGlwLWFuaW1hdGlvbi1mcm9tLXRvcCwKLmUtaG90c3BvdC0tdG9vbHRpcC1hbmltYXRpb24tZnJvbS10b3AgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMTAwJSAtIDFweCkpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0xMDAlIC0gMXB4KSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMTAwJSAtIDFweCkpCn0KCi5lLWhvdHNwb3QtLW92ZXJyaWRlLXRvb2x0aXAtYW5pbWF0aW9uLWZyb20tbGVmdCwKLmUtaG90c3BvdC0tdG9vbHRpcC1hbmltYXRpb24tZnJvbS1sZWZ0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtMTAwJSAtIDFweCkpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKGNhbGMoLTEwMCUgLSAxcHgpKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKGNhbGMoLTEwMCUgLSAxcHgpKQp9CgouZS1ob3RzcG90LS1vdmVycmlkZS10b29sdGlwLWFuaW1hdGlvbi1mcm9tLXJpZ2h0LAouZS1ob3RzcG90LS10b29sdGlwLWFuaW1hdGlvbi1mcm9tLXJpZ2h0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygxMDAlICsgMXB4KSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygxMDAlICsgMXB4KSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKDEwMCUgKyAxcHgpKQp9CgouZS1ob3RzcG90LS1vdmVycmlkZS10b29sdGlwLWFuaW1hdGlvbi1mcm9tLWJvdHRvbSwKLmUtaG90c3BvdC0tdG9vbHRpcC1hbmltYXRpb24tZnJvbS1ib3R0b20gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygxMDAlICsgMXB4KSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoMTAwJSArIDFweCkpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoMTAwJSArIDFweCkpCn0KCi5lLWhvdHNwb3QtLWZhZGUtZGlyZWN0aW9uIHsKICAgIG9wYWNpdHk6IDAKfQoKLmUtaG90c3BvdC0tYWN0aXZlIC5lLWhvdHNwb3QtLWZhZGUtZGlyZWN0aW9uLAouZS1ob3RzcG90LS1hY3RpdmUgLmUtaG90c3BvdC0tc2xpZGUtZGlyZWN0aW9uIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCkgc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCkgc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKSBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDEKfQoKLmUtaG90c3BvdC0tc2hvdy10b29sdGlwIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKICAgIC1vLXRyYW5zaXRpb246IG5vbmU7CiAgICB0cmFuc2l0aW9uOiBub25lOwogICAgb3BhY2l0eTogMTsKICAgIHBvaW50ZXItZXZlbnRzOiB2aXNpYmxlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDApCn0KCi5lbGVtZW50b3ItZmFjZWJvb2std2lkZ2V0LmZiX2lmcmFtZV93aWRnZXQsCi5lbGVtZW50b3ItZmFjZWJvb2std2lkZ2V0LmZiX2lmcmFtZV93aWRnZXQgc3BhbiB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Cn0KCi5lbGVtZW50b3ItZmFjZWJvb2std2lkZ2V0LmZiX2lmcmFtZV93aWRnZXQgaWZyYW1lIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQKfQoKLmVsZW1lbnRvci1mYWNlYm9vay13aWRnZXQuZmItbGlrZSB7CiAgICBoZWlnaHQ6IDFweAp9CgouZWxlbWVudG9yLXdpZGdldC1mYWNlYm9vay1jb21tZW50cyBpZnJhbWUgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudAp9Cgouc2l0ZS1tYWluIC5tZW51LW5hdmlnYXRpb24tY29udGFpbmVyIHsKICAgIG92ZXJmbG93OiB2aXNpYmxlCn0KCi5lbGVtZW50b3ItaXRlbTphZnRlciwKLmVsZW1lbnRvci1pdGVtOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbjogLjNzOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC41OCwgLjMsIC4wMDUsIDEpOwogICAgLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNTgsIC4zLCAuMDA1LCAxKTsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjU4LCAuMywgLjAwNSwgMSkKfQoKLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLWl0ZW0tYWN0aXZlOmFmdGVyLAouZWxlbWVudG9yLWl0ZW0tYWN0aXZlOmJlZm9yZSwKLmVsZW1lbnRvci1pdGVtLmhpZ2hsaWdodGVkOmFmdGVyLAouZWxlbWVudG9yLWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouZWxlbWVudG9yLWl0ZW06Zm9jdXM6YWZ0ZXIsCi5lbGVtZW50b3ItaXRlbTpmb2N1czpiZWZvcmUsCi5lbGVtZW50b3ItaXRlbTpob3ZlcjphZnRlciwKLmVsZW1lbnRvci1pdGVtOmhvdmVyOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLmUtLXBvaW50ZXItZG91YmxlLWxpbmUgLmVsZW1lbnRvci1pdGVtOmFmdGVyLAouZS0tcG9pbnRlci1kb3VibGUtbGluZSAuZWxlbWVudG9yLWl0ZW06YmVmb3JlLAouZS0tcG9pbnRlci1vdmVybGluZSAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIsCi5lLS1wb2ludGVyLW92ZXJsaW5lIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUsCi5lLS1wb2ludGVyLXVuZGVybGluZSAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIsCi5lLS1wb2ludGVyLXVuZGVybGluZSAuZWxlbWVudG9yLWl0ZW06YmVmb3JlIHsKICAgIGhlaWdodDogM3B4OwogICAgd2lkdGg6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTk1YzsKICAgIHotaW5kZXg6IDIKfQoKLmUtLXBvaW50ZXItZG91YmxlLWxpbmUuZS0tYW5pbWF0aW9uLWdyb3cgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmUtLXBvaW50ZXItZG91YmxlLWxpbmUuZS0tYW5pbWF0aW9uLWdyb3cgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5lLS1wb2ludGVyLW92ZXJsaW5lLmUtLWFuaW1hdGlvbi1ncm93IC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5lLS1wb2ludGVyLW92ZXJsaW5lLmUtLWFuaW1hdGlvbi1ncm93IC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouZS0tcG9pbnRlci11bmRlcmxpbmUuZS0tYW5pbWF0aW9uLWdyb3cgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmUtLXBvaW50ZXItdW5kZXJsaW5lLmUtLWFuaW1hdGlvbi1ncm93IC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIGhlaWdodDogMDsKICAgIHdpZHRoOiAwOwogICAgbGVmdDogNTAlCn0KCi5lLS1wb2ludGVyLWRvdWJsZS1saW5lLmUtLWFuaW1hdGlvbi1kcm9wLW91dCAuZWxlbWVudG9yLWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5lbGVtZW50b3ItaXRlbS1hY3RpdmUpOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmUtLXBvaW50ZXItb3ZlcmxpbmUuZS0tYW5pbWF0aW9uLWRyb3Atb3V0IC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouZS0tcG9pbnRlci11bmRlcmxpbmUuZS0tYW5pbWF0aW9uLWRyb3Atb3V0IC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIHRvcDogMTBweAp9CgouZS0tcG9pbnRlci1kb3VibGUtbGluZS5lLS1hbmltYXRpb24tZHJvcC1vdXQgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmUtLXBvaW50ZXItb3ZlcmxpbmUuZS0tYW5pbWF0aW9uLWRyb3Atb3V0IC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5lLS1wb2ludGVyLXVuZGVybGluZS5lLS1hbmltYXRpb24tZHJvcC1vdXQgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICBib3R0b206IDEwcHgKfQoKLmUtLXBvaW50ZXItZG91YmxlLWxpbmUuZS0tYW5pbWF0aW9uLWRyb3AtaW4gLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5lLS1wb2ludGVyLW92ZXJsaW5lLmUtLWFuaW1hdGlvbi1kcm9wLWluIC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouZS0tcG9pbnRlci11bmRlcmxpbmUuZS0tYW5pbWF0aW9uLWRyb3AtaW4gLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgdG9wOiAtMTBweAp9CgouZS0tcG9pbnRlci1kb3VibGUtbGluZS5lLS1hbmltYXRpb24tZHJvcC1pbiAuZWxlbWVudG9yLWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5lbGVtZW50b3ItaXRlbS1hY3RpdmUpOm5vdCguaGlnaGxpZ2h0ZWQpOmFmdGVyLAouZS0tcG9pbnRlci1vdmVybGluZS5lLS1hbmltYXRpb24tZHJvcC1pbiAuZWxlbWVudG9yLWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5lbGVtZW50b3ItaXRlbS1hY3RpdmUpOm5vdCguaGlnaGxpZ2h0ZWQpOmFmdGVyLAouZS0tcG9pbnRlci11bmRlcmxpbmUuZS0tYW5pbWF0aW9uLWRyb3AtaW4gLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICBib3R0b206IC0xMHB4Cn0KCi5lLS1wb2ludGVyLWRvdWJsZS1saW5lLmUtLWFuaW1hdGlvbi1ub25lLAouZS0tcG9pbnRlci1kb3VibGUtbGluZS5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW0sCi5lLS1wb2ludGVyLWRvdWJsZS1saW5lLmUtLWFuaW1hdGlvbi1ub25lIC5lbGVtZW50b3ItaXRlbTphZnRlciwKLmUtLXBvaW50ZXItZG91YmxlLWxpbmUuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmJlZm9yZSwKLmUtLXBvaW50ZXItZG91YmxlLWxpbmUuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmZvY3VzLAouZS0tcG9pbnRlci1kb3VibGUtbGluZS5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06aG92ZXIsCi5lLS1wb2ludGVyLWRvdWJsZS1saW5lLmUtLWFuaW1hdGlvbi1ub25lOmFmdGVyLAouZS0tcG9pbnRlci1kb3VibGUtbGluZS5lLS1hbmltYXRpb24tbm9uZTpiZWZvcmUsCi5lLS1wb2ludGVyLWRvdWJsZS1saW5lLmUtLWFuaW1hdGlvbi1ub25lOmZvY3VzLAouZS0tcG9pbnRlci1kb3VibGUtbGluZS5lLS1hbmltYXRpb24tbm9uZTpob3ZlciwKLmUtLXBvaW50ZXItb3ZlcmxpbmUuZS0tYW5pbWF0aW9uLW5vbmUsCi5lLS1wb2ludGVyLW92ZXJsaW5lLmUtLWFuaW1hdGlvbi1ub25lIC5lbGVtZW50b3ItaXRlbSwKLmUtLXBvaW50ZXItb3ZlcmxpbmUuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmFmdGVyLAouZS0tcG9pbnRlci1vdmVybGluZS5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06YmVmb3JlLAouZS0tcG9pbnRlci1vdmVybGluZS5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06Zm9jdXMsCi5lLS1wb2ludGVyLW92ZXJsaW5lLmUtLWFuaW1hdGlvbi1ub25lIC5lbGVtZW50b3ItaXRlbTpob3ZlciwKLmUtLXBvaW50ZXItb3ZlcmxpbmUuZS0tYW5pbWF0aW9uLW5vbmU6YWZ0ZXIsCi5lLS1wb2ludGVyLW92ZXJsaW5lLmUtLWFuaW1hdGlvbi1ub25lOmJlZm9yZSwKLmUtLXBvaW50ZXItb3ZlcmxpbmUuZS0tYW5pbWF0aW9uLW5vbmU6Zm9jdXMsCi5lLS1wb2ludGVyLW92ZXJsaW5lLmUtLWFuaW1hdGlvbi1ub25lOmhvdmVyLAouZS0tcG9pbnRlci11bmRlcmxpbmUuZS0tYW5pbWF0aW9uLW5vbmUsCi5lLS1wb2ludGVyLXVuZGVybGluZS5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW0sCi5lLS1wb2ludGVyLXVuZGVybGluZS5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIsCi5lLS1wb2ludGVyLXVuZGVybGluZS5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06YmVmb3JlLAouZS0tcG9pbnRlci11bmRlcmxpbmUuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmZvY3VzLAouZS0tcG9pbnRlci11bmRlcmxpbmUuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmhvdmVyLAouZS0tcG9pbnRlci11bmRlcmxpbmUuZS0tYW5pbWF0aW9uLW5vbmU6YWZ0ZXIsCi5lLS1wb2ludGVyLXVuZGVybGluZS5lLS1hbmltYXRpb24tbm9uZTpiZWZvcmUsCi5lLS1wb2ludGVyLXVuZGVybGluZS5lLS1hbmltYXRpb24tbm9uZTpmb2N1cywKLmUtLXBvaW50ZXItdW5kZXJsaW5lLmUtLWFuaW1hdGlvbi1ub25lOmhvdmVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzCn0KCi5lLS1wb2ludGVyLWRvdWJsZS1saW5lIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUsCi5lLS1wb2ludGVyLW92ZXJsaW5lIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUgewogICAgY29udGVudDogIiI7CiAgICB0b3A6IDAKfQoKLmUtLXBvaW50ZXItZG91YmxlLWxpbmUuZS0tYW5pbWF0aW9uLXNsaWRlIC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouZS0tcG9pbnRlci1vdmVybGluZS5lLS1hbmltYXRpb24tc2xpZGUgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgd2lkdGg6IDEwcHg7CiAgICBsZWZ0OiAtMjBweAp9CgouZS0tcG9pbnRlci1kb3VibGUtbGluZSAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIsCi5lLS1wb2ludGVyLXVuZGVybGluZSAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIgewogICAgY29udGVudDogIiI7CiAgICBib3R0b206IDAKfQoKLmUtLXBvaW50ZXItZG91YmxlLWxpbmUuZS0tYW5pbWF0aW9uLXNsaWRlIC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5lLS1wb2ludGVyLXVuZGVybGluZS5lLS1hbmltYXRpb24tc2xpZGUgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICB3aWR0aDogMTBweDsKICAgIGluc2V0LWlubGluZS1zdGFydDogMTAwJQp9CgouZS0tcG9pbnRlci1mcmFtZWQgLmVsZW1lbnRvci1pdGVtOmFmdGVyLAouZS0tcG9pbnRlci1mcmFtZWQgLmVsZW1lbnRvci1pdGVtOmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICByaWdodDogMDsKICAgIGJvcmRlcjogM3B4IHNvbGlkICM1NTU5NWMKfQoKLmUtLXBvaW50ZXItZnJhbWVkIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUgewogICAgY29udGVudDogIiIKfQoKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1ncm93IC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguNzUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoLjc1KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjc1KQp9CgouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLXNocmluayAuZWxlbWVudG9yLWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5lbGVtZW50b3ItaXRlbS1hY3RpdmUpOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4yNSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjI1KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yNSkKfQoKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1ncm93IC5lbGVtZW50b3ItaXRlbTpiZWZvcmUsCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tc2hyaW5rIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gLjRzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMsIC13ZWJraXQtdHJhbnNmb3JtIC40czsKICAgIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgLjJzLCB0cmFuc2Zvcm0gLjRzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMsIHRyYW5zZm9ybSAuNHM7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycywgdHJhbnNmb3JtIC40cywgLXdlYmtpdC10cmFuc2Zvcm0gLjRzCn0KCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tZHJhdyAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIsCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tZHJhdyAuZWxlbWVudG9yLWl0ZW06YmVmb3JlIHsKICAgIHdpZHRoOiAzcHg7CiAgICBoZWlnaHQ6IDNweAp9CgouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWRyYXcgLmVsZW1lbnRvci1pdGVtOmJlZm9yZSB7CiAgICBib3JkZXItd2lkdGg6IDAgMCAzcHggM3B4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAuMXMgLjJzLCBoZWlnaHQgLjFzIC4zcywgb3BhY2l0eSAuMTJzIC4yMnM7CiAgICAtby10cmFuc2l0aW9uOiB3aWR0aCAuMXMgLjJzLCBoZWlnaHQgLjFzIC4zcywgb3BhY2l0eSAuMTJzIC4yMnM7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAuMXMgLjJzLCBoZWlnaHQgLjFzIC4zcywgb3BhY2l0eSAuMTJzIC4yMnMKfQoKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbTphZnRlciB7CiAgICBjb250ZW50OiAiIjsKICAgIHRvcDogYXV0bzsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKICAgIGJvcmRlci13aWR0aDogM3B4IDNweCAwIDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IHdpZHRoIC4xcywgaGVpZ2h0IC4xcyAuMXMsIG9wYWNpdHkgLjAycyAuMThzOwogICAgLW8tdHJhbnNpdGlvbjogd2lkdGggLjFzLCBoZWlnaHQgLjFzIC4xcywgb3BhY2l0eSAuMDJzIC4xOHM7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAuMXMsIGhlaWdodCAuMXMgLjFzLCBvcGFjaXR5IC4wMnMgLjE4cwp9CgouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWRyYXcgLmVsZW1lbnRvci1pdGVtLWFjdGl2ZTphZnRlciwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbS1hY3RpdmU6YmVmb3JlLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWRyYXcgLmVsZW1lbnRvci1pdGVtLmhpZ2hsaWdodGVkOmFmdGVyLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWRyYXcgLmVsZW1lbnRvci1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbTpmb2N1czphZnRlciwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbTpmb2N1czpiZWZvcmUsCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tZHJhdyAuZWxlbWVudG9yLWl0ZW06aG92ZXI6YWZ0ZXIsCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tZHJhdyAuZWxlbWVudG9yLWl0ZW06aG92ZXI6YmVmb3JlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlCn0KCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tZHJhdyAuZWxlbWVudG9yLWl0ZW0tYWN0aXZlOmJlZm9yZSwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbS5oaWdobGlnaHRlZDpiZWZvcmUsCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tZHJhdyAuZWxlbWVudG9yLWl0ZW06Zm9jdXM6YmVmb3JlLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWRyYXcgLmVsZW1lbnRvci1pdGVtOmhvdmVyOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgLjAycywgaGVpZ2h0IC4xcywgd2lkdGggLjFzIC4xczsKICAgIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgLjAycywgaGVpZ2h0IC4xcywgd2lkdGggLjFzIC4xczsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjAycywgaGVpZ2h0IC4xcywgd2lkdGggLjFzIC4xcwp9CgouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWRyYXcgLmVsZW1lbnRvci1pdGVtLWFjdGl2ZTphZnRlciwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbS5oaWdobGlnaHRlZDphZnRlciwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbTpmb2N1czphZnRlciwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbTpob3ZlcjphZnRlciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgLjAycyAuMnMsIGhlaWdodCAuMXMgLjJzLCB3aWR0aCAuMXMgLjNzOwogICAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAuMDJzIC4ycywgaGVpZ2h0IC4xcyAuMnMsIHdpZHRoIC4xcyAuM3M7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4wMnMgLjJzLCBoZWlnaHQgLjFzIC4ycywgd2lkdGggLjFzIC4zcwp9CgouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWNvcm5lcnMgLmVsZW1lbnRvci1pdGVtOmFmdGVyLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWNvcm5lcnMgLmVsZW1lbnRvci1pdGVtOmJlZm9yZSB7CiAgICB3aWR0aDogM3B4OwogICAgaGVpZ2h0OiAzcHgKfQoKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1jb3JuZXJzIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUgewogICAgYm9yZGVyLXdpZHRoOiAzcHggMCAwIDNweAp9CgouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWNvcm5lcnMgLmVsZW1lbnRvci1pdGVtOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgdG9wOiBhdXRvOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAwOwogICAgYm9yZGVyLXdpZHRoOiAwIDNweCAzcHggMAp9CgouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWNvcm5lcnMgLmVsZW1lbnRvci1pdGVtLWFjdGl2ZTphZnRlciwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1jb3JuZXJzIC5lbGVtZW50b3ItaXRlbS1hY3RpdmU6YmVmb3JlLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWNvcm5lcnMgLmVsZW1lbnRvci1pdGVtLmhpZ2hsaWdodGVkOmFmdGVyLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWNvcm5lcnMgLmVsZW1lbnRvci1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1jb3JuZXJzIC5lbGVtZW50b3ItaXRlbTpmb2N1czphZnRlciwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1jb3JuZXJzIC5lbGVtZW50b3ItaXRlbTpmb2N1czpiZWZvcmUsCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tY29ybmVycyAuZWxlbWVudG9yLWl0ZW06aG92ZXI6YWZ0ZXIsCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tY29ybmVycyAuZWxlbWVudG9yLWl0ZW06aG92ZXI6YmVmb3JlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDJtcywgd2lkdGggLjRzLCBoZWlnaHQgLjRzOwogICAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAybXMsIHdpZHRoIC40cywgaGVpZ2h0IC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMm1zLCB3aWR0aCAuNHMsIGhlaWdodCAuNHMKfQoKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1ub25lLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmFmdGVyLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmJlZm9yZSwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1ub25lIC5lbGVtZW50b3ItaXRlbTpmb2N1cywKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1ub25lIC5lbGVtZW50b3ItaXRlbTpob3ZlciwKLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1ub25lOmFmdGVyLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLW5vbmU6YmVmb3JlLAouZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLW5vbmU6Zm9jdXMsCi5lLS1wb2ludGVyLWZyYW1lZC5lLS1hbmltYXRpb24tbm9uZTpob3ZlciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDBzOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwcwp9CgouZS0tcG9pbnRlci1iYWNrZ3JvdW5kIC5lbGVtZW50b3ItaXRlbTphZnRlciwKLmUtLXBvaW50ZXItYmFja2dyb3VuZCAuZWxlbWVudG9yLWl0ZW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAuM3M7CiAgICAtby10cmFuc2l0aW9uOiAuM3M7CiAgICB0cmFuc2l0aW9uOiAuM3MKfQoKLmUtLXBvaW50ZXItYmFja2dyb3VuZCAuZWxlbWVudG9yLWl0ZW06YmVmb3JlIHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGJhY2tncm91bmQ6ICM1NTU5NWM7CiAgICB6LWluZGV4OiAtMQp9CgouZS0tcG9pbnRlci1iYWNrZ3JvdW5kIC5lbGVtZW50b3ItaXRlbS1hY3RpdmUsCi5lLS1wb2ludGVyLWJhY2tncm91bmQgLmVsZW1lbnRvci1pdGVtLmhpZ2hsaWdodGVkLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kIC5lbGVtZW50b3ItaXRlbTpmb2N1cywKLmUtLXBvaW50ZXItYmFja2dyb3VuZCAuZWxlbWVudG9yLWl0ZW06aG92ZXIgewogICAgY29sb3I6ICNmZmYKfQoKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tZ3JvdyAuZWxlbWVudG9yLWl0ZW06YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguNSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguNSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC41KQp9CgouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1ncm93IC5lbGVtZW50b3ItaXRlbS1hY3RpdmU6YmVmb3JlLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1ncm93IC5lbGVtZW50b3ItaXRlbS5oaWdobGlnaHRlZDpiZWZvcmUsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLWdyb3cgLmVsZW1lbnRvci1pdGVtOmZvY3VzOmJlZm9yZSwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tZ3JvdyAuZWxlbWVudG9yLWl0ZW06aG92ZXI6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDEKfQoKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2hyaW5rIC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbjogLjNzCn0KCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNocmluayAuZWxlbWVudG9yLWl0ZW0tYWN0aXZlOmJlZm9yZSwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2hyaW5rIC5lbGVtZW50b3ItaXRlbS5oaWdobGlnaHRlZDpiZWZvcmUsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNocmluayAuZWxlbWVudG9yLWl0ZW06Zm9jdXM6YmVmb3JlLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zaHJpbmsgLmVsZW1lbnRvci1pdGVtOmhvdmVyOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgLjE1cywgLXdlYmtpdC10cmFuc2Zvcm0gLjRzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzLCAtd2Via2l0LXRyYW5zZm9ybSAuNHM7CiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMsIHRyYW5zZm9ybSAuNHM7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMsIHRyYW5zZm9ybSAuNHM7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMsIHRyYW5zZm9ybSAuNHMsIC13ZWJraXQtdHJhbnNmb3JtIC40cwp9CgouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zd2VlcC1sZWZ0IC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIGxlZnQ6IDEwMCUKfQoKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc3dlZXAtcmlnaHQgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgcmlnaHQ6IDEwMCUKfQoKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc3dlZXAtdXAgLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgdG9wOiAxMDAlCn0KCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXN3ZWVwLWRvd24gLmVsZW1lbnRvci1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguZWxlbWVudG9yLWl0ZW0tYWN0aXZlKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgYm90dG9tOiAxMDAlCn0KCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNodXR0ZXItb3V0LXZlcnRpY2FsIC5lbGVtZW50b3ItaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIGJvdHRvbTogNTAlOwogICAgdG9wOiA1MCUKfQoKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1vdXQtaG9yaXpvbnRhbCAuZWxlbWVudG9yLWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5lbGVtZW50b3ItaXRlbS1hY3RpdmUpOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICByaWdodDogNTAlOwogICAgbGVmdDogNTAlCn0KCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNodXR0ZXItaW4taG9yaXpvbnRhbCAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNodXR0ZXItaW4tdmVydGljYWwgLmVsZW1lbnRvci1pdGVtOmFmdGVyIHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGJhY2tncm91bmQ6ICM1NTU5NWM7CiAgICB6LWluZGV4OiAtMQp9CgouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zaHV0dGVyLWluLXZlcnRpY2FsIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAxMDAlCn0KCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNodXR0ZXItaW4tdmVydGljYWwgLmVsZW1lbnRvci1pdGVtOmFmdGVyIHsKICAgIHRvcDogMTAwJTsKICAgIGJvdHRvbTogMAp9CgouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zaHV0dGVyLWluLXZlcnRpY2FsIC5lbGVtZW50b3ItaXRlbS1hY3RpdmU6YmVmb3JlLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zaHV0dGVyLWluLXZlcnRpY2FsIC5lbGVtZW50b3ItaXRlbS5oaWdobGlnaHRlZDpiZWZvcmUsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNodXR0ZXItaW4tdmVydGljYWwgLmVsZW1lbnRvci1pdGVtOmZvY3VzOmJlZm9yZSwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1pbi12ZXJ0aWNhbCAuZWxlbWVudG9yLWl0ZW06aG92ZXI6YmVmb3JlIHsKICAgIGJvdHRvbTogNTAlCn0KCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNodXR0ZXItaW4tdmVydGljYWwgLmVsZW1lbnRvci1pdGVtLWFjdGl2ZTphZnRlciwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1pbi12ZXJ0aWNhbCAuZWxlbWVudG9yLWl0ZW0uaGlnaGxpZ2h0ZWQ6YWZ0ZXIsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNodXR0ZXItaW4tdmVydGljYWwgLmVsZW1lbnRvci1pdGVtOmZvY3VzOmFmdGVyLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zaHV0dGVyLWluLXZlcnRpY2FsIC5lbGVtZW50b3ItaXRlbTpob3ZlcjphZnRlciB7CiAgICB0b3A6IDUwJQp9CgouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zaHV0dGVyLWluLWhvcml6b250YWwgLmVsZW1lbnRvci1pdGVtOmJlZm9yZSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IDEwMCUKfQoKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1pbi1ob3Jpem9udGFsIC5lbGVtZW50b3ItaXRlbTphZnRlciB7CiAgICByaWdodDogMTAwJTsKICAgIGxlZnQ6IDAKfQoKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1pbi1ob3Jpem9udGFsIC5lbGVtZW50b3ItaXRlbS1hY3RpdmU6YmVmb3JlLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zaHV0dGVyLWluLWhvcml6b250YWwgLmVsZW1lbnRvci1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1pbi1ob3Jpem9udGFsIC5lbGVtZW50b3ItaXRlbTpmb2N1czpiZWZvcmUsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLXNodXR0ZXItaW4taG9yaXpvbnRhbCAuZWxlbWVudG9yLWl0ZW06aG92ZXI6YmVmb3JlIHsKICAgIGxlZnQ6IDUwJQp9CgouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1zaHV0dGVyLWluLWhvcml6b250YWwgLmVsZW1lbnRvci1pdGVtLWFjdGl2ZTphZnRlciwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1pbi1ob3Jpem9udGFsIC5lbGVtZW50b3ItaXRlbS5oaWdobGlnaHRlZDphZnRlciwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1pbi1ob3Jpem9udGFsIC5lbGVtZW50b3ItaXRlbTpmb2N1czphZnRlciwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tc2h1dHRlci1pbi1ob3Jpem9udGFsIC5lbGVtZW50b3ItaXRlbTpob3ZlcjphZnRlciB7CiAgICByaWdodDogNTAlCn0KCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLW5vbmUsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1ub25lIC5lbGVtZW50b3ItaXRlbTphZnRlciwKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06YmVmb3JlLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1ub25lIC5lbGVtZW50b3ItaXRlbTpmb2N1cywKLmUtLXBvaW50ZXItYmFja2dyb3VuZC5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06aG92ZXIsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLW5vbmU6YWZ0ZXIsCi5lLS1wb2ludGVyLWJhY2tncm91bmQuZS0tYW5pbWF0aW9uLW5vbmU6YmVmb3JlLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1ub25lOmZvY3VzLAouZS0tcG9pbnRlci1iYWNrZ3JvdW5kLmUtLWFuaW1hdGlvbi1ub25lOmhvdmVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzCn0KCi5lLS1wb2ludGVyLXRleHQuZS0tYW5pbWF0aW9uLXNrZXcgLmVsZW1lbnRvci1pdGVtOmZvY3VzLAouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1za2V3IC5lbGVtZW50b3ItaXRlbTpob3ZlciB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2tldygtOGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBza2V3KC04ZGVnKTsKICAgIHRyYW5zZm9ybTogc2tldygtOGRlZykKfQoKLmUtLXBvaW50ZXItdGV4dC5lLS1hbmltYXRpb24tZ3JvdyAuZWxlbWVudG9yLWl0ZW06Zm9jdXMsCi5lLS1wb2ludGVyLXRleHQuZS0tYW5pbWF0aW9uLWdyb3cgLmVsZW1lbnRvci1pdGVtOmhvdmVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKQp9CgouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1zaHJpbmsgLmVsZW1lbnRvci1pdGVtOmZvY3VzLAouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1zaHJpbmsgLmVsZW1lbnRvci1pdGVtOmhvdmVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguOCk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguOCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC44KQp9CgouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1mbG9hdCAuZWxlbWVudG9yLWl0ZW06Zm9jdXMsCi5lLS1wb2ludGVyLXRleHQuZS0tYW5pbWF0aW9uLWZsb2F0IC5lbGVtZW50b3ItaXRlbTpob3ZlciB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkKfQoKLmUtLXBvaW50ZXItdGV4dC5lLS1hbmltYXRpb24tc2luayAuZWxlbWVudG9yLWl0ZW06Zm9jdXMsCi5lLS1wb2ludGVyLXRleHQuZS0tYW5pbWF0aW9uLXNpbmsgLmVsZW1lbnRvci1pdGVtOmhvdmVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KQp9CgouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1yb3RhdGUgLmVsZW1lbnRvci1pdGVtOmZvY3VzLAouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1yb3RhdGUgLmVsZW1lbnRvci1pdGVtOmhvdmVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNmRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNmRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg2ZGVnKQp9CgouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1ub25lLAouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1ub25lIC5lbGVtZW50b3ItaXRlbSwKLmUtLXBvaW50ZXItdGV4dC5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIsCi5lLS1wb2ludGVyLXRleHQuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmJlZm9yZSwKLmUtLXBvaW50ZXItdGV4dC5lLS1hbmltYXRpb24tbm9uZSAuZWxlbWVudG9yLWl0ZW06Zm9jdXMsCi5lLS1wb2ludGVyLXRleHQuZS0tYW5pbWF0aW9uLW5vbmUgLmVsZW1lbnRvci1pdGVtOmhvdmVyLAouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1ub25lOmFmdGVyLAouZS0tcG9pbnRlci10ZXh0LmUtLWFuaW1hdGlvbi1ub25lOmJlZm9yZSwKLmUtLXBvaW50ZXItdGV4dC5lLS1hbmltYXRpb24tbm9uZTpmb2N1cywKLmUtLXBvaW50ZXItdGV4dC5lLS1hbmltYXRpb24tbm9uZTpob3ZlciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDBzOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwcwp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1tYWluIC5lbGVtZW50b3ItbmF2LW1lbnUgYSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC40czsKICAgIC1vLXRyYW5zaXRpb246IC40czsKICAgIHRyYW5zaXRpb246IC40cwp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1tYWluIC5lbGVtZW50b3ItbmF2LW1lbnUgYSwKLmVsZW1lbnRvci1uYXYtbWVudS0tbWFpbiAuZWxlbWVudG9yLW5hdi1tZW51IGEuaGlnaGxpZ2h0ZWQsCi5lbGVtZW50b3ItbmF2LW1lbnUtLW1haW4gLmVsZW1lbnRvci1uYXYtbWVudSBhOmZvY3VzLAouZWxlbWVudG9yLW5hdi1tZW51LS1tYWluIC5lbGVtZW50b3ItbmF2LW1lbnUgYTpob3ZlciB7CiAgICBwYWRkaW5nOiAxM3B4IDIwcHgKfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tbWFpbiAuZWxlbWVudG9yLW5hdi1tZW51IGEuY3VycmVudCB7CiAgICBiYWNrZ3JvdW5kOiAjMzczYTNjOwogICAgY29sb3I6ICNmZmYKfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tbWFpbiAuZWxlbWVudG9yLW5hdi1tZW51IGEuZGlzYWJsZWQgewogICAgYmFja2dyb3VuZDogIzU1NTk1YzsKICAgIGNvbG9yOiAjYTFhNmE5Cn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLW1haW4gLmVsZW1lbnRvci1uYXYtbWVudSB1bCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTJlbTsKICAgIGJvcmRlci13aWR0aDogMDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBwYWRkaW5nOiAwCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLW1haW4gLmVsZW1lbnRvci1uYXYtbWVudSBzcGFuLnNjcm9sbC1kb3duLAouZWxlbWVudG9yLW5hdi1tZW51LS1tYWluIC5lbGVtZW50b3ItbmF2LW1lbnUgc3Bhbi5zY3JvbGwtdXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogbm9uZTsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgaGVpZ2h0OiAyMHB4Cn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLW1haW4gLmVsZW1lbnRvci1uYXYtbWVudSBzcGFuLnNjcm9sbC1kb3duLWFycm93LAouZWxlbWVudG9yLW5hdi1tZW51LS1tYWluIC5lbGVtZW50b3ItbmF2LW1lbnUgc3Bhbi5zY3JvbGwtdXAtYXJyb3cgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtMnB4OwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC04cHg7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXI6IDhweCBkYXNoZWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tOiA4cHggc29saWQgIzQ5NGM0Zgp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1tYWluIC5lbGVtZW50b3ItbmF2LW1lbnUgc3Bhbi5zY3JvbGwtZG93bi1hcnJvdyB7CiAgICB0b3A6IDZweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQgZGFzaGVkIGRhc2hlZDsKICAgIGJvcmRlci1jb2xvcjogIzQ5NGM0ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1tYWluIC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duIC5zdWItYXJyb3cgaSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZykKfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tbWFpbiAuZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93biAuc3ViLWFycm93IC5lLWZvbnQtaWNvbi1zdmcgewogICAgaGVpZ2h0OiAxZW07CiAgICB3aWR0aDogMWVtCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLWxheW91dC1ob3Jpem9udGFsIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLWxheW91dC1ob3Jpem9udGFsIC5lbGVtZW50b3ItbmF2LW1lbnUgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgZmxleC13cmFwOiB3cmFwCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLWxheW91dC1ob3Jpem9udGFsIC5lbGVtZW50b3ItbmF2LW1lbnUgYSB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLWxheW91dC1ob3Jpem9udGFsIC5lbGVtZW50b3ItbmF2LW1lbnU+bGkgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXgKfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tbGF5b3V0LWhvcml6b250YWwgLmVsZW1lbnRvci1uYXYtbWVudT5saT4uc2Nyb2xsLWRvd24sCi5lbGVtZW50b3ItbmF2LW1lbnUtLWxheW91dC1ob3Jpem9udGFsIC5lbGVtZW50b3ItbmF2LW1lbnU+bGkgdWwgewogICAgdG9wOiAxMDAlICFpbXBvcnRhbnQKfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tbGF5b3V0LWhvcml6b250YWwgLmVsZW1lbnRvci1uYXYtbWVudT5saTpub3QoOmZpcnN0LWNoaWxkKT5hIHsKICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiB2YXIoLS1lLW5hdi1tZW51LWhvcml6b250YWwtbWVudS1pdGVtLW1hcmdpbik7CiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1lLW5hdi1tZW51LWhvcml6b250YWwtbWVudS1pdGVtLW1hcmdpbikKfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tbGF5b3V0LWhvcml6b250YWwgLmVsZW1lbnRvci1uYXYtbWVudT5saTpub3QoOmZpcnN0LWNoaWxkKT4uc2Nyb2xsLWRvd24sCi5lbGVtZW50b3ItbmF2LW1lbnUtLWxheW91dC1ob3Jpem9udGFsIC5lbGVtZW50b3ItbmF2LW1lbnU+bGk6bm90KDpmaXJzdC1jaGlsZCk+LnNjcm9sbC11cCwKLmVsZW1lbnRvci1uYXYtbWVudS0tbGF5b3V0LWhvcml6b250YWwgLmVsZW1lbnRvci1uYXYtbWVudT5saTpub3QoOmZpcnN0LWNoaWxkKT51bCB7CiAgICBsZWZ0OiB2YXIoLS1lLW5hdi1tZW51LWhvcml6b250YWwtbWVudS1pdGVtLW1hcmdpbikgIWltcG9ydGFudAp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1sYXlvdXQtaG9yaXpvbnRhbCAuZWxlbWVudG9yLW5hdi1tZW51PmxpOm5vdCg6bGFzdC1jaGlsZCk+YSB7CiAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IHZhcigtLWUtbmF2LW1lbnUtaG9yaXpvbnRhbC1tZW51LWl0ZW0tbWFyZ2luKTsKICAgIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1lLW5hdi1tZW51LWhvcml6b250YWwtbWVudS1pdGVtLW1hcmdpbikKfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tbGF5b3V0LWhvcml6b250YWwgLmVsZW1lbnRvci1uYXYtbWVudT5saTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHsKICAgIGNvbnRlbnQ6IHZhcigtLWUtbmF2LW1lbnUtZGl2aWRlci1jb250ZW50LCBub25lKTsKICAgIGhlaWdodDogdmFyKC0tZS1uYXYtbWVudS1kaXZpZGVyLWhlaWdodCwgMzUlKTsKICAgIGJvcmRlci1sZWZ0OiB2YXIoLS1lLW5hdi1tZW51LWRpdmlkZXItd2lkdGgsIDJweCkgdmFyKC0tZS1uYXYtbWVudS1kaXZpZGVyLXN0eWxlLCBzb2xpZCkgdmFyKC0tZS1uYXYtbWVudS1kaXZpZGVyLWNvbG9yLCAjMDAwKTsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWUtbmF2LW1lbnUtZGl2aWRlci1jb2xvciwgIzAwMCk7CiAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLWUtbmF2LW1lbnUtZGl2aWRlci1jb2xvciwgIzAwMCk7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1lLW5hdi1tZW51LWRpdmlkZXItY29sb3IsICMwMDApOwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyOwogICAgYWxpZ24tc2VsZjogY2VudGVyCn0KCi5lbGVtZW50b3ItbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5lbGVtZW50b3ItbmF2LW1lbnUgewogICAgbWFyZ2luLWxlZnQ6IGF1dG8KfQoKLmVsZW1lbnRvci1uYXYtbWVudV9fYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1uYXYtbWVudSwKLmVsZW1lbnRvci1uYXYtbWVudV9fYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1uYXYtbWVudS0tbGF5b3V0LXZlcnRpY2FsPnVsPmxpPmEgewogICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLW5hdi1tZW51X19hbGlnbi1sZWZ0IC5lbGVtZW50b3ItbmF2LW1lbnUgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3ItbmF2LW1lbnVfX2FsaWduLWxlZnQgLmVsZW1lbnRvci1uYXYtbWVudSwKLmVsZW1lbnRvci1uYXYtbWVudV9fYWxpZ24tbGVmdCAuZWxlbWVudG9yLW5hdi1tZW51LS1sYXlvdXQtdmVydGljYWw+dWw+bGk+YSB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3ItbmF2LW1lbnVfX2FsaWduLWNlbnRlciAuZWxlbWVudG9yLW5hdi1tZW51IHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3ItbmF2LW1lbnVfX2FsaWduLWNlbnRlciAuZWxlbWVudG9yLW5hdi1tZW51LAouZWxlbWVudG9yLW5hdi1tZW51X19hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1uYXYtbWVudS0tbGF5b3V0LXZlcnRpY2FsPnVsPmxpPmEgewogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLW5hdi1tZW51LS1sYXlvdXQtaG9yaXpvbnRhbCAuZWxlbWVudG9yLW5hdi1tZW51IHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItbmF2LW1lbnVfX2FsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1uYXYtbWVudS0tbGF5b3V0LWhvcml6b250YWwgLmVsZW1lbnRvci1uYXYtbWVudT5saSB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDEKfQoKLmVsZW1lbnRvci1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLW5hdi1tZW51LS1sYXlvdXQtaG9yaXpvbnRhbCAuZWxlbWVudG9yLW5hdi1tZW51PmxpPmEgewogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci13aWRnZXQtbmF2LW1lbnU6bm90KC5lbGVtZW50b3ItbmF2LW1lbnUtLXRvZ2dsZSkgLmVsZW1lbnRvci1tZW51LXRvZ2dsZSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW5hdi1tZW51IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbgp9CgouZWxlbWVudG9yLW5hdi1tZW51IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDIKfQoKLmVsZW1lbnRvci1uYXYtbWVudTphZnRlciB7CiAgICBjb250ZW50OiAiXDAwYTAiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDA7CiAgICBmb250OiAwLzAgc2VyaWY7CiAgICBjbGVhcjogYm90aDsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIG92ZXJmbG93OiBoaWRkZW4KfQoKLmVsZW1lbnRvci1uYXYtbWVudSwKLmVsZW1lbnRvci1uYXYtbWVudSBsaSwKLmVsZW1lbnRvci1uYXYtbWVudSB1bCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKQp9CgouZWxlbWVudG9yLW5hdi1tZW51IHVsIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1uYXYtbWVudSB1bCB1bCBhLAouZWxlbWVudG9yLW5hdi1tZW51IHVsIHVsIGE6YWN0aXZlLAouZWxlbWVudG9yLW5hdi1tZW51IHVsIHVsIGE6Zm9jdXMsCi5lbGVtZW50b3ItbmF2LW1lbnUgdWwgdWwgYTpob3ZlciB7CiAgICBib3JkZXItbGVmdDogMTZweCBzb2xpZCB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLW5hdi1tZW51IHVsIHVsIHVsIGEsCi5lbGVtZW50b3ItbmF2LW1lbnUgdWwgdWwgdWwgYTphY3RpdmUsCi5lbGVtZW50b3ItbmF2LW1lbnUgdWwgdWwgdWwgYTpmb2N1cywKLmVsZW1lbnRvci1uYXYtbWVudSB1bCB1bCB1bCBhOmhvdmVyIHsKICAgIGJvcmRlci1sZWZ0OiAyNHB4IHNvbGlkIHRyYW5zcGFyZW50Cn0KCi5lbGVtZW50b3ItbmF2LW1lbnUgdWwgdWwgdWwgdWwgYSwKLmVsZW1lbnRvci1uYXYtbWVudSB1bCB1bCB1bCB1bCBhOmFjdGl2ZSwKLmVsZW1lbnRvci1uYXYtbWVudSB1bCB1bCB1bCB1bCBhOmZvY3VzLAouZWxlbWVudG9yLW5hdi1tZW51IHVsIHVsIHVsIHVsIGE6aG92ZXIgewogICAgYm9yZGVyLWxlZnQ6IDMycHggc29saWQgdHJhbnNwYXJlbnQKfQoKLmVsZW1lbnRvci1uYXYtbWVudSB1bCB1bCB1bCB1bCB1bCBhLAouZWxlbWVudG9yLW5hdi1tZW51IHVsIHVsIHVsIHVsIHVsIGE6YWN0aXZlLAouZWxlbWVudG9yLW5hdi1tZW51IHVsIHVsIHVsIHVsIHVsIGE6Zm9jdXMsCi5lbGVtZW50b3ItbmF2LW1lbnUgdWwgdWwgdWwgdWwgdWwgYTpob3ZlciB7CiAgICBib3JkZXItbGVmdDogNDBweCBzb2xpZCB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLW5hdi1tZW51IGEsCi5lbGVtZW50b3ItbmF2LW1lbnUgbGkgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUgbGkgewogICAgYm9yZGVyLXdpZHRoOiAwCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUgYSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLW5hdi1tZW51IGEsCi5lbGVtZW50b3ItbmF2LW1lbnUgYTpmb2N1cywKLmVsZW1lbnRvci1uYXYtbWVudSBhOmhvdmVyIHsKICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4Cn0KCi5lbGVtZW50b3ItbmF2LW1lbnUgYS5jdXJyZW50IHsKICAgIGJhY2tncm91bmQ6ICMzNzNhM2M7CiAgICBjb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLW5hdi1tZW51IGEuZGlzYWJsZWQgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIGNvbG9yOiAjYTFhNmE5Cn0KCi5lbGVtZW50b3ItbmF2LW1lbnUgLmUtcGx1cy1pY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiKyIKfQoKLmVsZW1lbnRvci1uYXYtbWVudSAuc3ViLWFycm93IHsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgcGFkZGluZzogMTBweCAwIDEwcHggMTBweDsKICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgbWFyZ2luLWJvdHRvbTogLTEwcHg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLW5hdi1tZW51IC5zdWItYXJyb3cgaSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgouZWxlbWVudG9yLW5hdi1tZW51IC5zdWItYXJyb3cgLmZhLmZhLWNoZXZyb24tZG93biwKLmVsZW1lbnRvci1uYXYtbWVudSAuc3ViLWFycm93IC5mYXMuZmEtY2hldnJvbi1kb3duIHsKICAgIGZvbnQtc2l6ZTogLjdlbQp9CgouZWxlbWVudG9yLW5hdi1tZW51IC5zdWItYXJyb3cgLmUtZm9udC1pY29uLXN2ZyB7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1uYXYtbWVudSAuc3ViLWFycm93IC5lLWZvbnQtaWNvbi1zdmcuZmEtc3ZnLWNoZXZyb24tZG93biB7CiAgICBoZWlnaHQ6IC43ZW07CiAgICB3aWR0aDogLjdlbQp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93biAuZWxlbWVudG9yLWl0ZW0uZWxlbWVudG9yLWl0ZW0tYWN0aXZlLAouZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93biAuZWxlbWVudG9yLWl0ZW0uaGlnaGxpZ2h0ZWQsCi5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duIC5lbGVtZW50b3ItaXRlbTpmb2N1cywKLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24gLmVsZW1lbnRvci1pdGVtOmhvdmVyLAouZWxlbWVudG9yLXN1Yi1pdGVtLmVsZW1lbnRvci1pdGVtLWFjdGl2ZSwKLmVsZW1lbnRvci1zdWItaXRlbS5oaWdobGlnaHRlZCwKLmVsZW1lbnRvci1zdWItaXRlbTpmb2N1cywKLmVsZW1lbnRvci1zdWItaXRlbTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1OTVjOwogICAgY29sb3I6ICNmZmYKfQoKLmVsZW1lbnRvci1tZW51LXRvZ2dsZSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiAyMnB4OwogICAgcGFkZGluZzogLjI1ZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3JkZXI6IDAgc29saWQ7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4wNSk7CiAgICBjb2xvcjogIzQ5NGM0Zgp9CgouZWxlbWVudG9yLW1lbnUtdG9nZ2xlLmVsZW1lbnRvci1hY3RpdmUgLmVsZW1lbnRvci1tZW51LXRvZ2dsZV9faWNvbi0tb3BlbiwKLmVsZW1lbnRvci1tZW51LXRvZ2dsZTpub3QoLmVsZW1lbnRvci1hY3RpdmUpIC5lbGVtZW50b3ItbWVudS10b2dnbGVfX2ljb24tLWNsb3NlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1tZW51LXRvZ2dsZSAuZS1mb250LWljb24tc3ZnIHsKICAgIGZpbGw6ICM0OTRjNGY7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogMTNweAp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93bi1ub25lIC5lbGVtZW50b3ItbWVudS10b2dnbGUsCi5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duLW5vbmUgLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24gewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93bi5lbGVtZW50b3ItbmF2LW1lbnVfX2NvbnRhaW5lciB7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IC4zcywgLXdlYmtpdC10cmFuc2Zvcm0gLjNzOwogICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAuM3MsIC13ZWJraXQtdHJhbnNmb3JtIC4zczsKICAgIC1vLXRyYW5zaXRpb246IG1heC1oZWlnaHQgLjNzLCB0cmFuc2Zvcm0gLjNzOwogICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAuM3MsIHRyYW5zZm9ybSAuM3M7CiAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IC4zcywgdHJhbnNmb3JtIC4zcywgLXdlYmtpdC10cmFuc2Zvcm0gLjNzOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3A7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogdG9wOwogICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wOwogICAgb3ZlcmZsb3c6IGF1dG8KfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24uZWxlbWVudG9yLW5hdi1tZW51X19jb250YWluZXIgLmVsZW1lbnRvci1zdWItaXRlbSB7CiAgICBmb250LXNpemU6IC44NWVtCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duIGEgewogICAgY29sb3I6ICM0OTRjNGYKfQoKLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24gYS5jdXJyZW50IHsKICAgIGJhY2tncm91bmQ6ICMzNzNhM2M7CiAgICBjb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93biBhLmRpc2FibGVkIHsKICAgIGNvbG9yOiAjYjNiM2IzCn0KCnVsLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24gYSwKdWwuZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93biBhOmZvY3VzLAp1bC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duIGE6aG92ZXIgewogICAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgICBib3JkZXItbGVmdDogOHB4IHNvbGlkIHRyYW5zcGFyZW50Cn0KCi5lbGVtZW50b3ItbmF2LW1lbnVfX3RleHQtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duIC5lbGVtZW50b3ItbmF2LW1lbnUgYSB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZWxlbWVudG9yLW5hdi1tZW51LS10b2dnbGUgLmVsZW1lbnRvci1tZW51LXRvZ2dsZTpub3QoLmVsZW1lbnRvci1hY3RpdmUpKy5lbGVtZW50b3ItbmF2LW1lbnVfX2NvbnRhaW5lciB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGVZKDApOwogICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICBtYXgtaGVpZ2h0OiAwCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLXRvZ2dsZSAuZWxlbWVudG9yLW1lbnUtdG9nZ2xlLmVsZW1lbnRvci1hY3RpdmUrLmVsZW1lbnRvci1uYXYtbWVudV9fY29udGFpbmVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZVkoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTsKICAgIG1heC1oZWlnaHQ6IDEwMHZoCn0KCi5lbGVtZW50b3ItbmF2LW1lbnUtLXN0cmV0Y2ggLmVsZW1lbnRvci1uYXYtbWVudV9fY29udGFpbmVyLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogOTk5Nwp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24tbW9iaWxlIC5lbGVtZW50b3ItbmF2LW1lbnUtLW1haW4gewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duLW1vYmlsZSAuZWxlbWVudG9yLW1lbnUtdG9nZ2xlLAogICAgLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24tbW9iaWxlIC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duLW1vYmlsZV9leHRyYSAuZWxlbWVudG9yLW5hdi1tZW51LS1tYWluIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duLW1vYmlsZV9leHRyYSAuZWxlbWVudG9yLW1lbnUtdG9nZ2xlLAogICAgLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24tbW9iaWxlX2V4dHJhIC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgewogICAgLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24tdGFibGV0IC5lbGVtZW50b3ItbWVudS10b2dnbGUsCiAgICAuZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93bi10YWJsZXQgLmVsZW1lbnRvci1uYXYtbWVudS0tZHJvcGRvd24gewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93bi10YWJsZXQgLmVsZW1lbnRvci1uYXYtbWVudS0tbWFpbiB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93bi10YWJsZXRfZXh0cmEgLmVsZW1lbnRvci1uYXYtbWVudS0tbWFpbiB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93bi10YWJsZXRfZXh0cmEgLmVsZW1lbnRvci1tZW51LXRvZ2dsZSwKICAgIC5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duLXRhYmxldF9leHRyYSAuZWxlbWVudG9yLW5hdi1tZW51LS1kcm9wZG93biB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9CgouZWxlbWVudG9yLWdhbGxlcnlfX2NvbnRhaW5lciB7CiAgICBtaW4taGVpZ2h0OiAxcHgKfQoKLmVsZW1lbnRvci1nYWxsZXJ5LWl0ZW0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYm9yZGVyOiBzb2xpZCB2YXIoLS1pbWFnZS1ib3JkZXItd2lkdGgpIHZhcigtLWltYWdlLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1pbWFnZS1ib3JkZXItcmFkaXVzKQp9CgouZWxlbWVudG9yLWdhbGxlcnktaXRlbV9fY29udGVudCwKLmVsZW1lbnRvci1nYWxsZXJ5LWl0ZW1fX292ZXJsYXkgewogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwCn0KCi5lbGVtZW50b3ItZ2FsbGVyeS1pdGVtX19vdmVybGF5IHsKICAgIG1peC1ibGVuZC1tb2RlOiB2YXIoLS1vdmVybGF5LW1peC1ibGVuZC1tb2RlKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tb3ZlcmxheS10cmFuc2l0aW9uLWR1cmF0aW9uKTsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLW92ZXJsYXktdHJhbnNpdGlvbi1kdXJhdGlvbik7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1vdmVybGF5LXRyYW5zaXRpb24tZHVyYXRpb24pOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBtaXgtYmxlbmQtbW9kZSwgb3BhY2l0eSwgYmFja2dyb3VuZC1jb2xvciwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBtaXgtYmxlbmQtbW9kZSwgb3BhY2l0eSwgYmFja2dyb3VuZC1jb2xvciwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICAtby10cmFuc2l0aW9uLXByb3BlcnR5OiBtaXgtYmxlbmQtbW9kZSwgdHJhbnNmb3JtLCBvcGFjaXR5LCBiYWNrZ3JvdW5kLWNvbG9yOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbWl4LWJsZW5kLW1vZGUsIHRyYW5zZm9ybSwgb3BhY2l0eSwgYmFja2dyb3VuZC1jb2xvcjsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IG1peC1ibGVuZC1tb2RlLCB0cmFuc2Zvcm0sIG9wYWNpdHksIGJhY2tncm91bmQtY29sb3IsIC13ZWJraXQtdHJhbnNmb3JtCn0KCi5lbGVtZW50b3ItZ2FsbGVyeS1pdGVtX19pbWFnZS5lLWdhbGxlcnktaW1hZ2UgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1pbWFnZS10cmFuc2l0aW9uLWR1cmF0aW9uKTsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWltYWdlLXRyYW5zaXRpb24tZHVyYXRpb24pOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0taW1hZ2UtdHJhbnNpdGlvbi1kdXJhdGlvbik7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IC13ZWJraXQtZmlsdGVyLCAtd2Via2l0LXRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IC13ZWJraXQtZmlsdGVyLCAtd2Via2l0LXRyYW5zZm9ybTsKICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IGZpbHRlciwgdHJhbnNmb3JtOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogZmlsdGVyLCB0cmFuc2Zvcm07CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBmaWx0ZXIsIHRyYW5zZm9ybSwgLXdlYmtpdC1maWx0ZXIsIC13ZWJraXQtdHJhbnNmb3JtCn0KCi5lbGVtZW50b3ItZ2FsbGVyeS1pdGVtX19jb250ZW50IHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLXdlYmtpdC1ib3gtcGFjazogdmFyKC0tY29udGVudC1qdXN0aWZ5LWNvbnRlbnQsIGNlbnRlcik7CiAgICAtbXMtZmxleC1wYWNrOiB2YXIoLS1jb250ZW50LWp1c3RpZnktY29udGVudCwgY2VudGVyKTsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tY29udGVudC1qdXN0aWZ5LWNvbnRlbnQsIGNlbnRlcik7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1jb250ZW50LXRleHQtYWxpZ24pOwogICAgcGFkZGluZzogdmFyKC0tY29udGVudC1wYWRkaW5nKQp9CgouZWxlbWVudG9yLWdhbGxlcnktaXRlbV9fY29udGVudD5kaXYgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1jb250ZW50LXRyYW5zaXRpb24tZHVyYXRpb24pOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tY29udGVudC10cmFuc2l0aW9uLWR1cmF0aW9uKTsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWNvbnRlbnQtdHJhbnNpdGlvbi1kdXJhdGlvbikKfQoKLmVsZW1lbnRvci1nYWxsZXJ5LWl0ZW1fX2NvbnRlbnQuZWxlbWVudG9yLWdhbGxlcnktLXNlcXVlbmNlZC1hbmltYXRpb24+ZGl2Om50aC1jaGlsZCgyKSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IGNhbGMoKHZhcigtLWNvbnRlbnQtdHJhbnNpdGlvbi1kZWxheSkgLyAzKSk7CiAgICAtby10cmFuc2l0aW9uLWRlbGF5OiBjYWxjKCh2YXIoLS1jb250ZW50LXRyYW5zaXRpb24tZGVsYXkpIC8gMykpOwogICAgdHJhbnNpdGlvbi1kZWxheTogY2FsYygodmFyKC0tY29udGVudC10cmFuc2l0aW9uLWRlbGF5KSAvIDMpKQp9CgouZWxlbWVudG9yLWdhbGxlcnktaXRlbV9fY29udGVudC5lbGVtZW50b3ItZ2FsbGVyeS0tc2VxdWVuY2VkLWFuaW1hdGlvbj5kaXY6bnRoLWNoaWxkKDMpIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheTogY2FsYygodmFyKC0tY29udGVudC10cmFuc2l0aW9uLWRlbGF5KSAvIDMpICogMik7CiAgICAtby10cmFuc2l0aW9uLWRlbGF5OiBjYWxjKCh2YXIoLS1jb250ZW50LXRyYW5zaXRpb24tZGVsYXkpIC8gMykgKiAyKTsKICAgIHRyYW5zaXRpb24tZGVsYXk6IGNhbGMoKHZhcigtLWNvbnRlbnQtdHJhbnNpdGlvbi1kZWxheSkgLyAzKSAqIDIpCn0KCi5lbGVtZW50b3ItZ2FsbGVyeS1pdGVtX19jb250ZW50LmVsZW1lbnRvci1nYWxsZXJ5LS1zZXF1ZW5jZWQtYW5pbWF0aW9uPmRpdjpudGgtY2hpbGQoNCkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiBjYWxjKCh2YXIoLS1jb250ZW50LXRyYW5zaXRpb24tZGVsYXkpIC8gMykgKiAzKTsKICAgIC1vLXRyYW5zaXRpb24tZGVsYXk6IGNhbGMoKHZhcigtLWNvbnRlbnQtdHJhbnNpdGlvbi1kZWxheSkgLyAzKSAqIDMpOwogICAgdHJhbnNpdGlvbi1kZWxheTogY2FsYygodmFyKC0tY29udGVudC10cmFuc2l0aW9uLWRlbGF5KSAvIDMpICogMykKfQoKLmVsZW1lbnRvci1nYWxsZXJ5LWl0ZW1fX2Rlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoLS1kZXNjcmlwdGlvbi10ZXh0LWNvbG9yLCAjZmZmKTsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItZ2FsbGVyeS1pdGVtX190aXRsZSB7CiAgICBjb2xvcjogdmFyKC0tdGl0bGUtdGV4dC1jb2xvciwgI2ZmZik7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci1nYWxsZXJ5X190aXRsZXMtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIC13ZWJraXQtYm94LXBhY2s6IHZhcigtLXRpdGxlcy1jb250YWluZXItanVzdGlmeS1jb250ZW50LCBjZW50ZXIpOwogICAgLW1zLWZsZXgtcGFjazogdmFyKC0tdGl0bGVzLWNvbnRhaW5lci1qdXN0aWZ5LWNvbnRlbnQsIGNlbnRlcik7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLXRpdGxlcy1jb250YWluZXItanVzdGlmeS1jb250ZW50LCBjZW50ZXIpOwogICAgbWFyZ2luLWJvdHRvbTogMjBweAp9CgouZWxlbWVudG9yLWdhbGxlcnlfX3RpdGxlcy1jb250YWluZXI6bm90KC5lLS1wb2ludGVyLWZyYW1lZCkgLmVsZW1lbnRvci1pdGVtOmFmdGVyLAouZWxlbWVudG9yLWdhbGxlcnlfX3RpdGxlcy1jb250YWluZXI6bm90KC5lLS1wb2ludGVyLWZyYW1lZCkgLmVsZW1lbnRvci1pdGVtOmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nYWxsZXJpZXMtcG9pbnRlci1iZy1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci1nYWxsZXJ5X190aXRsZXMtY29udGFpbmVyOm5vdCguZS0tcG9pbnRlci1mcmFtZWQpIC5lbGVtZW50b3ItaXRlbS5lbGVtZW50b3ItaXRlbS1hY3RpdmU6YWZ0ZXIsCi5lbGVtZW50b3ItZ2FsbGVyeV9fdGl0bGVzLWNvbnRhaW5lcjpub3QoLmUtLXBvaW50ZXItZnJhbWVkKSAuZWxlbWVudG9yLWl0ZW0uZWxlbWVudG9yLWl0ZW0tYWN0aXZlOmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nYWxsZXJpZXMtcG9pbnRlci1iZy1jb2xvci1hY3RpdmUpCn0KCi5lbGVtZW50b3ItZ2FsbGVyeV9fdGl0bGVzLWNvbnRhaW5lci5lLS1wb2ludGVyLWZyYW1lZCAuZWxlbWVudG9yLWl0ZW06YmVmb3JlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ2FsbGVyaWVzLXBvaW50ZXItYmctY29sb3ItaG92ZXIpOwogICAgYm9yZGVyLXdpZHRoOiB2YXIoLS1nYWxsZXJpZXMtcG9pbnRlci1ib3JkZXItd2lkdGgpCn0KCi5lbGVtZW50b3ItZ2FsbGVyeV9fdGl0bGVzLWNvbnRhaW5lci5lLS1wb2ludGVyLWZyYW1lZCAuZWxlbWVudG9yLWl0ZW06YWZ0ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nYWxsZXJpZXMtcG9pbnRlci1iZy1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci1nYWxsZXJ5X190aXRsZXMtY29udGFpbmVyLmUtLXBvaW50ZXItZnJhbWVkIC5lbGVtZW50b3ItaXRlbS5lbGVtZW50b3ItaXRlbS1hY3RpdmU6YWZ0ZXIsCi5lbGVtZW50b3ItZ2FsbGVyeV9fdGl0bGVzLWNvbnRhaW5lci5lLS1wb2ludGVyLWZyYW1lZCAuZWxlbWVudG9yLWl0ZW0uZWxlbWVudG9yLWl0ZW0tYWN0aXZlOmJlZm9yZSB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWdhbGxlcmllcy1wb2ludGVyLWJnLWNvbG9yLWFjdGl2ZSkKfQoKLmVsZW1lbnRvci1nYWxsZXJ5X190aXRsZXMtY29udGFpbmVyLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1kcmF3IC5lbGVtZW50b3ItaXRlbTpiZWZvcmUgewogICAgYm9yZGVyLWxlZnQtd2lkdGg6IHZhcigtLWdhbGxlcmllcy1wb2ludGVyLWJvcmRlci13aWR0aCk7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiB2YXIoLS1nYWxsZXJpZXMtcG9pbnRlci1ib3JkZXItd2lkdGgpOwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgYm9yZGVyLXRvcC13aWR0aDogMAp9CgouZWxlbWVudG9yLWdhbGxlcnlfX3RpdGxlcy1jb250YWluZXIuZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWRyYXcgLmVsZW1lbnRvci1pdGVtOmFmdGVyIHsKICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKICAgIGJvcmRlci1yaWdodC13aWR0aDogdmFyKC0tZ2FsbGVyaWVzLXBvaW50ZXItYm9yZGVyLXdpZHRoKTsKICAgIGJvcmRlci10b3Atd2lkdGg6IHZhcigtLWdhbGxlcmllcy1wb2ludGVyLWJvcmRlci13aWR0aCkKfQoKLmVsZW1lbnRvci1nYWxsZXJ5X190aXRsZXMtY29udGFpbmVyLmUtLXBvaW50ZXItZnJhbWVkLmUtLWFuaW1hdGlvbi1jb3JuZXJzIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUgewogICAgYm9yZGVyLWxlZnQtd2lkdGg6IHZhcigtLWdhbGxlcmllcy1wb2ludGVyLWJvcmRlci13aWR0aCk7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgYm9yZGVyLXRvcC13aWR0aDogdmFyKC0tZ2FsbGVyaWVzLXBvaW50ZXItYm9yZGVyLXdpZHRoKQp9CgouZWxlbWVudG9yLWdhbGxlcnlfX3RpdGxlcy1jb250YWluZXIuZS0tcG9pbnRlci1mcmFtZWQuZS0tYW5pbWF0aW9uLWNvcm5lcnMgLmVsZW1lbnRvci1pdGVtOmFmdGVyIHsKICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogdmFyKC0tZ2FsbGVyaWVzLXBvaW50ZXItYm9yZGVyLXdpZHRoKTsKICAgIGJvcmRlci1yaWdodC13aWR0aDogdmFyKC0tZ2FsbGVyaWVzLXBvaW50ZXItYm9yZGVyLXdpZHRoKTsKICAgIGJvcmRlci10b3Atd2lkdGg6IDAKfQoKLmVsZW1lbnRvci1nYWxsZXJ5X190aXRsZXMtY29udGFpbmVyIC5lLS1wb2ludGVyLWRvdWJsZS1saW5lIC5lbGVtZW50b3ItaXRlbTphZnRlciwKLmVsZW1lbnRvci1nYWxsZXJ5X190aXRsZXMtY29udGFpbmVyIC5lLS1wb2ludGVyLWRvdWJsZS1saW5lIC5lbGVtZW50b3ItaXRlbTpiZWZvcmUsCi5lbGVtZW50b3ItZ2FsbGVyeV9fdGl0bGVzLWNvbnRhaW5lciAuZS0tcG9pbnRlci1vdmVybGluZSAuZWxlbWVudG9yLWl0ZW06YmVmb3JlLAouZWxlbWVudG9yLWdhbGxlcnlfX3RpdGxlcy1jb250YWluZXIgLmUtLXBvaW50ZXItdW5kZXJsaW5lIC5lbGVtZW50b3ItaXRlbTphZnRlciB7CiAgICBoZWlnaHQ6IHZhcigtLWdhbGxlcmllcy1wb2ludGVyLWJvcmRlci13aWR0aCkKfQoKLmVsZW1lbnRvci1nYWxsZXJ5LXRpdGxlIHsKICAgIC0tc3BhY2UtYmV0d2VlbjogMTBweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGNvbG9yOiAjNmQ3ODgyOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHBhZGRpbmc6IDdweCAxNHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjNzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIC4zczsKICAgIHRyYW5zaXRpb246IGFsbCAuM3MKfQoKLmVsZW1lbnRvci1nYWxsZXJ5LXRpdGxlLS1hY3RpdmUgewogICAgY29sb3I6ICM0OTUxNTcKfQoKLmVsZW1lbnRvci1nYWxsZXJ5LXRpdGxlOm5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjZS1iZXR3ZWVuKQp9CgouZWxlbWVudG9yLWdhbGxlcnktaXRlbV9fdGl0bGUrLmVsZW1lbnRvci1nYWxsZXJ5LWl0ZW1fX2Rlc2NyaXB0aW9uIHsKICAgIG1hcmdpbi10b3A6IHZhcigtLWRlc2NyaXB0aW9uLW1hcmdpbi10b3ApCn0KCi5lLWdhbGxlcnktaXRlbS5lbGVtZW50b3ItZ2FsbGVyeS1pdGVtIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsOwogICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsCn0KCi5lLWdhbGxlcnktaXRlbS5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tYm90dG9tLAouZS1nYWxsZXJ5LWl0ZW0uZWxlbWVudG9yLWFuaW1hdGVkLWNvbnRlbnQgLmVsZW1lbnRvci1hbmltYXRlZC1pdGVtLS1lbnRlci1mcm9tLWxlZnQsCi5lLWdhbGxlcnktaXRlbS5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tcmlnaHQsCi5lLWdhbGxlcnktaXRlbS5lbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCAuZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLWVudGVyLWZyb20tdG9wLAouZS1nYWxsZXJ5LWl0ZW06aG92ZXIgLmVsZW1lbnRvci1nYWxsZXJ5X19pdGVtLW92ZXJsYXktYmcsCi5lLWdhbGxlcnktaXRlbTpob3ZlciAuZWxlbWVudG9yLWdhbGxlcnlfX2l0ZW0tb3ZlcmxheS1jb250ZW50LAouZS1nYWxsZXJ5LWl0ZW06aG92ZXIgLmVsZW1lbnRvci1nYWxsZXJ5X19pdGVtLW92ZXJsYXktY29udGVudF9fZGVzY3JpcHRpb24sCi5lLWdhbGxlcnktaXRlbTpob3ZlciAuZWxlbWVudG9yLWdhbGxlcnlfX2l0ZW0tb3ZlcmxheS1jb250ZW50X190aXRsZSB7CiAgICBvcGFjaXR5OiAxCn0KCmEuZWxlbWVudG9yLWl0ZW0uZWxlbWVudG9yLWdhbGxlcnktdGl0bGUgewogICAgY29sb3I6IHZhcigtLWdhbGxlcmllcy10aXRsZS1jb2xvci1ub3JtYWwpCn0KCmEuZWxlbWVudG9yLWl0ZW0uZWxlbWVudG9yLWdhbGxlcnktdGl0bGUuZWxlbWVudG9yLWl0ZW0tYWN0aXZlLAphLmVsZW1lbnRvci1pdGVtLmVsZW1lbnRvci1nYWxsZXJ5LXRpdGxlLmhpZ2hsaWdodGVkLAphLmVsZW1lbnRvci1pdGVtLmVsZW1lbnRvci1nYWxsZXJ5LXRpdGxlOmZvY3VzLAphLmVsZW1lbnRvci1pdGVtLmVsZW1lbnRvci1nYWxsZXJ5LXRpdGxlOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1nYWxsZXJpZXMtdGl0bGUtY29sb3ItaG92ZXIpCn0KCmEuZWxlbWVudG9yLWl0ZW0uZWxlbWVudG9yLWdhbGxlcnktdGl0bGUuZWxlbWVudG9yLWl0ZW0tYWN0aXZlIHsKICAgIGNvbG9yOiB2YXIoLS1nYWxsZXJ5LXRpdGxlLWNvbG9yLWFjdGl2ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFibGUtb2YtY29udGVudHMgLmVsZW1lbnRvci10b2NfX2hlYWRlci10aXRsZSB7CiAgICBjb2xvcjogdmFyKC0taGVhZGVyLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC10YWJsZS1vZi1jb250ZW50cy5lbGVtZW50b3ItdG9jLS1jb2xsYXBzZWQgLmVsZW1lbnRvci10b2NfX3RvZ2dsZS1idXR0b24tLWNvbGxhcHNlLAouZWxlbWVudG9yLXdpZGdldC10YWJsZS1vZi1jb250ZW50czpub3QoLmVsZW1lbnRvci10b2MtLWNvbGxhcHNlZCkgLmVsZW1lbnRvci10b2NfX3RvZ2dsZS1idXR0b24tLWV4cGFuZCB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYmxlLW9mLWNvbnRlbnRzIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBtaW4taGVpZ2h0OiB2YXIoLS1ib3gtbWluLWhlaWdodCk7CiAgICBib3JkZXI6IHZhcigtLWJveC1ib3JkZXItd2lkdGgsIDFweCkgc29saWQgdmFyKC0tYm94LWJvcmRlci1jb2xvciwgI2E0YWZiNyk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3gtYm9yZGVyLXJhZGl1cywgM3B4KTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJveC1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbWluLWhlaWdodCAuNHM7CiAgICAtby10cmFuc2l0aW9uOiBtaW4taGVpZ2h0IC40czsKICAgIHRyYW5zaXRpb246IG1pbi1oZWlnaHQgLjRzOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9CgouZWxlbWVudG9yLXRvY19faGVhZGVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBwYWRkaW5nOiB2YXIoLS1ib3gtcGFkZGluZywgMjBweCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1oZWFkZXItYmFja2dyb3VuZC1jb2xvcik7CiAgICBib3JkZXItYm90dG9tOiB2YXIoLS1zZXBhcmF0b3Itd2lkdGgsIDFweCkgc29saWQgdmFyKC0tYm94LWJvcmRlci1jb2xvciwgI2E0YWZiNykKfQoKLmVsZW1lbnRvci10b2NfX2hlYWRlci10aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDA7CiAgICBjb2xvcjogdmFyKC0taGVhZGVyLWNvbG9yKQp9CgouZWxlbWVudG9yLXRvY19fdG9nZ2xlLWJ1dHRvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleAp9CgouZWxlbWVudG9yLXRvY19fdG9nZ2xlLWJ1dHRvbiBpIHsKICAgIGNvbG9yOiB2YXIoLS10b2dnbGUtYnV0dG9uLWNvbG9yKQp9CgouZWxlbWVudG9yLXRvY19fdG9nZ2xlLWJ1dHRvbiBzdmcgewogICAgaGVpZ2h0OiAxZW07CiAgICB3aWR0aDogMWVtOwogICAgZmlsbDogdmFyKC0tdG9nZ2xlLWJ1dHRvbi1jb2xvcikKfQoKLmVsZW1lbnRvci10b2NfX3NwaW5uZXItY29udGFpbmVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXRvY19fc3Bpbm5lciB7CiAgICBmb250LXNpemU6IDJlbQp9CgouZWxlbWVudG9yLXRvY19fc3Bpbm5lci5lLWZvbnQtaWNvbi1zdmcgewogICAgaGVpZ2h0OiAxZW07CiAgICB3aWR0aDogMWVtCn0KCi5lbGVtZW50b3ItdG9jX19ib2R5IHsKICAgIHBhZGRpbmc6IHZhcigtLWJveC1wYWRkaW5nLCAyMHB4KTsKICAgIG1heC1oZWlnaHQ6IHZhcigtLXRvYy1ib2R5LW1heC1oZWlnaHQpOwogICAgb3ZlcmZsb3cteTogYXV0bwp9CgouZWxlbWVudG9yLXRvY19fYm9keTo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgd2lkdGg6IDdweAp9CgouZWxlbWVudG9yLXRvY19fYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2MyY2JkMjsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHgKfQoKLmVsZW1lbnRvci10b2NfX2xpc3Qtd3JhcHBlciB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMAp9CgouZWxlbWVudG9yLXRvY19fbGlzdC1pdGVtIHsKICAgIG1hcmdpbi1ib3R0b206IC41ZW0KfQoKLmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS5lbGVtZW50b3ItaXRlbS1hY3RpdmUgewogICAgZm9udC13ZWlnaHQ6IDcwMAp9CgouZWxlbWVudG9yLXRvY19fbGlzdC1pdGVtIC5lbGVtZW50b3ItdG9jX19saXN0LXdyYXBwZXIgewogICAgbWFyZ2luLXRvcDogLjVlbTsKICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1uZXN0ZWQtbGlzdC1pbmRlbnQsIDFlbSkKfQoKLmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS10ZXh0OmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1pdGVtLXRleHQtaG92ZXItY29sb3IpOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHZhcigtLWl0ZW0tdGV4dC1ob3Zlci1kZWNvcmF0aW9uKTsKICAgIHRleHQtZGVjb3JhdGlvbjogdmFyKC0taXRlbS10ZXh0LWhvdmVyLWRlY29yYXRpb24pCn0KCi5lbGVtZW50b3ItdG9jX19saXN0LWl0ZW0tdGV4dC5lbGVtZW50b3ItaXRlbS1hY3RpdmUgewogICAgY29sb3I6IHZhcigtLWl0ZW0tdGV4dC1hY3RpdmUtY29sb3IpOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHZhcigtLWl0ZW0tdGV4dC1hY3RpdmUtZGVjb3JhdGlvbik7CiAgICB0ZXh0LWRlY29yYXRpb246IHZhcigtLWl0ZW0tdGV4dC1hY3RpdmUtZGVjb3JhdGlvbikKfQoKLmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS10ZXh0LXdyYXBwZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS10ZXh0LXdyYXBwZXI6YmVmb3JlLAouZWxlbWVudG9yLXRvY19fbGlzdC1pdGVtLXRleHQtd3JhcHBlciBpIHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgY29sb3I6IHZhcigtLW1hcmtlci1jb2xvcikKfQoKLmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS10ZXh0LXdyYXBwZXIgc3ZnIHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgZmlsbDogdmFyKC0tbWFya2VyLWNvbG9yKTsKICAgIGhlaWdodDogdmFyKC0tbWFya2VyLXNpemUsIC41ZW0pOwogICAgd2lkdGg6IHZhcigtLW1hcmtlci1zaXplLCAuNWVtKQp9CgouZWxlbWVudG9yLXRvY19fbGlzdC1pdGVtLXRleHQtd3JhcHBlciBpIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbWFya2VyLXNpemUsIC41ZW0pCn0KCi5lbGVtZW50b3ItdG9jX19saXN0LWl0ZW0tdGV4dC13cmFwcGVyOmJlZm9yZSB7CiAgICBmb250LXNpemU6IHZhcigtLW1hcmtlci1zaXplLCAxZW0pCn0KCi5lbGVtZW50b3ItdG9jLS1jb250ZW50LWVsbGlwc2lzIC5lbGVtZW50b3ItdG9jX19saXN0LWl0ZW0tdGV4dCB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC1vLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMKfQoKLmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbXMtLWNvbGxhcHNpYmxlPi5lbGVtZW50b3ItdG9jX19saXN0LXdyYXBwZXI+LmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbT4uZWxlbWVudG9yLXRvY19fbGlzdC13cmFwcGVyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci10b2NfX2hlYWRpbmctYW5jaG9yIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQp9CgouZWxlbWVudG9yLXRvY19fYm9keSAuZWxlbWVudG9yLXRvY19fbGlzdC1pdGVtLXRleHQgewogICAgY29sb3I6IHZhcigtLWl0ZW0tdGV4dC1jb2xvcik7CiAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdmFyKC0taXRlbS10ZXh0LWRlY29yYXRpb24pOwogICAgdGV4dC1kZWNvcmF0aW9uOiB2YXIoLS1pdGVtLXRleHQtZGVjb3JhdGlvbikKfQoKLmVsZW1lbnRvci10b2NfX2JvZHkgLmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS10ZXh0OmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1pdGVtLXRleHQtaG92ZXItY29sb3IpOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHZhcigtLWl0ZW0tdGV4dC1ob3Zlci1kZWNvcmF0aW9uKTsKICAgIHRleHQtZGVjb3JhdGlvbjogdmFyKC0taXRlbS10ZXh0LWhvdmVyLWRlY29yYXRpb24pCn0KCi5lbGVtZW50b3ItdG9jX19ib2R5IC5lbGVtZW50b3ItdG9jX19saXN0LWl0ZW0tdGV4dC5lbGVtZW50b3ItaXRlbS1hY3RpdmUgewogICAgY29sb3I6IHZhcigtLWl0ZW0tdGV4dC1hY3RpdmUtY29sb3IpOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHZhcigtLWl0ZW0tdGV4dC1hY3RpdmUtZGVjb3JhdGlvbik7CiAgICB0ZXh0LWRlY29yYXRpb246IHZhcigtLWl0ZW0tdGV4dC1hY3RpdmUtZGVjb3JhdGlvbikKfQoKb2wuZWxlbWVudG9yLXRvY19fbGlzdC13cmFwcGVyIHsKICAgIGNvdW50ZXItcmVzZXQ6IGl0ZW0KfQoKb2wuZWxlbWVudG9yLXRvY19fbGlzdC13cmFwcGVyIC5lbGVtZW50b3ItdG9jX19saXN0LWl0ZW0gewogICAgY291bnRlci1pbmNyZW1lbnQ6IGl0ZW0KfQoKb2wuZWxlbWVudG9yLXRvY19fbGlzdC13cmFwcGVyIC5lbGVtZW50b3ItdG9jX19saXN0LWl0ZW0tdGV4dC13cmFwcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiBjb3VudGVycyhpdGVtLCAiLiIpICIuICIKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItdG9jLS1taW5pbWl6ZWQtb24tdGFibGV0X2V4dHJhIC5lbGVtZW50b3ItdG9jX19ib2R5IHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItdG9jLS1taW5pbWl6ZWQtb24tdGFibGV0IC5lbGVtZW50b3ItdG9jX19ib2R5IHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXRvYy0tbWluaW1pemVkLW9uLW1vYmlsZV9leHRyYSAuZWxlbWVudG9yLXRvY19fYm9keSB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9CgpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItdG9jLS1taW5pbWl6ZWQtb24tbW9iaWxlIC5lbGVtZW50b3ItdG9jX19ib2R5IHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCi5lLWxvdHRpZV9fY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1heC13aWR0aDogdmFyKC0tbG90dGllLWNvbnRhaW5lci1tYXgtd2lkdGgpOwogICAgd2lkdGg6IHZhcigtLWxvdHRpZS1jb250YWluZXItd2lkdGgpOwogICAgb3BhY2l0eTogdmFyKC0tbG90dGllLWNvbnRhaW5lci1vcGFjaXR5KQp9CgouZS1sb3R0aWVfX2NvbnRhaW5lcjpob3ZlciB7CiAgICBvcGFjaXR5OiB2YXIoLS1sb3R0aWUtY29udGFpbmVyLW9wYWNpdHktaG92ZXIpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1sb3R0aWUtY29udGFpbmVyLXRyYW5zaXRpb24tZHVyYXRpb24taG92ZXIpOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tbG90dGllLWNvbnRhaW5lci10cmFuc2l0aW9uLWR1cmF0aW9uLWhvdmVyKTsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWxvdHRpZS1jb250YWluZXItdHJhbnNpdGlvbi1kdXJhdGlvbi1ob3ZlcikKfQoKLmUtbG90dGllX19jb250YWluZXIgc3ZnLAouZS1sb3R0aWVfX2NvbnRhaW5lciBzdmcgKiB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKICAgIC1vLXRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudAp9CgouZS1sb3R0aWVfX2NhcHRpb24gewogICAgY29sb3I6IHZhcigtLWNhcHRpb24tY29sb3IpOwogICAgbWFyZ2luLXRvcDogdmFyKC0tY2FwdGlvbi1tYXJnaW4tdG9wKTsKICAgIHRleHQtYWxpZ246IHZhcigtLWNhcHRpb24tdGV4dC1hbGlnbikKfQoKLmUtdGFicy1pbm5lci10YWJzIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBmb250LWZhbWlseTogUm9ib3RvLCBBcmlhbCwgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiAxNnB4Cn0KCi5lLXRhYnMtaW5uZXItdGFicyAuZS10YWItY29udGVudCB7CiAgICBwYWRkaW5nLXRvcDogMzJweAp9CgouZS10YWJzLWlubmVyLXRhYnMgLmUtaW5uZXItdGFicy13cmFwcGVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHotaW5kZXg6IDEKfQoKLmUtdGFicy1pbm5lci10YWJzIC5lLWlubmVyLXRhYnMtd3JhcHBlciA6YWZ0ZXIgewogICAgY29udGVudDogIiI7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogdmFyKC0taW5uZXItdGFicy1ib3JkZXItaGVpZ2h0LCAxcHgpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5uZXItdGFicy1ib3JkZXItY29sb3IsICNkNWRhZGYpOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAwOwogICAgei1pbmRleDogLTEKfQoKLmUtdGFicy1pbm5lci10YWJzIC5lLWlubmVyLXRhYnMtd3JhcHBlciAuZS1pbm5lci10YWItdGl0bGUgewogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIG1pbi13aWR0aDogMTQwcHg7CiAgICBsaW5lLWhlaWdodDogMzhweDsKICAgIGhlaWdodDogMzhweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveAp9CgouZS10YWJzLWlubmVyLXRhYnMgLmUtaW5uZXItdGFicy13cmFwcGVyIC5lLWlubmVyLXRhYi10aXRsZSBhIHsKICAgIGNvbG9yOiAjNmQ3ODgyOwogICAgcGFkZGluZzogMCAzNnB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmUtdGFicy1pbm5lci10YWJzIC5lLWlubmVyLXRhYnMtd3JhcHBlciAuZS1pbm5lci10YWItdGl0bGUuZS1pbm5lci10YWItYWN0aXZlIHsKICAgIGJvcmRlci1jb2xvcjogIzQ5NTE1NyAjNDk1MTU3IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQ5NTE1NzsKICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKICAgIGJvcmRlci10b3Atd2lkdGg6IDAKfQoKLmUtdGFicy1pbm5lci10YWJzIC5lLWlubmVyLXRhYnMtd3JhcHBlciAuZS1pbm5lci10YWItdGl0bGUuZS1pbm5lci10YWItYWN0aXZlIGEgewogICAgY29sb3I6ICM0OTUxNTcKfQoKLmUtdGFicy1pbm5lci10YWJzIC5lLWlubmVyLXRhYnMtY29udGVudC13cmFwcGVyIC5lLXRhYi1tb2JpbGUtdGl0bGUgewogICAgZGlzcGxheTogbm9uZQp9CgouZS10YWJzLWlubmVyLXRhYnMgLmUtaW5uZXItdGFicy1jb250ZW50LXdyYXBwZXIgLmUtaW5uZXItdGFiLWNvbnRlbnQgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBhZGRpbmc6IDIwcHgKfQoKLmUtdGFicy1pbm5lci10YWJzIC5lLWlubmVyLXRhYnMtY29udGVudC13cmFwcGVyIC5lLWlubmVyLXRhYi1jb250ZW50IC5lLWlubmVyLXRhYi10ZXh0IHsKICAgIGNvbG9yOiAjNTU2MDY4Cn0KCi5lLXRhYnMtaW5uZXItdGFicyAuZS1pbm5lci10YWJzLWNvbnRlbnQtd3JhcHBlciAuZS1pbm5lci10YWItY29udGVudC5lLWlubmVyLXRhYi1hY3RpdmUgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmUtdGFicy1pbm5lci10YWJzIC5lLWlubmVyLXRhYnMtY29udGVudC13cmFwcGVyIC5lLWlubmVyLXRhYi1jb250ZW50IC5lLWlubmVyLXRhYi1idXR0b25zIHsKICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lLXRhYnMtaW5uZXItdGFicyAuZS1pbm5lci10YWJzLWNvbnRlbnQtd3JhcHBlciAuZS1pbm5lci10YWItY29udGVudCAuZS1pbm5lci10YWItYnV0dG9ucyBidXR0b24gewogICAgZGlzcGxheTogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsaW5lLWhlaWdodDogMjRweDsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgYm9yZGVyOiBub25lOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBwYWRkaW5nOiAwCn0KCi5lLXRhYnMtaW5uZXItdGFicyAuZS1pbm5lci10YWJzLWNvbnRlbnQtd3JhcHBlciAuZS1pbm5lci10YWItY29udGVudC5jb2xsYXBzaWJsZSAuZS1pbm5lci10YWItdGV4dCB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lLXRhYnMtaW5uZXItdGFicyAuZS1pbm5lci10YWJzLWNvbnRlbnQtd3JhcHBlciAuZS1pbm5lci10YWItY29udGVudC5jb2xsYXBzaWJsZSBidXR0b24gewogICAgZGlzcGxheTogbm9uZQp9CgouZS10YWJzLWlubmVyLXRhYnMgLmUtaW5uZXItdGFicy1jb250ZW50LXdyYXBwZXIgLmUtaW5uZXItdGFiLWNvbnRlbnQuY29sbGFwc2libGUuc2hvdy1pbm5lci10YWItYnV0dG9ucyAuZS1pbm5lci10YWItYnV0dG9ucywKLmUtdGFicy1pbm5lci10YWJzIC5lLWlubmVyLXRhYnMtY29udGVudC13cmFwcGVyIC5lLWlubmVyLXRhYi1jb250ZW50LmNvbGxhcHNpYmxlIGJ1dHRvbi5zaG93LWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZS10YWJzLWlubmVyLXRhYnMgLmUtaW5uZXItdGFicy1jb250ZW50LXdyYXBwZXIgLmUtaW5uZXItdGFiLWNvbnRlbnQuc2hvdy1mdWxsLWhlaWdodCBkaXYuZS1pbm5lci10YWItdGV4dCB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lLXRhYnMtaW5uZXItdGFicz4uZS10YWItY29udGVudDpmaXJzdC1jaGlsZCB7CiAgICAgICAgcGFkZGluZy10b3A6IDI0cHgKICAgIH0KICAgIC5lLXRhYnMtaW5uZXItdGFicyAuZS1pbm5lci10YWJzLXdyYXBwZXIgewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KICAgIC5lLXRhYnMtaW5uZXItdGFicyAuZS1pbm5lci10YWJzLWNvbnRlbnQtd3JhcHBlciB7CiAgICAgICAgYm9yZGVyOiBzb2xpZCAjZDVkYWRmOwogICAgICAgIGJvcmRlci13aWR0aDogMXB4IDFweCAwCiAgICB9CiAgICAuZS10YWJzLWlubmVyLXRhYnMgLmUtaW5uZXItdGFicy1jb250ZW50LXdyYXBwZXIgLmUtdGFiLW1vYmlsZS10aXRsZSB7CiAgICAgICAgYm9yZGVyOiBzb2xpZCAjZDVkYWRmOwogICAgICAgIGJvcmRlci13aWR0aDogMCAwIDFweDsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAzOHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAzOHB4OwogICAgICAgIC1vLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwYWRkaW5nOiAwIDEwcHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrCiAgICB9CiAgICAuZS10YWJzLWlubmVyLXRhYnMgLmUtaW5uZXItdGFicy1jb250ZW50LXdyYXBwZXIgLmUtaW5uZXItdGFiLWNvbnRlbnQgewogICAgICAgIGJvcmRlcjogc29saWQgI2Q1ZGFkZjsKICAgICAgICBib3JkZXItd2lkdGg6IDAgMCAxcHg7CiAgICAgICAgcGFkZGluZzogMjBweAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdC5lbGVtZW50b3ItbGF5b3V0LWVuZCAuZS10YWJzLW1haW4tYXJlYSB7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdwp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QuZWxlbWVudG9yLWxheW91dC1lbmQgLmUtdGFicy1tYWluLWFyZWEgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IHsKICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEFyaWFsLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNhbnMtc2VyaWYKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicyB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbgp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLW1haW4tYXJlYSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICBoZWlnaHQ6IDQzNHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtd3JhcHBlciB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIHdpZHRoOiAzMyUKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1oZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtZmxleDogMDsKICAgIC1tcy1mbGV4OiAwIDAgYXV0bzsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICBtaW4taGVpZ2h0OiA1NnB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkNWRhZGYKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1oZWFkZXIgLmUtdGFicy1oZWFkZXItcmlnaHQtc2lkZSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgZmxleC1zaHJpbms6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1oZWFkZXIgLmUtdGFicy10aXRsZSB7CiAgICBmb250LWZhbWlseTogUm9ib3RvLCBBcmlhbCwgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwogICAgLW8tdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTsKICAgIC13ZWJraXQtaHlwaGVuczogYXV0bzsKICAgIC1tcy1oeXBoZW5zOiBhdXRvOwogICAgaHlwaGVuczogYXV0bzsKICAgIG1hcmdpbjogYXV0byAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaGVhZGVyIC5lLXRhYnMtdmlkZW9zLWNvdW50IHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgZmxleC1zaHJpbms6IDA7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydDsKICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICBwYWRkaW5nOiAxOHB4IDAgMAp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWhlYWRlciAuZS10YWJzLXRvZ2dsZS12aWRlb3MtZGlzcGxheS1idXR0b24gewogICAgZGlzcGxheTogbm9uZTsKICAgIG1hcmdpbjogYXV0byAwIGF1dG8gOHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcGFkZGluZzogMCA0cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1oZWFkZXIgLmUtdGFicy10b2dnbGUtdmlkZW9zLWRpc3BsYXktYnV0dG9uLmUtZm9udC1pY29uLXN2ZyB7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1oZWFkZXIgLnJvdGF0ZS11cCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC4zczsKICAgIC1vLXRyYW5zaXRpb246IC4zczsKICAgIHRyYW5zaXRpb246IC4zcwp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWhlYWRlciAucm90YXRlLWRvd24gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAuM3M7CiAgICAtby10cmFuc2l0aW9uOiAuM3M7CiAgICB0cmFuc2l0aW9uOiAuM3MKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgaGVpZ2h0OiAxMDAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWJzLWl0ZW1zIHsKICAgIG92ZXJmbG93OiBhdXRvOwogICAgaGVpZ2h0OiAxMDAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS1zZWN0aW9uLXRpdGxlIHsKICAgIGJvcmRlci1jb2xvcjogI2Q1ZGFkZjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGhlaWdodDogMzZweDsKICAgIHBhZGRpbmc6IDAgMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAzNnB4OwogICAgbWFyZ2luOiAwOwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIC1vLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci13aWR0aDogMDsKICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveAp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNkNWRhZGY7CiAgICBib3JkZXItd2lkdGg6IDAgMCAxcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGhlaWdodDogNTVweDsKICAgIGxpbmUtaGVpZ2h0OiA1NXB4OwogICAgb3V0bGluZTogbm9uZTsKICAgIHBhZGRpbmc6IDAgMTZweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveAp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlIGkgewogICAgdGV4dC1zaGFkb3c6IDAgMCAzcHggIzAwMDsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiB2YXIoLS1wbGF5bGlzdC1pdGVtLWljb24tc2l6ZSwgMTZweCkKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZSBzdmcgewogICAgdGV4dC1zaGFkb3c6IDAgMCAzcHggIzAwMDsKICAgIGNvbG9yOiAjZmZmOwogICAgZmlsbDogI2ZmZjsKICAgIHdpZHRoOiB2YXIoLS1wbGF5bGlzdC1pdGVtLWljb24tc2l6ZSwgMTZweCk7CiAgICBoZWlnaHQ6IHZhcigtLXBsYXlsaXN0LWl0ZW0taWNvbi1zaXplLCAxNnB4KQp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlIHN2ZyBwYXRoIHsKICAgIGZpbGw6ICNmZmYKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZS5lLWFjdGl2ZSwKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmM2Y1OwogICAgYm9yZGVyLWNvbG9yOiAjZDVkYWRmOwogICAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWItdGl0bGUuZS1hY3RpdmUgaSwKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZS5lLWFjdGl2ZSBzdmcsCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWItdGl0bGU6aG92ZXIgaSwKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZTpob3ZlciBzdmcgewogICAgdGV4dC1zaGFkb3c6IDAgMCAzcHggIzAwMDsKICAgIGNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWItdGl0bGUuZS1hY3RpdmUgc3ZnIHBhdGgsCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWItdGl0bGU6aG92ZXIgc3ZnIHBhdGggewogICAgZmlsbDogI2ZmZgp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlLmUtYWN0aXZlIC5lLXRhYi10aXRsZS10ZXh0LAouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlOmhvdmVyIC5lLXRhYi10aXRsZS10ZXh0IHsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlIC5pY29uLXBsYXksCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWItdGl0bGUgLmljb24td2F0Y2hlZCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlIC5lLXRhYi10aHVtYm5haWwgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q1ZGFkZjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbjogYXV0byAwOwogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7CiAgICBmbGV4LXNocmluazogMDsKICAgIHdpZHRoOiA3NXB4OwogICAgaGVpZ2h0OiA0MnB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWItdGl0bGUgLmUtdGFiLXRodW1ibmFpbCBpbWcgewogICAgLW8tb2JqZWN0LWZpdDogZmlsbDsKICAgIG9iamVjdC1maXQ6IGZpbGw7CiAgICB3aWR0aDogNzVweDsKICAgIGhlaWdodDogNDJweAp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlIC5lLXRhYi10aHVtYm5haWwgaSwKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZSAuZS10YWItdGh1bWJuYWlsIHN2ZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDRweDsKICAgIHJpZ2h0OiA0cHg7CiAgICBmb250LXdlaWdodDogOTAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWItdGl0bGUgLmUtdGFiLXRpdGxlLXRleHQgewogICAgZm9udC1zaXplOiAxNHB4OwogICAgbWFyZ2luOiBhdXRvIDhweDsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAtby10ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDEKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZSBpLAouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlIHN2ZyB7CiAgICBtYXJnaW46IGF1dG8gMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZSAuZS10YWItZHVyYXRpb24gewogICAgZm9udC1zaXplOiAxNHB4OwogICAgbWFyZ2luOiBhdXRvIDAKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyIC5lLXRhYi10aXRsZSAuaWNvbi13YXRjaGVkLAouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFiLXRpdGxlLndhdGNoZWQtdmlkZW8gLmljb24tcGxheSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWItdGl0bGUud2F0Y2hlZC12aWRlbyAuaWNvbi13YXRjaGVkIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuc2hhZG93LXRvcCB7CiAgICBkaXNwbGF5OiBub25lOwogICAgaGVpZ2h0OiA5OHB4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudChib3R0b20sIHRyYW5zcGFyZW50IDAsICNmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCBib3R0b20sIGxlZnQgdG9wLCBmcm9tKHRyYW5zcGFyZW50KSwgdG8oI2ZmZikpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsIHRyYW5zcGFyZW50LCAjZmZmKQp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLnNoYWRvdy1ib3R0b20gewogICAgZGlzcGxheTogbm9uZTsKICAgIGhlaWdodDogOThweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgdHJhbnNwYXJlbnQgMCwgI2ZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20odHJhbnNwYXJlbnQpLCB0bygjZmZmKSk7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB0cmFuc3BhcmVudCwgI2ZmZik7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIuYm90dG9tLXNoYWRvdyAuc2hhZG93LWJvdHRvbSwKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pdGVtcy13cmFwcGVyLnRvcC1zaGFkb3cgLnNoYWRvdy10b3AgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1jb250ZW50LXdyYXBwZXIgewogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxOwogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtY29udGVudC13cmFwcGVyIC5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLWltYWdlLW92ZXJsYXkgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJQp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWNvbnRlbnQtd3JhcHBlciAuZS10YWItbW9iaWxlLXRpdGxlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1jb250ZW50LXdyYXBwZXIgLmUtdGFiLWNvbnRlbnQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvdXRsaW5lOiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtY29udGVudC13cmFwcGVyIC5lLXRhYi1jb250ZW50PmRpdiB7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1jb250ZW50LXdyYXBwZXIgLmUtdGFiLWNvbnRlbnQgaWZyYW1lIHsKICAgIGhlaWdodDogMTAwJTsKICAgIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtY29udGVudC13cmFwcGVyIC5lLXRhYi1jb250ZW50IHZpZGVvIHsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1pbm5lci10YWJzIC5lLXRhYi1jb250ZW50IHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBvdXRsaW5lOiBub25lCn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLW1haW4tYXJlYSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgaGVpZ2h0OiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLW1haW4tYXJlYSAuZS10YWJzLWNvbnRlbnQtd3JhcHBlciB7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGhlaWdodDogMzglCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIGhlaWdodDogNjIlCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWl0ZW1zLXdyYXBwZXIgLmUtdGFicy1pdGVtcyB7CiAgICAgICAgbWF4LWhlaWdodDogMjQ4cHgKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLXBsYXlsaXN0IC5lLXRhYnMtaXRlbXMtd3JhcHBlciAuZS10YWJzLWl0ZW1zIC5lLXRhYi10aXRsZSB7CiAgICAgICAgYm9yZGVyOiBub25lCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWhlYWRlciB7CiAgICAgICAgbWluLWhlaWdodDogNDhweAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFicy1oZWFkZXIgLmUtdGFicy10b2dnbGUtdmlkZW9zLWRpc3BsYXktYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC12aWRlby1wbGF5bGlzdCAuZS10YWJzLWhlYWRlciAuZS10YWJzLXZpZGVvcy1jb3VudCB7CiAgICAgICAgbWFyZ2luOiAwIDZweDsKICAgICAgICBwYWRkaW5nOiAxNHB4IDAgMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdmlkZW8tcGxheWxpc3QgLmUtdGFiLWNvbnRlbnQgewogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGZsZXgKICAgIH0KfQoKLmVsZW1lbnRvci1wYXltZW50LWJ1dHRvbiB7CiAgICBib3JkZXI6IG5vbmUKfQoKLmVsZW1lbnRvci1zY3JvbGxpbmctdHJhY2tlciB7CiAgICAtLXNjcm9sbGluZy10cmFjay1kZWZhdWx0LXByb2dyZXNzLWNvbG9yOiAjNjFjZTcwOwogICAgLS1zY3JvbGxpbmctdHJhY2stZGVmYXVsdC1jb2xvcjogI2VlZTsKICAgIC0tc2Nyb2xsaW5nLXRyYWNrLXByZWNlbnRhZ2UtZGVmYXVsdC1jb2xvcjogJGJsYWNrCn0KCi5lbGVtZW50b3Itc2Nyb2xsaW5nLXRyYWNrZXItaG9yaXpvbnRhbCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiB2YXIoLS1ob3Jpem9udGFsLWhlaWdodCwgMjBweCk7CiAgICBwYWRkaW5nOiB2YXIoLS10cmFja2VyLXBhZGRpbmcpOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgYm9yZGVyLWxlZnQ6IHZhcigtLWhvcml6b250YWwtYm9yZGVyLWxlZnQtd2lkdGgsIDJweCkgdmFyKC0taG9yaXpvbnRhbC1ib3JkZXItc3R5bGUpIHZhcigtLWhvcml6b250YWwtYm9yZGVyLWNvbG9yKTsKICAgIGJvcmRlci1ib3R0b206IHZhcigtLWhvcml6b250YWwtYm9yZGVyLWJvdHRvbS13aWR0aCwgMnB4KSB2YXIoLS1ob3Jpem9udGFsLWJvcmRlci1zdHlsZSkgdmFyKC0taG9yaXpvbnRhbC1ib3JkZXItY29sb3IpOwogICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1ob3Jpem9udGFsLWJvcmRlci1yaWdodC13aWR0aCwgMnB4KSB2YXIoLS1ob3Jpem9udGFsLWJvcmRlci1zdHlsZSkgdmFyKC0taG9yaXpvbnRhbC1ib3JkZXItY29sb3IpOwogICAgYm9yZGVyLXRvcDogdmFyKC0taG9yaXpvbnRhbC1ib3JkZXItdG9wLXdpZHRoLCAycHgpIHZhcigtLWhvcml6b250YWwtYm9yZGVyLXN0eWxlKSB2YXIoLS1ob3Jpem9udGFsLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNjcm9sbGluZy10cmFjay1kZWZhdWx0LWNvbG9yKTsKICAgIGRpcmVjdGlvbjogdmFyKC0tZGlyZWN0aW9uKQp9CgouZWxlbWVudG9yLXNjcm9sbGluZy10cmFja2VyLWhvcml6b250YWwgLmN1cnJlbnQtcHJvZ3Jlc3MgewogICAgZGlzcGxheTogbm9uZTsKICAgIGhlaWdodDogMTAwJTsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXByb2dyZXNzLWJvcmRlci1yYWRpdXMpOwogICAgYm9yZGVyLWxlZnQ6IHZhcigtLWhvcml6b250YWwtcHJvZ3Jlc3MtYm9yZGVyLWxlZnQtd2lkdGgsIDJweCkgdmFyKC0taG9yaXpvbnRhbC1wcm9ncmVzcy1ib3JkZXIpIHZhcigtLWhvcml6b250YWwtcHJvZ3Jlc3MtYm9yZGVyLWNvbG9yKTsKICAgIGJvcmRlci1ib3R0b206IHZhcigtLWhvcml6b250YWwtcHJvZ3Jlc3MtYm9yZGVyLWJvdHRvbS13aWR0aCwgMnB4KSB2YXIoLS1ob3Jpem9udGFsLXByb2dyZXNzLWJvcmRlcikgdmFyKC0taG9yaXpvbnRhbC1wcm9ncmVzcy1ib3JkZXItY29sb3IpOwogICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1ob3Jpem9udGFsLXByb2dyZXNzLWJvcmRlci1yaWdodC13aWR0aCwgMnB4KSB2YXIoLS1ob3Jpem9udGFsLXByb2dyZXNzLWJvcmRlcikgdmFyKC0taG9yaXpvbnRhbC1wcm9ncmVzcy1ib3JkZXItY29sb3IpOwogICAgYm9yZGVyLXRvcDogdmFyKC0taG9yaXpvbnRhbC1wcm9ncmVzcy1ib3JkZXItdG9wLXdpZHRoLCAycHgpIHZhcigtLWhvcml6b250YWwtcHJvZ3Jlc3MtYm9yZGVyKSB2YXIoLS1ob3Jpem9udGFsLXByb2dyZXNzLWJvcmRlci1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zY3JvbGxpbmctdHJhY2stZGVmYXVsdC1wcm9ncmVzcy1jb2xvcikKfQoKLmVsZW1lbnRvci1zY3JvbGxpbmctdHJhY2tlci1ob3Jpem9udGFsIC5jdXJyZW50LXByb2dyZXNzIC5jdXJyZW50LXByb2dyZXNzLXBlcmNlbnRhZ2UgewogICAgaW5zZXQtaW5saW5lLWVuZDogLjVlbTsKICAgIGluc2V0LWlubGluZS1zdGFydDogYXV0bzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpcmVjdGlvbjogdmFyKC0tdGV4dC1kaXJlY3Rpb24pOwogICAgY29sb3I6IHZhcigtLXBlcmNlbnRhZ2UtY29sb3IsIHZhcigtLXNjcm9sbGluZy10cmFjay1wcmVjZW50YWdlLWRlZmF1bHQtY29sb3IpKQp9CgouZWxlbWVudG9yLXNjcm9sbGluZy10cmFja2VyLWNpcmN1bGFyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgd2lkdGg6IHZhcigtLWNpcmN1bGFyLXdpZHRoLCAxMDBweCk7CiAgICBoZWlnaHQ6IHZhcigtLWNpcmN1bGFyLWhlaWdodCwgMTAwcHgpOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogMDsKICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7CiAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IGF1dG87CiAgICBtYXJnaW4taW5saW5lLWVuZDogYXV0bwp9CgouZWxlbWVudG9yLXNjcm9sbGluZy10cmFja2VyLWNpcmN1bGFyIC5jdXJyZW50LXByb2dyZXNzLXBlcmNlbnRhZ2UgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgY29sb3I6IHZhcigtLXBlcmNlbnRhZ2UtY29sb3IsIHZhcigtLXNjcm9sbGluZy10cmFjay1wcmVjZW50YWdlLWRlZmF1bHQtY29sb3IpKQp9CgouZWxlbWVudG9yLXNjcm9sbGluZy10cmFja2VyLWNpcmN1bGFyIHN2ZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGUKfQoKLmVsZW1lbnRvci1zY3JvbGxpbmctdHJhY2tlci1jaXJjdWxhciAuY3VycmVudC1wcm9ncmVzcyB7CiAgICBkaXNwbGF5OiBub25lOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlOwogICAgc3Ryb2tlOiB2YXIoLS1jaXJjdWxhci1jb2xvciwgdmFyKC0tc2Nyb2xsaW5nLXRyYWNrLWRlZmF1bHQtcHJvZ3Jlc3MtY29sb3IpKTsKICAgIGZpbGw6IHRyYW5zcGFyZW50OwogICAgc3Ryb2tlLXdpZHRoOiB2YXIoLS1jaXJjdWxhci1wcm9ncmVzcy13aWR0aCwgNHB4KQp9CgouZWxlbWVudG9yLXNjcm9sbGluZy10cmFja2VyLWNpcmN1bGFyIC5jaXJjbGUgewogICAgc3Ryb2tlOiB2YXIoLS1jaXJjdWxhci1iYWNrZ3JvdW5kLWNvbG9yLCB2YXIoLS1zY3JvbGxpbmctdHJhY2stZGVmYXVsdC1jb2xvcikpOwogICAgZmlsbDogdHJhbnNwYXJlbnQ7CiAgICBzdHJva2Utd2lkdGg6IHZhcigtLWNpcmN1bGFyLWJhY2tncm91bmQtd2lkdGgsIDRweCkKfQoKLmVsZW1lbnRvci1zY3JvbGxpbmctdHJhY2tlci1hbGlnbm1lbnQtbGVmdCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogYXV0bwp9CgouZWxlbWVudG9yLXNjcm9sbGluZy10cmFja2VyLWFsaWdubWVudC1jZW50ZXIgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KfQoKLmVsZW1lbnRvci1zY3JvbGxpbmctdHJhY2tlci1hbGlnbm1lbnQtcmlnaHQgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IDAKfQ=="}},"time_used":474,"timings":{"blocked":278,"dns":0,"connect":0,"send":0,"wait":98,"receive":98,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/svg-support/js/min/svgs-inline-min.js?ver=1.0.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.324Z","timestamp":1785145482324,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/svg-support/js/min/svgs-inline-min.js?ver=1.0.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\r\nSec-Fetch-Dest: script\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 2611\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":2611,"size_decoded":2827,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"0c01ab9fd82b5a7ab597c13fb9b28bb3","sha1":"1b311df15a3b7ce36d8ffd857b75a042778a44a9","sha256":"b8695dc320002faa65408e6ba906d9f2018f35cf8fb4790e6aa9dcad958a263e","sha512":"ff4950f13598fd1c6da22388e30f63438fe1efcb53cf940aa56c86ae3e487e139fce59ed445448df14baab31c95f692efdc0d8ef65cdb49d49daf594d1676edb","ssdeep":"","tlshash":"1f51e0a9bbe910bd691770748aeeb0583534542b1604dc107a1cb9e21f5ad2823fdbdf","first_seen":"2026-07-27T08:06:56.513578Z","last_seen":"2026-07-27T09:45:50.94766Z","times_seen":3,"resource_available":true,"data":"ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIChmdW5jdGlvbihlKSB7CiAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICBpZiAoIklNRyIgPT09IGUubm9kZU5hbWUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLmlkLAogICAgICAgICAgICAgICAgcyA9IGUuY2xhc3NMaXN0LAogICAgICAgICAgICAgICAgaSA9IGUuc3JjOwogICAgICAgICAgICBpZiAoaS5lbmRzV2l0aCgic3ZnIikpIHsKICAgICAgICAgICAgICAgIHZhciByID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogICAgICAgICAgICAgICAgci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoNCA9PSByLnJlYWR5U3RhdGUgJiYgMjAwID09IHIuc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvOwogICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gci5yZXNwb25zZVRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gKG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhkYXRhLCAidGV4dC9odG1sIikuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInN2ZyIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuaWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdCA/IHZvaWQgMCA9PT0gYSA/ICh0ID0gInN2Zy1yZXBsYWNlZC0iICsgbiwgaS5zZXRBdHRyaWJ1dGUoImlkIiwgdCkpIDogdCA9IGEgOiBpLnNldEF0dHJpYnV0ZSgiaWQiLCB0KSwgdm9pZCAwICE9PSBzICYmIGkuc2V0QXR0cmlidXRlKCJjbGFzcyIsIHMgKyAiIHJlcGxhY2VkLXN2ZyBzdmctcmVwbGFjZWQtIiArIG4pLCBpLnJlbW92ZUF0dHJpYnV0ZSgieG1sbnM6YSIpLCBlLnJlcGxhY2VXaXRoKGkpLCBuKysKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCByLm9wZW4oIkdFVCIsIGksICExKSwgci5zZW5kKG51bGwpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcyhlKSB7CiAgICAgICAgaWYgKGUuY2hpbGROb2Rlcy5sZW5ndGggPiAwKQogICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGUuY2hpbGROb2Rlcy5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICBpZiAoIklNRyIgPT0gZS5jaGlsZE5vZGVzW25dLm5vZGVOYW1lKSB0KGUuY2hpbGROb2Rlc1tuXSk7CiAgICAgICAgICAgICAgICBlbHNlIHMoZS5jaGlsZE5vZGVzW25dKQogICAgICAgICAgICB9CiAgICB9CiAgICBsZXQgbiA9IDA7CiAgICAoYm9kaGlzdmdzSW5saW5lU3VwcG9ydCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgidHJ1ZSIgPT09IEZvcmNlSW5saW5lU1ZHQWN0aXZlKQogICAgICAgICAgICBmb3IgKHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltZyIpLCBuID0gMDsgbiA8IGUubGVuZ3RoOyBuKyspIHZvaWQgMCAhPT0gZVtuXS5zcmMgJiYgZVtuXS5zcmMubWF0Y2goL1wuKHN2ZykvKSAmJiAoZVtuXS5jbGFzc0xpc3QuY29udGFpbnMoY3NzVGFyZ2V0LkZvcmNlSW5saW5lU1ZHKSB8fCBlW25dLmNsYXNzTGlzdC5hZGQoY3NzVGFyZ2V0LkZvcmNlSW5saW5lU1ZHKSk7CiAgICAgICAgaWYgKFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggfHwgKFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICgibnVtYmVyIiAhPSB0eXBlb2YgdCB8fCAhaXNGaW5pdGUodCkgfHwgTWF0aC5mbG9vcih0KSAhPT0gdCB8fCB0ID4gcy5sZW5ndGgpICYmICh0ID0gcy5sZW5ndGgpLCB0IC09IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgdmFyIG4gPSBzLmxhc3RJbmRleE9mKGUsIHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xICE9PSBuICYmIG4gPT09IHQKICAgICAgICAgICAgfSksIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMubGVuZ3RoIC0gZS5sZW5ndGg7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA+PSAwICYmIHRoaXMubGFzdEluZGV4T2YoZSkgPT09IHQKICAgICAgICAgICAgfSwgInRydWUiID09PSBGb3JjZUlubGluZVNWR0FjdGl2ZSkgdmFyIGkgPSAiaW1nLiIgIT09IGNzc1RhcmdldC5Cb2RoaSA/IGNzc1RhcmdldC5Gb3JjZUlubGluZVNWRyA6ICJzdHlsZS1zdmciOwogICAgICAgIGVsc2UgdmFyIGkgPSAiaW1nLiIgIT09IGNzc1RhcmdldCA/IGNzc1RhcmdldCA6ICJzdHlsZS1zdmciOwogICAgICAgIGkgPSBpLnJlcGxhY2UoImltZy4iLCAiIik7CiAgICAgICAgZm9yICh2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaSksIG4gPSAwOyBuIDwgZS5sZW5ndGg7IG4rKykgewogICAgICAgICAgICB2YXIgcjsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZVtuXS5zcmMpIHMoZVtuXSk7CiAgICAgICAgICAgIGVsc2UgdChlW25dKQogICAgICAgIH0KICAgIH0pKCkKfSkpOw=="}},"time_used":847,"timings":{"blocked":752,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=3.6.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.295Z","timestamp":1785145482295,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/css/frontend.min.css?ver=3.6.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 197237\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":197237,"size_decoded":197448,"mime_type":"text/css","magic":"ASCII text","md5":"1f2aa1593172960baf3a836c42d6312f","sha1":"f64ca9a9183623092069586d92de539f350b1bfb","sha256":"2eb82a0f40b3d179dc3b47c6f381cf3d3d467c9d545bc0733a2cb8b197ca37dc","sha512":"2c6d88021dac92ef95285a279f5414e3ccdf1f1d7b9445dc1937eec3b1227413f9c5b3fe9812862cab6e77528fe257b89bb4d56afc7946c32bc8523fd0bf7b11","ssdeep":"1536:ctFGvD8PCluXzpQXu+uSCsMPU6sJe7pInwp/n4HK:kqflu2e+ujsMszwn","tlshash":"811452223d631104651fa82f57cb164c72a480c7d94afde4f9cea443cfbadd43ba1aa5","first_seen":"2026-07-27T08:06:56.352545Z","last_seen":"2026-07-27T09:45:50.933296Z","times_seen":3,"resource_available":false,"data":"LyohIGVsZW1lbnRvciAtIHYzLjYuMiAtIDA0LTA0LTIwMjIgKi8KCi5kaWFsb2ctd2lkZ2V0LWNvbnRlbnQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMnB4IDhweCAyM3B4IDNweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgIGJveC1zaGFkb3c6IDJweCA4cHggMjNweCAzcHggcmdiYSgwLCAwLCAwLCAuMik7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5kaWFsb2ctbWVzc2FnZSB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9CgouZGlhbG9nLXR5cGUtbGlnaHRib3ggewogICAgcG9zaXRpb246IGZpeGVkOwogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuOCk7CiAgICB6LWluZGV4OiA5OTk5OwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB1c2VyLXNlbGVjdDogbm9uZQp9CgouZGlhbG9nLXR5cGUtbGlnaHRib3ggLmRpYWxvZy13aWRnZXQtY29udGVudCB7CiAgICBtYXJnaW46IGF1dG87CiAgICB3aWR0aDogMzc1cHgKfQoKLmRpYWxvZy10eXBlLWxpZ2h0Ym94IC5kaWFsb2ctaGVhZGVyIHsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGNvbG9yOiAjNDk1MTU3OwogICAgcGFkZGluZzogMzBweCAwIDEwcHg7CiAgICBmb250LXdlaWdodDogNTAwCn0KCi5kaWFsb2ctdHlwZS1saWdodGJveCAuZGlhbG9nLW1lc3NhZ2UgewogICAgcGFkZGluZzogMCAzMHB4IDMwcHg7CiAgICBtaW4taGVpZ2h0OiA1MHB4Cn0KCi5kaWFsb2ctdHlwZS1saWdodGJveDpub3QoLmVsZW1lbnRvci1wb3B1cC1tb2RhbCkgLmRpYWxvZy1oZWFkZXIsCi5kaWFsb2ctdHlwZS1saWdodGJveDpub3QoLmVsZW1lbnRvci1wb3B1cC1tb2RhbCkgLmRpYWxvZy1tZXNzYWdlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZGlhbG9nLXR5cGUtbGlnaHRib3ggLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU5ZWM7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmRpYWxvZy10eXBlLWxpZ2h0Ym94IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyPi5kaWFsb2ctYnV0dG9uIHsKICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEFyaWFsLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNhbnMtc2VyaWY7CiAgICB3aWR0aDogNTAlOwogICAgYm9yZGVyOiBub25lOwogICAgYmFja2dyb3VuZDogbm9uZTsKICAgIGNvbG9yOiAjNmQ3ODgyOwogICAgZm9udC1zaXplOiAxNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcGFkZGluZzogMTNweCAwOwogICAgb3V0bGluZTogMAp9CgouZGlhbG9nLXR5cGUtbGlnaHRib3ggLmRpYWxvZy1idXR0b25zLXdyYXBwZXI+LmRpYWxvZy1idXR0b246aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjZmNwp9CgouZGlhbG9nLXR5cGUtbGlnaHRib3ggLmRpYWxvZy1idXR0b25zLXdyYXBwZXI+LmRpYWxvZy1idXR0b24uZGlhbG9nLW9rIHsKICAgIGNvbG9yOiAjYjAxYjFiCn0KCi5kaWFsb2ctdHlwZS1saWdodGJveCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlcj4uZGlhbG9nLWJ1dHRvbi5kaWFsb2ctdGFrZV9vdmVyIHsKICAgIGNvbG9yOiAjMzliNTRhCn0KCi5kaWFsb2ctdHlwZS1saWdodGJveCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlcj4uZGlhbG9nLWJ1dHRvbjphY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMzAsIDIzMywgMjM2LCAuNSkKfQoKLmRpYWxvZy10eXBlLWxpZ2h0Ym94IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyPi5kaWFsb2ctYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgIGJvcmRlcjogMAp9CgouZGlhbG9nLWNsb3NlLWJ1dHRvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgcmlnaHQ6IDE1cHg7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBsaW5lLWhlaWdodDogMQp9CgouZGlhbG9nLWNsb3NlLWJ1dHRvbjpub3QoOmhvdmVyKSB7CiAgICBvcGFjaXR5OiAuNAp9CgouZGlhbG9nLWFsZXJ0LXdpZGdldCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlcj5idXR0b24gewogICAgd2lkdGg6IDEwMCUKfQoKLmRpYWxvZy1jb25maXJtLXdpZGdldCAuZGlhbG9nLWJ1dHRvbjpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTZlOWVjCn0KCi5kaWFsb2ctcHJldmVudC1zY3JvbGwgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIG1heC1oZWlnaHQ6IDEwMHZoCn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjRweCkgewogICAgYm9keS5hZG1pbi1iYXIgLmRpYWxvZy1saWdodGJveC13aWRnZXQgewogICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDMycHgpCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgYm9keS5hZG1pbi1iYXIgLmRpYWxvZy10eXBlLWxpZ2h0Ym94IHsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIGhlaWdodDogMTAwdmgKICAgIH0KfQoKLmVsZW1lbnRvci1hc3BlY3QtcmF0aW8tMjE5IC5lbGVtZW50b3ItZml0LWFzcGVjdC1yYXRpbyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNDIuODU3MSUKfQoKLmVsZW1lbnRvci1hc3BlY3QtcmF0aW8tMTY5IC5lbGVtZW50b3ItZml0LWFzcGVjdC1yYXRpbyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlCn0KCi5lbGVtZW50b3ItYXNwZWN0LXJhdGlvLTQzIC5lbGVtZW50b3ItZml0LWFzcGVjdC1yYXRpbyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzUlCn0KCi5lbGVtZW50b3ItYXNwZWN0LXJhdGlvLTMyIC5lbGVtZW50b3ItZml0LWFzcGVjdC1yYXRpbyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNjYuNjY2NiUKfQoKLmVsZW1lbnRvci1hc3BlY3QtcmF0aW8tMTEgLmVsZW1lbnRvci1maXQtYXNwZWN0LXJhdGlvIHsKICAgIHBhZGRpbmctYm90dG9tOiAxMDAlCn0KCi5lbGVtZW50b3ItYXNwZWN0LXJhdGlvLTkxNiAuZWxlbWVudG9yLWZpdC1hc3BlY3QtcmF0aW8gewogICAgcGFkZGluZy1ib3R0b206IDE3Ny44JQp9CgouZWxlbWVudG9yLWZpdC1hc3BlY3QtcmF0aW8gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgaGVpZ2h0OiAwCn0KCi5lbGVtZW50b3ItZml0LWFzcGVjdC1yYXRpbyBpZnJhbWUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIGhlaWdodDogMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgYm9yZGVyOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMAp9CgouZWxlbWVudG9yLWZpdC1hc3BlY3QtcmF0aW8gdmlkZW8gewogICAgd2lkdGg6IDEwMCUKfQoKLmZsYXRwaWNrci1jYWxlbmRhciB7CiAgICB3aWR0aDogMjgwcHgKfQoKLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggc3Bhbi5jdXItbW9udGggewogICAgZm9udC13ZWlnaHQ6IDMwMAp9CgouZmxhdHBpY2tyLWNhbGVuZGFyIC5kYXlDb250YWluZXIgewogICAgd2lkdGg6IDI4MHB4OwogICAgbWluLXdpZHRoOiAyODBweDsKICAgIG1heC13aWR0aDogMjgwcHgKfQoKLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheXMgewogICAgd2lkdGg6IDI4MHB4Cn0KCi5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkgewogICAgbWF4LXdpZHRoOiAzN3B4OwogICAgaGVpZ2h0OiAzN3B4OwogICAgbGluZS1oZWlnaHQ6IDM3cHgKfQoKLmVsZW1lbnRvci10ZW1wbGF0ZXMtbW9kYWwgLmRpYWxvZy13aWRnZXQtY29udGVudCB7CiAgICBmb250LWZhbWlseTogUm9ib3RvLCBBcmlhbCwgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjNmNTsKICAgIHdpZHRoOiAxMDAlCn0KCkBtZWRpYSAobWF4LXdpZHRoOjE0MzlweCkgewogICAgLmVsZW1lbnRvci10ZW1wbGF0ZXMtbW9kYWwgLmRpYWxvZy13aWRnZXQtY29udGVudCB7CiAgICAgICAgbWF4LXdpZHRoOiA5OTBweAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxNDQwcHgpIHsKICAgIC5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsIC5kaWFsb2ctd2lkZ2V0LWNvbnRlbnQgewogICAgICAgIG1heC13aWR0aDogMTIwMHB4CiAgICB9Cn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsIC5kaWFsb2ctaGVhZGVyIHsKICAgIHBhZGRpbmc6IDA7CiAgICB6LWluZGV4OiAxCn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyLAouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbCAuZGlhbG9nLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgOHB4IHJnYmEoMCwgMCwgMCwgLjEpOwogICAgYm94LXNoYWRvdzogMCAwIDhweCByZ2JhKDAsIDAsIDAsIC4xKTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBkaXNwbGF5OiBub25lOwogICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIHBhZGRpbmc6IDVweAp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tbGVmdDogNXB4Cn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3MgewogICAgcGFkZGluZzogMTJweCAzNnB4OwogICAgY29sb3I6ICNmZmY7CiAgICB3aWR0aDogYXV0bzsKICAgIGZvbnQtc2l6ZTogMTVweAp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZWxlbWVudG9yLWJ1dHRvbi1zdWNjZXNzOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzOWI1NGEKfQoKLmVsZW1lbnRvci10ZW1wbGF0ZXMtbW9kYWwgLmRpYWxvZy1tZXNzYWdlIHsKICAgIGhlaWdodDogNzUwcHg7CiAgICBtYXgtaGVpZ2h0OiA4NXZoOwogICAgb3ZlcmZsb3c6IGF1dG87CiAgICBwYWRkaW5nLXRvcDogMjVweAp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbCAuZGlhbG9nLWNvbnRlbnQgewogICAgaGVpZ2h0OiAxMDAlCn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsIC5kaWFsb2ctbG9hZGluZyB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsX19oZWFkZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OwogICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGhlaWdodDogNTBweAp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbF9faGVhZGVyX19sb2dvIHsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmVsZW1lbnRvci10ZW1wbGF0ZXMtbW9kYWxfX2hlYWRlcl9fbG9nby1hcmVhIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHgKfQoKLmVsZW1lbnRvci10ZW1wbGF0ZXMtbW9kYWxfX2hlYWRlcl9fbG9nby1hcmVhPiogewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci10ZW1wbGF0ZXMtbW9kYWxfX2hlYWRlcl9fbG9nb19faWNvbi13cmFwcGVyIHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIGZvbnQtc2l6ZTogMTJweAp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbF9faGVhZGVyX19sb2dvX190aXRsZSB7CiAgICBwYWRkaW5nLXRvcDogMnB4Cn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsX19oZWFkZXJfX2l0ZW1zLWFyZWEgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlCn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsX19oZWFkZXJfX2l0ZW0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveAp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbF9faGVhZGVyX19pdGVtPmkgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjNzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIC4zczsKICAgIHRyYW5zaXRpb246IGFsbCAuM3M7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmVsZW1lbnRvci10ZW1wbGF0ZXMtbW9kYWxfX2hlYWRlcl9faXRlbT5pOm5vdCg6aG92ZXIpIHsKICAgIGNvbG9yOiAjYTRhZmI3Cn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsX19oZWFkZXJfX2Nsb3NlLS1ub3JtYWwgewogICAgd2lkdGg6IDQ3cHg7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlNmU5ZWMKfQoKLmVsZW1lbnRvci10ZW1wbGF0ZXMtbW9kYWxfX2hlYWRlcl9fY2xvc2UtLW5vcm1hbCBpIHsKICAgIGZvbnQtc2l6ZTogMThweAp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbF9faGVhZGVyX19jbG9zZS0tc2tpcCB7CiAgICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCAyMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTRhZmI3OwogICAgZm9udC1zaXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbF9faGVhZGVyX19jbG9zZS0tc2tpcD5pIHsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZAp9CgouZWxlbWVudG9yLXRlbXBsYXRlcy1tb2RhbF9faGVhZGVyX19jbG9zZS0tc2tpcD5pOm5vdCg6aG92ZXIpIHsKICAgIGNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsX19zaWRlYmFyIHsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgZmxleC1zaHJpbms6IDA7CiAgICB3aWR0aDogMjUlOwogICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLCAwJSwgMTAwJSwgLjMpCn0KCi5lbGVtZW50b3ItdGVtcGxhdGVzLW1vZGFsX19jb250ZW50IHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDEzcHggaW5zZXQgcmdiYSgwLCAwLCAwLCAuMDUpOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDEzcHggcmdiYSgwLCAwLCAwLCAuMDUpCn0KCiN3cGFkbWluYmFyICN3cC1hZG1pbi1iYXItZWxlbWVudG9yX2VkaXRfcGFnZSAuZWxlbWVudG9yLWdlbmVyYWwtc2VjdGlvbisuZWxlbWVudG9yLXNlY29uZC1zZWN0aW9uIHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjNDY0YjUwOwogICAgbWFyZ2luLXRvcDogNnB4Cn0KCi5lbGVtZW50b3ItaGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1zY3JlZW4tb25seSwKLnNjcmVlbi1yZWFkZXItdGV4dCwKLnNjcmVlbi1yZWFkZXItdGV4dCBzcGFuLAoudWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTEwMDAwZW07CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiAxcHg7CiAgICBtYXJnaW46IC0xcHg7CiAgICBwYWRkaW5nOiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgICBib3JkZXI6IDAKfQoKLmVsZW1lbnRvci1jbGVhcmZpeDphZnRlciB7CiAgICBjb250ZW50OiAiIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY2xlYXI6IGJvdGg7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMAp9CgouZS1sb2dvLXdyYXBwZXIgewogICAgYmFja2dyb3VuZDogIzkzMDAzYzsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IC43NWVtOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmUtbG9nby13cmFwcGVyIGkgewogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDFlbQp9CgojZS1lbmFibGUtdW5maWx0ZXJlZC1maWxlcy1kaWFsb2ctaW1wb3J0LXRlbXBsYXRlIC5kaWFsb2ctY29uZmlybS1vayB7CiAgICBjb2xvcjogIzM5YjU0YQp9CgojZS1lbmFibGUtdW5maWx0ZXJlZC1maWxlcy1kaWFsb2ctaW1wb3J0LXRlbXBsYXRlIC5kaWFsb2ctY29uZmlybS1jYW5jZWwgewogICAgY29sb3I6ICNiMDFiMWIKfQoKLmVsZW1lbnRvciB7CiAgICAtd2Via2l0LWh5cGhlbnM6IG1hbnVhbDsKICAgIC1tcy1oeXBoZW5zOiBtYW51YWw7CiAgICBoeXBoZW5zOiBtYW51YWwKfQoKLmVsZW1lbnRvciAqLAouZWxlbWVudG9yIDphZnRlciwKLmVsZW1lbnRvciA6YmVmb3JlIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3gKfQoKLmVsZW1lbnRvciBhIHsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKLmVsZW1lbnRvciBociB7CiAgICBtYXJnaW46IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yIGltZyB7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZQp9CgouZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvcik6bm90KC5lbGVtZW50b3Itd2lkZ2V0LXRoZW1lLXBvc3QtY29udGVudCkgZmlndXJlIHsKICAgIG1hcmdpbjogMAp9CgouZWxlbWVudG9yIGVtYmVkLAouZWxlbWVudG9yIGlmcmFtZSwKLmVsZW1lbnRvciBvYmplY3QsCi5lbGVtZW50b3IgdmlkZW8gewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW46IDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGJvcmRlcjogbm9uZQp9CgouZWxlbWVudG9yIC5lbGVtZW50b3ItY3VzdG9tLWVtYmVkIHsKICAgIGxpbmUtaGVpZ2h0OiAwCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLAouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC1ob2xkZXIsCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWNvbnRhaW5lciB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgei1pbmRleDogMDsKICAgIGRpcmVjdGlvbjogbHRyCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWNvbnRhaW5lciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMXM7CiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDFzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxczsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWNvbnRhaW5lci5lbGVtZW50b3ItbG9hZGluZyB7CiAgICBvcGFjaXR5OiAwCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWVtYmVkIHsKICAgIG1heC13aWR0aDogbm9uZQp9CgouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlbywKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tZW1iZWQsCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWhvc3RlZCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKQp9CgouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlbyB7CiAgICBtYXgtd2lkdGg6IG5vbmUKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWh0bWw1LXZpZGVvIHsKICAgIC1vLW9iamVjdC1maXQ6IGNvdmVyOwogICAgb2JqZWN0LWZpdDogY292ZXIKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtb3ZlcmxheSwKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93IHsKICAgIGhlaWdodDogMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQp9CgouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3cgewogICAgei1pbmRleDogMAp9CgouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3dfX3NsaWRlX19pbWFnZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJTsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXIKfQoKLmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYWJzb2x1dGUsCi5lbGVtZW50b3Itd2lkZ2V0LXdyYXA+LmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hYnNvbHV0ZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGUKfQoKLmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZml4ZWQsCi5lbGVtZW50b3Itd2lkZ2V0LXdyYXA+LmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1maXhlZCB7CiAgICBwb3NpdGlvbjogZml4ZWQKfQoKLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtYXV0bywKLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtaW5pdGlhbCB7CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13cmFwIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3Itd2lkZ2V0LXRhYmxldF9fd2lkdGgtYXV0bywKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtdGFibGV0X193aWR0aC1pbml0aWFsIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1hdXRvLAogICAgLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaXRpYWwgewogICAgICAgIG1heC13aWR0aDogMTAwJQogICAgfQp9CgouZWxlbWVudG9yLWVsZW1lbnQgewogICAgLS1mbGV4LWRpcmVjdGlvbjogaW5pdGlhbDsKICAgIC0tZmxleC13cmFwOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGluaXRpYWw7CiAgICAtLWFsaWduLWl0ZW1zOiBpbml0aWFsOwogICAgLS1hbGlnbi1jb250ZW50OiBpbml0aWFsOwogICAgLS1nYXA6IGluaXRpYWw7CiAgICAtLWZsZXgtYmFzaXM6IGluaXRpYWw7CiAgICAtLWZsZXgtZ3JvdzogaW5pdGlhbDsKICAgIC0tZmxleC1zaHJpbms6IGluaXRpYWw7CiAgICAtLW9yZGVyOiBpbml0aWFsOwogICAgLS1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiB2YXIoLS1mbGV4LWRpcmVjdGlvbik7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tZmxleC1kaXJlY3Rpb24pOwogICAgLW1zLWZsZXgtd3JhcDogdmFyKC0tZmxleC13cmFwKTsKICAgIGZsZXgtd3JhcDogdmFyKC0tZmxleC13cmFwKTsKICAgIC13ZWJraXQtYm94LXBhY2s6IHZhcigtLWp1c3RpZnktY29udGVudCk7CiAgICAtbXMtZmxleC1wYWNrOiB2YXIoLS1qdXN0aWZ5LWNvbnRlbnQpOwogICAganVzdGlmeS1jb250ZW50OiB2YXIoLS1qdXN0aWZ5LWNvbnRlbnQpOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IHZhcigtLWFsaWduLWl0ZW1zKTsKICAgIC1tcy1mbGV4LWFsaWduOiB2YXIoLS1hbGlnbi1pdGVtcyk7CiAgICBhbGlnbi1pdGVtczogdmFyKC0tYWxpZ24taXRlbXMpOwogICAgLW1zLWZsZXgtbGluZS1wYWNrOiB2YXIoLS1hbGlnbi1jb250ZW50KTsKICAgIGFsaWduLWNvbnRlbnQ6IHZhcigtLWFsaWduLWNvbnRlbnQpOwogICAgZ2FwOiB2YXIoLS1nYXApOwogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IHZhcigtLWZsZXgtYmFzaXMpOwogICAgZmxleC1iYXNpczogdmFyKC0tZmxleC1iYXNpcyk7CiAgICAtd2Via2l0LWJveC1mbGV4OiB2YXIoLS1mbGV4LWdyb3cpOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IHZhcigtLWZsZXgtZ3Jvdyk7CiAgICBmbGV4LWdyb3c6IHZhcigtLWZsZXgtZ3Jvdyk7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogdmFyKC0tZmxleC1zaHJpbmspOwogICAgZmxleC1zaHJpbms6IHZhcigtLWZsZXgtc2hyaW5rKTsKICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IHZhcigtLW9yZGVyKTsKICAgIC1tcy1mbGV4LW9yZGVyOiB2YXIoLS1vcmRlcik7CiAgICBvcmRlcjogdmFyKC0tb3JkZXIpOwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogdmFyKC0tYWxpZ24tc2VsZik7CiAgICBhbGlnbi1zZWxmOiB2YXIoLS1hbGlnbi1zZWxmKQp9CgouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFic29sdXRlLAouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWZpeGVkIHsKICAgIHotaW5kZXg6IDEKfQoKLmVsZW1lbnRvci1pbnZpc2libGUgewogICAgdmlzaWJpbGl0eTogaGlkZGVuCn0KCi5lbGVtZW50b3ItYWxpZ24tY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bwp9CgouZWxlbWVudG9yLWFsaWduLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Cn0KCi5lbGVtZW50b3ItYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1idXR0b24gewogICAgd2lkdGg6IGF1dG8KfQoKLmVsZW1lbnRvci1hbGlnbi1sZWZ0IHsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIHdpZHRoOiBhdXRvCn0KCi5lbGVtZW50b3ItYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWN1c3RvbS1lbWJlZC1wbGF5IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkgaSB7CiAgICBmb250LXNpemU6IDEwMHB4OwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDAgNnB4IHJnYmEoMCwgMCwgMCwgLjMpCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkgc3ZnIHsKICAgIGhlaWdodDogMTAwcHg7CiAgICB3aWR0aDogMTAwcHg7CiAgICBmaWxsOiAjZmZmOwogICAgLXdlYmtpdC1maWx0ZXI6IGRyb3Atc2hhZG93KDFweCAwIDZweCByZ2JhKDAsIDAsIDAsIC4zKSk7CiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDFweCAwIDZweCByZ2JhKDAsIDAsIDAsIC4zKSkKfQoKLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtcGxheSBpLAouZWxlbWVudG9yLWN1c3RvbS1lbWJlZC1wbGF5IHN2ZyB7CiAgICBvcGFjaXR5OiAuODsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC41czsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAuNXM7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjVzCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgaSB7CiAgICBmb250LWZhbWlseTogZWljb25zCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgaTpiZWZvcmUgewogICAgY29udGVudDogIlxlOGZiIgp9CgouZWxlbWVudG9yLWN1c3RvbS1lbWJlZC1wbGF5LmVsZW1lbnRvci1wbGF5aW5nIGksCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgc3ZnIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBlaWNvbi1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZWljb24tc3BpbiAycyBsaW5lYXIgaW5maW5pdGUKfQoKLmVsZW1lbnRvci10YWcgewogICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94OwogICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgZGlzcGxheTogaW5saW5lLWZsZXgKfQoKLmVsZW1lbnRvci1rZW4tYnVybnMgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IC13ZWJraXQtdHJhbnNmb3JtOwogICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCAtd2Via2l0LXRyYW5zZm9ybTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMTBzOwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogMTBzOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMTBzOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwogICAgLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXIKfQoKLmVsZW1lbnRvci1rZW4tYnVybnMtLW91dCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4zKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykKfQoKLmVsZW1lbnRvci1rZW4tYnVybnMtLWFjdGl2ZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDIwczsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IDIwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDIwcwp9CgouZWxlbWVudG9yLWtlbi1idXJucy0tYWN0aXZlLmVsZW1lbnRvci1rZW4tYnVybnMtLW91dCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLmVsZW1lbnRvci1rZW4tYnVybnMtLWFjdGl2ZS5lbGVtZW50b3Ita2VuLWJ1cm5zLS1pbiB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4zKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykKfQoKQG1lZGlhIChtaW4td2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWNlbnRlciB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLXJpZ2h0IHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWNlbnRlciB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWNlbnRlciB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1yaWdodCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tY2VudGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0IHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1sZWZ0IHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLXJpZ2h0IHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0IHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWNlbnRlciB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1yaWdodCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCjpyb290IHsKICAgIC0tcGFnZS10aXRsZS1kaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLXBhZ2UtdGl0bGUsCmgxLmVudHJ5LXRpdGxlIHsKICAgIGRpc3BsYXk6IHZhcigtLXBhZ2UtdGl0bGUtZGlzcGxheSkKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGVpY29uLXNwaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKQogICAgfQp9CgpAa2V5ZnJhbWVzIGVpY29uLXNwaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKQogICAgfQp9CgouZWljb24tYW5pbWF0aW9uLXNwaW4gewogICAgLXdlYmtpdC1hbmltYXRpb246IGVpY29uLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBlaWNvbi1zcGluIDJzIGxpbmVhciBpbmZpbml0ZQp9CgouZWxlbWVudG9yLXNlY3Rpb24gewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3Itc2VjdGlvbiAuZWxlbWVudG9yLWNvbnRhaW5lciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci1zZWN0aW9uIC5lbGVtZW50b3ItY29udGFpbmVyIHsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgICAgIGZsZXgtd3JhcDogd3JhcAogICAgfQp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQ+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMTQwcHgKfQoKLmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zZWN0aW9uLXN0cmV0Y2hlZCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24taXRlbXMtdG9wPi5lbGVtZW50b3ItY29udGFpbmVyIHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDsKICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1pdGVtcy1taWRkbGU+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyCn0KCi5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1pdGVtcy1ib3R0b20+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZnVsbCB7CiAgICAgICAgaGVpZ2h0OiAxMDB2aAogICAgfQogICAgLmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1mdWxsPi5lbGVtZW50b3ItY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDEwMCUKICAgIH0KfQoKLmVsZW1lbnRvci1iYy1mbGV4LXdpZGdldCAuZWxlbWVudG9yLXNlY3Rpb24tY29udGVudC10b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci13aWRnZXQtd3JhcCB7CiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7CiAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydAp9CgouZWxlbWVudG9yLWJjLWZsZXgtd2lkZ2V0IC5lbGVtZW50b3Itc2VjdGlvbi1jb250ZW50LW1pZGRsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLWJjLWZsZXgtd2lkZ2V0IC5lbGVtZW50b3Itc2VjdGlvbi1jb250ZW50LWJvdHRvbT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBlbmQ7CiAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kCn0KCi5lbGVtZW50b3Itcm93IHsKICAgIHdpZHRoOiAxMDAlOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXgKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXJvdyB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXAKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtd3JhcCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJTsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0OwogICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydAp9CgouZWxlbWVudG9yOm5vdCguZWxlbWVudG9yLWJjLWZsZXgtd2lkZ2V0KSAuZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdyYXA+LmVsZW1lbnRvci1lbGVtZW50IHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdyYXAuZS1zd2lwZXItY29udGFpbmVyIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAodmFyKC0tZS1jb2x1bW4tbWFyZ2luLWxlZnQsIDBweCkgKyB2YXIoLS1lLWNvbHVtbi1tYXJnaW4tcmlnaHQsIDBweCkpKQp9CgouZWxlbWVudG9yLXdpZGdldCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci13aWRnZXQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0Om5vdCg6bGFzdC1jaGlsZCkuZWxlbWVudG9yLWFic29sdXRlLAouZWxlbWVudG9yLXdpZGdldDpub3QoOmxhc3QtY2hpbGQpLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWF1dG8sCi5lbGVtZW50b3Itd2lkZ2V0Om5vdCg6bGFzdC1jaGlsZCkuZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtaW5pdGlhbCB7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5lbGVtZW50b3ItY29sdW1uIHsKICAgIG1pbi1oZWlnaHQ6IDFweAp9CgouZWxlbWVudG9yLWNvbHVtbiwKLmVsZW1lbnRvci1jb2x1bW4td3JhcCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLWNvbHVtbi13cmFwIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC1uYXJyb3c+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiA1cHgKfQoKLmVsZW1lbnRvci1jb2x1bW4tZ2FwLWRlZmF1bHQ+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiAxMHB4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC1leHRlbmRlZD4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDE1cHgKfQoKLmVsZW1lbnRvci1jb2x1bW4tZ2FwLXdpZGU+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiAyMHB4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC13aWRlcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDMwcHgKfQoKLmVsZW1lbnRvci1pbm5lci1zZWN0aW9uIC5lbGVtZW50b3ItY29sdW1uLWdhcC1ubyAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDAKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTAiXSB7CiAgICAgICAgd2lkdGg6IDEwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIxMSJdIHsKICAgICAgICB3aWR0aDogMTEuMTExJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMiwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIxMiJdIHsKICAgICAgICB3aWR0aDogMTIuNSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTQsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTQiXSB7CiAgICAgICAgd2lkdGg6IDE0LjI4NSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTYsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTYiXSB7CiAgICAgICAgd2lkdGg6IDE2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMjAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMjAiXSB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0yNSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIyNSJdIHsKICAgICAgICB3aWR0aDogMjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTMwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjMwIl0gewogICAgICAgIHdpZHRoOiAzMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMzMsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMzMiXSB7CiAgICAgICAgd2lkdGg6IDMzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNDAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNDAiXSB7CiAgICAgICAgd2lkdGg6IDQwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC01MCwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSI1MCJdIHsKICAgICAgICB3aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTYwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjYwIl0gewogICAgICAgIHdpZHRoOiA2MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNjYsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNjYiXSB7CiAgICAgICAgd2lkdGg6IDY2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNzAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNzAiXSB7CiAgICAgICAgd2lkdGg6IDcwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC03NSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSI3NSJdIHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTgwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjgwIl0gewogICAgICAgIHdpZHRoOiA4MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtODMsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iODMiXSB7CiAgICAgICAgd2lkdGg6IDgzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtOTAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iOTAiXSB7CiAgICAgICAgd2lkdGg6IDkwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMDAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTAwIl0gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjQ3OXB4KSB7CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTAgewogICAgICAgIHdpZHRoOiAxMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMSB7CiAgICAgICAgd2lkdGg6IDExLjExMSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMiB7CiAgICAgICAgd2lkdGg6IDEyLjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTQgewogICAgICAgIHdpZHRoOiAxNC4yODUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTYgewogICAgICAgIHdpZHRoOiAxNi42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMjAgewogICAgICAgIHdpZHRoOiAyMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0yNSB7CiAgICAgICAgd2lkdGg6IDI1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTMwIHsKICAgICAgICB3aWR0aDogMzAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMzMgewogICAgICAgIHdpZHRoOiAzMy4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNDAgewogICAgICAgIHdpZHRoOiA0MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy01MCB7CiAgICAgICAgd2lkdGg6IDUwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTYwIHsKICAgICAgICB3aWR0aDogNjAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNjYgewogICAgICAgIHdpZHRoOiA2Ni42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNzAgewogICAgICAgIHdpZHRoOiA3MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy03NSB7CiAgICAgICAgd2lkdGg6IDc1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTgwIHsKICAgICAgICB3aWR0aDogODAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtODMgewogICAgICAgIHdpZHRoOiA4My4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtOTAgewogICAgICAgIHdpZHRoOiA5MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMDAgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTAgewogICAgICAgIHdpZHRoOiAxMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMSB7CiAgICAgICAgd2lkdGg6IDExLjExMSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMiB7CiAgICAgICAgd2lkdGg6IDEyLjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTQgewogICAgICAgIHdpZHRoOiAxNC4yODUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTYgewogICAgICAgIHdpZHRoOiAxNi42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMjAgewogICAgICAgIHdpZHRoOiAyMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0yNSB7CiAgICAgICAgd2lkdGg6IDI1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTMwIHsKICAgICAgICB3aWR0aDogMzAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMzMgewogICAgICAgIHdpZHRoOiAzMy4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNDAgewogICAgICAgIHdpZHRoOiA0MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS01MCB7CiAgICAgICAgd2lkdGg6IDUwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTYwIHsKICAgICAgICB3aWR0aDogNjAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNjYgewogICAgICAgIHdpZHRoOiA2Ni42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNzAgewogICAgICAgIHdpZHRoOiA3MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS03NSB7CiAgICAgICAgd2lkdGg6IDc1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTgwIHsKICAgICAgICB3aWR0aDogODAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tODMgewogICAgICAgIHdpZHRoOiA4My4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tOTAgewogICAgICAgIHdpZHRoOiA5MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMDAgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xMCB7CiAgICAgICAgd2lkdGg6IDEwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTExIHsKICAgICAgICB3aWR0aDogMTEuMTExJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTEyIHsKICAgICAgICB3aWR0aDogMTIuNSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xNCB7CiAgICAgICAgd2lkdGg6IDE0LjI4NSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xNiB7CiAgICAgICAgd2lkdGg6IDE2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0yMCB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTI1IHsKICAgICAgICB3aWR0aDogMjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtMzAgewogICAgICAgIHdpZHRoOiAzMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0zMyB7CiAgICAgICAgd2lkdGg6IDMzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC00MCB7CiAgICAgICAgd2lkdGg6IDQwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTUwIHsKICAgICAgICB3aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtNjAgewogICAgICAgIHdpZHRoOiA2MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC02NiB7CiAgICAgICAgd2lkdGg6IDY2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC03MCB7CiAgICAgICAgd2lkdGg6IDcwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTc1IHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtODAgewogICAgICAgIHdpZHRoOiA4MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC04MyB7CiAgICAgICAgd2lkdGg6IDgzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC05MCB7CiAgICAgICAgd2lkdGg6IDkwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTEwMCB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTA7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogODsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogODsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgICAgICBvcmRlcjogNwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgICAgICBvcmRlcjogNAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7CiAgICAgICAgb3JkZXI6IDEKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6MTAyNXB4KSBhbmQgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpmaXJzdC1jaGlsZCB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTE7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgICAgIG9yZGVyOiAxMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDMpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA5OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA4OwogICAgICAgIG9yZGVyOiA4CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDg7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDc7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDYpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA2OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA1OwogICAgICAgIG9yZGVyOiA1CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNykgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDU7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDQ7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDkpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAzOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAyOwogICAgICAgIG9yZGVyOiAyCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMTApIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAyOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxOwogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xcHgpIGFuZCAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTA7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEwOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA5OwogICAgICAgIG9yZGVyOiA5CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMykgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDk7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDg7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogODsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgICAgICBvcmRlcjogNwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA3OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA2OwogICAgICAgIG9yZGVyOiA2CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDY7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgICAgICBvcmRlcjogNAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAzOwogICAgICAgIG9yZGVyOiAzCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDM7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDI7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7CiAgICAgICAgb3JkZXI6IDEKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6MTAyNXB4KSBhbmQgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpmaXJzdC1jaGlsZCwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSwKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IGluaXRpYWw7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IGluaXRpYWw7CiAgICAgICAgb3JkZXI6IDAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTA7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0X2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEwOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA5OwogICAgICAgIG9yZGVyOiA5CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0X2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMykgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDk7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDg7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogODsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgICAgICBvcmRlcjogNwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldF9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA3OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA2OwogICAgICAgIG9yZGVyOiA2CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0X2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDY7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgICAgICBvcmRlcjogNAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldF9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAzOwogICAgICAgIG9yZGVyOiAzCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0X2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDM7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDI7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7CiAgICAgICAgb3JkZXI6IDEKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46Zmlyc3QtY2hpbGQgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTA7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDk7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogODsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDQpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA4OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDc7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDY7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDcpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA1OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDQ7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDotMXB4KSBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTA7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEwOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA5OwogICAgICAgIG9yZGVyOiA5CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMykgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDk7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDg7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogODsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgICAgICBvcmRlcjogNwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA3OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA2OwogICAgICAgIG9yZGVyOiA2CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDY7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgICAgICBvcmRlcjogNAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAzOwogICAgICAgIG9yZGVyOiAzCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDM7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDI7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7CiAgICAgICAgb3JkZXI6IDEKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDMpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDQpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDYpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDcpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDkpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogaW5pdGlhbDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogaW5pdGlhbDsKICAgICAgICBvcmRlcjogMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46Zmlyc3QtY2hpbGQgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGVfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTA7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDk7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGVfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogODsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDQpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA4OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlX2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDc7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDY7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGVfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDcpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA1OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlX2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDQ7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGVfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj46Zmlyc3QtY2hpbGQgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTA7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDk7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogODsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDQpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA4OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDc7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDY7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDcpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA1OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDQ7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgICAgICBvcmRlcjogMQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCnVsLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXAKfQoKdWwuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaW5saW5lLWl0ZW0gewogICAgd29yZC1icmVhazogYnJlYWstd29yZAp9CgouZWxlbWVudG9yLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtY29sdW1uLWdhcDogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKTsKICAgIGdyaWQtcm93LWdhcDogdmFyKC0tZ3JpZC1yb3ctZ2FwKQp9CgouZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgbWluLXdpZHRoOiAwCn0KCi5lbGVtZW50b3ItZ3JpZC0wIC5lbGVtZW50b3ItZ3JpZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIHdvcmQtc3BhY2luZzogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKTsKICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQp9CgouZWxlbWVudG9yLWdyaWQtMCAuZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQKfQoKLmVsZW1lbnRvci1ncmlkLTEgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTIgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTMgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTQgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTUgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTYgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTcgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTggLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDgsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTkgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMCwgMWZyKQp9CgouZWxlbWVudG9yLWdyaWQtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDExLCAxZnIpCn0KCi5lbGVtZW50b3ItZ3JpZC0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcikKfQoKQG1lZGlhIChtaW4td2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhcigtLWdyaWQtY29sdW1uLWdhcCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYygtMSAqIHZhcigtLWdyaWQtcm93LWdhcCkpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi0wIC5lbGVtZW50b3ItZ3JpZCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdyaWQtcm93LWdhcCk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZAogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi0zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tNCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTUgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi02IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tNyAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTggLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi05IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC0wIC5lbGVtZW50b3ItZ3JpZCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdyaWQtcm93LWdhcCk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZAogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC0xIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC0zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC00IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC02IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC03IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC05IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC0xMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEwLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1sYXB0b3AtMTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0X2V4dHJhLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0wIC5lbGVtZW50b3ItZ3JpZCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdyaWQtcm93LWdhcCk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZAogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0xIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS00IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS02IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS03IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS05IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0xMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEwLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0X2V4dHJhLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXRfZXh0cmEtMTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXQtMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhcigtLWdyaWQtY29sdW1uLWdhcCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYygtMSAqIHZhcigtLWdyaWQtcm93LWdhcCkpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTAgLmVsZW1lbnRvci1ncmlkIC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTMgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTUgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTYgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg2LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTcgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTggLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTkgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTAsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXQtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldC0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEyLCAxZnIpCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGVfZXh0cmEtMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhcigtLWdyaWQtY29sdW1uLWdhcCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYygtMSAqIHZhcigtLWdyaWQtcm93LWdhcCkpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTAgLmVsZW1lbnRvci1ncmlkIC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTMgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTUgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTYgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg2LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTcgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTggLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTkgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTAsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGVfZXh0cmEtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEyLCAxZnIpCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0wIC5lbGVtZW50b3ItZ3JpZCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdyaWQtcm93LWdhcCk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZAogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0xIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS00IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS02IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS03IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS05IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0xMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEwLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxMDI1cHgpIHsKICAgICNlbGVtZW50b3ItZGV2aWNlLW1vZGU6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICJkZXNrdG9wIgogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDotMXB4KSB7CiAgICAjZWxlbWVudG9yLWRldmljZS1tb2RlOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAid2lkZXNjcmVlbiIKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgI2VsZW1lbnRvci1kZXZpY2UtbW9kZTphZnRlciB7CiAgICAgICAgY29udGVudDogImxhcHRvcCI7CiAgICAgICAgY29udGVudDogInRhYmxldF9leHRyYSIKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAjZWxlbWVudG9yLWRldmljZS1tb2RlOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAidGFibGV0IgogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAjZWxlbWVudG9yLWRldmljZS1tb2RlOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAibW9iaWxlX2V4dHJhIgogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgI2VsZW1lbnRvci1kZXZpY2UtbW9kZTphZnRlciB7CiAgICAgICAgY29udGVudDogIm1vYmlsZSIKICAgIH0KfQoKLmUtY29udGFpbmVyIHsKICAgIC0tYm9yZGVyLXJhZGl1czogMDsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tZmxleC1iYXNpczogYXV0bzsKICAgIC0tZmxleC1ncm93OiAwOwogICAgLS1mbGV4LXNocmluazogMTsKICAgIC0tY29udGVudC13aWR0aDogTWluKDEwMCUsIHZhcigtLWNvbnRhaW5lci1tYXgtd2lkdGgsIDExNDBweCkpOwogICAgLS13aWR0aDogMTAwJTsKICAgIC0tbWluLWhlaWdodDogaW5pdGlhbDsKICAgIC0taGVpZ2h0OiBhdXRvOwogICAgLS10ZXh0LWFsaWduOiBpbml0aWFsOwogICAgLS1tYXJnaW4tdG9wOiAwOwogICAgLS1tYXJnaW4tcmlnaHQ6IDA7CiAgICAtLW1hcmdpbi1ib3R0b206IDA7CiAgICAtLW1hcmdpbi1sZWZ0OiAwOwogICAgLS1wYWRkaW5nLXRvcDogdmFyKC0tY29udGFpbmVyLWRlZmF1bHQtcGFkZGluZywgMHB4KTsKICAgIC0tcGFkZGluZy1yaWdodDogdmFyKC0tY29udGFpbmVyLWRlZmF1bHQtcGFkZGluZywgMHB4KTsKICAgIC0tcGFkZGluZy1ib3R0b206IHZhcigtLWNvbnRhaW5lci1kZWZhdWx0LXBhZGRpbmcsIDBweCk7CiAgICAtLXBhZGRpbmctbGVmdDogdmFyKC0tY29udGFpbmVyLWRlZmF1bHQtcGFkZGluZywgMHB4KTsKICAgIC0tcG9zaXRpb246IHJlbGF0aXZlOwogICAgLS16LWluZGV4OiByZXZlcnQ7CiAgICAtLW92ZXJmbG93OiB2aXNpYmxlOwogICAgLS10cmFuc2l0aW9uOiAwOwogICAgLS1nYXA6IHZhcigtLXdpZGdldHMtc3BhY2luZywgMjBweCk7CiAgICAtLW92ZXJsYXktbWl4LWJsZW5kLW1vZGU6IGluaXRpYWw7CiAgICAtLW92ZXJsYXktb3BhY2l0eTogMTsKICAgIC0tb3ZlcmxheS10cmFuc2l0aW9uOiAwOwogICAgcG9zaXRpb246IHZhcigtLXBvc2l0aW9uKTsKICAgIGRpc3BsYXk6IHZhcigtLWRpc3BsYXkpOwogICAgdGV4dC1hbGlnbjogdmFyKC0tdGV4dC1hbGlnbik7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHZhcigtLWZsZXgtZGlyZWN0aW9uKTsKICAgIGZsZXgtZGlyZWN0aW9uOiB2YXIoLS1mbGV4LWRpcmVjdGlvbik7CiAgICAtd2Via2l0LWJveC1mbGV4OiB2YXIoLS1mbGV4LWdyb3cpOwogICAgLW1zLWZsZXg6IHZhcigtLWZsZXgtZ3JvdykgdmFyKC0tZmxleC1zaHJpbmspIHZhcigtLWZsZXgtYmFzaXMpOwogICAgZmxleDogdmFyKC0tZmxleC1ncm93KSB2YXIoLS1mbGV4LXNocmluaykgdmFyKC0tZmxleC1iYXNpcyk7CiAgICB3aWR0aDogdmFyKC0td2lkdGgpOwogICAgbWluLXdpZHRoOiAwOwogICAgbWF4LXdpZHRoOiBNaW4oMTAwJSwgdmFyKC0td2lkdGgpKTsKICAgIG1pbi1oZWlnaHQ6IHZhcigtLW1pbi1oZWlnaHQpOwogICAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBtYXJnaW46IHZhcigtLW1hcmdpbi10b3ApIHZhcigtLW1hcmdpbi1yaWdodCkgdmFyKC0tbWFyZ2luLWJvdHRvbSkgdmFyKC0tbWFyZ2luLWxlZnQpOwogICAgcGFkZGluZzogdmFyKC0tcGFkZGluZy10b3ApIGNhbGMoKDEwMCUgLSB2YXIoLS1jb250ZW50LXdpZHRoKSkgLyAyICsgdmFyKC0tcGFkZGluZy1yaWdodCkpIHZhcigtLXBhZGRpbmctYm90dG9tKSBjYWxjKCgxMDAlIC0gdmFyKC0tY29udGVudC13aWR0aCkpIC8gMiArIHZhcigtLXBhZGRpbmctbGVmdCkpOwogICAgei1pbmRleDogdmFyKC0tei1pbmRleCk7CiAgICBvdmVyZmxvdzogdmFyKC0tb3ZlcmZsb3cpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uKTsKICAgIC1vLXRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24pOwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbikKfQoKOmlzKC5lbGVtZW50b3Itc2VjdGlvbi13cmFwLCBbZGF0YS1lbGVtZW50b3ItaWRdKT4uZS1jb250YWluZXIgewogICAgLS1tYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAtLW1hcmdpbi1sZWZ0OiBhdXRvCn0KCi5lLWNvbnRhaW5lciAuZWxlbWVudG9yLWVtcHR5LXZpZXcgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtaW4taGVpZ2h0OiB2YXIoLS1taW4taGVpZ2h0LCAxMDBweCkKfQoKLmUtY29udGFpbmVyIC5lbGVtZW50b3ItZW1wdHktdmlldyAuZWxlbWVudG9yLWZpcnN0LWFkZCB7CiAgICB3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIGluc2V0OiAxMHB4Cn0KCi5lLWNvbnRhaW5lciAuZWxlbWVudG9yLXdpZGdldC1wbGFjZWhvbGRlciB7CiAgICAtLXNpemU6IDEwcHg7CiAgICAtLW1hcmdpbi1zdGFydDogY2FsYygtMSAqIHZhcigtLXNpemUpKTsKICAgIC0tbWFyZ2luLWVuZDogY2FsYygtMiAqIHZhcigtLXNpemUpKTsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgZmxleC1zaHJpbms6IDA7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIHotaW5kZXg6IDE7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgouZS1jb250YWluZXIuZS1jb250YWluZXItLXJvdz4uZWxlbWVudG9yLXdpZGdldC1wbGFjZWhvbGRlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiA5OTk5OwogICAgd2lkdGg6IHZhcigtLXNpemUpOwogICAgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IHZhcigtLW1hcmdpbi1zdGFydCk7CiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1tYXJnaW4tc3RhcnQpOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWluLWhlaWdodDogMTAwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGRuZC1wbGFjZWhvbGRlci13aWRnZXQtdmVydGljYWw7CiAgICBhbmltYXRpb24tbmFtZTogZG5kLXBsYWNlaG9sZGVyLXdpZGdldC12ZXJ0aWNhbDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGgKfQoKLmUtY29udGFpbmVyLmUtY29udGFpbmVyLS1yb3dbZGF0YS1uZXN0aW5nLWxldmVsXTpub3QoW2RhdGEtbmVzdGluZy1sZXZlbD0iMCJdKT4uZWxlbWVudG9yLXdpZGdldC1wbGFjZWhvbGRlciB7CiAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDA7CiAgICBtYXJnaW4taW5saW5lLWVuZDogMDsKICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiBjYWxjKHZhcigtLW1hcmdpbi1zdGFydCkgKyB2YXIoLS1tYXJnaW4tZW5kKSk7CiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBjYWxjKHZhcigtLW1hcmdpbi1zdGFydCkgKyB2YXIoLS1tYXJnaW4tZW5kKSkKfQoKLmUtY29udGFpbmVyLmUtY29udGFpbmVyLS1yb3dbZGF0YS1uZXN0aW5nLWxldmVsXTpub3QoW2RhdGEtbmVzdGluZy1sZXZlbD0iMCJdKT46bm90KC5lbGVtZW50b3ItZWxlbWVudCkrLmVsZW1lbnRvci13aWRnZXQtcGxhY2Vob2xkZXIgewogICAgLXdlYmtpdC1tYXJnaW4tZW5kOiB2YXIoLS1tYXJnaW4tZW5kKTsKICAgIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1tYXJnaW4tZW5kKTsKICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiB2YXIoLS1tYXJnaW4tc3RhcnQpOwogICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tbWFyZ2luLXN0YXJ0KQp9CgouZS1jb250YWluZXIuZS1jb250YWluZXItLWNvbHVtbj4uZWxlbWVudG9yLXdpZGdldC1wbGFjZWhvbGRlciB7CiAgICBoZWlnaHQ6IHZhcigtLXNpemUpOwogICAgLXdlYmtpdC1tYXJnaW4tYmVmb3JlOiB2YXIoLS1tYXJnaW4tc3RhcnQpOwogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1tYXJnaW4tc3RhcnQpOwogICAgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6IHZhcigtLW1hcmdpbi1lbmQpOwogICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tbWFyZ2luLWVuZCk7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBkbmQtcGxhY2Vob2xkZXItd2lkZ2V0LWhvcml6b250YWw7CiAgICBhbmltYXRpb24tbmFtZTogZG5kLXBsYWNlaG9sZGVyLXdpZGdldC1ob3Jpem9udGFsCn0KCi5lLWNvbnRhaW5lci5lLWNvbnRhaW5lci0tY29sdW1uPi5lbGVtZW50b3Itd2lkZ2V0LXBsYWNlaG9sZGVyOm50aC1sYXN0LWNoaWxkKDIpIHsKICAgIC13ZWJraXQtbWFyZ2luLWJlZm9yZTogY2FsYygyICogdmFyKC0tbWFyZ2luLXN0YXJ0KSk7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IGNhbGMoMiAqIHZhcigtLW1hcmdpbi1zdGFydCkpOwogICAgLS1tYXJnaW4tZW5kOiAwCn0KCi5lLWNvbnRhaW5lciAuZWxlbWVudG9yLXNvcnRhYmxlLWhlbHBlciB7CiAgICBoZWlnaHQ6IDg0cHg7CiAgICB3aWR0aDogMTI1cHg7CiAgICB6LWluZGV4OiAtMQp9CgouZS1jb250YWluZXIgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGdldCB7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5lLWNvbnRhaW5lcjpiZWZvcmUgewogICAgY29udGVudDogdmFyKC0tYmFja2dyb3VuZC1vdmVybGF5KTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgbGVmdDogMDsKICAgIHRvcDogMDsKICAgIG1peC1ibGVuZC1tb2RlOiB2YXIoLS1vdmVybGF5LW1peC1ibGVuZC1tb2RlKTsKICAgIG9wYWNpdHk6IHZhcigtLW92ZXJsYXktb3BhY2l0eSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IHZhcigtLW92ZXJsYXktdHJhbnNpdGlvbik7CiAgICAtby10cmFuc2l0aW9uOiB2YXIoLS1vdmVybGF5LXRyYW5zaXRpb24pOwogICAgdHJhbnNpdGlvbjogdmFyKC0tb3ZlcmxheS10cmFuc2l0aW9uKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpCn0KCi5lLWNvbnRhaW5lciAuZWxlbWVudG9yLXdpZGdldCB7CiAgICBtaW4td2lkdGg6IDAKfQoKLmUtY29udGFpbmVyIC5lbGVtZW50b3Itd2lkZ2V0LWdvb2dsZV9tYXBzLAouZS1jb250YWluZXIgLmVsZW1lbnRvci13aWRnZXQtdmlkZW8gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICBmbGV4LWJhc2lzOiAxMDAlCn0KCi5lLWNvbnRhaW5lciAuZWxlbWVudG9yLXdpZGdldC5lLXdpZGdldC1zd2lwZXIgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICBmbGV4LWJhc2lzOiAxMDAlCn0KCi5lLWNvbnRhaW5lcj4uZS1jb250YWluZXI+LmVsZW1lbnRvci1lbGVtZW50LW92ZXJsYXkgLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1zZXR0aW5nLAouZWxlbWVudG9yLXdpZGdldCAuZS1jb250YWluZXI+LmVsZW1lbnRvci1lbGVtZW50LW92ZXJsYXkgLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1zZXR0aW5nIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTYwNjgKfQoKLmUtY29udGFpbmVyPi5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmc6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0IC5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzQ5NTE1Nwp9CgouZS1jb250YWluZXI+LmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5IC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZy5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtYWRkLAouZS1jb250YWluZXI+LmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5IC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZy5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtZWRpdCsuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXJlbW92ZSwKLmUtY29udGFpbmVyPi5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmc6Zmlyc3QtY2hpbGQ6YmVmb3JlLAouZS1jb250YWluZXI+LmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5IC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZzpsYXN0LWNoaWxkOmFmdGVyLAouZWxlbWVudG9yLXdpZGdldCAuZS1jb250YWluZXI+LmVsZW1lbnRvci1lbGVtZW50LW92ZXJsYXkgLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1zZXR0aW5nLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1hZGQsCi5lbGVtZW50b3Itd2lkZ2V0IC5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmcuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LWVkaXQrLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0IC5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmc6Zmlyc3QtY2hpbGQ6YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldCAuZS1jb250YWluZXI+LmVsZW1lbnRvci1lbGVtZW50LW92ZXJsYXkgLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1zZXR0aW5nOmxhc3QtY2hpbGQ6YWZ0ZXIgewogICAgZGlzcGxheTogbm9uZQp9CgouZS1jb250YWluZXI+LmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5IC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZzpub3QoLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1lZGl0KSwKLmVsZW1lbnRvci13aWRnZXQgLmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5IC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZzpub3QoLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1lZGl0KSB7CiAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogLTI1cHg7CiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAtMjVweDsKICAgIHotaW5kZXg6IC0xOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzIGFsbDsKICAgIHRyYW5zaXRpb246IGFsbCAuM3M7CiAgICB3aWxsLWNoYW5nZTogbWFyZ2luLWlubGluZS1zdGFydAp9CgouZS1jb250YWluZXI+LmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5Pi5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZ3M6aG92ZXI+OmlzKC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtZHVwbGljYXRlLCAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXJlbW92ZSksCi5lbGVtZW50b3Itd2lkZ2V0IC5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheT4uZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmdzOmhvdmVyPjppcyguZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LWR1cGxpY2F0ZSwgLmVsZW1lbnRvci1lZGl0b3ItZWxlbWVudC1yZW1vdmUpIHsKICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiAwOwogICAgbWFyZ2luLWlubGluZS1zdGFydDogMAp9CgouZS1jb250YWluZXI+LmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5IC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZ3MsCi5lbGVtZW50b3Itd2lkZ2V0IC5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmdzIHsKICAgIGluc2V0OiBhdXRvOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAtbXMtdHJhbnNmb3JtOiBub25lOwogICAgdHJhbnNmb3JtOiBub25lOwogICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwOwogICAgdG9wOiAwOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGJvcmRlci1lbmQtZW5kLXJhZGl1czogM3B4OwogICAgaGVpZ2h0OiBhdXRvOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjA2OAp9CgouZS1jb250YWluZXI+LmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5IC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZ3M6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0IC5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmdzOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0OTUxNTcKfQoKLmUtY29udGFpbmVyPi5lLWNvbnRhaW5lcj4uZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSAuZWxlbWVudG9yLWVkaXRvci1lbGVtZW50LXNldHRpbmdzIGkuZWljb24taGFuZGxlOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQgLmUtY29udGFpbmVyPi5lbGVtZW50b3ItZWxlbWVudC1vdmVybGF5IC5lbGVtZW50b3ItZWRpdG9yLWVsZW1lbnQtc2V0dGluZ3MgaS5laWNvbi1oYW5kbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTliNCI7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDJweAp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmUtY29udGFpbmVyIHsKICAgICAgICAtLXdpZHRoOiAxMDAlOwogICAgICAgIC0tZmxleC13cmFwOiB3cmFwCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBkbmQtcGxhY2Vob2xkZXItd2lkZ2V0LXZlcnRpY2FsIHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgNTAlOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgNTAlOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwJSkgc2NhbGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MCUpIHNjYWxlWCgwKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MCUpIHNjYWxlWCgxKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAlKSBzY2FsZVgoMSk7CiAgICAgICAgb3BhY2l0eTogLjkKICAgIH0KfQoKQGtleWZyYW1lcyBkbmQtcGxhY2Vob2xkZXItd2lkZ2V0LXZlcnRpY2FsIHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgNTAlOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgNTAlOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwJSkgc2NhbGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MCUpIHNjYWxlWCgwKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MCUpIHNjYWxlWCgxKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAlKSBzY2FsZVgoMSk7CiAgICAgICAgb3BhY2l0eTogLjkKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGRuZC1wbGFjZWhvbGRlci13aWRnZXQtaG9yaXpvbnRhbCB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVZKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDApOwogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSAwOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7CiAgICAgICAgb3BhY2l0eTogLjkKICAgIH0KfQoKQGtleWZyYW1lcyBkbmQtcGxhY2Vob2xkZXItd2lkZ2V0LWhvcml6b250YWwgewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDA7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgwKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVZKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpOwogICAgICAgIG9wYWNpdHk6IC45CiAgICB9Cn0KCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXAKfQoKLmVsZW1lbnRvci1mb3JtLWZpZWxkcy13cmFwcGVyLmVsZW1lbnRvci1sYWJlbHMtYWJvdmUgLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwLAouZWxlbWVudG9yLWZvcm0tZmllbGRzLXdyYXBwZXIuZWxlbWVudG9yLWxhYmVscy1hYm92ZSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwPi5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXIsCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWFib3ZlIC5lbGVtZW50b3ItZmllbGQtZ3JvdXA+aW5wdXQsCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWFib3ZlIC5lbGVtZW50b3ItZmllbGQtZ3JvdXA+dGV4dGFyZWEgewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICBmbGV4LWJhc2lzOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWlubGluZT4uZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXIsCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWlubGluZT4uZWxlbWVudG9yLWZpZWxkLWdyb3VwPmlucHV0IHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMQp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwIHsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLWZpZWxkLXRleHR1YWwgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjODE4YTkxOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogIzM3M2EzYzsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDEKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLWZpZWxkLXRleHR1YWw6Zm9jdXMgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAuMSkgaW5zZXQ7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAuMSk7CiAgICBvdXRsaW5lOiAwCn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3ItZmllbGQtdGV4dHVhbDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsOi1tb3otcGxhY2Vob2xkZXIsCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3ItZmllbGQtdGV4dHVhbDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBvcGFjaXR5OiAuNgp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3ItZmllbGQtdGV4dHVhbDo6cGxhY2Vob2xkZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1zZWxlY3Qtd3JhcHBlciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1zZWxlY3Qtd3JhcHBlciBzZWxlY3QgewogICAgYXBwZWFyYW5jZTogbm9uZTsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgIGZvbnQtc3R5bGU6IGluaGVyaXQ7CiAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdDsKICAgIGxldHRlci1zcGFjaW5nOiBpbmhlcml0OwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgIGZsZXgtYmFzaXM6IDEwMCU7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Cn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1zZWxlY3Qtd3JhcHBlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlOTJhIjsKICAgIGZvbnQtZmFtaWx5OiBlaWNvbnM7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHJpZ2h0OiAxMHB4OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB0ZXh0LXNoYWRvdzogMCAwIDNweCByZ2JhKDAsIDAsIDAsIC4zKQp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwLmVsZW1lbnRvci1maWVsZC10eXBlLXNlbGVjdC1tdWx0aXBsZSAuZWxlbWVudG9yLXNlbGVjdC13cmFwcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiIgp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcAp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwLmVsZW1lbnRvci1zdWJncm91cC1pbmxpbmUgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gewogICAgcGFkZGluZy1yaWdodDogMTBweAp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwOm5vdCguZWxlbWVudG9yLXN1Ymdyb3VwLWlubGluZSkgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICBmbGV4LWJhc2lzOiAxMDAlCn0KCi5lbGVtZW50b3ItZmllbGQtdHlwZS1hY2NlcHRhbmNlIC5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gaW5wdXQsCi5lbGVtZW50b3ItZmllbGQtdHlwZS1hY2NlcHRhbmNlIC5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gbGFiZWwsCi5lbGVtZW50b3ItZmllbGQtdHlwZS1jaGVja2JveCAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGlucHV0LAouZWxlbWVudG9yLWZpZWxkLXR5cGUtY2hlY2tib3ggLmVsZW1lbnRvci1maWVsZC1zdWJncm91cCAuZWxlbWVudG9yLWZpZWxkLW9wdGlvbiBsYWJlbCwKLmVsZW1lbnRvci1maWVsZC10eXBlLXJhZGlvIC5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gaW5wdXQsCi5lbGVtZW50b3ItZmllbGQtdHlwZS1yYWRpbyAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZQp9CgouZWxlbWVudG9yLWZpZWxkLWxhYmVsIHsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgouZWxlbWVudG9yLW1hcmstcmVxdWlyZWQgLmVsZW1lbnRvci1maWVsZC1sYWJlbDphZnRlciB7CiAgICBjb250ZW50OiAiKiI7CiAgICBjb2xvcjogcmVkOwogICAgcGFkZGluZy1sZWZ0OiAuMmVtCn0KCi5lbGVtZW50b3ItZmllbGQtdGV4dHVhbCB7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgZm9udC1zaXplOiAxNXB4OwogICAgbWluLWhlaWdodDogNDBweDsKICAgIHBhZGRpbmc6IDVweCAxNHB4OwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCi5lbGVtZW50b3ItZmllbGQtdGV4dHVhbC5lbGVtZW50b3Itc2l6ZS14cyB7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBtaW4taGVpZ2h0OiAzM3B4OwogICAgcGFkZGluZzogNHB4IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiAycHgKfQoKLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsLmVsZW1lbnRvci1zaXplLW1kIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIG1pbi1oZWlnaHQ6IDQ3cHg7CiAgICBwYWRkaW5nOiA2cHggMTZweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouZWxlbWVudG9yLWZpZWxkLXRleHR1YWwuZWxlbWVudG9yLXNpemUtbGcgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWluLWhlaWdodDogNTlweDsKICAgIHBhZGRpbmc6IDdweCAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogNXB4Cn0KCi5lbGVtZW50b3ItZmllbGQtdGV4dHVhbC5lbGVtZW50b3Itc2l6ZS14bCB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBtaW4taGVpZ2h0OiA3MnB4OwogICAgcGFkZGluZzogOHB4IDI0cHg7CiAgICBib3JkZXItcmFkaXVzOiA2cHgKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tc3RyZXRjaCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICAgIGZsZXgtYmFzaXM6IDEwMCUKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tc3RyZXRjaCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiA1MCU7CiAgICBmbGV4LWJhc2lzOiA1MCU7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDEKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tc3RyZXRjaCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICBmbGV4LWJhc2lzOiAxMDAlCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdGFydCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnMsCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWVuZCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1lbmQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24sCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0YXJ0IC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBpbml0aWFsOwogICAgZmxleC1iYXNpczogYXV0bwp9CgouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgLXdlYmtpdC1ib3gtZmxleDogaW5pdGlhbDsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiBpbml0aWFsOwogICAgZmxleC1ncm93OiAwCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiwKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBpbml0aWFsOwogICAgZmxleC1iYXNpczogYXV0bwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0cmV0Y2ggLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiA1MCU7CiAgICAgICAgZmxleC1iYXNpczogNTAlOwogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgZmxleC1ncm93OiAxCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RyZXRjaCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmUtZm9ybV9fYnV0dG9ucywKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnMsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RhcnQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnMsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiwKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1lbmQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24sCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RhcnQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBpbml0aWFsOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyIHsKICAgICAgICAtd2Via2l0LWJveC1mbGV4OiBpbml0aWFsOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiBpbml0aWFsOwogICAgICAgIGZsZXgtZ3JvdzogMAogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24sCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiwKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGluaXRpYWw7CiAgICAgICAgZmxleC1iYXNpczogYXV0bwogICAgfQp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tc3RyZXRjaCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICAgICAgZmxleC1iYXNpczogMTAwJQogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0cmV0Y2ggLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDUwJTsKICAgICAgICBmbGV4LWJhc2lzOiA1MCU7CiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgICAgICBmbGV4LWdyb3c6IDEKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDEwMCU7CiAgICAgICAgZmxleC1iYXNpczogMTAwJQogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9ucywKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdGFydCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9ucywKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1lbmQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiwKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdGFydCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGluaXRpYWw7CiAgICAgICAgZmxleC1iYXNpczogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IGluaXRpYWw7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IGluaXRpYWw7CiAgICAgICAgZmxleC1ncm93OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiwKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uIHsKICAgICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogaW5pdGlhbDsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9Cn0KCi5lbGVtZW50b3ItZXJyb3IgLmVsZW1lbnRvci1maWVsZCB7CiAgICBib3JkZXItY29sb3I6ICNkOTUzNGYKfQoKLmVsZW1lbnRvci1lcnJvciAuaGVscC1pbmxpbmUgewogICAgY29sb3I6ICNkOTUzNGY7CiAgICBmb250LXNpemU6IC45ZW0KfQoKLmVsZW1lbnRvci1tZXNzYWdlIHsKICAgIG1hcmdpbjogMTBweCAwOwogICAgZm9udC1zaXplOiAxZW07CiAgICBsaW5lLWhlaWdodDogMQp9CgouZWxlbWVudG9yLW1lc3NhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTkwZSI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LWZhbWlseTogZWljb25zOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBtYXJnaW4tcmlnaHQ6IDVweAp9CgouZWxlbWVudG9yLW1lc3NhZ2UuZWxlbWVudG9yLW1lc3NhZ2UtZGFuZ2VyIHsKICAgIGNvbG9yOiAjZDk1MzRmCn0KCi5lbGVtZW50b3ItbWVzc2FnZS5lbGVtZW50b3ItbWVzc2FnZS1kYW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTg3ZiIKfQoKLmVsZW1lbnRvci1tZXNzYWdlLmZvcm0tbWVzc2FnZS1zdWNjZXNzIHsKICAgIGNvbG9yOiAjNWNiODVjCn0KCi5lbGVtZW50b3ItZm9ybSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBwYWRkaW5nLXRvcDogMDsKICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgYm9yZGVyOiBub25lCn0KCi5lbGVtZW50b3ItZm9ybSAuZWxlbWVudG9yLWJ1dHRvbj5zcGFuIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXhzIHsKICAgIG1pbi1oZWlnaHQ6IDMzcHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXNtIHsKICAgIG1pbi1oZWlnaHQ6IDQwcHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLW1kIHsKICAgIG1pbi1oZWlnaHQ6IDQ3cHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLWxnIHsKICAgIG1pbi1oZWlnaHQ6IDU5cHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXhsIHsKICAgIG1pbi1oZWlnaHQ6IDcycHgKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQgLjNzLCBib3JkZXIgLjNzLCBib3JkZXItcmFkaXVzIC4zcywgLXdlYmtpdC1ib3gtc2hhZG93IC4zczsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgLjNzLCBib3JkZXIgLjNzLCBib3JkZXItcmFkaXVzIC4zcywgLXdlYmtpdC1ib3gtc2hhZG93IC4zczsKICAgIC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQgLjNzLCBib3JkZXIgLjNzLCBib3JkZXItcmFkaXVzIC4zcywgYm94LXNoYWRvdyAuM3M7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4zcywgYm9yZGVyIC4zcywgYm9yZGVyLXJhZGl1cyAuM3MsIGJveC1zaGFkb3cgLjNzOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuM3MsIGJvcmRlciAuM3MsIGJvcmRlci1yYWRpdXMgLjNzLCBib3gtc2hhZG93IC4zcywgLXdlYmtpdC1ib3gtc2hhZG93IC4zcwp9CgouZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGJhY2tncm91bmQtY29sb3I6ICM4MThhOTE7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZpbGw6ICNmZmY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAuM3M7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgLjNzOwogICAgdHJhbnNpdGlvbjogYWxsIC4zcwp9CgouZWxlbWVudG9yLWJ1dHRvbjpmb2N1cywKLmVsZW1lbnRvci1idXR0b246aG92ZXIsCi5lbGVtZW50b3ItYnV0dG9uOnZpc2l0ZWQgewogICAgY29sb3I6ICNmZmYKfQoKLmVsZW1lbnRvci1idXR0b24tY29udGVudC13cmFwcGVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci1idXR0b24taWNvbiB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAwOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDA7CiAgICBmbGV4LWdyb3c6IDA7CiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA2OwogICAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgICBvcmRlcjogNQp9CgouZWxlbWVudG9yLWJ1dHRvbi1pY29uIHN2ZyB7CiAgICB3aWR0aDogMWVtOwogICAgaGVpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3ItYnV0dG9uLWljb24gLmUtZm9udC1pY29uLXN2ZyB7CiAgICBoZWlnaHQ6IDFlbQp9CgouZWxlbWVudG9yLWJ1dHRvbi10ZXh0IHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMTsKICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExOwogICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgb3JkZXI6IDEwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXhzIHsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDJweAp9CgouZWxlbWVudG9yLWJ1dHRvbi5lbGVtZW50b3Itc2l6ZS1tZCB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBwYWRkaW5nOiAxNXB4IDMwcHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmVsZW1lbnRvci1idXR0b24uZWxlbWVudG9yLXNpemUtbGcgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgcGFkZGluZzogMjBweCA0MHB4OwogICAgYm9yZGVyLXJhZGl1czogNXB4Cn0KCi5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXhsIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIHBhZGRpbmc6IDI1cHggNTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouZWxlbWVudG9yLWJ1dHRvbiAuZWxlbWVudG9yLWFsaWduLWljb24tcmlnaHQgewogICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDE2OwogICAgLW1zLWZsZXgtb3JkZXI6IDE1OwogICAgb3JkZXI6IDE1Cn0KCi5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjsKICAgIC1tcy1mbGV4LW9yZGVyOiA1OwogICAgb3JkZXI6IDUKfQoKLmVsZW1lbnRvci1idXR0b24gc3BhbiB7CiAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1idXR0b24taW5mbyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3MgLmVsZW1lbnRvci1idXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWJ1dHRvbi13YXJuaW5nIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGUKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1idXR0b24tZGFuZ2VyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGYKfQoKLmVsZW1lbnRvci13aWRnZXQtYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uLWluZm8gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZQp9CgouZWxlbWVudG9yLXdpZGdldC1idXR0b24gLmVsZW1lbnRvci1idXR0b24gLmVsZW1lbnRvci1idXR0b24tc3VjY2VzcyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbi13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGUKfQoKLmVsZW1lbnRvci13aWRnZXQtYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmCn0KCi5lbGVtZW50b3ItdGFiLXRpdGxlIGEgewogICAgY29sb3I6IGluaGVyaXQKfQoKLmVsZW1lbnRvci12aWV3LXN0YWNrZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIHBhZGRpbmc6IC41ZW07CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODE4YTkxOwogICAgY29sb3I6ICNmZmY7CiAgICBmaWxsOiAjZmZmCn0KCi5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIHBhZGRpbmc6IC41ZW07CiAgICBjb2xvcjogIzgxOGE5MTsKICAgIGJvcmRlcjogM3B4IHNvbGlkICM4MThhOTE7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAuM3M7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgLjNzOwogICAgdHJhbnNpdGlvbjogYWxsIC4zczsKICAgIGNvbG9yOiAjODE4YTkxOwogICAgZm9udC1zaXplOiA1MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5lbGVtZW50b3ItaWNvbjpob3ZlciB7CiAgICBjb2xvcjogIzgxOGE5MQp9CgouZWxlbWVudG9yLWljb24gaSwKLmVsZW1lbnRvci1pY29uIHN2ZyB7CiAgICB3aWR0aDogMWVtOwogICAgaGVpZ2h0OiAxZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLWljb24gaTpiZWZvcmUsCi5lbGVtZW50b3ItaWNvbiBzdmc6YmVmb3JlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKQp9CgouZWxlbWVudG9yLWljb24gaS5mYWQgewogICAgd2lkdGg6IGF1dG8KfQoKLmVsZW1lbnRvci1zaGFwZS1jaXJjbGUgLmVsZW1lbnRvci1pY29uIHsKICAgIGJvcmRlci1yYWRpdXM6IDUwJQp9CgouZS10cmFuc2Zvcm0gLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSh2YXIoLS1lLXRyYW5zZm9ybS1wZXJzcGVjdGl2ZSwgMCkpIHJvdGF0ZSh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVaLCAwKSkgcm90YXRlWCh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVYLCAwKSkgcm90YXRlWSh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVZLCAwKSkgdHJhbnNsYXRlKHZhcigtLWUtdHJhbnNmb3JtLXRyYW5zbGF0ZSwgMCkpIHRyYW5zbGF0ZVgodmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNsYXRlWCwgMCkpIHRyYW5zbGF0ZVkodmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNsYXRlWSwgMCkpIHNjYWxlWChjYWxjKHZhcigtLWUtdHJhbnNmb3JtLWZsaXBYLCAxKSAqIHZhcigtLWUtdHJhbnNmb3JtLXNjYWxlWCwgdmFyKC0tZS10cmFuc2Zvcm0tc2NhbGUsIDEpKSkpIHNjYWxlWShjYWxjKHZhcigtLWUtdHJhbnNmb3JtLWZsaXBZLCAxKSAqIHZhcigtLWUtdHJhbnNmb3JtLXNjYWxlWSwgdmFyKC0tZS10cmFuc2Zvcm0tc2NhbGUsIDEpKSkpIHNrZXdYKHZhcigtLWUtdHJhbnNmb3JtLXNrZXdYLCAwKSkgc2tld1kodmFyKC0tZS10cmFuc2Zvcm0tc2tld1ksIDApKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUodmFyKC0tZS10cmFuc2Zvcm0tcGVyc3BlY3RpdmUsIDApKSByb3RhdGUodmFyKC0tZS10cmFuc2Zvcm0tcm90YXRlWiwgMCkpIHJvdGF0ZVgodmFyKC0tZS10cmFuc2Zvcm0tcm90YXRlWCwgMCkpIHJvdGF0ZVkodmFyKC0tZS10cmFuc2Zvcm0tcm90YXRlWSwgMCkpIHRyYW5zbGF0ZSh2YXIoLS1lLXRyYW5zZm9ybS10cmFuc2xhdGUsIDApKSB0cmFuc2xhdGVYKHZhcigtLWUtdHJhbnNmb3JtLXRyYW5zbGF0ZVgsIDApKSB0cmFuc2xhdGVZKHZhcigtLWUtdHJhbnNmb3JtLXRyYW5zbGF0ZVksIDApKSBzY2FsZVgoY2FsYyh2YXIoLS1lLXRyYW5zZm9ybS1mbGlwWCwgMSkgKiB2YXIoLS1lLXRyYW5zZm9ybS1zY2FsZVgsIHZhcigtLWUtdHJhbnNmb3JtLXNjYWxlLCAxKSkpKSBzY2FsZVkoY2FsYyh2YXIoLS1lLXRyYW5zZm9ybS1mbGlwWSwgMSkgKiB2YXIoLS1lLXRyYW5zZm9ybS1zY2FsZVksIHZhcigtLWUtdHJhbnNmb3JtLXNjYWxlLCAxKSkpKSBza2V3WCh2YXIoLS1lLXRyYW5zZm9ybS1za2V3WCwgMCkpIHNrZXdZKHZhcigtLWUtdHJhbnNmb3JtLXNrZXdZLCAwKSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHZhcigtLWUtdHJhbnNmb3JtLW9yaWdpbi15KSB2YXIoLS1lLXRyYW5zZm9ybS1vcmlnaW4teCk7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogdmFyKC0tZS10cmFuc2Zvcm0tb3JpZ2luLXkpIHZhcigtLWUtdHJhbnNmb3JtLW9yaWdpbi14KTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHZhcigtLWUtdHJhbnNmb3JtLW9yaWdpbi15KSB2YXIoLS1lLXRyYW5zZm9ybS1vcmlnaW4teCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIHZhcigtLWUtdHJhbnNmb3JtLXRyYW5zaXRpb24tZHVyYXRpb24sIC40cyk7CiAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1lLXRyYW5zZm9ybS10cmFuc2l0aW9uLWR1cmF0aW9uLCAuNHMpOwogICAgLW8tdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWUtdHJhbnNmb3JtLXRyYW5zaXRpb24tZHVyYXRpb24sIC40cyk7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjRzKTsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1lLXRyYW5zZm9ybS10cmFuc2l0aW9uLWR1cmF0aW9uLCAuNHMpLCAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1lLXRyYW5zZm9ybS10cmFuc2l0aW9uLWR1cmF0aW9uLCAuNHMpCn0KCi5zd2lwZXItY29udGFpbmVyIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHotaW5kZXg6IDEKfQoKLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1zbGlkZSBmaWd1cmUgewogICAgbGluZS1oZWlnaHQ6IDAKfQoKLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1saWdodGJveC1jb250ZW50LXNvdXJjZSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5zd2lwZXItY29udGFpbmVyLW5vLWZsZXhib3ggLnN3aXBlci1zbGlkZSB7CiAgICBmbG9hdDogbGVmdAp9Cgouc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXIgewogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uCn0KCi5zd2lwZXItd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHotaW5kZXg6IDE7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm07CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybTsKICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgYm94LXNpemluZzogY29udGVudC1ib3gKfQoKLnN3aXBlci1jb250YWluZXItYW5kcm9pZCAuc3dpcGVyLXNsaWRlLAouc3dpcGVyLXdyYXBwZXIgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkKfQoKLnN3aXBlci1jb250YWluZXItbXVsdGlyb3c+LnN3aXBlci13cmFwcGVyIHsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXAKfQoKLnN3aXBlci1jb250YWluZXItZnJlZS1tb2RlPi5zd2lwZXItd3JhcHBlciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIC1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIG1hcmdpbjogMCBhdXRvCn0KCi5zd2lwZXItc2xpZGUgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7CiAgICBmbGV4LXNocmluazogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5zd2lwZXItY29udGFpbmVyLWF1dG9oZWlnaHQsCi5zd2lwZXItY29udGFpbmVyLWF1dG9oZWlnaHQgLnN3aXBlci1zbGlkZSB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLnN3aXBlci1jb250YWluZXItYXV0b2hlaWdodCAuc3dpcGVyLXdyYXBwZXIgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OwogICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGhlaWdodCwgLXdlYmtpdC10cmFuc2Zvcm07CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBoZWlnaHQsIC13ZWJraXQtdHJhbnNmb3JtOwogICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBoZWlnaHQ7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIGhlaWdodDsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgaGVpZ2h0LCAtd2Via2l0LXRyYW5zZm9ybQp9Cgouc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLW5vdGlmaWNhdGlvbiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBvcGFjaXR5OiAwOwogICAgei1pbmRleDogLTEwMDAKfQoKLnN3aXBlci13cDgtaG9yaXpvbnRhbCB7CiAgICAtbXMtdG91Y2gtYWN0aW9uOiBwYW4teTsKICAgIHRvdWNoLWFjdGlvbjogcGFuLXkKfQoKLnN3aXBlci13cDgtdmVydGljYWwgewogICAgLW1zLXRvdWNoLWFjdGlvbjogcGFuLXg7CiAgICB0b3VjaC1hY3Rpb246IHBhbi14Cn0KCi5zd2lwZXItYnV0dG9uLW5leHQsCi5zd2lwZXItYnV0dG9uLXByZXYgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICB3aWR0aDogMjdweDsKICAgIGhlaWdodDogNDRweDsKICAgIG1hcmdpbi10b3A6IC0yMnB4OwogICAgei1pbmRleDogMTA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDI3cHggNDRweDsKICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUKfQoKLnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWRpc2FibGVkLAouc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24tZGlzYWJsZWQgewogICAgb3BhY2l0eTogLjM1OwogICAgY3Vyc29yOiBhdXRvOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLnN3aXBlci1idXR0b24tcHJldiwKLnN3aXBlci1jb250YWluZXItcnRsIC5zd2lwZXItYnV0dG9uLW5leHQgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjcgNDQnJTNFJTNDcGF0aCBkPSdNMCAyMkwyMiAwbDIuMSAyLjFMNC4yIDIybDE5LjkgMTkuOUwyMiA0NCAwIDIyeicgZmlsbD0nJTIzMDA3YWZmJy8lM0UlM0Mvc3ZnJTNFIik7CiAgICBsZWZ0OiAxMHB4OwogICAgcmlnaHQ6IGF1dG8KfQoKLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWJsYWNrLAouc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWJsYWNrIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI3IDQ0JyUzRSUzQ3BhdGggZD0nTTAgMjJMMjIgMGwyLjEgMi4xTDQuMiAyMmwxOS45IDE5LjlMMjIgNDQgMCAyMnonLyUzRSUzQy9zdmclM0UiKQp9Cgouc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24td2hpdGUsCi5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24td2hpdGUgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjcgNDQnJTNFJTNDcGF0aCBkPSdNMCAyMkwyMiAwbDIuMSAyLjFMNC4yIDIybDE5LjkgMTkuOUwyMiA0NCAwIDIyeicgZmlsbD0nJTIzZmZmJy8lM0UlM0Mvc3ZnJTNFIikKfQoKLnN3aXBlci1idXR0b24tbmV4dCwKLnN3aXBlci1jb250YWluZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXYgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjcgNDQnJTNFJTNDcGF0aCBkPSdNMjcgMjJMNSA0NGwtMi4xLTIuMUwyMi44IDIyIDIuOSAyLjEgNSAwbDIyIDIyeicgZmlsbD0nJTIzMDA3YWZmJy8lM0UlM0Mvc3ZnJTNFIik7CiAgICByaWdodDogMTBweDsKICAgIGxlZnQ6IGF1dG8KfQoKLnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWJsYWNrLAouc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWJsYWNrIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI3IDQ0JyUzRSUzQ3BhdGggZD0nTTI3IDIyTDUgNDRsLTIuMS0yLjFMMjIuOCAyMiAyLjkgMi4xIDUgMGwyMiAyMnonLyUzRSUzQy9zdmclM0UiKQp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24td2hpdGUsCi5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24td2hpdGUgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjcgNDQnJTNFJTNDcGF0aCBkPSdNMjcgMjJMNSA0NGwtMi4xLTIuMUwyMi44IDIyIDIuOSAyLjEgNSAwbDIyIDIyeicgZmlsbD0nJTIzZmZmJy8lM0UlM0Mvc3ZnJTNFIikKfQoKLnN3aXBlci1wYWdpbmF0aW9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbjogLjNzOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICB6LWluZGV4OiAxMAp9Cgouc3dpcGVyLXBhZ2luYXRpb24uc3dpcGVyLXBhZ2luYXRpb24taGlkZGVuIHsKICAgIG9wYWNpdHk6IDAKfQoKLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cywKLnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSwKLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uIHsKICAgIGJvdHRvbTogNXB4OwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgd2lkdGg6IDZweDsKICAgIGhlaWdodDogNnB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgYmFja2dyb3VuZDogIzAwMDsKICAgIG9wYWNpdHk6IC4yCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiB7CiAgICBjb2xvcjogIzAwMAp9CgpidXR0b24uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICAgIGJvcmRlcjogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgYXBwZWFyYW5jZTogbm9uZTsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tY2xpY2thYmxlIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgY3Vyc29yOiBwb2ludGVyCn0KCi5zd2lwZXItcGFnaW5hdGlvbi13aGl0ZSAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICAgIGJhY2tncm91bmQ6ICNmZmYKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUgewogICAgb3BhY2l0eTogMQp9Cgouc3dpcGVyLXBhZ2luYXRpb24td2hpdGUgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUgewogICAgYmFja2dyb3VuZDogI2ZmZgp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYmxhY2sgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUgewogICAgYmFja2dyb3VuZDogIzAwMAp9Cgouc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyB7CiAgICByaWdodDogMTBweDsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01MCUsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNTAlLCAwKQp9Cgouc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICAgIG1hcmdpbjogNXB4IDA7CiAgICBkaXNwbGF5OiBibG9jawp9Cgouc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgbWFyZ2luOiAwIDZweAp9Cgouc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIgewogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMjUpOwogICAgcG9zaXRpb246IGFic29sdXRlCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItZmlsbCB7CiAgICBiYWNrZ3JvdW5kOiAjMDAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHRvcDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wCn0KCi5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWZpbGwgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wOwogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wCn0KCi5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA0cHg7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwCn0KCi5zd2lwZXItY29udGFpbmVyLXZlcnRpY2FsPi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciB7CiAgICB3aWR0aDogNHB4OwogICAgaGVpZ2h0OiAxMDAlOwogICAgbGVmdDogMDsKICAgIHRvcDogMAp9Cgouc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24td2hpdGUgewogICAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgMTAwJSwgLjUpCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi13aGl0ZSAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItZmlsbCB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ibGFjayAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItZmlsbCB7CiAgICBiYWNrZ3JvdW5kOiAjMDAwCn0KCi5zd2lwZXItY29udGFpbmVyLTNkIHsKICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6IDEyMDBweDsKICAgIHBlcnNwZWN0aXZlOiAxMjAwcHgKfQoKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1jdWJlLXNoYWRvdywKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZSwKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLAouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LAouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLAouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXdyYXBwZXIgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOwogICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZAp9Cgouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sCi5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsCi5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LAouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHRvcDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB6LWluZGV4OiAxMAp9Cgouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChyaWdodCwgcmdiYSgwLCAwLCAwLCAuNSksIHRyYW5zcGFyZW50KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCByaWdodCB0b3AsIGxlZnQgdG9wLCBmcm9tKHJnYmEoMCwgMCwgMCwgLjUpKSwgdG8odHJhbnNwYXJlbnQpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgyNzBkZWcsIHJnYmEoMCwgMCwgMCwgLjUpLCB0cmFuc3BhcmVudCkKfQoKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQgewogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsIHJnYmEoMCwgMCwgMCwgLjUpLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJvbShyZ2JhKDAsIDAsIDAsIC41KSksIHRvKHRyYW5zcGFyZW50KSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMCwgMCwgMCwgLjUpLCB0cmFuc3BhcmVudCkKfQoKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChib3R0b20sIHJnYmEoMCwgMCwgMCwgLjUpLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCBib3R0b20sIGxlZnQgdG9wLCBmcm9tKHJnYmEoMCwgMCwgMCwgLjUpKSwgdG8odHJhbnNwYXJlbnQpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDAsIDAsIDAsIC41KSwgdHJhbnNwYXJlbnQpCn0KCi5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDAsIDAsIDAsIC41KSwgdHJhbnNwYXJlbnQpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2JhKDAsIDAsIDAsIC41KSksIHRvKHRyYW5zcGFyZW50KSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDAsIDAsIDAsIC41KSwgdHJhbnNwYXJlbnQpCn0KCi5zd2lwZXItY29udGFpbmVyLWNvdmVyZmxvdyAuc3dpcGVyLXdyYXBwZXIsCi5zd2lwZXItY29udGFpbmVyLWZsaXAgLnN3aXBlci13cmFwcGVyIHsKICAgIC1tcy1wZXJzcGVjdGl2ZTogMTIwMHB4Cn0KCi5zd2lwZXItY29udGFpbmVyLWN1YmUsCi5zd2lwZXItY29udGFpbmVyLWZsaXAgewogICAgb3ZlcmZsb3c6IHZpc2libGUKfQoKLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLAouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB6LWluZGV4OiAxCn0KCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlLAouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUtYWN0aXZlLAouc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlLAouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtYWN0aXZlLAouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHsKICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvCn0KCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLAouc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLAouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwKLnN3aXBlci1jb250YWluZXItZmxpcCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LAouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LAouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCB7CiAgICB6LWluZGV4OiAwOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlCn0KCi5zd2lwZXItY29udGFpbmVyLWN1YmUuc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1zbGlkZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDA7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDAKfQoKLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSwKLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLW5leHQsCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1uZXh0Ky5zd2lwZXItc2xpZGUsCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1wcmV2IHsKICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgdmlzaWJpbGl0eTogdmlzaWJsZQp9Cgouc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItY3ViZS1zaGFkb3cgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIGJvdHRvbTogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogIzAwMDsKICAgIG9wYWNpdHk6IC42OwogICAgLXdlYmtpdC1maWx0ZXI6IGJsdXIoNTBweCk7CiAgICBmaWx0ZXI6IGJsdXIoNTBweCk7CiAgICB6LWluZGV4OiAwCn0KCi5zd2lwZXItY29udGFpbmVyLWZhZGUuc3dpcGVyLWNvbnRhaW5lci1mcmVlLW1vZGUgLnN3aXBlci1zbGlkZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIC1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dAp9Cgouc3dpcGVyLWNvbnRhaW5lci1mYWRlIC5zd2lwZXItc2xpZGUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHk7CiAgICAtby10cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5OwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eQp9Cgouc3dpcGVyLWNvbnRhaW5lci1mYWRlIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLWNvbnRhaW5lci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlLAouc3dpcGVyLWNvbnRhaW5lci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHsKICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvCn0KCi5zd2lwZXItem9vbS1jb250YWluZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5zd2lwZXItem9vbS1jb250YWluZXI+Y2FudmFzLAouc3dpcGVyLXpvb20tY29udGFpbmVyPmltZywKLnN3aXBlci16b29tLWNvbnRhaW5lcj5zdmcgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LWhlaWdodDogMTAwJTsKICAgIC1vLW9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBvYmplY3QtZml0OiBjb250YWluCn0KCi5zd2lwZXItc2Nyb2xsYmFyIHsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtbXMtdG91Y2gtYWN0aW9uOiBub25lOwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMSkKfQoKLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbD4uc3dpcGVyLXNjcm9sbGJhciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAxJTsKICAgIGJvdHRvbTogM3B4OwogICAgei1pbmRleDogNTA7CiAgICBoZWlnaHQ6IDVweDsKICAgIHdpZHRoOiA5OCUKfQoKLnN3aXBlci1jb250YWluZXItdmVydGljYWw+LnN3aXBlci1zY3JvbGxiYXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDNweDsKICAgIHRvcDogMSU7CiAgICB6LWluZGV4OiA1MDsKICAgIHdpZHRoOiA1cHg7CiAgICBoZWlnaHQ6IDk4JQp9Cgouc3dpcGVyLXNjcm9sbGJhci1kcmFnIHsKICAgIGhlaWdodDogMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuNSk7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgbGVmdDogMDsKICAgIHRvcDogMAp9Cgouc3dpcGVyLXNjcm9sbGJhci1jdXJzb3ItZHJhZyB7CiAgICBjdXJzb3I6IG1vdmUKfQoKLmVsZW1lbnRvci1wYWdpbmF0aW9uLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXIgewogICAgcGFkZGluZy1ib3R0b206IDMwcHgKfQoKLmVsZW1lbnRvci1wYWdpbmF0aW9uLXBvc2l0aW9uLW91dHNpZGUgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgIHRvcDogY2FsYyg1MCUgLSAzMHB4IC8gMikKfQoKLmVsZW1lbnRvci1zd2lwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3ItbWFpbi1zd2lwZXIgewogICAgcG9zaXRpb246IHN0YXRpYwp9CgouZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2MHB4KQp9CgouZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgIGxlZnQ6IDAKfQoKLmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICByaWdodDogMAp9Cgouc3dpcGVyLWltYWdlLXN0cmV0Y2ggLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlLWltYWdlIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIHotaW5kZXg6IDE7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICBjb2xvcjogaHNsYSgwLCAwJSwgOTMuMyUsIC45KTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpCn0KCi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcgewogICAgZmlsbDogaHNsYSgwLCAwJSwgOTMuMyUsIC45KTsKICAgIGhlaWdodDogMWVtOwogICAgd2lkdGg6IDFlbQp9CgouZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICBsZWZ0OiAxMHB4Cn0KCi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0IHsKICAgIHJpZ2h0OiAxMHB4Cn0KCi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi5zd2lwZXItYnV0dG9uLWRpc2FibGVkIHsKICAgIG9wYWNpdHk6IC4zCn0KCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNTAlLCAxcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNTAlLCAxcHgpCn0KCi5zd2lwZXItbGF6eS1wcmVsb2FkZXIgewogICAgd2lkdGg6IDQycHg7CiAgICBoZWlnaHQ6IDQycHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiA1MCU7CiAgICB0b3A6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMjFweDsKICAgIG1hcmdpbi10b3A6IC0yMXB4OwogICAgei1pbmRleDogMTA7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiA1MCU7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogc3dpcGVyLXByZWxvYWRlci1zcGluIDFzIHN0ZXBzKDEyKSBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogc3dpcGVyLXByZWxvYWRlci1zcGluIDFzIHN0ZXBzKDEyKSBpbmZpbml0ZQp9Cgouc3dpcGVyLWxhenktcHJlbG9hZGVyOmFmdGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogIiI7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTsKICAgIGJhY2tncm91bmQ6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAxMjAgMTIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyUzRSUzQ2RlZnMlM0UlM0NwYXRoIGlkPSdhJyBzdHJva2U9JyUyMzZjNmM2Yycgc3Ryb2tlLXdpZHRoPScxMScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBkPSdNNjAgN3YyMCcvJTNFJTNDL2RlZnMlM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjI3Jy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjI3JyB0cmFuc2Zvcm09J3JvdGF0ZSgzMCA2MCA2MCknLyUzRSUzQ3VzZSB4bGluazpocmVmPSclMjNhJyBvcGFjaXR5PScuMjcnIHRyYW5zZm9ybT0ncm90YXRlKDYwIDYwIDYwKScvJTNFJTNDdXNlIHhsaW5rOmhyZWY9JyUyM2EnIG9wYWNpdHk9Jy4yNycgdHJhbnNmb3JtPSdyb3RhdGUoOTAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjI3JyB0cmFuc2Zvcm09J3JvdGF0ZSgxMjAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjI3JyB0cmFuc2Zvcm09J3JvdGF0ZSgxNTAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjM3JyB0cmFuc2Zvcm09J3JvdGF0ZSgxODAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjQ2JyB0cmFuc2Zvcm09J3JvdGF0ZSgyMTAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjU2JyB0cmFuc2Zvcm09J3JvdGF0ZSgyNDAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjY2JyB0cmFuc2Zvcm09J3JvdGF0ZSgyNzAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjc1JyB0cmFuc2Zvcm09J3JvdGF0ZSgzMDAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjg1JyB0cmFuc2Zvcm09J3JvdGF0ZSgzMzAgNjAgNjApJy8lM0UlM0Mvc3ZnJTNFIikgbm8tcmVwZWF0IDUwJQp9Cgouc3dpcGVyLWxhenktcHJlbG9hZGVyLXdoaXRlOmFmdGVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAxMjAgMTIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyUzRSUzQ2RlZnMlM0UlM0NwYXRoIGlkPSdhJyBzdHJva2U9JyUyM2ZmZicgc3Ryb2tlLXdpZHRoPScxMScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBkPSdNNjAgN3YyMCcvJTNFJTNDL2RlZnMlM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjI3Jy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjI3JyB0cmFuc2Zvcm09J3JvdGF0ZSgzMCA2MCA2MCknLyUzRSUzQ3VzZSB4bGluazpocmVmPSclMjNhJyBvcGFjaXR5PScuMjcnIHRyYW5zZm9ybT0ncm90YXRlKDYwIDYwIDYwKScvJTNFJTNDdXNlIHhsaW5rOmhyZWY9JyUyM2EnIG9wYWNpdHk9Jy4yNycgdHJhbnNmb3JtPSdyb3RhdGUoOTAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjI3JyB0cmFuc2Zvcm09J3JvdGF0ZSgxMjAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjI3JyB0cmFuc2Zvcm09J3JvdGF0ZSgxNTAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjM3JyB0cmFuc2Zvcm09J3JvdGF0ZSgxODAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjQ2JyB0cmFuc2Zvcm09J3JvdGF0ZSgyMTAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjU2JyB0cmFuc2Zvcm09J3JvdGF0ZSgyNDAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjY2JyB0cmFuc2Zvcm09J3JvdGF0ZSgyNzAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjc1JyB0cmFuc2Zvcm09J3JvdGF0ZSgzMDAgNjAgNjApJy8lM0UlM0N1c2UgeGxpbms6aHJlZj0nJTIzYScgb3BhY2l0eT0nLjg1JyB0cmFuc2Zvcm09J3JvdGF0ZSgzMzAgNjAgNjApJy8lM0UlM0Mvc3ZnJTNFIikKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHN3aXBlci1wcmVsb2FkZXItc3BpbiB7CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMXR1cm4pCiAgICB9Cn0KCkBrZXlmcmFtZXMgc3dpcGVyLXByZWxvYWRlci1zcGluIHsKICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybikKICAgIH0KfQoKLmVsZW1lbnRvci1saWdodGJveCB7CiAgICAtLWxpZ2h0Ym94LXVpLWNvbG9yOiBoc2xhKDAsIDAlLCA5My4zJSwgMC45KTsKICAgIC0tbGlnaHRib3gtdWktY29sb3ItaG92ZXI6ICNmZmY7CiAgICAtLWxpZ2h0Ym94LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIC0tbGlnaHRib3gtaGVhZGVyLWljb25zLXNpemU6IDIwcHg7CiAgICAtLWxpZ2h0Ym94LW5hdmlnYXRpb24taWNvbnMtc2l6ZTogMjVweAp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctaGVhZGVyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLXdpZGdldC1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLW1lc3NhZ2UgewogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IC4zczsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmRpYWxvZy1tZXNzYWdlOm5vdCguZWxlbWVudG9yLWZpdC1hc3BlY3QtcmF0aW8pIHsKICAgIGhlaWdodDogMTAwJQp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctbWVzc2FnZS5kaWFsb2ctbGlnaHRib3gtbWVzc2FnZSB7CiAgICBwYWRkaW5nOiAwCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmRpYWxvZy1saWdodGJveC1jbG9zZS1idXR0b24gewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZm9udC1zaXplOiB2YXIoLS1saWdodGJveC1oZWFkZXItaWNvbnMtc2l6ZSk7CiAgICByaWdodDogLjc1ZW07CiAgICBtYXJnaW4tdG9wOiAxM3B4OwogICAgcGFkZGluZzogLjI1ZW07CiAgICB6LWluZGV4OiAyOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctbGlnaHRib3gtY2xvc2UtYnV0dG9uIHN2ZyB7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLWxpZ2h0Ym94LWNsb3NlLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24gewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC4zczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAuM3M7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjNzOwogICAgb3BhY2l0eTogMQp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctbGlnaHRib3gtY2xvc2UtYnV0dG9uIHN2ZywKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnIHsKICAgIGZpbGw6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKQp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctbGlnaHRib3gtY2xvc2UtYnV0dG9uOmhvdmVyLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbjpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tbGlnaHRib3gtdWktY29sb3ItaG92ZXIpCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmRpYWxvZy1saWdodGJveC1jbG9zZS1idXR0b246aG92ZXIgc3ZnLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbjpob3ZlciBzdmcgewogICAgZmlsbDogdmFyKC0tbGlnaHRib3gtdWktY29sb3ItaG92ZXIpCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIgewogICAgaGVpZ2h0OiAxMDAlCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1saWdodGJveC1pdGVtIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nOiA3MHB4OwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGhlaWdodDogMTAwJTsKICAgIG1hcmdpbjogYXV0bwp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWxpZ2h0Ym94LWl0ZW0gewogICAgICAgIHBhZGRpbmc6IDcwcHggMAogICAgfQp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItbGlnaHRib3gtaW1hZ2UgewogICAgbWF4LWhlaWdodDogMTAwJTsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWxpZ2h0Ym94LWltYWdlLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItbGlnaHRib3gtaW1hZ2U6aG92ZXIgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtZmlsdGVyOiBub25lOwogICAgZmlsdGVyOiBub25lOwogICAgYm9yZGVyOiBub25lCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1saWdodGJveC1pbWFnZSwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzMHB4IHJnYmEoMCwgMCwgMCwgLjMpLCAwIDAgOHB4IC01cHggcmdiYSgwLCAwLCAwLCAuMyk7CiAgICBib3gtc2hhZG93OiAwIDAgMzBweCByZ2JhKDAsIDAsIDAsIC4zKSwgMCAwIDhweCAtNXB4IHJnYmEoMCwgMCwgMCwgLjMpOwogICAgYm9yZGVyLXJhZGl1czogMnB4Cn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKQG1lZGlhIChtaW4td2lkdGg6MTAyNXB4KSB7CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWFzcGVjdC1yYXRpby05MTYgLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgewogICAgICAgIHdpZHRoOiA3MCUKICAgIH0KfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b246Zm9jdXMgewogICAgb3V0bGluZS13aWR0aDogMXB4Cn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYgewogICAgaGVpZ2h0OiAxMDAlOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTUlOwogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWxpZ2h0Ym94LW5hdmlnYXRpb24taWNvbnMtc2l6ZSkKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICBsZWZ0OiAwCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQgewogICAgcmlnaHQ6IDAKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCBpLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiBpIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19jb3VudGVyIHsKICAgIGNvbG9yOiBjdXJyZW50Q29sb3I7CiAgICBmb250LXNpemU6IC43NWVtOwogICAgd2lkdGg6IC13ZWJraXQtbWF4LWNvbnRlbnQ7CiAgICB3aWR0aDogLW1vei1tYXgtY29udGVudDsKICAgIHdpZHRoOiBtYXgtY29udGVudAp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fZm9vdGVyLAouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjNzOwogICAgLW8tdHJhbnNpdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbjogLjNzCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIgewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXRleHQtY29sb3IpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlOwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbGlnaHRib3gtaGVhZGVyLWljb25zLXNpemUpOwogICAgcGFkZGluZy1sZWZ0OiAxZW07CiAgICBwYWRkaW5nLXJpZ2h0OiAyLjZlbTsKICAgIHRvcDogMDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHotaW5kZXg6IDEwCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXI+aSwKLmVsZW1lbnRvci1zbGlkZXNob3dfX2hlYWRlcj5zdmcgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcGFkZGluZzogLjI1ZW07CiAgICBtYXJnaW46IDAgLjM1ZW0KfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX2hlYWRlcj5pIHsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdAp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyPmk6aG92ZXIgewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yLWhvdmVyKQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyPnN2ZyB7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBmaWxsOiB2YXIoLS1saWdodGJveC11aS1jb2xvcik7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX2hlYWRlcj5zdmc6aG92ZXIgewogICAgZmlsbDogdmFyKC0tbGlnaHRib3gtdWktY29sb3ItaG92ZXIpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgLmVsZW1lbnRvci1zbGlkZXNob3dfX2NvdW50ZXIgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgLmVsZW1lbnRvci1pY29uLXNoYXJlIHsKICAgIHotaW5kZXg6IDUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLW1lbnUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjRzOwogICAgLW8tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHM7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cwp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbWVudSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSB7CiAgICBjb2xvcjogIzJjMmMyYwp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBtaW4td2lkdGg6IDIwMHB4OwogICAgcmlnaHQ6IDIuOGVtOwogICAgdG9wOiAzZW07CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgcGFkZGluZzogMTRweCAyMHB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogOTAlIDEwJTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiA5MCUgMTAlOwogICAgdHJhbnNmb3JtLW9yaWdpbjogOTAlIDEwJTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC4yNXMgLjFzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIC4yNXMgLjFzOwogICAgdHJhbnNpdGlvbjogYWxsIC4yNXMgLjFzOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwgMCwgMCwgLjMpOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsIDAsIDAsIC4zKQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgY29sb3I6ICM1NTU5NWM7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMi41OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC41cyAuMXM7CiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IC41cyAuMXM7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC41cyAuMXMKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIGE6aG92ZXIgewogICAgY29sb3I6ICMwMDAKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIGEgaSwKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIGEgc3ZnIHsKICAgIG1hcmdpbi1yaWdodDogLjc1ZW0KfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIGEgaSB7CiAgICBmb250LXNpemU6IDEuMjVlbQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSBzdmcgewogICAgaGVpZ2h0OiAxLjI1ZW07CiAgICB3aWR0aDogMS4yNWVtCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rczpiZWZvcmUgewogICAgY29udGVudDogIiI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMXB4OwogICAgcmlnaHQ6IC41ZW07CiAgICBib3JkZXI6IC40NWVtIHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKSBzY2FsZVgoLjcpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSkgc2NhbGVYKC43KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSkgc2NhbGVYKC43KQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fZm9vdGVyIHsKICAgIGJvdHRvbTogMDsKICAgIHotaW5kZXg6IDU7CiAgICBwb3NpdGlvbjogZml4ZWQKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX2Rlc2NyaXB0aW9uLAouZWxlbWVudG9yLXNsaWRlc2hvd19fdGl0bGUgewogICAgbWFyZ2luOiAwCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X190aXRsZSB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBmb250LXdlaWdodDogNzAwCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXVpLWhpZGRlbiAuZWxlbWVudG9yLXNsaWRlc2hvd19fZm9vdGVyLAouZWxlbWVudG9yLXNsaWRlc2hvdy0tdWktaGlkZGVuIC5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgewogICAgb3BhY2l0eTogMDsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS11aS1oaWRkZW4gLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3Itc2xpZGVzaG93LS11aS1oaWRkZW4gLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYgewogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tZnVsbHNjcmVlbi1tb2RlIC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS16b29tLW1vZGUgLmVsZW1lbnRvci1zbGlkZXNob3dfX2Zvb3RlciwKLmVsZW1lbnRvci1zbGlkZXNob3ctLXpvb20tbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS16b29tLW1vZGUgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3Itc2xpZGVzaG93LS16b29tLW1vZGUgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYgewogICAgb3BhY2l0eTogMDsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1tZW51IHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwdnc7CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgb3BhY2l0eTogMTsKICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXNoYXJlLW1vZGUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzLAouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSB7CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tdHdpdHRlciB7CiAgICBjb2xvcjogIzFkYTFmMgp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmVpY29uLWZhY2Vib29rIHsKICAgIGNvbG9yOiAjM2I1OTk4Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tcGludGVyZXN0IHsKICAgIGNvbG9yOiAjYmQwODFjCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tZG93bmxvYWQtYm9sZCB7CiAgICBjb2xvcjogI2E0YWZiNwp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmUtZWljb24tdHdpdHRlciB7CiAgICBmaWxsOiAjMWRhMWYyCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZS1laWNvbi1mYWNlYm9vayB7CiAgICBmaWxsOiAjM2I1OTk4Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZS1laWNvbi1waW50ZXJlc3QgewogICAgZmlsbDogI2JkMDgxYwp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmUtZWljb24tZG93bmxvYWQtYm9sZCB7CiAgICBmaWxsOiAjYTRhZmI3Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5laWNvbi1zaGFyZS1hcnJvdyB7CiAgICB6LWluZGV4OiAyCn0KCi5hbmltYXRlZCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMS4yNXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDEuMjVzCn0KCi5hbmltYXRlZC5hbmltYXRlZC1zbG93IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAyczsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMnMKfQoKLmFuaW1hdGVkLmFuaW1hdGVkLWZhc3QgewogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IC43NXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC43NXMKfQoKLmFuaW1hdGVkLmluZmluaXRlIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZQp9CgouYW5pbWF0ZWQucmV2ZXJzZSB7CiAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwogICAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzCn0KCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2UpIHsKICAgIC5hbmltYXRlZCB7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IG5vbmU7CiAgICAgICAgYW5pbWF0aW9uOiBub25lCiAgICB9Cn0KCi5lbGVtZW50b3Itc2hhcGUgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgZGlyZWN0aW9uOiBsdHIKfQoKLmVsZW1lbnRvci1zaGFwZS10b3AgewogICAgdG9wOiAtMXB4Cn0KCi5lbGVtZW50b3Itc2hhcGUtdG9wOm5vdChbZGF0YS1uZWdhdGl2ZT1mYWxzZV0pIHN2ZyB7CiAgICB6LWluZGV4OiAtMQp9CgouZWxlbWVudG9yLXNoYXBlLWJvdHRvbSB7CiAgICBib3R0b206IC0xcHgKfQoKLmVsZW1lbnRvci1zaGFwZS1ib3R0b206bm90KFtkYXRhLW5lZ2F0aXZlPXRydWVdKSBzdmcgewogICAgei1pbmRleDogLTEKfQoKLmVsZW1lbnRvci1zaGFwZVtkYXRhLW5lZ2F0aXZlPWZhbHNlXS5lbGVtZW50b3Itc2hhcGUtYm90dG9tLAouZWxlbWVudG9yLXNoYXBlW2RhdGEtbmVnYXRpdmU9dHJ1ZV0uZWxlbWVudG9yLXNoYXBlLXRvcCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykKfQoKLmVsZW1lbnRvci1zaGFwZSBzdmcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogY2FsYygxMDAlICsgMS4zcHgpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGVmdDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpCn0KCi5lbGVtZW50b3Itc2hhcGUgLmVsZW1lbnRvci1zaGFwZS1maWxsIHsKICAgIGZpbGw6ICNmZmY7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlWSgwZGVnKQp9Cgojd3AtYWRtaW4tYmFyLWVsZW1lbnRvcl9lZGl0X3BhZ2U+LmFiLWl0ZW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTgxMyI7CiAgICBmb250LWZhbWlseTogZWljb25zOwogICAgdG9wOiAzcHg7CiAgICBmb250LXNpemU6IDE4cHgKfQoKI3dwLWFkbWluLWJhci1lbGVtZW50b3JfZWRpdF9wYWdlIC5hYi1zdWJtZW51IC5hYi1pdGVtIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgd2lkdGg6IDIwMHB4Cn0KCiN3cC1hZG1pbi1iYXItZWxlbWVudG9yX2VkaXRfcGFnZSAuZWxlbWVudG9yLWVkaXQtbGluay10aXRsZSB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgLW8tdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB3aWR0aDogMTAwJQp9Cgojd3AtYWRtaW4tYmFyLWVsZW1lbnRvcl9lZGl0X3BhZ2UgLmVsZW1lbnRvci1lZGl0LWxpbmstdHlwZSB7CiAgICBiYWNrZ3JvdW5kOiAjNTU1OTVjOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgbGluZS1oZWlnaHQ6IDlweDsKICAgIG1hcmdpbi10b3A6IDZweDsKICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHgKfQoKI3dwLWFkbWluLWJhci1lbGVtZW50b3JfaW5zcGVjdG9yPi5hYi1pdGVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNDgiOwogICAgdG9wOiAycHgKfQoKI3dwYWRtaW5iYXIgKiB7CiAgICBmb250LXN0eWxlOiBub3JtYWwKfQoKLnBhZ2UtdGVtcGxhdGUtZWxlbWVudG9yX2NhbnZhcy5lbGVtZW50b3ItcGFnZTpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXBvc3RfX3RodW1ibmFpbF9fbGluayB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICAtby10cmFuc2l0aW9uOiBub25lOwogICAgdHJhbnNpdGlvbjogbm9uZQp9CgojbGVmdC1hcmVhIHVsLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMsCi5lbGVtZW50b3ItZWRpdC1hcmVhIC5lbGVtZW50b3ItZWxlbWVudCB1bC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLAouZWxlbWVudG9yIC5lbGVtZW50b3ItZWxlbWVudCB1bC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zIHsKICAgIHBhZGRpbmc6IDAKfQoKLmUtLXVhLWFwcGxlV2Via2l0LnJ0bCB7CiAgICAtLWZsZXgtcmlnaHQ6IGZsZXgtc3RhcnQKfQoKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tcmlnaHQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXJpZ2h0IHsKICAgIC0tanVzdGlmeS1jb250ZW50OiB2YXIoLS1mbGV4LXJpZ2h0LCBmbGV4LWVuZCkKfQoKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tY2VudGVyLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1jZW50ZXIgewogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ncmlkLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ncmlkIHsKICAgIHdpZHRoOiBhdXRvOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgZmxleC13cmFwOiB3cmFwOwogICAgLXdlYmtpdC1ib3gtcGFjazogdmFyKC0tanVzdGlmeS1jb250ZW50LCBzcGFjZS1iZXR3ZWVuKTsKICAgIC1tcy1mbGV4LXBhY2s6IHZhcigtLWp1c3RpZnktY29udGVudCwgc3BhY2UtYmV0d2Vlbik7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLWp1c3RpZnktY29udGVudCwgc3BhY2UtYmV0d2Vlbik7CiAgICBtYXJnaW4tbGVmdDogY2FsYygtLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKTsKICAgIG1hcmdpbi1yaWdodDogY2FsYygtLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKQp9CgouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWdyaWQtaXRlbSwKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1qdXN0aWZ5IC5lbGVtZW50b3ItZ3JpZC1pdGVtLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItZ3JpZC1pdGVtLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWdyaWQtaXRlbSwKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICBtYXJnaW4tbGVmdDogY2FsYyguNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpOwogICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSkKfQoKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZC1pdGVtLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDAKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLXRhYmxldC0tYWxpZ24tcmlnaHQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi10YWJsZXQtcmlnaHQgewogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiB2YXIoLS1mbGV4LXJpZ2h0LCBmbGV4LWVuZCkKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtdGFibGV0LS1hbGlnbi1jZW50ZXIsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi10YWJsZXQtY2VudGVyIHsKICAgICAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXRhYmxldC1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi10YWJsZXQtanVzdGlmeSAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXRhYmxldC1yaWdodCAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi10YWJsZXQtcmlnaHQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHZhcigtLWp1c3RpZnktY29udGVudCwgc3BhY2UtYmV0d2Vlbik7CiAgICAgICAgLW1zLWZsZXgtcGFjazogdmFyKC0tanVzdGlmeS1jb250ZW50LCBzcGFjZS1iZXR3ZWVuKTsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLWp1c3RpZnktY29udGVudCwgc3BhY2UtYmV0d2Vlbik7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLS41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXRhYmxldC1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXRhYmxldC1qdXN0aWZ5IC5lbGVtZW50b3ItZ3JpZC1pdGVtLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi10YWJsZXQtcmlnaHQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1yaWdodCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKQogICAgfQogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLXRhYmxldC0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1sZWZ0IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtdGFibGV0LS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy10YWJsZXQtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy1tb2JpbGUtLWFsaWduLXJpZ2h0LAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbW9iaWxlLXJpZ2h0IHsKICAgICAgICAtLWp1c3RpZnktY29udGVudDogdmFyKC0tZmxleC1yaWdodCwgZmxleC1lbmQpCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLW1vYmlsZS0tYWxpZ24tY2VudGVyLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbW9iaWxlLWNlbnRlciB7CiAgICAgICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1tb2JpbGUtY2VudGVyIC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tbW9iaWxlLWp1c3RpZnkgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1tb2JpbGUtcmlnaHQgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtY2VudGVyIC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbW9iaWxlLXJpZ2h0IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiB2YXIoLS1qdXN0aWZ5LWNvbnRlbnQsIHNwYWNlLWJldHdlZW4pOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHZhcigtLWp1c3RpZnktY29udGVudCwgc3BhY2UtYmV0d2Vlbik7CiAgICAgICAganVzdGlmeS1jb250ZW50OiB2YXIoLS1qdXN0aWZ5LWNvbnRlbnQsIHNwYWNlLWJldHdlZW4pOwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0uNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpOwogICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKQogICAgfQogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1tb2JpbGUtY2VudGVyIC5lbGVtZW50b3ItZ3JpZC1pdGVtLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1tb2JpbGUtanVzdGlmeSAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tbW9iaWxlLXJpZ2h0IC5lbGVtZW50b3ItZ3JpZC1pdGVtLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtY2VudGVyIC5lbGVtZW50b3ItZ3JpZC1pdGVtLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtcmlnaHQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSkKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy1tb2JpbGUtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtbGVmdCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawogICAgfQogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLW1vYmlsZS0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtbW9iaWxlLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZC1pdGVtLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtbGVmdCAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1sZWZ0IC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3IgLmVsZW1lbnRvci1oaWRkZW4tbW9iaWxlLAogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi1waG9uZSB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDotMXB4KSBhbmQgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLW1vYmlsZV9leHRyYSB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLXRhYmxldCB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDotMXB4KSBhbmQgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLWxhcHRvcCwKICAgIC5lbGVtZW50b3IgLmVsZW1lbnRvci1oaWRkZW4tdGFibGV0X2V4dHJhIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgYW5kIChtYXgtd2lkdGg6OTk5OTlweCkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi1kZXNrdG9wIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3IgLmVsZW1lbnRvci1oaWRkZW4td2lkZXNjcmVlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggewogICAgZm9udC1zaXplOiAyMHB4OwogICAgdGV4dC1hbGlnbjogdmFyKC0tYWxpZ25tZW50LCBsZWZ0KQp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggc3ZnIHsKICAgIHdpZHRoOiB2YXIoLS13aWR0aCk7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIHdvcmQtc3BhY2luZzogdmFyKC0td29yZC1zcGFjaW5nKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tcm90YXRlLCAwKSkgc2NhbGVYKHZhcigtLXNjYWxlLXgsIDEpKSBzY2FsZVkodmFyKC0tc2NhbGUteSwgMSkpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKHZhcigtLXJvdGF0ZSwgMCkpIHNjYWxlWCh2YXIoLS1zY2FsZS14LCAxKSkgc2NhbGVZKHZhcigtLXNjYWxlLXksIDEpKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKHZhcigtLXJvdGF0ZSwgMCkpIHNjYWxlWCh2YXIoLS1zY2FsZS14LCAxKSkgc2NhbGVZKHZhcigtLXNjYWxlLXksIDEpKQp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggc3ZnIHBhdGggewogICAgdmVjdG9yLWVmZmVjdDogbm9uLXNjYWxpbmctc3Ryb2tlOwogICAgZmlsbDogdmFyKC0tcGF0aC1maWxsLCB0cmFuc3BhcmVudCk7CiAgICBzdHJva2U6IHZhcigtLXN0cm9rZS1jb2xvciwgdHJhbnNwYXJlbnQpOwogICAgc3Ryb2tlLXdpZHRoOiB2YXIoLS1zdHJva2Utd2lkdGgsIDFweCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IHZhcigtLXN0cm9rZS10cmFuc2l0aW9uKSBzdHJva2UsIHZhcigtLXN0cm9rZS10cmFuc2l0aW9uKSBmaWxsOwogICAgLW8tdHJhbnNpdGlvbjogdmFyKC0tc3Ryb2tlLXRyYW5zaXRpb24pIHN0cm9rZSwgdmFyKC0tc3Ryb2tlLXRyYW5zaXRpb24pIGZpbGw7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS1zdHJva2UtdHJhbnNpdGlvbikgc3Ryb2tlLCB2YXIoLS1zdHJva2UtdHJhbnNpdGlvbikgZmlsbAp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggc3ZnOmhvdmVyIHBhdGggewogICAgLS1wYXRoLWZpbGw6IHZhcigtLXBhdGgtZmlsbC1ob3Zlcik7CiAgICAtLXN0cm9rZS1jb2xvcjogdmFyKC0tc3Ryb2tlLWNvbG9yLWhvdmVyKTsKICAgIC0tc3Ryb2tlLXdpZHRoOiB2YXIoLS1zdHJva2Utd2lkdGgtaG92ZXIpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRleHQtcGF0aCBzdmcgdGV4dCB7CiAgICAtLWZpbGw6IHZhcigtLXRleHQtY29sb3IpOwogICAgZmlsbDogdmFyKC0tZmlsbCk7CiAgICBkaXJlY3Rpb246IHZhcigtLWRpcmVjdGlvbiwgbHRyKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbikgc3Ryb2tlLCB2YXIoLS10cmFuc2l0aW9uKSBzdHJva2Utd2lkdGgsIHZhcigtLXRyYW5zaXRpb24pIGZpbGw7CiAgICAtby10cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uKSBzdHJva2UsIHZhcigtLXRyYW5zaXRpb24pIHN0cm9rZS13aWR0aCwgdmFyKC0tdHJhbnNpdGlvbikgZmlsbDsKICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24pIHN0cm9rZSwgdmFyKC0tdHJhbnNpdGlvbikgc3Ryb2tlLXdpZHRoLCB2YXIoLS10cmFuc2l0aW9uKSBmaWxsCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRleHQtcGF0aCBzdmcgdGV4dDpob3ZlciB7CiAgICAtLWNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLWhvdmVyLCB2YXIoLS10ZXh0LWNvbG9yKSk7CiAgICAtLWZpbGw6IHZhcigtLWNvbG9yKTsKICAgIGNvbG9yOiB2YXIoLS1jb2xvcikKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gewogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLWFjY29yZGlvbi1pdGVtIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNGQ0ZDQKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci1hY2NvcmRpb24taXRlbSsuZWxlbWVudG9yLWFjY29yZGlvbi1pdGVtIHsKICAgIGJvcmRlci10b3A6IG5vbmUKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUgewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3V0bGluZTogbm9uZQp9CgouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi10aXRsZSAuZWxlbWVudG9yLWFjY29yZGlvbi1pY29uIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxLjVlbQp9CgouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi10aXRsZSAuZWxlbWVudG9yLWFjY29yZGlvbi1pY29uIHN2ZyB7CiAgICB3aWR0aDogMWVtOwogICAgaGVpZ2h0OiAxZW0KfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUgLmVsZW1lbnRvci1hY2NvcmRpb24taWNvbi5lbGVtZW50b3ItYWNjb3JkaW9uLWljb24tcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUgLmVsZW1lbnRvci1hY2NvcmRpb24taWNvbi5lbGVtZW50b3ItYWNjb3JkaW9uLWljb24tbGVmdCB7CiAgICBmbG9hdDogbGVmdDsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUgLmVsZW1lbnRvci1hY2NvcmRpb24taWNvbiAuZWxlbWVudG9yLWFjY29yZGlvbi1pY29uLWNsb3NlZCB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi10aXRsZSAuZWxlbWVudG9yLWFjY29yZGlvbi1pY29uIC5lbGVtZW50b3ItYWNjb3JkaW9uLWljb24tb3BlbmVkLAouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi10aXRsZS5lbGVtZW50b3ItYWN0aXZlIC5lbGVtZW50b3ItYWNjb3JkaW9uLWljb24tY2xvc2VkIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUuZWxlbWVudG9yLWFjdGl2ZSAuZWxlbWVudG9yLWFjY29yZGlvbi1pY29uLW9wZW5lZCB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwYWRkaW5nOiAxNXB4IDIwcHg7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2Q0ZDRkNAp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUgewogICAgICAgIHBhZGRpbmc6IDEycHggMTVweAogICAgfQogICAgLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUgLmVsZW1lbnRvci1hY2NvcmRpb24taWNvbiB7CiAgICAgICAgd2lkdGg6IDEuMmVtCiAgICB9CiAgICAuZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgICAgICBwYWRkaW5nOiA3cHggMTVweAogICAgfQp9CgouZWxlbWVudG9yLWFsZXJ0IHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLWFsZXJ0IC5lbGVtZW50b3ItYWxlcnQtdGl0bGUgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXdlaWdodDogNzAwCn0KCi5lbGVtZW50b3ItYWxlcnQgLmVsZW1lbnRvci1hbGVydC1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDEzcHgKfQoKLmVsZW1lbnRvci1hbGVydCBidXR0b24uZWxlbWVudG9yLWFsZXJ0LWRpc21pc3MgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDEwcHg7CiAgICB0b3A6IDEwcHg7CiAgICBwYWRkaW5nOiAzcHg7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY29sb3I6IGluaGVyaXQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmVsZW1lbnRvci1hbGVydC5lbGVtZW50b3ItYWxlcnQtaW5mbyB7CiAgICBjb2xvcjogIzMxNzA4ZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjc7CiAgICBib3JkZXItY29sb3I6ICNiY2RmZjEKfQoKLmVsZW1lbnRvci1hbGVydC5lbGVtZW50b3ItYWxlcnQtc3VjY2VzcyB7CiAgICBjb2xvcjogIzNjNzYzZDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7CiAgICBib3JkZXItY29sb3I6ICNjYWU2YmUKfQoKLmVsZW1lbnRvci1hbGVydC5lbGVtZW50b3ItYWxlcnQtd2FybmluZyB7CiAgICBjb2xvcjogIzhhNmQzYjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7CiAgICBib3JkZXItY29sb3I6ICNmOWYwYzMKfQoKLmVsZW1lbnRvci1hbGVydC5lbGVtZW50b3ItYWxlcnQtZGFuZ2VyIHsKICAgIGNvbG9yOiAjYTk0NDQyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKICAgIGJvcmRlci1jb2xvcjogI2U4YzRjNAp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1hbGVydCB7CiAgICAgICAgcGFkZGluZzogMTBweAogICAgfQogICAgLmVsZW1lbnRvci1hbGVydCBidXR0b24uZWxlbWVudG9yLWFsZXJ0LWRpc21pc3MgewogICAgICAgIHJpZ2h0OiA3cHg7CiAgICAgICAgdG9wOiA3cHgKICAgIH0KfQoKLmVsZW1lbnRvci1jb3VudGVyIC5lbGVtZW50b3ItY291bnRlci1udW1iZXItd3JhcHBlciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQtc2l6ZTogNjlweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsaW5lLWhlaWdodDogMQp9CgouZWxlbWVudG9yLWNvdW50ZXIgLmVsZW1lbnRvci1jb3VudGVyLW51bWJlci1wcmVmaXgsCi5lbGVtZW50b3ItY291bnRlciAuZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXN1ZmZpeCB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDE7CiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAKfQoKLmVsZW1lbnRvci1jb3VudGVyIC5lbGVtZW50b3ItY291bnRlci1udW1iZXItcHJlZml4IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Cn0KCi5lbGVtZW50b3ItY291bnRlciAuZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXN1ZmZpeCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5lbGVtZW50b3ItY291bnRlciAuZWxlbWVudG9yLWNvdW50ZXItdGl0bGUgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxOXB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxpbmUtaGVpZ2h0OiAyLjUKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlciB7CiAgICAtLWRpdmlkZXItYm9yZGVyLXN0eWxlOiBub25lOwogICAgLS1kaXZpZGVyLWJvcmRlci13aWR0aDogMXB4OwogICAgLS1kaXZpZGVyLWNvbG9yOiAjMmMyYzJjOwogICAgLS1kaXZpZGVyLWljb24tc2l6ZTogMjBweDsKICAgIC0tZGl2aWRlci1lbGVtZW50LXNwYWNpbmc6IDEwcHg7CiAgICAtLWRpdmlkZXItcGF0dGVybi1oZWlnaHQ6IDI0cHg7CiAgICAtLWRpdmlkZXItcGF0dGVybi1zaXplOiAyMHB4OwogICAgLS1kaXZpZGVyLXBhdHRlcm4tdXJsOiBub25lOwogICAgLS1kaXZpZGVyLXBhdHRlcm4tcmVwZWF0OiByZXBlYXQteAp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyIC5lbGVtZW50b3ItZGl2aWRlciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyIC5lbGVtZW50b3ItZGl2aWRlcl9fdGV4dCB7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIG1heC13aWR0aDogOTUlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXIgLmVsZW1lbnRvci1kaXZpZGVyX19lbGVtZW50IHsKICAgIG1hcmdpbjogMCB2YXIoLS1kaXZpZGVyLWVsZW1lbnQtc3BhY2luZyk7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMDsKICAgIGZsZXgtc2hyaW5rOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXIgLmVsZW1lbnRvci1pY29uIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZGl2aWRlci1pY29uLXNpemUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXIgLmVsZW1lbnRvci1kaXZpZGVyLXNlcGFyYXRvciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIG1hcmdpbjogMDsKICAgIGRpcmVjdGlvbjogbHRyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXItLXZpZXctbGluZV9pY29uIC5lbGVtZW50b3ItZGl2aWRlci1zZXBhcmF0b3IsCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXItLXZpZXctbGluZV90ZXh0IC5lbGVtZW50b3ItZGl2aWRlci1zZXBhcmF0b3IgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXItLXZpZXctbGluZV9pY29uIC5lbGVtZW50b3ItZGl2aWRlci1zZXBhcmF0b3I6YWZ0ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXItLXZpZXctbGluZV9pY29uIC5lbGVtZW50b3ItZGl2aWRlci1zZXBhcmF0b3I6YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLS12aWV3LWxpbmVfdGV4dCAuZWxlbWVudG9yLWRpdmlkZXItc2VwYXJhdG9yOmFmdGVyLAouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLS12aWV3LWxpbmVfdGV4dCAuZWxlbWVudG9yLWRpdmlkZXItc2VwYXJhdG9yOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbnRlbnQ6ICIiOwogICAgYm9yZGVyLWJvdHRvbTogMDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMTsKICAgIGJvcmRlci10b3A6IHZhcigtLWRpdmlkZXItYm9yZGVyLXdpZHRoKSB2YXIoLS1kaXZpZGVyLWJvcmRlci1zdHlsZSkgdmFyKC0tZGl2aWRlci1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tZWxlbWVudC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZGl2aWRlciAuZWxlbWVudG9yLWRpdmlkZXItc2VwYXJhdG9yPi5lbGVtZW50b3ItZGl2aWRlcl9fc3ZnOmZpcnN0LW9mLXR5cGUgewogICAgLXdlYmtpdC1ib3gtZmxleDogMDsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAwOwogICAgZmxleC1ncm93OiAwOwogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDEwMDsKICAgIGZsZXgtc2hyaW5rOiAxMDAKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tZWxlbWVudC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZGl2aWRlci1zZXBhcmF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tZWxlbWVudC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZGl2aWRlcl9fZWxlbWVudCB7CiAgICBtYXJnaW4tbGVmdDogMAp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLS1lbGVtZW50LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItZGl2aWRlciAuZWxlbWVudG9yLWRpdmlkZXItc2VwYXJhdG9yPi5lbGVtZW50b3ItZGl2aWRlcl9fc3ZnOmxhc3Qtb2YtdHlwZSB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAwOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDA7CiAgICBmbGV4LWdyb3c6IDA7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMTAwOwogICAgZmxleC1zaHJpbms6IDEwMAp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLS1lbGVtZW50LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItZGl2aWRlci1zZXBhcmF0b3I6YWZ0ZXIgewogICAgY29udGVudDogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLS1lbGVtZW50LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItZGl2aWRlcl9fZWxlbWVudCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlcjpub3QoLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tdmlldy1saW5lX3RleHQpOm5vdCguZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLS12aWV3LWxpbmVfaWNvbikgLmVsZW1lbnRvci1kaXZpZGVyLXNlcGFyYXRvciB7CiAgICBib3JkZXItdG9wOiB2YXIoLS1kaXZpZGVyLWJvcmRlci13aWR0aCkgdmFyKC0tZGl2aWRlci1ib3JkZXItc3R5bGUpIHZhcigtLWRpdmlkZXItY29sb3IpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXItLXNlcGFyYXRvci10eXBlLXBhdHRlcm4gewogICAgLS1kaXZpZGVyLWJvcmRlci1zdHlsZTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLS1zZXBhcmF0b3ItdHlwZS1wYXR0ZXJuLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tdmlldy1saW5lIC5lbGVtZW50b3ItZGl2aWRlci1zZXBhcmF0b3IsCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXItLXNlcGFyYXRvci10eXBlLXBhdHRlcm46bm90KC5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXItLXZpZXctbGluZSkgLmVsZW1lbnRvci1kaXZpZGVyLXNlcGFyYXRvcjphZnRlciwKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tc2VwYXJhdG9yLXR5cGUtcGF0dGVybjpub3QoLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tdmlldy1saW5lKSAuZWxlbWVudG9yLWRpdmlkZXItc2VwYXJhdG9yOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tc2VwYXJhdG9yLXR5cGUtcGF0dGVybjpub3QoW2NsYXNzKj1lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXItLXZpZXddKSAuZWxlbWVudG9yLWRpdmlkZXItc2VwYXJhdG9yIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWluLWhlaWdodDogdmFyKC0tZGl2aWRlci1wYXR0ZXJuLWhlaWdodCk7CiAgICAtd2Via2l0LW1hc2stc2l6ZTogdmFyKC0tZGl2aWRlci1wYXR0ZXJuLXNpemUpIDEwMCU7CiAgICBtYXNrLXNpemU6IHZhcigtLWRpdmlkZXItcGF0dGVybi1zaXplKSAxMDAlOwogICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogdmFyKC0tZGl2aWRlci1wYXR0ZXJuLXJlcGVhdCk7CiAgICBtYXNrLXJlcGVhdDogdmFyKC0tZGl2aWRlci1wYXR0ZXJuLXJlcGVhdCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kaXZpZGVyLWNvbG9yKTsKICAgIC13ZWJraXQtbWFzay1pbWFnZTogdmFyKC0tZGl2aWRlci1wYXR0ZXJuLXVybCk7CiAgICBtYXNrLWltYWdlOiB2YXIoLS1kaXZpZGVyLXBhdHRlcm4tdXJsKQp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLS1uby1zcGFjaW5nIHsKICAgIC0tZGl2aWRlci1wYXR0ZXJuLXNpemU6IGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci0tYmctcm91bmQgewogICAgLS1kaXZpZGVyLXBhdHRlcm4tcmVwZWF0OiByb3VuZAp9CgoucnRsIC5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXIgLmVsZW1lbnRvci1kaXZpZGVyX190ZXh0IHsKICAgIGRpcmVjdGlvbjogcnRsCn0KCi5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS1pdGVtIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIG1hcmdpbjogMCBhdXRvCn0KCi5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS1pdGVtIGltZyB7CiAgICBtYXJnaW46IDAgYXV0bwp9CgouZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgLmdhbGxlcnktaXRlbSAuZ2FsbGVyeS1jYXB0aW9uIHsKICAgIG1hcmdpbjogMAp9CgouZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgZmlndXJlIGltZyB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgZmlndXJlIGZpZ2NhcHRpb24gewogICAgd2lkdGg6IDEwMCUKfQoKLmdhbGxlcnktc3BhY2luZy1jdXN0b20gLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWljb24gewogICAgcGFkZGluZzogMAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWNvbHVtbnMtMiAuZ2FsbGVyeS1pdGVtIHsKICAgICAgICBtYXgtd2lkdGg6IDUwJQogICAgfQogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWNvbHVtbnMtMyAuZ2FsbGVyeS1pdGVtIHsKICAgICAgICBtYXgtd2lkdGg6IDMzLjMzJQogICAgfQogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWNvbHVtbnMtNCAuZ2FsbGVyeS1pdGVtIHsKICAgICAgICBtYXgtd2lkdGg6IDI1JQogICAgfQogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWNvbHVtbnMtNSAuZ2FsbGVyeS1pdGVtIHsKICAgICAgICBtYXgtd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWNvbHVtbnMtNiAuZ2FsbGVyeS1pdGVtIHsKICAgICAgICBtYXgtd2lkdGg6IDE2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS1jb2x1bW5zLTcgLmdhbGxlcnktaXRlbSB7CiAgICAgICAgbWF4LXdpZHRoOiAxNC4yOCUKICAgIH0KICAgIC5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS1jb2x1bW5zLTggLmdhbGxlcnktaXRlbSB7CiAgICAgICAgbWF4LXdpZHRoOiAxMi41JQogICAgfQogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWNvbHVtbnMtOSAuZ2FsbGVyeS1pdGVtIHsKICAgICAgICBtYXgtd2lkdGg6IDExLjExJQogICAgfQogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWNvbHVtbnMtMTAgLmdhbGxlcnktaXRlbSB7CiAgICAgICAgbWF4LXdpZHRoOiAxMCUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NDgwcHgpIGFuZCAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTIgLmdhbGxlcnktaXRlbSwKICAgIC5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtMyAuZ2FsbGVyeS1pdGVtLAogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LmdhbGxlcnktY29sdW1ucy00IC5nYWxsZXJ5LWl0ZW0sCiAgICAuZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTUgLmdhbGxlcnktaXRlbSwKICAgIC5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtNiAuZ2FsbGVyeS1pdGVtLAogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LmdhbGxlcnktY29sdW1ucy03IC5nYWxsZXJ5LWl0ZW0sCiAgICAuZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTggLmdhbGxlcnktaXRlbSwKICAgIC5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtOSAuZ2FsbGVyeS1pdGVtLAogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LmdhbGxlcnktY29sdW1ucy0xMCAuZ2FsbGVyeS1pdGVtIHsKICAgICAgICBtYXgtd2lkdGg6IDUwJQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo0NzlweCkgewogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LmdhbGxlcnktY29sdW1ucy0yIC5nYWxsZXJ5LWl0ZW0sCiAgICAuZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTMgLmdhbGxlcnktaXRlbSwKICAgIC5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtNCAuZ2FsbGVyeS1pdGVtLAogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LmdhbGxlcnktY29sdW1ucy01IC5nYWxsZXJ5LWl0ZW0sCiAgICAuZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTYgLmdhbGxlcnktaXRlbSwKICAgIC5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtNyAuZ2FsbGVyeS1pdGVtLAogICAgLmVsZW1lbnRvci1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LmdhbGxlcnktY29sdW1ucy04IC5nYWxsZXJ5LWl0ZW0sCiAgICAuZWxlbWVudG9yLWltYWdlLWdhbGxlcnkgLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTkgLmdhbGxlcnktaXRlbSwKICAgIC5lbGVtZW50b3ItaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtMTAgLmdhbGxlcnktaXRlbSB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWdvb2dsZV9tYXBzIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWdvb2dsZV9tYXBzIGlmcmFtZSB7CiAgICBoZWlnaHQ6IDMwMHB4Cn0KCi5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmVsZW1lbnRvci13aWRnZXQtaGVhZGluZyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGVbY2xhc3MqPWVsZW1lbnRvci1zaXplLV0+YSB7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmcgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlLmVsZW1lbnRvci1zaXplLXNtYWxsIHsKICAgIGZvbnQtc2l6ZTogMTVweAp9CgouZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZS5lbGVtZW50b3Itc2l6ZS1tZWRpdW0gewogICAgZm9udC1zaXplOiAxOXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmcgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlLmVsZW1lbnRvci1zaXplLWxhcmdlIHsKICAgIGZvbnQtc2l6ZTogMjlweAp9CgouZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZS5lbGVtZW50b3Itc2l6ZS14bCB7CiAgICBmb250LXNpemU6IDM5cHgKfQoKLmVsZW1lbnRvci13aWRnZXQtaGVhZGluZyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUuZWxlbWVudG9yLXNpemUteHhsIHsKICAgIGZvbnQtc2l6ZTogNTlweAp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdmVydGljYWwtYWxpZ24tdG9wIC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXZlcnRpY2FsLWFsaWduLW1pZGRsZSAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdmVydGljYWwtYWxpZ24tYm90dG9tIC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXgKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uLAouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDsKICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgLXdlYmtpdC1ib3gtZmxleDogMDsKICAgIC1tcy1mbGV4OiAwIDAgYXV0bzsKICAgIGZsZXg6IDAgMCBhdXRvCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgbWFyZ2luLWxlZnQ6IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIG1hcmdpbi1ib3R0b206IHVuc2V0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgIG1hcmdpbi1yaWdodDogdmFyKC0taWNvbi1ib3gtaWNvbi1tYXJnaW4sIDE1cHgpOwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tYm90dG9tOiB1bnNldAp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdW5zZXQ7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHVuc2V0OwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiB1bnNldDsKICAgIGZsZXgtZGlyZWN0aW9uOiB1bnNldAp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiB7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1pY29uLWJveC1pY29uLW1hcmdpbiwgMTVweCk7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogYXV0bwp9CgpAbWVkaWEgKG1pbi13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3Itd2lkZXNjcmVlbi1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci13aWRlc2NyZWVuLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogZmxleAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXdpZGVzY3JlZW4tcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWljb24tYm94LWljb24sCiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3Itd2lkZXNjcmVlbi1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDsKICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKICAgICAgICAtbXMtZmxleDogMCAwIGF1dG87CiAgICAgICAgZmxleDogMCAwIGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci13aWRlc2NyZWVuLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXdpZGVzY3JlZW4tcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0taWNvbi1ib3gtaWNvbi1tYXJnaW4sIDE1cHgpOwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXdpZGVzY3JlZW4tcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3cKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci13aWRlc2NyZWVuLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXdpZGVzY3JlZW4tcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdW5zZXQ7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiB1bnNldDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHVuc2V0OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXdpZGVzY3JlZW4tcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0taWNvbi1ib3gtaWNvbi1tYXJnaW4sIDE1cHgpOwogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICBtYXJnaW4tbGVmdDogYXV0bwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbGFwdG9wLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC13cmFwcGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLWxhcHRvcC1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGZsZXgKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1sYXB0b3AtcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWljb24tYm94LWljb24sCiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbGFwdG9wLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94OwogICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAwOwogICAgICAgIC1tcy1mbGV4OiAwIDAgYXV0bzsKICAgICAgICBmbGV4OiAwIDAgYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLWxhcHRvcC1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1sYXB0b3AtcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0taWNvbi1ib3gtaWNvbi1tYXJnaW4sIDE1cHgpOwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLWxhcHRvcC1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLWxhcHRvcC1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1pY29uLWJveC1pY29uLW1hcmdpbiwgMTVweCk7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdW5zZXQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1sYXB0b3AtcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdW5zZXQ7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiB1bnNldDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHVuc2V0OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLWxhcHRvcC1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1pY29uLWJveC1pY29uLW1hcmdpbiwgMTVweCk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogZmxleAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXRhYmxldF9leHRyYS1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDA7CiAgICAgICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgICAgIGZsZXg6IDAgMCBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXRhYmxldF9leHRyYS1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1pY29uLWJveC1pY29uLW1hcmdpbiwgMTVweCk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IHVuc2V0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC13cmFwcGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXRhYmxldF9leHRyYS1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pY29uLWJveC13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB1bnNldDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHVuc2V0OwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogdW5zZXQ7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHVuc2V0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8KICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdGFibGV0LXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC13cmFwcGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXRhYmxldC1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGZsZXgKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci10YWJsZXQtcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWljb24tYm94LWljb24sCiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItdGFibGV0LXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94OwogICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAwOwogICAgICAgIC1tcy1mbGV4OiAwIDAgYXV0bzsKICAgICAgICBmbGV4OiAwIDAgYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXRhYmxldC1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci10YWJsZXQtcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0taWNvbi1ib3gtaWNvbi1tYXJnaW4sIDE1cHgpOwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXRhYmxldC1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXRhYmxldC1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1pY29uLWJveC1pY29uLW1hcmdpbiwgMTVweCk7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdW5zZXQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci10YWJsZXQtcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdW5zZXQ7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiB1bnNldDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHVuc2V0OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXRhYmxldC1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1pY29uLWJveC1pY29uLW1hcmdpbiwgMTVweCk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogZmxleAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLW1vYmlsZV9leHRyYS1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDA7CiAgICAgICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgICAgIGZsZXg6IDAgMCBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLW1vYmlsZV9leHRyYS1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1pY29uLWJveC1pY29uLW1hcmdpbiwgMTVweCk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IHVuc2V0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC13cmFwcGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLW1vYmlsZV9leHRyYS1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pY29uLWJveC13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB1bnNldDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHVuc2V0OwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogdW5zZXQ7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHVuc2V0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8KICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1tb2JpbGUtcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWljb24tYm94LXdyYXBwZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogZmxleAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLW1vYmlsZS1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1tb2JpbGUtcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDA7CiAgICAgICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgICAgIGZsZXg6IDAgMCBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1ib3gtd3JhcHBlciB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLW1vYmlsZS1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1pY29uLWJveC1pY29uLW1hcmdpbiwgMTVweCk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IHVuc2V0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC13cmFwcGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pY29uLWJveC1pY29uIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiB1bnNldAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLW1vYmlsZS1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pY29uLWJveC13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB1bnNldDsKICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHVuc2V0OwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogdW5zZXQ7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHVuc2V0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3ItbW9iaWxlLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWljb24tYm94LWljb24tbWFyZ2luLCAxNXB4KTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1ib3gtaWNvbiwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWljb24tYm94LWljb24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IHVuc2V0OwogICAgICAgIC1tcy1mbGV4OiB1bnNldDsKICAgICAgICBmbGV4OiB1bnNldAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveCAuZWxlbWVudG9yLWljb24tYm94LXRpdGxlIGEgewogICAgY29sb3I6IGluaGVyaXQKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC1jb250ZW50IHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMQp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveCAuZWxlbWVudG9yLWljb24tYm94LWRlc2NyaXB0aW9uIHsKICAgIG1hcmdpbjogMAp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItaWNvbi1saXN0LS1sYXlvdXQtaW5saW5lIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3Itd2lkZ2V0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgbWFyZ2luLXJpZ2h0OiAtOHB4OwogICAgbWFyZ2luLWxlZnQ6IC04cHgKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgbWFyZ2luLWxlZnQ6IDhweAp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgd2lkdGg6IGF1dG87CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IGF1dG87CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLWJvdHRvbTogMDsKICAgIGJvcmRlci1yaWdodDogMDsKICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgcmlnaHQ6IC04cHgKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMAp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBmb250LXNpemU6IGluaGVyaXQKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbisuZWxlbWVudG9yLWljb24tbGlzdC10ZXh0IHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgIHBhZGRpbmctbGVmdDogNXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24gewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXgKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiBzdmcgewogICAgd2lkdGg6IHZhcigtLWUtaWNvbi1saXN0LWljb24tc2l6ZSwgMWVtKTsKICAgIGhlaWdodDogdmFyKC0tZS1pY29uLWxpc3QtaWNvbi1zaXplLCAxZW0pCn0KCi5lbGVtZW50b3Itd2lkZ2V0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24gaSB7CiAgICB3aWR0aDogMS4yNWVtOwogICAgZm9udC1zaXplOiB2YXIoLS1lLWljb24tbGlzdC1pY29uLXNpemUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRnZXQtaWNvbi1saXN0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24gewogICAgdGV4dC1hbGlnbjogdmFyKC0tZS1pY29uLWxpc3QtaWNvbi1hbGlnbikKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiBzdmcgewogICAgbWFyZ2luOiB2YXIoLS1lLWljb24tbGlzdC1pY29uLW1hcmdpbiwgMCBjYWxjKHZhcigtLWUtaWNvbi1saXN0LWljb24tc2l6ZSwgMWVtKSAqIC4yNSkgMCAwKQp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbGlzdC1pdGVtLWxpbmstZnVsbF93aWR0aCBhIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgIG1hcmdpbjogYXV0bwp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tbGVmdCAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICBsZWZ0OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLWFsaWduLWxlZnQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgcmlnaHQ6IDAKfQoKQG1lZGlhIChtaW4td2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tcmlnaHQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIGxlZnQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tbGVmdCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgcmlnaHQ6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLXJpZ2h0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBsZWZ0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgcmlnaHQ6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBsZWZ0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgcmlnaHQ6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBtYXJnaW46IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXQtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWxlZnQgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tcmlnaHQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIGxlZnQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXRhYmxldC1hbGlnbi1sZWZ0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICByaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBtYXJnaW46IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIGxlZnQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICByaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLXJpZ2h0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBsZWZ0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tbGVmdCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgcmlnaHQ6IDAKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UgewogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWltYWdlIGEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWltYWdlIGEgaW1nW3NyYyQ9Ii5zdmciXSB7CiAgICB3aWR0aDogNDhweAp9CgouZWxlbWVudG9yLXdpZGdldC1pbWFnZSBpbWcgewogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCB7CiAgICB3aWR0aDogMTAwJQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgewogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGZsZXgKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3cKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXZlcnRpY2FsLWFsaWduLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIHsKICAgICAgICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXZlcnRpY2FsLWFsaWduLW1pZGRsZSAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIHsKICAgICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci12ZXJ0aWNhbC1hbGlnbi1ib3R0b20gLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4CiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSBhIHsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgbWFyZ2luOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWNhcm91c2VsIC5zd2lwZXItY29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiBzdGF0aWMKfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtY2Fyb3VzZWwgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1zbGlkZSBmaWd1cmUgewogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtY2Fyb3VzZWwgLnN3aXBlci1zbGlkZSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1pbWFnZS1jYXJvdXNlbC13cmFwcGVyOm5vdCguc3dpcGVyLWNvbnRhaW5lci1pbml0aWFsaXplZCkgLnN3aXBlci1zbGlkZSB7CiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAvIHZhcigtLWUtaW1hZ2UtY2Fyb3VzZWwtc2xpZGVzLXRvLXNob3csIDMpKQp9Cgpib2R5LmVsZW1lbnRvci1wYWdlIC5lbGVtZW50b3Itd2lkZ2V0LW1lbnUtYW5jaG9yIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtcHJvZ3Jlc3MgewogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLXByb2dyZXNzLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIGNvbG9yOiAjZmZmOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogMnB4Cn0KCi5lbGVtZW50b3ItcHJvZ3Jlc3MtYmFyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzgxOGE5MTsKICAgIHdpZHRoOiAwOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IHdpZHRoIDFzIGVhc2UtaW4tb3V0OwogICAgLW8tdHJhbnNpdGlvbjogd2lkdGggMXMgZWFzZS1pbi1vdXQ7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAxcyBlYXNlLWluLW91dAp9CgouZWxlbWVudG9yLXByb2dyZXNzLXRleHQgewogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIC1vLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZy1sZWZ0OiAxNXB4Cn0KCi5lbGVtZW50b3ItcHJvZ3Jlc3MtcGVyY2VudGFnZSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXByb2dyZXNzIC5lbGVtZW50b3ItcHJvZ3Jlc3Mtd3JhcHBlci5wcm9ncmVzcy1pbmZvIC5lbGVtZW50b3ItcHJvZ3Jlc3MtYmFyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1YmMwZGUKfQoKLmVsZW1lbnRvci13aWRnZXQtcHJvZ3Jlc3MgLmVsZW1lbnRvci1wcm9ncmVzcy13cmFwcGVyLnByb2dyZXNzLXN1Y2Nlc3MgLmVsZW1lbnRvci1wcm9ncmVzcy1iYXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouZWxlbWVudG9yLXdpZGdldC1wcm9ncmVzcyAuZWxlbWVudG9yLXByb2dyZXNzLXdyYXBwZXIucHJvZ3Jlc3Mtd2FybmluZyAuZWxlbWVudG9yLXByb2dyZXNzLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXByb2dyZXNzIC5lbGVtZW50b3ItcHJvZ3Jlc3Mtd3JhcHBlci5wcm9ncmVzcy1kYW5nZXIgLmVsZW1lbnRvci1wcm9ncmVzcy1iYXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5NTM0Zgp9CgouZWxlbWVudG9yLXByb2dyZXNzIC5lbGVtZW50b3ItdGl0bGUgewogICAgZGlzcGxheTogYmxvY2sKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItcHJvZ3Jlc3MtdGV4dCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4CiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lbGVtZW50b3ItZ3JpZC0wIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciwKLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0wIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciwKLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmVsZW1lbnRvci1ncmlkLXRhYmxldC0wIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGZvbnQtc2l6ZTogMAp9CgouZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnM6bm90KC5lbGVtZW50b3ItZ3JpZC0wKTpub3QoLmVsZW1lbnRvci1ncmlkLXRhYmxldC0wKTpub3QoLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0wKSAuZWxlbWVudG9yLWdyaWQgewogICAgZGlzcGxheTogaW5saW5lLWdyaWQKfQoKLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICBncmlkLWNvbHVtbi1nYXA6IHZhcigtLWdyaWQtY29sdW1uLWdhcCwgNXB4KTsKICAgIGdyaWQtcm93LWdhcDogdmFyKC0tZ3JpZC1yb3ctZ2FwLCA1cHgpOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1ncmlkLXRlbXBsYXRlLWNvbHVtbnMpOwogICAgLXdlYmtpdC1ib3gtcGFjazogdmFyKC0tanVzdGlmeS1jb250ZW50LCBjZW50ZXIpOwogICAgLW1zLWZsZXgtcGFjazogdmFyKC0tanVzdGlmeS1jb250ZW50LCBjZW50ZXIpOwogICAganVzdGlmeS1jb250ZW50OiB2YXIoLS1qdXN0aWZ5LWNvbnRlbnQsIGNlbnRlcik7CiAgICBqdXN0aWZ5LWl0ZW1zOiB2YXIoLS1qdXN0aWZ5LWNvbnRlbnQsIGNlbnRlcikKfQoKLmVsZW1lbnRvci1pY29uLmVsZW1lbnRvci1zb2NpYWwtaWNvbiB7CiAgICBmb250LXNpemU6IHZhcigtLWljb24tc2l6ZSwgMjVweCk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0taWNvbi1zaXplLCAyNXB4KTsKICAgIHdpZHRoOiBjYWxjKHZhcigtLWljb24tc2l6ZSwgMjVweCkgKyAoMiAqIHZhcigtLWljb24tcGFkZGluZywgLjVlbSkpKTsKICAgIGhlaWdodDogY2FsYyh2YXIoLS1pY29uLXNpemUsIDI1cHgpICsgKDIgKiB2YXIoLS1pY29uLXBhZGRpbmcsIC41ZW0pKSkKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbiB7CiAgICAtLWUtc29jaWFsLWljb24taWNvbi1jb2xvcjogI2ZmZjsKICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDsKICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzgxOGE5MTsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY3Vyc29yOiBwb2ludGVyCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24gaSB7CiAgICBjb2xvcjogdmFyKC0tZS1zb2NpYWwtaWNvbi1pY29uLWNvbG9yKQp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1lLXNvY2lhbC1pY29uLWljb24tY29sb3IpCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb246bGFzdC1jaGlsZCB7CiAgICBtYXJnaW46IDAKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbjpob3ZlciB7CiAgICBvcGFjaXR5OiAuOTsKICAgIGNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tYW5kcm9pZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTRjNjM5Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tYXBwbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OQp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLWJlaGFuY2UgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzE3NjlmZgp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLWJpdGJ1Y2tldCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjA1MDgxCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tY29kZXBlbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tZGVsaWNpb3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzOWYKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1kZXZpYW50YXJ0IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwNWNjNDcKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1kaWdnIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDViZTIKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1kcmliYmJsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWE0Yzg5Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tZWxlbWVudG9yIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkMzBjNWMKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1lbnZlbG9wZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWE0MzM1Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tZmFjZWJvb2ssCi5lbGVtZW50b3Itc29jaWFsLWljb24tZmFjZWJvb2stZiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2I1OTk4Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tZmxpY2tyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDYzZGMKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1mb3Vyc3F1YXJlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDViZTMKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1mcmVlLWNvZGUtY2FtcCwKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1mcmVlY29kZWNhbXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjQwMAp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLWdpdGh1YiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tZ2l0bGFiIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlMjQzMjkKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1nbG9iZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODE4YTkxCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tZ29vZ2xlLXBsdXMsCi5lbGVtZW50b3Itc29jaWFsLWljb24tZ29vZ2xlLXBsdXMtZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQ0YjM5Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24taG91enogewogICAgYmFja2dyb3VuZC1jb2xvcjogIzdhYzE0Mgp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLWluc3RhZ3JhbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tanNmaWRkbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzQ4N2FhMgp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLWxpbmsgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzgxOGE5MQp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLWxpbmtlZGluLAouZWxlbWVudG9yLXNvY2lhbC1pY29uLWxpbmtlZGluLWluIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDc3YjUKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1tZWRpdW0gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwYWI2Ygp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLW1lZXR1cCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWMxYzQwCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tbWl4Y2xvdWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI3M2E0Ygp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLW9kbm9rbGFzc25pa2kgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NzMxYwp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLXBpbnRlcmVzdCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQwODFjCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tcHJvZHVjdC1odW50IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkYTU1MmYKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1yZWRkaXQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDUwMAp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLXJzcyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjI2NTIyCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tc2hvcHBpbmctY2FydCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGNhZjUwCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tc2t5cGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwYWZmMAp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLXNsaWRlc2hhcmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNzdiNQp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLXNuYXBjaGF0IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZjMDAKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1zb3VuZGNsb3VkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmODAKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1zcG90aWZ5IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyZWJkNTkKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1zdGFjay1vdmVyZmxvdyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU3YTE1Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tc3RlYW0gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwYWRlZQp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLXN0dW1ibGV1cG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYjQ5MjQKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi10ZWxlZ3JhbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmNhNWUwCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tdGh1bWItdGFjayB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWFhMWQ4Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tdHJpcGFkdmlzb3IgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzU4OTQ0Mgp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLXR1bWJsciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzU0NjVjCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tdHdpdGNoIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM2NDQxYTUKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi10d2l0dGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxZGExZjIKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi12aWJlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY1Y2FjCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24tdmltZW8gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFhYjdlYQp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uLXZrIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0NTY2OGUKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi13ZWlibyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQyNDMwCn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24td2VpeGluIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMWE5MTgKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi13aGF0c2FwcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjVkMzY2Cn0KCi5lbGVtZW50b3Itc29jaWFsLWljb24td29yZHByZXNzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTc1OWIKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi14aW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMjY0NjYKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi15ZWxwIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNhZjA2MDYKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi15b3V0dWJlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjZDIwMWYKfQoKLmVsZW1lbnRvci1zb2NpYWwtaWNvbi01MDBweCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5OWU1Cn0KCi5lbGVtZW50b3Itc2hhcGUtcm91bmRlZCAuZWxlbWVudG9yLWljb24uZWxlbWVudG9yLXNvY2lhbC1pY29uIHsKICAgIGJvcmRlci1yYWRpdXM6IDEwJQp9CgouZWxlbWVudG9yLXNoYXBlLWNpcmNsZSAuZWxlbWVudG9yLWljb24uZWxlbWVudG9yLXNvY2lhbC1pY29uIHsKICAgIGJvcmRlci1yYWRpdXM6IDUwJQp9CgouZS1jb250YWluZXIuZS1jb250YWluZXItLXJvdyAuZWxlbWVudG9yLXNwYWNlci1pbm5lciB7CiAgICB3aWR0aDogdmFyKC0tc3BhY2VyLXNpemUpCn0KCi5lLWNvbnRhaW5lci5lLWNvbnRhaW5lci0tY29sdW1uIC5lbGVtZW50b3Itc3BhY2VyLWlubmVyLAouZWxlbWVudG9yLWNvbHVtbiAuZWxlbWVudG9yLXNwYWNlci1pbm5lciB7CiAgICBoZWlnaHQ6IHZhcigtLXNwYWNlci1zaXplKQp9CgouZWxlbWVudG9yLXN0YXItcmF0aW5nIHsKICAgIGNvbG9yOiAjY2NkNmRmOwogICAgZm9udC1mYW1pbHk6IGVpY29uczsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZWxlbWVudG9yLXN0YXItcmF0aW5nIGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgY3Vyc29yOiBkZWZhdWx0Cn0KCi5lbGVtZW50b3Itc3Rhci1yYXRpbmcgaTpiZWZvcmUgewogICAgY29udGVudDogIlxlOTM0IjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY29sb3I6ICNmMGFkNGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwCn0KCi5lbGVtZW50b3Itc3Rhci1yYXRpbmcgLmVsZW1lbnRvci1zdGFyLWVtcHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiBub25lCn0KCi5lbGVtZW50b3Itc3Rhci1yYXRpbmcgLmVsZW1lbnRvci1zdGFyLTE6YmVmb3JlIHsKICAgIHdpZHRoOiAxMCUKfQoKLmVsZW1lbnRvci1zdGFyLXJhdGluZyAuZWxlbWVudG9yLXN0YXItMjpiZWZvcmUgewogICAgd2lkdGg6IDIwJQp9CgouZWxlbWVudG9yLXN0YXItcmF0aW5nIC5lbGVtZW50b3Itc3Rhci0zOmJlZm9yZSB7CiAgICB3aWR0aDogMzAlCn0KCi5lbGVtZW50b3Itc3Rhci1yYXRpbmcgLmVsZW1lbnRvci1zdGFyLTQ6YmVmb3JlIHsKICAgIHdpZHRoOiA0MCUKfQoKLmVsZW1lbnRvci1zdGFyLXJhdGluZyAuZWxlbWVudG9yLXN0YXItNTpiZWZvcmUgewogICAgd2lkdGg6IDUwJQp9CgouZWxlbWVudG9yLXN0YXItcmF0aW5nIC5lbGVtZW50b3Itc3Rhci02OmJlZm9yZSB7CiAgICB3aWR0aDogNjAlCn0KCi5lbGVtZW50b3Itc3Rhci1yYXRpbmcgLmVsZW1lbnRvci1zdGFyLTc6YmVmb3JlIHsKICAgIHdpZHRoOiA3MCUKfQoKLmVsZW1lbnRvci1zdGFyLXJhdGluZyAuZWxlbWVudG9yLXN0YXItODpiZWZvcmUgewogICAgd2lkdGg6IDgwJQp9CgouZWxlbWVudG9yLXN0YXItcmF0aW5nIC5lbGVtZW50b3Itc3Rhci05OmJlZm9yZSB7CiAgICB3aWR0aDogOTAlCn0KCi5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3dyYXBwZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1zdGFyLXJhdGluZ19fdGl0bGUgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Cn0KCi5lbGVtZW50b3Itc3Rhci1yYXRpbmctLWFsaWduLXJpZ2h0IC5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3dyYXBwZXIgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5lbGVtZW50b3Itc3Rhci1yYXRpbmctLWFsaWduLWxlZnQgLmVsZW1lbnRvci1zdGFyLXJhdGluZ19fd3JhcHBlciB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAp9CgouZWxlbWVudG9yLXN0YXItcmF0aW5nLS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1zdGFyLXJhdGluZ19fd3JhcHBlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZWxlbWVudG9yLXN0YXItcmF0aW5nLS1hbGlnbi1qdXN0aWZ5IC5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3RpdGxlIHsKICAgIG1hcmdpbi1yaWdodDogYXV0bwp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3Itc3Rhci1yYXRpbmctdGFibGV0LS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLXN0YXItcmF0aW5nX193cmFwcGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKICAgIH0KICAgIC5lbGVtZW50b3Itc3Rhci1yYXRpbmctdGFibGV0LS1hbGlnbi1sZWZ0IC5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3dyYXBwZXIgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXN0YXItcmF0aW5nLXRhYmxldC0tYWxpZ24tY2VudGVyIC5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3dyYXBwZXIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXN0YXItcmF0aW5nLXRhYmxldC0tYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLXN0YXItcmF0aW5nX190aXRsZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLXN0YXItcmF0aW5nLW1vYmlsZS0tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1zdGFyLXJhdGluZ19fd3JhcHBlciB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXN0YXItcmF0aW5nLW1vYmlsZS0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLXN0YXItcmF0aW5nX193cmFwcGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci1zdGFyLXJhdGluZy1tb2JpbGUtLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLXN0YXItcmF0aW5nX193cmFwcGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci1zdGFyLXJhdGluZy1tb2JpbGUtLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1zdGFyLXJhdGluZ19fdGl0bGUgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bwogICAgfQp9CgoubGFzdC1zdGFyIHsKICAgIGxldHRlci1zcGFjaW5nOiAwCn0KCi5lbGVtZW50b3ItLXN0YXItc3R5bGUtc3Rhcl91bmljb2RlIC5lbGVtZW50b3Itc3Rhci1yYXRpbmcgewogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYKfQoKLmVsZW1lbnRvci0tc3Rhci1zdHlsZS1zdGFyX3VuaWNvZGUgLmVsZW1lbnRvci1zdGFyLXJhdGluZyBpOm5vdCguZWxlbWVudG9yLXN0YXItZW1wdHkpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDAwMjYwNSIKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicy5lbGVtZW50b3ItdGFicy12aWV3LXZlcnRpY2FsIC5lbGVtZW50b3ItdGFicy13cmFwcGVyIHsKICAgIHdpZHRoOiAyNSU7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMDsKICAgIGZsZXgtc2hyaW5rOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMuZWxlbWVudG9yLXRhYnMtdmlldy12ZXJ0aWNhbCAuZWxlbWVudG9yLXRhYi1kZXNrdG9wLXRpdGxlLmVsZW1lbnRvci1hY3RpdmUgewogICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMuZWxlbWVudG9yLXRhYnMtdmlldy12ZXJ0aWNhbCAuZWxlbWVudG9yLXRhYi1kZXNrdG9wLXRpdGxlLmVsZW1lbnRvci1hY3RpdmU6YWZ0ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMuZWxlbWVudG9yLXRhYnMtdmlldy12ZXJ0aWNhbCAuZWxlbWVudG9yLXRhYi1kZXNrdG9wLXRpdGxlLmVsZW1lbnRvci1hY3RpdmU6YmVmb3JlIHsKICAgIGhlaWdodDogOTk5ZW07CiAgICB3aWR0aDogMDsKICAgIHJpZ2h0OiAwOwogICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZAp9CgouZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLXZpZXctdmVydGljYWwgLmVsZW1lbnRvci10YWItZGVza3RvcC10aXRsZS5lbGVtZW50b3ItYWN0aXZlOmJlZm9yZSB7CiAgICB0b3A6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSkKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicy5lbGVtZW50b3ItdGFicy12aWV3LXZlcnRpY2FsIC5lbGVtZW50b3ItdGFiLWRlc2t0b3AtdGl0bGUuZWxlbWVudG9yLWFjdGl2ZTphZnRlciB7CiAgICB0b3A6IDEwMCUKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicy5lbGVtZW50b3ItdGFicy12aWV3LWhvcml6b250YWwgLmVsZW1lbnRvci10YWItZGVza3RvcC10aXRsZSB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMuZWxlbWVudG9yLXRhYnMtdmlldy1ob3Jpem9udGFsIC5lbGVtZW50b3ItdGFiLWRlc2t0b3AtdGl0bGUuZWxlbWVudG9yLWFjdGl2ZSB7CiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMuZWxlbWVudG9yLXRhYnMtdmlldy1ob3Jpem9udGFsIC5lbGVtZW50b3ItdGFiLWRlc2t0b3AtdGl0bGUuZWxlbWVudG9yLWFjdGl2ZTphZnRlciwKLmVsZW1lbnRvci13aWRnZXQtdGFicy5lbGVtZW50b3ItdGFicy12aWV3LWhvcml6b250YWwgLmVsZW1lbnRvci10YWItZGVza3RvcC10aXRsZS5lbGVtZW50b3ItYWN0aXZlOmJlZm9yZSB7CiAgICBib3R0b206IDA7CiAgICBoZWlnaHQ6IDA7CiAgICB3aWR0aDogOTk5ZW07CiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZAp9CgouZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLXZpZXctaG9yaXpvbnRhbCAuZWxlbWVudG9yLXRhYi1kZXNrdG9wLXRpdGxlLmVsZW1lbnRvci1hY3RpdmU6YmVmb3JlIHsKICAgIHJpZ2h0OiAxMDAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMuZWxlbWVudG9yLXRhYnMtdmlldy1ob3Jpem9udGFsIC5lbGVtZW50b3ItdGFiLWRlc2t0b3AtdGl0bGUuZWxlbWVudG9yLWFjdGl2ZTphZnRlciB7CiAgICBsZWZ0OiAxMDAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWItY29udGVudCwKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZTphZnRlciwKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWJzLWNvbnRlbnQtd3JhcHBlciB7CiAgICBib3JkZXI6IDFweCAjZDRkNGQ0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWJzIHsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYnMtd3JhcHBlciB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWItdGl0bGUgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3V0bGluZTogdmFyKC0tZm9jdXMtb3V0bGluZSwgbm9uZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi1kZXNrdG9wLXRpdGxlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHBhZGRpbmc6IDIwcHggMjVweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi1kZXNrdG9wLXRpdGxlLmVsZW1lbnRvci1hY3RpdmUgewogICAgYm9yZGVyLWNvbG9yOiAjZDRkNGQ0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWItZGVza3RvcC10aXRsZS5lbGVtZW50b3ItYWN0aXZlOmFmdGVyLAouZWxlbWVudG9yLXdpZGdldC10YWJzIC5lbGVtZW50b3ItdGFiLWRlc2t0b3AtdGl0bGUuZWxlbWVudG9yLWFjdGl2ZTpiZWZvcmUgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb250ZW50OiAiIjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQp9CgouZWxlbWVudG9yLXdpZGdldC10YWJzIC5lbGVtZW50b3ItdGFiLW1vYmlsZS10aXRsZSB7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgY3Vyc29yOiBwb2ludGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWItY29udGVudCB7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgZGlzcGxheTogbm9uZQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci10YWJzIC5lbGVtZW50b3ItdGFiLWNvbnRlbnQsCiAgICAuZWxlbWVudG9yLXRhYnMgLmVsZW1lbnRvci10YWItdGl0bGUgewogICAgICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZQogICAgfQogICAgLmVsZW1lbnRvci10YWJzIC5lbGVtZW50b3ItdGFicy13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYnMgLmVsZW1lbnRvci10YWJzLWNvbnRlbnQtd3JhcHBlciB7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQKICAgIH0KICAgIC5lbGVtZW50b3ItdGFicyAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgICAgICBwYWRkaW5nOiAxMHB4CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLXZpZXctdmVydGljYWwgLmVsZW1lbnRvci10YWJzIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBmbGV4CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLXZpZXctdmVydGljYWwgLmVsZW1lbnRvci10YWJzLXdyYXBwZXIgewogICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdGFicy5lbGVtZW50b3ItdGFicy12aWV3LXZlcnRpY2FsIC5lbGVtZW50b3ItdGFicy1jb250ZW50LXdyYXBwZXIgewogICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgc29saWQgbm9uZQogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdGFicy5lbGVtZW50b3ItdGFicy12aWV3LWhvcml6b250YWwgLmVsZW1lbnRvci10YWItY29udGVudCB7CiAgICAgICAgYm9yZGVyLXN0eWxlOiBub25lIHNvbGlkIHNvbGlkCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLWFsaWdubWVudC1jZW50ZXIgLmVsZW1lbnRvci10YWJzLXdyYXBwZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLWFsaWdubWVudC1lbmQgLmVsZW1lbnRvci10YWJzLXdyYXBwZXIsCiAgICAuZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLWFsaWdubWVudC1zdHJldGNoIC5lbGVtZW50b3ItdGFicy13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBmbGV4CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLWFsaWdubWVudC1jZW50ZXIgLmVsZW1lbnRvci10YWJzLXdyYXBwZXIgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRhYnMuZWxlbWVudG9yLXRhYnMtYWxpZ25tZW50LWVuZCAuZWxlbWVudG9yLXRhYnMtd3JhcHBlciB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC10YWJzLmVsZW1lbnRvci10YWJzLWFsaWdubWVudC1zdHJldGNoLmVsZW1lbnRvci10YWJzLXZpZXctaG9yaXpvbnRhbCAuZWxlbWVudG9yLXRhYi10aXRsZSB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRhYnMuZWxlbWVudG9yLXRhYnMtYWxpZ25tZW50LXN0cmV0Y2guZWxlbWVudG9yLXRhYnMtdmlldy12ZXJ0aWNhbCAuZWxlbWVudG9yLXRhYi10aXRsZSB7CiAgICAgICAgaGVpZ2h0OiAxMDAlCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYnMgLmVsZW1lbnRvci10YWItbW9iaWxlLXRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtd3JhcHBlciB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5lbGVtZW50b3ItdGVzdGltb25pYWwtd3JhcHBlciAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLWNvbnRlbnQgewogICAgZm9udC1zaXplOiAxLjNlbTsKICAgIG1hcmdpbi1ib3R0b206IDIwcHgKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC13cmFwcGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwtbmFtZSB7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgZGlzcGxheTogYmxvY2sKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC13cmFwcGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwtam9iIHsKICAgIGZvbnQtc2l6ZTogLjg1ZW07CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLXdyYXBwZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC1tZXRhIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC13cmFwcGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwtbWV0YS1pbm5lciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC13cmFwcGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwtbWV0YSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLWRldGFpbHMsCi5lbGVtZW50b3ItdGVzdGltb25pYWwtd3JhcHBlciAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLW1ldGEgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC1pbWFnZSB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLXdyYXBwZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC1tZXRhIC5lbGVtZW50b3ItdGVzdGltb25pYWwtaW1hZ2UgaW1nIHsKICAgIHdpZHRoOiA2MHB4OwogICAgaGVpZ2h0OiA2MHB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tb2JqZWN0LWZpdDogY292ZXI7CiAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgIG1heC13aWR0aDogbm9uZQp9CgouZWxlbWVudG9yLXRlc3RpbW9uaWFsLXdyYXBwZXIgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC1tZXRhLmVsZW1lbnRvci10ZXN0aW1vbmlhbC1pbWFnZS1wb3NpdGlvbi1hc2lkZSAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLWltYWdlIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHgKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC13cmFwcGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwtbWV0YS5lbGVtZW50b3ItdGVzdGltb25pYWwtaW1hZ2UtcG9zaXRpb24tYXNpZGUgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC1kZXRhaWxzIHsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC13cmFwcGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwtbWV0YS5lbGVtZW50b3ItdGVzdGltb25pYWwtaW1hZ2UtcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItdGVzdGltb25pYWwtZGV0YWlscywKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC13cmFwcGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwtbWV0YS5lbGVtZW50b3ItdGVzdGltb25pYWwtaW1hZ2UtcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItdGVzdGltb25pYWwtaW1hZ2UgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmVsZW1lbnRvci10ZXN0aW1vbmlhbC13cmFwcGVyIC5lbGVtZW50b3ItdGVzdGltb25pYWwtbWV0YS5lbGVtZW50b3ItdGVzdGltb25pYWwtaW1hZ2UtcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItdGVzdGltb25pYWwtaW1hZ2UgewogICAgbWFyZ2luLWJvdHRvbTogMjBweAp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvci5lbGVtZW50b3ItZHJvcC1jYXAtdmlldy1zdGFja2VkIC5lbGVtZW50b3ItZHJvcC1jYXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzgxOGE5MTsKICAgIGNvbG9yOiAjZmZmCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yLmVsZW1lbnRvci1kcm9wLWNhcC12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWRyb3AtY2FwIHsKICAgIGNvbG9yOiAjODE4YTkxOwogICAgYm9yZGVyOiAzcHggc29saWQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvcjpub3QoLmVsZW1lbnRvci1kcm9wLWNhcC12aWV3LWRlZmF1bHQpIC5lbGVtZW50b3ItZHJvcC1jYXAgewogICAgbWFyZ2luLXRvcDogOHB4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yOm5vdCguZWxlbWVudG9yLWRyb3AtY2FwLXZpZXctZGVmYXVsdCkgLmVsZW1lbnRvci1kcm9wLWNhcC1sZXR0ZXIgewogICAgd2lkdGg6IDFlbTsKICAgIGhlaWdodDogMWVtCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIC5lbGVtZW50b3ItZHJvcC1jYXAgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGZvbnQtc2l6ZTogNTBweAp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciAuZWxlbWVudG9yLWRyb3AtY2FwLWxldHRlciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKLmVsZW1lbnRvci10b2dnbGUgewogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLXRvZ2dsZSAuZWxlbWVudG9yLXRhYi10aXRsZSB7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkNGQ0ZDQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBvdXRsaW5lOiBub25lCn0KCi5lbGVtZW50b3ItdG9nZ2xlIC5lbGVtZW50b3ItdGFiLXRpdGxlIC5lbGVtZW50b3ItdG9nZ2xlLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDFlbQp9CgouZWxlbWVudG9yLXRvZ2dsZSAuZWxlbWVudG9yLXRhYi10aXRsZSAuZWxlbWVudG9yLXRvZ2dsZS1pY29uIHN2ZyB7CiAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogLTVweDsKICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IC01cHg7CiAgICB3aWR0aDogMWVtOwogICAgaGVpZ2h0OiAxZW0KfQoKLmVsZW1lbnRvci10b2dnbGUgLmVsZW1lbnRvci10YWItdGl0bGUgLmVsZW1lbnRvci10b2dnbGUtaWNvbi5lbGVtZW50b3ItdG9nZ2xlLWljb24tcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLmVsZW1lbnRvci10b2dnbGUgLmVsZW1lbnRvci10YWItdGl0bGUgLmVsZW1lbnRvci10b2dnbGUtaWNvbi5lbGVtZW50b3ItdG9nZ2xlLWljb24tbGVmdCB7CiAgICBmbG9hdDogbGVmdDsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci10b2dnbGUgLmVsZW1lbnRvci10YWItdGl0bGUgLmVsZW1lbnRvci10b2dnbGUtaWNvbiAuZWxlbWVudG9yLXRvZ2dsZS1pY29uLWNsb3NlZCB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZWxlbWVudG9yLXRvZ2dsZSAuZWxlbWVudG9yLXRhYi10aXRsZSAuZWxlbWVudG9yLXRvZ2dsZS1pY29uIC5lbGVtZW50b3ItdG9nZ2xlLWljb24tb3BlbmVkIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci10b2dnbGUgLmVsZW1lbnRvci10YWItdGl0bGUuZWxlbWVudG9yLWFjdGl2ZSB7CiAgICBib3JkZXItYm90dG9tOiBub25lCn0KCi5lbGVtZW50b3ItdG9nZ2xlIC5lbGVtZW50b3ItdGFiLXRpdGxlLmVsZW1lbnRvci1hY3RpdmUgLmVsZW1lbnRvci10b2dnbGUtaWNvbi1jbG9zZWQgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXRvZ2dsZSAuZWxlbWVudG9yLXRhYi10aXRsZS5lbGVtZW50b3ItYWN0aXZlIC5lbGVtZW50b3ItdG9nZ2xlLWljb24tb3BlbmVkIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3ItdG9nZ2xlIC5lbGVtZW50b3ItdGFiLWNvbnRlbnQgewogICAgcGFkZGluZzogMTVweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDRkNGQ0OwogICAgZGlzcGxheTogbm9uZQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci10b2dnbGUgLmVsZW1lbnRvci10YWItdGl0bGUgewogICAgICAgIHBhZGRpbmc6IDEycHgKICAgIH0KICAgIC5lbGVtZW50b3ItdG9nZ2xlIC5lbGVtZW50b3ItdGFiLWNvbnRlbnQgewogICAgICAgIHBhZGRpbmc6IDEycHggMTBweAogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlbyAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvIC5lbGVtZW50b3Itb3Blbi1pbmxpbmUgLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtaW1hZ2Utb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvIC5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLWltYWdlLW92ZXJsYXkgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvIC5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLWltYWdlLW92ZXJsYXk6aG92ZXIgLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtcGxheSBpIHsKICAgIG9wYWNpdHk6IDEKfQoKLmVsZW1lbnRvci13aWRnZXQtdmlkZW8gLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtaW1hZ2Utb3ZlcmxheSBpbWcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC12aWRlbyAuZS1ob3N0ZWQtdmlkZW8gLmVsZW1lbnRvci12aWRlbyB7CiAgICAtby1vYmplY3QtZml0OiBjb3ZlcjsKICAgIG9iamVjdC1maXQ6IGNvdmVyCn0="}},"time_used":740,"timings":{"blocked":278,"dns":0,"connect":0,"send":0,"wait":187,"receive":275,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/bootstrap.css?ver=3.2.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.306Z","timestamp":1785145482306,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/bootstrap.css?ver=3.2.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 182940\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":182940,"size_decoded":183151,"mime_type":"text/css","magic":"ASCII text, with very long lines (360)","md5":"3b503ae068af467e32a6f3a061f7c018","sha1":"d21e15c5c2793cd853e35451acae0e4a097565e1","sha256":"b08fc478c032cf21e281c24c1834fd45b528bbd945eab521a83c1b62485583db","sha512":"316fcc2bfd42aa688072e6f61253e756af7d051c94ee8afeaee18aee182f035bae80d3e90ace541999e0800c91bc74ad5db22bda9270716616fc188f849d437c","ssdeep":"3072:GAc3S825bcBGFoR6EyGWZZWepVIaTaoOla0dBOgph4TITa:uBcoR6EyGWZZWepVIaTaoOla0dBOgpho","tlshash":"d0044342baf32cc4612f80d596eff6a17b2d60c3964ecd7ab74d3258cf446994172e88","first_seen":"2026-07-27T08:06:56.578569Z","last_seen":"2026-07-27T09:45:50.942495Z","times_seen":3,"resource_available":false,"data":"LyohCiAqIEJvb3RzdHJhcCB2My4yLjAKICoKICogQ29weXJpZ2h0IDIwMTMgVHdpdHRlciwgSW5jCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBEZXNpZ25lZCBhbmQgYnVpbHQgd2l0aCBhbGwgdGhlIGxvdmUgaW4gdGhlIHdvcmxkIGJ5IEBtZG8gYW5kIEBmYXQuCiAqLwoKLyoqCiogV2ViIEFwcGxpY2F0aW9uIFByZWZpeCBBcHBseSBGb3IgTWFraW5nIE93bmVyIFN0eWxlcwoqLwoKLyoqCiAqICAgQmxvY2tzIExheW91dCBTZWxlY3RvcnMKICovCgovKioqKioqKioqIExBWU9VVCAqKioqKioqKioqKioqKi8KCi8qIGNhcm91c2VsLWNvbnRyb2xzLXYxICovCgovKiBjYXJvdXNlbC1jb250cm9scy12MiAqLwoKLyogY2Fyb3VzZWwtY29udHJvbHMtdjMgKi8KCi8qKioqLwoKLm1hcmdpbi10b3AtMSB7CiAgICBtYXJnaW4tdG9wOiAxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTEgewogICAgbWFyZ2luLWxlZnQ6IDFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0xIHsKICAgIG1hcmdpbi1ib3R0b206IDFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTEgewogICAgbWFyZ2luLXJpZ2h0OiAxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMiB7CiAgICBtYXJnaW4tdG9wOiAycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTIgewogICAgbWFyZ2luLWxlZnQ6IDJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0yIHsKICAgIG1hcmdpbi1ib3R0b206IDJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTIgewogICAgbWFyZ2luLXJpZ2h0OiAycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMyB7CiAgICBtYXJnaW4tdG9wOiAzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTMgewogICAgbWFyZ2luLWxlZnQ6IDNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0zIHsKICAgIG1hcmdpbi1ib3R0b206IDNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTMgewogICAgbWFyZ2luLXJpZ2h0OiAzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNCB7CiAgICBtYXJnaW4tdG9wOiA0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTQgewogICAgbWFyZ2luLWxlZnQ6IDRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS00IHsKICAgIG1hcmdpbi1ib3R0b206IDRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTQgewogICAgbWFyZ2luLXJpZ2h0OiA0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNSB7CiAgICBtYXJnaW4tdG9wOiA1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTUgewogICAgbWFyZ2luLWxlZnQ6IDVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS01IHsKICAgIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTUgewogICAgbWFyZ2luLXJpZ2h0OiA1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNiB7CiAgICBtYXJnaW4tdG9wOiA2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTYgewogICAgbWFyZ2luLWxlZnQ6IDZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS02IHsKICAgIG1hcmdpbi1ib3R0b206IDZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTYgewogICAgbWFyZ2luLXJpZ2h0OiA2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNyB7CiAgICBtYXJnaW4tdG9wOiA3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTcgewogICAgbWFyZ2luLWxlZnQ6IDdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS03IHsKICAgIG1hcmdpbi1ib3R0b206IDdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTcgewogICAgbWFyZ2luLXJpZ2h0OiA3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtOCB7CiAgICBtYXJnaW4tdG9wOiA4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTggewogICAgbWFyZ2luLWxlZnQ6IDhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS04IHsKICAgIG1hcmdpbi1ib3R0b206IDhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTggewogICAgbWFyZ2luLXJpZ2h0OiA4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtOSB7CiAgICBtYXJnaW4tdG9wOiA5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTkgewogICAgbWFyZ2luLWxlZnQ6IDlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS05IHsKICAgIG1hcmdpbi1ib3R0b206IDlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTkgewogICAgbWFyZ2luLXJpZ2h0OiA5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMTAgewogICAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMTAgewogICAgbWFyZ2luLWxlZnQ6IDEwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMTAgewogICAgbWFyZ2luLWJvdHRvbTogMTBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTEwIHsKICAgIG1hcmdpbi1yaWdodDogMTBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0xMSB7CiAgICBtYXJnaW4tdG9wOiAxMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0xMSB7CiAgICBtYXJnaW4tbGVmdDogMTFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0xMSB7CiAgICBtYXJnaW4tYm90dG9tOiAxMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMTEgewogICAgbWFyZ2luLXJpZ2h0OiAxMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTEyIHsKICAgIG1hcmdpbi10b3A6IDEycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTEyIHsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTEyIHsKICAgIG1hcmdpbi1ib3R0b206IDEycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0xMiB7CiAgICBtYXJnaW4tcmlnaHQ6IDEycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMTMgewogICAgbWFyZ2luLXRvcDogMTNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMTMgewogICAgbWFyZ2luLWxlZnQ6IDEzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMTMgewogICAgbWFyZ2luLWJvdHRvbTogMTNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTEzIHsKICAgIG1hcmdpbi1yaWdodDogMTNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0xNCB7CiAgICBtYXJnaW4tdG9wOiAxNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0xNCB7CiAgICBtYXJnaW4tbGVmdDogMTRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0xNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMTQgewogICAgbWFyZ2luLXJpZ2h0OiAxNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTE1IHsKICAgIG1hcmdpbi10b3A6IDE1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTE1IHsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTE1IHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0xNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMTYgewogICAgbWFyZ2luLXRvcDogMTZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMTYgewogICAgbWFyZ2luLWxlZnQ6IDE2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMTYgewogICAgbWFyZ2luLWJvdHRvbTogMTZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTE2IHsKICAgIG1hcmdpbi1yaWdodDogMTZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0xNyB7CiAgICBtYXJnaW4tdG9wOiAxN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0xNyB7CiAgICBtYXJnaW4tbGVmdDogMTdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0xNyB7CiAgICBtYXJnaW4tYm90dG9tOiAxN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMTcgewogICAgbWFyZ2luLXJpZ2h0OiAxN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTE4IHsKICAgIG1hcmdpbi10b3A6IDE4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTE4IHsKICAgIG1hcmdpbi1sZWZ0OiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTE4IHsKICAgIG1hcmdpbi1ib3R0b206IDE4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0xOCB7CiAgICBtYXJnaW4tcmlnaHQ6IDE4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMTkgewogICAgbWFyZ2luLXRvcDogMTlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMTkgewogICAgbWFyZ2luLWxlZnQ6IDE5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMTkgewogICAgbWFyZ2luLWJvdHRvbTogMTlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTE5IHsKICAgIG1hcmdpbi1yaWdodDogMTlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0yMCB7CiAgICBtYXJnaW4tdG9wOiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0yMCB7CiAgICBtYXJnaW4tbGVmdDogMjBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0yMCB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMjAgewogICAgbWFyZ2luLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTIxIHsKICAgIG1hcmdpbi10b3A6IDIxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTIxIHsKICAgIG1hcmdpbi1sZWZ0OiAyMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTIxIHsKICAgIG1hcmdpbi1ib3R0b206IDIxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0yMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDIxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMjIgewogICAgbWFyZ2luLXRvcDogMjJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMjIgewogICAgbWFyZ2luLWxlZnQ6IDIycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMjIgewogICAgbWFyZ2luLWJvdHRvbTogMjJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTIyIHsKICAgIG1hcmdpbi1yaWdodDogMjJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0yMyB7CiAgICBtYXJnaW4tdG9wOiAyM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0yMyB7CiAgICBtYXJnaW4tbGVmdDogMjNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0yMyB7CiAgICBtYXJnaW4tYm90dG9tOiAyM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMjMgewogICAgbWFyZ2luLXJpZ2h0OiAyM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTI0IHsKICAgIG1hcmdpbi10b3A6IDI0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTI0IHsKICAgIG1hcmdpbi1sZWZ0OiAyNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTI0IHsKICAgIG1hcmdpbi1ib3R0b206IDI0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0yNCB7CiAgICBtYXJnaW4tcmlnaHQ6IDI0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMjUgewogICAgbWFyZ2luLXRvcDogMjVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMjUgewogICAgbWFyZ2luLWxlZnQ6IDI1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMjUgewogICAgbWFyZ2luLWJvdHRvbTogMjVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTI1IHsKICAgIG1hcmdpbi1yaWdodDogMjVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0yNiB7CiAgICBtYXJnaW4tdG9wOiAyNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0yNiB7CiAgICBtYXJnaW4tbGVmdDogMjZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0yNiB7CiAgICBtYXJnaW4tYm90dG9tOiAyNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMjYgewogICAgbWFyZ2luLXJpZ2h0OiAyNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTI3IHsKICAgIG1hcmdpbi10b3A6IDI3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTI3IHsKICAgIG1hcmdpbi1sZWZ0OiAyN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTI3IHsKICAgIG1hcmdpbi1ib3R0b206IDI3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0yNyB7CiAgICBtYXJnaW4tcmlnaHQ6IDI3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMjggewogICAgbWFyZ2luLXRvcDogMjhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMjggewogICAgbWFyZ2luLWxlZnQ6IDI4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMjggewogICAgbWFyZ2luLWJvdHRvbTogMjhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTI4IHsKICAgIG1hcmdpbi1yaWdodDogMjhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0yOSB7CiAgICBtYXJnaW4tdG9wOiAyOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0yOSB7CiAgICBtYXJnaW4tbGVmdDogMjlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0yOSB7CiAgICBtYXJnaW4tYm90dG9tOiAyOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMjkgewogICAgbWFyZ2luLXJpZ2h0OiAyOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTMwIHsKICAgIG1hcmdpbi10b3A6IDMwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTMwIHsKICAgIG1hcmdpbi1sZWZ0OiAzMHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTMwIHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0zMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDMwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMzEgewogICAgbWFyZ2luLXRvcDogMzFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMzEgewogICAgbWFyZ2luLWxlZnQ6IDMxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMzEgewogICAgbWFyZ2luLWJvdHRvbTogMzFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTMxIHsKICAgIG1hcmdpbi1yaWdodDogMzFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0zMiB7CiAgICBtYXJnaW4tdG9wOiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0zMiB7CiAgICBtYXJnaW4tbGVmdDogMzJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0zMiB7CiAgICBtYXJnaW4tYm90dG9tOiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMzIgewogICAgbWFyZ2luLXJpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTMzIHsKICAgIG1hcmdpbi10b3A6IDMzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTMzIHsKICAgIG1hcmdpbi1sZWZ0OiAzM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTMzIHsKICAgIG1hcmdpbi1ib3R0b206IDMzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0zMyB7CiAgICBtYXJnaW4tcmlnaHQ6IDMzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMzQgewogICAgbWFyZ2luLXRvcDogMzRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMzQgewogICAgbWFyZ2luLWxlZnQ6IDM0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMzQgewogICAgbWFyZ2luLWJvdHRvbTogMzRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTM0IHsKICAgIG1hcmdpbi1yaWdodDogMzRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0zNSB7CiAgICBtYXJnaW4tdG9wOiAzNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0zNSB7CiAgICBtYXJnaW4tbGVmdDogMzVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0zNSB7CiAgICBtYXJnaW4tYm90dG9tOiAzNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMzUgewogICAgbWFyZ2luLXJpZ2h0OiAzNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTM2IHsKICAgIG1hcmdpbi10b3A6IDM2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTM2IHsKICAgIG1hcmdpbi1sZWZ0OiAzNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTM2IHsKICAgIG1hcmdpbi1ib3R0b206IDM2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0zNiB7CiAgICBtYXJnaW4tcmlnaHQ6IDM2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMzcgewogICAgbWFyZ2luLXRvcDogMzdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMzcgewogICAgbWFyZ2luLWxlZnQ6IDM3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMzcgewogICAgbWFyZ2luLWJvdHRvbTogMzdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTM3IHsKICAgIG1hcmdpbi1yaWdodDogMzdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0zOCB7CiAgICBtYXJnaW4tdG9wOiAzOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0zOCB7CiAgICBtYXJnaW4tbGVmdDogMzhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0zOCB7CiAgICBtYXJnaW4tYm90dG9tOiAzOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMzggewogICAgbWFyZ2luLXJpZ2h0OiAzOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTM5IHsKICAgIG1hcmdpbi10b3A6IDM5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTM5IHsKICAgIG1hcmdpbi1sZWZ0OiAzOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTM5IHsKICAgIG1hcmdpbi1ib3R0b206IDM5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0zOSB7CiAgICBtYXJnaW4tcmlnaHQ6IDM5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNDAgewogICAgbWFyZ2luLXRvcDogNDBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNDAgewogICAgbWFyZ2luLWxlZnQ6IDQwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNDAgewogICAgbWFyZ2luLWJvdHRvbTogNDBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTQwIHsKICAgIG1hcmdpbi1yaWdodDogNDBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC00MSB7CiAgICBtYXJnaW4tdG9wOiA0MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC00MSB7CiAgICBtYXJnaW4tbGVmdDogNDFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS00MSB7CiAgICBtYXJnaW4tYm90dG9tOiA0MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNDEgewogICAgbWFyZ2luLXJpZ2h0OiA0MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTQyIHsKICAgIG1hcmdpbi10b3A6IDQycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTQyIHsKICAgIG1hcmdpbi1sZWZ0OiA0MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTQyIHsKICAgIG1hcmdpbi1ib3R0b206IDQycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC00MiB7CiAgICBtYXJnaW4tcmlnaHQ6IDQycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNDMgewogICAgbWFyZ2luLXRvcDogNDNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNDMgewogICAgbWFyZ2luLWxlZnQ6IDQzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNDMgewogICAgbWFyZ2luLWJvdHRvbTogNDNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTQzIHsKICAgIG1hcmdpbi1yaWdodDogNDNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC00NCB7CiAgICBtYXJnaW4tdG9wOiA0NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC00NCB7CiAgICBtYXJnaW4tbGVmdDogNDRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS00NCB7CiAgICBtYXJnaW4tYm90dG9tOiA0NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNDQgewogICAgbWFyZ2luLXJpZ2h0OiA0NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTQ1IHsKICAgIG1hcmdpbi10b3A6IDQ1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTQ1IHsKICAgIG1hcmdpbi1sZWZ0OiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTQ1IHsKICAgIG1hcmdpbi1ib3R0b206IDQ1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC00NSB7CiAgICBtYXJnaW4tcmlnaHQ6IDQ1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNDYgewogICAgbWFyZ2luLXRvcDogNDZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNDYgewogICAgbWFyZ2luLWxlZnQ6IDQ2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNDYgewogICAgbWFyZ2luLWJvdHRvbTogNDZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTQ2IHsKICAgIG1hcmdpbi1yaWdodDogNDZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC00NyB7CiAgICBtYXJnaW4tdG9wOiA0N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC00NyB7CiAgICBtYXJnaW4tbGVmdDogNDdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS00NyB7CiAgICBtYXJnaW4tYm90dG9tOiA0N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNDcgewogICAgbWFyZ2luLXJpZ2h0OiA0N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTQ4IHsKICAgIG1hcmdpbi10b3A6IDQ4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTQ4IHsKICAgIG1hcmdpbi1sZWZ0OiA0OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTQ4IHsKICAgIG1hcmdpbi1ib3R0b206IDQ4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC00OCB7CiAgICBtYXJnaW4tcmlnaHQ6IDQ4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNDkgewogICAgbWFyZ2luLXRvcDogNDlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNDkgewogICAgbWFyZ2luLWxlZnQ6IDQ5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNDkgewogICAgbWFyZ2luLWJvdHRvbTogNDlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTQ5IHsKICAgIG1hcmdpbi1yaWdodDogNDlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC01MCB7CiAgICBtYXJnaW4tdG9wOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC01MCB7CiAgICBtYXJnaW4tbGVmdDogNTBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS01MCB7CiAgICBtYXJnaW4tYm90dG9tOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNTAgewogICAgbWFyZ2luLXJpZ2h0OiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTUxIHsKICAgIG1hcmdpbi10b3A6IDUxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTUxIHsKICAgIG1hcmdpbi1sZWZ0OiA1MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTUxIHsKICAgIG1hcmdpbi1ib3R0b206IDUxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC01MSB7CiAgICBtYXJnaW4tcmlnaHQ6IDUxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNTIgewogICAgbWFyZ2luLXRvcDogNTJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNTIgewogICAgbWFyZ2luLWxlZnQ6IDUycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNTIgewogICAgbWFyZ2luLWJvdHRvbTogNTJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTUyIHsKICAgIG1hcmdpbi1yaWdodDogNTJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC01MyB7CiAgICBtYXJnaW4tdG9wOiA1M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC01MyB7CiAgICBtYXJnaW4tbGVmdDogNTNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS01MyB7CiAgICBtYXJnaW4tYm90dG9tOiA1M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNTMgewogICAgbWFyZ2luLXJpZ2h0OiA1M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTU0IHsKICAgIG1hcmdpbi10b3A6IDU0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTU0IHsKICAgIG1hcmdpbi1sZWZ0OiA1NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTU0IHsKICAgIG1hcmdpbi1ib3R0b206IDU0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC01NCB7CiAgICBtYXJnaW4tcmlnaHQ6IDU0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNTUgewogICAgbWFyZ2luLXRvcDogNTVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNTUgewogICAgbWFyZ2luLWxlZnQ6IDU1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNTUgewogICAgbWFyZ2luLWJvdHRvbTogNTVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTU1IHsKICAgIG1hcmdpbi1yaWdodDogNTVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC01NiB7CiAgICBtYXJnaW4tdG9wOiA1NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC01NiB7CiAgICBtYXJnaW4tbGVmdDogNTZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS01NiB7CiAgICBtYXJnaW4tYm90dG9tOiA1NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNTYgewogICAgbWFyZ2luLXJpZ2h0OiA1NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTU3IHsKICAgIG1hcmdpbi10b3A6IDU3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTU3IHsKICAgIG1hcmdpbi1sZWZ0OiA1N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTU3IHsKICAgIG1hcmdpbi1ib3R0b206IDU3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC01NyB7CiAgICBtYXJnaW4tcmlnaHQ6IDU3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNTggewogICAgbWFyZ2luLXRvcDogNThweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNTggewogICAgbWFyZ2luLWxlZnQ6IDU4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNTggewogICAgbWFyZ2luLWJvdHRvbTogNThweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTU4IHsKICAgIG1hcmdpbi1yaWdodDogNThweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC01OSB7CiAgICBtYXJnaW4tdG9wOiA1OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC01OSB7CiAgICBtYXJnaW4tbGVmdDogNTlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS01OSB7CiAgICBtYXJnaW4tYm90dG9tOiA1OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNTkgewogICAgbWFyZ2luLXJpZ2h0OiA1OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTYwIHsKICAgIG1hcmdpbi10b3A6IDYwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTYwIHsKICAgIG1hcmdpbi1sZWZ0OiA2MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTYwIHsKICAgIG1hcmdpbi1ib3R0b206IDYwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC02MCB7CiAgICBtYXJnaW4tcmlnaHQ6IDYwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNjEgewogICAgbWFyZ2luLXRvcDogNjFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNjEgewogICAgbWFyZ2luLWxlZnQ6IDYxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNjEgewogICAgbWFyZ2luLWJvdHRvbTogNjFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTYxIHsKICAgIG1hcmdpbi1yaWdodDogNjFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC02MiB7CiAgICBtYXJnaW4tdG9wOiA2MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC02MiB7CiAgICBtYXJnaW4tbGVmdDogNjJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS02MiB7CiAgICBtYXJnaW4tYm90dG9tOiA2MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNjIgewogICAgbWFyZ2luLXJpZ2h0OiA2MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTYzIHsKICAgIG1hcmdpbi10b3A6IDYzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTYzIHsKICAgIG1hcmdpbi1sZWZ0OiA2M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTYzIHsKICAgIG1hcmdpbi1ib3R0b206IDYzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC02MyB7CiAgICBtYXJnaW4tcmlnaHQ6IDYzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNjQgewogICAgbWFyZ2luLXRvcDogNjRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNjQgewogICAgbWFyZ2luLWxlZnQ6IDY0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNjQgewogICAgbWFyZ2luLWJvdHRvbTogNjRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTY0IHsKICAgIG1hcmdpbi1yaWdodDogNjRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC02NSB7CiAgICBtYXJnaW4tdG9wOiA2NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC02NSB7CiAgICBtYXJnaW4tbGVmdDogNjVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS02NSB7CiAgICBtYXJnaW4tYm90dG9tOiA2NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNjUgewogICAgbWFyZ2luLXJpZ2h0OiA2NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTY2IHsKICAgIG1hcmdpbi10b3A6IDY2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTY2IHsKICAgIG1hcmdpbi1sZWZ0OiA2NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTY2IHsKICAgIG1hcmdpbi1ib3R0b206IDY2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC02NiB7CiAgICBtYXJnaW4tcmlnaHQ6IDY2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNjcgewogICAgbWFyZ2luLXRvcDogNjdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNjcgewogICAgbWFyZ2luLWxlZnQ6IDY3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNjcgewogICAgbWFyZ2luLWJvdHRvbTogNjdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTY3IHsKICAgIG1hcmdpbi1yaWdodDogNjdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC02OCB7CiAgICBtYXJnaW4tdG9wOiA2OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC02OCB7CiAgICBtYXJnaW4tbGVmdDogNjhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS02OCB7CiAgICBtYXJnaW4tYm90dG9tOiA2OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNjggewogICAgbWFyZ2luLXJpZ2h0OiA2OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTY5IHsKICAgIG1hcmdpbi10b3A6IDY5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTY5IHsKICAgIG1hcmdpbi1sZWZ0OiA2OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTY5IHsKICAgIG1hcmdpbi1ib3R0b206IDY5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC02OSB7CiAgICBtYXJnaW4tcmlnaHQ6IDY5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNzAgewogICAgbWFyZ2luLXRvcDogNzBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNzAgewogICAgbWFyZ2luLWxlZnQ6IDcwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNzAgewogICAgbWFyZ2luLWJvdHRvbTogNzBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTcwIHsKICAgIG1hcmdpbi1yaWdodDogNzBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC03MSB7CiAgICBtYXJnaW4tdG9wOiA3MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC03MSB7CiAgICBtYXJnaW4tbGVmdDogNzFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS03MSB7CiAgICBtYXJnaW4tYm90dG9tOiA3MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNzEgewogICAgbWFyZ2luLXJpZ2h0OiA3MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTcyIHsKICAgIG1hcmdpbi10b3A6IDcycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTcyIHsKICAgIG1hcmdpbi1sZWZ0OiA3MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTcyIHsKICAgIG1hcmdpbi1ib3R0b206IDcycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC03MiB7CiAgICBtYXJnaW4tcmlnaHQ6IDcycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNzMgewogICAgbWFyZ2luLXRvcDogNzNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNzMgewogICAgbWFyZ2luLWxlZnQ6IDczcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNzMgewogICAgbWFyZ2luLWJvdHRvbTogNzNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTczIHsKICAgIG1hcmdpbi1yaWdodDogNzNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC03NCB7CiAgICBtYXJnaW4tdG9wOiA3NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC03NCB7CiAgICBtYXJnaW4tbGVmdDogNzRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS03NCB7CiAgICBtYXJnaW4tYm90dG9tOiA3NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNzQgewogICAgbWFyZ2luLXJpZ2h0OiA3NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTc1IHsKICAgIG1hcmdpbi10b3A6IDc1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTc1IHsKICAgIG1hcmdpbi1sZWZ0OiA3NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTc1IHsKICAgIG1hcmdpbi1ib3R0b206IDc1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC03NSB7CiAgICBtYXJnaW4tcmlnaHQ6IDc1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNzYgewogICAgbWFyZ2luLXRvcDogNzZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNzYgewogICAgbWFyZ2luLWxlZnQ6IDc2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNzYgewogICAgbWFyZ2luLWJvdHRvbTogNzZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTc2IHsKICAgIG1hcmdpbi1yaWdodDogNzZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC03NyB7CiAgICBtYXJnaW4tdG9wOiA3N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC03NyB7CiAgICBtYXJnaW4tbGVmdDogNzdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS03NyB7CiAgICBtYXJnaW4tYm90dG9tOiA3N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNzcgewogICAgbWFyZ2luLXJpZ2h0OiA3N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTc4IHsKICAgIG1hcmdpbi10b3A6IDc4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTc4IHsKICAgIG1hcmdpbi1sZWZ0OiA3OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTc4IHsKICAgIG1hcmdpbi1ib3R0b206IDc4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC03OCB7CiAgICBtYXJnaW4tcmlnaHQ6IDc4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNzkgewogICAgbWFyZ2luLXRvcDogNzlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNzkgewogICAgbWFyZ2luLWxlZnQ6IDc5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNzkgewogICAgbWFyZ2luLWJvdHRvbTogNzlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTc5IHsKICAgIG1hcmdpbi1yaWdodDogNzlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC04MCB7CiAgICBtYXJnaW4tdG9wOiA4MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC04MCB7CiAgICBtYXJnaW4tbGVmdDogODBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS04MCB7CiAgICBtYXJnaW4tYm90dG9tOiA4MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtODAgewogICAgbWFyZ2luLXJpZ2h0OiA4MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0xIHsKICAgIHBhZGRpbmctdG9wOiAxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0xIHsKICAgIHBhZGRpbmctbGVmdDogMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0xIHsKICAgIHBhZGRpbmctYm90dG9tOiAxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTIgewogICAgcGFkZGluZy10b3A6IDJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTIgewogICAgcGFkZGluZy1sZWZ0OiAycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTIgewogICAgcGFkZGluZy1ib3R0b206IDJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0yIHsKICAgIHBhZGRpbmctcmlnaHQ6IDJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMyB7CiAgICBwYWRkaW5nLXRvcDogM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTMgewogICAgcGFkZGluZy1yaWdodDogM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC00IHsKICAgIHBhZGRpbmctdG9wOiA0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC00IHsKICAgIHBhZGRpbmctbGVmdDogNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS00IHsKICAgIHBhZGRpbmctYm90dG9tOiA0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTUgewogICAgcGFkZGluZy10b3A6IDVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTUgewogICAgcGFkZGluZy1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTUgewogICAgcGFkZGluZy1ib3R0b206IDVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC01IHsKICAgIHBhZGRpbmctcmlnaHQ6IDVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNiB7CiAgICBwYWRkaW5nLXRvcDogNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNiB7CiAgICBwYWRkaW5nLWxlZnQ6IDZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNiB7CiAgICBwYWRkaW5nLWJvdHRvbTogNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTYgewogICAgcGFkZGluZy1yaWdodDogNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC03IHsKICAgIHBhZGRpbmctdG9wOiA3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC03IHsKICAgIHBhZGRpbmctbGVmdDogN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS03IHsKICAgIHBhZGRpbmctYm90dG9tOiA3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNyB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTggewogICAgcGFkZGluZy10b3A6IDhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTggewogICAgcGFkZGluZy1sZWZ0OiA4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTggewogICAgcGFkZGluZy1ib3R0b206IDhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC04IHsKICAgIHBhZGRpbmctcmlnaHQ6IDhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtOSB7CiAgICBwYWRkaW5nLXRvcDogOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtOSB7CiAgICBwYWRkaW5nLWxlZnQ6IDlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tOSB7CiAgICBwYWRkaW5nLWJvdHRvbTogOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTkgewogICAgcGFkZGluZy1yaWdodDogOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0xMCB7CiAgICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTEwIHsKICAgIHBhZGRpbmctbGVmdDogMTBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMTAgewogICAgcGFkZGluZy1ib3R0b206IDEwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMTAgewogICAgcGFkZGluZy1yaWdodDogMTBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMTEgewogICAgcGFkZGluZy10b3A6IDExcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0xMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDExcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTExIHsKICAgIHBhZGRpbmctYm90dG9tOiAxMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTExIHsKICAgIHBhZGRpbmctcmlnaHQ6IDExcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTEyIHsKICAgIHBhZGRpbmctdG9wOiAxMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMTIgewogICAgcGFkZGluZy1sZWZ0OiAxMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0xMiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMTJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0xMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0xMyB7CiAgICBwYWRkaW5nLXRvcDogMTNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTEzIHsKICAgIHBhZGRpbmctbGVmdDogMTNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMTMgewogICAgcGFkZGluZy1ib3R0b206IDEzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMTMgewogICAgcGFkZGluZy1yaWdodDogMTNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMTQgewogICAgcGFkZGluZy10b3A6IDE0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0xNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDE0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTE0IHsKICAgIHBhZGRpbmctYm90dG9tOiAxNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTE0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDE0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTE1IHsKICAgIHBhZGRpbmctdG9wOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMTUgewogICAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0xNSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMTVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0xNSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0xNiB7CiAgICBwYWRkaW5nLXRvcDogMTZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTE2IHsKICAgIHBhZGRpbmctbGVmdDogMTZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMTYgewogICAgcGFkZGluZy1ib3R0b206IDE2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMTYgewogICAgcGFkZGluZy1yaWdodDogMTZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMTcgewogICAgcGFkZGluZy10b3A6IDE3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0xNyB7CiAgICBwYWRkaW5nLWxlZnQ6IDE3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTE3IHsKICAgIHBhZGRpbmctYm90dG9tOiAxN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTE3IHsKICAgIHBhZGRpbmctcmlnaHQ6IDE3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTE4IHsKICAgIHBhZGRpbmctdG9wOiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMTggewogICAgcGFkZGluZy1sZWZ0OiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0xOCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMThweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0xOCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0xOSB7CiAgICBwYWRkaW5nLXRvcDogMTlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTE5IHsKICAgIHBhZGRpbmctbGVmdDogMTlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMTkgewogICAgcGFkZGluZy1ib3R0b206IDE5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMTkgewogICAgcGFkZGluZy1yaWdodDogMTlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMjAgewogICAgcGFkZGluZy10b3A6IDIwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0yMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTIwIHsKICAgIHBhZGRpbmctYm90dG9tOiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTIwIHsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTIxIHsKICAgIHBhZGRpbmctdG9wOiAyMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMjEgewogICAgcGFkZGluZy1sZWZ0OiAyMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0yMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0yMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0yMiB7CiAgICBwYWRkaW5nLXRvcDogMjJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTIyIHsKICAgIHBhZGRpbmctbGVmdDogMjJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMjIgewogICAgcGFkZGluZy1ib3R0b206IDIycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMjIgewogICAgcGFkZGluZy1yaWdodDogMjJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMjMgewogICAgcGFkZGluZy10b3A6IDIzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0yMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDIzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTIzIHsKICAgIHBhZGRpbmctYm90dG9tOiAyM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTIzIHsKICAgIHBhZGRpbmctcmlnaHQ6IDIzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTI0IHsKICAgIHBhZGRpbmctdG9wOiAyNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMjQgewogICAgcGFkZGluZy1sZWZ0OiAyNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0yNCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0yNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0yNSB7CiAgICBwYWRkaW5nLXRvcDogMjVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTI1IHsKICAgIHBhZGRpbmctbGVmdDogMjVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMjUgewogICAgcGFkZGluZy1ib3R0b206IDI1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMjUgewogICAgcGFkZGluZy1yaWdodDogMjVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMjYgewogICAgcGFkZGluZy10b3A6IDI2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0yNiB7CiAgICBwYWRkaW5nLWxlZnQ6IDI2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTI2IHsKICAgIHBhZGRpbmctYm90dG9tOiAyNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTI2IHsKICAgIHBhZGRpbmctcmlnaHQ6IDI2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTI3IHsKICAgIHBhZGRpbmctdG9wOiAyN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMjcgewogICAgcGFkZGluZy1sZWZ0OiAyN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0yNyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0yNyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0yOCB7CiAgICBwYWRkaW5nLXRvcDogMjhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTI4IHsKICAgIHBhZGRpbmctbGVmdDogMjhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMjggewogICAgcGFkZGluZy1ib3R0b206IDI4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMjggewogICAgcGFkZGluZy1yaWdodDogMjhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMjkgewogICAgcGFkZGluZy10b3A6IDI5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0yOSB7CiAgICBwYWRkaW5nLWxlZnQ6IDI5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTI5IHsKICAgIHBhZGRpbmctYm90dG9tOiAyOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTI5IHsKICAgIHBhZGRpbmctcmlnaHQ6IDI5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTMwIHsKICAgIHBhZGRpbmctdG9wOiAzMHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMzAgewogICAgcGFkZGluZy1sZWZ0OiAzMHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0zMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMzBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0zMCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0zMSB7CiAgICBwYWRkaW5nLXRvcDogMzFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTMxIHsKICAgIHBhZGRpbmctbGVmdDogMzFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMzEgewogICAgcGFkZGluZy1ib3R0b206IDMxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMzEgewogICAgcGFkZGluZy1yaWdodDogMzFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMzIgewogICAgcGFkZGluZy10b3A6IDMycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0zMiB7CiAgICBwYWRkaW5nLWxlZnQ6IDMycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTMyIHsKICAgIHBhZGRpbmctYm90dG9tOiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTMyIHsKICAgIHBhZGRpbmctcmlnaHQ6IDMycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTMzIHsKICAgIHBhZGRpbmctdG9wOiAzM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMzMgewogICAgcGFkZGluZy1sZWZ0OiAzM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0zMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMzNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0zMyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0zNCB7CiAgICBwYWRkaW5nLXRvcDogMzRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTM0IHsKICAgIHBhZGRpbmctbGVmdDogMzRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMzQgewogICAgcGFkZGluZy1ib3R0b206IDM0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMzQgewogICAgcGFkZGluZy1yaWdodDogMzRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMzUgewogICAgcGFkZGluZy10b3A6IDM1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0zNSB7CiAgICBwYWRkaW5nLWxlZnQ6IDM1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTM1IHsKICAgIHBhZGRpbmctYm90dG9tOiAzNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTM1IHsKICAgIHBhZGRpbmctcmlnaHQ6IDM1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTM2IHsKICAgIHBhZGRpbmctdG9wOiAzNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMzYgewogICAgcGFkZGluZy1sZWZ0OiAzNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0zNiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMzZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0zNiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0zNyB7CiAgICBwYWRkaW5nLXRvcDogMzdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTM3IHsKICAgIHBhZGRpbmctbGVmdDogMzdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMzcgewogICAgcGFkZGluZy1ib3R0b206IDM3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMzcgewogICAgcGFkZGluZy1yaWdodDogMzdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMzggewogICAgcGFkZGluZy10b3A6IDM4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0zOCB7CiAgICBwYWRkaW5nLWxlZnQ6IDM4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTM4IHsKICAgIHBhZGRpbmctYm90dG9tOiAzOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTM4IHsKICAgIHBhZGRpbmctcmlnaHQ6IDM4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTM5IHsKICAgIHBhZGRpbmctdG9wOiAzOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMzkgewogICAgcGFkZGluZy1sZWZ0OiAzOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0zOSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMzlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0zOSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC00MCB7CiAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTQwIHsKICAgIHBhZGRpbmctbGVmdDogNDBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNDAgewogICAgcGFkZGluZy1ib3R0b206IDQwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNDAgewogICAgcGFkZGluZy1yaWdodDogNDBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNDEgewogICAgcGFkZGluZy10b3A6IDQxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC00MSB7CiAgICBwYWRkaW5nLWxlZnQ6IDQxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTQxIHsKICAgIHBhZGRpbmctYm90dG9tOiA0MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTQxIHsKICAgIHBhZGRpbmctcmlnaHQ6IDQxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTQyIHsKICAgIHBhZGRpbmctdG9wOiA0MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNDIgewogICAgcGFkZGluZy1sZWZ0OiA0MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS00MiB7CiAgICBwYWRkaW5nLWJvdHRvbTogNDJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC00MiB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC00MyB7CiAgICBwYWRkaW5nLXRvcDogNDNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTQzIHsKICAgIHBhZGRpbmctbGVmdDogNDNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNDMgewogICAgcGFkZGluZy1ib3R0b206IDQzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNDMgewogICAgcGFkZGluZy1yaWdodDogNDNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNDQgewogICAgcGFkZGluZy10b3A6IDQ0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC00NCB7CiAgICBwYWRkaW5nLWxlZnQ6IDQ0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTQ0IHsKICAgIHBhZGRpbmctYm90dG9tOiA0NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTQ0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDQ0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTQ1IHsKICAgIHBhZGRpbmctdG9wOiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNDUgewogICAgcGFkZGluZy1sZWZ0OiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS00NSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNDVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC00NSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC00NiB7CiAgICBwYWRkaW5nLXRvcDogNDZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTQ2IHsKICAgIHBhZGRpbmctbGVmdDogNDZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNDYgewogICAgcGFkZGluZy1ib3R0b206IDQ2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNDYgewogICAgcGFkZGluZy1yaWdodDogNDZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNDcgewogICAgcGFkZGluZy10b3A6IDQ3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC00NyB7CiAgICBwYWRkaW5nLWxlZnQ6IDQ3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTQ3IHsKICAgIHBhZGRpbmctYm90dG9tOiA0N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTQ3IHsKICAgIHBhZGRpbmctcmlnaHQ6IDQ3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTQ4IHsKICAgIHBhZGRpbmctdG9wOiA0OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNDggewogICAgcGFkZGluZy1sZWZ0OiA0OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS00OCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNDhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC00OCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC00OSB7CiAgICBwYWRkaW5nLXRvcDogNDlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTQ5IHsKICAgIHBhZGRpbmctbGVmdDogNDlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNDkgewogICAgcGFkZGluZy1ib3R0b206IDQ5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNDkgewogICAgcGFkZGluZy1yaWdodDogNDlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNTAgewogICAgcGFkZGluZy10b3A6IDUwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC01MCB7CiAgICBwYWRkaW5nLWxlZnQ6IDUwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTUwIHsKICAgIHBhZGRpbmctYm90dG9tOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTUwIHsKICAgIHBhZGRpbmctcmlnaHQ6IDUwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTUxIHsKICAgIHBhZGRpbmctdG9wOiA1MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNTEgewogICAgcGFkZGluZy1sZWZ0OiA1MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS01MSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC01MSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC01MiB7CiAgICBwYWRkaW5nLXRvcDogNTJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTUyIHsKICAgIHBhZGRpbmctbGVmdDogNTJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNTIgewogICAgcGFkZGluZy1ib3R0b206IDUycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNTIgewogICAgcGFkZGluZy1yaWdodDogNTJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNTMgewogICAgcGFkZGluZy10b3A6IDUzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC01MyB7CiAgICBwYWRkaW5nLWxlZnQ6IDUzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTUzIHsKICAgIHBhZGRpbmctYm90dG9tOiA1M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTUzIHsKICAgIHBhZGRpbmctcmlnaHQ6IDUzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTU0IHsKICAgIHBhZGRpbmctdG9wOiA1NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNTQgewogICAgcGFkZGluZy1sZWZ0OiA1NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS01NCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC01NCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC01NSB7CiAgICBwYWRkaW5nLXRvcDogNTVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTU1IHsKICAgIHBhZGRpbmctbGVmdDogNTVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNTUgewogICAgcGFkZGluZy1ib3R0b206IDU1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNTUgewogICAgcGFkZGluZy1yaWdodDogNTVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNTYgewogICAgcGFkZGluZy10b3A6IDU2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC01NiB7CiAgICBwYWRkaW5nLWxlZnQ6IDU2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTU2IHsKICAgIHBhZGRpbmctYm90dG9tOiA1NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTU2IHsKICAgIHBhZGRpbmctcmlnaHQ6IDU2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTU3IHsKICAgIHBhZGRpbmctdG9wOiA1N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNTcgewogICAgcGFkZGluZy1sZWZ0OiA1N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS01NyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC01NyB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC01OCB7CiAgICBwYWRkaW5nLXRvcDogNThweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTU4IHsKICAgIHBhZGRpbmctbGVmdDogNThweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNTggewogICAgcGFkZGluZy1ib3R0b206IDU4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNTggewogICAgcGFkZGluZy1yaWdodDogNThweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNTkgewogICAgcGFkZGluZy10b3A6IDU5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC01OSB7CiAgICBwYWRkaW5nLWxlZnQ6IDU5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTU5IHsKICAgIHBhZGRpbmctYm90dG9tOiA1OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTU5IHsKICAgIHBhZGRpbmctcmlnaHQ6IDU5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTYwIHsKICAgIHBhZGRpbmctdG9wOiA2MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNjAgewogICAgcGFkZGluZy1sZWZ0OiA2MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS02MCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNjBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC02MCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA2MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC02MSB7CiAgICBwYWRkaW5nLXRvcDogNjFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTYxIHsKICAgIHBhZGRpbmctbGVmdDogNjFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNjEgewogICAgcGFkZGluZy1ib3R0b206IDYxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNjEgewogICAgcGFkZGluZy1yaWdodDogNjFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNjIgewogICAgcGFkZGluZy10b3A6IDYycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC02MiB7CiAgICBwYWRkaW5nLWxlZnQ6IDYycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTYyIHsKICAgIHBhZGRpbmctYm90dG9tOiA2MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTYyIHsKICAgIHBhZGRpbmctcmlnaHQ6IDYycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTYzIHsKICAgIHBhZGRpbmctdG9wOiA2M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNjMgewogICAgcGFkZGluZy1sZWZ0OiA2M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS02MyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNjNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC02MyB7CiAgICBwYWRkaW5nLXJpZ2h0OiA2M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC02NCB7CiAgICBwYWRkaW5nLXRvcDogNjRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTY0IHsKICAgIHBhZGRpbmctbGVmdDogNjRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNjQgewogICAgcGFkZGluZy1ib3R0b206IDY0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNjQgewogICAgcGFkZGluZy1yaWdodDogNjRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNjUgewogICAgcGFkZGluZy10b3A6IDY1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC02NSB7CiAgICBwYWRkaW5nLWxlZnQ6IDY1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTY1IHsKICAgIHBhZGRpbmctYm90dG9tOiA2NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTY1IHsKICAgIHBhZGRpbmctcmlnaHQ6IDY1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTY2IHsKICAgIHBhZGRpbmctdG9wOiA2NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNjYgewogICAgcGFkZGluZy1sZWZ0OiA2NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS02NiB7CiAgICBwYWRkaW5nLWJvdHRvbTogNjZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC02NiB7CiAgICBwYWRkaW5nLXJpZ2h0OiA2NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC02NyB7CiAgICBwYWRkaW5nLXRvcDogNjdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTY3IHsKICAgIHBhZGRpbmctbGVmdDogNjdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNjcgewogICAgcGFkZGluZy1ib3R0b206IDY3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNjcgewogICAgcGFkZGluZy1yaWdodDogNjdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNjggewogICAgcGFkZGluZy10b3A6IDY4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC02OCB7CiAgICBwYWRkaW5nLWxlZnQ6IDY4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTY4IHsKICAgIHBhZGRpbmctYm90dG9tOiA2OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTY4IHsKICAgIHBhZGRpbmctcmlnaHQ6IDY4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTY5IHsKICAgIHBhZGRpbmctdG9wOiA2OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNjkgewogICAgcGFkZGluZy1sZWZ0OiA2OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS02OSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNjlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC02OSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA2OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC03MCB7CiAgICBwYWRkaW5nLXRvcDogNzBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTcwIHsKICAgIHBhZGRpbmctbGVmdDogNzBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNzAgewogICAgcGFkZGluZy1ib3R0b206IDcwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNzAgewogICAgcGFkZGluZy1yaWdodDogNzBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNzEgewogICAgcGFkZGluZy10b3A6IDcxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC03MSB7CiAgICBwYWRkaW5nLWxlZnQ6IDcxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTcxIHsKICAgIHBhZGRpbmctYm90dG9tOiA3MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTcxIHsKICAgIHBhZGRpbmctcmlnaHQ6IDcxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTcyIHsKICAgIHBhZGRpbmctdG9wOiA3MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNzIgewogICAgcGFkZGluZy1sZWZ0OiA3MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS03MiB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC03MiB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC03MyB7CiAgICBwYWRkaW5nLXRvcDogNzNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTczIHsKICAgIHBhZGRpbmctbGVmdDogNzNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNzMgewogICAgcGFkZGluZy1ib3R0b206IDczcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNzMgewogICAgcGFkZGluZy1yaWdodDogNzNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNzQgewogICAgcGFkZGluZy10b3A6IDc0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC03NCB7CiAgICBwYWRkaW5nLWxlZnQ6IDc0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTc0IHsKICAgIHBhZGRpbmctYm90dG9tOiA3NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTc0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDc0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTc1IHsKICAgIHBhZGRpbmctdG9wOiA3NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNzUgewogICAgcGFkZGluZy1sZWZ0OiA3NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS03NSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC03NSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC03NiB7CiAgICBwYWRkaW5nLXRvcDogNzZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTc2IHsKICAgIHBhZGRpbmctbGVmdDogNzZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNzYgewogICAgcGFkZGluZy1ib3R0b206IDc2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNzYgewogICAgcGFkZGluZy1yaWdodDogNzZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNzcgewogICAgcGFkZGluZy10b3A6IDc3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC03NyB7CiAgICBwYWRkaW5nLWxlZnQ6IDc3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTc3IHsKICAgIHBhZGRpbmctYm90dG9tOiA3N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTc3IHsKICAgIHBhZGRpbmctcmlnaHQ6IDc3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTc4IHsKICAgIHBhZGRpbmctdG9wOiA3OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNzggewogICAgcGFkZGluZy1sZWZ0OiA3OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS03OCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC03OCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC03OSB7CiAgICBwYWRkaW5nLXRvcDogNzlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTc5IHsKICAgIHBhZGRpbmctbGVmdDogNzlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNzkgewogICAgcGFkZGluZy1ib3R0b206IDc5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNzkgewogICAgcGFkZGluZy1yaWdodDogNzlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtODAgewogICAgcGFkZGluZy10b3A6IDgwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC04MCB7CiAgICBwYWRkaW5nLWxlZnQ6IDgwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTgwIHsKICAgIHBhZGRpbmctYm90dG9tOiA4MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTgwIHsKICAgIHBhZGRpbmctcmlnaHQ6IDgwcHggIWltcG9ydGFudDsKfQoKQGtleWZyYW1lcyByb3RhdGVfaWNvbiB7CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlX2ljb24gewogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIH0KfQoKQGtleWZyYW1lcyBzY2FsZV9pY29uIHsKICAgIGZvcm0gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2NhbGVfaWNvbiB7CiAgICBmb3JtIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSWNvbiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgfQogICAgNTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgc2xpZGVJY29uIHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB9CiAgICA1MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgIH0KICAgIDEwMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBzY2FsZV9pY29uX21hcCB7CiAgICBmb3JtIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgxLjIpOwogICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMS4yKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMS4yKTsKICAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgxLjIpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDEuMik7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzY2FsZV9pY29uX21hcCB7CiAgICBmb3JtIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgxLjIpOwogICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMS4yKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMS4yKTsKICAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgxLjIpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDEuMik7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgcm90YXRlX2ljb24gewogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZV9pY29uIHsKICAgIDEwMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICB9Cn0KCi8qISBub3JtYWxpemUuY3NzIHYzLjAuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0LmlvL25vcm1hbGl6ZSAqLwoKaHRtbCB7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwp9Cgpib2R5IHsKICAgIG1hcmdpbjogMDsKfQoKYXJ0aWNsZSwKYXNpZGUsCmRldGFpbHMsCmZpZ2NhcHRpb24sCmZpZ3VyZSwKZm9vdGVyLApoZWFkZXIsCmhncm91cCwKbWFpbiwKbmF2LApzZWN0aW9uLApzdW1tYXJ5IHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgphdWRpbywKY2FudmFzLApwcm9ncmVzcywKdmlkZW8gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwp9CgphdWRpbzpub3QoW2NvbnRyb2xzXSkgewogICAgZGlzcGxheTogbm9uZTsKICAgIGhlaWdodDogMDsKfQoKW2hpZGRlbl0sCnRlbXBsYXRlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCmEgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCmE6YWN0aXZlLAphOmhvdmVyIHsKICAgIG91dGxpbmU6IDA7Cn0KCmFiYnJbdGl0bGVdIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7Cn0KCmIsCnN0cm9uZyB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKZGZuIHsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKaDEgewogICAgZm9udC1zaXplOiAyZW07CiAgICBtYXJnaW46IDAuNjdlbSAwOwp9CgptYXJrIHsKICAgIGJhY2tncm91bmQ6ICNmZjA7CiAgICBjb2xvcjogIzAwMDsKfQoKc21hbGwgewogICAgZm9udC1zaXplOiA4MCU7Cn0KCnN1YiwKc3VwIHsKICAgIGZvbnQtc2l6ZTogNzUlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KCnN1cCB7CiAgICB0b3A6IC0wLjVlbTsKfQoKc3ViIHsKICAgIGJvdHRvbTogLTAuMjVlbTsKfQoKaW1nIHsKICAgIGJvcmRlcjogMDsKfQoKc3ZnOm5vdCg6cm9vdCkgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKZmlndXJlIHsKICAgIG1hcmdpbjogMWVtIDQwcHg7Cn0KCmhyIHsKICAgIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAgIGhlaWdodDogMDsKfQoKcHJlIHsKICAgIG92ZXJmbG93OiBhdXRvOwp9Cgpjb2RlLAprYmQsCnByZSwKc2FtcCB7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7CiAgICBmb250LXNpemU6IDFlbTsKfQoKYnV0dG9uLAppbnB1dCwKb3B0Z3JvdXAsCnNlbGVjdCwKdGV4dGFyZWEgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBmb250OiBpbmhlcml0OwogICAgbWFyZ2luOiAwOwp9CgpidXR0b24gewogICAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmJ1dHRvbiwKc2VsZWN0IHsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwp9CgpidXR0b24sCmh0bWwgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCmlucHV0W3R5cGU9InJlc2V0Il0sCmlucHV0W3R5cGU9InN1Ym1pdCJdIHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgpidXR0b25bZGlzYWJsZWRdLApodG1sIGlucHV0W2Rpc2FibGVkXSB7CiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwKaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIgewogICAgYm9yZGVyOiAwOwogICAgcGFkZGluZzogMDsKfQoKaW5wdXQgewogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKaW5wdXRbdHlwZT0icmFkaW8iXSB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgcGFkZGluZzogMDsKfQoKaW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sCmlucHV0W3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKICAgIGhlaWdodDogYXV0bzsKfQoKaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7CiAgICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9CgppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwKaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24gewogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgpmaWVsZHNldCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwOwogICAgbWFyZ2luOiAwIDJweDsKICAgIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsKfQoKbGVnZW5kIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCnRleHRhcmVhIHsKICAgIG92ZXJmbG93OiBhdXRvOwp9CgpvcHRncm91cCB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKdGFibGUgewogICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgIGJvcmRlci1zcGFjaW5nOiAwOwp9Cgp0ZCwKdGggewogICAgcGFkZGluZzogMDsKfQoKQG1lZGlhIHByaW50IHsKICAgICogewogICAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICAgIGEsCiAgICBhOnZpc2l0ZWQgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgfQogICAgYVtocmVmXTphZnRlciB7CiAgICAgICAgY29udGVudDogIiAoIiBhdHRyKGhyZWYpICIpIjsKICAgIH0KICAgIGFiYnJbdGl0bGVdOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKICAgIH0KICAgIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIsCiAgICBhW2hyZWZePSIjIl06YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIiOwogICAgfQogICAgcHJlLAogICAgYmxvY2txdW90ZSB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgICB9CiAgICB0aGVhZCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogICAgfQogICAgdHIsCiAgICBpbWcgewogICAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICAgIH0KICAgIGltZyB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CiAgICBwLAogICAgaDIsCiAgICBoMyB7CiAgICAgICAgb3JwaGFuczogMzsKICAgICAgICB3aWRvd3M6IDM7CiAgICB9CiAgICBoMiwKICAgIGgzIHsKICAgICAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsKICAgIH0KICAgIHNlbGVjdCB7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50OwogICAgfQogICAgLm5hdmJhciB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICAgIC50YWJsZSB0ZCwKICAgIC50YWJsZSB0aCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogICAgfQogICAgLmJ0bj4uY2FyZXQsCiAgICAuZHJvcHVwPi5idG4+LmNhcmV0IHsKICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7CiAgICB9CiAgICAubGFiZWwgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgICB9CiAgICAudGFibGUgewogICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsKICAgIH0KICAgIC50YWJsZS1ib3JkZXJlZCB0aCwKICAgIC50YWJsZS1ib3JkZXJlZCB0ZCB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZCAhaW1wb3J0YW50OwogICAgfQp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnOwogICAgc3JjOiB1cmwoIi4uL2ZvbnRzL2Jvb3RzdHJhcC9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdCIpOwogICAgc3JjOiB1cmwoIi4uL2ZvbnRzL2Jvb3RzdHJhcC9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdD8jaWVmaXgiKSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksIHVybCgiLi4vZm9udHMvYm9vdHN0cmFwL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZiIpIGZvcm1hdCgid29mZiIpLCB1cmwoIi4uL2ZvbnRzL2Jvb3RzdHJhcC9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnR0ZiIpIGZvcm1hdCgidHJ1ZXR5cGUiKSwgdXJsKCIuLi9mb250cy9ib290c3RyYXAvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5zdmcjZ2x5cGhpY29uc19oYWxmbGluZ3NyZWd1bGFyIikgZm9ybWF0KCJzdmciKTsKfQoKLmdseXBoaWNvbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IDFweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnOwogICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwp9CgouZ2x5cGhpY29uLWFzdGVyaXNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDAwMmEiOwp9CgouZ2x5cGhpY29uLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcMDAyYiI7Cn0KCi5nbHlwaGljb24tZXVybzpiZWZvcmUsCi5nbHlwaGljb24tZXVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDIwYWMiOwp9CgouZ2x5cGhpY29uLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDIyMTIiOwp9CgouZ2x5cGhpY29uLWNsb3VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDI2MDEiOwp9CgouZ2x5cGhpY29uLWVudmVsb3BlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDI3MDkiOwp9CgouZ2x5cGhpY29uLXBlbmNpbDpiZWZvcmUgewogICAgY29udGVudDogIlwyNzBmIjsKfQoKLmdseXBoaWNvbi1nbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDAxIjsKfQoKLmdseXBoaWNvbi1tdXNpYzpiZWZvcmUgewogICAgY29udGVudDogIlxlMDAyIjsKfQoKLmdseXBoaWNvbi1zZWFyY2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwMyI7Cn0KCi5nbHlwaGljb24taGVhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNSI7Cn0KCi5nbHlwaGljb24tc3RhcjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDA2IjsKfQoKLmdseXBoaWNvbi1zdGFyLWVtcHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMDciOwp9CgouZ2x5cGhpY29uLXVzZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwOCI7Cn0KCi5nbHlwaGljb24tZmlsbTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDA5IjsKfQoKLmdseXBoaWNvbi10aC1sYXJnZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDEwIjsKfQoKLmdseXBoaWNvbi10aDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDExIjsKfQoKLmdseXBoaWNvbi10aC1saXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTIiOwp9CgouZ2x5cGhpY29uLW9rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTMiOwp9CgouZ2x5cGhpY29uLXJlbW92ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDE0IjsKfQoKLmdseXBoaWNvbi16b29tLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTUiOwp9CgouZ2x5cGhpY29uLXpvb20tb3V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTYiOwp9CgouZ2x5cGhpY29uLW9mZjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDE3IjsKfQoKLmdseXBoaWNvbi1zaWduYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAxOCI7Cn0KCi5nbHlwaGljb24tY29nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTkiOwp9CgouZ2x5cGhpY29uLXRyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMjAiOwp9CgouZ2x5cGhpY29uLWhvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAyMSI7Cn0KCi5nbHlwaGljb24tZmlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDIyIjsKfQoKLmdseXBoaWNvbi10aW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMjMiOwp9CgouZ2x5cGhpY29uLXJvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAyNCI7Cn0KCi5nbHlwaGljb24tZG93bmxvYWQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMjUiOwp9CgouZ2x5cGhpY29uLWRvd25sb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMjYiOwp9CgouZ2x5cGhpY29uLXVwbG9hZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDI3IjsKfQoKLmdseXBoaWNvbi1pbmJveDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDI4IjsKfQoKLmdseXBoaWNvbi1wbGF5LWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDI5IjsKfQoKLmdseXBoaWNvbi1yZXBlYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAzMCI7Cn0KCi5nbHlwaGljb24tcmVmcmVzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDMxIjsKfQoKLmdseXBoaWNvbi1saXN0LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDMyIjsKfQoKLmdseXBoaWNvbi1sb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMzMiOwp9CgouZ2x5cGhpY29uLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAzNCI7Cn0KCi5nbHlwaGljb24taGVhZHBob25lczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDM1IjsKfQoKLmdseXBoaWNvbi12b2x1bWUtb2ZmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMzYiOwp9CgouZ2x5cGhpY29uLXZvbHVtZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMzciOwp9CgouZ2x5cGhpY29uLXZvbHVtZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDM4IjsKfQoKLmdseXBoaWNvbi1xcmNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAzOSI7Cn0KCi5nbHlwaGljb24tYmFyY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDQwIjsKfQoKLmdseXBoaWNvbi10YWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA0MSI7Cn0KCi5nbHlwaGljb24tdGFnczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDQyIjsKfQoKLmdseXBoaWNvbi1ib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDMiOwp9CgouZ2x5cGhpY29uLWJvb2ttYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDQiOwp9CgouZ2x5cGhpY29uLXByaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDUiOwp9CgouZ2x5cGhpY29uLWNhbWVyYTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDQ2IjsKfQoKLmdseXBoaWNvbi1mb250OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDciOwp9CgouZ2x5cGhpY29uLWJvbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA0OCI7Cn0KCi5nbHlwaGljb24taXRhbGljOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDkiOwp9CgouZ2x5cGhpY29uLXRleHQtaGVpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNTAiOwp9CgouZ2x5cGhpY29uLXRleHQtd2lkdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1MSI7Cn0KCi5nbHlwaGljb24tYWxpZ24tbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDUyIjsKfQoKLmdseXBoaWNvbi1hbGlnbi1jZW50ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1MyI7Cn0KCi5nbHlwaGljb24tYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1NCI7Cn0KCi5nbHlwaGljb24tYWxpZ24tanVzdGlmeTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU1IjsKfQoKLmdseXBoaWNvbi1saXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNTYiOwp9CgouZ2x5cGhpY29uLWluZGVudC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNTciOwp9CgouZ2x5cGhpY29uLWluZGVudC1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU4IjsKfQoKLmdseXBoaWNvbi1mYWNldGltZS12aWRlbzpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU5IjsKfQoKLmdseXBoaWNvbi1waWN0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjAiOwp9CgouZ2x5cGhpY29uLW1hcC1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MiI7Cn0KCi5nbHlwaGljb24tYWRqdXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjMiOwp9CgouZ2x5cGhpY29uLXRpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2NCI7Cn0KCi5nbHlwaGljb24tZWRpdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY1IjsKfQoKLmdseXBoaWNvbi1zaGFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY2IjsKfQoKLmdseXBoaWNvbi1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY3IjsKfQoKLmdseXBoaWNvbi1tb3ZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjgiOwp9CgouZ2x5cGhpY29uLXN0ZXAtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2OSI7Cn0KCi5nbHlwaGljb24tZmFzdC1iYWNrd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcwIjsKfQoKLmdseXBoaWNvbi1iYWNrd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcxIjsKfQoKLmdseXBoaWNvbi1wbGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzIiOwp9CgouZ2x5cGhpY29uLXBhdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzMiOwp9CgouZ2x5cGhpY29uLXN0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3NCI7Cn0KCi5nbHlwaGljb24tZm9yd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc1IjsKfQoKLmdseXBoaWNvbi1mYXN0LWZvcndhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3NiI7Cn0KCi5nbHlwaGljb24tc3RlcC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzciOwp9CgouZ2x5cGhpY29uLWVqZWN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzgiOwp9CgouZ2x5cGhpY29uLWNoZXZyb24tbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc5IjsKfQoKLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODAiOwp9CgouZ2x5cGhpY29uLXBsdXMtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDgxIjsKfQoKLmdseXBoaWNvbi1taW51cy1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODIiOwp9CgouZ2x5cGhpY29uLXJlbW92ZS1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODMiOwp9CgouZ2x5cGhpY29uLW9rLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4NCI7Cn0KCi5nbHlwaGljb24tcXVlc3Rpb24tc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDg1IjsKfQoKLmdseXBoaWNvbi1pbmZvLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4NiI7Cn0KCi5nbHlwaGljb24tc2NyZWVuc2hvdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDg3IjsKfQoKLmdseXBoaWNvbi1yZW1vdmUtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODgiOwp9CgouZ2x5cGhpY29uLW9rLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDg5IjsKfQoKLmdseXBoaWNvbi1iYW4tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwOTAiOwp9CgouZ2x5cGhpY29uLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA5MSI7Cn0KCi5nbHlwaGljb24tYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA5MiI7Cn0KCi5nbHlwaGljb24tYXJyb3ctdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA5MyI7Cn0KCi5nbHlwaGljb24tYXJyb3ctZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDk0IjsKfQoKLmdseXBoaWNvbi1zaGFyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA5NSI7Cn0KCi5nbHlwaGljb24tcmVzaXplLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA5NiI7Cn0KCi5nbHlwaGljb24tcmVzaXplLXNtYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwOTciOwp9CgouZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEwMSI7Cn0KCi5nbHlwaGljb24tZ2lmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTAyIjsKfQoKLmdseXBoaWNvbi1sZWFmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMDMiOwp9CgouZ2x5cGhpY29uLWZpcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEwNCI7Cn0KCi5nbHlwaGljb24tZXllLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEwNSI7Cn0KCi5nbHlwaGljb24tZXllLWNsb3NlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMDYiOwp9CgouZ2x5cGhpY29uLXdhcm5pbmctc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMTA3IjsKfQoKLmdseXBoaWNvbi1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMTA4IjsKfQoKLmdseXBoaWNvbi1jYWxlbmRhcjpiZWZvcmUgewogICAgY29udGVudDogIlxlMTA5IjsKfQoKLmdseXBoaWNvbi1yYW5kb206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTExMCI7Cn0KCi5nbHlwaGljb24tY29tbWVudDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTExIjsKfQoKLmdseXBoaWNvbi1tYWduZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTExMiI7Cn0KCi5nbHlwaGljb24tY2hldnJvbi11cDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTEzIjsKfQoKLmdseXBoaWNvbi1jaGV2cm9uLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTExNCI7Cn0KCi5nbHlwaGljb24tcmV0d2VldDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTE1IjsKfQoKLmdseXBoaWNvbi1zaG9wcGluZy1jYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMTYiOwp9CgouZ2x5cGhpY29uLWZvbGRlci1jbG9zZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMTE3IjsKfQoKLmdseXBoaWNvbi1mb2xkZXItb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMTE4IjsKfQoKLmdseXBoaWNvbi1yZXNpemUtdmVydGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTExOSI7Cn0KCi5nbHlwaGljb24tcmVzaXplLWhvcml6b250YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEyMCI7Cn0KCi5nbHlwaGljb24taGRkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMjEiOwp9CgouZ2x5cGhpY29uLWJ1bGxob3JuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMjIiOwp9CgouZ2x5cGhpY29uLWJlbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEyMyI7Cn0KCi5nbHlwaGljb24tY2VydGlmaWNhdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEyNCI7Cn0KCi5nbHlwaGljb24tdGh1bWJzLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMjUiOwp9CgouZ2x5cGhpY29uLXRodW1icy1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMjYiOwp9CgouZ2x5cGhpY29uLWhhbmQtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEyNyI7Cn0KCi5nbHlwaGljb24taGFuZC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMjgiOwp9CgouZ2x5cGhpY29uLWhhbmQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEyOSI7Cn0KCi5nbHlwaGljb24taGFuZC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMzAiOwp9CgouZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTMxIjsKfQoKLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTMyIjsKfQoKLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEzMyI7Cn0KCi5nbHlwaGljb24tY2lyY2xlLWFycm93LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEzNCI7Cn0KCi5nbHlwaGljb24tZ2xvYmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEzNSI7Cn0KCi5nbHlwaGljb24td3JlbmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMzYiOwp9CgouZ2x5cGhpY29uLXRhc2tzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxMzciOwp9CgouZ2x5cGhpY29uLWZpbHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlMTM4IjsKfQoKLmdseXBoaWNvbi1icmllZmNhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTEzOSI7Cn0KCi5nbHlwaGljb24tZnVsbHNjcmVlbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMTQwIjsKfQoKLmdseXBoaWNvbi1kYXNoYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE0MSI7Cn0KCi5nbHlwaGljb24tcGFwZXJjbGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNDIiOwp9CgouZ2x5cGhpY29uLWhlYXJ0LWVtcHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNDMiOwp9CgouZ2x5cGhpY29uLWxpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE0NCI7Cn0KCi5nbHlwaGljb24tcGhvbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE0NSI7Cn0KCi5nbHlwaGljb24tcHVzaHBpbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMTQ2IjsKfQoKLmdseXBoaWNvbi11c2Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE0OCI7Cn0KCi5nbHlwaGljb24tZ2JwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNDkiOwp9CgouZ2x5cGhpY29uLXNvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE1MCI7Cn0KCi5nbHlwaGljb24tc29ydC1ieS1hbHBoYWJldDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTUxIjsKfQoKLmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTUyIjsKfQoKLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNTMiOwp9CgouZ2x5cGhpY29uLXNvcnQtYnktb3JkZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNTQiOwp9CgouZ2x5cGhpY29uLXNvcnQtYnktYXR0cmlidXRlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMTU1IjsKfQoKLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNTYiOwp9CgouZ2x5cGhpY29uLXVuY2hlY2tlZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTU3IjsKfQoKLmdseXBoaWNvbi1leHBhbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE1OCI7Cn0KCi5nbHlwaGljb24tY29sbGFwc2UtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxlMTU5IjsKfQoKLmdseXBoaWNvbi1jb2xsYXBzZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTYwIjsKfQoKLmdseXBoaWNvbi1sb2ctaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE2MSI7Cn0KCi5nbHlwaGljb24tZmxhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE2MiI7Cn0KCi5nbHlwaGljb24tbG9nLW91dDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTYzIjsKfQoKLmdseXBoaWNvbi1uZXctd2luZG93OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNjQiOwp9CgouZ2x5cGhpY29uLXJlY29yZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTY1IjsKfQoKLmdseXBoaWNvbi1zYXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNjYiOwp9CgouZ2x5cGhpY29uLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE2NyI7Cn0KCi5nbHlwaGljb24tc2F2ZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE2OCI7Cn0KCi5nbHlwaGljb24taW1wb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNjkiOwp9CgouZ2x5cGhpY29uLWV4cG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTcwIjsKfQoKLmdseXBoaWNvbi1zZW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNzEiOwp9CgouZ2x5cGhpY29uLWZsb3BweS1kaXNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNzIiOwp9CgouZ2x5cGhpY29uLWZsb3BweS1zYXZlZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMTczIjsKfQoKLmdseXBoaWNvbi1mbG9wcHktcmVtb3ZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNzQiOwp9CgouZ2x5cGhpY29uLWZsb3BweS1zYXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNzUiOwp9CgouZ2x5cGhpY29uLWZsb3BweS1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNzYiOwp9CgouZ2x5cGhpY29uLWNyZWRpdC1jYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNzciOwp9CgouZ2x5cGhpY29uLXRyYW5zZmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxNzgiOwp9CgouZ2x5cGhpY29uLWN1dGxlcnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE3OSI7Cn0KCi5nbHlwaGljb24taGVhZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxODAiOwp9CgouZ2x5cGhpY29uLWNvbXByZXNzZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE4MSI7Cn0KCi5nbHlwaGljb24tZWFycGhvbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE4MiI7Cn0KCi5nbHlwaGljb24tcGhvbmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxODMiOwp9CgouZ2x5cGhpY29uLXRvd2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxODQiOwp9CgouZ2x5cGhpY29uLXN0YXRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxODUiOwp9CgouZ2x5cGhpY29uLXNkLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxODYiOwp9CgouZ2x5cGhpY29uLWhkLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxODciOwp9CgouZ2x5cGhpY29uLXN1YnRpdGxlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMTg4IjsKfQoKLmdseXBoaWNvbi1zb3VuZC1zdGVyZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE4OSI7Cn0KCi5nbHlwaGljb24tc291bmQtZG9sYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE5MCI7Cn0KCi5nbHlwaGljb24tc291bmQtNS0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxOTEiOwp9CgouZ2x5cGhpY29uLXNvdW5kLTYtMTpiZWZvcmUgewogICAgY29udGVudDogIlxlMTkyIjsKfQoKLmdseXBoaWNvbi1zb3VuZC03LTE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE5MyI7Cn0KCi5nbHlwaGljb24tY29weXJpZ2h0LW1hcms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE5NCI7Cn0KCi5nbHlwaGljb24tcmVnaXN0cmF0aW9uLW1hcms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE5NSI7Cn0KCi5nbHlwaGljb24tY2xvdWQtZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTE5NyI7Cn0KCi5nbHlwaGljb24tY2xvdWQtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUxOTgiOwp9CgouZ2x5cGhpY29uLXRyZWUtY29uaWZlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlMTk5IjsKfQoKLmdseXBoaWNvbi10cmVlLWRlY2lkdW91czpiZWZvcmUgewogICAgY29udGVudDogIlxlMjAwIjsKfQoKLmdseXBoaWNvbi1jZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMjAxIjsKfQoKLmdseXBoaWNvbi1zYXZlLWZpbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIwMiI7Cn0KCi5nbHlwaGljb24tb3Blbi1maWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMDMiOwp9CgouZ2x5cGhpY29uLWxldmVsLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMDQiOwp9CgouZ2x5cGhpY29uLWNvcHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIwNSI7Cn0KCi5nbHlwaGljb24tcGFzdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIwNiI7Cn0KCi5nbHlwaGljb24tYWxlcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIwOSI7Cn0KCi5nbHlwaGljb24tZXF1YWxpemVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMTAiOwp9CgouZ2x5cGhpY29uLWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIxMSI7Cn0KCi5nbHlwaGljb24tcXVlZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIxMiI7Cn0KCi5nbHlwaGljb24tcGF3bjpiZWZvcmUgewogICAgY29udGVudDogIlxlMjEzIjsKfQoKLmdseXBoaWNvbi1iaXNob3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIxNCI7Cn0KCi5nbHlwaGljb24ta25pZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMTUiOwp9CgouZ2x5cGhpY29uLWJhYnktZm9ybXVsYTpiZWZvcmUgewogICAgY29udGVudDogIlxlMjE2IjsKfQoKLmdseXBoaWNvbi10ZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDI2ZmEiOwp9CgouZ2x5cGhpY29uLWJsYWNrYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIxOCI7Cn0KCi5nbHlwaGljb24tYmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMTkiOwp9CgouZ2x5cGhpY29uLWFwcGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ZmYiOwp9CgouZ2x5cGhpY29uLWVyYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMjEiOwp9CgouZ2x5cGhpY29uLWhvdXJnbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlwyMzFiIjsKfQoKLmdseXBoaWNvbi1sYW1wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMjMiOwp9CgouZ2x5cGhpY29uLWR1cGxpY2F0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMjI0IjsKfQoKLmdseXBoaWNvbi1waWdneS1iYW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMjUiOwp9CgouZ2x5cGhpY29uLXNjaXNzb3JzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMjYiOwp9CgouZ2x5cGhpY29uLWJpdGNvaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIyNyI7Cn0KCi5nbHlwaGljb24tYnRjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMjciOwp9CgouZ2x5cGhpY29uLXhidDpiZWZvcmUgewogICAgY29udGVudDogIlxlMjI3IjsKfQoKLmdseXBoaWNvbi15ZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcMDBhNSI7Cn0KCi5nbHlwaGljb24tanB5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDAwYTUiOwp9CgouZ2x5cGhpY29uLXJ1YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDIwYmQiOwp9CgouZ2x5cGhpY29uLXJ1YjpiZWZvcmUgewogICAgY29udGVudDogIlwyMGJkIjsKfQoKLmdseXBoaWNvbi1zY2FsZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMjMwIjsKfQoKLmdseXBoaWNvbi1pY2UtbG9sbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIzMSI7Cn0KCi5nbHlwaGljb24taWNlLWxvbGx5LXRhc3RlZDpiZWZvcmUgewogICAgY29udGVudDogIlxlMjMyIjsKfQoKLmdseXBoaWNvbi1lZHVjYXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIzMyI7Cn0KCi5nbHlwaGljb24tb3B0aW9uLWhvcml6b250YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIzNCI7Cn0KCi5nbHlwaGljb24tb3B0aW9uLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMzUiOwp9CgouZ2x5cGhpY29uLW1lbnUtaGFtYnVyZ2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyMzYiOwp9CgouZ2x5cGhpY29uLW1vZGFsLXdpbmRvdzpiZWZvcmUgewogICAgY29udGVudDogIlxlMjM3IjsKfQoKLmdseXBoaWNvbi1vaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIzOCI7Cn0KCi5nbHlwaGljb24tZ3JhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTIzOSI7Cn0KCi5nbHlwaGljb24tc3VuZ2xhc3NlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMjQwIjsKfQoKLmdseXBoaWNvbi10ZXh0LXNpemU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTI0MSI7Cn0KCi5nbHlwaGljb24tdGV4dC1jb2xvcjpiZWZvcmUgewogICAgY29udGVudDogIlxlMjQyIjsKfQoKLmdseXBoaWNvbi10ZXh0LWJhY2tncm91bmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTI0MyI7Cn0KCi5nbHlwaGljb24tb2JqZWN0LWFsaWduLXRvcDpiZWZvcmUgewogICAgY29udGVudDogIlxlMjQ0IjsKfQoKLmdseXBoaWNvbi1vYmplY3QtYWxpZ24tYm90dG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyNDUiOwp9CgouZ2x5cGhpY29uLW9iamVjdC1hbGlnbi1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyNDYiOwp9CgouZ2x5cGhpY29uLW9iamVjdC1hbGlnbi1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyNDciOwp9CgouZ2x5cGhpY29uLW9iamVjdC1hbGlnbi12ZXJ0aWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxlMjQ4IjsKfQoKLmdseXBoaWNvbi1vYmplY3QtYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTI0OSI7Cn0KCi5nbHlwaGljb24tdHJpYW5nbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTI1MCI7Cn0KCi5nbHlwaGljb24tdHJpYW5nbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMjUxIjsKfQoKLmdseXBoaWNvbi10cmlhbmdsZS1ib3R0b206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTI1MiI7Cn0KCi5nbHlwaGljb24tdHJpYW5nbGUtdG9wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyNTMiOwp9CgouZ2x5cGhpY29uLWNvbnNvbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTI1NCI7Cn0KCi5nbHlwaGljb24tc3VwZXJzY3JpcHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTI1NSI7Cn0KCi5nbHlwaGljb24tc3Vic2NyaXB0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyNTYiOwp9CgouZ2x5cGhpY29uLW1lbnUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMjU3IjsKfQoKLmdseXBoaWNvbi1tZW51LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyNTgiOwp9CgouZ2x5cGhpY29uLW1lbnUtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxlMjU5IjsKfQoKLmdseXBoaWNvbi1tZW51LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUyNjAiOwp9CgoqIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCio6YmVmb3JlLAoqOmFmdGVyIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCmh0bWwgewogICAgZm9udC1zaXplOiAxMHB4Owp9Cgpib2R5IHsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS43NTsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgYmFja2dyb3VuZDogI2Y3ZjdmNzsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKfQoKaW5wdXQsCmJ1dHRvbiwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CgphIHsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7CiAgICAtby10cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7CiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7Cn0KCmE6aG92ZXIsCmE6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7CiAgICBvdXRsaW5lOiAwOwp9CgphOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7CiAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKfQoKZmlndXJlIHsKICAgIG1hcmdpbjogMDsKfQoKaW1nIHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5pbWctcmVzcG9uc2l2ZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlIFw5OwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwp9CgouaW1nLXJvdW5kZWQgewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoKLmltZy10aHVtYm5haWwgewogICAgcGFkZGluZzogNHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNzU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwMCUgXDk7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IGF1dG87Cn0KCi5pbWctY2lyY2xlIHsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKfQoKaHIgewogICAgbWFyZ2luLXRvcDogMjRweDsKICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICBib3JkZXI6IDA7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZWVlZTsKfQoKLnNyLW9ubHkgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDFweDsKICAgIGhlaWdodDogMXB4OwogICAgbWFyZ2luOiAtMXB4OwogICAgcGFkZGluZzogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogICAgYm9yZGVyOiAwOwp9Cgouc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLAouc3Itb25seS1mb2N1c2FibGU6Zm9jdXMgewogICAgcG9zaXRpb246IHN0YXRpYzsKICAgIHdpZHRoOiBhdXRvOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWFyZ2luOiAwOwogICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICBjbGlwOiBhdXRvOwp9CgpoMSwKaDIsCmgzLApoNCwKaDUsCmg2LAouaDEsCi5oMiwKLmgzLAouaDQsCi5oNSwKLmg2IHsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIiwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgpoMSBzbWFsbCwKaDEgLnNtYWxsLApoMiBzbWFsbCwKaDIgLnNtYWxsLApoMyBzbWFsbCwKaDMgLnNtYWxsLApoNCBzbWFsbCwKaDQgLnNtYWxsLApoNSBzbWFsbCwKaDUgLnNtYWxsLApoNiBzbWFsbCwKaDYgLnNtYWxsLAouaDEgc21hbGwsCi5oMSAuc21hbGwsCi5oMiBzbWFsbCwKLmgyIC5zbWFsbCwKLmgzIHNtYWxsLAouaDMgLnNtYWxsLAouaDQgc21hbGwsCi5oNCAuc21hbGwsCi5oNSBzbWFsbCwKLmg1IC5zbWFsbCwKLmg2IHNtYWxsLAouaDYgLnNtYWxsIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGNvbG9yOiAjNzc3Nzc3Owp9CgpoMSwKLmgxLApoMiwKLmgyLApoMywKLmgzIHsKICAgIG1hcmdpbi10b3A6IDI4cHg7CiAgICBtYXJnaW4tYm90dG9tOiAyOHB4Owp9CgpoMSBzbWFsbCwKaDEgLnNtYWxsLAouaDEgc21hbGwsCi5oMSAuc21hbGwsCmgyIHNtYWxsLApoMiAuc21hbGwsCi5oMiBzbWFsbCwKLmgyIC5zbWFsbCwKaDMgc21hbGwsCmgzIC5zbWFsbCwKLmgzIHNtYWxsLAouaDMgLnNtYWxsIHsKICAgIGZvbnQtc2l6ZTogNjUlOwp9CgpoNCwKLmg0LApoNSwKLmg1LApoNiwKLmg2IHsKICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4Owp9CgpoNCBzbWFsbCwKaDQgLnNtYWxsLAouaDQgc21hbGwsCi5oNCAuc21hbGwsCmg1IHNtYWxsLApoNSAuc21hbGwsCi5oNSBzbWFsbCwKLmg1IC5zbWFsbCwKaDYgc21hbGwsCmg2IC5zbWFsbCwKLmg2IHNtYWxsLAouaDYgLnNtYWxsIHsKICAgIGZvbnQtc2l6ZTogNzUlOwp9CgpoMSwKLmgxIHsKICAgIGZvbnQtc2l6ZTogMzZweDsKfQoKaDIsCi5oMiB7CiAgICBmb250LXNpemU6IDMwcHg7Cn0KCmgzLAouaDMgewogICAgZm9udC1zaXplOiAyNHB4Owp9CgpoNCwKLmg0IHsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKaDUsCi5oNSB7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCmg2LAouaDYgewogICAgZm9udC1zaXplOiAxMnB4Owp9CgpwIHsKICAgIG1hcmdpbjogMCAwIDEycHg7Cn0KCi5sZWFkIHsKICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBmb250LXdlaWdodDogMzAwOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAubGVhZCB7CiAgICAgICAgZm9udC1zaXplOiAyMXB4OwogICAgfQp9CgpzbWFsbCwKLnNtYWxsIHsKICAgIGZvbnQtc2l6ZTogODUlOwp9CgptYXJrLAoubWFyayB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogICAgcGFkZGluZzogLjJlbTsKfQoKLnRleHQtbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgoucnRsIC50ZXh0LWxlZnQgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi50ZXh0LXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgoucnRsIC50ZXh0LXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi50ZXh0LWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLnRleHQtanVzdGlmeSB7CiAgICB0ZXh0LWFsaWduOiBqdXN0aWZ5Owp9CgoudGV4dC1ub3dyYXAgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLnRleHQtbG93ZXJjYXNlIHsKICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7Cn0KCi50ZXh0LXVwcGVyY2FzZSwKLmluaXRpYWxpc20gewogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLnRleHQtY2FwaXRhbGl6ZSB7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoKLnRleHQtbXV0ZWQgewogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi50ZXh0LXByaW1hcnkgewogICAgY29sb3I6ICMyNjI2MjY7Cn0KCmEudGV4dC1wcmltYXJ5OmhvdmVyIHsKICAgIGNvbG9yOiAjMGQwZDBkOwp9CgoudGV4dC1zdWNjZXNzIHsKICAgIGNvbG9yOiAjM2M3NjNkOwp9CgphLnRleHQtc3VjY2Vzczpob3ZlciB7CiAgICBjb2xvcjogIzJiNTQyYzsKfQoKLnRleHQtaW5mbyB7CiAgICBjb2xvcjogIzMxNzA4ZjsKfQoKYS50ZXh0LWluZm86aG92ZXIgewogICAgY29sb3I6ICMyNDUyNjk7Cn0KCi50ZXh0LXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2I7Cn0KCmEudGV4dC13YXJuaW5nOmhvdmVyIHsKICAgIGNvbG9yOiAjNjY1MTJjOwp9CgoudGV4dC1kYW5nZXIgewogICAgY29sb3I6ICNhOTQ0NDI7Cn0KCmEudGV4dC1kYW5nZXI6aG92ZXIgewogICAgY29sb3I6ICM4NDM1MzQ7Cn0KCi5iZy1wcmltYXJ5IHsKICAgIGNvbG9yOiAjZmZmOwp9CgouYmctcHJpbWFyeSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2Owp9CgphLmJnLXByaW1hcnk6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzBkMGQwZDsKfQoKLmJnLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKfQoKYS5iZy1zdWNjZXNzOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjMWUyYjM7Cn0KCi5iZy1pbmZvIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjc7Cn0KCmEuYmctaW5mbzpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWZkOWVlOwp9CgouYmctd2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwp9CgphLmJnLXdhcm5pbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZWNiNTsKfQoKLmJnLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwp9CgphLmJnLWRhbmdlcjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRiOWI5Owp9CgoucGFnZS1oZWFkZXIgewogICAgcGFkZGluZy1ib3R0b206IDExcHg7CiAgICBtYXJnaW46IDQ4cHggMCAyNHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWVlZWU7Cn0KCnVsLApvbCB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKdWwgdWwsCnVsIG9sLApvbCB1bCwKb2wgb2wgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmxpc3QtdW5zdHlsZWQgewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBtYXJnaW4tbGVmdDogLTVweDsKfQoKLmxpc3QtaW5saW5lPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgcGFkZGluZy1yaWdodDogNXB4Owp9CgpkbCB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMjRweDsKfQoKZHQsCmRkIHsKICAgIGxpbmUtaGVpZ2h0OiAxLjc1Owp9CgpkdCB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKZGQgewogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kbC1ob3Jpem9udGFsIGRkOmJlZm9yZSwKLmRsLWhvcml6b250YWwgZGQ6YWZ0ZXIgewogICAgY29udGVudDogIiAiOwogICAgZGlzcGxheTogdGFibGU7Cn0KCi5kbC1ob3Jpem9udGFsIGRkOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5kbC1ob3Jpem9udGFsIGR0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB3aWR0aDogMTYwcHg7CiAgICAgICAgY2xlYXI6IGxlZnQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQogICAgLmRsLWhvcml6b250YWwgZGQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxODBweDsKICAgIH0KfQoKYWJiclt0aXRsZV0sCmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0gewogICAgY3Vyc29yOiBoZWxwOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjNzc3Nzc3Owp9CgouaW5pdGlhbGlzbSB7CiAgICBmb250LXNpemU6IDkwJTsKfQoKYmxvY2txdW90ZSB7CiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7CiAgICBtYXJnaW46IDAgMCAyNHB4OwogICAgZm9udC1zaXplOiAxNy41cHg7CiAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNlZWVlZWU7Cn0KCmJsb2NrcXVvdGUgcDpsYXN0LWNoaWxkLApibG9ja3F1b3RlIHVsOmxhc3QtY2hpbGQsCmJsb2NrcXVvdGUgb2w6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgpibG9ja3F1b3RlIGZvb3RlciwKYmxvY2txdW90ZSBzbWFsbCwKYmxvY2txdW90ZSAuc21hbGwgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDgwJTsKICAgIGxpbmUtaGVpZ2h0OiAxLjc1OwogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCmJsb2NrcXVvdGUgZm9vdGVyOmJlZm9yZSwKYmxvY2txdW90ZSBzbWFsbDpiZWZvcmUsCmJsb2NrcXVvdGUgLnNtYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXDIwMTQgXDAwQTAnOwp9CgouYmxvY2txdW90ZS1yZXZlcnNlLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIGJvcmRlci1yaWdodDogNXB4IHNvbGlkICNlZWVlZWU7CiAgICBib3JkZXItbGVmdDogMDsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouYmxvY2txdW90ZS1yZXZlcnNlIGZvb3RlcjpiZWZvcmUsCi5ibG9ja3F1b3RlLXJldmVyc2Ugc21hbGw6YmVmb3JlLAouYmxvY2txdW90ZS1yZXZlcnNlIC5zbWFsbDpiZWZvcmUsCmJsb2NrcXVvdGUucHVsbC1yaWdodCBmb290ZXI6YmVmb3JlLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGw6YmVmb3JlLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgLnNtYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKfQoKLmJsb2NrcXVvdGUtcmV2ZXJzZSBmb290ZXI6YWZ0ZXIsCi5ibG9ja3F1b3RlLXJldmVyc2Ugc21hbGw6YWZ0ZXIsCi5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmFmdGVyLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgZm9vdGVyOmFmdGVyLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGw6YWZ0ZXIsCmJsb2NrcXVvdGUucHVsbC1yaWdodCAuc21hbGw6YWZ0ZXIgewogICAgY29udGVudDogJ1wwMEEwIFwyMDE0JzsKfQoKYWRkcmVzcyB7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDEuNzU7Cn0KCmNvZGUsCmtiZCwKcHJlLApzYW1wIHsKICAgIGZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9Cgpjb2RlIHsKICAgIHBhZGRpbmc6IDJweCA0cHg7CiAgICBmb250LXNpemU6IDkwJTsKICAgIGNvbG9yOiAjMWY4NmVmOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMSwgMTM0LCAyMzksIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KCmtiZCB7CiAgICBwYWRkaW5nOiAycHggNHB4OwogICAgZm9udC1zaXplOiA5MCU7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzM7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpOwp9CgprYmQga2JkIHsKICAgIHBhZGRpbmc6IDA7CiAgICBmb250LXNpemU6IDEwMCU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgpwcmUgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiAxMS41cHg7CiAgICBtYXJnaW46IDAgMCAxMnB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgbGluZS1oZWlnaHQ6IDEuNzU7CiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICBjb2xvcjogIzMzMzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgYm9yZGVyLXJhZGl1czogMDsKfQoKcHJlIGNvZGUgewogICAgcGFkZGluZzogMDsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiAwOwp9CgoucHJlLXNjcm9sbGFibGUgewogICAgbWF4LWhlaWdodDogMzQwcHg7CiAgICBvdmVyZmxvdy15OiBzY3JvbGw7Cn0KCi5jb250YWluZXIgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgouY29udGFpbmVyOmJlZm9yZSwKLmNvbnRhaW5lcjphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBkaXNwbGF5OiB0YWJsZTsKfQoKLmNvbnRhaW5lcjphZnRlciB7CiAgICBjbGVhcjogYm90aDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogNzUwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLmNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDk3MHB4OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTE3MHB4OwogICAgfQp9CgouY29udGFpbmVyLWZsdWlkIHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKfQoKLmNvbnRhaW5lci1mbHVpZDpiZWZvcmUsCi5jb250YWluZXItZmx1aWQ6YWZ0ZXIgewogICAgY29udGVudDogIiAiOwogICAgZGlzcGxheTogdGFibGU7Cn0KCi5jb250YWluZXItZmx1aWQ6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7Cn0KCi5yb3cgewogICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKfQoKLnJvdzpiZWZvcmUsCi5yb3c6YWZ0ZXIgewogICAgY29udGVudDogIiAiOwogICAgZGlzcGxheTogdGFibGU7Cn0KCi5yb3c6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7Cn0KCi5jb2wteHMtMSwKLmNvbC1zbS0xLAouY29sLW1kLTEsCi5jb2wtbGctMSwKLmNvbC14cy0yLAouY29sLXNtLTIsCi5jb2wtbWQtMiwKLmNvbC1sZy0yLAouY29sLXhzLTMsCi5jb2wtc20tMywKLmNvbC1tZC0zLAouY29sLWxnLTMsCi5jb2wteHMtNCwKLmNvbC1zbS00LAouY29sLW1kLTQsCi5jb2wtbGctNCwKLmNvbC14cy01LAouY29sLXNtLTUsCi5jb2wtbWQtNSwKLmNvbC1sZy01LAouY29sLXhzLTYsCi5jb2wtc20tNiwKLmNvbC1tZC02LAouY29sLWxnLTYsCi5jb2wteHMtNywKLmNvbC1zbS03LAouY29sLW1kLTcsCi5jb2wtbGctNywKLmNvbC14cy04LAouY29sLXNtLTgsCi5jb2wtbWQtOCwKLmNvbC1sZy04LAouY29sLXhzLTksCi5jb2wtc20tOSwKLmNvbC1tZC05LAouY29sLWxnLTksCi5jb2wteHMtMTAsCi5jb2wtc20tMTAsCi5jb2wtbWQtMTAsCi5jb2wtbGctMTAsCi5jb2wteHMtMTEsCi5jb2wtc20tMTEsCi5jb2wtbWQtMTEsCi5jb2wtbGctMTEsCi5jb2wteHMtMTIsCi5jb2wtc20tMTIsCi5jb2wtbWQtMTIsCi5jb2wtbGctMTIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWluLWhlaWdodDogMXB4OwogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKfQoKLmNvbC14cy0xLAouY29sLXhzLTIsCi5jb2wteHMtMywKLmNvbC14cy00LAouY29sLXhzLTUsCi5jb2wteHMtNiwKLmNvbC14cy03LAouY29sLXhzLTgsCi5jb2wteHMtOSwKLmNvbC14cy0xMCwKLmNvbC14cy0xMSwKLmNvbC14cy0xMiB7CiAgICBmbG9hdDogbGVmdDsKfQoKLmNvbC14cy0xIHsKICAgIHdpZHRoOiA4LjMzMzMzJTsKfQoKLmNvbC14cy0yIHsKICAgIHdpZHRoOiAxNi42NjY2NyU7Cn0KCi5jb2wteHMtMyB7CiAgICB3aWR0aDogMjUlOwp9CgouY29sLXhzLTQgewogICAgd2lkdGg6IDMzLjMzMzMzJTsKfQoKLmNvbC14cy01IHsKICAgIHdpZHRoOiA0MS42NjY2NyU7Cn0KCi5jb2wteHMtNiB7CiAgICB3aWR0aDogNTAlOwp9CgouY29sLXhzLTcgewogICAgd2lkdGg6IDU4LjMzMzMzJTsKfQoKLmNvbC14cy04IHsKICAgIHdpZHRoOiA2Ni42NjY2NyU7Cn0KCi5jb2wteHMtOSB7CiAgICB3aWR0aDogNzUlOwp9CgouY29sLXhzLTEwIHsKICAgIHdpZHRoOiA4My4zMzMzMyU7Cn0KCi5jb2wteHMtMTEgewogICAgd2lkdGg6IDkxLjY2NjY3JTsKfQoKLmNvbC14cy0xMiB7CiAgICB3aWR0aDogMTAwJTsKfQoKLmNvbC14cy1wdWxsLTAgewogICAgcmlnaHQ6IGF1dG87Cn0KCi5jb2wteHMtcHVsbC0xIHsKICAgIHJpZ2h0OiA4LjMzMzMzJTsKfQoKLmNvbC14cy1wdWxsLTIgewogICAgcmlnaHQ6IDE2LjY2NjY3JTsKfQoKLmNvbC14cy1wdWxsLTMgewogICAgcmlnaHQ6IDI1JTsKfQoKLmNvbC14cy1wdWxsLTQgewogICAgcmlnaHQ6IDMzLjMzMzMzJTsKfQoKLmNvbC14cy1wdWxsLTUgewogICAgcmlnaHQ6IDQxLjY2NjY3JTsKfQoKLmNvbC14cy1wdWxsLTYgewogICAgcmlnaHQ6IDUwJTsKfQoKLmNvbC14cy1wdWxsLTcgewogICAgcmlnaHQ6IDU4LjMzMzMzJTsKfQoKLmNvbC14cy1wdWxsLTggewogICAgcmlnaHQ6IDY2LjY2NjY3JTsKfQoKLmNvbC14cy1wdWxsLTkgewogICAgcmlnaHQ6IDc1JTsKfQoKLmNvbC14cy1wdWxsLTEwIHsKICAgIHJpZ2h0OiA4My4zMzMzMyU7Cn0KCi5jb2wteHMtcHVsbC0xMSB7CiAgICByaWdodDogOTEuNjY2NjclOwp9CgouY29sLXhzLXB1bGwtMTIgewogICAgcmlnaHQ6IDEwMCU7Cn0KCi5jb2wteHMtcHVzaC0wIHsKICAgIGxlZnQ6IGF1dG87Cn0KCi5jb2wteHMtcHVzaC0xIHsKICAgIGxlZnQ6IDguMzMzMzMlOwp9CgouY29sLXhzLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NyU7Cn0KCi5jb2wteHMtcHVzaC0zIHsKICAgIGxlZnQ6IDI1JTsKfQoKLmNvbC14cy1wdXNoLTQgewogICAgbGVmdDogMzMuMzMzMzMlOwp9CgouY29sLXhzLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NyU7Cn0KCi5jb2wteHMtcHVzaC02IHsKICAgIGxlZnQ6IDUwJTsKfQoKLmNvbC14cy1wdXNoLTcgewogICAgbGVmdDogNTguMzMzMzMlOwp9CgouY29sLXhzLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NyU7Cn0KCi5jb2wteHMtcHVzaC05IHsKICAgIGxlZnQ6IDc1JTsKfQoKLmNvbC14cy1wdXNoLTEwIHsKICAgIGxlZnQ6IDgzLjMzMzMzJTsKfQoKLmNvbC14cy1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY3JTsKfQoKLmNvbC14cy1wdXNoLTEyIHsKICAgIGxlZnQ6IDEwMCU7Cn0KCi5jb2wteHMtb2Zmc2V0LTAgewogICAgbWFyZ2luLWxlZnQ6IDAlOwp9CgouY29sLXhzLW9mZnNldC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzJTsKfQoKLmNvbC14cy1vZmZzZXQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjclOwp9CgouY29sLXhzLW9mZnNldC0zIHsKICAgIG1hcmdpbi1sZWZ0OiAyNSU7Cn0KCi5jb2wteHMtb2Zmc2V0LTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzJTsKfQoKLmNvbC14cy1vZmZzZXQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjclOwp9CgouY29sLXhzLW9mZnNldC02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7Cn0KCi5jb2wteHMtb2Zmc2V0LTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzJTsKfQoKLmNvbC14cy1vZmZzZXQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjclOwp9CgouY29sLXhzLW9mZnNldC05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7Cn0KCi5jb2wteHMtb2Zmc2V0LTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7Cn0KCi5jb2wteHMtb2Zmc2V0LTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NyU7Cn0KCi5jb2wteHMtb2Zmc2V0LTEyIHsKICAgIG1hcmdpbi1sZWZ0OiAxMDAlOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5jb2wtc20tMSwKICAgIC5jb2wtc20tMiwKICAgIC5jb2wtc20tMywKICAgIC5jb2wtc20tNCwKICAgIC5jb2wtc20tNSwKICAgIC5jb2wtc20tNiwKICAgIC5jb2wtc20tNywKICAgIC5jb2wtc20tOCwKICAgIC5jb2wtc20tOSwKICAgIC5jb2wtc20tMTAsCiAgICAuY29sLXNtLTExLAogICAgLmNvbC1zbS0xMiB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICB9CiAgICAuY29sLXNtLTEgewogICAgICAgIHdpZHRoOiA4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tMiB7CiAgICAgICAgd2lkdGg6IDE2LjY2NjY3JTsKICAgIH0KICAgIC5jb2wtc20tMyB7CiAgICAgICAgd2lkdGg6IDI1JTsKICAgIH0KICAgIC5jb2wtc20tNCB7CiAgICAgICAgd2lkdGg6IDMzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tNSB7CiAgICAgICAgd2lkdGg6IDQxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtc20tNiB7CiAgICAgICAgd2lkdGg6IDUwJTsKICAgIH0KICAgIC5jb2wtc20tNyB7CiAgICAgICAgd2lkdGg6IDU4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tOCB7CiAgICAgICAgd2lkdGg6IDY2LjY2NjY3JTsKICAgIH0KICAgIC5jb2wtc20tOSB7CiAgICAgICAgd2lkdGg6IDc1JTsKICAgIH0KICAgIC5jb2wtc20tMTAgewogICAgICAgIHdpZHRoOiA4My4zMzMzMyU7CiAgICB9CiAgICAuY29sLXNtLTExIHsKICAgICAgICB3aWR0aDogOTEuNjY2NjclOwogICAgfQogICAgLmNvbC1zbS0xMiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuY29sLXNtLXB1bGwtMCB7CiAgICAgICAgcmlnaHQ6IGF1dG87CiAgICB9CiAgICAuY29sLXNtLXB1bGwtMSB7CiAgICAgICAgcmlnaHQ6IDguMzMzMzMlOwogICAgfQogICAgLmNvbC1zbS1wdWxsLTIgewogICAgICAgIHJpZ2h0OiAxNi42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLXB1bGwtMyB7CiAgICAgICAgcmlnaHQ6IDI1JTsKICAgIH0KICAgIC5jb2wtc20tcHVsbC00IHsKICAgICAgICByaWdodDogMzMuMzMzMzMlOwogICAgfQogICAgLmNvbC1zbS1wdWxsLTUgewogICAgICAgIHJpZ2h0OiA0MS42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLXB1bGwtNiB7CiAgICAgICAgcmlnaHQ6IDUwJTsKICAgIH0KICAgIC5jb2wtc20tcHVsbC03IHsKICAgICAgICByaWdodDogNTguMzMzMzMlOwogICAgfQogICAgLmNvbC1zbS1wdWxsLTggewogICAgICAgIHJpZ2h0OiA2Ni42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLXB1bGwtOSB7CiAgICAgICAgcmlnaHQ6IDc1JTsKICAgIH0KICAgIC5jb2wtc20tcHVsbC0xMCB7CiAgICAgICAgcmlnaHQ6IDgzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tcHVsbC0xMSB7CiAgICAgICAgcmlnaHQ6IDkxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtc20tcHVsbC0xMiB7CiAgICAgICAgcmlnaHQ6IDEwMCU7CiAgICB9CiAgICAuY29sLXNtLXB1c2gtMCB7CiAgICAgICAgbGVmdDogYXV0bzsKICAgIH0KICAgIC5jb2wtc20tcHVzaC0xIHsKICAgICAgICBsZWZ0OiA4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tcHVzaC0yIHsKICAgICAgICBsZWZ0OiAxNi42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLXB1c2gtMyB7CiAgICAgICAgbGVmdDogMjUlOwogICAgfQogICAgLmNvbC1zbS1wdXNoLTQgewogICAgICAgIGxlZnQ6IDMzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tcHVzaC01IHsKICAgICAgICBsZWZ0OiA0MS42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLXB1c2gtNiB7CiAgICAgICAgbGVmdDogNTAlOwogICAgfQogICAgLmNvbC1zbS1wdXNoLTcgewogICAgICAgIGxlZnQ6IDU4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tcHVzaC04IHsKICAgICAgICBsZWZ0OiA2Ni42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLXB1c2gtOSB7CiAgICAgICAgbGVmdDogNzUlOwogICAgfQogICAgLmNvbC1zbS1wdXNoLTEwIHsKICAgICAgICBsZWZ0OiA4My4zMzMzMyU7CiAgICB9CiAgICAuY29sLXNtLXB1c2gtMTEgewogICAgICAgIGxlZnQ6IDkxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtc20tcHVzaC0xMiB7CiAgICAgICAgbGVmdDogMTAwJTsKICAgIH0KICAgIC5jb2wtc20tb2Zmc2V0LTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiAwJTsKICAgIH0KICAgIC5jb2wtc20tb2Zmc2V0LTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tb2Zmc2V0LTIgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLW9mZnNldC0zIHsKICAgICAgICBtYXJnaW4tbGVmdDogMjUlOwogICAgfQogICAgLmNvbC1zbS1vZmZzZXQtNCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tb2Zmc2V0LTUgewogICAgICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLW9mZnNldC02IHsKICAgICAgICBtYXJnaW4tbGVmdDogNTAlOwogICAgfQogICAgLmNvbC1zbS1vZmZzZXQtNyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtc20tb2Zmc2V0LTggewogICAgICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7CiAgICB9CiAgICAuY29sLXNtLW9mZnNldC05IHsKICAgICAgICBtYXJnaW4tbGVmdDogNzUlOwogICAgfQogICAgLmNvbC1zbS1vZmZzZXQtMTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7CiAgICB9CiAgICAuY29sLXNtLW9mZnNldC0xMSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtc20tb2Zmc2V0LTEyIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTAwJTsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgICAuY29sLW1kLTEsCiAgICAuY29sLW1kLTIsCiAgICAuY29sLW1kLTMsCiAgICAuY29sLW1kLTQsCiAgICAuY29sLW1kLTUsCiAgICAuY29sLW1kLTYsCiAgICAuY29sLW1kLTcsCiAgICAuY29sLW1kLTgsCiAgICAuY29sLW1kLTksCiAgICAuY29sLW1kLTEwLAogICAgLmNvbC1tZC0xMSwKICAgIC5jb2wtbWQtMTIgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgfQogICAgLmNvbC1tZC0xIHsKICAgICAgICB3aWR0aDogOC4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLTIgewogICAgICAgIHdpZHRoOiAxNi42NjY2NyU7CiAgICB9CiAgICAuY29sLW1kLTMgewogICAgICAgIHdpZHRoOiAyNSU7CiAgICB9CiAgICAuY29sLW1kLTQgewogICAgICAgIHdpZHRoOiAzMy4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLTUgewogICAgICAgIHdpZHRoOiA0MS42NjY2NyU7CiAgICB9CiAgICAuY29sLW1kLTYgewogICAgICAgIHdpZHRoOiA1MCU7CiAgICB9CiAgICAuY29sLW1kLTcgewogICAgICAgIHdpZHRoOiA1OC4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLTggewogICAgICAgIHdpZHRoOiA2Ni42NjY2NyU7CiAgICB9CiAgICAuY29sLW1kLTkgewogICAgICAgIHdpZHRoOiA3NSU7CiAgICB9CiAgICAuY29sLW1kLTEwIHsKICAgICAgICB3aWR0aDogODMuMzMzMzMlOwogICAgfQogICAgLmNvbC1tZC0xMSB7CiAgICAgICAgd2lkdGg6IDkxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtbWQtMTIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgLmNvbC1tZC1wdWxsLTAgewogICAgICAgIHJpZ2h0OiBhdXRvOwogICAgfQogICAgLmNvbC1tZC1wdWxsLTEgewogICAgICAgIHJpZ2h0OiA4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbWQtcHVsbC0yIHsKICAgICAgICByaWdodDogMTYuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1wdWxsLTMgewogICAgICAgIHJpZ2h0OiAyNSU7CiAgICB9CiAgICAuY29sLW1kLXB1bGwtNCB7CiAgICAgICAgcmlnaHQ6IDMzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbWQtcHVsbC01IHsKICAgICAgICByaWdodDogNDEuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1wdWxsLTYgewogICAgICAgIHJpZ2h0OiA1MCU7CiAgICB9CiAgICAuY29sLW1kLXB1bGwtNyB7CiAgICAgICAgcmlnaHQ6IDU4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbWQtcHVsbC04IHsKICAgICAgICByaWdodDogNjYuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1wdWxsLTkgewogICAgICAgIHJpZ2h0OiA3NSU7CiAgICB9CiAgICAuY29sLW1kLXB1bGwtMTAgewogICAgICAgIHJpZ2h0OiA4My4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLXB1bGwtMTEgewogICAgICAgIHJpZ2h0OiA5MS42NjY2NyU7CiAgICB9CiAgICAuY29sLW1kLXB1bGwtMTIgewogICAgICAgIHJpZ2h0OiAxMDAlOwogICAgfQogICAgLmNvbC1tZC1wdXNoLTAgewogICAgICAgIGxlZnQ6IGF1dG87CiAgICB9CiAgICAuY29sLW1kLXB1c2gtMSB7CiAgICAgICAgbGVmdDogOC4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLXB1c2gtMiB7CiAgICAgICAgbGVmdDogMTYuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1wdXNoLTMgewogICAgICAgIGxlZnQ6IDI1JTsKICAgIH0KICAgIC5jb2wtbWQtcHVzaC00IHsKICAgICAgICBsZWZ0OiAzMy4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLXB1c2gtNSB7CiAgICAgICAgbGVmdDogNDEuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1wdXNoLTYgewogICAgICAgIGxlZnQ6IDUwJTsKICAgIH0KICAgIC5jb2wtbWQtcHVzaC03IHsKICAgICAgICBsZWZ0OiA1OC4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLXB1c2gtOCB7CiAgICAgICAgbGVmdDogNjYuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1wdXNoLTkgewogICAgICAgIGxlZnQ6IDc1JTsKICAgIH0KICAgIC5jb2wtbWQtcHVzaC0xMCB7CiAgICAgICAgbGVmdDogODMuMzMzMzMlOwogICAgfQogICAgLmNvbC1tZC1wdXNoLTExIHsKICAgICAgICBsZWZ0OiA5MS42NjY2NyU7CiAgICB9CiAgICAuY29sLW1kLXB1c2gtMTIgewogICAgICAgIGxlZnQ6IDEwMCU7CiAgICB9CiAgICAuY29sLW1kLW9mZnNldC0wIHsKICAgICAgICBtYXJnaW4tbGVmdDogMCU7CiAgICB9CiAgICAuY29sLW1kLW9mZnNldC0xIHsKICAgICAgICBtYXJnaW4tbGVmdDogOC4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLW9mZnNldC0yIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1vZmZzZXQtMyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDI1JTsKICAgIH0KICAgIC5jb2wtbWQtb2Zmc2V0LTQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLW9mZnNldC01IHsKICAgICAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1vZmZzZXQtNiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDUwJTsKICAgIH0KICAgIC5jb2wtbWQtb2Zmc2V0LTcgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMyU7CiAgICB9CiAgICAuY29sLW1kLW9mZnNldC04IHsKICAgICAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjclOwogICAgfQogICAgLmNvbC1tZC1vZmZzZXQtOSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDc1JTsKICAgIH0KICAgIC5jb2wtbWQtb2Zmc2V0LTEwIHsKICAgICAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMlOwogICAgfQogICAgLmNvbC1tZC1vZmZzZXQtMTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NyU7CiAgICB9CiAgICAuY29sLW1kLW9mZnNldC0xMiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMCU7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5jb2wtbGctMSwKICAgIC5jb2wtbGctMiwKICAgIC5jb2wtbGctMywKICAgIC5jb2wtbGctNCwKICAgIC5jb2wtbGctNSwKICAgIC5jb2wtbGctNiwKICAgIC5jb2wtbGctNywKICAgIC5jb2wtbGctOCwKICAgIC5jb2wtbGctOSwKICAgIC5jb2wtbGctMTAsCiAgICAuY29sLWxnLTExLAogICAgLmNvbC1sZy0xMiB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICB9CiAgICAuY29sLWxnLTEgewogICAgICAgIHdpZHRoOiA4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctMiB7CiAgICAgICAgd2lkdGg6IDE2LjY2NjY3JTsKICAgIH0KICAgIC5jb2wtbGctMyB7CiAgICAgICAgd2lkdGg6IDI1JTsKICAgIH0KICAgIC5jb2wtbGctNCB7CiAgICAgICAgd2lkdGg6IDMzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctNSB7CiAgICAgICAgd2lkdGg6IDQxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtbGctNiB7CiAgICAgICAgd2lkdGg6IDUwJTsKICAgIH0KICAgIC5jb2wtbGctNyB7CiAgICAgICAgd2lkdGg6IDU4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctOCB7CiAgICAgICAgd2lkdGg6IDY2LjY2NjY3JTsKICAgIH0KICAgIC5jb2wtbGctOSB7CiAgICAgICAgd2lkdGg6IDc1JTsKICAgIH0KICAgIC5jb2wtbGctMTAgewogICAgICAgIHdpZHRoOiA4My4zMzMzMyU7CiAgICB9CiAgICAuY29sLWxnLTExIHsKICAgICAgICB3aWR0aDogOTEuNjY2NjclOwogICAgfQogICAgLmNvbC1sZy0xMiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuY29sLWxnLXB1bGwtMCB7CiAgICAgICAgcmlnaHQ6IGF1dG87CiAgICB9CiAgICAuY29sLWxnLXB1bGwtMSB7CiAgICAgICAgcmlnaHQ6IDguMzMzMzMlOwogICAgfQogICAgLmNvbC1sZy1wdWxsLTIgewogICAgICAgIHJpZ2h0OiAxNi42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLXB1bGwtMyB7CiAgICAgICAgcmlnaHQ6IDI1JTsKICAgIH0KICAgIC5jb2wtbGctcHVsbC00IHsKICAgICAgICByaWdodDogMzMuMzMzMzMlOwogICAgfQogICAgLmNvbC1sZy1wdWxsLTUgewogICAgICAgIHJpZ2h0OiA0MS42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLXB1bGwtNiB7CiAgICAgICAgcmlnaHQ6IDUwJTsKICAgIH0KICAgIC5jb2wtbGctcHVsbC03IHsKICAgICAgICByaWdodDogNTguMzMzMzMlOwogICAgfQogICAgLmNvbC1sZy1wdWxsLTggewogICAgICAgIHJpZ2h0OiA2Ni42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLXB1bGwtOSB7CiAgICAgICAgcmlnaHQ6IDc1JTsKICAgIH0KICAgIC5jb2wtbGctcHVsbC0xMCB7CiAgICAgICAgcmlnaHQ6IDgzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctcHVsbC0xMSB7CiAgICAgICAgcmlnaHQ6IDkxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtbGctcHVsbC0xMiB7CiAgICAgICAgcmlnaHQ6IDEwMCU7CiAgICB9CiAgICAuY29sLWxnLXB1c2gtMCB7CiAgICAgICAgbGVmdDogYXV0bzsKICAgIH0KICAgIC5jb2wtbGctcHVzaC0xIHsKICAgICAgICBsZWZ0OiA4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctcHVzaC0yIHsKICAgICAgICBsZWZ0OiAxNi42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLXB1c2gtMyB7CiAgICAgICAgbGVmdDogMjUlOwogICAgfQogICAgLmNvbC1sZy1wdXNoLTQgewogICAgICAgIGxlZnQ6IDMzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctcHVzaC01IHsKICAgICAgICBsZWZ0OiA0MS42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLXB1c2gtNiB7CiAgICAgICAgbGVmdDogNTAlOwogICAgfQogICAgLmNvbC1sZy1wdXNoLTcgewogICAgICAgIGxlZnQ6IDU4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctcHVzaC04IHsKICAgICAgICBsZWZ0OiA2Ni42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLXB1c2gtOSB7CiAgICAgICAgbGVmdDogNzUlOwogICAgfQogICAgLmNvbC1sZy1wdXNoLTEwIHsKICAgICAgICBsZWZ0OiA4My4zMzMzMyU7CiAgICB9CiAgICAuY29sLWxnLXB1c2gtMTEgewogICAgICAgIGxlZnQ6IDkxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtbGctcHVzaC0xMiB7CiAgICAgICAgbGVmdDogMTAwJTsKICAgIH0KICAgIC5jb2wtbGctb2Zmc2V0LTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiAwJTsKICAgIH0KICAgIC5jb2wtbGctb2Zmc2V0LTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctb2Zmc2V0LTIgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLW9mZnNldC0zIHsKICAgICAgICBtYXJnaW4tbGVmdDogMjUlOwogICAgfQogICAgLmNvbC1sZy1vZmZzZXQtNCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctb2Zmc2V0LTUgewogICAgICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLW9mZnNldC02IHsKICAgICAgICBtYXJnaW4tbGVmdDogNTAlOwogICAgfQogICAgLmNvbC1sZy1vZmZzZXQtNyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzJTsKICAgIH0KICAgIC5jb2wtbGctb2Zmc2V0LTggewogICAgICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7CiAgICB9CiAgICAuY29sLWxnLW9mZnNldC05IHsKICAgICAgICBtYXJnaW4tbGVmdDogNzUlOwogICAgfQogICAgLmNvbC1sZy1vZmZzZXQtMTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7CiAgICB9CiAgICAuY29sLWxnLW9mZnNldC0xMSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsKICAgIH0KICAgIC5jb2wtbGctb2Zmc2V0LTEyIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTAwJTsKICAgIH0KfQoKdGFibGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCnRoIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCnRhYmxlLAoudGFibGUgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4Owp9Cgp0YWJsZT50aGVhZD50cj50aCwKdGFibGU+dGhlYWQ+dHI+dGQsCnRhYmxlPnRib2R5PnRyPnRoLAp0YWJsZT50Ym9keT50cj50ZCwKdGFibGU+dGZvb3Q+dHI+dGgsCnRhYmxlPnRmb290PnRyPnRkLAoudGFibGU+dGhlYWQ+dHI+dGgsCi50YWJsZT50aGVhZD50cj50ZCwKLnRhYmxlPnRib2R5PnRyPnRoLAoudGFibGU+dGJvZHk+dHI+dGQsCi50YWJsZT50Zm9vdD50cj50aCwKLnRhYmxlPnRmb290PnRyPnRkIHsKICAgIHBhZGRpbmc6IDhweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjc1OwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwp9Cgp0YWJsZT50aGVhZD50cj50aCwKLnRhYmxlPnRoZWFkPnRyPnRoIHsKICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RkZDsKfQoKdGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50aCwKdGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwKdGFibGU+Y29sZ3JvdXArdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGgsCnRhYmxlPmNvbGdyb3VwK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRkLAp0YWJsZT50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZD50aCwKdGFibGU+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQ+dGQsCi50YWJsZT5jYXB0aW9uK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLAoudGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwKLnRhYmxlPmNvbGdyb3VwK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLAoudGFibGU+Y29sZ3JvdXArdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsCi50YWJsZT50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZD50aCwKLnRhYmxlPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkPnRkIHsKICAgIGJvcmRlci10b3A6IDA7Cn0KCnRhYmxlPnRib2R5K3Rib2R5LAoudGFibGU+dGJvZHkrdGJvZHkgewogICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNkZGQ7Cn0KCnRhYmxlIC50YWJsZSwKLnRhYmxlIC50YWJsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3Owp9CgoudGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRoLAoudGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRkLAoudGFibGUtY29uZGVuc2VkPnRib2R5PnRyPnRoLAoudGFibGUtY29uZGVuc2VkPnRib2R5PnRyPnRkLAoudGFibGUtY29uZGVuc2VkPnRmb290PnRyPnRoLAoudGFibGUtY29uZGVuc2VkPnRmb290PnRyPnRkIHsKICAgIHBhZGRpbmc6IDVweDsKfQoKdGFibGUsCi50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9Cgp0YWJsZT50aGVhZD50cj50aCwKdGFibGU+dGhlYWQ+dHI+dGQsCnRhYmxlPnRib2R5PnRyPnRoLAp0YWJsZT50Ym9keT50cj50ZCwKdGFibGU+dGZvb3Q+dHI+dGgsCnRhYmxlPnRmb290PnRyPnRkLAoudGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGgsCi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZCwKLnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoLAoudGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQsCi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aCwKLnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KCnRhYmxlPnRoZWFkPnRyPnRoLAp0YWJsZT50aGVhZD50cj50ZCwKLnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoLAoudGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQgewogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4Owp9CgoudGFibGUtc3RyaXBlZD50Ym9keT50cjpudGgtY2hpbGQob2RkKT50ZCwKLnRhYmxlLXN0cmlwZWQ+dGJvZHk+dHI6bnRoLWNoaWxkKG9kZCk+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTsKfQoKLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPnRkLAoudGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXI+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKfQoKdGFibGUgY29sW2NsYXNzKj0iY29sLSJdIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICBmbG9hdDogbm9uZTsKICAgIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjsKfQoKdGFibGUgdGRbY2xhc3MqPSJjb2wtIl0sCnRhYmxlIHRoW2NsYXNzKj0iY29sLSJdIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICBmbG9hdDogbm9uZTsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7Cn0KCi50YWJsZT50aGVhZD50cj50ZC5hY3RpdmUsCi50YWJsZT50aGVhZD50cj50aC5hY3RpdmUsCi50YWJsZT50aGVhZD50ci5hY3RpdmU+dGQsCi50YWJsZT50aGVhZD50ci5hY3RpdmU+dGgsCi50YWJsZT50Ym9keT50cj50ZC5hY3RpdmUsCi50YWJsZT50Ym9keT50cj50aC5hY3RpdmUsCi50YWJsZT50Ym9keT50ci5hY3RpdmU+dGQsCi50YWJsZT50Ym9keT50ci5hY3RpdmU+dGgsCi50YWJsZT50Zm9vdD50cj50ZC5hY3RpdmUsCi50YWJsZT50Zm9vdD50cj50aC5hY3RpdmUsCi50YWJsZT50Zm9vdD50ci5hY3RpdmU+dGQsCi50YWJsZT50Zm9vdD50ci5hY3RpdmU+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKfQoKLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmFjdGl2ZTpob3ZlciwKLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLmFjdGl2ZTpob3ZlciwKLnRhYmxlLWhvdmVyPnRib2R5PnRyLmFjdGl2ZTpob3Zlcj50ZCwKLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5hY3RpdmUsCi50YWJsZS1ob3Zlcj50Ym9keT50ci5hY3RpdmU6aG92ZXI+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZThlODsKfQoKLnRhYmxlPnRoZWFkPnRyPnRkLnN1Y2Nlc3MsCi50YWJsZT50aGVhZD50cj50aC5zdWNjZXNzLAoudGFibGU+dGhlYWQ+dHIuc3VjY2Vzcz50ZCwKLnRhYmxlPnRoZWFkPnRyLnN1Y2Nlc3M+dGgsCi50YWJsZT50Ym9keT50cj50ZC5zdWNjZXNzLAoudGFibGU+dGJvZHk+dHI+dGguc3VjY2VzcywKLnRhYmxlPnRib2R5PnRyLnN1Y2Nlc3M+dGQsCi50YWJsZT50Ym9keT50ci5zdWNjZXNzPnRoLAoudGFibGU+dGZvb3Q+dHI+dGQuc3VjY2VzcywKLnRhYmxlPnRmb290PnRyPnRoLnN1Y2Nlc3MsCi50YWJsZT50Zm9vdD50ci5zdWNjZXNzPnRkLAoudGFibGU+dGZvb3Q+dHIuc3VjY2Vzcz50aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmMGQ4Owp9CgoudGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuc3VjY2Vzczpob3ZlciwKLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLnN1Y2Nlc3M6aG92ZXIsCi50YWJsZS1ob3Zlcj50Ym9keT50ci5zdWNjZXNzOmhvdmVyPnRkLAoudGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXI+LnN1Y2Nlc3MsCi50YWJsZS1ob3Zlcj50Ym9keT50ci5zdWNjZXNzOmhvdmVyPnRoIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkMGU5YzY7Cn0KCi50YWJsZT50aGVhZD50cj50ZC5pbmZvLAoudGFibGU+dGhlYWQ+dHI+dGguaW5mbywKLnRhYmxlPnRoZWFkPnRyLmluZm8+dGQsCi50YWJsZT50aGVhZD50ci5pbmZvPnRoLAoudGFibGU+dGJvZHk+dHI+dGQuaW5mbywKLnRhYmxlPnRib2R5PnRyPnRoLmluZm8sCi50YWJsZT50Ym9keT50ci5pbmZvPnRkLAoudGFibGU+dGJvZHk+dHIuaW5mbz50aCwKLnRhYmxlPnRmb290PnRyPnRkLmluZm8sCi50YWJsZT50Zm9vdD50cj50aC5pbmZvLAoudGFibGU+dGZvb3Q+dHIuaW5mbz50ZCwKLnRhYmxlPnRmb290PnRyLmluZm8+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNzsKfQoKLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmluZm86aG92ZXIsCi50YWJsZS1ob3Zlcj50Ym9keT50cj50aC5pbmZvOmhvdmVyLAoudGFibGUtaG92ZXI+dGJvZHk+dHIuaW5mbzpob3Zlcj50ZCwKLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5pbmZvLAoudGFibGUtaG92ZXI+dGJvZHk+dHIuaW5mbzpob3Zlcj50aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRlM2YzOwp9CgoudGFibGU+dGhlYWQ+dHI+dGQud2FybmluZywKLnRhYmxlPnRoZWFkPnRyPnRoLndhcm5pbmcsCi50YWJsZT50aGVhZD50ci53YXJuaW5nPnRkLAoudGFibGU+dGhlYWQ+dHIud2FybmluZz50aCwKLnRhYmxlPnRib2R5PnRyPnRkLndhcm5pbmcsCi50YWJsZT50Ym9keT50cj50aC53YXJuaW5nLAoudGFibGU+dGJvZHk+dHIud2FybmluZz50ZCwKLnRhYmxlPnRib2R5PnRyLndhcm5pbmc+dGgsCi50YWJsZT50Zm9vdD50cj50ZC53YXJuaW5nLAoudGFibGU+dGZvb3Q+dHI+dGgud2FybmluZywKLnRhYmxlPnRmb290PnRyLndhcm5pbmc+dGQsCi50YWJsZT50Zm9vdD50ci53YXJuaW5nPnRoIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7Cn0KCi50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC53YXJuaW5nOmhvdmVyLAoudGFibGUtaG92ZXI+dGJvZHk+dHI+dGgud2FybmluZzpob3ZlciwKLnRhYmxlLWhvdmVyPnRib2R5PnRyLndhcm5pbmc6aG92ZXI+dGQsCi50YWJsZS1ob3Zlcj50Ym9keT50cjpob3Zlcj4ud2FybmluZywKLnRhYmxlLWhvdmVyPnRib2R5PnRyLndhcm5pbmc6aG92ZXI+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZjJjYzsKfQoKLnRhYmxlPnRoZWFkPnRyPnRkLmRhbmdlciwKLnRhYmxlPnRoZWFkPnRyPnRoLmRhbmdlciwKLnRhYmxlPnRoZWFkPnRyLmRhbmdlcj50ZCwKLnRhYmxlPnRoZWFkPnRyLmRhbmdlcj50aCwKLnRhYmxlPnRib2R5PnRyPnRkLmRhbmdlciwKLnRhYmxlPnRib2R5PnRyPnRoLmRhbmdlciwKLnRhYmxlPnRib2R5PnRyLmRhbmdlcj50ZCwKLnRhYmxlPnRib2R5PnRyLmRhbmdlcj50aCwKLnRhYmxlPnRmb290PnRyPnRkLmRhbmdlciwKLnRhYmxlPnRmb290PnRyPnRoLmRhbmdlciwKLnRhYmxlPnRmb290PnRyLmRhbmdlcj50ZCwKLnRhYmxlPnRmb290PnRyLmRhbmdlcj50aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwp9CgoudGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuZGFuZ2VyOmhvdmVyLAoudGFibGUtaG92ZXI+dGJvZHk+dHI+dGguZGFuZ2VyOmhvdmVyLAoudGFibGUtaG92ZXI+dGJvZHk+dHIuZGFuZ2VyOmhvdmVyPnRkLAoudGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXI+LmRhbmdlciwKLnRhYmxlLWhvdmVyPnRib2R5PnRyLmRhbmdlcjpob3Zlcj50aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJjY2NjOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogICAgLnRhYmxlLXJlc3BvbnNpdmUgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE4cHg7CiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICB9CiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGUgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB9CiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGhlYWQ+dHI+dGgsCiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGhlYWQ+dHI+dGQsCiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGJvZHk+dHI+dGgsCiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGJvZHk+dHI+dGQsCiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGZvb3Q+dHI+dGgsCiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGZvb3Q+dHI+dGQgewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB9CiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQgewogICAgICAgIGJvcmRlcjogMDsKICAgIH0KICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpmaXJzdC1jaGlsZCwKICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpmaXJzdC1jaGlsZCwKICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpmaXJzdC1jaGlsZCwKICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwKICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwKICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDA7CiAgICB9CiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZCwKICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLAogICAgLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmxhc3QtY2hpbGQsCiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6bGFzdC1jaGlsZCwKICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpsYXN0LWNoaWxkLAogICAgLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1yaWdodDogMDsKICAgIH0KICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRoLAogICAgLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGQsCiAgICAudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aCwKICAgIC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRkIHsKICAgICAgICBib3JkZXItYm90dG9tOiAwOwogICAgfQp9CgpmaWVsZHNldCB7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyOiAwOwogICAgbWluLXdpZHRoOiAwOwp9CgpsZWdlbmQgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgZm9udC1zaXplOiAyMXB4OwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgICBjb2xvcjogIzMzMzMzMzsKICAgIGJvcmRlcjogMDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlNWU1Owp9CgpsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKaW5wdXRbdHlwZT0icmFkaW8iXSwKaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgICBtYXJnaW46IDRweCAwIDA7CiAgICBtYXJnaW4tdG9wOiAxcHggXDk7CiAgICBsaW5lLWhlaWdodDogbm9ybWFsOwp9CgppbnB1dFt0eXBlPSJmaWxlIl0gewogICAgZGlzcGxheTogYmxvY2s7Cn0KCmlucHV0W3R5cGU9InJhbmdlIl0gewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKfQoKc2VsZWN0W211bHRpcGxlXSwKc2VsZWN0W3NpemVdIHsKICAgIGhlaWdodDogYXV0bzsKfQoKaW5wdXRbdHlwZT0iZmlsZSJdOmZvY3VzLAppbnB1dFt0eXBlPSJyYWRpbyJdOmZvY3VzLAppbnB1dFt0eXBlPSJjaGVja2JveCJdOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7CiAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKfQoKb3V0cHV0IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZy10b3A6IDEzcHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMS43NTsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgouZm9ybS1jb250cm9sIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBwYWRkaW5nOiAxMnB4IDMwcHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMS43NTsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDhkOGQ4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0OwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7Cn0KCi5mb3JtLWNvbnRyb2w6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjYmZiZmJmOwogICAgb3V0bGluZTogMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBvcGFjaXR5OiAwLjY1Owp9CgouZm9ybS1jb250cm9sOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLmZvcm0tY29udHJvbDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLmZvcm0tY29udHJvbFtkaXNhYmxlZF0sCi5mb3JtLWNvbnRyb2xbcmVhZG9ubHldLApmaWVsZHNldFtkaXNhYmxlZF0gLmZvcm0tY29udHJvbCB7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKICAgIG9wYWNpdHk6IDE7Cn0KCnRleHRhcmVhLmZvcm0tY29udHJvbCB7CiAgICBoZWlnaHQ6IGF1dG87Cn0KCmlucHV0W3R5cGU9InNlYXJjaCJdIHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQoKaW5wdXRbdHlwZT0iZGF0ZSJdLAppbnB1dFt0eXBlPSJ0aW1lIl0sCmlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0sCmlucHV0W3R5cGU9Im1vbnRoIl0gewogICAgbGluZS1oZWlnaHQ6IDUwcHg7CiAgICBsaW5lLWhlaWdodDogMS43NSBcMDsKfQoKaW5wdXRbdHlwZT0iZGF0ZSJdLmlucHV0LXNtLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLXNtIGlucHV0W3R5cGU9ImRhdGUiXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbT5pbnB1dFt0eXBlPSJkYXRlIl0uZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20+aW5wdXRbdHlwZT0iZGF0ZSJdLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj5pbnB1dFt0eXBlPSJkYXRlIl0uYnRuLAppbnB1dFt0eXBlPSJ0aW1lIl0uaW5wdXQtc20sCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtc20gaW5wdXRbdHlwZT0idGltZSJdLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtPmlucHV0W3R5cGU9InRpbWUiXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbT5pbnB1dFt0eXBlPSJ0aW1lIl0uaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYnRuPmlucHV0W3R5cGU9InRpbWUiXS5idG4sCmlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0uaW5wdXQtc20sCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtc20gaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbT5pbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtPmlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0uaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYnRuPmlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0uYnRuLAppbnB1dFt0eXBlPSJtb250aCJdLmlucHV0LXNtLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLXNtIGlucHV0W3R5cGU9Im1vbnRoIl0uZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20+aW5wdXRbdHlwZT0ibW9udGgiXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbT5pbnB1dFt0eXBlPSJtb250aCJdLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj5pbnB1dFt0eXBlPSJtb250aCJdLmJ0biB7CiAgICBsaW5lLWhlaWdodDogNDBweDsKfQoKaW5wdXRbdHlwZT0iZGF0ZSJdLmlucHV0LWxnLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLWxnIGlucHV0W3R5cGU9ImRhdGUiXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZz5pbnB1dFt0eXBlPSJkYXRlIl0uZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtbGc+aW5wdXRbdHlwZT0iZGF0ZSJdLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj5pbnB1dFt0eXBlPSJkYXRlIl0uYnRuLAppbnB1dFt0eXBlPSJ0aW1lIl0uaW5wdXQtbGcsCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtbGcgaW5wdXRbdHlwZT0idGltZSJdLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPmlucHV0W3R5cGU9InRpbWUiXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZz5pbnB1dFt0eXBlPSJ0aW1lIl0uaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPmlucHV0W3R5cGU9InRpbWUiXS5idG4sCmlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0uaW5wdXQtbGcsCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtbGcgaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZz5pbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPmlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0uaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPmlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0uYnRuLAppbnB1dFt0eXBlPSJtb250aCJdLmlucHV0LWxnLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLWxnIGlucHV0W3R5cGU9Im1vbnRoIl0uZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtbGc+aW5wdXRbdHlwZT0ibW9udGgiXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZz5pbnB1dFt0eXBlPSJtb250aCJdLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj5pbnB1dFt0eXBlPSJtb250aCJdLmJ0biB7CiAgICBsaW5lLWhlaWdodDogNTRweDsKfQoKLmZvcm0tZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKLnJhZGlvLAouY2hlY2tib3ggewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtaW4taGVpZ2h0OiAyNHB4OwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi5yYWRpbyBsYWJlbCwKLmNoZWNrYm94IGxhYmVsIHsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKLnJhZGlvLWlubGluZSBpbnB1dFt0eXBlPSJyYWRpbyJdLAouY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKLmNoZWNrYm94LWlubGluZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG1hcmdpbi1sZWZ0OiAtMjBweDsKICAgIG1hcmdpbi10b3A6IDdweDsKICAgIG1hcmdpbi10b3A6IDdweCBcOTsKfQoKLnJhZGlvKy5yYWRpbywKLmNoZWNrYm94Ky5jaGVja2JveCB7CiAgICBtYXJnaW4tdG9wOiAtNXB4Owp9CgoucmFkaW8taW5saW5lLAouY2hlY2tib3gtaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLnJhZGlvLWlubGluZSsucmFkaW8taW5saW5lLAouY2hlY2tib3gtaW5saW5lKy5jaGVja2JveC1pbmxpbmUgewogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4Owp9CgppbnB1dFt0eXBlPSJyYWRpbyJdW2Rpc2FibGVkXSwKaW5wdXRbdHlwZT0icmFkaW8iXS5kaXNhYmxlZCwKZmllbGRzZXRbZGlzYWJsZWRdIGlucHV0W3R5cGU9InJhZGlvIl0sCmlucHV0W3R5cGU9ImNoZWNrYm94Il1bZGlzYWJsZWRdLAppbnB1dFt0eXBlPSJjaGVja2JveCJdLmRpc2FibGVkLApmaWVsZHNldFtkaXNhYmxlZF0gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CgoucmFkaW8taW5saW5lLmRpc2FibGVkLApmaWVsZHNldFtkaXNhYmxlZF0gLnJhZGlvLWlubGluZSwKLmNoZWNrYm94LWlubGluZS5kaXNhYmxlZCwKZmllbGRzZXRbZGlzYWJsZWRdIC5jaGVja2JveC1pbmxpbmUgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLnJhZGlvLmRpc2FibGVkIGxhYmVsLApmaWVsZHNldFtkaXNhYmxlZF0gLnJhZGlvIGxhYmVsLAouY2hlY2tib3guZGlzYWJsZWQgbGFiZWwsCmZpZWxkc2V0W2Rpc2FibGVkXSAuY2hlY2tib3ggbGFiZWwgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLmZvcm0tY29udHJvbC1zdGF0aWMgewogICAgcGFkZGluZy10b3A6IDEzcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTNweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5mb3JtLWNvbnRyb2wtc3RhdGljLmlucHV0LWxnLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLWxnIC5mb3JtLWNvbnRyb2wtc3RhdGljLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wtc3RhdGljLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wtc3RhdGljLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj4uZm9ybS1jb250cm9sLXN0YXRpYy5idG4sCi5mb3JtLWNvbnRyb2wtc3RhdGljLmlucHV0LXNtLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLXNtIC5mb3JtLWNvbnRyb2wtc3RhdGljLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wtc3RhdGljLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wtc3RhdGljLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uZm9ybS1jb250cm9sLXN0YXRpYy5idG4gewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFkZGluZy1yaWdodDogMDsKfQoKLmlucHV0LXNtLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLXNtIC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uYnRuIHsKICAgIGhlaWdodDogNDBweDsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KCnNlbGVjdC5pbnB1dC1zbSwKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cC1zbSBzZWxlY3QuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20+c2VsZWN0LmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtPnNlbGVjdC5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1idG4+c2VsZWN0LmJ0biB7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBsaW5lLWhlaWdodDogNDBweDsKfQoKdGV4dGFyZWEuaW5wdXQtc20sCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtc20gdGV4dGFyZWEuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20+dGV4dGFyZWEuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20+dGV4dGFyZWEuaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYnRuPnRleHRhcmVhLmJ0biwKc2VsZWN0W211bHRpcGxlXS5pbnB1dC1zbSwKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cC1zbSBzZWxlY3RbbXVsdGlwbGVdLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtPnNlbGVjdFttdWx0aXBsZV0uZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20+c2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1idG4+c2VsZWN0W211bHRpcGxlXS5idG4gewogICAgaGVpZ2h0OiBhdXRvOwp9CgouaW5wdXQtbGcsCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtbGcgLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPi5idG4gewogICAgaGVpZ2h0OiA1NHB4OwogICAgcGFkZGluZzogMTRweCAzNXB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzM7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Owp9CgpzZWxlY3QuaW5wdXQtbGcsCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtbGcgc2VsZWN0LmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPnNlbGVjdC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZz5zZWxlY3QuaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPnNlbGVjdC5idG4gewogICAgaGVpZ2h0OiA1NHB4OwogICAgbGluZS1oZWlnaHQ6IDU0cHg7Cn0KCnRleHRhcmVhLmlucHV0LWxnLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLWxnIHRleHRhcmVhLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPnRleHRhcmVhLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPnRleHRhcmVhLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj50ZXh0YXJlYS5idG4sCnNlbGVjdFttdWx0aXBsZV0uaW5wdXQtbGcsCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtbGcgc2VsZWN0W211bHRpcGxlXS5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZz5zZWxlY3RbbXVsdGlwbGVdLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnPnNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPnNlbGVjdFttdWx0aXBsZV0uYnRuIHsKICAgIGhlaWdodDogYXV0bzsKfQoKLmhhcy1mZWVkYmFjayB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA2Mi41cHg7Cn0KCi5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAyOXB4OwogICAgcmlnaHQ6IDA7CiAgICB6LWluZGV4OiAyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIGxpbmUtaGVpZ2h0OiA1MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouaW5wdXQtbGcrLmZvcm0tY29udHJvbC1mZWVkYmFjaywKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cC1sZyAuZm9ybS1jb250cm9sKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2ssCi5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2ssCi5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYWRkb24rLmZvcm0tY29udHJvbC1mZWVkYmFjaywKLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1idG4+LmJ0bisuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIHdpZHRoOiA1NHB4OwogICAgaGVpZ2h0OiA1NHB4OwogICAgbGluZS1oZWlnaHQ6IDU0cHg7Cn0KCi5pbnB1dC1zbSsuZm9ybS1jb250cm9sLWZlZWRiYWNrLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLXNtIC5mb3JtLWNvbnRyb2wrLmZvcm0tY29udHJvbC1mZWVkYmFjaywKLmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wrLmZvcm0tY29udHJvbC1mZWVkYmFjaywKLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1hZGRvbisuZm9ybS1jb250cm9sLWZlZWRiYWNrLAouaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uYnRuKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBsaW5lLWhlaWdodDogNDBweDsKfQoKLmhhcy1zdWNjZXNzIC5oZWxwLWJsb2NrLAouaGFzLXN1Y2Nlc3MgLmNvbnRyb2wtbGFiZWwsCi5oYXMtc3VjY2VzcyAucmFkaW8sCi5oYXMtc3VjY2VzcyAuY2hlY2tib3gsCi5oYXMtc3VjY2VzcyAucmFkaW8taW5saW5lLAouaGFzLXN1Y2Nlc3MgLmNoZWNrYm94LWlubGluZSB7CiAgICBjb2xvcjogIzNjNzYzZDsKfQoKLmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2w6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjMmI1NDJjOwp9CgouaGFzLXN1Y2Nlc3MgLmlucHV0LWdyb3VwLWFkZG9uIHsKICAgIGNvbG9yOiAjM2M3NjNkOwogICAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKfQoKLmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgY29sb3I6ICMzYzc2M2Q7Cn0KCi5oYXMtd2FybmluZyAuaGVscC1ibG9jaywKLmhhcy13YXJuaW5nIC5jb250cm9sLWxhYmVsLAouaGFzLXdhcm5pbmcgLnJhZGlvLAouaGFzLXdhcm5pbmcgLmNoZWNrYm94LAouaGFzLXdhcm5pbmcgLnJhZGlvLWlubGluZSwKLmhhcy13YXJuaW5nIC5jaGVja2JveC1pbmxpbmUgewogICAgY29sb3I6ICM4YTZkM2I7Cn0KCi5oYXMtd2FybmluZyAuZm9ybS1jb250cm9sIHsKICAgIGJvcmRlci1jb2xvcjogIzhhNmQzYjsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi5oYXMtd2FybmluZyAuZm9ybS1jb250cm9sOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzY2NTEyYzsKfQoKLmhhcy13YXJuaW5nIC5pbnB1dC1ncm91cC1hZGRvbiB7CiAgICBjb2xvcjogIzhhNmQzYjsKICAgIGJvcmRlci1jb2xvcjogIzhhNmQzYjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7Cn0KCi5oYXMtd2FybmluZyAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIGNvbG9yOiAjOGE2ZDNiOwp9CgouaGFzLWVycm9yIC5oZWxwLWJsb2NrLAouaGFzLWVycm9yIC5jb250cm9sLWxhYmVsLAouaGFzLWVycm9yIC5yYWRpbywKLmhhcy1lcnJvciAuY2hlY2tib3gsCi5oYXMtZXJyb3IgLnJhZGlvLWlubGluZSwKLmhhcy1lcnJvciAuY2hlY2tib3gtaW5saW5lIHsKICAgIGNvbG9yOiAjYTk0NDQyOwp9CgouaGFzLWVycm9yIC5mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLmhhcy1lcnJvciAuZm9ybS1jb250cm9sOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzg0MzUzNDsKfQoKLmhhcy1lcnJvciAuaW5wdXQtZ3JvdXAtYWRkb24gewogICAgY29sb3I6ICNhOTQ0NDI7CiAgICBib3JkZXItY29sb3I6ICNhOTQ0NDI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwp9CgouaGFzLWVycm9yIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgY29sb3I6ICNhOTQ0NDI7Cn0KCi5oYXMtZmVlZGJhY2sgbGFiZWwuc3Itb25seX4uZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIHRvcDogMDsKfQoKLmhlbHAtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgY29sb3I6ICM4ODg4ODg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwLAogICAgLm5hdmJhci1mb3JtIC5mb3JtLWdyb3VwIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgfQogICAgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wsCiAgICAubmF2YmFyLWZvcm0gLmZvcm0tY29udHJvbCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB9CiAgICAuZm9ybS1pbmxpbmUgLmlucHV0LWdyb3VwLAogICAgLm5hdmJhci1mb3JtIC5pbnB1dC1ncm91cCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLXRhYmxlOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB9CiAgICAuZm9ybS1pbmxpbmUgLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC1hZGRvbiwKICAgIC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWFkZG9uLAogICAgLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtYnRuLAogICAgLm5hdmJhci1mb3JtIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtYnRuLAogICAgLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sLAogICAgLm5hdmJhci1mb3JtIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgIH0KICAgIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbCwKICAgIC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZm9ybS1pbmxpbmUgLmNvbnRyb2wtbGFiZWwsCiAgICAubmF2YmFyLWZvcm0gLmNvbnRyb2wtbGFiZWwgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIH0KICAgIC5mb3JtLWlubGluZSAucmFkaW8sCiAgICAubmF2YmFyLWZvcm0gLnJhZGlvLAogICAgLmZvcm0taW5saW5lIC5jaGVja2JveCwKICAgIC5uYXZiYXItZm9ybSAuY2hlY2tib3ggewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIH0KICAgIC5mb3JtLWlubGluZSAucmFkaW8gbGFiZWwsCiAgICAubmF2YmFyLWZvcm0gLnJhZGlvIGxhYmVsLAogICAgLmZvcm0taW5saW5lIC5jaGVja2JveCBsYWJlbCwKICAgIC5uYXZiYXItZm9ybSAuY2hlY2tib3ggbGFiZWwgewogICAgICAgIHBhZGRpbmctbGVmdDogMDsKICAgIH0KICAgIC5mb3JtLWlubGluZSAucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKICAgIC5uYXZiYXItZm9ybSAucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKICAgIC5mb3JtLWlubGluZSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKICAgIC5uYXZiYXItZm9ybSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgfQogICAgLmZvcm0taW5saW5lIC5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFjaywKICAgIC5uYXZiYXItZm9ybSAuaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgICAgIHRvcDogMDsKICAgIH0KfQoKLmZvcm0taG9yaXpvbnRhbCAucmFkaW8sCi5mb3JtLWhvcml6b250YWwgLmNoZWNrYm94LAouZm9ybS1ob3Jpem9udGFsIC5yYWRpby1pbmxpbmUsCi5mb3JtLWhvcml6b250YWwgLmNoZWNrYm94LWlubGluZSB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHBhZGRpbmctdG9wOiAxM3B4Owp9CgouZm9ybS1ob3Jpem9udGFsIC5yYWRpbywKLmZvcm0taG9yaXpvbnRhbCAuY2hlY2tib3ggewogICAgbWluLWhlaWdodDogMzdweDsKfQoKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cCB7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4Owp9CgouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmJlZm9yZSwKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cDphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBkaXNwbGF5OiB0YWJsZTsKfQoKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cDphZnRlciB7CiAgICBjbGVhcjogYm90aDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxhYmVsIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIHBhZGRpbmctdG9wOiAxM3B4OwogICAgfQp9CgouZm9ybS1ob3Jpem9udGFsIC5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICB0b3A6IDA7CiAgICByaWdodDogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLWxnIC5jb250cm9sLWxhYmVsIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTkuNjY2NjdweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLXNtIC5jb250cm9sLWxhYmVsIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTFweDsKICAgIH0KfQoKLmJ0biB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICBwYWRkaW5nOiAxMnB4IDMwcHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMS43NTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLmJ0bjpmb2N1cywKLmJ0bjphY3RpdmU6Zm9jdXMsCi5idG4uYWN0aXZlOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7CiAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKfQoKLmJ0bjpob3ZlciwKLmJ0bjpmb2N1cyB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmJ0bjphY3RpdmUsCi5idG4uYWN0aXZlIHsKICAgIG91dGxpbmU6IDA7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KCi5idG4uZGlzYWJsZWQsCi5idG5bZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0biB7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBvcGFjaXR5OiAwLjY1OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTY1KTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi5idG4tZGVmYXVsdCB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNjY2M7Cn0KCi5idG4tZGVmYXVsdDpob3ZlciwKLmJ0bi1kZWZhdWx0OmZvY3VzLAouYnRuLWRlZmF1bHQ6YWN0aXZlLAouYnRuLWRlZmF1bHQuYWN0aXZlLAoub3Blbj4uYnRuLWRlZmF1bHQuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGNvbG9yOiAjMzMzOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsKICAgIGJvcmRlci1jb2xvcjogI2IzYjNiMzsKfQoKLmJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmJ0bi1kZWZhdWx0LmFjdGl2ZSwKLm9wZW4+LmJ0bi1kZWZhdWx0LmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouYnRuLWRlZmF1bHQuZGlzYWJsZWQsCi5idG4tZGVmYXVsdC5kaXNhYmxlZDpob3ZlciwKLmJ0bi1kZWZhdWx0LmRpc2FibGVkOmZvY3VzLAouYnRuLWRlZmF1bHQuZGlzYWJsZWQ6YWN0aXZlLAouYnRuLWRlZmF1bHQuZGlzYWJsZWQuYWN0aXZlLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmhvdmVyLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmZvY3VzLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmFjdGl2ZSwKLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0LmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjY2NjOwp9CgouYnRuLWRlZmF1bHQgLmJhZGdlIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsKfQoKLmJ0bi1wcmltYXJ5IHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjYyNjsKICAgIGJvcmRlci1jb2xvcjogIzE5MTkxOTsKfQoKLmJ0bi1wcmltYXJ5OmhvdmVyLAouYnRuLXByaW1hcnk6Zm9jdXMsCi5idG4tcHJpbWFyeTphY3RpdmUsCi5idG4tcHJpbWFyeS5hY3RpdmUsCi5vcGVuPi5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGQwZDBkOwogICAgYm9yZGVyLWNvbG9yOiBibGFjazsKfQoKLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5LmFjdGl2ZSwKLm9wZW4+LmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouYnRuLXByaW1hcnkuZGlzYWJsZWQsCi5idG4tcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwKLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmZvY3VzLAouYnRuLXByaW1hcnkuZGlzYWJsZWQ6YWN0aXZlLAouYnRuLXByaW1hcnkuZGlzYWJsZWQuYWN0aXZlLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdOmhvdmVyLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdOmZvY3VzLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdOmFjdGl2ZSwKLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnksCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnk6aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnk6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnk6YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5LmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2OwogICAgYm9yZGVyLWNvbG9yOiAjMTkxOTE5Owp9CgouYnRuLXByaW1hcnkgLmJhZGdlIHsKICAgIGNvbG9yOiAjMjYyNjI2OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmJ0bi1zdWNjZXNzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzc5YjUzMDsKICAgIGJvcmRlci1jb2xvcjogIzZjYTEyYjsKfQoKLmJ0bi1zdWNjZXNzOmhvdmVyLAouYnRuLXN1Y2Nlc3M6Zm9jdXMsCi5idG4tc3VjY2VzczphY3RpdmUsCi5idG4tc3VjY2Vzcy5hY3RpdmUsCi5vcGVuPi5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWU4ZDI1OwogICAgYm9yZGVyLWNvbG9yOiAjNTE3OTIwOwp9CgouYnRuLXN1Y2Nlc3M6YWN0aXZlLAouYnRuLXN1Y2Nlc3MuYWN0aXZlLAoub3Blbj4uYnRuLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KCi5idG4tc3VjY2Vzcy5kaXNhYmxlZCwKLmJ0bi1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLAouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tc3VjY2Vzcy5kaXNhYmxlZDphY3RpdmUsCi5idG4tc3VjY2Vzcy5kaXNhYmxlZC5hY3RpdmUsCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF0sCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF06aG92ZXIsCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF06Zm9jdXMsCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF06YWN0aXZlLAouYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2VzcywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzczpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzczpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2VzczphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3MuYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM3OWI1MzA7CiAgICBib3JkZXItY29sb3I6ICM2Y2ExMmI7Cn0KCi5idG4tc3VjY2VzcyAuYmFkZ2UgewogICAgY29sb3I6ICM3OWI1MzA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouYnRuLWluZm8gewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjdjZWI0OwogICAgYm9yZGVyLWNvbG9yOiAjMjNiOWExOwp9CgouYnRuLWluZm86aG92ZXIsCi5idG4taW5mbzpmb2N1cywKLmJ0bi1pbmZvOmFjdGl2ZSwKLmJ0bi1pbmZvLmFjdGl2ZSwKLm9wZW4+LmJ0bi1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxZmEzOGY7CiAgICBib3JkZXItY29sb3I6ICMxYjhlN2M7Cn0KCi5idG4taW5mbzphY3RpdmUsCi5idG4taW5mby5hY3RpdmUsCi5vcGVuPi5idG4taW5mby5kcm9wZG93bi10b2dnbGUgewogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQoKLmJ0bi1pbmZvLmRpc2FibGVkLAouYnRuLWluZm8uZGlzYWJsZWQ6aG92ZXIsCi5idG4taW5mby5kaXNhYmxlZDpmb2N1cywKLmJ0bi1pbmZvLmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi1pbmZvLmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi1pbmZvW2Rpc2FibGVkXSwKLmJ0bi1pbmZvW2Rpc2FibGVkXTpob3ZlciwKLmJ0bi1pbmZvW2Rpc2FibGVkXTpmb2N1cywKLmJ0bi1pbmZvW2Rpc2FibGVkXTphY3RpdmUsCi5idG4taW5mb1tkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mby5hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI3Y2ViNDsKICAgIGJvcmRlci1jb2xvcjogIzIzYjlhMTsKfQoKLmJ0bi1pbmZvIC5iYWRnZSB7CiAgICBjb2xvcjogIzI3Y2ViNDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5idG4td2FybmluZyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGU7CiAgICBib3JkZXItY29sb3I6ICNlZWEyMzY7Cn0KCi5idG4td2FybmluZzpob3ZlciwKLmJ0bi13YXJuaW5nOmZvY3VzLAouYnRuLXdhcm5pbmc6YWN0aXZlLAouYnRuLXdhcm5pbmcuYWN0aXZlLAoub3Blbj4uYnRuLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VjOTcxZjsKICAgIGJvcmRlci1jb2xvcjogI2RmOGExMzsKfQoKLmJ0bi13YXJuaW5nOmFjdGl2ZSwKLmJ0bi13YXJuaW5nLmFjdGl2ZSwKLm9wZW4+LmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouYnRuLXdhcm5pbmcuZGlzYWJsZWQsCi5idG4td2FybmluZy5kaXNhYmxlZDpob3ZlciwKLmJ0bi13YXJuaW5nLmRpc2FibGVkOmZvY3VzLAouYnRuLXdhcm5pbmcuZGlzYWJsZWQ6YWN0aXZlLAouYnRuLXdhcm5pbmcuZGlzYWJsZWQuYWN0aXZlLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmhvdmVyLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmZvY3VzLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmFjdGl2ZSwKLmJ0bi13YXJuaW5nW2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmcsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nLmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOwogICAgYm9yZGVyLWNvbG9yOiAjZWVhMjM2Owp9CgouYnRuLXdhcm5pbmcgLmJhZGdlIHsKICAgIGNvbG9yOiAjZjBhZDRlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmJ0bi1kYW5nZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQ0MzQzOwogICAgYm9yZGVyLWNvbG9yOiAjZTEyZDJkOwp9CgouYnRuLWRhbmdlcjpob3ZlciwKLmJ0bi1kYW5nZXI6Zm9jdXMsCi5idG4tZGFuZ2VyOmFjdGl2ZSwKLmJ0bi1kYW5nZXIuYWN0aXZlLAoub3Blbj4uYnRuLWRhbmdlci5kcm9wZG93bi10b2dnbGUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDUxZjFmOwogICAgYm9yZGVyLWNvbG9yOiAjYmYxYjFiOwp9CgouYnRuLWRhbmdlcjphY3RpdmUsCi5idG4tZGFuZ2VyLmFjdGl2ZSwKLm9wZW4+LmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KCi5idG4tZGFuZ2VyLmRpc2FibGVkLAouYnRuLWRhbmdlci5kaXNhYmxlZDpob3ZlciwKLmJ0bi1kYW5nZXIuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi1kYW5nZXIuZGlzYWJsZWQuYWN0aXZlLAouYnRuLWRhbmdlcltkaXNhYmxlZF0sCi5idG4tZGFuZ2VyW2Rpc2FibGVkXTpob3ZlciwKLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmZvY3VzLAouYnRuLWRhbmdlcltkaXNhYmxlZF06YWN0aXZlLAouYnRuLWRhbmdlcltkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlcjpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXI6YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXIuYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNDQzNDM7CiAgICBib3JkZXItY29sb3I6ICNlMTJkMmQ7Cn0KCi5idG4tZGFuZ2VyIC5iYWRnZSB7CiAgICBjb2xvcjogI2U0NDM0MzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5idG4tbGluayB7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3JkZXItcmFkaXVzOiAwOwp9CgouYnRuLWxpbmssCi5idG4tbGluazphY3RpdmUsCi5idG4tbGlua1tkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWxpbmsgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgouYnRuLWxpbmssCi5idG4tbGluazpob3ZlciwKLmJ0bi1saW5rOmZvY3VzLAouYnRuLWxpbms6YWN0aXZlIHsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tbGluazpob3ZlciwKLmJ0bi1saW5rOmZvY3VzIHsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1saW5rW2Rpc2FibGVkXTpob3ZlciwKLmJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpmb2N1cyB7CiAgICBjb2xvcjogIzc3Nzc3NzsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmJ0bi1sZywKLmJ0bi1ncm91cC1sZz4uYnRuIHsKICAgIHBhZGRpbmc6IDE0cHggMzVweDsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjMzMzMzOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoKLmJ0bi1zbSwKLmJ0bi1ncm91cC1zbT4uYnRuIHsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KCi5idG4teHMsCi5idG4tZ3JvdXAteHM+LmJ0biB7CiAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKfQoKLmJ0bi1ibG9jayB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwp9CgouYnRuLWJsb2NrKy5idG4tYmxvY2sgewogICAgbWFyZ2luLXRvcDogNXB4Owp9CgppbnB1dFt0eXBlPSJzdWJtaXQiXS5idG4tYmxvY2ssCmlucHV0W3R5cGU9InJlc2V0Il0uYnRuLWJsb2NrLAppbnB1dFt0eXBlPSJidXR0b24iXS5idG4tYmxvY2sgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5mYWRlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwogICAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKfQoKLmZhZGUuaW4gewogICAgb3BhY2l0eTogMTsKfQoKLmNvbGxhcHNlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5jb2xsYXBzZS5pbiB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKdHIuY29sbGFwc2UuaW4gewogICAgZGlzcGxheTogdGFibGUtcm93Owp9Cgp0Ym9keS5jb2xsYXBzZS5pbiB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7Cn0KCi5jb2xsYXBzaW5nIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGhlaWdodDogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAwLjM1cyBlYXNlOwogICAgLW8tdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7CiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zNXMgZWFzZTsKfQoKLmNhcmV0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwOwogICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBib3JkZXItdG9wOiA0cHggc29saWQ7CiAgICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7Cn0KCi5kcm9wZG93biB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogICAgb3V0bGluZTogMDsKfQoKLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMDAlOwogICAgbGVmdDogMDsKICAgIHotaW5kZXg6IDEwMDA7CiAgICBkaXNwbGF5OiBub25lOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBtaW4td2lkdGg6IDE2MHB4OwogICAgcGFkZGluZzogNXB4IDA7CiAgICBtYXJnaW46IDJweCAwIDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNzUpOwogICAgYm94LXNoYWRvdzogMCAzcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNzUpOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKfQoKLmRyb3Bkb3duLW1lbnUucHVsbC1yaWdodCB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5kcm9wZG93bi1tZW51IC5kaXZpZGVyIHsKICAgIGhlaWdodDogMXB4OwogICAgbWFyZ2luOiAxMXB4IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKfQoKLmRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDNweCAyMHB4OwogICAgY2xlYXI6IGJvdGg7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDEuNzU7CiAgICBjb2xvcjogIzMzMzMzMzsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIsCi5kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXMgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY29sb3I6ICMyNjI2MjY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9CgouZHJvcGRvd24tbWVudT4uYWN0aXZlPmEsCi5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpob3ZlciwKLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgb3V0bGluZTogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjI2MjY7Cn0KCi5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hLAouZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpob3ZlciwKLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6Zm9jdXMgewogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmhvdmVyLAouZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1cyB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KCi5vcGVuPi5kcm9wZG93bi1tZW51IHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9Cgoub3Blbj5hIHsKICAgIG91dGxpbmU6IDA7Cn0KCi5kcm9wZG93bi1tZW51LXJpZ2h0IHsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKfQoKLmRyb3Bkb3duLW1lbnUtbGVmdCB7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IGF1dG87Cn0KCi5kcm9wZG93bi1oZWFkZXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiAzcHggMjBweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjc1OwogICAgY29sb3I6ICM3Nzc3Nzc7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouZHJvcGRvd24tYmFja2Ryb3AgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgYm90dG9tOiAwOwogICAgdG9wOiAwOwogICAgei1pbmRleDogOTkwOwp9CgoucHVsbC1yaWdodD4uZHJvcGRvd24tbWVudSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5kcm9wdXAgLmNhcmV0LAoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmNhcmV0IHsKICAgIGJvcmRlci10b3A6IDA7CiAgICBib3JkZXItYm90dG9tOiA0cHggc29saWQ7CiAgICBjb250ZW50OiAiIjsKfQoKLmRyb3B1cCAuZHJvcGRvd24tbWVudSwKLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51IHsKICAgIHRvcDogYXV0bzsKICAgIGJvdHRvbTogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDFweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAubmF2YmFyLXJpZ2h0IC5kcm9wZG93bi1tZW51IHsKICAgICAgICByaWdodDogMDsKICAgICAgICBsZWZ0OiBhdXRvOwogICAgfQogICAgLm5hdmJhci1yaWdodCAuZHJvcGRvd24tbWVudS1sZWZ0IHsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiBhdXRvOwogICAgfQp9CgouYnRuLWdyb3VwLAouYnRuLWdyb3VwLXZlcnRpY2FsIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5idG4tZ3JvdXA+LmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiBsZWZ0Owp9CgouYnRuLWdyb3VwPi5idG46aG92ZXIsCi5idG4tZ3JvdXA+LmJ0bjpmb2N1cywKLmJ0bi1ncm91cD4uYnRuOmFjdGl2ZSwKLmJ0bi1ncm91cD4uYnRuLmFjdGl2ZSwKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmhvdmVyLAouYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46Zm9jdXMsCi5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjphY3RpdmUsCi5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi5hY3RpdmUgewogICAgei1pbmRleDogMjsKfQoKLmJ0bi1ncm91cD4uYnRuOmZvY3VzLAouYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46Zm9jdXMgewogICAgb3V0bGluZTogMDsKfQoKLmJ0bi1ncm91cCAuYnRuKy5idG4sCi5idG4tZ3JvdXAgLmJ0bisuYnRuLWdyb3VwLAouYnRuLWdyb3VwIC5idG4tZ3JvdXArLmJ0biwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4tZ3JvdXAgewogICAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5idG4tdG9vbGJhciB7CiAgICBtYXJnaW4tbGVmdDogLTVweDsKfQoKLmJ0bi10b29sYmFyOmJlZm9yZSwKLmJ0bi10b29sYmFyOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGRpc3BsYXk6IHRhYmxlOwp9CgouYnRuLXRvb2xiYXI6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7Cn0KCi5idG4tdG9vbGJhciAuYnRuLWdyb3VwLAouYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHsKICAgIGZsb2F0OiBsZWZ0Owp9CgouYnRuLXRvb2xiYXI+LmJ0biwKLmJ0bi10b29sYmFyPi5idG4tZ3JvdXAsCi5idG4tdG9vbGJhcj4uaW5wdXQtZ3JvdXAgewogICAgbWFyZ2luLWxlZnQ6IDVweDsKfQoKLmJ0bi1ncm91cD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXA+LmJ0bjpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cD4uYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXA+LmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpLAouYnRuLWdyb3VwPi5kcm9wZG93bi10b2dnbGU6bm90KDpmaXJzdC1jaGlsZCkgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXA+LmJ0bi1ncm91cCB7CiAgICBmbG9hdDogbGVmdDsKfQoKLmJ0bi1ncm91cD4uYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk+LmJ0biB7CiAgICBib3JkZXItcmFkaXVzOiAwOwp9CgouYnRuLWdyb3VwPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ+LmJ0bjpsYXN0LWNoaWxkLAouYnRuLWdyb3VwPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ+LmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgouYnRuLWdyb3VwPi5idG4tZ3JvdXA6bGFzdC1jaGlsZD4uYnRuOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9CgouYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLAouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBvdXRsaW5lOiAwOwp9CgouYnRuLWdyb3VwPi5idG4rLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKfQoKLmJ0bi1ncm91cD4uYnRuLWxnKy5kcm9wZG93bi10b2dnbGUsCi5idG4tZ3JvdXAtbGcuYnRuLWdyb3VwPi5idG4rLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4Owp9CgouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQoKLmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWxpbmsgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLmJ0biAuY2FyZXQgewogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5idG4tbGcgLmNhcmV0LAouYnRuLWdyb3VwLWxnPi5idG4gLmNhcmV0IHsKICAgIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKfQoKLmRyb3B1cCAuYnRuLWxnIC5jYXJldCwKLmRyb3B1cCAuYnRuLWdyb3VwLWxnPi5idG4gLmNhcmV0IHsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4Owp9CgouYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4sCi5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgouYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6YmVmb3JlLAouYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6YWZ0ZXIgewogICAgY29udGVudDogIiAiOwogICAgZGlzcGxheTogdGFibGU7Cn0KCi5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDphZnRlciB7CiAgICBjbGVhcjogYm90aDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG4gewogICAgZmxvYXQ6IG5vbmU7Cn0KCi5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bisuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwKy5idG4sCi5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cCsuYnRuLWdyb3VwIHsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDZweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNnB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9CgouYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKT4uYnRuIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpPi5idG46bGFzdC1jaGlsZCwKLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk+LmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpPi5idG46Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9CgouYnRuLWdyb3VwLWp1c3RpZmllZCB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICAgIHdpZHRoOiAxMDAlOwogICAgdGFibGUtbGF5b3V0OiBmaXhlZDsKICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7Cn0KCi5idG4tZ3JvdXAtanVzdGlmaWVkPi5idG4sCi5idG4tZ3JvdXAtanVzdGlmaWVkPi5idG4tZ3JvdXAgewogICAgZmxvYXQ6IG5vbmU7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgd2lkdGg6IDElOwp9CgouYnRuLWdyb3VwLWp1c3RpZmllZD4uYnRuLWdyb3VwIC5idG4gewogICAgd2lkdGg6IDEwMCU7Cn0KCi5idG4tZ3JvdXAtanVzdGlmaWVkPi5idG4tZ3JvdXAgLmRyb3Bkb3duLW1lbnUgewogICAgbGVmdDogYXV0bzsKfQoKW2RhdGEtdG9nZ2xlPSJidXR0b25zIl0+LmJ0bj5pbnB1dFt0eXBlPSJyYWRpbyJdLApbZGF0YS10b2dnbGU9ImJ1dHRvbnMiXT4uYnRuPmlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogLTE7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwp9CgouaW5wdXQtZ3JvdXAgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogdGFibGU7CiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOwp9CgouaW5wdXQtZ3JvdXBbY2xhc3MqPSJjb2wtIl0gewogICAgZmxvYXQ6IG5vbmU7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwp9CgouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAyOwogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLWJ0biwKLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2wgewogICAgZGlzcGxheTogdGFibGUtY2VsbDsKfQoKLmlucHV0LWdyb3VwLWFkZG9uOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksCi5pbnB1dC1ncm91cC1idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwKLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1idG4gewogICAgd2lkdGg6IDElOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5pbnB1dC1ncm91cC1hZGRvbiB7CiAgICBwYWRkaW5nOiAxMnB4IDMwcHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDhkOGQ4OwogICAgYm9yZGVyLXJhZGl1czogNnB4Owp9CgouaW5wdXQtZ3JvdXAtYWRkb24uaW5wdXQtc20sCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtc20gLmlucHV0LWdyb3VwLWFkZG9uLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1idG4+LmlucHV0LWdyb3VwLWFkZG9uLmJ0biB7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KCi5pbnB1dC1ncm91cC1hZGRvbi5pbnB1dC1sZywKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cC1sZyAuaW5wdXQtZ3JvdXAtYWRkb24uZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj4uaW5wdXQtZ3JvdXAtYWRkb24uYnRuIHsKICAgIHBhZGRpbmc6IDE0cHggMzVweDsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KCi5pbnB1dC1ncm91cC1hZGRvbiBpbnB1dFt0eXBlPSJyYWRpbyJdLAouaW5wdXQtZ3JvdXAtYWRkb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgICBtYXJnaW4tdG9wOiAwOwp9CgouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpmaXJzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG4sCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bi1ncm91cD4uYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5kcm9wZG93bi10b2dnbGUsCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpPi5idG4gewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1yaWdodDogMDsKfQoKLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bGFzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0bi1ncm91cD4uYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmRyb3Bkb3duLXRvZ2dsZSwKLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk+LmJ0biB7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLWxlZnQ6IDA7Cn0KCi5pbnB1dC1ncm91cC1idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZm9udC1zaXplOiAwOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmlucHV0LWdyb3VwLWJ0bj4uYnRuIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmlucHV0LWdyb3VwLWJ0bj4uYnRuKy5idG4gewogICAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5pbnB1dC1ncm91cC1idG4+LmJ0bjpob3ZlciwKLmlucHV0LWdyb3VwLWJ0bj4uYnRuOmZvY3VzLAouaW5wdXQtZ3JvdXAtYnRuPi5idG46YWN0aXZlIHsKICAgIHotaW5kZXg6IDI7Cn0KCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0biwKLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYnRuLWdyb3VwIHsKICAgIG1hcmdpbi1yaWdodDogLTFweDsKfQoKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG4sCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYnRuLWdyb3VwIHsKICAgIG1hcmdpbi1sZWZ0OiAtMXB4Owp9CgoubmF2IHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2OmJlZm9yZSwKLm5hdjphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBkaXNwbGF5OiB0YWJsZTsKfQoKLm5hdjphZnRlciB7CiAgICBjbGVhcjogYm90aDsKfQoKLm5hdj5saSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLm5hdj5saT5hIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogMTBweCAxNXB4Owp9CgoubmF2PmxpPmE6aG92ZXIsCi5uYXY+bGk+YTpmb2N1cyB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwp9CgoubmF2PmxpLmRpc2FibGVkPmEgewogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi5uYXY+bGkuZGlzYWJsZWQ+YTpob3ZlciwKLm5hdj5saS5kaXNhYmxlZD5hOmZvY3VzIHsKICAgIGNvbG9yOiAjNzc3Nzc3OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CgoubmF2IC5vcGVuPmEsCi5uYXYgLm9wZW4+YTpob3ZlciwKLm5hdiAub3Blbj5hOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgICBib3JkZXItY29sb3I6ICM0ODQ4NDg7Cn0KCi5uYXYgLm5hdi1kaXZpZGVyIHsKICAgIGhlaWdodDogMXB4OwogICAgbWFyZ2luOiAxMXB4IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKfQoKLm5hdj5saT5hPmltZyB7CiAgICBtYXgtd2lkdGg6IG5vbmU7Cn0KCi5uYXYtdGFicyB7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKfQoKLm5hdi10YWJzPmxpIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWJvdHRvbTogLTFweDsKfQoKLm5hdi10YWJzPmxpPmEgewogICAgbWFyZ2luLXJpZ2h0OiAycHg7CiAgICBsaW5lLWhlaWdodDogMS43NTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7Cn0KCi5uYXYtdGFicz5saT5hOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogI2VlZWVlZSAjZWVlZWVlICNkZGQ7Cn0KCi5uYXYtdGFicz5saS5hY3RpdmU+YSwKLm5hdi10YWJzPmxpLmFjdGl2ZT5hOmhvdmVyLAoubmF2LXRhYnM+bGkuYWN0aXZlPmE6Zm9jdXMgewogICAgY29sb3I6ICM1NTU1NTU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OwogICAgY3Vyc29yOiBkZWZhdWx0Owp9CgoubmF2LXBpbGxzPmxpIHsKICAgIGZsb2F0OiBsZWZ0Owp9CgoubmF2LXBpbGxzPmxpPmEgewogICAgYm9yZGVyLXJhZGl1czogNnB4Owp9CgoubmF2LXBpbGxzPmxpK2xpIHsKICAgIG1hcmdpbi1sZWZ0OiAycHg7Cn0KCi5uYXYtcGlsbHM+bGkuYWN0aXZlPmEsCi5uYXYtcGlsbHM+bGkuYWN0aXZlPmE6aG92ZXIsCi5uYXYtcGlsbHM+bGkuYWN0aXZlPmE6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2Owp9CgoubmF2LXN0YWNrZWQ+bGkgewogICAgZmxvYXQ6IG5vbmU7Cn0KCi5uYXYtc3RhY2tlZD5saStsaSB7CiAgICBtYXJnaW4tdG9wOiAycHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLm5hdi1qdXN0aWZpZWQsCi5uYXYtdGFicy5uYXYtanVzdGlmaWVkIHsKICAgIHdpZHRoOiAxMDAlOwp9CgoubmF2LWp1c3RpZmllZD5saSwKLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGkgewogICAgZmxvYXQ6IG5vbmU7Cn0KCi5uYXYtanVzdGlmaWVkPmxpPmEsCi5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpPmEgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgoubmF2LWp1c3RpZmllZD4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUgewogICAgdG9wOiBhdXRvOwogICAgbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAubmF2LWp1c3RpZmllZD5saSwKICAgIC5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgICAgIHdpZHRoOiAxJTsKICAgIH0KICAgIC5uYXYtanVzdGlmaWVkPmxpPmEsCiAgICAubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saT5hIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgfQp9CgoubmF2LXRhYnMtanVzdGlmaWVkLAoubmF2LXRhYnMubmF2LWp1c3RpZmllZCB7CiAgICBib3JkZXItYm90dG9tOiAwOwp9CgoubmF2LXRhYnMtanVzdGlmaWVkPmxpPmEsCi5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpPmEgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgYm9yZGVyLXJhZGl1czogNnB4Owp9CgoubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YSwKLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hLAoubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YTpob3ZlciwKLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVyLAoubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YTpmb2N1cywKLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmZvY3VzIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLm5hdi10YWJzLWp1c3RpZmllZD5saT5hLAogICAgLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGk+YSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7CiAgICB9CiAgICAubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YSwKICAgIC5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YSwKICAgIC5uYXYtdGFicy1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVyLAogICAgLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVyLAogICAgLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXMsCiAgICAubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXMgewogICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmN2Y3Zjc7CiAgICB9Cn0KCi50YWItY29udGVudD4udGFiLXBhbmUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLnRhYi1jb250ZW50Pi5hY3RpdmUgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CiAgICBtYXJnaW4tdG9wOiAtMXB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9CgoubmF2YmFyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cn0KCi5uYXZiYXI6YmVmb3JlLAoubmF2YmFyOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGRpc3BsYXk6IHRhYmxlOwp9CgoubmF2YmFyOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5uYXZiYXIgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIH0KfQoKLm5hdmJhci1oZWFkZXI6YmVmb3JlLAoubmF2YmFyLWhlYWRlcjphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBkaXNwbGF5OiB0YWJsZTsKfQoKLm5hdmJhci1oZWFkZXI6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLm5hdmJhci1oZWFkZXIgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgfQp9CgoubmF2YmFyLWNvbGxhcHNlIHsKICAgIG92ZXJmbG93LXg6IHZpc2libGU7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7Cn0KCi5uYXZiYXItY29sbGFwc2U6YmVmb3JlLAoubmF2YmFyLWNvbGxhcHNlOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGRpc3BsYXk6IHRhYmxlOwp9CgoubmF2YmFyLWNvbGxhcHNlOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwp9CgoubmF2YmFyLWNvbGxhcHNlLmluIHsKICAgIG92ZXJmbG93LXk6IGF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLm5hdmJhci1jb2xsYXBzZSB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgYm9yZGVyLXRvcDogMDsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgfQogICAgLm5hdmJhci1jb2xsYXBzZS5jb2xsYXBzZSB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgfQogICAgLm5hdmJhci1jb2xsYXBzZS5pbiB7CiAgICAgICAgb3ZlcmZsb3cteTogdmlzaWJsZTsKICAgIH0KICAgIC5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItY29sbGFwc2UsCiAgICAubmF2YmFyLXN0YXRpYy10b3AgLm5hdmJhci1jb2xsYXBzZSwKICAgIC5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UgewogICAgICAgIHBhZGRpbmctbGVmdDogMDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgfQp9CgoubmF2YmFyLWZpeGVkLXRvcCAubmF2YmFyLWNvbGxhcHNlLAoubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2YmFyLWNvbGxhcHNlIHsKICAgIG1heC1oZWlnaHQ6IDM0MHB4Owp9CgpAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkgewogICAgLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZSwKICAgIC5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgfQp9CgouY29udGFpbmVyPi5uYXZiYXItaGVhZGVyLAouY29udGFpbmVyPi5uYXZiYXItY29sbGFwc2UsCi5jb250YWluZXItZmx1aWQ+Lm5hdmJhci1oZWFkZXIsCi5jb250YWluZXItZmx1aWQ+Lm5hdmJhci1jb2xsYXBzZSB7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogICAgbWFyZ2luLWxlZnQ6IC0xNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5jb250YWluZXI+Lm5hdmJhci1oZWFkZXIsCiAgICAuY29udGFpbmVyPi5uYXZiYXItY29sbGFwc2UsCiAgICAuY29udGFpbmVyLWZsdWlkPi5uYXZiYXItaGVhZGVyLAogICAgLmNvbnRhaW5lci1mbHVpZD4ubmF2YmFyLWNvbGxhcHNlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9Cn0KCi5uYXZiYXItc3RhdGljLXRvcCB7CiAgICB6LWluZGV4OiAxMDAwOwogICAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5uYXZiYXItc3RhdGljLXRvcCB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgIH0KfQoKLm5hdmJhci1maXhlZC10b3AsCi5uYXZiYXItZml4ZWQtYm90dG9tIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogMDsKICAgIHotaW5kZXg6IDEwMzA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5uYXZiYXItZml4ZWQtdG9wLAogICAgLm5hdmJhci1maXhlZC1ib3R0b20gewogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICB9Cn0KCi5uYXZiYXItZml4ZWQtdG9wIHsKICAgIHRvcDogMDsKICAgIGJvcmRlci13aWR0aDogMCAwIDFweDsKfQoKLm5hdmJhci1maXhlZC1ib3R0b20gewogICAgYm90dG9tOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGJvcmRlci13aWR0aDogMXB4IDAgMDsKfQoKLm5hdmJhci1icmFuZCB7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmc6IDEzcHggMTVweDsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgaGVpZ2h0OiA1MHB4Owp9CgoubmF2YmFyLWJyYW5kOmhvdmVyLAoubmF2YmFyLWJyYW5kOmZvY3VzIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAubmF2YmFyPi5jb250YWluZXIgLm5hdmJhci1icmFuZCwKICAgIC5uYXZiYXI+LmNvbnRhaW5lci1mbHVpZCAubmF2YmFyLWJyYW5kIHsKICAgICAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICB9Cn0KCi5uYXZiYXItdG9nZ2xlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgIHBhZGRpbmc6IDlweCAxMHB4OwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KCi5uYXZiYXItdG9nZ2xlOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7Cn0KCi5uYXZiYXItdG9nZ2xlIC5pY29uLWJhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAyMnB4OwogICAgaGVpZ2h0OiAycHg7CiAgICBib3JkZXItcmFkaXVzOiAxcHg7Cn0KCi5uYXZiYXItdG9nZ2xlIC5pY29uLWJhcisuaWNvbi1iYXIgewogICAgbWFyZ2luLXRvcDogNHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5uYXZiYXItdG9nZ2xlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQp9CgoubmF2YmFyLW5hdiB7CiAgICBtYXJnaW46IDYuNXB4IC0xNXB4Owp9CgoubmF2YmFyLW5hdj5saT5hIHsKICAgIHBhZGRpbmctdG9wOiAxMHB4OwogICAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgICBsaW5lLWhlaWdodDogMjRweDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSB7CiAgICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgICBmbG9hdDogbm9uZTsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgfQogICAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YSwKICAgIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1oZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDVweCAxNXB4IDVweCAyNXB4OwogICAgfQogICAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICB9CiAgICAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmhvdmVyLAogICAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cyB7CiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAubmF2YmFyLW5hdiB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgbWFyZ2luOiAwOwogICAgfQogICAgLm5hdmJhci1uYXY+bGkgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgfQogICAgLm5hdmJhci1uYXY+bGk+YSB7CiAgICAgICAgcGFkZGluZy10b3A6IDEzcHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDEzcHg7CiAgICB9CiAgICAubmF2YmFyLW5hdi5uYXZiYXItcmlnaHQ6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAubmF2YmFyLWxlZnQgewogICAgICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAubmF2YmFyLXJpZ2h0IHsKICAgICAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKICAgIH0KfQoKLm5hdmJhci1mb3JtIHsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIG1hcmdpbi10b3A6IDBweDsKICAgIG1hcmdpbi1ib3R0b206IDBweDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXAgewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAubmF2YmFyLWZvcm0gewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgcGFkZGluZy10b3A6IDA7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICB9CiAgICAubmF2YmFyLWZvcm0ubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICB9Cn0KCi5uYXZiYXItbmF2PmxpPi5kcm9wZG93bi1tZW51IHsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KCi5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItbmF2PmxpPi5kcm9wZG93bi1tZW51IHsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLm5hdmJhci1idG4gewogICAgbWFyZ2luLXRvcDogMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMHB4Owp9CgoubmF2YmFyLWJ0bi5idG4tc20sCi5idG4tZ3JvdXAtc20+Lm5hdmJhci1idG4uYnRuIHsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLm5hdmJhci1idG4uYnRuLXhzLAouYnRuLWdyb3VwLXhzPi5uYXZiYXItYnRuLmJ0biB7CiAgICBtYXJnaW4tdG9wOiAxNHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTRweDsKfQoKLm5hdmJhci10ZXh0IHsKICAgIG1hcmdpbi10b3A6IDEzcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxM3B4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5uYXZiYXItdGV4dCB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgfQogICAgLm5hdmJhci10ZXh0Lm5hdmJhci1yaWdodDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9Cn0KCi5uYXZiYXItZGVmYXVsdCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwogICAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Owp9CgoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZCB7CiAgICBjb2xvcjogIzc3NzsKfQoKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItYnJhbmQ6aG92ZXIsCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWJyYW5kOmZvY3VzIHsKICAgIGNvbG9yOiAjNWU1ZTVlOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRleHQgewogICAgY29sb3I6ICM3Nzc7Cn0KCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj5saT5hIHsKICAgIGNvbG9yOiAjNzc3Owp9CgoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+bGk+YTpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2PmxpPmE6Zm9jdXMgewogICAgY29sb3I6ICMzMzM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5hY3RpdmU+YSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5hY3RpdmU+YTpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5hY3RpdmU+YTpmb2N1cyB7CiAgICBjb2xvcjogIzU1NTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTc7Cn0KCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXMgewogICAgY29sb3I6ICNjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogI2RkZDsKfQoKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGU6Zm9jdXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsKfQoKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODg4Owp9CgoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1jb2xsYXBzZSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItZm9ybSB7CiAgICBib3JkZXItY29sb3I6ICNlN2U3ZTc7Cn0KCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4ub3Blbj5hLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+Lm9wZW4+YTpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5vcGVuPmE6Zm9jdXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U3ZTdlNzsKICAgIGNvbG9yOiAjNTU1Owp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hIHsKICAgICAgICBjb2xvcjogIzc3NzsKICAgIH0KICAgIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmhvdmVyLAogICAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXMgewogICAgICAgIGNvbG9yOiAjMzMzOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgfQogICAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YSwKICAgIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6aG92ZXIsCiAgICAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmZvY3VzIHsKICAgICAgICBjb2xvcjogIzU1NTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlN2U3OwogICAgfQogICAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hLAogICAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmhvdmVyLAogICAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3VzIHsKICAgICAgICBjb2xvcjogI2NjYzsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIH0KfQoKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbGluayB7CiAgICBjb2xvcjogIzc3NzsKfQoKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbGluazpob3ZlciB7CiAgICBjb2xvcjogIzMzMzsKfQoKLm5hdmJhci1kZWZhdWx0IC5idG4tbGluayB7CiAgICBjb2xvcjogIzc3NzsKfQoKLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpmb2N1cyB7CiAgICBjb2xvcjogIzMzMzsKfQoKLm5hdmJhci1kZWZhdWx0IC5idG4tbGlua1tkaXNhYmxlZF06aG92ZXIsCi5uYXZiYXItZGVmYXVsdCAuYnRuLWxpbmtbZGlzYWJsZWRdOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5uYXZiYXItZGVmYXVsdCAuYnRuLWxpbms6Zm9jdXMgewogICAgY29sb3I6ICNjY2M7Cn0KCi5uYXZiYXItaW52ZXJzZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOwogICAgYm9yZGVyLWNvbG9yOiAjMDkwOTA5Owp9CgoubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZCB7CiAgICBjb2xvcjogIzlkOWQ5ZDsKfQoKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItYnJhbmQ6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRleHQgewogICAgY29sb3I6ICM5ZDlkOWQ7Cn0KCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj5saT5hIHsKICAgIGNvbG9yOiAjOWQ5ZDlkOwp9CgoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+bGk+YTpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2PmxpPmE6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5hY3RpdmU+YSwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5hY3RpdmU+YTpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5hY3RpdmU+YTpmb2N1cyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwOTA5MDk7Cn0KCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YSwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXMgewogICAgY29sb3I6ICM0NDQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogIzMzMzsKfQoKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGU6Zm9jdXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsKfQoKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoubmF2YmFyLWludmVyc2UgLm5hdmJhci1jb2xsYXBzZSwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItZm9ybSB7CiAgICBib3JkZXItY29sb3I6ICMxMDEwMTA7Cn0KCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4ub3Blbj5hLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+Lm9wZW4+YTpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5vcGVuPmE6Zm9jdXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzA5MDkwOTsKICAgIGNvbG9yOiAjZmZmOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZHJvcGRvd24taGVhZGVyIHsKICAgICAgICBib3JkZXItY29sb3I6ICMwOTA5MDk7CiAgICB9CiAgICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgLmRpdmlkZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwOTA5MDk7CiAgICB9CiAgICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICAgICAgY29sb3I6ICM5ZDlkOWQ7CiAgICB9CiAgICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpob3ZlciwKICAgIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmZvY3VzIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIH0KICAgIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmEsCiAgICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmhvdmVyLAogICAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpmb2N1cyB7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA5MDkwOTsKICAgIH0KICAgIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YSwKICAgIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpob3ZlciwKICAgIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1cyB7CiAgICAgICAgY29sb3I6ICM0NDQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICB9Cn0KCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWxpbmsgewogICAgY29sb3I6ICM5ZDlkOWQ7Cn0KCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWxpbms6aG92ZXIgewogICAgY29sb3I6ICNmZmY7Cn0KCi5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbmsgewogICAgY29sb3I6ICM5ZDlkOWQ7Cn0KCi5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbms6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbms6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7Cn0KCi5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLmJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbms6aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAubmF2YmFyLWludmVyc2UgLmJ0bi1saW5rOmZvY3VzIHsKICAgIGNvbG9yOiAjNDQ0Owp9CgouYnJlYWRjcnVtYiB7CiAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKfQoKLmJyZWFkY3J1bWIgYSB7CiAgICBjb2xvcjogIzAwMDsKfQoKLmJyZWFkY3J1bWIgYTpob3ZlciB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmJyZWFkY3J1bWIgYSwKLmJyZWFkY3J1bWI+bGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouYnJlYWRjcnVtYiBhK2E6YmVmb3JlLAouYnJlYWRjcnVtYiBhK2xpOmJlZm9yZSwKLmJyZWFkY3J1bWI+bGkrYTpiZWZvcmUsCi5icmVhZGNydW1iPmxpK2xpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGEiOwogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJzsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBwYWRkaW5nOiAwIDhweDsKICAgIGNvbG9yOiAjY2NjOwp9CgouYnJlYWRjcnVtYj4uYWN0aXZlIHsKICAgIGNvbG9yOiAjNzc3Nzc3Owp9CgoucGFnaW5hdGlvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBtYXJnaW46IDI0cHggMDsKICAgIGJvcmRlci1yYWRpdXM6IDA7Cn0KCi5wYWdpbmF0aW9uPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZTsKfQoKLnBhZ2luYXRpb24+bGk+YSwKLnBhZ2luYXRpb24+bGk+c3BhbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmc6IDEycHggMzBweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjc1OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBjb2xvciA0MDBtcywgYmFja2dyb3VuZC1jb2xvciA0MDBtczsKICAgIC1vLXRyYW5zaXRpb246IGNvbG9yIDQwMG1zLCBiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zOwogICAgdHJhbnNpdGlvbjogY29sb3IgNDAwbXMsIGJhY2tncm91bmQtY29sb3IgNDAwbXM7Cn0KCi5wYWdpbmF0aW9uPmxpOmZpcnN0LWNoaWxkPmEsCi5wYWdpbmF0aW9uPmxpOmZpcnN0LWNoaWxkPnNwYW4gewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKfQoKLnBhZ2luYXRpb24+bGk6bGFzdC1jaGlsZD5hLAoucGFnaW5hdGlvbj5saTpsYXN0LWNoaWxkPnNwYW4gewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQoKLnBhZ2luYXRpb24+bGk+YTpob3ZlciwKLnBhZ2luYXRpb24+bGk+YTpmb2N1cywKLnBhZ2luYXRpb24+bGk+c3Bhbjpob3ZlciwKLnBhZ2luYXRpb24+bGk+c3Bhbjpmb2N1cyB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgICBib3JkZXItY29sb3I6ICNkZGQ7Cn0KCi5wYWdpbmF0aW9uPi5hY3RpdmU+YSwKLnBhZ2luYXRpb24+LmFjdGl2ZT5hOmhvdmVyLAoucGFnaW5hdGlvbj4uYWN0aXZlPmE6Zm9jdXMsCi5wYWdpbmF0aW9uPi5hY3RpdmU+c3BhbiwKLnBhZ2luYXRpb24+LmFjdGl2ZT5zcGFuOmhvdmVyLAoucGFnaW5hdGlvbj4uYWN0aXZlPnNwYW46Zm9jdXMgewogICAgei1pbmRleDogMjsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjYyNjsKICAgIGJvcmRlci1jb2xvcjogIzI2MjYyNjsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKLnBhZ2luYXRpb24+LmRpc2FibGVkPnNwYW4sCi5wYWdpbmF0aW9uPi5kaXNhYmxlZD5zcGFuOmhvdmVyLAoucGFnaW5hdGlvbj4uZGlzYWJsZWQ+c3Bhbjpmb2N1cywKLnBhZ2luYXRpb24+LmRpc2FibGVkPmEsCi5wYWdpbmF0aW9uPi5kaXNhYmxlZD5hOmhvdmVyLAoucGFnaW5hdGlvbj4uZGlzYWJsZWQ+YTpmb2N1cyB7CiAgICBjb2xvcjogIzc3Nzc3NzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNkZGQ7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CgoucGFnaW5hdGlvbi1sZz5saT5hLAoucGFnaW5hdGlvbi1sZz5saT5zcGFuIHsKICAgIHBhZGRpbmc6IDE0cHggMzVweDsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKLnBhZ2luYXRpb24tbGc+bGk6Zmlyc3QtY2hpbGQ+YSwKLnBhZ2luYXRpb24tbGc+bGk6Zmlyc3QtY2hpbGQ+c3BhbiB7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxMHB4OwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDsKfQoKLnBhZ2luYXRpb24tbGc+bGk6bGFzdC1jaGlsZD5hLAoucGFnaW5hdGlvbi1sZz5saTpsYXN0LWNoaWxkPnNwYW4gewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDEwcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTBweDsKfQoKLnBhZ2luYXRpb24tc20+bGk+YSwKLnBhZ2luYXRpb24tc20+bGk+c3BhbiB7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCi5wYWdpbmF0aW9uLXNtPmxpOmZpcnN0LWNoaWxkPmEsCi5wYWdpbmF0aW9uLXNtPmxpOmZpcnN0LWNoaWxkPnNwYW4gewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4Owp9CgoucGFnaW5hdGlvbi1zbT5saTpsYXN0LWNoaWxkPmEsCi5wYWdpbmF0aW9uLXNtPmxpOmxhc3QtY2hpbGQ+c3BhbiB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKfQoKLnBhZ2VyIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIG1hcmdpbjogMjRweCAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnBhZ2VyOmJlZm9yZSwKLnBhZ2VyOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGRpc3BsYXk6IHRhYmxlOwp9CgoucGFnZXI6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7Cn0KCi5wYWdlciBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmU7Cn0KCi5wYWdlciBsaT5hLAoucGFnZXIgbGk+c3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogMTVweDsKfQoKLnBhZ2VyIGxpPmE6aG92ZXIsCi5wYWdlciBsaT5hOmZvY3VzIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7Cn0KCi5wYWdlciAubmV4dD5hLAoucGFnZXIgLm5leHQ+c3BhbiB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5wYWdlciAucHJldmlvdXM+YSwKLnBhZ2VyIC5wcmV2aW91cz5zcGFuIHsKICAgIGZsb2F0OiBsZWZ0Owp9CgoucGFnZXIgLmRpc2FibGVkPmEsCi5wYWdlciAuZGlzYWJsZWQ+YTpob3ZlciwKLnBhZ2VyIC5kaXNhYmxlZD5hOmZvY3VzLAoucGFnZXIgLmRpc2FibGVkPnNwYW4gewogICAgY29sb3I6ICM3Nzc3Nzc7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLmxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZTsKICAgIHBhZGRpbmc6IC4yZW0gLjZlbSAuM2VtOwogICAgZm9udC1zaXplOiA3NSU7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogICAgYm9yZGVyLXJhZGl1czogLjI1ZW07Cn0KCi5sYWJlbDplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouYnRuIC5sYWJlbCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0xcHg7Cn0KCmEubGFiZWw6aG92ZXIsCmEubGFiZWw6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5sYWJlbC1kZWZhdWx0IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM3Nzc3Nzc7Cn0KCi5sYWJlbC1kZWZhdWx0W2hyZWZdOmhvdmVyLAoubGFiZWwtZGVmYXVsdFtocmVmXTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWU1ZTVlOwp9CgoubGFiZWwtcHJpbWFyeSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2Owp9CgoubGFiZWwtcHJpbWFyeVtocmVmXTpob3ZlciwKLmxhYmVsLXByaW1hcnlbaHJlZl06Zm9jdXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzBkMGQwZDsKfQoKLmxhYmVsLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzc5YjUzMDsKfQoKLmxhYmVsLXN1Y2Nlc3NbaHJlZl06aG92ZXIsCi5sYWJlbC1zdWNjZXNzW2hyZWZdOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1ZThkMjU7Cn0KCi5sYWJlbC1pbmZvIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyN2NlYjQ7Cn0KCi5sYWJlbC1pbmZvW2hyZWZdOmhvdmVyLAoubGFiZWwtaW5mb1tocmVmXTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWZhMzhmOwp9CgoubGFiZWwtd2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOwp9CgoubGFiZWwtd2FybmluZ1tocmVmXTpob3ZlciwKLmxhYmVsLXdhcm5pbmdbaHJlZl06Zm9jdXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2VjOTcxZjsKfQoKLmxhYmVsLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQ0MzQzOwp9CgoubGFiZWwtZGFuZ2VyW2hyZWZdOmhvdmVyLAoubGFiZWwtZGFuZ2VyW2hyZWZdOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkNTFmMWY7Cn0KCi5iYWRnZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtaW4td2lkdGg6IDEwcHg7CiAgICBwYWRkaW5nOiAzcHggN3B4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBjb2xvcjogI2ZmZjsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQtY29sb3I6ICM3Nzc3Nzc7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Owp9CgouYmFkZ2U6ZW1wdHkgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmJ0biAuYmFkZ2UgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMXB4Owp9CgouYnRuLXhzIC5iYWRnZSwKLmJ0bi1ncm91cC14cz4uYnRuIC5iYWRnZSB7CiAgICB0b3A6IDA7CiAgICBwYWRkaW5nOiAxcHggNXB4Owp9CgphLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU+LmJhZGdlLAoubmF2LXBpbGxzPi5hY3RpdmU+YT4uYmFkZ2UgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoubmF2LXBpbGxzPmxpPmE+LmJhZGdlIHsKICAgIG1hcmdpbi1sZWZ0OiAzcHg7Cn0KCmEuYmFkZ2U6aG92ZXIsCmEuYmFkZ2U6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5qdW1ib3Ryb24gewogICAgcGFkZGluZzogMzBweDsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7Cn0KCi5qdW1ib3Ryb24gaDEsCi5qdW1ib3Ryb24gLmgxIHsKICAgIGNvbG9yOiBpbmhlcml0Owp9CgouanVtYm90cm9uIHAgewogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgIGZvbnQtc2l6ZTogMjFweDsKICAgIGZvbnQtd2VpZ2h0OiAyMDA7Cn0KCi5qdW1ib3Ryb24+aHIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2Q1ZDVkNTsKfQoKLmNvbnRhaW5lciAuanVtYm90cm9uIHsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KCi5qdW1ib3Ryb24gLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDEwMCU7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuanVtYm90cm9uIHsKICAgICAgICBwYWRkaW5nLXRvcDogNDhweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDhweDsKICAgIH0KICAgIC5jb250YWluZXIgLmp1bWJvdHJvbiB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA2MHB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7CiAgICB9CiAgICAuanVtYm90cm9uIGgxLAogICAgLmp1bWJvdHJvbiAuaDEgewogICAgICAgIGZvbnQtc2l6ZTogNjNweDsKICAgIH0KfQoKLnRodW1ibmFpbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDRweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBsaW5lLWhlaWdodDogMS43NTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogNnB4Owp9CgoudGh1bWJuYWlsPmltZywKLnRodW1ibmFpbCBhPmltZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlIFw5OwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi50aHVtYm5haWwgLmNhcHRpb24gewogICAgcGFkZGluZzogOXB4OwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCmEudGh1bWJuYWlsOmhvdmVyLAphLnRodW1ibmFpbDpmb2N1cywKYS50aHVtYm5haWwuYWN0aXZlIHsKICAgIGJvcmRlci1jb2xvcjogIzQ4NDg0ODsKfQoKLmFsZXJ0IHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KCi5hbGVydCBoNCB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgY29sb3I6IGluaGVyaXQ7Cn0KCi5hbGVydCAuYWxlcnQtbGluayB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLmFsZXJ0PnAsCi5hbGVydD51bCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgouYWxlcnQ+cCtwIHsKICAgIG1hcmdpbi10b3A6IDVweDsKfQoKLmFsZXJ0LWRpc21pc3NhYmxlLAouYWxlcnQtZGlzbWlzc2libGUgewogICAgcGFkZGluZy1yaWdodDogMzVweDsKfQoKLmFsZXJ0LWRpc21pc3NhYmxlIC5jbG9zZSwKLmFsZXJ0LWRpc21pc3NpYmxlIC5jbG9zZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0ycHg7CiAgICByaWdodDogLTIxcHg7CiAgICBjb2xvcjogaW5oZXJpdDsKfQoKLmFsZXJ0LXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICAgIGJvcmRlci1jb2xvcjogI2Q2ZTljNjsKICAgIGNvbG9yOiAjM2M3NjNkOwp9CgouYWxlcnQtc3VjY2VzcyBociB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjYzllMmIzOwp9CgouYWxlcnQtc3VjY2VzcyAuYWxlcnQtbGluayB7CiAgICBjb2xvcjogIzJiNTQyYzsKfQoKLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIHsKICAgIGNvbG9yOiAjM2M3NjNkOwp9CgouYWxlcnQtaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3OwogICAgYm9yZGVyLWNvbG9yOiAjYmNlOGYxOwogICAgY29sb3I6ICMzMTcwOGY7Cn0KCi5hbGVydC1pbmZvIGhyIHsKICAgIGJvcmRlci10b3AtY29sb3I6ICNhNmUxZWM7Cn0KCi5hbGVydC1pbmZvIC5hbGVydC1saW5rIHsKICAgIGNvbG9yOiAjMjQ1MjY5Owp9CgouYWxlcnQtaW5mbyAuY2xvc2UgewogICAgY29sb3I6ICMzMTcwOGY7Cn0KCi5hbGVydC13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7CiAgICBib3JkZXItY29sb3I6ICNmYWViY2M7CiAgICBjb2xvcjogIzhhNmQzYjsKfQoKLmFsZXJ0LXdhcm5pbmcgaHIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2Y3ZTFiNTsKfQoKLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWxpbmsgewogICAgY29sb3I6ICM2NjUxMmM7Cn0KCi5hbGVydC13YXJuaW5nIC5jbG9zZSB7CiAgICBjb2xvcjogIzhhNmQzYjsKfQoKLmFsZXJ0LWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwogICAgYm9yZGVyLWNvbG9yOiAjZWJjY2QxOwogICAgY29sb3I6ICNhOTQ0NDI7Cn0KCi5hbGVydC1kYW5nZXIgaHIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2U0YjljMDsKfQoKLmFsZXJ0LWRhbmdlciAuYWxlcnQtbGluayB7CiAgICBjb2xvcjogIzg0MzUzNDsKfQoKLmFsZXJ0LWRhbmdlciAuY2xvc2UgewogICAgY29sb3I6ICNhOTQ0NDI7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgICBmcm9tIHsKICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MHB4IDA7CiAgICB9CiAgICB0byB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogICAgfQp9CgpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICAgIGZyb20gewogICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDQwcHggMDsKICAgIH0KICAgIHRvIHsKICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7CiAgICB9Cn0KCi5wcm9ncmVzcyB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgaGVpZ2h0OiAyNHB4OwogICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogICAgYm9yZGVyLXJhZGl1czogMDsKfQoKLnByb2dyZXNzLWJhciB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwogICAgLW8tdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwogICAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwp9CgoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLAoucHJvZ3Jlc3MtYmFyLXN0cmlwZWQgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweDsKfQoKLnByb2dyZXNzLmFjdGl2ZSAucHJvZ3Jlc3MtYmFyLAoucHJvZ3Jlc3MtYmFyLmFjdGl2ZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwogICAgLW8tYW5pbWF0aW9uOiBwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTsKfQoKLnByb2dyZXNzLWJhclthcmlhLXZhbHVlbm93PSIxIl0sCi5wcm9ncmVzcy1iYXJbYXJpYS12YWx1ZW5vdz0iMiJdIHsKICAgIG1pbi13aWR0aDogMzBweDsKfQoKLnByb2dyZXNzLWJhclthcmlhLXZhbHVlbm93PSIwIl0gewogICAgY29sb3I6ICM3Nzc3Nzc7CiAgICBtaW4td2lkdGg6IDMwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgoucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzc5YjUzMDsKfQoKLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci1zdWNjZXNzIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9CgoucHJvZ3Jlc3MtYmFyLWluZm8gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI3Y2ViNDsKfQoKLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci1pbmZvIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9CgoucHJvZ3Jlc3MtYmFyLXdhcm5pbmcgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTsKfQoKLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9CgoucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQ0MzQzOwp9CgoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKfQoKLm1lZGlhIHsKICAgIG1hcmdpbi10b3A6IDE1cHg7Cn0KCi5tZWRpYTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tdG9wOiAwOwp9CgoubWVkaWEtcmlnaHQsCi5tZWRpYT4ucHVsbC1yaWdodCB7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KCi5tZWRpYS1sZWZ0LAoubWVkaWE+LnB1bGwtbGVmdCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4Owp9CgoubWVkaWEtbGVmdCwKLm1lZGlhLXJpZ2h0LAoubWVkaWEtYm9keSB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoKLm1lZGlhLW1pZGRsZSB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgoubWVkaWEtYm90dG9tIHsKICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207Cn0KCi5tZWRpYS1oZWFkaW5nIHsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KCi5tZWRpYS1saXN0IHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5saXN0LWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KCi5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDZweDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDZweDsKfQoKLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNnB4Owp9CgoubGlzdC1ncm91cC1pdGVtPi5iYWRnZSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5saXN0LWdyb3VwLWl0ZW0+LmJhZGdlKy5iYWRnZSB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKfQoKYS5saXN0LWdyb3VwLWl0ZW0gewogICAgY29sb3I6ICM1NTU7Cn0KCmEubGlzdC1ncm91cC1pdGVtIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgICBjb2xvcjogIzMzMzsKfQoKYS5saXN0LWdyb3VwLWl0ZW06aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtOmZvY3VzIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGNvbG9yOiAjNTU1OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCwKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpob3ZlciwKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLAoubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpmb2N1cyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgY29sb3I6IGluaGVyaXQ7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0LAoubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpmb2N1cyAubGlzdC1ncm91cC1pdGVtLXRleHQgewogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciwKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgewogICAgei1pbmRleDogMjsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjYyNjsKICAgIGJvcmRlci1jb2xvcjogIzI2MjYyNjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZz4uc21hbGwsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6aG92ZXIgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPnNtYWxsLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+LnNtYWxsLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZz5zbWFsbCwKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5zbWFsbCB7CiAgICBjb2xvcjogaW5oZXJpdDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0LAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciAubGlzdC1ncm91cC1pdGVtLXRleHQsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCB7CiAgICBjb2xvcjogIzhjOGM4YzsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsKICAgIGNvbG9yOiAjM2M3NjNkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKfQoKYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyB7CiAgICBjb2xvcjogIzNjNzYzZDsKfQoKYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgY29sb3I6IGluaGVyaXQ7Cn0KCmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6Zm9jdXMgewogICAgY29sb3I6ICMzYzc2M2Q7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBlOWM2Owp9CgphLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmFjdGl2ZSwKYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hY3RpdmU6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzNjNzYzZDsKICAgIGJvcmRlci1jb2xvcjogIzNjNzYzZDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICAgIGNvbG9yOiAjMzE3MDhmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNzsKfQoKYS5saXN0LWdyb3VwLWl0ZW0taW5mbyB7CiAgICBjb2xvcjogIzMxNzA4ZjsKfQoKYS5saXN0LWdyb3VwLWl0ZW0taW5mbyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgY29sb3I6IGluaGVyaXQ7Cn0KCmEubGlzdC1ncm91cC1pdGVtLWluZm86aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLWluZm86Zm9jdXMgewogICAgY29sb3I6ICMzMTcwOGY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRlM2YzOwp9CgphLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZSwKYS5saXN0LWdyb3VwLWl0ZW0taW5mby5hY3RpdmU6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLWluZm8uYWN0aXZlOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMxNzA4ZjsKICAgIGJvcmRlci1jb2xvcjogIzMxNzA4ZjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHsKICAgIGNvbG9yOiAjOGE2ZDNiOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoKYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZyB7CiAgICBjb2xvcjogIzhhNmQzYjsKfQoKYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgY29sb3I6IGluaGVyaXQ7Cn0KCmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6Zm9jdXMgewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmMmNjOwp9CgphLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmFjdGl2ZSwKYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYWN0aXZlOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzhhNmQzYjsKICAgIGJvcmRlci1jb2xvcjogIzhhNmQzYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewogICAgY29sb3I6ICNhOTQ0NDI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwp9CgphLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewogICAgY29sb3I6ICNhOTQ0NDI7Cn0KCmEubGlzdC1ncm91cC1pdGVtLWRhbmdlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgY29sb3I6IGluaGVyaXQ7Cn0KCmEubGlzdC1ncm91cC1pdGVtLWRhbmdlcjpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmZvY3VzIHsKICAgIGNvbG9yOiAjYTk0NDQyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ViY2NjYzsKfQoKYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZSwKYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZTpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZTpmb2N1cyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNhOTQ0NDI7CiAgICBib3JkZXItY29sb3I6ICNhOTQ0NDI7Cn0KCi5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgoubGlzdC1ncm91cC1pdGVtLXRleHQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KCi5wYW5lbCB7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgoucGFuZWwtYm9keSB7CiAgICBwYWRkaW5nOiAxNXB4Owp9CgoucGFuZWwtYm9keTpiZWZvcmUsCi5wYW5lbC1ib2R5OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGRpc3BsYXk6IHRhYmxlOwp9CgoucGFuZWwtYm9keTphZnRlciB7CiAgICBjbGVhcjogYm90aDsKfQoKLnBhbmVsLWhlYWRpbmcgewogICAgcGFkZGluZzogMjVweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7Cn0KCi5wYW5lbC1oZWFkaW5nPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGNvbG9yOiBpbmhlcml0Owp9CgoucGFuZWwtdGl0bGUgewogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBjb2xvcjogaW5oZXJpdDsKfQoKLnBhbmVsLXRpdGxlPmEgewogICAgY29sb3I6IGluaGVyaXQ7Cn0KCi5wYW5lbC1mb290ZXIgewogICAgcGFkZGluZzogMTVweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLnBhbmVsPi5saXN0LWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5wYW5lbD4ubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtIHsKICAgIGJvcmRlci13aWR0aDogMXB4IDA7CiAgICBib3JkZXItcmFkaXVzOiAwOwp9CgoucGFuZWw+Lmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKfQoKLnBhbmVsPi5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b206IDA7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4Owp9CgoucGFuZWwtaGVhZGluZysubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3Atd2lkdGg6IDA7Cn0KCi5saXN0LWdyb3VwKy5wYW5lbC1mb290ZXIgewogICAgYm9yZGVyLXRvcC13aWR0aDogMDsKfQoKLnBhbmVsPi50YWJsZSwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZSwKLnBhbmVsPi5wYW5lbC1jb2xsYXBzZT4udGFibGUgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4Owp9CgoucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKfQoKLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKfQoKLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4Owp9CgoucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4Owp9CgoucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7Cn0KCi5wYW5lbD4ucGFuZWwtYm9keSsudGFibGUsCi5wYW5lbD4ucGFuZWwtYm9keSsudGFibGUtcmVzcG9uc2l2ZSB7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKfQoKLnBhbmVsPi50YWJsZT50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aCwKLnBhbmVsPi50YWJsZT50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZCB7CiAgICBib3JkZXItdG9wOiAwOwp9CgoucGFuZWw+LnRhYmxlLWJvcmRlcmVkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKfQoKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItbGVmdDogMDsKfQoKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6bGFzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6bGFzdC1jaGlsZCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpsYXN0LWNoaWxkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItcmlnaHQ6IDA7Cn0KCi5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsCi5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGgsCi5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGQsCi5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGgsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGgsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGggewogICAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRkLAoucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGgsCi5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwKLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRoLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGQsCi5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50aCwKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRkLAoucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmxhc3QtY2hpbGQ+dGggewogICAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlIHsKICAgIGJvcmRlcjogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5wYW5lbC1ncm91cCB7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4Owp9CgoucGFuZWwtZ3JvdXAgLnBhbmVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KCi5wYW5lbC1ncm91cCAucGFuZWwrLnBhbmVsIHsKICAgIG1hcmdpbi10b3A6IDhweDsKfQoKLnBhbmVsLWdyb3VwIC5wYW5lbC1oZWFkaW5nIHsKICAgIGJvcmRlci1ib3R0b206IDA7Cn0KCi5wYW5lbC1ncm91cCAucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHkgewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7Cn0KCi5wYW5lbC1ncm91cCAucGFuZWwtZm9vdGVyIHsKICAgIGJvcmRlci10b3A6IDA7Cn0KCi5wYW5lbC1ncm91cCAucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKfQoKLnBhbmVsLWRlZmF1bHQgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkOwp9CgoucGFuZWwtZGVmYXVsdD4ucGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogIzMzMzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICBib3JkZXItY29sb3I6ICNkZGQ7Cn0KCi5wYW5lbC1kZWZhdWx0Pi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZGRkOwp9CgoucGFuZWwtZGVmYXVsdD4ucGFuZWwtaGVhZGluZyAuYmFkZ2UgewogICAgY29sb3I6ICNmNWY1ZjU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzMzMzOwp9CgoucGFuZWwtZGVmYXVsdD4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keSB7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZGRkOwp9CgoucGFuZWwtcHJpbWFyeSB7CiAgICBib3JkZXItY29sb3I6ICMyNjI2MjY7Cn0KCi5wYW5lbC1wcmltYXJ5Pi5wYW5lbC1oZWFkaW5nIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjYyNjsKICAgIGJvcmRlci1jb2xvcjogIzI2MjYyNjsKfQoKLnBhbmVsLXByaW1hcnk+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3AtY29sb3I6ICMyNjI2MjY7Cn0KCi5wYW5lbC1wcmltYXJ5Pi5wYW5lbC1oZWFkaW5nIC5iYWRnZSB7CiAgICBjb2xvcjogIzI2MjYyNjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5wYW5lbC1wcmltYXJ5Pi5wYW5lbC1mb290ZXIrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMyNjI2MjY7Cn0KCi5wYW5lbC1zdWNjZXNzIHsKICAgIGJvcmRlci1jb2xvcjogI2Q2ZTljNjsKfQoKLnBhbmVsLXN1Y2Nlc3M+LnBhbmVsLWhlYWRpbmcgewogICAgY29sb3I6ICMzYzc2M2Q7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmMGQ4OwogICAgYm9yZGVyLWNvbG9yOiAjZDZlOWM2Owp9CgoucGFuZWwtc3VjY2Vzcz4ucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHkgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2Q2ZTljNjsKfQoKLnBhbmVsLXN1Y2Nlc3M+LnBhbmVsLWhlYWRpbmcgLmJhZGdlIHsKICAgIGNvbG9yOiAjZGZmMGQ4OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzNjNzYzZDsKfQoKLnBhbmVsLXN1Y2Nlc3M+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHkgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2Q2ZTljNjsKfQoKLnBhbmVsLWluZm8gewogICAgYm9yZGVyLWNvbG9yOiAjYmNlOGYxOwp9CgoucGFuZWwtaW5mbz4ucGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogIzMxNzA4ZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjc7CiAgICBib3JkZXItY29sb3I6ICNiY2U4ZjE7Cn0KCi5wYW5lbC1pbmZvPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjYmNlOGYxOwp9CgoucGFuZWwtaW5mbz4ucGFuZWwtaGVhZGluZyAuYmFkZ2UgewogICAgY29sb3I6ICNkOWVkZjc7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE3MDhmOwp9CgoucGFuZWwtaW5mbz4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keSB7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjYmNlOGYxOwp9CgoucGFuZWwtd2FybmluZyB7CiAgICBib3JkZXItY29sb3I6ICNmYWViY2M7Cn0KCi5wYW5lbC13YXJuaW5nPi5wYW5lbC1oZWFkaW5nIHsKICAgIGNvbG9yOiAjOGE2ZDNiOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKICAgIGJvcmRlci1jb2xvcjogI2ZhZWJjYzsKfQoKLnBhbmVsLXdhcm5pbmc+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3AtY29sb3I6ICNmYWViY2M7Cn0KCi5wYW5lbC13YXJuaW5nPi5wYW5lbC1oZWFkaW5nIC5iYWRnZSB7CiAgICBjb2xvcjogI2ZjZjhlMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICM4YTZkM2I7Cn0KCi5wYW5lbC13YXJuaW5nPi5wYW5lbC1mb290ZXIrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmYWViY2M7Cn0KCi5wYW5lbC1kYW5nZXIgewogICAgYm9yZGVyLWNvbG9yOiAjZWJjY2QxOwp9CgoucGFuZWwtZGFuZ2VyPi5wYW5lbC1oZWFkaW5nIHsKICAgIGNvbG9yOiAjYTk0NDQyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKICAgIGJvcmRlci1jb2xvcjogI2ViY2NkMTsKfQoKLnBhbmVsLWRhbmdlcj4ucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHkgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2ViY2NkMTsKfQoKLnBhbmVsLWRhbmdlcj4ucGFuZWwtaGVhZGluZyAuYmFkZ2UgewogICAgY29sb3I6ICNmMmRlZGU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTk0NDQyOwp9CgoucGFuZWwtZGFuZ2VyPi5wYW5lbC1mb290ZXIrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNlYmNjZDE7Cn0KCi5lbWJlZC1yZXNwb25zaXZlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAwOwogICAgcGFkZGluZzogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sCi5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwKLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsCi5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgYm90dG9tOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IDA7Cn0KCi5lbWJlZC1yZXNwb25zaXZlLmVtYmVkLXJlc3BvbnNpdmUtMTZieTkgewogICAgcGFkZGluZy1ib3R0b206IDU2LjI1JTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUuZW1iZWQtcmVzcG9uc2l2ZS00YnkzIHsKICAgIHBhZGRpbmctYm90dG9tOiA3NSU7Cn0KCi53ZWxsIHsKICAgIG1pbi1oZWlnaHQ6IDIwcHg7CiAgICBwYWRkaW5nOiA2MHB4OwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICBib3JkZXI6IDBweCBzb2xpZCAjZTNlM2UzOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi53ZWxsIGJsb2NrcXVvdGUgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpOwp9Cgoud2VsbC1sZyB7CiAgICBwYWRkaW5nOiAyNHB4OwogICAgYm9yZGVyLXJhZGl1czogMDsKfQoKLndlbGwtc20gewogICAgcGFkZGluZzogOXB4OwogICAgYm9yZGVyLXJhZGl1czogMDsKfQoKLmNsb3NlIHsKICAgIGZsb2F0OiByaWdodDsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogIzAwMDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5jbG9zZTpob3ZlciwKLmNsb3NlOmZvY3VzIHsKICAgIGNvbG9yOiAjMDAwOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3BhY2l0eTogMC41OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTsKfQoKYnV0dG9uLmNsb3NlIHsKICAgIHBhZGRpbmc6IDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMDsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQoKLm1vZGFsLW9wZW4gewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLm1vZGFsIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMTA1MDsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIG91dGxpbmU6IDA7Cn0KCi5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yNSUsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjUlLCAwKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDsKICAgIC1tb3otdHJhbnNpdGlvbjogLW1vei10cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDsKICAgIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7Cn0KCi5tb2RhbC5pbiAubW9kYWwtZGlhbG9nIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7Cn0KCi5tb2RhbC1vcGVuIC5tb2RhbCB7CiAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICBvdmVyZmxvdy15OiBhdXRvOwp9CgoubW9kYWwtZGlhbG9nIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiBhdXRvOwogICAgbWFyZ2luOiAxMHB4Owp9CgoubW9kYWwtY29udGVudCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgICBib3gtc2hhZG93OiAwIDNweCA5cHggcmdiYSgwLCAwLCAwLCAwLjUpOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIG91dGxpbmU6IDA7Cn0KCi5tb2RhbC1iYWNrZHJvcCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDQwOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoKLm1vZGFsLWJhY2tkcm9wLmZhZGUgewogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKfQoKLm1vZGFsLWJhY2tkcm9wLmluIHsKICAgIG9wYWNpdHk6IDAuNTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7Cn0KCi5tb2RhbC1oZWFkZXIgewogICAgcGFkZGluZzogMTVweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlNWU1OwogICAgbWluLWhlaWdodDogMTYuNzVweDsKfQoKLm1vZGFsLWhlYWRlciAuY2xvc2UgewogICAgbWFyZ2luLXRvcDogLTJweDsKfQoKLm1vZGFsLXRpdGxlIHsKICAgIG1hcmdpbjogMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjc1Owp9CgoubW9kYWwtYm9keSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nOiAxNXB4Owp9CgoubW9kYWwtZm9vdGVyIHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlNWU1Owp9CgoubW9kYWwtZm9vdGVyOmJlZm9yZSwKLm1vZGFsLWZvb3RlcjphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBkaXNwbGF5OiB0YWJsZTsKfQoKLm1vZGFsLWZvb3RlcjphZnRlciB7CiAgICBjbGVhcjogYm90aDsKfQoKLm1vZGFsLWZvb3RlciAuYnRuKy5idG4gewogICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5tb2RhbC1mb290ZXIgLmJ0bi1ncm91cCAuYnRuKy5idG4gewogICAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5tb2RhbC1mb290ZXIgLmJ0bi1ibG9jaysuYnRuLWJsb2NrIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgoubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtOTk5OXB4OwogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBvdmVyZmxvdzogc2Nyb2xsOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5tb2RhbC1kaWFsb2cgewogICAgICAgIHdpZHRoOiA2MDBweDsKICAgICAgICBtYXJnaW46IDMwcHggYXV0bzsKICAgIH0KICAgIC5tb2RhbC1jb250ZW50IHsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjUpOwogICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjUpOwogICAgfQogICAgLm1vZGFsLXNtIHsKICAgICAgICB3aWR0aDogMzAwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLm1vZGFsLWxnIHsKICAgICAgICB3aWR0aDogOTAwcHg7CiAgICB9Cn0KCi50b29sdGlwIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDEwNzA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKfQoKLnRvb2x0aXAuaW4gewogICAgb3BhY2l0eTogMC45OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTkwKTsKfQoKLnRvb2x0aXAudG9wIHsKICAgIG1hcmdpbi10b3A6IC0zcHg7CiAgICBwYWRkaW5nOiA1cHggMDsKfQoKLnRvb2x0aXAucmlnaHQgewogICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgIHBhZGRpbmc6IDAgNXB4Owp9CgoudG9vbHRpcC5ib3R0b20gewogICAgbWFyZ2luLXRvcDogM3B4OwogICAgcGFkZGluZzogNXB4IDA7Cn0KCi50b29sdGlwLmxlZnQgewogICAgbWFyZ2luLWxlZnQ6IC0zcHg7CiAgICBwYWRkaW5nOiAwIDVweDsKfQoKLnRvb2x0aXAtaW5uZXIgewogICAgbWF4LXdpZHRoOiAyMDBweDsKICAgIHBhZGRpbmc6IDNweCA4cHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7CiAgICBib3JkZXItcmFkaXVzOiAwcHg7Cn0KCi50b29sdGlwLWFycm93IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwOwogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7Cn0KCi50b29sdGlwLnRvcCAudG9vbHRpcC1hcnJvdyB7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLTVweDsKICAgIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoKLnRvb2x0aXAudG9wLWxlZnQgLnRvb2x0aXAtYXJyb3cgewogICAgYm90dG9tOiAwOwogICAgbGVmdDogNXB4OwogICAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwOwp9CgoudG9vbHRpcC50b3AtcmlnaHQgLnRvb2x0aXAtYXJyb3cgewogICAgYm90dG9tOiAwOwogICAgcmlnaHQ6IDVweDsKICAgIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoKLnRvb2x0aXAucmlnaHQgLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAwOwogICAgbWFyZ2luLXRvcDogLTVweDsKICAgIGJvcmRlci13aWR0aDogNXB4IDVweCA1cHggMDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzAwMDsKfQoKLnRvb2x0aXAubGVmdCAudG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAwOwogICAgbWFyZ2luLXRvcDogLTVweDsKICAgIGJvcmRlci13aWR0aDogNXB4IDAgNXB4IDVweDsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9CgoudG9vbHRpcC5ib3R0b20gLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7Cn0KCi50b29sdGlwLmJvdHRvbS1sZWZ0IC50b29sdGlwLWFycm93IHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDVweDsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMDsKfQoKLnRvb2x0aXAuYm90dG9tLXJpZ2h0IC50b29sdGlwLWFycm93IHsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiA1cHg7CiAgICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7Cn0KCi5wb3BvdmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDYwOwogICAgZGlzcGxheTogbm9uZTsKICAgIG1heC13aWR0aDogMjc2cHg7CiAgICBwYWRkaW5nOiAxcHg7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgICBib3gtc2hhZG93OiAwIDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KCi5wb3BvdmVyLnRvcCB7CiAgICBtYXJnaW4tdG9wOiAtMTBweDsKfQoKLnBvcG92ZXIucmlnaHQgewogICAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KCi5wb3BvdmVyLmJvdHRvbSB7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CgoucG9wb3Zlci5sZWZ0IHsKICAgIG1hcmdpbi1sZWZ0OiAtMTBweDsKfQoKLnBvcG92ZXItdGl0bGUgewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogOHB4IDE0cHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgICBib3JkZXItcmFkaXVzOiA5cHggOXB4IDAgMDsKfQoKLnBvcG92ZXItY29udGVudCB7CiAgICBwYWRkaW5nOiA5cHggMTRweDsKfQoKLnBvcG92ZXI+LmFycm93LAoucG9wb3Zlcj4uYXJyb3c6YWZ0ZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwp9CgoucG9wb3Zlcj4uYXJyb3cgewogICAgYm9yZGVyLXdpZHRoOiAxMXB4Owp9CgoucG9wb3Zlcj4uYXJyb3c6YWZ0ZXIgewogICAgYm9yZGVyLXdpZHRoOiAxMHB4OwogICAgY29udGVudDogIiI7Cn0KCi5wb3BvdmVyLnRvcD4uYXJyb3cgewogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC0xMXB4OwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKICAgIGJvcmRlci10b3AtY29sb3I6ICM5OTk5OTk7CiAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpOwogICAgYm90dG9tOiAtMTFweDsKfQoKLnBvcG92ZXIudG9wPi5hcnJvdzphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBib3R0b206IDFweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTBweDsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOwp9CgoucG9wb3Zlci5yaWdodD4uYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAtMTFweDsKICAgIG1hcmdpbi10b3A6IC0xMXB4OwogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7CiAgICBib3JkZXItcmlnaHQtY29sb3I6ICM5OTk5OTk7CiAgICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KCi5wb3BvdmVyLnJpZ2h0Pi5hcnJvdzphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBsZWZ0OiAxcHg7CiAgICBib3R0b206IC0xMHB4OwogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7CiAgICBib3JkZXItcmlnaHQtY29sb3I6ICNmZmY7Cn0KCi5wb3BvdmVyLmJvdHRvbT4uYXJyb3cgewogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC0xMXB4OwogICAgYm9yZGVyLXRvcC13aWR0aDogMDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICM5OTk5OTk7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpOwogICAgdG9wOiAtMTFweDsKfQoKLnBvcG92ZXIuYm90dG9tPi5hcnJvdzphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICB0b3A6IDFweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTBweDsKICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwp9CgoucG9wb3Zlci5sZWZ0Pi5hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAtMTFweDsKICAgIG1hcmdpbi10b3A6IC0xMXB4OwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgYm9yZGVyLWxlZnQtY29sb3I6ICM5OTk5OTk7CiAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoKLnBvcG92ZXIubGVmdD4uYXJyb3c6YWZ0ZXIgewogICAgY29udGVudDogIiAiOwogICAgcmlnaHQ6IDFweDsKICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmOwogICAgYm90dG9tOiAtMTBweDsKfQoKLmNhcm91c2VsLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouY2Fyb3VzZWwtaW5uZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHdpZHRoOiAxMDAlOwp9CgouY2Fyb3VzZWwtaW5uZXI+Lml0ZW0gewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogMC42cyBlYXNlLWluLW91dCBsZWZ0OwogICAgLW8tdHJhbnNpdGlvbjogMC42cyBlYXNlLWluLW91dCBsZWZ0OwogICAgdHJhbnNpdGlvbjogMC42cyBlYXNlLWluLW91dCBsZWZ0Owp9CgouY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+aW1nLAouY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+YT5pbWcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJSBcOTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9CgouY2Fyb3VzZWwtaW5uZXI+LmFjdGl2ZSwKLmNhcm91c2VsLWlubmVyPi5uZXh0LAouY2Fyb3VzZWwtaW5uZXI+LnByZXYgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5jYXJvdXNlbC1pbm5lcj4uYWN0aXZlIHsKICAgIGxlZnQ6IDA7Cn0KCi5jYXJvdXNlbC1pbm5lcj4ubmV4dCwKLmNhcm91c2VsLWlubmVyPi5wcmV2IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIHdpZHRoOiAxMDAlOwp9CgouY2Fyb3VzZWwtaW5uZXI+Lm5leHQgewogICAgbGVmdDogMTAwJTsKfQoKLmNhcm91c2VsLWlubmVyPi5wcmV2IHsKICAgIGxlZnQ6IC0xMDAlOwp9CgouY2Fyb3VzZWwtaW5uZXI+Lm5leHQubGVmdCwKLmNhcm91c2VsLWlubmVyPi5wcmV2LnJpZ2h0IHsKICAgIGxlZnQ6IDA7Cn0KCi5jYXJvdXNlbC1pbm5lcj4uYWN0aXZlLmxlZnQgewogICAgbGVmdDogLTEwMCU7Cn0KCi5jYXJvdXNlbC1pbm5lcj4uYWN0aXZlLnJpZ2h0IHsKICAgIGxlZnQ6IDEwMCU7Cn0KCi5jYXJvdXNlbC1jb250cm9sIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBib3R0b206IDA7CiAgICB3aWR0aDogMTUlOwogICAgb3BhY2l0eTogMC41OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIGNvbG9yOiAjZmZmOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmNhcm91c2VsLWNvbnRyb2wucmlnaHQgewogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAwOwp9CgouY2Fyb3VzZWwtY29udHJvbDpob3ZlciwKLmNhcm91c2VsLWNvbnRyb2w6Zm9jdXMgewogICAgb3V0bGluZTogMDsKICAgIGNvbG9yOiAjZmZmOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgb3BhY2l0eTogMC45OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTkwKTsKfQoKLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiwKLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwKLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCi5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIHotaW5kZXg6IDU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsCi5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1sZWZ0IHsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMTBweDsKfQoKLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwKLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0IHsKICAgIHJpZ2h0OiA1MCU7CiAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4Owp9CgouY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2LAouY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0IHsKICAgIHdpZHRoOiAyMHB4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgbWFyZ2luLXRvcDogLTEwcHg7CiAgICBmb250LWZhbWlseTogc2VyaWY7Cn0KCi5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcMjAzOSc7Cn0KCi5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcMjAzYSc7Cn0KCi5jYXJvdXNlbC1jb250cm9sPiogewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLmNhcm91c2VsLWNvbnRyb2w6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjMjQzMjRhOwogICAgY29sb3I6ICMyNDMyNGE7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDBweDsKICAgIGxlZnQ6IDUwJTsKICAgIHotaW5kZXg6IDE1OwogICAgd2lkdGg6IDYwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMzAlOwogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwcHg7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBtYXJnaW46IDNweDsKICAgIHRleHQtaW5kZW50OiAtOTk5cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjI2MjY7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewogICAgbWFyZ2luOiAycHg7CiAgICB3aWR0aDogMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5jYXJvdXNlbC1jYXB0aW9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDE1JTsKICAgIHJpZ2h0OiAxNSU7CiAgICBib3R0b206IDIwcHg7CiAgICB6LWluZGV4OiAxMDsKICAgIHBhZGRpbmctdG9wOiAyMHB4OwogICAgcGFkZGluZy1ib3R0b206IDIwcHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjYpOwp9CgouY2Fyb3VzZWwtY2FwdGlvbiAuYnRuIHsKICAgIHRleHQtc2hhZG93OiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogICAgLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCiAgICAuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsCiAgICAuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2LAogICAgLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCB7CiAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgaGVpZ2h0OiAzMHB4OwogICAgICAgIG1hcmdpbi10b3A6IC0xNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIH0KICAgIC5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1sZWZ0LAogICAgLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogICAgfQogICAgLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0LAogICAgLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIH0KICAgIC5jYXJvdXNlbC1jYXB0aW9uIHsKICAgICAgICBsZWZ0OiAyMCU7CiAgICAgICAgcmlnaHQ6IDIwJTsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsKICAgIH0KfQoKLmNsZWFyZml4OmJlZm9yZSwKLmNsZWFyZml4OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGRpc3BsYXk6IHRhYmxlOwp9CgouY2xlYXJmaXg6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7Cn0KCi5jZW50ZXItYmxvY2sgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnB1bGwtcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KCi5wdWxsLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKfQoKLmhpZGUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Cgouc2hvdyB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgouaW52aXNpYmxlIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLnRleHQtaGlkZSB7CiAgICBmb250OiAwLzA7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICB0ZXh0LXNoYWRvdzogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAwOwp9CgouaGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgouYWZmaXggewogICAgcG9zaXRpb246IGZpeGVkOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKfQoKQC1tcy12aWV3cG9ydCB7CiAgICB3aWR0aDogZGV2aWNlLXdpZHRoOwp9CgoudmlzaWJsZS14cywKLnZpc2libGUtc20sCi52aXNpYmxlLW1kLAoudmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi52aXNpYmxlLXhzLWJsb2NrLAoudmlzaWJsZS14cy1pbmxpbmUsCi52aXNpYmxlLXhzLWlubGluZS1ibG9jaywKLnZpc2libGUtc20tYmxvY2ssCi52aXNpYmxlLXNtLWlubGluZSwKLnZpc2libGUtc20taW5saW5lLWJsb2NrLAoudmlzaWJsZS1tZC1ibG9jaywKLnZpc2libGUtbWQtaW5saW5lLAoudmlzaWJsZS1tZC1pbmxpbmUtYmxvY2ssCi52aXNpYmxlLWxnLWJsb2NrLAoudmlzaWJsZS1sZy1pbmxpbmUsCi52aXNpYmxlLWxnLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgLnZpc2libGUteHMgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB9CiAgICB0YWJsZS52aXNpYmxlLXhzIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZTsKICAgIH0KICAgIHRyLnZpc2libGUteHMgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogICAgfQogICAgdGgudmlzaWJsZS14cywKICAgIHRkLnZpc2libGUteHMgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAudmlzaWJsZS14cy1ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAudmlzaWJsZS14cy1pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIC52aXNpYmxlLXhzLWlubGluZS1ibG9jayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgICAudmlzaWJsZS1zbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIH0KICAgIHRhYmxlLnZpc2libGUtc20gewogICAgICAgIGRpc3BsYXk6IHRhYmxlOwogICAgfQogICAgdHIudmlzaWJsZS1zbSB7CiAgICAgICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgICB9CiAgICB0aC52aXNpYmxlLXNtLAogICAgdGQudmlzaWJsZS1zbSB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogICAgLnZpc2libGUtc20tYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgICAudmlzaWJsZS1zbS1pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogICAgLnZpc2libGUtc20taW5saW5lLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgICAudmlzaWJsZS1tZCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIH0KICAgIHRhYmxlLnZpc2libGUtbWQgewogICAgICAgIGRpc3BsYXk6IHRhYmxlOwogICAgfQogICAgdHIudmlzaWJsZS1tZCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgICB9CiAgICB0aC52aXNpYmxlLW1kLAogICAgdGQudmlzaWJsZS1tZCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAgIC52aXNpYmxlLW1kLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAgIC52aXNpYmxlLW1kLWlubGluZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkgewogICAgLnZpc2libGUtbWQtaW5saW5lLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnZpc2libGUtbGcgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB9CiAgICB0YWJsZS52aXNpYmxlLWxnIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZTsKICAgIH0KICAgIHRyLnZpc2libGUtbGcgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogICAgfQogICAgdGgudmlzaWJsZS1sZywKICAgIHRkLnZpc2libGUtbGcgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnZpc2libGUtbGctYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC52aXNpYmxlLWxnLWlubGluZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC52aXNpYmxlLWxnLWlubGluZS1ibG9jayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgLmhpZGRlbi14cyB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogICAgLmhpZGRlbi1zbSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAgIC5oaWRkZW4tbWQgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmhpZGRlbi1sZyB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQp9CgoudmlzaWJsZS1wcmludCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSBwcmludCB7CiAgICAudmlzaWJsZS1wcmludCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIH0KICAgIHRhYmxlLnZpc2libGUtcHJpbnQgewogICAgICAgIGRpc3BsYXk6IHRhYmxlOwogICAgfQogICAgdHIudmlzaWJsZS1wcmludCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgICB9CiAgICB0aC52aXNpYmxlLXByaW50LAogICAgdGQudmlzaWJsZS1wcmludCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogICAgfQp9CgoudmlzaWJsZS1wcmludC1ibG9jayB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSBwcmludCB7CiAgICAudmlzaWJsZS1wcmludC1ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIH0KfQoKLnZpc2libGUtcHJpbnQtaW5saW5lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKQG1lZGlhIHByaW50IHsKICAgIC52aXNpYmxlLXByaW50LWlubGluZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgICB9Cn0KCi52aXNpYmxlLXByaW50LWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSBwcmludCB7CiAgICAudmlzaWJsZS1wcmludC1pbmxpbmUtYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgcHJpbnQgewogICAgLmhpZGRlbi1wcmludCB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQp9"}},"time_used":572,"timings":{"blocked":473,"dns":0,"connect":0,"send":0,"wait":97,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/chart.min.js?ver=1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.325Z","timestamp":1785145482325,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/chart.min.js?ver=1.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\r\nSec-Fetch-Dest: script\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 321467\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":321467,"size_decoded":321685,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (557)","md5":"2ff7cf679d6b39625b16d31ec82a6aee","sha1":"1191ca9954288ec9542b976c9e38156b402948c0","sha256":"2365319d8ead70aceb7842beb998efaf64f6d1f04b30dd57c29f1702be22bd4c","sha512":"5b790075869bd5831761fb26841d305ad84ee70e85aeab21acb6209f82b99e69376b9f62135cb459579a97d48832d3fde11b469619ac6d1718e5b0235e45931d","ssdeep":"1536:6OtW4Ca/zqnk1b2PqfftcXCKLZrqLi2tUhqLcuVu51VoK9+BzJKLViqTY5HEqW/P:83nD2Davp3TwhHFpUkg/ytBiOfE","tlshash":"72643149bae235349213f138592f89087236b44b2f4afd057e5c52a05f5c82d97fafe8","first_seen":"2026-07-27T08:06:56.569285Z","last_seen":"2026-07-27T09:45:50.866326Z","times_seen":3,"resource_available":true,"data":"LyohCiAqIENoYXJ0LmpzCiAqIGh0dHA6Ly9jaGFydGpzLm9yZy8KICogVmVyc2lvbjogMi42LjAKICoKICogQ29weXJpZ2h0IDIwMTcgTmljayBEb3duaWUKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFydGpzL0NoYXJ0LmpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQKICovCiEgZnVuY3Rpb24odCkgewogICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUpIG1vZHVsZS5leHBvcnRzID0gdCgpOwogICAgZWxzZSBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQpIGRlZmluZShbXSwgdCk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgZTsKICAgICAgICBlID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyA/IHdpbmRvdyA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBnbG9iYWwgPyBnbG9iYWwgOiAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygc2VsZiA/IHNlbGYgOiB0aGlzLCBlLkNoYXJ0ID0gdCgpCiAgICB9Cn0oZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gZnVuY3Rpb24gdChlLCBuLCBpKSB7CiAgICAgICAgZnVuY3Rpb24gYShyLCBsKSB7CiAgICAgICAgICAgIGlmICghbltyXSkgewogICAgICAgICAgICAgICAgaWYgKCFlW3JdKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAiZnVuY3Rpb24iID09IHR5cGVvZiByZXF1aXJlICYmIHJlcXVpcmU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsICYmIHMpIHJldHVybiBzKHIsICEwKTsKICAgICAgICAgICAgICAgICAgICBpZiAobykgcmV0dXJuIG8ociwgITApOwogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIgKyByICsgIiciKTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyB1LmNvZGUgPSAiTU9EVUxFX05PVF9GT1VORCIsIHUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBkID0gbltyXSA9IHsKICAgICAgICAgICAgICAgICAgICBleHBvcnRzOiB7fQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGVbcl1bMF0uY2FsbChkLmV4cG9ydHMsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGVbcl1bMV1bdF07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEobiA/IG4gOiB0KQogICAgICAgICAgICAgICAgfSwgZCwgZC5leHBvcnRzLCB0LCBlLCBuLCBpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuW3JdLmV4cG9ydHMKICAgICAgICB9CiAgICAgICAgZm9yICh2YXIgbyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHJlcXVpcmUgJiYgcmVxdWlyZSwgciA9IDA7IHIgPCBpLmxlbmd0aDsgcisrKSBhKGlbcl0pOwogICAgICAgIHJldHVybiBhCiAgICB9KHsKICAgICAgICAxOiBbZnVuY3Rpb24odCwgZSwgbikge30sIHt9XSwKICAgICAgICAyOiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICBmdW5jdGlvbiBpKHQpIHsKICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAvXiMoW2EtZkEtRjAtOV17M30pJC8sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAvXiMoW2EtZkEtRjAtOV17Nn0pJC8sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAvXnJnYmE/XChccyooWystXT9cZCspXHMqLFxzKihbKy1dP1xkKylccyosXHMqKFsrLV0/XGQrKVxzKig/OixccyooWystXT9bXGRcLl0rKVxzKik/XCkkLywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IC9ecmdiYT9cKFxzKihbKy1dP1tcZFwuXSspXCVccyosXHMqKFsrLV0/W1xkXC5dKylcJVxzKixccyooWystXT9bXGRcLl0rKVwlXHMqKD86LFxzKihbKy1dP1tcZFwuXSspXHMqKT9cKSQvLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gLyhcdyspLywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm1hdGNoKGUpOwogICAgICAgICAgICAgICAgICAgIGlmIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IHIubGVuZ3RoOyB1KyspIHJbdV0gPSBwYXJzZUludChzW3VdICsgc1t1XSwgMTYpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzID0gdC5tYXRjaChuKSkgewogICAgICAgICAgICAgICAgICAgICAgICBzID0gc1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdSA9IDA7IHUgPCByLmxlbmd0aDsgdSsrKSByW3VdID0gcGFyc2VJbnQocy5zbGljZSgyICogdSwgMiAqIHUgKyAyKSwgMTYpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzID0gdC5tYXRjaChpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IHIubGVuZ3RoOyB1KyspIHJbdV0gPSBwYXJzZUludChzW3UgKyAxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBwYXJzZUZsb2F0KHNbNF0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzID0gdC5tYXRjaChhKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IHIubGVuZ3RoOyB1KyspIHJbdV0gPSBNYXRoLnJvdW5kKDIuNTUgKiBwYXJzZUZsb2F0KHNbdSArIDFdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBwYXJzZUZsb2F0KHNbNF0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzID0gdC5tYXRjaChvKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInRyYW5zcGFyZW50IiA9PSBzWzFdKSByZXR1cm4gWzAsIDAsIDAsIDBdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHlbc1sxXV0sICFyKSByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdSA9IDA7IHUgPCByLmxlbmd0aDsgdSsrKSByW3VdID0gYihyW3VdLCAwLCAyNTUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0gbCB8fCAwID09IGwgPyBiKGwsIDAsIDEpIDogMSwgclszXSA9IGwsIHIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gYSh0KSB7CiAgICAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gL15oc2xhP1woXHMqKFsrLV0/XGQrKSg/OmRlZyk/XHMqLFxzKihbKy1dP1tcZFwuXSspJVxzKixccyooWystXT9bXGRcLl0rKSVccyooPzosXHMqKFsrLV0/W1xkXC5dKylccyopP1wpLywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQubWF0Y2goZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBwYXJzZUZsb2F0KG5bNF0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGIocGFyc2VJbnQoblsxXSksIDAsIDM2MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYihwYXJzZUZsb2F0KG5bMl0pLCAwLCAxMDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGIocGFyc2VGbG9hdChuWzNdKSwgMCwgMTAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBiKGlzTmFOKGkpID8gMSA6IGksIDAsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2EsIG8sIHIsIGxdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAvXmh3YlwoXHMqKFsrLV0/XGQrKSg/OmRlZyk/XHMqLFxzKihbKy1dP1tcZFwuXSspJVxzKixccyooWystXT9bXGRcLl0rKSVccyooPzosXHMqKFsrLV0/W1xkXC5dKylccyopP1wpLywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQubWF0Y2goZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBwYXJzZUZsb2F0KG5bNF0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGIocGFyc2VJbnQoblsxXSksIDAsIDM2MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYihwYXJzZUZsb2F0KG5bMl0pLCAwLCAxMDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGIocGFyc2VGbG9hdChuWzNdKSwgMCwgMTAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBiKGlzTmFOKGkpID8gMSA6IGksIDAsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2EsIG8sIHIsIGxdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiByKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gaSh0KTsKICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuc2xpY2UoMCwgMykKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gbCh0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLnNsaWNlKDAsIDMpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHModCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBpKHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUgPyBlWzNdIDogKGUgPSBhKHQpKSA/IGVbM10gOiAoZSA9IG8odCkpID8gZVszXSA6IHZvaWQgMAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB1KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiIyIgKyB4KHRbMF0pICsgeCh0WzFdKSArIHgodFsyXSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZCh0LCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA8IDEgfHwgdFszXSAmJiB0WzNdIDwgMSA/IGModCwgZSkgOiAicmdiKCIgKyB0WzBdICsgIiwgIiArIHRbMV0gKyAiLCAiICsgdFsyXSArICIpIgogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBjKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSB2b2lkIDAgIT09IHRbM10gPyB0WzNdIDogMSksICJyZ2JhKCIgKyB0WzBdICsgIiwgIiArIHRbMV0gKyAiLCAiICsgdFsyXSArICIsICIgKyBlICsgIikiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGgodCwgZSkgewogICAgICAgICAgICAgICAgaWYgKGUgPCAxIHx8IHRbM10gJiYgdFszXSA8IDEpIHJldHVybiBmKHQsIGUpOwogICAgICAgICAgICAgICAgdmFyIG4gPSBNYXRoLnJvdW5kKHRbMF0gLyAyNTUgKiAxMDApLAogICAgICAgICAgICAgICAgICAgIGkgPSBNYXRoLnJvdW5kKHRbMV0gLyAyNTUgKiAxMDApLAogICAgICAgICAgICAgICAgICAgIGEgPSBNYXRoLnJvdW5kKHRbMl0gLyAyNTUgKiAxMDApOwogICAgICAgICAgICAgICAgcmV0dXJuICJyZ2IoIiArIG4gKyAiJSwgIiArIGkgKyAiJSwgIiArIGEgKyAiJSkiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGYodCwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBNYXRoLnJvdW5kKHRbMF0gLyAyNTUgKiAxMDApLAogICAgICAgICAgICAgICAgICAgIGkgPSBNYXRoLnJvdW5kKHRbMV0gLyAyNTUgKiAxMDApLAogICAgICAgICAgICAgICAgICAgIGEgPSBNYXRoLnJvdW5kKHRbMl0gLyAyNTUgKiAxMDApOwogICAgICAgICAgICAgICAgcmV0dXJuICJyZ2JhKCIgKyBuICsgIiUsICIgKyBpICsgIiUsICIgKyBhICsgIiUsICIgKyAoZSB8fCB0WzNdIHx8IDEpICsgIikiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGcodCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUgPCAxIHx8IHRbM10gJiYgdFszXSA8IDEgPyBwKHQsIGUpIDogImhzbCgiICsgdFswXSArICIsICIgKyB0WzFdICsgIiUsICIgKyB0WzJdICsgIiUpIgogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBwKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSB2b2lkIDAgIT09IHRbM10gPyB0WzNdIDogMSksICJoc2xhKCIgKyB0WzBdICsgIiwgIiArIHRbMV0gKyAiJSwgIiArIHRbMl0gKyAiJSwgIiArIGUgKyAiKSIKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gbSh0LCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlICYmIChlID0gdm9pZCAwICE9PSB0WzNdID8gdFszXSA6IDEpLCAiaHdiKCIgKyB0WzBdICsgIiwgIiArIHRbMV0gKyAiJSwgIiArIHRbMl0gKyAiJSIgKyAodm9pZCAwICE9PSBlICYmIDEgIT09IGUgPyAiLCAiICsgZSA6ICIiKSArICIpIgogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB2KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBrW3Quc2xpY2UoMCwgMyldCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGIodCwgZSwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGUsIHQpLCBuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB4KHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKICAgICAgICAgICAgICAgIHJldHVybiBlLmxlbmd0aCA8IDIgPyAiMCIgKyBlIDogZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciB5ID0gdCg2KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gewogICAgICAgICAgICAgICAgZ2V0UmdiYTogaSwKICAgICAgICAgICAgICAgIGdldEhzbGE6IGEsCiAgICAgICAgICAgICAgICBnZXRSZ2I6IHIsCiAgICAgICAgICAgICAgICBnZXRIc2w6IGwsCiAgICAgICAgICAgICAgICBnZXRId2I6IG8sCiAgICAgICAgICAgICAgICBnZXRBbHBoYTogcywKICAgICAgICAgICAgICAgIGhleFN0cmluZzogdSwKICAgICAgICAgICAgICAgIHJnYlN0cmluZzogZCwKICAgICAgICAgICAgICAgIHJnYmFTdHJpbmc6IGMsCiAgICAgICAgICAgICAgICBwZXJjZW50U3RyaW5nOiBoLAogICAgICAgICAgICAgICAgcGVyY2VudGFTdHJpbmc6IGYsCiAgICAgICAgICAgICAgICBoc2xTdHJpbmc6IGcsCiAgICAgICAgICAgICAgICBoc2xhU3RyaW5nOiBwLAogICAgICAgICAgICAgICAgaHdiU3RyaW5nOiBtLAogICAgICAgICAgICAgICAga2V5d29yZDogdgogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgayA9IHt9OwogICAgICAgICAgICBmb3IgKHZhciB3IGluIHkpIGtbeVt3XV0gPSB3CiAgICAgICAgfSwgewogICAgICAgICAgICA2OiA2CiAgICAgICAgfV0sCiAgICAgICAgMzogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdmFyIGkgPSB0KDUpLAogICAgICAgICAgICAgICAgYSA9IHQoMiksCiAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0IGluc3RhbmNlb2YgbykgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIG8pKSByZXR1cm4gbmV3IG8odCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZCA9ICExLCB0aGlzLnZhbHVlcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmdiOiBbMCwgMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGhzbDogWzAsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBoc3Y6IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgaHdiOiBbMCwgMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNteWs6IFswLCAwLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGE6IDEKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiB0ID8gKGUgPSBhLmdldFJnYmEodCksIGUgPyB0aGlzLnNldFZhbHVlcygicmdiIiwgZSkgOiAoZSA9IGEuZ2V0SHNsYSh0KSkgPyB0aGlzLnNldFZhbHVlcygiaHNsIiwgZSkgOiAoZSA9IGEuZ2V0SHdiKHQpKSAmJiB0aGlzLnNldFZhbHVlcygiaHdiIiwgZSkpIDogIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgKGUgPSB0LCB2b2lkIDAgIT09IGUuciB8fCB2b2lkIDAgIT09IGUucmVkID8gdGhpcy5zZXRWYWx1ZXMoInJnYiIsIGUpIDogdm9pZCAwICE9PSBlLmwgfHwgdm9pZCAwICE9PSBlLmxpZ2h0bmVzcyA/IHRoaXMuc2V0VmFsdWVzKCJoc2wiLCBlKSA6IHZvaWQgMCAhPT0gZS52IHx8IHZvaWQgMCAhPT0gZS52YWx1ZSA/IHRoaXMuc2V0VmFsdWVzKCJoc3YiLCBlKSA6IHZvaWQgMCAhPT0gZS53IHx8IHZvaWQgMCAhPT0gZS53aGl0ZW5lc3MgPyB0aGlzLnNldFZhbHVlcygiaHdiIiwgZSkgOiB2b2lkIDAgPT09IGUuYyAmJiB2b2lkIDAgPT09IGUuY3lhbiB8fCB0aGlzLnNldFZhbHVlcygiY215ayIsIGUpKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgby5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJnYjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3BhY2UoInJnYiIsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoc2w6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFNwYWNlKCJoc2wiLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaHN2OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTcGFjZSgiaHN2IiwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGh3YjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3BhY2UoImh3YiIsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbXlrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTcGFjZSgiY215ayIsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZ2JBcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnJnYgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhzbEFycmF5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuaHNsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaHN2QXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5oc3YKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBod2JBcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnZhbHVlczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAhPT0gdC5hbHBoYSA/IHQuaHdiLmNvbmNhdChbdC5hbHBoYV0pIDogdC5od2IKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbXlrQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5jbXlrCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmdiYUFycmF5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudmFsdWVzOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnJnYi5jb25jYXQoW3QuYWxwaGFdKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhzbGFBcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnZhbHVlczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5oc2wuY29uY2F0KFt0LmFscGhhXSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhbHBoYTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgPyB0aGlzLnZhbHVlcy5hbHBoYSA6ICh0aGlzLnNldFZhbHVlcygiYWxwaGEiLCB0KSwgdGhpcykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZWQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJyZ2IiLCAwLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdyZWVuOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgicmdiIiwgMSwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBibHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgicmdiIiwgMiwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBodWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiAodCAlPSAzNjAsIHQgPSB0IDwgMCA/IDM2MCArIHQgOiB0KSwgdGhpcy5zZXRDaGFubmVsKCJoc2wiLCAwLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNhdHVyYXRpb246IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJoc2wiLCAxLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGxpZ2h0bmVzczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENoYW5uZWwoImhzbCIsIDIsIHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2F0dXJhdGlvbnY6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJoc3YiLCAxLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHdoaXRlbmVzczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENoYW5uZWwoImh3YiIsIDEsIHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmxhY2tuZXNzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiaHdiIiwgMiwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENoYW5uZWwoImhzdiIsIDIsIHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY3lhbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENoYW5uZWwoImNteWsiLCAwLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG1hZ2VudGE6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJjbXlrIiwgMSwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB5ZWxsb3c6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJjbXlrIiwgMiwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBibGFjazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENoYW5uZWwoImNteWsiLCAzLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhleFN0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuaGV4U3RyaW5nKHRoaXMudmFsdWVzLnJnYikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZ2JTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnJnYlN0cmluZyh0aGlzLnZhbHVlcy5yZ2IsIHRoaXMudmFsdWVzLmFscGhhKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJnYmFTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnJnYmFTdHJpbmcodGhpcy52YWx1ZXMucmdiLCB0aGlzLnZhbHVlcy5hbHBoYSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwZXJjZW50U3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wZXJjZW50U3RyaW5nKHRoaXMudmFsdWVzLnJnYiwgdGhpcy52YWx1ZXMuYWxwaGEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaHNsU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5oc2xTdHJpbmcodGhpcy52YWx1ZXMuaHNsLCB0aGlzLnZhbHVlcy5hbHBoYSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoc2xhU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5oc2xhU3RyaW5nKHRoaXMudmFsdWVzLmhzbCwgdGhpcy52YWx1ZXMuYWxwaGEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaHdiU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5od2JTdHJpbmcodGhpcy52YWx1ZXMuaHdiLCB0aGlzLnZhbHVlcy5hbHBoYSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBrZXl3b3JkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5rZXl3b3JkKHRoaXMudmFsdWVzLnJnYiwgdGhpcy52YWx1ZXMuYWxwaGEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmdiTnVtYmVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudmFsdWVzLnJnYjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFswXSA8PCAxNiB8IHRbMV0gPDwgOCB8IHRbMl0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBsdW1pbm9zaXR5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gdGhpcy52YWx1ZXMucmdiLCBlID0gW10sIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRbbl0gLyAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgIGVbbl0gPSBpIDw9IC4wMzkyOCA/IGkgLyAxMi45MiA6IE1hdGgucG93KChpICsgLjA1NSkgLyAxLjA1NSwgMi40KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gLjIxMjYgKiBlWzBdICsgLjcxNTIgKiBlWzFdICsgLjA3MjIgKiBlWzJdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY29udHJhc3Q6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMubHVtaW5vc2l0eSgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5sdW1pbm9zaXR5KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPiBuID8gKGUgKyAuMDUpIC8gKG4gKyAuMDUpIDogKG4gKyAuMDUpIC8gKGUgKyAuMDUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbGV2ZWw6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuY29udHJhc3QodCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPj0gNy4xID8gIkFBQSIgOiBlID49IDQuNSA/ICJBQSIgOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRhcms6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy52YWx1ZXMucmdiLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gKDI5OSAqIHRbMF0gKyA1ODcgKiB0WzFdICsgMTE0ICogdFsyXSkgLyAxZTM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPCAxMjgKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBsaWdodDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmRhcmsoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG5lZ2F0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IFtdLCBlID0gMDsgZSA8IDM7IGUrKykgdFtlXSA9IDI1NSAtIHRoaXMudmFsdWVzLnJnYltlXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYWx1ZXMoInJnYiIsIHQpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbGlnaHRlbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy52YWx1ZXMuaHNsOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzJdICs9IGVbMl0gKiB0LCB0aGlzLnNldFZhbHVlcygiaHNsIiwgZSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkYXJrZW46IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudmFsdWVzLmhzbDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsyXSAtPSBlWzJdICogdCwgdGhpcy5zZXRWYWx1ZXMoImhzbCIsIGUpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2F0dXJhdGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudmFsdWVzLmhzbDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsxXSArPSBlWzFdICogdCwgdGhpcy5zZXRWYWx1ZXMoImhzbCIsIGUpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVzYXR1cmF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy52YWx1ZXMuaHNsOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzFdIC09IGVbMV0gKiB0LCB0aGlzLnNldFZhbHVlcygiaHNsIiwgZSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB3aGl0ZW46IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudmFsdWVzLmh3YjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsxXSArPSBlWzFdICogdCwgdGhpcy5zZXRWYWx1ZXMoImh3YiIsIGUpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmxhY2tlbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy52YWx1ZXMuaHdiOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzJdICs9IGVbMl0gKiB0LCB0aGlzLnNldFZhbHVlcygiaHdiIiwgZSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBncmV5c2NhbGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy52YWx1ZXMucmdiLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gLjMgKiB0WzBdICsgLjU5ICogdFsxXSArIC4xMSAqIHRbMl07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWVzKCJyZ2IiLCBbZSwgZSwgZV0pLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2xlYXJlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy52YWx1ZXMuYWxwaGE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWVzKCJhbHBoYSIsIGUgLSBlICogdCksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvcGFxdWVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnZhbHVlcy5hbHBoYTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYWx1ZXMoImFscGhhIiwgZSArIGUgKiB0KSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJvdGF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy52YWx1ZXMuaHNsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gKGVbMF0gKyB0KSAlIDM2MDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVswXSA9IG4gPCAwID8gMzYwICsgbiA6IG4sIHRoaXMuc2V0VmFsdWVzKCJoc2wiLCBlKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG1peDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB2b2lkIDAgPT09IGUgPyAuNSA6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAyICogYSAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLmFscGhhKCkgLSBpLmFscGhhKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAoKG8gKiByID09PSAtMSA/IG8gOiAobyArIHIpIC8gKDEgKyBvICogcikpICsgMSkgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gMSAtIGw7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmdiKGwgKiBuLnJlZCgpICsgcyAqIGkucmVkKCksIGwgKiBuLmdyZWVuKCkgKyBzICogaS5ncmVlbigpLCBsICogbi5ibHVlKCkgKyBzICogaS5ibHVlKCkpLmFscGhhKG4uYWxwaGEoKSAqIGEgKyBpLmFscGhhKCkgKiAoMSAtIGEpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmdiKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIGUsIG4gPSBuZXcgbywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbi52YWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiBpKSBpLmhhc093blByb3BlcnR5KHIpICYmICh0ID0gaVtyXSwgZSA9IHt9LnRvU3RyaW5nLmNhbGwodCksICJbb2JqZWN0IEFycmF5XSIgPT09IGUgPyBhW3JdID0gdC5zbGljZSgwKSA6ICJbb2JqZWN0IE51bWJlcl0iID09PSBlID8gYVtyXSA9IHQgOiBjb25zb2xlLmVycm9yKCJ1bmV4cGVjdGVkIGNvbG9yIHZhbHVlOiIsIHQpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBvLnByb3RvdHlwZS5zcGFjZXMgPSB7CiAgICAgICAgICAgICAgICByZ2I6IFsicmVkIiwgImdyZWVuIiwgImJsdWUiXSwKICAgICAgICAgICAgICAgIGhzbDogWyJodWUiLCAic2F0dXJhdGlvbiIsICJsaWdodG5lc3MiXSwKICAgICAgICAgICAgICAgIGhzdjogWyJodWUiLCAic2F0dXJhdGlvbiIsICJ2YWx1ZSJdLAogICAgICAgICAgICAgICAgaHdiOiBbImh1ZSIsICJ3aGl0ZW5lc3MiLCAiYmxhY2tuZXNzIl0sCiAgICAgICAgICAgICAgICBjbXlrOiBbImN5YW4iLCAibWFnZW50YSIsICJ5ZWxsb3ciLCAiYmxhY2siXQogICAgICAgICAgICB9LCBvLnByb3RvdHlwZS5tYXhlcyA9IHsKICAgICAgICAgICAgICAgIHJnYjogWzI1NSwgMjU1LCAyNTVdLAogICAgICAgICAgICAgICAgaHNsOiBbMzYwLCAxMDAsIDEwMF0sCiAgICAgICAgICAgICAgICBoc3Y6IFszNjAsIDEwMCwgMTAwXSwKICAgICAgICAgICAgICAgIGh3YjogWzM2MCwgMTAwLCAxMDBdLAogICAgICAgICAgICAgICAgY215azogWzEwMCwgMTAwLCAxMDAsIDEwMF0KICAgICAgICAgICAgfSwgby5wcm90b3R5cGUuZ2V0VmFsdWVzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHRoaXMudmFsdWVzLCBuID0ge30sIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykgblt0LmNoYXJBdChpKV0gPSBlW3RdW2ldOwogICAgICAgICAgICAgICAgcmV0dXJuIDEgIT09IGUuYWxwaGEgJiYgKG4uYSA9IGUuYWxwaGEpLCBuCiAgICAgICAgICAgIH0sIG8ucHJvdG90eXBlLnNldFZhbHVlcyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuLCBhID0gdGhpcy52YWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuc3BhY2VzLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLm1heGVzLAogICAgICAgICAgICAgICAgICAgIGwgPSAxOwogICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsaWQgPSAhMCwgImFscGhhIiA9PT0gdCkgbCA9IGU7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChlLmxlbmd0aCkgYVt0XSA9IGUuc2xpY2UoMCwgdC5sZW5ndGgpLCBsID0gZVt0Lmxlbmd0aF07CiAgICAgICAgICAgICAgICBlbHNlIGlmICh2b2lkIDAgIT09IGVbdC5jaGFyQXQoMCldKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIGFbdF1bbl0gPSBlW3QuY2hhckF0KG4pXTsKICAgICAgICAgICAgICAgICAgICBsID0gZS5hCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZvaWQgMCAhPT0gZVtvW3RdWzBdXSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gb1t0XTsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgYVt0XVtuXSA9IGVbc1tuXV07CiAgICAgICAgICAgICAgICAgICAgbCA9IGUuYWxwaGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChhLmFscGhhID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgdm9pZCAwID09PSBsID8gYS5hbHBoYSA6IGwpKSwgImFscGhhIiA9PT0gdCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgdmFyIHU7CiAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgdSA9IE1hdGgubWF4KDAsIE1hdGgubWluKHJbdF1bbl0sIGFbdF1bbl0pKSwgYVt0XVtuXSA9IE1hdGgucm91bmQodSk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBkIGluIG8pIGQgIT09IHQgJiYgKGFbZF0gPSBpW3RdW2RdKGFbdF0pKTsKICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICB9LCBvLnByb3RvdHlwZS5zZXRTcGFjZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gZVswXTsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IG4gPyB0aGlzLmdldFZhbHVlcyh0KSA6ICgibnVtYmVyIiA9PSB0eXBlb2YgbiAmJiAobiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKSwgdGhpcy5zZXRWYWx1ZXModCwgbiksIHRoaXMpCiAgICAgICAgICAgIH0sIG8ucHJvdG90eXBlLnNldENoYW5uZWwgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudmFsdWVzW3RdOwogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gbiA/IGlbZV0gOiBuID09PSBpW2VdID8gdGhpcyA6IChpW2VdID0gbiwgdGhpcy5zZXRWYWx1ZXModCwgaSksIHRoaXMpCiAgICAgICAgICAgIH0sICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgKHdpbmRvdy5Db2xvciA9IG8pLCBlLmV4cG9ydHMgPSBvCiAgICAgICAgfSwgewogICAgICAgICAgICAyOiAyLAogICAgICAgICAgICA1OiA1CiAgICAgICAgfV0sCiAgICAgICAgNDogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgZnVuY3Rpb24gaSh0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbiwgaSwgYSA9IHRbMF0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgbyA9IHRbMV0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgciA9IHRbMl0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgbCA9IE1hdGgubWluKGEsIG8sIHIpLAogICAgICAgICAgICAgICAgICAgIHMgPSBNYXRoLm1heChhLCBvLCByKSwKICAgICAgICAgICAgICAgICAgICB1ID0gcyAtIGw7CiAgICAgICAgICAgICAgICByZXR1cm4gcyA9PSBsID8gZSA9IDAgOiBhID09IHMgPyBlID0gKG8gLSByKSAvIHUgOiBvID09IHMgPyBlID0gMiArIChyIC0gYSkgLyB1IDogciA9PSBzICYmIChlID0gNCArIChhIC0gbykgLyB1KSwgZSA9IE1hdGgubWluKDYwICogZSwgMzYwKSwgZSA8IDAgJiYgKGUgKz0gMzYwKSwgaSA9IChsICsgcykgLyAyLCBuID0gcyA9PSBsID8gMCA6IGkgPD0gLjUgPyB1IC8gKHMgKyBsKSA6IHUgLyAoMiAtIHMgLSBsKSwgW2UsIDEwMCAqIG4sIDEwMCAqIGldCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGEodCkgewogICAgICAgICAgICAgICAgdmFyIGUsIG4sIGksIGEgPSB0WzBdLAogICAgICAgICAgICAgICAgICAgIG8gPSB0WzFdLAogICAgICAgICAgICAgICAgICAgIHIgPSB0WzJdLAogICAgICAgICAgICAgICAgICAgIGwgPSBNYXRoLm1pbihhLCBvLCByKSwKICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5tYXgoYSwgbywgciksCiAgICAgICAgICAgICAgICAgICAgdSA9IHMgLSBsOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gPSAwID09IHMgPyAwIDogdSAvIHMgKiAxZTMgLyAxMCwgcyA9PSBsID8gZSA9IDAgOiBhID09IHMgPyBlID0gKG8gLSByKSAvIHUgOiBvID09IHMgPyBlID0gMiArIChyIC0gYSkgLyB1IDogciA9PSBzICYmIChlID0gNCArIChhIC0gbykgLyB1KSwgZSA9IE1hdGgubWluKDYwICogZSwgMzYwKSwgZSA8IDAgJiYgKGUgKz0gMzYwKSwgaSA9IHMgLyAyNTUgKiAxZTMgLyAxMCwgW2UsIG4sIGldCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIG8odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0WzBdLAogICAgICAgICAgICAgICAgICAgIG4gPSB0WzFdLAogICAgICAgICAgICAgICAgICAgIGEgPSB0WzJdLAogICAgICAgICAgICAgICAgICAgIG8gPSBpKHQpWzBdLAogICAgICAgICAgICAgICAgICAgIHIgPSAxIC8gMjU1ICogTWF0aC5taW4oZSwgTWF0aC5taW4obiwgYSkpLAogICAgICAgICAgICAgICAgICAgIGEgPSAxIC0gMSAvIDI1NSAqIE1hdGgubWF4KGUsIE1hdGgubWF4KG4sIGEpKTsKICAgICAgICAgICAgICAgIHJldHVybiBbbywgMTAwICogciwgMTAwICogYV0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gbCh0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbiwgaSwgYSwgbyA9IHRbMF0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgciA9IHRbMV0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgbCA9IHRbMl0gLyAyNTU7CiAgICAgICAgICAgICAgICByZXR1cm4gYSA9IE1hdGgubWluKDEgLSBvLCAxIC0gciwgMSAtIGwpLCBlID0gKDEgLSBvIC0gYSkgLyAoMSAtIGEpIHx8IDAsIG4gPSAoMSAtIHIgLSBhKSAvICgxIC0gYSkgfHwgMCwgaSA9ICgxIC0gbCAtIGEpIC8gKDEgLSBhKSB8fCAwLCBbMTAwICogZSwgMTAwICogbiwgMTAwICogaSwgMTAwICogYV0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcyh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWltKU09OLnN0cmluZ2lmeSh0KV0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdSh0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRbMF0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgbiA9IHRbMV0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRbMl0gLyAyNTU7CiAgICAgICAgICAgICAgICBlID0gZSA+IC4wNDA0NSA/IE1hdGgucG93KChlICsgLjA1NSkgLyAxLjA1NSwgMi40KSA6IGUgLyAxMi45MiwgbiA9IG4gPiAuMDQwNDUgPyBNYXRoLnBvdygobiArIC4wNTUpIC8gMS4wNTUsIDIuNCkgOiBuIC8gMTIuOTIsIGkgPSBpID4gLjA0MDQ1ID8gTWF0aC5wb3coKGkgKyAuMDU1KSAvIDEuMDU1LCAyLjQpIDogaSAvIDEyLjkyOwogICAgICAgICAgICAgICAgdmFyIGEgPSAuNDEyNCAqIGUgKyAuMzU3NiAqIG4gKyAuMTgwNSAqIGksCiAgICAgICAgICAgICAgICAgICAgbyA9IC4yMTI2ICogZSArIC43MTUyICogbiArIC4wNzIyICogaSwKICAgICAgICAgICAgICAgICAgICByID0gLjAxOTMgKiBlICsgLjExOTIgKiBuICsgLjk1MDUgKiBpOwogICAgICAgICAgICAgICAgcmV0dXJuIFsxMDAgKiBhLCAxMDAgKiBvLCAxMDAgKiByXQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBkKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBuLCBpLCBhID0gdSh0KSwKICAgICAgICAgICAgICAgICAgICBvID0gYVswXSwKICAgICAgICAgICAgICAgICAgICByID0gYVsxXSwKICAgICAgICAgICAgICAgICAgICBsID0gYVsyXTsKICAgICAgICAgICAgICAgIHJldHVybiBvIC89IDk1LjA0NywgciAvPSAxMDAsIGwgLz0gMTA4Ljg4MywgbyA9IG8gPiAuMDA4ODU2ID8gTWF0aC5wb3cobywgMSAvIDMpIDogNy43ODcgKiBvICsgMTYgLyAxMTYsIHIgPSByID4gLjAwODg1NiA/IE1hdGgucG93KHIsIDEgLyAzKSA6IDcuNzg3ICogciArIDE2IC8gMTE2LCBsID0gbCA+IC4wMDg4NTYgPyBNYXRoLnBvdyhsLCAxIC8gMykgOiA3Ljc4NyAqIGwgKyAxNiAvIDExNiwgZSA9IDExNiAqIHIgLSAxNiwgbiA9IDUwMCAqIChvIC0gciksIGkgPSAyMDAgKiAociAtIGwpLCBbZSwgbiwgaV0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gYyh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gQihkKHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBoKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBuLCBpLCBhLCBvLCByID0gdFswXSAvIDM2MCwKICAgICAgICAgICAgICAgICAgICBsID0gdFsxXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICBzID0gdFsyXSAvIDEwMDsKICAgICAgICAgICAgICAgIGlmICgwID09IGwpIHJldHVybiBvID0gMjU1ICogcywgW28sIG8sIG9dOwogICAgICAgICAgICAgICAgbiA9IHMgPCAuNSA/IHMgKiAoMSArIGwpIDogcyArIGwgLSBzICogbCwgZSA9IDIgKiBzIC0gbiwgYSA9IFswLCAwLCAwXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIHUgPSAwOyB1IDwgMzsgdSsrKSBpID0gciArIDEgLyAzICogLSh1IC0gMSksIGkgPCAwICYmIGkrKywgaSA+IDEgJiYgaS0tLCBvID0gNiAqIGkgPCAxID8gZSArIDYgKiAobiAtIGUpICogaSA6IDIgKiBpIDwgMSA/IG4gOiAzICogaSA8IDIgPyBlICsgKG4gLSBlKSAqICgyIC8gMyAtIGkpICogNiA6IGUsIGFbdV0gPSAyNTUgKiBvOwogICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbiwgaSA9IHRbMF0sCiAgICAgICAgICAgICAgICAgICAgYSA9IHRbMV0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgbyA9IHRbMl0gLyAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gbyA/IFswLCAwLCAwXSA6IChvICo9IDIsIGEgKj0gbyA8PSAxID8gbyA6IDIgLSBvLCBuID0gKG8gKyBhKSAvIDIsIGUgPSAyICogYSAvIChvICsgYSksIFtpLCAxMDAgKiBlLCAxMDAgKiBuXSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhoKHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBtKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsKGgodCkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHYodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMoaCh0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24geCh0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRbMF0gLyA2MCwKICAgICAgICAgICAgICAgICAgICBuID0gdFsxXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICBpID0gdFsyXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5mbG9vcihlKSAlIDYsCiAgICAgICAgICAgICAgICAgICAgbyA9IGUgLSBNYXRoLmZsb29yKGUpLAogICAgICAgICAgICAgICAgICAgIHIgPSAyNTUgKiBpICogKDEgLSBuKSwKICAgICAgICAgICAgICAgICAgICBsID0gMjU1ICogaSAqICgxIC0gbiAqIG8pLAogICAgICAgICAgICAgICAgICAgIHMgPSAyNTUgKiBpICogKDEgLSBuICogKDEgLSBvKSksCiAgICAgICAgICAgICAgICAgICAgaSA9IDI1NSAqIGk7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGEpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbaSwgcywgcl07CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2wsIGksIHJdOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyLCBpLCBzXTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbciwgbCwgaV07CiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3MsIHIsIGldOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtpLCByLCBsXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB5KHQpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBuLCBpID0gdFswXSwKICAgICAgICAgICAgICAgICAgICBhID0gdFsxXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICBvID0gdFsyXSAvIDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiBuID0gKDIgLSBhKSAqIG8sIGUgPSBhICogbywgZSAvPSBuIDw9IDEgPyBuIDogMiAtIG4sIGUgPSBlIHx8IDAsIG4gLz0gMiwgW2ksIDEwMCAqIGUsIDEwMCAqIG5dCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGsodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8oeCh0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdyh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbCh4KHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBNKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzKHgodCkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFModCkgewogICAgICAgICAgICAgICAgdmFyIGUsIG4sIGksIGEsIG8gPSB0WzBdIC8gMzYwLAogICAgICAgICAgICAgICAgICAgIGwgPSB0WzFdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgIHMgPSB0WzJdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgIHUgPSBsICsgczsKICAgICAgICAgICAgICAgIHN3aXRjaCAodSA+IDEgJiYgKGwgLz0gdSwgcyAvPSB1KSwgZSA9IE1hdGguZmxvb3IoNiAqIG8pLCBuID0gMSAtIHMsIGkgPSA2ICogbyAtIGUsIDAgIT0gKDEgJiBlKSAmJiAoaSA9IDEgLSBpKSwgYSA9IGwgKyBpICogKG4gLSBsKSwgZSkgewogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICByID0gbiwKICAgICAgICAgICAgICAgICAgICBnID0gYSwKICAgICAgICAgICAgICAgICAgICBiID0gbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbCwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbCwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gWzI1NSAqIHIsIDI1NSAqIGcsIDI1NSAqIGJdCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEModCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkoUyh0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gRCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYShTKHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBJKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsKFModCkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEEodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMoUyh0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gUCh0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbiwgaSwgYSA9IHRbMF0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgbyA9IHRbMV0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgciA9IHRbMl0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgbCA9IHRbM10gLyAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA9IDEgLSBNYXRoLm1pbigxLCBhICogKDEgLSBsKSArIGwpLCBuID0gMSAtIE1hdGgubWluKDEsIG8gKiAoMSAtIGwpICsgbCksIGkgPSAxIC0gTWF0aC5taW4oMSwgciAqICgxIC0gbCkgKyBsKSwgWzI1NSAqIGUsIDI1NSAqIG4sIDI1NSAqIGldCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIF8odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkoUCh0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gVCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYShQKHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBGKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKFAodCkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFIodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMoUCh0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gTCh0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbiwgaSwgYSA9IHRbMF0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgbyA9IHRbMV0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgciA9IHRbMl0gLyAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA9IDMuMjQwNiAqIGEgKyBvICogLTEuNTM3MiArIHIgKiAtLjQ5ODYsIG4gPSBhICogLS45Njg5ICsgMS44NzU4ICogbyArIC4wNDE1ICogciwgaSA9IC4wNTU3ICogYSArIG8gKiAtLjIwNCArIDEuMDU3ICogciwgZSA9IGUgPiAuMDAzMTMwOCA/IDEuMDU1ICogTWF0aC5wb3coZSwgMSAvIDIuNCkgLSAuMDU1IDogZSAqPSAxMi45MiwgbiA9IG4gPiAuMDAzMTMwOCA/IDEuMDU1ICogTWF0aC5wb3cobiwgMSAvIDIuNCkgLSAuMDU1IDogbiAqPSAxMi45MiwgaSA9IGkgPiAuMDAzMTMwOCA/IDEuMDU1ICogTWF0aC5wb3coaSwgMSAvIDIuNCkgLSAuMDU1IDogaSAqPSAxMi45MiwgZSA9IE1hdGgubWluKE1hdGgubWF4KDAsIGUpLCAxKSwgbiA9IE1hdGgubWluKE1hdGgubWF4KDAsIG4pLCAxKSwgaSA9IE1hdGgubWluKE1hdGgubWF4KDAsIGkpLCAxKSwgWzI1NSAqIGUsIDI1NSAqIG4sIDI1NSAqIGldCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFYodCkgewogICAgICAgICAgICAgICAgdmFyIGUsIG4sIGksIGEgPSB0WzBdLAogICAgICAgICAgICAgICAgICAgIG8gPSB0WzFdLAogICAgICAgICAgICAgICAgICAgIHIgPSB0WzJdOwogICAgICAgICAgICAgICAgcmV0dXJuIGEgLz0gOTUuMDQ3LCBvIC89IDEwMCwgciAvPSAxMDguODgzLCBhID0gYSA+IC4wMDg4NTYgPyBNYXRoLnBvdyhhLCAxIC8gMykgOiA3Ljc4NyAqIGEgKyAxNiAvIDExNiwgbyA9IG8gPiAuMDA4ODU2ID8gTWF0aC5wb3cobywgMSAvIDMpIDogNy43ODcgKiBvICsgMTYgLyAxMTYsIHIgPSByID4gLjAwODg1NiA/IE1hdGgucG93KHIsIDEgLyAzKSA6IDcuNzg3ICogciArIDE2IC8gMTE2LCBlID0gMTE2ICogbyAtIDE2LCBuID0gNTAwICogKGEgLSBvKSwgaSA9IDIwMCAqIChvIC0gciksIFtlLCBuLCBpXQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBPKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBCKFYodCkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHoodCkgewogICAgICAgICAgICAgICAgdmFyIGUsIG4sIGksIGEsIG8gPSB0WzBdLAogICAgICAgICAgICAgICAgICAgIHIgPSB0WzFdLAogICAgICAgICAgICAgICAgICAgIGwgPSB0WzJdOwogICAgICAgICAgICAgICAgcmV0dXJuIG8gPD0gOCA/IChuID0gMTAwICogbyAvIDkwMy4zLCBhID0gNy43ODcgKiAobiAvIDEwMCkgKyAxNiAvIDExNikgOiAobiA9IDEwMCAqIE1hdGgucG93KChvICsgMTYpIC8gMTE2LCAzKSwgYSA9IE1hdGgucG93KG4gLyAxMDAsIDEgLyAzKSksIGUgPSBlIC8gOTUuMDQ3IDw9IC4wMDg4NTYgPyBlID0gOTUuMDQ3ICogKHIgLyA1MDAgKyBhIC0gMTYgLyAxMTYpIC8gNy43ODcgOiA5NS4wNDcgKiBNYXRoLnBvdyhyIC8gNTAwICsgYSwgMyksIGkgPSBpIC8gMTA4Ljg4MyA8PSAuMDA4ODU5ID8gaSA9IDEwOC44ODMgKiAoYSAtIGwgLyAyMDAgLSAxNiAvIDExNikgLyA3Ljc4NyA6IDEwOC44ODMgKiBNYXRoLnBvdyhhIC0gbCAvIDIwMCwgMyksIFtlLCBuLCBpXQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBCKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBuLCBpLCBhID0gdFswXSwKICAgICAgICAgICAgICAgICAgICBvID0gdFsxXSwKICAgICAgICAgICAgICAgICAgICByID0gdFsyXTsKICAgICAgICAgICAgICAgIHJldHVybiBlID0gTWF0aC5hdGFuMihyLCBvKSwgbiA9IDM2MCAqIGUgLyAyIC8gTWF0aC5QSSwgbiA8IDAgJiYgKG4gKz0gMzYwKSwgaSA9IE1hdGguc3FydChvICogbyArIHIgKiByKSwgW2EsIGksIG5dCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFcodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEwoeih0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gTih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbiwgaSwgYSA9IHRbMF0sCiAgICAgICAgICAgICAgICAgICAgbyA9IHRbMV0sCiAgICAgICAgICAgICAgICAgICAgciA9IHRbMl07CiAgICAgICAgICAgICAgICByZXR1cm4gaSA9IHIgLyAzNjAgKiAyICogTWF0aC5QSSwgZSA9IG8gKiBNYXRoLmNvcyhpKSwgbiA9IG8gKiBNYXRoLnNpbihpKSwgW2EsIGUsIG5dCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEUodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHooTih0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gSCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gVyhOKHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBxKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBKW3RdCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGoodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkocSh0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gWSh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYShxKHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBVKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKHEodCkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFgodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGwocSh0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gSyh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZChxKHQpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBHKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB1KHEodCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZS5leHBvcnRzID0gewogICAgICAgICAgICAgICAgcmdiMmhzbDogaSwKICAgICAgICAgICAgICAgIHJnYjJoc3Y6IGEsCiAgICAgICAgICAgICAgICByZ2IyaHdiOiBvLAogICAgICAgICAgICAgICAgcmdiMmNteWs6IGwsCiAgICAgICAgICAgICAgICByZ2Iya2V5d29yZDogcywKICAgICAgICAgICAgICAgIHJnYjJ4eXo6IHUsCiAgICAgICAgICAgICAgICByZ2IybGFiOiBkLAogICAgICAgICAgICAgICAgcmdiMmxjaDogYywKICAgICAgICAgICAgICAgIGhzbDJyZ2I6IGgsCiAgICAgICAgICAgICAgICBoc2wyaHN2OiBmLAogICAgICAgICAgICAgICAgaHNsMmh3YjogcCwKICAgICAgICAgICAgICAgIGhzbDJjbXlrOiBtLAogICAgICAgICAgICAgICAgaHNsMmtleXdvcmQ6IHYsCiAgICAgICAgICAgICAgICBoc3YycmdiOiB4LAogICAgICAgICAgICAgICAgaHN2MmhzbDogeSwKICAgICAgICAgICAgICAgIGhzdjJod2I6IGssCiAgICAgICAgICAgICAgICBoc3YyY215azogdywKICAgICAgICAgICAgICAgIGhzdjJrZXl3b3JkOiBNLAogICAgICAgICAgICAgICAgaHdiMnJnYjogUywKICAgICAgICAgICAgICAgIGh3YjJoc2w6IEMsCiAgICAgICAgICAgICAgICBod2IyaHN2OiBELAogICAgICAgICAgICAgICAgaHdiMmNteWs6IEksCiAgICAgICAgICAgICAgICBod2Iya2V5d29yZDogQSwKICAgICAgICAgICAgICAgIGNteWsycmdiOiBQLAogICAgICAgICAgICAgICAgY215azJoc2w6IF8sCiAgICAgICAgICAgICAgICBjbXlrMmhzdjogVCwKICAgICAgICAgICAgICAgIGNteWsyaHdiOiBGLAogICAgICAgICAgICAgICAgY215azJrZXl3b3JkOiBSLAogICAgICAgICAgICAgICAga2V5d29yZDJyZ2I6IHEsCiAgICAgICAgICAgICAgICBrZXl3b3JkMmhzbDogaiwKICAgICAgICAgICAgICAgIGtleXdvcmQyaHN2OiBZLAogICAgICAgICAgICAgICAga2V5d29yZDJod2I6IFUsCiAgICAgICAgICAgICAgICBrZXl3b3JkMmNteWs6IFgsCiAgICAgICAgICAgICAgICBrZXl3b3JkMmxhYjogSywKICAgICAgICAgICAgICAgIGtleXdvcmQyeHl6OiBHLAogICAgICAgICAgICAgICAgeHl6MnJnYjogTCwKICAgICAgICAgICAgICAgIHh5ejJsYWI6IFYsCiAgICAgICAgICAgICAgICB4eXoybGNoOiBPLAogICAgICAgICAgICAgICAgbGFiMnh5ejogeiwKICAgICAgICAgICAgICAgIGxhYjJyZ2I6IFcsCiAgICAgICAgICAgICAgICBsYWIybGNoOiBCLAogICAgICAgICAgICAgICAgbGNoMmxhYjogTiwKICAgICAgICAgICAgICAgIGxjaDJ4eXo6IEUsCiAgICAgICAgICAgICAgICBsY2gycmdiOiBICiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciBKID0gewogICAgICAgICAgICAgICAgICAgIGFsaWNlYmx1ZTogWzI0MCwgMjQ4LCAyNTVdLAogICAgICAgICAgICAgICAgICAgIGFudGlxdWV3aGl0ZTogWzI1MCwgMjM1LCAyMTVdLAogICAgICAgICAgICAgICAgICAgIGFxdWE6IFswLCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICAgICAgYXF1YW1hcmluZTogWzEyNywgMjU1LCAyMTJdLAogICAgICAgICAgICAgICAgICAgIGF6dXJlOiBbMjQwLCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICAgICAgYmVpZ2U6IFsyNDUsIDI0NSwgMjIwXSwKICAgICAgICAgICAgICAgICAgICBiaXNxdWU6IFsyNTUsIDIyOCwgMTk2XSwKICAgICAgICAgICAgICAgICAgICBibGFjazogWzAsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgIGJsYW5jaGVkYWxtb25kOiBbMjU1LCAyMzUsIDIwNV0sCiAgICAgICAgICAgICAgICAgICAgYmx1ZTogWzAsIDAsIDI1NV0sCiAgICAgICAgICAgICAgICAgICAgYmx1ZXZpb2xldDogWzEzOCwgNDMsIDIyNl0sCiAgICAgICAgICAgICAgICAgICAgYnJvd246IFsxNjUsIDQyLCA0Ml0sCiAgICAgICAgICAgICAgICAgICAgYnVybHl3b29kOiBbMjIyLCAxODQsIDEzNV0sCiAgICAgICAgICAgICAgICAgICAgY2FkZXRibHVlOiBbOTUsIDE1OCwgMTYwXSwKICAgICAgICAgICAgICAgICAgICBjaGFydHJldXNlOiBbMTI3LCAyNTUsIDBdLAogICAgICAgICAgICAgICAgICAgIGNob2NvbGF0ZTogWzIxMCwgMTA1LCAzMF0sCiAgICAgICAgICAgICAgICAgICAgY29yYWw6IFsyNTUsIDEyNywgODBdLAogICAgICAgICAgICAgICAgICAgIGNvcm5mbG93ZXJibHVlOiBbMTAwLCAxNDksIDIzN10sCiAgICAgICAgICAgICAgICAgICAgY29ybnNpbGs6IFsyNTUsIDI0OCwgMjIwXSwKICAgICAgICAgICAgICAgICAgICBjcmltc29uOiBbMjIwLCAyMCwgNjBdLAogICAgICAgICAgICAgICAgICAgIGN5YW46IFswLCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICAgICAgZGFya2JsdWU6IFswLCAwLCAxMzldLAogICAgICAgICAgICAgICAgICAgIGRhcmtjeWFuOiBbMCwgMTM5LCAxMzldLAogICAgICAgICAgICAgICAgICAgIGRhcmtnb2xkZW5yb2Q6IFsxODQsIDEzNCwgMTFdLAogICAgICAgICAgICAgICAgICAgIGRhcmtncmF5OiBbMTY5LCAxNjksIDE2OV0sCiAgICAgICAgICAgICAgICAgICAgZGFya2dyZWVuOiBbMCwgMTAwLCAwXSwKICAgICAgICAgICAgICAgICAgICBkYXJrZ3JleTogWzE2OSwgMTY5LCAxNjldLAogICAgICAgICAgICAgICAgICAgIGRhcmtraGFraTogWzE4OSwgMTgzLCAxMDddLAogICAgICAgICAgICAgICAgICAgIGRhcmttYWdlbnRhOiBbMTM5LCAwLCAxMzldLAogICAgICAgICAgICAgICAgICAgIGRhcmtvbGl2ZWdyZWVuOiBbODUsIDEwNywgNDddLAogICAgICAgICAgICAgICAgICAgIGRhcmtvcmFuZ2U6IFsyNTUsIDE0MCwgMF0sCiAgICAgICAgICAgICAgICAgICAgZGFya29yY2hpZDogWzE1MywgNTAsIDIwNF0sCiAgICAgICAgICAgICAgICAgICAgZGFya3JlZDogWzEzOSwgMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgZGFya3NhbG1vbjogWzIzMywgMTUwLCAxMjJdLAogICAgICAgICAgICAgICAgICAgIGRhcmtzZWFncmVlbjogWzE0MywgMTg4LCAxNDNdLAogICAgICAgICAgICAgICAgICAgIGRhcmtzbGF0ZWJsdWU6IFs3MiwgNjEsIDEzOV0sCiAgICAgICAgICAgICAgICAgICAgZGFya3NsYXRlZ3JheTogWzQ3LCA3OSwgNzldLAogICAgICAgICAgICAgICAgICAgIGRhcmtzbGF0ZWdyZXk6IFs0NywgNzksIDc5XSwKICAgICAgICAgICAgICAgICAgICBkYXJrdHVycXVvaXNlOiBbMCwgMjA2LCAyMDldLAogICAgICAgICAgICAgICAgICAgIGRhcmt2aW9sZXQ6IFsxNDgsIDAsIDIxMV0sCiAgICAgICAgICAgICAgICAgICAgZGVlcHBpbms6IFsyNTUsIDIwLCAxNDddLAogICAgICAgICAgICAgICAgICAgIGRlZXBza3libHVlOiBbMCwgMTkxLCAyNTVdLAogICAgICAgICAgICAgICAgICAgIGRpbWdyYXk6IFsxMDUsIDEwNSwgMTA1XSwKICAgICAgICAgICAgICAgICAgICBkaW1ncmV5OiBbMTA1LCAxMDUsIDEwNV0sCiAgICAgICAgICAgICAgICAgICAgZG9kZ2VyYmx1ZTogWzMwLCAxNDQsIDI1NV0sCiAgICAgICAgICAgICAgICAgICAgZmlyZWJyaWNrOiBbMTc4LCAzNCwgMzRdLAogICAgICAgICAgICAgICAgICAgIGZsb3JhbHdoaXRlOiBbMjU1LCAyNTAsIDI0MF0sCiAgICAgICAgICAgICAgICAgICAgZm9yZXN0Z3JlZW46IFszNCwgMTM5LCAzNF0sCiAgICAgICAgICAgICAgICAgICAgZnVjaHNpYTogWzI1NSwgMCwgMjU1XSwKICAgICAgICAgICAgICAgICAgICBnYWluc2Jvcm86IFsyMjAsIDIyMCwgMjIwXSwKICAgICAgICAgICAgICAgICAgICBnaG9zdHdoaXRlOiBbMjQ4LCAyNDgsIDI1NV0sCiAgICAgICAgICAgICAgICAgICAgZ29sZDogWzI1NSwgMjE1LCAwXSwKICAgICAgICAgICAgICAgICAgICBnb2xkZW5yb2Q6IFsyMTgsIDE2NSwgMzJdLAogICAgICAgICAgICAgICAgICAgIGdyYXk6IFsxMjgsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgICAgICBncmVlbjogWzAsIDEyOCwgMF0sCiAgICAgICAgICAgICAgICAgICAgZ3JlZW55ZWxsb3c6IFsxNzMsIDI1NSwgNDddLAogICAgICAgICAgICAgICAgICAgIGdyZXk6IFsxMjgsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgICAgICBob25leWRldzogWzI0MCwgMjU1LCAyNDBdLAogICAgICAgICAgICAgICAgICAgIGhvdHBpbms6IFsyNTUsIDEwNSwgMTgwXSwKICAgICAgICAgICAgICAgICAgICBpbmRpYW5yZWQ6IFsyMDUsIDkyLCA5Ml0sCiAgICAgICAgICAgICAgICAgICAgaW5kaWdvOiBbNzUsIDAsIDEzMF0sCiAgICAgICAgICAgICAgICAgICAgaXZvcnk6IFsyNTUsIDI1NSwgMjQwXSwKICAgICAgICAgICAgICAgICAgICBraGFraTogWzI0MCwgMjMwLCAxNDBdLAogICAgICAgICAgICAgICAgICAgIGxhdmVuZGVyOiBbMjMwLCAyMzAsIDI1MF0sCiAgICAgICAgICAgICAgICAgICAgbGF2ZW5kZXJibHVzaDogWzI1NSwgMjQwLCAyNDVdLAogICAgICAgICAgICAgICAgICAgIGxhd25ncmVlbjogWzEyNCwgMjUyLCAwXSwKICAgICAgICAgICAgICAgICAgICBsZW1vbmNoaWZmb246IFsyNTUsIDI1MCwgMjA1XSwKICAgICAgICAgICAgICAgICAgICBsaWdodGJsdWU6IFsxNzMsIDIxNiwgMjMwXSwKICAgICAgICAgICAgICAgICAgICBsaWdodGNvcmFsOiBbMjQwLCAxMjgsIDEyOF0sCiAgICAgICAgICAgICAgICAgICAgbGlnaHRjeWFuOiBbMjI0LCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICAgICAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IFsyNTAsIDI1MCwgMjEwXSwKICAgICAgICAgICAgICAgICAgICBsaWdodGdyYXk6IFsyMTEsIDIxMSwgMjExXSwKICAgICAgICAgICAgICAgICAgICBsaWdodGdyZWVuOiBbMTQ0LCAyMzgsIDE0NF0sCiAgICAgICAgICAgICAgICAgICAgbGlnaHRncmV5OiBbMjExLCAyMTEsIDIxMV0sCiAgICAgICAgICAgICAgICAgICAgbGlnaHRwaW5rOiBbMjU1LCAxODIsIDE5M10sCiAgICAgICAgICAgICAgICAgICAgbGlnaHRzYWxtb246IFsyNTUsIDE2MCwgMTIyXSwKICAgICAgICAgICAgICAgICAgICBsaWdodHNlYWdyZWVuOiBbMzIsIDE3OCwgMTcwXSwKICAgICAgICAgICAgICAgICAgICBsaWdodHNreWJsdWU6IFsxMzUsIDIwNiwgMjUwXSwKICAgICAgICAgICAgICAgICAgICBsaWdodHNsYXRlZ3JheTogWzExOSwgMTM2LCAxNTNdLAogICAgICAgICAgICAgICAgICAgIGxpZ2h0c2xhdGVncmV5OiBbMTE5LCAxMzYsIDE1M10sCiAgICAgICAgICAgICAgICAgICAgbGlnaHRzdGVlbGJsdWU6IFsxNzYsIDE5NiwgMjIyXSwKICAgICAgICAgICAgICAgICAgICBsaWdodHllbGxvdzogWzI1NSwgMjU1LCAyMjRdLAogICAgICAgICAgICAgICAgICAgIGxpbWU6IFswLCAyNTUsIDBdLAogICAgICAgICAgICAgICAgICAgIGxpbWVncmVlbjogWzUwLCAyMDUsIDUwXSwKICAgICAgICAgICAgICAgICAgICBsaW5lbjogWzI1MCwgMjQwLCAyMzBdLAogICAgICAgICAgICAgICAgICAgIG1hZ2VudGE6IFsyNTUsIDAsIDI1NV0sCiAgICAgICAgICAgICAgICAgICAgbWFyb29uOiBbMTI4LCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICBtZWRpdW1hcXVhbWFyaW5lOiBbMTAyLCAyMDUsIDE3MF0sCiAgICAgICAgICAgICAgICAgICAgbWVkaXVtYmx1ZTogWzAsIDAsIDIwNV0sCiAgICAgICAgICAgICAgICAgICAgbWVkaXVtb3JjaGlkOiBbMTg2LCA4NSwgMjExXSwKICAgICAgICAgICAgICAgICAgICBtZWRpdW1wdXJwbGU6IFsxNDcsIDExMiwgMjE5XSwKICAgICAgICAgICAgICAgICAgICBtZWRpdW1zZWFncmVlbjogWzYwLCAxNzksIDExM10sCiAgICAgICAgICAgICAgICAgICAgbWVkaXVtc2xhdGVibHVlOiBbMTIzLCAxMDQsIDIzOF0sCiAgICAgICAgICAgICAgICAgICAgbWVkaXVtc3ByaW5nZ3JlZW46IFswLCAyNTAsIDE1NF0sCiAgICAgICAgICAgICAgICAgICAgbWVkaXVtdHVycXVvaXNlOiBbNzIsIDIwOSwgMjA0XSwKICAgICAgICAgICAgICAgICAgICBtZWRpdW12aW9sZXRyZWQ6IFsxOTksIDIxLCAxMzNdLAogICAgICAgICAgICAgICAgICAgIG1pZG5pZ2h0Ymx1ZTogWzI1LCAyNSwgMTEyXSwKICAgICAgICAgICAgICAgICAgICBtaW50Y3JlYW06IFsyNDUsIDI1NSwgMjUwXSwKICAgICAgICAgICAgICAgICAgICBtaXN0eXJvc2U6IFsyNTUsIDIyOCwgMjI1XSwKICAgICAgICAgICAgICAgICAgICBtb2NjYXNpbjogWzI1NSwgMjI4LCAxODFdLAogICAgICAgICAgICAgICAgICAgIG5hdmFqb3doaXRlOiBbMjU1LCAyMjIsIDE3M10sCiAgICAgICAgICAgICAgICAgICAgbmF2eTogWzAsIDAsIDEyOF0sCiAgICAgICAgICAgICAgICAgICAgb2xkbGFjZTogWzI1MywgMjQ1LCAyMzBdLAogICAgICAgICAgICAgICAgICAgIG9saXZlOiBbMTI4LCAxMjgsIDBdLAogICAgICAgICAgICAgICAgICAgIG9saXZlZHJhYjogWzEwNywgMTQyLCAzNV0sCiAgICAgICAgICAgICAgICAgICAgb3JhbmdlOiBbMjU1LCAxNjUsIDBdLAogICAgICAgICAgICAgICAgICAgIG9yYW5nZXJlZDogWzI1NSwgNjksIDBdLAogICAgICAgICAgICAgICAgICAgIG9yY2hpZDogWzIxOCwgMTEyLCAyMTRdLAogICAgICAgICAgICAgICAgICAgIHBhbGVnb2xkZW5yb2Q6IFsyMzgsIDIzMiwgMTcwXSwKICAgICAgICAgICAgICAgICAgICBwYWxlZ3JlZW46IFsxNTIsIDI1MSwgMTUyXSwKICAgICAgICAgICAgICAgICAgICBwYWxldHVycXVvaXNlOiBbMTc1LCAyMzgsIDIzOF0sCiAgICAgICAgICAgICAgICAgICAgcGFsZXZpb2xldHJlZDogWzIxOSwgMTEyLCAxNDddLAogICAgICAgICAgICAgICAgICAgIHBhcGF5YXdoaXA6IFsyNTUsIDIzOSwgMjEzXSwKICAgICAgICAgICAgICAgICAgICBwZWFjaHB1ZmY6IFsyNTUsIDIxOCwgMTg1XSwKICAgICAgICAgICAgICAgICAgICBwZXJ1OiBbMjA1LCAxMzMsIDYzXSwKICAgICAgICAgICAgICAgICAgICBwaW5rOiBbMjU1LCAxOTIsIDIwM10sCiAgICAgICAgICAgICAgICAgICAgcGx1bTogWzIyMSwgMTYwLCAyMjFdLAogICAgICAgICAgICAgICAgICAgIHBvd2RlcmJsdWU6IFsxNzYsIDIyNCwgMjMwXSwKICAgICAgICAgICAgICAgICAgICBwdXJwbGU6IFsxMjgsIDAsIDEyOF0sCiAgICAgICAgICAgICAgICAgICAgcmViZWNjYXB1cnBsZTogWzEwMiwgNTEsIDE1M10sCiAgICAgICAgICAgICAgICAgICAgcmVkOiBbMjU1LCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICByb3N5YnJvd246IFsxODgsIDE0MywgMTQzXSwKICAgICAgICAgICAgICAgICAgICByb3lhbGJsdWU6IFs2NSwgMTA1LCAyMjVdLAogICAgICAgICAgICAgICAgICAgIHNhZGRsZWJyb3duOiBbMTM5LCA2OSwgMTldLAogICAgICAgICAgICAgICAgICAgIHNhbG1vbjogWzI1MCwgMTI4LCAxMTRdLAogICAgICAgICAgICAgICAgICAgIHNhbmR5YnJvd246IFsyNDQsIDE2NCwgOTZdLAogICAgICAgICAgICAgICAgICAgIHNlYWdyZWVuOiBbNDYsIDEzOSwgODddLAogICAgICAgICAgICAgICAgICAgIHNlYXNoZWxsOiBbMjU1LCAyNDUsIDIzOF0sCiAgICAgICAgICAgICAgICAgICAgc2llbm5hOiBbMTYwLCA4MiwgNDVdLAogICAgICAgICAgICAgICAgICAgIHNpbHZlcjogWzE5MiwgMTkyLCAxOTJdLAogICAgICAgICAgICAgICAgICAgIHNreWJsdWU6IFsxMzUsIDIwNiwgMjM1XSwKICAgICAgICAgICAgICAgICAgICBzbGF0ZWJsdWU6IFsxMDYsIDkwLCAyMDVdLAogICAgICAgICAgICAgICAgICAgIHNsYXRlZ3JheTogWzExMiwgMTI4LCAxNDRdLAogICAgICAgICAgICAgICAgICAgIHNsYXRlZ3JleTogWzExMiwgMTI4LCAxNDRdLAogICAgICAgICAgICAgICAgICAgIHNub3c6IFsyNTUsIDI1MCwgMjUwXSwKICAgICAgICAgICAgICAgICAgICBzcHJpbmdncmVlbjogWzAsIDI1NSwgMTI3XSwKICAgICAgICAgICAgICAgICAgICBzdGVlbGJsdWU6IFs3MCwgMTMwLCAxODBdLAogICAgICAgICAgICAgICAgICAgIHRhbjogWzIxMCwgMTgwLCAxNDBdLAogICAgICAgICAgICAgICAgICAgIHRlYWw6IFswLCAxMjgsIDEyOF0sCiAgICAgICAgICAgICAgICAgICAgdGhpc3RsZTogWzIxNiwgMTkxLCAyMTZdLAogICAgICAgICAgICAgICAgICAgIHRvbWF0bzogWzI1NSwgOTksIDcxXSwKICAgICAgICAgICAgICAgICAgICB0dXJxdW9pc2U6IFs2NCwgMjI0LCAyMDhdLAogICAgICAgICAgICAgICAgICAgIHZpb2xldDogWzIzOCwgMTMwLCAyMzhdLAogICAgICAgICAgICAgICAgICAgIHdoZWF0OiBbMjQ1LCAyMjIsIDE3OV0sCiAgICAgICAgICAgICAgICAgICAgd2hpdGU6IFsyNTUsIDI1NSwgMjU1XSwKICAgICAgICAgICAgICAgICAgICB3aGl0ZXNtb2tlOiBbMjQ1LCAyNDUsIDI0NV0sCiAgICAgICAgICAgICAgICAgICAgeWVsbG93OiBbMjU1LCAyNTUsIDBdLAogICAgICAgICAgICAgICAgICAgIHllbGxvd2dyZWVuOiBbMTU0LCAyMDUsIDUwXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFogPSB7fTsKICAgICAgICAgICAgZm9yICh2YXIgUSBpbiBKKSBaW0pTT04uc3RyaW5naWZ5KEpbUV0pXSA9IFEKICAgICAgICB9LCB7fV0sCiAgICAgICAgNTogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdmFyIGkgPSB0KDQpLAogICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yICh2YXIgbyBpbiBpKSB7CiAgICAgICAgICAgICAgICBhW28gKyAiUmF3Il0gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiBlICYmIChlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSksIGlbdF0oZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KG8pOwogICAgICAgICAgICAgICAgdmFyIHIgPSAvKFx3KykyKFx3KykvLmV4ZWMobyksCiAgICAgICAgICAgICAgICAgICAgbCA9IHJbMV0sCiAgICAgICAgICAgICAgICAgICAgcyA9IHJbMl07CiAgICAgICAgICAgICAgICBhW2xdID0gYVtsXSB8fCB7fSwgYVtsXVtzXSA9IGFbb10gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm51bWJlciIgPT0gdHlwZW9mIGUgJiYgKGUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBpW3RdKGUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIG4gfHwgdm9pZCAwID09PSBuKSByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCBuLmxlbmd0aDsgYSsrKSBuW2FdID0gTWF0aC5yb3VuZChuW2FdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KG8pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuY29udnMgPSB7fQogICAgICAgICAgICB9OwogICAgICAgICAgICB1LnByb3RvdHlwZS5yb3V0ZVNwYWNlID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlWzBdOwogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gbiA/IHRoaXMuZ2V0VmFsdWVzKHQpIDogKCJudW1iZXIiID09IHR5cGVvZiBuICYmIChuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpLCB0aGlzLnNldFZhbHVlcyh0LCBuKSkKICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUuc2V0VmFsdWVzID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3BhY2UgPSB0LCB0aGlzLmNvbnZzID0ge30sIHRoaXMuY29udnNbdF0gPSBlLCB0aGlzCiAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmdldFZhbHVlcyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5jb252c1t0XTsKICAgICAgICAgICAgICAgIGlmICghZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5zcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuY29udnNbbl07CiAgICAgICAgICAgICAgICAgICAgZSA9IGFbbl1bdF0oaSksIHRoaXMuY29udnNbdF0gPSBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9LCBbInJnYiIsICJoc2wiLCAiaHN2IiwgImNteWsiLCAia2V5d29yZCJdLmZvckVhY2goZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdS5wcm90b3R5cGVbdF0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVTcGFjZSh0LCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBlLmV4cG9ydHMgPSBhCiAgICAgICAgfSwgewogICAgICAgICAgICA0OiA0CiAgICAgICAgfV0sCiAgICAgICAgNjogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgZS5leHBvcnRzID0gewogICAgICAgICAgICAgICAgYWxpY2VibHVlOiBbMjQwLCAyNDgsIDI1NV0sCiAgICAgICAgICAgICAgICBhbnRpcXVld2hpdGU6IFsyNTAsIDIzNSwgMjE1XSwKICAgICAgICAgICAgICAgIGFxdWE6IFswLCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICBhcXVhbWFyaW5lOiBbMTI3LCAyNTUsIDIxMl0sCiAgICAgICAgICAgICAgICBhenVyZTogWzI0MCwgMjU1LCAyNTVdLAogICAgICAgICAgICAgICAgYmVpZ2U6IFsyNDUsIDI0NSwgMjIwXSwKICAgICAgICAgICAgICAgIGJpc3F1ZTogWzI1NSwgMjI4LCAxOTZdLAogICAgICAgICAgICAgICAgYmxhY2s6IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgIGJsYW5jaGVkYWxtb25kOiBbMjU1LCAyMzUsIDIwNV0sCiAgICAgICAgICAgICAgICBibHVlOiBbMCwgMCwgMjU1XSwKICAgICAgICAgICAgICAgIGJsdWV2aW9sZXQ6IFsxMzgsIDQzLCAyMjZdLAogICAgICAgICAgICAgICAgYnJvd246IFsxNjUsIDQyLCA0Ml0sCiAgICAgICAgICAgICAgICBidXJseXdvb2Q6IFsyMjIsIDE4NCwgMTM1XSwKICAgICAgICAgICAgICAgIGNhZGV0Ymx1ZTogWzk1LCAxNTgsIDE2MF0sCiAgICAgICAgICAgICAgICBjaGFydHJldXNlOiBbMTI3LCAyNTUsIDBdLAogICAgICAgICAgICAgICAgY2hvY29sYXRlOiBbMjEwLCAxMDUsIDMwXSwKICAgICAgICAgICAgICAgIGNvcmFsOiBbMjU1LCAxMjcsIDgwXSwKICAgICAgICAgICAgICAgIGNvcm5mbG93ZXJibHVlOiBbMTAwLCAxNDksIDIzN10sCiAgICAgICAgICAgICAgICBjb3Juc2lsazogWzI1NSwgMjQ4LCAyMjBdLAogICAgICAgICAgICAgICAgY3JpbXNvbjogWzIyMCwgMjAsIDYwXSwKICAgICAgICAgICAgICAgIGN5YW46IFswLCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICBkYXJrYmx1ZTogWzAsIDAsIDEzOV0sCiAgICAgICAgICAgICAgICBkYXJrY3lhbjogWzAsIDEzOSwgMTM5XSwKICAgICAgICAgICAgICAgIGRhcmtnb2xkZW5yb2Q6IFsxODQsIDEzNCwgMTFdLAogICAgICAgICAgICAgICAgZGFya2dyYXk6IFsxNjksIDE2OSwgMTY5XSwKICAgICAgICAgICAgICAgIGRhcmtncmVlbjogWzAsIDEwMCwgMF0sCiAgICAgICAgICAgICAgICBkYXJrZ3JleTogWzE2OSwgMTY5LCAxNjldLAogICAgICAgICAgICAgICAgZGFya2toYWtpOiBbMTg5LCAxODMsIDEwN10sCiAgICAgICAgICAgICAgICBkYXJrbWFnZW50YTogWzEzOSwgMCwgMTM5XSwKICAgICAgICAgICAgICAgIGRhcmtvbGl2ZWdyZWVuOiBbODUsIDEwNywgNDddLAogICAgICAgICAgICAgICAgZGFya29yYW5nZTogWzI1NSwgMTQwLCAwXSwKICAgICAgICAgICAgICAgIGRhcmtvcmNoaWQ6IFsxNTMsIDUwLCAyMDRdLAogICAgICAgICAgICAgICAgZGFya3JlZDogWzEzOSwgMCwgMF0sCiAgICAgICAgICAgICAgICBkYXJrc2FsbW9uOiBbMjMzLCAxNTAsIDEyMl0sCiAgICAgICAgICAgICAgICBkYXJrc2VhZ3JlZW46IFsxNDMsIDE4OCwgMTQzXSwKICAgICAgICAgICAgICAgIGRhcmtzbGF0ZWJsdWU6IFs3MiwgNjEsIDEzOV0sCiAgICAgICAgICAgICAgICBkYXJrc2xhdGVncmF5OiBbNDcsIDc5LCA3OV0sCiAgICAgICAgICAgICAgICBkYXJrc2xhdGVncmV5OiBbNDcsIDc5LCA3OV0sCiAgICAgICAgICAgICAgICBkYXJrdHVycXVvaXNlOiBbMCwgMjA2LCAyMDldLAogICAgICAgICAgICAgICAgZGFya3Zpb2xldDogWzE0OCwgMCwgMjExXSwKICAgICAgICAgICAgICAgIGRlZXBwaW5rOiBbMjU1LCAyMCwgMTQ3XSwKICAgICAgICAgICAgICAgIGRlZXBza3libHVlOiBbMCwgMTkxLCAyNTVdLAogICAgICAgICAgICAgICAgZGltZ3JheTogWzEwNSwgMTA1LCAxMDVdLAogICAgICAgICAgICAgICAgZGltZ3JleTogWzEwNSwgMTA1LCAxMDVdLAogICAgICAgICAgICAgICAgZG9kZ2VyYmx1ZTogWzMwLCAxNDQsIDI1NV0sCiAgICAgICAgICAgICAgICBmaXJlYnJpY2s6IFsxNzgsIDM0LCAzNF0sCiAgICAgICAgICAgICAgICBmbG9yYWx3aGl0ZTogWzI1NSwgMjUwLCAyNDBdLAogICAgICAgICAgICAgICAgZm9yZXN0Z3JlZW46IFszNCwgMTM5LCAzNF0sCiAgICAgICAgICAgICAgICBmdWNoc2lhOiBbMjU1LCAwLCAyNTVdLAogICAgICAgICAgICAgICAgZ2FpbnNib3JvOiBbMjIwLCAyMjAsIDIyMF0sCiAgICAgICAgICAgICAgICBnaG9zdHdoaXRlOiBbMjQ4LCAyNDgsIDI1NV0sCiAgICAgICAgICAgICAgICBnb2xkOiBbMjU1LCAyMTUsIDBdLAogICAgICAgICAgICAgICAgZ29sZGVucm9kOiBbMjE4LCAxNjUsIDMyXSwKICAgICAgICAgICAgICAgIGdyYXk6IFsxMjgsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgIGdyZWVuOiBbMCwgMTI4LCAwXSwKICAgICAgICAgICAgICAgIGdyZWVueWVsbG93OiBbMTczLCAyNTUsIDQ3XSwKICAgICAgICAgICAgICAgIGdyZXk6IFsxMjgsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgIGhvbmV5ZGV3OiBbMjQwLCAyNTUsIDI0MF0sCiAgICAgICAgICAgICAgICBob3RwaW5rOiBbMjU1LCAxMDUsIDE4MF0sCiAgICAgICAgICAgICAgICBpbmRpYW5yZWQ6IFsyMDUsIDkyLCA5Ml0sCiAgICAgICAgICAgICAgICBpbmRpZ286IFs3NSwgMCwgMTMwXSwKICAgICAgICAgICAgICAgIGl2b3J5OiBbMjU1LCAyNTUsIDI0MF0sCiAgICAgICAgICAgICAgICBraGFraTogWzI0MCwgMjMwLCAxNDBdLAogICAgICAgICAgICAgICAgbGF2ZW5kZXI6IFsyMzAsIDIzMCwgMjUwXSwKICAgICAgICAgICAgICAgIGxhdmVuZGVyYmx1c2g6IFsyNTUsIDI0MCwgMjQ1XSwKICAgICAgICAgICAgICAgIGxhd25ncmVlbjogWzEyNCwgMjUyLCAwXSwKICAgICAgICAgICAgICAgIGxlbW9uY2hpZmZvbjogWzI1NSwgMjUwLCAyMDVdLAogICAgICAgICAgICAgICAgbGlnaHRibHVlOiBbMTczLCAyMTYsIDIzMF0sCiAgICAgICAgICAgICAgICBsaWdodGNvcmFsOiBbMjQwLCAxMjgsIDEyOF0sCiAgICAgICAgICAgICAgICBsaWdodGN5YW46IFsyMjQsIDI1NSwgMjU1XSwKICAgICAgICAgICAgICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiBbMjUwLCAyNTAsIDIxMF0sCiAgICAgICAgICAgICAgICBsaWdodGdyYXk6IFsyMTEsIDIxMSwgMjExXSwKICAgICAgICAgICAgICAgIGxpZ2h0Z3JlZW46IFsxNDQsIDIzOCwgMTQ0XSwKICAgICAgICAgICAgICAgIGxpZ2h0Z3JleTogWzIxMSwgMjExLCAyMTFdLAogICAgICAgICAgICAgICAgbGlnaHRwaW5rOiBbMjU1LCAxODIsIDE5M10sCiAgICAgICAgICAgICAgICBsaWdodHNhbG1vbjogWzI1NSwgMTYwLCAxMjJdLAogICAgICAgICAgICAgICAgbGlnaHRzZWFncmVlbjogWzMyLCAxNzgsIDE3MF0sCiAgICAgICAgICAgICAgICBsaWdodHNreWJsdWU6IFsxMzUsIDIwNiwgMjUwXSwKICAgICAgICAgICAgICAgIGxpZ2h0c2xhdGVncmF5OiBbMTE5LCAxMzYsIDE1M10sCiAgICAgICAgICAgICAgICBsaWdodHNsYXRlZ3JleTogWzExOSwgMTM2LCAxNTNdLAogICAgICAgICAgICAgICAgbGlnaHRzdGVlbGJsdWU6IFsxNzYsIDE5NiwgMjIyXSwKICAgICAgICAgICAgICAgIGxpZ2h0eWVsbG93OiBbMjU1LCAyNTUsIDIyNF0sCiAgICAgICAgICAgICAgICBsaW1lOiBbMCwgMjU1LCAwXSwKICAgICAgICAgICAgICAgIGxpbWVncmVlbjogWzUwLCAyMDUsIDUwXSwKICAgICAgICAgICAgICAgIGxpbmVuOiBbMjUwLCAyNDAsIDIzMF0sCiAgICAgICAgICAgICAgICBtYWdlbnRhOiBbMjU1LCAwLCAyNTVdLAogICAgICAgICAgICAgICAgbWFyb29uOiBbMTI4LCAwLCAwXSwKICAgICAgICAgICAgICAgIG1lZGl1bWFxdWFtYXJpbmU6IFsxMDIsIDIwNSwgMTcwXSwKICAgICAgICAgICAgICAgIG1lZGl1bWJsdWU6IFswLCAwLCAyMDVdLAogICAgICAgICAgICAgICAgbWVkaXVtb3JjaGlkOiBbMTg2LCA4NSwgMjExXSwKICAgICAgICAgICAgICAgIG1lZGl1bXB1cnBsZTogWzE0NywgMTEyLCAyMTldLAogICAgICAgICAgICAgICAgbWVkaXVtc2VhZ3JlZW46IFs2MCwgMTc5LCAxMTNdLAogICAgICAgICAgICAgICAgbWVkaXVtc2xhdGVibHVlOiBbMTIzLCAxMDQsIDIzOF0sCiAgICAgICAgICAgICAgICBtZWRpdW1zcHJpbmdncmVlbjogWzAsIDI1MCwgMTU0XSwKICAgICAgICAgICAgICAgIG1lZGl1bXR1cnF1b2lzZTogWzcyLCAyMDksIDIwNF0sCiAgICAgICAgICAgICAgICBtZWRpdW12aW9sZXRyZWQ6IFsxOTksIDIxLCAxMzNdLAogICAgICAgICAgICAgICAgbWlkbmlnaHRibHVlOiBbMjUsIDI1LCAxMTJdLAogICAgICAgICAgICAgICAgbWludGNyZWFtOiBbMjQ1LCAyNTUsIDI1MF0sCiAgICAgICAgICAgICAgICBtaXN0eXJvc2U6IFsyNTUsIDIyOCwgMjI1XSwKICAgICAgICAgICAgICAgIG1vY2Nhc2luOiBbMjU1LCAyMjgsIDE4MV0sCiAgICAgICAgICAgICAgICBuYXZham93aGl0ZTogWzI1NSwgMjIyLCAxNzNdLAogICAgICAgICAgICAgICAgbmF2eTogWzAsIDAsIDEyOF0sCiAgICAgICAgICAgICAgICBvbGRsYWNlOiBbMjUzLCAyNDUsIDIzMF0sCiAgICAgICAgICAgICAgICBvbGl2ZTogWzEyOCwgMTI4LCAwXSwKICAgICAgICAgICAgICAgIG9saXZlZHJhYjogWzEwNywgMTQyLCAzNV0sCiAgICAgICAgICAgICAgICBvcmFuZ2U6IFsyNTUsIDE2NSwgMF0sCiAgICAgICAgICAgICAgICBvcmFuZ2VyZWQ6IFsyNTUsIDY5LCAwXSwKICAgICAgICAgICAgICAgIG9yY2hpZDogWzIxOCwgMTEyLCAyMTRdLAogICAgICAgICAgICAgICAgcGFsZWdvbGRlbnJvZDogWzIzOCwgMjMyLCAxNzBdLAogICAgICAgICAgICAgICAgcGFsZWdyZWVuOiBbMTUyLCAyNTEsIDE1Ml0sCiAgICAgICAgICAgICAgICBwYWxldHVycXVvaXNlOiBbMTc1LCAyMzgsIDIzOF0sCiAgICAgICAgICAgICAgICBwYWxldmlvbGV0cmVkOiBbMjE5LCAxMTIsIDE0N10sCiAgICAgICAgICAgICAgICBwYXBheWF3aGlwOiBbMjU1LCAyMzksIDIxM10sCiAgICAgICAgICAgICAgICBwZWFjaHB1ZmY6IFsyNTUsIDIxOCwgMTg1XSwKICAgICAgICAgICAgICAgIHBlcnU6IFsyMDUsIDEzMywgNjNdLAogICAgICAgICAgICAgICAgcGluazogWzI1NSwgMTkyLCAyMDNdLAogICAgICAgICAgICAgICAgcGx1bTogWzIyMSwgMTYwLCAyMjFdLAogICAgICAgICAgICAgICAgcG93ZGVyYmx1ZTogWzE3NiwgMjI0LCAyMzBdLAogICAgICAgICAgICAgICAgcHVycGxlOiBbMTI4LCAwLCAxMjhdLAogICAgICAgICAgICAgICAgcmViZWNjYXB1cnBsZTogWzEwMiwgNTEsIDE1M10sCiAgICAgICAgICAgICAgICByZWQ6IFsyNTUsIDAsIDBdLAogICAgICAgICAgICAgICAgcm9zeWJyb3duOiBbMTg4LCAxNDMsIDE0M10sCiAgICAgICAgICAgICAgICByb3lhbGJsdWU6IFs2NSwgMTA1LCAyMjVdLAogICAgICAgICAgICAgICAgc2FkZGxlYnJvd246IFsxMzksIDY5LCAxOV0sCiAgICAgICAgICAgICAgICBzYWxtb246IFsyNTAsIDEyOCwgMTE0XSwKICAgICAgICAgICAgICAgIHNhbmR5YnJvd246IFsyNDQsIDE2NCwgOTZdLAogICAgICAgICAgICAgICAgc2VhZ3JlZW46IFs0NiwgMTM5LCA4N10sCiAgICAgICAgICAgICAgICBzZWFzaGVsbDogWzI1NSwgMjQ1LCAyMzhdLAogICAgICAgICAgICAgICAgc2llbm5hOiBbMTYwLCA4MiwgNDVdLAogICAgICAgICAgICAgICAgc2lsdmVyOiBbMTkyLCAxOTIsIDE5Ml0sCiAgICAgICAgICAgICAgICBza3libHVlOiBbMTM1LCAyMDYsIDIzNV0sCiAgICAgICAgICAgICAgICBzbGF0ZWJsdWU6IFsxMDYsIDkwLCAyMDVdLAogICAgICAgICAgICAgICAgc2xhdGVncmF5OiBbMTEyLCAxMjgsIDE0NF0sCiAgICAgICAgICAgICAgICBzbGF0ZWdyZXk6IFsxMTIsIDEyOCwgMTQ0XSwKICAgICAgICAgICAgICAgIHNub3c6IFsyNTUsIDI1MCwgMjUwXSwKICAgICAgICAgICAgICAgIHNwcmluZ2dyZWVuOiBbMCwgMjU1LCAxMjddLAogICAgICAgICAgICAgICAgc3RlZWxibHVlOiBbNzAsIDEzMCwgMTgwXSwKICAgICAgICAgICAgICAgIHRhbjogWzIxMCwgMTgwLCAxNDBdLAogICAgICAgICAgICAgICAgdGVhbDogWzAsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgIHRoaXN0bGU6IFsyMTYsIDE5MSwgMjE2XSwKICAgICAgICAgICAgICAgIHRvbWF0bzogWzI1NSwgOTksIDcxXSwKICAgICAgICAgICAgICAgIHR1cnF1b2lzZTogWzY0LCAyMjQsIDIwOF0sCiAgICAgICAgICAgICAgICB2aW9sZXQ6IFsyMzgsIDEzMCwgMjM4XSwKICAgICAgICAgICAgICAgIHdoZWF0OiBbMjQ1LCAyMjIsIDE3OV0sCiAgICAgICAgICAgICAgICB3aGl0ZTogWzI1NSwgMjU1LCAyNTVdLAogICAgICAgICAgICAgICAgd2hpdGVzbW9rZTogWzI0NSwgMjQ1LCAyNDVdLAogICAgICAgICAgICAgICAgeWVsbG93OiBbMjU1LCAyNTUsIDBdLAogICAgICAgICAgICAgICAgeWVsbG93Z3JlZW46IFsxNTQsIDIwNSwgNTBdCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgNzogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgdmFyIGkgPSB0KDI4KSgpOwogICAgICAgICAgICB0KDI2KShpKSwgdCg0MCkoaSksIHQoMjIpKGkpLCB0KDI1KShpKSwgdCgzMCkoaSksIHQoMjEpKGkpLCB0KDIzKShpKSwgdCgyNCkoaSksIHQoMjkpKGkpLCB0KDMyKShpKSwgdCgzMykoaSksIHQoMzEpKGkpLCB0KDI3KShpKSwgdCgzNCkoaSksIHQoMzUpKGkpLCB0KDM2KShpKSwgdCgzNykoaSksIHQoMzgpKGkpLCB0KDQ2KShpKSwgdCg0NCkoaSksIHQoNDUpKGkpLCB0KDQ3KShpKSwgdCg0OCkoaSksIHQoNDkpKGkpLCB0KDE1KShpKSwgdCgxNikoaSksIHQoMTcpKGkpLCB0KDE4KShpKSwgdCgxOSkoaSksIHQoMjApKGkpLCB0KDgpKGkpLCB0KDkpKGkpLCB0KDEwKShpKSwgdCgxMSkoaSksIHQoMTIpKGkpLCB0KDEzKShpKSwgdCgxNCkoaSk7CiAgICAgICAgICAgIHZhciBhID0gW107CiAgICAgICAgICAgIGEucHVzaCh0KDQxKShpKSwgdCg0MikoaSksIHQoNDMpKGkpKSwgaS5wbHVnaW5zLnJlZ2lzdGVyKGEpLCBlLmV4cG9ydHMgPSBpLCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmICh3aW5kb3cuQ2hhcnQgPSBpKQogICAgICAgIH0sIHsKICAgICAgICAgICAgMTA6IDEwLAogICAgICAgICAgICAxMTogMTEsCiAgICAgICAgICAgIDEyOiAxMiwKICAgICAgICAgICAgMTM6IDEzLAogICAgICAgICAgICAxNDogMTQsCiAgICAgICAgICAgIDE1OiAxNSwKICAgICAgICAgICAgMTY6IDE2LAogICAgICAgICAgICAxNzogMTcsCiAgICAgICAgICAgIDE4OiAxOCwKICAgICAgICAgICAgMTk6IDE5LAogICAgICAgICAgICAyMDogMjAsCiAgICAgICAgICAgIDIxOiAyMSwKICAgICAgICAgICAgMjI6IDIyLAogICAgICAgICAgICAyMzogMjMsCiAgICAgICAgICAgIDI0OiAyNCwKICAgICAgICAgICAgMjU6IDI1LAogICAgICAgICAgICAyNjogMjYsCiAgICAgICAgICAgIDI3OiAyNywKICAgICAgICAgICAgMjg6IDI4LAogICAgICAgICAgICAyOTogMjksCiAgICAgICAgICAgIDMwOiAzMCwKICAgICAgICAgICAgMzE6IDMxLAogICAgICAgICAgICAzMjogMzIsCiAgICAgICAgICAgIDMzOiAzMywKICAgICAgICAgICAgMzQ6IDM0LAogICAgICAgICAgICAzNTogMzUsCiAgICAgICAgICAgIDM2OiAzNiwKICAgICAgICAgICAgMzc6IDM3LAogICAgICAgICAgICAzODogMzgsCiAgICAgICAgICAgIDQwOiA0MCwKICAgICAgICAgICAgNDE6IDQxLAogICAgICAgICAgICA0MjogNDIsCiAgICAgICAgICAgIDQzOiA0MywKICAgICAgICAgICAgNDQ6IDQ0LAogICAgICAgICAgICA0NTogNDUsCiAgICAgICAgICAgIDQ2OiA0NiwKICAgICAgICAgICAgNDc6IDQ3LAogICAgICAgICAgICA0ODogNDgsCiAgICAgICAgICAgIDQ5OiA0OSwKICAgICAgICAgICAgODogOCwKICAgICAgICAgICAgOTogOQogICAgICAgIH1dLAogICAgICAgIDg6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdC5CYXIgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHlwZSA9ICJiYXIiLCBuZXcgdChlLCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDk6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdC5CdWJibGUgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHlwZSA9ICJidWJibGUiLCBuZXcgdChlLCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDEwOiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHQuRG91Z2hudXQgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHlwZSA9ICJkb3VnaG51dCIsIG5ldyB0KGUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMTE6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdC5MaW5lID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnR5cGUgPSAibGluZSIsIG5ldyB0KGUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMTI6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdC5Qb2xhckFyZWEgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHlwZSA9ICJwb2xhckFyZWEiLCBuZXcgdChlLCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDEzOiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHQuUmFkYXIgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHlwZSA9ICJyYWRhciIsIG5ldyB0KGUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMTQ6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInNpbmdsZSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNjYWxlczogewogICAgICAgICAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICJ4LWF4aXMtMSIKICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHlBeGVzOiBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICJ5LWF4aXMtMSIKICAgICAgICAgICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIoIiArIHQueExhYmVsICsgIiwgIiArIHQueUxhYmVsICsgIikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgdC5kZWZhdWx0cy5zY2F0dGVyID0gZSwgdC5jb250cm9sbGVycy5zY2F0dGVyID0gdC5jb250cm9sbGVycy5saW5lLCB0LlNjYXR0ZXIgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHlwZSA9ICJzY2F0dGVyIiwgbmV3IHQoZSwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAxNTogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHQuaGVscGVyczsKICAgICAgICAgICAgICAgIHQuZGVmYXVsdHMuYmFyID0gewogICAgICAgICAgICAgICAgICAgIGhvdmVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJsYWJlbCIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNjYWxlczogewogICAgICAgICAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJjYXRlZ29yeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVBlcmNlbnRhZ2U6IC44LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyUGVyY2VudGFnZTogLjksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkTGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRHcmlkTGluZXM6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICB5QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJsaW5lYXIiCiAgICAgICAgICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdC5jb250cm9sbGVycy5iYXIgPSB0LkRhdGFzZXRDb250cm9sbGVyLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgZGF0YUVsZW1lbnRUeXBlOiB0LmVsZW1lbnRzLlJlY3RhbmdsZSwKICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB0LkRhdGFzZXRDb250cm9sbGVyLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KG4sIGFyZ3VtZW50cyksIGUgPSBuLmdldE1ldGEoKSwgZS5zdGFjayA9IG4uZ2V0RGF0YXNldCgpLnN0YWNrLCBlLmJhciA9ICEwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIG4sIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZ2V0TWV0YSgpLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaS5fcnVsZXIgPSBpLmdldFJ1bGVyKCksIGUgPSAwLCBuID0gYS5sZW5ndGg7IGUgPCBuOyArK2UpIGkudXBkYXRlRWxlbWVudChhW2VdLCBlLCB0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudDogZnVuY3Rpb24odCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYS5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhLmdldERhdGFzZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmN1c3RvbSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBvLm9wdGlvbnMuZWxlbWVudHMucmVjdGFuZ2xlOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll94U2NhbGUgPSBhLmdldFNjYWxlRm9ySWQoci54QXhpc0lEKSwgdC5feVNjYWxlID0gYS5nZXRTY2FsZUZvcklkKHIueUF4aXNJRCksIHQuX2RhdGFzZXRJbmRleCA9IGEuaW5kZXgsIHQuX2luZGV4ID0gbiwgdC5fbW9kZWwgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0TGFiZWw6IGwubGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogby5kYXRhLmxhYmVsc1tuXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclNraXBwZWQ6IHMuYm9yZGVyU2tpcHBlZCA/IHMuYm9yZGVyU2tpcHBlZCA6IHUuYm9yZGVyU2tpcHBlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcy5iYWNrZ3JvdW5kQ29sb3IgPyBzLmJhY2tncm91bmRDb2xvciA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGwuYmFja2dyb3VuZENvbG9yLCBuLCB1LmJhY2tncm91bmRDb2xvciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogcy5ib3JkZXJDb2xvciA/IHMuYm9yZGVyQ29sb3IgOiBlLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChsLmJvcmRlckNvbG9yLCBuLCB1LmJvcmRlckNvbG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiBzLmJvcmRlcldpZHRoID8gcy5ib3JkZXJXaWR0aCA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGwuYm9yZGVyV2lkdGgsIG4sIHUuYm9yZGVyV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEudXBkYXRlRWxlbWVudEdlb21ldHJ5KHQsIG4sIGkpLCB0LnBpdm90KCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRHZW9tZXRyeTogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5fbW9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5nZXRWYWx1ZVNjYWxlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gby5nZXRCYXNlUGl4ZWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBvLmlzSG9yaXpvbnRhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkuX3J1bGVyIHx8IGkuZ2V0UnVsZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpLmNhbGN1bGF0ZUJhclZhbHVlUGl4ZWxzKGkuaW5kZXgsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGkuY2FsY3VsYXRlQmFySW5kZXhQaXhlbHMoaS5pbmRleCwgZSwgcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuaG9yaXpvbnRhbCA9IGwsIGEuYmFzZSA9IG4gPyByIDogdS5iYXNlLCBhLnggPSBsID8gbiA/IHIgOiB1LmhlYWQgOiBkLmNlbnRlciwgYS55ID0gbCA/IGQuY2VudGVyIDogbiA/IHIgOiB1LmhlYWQsIGEuaGVpZ2h0ID0gbCA/IGQuc2l6ZSA6IHZvaWQgMCwgYS53aWR0aCA9IGwgPyB2b2lkIDAgOiBkLnNpemUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFZhbHVlU2NhbGVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1ldGEoKS55QXhpc0lECiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRJbmRleFNjYWxlSWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXRhKCkueEF4aXNJRAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWVTY2FsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNjYWxlRm9ySWQodGhpcy5nZXRWYWx1ZVNjYWxlSWQoKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEluZGV4U2NhbGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTY2FsZUZvcklkKHRoaXMuZ2V0SW5kZXhTY2FsZUlkKCkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRTdGFja0NvdW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCBuLCBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkuZ2V0SW5kZXhTY2FsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8ub3B0aW9ucy5zdGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHZvaWQgMCA9PT0gdCA/IGEuZGF0YS5kYXRhc2V0cy5sZW5ndGggOiB0ICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IGw7ICsrZSkgbiA9IGEuZ2V0RGF0YXNldE1ldGEoZSksIG4uYmFyICYmIGEuaXNEYXRhc2V0VmlzaWJsZShlKSAmJiAociA9PT0gITEgfHwgciA9PT0gITAgJiYgcy5pbmRleE9mKG4uc3RhY2spID09PSAtMSB8fCB2b2lkIDAgPT09IHIgJiYgKHZvaWQgMCA9PT0gbi5zdGFjayB8fCBzLmluZGV4T2Yobi5zdGFjaykgPT09IC0xKSkgJiYgcy5wdXNoKG4uc3RhY2spOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5sZW5ndGgKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFN0YWNrSW5kZXg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhY2tDb3VudCh0KSAtIDEKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFJ1bGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZ2V0SW5kZXhTY2FsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmdldFN0YWNrQ291bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmlzSG9yaXpvbnRhbCgpID8gbi53aWR0aCA6IG4uaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8gLyBuLnRpY2tzLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByICogaS5jYXRlZ29yeVBlcmNlbnRhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbCAvIGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gcyAqIGkuYmFyUGVyY2VudGFnZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUgPSBNYXRoLm1pbihlLmdldFZhbHVlT3JEZWZhdWx0KGkuYmFyVGhpY2tuZXNzLCB1KSwgZS5nZXRWYWx1ZU9yRGVmYXVsdChpLm1heEJhclRoaWNrbmVzcywgMSAvIDApKSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tDb3VudDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tTaXplOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlTaXplOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlTcGFjaW5nOiByIC0gbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxCYXJTaXplOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyU2l6ZTogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhclNwYWNpbmc6IHMgLSB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IG4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlQmFyVmFsdWVQaXhlbHM6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGksIGEsIG8sIHIsIGwsIHMgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gcy5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcy5nZXRWYWx1ZVNjYWxlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gdS5kYXRhLmRhdGFzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IE51bWJlcihoW3RdLmRhdGFbZV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGMub3B0aW9ucy5zdGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGQuc3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgfHwgdm9pZCAwID09PSBnICYmIHZvaWQgMCAhPT0gcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCB0OyArK24pIGkgPSB1LmdldERhdGFzZXRNZXRhKG4pLCBpLmJhciAmJiBpLnN0YWNrID09PSBwICYmIGkuY29udHJvbGxlci5nZXRWYWx1ZVNjYWxlSWQoKSA9PT0gYy5pZCAmJiB1LmlzRGF0YXNldFZpc2libGUobikgJiYgKGEgPSBOdW1iZXIoaFtuXS5kYXRhW2VdKSwgKGYgPCAwICYmIGEgPCAwIHx8IGYgPj0gMCAmJiBhID4gMCkgJiYgKG0gKz0gYSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA9IGMuZ2V0UGl4ZWxGb3JWYWx1ZShtKSwgciA9IGMuZ2V0UGl4ZWxGb3JWYWx1ZShtICsgZiksIGwgPSAociAtIG8pIC8gMiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiByICsgbCAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlQmFySW5kZXhQaXhlbHM6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4uc2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5jaGFydC5pc0NvbWJvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuZ2V0U3RhY2tJbmRleCh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhLmdldFBpeGVsRm9yVmFsdWUobnVsbCwgZSwgdCwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5iYXJTaXplOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCAtPSBvID8gbi50aWNrU2l6ZSAvIDIgOiAwLCBsICs9IG4uZnVsbEJhclNpemUgKiByLCBsICs9IG4uY2F0ZWdvcnlTcGFjaW5nIC8gMiwgbCArPSBuLmJhclNwYWNpbmcgLyAyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWQ6IGwgKyBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBsICsgcyAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZHJhdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4uZ2V0TWV0YSgpLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlLmNhbnZhcy5jbGlwQXJlYShpLmN0eCwgaS5jaGFydEFyZWEpOyBsIDwgcjsgKytsKSB0ID0gby5kYXRhW2xdLCBudWxsID09PSB0IHx8IHZvaWQgMCA9PT0gdCB8fCBpc05hTih0KSB8fCBhW2xdLmRyYXcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jYW52YXMudW5jbGlwQXJlYShpLmN0eCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldEhvdmVyU3R5bGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbdC5fZGF0YXNldEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Ll9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmN1c3RvbSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0Ll9tb2RlbDsKICAgICAgICAgICAgICAgICAgICAgICAgby5iYWNrZ3JvdW5kQ29sb3IgPSBhLmhvdmVyQmFja2dyb3VuZENvbG9yID8gYS5ob3ZlckJhY2tncm91bmRDb2xvciA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KG4uaG92ZXJCYWNrZ3JvdW5kQ29sb3IsIGksIGUuZ2V0SG92ZXJDb2xvcihvLmJhY2tncm91bmRDb2xvcikpLCBvLmJvcmRlckNvbG9yID0gYS5ob3ZlckJvcmRlckNvbG9yID8gYS5ob3ZlckJvcmRlckNvbG9yIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQobi5ob3ZlckJvcmRlckNvbG9yLCBpLCBlLmdldEhvdmVyQ29sb3Ioby5ib3JkZXJDb2xvcikpLCBvLmJvcmRlcldpZHRoID0gYS5ob3ZlckJvcmRlcldpZHRoID8gYS5ob3ZlckJvcmRlcldpZHRoIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQobi5ob3ZlckJvcmRlcldpZHRoLCBpLCBvLmJvcmRlcldpZHRoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSG92ZXJTdHlsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1t0Ll9kYXRhc2V0SW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuY3VzdG9tIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuX21vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5yZWN0YW5nbGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uYmFja2dyb3VuZENvbG9yID0gYS5iYWNrZ3JvdW5kQ29sb3IgPyBhLmJhY2tncm91bmRDb2xvciA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KG4uYmFja2dyb3VuZENvbG9yLCBpLCByLmJhY2tncm91bmRDb2xvciksIG8uYm9yZGVyQ29sb3IgPSBhLmJvcmRlckNvbG9yID8gYS5ib3JkZXJDb2xvciA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KG4uYm9yZGVyQ29sb3IsIGksIHIuYm9yZGVyQ29sb3IpLCBvLmJvcmRlcldpZHRoID0gYS5ib3JkZXJXaWR0aCA/IGEuYm9yZGVyV2lkdGggOiBlLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChuLmJvcmRlcldpZHRoLCBpLCByLmJvcmRlcldpZHRoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB0LmRlZmF1bHRzLmhvcml6b250YWxCYXIgPSB7CiAgICAgICAgICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogImxhYmVsIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2NhbGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHhBeGVzOiBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImJvdHRvbSIKICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHlBeGVzOiBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJjYXRlZ29yeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVBlcmNlbnRhZ2U6IC44LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyUGVyY2VudGFnZTogLjksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkTGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRHcmlkTGluZXM6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogewogICAgICAgICAgICAgICAgICAgICAgICByZWN0YW5nbGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclNraXBwZWQ6ICJsZWZ0IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0b29sdGlwczogewogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5sZW5ndGggPiAwICYmICh0WzBdLnlMYWJlbCA/IG4gPSB0WzBdLnlMYWJlbCA6IGUubGFiZWxzLmxlbmd0aCA+IDAgJiYgdFswXS5pbmRleCA8IGUubGFiZWxzLmxlbmd0aCAmJiAobiA9IGUubGFiZWxzW3RbMF0uaW5kZXhdKSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5kYXRhc2V0c1t0LmRhdGFzZXRJbmRleF0ubGFiZWwgfHwgIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gKyAiOiAiICsgdC54TGFiZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQuY29udHJvbGxlcnMuaG9yaXpvbnRhbEJhciA9IHQuY29udHJvbGxlcnMuYmFyLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWVTY2FsZUlkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWV0YSgpLnhBeGlzSUQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEluZGV4U2NhbGVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1ldGEoKS55QXhpc0lECiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAxNjogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHQuaGVscGVyczsKICAgICAgICAgICAgICAgIHQuZGVmYXVsdHMuYnViYmxlID0gewogICAgICAgICAgICAgICAgICAgIGhvdmVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJzaW5nbGUiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgeEF4ZXM6IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYm90dG9tIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAieC1heGlzLTAiCiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICB5QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAieS1heGlzLTAiCiAgICAgICAgICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0b29sdGlwczogewogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5kYXRhc2V0c1t0LmRhdGFzZXRJbmRleF0ubGFiZWwgfHwgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmRhdGFzZXRzW3QuZGF0YXNldEluZGV4XS5kYXRhW3QuaW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICsgIjogKCIgKyB0LnhMYWJlbCArICIsICIgKyB0LnlMYWJlbCArICIsICIgKyBpLnIgKyAiKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQuY29udHJvbGxlcnMuYnViYmxlID0gdC5EYXRhc2V0Q29udHJvbGxlci5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIGRhdGFFbGVtZW50VHlwZTogdC5lbGVtZW50cy5Qb2ludCwKICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5lYWNoKGEsIGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udXBkYXRlRWxlbWVudChlLCBpLCB0KQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudDogZnVuY3Rpb24obiwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gby5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gby5nZXRTY2FsZUZvcklkKHIueEF4aXNJRCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gby5nZXRTY2FsZUZvcklkKHIueUF4aXNJRCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gby5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZC5kYXRhW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG8uY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBvLmluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICBlLmV4dGVuZChuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfeFNjYWxlOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3lTY2FsZTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhc2V0SW5kZXg6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5kZXg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW9kZWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBhID8gbC5nZXRQaXhlbEZvckRlY2ltYWwoLjUpIDogbC5nZXRQaXhlbEZvclZhbHVlKCJvYmplY3QiID09IHR5cGVvZiBjID8gYyA6IE5hTiwgaSwgZiwgby5jaGFydC5pc0NvbWJvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBhID8gcy5nZXRCYXNlUGl4ZWwoKSA6IHMuZ2V0UGl4ZWxGb3JWYWx1ZShjLCBpLCBmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpdXM6IGEgPyAwIDogdS5yYWRpdXMgPyB1LnJhZGl1cyA6IG8uZ2V0UmFkaXVzKGMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdFJhZGl1czogdS5oaXRSYWRpdXMgPyB1LmhpdFJhZGl1cyA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGQuaGl0UmFkaXVzLCBpLCBoLmhpdFJhZGl1cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuRGF0YXNldENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUhvdmVyU3R5bGUuY2FsbChvLCBuLCBoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBuLl9tb2RlbDsKICAgICAgICAgICAgICAgICAgICAgICAgZy5za2lwID0gdS5za2lwID8gdS5za2lwIDogaXNOYU4oZy54KSB8fCBpc05hTihnLnkpLCBuLnBpdm90KCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFJhZGl1czogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5yIHx8IHRoaXMuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludC5yYWRpdXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldEhvdmVyU3R5bGU6IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB0LkRhdGFzZXRDb250cm9sbGVyLnByb3RvdHlwZS5zZXRIb3ZlclN0eWxlLmNhbGwoaSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaS5jaGFydC5kYXRhLmRhdGFzZXRzW24uX2RhdGFzZXRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5faW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5fbW9kZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIGwucmFkaXVzID0gci5ob3ZlclJhZGl1cyA/IHIuaG92ZXJSYWRpdXMgOiBlLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChhLmhvdmVyUmFkaXVzLCBvLCBpLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMucG9pbnQuaG92ZXJSYWRpdXMpICsgaS5nZXRSYWRpdXMoYS5kYXRhW29dKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSG92ZXJTdHlsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuRGF0YXNldENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUhvdmVyU3R5bGUuY2FsbChuLCBlLCBuLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMucG9pbnQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4uY2hhcnQuZGF0YS5kYXRhc2V0c1tlLl9kYXRhc2V0SW5kZXhdLmRhdGFbZS5faW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuY3VzdG9tIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuX21vZGVsOwogICAgICAgICAgICAgICAgICAgICAgICBvLnJhZGl1cyA9IGEucmFkaXVzID8gYS5yYWRpdXMgOiBuLmdldFJhZGl1cyhpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMTc6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQuZGVmYXVsdHM7CiAgICAgICAgICAgICAgICBuLmRvdWdobnV0ID0gewogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlUm90YXRlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZVNjYWxlOiAhMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXNwZWN0UmF0aW86IDEsCiAgICAgICAgICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInNpbmdsZSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxlZ2VuZENhbGxiYWNrOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHVzaCgnPHVsIGNsYXNzPSInICsgdC5pZCArICctbGVnZW5kIj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5kYXRhc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmxhYmVsczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBpWzBdLmRhdGEubGVuZ3RoOyArK28pIGUucHVzaCgnPGxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOicgKyBpWzBdLmJhY2tncm91bmRDb2xvcltvXSArICciPjwvc3Bhbj4nKSwgYVtvXSAmJiBlLnB1c2goYVtvXSksIGUucHVzaCgiPC9saT4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucHVzaCgiPC91bD4iKSwgZS5qb2luKCIiKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVMYWJlbHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5sYWJlbHMubGVuZ3RoICYmIG4uZGF0YXNldHMubGVuZ3RoID8gbi5sYWJlbHMubWFwKGZ1bmN0aW9uKGksIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0LmdldERhdGFzZXRNZXRhKDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4uZGF0YXNldHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gby5kYXRhW2FdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwgJiYgbC5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdC5vcHRpb25zLmVsZW1lbnRzLmFyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzLmJhY2tncm91bmRDb2xvciA/IHMuYmFja2dyb3VuZENvbG9yIDogdShyLmJhY2tncm91bmRDb2xvciwgYSwgZC5iYWNrZ3JvdW5kQ29sb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHMuYm9yZGVyQ29sb3IgPyBzLmJvcmRlckNvbG9yIDogdShyLmJvcmRlckNvbG9yLCBhLCBkLmJvcmRlckNvbG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBzLmJvcmRlcldpZHRoID8gcy5ib3JkZXJXaWR0aCA6IHUoci5ib3JkZXJXaWR0aCwgYSwgZC5ib3JkZXJXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGU6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW46IGlzTmFOKHIuZGF0YVthXSkgfHwgby5kYXRhW2FdLmhpZGRlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCBhLCBvID0gZS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5jaGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDAsIGkgPSAoci5kYXRhLmRhdGFzZXRzIHx8IFtdKS5sZW5ndGg7IG4gPCBpOyArK24pIGEgPSByLmdldERhdGFzZXRNZXRhKG4pLCBhLmRhdGFbb10gJiYgKGEuZGF0YVtvXS5oaWRkZW4gPSAhYS5kYXRhW29dLmhpZGRlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGN1dG91dFBlcmNlbnRhZ2U6IDUwLAogICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBNYXRoLlBJICogLS41LAogICAgICAgICAgICAgICAgICAgIGNpcmN1bWZlcmVuY2U6IDIgKiBNYXRoLlBJLAogICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLmxhYmVsc1t0LmluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICI6ICIgKyBuLmRhdGFzZXRzW3QuZGF0YXNldEluZGV4XS5kYXRhW3QuaW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmlzQXJyYXkoaSkgPyAoaSA9IGkuc2xpY2UoKSwgaVswXSArPSBhKSA6IGkgKz0gYSwgaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgbi5waWUgPSBlLmNsb25lKG4uZG91Z2hudXQpLCBlLmV4dGVuZChuLnBpZSwgewogICAgICAgICAgICAgICAgICAgIGN1dG91dFBlcmNlbnRhZ2U6IDAKICAgICAgICAgICAgICAgIH0pLCB0LmNvbnRyb2xsZXJzLmRvdWdobnV0ID0gdC5jb250cm9sbGVycy5waWUgPSB0LkRhdGFzZXRDb250cm9sbGVyLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgZGF0YUVsZW1lbnRUeXBlOiB0LmVsZW1lbnRzLkFyYywKICAgICAgICAgICAgICAgICAgICBsaW5rU2NhbGVzOiBlLm5vb3AsCiAgICAgICAgICAgICAgICAgICAgZ2V0UmluZ0luZGV4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwLCBuID0gMDsgbiA8IHQ7ICsrbikgdGhpcy5jaGFydC5pc0RhdGFzZXRWaXNpYmxlKG4pICYmICsrZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmNoYXJ0QXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gby5lbGVtZW50cy5hcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5yaWdodCAtIGEubGVmdCAtIHIuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYS5ib3R0b20gLSBhLnRvcCAtIHIuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gTWF0aC5taW4obCwgcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBvLmN1dG91dFBlcmNlbnRhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gby5jaXJjdW1mZXJlbmNlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA8IDIgKiBNYXRoLlBJKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IG8ucm90YXRpb24gJSAoMiAqIE1hdGguUEkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyArPSAyICogTWF0aC5QSSAqIChnID49IE1hdGguUEkgPyAtMSA6IGcgPCAtTWF0aC5QSSA/IDEgOiAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gZyArIGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5jb3MoZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IE1hdGguc2luKGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBNYXRoLmNvcyhwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogTWF0aC5zaW4ocCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBnIDw9IDAgJiYgMCA8PSBwIHx8IGcgPD0gMiAqIE1hdGguUEkgJiYgMiAqIE1hdGguUEkgPD0gcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gZyA8PSAuNSAqIE1hdGguUEkgJiYgLjUgKiBNYXRoLlBJIDw9IHAgfHwgZyA8PSAyLjUgKiBNYXRoLlBJICYmIDIuNSAqIE1hdGguUEkgPD0gcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gZyA8PSAtTWF0aC5QSSAmJiAtTWF0aC5QSSA8PSBwIHx8IGcgPD0gTWF0aC5QSSAmJiBNYXRoLlBJIDw9IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGcgPD0gLjUgKiAtTWF0aC5QSSAmJiAuNSAqIC1NYXRoLlBJIDw9IHAgfHwgZyA8PSAxLjUgKiBNYXRoLlBJICYmIDEuNSAqIE1hdGguUEkgPD0gcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gaCAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB5ID8gLTEgOiBNYXRoLm1pbihtLnggKiAobS54IDwgMCA/IDEgOiB3KSwgdi54ICogKHYueCA8IDAgPyAxIDogdykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBrID8gLTEgOiBNYXRoLm1pbihtLnkgKiAobS55IDwgMCA/IDEgOiB3KSwgdi55ICogKHYueSA8IDAgPyAxIDogdykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBiID8gMSA6IE1hdGgubWF4KG0ueCAqIChtLnggPiAwID8gMSA6IHcpLCB2LnggKiAodi54ID4gMCA/IDEgOiB3KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHggPyAxIDogTWF0aC5tYXgobS55ICogKG0ueSA+IDAgPyAxIDogdyksIHYueSAqICh2LnkgPiAwID8gMSA6IHcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IC41ICogKFMueCAtIE0ueCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLjUgKiAoUy55IC0gTS55KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gTWF0aC5taW4obCAvIEMud2lkdGgsIHMgLyBDLmhlaWdodCksIGQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogKFMueCArIE0ueCkgKiAtLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogKFMueSArIE0ueSkgKiAtLjUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpLmJvcmRlcldpZHRoID0gbi5nZXRNYXhCb3JkZXJXaWR0aChjLmRhdGEpLCBpLm91dGVyUmFkaXVzID0gTWF0aC5tYXgoKHUgLSBpLmJvcmRlcldpZHRoKSAvIDIsIDApLCBpLmlubmVyUmFkaXVzID0gTWF0aC5tYXgoaCA/IGkub3V0ZXJSYWRpdXMgLyAxMDAgKiBoIDogMCwgMCksIGkucmFkaXVzTGVuZ3RoID0gKGkub3V0ZXJSYWRpdXMgLSBpLmlubmVyUmFkaXVzKSAvIGkuZ2V0VmlzaWJsZURhdGFzZXRDb3VudCgpLCBpLm9mZnNldFggPSBkLnggKiBpLm91dGVyUmFkaXVzLCBpLm9mZnNldFkgPSBkLnkgKiBpLm91dGVyUmFkaXVzLCBjLnRvdGFsID0gbi5jYWxjdWxhdGVUb3RhbCgpLCBuLm91dGVyUmFkaXVzID0gaS5vdXRlclJhZGl1cyAtIGkucmFkaXVzTGVuZ3RoICogbi5nZXRSaW5nSW5kZXgobi5pbmRleCksIG4uaW5uZXJSYWRpdXMgPSBNYXRoLm1heChuLm91dGVyUmFkaXVzIC0gaS5yYWRpdXNMZW5ndGgsIDApLCBlLmVhY2goYy5kYXRhLCBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnVwZGF0ZUVsZW1lbnQoZSwgaSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnQ6IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gby5jaGFydEFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gby5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwuYW5pbWF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IChyLmxlZnQgKyByLnJpZ2h0KSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gKHIudG9wICsgci5ib3R0b20pIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsLnJvdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGwucm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYS5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gaSAmJiBzLmFuaW1hdGVSb3RhdGUgPyAwIDogdC5oaWRkZW4gPyAwIDogYS5jYWxjdWxhdGVDaXJjdW1mZXJlbmNlKGYuZGF0YVtuXSkgKiAobC5jaXJjdW1mZXJlbmNlIC8gKDIgKiBNYXRoLlBJKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gaSAmJiBzLmFuaW1hdGVTY2FsZSA/IDAgOiBhLmlubmVyUmFkaXVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGkgJiYgcy5hbmltYXRlU2NhbGUgPyAwIDogYS5vdXRlclJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBlLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdDsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHRlbmQodCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFzZXRJbmRleDogYS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbmRleDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tb2RlbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHUgKyBvLm9mZnNldFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZCArIG8ub2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEFuZ2xlOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcmN1bWZlcmVuY2U6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJSYWRpdXM6IG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJSYWRpdXM6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHYoZi5sYWJlbCwgbiwgby5kYXRhLmxhYmVsc1tuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdC5fbW9kZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlSG92ZXJTdHlsZSh0KSwgaSAmJiBzLmFuaW1hdGVSb3RhdGUgfHwgKDAgPT09IG4gPyBiLnN0YXJ0QW5nbGUgPSBsLnJvdGF0aW9uIDogYi5zdGFydEFuZ2xlID0gYS5nZXRNZXRhKCkuZGF0YVtuIC0gMV0uX21vZGVsLmVuZEFuZ2xlLCBiLmVuZEFuZ2xlID0gYi5zdGFydEFuZ2xlICsgYi5jaXJjdW1mZXJlbmNlKSwgdC5waXZvdCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZW1vdmVIb3ZlclN0eWxlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuRGF0YXNldENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUhvdmVyU3R5bGUuY2FsbCh0aGlzLCBlLCB0aGlzLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMuYXJjKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlVG90YWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IHRoaXMuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmVhY2goaS5kYXRhLCBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbi5kYXRhW2ldLCBpc05hTih0KSB8fCBlLmhpZGRlbiB8fCAoYSArPSBNYXRoLmFicyh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZUNpcmN1bWZlcmVuY2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldE1ldGEoKS50b3RhbDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPiAwICYmICFpc05hTih0KSA/IDIgKiBNYXRoLlBJICogKHQgLyBlKSA6IDAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldE1heEJvcmRlcldpZHRoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUsIG4sIGkgPSAwLCBhID0gdGhpcy5pbmRleCwgbyA9IHQubGVuZ3RoLCByID0gMDsgciA8IG87IHIrKykgZSA9IHRbcl0uX21vZGVsID8gdFtyXS5fbW9kZWwuYm9yZGVyV2lkdGggOiAwLCBuID0gdFtyXS5fY2hhcnQgPyB0W3JdLl9jaGFydC5jb25maWcuZGF0YS5kYXRhc2V0c1thXS5ob3ZlckJvcmRlcldpZHRoIDogMCwgaSA9IGUgPiBpID8gZSA6IGksIGkgPSBuID4gaSA/IG4gOiBpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMTg6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZSh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uZ2V0VmFsdWVPckRlZmF1bHQodC5zaG93TGluZSwgZS5zaG93TGluZXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbiA9IHQuaGVscGVyczsKICAgICAgICAgICAgICAgIHQuZGVmYXVsdHMubGluZSA9IHsKICAgICAgICAgICAgICAgICAgICBzaG93TGluZXM6ICEwLAogICAgICAgICAgICAgICAgICAgIHNwYW5HYXBzOiAhMSwKICAgICAgICAgICAgICAgICAgICBob3ZlcjogewogICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAibGFiZWwiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgeEF4ZXM6IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiY2F0ZWdvcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICJ4LWF4aXMtMCIKICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHlBeGVzOiBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogInktYXhpcy0wIgogICAgICAgICAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQuY29udHJvbGxlcnMubGluZSA9IHQuRGF0YXNldENvbnRyb2xsZXIuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICBkYXRhc2V0RWxlbWVudFR5cGU6IHQuZWxlbWVudHMuTGluZSwKICAgICAgICAgICAgICAgICAgICBkYXRhRWxlbWVudFR5cGU6IHQuZWxlbWVudHMuUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBhLCBvLCByID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsLmRhdGFzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC5kYXRhIHx8IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHIuY2hhcnQub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBkLmVsZW1lbnRzLmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gci5nZXRTY2FsZUZvcklkKGwueUF4aXNJRCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gci5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZShmLCBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnICYmIChvID0gcy5jdXN0b20gfHwge30sIHZvaWQgMCAhPT0gZi50ZW5zaW9uICYmIHZvaWQgMCA9PT0gZi5saW5lVGVuc2lvbiAmJiAoZi5saW5lVGVuc2lvbiA9IGYudGVuc2lvbiksIHMuX3NjYWxlID0gaCwgcy5fZGF0YXNldEluZGV4ID0gci5pbmRleCwgcy5fY2hpbGRyZW4gPSB1LCBzLl9tb2RlbCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuR2FwczogZi5zcGFuR2FwcyA/IGYuc3BhbkdhcHMgOiBkLnNwYW5HYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb246IG8udGVuc2lvbiA/IG8udGVuc2lvbiA6IG4uZ2V0VmFsdWVPckRlZmF1bHQoZi5saW5lVGVuc2lvbiwgYy50ZW5zaW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IG8uYmFja2dyb3VuZENvbG9yID8gby5iYWNrZ3JvdW5kQ29sb3IgOiBmLmJhY2tncm91bmRDb2xvciB8fCBjLmJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogby5ib3JkZXJXaWR0aCA/IG8uYm9yZGVyV2lkdGggOiBmLmJvcmRlcldpZHRoIHx8IGMuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IG8uYm9yZGVyQ29sb3IgPyBvLmJvcmRlckNvbG9yIDogZi5ib3JkZXJDb2xvciB8fCBjLmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNhcFN0eWxlOiBvLmJvcmRlckNhcFN0eWxlID8gby5ib3JkZXJDYXBTdHlsZSA6IGYuYm9yZGVyQ2FwU3R5bGUgfHwgYy5ib3JkZXJDYXBTdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJEYXNoOiBvLmJvcmRlckRhc2ggPyBvLmJvcmRlckRhc2ggOiBmLmJvcmRlckRhc2ggfHwgYy5ib3JkZXJEYXNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckRhc2hPZmZzZXQ6IG8uYm9yZGVyRGFzaE9mZnNldCA/IG8uYm9yZGVyRGFzaE9mZnNldCA6IGYuYm9yZGVyRGFzaE9mZnNldCB8fCBjLmJvcmRlckRhc2hPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVySm9pblN0eWxlOiBvLmJvcmRlckpvaW5TdHlsZSA/IG8uYm9yZGVySm9pblN0eWxlIDogZi5ib3JkZXJKb2luU3R5bGUgfHwgYy5ib3JkZXJKb2luU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogby5maWxsID8gby5maWxsIDogdm9pZCAwICE9PSBmLmZpbGwgPyBmLmZpbGwgOiBjLmZpbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHBlZExpbmU6IG8uc3RlcHBlZExpbmUgPyBvLnN0ZXBwZWRMaW5lIDogbi5nZXRWYWx1ZU9yRGVmYXVsdChmLnN0ZXBwZWRMaW5lLCBjLnN0ZXBwZWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1YmljSW50ZXJwb2xhdGlvbk1vZGU6IG8uY3ViaWNJbnRlcnBvbGF0aW9uTW9kZSA/IG8uY3ViaWNJbnRlcnBvbGF0aW9uTW9kZSA6IG4uZ2V0VmFsdWVPckRlZmF1bHQoZi5jdWJpY0ludGVycG9sYXRpb25Nb2RlLCBjLmN1YmljSW50ZXJwb2xhdGlvbk1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzLnBpdm90KCkpLCBpID0gMCwgYSA9IHUubGVuZ3RoOyBpIDwgYTsgKytpKSByLnVwZGF0ZUVsZW1lbnQodVtpXSwgaSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyAmJiAwICE9PSBzLl9tb2RlbC50ZW5zaW9uICYmIHIudXBkYXRlQmV6aWVyQ29udHJvbFBvaW50cygpLCBpID0gMCwgYSA9IHUubGVuZ3RoOyBpIDwgYTsgKytpKSB1W2ldLnBpdm90KCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFBvaW50QmFja2dyb3VuZENvbG9yOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5jaGFydC5vcHRpb25zLmVsZW1lbnRzLnBvaW50LmJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmdldERhdGFzZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmN1c3RvbSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uYmFja2dyb3VuZENvbG9yID8gaSA9IG8uYmFja2dyb3VuZENvbG9yIDogYS5wb2ludEJhY2tncm91bmRDb2xvciA/IGkgPSBuLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChhLnBvaW50QmFja2dyb3VuZENvbG9yLCBlLCBpKSA6IGEuYmFja2dyb3VuZENvbG9yICYmIChpID0gYS5iYWNrZ3JvdW5kQ29sb3IpLCBpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRQb2ludEJvcmRlckNvbG9yOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5jaGFydC5vcHRpb25zLmVsZW1lbnRzLnBvaW50LmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuY3VzdG9tIHx8IHt9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5ib3JkZXJDb2xvciA/IGkgPSBvLmJvcmRlckNvbG9yIDogYS5wb2ludEJvcmRlckNvbG9yID8gaSA9IG4uZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGEucG9pbnRCb3JkZXJDb2xvciwgZSwgaSkgOiBhLmJvcmRlckNvbG9yICYmIChpID0gYS5ib3JkZXJDb2xvciksIGkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFBvaW50Qm9yZGVyV2lkdGg6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMucG9pbnQuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5jdXN0b20gfHwge307CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc05hTihvLmJvcmRlcldpZHRoKSA/IGlzTmFOKGEucG9pbnRCb3JkZXJXaWR0aCkgPyBpc05hTihhLmJvcmRlcldpZHRoKSB8fCAoaSA9IGEuYm9yZGVyV2lkdGgpIDogaSA9IG4uZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGEucG9pbnRCb3JkZXJXaWR0aCwgZSwgaSkgOiBpID0gby5ib3JkZXJXaWR0aCwgaQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudDogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSwgbywgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gci5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gci5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gci5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB1LmRhdGFbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gci5nZXRTY2FsZUZvcklkKGwueUF4aXNJRCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gci5nZXRTY2FsZUZvcklkKGwueEF4aXNJRCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gci5jaGFydC5vcHRpb25zLmVsZW1lbnRzLnBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHIuY2hhcnQuZGF0YS5sYWJlbHMgfHwgW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gMSA9PT0gcC5sZW5ndGggfHwgMSA9PT0gdS5kYXRhLmxlbmd0aCB8fCByLmNoYXJ0LmlzQ29tYm87CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gdS5yYWRpdXMgJiYgdm9pZCAwID09PSB1LnBvaW50UmFkaXVzICYmICh1LnBvaW50UmFkaXVzID0gdS5yYWRpdXMpLCB2b2lkIDAgIT09IHUuaGl0UmFkaXVzICYmIHZvaWQgMCA9PT0gdS5wb2ludEhpdFJhZGl1cyAmJiAodS5wb2ludEhpdFJhZGl1cyA9IHUuaGl0UmFkaXVzKSwgYSA9IGYuZ2V0UGl4ZWxGb3JWYWx1ZSgib2JqZWN0IiA9PSB0eXBlb2YgYyA/IGMgOiBOYU4sIGUsIGQsIG0pLCBvID0gaSA/IGguZ2V0QmFzZVBpeGVsKCkgOiByLmNhbGN1bGF0ZVBvaW50WShjLCBlLCBkKSwgdC5feFNjYWxlID0gZiwgdC5feVNjYWxlID0gaCwgdC5fZGF0YXNldEluZGV4ID0gZCwgdC5faW5kZXggPSBlLCB0Ll9tb2RlbCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogcy5za2lwIHx8IGlzTmFOKGEpIHx8IGlzTmFOKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiBzLnJhZGl1cyB8fCBuLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdCh1LnBvaW50UmFkaXVzLCBlLCBnLnJhZGl1cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFN0eWxlOiBzLnBvaW50U3R5bGUgfHwgbi5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQodS5wb2ludFN0eWxlLCBlLCBnLnBvaW50U3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiByLmdldFBvaW50QmFja2dyb3VuZENvbG9yKHQsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHIuZ2V0UG9pbnRCb3JkZXJDb2xvcih0LCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiByLmdldFBvaW50Qm9yZGVyV2lkdGgodCwgZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uOiBsLmRhdGFzZXQuX21vZGVsID8gbC5kYXRhc2V0Ll9tb2RlbC50ZW5zaW9uIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBwZWRMaW5lOiAhIWwuZGF0YXNldC5fbW9kZWwgJiYgbC5kYXRhc2V0Ll9tb2RlbC5zdGVwcGVkTGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdFJhZGl1czogcy5oaXRSYWRpdXMgfHwgbi5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQodS5wb2ludEhpdFJhZGl1cywgZSwgZy5oaXRSYWRpdXMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVBvaW50WTogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgYSwgbywgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gci5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSByLmdldFNjYWxlRm9ySWQocy55QXhpc0lEKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1Lm9wdGlvbnMuc3RhY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGwuZGF0YS5kYXRhc2V0c1tpXSwgbyA9IGwuZ2V0RGF0YXNldE1ldGEoaSksICJsaW5lIiA9PT0gby50eXBlICYmIG8ueUF4aXNJRCA9PT0gdS5pZCAmJiBsLmlzRGF0YXNldFZpc2libGUoaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBOdW1iZXIodS5nZXRSaWdodFZhbHVlKGEuZGF0YVtlXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoIDwgMCA/IGMgKz0gaCB8fCAwIDogZCArPSBoIHx8IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IE51bWJlcih1LmdldFJpZ2h0VmFsdWUodCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgPCAwID8gdS5nZXRQaXhlbEZvclZhbHVlKGMgKyBmKSA6IHUuZ2V0UGl4ZWxGb3JWYWx1ZShkICsgZikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdS5nZXRQaXhlbEZvclZhbHVlKHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cGRhdGVCZXppZXJDb250cm9sUG9pbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCh0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4odCwgbiksIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIGksIGEsIG8sIHIsIGwgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGwuY2hhcnQuY2hhcnRBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHMuZGF0YSB8fCBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMuZGF0YXNldC5fbW9kZWwuc3BhbkdhcHMgJiYgKGQgPSBkLmZpbHRlcihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0Ll9tb2RlbC5za2lwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksICJtb25vdG9uZSIgPT09IHMuZGF0YXNldC5fbW9kZWwuY3ViaWNJbnRlcnBvbGF0aW9uTW9kZSkgbi5zcGxpbmVDdXJ2ZU1vbm90b25lKGQpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwLCBpID0gZC5sZW5ndGg7IGUgPCBpOyArK2UpIGEgPSBkW2VdLCBvID0gYS5fbW9kZWwsIHIgPSBuLnNwbGluZUN1cnZlKG4ucHJldmlvdXNJdGVtKGQsIGUpLl9tb2RlbCwgbywgbi5uZXh0SXRlbShkLCBlKS5fbW9kZWwsIHMuZGF0YXNldC5fbW9kZWwudGVuc2lvbiksIG8uY29udHJvbFBvaW50UHJldmlvdXNYID0gci5wcmV2aW91cy54LCBvLmNvbnRyb2xQb2ludFByZXZpb3VzWSA9IHIucHJldmlvdXMueSwgby5jb250cm9sUG9pbnROZXh0WCA9IHIubmV4dC54LCBvLmNvbnRyb2xQb2ludE5leHRZID0gci5uZXh0Lnk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMubGluZS5jYXBCZXppZXJQb2ludHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwLCBpID0gZC5sZW5ndGg7IGUgPCBpOyArK2UpIG8gPSBkW2VdLl9tb2RlbCwgby5jb250cm9sUG9pbnRQcmV2aW91c1ggPSB0KG8uY29udHJvbFBvaW50UHJldmlvdXNYLCB1LmxlZnQsIHUucmlnaHQpLCBvLmNvbnRyb2xQb2ludFByZXZpb3VzWSA9IHQoby5jb250cm9sUG9pbnRQcmV2aW91c1ksIHUudG9wLCB1LmJvdHRvbSksIG8uY29udHJvbFBvaW50TmV4dFggPSB0KG8uY29udHJvbFBvaW50TmV4dFgsIHUubGVmdCwgdS5yaWdodCksIG8uY29udHJvbFBvaW50TmV4dFkgPSB0KG8uY29udHJvbFBvaW50TmV4dFksIHUudG9wLCB1LmJvdHRvbSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLmRhdGEgfHwgW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaS5jaGFydEFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gby5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0LmNhbnZhc0hlbHBlcnMuY2xpcEFyZWEoaS5jdHgsIHIpLCBlKG4uZ2V0RGF0YXNldCgpLCBpLm9wdGlvbnMpICYmIGEuZGF0YXNldC5kcmF3KCksIHQuY2FudmFzSGVscGVycy51bmNsaXBBcmVhKGkuY3R4KTsgcyA8IGw7ICsrcykgb1tzXS5kcmF3KHIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXRIb3ZlclN0eWxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW3QuX2RhdGFzZXRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5faW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5fbW9kZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ucmFkaXVzID0gYS5ob3ZlclJhZGl1cyB8fCBuLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChlLnBvaW50SG92ZXJSYWRpdXMsIGksIHRoaXMuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludC5ob3ZlclJhZGl1cyksIG8uYmFja2dyb3VuZENvbG9yID0gYS5ob3ZlckJhY2tncm91bmRDb2xvciB8fCBuLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChlLnBvaW50SG92ZXJCYWNrZ3JvdW5kQ29sb3IsIGksIG4uZ2V0SG92ZXJDb2xvcihvLmJhY2tncm91bmRDb2xvcikpLCBvLmJvcmRlckNvbG9yID0gYS5ob3ZlckJvcmRlckNvbG9yIHx8IG4uZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGUucG9pbnRIb3ZlckJvcmRlckNvbG9yLCBpLCBuLmdldEhvdmVyQ29sb3Ioby5ib3JkZXJDb2xvcikpLCBvLmJvcmRlcldpZHRoID0gYS5ob3ZlckJvcmRlcldpZHRoIHx8IG4uZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGUucG9pbnRIb3ZlckJvcmRlcldpZHRoLCBpLCBvLmJvcmRlcldpZHRoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSG92ZXJTdHlsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5jaGFydC5kYXRhLmRhdGFzZXRzW3QuX2RhdGFzZXRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5faW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdC5fbW9kZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gaS5yYWRpdXMgJiYgdm9pZCAwID09PSBpLnBvaW50UmFkaXVzICYmIChpLnBvaW50UmFkaXVzID0gaS5yYWRpdXMpLCByLnJhZGl1cyA9IG8ucmFkaXVzIHx8IG4uZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGkucG9pbnRSYWRpdXMsIGEsIGUuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5wb2ludC5yYWRpdXMpLCByLmJhY2tncm91bmRDb2xvciA9IGUuZ2V0UG9pbnRCYWNrZ3JvdW5kQ29sb3IodCwgYSksIHIuYm9yZGVyQ29sb3IgPSBlLmdldFBvaW50Qm9yZGVyQ29sb3IodCwgYSksIHIuYm9yZGVyV2lkdGggPSBlLmdldFBvaW50Qm9yZGVyV2lkdGgodCwgYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDE5OiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdC5oZWxwZXJzOwogICAgICAgICAgICAgICAgdC5kZWZhdWx0cy5wb2xhckFyZWEgPSB7CiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInJhZGlhbExpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlTGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRMaW5lczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lyY3VsYXI6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50TGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0aWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5BdFplcm86ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlUm90YXRlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZVNjYWxlOiAhMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZTogLS41ICogTWF0aC5QSSwKICAgICAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbzogMSwKICAgICAgICAgICAgICAgICAgICBsZWdlbmRDYWxsYmFjazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBlLnB1c2goJzx1bCBjbGFzcz0iJyArIHQuaWQgKyAnLWxlZ2VuZCI+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uZGF0YXNldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbi5sYWJlbHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAwOyBvIDwgaVswXS5kYXRhLmxlbmd0aDsgKytvKSBlLnB1c2goJzxsaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonICsgaVswXS5iYWNrZ3JvdW5kQ29sb3Jbb10gKyAnIj48L3NwYW4+JyksIGFbb10gJiYgZS5wdXNoKGFbb10pLCBlLnB1c2goIjwvbGk+Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnB1c2goIjwvdWw+IiksIGUuam9pbigiIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlTGFiZWxzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ubGFiZWxzLmxlbmd0aCAmJiBuLmRhdGFzZXRzLmxlbmd0aCA/IG4ubGFiZWxzLm1hcChmdW5jdGlvbihpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdC5nZXREYXRhc2V0TWV0YSgwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLmRhdGFzZXRzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8uZGF0YVthXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsLmN1c3RvbSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0Lm9wdGlvbnMuZWxlbWVudHMuYXJjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHMuYmFja2dyb3VuZENvbG9yID8gcy5iYWNrZ3JvdW5kQ29sb3IgOiB1KHIuYmFja2dyb3VuZENvbG9yLCBhLCBkLmJhY2tncm91bmRDb2xvciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gcy5ib3JkZXJDb2xvciA/IHMuYm9yZGVyQ29sb3IgOiB1KHIuYm9yZGVyQ29sb3IsIGEsIGQuYm9yZGVyQ29sb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHMuYm9yZGVyV2lkdGggPyBzLmJvcmRlcldpZHRoIDogdShyLmJvcmRlcldpZHRoLCBhLCBkLmJvcmRlcldpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VTdHlsZTogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVXaWR0aDogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbjogaXNOYU4oci5kYXRhW2FdKSB8fCBvLmRhdGFbYV0uaGlkZGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGksIGEsIG8gPSBlLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmNoYXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMCwgaSA9IChyLmRhdGEuZGF0YXNldHMgfHwgW10pLmxlbmd0aDsgbiA8IGk7ICsrbikgYSA9IHIuZ2V0RGF0YXNldE1ldGEobiksIGEuZGF0YVtvXS5oaWRkZW4gPSAhYS5kYXRhW29dLmhpZGRlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIudXBkYXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5sYWJlbHNbdC5pbmRleF0gKyAiOiAiICsgdC55TGFiZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQuY29udHJvbGxlcnMucG9sYXJBcmVhID0gdC5EYXRhc2V0Q29udHJvbGxlci5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIGRhdGFFbGVtZW50VHlwZTogdC5lbGVtZW50cy5BcmMsCiAgICAgICAgICAgICAgICAgICAgbGlua1NjYWxlczogZS5ub29wLAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmNoYXJ0QXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gci5lbGVtZW50cy5hcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5taW4oYS5yaWdodCAtIGEubGVmdCwgYS5ib3R0b20gLSBhLnRvcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkub3V0ZXJSYWRpdXMgPSBNYXRoLm1heCgocyAtIGwuYm9yZGVyV2lkdGggLyAyKSAvIDIsIDApLCBpLmlubmVyUmFkaXVzID0gTWF0aC5tYXgoci5jdXRvdXRQZXJjZW50YWdlID8gaS5vdXRlclJhZGl1cyAvIDEwMCAqIHIuY3V0b3V0UGVyY2VudGFnZSA6IDEsIDApLCBpLnJhZGl1c0xlbmd0aCA9IChpLm91dGVyUmFkaXVzIC0gaS5pbm5lclJhZGl1cykgLyBpLmdldFZpc2libGVEYXRhc2V0Q291bnQoKSwgbi5vdXRlclJhZGl1cyA9IGkub3V0ZXJSYWRpdXMgLSBpLnJhZGl1c0xlbmd0aCAqIG4uaW5kZXgsIG4uaW5uZXJSYWRpdXMgPSBuLm91dGVyUmFkaXVzIC0gaS5yYWRpdXNMZW5ndGgsIG8uY291bnQgPSBuLmNvdW50VmlzaWJsZUVsZW1lbnRzKCksIGUuZWFjaChvLmRhdGEsIGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udXBkYXRlRWxlbWVudChlLCBpLCB0KQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudDogZnVuY3Rpb24odCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gdGhpcywgbyA9IGEuY2hhcnQsIHIgPSBhLmdldERhdGFzZXQoKSwgbCA9IG8ub3B0aW9ucywgcyA9IGwuYW5pbWF0aW9uLCB1ID0gby5zY2FsZSwgZCA9IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0LCBjID0gby5kYXRhLmxhYmVscywgaCA9IGEuY2FsY3VsYXRlQ2lyY3VtZmVyZW5jZShyLmRhdGFbbl0pLCBmID0gdS54Q2VudGVyLCBnID0gdS55Q2VudGVyLCBwID0gMCwgbSA9IGEuZ2V0TWV0YSgpLCB2ID0gMDsgdiA8IG47ICsrdikgaXNOYU4oci5kYXRhW3ZdKSB8fCBtLmRhdGFbdl0uaGlkZGVuIHx8ICsrcDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBsLnN0YXJ0QW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gdC5oaWRkZW4gPyAwIDogdS5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZShyLmRhdGFbbl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGIgKyBoICogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB5ICsgKHQuaGlkZGVuID8gMCA6IGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHMuYW5pbWF0ZVNjYWxlID8gMCA6IHUuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoci5kYXRhW25dKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHRlbmQodCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFzZXRJbmRleDogYS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbmRleDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zY2FsZTogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tb2RlbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lclJhZGl1czogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRlclJhZGl1czogaSA/IHcgOiB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGU6IGkgJiYgcy5hbmltYXRlUm90YXRlID8gYiA6IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQW5nbGU6IGkgJiYgcy5hbmltYXRlUm90YXRlID8gYiA6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGQoYywgbiwgY1tuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEucmVtb3ZlSG92ZXJTdHlsZSh0KSwgdC5waXZvdCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZW1vdmVIb3ZlclN0eWxlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuRGF0YXNldENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUhvdmVyU3R5bGUuY2FsbCh0aGlzLCBlLCB0aGlzLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMuYXJjKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY291bnRWaXNpYmxlRWxlbWVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmVhY2gobi5kYXRhLCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hTih0LmRhdGFbbl0pIHx8IGUuaGlkZGVuIHx8IGkrKwogICAgICAgICAgICAgICAgICAgICAgICB9KSwgaQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlQ2lyY3VtZmVyZW5jZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0TWV0YSgpLmNvdW50OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA+IDAgJiYgIWlzTmFOKHQpID8gMiAqIE1hdGguUEkgLyBlIDogMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMjA6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmhlbHBlcnM7CiAgICAgICAgICAgICAgICB0LmRlZmF1bHRzLnJhZGFyID0gewogICAgICAgICAgICAgICAgICAgIGFzcGVjdFJhdGlvOiAxLAogICAgICAgICAgICAgICAgICAgIHNjYWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJyYWRpYWxMaW5lYXIiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogewogICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uOiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LmNvbnRyb2xsZXJzLnJhZGFyID0gdC5EYXRhc2V0Q29udHJvbGxlci5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIGRhdGFzZXRFbGVtZW50VHlwZTogdC5lbGVtZW50cy5MaW5lLAogICAgICAgICAgICAgICAgICAgIGRhdGFFbGVtZW50VHlwZTogdC5lbGVtZW50cy5Qb2ludCwKICAgICAgICAgICAgICAgICAgICBsaW5rU2NhbGVzOiBlLm5vb3AsCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmRhdGFzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGEuY3VzdG9tIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4uZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4uY2hhcnQub3B0aW9ucy5lbGVtZW50cy5saW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4uY2hhcnQuc2NhbGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gbC50ZW5zaW9uICYmIHZvaWQgMCA9PT0gbC5saW5lVGVuc2lvbiAmJiAobC5saW5lVGVuc2lvbiA9IGwudGVuc2lvbiksIGUuZXh0ZW5kKGkuZGF0YXNldCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFzZXRJbmRleDogbi5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zY2FsZTogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jaGlsZHJlbjogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb29wOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tb2RlbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb246IHIudGVuc2lvbiA/IHIudGVuc2lvbiA6IGUuZ2V0VmFsdWVPckRlZmF1bHQobC5saW5lVGVuc2lvbiwgcy50ZW5zaW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHIuYmFja2dyb3VuZENvbG9yID8gci5iYWNrZ3JvdW5kQ29sb3IgOiBsLmJhY2tncm91bmRDb2xvciB8fCBzLmJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogci5ib3JkZXJXaWR0aCA/IHIuYm9yZGVyV2lkdGggOiBsLmJvcmRlcldpZHRoIHx8IHMuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHIuYm9yZGVyQ29sb3IgPyByLmJvcmRlckNvbG9yIDogbC5ib3JkZXJDb2xvciB8fCBzLmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHIuZmlsbCA/IHIuZmlsbCA6IHZvaWQgMCAhPT0gbC5maWxsID8gbC5maWxsIDogcy5maWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNhcFN0eWxlOiByLmJvcmRlckNhcFN0eWxlID8gci5ib3JkZXJDYXBTdHlsZSA6IGwuYm9yZGVyQ2FwU3R5bGUgfHwgcy5ib3JkZXJDYXBTdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJEYXNoOiByLmJvcmRlckRhc2ggPyByLmJvcmRlckRhc2ggOiBsLmJvcmRlckRhc2ggfHwgcy5ib3JkZXJEYXNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckRhc2hPZmZzZXQ6IHIuYm9yZGVyRGFzaE9mZnNldCA/IHIuYm9yZGVyRGFzaE9mZnNldCA6IGwuYm9yZGVyRGFzaE9mZnNldCB8fCBzLmJvcmRlckRhc2hPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVySm9pblN0eWxlOiByLmJvcmRlckpvaW5TdHlsZSA/IHIuYm9yZGVySm9pblN0eWxlIDogbC5ib3JkZXJKb2luU3R5bGUgfHwgcy5ib3JkZXJKb2luU3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuZGF0YXNldC5waXZvdCgpLCBlLmVhY2gobywgZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi51cGRhdGVFbGVtZW50KGUsIGksIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4pLCBuLnVwZGF0ZUJlemllckNvbnRyb2xQb2ludHMoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudDogZnVuY3Rpb24odCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYS5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5jaGFydC5zY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMucG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUobiwgci5kYXRhW25dKTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSByLnJhZGl1cyAmJiB2b2lkIDAgPT09IHIucG9pbnRSYWRpdXMgJiYgKHIucG9pbnRSYWRpdXMgPSByLnJhZGl1cyksIHZvaWQgMCAhPT0gci5oaXRSYWRpdXMgJiYgdm9pZCAwID09PSByLnBvaW50SGl0UmFkaXVzICYmIChyLnBvaW50SGl0UmFkaXVzID0gci5oaXRSYWRpdXMpLCBlLmV4dGVuZCh0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YXNldEluZGV4OiBhLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luZGV4OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NjYWxlOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX21vZGVsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaSA/IGwueENlbnRlciA6IHUueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpID8gbC55Q2VudGVyIDogdS55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb246IG8udGVuc2lvbiA/IG8udGVuc2lvbiA6IGUuZ2V0VmFsdWVPckRlZmF1bHQoci5saW5lVGVuc2lvbiwgYS5jaGFydC5vcHRpb25zLmVsZW1lbnRzLmxpbmUudGVuc2lvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiBvLnJhZGl1cyA/IG8ucmFkaXVzIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQoci5wb2ludFJhZGl1cywgbiwgcy5yYWRpdXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogby5iYWNrZ3JvdW5kQ29sb3IgPyBvLmJhY2tncm91bmRDb2xvciA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KHIucG9pbnRCYWNrZ3JvdW5kQ29sb3IsIG4sIHMuYmFja2dyb3VuZENvbG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogby5ib3JkZXJDb2xvciA/IG8uYm9yZGVyQ29sb3IgOiBlLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChyLnBvaW50Qm9yZGVyQ29sb3IsIG4sIHMuYm9yZGVyQ29sb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiBvLmJvcmRlcldpZHRoID8gby5ib3JkZXJXaWR0aCA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KHIucG9pbnRCb3JkZXJXaWR0aCwgbiwgcy5ib3JkZXJXaWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRTdHlsZTogby5wb2ludFN0eWxlID8gby5wb2ludFN0eWxlIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQoci5wb2ludFN0eWxlLCBuLCBzLnBvaW50U3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdFJhZGl1czogby5oaXRSYWRpdXMgPyBvLmhpdFJhZGl1cyA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KHIucG9pbnRIaXRSYWRpdXMsIG4sIHMuaGl0UmFkaXVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5fbW9kZWwuc2tpcCA9IG8uc2tpcCA/IG8uc2tpcCA6IGlzTmFOKHQuX21vZGVsLngpIHx8IGlzTmFOKHQuX21vZGVsLnkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cGRhdGVCZXppZXJDb250cm9sUG9pbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmNoYXJ0LmNoYXJ0QXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmdldE1ldGEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5lYWNoKG4uZGF0YSwgZnVuY3Rpb24oaSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBpLl9tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5zcGxpbmVDdXJ2ZShlLnByZXZpb3VzSXRlbShuLmRhdGEsIGEsICEwKS5fbW9kZWwsIG8sIGUubmV4dEl0ZW0obi5kYXRhLCBhLCAhMCkuX21vZGVsLCBvLnRlbnNpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb250cm9sUG9pbnRQcmV2aW91c1ggPSBNYXRoLm1heChNYXRoLm1pbihyLnByZXZpb3VzLngsIHQucmlnaHQpLCB0LmxlZnQpLCBvLmNvbnRyb2xQb2ludFByZXZpb3VzWSA9IE1hdGgubWF4KE1hdGgubWluKHIucHJldmlvdXMueSwgdC5ib3R0b20pLCB0LnRvcCksIG8uY29udHJvbFBvaW50TmV4dFggPSBNYXRoLm1heChNYXRoLm1pbihyLm5leHQueCwgdC5yaWdodCksIHQubGVmdCksIG8uY29udHJvbFBvaW50TmV4dFkgPSBNYXRoLm1heChNYXRoLm1pbihyLm5leHQueSwgdC5ib3R0b20pLCB0LnRvcCksIGkucGl2b3QoKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0SG92ZXJTdHlsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1t0Ll9kYXRhc2V0SW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuY3VzdG9tIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuX21vZGVsOwogICAgICAgICAgICAgICAgICAgICAgICBvLnJhZGl1cyA9IGkuaG92ZXJSYWRpdXMgPyBpLmhvdmVyUmFkaXVzIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQobi5wb2ludEhvdmVyUmFkaXVzLCBhLCB0aGlzLmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMucG9pbnQuaG92ZXJSYWRpdXMpLCBvLmJhY2tncm91bmRDb2xvciA9IGkuaG92ZXJCYWNrZ3JvdW5kQ29sb3IgPyBpLmhvdmVyQmFja2dyb3VuZENvbG9yIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQobi5wb2ludEhvdmVyQmFja2dyb3VuZENvbG9yLCBhLCBlLmdldEhvdmVyQ29sb3Ioby5iYWNrZ3JvdW5kQ29sb3IpKSwgby5ib3JkZXJDb2xvciA9IGkuaG92ZXJCb3JkZXJDb2xvciA/IGkuaG92ZXJCb3JkZXJDb2xvciA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KG4ucG9pbnRIb3ZlckJvcmRlckNvbG9yLCBhLCBlLmdldEhvdmVyQ29sb3Ioby5ib3JkZXJDb2xvcikpLCBvLmJvcmRlcldpZHRoID0gaS5ob3ZlckJvcmRlcldpZHRoID8gaS5ob3ZlckJvcmRlcldpZHRoIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQobi5wb2ludEhvdmVyQm9yZGVyV2lkdGgsIGEsIG8uYm9yZGVyV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZW1vdmVIb3ZlclN0eWxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW3QuX2RhdGFzZXRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5faW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5fbW9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5jaGFydC5vcHRpb25zLmVsZW1lbnRzLnBvaW50OwogICAgICAgICAgICAgICAgICAgICAgICBvLnJhZGl1cyA9IGkucmFkaXVzID8gaS5yYWRpdXMgOiBlLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChuLnBvaW50UmFkaXVzLCBhLCByLnJhZGl1cyksIG8uYmFja2dyb3VuZENvbG9yID0gaS5iYWNrZ3JvdW5kQ29sb3IgPyBpLmJhY2tncm91bmRDb2xvciA6IGUuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KG4ucG9pbnRCYWNrZ3JvdW5kQ29sb3IsIGEsIHIuYmFja2dyb3VuZENvbG9yKSwgby5ib3JkZXJDb2xvciA9IGkuYm9yZGVyQ29sb3IgPyBpLmJvcmRlckNvbG9yIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQobi5wb2ludEJvcmRlckNvbG9yLCBhLCByLmJvcmRlckNvbG9yKSwgby5ib3JkZXJXaWR0aCA9IGkuYm9yZGVyV2lkdGggPyBpLmJvcmRlcldpZHRoIDogZS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQobi5wb2ludEJvcmRlcldpZHRoLCBhLCByLmJvcmRlcldpZHRoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMjE6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmhlbHBlcnM7CiAgICAgICAgICAgICAgICB0LmRlZmF1bHRzLmdsb2JhbC5hbmltYXRpb24gPSB7CiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDFlMywKICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICJlYXNlT3V0UXVhcnQiLAogICAgICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IGUubm9vcCwKICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBlLm5vb3AKICAgICAgICAgICAgICAgIH0sIHQuQW5pbWF0aW9uID0gdC5FbGVtZW50LmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXA6IDAsCiAgICAgICAgICAgICAgICAgICAgbnVtU3RlcHM6IDYwLAogICAgICAgICAgICAgICAgICAgIGVhc2luZzogIiIsCiAgICAgICAgICAgICAgICAgICAgcmVuZGVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgIG9uQW5pbWF0aW9uUHJvZ3Jlc3M6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgb25BbmltYXRpb25Db21wbGV0ZTogbnVsbAogICAgICAgICAgICAgICAgfSksIHQuYW5pbWF0aW9uU2VydmljZSA9IHsKICAgICAgICAgICAgICAgICAgICBmcmFtZUR1cmF0aW9uOiAxNywKICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25zOiBbXSwKICAgICAgICAgICAgICAgICAgICBkcm9wRnJhbWVzOiAwLAogICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgYWRkQW5pbWF0aW9uOiBmdW5jdGlvbih0LCBlLCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhLCBvLCByID0gdGhpcy5hbmltYXRpb25zOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUuY2hhcnQgPSB0LCBpIHx8ICh0LmFuaW1hdGluZyA9ICEwKSwgYSA9IDAsIG8gPSByLmxlbmd0aDsgYSA8IG87ICsrYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyW2FdLmNoYXJ0ID09PSB0KSByZXR1cm4gdm9pZChyW2FdID0gZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIucHVzaChlKSwgMSA9PT0gci5sZW5ndGggJiYgdGhpcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5maW5kSW5kZXgodGhpcy5hbmltYXRpb25zLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jaGFydCA9PT0gdAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgbiAhPT0gLTEgJiYgKHRoaXMuYW5pbWF0aW9ucy5zcGxpY2UobiwgMSksIHQuYW5pbWF0aW5nID0gITEpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IHQucmVxdWVzdCAmJiAodC5yZXF1ZXN0ID0gZS5yZXF1ZXN0QW5pbUZyYW1lLmNhbGwod2luZG93LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVxdWVzdCA9IG51bGwsIHQuc3RhcnREaWdlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHN0YXJ0RGlnZXN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IERhdGUubm93KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgdC5kcm9wRnJhbWVzID4gMSAmJiAobiA9IE1hdGguZmxvb3IodC5kcm9wRnJhbWVzKSwgdC5kcm9wRnJhbWVzID0gdC5kcm9wRnJhbWVzICUgMSksIHQuYWR2YW5jZSgxICsgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5kcm9wRnJhbWVzICs9IChpIC0gZSkgLyB0LmZyYW1lRHVyYXRpb24sIHQuYW5pbWF0aW9ucy5sZW5ndGggPiAwICYmIHQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFkdmFuY2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiwgaSwgYSA9IHRoaXMuYW5pbWF0aW9ucywgbyA9IDA7IG8gPCBhLmxlbmd0aDspIG4gPSBhW29dLCBpID0gbi5jaGFydCwgbi5jdXJyZW50U3RlcCA9IChuLmN1cnJlbnRTdGVwIHx8IDApICsgdCwgbi5jdXJyZW50U3RlcCA9IE1hdGgubWluKG4uY3VycmVudFN0ZXAsIG4ubnVtU3RlcHMpLCBlLmNhbGxiYWNrKG4ucmVuZGVyLCBbaSwgbl0sIGkpLCBlLmNhbGxiYWNrKG4ub25BbmltYXRpb25Qcm9ncmVzcywgW25dLCBpKSwgbi5jdXJyZW50U3RlcCA+PSBuLm51bVN0ZXBzID8gKGUuY2FsbGJhY2sobi5vbkFuaW1hdGlvbkNvbXBsZXRlLCBbbl0sIGkpLCBpLmFuaW1hdGluZyA9ICExLCBhLnNwbGljZShvLCAxKSkgOiArK28KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5BbmltYXRpb24ucHJvdG90eXBlLCAiYW5pbWF0aW9uT2JqZWN0IiwgewogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LkFuaW1hdGlvbi5wcm90b3R5cGUsICJjaGFydEluc3RhbmNlIiwgewogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYXJ0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFydCA9IHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDIyOiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdC5jYW52YXNIZWxwZXJzID0ge307CiAgICAgICAgICAgICAgICBlLmRyYXdQb2ludCA9IGZ1bmN0aW9uKGUsIG4sIGksIGEsIG8pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbCwgcywgdSwgZCwgYzsKICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIG4gJiYgKHIgPSBuLnRvU3RyaW5nKCksICJbb2JqZWN0IEhUTUxJbWFnZUVsZW1lbnRdIiA9PT0gciB8fCAiW29iamVjdCBIVE1MQ2FudmFzRWxlbWVudF0iID09PSByKSkgcmV0dXJuIHZvaWQgZS5kcmF3SW1hZ2UobiwgYSAtIG4ud2lkdGggLyAyLCBvIC0gbi5oZWlnaHQgLyAyLCBuLndpZHRoLCBuLmhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaXNOYU4oaSkgfHwgaSA8PSAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGUuYmVnaW5QYXRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmFyYyhhLCBvLCBpLCAwLCAyICogTWF0aC5QSSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNsb3NlUGF0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5maWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRyaWFuZ2xlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5iZWdpblBhdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMyAqIGkgLyBNYXRoLnNxcnQoMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGwgKiBNYXRoLnNxcnQoMykgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGEgLSBsIC8gMiwgbyArIGQgLyAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhhICsgbCAvIDIsIG8gKyBkIC8gMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oYSwgbyAtIDIgKiBkIC8gMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbG9zZVBhdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmZpbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gMSAvIE1hdGguU1FSVDIgKiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYmVnaW5QYXRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5maWxsUmVjdChhIC0gYywgbyAtIGMsIDIgKiBjLCAyICogYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdHJva2VSZWN0KGEgLSBjLCBvIC0gYywgMiAqIGMsIDIgKiBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJlY3RSb3VuZGVkIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBpIC8gTWF0aC5TUVJUMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEgLSBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbyAtIGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBNYXRoLlNRUlQyICogaTt0LmhlbHBlcnMuZHJhd1JvdW5kZWRSZWN0YW5nbGUoZSwgZiwgZywgcCwgcCwgaSAvIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZmlsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmVjdFJvdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAxIC8gTWF0aC5TUVJUMiAqIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5iZWdpblBhdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVUbyhhIC0gYywgbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oYSwgbyArIGMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGluZVRvKGEgKyBjLCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhhLCBvIC0gYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbG9zZVBhdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmZpbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNyb3NzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5iZWdpblBhdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVUbyhhLCBvICsgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oYSwgbyAtIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGEgLSBpLCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhhICsgaSwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNyb3NzUm90IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5iZWdpblBhdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5jb3MoTWF0aC5QSSAvIDQpICogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gTWF0aC5zaW4oTWF0aC5QSSAvIDQpICogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVUbyhhIC0gcywgbyAtIHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGluZVRvKGEgKyBzLCBvICsgdSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tb3ZlVG8oYSAtIHMsIG8gKyB1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhhICsgcywgbyAtIHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY2xvc2VQYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzdGFyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5iZWdpblBhdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVUbyhhLCBvICsgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oYSwgbyAtIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGEgLSBpLCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhhICsgaSwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguY29zKE1hdGguUEkgLyA0KSAqIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IE1hdGguc2luKE1hdGguUEkgLyA0KSAqIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tb3ZlVG8oYSAtIHMsIG8gLSB1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhhICsgcywgbyArIHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGEgLSBzLCBvICsgdSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oYSArIHMsIG8gLSB1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYmVnaW5QYXRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tb3ZlVG8oYSAtIGksIG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGluZVRvKGEgKyBpLCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZGFzaCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYmVnaW5QYXRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tb3ZlVG8oYSwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oYSArIGksIG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY2xvc2VQYXRoKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlLnN0cm9rZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgZS5jbGlwQXJlYSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB0LnNhdmUoKSwgdC5iZWdpblBhdGgoKSwgdC5yZWN0KGUubGVmdCwgZS50b3AsIGUucmlnaHQgLSBlLmxlZnQsIGUuYm90dG9tIC0gZS50b3ApLCB0LmNsaXAoKQogICAgICAgICAgICAgICAgfSwgZS51bmNsaXBBcmVhID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHQucmVzdG9yZSgpCiAgICAgICAgICAgICAgICB9LCBlLmxpbmVUbyA9IGZ1bmN0aW9uKHQsIGUsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdGVwcGVkTGluZSA/ICgiYWZ0ZXIiID09PSBuLnN0ZXBwZWRMaW5lID8gdC5saW5lVG8oZS54LCBuLnkpIDogdC5saW5lVG8obi54LCBlLnkpLCB2b2lkIHQubGluZVRvKG4ueCwgbi55KSkgOiBuLnRlbnNpb24gPyB2b2lkIHQuYmV6aWVyQ3VydmVUbyhpID8gZS5jb250cm9sUG9pbnRQcmV2aW91c1ggOiBlLmNvbnRyb2xQb2ludE5leHRYLCBpID8gZS5jb250cm9sUG9pbnRQcmV2aW91c1kgOiBlLmNvbnRyb2xQb2ludE5leHRZLCBpID8gbi5jb250cm9sUG9pbnROZXh0WCA6IG4uY29udHJvbFBvaW50UHJldmlvdXNYLCBpID8gbi5jb250cm9sUG9pbnROZXh0WSA6IG4uY29udHJvbFBvaW50UHJldmlvdXNZLCBuLngsIG4ueSkgOiB2b2lkIHQubGluZVRvKG4ueCwgbi55KQogICAgICAgICAgICAgICAgfSwgdC5oZWxwZXJzLmNhbnZhcyA9IGUKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAyMzogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUpIHsKICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuZGF0YSA9IGUuZGF0YSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5kYXRhc2V0cyA9IG4uZGF0YXNldHMgfHwgW10sIG4ubGFiZWxzID0gbi5sYWJlbHMgfHwgW10sIGUub3B0aW9ucyA9IGEuY29uZmlnTWVyZ2UodC5kZWZhdWx0cy5nbG9iYWwsIHQuZGVmYXVsdHNbZS50eXBlXSwgZS5vcHRpb25zIHx8IHt9KSwgZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5vcHRpb25zOwogICAgICAgICAgICAgICAgICAgIGUuc2NhbGUgPyB0LnNjYWxlLm9wdGlvbnMgPSBlLnNjYWxlIDogZS5zY2FsZXMgJiYgZS5zY2FsZXMueEF4ZXMuY29uY2F0KGUuc2NhbGVzLnlBeGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zY2FsZXNbZS5pZF0ub3B0aW9ucyA9IGUKICAgICAgICAgICAgICAgICAgICB9KSwgdC50b29sdGlwLl9vcHRpb25zID0gZS50b29sdGlwcwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAidG9wIiA9PT0gdCB8fCAiYm90dG9tIiA9PT0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGEgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgbyA9IHQucGx1Z2lucywKICAgICAgICAgICAgICAgICAgICByID0gdC5wbGF0Zm9ybTsKICAgICAgICAgICAgICAgIHQudHlwZXMgPSB7fSwgdC5pbnN0YW5jZXMgPSB7fSwgdC5jb250cm9sbGVycyA9IHt9LCBhLmV4dGVuZCh0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlKGkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHIuYWNxdWlyZUNvbnRleHQobiwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbCAmJiBsLmNhbnZhcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzICYmIHMuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHMgJiYgcy53aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uaWQgPSBhLnVpZCgpLCBvLmN0eCA9IGwsIG8uY2FudmFzID0gcywgby5jb25maWcgPSBpLCBvLndpZHRoID0gZCwgby5oZWlnaHQgPSB1LCBvLmFzcGVjdFJhdGlvID0gdSA/IGQgLyB1IDogbnVsbCwgby5vcHRpb25zID0gaS5vcHRpb25zLCBvLl9idWZmZXJlZFJlbmRlciA9ICExLCBvLmNoYXJ0ID0gbywgby5jb250cm9sbGVyID0gbywgdC5pbnN0YW5jZXNbby5pZF0gPSBvLCBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgImRhdGEiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLmNvbmZpZy5kYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb25maWcuZGF0YSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIGwgJiYgcyA/IChvLmluaXRpYWxpemUoKSwgdm9pZCBvLnVwZGF0ZSgpKSA6IHZvaWQgY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBjaGFydDogY2FuJ3QgYWNxdWlyZSBjb250ZXh0IGZyb20gdGhlIGdpdmVuIGl0ZW0iKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ubm90aWZ5KHQsICJiZWZvcmVJbml0IiksIGEucmV0aW5hU2NhbGUodCksIHQuYmluZEV2ZW50cygpLCB0Lm9wdGlvbnMucmVzcG9uc2l2ZSAmJiB0LnJlc2l6ZSghMCksIHQuZW5zdXJlU2NhbGVzSGF2ZUlEcygpLCB0LmJ1aWxkU2NhbGVzKCksIHQuaW5pdFRvb2xUaXAoKSwgby5ub3RpZnkodCwgImFmdGVySW5pdCIpLCB0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjbGVhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNsZWFyKHRoaXMpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYW5pbWF0aW9uU2VydmljZS5jYW5jZWxBbmltYXRpb24odGhpcyksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlc2l6ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuY2FudmFzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ubWFpbnRhaW5Bc3BlY3RSYXRpbyAmJiBlLmFzcGVjdFJhdGlvIHx8IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5mbG9vcihhLmdldE1heGltdW1XaWR0aChpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5mbG9vcihyID8gbCAvIHIgOiBhLmdldE1heGltdW1IZWlnaHQoaSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGUud2lkdGggIT09IGwgfHwgZS5oZWlnaHQgIT09IHMpICYmIChpLndpZHRoID0gZS53aWR0aCA9IGwsIGkuaGVpZ2h0ID0gZS5oZWlnaHQgPSBzLCBpLnN0eWxlLndpZHRoID0gbCArICJweCIsIGkuc3R5bGUuaGVpZ2h0ID0gcyArICJweCIsIGEucmV0aW5hU2NhbGUoZSksICF0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5ub3RpZnkoZSwgInJlc2l6ZSIsIFt1XSksIGUub3B0aW9ucy5vblJlc2l6ZSAmJiBlLm9wdGlvbnMub25SZXNpemUoZSwgdSksIGUuc3RvcCgpLCBlLnVwZGF0ZShlLm9wdGlvbnMucmVzcG9uc2l2ZUFuaW1hdGlvbkR1cmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlbnN1cmVTY2FsZXNIYXZlSURzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5zY2FsZXMgfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5zY2FsZTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5lYWNoKGUueEF4ZXMsIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaWQgPSB0LmlkIHx8ICJ4LWF4aXMtIiArIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEuZWFjaChlLnlBeGVzLCBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmlkID0gdC5pZCB8fCAieS1heGlzLSIgKyBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuICYmIChuLmlkID0gbi5pZCB8fCAic2NhbGUiKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYnVpbGRTY2FsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuc2NhbGVzID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIG4uc2NhbGVzICYmIChyID0gci5jb25jYXQoKG4uc2NhbGVzLnhBeGVzIHx8IFtdKS5tYXAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlOiAiY2F0ZWdvcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwb3NpdGlvbjogImJvdHRvbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIChuLnNjYWxlcy55QXhlcyB8fCBbXSkubWFwKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZTogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHBvc2l0aW9uOiAibGVmdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgbi5zY2FsZSAmJiByLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogbi5zY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlOiAicmFkaWFsTGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcG9zaXRpb246ICJjaGFydEFyZWEiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhLmVhY2gociwgZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGEuZ2V0VmFsdWVPckRlZmF1bHQoci50eXBlLCBuLmR0eXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5zY2FsZVNlcnZpY2UuZ2V0U2NhbGVDb25zdHJ1Y3RvcihsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShyLnBvc2l0aW9uKSAhPT0gaShuLmRwb3NpdGlvbikgJiYgKHIucG9zaXRpb24gPSBuLmRwb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBuZXcgcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHg6IGUuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydDogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9bdS5pZF0gPSB1LCBuLmlzRGVmYXVsdCAmJiAoZS5zY2FsZSA9IHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LnNjYWxlU2VydmljZS5hZGRTY2FsZXNUb0xheW91dCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYnVpbGRPclVwZGF0ZUNvbnRyb2xsZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS5lYWNoKGUuZGF0YS5kYXRhc2V0cywgZnVuY3Rpb24oYSwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5nZXREYXRhc2V0TWV0YShvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci50eXBlIHx8IChyLnR5cGUgPSBhLnR5cGUgfHwgZS5jb25maWcudHlwZSksIG4ucHVzaChyLnR5cGUpLCByLmNvbnRyb2xsZXIpIHIuY29udHJvbGxlci51cGRhdGVJbmRleChvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB0LmNvbnRyb2xsZXJzW3IudHlwZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGwpIHRocm93IG5ldyBFcnJvcignIicgKyByLnR5cGUgKyAnIiBpcyBub3QgYSBjaGFydCB0eXBlLicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmNvbnRyb2xsZXIgPSBuZXcgbChlLCBvKSwgaS5wdXNoKHIuY29udHJvbGxlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlKSwgbi5sZW5ndGggPiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDE7IG8gPCBuLmxlbmd0aDsgbysrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuW29dICE9PSBuW28gLSAxXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmlzQ29tYm8gPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZXNldEVsZW1lbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBhLmVhY2godC5kYXRhLmRhdGFzZXRzLCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmdldERhdGFzZXRNZXRhKG4pLmNvbnRyb2xsZXIucmVzZXQoKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RWxlbWVudHMoKSwgdGhpcy50b29sdGlwLmluaXRpYWxpemUoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4oaSksIG8ubm90aWZ5KGksICJiZWZvcmVVcGRhdGUiKSAhPT0gITEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkudG9vbHRpcC5fZGF0YSA9IGkuZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gaS5idWlsZE9yVXBkYXRlQ29udHJvbGxlcnMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZWFjaChpLmRhdGEuZGF0YXNldHMsIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmdldERhdGFzZXRNZXRhKGUpLmNvbnRyb2xsZXIuYnVpbGRPclVwZGF0ZUVsZW1lbnRzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpLCBpLnVwZGF0ZUxheW91dCgpLCBhLmVhY2gociwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVzZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkudXBkYXRlRGF0YXNldHMoKSwgby5ub3RpZnkoaSwgImFmdGVyVXBkYXRlIiksIGkuX2J1ZmZlcmVkUmVuZGVyID8gaS5fYnVmZmVyZWRSZXF1ZXN0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhenk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBpLnJlbmRlcih0LCBlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ubm90aWZ5KGUsICJiZWZvcmVMYXlvdXQiKSAhPT0gITEgJiYgKHQubGF5b3V0U2VydmljZS51cGRhdGUodGhpcywgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpLCBvLm5vdGlmeShlLCAiYWZ0ZXJTY2FsZVVwZGF0ZSIpLCBvLm5vdGlmeShlLCAiYWZ0ZXJMYXlvdXQiKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZURhdGFzZXRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5ub3RpZnkodCwgImJlZm9yZURhdGFzZXRzVXBkYXRlIikgIT09ICExKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgbiA9IHQuZGF0YS5kYXRhc2V0cy5sZW5ndGg7IGUgPCBuOyArK2UpIHQudXBkYXRlRGF0YXNldChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubm90aWZ5KHQsICJhZnRlckRhdGFzZXRzVXBkYXRlIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGF0YXNldDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5nZXREYXRhc2V0TWV0YSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgby5ub3RpZnkoZSwgImJlZm9yZURhdGFzZXRVcGRhdGUiLCBbaV0pICE9PSAhMSAmJiAobi5jb250cm9sbGVyLnVwZGF0ZSgpLCBvLm5vdGlmeShlLCAiYWZ0ZXJEYXRhc2V0VXBkYXRlIiwgW2ldKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLm5vdGlmeShpLCAiYmVmb3JlUmVuZGVyIikgIT09ICExKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGkub3B0aW9ucy5hbmltYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5ub3RpZnkoaSwgImFmdGVyUmVuZGVyIiksIGEuY2FsbGJhY2sociAmJiByLm9uQ29tcGxldGUsIFt0XSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgJiYgKCJ1bmRlZmluZWQiICE9IHR5cGVvZiBlICYmIDAgIT09IGUgfHwgInVuZGVmaW5lZCIgPT0gdHlwZW9mIGUgJiYgMCAhPT0gci5kdXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG5ldyB0LkFuaW1hdGlvbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVN0ZXBzOiAoZSB8fCByLmR1cmF0aW9uKSAvIDE2LjY2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IHIuZWFzaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYS5lYXNpbmdFZmZlY3RzW2UuZWFzaW5nXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5jdXJyZW50U3RlcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaSAvIGUubnVtU3RlcHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmRyYXcobihvKSwgbywgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25BbmltYXRpb25Qcm9ncmVzczogci5vblByb2dyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFuaW1hdGlvbkNvbXBsZXRlOiBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hbmltYXRpb25TZXJ2aWNlLmFkZEFuaW1hdGlvbihpLCBzLCBlLCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkuZHJhdygpLCBsKG5ldyB0LkFuaW1hdGlvbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtU3RlcHM6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBlLmNsZWFyKCksIHZvaWQgMCAhPT0gdCAmJiBudWxsICE9PSB0IHx8ICh0ID0gMSksIGUudHJhbnNpdGlvbih0KSwgby5ub3RpZnkoZSwgImJlZm9yZURyYXciLCBbdF0pICE9PSAhMSAmJiAoYS5lYWNoKGUuYm94ZXMsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZHJhdyhlLmNoYXJ0QXJlYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgZSksIGUuc2NhbGUgJiYgZS5zY2FsZS5kcmF3KCksIGUuZHJhd0RhdGFzZXRzKHQpLCBlLnRvb2x0aXAuZHJhdygpLCBvLm5vdGlmeShlLCAiYWZ0ZXJEcmF3IiwgW3RdKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHRoaXMsIG4gPSAwLCBpID0gKGUuZGF0YS5kYXRhc2V0cyB8fCBbXSkubGVuZ3RoOyBuIDwgaTsgKytuKSBlLmlzRGF0YXNldFZpc2libGUobikgJiYgZS5nZXREYXRhc2V0TWV0YShuKS5jb250cm9sbGVyLnRyYW5zaXRpb24odCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUudG9vbHRpcC50cmFuc2l0aW9uKHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkcmF3RGF0YXNldHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5ub3RpZnkoZSwgImJlZm9yZURhdGFzZXRzRHJhdyIsIFt0XSkgIT09ICExKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gKGUuZGF0YS5kYXRhc2V0cyB8fCBbXSkubGVuZ3RoIC0gMTsgbiA+PSAwOyAtLW4pIGUuaXNEYXRhc2V0VmlzaWJsZShuKSAmJiBlLmRyYXdEYXRhc2V0KG4sIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5ub3RpZnkoZSwgImFmdGVyRGF0YXNldHNEcmF3IiwgW3RdKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkcmF3RGF0YXNldDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5nZXREYXRhc2V0TWV0YSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmdWYWx1ZTogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgby5ub3RpZnkobiwgImJlZm9yZURhdGFzZXREcmF3IiwgW2FdKSAhPT0gITEgJiYgKGkuY29udHJvbGxlci5kcmF3KGUpLCBvLm5vdGlmeShuLCAiYWZ0ZXJEYXRhc2V0RHJhdyIsIFthXSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRFbGVtZW50QXRFdmVudDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5JbnRlcmFjdGlvbi5tb2Rlcy5zaW5nbGUodGhpcywgZSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEVsZW1lbnRzQXRFdmVudDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5JbnRlcmFjdGlvbi5tb2Rlcy5sYWJlbCh0aGlzLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Q6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRFbGVtZW50c0F0WEF4aXM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuSW50ZXJhY3Rpb24ubW9kZXNbIngtYXhpcyJdKHRoaXMsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdDogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEVsZW1lbnRzQXRFdmVudEZvck1vZGU6IGZ1bmN0aW9uKGUsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0LkludGVyYWN0aW9uLm1vZGVzW25dOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZ1bmN0aW9uIiA9PSB0eXBlb2YgYSA/IGEodGhpcywgZSwgaSkgOiBbXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0RGF0YXNldEF0RXZlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuSW50ZXJhY3Rpb24ubW9kZXMuZGF0YXNldCh0aGlzLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Q6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXREYXRhc2V0TWV0YTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5kYXRhLmRhdGFzZXRzW3RdOwogICAgICAgICAgICAgICAgICAgICAgICBuLl9tZXRhIHx8IChuLl9tZXRhID0ge30pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4uX21ldGFbZS5pZF07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpIHx8IChpID0gbi5fbWV0YVtlLmlkXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeEF4aXNJRDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlBeGlzSUQ6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFZpc2libGVEYXRhc2V0Q291bnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMCwgZSA9IDAsIG4gPSB0aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoOyBlIDwgbjsgKytlKSB0aGlzLmlzRGF0YXNldFZpc2libGUoZSkgJiYgdCsrOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaXNEYXRhc2V0VmlzaWJsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0RGF0YXNldE1ldGEodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiYm9vbGVhbiIgPT0gdHlwZW9mIGUuaGlkZGVuID8gIWUuaGlkZGVuIDogIXRoaXMuZGF0YS5kYXRhc2V0c1t0XS5oaWRkZW4KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlTGVnZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sZWdlbmRDYWxsYmFjayh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCBuLCBpLCBsID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsLmNhbnZhczsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsLnN0b3AoKSwgbiA9IDAsIGkgPSBsLmRhdGEuZGF0YXNldHMubGVuZ3RoOyBuIDwgaTsgKytuKSBlID0gbC5nZXREYXRhc2V0TWV0YShuKSwgZS5jb250cm9sbGVyICYmIChlLmNvbnRyb2xsZXIuZGVzdHJveSgpLCBlLmNvbnRyb2xsZXIgPSBudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgcyAmJiAobC51bmJpbmRFdmVudHMoKSwgYS5jbGVhcihsKSwgci5yZWxlYXNlQ29udGV4dChsLmN0eCksIGwuY2FudmFzID0gbnVsbCwgbC5jdHggPSBudWxsKSwgby5ub3RpZnkobCwgImRlc3Ryb3kiKSwgZGVsZXRlIHQuaW5zdGFuY2VzW2wuaWRdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0b0Jhc2U2NEltYWdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FudmFzLnRvRGF0YVVSTC5hcHBseSh0aGlzLmNhbnZhcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5pdFRvb2xUaXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGUudG9vbHRpcCA9IG5ldyB0LlRvb2x0aXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoYXJ0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoYXJ0SW5zdGFuY2U6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YTogZS5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX29wdGlvbnM6IGUub3B0aW9ucy50b29sdGlwcwogICAgICAgICAgICAgICAgICAgICAgICB9LCBlKSwgZS50b29sdGlwLmluaXRpYWxpemUoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYmluZEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0Ll9saXN0ZW5lcnMgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmV2ZW50SGFuZGxlci5hcHBseSh0LCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBhLmVhY2godC5vcHRpb25zLmV2ZW50cywgZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5hZGRFdmVudExpc3RlbmVyKHQsIGksIG4pLCBlW2ldID0gbgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5vcHRpb25zLnJlc3BvbnNpdmUgJiYgKG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVzaXplKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgci5hZGRFdmVudExpc3RlbmVyKHQsICJyZXNpemUiLCBuKSwgZS5yZXNpemUgPSBuKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdW5iaW5kRXZlbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuX2xpc3RlbmVyczsKICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiAoZGVsZXRlIHQuX2xpc3RlbmVycywgYS5lYWNoKGUsIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBuLCBlKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZUhvdmVyU3R5bGU6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIG8sIHIgPSBuID8gInNldEhvdmVyU3R5bGUiIDogInJlbW92ZUhvdmVyU3R5bGUiOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwLCBvID0gdC5sZW5ndGg7IGEgPCBvOyArK2EpIGkgPSB0W2FdLCBpICYmIHRoaXMuZ2V0RGF0YXNldE1ldGEoaS5fZGF0YXNldEluZGV4KS5jb250cm9sbGVyW3JdKGkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBldmVudEhhbmRsZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUudG9vbHRpcDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8ubm90aWZ5KGUsICJiZWZvcmVFdmVudCIsIFt0XSkgIT09ICExKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9idWZmZXJlZFJlbmRlciA9ICEwLCBlLl9idWZmZXJlZFJlcXVlc3QgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLmhhbmRsZUV2ZW50KHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSB8PSBuICYmIG4uaGFuZGxlRXZlbnQodCksIG8ubm90aWZ5KGUsICJhZnRlckV2ZW50IiwgW3RdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5fYnVmZmVyZWRSZXF1ZXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPyBlLnJlbmRlcihhLmR1cmF0aW9uLCBhLmxhenkpIDogaSAmJiAhZS5hbmltYXRpbmcgJiYgKGUuc3RvcCgpLCBlLnJlbmRlcihlLm9wdGlvbnMuaG92ZXIuYW5pbWF0aW9uRHVyYXRpb24sICEwKSksIGUuX2J1ZmZlcmVkUmVuZGVyID0gITEsIGUuX2J1ZmZlcmVkUmVxdWVzdCA9IG51bGwsIGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUub3B0aW9ucyB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmhvdmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5sYXN0QWN0aXZlID0gZS5sYXN0QWN0aXZlIHx8IFtdLCAibW91c2VvdXQiID09PSB0LnR5cGUgPyBlLmFjdGl2ZSA9IFtdIDogZS5hY3RpdmUgPSBlLmdldEVsZW1lbnRzQXRFdmVudEZvck1vZGUodCwgaS5tb2RlLCBpKSwgaS5vbkhvdmVyICYmIGkub25Ib3Zlci5jYWxsKGUsIHQubmF0aXZlLCBlLmFjdGl2ZSksICJtb3VzZXVwIiAhPT0gdC50eXBlICYmICJjbGljayIgIT09IHQudHlwZSB8fCBuLm9uQ2xpY2sgJiYgbi5vbkNsaWNrLmNhbGwoZSwgdC5uYXRpdmUsIGUuYWN0aXZlKSwgZS5sYXN0QWN0aXZlLmxlbmd0aCAmJiBlLnVwZGF0ZUhvdmVyU3R5bGUoZS5sYXN0QWN0aXZlLCBpLm1vZGUsICExKSwgZS5hY3RpdmUubGVuZ3RoICYmIGkubW9kZSAmJiBlLnVwZGF0ZUhvdmVyU3R5bGUoZS5hY3RpdmUsIGkubW9kZSwgITApLCBvID0gIWEuYXJyYXlFcXVhbHMoZS5hY3RpdmUsIGUubGFzdEFjdGl2ZSksIGUubGFzdEFjdGl2ZSA9IGUuYWN0aXZlLCBvCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIHQuQ29udHJvbGxlciA9IHQKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAyNDogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5fY2hhcnRqcyA/IHZvaWQgdC5fY2hhcnRqcy5saXN0ZW5lcnMucHVzaChlKSA6IChPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9jaGFydGpzIiwgewogICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyczogW2VdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdm9pZCBhLmZvckVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICJvbkRhdGEiICsgZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGUuc2xpY2UoMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLmFwcGx5KHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmVhY2godC5fY2hhcnRqcy5saXN0ZW5lcnMsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdFtuXSAmJiB0W25dLmFwcGx5KHQsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuX2NoYXJ0anM7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLmxpc3RlbmVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gIT09IC0xICYmIGkuc3BsaWNlKG8sIDEpLCBpLmxlbmd0aCA+IDAgfHwgKGEuZm9yRWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdFtlXQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgZGVsZXRlIHQuX2NoYXJ0anMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGkgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgYSA9IFsicHVzaCIsICJwb3AiLCAic2hpZnQiLCAic3BsaWNlIiwgInVuc2hpZnQiXTsKICAgICAgICAgICAgICAgIHQuRGF0YXNldENvbnRyb2xsZXIgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKHQsIGUpCiAgICAgICAgICAgICAgICB9LCBpLmV4dGVuZCh0LkRhdGFzZXRDb250cm9sbGVyLnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgIGRhdGFzZXRFbGVtZW50VHlwZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICBkYXRhRWxlbWVudFR5cGU6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uY2hhcnQgPSB0LCBuLmluZGV4ID0gZSwgbi5saW5rU2NhbGVzKCksIG4uYWRkRWxlbWVudHMoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSW5kZXg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxpbmtTY2FsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5nZXREYXRhc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUueEF4aXNJRCAmJiAoZS54QXhpc0lEID0gbi54QXhpc0lEIHx8IHQuY2hhcnQub3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0uaWQpLCBudWxsID09PSBlLnlBeGlzSUQgJiYgKGUueUF4aXNJRCA9IG4ueUF4aXNJRCB8fCB0LmNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnlBeGVzWzBdLmlkKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0RGF0YXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbdGhpcy5pbmRleF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldE1ldGE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFydC5nZXREYXRhc2V0TWV0YSh0aGlzLmluZGV4KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0U2NhbGVGb3JJZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFydC5zY2FsZXNbdF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoITApCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YSAmJiBuKHRoaXMuX2RhdGEsIHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjcmVhdGVNZXRhRGF0YXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0LmRhdGFzZXRFbGVtZW50VHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgbmV3IGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoYXJ0OiB0LmNoYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFzZXRJbmRleDogdC5pbmRleAogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY3JlYXRlTWV0YURhdGE6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuZGF0YUVsZW1lbnRUeXBlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBuZXcgbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2hhcnQ6IGUuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YXNldEluZGV4OiBlLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luZGV4OiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBlLCBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmdldERhdGFzZXQoKS5kYXRhIHx8IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkuZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMCwgZSA9IGEubGVuZ3RoOyB0IDwgZTsgKyt0KSBvW3RdID0gb1t0XSB8fCBuLmNyZWF0ZU1ldGFEYXRhKHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpLmRhdGFzZXQgPSBpLmRhdGFzZXQgfHwgbi5jcmVhdGVNZXRhRGF0YXNldCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50QW5kUmVzZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmNyZWF0ZU1ldGFEYXRhKHQpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1ldGEoKS5kYXRhLnNwbGljZSh0LCAwLCBlKSwgdGhpcy51cGRhdGVFbGVtZW50KGUsIHQsICEwKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYnVpbGRPclVwZGF0ZUVsZW1lbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZGF0YSB8fCAoaS5kYXRhID0gW10pOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9kYXRhICE9PSBhICYmICh0Ll9kYXRhICYmIG4odC5fZGF0YSwgdCksIGUoYSwgdCksIHQuX2RhdGEgPSBhKSwgdC5yZXN5bmNFbGVtZW50cygpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IGkubm9vcCwKICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLmdldE1ldGEoKSwgbiA9IGUuZGF0YSB8fCBbXSwgaSA9IG4ubGVuZ3RoLCBhID0gMDsgYSA8IGk7ICsrYSkgblthXS50cmFuc2l0aW9uKHQpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmRhdGFzZXQgJiYgZS5kYXRhc2V0LnRyYW5zaXRpb24odCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuZGF0YSB8fCBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQuZGF0YXNldCAmJiB0LmRhdGFzZXQuZHJhdygpOyBpIDwgbjsgKytpKSBlW2ldLmRyYXcoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSG92ZXJTdHlsZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1t0Ll9kYXRhc2V0SW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuY3VzdG9tIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuX21vZGVsOwogICAgICAgICAgICAgICAgICAgICAgICBsLmJhY2tncm91bmRDb2xvciA9IG8uYmFja2dyb3VuZENvbG9yID8gby5iYWNrZ3JvdW5kQ29sb3IgOiByKG4uYmFja2dyb3VuZENvbG9yLCBhLCBlLmJhY2tncm91bmRDb2xvciksIGwuYm9yZGVyQ29sb3IgPSBvLmJvcmRlckNvbG9yID8gby5ib3JkZXJDb2xvciA6IHIobi5ib3JkZXJDb2xvciwgYSwgZS5ib3JkZXJDb2xvciksIGwuYm9yZGVyV2lkdGggPSBvLmJvcmRlcldpZHRoID8gby5ib3JkZXJXaWR0aCA6IHIobi5ib3JkZXJXaWR0aCwgYSwgZS5ib3JkZXJXaWR0aCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldEhvdmVyU3R5bGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbdC5fZGF0YXNldEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0Ll9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmN1c3RvbSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmdldEhvdmVyQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5fbW9kZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIGwuYmFja2dyb3VuZENvbG9yID0gYS5ob3ZlckJhY2tncm91bmRDb2xvciA/IGEuaG92ZXJCYWNrZ3JvdW5kQ29sb3IgOiBvKGUuaG92ZXJCYWNrZ3JvdW5kQ29sb3IsIG4sIHIobC5iYWNrZ3JvdW5kQ29sb3IpKSwgbC5ib3JkZXJDb2xvciA9IGEuaG92ZXJCb3JkZXJDb2xvciA/IGEuaG92ZXJCb3JkZXJDb2xvciA6IG8oZS5ob3ZlckJvcmRlckNvbG9yLCBuLCByKGwuYm9yZGVyQ29sb3IpKSwgbC5ib3JkZXJXaWR0aCA9IGEuaG92ZXJCb3JkZXJXaWR0aCA/IGEuaG92ZXJCb3JkZXJXaWR0aCA6IG8oZS5ob3ZlckJvcmRlcldpZHRoLCBuLCBsLmJvcmRlcldpZHRoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVzeW5jRWxlbWVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5nZXREYXRhc2V0KCkuZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmRhdGEubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4ubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICBhIDwgaSA/IGUuZGF0YS5zcGxpY2UoYSwgaSAtIGEpIDogYSA+IGkgJiYgdC5pbnNlcnRFbGVtZW50cyhpLCBhIC0gaSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGluc2VydEVsZW1lbnRzOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgZTsgKytuKSB0aGlzLmFkZEVsZW1lbnRBbmRSZXNldCh0ICsgbikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9uRGF0YVB1c2g6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEVsZW1lbnRzKHRoaXMuZ2V0RGF0YXNldCgpLmRhdGEubGVuZ3RoIC0gMSwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9uRGF0YVBvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWV0YSgpLmRhdGEucG9wKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9uRGF0YVNoaWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNZXRhKCkuZGF0YS5zaGlmdCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvbkRhdGFTcGxpY2U6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNZXRhKCkuZGF0YS5zcGxpY2UodCwgZSksIHRoaXMuaW5zZXJ0RWxlbWVudHModCwgYXJndW1lbnRzLmxlbmd0aCAtIDIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvbkRhdGFVbnNoaWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRFbGVtZW50cygwLCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB0LkRhdGFzZXRDb250cm9sbGVyLmV4dGVuZCA9IGkuaW5oZXJpdHMKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAyNTogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IHQoMyk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCwgZSwgbiwgYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBvLCByLCBsLCBzLCB1LCBkLCBjLCBoLCBmLCBnID0gT2JqZWN0LmtleXMobik7CiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gMCwgciA9IGcubGVuZ3RoOyBvIDwgcjsgKytvKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGdbb10sIGQgPSBuW2xdLCBlLmhhc093blByb3BlcnR5KGwpIHx8IChlW2xdID0gZCksIHMgPSBlW2xdLCBzICE9PSBkICYmICJfIiAhPT0gbFswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuaGFzT3duUHJvcGVydHkobCkgfHwgKHRbbF0gPSBzKSwgdSA9IHRbbF0sIGMgPSB0eXBlb2YgZCwgYyA9PT0gdHlwZW9mIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09PSBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gaSh1KSwgaC52YWxpZCAmJiAoZiA9IGkoZCksIGYudmFsaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2xdID0gZi5taXgoaCwgYSkucmdiU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgibnVtYmVyIiA9PT0gYyAmJiBpc0Zpbml0ZSh1KSAmJiBpc0Zpbml0ZShkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbF0gPSB1ICsgKGQgLSB1KSAqIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbF0gPSBkCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBuID0gdC5oZWxwZXJzOwogICAgICAgICAgICAgICAgdC5lbGVtZW50cyA9IHt9LCB0LkVsZW1lbnQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgbi5leHRlbmQodGhpcywgdCksIHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9LCBuLmV4dGVuZCh0LkVsZW1lbnQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZGVuID0gITEKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHBpdm90OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5fdmlldyB8fCAodC5fdmlldyA9IG4uY2xvbmUodC5fbW9kZWwpKSwgdC5fc3RhcnQgPSB7fSwgdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5fbW9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbi5fc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5fdmlldzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgJiYgMSAhPT0gdCA/IChvIHx8IChvID0gbi5fdmlldyA9IHt9KSwgYSB8fCAoYSA9IG4uX3N0YXJ0ID0ge30pLCBlKGEsIG8sIGksIHQpLCBuKSA6IChuLl92aWV3ID0gaSwgbi5fc3RhcnQgPSBudWxsLCBuKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHRoaXMuX21vZGVsLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0aGlzLl9tb2RlbC55CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uaXNOdW1iZXIodGhpcy5fbW9kZWwueCkgJiYgbi5pc051bWJlcih0aGlzLl9tb2RlbC55KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB0LkVsZW1lbnQuZXh0ZW5kID0gbi5pbmhlcml0cwogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICAzOiAzCiAgICAgICAgfV0sCiAgICAgICAgMjY6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSB0KDMpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgPyAoaSA9IHBhcnNlSW50KHQsIDEwKSwgdC5pbmRleE9mKCIlIikgIT09IC0xICYmIChpID0gaSAvIDEwMCAqIGUucGFyZW50Tm9kZVtuXSkpIDogaSA9IHQsIGkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSB0ICYmIG51bGwgIT09IHQgJiYgIm5vbmUiICE9PSB0CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYSh0LCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBkb2N1bWVudC5kZWZhdWx0VmlldywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQucGFyZW50Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8uZ2V0Q29tcHV0ZWRTdHlsZSh0KVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG8uZ2V0Q29tcHV0ZWRTdHlsZShyKVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4obCksCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBuKHMpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB1IHx8IGQgPyBNYXRoLm1pbih1ID8gZShsLCB0LCBhKSA6IGMsIGQgPyBlKHMsIHIsIGEpIDogYykgOiAibm9uZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBvID0gdC5oZWxwZXJzID0ge307CiAgICAgICAgICAgICAgICBvLmVhY2ggPSBmdW5jdGlvbih0LCBlLCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEsIHI7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8uaXNBcnJheSh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0Lmxlbmd0aCwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IHIgLSAxOyBhID49IDA7IGEtLSkgZS5jYWxsKG4sIHRbYV0sIGEpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwOyBhIDwgcjsgYSsrKSBlLmNhbGwobiwgdFthXSwgYSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBPYmplY3Qua2V5cyh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gbC5sZW5ndGgsIGEgPSAwOyBhIDwgcjsgYSsrKSBlLmNhbGwobiwgdFtsW2FdXSwgbFthXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBvLmNsb25lID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uZWFjaCh0LCBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uaXNBcnJheSh0KSA/IGVbbl0gPSB0LnNsaWNlKDApIDogIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCA/IGVbbl0gPSBvLmNsb25lKHQpIDogZVtuXSA9IHQKICAgICAgICAgICAgICAgICAgICB9KSwgZQogICAgICAgICAgICAgICAgfSwgby5leHRlbmQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRbbl0gPSBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4gPSAxLCBpID0gYXJndW1lbnRzLmxlbmd0aDsgbiA8IGk7IG4rKykgby5lYWNoKGFyZ3VtZW50c1tuXSwgZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgIH0sIG8uY29uZmlnTWVyZ2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBvLmNsb25lKGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBvLmVhY2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBvLmVhY2goZSwgZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLmhhc093blByb3BlcnR5KGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhID8gbltpXSA6IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjYWxlcyIgPT09IGkgPyBuW2ldID0gby5zY2FsZU1lcmdlKHIsIGUpIDogInNjYWxlIiA9PT0gaSA/IG5baV0gPSBvLmNvbmZpZ01lcmdlKHIsIHQuc2NhbGVTZXJ2aWNlLmdldFNjYWxlRGVmYXVsdHMoZS50eXBlKSwgZSkgOiAhYSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgciB8fCBvLmlzQXJyYXkocikgfHwgbnVsbCA9PT0gciB8fCAib2JqZWN0IiAhPSB0eXBlb2YgZSB8fCBvLmlzQXJyYXkoZSkgPyBuW2ldID0gZSA6IG5baV0gPSBvLmNvbmZpZ01lcmdlKHIsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSksIG4KICAgICAgICAgICAgICAgIH0sIG8uc2NhbGVNZXJnZSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG8uY2xvbmUoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uZWFjaChuLCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ4QXhlcyIgPT09IG4gfHwgInlBeGVzIiA9PT0gbiA/IGkuaGFzT3duUHJvcGVydHkobikgPyBvLmVhY2goZSwgZnVuY3Rpb24oZSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBvLmdldFZhbHVlT3JEZWZhdWx0KGUudHlwZSwgInhBeGVzIiA9PT0gbiA/ICJjYXRlZ29yeSIgOiAibGluZWFyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuc2NhbGVTZXJ2aWNlLmdldFNjYWxlRGVmYXVsdHMocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID49IGlbbl0ubGVuZ3RoIHx8ICFpW25dW2FdLnR5cGUgPyBpW25dLnB1c2goby5jb25maWdNZXJnZShsLCBlKSkgOiBlLnR5cGUgJiYgZS50eXBlICE9PSBpW25dW2FdLnR5cGUgPyBpW25dW2FdID0gby5jb25maWdNZXJnZShpW25dW2FdLCBsLCBlKSA6IGlbbl1bYV0gPSBvLmNvbmZpZ01lcmdlKGlbbl1bYV0sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogKGlbbl0gPSBbXSwgby5lYWNoKGUsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gby5nZXRWYWx1ZU9yRGVmYXVsdChlLnR5cGUsICJ4QXhlcyIgPT09IG4gPyAiY2F0ZWdvcnkiIDogImxpbmVhciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaVtuXS5wdXNoKG8uY29uZmlnTWVyZ2UodC5zY2FsZVNlcnZpY2UuZ2V0U2NhbGVEZWZhdWx0cyhhKSwgZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IGkuaGFzT3duUHJvcGVydHkobikgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGlbbl0gJiYgbnVsbCAhPT0gaVtuXSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSA/IGlbbl0gPSBvLmNvbmZpZ01lcmdlKGlbbl0sIGUpIDogaVtuXSA9IGUKICAgICAgICAgICAgICAgICAgICB9KSwgaQogICAgICAgICAgICAgICAgfSwgby5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCB8fCBudWxsID09PSB0ID8gbiA6IG8uaXNBcnJheSh0KSA/IGUgPCB0Lmxlbmd0aCA/IHRbZV0gOiBuIDogdAogICAgICAgICAgICAgICAgfSwgby5nZXRWYWx1ZU9yRGVmYXVsdCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ID8gZSA6IHQKICAgICAgICAgICAgICAgIH0sIG8uaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mID8gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmluZGV4T2YoZSkKICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDAsIGkgPSB0Lmxlbmd0aDsgbiA8IGk7ICsrbikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRbbl0gPT09IGUpIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICAgICAgfSwgby53aGVyZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoby5pc0FycmF5KHQpICYmIEFycmF5LnByb3RvdHlwZS5maWx0ZXIpIHJldHVybiB0LmZpbHRlcihlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBvLmVhY2godCwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBlKHQpICYmIG4ucHVzaCh0KQogICAgICAgICAgICAgICAgICAgIH0pLCBuCiAgICAgICAgICAgICAgICB9LCBvLmZpbmRJbmRleCA9IEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXggPyBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZmluZEluZGV4KGUsIG4pCiAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIG4gPSB2b2lkIDAgPT09IG4gPyB0IDogbjsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgYSA9IHQubGVuZ3RoOyBpIDwgYTsgKytpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5jYWxsKG4sIHRbaV0sIGksIHQpKSByZXR1cm4gaTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgICAgIH0sIG8uZmluZE5leHRXaGVyZSA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IG4gJiYgbnVsbCAhPT0gbiB8fCAobiA9IC0xKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gbiArIDE7IGkgPCB0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUoYSkpIHJldHVybiBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgby5maW5kUHJldmlvdXNXaGVyZSA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IG4gJiYgbnVsbCAhPT0gbiB8fCAobiA9IHQubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gbiAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUoYSkpIHJldHVybiBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgby5pbmhlcml0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0ICYmIHQuaGFzT3duUHJvcGVydHkoImNvbnN0cnVjdG9yIikgPyB0LmNvbnN0cnVjdG9yIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBuCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkucHJvdG90eXBlID0gZS5wcm90b3R5cGUsIG4ucHJvdG90eXBlID0gbmV3IGksIG4uZXh0ZW5kID0gby5pbmhlcml0cywgdCAmJiBvLmV4dGVuZChuLnByb3RvdHlwZSwgdCksIG4uX19zdXBlcl9fID0gZS5wcm90b3R5cGUsIG4KICAgICAgICAgICAgICAgIH0sIG8ubm9vcCA9IGZ1bmN0aW9uKCkge30sIG8udWlkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQrKwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oKSwgby5pc051bWJlciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlRmxvYXQodCkpICYmIGlzRmluaXRlKHQpCiAgICAgICAgICAgICAgICB9LCBvLmFsbW9zdEVxdWFscyA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModCAtIGUpIDwgbgogICAgICAgICAgICAgICAgfSwgby5hbG1vc3RXaG9sZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IE1hdGgucm91bmQodCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gLSBlIDwgdCAmJiBuICsgZSA+IHQKICAgICAgICAgICAgICAgIH0sIG8ubWF4ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc05hTihlKSA/IHQgOiBNYXRoLm1heCh0LCBlKQogICAgICAgICAgICAgICAgICAgIH0sIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkKICAgICAgICAgICAgICAgIH0sIG8ubWluID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc05hTihlKSA/IHQgOiBNYXRoLm1pbih0LCBlKQogICAgICAgICAgICAgICAgICAgIH0sIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkKICAgICAgICAgICAgICAgIH0sIG8uc2lnbiA9IE1hdGguc2lnbiA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zaWduKHQpCiAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gK3QsIDAgPT09IHQgfHwgaXNOYU4odCkgPyB0IDogdCA+IDAgPyAxIDogLTEKICAgICAgICAgICAgICAgIH0sIG8ubG9nMTAgPSBNYXRoLmxvZzEwID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmxvZzEwKHQpCiAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmxvZyh0KSAvIE1hdGguTE4xMAogICAgICAgICAgICAgICAgfSwgby50b1JhZGlhbnMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKiAoTWF0aC5QSSAvIDE4MCkKICAgICAgICAgICAgICAgIH0sIG8udG9EZWdyZWVzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICogKDE4MCAvIE1hdGguUEkpCiAgICAgICAgICAgICAgICB9LCBvLmdldEFuZ2xlRnJvbVBvaW50ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS54IC0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS55IC0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5zcXJ0KG4gKiBuICsgaSAqIGkpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gTWF0aC5hdGFuMihpLCBuKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA8IC0uNSAqIE1hdGguUEkgJiYgKG8gKz0gMiAqIE1hdGguUEkpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOiBvLAogICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogYQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIG8uZGlzdGFuY2VCZXR3ZWVuUG9pbnRzID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coZS54IC0gdC54LCAyKSArIE1hdGgucG93KGUueSAtIHQueSwgMikpCiAgICAgICAgICAgICAgICB9LCBvLmFsaWFzUGl4ZWwgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJSAyID09PSAwID8gMCA6IC41CiAgICAgICAgICAgICAgICB9LCBvLnNwbGluZUN1cnZlID0gZnVuY3Rpb24odCwgZSwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdC5za2lwID8gZSA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLAogICAgICAgICAgICAgICAgICAgICAgICByID0gbi5za2lwID8gZSA6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBNYXRoLnNxcnQoTWF0aC5wb3coby54IC0gYS54LCAyKSArIE1hdGgucG93KG8ueSAtIGEueSwgMikpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5zcXJ0KE1hdGgucG93KHIueCAtIG8ueCwgMikgKyBNYXRoLnBvdyhyLnkgLSBvLnksIDIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGwgLyAobCArIHMpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gcyAvIChsICsgcyk7CiAgICAgICAgICAgICAgICAgICAgdSA9IGlzTmFOKHUpID8gMCA6IHUsIGQgPSBpc05hTihkKSA/IDAgOiBkOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gaSAqIHUsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBpICogZDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogby54IC0gYyAqIChyLnggLSBhLngpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogby55IC0gYyAqIChyLnkgLSBhLnkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IG8ueCArIGggKiAoci54IC0gYS54KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG8ueSArIGggKiAoci55IC0gYS55KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgby5FUFNJTE9OID0gTnVtYmVyLkVQU0lMT04gfHwgMWUtMTQsIG8uc3BsaW5lQ3VydmVNb25vdG9uZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgbiwgaSwgYSwgciA9ICh0IHx8IFtdKS5tYXAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDogdC5fbW9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFLOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1LOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gci5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IGw7ICsrZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSByW2VdLCAhaS5tb2RlbC5za2lwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGUgPiAwID8gcltlIC0gMV0gOiBudWxsLCBhID0gZSA8IGwgLSAxID8gcltlICsgMV0gOiBudWxsLCBhICYmICFhLm1vZGVsLnNraXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGEubW9kZWwueCAtIGkubW9kZWwueDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmRlbHRhSyA9IDAgIT09IHMgPyAoYS5tb2RlbC55IC0gaS5tb2RlbC55KSAvIHMgOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IW4gfHwgbi5tb2RlbC5za2lwID8gaS5tSyA9IGkuZGVsdGFLIDogIWEgfHwgYS5tb2RlbC5za2lwID8gaS5tSyA9IG4uZGVsdGFLIDogdGhpcy5zaWduKG4uZGVsdGFLKSAhPT0gdGhpcy5zaWduKGkuZGVsdGFLKSA/IGkubUsgPSAwIDogaS5tSyA9IChuLmRlbHRhSyArIGkuZGVsdGFLKSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciB1LCBkLCBjLCBoOwogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBsIC0gMTsgKytlKSBpID0gcltlXSwgYSA9IHJbZSArIDFdLCBpLm1vZGVsLnNraXAgfHwgYS5tb2RlbC5za2lwIHx8IChvLmFsbW9zdEVxdWFscyhpLmRlbHRhSywgMCwgdGhpcy5FUFNJTE9OKSA/IGkubUsgPSBhLm1LID0gMCA6ICh1ID0gaS5tSyAvIGkuZGVsdGFLLCBkID0gYS5tSyAvIGkuZGVsdGFLLCBoID0gTWF0aC5wb3codSwgMikgKyBNYXRoLnBvdyhkLCAyKSwgaCA8PSA5IHx8IChjID0gMyAvIE1hdGguc3FydChoKSwgaS5tSyA9IHUgKiBjICogaS5kZWx0YUssIGEubUsgPSBkICogYyAqIGkuZGVsdGFLKSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBmOwogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBsOyArK2UpIGkgPSByW2VdLCBpLm1vZGVsLnNraXAgfHwgKG4gPSBlID4gMCA/IHJbZSAtIDFdIDogbnVsbCwgYSA9IGUgPCBsIC0gMSA/IHJbZSArIDFdIDogbnVsbCwgbiAmJiAhbi5tb2RlbC5za2lwICYmIChmID0gKGkubW9kZWwueCAtIG4ubW9kZWwueCkgLyAzLCBpLm1vZGVsLmNvbnRyb2xQb2ludFByZXZpb3VzWCA9IGkubW9kZWwueCAtIGYsIGkubW9kZWwuY29udHJvbFBvaW50UHJldmlvdXNZID0gaS5tb2RlbC55IC0gZiAqIGkubUspLCBhICYmICFhLm1vZGVsLnNraXAgJiYgKGYgPSAoYS5tb2RlbC54IC0gaS5tb2RlbC54KSAvIDMsIGkubW9kZWwuY29udHJvbFBvaW50TmV4dFggPSBpLm1vZGVsLnggKyBmLCBpLm1vZGVsLmNvbnRyb2xQb2ludE5leHRZID0gaS5tb2RlbC55ICsgZiAqIGkubUspKQogICAgICAgICAgICAgICAgfSwgby5uZXh0SXRlbSA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IGUgPj0gdC5sZW5ndGggLSAxID8gdFswXSA6IHRbZSArIDFdIDogZSA+PSB0Lmxlbmd0aCAtIDEgPyB0W3QubGVuZ3RoIC0gMV0gOiB0W2UgKyAxXQogICAgICAgICAgICAgICAgfSwgby5wcmV2aW91c0l0ZW0gPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPyBlIDw9IDAgPyB0W3QubGVuZ3RoIC0gMV0gOiB0W2UgLSAxXSA6IGUgPD0gMCA/IHRbMF0gOiB0W2UgLSAxXQogICAgICAgICAgICAgICAgfSwgby5uaWNlTnVtID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCBpID0gTWF0aC5mbG9vcihvLmxvZzEwKHQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQgLyBNYXRoLnBvdygxMCwgaSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPSBlID8gYSA8IDEuNSA/IDEgOiBhIDwgMyA/IDIgOiBhIDwgNyA/IDUgOiAxMCA6IGEgPD0gMSA/IDEgOiBhIDw9IDIgPyAyIDogYSA8PSA1ID8gNSA6IDEwLCBuICogTWF0aC5wb3coMTAsIGkpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgdmFyIHIgPSBvLmVhc2luZ0VmZmVjdHMgPSB7CiAgICAgICAgICAgICAgICAgICAgbGluZWFyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlSW5RdWFkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICogdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZU91dFF1YWQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xICogdCAqICh0IC0gMikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhc2VJbk91dFF1YWQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0IC89IC41KSA8IDEgPyAuNSAqIHQgKiB0IDogLS41ICogKC0tdCAqICh0IC0gMikgLSAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZUluQ3ViaWM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKiB0ICogdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZU91dEN1YmljOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxICogKCh0ID0gdCAvIDEgLSAxKSAqIHQgKiB0ICsgMSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhc2VJbk91dEN1YmljOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodCAvPSAuNSkgPCAxID8gLjUgKiB0ICogdCAqIHQgOiAuNSAqICgodCAtPSAyKSAqIHQgKiB0ICsgMikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhc2VJblF1YXJ0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICogdCAqIHQgKiB0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlT3V0UXVhcnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xICogKCh0ID0gdCAvIDEgLSAxKSAqIHQgKiB0ICogdCAtIDEpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlSW5PdXRRdWFydDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHQgLz0gLjUpIDwgMSA/IC41ICogdCAqIHQgKiB0ICogdCA6IC0uNSAqICgodCAtPSAyKSAqIHQgKiB0ICogdCAtIDIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlSW5RdWludDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAqICh0IC89IDEpICogdCAqIHQgKiB0ICogdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZU91dFF1aW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxICogKCh0ID0gdCAvIDEgLSAxKSAqIHQgKiB0ICogdCAqIHQgKyAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZUluT3V0UXVpbnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0IC89IC41KSA8IDEgPyAuNSAqIHQgKiB0ICogdCAqIHQgKiB0IDogLjUgKiAoKHQgLT0gMikgKiB0ICogdCAqIHQgKiB0ICsgMikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhc2VJblNpbmU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xICogTWF0aC5jb3ModCAvIDEgKiAoTWF0aC5QSSAvIDIpKSArIDEKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhc2VPdXRTaW5lOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxICogTWF0aC5zaW4odCAvIDEgKiAoTWF0aC5QSSAvIDIpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZUluT3V0U2luZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLS41ICogKE1hdGguY29zKE1hdGguUEkgKiB0IC8gMSkgLSAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZUluRXhwbzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdCA/IDEgOiAxICogTWF0aC5wb3coMiwgMTAgKiAodCAvIDEgLSAxKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhc2VPdXRFeHBvOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSB0ID8gMSA6IDEgKiAoLU1hdGgucG93KDIsIC0xMCAqIHQgLyAxKSArIDEpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlSW5PdXRFeHBvOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSB0ID8gMCA6IDEgPT09IHQgPyAxIDogKHQgLz0gLjUpIDwgMSA/IC41ICogTWF0aC5wb3coMiwgMTAgKiAodCAtIDEpKSA6IC41ICogKC1NYXRoLnBvdygyLCAtMTAgKiAtLXQpICsgMikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhc2VJbkNpcmM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPj0gMSA/IHQgOiAtMSAqIChNYXRoLnNxcnQoMSAtICh0IC89IDEpICogdCkgLSAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZU91dENpcmM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgKiBNYXRoLnNxcnQoMSAtICh0ID0gdCAvIDEgLSAxKSAqIHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlSW5PdXRDaXJjOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodCAvPSAuNSkgPCAxID8gLS41ICogKE1hdGguc3FydCgxIC0gdCAqIHQpIC0gMSkgOiAuNSAqIChNYXRoLnNxcnQoMSAtICh0IC09IDIpICogdCkgKyAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZUluRWxhc3RpYzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IDEuNzAxNTgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdCA/IDAgOiAxID09PSAodCAvPSAxKSA/IDEgOiAobiB8fCAobiA9IC4zKSwgaSA8IE1hdGguYWJzKDEpID8gKGkgPSAxLCBlID0gbiAvIDQpIDogZSA9IG4gLyAoMiAqIE1hdGguUEkpICogTWF0aC5hc2luKDEgLyBpKSwgLShpICogTWF0aC5wb3coMiwgMTAgKiAodCAtPSAxKSkgKiBNYXRoLnNpbigoMSAqIHQgLSBlKSAqICgyICogTWF0aC5QSSkgLyBuKSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlT3V0RWxhc3RpYzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IDEuNzAxNTgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdCA/IDAgOiAxID09PSAodCAvPSAxKSA/IDEgOiAobiB8fCAobiA9IC4zKSwgaSA8IE1hdGguYWJzKDEpID8gKGkgPSAxLCBlID0gbiAvIDQpIDogZSA9IG4gLyAoMiAqIE1hdGguUEkpICogTWF0aC5hc2luKDEgLyBpKSwgaSAqIE1hdGgucG93KDIsIC0xMCAqIHQpICogTWF0aC5zaW4oKDEgKiB0IC0gZSkgKiAoMiAqIE1hdGguUEkpIC8gbikgKyAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZUluT3V0RWxhc3RpYzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IDEuNzAxNTgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdCA/IDAgOiAyID09PSAodCAvPSAuNSkgPyAxIDogKG4gfHwgKG4gPSAxICogKC4zICogMS41KSksIGkgPCBNYXRoLmFicygxKSA/IChpID0gMSwgZSA9IG4gLyA0KSA6IGUgPSBuIC8gKDIgKiBNYXRoLlBJKSAqIE1hdGguYXNpbigxIC8gaSksIHQgPCAxID8gLS41ICogKGkgKiBNYXRoLnBvdygyLCAxMCAqICh0IC09IDEpKSAqIE1hdGguc2luKCgxICogdCAtIGUpICogKDIgKiBNYXRoLlBJKSAvIG4pKSA6IGkgKiBNYXRoLnBvdygyLCAtMTAgKiAodCAtPSAxKSkgKiBNYXRoLnNpbigoMSAqIHQgLSBlKSAqICgyICogTWF0aC5QSSkgLyBuKSAqIC41ICsgMSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhc2VJbkJhY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAxLjcwMTU4OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAqICh0IC89IDEpICogdCAqICgoZSArIDEpICogdCAtIGUpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlT3V0QmFjazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IDEuNzAxNTg7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxICogKCh0ID0gdCAvIDEgLSAxKSAqIHQgKiAoKGUgKyAxKSAqIHQgKyBlKSArIDEpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlSW5PdXRCYWNrOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gMS43MDE1ODsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0IC89IC41KSA8IDEgPyAuNSAqICh0ICogdCAqICgoKGUgKj0gMS41MjUpICsgMSkgKiB0IC0gZSkpIDogLjUgKiAoKHQgLT0gMikgKiB0ICogKCgoZSAqPSAxLjUyNSkgKyAxKSAqIHQgKyBlKSArIDIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlSW5Cb3VuY2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgLSByLmVhc2VPdXRCb3VuY2UoMSAtIHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlT3V0Qm91bmNlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodCAvPSAxKSA8IDEgLyAyLjc1ID8gMSAqICg3LjU2MjUgKiB0ICogdCkgOiB0IDwgMiAvIDIuNzUgPyAxICogKDcuNTYyNSAqICh0IC09IDEuNSAvIDIuNzUpICogdCArIC43NSkgOiB0IDwgMi41IC8gMi43NSA/IDEgKiAoNy41NjI1ICogKHQgLT0gMi4yNSAvIDIuNzUpICogdCArIC45Mzc1KSA6IDEgKiAoNy41NjI1ICogKHQgLT0gMi42MjUgLyAyLjc1KSAqIHQgKyAuOTg0Mzc1KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFzZUluT3V0Qm91bmNlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IDwgLjUgPyAuNSAqIHIuZWFzZUluQm91bmNlKDIgKiB0KSA6IC41ICogci5lYXNlT3V0Qm91bmNlKDIgKiB0IC0gMSkgKyAuNQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBvLnJlcXVlc3RBbmltRnJhbWUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCIgPT0gdHlwZW9mIHdpbmRvdyA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdCgpCiAgICAgICAgICAgICAgICAgICAgfSA6IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dCh0LCAxZTMgLyA2MCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KCksIG8uZ2V0UmVsYXRpdmVQb3NpdGlvbiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSwgYSA9IHQub3JpZ2luYWxFdmVudCB8fCB0LAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5jdXJyZW50VGFyZ2V0IHx8IHQuc3JjRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLnRvdWNoZXM7CiAgICAgICAgICAgICAgICAgICAgcyAmJiBzLmxlbmd0aCA+IDAgPyAobiA9IHNbMF0uY2xpZW50WCwgaSA9IHNbMF0uY2xpZW50WSkgOiAobiA9IGEuY2xpZW50WCwgaSA9IGEuY2xpZW50WSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBwYXJzZUZsb2F0KG8uZ2V0U3R5bGUociwgInBhZGRpbmctbGVmdCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHBhcnNlRmxvYXQoby5nZXRTdHlsZShyLCAicGFkZGluZy10b3AiKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwYXJzZUZsb2F0KG8uZ2V0U3R5bGUociwgInBhZGRpbmctcmlnaHQiKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBwYXJzZUZsb2F0KG8uZ2V0U3R5bGUociwgInBhZGRpbmctYm90dG9tIikpLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gbC5yaWdodCAtIGwubGVmdCAtIHUgLSBjLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gbC5ib3R0b20gLSBsLnRvcCAtIGQgLSBoOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuID0gTWF0aC5yb3VuZCgobiAtIGwubGVmdCAtIHUpIC8gZiAqIHIud2lkdGggLyBlLmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvKSwgaSA9IE1hdGgucm91bmQoKGkgLSBsLnRvcCAtIGQpIC8gZyAqIHIuaGVpZ2h0IC8gZS5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbyksIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgeTogaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIG8uYWRkRXZlbnQgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyID8gdC5hZGRFdmVudExpc3RlbmVyKGUsIG4pIDogdC5hdHRhY2hFdmVudCA/IHQuYXR0YWNoRXZlbnQoIm9uIiArIGUsIG4pIDogdFsib24iICsgZV0gPSBuCiAgICAgICAgICAgICAgICB9LCBvLnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIHQucmVtb3ZlRXZlbnRMaXN0ZW5lciA/IHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBuLCAhMSkgOiB0LmRldGFjaEV2ZW50ID8gdC5kZXRhY2hFdmVudCgib24iICsgZSwgbikgOiB0WyJvbiIgKyBlXSA9IG8ubm9vcAogICAgICAgICAgICAgICAgfSwgby5nZXRDb25zdHJhaW50V2lkdGggPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEodCwgIm1heC13aWR0aCIsICJjbGllbnRXaWR0aCIpCiAgICAgICAgICAgICAgICB9LCBvLmdldENvbnN0cmFpbnRIZWlnaHQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEodCwgIm1heC1oZWlnaHQiLCAiY2xpZW50SGVpZ2h0IikKICAgICAgICAgICAgICAgIH0sIG8uZ2V0TWF4aW11bVdpZHRoID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5wYXJlbnROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gcGFyc2VJbnQoby5nZXRTdHlsZShlLCAicGFkZGluZy1sZWZ0IiksIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHBhcnNlSW50KG8uZ2V0U3R5bGUoZSwgInBhZGRpbmctcmlnaHQiKSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5jbGllbnRXaWR0aCAtIG4gLSBpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gby5nZXRDb25zdHJhaW50V2lkdGgodCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHIpID8gYSA6IE1hdGgubWluKGEsIHIpCiAgICAgICAgICAgICAgICB9LCBvLmdldE1heGltdW1IZWlnaHQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnBhcmVudE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBwYXJzZUludChvLmdldFN0eWxlKGUsICJwYWRkaW5nLXRvcCIpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBwYXJzZUludChvLmdldFN0eWxlKGUsICJwYWRkaW5nLWJvdHRvbSIpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmNsaWVudEhlaWdodCAtIG4gLSBpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gby5nZXRDb25zdHJhaW50SGVpZ2h0KHQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpc05hTihyKSA/IGEgOiBNYXRoLm1pbihhLCByKQogICAgICAgICAgICAgICAgfSwgby5nZXRTdHlsZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5jdXJyZW50U3R5bGUgPyB0LmN1cnJlbnRTdHlsZVtlXSA6IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKQogICAgICAgICAgICAgICAgfSwgby5yZXRpbmFTY2FsZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuY3VycmVudERldmljZVBpeGVsUmF0aW8gPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxOwogICAgICAgICAgICAgICAgICAgIGlmICgxICE9PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5jYW52YXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC53aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgbi5oZWlnaHQgPSBpICogZSwgbi53aWR0aCA9IGEgKiBlLCB0LmN0eC5zY2FsZShlLCBlKSwgbi5zdHlsZS5oZWlnaHQgPSBpICsgInB4Iiwgbi5zdHlsZS53aWR0aCA9IGEgKyAicHgiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgby5jbGVhciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LmN0eC5jbGVhclJlY3QoMCwgMCwgdC53aWR0aCwgdC5oZWlnaHQpCiAgICAgICAgICAgICAgICB9LCBvLmZvbnRTdHJpbmcgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyAiICIgKyB0ICsgInB4ICIgKyBuCiAgICAgICAgICAgICAgICB9LCBvLmxvbmdlc3RUZXh0ID0gZnVuY3Rpb24odCwgZSwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIGkgPSBpIHx8IHt9OwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gaS5kYXRhID0gaS5kYXRhIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICByID0gaS5nYXJiYWdlQ29sbGVjdCA9IGkuZ2FyYmFnZUNvbGxlY3QgfHwgW107CiAgICAgICAgICAgICAgICAgICAgaS5mb250ICE9PSBlICYmIChhID0gaS5kYXRhID0ge30sIHIgPSBpLmdhcmJhZ2VDb2xsZWN0ID0gW10sIGkuZm9udCA9IGUpLCB0LmZvbnQgPSBlOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gMDsKICAgICAgICAgICAgICAgICAgICBvLmVhY2gobiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUgJiYgbnVsbCAhPT0gZSAmJiBvLmlzQXJyYXkoZSkgIT09ICEwID8gbCA9IG8ubWVhc3VyZVRleHQodCwgYSwgciwgbCwgZSkgOiBvLmlzQXJyYXkoZSkgJiYgby5lYWNoKGUsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gZSB8fCBudWxsID09PSBlIHx8IG8uaXNBcnJheShlKSB8fCAobCA9IG8ubWVhc3VyZVRleHQodCwgYSwgciwgbCwgZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSByLmxlbmd0aCAvIDI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMgPiBuLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IHM7IHUrKykgZGVsZXRlIGFbclt1XV07CiAgICAgICAgICAgICAgICAgICAgICAgIHIuc3BsaWNlKDAsIHMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBsCiAgICAgICAgICAgICAgICB9LCBvLm1lYXN1cmVUZXh0ID0gZnVuY3Rpb24odCwgZSwgbiwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gZVthXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyB8fCAobyA9IGVbYV0gPSB0Lm1lYXN1cmVUZXh0KGEpLndpZHRoLCBuLnB1c2goYSkpLCBvID4gaSAmJiAoaSA9IG8pLCBpCiAgICAgICAgICAgICAgICB9LCBvLm51bWJlck9mTGFiZWxMaW5lcyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uZWFjaCh0LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uaXNBcnJheSh0KSAmJiB0Lmxlbmd0aCA+IGUgJiYgKGUgPSB0Lmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICB9KSwgZQogICAgICAgICAgICAgICAgfSwgby5kcmF3Um91bmRlZFJlY3RhbmdsZSA9IGZ1bmN0aW9uKHQsIGUsIG4sIGksIGEsIG8pIHsKICAgICAgICAgICAgICAgICAgICB0LmJlZ2luUGF0aCgpLCB0Lm1vdmVUbyhlICsgbywgbiksIHQubGluZVRvKGUgKyBpIC0gbywgbiksIHQucXVhZHJhdGljQ3VydmVUbyhlICsgaSwgbiwgZSArIGksIG4gKyBvKSwgdC5saW5lVG8oZSArIGksIG4gKyBhIC0gbyksIHQucXVhZHJhdGljQ3VydmVUbyhlICsgaSwgbiArIGEsIGUgKyBpIC0gbywgbiArIGEpLCB0LmxpbmVUbyhlICsgbywgbiArIGEpLCB0LnF1YWRyYXRpY0N1cnZlVG8oZSwgbiArIGEsIGUsIG4gKyBhIC0gbyksIHQubGluZVRvKGUsIG4gKyBvKSwgdC5xdWFkcmF0aWNDdXJ2ZVRvKGUsIG4sIGUgKyBvLCBuKSwgdC5jbG9zZVBhdGgoKQogICAgICAgICAgICAgICAgfSwgby5jb2xvciA9IGkgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBDYW52YXNHcmFkaWVudCAmJiAoZSA9IHQuZGVmYXVsdHMuZ2xvYmFsLmRlZmF1bHRDb2xvciksIGkoZSkKICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoIkNvbG9yLmpzIG5vdCBmb3VuZCEiKSwgdAogICAgICAgICAgICAgICAgfSwgby5pc0FycmF5ID0gQXJyYXkuaXNBcnJheSA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0KQogICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIltvYmplY3QgQXJyYXldIiA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpCiAgICAgICAgICAgICAgICB9LCBvLmFycmF5RXF1YWxzID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCBhLCByOwogICAgICAgICAgICAgICAgICAgIGlmICghdCB8fCAhZSB8fCB0Lmxlbmd0aCAhPT0gZS5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwLCBpID0gdC5sZW5ndGg7IG4gPCBpOyArK24pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gdFtuXSwgciA9IGVbbl0sIGEgaW5zdGFuY2VvZiBBcnJheSAmJiByIGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghby5hcnJheUVxdWFscyhhLCByKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYSAhPT0gcikgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSwgby5jYWxsYmFjayA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB0ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQuY2FsbCAmJiB0LmFwcGx5KG4sIGUpCiAgICAgICAgICAgICAgICB9LCBvLmdldEhvdmVyQ29sb3IgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBDYW52YXNQYXR0ZXJuID8gdCA6IG8uY29sb3IodCkuc2F0dXJhdGUoLjUpLmRhcmtlbiguMSkucmdiU3RyaW5nKCkKICAgICAgICAgICAgICAgIH0sIG8uY2FsbENhbGxiYWNrID0gby5jYWxsYmFjawogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICAzOiAzCiAgICAgICAgfV0sCiAgICAgICAgMjc6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZSh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubmF0aXZlID8gewogICAgICAgICAgICAgICAgICAgICAgICB4OiB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQueQogICAgICAgICAgICAgICAgICAgIH0gOiByLmdldFJlbGF0aXZlUG9zaXRpb24odCwgZSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSwgYSwgbywgciwgbCA9IHQuZGF0YS5kYXRhc2V0czsKICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBvID0gbC5sZW5ndGg7IGkgPCBvOyArK2kpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmlzRGF0YXNldFZpc2libGUoaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSB0LmdldERhdGFzZXRNZXRhKGkpLCBhID0gMCwgciA9IG4uZGF0YS5sZW5ndGg7IGEgPCByOyArK2EpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG4uZGF0YVthXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLl92aWV3LnNraXAgfHwgZShzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gW107CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4odCwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmluUmFuZ2UoZS54LCBlLnkpICYmIGkucHVzaCh0KQogICAgICAgICAgICAgICAgICAgIH0pLCBpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYSh0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBbXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSB8fCAoYSA9IHIuZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKSwgbih0LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSB8fCB0LmluUmFuZ2UoZS54LCBlLnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuZ2V0Q2VudGVyUG9pbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYShlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPCBvID8gKGwgPSBbdF0sIG8gPSByKSA6IHIgPT09IG8gJiYgbC5wdXNoKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgbAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8odCwgbiwgbykgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gZShuLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0LnggLSBlLngpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvLmludGVyc2VjdCA/IGkodCwgcikgOiBhKHQsIHIsICExLCBsKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzLmxlbmd0aCA/ICh0LmRhdGEuZGF0YXNldHMuZm9yRWFjaChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmlzRGF0YXNldFZpc2libGUobikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5nZXREYXRhc2V0TWV0YShuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5kYXRhW3NbMF0uX2luZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgJiYgIWEuX3ZpZXcuc2tpcCAmJiB1LnB1c2goYSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCB1KSA6IFtdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgciA9IHQuaGVscGVyczsKICAgICAgICAgICAgICAgIHQuSW50ZXJhY3Rpb24gPSB7CiAgICAgICAgICAgICAgICAgICAgbW9kZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUoaSwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4odCwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmluUmFuZ2UoYS54LCBhLnkpKSByZXR1cm4gby5wdXNoKHQpLCBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgby5zbGljZSgwLCAxKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbywKICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IGZ1bmN0aW9uKHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZShuLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gby5pbnRlcnNlY3QgPyBpKHQsIHIpIDogYSh0LCByLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC5sZW5ndGggPiAwICYmIChsID0gdC5nZXREYXRhc2V0TWV0YShsWzBdLl9kYXRhc2V0SW5kZXgpLmRhdGEpLCBsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ4LWF4aXMiOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LCBlLCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQ6IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZShuLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpKHQsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG5lYXJlc3Q6IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZShuLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYSh0LCBvLCBpLmludGVyc2VjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5sZW5ndGggPiAxICYmIHIuc29ydChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmdldEFyZWEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuZ2V0QXJlYSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbiAtIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IGEgJiYgKGEgPSB0Ll9kYXRhc2V0SW5kZXggLSBlLl9kYXRhc2V0SW5kZXgpLCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgci5zbGljZSgwLCAxKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB4OiBmdW5jdGlvbih0LCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGUoaSwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuKHQsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmluWFJhbmdlKG8ueCkgJiYgci5wdXNoKHQpLCB0LmluUmFuZ2Uoby54LCBvLnkpICYmIChsID0gITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYS5pbnRlcnNlY3QgJiYgIWwgJiYgKHIgPSBbXSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeTogZnVuY3Rpb24odCwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlKGksIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbih0LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5pbllSYW5nZShvLnkpICYmIHIucHVzaCh0KSwgdC5pblJhbmdlKG8ueCwgby55KSAmJiAobCA9ICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEuaW50ZXJzZWN0ICYmICFsICYmIChyID0gW10pLCByCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMjg6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3QodCwgZSksIHRoaXMKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gdC5kZWZhdWx0cyA9IHsKICAgICAgICAgICAgICAgICAgICBnbG9iYWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2l2ZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmVBbmltYXRpb25EdXJhdGlvbjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogWyJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAiY2xpY2siLCAidG91Y2hzdGFydCIsICJ0b3VjaG1vdmUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSG92ZXI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAibmVhcmVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Q6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IDQwMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Q29sb3I6ICJyZ2JhKDAsMCwwLDAuMSkiLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Rm9udENvbG9yOiAiIzY2NiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGb250RmFtaWx5OiAiJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsICdBcmlhbCcsIHNhbnMtc2VyaWYiLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Rm9udFNpemU6IDEyLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Rm9udFN0eWxlOiAibm9ybWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xpbmVzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmRDYWxsYmFjazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHVzaCgnPHVsIGNsYXNzPSInICsgdC5pZCArICctbGVnZW5kIj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5kYXRhLmRhdGFzZXRzLmxlbmd0aDsgbisrKSBlLnB1c2goJzxsaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonICsgdC5kYXRhLmRhdGFzZXRzW25dLmJhY2tncm91bmRDb2xvciArICciPjwvc3Bhbj4nKSwgdC5kYXRhLmRhdGFzZXRzW25dLmxhYmVsICYmIGUucHVzaCh0LmRhdGEuZGF0YXNldHNbbl0ubGFiZWwpLCBlLnB1c2goIjwvbGk+Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wdXNoKCI8L3VsPiIpLCBlLmpvaW4oIiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LkNoYXJ0ID0gdCwgdAogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDI5OiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLndoZXJlKHQsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQucG9zaXRpb24gPT09IGUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHQuZm9yRWFjaChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Ll90bXBJbmRleF8gPSBlLCB0CiAgICAgICAgICAgICAgICAgICAgfSksIHQuc29ydChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZSA/IG4gOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUgPyB0IDogbjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkud2VpZ2h0ID09PSBhLndlaWdodCA/IGkuX3RtcEluZGV4XyAtIGEuX3RtcEluZGV4XyA6IGkud2VpZ2h0IC0gYS53ZWlnaHQKICAgICAgICAgICAgICAgICAgICB9KSwgdC5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHQuX3RtcEluZGV4XwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgaSA9IHQuaGVscGVyczsKICAgICAgICAgICAgICAgIHQubGF5b3V0U2VydmljZSA9IHsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0czoge30sCiAgICAgICAgICAgICAgICAgICAgYWRkQm94OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuYm94ZXMgfHwgKHQuYm94ZXMgPSBbXSksIGUuZnVsbFdpZHRoID0gZS5mdWxsV2lkdGggfHwgITEsIGUucG9zaXRpb24gPSBlLnBvc2l0aW9uIHx8ICJ0b3AiLCBlLndlaWdodCA9IGUud2VpZ2h0IHx8IDAsIHQuYm94ZXMucHVzaChlKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQm94OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5ib3hlcyA/IHQuYm94ZXMuaW5kZXhPZihlKSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICBuICE9PSAtMSAmJiB0LmJveGVzLnNwbGljZShuLCAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlOiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGksIGEgPSBbImZ1bGxXaWR0aCIsICJwb3NpdGlvbiIsICJ3ZWlnaHQiXSwgbyA9IGEubGVuZ3RoLCByID0gMDsgciA8IG87ICsrcikgaSA9IGFbcl0sIG4uaGFzT3duUHJvcGVydHkoaSkgJiYgKGVbaV0gPSBuW2ldKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbih0LCBhLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIG4gPSB0LmlzSG9yaXpvbnRhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA/IChlID0gdC51cGRhdGUodC5mdWxsV2lkdGggPyBrIDogSSwgRCksIEEgLT0gZS5oZWlnaHQpIDogKGUgPSB0LnVwZGF0ZShDLCBTKSwgSSAtPSBlLndpZHRoKSwgUC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblNpemU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94OiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gaS5maW5kTmV4dFdoZXJlKFAsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5ib3ggPT09IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBNYXRoLm1heChMLCBfKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBNYXRoLm1heChWLCBUKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnVwZGF0ZSh0LmZ1bGxXaWR0aCA/IGsgOiBJLCB3IC8gMiwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdC51cGRhdGUoZS5taW5TaXplLndpZHRoLCBBKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gaS5maW5kTmV4dFdoZXJlKFAsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYm94ID09PSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgdC51cGRhdGUoZS5taW5TaXplLndpZHRoLCBBLCBuKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaXNIb3Jpem9udGFsKCkgPyAodC5sZWZ0ID0gdC5mdWxsV2lkdGggPyBoIDogTCwgdC5yaWdodCA9IHQuZnVsbFdpZHRoID8gYSAtIGYgOiBMICsgSSwgdC50b3AgPSBxLCB0LmJvdHRvbSA9IHEgKyB0LmhlaWdodCwgcSA9IHQuYm90dG9tKSA6ICh0LmxlZnQgPSBILCB0LnJpZ2h0ID0gSCArIHQud2lkdGgsIHQudG9wID0gTywgdC5ib3R0b20gPSBPICsgQSwgSCA9IHQucmlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdC5vcHRpb25zLmxheW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZCA/IGQucGFkZGluZyA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hTihjKSA/IChoID0gYy5sZWZ0IHx8IDAsIGYgPSBjLnJpZ2h0IHx8IDAsIGcgPSBjLnRvcCB8fCAwLCBwID0gYy5ib3R0b20gfHwgMCkgOiAoaCA9IGMsIGYgPSBjLCBnID0gYywgcCA9IGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBlKHQuYm94ZXMsICJsZWZ0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGUodC5ib3hlcywgInJpZ2h0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGUodC5ib3hlcywgInRvcCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBlKHQuYm94ZXMsICJib3R0b20iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gZSh0LmJveGVzLCAiY2hhcnRBcmVhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKG0sICEwKSwgbih2LCAhMSksIG4oYiwgITApLCBuKHgsICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gYSAtIGggLSBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBvIC0gZyAtIHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IGsgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSB3IC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gKGEgLSBNKSAvIChtLmxlbmd0aCArIHYubGVuZ3RoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEID0gKG8gLSBTKSAvIChiLmxlbmd0aCArIHgubGVuZ3RoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmVhY2gobS5jb25jYXQodiwgYiwgeCksIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF8gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5lYWNoKGIuY29uY2F0KHgpLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuZ2V0UGFkZGluZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuZ2V0UGFkZGluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gTWF0aC5tYXgoXywgZS5sZWZ0KSwgVCA9IE1hdGgubWF4KFQsIGUucmlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuZWFjaChtLmNvbmNhdCh2KSwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmdldFBhZGRpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmdldFBhZGRpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRiA9IE1hdGgubWF4KEYsIGUudG9wKSwgUiA9IE1hdGgubWF4KFIsIGUuYm90dG9tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEwgPSBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYgPSBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5lYWNoKG0uY29uY2F0KHYpLCBsKSwgaS5lYWNoKG0sIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMICs9IHQud2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmVhY2godiwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYgKz0gdC53aWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuZWFjaChiLmNvbmNhdCh4KSwgbCksIGkuZWFjaChiLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyArPSB0LmhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuZWFjaCh4LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeiArPSB0LmhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuZWFjaChtLmNvbmNhdCh2KSwgcyksIEwgPSBoLCBWID0gZiwgTyA9IGcsIHogPSBwLCBpLmVhY2gobSwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgKz0gdC53aWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuZWFjaCh2LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgViArPSB0LndpZHRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5lYWNoKGIsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPICs9IHQuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5lYWNoKHgsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ICs9IHQuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCID0gTWF0aC5tYXgoXyAtIEwsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTCArPSBCLCBWICs9IE1hdGgubWF4KFQgLSBWLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBXID0gTWF0aC5tYXgoRiAtIE8sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTyArPSBXLCB6ICs9IE1hdGgubWF4KFIgLSB6LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBOID0gbyAtIE8gLSB6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSBhIC0gTCAtIFY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID09PSBJICYmIE4gPT09IEEgfHwgKGkuZWFjaChtLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5oZWlnaHQgPSBOCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5lYWNoKHYsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmhlaWdodCA9IE4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmVhY2goYiwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZnVsbFdpZHRoIHx8ICh0LndpZHRoID0gRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmVhY2goeCwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZnVsbFdpZHRoIHx8ICh0LndpZHRoID0gRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBBID0gTiwgSSA9IEUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEggPSBoICsgQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gZyArIFc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmVhY2gobS5jb25jYXQoYiksIHUpLCBIICs9IEksIHEgKz0gQSwgaS5lYWNoKHYsIHUpLCBpLmVhY2goeCwgdSksIHQuY2hhcnRBcmVhID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBPLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBMICsgSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IE8gKyBBCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpLmVhY2goeSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGVmdCA9IHQuY2hhcnRBcmVhLmxlZnQsIGUudG9wID0gdC5jaGFydEFyZWEudG9wLCBlLnJpZ2h0ID0gdC5jaGFydEFyZWEucmlnaHQsIGUuYm90dG9tID0gdC5jaGFydEFyZWEuYm90dG9tLCBlLnVwZGF0ZShJLCBBKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAzMDogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHQuaGVscGVyczsKICAgICAgICAgICAgICAgIHQuZGVmYXVsdHMuZ2xvYmFsLnBsdWdpbnMgPSB7fSwgdC5wbHVnaW5zID0gewogICAgICAgICAgICAgICAgICAgIF9wbHVnaW5zOiBbXSwKICAgICAgICAgICAgICAgICAgICBfY2FjaGVJZDogMCwKICAgICAgICAgICAgICAgICAgICByZWdpc3RlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX3BsdWdpbnM7CiAgICAgICAgICAgICAgICAgICAgICAgIFtdLmNvbmNhdCh0KS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaW5kZXhPZih0KSA9PT0gLTEgJiYgZS5wdXNoKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9jYWNoZUlkKysKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9wbHVnaW5zOwogICAgICAgICAgICAgICAgICAgICAgICBbXS5jb25jYXQodCkuZm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuaW5kZXhPZih0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gIT09IC0xICYmIGUuc3BsaWNlKG4sIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9jYWNoZUlkKysKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNsZWFyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGx1Z2lucyA9IFtdLCB0aGlzLl9jYWNoZUlkKysKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNvdW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BsdWdpbnMubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRBbGw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGx1Z2lucwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbm90aWZ5OiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBhLCBvLCByLCBsLCBzID0gdGhpcy5kZXNjcmlwdG9ycyh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHU7ICsraSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gc1tpXSwgbyA9IGEucGx1Z2luLCBsID0gb1tlXSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbCAmJiAociA9IFt0XS5jb25jYXQobiB8fCBbXSksIHIucHVzaChhLm9wdGlvbnMpLCBsLmFwcGx5KG8sIHIpID09PSAhMSkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yczogZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4uX3BsdWdpbnMgfHwgKG4uX3BsdWdpbnMgPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmlkID09PSB0aGlzLl9jYWNoZUlkKSByZXR1cm4gaS5kZXNjcmlwdG9yczsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuICYmIG4uY29uZmlnIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuZGVmYXVsdHMuZ2xvYmFsLnBsdWdpbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gci5vcHRpb25zICYmIHIub3B0aW9ucy5wbHVnaW5zIHx8IHt9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGx1Z2lucy5jb25jYXQoci5wbHVnaW5zIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYS5pbmRleE9mKHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByICE9PSAhMSAmJiAociA9PT0gITAgJiYgKHIgPSBlLmNsb25lKGxbaV0pKSwgYS5wdXNoKHQpLCBvLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW46IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHIgfHwge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuZGVzY3JpcHRvcnMgPSBvLCBpLmlkID0gdGhpcy5fY2FjaGVJZCwgbwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQucGx1Z2luU2VydmljZSA9IHQucGx1Z2lucywgdC5QbHVnaW5CYXNlID0gdC5FbGVtZW50LmV4dGVuZCh7fSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAzMTogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5pc0FycmF5KGUpID8gaS5sb25nZXN0VGV4dCh0LCBuLCBlKSA6IHQubWVhc3VyZVRleHQoZSkud2lkdGgKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkuZ2V0VmFsdWVPckRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmRlZmF1bHRzLmdsb2JhbCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4oZS5mb250U2l6ZSwgYS5kZWZhdWx0Rm9udFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gbihlLmZvbnRTdHlsZSwgYS5kZWZhdWx0Rm9udFN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4oZS5mb250RmFtaWx5LCBhLmRlZmF1bHRGb250RmFtaWx5KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBvLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogciwKICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5OiBsLAogICAgICAgICAgICAgICAgICAgICAgICBmb250OiBpLmZvbnRTdHJpbmcobywgciwgbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgaSA9IHQuaGVscGVyczsKICAgICAgICAgICAgICAgIHQuZGVmYXVsdHMuc2NhbGUgPSB7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogITAsCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICBncmlkTGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAicmdiYSgwLCAwLCAwLCAwLjEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgbGluZVdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkcmF3Qm9yZGVyOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZHJhd09uQ2hhcnRBcmVhOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1RpY2tzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgdGlja01hcmtMZW5ndGg6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICB6ZXJvTGluZVdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB6ZXJvTGluZUNvbG9yOiAicmdiYSgwLDAsMCwwLjI1KSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHplcm9MaW5lQm9yZGVyRGFzaDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHplcm9MaW5lQm9yZGVyRGFzaE9mZnNldDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0R3JpZExpbmVzOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyRGFzaDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckRhc2hPZmZzZXQ6IDAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNjYWxlTGFiZWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5BdFplcm86ICExLAogICAgICAgICAgICAgICAgICAgICAgICBtaW5Sb3RhdGlvbjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4Um90YXRpb246IDUwLAogICAgICAgICAgICAgICAgICAgICAgICBtaXJyb3I6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLAogICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Ta2lwOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1NraXBQYWRkaW5nOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbE9mZnNldDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IHQuVGlja3MuZm9ybWF0dGVycy52YWx1ZXMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LlNjYWxlID0gdC5FbGVtZW50LmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgZ2V0UGFkZGluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHQucGFkZGluZ0xlZnQgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogdC5wYWRkaW5nVG9wIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogdC5wYWRkaW5nUmlnaHQgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogdC5wYWRkaW5nQm90dG9tIHx8IDAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYmVmb3JlVXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlVXBkYXRlLCBbdGhpc10pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5iZWZvcmVVcGRhdGUoKSwgYS5tYXhXaWR0aCA9IHQsIGEubWF4SGVpZ2h0ID0gZSwgYS5tYXJnaW5zID0gaS5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4pLCBhLmxvbmdlc3RUZXh0Q2FjaGUgPSBhLmxvbmdlc3RUZXh0Q2FjaGUgfHwge30sIGEuYmVmb3JlU2V0RGltZW5zaW9ucygpLCBhLnNldERpbWVuc2lvbnMoKSwgYS5hZnRlclNldERpbWVuc2lvbnMoKSwgYS5iZWZvcmVEYXRhTGltaXRzKCksIGEuZGV0ZXJtaW5lRGF0YUxpbWl0cygpLCBhLmFmdGVyRGF0YUxpbWl0cygpLCBhLmJlZm9yZUJ1aWxkVGlja3MoKSwgYS5idWlsZFRpY2tzKCksIGEuYWZ0ZXJCdWlsZFRpY2tzKCksIGEuYmVmb3JlVGlja1RvTGFiZWxDb252ZXJzaW9uKCksIGEuY29udmVydFRpY2tzVG9MYWJlbHMoKSwgYS5hZnRlclRpY2tUb0xhYmVsQ29udmVyc2lvbigpLCBhLmJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbigpLCBhLmNhbGN1bGF0ZVRpY2tSb3RhdGlvbigpLCBhLmFmdGVyQ2FsY3VsYXRlVGlja1JvdGF0aW9uKCksIGEuYmVmb3JlRml0KCksIGEuZml0KCksIGEuYWZ0ZXJGaXQoKSwgYS5hZnRlclVwZGF0ZSgpLCBhLm1pblNpemUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFmdGVyVXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJVcGRhdGUsIFt0aGlzXSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJlZm9yZVNldERpbWVuc2lvbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5iZWZvcmVTZXREaW1lbnNpb25zLCBbdGhpc10pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXREaW1lbnNpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB0LmlzSG9yaXpvbnRhbCgpID8gKHQud2lkdGggPSB0Lm1heFdpZHRoLCB0LmxlZnQgPSAwLCB0LnJpZ2h0ID0gdC53aWR0aCkgOiAodC5oZWlnaHQgPSB0Lm1heEhlaWdodCwgdC50b3AgPSAwLCB0LmJvdHRvbSA9IHQuaGVpZ2h0KSwgdC5wYWRkaW5nTGVmdCA9IDAsIHQucGFkZGluZ1RvcCA9IDAsIHQucGFkZGluZ1JpZ2h0ID0gMCwgdC5wYWRkaW5nQm90dG9tID0gMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJTZXREaW1lbnNpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJTZXREaW1lbnNpb25zLCBbdGhpc10pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBiZWZvcmVEYXRhTGltaXRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlRGF0YUxpbWl0cywgW3RoaXNdKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lRGF0YUxpbWl0czogaS5ub29wLAogICAgICAgICAgICAgICAgICAgIGFmdGVyRGF0YUxpbWl0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyRGF0YUxpbWl0cywgW3RoaXNdKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYmVmb3JlQnVpbGRUaWNrczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZUJ1aWxkVGlja3MsIFt0aGlzXSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJ1aWxkVGlja3M6IGkubm9vcCwKICAgICAgICAgICAgICAgICAgICBhZnRlckJ1aWxkVGlja3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5hZnRlckJ1aWxkVGlja3MsIFt0aGlzXSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbiwgW3RoaXNdKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29udmVydFRpY2tzVG9MYWJlbHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5vcHRpb25zLnRpY2tzOwogICAgICAgICAgICAgICAgICAgICAgICB0LnRpY2tzID0gdC50aWNrcy5tYXAoZS51c2VyQ2FsbGJhY2sgfHwgZS5jYWxsYmFjaykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJUaWNrVG9MYWJlbENvbnZlcnNpb24sIFt0aGlzXSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbiwgW3RoaXNdKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlVGlja1JvdGF0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQub3B0aW9ucy50aWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKGEpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmZvbnQgPSBvLmZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYS5taW5Sb3RhdGlvbiB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5vcHRpb25zLmRpc3BsYXkgJiYgdC5pc0hvcml6b250YWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwsIHMsIHUgPSBpLmxvbmdlc3RUZXh0KGUsIG8uZm9udCwgdC50aWNrcywgdC5sb25nZXN0VGV4dENhY2hlKSwgZCA9IHUsIGMgPSB0LmdldFBpeGVsRm9yVGljaygxKSAtIHQuZ2V0UGl4ZWxGb3JUaWNrKDApIC0gNjsgZCA+IGMgJiYgciA8IGEubWF4Um90YXRpb247KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBpLnRvUmFkaWFucyhyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IE1hdGguY29zKGgpLCBzID0gTWF0aC5zaW4oaCksIHMgKiB1ID4gdC5tYXhIZWlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKyssIGQgPSBsICogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0LmxhYmVsUm90YXRpb24gPSByCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZnRlckNhbGN1bGF0ZVRpY2tSb3RhdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyQ2FsY3VsYXRlVGlja1JvdGF0aW9uLCBbdGhpc10pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBiZWZvcmVGaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5iZWZvcmVGaXQsIFt0aGlzXSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZpdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0Lm1pblNpemUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvLnRpY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8uc2NhbGVMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvLmdyaWRMaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBvLmRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdC5pc0hvcml6b250YWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuKHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDEuNSAqIG4obCkuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBvLmdyaWRMaW5lcy50aWNrTWFya0xlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQgPyBhLndpZHRoID0gdC5pc0Z1bGxXaWR0aCgpID8gdC5tYXhXaWR0aCAtIHQubWFyZ2lucy5sZWZ0IC0gdC5tYXJnaW5zLnJpZ2h0IDogdC5tYXhXaWR0aCA6IGEud2lkdGggPSB1ICYmIHMuZHJhd1RpY2tzID8gZiA6IDAsIGQgPyBhLmhlaWdodCA9IHUgJiYgcy5kcmF3VGlja3MgPyBmIDogMCA6IGEuaGVpZ2h0ID0gdC5tYXhIZWlnaHQsIGwuZGlzcGxheSAmJiB1ICYmIChkID8gYS5oZWlnaHQgKz0gaCA6IGEud2lkdGggKz0gaCksIHIuZGlzcGxheSAmJiB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGkubG9uZ2VzdFRleHQodC5jdHgsIGMuZm9udCwgdC50aWNrcywgdC5sb25nZXN0VGV4dENhY2hlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gaS5udW1iZXJPZkxhYmVsTGluZXModC50aWNrcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IC41ICogYy5zaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Lmxvbmdlc3RMYWJlbFdpZHRoID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGkudG9SYWRpYW5zKHQubGFiZWxSb3RhdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBNYXRoLmNvcyh2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IE1hdGguc2luKHYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0geCAqIGcgKyBjLnNpemUgKiBwICsgbSAqIHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5oZWlnaHQgPSBNYXRoLm1pbih0Lm1heEhlaWdodCwgYS5oZWlnaHQgKyB5KSwgdC5jdHguZm9udCA9IGMuZm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgayA9IHQudGlja3NbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBlKHQuY3R4LCBrLCBjLmZvbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNID0gdC50aWNrc1t0LnRpY2tzLmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gZSh0LmN0eCwgTSwgYy5mb250KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICE9PSB0LmxhYmVsUm90YXRpb24gPyAodC5wYWRkaW5nTGVmdCA9ICJib3R0b20iID09PSBvLnBvc2l0aW9uID8gYiAqIHcgKyAzIDogYiAqIG0gKyAzLCB0LnBhZGRpbmdSaWdodCA9ICJib3R0b20iID09PSBvLnBvc2l0aW9uID8gYiAqIG0gKyAzIDogYiAqIFMgKyAzKSA6ICh0LnBhZGRpbmdMZWZ0ID0gdyAvIDIgKyAzLCB0LnBhZGRpbmdSaWdodCA9IFMgLyAyICsgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSByLm1pcnJvciA/IGcgPSAwIDogZyArPSB0Lm9wdGlvbnMudGlja3MucGFkZGluZywgYS53aWR0aCA9IE1hdGgubWluKHQubWF4V2lkdGgsIGEud2lkdGggKyBnKSwgdC5wYWRkaW5nVG9wID0gYy5zaXplIC8gMiwgdC5wYWRkaW5nQm90dG9tID0gYy5zaXplIC8gMgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQuaGFuZGxlTWFyZ2lucygpLCB0LndpZHRoID0gYS53aWR0aCwgdC5oZWlnaHQgPSBhLmhlaWdodAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGFuZGxlTWFyZ2luczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgdC5tYXJnaW5zICYmICh0LnBhZGRpbmdMZWZ0ID0gTWF0aC5tYXgodC5wYWRkaW5nTGVmdCAtIHQubWFyZ2lucy5sZWZ0LCAwKSwgdC5wYWRkaW5nVG9wID0gTWF0aC5tYXgodC5wYWRkaW5nVG9wIC0gdC5tYXJnaW5zLnRvcCwgMCksIHQucGFkZGluZ1JpZ2h0ID0gTWF0aC5tYXgodC5wYWRkaW5nUmlnaHQgLSB0Lm1hcmdpbnMucmlnaHQsIDApLCB0LnBhZGRpbmdCb3R0b20gPSBNYXRoLm1heCh0LnBhZGRpbmdCb3R0b20gLSB0Lm1hcmdpbnMuYm90dG9tLCAwKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFmdGVyRml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJGaXQsIFt0aGlzXSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGlzSG9yaXpvbnRhbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAidG9wIiA9PT0gdGhpcy5vcHRpb25zLnBvc2l0aW9uIHx8ICJib3R0b20iID09PSB0aGlzLm9wdGlvbnMucG9zaXRpb24KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGlzRnVsbFdpZHRoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mdWxsV2lkdGgKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFJpZ2h0VmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHQgfHwgInVuZGVmaW5lZCIgPT0gdHlwZW9mIHQgPyBOYU4gOiAibnVtYmVyIiAhPSB0eXBlb2YgdCB8fCBpc0Zpbml0ZSh0KSA/ICJvYmplY3QiID09IHR5cGVvZiB0ID8gdCBpbnN0YW5jZW9mIERhdGUgfHwgdC5pc1ZhbGlkID8gdCA6IHRoaXMuZ2V0UmlnaHRWYWx1ZSh0aGlzLmlzSG9yaXpvbnRhbCgpID8gdC54IDogdC55KSA6IHQgOiBOYU4KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldExhYmVsRm9ySW5kZXg6IGkubm9vcCwKICAgICAgICAgICAgICAgICAgICBnZXRQaXhlbEZvclZhbHVlOiBpLm5vb3AsCiAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWVGb3JQaXhlbDogaS5ub29wLAogICAgICAgICAgICAgICAgICAgIGdldFBpeGVsRm9yVGljazogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmlzSG9yaXpvbnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4ud2lkdGggLSAobi5wYWRkaW5nTGVmdCArIG4ucGFkZGluZ1JpZ2h0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaSAvIE1hdGgubWF4KG4udGlja3MubGVuZ3RoIC0gKG4ub3B0aW9ucy5ncmlkTGluZXMub2Zmc2V0R3JpZExpbmVzID8gMCA6IDEpLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYSAqIHQgKyBuLnBhZGRpbmdMZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiAobyArPSBhIC8gMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4ubGVmdCArIE1hdGgucm91bmQobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gciArPSBuLmlzRnVsbFdpZHRoKCkgPyBuLm1hcmdpbnMubGVmdCA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4uaGVpZ2h0IC0gKG4ucGFkZGluZ1RvcCArIG4ucGFkZGluZ0JvdHRvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnRvcCArIHQgKiAobCAvIChuLnRpY2tzLmxlbmd0aCAtIDEpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0UGl4ZWxGb3JEZWNpbWFsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS53aWR0aCAtIChlLnBhZGRpbmdMZWZ0ICsgZS5wYWRkaW5nUmlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuICogdCArIGUucGFkZGluZ0xlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUubGVmdCArIE1hdGgucm91bmQoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSArPSBlLmlzRnVsbFdpZHRoKCkgPyBlLm1hcmdpbnMubGVmdCA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50b3AgKyB0ICogZS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEJhc2VQaXhlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBpeGVsRm9yVmFsdWUodGhpcy5nZXRCYXNlVmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEJhc2VWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0Lm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0Lm1heDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYmVnaW5BdFplcm8gPyAwIDogZSA8IDAgJiYgbiA8IDAgPyBuIDogZSA+IDAgJiYgbiA+IDAgPyBlIDogMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZHJhdzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYS5vcHRpb25zOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5kaXNwbGF5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbCwgcyA9IGEuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0LmRlZmF1bHRzLmdsb2JhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gby50aWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gby5ncmlkTGluZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG8uc2NhbGVMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMCAhPT0gYS5sYWJlbFJvdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBkLmF1dG9Ta2lwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhLmlzSG9yaXpvbnRhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5tYXhUaWNrc0xpbWl0ICYmIChsID0gZC5tYXhUaWNrc0xpbWl0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gaS5nZXRWYWx1ZU9yRGVmYXVsdChkLmZvbnRDb2xvciwgdS5kZWZhdWx0Rm9udENvbG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gbihkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYy5kcmF3VGlja3MgPyBjLnRpY2tNYXJrTGVuZ3RoIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gaS5nZXRWYWx1ZU9yRGVmYXVsdChoLmZvbnRDb2xvciwgdS5kZWZhdWx0Rm9udENvbG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gbihoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gaS50b1JhZGlhbnMoYS5sYWJlbFJvdGF0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gTWF0aC5jb3MoayksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IGEubG9uZ2VzdExhYmVsV2lkdGggKiB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5maWxsU3R5bGUgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSAhMSwgKE0gKyBkLmF1dG9Ta2lwUGFkZGluZykgKiBhLnRpY2tzLmxlbmd0aCA+IGEud2lkdGggLSAoYS5wYWRkaW5nTGVmdCArIGEucGFkZGluZ1JpZ2h0KSAmJiAociA9IDEgKyBNYXRoLmZsb29yKChNICsgZC5hdXRvU2tpcFBhZGRpbmcpICogYS50aWNrcy5sZW5ndGggLyAoYS53aWR0aCAtIChhLnBhZGRpbmdMZWZ0ICsgYS5wYWRkaW5nUmlnaHQpKSkpLCBsICYmIGEudGlja3MubGVuZ3RoID4gbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7ICFyIHx8IGEudGlja3MubGVuZ3RoIC8gKHIgfHwgMSkgPiBsOykgciB8fCAociA9IDEpLCByICs9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyB8fCAociA9ICExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEMgPSAicmlnaHQiID09PSBvLnBvc2l0aW9uID8gYS5sZWZ0IDogYS5yaWdodCAtIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCA9ICJyaWdodCIgPT09IG8ucG9zaXRpb24gPyBhLmxlZnQgKyBiIDogYS5yaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gImJvdHRvbSIgPT09IG8ucG9zaXRpb24gPyBhLnRvcCA6IGEuYm90dG9tIC0gYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gImJvdHRvbSIgPT09IG8ucG9zaXRpb24gPyBhLnRvcCArIGIgOiBhLmJvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmVhY2goYS50aWNrcywgZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0ICYmIG51bGwgIT09IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gYS50aWNrcy5sZW5ndGggPT09IG4gKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByID4gMSAmJiBuICUgciA+IDAgfHwgbiAlIHIgPT09IDAgJiYgbiArIHIgPj0gYS50aWNrcy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFzIHx8IGwpICYmIHZvaWQgMCAhPT0gdCAmJiBudWxsICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGgsIGcsIG0sIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9PT0gKCJ1bmRlZmluZWQiICE9IHR5cGVvZiBhLnplcm9MaW5lSW5kZXggPyBhLnplcm9MaW5lSW5kZXggOiAwKSA/IChoID0gYy56ZXJvTGluZVdpZHRoLCBnID0gYy56ZXJvTGluZUNvbG9yLCBtID0gYy56ZXJvTGluZUJvcmRlckRhc2gsIHYgPSBjLnplcm9MaW5lQm9yZGVyRGFzaE9mZnNldCkgOiAoaCA9IGkuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGMubGluZVdpZHRoLCBuKSwgZyA9IGkuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0KGMuY29sb3IsIG4pLCBtID0gaS5nZXRWYWx1ZU9yRGVmYXVsdChjLmJvcmRlckRhc2gsIHUuYm9yZGVyRGFzaCksIHYgPSBpLmdldFZhbHVlT3JEZWZhdWx0KGMuYm9yZGVyRGFzaE9mZnNldCwgdS5ib3JkZXJEYXNoT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHgsIHksIHcsIE0sIFAsIF8sIFQsIEYsIFIsIEwsIFYgPSAibWlkZGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9ICJtaWRkbGUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib3R0b20iID09PSBvLnBvc2l0aW9uID8gKE8gPSBmID8gIm1pZGRsZSIgOiAidG9wIiwgViA9IGYgPyAicmlnaHQiIDogImNlbnRlciIsIEwgPSBhLnRvcCArIGIpIDogKE8gPSBmID8gIm1pZGRsZSIgOiAiYm90dG9tIiwgViA9IGYgPyAibGVmdCIgOiAiY2VudGVyIiwgTCA9IGEuYm90dG9tIC0gYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ID0gYS5nZXRQaXhlbEZvclRpY2sobikgKyBpLmFsaWFzUGl4ZWwoaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBhLmdldFBpeGVsRm9yVGljayhuLCBjLm9mZnNldEdyaWRMaW5lcykgKyBkLmxhYmVsT2Zmc2V0LCB4ID0gdyA9IFAgPSBUID0geiwgeSA9IEksIE0gPSBBLCBfID0gZS50b3AsIEYgPSBlLmJvdHRvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCLCBXID0gImxlZnQiID09PSBvLnBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTiA9IGQucGFkZGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5taXJyb3IgPyAoViA9IFcgPyAibGVmdCIgOiAicmlnaHQiLCBCID0gTikgOiAoViA9IFcgPyAicmlnaHQiIDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IGIgKyBOKSwgUiA9IFcgPyBhLnJpZ2h0IC0gQiA6IGEubGVmdCArIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBFID0gYS5nZXRQaXhlbEZvclRpY2sobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgKz0gaS5hbGlhc1BpeGVsKGgpLCBMID0gYS5nZXRQaXhlbEZvclRpY2sobiwgYy5vZmZzZXRHcmlkTGluZXMpLCB4ID0gQywgdyA9IEQsIFAgPSBlLmxlZnQsIFQgPSBlLnJpZ2h0LCB5ID0gTSA9IF8gPSBGID0gRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eDE6IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5MTogeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHgyOiB3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eTI6IE0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxOiBQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MTogXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDI6IFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFg6IFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsWTogTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xXaWR0aDogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xDb2xvcjogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xCb3JkZXJEYXNoOiBtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbEJvcmRlckRhc2hPZmZzZXQ6IHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiAtMSAqIGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QmFzZWxpbmU6IE8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogVgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5lYWNoKFMsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMuZGlzcGxheSAmJiAocy5zYXZlKCksIHMubGluZVdpZHRoID0gdC5nbFdpZHRoLCBzLnN0cm9rZVN0eWxlID0gdC5nbENvbG9yLCBzLnNldExpbmVEYXNoICYmIChzLnNldExpbmVEYXNoKHQuZ2xCb3JkZXJEYXNoKSwgcy5saW5lRGFzaE9mZnNldCA9IHQuZ2xCb3JkZXJEYXNoT2Zmc2V0KSwgcy5iZWdpblBhdGgoKSwgYy5kcmF3VGlja3MgJiYgKHMubW92ZVRvKHQudHgxLCB0LnR5MSksIHMubGluZVRvKHQudHgyLCB0LnR5MikpLCBjLmRyYXdPbkNoYXJ0QXJlYSAmJiAocy5tb3ZlVG8odC54MSwgdC55MSksIHMubGluZVRvKHQueDIsIHQueTIpKSwgcy5zdHJva2UoKSwgcy5yZXN0b3JlKCkpLCBkLmRpc3BsYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2F2ZSgpLCBzLnRyYW5zbGF0ZSh0LmxhYmVsWCwgdC5sYWJlbFkpLCBzLnJvdGF0ZSh0LnJvdGF0aW9uKSwgcy5mb250ID0gdi5mb250LCBzLnRleHRCYXNlbGluZSA9IHQudGV4dEJhc2VsaW5lLCBzLnRleHRBbGlnbiA9IHQudGV4dEFsaWduOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmxhYmVsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuaXNBcnJheShlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMCwgYSA9IDA7IG4gPCBlLmxlbmd0aDsgKytuKSBzLmZpbGxUZXh0KCIiICsgZVtuXSwgMCwgYSksIGEgKz0gMS41ICogdi5zaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzLmZpbGxUZXh0KGUsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5yZXN0b3JlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBoLmRpc3BsYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgUCwgXywgVCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHApIFAgPSBhLmxlZnQgKyAoYS5yaWdodCAtIGEubGVmdCkgLyAyLCBfID0gImJvdHRvbSIgPT09IG8ucG9zaXRpb24gPyBhLmJvdHRvbSAtIHkuc2l6ZSAvIDIgOiBhLnRvcCArIHkuc2l6ZSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBGID0gImxlZnQiID09PSBvLnBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gRiA/IGEubGVmdCArIHkuc2l6ZSAvIDIgOiBhLnJpZ2h0IC0geS5zaXplIC8gMiwgXyA9IGEudG9wICsgKGEuYm90dG9tIC0gYS50b3ApIC8gMiwgVCA9IEYgPyAtLjUgKiBNYXRoLlBJIDogLjUgKiBNYXRoLlBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2F2ZSgpLCBzLnRyYW5zbGF0ZShQLCBfKSwgcy5yb3RhdGUoVCksIHMudGV4dEFsaWduID0gImNlbnRlciIsIHMudGV4dEJhc2VsaW5lID0gIm1pZGRsZSIsIHMuZmlsbFN0eWxlID0geCwgcy5mb250ID0geS5mb250LCBzLmZpbGxUZXh0KGgubGFiZWxTdHJpbmcsIDAsIDApLCBzLnJlc3RvcmUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMuZHJhd0JvcmRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMubGluZVdpZHRoID0gaS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQoYy5saW5lV2lkdGgsIDApLCBzLnN0cm9rZVN0eWxlID0gaS5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQoYy5jb2xvciwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFIgPSBhLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSBhLnJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWID0gYS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBhLmJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeiA9IGkuYWxpYXNQaXhlbChzLmxpbmVXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA/IChWID0gTyA9ICJ0b3AiID09PSBvLnBvc2l0aW9uID8gYS5ib3R0b20gOiBhLnRvcCwgViArPSB6LCBPICs9IHopIDogKFIgPSBMID0gImxlZnQiID09PSBvLnBvc2l0aW9uID8gYS5yaWdodCA6IGEubGVmdCwgUiArPSB6LCBMICs9IHopLCBzLmJlZ2luUGF0aCgpLCBzLm1vdmVUbyhSLCBWKSwgcy5saW5lVG8oTCwgTyksIHMuc3Ryb2tlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMzI6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmhlbHBlcnM7CiAgICAgICAgICAgICAgICB0LnNjYWxlU2VydmljZSA9IHsKICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcnM6IHt9LAogICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzOiB7fSwKICAgICAgICAgICAgICAgICAgICByZWdpc3RlclNjYWxlVHlwZTogZnVuY3Rpb24odCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yc1t0XSA9IG4sIHRoaXMuZGVmYXVsdHNbdF0gPSBlLmNsb25lKGkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRTY2FsZUNvbnN0cnVjdG9yOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9ycy5oYXNPd25Qcm9wZXJ0eSh0KSA/IHRoaXMuY29uc3RydWN0b3JzW3RdIDogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRTY2FsZURlZmF1bHRzOiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRzLmhhc093blByb3BlcnR5KG4pID8gZS5zY2FsZU1lcmdlKHQuZGVmYXVsdHMuc2NhbGUsIHRoaXMuZGVmYXVsdHNbbl0pIDoge30KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNjYWxlRGVmYXVsdHM6IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmRlZmF1bHRzOwogICAgICAgICAgICAgICAgICAgICAgICBpLmhhc093blByb3BlcnR5KHQpICYmIChpW3RdID0gZS5leHRlbmQoaVt0XSwgbikpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGRTY2FsZXNUb0xheW91dDogZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICBlLmVhY2gobi5zY2FsZXMsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZnVsbFdpZHRoID0gZS5vcHRpb25zLmZ1bGxXaWR0aCwgZS5wb3NpdGlvbiA9IGUub3B0aW9ucy5wb3NpdGlvbiwgZS53ZWlnaHQgPSBlLm9wdGlvbnMud2VpZ2h0LCB0LmxheW91dFNlcnZpY2UuYWRkQm94KG4sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDMzOiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdC5oZWxwZXJzOwogICAgICAgICAgICAgICAgdC5UaWNrcyA9IHsKICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVhcjogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnN0ZXBTaXplICYmIHQuc3RlcFNpemUgPiAwKSBpID0gdC5zdGVwU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5uaWNlTnVtKG4ubWF4IC0gbi5taW4sICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5uaWNlTnVtKG8gLyAodC5tYXhUaWNrcyAtIDEpLCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gTWF0aC5mbG9vcihuLm1pbiAvIGkpICogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5jZWlsKG4ubWF4IC8gaSkgKiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5taW4gJiYgdC5tYXggJiYgdC5zdGVwU2l6ZSAmJiBlLmFsbW9zdFdob2xlKCh0Lm1heCAtIHQubWluKSAvIHQuc3RlcFNpemUsIGkgLyAxZTMpICYmIChyID0gdC5taW4sIGwgPSB0Lm1heCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IChsIC0gcikgLyBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuYWxtb3N0RXF1YWxzKHMsIE1hdGgucm91bmQocyksIGkgLyAxZTMpID8gTWF0aC5yb3VuZChzKSA6IE1hdGguY2VpbChzKSwgYS5wdXNoKHZvaWQgMCAhPT0gdC5taW4gPyB0Lm1pbiA6IHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdSA9IDE7IHUgPCBzOyArK3UpIGEucHVzaChyICsgdSAqIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucHVzaCh2b2lkIDAgIT09IHQubWF4ID8gdC5tYXggOiBsKSwgYQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsb2dhcml0aG1pYzogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIG8gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5nZXRWYWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcih0Lm1pbiwgTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoZS5sb2cxMChuLm1pbikpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguZmxvb3IoZS5sb2cxMChuLm1heCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBNYXRoLmNlaWwobi5tYXggLyBNYXRoLnBvdygxMCwgcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gbCA/IChpID0gTWF0aC5mbG9vcihlLmxvZzEwKG4ubWluTm90WmVybykpLCBhID0gTWF0aC5mbG9vcihuLm1pbk5vdFplcm8gLyBNYXRoLnBvdygxMCwgaSkpLCBvLnB1c2gobCksIGwgPSBhICogTWF0aC5wb3coMTAsIGkpKSA6IChpID0gTWF0aC5mbG9vcihlLmxvZzEwKGwpKSwgYSA9IE1hdGguZmxvb3IobCAvIE1hdGgucG93KDEwLCBpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gby5wdXNoKGwpLCArK2EsIDEwID09PSBhICYmIChhID0gMSwgKytpKSwgbCA9IGEgKiBNYXRoLnBvdygxMCwgaSk7IHdoaWxlIChpIDwgcyB8fCBpID09PSBzICYmIGEgPCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gcih0Lm1heCwgbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5wdXNoKGQpLCBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5pc0FycmF5KHQpID8gdCA6ICIiICsgdAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXI6IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaS5sZW5ndGggPiAzID8gaVsyXSAtIGlbMV0gOiBpWzFdIC0gaVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGEpID4gMSAmJiB0ICE9PSBNYXRoLmZsb29yKHQpICYmIChhID0gdCAtIE1hdGguZmxvb3IodCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLmxvZzEwKE1hdGguYWJzKGEpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gLTEgKiBNYXRoLmZsb29yKG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBNYXRoLm1heChNYXRoLm1pbihsLCAyMCksIDApLCByID0gdC50b0ZpeGVkKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgciA9ICIwIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2FyaXRobWljOiBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQgLyBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihlLmxvZzEwKHQpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdCA/ICIwIiA6IDEgPT09IGEgfHwgMiA9PT0gYSB8fCA1ID09PSBhIHx8IDAgPT09IG4gfHwgbiA9PT0gaS5sZW5ndGggLSAxID8gdC50b0V4cG9uZW50aWFsKCkgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDM0OiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gcy5jb2xvcih0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5hbHBoYShlICogbi5hbHBoYSgpKS5yZ2JhU3RyaW5nKCkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAocy5pc0FycmF5KGUpID8gQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodCwgZSkgOiB0LnB1c2goZSkpLCB0CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaSh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0Ll94U2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0Ll95U2NhbGUgfHwgdC5fc2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Ll9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuX2RhdGFzZXRJbmRleDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4TGFiZWw6IGUgPyBlLmdldExhYmVsRm9ySW5kZXgoaSwgYSkgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgeUxhYmVsOiBuID8gbi5nZXRMYWJlbEZvckluZGV4KGksIGEpIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0SW5kZXg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQuX21vZGVsLngsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQuX21vZGVsLnkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmRlZmF1bHRzLmdsb2JhbCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHMuZ2V0VmFsdWVPckRlZmF1bHQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeFBhZGRpbmc6IGUueFBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHlQYWRkaW5nOiBlLnlQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB4QWxpZ246IGUueEFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICB5QWxpZ246IGUueUFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5Rm9udENvbG9yOiBlLmJvZHlGb250Q29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIF9ib2R5Rm9udEZhbWlseTogaShlLmJvZHlGb250RmFtaWx5LCBuLmRlZmF1bHRGb250RmFtaWx5KSwKICAgICAgICAgICAgICAgICAgICAgICAgX2JvZHlGb250U3R5bGU6IGkoZS5ib2R5Rm9udFN0eWxlLCBuLmRlZmF1bHRGb250U3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICBfYm9keUFsaWduOiBlLmJvZHlBbGlnbiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZvbnRTaXplOiBpKGUuYm9keUZvbnRTaXplLCBuLmRlZmF1bHRGb250U2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlTcGFjaW5nOiBlLmJvZHlTcGFjaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRDb2xvcjogZS50aXRsZUZvbnRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgX3RpdGxlRm9udEZhbWlseTogaShlLnRpdGxlRm9udEZhbWlseSwgbi5kZWZhdWx0Rm9udEZhbWlseSksCiAgICAgICAgICAgICAgICAgICAgICAgIF90aXRsZUZvbnRTdHlsZTogaShlLnRpdGxlRm9udFN0eWxlLCBuLmRlZmF1bHRGb250U3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplOiBpKGUudGl0bGVGb250U2l6ZSwgbi5kZWZhdWx0Rm9udFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICBfdGl0bGVBbGlnbjogZS50aXRsZUFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVNwYWNpbmc6IGUudGl0bGVTcGFjaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZU1hcmdpbkJvdHRvbTogZS50aXRsZU1hcmdpbkJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyRm9udENvbG9yOiBlLmZvb3RlckZvbnRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgX2Zvb3RlckZvbnRGYW1pbHk6IGkoZS5mb290ZXJGb250RmFtaWx5LCBuLmRlZmF1bHRGb250RmFtaWx5KSwKICAgICAgICAgICAgICAgICAgICAgICAgX2Zvb3RlckZvbnRTdHlsZTogaShlLmZvb3RlckZvbnRTdHlsZSwgbi5kZWZhdWx0Rm9udFN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyRm9udFNpemU6IGkoZS5mb290ZXJGb250U2l6ZSwgbi5kZWZhdWx0Rm9udFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICBfZm9vdGVyQWxpZ246IGUuZm9vdGVyQWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwYWNpbmc6IGUuZm9vdGVyU3BhY2luZywKICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTWFyZ2luVG9wOiBlLmZvb3Rlck1hcmdpblRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FyZXRTaXplOiBlLmNhcmV0U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29ybmVyUmFkaXVzOiBlLmNvcm5lclJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBlLmJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbGVnZW5kQ29sb3JCYWNrZ3JvdW5kOiBlLm11bHRpS2V5QmFja2dyb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNvbG9yczogZS5kaXNwbGF5Q29sb3JzLAogICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogZS5ib3JkZXJDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGUuYm9yZGVyV2lkdGgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbyh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0Ll9jaGFydC5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyICogZS55UGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLmJvZHksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvLnJlZHVjZShmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIGUuYmVmb3JlLmxlbmd0aCArIGUubGluZXMubGVuZ3RoICsgZS5hZnRlci5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7CiAgICAgICAgICAgICAgICAgICAgciArPSBlLmJlZm9yZUJvZHkubGVuZ3RoICsgZS5hZnRlckJvZHkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gZS50aXRsZS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlLmZvb3Rlci5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBlLnRpdGxlRm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlLmJvZHlGb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGUuZm9vdGVyRm9udFNpemU7CiAgICAgICAgICAgICAgICAgICAgaSArPSBsICogZCwgaSArPSBsID8gKGwgLSAxKSAqIGUudGl0bGVTcGFjaW5nIDogMCwgaSArPSBsID8gZS50aXRsZU1hcmdpbkJvdHRvbSA6IDAsIGkgKz0gciAqIGMsIGkgKz0gciA/IChyIC0gMSkgKiBlLmJvZHlTcGFjaW5nIDogMCwgaSArPSB1ID8gZS5mb290ZXJNYXJnaW5Ub3AgOiAwLCBpICs9IHUgKiBoLCBpICs9IHUgPyAodSAtIDEpICogZS5mb290ZXJTcGFjaW5nIDogMDsKICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5tYXgoYSwgbi5tZWFzdXJlVGV4dCh0KS53aWR0aCArIGYpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uZm9udCA9IHMuZm9udFN0cmluZyhkLCBlLl90aXRsZUZvbnRTdHlsZSwgZS5fdGl0bGVGb250RmFtaWx5KSwgcy5lYWNoKGUudGl0bGUsIGcpLCBuLmZvbnQgPSBzLmZvbnRTdHJpbmcoYywgZS5fYm9keUZvbnRTdHlsZSwgZS5fYm9keUZvbnRGYW1pbHkpLCBzLmVhY2goZS5iZWZvcmVCb2R5LmNvbmNhdChlLmFmdGVyQm9keSksIGcpLCBmID0gZS5kaXNwbGF5Q29sb3JzID8gYyArIDIgOiAwLCBzLmVhY2gobywgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBzLmVhY2godC5iZWZvcmUsIGcpLCBzLmVhY2godC5saW5lcywgZyksIHMuZWFjaCh0LmFmdGVyLCBnKQogICAgICAgICAgICAgICAgICAgIH0pLCBmID0gMCwgbi5mb250ID0gcy5mb250U3RyaW5nKGgsIGUuX2Zvb3RlckZvbnRTdHlsZSwgZS5fZm9vdGVyRm9udEZhbWlseSksIHMuZWFjaChlLmZvb3RlciwgZyksIGEgKz0gMiAqIGUueFBhZGRpbmcsIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiByKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuX21vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5fY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0Ll9jaGFydC5jaGFydEFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAiY2VudGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICJjZW50ZXIiOwogICAgICAgICAgICAgICAgICAgIG4ueSA8IGUuaGVpZ2h0ID8gciA9ICJ0b3AiIDogbi55ID4gaS5oZWlnaHQgLSBlLmhlaWdodCAmJiAociA9ICJib3R0b20iKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCwgcywgdSwgZCwgYywgaCA9IChhLmxlZnQgKyBhLnJpZ2h0KSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAoYS50b3AgKyBhLmJvdHRvbSkgLyAyOwogICAgICAgICAgICAgICAgICAgICJjZW50ZXIiID09PSByID8gKGwgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IDw9IGgKICAgICAgICAgICAgICAgICAgICB9LCBzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA+IGgKICAgICAgICAgICAgICAgICAgICB9KSA6IChsID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA8PSBlLndpZHRoIC8gMgogICAgICAgICAgICAgICAgICAgIH0sIHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID49IGkud2lkdGggLSBlLndpZHRoIC8gMgogICAgICAgICAgICAgICAgICAgIH0pLCB1ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIGUud2lkdGggPiBpLndpZHRoCiAgICAgICAgICAgICAgICAgICAgfSwgZCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgLSBlLndpZHRoIDwgMAogICAgICAgICAgICAgICAgICAgIH0sIGMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IDw9IGYgPyAidG9wIiA6ICJib3R0b20iCiAgICAgICAgICAgICAgICAgICAgfSwgbChuLngpID8gKG8gPSAibGVmdCIsIHUobi54KSAmJiAobyA9ICJjZW50ZXIiLCByID0gYyhuLnkpKSkgOiBzKG4ueCkgJiYgKG8gPSAicmlnaHQiLCBkKG4ueCkgJiYgKG8gPSAiY2VudGVyIiwgciA9IGMobi55KSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBnID0gdC5fb3B0aW9uczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4QWxpZ246IGcueEFsaWduID8gZy54QWxpZ24gOiBvLAogICAgICAgICAgICAgICAgICAgICAgICB5QWxpZ246IGcueUFsaWduID8gZy55QWxpZ24gOiByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwodCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5jYXJldFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmNhcmV0UGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuY29ybmVyUmFkaXVzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gbi54QWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBuLnlBbGlnbiwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG8gKyByLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gbCArIHI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJyaWdodCIgPT09IHMgPyBpIC09IGUud2lkdGggOiAiY2VudGVyIiA9PT0gcyAmJiAoaSAtPSBlLndpZHRoIC8gMiksICJ0b3AiID09PSB1ID8gYSArPSBkIDogYSAtPSAiYm90dG9tIiA9PT0gdSA/IGUuaGVpZ2h0ICsgZCA6IGUuaGVpZ2h0IC8gMiwgImNlbnRlciIgPT09IHUgPyAibGVmdCIgPT09IHMgPyBpICs9IGQgOiAicmlnaHQiID09PSBzICYmIChpIC09IGQpIDogImxlZnQiID09PSBzID8gaSAtPSBjIDogInJpZ2h0IiA9PT0gcyAmJiAoaSArPSBjKSwgewogICAgICAgICAgICAgICAgICAgICAgICB4OiBpLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHMgPSB0LmhlbHBlcnM7CiAgICAgICAgICAgICAgICB0LmRlZmF1bHRzLmdsb2JhbC50b29sdGlwcyA9IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICBjdXN0b206IG51bGwsCiAgICAgICAgICAgICAgICAgICAgbW9kZTogIm5lYXJlc3QiLAogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYXZlcmFnZSIsCiAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0OiAhMCwKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICJyZ2JhKDAsMCwwLDAuOCkiLAogICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udFN0eWxlOiAiYm9sZCIsCiAgICAgICAgICAgICAgICAgICAgdGl0bGVTcGFjaW5nOiAyLAogICAgICAgICAgICAgICAgICAgIHRpdGxlTWFyZ2luQm90dG9tOiA2LAogICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udENvbG9yOiAiI2ZmZiIsCiAgICAgICAgICAgICAgICAgICAgdGl0bGVBbGlnbjogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIGJvZHlTcGFjaW5nOiAyLAogICAgICAgICAgICAgICAgICAgIGJvZHlGb250Q29sb3I6ICIjZmZmIiwKICAgICAgICAgICAgICAgICAgICBib2R5QWxpZ246ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICBmb290ZXJGb250U3R5bGU6ICJib2xkIiwKICAgICAgICAgICAgICAgICAgICBmb290ZXJTcGFjaW5nOiAyLAogICAgICAgICAgICAgICAgICAgIGZvb3Rlck1hcmdpblRvcDogNiwKICAgICAgICAgICAgICAgICAgICBmb290ZXJGb250Q29sb3I6ICIjZmZmIiwKICAgICAgICAgICAgICAgICAgICBmb290ZXJBbGlnbjogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIHlQYWRkaW5nOiA2LAogICAgICAgICAgICAgICAgICAgIHhQYWRkaW5nOiA2LAogICAgICAgICAgICAgICAgICAgIGNhcmV0UGFkZGluZzogMiwKICAgICAgICAgICAgICAgICAgICBjYXJldFNpemU6IDUsCiAgICAgICAgICAgICAgICAgICAgY29ybmVyUmFkaXVzOiA2LAogICAgICAgICAgICAgICAgICAgIG11bHRpS2V5QmFja2dyb3VuZDogIiNmZmYiLAogICAgICAgICAgICAgICAgICAgIGRpc3BsYXlDb2xvcnM6ICEwLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAicmdiYSgwLDAsMCwwKSIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZVRpdGxlOiBzLm5vb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmxhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaSA/IGkubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby54TGFiZWwgPyBuID0gby54TGFiZWwgOiBhID4gMCAmJiBvLmluZGV4IDwgYSAmJiAobiA9IGlbby5pbmRleF0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhZnRlclRpdGxlOiBzLm5vb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUJvZHk6IHMubm9vcCwKICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlTGFiZWw6IHMubm9vcCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5kYXRhc2V0c1t0LmRhdGFzZXRJbmRleF0ubGFiZWwgfHwgIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiAobiArPSAiOiAiKSwgbiArPSB0LnlMYWJlbAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbENvbG9yOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuZ2V0RGF0YXNldE1ldGEodC5kYXRhc2V0SW5kZXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmRhdGFbdC5pbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuX3ZpZXc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBhLmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYS5iYWNrZ3JvdW5kQ29sb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJMYWJlbDogcy5ub29wLAogICAgICAgICAgICAgICAgICAgICAgICBhZnRlckJvZHk6IHMubm9vcCwKICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlRm9vdGVyOiBzLm5vb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlcjogcy5ub29wLAogICAgICAgICAgICAgICAgICAgICAgICBhZnRlckZvb3Rlcjogcy5ub29wCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdC5Ub29sdGlwID0gdC5FbGVtZW50LmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsID0gYSh0aGlzLl9vcHRpb25zKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0VGl0bGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5fb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmNhbGxiYWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmJlZm9yZVRpdGxlLmFwcGx5KHQsIGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaS50aXRsZS5hcHBseSh0LCBhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuYWZ0ZXJUaXRsZS5hcHBseSh0LCBhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9IG4obCwgYSksIGwgPSBuKGwsIG8pLCBsID0gbihsLCByKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0QmVmb3JlQm9keTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fb3B0aW9ucy5jYWxsYmFja3MuYmVmb3JlQm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5pc0FycmF5KHQpID8gdCA6IHZvaWQgMCAhPT0gdCA/IFt0XSA6IFtdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRCb2R5OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLl9vcHRpb25zLmNhbGxiYWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuZWFjaCh0LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmU6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcjogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKHIuYmVmb3JlLCBhLmJlZm9yZUxhYmVsLmNhbGwoaSwgdCwgZSkpLCBuKHIubGluZXMsIGEubGFiZWwuY2FsbChpLCB0LCBlKSksIG4oci5hZnRlciwgYS5hZnRlckxhYmVsLmNhbGwoaSwgdCwgZSkpLCBvLnB1c2gocikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIG8KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEFmdGVyQm9keTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXJCb2R5LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzLmlzQXJyYXkodCkgPyB0IDogdm9pZCAwICE9PSB0ID8gW3RdIDogW10KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEZvb3RlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0Ll9vcHRpb25zLmNhbGxiYWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmJlZm9yZUZvb3Rlci5hcHBseSh0LCBhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuZm9vdGVyLmFwcGx5KHQsIGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5hZnRlckZvb3Rlci5hcHBseSh0LCBhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA9IG4ociwgaSksIHIgPSBuKHIsIGEpLCByID0gbihyLCBvKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCB1LCBkID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBkLl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGQuX21vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGQuX21vZGVsID0gYShjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBkLl9hY3RpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZC5fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeEFsaWduOiBoLnhBbGlnbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5QWxpZ246IGgueUFsaWduCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBoLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaC55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaC53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGguaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBoLmNhcmV0WCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBoLmNhcmV0WQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLm9wYWNpdHkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSB0LlRvb2x0aXAucG9zaXRpb25lcnNbYy5wb3NpdGlvbl0oZywgZC5fZXZlbnRQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgayA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMCwgdSA9IGcubGVuZ3RoOyBuIDwgdTsgKytuKSBrLnB1c2goaShnW25dKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmZpbHRlciAmJiAoayA9IGsuZmlsdGVyKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5maWx0ZXIodCwgcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYy5pdGVtU29ydCAmJiAoayA9IGsuc29ydChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuaXRlbVNvcnQodCwgZSwgcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcy5lYWNoKGssIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LnB1c2goYy5jYWxsYmFja3MubGFiZWxDb2xvci5jYWxsKGQsIHQsIGQuX2NoYXJ0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBmLnRpdGxlID0gZC5nZXRUaXRsZShrLCBwKSwgZi5iZWZvcmVCb2R5ID0gZC5nZXRCZWZvcmVCb2R5KGssIHApLCBmLmJvZHkgPSBkLmdldEJvZHkoaywgcCksIGYuYWZ0ZXJCb2R5ID0gZC5nZXRBZnRlckJvZHkoaywgcCksIGYuZm9vdGVyID0gZC5nZXRGb290ZXIoaywgcCksIGYueCA9IE1hdGgucm91bmQoeC54KSwgZi55ID0gTWF0aC5yb3VuZCh4LnkpLCBmLmNhcmV0UGFkZGluZyA9IGMuY2FyZXRQYWRkaW5nLCBmLmxhYmVsQ29sb3JzID0geSwgZi5kYXRhUG9pbnRzID0gaywgYiA9IG8odGhpcywgZiksIG0gPSByKHRoaXMsIGIpLCB2ID0gbChmLCBiLCBtKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZi5vcGFjaXR5ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYueEFsaWduID0gbS54QWxpZ24sIGYueUFsaWduID0gbS55QWxpZ24sIGYueCA9IHYueCwgZi55ID0gdi55LCBmLndpZHRoID0gYi53aWR0aCwgZi5oZWlnaHQgPSBiLmhlaWdodCwgZi5jYXJldFggPSB4LngsIGYuY2FyZXRZID0geC55LCBkLl9tb2RlbCA9IGYsIGUgJiYgYy5jdXN0b20gJiYgYy5jdXN0b20uY2FsbChkLCBmKSwgZAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZHJhd0NhcmV0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fY2hhcnQuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5nZXRDYXJldFBvc2l0aW9uKHQsIGUsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICBuLmxpbmVUbyhhLngxLCBhLnkxKSwgbi5saW5lVG8oYS54MiwgYS55MiksIG4ubGluZVRvKGEueDMsIGEueTMpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRDYXJldFBvc2l0aW9uOiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBhLCBvLCByLCBsLCBzLCB1ID0gbi5jYXJldFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbi5jb3JuZXJSYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbi54QWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gbi55QWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBlLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGUuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNlbnRlciIgPT09IGgpIGwgPSBnICsgbSAvIDIsICJsZWZ0IiA9PT0gYyA/IChpID0gZiwgYSA9IGkgLSB1LCBvID0gaSwgciA9IGwgKyB1LCBzID0gbCAtIHUpIDogKGkgPSBmICsgcCwgYSA9IGkgKyB1LCBvID0gaSwgciA9IGwgLSB1LCBzID0gbCArIHUpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgibGVmdCIgPT09IGMgPyAoYSA9IGYgKyBkICsgdSwgaSA9IGEgLSB1LCBvID0gYSArIHUpIDogInJpZ2h0IiA9PT0gYyA/IChhID0gZiArIHAgLSBkIC0gdSwgaSA9IGEgLSB1LCBvID0gYSArIHUpIDogKGEgPSBmICsgcCAvIDIsIGkgPSBhIC0gdSwgbyA9IGEgKyB1KSwgInRvcCIgPT09IGgpIHIgPSBnLCBsID0gciAtIHUsIHMgPSByOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBnICsgbSwgbCA9IHIgKyB1LCBzID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLCBpID0gdgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDM6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTM6IHMKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZHJhd1RpdGxlOiBmdW5jdGlvbih0LCBuLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi50aXRsZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnRleHRBbGlnbiA9IG4uX3RpdGxlQWxpZ24sIGkudGV4dEJhc2VsaW5lID0gInRvcCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4udGl0bGVGb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi50aXRsZVNwYWNpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmZpbGxTdHlsZSA9IGUobi50aXRsZUZvbnRDb2xvciwgYSksIGkuZm9udCA9IHMuZm9udFN0cmluZyhyLCBuLl90aXRsZUZvbnRTdHlsZSwgbi5fdGl0bGVGb250RmFtaWx5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1LCBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gMCwgZCA9IG8ubGVuZ3RoOyB1IDwgZDsgKyt1KSBpLmZpbGxUZXh0KG9bdV0sIHQueCwgdC55KSwgdC55ICs9IHIgKyBsLCB1ICsgMSA9PT0gby5sZW5ndGggJiYgKHQueSArPSBuLnRpdGxlTWFyZ2luQm90dG9tIC0gbCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZHJhd0JvZHk6IGZ1bmN0aW9uKHQsIG4sIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLmJvZHlGb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLmJvZHlTcGFjaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4uYm9keTsKICAgICAgICAgICAgICAgICAgICAgICAgaS50ZXh0QWxpZ24gPSBuLl9ib2R5QWxpZ24sIGkudGV4dEJhc2VsaW5lID0gInRvcCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gZShuLmJvZHlGb250Q29sb3IsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICBpLmZpbGxTdHlsZSA9IHUsIGkuZm9udCA9IHMuZm9udFN0cmluZyhvLCBuLl9ib2R5Rm9udFN0eWxlLCBuLl9ib2R5Rm9udEZhbWlseSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5maWxsVGV4dChlLCB0LnggKyBkLCB0LnkpLCB0LnkgKz0gbyArIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHMuZWFjaChuLmJlZm9yZUJvZHksIGMpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IG4uZGlzcGxheUNvbG9yczsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGggPyBvICsgMiA6IDAsIHMuZWFjaChsLCBmdW5jdGlvbihyLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmVhY2goci5iZWZvcmUsIGMpLCBzLmVhY2goci5saW5lcywgZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggJiYgKGkuZmlsbFN0eWxlID0gZShuLmxlZ2VuZENvbG9yQmFja2dyb3VuZCwgYSksIGkuZmlsbFJlY3QodC54LCB0LnksIG8sIG8pLCBpLnN0cm9rZVN0eWxlID0gZShuLmxhYmVsQ29sb3JzW2xdLmJvcmRlckNvbG9yLCBhKSwgaS5zdHJva2VSZWN0KHQueCwgdC55LCBvLCBvKSwgaS5maWxsU3R5bGUgPSBlKG4ubGFiZWxDb2xvcnNbbF0uYmFja2dyb3VuZENvbG9yLCBhKSwgaS5maWxsUmVjdCh0LnggKyAxLCB0LnkgKyAxLCBvIC0gMiwgbyAtIDIpLCBpLmZpbGxTdHlsZSA9IHUpLCBjKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgcy5lYWNoKHIuYWZ0ZXIsIGMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkID0gMCwgcy5lYWNoKG4uYWZ0ZXJCb2R5LCBjKSwgdC55IC09IHIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRyYXdGb290ZXI6IGZ1bmN0aW9uKHQsIG4sIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLmZvb3RlcjsKICAgICAgICAgICAgICAgICAgICAgICAgby5sZW5ndGggJiYgKHQueSArPSBuLmZvb3Rlck1hcmdpblRvcCwgaS50ZXh0QWxpZ24gPSBuLl9mb290ZXJBbGlnbiwgaS50ZXh0QmFzZWxpbmUgPSAidG9wIiwgaS5maWxsU3R5bGUgPSBlKG4uZm9vdGVyRm9udENvbG9yLCBhKSwgaS5mb250ID0gcy5mb250U3RyaW5nKG4uZm9vdGVyRm9udFNpemUsIG4uX2Zvb3RlckZvbnRTdHlsZSwgbi5fZm9vdGVyRm9udEZhbWlseSksIHMuZWFjaChvLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmZpbGxUZXh0KGUsIHQueCwgdC55KSwgdC55ICs9IG4uZm9vdGVyRm9udFNpemUgKyBuLmZvb3RlclNwYWNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkcmF3QmFja2dyb3VuZDogZnVuY3Rpb24odCwgbiwgaSwgYSwgbykgewogICAgICAgICAgICAgICAgICAgICAgICBpLmZpbGxTdHlsZSA9IGUobi5iYWNrZ3JvdW5kQ29sb3IsIG8pLCBpLnN0cm9rZVN0eWxlID0gZShuLmJvcmRlckNvbG9yLCBvKSwgaS5saW5lV2lkdGggPSBuLmJvcmRlcldpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4ueEFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4ueUFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0LnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBuLmNvcm5lclJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgICAgaS5iZWdpblBhdGgoKSwgaS5tb3ZlVG8ocyArIGgsIHUpLCAidG9wIiA9PT0gbCAmJiB0aGlzLmRyYXdDYXJldCh0LCBhKSwgaS5saW5lVG8ocyArIGQgLSBoLCB1KSwgaS5xdWFkcmF0aWNDdXJ2ZVRvKHMgKyBkLCB1LCBzICsgZCwgdSArIGgpLCAiY2VudGVyIiA9PT0gbCAmJiAicmlnaHQiID09PSByICYmIHRoaXMuZHJhd0NhcmV0KHQsIGEpLCBpLmxpbmVUbyhzICsgZCwgdSArIGMgLSBoKSwgaS5xdWFkcmF0aWNDdXJ2ZVRvKHMgKyBkLCB1ICsgYywgcyArIGQgLSBoLCB1ICsgYyksICJib3R0b20iID09PSBsICYmIHRoaXMuZHJhd0NhcmV0KHQsIGEpLCBpLmxpbmVUbyhzICsgaCwgdSArIGMpLCBpLnF1YWRyYXRpY0N1cnZlVG8ocywgdSArIGMsIHMsIHUgKyBjIC0gaCksICJjZW50ZXIiID09PSBsICYmICJsZWZ0IiA9PT0gciAmJiB0aGlzLmRyYXdDYXJldCh0LCBhKSwgaS5saW5lVG8ocywgdSArIGgpLCBpLnF1YWRyYXRpY0N1cnZlVG8ocywgdSwgcyArIGgsIHUpLCBpLmNsb3NlUGF0aCgpLCBpLmZpbGwoKSwgbi5ib3JkZXJXaWR0aCA+IDAgJiYgaS5zdHJva2UoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZHJhdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fY2hhcnQuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3ZpZXc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBlLm9wYWNpdHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlLmhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZS54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBlLnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBNYXRoLmFicyhlLm9wYWNpdHkgPCAuMDAxKSA/IDAgOiBlLm9wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUudGl0bGUubGVuZ3RoIHx8IGUuYmVmb3JlQm9keS5sZW5ndGggfHwgZS5ib2R5Lmxlbmd0aCB8fCBlLmFmdGVyQm9keS5sZW5ndGggfHwgZS5mb290ZXIubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5lbmFibGVkICYmIG8gJiYgKHRoaXMuZHJhd0JhY2tncm91bmQoaSwgZSwgdCwgbiwgYSksIGkueCArPSBlLnhQYWRkaW5nLCBpLnkgKz0gZS55UGFkZGluZywgdGhpcy5kcmF3VGl0bGUoaSwgZSwgdCwgYSksIHRoaXMuZHJhd0JvZHkoaSwgZSwgdCwgYSksIHRoaXMuZHJhd0Zvb3RlcihpLCBlLCB0LCBhKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuX29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLl9sYXN0QWN0aXZlID0gZS5fbGFzdEFjdGl2ZSB8fCBbXSwgIm1vdXNlb3V0IiA9PT0gdC50eXBlID8gZS5fYWN0aXZlID0gW10gOiBlLl9hY3RpdmUgPSBlLl9jaGFydC5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKHQsIG4ubW9kZSwgbiksIGkgPSAhcy5hcnJheUVxdWFscyhlLl9hY3RpdmUsIGUuX2xhc3RBY3RpdmUpLCAhaSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5fbGFzdEFjdGl2ZSA9IGUuX2FjdGl2ZSwgbi5lbmFibGVkIHx8IG4uY3VzdG9tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9ldmVudFBvc2l0aW9uID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0LnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuX21vZGVsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS51cGRhdGUoITApLCBlLnBpdm90KCksIGkgfD0gYS54ICE9PSBlLl9tb2RlbC54IHx8IGEueSAhPT0gZS5fbW9kZWwueQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIHQuVG9vbHRpcC5wb3NpdGlvbmVycyA9IHsKICAgICAgICAgICAgICAgICAgICBhdmVyYWdlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdC5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIG4sIGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gMCwgbiA9IHQubGVuZ3RoOyBlIDwgbjsgKytlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociAmJiByLmhhc1ZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHIudG9vbHRpcFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSBsLngsIGEgKz0gbC55LCArK28KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5yb3VuZChpIC8gbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKGEgLyBvKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBuZWFyZXN0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCBhLCBvID0gZS54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGEgPSB0Lmxlbmd0aDsgaSA8IGE7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB0W2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgJiYgdS5oYXNWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB1LmdldENlbnRlclBvaW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzLmRpc3RhbmNlQmV0d2VlblBvaW50cyhlLCBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjIDwgbCAmJiAobCA9IGMsIG4gPSB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IG4udG9vbHRpcFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaC54LCByID0gaC55CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMzU6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQuZGVmYXVsdHMuZ2xvYmFsOwogICAgICAgICAgICAgICAgbi5lbGVtZW50cy5hcmMgPSB7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBuLmRlZmF1bHRDb2xvciwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyCiAgICAgICAgICAgICAgICB9LCB0LmVsZW1lbnRzLkFyYyA9IHQuRWxlbWVudC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIGluTGFiZWxSYW5nZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX3ZpZXc7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUgJiYgTWF0aC5wb3codCAtIGUueCwgMikgPCBNYXRoLnBvdyhlLnJhZGl1cyArIGUuaG92ZXJSYWRpdXMsIDIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpblJhbmdlOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSBlLmdldEFuZ2xlRnJvbVBvaW50KGksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvID0gYS5hbmdsZSwgciA9IGEuZGlzdGFuY2UsIGwgPSBpLnN0YXJ0QW5nbGUsIHMgPSBpLmVuZEFuZ2xlOyBzIDwgbDspIHMgKz0gMiAqIE1hdGguUEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbyA+IHM7KSBvIC09IDIgKiBNYXRoLlBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG8gPCBsOykgbyArPSAyICogTWF0aC5QSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbyA+PSBsICYmIG8gPD0gcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gciA+PSBpLmlubmVyUmFkaXVzICYmIHIgPD0gaS5vdXRlclJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1ICYmIGQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldENlbnRlclBvaW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9ICh0LnN0YXJ0QW5nbGUgKyB0LmVuZEFuZ2xlKSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gKHQuaW5uZXJSYWRpdXMgKyB0Lm91dGVyUmFkaXVzKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0LnggKyBNYXRoLmNvcyhlKSAqIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0LnkgKyBNYXRoLnNpbihlKSAqIG4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0QXJlYTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguUEkgKiAoKHQuZW5kQW5nbGUgLSB0LnN0YXJ0QW5nbGUpIC8gKDIgKiBNYXRoLlBJKSkgKiAoTWF0aC5wb3codC5vdXRlclJhZGl1cywgMikgLSBNYXRoLnBvdyh0LmlubmVyUmFkaXVzLCAyKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0LnN0YXJ0QW5nbGUgKyAodC5lbmRBbmdsZSAtIHQuc3RhcnRBbmdsZSkgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICh0Lm91dGVyUmFkaXVzIC0gdC5pbm5lclJhZGl1cykgLyAyICsgdC5pbm5lclJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQueCArIE1hdGguY29zKGUpICogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQueSArIE1hdGguc2luKGUpICogbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkcmF3OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9jaGFydC5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLnN0YXJ0QW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5lbmRBbmdsZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5iZWdpblBhdGgoKSwgdC5hcmMoZS54LCBlLnksIGUub3V0ZXJSYWRpdXMsIG4sIGkpLCB0LmFyYyhlLngsIGUueSwgZS5pbm5lclJhZGl1cywgaSwgbiwgITApLCB0LmNsb3NlUGF0aCgpLCB0LnN0cm9rZVN0eWxlID0gZS5ib3JkZXJDb2xvciwgdC5saW5lV2lkdGggPSBlLmJvcmRlcldpZHRoLCB0LmZpbGxTdHlsZSA9IGUuYmFja2dyb3VuZENvbG9yLCB0LmZpbGwoKSwgdC5saW5lSm9pbiA9ICJiZXZlbCIsIGUuYm9yZGVyV2lkdGggJiYgdC5zdHJva2UoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgMzY6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQuZGVmYXVsdHMuZ2xvYmFsOwogICAgICAgICAgICAgICAgdC5kZWZhdWx0cy5nbG9iYWwuZWxlbWVudHMubGluZSA9IHsKICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uOiAuNCwKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IG4uZGVmYXVsdENvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAzLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBuLmRlZmF1bHRDb2xvciwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDYXBTdHlsZTogImJ1dHQiLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckRhc2g6IFtdLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckRhc2hPZmZzZXQ6IDAsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVySm9pblN0eWxlOiAibWl0ZXIiLAogICAgICAgICAgICAgICAgICAgIGNhcEJlemllclBvaW50czogITAsCiAgICAgICAgICAgICAgICAgICAgZmlsbDogITAKICAgICAgICAgICAgICAgIH0sIHQuZWxlbWVudHMuTGluZSA9IHQuRWxlbWVudC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgaSwgYSwgbywgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gci5fdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByLl9jaGFydC5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC5zcGFuR2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSByLl9jaGlsZHJlbi5zbGljZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG4uZWxlbWVudHMubGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyLl9sb29wICYmIGQubGVuZ3RoICYmIGQucHVzaChkWzBdKSwgcy5zYXZlKCksIHMubGluZUNhcCA9IGwuYm9yZGVyQ2FwU3R5bGUgfHwgYy5ib3JkZXJDYXBTdHlsZSwgcy5zZXRMaW5lRGFzaCAmJiBzLnNldExpbmVEYXNoKGwuYm9yZGVyRGFzaCB8fCBjLmJvcmRlckRhc2gpLCBzLmxpbmVEYXNoT2Zmc2V0ID0gbC5ib3JkZXJEYXNoT2Zmc2V0IHx8IGMuYm9yZGVyRGFzaE9mZnNldCwgcy5saW5lSm9pbiA9IGwuYm9yZGVySm9pblN0eWxlIHx8IGMuYm9yZGVySm9pblN0eWxlLCBzLmxpbmVXaWR0aCA9IGwuYm9yZGVyV2lkdGggfHwgYy5ib3JkZXJXaWR0aCwgcy5zdHJva2VTdHlsZSA9IGwuYm9yZGVyQ29sb3IgfHwgbi5kZWZhdWx0Q29sb3IsIHMuYmVnaW5QYXRoKCksIGggPSAtMSwgdCA9IDA7IHQgPCBkLmxlbmd0aDsgKyt0KSBpID0gZFt0XSwgYSA9IGUucHJldmlvdXNJdGVtKGQsIHQpLCBvID0gaS5fdmlldywgMCA9PT0gdCA/IG8uc2tpcCB8fCAocy5tb3ZlVG8oby54LCBvLnkpLCBoID0gdCkgOiAoYSA9IGggPT09IC0xID8gYSA6IGRbaF0sIG8uc2tpcCB8fCAoaCAhPT0gdCAtIDEgJiYgIXUgfHwgaCA9PT0gLTEgPyBzLm1vdmVUbyhvLngsIG8ueSkgOiBlLmNhbnZhcy5saW5lVG8ocywgYS5fdmlldywgaS5fdmlldyksIGggPSB0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuc3Ryb2tlKCksIHMucmVzdG9yZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAzNzogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX3ZpZXc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZSAmJiBNYXRoLnBvdyh0IC0gZS54LCAyKSA8IE1hdGgucG93KGUucmFkaXVzICsgZS5oaXRSYWRpdXMsIDIpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl92aWV3OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUgJiYgTWF0aC5wb3codCAtIGUueSwgMikgPCBNYXRoLnBvdyhlLnJhZGl1cyArIGUuaGl0UmFkaXVzLCAyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGkgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgYSA9IHQuZGVmYXVsdHMuZ2xvYmFsLAogICAgICAgICAgICAgICAgICAgIG8gPSBhLmRlZmF1bHRDb2xvcjsKICAgICAgICAgICAgICAgIGEuZWxlbWVudHMucG9pbnQgPSB7CiAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiAzLAogICAgICAgICAgICAgICAgICAgIHBvaW50U3R5bGU6ICJjaXJjbGUiLAogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogbywKICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogbywKICAgICAgICAgICAgICAgICAgICBoaXRSYWRpdXM6IDEsCiAgICAgICAgICAgICAgICAgICAgaG92ZXJSYWRpdXM6IDQsCiAgICAgICAgICAgICAgICAgICAgaG92ZXJCb3JkZXJXaWR0aDogMQogICAgICAgICAgICAgICAgfSwgdC5lbGVtZW50cy5Qb2ludCA9IHQuRWxlbWVudC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIGluUmFuZ2U6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl92aWV3OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFuICYmIE1hdGgucG93KHQgLSBuLngsIDIpICsgTWF0aC5wb3coZSAtIG4ueSwgMikgPCBNYXRoLnBvdyhuLmhpdFJhZGl1cyArIG4ucmFkaXVzLCAyKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5MYWJlbFJhbmdlOiBlLAogICAgICAgICAgICAgICAgICAgIGluWFJhbmdlOiBlLAogICAgICAgICAgICAgICAgICAgIGluWVJhbmdlOiBuLAogICAgICAgICAgICAgICAgICAgIGdldENlbnRlclBvaW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl92aWV3OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogdC55CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEFyZWE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5QSSAqIE1hdGgucG93KHRoaXMuX3ZpZXcucmFkaXVzLCAyKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl92aWV3OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogdC55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogdC5yYWRpdXMgKyB0LmJvcmRlcldpZHRoCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuX21vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMuX2NoYXJ0LmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuLnBvaW50U3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5yYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbi54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG4ueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LmhlbHBlcnMuY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMS4wMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBuLnNraXAgfHwgKGwuc3Ryb2tlU3R5bGUgPSBuLmJvcmRlckNvbG9yIHx8IG8sIGwubGluZVdpZHRoID0gaS5nZXRWYWx1ZU9yRGVmYXVsdChuLmJvcmRlcldpZHRoLCBhLmVsZW1lbnRzLnBvaW50LmJvcmRlcldpZHRoKSwgbC5maWxsU3R5bGUgPSBuLmJhY2tncm91bmRDb2xvciB8fCBvLCB2b2lkIDAgIT09IGUgJiYgKHIueCA8IGUubGVmdCB8fCBlLnJpZ2h0ICogZiA8IHIueCB8fCByLnkgPCBlLnRvcCB8fCBlLmJvdHRvbSAqIGYgPCByLnkpICYmIChyLnggPCBlLmxlZnQgPyBnID0gKGQgLSByLngpIC8gKGUubGVmdCAtIHIueCkgOiBlLnJpZ2h0ICogZiA8IHIueCA/IGcgPSAoci54IC0gZCkgLyAoci54IC0gZS5yaWdodCkgOiByLnkgPCBlLnRvcCA/IGcgPSAoYyAtIHIueSkgLyAoZS50b3AgLSByLnkpIDogZS5ib3R0b20gKiBmIDwgci55ICYmIChnID0gKHIueSAtIGMpIC8gKHIueSAtIGUuYm90dG9tKSksIGcgPSBNYXRoLnJvdW5kKDEwMCAqIGcpIC8gMTAwLCBsLnN0cm9rZVN0eWxlID0gaChsLnN0cm9rZVN0eWxlKS5hbHBoYShnKS5yZ2JTdHJpbmcoKSwgbC5maWxsU3R5bGUgPSBoKGwuZmlsbFN0eWxlKS5hbHBoYShnKS5yZ2JTdHJpbmcoKSksIHQuY2FudmFzSGVscGVycy5kcmF3UG9pbnQobCwgcywgdSwgZCwgYykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAzODogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSB0Ll92aWV3LndpZHRoCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGksIGEsIG8sIHIgPSB0Ll92aWV3OwogICAgICAgICAgICAgICAgICAgIGlmIChlKHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gci53aWR0aCAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLnggLSBsLCBpID0gci54ICsgbCwgYSA9IE1hdGgubWluKHIueSwgci5iYXNlKSwgbyA9IE1hdGgubWF4KHIueSwgci5iYXNlKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gci5oZWlnaHQgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5taW4oci54LCByLmJhc2UpLCBpID0gTWF0aC5tYXgoci54LCByLmJhc2UpLCBhID0gci55IC0gcywgbyA9IHIueSArIHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBhLAogICAgICAgICAgICAgICAgICAgICAgICByaWdodDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBvCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGkgPSB0LmRlZmF1bHRzLmdsb2JhbDsKICAgICAgICAgICAgICAgIGkuZWxlbWVudHMucmVjdGFuZ2xlID0gewogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaS5kZWZhdWx0Q29sb3IsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGkuZGVmYXVsdENvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlclNraXBwZWQ6ICJib3R0b20iCiAgICAgICAgICAgICAgICB9LCB0LmVsZW1lbnRzLlJlY3RhbmdsZSA9IHQuRWxlbWVudC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2Wyh4ICsgdCkgJSA0XQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCBuLCBpLCBhLCBvLCByLCBsLCBzID0gdGhpcy5fY2hhcnQuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHRoaXMuX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdS5ib3JkZXJXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUuaG9yaXpvbnRhbCA/IChlID0gdS5iYXNlLCBuID0gdS54LCBpID0gdS55IC0gdS5oZWlnaHQgLyAyLCBhID0gdS55ICsgdS5oZWlnaHQgLyAyLCBvID0gbiA+IGUgPyAxIDogLTEsIHIgPSAxLCBsID0gdS5ib3JkZXJTa2lwcGVkIHx8ICJsZWZ0IikgOiAoZSA9IHUueCAtIHUud2lkdGggLyAyLCBuID0gdS54ICsgdS53aWR0aCAvIDIsIGkgPSB1LnksIGEgPSB1LmJhc2UsIG8gPSAxLCByID0gYSA+IGkgPyAxIDogLTEsIGwgPSB1LmJvcmRlclNraXBwZWQgfHwgImJvdHRvbSIpLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IE1hdGgubWluKE1hdGguYWJzKGUgLSBuKSwgTWF0aC5hYnMoaSAtIGEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBkID4gYyA/IGMgOiBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBkIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZSArICgibGVmdCIgIT09IGwgPyBoICogbyA6IDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBuICsgKCJyaWdodCIgIT09IGwgPyAtaCAqIG8gOiAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gaSArICgidG9wIiAhPT0gbCA/IGggKiByIDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGEgKyAoImJvdHRvbSIgIT09IGwgPyAtaCAqIHIgOiAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgIT09IGcgJiYgKGkgPSBwLCBhID0gbSksIHAgIT09IG0gJiYgKGUgPSBmLCBuID0gZykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBzLmJlZ2luUGF0aCgpLCBzLmZpbGxTdHlsZSA9IHUuYmFja2dyb3VuZENvbG9yLCBzLnN0cm9rZVN0eWxlID0gdS5ib3JkZXJDb2xvciwgcy5saW5lV2lkdGggPSBkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZSwgYV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2UsIGldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuLCBpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbiwgYV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gWyJib3R0b20iLCAibGVmdCIsICJ0b3AiLCAicmlnaHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBiLmluZGV4T2YobCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHggPT09IC0xICYmICh4ID0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gdCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgcy5tb3ZlVG8oeVswXSwgeVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAxOyBrIDwgNDsgaysrKSB5ID0gdChrKSwgcy5saW5lVG8oeVswXSwgeVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuZmlsbCgpLCBkICYmIHMuc3Ryb2tlKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYmFzZSAtIHQueQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5SYW5nZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdmlldykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQgPj0gYS5sZWZ0ICYmIHQgPD0gYS5yaWdodCAmJiBlID49IGEudG9wICYmIGUgPD0gYS5ib3R0b20KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5MYWJlbFJhbmdlOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhLl92aWV3KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbihhKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gPSBlKGEpID8gdCA+PSByLmxlZnQgJiYgdCA8PSByLnJpZ2h0IDogaSA+PSByLnRvcCAmJiBpIDw9IHIuYm90dG9tCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpblhSYW5nZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG4odGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID49IGUubGVmdCAmJiB0IDw9IGUucmlnaHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGluWVJhbmdlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbih0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPj0gZS50b3AgJiYgdCA8PSBlLmJvdHRvbQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0Q2VudGVyUG9pbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSA9IHRoaXMuX3ZpZXc7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHRoaXMpID8gKHQgPSBpLngsIG4gPSAoaS55ICsgaS5iYXNlKSAvIDIpIDogKHQgPSAoaS54ICsgaS5iYXNlKSAvIDIsIG4gPSBpLnkpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRBcmVhOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl92aWV3OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC53aWR0aCAqIE1hdGguYWJzKHQueSAtIHQuYmFzZSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQueQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICAzOTogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHMuZ2V0U3R5bGUodCwgZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuICYmIG4ubWF0Y2goL14oXGQrKShcLlxkKyk/cHgkLyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPyBOdW1iZXIoaVsxXSkgOiB2b2lkIDAKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQuc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmdldEF0dHJpYnV0ZSgiaGVpZ2h0IiksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmdldEF0dHJpYnV0ZSgid2lkdGgiKTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5fY2hhcnRqcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaS5kaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGkuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaS53aWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgaS5kaXNwbGF5ID0gaS5kaXNwbGF5IHx8ICJibG9jayIsIG51bGwgPT09IG8gfHwgIiIgPT09IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlKHQsICJ3aWR0aCIpOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHIgJiYgKHQud2lkdGggPSByKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gYSB8fCAiIiA9PT0gYSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIiID09PSB0LnN0eWxlLmhlaWdodCkgdC5oZWlnaHQgPSB0LndpZHRoIC8gKG4ub3B0aW9ucy5hc3BlY3RSYXRpbyB8fCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGUodCwgImhlaWdodCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSByICYmICh0LmhlaWdodCA9IGwpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkodCwgZSwgbiwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmU6IGEgfHwgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgeDogdm9pZCAwICE9PSBuID8gbiA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHZvaWQgMCAhPT0gaSA/IGkgOiBudWxsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdVt0LnR5cGVdIHx8IHQudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHMuZ2V0UmVsYXRpdmVQb3NpdGlvbih0LCBlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaShuLCBlLCBhLngsIGEueSwgdCkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNsYXNzTmFtZSA9ICJjaGFydGpzLWhpZGRlbi1pZnJhbWUiLCBlLnN0eWxlLmNzc1RleHQgPSAiZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjA7bWFyZ2luOjA7dG9wOjA7bGVmdDowO2JvdHRvbTowO3JpZ2h0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6LTE7IiwgZS50YWJJbmRleCA9IC0xLCBzLmFkZEV2ZW50KGUsICJsb2FkIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuYWRkRXZlbnQoZS5jb250ZW50V2luZG93IHx8IGUsICJyZXNpemUiLCB0KSwgdCgpCiAgICAgICAgICAgICAgICAgICAgfSksIGUKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiByKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQuX2NoYXJ0anMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNraW5nOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnRpY2tpbmcgfHwgKGEudGlja2luZyA9ICEwLCBzLnJlcXVlc3RBbmltRnJhbWUuY2FsbCh3aW5kb3csIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLnJlc2l6ZXIpIHJldHVybiBhLnRpY2tpbmcgPSAhMSwgZShpKCJyZXNpemUiLCBuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGEucmVzaXplciA9IG8ociksIHQuaW5zZXJ0QmVmb3JlKGEucmVzaXplciwgdC5maXJzdENoaWxkKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwodCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIHQuX2NoYXJ0anMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0Ll9jaGFydGpzLnJlc2l6ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgKGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSwgdC5fY2hhcnRqcy5yZXNpemVyID0gbnVsbCksIGRlbGV0ZSB0Ll9jaGFydGpzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHMgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgdSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hzdGFydDogIm1vdXNlZG93biIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNobW92ZTogIm1vdXNlbW92ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoZW5kOiAibW91c2V1cCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJlbnRlcjogIm1vdXNlZW50ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyZG93bjogIm1vdXNlZG93biIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJtb3ZlOiAibW91c2Vtb3ZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcnVwOiAibW91c2V1cCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJsZWF2ZTogIm1vdXNlb3V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcm91dDogIm1vdXNlb3V0IgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGFjcXVpcmVDb250ZXh0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiB0ID8gdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpIDogdC5sZW5ndGggJiYgKHQgPSB0WzBdKSwgdCAmJiB0LmNhbnZhcyAmJiAodCA9IHQuY2FudmFzKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0ICYmIHQuZ2V0Q29udGV4dCAmJiB0LmdldENvbnRleHQoIjJkIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpICYmIGkuY2FudmFzID09PSB0ID8gKG4odCwgZSksIGkpIDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmNhbnZhczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuX2NoYXJ0anMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5fY2hhcnRqcy5pbml0aWFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoZWlnaHQiLCAid2lkdGgiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG5bdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBpIHx8IG51bGwgPT09IGkgPyBlLnJlbW92ZUF0dHJpYnV0ZSh0KSA6IGUuc2V0QXR0cmlidXRlKHQsIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgcy5lYWNoKG4uc3R5bGUgfHwge30sIGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0eWxlW25dID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUud2lkdGggPSBlLndpZHRoLCBkZWxldGUgZS5fY2hhcnRqcwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5jYW52YXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgicmVzaXplIiA9PT0gZSkgcmV0dXJuIHZvaWQgcihpLnBhcmVudE5vZGUsIG4sIHQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4uX2NoYXJ0anMgfHwgKG4uX2NoYXJ0anMgPSB7fSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gby5wcm94aWVzIHx8IChvLnByb3hpZXMgPSB7fSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbFt0LmlkICsgIl8iICsgZV0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbihhKGUsIHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgcy5hZGRFdmVudChpLCBlLCB1KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQuY2FudmFzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInJlc2l6ZSIgPT09IGUpIHJldHVybiB2b2lkIGwoaS5wYXJlbnROb2RlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLl9jaGFydGpzIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEucHJveGllcyB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvW3QuaWQgKyAiXyIgKyBlXTsKICAgICAgICAgICAgICAgICAgICAgICAgciAmJiBzLnJlbW92ZUV2ZW50KGksIGUsIHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDQwOiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gdCgzOSk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHQucGxhdGZvcm0gPSB7CiAgICAgICAgICAgICAgICAgICAgYWNxdWlyZUNvbnRleHQ6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQ6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7fSwKICAgICAgICAgICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyOiBmdW5jdGlvbigpIHt9CiAgICAgICAgICAgICAgICB9LCB0LmhlbHBlcnMuZXh0ZW5kKHQucGxhdGZvcm0sIGkodCkpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIDM5OiAzOQogICAgICAgIH1dLAogICAgICAgIDQxOiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpLCBhID0gdC5fbW9kZWwgfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLmZpbGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gbyAmJiAobyA9ICEhYS5iYWNrZ3JvdW5kQ29sb3IpLCBvID09PSAhMSB8fCBudWxsID09PSBvKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8gPT09ICEwKSByZXR1cm4gIm9yaWdpbiI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBwYXJzZUZsb2F0KG8sIDEwKSwgaXNGaW5pdGUoaSkgJiYgTWF0aC5mbG9vcihpKSA9PT0gaSkgcmV0dXJuICItIiAhPT0gb1swXSAmJiAiKyIgIT09IG9bMF0gfHwgKGkgPSBlICsgaSksICEoaSA9PT0gZSB8fCBpIDwgMCB8fCBpID49IG4pICYmIGk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJvdHRvbSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0YXJ0IjsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG9wIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZW5kIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiemVybyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9yaWdpbiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9yaWdpbiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInN0YXJ0IjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBuID0gdC5lbC5fbW9kZWwgfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmVsLl9zY2FsZSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuZmlsbCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRmluaXRlKGEpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZiAoInN0YXJ0IiA9PT0gYSA/IG8gPSB2b2lkIDAgPT09IG4uc2NhbGVCb3R0b20gPyBpLmJvdHRvbSA6IG4uc2NhbGVCb3R0b20gOiAiZW5kIiA9PT0gYSA/IG8gPSB2b2lkIDAgPT09IG4uc2NhbGVUb3AgPyBpLnRvcCA6IG4uc2NhbGVUb3AgOiB2b2lkIDAgIT09IG4uc2NhbGVaZXJvID8gbyA9IG4uc2NhbGVaZXJvIDogaS5nZXRCYXNlUG9zaXRpb24gPyBvID0gaS5nZXRCYXNlUG9zaXRpb24oKSA6IGkuZ2V0QmFzZVBpeGVsICYmIChvID0gaS5nZXRCYXNlUGl4ZWwoKSksIHZvaWQgMCAhPT0gbyAmJiBudWxsICE9PSBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IG8ueCAmJiB2b2lkIDAgIT09IG8ueSkgcmV0dXJuIG87CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgbyAmJiBpc0Zpbml0ZShvKSkgcmV0dXJuIGUgPSBpLmlzSG9yaXpvbnRhbCgpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBlID8gbyA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBlID8gbnVsbCA6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkodCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpLCBhID0gdFtlXSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEuZmlsbCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtlXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgIGZvciAoOyBvICE9PSAhMSAmJiByLmluZGV4T2YobykgPT09IC0xOykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKG8pKSByZXR1cm4gbzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSB0W29dLCAhaSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS52aXNpYmxlKSByZXR1cm4gbzsKICAgICAgICAgICAgICAgICAgICAgICAgci5wdXNoKG8pLCBvID0gaS5maWxsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5maWxsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gImRhdGFzZXQiOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSAhMSA/IG51bGwgOiAoaXNGaW5pdGUoZSkgfHwgKG4gPSAiYm91bmRhcnkiKSwgZFtuXSh0KSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiAhdC5za2lwCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gcih0LCBlLCBuLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG87CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgJiYgYSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQubW92ZVRvKGVbMF0ueCwgZVswXS55KSwgbyA9IDE7IG8gPCBpOyArK28pIHUuY2FudmFzLmxpbmVUbyh0LCBlW28gLSAxXSwgZVtvXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodC5saW5lVG8oblthIC0gMV0ueCwgblthIC0gMV0ueSksIG8gPSBhIC0gMTsgbyA+IDA7IC0tbykgdS5jYW52YXMubGluZVRvKHQsIG5bb10sIG5bbyAtIDFdLCAhMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbCh0LCBlLCBuLCBpLCBhLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMsIHUsIGQsIGMsIGgsIGYsIGcsIHAgPSBlLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGkuc3BhbkdhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0LmJlZ2luUGF0aCgpLCBzID0gMCwgdSA9IHAgKyAhIWw7IHMgPCB1OyArK3MpIGQgPSBzICUgcCwgYyA9IGVbZF0uX3ZpZXcsIGggPSBuKGMsIGQsIGkpLCBmID0gbyhjKSwgZyA9IG8oaCksIGYgJiYgZyA/ICh4ID0gdi5wdXNoKGMpLCB5ID0gYi5wdXNoKGgpKSA6IHggJiYgeSAmJiAobSA/IChmICYmIHYucHVzaChjKSwgZyAmJiBiLnB1c2goaCkpIDogKHIodCwgdiwgYiwgeCwgeSksIHggPSB5ID0gMCwgdiA9IFtdLCBiID0gW10pKTsKICAgICAgICAgICAgICAgICAgICByKHQsIHYsIGIsIHgsIHkpLCB0LmNsb3NlUGF0aCgpLCB0LmZpbGxTdHlsZSA9IGEsIHQuZmlsbCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0LmRlZmF1bHRzLmdsb2JhbC5wbHVnaW5zLmZpbGxlciA9IHsKICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGU6ICEwCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgdmFyIHMgPSB0LmRlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgIHUgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgZCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmZpbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uZ2V0RGF0YXNldE1ldGEoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkgJiYgbi5pc0RhdGFzZXRWaXNpYmxlKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhICYmIGkuZGF0YXNldC5fY2hpbGRyZW4gfHwgW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5sZW5ndGggPyBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9bZV0uX3ZpZXcgfHwgbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5ib3VuZGFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZSA/IGUueCA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUgPyBlLnkgOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBudWxsID09PSBuID8gdC54IDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbnVsbCA9PT0gaSA/IHQueSA6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBpZDogImZpbGxlciIsCiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJEYXRhc2V0c1VwZGF0ZTogZnVuY3Rpb24obywgcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCwgcywgdSwgZCwgYyA9IChvLmRhdGEuZGF0YXNldHMgfHwgW10pLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSByLnByb3BhZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gMDsgcyA8IGM7ICsrcykgbCA9IG8uZ2V0RGF0YXNldE1ldGEocyksIHUgPSBsLmRhdGFzZXQsIGQgPSBudWxsLCB1ICYmIHUuX21vZGVsICYmIHUgaW5zdGFuY2VvZiB0LmVsZW1lbnRzLkxpbmUgJiYgKGQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBvLmlzRGF0YXNldFZpc2libGUocyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBlKHUsIHMsIGMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbDogdQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbC4kZmlsbGVyID0gZCwgZi5wdXNoKGQpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgPSAwOyBzIDwgYzsgKytzKSBkID0gZltzXSwgZCAmJiAoZC5maWxsID0gaShmLCBzLCBoKSwgZC5ib3VuZGFyeSA9IG4oZCksIGQubWFwcGVyID0gYShkKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJlZm9yZURhdGFzZXREcmF3OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5tZXRhLiRmaWxsZXI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4uZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkuX2NoaWxkcmVuIHx8IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLm1hcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gYS5iYWNrZ3JvdW5kQ29sb3IgfHwgcy5nbG9iYWwuZGVmYXVsdENvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciAmJiB1ICYmIG8ubGVuZ3RoICYmIGwodC5jdHgsIG8sIHIsIGEsIHUsIGkuX2xvb3ApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgNDI6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZSh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudXNlUG9pbnRTdHlsZSA/IGUgKiBNYXRoLlNRUlQyIDogdC5ib3hXaWR0aAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gbmV3IHQuTGVnZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgY3R4OiBlLmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogbiwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IGUKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBhLmNvbmZpZ3VyZShlLCBpLCBuKSwgYS5hZGRCb3goZSwgaSksIGUubGVnZW5kID0gaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGkgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgYSA9IHQubGF5b3V0U2VydmljZSwKICAgICAgICAgICAgICAgICAgICBvID0gaS5ub29wOwogICAgICAgICAgICAgICAgcmV0dXJuIHQuZGVmYXVsdHMuZ2xvYmFsLmxlZ2VuZCA9IHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMCwKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoOiAhMCwKICAgICAgICAgICAgICAgICAgICByZXZlcnNlOiAhMSwKICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IDFlMywKICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5kYXRhc2V0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmdldERhdGFzZXRNZXRhKG4pOwogICAgICAgICAgICAgICAgICAgICAgICBhLmhpZGRlbiA9IG51bGwgPT09IGEuaGlkZGVuID8gIWkuZGF0YS5kYXRhc2V0c1tuXS5oaWRkZW4gOiBudWxsLCBpLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvbkhvdmVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICBib3hXaWR0aDogNDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUxhYmVsczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5pc0FycmF5KGUuZGF0YXNldHMpID8gZS5kYXRhc2V0cy5tYXAoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGUubGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogaS5pc0FycmF5KGUuYmFja2dyb3VuZENvbG9yKSA/IGUuYmFja2dyb3VuZENvbG9yWzBdIDogZS5iYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbjogIXQuaXNEYXRhc2V0VmlzaWJsZShuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNhcDogZS5ib3JkZXJDYXBTdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZURhc2g6IGUuYm9yZGVyRGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZURhc2hPZmZzZXQ6IGUuYm9yZGVyRGFzaE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUpvaW46IGUuYm9yZGVySm9pblN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IGUuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVN0eWxlOiBlLmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFN0eWxlOiBlLnBvaW50U3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRJbmRleDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMpIDogW10KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQuTGVnZW5kID0gdC5FbGVtZW50LmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLmV4dGVuZCh0aGlzLCB0KSwgdGhpcy5sZWdlbmRIaXRCb3hlcyA9IFtdLCB0aGlzLmRvdWdobnV0TW9kZSA9ICExCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBiZWZvcmVVcGRhdGU6IG8sCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuYmVmb3JlVXBkYXRlKCksIGkubWF4V2lkdGggPSB0LCBpLm1heEhlaWdodCA9IGUsIGkubWFyZ2lucyA9IG4sIGkuYmVmb3JlU2V0RGltZW5zaW9ucygpLCBpLnNldERpbWVuc2lvbnMoKSwgaS5hZnRlclNldERpbWVuc2lvbnMoKSwgaS5iZWZvcmVCdWlsZExhYmVscygpLCBpLmJ1aWxkTGFiZWxzKCksIGkuYWZ0ZXJCdWlsZExhYmVscygpLCBpLmJlZm9yZUZpdCgpLCBpLmZpdCgpLCBpLmFmdGVyRml0KCksIGkuYWZ0ZXJVcGRhdGUoKSwgaS5taW5TaXplCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZnRlclVwZGF0ZTogbywKICAgICAgICAgICAgICAgICAgICBiZWZvcmVTZXREaW1lbnNpb25zOiBvLAogICAgICAgICAgICAgICAgICAgIHNldERpbWVuc2lvbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuaXNIb3Jpem9udGFsKCkgPyAodC53aWR0aCA9IHQubWF4V2lkdGgsIHQubGVmdCA9IDAsIHQucmlnaHQgPSB0LndpZHRoKSA6ICh0LmhlaWdodCA9IHQubWF4SGVpZ2h0LCB0LnRvcCA9IDAsIHQuYm90dG9tID0gdC5oZWlnaHQpLCB0LnBhZGRpbmdMZWZ0ID0gMCwgdC5wYWRkaW5nVG9wID0gMCwgdC5wYWRkaW5nUmlnaHQgPSAwLCB0LnBhZGRpbmdCb3R0b20gPSAwLCB0Lm1pblNpemUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZnRlclNldERpbWVuc2lvbnM6IG8sCiAgICAgICAgICAgICAgICAgICAgYmVmb3JlQnVpbGRMYWJlbHM6IG8sCiAgICAgICAgICAgICAgICAgICAgYnVpbGRMYWJlbHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5vcHRpb25zLmxhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmdlbmVyYXRlTGFiZWxzLmNhbGwodCwgdC5jaGFydCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZmlsdGVyICYmIChuID0gbi5maWx0ZXIoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZmlsdGVyKG4sIHQuY2hhcnQuZGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0Lm9wdGlvbnMucmV2ZXJzZSAmJiBuLnJldmVyc2UoKSwgdC5sZWdlbmRJdGVtcyA9IG4KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFmdGVyQnVpbGRMYWJlbHM6IG8sCiAgICAgICAgICAgICAgICAgICAgYmVmb3JlRml0OiBvLAogICAgICAgICAgICAgICAgICAgIGZpdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYS5sYWJlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYS5kaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4uY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuZGVmYXVsdHMuZ2xvYmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkuZ2V0VmFsdWVPckRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdShvLmZvbnRTaXplLCBzLmRlZmF1bHRGb250U2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdShvLmZvbnRTdHlsZSwgcy5kZWZhdWx0Rm9udFN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB1KG8uZm9udEZhbWlseSwgcy5kZWZhdWx0Rm9udEZhbWlseSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaS5mb250U3RyaW5nKGQsIGMsIGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4ubGVnZW5kSGl0Qm94ZXMgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBuLm1pblNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gbi5pc0hvcml6b250YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0gPyAocC53aWR0aCA9IG4ubWF4V2lkdGgsIHAuaGVpZ2h0ID0gciA/IDEwIDogMCkgOiAocC53aWR0aCA9IHIgPyAxMCA6IDAsIHAuaGVpZ2h0ID0gbi5tYXhIZWlnaHQpLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwuZm9udCA9IGYsIG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IG4ubGluZVdpZHRocyA9IFswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG4ubGVnZW5kSXRlbXMubGVuZ3RoID8gZCArIG8ucGFkZGluZyA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC50ZXh0QWxpZ24gPSAibGVmdCIsIGwudGV4dEJhc2VsaW5lID0gInRvcCIsIGkuZWFjaChuLmxlZ2VuZEl0ZW1zLCBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZShvLCBkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhICsgZCAvIDIgKyBsLm1lYXN1cmVUZXh0KHQudGV4dCkud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZbdi5sZW5ndGggLSAxXSArIHIgKyBvLnBhZGRpbmcgPj0gbi53aWR0aCAmJiAoYiArPSBkICsgby5wYWRkaW5nLCB2W3YubGVuZ3RoXSA9IG4ubGVmdCksIGdbaV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdlt2Lmxlbmd0aCAtIDFdICs9IHIgKyBvLnBhZGRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgcC5oZWlnaHQgKz0gYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IG8ucGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG4uY29sdW1uV2lkdGhzID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBvLnBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IGQgKyB4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZWFjaChuLmxlZ2VuZEl0ZW1zLCBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZShvLCBkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpICsgZCAvIDIgKyBsLm1lYXN1cmVUZXh0KHQudGV4dCkud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gKyBTID4gcC5oZWlnaHQgJiYgKGsgKz0gdyArIG8ucGFkZGluZywgeS5wdXNoKHcpLCB3ID0gMCwgTSA9IDApLCB3ID0gTWF0aC5tYXgodywgYSksIE0gKz0gUywgZ1tuXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGsgKz0gdywgeS5wdXNoKHcpLCBwLndpZHRoICs9IGsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbi53aWR0aCA9IHAud2lkdGgsIG4uaGVpZ2h0ID0gcC5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFmdGVyRml0OiBvLAogICAgICAgICAgICAgICAgICAgIGlzSG9yaXpvbnRhbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAidG9wIiA9PT0gdGhpcy5vcHRpb25zLnBvc2l0aW9uIHx8ICJib3R0b20iID09PSB0aGlzLm9wdGlvbnMucG9zaXRpb24KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbi5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEubGFiZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZGVmYXVsdHMuZ2xvYmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHIuZWxlbWVudHMubGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4ubGluZVdpZHRoczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEuZGlzcGxheSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQsIGMgPSBuLmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaS5nZXRWYWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaChvLmZvbnRDb2xvciwgci5kZWZhdWx0Rm9udENvbG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gaChvLmZvbnRTaXplLCByLmRlZmF1bHRGb250U2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGgoby5mb250U3R5bGUsIHIuZGVmYXVsdEZvbnRTdHlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGgoby5mb250RmFtaWx5LCByLmRlZmF1bHRGb250RmFtaWx5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gaS5mb250U3RyaW5nKGcsIHAsIG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYy50ZXh0QWxpZ24gPSAibGVmdCIsIGMudGV4dEJhc2VsaW5lID0gInRvcCIsIGMubGluZVdpZHRoID0gLjUsIGMuc3Ryb2tlU3R5bGUgPSBmLCBjLmZpbGxTdHlsZSA9IGYsIGMuZm9udCA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGUobywgZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IG4ubGVnZW5kSGl0Qm94ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGZ1bmN0aW9uKGUsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaXNOYU4oYikgfHwgYiA8PSAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zYXZlKCksIGMuZmlsbFN0eWxlID0gaChpLmZpbGxTdHlsZSwgci5kZWZhdWx0Q29sb3IpLCBjLmxpbmVDYXAgPSBoKGkubGluZUNhcCwgbC5ib3JkZXJDYXBTdHlsZSksIGMubGluZURhc2hPZmZzZXQgPSBoKGkubGluZURhc2hPZmZzZXQsIGwuYm9yZGVyRGFzaE9mZnNldCksIGMubGluZUpvaW4gPSBoKGkubGluZUpvaW4sIGwuYm9yZGVySm9pblN0eWxlKSwgYy5saW5lV2lkdGggPSBoKGkubGluZVdpZHRoLCBsLmJvcmRlcldpZHRoKSwgYy5zdHJva2VTdHlsZSA9IGgoaS5zdHJva2VTdHlsZSwgci5kZWZhdWx0Q29sb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAwID09PSBoKGkubGluZVdpZHRoLCBsLmJvcmRlcldpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjLnNldExpbmVEYXNoICYmIGMuc2V0TGluZURhc2goaChpLmxpbmVEYXNoLCBsLmJvcmRlckRhc2gpKSwgYS5sYWJlbHMgJiYgYS5sYWJlbHMudXNlUG9pbnRTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZyAqIE1hdGguU1FSVDIgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gcyAvIE1hdGguU1FSVDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBlICsgdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG4gKyB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuY2FudmFzSGVscGVycy5kcmF3UG9pbnQoYywgaS5wb2ludFN0eWxlLCBzLCBkLCBmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG8gfHwgYy5zdHJva2VSZWN0KGUsIG4sIGIsIGcpLCBjLmZpbGxSZWN0KGUsIG4sIGIsIGcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5yZXN0b3JlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGZ1bmN0aW9uKHQsIGUsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5maWxsVGV4dChuLnRleHQsIGIgKyBnIC8gMiArIHQsIGUpLCBuLmhpZGRlbiAmJiAoYy5iZWdpblBhdGgoKSwgYy5saW5lV2lkdGggPSAyLCBjLm1vdmVUbyhiICsgZyAvIDIgKyB0LCBlICsgZyAvIDIpLCBjLmxpbmVUbyhiICsgZyAvIDIgKyB0ICsgaSwgZSArIGcgLyAyKSwgYy5zdHJva2UoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBuLmlzSG9yaXpvbnRhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHcgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogbi5sZWZ0ICsgKHMgLSB1WzBdKSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbi50b3AgKyBvLnBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBuLmxlZnQgKyBvLnBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbi50b3AgKyBvLnBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBNID0gZyArIG8ucGFkZGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZWFjaChuLmxlZ2VuZEl0ZW1zLCBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBjLm1lYXN1cmVUZXh0KHQudGV4dCkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBiICsgZyAvIDIgKyBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZC55OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPyByICsgYSA+PSBzICYmIChsID0gZC55ICs9IE0sIGQubGluZSsrLCByID0gZC54ID0gbi5sZWZ0ICsgKHMgLSB1W2QubGluZV0pIC8gMikgOiBsICsgTSA+IG4uYm90dG9tICYmIChyID0gZC54ID0gciArIG4uY29sdW1uV2lkdGhzW2QubGluZV0gKyBvLnBhZGRpbmcsIGwgPSBkLnkgPSBuLnRvcCArIG8ucGFkZGluZywgZC5saW5lKyspLCB5KHIsIGwsIHQpLCB4W2VdLmxlZnQgPSByLCB4W2VdLnRvcCA9IGwsIGsociwgbCwgdCwgaSksIHcgPyBkLnggKz0gYSArIG8ucGFkZGluZyA6IGQueSArPSBNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICJtb3VzZXVwIiA9PT0gdC50eXBlID8gImNsaWNrIiA6IHQudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJtb3VzZW1vdmUiID09PSBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4ub25Ib3ZlcikgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNsaWNrIiAhPT0gaSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuLm9uQ2xpY2spIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQueTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPj0gZS5sZWZ0ICYmIG8gPD0gZS5yaWdodCAmJiByID49IGUudG9wICYmIHIgPD0gZS5ib3R0b20pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gZS5sZWdlbmRIaXRCb3hlcywgcyA9IDA7IHMgPCBsLmxlbmd0aDsgKytzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBsW3NdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID49IHUubGVmdCAmJiBvIDw9IHUubGVmdCArIHUud2lkdGggJiYgciA+PSB1LnRvcCAmJiByIDw9IHUudG9wICsgdS5oZWlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJjbGljayIgPT09IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ub25DbGljay5jYWxsKGUsIHQubmF0aXZlLCBlLmxlZ2VuZEl0ZW1zW3NdKSwgYSA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm1vdXNlbW92ZSIgPT09IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ub25Ib3Zlci5jYWxsKGUsIHQubmF0aXZlLCBlLmxlZ2VuZEl0ZW1zW3NdKSwgYSA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgIGlkOiAibGVnZW5kIiwKICAgICAgICAgICAgICAgICAgICBiZWZvcmVJbml0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5vcHRpb25zLmxlZ2VuZDsKICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBuKHQsIGUpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBiZWZvcmVVcGRhdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLm9wdGlvbnMubGVnZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUubGVnZW5kOwogICAgICAgICAgICAgICAgICAgICAgICBvID8gKG8gPSBpLmNvbmZpZ01lcmdlKHQuZGVmYXVsdHMuZ2xvYmFsLmxlZ2VuZCwgbyksIHIgPyAoYS5jb25maWd1cmUoZSwgciwgbyksIHIub3B0aW9ucyA9IG8pIDogbihlLCBvKSkgOiByICYmIChhLnJlbW92ZUJveChlLCByKSwgZGVsZXRlIGUubGVnZW5kKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFdmVudDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQubGVnZW5kOwogICAgICAgICAgICAgICAgICAgICAgICBuICYmIG4uaGFuZGxlRXZlbnQoZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgNDM6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuZXcgdC5UaXRsZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIGN0eDogZS5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiBlCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaS5jb25maWd1cmUoZSwgYSwgbiksIGkuYWRkQm94KGUsIGEpLCBlLnRpdGxlQmxvY2sgPSBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbiA9IHQuaGVscGVycywKICAgICAgICAgICAgICAgICAgICBpID0gdC5sYXlvdXRTZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgIGEgPSBuLm5vb3A7CiAgICAgICAgICAgICAgICByZXR1cm4gdC5kZWZhdWx0cy5nbG9iYWwudGl0bGUgPSB7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogITEsCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJ0b3AiLAogICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aDogITAsCiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiAyZTMsCiAgICAgICAgICAgICAgICAgICAgZm9udFN0eWxlOiAiYm9sZCIsCiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsCiAgICAgICAgICAgICAgICAgICAgdGV4dDogIiIKICAgICAgICAgICAgICAgIH0sIHQuVGl0bGUgPSB0LkVsZW1lbnQuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgbi5leHRlbmQoZSwgdCksIGUubGVnZW5kSGl0Qm94ZXMgPSBbXTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJlZm9yZVVwZGF0ZTogYSwKICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5iZWZvcmVVcGRhdGUoKSwgaS5tYXhXaWR0aCA9IHQsIGkubWF4SGVpZ2h0ID0gZSwgaS5tYXJnaW5zID0gbiwgaS5iZWZvcmVTZXREaW1lbnNpb25zKCksIGkuc2V0RGltZW5zaW9ucygpLCBpLmFmdGVyU2V0RGltZW5zaW9ucygpLCBpLmJlZm9yZUJ1aWxkTGFiZWxzKCksIGkuYnVpbGRMYWJlbHMoKSwgaS5hZnRlckJ1aWxkTGFiZWxzKCksIGkuYmVmb3JlRml0KCksIGkuZml0KCksIGkuYWZ0ZXJGaXQoKSwgaS5hZnRlclVwZGF0ZSgpLCBpLm1pblNpemUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFmdGVyVXBkYXRlOiBhLAogICAgICAgICAgICAgICAgICAgIGJlZm9yZVNldERpbWVuc2lvbnM6IGEsCiAgICAgICAgICAgICAgICAgICAgc2V0RGltZW5zaW9uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgdC5pc0hvcml6b250YWwoKSA/ICh0LndpZHRoID0gdC5tYXhXaWR0aCwgdC5sZWZ0ID0gMCwgdC5yaWdodCA9IHQud2lkdGgpIDogKHQuaGVpZ2h0ID0gdC5tYXhIZWlnaHQsIHQudG9wID0gMCwgdC5ib3R0b20gPSB0LmhlaWdodCksIHQucGFkZGluZ0xlZnQgPSAwLCB0LnBhZGRpbmdUb3AgPSAwLCB0LnBhZGRpbmdSaWdodCA9IDAsIHQucGFkZGluZ0JvdHRvbSA9IDAsIHQubWluU2l6ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFmdGVyU2V0RGltZW5zaW9uczogYSwKICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdWlsZExhYmVsczogYSwKICAgICAgICAgICAgICAgICAgICBidWlsZExhYmVsczogYSwKICAgICAgICAgICAgICAgICAgICBhZnRlckJ1aWxkTGFiZWxzOiBhLAogICAgICAgICAgICAgICAgICAgIGJlZm9yZUZpdDogYSwKICAgICAgICAgICAgICAgICAgICBmaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5nZXRWYWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5kZWZhdWx0cy5nbG9iYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYS5kaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGkoYS5mb250U2l6ZSwgby5kZWZhdWx0Rm9udFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUubWluU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5pc0hvcml6b250YWwoKSA/IChzLndpZHRoID0gZS5tYXhXaWR0aCwgcy5oZWlnaHQgPSByID8gbCArIDIgKiBhLnBhZGRpbmcgOiAwKSA6IChzLndpZHRoID0gciA/IGwgKyAyICogYS5wYWRkaW5nIDogMCwgcy5oZWlnaHQgPSBlLm1heEhlaWdodCksIGUud2lkdGggPSBzLndpZHRoLCBlLmhlaWdodCA9IHMuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZnRlckZpdDogYSwKICAgICAgICAgICAgICAgICAgICBpc0hvcml6b250YWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ0b3AiID09PSB0IHx8ICJib3R0b20iID09PSB0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkcmF3OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4uZ2V0VmFsdWVPckRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZGVmYXVsdHMuZ2xvYmFsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5kaXNwbGF5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCwgcywgdSwgZCA9IGEoby5mb250U2l6ZSwgci5kZWZhdWx0Rm9udFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhKG8uZm9udFN0eWxlLCByLmRlZmF1bHRGb250U3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBhKG8uZm9udEZhbWlseSwgci5kZWZhdWx0Rm9udEZhbWlseSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG4uZm9udFN0cmluZyhkLCBjLCBoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGUubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gZS5ib3R0b20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGUucmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmZpbGxTdHlsZSA9IGEoby5mb250Q29sb3IsIHIuZGVmYXVsdEZvbnRDb2xvciksIGkuZm9udCA9IGYsIGUuaXNIb3Jpem9udGFsKCkgPyAobCA9IG0gKyAoYiAtIG0pIC8gMiwgcyA9IHAgKyAodiAtIHApIC8gMiwgdSA9IGIgLSBtKSA6IChsID0gImxlZnQiID09PSBvLnBvc2l0aW9uID8gbSArIGQgLyAyIDogYiAtIGQgLyAyLCBzID0gcCArICh2IC0gcCkgLyAyLCB1ID0gdiAtIHAsIGcgPSBNYXRoLlBJICogKCJsZWZ0IiA9PT0gby5wb3NpdGlvbiA/IC0uNSA6IC41KSksIGkuc2F2ZSgpLCBpLnRyYW5zbGF0ZShsLCBzKSwgaS5yb3RhdGUoZyksIGkudGV4dEFsaWduID0gImNlbnRlciIsIGkudGV4dEJhc2VsaW5lID0gIm1pZGRsZSIsIGkuZmlsbFRleHQoby50ZXh0LCAwLCAwLCB1KSwgaS5yZXN0b3JlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgaWQ6ICJ0aXRsZSIsCiAgICAgICAgICAgICAgICAgICAgYmVmb3JlSW5pdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQub3B0aW9ucy50aXRsZTsKICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiBlKHQsIG4pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBiZWZvcmVVcGRhdGU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBhLm9wdGlvbnMudGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYS50aXRsZUJsb2NrOwogICAgICAgICAgICAgICAgICAgICAgICBvID8gKG8gPSBuLmNvbmZpZ01lcmdlKHQuZGVmYXVsdHMuZ2xvYmFsLnRpdGxlLCBvKSwgciA/IChpLmNvbmZpZ3VyZShhLCByLCBvKSwgci5vcHRpb25zID0gbykgOiBlKGEsIG8pKSA6IHIgJiYgKHQubGF5b3V0U2VydmljZS5yZW1vdmVCb3goYSwgciksIGRlbGV0ZSBhLnRpdGxlQmxvY2spCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDQ0OiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdC5oZWxwZXJzLAogICAgICAgICAgICAgICAgICAgIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYm90dG9tIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaSA9IHQuU2NhbGUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGFiZWxzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5jaGFydC5kYXRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmlzSG9yaXpvbnRhbCgpID8gdC54TGFiZWxzIDogdC55TGFiZWxzKSB8fCB0LmxhYmVscwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmVEYXRhTGltaXRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5nZXRMYWJlbHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQubWluSW5kZXggPSAwLCB0Lm1heEluZGV4ID0gbi5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHQub3B0aW9ucy50aWNrcy5taW4gJiYgKGkgPSBlLmluZGV4T2YobiwgdC5vcHRpb25zLnRpY2tzLm1pbiksIHQubWluSW5kZXggPSBpICE9PSAtMSA/IGkgOiB0Lm1pbkluZGV4KSwgdm9pZCAwICE9PSB0Lm9wdGlvbnMudGlja3MubWF4ICYmIChpID0gZS5pbmRleE9mKG4sIHQub3B0aW9ucy50aWNrcy5tYXgpLCB0Lm1heEluZGV4ID0gaSAhPT0gLTEgPyBpIDogdC5tYXhJbmRleCksIHQubWluID0gblt0Lm1pbkluZGV4XSwgdC5tYXggPSBuW3QubWF4SW5kZXhdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkVGlja3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0LmdldExhYmVscygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC50aWNrcyA9IDAgPT09IHQubWluSW5kZXggJiYgdC5tYXhJbmRleCA9PT0gZS5sZW5ndGggLSAxID8gZSA6IGUuc2xpY2UodC5taW5JbmRleCwgdC5tYXhJbmRleCArIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldExhYmVsRm9ySW5kZXg6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5jaGFydC5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmlzSG9yaXpvbnRhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkueUxhYmVscyAmJiAhYSA/IG4uZ2V0UmlnaHRWYWx1ZShpLmRhdGFzZXRzW2VdLmRhdGFbdF0pIDogbi50aWNrc1t0IC0gbi5taW5JbmRleF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UGl4ZWxGb3JWYWx1ZTogZnVuY3Rpb24odCwgZSwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEsIG8gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBNYXRoLm1heChvLm1heEluZGV4ICsgMSAtIG8ubWluSW5kZXggLSAoby5vcHRpb25zLmdyaWRMaW5lcy5vZmZzZXRHcmlkTGluZXMgPyAwIDogMSksIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdCAmJiBudWxsICE9PSB0ICYmIChhID0gby5pc0hvcml6b250YWwoKSA/IHQueCA6IHQueSksIHZvaWQgMCAhPT0gYSB8fCB2b2lkIDAgIT09IHQgJiYgaXNOYU4oZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG8uZ2V0TGFiZWxzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGEgfHwgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGwuaW5kZXhPZih0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gcyAhPT0gLTEgPyBzIDogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8uaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IG8ud2lkdGggLyByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdSAqIChlIC0gby5taW5JbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChvLm9wdGlvbnMuZ3JpZExpbmVzLm9mZnNldEdyaWRMaW5lcyAmJiBpIHx8IG8ubWF4SW5kZXggPT09IG8ubWluSW5kZXggJiYgaSkgJiYgKGQgKz0gdSAvIDIpLCBvLmxlZnQgKyBNYXRoLnJvdW5kKGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IG8uaGVpZ2h0IC8gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gYyAqIChlIC0gby5taW5JbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5vcHRpb25zLmdyaWRMaW5lcy5vZmZzZXRHcmlkTGluZXMgJiYgaSAmJiAoaCArPSBjIC8gMiksIG8udG9wICsgTWF0aC5yb3VuZChoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBnZXRQaXhlbEZvclRpY2s6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBpeGVsRm9yVmFsdWUodGhpcy50aWNrc1t0XSwgdCArIHRoaXMubWluSW5kZXgsIG51bGwsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRm9yUGl4ZWw6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gTWF0aC5tYXgobi50aWNrcy5sZW5ndGggLSAobi5vcHRpb25zLmdyaWRMaW5lcy5vZmZzZXRHcmlkTGluZXMgPyAwIDogMSksIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmlzSG9yaXpvbnRhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAoYSA/IG4ud2lkdGggOiBuLmhlaWdodCkgLyBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgLT0gYSA/IG4ubGVmdCA6IG4udG9wLCBuLm9wdGlvbnMuZ3JpZExpbmVzLm9mZnNldEdyaWRMaW5lcyAmJiAodCAtPSBvIC8gMiksIGUgPSB0IDw9IDAgPyAwIDogTWF0aC5yb3VuZCh0IC8gbykKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmFzZVBpeGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJvdHRvbQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB0LnNjYWxlU2VydmljZS5yZWdpc3RlclNjYWxlVHlwZSgiY2F0ZWdvcnkiLCBpLCBuKQogICAgICAgICAgICB9CiAgICAgICAgfSwge31dLAogICAgICAgIDQ1OiBbZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdC5oZWxwZXJzLAogICAgICAgICAgICAgICAgICAgIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAibGVmdCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogdC5UaWNrcy5mb3JtYXR0ZXJzLmxpbmVhcgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpID0gdC5MaW5lYXJTY2FsZUJhc2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lRGF0YUxpbWl0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA/IHQueEF4aXNJRCA9PT0gbi5pZCA6IHQueUF4aXNJRCA9PT0gbi5pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4uY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEuZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gby5kYXRhc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5pc0hvcml6b250YWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ubWluID0gbnVsbCwgbi5tYXggPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBpLnN0YWNrZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBkICYmIGUuZWFjaChyLCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBhLmdldERhdGFzZXRNZXRhKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5pc0RhdGFzZXRWaXNpYmxlKG4pICYmIHQoaSkgJiYgdm9pZCAwICE9PSBpLnN0YWNrICYmIChkID0gITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5zdGFja2VkIHx8IGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZWFjaChyLCBmdW5jdGlvbihvLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gYS5nZXREYXRhc2V0TWV0YShyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBbbC50eXBlLCB2b2lkIDAgPT09IGkuc3RhY2tlZCAmJiB2b2lkIDAgPT09IGwuc3RhY2sgPyByIDogIiIsIGwuc3RhY2tdLmpvaW4oIi4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBjW3NdICYmIChjW3NdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpdmVWYWx1ZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmVWYWx1ZXM6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGNbc10ucG9zaXRpdmVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tzXS5uZWdhdGl2ZVZhbHVlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5pc0RhdGFzZXRWaXNpYmxlKHIpICYmIHQobCkgJiYgZS5lYWNoKG8uZGF0YSwgZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSArbi5nZXRSaWdodFZhbHVlKHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYU4oYSkgfHwgbC5kYXRhW2VdLmhpZGRlbiB8fCAodVtlXSA9IHVbZV0gfHwgMCwgZFtlXSA9IGRbZV0gfHwgMCwgaS5yZWxhdGl2ZVBvaW50cyA/IHVbZV0gPSAxMDAgOiBhIDwgMCA/IGRbZV0gKz0gYSA6IHVbZV0gKz0gYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgZS5lYWNoKGMsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LnBvc2l0aXZlVmFsdWVzLmNvbmNhdCh0Lm5lZ2F0aXZlVmFsdWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLm1pbihpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLm1heChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5taW4gPSBudWxsID09PSBuLm1pbiA/IGEgOiBNYXRoLm1pbihuLm1pbiwgYSksIG4ubWF4ID0gbnVsbCA9PT0gbi5tYXggPyBvIDogTWF0aC5tYXgobi5tYXgsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBlLmVhY2gociwgZnVuY3Rpb24oaSwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYS5nZXREYXRhc2V0TWV0YShvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmlzRGF0YXNldFZpc2libGUobykgJiYgdChyKSAmJiBlLmVhY2goaS5kYXRhLCBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gK24uZ2V0UmlnaHRWYWx1ZSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYU4oaSkgfHwgci5kYXRhW2VdLmhpZGRlbiB8fCAobnVsbCA9PT0gbi5taW4gPyBuLm1pbiA9IGkgOiBpIDwgbi5taW4gJiYgKG4ubWluID0gaSksIG51bGwgPT09IG4ubWF4ID8gbi5tYXggPSBpIDogaSA+IG4ubWF4ICYmIChuLm1heCA9IGkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ubWluID0gaXNGaW5pdGUobi5taW4pID8gbi5taW4gOiBzLCBuLm1heCA9IGlzRmluaXRlKG4ubWF4KSA/IG4ubWF4IDogdSwgdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGlja0xpbWl0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5vcHRpb25zLnRpY2tzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuaXNIb3Jpem9udGFsKCkpIG4gPSBNYXRoLm1pbihhLm1heFRpY2tzTGltaXQgPyBhLm1heFRpY2tzTGltaXQgOiAxMSwgTWF0aC5jZWlsKGkud2lkdGggLyA1MCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLmdldFZhbHVlT3JEZWZhdWx0KGEuZm9udFNpemUsIHQuZGVmYXVsdHMuZ2xvYmFsLmRlZmF1bHRGb250U2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IE1hdGgubWluKGEubWF4VGlja3NMaW1pdCA/IGEubWF4VGlja3NMaW1pdCA6IDExLCBNYXRoLmNlaWwoaS5oZWlnaHQgLyAoMiAqIG8pKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURpcmVjdGlvbmFsQ2hhbmdlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG9yaXpvbnRhbCgpIHx8IHRoaXMudGlja3MucmV2ZXJzZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldExhYmVsRm9ySW5kZXg6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiArdGhpcy5nZXRSaWdodFZhbHVlKHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1tlXS5kYXRhW3RdKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBnZXRQaXhlbEZvclZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICtuLmdldFJpZ2h0VmFsdWUodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uZW5kIC0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmlzSG9yaXpvbnRhbCgpID8gKGUgPSBuLmxlZnQgKyBuLndpZHRoIC8gbyAqIChhIC0gaSksIE1hdGgucm91bmQoZSkpIDogKGUgPSBuLmJvdHRvbSAtIG4uaGVpZ2h0IC8gbyAqIChhIC0gaSksIE1hdGgucm91bmQoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRm9yUGl4ZWw6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5pc0hvcml6b250YWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiA/IGUud2lkdGggOiBlLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gKG4gPyB0IC0gZS5sZWZ0IDogZS5ib3R0b20gLSB0KSAvIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zdGFydCArIChlLmVuZCAtIGUuc3RhcnQpICogYQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBnZXRQaXhlbEZvclRpY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBpeGVsRm9yVmFsdWUodGhpcy50aWNrc0FzTnVtYmVyc1t0XSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdC5zY2FsZVNlcnZpY2UucmVnaXN0ZXJTY2FsZVR5cGUoImxpbmVhciIsIGksIG4pCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7fV0sCiAgICAgICAgNDY6IFtmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgbiA9IGUubm9vcDsKICAgICAgICAgICAgICAgIHQuTGluZWFyU2NhbGVCYXNlID0gdC5TY2FsZS5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIGhhbmRsZVRpY2tSYW5nZU9wdGlvbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4udGlja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmJlZ2luQXRaZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuc2lnbih0Lm1pbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuc2lnbih0Lm1heCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIDwgMCAmJiBvIDwgMCA/IHQubWF4ID0gMCA6IGEgPiAwICYmIG8gPiAwICYmICh0Lm1pbiA9IDApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBpLm1pbiA/IHQubWluID0gaS5taW4gOiB2b2lkIDAgIT09IGkuc3VnZ2VzdGVkTWluICYmIChudWxsID09PSB0Lm1pbiA/IHQubWluID0gaS5zdWdnZXN0ZWRNaW4gOiB0Lm1pbiA9IE1hdGgubWluKHQubWluLCBpLnN1Z2dlc3RlZE1pbikpLCB2b2lkIDAgIT09IGkubWF4ID8gdC5tYXggPSBpLm1heCA6IHZvaWQgMCAhPT0gaS5zdWdnZXN0ZWRNYXggJiYgKG51bGwgPT09IHQubWF4ID8gdC5tYXggPSBpLnN1Z2dlc3RlZE1heCA6IHQubWF4ID0gTWF0aC5tYXgodC5tYXgsIGkuc3VnZ2VzdGVkTWF4KSksIHQubWluID09PSB0Lm1heCAmJiAodC5tYXgrKywgaS5iZWdpbkF0WmVybyB8fCB0Lm1pbi0tKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0VGlja0xpbWl0OiBuLAogICAgICAgICAgICAgICAgICAgIGhhbmRsZURpcmVjdGlvbmFsQ2hhbmdlczogbiwKICAgICAgICAgICAgICAgICAgICBidWlsZFRpY2tzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLnRpY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uZ2V0VGlja0xpbWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBNYXRoLm1heCgyLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VGlja3M6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiBhLm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IGEubWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBTaXplOiBlLmdldFZhbHVlT3JEZWZhdWx0KGEuZml4ZWRTdGVwU2l6ZSwgYS5zdGVwU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi50aWNrcyA9IHQuVGlja3MuZ2VuZXJhdG9ycy5saW5lYXIociwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uaGFuZGxlRGlyZWN0aW9uYWxDaGFuZ2VzKCksIG4ubWF4ID0gZS5tYXgobCksIG4ubWluID0gZS5taW4obCksIGEucmV2ZXJzZSA/IChsLnJldmVyc2UoKSwgbi5zdGFydCA9IG4ubWF4LCBuLmVuZCA9IG4ubWluKSA6IChuLnN0YXJ0ID0gbi5taW4sIG4uZW5kID0gbi5tYXgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VGlja3NUb0xhYmVsczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgZS50aWNrc0FzTnVtYmVycyA9IGUudGlja3Muc2xpY2UoKSwgZS56ZXJvTGluZUluZGV4ID0gZS50aWNrcy5pbmRleE9mKDApLCB0LlNjYWxlLnByb3RvdHlwZS5jb252ZXJ0VGlja3NUb0xhYmVscy5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICA0NzogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHQuaGVscGVycywKICAgICAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICB0aWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IHQuVGlja3MuZm9ybWF0dGVycy5sb2dhcml0aG1pYwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpID0gdC5TY2FsZS5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmVEYXRhTGltaXRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1ID8gdC54QXhpc0lEID09PSBuLmlkIDogdC55QXhpc0lEID09PSBuLmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS50aWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gby5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByLmRhdGFzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmdldFZhbHVlT3JEZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBuLmlzSG9yaXpvbnRhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5taW4gPSBudWxsLCBuLm1heCA9IG51bGwsIG4ubWluTm90WmVybyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGkuc3RhY2tlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGQgJiYgZS5lYWNoKGwsIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG8uZ2V0RGF0YXNldE1ldGEobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmlzRGF0YXNldFZpc2libGUobikgJiYgdChpKSAmJiB2b2lkIDAgIT09IGkuc3RhY2sgJiYgKGQgPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLnN0YWNrZWQgfHwgZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5lYWNoKGwsIGZ1bmN0aW9uKGEsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBvLmdldERhdGFzZXRNZXRhKHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtsLnR5cGUsIHZvaWQgMCA9PT0gaS5zdGFja2VkICYmIHZvaWQgMCA9PT0gbC5zdGFjayA/IHIgOiAiIiwgbC5zdGFja10uam9pbigiLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmlzRGF0YXNldFZpc2libGUocikgJiYgdChsKSAmJiAodm9pZCAwID09PSBjW3NdICYmIChjW3NdID0gW10pLCBlLmVhY2goYS5kYXRhLCBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGNbc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICtuLmdldFJpZ2h0VmFsdWUodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hTihvKSB8fCBsLmRhdGFbZV0uaGlkZGVuIHx8IChhW2VdID0gYVtlXSB8fCAwLCBpLnJlbGF0aXZlUG9pbnRzID8gYVtlXSA9IDEwMCA6IGFbZV0gKz0gbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuZWFjaChjLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZS5taW4odCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5tYXgodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ubWluID0gbnVsbCA9PT0gbi5taW4gPyBpIDogTWF0aC5taW4obi5taW4sIGkpLCBuLm1heCA9IG51bGwgPT09IG4ubWF4ID8gYSA6IE1hdGgubWF4KG4ubWF4LCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZS5lYWNoKGwsIGZ1bmN0aW9uKGksIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG8uZ2V0RGF0YXNldE1ldGEoYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pc0RhdGFzZXRWaXNpYmxlKGEpICYmIHQocikgJiYgZS5lYWNoKGkuZGF0YSwgZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9ICtuLmdldFJpZ2h0VmFsdWUodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmFOKGkpIHx8IHIuZGF0YVtlXS5oaWRkZW4gfHwgKG51bGwgPT09IG4ubWluID8gbi5taW4gPSBpIDogaSA8IG4ubWluICYmIChuLm1pbiA9IGkpLCBudWxsID09PSBuLm1heCA/IG4ubWF4ID0gaSA6IGkgPiBuLm1heCAmJiAobi5tYXggPSBpKSwgMCAhPT0gaSAmJiAobnVsbCA9PT0gbi5taW5Ob3RaZXJvIHx8IGkgPCBuLm1pbk5vdFplcm8pICYmIChuLm1pbk5vdFplcm8gPSBpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLm1pbiA9IHMoYS5taW4sIG4ubWluKSwgbi5tYXggPSBzKGEubWF4LCBuLm1heCksIG4ubWluID09PSBuLm1heCAmJiAoMCAhPT0gbi5taW4gJiYgbnVsbCAhPT0gbi5taW4gPyAobi5taW4gPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihlLmxvZzEwKG4ubWluKSkgLSAxKSwgbi5tYXggPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihlLmxvZzEwKG4ubWF4KSkgKyAxKSkgOiAobi5taW4gPSAxLCBuLm1heCA9IDEwKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRUaWNrczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS50aWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IGEubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IGEubWF4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi50aWNrcyA9IHQuVGlja3MuZ2VuZXJhdG9ycy5sb2dhcml0aG1pYyhvLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNIb3Jpem9udGFsKCkgfHwgci5yZXZlcnNlKCksIG4ubWF4ID0gZS5tYXgociksIG4ubWluID0gZS5taW4ociksIGEucmV2ZXJzZSA/IChyLnJldmVyc2UoKSwgbi5zdGFydCA9IG4ubWF4LCBuLmVuZCA9IG4ubWluKSA6IChuLnN0YXJ0ID0gbi5taW4sIG4uZW5kID0gbi5tYXgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUaWNrc1RvTGFiZWxzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGlja1ZhbHVlcyA9IHRoaXMudGlja3Muc2xpY2UoKSwgdC5TY2FsZS5wcm90b3R5cGUuY29udmVydFRpY2tzVG9MYWJlbHMuY2FsbCh0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBnZXRMYWJlbEZvckluZGV4OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gK3RoaXMuZ2V0UmlnaHRWYWx1ZSh0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbZV0uZGF0YVt0XSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UGl4ZWxGb3JUaWNrOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQaXhlbEZvclZhbHVlKHRoaXMudGlja1ZhbHVlc1t0XSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UGl4ZWxGb3JWYWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGksIGEsIG8gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvLnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSArby5nZXRSaWdodFZhbHVlKHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMudGlja3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5pc0hvcml6b250YWwoKSA/IChhID0gZS5sb2cxMChvLmVuZCkgLSBlLmxvZzEwKHIpLCAwID09PSBsID8gaSA9IG8ubGVmdCA6IChuID0gby53aWR0aCwgaSA9IG8ubGVmdCArIG4gLyBhICogKGUubG9nMTAobCkgLSBlLmxvZzEwKHIpKSkpIDogKG4gPSBvLmhlaWdodCwgMCAhPT0gciB8fCB1LnJldmVyc2UgPyAwID09PSBvLmVuZCAmJiB1LnJldmVyc2UgPyAoYSA9IGUubG9nMTAoby5zdGFydCkgLSBlLmxvZzEwKG8ubWluTm90WmVybyksIGkgPSBsID09PSBvLmVuZCA/IG8udG9wIDogbCA9PT0gby5taW5Ob3RaZXJvID8gby50b3AgKyAuMDIgKiBuIDogby50b3AgKyAuMDIgKiBuICsgLjk4ICogbiAvIGEgKiAoZS5sb2cxMChsKSAtIGUubG9nMTAoby5taW5Ob3RaZXJvKSkpIDogMCA9PT0gbCA/IGkgPSB1LnJldmVyc2UgPyBvLnRvcCA6IG8uYm90dG9tIDogKGEgPSBlLmxvZzEwKG8uZW5kKSAtIGUubG9nMTAociksIG4gPSBvLmhlaWdodCwgaSA9IG8uYm90dG9tIC0gbiAvIGEgKiAoZS5sb2cxMChsKSAtIGUubG9nMTAocikpKSA6IChhID0gZS5sb2cxMChvLmVuZCkgLSBlLmxvZzEwKG8ubWluTm90WmVybyksIGkgPSBsID09PSByID8gby5ib3R0b20gOiBsID09PSBvLm1pbk5vdFplcm8gPyBvLmJvdHRvbSAtIC4wMiAqIG4gOiBvLmJvdHRvbSAtIC4wMiAqIG4gLSAuOTggKiBuIC8gYSAqIChlLmxvZzEwKGwpIC0gZS5sb2cxMChvLm1pbk5vdFplcm8pKSkpLCBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRm9yUGl4ZWw6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5sb2cxMChhLmVuZCkgLSBlLmxvZzEwKGEuc3RhcnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuaXNIb3Jpem9udGFsKCkgPyAoaSA9IGEud2lkdGgsIG4gPSBhLnN0YXJ0ICogTWF0aC5wb3coMTAsICh0IC0gYS5sZWZ0KSAqIG8gLyBpKSkgOiAoaSA9IGEuaGVpZ2h0LCBuID0gTWF0aC5wb3coMTAsIChhLmJvdHRvbSAtIHQpICogbyAvIGkpIC8gYS5zdGFydCksIG4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdC5zY2FsZVNlcnZpY2UucmVnaXN0ZXJTY2FsZVR5cGUoImxvZ2FyaXRobWljIiwgaSwgbikKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICA0ODogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQub3B0aW9uczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hbmdsZUxpbmVzLmRpc3BsYXkgfHwgZS5wb2ludExhYmVscy5kaXNwbGF5ID8gdC5jaGFydC5kYXRhLmxhYmVscy5sZW5ndGggOiAwCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0Lm9wdGlvbnMucG9pbnRMYWJlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmLmdldFZhbHVlT3JEZWZhdWx0KGUuZm9udFNpemUsIGcuZGVmYXVsdEZvbnRTaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYuZ2V0VmFsdWVPckRlZmF1bHQoZS5mb250U3R5bGUsIGcuZGVmYXVsdEZvbnRTdHlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmLmdldFZhbHVlT3JEZWZhdWx0KGUuZm9udEZhbWlseSwgZy5kZWZhdWx0Rm9udEZhbWlseSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmLmZvbnRTdHJpbmcobiwgaSwgYSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogbwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5pc0FycmF5KG4pID8gewogICAgICAgICAgICAgICAgICAgICAgICB3OiBmLmxvbmdlc3RUZXh0KHQsIHQuZm9udCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgIGg6IG4ubGVuZ3RoICogZSArIDEuNSAqIChuLmxlbmd0aCAtIDEpICogZQogICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHc6IHQubWVhc3VyZVRleHQobikud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGg6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYSh0LCBlLCBuLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPT09IGkgfHwgdCA9PT0gYSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGUgLSBuIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBlICsgbiAvIDIKICAgICAgICAgICAgICAgICAgICB9IDogdCA8IGkgfHwgdCA+IGEgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBlIC0gbiAtIDUsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogZQogICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGUgKyBuICsgNQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbywgciwgbCwgcyA9IG4odCksCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBNYXRoLm1pbih0LmhlaWdodCAvIDIsIHQud2lkdGggLyAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6IHQud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogdC5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB7fTsKICAgICAgICAgICAgICAgICAgICB0LmN0eC5mb250ID0gcy5mb250LCB0Ll9wb2ludExhYmVsU2l6ZXMgPSBbXTsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGUodCk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gMDsgbyA8IGg7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5nZXRQb2ludFBvc2l0aW9uKG8sIHUpLCByID0gaSh0LmN0eCwgcy5zaXplLCB0LnBvaW50TGFiZWxzW29dIHx8ICIiKSwgdC5fcG9pbnRMYWJlbFNpemVzW29dID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSB0LmdldEluZGV4QW5nbGUobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZi50b0RlZ3JlZXMoZykgJSAzNjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gYShwLCBsLngsIHIudywgMCwgMTgwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBhKHAsIGwueSwgci5oLCA5MCwgMjcwKTsKICAgICAgICAgICAgICAgICAgICAgICAgbS5zdGFydCA8IGQubCAmJiAoZC5sID0gbS5zdGFydCwgYy5sID0gZyksIG0uZW5kID4gZC5yICYmIChkLnIgPSBtLmVuZCwgYy5yID0gZyksIHYuc3RhcnQgPCBkLnQgJiYgKGQudCA9IHYuc3RhcnQsIGMudCA9IGcpLCB2LmVuZCA+IGQuYiAmJiAoZC5iID0gdi5lbmQsIGMuYiA9IGcpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuc2V0UmVkdWN0aW9ucyh1LCBkLCBjKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gTWF0aC5taW4odC5oZWlnaHQgLyAyLCB0LndpZHRoIC8gMik7CiAgICAgICAgICAgICAgICAgICAgdC5kcmF3aW5nQXJlYSA9IE1hdGgucm91bmQoZSksIHQuc2V0Q2VudGVyUG9pbnQoMCwgMCwgMCwgMCkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdCB8fCAxODAgPT09IHQgPyAiY2VudGVyIiA6IHQgPCAxODAgPyAibGVmdCIgOiAicmlnaHQiCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gcyh0LCBlLCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYuaXNBcnJheShlKSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IG4ueSwgbyA9IDEuNSAqIGksIHIgPSAwOyByIDwgZS5sZW5ndGg7ICsrcikgdC5maWxsVGV4dChlW3JdLCBuLngsIGEpLCBhICs9IG87CiAgICAgICAgICAgICAgICAgICAgZWxzZSB0LmZpbGxUZXh0KGUsIG4ueCwgbi55KQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUodCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIDkwID09PSB0IHx8IDI3MCA9PT0gdCA/IG4ueSAtPSBlLmggLyAyIDogKHQgPiAyNzAgfHwgdCA8IDkwKSAmJiAobi55IC09IGUuaCkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gZi5nZXRWYWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8uYW5nbGVMaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG8ucG9pbnRMYWJlbHM7CiAgICAgICAgICAgICAgICAgICAgaS5saW5lV2lkdGggPSByLmxpbmVXaWR0aCwgaS5zdHJva2VTdHlsZSA9IHIuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0LmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKG8ucmV2ZXJzZSA/IHQubWluIDogdC5tYXgpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gbih0KTsKICAgICAgICAgICAgICAgICAgICBpLnRleHRCYXNlbGluZSA9ICJ0b3AiOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgPSBlKHQpIC0gMTsgcCA+PSAwOyBwLS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuZGlzcGxheSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSB0LmdldFBvaW50UG9zaXRpb24ocCwgYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmJlZ2luUGF0aCgpLCBpLm1vdmVUbyh0LnhDZW50ZXIsIHQueUNlbnRlciksIGkubGluZVRvKG0ueCwgbS55KSwgaS5zdHJva2UoKSwgaS5jbG9zZVBhdGgoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLmRpc3BsYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gdC5nZXRQb2ludFBvc2l0aW9uKHAsIGMgKyA1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYShkLmZvbnRDb2xvciwgZy5kZWZhdWx0Rm9udENvbG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZm9udCA9IGguZm9udCwgaS5maWxsU3R5bGUgPSBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSB0LmdldEluZGV4QW5nbGUocCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGYudG9EZWdyZWVzKHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS50ZXh0QWxpZ24gPSBsKHkpLCB1KHksIHQuX3BvaW50TGFiZWxTaXplc1twXSwgdiksIHMoaSwgdC5wb2ludExhYmVsc1twXSB8fCAiIiwgdiwgaC5zaXplKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGModCwgbiwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gdC5jdHg7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8uc3Ryb2tlU3R5bGUgPSBmLmdldFZhbHVlQXRJbmRleE9yRGVmYXVsdChuLmNvbG9yLCBhIC0gMSksIG8ubGluZVdpZHRoID0gZi5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQobi5saW5lV2lkdGgsIGEgLSAxKSwgdC5vcHRpb25zLmdyaWRMaW5lcy5jaXJjdWxhcikgby5iZWdpblBhdGgoKSwgby5hcmModC54Q2VudGVyLCB0LnlDZW50ZXIsIGksIDAsIDIgKiBNYXRoLlBJKSwgby5jbG9zZVBhdGgoKSwgby5zdHJva2UoKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlKHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gcikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBvLmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHQuZ2V0UG9pbnRQb3NpdGlvbigwLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgby5tb3ZlVG8obC54LCBsLnkpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMTsgcyA8IHI7IHMrKykgbCA9IHQuZ2V0UG9pbnRQb3NpdGlvbihzLCBpKSwgby5saW5lVG8obC54LCBsLnkpOwogICAgICAgICAgICAgICAgICAgICAgICBvLmNsb3NlUGF0aCgpLCBvLnN0cm9rZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGgodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmLmlzTnVtYmVyKHQpID8gdCA6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBmID0gdC5oZWxwZXJzLAogICAgICAgICAgICAgICAgICAgIGcgPSB0LmRlZmF1bHRzLmdsb2JhbCwKICAgICAgICAgICAgICAgICAgICBwID0gewogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiY2hhcnRBcmVhIiwKICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVMaW5lczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogInJnYmEoMCwgMCwgMCwgMC4xKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZExpbmVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXJjdWxhcjogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbEJhY2tkcm9wOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wQ29sb3I6ICJyZ2JhKDI1NSwyNTUsMjU1LDAuNzUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wUGFkZGluZ1k6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcFBhZGRpbmdYOiAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IHQuVGlja3MuZm9ybWF0dGVycy5saW5lYXIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtID0gdC5MaW5lYXJTY2FsZUJhc2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGltZW5zaW9uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS50aWNrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQud2lkdGggPSB0Lm1heFdpZHRoLCB0LmhlaWdodCA9IHQubWF4SGVpZ2h0LCB0LnhDZW50ZXIgPSBNYXRoLnJvdW5kKHQud2lkdGggLyAyKSwgdC55Q2VudGVyID0gTWF0aC5yb3VuZCh0LmhlaWdodCAvIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBmLm1pbihbdC5oZWlnaHQsIHQud2lkdGhdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZi5nZXRWYWx1ZU9yRGVmYXVsdChuLmZvbnRTaXplLCBnLmRlZmF1bHRGb250U2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmRyYXdpbmdBcmVhID0gZS5kaXNwbGF5ID8gaSAvIDIgLSAoYSAvIDIgKyBuLmJhY2tkcm9wUGFkZGluZ1kpIDogaSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lRGF0YUxpbWl0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5lYWNoKGUuZGF0YS5kYXRhc2V0cywgZnVuY3Rpb24oYSwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmlzRGF0YXNldFZpc2libGUobykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmdldERhdGFzZXRNZXRhKG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmVhY2goYS5kYXRhLCBmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9ICt0LmdldFJpZ2h0VmFsdWUoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hTihvKSB8fCByLmRhdGFbYV0uaGlkZGVuIHx8IChuID0gTWF0aC5taW4obywgbiksIGkgPSBNYXRoLm1heChvLCBpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5taW4gPSBuID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgPyAwIDogbiwgdC5tYXggPSBpID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPyAwIDogaSwgdC5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGlja0xpbWl0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5vcHRpb25zLnRpY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBmLmdldFZhbHVlT3JEZWZhdWx0KHQuZm9udFNpemUsIGcuZGVmYXVsdEZvbnRTaXplKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbih0Lm1heFRpY2tzTGltaXQgPyB0Lm1heFRpY2tzTGltaXQgOiAxMSwgTWF0aC5jZWlsKHRoaXMuZHJhd2luZ0FyZWEgLyAoMS41ICogZSkpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VGlja3NUb0xhYmVsczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LkxpbmVhclNjYWxlQmFzZS5wcm90b3R5cGUuY29udmVydFRpY2tzVG9MYWJlbHMuY2FsbChlKSwgZS5wb2ludExhYmVscyA9IGUuY2hhcnQuZGF0YS5sYWJlbHMubWFwKGUub3B0aW9ucy5wb2ludExhYmVscy5jYWxsYmFjaywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGFiZWxGb3JJbmRleDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICt0aGlzLmdldFJpZ2h0VmFsdWUodGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW2VdLmRhdGFbdF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZpdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9pbnRMYWJlbHMuZGlzcGxheSA/IG8odGhpcykgOiByKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlZHVjdGlvbnM6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5sIC8gTWF0aC5zaW4obi5sKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gTWF0aC5tYXgoZS5yIC0gaS53aWR0aCwgMCkgLyBNYXRoLnNpbihuLnIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAtZS50IC8gTWF0aC5jb3Mobi50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gLU1hdGgubWF4KGUuYiAtIGkuaGVpZ2h0LCAwKSAvIE1hdGguY29zKG4uYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaChhKSwgbyA9IGgobyksIHIgPSBoKHIpLCBsID0gaChsKSwgaS5kcmF3aW5nQXJlYSA9IE1hdGgubWluKE1hdGgucm91bmQodCAtIChhICsgbykgLyAyKSwgTWF0aC5yb3VuZCh0IC0gKHIgKyBsKSAvIDIpKSwgaS5zZXRDZW50ZXJQb2ludChhLCBvLCByLCBsKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzZXRDZW50ZXJQb2ludDogZnVuY3Rpb24odCwgZSwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLndpZHRoIC0gZSAtIGEuZHJhd2luZ0FyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQgKyBhLmRyYXdpbmdBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuICsgYS5kcmF3aW5nQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYS5oZWlnaHQgLSBpIC0gYS5kcmF3aW5nQXJlYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEueENlbnRlciA9IE1hdGgucm91bmQoKHIgKyBvKSAvIDIgKyBhLmxlZnQpLCBhLnlDZW50ZXIgPSBNYXRoLnJvdW5kKChsICsgcykgLyAyICsgYS50b3ApCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldEluZGV4QW5nbGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gMiAqIE1hdGguUEkgLyBlKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmNoYXJ0Lm9wdGlvbnMgJiYgdGhpcy5jaGFydC5vcHRpb25zLnN0YXJ0QW5nbGUgPyB0aGlzLmNoYXJ0Lm9wdGlvbnMuc3RhcnRBbmdsZSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkgKiBNYXRoLlBJICogMiAvIDM2MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICogbiArIGEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0KSByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5kcmF3aW5nQXJlYSAvIChlLm1heCAtIGUubWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm9wdGlvbnMucmV2ZXJzZSA/IChlLm1heCAtIHQpICogbiA6ICh0IC0gZS5taW4pICogbgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBnZXRQb2ludFBvc2l0aW9uOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uZ2V0SW5kZXhBbmdsZSh0KSAtIE1hdGguUEkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBNYXRoLnJvdW5kKE1hdGguY29zKGkpICogZSkgKyBuLnhDZW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogTWF0aC5yb3VuZChNYXRoLnNpbihpKSAqIGUpICsgbi55Q2VudGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UG9pbnRQb3NpdGlvbih0LCB0aGlzLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKGUpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBnZXRCYXNlUG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0Lm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5tYXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoMCwgdC5iZWdpbkF0WmVybyA/IDAgOiBlIDwgMCAmJiBuIDwgMCA/IG4gOiBlID4gMCAmJiBuID4gMCA/IGUgOiAwKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkcmF3OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmdyaWRMaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS50aWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZi5nZXRWYWx1ZU9yRGVmYXVsdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRpc3BsYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYShpLmZvbnRTaXplLCBnLmRlZmF1bHRGb250U2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhKGkuZm9udFN0eWxlLCBnLmRlZmF1bHRGb250U3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYShpLmZvbnRGYW1pbHksIGcuZGVmYXVsdEZvbnRGYW1pbHkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZi5mb250U3RyaW5nKHIsIGwsIHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYuZWFjaCh0LnRpY2tzLCBmdW5jdGlvbihsLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4gMCB8fCBlLnJldmVyc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdC5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZSh0LnRpY2tzQXNOdW1iZXJzW3NdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gdC55Q2VudGVyIC0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmRpc3BsYXkgJiYgMCAhPT0gcyAmJiBjKHQsIG4sIGQsIHMpLCBpLmRpc3BsYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGEoaS5mb250Q29sb3IsIGcuZGVmYXVsdEZvbnRDb2xvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8uZm9udCA9IHUsIGkuc2hvd0xhYmVsQmFja2Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBvLm1lYXN1cmVUZXh0KGwpLndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmZpbGxTdHlsZSA9IGkuYmFja2Ryb3BDb2xvciwgby5maWxsUmVjdCh0LnhDZW50ZXIgLSBwIC8gMiAtIGkuYmFja2Ryb3BQYWRkaW5nWCwgaCAtIHIgLyAyIC0gaS5iYWNrZHJvcFBhZGRpbmdZLCBwICsgMiAqIGkuYmFja2Ryb3BQYWRkaW5nWCwgciArIDIgKiBpLmJhY2tkcm9wUGFkZGluZ1kpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8udGV4dEFsaWduID0gImNlbnRlciIsIG8udGV4dEJhc2VsaW5lID0gIm1pZGRsZSIsIG8uZmlsbFN0eWxlID0gZiwgby5maWxsVGV4dChsLCB0LnhDZW50ZXIsIGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgKGUuYW5nbGVMaW5lcy5kaXNwbGF5IHx8IGUucG9pbnRMYWJlbHMuZGlzcGxheSkgJiYgZCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB0LnNjYWxlU2VydmljZS5yZWdpc3RlclNjYWxlVHlwZSgicmFkaWFsTGluZWFyIiwgbSwgcCkKICAgICAgICAgICAgfQogICAgICAgIH0sIHt9XSwKICAgICAgICA0OTogW2Z1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IHQoMSk7CiAgICAgICAgICAgIGkgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBpID8gaSA6IHdpbmRvdy5tb21lbnQsIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5vcHRpb25zLnRpbWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBuLnBhcnNlcikgcmV0dXJuIGkoZSwgbi5wYXJzZXIpOwogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBuLnBhcnNlcikgcmV0dXJuIG4ucGFyc2VyKGUpOwogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBlLmdldE1vbnRoIHx8ICJudW1iZXIiID09IHR5cGVvZiBlKSByZXR1cm4gaShlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5pc1ZhbGlkICYmIGUuaXNWYWxpZCgpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG4uZm9ybWF0OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgYSAmJiBhLmNhbGwgPyAoY29uc29sZS53YXJuKCJvcHRpb25zLnRpbWUuZm9ybWF0IGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IG9wdGlvbnMudGltZS5wYXJzZXIuIiksIGEoZSkpIDogaShlLCBhKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4odCwgZSwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIG8gPSBPYmplY3Qua2V5cyhsKSwgciA9IG8ubGVuZ3RoLCBzID0gby5pbmRleE9mKHQpOyBzIDwgcjsgcysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvW3NdOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGxbYV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdS5zdGVwcyAmJiB1LnN0ZXBzW3Uuc3RlcHMubGVuZ3RoIC0gMV0gfHwgdS5tYXhTdGVwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBkIHx8IE1hdGguY2VpbCgobiAtIGUpIC8gKGQgKiB1LnNpemUpKSA8PSBpKSBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEodCwgZSwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gbFtuXSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IE1hdGguY2VpbCgoZSAtIHQpIC8gbyksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gZSAtIHQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuc3RlcHMpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSBhLnN0ZXBzLmxlbmd0aCwgYyA9IDA7IGMgPCBkICYmIHIgPiBpOyBjKyspIHMgPSBhLnN0ZXBzW2NdLCByID0gTWF0aC5jZWlsKHUgLyAobyAqIHMpKTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyByID4gaSAmJiBpID4gMDspICsrcywgciA9IE1hdGguY2VpbCh1IC8gKG8gKiBzKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGlmICh0Lm1heFRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdC5zdGVwU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5wdXNoKHZvaWQgMCAhPT0gdC5taW4gPyB0Lm1pbiA6IG4ubWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGkobi5taW4pOyByLmFkZChvLCB0LnVuaXQpLnZhbHVlT2YoKSA8IG4ubWF4OykgYS5wdXNoKHIudmFsdWVPZigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB0Lm1heCB8fCBuLm1heDsKICAgICAgICAgICAgICAgICAgICAgICAgYVthLmxlbmd0aCAtIDFdICE9PSBsICYmIGEucHVzaChsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHIgPSB0LmhlbHBlcnMsCiAgICAgICAgICAgICAgICAgICAgbCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgbWlsbGlzZWNvbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwczogWzEsIDIsIDUsIDEwLCAyMCwgNTAsIDEwMCwgMjUwLCA1MDBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogMWUzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHM6IFsxLCAyLCA1LCAxMCwgMzBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogNmU0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHM6IFsxLCAyLCA1LCAxMCwgMzBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDM2ZTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwczogWzEsIDIsIDMsIDYsIDEyXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDg2NGU1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHM6IFsxLCAyLCA1XQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB3ZWVrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiA2MDQ4ZTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTdGVwOiA0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAyNjI4ZTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTdGVwOiAzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHF1YXJ0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDc4ODRlNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFN0ZXA6IDQKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogMzE1NGU3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U3RlcDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXI6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc29XZWVrZGF5OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblVuaXQ6ICJtaWxsaXNlY29uZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kOiAiaDptbTpzcy5TU1MgYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiAiaDptbTpzcyBhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGU6ICJoOm1tOnNzIGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXI6ICJNTU0gRCwgaEEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheTogImxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrOiAibGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiAiTU1NIFlZWVkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YXJ0ZXI6ICJbUV1RIC0gWVlZWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogIllZWVkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvU2tpcDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0LlRpY2tzLmdlbmVyYXRvcnMudGltZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiwgYSwgciA9IHQuaXNvV2Vla2RheTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIndlZWsiID09PSB0LnVuaXQgJiYgciAhPT0gITEgPyAobiA9IGkoZS5taW4pLnN0YXJ0T2YoImlzb1dlZWsiKS5pc29XZWVrZGF5KHIpLnZhbHVlT2YoKSwgYSA9IGkoZS5tYXgpLnN0YXJ0T2YoImlzb1dlZWsiKS5pc29XZWVrZGF5KHIpLCBlLm1heCAtIGEgPiAwICYmIGEuYWRkKDEsICJ3ZWVrIiksIGEgPSBhLnZhbHVlT2YoKSkgOiAobiA9IGkoZS5taW4pLnN0YXJ0T2YodC51bml0KS52YWx1ZU9mKCksIGEgPSBpKGUubWF4KS5zdGFydE9mKHQudW5pdCksIGUubWF4IC0gYSA+IDAgJiYgYS5hZGQoMSwgdC51bml0KSwgYSA9IGEudmFsdWVPZigpKSwgbyh0LCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogbiwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiBhCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB2YXIgdSA9IHQuU2NhbGUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSB0aHJvdyBuZXcgRXJyb3IoIkNoYXJ0LmpzIC0gTW9tZW50LmpzIGNvdWxkIG5vdCBiZSBmb3VuZCEgWW91IG11c3QgaW5jbHVkZSBpdCBiZWZvcmUgQ2hhcnQuanMgdG8gdXNlIHRoZSB0aW1lIHNjYWxlLiBEb3dubG9hZCBhdCBodHRwczovL21vbWVudGpzLmNvbSIpOwogICAgICAgICAgICAgICAgICAgICAgICB0LlNjYWxlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRldGVybWluZURhdGFMaW1pdHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5vcHRpb25zLnRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5jaGFydC5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRzOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgci5lYWNoKGwubGFiZWxzLCBmdW5jdGlvbihyLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGUobiwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LmlzVmFsaWQoKSAmJiAoaS5yb3VuZCAmJiB1LnN0YXJ0T2YoaS5yb3VuZCksIHQgPSB1LnZhbHVlT2YoKSwgYSA9IE1hdGgubWluKHQsIGEpLCBvID0gTWF0aC5tYXgodCwgbyksIHMubGFiZWxzW2xdID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHIuZWFjaChsLmRhdGFzZXRzLCBmdW5jdGlvbihsLCB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIGwuZGF0YVswXSAmJiBudWxsICE9PSBsLmRhdGFbMF0gJiYgbi5jaGFydC5pc0RhdGFzZXRWaXNpYmxlKHUpID8gci5lYWNoKGwuZGF0YSwgZnVuY3Rpb24ociwgbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZShuLCBuLmdldFJpZ2h0VmFsdWUocikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuaXNWYWxpZCgpICYmIChpLnJvdW5kICYmIHMuc3RhcnRPZihpLnJvdW5kKSwgdCA9IHMudmFsdWVPZigpLCBhID0gTWF0aC5taW4odCwgYSksIG8gPSBNYXRoLm1heCh0LCBvKSwgZFtsXSA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGQgPSBzLmxhYmVscy5zbGljZSgpLCBzLmRhdGFzZXRzW3VdID0gZAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbi5kYXRhTWluID0gYSwgbi5kYXRhTWF4ID0gbywgbi5fcGFyc2VkRGF0YSA9IHMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJ1aWxkVGlja3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgbywgbCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbC5vcHRpb25zLnRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC5kYXRhTWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGwuZGF0YU1heDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMubWluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGUobCwgcy5taW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5yb3VuZCAmJiBjLnJvdW5kKHMucm91bmQpLCBpID0gYy52YWx1ZU9mKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBzLm1heCAmJiAobyA9IGUobCwgcy5tYXgpLnZhbHVlT2YoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gbC5nZXRMYWJlbENhcGFjaXR5KGkgfHwgdSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gcy51bml0IHx8IG4ocy5taW5Vbml0LCBpIHx8IHUsIG8gfHwgZCwgaCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGwuZGlzcGxheUZvcm1hdCA9IHMuZGlzcGxheUZvcm1hdHNbZl07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gcy5zdGVwU2l6ZSB8fCBhKGkgfHwgdSwgbyB8fCBkLCBmLCBoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC50aWNrcyA9IHQuVGlja3MuZ2VuZXJhdG9ycy50aW1lKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFRpY2tzOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFNpemU6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0OiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNvV2Vla2RheTogcy5pc29XZWVrZGF5CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogZAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbC5tYXggPSByLm1heChsLnRpY2tzKSwgbC5taW4gPSByLm1pbihsLnRpY2tzKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0TGFiZWxGb3JJbmRleDogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5jaGFydC5kYXRhLmxhYmVscyAmJiB0IDwgaS5jaGFydC5kYXRhLmxhYmVscy5sZW5ndGggPyBpLmNoYXJ0LmRhdGEubGFiZWxzW3RdIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5jaGFydC5kYXRhLmRhdGFzZXRzW25dLmRhdGFbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSBvICYmICJvYmplY3QiID09IHR5cGVvZiBvICYmIChhID0gaS5nZXRSaWdodFZhbHVlKG8pKSwgaS5vcHRpb25zLnRpbWUudG9vbHRpcEZvcm1hdCAmJiAoYSA9IGUoaSwgYSkuZm9ybWF0KGkub3B0aW9ucy50aW1lLnRvb2x0aXBGb3JtYXQpKSwgYQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGlja0Zvcm1hdEZ1bmN0aW9uOiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5mb3JtYXQodGhpcy5kaXNwbGF5Rm9ybWF0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLm9wdGlvbnMudGlja3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gci5nZXRWYWx1ZU9yRGVmYXVsdChhLmNhbGxiYWNrLCBhLnVzZXJDYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvID8gbyhpLCBlLCBuKSA6IGkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUaWNrc1RvTGFiZWxzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB0LnRpY2tzQXNUaW1lc3RhbXBzID0gdC50aWNrcywgdC50aWNrcyA9IHQudGlja3MubWFwKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLm1hcCh0LnRpY2tGb3JtYXRGdW5jdGlvbiwgdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFBpeGVsRm9yT2Zmc2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLm1heCAtIGUubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4gPyAodCAtIGUubWluKSAvIG4gOiAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5pc0hvcml6b250YWwoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlLndpZHRoICogaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmxlZnQgKyBNYXRoLnJvdW5kKGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLmhlaWdodCAqIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnRvcCArIE1hdGgucm91bmQobykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFBpeGVsRm9yVmFsdWU6IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IG4gJiYgdm9pZCAwICE9PSBpICYmIChvID0gYS5fcGFyc2VkRGF0YS5kYXRhc2V0c1tpXVtuXSksIG51bGwgPT09IG8gJiYgKHQgJiYgdC5pc1ZhbGlkIHx8ICh0ID0gZShhLCBhLmdldFJpZ2h0VmFsdWUodCkpKSwgdCAmJiB0LmlzVmFsaWQgJiYgdC5pc1ZhbGlkKCkgJiYgKG8gPSB0LnZhbHVlT2YoKSkpLCBudWxsICE9PSBvKSByZXR1cm4gYS5nZXRQaXhlbEZvck9mZnNldChvKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0UGl4ZWxGb3JUaWNrOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBpeGVsRm9yT2Zmc2V0KHRoaXMudGlja3NBc1RpbWVzdGFtcHNbdF0pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZvclBpeGVsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmlzSG9yaXpvbnRhbCgpID8gZS53aWR0aCA6IGUuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICh0IC0gKGUuaXNIb3Jpem9udGFsKCkgPyBlLmxlZnQgOiBlLnRvcCkpIC8gbjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoZS5taW4gKyBhICogKGUubWF4IC0gZS5taW4pKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0TGFiZWxXaWR0aDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5vcHRpb25zLnRpY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4uY3R4Lm1lYXN1cmVUZXh0KGUpLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE1hdGguY29zKHIudG9SYWRpYW5zKGkubWF4Um90YXRpb24pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBNYXRoLnNpbihyLnRvUmFkaWFucyhpLm1heFJvdGF0aW9uKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gci5nZXRWYWx1ZU9yRGVmYXVsdChpLmZvbnRTaXplLCB0LmRlZmF1bHRzLmdsb2JhbC5kZWZhdWx0Rm9udFNpemUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSAqIG8gKyBzICogbAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0TGFiZWxDYXBhY2l0eTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZGlzcGxheUZvcm1hdCA9IGUub3B0aW9ucy50aW1lLmRpc3BsYXlGb3JtYXRzLm1pbGxpc2Vjb25kOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUudGlja0Zvcm1hdEZ1bmN0aW9uKGkodCksIDAsIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmdldExhYmVsV2lkdGgobiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5pc0hvcml6b250YWwoKSA/IGUud2lkdGggOiBlLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvIC8gYTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHQuc2NhbGVTZXJ2aWNlLnJlZ2lzdGVyU2NhbGVUeXBlKCJ0aW1lIiwgdSwgcykKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgMTogMQogICAgICAgIH1dCiAgICB9LCB7fSwgWzddKSg3KQp9KTs="}},"time_used":957,"timings":{"blocked":760,"dns":0,"connect":0,"send":0,"wait":97,"receive":100,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/dist/vendor/wp-polyfill.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.434Z","timestamp":1785145482434,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/dist/vendor/wp-polyfill.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Mon, 15 Nov 2021 12:50:17 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":19261,"size_decoded":7731,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (19110)","md5":"60c88069166716db064d51e9d7eb9bc8","sha1":"28e5067d2a3b688bb5828500fffc8783f3884443","sha256":"bab8bc75e2e121a7b9d273f9f38c33881e07e29070704adeb351d8936d14a16f","sha512":"849d4a90765f79128e9f5f756b7994c23de4a38b4b177c7c7e7b588846667ed9e96768242a510d7b2df718fea346335b19cb4063c85410f87e528d725393b3ac","ssdeep":"384:jH/K6JXF19SF31ymHemyuaYIkP215c1oQWpHP+bmv5zS:jiK1IxAYIkPZzbaS","tlshash":"13825f8dfd89b0610373a17a922f840bf3bb1996745f99d0926ec5e06c7888f413be1d","first_seen":"2023-04-05T15:05:59Z","last_seen":"2026-07-27T13:52:26.906766Z","times_seen":36956,"resource_available":true,"data":"LyoqCiAqIGNvcmUtanMgMy4xOS4xCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzCiAqIExpY2Vuc2U6IGh0dHA6Ly9yb2NrLm1pdC1saWNlbnNlLm9yZwogKiDCqSAyMDIxIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpCiAqLwohZnVuY3Rpb24oQyl7InVzZSBzdHJpY3QiO3ZhciByLGUsbztlPXt9LChvPWZ1bmN0aW9uKHQpe2lmKGVbdF0pcmV0dXJuIGVbdF0uZXhwb3J0czt2YXIgbj1lW3RdPXtpOnQsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gclt0XS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxvKSxuLmw9ITAsbi5leHBvcnRzfSkubT1yPVtmdW5jdGlvbih0LG4scil7cigxKSxyKDY3KSxyKDY4KSxyKDcyKSxyKDc5KSx0LmV4cG9ydHM9cig4NSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLG89cigzNiksaT1yKDU3KSx1PXIoNTYpLHI9cig2Mik7ZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHthdDpmdW5jdGlvbih0KXt2YXIgbj1vKHRoaXMpLHI9aShuKSx0PXUodCksdD0wPD10P3Q6cit0O3JldHVybiB0PDB8fHI8PXQ/QzpuW3RdfX0pLHIoImF0Iil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgYT1yKDMpLHA9cig0KS5mLHM9cig0MCksbD1yKDQzKSx5PXIoMzQpLHY9cig1MCksZD1yKDYxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgcixlLG8saT10LnRhcmdldCx1PXQuZ2xvYmFsLGM9dC5zdGF0LGY9dT9hOmM/YVtpXXx8eShpLHt9KTooYVtpXXx8e30pLnByb3RvdHlwZTtpZihmKWZvcihyIGluIG4pe2lmKGU9bltyXSxvPXQubm9UYXJnZXRHZXQ/KG89cChmLHIpKSYmby52YWx1ZTpmW3JdLCFkKHU/cjppKyhjPyIuIjoiIyIpK3IsdC5mb3JjZWQpJiZvIT09Qyl7aWYodHlwZW9mIGU9PXR5cGVvZiBvKWNvbnRpbnVlO3YoZSxvKX0odC5zaGFtfHxvJiZvLnNoYW0pJiZzKGUsInNoYW0iLCEwKSxsKGYscixlLHQpfX19LGZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdCYmdC5NYXRoPT1NYXQmJnR9dC5leHBvcnRzPXIoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXx8cigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93KXx8cigib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxyKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1KSxvPXIoNyksaT1yKDgpLHU9cig5KSxjPXIoMTApLGY9cigxNSksYT1yKDM1KSxwPXIoMzgpLHM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtuLmY9ZT9zOmZ1bmN0aW9uKHQsbil7aWYodD1jKHQpLG49ZihuKSxwKXRyeXtyZXR1cm4gcyh0LG4pfWNhdGNoKHQpe31pZihhKHQsbikpcmV0dXJuIHUoIW8oaS5mLHQsbiksdFtuXSl9fSxmdW5jdGlvbih0LG4scil7cj1yKDYpO3QuZXhwb3J0cz0hcihmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7dC5leHBvcnRzPXIuYmluZD9yLmJpbmQocik6ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseShyLGFyZ3VtZW50cyl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9e30ucHJvcGVydHlJc0VudW1lcmFibGUsbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGk9byYmIWUuY2FsbCh7MToyfSwxKTtuLmY9aT9mdW5jdGlvbih0KXt0PW8odGhpcyx0KTtyZXR1cm4hIXQmJnQuZW51bWVyYWJsZX06ZX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6bn19fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxMSksbz1yKDE0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGUobyh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzKSxvPXIoMTIpLGk9cig2KSx1PXIoMTMpLGM9ZS5PYmplY3QsZj1vKCIiLnNwbGl0KTt0LmV4cG9ydHM9aShmdW5jdGlvbigpe3JldHVybiFjKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KT9mdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09dSh0KT9mKHQsIiIpOmModCl9OmN9LGZ1bmN0aW9uKHQsbil7dmFyIHI9RnVuY3Rpb24ucHJvdG90eXBlLGU9ci5iaW5kLG89ci5jYWxsLGk9ZSYmZS5iaW5kKG8pO3QuZXhwb3J0cz1lP2Z1bmN0aW9uKHQpe3JldHVybiB0JiZpKG8sdCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZmdW5jdGlvbigpe3JldHVybiBvLmFwcGx5KHQsYXJndW1lbnRzKX19fSxmdW5jdGlvbih0LG4scil7dmFyIHI9cigxMiksZT1yKHt9LnRvU3RyaW5nKSxvPXIoIiIuc2xpY2UpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbyhlKHQpLDgsLTEpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMykuVHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZih0PT1DKXRocm93IGUoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxNiksbz1yKDE5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dD1lKHQsInN0cmluZyIpO3JldHVybiBvKHQpP3Q6dCsiIn19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpLG89cig3KSxpPXIoMTcpLHU9cigxOSksYz1yKDI2KSxmPXIoMjkpLHI9cigzMCksYT1lLlR5cGVFcnJvcixwPXIoInRvUHJpbWl0aXZlIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIWkodCl8fHUodCkpcmV0dXJuIHQ7dmFyIHI9Yyh0LHApO2lmKHIpe2lmKHI9byhyLHQsbj1uPT09Qz8iZGVmYXVsdCI6biksIWkocil8fHUocikpcmV0dXJuIHI7dGhyb3cgYSgiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9cmV0dXJuIGYodCxuPW49PT1DPyJudW1iZXIiOm4pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6ZSh0KX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMyksbz1yKDIwKSxpPXIoMTgpLHU9cigyMSkscj1yKDIyKSxjPWUuT2JqZWN0O3QuZXhwb3J0cz1yP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7dmFyIG49bygiU3ltYm9sIik7cmV0dXJuIGkobikmJnUobi5wcm90b3R5cGUsYyh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzKSxvPXIoMTgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/KHI9ZVt0XSxvKHIpP3I6Qyk6ZVt0XSYmZVt0XVtuXTt2YXIgcn19LGZ1bmN0aW9uKHQsbixyKXtyPXIoMTIpO3QuZXhwb3J0cz1yKHt9LmlzUHJvdG90eXBlT2YpfSxmdW5jdGlvbih0LG4scil7cj1yKDIzKTt0LmV4cG9ydHM9ciYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjQpLHI9cig2KTt0LmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhcihmdW5jdGlvbigpe3ZhciB0PVN5bWJvbCgpO3JldHVybiFTdHJpbmcodCl8fCEoT2JqZWN0KHQpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmUmJmU8NDF9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlLG8saT1yKDMpLHU9cigyNSkscj1pLnByb2Nlc3MsaT1pLkRlbm8saT1yJiZyLnZlcnNpb25zfHxpJiZpLnZlcnNpb24saT1pJiZpLnY4OyEobz1pPzA8KGU9aS5zcGxpdCgiLiIpKVswXSYmZVswXTw0PzE6KyhlWzBdK2VbMV0pOm8pJiZ1JiYoIShlPXUubWF0Y2goL0VkZ2VcLyhcZCspLykpfHw3NDw9ZVsxXSkmJihlPXUubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihvPStlWzFdKSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxuLHIpe3I9cigyMCk7dC5leHBvcnRzPXIoIm5hdmlnYXRvciIsInVzZXJBZ2VudCIpfHwiIn0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe249dFtuXTtyZXR1cm4gbnVsbD09bj9DOmUobil9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzKSxvPXIoMTgpLGk9cigyOCksdT1lLlR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYobyh0KSlyZXR1cm4gdDt0aHJvdyB1KGkodCkrIiBpcyBub3QgYSBmdW5jdGlvbiIpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMykuU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIGUodCl9Y2F0Y2godCl7cmV0dXJuIk9iamVjdCJ9fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMyksbz1yKDcpLGk9cigxOCksdT1yKDE3KSxjPWUuVHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByLGU7aWYoInN0cmluZyI9PT1uJiZpKHI9dC50b1N0cmluZykmJiF1KGU9byhyLHQpKSlyZXR1cm4gZTtpZihpKHI9dC52YWx1ZU9mKSYmIXUoZT1vKHIsdCkpKXJldHVybiBlO2lmKCJzdHJpbmciIT09biYmaShyPXQudG9TdHJpbmcpJiYhdShlPW8ocix0KSkpcmV0dXJuIGU7dGhyb3cgYygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzKSxvPXIoMzEpLGk9cigzNSksdT1yKDM3KSxjPXIoMjMpLGY9cigyMiksYT1vKCJ3a3MiKSxwPWUuU3ltYm9sLHM9cCYmcC5mb3IsbD1mP3A6cCYmcC53aXRob3V0U2V0dGVyfHx1O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4gaShhLHQpJiYoY3x8InN0cmluZyI9PXR5cGVvZiBhW3RdKXx8KG49IlN5bWJvbC4iK3QsYyYmaShwLHQpP2FbdF09cFt0XTphW3RdPShmJiZzP3M6bCkobikpLGFbdF19fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzMiksbz1yKDMzKTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG9bdF18fChvW3RdPW4hPT1DP246e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4xOS4xIixtb2RlOmU/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAyMSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSJ9KX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ITF9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpLG89cigzNCkscj0iX19jb3JlLWpzX3NoYXJlZF9fIixyPWVbcl18fG8ocix7fSk7dC5leHBvcnRzPXJ9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpLG89T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbihuLHIpe3RyeXtvKGUsbix7dmFsdWU6cixjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaCh0KXtlW25dPXJ9cmV0dXJuIHJ9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxMiksbz1yKDM2KSxpPWUoe30uaGFzT3duUHJvcGVydHkpO3QuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbih0LG4pe3JldHVybiBpKG8odCksbil9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzKSxvPXIoMTQpLGk9ZS5PYmplY3Q7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpKG8odCkpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciByPXIoMTIpLGU9MCxvPU1hdGgucmFuZG9tKCksaT1yKDEuLnRvU3RyaW5nKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIlN5bWJvbCgiKyh0PT09Qz8iIjp0KSsiKV8iK2koKytlK28sMzYpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNSksbz1yKDYpLGk9cigzOSk7dC5leHBvcnRzPSFlJiYhbyhmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoaSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpLHI9cigxNyksbz1lLmRvY3VtZW50LGk9cihvKSYmcihvLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaT9vLmNyZWF0ZUVsZW1lbnQodCk6e319fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1KSxvPXIoNDEpLGk9cig5KTt0LmV4cG9ydHM9ZT9mdW5jdGlvbih0LG4scil7cmV0dXJuIG8uZih0LG4saSgxLHIpKX06ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0W25dPXIsdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpLG89cig1KSxpPXIoMzgpLHU9cig0MiksYz1yKDE1KSxmPWUuVHlwZUVycm9yLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O24uZj1vP2E6ZnVuY3Rpb24odCxuLHIpe2lmKHUodCksbj1jKG4pLHUociksaSl0cnl7cmV0dXJuIGEodCxuLHIpfWNhdGNoKHQpe31pZigiZ2V0ImluIHJ8fCJzZXQiaW4gcil0aHJvdyBmKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiByJiYodFtuXT1yLnZhbHVlKSx0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMyksbz1yKDE3KSxpPWUuU3RyaW5nLHU9ZS5UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKG8odCkpcmV0dXJuIHQ7dGhyb3cgdShpKHQpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBmPXIoMyksYT1yKDE4KSxwPXIoMzUpLHM9cig0MCksbD1yKDM0KSxlPXIoNDQpLG89cig0NSkseT1yKDQ5KS5DT05GSUdVUkFCTEUsaT1vLmdldCx2PW8uZW5mb3JjZSxkPVN0cmluZyhTdHJpbmcpLnNwbGl0KCJTdHJpbmciKTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUpe3ZhciBvPSEhZSYmISFlLnVuc2FmZSxpPSEhZSYmISFlLmVudW1lcmFibGUsdT0hIWUmJiEhZS5ub1RhcmdldEdldCxjPWUmJmUubmFtZSE9PUM/ZS5uYW1lOm47YShyKSYmKCJTeW1ib2woIj09PVN0cmluZyhjKS5zbGljZSgwLDcpJiYoYz0iWyIrU3RyaW5nKGMpLnJlcGxhY2UoL15TeW1ib2xcKChbXildKilcKS8sIiQxIikrIl0iKSwoIXAociwibmFtZSIpfHx5JiZyLm5hbWUhPT1jKSYmcyhyLCJuYW1lIixjKSwoZT12KHIpKS5zb3VyY2V8fChlLnNvdXJjZT1kLmpvaW4oInN0cmluZyI9PXR5cGVvZiBjP2M6IiIpKSksdCE9PWY/KG8/IXUmJnRbbl0mJihpPSEwKTpkZWxldGUgdFtuXSxpP3Rbbl09cjpzKHQsbixyKSk6aT90W25dPXI6bChuLHIpfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzKSYmaSh0aGlzKS5zb3VyY2V8fGUodGhpcyl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTIpLG89cigxOCkscj1yKDMzKSxpPWUoRnVuY3Rpb24udG9TdHJpbmcpO28oci5pbnNwZWN0U291cmNlKXx8KHIuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KX0pLHQuZXhwb3J0cz1yLmluc3BlY3RTb3VyY2V9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZSxvLGksdSxjLGYsYSxwLHM9cig0NiksbD1yKDMpLHk9cigxMiksdj1yKDE3KSxkPXIoNDApLGI9cigzNSksZz1yKDMzKSxoPXIoNDcpLHI9cig0OCksbT0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLHg9bC5UeXBlRXJyb3IsbD1sLldlYWtNYXA7YT1zfHxnLnN0YXRlPyhlPWcuc3RhdGV8fChnLnN0YXRlPW5ldyBsKSxvPXkoZS5nZXQpLGk9eShlLmhhcyksdT15KGUuc2V0KSxjPWZ1bmN0aW9uKHQsbil7aWYoaShlLHQpKXRocm93IG5ldyB4KG0pO3JldHVybiBuLmZhY2FkZT10LHUoZSx0LG4pLG59LGY9ZnVuY3Rpb24odCl7cmV0dXJuIG8oZSx0KXx8e319LGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdCl9KToocltwPWgoInN0YXRlIildPSEwLGM9ZnVuY3Rpb24odCxuKXtpZihiKHQscCkpdGhyb3cgbmV3IHgobSk7cmV0dXJuIG4uZmFjYWRlPXQsZCh0LHAsbiksbn0sZj1mdW5jdGlvbih0KXtyZXR1cm4gYih0LHApP3RbcF06e319LGZ1bmN0aW9uKHQpe3JldHVybiBiKHQscCl9KSx0LmV4cG9ydHM9e3NldDpjLGdldDpmLGhhczphLGVuZm9yY2U6ZnVuY3Rpb24odCl7cmV0dXJuIGEodCk/Zih0KTpjKHQse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuO2lmKCF2KHQpfHwobj1mKHQpKS50eXBlIT09cil0aHJvdyB4KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrcisiIHJlcXVpcmVkIik7cmV0dXJuIG59fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpLG89cigxOCkscj1yKDQ0KSxlPWUuV2Vha01hcDt0LmV4cG9ydHM9byhlKSYmL25hdGl2ZSBjb2RlLy50ZXN0KHIoZSkpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzMSksbz1yKDM3KSxpPWUoImtleXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlbdF18fChpW3RdPW8odCkpfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9e319LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDUpLG89cigzNSksaT1GdW5jdGlvbi5wcm90b3R5cGUsdT1lJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHI9byhpLCJuYW1lIiksbz1yJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uKCl7fS5uYW1lLGk9ciYmKCFlfHxlJiZ1KGksIm5hbWUiKS5jb25maWd1cmFibGUpO3QuZXhwb3J0cz17RVhJU1RTOnIsUFJPUEVSOm8sQ09ORklHVVJBQkxFOml9fSxmdW5jdGlvbih0LG4scil7dmFyIGM9cigzNSksZj1yKDUxKSxhPXIoNCkscD1yKDQxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9ZihuKSxlPXAuZixvPWEuZixpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciB1PXJbaV07Yyh0LHUpfHxlKHQsdSxvKG4sdSkpfX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIwKSxvPXIoMTIpLGk9cig1MiksdT1yKDYwKSxjPXIoNDIpLGY9byhbXS5jb25jYXQpO3QuZXhwb3J0cz1lKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbih0KXt2YXIgbj1pLmYoYyh0KSkscj11LmY7cmV0dXJuIHI/ZihuLHIodCkpOm59fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1Myksbz1yKDU5KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO24uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24odCl7cmV0dXJuIGUodCxvKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEyKSx1PXIoMzUpLGM9cigxMCksZj1yKDU0KS5pbmRleE9mLGE9cig0OCkscD1lKFtdLnB1c2gpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByLGU9Yyh0KSxvPTAsaT1bXTtmb3IociBpbiBlKSF1KGEscikmJnUoZSxyKSYmcChpLHIpO2Zvcig7bi5sZW5ndGg+bzspdShlLHI9bltvKytdKSYmKH5mKGkscil8fHAoaSxyKSk7cmV0dXJuIGl9fSxmdW5jdGlvbih0LG4scil7dmFyIGY9cigxMCksYT1yKDU1KSxwPXIoNTcpLHI9ZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXt2YXIgZSxvPWYodCksaT1wKG8pLHU9YShyLGkpO2lmKGMmJm4hPW4pe2Zvcig7dTxpOylpZigoZT1vW3UrK10pIT1lKXJldHVybiEwfWVsc2UgZm9yKDt1PGk7dSsrKWlmKChjfHx1IGluIG8pJiZvW3VdPT09bilyZXR1cm4gY3x8dXx8MDtyZXR1cm4hYyYmLTF9fTt0LmV4cG9ydHM9e2luY2x1ZGVzOnIoITApLGluZGV4T2Y6cighMSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1Niksbz1NYXRoLm1heCxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3Q9ZSh0KTtyZXR1cm4gdDwwP28odCtuLDApOmkodCxuKX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9TWF0aC5jZWlsLGU9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dD0rdDtyZXR1cm4gdCE9dHx8MD09dD8wOigwPHQ/ZTpyKSh0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDU4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGUodC5sZW5ndGgpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNTYpLG89TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiAwPHQ/byhlKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1bImNvbnN0cnVjdG9yIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b0xvY2FsZVN0cmluZyIsInRvU3RyaW5nIiwidmFsdWVPZiJdfSxmdW5jdGlvbih0LG4pe24uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig2KSxvPXIoMTgpLGk9LyN8XC5wcm90b3R5cGVcLi8scj1mdW5jdGlvbih0LG4pe3Q9Y1t1KHQpXTtyZXR1cm4gdD09YXx8dCE9ZiYmKG8obik/ZShuKTohIW4pfSx1PXIubm9ybWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZShpLCIuIikudG9Mb3dlckNhc2UoKX0sYz1yLmRhdGE9e30sZj1yLk5BVElWRT0iTiIsYT1yLlBPTFlGSUxMPSJQIjt0LmV4cG9ydHM9cn0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMzApLG89cig2Mykscj1yKDQxKSxpPWUoInVuc2NvcGFibGVzIiksdT1BcnJheS5wcm90b3R5cGU7dVtpXT09QyYmci5mKHUsaSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOm8obnVsbCl9KSx0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dVtpXVt0XT0hMH19LGZ1bmN0aW9uKHQsbixyKXtmdW5jdGlvbiBlKCl7fWZ1bmN0aW9uIG8odCl7cmV0dXJuIjxzY3JpcHQ+Iit0KyI8LyIrdisiPiJ9ZnVuY3Rpb24gaSh0KXt0LndyaXRlKG8oIiIpKSx0LmNsb3NlKCk7dmFyIG49dC5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiB0PW51bGwsbn12YXIgdSxjPXIoNDIpLGY9cig2NCksYT1yKDU5KSxwPXIoNDgpLHM9cig2NiksbD1yKDM5KSxyPXIoNDcpLHk9InByb3RvdHlwZSIsdj0ic2NyaXB0IixkPXIoIklFX1BST1RPIiksYj1mdW5jdGlvbigpe3RyeXt1PW5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKHQpe312YXIgdDtiPSJ1bmRlZmluZWQiPT10eXBlb2YgZG9jdW1lbnR8fGRvY3VtZW50LmRvbWFpbiYmdT9pKHUpOigodD1sKCJpZnJhbWUiKSkuc3R5bGUuZGlzcGxheT0ibm9uZSIscy5hcHBlbmRDaGlsZCh0KSx0LnNyYz1TdHJpbmcoImphdmFzY3JpcHQ6IiksKHQ9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksdC53cml0ZShvKCJkb2N1bWVudC5GPU9iamVjdCIpKSx0LmNsb3NlKCksdC5GKTtmb3IodmFyIG49YS5sZW5ndGg7bi0tOylkZWxldGUgYlt5XVthW25dXTtyZXR1cm4gYigpfTtwW2RdPSEwLHQuZXhwb3J0cz1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0LG4pe3ZhciByO3JldHVybiBudWxsIT09dD8oZVt5XT1jKHQpLHI9bmV3IGUsZVt5XT1udWxsLHJbZF09dCk6cj1iKCksbj09PUM/cjpmKHIsbil9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1KSxjPXIoNDEpLGY9cig0MiksYT1yKDEwKSxwPXIoNjUpO3QuZXhwb3J0cz1lP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsbil7Zih0KTtmb3IodmFyIHIsZT1hKG4pLG89cChuKSxpPW8ubGVuZ3RoLHU9MDt1PGk7KWMuZih0LHI9b1t1KytdLGVbcl0pO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNTMpLG89cig1OSk7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG8pfX0sZnVuY3Rpb24odCxuLHIpe3I9cigyMCk7dC5leHBvcnRzPXIoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LGZ1bmN0aW9uKHQsbixyKXtyKDIpKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMH0se2hhc093bjpyKDM1KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSxvPXIoMTIpLGk9cigxNCksdT1yKDU2KSxjPXIoNjkpLHI9cig2KSxmPW8oIiIuY2hhckF0KTtlKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOnIoZnVuY3Rpb24oKXtyZXR1cm4iXHVkODQyIiE9PSLwoK63Ii5hdCgwKX0pfSx7YXQ6ZnVuY3Rpb24odCl7dmFyIG49YyhpKHRoaXMpKSxyPW4ubGVuZ3RoLHQ9dSh0KSx0PTA8PXQ/dDpyK3Q7cmV0dXJuIHQ8MHx8cjw9dD9DOmYobix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMyksbz1yKDcwKSxpPWUuU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiU3ltYm9sIj09PW8odCkpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiBpKHQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMyksbz1yKDcxKSxpPXIoMTgpLHU9cigxMyksYz1yKDMwKSgidG9TdHJpbmdUYWciKSxmPWUuT2JqZWN0LGE9IkFyZ3VtZW50cyI9PXUoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKTt0LmV4cG9ydHM9bz91OmZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiB0PT09Qz8iVW5kZWZpbmVkIjpudWxsPT09dD8iTnVsbCI6InN0cmluZyI9PXR5cGVvZih0PWZ1bmN0aW9uKHQsbil7dHJ5e3JldHVybiB0W25dfWNhdGNoKHQpe319KG49Zih0KSxjKSk/dDphP3Uobik6Ik9iamVjdCI9PSh0PXUobikpJiZpKG4uY2FsbGVlKT8iQXJndW1lbnRzIjp0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXt9O2VbcigzMCkoInRvU3RyaW5nVGFnIildPSJ6Iix0LmV4cG9ydHM9IltvYmplY3Qgel0iPT09U3RyaW5nKGUpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig3Myksbz1yKDU3KSxpPXIoNTYpLHU9ZS5hVHlwZWRBcnJheTsoMCxlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJhdCIsZnVuY3Rpb24odCl7dmFyIG49dSh0aGlzKSxyPW8obiksdD1pKHQpLHQ9MDw9dD90OnIrdDtyZXR1cm4gdDwwfHxyPD10P0M6blt0XX0pfSxmdW5jdGlvbih0LG4scil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4hIXModCkmJih0PXkodCksbChNLHQpfHxsKFIsdCkpfXZhciBvLGksdSxjPXIoNzQpLGY9cig1KSxhPXIoMykscD1yKDE4KSxzPXIoMTcpLGw9cigzNSkseT1yKDcwKSx2PXIoMjgpLGQ9cig0MCksYj1yKDQzKSxnPXIoNDEpLmYsaD1yKDIxKSxtPXIoNzUpLHg9cig3NyksTz1yKDMwKSxTPXIoMzcpLHc9YS5JbnQ4QXJyYXksaj13JiZ3LnByb3RvdHlwZSxyPWEuVWludDhDbGFtcGVkQXJyYXkscj1yJiZyLnByb3RvdHlwZSxBPXcmJm0odyksVD1qJiZtKGopLHc9T2JqZWN0LnByb3RvdHlwZSxQPWEuVHlwZUVycm9yLE89TygidG9TdHJpbmdUYWciKSxfPVMoIlRZUEVEX0FSUkFZX1RBRyIpLEU9UygiVFlQRURfQVJSQVlfQ09OU1RSVUNUT1IiKSxJPWMmJiEheCYmIk9wZXJhIiE9PXkoYS5vcGVyYSksYz0hMSxNPXtJbnQ4QXJyYXk6MSxVaW50OEFycmF5OjEsVWludDhDbGFtcGVkQXJyYXk6MSxJbnQxNkFycmF5OjIsVWludDE2QXJyYXk6MixJbnQzMkFycmF5OjQsVWludDMyQXJyYXk6NCxGbG9hdDMyQXJyYXk6NCxGbG9hdDY0QXJyYXk6OH0sUj17QmlnSW50NjRBcnJheTo4LEJpZ1VpbnQ2NEFycmF5Ojh9O2ZvcihvIGluIE0pKHU9KGk9YVtvXSkmJmkucHJvdG90eXBlKT9kKHUsRSxpKTpJPSExO2ZvcihvIGluIFIpKHU9KGk9YVtvXSkmJmkucHJvdG90eXBlKSYmZCh1LEUsaSk7aWYoKCFJfHwhcChBKXx8QT09PUZ1bmN0aW9uLnByb3RvdHlwZSkmJihBPWZ1bmN0aW9uKCl7dGhyb3cgUCgiSW5jb3JyZWN0IGludm9jYXRpb24iKX0sSSkpZm9yKG8gaW4gTSlhW29dJiZ4KGFbb10sQSk7aWYoKCFJfHwhVHx8VD09PXcpJiYoVD1BLnByb3RvdHlwZSxJKSlmb3IobyBpbiBNKWFbb10mJngoYVtvXS5wcm90b3R5cGUsVCk7aWYoSSYmbShyKSE9PVQmJngocixUKSxmJiYhbChULE8pKWZvcihvIGluIGM9ITAsZyhULE8se2dldDpmdW5jdGlvbigpe3JldHVybiBzKHRoaXMpP3RoaXNbX106Q319KSxNKWFbb10mJmQoYVtvXSxfLG8pO3QuZXhwb3J0cz17TkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUzpJLFRZUEVEX0FSUkFZX0NPTlNUUlVDVE9SOkUsVFlQRURfQVJSQVlfVEFHOmMmJl8sYVR5cGVkQXJyYXk6ZnVuY3Rpb24odCl7aWYoZSh0KSlyZXR1cm4gdDt0aHJvdyBQKCJUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXkiKX0sYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjpmdW5jdGlvbih0KXtpZihwKHQpJiYoIXh8fGgoQSx0KSkpcmV0dXJuIHQ7dGhyb3cgUCh2KHQpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbih0LG4scil7aWYoZil7aWYocilmb3IodmFyIGUgaW4gTSl7ZT1hW2VdO2lmKGUmJmwoZS5wcm90b3R5cGUsdCkpdHJ5e2RlbGV0ZSBlLnByb3RvdHlwZVt0XX1jYXRjaCh0KXt9fVRbdF0mJiFyfHxiKFQsdCwhciYmSSYmalt0XXx8bil9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKHQsbixyKXt2YXIgZSxvO2lmKGYpe2lmKHgpe2lmKHIpZm9yKGUgaW4gTSlpZigobz1hW2VdKSYmbChvLHQpKXRyeXtkZWxldGUgb1t0XX1jYXRjaCh0KXt9aWYoQVt0XSYmIXIpcmV0dXJuO3RyeXtyZXR1cm4gYihBLHQsIXImJkkmJkFbdF18fG4pfWNhdGNoKHQpe319Zm9yKGUgaW4gTSkhKG89YVtlXSl8fG9bdF0mJiFyfHxiKG8sdCxuKX19LGlzVmlldzpmdW5jdGlvbih0KXtpZighcyh0KSlyZXR1cm4hMTt0PXkodCk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGwoTSx0KXx8bChSLHQpfSxpc1R5cGVkQXJyYXk6ZSxUeXBlZEFycmF5OkEsVHlwZWRBcnJheVByb3RvdHlwZTpUfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMyksbz1yKDM1KSxpPXIoMTgpLHU9cigzNiksYz1yKDQ3KSxyPXIoNzYpLGY9YygiSUVfUFJPVE8iKSxhPWUuT2JqZWN0LHA9YS5wcm90b3R5cGU7dC5leHBvcnRzPXI/YS5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXt2YXIgbj11KHQpO2lmKG8obixmKSlyZXR1cm4gbltmXTt0PW4uY29uc3RydWN0b3I7cmV0dXJuIGkodCkmJm4gaW5zdGFuY2VvZiB0P3QucHJvdG90eXBlOm4gaW5zdGFuY2VvZiBhP3A6bnVsbH19LGZ1bmN0aW9uKHQsbixyKXtyPXIoNik7dC5leHBvcnRzPSFyKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpIT09dC5wcm90b3R5cGV9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoMTIpLGk9cig0MiksdT1yKDc4KTt0LmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIHIsZT0hMSx0PXt9O3RyeXsocj1vKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0KSkodCxbXSksZT10IGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2godCl7fXJldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBpKHQpLHUobiksZT9yKHQsbik6dC5fX3Byb3RvX189bix0fX0oKTpDKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMyksbz1yKDE4KSxpPWUuU3RyaW5nLHU9ZS5UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgdHx8byh0KSlyZXR1cm4gdDt0aHJvdyB1KCJDYW4ndCBzZXQgIitpKHQpKyIgYXMgYSBwcm90b3R5cGUiKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpLG89cigxMiksaT1yKDYpLHU9cigyNyksYz1yKDgwKSxmPXIoNzMpLGE9cig4MikscD1yKDgzKSxzPXIoMjQpLGw9cig4NCkseT1lLkFycmF5LHY9Zi5hVHlwZWRBcnJheSxmPWYuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxkPWUuVWludDE2QXJyYXksYj1kJiZvKGQucHJvdG90eXBlLnNvcnQpLG89ISghYnx8aShmdW5jdGlvbigpe2IobmV3IGQoMiksbnVsbCl9KSYmaShmdW5jdGlvbigpe2IobmV3IGQoMikse30pfSkpLGc9ISFiJiYhaShmdW5jdGlvbigpe2lmKHMpcmV0dXJuIHM8NzQ7aWYoYSlyZXR1cm4gYTw2NztpZihwKXJldHVybiEwO2lmKGwpcmV0dXJuIGw8NjAyO2Zvcih2YXIgdCxuPW5ldyBkKDUxNikscj15KDUxNiksZT0wO2U8NTE2O2UrKyl0PWUlNCxuW2VdPTUxNS1lLHJbZV09ZS0yKnQrMztmb3IoYihuLGZ1bmN0aW9uKHQsbil7cmV0dXJuKHQvNHwwKS0obi80fDApfSksZT0wO2U8NTE2O2UrKylpZihuW2VdIT09cltlXSlyZXR1cm4hMH0pO2YoInNvcnQiLGZ1bmN0aW9uKHQpe3JldHVybiB0IT09QyYmdSh0KSxnP2IodGhpcyx0KTpjKHYodGhpcyksKHI9dCxmdW5jdGlvbih0LG4pe3JldHVybiByIT09Qz8rcih0LG4pfHwwOm4hPW4/LTE6dCE9dD8xOjA9PT10JiYwPT09bj8wPDEvdCYmMS9uPDA/MTotMTpuPHR9KSk7dmFyIHJ9LCFnfHxvKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoODEpLGk9TWF0aC5mbG9vcix1PWZ1bmN0aW9uKHQsbil7dmFyIHI9dC5sZW5ndGgsZT1pKHIvMik7cmV0dXJuIHI8OD9jKHQsbik6Zih0LHUobyh0LDAsZSksbiksdShvKHQsZSksbiksbil9LGM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHIsZSxvPXQubGVuZ3RoLGk9MTtpPG87KXtmb3Iocj10W2U9aV07ZSYmMDxuKHRbZS0xXSxyKTspdFtlXT10Wy0tZV07ZSE9PWkrKyYmKHRbZV09cil9cmV0dXJuIHR9LGY9ZnVuY3Rpb24odCxuLHIsZSl7Zm9yKHZhciBvPW4ubGVuZ3RoLGk9ci5sZW5ndGgsdT0wLGM9MDt1PG98fGM8aTspdFt1K2NdPXU8byYmYzxpP2Uoblt1XSxyW2NdKTw9MD9uW3UrK106cltjKytdOnU8bz9uW3UrK106cltjKytdO3JldHVybiB0fTt0LmV4cG9ydHM9dX0sZnVuY3Rpb24odCxuLHIpe3I9cigxMik7dC5leHBvcnRzPXIoW10uc2xpY2UpfSxmdW5jdGlvbih0LG4scil7cj1yKDI1KS5tYXRjaCgvZmlyZWZveFwvKFxkKykvaSk7dC5leHBvcnRzPSEhciYmK3JbMV19LGZ1bmN0aW9uKHQsbixyKXtyPXIoMjUpO3QuZXhwb3J0cz0vTVNJRXxUcmlkZW50Ly50ZXN0KHIpfSxmdW5jdGlvbih0LG4scil7cj1yKDI1KS5tYXRjaCgvQXBwbGVXZWJLaXRcLyhcZCspXC4vKTt0LmV4cG9ydHM9ISFyJiYrclsxXX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMiksbz1yKDMpLHI9cig4Nik7ZSh7Z2xvYmFsOiEwLGJpbmQ6ITAsZW51bWVyYWJsZTohMCxmb3JjZWQ6IW8uc2V0SW1tZWRpYXRlfHwhby5jbGVhckltbWVkaWF0ZX0se3NldEltbWVkaWF0ZTpyLnNldCxjbGVhckltbWVkaWF0ZTpyLmNsZWFyfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZSxvLGk9cigzKSx1PXIoODcpLGM9cig4OCksZj1yKDE4KSxhPXIoMzUpLHA9cig2KSxzPXIoNjYpLGw9cig4MSkseT1yKDM5KSx2PXIoODkpLGQ9cig5MCksYj1pLnNldEltbWVkaWF0ZSxnPWkuY2xlYXJJbW1lZGlhdGUsaD1pLnByb2Nlc3MsbT1pLkRpc3BhdGNoLHg9aS5GdW5jdGlvbixPPWkuTWVzc2FnZUNoYW5uZWwsUz1pLlN0cmluZyx3PTAsaj17fSxBPSJvbnJlYWR5c3RhdGVjaGFuZ2UiO3RyeXtlPWkubG9jYXRpb259Y2F0Y2godCl7fWZ1bmN0aW9uIFQodCl7dmFyIG47YShqLHQpJiYobj1qW3RdLGRlbGV0ZSBqW3RdLG4oKSl9ZnVuY3Rpb24gUCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtUKHQpfX1mdW5jdGlvbiBfKHQpe1QodC5kYXRhKX1yPWZ1bmN0aW9uKHQpe2kucG9zdE1lc3NhZ2UoUyh0KSxlLnByb3RvY29sKyIvLyIrZS5ob3N0KX07YiYmZ3x8KGI9ZnVuY3Rpb24odCl7dmFyIG49bChhcmd1bWVudHMsMSk7cmV0dXJuIGpbKyt3XT1mdW5jdGlvbigpe3UoZih0KT90OngodCksQyxuKX0sbyh3KSx3fSxnPWZ1bmN0aW9uKHQpe2RlbGV0ZSBqW3RdfSxkP289ZnVuY3Rpb24odCl7aC5uZXh0VGljayhQKHQpKX06bSYmbS5ub3c/bz1mdW5jdGlvbih0KXttLm5vdyhQKHQpKX06TyYmIXY/KE89KHY9bmV3IE8pLnBvcnQyLHYucG9ydDEub25tZXNzYWdlPV8sbz1jKE8ucG9zdE1lc3NhZ2UsTykpOmkuYWRkRXZlbnRMaXN0ZW5lciYmZihpLnBvc3RNZXNzYWdlKSYmIWkuaW1wb3J0U2NyaXB0cyYmZSYmImZpbGU6IiE9PWUucHJvdG9jb2wmJiFwKHIpPyhvPXIsaS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixfLCExKSk6bz1BIGluIHkoInNjcmlwdCIpP2Z1bmN0aW9uKHQpe3MuYXBwZW5kQ2hpbGQoeSgic2NyaXB0IikpW0FdPWZ1bmN0aW9uKCl7cy5yZW1vdmVDaGlsZCh0aGlzKSxUKHQpfX06ZnVuY3Rpb24odCl7c2V0VGltZW91dChQKHQpLDApfSksdC5leHBvcnRzPXtzZXQ6YixjbGVhcjpnfX0sZnVuY3Rpb24odCxuKXt2YXIgcj1GdW5jdGlvbi5wcm90b3R5cGUsZT1yLmFwcGx5LG89ci5iaW5kLGk9ci5jYWxsO3QuZXhwb3J0cz0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuYXBwbHl8fChvP2kuYmluZChlKTpmdW5jdGlvbigpe3JldHVybiBpLmFwcGx5KGUsYXJndW1lbnRzKX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxMiksbz1yKDI3KSxpPWUoZS5iaW5kKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbyh0KSxuPT09Qz90Omk/aSh0LG4pOmZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkobixhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsbixyKXtyPXIoMjUpO3QuZXhwb3J0cz0vKD86aXBhZHxpcGhvbmV8aXBvZCkuKmFwcGxld2Via2l0L2kudGVzdChyKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTMpLHI9cigzKTt0LmV4cG9ydHM9InByb2Nlc3MiPT1lKHIucHJvY2Vzcyl9XSxvLmM9ZSxvLmQ9ZnVuY3Rpb24odCxuLHIpe28ubyh0LG4pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG8ucj1mdW5jdGlvbih0KXsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxvLnQ9ZnVuY3Rpb24obix0KXtpZigxJnQmJihuPW8obikpLDgmdClyZXR1cm4gbjtpZig0JnQmJiJvYmplY3QiPT10eXBlb2YgbiYmbiYmbi5fX2VzTW9kdWxlKXJldHVybiBuO3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoby5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTpufSksMiZ0JiYic3RyaW5nIiE9dHlwZW9mIG4pZm9yKHZhciBlIGluIG4pby5kKHIsZSxmdW5jdGlvbih0KXtyZXR1cm4gblt0XX0uYmluZChudWxsLGUpKTtyZXR1cm4gcn0sby5uPWZ1bmN0aW9uKHQpe3ZhciBuPXQmJnQuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiB0LmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O3JldHVybiBvLmQobiwiYSIsbiksbn0sby5vPWZ1bmN0aW9uKHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfSxvLnA9IiIsbyhvLnM9MCl9KCk7"}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/uploads/2021/10/DJI_0071-scaled.jpg","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.870Z","timestamp":1785145485870,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /wp-content/uploads/2021/10/DJI_0071-scaled.jpg HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"api.coingecko.com/api/v3/coins/bitcoin?developer_data=false\u0026community_data=false\u0026tickers=false","fqdn":"api.coingecko.com","domain":"coingecko.com","tld":"com"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.915Z","timestamp":1785145485915,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /api/v3/coins/bitcoin?developer_data=false\u0026community_data=false\u0026tickers=false HTTP/1.1\r\nHost: api.coingecko.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\nReferer: https://betaroi.ltd/\r\nOrigin: https://betaroi.ltd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/perfect-scrollbar.css?ver=0.6.12","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.309Z","timestamp":1785145482309,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/perfect-scrollbar.css?ver=0.6.12 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 2693\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":2693,"size_decoded":2902,"mime_type":"text/css","magic":"troff or preprocessor input, ASCII text","md5":"ac43022fdf5c81b188a67df639825919","sha1":"88fcb6c385a184da0ca97f6b189d493317570e4c","sha256":"98d0d792a5b5b818bfa6f987be1f35caa36a49a7221080c7b21be1c81819f3b2","sha512":"65375f4d67e267e0d5620c22e0fc86f68256deea968c45a57597fc00e2f2c003985dd23580c4881cb644496028f97005768151c9308edf12e795d72db56af909","ssdeep":"","tlshash":"1851aeb68a9326c2321b5a5e2beda745323f4093bb478a5d764b31c45f063ed1932584","first_seen":"2026-07-27T08:06:56.359813Z","last_seen":"2026-07-27T09:45:50.943399Z","times_seen":3,"resource_available":false,"data":"LyoKICogQ29udGFpbmVyIHN0eWxlCiAqLwoKLnBzIHsKICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIG92ZXJmbG93LWFuY2hvcjogbm9uZTsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsKICAgIHRvdWNoLWFjdGlvbjogYXV0bzsKICAgIC1tcy10b3VjaC1hY3Rpb246IGF1dG87Cn0KCi8qCiAqIFNjcm9sbGJhciByYWlsIHN0eWxlcwogKi8KCi5wc19fcmFpbC14IHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLCBvcGFjaXR5IC4ycyBsaW5lYXI7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgb3BhY2l0eSAuMnMgbGluZWFyOwogICAgaGVpZ2h0OiAxNXB4OwogICAgLyogdGhlcmUgbXVzdCBiZSAnYm90dG9tJyBvciAndG9wJyBmb3IgcHNfX3JhaWwteCAqLwogICAgYm90dG9tOiAwcHg7CiAgICAvKiBwbGVhc2UgZG9uJ3QgY2hhbmdlICdwb3NpdGlvbicgKi8KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLnBzX19yYWlsLXkgewogICAgZGlzcGxheTogbm9uZTsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIG9wYWNpdHkgLjJzIGxpbmVhcjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLCBvcGFjaXR5IC4ycyBsaW5lYXI7CiAgICB3aWR0aDogMTVweDsKICAgIC8qIHRoZXJlIG11c3QgYmUgJ3JpZ2h0JyBvciAnbGVmdCcgZm9yIHBzX19yYWlsLXkgKi8KICAgIHJpZ2h0OiAwOwogICAgLyogcGxlYXNlIGRvbid0IGNoYW5nZSAncG9zaXRpb24nICovCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KCi5wcy0tYWN0aXZlLXg+LnBzX19yYWlsLXgsCi5wcy0tYWN0aXZlLXk+LnBzX19yYWlsLXkgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLnBzOmhvdmVyPi5wc19fcmFpbC14LAoucHM6aG92ZXI+LnBzX19yYWlsLXksCi5wcy0tZm9jdXM+LnBzX19yYWlsLXgsCi5wcy0tZm9jdXM+LnBzX19yYWlsLXksCi5wcy0tc2Nyb2xsaW5nLXg+LnBzX19yYWlsLXgsCi5wcy0tc2Nyb2xsaW5nLXk+LnBzX19yYWlsLXkgewogICAgb3BhY2l0eTogMC42Owp9CgoucHMgLnBzX19yYWlsLXg6aG92ZXIsCi5wcyAucHNfX3JhaWwteTpob3ZlciwKLnBzIC5wc19fcmFpbC14OmZvY3VzLAoucHMgLnBzX19yYWlsLXk6Zm9jdXMsCi5wcyAucHNfX3JhaWwteC5wcy0tY2xpY2tpbmcsCi5wcyAucHNfX3JhaWwteS5wcy0tY2xpY2tpbmcgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIG9wYWNpdHk6IDAuOTsKfQoKLyoKICogU2Nyb2xsYmFyIHRodW1iIHN0eWxlcwogKi8KCi5wc19fdGh1bWIteCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLCBoZWlnaHQgLjJzIGVhc2UtaW4tb3V0OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIGhlaWdodCAuMnMgZWFzZS1pbi1vdXQ7CiAgICBoZWlnaHQ6IDZweDsKICAgIC8qIHRoZXJlIG11c3QgYmUgJ2JvdHRvbScgZm9yIHBzX190aHVtYi14ICovCiAgICBib3R0b206IDJweDsKICAgIC8qIHBsZWFzZSBkb24ndCBjaGFuZ2UgJ3Bvc2l0aW9uJyAqLwogICAgcG9zaXRpb246IGFic29sdXRlOwp9CgoucHNfX3RodW1iLXkgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2FhYTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgd2lkdGggLjJzIGVhc2UtaW4tb3V0OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIHdpZHRoIC4ycyBlYXNlLWluLW91dDsKICAgIHdpZHRoOiA2cHg7CiAgICAvKiB0aGVyZSBtdXN0IGJlICdyaWdodCcgZm9yIHBzX190aHVtYi15ICovCiAgICByaWdodDogMnB4OwogICAgLyogcGxlYXNlIGRvbid0IGNoYW5nZSAncG9zaXRpb24nICovCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KCi5wc19fcmFpbC14OmhvdmVyPi5wc19fdGh1bWIteCwKLnBzX19yYWlsLXg6Zm9jdXM+LnBzX190aHVtYi14LAoucHNfX3JhaWwteC5wcy0tY2xpY2tpbmcgLnBzX190aHVtYi14IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk7CiAgICBoZWlnaHQ6IDExcHg7Cn0KCi5wc19fcmFpbC15OmhvdmVyPi5wc19fdGh1bWIteSwKLnBzX19yYWlsLXk6Zm9jdXM+LnBzX190aHVtYi15LAoucHNfX3JhaWwteS5wcy0tY2xpY2tpbmcgLnBzX190aHVtYi15IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk7CiAgICB3aWR0aDogMTFweDsKfQoKLyogTVMgc3VwcG9ydHMgKi8KCkBzdXBwb3J0cyAoLW1zLW92ZXJmbG93LXN0eWxlOiBub25lKSB7CiAgICAucHMgewogICAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSwKKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSB7CiAgICAucHMgewogICAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB9Cn0="}},"time_used":662,"timings":{"blocked":566,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/dialog/dialog.min.js?ver=4.9.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.508Z","timestamp":1785145482508,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/dialog/dialog.min.js?ver=4.9.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 16475\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":16475,"size_decoded":16692,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (359)","md5":"ad50605a1885b4cd36d87f2c3568b515","sha1":"c5323a2672e4402cf9c412fe6850d500f3d1622a","sha256":"ff63d3bef36ab60624d7c9e5cb12fda95870cd8e6760d7381e440fce4cf13137","sha512":"d0445805bb30bc028d6d6207aa553415d9970c050d10bdefa000b4b10290478799b697e126a3b7d5e635f826bf296e88665681e2193ef866b85e81888901347f","ssdeep":"384:mZqLYJc9H4/p40EO4tWACbkSuwddd7htlj9OB58xG:FLCc2pdEO4tWACIzwddd7htul","tlshash":"9a72630ab1f5387187abb035652fa6087236908fac496d153c4c92e09f6897d83f6fdd","first_seen":"2026-01-25T19:10:34.369307Z","last_seen":"2026-07-27T09:45:50.828665Z","times_seen":7,"resource_available":true,"data":"LyohIGRpYWxvZ3MtbWFuYWdlciB2NC45LjAgfCAoYykgS29iaSBaYWx0emJlcmcgfCBodHRwczovL2dpdGh1Yi5jb20va29iaXp6L2RpYWxvZ3MtbWFuYWdlci9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dAogMjAyMS0wOC0xNSAxODoxMyAqLwohIGZ1bmN0aW9uKHAsIHQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciB5ID0gewogICAgICAgIHdpZGdldHNUeXBlczoge30sCiAgICAgICAgY3JlYXRlV2lkZ2V0VHlwZTogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICBuID0gbiB8fCB0aGlzLldpZGdldDsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGkoKSB7CiAgICAgICAgICAgICAgICBuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbyA9IGkucHJvdG90eXBlID0gbmV3IG4odCk7CiAgICAgICAgICAgIHJldHVybiBvLnR5cGVzID0gby50eXBlcy5jb25jYXQoW3RdKSwgcC5leHRlbmQobywgZSksIChvLmNvbnN0cnVjdG9yID0gaSkuZXh0ZW5kID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHkuY3JlYXRlV2lkZ2V0VHlwZSh0LCBlLCBpKQogICAgICAgICAgICB9LCBpCiAgICAgICAgfSwKICAgICAgICBhZGRXaWRnZXRUeXBlOiBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBlICYmIGUucHJvdG90eXBlIGluc3RhbmNlb2YgdGhpcy5XaWRnZXQgPyB0aGlzLndpZGdldHNUeXBlc1t0XSA9IGUgOiB0aGlzLndpZGdldHNUeXBlc1t0XSA9IHRoaXMuY3JlYXRlV2lkZ2V0VHlwZSh0LCBlLCBuKQogICAgICAgIH0sCiAgICAgICAgZ2V0V2lkZ2V0VHlwZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRzVHlwZXNbdF0KICAgICAgICB9CiAgICB9OwogICAgeS5JbnN0YW5jZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgZSA9IHt9LAogICAgICAgICAgICBpID0ge307CiAgICAgICAgdGhpcy5jcmVhdGVXaWRnZXQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHQgPSBuZXcoeS5nZXRXaWRnZXRUeXBlKHQpKSh0KTsKICAgICAgICAgICAgcmV0dXJuIHQuaW5pdChuLCBlID0gZSB8fCB7fSksIHQKICAgICAgICB9LCB0aGlzLmdldFNldHRpbmdzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdCA/IGlbdF0gOiBPYmplY3QuY3JlYXRlKGkpCiAgICAgICAgfSwgdGhpcy5pbml0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gcC5leHRlbmQoaSwgewogICAgICAgICAgICAgICAgY2xhc3NQcmVmaXg6ICJkaWFsb2ciLAogICAgICAgICAgICAgICAgZWZmZWN0czogewogICAgICAgICAgICAgICAgICAgIHNob3c6ICJmYWRlSW4iLAogICAgICAgICAgICAgICAgICAgIGhpZGU6ICJmYWRlT3V0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB0KSwgZS5ib2R5ID0gcCgiYm9keSIpLCBuCiAgICAgICAgfSwgbi5pbml0KCkKICAgIH0sIHkuV2lkZ2V0ID0gZnVuY3Rpb24obikgewogICAgICAgIGZ1bmN0aW9uIGUodCwgZSkgewogICAgICAgICAgICB2YXIgbiA9IHUuZWZmZWN0c1t0XSwKICAgICAgICAgICAgICAgIHQgPSBkLndpZGdldDsKICAgICAgICAgICAgaWYgKHAuaXNGdW5jdGlvbihuKSkgbi5hcHBseSh0LCBlKTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIXRbbl0pIHRocm93ICJSZWZlcmVuY2UgRXJyb3I6IFRoZSBlZmZlY3QgIiArIG4gKyAiIG5vdCBmb3VuZCI7CiAgICAgICAgICAgICAgICB0W25dLmFwcGx5KHQsIGUpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGkodCkgewogICAgICAgICAgICBpZiAoIWYodCkpIHsKICAgICAgICAgICAgICAgIGlmICh1LmhpZGUub25DbGljaykgewogICAgICAgICAgICAgICAgICAgIGlmIChwKHQudGFyZ2V0KS5jbG9zZXN0KHUuc2VsZWN0b3JzLnByZXZlbnRDbG9zZSkubGVuZ3RoKSByZXR1cm4KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodC50YXJnZXQgIT09IHRoaXMpIHJldHVybjsKICAgICAgICAgICAgICAgIGMuaGlkZSgpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG8odCkgewogICAgICAgICAgICBmKHQpIHx8IHAodC50YXJnZXQpLmNsb3Nlc3QoZC53aWRnZXQpLmxlbmd0aCB8fCBnKHQpIHx8IGMuaGlkZSgpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzKHQsIGUpIHsKICAgICAgICAgICAgdCA9IHAuZXh0ZW5kKCEwLCB7fSwgdC5nZXRTZXR0aW5ncygpKSwgdSA9IHsKICAgICAgICAgICAgICAgIGhlYWRlck1lc3NhZ2U6ICIiLAogICAgICAgICAgICAgICAgbWVzc2FnZTogIiIsCiAgICAgICAgICAgICAgICBlZmZlY3RzOiB0LmVmZmVjdHMsCiAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsUHJlZml4OiB0LmNsYXNzUHJlZml4LAogICAgICAgICAgICAgICAgICAgIHByZWZpeDogdC5jbGFzc1ByZWZpeCArICItIiArIG4sCiAgICAgICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdC5jbGFzc1ByZWZpeCArICItcHJldmVudC1zY3JvbGwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgcHJldmVudENsb3NlOiAiLiIgKyB0LmNsYXNzUHJlZml4ICsgIi1wcmV2ZW50LWNsb3NlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogImJvZHkiLAogICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogITEsCiAgICAgICAgICAgICAgICBpZnJhbWU6IG51bGwsCiAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogITEsCiAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbk9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3M6IHQuY2xhc3NQcmVmaXggKyAiLWNsb3NlLWJ1dHRvbi1pY29uIiwKICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSwKICAgICAgICAgICAgICAgICAgICBpY29uRWxlbWVudDogIjxpPiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICJ3aWRnZXQiLAogICAgICAgICAgICAgICAgICAgIG15OiAiY2VudGVyIiwKICAgICAgICAgICAgICAgICAgICBhdDogImNlbnRlciIsCiAgICAgICAgICAgICAgICAgICAgZW5hYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBhdXRvUmVmcmVzaDogITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoaWRlOiB7CiAgICAgICAgICAgICAgICAgICAgYXV0bzogITEsCiAgICAgICAgICAgICAgICAgICAgYXV0b0RlbGF5OiA1ZTMsCiAgICAgICAgICAgICAgICAgICAgb25DbGljazogITEsCiAgICAgICAgICAgICAgICAgICAgb25PdXRzaWRlQ2xpY2s6ICEwLAogICAgICAgICAgICAgICAgICAgIG9uT3V0c2lkZUNvbnRleHRNZW51OiAhMSwKICAgICAgICAgICAgICAgICAgICBvbkJhY2tncm91bmRDbGljazogITAsCiAgICAgICAgICAgICAgICAgICAgb25Fc2NLZXlQcmVzczogITAsCiAgICAgICAgICAgICAgICAgICAgaWdub3JlOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBwLmV4dGVuZCghMCwgdSwgYy5nZXREZWZhdWx0U2V0dGluZ3MoKSwgZSksIHAuZWFjaCh1LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0ID0gdC5tYXRjaCgvXm9uKFtBLVpdLiopLyk7CiAgICAgICAgICAgICAgICB0ICYmICh0ID0gdFsxXS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHRbMV0uc2xpY2UoMSksIGMub24odCwgdGhpcykpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByKHQpIHsKICAgICAgICAgICAgMjcgPT09IHQud2hpY2ggJiYgYy5oaWRlKCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgIHZhciB0ID0gW2Qud2luZG93XTsKICAgICAgICAgICAgZC5pZnJhbWUgJiYgdC5wdXNoKGpRdWVyeShkLmlmcmFtZVswXS5jb250ZW50V2luZG93KSksIHQuZm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB1LmhpZGUub25Fc2NLZXlQcmVzcyAmJiB0Lm9mZigia2V5dXAiLCByKSwgdS5oaWRlLm9uT3V0c2lkZUNsaWNrICYmIHRbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBvLCAhMCksIHUuaGlkZS5vbk91dHNpZGVDb250ZXh0TWVudSAmJiB0WzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgbywgITApLCB1LnBvc2l0aW9uLmF1dG9SZWZyZXNoICYmIHQub2ZmKCJyZXNpemUiLCBjLnJlZnJlc2hQb3NpdGlvbikKICAgICAgICAgICAgfSksICh1LmhpZGUub25DbGljayB8fCB1LmhpZGUub25CYWNrZ3JvdW5kQ2xpY2spICYmIGQud2lkZ2V0Lm9mZigiY2xpY2siLCBpKQogICAgICAgIH0KICAgICAgICB2YXIgYyA9IHRoaXMsCiAgICAgICAgICAgIHUgPSB7fSwKICAgICAgICAgICAgYSA9IHt9LAogICAgICAgICAgICBkID0ge30sCiAgICAgICAgICAgIGwgPSAwLAogICAgICAgICAgICBoID0gWyJyZWZyZXNoUG9zaXRpb24iXSwKICAgICAgICAgICAgZyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIXUuaGlkZS5pZ25vcmUgJiYgISFwKHQudGFyZ2V0KS5jbG9zZXN0KHUuaGlkZS5pZ25vcmUpLmxlbmd0aAogICAgICAgICAgICB9LAogICAgICAgICAgICBmID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJjbGljayIgPT09IHQudHlwZSAmJiAyID09PSB0LmJ1dHRvbgogICAgICAgICAgICB9OwogICAgICAgIHRoaXMuYWRkRWxlbWVudCA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgZSA9IGRbdF0gPSBwKGUgfHwgIjxkaXY+IiksIHQgPSB0LnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1sxXSArICItIiArIGFyZ3VtZW50c1syXS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gbiA9IG4gPyBuICsgIiAiIDogIiIsIG4gKz0gdS5jbGFzc2VzLmdsb2JhbFByZWZpeCArICItIiArIHQsIG4gKz0gIiAiICsgdS5jbGFzc2VzLnByZWZpeCArICItIiArIHQsIGUuYWRkQ2xhc3MobiksIGUKICAgICAgICB9LCB0aGlzLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHQoKSwgZC53aWRnZXQucmVtb3ZlKCksIGMudHJpZ2dlcigiZGVzdHJveSIpLCBjCiAgICAgICAgfSwgdGhpcy5nZXRFbGVtZW50cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQgPyBkW3RdIDogZAogICAgICAgIH0sIHRoaXMuZ2V0U2V0dGluZ3MgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gT2JqZWN0LmNyZWF0ZSh1KTsKICAgICAgICAgICAgcmV0dXJuIHQgPyBlW3RdIDogZQogICAgICAgIH0sIHRoaXMuaGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoYy5pc1Zpc2libGUoKSkgcmV0dXJuIGNsZWFyVGltZW91dChsKSwgZSgiaGlkZSIsIGFyZ3VtZW50cyksIHQoKSwgdS5wcmV2ZW50U2Nyb2xsICYmIGMuZ2V0RWxlbWVudHMoImJvZHkiKS5yZW1vdmVDbGFzcyh1LmNsYXNzZXMucHJldmVudFNjcm9sbCksIGMudHJpZ2dlcigiaGlkZSIpLCBjCiAgICAgICAgfSwgdGhpcy5pbml0ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBpZiAoISh0IGluc3RhbmNlb2YgeS5JbnN0YW5jZSkpIHRocm93ICJUaGUgIiArIGMud2lkZ2V0TmFtZSArICIgbXVzdCB0byBiZSBpbml0aWFsaXplZCBmcm9tIGFuIGluc3RhbmNlIG9mIERpYWxvZ3NNYW5hZ2VyLkluc3RhbmNlIjsKICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgIHJldHVybiBuID0gaC5jb25jYXQoYy5nZXRDbG9zdXJlTWV0aG9kcygpKSwgcC5lYWNoKG4sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gY1t0aGlzXTsKICAgICAgICAgICAgICAgICAgICBjW3RoaXNdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuYXBwbHkoYywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCBjLnRyaWdnZXIoImluaXQiLCBlKSwgcyh0LCBlKSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChjLmFkZEVsZW1lbnQoIndpZGdldCIpLCBjLmFkZEVsZW1lbnQoImhlYWRlciIpLCBjLmFkZEVsZW1lbnQoIm1lc3NhZ2UiKSwgYy5hZGRFbGVtZW50KCJ3aW5kb3ciLCB3aW5kb3cpLCBjLmFkZEVsZW1lbnQoImJvZHkiLCBkb2N1bWVudC5ib2R5KSwgYy5hZGRFbGVtZW50KCJjb250YWluZXIiLCB1LmNvbnRhaW5lciksIHUuaWZyYW1lICYmIGMuYWRkRWxlbWVudCgiaWZyYW1lIiwgdS5pZnJhbWUpLCB1LmNsb3NlQnV0dG9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHUuY2xvc2VCdXR0b25DbGFzcyAmJiAodS5jbG9zZUJ1dHRvbk9wdGlvbnMuaWNvbkNsYXNzID0gdS5jbG9zZUJ1dHRvbkNsYXNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHAoIjxkaXY+IiwgdS5jbG9zZUJ1dHRvbk9wdGlvbnMuYXR0cmlidXRlcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcCh1LmNsb3NlQnV0dG9uT3B0aW9ucy5pY29uRWxlbWVudCkuYWRkQ2xhc3ModS5jbG9zZUJ1dHRvbk9wdGlvbnMuaWNvbkNsYXNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5hcHBlbmQoaSksIGMuYWRkRWxlbWVudCgiY2xvc2VCdXR0b24iLCBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGMuZ2V0U2V0dGluZ3MoImlkIik7CiAgICAgICAgICAgICAgICAgICAgdCAmJiBjLnNldElEKHQpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gW107CiAgICAgICAgICAgICAgICAgICAgcC5lYWNoKGMudHlwZXMsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnB1c2godS5jbGFzc2VzLmdsb2JhbFByZWZpeCArICItdHlwZS0iICsgdGhpcykKICAgICAgICAgICAgICAgICAgICB9KSwgZS5wdXNoKGMuZ2V0U2V0dGluZ3MoImNsYXNzTmFtZSIpKSwgZC53aWRnZXQuYWRkQ2xhc3MoZS5qb2luKCIgIikpCiAgICAgICAgICAgICAgICB9KCksIGMuYnVpbGRXaWRnZXQoKSwgYy5hdHRhY2hFdmVudHMoKSwgYy50cmlnZ2VyKCJyZWFkeSIpLCBjCiAgICAgICAgfSwgdGhpcy5pc1Zpc2libGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGQud2lkZ2V0LmlzKCI6dmlzaWJsZSIpCiAgICAgICAgfSwgdGhpcy5vbiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiB0ID8gcC5lYWNoKHQsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGMub24odCwgdGhpcykKICAgICAgICAgICAgfSkgOiB0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBhW3RdIHx8IChhW3RdID0gW10pLCBhW3RdLnB1c2goZSkKICAgICAgICAgICAgfSksIGMKICAgICAgICB9LCB0aGlzLm9mZiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgaWYgKCFhW3RdKSByZXR1cm4gYzsKICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gZGVsZXRlIGFbdF0sIGM7CiAgICAgICAgICAgIGUgPSBhW3RdLmluZGV4T2YoZSk7CiAgICAgICAgICAgIHJldHVybiAtMSAhPT0gZSAmJiBhW3RdLnNwbGljZShlLCAxKSwgYwogICAgICAgIH0sIHRoaXMucmVmcmVzaFBvc2l0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0LCBlLCBuLCBpLCBvLCBzLCByOwogICAgICAgICAgICB1LnBvc2l0aW9uLmVuYWJsZSAmJiAodCA9IHAuZXh0ZW5kKHt9LCB1LnBvc2l0aW9uKSwgZFt0Lm9mXSAmJiAodC5vZiA9IGRbdC5vZl0pLCB0Lm9mIHx8ICh0Lm9mID0gd2luZG93KSwgdS5pZnJhbWUgJiYgKGUgPSB0KS5teSAmJiAobiA9IC8oWystXVxkKyk/JC8sIGkgPSBkLmlmcmFtZS5vZmZzZXQoKSwgbyA9IGQuaWZyYW1lWzBdLmNvbnRlbnRXaW5kb3csIHMgPSBlLm15LnNwbGl0KCIgIiksIHIgPSBbXSwgMSA9PT0gcy5sZW5ndGggJiYgKC9sZWZ0fHJpZ2h0Ly50ZXN0KHNbMF0pID8gcy5wdXNoKCJjZW50ZXIiKSA6IHMudW5zaGlmdCgiY2VudGVyIikpLCBzLmZvckVhY2goZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgdCA9IHQucmVwbGFjZShuLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSArdCB8fCAwLCB0ID0gMCA8PSAodCArPSBlID8gaS50b3AgLSBvLnNjcm9sbFkgOiBpLmxlZnQgLSBvLnNjcm9sbFgpID8gIisiICsgdCA6IHQKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgci5wdXNoKHQpCiAgICAgICAgICAgIH0pLCBlLm15ID0gci5qb2luKCIgIikpLCBkW3QuZWxlbWVudF0ucG9zaXRpb24odCkpCiAgICAgICAgfSwgdGhpcy5zZXRJRCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGQud2lkZ2V0LmF0dHIoImlkIiwgdCksIGMKICAgICAgICB9LCB0aGlzLnNldEhlYWRlck1lc3NhZ2UgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBjLmdldEVsZW1lbnRzKCJoZWFkZXIiKS5odG1sKHQpLCBjCiAgICAgICAgfSwgdGhpcy5zZXRNZXNzYWdlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gZC5tZXNzYWdlLmh0bWwodCksIGMKICAgICAgICB9LCB0aGlzLnNldFNldHRpbmdzID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4galF1ZXJ5LmlzUGxhaW5PYmplY3QoZSkgPyBwLmV4dGVuZCghMCwgdVt0XSwgZSkgOiB1W3RdID0gZSwgYwogICAgICAgIH0sIHRoaXMuc2hvdyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChsKSwgZC53aWRnZXQuYXBwZW5kVG8oZC5jb250YWluZXIpLmhpZGUoKSwgZSgic2hvdyIsIGFyZ3VtZW50cyksIGMucmVmcmVzaFBvc2l0aW9uKCksIHUuaGlkZS5hdXRvICYmIChsID0gc2V0VGltZW91dChjLmhpZGUsIHUuaGlkZS5hdXRvRGVsYXkpKSwgdCA9IFtkLndpbmRvd10sIGQuaWZyYW1lICYmIHQucHVzaChqUXVlcnkoZC5pZnJhbWVbMF0uY29udGVudFdpbmRvdykpLCB0LmZvckVhY2goZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdS5oaWRlLm9uRXNjS2V5UHJlc3MgJiYgdC5vbigia2V5dXAiLCByKSwgdS5oaWRlLm9uT3V0c2lkZUNsaWNrICYmIHRbMF0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBvLCAhMCksIHUuaGlkZS5vbk91dHNpZGVDb250ZXh0TWVudSAmJiB0WzBdLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgbywgITApLCB1LnBvc2l0aW9uLmF1dG9SZWZyZXNoICYmIHQub24oInJlc2l6ZSIsIGMucmVmcmVzaFBvc2l0aW9uKQogICAgICAgICAgICB9KSwgKHUuaGlkZS5vbkNsaWNrIHx8IHUuaGlkZS5vbkJhY2tncm91bmRDbGljaykgJiYgZC53aWRnZXQub24oImNsaWNrIiwgaSksIHUucHJldmVudFNjcm9sbCAmJiBjLmdldEVsZW1lbnRzKCJib2R5IikuYWRkQ2xhc3ModS5jbGFzc2VzLnByZXZlbnRTY3JvbGwpLCBjLnRyaWdnZXIoInNob3ciKSwgYwogICAgICAgIH0sIHRoaXMudHJpZ2dlciA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgdmFyIGUgPSAib24iICsgdFswXS50b1VwcGVyQ2FzZSgpICsgdC5zbGljZSgxKTsKICAgICAgICAgICAgY1tlXSAmJiBjW2VdKG4pOwogICAgICAgICAgICB0ID0gYVt0XTsKICAgICAgICAgICAgaWYgKHQpIHJldHVybiBwLmVhY2godCwgZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgZS5jYWxsKGMsIG4pCiAgICAgICAgICAgIH0pLCBjCiAgICAgICAgfQogICAgfSwgeS5XaWRnZXQucHJvdG90eXBlLnR5cGVzID0gW10sIHkuV2lkZ2V0LnByb3RvdHlwZS5idWlsZFdpZGdldCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciB0ID0gdGhpcy5nZXRFbGVtZW50cygpLAogICAgICAgICAgICBlID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgIHQud2lkZ2V0LmFwcGVuZCh0LmhlYWRlciwgdC5tZXNzYWdlKSwgdGhpcy5zZXRIZWFkZXJNZXNzYWdlKGUuaGVhZGVyTWVzc2FnZSksIHRoaXMuc2V0TWVzc2FnZShlLm1lc3NhZ2UpLCB0aGlzLmdldFNldHRpbmdzKCJjbG9zZUJ1dHRvbiIpICYmIHQud2lkZ2V0LnByZXBlbmQodC5jbG9zZUJ1dHRvbikKICAgIH0sIHkuV2lkZ2V0LnByb3RvdHlwZS5hdHRhY2hFdmVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgdC5nZXRTZXR0aW5ncygiY2xvc2VCdXR0b24iKSAmJiB0LmdldEVsZW1lbnRzKCJjbG9zZUJ1dHRvbiIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0LmhpZGUoKQogICAgICAgIH0pCiAgICB9LCB5LldpZGdldC5wcm90b3R5cGUuZ2V0RGVmYXVsdFNldHRpbmdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHt9CiAgICB9LCB5LldpZGdldC5wcm90b3R5cGUuZ2V0Q2xvc3VyZU1ldGhvZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gW10KICAgIH0sIHkuV2lkZ2V0LnByb3RvdHlwZS5vbkhpZGUgPSBmdW5jdGlvbigpIHt9LCB5LldpZGdldC5wcm90b3R5cGUub25TaG93ID0gZnVuY3Rpb24oKSB7fSwgeS5XaWRnZXQucHJvdG90eXBlLm9uSW5pdCA9IGZ1bmN0aW9uKCkge30sIHkuV2lkZ2V0LnByb3RvdHlwZS5vblJlYWR5ID0gZnVuY3Rpb24oKSB7fSwgeS53aWRnZXRzVHlwZXMuc2ltcGxlID0geS5XaWRnZXQsIHkuYWRkV2lkZ2V0VHlwZSgiYnV0dG9ucyIsIHsKICAgICAgICBhY3RpdmVLZXlVcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICA5ID09PSB0LndoaWNoICYmIHQucHJldmVudERlZmF1bHQoKSwgdGhpcy5ob3RLZXlzW3Qud2hpY2hdICYmIHRoaXMuaG90S2V5c1t0LndoaWNoXSh0aGlzKQogICAgICAgIH0sCiAgICAgICAgYWN0aXZlS2V5RG93bjogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgIXRoaXMuZm9jdXNlZEJ1dHRvbiB8fCA5ID09PSB0LndoaWNoICYmICh0LnByZXZlbnREZWZhdWx0KCksIGUgPSB0aGlzLmZvY3VzZWRCdXR0b24uaW5kZXgoKSwgdC5zaGlmdEtleSA/IChuID0gZSAtIDEpIDwgMCAmJiAobiA9IHRoaXMuYnV0dG9ucy5sZW5ndGggLSAxKSA6IChuID0gZSArIDEpID49IHRoaXMuYnV0dG9ucy5sZW5ndGggJiYgKG4gPSAwKSwgdGhpcy5mb2N1c2VkQnV0dG9uID0gdGhpcy5idXR0b25zW25dLmZvY3VzKCkpCiAgICAgICAgfSwKICAgICAgICBhZGRCdXR0b246IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgbiA9IGUuZ2V0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgIGkgPSBqUXVlcnkuZXh0ZW5kKG4uYnV0dG9uLCB0KSwKICAgICAgICAgICAgICAgIG8gPSB0LmNsYXNzZXMgPyB0LmNsYXNzZXMgKyAiICIgOiAiIjsKICAgICAgICAgICAgbyArPSBuLmNsYXNzZXMuZ2xvYmFsUHJlZml4ICsgIi1idXR0b24iOwogICAgICAgICAgICBpID0gZS5hZGRFbGVtZW50KHQubmFtZSwgcCgiPCIgKyBpLnRhZyArICI+IikuaHRtbCh0LnRleHQpLCBvKTsKICAgICAgICAgICAgZS5idXR0b25zLnB1c2goaSk7CiAgICAgICAgICAgIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uaGlkZS5vbkJ1dHRvbkNsaWNrICYmIGUuaGlkZSgpLCBwLmlzRnVuY3Rpb24odC5jYWxsYmFjaykgJiYgdC5jYWxsYmFjay5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiBpLm9uKCJjbGljayIsIG8pLCB0LmhvdEtleSAmJiAodGhpcy5ob3RLZXlzW3QuaG90S2V5XSA9IG8pLCB0aGlzLmdldEVsZW1lbnRzKCJidXR0b25zV3JhcHBlciIpLmFwcGVuZChpKSwgdC5mb2N1cyAmJiAodGhpcy5mb2N1c2VkQnV0dG9uID0gaSksIGUKICAgICAgICB9LAogICAgICAgIGJpbmRIb3RLZXlzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50cygid2luZG93Iikub24oewogICAgICAgICAgICAgICAga2V5dXA6IHRoaXMuYWN0aXZlS2V5VXAsCiAgICAgICAgICAgICAgICBrZXlkb3duOiB0aGlzLmFjdGl2ZUtleURvd24KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGJ1aWxkV2lkZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgeS5XaWRnZXQucHJvdG90eXBlLmJ1aWxkV2lkZ2V0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5hZGRFbGVtZW50KCJidXR0b25zV3JhcHBlciIpOwogICAgICAgICAgICB0aGlzLmdldEVsZW1lbnRzKCJ3aWRnZXQiKS5hcHBlbmQodCkKICAgICAgICB9LAogICAgICAgIGdldENsb3N1cmVNZXRob2RzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIFsiYWN0aXZlS2V5VXAiLCAiYWN0aXZlS2V5RG93biJdCiAgICAgICAgfSwKICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgaGlkZTogewogICAgICAgICAgICAgICAgICAgIG9uQnV0dG9uQ2xpY2s6ICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYnV0dG9uOiB7CiAgICAgICAgICAgICAgICAgICAgdGFnOiAiYnV0dG9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBvbkhpZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLnVuYmluZEhvdEtleXMoKQogICAgICAgIH0sCiAgICAgICAgb25Jbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5idXR0b25zID0gW10sIHRoaXMuaG90S2V5cyA9IHt9LCB0aGlzLmZvY3VzZWRCdXR0b24gPSBudWxsCiAgICAgICAgfSwKICAgICAgICBvblNob3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmJpbmRIb3RLZXlzKCksIHRoaXMuZm9jdXNlZEJ1dHRvbiB8fCAodGhpcy5mb2N1c2VkQnV0dG9uID0gdGhpcy5idXR0b25zWzBdKSwgdGhpcy5mb2N1c2VkQnV0dG9uICYmIHRoaXMuZm9jdXNlZEJ1dHRvbi5mb2N1cygpCiAgICAgICAgfSwKICAgICAgICB1bmJpbmRIb3RLZXlzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50cygid2luZG93Iikub2ZmKHsKICAgICAgICAgICAgICAgIGtleXVwOiB0aGlzLmFjdGl2ZUtleVVwLAogICAgICAgICAgICAgICAga2V5ZG93bjogdGhpcy5hY3RpdmVLZXlEb3duCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSksIHkuYWRkV2lkZ2V0VHlwZSgibGlnaHRib3giLCB5LmdldFdpZGdldFR5cGUoImJ1dHRvbnMiKS5leHRlbmQoImxpZ2h0Ym94IiwgewogICAgICAgIGdldERlZmF1bHRTZXR0aW5nczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0geS5nZXRXaWRnZXRUeXBlKCJidXR0b25zIikucHJvdG90eXBlLmdldERlZmF1bHRTZXR0aW5ncy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICByZXR1cm4gcC5leHRlbmQoITAsIHQsIHsKICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogImF1dG8iLAogICAgICAgICAgICAgICAgY29udGVudEhlaWdodDogImF1dG8iLAogICAgICAgICAgICAgICAgcG9zaXRpb246IHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAid2lkZ2V0Q29udGVudCIsCiAgICAgICAgICAgICAgICAgICAgb2Y6ICJ3aWRnZXQiLAogICAgICAgICAgICAgICAgICAgIGF1dG9SZWZyZXNoOiAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgYnVpbGRXaWRnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB5LmdldFdpZGdldFR5cGUoImJ1dHRvbnMiKS5wcm90b3R5cGUuYnVpbGRXaWRnZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmFkZEVsZW1lbnQoIndpZGdldENvbnRlbnQiKSwKICAgICAgICAgICAgICAgIGUgPSB0aGlzLmdldEVsZW1lbnRzKCk7CiAgICAgICAgICAgIHQuYXBwZW5kKGUuaGVhZGVyLCBlLm1lc3NhZ2UsIGUuYnV0dG9uc1dyYXBwZXIpLCBlLndpZGdldC5odG1sKHQpLCBlLmNsb3NlQnV0dG9uICYmIHQucHJlcGVuZChlLmNsb3NlQnV0dG9uKQogICAgICAgIH0sCiAgICAgICAgb25SZWFkeTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5nZXRFbGVtZW50cygpLAogICAgICAgICAgICAgICAgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgImF1dG8iICE9PSBlLmNvbnRlbnRXaWR0aCAmJiB0Lm1lc3NhZ2Uud2lkdGgoZS5jb250ZW50V2lkdGgpLCAiYXV0byIgIT09IGUuY29udGVudEhlaWdodCAmJiB0Lm1lc3NhZ2UuaGVpZ2h0KGUuY29udGVudEhlaWdodCkKICAgICAgICB9CiAgICB9KSksIHkuYWRkV2lkZ2V0VHlwZSgiY29uZmlybSIsIHkuZ2V0V2lkZ2V0VHlwZSgibGlnaHRib3giKS5leHRlbmQoImNvbmZpcm0iLCB7CiAgICAgICAgb25SZWFkeTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHkuZ2V0V2lkZ2V0VHlwZSgibGlnaHRib3giKS5wcm90b3R5cGUub25SZWFkeS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICB2YXIgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoInN0cmluZ3MiKSwKICAgICAgICAgICAgICAgIGUgPSAiY2FuY2VsIiA9PT0gdGhpcy5nZXRTZXR0aW5ncygiZGVmYXVsdE9wdGlvbiIpOwogICAgICAgICAgICB0aGlzLmFkZEJ1dHRvbih7CiAgICAgICAgICAgICAgICBuYW1lOiAiY2FuY2VsIiwKICAgICAgICAgICAgICAgIHRleHQ6IHQuY2FuY2VsLAogICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LnRyaWdnZXIoImNhbmNlbCIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZm9jdXM6IGUKICAgICAgICAgICAgfSksIHRoaXMuYWRkQnV0dG9uKHsKICAgICAgICAgICAgICAgIG5hbWU6ICJvayIsCiAgICAgICAgICAgICAgICB0ZXh0OiB0LmNvbmZpcm0sCiAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHQudHJpZ2dlcigiY29uZmlybSIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZm9jdXM6ICFlCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHkuZ2V0V2lkZ2V0VHlwZSgibGlnaHRib3giKS5wcm90b3R5cGUuZ2V0RGVmYXVsdFNldHRpbmdzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIHJldHVybiB0LnN0cmluZ3MgPSB7CiAgICAgICAgICAgICAgICBjb25maXJtOiAiT0siLAogICAgICAgICAgICAgICAgY2FuY2VsOiAiQ2FuY2VsIgogICAgICAgICAgICB9LCB0LmRlZmF1bHRPcHRpb24gPSAiY2FuY2VsIiwgdAogICAgICAgIH0KICAgIH0pKSwgeS5hZGRXaWRnZXRUeXBlKCJhbGVydCIsIHkuZ2V0V2lkZ2V0VHlwZSgibGlnaHRib3giKS5leHRlbmQoImFsZXJ0IiwgewogICAgICAgIG9uUmVhZHk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB5LmdldFdpZGdldFR5cGUoImxpZ2h0Ym94IikucHJvdG90eXBlLm9uUmVhZHkuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmdldFNldHRpbmdzKCJzdHJpbmdzIik7CiAgICAgICAgICAgIHRoaXMuYWRkQnV0dG9uKHsKICAgICAgICAgICAgICAgIG5hbWU6ICJvayIsCiAgICAgICAgICAgICAgICB0ZXh0OiB0LmNvbmZpcm0sCiAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHQudHJpZ2dlcigiY29uZmlybSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHkuZ2V0V2lkZ2V0VHlwZSgibGlnaHRib3giKS5wcm90b3R5cGUuZ2V0RGVmYXVsdFNldHRpbmdzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIHJldHVybiB0LnN0cmluZ3MgPSB7CiAgICAgICAgICAgICAgICBjb25maXJtOiAiT0siCiAgICAgICAgICAgIH0sIHQKICAgICAgICB9CiAgICB9KSksIHQuRGlhbG9nc01hbmFnZXIgPSB5Cn0oInVuZGVmaW5lZCIgIT0gdHlwZW9mIGpRdWVyeSA/IGpRdWVyeSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHJlcXVpcmUgJiYgcmVxdWlyZSgianF1ZXJ5IiksICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgJiYgdm9pZCAwICE9PSBtb2R1bGUuZXhwb3J0cyA/IG1vZHVsZS5leHBvcnRzIDogd2luZG93KTs="}},"time_used":1294,"timings":{"blocked":1180,"dns":0,"connect":0,"send":0,"wait":114,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/p/jetpack/10.6/css/jetpack.css","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.319Z","timestamp":1785145482319,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /p/jetpack/10.6/css/jetpack.css HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: text/css\r\nvary: Accept-Encoding\r\nlast-modified: Tue, 04 Jan 2022 22:15:08 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","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":87940,"size_decoded":17924,"mime_type":"text/css","magic":"ASCII text, with very long lines (18436)","md5":"b92b5844b5af10ed3c9a9b37fddfce34","sha1":"93092191aa7c8106605d44734fded5662c3f367f","sha256":"1021efafbf9b43acf446f436556222d910e0d86d09d796b6fb16101efedffa22","sha512":"3994ddfe25c181f896359ac0e543fcf574af1b69638121e8f36b3700fab62be6a53dacb87d657798ef8290a8369b810de1e59b54e36acf64c9b5584360d46a7f","ssdeep":"1536:HWN86xfq7GaZQQ88JjC5WZ8I2V9aW0kPQtVucSof7Oztf2J3nQJtQ+n:HWN8Yfq7GaZQQ/JjC5W5VuBof7a2J3n+","tlshash":"8e83a561f3800069da67c735a896b2e8796c9941c7021dddf9e7b62ccbc63e9153eb0c","first_seen":"2023-04-07T01:30:23Z","last_seen":"2026-07-27T09:45:50.861452Z","times_seen":322,"resource_available":false,"data":"LyohCiogRG8gbm90IG1vZGlmeSB0aGlzIGZpbGUgZGlyZWN0bHkuICBJdCBpcyBjb25jYXRlbmF0ZWQgZnJvbSBpbmRpdmlkdWFsIG1vZHVsZSBDU1MgZmlsZXMuCiovCkBmb250LWZhY2V7Zm9udC1mYW1pbHk6c3dpcGVyLWljb25zO3NyYzp1cmwoImRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCBkMDlHUmdBQkFBQUFBQVpnQUJBQUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkdSbFJOQUFBR1JBQUFBQm9BQUFBY2k2cUhrVWRFUlVZQUFBV2dBQUFBSXdBQUFDUUFZQUJYUjFCUFV3QUFCaFFBQUFBdUFBQUFOdUFZNyt4SFUxVkNBQUFGeEFBQUFGQUFBQUJtMmZQY3pVOVRMeklBQUFIY0FBQUFTZ0FBQUdCUDlWNVJZMjFoY0FBQUFrUUFBQUNJQUFBQll0NkYwY0JqZG5RZ0FBQUN6QUFBQUFRQUFBQUVBQkVCUkdkaGMzQUFBQVdZQUFBQUNBQUFBQWovL3dBRFoyeDVaZ0FBQXl3QUFBRE1BQUFEMk1IdHJ5Vm9aV0ZrQUFBQmJBQUFBREFBQUFBMkUyK2VvV2hvWldFQUFBR2NBQUFBSHdBQUFDUUM5Z0R6YUcxMGVBQUFBaWdBQUFBWkFBQUFyZ0prQUJGc2IyTmhBQUFDMEFBQUFGb0FBQUJhRlFBVUdHMWhlSEFBQUFHOEFBQUFId0FBQUNBQWNBQkFibUZ0WlFBQUEvZ0FBQUU1QUFBQ1h2RmRCd2x3YjNOMEFBQUZOQUFBQUdJQUFBQ0U1czc0aFhqYVkyQmtZR0FBWXBmNUh1L2orVzIrTW5Bek1ZREF6YVg2UWpENi80Ly9CeGo1R0E4QXVSd01ZR2tBUHl3TDEzamFZMkJrWUdBODhQOEFneDRqKy84ZlFEWWZBMUFFQldnREFJQjJCT29BZU5wallHUmdZTkJoNEdkZ1lnQUJFTW5JQUJKellOQURDUUFBQ1dnQXNRQjQybU5nWWZ6Q09JR0JsWUdCMFljeGpZR0J3UjFLZjJXUVpHaGhZR0JpWUdWbWdBRkdCaVFRa09hYXd0REFvTUJReFhqZy93RUdQY1lEREE0d05VQTJDQ2d3c0FBQU80RUw2Z0FBZU5wajJNMGd5QUFDcXhnR05XQmtaMkQ0L3dNQSt4a0RkZ0FBQUhqYVkyQmdZR2FBWUJrR1JnWVFpQUh5R01GOEZnWUhJTTNEd01IQUJHUXJNT2d5V0RMRU0xVDkvdzhVQmZFTWdMekUvLy8vUC81Ly9mL1YveHYrcjRlYUFBZU1iQXh3SVVZbUlNSEVnS1lBWWpVY3NEQXdzTEt4YzNCeWNmUHc4akVRQS9nWkJBU0ZoRVZFeGNRbEpLV2taV1RsNUJVVWxaUlZWTlhVTlRRWkJnTUFBTVIrRStnQUVRRkVBQUFBS2dBcUFDb0FOQUErQUVnQVVnQmNBR1lBY0FCNkFJUUFqZ0NZQUtJQXJBQzJBTUFBeWdEVUFONEE2QUR5QVB3QkJnRVFBUm9CSkFFdUFUZ0JRZ0ZNQVZZQllBRnFBWFFCZmdHSUFaSUJuQUdtQWJJQnpnSHNBQUI0MnUyTk1RNkNVQXlHVzU2OHg5QW5lWVlnbTRNSmJoS0ZhRXhJT0FWWDhBcGV3U3Q0QmljNEFmZUFpZDNWT0JpeER4ZlBZRXphNU8rWGZpMDRZQURnZ2lVSVVMQ3VFSks4VmhPNGJTdnBkbmt0SEk1UUNZdGRpMnNsOFpuWGFIbHFVck5LemRLY1Q4Y2pscStyd1pTdklWY3pOaWV6c2ZuUC91em5tZlBGQk5PRE0ySzdNVFE0NVlFQVpxR1A4MUFtR0djRjNpUHFPb3AwcjFTUFRhVGJWa2ZVZTRIWGo5N3dZRSt5TndXWXh3V3U0djF1Z1dIZ28zUzFYZFpFVnFXTTdFVDBjZm5MR3hXZmtnUjQybzJQdldyRE1CU0ZqL0lITGFGMHpLalJnZGlWTXdTY05SQW9XVW9INzhZMmljQi95SVkwOUFuNkFIMkJkdS9VQit5eG9wWXNoUWlFdm52dTBkVVJnRHQ4UWVDOFBEdzdGcGppM2ZFQTR6L1BFSjZZT0I1aEtoNGRqM0V2WGh4UHFIL1NLVVkzcko3c3JaNEZabmgxUE1BdFBod1A2ZmwyUE1KTVBEZ2VRNHJZOFlUNkd6YW8wZUFFQTQwOUR1Z2dtVG5Gbk9jU0NpRWlMTWd4Q2lUSTZDcTVEWlVkM1FtcDEwdk8wTGFMVGQyY2pONGZPdW1sYzdsVVliU1FjWkZrdXRSRzdnNkpLWkt5MFJtZExZNjgwQ0RuRUorVU1rcEZGZTFSTjdueGRWcFhyQzRhVHRuYXVyT25ZZXJjWmcyWVZtTE4vZC9nY3pmRWltckUvZnMvYk91cTI5Wm1uOHRsb09SYVhnWmdHYTc4eU85L2NuWG0yQnBhR3ZxMjVEdjlTNEU5KzVTSWM5UHF1cEpLaFlGU1NsNDcrUWNyMW1ZTkFBQUFlTnB0dzBjS3drQUFBTURaSkE4UTdPVUp2a0xzUGZaNnpGVkVSUHk4cUhoMllFUiszaS9CUDgzdklCTEx5U3NvS2ltcnFLcXBhMmhwNitqcTZSc1lHaG1ibUpxWlN5MHNyYXh0Yk8zc0hSeWRuRU1VNHVSNnl4N0pKWHZlUDdXckR5Y0FBQUFBQUFILy93QUNlTnBqWUdSZ1lPQUJZaGtnWmdKQ1pnWk5Ca1lHTFFadElKc0ZMTVlBQUF3M0FMZ0FlTm9saXpFS2dEQVFCQ2NoUmJDMnNGRVIwWUQ2cVZRaUJDdi9IOWV6R0k2WjVYQkF3OENCSy9tNWlRUVZhdVZiWExuT3JNWnYyb0xkS0ZhOFBqdXJ1MmhKekdhYm1PU0x6Tk16dnV0cEIzTjQybU5nWkdCZzRHS1FZekJoWU14SkxNbGo0R0JnQVlvdy9QL1BBSkpoTE02c1NvV0tmV0NBQXdEQWpnYlJBQUI0Mm1OZ1lHQmtBSUliQ1pvNUlQcm1VbjBoR0EwQU84RUZUUUFBIikgZm9ybWF0KCAnd29mZicgKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9OnJvb3R7LS1zd2lwZXItdGhlbWUtY29sb3I6IzAwN2FmZn0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lcnttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtsaXN0LXN0eWxlOm5vbmU7cGFkZGluZzowO3otaW5kZXg6MX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6MTtkaXNwbGF5OmZsZXg7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm07Ym94LXNpemluZzpjb250ZW50LWJveH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1hbmRyb2lkIC5zd2lwZXItc2xpZGUsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItbXVsdGlyb3c+LnN3aXBlci13cmFwcGVye2ZsZXgtd3JhcDp3cmFwfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLW11bHRpcm93LWNvbHVtbj4uc3dpcGVyLXdyYXBwZXJ7ZmxleC13cmFwOndyYXA7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLWZyZWUtbW9kZT4uc3dpcGVyLXdyYXBwZXJ7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXQ7bWFyZ2luOjAgYXV0b30uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1wb2ludGVyLWV2ZW50c3t0b3VjaC1hY3Rpb246cGFuLXl9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItcG9pbnRlci1ldmVudHMuc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbHt0b3VjaC1hY3Rpb246cGFuLXh9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1zbGlkZXtmbGV4LXNocmluazowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm19LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1zbGlkZS1pbnZpc2libGUtYmxhbmt7dmlzaWJpbGl0eTpoaWRkZW59LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItYXV0b2hlaWdodCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1hdXRvaGVpZ2h0IC5zd2lwZXItc2xpZGV7aGVpZ2h0OmF1dG99LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItYXV0b2hlaWdodCAuc3dpcGVyLXdyYXBwZXJ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSxoZWlnaHR9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItM2R7cGVyc3BlY3RpdmU6MTIwMHB4fS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItY3ViZS1zaGFkb3csLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZSwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci13cmFwcGVye3RyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3B7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjEwfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnR7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCxyZ2JhKDAsMCwwLC41KSxyZ2JhKDAsMCwwLDApKX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodHtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2JhKDAsMCwwLC41KSxyZ2JhKDAsMCwwLDApKX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3B7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gdG9wLHJnYmEoMCwwLDAsLjUpLHJnYmEoMCwwLDAsMCkpfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmdiYSgwLDAsMCwuNSkscmdiYSgwLDAsMCwwKSl9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVye292ZXJmbG93OmF1dG87c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmV9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyOjotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyPi5zd2lwZXItc2xpZGV7c2Nyb2xsLXNuYXAtYWxpZ246c3RhcnQgc3RhcnR9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbC5zd2lwZXItY29udGFpbmVyLWNzcy1tb2RlPi5zd2lwZXItd3JhcHBlcntzY3JvbGwtc25hcC10eXBlOnggbWFuZGF0b3J5fS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLXZlcnRpY2FsLnN3aXBlci1jb250YWluZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVye3Njcm9sbC1zbmFwLXR5cGU6eSBtYW5kYXRvcnl9OnJvb3R7LS1zd2lwZXItbmF2aWdhdGlvbi1zaXplOjQ0cHh9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tbmV4dCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7d2lkdGg6Y2FsYyh2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplKS8gNDQgKiAyNyk7aGVpZ2h0OnZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpO21hcmdpbi10b3A6Y2FsYygwcHggLSAodmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSkvIDIpKTt6LWluZGV4OjEwO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjp2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1jb2xvcix2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24tZGlzYWJsZWQsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWRpc2FibGVke29wYWNpdHk6LjM1O2N1cnNvcjphdXRvO3BvaW50ZXItZXZlbnRzOm5vbmV9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tbmV4dDphZnRlciwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVye2ZvbnQtZmFtaWx5OnN3aXBlci1pY29ucztmb250LXNpemU6dmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7dGV4dC10cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6MDt0ZXh0LXRyYW5zZm9ybTpub25lO2ZvbnQtdmFyaWFudDppbml0aWFsO2xpbmUtaGVpZ2h0OjF9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tcHJldiwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tbmV4dHtsZWZ0OjEwcHg7cmlnaHQ6YXV0b30uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyLC5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVye2NvbnRlbnQ6J3ByZXYnfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItYnV0dG9uLW5leHQsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXZ7cmlnaHQ6MTBweDtsZWZ0OmF1dG99LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tbmV4dDphZnRlciwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tcHJldjphZnRlcntjb250ZW50OiduZXh0J30uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24td2hpdGUsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLXdoaXRley0tc3dpcGVyLW5hdmlnYXRpb24tY29sb3I6I2ZmZmZmZn0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24tYmxhY2ssLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWJsYWNrey0tc3dpcGVyLW5hdmlnYXRpb24tY29sb3I6IzAwMDAwMH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1sb2Nre2Rpc3BsYXk6bm9uZX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXBhZ2luYXRpb257cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjouM3Mgb3BhY2l0eTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3otaW5kZXg6MTB9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1wYWdpbmF0aW9uLnN3aXBlci1wYWdpbmF0aW9uLWhpZGRlbntvcGFjaXR5OjB9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cywuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLC5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbntib3R0b206MTBweDtsZWZ0OjA7d2lkdGg6MTAwJX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWlje292ZXJmbG93OmhpZGRlbjtmb250LXNpemU6MH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7dHJhbnNmb3JtOnNjYWxlKC4zMyk7cG9zaXRpb246cmVsYXRpdmV9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZXt0cmFuc2Zvcm06c2NhbGUoMSl9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1tYWlue3RyYW5zZm9ybTpzY2FsZSgxKX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLXByZXZ7dHJhbnNmb3JtOnNjYWxlKC42Nil9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1wcmV2LXByZXZ7dHJhbnNmb3JtOnNjYWxlKC4zMyl9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1uZXh0e3RyYW5zZm9ybTpzY2FsZSguNjYpfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtbmV4dC1uZXh0e3RyYW5zZm9ybTpzY2FsZSguMzMpfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7d2lkdGg6OHB4O2hlaWdodDo4cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojMDAwO29wYWNpdHk6LjJ9LmpwLWNhcm91c2VsLW92ZXJsYXkgYnV0dG9uLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHtib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym94LXNoYWRvdzpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXBhZ2luYXRpb24tY2xpY2thYmxlIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7Y3Vyc29yOnBvaW50ZXJ9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmV7b3BhY2l0eToxO2JhY2tncm91bmQ6dmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tY29sb3IsdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSl9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHN7cmlnaHQ6MTBweDt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC01MCUsMCl9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHttYXJnaW46NnB4IDA7ZGlzcGxheTpibG9ja30uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWN7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt3aWR0aDo4cHh9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7dHJhbnNpdGlvbjouMnMgdHJhbnNmb3JtLC4ycyB0b3B9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0e21hcmdpbjowIDRweH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pY3tsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt3aGl0ZS1zcGFjZTpub3dyYXB9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHt0cmFuc2l0aW9uOi4ycyB0cmFuc2Zvcm0sLjJzIGxlZnR9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbC5zd2lwZXItY29udGFpbmVyLXJ0bD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7dHJhbnNpdGlvbjouMnMgdHJhbnNmb3JtLC4ycyByaWdodH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yNSk7cG9zaXRpb246YWJzb2x1dGV9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxse2JhY2tncm91bmQ6dmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tY29sb3IsdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dHJhbnNmb3JtOnNjYWxlKDApO3RyYW5zZm9ybS1vcmlnaW46bGVmdCB0b3B9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXItcnRsIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0IHRvcH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGV7d2lkdGg6MTAwJTtoZWlnaHQ6NHB4O2xlZnQ6MDt0b3A6MH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXJ7d2lkdGg6NHB4O2hlaWdodDoxMDAlO2xlZnQ6MDt0b3A6MH0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXBhZ2luYXRpb24td2hpdGV7LS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvcjojZmZmZmZmfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItcGFnaW5hdGlvbi1ibGFja3stLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yOiMwMDAwMDB9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1wYWdpbmF0aW9uLWxvY2t7ZGlzcGxheTpub25lfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItem9vbS1jb250YWluZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXJ9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci16b29tLWNvbnRhaW5lcj5jYW52YXMsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci16b29tLWNvbnRhaW5lcj5pbWcsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci16b29tLWNvbnRhaW5lcj5zdmd7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlOy1vLW9iamVjdC1maXQ6Y29udGFpbjtvYmplY3QtZml0OmNvbnRhaW59LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1zbGlkZS16b29tZWR7Y3Vyc29yOm1vdmV9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1ub3RpZmljYXRpb257cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowO3otaW5kZXg6LTEwMDB9Cjpyb290ey0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcjojZmZmOy0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3I6Izk5OTstLWpwLWNhcm91c2VsLWJnLWNvbG9yOiMwMDA7LS1qcC1jYXJvdXNlbC1iZy1mYWRlZC1jb2xvcjojMjIyOy0tanAtY2Fyb3VzZWwtYm9yZGVyLWNvbG9yOiMzYTNhM2F9OnJvb3QgLmpwLWNhcm91c2VsLWxpZ2h0ey0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcjojMDAwOy0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3I6IzY0Njk3MDstLWpwLWNhcm91c2VsLWJnLWNvbG9yOiNmZmY7LS1qcC1jYXJvdXNlbC1iZy1mYWRlZC1jb2xvcjojZmJmYmZiOy0tanAtY2Fyb3VzZWwtYm9yZGVyLWNvbG9yOiNkY2RjZGV9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tbmV4dCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1wcmV2LC5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0LC5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2e2JhY2tncm91bmQtaW1hZ2U6bm9uZX1bZGF0YS1jYXJvdXNlbC1leHRyYV06bm90KC5qcC1jYXJvdXNlbC13cmFwKSBpbWcsW2RhdGEtY2Fyb3VzZWwtZXh0cmFdOm5vdCguanAtY2Fyb3VzZWwtd3JhcCkgaW1nK2ZpZ2NhcHRpb257Y3Vyc29yOnBvaW50ZXJ9LmpwLWNhcm91c2VsLXdyYXAgKntsaW5lLWhlaWdodDppbmhlcml0fS5qcC1jYXJvdXNlbC13cmFwLnN3aXBlci1jb250YWluZXJ7aGVpZ2h0OmF1dG87d2lkdGg6MTAwdnd9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci16b29tLWNvbnRhaW5lcntiYWNrZ3JvdW5kLXNpemU6MjAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXJ9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1zbGlkZS5zd2lwZXItc2xpZGUtbmV4dCAuc3dpcGVyLXpvb20tY29udGFpbmVyIGltZywuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLXNsaWRlLnN3aXBlci1zbGlkZS1wcmV2IC5zd2lwZXItem9vbS1jb250YWluZXIgaW1ne3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tbmV4dCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1wcmV2e29wYWNpdHk6LjU7dHJhbnNpdGlvbjouNXMgb3BhY2l0eSBlYXNlLW91dDtoZWlnaHQ6aW5pdGlhbDt3aWR0aDppbml0aWFsO3BhZGRpbmc6MjBweCA0MHB4O2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWJ1dHRvbi1uZXh0OmhvdmVyLC5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItYnV0dG9uLXByZXY6aG92ZXJ7b3BhY2l0eToxfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tcHJldjphZnRlciwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tbmV4dDphZnRlciwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tcHJldjphZnRlcntjb250ZW50Om5vbmV9LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tbmV4dCBzdmcsLmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1idXR0b24tcHJldiBzdmd7aGVpZ2h0OjMwcHg7d2lkdGg6MjhweDtiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLWJnLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweH0uanAtY2Fyb3VzZWwtb3ZlcmxheXtmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLHNhbnMtc2VyaWYhaW1wb3J0YW50O3otaW5kZXg6MjE0NzQ4MzY0NztvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87ZGlyZWN0aW9uOmx0cjtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLWJnLWNvbG9yKX0uanAtY2Fyb3VzZWwtb3ZlcmxheSAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH0uanAtY2Fyb3VzZWwtb3ZlcmxheSBoMTpiZWZvcmUsLmpwLWNhcm91c2VsLW92ZXJsYXkgaDI6YmVmb3JlLC5qcC1jYXJvdXNlbC1vdmVybGF5IGgzOmJlZm9yZXtjb250ZW50Om5vbmU7ZGlzcGxheTpub25lfS5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyIC5zd2lwZXItYnV0dG9uLXByZXZ7bGVmdDowO3JpZ2h0OmF1dG99LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1idXR0b24tbmV4dHtyaWdodDowO2xlZnQ6YXV0b30uanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lci5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0LC5qcC1jYXJvdXNlbC1vdmVybGF5IC5zd2lwZXItY29udGFpbmVyLnN3aXBlci1jb250YWluZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXZ7dHJhbnNmb3JtOnNjYWxlWCgtMSl9LmpwLWNhcm91c2VsLWNvbnRhaW5lcntkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1yb3dzOjFmciA2NHB4O2hlaWdodDoxMDAlfS5qcC1jYXJvdXNlbC1oaWRlLWNvbnRyb2xzIC5qcC1jYXJvdXNlbC1jb250YWluZXJ7Z3JpZC10ZW1wbGF0ZS1yb3dzOjFmcn0uanAtY2Fyb3VzZWwtaGlkZS1jb250cm9scyAuc3dpcGVyLXdyYXBwZXJ7bWFyZ2luLXRvcDotMzJweH0uanAtY2Fyb3VzZWwtaGlkZS1jb250cm9scyAuanAtc3dpcGVyLWJ1dHRvbi1uZXh0LC5qcC1jYXJvdXNlbC1oaWRlLWNvbnRyb2xzIC5qcC1zd2lwZXItYnV0dG9uLXByZXZ7bWFyZ2luLXRvcDotNTRweH0uanAtY2Fyb3VzZWwtbXNne2ZvbnQtZmFtaWx5OidPcGVuIFNhbnMnLHNhbnMtc2VyaWY7Zm9udC1zdHlsZTpub3JtYWw7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MTlweDtwYWRkaW5nOjExcHggMTVweDtmb250LXNpemU6MTRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MjVweCAyMHB4IDAgMnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcik7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkICNmZmJhMDA7Ym94LXNoYWRvdzowIDFweCAxcHggMCByZ2JhKDAsMCwwLC4xKX0uanAtY2Fyb3VzZWwtaW5mb3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7LXdlYmtpdC1mb250LXNtb290aGluZzpzdWJwaXhlbC1hbnRpYWxpYXNlZCFpbXBvcnRhbnQ7ei1pbmRleDoxMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1iZy1jb2xvcik7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLW91dDtvcGFjaXR5OjF9LmpwLWNhcm91c2VsLWhpZGUtY29udHJvbHMgLmpwLWNhcm91c2VsLWluZm97dmlzaWJpbGl0eTpoaWRkZW47aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVufS5qcC1jYXJvdXNlbC1pbmZvLWZvb3Rlcntwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWpwLWNhcm91c2VsLWJnLWNvbG9yKTtoZWlnaHQ6NjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3dpZHRoOjEwMHZ3fS5qcC1jYXJvdXNlbC1pbmZvLWV4dHJhe2Rpc3BsYXk6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWpwLWNhcm91c2VsLWJnLWNvbG9yKTtwYWRkaW5nOjM1cHg7d2lkdGg6MTAwdnc7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tanAtY2Fyb3VzZWwtYmctZmFkZWQtY29sb3IpfS5qcC1jYXJvdXNlbC10aXRsZS1hbmQtY2FwdGlvbnttYXJnaW4tYm90dG9tOjE1cHh9LmpwLWNhcm91c2VsLWluZm8tZXh0cmEuanAtY2Fyb3VzZWwtc2hvd3tkaXNwbGF5OmJsb2NrfS5qcC1jYXJvdXNlbC1pbmZvIDo6c2VsZWN0aW9ue2JhY2tncm91bmQ6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcil9LmpwLWNhcm91c2VsLWluZm8gOjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktY29sb3IpO2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktY29sb3IpfS5qcC1jYXJvdXNlbC1waG90by1pbmZve2xlZnQ6MCFpbXBvcnRhbnQ7d2lkdGg6MTAwJSFpbXBvcnRhbnR9LmpwLWNhcm91c2VsLWNvbW1lbnRzLXdyYXBwZXJ7cGFkZGluZzowO3dpZHRoOjEwMCUhaW1wb3J0YW50O2Rpc3BsYXk6bm9uZX0uanAtY2Fyb3VzZWwtY29tbWVudHMtd3JhcHBlci5qcC1jYXJvdXNlbC1zaG93e2Rpc3BsYXk6YmxvY2t9LmpwLWNhcm91c2VsLWNvbW1lbnRzLXdyYXBwZXI+LmpwLWNhcm91c2VsLXBob3RvLWluZm97ZGlzcGxheTpub25lfS5qcC1jYXJvdXNlbC10cmFuc2l0aW9ucyAuanAtY2Fyb3VzZWwtcGhvdG8taW5mb3t0cmFuc2l0aW9uOi40cyBlYXNlLW91dH0uanAtY2Fyb3VzZWwtYnV0dG9uc3ttYXJnaW46LTE4cHggLTIwcHggMTVweDtwYWRkaW5nOjhweCAxMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMyMjI7YmFja2dyb3VuZDojMjIyO3RleHQtYWxpZ246Y2VudGVyfWRpdi5qcC1jYXJvdXNlbC1idXR0b25zIGF7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktc3VidGxlLWNvbG9yKTtmb250Om5vcm1hbCAxMXB4LzEuMmVtICdIZWx2ZXRpY2EgTmV1ZScsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6MCFpbXBvcnRhbnQ7cGFkZGluZzo1cHggMnB4IDVweCAwO3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDt0ZXh0LXNoYWRvdzpub25lIWltcG9ydGFudDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LXdlYmtpdC1mb250LXNtb290aGluZzpzdWJwaXhlbC1hbnRpYWxpYXNlZH1kaXYuanAtY2Fyb3VzZWwtYnV0dG9ucyBhOmhvdmVye2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktY29sb3IpO2JvcmRlcjpub25lIWltcG9ydGFudH0uanAtY2Fyb3VzZWwtdHJhbnNpdGlvbnMgZGl2LmpwLWNhcm91c2VsLWJ1dHRvbnMgYTpob3Zlcnt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fS5qcC1jYXJvdXNlbC1zbGlkZSwuanAtY2Fyb3VzZWwtc2xpZGUgaW1ne3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9LmpwLWNhcm91c2VsLWNsb3NlLWhpbnR7Y3Vyc29yOmRlZmF1bHQ7bGV0dGVyLXNwYWNpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246Zml4ZWQ7dG9wOjIwcHg7cmlnaHQ6MzBweDtwYWRkaW5nOjEwcHg7dGV4dC1hbGlnbjpyaWdodDt3aWR0aDo0NXB4O2hlaWdodDo0NXB4O3otaW5kZXg6MTU7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcik7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLW91dH0uanAtY2Fyb3VzZWwtdHJhbnNpdGlvbnMgLmpwLWNhcm91c2VsLWNsb3NlLWhpbnR7dHJhbnNpdGlvbjpjb2xvciAuMnMgbGluZWFyfS5qcC1jYXJvdXNlbC1jbG9zZS1oaW50IHN2Z3twYWRkaW5nOjNweCAycHg7YmFja2dyb3VuZDp2YXIoLS1qcC1jYXJvdXNlbC1iZy1jb2xvcik7Ym9yZGVyLXJhZGl1czo0cHh9LmpwLWNhcm91c2VsLWNsb3NlLWhpbnQ6aG92ZXJ7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcil9LmpwLWNhcm91c2VsLWNsb3NlLWhpbnQ6aG92ZXIgc3Bhbntib3JkZXItY29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcil9LmpwLWNhcm91c2VsLXBhZ2luYXRpb24tY29udGFpbmVye2ZsZXg6MTttYXJnaW46MCAxNXB4IDAgMzVweH0uanAtY2Fyb3VzZWwtcGFnaW5hdGlvbiwuanAtc3dpcGVyLXBhZ2luYXRpb257Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcik7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwO3doaXRlLXNwYWNlOm5vd3JhcDtkaXNwbGF5Om5vbmU7cG9zaXRpb246c3RhdGljIWltcG9ydGFudH0uanAtY2Fyb3VzZWwtcGFnaW5hdGlvbi1jb250YWluZXIgLnN3aXBlci1wYWdpbmF0aW9ue3RleHQtYWxpZ246bGVmdDtsaW5lLWhlaWdodDo4cHh9LmpwLWNhcm91c2VsLXBhZ2luYXRpb257cGFkZGluZy1sZWZ0OjVweH0uanAtc3dpcGVyLXBhZ2luYXRpb24gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHtiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktc3VidGxlLWNvbG9yKTttYXJnaW46MCA5cHh9LmpwLXN3aXBlci1wYWdpbmF0aW9uIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktY29sb3IpfS5qcC1zd2lwZXItcGFnaW5hdGlvbiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0Om5vdCguc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZSl7YmFja2dyb3VuZDp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LWNvbG9yKTtvcGFjaXR5Oi41fS5qcC1jYXJvdXNlbC1pbmZvLWZvb3RlciAuanAtY2Fyb3VzZWwtcGhvdG8tdGl0bGUtY29udGFpbmVye2ZsZXgtYmFzaXM6NTB2dztmbGV4OjQ7anVzdGlmeS1jb250ZW50OmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjB9LmpwLWNhcm91c2VsLXBob3RvLWNhcHRpb24sLmpwLWNhcm91c2VsLXBob3RvLXRpdGxle2JhY2tncm91bmQ6MCAwIWltcG9ydGFudDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udDpub3JtYWwgMjBweC8xLjNlbSAnSGVsdmV0aWNhIE5ldWUnLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6bm9ybWFsO2xldHRlci1zcGFjaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIDAgMTBweCAwO3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW47dGV4dC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnQ7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcil9LmpwLWNhcm91c2VsLWluZm8tZm9vdGVyIC5qcC1jYXJvdXNlbC1waG90by1jYXB0aW9ue3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNXB4O3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LXN1YnRsZS1jb2xvcik7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOjA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uanAtY2Fyb3VzZWwtaW5mby1mb290ZXIgLmpwLWNhcm91c2VsLXBob3RvLWNhcHRpb24gcHttYXJnaW46MH0uanAtY2Fyb3VzZWwtcGhvdG8tdGl0bGV7Zm9udC1zaXplOjMycHg7bWFyZ2luLWJvdHRvbToycHh9LmpwLWNhcm91c2VsLXBob3RvLWRlc2NyaXB0aW9ue2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktc3VidGxlLWNvbG9yKTtmb250LXNpemU6MTZweDttYXJnaW46MjVweCAwO3dpZHRoOjEwMCV9LmpwLWNhcm91c2VsLXBob3RvLWRlc2NyaXB0aW9ue292ZXJmbG93OmhpZGRlbjtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmpwLWNhcm91c2VsLXBob3RvLWRlc2NyaXB0aW9uIHB7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3IpO2xpbmUtaGVpZ2h0OjEuNDttYXJnaW4tYm90dG9tOjB9LmpwLWNhcm91c2VsLWNvbW1lbnRzIHAgYSwuanAtY2Fyb3VzZWwtaW5mbyBoMiBhLC5qcC1jYXJvdXNlbC1waG90by1kZXNjcmlwdGlvbiBwIGF7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcikhaW1wb3J0YW50O2JvcmRlcjpub25lIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIWltcG9ydGFudDtmb250LXdlaWdodDo0MDAhaW1wb3J0YW50O2ZvbnQtc3R5bGU6bm9ybWFsIWltcG9ydGFudH0uanAtY2Fyb3VzZWwtcGhvdG8tZGVzY3JpcHRpb24gcCBiLC5qcC1jYXJvdXNlbC1waG90by1kZXNjcmlwdGlvbiBwIHN0cm9uZ3tmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3IpfS5qcC1jYXJvdXNlbC1waG90by1kZXNjcmlwdGlvbiBwIGVtLC5qcC1jYXJvdXNlbC1waG90by1kZXNjcmlwdGlvbiBwIGl7Zm9udC1zdHlsZTppdGFsaWM7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3IpfS5qcC1jYXJvdXNlbC1jb21tZW50cyBwIGE6aG92ZXIsLmpwLWNhcm91c2VsLWluZm8gaDIgYTpob3ZlciwuanAtY2Fyb3VzZWwtcGhvdG8tZGVzY3JpcHRpb24gcCBhOmhvdmVye2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktc3VidGxlLWNvbG9yKSFpbXBvcnRhbnR9LmpwLWNhcm91c2VsLXBob3RvLWRlc2NyaXB0aW9uIHA6ZW1wdHl7ZGlzcGxheTpub25lfS5qcC1jYXJvdXNlbC1jb21tZW50cy13cmFwcGVyIGgxOmFmdGVyLC5qcC1jYXJvdXNlbC1jb21tZW50cy13cmFwcGVyIGgxOmJlZm9yZSwuanAtY2Fyb3VzZWwtcGhvdG8taW5mbyBoMTphZnRlciwuanAtY2Fyb3VzZWwtcGhvdG8taW5mbyBoMTpiZWZvcmV7Y29udGVudDpub25lIWltcG9ydGFudH0uanAtY2Fyb3VzZWwtY2FwdGlvbntmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7bWFyZ2luOjB9LmpwLWNhcm91c2VsLWltYWdlLW1ldGF7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcik7Zm9udC1zaXplOjEzcHg7Zm9udDoxMnB4LzEuNCAnSGVsdmV0aWNhIE5ldWUnLHNhbnMtc2VyaWYhaW1wb3J0YW50O3dpZHRoOjEwMCU7ZGlzcGxheTpub25lfS5qcC1jYXJvdXNlbC1pbWFnZS1tZXRhLmpwLWNhcm91c2VsLXNob3d7ZGlzcGxheTpibG9ja30uanAtY2Fyb3VzZWwtaW1hZ2UtbWV0YSBoNSwuanAtY2Fyb3VzZWwtaW1hZ2UtbWV0YSBsaXtmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLHNhbnMtc2VyaWYhaW1wb3J0YW50O3Bvc2l0aW9uOmluaGVyaXQhaW1wb3J0YW50O3RvcDphdXRvIWltcG9ydGFudDtyaWdodDphdXRvIWltcG9ydGFudDtsZWZ0OmF1dG8haW1wb3J0YW50O2JvdHRvbTphdXRvIWltcG9ydGFudDtiYWNrZ3JvdW5kOjAgMCFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjQwMCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zZW0haW1wb3J0YW50fS5qcC1jYXJvdXNlbC1pbWFnZS1tZXRhIHVse21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O2xpc3Qtc3R5bGU6bm9uZSFpbXBvcnRhbnR9LmpwLWNhcm91c2VsLWltYWdlLW1ldGEgbGl7d2lkdGg6NDglIWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnQ7dmVydGljYWwtYWxpZ246dG9wIWltcG9ydGFudDttYXJnaW46MCAyJSAxNXB4IDAhaW1wb3J0YW50O2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktY29sb3IpIWltcG9ydGFudDtmb250LXNpemU6MTNweCFpbXBvcnRhbnR9LmpwLWNhcm91c2VsLWltYWdlLW1ldGEgaDV7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3IpIWltcG9ydGFudDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMHB4IWltcG9ydGFudDttYXJnaW46MCAwIDJweCFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjFlbSFpbXBvcnRhbnR9YS5qcC1jYXJvdXNlbC1pbWFnZS1kb3dubG9hZHtkaXNwbGF5OmlubGluZS1ibG9jaztjbGVhcjpib3RoO2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktc3VidGxlLWNvbG9yKTtsaW5lLWhlaWdodDoxO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweDt0ZXh0LWRlY29yYXRpb246bm9uZX1hLmpwLWNhcm91c2VsLWltYWdlLWRvd25sb2FkIHN2Z3tkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjAgM3B4O3BhZGRpbmctYm90dG9tOjJweH1hLmpwLWNhcm91c2VsLWltYWdlLWRvd25sb2FkIHNwYW4ucGhvdG8tc2l6ZXtmb250LXNpemU6MTFweDtib3JkZXItcmFkaXVzOjFlbTttYXJnaW4tbGVmdDoycHg7ZGlzcGxheTppbmxpbmUtYmxvY2t9YS5qcC1jYXJvdXNlbC1pbWFnZS1kb3dubG9hZCBzcGFuLnBob3RvLXNpemUtdGltZXN7cGFkZGluZzowIDFweCAwIDJweH0uanAtY2Fyb3VzZWwtY29tbWVudHN7Zm9udDoxNXB4LzEuNyAnSGVsdmV0aWNhIE5ldWUnLHNhbnMtc2VyaWYhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjQwMDtiYWNrZ3JvdW5kOm5vbmUgdHJhbnNwYXJlbnQ7d2lkdGg6MTAwJTtib3R0b206MTBweDttYXJnaW4tdG9wOjIwcHh9LmpwLWNhcm91c2VsLWNvbW1lbnRzIHAgYTphY3RpdmUsLmpwLWNhcm91c2VsLWNvbW1lbnRzIHAgYTpmb2N1cywuanAtY2Fyb3VzZWwtY29tbWVudHMgcCBhOmhvdmVye2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktY29sb3IpIWltcG9ydGFudH0uanAtY2Fyb3VzZWwtY29tbWVudHtiYWNrZ3JvdW5kOm5vbmUgdHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3IpO292ZXJmbG93OmF1dG87d2lkdGg6MTAwJTtkaXNwbGF5OmZsZXh9LmpwLWNhcm91c2VsLWNvbW1lbnQrLmpwLWNhcm91c2VsLWNvbW1lbnR7bWFyZ2luLXRvcDoyMHB4fS5qcC1jYXJvdXNlbC1jb21tZW50Omxhc3Qtb2YtdHlwZXttYXJnaW4tYm90dG9tOjIwcHh9LmpwLWNhcm91c2VsLWNvbW1lbnQgcHtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LXN1YnRsZS1jb2xvcikhaW1wb3J0YW50fS5qcC1jYXJvdXNlbC1jb21tZW50IC5jb21tZW50LWF1dGhvcntmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1MDA7cGFkZGluZzowO3dpZHRoOmF1dG87ZGlzcGxheTppbmxpbmU7ZmxvYXQ6bm9uZTtib3JkZXI6bm9uZTttYXJnaW46MH0uanAtY2Fyb3VzZWwtY29tbWVudCAuY29tbWVudC1hdXRob3IgYXtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LWNvbG9yKX0uanAtY2Fyb3VzZWwtY29tbWVudCAuY29tbWVudC1ncmF2YXRhcntmbG9hdDpub25lO21hcmdpbi1yaWdodDoxMHB4fS5qcC1jYXJvdXNlbC1jb21tZW50IC5jb21tZW50LWNvbnRlbnR7Ym9yZGVyOm5vbmU7cGFkZGluZzowfS5qcC1jYXJvdXNlbC1jb21tZW50IC5hdmF0YXJ7bWFyZ2luOjA7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7bWluLXdpZHRoOjY0cHg7bWluLWhlaWdodDo2NHB4O3dpZHRoOjY0cHg7aGVpZ2h0OjY0cHh9LmpwLWNhcm91c2VsLWNvbW1lbnQgLmNvbW1lbnQtZGF0ZXtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LXN1YnRsZS1jb2xvcik7Zm9udC1zaXplOjExcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tanAtY2Fyb3VzZWwtYmctZmFkZWQtY29sb3IpO21hcmdpbi1ib3R0b206NnB4fSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm17bWFyZ2luOjAgMCAxMHB4IWltcG9ydGFudDt3aWR0aDoxMDAlfSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0uanAtY2Fyb3VzZWwtaXMtZGlzYWJsZWR7b3BhY2l0eTouNTtwb2ludGVyLWV2ZW50czpub25lfXRleHRhcmVhI2pwLWNhcm91c2VsLWNvbW1lbnQtZm9ybS1jb21tZW50LWZpZWxke2JhY2tncm91bmQ6dmFyKC0tanAtY2Fyb3VzZWwtYmctZmFkZWQtY29sb3IpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tanAtY2Fyb3VzZWwtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LXN1YnRsZS1jb2xvcik7Zm9udDoxNnB4LzEuNCAnSGVsdmV0aWNhIE5ldWUnLHNhbnMtc2VyaWYhaW1wb3J0YW50O3dpZHRoOjEwMCU7cGFkZGluZzoxMHB4IDEwcHggNXB4O21hcmdpbjowO2Zsb2F0Om5vbmU7aGVpZ2h0OjE0N3B4O2JveC1zaGFkb3c6aW5zZXQgMnB4IDJweCAycHggcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czozcHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaXppbmc6Ym9yZGVyLWJveH10ZXh0YXJlYSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0tY29tbWVudC1maWVsZDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojNTU1fXRleHRhcmVhI2pwLWNhcm91c2VsLWNvbW1lbnQtZm9ybS1jb21tZW50LWZpZWxkOmZvY3Vze2JhY2tncm91bmQ6dmFyKC0tanAtY2Fyb3VzZWwtYmctZmFkZWQtY29sb3IpO2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktc3VidGxlLWNvbG9yKX10ZXh0YXJlYSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0tY29tbWVudC1maWVsZDpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LXN1YnRsZS1jb2xvcil9I2pwLWNhcm91c2VsLWxvYWRpbmctb3ZlcmxheXtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjB9I2pwLWNhcm91c2VsLWxvYWRpbmctd3JhcHBlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7aGVpZ2h0OjEwMHZoO3dpZHRoOjEwMHZ3fSNqcC1jYXJvdXNlbC1saWJyYXJ5LWxvYWRpbmcsI2pwLWNhcm91c2VsLWxpYnJhcnktbG9hZGluZzphZnRlcntib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4fSNqcC1jYXJvdXNlbC1saWJyYXJ5LWxvYWRpbmd7ZmxvYXQ6bGVmdDttYXJnaW46MjJweCAwIDAgMTBweDtmb250LXNpemU6MTBweDtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWluZGVudDotOTk5OWVtO2JvcmRlci10b3A6OHB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjIpO2JvcmRlci1yaWdodDo4cHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMik7Ym9yZGVyLWJvdHRvbTo4cHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMik7Ym9yZGVyLWxlZnQ6OHB4IHNvbGlkIHZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO2FuaW1hdGlvbjpsb2FkOCAxLjFzIGluZmluaXRlIGxpbmVhcn0janAtY2Fyb3VzZWwtY29tbWVudC1mb3JtLXNwaW5uZXIsI2pwLWNhcm91c2VsLWNvbW1lbnQtZm9ybS1zcGlubmVyOmFmdGVye2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHh9I2pwLWNhcm91c2VsLWNvbW1lbnQtZm9ybS1zcGlubmVye2Rpc3BsYXk6bm9uZTtmbG9hdDpsZWZ0O21hcmdpbjoyMnB4IDAgMCAxMHB4O2ZvbnQtc2l6ZToxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3RleHQtaW5kZW50Oi05OTk5ZW07Ym9yZGVyLXRvcDo0cHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMik7Ym9yZGVyLXJpZ2h0OjRweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4yKTtib3JkZXItYm90dG9tOjRweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4yKTtib3JkZXItbGVmdDo0cHggc29saWQgdmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7YW5pbWF0aW9uOmxvYWQ4IDEuMXMgaW5maW5pdGUgbGluZWFyO21hcmdpbjowIGF1dG87dG9wOmNhbGMoNTAlIC0gMTVweCk7bGVmdDowO2JvdHRvbTowO3JpZ2h0OjB9QGtleWZyYW1lcyBsb2FkOHswJXt0cmFuc2Zvcm06cm90YXRlKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX0uanAtY2Fyb3VzZWwtaW5mby1jb250ZW50LXdyYXBwZXJ7bWF4LXdpZHRoOjgwMHB4O21hcmdpbjphdXRvfSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0tc3VibWl0LWFuZC1pbmZvLXdyYXBwZXJ7ZGlzcGxheTpub25lO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlfSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0tY29tbWVudGluZy1hcyBpbnB1dHtiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLWJnLWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWpwLWNhcm91c2VsLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3IpO2ZvbnQ6MTZweC8xLjQgJ0hlbHZldGljYSBOZXVlJyxzYW5zLXNlcmlmIWltcG9ydGFudDtwYWRkaW5nOjEwcHg7ZmxvYXQ6bGVmdDtib3gtc2hhZG93Omluc2V0IDJweCAycHggMnB4IHJnYmEoMCwwLDAsLjIpO2JvcmRlci1yYWRpdXM6MnB4O3dpZHRoOjI4NXB4fSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0tY29tbWVudGluZy1hcyBpbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLWJnLWZhZGVkLWNvbG9yKTtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LXN1YnRsZS1jb2xvcil9I2pwLWNhcm91c2VsLWNvbW1lbnQtZm9ybS1jb21tZW50aW5nLWFzIHB7Zm9udDo0MDAgMTNweC8xLjcgJ0hlbHZldGljYSBOZXVlJyxzYW5zLXNlcmlmIWltcG9ydGFudDttYXJnaW46MjJweCAwIDA7ZmxvYXQ6bGVmdH0janAtY2Fyb3VzZWwtY29tbWVudC1mb3JtLWNvbW1lbnRpbmctYXMgZmllbGRzZXR7ZmxvYXQ6bGVmdDtib3JkZXI6bm9uZTttYXJnaW46MjBweCAwIDAgMDtwYWRkaW5nOjA7Y2xlYXI6Ym90aH0janAtY2Fyb3VzZWwtY29tbWVudC1mb3JtLWNvbW1lbnRpbmctYXMgbGFiZWx7Zm9udDo0MDAgMTNweC8xLjcgJ0hlbHZldGljYSBOZXVlJyxzYW5zLXNlcmlmIWltcG9ydGFudDttYXJnaW46MCAyMHB4IDNweCAwO2Zsb2F0OmxlZnQ7d2lkdGg6MTAwcHh9I2pwLWNhcm91c2VsLWNvbW1lbnQtZm9ybS1idXR0b24tc3VibWl0e21hcmdpbi10b3A6MjBweDttYXJnaW4tbGVmdDphdXRvO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOnNvbGlkIDFweCB2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLWJnLWNvbG9yKTtib3JkZXItcmFkaXVzOjNweDtwYWRkaW5nOjhweCAxNnB4O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWpwLWNhcm91c2VsLXByaW1hcnktY29sb3IpfSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0tYnV0dG9uLXN1Ym1pdDphY3RpdmUsI2pwLWNhcm91c2VsLWNvbW1lbnQtZm9ybS1idXR0b24tc3VibWl0OmZvY3Vze2JhY2tncm91bmQ6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtYmctY29sb3IpfSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0tY29udGFpbmVye21hcmdpbi1ib3R0b206MTVweDt3aWR0aDoxMDAlO21hcmdpbi10b3A6MjBweDtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LXN1YnRsZS1jb2xvcik7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufSNqcC1jYXJvdXNlbC1jb21tZW50LXBvc3QtcmVzdWx0c3tkaXNwbGF5Om5vbmU7b3ZlcmZsb3c6YXV0bzt3aWR0aDoxMDAlfSNqcC1jYXJvdXNlbC1jb21tZW50LXBvc3QtcmVzdWx0cyBzcGFue2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLXRvcDoyMHB4O3dpZHRoOjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjFlbSAwO2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItcmFkaXVzOjJweDtmb250OjEzcHgvMS40ICdIZWx2ZXRpY2EgTmV1ZScsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1qcC1jYXJvdXNlbC1ib3JkZXItY29sb3IpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDVweCAwIHJnYmEoMCwwLDAsLjIpfS5qcC1jYXJvdXNlbC1jb21tZW50LXBvc3QtZXJyb3J7Y29sb3I6I2RmNDkyNn0janAtY2Fyb3VzZWwtY29tbWVudHMtY2xvc2Vke2Rpc3BsYXk6bm9uZTtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LXN1YnRsZS1jb2xvcil9I2pwLWNhcm91c2VsLWNvbW1lbnRzLWxvYWRpbmd7Zm9udDo0MDAgMTVweC8xLjcgJ0hlbHZldGljYSBOZXVlJyxzYW5zLXNlcmlmIWltcG9ydGFudDtkaXNwbGF5Om5vbmU7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1zdWJ0bGUtY29sb3IpO3RleHQtYWxpZ246bGVmdDttYXJnaW4tYm90dG9tOjIwcHg7d2lkdGg6MTAwJTtib3R0b206MTBweDttYXJnaW4tdG9wOjIwcHh9LmpwLWNhcm91c2VsLXBob3RvLWljb25zLWNvbnRhaW5lcntmbGV4OjE7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbjowIDIwcHggMCAzMHB4O3doaXRlLXNwYWNlOm5vd3JhcH0uanAtY2Fyb3VzZWwtaWNvbi1idG57cGFkZGluZzoxNnB4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjpub25lO2JhY2tncm91bmQ6MCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDo2NHB4fS5qcC1jYXJvdXNlbC1pY29ue2JvcmRlcjpub25lO3BvaW50ZXItZXZlbnRzOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MDtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWw7Ym9yZGVyLXJhZGl1czo0cHg7d2lkdGg6MzFweDtwYWRkaW5nOjRweCAzcHggM3B4fS5qcC1jYXJvdXNlbC1pY29uIHN2Z3tkaXNwbGF5OmlubGluZS1ibG9ja30uanAtY2Fyb3VzZWwtb3ZlcmxheSByZWN0e2ZpbGw6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcil9LmpwLWNhcm91c2VsLXNlbGVjdGVkIC5qcC1jYXJvdXNlbC1pY29ue2JhY2tncm91bmQ6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcil9LmpwLWNhcm91c2VsLXNlbGVjdGVkIHJlY3R7ZmlsbDp2YXIoLS1qcC1jYXJvdXNlbC1iZy1jb2xvcil9LmpwLWNhcm91c2VsLWljb24tY29tbWVudHMuanAtY2Fyb3VzZWwtc2hvd3tkaXNwbGF5OmlubGluZS1ibG9ja30uanAtY2Fyb3VzZWwtaWNvbiAuanAtY2Fyb3VzZWwtaGFzLWNvbW1lbnRzLWluZGljYXRvcntkaXNwbGF5Om5vbmU7Zm9udC1zaXplOjEycHg7dmVydGljYWwtYWxpZ246dG9wO21hcmdpbi1sZWZ0Oi0xNnB4O2xpbmUtaGVpZ2h0OjE7cGFkZGluZzoycHggNHB4O2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6dmFyKC0tanAtY2Fyb3VzZWwtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tanAtY2Fyb3VzZWwtYmctY29sb3IpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLHNhbnMtc2VyaWYhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfS5qcC1jYXJvdXNlbC1zZWxlY3RlZCAuanAtY2Fyb3VzZWwtaWNvbiAuanAtY2Fyb3VzZWwtaGFzLWNvbW1lbnRzLWluZGljYXRvcntiYWNrZ3JvdW5kOnZhcigtLWpwLWNhcm91c2VsLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1qcC1jYXJvdXNlbC1wcmltYXJ5LWNvbG9yKX0uanAtY2Fyb3VzZWwtaGFzLWNvbW1lbnRzLWluZGljYXRvci5qcC1jYXJvdXNlbC1zaG93e2Rpc3BsYXk6aW5saW5lLWJsb2NrfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjBweCl7LmpwLWNhcm91c2VsLW92ZXJsYXkgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1idXR0b24tbmV4dCwuanAtY2Fyb3VzZWwtb3ZlcmxheSAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLWJ1dHRvbi1wcmV2e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmpwLWNhcm91c2VsLWJ1dHRvbnN7ZGlzcGxheTpub25lIWltcG9ydGFudH0uanAtY2Fyb3VzZWwtaW1hZ2UtbWV0YXtmbG9hdDpub25lIWltcG9ydGFudDt3aWR0aDoxMDAlIWltcG9ydGFudDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luLWxlZnQ6MH0uanAtY2Fyb3VzZWwtY2xvc2UtaGludHtmb250LXNpemU6MjZweCFpbXBvcnRhbnQ7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3RvcDoxMHB4O3JpZ2h0OjEwcHh9LmFkbWluLWJhciAuanAtY2Fyb3VzZWwtY2xvc2UtaGludHt0b3A6NDBweH0uanAtY2Fyb3VzZWwtc2xpZGUgaW1ne29wYWNpdHk6MX0uanAtY2Fyb3VzZWwtd3JhcHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWpwLWNhcm91c2VsLWJnLWNvbG9yKX0uanAtY2Fyb3VzZWwtZmFkZWF3YXl7ZGlzcGxheTpub25lfS5qcC1jYXJvdXNlbC1pbmZvPi5qcC1jYXJvdXNlbC1waG90by1pbmZve2Rpc3BsYXk6bm9uZX0uanAtY2Fyb3VzZWwtY29tbWVudHMtd3JhcHBlcj4uanAtY2Fyb3VzZWwtcGhvdG8taW5mb3tkaXNwbGF5OmJsb2NrfS5qcC1jYXJvdXNlbC1jYXB0aW9ue292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5qcC1jYXJvdXNlbC1pbmZvLWZvb3RlciAuanAtY2Fyb3VzZWwtcGhvdG8tdGl0bGUtY29udGFpbmVye2Rpc3BsYXk6bm9uZX0uanAtY2Fyb3VzZWwtcGhvdG8taWNvbnMtY29udGFpbmVye21hcmdpbjowIDEwcHggMCAwO3doaXRlLXNwYWNlOm5vd3JhcH0uanAtY2Fyb3VzZWwtaWNvbi1idG57cGFkZGluZy1sZWZ0OjIwcHh9LmpwLWNhcm91c2VsLXBhZ2luYXRpb257cGFkZGluZy1sZWZ0OjVweH0uanAtY2Fyb3VzZWwtcGFnaW5hdGlvbi1jb250YWluZXJ7bWFyZ2luLWxlZnQ6MjVweH0uanAtY2Fyb3VzZWwtY29tbWVudCAuYXZhdGFye21pbi13aWR0aDo0OHB4fSNqcC1jYXJvdXNlbC1jb21tZW50LWZvcm0tY29tbWVudGluZy1hcyBmaWVsZHNldCwjanAtY2Fyb3VzZWwtY29tbWVudC1mb3JtLWNvbW1lbnRpbmctYXMgaW5wdXR7d2lkdGg6MTAwJTtmbG9hdDpub25lfX0KLmNvbnRhY3QtZm9ybSAuY2xlYXItZm9ybXtjbGVhcjpib3RofS5jb250YWN0LWZvcm0gaW5wdXQ6OnBsYWNlaG9sZGVye3RyYW5zaXRpb246b3BhY2l0eSAuM3MgZWFzZS1vdXR9LmNvbnRhY3QtZm9ybSBpbnB1dDpob3Zlcjo6cGxhY2Vob2xkZXJ7b3BhY2l0eTouNX0uY29udGFjdC1mb3JtIGlucHV0OmZvY3VzOjpwbGFjZWhvbGRlcntvcGFjaXR5Oi4zfS5jb250YWN0LWZvcm0gaW5wdXRbdHlwZT1lbWFpbF0sLmNvbnRhY3QtZm9ybSBpbnB1dFt0eXBlPXRlbF0sLmNvbnRhY3QtZm9ybSBpbnB1dFt0eXBlPXRleHRdLC5jb250YWN0LWZvcm0gaW5wdXRbdHlwZT11cmxde2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tYm90dG9tOjEuNWVtO3dpZHRoOjEwMCU7cGFkZGluZzoxNHB4IDdweH0uY29udGFjdC1mb3JtIHNlbGVjdHttYXJnaW4tYm90dG9tOjEuNWVtO3BhZGRpbmc6MTRweCA3cHg7bWluLXdpZHRoOjE1MHB4fS5jb250YWN0LWZvcm0gdGV4dGFyZWF7Ym94LXNpemluZzpib3JkZXItYm94O2Zsb2F0Om5vbmU7aGVpZ2h0OjIwMHB4O21hcmdpbi1ib3R0b206MS41ZW07d2lkdGg6MTAwJTtwYWRkaW5nOjdweDtmb250OmluaGVyaXR9LmNvbnRhY3QtZm9ybSBpbnB1dFt0eXBlPWNoZWNrYm94XSwuY29udGFjdC1mb3JtIGlucHV0W3R5cGU9cmFkaW9de2Zsb2F0Om5vbmU7bWFyZ2luOjAgLjc1cmVtIDAgNXB4fS5jb250YWN0LWZvcm0gaW5wdXRbdHlwZT1jaGVja2JveF17dG9wOjA7bWFyZ2luLWxlZnQ6MH0uY29udGFjdC1mb3JtIGxhYmVse21hcmdpbi1ib3R0b206LjI1ZW07ZmxvYXQ6bm9uZTtmb250LXdlaWdodDo3MDA7ZGlzcGxheTpibG9ja30uY29udGFjdC1mb3JtIGxhYmVsLmNvbnNlbnQtaW1wbGljaXQgaW5wdXR7ZGlzcGxheTpub25lfS5jb250YWN0LWZvcm0gbGFiZWwuY2hlY2tib3gsLmNvbnRhY3QtZm9ybSBsYWJlbC5jaGVja2JveC1tdWx0aXBsZSwuY29udGFjdC1mb3JtIGxhYmVsLnJhZGlve21hcmdpbi1ib3R0b206LjI1ZW07ZmxvYXQ6bm9uZTtmb250LXdlaWdodDo0MDA7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmNvbnRhY3QtZm9ybSAuZ3J1bmlvbi1maWVsZC1jaGVja2JveC1tdWx0aXBsZS13cmFwLC5jb250YWN0LWZvcm0gLmdydW5pb24tZmllbGQtY2hlY2tib3gtd3JhcCwuY29udGFjdC1mb3JtIC5ncnVuaW9uLWZpZWxkLWNvbnNlbnQtd3JhcCwuY29udGFjdC1mb3JtIC5ncnVuaW9uLWZpZWxkLXJhZGlvLXdyYXB7bWFyZ2luLWJvdHRvbToxZW19LmNvbnRhY3QtZm9ybSBsYWJlbCBzcGFue2ZvbnQtc2l6ZTo4NSU7bWFyZ2luLWxlZnQ6LjI1ZW07Zm9udC13ZWlnaHQ6NDAwfS5jb250YWN0LWZvcm0tc3VibWlzc2lvbnttYXJnaW4tYm90dG9tOjRlbTtwYWRkaW5nOjEuNWVtIDFlbX0uY29udGFjdC1mb3JtLXN1Ym1pc3Npb24gcHttYXJnaW46MCBhdXRvO3dvcmQtd3JhcDpicmVhay13b3JkfS5mb3JtLWVycm9ycyAuZm9ybS1lcnJvci1tZXNzYWdle2NvbG9yOnJlZH0udGV4dHdpZGdldCAuY29udGFjdC1mb3JtIGlucHV0W3R5cGU9ZW1haWxdLC50ZXh0d2lkZ2V0IC5jb250YWN0LWZvcm0gaW5wdXRbdHlwZT10ZWxdLC50ZXh0d2lkZ2V0IC5jb250YWN0LWZvcm0gaW5wdXRbdHlwZT10ZXh0XSwudGV4dHdpZGdldCAuY29udGFjdC1mb3JtIGlucHV0W3R5cGU9dXJsXSwudGV4dHdpZGdldCAuY29udGFjdC1mb3JtIHRleHRhcmVhLC53cC1ibG9jay1jb2x1bW4gLmNvbnRhY3QtZm9ybSBpbnB1dFt0eXBlPWVtYWlsXSwud3AtYmxvY2stY29sdW1uIC5jb250YWN0LWZvcm0gaW5wdXRbdHlwZT10ZWxdLC53cC1ibG9jay1jb2x1bW4gLmNvbnRhY3QtZm9ybSBpbnB1dFt0eXBlPXRleHRdLC53cC1ibG9jay1jb2x1bW4gLmNvbnRhY3QtZm9ybSBpbnB1dFt0eXBlPXVybF0sLndwLWJsb2NrLWNvbHVtbiAuY29udGFjdC1mb3JtIHRleHRhcmVhe3dpZHRoOjEwMCV9I2pldHBhY2stY2hlY2stZmVlZGJhY2stc3BhbXttYXJnaW46MXB4IDhweCAwIDB9LmpldHBhY2stY2hlY2stZmVlZGJhY2stc3BhbS1zcGlubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6N3B4fS53cC1ibG9jay1qZXRwYWNrLWNvbnRhY3QtZm9ybXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7ZmxleC1kaXJlY3Rpb246cm93fS53cC1ibG9jay1qZXRwYWNrLWJ1dHRvbiwud3AtYmxvY2stamV0cGFjay1jb250YWN0LWZvcm0gLmdydW5pb24tZmllbGQtd3JhcHtmbGV4OjAgMCAxMDAlfS53cC1ibG9jay1qZXRwYWNrLWJ1dHRvbiBidXR0b257cGFkZGluZzoyMHB4IDMwcHg7Ym9yZGVyOmluaGVyaXQ7Zm9udDppbmhlcml0fS53cC1ibG9jay1qZXRwYWNrLWJ1dHRvbi5hbGlnbnJpZ2h0IGJ1dHRvbntmbG9hdDpyaWdodH0ud3AtYmxvY2stamV0cGFjay1jb250YWN0LWZvcm0gLmdydW5pb24tZmllbGQtd3JhcHtib3JkZXItcmlnaHQ6MTVweCBzb2xpZCB0cmFuc3BhcmVudH0ud3AtYmxvY2stamV0cGFjay1jb250YWN0LWZvcm0gLmdydW5pb24tZmllbGQtd2lkdGgtMjUtd3JhcHtmbGV4OjAgMCAyNSV9LndwLWJsb2NrLWpldHBhY2stY29udGFjdC1mb3JtIC5ncnVuaW9uLWZpZWxkLXdpZHRoLTUwLXdyYXB7ZmxleDowIDAgNTAlfS53cC1ibG9jay1qZXRwYWNrLWNvbnRhY3QtZm9ybSAuZ3J1bmlvbi1maWVsZC13aWR0aC03NS13cmFwe2ZsZXg6MCAwIDc1JX0uZ3J1bmlvbi1maWVsZC1jaGVja2JveC13cmFwLC5ncnVuaW9uLWZpZWxkLWNvbnNlbnQtd3JhcHthbGlnbi1zZWxmOmNlbnRlcn1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjAwcHgpey5jb250YWN0LWZvcm0gaW5wdXRbdHlwZT1lbWFpbF0sLmNvbnRhY3QtZm9ybSBpbnB1dFt0eXBlPXRlbF0sLmNvbnRhY3QtZm9ybSBpbnB1dFt0eXBlPXRleHRdLC5jb250YWN0LWZvcm0gaW5wdXRbdHlwZT11cmxde3dpZHRoOjUwJX0ud3AtYmxvY2stamV0cGFjay1jb250YWN0LWZvcm0gaW5wdXRbdHlwZT1lbWFpbF0sLndwLWJsb2NrLWpldHBhY2stY29udGFjdC1mb3JtIGlucHV0W3R5cGU9dGVsXSwud3AtYmxvY2stamV0cGFjay1jb250YWN0LWZvcm0gaW5wdXRbdHlwZT10ZXh0XSwud3AtYmxvY2stamV0cGFjay1jb250YWN0LWZvcm0gaW5wdXRbdHlwZT11cmxde3dpZHRoOjEwMCV9fS5qZXRwYWNrLWVtcHR5LXNwYW0tY29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5qZXRwYWNrLWVtcHR5LXNwYW17ZGlzcGxheTppbmxpbmUtYmxvY2t9LmpldHBhY2stZW1wdHktc3BhbS1zcGlubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6N3B4fS53cC1ibG9jay1qZXRwYWNrLWNvbnRhY3QtZm9ybSAud3AtYmxvY2stc3BhY2Vye3dpZHRoOjEwMCV9Ci5pbmZpbml0ZS1sb2FkZXJ7Y29sb3I6IzAwMDtkaXNwbGF5OmJsb2NrO2hlaWdodDoyOHB4O3RleHQtYWxpZ246Y2VudGVyfSNpbmZpbml0ZS1oYW5kbGUgc3BhbntiYWNrZ3JvdW5kOiMzMzM7Ym9yZGVyLXJhZGl1czoxcHg7Y29sb3I6I2YwZjBmMTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTNweDtwYWRkaW5nOjZweCAxNnB4fUBrZXlmcmFtZXMgc3Bpbm5lci1pbm5lcnswJXtvcGFjaXR5OjF9MTAwJXtvcGFjaXR5OjB9fS5pbmZpbml0ZS1sb2FkZXIgLnNwaW5uZXItaW5uZXIgZGl2e2xlZnQ6NDdweDt0b3A6MjRweDtwb3NpdGlvbjphYnNvbHV0ZTthbmltYXRpb246c3Bpbm5lci1pbm5lciBsaW5lYXIgMXMgaW5maW5pdGU7YmFja2dyb3VuZDojMDAwO291dGxpbmU6MXB4IHNvbGlkICNmZmY7d2lkdGg6NnB4O2hlaWdodDoxMnB4O2JvcmRlci1yYWRpdXM6M3B4LzZweDt0cmFuc2Zvcm0tb3JpZ2luOjNweCAyNnB4fS5pbmZpbml0ZS1sb2FkZXIgLnNwaW5uZXItaW5uZXIgZGl2Om50aC1jaGlsZCgxKXt0cmFuc2Zvcm06cm90YXRlKDApO2FuaW1hdGlvbi1kZWxheTotLjkxNjY2NjY2NjY2NjY2NjZzO2JhY2tncm91bmQ6IzAwMH0uaW5maW5pdGUtbG9hZGVyIC5zcGlubmVyLWlubmVyIGRpdjpudGgtY2hpbGQoMil7dHJhbnNmb3JtOnJvdGF0ZSgzMGRlZyk7YW5pbWF0aW9uLWRlbGF5Oi0uODMzMzMzMzMzMzMzMzMzNHM7YmFja2dyb3VuZDojMDAwfS5pbmZpbml0ZS1sb2FkZXIgLnNwaW5uZXItaW5uZXIgZGl2Om50aC1jaGlsZCgzKXt0cmFuc2Zvcm06cm90YXRlKDYwZGVnKTthbmltYXRpb24tZGVsYXk6LS43NXM7YmFja2dyb3VuZDojMDAwfS5pbmZpbml0ZS1sb2FkZXIgLnNwaW5uZXItaW5uZXIgZGl2Om50aC1jaGlsZCg0KXt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKTthbmltYXRpb24tZGVsYXk6LS42NjY2NjY2NjY2NjY2NjY2cztiYWNrZ3JvdW5kOiMwMDB9LmluZmluaXRlLWxvYWRlciAuc3Bpbm5lci1pbm5lciBkaXY6bnRoLWNoaWxkKDUpe3RyYW5zZm9ybTpyb3RhdGUoMTIwZGVnKTthbmltYXRpb24tZGVsYXk6LS41ODMzMzMzMzMzMzMzMzM0cztiYWNrZ3JvdW5kOiMwMDB9LmluZmluaXRlLWxvYWRlciAuc3Bpbm5lci1pbm5lciBkaXY6bnRoLWNoaWxkKDYpe3RyYW5zZm9ybTpyb3RhdGUoMTUwZGVnKTthbmltYXRpb24tZGVsYXk6LS41cztiYWNrZ3JvdW5kOiMwMDB9LmluZmluaXRlLWxvYWRlciAuc3Bpbm5lci1pbm5lciBkaXY6bnRoLWNoaWxkKDcpe3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTthbmltYXRpb24tZGVsYXk6LS40MTY2NjY2NjY2NjY2NjY3cztiYWNrZ3JvdW5kOiMwMDB9LmluZmluaXRlLWxvYWRlciAuc3Bpbm5lci1pbm5lciBkaXY6bnRoLWNoaWxkKDgpe3RyYW5zZm9ybTpyb3RhdGUoMjEwZGVnKTthbmltYXRpb24tZGVsYXk6LS4zMzMzMzMzMzMzMzMzMzMzcztiYWNrZ3JvdW5kOiMwMDB9LmluZmluaXRlLWxvYWRlciAuc3Bpbm5lci1pbm5lciBkaXY6bnRoLWNoaWxkKDkpe3RyYW5zZm9ybTpyb3RhdGUoMjQwZGVnKTthbmltYXRpb24tZGVsYXk6LS4yNXM7YmFja2dyb3VuZDojMDAwfS5pbmZpbml0ZS1sb2FkZXIgLnNwaW5uZXItaW5uZXIgZGl2Om50aC1jaGlsZCgxMCl7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpO2FuaW1hdGlvbi1kZWxheTotLjE2NjY2NjY2NjY2NjY2NjY2cztiYWNrZ3JvdW5kOiMwMDB9LmluZmluaXRlLWxvYWRlciAuc3Bpbm5lci1pbm5lciBkaXY6bnRoLWNoaWxkKDExKXt0cmFuc2Zvcm06cm90YXRlKDMwMGRlZyk7YW5pbWF0aW9uLWRlbGF5Oi04My4zMzMzMzMzMzMzMzMzM21zO2JhY2tncm91bmQ6IzAwMH0uaW5maW5pdGUtbG9hZGVyIC5zcGlubmVyLWlubmVyIGRpdjpudGgtY2hpbGQoMTIpe3RyYW5zZm9ybTpyb3RhdGUoMzMwZGVnKTthbmltYXRpb24tZGVsYXk6MHM7YmFja2dyb3VuZDojMDAwfS5pbmZpbml0ZS1sb2FkZXIgLnNwaW5uZXJ7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDowIDB9LmluZmluaXRlLWxvYWRlciAuc3Bpbm5lci1pbm5lcnt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApIHNjYWxlKC4yOCk7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjt0cmFuc2Zvcm0tb3JpZ2luOjAgMH0uaW5maW5pdGUtbG9hZGVyIC5zcGlubmVyLWlubmVyIGRpdntib3gtc2l6aW5nOmNvbnRlbnQtYm94fSNpbmZpbml0ZS1oYW5kbGUgc3BhbiBidXR0b24sI2luZmluaXRlLWhhbmRsZSBzcGFuIGJ1dHRvbjpmb2N1cywjaW5maW5pdGUtaGFuZGxlIHNwYW4gYnV0dG9uOmhvdmVye2Rpc3BsYXk6aW5saW5lO3Bvc2l0aW9uOnN0YXRpYztwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOm5vbmU7bGluZS1oZWlnaHQ6aW5oZXJpdDtiYWNrZ3JvdW5kOjAgMDtjb2xvcjppbmhlcml0O2N1cnNvcjppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdH0jaW5maW5pdGUtaGFuZGxlIHNwYW4gYnV0dG9uOjotbW96LWZvY3VzLWlubmVye21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6bm9uZX1AbWVkaWEgKG1heC13aWR0aDo4MDBweCl7I2luZmluaXRlLWhhbmRsZSBzcGFuOmJlZm9yZXtkaXNwbGF5Om5vbmV9I2luZmluaXRlLWhhbmRsZSBzcGFue2Rpc3BsYXk6YmxvY2t9fSNpbmZpbml0ZS1mb290ZXJ7cG9zaXRpb246Zml4ZWQ7Ym90dG9tOi01MHB4O2xlZnQ6MDt3aWR0aDoxMDAlfSNpbmZpbml0ZS1mb290ZXIgYXt0ZXh0LWRlY29yYXRpb246bm9uZX0jaW5maW5pdGUtZm9vdGVyIC5ibG9nLWNyZWRpdHMgYTpob3ZlciwjaW5maW5pdGUtZm9vdGVyIC5ibG9nLWluZm8gYTpob3Zlcntjb2xvcjojNDQ0O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9I2luZmluaXRlLWZvb3RlciAuY29udGFpbmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOCk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4IDAgMDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjAgYXV0bztvdmVyZmxvdzpoaWRkZW47cGFkZGluZzoxcHggMjBweDt3aWR0aDo3ODBweH0jaW5maW5pdGUtZm9vdGVyIC5ibG9nLWNyZWRpdHMsI2luZmluaXRlLWZvb3RlciAuYmxvZy1pbmZve2JveC1zaXppbmc6Ym9yZGVyLWJveDtsaW5lLWhlaWdodDoyNXB4fSNpbmZpbml0ZS1mb290ZXIgLmJsb2ctaW5mb3tmbG9hdDpsZWZ0O292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6NDAlfSNpbmZpbml0ZS1mb290ZXIgLmJsb2ctY3JlZGl0c3tmb250LXdlaWdodDo0MDA7ZmxvYXQ6cmlnaHQ7d2lkdGg6NjAlfSNpbmZpbml0ZS1mb290ZXIgLmJsb2ctaW5mbyBhe2NvbG9yOiMxMTE7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwfSNpbmZpbml0ZS1mb290ZXIgLmJsb2ctY3JlZGl0c3tjb2xvcjojODg4O2ZvbnQtc2l6ZToxMnB4O3RleHQtYWxpZ246cmlnaHR9I2luZmluaXRlLWZvb3RlciAuYmxvZy1jcmVkaXRzIGF7Y29sb3I6IzY0Njk3MH0uaW5maW5pdHktZW5kLm5ldmVyZW5kaW5nICNpbmZpbml0ZS1mb290ZXJ7ZGlzcGxheTpub25lfUBtZWRpYSAobWF4LXdpZHRoOjY0MHB4KXsjaW5maW5pdGUtZm9vdGVyIC5jb250YWluZXJ7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCV9I2luZmluaXRlLWZvb3RlciAuYmxvZy1pbmZve3dpZHRoOjMwJX0jaW5maW5pdGUtZm9vdGVyIC5ibG9nLWNyZWRpdHN7d2lkdGg6NzAlfSNpbmZpbml0ZS1mb290ZXIgLmJsb2ctY3JlZGl0cywjaW5maW5pdGUtZm9vdGVyIC5ibG9nLWluZm8gYXtmb250LXNpemU6MTBweH19QG1lZGlhIChtYXgtd2lkdGg6NjQwcHgpeyNpbmZpbml0ZS1mb290ZXJ7cG9zaXRpb246c3RhdGljfX0jaW5maW5pdGUtYXJpYXtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7d2lkdGg6MXB4O21hcmdpbjotMXB4O3BhZGRpbmc6MDtib3JkZXI6MH0uaW5maW5pdGUtd3JhcDpmb2N1c3tvdXRsaW5lOjAhaW1wb3J0YW50fQojanAtcG9zdC1mbGFpcntwYWRkaW5nLXRvcDouNWVtfSNjb250ZW50IGRpdi5zaGFyZWRhZGR5LCNtYWluIGRpdi5zaGFyZWRhZGR5LGRpdi5zaGFyZWRhZGR5e2NsZWFyOmJvdGh9ZGl2LnNoYXJlZGFkZHkgaDMuc2QtdGl0bGV7bWFyZ2luOjAgMCAxZW0gMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoxLjI7Zm9udC1zaXplOjlwdDtmb250LXdlaWdodDo3MDB9ZGl2LnNoYXJlZGFkZHkgaDMuc2QtdGl0bGU6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21pbi13aWR0aDozMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkY2RjZGU7bWFyZ2luLWJvdHRvbToxZW19I3dwYWRtaW5iYXIgbGkjd3AtYWRtaW4tYmFyLWFkbWluLWJhci1saWtlcy13aWRnZXR7d2lkdGg6NjFweDtvdmVyZmxvdzpoaWRkZW59I3dwYWRtaW5iYXIgaWZyYW1lLmFkbWluLWJhci1saWtlcy13aWRnZXR7d2lkdGg6NjFweDtoZWlnaHQ6MjhweDttaW4taGVpZ2h0OjI4cHg7Ym9yZGVyLXdpZHRoOjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9ZGl2LmpldHBhY2stbGlrZXMtd2lkZ2V0LXdyYXBwZXJ7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjUwcHg7cG9zaXRpb246cmVsYXRpdmV9ZGl2LmpldHBhY2stbGlrZXMtd2lkZ2V0LXdyYXBwZXIgLnNkLWxpbmstY29sb3J7Zm9udC1zaXplOjEycHh9ZGl2LmpldHBhY2stY29tbWVudC1saWtlcy13aWRnZXQtd3JhcHBlcnt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6MzFweH1kaXYuamV0cGFjay1jb21tZW50LWxpa2VzLXdpZGdldC13cmFwcGVyIGlmcmFtZXttYXJnaW4tYm90dG9tOjB9I2xpa2VzLW90aGVyLWdyYXZhdGFyc3tkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7cGFkZGluZzoxMHB4IDEwcHggMTJweCAxMHB4O2JhY2tncm91bmQtY29sb3I6IzJlNDQ1Mztib3JkZXItd2lkdGg6MDtib3gtc2hhZG93OjAgMCAxMHB4ICMyZTQ0NTM7Ym94LXNoYWRvdzowIDAgMTBweCByZ2JhKDQ2LDY4LDgzLC42KTttaW4td2lkdGg6MTMwcHg7ei1pbmRleDoxMDAwfSNsaWtlcy1vdGhlci1ncmF2YXRhcnMgKntsaW5lLWhlaWdodDpub3JtYWx9I2xpa2VzLW90aGVyLWdyYXZhdGFycyAubGlrZXMtdGV4dHtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctYm90dG9tOjhweH0jbGlrZXMtb3RoZXItZ3JhdmF0YXJzIGxpLCNsaWtlcy1vdGhlci1ncmF2YXRhcnMgdWx7bWFyZ2luOjA7cGFkZGluZzowO3RleHQtaW5kZW50OjA7bGlzdC1zdHlsZS10eXBlOm5vbmV9I2xpa2VzLW90aGVyLWdyYXZhdGFycyBsaTo6YmVmb3Jle2NvbnRlbnQ6IiJ9I2xpa2VzLW90aGVyLWdyYXZhdGFycyB1bC53cGwtYXZhdGFyc3tvdmVyZmxvdzphdXRvO2Rpc3BsYXk6YmxvY2s7bWF4LWhlaWdodDoxOTBweH0jbGlrZXMtb3RoZXItZ3JhdmF0YXJzIHVsLndwbC1hdmF0YXJzIGxpe3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7ZmxvYXQ6bGVmdDttYXJnaW46MCA1cHggNXB4IDB9I2xpa2VzLW90aGVyLWdyYXZhdGFycyB1bC53cGwtYXZhdGFycyBsaSBhe21hcmdpbjowIDJweCAwIDA7Ym9yZGVyLWJvdHRvbTpub25lIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrfSNsaWtlcy1vdGhlci1ncmF2YXRhcnMgdWwud3BsLWF2YXRhcnMgbGkgYSBpbWd7YmFja2dyb3VuZDowIDA7Ym9yZGVyOm5vbmU7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246c3RhdGljfWRpdi5zZC1ib3h7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RjZGNkZTtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMyl9LmNvbW1lbnQtbGlrZXMtd2lkZ2V0LC5lbnRyeS1jb250ZW50IC5wb3N0LWxpa2VzLXdpZGdldCwucG9zdC1saWtlcy13aWRnZXR7bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjA7ZGlzcGxheTpibG9ja30uY29tbWVudC1saWtlcy13aWRnZXQtcGxhY2Vob2xkZXIsLnBvc3QtbGlrZXMtd2lkZ2V0LXBsYWNlaG9sZGVye21hcmdpbjowO2JvcmRlci13aWR0aDowO3Bvc2l0aW9uOnJlbGF0aXZlfS5jb21tZW50LWxpa2VzLXdpZGdldC1wbGFjZWhvbGRlcntoZWlnaHQ6MThweDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmZsZXg7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sT3h5Z2VuLVNhbnMsVWJ1bnR1LENhbnRhcmVsbCwiSGVsdmV0aWNhIE5ldWUiLHNhbnMtc2VyaWZ9LmNvbW1lbnQtbGlrZXMtd2lkZ2V0LXBsYWNlaG9sZGVyOjpiZWZvcmV7Y29sb3I6IzJlYTJjYzt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2NvbnRlbnQ6Jyc7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dG9wOjNweDtwYWRkaW5nLXJpZ2h0OjVweDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjE2cHggMTZweDtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCclM0UlM0NyZWN0IHg9JzAnIGZpbGw9J25vbmUnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcvJTNFJTNDZyUzRSUzQ3BhdGggZmlsbD0nJTIzMkVBMkNDJyBkPSdNMTIgMmwyLjU4MiA2Ljk1M0wyMiA5LjI1N2wtNS44MjIgNC42MDJMMTguMTggMjEgMTIgMTYuODkgNS44MiAyMWwyLjAwMi03LjE0TDIgOS4yNTZsNy40MTgtLjMwNCcvJTNFJTNDL2clM0UlM0Mvc3ZnJTNFIil9LnBvc3QtbGlrZXMtd2lkZ2V0LXBsYWNlaG9sZGVyIC5idXR0b257ZGlzcGxheTpub25lfS5jb21tZW50LWxpa2VzLXdpZGdldC1wbGFjZWhvbGRlciAubG9hZGluZywucG9zdC1saWtlcy13aWRnZXQtcGxhY2Vob2xkZXIgLmxvYWRpbmd7Y29sb3I6Izk5OTtmb250LXNpemU6MTJweH0uY29tbWVudC1saWtlcy13aWRnZXQtcGxhY2Vob2xkZXIgLmxvYWRpbmd7cGFkZGluZy1sZWZ0OjVweDttYXJnaW4tdG9wOjRweDthbGlnbi1zZWxmOmNlbnRlcjtjb2xvcjojNGU0ZTRlfWRpdi5zaGFyZWRhZGR5LnNkLWxpa2UtZW5hYmxlZCAuc2QtbGlrZSBoM3tkaXNwbGF5Om5vbmV9ZGl2LnNoYXJlZGFkZHkuc2QtbGlrZS1lbmFibGVkIC5zZC1saWtlIC5wb3N0LWxpa2VzLXdpZGdldHt3aWR0aDoxMDAlO2Zsb2F0Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmNvbW1lbnQtbGlrZXMtd2lkZ2V0e3dpZHRoOjEwMCV9LmNzLXJhdGluZywucGQtcmF0aW5ne2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5zZC1ncGx1cyAuc2QtdGl0bGV7ZGlzcGxheTpub25lfUBtZWRpYSBwcmludHsuamV0cGFjay1saWtlcy13aWRnZXQtd3JhcHBlcntkaXNwbGF5Om5vbmV9fQouanAtcmVsYXRlZC1wb3N0cy1pMl9fcm93e2Rpc3BsYXk6ZmxleDttYXJnaW4tdG9wOjEuNXJlbX0uanAtcmVsYXRlZC1wb3N0cy1pMl9fcm93OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uanAtcmVsYXRlZC1wb3N0cy1pMl9fcG9zdHtmbGV4LWdyb3c6MTtmbGV4LWJhc2lzOjA7bWFyZ2luOjAgMTBweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmctbGVmdDowfS5qcC1yZWxhdGVkLXBvc3RzLWkyX19yb3dbZGF0YS1wb3N0LWNvdW50PSIzIl0gLmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Bvc3R7bWF4LXdpZHRoOmNhbGMoMzMlIC0gMjBweCl9LmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Jvd1tkYXRhLXBvc3QtY291bnQ9IjEiXSAuanAtcmVsYXRlZC1wb3N0cy1pMl9fcG9zdCwuanAtcmVsYXRlZC1wb3N0cy1pMl9fcm93W2RhdGEtcG9zdC1jb3VudD0iMiJdIC5qcC1yZWxhdGVkLXBvc3RzLWkyX19wb3N0e21heC13aWR0aDpjYWxjKDUwJSAtIDIwcHgpfS5qcC1yZWxhdGVkLXBvc3RzLWkyX19wb3N0LWNvbnRleHQsLmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Bvc3QtZGF0ZSwuanAtcmVsYXRlZC1wb3N0cy1pMl9fcG9zdC1oZWFkaW5nLC5qcC1yZWxhdGVkLXBvc3RzLWkyX19wb3N0LWltZy1saW5re2ZsZXgtZGlyZWN0aW9uOnJvdztkaXNwbGF5OmJsb2NrfS5qcC1yZWxhdGVkLXBvc3RzLWkyX19wb3N0LWhlYWRpbmd7bWFyZ2luOi41cmVtIDA7Zm9udC1zaXplOjFyZW07bGluZS1oZWlnaHQ6MS4yZW19LmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Bvc3QtbGlua3tkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MS4yZW19LmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Bvc3QtaW1nLWxpbmt7b3JkZXI6LTF9LmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Bvc3QtaW1nLWxpbmsgaW1ne3dpZHRoOjEwMCV9LmpwLXJlbGF0ZWRwb3N0cy1pMltkYXRhLWxheW91dD1saXN0XSAuanAtcmVsYXRlZC1wb3N0cy1pMl9fcm93e21hcmdpbi10b3A6MDtkaXNwbGF5OmJsb2NrfS5qcC1yZWxhdGVkcG9zdHMtaTJbZGF0YS1sYXlvdXQ9bGlzdF0gLmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Bvc3R7bWF4LXdpZHRoOm5vbmU7bWFyZ2luOjB9LmpwLXJlbGF0ZWRwb3N0cy1pMltkYXRhLWxheW91dD1saXN0XS5qcC1yZWxhdGVkLXBvc3RzLWkyX19wb3N0LWltZy1saW5re21hcmdpbi10b3A6MXJlbX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NjQwcHgpey5qcC1yZWxhdGVkLXBvc3RzLWkyX19yb3d7bWFyZ2luLXRvcDowO2Rpc3BsYXk6YmxvY2t9LmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Jvd1tkYXRhLXBvc3QtY291bnRdIC5qcC1yZWxhdGVkLXBvc3RzLWkyX19wb3N0e21heC13aWR0aDpub25lO21hcmdpbjowO21hcmdpbi10b3A6MXJlbX0uanAtcmVsYXRlZC1wb3N0cy1pMl9fcG9zdC1pbWctbGlua3ttYXJnaW4tdG9wOjFyZW19LmpwLXJlbGF0ZWQtcG9zdHMtaTJfX3Bvc3QtaW1nLWxpbmsgaW1ne3dpZHRoOjM1MHB4fX0janAtcmVsYXRlZHBvc3Rze2Rpc3BsYXk6bm9uZTtwYWRkaW5nLXRvcDoxZW07bWFyZ2luOjFlbSAwO3Bvc2l0aW9uOnJlbGF0aXZlO2NsZWFyOmJvdGh9LmpwLXJlbGF0ZWRwb3N0czphZnRlcntjb250ZW50OicnO2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aH0janAtcmVsYXRlZHBvc3RzIGgzLmpwLXJlbGF0ZWRwb3N0cy1oZWFkbGluZXttYXJnaW46MCAwIDFlbSAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Zsb2F0OmxlZnQ7Zm9udC1zaXplOjlwdDtmb250LXdlaWdodDo3MDA7Zm9udC1mYW1pbHk6aW5oZXJpdH0janAtcmVsYXRlZHBvc3RzIGgzLmpwLXJlbGF0ZWRwb3N0cy1oZWFkbGluZSBlbTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWluLXdpZHRoOjMwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RjZGNkZTtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTttYXJnaW4tYm90dG9tOjFlbX0janAtcmVsYXRlZHBvc3RzIGgzLmpwLXJlbGF0ZWRwb3N0cy1oZWFkbGluZSBlbXtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo3MDB9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1ze2NsZWFyOmxlZnR9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zLXZpc3VhbHttYXJnaW4tcmlnaHQ6LTIwcHh9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zIC5qcC1yZWxhdGVkcG9zdHMtcG9zdHtmbG9hdDpsZWZ0O3dpZHRoOjMzJTttYXJnaW46MCAwIDFlbTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zLXZpc3VhbCAuanAtcmVsYXRlZHBvc3RzLXBvc3R7cGFkZGluZy1yaWdodDoyMHB4Oy1tb3otb3BhY2l0eTouODtvcGFjaXR5Oi44fSNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcyAuanAtcmVsYXRlZHBvc3RzLXBvc3Q6bnRoLWNoaWxkKDNuKzQpLCNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcy12aXN1YWwgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0Om50aC1jaGlsZCgzbis0KXtjbGVhcjpib3RofSNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcyAuanAtcmVsYXRlZHBvc3RzLXBvc3Q6aG92ZXIgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0LXRpdGxlIGF7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0janAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0OmhvdmVyey1tb3otb3BhY2l0eToxO29wYWNpdHk6MX0janAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMgcCwjanAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMgdGltZSwjanAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMtdmlzdWFsIGg0LmpwLXJlbGF0ZWRwb3N0cy1wb3N0LXRpdGxle2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7bWFyZ2luOjB9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zLXZpc3VhbCAuanAtcmVsYXRlZHBvc3RzLXBvc3Qtbm90aHVtYnN7cG9zaXRpb246cmVsYXRpdmV9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zLXZpc3VhbCAuanAtcmVsYXRlZHBvc3RzLXBvc3Qtbm90aHVtYnMgYS5qcC1yZWxhdGVkcG9zdHMtcG9zdC1hb3ZlcmxheXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDtkaXNwbGF5OmJsb2NrO2JvcmRlci1ib3R0b206MH0janAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMgcCwjanAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMgdGltZXttYXJnaW4tYm90dG9tOjB9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zLXZpc3VhbCBoNC5qcC1yZWxhdGVkcG9zdHMtcG9zdC10aXRsZXt0ZXh0LXRyYW5zZm9ybTpub25lO21hcmdpbjowO2ZvbnQtZmFtaWx5OmluaGVyaXQ7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6MTAwJX0janAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0IC5qcC1yZWxhdGVkcG9zdHMtcG9zdC10aXRsZSBhe2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LWRlY29yYXRpb246bm9uZTstbW96LW9wYWNpdHk6MTtvcGFjaXR5OjF9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zIC5qcC1yZWxhdGVkcG9zdHMtcG9zdCAuanAtcmVsYXRlZHBvc3RzLXBvc3QtdGl0bGUgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfSNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcyAuanAtcmVsYXRlZHBvc3RzLXBvc3QgaW1nLmpwLXJlbGF0ZWRwb3N0cy1wb3N0LWltZywjanAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0IHNwYW57ZGlzcGxheTpibG9jazttYXgtd2lkdGg6OTAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfSNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcy12aXN1YWwgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0IGltZy5qcC1yZWxhdGVkcG9zdHMtcG9zdC1pbWcsI2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zLXZpc3VhbCAuanAtcmVsYXRlZHBvc3RzLXBvc3Qgc3BhbntoZWlnaHQ6YXV0bzttYXgtd2lkdGg6MTAwJX0janAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0IC5qcC1yZWxhdGVkcG9zdHMtcG9zdC1jb250ZXh0LCNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcyAuanAtcmVsYXRlZHBvc3RzLXBvc3QgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0LWRhdGV7b3BhY2l0eTouNn0uanAtcmVsYXRlZHBvc3RzLWl0ZW1zIC5qcC1yZWxhdGVkcG9zdHMtcG9zdCAuanAtcmVsYXRlZHBvc3RzLXBvc3QtZGF0ZXtkaXNwbGF5Om5vbmV9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zLXZpc3VhbCBkaXYuanAtcmVsYXRlZHBvc3RzLXBvc3QtdGh1bWJzIHAuanAtcmVsYXRlZHBvc3RzLXBvc3QtZXhjZXJwdHtkaXNwbGF5Om5vbmV9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zLXZpc3VhbCAuanAtcmVsYXRlZHBvc3RzLXBvc3Qtbm90aHVtYnMgcC5qcC1yZWxhdGVkcG9zdHMtcG9zdC1leGNlcnB0e292ZXJmbG93OmhpZGRlbn0janAtcmVsYXRlZHBvc3RzIC5qcC1yZWxhdGVkcG9zdHMtaXRlbXMtdmlzdWFsIC5qcC1yZWxhdGVkcG9zdHMtcG9zdC1ub3RodW1icyBzcGFue21hcmdpbi1ib3R0b206MWVtfSNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1saXN0IC5qcC1yZWxhdGVkcG9zdHMtcG9zdHtjbGVhcjpib3RoO3dpZHRoOjEwMCV9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWxpc3QgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0IGltZy5qcC1yZWxhdGVkcG9zdHMtcG9zdC1pbWd7ZmxvYXQ6bGVmdDtvdmVyZmxvdzpoaWRkZW47bWF4LXdpZHRoOjMzJTttYXJnaW4tcmlnaHQ6MyV9I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWxpc3QgaDQuanAtcmVsYXRlZHBvc3RzLXBvc3QtdGl0bGV7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjYzJX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NjQwcHgpeyNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcyAuanAtcmVsYXRlZHBvc3RzLXBvc3R7d2lkdGg6NTAlfSNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcyAuanAtcmVsYXRlZHBvc3RzLXBvc3Q6bnRoLWNoaWxkKDNuKXtjbGVhcjpsZWZ0fSNqcC1yZWxhdGVkcG9zdHMgLmpwLXJlbGF0ZWRwb3N0cy1pdGVtcy12aXN1YWx7bWFyZ2luLXJpZ2h0OjIwcHh9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDozMjBweCl7I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWl0ZW1zIC5qcC1yZWxhdGVkcG9zdHMtcG9zdHt3aWR0aDoxMDAlO2NsZWFyOmJvdGg7bWFyZ2luOjAgMCAxZW19I2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWxpc3QgLmpwLXJlbGF0ZWRwb3N0cy1wb3N0IGltZy5qcC1yZWxhdGVkcG9zdHMtcG9zdC1pbWcsI2pwLXJlbGF0ZWRwb3N0cyAuanAtcmVsYXRlZHBvc3RzLWxpc3QgaDQuanAtcmVsYXRlZHBvc3RzLXBvc3QtdGl0bGV7ZmxvYXQ6bm9uZTttYXgtd2lkdGg6MTAwJTttYXJnaW4tcmlnaHQ6MH19QG1lZGlhIHByaW50ey5qcC1yZWxhdGVkcG9zdHN7ZGlzcGxheTpub25lIWltcG9ydGFudH19CiNqcC1wb3N0LWZsYWlye3BhZGRpbmctdG9wOi41ZW19I2NvbnRlbnQgZGl2LnNoYXJlZGFkZHksI21haW4gZGl2LnNoYXJlZGFkZHksZGl2LnNoYXJlZGFkZHl7Y2xlYXI6Ym90aH1kaXYuc2hhcmVkYWRkeSBoMy5zZC10aXRsZXttYXJnaW46MCAwIDFlbSAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjEuMjtmb250LXNpemU6OXB0O2ZvbnQtd2VpZ2h0OjcwMH1kaXYuc2hhcmVkYWRkeSBoMy5zZC10aXRsZTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWluLXdpZHRoOjMwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RjZGNkZTttYXJnaW4tYm90dG9tOjFlbX1ib2R5LmhpZ2hsYW5kZXItbGlnaHQgaDMuc2QtdGl0bGU6YmVmb3Jle2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpfWJvZHkuaGlnaGxhbmRlci1kYXJrIGgzLnNkLXRpdGxlOmJlZm9yZXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC40KX0uc2Qtc2hhcmluZ3ttYXJnaW4tYm90dG9tOjFlbX0uc2QtY29udGVudCB1bHtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtsaXN0LXN0eWxlOm5vbmUhaW1wb3J0YW50fS5zZC1jb250ZW50IHVsIGxpe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5zZC1jb250ZW50IHVsIGxpLnNoYXJlLWRlcHJlY2F0ZWR7b3BhY2l0eTouNX0uc2QtY29udGVudCB1bCBsaS5zaGFyZS1kZXByZWNhdGVkIGEgc3Bhbnt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS5zZC1ibG9jay5zZC1ncGx1c3ttYXJnaW46MCAwIC41ZW0gMH0uc2QtZ3BsdXMgLnNkLWNvbnRlbnR7Zm9udC1zaXplOjEycHh9I3NoYXJpbmdfZW1haWwgLnNoYXJpbmdfc2VuZCwuc2QtY29udGVudCB1bCBsaSAub3B0aW9uIGEuc2hhcmUtdXN0b20sLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b24sLnNkLWNvbnRlbnQgdWwgbGkuYWR2YW5jZWQgYS5zaGFyZS1tb3JlLC5zZC1jb250ZW50IHVsIGxpLnByZXZpZXctaXRlbSBkaXYub3B0aW9uLm9wdGlvbi1zbWFydC1vZmYgYSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b24sLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b24sLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudD51bD5saSAuZGlnZ19idXR0b24+YSwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50PnVsPmxpPmEuc2QtYnV0dG9uLC5zZC1zb2NpYWwtdGV4dCAuc2QtY29udGVudCB1bCBsaSBhLnNkLWJ1dHRvbnt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Ik9wZW4gU2FucyIsc2Fucy1zZXJpZjtmb250LXdlaWdodDo0MDA7Ym9yZGVyLXJhZGl1czozcHg7Y29sb3I6IzY1NjU2NSFpbXBvcnRhbnQ7YmFja2dyb3VuZDojZjhmOGY4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3gtc2hhZG93OjAgMXB4IDAgcmdiYSgwLDAsMCwuMDgpO3RleHQtc2hhZG93Om5vbmU7bGluZS1oZWlnaHQ6MjNweDtwYWRkaW5nOjFweCA4cHggMCA1cHh9LnNkLWNvbnRlbnQgdWwgbGkgLm9wdGlvbiBhLnNoYXJlLXVzdG9tIHNwYW4sLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b24+c3Bhbiwuc2QtY29udGVudCB1bCBsaS5hZHZhbmNlZCBhLnNoYXJlLW1vcmUgc3Bhbiwuc2QtY29udGVudCB1bCBsaS5wcmV2aWV3LWl0ZW0gZGl2Lm9wdGlvbi5vcHRpb24tc21hcnQtb2ZmIGEgc3Bhbiwuc2Qtc29jaWFsLWljb24tdGV4dCAuc2QtY29udGVudCB1bCBsaSBhLnNkLWJ1dHRvbj5zcGFuLC5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQ+dWw+bGkgLmRpZ2dfYnV0dG9uPmEgc3Bhbiwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50PnVsPmxpPmEuc2QtYnV0dG9uIHNwYW4sLnNkLXNvY2lhbC10ZXh0IC5zZC1jb250ZW50IHVsIGxpIGEuc2QtYnV0dG9uIHNwYW57bGluZS1oZWlnaHQ6MjNweH0uc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50IC5zaGFyaW5nLWhpZGRlbiAuaW5uZXI+dWw+bGkgLmRpZ2dfYnV0dG9uPmEsLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCAuc2hhcmluZy1oaWRkZW4gLmlubmVyPnVsPmxpPmEuc2QtYnV0dG9uLC5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQ+dWw+bGkgLmRpZ2dfYnV0dG9uPmEsLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudD51bD5saT5hLnNkLWJ1dHRvbntsaW5lLWhlaWdodDoxN3B4O2JveC1zaGFkb3c6bm9uZTt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCB1bCBsaSBhLnNkLWJ1dHRvbj5zcGFue2xpbmUtaGVpZ2h0OjE3cHh9LnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCAuc2hhcmluZy1oaWRkZW4gLmlubmVyPnVsPmxpIC5kaWdnX2J1dHRvbj5hOmJlZm9yZSwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50IC5zaGFyaW5nLWhpZGRlbiAuaW5uZXI+dWw+bGk+YS5zZC1idXR0b246YmVmb3JlLC5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQ+dWw+bGkgLmRpZ2dfYnV0dG9uPmE6YmVmb3JlLC5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQ+dWw+bGk+YS5zZC1idXR0b246YmVmb3Jle21hcmdpbi1ib3R0b206LTFweH0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b246YWN0aXZlLC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaSBhLnNkLWJ1dHRvbjpob3Zlciwuc2Qtc29jaWFsLWljb24tdGV4dCAuc2QtY29udGVudCB1bCBsaSBhLnNkLWJ1dHRvbjphY3RpdmUsLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b246aG92ZXIsLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudD51bD5saSAuZGlnZ19idXR0b24+YTphY3RpdmUsLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudD51bD5saSAuZGlnZ19idXR0b24+YTpob3Zlciwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50PnVsPmxpPmEuc2QtYnV0dG9uOmFjdGl2ZSwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50PnVsPmxpPmEuc2QtYnV0dG9uOmhvdmVyLC5zZC1zb2NpYWwtdGV4dCAuc2QtY29udGVudCB1bCBsaSBhLnNkLWJ1dHRvbjphY3RpdmUsLnNkLXNvY2lhbC10ZXh0IC5zZC1jb250ZW50IHVsIGxpIGEuc2QtYnV0dG9uOmhvdmVye2NvbG9yOiM1NTU7YmFja2dyb3VuZDojZjZmN2Y3O2JvcmRlcjoxcHggc29saWQgIzk5OX0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b246YWN0aXZlLC5zZC1zb2NpYWwtaWNvbi10ZXh0IC5zZC1jb250ZW50IHVsIGxpIGEuc2QtYnV0dG9uOmFjdGl2ZSwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50PnVsPmxpIC5kaWdnX2J1dHRvbj5hOmFjdGl2ZSwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50PnVsPmxpPmEuc2QtYnV0dG9uOmFjdGl2ZSwuc2Qtc29jaWFsLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b246YWN0aXZle2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDAsMCwwLC4xNil9LnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b246YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlO2ZvbnQ6bm9ybWFsIDE4cHgvMSBzb2NpYWwtbG9nb3M7dmVydGljYWwtYWxpZ246dG9wO3RleHQtYWxpZ246Y2VudGVyfS5zZC1zb2NpYWwtaWNvbi10ZXh0IHVsIGxpIGEuc2QtYnV0dG9uOmJlZm9yZXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MnB4fUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b246YmVmb3Jle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoycHh9fS5zZC1zb2NpYWwtb2ZmaWNpYWwgdWwgbGkgYS5zZC1idXR0b246YmVmb3Jle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMnB4fUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnNkLXNvY2lhbC1vZmZpY2lhbCB1bCBsaSBhLnNkLWJ1dHRvbjpiZWZvcmV7dG9wOjB9fS5zZC1jb250ZW50IHVsIGxpe21hcmdpbjowIDVweCA1cHggMDtwYWRkaW5nOjB9LmpwLXNoYXJpbmctaW5wdXQtdG91Y2ggLnNkLWNvbnRlbnQgdWwgbGl7cGFkZGluZy1sZWZ0OjEwcHh9LnNkLWNvbnRlbnQgdWwgbGkucHJldmlldy1pdGVtIGEuc2QtYnV0dG9uIHNwYW4sLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkgYSBzcGFuLC5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQgdWwgbGkgYS5zZC1idXR0b24gc3BhbnttYXJnaW4tbGVmdDozcHh9LnNkLWNvbnRlbnQgdWwgbGkucHJldmlldy1pdGVtLm5vLWljb24gYS5zZC1idXR0b24gc3BhbnttYXJnaW4tbGVmdDowfS5zZC1jb250ZW50IHVsIGxpLm5vLWljb24gYTpiZWZvcmUsLnNkLXNvY2lhbC10ZXh0IC5zZC1jb250ZW50IHVsIGxpIGE6YmVmb3Jle2Rpc3BsYXk6bm9uZX1ib2R5IC5zZC1jb250ZW50IHVsIGxpLnNoYXJlLWN1c3RvbS5uby1pY29uIGEgc3Bhbixib2R5IC5zZC1zb2NpYWwtdGV4dCAuc2QtY29udGVudCB1bCBsaS5zaGFyZS1jdXN0b20gYSBzcGFue2JhY2tncm91bmQtaW1hZ2U6bm9uZTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01MDBweCAtNTAwcHghaW1wb3J0YW50O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjA7aGVpZ2h0OjA7bGluZS1oZWlnaHQ6aW5oZXJpdH0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkgYS5zaGFyZS1tb3Jle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotNHB4fUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpIGEuc2hhcmUtbW9yZXt0b3A6MnB4fX1ALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCl7LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpIGEuc2hhcmUtbW9yZXt0b3A6MnB4fX0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkgYS5zaGFyZS1tb3JlIHNwYW57bWFyZ2luLWxlZnQ6M3B4fS5zZC1jb250ZW50IHVsIGxpLnNoYXJlLXByaW50IGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtcHJpbnQgYTpiZWZvcmUsLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgbGkuc2hhcmUtcHJpbnQgYTpiZWZvcmUsLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCBsaS5zaGFyZS1wcmludCBhOmJlZm9yZSwuc2Qtc29jaWFsLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtcHJpbnQgYTpiZWZvcmV7Y29udGVudDonXGY0NjknfS5zZC1jb250ZW50IHVsIGxpLnNoYXJlLWVtYWlsIGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtZW1haWwgYTpiZWZvcmUsLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgbGkuc2hhcmUtZW1haWwgYTpiZWZvcmUsLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCBsaS5zaGFyZS1lbWFpbCBhOmJlZm9yZSwuc2Qtc29jaWFsLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtZW1haWwgYTpiZWZvcmV7Y29udGVudDonXGY0MTAnfS5zZC1jb250ZW50IHVsIGxpLnNoYXJlLWxpbmtlZGluIGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtbGlua2VkaW4gYTpiZWZvcmUsLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgbGkuc2hhcmUtbGlua2VkaW4gYTpiZWZvcmUsLnNkLXNvY2lhbC10ZXh0IC5zZC1jb250ZW50IHVsIGxpLnNoYXJlLWxpbmtlZGluIGE6YmVmb3Jle2NvbnRlbnQ6J1xmMjA3J30uc2QtY29udGVudCB1bCBsaS5zaGFyZS10d2l0dGVyIGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtdHdpdHRlciBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24tdGV4dCAuc2QtY29udGVudCBsaS5zaGFyZS10d2l0dGVyIGE6YmVmb3JlLC5zZC1zb2NpYWwtdGV4dCAuc2QtY29udGVudCB1bCBsaS5zaGFyZS10d2l0dGVyIGE6YmVmb3Jle2NvbnRlbnQ6J1xmMjAyJ30uc2QtY29udGVudCB1bCBsaS5zaGFyZS1yZWRkaXQgZGl2Lm9wdGlvbi5vcHRpb24tc21hcnQtb2ZmIGE6YmVmb3JlLC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaS5zaGFyZS1yZWRkaXQgYTpiZWZvcmUsLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgbGkuc2hhcmUtcmVkZGl0IGE6YmVmb3JlLC5zZC1zb2NpYWwtdGV4dCAuc2QtY29udGVudCB1bCBsaS5zaGFyZS1yZWRkaXQgYTpiZWZvcmV7Y29udGVudDonXGYyMjInfS5zZC1jb250ZW50IHVsIGxpLnNoYXJlLXR1bWJsciBkaXYub3B0aW9uLm9wdGlvbi1zbWFydC1vZmYgYTpiZWZvcmUsLnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpLnNoYXJlLXR1bWJsciBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24tdGV4dCAuc2QtY29udGVudCBsaS5zaGFyZS10dW1ibHIgYTpiZWZvcmUsLnNkLXNvY2lhbC10ZXh0IC5zZC1jb250ZW50IHVsIGxpLnNoYXJlLXR1bWJsciBhOmJlZm9yZXtjb250ZW50OidcZjYwNyd9LnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtcG9ja2V0IGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtcG9ja2V0IGE6YmVmb3JlLC5zZC1zb2NpYWwtaWNvbi10ZXh0IC5zZC1jb250ZW50IGxpLnNoYXJlLXBvY2tldCBhOmJlZm9yZSwuc2Qtc29jaWFsLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtcG9ja2V0IGE6YmVmb3Jle2NvbnRlbnQ6J1xmMjI0J30uc2QtY29udGVudCB1bCBsaS5zaGFyZS1waW50ZXJlc3QgZGl2Lm9wdGlvbi5vcHRpb24tc21hcnQtb2ZmIGE6YmVmb3JlLC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaS5zaGFyZS1waW50ZXJlc3QgYTpiZWZvcmUsLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgbGkuc2hhcmUtcGludGVyZXN0IGE6YmVmb3JlLC5zZC1zb2NpYWwtdGV4dCAuc2QtY29udGVudCB1bCBsaS5zaGFyZS1waW50ZXJlc3QgYTpiZWZvcmV7Y29udGVudDonXGYyMTAnfS5zZC1jb250ZW50IHVsIGxpLnNoYXJlLWZhY2Vib29rIGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtZmFjZWJvb2sgYTpiZWZvcmUsLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgbGkuc2hhcmUtZmFjZWJvb2sgYTpiZWZvcmUsLnNkLXNvY2lhbC10ZXh0IC5zZC1jb250ZW50IHVsIGxpLnNoYXJlLWZhY2Vib29rIGE6YmVmb3Jle2NvbnRlbnQ6J1xmMjAzJ30uc2QtY29udGVudCB1bCBsaS5zaGFyZS1wcmVzcy10aGlzIGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtcHJlc3MtdGhpcyBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24tdGV4dCAuc2QtY29udGVudCBsaS5zaGFyZS1wcmVzcy10aGlzIGE6YmVmb3JlLC5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQgbGkuc2hhcmUtcHJlc3MtdGhpcyBhOmJlZm9yZSwuc2Qtc29jaWFsLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtcHJlc3MtdGhpcyBhOmJlZm9yZXtjb250ZW50OidcZjIwNSd9LnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCBsaS5zaGFyZS1wcmVzcy10aGlzIGE6YmVmb3Jle2NvbG9yOiMyYmExY2J9LnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtdGVsZWdyYW0gZGl2Lm9wdGlvbi5vcHRpb24tc21hcnQtb2ZmIGE6YmVmb3JlLC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaS5zaGFyZS10ZWxlZ3JhbSBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24tdGV4dCAuc2QtY29udGVudCBsaS5zaGFyZS10ZWxlZ3JhbSBhOmJlZm9yZSwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50IGxpLnNoYXJlLXRlbGVncmFtIGE6YmVmb3JlLC5zZC1zb2NpYWwtdGV4dCAuc2QtY29udGVudCB1bCBsaS5zaGFyZS10ZWxlZ3JhbSBhOmJlZm9yZXtjb250ZW50OidcZjYwNid9LnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCBsaS5zaGFyZS10ZWxlZ3JhbSBhOmJlZm9yZXtjb2xvcjojMDhjfS5zZC1jb250ZW50IHVsIGxpLnNoYXJlLXNreXBlIGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtc2t5cGUgYTpiZWZvcmUsLnNkLXNvY2lhbC1pY29uLXRleHQgLnNkLWNvbnRlbnQgbGkuc2hhcmUtc2t5cGUgYTpiZWZvcmUsLnNkLXNvY2lhbC10ZXh0IC5zZC1jb250ZW50IHVsIGxpLnNoYXJlLXNreXBlIGE6YmVmb3Jle2NvbnRlbnQ6J1xmMjIwJ30uc2QtY29udGVudCB1bCBsaS5hZHZhbmNlZCBhLnNoYXJlLW1vcmU6YmVmb3JlLC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBhLnNoYXJlLW1vcmU6YmVmb3JlLC5zZC1zb2NpYWwtaWNvbi10ZXh0IC5zZC1jb250ZW50IGEuc2hhcmUtbW9yZTpiZWZvcmUsLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCBhLnNoYXJlLW1vcmU6YmVmb3JlLC5zZC1zb2NpYWwtdGV4dCAuc2QtY29udGVudCB1bCBhLnNoYXJlLW1vcmU6YmVmb3Jle2NvbnRlbnQ6J1xmNDE1J30uc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50IGEuc2hhcmUtbW9yZTpiZWZvcmV7Y29sb3I6IzJiYTFjYn0uc2QtY29udGVudCB1bCBsaS5zaGFyZS1qZXRwYWNrLXdoYXRzYXBwIGRpdi5vcHRpb24ub3B0aW9uLXNtYXJ0LW9mZiBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtamV0cGFjay13aGF0c2FwcCBhOmJlZm9yZSwuc2Qtc29jaWFsLWljb24tdGV4dCAuc2QtY29udGVudCBsaS5zaGFyZS1qZXRwYWNrLXdoYXRzYXBwIGE6YmVmb3JlLC5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQgbGkuc2hhcmUtamV0cGFjay13aGF0c2FwcCBhOmJlZm9yZSwuc2Qtc29jaWFsLXRleHQgLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtamV0cGFjay13aGF0c2FwcCBhOmJlZm9yZXtjb250ZW50OidcZjYwOCd9LnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCBsaS5zaGFyZS1qZXRwYWNrLXdoYXRzYXBwIGE6YmVmb3Jle2NvbG9yOiM0M2Q4NTR9LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpW2NsYXNzKj1zaGFyZS1dLnNoYXJlLWpldHBhY2std2hhdHNhcHAgYS5zZC1idXR0b257YmFja2dyb3VuZDojNDNkODU0O2NvbG9yOiNmZmYhaW1wb3J0YW50fS5zZC1jb250ZW50IHVsIGxpLnNoYXJlLWRlcHJlY2F0ZWQgZGl2Lm9wdGlvbi5vcHRpb24tc21hcnQtb2ZmIGE6YmVmb3JlLC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaS5zaGFyZS1kZXByZWNhdGVkIGE6YmVmb3JlLC5zZC1zb2NpYWwtaWNvbi10ZXh0IC5zZC1jb250ZW50IGxpLnNoYXJlLWRlcHJlY2F0ZWQgYTpiZWZvcmUsLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCBsaS5zaGFyZS1kZXByZWNhdGVkIGE6YmVmb3Jle3dpZHRoOjFlbTtoZWlnaHQ6MWVtO2NvbnRlbnQ6IlwxRjZBQiJ9LnNkLXNvY2lhbCAuc2QtYnV0dG9uIC5zaGFyZS1jb3VudHtiYWNrZ3JvdW5kOiMyZWEyY2M7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjEwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEwcHg7cGFkZGluZzoxcHggM3B4O2xpbmUtaGVpZ2h0OjF9LnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCB1bCwuc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50IHVsIGxpe2xpbmUtaGVpZ2h0OjI1cHghaW1wb3J0YW50fS5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQ+dWw+bGk+YS5zZC1idXR0b24gc3BhbntsaW5lLWhlaWdodDoxfS5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQgdWw6YWZ0ZXJ7Y29udGVudDoiLiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtjbGVhcjpib3RoO3Zpc2liaWxpdHk6aGlkZGVufS5zZC1zb2NpYWwtb2ZmaWNpYWwgLnNkLWNvbnRlbnQgbGkuc2hhcmUtcHJlc3MtdGhpcyBhe21hcmdpbjowIDAgNXB4IDB9LnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCB1bD5saXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7bWFyZ2luOjAgMTBweCA1cHggMCFpbXBvcnRhbnQ7aGVpZ2h0OjI1cHh9LnNkLXNvY2lhbC1vZmZpY2lhbCAuZmItc2hhcmUtYnV0dG9uPnNwYW57dmVydGljYWwtYWxpZ246dG9wIWltcG9ydGFudH0uc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50IC5wb2NrZXRfYnV0dG9uIGlmcmFtZXt3aWR0aDo5OHB4fS5yZWRkaXRfYnV0dG9uIGlmcmFtZXttYXJnaW4tdG9wOjFweH0ubGlua2VkaW5fYnV0dG9uPnNwYW4sLnBpbnRlcmVzdF9idXR0b24sLnBvY2tldF9idXR0b24gaWZyYW1lLC50d2l0dGVyX2J1dHRvbnttYXJnaW46MCFpbXBvcnRhbnR9LmxpbmtlZGluX2J1dHRvbj5zcGFuLC5waW50ZXJlc3RfYnV0dG9uIGF7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCAuc2hhcmUtc2t5cGV7d2lkdGg6NTVweH1ib2R5IC5zZC1zb2NpYWwtb2ZmaWNpYWwgbGkgYS5zaGFyZS1tb3JlLGJvZHkgLnNkLXNvY2lhbC1vZmZpY2lhbCBsaS5zaGFyZS1jdXN0b20gYSxib2R5IC5zZC1zb2NpYWwtb2ZmaWNpYWwgbGkuc2hhcmUtZGlnZyBhLGJvZHkgLnNkLXNvY2lhbC1vZmZpY2lhbCBsaS5zaGFyZS1lbWFpbCBhLGJvZHkgLnNkLXNvY2lhbC1vZmZpY2lhbCBsaS5zaGFyZS1wcmVzcy10aGlzIGEsYm9keSAuc2Qtc29jaWFsLW9mZmljaWFsIGxpLnNoYXJlLXByaW50e3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowfWJvZHkgLnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IGxpLnNoYXJlLWN1c3RvbT5he3BhZGRpbmc6MnB4IDNweCAwIDNweDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6NHB4fWJvZHkgLnNkLWNvbnRlbnQgdWwgbGkuc2hhcmUtY3VzdG9tIGEuc2hhcmUtaWNvbiBzcGFuLGJvZHkgLnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IGxpLnNoYXJlLWN1c3RvbSBhIHNwYW4sYm9keSAuc2Qtc29jaWFsLWljb24tdGV4dCAuc2QtY29udGVudCBsaS5zaGFyZS1jdXN0b20gYSBzcGFuLGJvZHkgLnNkLXNvY2lhbC1vZmZpY2lhbCAuc2QtY29udGVudCBsaS5zaGFyZS1jdXN0b20gYSBzcGFuLGJvZHkgLnNkLXNvY2lhbC10ZXh0IC5zZC1jb250ZW50IGxpLnNoYXJlLWN1c3RvbSBhIHNwYW57YmFja2dyb3VuZC1zaXplOjE2cHggMTZweDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7bWFyZ2luLWxlZnQ6MDtwYWRkaW5nOjAgMCAwIDE5cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjIxcHg7bGluZS1oZWlnaHQ6MTZweH1ib2R5IC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCBsaS5zaGFyZS1jdXN0b20gYSBzcGFue3dpZHRoOjB9Ym9keSAuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgbGkuc2hhcmUtY3VzdG9tIGEgc3BhbntwYWRkaW5nLWxlZnQ6MTZweCFpbXBvcnRhbnR9LnNoYXJpbmctaGlkZGVuIC5pbm5lcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjI7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6MTBweDtiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzowIDVweCAyMHB4IHJnYmEoMCwwLDAsLjIpO2JvcmRlci1yYWRpdXM6MnB4O21hcmdpbi10b3A6NXB4O21heC13aWR0aDo0MDBweH0uc2hhcmluZy1oaWRkZW4gLmlubmVyIHVse21hcmdpbjowIWltcG9ydGFudH0uc2Qtc29jaWFsLW9mZmljaWFsIC5zZC1jb250ZW50IC5zaGFyaW5nLWhpZGRlbiB1bD5saS5zaGFyZS1lbmR7Y2xlYXI6Ym90aDttYXJnaW46MCFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50fS5zaGFyaW5nLWhpZGRlbiAuaW5uZXI6YWZ0ZXIsLnNoYXJpbmctaGlkZGVuIC5pbm5lcjpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3RvcDotOHB4O2xlZnQ6MjBweDt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206OHB4IHNvbGlkICNjY2M7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrfS5zaGFyaW5nLWhpZGRlbiAuaW5uZXI6YWZ0ZXJ7ei1pbmRleDoyO3RvcDotN3B4O2JvcmRlci1sZWZ0OjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206OHB4IHNvbGlkICNmZmZ9LnNoYXJpbmctaGlkZGVuIHVse21hcmdpbjowfS5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXSBhLC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXSBhOmhvdmVyLC5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXSBkaXYub3B0aW9uIGF7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MDtib3gtc2hhZG93Om5vbmU7cGFkZGluZzo3cHg7cG9zaXRpb246cmVsYXRpdmU7dG9wOi0ycHg7bGluZS1oZWlnaHQ6MTt3aWR0aDphdXRvO2hlaWdodDphdXRvO21hcmdpbi1ib3R0b206MH0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGlbY2xhc3MqPXNoYXJlLV0gYS5zZC1idXR0b24+c3Bhbiwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGlbY2xhc3MqPXNoYXJlLV0gZGl2Lm9wdGlvbiBhIHNwYW57bGluZS1oZWlnaHQ6MX0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGlbY2xhc3MqPXNoYXJlLV0gYTpob3Zlciwuc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGlbY2xhc3MqPXNoYXJlLV0gZGl2Lm9wdGlvbiBhOmhvdmVye2JvcmRlcjpub25lO29wYWNpdHk6LjZ9LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpW2NsYXNzKj1zaGFyZS1dIGEuc2QtYnV0dG9uOmJlZm9yZXt0b3A6MH0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGlbY2xhc3MqPXNoYXJlLV0gYS5zZC1idXR0b24uc2hhcmUtY3VzdG9te3BhZGRpbmc6OHB4IDhweCA2cHggOHB4O3RvcDo1cHh9LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpIGEuc2QtYnV0dG9uLnNoYXJlLW1vcmV7bWFyZ2luLWxlZnQ6MTBweH0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGk6Zmlyc3QtY2hpbGQgYS5zZC1idXR0b24uc2hhcmUtbW9yZXttYXJnaW4tbGVmdDowfS5zZC1zb2NpYWwtaWNvbiAuc2QtYnV0dG9uIHNwYW4uc2hhcmUtY291bnR7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7cmlnaHQ6MDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDojNTU1O2ZvbnQtc2l6ZTo5cHh9LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpW2NsYXNzKj1zaGFyZS1dIGEuc2QtYnV0dG9ue2JhY2tncm91bmQ6I2U5ZTllOTttYXJnaW4tdG9wOjJweDt0ZXh0LWluZGVudDowfS5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXS5zaGFyZS10dW1ibHIgYS5zZC1idXR0b257YmFja2dyb3VuZDojMmM0NzYyO2NvbG9yOiNmZmYhaW1wb3J0YW50fS5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXS5zaGFyZS1mYWNlYm9vayBhLnNkLWJ1dHRvbntiYWNrZ3JvdW5kOiMxODc3ZjI7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpW2NsYXNzKj1zaGFyZS1dLnNoYXJlLXR3aXR0ZXIgYS5zZC1idXR0b257YmFja2dyb3VuZDojMDBhY2VlO2NvbG9yOiNmZmYhaW1wb3J0YW50fS5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXS5zaGFyZS1waW50ZXJlc3QgYS5zZC1idXR0b257YmFja2dyb3VuZDojY2ExZjI3O2NvbG9yOiNmZmYhaW1wb3J0YW50fS5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXS5zaGFyZS1kaWdnIGEuc2QtYnV0dG9ue2NvbG9yOiM1NTUhaW1wb3J0YW50fS5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXS5zaGFyZS1wcmVzcy10aGlzIGEuc2QtYnV0dG9ue2JhY2tncm91bmQ6IzRmOTRkNDtjb2xvcjojZmZmIWltcG9ydGFudH0uc2Qtc29jaWFsLWljb24gLnNkLWNvbnRlbnQgdWwgbGlbY2xhc3MqPXNoYXJlLV0uc2hhcmUtdGVsZWdyYW0gYS5zZC1idXR0b257YmFja2dyb3VuZDojMDhjO2NvbG9yOiNmZmYhaW1wb3J0YW50fS5zZC1zb2NpYWwtaWNvbiAuc2QtY29udGVudCB1bCBsaVtjbGFzcyo9c2hhcmUtXS5zaGFyZS1saW5rZWRpbiBhLnNkLWJ1dHRvbntiYWNrZ3JvdW5kOiMwMDc3YjU7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpW2NsYXNzKj1zaGFyZS1dLnNoYXJlLXBvY2tldCBhLnNkLWJ1dHRvbntiYWNrZ3JvdW5kOiNlZTQwNTY7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpW2NsYXNzKj1zaGFyZS1dLnNoYXJlLXJlZGRpdCBhLnNkLWJ1dHRvbntiYWNrZ3JvdW5kOiNjZWUzZjg7Y29sb3I6IzU1NSFpbXBvcnRhbnR9LnNkLXNvY2lhbC1pY29uIC5zZC1jb250ZW50IHVsIGxpW2NsYXNzKj1zaGFyZS1dLnNoYXJlLXNreXBlIGEuc2QtYnV0dG9ue2JhY2tncm91bmQ6IzAwYWZmMDtjb2xvcjojZmZmIWltcG9ydGFudH0uc2hhcmluZy1zY3JlZW4tcmVhZGVyLXRleHR7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCk7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2hlaWdodDoxcHg7d2lkdGg6MXB4O292ZXJmbG93OmhpZGRlbn0uc2hhcmluZy1zY3JlZW4tcmVhZGVyLXRleHQ6YWN0aXZlLC5zaGFyaW5nLXNjcmVlbi1yZWFkZXItdGV4dDpmb2N1cywuc2hhcmluZy1zY3JlZW4tcmVhZGVyLXRleHQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjBmMGYxO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAwIDJweCAycHggcmdiYSgwLDAsMCwuNik7Y2xpcDphdXRvIWltcG9ydGFudDtjb2xvcjojMjE3NTliO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO2hlaWdodDphdXRvO2xlZnQ6NXB4O2xpbmUtaGVpZ2h0Om5vcm1hbDtwYWRkaW5nOjE1cHggMjNweCAxNHB4O3RleHQtZGVjb3JhdGlvbjpub25lO3RvcDo1cHg7d2lkdGg6YXV0bzt6LWluZGV4OjEwMDAwMH0jc2hhcmluZ19lbWFpbHt3aWR0aDozNDJweDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDE7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6MTVweDtiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzowIDVweCAyMHB4IHJnYmEoMCwwLDAsLjIpO3RleHQtYWxpZ246bGVmdH1kaXYuc2hhcmVkYWRkeS5zaGFyZWRhZGR5LWRhcmsgI3NoYXJpbmdfZW1haWx7Ym9yZGVyLWNvbG9yOiNmZmZ9I3NoYXJpbmdfZW1haWwgLmVycm9yc3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6Izc3MWEwOTtmb250LXNpemU6MTJweDtwYWRkaW5nOjVweCA4cHg7bGluZS1oZWlnaHQ6MTttYXJnaW46MTBweCAwIDAgMH0jc2hhcmluZ19lbWFpbCBsYWJlbHtmb250LXNpemU6MTJweDtjb2xvcjojMzMzO2ZvbnQtd2VpZ2h0OjcwMDtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MCAwIDRweCAwO3RleHQtYWxpZ246bGVmdDt0ZXh0LXNoYWRvdzpub25lfSNzaGFyaW5nX2VtYWlsIGZvcm17bWFyZ2luOjB9I3NoYXJpbmdfZW1haWwgaW5wdXRbdHlwZT1lbWFpbF0sI3NoYXJpbmdfZW1haWwgaW5wdXRbdHlwZT10ZXh0XXt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6MXB4IHNvbGlkICNjY2M7bWFyZ2luLWJvdHRvbToxZW07YmFja2dyb3VuZDojZmZmO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiMzMzM7bWF4LXdpZHRoOm5vbmU7cGFkZGluZzoxcHggM3B4fSNqZXRwYWNrLXNvdXJjZV9mX25hbWV7ZGlzcGxheTpub25lIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7bGVmdDotOTAwMHB4fSNzaGFyaW5nX2VtYWlsIC5zaGFyaW5nX2NhbmNlbHtwYWRkaW5nOjAgMCAwIDFlbTtmb250LXNpemU6MTJweDt0ZXh0LXNoYWRvdzpub25lfSNzaGFyaW5nX2VtYWlsIC5yZWNhcHRjaGF7d2lkdGg6MzEycHg7aGVpZ2h0OjEyM3B4O21hcmdpbjowIDAgMWVtIDB9LnNkLWNvbnRlbnQgLnNoYXJlLWN1c3RvbWl6ZS1saW5re21hcmdpbi10b3A6MDtsaW5lLWhlaWdodDoxMXB4fS5zZC1jb250ZW50IC5zaGFyZS1jdXN0b21pemUtbGluayBhe2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5OiJPcGVuIFNhbnMiLHNhbnMtc2VyaWZ9QG1lZGlhIHByaW50ey5zaGFyZWRhZGR5LnNkLXNoYXJpbmctZW5hYmxlZHtkaXNwbGF5Om5vbmV9fQouc2xpZGVzaG93LXdpbmRvd3tiYWNrZ3JvdW5kLWNvbG9yOiMyMjI7Ym9yZGVyOjIwcHggc29saWQgIzIyMjtib3JkZXItcmFkaXVzOjEwcHg7aGVpZ2h0OjA7bWFyZ2luLWJvdHRvbToyMHB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLXRvcDozMHB4IWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTo1Ni4yNSUhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MX0uc2xpZGVzaG93LXdpbmRvdy5zbGlkZXNob3ctd2hpdGV7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS5zbGlkZXNob3ctd2luZG93LC5zbGlkZXNob3ctd2luZG93ICp7Ym94LXNpemluZzpjb250ZW50LWJveH0uc2xpZGVzaG93LWxvYWRpbmd7aGVpZ2h0OjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOmF1dG99Ym9keSBkaXYuc2xpZGVzaG93LXdpbmRvdyAqIGltZ3tiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmUhaW1wb3J0YW50O2JvcmRlci13aWR0aDowIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrO21hcmdpbjowIGF1dG87bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlO3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7dG9wOjUwJX0uc2xpZGVzaG93LWxvYWRpbmcgaW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uc2xpZGVzaG93LXNsaWRle2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7bGVmdDowO21hcmdpbjphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO3RvcDowO3dpZHRoOjEwMCUhaW1wb3J0YW50fS5zbGlkZXNob3ctc2xpZGUgaW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uc2xpZGVzaG93LWxpbmUtaGVpZ2h0LWhhY2t7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjA7Zm9udC1zaXplOjB9LnNsaWRlc2hvdy1zbGlkZS1jYXB0aW9ue2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjtjb2xvcjojZjZmN2Y3O3RleHQtc2hhZG93OiMyMjIgMXB4IDFweCAycHg7bGluZS1oZWlnaHQ6MjVweDtoZWlnaHQ6MjVweDtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206NXB4O2xlZnQ6MDt6LWluZGV4OjEwMDt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyfS5zbGlkZXNob3ctY29udHJvbHN7ei1pbmRleDoxMDAwO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTozMHB4O21hcmdpbjphdXRvO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCU7b3BhY2l0eTouNTtkaXJlY3Rpb246bHRyO3RyYW5zaXRpb246LjNzIG9wYWNpdHkgZWFzZS1vdXR9LnNsaWRlc2hvdy13aW5kb3c6aG92ZXIgLnNsaWRlc2hvdy1jb250cm9sc3tvcGFjaXR5OjF9Ym9keSBkaXYgZGl2LnNsaWRlc2hvdy1jb250cm9scyBhLGJvZHkgZGl2IGRpdi5zbGlkZXNob3ctY29udHJvbHMgYTpob3Zlcntib3JkZXI6MnB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEpIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNikhaW1wb3J0YW50O2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL21vZHVsZXMvc2hvcnRjb2Rlcy9pbWcvc2xpZGVzaG93LWNvbnRyb2xzLnBuZykhaW1wb3J0YW50O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MTQycHggMTZweCFpbXBvcnRhbnQ7YmFja2dyb3VuZC1wb3NpdGlvbjotMzRweCA4cHghaW1wb3J0YW50O2NvbG9yOiMyMjIhaW1wb3J0YW50O21hcmdpbjowIDVweCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnQ7em9vbToxO2hlaWdodDozMnB4IWltcG9ydGFudDt3aWR0aDozMnB4IWltcG9ydGFudDtsaW5lLWhlaWdodDozMnB4IWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoxMGVtIWltcG9ydGFudDt0cmFuc2l0aW9uOi4zcyBib3JkZXItY29sb3IgZWFzZS1vdXR9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSl7Ym9keSBkaXYgZGl2LnNsaWRlc2hvdy1jb250cm9scyBhLGJvZHkgZGl2IGRpdi5zbGlkZXNob3ctY29udHJvbHMgYTpob3ZlcntiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9tb2R1bGVzL3Nob3J0Y29kZXMvaW1nL3NsaWRlc2hvdy1jb250cm9scy0yeC5wbmcpIWltcG9ydGFudH19Ym9keSBkaXYgZGl2LnNsaWRlc2hvdy1jb250cm9scyBhOmhvdmVye2JvcmRlci1jb2xvcjojZmZmIWltcG9ydGFudH1ib2R5IGRpdiBkaXYuc2xpZGVzaG93LWNvbnRyb2xzIGE6Zmlyc3QtY2hpbGR7YmFja2dyb3VuZC1wb3NpdGlvbjotNzZweCA4cHghaW1wb3J0YW50fWJvZHkgZGl2IGRpdi5zbGlkZXNob3ctY29udHJvbHMgYTpsYXN0LWNoaWxke2JhY2tncm91bmQtcG9zaXRpb246LTExN3B4IDhweCFpbXBvcnRhbnR9Ym9keSBkaXYgZGl2LnNsaWRlc2hvdy1jb250cm9scyBhOm50aC1jaGlsZCgyKXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNHB4IDhweCFpbXBvcnRhbnR9Ym9keSBkaXYgZGl2LnNsaWRlc2hvdy1jb250cm9scyBhLnJ1bm5pbmd7YmFja2dyb3VuZC1wb3NpdGlvbjotMzRweCA4cHghaW1wb3J0YW50fWJvZHkgZGl2IGRpdi5zbGlkZXNob3ctY29udHJvbHMgYS5wYXVzZWR7YmFja2dyb3VuZC1wb3NpdGlvbjo5cHggOHB4IWltcG9ydGFudH0uc2xpZGVzaG93LWNvbnRyb2xzIGEgaW1ne2JvcmRlcjo1MHB4IGRvdHRlZCAjZjBmfQpib2R5LnByZXNlbnRhdGlvbi13cmFwcGVyLWZ1bGxzY3JlZW4tcGFyZW50LGh0bWwucHJlc2VudGF0aW9uLXdyYXBwZXItZnVsbHNjcmVlbi1wYXJlbnR7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0ucHJlc2VudGF0aW9uLXdyYXBwZXItZnVsbHNjcmVlbi1wYXJlbnQgI3dwYWRtaW5iYXJ7ZGlzcGxheTpub25lfS5wcmVzZW50YXRpb24td3JhcHBlci1mdWxsc2NyZWVuLC5wcmVzZW50YXRpb24td3JhcHBlci1mdWxsc2NyZWVuLXBhcmVudHttaW4td2lkdGg6MTAwJSFpbXBvcnRhbnQ7bWluLWhlaWdodDoxMDAlIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7dG9wOjAhaW1wb3J0YW50O3JpZ2h0OjAhaW1wb3J0YW50O2JvdHRvbTowIWltcG9ydGFudDtsZWZ0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3otaW5kZXg6MTAwMDAhaW1wb3J0YW50fS5wcmVzZW50YXRpb24td3JhcHBlci1mdWxsc2NyZWVue2JhY2tncm91bmQtY29sb3I6Z3JleTtib3JkZXI6bm9uZSFpbXBvcnRhbnR9LnByZXNlbnRhdGlvbi13cmFwcGVyLWZ1bGxzY3JlZW4gLm5hdi1hcnJvdy1sZWZ0LC5wcmVzZW50YXRpb24td3JhcHBlci1mdWxsc2NyZWVuIC5uYXYtYXJyb3ctcmlnaHR7ei1pbmRleDoyMDAwMX0ucHJlc2VudGF0aW9uLXdyYXBwZXItZnVsbHNjcmVlbiAubmF2LWZ1bGxzY3JlZW4tYnV0dG9ue3otaW5kZXg6MjAwMDJ9LnByZXNlbnRhdGlvbi13cmFwcGVye21hcmdpbjoyMHB4IGF1dG87Ym9yZGVyOjFweCBzb2xpZCAjZGNkY2RlO292ZXJmbG93OmhpZGRlbjtsaW5lLWhlaWdodDpub3JtYWx9LnByZXNlbnRhdGlvbntwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDtvdmVyZmxvdzpoaWRkZW47b3V0bGluZTowfS5wcmVzZW50YXRpb24sLnByZXNlbnRhdGlvbiAuc3RlcHtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0ucHJlc2VudGF0aW9uIC5zdGVwLmZhZGU6bm90KC5hY3RpdmUpe29wYWNpdHk6MH0ucHJlc2VudGF0aW9uIC5zbGlkZS1jb250ZW50e3BhZGRpbmc6MzBweH0ucHJlc2VudGF0aW9uIC5uYXYtYXJyb3ctbGVmdCwucHJlc2VudGF0aW9uIC5uYXYtYXJyb3ctcmlnaHQsLnByZXNlbnRhdGlvbiAubmF2LWZ1bGxzY3JlZW4tYnV0dG9ue3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjM0cHg7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3otaW5kZXg6MjtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4yNXN9LnByZXNlbnRhdGlvbiAubmF2LWFycm93LWxlZnQsLnByZXNlbnRhdGlvbiAubmF2LWFycm93LXJpZ2h0e2hlaWdodDoxMDAlO2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL21vZHVsZXMvc2hvcnRjb2Rlcy9pbWFnZXMvc2xpZGUtbmF2LnBuZyk7YmFja2dyb3VuZC1zaXplOjQ1MCUgNjFweH0ucHJlc2VudGF0aW9uIC5uYXYtYXJyb3ctbGVmdHtsZWZ0OjA7YmFja2dyb3VuZC1wb3NpdGlvbjo0cHggNTAlfS5wcmVzZW50YXRpb24gLm5hdi1hcnJvdy1yaWdodHtyaWdodDowO2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IDUwJX0ucHJlc2VudGF0aW9uIC5uYXYtZnVsbHNjcmVlbi1idXR0b257d2lkdGg6MzJweDtoZWlnaHQ6MzJweDttYXJnaW46NHB4O2JvdHRvbTowO3JpZ2h0OjA7ei1pbmRleDozO2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL21vZHVsZXMvc2hvcnRjb2Rlcy9pbWFnZXMvZXhwYW5kLnBuZyk7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0ucHJlc2VudGF0aW9uOmhvdmVyIC5uYXYtYXJyb3ctbGVmdCwucHJlc2VudGF0aW9uOmhvdmVyIC5uYXYtYXJyb3ctcmlnaHR7b3BhY2l0eToxfS5wcmVzZW50YXRpb246aG92ZXIgLm5hdi1mdWxsc2NyZWVuLWJ1dHRvbntvcGFjaXR5Oi44fS5wcmVzZW50YXRpb24td3JhcHBlci1mdWxsc2NyZWVuIC5uYXYtZnVsbHNjcmVlbi1idXR0b257YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vbW9kdWxlcy9zaG9ydGNvZGVzL2ltYWdlcy9jb2xsYXBzZS5wbmcpfS5wcmVzZW50YXRpb24gLmF1dG9wbGF5LW92ZXJsYXl7aGVpZ2h0OjE1JTt3aWR0aDo4MCU7bWFyZ2luOjMwJSAxMCU7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxMDA7ZGlzcGxheTp0YWJsZTtib3JkZXItcmFkaXVzOjUwcHg7YmFja2dyb3VuZC1jb2xvcjojZGNkY2RlO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNzUpO3RyYW5zaXRpb246b3BhY2l0eSAuNXN9LnByZXNlbnRhdGlvbiAuYXV0b3BsYXktb3ZlcmxheSAub3ZlcmxheS1tc2d7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTp0YWJsZS1jZWxsO3RleHQtYWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjojZmZmfS5wcmVzZW50YXRpb24gLndpbGwtZmFkZXtvcGFjaXR5OjB9LnByZXNlbnRhdGlvbiAuZG8tZmFkZXtvcGFjaXR5OjE7dHJhbnNpdGlvbjpvcGFjaXR5IC41c30KZGl2LmpldHBhY2stcXVpentib3JkZXI6MXB4IHNvbGlkICNkZWVkZTM7YmFja2dyb3VuZC1jb2xvcjojZjNmM2YzO3BhZGRpbmc6MWVtO2xpbmUtaGVpZ2h0OjEuM2VtO21hcmdpbi1ib3R0b206MmVtO2JvcmRlci1yYWRpdXM6LjJlbX1kaXYuamV0cGFjay1xdWl6IGRpdi5qZXRwYWNrLXF1aXotcXVlc3Rpb257bWFyZ2luLWJvdHRvbTouNWVtO2ZvbnQtd2VpZ2h0OjcwMH1kaXYuamV0cGFjay1xdWl6IGRpdi5qZXRwYWNrLXF1aXotYW5zd2Vye2N1cnNvcjpwb2ludGVyO21hcmdpbi1ib3R0b206LjVlbTtwYWRkaW5nOjFlbSAwIDFlbSAxZW07Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkICM5OTl9ZGl2LmpldHBhY2stcXVpeiBkaXYuamV0cGFjay1xdWl6LWFuc3dlci5sYXN0e3BhZGRpbmctYm90dG9tOjA7bWFyZ2luLWJvdHRvbTowO2JvcmRlci1ib3R0b206MH1kaXYuamV0cGFjay1xdWl6IGRpdi5qZXRwYWNrLXF1aXotYW5zd2VyLmNvcnJlY3R7Y29sb3I6Z3JlZW59ZGl2LmpldHBhY2stcXVpeiBkaXYuamV0cGFjay1xdWl6LWFuc3dlci53cm9uZ3tjb2xvcjpyZWR9ZGl2LmpldHBhY2stcXVpeiBkaXYuamV0cGFjay1xdWl6LWFuc3dlciBkaXYuamV0cGFjay1xdWl6LWV4cGxhbmF0aW9ue2Rpc3BsYXk6bm9uZX1kaXYuamV0cGFjay1xdWl6IGRpdi5qZXRwYWNrLXF1aXotYW5zd2VyLmNvcnJlY3QgZGl2LmpldHBhY2stcXVpei1leHBsYW5hdGlvbixkaXYuamV0cGFjay1xdWl6IGRpdi5qZXRwYWNrLXF1aXotYW5zd2VyLndyb25nIGRpdi5qZXRwYWNrLXF1aXotZXhwbGFuYXRpb257ZGlzcGxheTpibG9jaztjb2xvcjojMDAwO2ZvbnQtc2l6ZTo5MCU7bWFyZ2luLXRvcDoxZW19ZGl2LmpldHBhY2stcXVpeiBkaXYuamV0cGFjay1xdWl6LWFuc3dlci5jb3JyZWN0IGRpdi5qZXRwYWNrLXF1aXotZXhwbGFuYXRpb24gdHQsZGl2LmpldHBhY2stcXVpeiBkaXYuamV0cGFjay1xdWl6LWFuc3dlci53cm9uZyBkaXYuamV0cGFjay1xdWl6LWV4cGxhbmF0aW9uIHR0e2ZvbnQtc2l6ZTo4NSV9ZGl2LmpldHBhY2stcXVpeiBwcmV7Zm9udDoxNXB4IE1vbmFjbyxDb25zb2xhcywiQW5kYWxlIE1vbm8iLCJEZWphVnUgU2FucyBNb25vIixtb25vc3BhY2U7YmFja2dyb3VuZDowIDA7bWFyZ2luOjA7cGFkZGluZzowfS5qZXRwYWNrLXF1aXotb3B0aW9uc3ttYXJnaW4tdG9wOjEycHg7dGV4dC1hbGlnbjpyaWdodH0uamV0cGFjay1xdWl6LWNvdW50e2NvbG9yOiM2NDY5NzA7ZmxvYXQ6bGVmdDtmb250LXNpemU6MTJweH0uamV0cGFjay1xdWl6LW9wdGlvbi1idXR0b257Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWxlZnQ6MTJweH0uamV0cGFjay1xdWl6LW9wdGlvbi1idXR0b246aG92ZXIgc3Zne2JhY2tncm91bmQ6IzNjNDM0YX0uamV0cGFjay1xdWl6LW9wdGlvbi1idXR0b24gc3Zne2JhY2tncm91bmQ6IzAwMDtib3JkZXItcmFkaXVzOjUwJTtkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOiNmZmY7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0uamV0cGFjay1xdWl6LXdyYXBwZXIgLmpldHBhY2stcXVpejpmaXJzdC1vZi10eXBlIC5qZXRwYWNrLXF1aXotb3B0aW9uLWJ1dHRvbjpmaXJzdC1vZi10eXBlLC5qZXRwYWNrLXF1aXotd3JhcHBlciAuamV0cGFjay1xdWl6Omxhc3Qtb2YtdHlwZSAuamV0cGFjay1xdWl6LW9wdGlvbi1idXR0b246bGFzdC1vZi10eXBle2Rpc3BsYXk6bm9uZX0KI3N1YnNjcmliZS1lbWFpbCBpbnB1dHt3aWR0aDo5NSV9LmNvbW1lbnQtc3Vic2NyaXB0aW9uLWZvcm17bWFyZ2luLWJvdHRvbToxZW19LmNvbW1lbnQtc3Vic2NyaXB0aW9uLWZvcm0gLnN1YnNjcmliZS1sYWJlbHtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LnNjcmVlbi1yZWFkZXItdGV4dHtib3JkZXI6MDtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTstd2Via2l0LWNsaXAtcGF0aDppbnNldCg1MCUpO2NsaXAtcGF0aDppbnNldCg1MCUpO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7d2lkdGg6MXB4O3dvcmQtd3JhcDpub3JtYWwhaW1wb3J0YW50fQouamV0cGFjay12aWRlby13cmFwcGVye21hcmdpbi1ib3R0b206MS42ZW19LmpldHBhY2stdmlkZW8td3JhcHBlcj4ud3AtdmlkZW8sLmpldHBhY2stdmlkZW8td3JhcHBlcj5lbWJlZCwuamV0cGFjay12aWRlby13cmFwcGVyPmlmcmFtZSwuamV0cGFjay12aWRlby13cmFwcGVyPm9iamVjdHttYXJnaW4tYm90dG9tOjB9Ci5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uIHVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgMCAxLjVlbTtwYWRkaW5nOjB9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24gbGl7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjA7bGluZS1oZWlnaHQ6MX0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbiBhe2JvcmRlcjowO2hlaWdodDoxZW07dGV4dC1kZWNvcmF0aW9uOm5vbmU7d2lkdGg6MWVtfS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLXN2ZyAuaWNvbntjb2xvcjppbmhlcml0O2ZpbGw6Y3VycmVudENvbG9yO2hlaWdodDoxZW07dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjFlbX0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGE6YmVmb3Jley13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtZmFtaWx5OkdlbmVyaWNvbnM7Zm9udC1zaXplOjFlbTtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7aGVpZ2h0OjFlbTtsaW5lLWhlaWdodDoxO3NwZWFrOm5vbmU7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7dmVydGljYWwtYWxpZ246dG9wO3dpZHRoOjFlbX0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGE6YmVmb3Jle2NvbnRlbnQ6IlxmNDE1In0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGFbaHJlZio9ImNvZGVwZW4uaW8iXTpiZWZvcmV7Y29udGVudDoiXGYyMTYifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0iZGlnZy5jb20iXTpiZWZvcmV7Y29udGVudDoiXGYyMjEifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0iZHJpYmJibGUuY29tIl06YmVmb3Jle2NvbnRlbnQ6IlxmMjAxIn0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGFbaHJlZio9ImRyb3Bib3guY29tIl06YmVmb3Jle2NvbnRlbnQ6IlxmMjI1In0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGFbaHJlZio9Im1haWx0bzoiXTpiZWZvcmV7Y29udGVudDoiXGY0MTAifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0iZmFjZWJvb2suY29tIl06YmVmb3Jle2NvbnRlbnQ6IlxmMjAzIn0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGFbaHJlZio9ImZsaWNrci5jb20iXTpiZWZvcmV7Y29udGVudDoiXGYyMTEifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0iZm91cnNxdWFyZS5jb20iXTpiZWZvcmV7Y29udGVudDoiXGYyMjYifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0iZ2l0aHViLmNvbSJdOmJlZm9yZXtjb250ZW50OiJcZjIwMCJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYqPSJwbHVzLmdvb2dsZS5jb20iXTpiZWZvcmV7Y29udGVudDoiXGYyMDYifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0iaW5zdGFncmFtLmNvbSJdOmJlZm9yZXtjb250ZW50OiJcZjIxNSJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYqPSJsaW5rZWRpbi5jb20iXTpiZWZvcmV7Y29udGVudDoiXGYyMDgifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0icGF0aC5jb20iXTpiZWZvcmV7Y29udGVudDoiXGYyMTkifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0icGludGVyZXN0LiJdOmJlZm9yZXtjb250ZW50OiJcZjIxMCJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYqPSJnZXRwb2NrZXQuY29tIl06YmVmb3Jle2NvbnRlbnQ6IlxmMjI0In0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGFbaHJlZio9InBvbGxkYWRkeS5jb20iXTpiZWZvcmV7Y29udGVudDoiXGYyMTcifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0icmVkZGl0LmNvbSJdOmJlZm9yZXtjb250ZW50OiJcZjIyMiJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYkPSIvZmVlZC8iXTpiZWZvcmV7Y29udGVudDoiXGY0MTMifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0ic2t5cGU6Il06YmVmb3Jle2NvbnRlbnQ6IlxmMjIwIn0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGFbaHJlZio9InNwb3RpZnkuY29tIl06YmVmb3Jle2NvbnRlbnQ6IlxmNTE1In0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGFbaHJlZio9InN0dW1ibGV1cG9uLmNvbSJdOmJlZm9yZXtjb250ZW50OiJcZjIyMyJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYqPSJ0dW1ibHIuY29tIl06YmVmb3Jle2NvbnRlbnQ6IlxmMjE0In0uamV0cGFjay1zb2NpYWwtbmF2aWdhdGlvbi1nZW5lcmljb25zIGFbaHJlZio9InR3aXRjaC50diJdOmJlZm9yZXtjb250ZW50OiJcZjUxNiJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYqPSJ0d2l0dGVyLmNvbSJdOmJlZm9yZXtjb250ZW50OiJcZjIwMiJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYqPSJ2aW1lby5jb20iXTpiZWZvcmV7Y29udGVudDoiXGYyMTIifS5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0idmluZS5jbyJdOmJlZm9yZXtjb250ZW50OiJcZjUxNyJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYqPSJ3b3JkcHJlc3MuY29tIl06YmVmb3JlLC5qZXRwYWNrLXNvY2lhbC1uYXZpZ2F0aW9uLWdlbmVyaWNvbnMgYVtocmVmKj0id29yZHByZXNzLm9yZyJdOmJlZm9yZXtjb250ZW50OiJcZjIwNSJ9LmpldHBhY2stc29jaWFsLW5hdmlnYXRpb24tZ2VuZXJpY29ucyBhW2hyZWYqPSJ5b3V0dWJlLmNvbSJdOmJlZm9yZXtjb250ZW50OiJcZjIxMyJ9Ci50aWxlZC1nYWxsZXJ5e2NsZWFyOmJvdGg7bWFyZ2luOjAgMCAyMHB4O292ZXJmbG93OmhpZGRlbn0udGlsZWQtZ2FsbGVyeSBpbWd7bWFyZ2luOjJweCFpbXBvcnRhbnR9LnRpbGVkLWdhbGxlcnkgLmdhbGxlcnktZ3JvdXB7ZmxvYXQ6bGVmdDtwb3NpdGlvbjpyZWxhdGl2ZX0udGlsZWQtZ2FsbGVyeSAudGlsZWQtZ2FsbGVyeS1pdGVte2Zsb2F0OmxlZnQ7bWFyZ2luOjA7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6aW5oZXJpdH0udGlsZWQtZ2FsbGVyeSAuZ2FsbGVyeS1yb3d7b3ZlcmZsb3c6aGlkZGVufS50aWxlZC1nYWxsZXJ5IC50aWxlZC1nYWxsZXJ5LWl0ZW0gYXtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6bm9uZTtjb2xvcjppbmhlcml0O21hcmdpbjowO3BhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb246bm9uZTt3aWR0aDphdXRvfS50aWxlZC1nYWxsZXJ5IC50aWxlZC1nYWxsZXJ5LWl0ZW0gaW1nLC50aWxlZC1nYWxsZXJ5IC50aWxlZC1nYWxsZXJ5LWl0ZW0gaW1nOmhvdmVye2JhY2tncm91bmQ6MCAwO2JvcmRlcjpub25lO2JveC1zaGFkb3c6bm9uZTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS50aWxlZC1nYWxsZXJ5LWNhcHRpb257YmFja2dyb3VuZDojZjBmMGYxO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOCk7Y29sb3I6IzMzMztmb250LXNpemU6MTNweDtmb250LXdlaWdodDo0MDA7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MTBweCAwO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO3RleHQtaW5kZW50OjEwcHg7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcH0udGlsZWQtZ2FsbGVyeSAudGlsZWQtZ2FsbGVyeS1pdGVtLXNtYWxsIC50aWxlZC1nYWxsZXJ5LWNhcHRpb257Zm9udC1zaXplOjExcHh9LndpZGdldC1nYWxsZXJ5IC50aWxlZC1nYWxsZXJ5LXVucmVzaXplZHt2aXNpYmlsaXR5OmhpZGRlbjtoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW59LnRpbGVkLWdhbGxlcnkgLnRpbGVkLWdhbGxlcnktaXRlbSBpbWcuZ3JheXNjYWxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0udGlsZWQtZ2FsbGVyeSAudGlsZWQtZ2FsbGVyeS1pdGVtIGltZy5ncmF5c2NhbGU6aG92ZXJ7b3BhY2l0eTowfS50aWxlZC1nYWxsZXJ5LnR5cGUtY2lyY2xlIC50aWxlZC1nYWxsZXJ5LWl0ZW0gaW1ne2JvcmRlci1yYWRpdXM6NTAlIWltcG9ydGFudDstby1vYmplY3QtZml0OmNvdmVyO29iamVjdC1maXQ6Y292ZXJ9LnRpbGVkLWdhbGxlcnkudHlwZS1jaXJjbGUgLnRpbGVkLWdhbGxlcnktY2FwdGlvbntkaXNwbGF5Om5vbmV9LnRpbGVkLWdhbGxlcnkudHlwZS1zcXVhcmUgLnRpbGVkLWdhbGxlcnktaXRlbSBpbWd7LW8tb2JqZWN0LWZpdDpjb3ZlcjtvYmplY3QtZml0OmNvdmVyfQouamV0cGFjay1kaXNwbGF5LXJlbW90ZS1wb3N0c3ttYXJnaW46NXB4IDAgMjBweCAwfS5qZXRwYWNrLWRpc3BsYXktcmVtb3RlLXBvc3RzIGg0e21hcmdpbjo1cHggMDtwYWRkaW5nOjB9LmpldHBhY2stZGlzcGxheS1yZW1vdGUtcG9zdHMgcHttYXJnaW46MDtwYWRkaW5nOjB9LmpldHBhY2stZGlzcGxheS1yZW1vdGUtcG9zdHMgaW1ne21heC13aWR0aDoxMDAlfQoud2lkZ2V0LWdyb2ZpbGUgaDR7bWFyZ2luOjFlbSAwIC41ZW19LndpZGdldC1ncm9maWxlIHVsLmdyb2ZpbGUtdXJsc3ttYXJnaW4tbGVmdDowO292ZXJmbG93OmhpZGRlbn0ud2lkZ2V0LWdyb2ZpbGUgdWwuZ3JvZmlsZS1hY2NvdW50cyBsaXtsaXN0LXN0eWxlOm5vbmU7ZGlzcGxheTppbmxpbmV9LndpZGdldC1ncm9maWxlIHVsLmdyb2ZpbGUtYWNjb3VudHMgbGk6OmJlZm9yZXtjb250ZW50OiIiIWltcG9ydGFudH0ud2lkZ2V0LWdyb2ZpbGUgLmdyb2ZpbGUtYWNjb3VudHMtbG9nb3tiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwczovL3NlY3VyZS5ncmF2YXRhci5jb20vaW1hZ2VzL2dyYXYtc2hhcmUtc3ByaXRlLnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1ib3R0b206OHB4fS5ydGwgLndpZGdldC1ncm9maWxlIC5ncm9maWxlLWFjY291bnRzLWxvZ297bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfS5ncm9maWxlLXRodW1ibmFpbHt3aWR0aDo1MDBweDttYXgtd2lkdGg6MTAwJX1AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSxvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86My8yKSxvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzoxLjUpLG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpey53aWRnZXQtZ3JvZmlsZSAuZ3JvZmlsZS1hY2NvdW50cy1sb2dve2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vc2VjdXJlLmdyYXZhdGFyLmNvbS9pbWFnZXMvZ3Jhdi1zaGFyZS1zcHJpdGUtMngucG5nKTtiYWNrZ3JvdW5kLXNpemU6MTZweCA3ODRweH19CmRpdltjbGFzc149Z3JfY3VzdG9tX2NvbnRhaW5lcl17Ym9yZGVyOjFweCBzb2xpZCBncmF5O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEwcHggNXB4IDEwcHggNXB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMDAwfWRpdltjbGFzc149Z3JfY3VzdG9tX2NvbnRhaW5lcl0gYXtjb2xvcjojMDAwfWgyW2NsYXNzXj1ncl9jdXN0b21faGVhZGVyXXtkaXNwbGF5Om5vbmV9ZGl2W2NsYXNzXj1ncl9jdXN0b21fZWFjaF9jb250YWluZXJde3dpZHRoOjEwMCU7Y2xlYXI6Ym90aDttYXJnaW4tYm90dG9tOjEwcHg7b3ZlcmZsb3c6YXV0bztwYWRkaW5nLWJvdHRvbTo0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2E3YWFhZH1kaXZbY2xhc3NePWdyX2N1c3RvbV9ib29rX2NvbnRhaW5lcl17ZmxvYXQ6cmlnaHQ7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDo2MHB4O21hcmdpbi1sZWZ0OjRweDt3aWR0aDozOXB4fWRpdltjbGFzc149Z3JfY3VzdG9tX2F1dGhvcl17Zm9udC1zaXplOjEwcHh9ZGl2W2NsYXNzXj1ncl9jdXN0b21fdGFnc117Zm9udC1zaXplOjEwcHg7Y29sb3I6Z3JheX1kaXZbY2xhc3NePWdyX2N1c3RvbV9yYXRpbmdde2Rpc3BsYXk6bm9uZX0KLndpZGdldF93cGNvbV9zb2NpYWxfbWVkaWFfaWNvbnNfd2lkZ2V0IHVse2xpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbi1sZWZ0OjB9LndpZGdldF93cGNvbV9zb2NpYWxfbWVkaWFfaWNvbnNfd2lkZ2V0IHVsIGxpe2JvcmRlcjowIG5vbmU7ZGlzcGxheTppbmxpbmU7bWFyZ2luLXJpZ2h0Oi41ZW19LndpZGdldF93cGNvbV9zb2NpYWxfbWVkaWFfaWNvbnNfd2lkZ2V0IGxpIGF7Ym9yZGVyOjAgbm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZX0ud2lkZ2V0X3dwY29tX3NvY2lhbF9tZWRpYV9pY29uc193aWRnZXQgLmdlbmVyaWNvbntmb250LWZhbWlseTpHZW5lcmljb25zfS53aWRnZXRfd3Bjb21fc29jaWFsX21lZGlhX2ljb25zX3dpZGdldCAuc2NyZWVuLXJlYWRlci10ZXh0e2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW59LndpZGdldF93cGNvbV9zb2NpYWxfbWVkaWFfaWNvbnNfd2lkZ2V0IC5zY3JlZW4tcmVhZGVyLXRleHQ6YWN0aXZlLC53aWRnZXRfd3Bjb21fc29jaWFsX21lZGlhX2ljb25zX3dpZGdldCAuc2NyZWVuLXJlYWRlci10ZXh0OmZvY3VzLC53aWRnZXRfd3Bjb21fc29jaWFsX21lZGlhX2ljb25zX3dpZGdldCAuc2NyZWVuLXJlYWRlci10ZXh0OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2YwZjBmMTtib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMCAycHggMnB4IHJnYmEoMCwwLDAsLjYpO2NsaXA6YXV0byFpbXBvcnRhbnQ7Y29sb3I6IzIxNzU5YjtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtd2VpZ2h0OjcwMDtoZWlnaHQ6YXV0bztsZWZ0OjVweDtsaW5lLWhlaWdodDpub3JtYWw7cGFkZGluZzoxNXB4IDIzcHggMTRweDt0ZXh0LWRlY29yYXRpb246bm9uZTt0b3A6NXB4O3dpZHRoOmF1dG87ei1pbmRleDoxMDAwMDB9Ci53aWRnZXRzLWdyaWQtbGF5b3V0e3dpZHRoOjEwMCV9LndpZGdldHMtZ3JpZC1sYXlvdXQ6YWZ0ZXIsLndpZGdldHMtZ3JpZC1sYXlvdXQ6YmVmb3Jle2NvbnRlbnQ6IiAiO2Rpc3BsYXk6dGFibGV9LndpZGdldHMtZ3JpZC1sYXlvdXQ6YWZ0ZXJ7Y2xlYXI6Ym90aH0ud2lkZ2V0LWdyaWQtdmlldy1pbWFnZXtmbG9hdDpsZWZ0O21heC13aWR0aDo1MCV9LndpZGdldC1ncmlkLXZpZXctaW1hZ2UgYXtkaXNwbGF5OmJsb2NrO21hcmdpbjowIDJweCA0cHggMH0ud2lkZ2V0LWdyaWQtdmlldy1pbWFnZTpudGgtY2hpbGQoZXZlbil7ZmxvYXQ6cmlnaHR9LndpZGdldC1ncmlkLXZpZXctaW1hZ2U6bnRoLWNoaWxkKGV2ZW4pIGF7bWFyZ2luOjAgMCA0cHggMnB4fS53aWRnZXRzLWdyaWQtbGF5b3V0IC53aWRnZXQtZ3JpZC12aWV3LWltYWdlIGltZ3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30ud2lkZ2V0cy1tdWx0aS1jb2x1bW4tZ3JpZCB1bHtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO21hcmdpbjowO2xpc3Qtc3R5bGUtdHlwZTpub25lfS53aWRnZXRzLW11bHRpLWNvbHVtbi1ncmlkIHVsIGxpe2JhY2tncm91bmQ6MCAwO2NsZWFyOm5vbmU7ZmxvYXQ6bGVmdDttYXJnaW46MCAtNXB4IC0zcHggMDtwYWRkaW5nOjAgOHB4IDZweCAwO2JvcmRlcjpub25lO2xpc3Qtc3R5bGUtdHlwZTpub25lIWltcG9ydGFudH0ud2lkZ2V0cy1tdWx0aS1jb2x1bW4tZ3JpZCB1bCBsaSBhe2JhY2tncm91bmQ6MCAwO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MH0ud2lkZ2V0cy1tdWx0aS1jb2x1bW4tZ3JpZCAuYXZhdGFye3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ud2lkZ2V0cy1saXN0LWxheW91dHtwYWRkaW5nOjA7bWFyZ2luOjA7bGlzdC1zdHlsZS10eXBlOm5vbmV9LndpZGdldHMtbGlzdC1sYXlvdXQgbGk6YWZ0ZXIsLndpZGdldHMtbGlzdC1sYXlvdXQgbGk6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZX0ud2lkZ2V0cy1saXN0LWxheW91dCBsaTphZnRlcntjbGVhcjpib3RofS53aWRnZXRzLWxpc3QtbGF5b3V0IGxpe3pvb206MTttYXJnaW4tYm90dG9tOjFlbTtsaXN0LXN0eWxlLXR5cGU6bm9uZSFpbXBvcnRhbnR9LndpZGdldHMtbGlzdC1sYXlvdXQgLndpZGdldHMtbGlzdC1sYXlvdXQtYmxhdmF0YXJ7ZmxvYXQ6bGVmdDt3aWR0aDoyMS4yNzY1OTYlO21heC13aWR0aDo0MHB4O2hlaWdodDphdXRvfS53aWRnZXRzLWxpc3QtbGF5b3V0LWxpbmtze2Zsb2F0OnJpZ2h0O3dpZHRoOjczLjQwNDI1NSV9LndpZGdldHMtbGlzdC1sYXlvdXQgc3BhbntvcGFjaXR5Oi41fS53aWRnZXRzLWxpc3QtbGF5b3V0IHNwYW46aG92ZXJ7b3BhY2l0eTouOH0KLmpldHBhY2staW1hZ2UtY29udGFpbmVyOmFmdGVye2NsZWFyOmJvdGh9LmpldHBhY2staW1hZ2UtY29udGFpbmVyOmFmdGVyLC5qZXRwYWNrLWltYWdlLWNvbnRhaW5lcjpiZWZvcmV7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIifQoud2lkZ2V0cy1tdWx0aS1jb2x1bW4tZ3JpZCB1bHtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO21hcmdpbjowO2xpc3Qtc3R5bGUtdHlwZTpub25lfS53aWRnZXRzLW11bHRpLWNvbHVtbi1ncmlkIHVsIGxpe2JhY2tncm91bmQ6MCAwO2NsZWFyOm5vbmU7ZmxvYXQ6bGVmdDttYXJnaW46MCAtNXB4IC0zcHggMDtwYWRkaW5nOjAgOHB4IDZweCAwO2JvcmRlcjpub25lO2xpc3Qtc3R5bGUtdHlwZTpub25lIWltcG9ydGFudH0ud2lkZ2V0cy1tdWx0aS1jb2x1bW4tZ3JpZCB1bCBsaSBhe2JhY2tncm91bmQ6MCAwO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MH0ud2lkZ2V0cy1tdWx0aS1jb2x1bW4tZ3JpZCAuYXZhdGFye3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ud2lkZ2V0X2pldHBhY2tfbXlfY29tbXVuaXR5IC5hdmF0YXItMjQwLC53aWRnZXRfamV0cGFja19teV9jb21tdW5pdHkgLmF2YXRhci00OHttYXgtd2lkdGg6NDhweDttYXgtaGVpZ2h0OjQ4cHh9Ci53aWRnZXQud2lkZ2V0X2F1dGhvcnMgbGk+dWwsLndpZGdldF9hdXRob3JzPnVse21hcmdpbi1sZWZ0OmluaGVyaXQ7cGFkZGluZy1sZWZ0OjB9LndpZGdldF9hdXRob3JzIHVsIGxpIGxpe3BhZGRpbmctbGVmdDowfS53aWRnZXRfYXV0aG9ycz51bD5saXttYXJnaW4tYm90dG9tOjFlbTtsaXN0LXN0eWxlOm5vbmV9LndpZGdldF9hdXRob3JzPnVsPmxpK2xpe2JvcmRlci10b3A6MH0ud2lkZ2V0LndpZGdldF9hdXRob3JzIGltZ3ttYXJnaW4tcmlnaHQ6NXB4O21hcmdpbi1ib3R0b206NXB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3gtc2hhZG93Om5vbmV9Ci53cGNudHt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoyfS53cGF7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMDAlfS53cGEtYWJvdXR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjVweDtsZWZ0OjA7cmlnaHQ6MDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MDtjb2xvcjojODg4O2ZvbnQ6MTBweC8xICJPcGVuIFNhbnMiLEFyaWFsLHNhbnMtc2VyaWYhaW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O29wYWNpdHk6Ljg1O2JvcmRlci1ib3R0b206bm9uZSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH0ud3BhIC51PmRpdntkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6NXB4O21hcmdpbi1ib3R0b206MWVtfWRpdi53cGE+ZGl2e21hcmdpbi10b3A6MjBweH0ud3BhIC51IC5hZHNieWdvb2dsZXtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MTdweDttYXJnaW4tYm90dG9tOjFlbTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fQoud2lkZ2V0X2V1X2Nvb2tpZV9sYXdfd2lkZ2V0e2FuaW1hdGlvbjpmYWRlSW4gLjhzO2JvcmRlcjpub25lO2JvdHRvbToxZW07bGVmdDoxZW07bWFyZ2luOjA7cGFkZGluZzowO3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjFlbTt3aWR0aDphdXRvO3otaW5kZXg6NTAwMDF9QGtleWZyYW1lcyBmYWRlSW57ZnJvbXtvcGFjaXR5OjA7dmlzaWJpbGl0eTpoaWRkZW59dG97b3BhY2l0eToxO3Zpc2liaWxpdHk6dmlzaWJsZX19LndpZGdldF9ldV9jb29raWVfbGF3X3dpZGdldC53aWRnZXQudG9we2JvdHRvbTphdXRvO3RvcDoxZW19LmFkbWluLWJhciAud2lkZ2V0X2V1X2Nvb2tpZV9sYXdfd2lkZ2V0LndpZGdldC50b3B7dG9wOjNlbX1hbXAtY29uc2VudC53aWRnZXRfZXVfY29va2llX2xhd193aWRnZXQud2lkZ2V0LnRvcHt0b3A6MWVtO21hcmdpbjowfS5hZG1pbi1iYXIgYW1wLWNvbnNlbnQud2lkZ2V0X2V1X2Nvb2tpZV9sYXdfd2lkZ2V0LndpZGdldC50b3B7dG9wOjA7bWFyZ2luLXRvcDozZW19I2V1LWNvb2tpZS1sYXd7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RlZGVkZTtjb2xvcjojMmU0NDY3O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo2cHggNnB4IDZweCAxNXB4O3Bvc2l0aW9uOnJlbGF0aXZlfSNldS1jb29raWUtbGF3IGEsI2V1LWNvb2tpZS1sYXcgYTphY3RpdmUsI2V1LWNvb2tpZS1sYXcgYTp2aXNpdGVke2NvbG9yOmluaGVyaXQ7Y3Vyc29yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0jZXUtY29va2llLWxhdyBhOmhvdmVye2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjpub25lfSNldS1jb29raWUtbGF3Lm5lZ2F0aXZle2JhY2tncm91bmQtY29sb3I6IzAwMDtib3JkZXI6bm9uZTtjb2xvcjojZmZmfSNldS1jb29raWUtbGF3LmhpZGV7b3BhY2l0eTowO3Zpc2liaWxpdHk6aGlkZGVuO3RyYW5zaXRpb246b3BhY2l0eSAuNHMsdmlzaWJpbGl0eSAuNHN9I2V1LWNvb2tpZS1sYXcgZm9ybXttYXJnaW4tYm90dG9tOjA7cG9zaXRpb246c3RhdGljfSNldS1jb29raWUtbGF3IGlucHV0LCNldS1jb29raWUtbGF3IGlucHV0OmZvY3VzLCNldS1jb29raWUtbGF3IGlucHV0OmhvdmVye2JhY2tncm91bmQ6I2YzZjNmMztib3JkZXI6MXB4IHNvbGlkICNkZWRlZGU7Ym9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2NvbG9yOiMyZTQ0NTM7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmU7ZmxvYXQ6cmlnaHQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjAgMCAwIDUlO3BhZGRpbmc6OHB4IDEycHg7cG9zaXRpb246c3RhdGljO3RleHQtdHJhbnNmb3JtOm5vbmV9I2V1LWNvb2tpZS1sYXcubmVnYXRpdmUgaW5wdXQsI2V1LWNvb2tpZS1sYXcubmVnYXRpdmUgaW5wdXQ6Zm9jdXMsI2V1LWNvb2tpZS1sYXcubmVnYXRpdmUgaW5wdXQ6aG92ZXJ7YmFja2dyb3VuZDojMjgyODI4O2JvcmRlci1jb2xvcjojNTM1MzUzO2NvbG9yOiNmZmZ9QG1lZGlhIChtYXgtd2lkdGg6NjAwcHgpeyNldS1jb29raWUtbGF3e3BhZGRpbmctYm90dG9tOjU1cHh9I2V1LWNvb2tpZS1sYXcgaW5wdXQuYWNjZXB0e2JvdHRvbTo4cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6OHB4fX0ud2lkZ2V0X2V1X2Nvb2tpZV9sYXdfd2lkZ2V0IC5jdXN0b21pemUtcGFydGlhbC1lZGl0LXNob3J0Y3V0PmJ1dHRvbntsZWZ0OjB9Ci5mbGlja3ItaW1hZ2Vze3RleHQtYWxpZ246Y2VudGVyfS5mbGlja3Itc2l6ZS10aHVtYm5haWwgLmZsaWNrci1pbWFnZXN7YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyB3cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmZsaWNrci1pbWFnZXMgaW1ne21heC13aWR0aDoxMDAlO21hcmdpbjo1cHh9Ci53cGNvbS1pbnN0YWdyYW0taW1hZ2Vze2Rpc3BsYXk6Z3JpZDtncmlkLWdhcDouNXJlbTtncmlkLWF1dG8tY29sdW1uczoxZnJ9LndwY29tLWluc3RhZ3JhbS1pbWFnZXM6YWZ0ZXIsLndwY29tLWluc3RhZ3JhbS1pbWFnZXM6YmVmb3Jle2NvbnRlbnQ6bm9uZX0ud3Bjb20taW5zdGFncmFtLWltYWdlcyBhe2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjRweCAycHh9LndwY29tLWluc3RhZ3JhbS1jb2x1bW5zLTIgYSwud3Bjb20taW5zdGFncmFtLWNvbHVtbnMtMyBhe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcH0ud3Bjb20taW5zdGFncmFtLWNvbHVtbnMtMiBhe3dpZHRoOmNhbGMoNTAlIC0gOHB4KX0ud3Bjb20taW5zdGFncmFtLWNvbHVtbnMtMyBhe3dpZHRoOmNhbGMoMzMuMzMzMyUgLSA4cHgpfS53cGNvbS1pbnN0YWdyYW0taW1hZ2VzIC5zcS1iZy1pbWFnZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvdmVyO2hlaWdodDowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLWJvdHRvbToxMDAlfS53cGNvbS1pbnN0YWdyYW0tY29sdW1ucy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpfS53cGNvbS1pbnN0YWdyYW0tY29sdW1ucy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywxZnIpfUBzdXBwb3J0cyAoZGlzcGxheTpncmlkKXsud3Bjb20taW5zdGFncmFtLWltYWdlcyBhe2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjB9LndwY29tLWluc3RhZ3JhbS1jb2x1bW5zLTIgYSwud3Bjb20taW5zdGFncmFtLWNvbHVtbnMtMyBhe3dpZHRoOmF1dG99fQouamV0cGFjay1zZWFyY2gtZmlsdGVycy13aWRnZXRfX3N1Yi1oZWFkaW5ne2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIC41ZW07cGFkZGluZzowfS5qZXRwYWNrLXNlYXJjaC1mb3JtKy5qZXRwYWNrLXNlYXJjaC1maWx0ZXJzLXdpZGdldF9fc3ViLWhlYWRpbmd7bWFyZ2luLXRvcDoxLjVlbTttYXJnaW4tYm90dG9tOi41ZW0haW1wb3J0YW50fS5qZXRwYWNrLXNlYXJjaC1maWx0ZXJzLXdpZGdldF9fY2xlYXJ7bWFyZ2luLXRvcDouNWVtO21hcmdpbi1ib3R0b206LjVlbX0uamV0cGFjay1zZWFyY2gtc29ydC13cmFwcGVye21hcmdpbi10b3A6MWVtO21hcmdpbi1ib3R0b206MS41ZW19LmpldHBhY2stc2VhcmNoLXNvcnQtd3JhcHBlciBsYWJlbHtkaXNwbGF5OmluaGVyaXR9LndpZGdldF9zZWFyY2ggLmpldHBhY2stc2VhcmNoLWZpbHRlcnMtd2lkZ2V0X19maWx0ZXItbGlzdCBpbnB1dFt0eXBlPWNoZWNrYm94XXt3aWR0aDphdXRvO2hlaWdodDphdXRvfXVsLmpldHBhY2stc2VhcmNoLWZpbHRlcnMtd2lkZ2V0X19maWx0ZXItbGlzdCBsaXtib3JkZXI6bm9uZTtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfXVsLmpldHBhY2stc2VhcmNoLWZpbHRlcnMtd2lkZ2V0X19maWx0ZXItbGlzdCBsaSBhe3RleHQtZGVjb3JhdGlvbjpub25lfXVsLmpldHBhY2stc2VhcmNoLWZpbHRlcnMtd2lkZ2V0X19maWx0ZXItbGlzdCBsaSBhOmhvdmVye2JveC1zaGFkb3c6bm9uZX11bC5qZXRwYWNrLXNlYXJjaC1maWx0ZXJzLXdpZGdldF9fZmlsdGVyLWxpc3QgbGkgbGFiZWx7Zm9udC13ZWlnaHQ6aW5oZXJpdDtkaXNwbGF5OmluaGVyaXR9LmpldHBhY2stc2VhcmNoLWZpbHRlcnMtd2lkZ2V0X19maWx0ZXItbGlzdHtsaXN0LXN0eWxlOm5vbmV9dWwuamV0cGFjay1zZWFyY2gtZmlsdGVycy13aWRnZXRfX2ZpbHRlci1saXN0e21hcmdpbi1ib3R0b206MS41ZW19Ym9keS5zZWFyY2ggLmpldHBhY2stc2VhcmNoLWZvcm0gaW5wdXRbbmFtZT0icyJdOjpwbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudH1ib2R5LnNlYXJjaCAuamV0cGFjay1zZWFyY2gtZm9ybSBpbnB1dFtuYW1lPSJzIl0uc2hvdy1wbGFjZWhvbGRlcjo6cGxhY2Vob2xkZXJ7Y29sb3I6aW5oZXJpdH0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo0MDBweCl7LndpZGdldC5qZXRwYWNrLXNpbXBsZS1wYXltZW50cyAuamV0cGFjay1zaW1wbGUtcGF5bWVudHMtcHJvZHVjdHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LndpZGdldC5qZXRwYWNrLXNpbXBsZS1wYXltZW50cyAuamV0cGFjay1zaW1wbGUtcGF5bWVudHMtZGV0YWlsc3twYWRkaW5nLWxlZnQ6MH19Ci5qZXRwYWNrX3dpZGdldF9zb2NpYWxfaWNvbnMgbGksLmpldHBhY2tfd2lkZ2V0X3NvY2lhbF9pY29ucyB1bHtsaXN0LXN0eWxlOm5vbmV9LmpldHBhY2tfd2lkZ2V0X3NvY2lhbF9pY29ucyB1bHtkaXNwbGF5OmJsb2NrO21hcmdpbjowIDAgMS41ZW07cGFkZGluZzowfS5qZXRwYWNrX3dpZGdldF9zb2NpYWxfaWNvbnMgdWwgbGl7Ym9yZGVyOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MTttYXJnaW46MDtwYWRkaW5nOjB9LmpldHBhY2tfd2lkZ2V0X3NvY2lhbF9pY29ucyB1bCBsaTphZnRlciwuamV0cGFja193aWRnZXRfc29jaWFsX2ljb25zIHVsIGxpOmJlZm9yZXtkaXNwbGF5Om5vbmV9LmpldHBhY2tfd2lkZ2V0X3NvY2lhbF9pY29ucyBhe2JvcmRlcjowO2JveC1zaGFkb3c6bm9uZTtkaXNwbGF5OmJsb2NrO2hlaWdodDoyNHB4O3RleHQtZGVjb3JhdGlvbjpub25lO3dpZHRoOjI0cHh9LmpldHBhY2tfd2lkZ2V0X3NvY2lhbF9pY29ucyBzdmd7Y29sb3I6aW5oZXJpdDtmaWxsOmN1cnJlbnRDb2xvcjtoZWlnaHQ6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6aW5oZXJpdH0uamV0cGFja193aWRnZXRfc29jaWFsX2ljb25zIHVsLnNpemUtc21hbGwgYXtoZWlnaHQ6MjRweDt3aWR0aDoyNHB4fS5qZXRwYWNrX3dpZGdldF9zb2NpYWxfaWNvbnMgdWwuc2l6ZS1tZWRpdW0gYXtoZWlnaHQ6MzJweDt3aWR0aDozMnB4fS5qZXRwYWNrX3dpZGdldF9zb2NpYWxfaWNvbnMgdWwuc2l6ZS1sYXJnZSBhe2hlaWdodDo0OHB4O3dpZHRoOjQ4cHh9LnNjcmVlbi1yZWFkZXItdGV4dHtib3JkZXI6MDtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTstd2Via2l0LWNsaXAtcGF0aDppbnNldCg1MCUpO2NsaXAtcGF0aDppbnNldCg1MCUpO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7d2lkdGg6MXB4O3dvcmQtd3JhcDpub3JtYWwhaW1wb3J0YW50fQoubWlsZXN0b25lLXdpZGdldHttYXJnaW4tYm90dG9tOjFlbX0ubWlsZXN0b25lLWNvbnRlbnR7bGluZS1oZWlnaHQ6MjttYXJnaW4tdG9wOjVweDttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOjA7dGV4dC1hbGlnbjpjZW50ZXJ9Lm1pbGVzdG9uZS1oZWFkZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1taWxlc3RvbmUtdGV4dC1jb2xvciwjMTExKTtjb2xvcjp2YXIoLS1taWxlc3RvbmUtYmctY29sb3IsI2ZmZik7bGluZS1oZWlnaHQ6MS4zO21hcmdpbjowO3BhZGRpbmc6LjhlbX0ubWlsZXN0b25lLWhlYWRlciAuZGF0ZSwubWlsZXN0b25lLWhlYWRlciAuZXZlbnR7ZGlzcGxheTpibG9ja30ubWlsZXN0b25lLWhlYWRlciAuZXZlbnR7Zm9udC1zaXplOjEyMCV9Lm1pbGVzdG9uZS1jb3VudGRvd24gLmRpZmZlcmVuY2V7ZGlzcGxheTpibG9jaztmb250LXNpemU6NTAwJTtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MS4yfS5taWxlc3RvbmUtY291bnRkb3duLC5taWxlc3RvbmUtbWVzc2FnZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1pbGVzdG9uZS1iZy1jb2xvciwjZmZmKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1pbGVzdG9uZS1ib3JkZXItY29sb3IsIzc2NzY3Nik7Ym9yZGVyLXRvcDowO2NvbG9yOnZhcigtLW1pbGVzdG9uZS10ZXh0LWNvbG9yLCMxMTEpO3BhZGRpbmctYm90dG9tOjFlbX0ubWlsZXN0b25lLW1lc3NhZ2V7cGFkZGluZy10b3A6MWVtfQ=="}},"time_used":57,"timings":{"blocked":-1,"dns":0,"connect":8,"send":0,"wait":18,"receive":0,"ssl":30},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/images/1000.gif","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.429Z","timestamp":1785145482429,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /images/1000.gif HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:45 GMT\r\nContent-Type: image/gif\r\nContent-Length: 1736\r\nConnection: keep-alive\r\nLast-Modified: Mon, 21 Sep 2015 03:21:28 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":1736,"size_decoded":1946,"mime_type":"image/gif","magic":"GIF image data, version 89a, 44 x 17","md5":"a8f49b4d409d4046b98892fb3fa1fa12","sha1":"969abbf4c905a3bcb56f81cd8366d946802b2b8f","sha256":"93df46f4ed7eba161dcf1fe19f34b156e5ccbdf9e2bedb2c749365e91e2a4ca3","sha512":"51145c171dfa289de1f55b17125fa389cd93bf15914308988461ed102f73ff487e788a6572766e2c91059400827f02437170788e72fb70bf0f74599dcc525414","ssdeep":"","tlshash":"d531d849fdc7f853e44ca6f81dd155535d2e8840c9e0e0ebb0debf8e8a490b5091a9ca","first_seen":"2023-05-04T14:40:12Z","last_seen":"2026-07-27T14:17:34.14639Z","times_seen":498,"resource_available":false,"data":"R0lGODlhLAARAOYAAP+UAP+RAP+RAP+TAP+NAP+OAP+TAP+QAP+PAP+NAP+TAP/Ac/+PAP///v+OAP+QAP+UAP+SAP/79v/u2f+fH//37v/69f+pOP+gI//Yqv+MAP+MAP+SAP/y4/+5ZP/Vo//oy/+vTP/27P/hvP+RAP+nNf+cE/+vS/+1Wf/myf+YAP/Bdf+tRf/Ggv/u2v/06P/9+v+QAP/gu//w3v+ZB/+aDP+2XP/mx//q0P/z5v/Dev+kL/+vSf/Dev/Bdf/9+/+2Xf/16/+eGP/jwf/y5P/Uof/XqP/Cef+MAP/q0f/Rm//fuf/+/f/Xqf+bEf+yU//v2/+SAP+iKv/Tnv/58v/fuf/br//Kiv/16v+WAP+UAP+6Zv+zVf/Snf/Tnv/69P/QmP+tR//Rm//brv/euP/t1f+VAP/cs//Zqv+rP/+PAP/myP/Zq/+eGv+dGf/Mj/+4Yf+kLv/kxAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUI3MkQ2RkQ4OUQ3MTFFM0E1REVFMEU0NDZBRTc5ODAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUI3MkQ2RkU4OUQ3MTFFM0E1REVFMEU0NDZBRTc5ODAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQjcyRDZGQjg5RDcxMUUzQTVERUUwRTQ0NkFFNzk4MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQjcyRDZGQzg5RDcxMUUzQTVERUUwRTQ0NkFFNzk4MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAAAAAAALAAAAAAsABEAAAf/gHOCg4SFhoeIiXSLjI2OixJnPUBbb0mPmI6CmZlVUmoJSAkJCh4inJibqI1eMTEkMUIqJApIO0Srjaq5a1FRCnFtaD4LalpIPDC5i7uoTCwOWjE+HV8dGQ4KWglWy3TNnGUK2lokLiBHOWPjDk/e4Jls0eUUDWBIZA00USQYEsvwMHmZh4QLHTlQ6LSIoSWKkwoA5yxrEk2BiQxB1GCoUIUWCQoWIi7D8UuBEQtYFvRokIKWmhDvJOb6ccEYiS43qEwYUoLEtg8xvcmIESUGCjhiSCg14+DCP5HeriSApSALuQRuJnj7JtNbkRoJHKgBpebEjK1c0dJ5IcZGmjALC0ao5Zqort27cwIBADs="}},"time_used":3268,"timings":{"blocked":3174,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/property-map.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.477Z","timestamp":1785145482477,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/property-map.js?ver=20150330 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 13349\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":13349,"size_decoded":13566,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"6527bf6470466dfa2acc77df5587802a","sha1":"cee208d8992303334efb82e989b8db79437d678c","sha256":"59a890de0d251501048b446a5fc385095aafaf786980685517d35b648050d058","sha512":"824dda2fad77e623ac0ff5d0e539e9545cdcd85f52e393c83d13ed0d1061762c63d1c0da2a2e69d915490e25bbd7de11638af4943f4c3318e7253b1499ee0d63","ssdeep":"192:Zd4/99ZCMAW5x7n3XcOjaa3PKdHC25T7vLyCYxxTt0BS6QJMvTXSo:Zu/3ZB734a3kbBDL0xvEr","tlshash":"49522f09faf2986714b3317e0bff6205ba754327d129de113f2c43648f949089ab57ea","first_seen":"2026-07-27T08:06:56.543904Z","last_seen":"2026-07-27T09:45:50.854008Z","times_seen":3,"resource_available":true,"data":"KGZ1bmN0aW9uKCQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICB2YXIgbWFwLCBtYXBTaWRlYmFyLCBtYXJrZXJzLCBDdXN0b21IdG1sSWNvbiwgZ3JvdXA7CiAgICB2YXIgbWFya2VyQXJyYXkgPSBbXTsKCiAgICAkLmV4dGVuZCgkLmFwdXNUaGVtZUNvcmUsIHsKICAgICAgICAvKioKICAgICAgICAgKiAgSW5pdGlhbGl6ZSBzY3JpcHRzCiAgICAgICAgICovCiAgICAgICAgcHJvcGVydHlfbWFwX2luaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICAgICAgICBpZiAoJCgnI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIEwuSWNvbi5EZWZhdWx0LmltYWdlUGF0aCA9ICd3cC1jb250ZW50L3RoZW1lcy9ob21lby9pbWFnZXMvJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICBzZWxmLm1hcEluaXQoJ3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMnKTsKICAgICAgICAgICAgICAgIHNlbGYubWFwSW5pdCgnc2luZ2xlLXByb3BlcnR5LWdvb2dsZS1tYXBzJyk7CiAgICAgICAgICAgICAgICBzZWxmLmluaXRTdHJlZXRWaWV3KCk7CgogICAgICAgICAgICAgICAgc2VsZi5nZXRQcm9wZXJ0aWVzKCdwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzJyk7CiAgICAgICAgICAgIH0sIDUwKTsKCiAgICAgICAgfSwKICAgICAgICBnZXRQcm9wZXJ0aWVzOiBmdW5jdGlvbihtYXBfZV9pZCkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgIGlmICgkKCcud2lkZ2V0LXByb3BlcnRpZXMtbWFwcyAucHJvcGVydGllcy1nb29nbGUtbWFwcycpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgJCgnLndpZGdldC1wcm9wZXJ0aWVzLW1hcHMgLnByb3BlcnRpZXMtZ29vZ2xlLW1hcHMnKS5lYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwoKICAgICAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOwogICAgICAgICAgICAgICAgICAgIHZhciAkc2V0dGluZ3MgPSAkKHRoaXMpLmRhdGEoJ3NldHRpbmdzJyk7CgogICAgICAgICAgICAgICAgICAgIHZhciBhamF4dXJsID0gaG9tZW9fcHJvcGVydHlfb3B0cy5hamF4dXJsOwogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhamF4dXJsID0gd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnaG9tZW9fZ2V0X2FqYXhfcHJvcGVydGllcycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhamF4dXJsLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2hvbWVvX2dldF9hamF4X3Byb3BlcnRpZXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6ICRzZXR0aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcud2lkZ2V0LXByb3BlcnRpZXMtbWFwcycpLmZpbmQoJy5tYWluLWl0ZW1zLXdyYXBwZXInKS5odG1sKGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVNYWtlckNhcmRzKG1hcF9lX2lkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbWFwSW5pdDogZnVuY3Rpb24obWFwX2VfaWQpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAgICAgdmFyICR3aW5kb3cgPSAkKHdpbmRvdyk7CgogICAgICAgICAgICBpZiAoISQoJyMnICsgbWFwX2VfaWQpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBtYXAgPSBMLm1hcChtYXBfZV9pZCwgewogICAgICAgICAgICAgICAgc2Nyb2xsV2hlZWxab29tOiBmYWxzZQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIG1hcmtlcnMgPSBuZXcgTC5NYXJrZXJDbHVzdGVyR3JvdXAoewogICAgICAgICAgICAgICAgc2hvd0NvdmVyYWdlT25Ib3ZlcjogZmFsc2UKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBDdXN0b21IdG1sSWNvbiA9IEwuSHRtbEljb24uZXh0ZW5kKHsKICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICBodG1sOiAiPGRpdiBjbGFzcz0nbWFwLXBvcHVwJz48L2Rpdj4iLAogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMzgsIDUwXSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMTksIDUwXSwKICAgICAgICAgICAgICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC00MF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkd2luZG93Lm9uKCdweGc6cmVmcmVzaG1hcCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbWFwLl9vblJlc2l6ZSgpOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlckFycmF5Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBMLmZlYXR1cmVHcm91cChtYXJrZXJBcnJheSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5maXRCb3VuZHMoZ3JvdXAuZ2V0Qm91bmRzKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJHdpbmRvdy5vbigncHhnOnNpbXBsZXJlZnJlc2htYXAnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG1hcC5fb25SZXNpemUoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcudGFicy1nYWxsZXJ5LW1hcCAubmF2LXRhYnMgLnRhYi1nb29nbGUtbWFwJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Jlc2l6ZScpKTsKCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKGhvbWVvX3Byb3BlcnR5X21hcF9vcHRzLm1hcF9zZXJ2aWNlID09ICdtYXBib3gnKSB7CiAgICAgICAgICAgICAgICB2YXIgdGlsZUxheWVyID0gTC50aWxlTGF5ZXIoJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL21hcGJveC8nICsgaG9tZW9fcHJvcGVydHlfbWFwX29wdHMubWFwYm94X3N0eWxlICsgJy90aWxlcy97en0ve3h9L3t5fT9hY2Nlc3NfdG9rZW49JyArIGhvbWVvX3Byb3BlcnR5X21hcF9vcHRzLm1hcGJveF90b2tlbiwgewogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uOiAiICZjb3B5OyAgPGEgaHJlZj0naHR0cHM6Ly93d3cubWFwYm94LmNvbS9hYm91dC9tYXBzLyc+TWFwYm94PC9hPiAmY29weTsgIDxhIGhyZWY9J2h0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0Jz5PcGVuU3RyZWV0TWFwPC9hPiA8c3Ryb25nPjxhIGhyZWY9J2h0dHBzOi8vd3d3Lm1hcGJveC5jb20vbWFwLWZlZWRiYWNrLycgdGFyZ2V0PSdfYmxhbmsnPkltcHJvdmUgdGhpcyBtYXA8L2E+PC9zdHJvbmc+IiwKICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAxOCwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGhvbWVvX3Byb3BlcnR5X21hcF9vcHRzLmN1c3RvbV9zdHlsZSAhPSAnJykgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXN0b21fc3R5bGUgPSAkLnBhcnNlSlNPTihob21lb19wcm9wZXJ0eV9tYXBfb3B0cy5jdXN0b21fc3R5bGUpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGlsZUxheWVyID0gTC5ncmlkTGF5ZXIuZ29vZ2xlTXV0YW50KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGhvbWVvX3Byb3BlcnR5X21hcF9vcHRzLmdvb2dsZW1hcF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBjdXN0b21fc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aWxlTGF5ZXIgPSBMLmdyaWRMYXllci5nb29nbGVNdXRhbnQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaG9tZW9fcHJvcGVydHlfbWFwX29wdHMuZ29vZ2xlbWFwX3R5cGUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGlsZUxheWVyID0gTC5ncmlkTGF5ZXIuZ29vZ2xlTXV0YW50KHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaG9tZW9fcHJvcGVydHlfbWFwX29wdHMuZ29vZ2xlbWFwX3R5cGUKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICQoJyNhcHVzLWxpc3RpbmctbWFwJykuYWRkQ2xhc3MoJ21hcC0tZ29vZ2xlJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG1hcC5hZGRMYXllcih0aWxlTGF5ZXIpOwoKICAgICAgICAgICAgLy8gY2hlY2sgYXJjaGl2ZS9zaW5nbGUgcGFnZQogICAgICAgICAgICBpZiAoISQoJyMnICsgbWFwX2VfaWQpLmlzKCcuc2luZ2xlLXByb3BlcnR5LW1hcCcpKSB7CiAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZU1ha2VyQ2FyZHMobWFwX2VfaWQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyICRpdGVtID0gJCgnLnNpbmdsZS1saXN0aW5nLXdyYXBwZXInKTsKCiAgICAgICAgICAgICAgICBpZiAoJGl0ZW0uZGF0YSgnbGF0aXR1ZGUnKSAhPT0gIiIgJiYgJGl0ZW0uZGF0YSgnbGF0aXR1ZGUnKSAhPT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgem9vbSA9ICh0eXBlb2YgTWFwV2lkZ2V0Wm9vbSAhPT0gInVuZGVmaW5lZCIpID8gTWFwV2lkZ2V0Wm9vbSA6IDE1OwogICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkTWFrZXJUb01hcCgkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgbWFwLmFkZExheWVyKG1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgIG1hcC5zZXRWaWV3KFskaXRlbS5kYXRhKCdsYXRpdHVkZScpLCAkaXRlbS5kYXRhKCdsb25naXR1ZGUnKV0sIHpvb20pOwogICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbigndXBkYXRlOm1hcCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBtYXAuc2V0VmlldyhbJGl0ZW0uZGF0YSgnbGF0aXR1ZGUnKSwgJGl0ZW0uZGF0YSgnbG9uZ2l0dWRlJyldLCB6b29tKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgJCgnLmxvY2F0aW9uLW1hcC12aWV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNzaW5nbGUtcHJvcGVydHktc3RyZWV0LXZpZXctbWFwJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIG1hcF9lX2lkKS5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5sb2NhdGlvbi1zdHJlZXQtdmlldycpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnaGlkZGVuJykuYWRkQ2xhc3MoJ2hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgICAgICBtYXAuX29uUmVzaXplKCk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkKCcjJyArIG1hcF9lX2lkKS5oaWRlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHVwZGF0ZU1ha2VyQ2FyZHM6IGZ1bmN0aW9uKG1hcF9lX2lkKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgdmFyICRpdGVtcyA9ICQoJy5tYWluLWl0ZW1zLXdyYXBwZXIgLm1hcC1pdGVtJyk7CgogICAgICAgICAgICBpZiAoJCgnIycgKyBtYXBfZV9pZCkubGVuZ3RoICYmIHR5cGVvZiBtYXAgIT09ICJ1bmRlZmluZWQiKSB7CgogICAgICAgICAgICAgICAgaWYgKCEkaXRlbXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgbWFwLnNldFZpZXcoW2hvbWVvX3Byb3BlcnR5X21hcF9vcHRzLmRlZmF1bHRfbGF0aXR1ZGUsIGhvbWVvX3Byb3BlcnR5X21hcF9vcHRzLmRlZmF1bHRfbG9uZ2l0dWRlXSwgMTIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBtYXAucmVtb3ZlTGF5ZXIobWFya2Vycyk7CiAgICAgICAgICAgICAgICBtYXJrZXJzID0gbmV3IEwuTWFya2VyQ2x1c3Rlckdyb3VwKHsKICAgICAgICAgICAgICAgICAgICBzaG93Q292ZXJhZ2VPbkhvdmVyOiBmYWxzZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkaXRlbXMuZWFjaChmdW5jdGlvbihpLCBvYmopIHsKICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZE1ha2VyVG9NYXAoJChvYmopLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIG1hcC5hZGRMYXllcihtYXJrZXJzKTsKCiAgICAgICAgICAgICAgICBpZiAobWFya2VyQXJyYXkubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIGdyb3VwID0gTC5mZWF0dXJlR3JvdXAobWFya2VyQXJyYXkpOwogICAgICAgICAgICAgICAgICAgIG1hcC5maXRCb3VuZHMoZ3JvdXAuZ2V0Qm91bmRzKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhZGRNYWtlclRvTWFwOiBmdW5jdGlvbigkaXRlbSwgYXJjaGl2ZSkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgIHZhciBtYXJrZXI7CgogICAgICAgICAgICBpZiAoJGl0ZW0uZGF0YSgnbGF0aXR1ZGUnKSA9PSAiIiB8fCAkaXRlbS5kYXRhKCdsb25naXR1ZGUnKSA9PSAiIikgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaG9tZW9fcHJvcGVydHlfbWFwX29wdHMuZGVmYXVsdF9waW4pIHsKICAgICAgICAgICAgICAgIHZhciBpbWdfYWdlbmN5ID0gIjxpbWcgc3JjPSciICsgaG9tZW9fcHJvcGVydHlfbWFwX29wdHMuZGVmYXVsdF9waW4gKyAiJz4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGltZ19hZ2VuY3kgPSAnPGkgY2xhc3M9ImZhcyBmYS1tYXAtbWFya2VyLWFsdCI+PC9pPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG1hcFBpbkhUTUwgPSAiPGRpdiBjbGFzcz0nbWFwLXBvcHVwJz48ZGl2IGNsYXNzPSdpY29uLXdyYXBwZXIgaGFzLWltZyc+IiArIGltZ19hZ2VuY3kgKyAiPC9kaXY+PC9kaXY+IjsKCgogICAgICAgICAgICBtYXJrZXIgPSBMLm1hcmtlcihbJGl0ZW0uZGF0YSgnbGF0aXR1ZGUnKSwgJGl0ZW0uZGF0YSgnbG9uZ2l0dWRlJyldLCB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgQ3VzdG9tSHRtbEljb24oewogICAgICAgICAgICAgICAgICAgIGh0bWw6IG1hcFBpbkhUTUwKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmNoaXZlICE9PSAidW5kZWZpbmVkIikgewoKICAgICAgICAgICAgICAgICRpdGVtLmhvdmVyKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICQobWFya2VyLl9pY29uKS5maW5kKCcubWFwLXBvcHVwJykuYWRkQ2xhc3MoJ21hcC1wb3B1cC1zZWxlY3RlZCcpOwogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJChtYXJrZXIuX2ljb24pLmZpbmQoJy5tYXAtcG9wdXAnKS5yZW1vdmVDbGFzcygnbWFwLXBvcHVwLXNlbGVjdGVkJyk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB2YXIgY3VzdG9tT3B0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAgICAnbWF4V2lkdGgnOiAnMjkwJywKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgdmFyIGxvZ29faHRtbCA9ICcnOwogICAgICAgICAgICAgICAgaWYgKCRpdGVtLmRhdGEoJ2ltZycpKSB7CiAgICAgICAgICAgICAgICAgICAgbG9nb19odG1sID0gIjxkaXYgY2xhc3M9J2ltYWdlLXdyYXBwZXIgaW1hZ2UtbG9hZGVkJz4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjxpbWcgc3JjPSciICsgJGl0ZW0uZGF0YSgnaW1nJykgKyAiJz4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHRpdGxlX2h0bWwgPSAnJzsKICAgICAgICAgICAgICAgIGlmICgkaXRlbS5maW5kKCcucHJvcGVydHktdGl0bGUnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB0aXRsZV9odG1sID0gIjxoMyBjbGFzcz0ncHJvcGVydHktdGl0bGUnPiIgKyAkaXRlbS5maW5kKCcucHJvcGVydHktdGl0bGUnKS5odG1sKCkgKyAiPC9oMz4iOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkaXRlbS5maW5kKCcuYWdlbmN5LXRpdGxlJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdGl0bGVfaHRtbCA9ICI8aDMgY2xhc3M9J3Byb3BlcnR5LXRpdGxlIGFnZW5jeS10aXRsZSc+IiArICRpdGVtLmZpbmQoJy5hZ2VuY3ktdGl0bGUnKS5odG1sKCkgKyAiPC9oMz4iOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICB2YXIgcHJpY2VfaHRtbCA9ICcnOwogICAgICAgICAgICAgICAgaWYgKCRpdGVtLmZpbmQoJy5wcm9wZXJ0eS1wcmljZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHByaWNlX2h0bWwgPSAiPGRpdiBjbGFzcz0ncHJvcGVydHktcHJpY2UnPiIgKyAkaXRlbS5maW5kKCcucHJvcGVydHktcHJpY2UnKS5odG1sKCkgKyAiPC9kaXY+IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlfdHlwZSA9ICcnOwogICAgICAgICAgICAgICAgaWYgKCRpdGVtLmZpbmQoJy5wcm9wZXJ0eS10eXBlJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfdHlwZSA9ICI8ZGl2IGNsYXNzPSdwcm9wZXJ0eS10eXBlICc+IiArICRpdGVtLmZpbmQoJy5wcm9wZXJ0eS10eXBlJykuaHRtbCgpICsgIjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5X2xvY2F0aW9uID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoJGl0ZW0uZmluZCgnLnByb3BlcnR5LWxvY2F0aW9uICcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHByb3BlcnR5X2xvY2F0aW9uID0gIjxkaXYgY2xhc3M9J3Byb3BlcnR5LWxvY2F0aW9uICAnPiIgKyAkaXRlbS5maW5kKCcucHJvcGVydHktbG9jYXRpb24gJykuaHRtbCgpICsgIjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5X21ldGFzID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoJGl0ZW0uZmluZCgnLnByb3BlcnR5LW1ldGFzICcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHByb3BlcnR5X21ldGFzID0gIjxkaXYgY2xhc3M9J3Byb3BlcnR5LW1ldGFzICAnPiIgKyAkaXRlbS5maW5kKCcucHJvcGVydHktbWV0YXMgJykuaHRtbCgpICsgIjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbWFya2VyLmJpbmRQb3B1cCgKICAgICAgICAgICAgICAgICAgICAiPGRpdiBjbGFzcz0ncHJvcGVydHktaXRlbSBwcm9wZXJ0eS1ncmlkJz48ZGl2IGNsYXNzPSd0b3AtaW5mbyc+IiArCiAgICAgICAgICAgICAgICAgICAgIjxkaXYgY2xhc3M9J3Byb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIGZsZXgtbWlkZGxlIGp1c3RpZnktY29udGVudC1jZW50ZXInPiIgKyBsb2dvX2h0bWwgKwogICAgICAgICAgICAgICAgICAgICI8ZGl2IGNsYXNzPSdib3R0b20tbGFiZWwgZmxleC1taWRkbGUnPiIgKyBwcmljZV9odG1sICsgIjwvZGl2PiIgKwogICAgICAgICAgICAgICAgICAgICI8L2Rpdj4iICsKICAgICAgICAgICAgICAgICAgICAiPGRpdiBjbGFzcz0ncHJvcGVydHktaW5mb3JtYXRpb24nPiIgKyBwcm9wZXJ0eV90eXBlICsgdGl0bGVfaHRtbCArIHByb3BlcnR5X2xvY2F0aW9uICsgcHJvcGVydHlfbWV0YXMgKyAiPC9kaXY+IiArCiAgICAgICAgICAgICAgICAgICAgIjwvZGl2PjwvZGl2PiIsIGN1c3RvbU9wdGlvbnMpLm9wZW5Qb3B1cCgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBtYXJrZXJzLmFkZExheWVyKG1hcmtlcik7CiAgICAgICAgICAgIG1hcmtlckFycmF5LnB1c2goTC5tYXJrZXIoWyRpdGVtLmRhdGEoJ2xhdGl0dWRlJyksICRpdGVtLmRhdGEoJ2xvbmdpdHVkZScpXSkpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFN0cmVldFZpZXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgcGFub3JhbWEgPSBudWxsOwoKICAgICAgICAgICAgJCgnLnRhYi1nb29nbGUtc3RyZWV0LXZpZXctbWFwJykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgLy8kKCcjc2luZ2xlLXRhYi1wcm9wZXJ0eS1zdHJlZXQtdmlldy1tYXAnKS5zaG93KCk7CgogICAgICAgICAgICAgICAgdmFyICRpdGVtID0gJCgnLnNpbmdsZS1saXN0aW5nLXdyYXBwZXInKTsKCiAgICAgICAgICAgICAgICBpZiAoJGl0ZW0uZGF0YSgnbGF0aXR1ZGUnKSAhPT0gIiIgJiYgJGl0ZW0uZGF0YSgnbG9uZ2l0dWRlJykgIT09ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHpvb20gPSAodHlwZW9mIE1hcFdpZGdldFpvb20gIT09ICJ1bmRlZmluZWQiKSA/IE1hcFdpZGdldFpvb20gOiAxNTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHBhbm9yYW1hID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZlbndheSA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoJGl0ZW0uZGF0YSgnbGF0aXR1ZGUnKSwgJGl0ZW0uZGF0YSgnbG9uZ2l0dWRlJykpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFub3JhbWFPcHRpb25zID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGZlbndheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvdjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmc6IDM0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpdGNoOiAxMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBwYW5vcmFtYSA9IG5ldyBnb29nbGUubWFwcy5TdHJlZXRWaWV3UGFub3JhbWEoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NpbmdsZS10YWItcHJvcGVydHktc3RyZWV0LXZpZXctbWFwJyksIHBhbm9yYW1hT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJy5sb2NhdGlvbi1zdHJlZXQtdmlldycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICQoJyNzaW5nbGUtcHJvcGVydHktc3RyZWV0LXZpZXctbWFwJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI3NpbmdsZS1wcm9wZXJ0eS1nb29nbGUtbWFwcycpLmhpZGUoKTsKICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpLmFkZENsYXNzKCdoaWRkZW4nKTsKICAgICAgICAgICAgICAgICQoJy5sb2NhdGlvbi1tYXAtdmlldycpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsKCiAgICAgICAgICAgICAgICB2YXIgJGl0ZW0gPSAkKCcuc2luZ2xlLWxpc3Rpbmctd3JhcHBlcicpOwoKICAgICAgICAgICAgICAgIGlmICgkaXRlbS5kYXRhKCdsYXRpdHVkZScpICE9PSAiIiAmJiAkaXRlbS5kYXRhKCdsb25naXR1ZGUnKSAhPT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgem9vbSA9ICh0eXBlb2YgTWFwV2lkZ2V0Wm9vbSAhPT0gInVuZGVmaW5lZCIpID8gTWFwV2lkZ2V0Wm9vbSA6IDE1OwoKICAgICAgICAgICAgICAgICAgICBpZiAocGFub3JhbWEgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmVud2F5ID0gbmV3IGdvb2dsZS5tYXBzLkxhdExuZygkaXRlbS5kYXRhKCdsYXRpdHVkZScpLCAkaXRlbS5kYXRhKCdsb25naXR1ZGUnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYW5vcmFtYU9wdGlvbnMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZmVud2F5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG92OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZzogMzQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl0Y2g6IDEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHBhbm9yYW1hID0gbmV3IGdvb2dsZS5tYXBzLlN0cmVldFZpZXdQYW5vcmFtYShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2luZ2xlLXByb3BlcnR5LXN0cmVldC12aWV3LW1hcCcpLCBwYW5vcmFtYU9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgIH0pOwoKICAgICQuYXB1c1RoZW1lRXh0ZW5zaW9ucy5wcm9wZXJ0eV9tYXAgPSAkLmFwdXNUaGVtZUNvcmUucHJvcGVydHlfbWFwX2luaXQ7CgoKfSkoalF1ZXJ5KTs="}},"time_used":1118,"timings":{"blocked":1023,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.6.4","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.504Z","timestamp":1785145482504,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.6.4 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 35927\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":35927,"size_decoded":36144,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (565)","md5":"08b59dd366ba65aba4e4ef09b2443d58","sha1":"21ec909ae754a31ae3d2160a84c0efc0c27a3fa5","sha256":"02711ee41a13aebd17eb4ff3ccc4cef7f687d280a96985b38b5582540a0506c5","sha512":"32f553f7b76b188fc724c9718393055d37b39de1b65e4231487e3dfd5b9eaf65d302ea63746a494e4aff5d82f73488a5012d4d4dff64be6832666fb7e4342a4c","ssdeep":"768:sybdLQdA7N/rTdgg6nPj0lO+/8i0fYCbimIGVDB3XcSQylXsdE3MrKXCxSyuBAKF:fCmvdgg8jrim/F1XZQylXsmMKS48fRm1","tlshash":"eaf2520a7af71875514fa02bad6f840a7736804f280a7c5d3e6c11964f69d78a3f2fb4","first_seen":"2026-07-27T08:06:56.357588Z","last_seen":"2026-07-27T09:45:50.965659Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvci1wcm8gLSB2My42LjQgLSAxNS0wMy0yMDIyICovCihzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvcl9wcm8gPSBzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvcl9wcm8gfHwgW10pLnB1c2goWwogICAgWzgxOV0sIHsKICAgICAgICA3OTE0OiBlID0+IHsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgZS5leHBvcnRzLl9fZXNNb2R1bGUgPSAhMCwgZS5leHBvcnRzLmRlZmF1bHQgPSBlLmV4cG9ydHMKICAgICAgICB9LAogICAgICAgIDI6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIHMgPSBuKDc5MTQpOwogICAgICAgICAgICBuKDQyNDIpOwogICAgICAgICAgICB2YXIgaSA9IHMobig0Nzc0KSksCiAgICAgICAgICAgICAgICBvID0gcyhuKDk1NzUpKSwKICAgICAgICAgICAgICAgIHIgPSBzKG4oNjI1NCkpLAogICAgICAgICAgICAgICAgYSA9IHMobig1MTYxKSksCiAgICAgICAgICAgICAgICBsID0gcyhuKDUwMzkpKSwKICAgICAgICAgICAgICAgIGMgPSBzKG4oOTIxMCkpOwogICAgICAgICAgICBjbGFzcyBFbGVtZW50b3JQcm9Gcm9udGVuZCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZSB7CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCksIHRoaXMuY29uZmlnID0gRWxlbWVudG9yUHJvRnJvbnRlbmRDb25maWcsIHRoaXMubW9kdWxlcyA9IHt9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeSh3aW5kb3cpLm9uKCJlbGVtZW50b3IvZnJvbnRlbmQvaW5pdCIsIHRoaXMub25FbGVtZW50b3JGcm9udGVuZEluaXQuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRNb2R1bGVzKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gewogICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25GWDogaS5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k6IG8uZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29kZUhpZ2hsaWdodDogci5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1BsYXlsaXN0OiBhLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHBheW1lbnRzOiBsLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzVHJhY2tlcjogYy5kZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JQcm9Gcm9udGVuZC50cmlnZ2VyKCJlbGVtZW50b3ItcHJvL21vZHVsZXMvaW5pdDpiZWZvcmUiKSwgZSA9IGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFwcGx5RmlsdGVycygiZWxlbWVudG9yLXByby9mcm9udGVuZC9oYW5kbGVycyIsIGUpLCBqUXVlcnkuZWFjaChlLCAoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2R1bGVzW2VdID0gbmV3IHQKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMubW9kdWxlcy5saW5rQWN0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgYWRkQWN0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLnVybEFjdGlvbnMuYWRkQWN0aW9uKC4uLmFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudG9yRnJvbnRlbmRJbml0KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdE1vZHVsZXMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHdpbmRvdy5lbGVtZW50b3JQcm9Gcm9udGVuZCA9IG5ldyBFbGVtZW50b3JQcm9Gcm9udGVuZAogICAgICAgIH0sCiAgICAgICAgNDI0MjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBuLnAgPSBFbGVtZW50b3JQcm9Gcm9udGVuZENvbmZpZy51cmxzLmFzc2V0cyArICJqcy8iCiAgICAgICAgfSwKICAgICAgICA2MjU0OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKCksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hdHRhY2hIYW5kbGVyKCJjb2RlLWhpZ2hsaWdodCIsICgoKSA9PiBuLmUoNzE0KS50aGVuKG4uYmluZChuLCA4NjA0KSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA0Nzc0OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBzID0gbig3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gcyhuKDM1MTUpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigiZ2xvYmFsIiwgaS5kZWZhdWx0LCBudWxsKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICAzNTE1OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBzID0gbig3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gcyhuKDU0NjkpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgX19jb25zdHJ1Y3QoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIuX19jb25zdHJ1Y3QoLi4uYXJndW1lbnRzKSwgdGhpcy50b2dnbGUgPSBlbGVtZW50b3JGcm9udGVuZC5kZWJvdW5jZSh0aGlzLnRvZ2dsZSwgMjAwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiAiLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5jb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9uKCJyZXNpemUiLCB0aGlzLnRvZ2dsZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9mZigicmVzaXplIiwgdGhpcy50b2dnbGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGRDU1NUcmFuc2Zvcm1FdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoIm1vdGlvbl9meF9tb3Rpb25fZnhfc2Nyb2xsaW5nIikgJiYgIXRoaXMuaXNUcmFuc2l0aW9uRXZlbnRBZGRlZCAmJiAodGhpcy5pc1RyYW5zaXRpb25FdmVudEFkZGVkID0gITAsIHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lci5vbigibW91c2VlbnRlciIsICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lci5jc3MoIi0tZS10cmFuc2Zvcm0tdHJhbnNpdGlvbi1kdXJhdGlvbiIsICIiKQogICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRFZmZlY3RzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWZmZWN0cyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlWTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb246ICJzY3JvbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogWyJ0cmFuc2xhdGVZIl0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlWDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb246ICJzY3JvbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogWyJ0cmFuc2xhdGVYIl0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlWjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb246ICJzY3JvbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogWyJyb3RhdGVaIl0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9uOiAic2Nyb2xsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFsic2NhbGUiXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbjogInNjcm9sbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbIm9wYWNpdHkiXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBibHVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbjogInNjcm9sbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbImJsdXIiXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBtb3VzZVRyYWNrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbjogIm1vdXNlTW92ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbInRyYW5zbGF0ZVhZIl0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdGlsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb246ICJtb3VzZU1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogWyJ0aWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHByZXBhcmVPcHRpb25zKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICJtb3Rpb25fZngiID09PSBlID8gImVsZW1lbnQiIDogImJhY2tncm91bmQiLAogICAgICAgICAgICAgICAgICAgICAgICBzID0ge307CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2godCwgKChuLCBpKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBuZXcgUmVnRXhwKCJeIiArIGUgKyAiXyguKz8pX2VmZmVjdCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ubWF0Y2gobyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghciB8fCAhaSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gclsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2godCwgKCh0LCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gbmV3IFJlZ0V4cChlICsgIl8iICsgbCArICJfKC4rKSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lm1hdGNoKHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWZmZWN0IiAhPT0gaVsxXSAmJiAoIm9iamVjdCIgPT0gdHlwZW9mIG4gJiYgKG4gPSBPYmplY3Qua2V5cyhuLnNpemVzKS5sZW5ndGggPyBuLnNpemVzIDogbi5zaXplKSwgYVtpWzFdXSA9IG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYyA9IHRoaXMuZWZmZWN0c1tsXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjLmludGVyYWN0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICBzW2RdIHx8IChzW2RdID0ge30pLCBjLmFjdGlvbnMuZm9yRWFjaCgoZSA9PiBzW2RdW2VdID0gYSkpCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIGxldCBpLCBvID0gdGhpcy4kZWxlbWVudDsKICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gdGhpcy5nZXRFbGVtZW50VHlwZSgpOwogICAgICAgICAgICAgICAgICAgIGlmICgiZWxlbWVudCIgPT09IG4gJiYgIVsic2VjdGlvbiIsICJjb250YWluZXIiXS5pbmNsdWRlcyhyKSkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8sIGUgPSAiY29sdW1uIiA9PT0gciA/IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5sZWdhY3lNb2RlLmVsZW1lbnRXcmFwcGVycyA/ICIuZWxlbWVudG9yLWNvbHVtbi13cmFwIiA6ICIuZWxlbWVudG9yLXdpZGdldC13cmFwIiA6ICIuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiLCBvID0gby5maW5kKCI+ICIgKyBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gewogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbnM6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTZXR0aW5nczogdCwKICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICRkaW1lbnNpb25zRWxlbWVudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaERpbWVuc2lvbnM6IHRoaXMuaXNFZGl0LAogICAgICAgICAgICAgICAgICAgICAgICByYW5nZTogdFtlICsgIl9yYW5nZSJdLAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAiZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiAiZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLXBhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kVHlwZTogImVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICJlbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiAiZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNwZWN0aXZlOiAiZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLXBlcnNwZWN0aXZlIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5yYW5nZSB8fCAiZml4ZWQiICE9PSB0aGlzLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKCJfcG9zaXRpb24iKSB8fCAoYS5yYW5nZSA9ICJwYWdlIiksICJmaXhlZCIgPT09IHRoaXMuZ2V0Q3VycmVudERldmljZVNldHRpbmcoIl9wb3NpdGlvbiIpICYmIChhLmlzRml4ZWRQb3NpdGlvbiA9ICEwKSwgImJhY2tncm91bmQiID09PSBuICYmICJjb2x1bW4iID09PSB0aGlzLmdldEVsZW1lbnRUeXBlKCkgJiYgKGEuYWRkQmFja2dyb3VuZExheWVyVG8gPSAiID4gLmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCIpLCBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhY3RpdmF0ZShlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMucHJlcGFyZU9wdGlvbnMoZSk7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmlzRW1wdHlPYmplY3QodC5pbnRlcmFjdGlvbnMpIHx8ICh0aGlzW2VdID0gbmV3IGkuZGVmYXVsdCh0KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlYWN0aXZhdGUoZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXNbZV0gJiYgKHRoaXNbZV0uZGVzdHJveSgpLCBkZWxldGUgdGhpc1tlXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRvZ2dsZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgWyJtb3Rpb25fZngiLCAiYmFja2dyb3VuZF9tb3Rpb25fZngiXS5mb3JFYWNoKChuID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRbbiArICJfZGV2aWNlcyJdOwogICAgICAgICAgICAgICAgICAgICAgICAoIXMgfHwgLTEgIT09IHMuaW5kZXhPZihlKSkgJiYgKHRbbiArICJfbW90aW9uX2Z4X3Njcm9sbGluZyJdIHx8IHRbbiArICJfbW90aW9uX2Z4X21vdXNlIl0pID8gdGhpc1tuXSA/IHRoaXMucmVmcmVzaEluc3RhbmNlKG4pIDogdGhpcy5hY3RpdmF0ZShuKTogdGhpcy5kZWFjdGl2YXRlKG4pCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZWZyZXNoSW5zdGFuY2UoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzW2VdOwogICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLnByZXBhcmVPcHRpb25zKGUpOwogICAgICAgICAgICAgICAgICAgIHQuc2V0U2V0dGluZ3MobiksIHQucmVmcmVzaCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCksIHRoaXMuaW5pdEVmZmVjdHMoKSwgdGhpcy5hZGRDU1NUcmFuc2Zvcm1FdmVudHMoKSwgdGhpcy50b2dnbGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoL21vdGlvbl9meF8oKHNjcm9sbGluZyl8KG1vdXNlKXwoZGV2aWNlcykpJC8udGVzdChlKSkgcmV0dXJuICJtb3Rpb25fZnhfbW90aW9uX2Z4X3Njcm9sbGluZyIgPT09IGUgJiYgdGhpcy5hZGRDU1NUcmFuc2Zvcm1FdmVudHMoKSwgdm9pZCB0aGlzLnRvZ2dsZSgpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlLm1hdGNoKCIuKj8obW90aW9uX2Z4fF90cmFuc2Zvcm0pIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRbMF0ubWF0Y2goIihfdHJhbnNmb3JtKSIpID8gIm1vdGlvbl9meCIgOiB0WzBdOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hJbnN0YW5jZShlKSwgdGhpc1tlXSB8fCB0aGlzLmFjdGl2YXRlKGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC9eX3Bvc2l0aW9uLy50ZXN0KGUpICYmIFsibW90aW9uX2Z4IiwgImJhY2tncm91bmRfbW90aW9uX2Z4Il0uZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEluc3RhbmNlKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkRlc3Ryb3koKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25EZXN0cm95KCksIFsibW90aW9uX2Z4IiwgImJhY2tncm91bmRfbW90aW9uX2Z4Il0uZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZShlKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICAyMjkyOiAoZSwgdCkgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGdldE1vdmVQb2ludEZyb21QYXNzZWRQZXJjZW50cyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsodCAvIGUgKiAxMDApLnRvRml4ZWQoMikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEVmZmVjdFZhbHVlRnJvbU1vdmVQb2ludChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKiB0IC8gMTAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdGVwKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImVsZW1lbnQiID09PSB0aGlzLmdldFNldHRpbmdzKCJ0eXBlIikgPyB0aGlzLmdldEVsZW1lbnRTdGVwKGUsIHQpIDogdGhpcy5nZXRCYWNrZ3JvdW5kU3RlcChlLCB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudFN0ZXAoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAtKGUgLSA1MCkgKiB0LnNwZWVkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRCYWNrZ3JvdW5kU3RlcChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZ2V0U2V0dGluZ3MoImRpbWVuc2lvbnMubW92YWJsZSIgKyB0LmF4aXMudG9VcHBlckNhc2UoKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC10aGlzLmdldEVmZmVjdFZhbHVlRnJvbU1vdmVQb2ludChuLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGlyZWN0aW9uTW92ZVBvaW50KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBsZXQgczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA8IG4uc3RhcnQgPyAib3V0LWluIiA9PT0gdCA/IHMgPSAwIDogImluLW91dCIgPT09IHQgPyBzID0gMTAwIDogKHMgPSB0aGlzLmdldE1vdmVQb2ludEZyb21QYXNzZWRQZXJjZW50cyhuLnN0YXJ0LCBlKSwgImluLW91dC1pbiIgPT09IHQgJiYgKHMgPSAxMDAgLSBzKSkgOiBlIDwgbi5lbmQgPyAiaW4tb3V0LWluIiA9PT0gdCA/IHMgPSAwIDogIm91dC1pbi1vdXQiID09PSB0ID8gcyA9IDEwMCA6IChzID0gdGhpcy5nZXRNb3ZlUG9pbnRGcm9tUGFzc2VkUGVyY2VudHMobi5lbmQgLSBuLnN0YXJ0LCBlIC0gbi5zdGFydCksICJpbi1vdXQiID09PSB0ICYmIChzID0gMTAwIC0gcykpIDogImluLW91dCIgPT09IHQgPyBzID0gMCA6ICJvdXQtaW4iID09PSB0ID8gcyA9IDEwMCA6IChzID0gdGhpcy5nZXRNb3ZlUG9pbnRGcm9tUGFzc2VkUGVyY2VudHMoMTAwIC0gbi5lbmQsIDEwMCAtIGUpLCAiaW4tb3V0LWluIiA9PT0gdCAmJiAocyA9IDEwMCAtIHMpKSwgcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdHJhbnNsYXRlWChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5heGlzID0gIngiLCBlLnVuaXQgPSAicHgiLCB0aGlzLnRyYW5zZm9ybSgidHJhbnNsYXRlWCIsIHQsIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0cmFuc2xhdGVZKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBlLmF4aXMgPSAieSIsIGUudW5pdCA9ICJweCIsIHRoaXMudHJhbnNmb3JtKCJ0cmFuc2xhdGVZIiwgdCwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVhZKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVgoZSwgdCksIHRoaXMudHJhbnNsYXRlWShlLCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGlsdChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IGUuc3BlZWQgLyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBlLmRpcmVjdGlvbgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3RhdGVYKHMsIG4pLCB0aGlzLnJvdGF0ZVkocywgMTAwIC0gdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJvdGF0ZVgoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGUuYXhpcyA9ICJ4IiwgZS51bml0ID0gImRlZyIsIHRoaXMudHJhbnNmb3JtKCJyb3RhdGVYIiwgdCwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJvdGF0ZVkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGUuYXhpcyA9ICJ5IiwgZS51bml0ID0gImRlZyIsIHRoaXMudHJhbnNmb3JtKCJyb3RhdGVZIiwgdCwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJvdGF0ZVooZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGUudW5pdCA9ICJkZWciLCB0aGlzLnRyYW5zZm9ybSgicm90YXRlWiIsIHQsIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzY2FsZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZ2V0RGlyZWN0aW9uTW92ZVBvaW50KHQsIGUuZGlyZWN0aW9uLCBlLnJhbmdlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bGVQYXJ0KCJ0cmFuc2Zvcm0iLCAic2NhbGUiLCAxICsgZS5zcGVlZCAqIG4gLyAxZTMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIG4uZGlyZWN0aW9uICYmICh0ID0gMTAwIC0gdCksIHRoaXMudXBkYXRlUnVsZVBhcnQoInRyYW5zZm9ybSIsIGUsIHRoaXMuZ2V0U3RlcCh0LCBuKSArIG4udW5pdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldENTU1RyYW5zZm9ybVZhcmlhYmxlcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5DU1NUcmFuc2Zvcm1WYXJpYWJsZXMgPSBbXSwgalF1ZXJ5LmVhY2goZSwgKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlLm1hdGNoKC9fdHJhbnNmb3JtXyguKz8pX2VmZmVjdC9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiYgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJwZXJzcGVjdGl2ZSIgPT09IG5bMV0pIHJldHVybiB2b2lkIHRoaXMuQ1NTVHJhbnNmb3JtVmFyaWFibGVzLnVuc2hpZnQoblsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5DU1NUcmFuc2Zvcm1WYXJpYWJsZXMuaW5jbHVkZXMoblsxXSkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ1NTVHJhbnNmb3JtVmFyaWFibGVzLnB1c2goblsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb3BhY2l0eShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZ2V0RGlyZWN0aW9uTW92ZVBvaW50KHQsIGUuZGlyZWN0aW9uLCBlLnJhbmdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUubGV2ZWwgLyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDEgLSBzICsgdGhpcy5nZXRFZmZlY3RWYWx1ZUZyb21Nb3ZlUG9pbnQocywgbik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAid2lsbC1jaGFuZ2UiOiAib3BhY2l0eSIKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmx1cihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZ2V0RGlyZWN0aW9uTW92ZVBvaW50KHQsIGUuZGlyZWN0aW9uLCBlLnJhbmdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUubGV2ZWwgLSB0aGlzLmdldEVmZmVjdFZhbHVlRnJvbU1vdmVQb2ludChlLmxldmVsLCBuKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bGVQYXJ0KCJmaWx0ZXIiLCAiYmx1ciIsIHMgKyAicHgiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdXBkYXRlUnVsZVBhcnQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNWYXJpYWJsZXNbZV0gfHwgKHRoaXMucnVsZXNWYXJpYWJsZXNbZV0gPSB7fSksIHRoaXMucnVsZXNWYXJpYWJsZXNbZV1bdF0gfHwgKHRoaXMucnVsZXNWYXJpYWJsZXNbZV1bdF0gPSAhMCwgdGhpcy51cGRhdGVSdWxlKGUpKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gYC0tJHt0fWA7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudFswXS5zdHlsZS5zZXRQcm9wZXJ0eShzLCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdXBkYXRlUnVsZShlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSAiIjsKICAgICAgICAgICAgICAgICAgICB0ICs9IHRoaXMuY29uY2F0VHJhbnNmb3JtQ1NTUHJvcGVydGllcyhlKSwgdCArPSB0aGlzLmNvbmNhdFRyYW5zZm9ybU1vdGlvbkVmZmVjdENTU1Byb3BlcnRpZXMoZSksIHRoaXMuJGVsZW1lbnQuY3NzKGUsIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25jYXRUcmFuc2Zvcm1DU1NQcm9wZXJ0aWVzKGUpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgdCA9ICIiOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAidHJhbnNmb3JtIiA9PT0gZSAmJiBqUXVlcnkuZWFjaCh0aGlzLkNTU1RyYW5zZm9ybVZhcmlhYmxlcywgKChlLCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICBuLnN0YXJ0c1dpdGgoImZsaXAiKSAmJiAobiA9IG4ucmVwbGFjZSgiZmxpcCIsICJzY2FsZSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IG4uc3RhcnRzV2l0aCgicm90YXRlIikgfHwgbi5zdGFydHNXaXRoKCJza2V3IikgPyAiZGVnIiA6ICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5zdGFydHNXaXRoKCJzY2FsZSIpID8gMSA6IDAgKyBpOwogICAgICAgICAgICAgICAgICAgICAgICB0ICs9IGAke259KHZhcigtLWUtdHJhbnNmb3JtLSR7c30sICR7b30pKWAKICAgICAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbmNhdFRyYW5zZm9ybU1vdGlvbkVmZmVjdENTU1Byb3BlcnRpZXMoZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB0ID0gIiI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5lYWNoKHRoaXMucnVsZXNWYXJpYWJsZXNbZV0sIChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdCArPSBgJHtlfSh2YXIoLS0ke2V9KSlgCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW5BY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHQuYWZmZWN0ZWRSYW5nZSAmJiAodC5hZmZlY3RlZFJhbmdlLnN0YXJ0ID4gbiAmJiAobiA9IHQuYWZmZWN0ZWRSYW5nZS5zdGFydCksIHQuYWZmZWN0ZWRSYW5nZS5lbmQgPCBuICYmIChuID0gdC5hZmZlY3RlZFJhbmdlLmVuZCkpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSBhcmd1bWVudHMubGVuZ3RoLCBpID0gbmV3IEFycmF5KHMgPiAzID8gcyAtIDMgOiAwKSwgbyA9IDM7IG8gPCBzOyBvKyspIGlbbyAtIDNdID0gYXJndW1lbnRzW29dOwogICAgICAgICAgICAgICAgICAgIHRoaXNbZV0odCwgbiwgLi4uaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlZnJlc2goKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1ZhcmlhYmxlcyA9IHt9LCB0aGlzLkNTU1RyYW5zZm9ybVZhcmlhYmxlcyA9IFtdLCB0aGlzLiRlbGVtZW50LmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAid2lsbC1jaGFuZ2UiOiAiIgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudCA9IHRoaXMuZ2V0U2V0dGluZ3MoIiR0YXJnZXRFbGVtZW50IiksIHRoaXMucmVmcmVzaCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDM3MTogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUgewogICAgICAgICAgICAgICAgX19jb25zdHJ1Y3QoZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubW90aW9uRlggPSBlLm1vdGlvbkZYLCB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycyB8fCB0aGlzLnNldEVsZW1lbnRJblZpZXdwb3J0T2JzZXJ2ZXIoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0RWxlbWVudEluVmlld3BvcnRPYnNlcnZlcigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyID0gZWxlbWVudG9yTW9kdWxlcy51dGlscy5TY3JvbGwuc2Nyb2xsT2JzZXJ2ZXIoewogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmlzSW5WaWV3cG9ydCA/IHRoaXMub25JbnNpZGVWaWV3cG9ydCgpIDogdGhpcy5yZW1vdmVBbmltYXRpb25GcmFtZVJlcXVlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICJwYWdlIiA9PT0gdGhpcy5tb3Rpb25GWC5nZXRTZXR0aW5ncygicmFuZ2UiKSA/IGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRib2R5WzBdIDogdGhpcy5tb3Rpb25GWC5lbGVtZW50cy4kcGFyZW50WzBdOwogICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25JbnNpZGVWaWV3cG9ydCA9ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bigpLCB0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLm9uSW5zaWRlVmlld3BvcnQpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcnVuQ2FsbGJhY2soKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTZXR0aW5ncygiY2FsbGJhY2siKSguLi5hcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZW1vdmVJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyICYmIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMubW90aW9uRlguZWxlbWVudHMuJHBhcmVudFswXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlbW92ZUFuaW1hdGlvbkZyYW1lUmVxdWVzdCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdCAmJiBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVBbmltYXRpb25GcmFtZVJlcXVlc3QoKSwgdGhpcy5yZW1vdmVJbnRlcnNlY3Rpb25PYnNlcnZlcigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgMzgwMjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgcyA9IG4oNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IHMobigzNzEpKTsKICAgICAgICAgICAgY2xhc3MgTW91c2VNb3ZlSW50ZXJhY3Rpb24gZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBNb3VzZU1vdmVJbnRlcmFjdGlvbi5tb3VzZVRyYWNrZWQgfHwgKGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oIm1vdXNlbW92ZSIsIE1vdXNlTW92ZUludGVyYWN0aW9uLnVwZGF0ZU1vdXNlUG9zaXRpb24pLCBNb3VzZU1vdmVJbnRlcmFjdGlvbi5tb3VzZVRyYWNrZWQgPSAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJ1bigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gTW91c2VNb3ZlSW50ZXJhY3Rpb24ubW91c2VQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMub2xkTW91c2VQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICBpZiAodC54ID09PSBlLnggJiYgdC55ID09PSBlLnkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZE1vdXNlUG9zaXRpb24gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGUueCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogZS55CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gMTAwIC8gaW5uZXJXaWR0aCAqIGUueCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDEwMCAvIGlubmVySGVpZ2h0ICogZS55OwogICAgICAgICAgICAgICAgICAgIHRoaXMucnVuQ2FsbGJhY2sobiwgcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZE1vdXNlUG9zaXRpb24gPSB7fSwgc3VwZXIub25Jbml0KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBNb3VzZU1vdmVJbnRlcmFjdGlvbiwgTW91c2VNb3ZlSW50ZXJhY3Rpb24ubW91c2VQb3NpdGlvbiA9IHt9LCBNb3VzZU1vdmVJbnRlcmFjdGlvbi51cGRhdGVNb3VzZVBvc2l0aW9uID0gZSA9PiB7CiAgICAgICAgICAgICAgICBNb3VzZU1vdmVJbnRlcmFjdGlvbi5tb3VzZVBvc2l0aW9uID0gewogICAgICAgICAgICAgICAgICAgIHg6IGUuY2xpZW50WCwKICAgICAgICAgICAgICAgICAgICB5OiBlLmNsaWVudFkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNTkzMTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgcyA9IG4oNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IHMobigzNzEpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgcnVuKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChwYWdlWU9mZnNldCA9PT0gdGhpcy53aW5kb3dTY3JvbGxUb3ApIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2Nyb2xsTW92ZW1lbnQoKSwgdGhpcy53aW5kb3dTY3JvbGxUb3AgPSBwYWdlWU9mZnNldAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25TY3JvbGxNb3ZlbWVudCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vdGlvbkZ4RGltZW5zaW9ucygpLCB0aGlzLnVwZGF0ZUFuaW1hdGlvbigpLCB0aGlzLnJlc2V0VHJhbnNpdGlvblZhcmlhYmxlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlc2V0VHJhbnNpdGlvblZhcmlhYmxlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubW90aW9uRlguJGVsZW1lbnQuY3NzKCItLWUtdHJhbnNmb3JtLXRyYW5zaXRpb24tZHVyYXRpb24iLCAiMTAwbXMiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdXBkYXRlTW90aW9uRnhEaW1lbnNpb25zKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubW90aW9uRlguZ2V0U2V0dGluZ3MoKS5yZWZyZXNoRGltZW5zaW9ucyAmJiB0aGlzLm1vdGlvbkZYLmRlZmluZURpbWVuc2lvbnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdXBkYXRlQW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlOwogICAgICAgICAgICAgICAgICAgIGUgPSAicGFnZSIgPT09IHRoaXMubW90aW9uRlguZ2V0U2V0dGluZ3MoInJhbmdlIikgPyBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLlNjcm9sbC5nZXRQYWdlU2Nyb2xsUGVyY2VudGFnZSgpIDogdGhpcy5tb3Rpb25GWC5nZXRTZXR0aW5ncygiaXNGaXhlZFBvc2l0aW9uIikgPyBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLlNjcm9sbC5nZXRQYWdlU2Nyb2xsUGVyY2VudGFnZSh7fSwgd2luZG93LmlubmVySGVpZ2h0KSA6IGVsZW1lbnRvck1vZHVsZXMudXRpbHMuU2Nyb2xsLmdldEVsZW1lbnRWaWV3cG9ydFBlcmNlbnRhZ2UodGhpcy5tb3Rpb25GWC5lbGVtZW50cy4kcGFyZW50KSwgdGhpcy5ydW5DYWxsYmFjayhlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA1NDY5OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBzID0gbig3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gcyhuKDU5MzEpKSwKICAgICAgICAgICAgICAgIG8gPSBzKG4oMzgwMikpLAogICAgICAgICAgICAgICAgciA9IHMobigyMjkyKSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlIHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiZWxlbWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAkZGltZW5zaW9uc0VsZW1lbnQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRMYXllclRvOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbnM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoRGltZW5zaW9uczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlOiAidmlld3BvcnQiLAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAibW90aW9uLWZ4LWVsZW1lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiAibW90aW9uLWZ4LXBhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kVHlwZTogIm1vdGlvbi1meC1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICJtb3Rpb24tZngtY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiAibW90aW9uLWZ4LWxheWVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNwZWN0aXZlOiAibW90aW9uLWZ4LXBlcnNwZWN0aXZlIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZURpbWVuc2lvbnMgPSB0aGlzLmRlZmluZURpbWVuc2lvbnMuYmluZCh0aGlzKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdpbmRvdy5vbigicmVzaXplIGVsZW1lbnRvci1wcm8vbW90aW9uLWZ4L3JlY2FsYyIsIHRoaXMuZGVmaW5lRGltZW5zaW9ucykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9mZigicmVzaXplIGVsZW1lbnRvci1wcm8vbW90aW9uLWZ4L3JlY2FsYyIsIHRoaXMuZGVmaW5lRGltZW5zaW9ucykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRMYXllcigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJG1vdGlvbkZYQ29udGFpbmVyID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGUuY2xhc3Nlcy5jb250YWluZXIKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5lbGVtZW50cy4kbW90aW9uRlhMYXllciA9IGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLmNsYXNzZXMubGF5ZXIKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy51cGRhdGVCYWNrZ3JvdW5kTGF5ZXJTaXplKCksIHRoaXMuZWxlbWVudHMuJG1vdGlvbkZYQ29udGFpbmVyLnByZXBlbmQodGhpcy5lbGVtZW50cy4kbW90aW9uRlhMYXllcik7CiAgICAgICAgICAgICAgICAgICAgKGUuYWRkQmFja2dyb3VuZExheWVyVG8gPyB0aGlzLiRlbGVtZW50LmZpbmQoZS5hZGRCYWNrZ3JvdW5kTGF5ZXJUbykgOiB0aGlzLiRlbGVtZW50KS5wcmVwZW5kKHRoaXMuZWxlbWVudHMuJG1vdGlvbkZYQ29udGFpbmVyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVtb3ZlQmFja2dyb3VuZExheWVyKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJG1vdGlvbkZYQ29udGFpbmVyLnJlbW92ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVCYWNrZ3JvdW5kTGF5ZXJTaXplKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5pbnRlcmFjdGlvbnMubW91c2VNb3ZlLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5pbnRlcmFjdGlvbnMuc2Nyb2xsOwogICAgICAgICAgICAgICAgICAgIG4gJiYgbi50cmFuc2xhdGVYWSAmJiAodC54ID0gMTAgKiBuLnRyYW5zbGF0ZVhZLnNwZWVkLCB0LnkgPSAxMCAqIG4udHJhbnNsYXRlWFkuc3BlZWQpLCBzICYmIChzLnRyYW5zbGF0ZVggJiYgKHQueCA9IDEwICogcy50cmFuc2xhdGVYLnNwZWVkKSwgcy50cmFuc2xhdGVZICYmICh0LnkgPSAxMCAqIHMudHJhbnNsYXRlWS5zcGVlZCkpLCB0aGlzLmVsZW1lbnRzLiRtb3Rpb25GWExheWVyLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAgKyB0LnggKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwICsgdC55ICsgIiUiCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlZmluZURpbWVuc2lvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoIiRkaW1lbnNpb25zRWxlbWVudCIpIHx8IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLm9mZnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudEhlaWdodDogZS5vdXRlckhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFdpZHRoOiBlLm91dGVyV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb3A6IHQudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudExlZnQ6IHQubGVmdAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIG4uZWxlbWVudFJhbmdlID0gbi5lbGVtZW50SGVpZ2h0ICsgaW5uZXJIZWlnaHQsIHRoaXMuc2V0U2V0dGluZ3MoImRpbWVuc2lvbnMiLCBuKSwgImJhY2tncm91bmQiID09PSB0aGlzLmdldFNldHRpbmdzKCJ0eXBlIikgJiYgdGhpcy5kZWZpbmVCYWNrZ3JvdW5kTGF5ZXJEaW1lbnNpb25zKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlZmluZUJhY2tncm91bmRMYXllckRpbWVuc2lvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoImRpbWVuc2lvbnMiKTsKICAgICAgICAgICAgICAgICAgICBlLmxheWVySGVpZ2h0ID0gdGhpcy5lbGVtZW50cy4kbW90aW9uRlhMYXllci5oZWlnaHQoKSwgZS5sYXllcldpZHRoID0gdGhpcy5lbGVtZW50cy4kbW90aW9uRlhMYXllci53aWR0aCgpLCBlLm1vdmFibGVYID0gZS5sYXllcldpZHRoIC0gZS5lbGVtZW50V2lkdGgsIGUubW92YWJsZVkgPSBlLmxheWVySGVpZ2h0IC0gZS5lbGVtZW50SGVpZ2h0LCB0aGlzLnNldFNldHRpbmdzKCJkaW1lbnNpb25zIiwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRJbnRlcmFjdGlvbnNUeXBlcygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVyYWN0aW9uc1R5cGVzID0gewogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IGkuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VNb3ZlOiBvLmRlZmF1bHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwcmVwYXJlU3BlY2lhbEFjdGlvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICEoIWUuaW50ZXJhY3Rpb25zLm1vdXNlTW92ZSB8fCAhZS5pbnRlcmFjdGlvbnMubW91c2VNb3ZlLnRpbHQpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHBhcmVudC50b2dnbGVDbGFzcyhlLmNsYXNzZXMucGVyc3BlY3RpdmUsIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjbGVhblNwZWNpYWxBY3Rpb25zKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kcGFyZW50LnJlbW92ZUNsYXNzKGUuY2xhc3Nlcy5wZXJzcGVjdGl2ZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJ1bkludGVyYWN0aW9ucygpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbnMuc2V0Q1NTVHJhbnNmb3JtVmFyaWFibGVzKHQuZWxlbWVudFNldHRpbmdzKSwgdGhpcy5wcmVwYXJlU3BlY2lhbEFjdGlvbnMoKSwgalF1ZXJ5LmVhY2godC5pbnRlcmFjdGlvbnMsICgodCwgbikgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVyYWN0aW9uc1t0XSA9IG5ldyB0aGlzLmludGVyYWN0aW9uc1R5cGVzW3RdKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkZYOiB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoLCBzID0gbmV3IEFycmF5KHQpLCBpID0gMDsgaSA8IHQ7IGkrKykgc1tpXSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChuLCAoKHQsIG4pID0+IGUuYWN0aW9ucy5ydW5BY3Rpb24odCwgbiwgLi4ucykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbnRlcmFjdGlvbnNbdF0ucnVuKCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlc3Ryb3lJbnRlcmFjdGlvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhblNwZWNpYWxBY3Rpb25zKCksIGpRdWVyeS5lYWNoKHRoaXMuaW50ZXJhY3Rpb25zLCAoKGUsIHQpID0+IHQuZGVzdHJveSgpKSksIHRoaXMuaW50ZXJhY3Rpb25zID0ge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlZnJlc2goKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zLnNldFNldHRpbmdzKHRoaXMuZ2V0U2V0dGluZ3MoKSksICJiYWNrZ3JvdW5kIiA9PT0gdGhpcy5nZXRTZXR0aW5ncygidHlwZSIpICYmICh0aGlzLnVwZGF0ZUJhY2tncm91bmRMYXllclNpemUoKSwgdGhpcy5kZWZpbmVCYWNrZ3JvdW5kTGF5ZXJEaW1lbnNpb25zKCkpLCB0aGlzLmFjdGlvbnMucmVmcmVzaCgpLCB0aGlzLmRlc3Ryb3lJbnRlcmFjdGlvbnMoKSwgdGhpcy5ydW5JbnRlcmFjdGlvbnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVzdHJveSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lJbnRlcmFjdGlvbnMoKSwgdGhpcy5hY3Rpb25zLnJlZnJlc2goKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoZS5jbGFzc2VzLmVsZW1lbnQpLCB0aGlzLmVsZW1lbnRzLiRwYXJlbnQucmVtb3ZlQ2xhc3MoZS5jbGFzc2VzLnBhcmVudCksICJiYWNrZ3JvdW5kIiA9PT0gZS50eXBlICYmICh0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKGUuY2xhc3Nlcy5iYWNrZ3JvdW5kVHlwZSksIHRoaXMucmVtb3ZlQmFja2dyb3VuZExheWVyKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50ID0gZS4kZWxlbWVudCwgdGhpcy5lbGVtZW50cy4kcGFyZW50ID0gdGhpcy4kZWxlbWVudC5wYXJlbnQoKSwgdGhpcy4kZWxlbWVudC5hZGRDbGFzcyhlLmNsYXNzZXMuZWxlbWVudCksIHRoaXMuZWxlbWVudHMuJHBhcmVudCA9IHRoaXMuJGVsZW1lbnQucGFyZW50KCksIHRoaXMuZWxlbWVudHMuJHBhcmVudC5hZGRDbGFzcyhlLmNsYXNzZXMucGFyZW50KSwgImJhY2tncm91bmQiID09PSBlLnR5cGUgJiYgKHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3MoZS5jbGFzc2VzLmJhY2tncm91bmRUeXBlKSwgdGhpcy5hZGRCYWNrZ3JvdW5kTGF5ZXIoKSksIHRoaXMuZGVmaW5lRGltZW5zaW9ucygpLCBlLiR0YXJnZXRFbGVtZW50ID0gImVsZW1lbnQiID09PSBlLnR5cGUgPyB0aGlzLiRlbGVtZW50IDogdGhpcy5lbGVtZW50cy4kbW90aW9uRlhMYXllciwgdGhpcy5pbnRlcmFjdGlvbnMgPSB7fSwgdGhpcy5hY3Rpb25zID0gbmV3IHIuZGVmYXVsdChlKSwgdGhpcy5pbml0SW50ZXJhY3Rpb25zVHlwZXMoKSwgdGhpcy5ydW5JbnRlcmFjdGlvbnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA1MDM5OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKCksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hdHRhY2hIYW5kbGVyKCJwYXlwYWwtYnV0dG9uIiwgKCgpID0+IG4uZSgyNTYpLnRoZW4obi5iaW5kKG4sIDQ0NTIpKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDkyMTA6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInByb2dyZXNzLXRyYWNrZXIiLCAoKCkgPT4gbi5lKDI0MSkudGhlbihuLmJpbmQobiwgMjE3NykpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgOTU3NTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgcyA9IG4oNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IHMobigyMDkwKSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInNlY3Rpb24iLCBpLmRlZmF1bHQsIG51bGwpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigiY29udGFpbmVyIiwgaS5kZWZhdWx0LCBudWxsKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoIndpZGdldCIsIGkuZGVmYXVsdCwgbnVsbCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgMjA5MDogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIG4gPSBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuYWRkTGlzdGVuZXJPbmNlKHRoaXMuZ2V0VW5pcXVlSGFuZGxlcklEKCkgKyAic3RpY2t5IiwgInJlc2l6ZSIsIHRoaXMucmVmcmVzaCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1bmJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQucmVtb3ZlTGlzdGVuZXJzKHRoaXMuZ2V0VW5pcXVlSGFuZGxlcklEKCkgKyAic3RpY2t5IiwgInJlc2l6ZSIsIHRoaXMucmVmcmVzaCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpc1N0aWNreUluc3RhbmNlQWN0aXZlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHRoaXMuJGVsZW1lbnQuZGF0YSgic3RpY2t5IikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRSZXNwb25zaXZlU2V0dGluZyhlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKHQsIGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0UmVzcG9uc2l2ZVNldHRpbmdMaXN0OiBlID0+IFsiIiwgLi4uT2JqZWN0LmtleXMoZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnJlc3BvbnNpdmUuYWN0aXZlQnJlYWtwb2ludHMpXS5tYXAoKHQgPT4gdCA/IGAke2V9XyR7dH1gIDogZSkpLAogICAgICAgICAgICAgICAgYWN0aXZhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGUuc3RpY2t5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLmdldFJlc3BvbnNpdmVTZXR0aW5nKCJzdGlja3lfb2Zmc2V0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RzT2Zmc2V0OiB0aGlzLmdldFJlc3BvbnNpdmVTZXR0aW5nKCJzdGlja3lfZWZmZWN0c19vZmZzZXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k6ICJlbGVtZW50b3Itc3RpY2t5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lBY3RpdmU6ICJlbGVtZW50b3Itc3RpY2t5LS1hY3RpdmUgZWxlbWVudG9yLXNlY3Rpb24tLWhhbmRsZXMtaW5zaWRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lFZmZlY3RzOiAiZWxlbWVudG9yLXN0aWNreS0tZWZmZWN0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VyOiAiZWxlbWVudG9yLXN0aWNreV9fc3BhY2VyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdwQWRtaW5CYXI7CiAgICAgICAgICAgICAgICAgICAgZS5zdGlja3lfcGFyZW50ICYmICh0LnBhcmVudCA9ICIuZS1jb250YWluZXIsIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAiKSwgbi5sZW5ndGggJiYgInRvcCIgPT09IGUuc3RpY2t5ICYmICJmaXhlZCIgPT09IG4uY3NzKCJwb3NpdGlvbiIpICYmICh0Lm9mZnNldCArPSBuLmhlaWdodCgpKSwgdGhpcy4kZWxlbWVudC5zdGlja3kodCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZWFjdGl2YXRlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdGlja3lJbnN0YW5jZUFjdGl2ZSgpICYmIHRoaXMuJGVsZW1lbnQuc3RpY2t5KCJkZXN0cm95IikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBydW4oZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygic3RpY2t5IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlbGVtZW50b3JGcm9udGVuZC5nZXRDdXJyZW50RGV2aWNlTW9kZSgpOyAtIDEgIT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJzdGlja3lfb24iKS5pbmRleE9mKHQpID8gITAgPT09IGUgPyB0aGlzLnJlYWN0aXZhdGUoKSA6IHRoaXMuaXNTdGlja3lJbnN0YW5jZUFjdGl2ZSgpIHx8IHRoaXMuYWN0aXZhdGUoKSA6IHRoaXMuZGVhY3RpdmF0ZSgpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuZGVhY3RpdmF0ZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmVmcmVzaCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bighMCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZWFjdGl2YXRlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpLCB0aGlzLmFjdGl2YXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgICAgIC0xICE9PSBbInN0aWNreSIsICJzdGlja3lfb24iXS5pbmRleE9mKGUpICYmIHRoaXMucnVuKCEwKTsgLSAxICE9PSBbLi4udGhpcy5nZXRSZXNwb25zaXZlU2V0dGluZ0xpc3QoInN0aWNreV9vZmZzZXQiKSwgLi4udGhpcy5nZXRSZXNwb25zaXZlU2V0dGluZ0xpc3QoInN0aWNreV9lZmZlY3RzX29mZnNldCIpLCAic3RpY2t5X3BhcmVudCJdLmluZGV4T2YoZSkgJiYgdGhpcy5yZWFjdGl2YXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkRldmljZU1vZGVDaGFuZ2UoKSB7CiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLnJlZnJlc2gpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZS5wcm90b3R5cGUub25Jbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiBlbGVtZW50b3IubGlzdGVuVG8oZWxlbWVudG9yLmNoYW5uZWxzLmRldmljZU1vZGUsICJjaGFuZ2UiLCAoKCkgPT4gdGhpcy5vbkRldmljZU1vZGVDaGFuZ2UoKSkpLCB0aGlzLnJ1bigpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25EZXN0cm95KCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZS5wcm90b3R5cGUub25EZXN0cm95LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRoaXMuZGVhY3RpdmF0ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBuCiAgICAgICAgfSwKICAgICAgICA1MTYxOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKCksIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbigiZnJvbnRlbmQvZWxlbWVudF9yZWFkeS92aWRlby1wbGF5bGlzdC5kZWZhdWx0IiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBuLmUoNzIxKS50aGVuKG4uYmluZChuLCAxNTgwKSkudGhlbigodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmFkZEhhbmRsZXIobiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50OiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVNlbGY6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0KICAgIH0sCiAgICBlID0+IHsKICAgICAgICB2YXIgdDsKICAgICAgICB0ID0gMiwgZShlLnMgPSB0KQogICAgfQpdKTs="}},"time_used":1292,"timings":{"blocked":1133,"dns":0,"connect":0,"send":0,"wait":159,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.5.6","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.284Z","timestamp":1785145482284,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.5.6 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 3029\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":3029,"size_decoded":3238,"mime_type":"text/css","magic":"ASCII text","md5":"5e0c4a185df1c7cf02ddd0cf5cbd1b5f","sha1":"41776f790ca32c2f0f24159d265e958f22cfd0bd","sha256":"284e4df4d7b8bb550a777a3c6e458422d4240aaa1103755bfe9c38e899cfac23","sha512":"20e3192cdb497b6be9c0d9219f4cf176675fbd2d50c27a7c371954ef197bd68c62fc9ca4e238053a540346bf6579c09ba91c56cc6e17b930f22bcccb5224d12f","ssdeep":"","tlshash":"205101a05aa318415eff83d62bbe970433657483c11bdfa97ac5132c4f382456123f5d","first_seen":"2023-04-21T12:43:52Z","last_seen":"2026-07-27T09:45:50.939165Z","times_seen":33,"resource_available":false,"data":"LndwY2Y3IC5zY3JlZW4tcmVhZGVyLXJlc3BvbnNlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7CiAgICBjbGlwLXBhdGg6IGluc2V0KDUwJSk7CiAgICBoZWlnaHQ6IDFweDsKICAgIHdpZHRoOiAxcHg7CiAgICBtYXJnaW46IC0xcHg7CiAgICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiAwOwogICAgd29yZC13cmFwOiBub3JtYWwgIWltcG9ydGFudDsKfQoKLndwY2Y3IGZvcm0gLndwY2Y3LXJlc3BvbnNlLW91dHB1dCB7CiAgICBtYXJnaW46IDJlbSAwLjVlbSAxZW07CiAgICBwYWRkaW5nOiAwLjJlbSAxZW07CiAgICBib3JkZXI6IDJweCBzb2xpZCAjMDBhMGQyOwogICAgLyogQmx1ZSAqLwp9Cgoud3BjZjcgZm9ybS5pbml0IC53cGNmNy1yZXNwb25zZS1vdXRwdXQsCi53cGNmNyBmb3JtLnJlc2V0dGluZyAud3BjZjctcmVzcG9uc2Utb3V0cHV0LAoud3BjZjcgZm9ybS5zdWJtaXR0aW5nIC53cGNmNy1yZXNwb25zZS1vdXRwdXQgewogICAgZGlzcGxheTogbm9uZTsKfQoKLndwY2Y3IGZvcm0uc2VudCAud3BjZjctcmVzcG9uc2Utb3V0cHV0IHsKICAgIGJvcmRlci1jb2xvcjogIzQ2YjQ1MDsKICAgIC8qIEdyZWVuICovCn0KCi53cGNmNyBmb3JtLmZhaWxlZCAud3BjZjctcmVzcG9uc2Utb3V0cHV0LAoud3BjZjcgZm9ybS5hYm9ydGVkIC53cGNmNy1yZXNwb25zZS1vdXRwdXQgewogICAgYm9yZGVyLWNvbG9yOiAjZGMzMjMyOwogICAgLyogUmVkICovCn0KCi53cGNmNyBmb3JtLnNwYW0gLndwY2Y3LXJlc3BvbnNlLW91dHB1dCB7CiAgICBib3JkZXItY29sb3I6ICNmNTZlMjg7CiAgICAvKiBPcmFuZ2UgKi8KfQoKLndwY2Y3IGZvcm0uaW52YWxpZCAud3BjZjctcmVzcG9uc2Utb3V0cHV0LAoud3BjZjcgZm9ybS51bmFjY2VwdGVkIC53cGNmNy1yZXNwb25zZS1vdXRwdXQsCi53cGNmNyBmb3JtLnBheW1lbnQtcmVxdWlyZWQgLndwY2Y3LXJlc3BvbnNlLW91dHB1dCB7CiAgICBib3JkZXItY29sb3I6ICNmZmI5MDA7CiAgICAvKiBZZWxsb3cgKi8KfQoKLndwY2Y3LWZvcm0tY29udHJvbC13cmFwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLndwY2Y3LW5vdC12YWxpZC10aXAgewogICAgY29sb3I6ICNkYzMyMzI7CiAgICAvKiBSZWQgKi8KICAgIGZvbnQtc2l6ZTogMWVtOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgoudXNlLWZsb2F0aW5nLXZhbGlkYXRpb24tdGlwIC53cGNmNy1ub3QtdmFsaWQtdGlwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogLTJleDsKICAgIGxlZnQ6IDFlbTsKICAgIHotaW5kZXg6IDEwMDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkYzMyMzI7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgcGFkZGluZzogLjJlbSAuOGVtOwogICAgd2lkdGg6IDI0ZW07Cn0KCi53cGNmNy1saXN0LWl0ZW0gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luOiAwIDAgMCAxZW07Cn0KCi53cGNmNy1saXN0LWl0ZW0tbGFiZWw6OmJlZm9yZSwKLndwY2Y3LWxpc3QtaXRlbS1sYWJlbDo6YWZ0ZXIgewogICAgY29udGVudDogIiAiOwp9Cgoud3BjZjctc3Bpbm5lciB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyODJkOwogICAgLyogRGFyayBHcmF5IDgwMCAqLwogICAgb3BhY2l0eTogMC43NTsKICAgIHdpZHRoOiAyNHB4OwogICAgaGVpZ2h0OiAyNHB4OwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDAgMjRweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKZm9ybS5zdWJtaXR0aW5nIC53cGNmNy1zcGlubmVyIHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7Cn0KCi53cGNmNy1zcGlubmVyOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmYmZjOwogICAgLyogTGlnaHQgR3JheSAxMDAgKi8KICAgIHRvcDogNHB4OwogICAgbGVmdDogNHB4OwogICAgd2lkdGg6IDZweDsKICAgIGhlaWdodDogNnB4OwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDhweCA4cHg7CiAgICBhbmltYXRpb24tbmFtZTogc3BpbjsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMG1zOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwogICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7Cn0KCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgICAud3BjZjctc3Bpbm5lcjo6YmVmb3JlIHsKICAgICAgICBhbmltYXRpb24tbmFtZTogYmxpbms7CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAyMDAwbXM7CiAgICB9Cn0KCkBrZXlmcmFtZXMgc3BpbiB7CiAgICBmcm9tIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgfQp9CgpAa2V5ZnJhbWVzIGJsaW5rIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICA1MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKLndwY2Y3IGlucHV0W3R5cGU9ImZpbGUiXSB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi53cGNmNyBpbnB1dFt0eXBlPSJmaWxlIl06ZGlzYWJsZWQgewogICAgY3Vyc29yOiBkZWZhdWx0Owp9Cgoud3BjZjcgLndwY2Y3LXN1Ym1pdDpkaXNhYmxlZCB7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Cgoud3BjZjcgaW5wdXRbdHlwZT0idXJsIl0sCi53cGNmNyBpbnB1dFt0eXBlPSJlbWFpbCJdLAoud3BjZjcgaW5wdXRbdHlwZT0idGVsIl0gewogICAgZGlyZWN0aW9uOiBsdHI7Cn0="}},"time_used":330,"timings":{"blocked":-1,"dns":0,"connect":93,"send":0,"wait":95,"receive":0,"ssl":142},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/jquery.highlight.js?ver=5","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.470Z","timestamp":1785145482470,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/jquery.highlight.js?ver=5 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 1706\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":1706,"size_decoded":1922,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"c7ee5ef9d09c0e48a4da296500ed24fa","sha1":"050e21c1200b99475e975c3fb560048eedddaf51","sha256":"6fe5fd1b538cdc13214348ccb45b7efc3a3fd6c4fc01d5f36fb844818336fc33","sha512":"d932fea52f4609324b9ce8891b5d5f2dacb10311e8e7938edb9e80246d21d9efec287ce1444c83c88fc56e5e296b67f528d5c263fc68129ac62a3e5919bc5e70","ssdeep":"","tlshash":"7931e148bfd3131ea42734b72fbfd10cbe7698d32408c4547a5c56815f508a126eb7b4","first_seen":"2026-07-27T08:06:56.458024Z","last_seen":"2026-07-27T09:45:50.860631Z","times_seen":3,"resource_available":true,"data":"LyoKCmhpZ2hsaWdodCB2NQoKSGlnaGxpZ2h0cyBhcmJpdHJhcnkgdGVybXMuCgo8aHR0cDovL2pvaGFubmJ1cmthcmQuZGUvYmxvZy9wcm9ncmFtbWluZy9qYXZhc2NyaXB0L2hpZ2hsaWdodC1qYXZhc2NyaXB0LXRleHQtaGlnbGlnaHRpbmctanF1ZXJ5LXBsdWdpbi5odG1sPgoKTUlUIGxpY2Vuc2UuCgpKb2hhbm4gQnVya2FyZAo8aHR0cDovL2pvaGFubmJ1cmthcmQuZGU+CjxtYWlsdG86amJAZWFpby5jb20+CgoqLwoKalF1ZXJ5LmZuLmhpZ2hsaWdodCA9IGZ1bmN0aW9uKHBhdCkgewogICAgZnVuY3Rpb24gaW5uZXJIaWdobGlnaHQobm9kZSwgcGF0KSB7CiAgICAgICAgdmFyIHNraXAgPSAwOwogICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMpIHsKICAgICAgICAgICAgdmFyIHBvcyA9IG5vZGUuZGF0YS50b1VwcGVyQ2FzZSgpLmluZGV4T2YocGF0KTsKICAgICAgICAgICAgcG9zIC09IChub2RlLmRhdGEuc3Vic3RyKDAsIHBvcykudG9VcHBlckNhc2UoKS5sZW5ndGggLSBub2RlLmRhdGEuc3Vic3RyKDAsIHBvcykubGVuZ3RoKTsKICAgICAgICAgICAgaWYgKHBvcyA+PSAwKSB7CiAgICAgICAgICAgICAgICB2YXIgc3Bhbm5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgICAgICAgICAgICBzcGFubm9kZS5jbGFzc05hbWUgPSAnaGlnaGxpZ2h0JzsKICAgICAgICAgICAgICAgIHZhciBtaWRkbGViaXQgPSBub2RlLnNwbGl0VGV4dChwb3MpOwogICAgICAgICAgICAgICAgdmFyIGVuZGJpdCA9IG1pZGRsZWJpdC5zcGxpdFRleHQocGF0Lmxlbmd0aCk7CiAgICAgICAgICAgICAgICB2YXIgbWlkZGxlY2xvbmUgPSBtaWRkbGViaXQuY2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgICAgc3Bhbm5vZGUuYXBwZW5kQ2hpbGQobWlkZGxlY2xvbmUpOwogICAgICAgICAgICAgICAgbWlkZGxlYml0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHNwYW5ub2RlLCBtaWRkbGViaXQpOwogICAgICAgICAgICAgICAgc2tpcCA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiBub2RlLmNoaWxkTm9kZXMgJiYgIS8oc2NyaXB0fHN0eWxlKS9pLnRlc3Qobm9kZS50YWdOYW1lKSkgewogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgaSArPSBpbm5lckhpZ2hsaWdodChub2RlLmNoaWxkTm9kZXNbaV0sIHBhdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNraXA7CiAgICB9CiAgICByZXR1cm4gdGhpcy5sZW5ndGggJiYgcGF0ICYmIHBhdC5sZW5ndGggPyB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgaW5uZXJIaWdobGlnaHQodGhpcywgcGF0LnRvVXBwZXJDYXNlKCkpOwogICAgfSkgOiB0aGlzOwp9OwoKalF1ZXJ5LmZuLnJlbW92ZUhpZ2hsaWdodCA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZmluZCgic3Bhbi5oaWdobGlnaHQiKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkLm5vZGVOYW1lOwogICAgICAgIHdpdGgodGhpcy5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgIHJlcGxhY2VDaGlsZCh0aGlzLmZpcnN0Q2hpbGQsIHRoaXMpOwogICAgICAgICAgICBub3JtYWxpemUoKTsKICAgICAgICB9CiAgICB9KS5lbmQoKTsKfTs="}},"time_used":1024,"timings":{"blocked":930,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/icon-dol.png","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.872Z","timestamp":1785145485872,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/icon-dol.png HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/wp-content/themes/homeo/css/template.css?ver=1.0\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:45 GMT\r\nContent-Type: image/png\r\nContent-Length: 3391\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 13:00:26 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":3391,"size_decoded":3601,"mime_type":"image/png","magic":"PNG image data, 32 x 24, 8-bit/color RGBA, non-interlaced","md5":"e26888ae73578febbd3ed7962f979710","sha1":"a19bd7e0e6d04b42a2aa60ba1705a3ad82113da1","sha256":"eff7d96e1118ba3796a02c540a7f23ef95ea27e865634a6946ed0b4d7117adcb","sha512":"863345c2ea6cb5f53cedcfabd76ea602f79f4cd432a7f9e9cea29cccf3df198c7a1c539a41ced7c3ff94453d8b4e72420635306c3e20ade47bc0fa9fc83a5906","ssdeep":"","tlshash":"93616eaf8a70d09de4ed75900ecd5605e729337c9a573664b0e158df90a6e07bf52070","first_seen":"2023-05-04T14:40:12Z","last_seen":"2026-07-27T13:54:26.955615Z","times_seen":101,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAmpJREFUeNrE1l9o1WUYB/DPxtGydE0yJ9FMvJgSi4RtonljKBQKUdqFJRjMCy8GK+imoEEEGkh4EULSUASvTMpAnIGSFzVI5vCmdbWYF0FqIFvWKA2fLnpO/Dqd3xldbOcLL7/zPr/3fd7v+33+/E5LRMygTXMwUMnDl+PXBT78I7RVcvJnDriMzfNwYGA7RnN+H1prFm1FD9ZhVckYxg28jrXowyncxsYG+07gDTzwb1p/Y2lEXImIWxHxUkQoGa9ExPWI6Kjzbih9tJbsbY+IkYiYjYgdEXE0It4uKvAktuCLEglb8QEGcBNHcBIvYDEO4kHsKtk/jR34EiuLTmvjVIaNWIQRvIx+/JIHj6avY9g7Ry7cr71VPWzGOM7g4bT14Zsk2Y+3MIhePIEufJ1Eq3gVE5nxLWWy1sNQhmI1XkzbipQeZrGksP4R/Iaf8FjBfhiHsAfd9Q6qlBC4hHeS9Vjafi84/zkzW/YQmEF7Ein6+TB7zNT/UeBIhqELk2n7Hhvy9+kswwr2Ze+YxjO5ror9WfvdZY2utUGyTGZtV/FVOno6yT2OpVifzz68hnM1CTeRITMXgcC7BWlrcQcf41oSeD5v/R4u4Dy24ZOS/S2p2qZitRUJ7Eymlxrkxvv4LnPg27TdKOTJgRrViujP5H4Tn/3DKiICyzJGLZksUzXJVMRyPJu3H0dHhuYmrjYIaW+W7ac5P4ofK3Ua0W50zsPHaBgX/xOXVOBz3Fvgz3EPjlcVuJB1vpB4tNiInmuCAp1FAmNNUGBNkcBTuNvMEPyAPxaYwIYigY4mKPBQtQwHm/i3/OxfAwD/V+s5X42mhAAAAABJRU5ErkJggg=="}},"time_used":97,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T09:44:40.079Z","timestamp":1785145480079,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: betaroi.ltd\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx\r\nDate: Mon, 27 Jul 2026 09:44:41 GMT\r\nContent-Type: text/html\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nX-Powered-By: PHP/5.3.29\r\nExpires: Thu, 19 Nov 1981 08:52:00 GMT\r\nCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\nPragma: no-cache\r\nSet-Cookie: CameFrom=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT\nPHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5; path=/; domain=betaroi.ltd; HttpOnly\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Onsen UI","description":"Onsen UI is an open-source HTML5 hybrid app framework offering mobile UI components for PhoneGap and Cordova development.","website":"https://onsen.io","common_platform_enumeration":"","icon":"OnsenUI.svg","categories":["Mobile frameworks"]},{"name":"MySQL","description":"MySQL is an open-source relational database management system.","website":"https://mysql.com","common_platform_enumeration":"cpe:2.3:a:mysql:mysql:*:*:*:*:*:*:*:*","icon":"MySQL.svg","categories":["Databases"]},{"name":"Yoast SEO Premium:18.1","description":"Yoast SEO Premium is a search engine optimisation plugin for WordPress and other platforms.","website":"https://yoast.com/wordpress/plugins/seo/","common_platform_enumeration":"","icon":"Yoast SEO.png","categories":["SEO"]},{"name":"PHP:5.3.29","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"Magnific Popup:1.1.0","description":"Magnific Popup is a responsive lightbox \u0026 dialog script with focus on performance and providing best experience for user with any device.","website":"https://dimsemenov.com/plugins/magnific-popup/","common_platform_enumeration":"","icon":"Magnific Popup.png","categories":["JavaScript libraries"]},{"name":"Nginx","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"]},{"name":"Yoast SEO:18.5.1","description":"Yoast SEO is a search engine optimisation plugin for WordPress and other platforms.","website":"https://yoast.com/wordpress/plugins/seo/","common_platform_enumeration":"","icon":"Yoast SEO.png","categories":["SEO","WordPress plugins"]},{"name":"Site Kit:1.68.0","description":"Site Kit is a one-stop solution for WordPress users to use everything Google has to offer to make them successful on the web.","website":"https://sitekit.withgoogle.com/","common_platform_enumeration":"","icon":"Google.svg","categories":["Analytics","WordPress plugins"]},{"name":"Swiper","description":"Swiper is a JavaScript library that creates modern touch sliders with hardware-accelerated transitions.","website":"https://swiperjs.com","common_platform_enumeration":"","icon":"Swiper.svg","categories":["JavaScript libraries"]},{"name":"Redux Framework:4.1.24","description":"Redux Framework is a modular PHP library that allows developers to create customisable settings panels and controls for WordPress projects, providing a consistent user interface for managing options and settings.","website":"https://redux.io","common_platform_enumeration":"","icon":"Redux Framework.svg","categories":["WordPress plugins"]},{"name":"Slider Revolution:6.4.11","description":"Slider Revolution is a flexible and highly customisable slider.","website":"https://www.sliderrevolution.com","common_platform_enumeration":"","icon":"Slider Revolution.svg","categories":["Widgets","Photo galleries"]},{"name":"jQuery","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":"WordPress:5.9.3","description":"WordPress is a free and open-source content management system written in PHP and paired with a MySQL or MariaDB database. Features include a plugin architecture and a template system.","website":"https://wordpress.org","common_platform_enumeration":"cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:*","icon":"WordPress.svg","categories":["CMS","Blogs"]},{"name":"Slick","description":"","website":"https://kenwheeler.github.io/slick","common_platform_enumeration":"","icon":"Slick.svg","categories":["JavaScript libraries"]},{"name":"Underscore.js","description":"Underscore.js is a JavaScript library which provides utility functions for common programming tasks. It is comparable to features provided by Prototype.js and the Ruby language, but opts for a functional programming design instead of extending object prototypes.","website":"https://underscorejs.org","common_platform_enumeration":"","icon":"Underscore.js.png","categories":["JavaScript libraries"]},{"name":"Font Awesome","description":"Font Awesome is a font and icon toolkit based on CSS and Less.","website":"https://fontawesome.com/","common_platform_enumeration":"","icon":"Font Awesome.svg","categories":["Font scripts"]},{"name":"jQuery Migrate","description":"Query Migrate is a javascript library that allows you to preserve the compatibility of your jQuery code developed for versions of jQuery older than 1.9.","website":"https://github.com/jquery/jquery-migrate","common_platform_enumeration":"","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"JivoChat","description":"JivoChat is a live chat solution for websites offering customizable web and mobile chat widgets.","website":"https://www.jivosite.com","common_platform_enumeration":"","icon":"JivoChat.png","categories":["Live chat"]},{"name":"Bootstrap","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Chart.js","description":"Chart.js is an open-source JavaScript library that allows you to draw different types of charts by using the HTML5 canvas element.","website":"https://www.chartjs.org","common_platform_enumeration":"","icon":"Chart.js.svg","categories":["JavaScript graphics"]},{"name":"imagesLoaded","description":"jQuery plugin for seeing if the images are loaded.","website":"https://imagesloaded.desandro.com/","common_platform_enumeration":"","icon":"","categories":["JavaScript libraries"]}],"data":{"size":317585,"size_decoded":318040,"mime_type":"text/html","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (31266)","md5":"a2132366ac58af907f93042ffb281bae","sha1":"c97b7e03c6a36d7a81eef7655621eb5425bbfa85","sha256":"43e8e12073ada18c0811dd4d2cdb536f643e8dfc1775571d70aa342c0575805e","sha512":"60e5447e6a81f235342c7692dea6440a4117066a72e606434495a09db9327efe1fe016dfaea11a2282d1c9a4aa27e5f37912e87c39d7496bc85d95088b314910","ssdeep":"6144:6rvyN4RJQGaA1Wcu1YfpDdd2xuw3XHAHsPoZOvsP5bePd/izpgnul8z8KRluz8fg:GRJQGaA1Wcu1YfpDdd2xuw3XHAHsPoZn","tlshash":"0164c6a63c97883911af12cb4113378c944b8a9bd1369be4f7be426567f0c537be3216","first_seen":"2026-07-27T09:45:21.596434Z","last_seen":"2026-07-27T09:45:21.596434Z","times_seen":1,"resource_available":false,"data":"CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbi1VUyIgY2xhc3M9Im5vLWpzIj4KPGhlYWQ+Cgk8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cgk8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSwgdXNlci1zY2FsYWJsZT0wIi8+Cgk8bGluayByZWw9InByb2ZpbGUiIGhyZWY9Ii8vZ21wZy5vcmcveGZuLzExIj4KCTxtZXRhIG5hbWU9J3JvYm90cycgY29udGVudD0naW5kZXgsIGZvbGxvdywgbWF4LWltYWdlLXByZXZpZXc6bGFyZ2UsIG1heC1zbmlwcGV0Oi0xLCBtYXgtdmlkZW8tcHJldmlldzotMScgLz4KPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJMdXh1cnkgUmVhbCBFc3RhdGUgUHJvcGVydHkgQWdlbmN5ICYjODIxMTsgIEJ1eSwgU2VsbCBvciBSZW50IiAvPgoJPCEtLSBUaGlzIHNpdGUgaXMgb3B0aW1pemVkIHdpdGggdGhlIFlvYXN0IFNFTyBQcmVtaXVtIHBsdWdpbiB2MTguMSAoWW9hc3QgU0VPIHYxOC41LjEpIC0gaHR0cHM6Ly95b2FzdC5jb20vd29yZHByZXNzL3BsdWdpbnMvc2VvLz4KCTx0aXRsZT5CRVRBIFJFQUwgRVNUQVRFIExURCAtIEJMT0NLQ0hBSU4gVEVDSE5PTE9HWTwvdGl0bGU+Cgk8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQnV5LCBTZWxsICZhbXA7IExlYXNlIEx1eHVyeSBSZWFsIEVzdGF0ZSBQcm9wZXJ0aWVzLiBUaGUgQmVzdCBMdXh1cnkgUmVhbCBFc3RhdGUgTWFya2V0aW5nICZhbXA7IEJyb2tlcmFnZSBGaXJtIiAvPgoJPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vYmV0YXJvaS5sdGQvIiAvPgoJPG1ldGEgcHJvcGVydHk9Im9nOmxvY2FsZSIgY29udGVudD0iZW5fVVMiIC8+Cgk8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSIgLz4KCTxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iTHV4dXJ5IFJlYWwgRXN0YXRlIFByb3BlcnR5IEFnZW5jeSAtIEJ1eSwgU2VsbCBvciBSZW50IiAvPgoJPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJCdXksIFNlbGwgJmFtcDsgTGVhc2UgTHV4dXJ5IFJlYWwgRXN0YXRlIFByb3BlcnRpZXMuIFRoZSBCZXN0IEx1eHVyeSBSZWFsIEVzdGF0ZSBNYXJrZXRpbmcgJmFtcDsgQnJva2VyYWdlIEZpcm0iIC8+Cgk8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2JldGFyb2kubHRkLyIgLz4KCTxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkJldGFyb2kiIC8+Cgk8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTptb2RpZmllZF90aW1lIiBjb250ZW50PSIyMDIyLTAyLTI2VDA4OjQ5OjM3KzAwOjAwIiAvPgoJPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSIiIC8+Cgk8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InN1bW1hcnlfbGFyZ2VfaW1hZ2UiIC8+Cgk8bWV0YSBuYW1lPSJ0d2l0dGVyOmxhYmVsMSIgY29udGVudD0iRXN0LiByZWFkaW5nIHRpbWUiIC8+Cgk8bWV0YSBuYW1lPSJ0d2l0dGVyOmRhdGExIiBjb250ZW50PSIxMiBtaW51dGVzIiAvPgoJPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIiBjbGFzcz0ieW9hc3Qtc2NoZW1hLWdyYXBoIj57IkBjb250ZXh0IjoiaHR0cHM6Ly9zY2hlbWEub3JnIiwiQGdyYXBoIjpbeyJAdHlwZSI6Ik9yZ2FuaXphdGlvbiIsIkBpZCI6Imh0dHBzOi8vY3dsYWdvcy5jb20vI29yZ2FuaXphdGlvbiIsIm5hbWUiOiJDVyBSZWFsIEVzdGF0ZSIsInVybCI6Imh0dHBzOi8vY3dsYWdvcy5jb20vIiwic2FtZUFzIjpbXSwibG9nbyI6eyJAdHlwZSI6IkltYWdlT2JqZWN0IiwiQGlkIjoiaHR0cHM6Ly9jd2xhZ29zLmNvbS8jbG9nbyIsImluTGFuZ3VhZ2UiOiJlbi1VUyIsInVybCI6Imh0dHBzOi8vYmV0YXJvaS5sdGQvaW1hZ2VzL2JldGFyb2ktbG9nby5wbmc/Zml0PTEyOTklMkMyNzUmc3NsPTEiLCJjb250ZW50VXJsIjoiaHR0cHM6Ly9iZXRhcm9pLmx0ZC9pbWFnZXMvYmV0YXJvaS1sb2dvLnBuZz9maXQ9MTI5OSUyQzI3NSZzc2w9MSIsIndpZHRoIjoxMjk5LCJoZWlnaHQiOjI3NSwiY2FwdGlvbiI6IkNXIFJlYWwgRXN0YXRlIn0sImltYWdlIjp7IkBpZCI6Imh0dHBzOi8vY3dsYWdvcy5jb20vI2xvZ28ifX0seyJAdHlwZSI6IldlYlNpdGUiLCJAaWQiOiJodHRwczovL2N3bGFnb3MuY29tLyN3ZWJzaXRlIiwidXJsIjoiaHR0cHM6Ly9jd2xhZ29zLmNvbS8iLCJuYW1lIjoiQ1cgUmVhbCBFc3RhdGUiLCJkZXNjcmlwdGlvbiI6IkJ1eSBTZWxsICZhbXA7IExlYXNlIEx1eHVyeSBSZWFsIEVzdGF0ZSBpbiBMYWdvcyAmYW1wOyBBYnVqYSIsInB1Ymxpc2hlciI6eyJAaWQiOiJodHRwczovL2N3bGFnb3MuY29tLyNvcmdhbml6YXRpb24ifSwicG90ZW50aWFsQWN0aW9uIjpbeyJAdHlwZSI6IlNlYXJjaEFjdGlvbiIsInRhcmdldCI6eyJAdHlwZSI6IkVudHJ5UG9pbnQiLCJ1cmxUZW1wbGF0ZSI6Imh0dHBzOi8vY3dsYWdvcy5jb20vP3M9e3NlYXJjaF90ZXJtX3N0cmluZ30ifSwicXVlcnktaW5wdXQiOiJyZXF1aXJlZCBuYW1lPXNlYXJjaF90ZXJtX3N0cmluZyJ9XSwiaW5MYW5ndWFnZSI6ImVuLVVTIn0seyJAdHlwZSI6IkltYWdlT2JqZWN0IiwiQGlkIjoiaHR0cHM6Ly9jd2xhZ29zLmNvbS8jcHJpbWFyeWltYWdlIiwiaW5MYW5ndWFnZSI6ImVuLVVTIiwidXJsIjoiaHR0cHM6Ly9zZWN1cmUuZ3JhdmF0YXIuY29tL2F2YXRhci9kZjhlZDJiMDlkMjFlZDY2MWJjYTM1YWViZjUzZmYyZD9zPTQwJmFtcDtkPW1tJmFtcDtyPWciLCJjb250ZW50VXJsIjoiaHR0cHM6Ly9zZWN1cmUuZ3JhdmF0YXIuY29tL2F2YXRhci9kZjhlZDJiMDlkMjFlZDY2MWJjYTM1YWViZjUzZmYyZD9zPTQwJmFtcDtkPW1tJmFtcDtyPWcifSx7IkB0eXBlIjoiV2ViUGFnZSIsIkBpZCI6Imh0dHBzOi8vY3dsYWdvcy5jb20vI3dlYnBhZ2UiLCJ1cmwiOiJodHRwczovL2N3bGFnb3MuY29tLyIsIm5hbWUiOiJMdXh1cnkgUmVhbCBFc3RhdGUgUHJvcGVydHkgQWdlbmN5IC0gQnV5LCBTZWxsIG9yIFJlbnQgaW4gTGFnb3MgJiBBYnVqYSAtIENXIFJlYWwgRXN0YXRlIiwiaXNQYXJ0T2YiOnsiQGlkIjoiaHR0cHM6Ly9jd2xhZ29zLmNvbS8jd2Vic2l0ZSJ9LCJhYm91dCI6eyJAaWQiOiJodHRwczovL2N3bGFnb3MuY29tLyNvcmdhbml6YXRpb24ifSwicHJpbWFyeUltYWdlT2ZQYWdlIjp7IkBpZCI6Imh0dHBzOi8vY3dsYWdvcy5jb20vI3ByaW1hcnlpbWFnZSJ9LCJkYXRlUHVibGlzaGVkIjoiMjAyMC0wMi0yNlQwOToyNjoyMiswMDowMCIsImRhdGVNb2RpZmllZCI6IjIwMjItMDItMjZUMDg6NDk6MzcrMDA6MDAiLCJkZXNjcmlwdGlvbiI6IkJ1eSwgU2VsbCAmIExlYXNlIEx1eHVyeSBSZWFsIEVzdGF0ZSBQcm9wZXJ0aWVzIGluIExhZ29zICYgQWJ1amEuIFRoZSBCZXN0IEx1eHVyeSBSZWFsIEVzdGF0ZSBNYXJrZXRpbmcgJiBCcm9rZXJhZ2UgRmlybSBpbiBOaWdlcmlhIDIwMjEgw7DFuMKl4oChIiwiYnJlYWRjcnVtYiI6eyJAaWQiOiJodHRwczovL2N3bGFnb3MuY29tLyNicmVhZGNydW1iIn0sImluTGFuZ3VhZ2UiOiJlbi1VUyIsInBvdGVudGlhbEFjdGlvbiI6W3siQHR5cGUiOiJSZWFkQWN0aW9uIiwidGFyZ2V0IjpbImh0dHBzOi8vY3dsYWdvcy5jb20vIl19XX0seyJAdHlwZSI6IkJyZWFkY3J1bWJMaXN0IiwiQGlkIjoiaHR0cHM6Ly9jd2xhZ29zLmNvbS8jYnJlYWRjcnVtYiIsIml0ZW1MaXN0RWxlbWVudCI6W3siQHR5cGUiOiJMaXN0SXRlbSIsInBvc2l0aW9uIjoxLCJuYW1lIjoiSG9tZSJ9XX1dfTwvc2NyaXB0PgoJPC8gWW9hc3QgU0VPIFByZW1pdW0gcGx1Z2luLiAtLT4KCgo8bGluayByZWw9J2Rucy1wcmVmZXRjaCcgaHJlZj0nLy9mb250cy5nb29nbGVhcGlzLmNvbScgLz4KPGxpbmsgcmVsPSdkbnMtcHJlZmV0Y2gnIGhyZWY9Jy8vcy53Lm9yZycgLz4KPGxpbmsgcmVsPSdkbnMtcHJlZmV0Y2gnIGhyZWY9Jy8vaTAud3AuY29tJyAvPgo8bGluayByZWw9J2Rucy1wcmVmZXRjaCcgaHJlZj0nLy93aWRnZXRzLndwLmNvbScgLz4KPGxpbmsgcmVsPSdkbnMtcHJlZmV0Y2gnIGhyZWY9Jy8vczAud3AuY29tJyAvPgo8bGluayByZWw9J2Rucy1wcmVmZXRjaCcgaHJlZj0nLy8wLmdyYXZhdGFyLmNvbScgLz4KPGxpbmsgcmVsPSdkbnMtcHJlZmV0Y2gnIGhyZWY9Jy8vMS5ncmF2YXRhci5jb20nIC8+CjxsaW5rIHJlbD0nZG5zLXByZWZldGNoJyBocmVmPScvLzIuZ3JhdmF0YXIuY29tJyAvPgo8bGluayByZWw9J2Rucy1wcmVmZXRjaCcgaHJlZj0nLy9jMC53cC5jb20nIC8+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIiB0aXRsZT0iQ1cgUmVhbCBFc3RhdGUgJnJhcXVvOyBGZWVkIiBocmVmPSJodHRwczovL2N3bGFnb3MuY29tL2ZlZWQvIiAvPgo8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgdGl0bGU9IkNXIFJlYWwgRXN0YXRlICZyYXF1bzsgQ29tbWVudHMgRmVlZCIgaHJlZj0iaHR0cHM6Ly9jd2xhZ29zLmNvbS9jb21tZW50cy9mZWVkLyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp3aW5kb3cuX3dwZW1vamlTZXR0aW5ncyA9IHsiYmFzZVVybCI6Imh0dHBzOlwvXC9zLncub3JnXC9pbWFnZXNcL2NvcmVcL2Vtb2ppXC8xMy4xLjBcLzcyeDcyXC8iLCJleHQiOiIucG5nIiwic3ZnVXJsIjoiaHR0cHM6XC9cL3Mudy5vcmdcL2ltYWdlc1wvY29yZVwvZW1vamlcLzEzLjEuMFwvc3ZnXC8iLCJzdmdFeHQiOiIuc3ZnIiwic291cmNlIjp7ImNvbmNhdGVtb2ppIjoiaHR0cHM6XC9cL2N3bGFnb3MuY29tXC93cC1pbmNsdWRlc1wvanNcL3dwLWVtb2ppLXJlbGVhc2UubWluLmpzP3Zlcj01LjkuMyJ9fTsKLyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwohZnVuY3Rpb24oZSxhLHQpe3ZhciBuLHIsbyxpPWEuY3JlYXRlRWxlbWVudCgiY2FudmFzIikscD1pLmdldENvbnRleHQmJmkuZ2V0Q29udGV4dCgiMmQiKTtmdW5jdGlvbiBzKGUsdCl7dmFyIGE9U3RyaW5nLmZyb21DaGFyQ29kZTtwLmNsZWFyUmVjdCgwLDAsaS53aWR0aCxpLmhlaWdodCkscC5maWxsVGV4dChhLmFwcGx5KHRoaXMsZSksMCwwKTtlPWkudG9EYXRhVVJMKCk7cmV0dXJuIHAuY2xlYXJSZWN0KDAsMCxpLndpZHRoLGkuaGVpZ2h0KSxwLmZpbGxUZXh0KGEuYXBwbHkodGhpcyx0KSwwLDApLGU9PT1pLnRvRGF0YVVSTCgpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9YS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt0LnNyYz1lLHQuZGVmZXI9dC50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZCh0KX1mb3Iobz1BcnJheSgiZmxhZyIsImVtb2ppIiksdC5zdXBwb3J0cz17ZXZlcnl0aGluZzohMCxldmVyeXRoaW5nRXhjZXB0RmxhZzohMH0scj0wO3I8by5sZW5ndGg7cisrKXQuc3VwcG9ydHNbb1tyXV09ZnVuY3Rpb24oZSl7aWYoIXB8fCFwLmZpbGxUZXh0KXJldHVybiExO3N3aXRjaChwLnRleHRCYXNlbGluZT0idG9wIixwLmZvbnQ9IjYwMCAzMnB4IEFyaWFsIixlKXtjYXNlImZsYWciOnJldHVybiBzKFsxMjc5ODcsNjUwMzksODIwNSw5ODk1LDY1MDM5XSxbMTI3OTg3LDY1MDM5LDgyMDMsOTg5NSw2NTAzOV0pPyExOiFzKFs1NTM1Niw1NjgyNiw1NTM1Niw1NjgxOV0sWzU1MzU2LDU2ODI2LDgyMDMsNTUzNTYsNTY4MTldKSYmIXMoWzU1MzU2LDU3MzMyLDU2MTI4LDU2NDIzLDU2MTI4LDU2NDE4LDU2MTI4LDU2NDIxLDU2MTI4LDU2NDMwLDU2MTI4LDU2NDIzLDU2MTI4LDU2NDQ3XSxbNTUzNTYsNTczMzIsODIwMyw1NjEyOCw1NjQyMyw4MjAzLDU2MTI4LDU2NDE4LDgyMDMsNTYxMjgsNTY0MjEsODIwMyw1NjEyOCw1NjQzMCw4MjAzLDU2MTI4LDU2NDIzLDgyMDMsNTYxMjgsNTY0NDddKTtjYXNlImVtb2ppIjpyZXR1cm4hcyhbMTAwODQsNjUwMzksODIwNSw1NTM1Nyw1NjYxM10sWzEwMDg0LDY1MDM5LDgyMDMsNTUzNTcsNTY2MTNdKX1yZXR1cm4hMX0ob1tyXSksdC5zdXBwb3J0cy5ldmVyeXRoaW5nPXQuc3VwcG9ydHMuZXZlcnl0aGluZyYmdC5zdXBwb3J0c1tvW3JdXSwiZmxhZyIhPT1vW3JdJiYodC5zdXBwb3J0cy5ldmVyeXRoaW5nRXhjZXB0RmxhZz10LnN1cHBvcnRzLmV2ZXJ5dGhpbmdFeGNlcHRGbGFnJiZ0LnN1cHBvcnRzW29bcl1dKTt0LnN1cHBvcnRzLmV2ZXJ5dGhpbmdFeGNlcHRGbGFnPXQuc3VwcG9ydHMuZXZlcnl0aGluZ0V4Y2VwdEZsYWcmJiF0LnN1cHBvcnRzLmZsYWcsdC5ET01SZWFkeT0hMSx0LnJlYWR5Q2FsbGJhY2s9ZnVuY3Rpb24oKXt0LkRPTVJlYWR5PSEwfSx0LnN1cHBvcnRzLmV2ZXJ5dGhpbmd8fChuPWZ1bmN0aW9uKCl7dC5yZWFkeUNhbGxiYWNrKCl9LGEuYWRkRXZlbnRMaXN0ZW5lcj8oYS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixuLCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLG4sITEpKTooZS5hdHRhY2hFdmVudCgib25sb2FkIixuKSxhLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7ImNvbXBsZXRlIj09PWEucmVhZHlTdGF0ZSYmdC5yZWFkeUNhbGxiYWNrKCl9KSksKG49dC5zb3VyY2V8fHt9KS5jb25jYXRlbW9qaT9jKG4uY29uY2F0ZW1vamkpOm4ud3BlbW9qaSYmbi50d2Vtb2ppJiYoYyhuLnR3ZW1vamkpLGMobi53cGVtb2ppKSkpfSh3aW5kb3csZG9jdW1lbnQsd2luZG93Ll93cGVtb2ppU2V0dGluZ3MpOwo8L3NjcmlwdD4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KaW1nLndwLXNtaWxleSwKaW1nLmVtb2ppIHsKCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7Cglib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CgloZWlnaHQ6IDFlbSAhaW1wb3J0YW50OwoJd2lkdGg6IDFlbSAhaW1wb3J0YW50OwoJbWFyZ2luOiAwIDAuMDdlbSAhaW1wb3J0YW50OwoJdmVydGljYWwtYWxpZ246IC0wLjFlbSAhaW1wb3J0YW50OwoJYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50OwoJcGFkZGluZzogMCAhaW1wb3J0YW50Owp9Cjwvc3R5bGU+Cgk8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSd3cC1ibG9jay1saWJyYXJ5LWNzcycgIGhyZWY9J2h0dHBzOi8vYzAud3AuY29tL2MvNS45LjMvd3AtaW5jbHVkZXMvY3NzL2Rpc3QvYmxvY2stbGlicmFyeS9zdHlsZS5taW4uY3NzJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPHN0eWxlIGlkPSd3cC1ibG9jay1saWJyYXJ5LWlubGluZS1jc3MnIHR5cGU9J3RleHQvY3NzJz4KLmhhcy10ZXh0LWFsaWduLWp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5O30KPC9zdHlsZT4KPHN0eWxlIGlkPSd3cC1ibG9jay1saWJyYXJ5LXRoZW1lLWlubGluZS1jc3MnIHR5cGU9J3RleHQvY3NzJz4KLndwLWJsb2NrLWF1ZGlvIGZpZ2NhcHRpb257Y29sb3I6IzU1NTtmb250LXNpemU6MTNweDt0ZXh0LWFsaWduOmNlbnRlcn0uaXMtZGFyay10aGVtZSAud3AtYmxvY2stYXVkaW8gZmlnY2FwdGlvbntjb2xvcjpoc2xhKDAsMCUsMTAwJSwuNjUpfS53cC1ibG9jay1jb2RlPmNvZGV7Zm9udC1mYW1pbHk6TWVubG8sQ29uc29sYXMsbW9uYWNvLG1vbm9zcGFjZTtjb2xvcjojMWUxZTFlO3BhZGRpbmc6LjhlbSAxZW07Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6NHB4fS53cC1ibG9jay1lbWJlZCBmaWdjYXB0aW9ue2NvbG9yOiM1NTU7Zm9udC1zaXplOjEzcHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmlzLWRhcmstdGhlbWUgLndwLWJsb2NrLWVtYmVkIGZpZ2NhcHRpb257Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjY1KX0uYmxvY2tzLWdhbGxlcnktY2FwdGlvbntjb2xvcjojNTU1O2ZvbnQtc2l6ZToxM3B4O3RleHQtYWxpZ246Y2VudGVyfS5pcy1kYXJrLXRoZW1lIC5ibG9ja3MtZ2FsbGVyeS1jYXB0aW9ue2NvbG9yOmhzbGEoMCwwJSwxMDAlLC42NSl9LndwLWJsb2NrLWltYWdlIGZpZ2NhcHRpb257Y29sb3I6IzU1NTtmb250LXNpemU6MTNweDt0ZXh0LWFsaWduOmNlbnRlcn0uaXMtZGFyay10aGVtZSAud3AtYmxvY2staW1hZ2UgZmlnY2FwdGlvbntjb2xvcjpoc2xhKDAsMCUsMTAwJSwuNjUpfS53cC1ibG9jay1wdWxscXVvdGV7Ym9yZGVyLXRvcDo0cHggc29saWQ7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQ7bWFyZ2luLWJvdHRvbToxLjc1ZW07Y29sb3I6Y3VycmVudENvbG9yfS53cC1ibG9jay1wdWxscXVvdGVfX2NpdGF0aW9uLC53cC1ibG9jay1wdWxscXVvdGUgY2l0ZSwud3AtYmxvY2stcHVsbHF1b3RlIGZvb3Rlcntjb2xvcjpjdXJyZW50Q29sb3I7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtc2l6ZTouODEyNWVtO2ZvbnQtc3R5bGU6bm9ybWFsfS53cC1ibG9jay1xdW90ZXtib3JkZXItbGVmdDouMjVlbSBzb2xpZDttYXJnaW46MCAwIDEuNzVlbTtwYWRkaW5nLWxlZnQ6MWVtfS53cC1ibG9jay1xdW90ZSBjaXRlLC53cC1ibG9jay1xdW90ZSBmb290ZXJ7Y29sb3I6Y3VycmVudENvbG9yO2ZvbnQtc2l6ZTouODEyNWVtO3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc3R5bGU6bm9ybWFsfS53cC1ibG9jay1xdW90ZS5oYXMtdGV4dC1hbGlnbi1yaWdodHtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDouMjVlbSBzb2xpZDtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjFlbX0ud3AtYmxvY2stcXVvdGUuaGFzLXRleHQtYWxpZ24tY2VudGVye2JvcmRlcjpub25lO3BhZGRpbmctbGVmdDowfS53cC1ibG9jay1xdW90ZS5pcy1sYXJnZSwud3AtYmxvY2stcXVvdGUuaXMtc3R5bGUtbGFyZ2UsLndwLWJsb2NrLXF1b3RlLmlzLXN0eWxlLXBsYWlue2JvcmRlcjpub25lfS53cC1ibG9jay1zZWFyY2ggLndwLWJsb2NrLXNlYXJjaF9fbGFiZWx7Zm9udC13ZWlnaHQ6NzAwfS53cC1ibG9jay1ncm91cDp3aGVyZSguaGFzLWJhY2tncm91bmQpe3BhZGRpbmc6MS4yNWVtIDIuMzc1ZW19LndwLWJsb2NrLXNlcGFyYXRvcntib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOjJweCBzb2xpZDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO29wYWNpdHk6LjR9LndwLWJsb2NrLXNlcGFyYXRvcjpub3QoLmlzLXN0eWxlLXdpZGUpOm5vdCguaXMtc3R5bGUtZG90cyl7d2lkdGg6MTAwcHh9LndwLWJsb2NrLXNlcGFyYXRvci5oYXMtYmFja2dyb3VuZDpub3QoLmlzLXN0eWxlLWRvdHMpe2JvcmRlci1ib3R0b206bm9uZTtoZWlnaHQ6MXB4fS53cC1ibG9jay1zZXBhcmF0b3IuaGFzLWJhY2tncm91bmQ6bm90KC5pcy1zdHlsZS13aWRlKTpub3QoLmlzLXN0eWxlLWRvdHMpe2hlaWdodDoycHh9LndwLWJsb2NrLXRhYmxlIHRoZWFke2JvcmRlci1ib3R0b206M3B4IHNvbGlkfS53cC1ibG9jay10YWJsZSB0Zm9vdHtib3JkZXItdG9wOjNweCBzb2xpZH0ud3AtYmxvY2stdGFibGUgdGQsLndwLWJsb2NrLXRhYmxlIHRoe3BhZGRpbmc6LjVlbTtib3JkZXI6MXB4IHNvbGlkO3dvcmQtYnJlYWs6bm9ybWFsfS53cC1ibG9jay10YWJsZSBmaWdjYXB0aW9ue2NvbG9yOiM1NTU7Zm9udC1zaXplOjEzcHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmlzLWRhcmstdGhlbWUgLndwLWJsb2NrLXRhYmxlIGZpZ2NhcHRpb257Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjY1KX0ud3AtYmxvY2stdmlkZW8gZmlnY2FwdGlvbntjb2xvcjojNTU1O2ZvbnQtc2l6ZToxM3B4O3RleHQtYWxpZ246Y2VudGVyfS5pcy1kYXJrLXRoZW1lIC53cC1ibG9jay12aWRlbyBmaWdjYXB0aW9ue2NvbG9yOmhzbGEoMCwwJSwxMDAlLC42NSl9LndwLWJsb2NrLXRlbXBsYXRlLXBhcnQuaGFzLWJhY2tncm91bmR7cGFkZGluZzoxLjI1ZW0gMi4zNzVlbTttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfQo8L3N0eWxlPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdtZWRpYWVsZW1lbnQtY3NzJyAgaHJlZj0naHR0cHM6Ly9jMC53cC5jb20vYy81LjkuMy93cC1pbmNsdWRlcy9qcy9tZWRpYWVsZW1lbnQvbWVkaWFlbGVtZW50cGxheWVyLWxlZ2FjeS5taW4uY3NzJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nd3AtbWVkaWFlbGVtZW50LWNzcycgIGhyZWY9J2h0dHBzOi8vYzAud3AuY29tL2MvNS45LjMvd3AtaW5jbHVkZXMvanMvbWVkaWFlbGVtZW50L3dwLW1lZGlhZWxlbWVudC5taW4uY3NzJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPHN0eWxlIGlkPSdnbG9iYWwtc3R5bGVzLWlubGluZS1jc3MnIHR5cGU9J3RleHQvY3NzJz4KYm9keXstLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjazogIzAwMDAwMDstLXdwLS1wcmVzZXQtLWNvbG9yLS1jeWFuLWJsdWlzaC1ncmF5OiAjYWJiOGMzOy0td3AtLXByZXNldC0tY29sb3ItLXdoaXRlOiAjZmZmZmZmOy0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtcGluazogI2Y3OGRhNzstLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1yZWQ6ICNjZjJlMmU7LS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtb3JhbmdlOiAjZmY2OTAwOy0td3AtLXByZXNldC0tY29sb3ItLWx1bWlub3VzLXZpdmlkLWFtYmVyOiAjZmNiOTAwOy0td3AtLXByZXNldC0tY29sb3ItLWxpZ2h0LWdyZWVuLWN5YW46ICM3YmRjYjU7LS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtZ3JlZW4tY3lhbjogIzAwZDA4NDstLXdwLS1wcmVzZXQtLWNvbG9yLS1wYWxlLWN5YW4tYmx1ZTogIzhlZDFmYzstLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1jeWFuLWJsdWU6ICMwNjkzZTM7LS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtcHVycGxlOiAjOWI1MWUwOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLXZpdmlkLWN5YW4tYmx1ZS10by12aXZpZC1wdXJwbGU6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiYSg2LDE0NywyMjcsMSkgMCUscmdiKDE1NSw4MSwyMjQpIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWxpZ2h0LWdyZWVuLWN5YW4tdG8tdml2aWQtZ3JlZW4tY3lhbjogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMTIyLDIyMCwxODApIDAlLHJnYigwLDIwOCwxMzApIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWx1bWlub3VzLXZpdmlkLWFtYmVyLXRvLWx1bWlub3VzLXZpdmlkLW9yYW5nZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2JhKDI1MiwxODUsMCwxKSAwJSxyZ2JhKDI1NSwxMDUsMCwxKSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1sdW1pbm91cy12aXZpZC1vcmFuZ2UtdG8tdml2aWQtcmVkOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYmEoMjU1LDEwNSwwLDEpIDAlLHJnYigyMDcsNDYsNDYpIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLXZlcnktbGlnaHQtZ3JheS10by1jeWFuLWJsdWlzaC1ncmF5OiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYigyMzgsMjM4LDIzOCkgMCUscmdiKDE2OSwxODQsMTk1KSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1jb29sLXRvLXdhcm0tc3BlY3RydW06IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiKDc0LDIzNCwyMjApIDAlLHJnYigxNTEsMTIwLDIwOSkgMjAlLHJnYigyMDcsNDIsMTg2KSA0MCUscmdiKDIzOCw0NCwxMzApIDYwJSxyZ2IoMjUxLDEwNSw5OCkgODAlLHJnYigyNTQsMjQ4LDc2KSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1ibHVzaC1saWdodC1wdXJwbGU6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiKDI1NSwyMDYsMjM2KSAwJSxyZ2IoMTUyLDE1MCwyNDApIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWJsdXNoLWJvcmRlYXV4OiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYigyNTQsMjA1LDE2NSkgMCUscmdiKDI1NCw0NSw0NSkgNTAlLHJnYigxMDcsMCw2MikgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbHVtaW5vdXMtZHVzazogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMjU1LDIwMywxMTIpIDAlLHJnYigxOTksODEsMTkyKSA1MCUscmdiKDY1LDg4LDIwOCkgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tcGFsZS1vY2VhbjogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMjU1LDI0NSwyMDMpIDAlLHJnYigxODIsMjI3LDIxMikgNTAlLHJnYig1MSwxNjcsMTgxKSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1lbGVjdHJpYy1ncmFzczogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMjAyLDI0OCwxMjgpIDAlLHJnYigxMTMsMjA2LDEyNikgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbWlkbmlnaHQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiKDIsMywxMjkpIDAlLHJnYig0MCwxMTYsMjUyKSAxMDAlKTstLXdwLS1wcmVzZXQtLWR1b3RvbmUtLWRhcmstZ3JheXNjYWxlOiB1cmwoJyN3cC1kdW90b25lLWRhcmstZ3JheXNjYWxlJyk7LS13cC0tcHJlc2V0LS1kdW90b25lLS1ncmF5c2NhbGU6IHVybCgnI3dwLWR1b3RvbmUtZ3JheXNjYWxlJyk7LS13cC0tcHJlc2V0LS1kdW90b25lLS1wdXJwbGUteWVsbG93OiB1cmwoJyN3cC1kdW90b25lLXB1cnBsZS15ZWxsb3cnKTstLXdwLS1wcmVzZXQtLWR1b3RvbmUtLWJsdWUtcmVkOiB1cmwoJyN3cC1kdW90b25lLWJsdWUtcmVkJyk7LS13cC0tcHJlc2V0LS1kdW90b25lLS1taWRuaWdodDogdXJsKCcjd3AtZHVvdG9uZS1taWRuaWdodCcpOy0td3AtLXByZXNldC0tZHVvdG9uZS0tbWFnZW50YS15ZWxsb3c6IHVybCgnI3dwLWR1b3RvbmUtbWFnZW50YS15ZWxsb3cnKTstLXdwLS1wcmVzZXQtLWR1b3RvbmUtLXB1cnBsZS1ncmVlbjogdXJsKCcjd3AtZHVvdG9uZS1wdXJwbGUtZ3JlZW4nKTstLXdwLS1wcmVzZXQtLWR1b3RvbmUtLWJsdWUtb3JhbmdlOiB1cmwoJyN3cC1kdW90b25lLWJsdWUtb3JhbmdlJyk7LS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsOiAxM3B4Oy0td3AtLXByZXNldC0tZm9udC1zaXplLS1tZWRpdW06IDIwcHg7LS13cC0tcHJlc2V0LS1mb250LXNpemUtLWxhcmdlOiAzNnB4Oy0td3AtLXByZXNldC0tZm9udC1zaXplLS14LWxhcmdlOiA0MnB4O30uaGFzLWJsYWNrLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spICFpbXBvcnRhbnQ7fS5oYXMtY3lhbi1ibHVpc2gtZ3JheS1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWN5YW4tYmx1aXNoLWdyYXkpICFpbXBvcnRhbnQ7fS5oYXMtd2hpdGUtY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS13aGl0ZSkgIWltcG9ydGFudDt9Lmhhcy1wYWxlLXBpbmstY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wYWxlLXBpbmspICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtcmVkLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtcmVkKSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLXZpdmlkLW9yYW5nZS1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWx1bWlub3VzLXZpdmlkLW9yYW5nZSkgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy12aXZpZC1hbWJlci1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWx1bWlub3VzLXZpdmlkLWFtYmVyKSAhaW1wb3J0YW50O30uaGFzLWxpZ2h0LWdyZWVuLWN5YW4tY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1saWdodC1ncmVlbi1jeWFuKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLWdyZWVuLWN5YW4tY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1ncmVlbi1jeWFuKSAhaW1wb3J0YW50O30uaGFzLXBhbGUtY3lhbi1ibHVlLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcGFsZS1jeWFuLWJsdWUpICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtY3lhbi1ibHVlLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtY3lhbi1ibHVlKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLXB1cnBsZS1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLXB1cnBsZSkgIWltcG9ydGFudDt9Lmhhcy1ibGFjay1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjaykgIWltcG9ydGFudDt9Lmhhcy1jeWFuLWJsdWlzaC1ncmF5LWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWN5YW4tYmx1aXNoLWdyYXkpICFpbXBvcnRhbnQ7fS5oYXMtd2hpdGUtYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0td2hpdGUpICFpbXBvcnRhbnQ7fS5oYXMtcGFsZS1waW5rLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtcGluaykgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1yZWQtYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtcmVkKSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLXZpdmlkLW9yYW5nZS1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1sdW1pbm91cy12aXZpZC1vcmFuZ2UpICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtdml2aWQtYW1iZXItYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtYW1iZXIpICFpbXBvcnRhbnQ7fS5oYXMtbGlnaHQtZ3JlZW4tY3lhbi1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1saWdodC1ncmVlbi1jeWFuKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLWdyZWVuLWN5YW4tYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtZ3JlZW4tY3lhbikgIWltcG9ydGFudDt9Lmhhcy1wYWxlLWN5YW4tYmx1ZS1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wYWxlLWN5YW4tYmx1ZSkgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1jeWFuLWJsdWUtYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtY3lhbi1ibHVlKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLXB1cnBsZS1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1wdXJwbGUpICFpbXBvcnRhbnQ7fS5oYXMtYmxhY2stYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrKSAhaW1wb3J0YW50O30uaGFzLWN5YW4tYmx1aXNoLWdyYXktYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWN5YW4tYmx1aXNoLWdyYXkpICFpbXBvcnRhbnQ7fS5oYXMtd2hpdGUtYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXdoaXRlKSAhaW1wb3J0YW50O30uaGFzLXBhbGUtcGluay1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcGFsZS1waW5rKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLXJlZC1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtcmVkKSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLXZpdmlkLW9yYW5nZS1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtb3JhbmdlKSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLXZpdmlkLWFtYmVyLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1sdW1pbm91cy12aXZpZC1hbWJlcikgIWltcG9ydGFudDt9Lmhhcy1saWdodC1ncmVlbi1jeWFuLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1saWdodC1ncmVlbi1jeWFuKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLWdyZWVuLWN5YW4tYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLWdyZWVuLWN5YW4pICFpbXBvcnRhbnQ7fS5oYXMtcGFsZS1jeWFuLWJsdWUtYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtY3lhbi1ibHVlKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLWN5YW4tYmx1ZS1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtY3lhbi1ibHVlKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLXB1cnBsZS1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtcHVycGxlKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLWN5YW4tYmx1ZS10by12aXZpZC1wdXJwbGUtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tdml2aWQtY3lhbi1ibHVlLXRvLXZpdmlkLXB1cnBsZSkgIWltcG9ydGFudDt9Lmhhcy1saWdodC1ncmVlbi1jeWFuLXRvLXZpdmlkLWdyZWVuLWN5YW4tZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbGlnaHQtZ3JlZW4tY3lhbi10by12aXZpZC1ncmVlbi1jeWFuKSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLXZpdmlkLWFtYmVyLXRvLWx1bWlub3VzLXZpdmlkLW9yYW5nZS1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1sdW1pbm91cy12aXZpZC1hbWJlci10by1sdW1pbm91cy12aXZpZC1vcmFuZ2UpICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtdml2aWQtb3JhbmdlLXRvLXZpdmlkLXJlZC1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1sdW1pbm91cy12aXZpZC1vcmFuZ2UtdG8tdml2aWQtcmVkKSAhaW1wb3J0YW50O30uaGFzLXZlcnktbGlnaHQtZ3JheS10by1jeWFuLWJsdWlzaC1ncmF5LWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLXZlcnktbGlnaHQtZ3JheS10by1jeWFuLWJsdWlzaC1ncmF5KSAhaW1wb3J0YW50O30uaGFzLWNvb2wtdG8td2FybS1zcGVjdHJ1bS1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1jb29sLXRvLXdhcm0tc3BlY3RydW0pICFpbXBvcnRhbnQ7fS5oYXMtYmx1c2gtbGlnaHQtcHVycGxlLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLWJsdXNoLWxpZ2h0LXB1cnBsZSkgIWltcG9ydGFudDt9Lmhhcy1ibHVzaC1ib3JkZWF1eC1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1ibHVzaC1ib3JkZWF1eCkgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy1kdXNrLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLWx1bWlub3VzLWR1c2spICFpbXBvcnRhbnQ7fS5oYXMtcGFsZS1vY2Vhbi1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1wYWxlLW9jZWFuKSAhaW1wb3J0YW50O30uaGFzLWVsZWN0cmljLWdyYXNzLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLWVsZWN0cmljLWdyYXNzKSAhaW1wb3J0YW50O30uaGFzLW1pZG5pZ2h0LWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLW1pZG5pZ2h0KSAhaW1wb3J0YW50O30uaGFzLXNtYWxsLWZvbnQtc2l6ZXtmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpICFpbXBvcnRhbnQ7fS5oYXMtbWVkaXVtLWZvbnQtc2l6ZXtmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtKSAhaW1wb3J0YW50O30uaGFzLWxhcmdlLWZvbnQtc2l6ZXtmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbGFyZ2UpICFpbXBvcnRhbnQ7fS5oYXMteC1sYXJnZS1mb250LXNpemV7Zm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXgtbGFyZ2UpICFpbXBvcnRhbnQ7fQo8L3N0eWxlPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdjb250YWN0LWZvcm0tNy1jc3MnICBocmVmPSd3cC1jb250ZW50L3BsdWdpbnMvY29udGFjdC1mb3JtLTcvaW5jbHVkZXMvY3NzL3N0eWxlcy5jc3M/dmVyPTUuNS42JyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0ncnMtcGx1Z2luLXNldHRpbmdzLWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvcGx1Z2lucy9yZXZzbGlkZXIvcHVibGljL2Fzc2V0cy9jc3MvcnM2LmNzcz92ZXI9Ni40LjExJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPHN0eWxlIGlkPSdycy1wbHVnaW4tc2V0dGluZ3MtaW5saW5lLWNzcycgdHlwZT0ndGV4dC9jc3MnPgojcnMtZGVtby1pZCB7fQo8L3N0eWxlPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdib2RoaS1zdmdzLWF0dGFjaG1lbnQtY3NzJyAgaHJlZj0nd3AtY29udGVudC9wbHVnaW5zL3N2Zy1zdXBwb3J0L2Nzcy9zdmdzLWF0dGFjaG1lbnQuY3NzP3Zlcj01LjkuMycgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J21hZ25pZmljLWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvcGx1Z2lucy93cC1yZWFsZXN0YXRlL2Fzc2V0cy9qcy9tYWduaWZpYy9tYWduaWZpYy1wb3B1cC5jc3M/dmVyPTEuMS4wJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0ncGVyZmVjdC1zY3JvbGxiYXItanF1ZXJ5LWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvcGx1Z2lucy93cC1wcml2YXRlLW1lc3NhZ2UvYXNzZXRzL2Nzcy9wZXJmZWN0LXNjcm9sbGJhci5jc3M/dmVyPTUuOS4zJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nbGVhZmxldC1jc3MnICBocmVmPSd3cC1jb250ZW50L3BsdWdpbnMvd3AtcmVhbGVzdGF0ZS9hc3NldHMvanMvbGVhZmxldC9sZWFmbGV0LmNzcz92ZXI9MS41LjEnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdlbGVtZW50b3ItaWNvbnMtY3NzJyAgaHJlZj0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvbGliL2VpY29ucy9jc3MvZWxlbWVudG9yLWljb25zLm1pbi5jc3M/dmVyPTUuMTUuMCcgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2VsZW1lbnRvci1mcm9udGVuZC1sZWdhY3ktY3NzJyAgaHJlZj0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvY3NzL2Zyb250ZW5kLWxlZ2FjeS5taW4uY3NzP3Zlcj0zLjYuMicgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2VsZW1lbnRvci1mcm9udGVuZC1jc3MnICBocmVmPSd3cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9jc3MvZnJvbnRlbmQubWluLmNzcz92ZXI9My42LjInIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8c3R5bGUgaWQ9J2VsZW1lbnRvci1mcm9udGVuZC1pbmxpbmUtY3NzJyB0eXBlPSd0ZXh0L2Nzcyc+Ci5lbGVtZW50b3Ita2l0LTZ7LS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5OiM2RUMxRTQ7LS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnk6IzU0NTk1RjstLWUtZ2xvYmFsLWNvbG9yLXRleHQ6IzdBN0E3QTstLWUtZ2xvYmFsLWNvbG9yLWFjY2VudDojNjFDRTcwOy0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5OiJSb2JvdG8iOy0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0OjYwMDstLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5OiJSb2JvdG8gU2xhYiI7LS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodDo0MDA7LS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHk6IlJvYm90byI7LS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQ6NDAwOy0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1mYW1pbHk6IlJvYm90byI7LS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXdlaWdodDo1MDA7LS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM4MmQ5OGUtZm9udC1mYW1pbHk6Ikx1eGlhIjt9LmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zZWN0aW9uLWJveGVkID4gLmVsZW1lbnRvci1jb250YWluZXJ7bWF4LXdpZHRoOjExNDBweDt9LmUtY29udGFpbmVyey0tY29udGFpbmVyLW1heC13aWR0aDoxMTQwcHg7fS5lbGVtZW50b3Itd2lkZ2V0Om5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLWJvdHRvbToyMHB4O30uZWxlbWVudG9yLWVsZW1lbnR7LS13aWRnZXRzLXNwYWNpbmc6MjBweDt9e31oMS5lbnRyeS10aXRsZXtkaXNwbGF5OnZhcigtLXBhZ2UtdGl0bGUtZGlzcGxheSk7fS5lbGVtZW50b3Ita2l0LTYgZS1wYWdlLXRyYW5zaXRpb257YmFja2dyb3VuZC1jb2xvcjojRkZCQzdEO31AbWVkaWEobWF4LXdpZHRoOjEwMjRweCl7LmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zZWN0aW9uLWJveGVkID4gLmVsZW1lbnRvci1jb250YWluZXJ7bWF4LXdpZHRoOjEwMjRweDt9LmUtY29udGFpbmVyey0tY29udGFpbmVyLW1heC13aWR0aDoxMDI0cHg7fX1AbWVkaWEobWF4LXdpZHRoOjc2N3B4KXsuZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQgPiAuZWxlbWVudG9yLWNvbnRhaW5lcnttYXgtd2lkdGg6NzY3cHg7fS5lLWNvbnRhaW5lcnstLWNvbnRhaW5lci1tYXgtd2lkdGg6NzY3cHg7fX0vKiBTdGFydCBDdXN0b20gRm9udHMgQ1NTICovQGZvbnQtZmFjZSB7Cglmb250LWZhbWlseTogJ0x1eGlhJzsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cglmb250LWRpc3BsYXk6IGF1dG87CglzcmM6IHVybCgnd3AtY29udGVudC91cGxvYWRzLzIwMjEvMDgvTHV4aWFSZWd1bGFyLndvZmYnKSBmb3JtYXQoJ3dvZmYnKTsKfQovKiBFbmQgQ3VzdG9tIEZvbnRzIENTUyAqLwouZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNWNmYWVlOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwgLmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDVjZmFlZSA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7YmFja2dyb3VuZC1pbWFnZTp1cmwoIndwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAyL0RKSV8wMTM4LU9wdGltaXNlZC5qcGciKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjBweCAtMjIzcHg7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb3Zlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDVjZmFlZSA+IC5lbGVtZW50b3ItYmFja2dyb3VuZC1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDg3O29wYWNpdHk6MC43O3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIG9wYWNpdHkgMC4zczt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDVjZmFlZXt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4zcywgYm9yZGVyIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgYm94LXNoYWRvdyAwLjNzO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYTE2OTgxID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgPiAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWF1dG8pOm5vdCguZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtaW5pdGlhbCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmVsZW1lbnRvci1hYnNvbHV0ZSl7bWFyZ2luLWJvdHRvbTowcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThhMGUzOGQgLmVsZW1lbnRvci1zcGFjZXItaW5uZXJ7LS1zcGFjZXItc2l6ZToyNTBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNWU4Zjk2NHt0ZXh0LWFsaWduOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNWU4Zjk2NCAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Y29sb3I6I0ZGRkZGRjtmb250LWZhbWlseToiTHV4aWEiLCBTYW5zLXNlcmlmO2ZvbnQtc2l6ZTo1NXB4O2ZvbnQtd2VpZ2h0OjQwMDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWE0ZWE0ZSAuZWxlbWVudG9yLXNwYWNlci1pbm5lcnstLXNwYWNlci1zaXplOjE1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFhYzY2ZTR7dGV4dC1hbGlnbjpjZW50ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFhYzY2ZTQgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2NvbG9yOiNGRkZGRkY7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWEzOGY2NyAuZWxlbWVudG9yLXNwYWNlci1pbm5lcnstLXNwYWNlci1zaXplOjcwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM4NTBmZjcgLm5hdi10YWJzID4gbGkuYWN0aXZlID4gYXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkI2MEI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM4NTBmZjcgLm5hdi10YWJzID4gbGkuYWN0aXZlID4gYTpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNGRkI2MEIgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM4NTBmZjcgLm5hdi10YWJze3RleHQtYWxpZ246Y2VudGVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jODUwZmY3IC5idG4tc3VibWl0e2NvbG9yOiNGRkZGRkY7YmFja2dyb3VuZC1jb2xvcjojMDAzMDQ5O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAycHggMnB4O2JvcmRlci1jb2xvcjojM0U0QzY2O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jODUwZmY3IC5idG4tc3VibWl0OmhvdmVyLCAuZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jODUwZmY3IC5idG4tc3VibWl0OmZvY3Vze2NvbG9yOiNGRkZGRkY7YmFja2dyb3VuZC1jb2xvcjojRkY1QTVGO2JvcmRlci1jb2xvcjojRkY1QTVGO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jODUwZmY3IC5mb3JtLXNlYXJjaHtjb2xvcjojMDA2QzcwO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jODUwZmY3IC5hZHZhbmNlLXNlYXJjaC1idG57Y29sb3I6IzAwNkM3MDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzg1MGZmNyAuY2lyY2xlLWNoZWNre2NvbG9yOiMwMDZDNzA7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM4NTBmZjcgLmZvcm0tY29udHJvbHtjb2xvcjojMDA2QzcwO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jODUwZmY3IC5mb3JtLWNvbnRyb2w6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6IzAwNkM3MDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzg1MGZmNyAuZm9ybS1jb250cm9sOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7Y29sb3I6IzAwNkM3MDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzg1MGZmNyAuZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlciB7Y29sb3I6IzAwNkM3MDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzg1MGZmNyAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVke2NvbG9yOiMwMDZDNzA7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM4NTBmZjcgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlcntjb2xvcjojMDA2QzcwO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04M2IyNjE3IC5lbGVtZW50b3Itc3BhY2VyLWlubmVyey0tc3BhY2VyLXNpemU6NzBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGZjYTFiZXtwYWRkaW5nOjBweCAwcHggMTBweCAwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEwNjBhZTMgPiAuZWxlbWVudG9yLWNvbHVtbi13cmFwID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtYXV0byk6bm90KC5lbGVtZW50b3Itd2lkZ2V0X193aWR0aC1pbml0aWFsKTpub3QoOmxhc3QtY2hpbGQpOm5vdCguZWxlbWVudG9yLWFic29sdXRlKXttYXJnaW4tYm90dG9tOjEycHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEwNjBhZTMgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHtwYWRkaW5nOjE1cHggMTVweCAwcHggMTVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjU0NmIwMyAuZWxlbWVudG9yLXNwYWNlci1pbm5lcnstLXNwYWNlci1zaXplOjMwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUwN2JiMjB7dGV4dC1hbGlnbjpjZW50ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUwN2JiMjAgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtZmFtaWx5OiJMdXhpYSIsIFNhbnMtc2VyaWY7Zm9udC1zaXplOjQwcHg7Zm9udC13ZWlnaHQ6NDAwO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zYTc3N2Yze3RleHQtYWxpZ246Y2VudGVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zYTc3N2YzIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtmb250LXNpemU6MTZweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZkYzNlNiA+IC5lbGVtZW50b3ItY29udGFpbmVye21heC13aWR0aDoxNDMwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVmZGMzZTZ7cGFkZGluZzowcHggMHB4IDE1cHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOTdjN2Fie3BhZGRpbmc6MHB4IDBweCAxMHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTU4MTc3NiA+IC5lbGVtZW50b3ItY29sdW1uLXdyYXAgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwID4gLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvKTpub3QoLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWluaXRpYWwpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5lbGVtZW50b3ItYWJzb2x1dGUpe21hcmdpbi1ib3R0b206MTJweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTU4MTc3NiA+IC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwe3BhZGRpbmc6MTVweCAxNXB4IDBweCAxNXB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01MjM5OTlie3RleHQtYWxpZ246Y2VudGVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01MjM5OTliIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtmb250LWZhbWlseToiTHV4aWEiLCBTYW5zLXNlcmlmO2ZvbnQtc2l6ZTo0MHB4O2ZvbnQtd2VpZ2h0OjQwMDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMmJkZDMwNXt0ZXh0LWFsaWduOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMmJkZDMwNSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1zaXplOjE2cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkMGIxM2EgPiAuZWxlbWVudG9yLWNvbnRhaW5lcnttYXgtd2lkdGg6MTQzMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04ZDBiMTNhe3BhZGRpbmc6MHB4IDBweCAxNXB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjQyMGJhZSAuZWxlbWVudG9yLWJ1dHRvbntmb250LWZhbWlseToiT3BlbiBTYW5zIiwgU2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDMwNDk7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWY0MjBiYWUgLmVsZW1lbnRvci1idXR0b246aG92ZXIsIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWY0MjBiYWUgLmVsZW1lbnRvci1idXR0b246Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojRkZCNjBCO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00M2JlNGE4e3BhZGRpbmc6MHB4IDBweCAxMHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTdjOWI0ZSA+IC5lbGVtZW50b3ItY29sdW1uLXdyYXAgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwID4gLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvKTpub3QoLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWluaXRpYWwpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5lbGVtZW50b3ItYWJzb2x1dGUpe21hcmdpbi1ib3R0b206MTJweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTdjOWI0ZSA+IC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwe3BhZGRpbmc6MTVweCAxNXB4IDBweCAxNXB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lOGIxMTlhe3RleHQtYWxpZ246Y2VudGVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lOGIxMTlhIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtmb250LWZhbWlseToiTHV4aWEiLCBTYW5zLXNlcmlmO2ZvbnQtc2l6ZTo0MHB4O2ZvbnQtd2VpZ2h0OjQwMDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTYzOThkYXt0ZXh0LWFsaWduOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTYzOThkYSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1zaXplOjE2cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFjZTJkM2IgPiAuZWxlbWVudG9yLWNvbnRhaW5lcnttYXgtd2lkdGg6MTQzMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xY2UyZDNie3BhZGRpbmc6MHB4IDBweCAxNXB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTM4OTFjNCAuZWxlbWVudG9yLWJ1dHRvbntmb250LWZhbWlseToiT3BlbiBTYW5zIiwgU2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDMwNDk7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkzODkxYzQgLmVsZW1lbnRvci1idXR0b246aG92ZXIsIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkzODkxYzQgLmVsZW1lbnRvci1idXR0b246Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojRkZCNjBCO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMWMxMDg2Om5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwgLmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDFjMTA4NiA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxYzEwODZ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlciAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIGJveC1zaGFkb3cgMC4zcztwYWRkaW5nOjQwcHggMHB4IDEwcHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMWMxMDg2ID4gLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXl7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgb3BhY2l0eSAwLjNzO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00ZjEzNmEzID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgPiAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWF1dG8pOm5vdCguZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtaW5pdGlhbCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmVsZW1lbnRvci1hYnNvbHV0ZSl7bWFyZ2luLWJvdHRvbToxMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iM2YxNDVke3RleHQtYWxpZ246Y2VudGVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iM2YxNDVkIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtmb250LWZhbWlseToiTHV4aWEiLCBTYW5zLXNlcmlmO2ZvbnQtc2l6ZTo0MHB4O2ZvbnQtd2VpZ2h0OjQwMDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODAyOTM2NHt0ZXh0LWFsaWduOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODAyOTM2NCAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDY1MTRmYTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTA2NTE0ZmEgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lciA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNjUxNGZhe3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXIgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBib3gtc2hhZG93IDAuM3M7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTA2NTE0ZmEgPiAuZWxlbWVudG9yLWJhY2tncm91bmQtb3ZlcmxheXt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBvcGFjaXR5IDAuM3M7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTcxMmY5YTAgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVte2JhY2tncm91bmQtaW1hZ2U6dXJsKCJ3cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMi9Ja295aS1UaHVtYm5haWwuanBnIik7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgY2VudGVyO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTA2YWE4ZWIgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVte2JhY2tncm91bmQtaW1hZ2U6dXJsKCJ3cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMi9CYW5hbmFfSXNsYW5kLTEucG5nIik7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgY2VudGVyO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBjYTRlOGUgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVte2JhY2tncm91bmQtaW1hZ2U6dXJsKCJ3cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMi9WSS1FZGVuLUhlaWdodC5qcGciKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbSBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb3Zlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjJiNmExNzpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIyYjZhMTcgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lciA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMmI2YTE3e3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXIgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBib3gtc2hhZG93IDAuM3M7cGFkZGluZzowcHggMHB4IDBweCAwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIyYjZhMTcgPiAuZWxlbWVudG9yLWJhY2tncm91bmQtb3ZlcmxheXt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBvcGFjaXR5IDAuM3M7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc1ODcxYjcgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVte2JhY2tncm91bmQtaW1hZ2U6dXJsKCJ3cC1jb250ZW50L3VwbG9hZHMvMjAyMS8wOS9Fa28tQXRsYW50aWMuanBnIik7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgY2VudGVyO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE2ODMwODcgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVte2JhY2tncm91bmQtaW1hZ2U6dXJsKCJ3cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMi9ESklfMDA3OC0yMC1QZXJjZW50LmpwZyIpO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvdmVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03MWE2OTk0IC5sb2NhdGlvbi1iYW5uZXItaW5uZXItaXRlbXtiYWNrZ3JvdW5kLWltYWdlOnVybCgid3AtY29udGVudC91cGxvYWRzLzIwMjEvMDkvTGVra2ktRm9yLVdlYi5qcGciKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb3Zlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTE0YzczZDpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUxNGM3M2QgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lciA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01MTRjNzNke3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXIgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBib3gtc2hhZG93IDAuM3M7cGFkZGluZzowcHggMHB4IDQ1cHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01MTRjNzNkID4gLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXl7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgb3BhY2l0eSAwLjNzO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02NzkyYWY3IC5sb2NhdGlvbi1iYW5uZXItaW5uZXItaXRlbXtiYWNrZ3JvdW5kLWltYWdlOnVybCgid3AtY29udGVudC91cGxvYWRzLzIwMjIvMDIvSWthdGUuanBnIik7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgcmlnaHQ7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb3Zlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDhjYWJhMyAubG9jYXRpb24tYmFubmVyLWlubmVyLWl0ZW17YmFja2dyb3VuZC1pbWFnZTp1cmwoIndwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAyL09zYXBhLmpwZyIpO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvdmVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05ZDc1ZDM2IC5sb2NhdGlvbi1iYW5uZXItaW5uZXItaXRlbXtiYWNrZ3JvdW5kLWltYWdlOnVybCgid3AtY29udGVudC91cGxvYWRzLzIwMjEvMTAvREpJXzAwNjctc2NhbGVkLmpwZyIpO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvdmVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00ZWNkNTBjOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwgLmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGVjZDUwYyA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWltYWdlOnVybCgid3AtY29udGVudC91cGxvYWRzLzIwMjEvMTAvREpJXzAwNzEtc2NhbGVkLmpwZyIpO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRlY2Q1MGMgPiAuZWxlbWVudG9yLWJhY2tncm91bmQtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiMxQTFBMUE7b3BhY2l0eTowLjM7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgb3BhY2l0eSAwLjNzO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00ZWNkNTBje3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXIgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBib3gtc2hhZG93IDAuM3M7cGFkZGluZzo2MHB4IDBweCA2MHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWJiYmU1OSA+IC5lbGVtZW50b3ItY29sdW1uLXdyYXAgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwID4gLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvKTpub3QoLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWluaXRpYWwpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5lbGVtZW50b3ItYWJzb2x1dGUpe21hcmdpbi1ib3R0b206MTVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWJiYmU1OTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCkgPiAuZWxlbWVudG9yLWNvbHVtbi13cmFwLCAuZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYmJiZTU5ID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFiYmJlNTkgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkLCAuZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYmJiZTU5ID4gLmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCA+IC5lbGVtZW50b3ItYmFja2dyb3VuZC1vdmVybGF5LCAuZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYmJiZTU5ID4gLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXNsaWRlc2hvd3tib3JkZXItcmFkaXVzOjVweCA1cHggNXB4IDVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWJiYmU1OSA+IC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWR7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlciAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIGJveC1zaGFkb3cgMC4zczttYXJnaW46MTVweCAxNXB4IDE1cHggMTVweDstLWUtY29sdW1uLW1hcmdpbi1yaWdodDoxNXB4Oy0tZS1jb2x1bW4tbWFyZ2luLWxlZnQ6MTVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWJiYmU1OSA+IC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgPiAuZWxlbWVudG9yLWJhY2tncm91bmQtb3ZlcmxheXt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBvcGFjaXR5IDAuM3M7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFiYmJlNTkgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHtwYWRkaW5nOjUwcHggNTBweCA1MHB4IDUwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZmNWVjOGEgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtZmFtaWx5OiJMdXhpYSIsIFNhbnMtc2VyaWY7Zm9udC1zaXplOjQwcHg7Zm9udC13ZWlnaHQ6NDAwO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYTkxYmIye3RleHQtYWxpZ246anVzdGlmeTt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDgxZTFiMyAuZWxlbWVudG9yLWJ1dHRvbntmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDA7ZmlsbDojRkZGRkZGO2NvbG9yOiNGRkZGRkY7YmFja2dyb3VuZC1jb2xvcjojMDAzMDQ5O2JvcmRlci1yYWRpdXM6NHB4IDRweCA0cHggNHB4O3BhZGRpbmc6MThweCA0NXB4IDE4cHggNDVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDgxZTFiMyAuZWxlbWVudG9yLWJ1dHRvbjpob3ZlciwgLmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDgxZTFiMyAuZWxlbWVudG9yLWJ1dHRvbjpmb2N1c3tjb2xvcjojRkZGRkZGO2JhY2tncm91bmQtY29sb3I6I0ZGQjYwQjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDgxZTFiMyAuZWxlbWVudG9yLWJ1dHRvbjpob3ZlciBzdmcsIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ4MWUxYjMgLmVsZW1lbnRvci1idXR0b246Zm9jdXMgc3Zne2ZpbGw6I0ZGRkZGRjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDgxZTFiMyA+IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcnttYXJnaW46MTBweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGUyNDg1Zjpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRlMjQ4NWYgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lciA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoIndwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEwL3JlcG9ydC1wYXJhbGxhYy5qcGciKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb3Zlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGUyNDg1Znt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4zcywgYm9yZGVyIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgYm94LXNoYWRvdyAwLjNzO3BhZGRpbmc6MGVtIDBlbSAwZW0gMGVtO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00ZTI0ODVmID4gLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXl7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgb3BhY2l0eSAwLjNzO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yYzVkZTI3IC5lbGVtZW50b3Itc3BhY2VyLWlubmVyey0tc3BhY2VyLXNpemU6NTBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOGQ3MzUxMntwYWRkaW5nOjUwcHggMHB4IDUwcHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYzFkMGJie3RleHQtYWxpZ246anVzdGlmeTt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGMxZDBiYiAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1mYW1pbHk6Ikx1eGlhIiwgU2Fucy1zZXJpZjtmb250LXNpemU6MzVweDtmb250LXdlaWdodDpub3JtYWw7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTMwMTFlOWV7dGV4dC1hbGlnbjpqdXN0aWZ5O2ZvbnQtZmFtaWx5OiJPcGVuIFNhbnMiLCBTYW5zLXNlcmlmO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZWZlZDJkIC5lbGVtZW50b3ItYnV0dG9ue2JhY2tncm91bmQtY29sb3I6IzAwMzA0OTt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGFlNWQ4YSAuZWxlbWVudG9yLXNwYWNlci1pbm5lcnstLXNwYWNlci1zaXplOjUwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJiNDAwYmN7cGFkZGluZzozMHB4IDBweCAzMHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmVhYjhjNXt0ZXh0LWFsaWduOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmVhYjhjNSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1mYW1pbHk6Ikx1eGlhIiwgU2Fucy1zZXJpZjtmb250LXNpemU6NDBweDtmb250LXdlaWdodDo0MDA7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZhOWFjYmV7dGV4dC1hbGlnbjpjZW50ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZhOWFjYmUgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTA2N2M0ODMgPiAuZWxlbWVudG9yLXNoYXBlLWJvdHRvbSBzdmd7d2lkdGg6Y2FsYygyNTMlICsgMS4zcHgpO2hlaWdodDoxMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNjdjNDgze3BhZGRpbmc6MzBweCAwcHggMzBweCAwcHg7fS5lbGVtZW50b3ItYmMtZmxleC13aWRnZXQgLmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGUzMWMzYy5lbGVtZW50b3ItY29sdW1uIC5lbGVtZW50b3ItY29sdW1uLXdyYXB7YWxpZ24taXRlbXM6Y2VudGVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00ZTMxYzNjLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWVsZW1lbnRbZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiJdID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwe2FsaWduLWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGUzMWMzYy5lbGVtZW50b3ItY29sdW1uID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXB7anVzdGlmeS1jb250ZW50OmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGYzYjE2MiAuZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXdyYXBwZXJ7Zm9udC1mYW1pbHk6Ikx1eGlhIiwgU2Fucy1zZXJpZjtmb250LXNpemU6NDBweDtmb250LXdlaWdodDo0MDA7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBmM2IxNjIgPiAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXJ7bWFyZ2luOjBweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGYzYjE2Mnt3aWR0aDphdXRvO21heC13aWR0aDphdXRvO2FsaWduLXNlbGY6Y2VudGVyO30uZWxlbWVudG9yLWJjLWZsZXgtd2lkZ2V0IC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY5M2QxYzIuZWxlbWVudG9yLWNvbHVtbiAuZWxlbWVudG9yLWNvbHVtbi13cmFwe2FsaWduLWl0ZW1zOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjkzZDFjMi5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1lbGVtZW50W2RhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iXSA+IC5lbGVtZW50b3ItY29sdW1uLXdyYXAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHthbGlnbi1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY5M2QxYzIuZWxlbWVudG9yLWNvbHVtbiA+IC5lbGVtZW50b3ItY29sdW1uLXdyYXAgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwe2p1c3RpZnktY29udGVudDpjZW50ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE0NzMwNGEgLmVsZW1lbnRvci1jb3VudGVyLW51bWJlci13cmFwcGVye2ZvbnQtZmFtaWx5OiJMdXhpYSIsIFNhbnMtc2VyaWY7Zm9udC1zaXplOjQwcHg7Zm9udC13ZWlnaHQ6NDAwO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hNDczMDRhe3dpZHRoOmF1dG87bWF4LXdpZHRoOmF1dG87fS5lbGVtZW50b3ItYmMtZmxleC13aWRnZXQgLmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDFlN2MxMC5lbGVtZW50b3ItY29sdW1uIC5lbGVtZW50b3ItY29sdW1uLXdyYXB7YWxpZ24taXRlbXM6Y2VudGVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMWU3YzEwLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWVsZW1lbnRbZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiJdID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwe2FsaWduLWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDFlN2MxMC5lbGVtZW50b3ItY29sdW1uID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXB7anVzdGlmeS1jb250ZW50OmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmQ2NjZjMCAuZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXdyYXBwZXJ7Zm9udC1mYW1pbHk6Ikx1eGlhIiwgU2Fucy1zZXJpZjtmb250LXNpemU6NDBweDtmb250LXdlaWdodDo0MDA7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZkNjY2YzB7d2lkdGg6YXV0bzttYXgtd2lkdGg6YXV0bzt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2I2YjZmMi5lbGVtZW50b3ItY29sdW1uID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXB7anVzdGlmeS1jb250ZW50OmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzc5MjJlYSAuZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXdyYXBwZXJ7Zm9udC1mYW1pbHk6Ikx1eGlhIiwgU2Fucy1zZXJpZjtmb250LXNpemU6NDBweDtmb250LXdlaWdodDo0MDA7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM3OTIyZWF7d2lkdGg6YXV0bzttYXgtd2lkdGg6YXV0bzt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMmRhMDVkOS5lbGVtZW50b3ItY29sdW1uID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXB7anVzdGlmeS1jb250ZW50OmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYWY1NzdhNiAuZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXdyYXBwZXJ7Zm9udC1mYW1pbHk6Ikx1eGlhIiwgU2Fucy1zZXJpZjtmb250LXNpemU6NDBweDtmb250LXdlaWdodDo0MDA7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFmNTc3YTZ7d2lkdGg6YXV0bzttYXgtd2lkdGg6YXV0bzt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmRhNjlhMzpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZkYTY5YTMgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lciA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02ZGE2OWEze2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4IDBweCAwcHggMHB4O2JvcmRlci1jb2xvcjojRjdGN0Y3O3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXIgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBib3gtc2hhZG93IDAuM3M7cGFkZGluZzowcHggMHB4IDEwcHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02ZGE2OWEzID4gLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXl7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgb3BhY2l0eSAwLjNzO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOGI2MzVkID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgPiAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWF1dG8pOm5vdCguZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtaW5pdGlhbCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmVsZW1lbnRvci1hYnNvbHV0ZSl7bWFyZ2luLWJvdHRvbToxMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lMDg1ZDIzIC5lbGVtZW50b3Itc3BhY2VyLWlubmVyey0tc3BhY2VyLXNpemU6MzBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmRiNjcxMXt0ZXh0LWFsaWduOmNlbnRlcjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmRiNjcxMSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1mYW1pbHk6Ikx1eGlhIiwgU2Fucy1zZXJpZjtmb250LXNpemU6NDBweDtmb250LXdlaWdodDo0MDA7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM3OWVmZmN7dGV4dC1hbGlnbjpjZW50ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM3OWVmZmMgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWUyZGMyNjM6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLCAuZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lMmRjMjYzID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXIgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVye2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRjt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTJkYzI2M3t0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4zcywgYm9yZGVyIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgYm94LXNoYWRvdyAwLjNzO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lMmRjMjYzID4gLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXl7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgb3BhY2l0eSAwLjNzO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wM2E1MjZhID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgPiAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWF1dG8pOm5vdCguZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtaW5pdGlhbCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmVsZW1lbnRvci1hYnNvbHV0ZSl7bWFyZ2luLWJvdHRvbTowcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE4MGRiZWUgLmVsZW1lbnRvci1zcGFjZXItaW5uZXJ7LS1zcGFjZXItc2l6ZToxNXB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04MTk2MzhlOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwgLmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODE5NjM4ZSA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTgxOTYzOGV7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlciAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIGJveC1zaGFkb3cgMC4zcztwYWRkaW5nOjBweCAwcHggMTBweCAwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTgxOTYzOGUgPiAuZWxlbWVudG9yLWJhY2tncm91bmQtb3ZlcmxheXt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBvcGFjaXR5IDAuM3M7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTk5NmE0YTkgPiAuZWxlbWVudG9yLWNvbHVtbi13cmFwID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtYXV0byk6bm90KC5lbGVtZW50b3Itd2lkZ2V0X193aWR0aC1pbml0aWFsKTpub3QoOmxhc3QtY2hpbGQpOm5vdCguZWxlbWVudG9yLWFic29sdXRlKXttYXJnaW4tYm90dG9tOjEycHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTlhOWZiNjl7dGV4dC1hbGlnbjpjZW50ZXI7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTlhOWZiNjkgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtZmFtaWx5OiJMdXhpYSIsIFNhbnMtc2VyaWY7Zm9udC1zaXplOjQwcHg7Zm9udC13ZWlnaHQ6NDAwO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01MDExODk0e3RleHQtYWxpZ246Y2VudGVyO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01MDExODk0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNXB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00MjdjMDIxOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwgLmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDI3YzAyMSA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQyN2MwMjF7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlciAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIGJveC1zaGFkb3cgMC4zcztwYWRkaW5nOjIwcHggMHB4IDQwcHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00MjdjMDIxID4gLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXl7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgb3BhY2l0eSAwLjNzO31AbWVkaWEobWF4LXdpZHRoOjEwMjRweCl7LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDVjZmFlZTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTA1Y2ZhZWUgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lciA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjowcHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04YTBlMzhkIC5lbGVtZW50b3Itc3BhY2VyLWlubmVyey0tc3BhY2VyLXNpemU6NTBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNWU4Zjk2NCAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1zaXplOjQ1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTlhNGVhNGUgLmVsZW1lbnRvci1zcGFjZXItaW5uZXJ7LS1zcGFjZXItc2l6ZToxMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lYTM4ZjY3IC5lbGVtZW50b3Itc3BhY2VyLWlubmVyey0tc3BhY2VyLXNpemU6MzBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODNiMjYxNyAuZWxlbWVudG9yLXNwYWNlci1pbm5lcnstLXNwYWNlci1zaXplOjMwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRmY2ExYmV7cGFkZGluZzowcHggMHB4IDIwcHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mNTQ2YjAzIC5lbGVtZW50b3Itc3BhY2VyLWlubmVyey0tc3BhY2VyLXNpemU6MTBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDk3YzdhYntwYWRkaW5nOjBweCAwcHggMjBweCAwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQzYmU0YTh7cGFkZGluZzowcHggMHB4IDIwcHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMWMxMDg2e3BhZGRpbmc6MHB4IDBweCAwcHggMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMmI2YTE3e3BhZGRpbmc6MHB4IDBweCAyMHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTE0YzczZHtwYWRkaW5nOjBweCAwcHggMjBweCAwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRlY2Q1MGN7cGFkZGluZzoyMHB4IDBweCAyMHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmRhNjlhM3twYWRkaW5nOjBweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTA4NWQyMyAuZWxlbWVudG9yLXNwYWNlci1pbm5lcnstLXNwYWNlci1zaXplOjEwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQyN2MwMjF7cGFkZGluZzowcHggMHB4IDIwcHggMHB4O319QG1lZGlhKG1heC13aWR0aDo3NjdweCl7LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDVjZmFlZTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTA1Y2ZhZWUgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lciA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoIndwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEwL2hvbWUtcGFnZS1iYW5uZXItRm9yLVdlYi5wbmciKTt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOGEwZTM4ZCAuZWxlbWVudG9yLXNwYWNlci1pbm5lcnstLXNwYWNlci1zaXplOjIwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTVlOGY5NjQgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtc2l6ZTozMHB4O2xpbmUtaGVpZ2h0OjM1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVhMzhmNjcgLmVsZW1lbnRvci1zcGFjZXItaW5uZXJ7LS1zcGFjZXItc2l6ZToyMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jODUwZmY3IC5uYXYtdGFic3t0ZXh0LWFsaWduOnJpZ2h0O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jODUwZmY3ID4gLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVye21hcmdpbjowcHggMHB4IDBweCAwcHg7cGFkZGluZzowcHggMHB4IDBweCAwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTgzYjI2MTcgLmVsZW1lbnRvci1zcGFjZXItaW5uZXJ7LS1zcGFjZXItc2l6ZToyMHB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01MDdiYjIwIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtmb250LXNpemU6MjVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTIzOTk5YiAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1zaXplOjI1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4YjExOWEgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtc2l6ZToyNXB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iM2YxNDVkIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtmb250LXNpemU6MjVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjhlMTAyNSA+IC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwe3BhZGRpbmc6MHB4IDE1cHggMHB4IDE1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU5NjNjOTUgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHtwYWRkaW5nOjBweCAxNXB4IDBweCAxNXB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOTFmN2EwID4gLmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXB7cGFkZGluZzowcHggMTVweCAxNXB4IDE1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThhYTM0M2QgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHtwYWRkaW5nOjBweCAxNXB4IDBweCAxNXB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mNjMyYjMxID4gLmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXB7cGFkZGluZzowcHggMTVweCAxNXB4IDE1cHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFiYmJlNTkgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHtwYWRkaW5nOjIwcHggMjBweCAyMHB4IDIwcHg7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZlYWI4YzUgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtc2l6ZToyNXB4O30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iZGI2NzExIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtmb250LXNpemU6MjVweDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWE5ZmI2OSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Zm9udC1zaXplOjI1cHg7fX1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXsuZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03MGFlMjYye3dpZHRoOjMzLjUwOCU7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI4ZTEwMjV7d2lkdGg6MzIuODI0JTt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDY0Mjc5Ynt3aWR0aDo1Ny41ODglO30uZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MGUyYWY5e3dpZHRoOjQyLjM2OCU7fX1AbWVkaWEobWF4LXdpZHRoOjEwMjRweCkgYW5kIChtaW4td2lkdGg6NzY4cHgpey5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFiYmJlNTl7d2lkdGg6ODAlO319QG1lZGlhKG1pbi13aWR0aDoxMDI1cHgpey5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTA1Y2ZhZWU6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLCAuZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNWNmYWVlID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXIgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVye2JhY2tncm91bmQtYXR0YWNobWVudDpzY3JvbGw7fS5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRlY2Q1MGM6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLCAuZWxlbWVudG9yLTIzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00ZWNkNTBjID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXIgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVye2JhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZDt9LmVsZW1lbnRvci0yMyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGUyNDg1Zjpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMjMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRlMjQ4NWYgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lciA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXJ7YmFja2dyb3VuZC1hdHRhY2htZW50OnNjcm9sbDt9fS8qIFN0YXJ0IEN1c3RvbSBGb250cyBDU1MgKi9AZm9udC1mYWNlIHsKCWZvbnQtZmFtaWx5OiAnTHV4aWEnOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCWZvbnQtZGlzcGxheTogYXV0bzsKCXNyYzogdXJsKCd3cC1jb250ZW50L3VwbG9hZHMvMjAyMS8wOC9MdXhpYVJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpOwp9Ci8qIEVuZCBDdXN0b20gRm9udHMgQ1NTICovCi5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFhMTZmNmQ5ID4gLmVsZW1lbnRvci1jb250YWluZXJ7bWluLWhlaWdodDoxMDB2aDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGQ5NzNlNjA6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCwgLmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGQ5NzNlNjAgPiAuZWxlbWVudG9yLWNvbHVtbi13cmFwID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXIgPiAuZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVye2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRjt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGQ5NzNlNjAgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVke3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXIgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBib3gtc2hhZG93IDAuM3M7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRkOTczZTYwID4gLmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCA+IC5lbGVtZW50b3ItYmFja2dyb3VuZC1vdmVybGF5e3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIG9wYWNpdHkgMC4zczt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGQ5NzNlNjAgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHtwYWRkaW5nOjMlIDMlIDMlIDMlO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lYTBhOGEzIGltZ3t3aWR0aDo1MCU7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTE3ZjA5ZjFjey0tZS1pbWFnZS1jYXJvdXNlbC1zbGlkZXMtdG8tc2hvdzoxO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xN2YwOWYxYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0e3dpZHRoOjVweDtoZWlnaHQ6NXB4O2JhY2tncm91bmQ6IzAxMTY0MDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMmY3MzA5e3RleHQtYWxpZ246Y2VudGVyO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZjczMDkgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2NvbG9yOiMwMDMwNDk7Zm9udC1mYW1pbHk6Ik1vbnRzZXJyYXQiLCBTYW5zLXNlcmlmO2ZvbnQtc2l6ZToyOHB4O2ZvbnQtd2VpZ2h0OjMwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGluZS1oZWlnaHQ6MS4yZW07fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJmNzMwOSA+IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcnttYXJnaW46LTVweCAwcHggMHB4IDBweDtwYWRkaW5nOjBweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDc4NmMyOHt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojODQ4NDg0O2ZvbnQtZmFtaWx5OiJNb250c2VycmF0IiwgU2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtmb250LXdlaWdodDoyMDA7bGluZS1oZWlnaHQ6MS44ZW07fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmVsZW1lbnRvci1maWVsZC1ncm91cHtwYWRkaW5nLXJpZ2h0OmNhbGMoIDIwcHgvMiApO3BhZGRpbmctbGVmdDpjYWxjKCAyMHB4LzIgKTttYXJnaW4tYm90dG9tOjEwcHg7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmVsZW1lbnRvci1mb3JtLWZpZWxkcy13cmFwcGVye21hcmdpbi1sZWZ0OmNhbGMoIC0yMHB4LzIgKTttYXJnaW4tcmlnaHQ6Y2FsYyggLTIwcHgvMiApO21hcmdpbi1ib3R0b206LTEwcHg7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmVsZW1lbnRvci1maWVsZC1ncm91cC5yZWNhcHRjaGFfdjMtYm90dG9tbGVmdCwgLmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwLnJlY2FwdGNoYV92My1ib3R0b21yaWdodHttYXJnaW4tYm90dG9tOjA7fWJvZHkucnRsIC5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmVsZW1lbnRvci1sYWJlbHMtaW5saW5lIC5lbGVtZW50b3ItZmllbGQtZ3JvdXAgPiBsYWJlbHtwYWRkaW5nLWxlZnQ6MHB4O31ib2R5Om5vdCgucnRsKSAuZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OWVmZDk1IC5lbGVtZW50b3ItbGFiZWxzLWlubGluZSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwID4gbGFiZWx7cGFkZGluZy1yaWdodDowcHg7fWJvZHkgLmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZWxlbWVudG9yLWxhYmVscy1hYm92ZSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwID4gbGFiZWx7cGFkZGluZy1ib3R0b206MHB4O30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OWVmZDk1IC5lbGVtZW50b3ItZmllbGQtdHlwZS1odG1se3BhZGRpbmctYm90dG9tOjBweDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3ItZmllbGR7Y29sb3I6cmdiYSgxLCAyMiwgNjQsIDAuNDcpO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OWVmZDk1IC5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZCwgLmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIGxhYmVse2ZvbnQtZmFtaWx5OiJNb250c2VycmF0IiwgU2Fucy1zZXJpZjtmb250LXNpemU6MTVweDt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OWVmZDk1IC5lbGVtZW50b3ItZmllbGQtZ3JvdXA6bm90KC5lbGVtZW50b3ItZmllbGQtdHlwZS11cGxvYWQpIC5lbGVtZW50b3ItZmllbGQ6bm90KC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXIpe2JvcmRlci1jb2xvcjpyZ2JhKDEsIDIyLCA2NCwgMC4yMSk7Ym9yZGVyLXdpZHRoOjFweCAxcHggMXB4IDFweDtib3JkZXItcmFkaXVzOjBweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXIgc2VsZWN0e2JvcmRlci1jb2xvcjpyZ2JhKDEsIDIyLCA2NCwgMC4yMSk7Ym9yZGVyLXdpZHRoOjFweCAxcHggMXB4IDFweDtib3JkZXItcmFkaXVzOjBweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXI6OmJlZm9yZXtjb2xvcjpyZ2JhKDEsIDIyLCA2NCwgMC4yMSk7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmVsZW1lbnRvci1idXR0b257Zm9udC1mYW1pbHk6Ik1vbnRzZXJyYXQiLCBTYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTtib3JkZXItcmFkaXVzOjBweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24tbmV4dHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDMwNDk7Y29sb3I6I0ZGRjdGMTt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZWxlbWVudG9yLWJ1dHRvblt0eXBlPSJzdWJtaXQiXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDMwNDk7Y29sb3I6I0ZGRjdGMTt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSAuZWxlbWVudG9yLWJ1dHRvblt0eXBlPSJzdWJtaXQiXSBzdmcgKntmaWxsOiNGRkY3RjE7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uLXByZXZpb3Vze2NvbG9yOiNmZmZmZmY7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uLW5leHQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZCNjBCO2NvbG9yOiMwMTE2NDA7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmVsZW1lbnRvci1idXR0b25bdHlwZT0ic3VibWl0Il06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZCNjBCO2NvbG9yOiMwMTE2NDA7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmVsZW1lbnRvci1idXR0b25bdHlwZT0ic3VibWl0Il06aG92ZXIgc3ZnICp7ZmlsbDojMDExNjQwO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OWVmZDk1IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbi1wcmV2aW91czpob3Zlcntjb2xvcjojZmZmZmZmO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OWVmZDk1IC5lbGVtZW50b3ItbWVzc2FnZXtmb250LWZhbWlseToiTW9udHNlcnJhdCIsIFNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6MzAwO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OWVmZDk1IC5lbGVtZW50b3ItbWVzc2FnZS5lbGVtZW50b3ItbWVzc2FnZS1zdWNjZXNze2NvbG9yOiMwMTE2NDA7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5ZWZkOTUgLmVsZW1lbnRvci1tZXNzYWdlLmVsZW1lbnRvci1tZXNzYWdlLWRhbmdlcntjb2xvcjojMDExNjQwO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OWVmZDk1IC5lbGVtZW50b3ItbWVzc2FnZS5lbGVtZW50b3ItaGVscC1pbmxpbmV7Y29sb3I6IzAxMTY0MDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NXstLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3JzLXNwYWNpbmc6MjBweDstLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3ItcGFkZGluZzozMHB4Oy0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1pbmFjdGl2ZS1zZWNvbmRhcnktY29sb3I6I2ZmZmZmZjstLWUtZm9ybS1zdGVwcy1pbmRpY2F0b3ItYWN0aXZlLXNlY29uZGFyeS1jb2xvcjojZmZmZmZmOy0tZS1mb3JtLXN0ZXBzLWluZGljYXRvci1jb21wbGV0ZWQtc2Vjb25kYXJ5LWNvbG9yOiNmZmZmZmY7LS1lLWZvcm0tc3RlcHMtZGl2aWRlci13aWR0aDoxcHg7LS1lLWZvcm0tc3RlcHMtZGl2aWRlci1nYXA6MTBweDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODllZmQ5NSA+IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcnttYXJnaW46MHB4IDBweCAwcHggMHB4O30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OTk2YWRkIC5lbGVtZW50b3Itc3BhY2VyLWlubmVyey0tc3BhY2VyLXNpemU6MTBweDt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNWRiMzNjMCAuZWxlbWVudG9yLWJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDMwNDk7fSNlbGVtZW50b3ItcG9wdXAtbW9kYWwtMTI3OTIgLmRpYWxvZy1tZXNzYWdle3dpZHRoOjY0MHB4O2hlaWdodDphdXRvO30jZWxlbWVudG9yLXBvcHVwLW1vZGFsLTEyNzkye2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BvaW50ZXItZXZlbnRzOmFsbDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjgpO30jZWxlbWVudG9yLXBvcHVwLW1vZGFsLTEyNzkyIC5kaWFsb2ctY2xvc2UtYnV0dG9ue2Rpc3BsYXk6ZmxleDt9I2VsZW1lbnRvci1wb3B1cC1tb2RhbC0xMjc5MiAuZGlhbG9nLXdpZGdldC1jb250ZW50e2JveC1zaGFkb3c6MnB4IDhweCAyM3B4IDNweCByZ2JhKDAsMCwwLDAuMik7fUBtZWRpYShtaW4td2lkdGg6NzY4cHgpey5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRkOTczZTYwe3dpZHRoOjEwMCU7fX1AbWVkaWEobWF4LXdpZHRoOjEwMjRweCl7LmVsZW1lbnRvci1iYy1mbGV4LXdpZGdldCAuZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00ZDk3M2U2MC5lbGVtZW50b3ItY29sdW1uIC5lbGVtZW50b3ItY29sdW1uLXdyYXB7YWxpZ24taXRlbXM6Y2VudGVyO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00ZDk3M2U2MC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1lbGVtZW50W2RhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iXSA+IC5lbGVtZW50b3ItY29sdW1uLXdyYXAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHthbGlnbi1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7fS5lbGVtZW50b3ItMTI3OTIgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJmNzMwOSA+IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcnttYXJnaW46MHB4IDBweCAwcHggMHB4O319QG1lZGlhKG1heC13aWR0aDo3NjdweCl7LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGQ5NzNlNjAgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHtwYWRkaW5nOjUlIDUlIDE1JSA1JTt9LmVsZW1lbnRvci0xMjc5MiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMmY3MzA5e3RleHQtYWxpZ246Y2VudGVyO30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZjczMDkgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2ZvbnQtc2l6ZToyNXB4O30uZWxlbWVudG9yLTEyNzkyIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00Nzg2YzI4e3RleHQtYWxpZ246Y2VudGVyO319Cjwvc3R5bGU+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2VsZW1lbnRvci1wcm8tY3NzJyAgaHJlZj0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci1wcm8vYXNzZXRzL2Nzcy9mcm9udGVuZC5taW4uY3NzP3Zlcj0zLjYuNCcgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2ZvbnQtYXdlc29tZS01LWFsbC1jc3MnICBocmVmPSd3cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9saWIvZm9udC1hd2Vzb21lL2Nzcy9hbGwubWluLmNzcz92ZXI9NS4wLjEwJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZm9udC1hd2Vzb21lLTQtc2hpbS1jc3MnICBocmVmPSd3cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9saWIvZm9udC1hd2Vzb21lL2Nzcy92NC1zaGltcy5taW4uY3NzP3Zlcj01LjAuMTAnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdob21lby10aGVtZS1mb250cy1jc3MnICBocmVmPSdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9TnVuaXRvOjMwMCw0MDAsNjAwLDcwMCw4MDAsOTAwJiMwMzg7c3Vic2V0PWxhdGluJTJDbGF0aW4tZXh0JyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nYWxsLWF3ZXNvbWUtY3NzJyAgaHJlZj0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vY3NzL2FsbC1hd2Vzb21lLmNzcz92ZXI9NS4xMS4yJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZmxhdGljb24tY3NzJyAgaHJlZj0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vY3NzL2ZsYXRpY29uLmNzcz92ZXI9MS4wLjAnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSd0aGVtaWZ5LWljb25zLWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvdGhlbWVzL2hvbWVvL2Nzcy90aGVtaWZ5LWljb25zLmNzcz92ZXI9MS4wLjAnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdhbmltYXRlLWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvdGhlbWVzL2hvbWVvL2Nzcy9hbmltYXRlLmNzcz92ZXI9My42LjAnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdib290c3RyYXAtY3NzJyAgaHJlZj0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vY3NzL2Jvb3RzdHJhcC5jc3M/dmVyPTMuMi4wJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nc2xpY2stY3NzJyAgaHJlZj0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vY3NzL3NsaWNrLmNzcz92ZXI9MS44LjAnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdtYWduaWZpYy1wb3B1cC1jc3MnICBocmVmPSd3cC1jb250ZW50L3RoZW1lcy9ob21lby9jc3MvbWFnbmlmaWMtcG9wdXAuY3NzP3Zlcj0xLjEuMCcgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J3BlcmZlY3Qtc2Nyb2xsYmFyLWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvdGhlbWVzL2hvbWVvL2Nzcy9wZXJmZWN0LXNjcm9sbGJhci5jc3M/dmVyPTAuNi4xMicgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2pxdWVyeS1tbWVudS1jc3MnICBocmVmPSd3cC1jb250ZW50L3RoZW1lcy9ob21lby9jc3MvanF1ZXJ5Lm1tZW51LmNzcz92ZXI9MC42LjEyJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0naG9tZW8tdGVtcGxhdGUtY3NzJyAgaHJlZj0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vY3NzL3RlbXBsYXRlLmNzcz92ZXI9MS4wJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPHN0eWxlIGlkPSdob21lby10ZW1wbGF0ZS1pbmxpbmUtY3NzJyB0eXBlPSd0ZXh0L2Nzcyc+Ci8qIHNldGluZyBiYWNrZ3JvdW5kIG1haW4gKi8jY29tcGFyZS1zaWRlYmFyIC5jb21wYXJlLXNpZGViYXItYnRuLCNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIC5tYXJrZXItY2x1c3Rlcjo6YmVmb3JlLC52YWx1YXRpb24taXRlbSAucHJvZ3Jlc3MtYmFyLC5tYXAtcG9wdXAgLmljb24td3JhcHBlcjo6YmVmb3JlLC5wcm9wZXJ0eS1ncmlkLXNsaWRlciAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdW2NsYXNzKj0iYWRkZWQiXSwgLnByb3BlcnR5LWdyaWQtc2xpZGVyIC5ib3R0b20tbGFiZWwgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJyZW1vdmUiXSwgLnByb3BlcnR5LWdyaWQtc2xpZGVyIC5ib3R0b20tbGFiZWwgW2NsYXNzKj0iYnRuIl06aG92ZXIsIC5wcm9wZXJ0eS1ncmlkLXNsaWRlciAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdOmZvY3VzLC5idXR0b25zLWdyb3VwLWNlbnRlciBbY2xhc3N8PSJidG4iXTpob3ZlciBpLCAuYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl06Zm9jdXMgaSwuYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl1bY2xhc3MqPSJhZGRlZCJdIGksIC5idXR0b25zLWdyb3VwLWNlbnRlciBbY2xhc3N8PSJidG4iXVtjbGFzcyo9InJlbW92ZSJdIGksIC5idXR0b25zLWdyb3VwLWNlbnRlciBbY2xhc3N8PSJidG4iXTpob3ZlciBpLCAuYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl06Zm9jdXMgaSwucHJvcGVydHktaXRlbSAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdOmhvdmVyLCAucHJvcGVydHktaXRlbSAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdOmZvY3VzLC5wcm9wZXJ0eS1pdGVtIC5ib3R0b20tbGFiZWwgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJhZGRlZCJdLCAucHJvcGVydHktaXRlbSAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdW2NsYXNzKj0icmVtb3ZlIl0sLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXTpob3ZlciwgLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXTpmb2N1cywudGFnY2xvdWQgYTpob3ZlciwgLnRhZ2Nsb3VkIGE6Zm9jdXMsIC50YWdjbG91ZCBhLmFjdGl2ZSwudGFicy12MSAubmF2LXRhYnMgPiBsaSA+IGE6OmJlZm9yZSwucG9zdC1uYXZpZ2F0aW9uIC5uYXYtbGlua3MgPiAqID4gYTpob3ZlciAubWV0YS1uYXYsLnBhZ2luYXRpb24gPiBzcGFuOmZvY3VzLCAucGFnaW5hdGlvbiA+IHNwYW46aG92ZXIsIC5wYWdpbmF0aW9uID4gYTpmb2N1cywgLnBhZ2luYXRpb24gPiBhOmhvdmVyLCAuYXB1cy1wYWdpbmF0aW9uID4gc3Bhbjpmb2N1cywgLmFwdXMtcGFnaW5hdGlvbiA+IHNwYW46aG92ZXIsIC5hcHVzLXBhZ2luYXRpb24gPiBhOmZvY3VzLCAuYXB1cy1wYWdpbmF0aW9uID4gYTpob3ZlciwuZW50cnktY29udGVudC1kZXRhaWwgLmNhdGVnb3JpZXMtbmFtZSwuZGV0YWlsLXBvc3QgLmVudHJ5LXRhZ3MtbGlzdCBhOmhvdmVyLCAuZGV0YWlsLXBvc3QgLmVudHJ5LXRhZ3MtbGlzdCBhOmZvY3VzLCAuZGV0YWlsLXBvc3QgLmVudHJ5LXRhZ3MtbGlzdCBhLmFjdGl2ZSwucGFnaW5hdGlvbiA+IHNwYW4uY3VycmVudCwgLnBhZ2luYXRpb24gPiBhLmN1cnJlbnQsIC5hcHVzLXBhZ2luYXRpb24gPiBzcGFuLmN1cnJlbnQsIC5hcHVzLXBhZ2luYXRpb24gPiBhLmN1cnJlbnQsLm1lbWJlci10aHVtYm5haWwtd3JhcHBlciAubmItcHJvcGVydHksLmJ0bi1yZWFkbW9yZTo6YmVmb3JlLC5wb3N0LWxheW91dCAudG9wLWltYWdlIC5jYXRlZ29yaWVzLW5hbWUsLm5hdi1tZW1iZXIgPiBsaSA+IGE6OmJlZm9yZSwubmF2LXRhYmxlID4gbGkgPiBhOmhvdmVyLCAubmF2LXRhYmxlID4gbGkgPiBhOmZvY3VzLC5uYXYtdGFibGUgPiBsaS5hY3RpdmUgPiBhOmhvdmVyLCAubmF2LXRhYmxlID4gbGkuYWN0aXZlID4gYTpmb2N1cywgLm5hdi10YWJsZSA+IGxpLmFjdGl2ZSA+IGEsLnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UsLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSAubmF2LXRhYnMgPiBsaS5hY3RpdmUgPiBhLC52aWRlby13cmFwcGVyLWlubmVyIC5wb3B1cC12aWRlbzo6YmVmb3JlLC52aWRlby13cmFwcGVyLWlubmVyIC5wb3B1cC12aWRlbywucGFnaW5hdGlvbiAubmV4dDpob3Zlcjo6YmVmb3JlLCAucGFnaW5hdGlvbiAubmV4dDpmb2N1czo6YmVmb3JlLCAucGFnaW5hdGlvbiAucHJldjpob3Zlcjo6YmVmb3JlLCAucGFnaW5hdGlvbiAucHJldjpmb2N1czo6YmVmb3JlLCAuYXB1cy1wYWdpbmF0aW9uIC5uZXh0OmhvdmVyOjpiZWZvcmUsIC5hcHVzLXBhZ2luYXRpb24gLm5leHQ6Zm9jdXM6OmJlZm9yZSwgLmFwdXMtcGFnaW5hdGlvbiAucHJldjpob3Zlcjo6YmVmb3JlLCAuYXB1cy1wYWdpbmF0aW9uIC5wcmV2OmZvY3VzOjpiZWZvcmUsLnBhZ2luYXRpb24gbGkgPiBzcGFuLmN1cnJlbnQsIC5wYWdpbmF0aW9uIGxpID4gYS5jdXJyZW50LCAuYXB1cy1wYWdpbmF0aW9uIGxpID4gc3Bhbi5jdXJyZW50LCAuYXB1cy1wYWdpbmF0aW9uIGxpID4gYS5jdXJyZW50LC5wYWdpbmF0aW9uIGxpID4gc3Bhbjpmb2N1cywgLnBhZ2luYXRpb24gbGkgPiBzcGFuOmhvdmVyLCAucGFnaW5hdGlvbiBsaSA+IGE6Zm9jdXMsIC5wYWdpbmF0aW9uIGxpID4gYTpob3ZlciwgLmFwdXMtcGFnaW5hdGlvbiBsaSA+IHNwYW46Zm9jdXMsIC5hcHVzLXBhZ2luYXRpb24gbGkgPiBzcGFuOmhvdmVyLCAuYXB1cy1wYWdpbmF0aW9uIGxpID4gYTpmb2N1cywgLmFwdXMtcGFnaW5hdGlvbiBsaSA+IGE6aG92ZXIsLmJnLXRoZW1lLCAucHJvcGVydHktaXRlbSAudG9wLWxhYmVsID4gKi5mZWF0dXJlZC1wcm9wZXJ0eSwgLmRldGFpbHMtcHJvZHVjdCAuYXB1cy1zb2NpYWwtc2hhcmUgYTpob3ZlciwgLmRldGFpbHMtcHJvZHVjdCAuYXB1cy1zb2NpYWwtc2hhcmUgYTphY3RpdmUsIC5zbGljay1jYXJvdXNlbCAuc2xpY2stYXJyb3c6aG92ZXIsIC5zbGljay1jYXJvdXNlbCAuc2xpY2stYXJyb3c6Zm9jdXMsIC5tb2JpbGUtc2lkZWJhci1idG4sIC5idG4tc2hvdy1maWx0ZXIsIC5idG4tc2hvdy1maWx0ZXIgaSwgLmJ0bi1zaG93LWZpbHRlcjpob3ZlciwgLmJ0bi1zaG93LWZpbHRlcjpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiAjMDAzMDQ5IDt9LnByb3BlcnR5LWFjdGlvbi1kZXRhaWwgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJhZGRlZCJdLCAucHJvcGVydHktYWN0aW9uLWRldGFpbCBbY2xhc3MqPSJidG4iXVtjbGFzcyo9InJlbW92ZSJdLC5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsIFtjbGFzcyo9ImJ0biJdOmhvdmVyLCAucHJvcGVydHktYWN0aW9uLWRldGFpbCBbY2xhc3MqPSJidG4iXTpmb2N1cywuYmctdGhlbWV7YmFja2dyb3VuZC1jb2xvcjogIzAwMzA0OSAhaW1wb3J0YW50O30vKiBzZXR0aW5nIGNvbG9yICovLmNvbXBhcmUtdGFibGVzIC50eXBlLXByb3BlcnR5IGEsI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMgLm1hcmtlci1jbHVzdGVyID4gZGl2LC5zdWJ3b28taW5uZXIgLnByaWNlLC5teS1wcm9wZXJ0aWVzLWl0ZW0gLnByb3BlcnR5LXByaWNlLC51c2VyLXRyYW5zYWN0aW9ucyAud29vY29tbWVyY2UtUHJpY2UtYW1vdW50LC50YWJzLXYxIC5uYXYtdGFicyA+IGxpLmFjdGl2ZSA+IGEsLnByb2R1Y3QtY2F0ZWdvcmllcyBsaS5jdXJyZW50LWNhdC1wYXJlbnQgPiBhLCAucHJvZHVjdC1jYXRlZ29yaWVzIGxpLmN1cnJlbnQtY2F0ID4gYSwgLnByb2R1Y3QtY2F0ZWdvcmllcyBsaTpob3ZlciA+IGEsLndvb2NvbW1lcmNlIHVsLnByb2R1Y3RfbGlzdF93aWRnZXQgLndvb2NvbW1lcmNlLVByaWNlLWFtb3VudCwud2lkZ2V0X3BhZ2VzIHVsIGxpOmhvdmVyID4gYSwgLndpZGdldF9wYWdlcyB1bCBsaS5jdXJyZW50LWNhdC1wYXJlbnQgPiBhLCAud2lkZ2V0X3BhZ2VzIHVsIGxpLmN1cnJlbnQtY2F0ID4gYSwgLndpZGdldF9uYXZfbWVudSB1bCBsaTpob3ZlciA+IGEsIC53aWRnZXRfbmF2X21lbnUgdWwgbGkuY3VycmVudC1jYXQtcGFyZW50ID4gYSwgLndpZGdldF9uYXZfbWVudSB1bCBsaS5jdXJyZW50LWNhdCA+IGEsIC53aWRnZXRfbWV0YSB1bCBsaTpob3ZlciA+IGEsIC53aWRnZXRfbWV0YSB1bCBsaS5jdXJyZW50LWNhdC1wYXJlbnQgPiBhLCAud2lkZ2V0X21ldGEgdWwgbGkuY3VycmVudC1jYXQgPiBhLCAud2lkZ2V0X2FyY2hpdmUgdWwgbGk6aG92ZXIgPiBhLCAud2lkZ2V0X2FyY2hpdmUgdWwgbGkuY3VycmVudC1jYXQtcGFyZW50ID4gYSwgLndpZGdldF9hcmNoaXZlIHVsIGxpLmN1cnJlbnQtY2F0ID4gYSwgLndpZGdldF9yZWNlbnRfZW50cmllcyB1bCBsaTpob3ZlciA+IGEsIC53aWRnZXRfcmVjZW50X2VudHJpZXMgdWwgbGkuY3VycmVudC1jYXQtcGFyZW50ID4gYSwgLndpZGdldF9yZWNlbnRfZW50cmllcyB1bCBsaS5jdXJyZW50LWNhdCA+IGEsIC53aWRnZXRfY2F0ZWdvcmllcyB1bCBsaTpob3ZlciA+IGEsIC53aWRnZXRfY2F0ZWdvcmllcyB1bCBsaS5jdXJyZW50LWNhdC1wYXJlbnQgPiBhLCAud2lkZ2V0X2NhdGVnb3JpZXMgdWwgbGkuY3VycmVudC1jYXQgPiBhLC53b29jb21tZXJjZSB0YWJsZS5zaG9wX3RhYmxlIHRkLnByb2R1Y3QtcHJpY2UsLndvb2NvbW1lcmNlIHRhYmxlLnNob3BfdGFibGUgdGJvZHkgLnByb2R1Y3Qtc3VidG90YWwsLndvb2NvbW1lcmNlIHRhYmxlLnNob3BfdGFibGUgdGJvZHkgLm9yZGVyLXRvdGFsIC53b29jb21tZXJjZS1QcmljZS1hbW91bnQsLndvb2NvbW1lcmNlLW9yZGVyLWRldGFpbHMgLmFtb3VudCwgI29yZGVyX3JldmlldyAuYW1vdW50LC53b29jb21tZXJjZSB1bC5vcmRlcl9kZXRhaWxzIGxpIC5hbW91bnQsLndvb2NvbW1lcmNlLXRhYmxlLS1vcmRlci1kZXRhaWxzIHRmb290IC53b29jb21tZXJjZS1QcmljZS1hbW91bnQsLmJ0bi1yZWFkbW9yZSwud29vY29tbWVyY2UgZGl2LnByb2R1Y3QgcC5wcmljZSwgLndvb2NvbW1lcmNlIGRpdi5wcm9kdWN0IHNwYW4ucHJpY2UsLmRldGFpbC1tZXRhcy10b3AgLnR5cGUtcHJvcGVydHksLmF0dGFjaG1lbnQtaXRlbSAuaWNvbl90eXBlLC5hZ2VudC1pdGVtIC5wcm9wZXJ0eS1qb2IsLnRvcC1kZXRhaWwtbWVtYmVyIC5wcm9wZXJ0eS1qb2IsLmFnZW5jeS1pdGVtIC5jYXRlZ29yeS1hZ2VuY3ksLmF0dGFjaG1lbnQtaXRlbSAuY2FuZGlkYXRlLWRldGFpbC1hdHRhY2htZW50IGksLmNvbHVtbnMtZ2FwIGxpLnllczo6YmVmb3JlLC5wcm9wZXJ0eS1saXN0LXNpbXBsZSAucHJvcGVydHktcHJpY2UsLmFwdXMtYnJlYWRzY3J1bWIgLmJyZWFkY3J1bWIgLmFjdGl2ZSwucG9zdC1sYXlvdXQgLmNvbC1jb250ZW50IC5saXN0LWNhdGVnb3JpZXMgYSwucHJvcGVydHktaXRlbSAudHlwZS1wcm9wZXJ0eSxhOmZvY3VzLGE6aG92ZXIsIC5tbS1tZW51IC5tbS1saXN0dmlldyA+IGxpLmFjdGl2ZSA+IGEsIC5tbS1tZW51IC5tbS1saXN0dmlldyA+IGxpID4gYTpob3ZlciwgLm1tLW1lbnUgLm1tLWxpc3R2aWV3ID4gbGkgPiBhOmZvY3VzLCAucHJvcGVydHktZ3JpZC1zbGlkZXIgLnByb3BlcnR5LXByaWNlLCAubW0tbWVudSAubWVudSBhOmhvdmVyLCAubW0tbWVudSAubWVudSBhOmZvY3VzLCAubWVudS1pdGVtLmN1cnJlbnRfcGFnZV9pdGVtIGEgLCAudHlwZS1iYW5uZXItcHJvcGVydHkuc3R5bGUzIC5pY29uLCAubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgbGk6aG92ZXIgPiBhLCAubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgbGkuY3VycmVudC1tZW51LWl0ZW0gPiBhLCAubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgbGkub3BlbiA+IGEsIC5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaS5hY3RpdmUgPiBhLCAuZmVhdHVyZWQtcHJvcGVydHksIC50b3AtZGV0YWlsLW1lbWJlciAuYWdlbmN5LXNvY2lhbHMgYTpob3ZlciwgLnRvcC1kZXRhaWwtbWVtYmVyIC5hZ2VuY3ktc29jaWFscyBhOmZvY3VzLCAuZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi10aXRsZS5lbGVtZW50b3ItYWN0aXZlIGEsIC53aWRnZXQtc2VhcmNoIC5idG46aG92ZXIsIC53aWRnZXQtc2VhcmNoIC5idG46Zm9jdXMsIC5saXN0LW9wdGlvbnMtYWN0aW9uIFt0eXBlPSJyYWRpbyJdOmNoZWNrZWQgKyBsYWJlbCwgLm1lZ2FtZW51ID4gbGk6aG92ZXIgPiBhLCAubWVnYW1lbnUgPiBsaS5hY3RpdmUgPiBhLCAucHJvcGVydGllcy1jdXJyZW5jaWVzIC5jdXJyZW5jaWVzIGxpLmFjdGl2ZSBsYWJlbCwgLnByb3BlcnRpZXMtY3VycmVuY2llcyAuY3VycmVuY2llcyBsaSBsYWJlbDpob3ZlciwgLmZvcm0tZ3JvdXAtcHJpY2UubGlzdCB1bC5wcmljZS1maWx0ZXIgbGk6aG92ZXIsIC5hamF4LXBhZ2luYXRpb24gLmFwdXMtbG9hZG1vcmUtYnRuLmhpZGRlbiArIC5hcHVzLWFsbHByb2R1Y3RzLCAuc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWQ9InRydWUiXTo6YmVmb3JlLCAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2RhdGEtc2VsZWN0ZWQ9InRydWUiXTo6YmVmb3Jle2NvbG9yOiAjMDAzMDQ5O30ubmF2LW1lbWJlciA+IGxpOmhvdmVyID4gYSwgLm5hdi1tZW1iZXIgPiBsaS5hY3RpdmUgPiBhLCAubmF2LW1lbWJlciA+IGxpOmZvY3VzID4gYSwubWFwLXBvcHVwIC5pY29uLXdyYXBwZXIsLnRleHQtdGhlbWUge2NvbG9yOiAjMDAzMDQ5ICFpbXBvcnRhbnQ7fS8qIHNldHRpbmcgYm9yZGVyIGNvbG9yICovI2NvbXBhcmUtc2lkZWJhciwjcHJvcGVydGllcy1nb29nbGUtbWFwcyAubWFya2VyLWNsdXN0ZXIsLnBhZ2luYXRpb24gPiBzcGFuLmN1cnJlbnQsIC5wYWdpbmF0aW9uID4gYS5jdXJyZW50LCAuYXB1cy1wYWdpbmF0aW9uID4gc3Bhbi5jdXJyZW50LCAuYXB1cy1wYWdpbmF0aW9uID4gYS5jdXJyZW50LC5wYWdpbmF0aW9uID4gc3Bhbjpmb2N1cywgLnBhZ2luYXRpb24gPiBzcGFuOmhvdmVyLCAucGFnaW5hdGlvbiA+IGE6Zm9jdXMsIC5wYWdpbmF0aW9uID4gYTpob3ZlciwgLmFwdXMtcGFnaW5hdGlvbiA+IHNwYW46Zm9jdXMsIC5hcHVzLXBhZ2luYXRpb24gPiBzcGFuOmhvdmVyLCAuYXB1cy1wYWdpbmF0aW9uID4gYTpmb2N1cywgLmFwdXMtcGFnaW5hdGlvbiA+IGE6aG92ZXIsLnBhZ2luYXRpb24gbGkgPiBzcGFuLmN1cnJlbnQsIC5wYWdpbmF0aW9uIGxpID4gYS5jdXJyZW50LCAuYXB1cy1wYWdpbmF0aW9uIGxpID4gc3Bhbi5jdXJyZW50LCAuYXB1cy1wYWdpbmF0aW9uIGxpID4gYS5jdXJyZW50LC5wYWdpbmF0aW9uIGxpID4gc3Bhbjpmb2N1cywgLnBhZ2luYXRpb24gbGkgPiBzcGFuOmhvdmVyLCAucGFnaW5hdGlvbiBsaSA+IGE6Zm9jdXMsIC5wYWdpbmF0aW9uIGxpID4gYTpob3ZlciwgLmFwdXMtcGFnaW5hdGlvbiBsaSA+IHNwYW46Zm9jdXMsIC5hcHVzLXBhZ2luYXRpb24gbGkgPiBzcGFuOmhvdmVyLCAuYXB1cy1wYWdpbmF0aW9uIGxpID4gYTpmb2N1cywgLmFwdXMtcGFnaW5hdGlvbiBsaSA+IGE6aG92ZXIsLmJvcmRlci10aGVtZSwgLm1tLW1lbnUgLm1tLWxpc3R2aWV3ID4gbGkuYWN0aXZlID4gLm1tLW5leHQ6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOiAjMDAzMDQ5O30uZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi10aXRsZS5lbGVtZW50b3ItYWN0aXZle2JvcmRlci1jb2xvcjogIzAwMzA0OSAhaW1wb3J0YW50O30ud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtIC5uYXYtdGFicyA+IGxpLmFjdGl2ZSA+IGE6OmJlZm9yZSB7Ym9yZGVyLWNvbG9yOiAjMDAzMDQ5IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O30uYnRuLXRoZW1le2JvcmRlci1jb2xvcjogI2ZmYjYwYiA7YmFja2dyb3VuZC1jb2xvcjogI2ZmYjYwYiA7fS53b29jb21tZXJjZSBpbnB1dC5idXR0b246ZGlzYWJsZWQsIC53b29jb21tZXJjZSBpbnB1dC5idXR0b246ZGlzYWJsZWRbZGlzYWJsZWRdLCAud29vY29tbWVyY2UgI3Jlc3BvbmQgaW5wdXQjc3VibWl0LmFsdCwgLndvb2NvbW1lcmNlIGEuYnV0dG9uLmFsdCwgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uYWx0LCAud29vY29tbWVyY2UgaW5wdXQuYnV0dG9uLmFsdCwgLndvb2NvbW1lcmNlICNyZXNwb25kIGlucHV0I3N1Ym1pdCwgLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbiwgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24sIC53b29jb21tZXJjZSBhLmJ1dHRvbiwuYnRuLXRoZW1lLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjogI2ZmYjYwYiA7Y29sb3I6ICNmZmI2MGIgO30ucHJvZHVjdC1ibG9jay5ncmlkIC5hZGQtY2FydCAuYnV0dG9uLC5idG4tdGhlbWUuYnRuLWludmVyc2UsIC5waG9uZS13cmFwcGVyLnBob25lLWhpZGUgLnBob25lLXNob3cgc3BhbiwgLmJ0bi10aGVtZS1zZWNvbmQsIC5hZGQtZml4LXRvcHtib3JkZXItY29sb3I6ICNmZmI2MGIgO2JhY2tncm91bmQtY29sb3I6ICNmZmI2MGIgO30vKiBzZXRpbmcgYmFja2dyb3VuZCBtYWluICovLnN1Yndvby1pbm5lcjpob3ZlciBhLmJ1dHRvbiwuc3Vid29vLWlubmVyIC5hZGQtY2FydCAuYWRkZWRfdG9fY2FydCwucHJvZHVjdC1ibG9jay5ncmlkIC5hZGQtY2FydCAuYWRkZWRfdG9fY2FydCwud29vY29tbWVyY2UgaW5wdXQuYnV0dG9uOmRpc2FibGVkOmhvdmVyLCAud29vY29tbWVyY2UgaW5wdXQuYnV0dG9uOmRpc2FibGVkOmZvY3VzLCAud29vY29tbWVyY2UgaW5wdXQuYnV0dG9uOmRpc2FibGVkW2Rpc2FibGVkXTpob3ZlciwgLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbjpkaXNhYmxlZFtkaXNhYmxlZF06Zm9jdXMsIC53b29jb21tZXJjZSAjcmVzcG9uZCBpbnB1dCNzdWJtaXQuYWx0OmhvdmVyLCAud29vY29tbWVyY2UgI3Jlc3BvbmQgaW5wdXQjc3VibWl0LmFsdDpmb2N1cywgLndvb2NvbW1lcmNlIGEuYnV0dG9uLmFsdDpob3ZlciwgLndvb2NvbW1lcmNlIGEuYnV0dG9uLmFsdDpmb2N1cywgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uYWx0OmhvdmVyLCAud29vY29tbWVyY2UgYnV0dG9uLmJ1dHRvbi5hbHQ6Zm9jdXMsIC53b29jb21tZXJjZSBpbnB1dC5idXR0b24uYWx0OmhvdmVyLCAud29vY29tbWVyY2UgaW5wdXQuYnV0dG9uLmFsdDpmb2N1cywgLndvb2NvbW1lcmNlICNyZXNwb25kIGlucHV0I3N1Ym1pdDpob3ZlciwgLndvb2NvbW1lcmNlICNyZXNwb25kIGlucHV0I3N1Ym1pdDpmb2N1cywgLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbjpob3ZlciwgLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbjpmb2N1cywgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b246aG92ZXIsIC53b29jb21tZXJjZSBidXR0b24uYnV0dG9uOmZvY3VzLCAud29vY29tbWVyY2UgYS5idXR0b246aG92ZXIsIC53b29jb21tZXJjZSBhLmJ1dHRvbjpmb2N1cywuYnRuLXRoZW1lOmhvdmVyLC5idG4tdGhlbWU6Zm9jdXMsLmJ0bi10aGVtZS5idG4tb3V0bGluZTpob3ZlciwuYnRuLXRoZW1lLmJ0bi1vdXRsaW5lOmZvY3VzLCAucGhvbmUtd3JhcHBlci5waG9uZS1oaWRlIC5waG9uZS1zaG93IHNwYW4sIC5idG4tdGhlbWUtc2Vjb25kLCAuYWRkLWZpeC10b3B7Ym9yZGVyLWNvbG9yOiAjMDAzMDQ5IDtiYWNrZ3JvdW5kLWNvbG9yOiAjMDAzMDQ5IDt9LmJ0bi10aGVtZS5idG4taW52ZXJzZTpob3ZlciwuYnRuLXRoZW1lLmJ0bi1pbnZlcnNlOmZvY3Vze2NvbG9yOiAjMDAzMDQ5IDtib3JkZXItY29sb3I6ICMwMDMwNDkgO30uYnRuLmJ0bi12aWV3LWFsbC1waG90b3Mge2NvbG9yOiAjMDAzMDQ5IDt9Cjwvc3R5bGU+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2hvbWVvLXN0eWxlLWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvdGhlbWVzL2hvbWVvL3N0eWxlLmNzcz92ZXI9MS4wJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0naG9tZW8tY2hpbGQtc3R5bGUtY3NzJyAgaHJlZj0nd3AtY29udGVudC90aGVtZXMvaG9tZW8tY2hpbGQvc3R5bGUuY3NzP3Zlcj01LjkuMycgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2dvb2dsZS1mb250cy0xLWNzcycgIGhyZWY9J2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Sb2JvdG8lM0ExMDAlMkMxMDBpdGFsaWMlMkMyMDAlMkMyMDBpdGFsaWMlMkMzMDAlMkMzMDBpdGFsaWMlMkM0MDAlMkM0MDBpdGFsaWMlMkM1MDAlMkM1MDBpdGFsaWMlMkM2MDAlMkM2MDBpdGFsaWMlMkM3MDAlMkM3MDBpdGFsaWMlMkM4MDAlMkM4MDBpdGFsaWMlMkM5MDAlMkM5MDBpdGFsaWMlN0NSb2JvdG8rU2xhYiUzQTEwMCUyQzEwMGl0YWxpYyUyQzIwMCUyQzIwMGl0YWxpYyUyQzMwMCUyQzMwMGl0YWxpYyUyQzQwMCUyQzQwMGl0YWxpYyUyQzUwMCUyQzUwMGl0YWxpYyUyQzYwMCUyQzYwMGl0YWxpYyUyQzcwMCUyQzcwMGl0YWxpYyUyQzgwMCUyQzgwMGl0YWxpYyUyQzkwMCUyQzkwMGl0YWxpYyU3Q09wZW4rU2FucyUzQTEwMCUyQzEwMGl0YWxpYyUyQzIwMCUyQzIwMGl0YWxpYyUyQzMwMCUyQzMwMGl0YWxpYyUyQzQwMCUyQzQwMGl0YWxpYyUyQzUwMCUyQzUwMGl0YWxpYyUyQzYwMCUyQzYwMGl0YWxpYyUyQzcwMCUyQzcwMGl0YWxpYyUyQzgwMCUyQzgwMGl0YWxpYyUyQzkwMCUyQzkwMGl0YWxpYyU3Q01vbnRzZXJyYXQlM0ExMDAlMkMxMDBpdGFsaWMlMkMyMDAlMkMyMDBpdGFsaWMlMkMzMDAlMkMzMDBpdGFsaWMlMkM0MDAlMkM0MDBpdGFsaWMlMkM1MDAlMkM1MDBpdGFsaWMlMkM2MDAlMkM2MDBpdGFsaWMlMkM3MDAlMkM3MDBpdGFsaWMlMkM4MDAlMkM4MDBpdGFsaWMlMkM5MDAlMkM5MDBpdGFsaWMmIzAzODtkaXNwbGF5PWF1dG8mIzAzODt2ZXI9NS45LjMnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdlbGVtZW50b3ItaWNvbnMtc2hhcmVkLTAtY3NzJyAgaHJlZj0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvbGliL2ZvbnQtYXdlc29tZS9jc3MvZm9udGF3ZXNvbWUubWluLmNzcz92ZXI9NS4xNS4zJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZWxlbWVudG9yLWljb25zLWZhLXNvbGlkLWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2xpYi9mb250LWF3ZXNvbWUvY3NzL3NvbGlkLm1pbi5jc3M/dmVyPTUuMTUuMycgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2pldHBhY2tfY3NzLWNzcycgIGhyZWY9J2h0dHBzOi8vYzAud3AuY29tL3AvamV0cGFjay8xMC42L2Nzcy9qZXRwYWNrLmNzcycgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vYzAud3AuY29tL2MvNS45LjMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L2pxdWVyeS5taW4uanMnIGlkPSdqcXVlcnktY29yZS1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vYzAud3AuY29tL2MvNS45LjMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L2pxdWVyeS1taWdyYXRlLm1pbi5qcycgaWQ9J2pxdWVyeS1taWdyYXRlLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL3JldnNsaWRlci9wdWJsaWMvYXNzZXRzL2pzL3JidG9vbHMubWluLmpzP3Zlcj02LjQuOCcgaWQ9J3RwLXRvb2xzLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL3JldnNsaWRlci9wdWJsaWMvYXNzZXRzL2pzL3JzNi5taW4uanM/dmVyPTYuNC4xMScgaWQ9J3Jldm1pbi1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy9zdmctc3VwcG9ydC9qcy9taW4vc3Zncy1pbmxpbmUtbWluLmpzP3Zlcj0xLjAuMCcgaWQ9J2JvZGhpX3N2Z19pbmxpbmUtanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgaWQ9J2JvZGhpX3N2Z19pbmxpbmUtanMtYWZ0ZXInPgpjc3NUYXJnZXQ9ImltZy5zdHlsZS1zdmciO0ZvcmNlSW5saW5lU1ZHQWN0aXZlPSJmYWxzZSI7Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvd3AtcmVhbGVzdGF0ZS9hc3NldHMvanMvY2hhcnQubWluLmpzP3Zlcj0xLjAnIGlkPSdjaGFydC1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2xpYi9mb250LWF3ZXNvbWUvanMvdjQtc2hpbXMubWluLmpzP3Zlcj01LjAuMTAnIGlkPSdmb250LWF3ZXNvbWUtNC1zaGltLWpzJz48L3NjcmlwdD4KPGxpbmsgcmVsPSJodHRwczovL2FwaS53Lm9yZy8iIGhyZWY9Imh0dHBzOi8vY3dsYWdvcy5jb20vd3AtanNvbi8iIC8+PGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFwcGxpY2F0aW9uL2pzb24iIGhyZWY9Imh0dHBzOi8vY3dsYWdvcy5jb20vd3AtanNvbi93cC92Mi9wYWdlcy8yMyIgLz48bGluayByZWw9IkVkaXRVUkkiIHR5cGU9ImFwcGxpY2F0aW9uL3JzZCt4bWwiIHRpdGxlPSJSU0QiIGhyZWY9Imh0dHBzOi8vY3dsYWdvcy5jb20veG1scnBjLnBocD9yc2QiIC8+CiAKPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJXb3JkUHJlc3MgNS45LjMiIC8+CjxsaW5rIHJlbD0nc2hvcnRsaW5rJyBocmVmPSdodHRwczovL3dwLm1lL1BiaHo4Ry1uJyAvPgo8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vanNvbitvZW1iZWQiIGhyZWY9Imh0dHBzOi8vY3dsYWdvcy5jb20vd3AtanNvbi9vZW1iZWQvMS4wL2VtYmVkP3VybD1odHRwcyUzQSUyRiUyRmN3bGFnb3MuY29tJTJGIiAvPgo8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0idGV4dC94bWwrb2VtYmVkIiBocmVmPSJodHRwczovL2N3bGFnb3MuY29tL3dwLWpzb24vb2VtYmVkLzEuMC9lbWJlZD91cmw9aHR0cHMlM0ElMkYlMkZjd2xhZ29zLmNvbSUyRiYjMDM4O2Zvcm1hdD14bWwiIC8+CjxtZXRhIG5hbWU9ImZyYW1ld29yayIgY29udGVudD0iUmVkdXggNC4xLjI0IiAvPjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iU2l0ZSBLaXQgYnkgR29vZ2xlIDEuNjguMCIgLz48bWV0YSBuYW1lPSJmYWNlYm9vay1kb21haW4tdmVyaWZpY2F0aW9uIiBjb250ZW50PSJqZjdudmc3ODQ1eDAydDR0ZWxqamw2MHdxN25wb2IiIC8+CjxzY3JpcHQgaWQ9Im1janMiPiFmdW5jdGlvbihjLGgsaSxtLHApe209Yy5jcmVhdGVFbGVtZW50KGgpLHA9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZShoKVswXSxtLmFzeW5jPTEsbS5zcmM9aSxwLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0scCl9KGRvY3VtZW50LCJzY3JpcHQiLCJodHRwczovL2NoaW1wc3RhdGljLmNvbS9tY2pzLWNvbm5lY3RlZC9qcy91c2Vycy9iNmViY2E3MmIzNmFlNDIwOTU1MzAzMjFhL2MyNzU2MGExOTIyYmRhNWNkNzMzYzE4NjguanMiKTs8L3NjcmlwdD4KPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJlM21JOWZWa29EeDQyQXphUDVhUk1hcl9QQ05wVDBmUXVMSlE1MmJHdW1rIiAvPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4ud2Vic2l0ZXBvbGljaWVzLmlvL2xpYi9jb29raWVjb25zZW50LzEuMC4zL2Nvb2tpZWNvbnNlbnQubWluLmpzIiBkZWZlcj48L3NjcmlwdD4KIAo8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPmltZyN3cHN0YXRze2Rpc3BsYXk6bm9uZX08L3N0eWxlPgoJCjwhLS0gRmFjZWJvb2sgUGl4ZWwgQ29kZSAtLT4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgohZnVuY3Rpb24oZixiLGUsdixuLHQscyl7aWYoZi5mYnEpcmV0dXJuO249Zi5mYnE9ZnVuY3Rpb24oKXtuLmNhbGxNZXRob2Q/Cm4uY2FsbE1ldGhvZC5hcHBseShuLGFyZ3VtZW50cyk6bi5xdWV1ZS5wdXNoKGFyZ3VtZW50cyl9O2lmKCFmLl9mYnEpZi5fZmJxPW47Cm4ucHVzaD1uO24ubG9hZGVkPSEwO24udmVyc2lvbj0nMi4wJztuLnF1ZXVlPVtdO3Q9Yi5jcmVhdGVFbGVtZW50KGUpO3QuYXN5bmM9ITA7CnQuc3JjPXY7cz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpWzBdO3MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxzKX0od2luZG93LApkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9VUy9mYmV2ZW50cy5qcycpOwo8L3NjcmlwdD4KPCEtLSBFbmQgRmFjZWJvb2sgUGl4ZWwgQ29kZSAtLT4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgogIGZicSgnaW5pdCcsICcyNzQ3NzQxNjI1NTQ2MTI3Jywge30sIHsKICAgICJhZ2VudCI6ICJ3b3JkcHJlc3MtNS45LjMtMy4wLjYiCn0pOwo8L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+CiAgZmJxKCd0cmFjaycsICdQYWdlVmlldycsIFtdKTsKPC9zY3JpcHQ+CjwhLS0gRmFjZWJvb2sgUGl4ZWwgQ29kZSAtLT4KPG5vc2NyaXB0Pgo8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGFsdD0iZmJweCIKc3JjPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vdHI/aWQ9Mjc0Nzc0MTYyNTU0NjEyNyZldj1QYWdlVmlldyZub3NjcmlwdD0xIiAvPgo8L25vc2NyaXB0Pgo8IS0tIEVuZCBGYWNlYm9vayBQaXhlbCBDb2RlIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5yZWNlbnRjb21tZW50cyBhe2Rpc3BsYXk6aW5saW5lICFpbXBvcnRhbnQ7cGFkZGluZzowICFpbXBvcnRhbnQ7bWFyZ2luOjAgIWltcG9ydGFudDt9PC9zdHlsZT48bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IlBvd2VyZWQgYnkgU2xpZGVyIFJldm9sdXRpb24gNi40LjExIC0gcmVzcG9uc2l2ZSwgTW9iaWxlLUZyaWVuZGx5IFNsaWRlciBQbHVnaW4gZm9yIFdvcmRQcmVzcyB3aXRoIGNvbWZvcnRhYmxlIGRyYWcgYW5kIGRyb3AgaW50ZXJmYWNlLiIgLz4KPGxpbmsgcmVsPSJpY29uIiBocmVmPSJodHRwczovL2JldGFyb2kubHRkL2ltYWdlcy9mYXZpY29uLmljbz9maXQ9MzIlMkMzMiYjMDM4O3NzbD0xIiBzaXplcz0iMzJ4MzIiIC8+CjxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC9pbWFnZXMvZmF2aWNvbi5pY28/Zml0PTE5MiUyQzE5MiYjMDM4O3NzbD0xIiBzaXplcz0iMTkyeDE5MiIgLz4KPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSJodHRwczovL2JldGFyb2kubHRkL2ltYWdlcy9mYXZpY29uLmljbz9maXQ9MTgwJTJDMTgwJiMwMzg7c3NsPTEiIC8+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUltYWdlIiBjb250ZW50PSJodHRwczovL2JldGFyb2kubHRkL2ltYWdlcy9mYXZpY29uLmljbz9maXQ9MjcwJTJDMjcwJiMwMzg7c3NsPTEiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5mdW5jdGlvbiBzZXRSRVZTdGFydFNpemUoZSl7CgkJCS8vd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsJCQkJIAoJCQkJd2luZG93LlJTSVcgPSB3aW5kb3cuUlNJVz09PXVuZGVmaW5lZCA/IHdpbmRvdy5pbm5lcldpZHRoIDogd2luZG93LlJTSVc7CQoJCQkJd2luZG93LlJTSUggPSB3aW5kb3cuUlNJSD09PXVuZGVmaW5lZCA/IHdpbmRvdy5pbm5lckhlaWdodCA6IHdpbmRvdy5SU0lIOwkKCQkJCXRyeSB7CQkJCQkJCQkKCQkJCQl2YXIgcHcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlLmMpLnBhcmVudE5vZGUub2Zmc2V0V2lkdGgsCgkJCQkJCW5ld2g7CgkJCQkJcHcgPSBwdz09PTAgfHwgaXNOYU4ocHcpID8gd2luZG93LlJTSVcgOiBwdzsKCQkJCQllLnRhYncgPSBlLnRhYnc9PT11bmRlZmluZWQgPyAwIDogcGFyc2VJbnQoZS50YWJ3KTsKCQkJCQllLnRodW1idyA9IGUudGh1bWJ3PT09dW5kZWZpbmVkID8gMCA6IHBhcnNlSW50KGUudGh1bWJ3KTsKCQkJCQllLnRhYmggPSBlLnRhYmg9PT11bmRlZmluZWQgPyAwIDogcGFyc2VJbnQoZS50YWJoKTsKCQkJCQllLnRodW1iaCA9IGUudGh1bWJoPT09dW5kZWZpbmVkID8gMCA6IHBhcnNlSW50KGUudGh1bWJoKTsKCQkJCQllLnRhYmhpZGUgPSBlLnRhYmhpZGU9PT11bmRlZmluZWQgPyAwIDogcGFyc2VJbnQoZS50YWJoaWRlKTsKCQkJCQllLnRodW1iaGlkZSA9IGUudGh1bWJoaWRlPT09dW5kZWZpbmVkID8gMCA6IHBhcnNlSW50KGUudGh1bWJoaWRlKTsKCQkJCQllLm1oID0gZS5taD09PXVuZGVmaW5lZCB8fCBlLm1oPT0iIiB8fCBlLm1oPT09ImF1dG8iID8gMCA6IHBhcnNlSW50KGUubWgsMCk7CQkKCQkJCQlpZihlLmxheW91dD09PSJmdWxsc2NyZWVuIiB8fCBlLmw9PT0iZnVsbHNjcmVlbiIpIAkJCQkJCQoJCQkJCQluZXdoID0gTWF0aC5tYXgoZS5taCx3aW5kb3cuUlNJSCk7CQkJCQkKCQkJCQllbHNlewkJCQkJCgkJCQkJCWUuZ3cgPSBBcnJheS5pc0FycmF5KGUuZ3cpID8gZS5ndyA6IFtlLmd3XTsKCQkJCQkJZm9yICh2YXIgaSBpbiBlLnJsKSBpZiAoZS5nd1tpXT09PXVuZGVmaW5lZCB8fCBlLmd3W2ldPT09MCkgZS5nd1tpXSA9IGUuZ3dbaS0xXTsJCQkJCQoJCQkJCQllLmdoID0gZS5lbD09PXVuZGVmaW5lZCB8fCBlLmVsPT09IiIgfHwgKEFycmF5LmlzQXJyYXkoZS5lbCkgJiYgZS5lbC5sZW5ndGg9PTApPyBlLmdoIDogZS5lbDsKCQkJCQkJZS5naCA9IEFycmF5LmlzQXJyYXkoZS5naCkgPyBlLmdoIDogW2UuZ2hdOwoJCQkJCQlmb3IgKHZhciBpIGluIGUucmwpIGlmIChlLmdoW2ldPT09dW5kZWZpbmVkIHx8IGUuZ2hbaV09PT0wKSBlLmdoW2ldID0gZS5naFtpLTFdOwoJCQkJCQkJCQkJCQoJCQkJCQl2YXIgbmwgPSBuZXcgQXJyYXkoZS5ybC5sZW5ndGgpLAoJCQkJCQkJaXggPSAwLAkJCQkJCQoJCQkJCQkJc2w7CQkJCQkKCQkJCQkJZS50YWJ3ID0gZS50YWJoaWRlPj1wdyA/IDAgOiBlLnRhYnc7CgkJCQkJCWUudGh1bWJ3ID0gZS50aHVtYmhpZGU+PXB3ID8gMCA6IGUudGh1bWJ3OwoJCQkJCQllLnRhYmggPSBlLnRhYmhpZGU+PXB3ID8gMCA6IGUudGFiaDsKCQkJCQkJZS50aHVtYmggPSBlLnRodW1iaGlkZT49cHcgPyAwIDogZS50aHVtYmg7CQkJCQkKCQkJCQkJZm9yICh2YXIgaSBpbiBlLnJsKSBubFtpXSA9IGUucmxbaV08d2luZG93LlJTSVcgPyAwIDogZS5ybFtpXTsKCQkJCQkJc2wgPSBubFswXTsJCQkJCQkJCQkKCQkJCQkJZm9yICh2YXIgaSBpbiBubCkgaWYgKHNsPm5sW2ldICYmIG5sW2ldPjApIHsgc2wgPSBubFtpXTsgaXg9aTt9CQkJCQkJCQkJCQkJCQkJCgkJCQkJCXZhciBtID0gcHc+KGUuZ3dbaXhdK2UudGFidytlLnRodW1idykgPyAxIDogKHB3LShlLnRhYncrZS50aHVtYncpKSAvIChlLmd3W2l4XSk7CQkJCQkKCQkJCQkJbmV3aCA9ICAoZS5naFtpeF0gKiBtKSArIChlLnRhYmggKyBlLnRodW1iaCk7CgkJCQkJfQkJCQkKCQkJCQlpZih3aW5kb3cucnNfaW5pdF9jc3M9PT11bmRlZmluZWQpIHdpbmRvdy5yc19pbml0X2NzcyA9IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSk7CQkJCQkKCQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlLmMpLmhlaWdodCA9IG5ld2grInB4IjsKCQkJCQl3aW5kb3cucnNfaW5pdF9jc3MuaW5uZXJIVE1MICs9ICIjIitlLmMrIl93cmFwcGVyIHsgaGVpZ2h0OiAiK25ld2grInB4IH0iOwkJCQkKCQkJCX0gY2F0Y2goZSl7CgkJCQkJY29uc29sZS5sb2coIkZhaWx1cmUgYXQgUHJlc2l6ZSBvZiBTbGlkZXI6IiArIGUpCgkJCQl9CQkJCQkgICAKCQkJLy99KTsKCQkgIH07PC9zY3JpcHQ+CgkJICA8c2NyaXB0IHNyYz0iLy9jb2RlLmppdm9zaXRlLmNvbS93aWRnZXQvRXIxdGZYV0FCOSIgYXN5bmM+PC9zY3JpcHQ+Cgo8L2hlYWQ+Cjxib2R5IGNsYXNzPSJob21lIHBhZ2UtdGVtcGxhdGUtZGVmYXVsdCBwYWdlIHBhZ2UtaWQtMjMgd3AtZW1iZWQtcmVzcG9uc2l2ZSBtYWluIGFwdXMtYm9keS1sb2FkaW5nIGltYWdlLWxhenktbG9hZGluZyBib2R5LWZvb3Rlci1tb2JpbGUgaGFzLWhlYWRlci1zdGlja3kgZWxlbWVudG9yLWRlZmF1bHQgZWxlbWVudG9yLWtpdC02IGVsZW1lbnRvci1wYWdlIGVsZW1lbnRvci1wYWdlLTIzIj4KCTxkaXYgY2xhc3M9ImFwdXMtcGFnZS1sb2FkaW5nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhcHVzLWxvYWRlci1pbm5lciIgPjwvZGl2PgogICAgPC9kaXY+Cgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDAgMCIgd2lkdGg9IjAiIGhlaWdodD0iMCIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0ibm9uZSIgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAtOTk5OXB4OyBvdmVyZmxvdzogaGlkZGVuOyIgPjxkZWZzPjxmaWx0ZXIgaWQ9IndwLWR1b3RvbmUtZGFyay1ncmF5c2NhbGUiPjxmZUNvbG9yTWF0cml4IGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IiAuMjk5IC41ODcgLjExNCAwIDAgLjI5OSAuNTg3IC4xMTQgMCAwIC4yOTkgLjU4NyAuMTE0IDAgMCAuMjk5IC41ODcgLjExNCAwIDAgIiAvPjxmZUNvbXBvbmVudFRyYW5zZmVyIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgPjxmZUZ1bmNSIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAwLjQ5ODAzOTIxNTY4NjI3IiAvPjxmZUZ1bmNHIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAwLjQ5ODAzOTIxNTY4NjI3IiAvPjxmZUZ1bmNCIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAwLjQ5ODAzOTIxNTY4NjI3IiAvPjxmZUZ1bmNBIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMSAxIiAvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48ZmVDb21wb3NpdGUgaW4yPSJTb3VyY2VHcmFwaGljIiBvcGVyYXRvcj0iaW4iIC8+PC9maWx0ZXI+PC9kZWZzPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMCAwIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJub25lIiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7IG92ZXJmbG93OiBoaWRkZW47IiA+PGRlZnM+PGZpbHRlciBpZD0id3AtZHVvdG9uZS1ncmF5c2NhbGUiPjxmZUNvbG9yTWF0cml4IGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IiAuMjk5IC41ODcgLjExNCAwIDAgLjI5OSAuNTg3IC4xMTQgMCAwIC4yOTkgLjU4NyAuMTE0IDAgMCAuMjk5IC41ODcgLjExNCAwIDAgIiAvPjxmZUNvbXBvbmVudFRyYW5zZmVyIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgPjxmZUZ1bmNSIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAxIiAvPjxmZUZ1bmNHIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAxIiAvPjxmZUZ1bmNCIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAxIiAvPjxmZUZ1bmNBIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMSAxIiAvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48ZmVDb21wb3NpdGUgaW4yPSJTb3VyY2VHcmFwaGljIiBvcGVyYXRvcj0iaW4iIC8+PC9maWx0ZXI+PC9kZWZzPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMCAwIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJub25lIiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7IG92ZXJmbG93OiBoaWRkZW47IiA+PGRlZnM+PGZpbHRlciBpZD0id3AtZHVvdG9uZS1wdXJwbGUteWVsbG93Ij48ZmVDb2xvck1hdHJpeCBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIgLjI5OSAuNTg3IC4xMTQgMCAwIC4yOTkgLjU4NyAuMTE0IDAgMCAuMjk5IC41ODcgLjExNCAwIDAgLjI5OSAuNTg3IC4xMTQgMCAwICIgLz48ZmVDb21wb25lbnRUcmFuc2ZlciBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiID48ZmVGdW5jUiB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAuNTQ5MDE5NjA3ODQzMTQgMC45ODgyMzUyOTQxMTc2NSIgLz48ZmVGdW5jRyB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAgMSIgLz48ZmVGdW5jQiB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAuNzE3NjQ3MDU4ODIzNTMgMC4yNTQ5MDE5NjA3ODQzMSIgLz48ZmVGdW5jQSB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjEgMSIgLz48L2ZlQ29tcG9uZW50VHJhbnNmZXI+PGZlQ29tcG9zaXRlIGluMj0iU291cmNlR3JhcGhpYyIgb3BlcmF0b3I9ImluIiAvPjwvZmlsdGVyPjwvZGVmcz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDAgMCIgd2lkdGg9IjAiIGhlaWdodD0iMCIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0ibm9uZSIgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAtOTk5OXB4OyBvdmVyZmxvdzogaGlkZGVuOyIgPjxkZWZzPjxmaWx0ZXIgaWQ9IndwLWR1b3RvbmUtYmx1ZS1yZWQiPjxmZUNvbG9yTWF0cml4IGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IiAuMjk5IC41ODcgLjExNCAwIDAgLjI5OSAuNTg3IC4xMTQgMCAwIC4yOTkgLjU4NyAuMTE0IDAgMCAuMjk5IC41ODcgLjExNCAwIDAgIiAvPjxmZUNvbXBvbmVudFRyYW5zZmVyIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgPjxmZUZ1bmNSIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAxIiAvPjxmZUZ1bmNHIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAwLjI3ODQzMTM3MjU0OTAyIiAvPjxmZUZ1bmNCIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMC41OTIxNTY4NjI3NDUxIDAuMjc4NDMxMzcyNTQ5MDIiIC8+PGZlRnVuY0EgdHlwZT0idGFibGUiIHRhYmxlVmFsdWVzPSIxIDEiIC8+PC9mZUNvbXBvbmVudFRyYW5zZmVyPjxmZUNvbXBvc2l0ZSBpbjI9IlNvdXJjZUdyYXBoaWMiIG9wZXJhdG9yPSJpbiIgLz48L2ZpbHRlcj48L2RlZnM+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAwIDAiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZvY3VzYWJsZT0iZmFsc2UiIHJvbGU9Im5vbmUiIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogLTk5OTlweDsgb3ZlcmZsb3c6IGhpZGRlbjsiID48ZGVmcz48ZmlsdGVyIGlkPSJ3cC1kdW90b25lLW1pZG5pZ2h0Ij48ZmVDb2xvck1hdHJpeCBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIgLjI5OSAuNTg3IC4xMTQgMCAwIC4yOTkgLjU4NyAuMTE0IDAgMCAuMjk5IC41ODcgLjExNCAwIDAgLjI5OSAuNTg3IC4xMTQgMCAwICIgLz48ZmVDb21wb25lbnRUcmFuc2ZlciBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiID48ZmVGdW5jUiB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAgMCIgLz48ZmVGdW5jRyB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAgMC42NDcwNTg4MjM1Mjk0MSIgLz48ZmVGdW5jQiB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAgMSIgLz48ZmVGdW5jQSB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjEgMSIgLz48L2ZlQ29tcG9uZW50VHJhbnNmZXI+PGZlQ29tcG9zaXRlIGluMj0iU291cmNlR3JhcGhpYyIgb3BlcmF0b3I9ImluIiAvPjwvZmlsdGVyPjwvZGVmcz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDAgMCIgd2lkdGg9IjAiIGhlaWdodD0iMCIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0ibm9uZSIgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAtOTk5OXB4OyBvdmVyZmxvdzogaGlkZGVuOyIgPjxkZWZzPjxmaWx0ZXIgaWQ9IndwLWR1b3RvbmUtbWFnZW50YS15ZWxsb3ciPjxmZUNvbG9yTWF0cml4IGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IiAuMjk5IC41ODcgLjExNCAwIDAgLjI5OSAuNTg3IC4xMTQgMCAwIC4yOTkgLjU4NyAuMTE0IDAgMCAuMjk5IC41ODcgLjExNCAwIDAgIiAvPjxmZUNvbXBvbmVudFRyYW5zZmVyIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgPjxmZUZ1bmNSIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMC43ODAzOTIxNTY4NjI3NSAxIiAvPjxmZUZ1bmNHIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAwLjk0OTAxOTYwNzg0MzE0IiAvPjxmZUZ1bmNCIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMC4zNTI5NDExNzY0NzA1OSAwLjQ3MDU4ODIzNTI5NDEyIiAvPjxmZUZ1bmNBIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMSAxIiAvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48ZmVDb21wb3NpdGUgaW4yPSJTb3VyY2VHcmFwaGljIiBvcGVyYXRvcj0iaW4iIC8+PC9maWx0ZXI+PC9kZWZzPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMCAwIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJub25lIiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7IG92ZXJmbG93OiBoaWRkZW47IiA+PGRlZnM+PGZpbHRlciBpZD0id3AtZHVvdG9uZS1wdXJwbGUtZ3JlZW4iPjxmZUNvbG9yTWF0cml4IGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IiAuMjk5IC41ODcgLjExNCAwIDAgLjI5OSAuNTg3IC4xMTQgMCAwIC4yOTkgLjU4NyAuMTE0IDAgMCAuMjk5IC41ODcgLjExNCAwIDAgIiAvPjxmZUNvbXBvbmVudFRyYW5zZmVyIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiIgPjxmZUZ1bmNSIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMC42NTA5ODAzOTIxNTY4NiAwLjQwMzkyMTU2ODYyNzQ1IiAvPjxmZUZ1bmNHIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMCAxIiAvPjxmZUZ1bmNCIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMC40NDcwNTg4MjM1Mjk0MSAwLjQiIC8+PGZlRnVuY0EgdHlwZT0idGFibGUiIHRhYmxlVmFsdWVzPSIxIDEiIC8+PC9mZUNvbXBvbmVudFRyYW5zZmVyPjxmZUNvbXBvc2l0ZSBpbjI9IlNvdXJjZUdyYXBoaWMiIG9wZXJhdG9yPSJpbiIgLz48L2ZpbHRlcj48L2RlZnM+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAwIDAiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZvY3VzYWJsZT0iZmFsc2UiIHJvbGU9Im5vbmUiIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogLTk5OTlweDsgb3ZlcmZsb3c6IGhpZGRlbjsiID48ZGVmcz48ZmlsdGVyIGlkPSJ3cC1kdW90b25lLWJsdWUtb3JhbmdlIj48ZmVDb2xvck1hdHJpeCBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIgLjI5OSAuNTg3IC4xMTQgMCAwIC4yOTkgLjU4NyAuMTE0IDAgMCAuMjk5IC41ODcgLjExNCAwIDAgLjI5OSAuNTg3IC4xMTQgMCAwICIgLz48ZmVDb21wb25lbnRUcmFuc2ZlciBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiID48ZmVGdW5jUiB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAuMDk4MDM5MjE1Njg2Mjc1IDEiIC8+PGZlRnVuY0cgdHlwZT0idGFibGUiIHRhYmxlVmFsdWVzPSIwIDAuNjYyNzQ1MDk4MDM5MjIiIC8+PGZlRnVuY0IgdHlwZT0idGFibGUiIHRhYmxlVmFsdWVzPSIwLjg0NzA1ODgyMzUyOTQxIDAuNDE5NjA3ODQzMTM3MjUiIC8+PGZlRnVuY0EgdHlwZT0idGFibGUiIHRhYmxlVmFsdWVzPSIxIDEiIC8+PC9mZUNvbXBvbmVudFRyYW5zZmVyPjxmZUNvbXBvc2l0ZSBpbjI9IlNvdXJjZUdyYXBoaWMiIG9wZXJhdG9yPSJpbiIgLz48L2ZpbHRlcj48L2RlZnM+PC9zdmc+PGRpdiBpZD0id3JhcHBlci1jb250YWluZXIiIGNsYXNzPSJ3cmFwcGVyLWNvbnRhaW5lciI+CiAgICAKCTxuYXYgaWQ9Im5hdmJhci1vZmZjYW52YXMiIGNsYXNzPSJuYXZiYXIgaGlkZGVuLWxnIiByb2xlPSJuYXZpZ2F0aW9uIj4KICAgIDx1bD4KICAgICAgICAKPGxpIGlkPSJtZW51LWl0ZW0tMzIwNiIgY2xhc3M9ImFjdGl2ZSBtZW51LWl0ZW0tMzIwNiI+PGEgaHJlZj0iP2E9aG9tZSI+SE9NRTwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS0zMjA3IiBjbGFzcz0ibWVudS1pdGVtLTMyMDciPjxhIGhyZWY9Ij9hPWFib3V0Ij5BQk9VVDwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS0zMjA5IiBjbGFzcz0ibWVudS1pdGVtLTMyMDkiPjxhIGhyZWY9Ij9hPWZhcSI+RkFRJ1M8L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tODYzMCIgY2xhc3M9Im1lbnUtaXRlbS04NjMwIj48YSBocmVmPSI/YT1ydWxlcyI+VEVSTVM8L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tMzIxMCIgY2xhc3M9Im1lbnUtaXRlbS0zMjEwIj48YSBocmVmPSI/YT1zaWdudXAiPlNJR05VUDwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS0zMjExIiBjbGFzcz0ibWVudS1pdGVtLTMyMTEiPjxhIGhyZWY9Ij9hPWxvZ2luIj5MT0dJTjwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS0zMjEyIiBjbGFzcz0ibWVudS1pdGVtLTMyMTIiPjxhIGhyZWY9Ij9hPXN1cHBvcnQiPkNPTlRBQ1QgVVM8L2E+PC9saT4KICAgICAgICAKICAgIDwvdWw+CgogICAgPC9uYXY+CTxkaXYgaWQ9ImFwdXMtaGVhZGVyLW1vYmlsZSIgY2xhc3M9ImhlYWRlci1tb2JpbGUgaGlkZGVuLWxnIGNsZWFyZml4Ij4gICAgCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgtbWlkZGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbmF2YmFyLW9mZmNhbnZhcyIgY2xhc3M9ImJ0biBidG4tc2hvd21lbnUgYnRuLXRoZW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtYmFycyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTYgdGV4dC1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2JldGFyb2kubHRkLyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYmV0YXJvaS5sdGQvaW1hZ2VzL2JldGFyb2ktbG9nby5wbmc/Zml0PTEyOTUlMkMzNDkmIzAzODtzc2w9MSIgYWx0PSJCZXRhcm9pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoJPGRpdiBpZD0iYXB1cy1oZWFkZXIiIGNsYXNzPSJhcHVzLWhlYWRlciB2aXNpYmxlLWxnIGhlYWRlci0yLTE3NTMiPjxkaXYgY2xhc3M9Im1haW4tc3RpY2t5LWhlYWRlciI+PHN0eWxlIGlkPSJlbGVtZW50b3ItcG9zdC0xNzUzIj4uZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWIwZDE3MTUgPiAuZWxlbWVudG9yLWNvbnRhaW5lciA+IC5lbGVtZW50b3Itcm93ID4gLmVsZW1lbnRvci1jb2x1bW4gPiAuZWxlbWVudG9yLWNvbHVtbi13cmFwID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHthbGlnbi1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7fS5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjBkMTcxNTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksIC5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjBkMTcxNSA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fS5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjBkMTcxNXtib3gtc2hhZG93OjBweCAxcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDkpO3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXIgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBib3gtc2hhZG93IDAuM3M7cGFkZGluZzowcHggMzBweCAwcHggMHB4O30uZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWIwZDE3MTUgPiAuZWxlbWVudG9yLWJhY2tncm91bmQtb3ZlcmxheXt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4zcywgYm9yZGVyLXJhZGl1cyAwLjNzLCBvcGFjaXR5IDAuM3M7fS5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDJmOTk4ZXt0ZXh0LWFsaWduOmxlZnQ7fS5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmFmYjQ3Zi5lbGVtZW50b3ItY29sdW1uID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXB7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO30uZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJhZmI0N2YgPiAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkID4gLmVsZW1lbnRvci13aWRnZXQtd3JhcHtwYWRkaW5nOjBweCAxNXB4IDBweCAxNXB4O30uZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRmOWM2YjEgLm5hdmJhci1uYXYubWVnYW1lbnUgPiBsaTpob3ZlciA+IGEsLmVsZW1lbnRvci0xNzUzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kZjljNmIxIC5uYXZiYXItbmF2Lm1lZ2FtZW51ID4gbGkuYWN0aXZlID4gYXtjb2xvcjojMDAzMDQ5O30uZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRmOWM2YjEgLm5hdmJhci1uYXYubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgbGkuY3VycmVudC1tZW51LWl0ZW0gPiBhLC5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGY5YzZiMSAubmF2YmFyLW5hdi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaS5vcGVuID4gYSwuZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRmOWM2YjEgIC5uYXZiYXItbmF2Lm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IGxpLmFjdGl2ZSA+IGEsLmVsZW1lbnRvci0xNzUzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kZjljNmIxIC5uYXZiYXItbmF2Lm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IGxpOmhvdmVyID4gYXtjb2xvcjojMDAzMDQ5O30uZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRmOWM2YjF7d2lkdGg6YXV0bzttYXgtd2lkdGg6YXV0bzt9LmVsZW1lbnRvci0xNzUzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lMWE3ZTJiID4gLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVye21hcmdpbjowcHggMzBweCAwcHggMzBweDtwYWRkaW5nOjBweCAwcHggMXB4IDMwcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowcHggMHB4IDBweCAxcHg7Ym9yZGVyLWNvbG9yOiNFOEVFRjI7fS5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTFhN2UyYnt3aWR0aDphdXRvO21heC13aWR0aDphdXRvO30uZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTk3OWYzMzYgLmJ0bi1zdWJtaXR7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6I0ZGRkZGRjtjb2xvcjojRkZGRkZGO2JhY2tncm91bmQtY29sb3I6IzI0MzM0QTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweCAxcHggMXB4IDFweDtib3JkZXItY29sb3I6IzI0MzM0QTtib3JkZXItcmFkaXVzOjUwcHggNTBweCA1MHB4IDUwcHg7cGFkZGluZzo4cHggMzBweCA4cHggMzBweDt9LmVsZW1lbnRvci0xNzUzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05NzlmMzM2IC5idG4tc3VibWl0OmhvdmVyLCAuZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTk3OWYzMzYgLmJ0bi1zdWJtaXQ6Zm9jdXN7Y29sb3I6IzI0MzM0QTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fS5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTc5ZjMzNiAuYnRuLXN1Ym1pdDpob3ZlciBzdmcsIC5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTc5ZjMzNiAuYnRuLXN1Ym1pdDpmb2N1cyBzdmd7ZmlsbDojMjQzMzRBO30uZWxlbWVudG9yLTE3NTMgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTk3OWYzMzZ7d2lkdGg6YXV0bzttYXgtd2lkdGg6YXV0bzt9QG1lZGlhKG1pbi13aWR0aDo3NjhweCl7LmVsZW1lbnRvci0xNzUzIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jMGRkZjI0e3dpZHRoOjE3Ljc2NyU7fS5lbGVtZW50b3ItMTc1MyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmFmYjQ3Znt3aWR0aDo4Mi4yMzMlO319PC9zdHlsZT4JCTxkaXYgZGF0YS1lbGVtZW50b3ItdHlwZT0id3AtcG9zdCIgZGF0YS1lbGVtZW50b3ItaWQ9IjE3NTMiIGNsYXNzPSJlbGVtZW50b3IgZWxlbWVudG9yLTE3NTMiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW5uZXIiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24td3JhcCI+CgkJCQkJCQkJCTxzZWN0aW9uIGNsYXNzPSJlbGVtZW50b3Itc2VjdGlvbiBlbGVtZW50b3ItdG9wLXNlY3Rpb24gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYjBkMTcxNSBlbGVtZW50b3Itc2VjdGlvbi1jb250ZW50LW1pZGRsZSBlbGVtZW50b3Itc2VjdGlvbi1ib3hlZCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCIgZGF0YS1pZD0iYjBkMTcxNSIgZGF0YS1lbGVtZW50X3R5cGU9InNlY3Rpb24iIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90O30iPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWRlZmF1bHQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXJvdyI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTUwIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWMwZGRmMjQiIGRhdGEtaWQ9ImMwZGRmMjQiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTQyZjk5OGUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWFwdXNfZWxlbWVudF9sb2dvIiBkYXRhLWlkPSI0MmY5OThlIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJhcHVzX2VsZW1lbnRfbG9nby5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvICI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYmV0YXJvaS5sdGQvIiA+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibG9nby1tYWluIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHdpZHRoPSIxMjk1IiBoZWlnaHQ9IjM0OSIgc3JjPSJodHRwczovL2JldGFyb2kubHRkL2ltYWdlcy9iZXRhcm9pLWxvZ28ucG5nP2ZpdD0xMjk1JTJDMzQ5JmFtcDtzc2w9MSIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwiIGFsdD0iIiBsb2FkaW5nPSJsYXp5IiBzcmNzZXQ9Imh0dHBzOi8vYmV0YXJvaS5sdGQvaW1hZ2VzL2JldGFyb2ktbG9nby5wbmc/dz0xMjk1JmFtcDtzc2w9MSAxMjk1dywgaHR0cHM6Ly9iZXRhcm9pLmx0ZC9pbWFnZXMvYmV0YXJvaS1sb2dvLnBuZz9yZXNpemU9MzAwJTJDODEmYW1wO3NzbD0xIDMwMHcsIGh0dHBzOi8vYmV0YXJvaS5sdGQvaW1hZ2VzL2JldGFyb2ktbG9nby5wbmc/cmVzaXplPTEwMjQlMkMyNzYmYW1wO3NzbD0xIDEwMjR3LCBodHRwczovL2JldGFyb2kubHRkL2ltYWdlcy9iZXRhcm9pLWxvZ28ucG5nP3Jlc2l6ZT03NjglMkMyMDcmYW1wO3NzbD0xIDc2OHciIHNpemVzPSIobWF4LXdpZHRoOiAxMjk1cHgpIDEwMHZ3LCAxMjk1cHgiIC8+ICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIAkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtNTAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYmFmYjQ3ZiIgZGF0YS1pZD0iYmFmYjQ3ZiIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZGY5YzZiMSBlbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1hcHVzX2VsZW1lbnRfcHJpbWFyeV9tZW51IiBkYXRhLWlkPSJkZjljNmIxIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJhcHVzX2VsZW1lbnRfcHJpbWFyeV9tZW51LmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYWluLW1lbnUgICI+CiAgICAgICAgICAgICAgICA8bmF2IGRhdGEtZHVyYXRpb249IjQwMCIgY2xhc3M9ImFwdXMtbWVnYW1lbnUgc2xpZGUgYW5pbWF0ZSBuYXZiYXIiIHJvbGU9Im5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIG5vLXBhZGRpbmciPgo8dWwgaWQ9InByaW1hcnktbWVudSIgY2xhc3M9Im5hdiBuYXZiYXItbmF2IG1lZ2FtZW51IGVmZmVjdDIiPgogICAgCjxsaSBjbGFzcz0iYWN0aXZlIG1lbnUtaXRlbS0zMjA2IGFsaWduZWQtbGVmdCI+PGEgaHJlZj0iP2E9aG9tZSI+SE9NRTwvYT4KPC9saT4KPGxpIGNsYXNzPSJtZW51LWl0ZW0tMzIwNyBhbGlnbmVkLWxlZnQiPjxhIGhyZWY9Ij9hPWFib3V0Ij5BQk9VVDwvYT4KPC9saT4KPGxpIGNsYXNzPSJtZW51LWl0ZW0tMzIwOSBhbGlnbmVkLWxlZnQiPjxhIGhyZWY9Ij9hPWZhcSI+RkFRPC9hPjwvbGk+CjxsaSBjbGFzcz0ibWVudS1pdGVtLTg2MzAgYWxpZ25lZC1sZWZ0Ij48YSBocmVmPSI/YT1ydWxlcyI+VEVSTVM8L2E+PC9saT4KPGxpIGNsYXNzPSJtZW51LWl0ZW0tMzIxMCBhbGlnbmVkLWxlZnQiPjxhIGhyZWY9Ij9hPXNpZ251cCI+U0lHTlVQPC9hPjwvbGk+CjxsaSBjbGFzcz0ibWVudS1pdGVtLTMyMTEgYWxpZ25lZC1sZWZ0Ij48YSBocmVmPSI/YT1sb2dpbiI+TE9HSU48L2E+PC9saT4KPGxpIGNsYXNzPSJtZW51LWl0ZW0tMzIxMiBhbGlnbmVkLWxlZnQiPjxhIGhyZWY9Ij9hPXN1cHBvcnQiPkNPTlRBQ1QgVVM8L2E+PC9saT4KCgo8L3VsPgoKPC9kaXY+ICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZTFhN2UyYiBlbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvIGVsZW1lbnRvci1oaWRkZW4tZGVza3RvcCBlbGVtZW50b3ItaGlkZGVuLXRhYmxldCBlbGVtZW50b3ItaGlkZGVuLW1vYmlsZSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtYXB1c19lbGVtZW50X3VzZXJfaW5mbyIgZGF0YS1pZD0iZTFhN2UyYiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3VzZXJfaW5mby5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLXdyYXBwZXItbWVudSBub3QtbG9naW4gIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dpbi1pY29uIj48aSBjbGFzcz0iZmxhdGljb24tdXNlciI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImJ0bi1sb2dpbiBhcHVzLXVzZXItbG9naW4iIGhyZWY9IiNhcHVzX2xvZ2luX2ZvcmdvdF9mb3JtIiB0aXRsZT0iTG9naW4iPgogICAgICAgICAgICAgICAgICAgICAgICBMb2dpbiAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3BhY2UgdGV4dC1saW5rIj4gLyA8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4tbG9naW4gcmVnaXN0ZXIgYXB1cy11c2VyLXJlZ2lzdGVyIiBocmVmPSIjYXB1c19yZWdpc3Rlcl9mb3JtIiB0aXRsZT0iUmVnaXN0ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJhcHVzX2xvZ2luX2ZvcmdvdF9mb3JtIiBjbGFzcz0iYXB1c19sb2dpbl9yZWdpc3Rlcl9mb3JtIG1mcC1oaWRlIiBkYXRhLWVmZmVjdD0iZmFkZUluIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGhpZGRlbi14cyBiYW5uZXItaW1hZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2Utd3JhcHBlciI+PGltZyB3aWR0aD0iMzkwIiBoZWlnaHQ9IjU0MCIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnMlM0QmIzAzOTtodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcmIzAzOTsgdmlld0JveCUzRCYjMDM5OzAgMCAzOTAgNTQwJiMwMzk7JTJGJTNFIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB1bnZlaWwtaW1hZ2UiIGFsdD0iIiBkYXRhLXNyYz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDIvYmctbG9naW4uanBnP2ZpdD0zOTAlMkM1NDAmYW1wO3NzbD0xIiBkYXRhLXNyY3NldD0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDIvYmctbG9naW4uanBnP3c9MzkwJmFtcDtzc2w9MSAzOTB3LCBodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wMi9iZy1sb2dpbi5qcGc/cmVzaXplPTIxNyUyQzMwMCZhbXA7c3NsPTEgMjE3dyIgZGF0YS1zaXplcz0iKG1heC13aWR0aDogMzkwcHgpIDEwMHZ3LCAzOTBweCIgLz48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC14cy0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+TG9naW48L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luLWZvcm0td3JhcHBlciI+CgkKCQkKCTxkaXYgaWQ9ImxvZ2luLWZvcm0td3JhcHBlciIgY2xhc3M9ImZvcm0tY29udGFpbmVyIGJveC13aGl0ZS1kYXNoYm9hcmQgZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciI+CgkJPGZvcm0gY2xhc3M9ImxvZ2luLWZvcm0iIGFjdGlvbj0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC8iIG1ldGhvZD0icG9zdCI+CgkJCTxkaXYgY2xhc3M9IndyYXBwZXItc29jaWFsLWxvZ2luIj48ZGl2IGNsYXNzPSJpbm5lci1zb2NpYWwiPiAgICAJPGRpdiBjbGFzcz0iZmFjZWJvb2stbG9naW4tYnRuLXdyYXBwZXIiPgogICAgCQk8YSBjbGFzcz0iZmFjZWJvb2stbG9naW4tYnRuIiBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vdjIuMTAvZGlhbG9nL29hdXRoP2NsaWVudF9pZD0xJiMwMzg7c3RhdGU9MzhmYWI5ZGVmNGE0ZmNlOWRjNDQ5ZjFkNjExNmNkMzgmIzAzODtyZXNwb25zZV90eXBlPWNvZGUmIzAzODtzZGs9cGhwLXNkay01LjYuMSYjMDM4O3JlZGlyZWN0X3VyaT1odHRwcyUzQSUyRiUyRmJldGFyb2kubHRkJTNGYWN0aW9uJTNEd3BfcmVhbGVzdGF0ZV9mYWNlYm9va19sb2dpbiYjMDM4O3Njb3BlPWVtYWlsIj48aSBjbGFzcz0iZmFiIGZhLWZhY2Vib29rLWYiPjwvaT4gTG9naW4gd2l0aCBGYWNlYm9vazwvYT4KICAgIAk8L2Rpdj4KICAgIAkgICAgICAgIDxkaXYgY2xhc3M9Imdvb2dsZS1sb2dpbi1idG4td3JhcHBlciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJnb29nbGUtbG9naW4tYnRuIiBocmVmPSJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvYXV0aD9yZXNwb25zZV90eXBlPWNvZGUmIzAzODtyZWRpcmVjdF91cmk9aHR0cHMlM0ElMkYlMkZjd2xhZ29zLmNvbSUyRiYjMDM4O2NsaWVudF9pZD0xJiMwMzg7c2NvcGU9ZW1haWwmIzAzODthY2Nlc3NfdHlwZT1vbmxpbmUmIzAzODthcHByb3ZhbF9wcm9tcHQ9YXV0byI+PGkgY2xhc3M9ImZhYiBmYS1nb29nbGUiPjwvaT4gTG9naW4gd2l0aCBHb29nbGU8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1oZWFkZXIiPjxzcGFuPm9yPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PgkJCTxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgoJCQkJPGkgY2xhc3M9ImZsYXRpY29uLXVzZXIiPjwvaT4KCQkJCTxsYWJlbCBmb3I9InVzZXJuYW1lX29yX2VtYWlsIiBjbGFzcz0iaGlkZGVuIj5Vc2VybmFtZSBPciBFbWFpbDwvbGFiZWw+CiAgICAgICAgICAgICAgICA8c3VwIGNsYXNzPSJyZXF1aXJlZC1maWVsZCI+Kjwvc3VwPgoJCQkJPGlucHV0IGF1dG9jb21wbGV0ZT0ib2ZmIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ1c2VybmFtZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9InVzZXJuYW1lX29yX2VtYWlsIiBwbGFjZWhvbGRlcj0iRW50ZXIgdXNlcm5hbWUgb3IgZW1haWwiPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CgkJCQk8aSBjbGFzcz0iZmxhdGljb24tcGFzc3dvcmQiPjwvaT4KCQkJCTxsYWJlbCBmb3I9ImxvZ2luX3Bhc3N3b3JkIiBjbGFzcz0iaGlkZGVuIj5QYXNzd29yZDwvbGFiZWw+CiAgICAgICAgICAgICAgICA8c3VwIGNsYXNzPSJyZXF1aXJlZC1maWVsZCI+Kjwvc3VwPgoJCQkJPGlucHV0IG5hbWU9InBhc3N3b3JkIiB0eXBlPSJwYXNzd29yZCIgY2xhc3M9InBhc3N3b3JkIHJlcXVpcmVkIGZvcm0tY29udHJvbCIgaWQ9ImxvZ2luX3Bhc3N3b3JkIiBwbGFjZWhvbGRlcj0iRW50ZXIgUGFzc3dvcmQiPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0icm93IHNwYWNlLTE1Ij4KCQkJCTxkaXYgY2xhc3M9ImNvbC1zbS02Ij4KCQkJCQk8bGFiZWwgZm9yPSJ1c2VyLXJlbWVtYmVyLWZpZWxkIj4KCQkJCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJyZW1lbWJlciIgaWQ9InVzZXItcmVtZW1iZXItZmllbGQiIHZhbHVlPSJ0cnVlIj4gS2VlcCBtZSBzaWduZWQgaW4JCQkJCTwvbGFiZWw+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImNvbC1zbS02IHRleHQtcmlnaHQiPgoJCQkJCTxhIGhyZWY9IiNmb3Jnb3QtcGFzc3dvcmQtZm9ybS13cmFwcGVyIiBjbGFzcz0iYmFjay1saW5rIiB0aXRsZT0iRm9yZ290IFBhc3N3b3JkIj5Mb3N0IFlvdXIgUGFzc3dvcmQ/PC9hPgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIG5vLW1hcmdpbiI+CgkJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi10aGVtZSBidG4tYmxvY2siIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkxvZ2luIi8+CgkJCQk8ZGl2IGNsYXNzPSJyZWdpc3Rlci1pbmZvIj4KCQkJCQlEb24mIzAzOTt0IHlvdSBoYXZlIGFuIGFjY291bnQ/CQkJCQk8YSBjbGFzcz0iYXB1cy11c2VyLXJlZ2lzdGVyIiBocmVmPSIjYXB1c19yZWdpc3Rlcl9mb3JtIj4KCSAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIJICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgoJCQk8L2Rpdj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlY3VyaXR5X2xvZ2luIiBuYW1lPSJzZWN1cml0eV9sb2dpbiIgdmFsdWU9Ijk1Y2Q3N2I3NDIiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX3dwX2h0dHBfcmVmZXJlciIgdmFsdWU9Ii8iIC8+CQk8L2Zvcm0+Cgk8L2Rpdj4KCTwhLS0gcmVzZXQgZm9ybSAtLT4KCTxkaXYgaWQ9ImZvcmdvdC1wYXNzd29yZC1mb3JtLXdyYXBwZXIiIGNsYXNzPSJmb3JtLWNvbnRhaW5lciI+CgkJPGZvcm0gbmFtZT0iZm9yZ290cGFzc3dvcmRmb3JtIiBjbGFzcz0iZm9yZ290cGFzc3dvcmQtZm9ybSIgYWN0aW9uPSJodHRwczovL2N3bGFnb3MuY29tL3NlY3VyZS1sb2dpbi8/YWN0aW9uPWxvc3RwYXNzd29yZCIgbWV0aG9kPSJwb3N0Ij4KCQkJPGgzPlJlc2V0IFBhc3N3b3JkPC9oMz4KCQkJPGRpdiBjbGFzcz0ibG9zdHBhc3N3b3JkLWZpZWxkcyI+CgkJCQk8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KCQkJCQk8bGFiZWwgZm9yPSJsb3N0cGFzc3dvcmRfdXNlcm5hbWUiPlVzZXJuYW1lIG9yIEUtbWFpbDwvbGFiZWw+CiAgICAgICAgICAgIAkJPHN1cCBjbGFzcz0icmVxdWlyZWQtZmllbGQiPio8L3N1cD4KCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXNlcl9sb2dpbiIgY2xhc3M9InVzZXJfbG9naW4gZm9ybS1jb250cm9sIiBpZD0ibG9zdHBhc3N3b3JkX3VzZXJuYW1lIiBwbGFjZWhvbGRlcj0iRW50ZXIgVXNlcm5hbWUgb3IgRS1tYWlsIj4KCQkJCTwvZGl2PgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlY3VyaXR5X2xvc3RwYXNzd29yZCIgbmFtZT0ic2VjdXJpdHlfbG9zdHBhc3N3b3JkIiB2YWx1ZT0iMTY2NmUzMGNmOCIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfd3BfaHR0cF9yZWZlcmVyIiB2YWx1ZT0iLyIgLz4KCQkJCQoJCQkJPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CgkJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tdGhlbWUgYnRuLWJsb2NrIiBuYW1lPSJ3cC1zdWJtaXQiIHZhbHVlPSJHZXQgTmV3IFBhc3N3b3JkIiB0YWJpbmRleD0iMTAwIiAvPgoJCQkJCTxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRhbmdlciBidG4tYmxvY2sgYnRuLWNhbmNlbCIgdmFsdWU9IkNhbmNlbCIgdGFiaW5kZXg9IjEwMSIgLz4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibG9zdHBhc3N3b3JkLWxpbmsiPjxhIGhyZWY9IiNsb2dpbi1mb3JtLXdyYXBwZXIiIGNsYXNzPSJiYWNrLWxpbmsiPkJhY2sgVG8gTG9naW48L2E+PC9kaXY+CgkJPC9mb3JtPgoJPC9kaXY+CjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJhcHVzX3JlZ2lzdGVyX2Zvcm0iIGNsYXNzPSJhcHVzX2xvZ2luX3JlZ2lzdGVyX2Zvcm0gbWZwLWhpZGUiIGRhdGEtZWZmZWN0PSJmYWRlSW4iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWxvZ2luLXJlZ2lzdGVyLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYgaGlkZGVuLXhzIGJhbm5lci1pbWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj48aW1nIHdpZHRoPSIzOTAiIGhlaWdodD0iNjYwIiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDM5MCA2NjAmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHVudmVpbC1pbWFnZSIgYWx0PSIiIGRhdGEtc3JjPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wMi9iZy1yZWdpc3Rlci5qcGc/Zml0PTM5MCUyQzY2MCZhbXA7c3NsPTEiIGRhdGEtc3Jjc2V0PSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wMi9iZy1yZWdpc3Rlci5qcGc/dz0zOTAmYW1wO3NzbD0xIDM5MHcsIGh0dHBzOi8vaTAud3AuY29tL2N3bGFnb3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzAyL2JnLXJlZ2lzdGVyLmpwZz9yZXNpemU9MTc3JTJDMzAwJmFtcDtzc2w9MSAxNzd3IiBkYXRhLXNpemVzPSIobWF4LXdpZHRoOiAzOTBweCkgMTAwdncsIDM5MHB4IiAvPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYgY29sLXhzLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXItcmlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5SZWdpc3RlcjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVnaXN0ZXItZm9ybS13cmFwcGVyIj4KICAJPGRpdiBjbGFzcz0iY29udGFpbmVyLWZvcm0iPgogICAgICAJPGZvcm0gbmFtZT0icmVnaXN0ZXJGb3JtIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJyZWdpc3Rlci1mb3JtIGJveC13aGl0ZS1kYXNoYm9hcmQgZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9ybV9pZCIgdmFsdWU9IjE3ODUxNDU0ODE0NjA4Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JtX3Rva2VuIiB2YWx1ZT0iYWY1YTNjNjE0YWI2NmFjNWNlNTNhZTIxNjFhZjJjODAiPgogICAgICAJCQoJCQk8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KCQkJCTxpIGNsYXNzPSJmbGF0aWNvbi11c2VyIj48L2k+CgkJCQk8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0idXNlcm5hbWUiIGlkPSJyZWdpc3Rlci11c2VybmFtZSIgcGxhY2Vob2xkZXI9IlVzZXIgTmFtZSI+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KCQkJCTxpIGNsYXNzPSJmbGF0aWNvbi1lbnZlbG9wZSI+PC9pPgoJCQkJPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9ImVtYWlsIiBpZD0icmVnaXN0ZXItZW1haWwiIHBsYWNlaG9sZGVyPSJFbWFpbCI+CgkJCTwvZGl2PgoKCQkJCgkJCTxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgoJCQkJPGkgY2xhc3M9ImZsYXRpY29uLXBhc3N3b3JkIj48L2k+CgkJCQk8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InBhc3N3b3JkIiBpZD0icGFzc3dvcmQiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCI+CgkJCTwvZGl2PgoKCQkJPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CgkJCQk8aSBjbGFzcz0iZmxhdGljb24tcGFzc3dvcmQiPjwvaT4KCQkJCTxpbnB1dCB0eXBlPSJwYXNzd29yZCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0iY29uZmlybXBhc3N3b3JkIiBpZD0iY29uZmlybXBhc3N3b3JkIiBwbGFjZWhvbGRlcj0iUmUtZW50ZXIgUGFzc3dvcmQiPgoJCQk8L2Rpdj4KCgkJCTxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgoJCQkJPGkgY2xhc3M9ImZsYXRpY29uLXVzZXItMSI+PC9pPgoJCQkJPHNlbGVjdCBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJyb2xlIj4KCQkJCQk8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCBSb2xlPC9vcHRpb24+CgkJCQkJPG9wdGlvbiB2YWx1ZT0ic3Vic2NyaWJlciI+VXNlcjwvb3B0aW9uPgoKCQkJCQkJCQkJCQk8b3B0aW9uIHZhbHVlPSJ3cF9yZWFsZXN0YXRlX2FnZW50Ij5BZ2VudDwvb3B0aW9uPgoJCQkJCQoJCQkJCQkJCQkJCTxvcHRpb24gdmFsdWU9IndwX3JlYWxlc3RhdGVfYWdlbmN5Ij5BZ2VuY3k8L29wdGlvbj4KCQkJCQkJCQkJPC9zZWxlY3Q+CgkJCTwvZGl2PgoKCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlY3VyaXR5X3JlZ2lzdGVyIiBuYW1lPSJzZWN1cml0eV9yZWdpc3RlciIgdmFsdWU9IjYxY2I3NmNiZWQiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX3dwX2h0dHBfcmVmZXJlciIgdmFsdWU9Ii8iIC8+CgkJCQoJICAgICAgCQoJCQk8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIG5vLW1hcmdpbiI+CgkJCQk8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tdGhlbWUgYnRuLWJsb2NrIiBuYW1lPSJzdWJtaXRSZWdpc3RlciI+CgkJCQkJU2lnbiBVcAkJCQk8L2J1dHRvbj4KCQkJPC9kaXY+CiAgICAgIAk8L2Zvcm0+CgogICAgICAJCgoJCTxkaXYgY2xhc3M9ImxvZ2luLWluZm8iPgoJCQlBbHJlYWR5IGhhdmUgYW4gYWNjb3VudD8JCQk8YSBjbGFzcz0iYXB1cy11c2VyLWxvZ2luIiBocmVmPSIjYXB1c19sb2dpbl9mb3Jnb3RfZm9ybSI+CiAgICAgICAgICAgICAgICBMb2dpbiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KCgkJCiAgICA8L2Rpdj4KPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC05NzlmMzM2IGVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWF1dG8gZWxlbWVudG9yLWhpZGRlbi1kZXNrdG9wIGVsZW1lbnRvci1oaWRkZW4tdGFibGV0IGVsZW1lbnRvci1oaWRkZW4tbW9iaWxlIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1hcHVzX2VsZW1lbnRfc3VibWl0X2J0biIgZGF0YS1pZD0iOTc5ZjMzNiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3N1Ym1pdF9idG4uZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCSAgICAgICAgPGRpdiBjbGFzcz0id2lkZ2V0LXN1Ym1pdC1idG4gIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0bi1zdWJtaXQgYnRuIHVzZXItbG9naW4tZm9ybSIgaHJlZj0iIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmbGF0aWNvbi1wbHVzIGJ1dHRvbi1pY29uIj48L3NwYW4+U3VibWl0IFByb3BlcnR5ICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIAkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9zZWN0aW9uPgoJCQkJCQkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+PC9kaXY+CTxkaXYgaWQ9ImFwdXMtbWFpbi1jb250ZW50Ij4KPHNlY3Rpb24gaWQ9Im1haW4tY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIGlubmVyIj4KCQk8ZGl2IGNsYXNzPSJyb3ciPgoJCQkJPGRpdiBpZD0ibWFpbi1jb250ZW50IiBjbGFzcz0ibWFpbi1wYWdlIGNvbC14cy0xMiBjbGVhcmZpeCI+CgkJCTxkaXYgaWQ9Im1haW4iIGNsYXNzPSJzaXRlLW1haW4gY2xlYXJmaXgiIHJvbGU9Im1haW4iPgoKCQkJCQkJPGRpdiBkYXRhLWVsZW1lbnRvci10eXBlPSJ3cC1wYWdlIiBkYXRhLWVsZW1lbnRvci1pZD0iMjMiIGNsYXNzPSJlbGVtZW50b3IgZWxlbWVudG9yLTIzIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWlubmVyIj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1zZWN0aW9uLXdyYXAiPgoJCQkJCQkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTA1Y2ZhZWUgZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSIwNWNmYWVlIiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90OywmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90OywmcXVvdDtiYWNrZ3JvdW5kX21vdGlvbl9meF9tb3Rpb25fZnhfc2Nyb2xsaW5nJnF1b3Q7OiZxdW90O3llcyZxdW90OywmcXVvdDtiYWNrZ3JvdW5kX21vdGlvbl9meF9kZXZpY2VzJnF1b3Q7OlsmcXVvdDtkZXNrdG9wJnF1b3Q7LCZxdW90O3RhYmxldCZxdW90OywmcXVvdDttb2JpbGUmcXVvdDtdfSI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItYmFja2dyb3VuZC1vdmVybGF5Ij48L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb250YWluZXIgZWxlbWVudG9yLWNvbHVtbi1nYXAtZXh0ZW5kZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXJvdyI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTEwMCBlbGVtZW50b3ItdG9wLWNvbHVtbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xYTE2OTgxIiBkYXRhLWlkPSIxYTE2OTgxIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIGVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04YTBlMzhkIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1zcGFjZXIiIGRhdGEtaWQ9IjhhMGUzOGQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InNwYWNlci5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc3BhY2VyIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXNwYWNlci1pbm5lciI+PC9kaXY+CgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNWU4Zjk2NCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iNWU4Zjk2NCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5CZXN0IEx1eHVyeSBMaXN0aW5nczwvaDI+CQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOWE0ZWE0ZSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtc3BhY2VyIiBkYXRhLWlkPSI5YTRlYTRlIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJzcGFjZXIuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXNwYWNlciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1zcGFjZXItaW5uZXIiPjwvZGl2PgoJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTFhYzY2ZTQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjFhYzY2ZTQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPldlIGhlbHAgeW91IGZpbmQgeW91ciBwbGFjZSwgaW52ZXN0IGFuZCBidWlsZCB3ZWFsdGggZ2xvYmFsbHk8L2Rpdj4JCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lYTM4ZjY3IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1zcGFjZXIiIGRhdGEtaWQ9ImVhMzhmNjciIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InNwYWNlci5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc3BhY2VyIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXNwYWNlci1pbm5lciI+PC9kaXY+CgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYzg1MGZmNyBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfc2VhcmNoX2Zvcm1fdGFicyIgZGF0YS1pZD0iYzg1MGZmNyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfc2VhcmNoX2Zvcm1fdGFicy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gIGhvcml6b250YWwgIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRhYi1qOE9LWC0wIiBjbGFzcz0idGFiLXBhbmUgZmFkZSBhY3RpdmUgaW4iPgo8Zm9ybSBtZXRob2Q9cG9zdCBuYW1lPWxvZ2luZm9ybSBvbnN1Ym1pdD0icmV0dXJuIGNoZWNrbG9naW4oKSIgY2xhc3M9ImZvcm0tc2VhcmNoIGZpbHRlci1saXN0aW5nLWZvcm0gIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JtX2lkIiB2YWx1ZT0iMTc4NTE0NTQ4MTQ2MDgiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm1fdG9rZW4iIHZhbHVlPSJhZjVhM2M2MTRhYjY2YWM1Y2U1M2FlMjE2MWFmMmM4MCI+CjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2RvX2xvZ2luJz4KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Zm9sbG93IHZhbHVlPSd7JGZybS5mb2xsb3d9Jz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaC1mb3JtLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYWluLWlubmVyIGNsZWFyZml4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtbWFpbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93IHJvdy0yMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1sb2NhdGlvbiB0YXgtc2VsZWN0LWZpZWxkIj4KICAgICAgICAKCiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cC1pbm5lciBpbm5lciBmaWVsZC1yZWdpb24gZmllbGQtcmVnaW9uMSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPXRleHQgbmFtZT11c2VybmFtZSBjbGFzcz0iZm9ybS1jb250cm9sIiBzaXplPTE1IHBsYWNlaG9sZGVyPSJFbnRlciBVc2VybmFtZSI+CiAgICAgICAgPC9kaXY+CiAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgIDwvZGl2PjwhLS0gLy5mb3JtLWdyb3VwIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtdHlwZSB0YXgtc2VsZWN0LWZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cC1pbm5lciBpbm5lciBzZWxlY3Qtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPXBhc3N3b3JkIG5hbWU9cGFzc3dvcmQgY2xhc3M9ImZvcm0tY29udHJvbCIgc2l6ZT0xNSBwbGFjZWhvbGRlcj0iRW50ZXIgUGFzc3dvcmQiPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+PCEtLSAvLmZvcm0tZ3JvdXAgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTQgZm9ybS1ncm91cCBmb3JtLWdyb3VwLXNlYXJjaCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtZW5kLWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZHZhbmNlLWxpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2E9Zm9yZ290X3Bhc3N3b3JkIiBjbGFzcz0iYWR2YW5jZS1zZWFyY2gtYnRuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNvdmVyIFBhc3N3b3JkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmxhdGljb24tbW9yZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iTG9naW4iIGNsYXNzPSJidG4tc3VibWl0IGJ0biBidG4tdGhlbWUgYnRuLWludmVyc2UiPiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtODNiMjYxNyBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtc3BhY2VyIiBkYXRhLWlkPSI4M2IyNjE3IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJzcGFjZXIuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXNwYWNlciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1zcGFjZXItaW5uZXIiPjwvZGl2PgoJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJCgkJCQk8IS0tIFRyYWRpbmdWaWV3IFdpZGdldCBCRUdJTiAtLT4KPGRpdiBjbGFzcz0idHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0idHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lcl9fd2lkZ2V0Ij48L2Rpdj4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3MzLnRyYWRpbmd2aWV3LmNvbS9leHRlcm5hbC1lbWJlZGRpbmcvZW1iZWQtd2lkZ2V0LXRpY2tlci10YXBlLmpzIiBhc3luYz4KICB7CiAgInN5bWJvbHMiOiBbCiAgICB7CiAgICAgICJwcm9OYW1lIjogIkZPUkVYQ09NOlNQWFVTRCIsCiAgICAgICJ0aXRsZSI6ICJTJlAgNTAwIgogICAgfSwKICAgIHsKICAgICAgInByb05hbWUiOiAiRk9SRVhDT006TlNYVVNEIiwKICAgICAgInRpdGxlIjogIlVTIDEwMCIKICAgIH0sCiAgICB7CiAgICAgICJwcm9OYW1lIjogIkZYX0lEQzpFVVJVU0QiLAogICAgICAidGl0bGUiOiAiRVVSL1VTRCIKICAgIH0sCiAgICB7CiAgICAgICJwcm9OYW1lIjogIkJJVFNUQU1QOkJUQ1VTRCIsCiAgICAgICJ0aXRsZSI6ICJCaXRjb2luIgogICAgfSwKICAgIHsKICAgICAgInByb05hbWUiOiAiQklUU1RBTVA6RVRIVVNEIiwKICAgICAgInRpdGxlIjogIkV0aGVyZXVtIgogICAgfQogIF0sCiAgInNob3dTeW1ib2xMb2dvIjogdHJ1ZSwKICAiY29sb3JUaGVtZSI6ICJsaWdodCIsCiAgImlzVHJhbnNwYXJlbnQiOiB0cnVlLAogICJkaXNwbGF5TW9kZSI6ICJjb21wYWN0IiwKICAibG9jYWxlIjogImVuIgp9CiAgPC9zY3JpcHQ+CjwvZGl2Pgo8IS0tIFRyYWRpbmdWaWV3IFdpZGdldCBFTkQgLS0+CgkJPC9zZWN0aW9uPgoKCgoJCQkJPHNlY3Rpb24gY2xhc3M9ImVsZW1lbnRvci1zZWN0aW9uIGVsZW1lbnRvci10b3Atc2VjdGlvbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC00ZmNhMWJlIGVsZW1lbnRvci1zZWN0aW9uLXN0cmV0Y2hlZCBlbGVtZW50b3Itc2VjdGlvbi1ib3hlZCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCIgZGF0YS1pZD0iNGZjYTFiZSIgZGF0YS1lbGVtZW50X3R5cGU9InNlY3Rpb24iIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtzdHJldGNoX3NlY3Rpb24mcXVvdDs6JnF1b3Q7c2VjdGlvbi1zdHJldGNoZWQmcXVvdDt9Ij4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbnRhaW5lciBlbGVtZW50b3ItY29sdW1uLWdhcC1leHRlbmRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itcm93Ij4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtMTAwIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWEwNjBhZTMiIGRhdGEtaWQ9ImEwNjBhZTMiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWY1NDZiMDMgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXNwYWNlciIgZGF0YS1pZD0iZjU0NmIwMyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0ic3BhY2VyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1zcGFjZXIiPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc3BhY2VyLWlubmVyIj48L2Rpdj4KCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01MDdiYjIwIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSI1MDdiYjIwIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQk8aDIgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPkJlc3QgTHV4dXJ5IExpc3RpbmdzPC9oMj4JCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zYTc3N2YzIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSIzYTc3N2YzIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5Tb21lIG9mIHRoZSBmaW5lc3QgbHV4dXJ5IGxpc3RpbmdzIGluIHRoZSBtYXJrZXQsIGhhbmRwaWNrZWQganVzdCBmb3IgeW91PC9kaXY+CQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWVmZGMzZTYgZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSJlZmRjM2U2IiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90O30iPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0xMDAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYTQ4MzRiNSIgZGF0YS1pZD0iYTQ4MzRiNSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMzI1MjU4NSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfcHJvcGVydGllcyIgZGF0YS1pZD0iMzI1MjU4NSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbHVtbnMmcXVvdDs6JnF1b3Q7NCZxdW90OywmcXVvdDtzbGlkZXNfdG9fc2Nyb2xsJnF1b3Q7OiZxdW90OzEmcXVvdDt9IiBkYXRhLXdpZGdldF90eXBlPSJhcHVzX2VsZW1lbnRfcmVhbGVzdGF0ZV9wcm9wZXJ0aWVzLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtcHJvcGVydGllcyBjYXJvdXNlbCBpdGVtLWdyaWQtdjEgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpY2stY2Fyb3VzZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWl0ZW1zPSI0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zbWFsbG1lZGl1bT0iMiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZXh0cmFzbWFsbD0iMSIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXNsaWRlc3Rvc2Nyb2xsPSIxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zbGlkZXN0b3Njcm9sbF9zbWFsbG1lZGl1bT0iMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVzdG9zY3JvbGxfZXh0cmFzbWFsbD0iMSIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXBhZ2luYXRpb249ImZhbHNlIiBkYXRhLW5hdj0idHJ1ZSIgZGF0YS1yb3dzPSIxIiBkYXRhLWluZmluaXRlPSJ0cnVlIiBkYXRhLWF1dG9wbGF5PSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTE1NzE4IHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV90eXBlLXRlcnJhY2VkIHByb3BlcnR5X2xvY2F0aW9uLWJhbmFuYS1pc2xhbmQtaWtveWkgcHJvcGVydHlfc3RhdHVzLWZvci1zYWxlIHByb3BlcnR5X2FtZW5pdHktMjRocnMtcG93ZXIgcHJvcGVydHlfYW1lbml0eS1iYWxjb255IHByb3BlcnR5X2FtZW5pdHktY2FyLXBhcmsgcHJvcGVydHlfYW1lbml0eS1jY3R2IHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWJhdGhyb29tcyBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1raXRjaGVuIHByb3BlcnR5X2FtZW5pdHktZnVsbHktZnVybmlzaGVkIHByb3BlcnR5X2FtZW5pdHktamFjdXp6aSBwcm9wZXJ0eV9hbWVuaXR5LXN3aW1taW5nLXBvb2wgcHJvcGVydHlfYW1lbml0eS13YWxrLWluLWNsb3NldCBwcm9wZXJ0eV9tYXRlcmlhbC1icmljayBwcm9wZXJ0eV9tYXRlcmlhbC1jb25jcmV0ZSBwcm9wZXJ0eV9tYXRlcmlhbC1tYXJibGUgcHJvcGVydHlfbWF0ZXJpYWwtd29vZCIgZGF0YS1sYXRpdHVkZT0iNi40NjI5NTg0IiBkYXRhLWxvbmdpdHVkZT0iMy40NTcwMjE0IiBkYXRhLWltZz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMi9EU0MwMTQ3MS5qcGc/cmVzaXplPTU0OSUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDcxLmpwZz9yZXNpemU9NTQ5JTJDNjI0JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ3MS5qcGc/cmVzaXplPTU0OSUyQzYyNCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0NzMuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDc1LmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ3Ni5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0NzguanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDc5LmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ4MC5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0ODEuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDgyLmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ4My5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0ODQuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDg1LmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ4Ni5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0ODcuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDg4LmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ4OS5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0OTAuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7XSI+CgogICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIGZsZXgtbWlkZGxlIGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltYWdlLXRodW1ibmFpbCI+CiAgICAgICAgPGEgY2xhc3M9InByb3BlcnR5LWltYWdlIiBocmVmPSIjIj4KICAgICAgICAJPGRpdiBjbGFzcz0iaW1hZ2Utd3JhcHBlciI+PGltZyBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iNTQ5IiBoZWlnaHQ9IjYyNCIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnMlM0QmIzAzOTtodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcmIzAzOTsgdmlld0JveCUzRCYjMDM5OzAgMCA1NDkgNjI0JiMwMzk7JTJGJTNFIiBjbGFzcz0iYXR0YWNobWVudC1ob21lby1wcm9wZXJ0eS1ncmlkMSBzaXplLWhvbWVvLXByb3BlcnR5LWdyaWQxIHVudmVpbC1pbWFnZSIgYWx0PSIiIGRhdGEtc3JjPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEyL0RTQzAxNDcxLmpwZz9yZXNpemU9NTQ5JTJDNjI0JmFtcDtzc2w9MSIgZGF0YS1zcmNzZXQ9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTIvRFNDMDE0NzEuanBnP3pvb209MiZhbXA7cmVzaXplPTU0OSUyQzYyNCZhbXA7c3NsPTEgMTA5OHcsIGh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTIvRFNDMDE0NzEuanBnP3pvb209MyZhbXA7cmVzaXplPTU0OSUyQzYyNCZhbXA7c3NsPTEgMTY0N3ciIGRhdGEtc2l6ZXM9IihtYXgtd2lkdGg6IDU0OXB4KSAxMDB2dywgNTQ5cHgiIC8+PC9kaXY+ICAgICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJzdGF0dXMtcHJvcGVydHktbGFiZWwiIGhyZWY9Imh0dHBzOi8vYmV0YXJvaS5sdGQvaW5kZXgucGhwP2E9c3VwcG9ydCIgc3R5bGU9IiI+Rm9yIFNhbGU8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmVkLXByb3BlcnR5Ij5GZWF0dXJlZDwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1sYWJlbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+PHNwYW4gY2xhc3M9InN1ZmZpeCI+JDwvc3Bhbj48c3BhbiBjbGFzcz0icHJpY2UtdGV4dCI+NTkzNDIyMi41MDwvc3Bhbj48L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+Q29udGVtcG9yYXJ5IDMtQmVkIFRlcnJhY2U8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMwkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+PGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJhdGhzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJNAkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTE1MDk3IHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLXRlcnJhY2VkIHByb3BlcnR5X2xvY2F0aW9uLWlrb3lpIHByb3BlcnR5X3N0YXR1cy1mb3Itc2FsZSBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1jYXItcGFyayBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1iYXRocm9vbXMgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQta2l0Y2hlbiBwcm9wZXJ0eV9hbWVuaXR5LWdhdGVkLWVzdGF0ZSBwcm9wZXJ0eV9hbWVuaXR5LWphY3V6emkgcHJvcGVydHlfYW1lbml0eS13YWxrLWluLWNsb3NldCBwcm9wZXJ0eV9hbWVuaXR5LXdhdGVyLXZpZXciIGRhdGEtbGF0aXR1ZGU9IiIgZGF0YS1sb25naXR1ZGU9IiIgZGF0YS1pbWc9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjIvMDEvRFNDMDY0NzUtc2NhbGVkLmpwZz9yZXNpemU9ODUwJTJDNTUwJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRFNDMDY0NzUtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9EU0MwNjQ3Ni1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDc3LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRFNDMDY0Nzgtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9EU0MwNjQ3OS1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDgwLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRFNDMDY0ODEtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9EU0MwNjQ4Mi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDgzLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDtdIj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgZmxleC1taWRkbGUganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtdGh1bWJuYWlsIj4KICAgICAgICA8YSBjbGFzcz0icHJvcGVydHktaW1hZ2UiIGhyZWY9IiMiPgogICAgICAgIAk8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHdpZHRoPSI4MzYiIGhlaWdodD0iOTUwIiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDgzNiA5NTAmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWhvbWVvLXByb3BlcnR5LWdyaWQxIHNpemUtaG9tZW8tcHJvcGVydHktZ3JpZDEgdW52ZWlsLWltYWdlIiBhbHQ9IkJyYW5kIE5ldyA0IEJlZHJvb20gV2F0ZXJ2aWV3IFRlcnJhY2UiIGRhdGEtc3JjPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAxL0RTQzA2NDc1LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEiIGRhdGEtc3Jjc2V0PSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAxL0RTQzA2NDc1LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEgODM2dywgaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMS9EU0MwNjQ3NS1zY2FsZWQuanBnP3pvb209MiZhbXA7cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEgMTY3MnciIGRhdGEtc2l6ZXM9IihtYXgtd2lkdGg6IDY2MHB4KSAxMDB2dywgNjYwcHgiIC8+PC9kaXY+ICAgICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJzdGF0dXMtcHJvcGVydHktbGFiZWwiIGhyZWY9Imh0dHBzOi8vYmV0YXJvaS5sdGQvaW5kZXgucGhwP2E9c3VwcG9ydCIgc3R5bGU9IiI+Rm9yIFNhbGU8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmVkLXByb3BlcnR5Ij5GZWF0dXJlZDwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+QnJhbmQgTmV3IDQgQmVkcm9vbSBXYXRlcnZpZXcgVGVycmFjZTwvYT48L2gyPiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+Cgo8L2FydGljbGU+PCEtLSAjcG9zdC0jIyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCjxhcnRpY2xlIGNsYXNzPSJtYXAtaXRlbSBwcm9wZXJ0eS1ncmlkLXYxIHByb3BlcnR5LWl0ZW0gcG9zdC0xNDg4NiBwcm9wZXJ0eSB0eXBlLXByb3BlcnR5IHN0YXR1cy1wdWJsaXNoIGhhcy1wb3N0LXRodW1ibmFpbCBoZW50cnkgcHJvcGVydHlfdHlwZS1kZXRhY2hlZCBwcm9wZXJ0eV9sb2NhdGlvbi1pa295aSBwcm9wZXJ0eV9zdGF0dXMtZm9yLXNhbGUgcHJvcGVydHlfYW1lbml0eS1iYWxjb255IHByb3BlcnR5X2FtZW5pdHktYnEgcHJvcGVydHlfYW1lbml0eS1jYXItcGFyayBwcm9wZXJ0eV9hbWVuaXR5LWNjdHYgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQtYmF0aHJvb21zIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWtpdGNoZW4gcHJvcGVydHlfYW1lbml0eS1nYXRlZC1lc3RhdGUgcHJvcGVydHlfYW1lbml0eS1neW0gcHJvcGVydHlfYW1lbml0eS1ob21lLWF1dG9tYXRpb24gcHJvcGVydHlfYW1lbml0eS1ob21lLWVudGVydGFpbm1lbnQtdW5pdCBwcm9wZXJ0eV9hbWVuaXR5LWphY3V6emkgcHJvcGVydHlfYW1lbml0eS1wcml2YXRlLWVsZXZhdG9yIHByb3BlcnR5X2FtZW5pdHktcm9vZnRvcC10ZXJyYWNlIHByb3BlcnR5X2FtZW5pdHktc3dpbW1pbmctcG9vbCBwcm9wZXJ0eV9hbWVuaXR5LXdhbGstaW4tY2xvc2V0IHByb3BlcnR5X21hdGVyaWFsLWJyaWNrIHByb3BlcnR5X21hdGVyaWFsLWNvbmNyZXRlIHByb3BlcnR5X21hdGVyaWFsLW1hcmJsZSBwcm9wZXJ0eV9tYXRlcmlhbC13b29kIiBkYXRhLWxhdGl0dWRlPSI2LjQ1NjA2MSIgZGF0YS1sb25naXR1ZGU9IjMuNDQyMjE4IiBkYXRhLWltZz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMS9EU0MwNjQ4NC5qcGc/cmVzaXplPTgwMCUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDg0LmpwZz9yZXNpemU9ODAwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9EU0MwNjQ4Ni5qcGc/cmVzaXplPTgwMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRFNDMDY0ODcuanBnP3Jlc2l6ZT04MDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDg4LmpwZz9yZXNpemU9ODAwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9EU0MwNjQ4OS5qcGc/cmVzaXplPTgwMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRFNDMDY0OTAuanBnP3Jlc2l6ZT04MDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDkxLmpwZz9yZXNpemU9ODAwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9EU0MwNjQ5Mi5qcGc/cmVzaXplPTgwMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRFNDMDY0OTMuanBnP3Jlc2l6ZT04MDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDk0LmpwZz9yZXNpemU9ODAwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9EU0MwNjQ5Ni5qcGc/cmVzaXplPTgwMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRFNDMDY0OTcuanBnP3Jlc2l6ZT04MDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDk4LmpwZz9yZXNpemU9NzMwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9EU0MwNjQ5OS5qcGc/cmVzaXplPTgwMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRFNDMDY1MDAuanBnP3Jlc2l6ZT04MDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0RTQzA2NDk1LmpwZz9yZXNpemU9ODAwJTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODAwIDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iTHV4dXJ5IDUgQmVkIERldGFjaGVkIEhvbWUiIGRhdGEtc3JjPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAxL0RTQzA2NDg0LmpwZz9yZXNpemU9ODAwJTJDOTUwJmFtcDtzc2w9MSIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC9pbmRleC5waHA/YT1zdXBwb3J0IiBzdHlsZT0iIj5Gb3IgU2FsZTwvYT4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWQtcHJvcGVydHkiPkZlYXR1cmVkPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXByaWNlIj48c3BhbiBjbGFzcz0ic3VmZml4Ij4kPC9zcGFuPjxzcGFuIGNsYXNzPSJwcmljZS10ZXh0Ij4yMjU1MDA0LjU1PC9zcGFuPjwvZGl2PiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InByb3BlcnR5LXRpdGxlIj48YSBocmVmPSIjIiByZWw9ImJvb2ttYXJrIj5MdXh1cnkgNSBCZWQgRGV0YWNoZWQgSG9tZTwvYT48L2gyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGFzIGZsZXgtbWlkZGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJlZHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQk1CQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj48ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIHdpdGgtaWNvbi10aXRsZSI+CgoJCQk8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIj4KCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ0aXRsZS1tZXRhIj4KCQkJCQkJQmF0aHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQk1CQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgo8YXJ0aWNsZSBjbGFzcz0ibWFwLWl0ZW0gcHJvcGVydHktZ3JpZC12MSBwcm9wZXJ0eS1pdGVtIHBvc3QtMTQ3NzUgcHJvcGVydHkgdHlwZS1wcm9wZXJ0eSBzdGF0dXMtcHVibGlzaCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IHByb3BlcnR5X3R5cGUtYXBhcnRtZW50IHByb3BlcnR5X3R5cGUtbWFpc29uZXR0ZSBwcm9wZXJ0eV90eXBlLXBlbnRob3VzZSBwcm9wZXJ0eV9sb2NhdGlvbi1pa295aSBwcm9wZXJ0eV9zdGF0dXMtZm9yLXNhbGUgcHJvcGVydHlfc3RhdHVzLW5ldy1kZXZlbG9wbWVudHMgcHJvcGVydHlfYW1lbml0eS0yNGhycy1wb3dlciBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1icSBwcm9wZXJ0eV9hbWVuaXR5LWNhci1wYXJrIHByb3BlcnR5X2FtZW5pdHktY2N0diBwcm9wZXJ0eV9hbWVuaXR5LWNpbmVtYSBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1iYXRocm9vbXMgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQta2l0Y2hlbiBwcm9wZXJ0eV9hbWVuaXR5LWZ1bGx5LWZ1cm5pc2hlZCBwcm9wZXJ0eV9hbWVuaXR5LWdhdGVkLWVzdGF0ZSBwcm9wZXJ0eV9hbWVuaXR5LWdvbGYtY291cnNlLXZpZXcgcHJvcGVydHlfYW1lbml0eS1neW0gcHJvcGVydHlfYW1lbml0eS1ob21lLWF1dG9tYXRpb24gcHJvcGVydHlfYW1lbml0eS1ob21lLWVudGVydGFpbm1lbnQtdW5pdCBwcm9wZXJ0eV9hbWVuaXR5LWphY3V6emkgcHJvcGVydHlfYW1lbml0eS1wcml2YXRlLWVsZXZhdG9yIHByb3BlcnR5X2FtZW5pdHktcm9vZnRvcC10ZXJyYWNlIHByb3BlcnR5X2FtZW5pdHktc2F1bmEgcHJvcGVydHlfYW1lbml0eS1zd2ltbWluZy1wb29sIHByb3BlcnR5X2FtZW5pdHktd2Fsay1pbi1jbG9zZXQgcHJvcGVydHlfYW1lbml0eS13YXRlci12aWV3IHByb3BlcnR5X2FtZW5pdHktd2lmaSBwcm9wZXJ0eV9tYXRlcmlhbC1icmljayBwcm9wZXJ0eV9tYXRlcmlhbC1jb25jcmV0ZSBwcm9wZXJ0eV9tYXRlcmlhbC1tYXJibGUgcHJvcGVydHlfbWF0ZXJpYWwtd29vZCIgZGF0YS1sYXRpdHVkZT0iNi40NTYwNjEiIGRhdGEtbG9uZ2l0dWRlPSIzLjQ0MjIxOCIgZGF0YS1pbWc9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjIvMDEvU2NyZWVuLVNob3QtMjAyMS0xMi0wOS1hdC0yLjQxLjE2LVBNLmpwZz9yZXNpemU9NzQzJTJDNDgxJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvU2NyZWVuLVNob3QtMjAyMS0xMi0wOS1hdC0yLjQxLjE2LVBNLmpwZz9yZXNpemU9NDIzJTJDNDgxJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9TY3JlZW4tU2hvdC0yMDIxLTEyLTA5LWF0LTIuMzMuMjYtUE0uanBnP3Jlc2l6ZT0zNjMlMkM0MTImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL1NjcmVlbi1TaG90LTIwMjEtMTItMDktYXQtMi4zOC4zMy1QTS5qcGc/cmVzaXplPTgzNiUyQzQ4MSZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvU2NyZWVuLVNob3QtMjAyMS0xMi0wOS1hdC0yLjM5LjIzLVBNLmpwZz9yZXNpemU9ODM2JTJDNDgzJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9TY3JlZW4tU2hvdC0yMDIxLTEyLTA5LWF0LTIuNDMuNDgtUE0uanBnP3Jlc2l6ZT00MjIlMkM0ODAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0JhbWJvby5qcGc/cmVzaXplPTM4MCUyQzQzMiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvQmF0aC0yLmpwZz9yZXNpemU9MzgwJTJDNDMyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9CYXRoLTQuanBnP3Jlc2l6ZT0zODAlMkM0MzImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0JhdGguanBnP3Jlc2l6ZT0zODAlMkM0MzImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0JlZHJvb20tMy5qcGc/cmVzaXplPTM4MCUyQzQzMiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvQmVkcm9vbS5qcGc/cmVzaXplPTM4MCUyQzQzMiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvQmVsbW9udGUtTGl2aW5nLVJvb20uanBnP3Jlc2l6ZT0zODAlMkM0MzImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0JlbG1vbnRlLmpwZz9yZXNpemU9MzgwJTJDNDMyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9CZWxtb3RlLWJpZy1saXZpbmctcm9vbS5qcGc/cmVzaXplPTM4MCUyQzQzMiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvU2NyZWVuLVNob3QtMjAyMS0xMi0wOS1hdC0yLjI4LjI4LVBNLmpwZz9yZXNpemU9NDE5JTJDNDc2JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9Db3JyaWRvci5qcGc/cmVzaXplPTM4MCUyQzQzMiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wMVwvRGluaW5nLXJvb20uanBnP3Jlc2l6ZT0zODAlMkM0MzImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0tpdGNoZW4uanBnP3Jlc2l6ZT0zODAlMkM0MzImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL0xhcmdlLWxpdmluZy1yb29tLmpwZz9yZXNpemU9MzgwJTJDNDMyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9MaXZpbmctdG9vbS0yLmpwZz9yZXNpemU9MzgwJTJDNDMyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAxXC9TZWNvbmQtbGl2aW5nLXJvb20uanBnP3Jlc2l6ZT0zODAlMkM0MzImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDFcL3N0dWR5LmpwZz9yZXNpemU9MzgwJTJDNDMyJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjQyMyIgaGVpZ2h0PSI0ODEiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgNDIzIDQ4MSYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iIiBkYXRhLXNyYz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMS9TY3JlZW4tU2hvdC0yMDIxLTEyLTA5LWF0LTIuNDEuMTYtUE0uanBnP3Jlc2l6ZT00MjMlMkM0ODEmYW1wO3NzbD0xIiBkYXRhLXNyY3NldD0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMS9TY3JlZW4tU2hvdC0yMDIxLTEyLTA5LWF0LTIuNDEuMTYtUE0uanBnP3pvb209MiZhbXA7cmVzaXplPTQyMyUyQzQ4MSZhbXA7c3NsPTEgODQ2dywgaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMS9TY3JlZW4tU2hvdC0yMDIxLTEyLTA5LWF0LTIuNDEuMTYtUE0uanBnP3pvb209MyZhbXA7cmVzaXplPTQyMyUyQzQ4MSZhbXA7c3NsPTEgMTI2OXciIGRhdGEtc2l6ZXM9IihtYXgtd2lkdGg6IDQyM3B4KSAxMDB2dywgNDIzcHgiIC8+PC9kaXY+ICAgICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJzdGF0dXMtcHJvcGVydHktbGFiZWwiIGhyZWY9Imh0dHBzOi8vYmV0YXJvaS5sdGQvaW5kZXgucGhwP2E9c3VwcG9ydCIgc3R5bGU9IiI+Rm9yIFNhbGU8L2E+CiAgICAgICAgCSAgICAgICAgICAgIAk8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSJodHRwczovL2h0dHBzOi8vYmV0YXJvaS5sdGQvaW5kZXgucGhwP2E9c3VwcG9ydCIgc3R5bGU9IiI+TmV3IERldmVsb3BtZW50czwvYT4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWQtcHJvcGVydHkiPkZlYXR1cmVkPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InByb3BlcnR5LXRpdGxlIj48YSBocmVmPSIjIiByZWw9ImJvb2ttYXJrIj5VbHRyYS1MdXh1cnkgUmVzaWRlbmNlczwvYT48L2gyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGFzIGZsZXgtbWlkZGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJlZHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQk1CQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgo8YXJ0aWNsZSBjbGFzcz0ibWFwLWl0ZW0gcHJvcGVydHktZ3JpZC12MSBwcm9wZXJ0eS1pdGVtIHBvc3QtMTM4NzYgcHJvcGVydHkgdHlwZS1wcm9wZXJ0eSBzdGF0dXMtcHVibGlzaCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IHByb3BlcnR5X3R5cGUtZGV0YWNoZWQgcHJvcGVydHlfbG9jYXRpb24taWRhZG8gcHJvcGVydHlfbG9jYXRpb24tbGVra2kgcHJvcGVydHlfc3RhdHVzLWZvci1zYWxlIHByb3BlcnR5X2FtZW5pdHktYmFsY29ueSBwcm9wZXJ0eV9hbWVuaXR5LWJxIHByb3BlcnR5X2FtZW5pdHktY2FyLXBhcmsgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQtYmF0aHJvb21zIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWtpdGNoZW4gcHJvcGVydHlfYW1lbml0eS1mdWxseS1mdXJuaXNoZWQgcHJvcGVydHlfYW1lbml0eS1nYXRlZC1lc3RhdGUgcHJvcGVydHlfYW1lbml0eS1ob21lLWVudGVydGFpbm1lbnQtdW5pdCBwcm9wZXJ0eV9hbWVuaXR5LWphY3V6emkgcHJvcGVydHlfYW1lbml0eS13YWxrLWluLWNsb3NldCBwcm9wZXJ0eV9tYXRlcmlhbC1icmljayBwcm9wZXJ0eV9tYXRlcmlhbC1jb25jcmV0ZSBwcm9wZXJ0eV9tYXRlcmlhbC1tYXJibGUgcHJvcGVydHlfbWF0ZXJpYWwtd29vZCIgZGF0YS1sYXRpdHVkZT0iNi41ODk2NDQ4IiBkYXRhLWxvbmdpdHVkZT0iMy4zNDU2MTI4IiBkYXRhLWltZz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMi9EU0MwMTg0NS5qcGc/cmVzaXplPTg1MCUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxODQ1LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTgzNy5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE4NDAuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxODQxLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTg0My5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE4NDQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxODQ1LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTg0Ny5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE4NDguanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxODQ5LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTg1MC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE4NTEuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxODUyLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTg1My5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE4NTQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxODU1LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTg1Ni5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE4NTcuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxODU4LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTg1OS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE4NjAuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7XSI+CgogICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIGZsZXgtbWlkZGxlIGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltYWdlLXRodW1ibmFpbCI+CiAgICAgICAgPGEgY2xhc3M9InByb3BlcnR5LWltYWdlIiBocmVmPSIjIj4KICAgICAgICAJPGRpdiBjbGFzcz0iaW1hZ2Utd3JhcHBlciI+PGltZyBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iODM2IiBoZWlnaHQ9Ijk1MCIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnMlM0QmIzAzOTtodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcmIzAzOTsgdmlld0JveCUzRCYjMDM5OzAgMCA4MzYgOTUwJiMwMzk7JTJGJTNFIiBjbGFzcz0iYXR0YWNobWVudC1ob21lby1wcm9wZXJ0eS1ncmlkMSBzaXplLWhvbWVvLXByb3BlcnR5LWdyaWQxIHVudmVpbC1pbWFnZSIgYWx0PSIiIGRhdGEtc3JjPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEyL0RTQzAxODQ1LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC9pbmRleC5waHA/YT1zdXBwb3J0IiBzdHlsZT0iIj5Gb3IgU2FsZTwvYT4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWQtcHJvcGVydHkiPkZlYXR1cmVkPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXByaWNlIj48c3BhbiBjbGFzcz0ic3VmZml4Ij4kPC9zcGFuPjxzcGFuIGNsYXNzPSJwcmljZS10ZXh0Ij40MzkxMzIuNDc8L3NwYW4+PC9kaXY+ICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icHJvcGVydHktdGl0bGUiPjxhIGhyZWY9IiMiIHJlbD0iYm9va21hcmsiPkx1eHVyeSA1LUJlZCBIb21lPC9hPjwvaDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YXMgZmxleC1taWRkbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIHdpdGgtaWNvbi10aXRsZSI+CgoJCQk8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIj4KCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ0aXRsZS1tZXRhIj4KCQkJCQkJQmVkczoJCQkJCTwvc3Bhbj4KCQkJCQoJCQkJCQkJCTUJCQkJCQkJPC9kaXY+CgoJCTwvZGl2PjxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCYXRoczoJCQkJCTwvc3Bhbj4KCQkJCQoJCQkJCQkJCTYJCQkJCQkJPC9kaXY+CgoJCTwvZGl2PiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+Cgo8L2FydGljbGU+PCEtLSAjcG9zdC0jIyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCjxhcnRpY2xlIGNsYXNzPSJtYXAtaXRlbSBwcm9wZXJ0eS1ncmlkLXYxIHByb3BlcnR5LWl0ZW0gcG9zdC0xMzIzOCBwcm9wZXJ0eSB0eXBlLXByb3BlcnR5IHN0YXR1cy1wdWJsaXNoIGhhcy1wb3N0LXRodW1ibmFpbCBoZW50cnkgcHJvcGVydHlfdHlwZS1hcGFydG1lbnQgcHJvcGVydHlfdHlwZS1wZW50aG91c2UgcHJvcGVydHlfbG9jYXRpb24taWtveWkgcHJvcGVydHlfc3RhdHVzLWZvci1zYWxlIHByb3BlcnR5X2FtZW5pdHktMjRocnMtcG93ZXIgcHJvcGVydHlfYW1lbml0eS1iYWxjb255IHByb3BlcnR5X2FtZW5pdHktYnEgcHJvcGVydHlfYW1lbml0eS1jYXItcGFyayBwcm9wZXJ0eV9hbWVuaXR5LWNjdHYgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQtYmF0aHJvb21zIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWtpdGNoZW4gcHJvcGVydHlfYW1lbml0eS1mdWxseS1mdXJuaXNoZWQgcHJvcGVydHlfYW1lbml0eS1nYXRlZC1lc3RhdGUgcHJvcGVydHlfYW1lbml0eS1neW0gcHJvcGVydHlfYW1lbml0eS1ob21lLWVudGVydGFpbm1lbnQtdW5pdCBwcm9wZXJ0eV9hbWVuaXR5LWphY3V6emkgcHJvcGVydHlfYW1lbml0eS1zd2ltbWluZy1wb29sIHByb3BlcnR5X2FtZW5pdHktd2Fsay1pbi1jbG9zZXQgcHJvcGVydHlfbWF0ZXJpYWwtYnJpY2sgcHJvcGVydHlfbWF0ZXJpYWwtY29uY3JldGUgcHJvcGVydHlfbWF0ZXJpYWwtbWFyYmxlIHByb3BlcnR5X21hdGVyaWFsLXdvb2QiIGRhdGEtbGF0aXR1ZGU9IjYuNDU2MDYxIiBkYXRhLWxvbmdpdHVkZT0iMy40NDIyMTgiIGRhdGEtaW1nPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzExL0RTQzAwNzk5LTEuanBnP3Jlc2l6ZT04NTAlMkM1NTAmIzAzODtzc2w9MSIgZGF0YS1pbWFnZXM9IlsmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDc5OS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwMC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwOS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgyMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwNS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgyMy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwMi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgyNi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgyNy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzMC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzMi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzNC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzNS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzOC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwMy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwNC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwNi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwNy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwOC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxMy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxNC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxNy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxNi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxNS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxOS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxOC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODM2IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iIiBkYXRhLXNyYz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwMDc5OS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSIgZGF0YS1zcmNzZXQ9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvRFNDMDA3OTktMS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEgODM2dywgaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwMDc5OS0xLmpwZz96b29tPTImYW1wO3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIDE2NzJ3IiBkYXRhLXNpemVzPSIobWF4LXdpZHRoOiA2NjBweCkgMTAwdncsIDY2MHB4IiAvPjwvZGl2PiAgICAgICAgPC9hPgogICAgPC9kaXY+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3AtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSJodHRwczovL2JldGFyb2kubHRkL2luZGV4LnBocD9hPXN1cHBvcnQiIHN0eWxlPSIiPkZvciBTYWxlPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlZC1wcm9wZXJ0eSI+RmVhdHVyZWQ8L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3R0b20tbGFiZWwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktcHJpY2UiPjxzcGFuIGNsYXNzPSJzdWZmaXgiPiQ8L3NwYW4+PHNwYW4gY2xhc3M9InByaWNlLXRleHQiPjk0OTQ3NS42MDwvc3Bhbj48L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+THV4dXJ5IDUtQmVkIFBlbnRob3VzZTwvYT48L2gyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGFzIGZsZXgtbWlkZGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJlZHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQk1CQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj48ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIHdpdGgtaWNvbi10aXRsZSI+CgoJCQk8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIj4KCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ0aXRsZS1tZXRhIj4KCQkJCQkJQmF0aHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQk1CQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgo8YXJ0aWNsZSBjbGFzcz0ibWFwLWl0ZW0gcHJvcGVydHktZ3JpZC12MSBwcm9wZXJ0eS1pdGVtIHBvc3QtMTI1NzEgcHJvcGVydHkgdHlwZS1wcm9wZXJ0eSBzdGF0dXMtcHVibGlzaCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IHByb3BlcnR5X3R5cGUtYXBhcnRtZW50IHByb3BlcnR5X2xvY2F0aW9uLXZpY3RvcmlhLWlzbGFuZCBwcm9wZXJ0eV9zdGF0dXMtZm9yLXNhbGUgcHJvcGVydHlfYW1lbml0eS0yNGhycy1wb3dlciBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1icSBwcm9wZXJ0eV9hbWVuaXR5LWNhci1wYXJrIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWJhdGhyb29tcyBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1raXRjaGVuIHByb3BlcnR5X2FtZW5pdHktZ3ltIHByb3BlcnR5X2FtZW5pdHktc2F1bmEgcHJvcGVydHlfYW1lbml0eS1zd2ltbWluZy1wb29sIHByb3BlcnR5X2FtZW5pdHktd2Fsay1pbi1jbG9zZXQgcHJvcGVydHlfYW1lbml0eS13YXRlci12aWV3IHByb3BlcnR5X2FtZW5pdHktd2lmaSIgZGF0YS1sYXRpdHVkZT0iIiBkYXRhLWxvbmdpdHVkZT0iIiBkYXRhLWltZz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvREpJXzAwMTQtc2NhbGVkLmpwZz9yZXNpemU9ODUwJTJDNTUwJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9ESklfMDAxNC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0xMi1hdC00LjI1LjU2LVBNLTMuanBlZz9yZXNpemU9ODM2JTJDNzE5JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMTItYXQtNC4yOS4zNy1QTS04LmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTEyLWF0LTQuMjkuMzctUE0tNi5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvTUdfODI0My1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvTUdfODI0NS1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0xMi1hdC00LjI1LjU2LVBNLmpwZWc/cmVzaXplPTgzNiUyQzcxOSZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjQ3LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjQ5LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjUwLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjUxLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjUyLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjUzLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjU1LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjU3LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjU5LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjYwLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjYxLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjY0LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjY5LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjcwLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9NR184MjcxLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9ESklfMDAxMS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9ESklfMDAxMi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvREpJXzAwMTMtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMTItYXQtNC4yOS4zNy1QTS03LmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDtdIj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgZmxleC1taWRkbGUganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtdGh1bWJuYWlsIj4KICAgICAgICA8YSBjbGFzcz0icHJvcGVydHktaW1hZ2UiIGhyZWY9IiMiPgogICAgICAgIAk8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHdpZHRoPSI4MzYiIGhlaWdodD0iOTUwIiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDgzNiA5NTAmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWhvbWVvLXByb3BlcnR5LWdyaWQxIHNpemUtaG9tZW8tcHJvcGVydHktZ3JpZDEgdW52ZWlsLWltYWdlIiBhbHQ9IkV4dGVyaW9yIFZpZXciIGRhdGEtc3JjPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9ESklfMDAxNC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIiBkYXRhLXNyY3NldD0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvREpJXzAwMTQtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSA4MzZ3LCBodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9ESklfMDAxNC1zY2FsZWQuanBnP3pvb209MiZhbXA7cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEgMTY3MncsIGh0dHBzOi8vaTAud3AuY29tL2N3bGFnb3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzExL0RKSV8wMDE0LXNjYWxlZC5qcGc/em9vbT0zJmFtcDtyZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSAyNTA4dyIgZGF0YS1zaXplcz0iKG1heC13aWR0aDogNjYwcHgpIDEwMHZ3LCA2NjBweCIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC9pbmRleC5waHA/YT1zdXBwb3J0IiBzdHlsZT0iIj5Gb3IgU2FsZTwvYT4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWQtcHJvcGVydHkiPkZlYXR1cmVkPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXByaWNlIj5QcmljZSBVcG9uIFJlcXVlc3Q8L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+VXBzY2FsZSAzIEJlZHJvb20gQXBhcnRtZW50PC9hPjwvaDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YXMgZmxleC1taWRkbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIHdpdGgtaWNvbi10aXRsZSI+CgoJCQk8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIj4KCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ0aXRsZS1tZXRhIj4KCQkJCQkJQmVkczoJCQkJCTwvc3Bhbj4KCQkJCQoJCQkJCQkJCTMJCQkJCQkJPC9kaXY+CgoJCTwvZGl2PjxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCYXRoczoJCQkJCTwvc3Bhbj4KCQkJCQoJCQkJCQkJCTMJCQkJCQkJPC9kaXY+CgoJCTwvZGl2PjxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlzcW06CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQkyMDBzcW0JCQkJCQkJPC9kaXY+CgoJCTwvZGl2PiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+Cgo8L2FydGljbGU+PCEtLSAjcG9zdC0jIyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCjxhcnRpY2xlIGNsYXNzPSJtYXAtaXRlbSBwcm9wZXJ0eS1ncmlkLXYxIHByb3BlcnR5LWl0ZW0gcG9zdC0xMjA5MiBwcm9wZXJ0eSB0eXBlLXByb3BlcnR5IHN0YXR1cy1wdWJsaXNoIGhhcy1wb3N0LXRodW1ibmFpbCBoZW50cnkgcHJvcGVydHlfdHlwZS1kZXRhY2hlZCBwcm9wZXJ0eV9sb2NhdGlvbi1pa290YSBwcm9wZXJ0eV9zdGF0dXMtZm9yLXNhbGUgcHJvcGVydHlfYW1lbml0eS0yNGhycy1wb3dlciBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1icSBwcm9wZXJ0eV9hbWVuaXR5LWNhci1wYXJrIHByb3BlcnR5X2FtZW5pdHktY2N0diBwcm9wZXJ0eV9hbWVuaXR5LWNpbmVtYSBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1iYXRocm9vbXMgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQta2l0Y2hlbiBwcm9wZXJ0eV9hbWVuaXR5LWdhdGVkLWVzdGF0ZSBwcm9wZXJ0eV9hbWVuaXR5LWhvbWUtYXV0b21hdGlvbiBwcm9wZXJ0eV9hbWVuaXR5LWhvbWUtZW50ZXJ0YWlubWVudC11bml0IHByb3BlcnR5X2FtZW5pdHktamFjdXp6aSBwcm9wZXJ0eV9hbWVuaXR5LXByaXZhdGUtY2luZW1hIHByb3BlcnR5X2FtZW5pdHktcm9vZnRvcC10ZXJyYWNlIHByb3BlcnR5X2FtZW5pdHktc3dpbW1pbmctcG9vbCBwcm9wZXJ0eV9hbWVuaXR5LXdhbGstaW4tY2xvc2V0IHByb3BlcnR5X2FtZW5pdHktd2F0ZXItdmlldyBwcm9wZXJ0eV9tYXRlcmlhbC1icmljayBwcm9wZXJ0eV9tYXRlcmlhbC1jb25jcmV0ZSBwcm9wZXJ0eV9tYXRlcmlhbC1tYXJibGUgcHJvcGVydHlfbWF0ZXJpYWwtd29vZCIgZGF0YS1sYXRpdHVkZT0iNi40NDczMzA1IiBkYXRhLWxvbmdpdHVkZT0iMy41NDk1Nzg1IiBkYXRhLWltZz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9ESklfMDg2OC1zY2FsZWQuanBnP3Jlc2l6ZT04NTAlMkM1NTAmIzAzODtzc2w9MSIgZGF0YS1pbWFnZXM9IlsmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9ESklfMDg2OC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA5OTQ1LTItc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwOTkyNC0xLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDk5MjUtMS1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA5OTI3LTEtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwOTkyOS0yLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDk5MzQtMi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA5OTM1LTItc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwOTkzNi0yLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDk5MzctMi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA5OTM4LTItc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwOTk0MC0yLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDk5NDEtMi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA5OTQyLTItc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwOTk0My0yLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDk5NDQtMi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA5OTQ2LTItc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwOTk0Ny0yLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDk5NDktMi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RKSV8wODcwLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODM2IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iTHV4dXJ5IDUgQmVkcm9vbSBIb3VzZSIgZGF0YS1zcmM9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvREpJXzA4Njgtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSIgZGF0YS1zcmNzZXQ9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvREpJXzA4Njgtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSA4MzZ3LCBodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzExL0RKSV8wODY4LXNjYWxlZC5qcGc/em9vbT0yJmFtcDtyZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSAxNjcydywgaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9ESklfMDg2OC1zY2FsZWQuanBnP3pvb209MyZhbXA7cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEgMjUwOHciIGRhdGEtc2l6ZXM9IihtYXgtd2lkdGg6IDY2MHB4KSAxMDB2dywgNjYwcHgiIC8+PC9kaXY+ICAgICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJzdGF0dXMtcHJvcGVydHktbGFiZWwiIGhyZWY9Imh0dHBzOi8vYmV0YXJvaS5sdGQvaW5kZXgucGhwP2E9c3VwcG9ydCIgc3R5bGU9IiI+Rm9yIFNhbGU8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmVkLXByb3BlcnR5Ij5GZWF0dXJlZDwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1sYWJlbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+PHNwYW4gY2xhc3M9InN1ZmZpeCI+JDwvc3Bhbj48c3BhbiBjbGFzcz0icHJpY2UtdGV4dCI+NzU5NTgwLjQ4PC9zcGFuPjwvZGl2PiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InByb3BlcnR5LXRpdGxlIj48YSBocmVmPSIjIiByZWw9ImJvb2ttYXJrIj5MdXh1cnkgNSBCZWRyb29tIEhvbWU8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJNQkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+PGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJhdGhzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJNgkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CQoJCQoJCQkJPHNlY3Rpb24gY2xhc3M9ImVsZW1lbnRvci1zZWN0aW9uIGVsZW1lbnRvci10b3Atc2VjdGlvbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC00ZWNkNTBjIGVsZW1lbnRvci1zZWN0aW9uLXN0cmV0Y2hlZCBlbGVtZW50b3Itc2VjdGlvbi1ib3hlZCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCIgZGF0YS1pZD0iNGVjZDUwYyIgZGF0YS1lbGVtZW50X3R5cGU9InNlY3Rpb24iIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtzdHJldGNoX3NlY3Rpb24mcXVvdDs6JnF1b3Q7c2VjdGlvbi1zdHJldGNoZWQmcXVvdDssJnF1b3Q7YmFja2dyb3VuZF9iYWNrZ3JvdW5kJnF1b3Q7OiZxdW90O2NsYXNzaWMmcXVvdDt9Ij4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXkiPjwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbnRhaW5lciBlbGVtZW50b3ItY29sdW1uLWdhcC1leHRlbmRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itcm93Ij4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtNTAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMWJiYmU1OSIgZGF0YS1pZD0iMWJiYmU1OSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7fSI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZmY1ZWM4YSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iZmY1ZWM4YSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5BYm91dCBVUzwvaDI+CQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZGE5MWJiMiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IiIGRhdGEtaWQ9ImRhOTFiYjIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InRleHQtZWRpdG9yLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci10ZXh0LWVkaXRvciBlbGVtZW50b3ItY2xlYXJmaXgiPgoJCQkJPHA+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij5CRVRBUk9JICB3YXMgZm91bmRlZCBvbiBhIGRyZWFtIHRvIGRvIHJlYWwgZXN0YXRlLCBwcm9wZXJ0eSBhbmQgc3RvY2sgSW52ZXN0bWVudHMgYXMgd2VsbCBhcyBDcnlwdG8gSW52ZXN0bWVudCBlc3BlY2lhbGx5IGluIEJpdGNvaW4gYW5kIEV0aGVyZXVtIGRpZmZlcmVudCBhbmQgYmV0dGVyLiBUb2RheSBhcyAgdGhlIHdvcmxkIGxlYWRpbmcgQ3J5cHRvIEludmVzdG1lbnQgY29tcGFueSBhbmQgIHJlYWwgZXN0YXRlIG1hcmtldGluZyAmIGJyb2tlcmFnZSBmaXJtLCB3ZSBmdXNlIGdsb2JhbCBzdGFuZGFyZHMgYW5kIGV4cGVyaWVuY2Ugd2l0aCBoaWdoIGxldmVsIG9mICBleHBlcnRpc2UgdG8gaGVscCBwZW9wbGUgZmluZCB0aGVpciBkcmVhbSBJbnZlc3RtZW50IHBsYXRmb3JtIGEgcGxhY2Ugd2hlcmUgdGhlIGNhbiAgaW52ZXN0IGFzIGxvdyBhcyAkMTAwIGFuZCBlYXJuIGdyZWF0bHkgYW5kIG1hc3NpdmVseSBmcm9tIHRoZWlyIGludmVzdG1lbnRzIGluIHRoZSBjb21wYW55Ljwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij5UaGUgbWFpbiBhY3Rpdml0eSBvZiBvdXIgY29tcGFueSBpcyBjcnlwdG9jdXJyZW5jeSBtaW5pbmcsIGxvYW4sIHRyYWRpbmcgb24gc3RvY2tzLCBnb2xkcywgb2lsLCBjb21tb2RpdGllcyBhbmQgZm9yZXggaW4gdGhlIGZvcmVpZ24gZXhjaGFuZ2UgbWFya2V0Ljwvc3Bhbj48L3A+CQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWQ4MWUxYjMgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWJ1dHRvbiIgZGF0YS1pZD0iZDgxZTFiMyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYnV0dG9uLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1idXR0b24td3JhcHBlciI+CgkJCTxhIGhyZWY9Ij9hPWFib3V0IiBjbGFzcz0iZWxlbWVudG9yLWJ1dHRvbi1saW5rIGVsZW1lbnRvci1idXR0b24gZWxlbWVudG9yLXNpemUtbWQiIHJvbGU9ImJ1dHRvbiI+CgkJCQkJCTxzcGFuIGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLWNvbnRlbnQtd3JhcHBlciI+CgkJCQkJCTxzcGFuIGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLXRleHQiPlJlYWQgTW9yZTwvc3Bhbj4KCQk8L3NwYW4+CgkJCQkJPC9hPgoJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtNTAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOTgxNmU2NiBlbGVtZW50b3ItaGlkZGVuLXRhYmxldCBlbGVtZW50b3ItaGlkZGVuLXBob25lIiBkYXRhLWlkPSI5ODE2ZTY2IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9zZWN0aW9uPgkJCgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTJiNDAwYmMgZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQiIGRhdGEtaWQ9IjJiNDAwYmMiIGRhdGEtZWxlbWVudF90eXBlPSJzZWN0aW9uIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbnRhaW5lciBlbGVtZW50b3ItY29sdW1uLWdhcC1kZWZhdWx0Ij4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0xMDAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMzIzYTQwMyIgZGF0YS1pZD0iMzIzYTQwMyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNmVhYjhjNSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iNmVhYjhjNSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5XZSBTZXQgdGhlIFJlY29yZHM8L2gyPgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWZhOWFjYmUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9ImZhOWFjYmUiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPk91ciBudW1iZXJzIGJhY2sgb3VyIHdvcmRzPC9kaXY+CQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CgkJCgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTA2N2M0ODMgZWxlbWVudG9yLXNlY3Rpb24tZnVsbF93aWR0aCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCIgZGF0YS1pZD0iMDY3YzQ4MyIgZGF0YS1lbGVtZW50X3R5cGU9InNlY3Rpb24iIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtzaGFwZV9kaXZpZGVyX2JvdHRvbSZxdW90OzomcXVvdDt6aWd6YWcmcXVvdDt9Ij4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc2hhcGUgZWxlbWVudG9yLXNoYXBlLWJvdHRvbSIgZGF0YS1uZWdhdGl2ZT0iZmFsc2UiPgoJCQk8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE4MDAgNS44IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4KICA8cGF0aCBjbGFzcz0iZWxlbWVudG9yLXNoYXBlLWZpbGwiIGQ9Ik01LjQuNGw1LjQgNS4zTDE2LjUuNGw1LjQgNS4zTDI3LjUuNCAzMyA1LjcgMzguNi40bDUuNSA1LjRoLjFMNDkuOS40bDUuNCA1LjNMNjAuOS40bDUuNSA1LjNMNzIgLjRsNS41IDUuM0w4My4xLjRsNS40IDUuM0w5NC4xLjRsNS41IDUuNGguMmw1LjYtNS40IDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjJsNS42LTUuNCA1LjQgNS4zTDE2MSAuNGw1LjQgNS4zTDE3MiAuNGw1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjctNS4zIDUuNCA1LjRoLjJsNS42LTUuNCA1LjUgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNCA1LjMgNS42LTUuMyA1LjUgNS40aC4ybDUuNi01LjQgNS41IDUuM0wyNjEgLjRsNS40IDUuM0wyNzIgLjRsNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS40aC4xbDUuNy01LjQgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNy01LjMgNS40IDUuNGguMmw1LjYtNS40IDUuNSA1LjNMMzYxIC40bDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjFsNS43LTUuNCA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS40aC4xbDUuNi01LjQgNS41IDUuM0w0NjEgLjRsNS41IDUuMyA1LjYtNS4zIDUuNCA1LjMgNS43LTUuMyA1LjQgNS4zIDUuNi01LjMgNS41IDUuNGguMmw1LjYtNS40IDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjFMNTUwIC40bDUuNCA1LjNMNTYxIC40bDUuNSA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjJsNS42LTUuNCA1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjctNS4zIDUuNCA1LjMgNS42LTUuMyA1LjUgNS40aC4yTDY1MCAuNGw1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS40IDUuNGguMmw1LjYtNS40IDUuNSA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjJMNzUwIC40bDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNy01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS40aC4xbDUuNy01LjQgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS40IDUuNGguMkw4NTAgLjRsNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjJsNS42LTUuNCA1LjQgNS4zIDUuNy01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS40aC4xbDUuNy01LjQgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjJsNS42LTUuNCA1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS40aC4ybDUuNi01LjQgNS40IDUuMyA1LjctNS4zIDUuNCA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNCA1LjRoLjJsNS42LTUuNCA1LjUgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNCA1LjMgNS42LTUuMyA1LjUgNS40aC4ybDUuNi01LjQgNS41IDUuMyA1LjYtNS4zIDUuNCA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjFsNS43LTUuNCA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjQgNS40aC4ybDUuNi01LjQgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjJsNS42LTUuNCA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS40aC4xbDUuNy01LjQgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjJsNS42LTUuNCA1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS40aC4ybDUuNi01LjQgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS40IDUuMyA1LjctNS4zIDUuNCA1LjRoLjJsNS42LTUuNCA1LjUgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNCA1LjMgNS42LTUuMyA1LjUgNS40aC4ybDUuNi01LjQgNS41IDUuMyA1LjYtNS4zIDUuNCA1LjMgNS42LTUuMyA1LjUgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjFsNS42LTUuNCA1LjUgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNCA1LjMgNS43LTUuMyA1LjQgNS40aC4ybDUuNi01LjQgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjRoLjFsNS43LTUuNCA1LjQgNS4zIDUuNi01LjMgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjUgNS40aC4xbDUuNi01LjQgNS41IDUuMyA1LjYtNS4zIDUuNSA1LjMgNS42LTUuMyA1LjQgNS4zIDUuNy01LjMgNS40IDUuMyA1LjYtNS4zIDUuNSA1LjRWMEgtLjJ2NS44eiIvPgo8L3N2Zz4KCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWRlZmF1bHQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXJvdyI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTIwIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTRlMzFjM2MiIGRhdGEtaWQ9IjRlMzFjM2MiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTBmM2IxNjIgZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtYXV0byB0ZXh0LWMtY2VudGVyIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1jb3VudGVyIiBkYXRhLWlkPSIwZjNiMTYyIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJjb3VudGVyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXdyYXBwZXIiPgoJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLW51bWJlci1wcmVmaXgiPjwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSJlbGVtZW50b3ItY291bnRlci1udW1iZXIiIGRhdGEtZHVyYXRpb249IjIwMDAiIGRhdGEtdG8tdmFsdWU9IiIgZGF0YS1mcm9tLXZhbHVlPSIwIiBkYXRhLWRlbGltaXRlcj0iLCI+MDwvc3Bhbj4KCQkJCQoJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLW51bWJlci1zdWZmaXgiPjg0MDErPC9zcGFuPgoJCQk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLXRpdGxlIj5Ub3RhbCBJbnZlc3RvcnM8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTIwIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTY5M2QxYzIiIGRhdGEtaWQ9IjY5M2QxYzIiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWE0NzMwNGEgZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtYXV0byB0ZXh0LWMtY2VudGVyIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1jb3VudGVyIiBkYXRhLWlkPSJhNDczMDRhIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJjb3VudGVyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXdyYXBwZXIiPgoJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLW51bWJlci1wcmVmaXgiPjwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSJlbGVtZW50b3ItY291bnRlci1udW1iZXIiIGRhdGEtZHVyYXRpb249IjIwMDAiIGRhdGEtdG8tdmFsdWU9IjIzNTkiIGRhdGEtZnJvbS12YWx1ZT0iMCIgZGF0YS1kZWxpbWl0ZXI9IiwiPjA8L3NwYW4+CgkJCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXItdGl0bGUiPlJ1bm5pbmcgRGF5czwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtMjAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMDFlN2MxMCIgZGF0YS1pZD0iMDFlN2MxMCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNmQ2NjZjMCBlbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvIHRleHQtYy1jZW50ZXIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWNvdW50ZXIiIGRhdGEtaWQ9IjZkNjY2YzAiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImNvdW50ZXIuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXIiPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY291bnRlci1udW1iZXItd3JhcHBlciI+CgkJCQk8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXByZWZpeCI+PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLW51bWJlciIgZGF0YS1kdXJhdGlvbj0iMjAwMCIgZGF0YS10by12YWx1ZT0iMTA3ODkzMzg5LjY2IiBkYXRhLWZyb20tdmFsdWU9IjAiIGRhdGEtZGVsaW1pdGVyPSIsIj4wPC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLW51bWJlci1zdWZmaXgiPiQ8L3NwYW4+CgkJCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXItdGl0bGUiPlRvdGFsIERlcG9zaXRlZDwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtMjAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtN2I2YjZmMiIgZGF0YS1pZD0iN2I2YjZmMiIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYzc5MjJlYSBlbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvIHRleHQtYy1jZW50ZXIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWNvdW50ZXIiIGRhdGEtaWQ9ImM3OTIyZWEiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImNvdW50ZXIuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXIiPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY291bnRlci1udW1iZXItd3JhcHBlciI+CgkJCQk8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXByZWZpeCI+PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLW51bWJlciIgZGF0YS1kdXJhdGlvbj0iMjAwMCIgZGF0YS10by12YWx1ZT0iOTEwMzQ4ODEuMDEiIGRhdGEtZnJvbS12YWx1ZT0iMCIgZGF0YS1kZWxpbWl0ZXI9IiwiPjA8L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXN1ZmZpeCI+JDwvc3Bhbj4KCQkJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY291bnRlci10aXRsZSI+VG90YWwgV2l0aGRyYXc8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTIwIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTJkYTA1ZDkiIGRhdGEtaWQ9IjJkYTA1ZDkiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWFmNTc3YTYgZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtYXV0byB0ZXh0LWMtY2VudGVyIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1jb3VudGVyIiBkYXRhLWlkPSJhZjU3N2E2IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJjb3VudGVyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvdW50ZXItbnVtYmVyLXdyYXBwZXIiPgoJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLW51bWJlci1wcmVmaXgiPjwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSJlbGVtZW50b3ItY291bnRlci1udW1iZXIiIGRhdGEtZHVyYXRpb249IjIwMDAiIGRhdGEtdG8tdmFsdWU9IjciIGRhdGEtZnJvbS12YWx1ZT0iMCIgZGF0YS1kZWxpbWl0ZXI9IiwiPjA8L3NwYW4+CgkJCQkKCQkJCTxzcGFuIGNsYXNzPSJlbGVtZW50b3ItY291bnRlci1udW1iZXItc3VmZml4Ij4wMDErPC9zcGFuPgoJCQk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb3VudGVyLXRpdGxlIj5WaXNpdG9ycyBPbmxpbmU8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4KCjwhLS0gVHJhZGluZ1ZpZXcgV2lkZ2V0IEJFR0lOIC0tPgo8ZGl2IGNsYXNzPSJ0cmFkaW5ndmlldy13aWRnZXQtY29udGFpbmVyIj4KICA8ZGl2IGNsYXNzPSJ0cmFkaW5ndmlldy13aWRnZXQtY29udGFpbmVyX193aWRnZXQiPjwvZGl2PgogIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vczMudHJhZGluZ3ZpZXcuY29tL2V4dGVybmFsLWVtYmVkZGluZy9lbWJlZC13aWRnZXQtaG90bGlzdHMuanMiIGFzeW5jPgogIHsKICAiY29sb3JUaGVtZSI6ICJsaWdodCIsCiAgImRhdGVSYW5nZSI6ICIxMk0iLAogICJleGNoYW5nZSI6ICJVUyIsCiAgInNob3dDaGFydCI6IHRydWUsCiAgImxvY2FsZSI6ICJlbiIsCiAgIndpZHRoIjogIjEwMCUiLAogICJoZWlnaHQiOiAiNDAwIiwKICAibGFyZ2VDaGFydFVybCI6ICIiLAogICJpc1RyYW5zcGFyZW50IjogdHJ1ZSwKICAic2hvd1N5bWJvbExvZ28iOiBmYWxzZSwKICAic2hvd0Zsb2F0aW5nVG9vbHRpcCI6IGZhbHNlLAogICJwbG90TGluZUNvbG9yR3Jvd2luZyI6ICJyZ2JhKDQxLCA5OCwgMjU1LCAxKSIsCiAgInBsb3RMaW5lQ29sb3JGYWxsaW5nIjogInJnYmEoNDEsIDk4LCAyNTUsIDEpIiwKICAiZ3JpZExpbmVDb2xvciI6ICJyZ2JhKDI0MCwgMjQzLCAyNTAsIDApIiwKICAic2NhbGVGb250Q29sb3IiOiAicmdiYSgxMjAsIDEyMywgMTM0LCAxKSIsCiAgImJlbG93TGluZUZpbGxDb2xvckdyb3dpbmciOiAicmdiYSg0MSwgOTgsIDI1NSwgMC4xMikiLAogICJiZWxvd0xpbmVGaWxsQ29sb3JGYWxsaW5nIjogInJnYmEoNDEsIDk4LCAyNTUsIDAuMTIpIiwKICAiYmVsb3dMaW5lRmlsbENvbG9yR3Jvd2luZ0JvdHRvbSI6ICJyZ2JhKDQxLCA5OCwgMjU1LCAwKSIsCiAgImJlbG93TGluZUZpbGxDb2xvckZhbGxpbmdCb3R0b20iOiAicmdiYSg0MSwgOTgsIDI1NSwgMCkiLAogICJzeW1ib2xBY3RpdmVDb2xvciI6ICJyZ2JhKDQxLCA5OCwgMjU1LCAwLjEyKSIKfQogIDwvc2NyaXB0Pgo8L2Rpdj4KPCEtLSBUcmFkaW5nVmlldyBXaWRnZXQgRU5EIC0tPgoJCQkJPHNlY3Rpb24gY2xhc3M9ImVsZW1lbnRvci1zZWN0aW9uIGVsZW1lbnRvci10b3Atc2VjdGlvbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1kOTdjN2FiIGVsZW1lbnRvci1zZWN0aW9uLXN0cmV0Y2hlZCBlbGVtZW50b3Itc2VjdGlvbi1ib3hlZCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCIgZGF0YS1pZD0iZDk3YzdhYiIgZGF0YS1lbGVtZW50X3R5cGU9InNlY3Rpb24iIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtzdHJldGNoX3NlY3Rpb24mcXVvdDs6JnF1b3Q7c2VjdGlvbi1zdHJldGNoZWQmcXVvdDt9IiBzdHlsZT0icGFkZGluZy10b3A6IDQwcHg7Ij4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbnRhaW5lciBlbGVtZW50b3ItY29sdW1uLWdhcC1leHRlbmRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itcm93Ij4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtMTAwIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTU1ODE3NzYiIGRhdGEtaWQ9IjU1ODE3NzYiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTUyMzk5OWIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjUyMzk5OWIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxoMiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+VG9wIFJlbnRhbCBQcm9wZXJ0aWVzIGluIHRoZSBNYXJrZXQ8L2gyPgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTJiZGQzMDUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjJiZGQzMDUiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPkNoZWNrIG91dCBzb21lIG9mIHRoZSBiZXN0IHByb3BlcnRpZXMgZm9yIHJlbnQgcmlnaHQgbm93PC9kaXY+CQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LThkMGIxM2EgZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSI4ZDBiMTNhIiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90O30iPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0xMDAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOGNmNmVkNyIgZGF0YS1pZD0iOGNmNmVkNyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZjMzMDcxZSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfcHJvcGVydGllcyIgZGF0YS1pZD0iZjMzMDcxZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbHVtbnMmcXVvdDs6JnF1b3Q7NCZxdW90OywmcXVvdDtzbGlkZXNfdG9fc2Nyb2xsJnF1b3Q7OiZxdW90OzEmcXVvdDt9IiBkYXRhLXdpZGdldF90eXBlPSJhcHVzX2VsZW1lbnRfcmVhbGVzdGF0ZV9wcm9wZXJ0aWVzLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtcHJvcGVydGllcyBjYXJvdXNlbCBpdGVtLWdyaWQtdjEgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpY2stY2Fyb3VzZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWl0ZW1zPSI0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zbWFsbG1lZGl1bT0iMiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZXh0cmFzbWFsbD0iMSIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXNsaWRlc3Rvc2Nyb2xsPSIxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zbGlkZXN0b3Njcm9sbF9zbWFsbG1lZGl1bT0iMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVzdG9zY3JvbGxfZXh0cmFzbWFsbD0iMSIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXBhZ2luYXRpb249ImZhbHNlIiBkYXRhLW5hdj0idHJ1ZSIgZGF0YS1yb3dzPSIxIiBkYXRhLWluZmluaXRlPSJ0cnVlIiBkYXRhLWF1dG9wbGF5PSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTE3Mjc3IHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV9sb2NhdGlvbi1vbmlydSBwcm9wZXJ0eV9sb2NhdGlvbi12aWN0b3JpYS1pc2xhbmQgcHJvcGVydHlfc3RhdHVzLWZvci1yZW50IHByb3BlcnR5X2FtZW5pdHktYmFsY29ueSBwcm9wZXJ0eV9hbWVuaXR5LWJxIHByb3BlcnR5X2FtZW5pdHktY2N0diBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1iYXRocm9vbXMgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQta2l0Y2hlbiBwcm9wZXJ0eV9hbWVuaXR5LWdhdGVkLWVzdGF0ZSBwcm9wZXJ0eV9hbWVuaXR5LWd5bSBwcm9wZXJ0eV9hbWVuaXR5LWphY3V6emkgcHJvcGVydHlfYW1lbml0eS1wcml2YXRlLWVsZXZhdG9yIHByb3BlcnR5X2FtZW5pdHktc3dpbW1pbmctcG9vbCBwcm9wZXJ0eV9hbWVuaXR5LXdhbGstaW4tY2xvc2V0IHByb3BlcnR5X21hdGVyaWFsLWJyaWNrIHByb3BlcnR5X21hdGVyaWFsLWNvbmNyZXRlIHByb3BlcnR5X21hdGVyaWFsLW1hcmJsZSBwcm9wZXJ0eV9tYXRlcmlhbC13b29kIiBkYXRhLWxhdGl0dWRlPSIiIGRhdGEtbG9uZ2l0dWRlPSIiIGRhdGEtaW1nPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEwL0RTQzA5NDMzLXNjYWxlZC5qcGc/cmVzaXplPTg1MCUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA5NDMzLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDk0MzMtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwOTQzNC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA5NDM1LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDk0MzYtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwOTQzNy1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA5NDM5LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDk0NDAtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwOTQ0MS1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA5NDQyLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDk0NDMtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwOTQ0NC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA5NDQ1LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDk0NDctc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODM2IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iIiBkYXRhLXNyYz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMC9EU0MwOTQzMy1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIiBkYXRhLXNyY3NldD0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMC9EU0MwOTQzMy1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIDgzNncsIGh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTAvRFNDMDk0MzMtc2NhbGVkLmpwZz96b29tPTImYW1wO3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIDE2NzJ3IiBkYXRhLXNpemVzPSIobWF4LXdpZHRoOiA2NjBweCkgMTAwdncsIDY2MHB4IiAvPjwvZGl2PiAgICAgICAgPC9hPgogICAgPC9kaXY+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3AtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSIjIiBzdHlsZT0iIj5Gb3IgUmVudDwvYT4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWQtcHJvcGVydHkiPkZlYXR1cmVkPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXByaWNlIj48c3BhbiBjbGFzcz0ic3VmZml4Ij4kPC9zcGFuPjxzcGFuIGNsYXNzPSJwcmljZS10ZXh0Ij4yNTAsMDAwLDAwMDwvc3Bhbj48L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+TmV3bHkgQnVpbHQgMyBCZWRyb29tIEFwYXJ0bWVudDwvYT48L2gyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGFzIGZsZXgtbWlkZGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJlZHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQkzCQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj48ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIHdpdGgtaWNvbi10aXRsZSI+CgoJCQk8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIj4KCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ0aXRsZS1tZXRhIj4KCQkJCQkJQmF0aHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQkzCQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgo8YXJ0aWNsZSBjbGFzcz0ibWFwLWl0ZW0gcHJvcGVydHktZ3JpZC12MSBwcm9wZXJ0eS1pdGVtIHBvc3QtMTU4MzcgcHJvcGVydHkgdHlwZS1wcm9wZXJ0eSBzdGF0dXMtcHVibGlzaCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IHByb3BlcnR5X3R5cGUtYXBhcnRtZW50IHByb3BlcnR5X3R5cGUtcGVudGhvdXNlIHByb3BlcnR5X2xvY2F0aW9uLWlrb3lpIHByb3BlcnR5X3N0YXR1cy1mb3ItcmVudCBwcm9wZXJ0eV9hbWVuaXR5LTI0aHJzLXBvd2VyIHByb3BlcnR5X2FtZW5pdHktYmFsY29ueSBwcm9wZXJ0eV9hbWVuaXR5LWJxIHByb3BlcnR5X2FtZW5pdHktY2FyLXBhcmsgcHJvcGVydHlfYW1lbml0eS1jY3R2IHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWJhdGhyb29tcyBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1raXRjaGVuIHByb3BlcnR5X2FtZW5pdHktZnVsbHktZnVybmlzaGVkIHByb3BlcnR5X2FtZW5pdHktZ2F0ZWQtZXN0YXRlIHByb3BlcnR5X2FtZW5pdHktZ3ltIHByb3BlcnR5X2FtZW5pdHktaG9tZS1lbnRlcnRhaW5tZW50LXVuaXQgcHJvcGVydHlfYW1lbml0eS1qYWN1enppIHByb3BlcnR5X2FtZW5pdHktc3dpbW1pbmctcG9vbCBwcm9wZXJ0eV9hbWVuaXR5LXdhbGstaW4tY2xvc2V0IHByb3BlcnR5X21hdGVyaWFsLWJyaWNrIHByb3BlcnR5X21hdGVyaWFsLWNvbmNyZXRlIHByb3BlcnR5X21hdGVyaWFsLW1hcmJsZSBwcm9wZXJ0eV9tYXRlcmlhbC13b29kIiBkYXRhLWxhdGl0dWRlPSI2LjQ1NjA2MSIgZGF0YS1sb25naXR1ZGU9IjMuNDQyMjE4IiBkYXRhLWltZz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwMDc5OS0xMS5qcGc/cmVzaXplPTg1MCUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzAwNzk5LTExLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwMC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwOS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgyMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwNS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgyMy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwMi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgyNi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgyNy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzMC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzMi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzNC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzNS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgzOC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwMy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwNC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwNi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwNy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgwOC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxMy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxNC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxNy0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxNi0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxNS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxOS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDgxOC0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3B2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDgzNiA5NTAmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWhvbWVvLXByb3BlcnR5LWdyaWQxIHNpemUtaG9tZW8tcHJvcGVydHktZ3JpZDEgdW52ZWlsLWltYWdlIiBhbHQ9IiIgZGF0YS1zcmM9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvRFNDMDA3OTktMTEuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIiBkYXRhLXNyY3NldD0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwMDc5OS0xMS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEgODM2dywgaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwMDc5OS0xMS5qcGc/em9vbT0yJmFtcDtyZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSAxNjcydyIgZGF0YS1zaXplcz0iKG1heC13aWR0aDogNjYwcHgpIDEwMHZ3LCA2NjBweCIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iIyIgc3R5bGU9IiI+Rm9yIFNhbGU8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmVkLXByb3BlcnR5Ij5GZWF0dXJlZDwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1sYWJlbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+PHNwYW4gY2xhc3M9InN1ZmZpeCI+JDwvc3Bhbj48c3BhbiBjbGFzcz0icHJpY2UtdGV4dCI+MTIwLDAwMCwwMDA8L3NwYW4+PC9kaXY+ICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icHJvcGVydHktdGl0bGUiPjxhIGhyZWY9IiMiIHJlbD0iYm9va21hcmsiPkx1eHVyeSA1LUJlZCBQZW50aG91c2U8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMTIJCQkJCQkJPC9kaXY+CgoJCTwvZGl2PjxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCYXRoczoJCQkJCTwvc3Bhbj4KCQkJCQoJCQkJCQkJCTE0CQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgo8YXJ0aWNsZSBjbGFzcz0ibWFwLWl0ZW0gcHJvcGVydHktZ3JpZC12MSBwcm9wZXJ0eS1pdGVtIHBvc3QtMTM3OTcgcHJvcGVydHkgdHlwZS1wcm9wZXJ0eSBzdGF0dXMtcHVibGlzaCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IHByb3BlcnR5X3R5cGUtYXBhcnRtZW50IHByb3BlcnR5X3R5cGUtdGVycmFjZWQgcHJvcGVydHlfbG9jYXRpb24tYmFuYW5hLWlzbGFuZC1pa295aSBwcm9wZXJ0eV9zdGF0dXMtZm9yLXJlbnQgcHJvcGVydHlfYW1lbml0eS0yNGhycy1wb3dlciBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1jYXItcGFyayBwcm9wZXJ0eV9hbWVuaXR5LWNjdHYgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQtYmF0aHJvb21zIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWtpdGNoZW4gcHJvcGVydHlfYW1lbml0eS1mdWxseS1mdXJuaXNoZWQgcHJvcGVydHlfYW1lbml0eS1qYWN1enppIHByb3BlcnR5X2FtZW5pdHktc3dpbW1pbmctcG9vbCBwcm9wZXJ0eV9hbWVuaXR5LXdhbGstaW4tY2xvc2V0IHByb3BlcnR5X21hdGVyaWFsLWJyaWNrIHByb3BlcnR5X21hdGVyaWFsLWNvbmNyZXRlIHByb3BlcnR5X21hdGVyaWFsLW1hcmJsZSBwcm9wZXJ0eV9tYXRlcmlhbC13b29kIiBkYXRhLWxhdGl0dWRlPSI2LjQ2Mjk1ODQiIGRhdGEtbG9uZ2l0dWRlPSIzLjQ1NzAyMTQiIGRhdGEtaW1nPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEyL0RTQzAxNDcxMS5qcGc/cmVzaXplPTU0OSUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDcxMS5qcGc/cmVzaXplPTU0OSUyQzYyNCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0NzExLmpwZz9yZXNpemU9NTQ5JTJDNjI0JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ3My5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0NzUuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDc2LmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ3OC5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0NzkuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDgwLmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ4MS5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0ODIuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDgzLmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ4NC5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0ODUuanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDg2LmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ4Ny5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDE0ODguanBnP3Jlc2l6ZT02NDAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAxNDg5LmpwZz9yZXNpemU9NjQwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMTQ5MC5qcGc/cmVzaXplPTY0MCUyQzk1MCZhbXA7c3NsPTEmcXVvdDtdIj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgZmxleC1taWRkbGUganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtdGh1bWJuYWlsIj4KICAgICAgICA8YSBjbGFzcz0icHJvcGVydHktaW1hZ2UiIGhyZWY9IiMiPgogICAgICAgIAk8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHdpZHRoPSI1NDkiIGhlaWdodD0iNjI0IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDU0OSA2MjQmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWhvbWVvLXByb3BlcnR5LWdyaWQxIHNpemUtaG9tZW8tcHJvcGVydHktZ3JpZDEgdW52ZWlsLWltYWdlIiBhbHQ9IiIgZGF0YS1zcmM9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTIvRFNDMDE0NzExLmpwZz9yZXNpemU9NTQ5JTJDNjI0JmFtcDtzc2w9MSIgZGF0YS1zcmNzZXQ9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTIvRFNDMDE0NzExLmpwZz96b29tPTImYW1wO3Jlc2l6ZT01NDklMkM2MjQmYW1wO3NzbD0xIDEwOTh3LCBodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEyL0RTQzAxNDcxMS5qcGc/em9vbT0zJmFtcDtyZXNpemU9NTQ5JTJDNjI0JmFtcDtzc2w9MSAxNjQ3dyIgZGF0YS1zaXplcz0iKG1heC13aWR0aDogNTQ5cHgpIDEwMHZ3LCA1NDlweCIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iIyIgc3R5bGU9IiI+Rm9yIFJlbnQ8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmVkLXByb3BlcnR5Ij5GZWF0dXJlZDwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1sYWJlbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+PHNwYW4gY2xhc3M9InN1ZmZpeCI+JDwvc3Bhbj48c3BhbiBjbGFzcz0icHJpY2UtdGV4dCI+MjUsMDAwLDAwMDwvc3Bhbj48L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+Q29udGVtcG9yYXJ5IDMtQmVkIFRlcnJhY2U8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMwkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+PGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJhdGhzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJNAkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTEzNTQyIHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV9sb2NhdGlvbi1pa295aSBwcm9wZXJ0eV9zdGF0dXMtZm9yLXJlbnQgcHJvcGVydHlfYW1lbml0eS0yNGhycy1wb3dlciBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1nb2xmLWNvdXJzZS12aWV3IiBkYXRhLWxhdGl0dWRlPSIiIGRhdGEtbG9uZ2l0dWRlPSIiIGRhdGEtaW1nPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzExL3doaXRlLXNhbmQtMS5qcGc/cmVzaXplPTg1MCUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL3doaXRlLXNhbmQtMS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvREpJXzAwOTEuanBnP3Jlc2l6ZT04MzYlMkM1ODImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL3doaXRlLXNhbmQtMS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvREpJXzAxMDQuanBnP3Jlc2l6ZT04MzYlMkM1ODImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL3Bob3RvXzIwMjEtMTEtMjZfMTQtMjItMzEuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL3Bob3RvXzIwMjEtMTEtMjZfMTQtMjItNDIuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjItMDEtMTEtYXQtMS4wNS4xOS1QTS0xLmpwZWc/cmVzaXplPTgxMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMS0xMS1hdC0xLjA1LjE5LVBNLmpwZWc/cmVzaXplPTgxMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMS0xMS1hdC0xLjA1LjIxLVBNLTEuanBlZz9yZXNpemU9ODEwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAxLTExLWF0LTEuMDUuMjEtUE0uanBlZz9yZXNpemU9ODEwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAxLTExLWF0LTEuMDUuMjItUE0tMS5qcGVnP3Jlc2l6ZT04MzYlMkM4MTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjItMDEtMTEtYXQtMS4wNS4yMi1QTS0yLmpwZWc/cmVzaXplPTgxMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMS0xMS1hdC0xLjA1LjIyLVBNLmpwZWc/cmVzaXplPTgxMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMS0xMS1hdC0xLjA1LjIzLVBNLTEuanBlZz9yZXNpemU9ODEwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAxLTExLWF0LTEuMDUuMjMtUE0uanBlZz9yZXNpemU9ODEwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAxLTExLWF0LTEuMDUuMjQtUE0tMS5qcGVnP3Jlc2l6ZT04MTAlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjItMDEtMTEtYXQtMS4wNS4yNC1QTS0yLmpwZWc/cmVzaXplPTgxMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMS0xMS1hdC0xLjA1LjI0LVBNLmpwZWc/cmVzaXplPTgxMCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMS0xMS1hdC0xLjA1LjI1LVBNLTEuanBlZz9yZXNpemU9ODEwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAxLTExLWF0LTEuMDUuMjUtUE0uanBlZz9yZXNpemU9ODEwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAxLTExLWF0LTEuMDUuMjYtUE0uanBlZz9yZXNpemU9ODEwJTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODM2IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iTHV4dXJ5IEdvbGYtQ291cnNlIFZpZXcgQXBhcnRtZW50IiBkYXRhLXNyYz0iaHR0cHM6Ly9iZXRhcm9pLmx0ZC93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS93aGl0ZS1zYW5kLTEuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIiAvPjwvZGl2PiAgICAgICAgPC9hPgogICAgPC9kaXY+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3AtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSIjIiBzdHlsZT0iIj5Gb3IgUmVudDwvYT4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWQtcHJvcGVydHkiPkZlYXR1cmVkPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXByaWNlIj48c3BhbiBjbGFzcz0ic3VmZml4Ij4kPC9zcGFuPjxzcGFuIGNsYXNzPSJwcmljZS10ZXh0Ij4xLDM5NSwwMDA8L3NwYW4+PC9kaXY+ICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icHJvcGVydHktdGl0bGUiPjxhIGhyZWY9IiMiIHJlbD0iYm9va21hcmsiPjMsMDk2IFNxIEZ0LiAtIFN1bm55IFJpZGdlIFJvYWQ8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJNAkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+PGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJhdGhzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMwkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTc4MzIgcHJvcGVydHkgdHlwZS1wcm9wZXJ0eSBzdGF0dXMtcHVibGlzaCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IHByb3BlcnR5X3R5cGUtYXBhcnRtZW50IHByb3BlcnR5X2xvY2F0aW9uLXZpY3RvcmlhLWlzbGFuZCBwcm9wZXJ0eV9zdGF0dXMtZm9yLXJlbnQgcHJvcGVydHlfc3RhdHVzLXNob3J0LXN0YXlzIHByb3BlcnR5X2FtZW5pdHktMjRocnMtcG93ZXIgcHJvcGVydHlfYW1lbml0eS1iYWxjb255IHByb3BlcnR5X2FtZW5pdHktY2FyLXBhcmsgcHJvcGVydHlfYW1lbml0eS1jY3R2IHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWJhdGhyb29tcyBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1raXRjaGVuIHByb3BlcnR5X2FtZW5pdHktZnVsbHktZnVybmlzaGVkIHByb3BlcnR5X2FtZW5pdHktZ3ltIHByb3BlcnR5X2FtZW5pdHktaG9tZS1lbnRlcnRhaW5tZW50LXVuaXQgcHJvcGVydHlfYW1lbml0eS1qYWN1enppIHByb3BlcnR5X2FtZW5pdHktcHJpdmF0ZS1lbGV2YXRvciBwcm9wZXJ0eV9hbWVuaXR5LXN3aW1taW5nLXBvb2wgcHJvcGVydHlfYW1lbml0eS13YWxrLWluLWNsb3NldCBwcm9wZXJ0eV9hbWVuaXR5LXdhdGVyLXZpZXciIGRhdGEtbGF0aXR1ZGU9IjYuNDI5NjAxMiIgZGF0YS1sb25naXR1ZGU9IjMuNDE3MjY0NiIgZGF0YS1pbWc9Imh0dHBzOi8vYmV0YXJvaS5sdGQvd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTAvREpJXzAwMjEtMi5qcGc/cmVzaXplPTg1MCUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RKSV8wMDIxLTIuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTk4LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9ESklfMDc3MS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDg1NTEuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTU1LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU1Ny5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDg1NjAuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTY0LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU2NS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDg1NjcuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTY5LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU3My5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDg1NzUuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTc2LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU3OC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDg1NzkuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTgyLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU4Ny5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvREpJXzAwMjEtMS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDg1ODguanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTkwLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvYmV0YXJvaS5sdGRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU5MS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2JldGFyb2kubHRkXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvRFNDMDg2MDcuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9iZXRhcm9pLmx0ZFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NjA5LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODM2IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iUm9zZSBvZiBTaGFyb24iIGRhdGEtc3JjPSJodHRwczovL2JldGFyb2kubHRkL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEwL0RKSV8wMDIxLTIuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIiAvPjwvZGl2PiAgICAgICAgPC9hPgogICAgPC9kaXY+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3AtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSIjIiBzdHlsZT0iIj5Gb3IgUmVudDwvYT4KICAgICAgICAJICAgICAgICAgICAgCTxhIGNsYXNzPSJzdGF0dXMtcHJvcGVydHktbGFiZWwiIGhyZWY9IiMiIHN0eWxlPSIiPlNob3J0IFN0YXlzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlZC1wcm9wZXJ0eSI+RmVhdHVyZWQ8L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3R0b20tbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icHJvcGVydHktdGl0bGUiPjxhIGhyZWY9IiMiIHJlbD0iYm9va21hcmsiPlJlbm92YXRlZCA1QlIgRnVybmlzaGVkIEJlYWNoZnJvbnQgVmlsbGE8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJNQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIj4KCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ0aXRsZS1tZXRhIj4KCQkJCQkJQmF0aHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQk1CQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1mNDIwYmFlIGVsZW1lbnRvci1hbGlnbi1jZW50ZXIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWJ1dHRvbiIgZGF0YS1pZD0iZjQyMGJhZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYnV0dG9uLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1idXR0b24td3JhcHBlciI+CgkJCTxhIGhyZWY9Ij9hPXN1cHBvcnQiIGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLWxpbmsgZWxlbWVudG9yLWJ1dHRvbiBlbGVtZW50b3Itc2l6ZS1sZyIgcm9sZT0iYnV0dG9uIj4KCQkJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1idXR0b24tY29udGVudC13cmFwcGVyIj4KCQkJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1idXR0b24tdGV4dCI+SW5xdWlyZSBQcm9wZXJ0aWVzIEZvciBSZW50PC9zcGFuPgoJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWQxYzEwODYgZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSJkMWMxMDg2IiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90OywmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90O30iPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0xMDAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNGYxMzZhMyIgZGF0YS1pZD0iNGYxMzZhMyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYjNmMTQ1ZCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iYjNmMTQ1ZCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5JbnZlc3RtZW50IFBsYW5zPC9oMj4JCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8IS0tZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04MDI5MzY0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSI4MDI5MzY0IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5DaG9vc2Ugd2hlcmUgeW91IGxpdmUsIGZpbmQgeW91ciBwbGFjZSB0aGVyZTwvZGl2PgkJPC9kaXY+CgkJCQk8L2Rpdi0tPgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTA2NTE0ZmEgZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSIwNjUxNGZhIiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90OywmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90O30iIHN0eWxlPSJwYWRkaW5nLWJvdHRvbTogNjBweDsiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0zMyBlbGVtZW50b3ItdG9wLWNvbHVtbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC03MGFlMjYyIiBkYXRhLWlkPSI3MGFlMjYyIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIGVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC03MTJmOWEwIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1hcHVzX2VsZW1lbnRfcmVhbGVzdGF0ZV9sb2NhdGlvbl9iYW5uZXIiIGRhdGEtaWQ9IjcxMmY5YTAiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImFwdXNfZWxlbWVudF9yZWFsZXN0YXRlX2xvY2F0aW9uX2Jhbm5lci5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtcHJvcGVydHktbG9jYXRpb24tYmFubmVyICI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ibG9jYXRpb24tYmFubmVyLWlubmVyIHN0eWxlNCIgaHJlZj0iP2E9c2lnbnVwIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1jaXR5IiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPiBQbGFuIEEgPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPiAxMiUgPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IEFmdGVyIDI0IEhvdXJzIDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im51bWJlciI+TWluIDogJDEwMDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPk1heCA6ICQzLDA5OTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPlBSSU5DSVBBTCBSRVRVUk48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1idG4iPklOVkVTVDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTMzIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTI4ZTEwMjUiIGRhdGEtaWQ9IjI4ZTEwMjUiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTA2YWE4ZWIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWFwdXNfZWxlbWVudF9yZWFsZXN0YXRlX2xvY2F0aW9uX2Jhbm5lciIgZGF0YS1pZD0iMDZhYThlYiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfbG9jYXRpb25fYmFubmVyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1wcm9wZXJ0eS1sb2NhdGlvbi1iYW5uZXIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsb2NhdGlvbi1iYW5uZXItaW5uZXIgc3R5bGU0IiBocmVmPSI/YT1zaWdudXAiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lciAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWNpdHkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IFBsYW4gQiA8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+IDIwJSA8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj4gQWZ0ZXIgNDggSG91cnM8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPk1pbiA6ICQzLDEwMDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPk1heCA6ICQ2LDA5OTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPlBSSU5DSVBBTCBSRVRVUk48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1idG4iPklOVkVTVDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTMzIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTdlMGI3Y2EiIGRhdGEtaWQ9IjdlMGI3Y2EiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTBjYTRlOGUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWFwdXNfZWxlbWVudF9yZWFsZXN0YXRlX2xvY2F0aW9uX2Jhbm5lciIgZGF0YS1pZD0iMGNhNGU4ZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfbG9jYXRpb25fYmFubmVyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1wcm9wZXJ0eS1sb2NhdGlvbi1iYW5uZXIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsb2NhdGlvbi1iYW5uZXItaW5uZXIgc3R5bGU0IiBocmVmPSI/YT1zaWdudXAiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lciAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWNpdHkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IFBsYW4gQyA8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+IDMwJSA8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj4gQWZ0ZXIgNzIgSG91cnMgIDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im51bWJlciI+TWluIDogJDYsMTAwPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im51bWJlciI+TWF4IDogJDExLDA5OTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPlBSSU5DSVBBTCBSRVRVUk48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1idG4iPklOVkVTVDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTMzIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTdlMGI3Y2EiIGRhdGEtaWQ9IjdlMGI3Y2EiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTBjYTRlOGUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWFwdXNfZWxlbWVudF9yZWFsZXN0YXRlX2xvY2F0aW9uX2Jhbm5lciIgZGF0YS1pZD0iMGNhNGU4ZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfbG9jYXRpb25fYmFubmVyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1wcm9wZXJ0eS1sb2NhdGlvbi1iYW5uZXIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsb2NhdGlvbi1iYW5uZXItaW5uZXIgc3R5bGU0IiBocmVmPSI/YT1zaWdudXAiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lciAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWNpdHkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IFBsYW4gRCA8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+IDQwJSA8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj4gQWZ0ZXIgOTYgSG91cnMgIDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im51bWJlciI+TWluIDogJDExLDEwMDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPk1heCA6ICQyMSwwMDA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibnVtYmVyIj5QUklOQ0lQQUwgUkVUVVJOPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tYnRuIj5JTlZFU1Q8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWQxYzEwODYgZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSJkMWMxMDg2IiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90OywmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90O30iPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0xMDAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNGYxMzZhMyIgZGF0YS1pZD0iNGYxMzZhMyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYjNmMTQ1ZCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iYjNmMTQ1ZCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5NaW5pbmcgUGxhbnM8L2gyPgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTwhLS1kaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTgwMjkzNjQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjgwMjkzNjQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPkNob29zZSB3aGVyZSB5b3UgbGl2ZSwgZmluZCB5b3VyIHBsYWNlIHRoZXJlPC9kaXY+CQk8L2Rpdj4KCQkJCTwvZGl2LS0+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4KCQkJCTxzZWN0aW9uIGNsYXNzPSJlbGVtZW50b3Itc2VjdGlvbiBlbGVtZW50b3ItdG9wLXNlY3Rpb24gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMDY1MTRmYSBlbGVtZW50b3Itc2VjdGlvbi1zdHJldGNoZWQgZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQiIGRhdGEtaWQ9IjA2NTE0ZmEiIGRhdGEtZWxlbWVudF90eXBlPSJzZWN0aW9uIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7c3RyZXRjaF9zZWN0aW9uJnF1b3Q7OiZxdW90O3NlY3Rpb24tc3RyZXRjaGVkJnF1b3Q7LCZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7fSIgc3R5bGU9InBhZGRpbmctYm90dG9tOiA2MHB4OyI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb250YWluZXIgZWxlbWVudG9yLWNvbHVtbi1nYXAtZXh0ZW5kZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXJvdyI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTMzIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTcwYWUyNjIiIGRhdGEtaWQ9IjcwYWUyNjIiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTcxMmY5YTAgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWFwdXNfZWxlbWVudF9yZWFsZXN0YXRlX2xvY2F0aW9uX2Jhbm5lciIgZGF0YS1pZD0iNzEyZjlhMCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfbG9jYXRpb25fYmFubmVyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1wcm9wZXJ0eS1sb2NhdGlvbi1iYW5uZXIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsb2NhdGlvbi1iYW5uZXItaW5uZXIgc3R5bGU0IiBocmVmPSI/YT1zaWdudXAiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lciAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWNpdHkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IEJldGEgTWluaW5nIEkgPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPiA1NSUgPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IEFmdGVyIDUgRGF5cyA8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPk1pbiA6ICQ4LDAwMDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPk1heCA6ICQxMCwwMDA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibnVtYmVyIj5QUklOQ0lQQUwgUkVUVVJOPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tYnRuIj5JTlZFU1Q8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0zMyBlbGVtZW50b3ItdG9wLWNvbHVtbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0yOGUxMDI1IiBkYXRhLWlkPSIyOGUxMDI1IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIGVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0wNmFhOGViIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1hcHVzX2VsZW1lbnRfcmVhbGVzdGF0ZV9sb2NhdGlvbl9iYW5uZXIiIGRhdGEtaWQ9IjA2YWE4ZWIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImFwdXNfZWxlbWVudF9yZWFsZXN0YXRlX2xvY2F0aW9uX2Jhbm5lci5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtcHJvcGVydHktbG9jYXRpb24tYmFubmVyICI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ibG9jYXRpb24tYmFubmVyLWlubmVyIHN0eWxlNCIgaHJlZj0iP2E9c2lnbnVwIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1jaXR5IiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPiBCZXRhIE1pbmluZyBJSSA8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+IDEwMCUgPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IEFmdGVyIDEwIERheXM8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPk1pbiA6ICQxMCwwMDA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibnVtYmVyIj5NYXggOiAkMTMsMDk5PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im51bWJlciI+UFJJTkNJUEFMIFJFVFVSTjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFuLWJ0biI+SU5WRVNUPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgIAkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtMzMgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtN2UwYjdjYSIgZGF0YS1pZD0iN2UwYjdjYSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMGNhNGU4ZSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfbG9jYXRpb25fYmFubmVyIiBkYXRhLWlkPSIwY2E0ZThlIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJhcHVzX2VsZW1lbnRfcmVhbGVzdGF0ZV9sb2NhdGlvbl9iYW5uZXIuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCSAgICAgICAgPGRpdiBjbGFzcz0id2lkZ2V0LXByb3BlcnR5LWxvY2F0aW9uLWJhbm5lciAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImxvY2F0aW9uLWJhbm5lci1pbm5lciBzdHlsZTQiIGhyZWY9Ij9hPXNpZ251cCI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyICI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8tY2l0eSIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj4gQmV0YSBNaW5pbmcgSUlJIDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4gMTUwJSA8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj4gQWZ0ZXIgMTUgRGF5cyAgPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibnVtYmVyIj5NaW4gOiAkMTMsMTAwPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im51bWJlciI+TWF4IDogJDE1LDAwMDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPlBSSU5DSVBBTCBSRVRVUk48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1idG4iPklOVkVTVDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTMzIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTdlMGI3Y2EiIGRhdGEtaWQ9IjdlMGI3Y2EiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTBjYTRlOGUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWFwdXNfZWxlbWVudF9yZWFsZXN0YXRlX2xvY2F0aW9uX2Jhbm5lciIgZGF0YS1pZD0iMGNhNGU4ZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfbG9jYXRpb25fYmFubmVyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1wcm9wZXJ0eS1sb2NhdGlvbi1iYW5uZXIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsb2NhdGlvbi1iYW5uZXItaW5uZXIgc3R5bGU0IiBocmVmPSI/YT1zaWdudXAiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lciAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWNpdHkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IEJldGEgTWluaW5nIElJSUk8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+IDIwMCUgPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+IEFmdGVyIDI1IERheXMgIDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im51bWJlciI+TWluIDogJDE1LDA5OTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPk1heCA6IFVubGltaXRlZDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJudW1iZXIiPlBSSU5DSVBBTCBSRVRVUk48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1idG4iPklOVkVTVDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4KPCEtLSBUcmFkaW5nVmlldyBXaWRnZXQgQkVHSU4gLS0+CjxjZW50ZXI+PGgyPkV4Y2hhbmdlIFJhdGVzPC9oMj48L2NlbnRlcj4KPGRpdiBjbGFzcz0idHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0idHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lcl9fd2lkZ2V0Ij48L2Rpdj4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3MzLnRyYWRpbmd2aWV3LmNvbS9leHRlcm5hbC1lbWJlZGRpbmcvZW1iZWQtd2lkZ2V0LWZvcmV4LWNyb3NzLXJhdGVzLmpzIiBhc3luYz4KICB7CiAgIndpZHRoIjogIjEwMCUiLAogICJoZWlnaHQiOiAiNTAwIiwKICAiY3VycmVuY2llcyI6IFsKICAgICJFVVIiLAogICAgIlVTRCIsCiAgICAiSlBZIiwKICAgICJHQlAiLAogICAgIkNIRiIsCiAgICAiQVVEIiwKICAgICJDQUQiLAogICAgIk5aRCIsCiAgICAiQ05ZIgogIF0sCiAgImlzVHJhbnNwYXJlbnQiOiB0cnVlLAogICJjb2xvclRoZW1lIjogImxpZ2h0IiwKICAibG9jYWxlIjogImVuIgp9CiAgPC9zY3JpcHQ+CjwvZGl2Pgo8IS0tIFRyYWRpbmdWaWV3IFdpZGdldCBFTkQgLS0+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTQzYmU0YTggZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSI0M2JlNGE4IiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90O30iIHN0eWxlPSJwYWRkaW5nLXRvcDogNDBweDsiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0xMDAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNTdjOWI0ZSIgZGF0YS1pZD0iNTdjOWI0ZSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZThiMTE5YSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iZThiMTE5YSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5TdGFydCBMaXZpbmcgaW4gYSBGaW5lc3QgU2VydmljZWQgQXBhcnRtZW50czwvaDI+CQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNTYzOThkYSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iNTYzOThkYSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+UmVudCBiZWF1dGlmdWwsIGZ1bGx5IGZ1cm5pc2hlZCBhbmQgc2VydmljZWQgYXBhcnRtZW50cyBmb3Igc2hvcnQgc3RheXMgaW4gdGhlIGJlc3QgbG9jYXRpb25zPC9kaXY+CQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTFjZTJkM2IgZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSIxY2UyZDNiIiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90O30iPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0xMDAgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOGZjOTczNyIgZGF0YS1pZD0iOGZjOTczNyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtM2M1YTZiNSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfcHJvcGVydGllcyIgZGF0YS1pZD0iM2M1YTZiNSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbHVtbnMmcXVvdDs6JnF1b3Q7NCZxdW90OywmcXVvdDtzbGlkZXNfdG9fc2Nyb2xsJnF1b3Q7OiZxdW90OzEmcXVvdDt9IiBkYXRhLXdpZGdldF90eXBlPSJhcHVzX2VsZW1lbnRfcmVhbGVzdGF0ZV9wcm9wZXJ0aWVzLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtcHJvcGVydGllcyBjYXJvdXNlbCBpdGVtLWdyaWQtdjEgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpY2stY2Fyb3VzZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWl0ZW1zPSI0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zbWFsbG1lZGl1bT0iMiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZXh0cmFzbWFsbD0iMSIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXNsaWRlc3Rvc2Nyb2xsPSIxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zbGlkZXN0b3Njcm9sbF9zbWFsbG1lZGl1bT0iMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVzdG9zY3JvbGxfZXh0cmFzbWFsbD0iMSIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXBhZ2luYXRpb249ImZhbHNlIiBkYXRhLW5hdj0idHJ1ZSIgZGF0YS1yb3dzPSIxIiBkYXRhLWluZmluaXRlPSJ0cnVlIiBkYXRhLWF1dG9wbGF5PSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTE3NjY3IHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV9sb2NhdGlvbi1iYW5hbmEtaXNsYW5kIHByb3BlcnR5X2xvY2F0aW9uLWJhbmFuYS1pc2xhbmQtaWtveWkgcHJvcGVydHlfbG9jYXRpb24taWtveWkgcHJvcGVydHlfc3RhdHVzLXNob3J0LXN0YXlzIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWJhdGhyb29tcyBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1raXRjaGVuIHByb3BlcnR5X2FtZW5pdHktZnVsbHktZnVybmlzaGVkIHByb3BlcnR5X2FtZW5pdHktaG9tZS1lbnRlcnRhaW5tZW50LXVuaXQgcHJvcGVydHlfYW1lbml0eS13YWxrLWluLWNsb3NldCBwcm9wZXJ0eV9tYXRlcmlhbC1icmljayBwcm9wZXJ0eV9tYXRlcmlhbC1jb25jcmV0ZSBwcm9wZXJ0eV9tYXRlcmlhbC1tYXJibGUgcHJvcGVydHlfbWF0ZXJpYWwtd29vZCIgZGF0YS1sYXRpdHVkZT0iNi40NjAwNTgwOTk5OTk5OTk1IiBkYXRhLWxvbmdpdHVkZT0iMy40NTkzMTUxODI2MjY0MjgiIGRhdGEtaW1nPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMy9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTMxLWF0LTAyLjU5LjExLTIuanBlZz9yZXNpemU9ODUwJTJDNTUwJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTMxLWF0LTAyLjU5LjExLTIuanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMzEtYXQtMDIuNTkuMTEuanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMzEtYXQtMDIuNTkuMTEtNi5qcGVnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0zMS1hdC0wMi41OS4xMS01LmpwZWc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTMxLWF0LTAyLjU5LjExLTQuanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMzEtYXQtMDIuNTkuMTEtMy5qcGVnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0zMS1hdC0wMi41OS4xMS0yLmpwZWc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTMxLWF0LTAyLjU5LjExLTEuanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODM2IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iIiBkYXRhLXNyYz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjIvMDMvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0zMS1hdC0wMi41OS4xMS0yLmpwZWc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEiIC8+PC9kaXY+ICAgICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJzdGF0dXMtcHJvcGVydHktbGFiZWwiIGhyZWY9IiMiIHN0eWxlPSIiPlNob3J0IFN0YXlzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXByaWNlIj48c3BhbiBjbGFzcz0ic3VmZml4Ij4kPC9zcGFuPjxzcGFuIGNsYXNzPSJwcmljZS10ZXh0Ij4xMDgzLjY4PC9zcGFuPjxzcGFuIGNsYXNzPSJzdWZmaXgtdGV4dCBhZGRpdGlvbmFsLXRleHQiPlBlciBuaWdodDwvc3Bhbj48L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+RnVybmlzaGVkIDIgQmVkcm9vbSBBcGFydG1lbnQ8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMgkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+PGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJhdGhzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMgkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTE3NTc2IHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV9sb2NhdGlvbi1iYW5hbmEtaXNsYW5kIHByb3BlcnR5X2xvY2F0aW9uLWJhbmFuYS1pc2xhbmQtaWtveWkgcHJvcGVydHlfbG9jYXRpb24taWtveWkgcHJvcGVydHlfc3RhdHVzLXNob3J0LXN0YXlzIHByb3BlcnR5X2FtZW5pdHktYmFsY29ueSBwcm9wZXJ0eV9hbWVuaXR5LWNhci1wYXJrIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWJhdGhyb29tcyBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1raXRjaGVuIHByb3BlcnR5X2FtZW5pdHktZnVsbHktZnVybmlzaGVkIHByb3BlcnR5X2FtZW5pdHktZ2F0ZWQtZXN0YXRlIHByb3BlcnR5X2FtZW5pdHktaG9tZS1hdXRvbWF0aW9uIHByb3BlcnR5X2FtZW5pdHktaG9tZS1lbnRlcnRhaW5tZW50LXVuaXQgcHJvcGVydHlfYW1lbml0eS1qYWN1enppIHByb3BlcnR5X2FtZW5pdHktcm9vZnRvcC10ZXJyYWNlIHByb3BlcnR5X2FtZW5pdHktd2Fsay1pbi1jbG9zZXQgcHJvcGVydHlfbWF0ZXJpYWwtYnJpY2sgcHJvcGVydHlfbWF0ZXJpYWwtY29uY3JldGUgcHJvcGVydHlfbWF0ZXJpYWwtbWFyYmxlIHByb3BlcnR5X21hdGVyaWFsLXdvb2QiIGRhdGEtbGF0aXR1ZGU9IjYuNDYwMDU4MDk5OTk5OTk5NSIgZGF0YS1sb25naXR1ZGU9IjMuNDU5MzE1MTgyNjI2NDI4IiBkYXRhLWltZz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjIvMDMvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0yOS1hdC0wMS4zMy4yMC0xLmpwZWc/cmVzaXplPTg1MCUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0yOS1hdC0wMS4zMy4yMC0xLmpwZWc/cmVzaXplPTgzNiUyQzY4NCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTI5LWF0LTAxLjMzLjIwLTEtMS5qcGVnP3Jlc2l6ZT04MzYlMkM2ODQmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0yOS1hdC0wMS4zMy4yMC0yLTEuanBlZz9yZXNpemU9ODM2JTJDNjg0JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMjktYXQtMDEuMzMuMjAtMy5qcGVnP3Jlc2l6ZT04MzYlMkM2ODQmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0yOS1hdC0wMS4zMy4yMC00LmpwZWc/cmVzaXplPTgzNiUyQzg1NCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTI5LWF0LTAxLjMzLjIwLTUtMS5qcGVnP3Jlc2l6ZT04MzYlMkM2ODQmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0yOS1hdC0wMS4zMy4yMC5qcGVnP3Jlc2l6ZT04MzYlMkM2ODQmYW1wO3NzbD0xJnF1b3Q7XSI+CgogICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIGZsZXgtbWlkZGxlIGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltYWdlLXRodW1ibmFpbCI+CiAgICAgICAgPGEgY2xhc3M9InByb3BlcnR5LWltYWdlIiBocmVmPSIjIj4KICAgICAgICAJPGRpdiBjbGFzcz0iaW1hZ2Utd3JhcHBlciI+PGltZyBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iODM2IiBoZWlnaHQ9IjY4NCIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnMlM0QmIzAzOTtodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcmIzAzOTsgdmlld0JveCUzRCYjMDM5OzAgMCA4MzYgNjg0JiMwMzk7JTJGJTNFIiBjbGFzcz0iYXR0YWNobWVudC1ob21lby1wcm9wZXJ0eS1ncmlkMSBzaXplLWhvbWVvLXByb3BlcnR5LWdyaWQxIHVudmVpbC1pbWFnZSIgYWx0PSIiIGRhdGEtc3JjPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMy9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTI5LWF0LTAxLjMzLjIwLTEuanBlZz9yZXNpemU9ODM2JTJDNjg0JmFtcDtzc2w9MSIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iIyIgc3R5bGU9IiI+U2hvcnQgU3RheXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3R0b20tbGFiZWwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktcHJpY2UiPjxzcGFuIGNsYXNzPSJzdWZmaXgiPiQ8L3NwYW4+PHNwYW4gY2xhc3M9InByaWNlLXRleHQiPjMzNy4xNTwvc3Bhbj48L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+RnVybmlzaGVkIDIgQmVkcm9vbSBBcGFydG1lbnQ8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMgkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+PGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJhdGhzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMgkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTE3MDE0IHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV9sb2NhdGlvbi1iYW5hbmEtaXNsYW5kIHByb3BlcnR5X2xvY2F0aW9uLWlrb3lpIHByb3BlcnR5X3N0YXR1cy1zaG9ydC1zdGF5cyBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1jYXItcGFyayBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1iYXRocm9vbXMgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQta2l0Y2hlbiBwcm9wZXJ0eV9hbWVuaXR5LWZ1bGx5LWZ1cm5pc2hlZCBwcm9wZXJ0eV9hbWVuaXR5LWdhdGVkLWVzdGF0ZSBwcm9wZXJ0eV9hbWVuaXR5LXdhbGstaW4tY2xvc2V0IHByb3BlcnR5X21hdGVyaWFsLWJyaWNrIHByb3BlcnR5X21hdGVyaWFsLWNvbmNyZXRlIHByb3BlcnR5X21hdGVyaWFsLW1hcmJsZSBwcm9wZXJ0eV9tYXRlcmlhbC13b29kIiBkYXRhLWxhdGl0dWRlPSI2LjQ2MDA1ODA5OTk5OTk5OTUiIGRhdGEtbG9uZ2l0dWRlPSIzLjQ1OTMxNTE4MjYyNjQyOCIgZGF0YS1pbWc9Imh0dHBzOi8vaTAud3AuY29tL2N3bGFnb3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAzL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMTItYXQtMTEuNDQuNTktQU0uanBlZz9yZXNpemU9NzY4JTJDNTUwJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTEuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMTItYXQtMTEuNDQuNTktQU0tMi5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0xMi1hdC0xMS40NC41OS1BTS0zLmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTQuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMTItYXQtMTEuNDQuNTktQU0tNS5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0xMi1hdC0xMS40NC41OS1BTS02LmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTcuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMTItYXQtMTEuNDQuNTktQU0tOC0xLmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTguanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMTItYXQtMTEuNDQuNTktQU0tOS5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0xMi1hdC0xMS40NC41OS1BTS0xMC5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0xMi1hdC0xMS40NC41OS1BTS0xMS5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0xMi1hdC0xMS40NC41OS1BTS0xMi5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0xMi1hdC0xMS40NC41OS1BTS0xMy5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wM1wvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0xMi1hdC0xMS40NC41OS1BTS0xNC0xLmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTE0LmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTE1LmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTE2LmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTE3LmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAzXC9XaGF0c0FwcC1JbWFnZS0yMDIyLTAzLTEyLWF0LTExLjQ0LjU5LUFNLTE4LTEuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMTItYXQtMTEuNDQuNTktQU0tMTguanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMlwvMDNcL1doYXRzQXBwLUltYWdlLTIwMjItMDMtMTItYXQtMTEuNDQuNTktQU0uanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgNzY4IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iIiBkYXRhLXNyYz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjIvMDMvV2hhdHNBcHAtSW1hZ2UtMjAyMi0wMy0xMi1hdC0xMS40NC41OS1BTS5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xIiAvPjwvZGl2PiAgICAgICAgPC9hPgogICAgPC9kaXY+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3AtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSIjIiBzdHlsZT0iIj5TaG9ydCBTdGF5czwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1sYWJlbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+PHNwYW4gY2xhc3M9InN1ZmZpeCI+JDwvc3Bhbj48c3BhbiBjbGFzcz0icHJpY2UtdGV4dCI+MzYxLjIzPC9zcGFuPjwvZGl2PiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InByb3BlcnR5LXRpdGxlIj48YSBocmVmPSIjIiByZWw9ImJvb2ttYXJrIj5GdWxseSBGdXJuaXNoZWQgMiBCZWRyb29tIEFwYXJ0bWVudDwvYT48L2gyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGFzIGZsZXgtbWlkZGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJlZHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQkyCQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj48ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIHdpdGgtaWNvbi10aXRsZSI+CgoJCQk8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIj4KCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ0aXRsZS1tZXRhIj4KCQkJCQkJQmF0aHM6CQkJCQk8L3NwYW4+CgkJCQkKCQkJCQkJCQkyCQkJCQkJCTwvZGl2PgoKCQk8L2Rpdj4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgo8YXJ0aWNsZSBjbGFzcz0ibWFwLWl0ZW0gcHJvcGVydHktZ3JpZC12MSBwcm9wZXJ0eS1pdGVtIHBvc3QtMTM5MDAgcHJvcGVydHkgdHlwZS1wcm9wZXJ0eSBzdGF0dXMtcHVibGlzaCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IHByb3BlcnR5X3R5cGUtYXBhcnRtZW50IHByb3BlcnR5X2xvY2F0aW9uLWlrb3lpIHByb3BlcnR5X3N0YXR1cy1zaG9ydC1zdGF5cyBwcm9wZXJ0eV9hbWVuaXR5LTI0aHJzLXBvd2VyIiBkYXRhLWxhdGl0dWRlPSIiIGRhdGEtbG9uZ2l0dWRlPSIiIGRhdGEtaW1nPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMi9Qcm9tby1GYWNlYm9vay1GYWNlYm9vay1yaWdodC1jb2x1bW4uanBlZz9yZXNpemU9ODUwJTJDNTUwJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9Qcm9tby1GYWNlYm9vay1GYWNlYm9vay1yaWdodC1jb2x1bW4uanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41Mi1BTS1lMTYzOTY0NzUxMjU1My5qcGVnP3Jlc2l6ZT04MzYlMkM4NTImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0wNS1hdC0yLjIzLjUzLUFNLTIuanBlZz9yZXNpemU9ODM2JTJDODQ0JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41My1BTS5qcGVnP3Jlc2l6ZT04MzYlMkM4MjImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0wNS1hdC0yLjIzLjU0LUFNLTIuanBlZz9yZXNpemU9ODM2JTJDODIyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41NC1BTS0zLmpwZWc/cmVzaXplPTgzNiUyQzgxNCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTA1LWF0LTIuMjMuNTQtQU0tNC5qcGVnP3Jlc2l6ZT04MzYlMkM4NTImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0wNS1hdC0yLjIzLjU0LUFNLTUuanBlZz9yZXNpemU9ODM2JTJDODIyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41NC1BTS02LmpwZWc/cmVzaXplPTgzNiUyQzgxNCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTA1LWF0LTIuMjMuNTQtQU0tNy5qcGVnP3Jlc2l6ZT04MzYlMkM4NTImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0wNS1hdC0yLjIzLjU0LUFNLmpwZWc/cmVzaXplPTgzNiUyQzg1MiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTA1LWF0LTIuMjMuNTUtQU0tMi5qcGVnP3Jlc2l6ZT04MzYlMkM4MzgmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0wNS1hdC0yLjIzLjU1LUFNLTMuanBlZz9yZXNpemU9ODM2JTJDODUyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41NS1BTS00LmpwZWc/cmVzaXplPTgzNiUyQzg1MiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTA1LWF0LTIuMjMuNTUtQU0uanBlZz9yZXNpemU9ODM2JTJDODUyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41Ni1BTS0yLmpwZWc/cmVzaXplPTgzNiUyQzgzMiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTA1LWF0LTIuMjMuNTYtQU0tMy5qcGVnP3Jlc2l6ZT04MzYlMkM4NTImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0wNS1hdC0yLjIzLjU2LUFNLTQuanBlZz9yZXNpemU9ODEwJTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41Ni1BTS5qcGVnP3Jlc2l6ZT04MzYlMkM4NTImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0wNS1hdC0yLjIzLjU3LUFNLmpwZWc/cmVzaXplPTgzNiUyQzg1MiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTA1LWF0LTIuMjMuNTgtQU0tMi5qcGVnP3Jlc2l6ZT04MzYlMkM4NTImYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0wNS1hdC0yLjIzLjU4LUFNLTMuanBlZz9yZXNpemU9ODM2JTJDODUyJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41OC1BTS00LmpwZWc/cmVzaXplPTgzNiUyQzg1MiZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTA1LWF0LTIuMjMuNTgtQU0uanBlZz9yZXNpemU9ODM2JTJDODI0JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMDUtYXQtMi4yMy41OS1BTS5qcGVnP3Jlc2l6ZT04MzYlMkM4NDQmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvUHJvbW8tRmFjZWJvb2stRmFjZWJvb2stcmlnaHQtY29sdW1uLmpwZWc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDtdIj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgZmxleC1taWRkbGUganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtdGh1bWJuYWlsIj4KICAgICAgICA8YSBjbGFzcz0icHJvcGVydHktaW1hZ2UiIGhyZWY9IiMiPgogICAgICAgIAk8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHdpZHRoPSI4MzYiIGhlaWdodD0iOTUwIiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDgzNiA5NTAmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWhvbWVvLXByb3BlcnR5LWdyaWQxIHNpemUtaG9tZW8tcHJvcGVydHktZ3JpZDEgdW52ZWlsLWltYWdlIiBhbHQ9IiIgZGF0YS1zcmM9Imh0dHBzOi8vaTAud3AuY29tL2N3bGFnb3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEyL1Byb21vLUZhY2Vib29rLUZhY2Vib29rLXJpZ2h0LWNvbHVtbi5qcGVnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIiAvPjwvZGl2PiAgICAgICAgPC9hPgogICAgPC9kaXY+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3AtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSIjIiBzdHlsZT0iIj5TaG9ydCBTdGF5czwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1sYWJlbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+U3RhcnRzIGZyb20gJDI4OC45ODwvZGl2PiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InByb3BlcnR5LXRpdGxlIj48YSBocmVmPSIjIiByZWw9ImJvb2ttYXJrIj5MdXh1cnkgMy1CZWRyb29tIFNob3J0c3RheSBBcGFydG1lbnQ8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMwkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+PGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJhdGhzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMwkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTEzODUwIHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV9sb2NhdGlvbi1sZWtraS1waGFzZS0xIHByb3BlcnR5X3N0YXR1cy1zaG9ydC1zdGF5cyIgZGF0YS1sYXRpdHVkZT0iIiBkYXRhLWxvbmdpdHVkZT0iIiBkYXRhLWltZz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTIvRFNDMDM1ODYtc2NhbGVkLmpwZz9yZXNpemU9ODUwJTJDNTUwJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMzU4Ni1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDM1Nzctc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAzNTc4LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMzU4MC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDM1ODEtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAzNTgyLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMzU4My1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDM1ODQtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAzNTg1LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMzU5Mi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDM1OTAtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAzNTg4LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMzU4Ny1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDM1ODYtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAzNTk3LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEyXC9EU0MwMzU5NC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMlwvRFNDMDM1OTYtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTJcL0RTQzAzNjAwLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDtdIj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgZmxleC1taWRkbGUganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtdGh1bWJuYWlsIj4KICAgICAgICA8YSBjbGFzcz0icHJvcGVydHktaW1hZ2UiIGhyZWY9IiMiPgogICAgICAgIAk8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHdpZHRoPSI4MzYiIGhlaWdodD0iOTUwIiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDgzNiA5NTAmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWhvbWVvLXByb3BlcnR5LWdyaWQxIHNpemUtaG9tZW8tcHJvcGVydHktZ3JpZDEgdW52ZWlsLWltYWdlIiBhbHQ9IkJlYWNoZnJvbnQgMiBCZWRyb29tIEFwYXJ0bWVudCIgZGF0YS1zcmM9Imh0dHBzOi8vaTAud3AuY29tL2N3bGFnb3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEyL0RTQzAzNTg2LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEiIGRhdGEtc3Jjc2V0PSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMi9EU0MwMzU4Ni1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIDgzNncsIGh0dHBzOi8vaTAud3AuY29tL2N3bGFnb3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzEyL0RTQzAzNTg2LXNjYWxlZC5qcGc/em9vbT0yJmFtcDtyZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSAxNjcydywgaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTIvRFNDMDM1ODYtc2NhbGVkLmpwZz96b29tPTMmYW1wO3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIDI1MDh3IiBkYXRhLXNpemVzPSIobWF4LXdpZHRoOiA2NjBweCkgMTAwdncsIDY2MHB4IiAvPjwvZGl2PiAgICAgICAgPC9hPgogICAgPC9kaXY+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3AtbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSIjIiBzdHlsZT0iIj5TaG9ydCBTdGF5czwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1sYWJlbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+U3RhcnRzIGZyb20gJDI0MC44MjwvZGl2PiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InByb3BlcnR5LXRpdGxlIj48YSBocmVmPSIjIiByZWw9ImJvb2ttYXJrIj5CZWFjaGZyb250IEFmcm9jZW50cmljIDIgQmVkcm9vbSB3aXRoIFN0dW5uaW5nIFZpZXdzPC9hPjwvaDI+ICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTEzMjEzIHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV9sb2NhdGlvbi1sZWtraSBwcm9wZXJ0eV9sb2NhdGlvbi1sZWtraS1waGFzZS0xIHByb3BlcnR5X3N0YXR1cy1zaG9ydC1zdGF5cyBwcm9wZXJ0eV9hbWVuaXR5LTI0aHJzLXBvd2VyIHByb3BlcnR5X2FtZW5pdHktYmFsY29ueSBwcm9wZXJ0eV9hbWVuaXR5LWNhci1wYXJrIHByb3BlcnR5X2FtZW5pdHktY2N0diBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1iYXRocm9vbXMgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQta2l0Y2hlbiBwcm9wZXJ0eV9hbWVuaXR5LWZ1bGx5LWZ1cm5pc2hlZCBwcm9wZXJ0eV9hbWVuaXR5LWd5bSBwcm9wZXJ0eV9hbWVuaXR5LXN3aW1taW5nLXBvb2wgcHJvcGVydHlfYW1lbml0eS10ZW5uaXMtY291cnQgcHJvcGVydHlfYW1lbml0eS13aWZpIiBkYXRhLWxhdGl0dWRlPSIiIGRhdGEtbG9uZ2l0dWRlPSIiIGRhdGEtaW1nPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwMDMwMy1zY2FsZWQuanBnP3Jlc2l6ZT04NTAlMkM1NTAmIzAzODtzc2w9MSIgZGF0YS1pbWFnZXM9IlsmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzAwMzAzLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDI5Ni0xLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDI5Ny1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDAyOTgtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzAwMjk5LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDMwMS1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDAzMDItc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzAwMzA2LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDI5Ni1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDAzMDktc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzAwMzA4LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwMDMxMi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDAzMDMtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIy8iPgogICAgICAgIAk8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHdpZHRoPSI4MzYiIGhlaWdodD0iOTUwIiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDgzNiA5NTAmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWhvbWVvLXByb3BlcnR5LWdyaWQxIHNpemUtaG9tZW8tcHJvcGVydHktZ3JpZDEgdW52ZWlsLWltYWdlIiBhbHQ9IlZpZXciIGRhdGEtc3JjPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwMDMwMy1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIiBkYXRhLXNyY3NldD0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvRFNDMDAzMDMtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSA4MzZ3LCBodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwMDMwMy1zY2FsZWQuanBnP3pvb209MiZhbXA7cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEgMTY3MnciIGRhdGEtc2l6ZXM9IihtYXgtd2lkdGg6IDY2MHB4KSAxMDB2dywgNjYwcHgiIC8+PC9kaXY+ICAgICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJzdGF0dXMtcHJvcGVydHktbGFiZWwiIGhyZWY9IiMiIHN0eWxlPSIiPlNob3J0IFN0YXlzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXByaWNlIj5TdGFydHMgZnJvbSAkMjQwLjgyPC9kaXY+ICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icHJvcGVydHktdGl0bGUiPjxhIGhyZWY9IiMvIiByZWw9ImJvb2ttYXJrIj5PY2VhbmZyb250IDIgQmVkcm9vbSBBcGFydG1lbnQ8L2E+PC9oMj4gICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgo8YXJ0aWNsZSBjbGFzcz0ibWFwLWl0ZW0gcHJvcGVydHktZ3JpZC12MSBwcm9wZXJ0eS1pdGVtIHBvc3QtMTMxMzEgcHJvcGVydHkgdHlwZS1wcm9wZXJ0eSBzdGF0dXMtcHVibGlzaCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IHByb3BlcnR5X3R5cGUtYXBhcnRtZW50IHByb3BlcnR5X2xvY2F0aW9uLXZpY3RvcmlhLWlzbGFuZCBwcm9wZXJ0eV9zdGF0dXMtc2hvcnQtc3RheXMgcHJvcGVydHlfYW1lbml0eS0yNGhycy1wb3dlciBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1jYXItcGFyayBwcm9wZXJ0eV9hbWVuaXR5LWNjdHYgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQtYmF0aHJvb21zIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWtpdGNoZW4gcHJvcGVydHlfYW1lbml0eS1mdWxseS1mdXJuaXNoZWQgcHJvcGVydHlfYW1lbml0eS1neW0gcHJvcGVydHlfYW1lbml0eS1ob21lLWVudGVydGFpbm1lbnQtdW5pdCBwcm9wZXJ0eV9hbWVuaXR5LWphY3V6emkgcHJvcGVydHlfYW1lbml0eS1wcml2YXRlLWVsZXZhdG9yIHByb3BlcnR5X2FtZW5pdHktc3dpbW1pbmctcG9vbCBwcm9wZXJ0eV9hbWVuaXR5LXdhbGstaW4tY2xvc2V0IHByb3BlcnR5X2FtZW5pdHktd2lmaSBwcm9wZXJ0eV9tYXRlcmlhbC1icmljayBwcm9wZXJ0eV9tYXRlcmlhbC1jb25jcmV0ZSBwcm9wZXJ0eV9tYXRlcmlhbC1tYXJibGUgcHJvcGVydHlfbWF0ZXJpYWwtd29vZCIgZGF0YS1sYXRpdHVkZT0iNi40Mjk2MDEyIiBkYXRhLWxvbmdpdHVkZT0iMy40MTcyNjQ2IiBkYXRhLWltZz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvUHJvbW8tRmFjZWJvb2stRmFjZWJvb2staW5zdGFudC1hcnRpY2xlcy5qcGVnP3Jlc2l6ZT04NTAlMkM1NTAmIzAzODtzc2w9MSIgZGF0YS1pbWFnZXM9IlsmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1Byb21vLUZhY2Vib29rLUZhY2Vib29rLWluc3RhbnQtYXJ0aWNsZXMuanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMTktYXQtMTAuMDIuNTUtQU0uanBlZz9yZXNpemU9ODM2JTJDNzE5JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMTktYXQtMTAuMDIuNTEtQU0uanBlZz9yZXNpemU9ODM2JTJDNzE5JmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMTEtMTktYXQtMTAuMDIuNTItQU0tMS1lMTYzOTY0OTI5Nzc4Ny5qcGVnP3Jlc2l6ZT04MzYlMkM3MTkmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0xOS1hdC0xMC4wMi41Mi1BTS5qcGVnP3Jlc2l6ZT04MzYlMkM3MjAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0xOS1hdC0xMC4wMi41NC1BTS5qcGVnP3Jlc2l6ZT04MzYlMkM3MjAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0xMS0xOS1hdC0xMC4wMi41Ni1BTS0xLmpwZWc/cmVzaXplPTgzNiUyQzcyMCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTE5LWF0LTEwLjAyLjU2LUFNLmpwZWc/cmVzaXplPTgzNiUyQzcyMCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTExLTE5LWF0LTEwLjAyLjU3LUFNLmpwZWc/cmVzaXplPTgzNiUyQzcyMSZhbXA7c3NsPTEmcXVvdDtdIj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgZmxleC1taWRkbGUganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtdGh1bWJuYWlsIj4KICAgICAgICA8YSBjbGFzcz0icHJvcGVydHktaW1hZ2UiIGhyZWY9IiMiPgogICAgICAgIAk8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHdpZHRoPSI4MzYiIGhlaWdodD0iOTUwIiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucyUzRCYjMDM5O2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyYjMDM5OyB2aWV3Qm94JTNEJiMwMzk7MCAwIDgzNiA5NTAmIzAzOTslMkYlM0UiIGNsYXNzPSJhdHRhY2htZW50LWhvbWVvLXByb3BlcnR5LWdyaWQxIHNpemUtaG9tZW8tcHJvcGVydHktZ3JpZDEgdW52ZWlsLWltYWdlIiBhbHQ9IiIgZGF0YS1zcmM9Imh0dHBzOi8vaTAud3AuY29tL2N3bGFnb3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzExL1Byb21vLUZhY2Vib29rLUZhY2Vib29rLWluc3RhbnQtYXJ0aWNsZXMuanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iIyIgc3R5bGU9IiI+U2hvcnQgU3RheXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3R0b20tbGFiZWwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktcHJpY2UiPlN0YXJ0cyBmcm9tICQyODguOTg8L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+RXhjbHVzaXZlIFNlcnZpY2VkIEFwYXJ0bWVudHM8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJNgkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+PGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSB3aXRoLWljb24tdGl0bGUiPgoKCQkJPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YSI+CgoJCQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUtbWV0YSI+CgkJCQkJCUJhdGhzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJNgkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKPGFydGljbGUgY2xhc3M9Im1hcC1pdGVtIHByb3BlcnR5LWdyaWQtdjEgcHJvcGVydHktaXRlbSBwb3N0LTEzMTAzIHByb3BlcnR5IHR5cGUtcHJvcGVydHkgc3RhdHVzLXB1Ymxpc2ggaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBwcm9wZXJ0eV90eXBlLWFwYXJ0bWVudCBwcm9wZXJ0eV9sb2NhdGlvbi1sZWtraS1waGFzZS0xIHByb3BlcnR5X3N0YXR1cy1zaG9ydC1zdGF5cyBwcm9wZXJ0eV9hbWVuaXR5LTI0aHJzLXBvd2VyIHByb3BlcnR5X2FtZW5pdHktYmFsY29ueSBwcm9wZXJ0eV9hbWVuaXR5LWNhci1wYXJrIHByb3BlcnR5X2FtZW5pdHktY2N0diBwcm9wZXJ0eV9hbWVuaXR5LWZpdHRlZC1iYXRocm9vbXMgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQta2l0Y2hlbiBwcm9wZXJ0eV9hbWVuaXR5LWZ1bGx5LWZ1cm5pc2hlZCBwcm9wZXJ0eV9hbWVuaXR5LWd5bSBwcm9wZXJ0eV9hbWVuaXR5LWhvbWUtZW50ZXJ0YWlubWVudC11bml0IHByb3BlcnR5X2FtZW5pdHktamFjdXp6aSBwcm9wZXJ0eV9hbWVuaXR5LXByaXZhdGUtZWxldmF0b3IgcHJvcGVydHlfYW1lbml0eS1zd2ltbWluZy1wb29sIHByb3BlcnR5X2FtZW5pdHktd2Fsay1pbi1jbG9zZXQgcHJvcGVydHlfYW1lbml0eS13YXRlci12aWV3IHByb3BlcnR5X2FtZW5pdHktd2lmaSBwcm9wZXJ0eV9tYXRlcmlhbC1icmljayBwcm9wZXJ0eV9tYXRlcmlhbC1jb25jcmV0ZSBwcm9wZXJ0eV9tYXRlcmlhbC1tYXJibGUgcHJvcGVydHlfbWF0ZXJpYWwtd29vZCIgZGF0YS1sYXRpdHVkZT0iNi40NDIyODcxIiBkYXRhLWxvbmdpdHVkZT0iMy40ODc0Mzc4IiBkYXRhLWltZz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvUHJvbW8tRmFjZWJvb2stRmFjZWJvb2stbWFya2V0cGxhY2UuanBlZz9yZXNpemU9ODUwJTJDNTUwJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9Qcm9tby1GYWNlYm9vay1GYWNlYm9vay1tYXJrZXRwbGFjZS5qcGVnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0wMy0xOC1hdC0xNC41My41NC0yLmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTAzLTI0LWF0LTA0LjAwLjUxLTIuanBlZz9yZXNpemU9ODM2JTJDNzIwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMDMtMjQtYXQtMDQuMDAuNTAtMS5qcGVnP3Jlc2l6ZT04MzYlMkM3MTgmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0wMy0yNC1hdC0wNC4wMC41MC5qcGVnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0wMy0yNC1hdC0wNC4wMC41MS5qcGVnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0wMy0yNC1hdC0wNC4wMC41Mi0xLmpwZWc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTAzLTI0LWF0LTA0LjAwLjUyLmpwZWc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTAzLTE4LWF0LTE0LjUzLjUzLTIuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMDMtMTgtYXQtMTQuNTMuNTUtMi5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0wMy0xOC1hdC0xNC41My41NS0zLmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTAzLTE4LWF0LTE0LjUzLjU2LTMuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMDMtMTgtYXQtMTQuNTMuNTcuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMDMtMTgtYXQtMTQuNTMuNTctMi5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0wMy0xOC1hdC0xNC41My41OC5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvV2hhdHNBcHAtSW1hZ2UtMjAyMS0wMy0xOC1hdC0xNC41My41OC0yLmpwZWc/cmVzaXplPTc2OCUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9XaGF0c0FwcC1JbWFnZS0yMDIxLTAzLTE4LWF0LTE0LjUzLjU4LTQuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMDMtMTgtYXQtMTcuNDcuMDMuanBlZz9yZXNpemU9NzY4JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL1doYXRzQXBwLUltYWdlLTIwMjEtMDMtMTgtYXQtMTcuNDcuMDMtMy5qcGVnP3Jlc2l6ZT03NjglMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvUHJvbW8tRmFjZWJvb2stRmFjZWJvb2stbWFya2V0cGxhY2UuanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODM2IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iIiBkYXRhLXNyYz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvUHJvbW8tRmFjZWJvb2stRmFjZWJvb2stbWFya2V0cGxhY2UuanBlZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iIyIgc3R5bGU9IiI+U2hvcnQgU3RheXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3R0b20tbGFiZWwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktcHJpY2UiPlN0YXJ0cyBmcm9tICQyNDAuODI8L2Rpdj4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+PGEgaHJlZj0iIyIgcmVsPSJib29rbWFyayI+UHJlbWl1bSAyIEJlZHJvb20gQXBhcnRtZW50PC9hPjwvaDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktbWV0YXMgZmxleC1taWRkbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIHdpdGgtaWNvbi10aXRsZSI+CgoJCQk8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhIj4KCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ0aXRsZS1tZXRhIj4KCQkJCQkJQmVkczoJCQkJCTwvc3Bhbj4KCQkJCQoJCQkJCQkJCTIJCQkJCQkJPC9kaXY+CgoJCTwvZGl2PjxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCYXRoczoJCQkJCTwvc3Bhbj4KCQkJCQoJCQkJCQkJCTIJCQkJCQkJPC9kaXY+CgoJCTwvZGl2PiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+Cgo8L2FydGljbGU+PCEtLSAjcG9zdC0jIyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCjxhcnRpY2xlIGNsYXNzPSJtYXAtaXRlbSBwcm9wZXJ0eS1ncmlkLXYxIHByb3BlcnR5LWl0ZW0gcG9zdC0xMjk3NCBwcm9wZXJ0eSB0eXBlLXByb3BlcnR5IHN0YXR1cy1wdWJsaXNoIGhhcy1wb3N0LXRodW1ibmFpbCBoZW50cnkgcHJvcGVydHlfdHlwZS1hcGFydG1lbnQgcHJvcGVydHlfbG9jYXRpb24taWtveWkgcHJvcGVydHlfbG9jYXRpb24tb2xkLWlrb3lpIHByb3BlcnR5X3N0YXR1cy1zaG9ydC1zdGF5cyIgZGF0YS1sYXRpdHVkZT0iIiBkYXRhLWxvbmdpdHVkZT0iIiBkYXRhLWltZz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvRFNDMDUzMzYtc2NhbGVkLmpwZz9yZXNpemU9ODUwJTJDNTUwJiMwMzg7c3NsPTEiIGRhdGEtaW1hZ2VzPSJbJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTMzNi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzMjktc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzMwLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTMzMS1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzMzctc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzM2LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTMzNS1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzMzQtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzMzLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTMzMi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzMzgtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzM5LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTM0MC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzNDEtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzQyLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTM0My1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzNDktc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzQ4LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTM0Ny1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzNDYtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzQ1LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTM0NC1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzNTAtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzUxLXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTM1Mi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7LCZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMVwvRFNDMDUzNTMtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTFcL0RTQzA1MzU0LXNjYWxlZC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzExXC9EU0MwNTM1NS1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xJnF1b3Q7XSI+CgogICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIGZsZXgtbWlkZGxlIGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltYWdlLXRodW1ibmFpbCI+CiAgICAgICAgPGEgY2xhc3M9InByb3BlcnR5LWltYWdlIiBocmVmPSIjIj4KICAgICAgICAJPGRpdiBjbGFzcz0iaW1hZ2Utd3JhcHBlciI+PGltZyBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iODM2IiBoZWlnaHQ9Ijk1MCIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnMlM0QmIzAzOTtodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcmIzAzOTsgdmlld0JveCUzRCYjMDM5OzAgMCA4MzYgOTUwJiMwMzk7JTJGJTNFIiBjbGFzcz0iYXR0YWNobWVudC1ob21lby1wcm9wZXJ0eS1ncmlkMSBzaXplLWhvbWVvLXByb3BlcnR5LWdyaWQxIHVudmVpbC1pbWFnZSIgYWx0PSIiIGRhdGEtc3JjPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwNTMzNi1zY2FsZWQuanBnP3Jlc2l6ZT04MzYlMkM5NTAmYW1wO3NzbD0xIiBkYXRhLXNyY3NldD0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTEvRFNDMDUzMzYtc2NhbGVkLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSA4MzZ3LCBodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMS9EU0MwNTMzNi1zY2FsZWQuanBnP3pvb209MiZhbXA7cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEgMTY3MnciIGRhdGEtc2l6ZXM9IihtYXgtd2lkdGg6IDY2MHB4KSAxMDB2dywgNjYwcHgiIC8+PC9kaXY+ICAgICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJzdGF0dXMtcHJvcGVydHktbGFiZWwiIGhyZWY9IiMiIHN0eWxlPSIiPlNob3J0IFN0YXlzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LXByaWNlIj5TdGFydHMgZnJvbSAkMjg4Ljk4PC9kaXY+ICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icHJvcGVydHktdGl0bGUiPjxhIGhyZWY9IiMiIHJlbD0iYm9va21hcmsiPlN0dW5uaW5nIDMgQmVkcm9vbSBTZXJ2aWNlZCBBcGFydG1lbnQ8L2E+PC9oMj4gICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKPC9hcnRpY2xlPjwhLS0gI3Bvc3QtIyMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgo8YXJ0aWNsZSBjbGFzcz0ibWFwLWl0ZW0gcHJvcGVydHktZ3JpZC12MSBwcm9wZXJ0eS1pdGVtIHBvc3QtNzgzMiBwcm9wZXJ0eSB0eXBlLXByb3BlcnR5IHN0YXR1cy1wdWJsaXNoIGhhcy1wb3N0LXRodW1ibmFpbCBoZW50cnkgcHJvcGVydHlfdHlwZS1hcGFydG1lbnQgcHJvcGVydHlfbG9jYXRpb24tdmljdG9yaWEtaXNsYW5kIHByb3BlcnR5X3N0YXR1cy1mb3ItcmVudCBwcm9wZXJ0eV9zdGF0dXMtc2hvcnQtc3RheXMgcHJvcGVydHlfYW1lbml0eS0yNGhycy1wb3dlciBwcm9wZXJ0eV9hbWVuaXR5LWJhbGNvbnkgcHJvcGVydHlfYW1lbml0eS1jYXItcGFyayBwcm9wZXJ0eV9hbWVuaXR5LWNjdHYgcHJvcGVydHlfYW1lbml0eS1maXR0ZWQtYmF0aHJvb21zIHByb3BlcnR5X2FtZW5pdHktZml0dGVkLWtpdGNoZW4gcHJvcGVydHlfYW1lbml0eS1mdWxseS1mdXJuaXNoZWQgcHJvcGVydHlfYW1lbml0eS1neW0gcHJvcGVydHlfYW1lbml0eS1ob21lLWVudGVydGFpbm1lbnQtdW5pdCBwcm9wZXJ0eV9hbWVuaXR5LWphY3V6emkgcHJvcGVydHlfYW1lbml0eS1wcml2YXRlLWVsZXZhdG9yIHByb3BlcnR5X2FtZW5pdHktc3dpbW1pbmctcG9vbCBwcm9wZXJ0eV9hbWVuaXR5LXdhbGstaW4tY2xvc2V0IHByb3BlcnR5X2FtZW5pdHktd2F0ZXItdmlldyIgZGF0YS1sYXRpdHVkZT0iNi40Mjk2MDEyIiBkYXRhLWxvbmdpdHVkZT0iMy40MTcyNjQ2IiBkYXRhLWltZz0iaHR0cHM6Ly9pMC53cC5jb20vY3dsYWdvcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTAvREpJXzAwMjEtMi5qcGc/cmVzaXplPTg1MCUyQzU1MCYjMDM4O3NzbD0xIiBkYXRhLWltYWdlcz0iWyZxdW90O2h0dHBzOlwvXC9pMC53cC5jb21cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIxXC8xMFwvREpJXzAwMjEtMi5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU5OC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9ESklfMDc3MS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU1MS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU1NS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU1Ny5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU2MC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU2NC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU2NS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU2Ny5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU2OS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU3My5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU3NS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU3Ni5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU3OC5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU3OS5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU4Mi5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9EU0MwODU4Ny5qcGc/cmVzaXplPTgzNiUyQzk1MCZhbXA7c3NsPTEmcXVvdDssJnF1b3Q7aHR0cHM6XC9cL2kwLndwLmNvbVwvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzEwXC9ESklfMDAyMS0xLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTg4LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTkwLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NTkxLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NjA3LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90OywmcXVvdDtodHRwczpcL1wvaTAud3AuY29tXC9jd2xhZ29zLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyMVwvMTBcL0RTQzA4NjA5LmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSZxdW90O10iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciBmbGV4LW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS10aHVtYm5haWwiPgogICAgICAgIDxhIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSIgaHJlZj0iIyI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjgzNiIgaGVpZ2h0PSI5NTAiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zJTNEJiMwMzk7aHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJiMwMzk7IHZpZXdCb3glM0QmIzAzOTswIDAgODM2IDk1MCYjMDM5OyUyRiUzRSIgY2xhc3M9ImF0dGFjaG1lbnQtaG9tZW8tcHJvcGVydHktZ3JpZDEgc2l6ZS1ob21lby1wcm9wZXJ0eS1ncmlkMSB1bnZlaWwtaW1hZ2UiIGFsdD0iUm9zZSBvZiBTaGFyb24iIGRhdGEtc3JjPSJodHRwczovL2kwLndwLmNvbS9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8xMC9ESklfMDAyMS0yLmpwZz9yZXNpemU9ODM2JTJDOTUwJmFtcDtzc2w9MSIgLz48L2Rpdj4gICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InN0YXR1cy1wcm9wZXJ0eS1sYWJlbCIgaHJlZj0iIyIgc3R5bGU9IiI+Rm9yIFJlbnQ8L2E+CiAgICAgICAgCSAgICAgICAgICAgIAk8YSBjbGFzcz0ic3RhdHVzLXByb3BlcnR5LWxhYmVsIiBocmVmPSIjIiBzdHlsZT0iIj5TaG9ydCBTdGF5czwvYT4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZWQtcHJvcGVydHkiPkZlYXR1cmVkPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InByb3BlcnR5LXRpdGxlIj48YSBocmVmPSIjIiByZWw9ImJvb2ttYXJrIj4xIEJlZCBBcHQgV2l0aCBXYXRlcnZpZXc8L2E+PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1tZXRhcyBmbGV4LW1pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEgd2l0aC1pY29uLXRpdGxlIj4KCgkJCTxkaXYgY2xhc3M9InByb3BlcnR5LW1ldGEiPgoKCQkJCQkJCQkJPHNwYW4gY2xhc3M9InRpdGxlLW1ldGEiPgoJCQkJCQlCZWRzOgkJCQkJPC9zcGFuPgoJCQkJCgkJCQkJCQkJMQkJCQkJCQk8L2Rpdj4KCgkJPC9kaXY+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCjwvYXJ0aWNsZT48IS0tICNwb3N0LSMjIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOTM4OTFjNCBlbGVtZW50b3ItYWxpZ24tY2VudGVyIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1idXR0b24iIGRhdGEtaWQ9IjkzODkxYzQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImJ1dHRvbi5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIiPgoJCQk8YSBocmVmPSIjIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImVsZW1lbnRvci1idXR0b24tbGluayBlbGVtZW50b3ItYnV0dG9uIGVsZW1lbnRvci1zaXplLWxnIiByb2xlPSJidXR0b24iPgoJCQkJCQk8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWJ1dHRvbi1jb250ZW50LXdyYXBwZXIiPgoJCQkJCQk8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWJ1dHRvbi10ZXh0Ij5Ccm93c2UgT3VyIFNlcnZpY2VkIEFwYXJ0bWVudHM8L3NwYW4+CgkJPC9zcGFuPgoJCQkJCTwvYT4KCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4JCgkKCQkKCQkJCTxzZWN0aW9uIGNsYXNzPSJlbGVtZW50b3Itc2VjdGlvbiBlbGVtZW50b3ItdG9wLXNlY3Rpb24gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNmRhNjlhMyBlbGVtZW50b3Itc2VjdGlvbi1zdHJldGNoZWQgZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQiIGRhdGEtaWQ9IjZkYTY5YTMiIGRhdGEtZWxlbWVudF90eXBlPSJzZWN0aW9uIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7c3RyZXRjaF9zZWN0aW9uJnF1b3Q7OiZxdW90O3NlY3Rpb24tc3RyZXRjaGVkJnF1b3Q7LCZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7fSI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb250YWluZXIgZWxlbWVudG9yLWNvbHVtbi1nYXAtZXh0ZW5kZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXJvdyI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTEwMCBlbGVtZW50b3ItdG9wLWNvbHVtbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zOGI2MzVkIiBkYXRhLWlkPSIzOGI2MzVkIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIGVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lMDg1ZDIzIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1zcGFjZXIiIGRhdGEtaWQ9ImUwODVkMjMiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InNwYWNlci5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc3BhY2VyIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXNwYWNlci1pbm5lciI+PC9kaXY+CgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYmRiNjcxMSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iYmRiNjcxMSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5PdXIgU3RhdGlzdGljczwvaDI+CQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYzc5ZWZmYyBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iYzc5ZWZmYyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+SW5kdXN0cnkgdGlwcywgdHJlbmRzICZhbXA7IGluc2lnaHRzLiBZb3VyIGxvY2FsIGd1aWRlIHRvIHJlYWwgZXN0YXRlIGludmVzdG1lbnQ8L2Rpdj4JCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4KCQkJCTxzZWN0aW9uIGNsYXNzPSJlbGVtZW50b3Itc2VjdGlvbiBlbGVtZW50b3ItdG9wLXNlY3Rpb24gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZTJkYzI2MyBlbGVtZW50b3Itc2VjdGlvbi1zdHJldGNoZWQgZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQiIGRhdGEtaWQ9ImUyZGMyNjMiIGRhdGEtZWxlbWVudF90eXBlPSJzZWN0aW9uIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7c3RyZXRjaF9zZWN0aW9uJnF1b3Q7OiZxdW90O3NlY3Rpb24tc3RyZXRjaGVkJnF1b3Q7LCZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7fSI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb250YWluZXIgZWxlbWVudG9yLWNvbHVtbi1nYXAtZXh0ZW5kZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXJvdyI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTEwMCBlbGVtZW50b3ItdG9wLWNvbHVtbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0wM2E1MjZhIiBkYXRhLWlkPSIwM2E1MjZhIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIGVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1mY2FlZTdlIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1hcHVzX2VsZW1lbnRfcG9zdHMiIGRhdGEtaWQ9ImZjYWVlN2UiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb2x1bW5zJnF1b3Q7OjMsJnF1b3Q7c2xpZGVzX3RvX3Njcm9sbCZxdW90OzozfSIgZGF0YS13aWRnZXRfdHlwZT0iYXB1c19lbGVtZW50X3Bvc3RzLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtYmxvZ3Mgd2lkZ2V0IG5vLW1hcmdpbiAgY2Fyb3VzZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1jb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXItY2Fyb3VzZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9InBvc3QgcG9zdC1sYXlvdXQgcG9zdC1ncmlkIHBvc3QtZ3JpZC12MiBwb3N0LTE0MzYyIHR5cGUtcG9zdCBzdGF0dXMtcHVibGlzaCBmb3JtYXQtc3RhbmRhcmQgaGFzLXBvc3QtdGh1bWJuYWlsIGhlbnRyeSBjYXRlZ29yeS1ndWlkZSI+CiAgICA8ZGl2IGNsYXNzPSJsaXN0LWlubmVyIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGF0ZXN0LXJvdyBsYXRlc3Qtcm93MSI+CiAgICAgICAgCgkJCTx1bD4KCQkJCTxsaSBjbGFzcz0idGl0bGUiPjxoMz5MYXRlc3QgZGVwb3NpdDwvaDM+PC9saT4KCgogPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+WGF2MXRob21wPC9zcGFuPgoJCQkJCTxzcGFuPiQxMDAuMDA8L3NwYW4+CgkJCQkJPGk+PGltZyBzcmM9ImltYWdlcy8xMDAwLmdpZiI+PC9pPgoJCQkJPC9saT4KCQoKIDxsaT4KCQkJCQk8c3BhbiBjbGFzcz0ic3BhbjEiPkphbmVsbGU8L3NwYW4+CgkJCQkJPHNwYW4+JDIyMDAwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkKCiA8bGk+CgkJCQkJPHNwYW4gY2xhc3M9InNwYW4xIj5Fcmlja2E8L3NwYW4+CgkJCQkJPHNwYW4+JDcwMDAwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkKCiA8bGk+CgkJCQkJPHNwYW4gY2xhc3M9InNwYW4xIj5CaWFuY2E8L3NwYW4+CgkJCQkJPHNwYW4+JDEwMDAwMC4wMDwvc3Bhbj4KCQkJCQk8aT48aW1nIHNyYz0iaW1hZ2VzLzEwMDAuZ2lmIj48L2k+CgkJCQk8L2xpPgoJCgogPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+Q2xhdWRldHRlPC9zcGFuPgoJCQkJCTxzcGFuPiQyMDAwMDAuMDA8L3NwYW4+CgkJCQkJPGk+PGltZyBzcmM9ImltYWdlcy8xMDAwLmdpZiI+PC9pPgoJCQkJPC9saT4KCQoKIDxsaT4KCQkJCQk8c3BhbiBjbGFzcz0ic3BhbjEiPkthdGhyeW48L3NwYW4+CgkJCQkJPHNwYW4+JDEwMC4wMDwvc3Bhbj4KCQkJCQk8aT48aW1nIHNyYz0iaW1hZ2VzLzEwMDAuZ2lmIj48L2k+CgkJCQk8L2xpPgoJCgogPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+QXNwaW5hdDwvc3Bhbj4KCQkJCQk8c3Bhbj4kNTAwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMy5naWYiPjwvaT4KCQkJCTwvbGk+CgkKCiA8bGk+CgkJCQkJPHNwYW4gY2xhc3M9InNwYW4xIj5BbWVsaWE1PC9zcGFuPgoJCQkJCTxzcGFuPiQyMzU2ODAwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkKCiA8bGk+CgkJCQkJPHNwYW4gY2xhc3M9InNwYW4xIj5CcmlkZ2V0dDwvc3Bhbj4KCQkJCQk8c3Bhbj4kNTgwMDAuMDA8L3NwYW4+CgkJCQkJPGk+PGltZyBzcmM9ImltYWdlcy8xMDAwLmdpZiI+PC9pPgoJCQkJPC9saT4KCQoKIDxsaT4KCQkJCQk8c3BhbiBjbGFzcz0ic3BhbjEiPkFtZWxpYTU8L3NwYW4+CgkJCQkJPHNwYW4+JDcxNTkwMC4wMDwvc3Bhbj4KCQkJCQk8aT48aW1nIHNyYz0iaW1hZ2VzLzEwMDAuZ2lmIj48L2k+CgkJCQk8L2xpPgoJCgkJCQkKCgoKICAgICAgICAgICAgICAgIAkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQk8L3VsPgogICAgICAgICAgICAKCQk8L2Rpdj4gICAgICAgICAgCiAgICA8L2Rpdj4KPC9hcnRpY2xlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9InBvc3QgcG9zdC1sYXlvdXQgcG9zdC1ncmlkIHBvc3QtZ3JpZC12MiBwb3N0LTU1NDAgdHlwZS1wb3N0IHN0YXR1cy1wdWJsaXNoIGZvcm1hdC1zdGFuZGFyZCBoYXMtcG9zdC10aHVtYm5haWwgaGVudHJ5IGNhdGVnb3J5LWd1aWRlIj4KICAgIDxkaXYgY2xhc3M9Imxpc3QtaW5uZXIiPgogPGRpdiBjbGFzcz0ibGF0ZXN0LXJvdyBsYXRlc3Qtcm93MyI+CiAgICAgICAgCgkJCTx1bD4KCQkJCTxsaSBjbGFzcz0idGl0bGUiPjxoMz5MYXRlc3Qgd2l0aGRyYXdhbHM8L2gzPjwvbGk+CiAgICAgICAgICAgICAgICAKCiA8bGk+CgkJCQkJPHNwYW4gY2xhc3M9InNwYW4xIj5KZWFuNTc8L3NwYW4+CgkJCQkJPHNwYW4+JDE1MDAwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkgPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+S2F0aGVyaW5lNTUyPC9zcGFuPgoJCQkJCTxzcGFuPiQ3ODAwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkgPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+S2ltYmVyNDA8L3NwYW4+CgkJCQkJPHNwYW4+JDUwMDAuMDA8L3NwYW4+CgkJCQkJPGk+PGltZyBzcmM9ImltYWdlcy8xMDAwLmdpZiI+PC9pPgoJCQkJPC9saT4KCSA8bGk+CgkJCQkJPHNwYW4gY2xhc3M9InNwYW4xIj5TYW5kcmEwMDI8L3NwYW4+CgkJCQkJPHNwYW4+JDEwMzAwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkgPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+SmVhbjU3PC9zcGFuPgoJCQkJCTxzcGFuPiQxNDY3MC4wMDwvc3Bhbj4KCQkJCQk8aT48aW1nIHNyYz0iaW1hZ2VzLzEwMDAuZ2lmIj48L2k+CgkJCQk8L2xpPgoJIDxsaT4KCQkJCQk8c3BhbiBjbGFzcz0ic3BhbjEiPlNoZXJyZWxsMzg5PC9zcGFuPgoJCQkJCTxzcGFuPiQ3MzI2LjQzPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkgPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+VGhlbG1hMTEyPC9zcGFuPgoJCQkJCTxzcGFuPiQzODkwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkgPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+SmVhbjU3PC9zcGFuPgoJCQkJCTxzcGFuPiQxMjU3MC4wMDwvc3Bhbj4KCQkJCQk8aT48aW1nIHNyYz0iaW1hZ2VzLzEwMDAuZ2lmIj48L2k+CgkJCQk8L2xpPgoJIDxsaT4KCQkJCQk8c3BhbiBjbGFzcz0ic3BhbjEiPktpbWJlcjQwPC9zcGFuPgoJCQkJCTxzcGFuPiQ4NjUwLjAwPC9zcGFuPgoJCQkJCTxpPjxpbWcgc3JjPSJpbWFnZXMvMTAwMC5naWYiPjwvaT4KCQkJCTwvbGk+CgkgPGxpPgoJCQkJCTxzcGFuIGNsYXNzPSJzcGFuMSI+S2ltYmVybGV5PC9zcGFuPgoJCQkJCTxzcGFuPiQzMzkwMC4wMDwvc3Bhbj4KCQkJCQk8aT48aW1nIHNyYz0iaW1hZ2VzLzEwMDAuZ2lmIj48L2k+CgkJCQk8L2xpPgoJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJPC91bD4KICAgICAgICAgICAgCgkJPC9kaXY+CiAgICA8L2Rpdj4KPC9hcnRpY2xlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkKCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWE4MGRiZWUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXNwYWNlciIgZGF0YS1pZD0iYTgwZGJlZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0ic3BhY2VyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1zcGFjZXIiPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc3BhY2VyLWlubmVyIj48L2Rpdj4KCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4KCQkJCTxzZWN0aW9uIGNsYXNzPSJlbGVtZW50b3Itc2VjdGlvbiBlbGVtZW50b3ItdG9wLXNlY3Rpb24gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNGUyNDg1ZiBlbGVtZW50b3Itc2VjdGlvbi1zdHJldGNoZWQgZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQgZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWRlZmF1bHQiIGRhdGEtaWQ9IjRlMjQ4NWYiIGRhdGEtZWxlbWVudF90eXBlPSJzZWN0aW9uIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7c3RyZXRjaF9zZWN0aW9uJnF1b3Q7OiZxdW90O3NlY3Rpb24tc3RyZXRjaGVkJnF1b3Q7LCZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7fSI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb250YWluZXIgZWxlbWVudG9yLWNvbHVtbi1nYXAtZGVmYXVsdCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itcm93Ij4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtMTAwIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWYxMjA5YmUiIGRhdGEtaWQ9ImYxMjA5YmUiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTJjNWRlMjcgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXNwYWNlciIgZGF0YS1pZD0iMmM1ZGUyNyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0ic3BhY2VyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1zcGFjZXIiPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc3BhY2VyLWlubmVyIj48L2Rpdj4KCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLWlubmVyLXNlY3Rpb24gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOGQ3MzUxMiBlbGVtZW50b3Itc2VjdGlvbi1ib3hlZCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCIgZGF0YS1pZD0iOGQ3MzUxMiIgZGF0YS1lbGVtZW50X3R5cGU9InNlY3Rpb24iPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWRlZmF1bHQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXJvdyI+CgkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTUwIGVsZW1lbnRvci1pbm5lci1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZDY0Mjc5YiIgZGF0YS1pZD0iZDY0Mjc5YiIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZGMxZDBiYiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iZGMxZDBiYiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJPGgzIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij48aDEgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPlJFRkVSUkFMIENPTU1JU1NJT048L2gzPgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTMwMTFlOWUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIiBkYXRhLWlkPSIzMDExZTllIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJ0ZXh0LWVkaXRvci5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItdGV4dC1lZGl0b3IgZWxlbWVudG9yLWNsZWFyZml4Ij4KCQkJCTxwPkJlY29tZSBhIEJldGFyb2kgYWZmaWxpYXRlIGFuZCBlbmpveSBoaWdoIGNvbW1pc3Npb25zIGZvciBsaWZldGltZSAuLi4gWW91J2xsIGVhcm4gMTAlIGNvbW1pc3Npb24gZXZlcnkgdGltZSBpZiB5b3VyIGRvd25saW5lIG1hZGUgYSBkZXBvc2l0LiBUaGVyZSBpcyBubyBsaW1pdGF0aW9uIGZvciB0aGUgY29tbWlzc2lvbi4gPC9wPgkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC03ZWZlZDJkIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1idXR0b24iIGRhdGEtaWQ9IjdlZmVkMmQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImJ1dHRvbi5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIiPgoJCQk8YSBocmVmPSI/YT1zaWdudXAiIGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLWxpbmsgZWxlbWVudG9yLWJ1dHRvbiBlbGVtZW50b3Itc2l6ZS1tZCIgcm9sZT0iYnV0dG9uIj4KCQkJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1idXR0b24tY29udGVudC13cmFwcGVyIj4KCQkJCQkJPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1idXR0b24tdGV4dCI+Sm9pbiBOb3c8L3NwYW4+CgkJPC9zcGFuPgoJCQkJCTwvYT4KCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTUwIGVsZW1lbnRvci1pbm5lci1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOTBlMmFmOSIgZGF0YS1pZD0iOTBlMmFmOSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4KCQk8IS0tIFRyYWRpbmdWaWV3IFdpZGdldCBCRUdJTiAtLT4KPGRpdiBjbGFzcz0idHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0idHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lcl9fd2lkZ2V0Ij48L2Rpdj4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3MzLnRyYWRpbmd2aWV3LmNvbS9leHRlcm5hbC1lbWJlZGRpbmcvZW1iZWQtd2lkZ2V0LXRpbWVsaW5lLmpzIiBhc3luYz4KICB7CiAgImZlZWRNb2RlIjogImFsbF9zeW1ib2xzIiwKICAiY29sb3JUaGVtZSI6ICJsaWdodCIsCiAgImlzVHJhbnNwYXJlbnQiOiB0cnVlLAogICJkaXNwbGF5TW9kZSI6ICJyZWd1bGFyIiwKICAid2lkdGgiOiAiMTAwJSIsCiAgImhlaWdodCI6ICI1MDAiLAogICJsb2NhbGUiOiAiZW4iCn0KICA8L3NjcmlwdD4KPC9kaXY+CjwhLS0gVHJhZGluZ1ZpZXcgV2lkZ2V0IEVORCAtLT4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWRhZTVkOGEgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXNwYWNlciIgZGF0YS1pZD0iZGFlNWQ4YSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0ic3BhY2VyLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1zcGFjZXIiPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc3BhY2VyLWlubmVyIj48L2Rpdj4KCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4KIAoJCQkJCgkJCQkJCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj48IS0tIC5zaXRlLW1haW4gLS0+CgkJCQkJPC9kaXY+PCEtLSAuY29udGVudC1hcmVhIC0tPgoJCQk8L2Rpdj4KPC9zZWN0aW9uPgoJPC9kaXY+PCEtLSAuc2l0ZS1jb250ZW50IC0tPgoJCQkJCTxkaXYgaWQ9ImFwdXMtZm9vdGVyIiBjbGFzcz0iYXB1cy1mb290ZXIgZm9vdGVyLWJ1aWxkZXItd3JhcHBlciAgZm9vdGVyLTEiPjxkaXYgY2xhc3M9ImFwdXMtZm9vdGVyLWlubmVyIj48c3R5bGUgaWQ9ImVsZW1lbnRvci1wb3N0LTU4Ij4uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04NWUyZWRmOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwgLmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODVlMmVkZiA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDMwNDk7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg1ZTJlZGZ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlciAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIGJveC1zaGFkb3cgMC4zcztwYWRkaW5nOjcwcHggMHB4IDcwcHggMHB4O30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04NWUyZWRmID4gLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXl7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlci1yYWRpdXMgMC4zcywgb3BhY2l0eSAwLjNzO30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMDY4MDRjIC53aWRnZXQtdGl0bGV7Y29sb3I6I0ZGRkZGRjt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDA2ODA0YyAud2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojQzVDREQ5O30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMDY4MDRjIC53aWRnZXQtY29udGVudCBhOmhvdmVye2NvbG9yOiNGRkZGRkY7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU2ODQxNGUgLndpZGdldC10aXRsZXtjb2xvcjojRkZGRkZGO30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lNjg0MTRlIC53aWRnZXQtY29udGVudCBhe2NvbG9yOiNDNUNERDk7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU2ODQxNGUgLndpZGdldC1jb250ZW50IGE6aG92ZXJ7Y29sb3I6I0ZGRkZGRjt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmUxM2NlYyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Y29sb3I6I0ZGRkZGRjtmb250LXNpemU6MThweDt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjlmY2ZlNCAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Y29sb3I6I0M1Q0REOTtmb250LXNpemU6MTRweDt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjlmY2ZlNCA+IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcnttYXJnaW46MTBweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjgxN2RlZSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Y29sb3I6I0M1Q0REOTtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDozMHB4O30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iODE3ZGVlID4gLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVye21hcmdpbjo1cHggMHB4IDBweCAwcHg7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRiYTdlYjEgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle2NvbG9yOiNDNUNERDk7Zm9udC1zaXplOjE0cHg7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRiYTdlYjEgPiAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXJ7bWFyZ2luOjVweCAwcHggMHB4IDBweDt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTg2Mzg2MyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Y29sb3I6I0ZGRkZGRjtmb250LXNpemU6MThweDt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjliNTMzMiAud2lkZ2V0LXRpdGxlIHtjb2xvcjojRkZGRkZGO30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02OWI1MzMyIC5zb2NpYWwgYXtjb2xvcjojQzVDREQ5O30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02OWI1MzMyIC5zb2NpYWwgYTpob3Zlcntjb2xvcjojRkZGRkZGO30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02OWI1MzMyIC5zb2NpYWwgYTpmb2N1c3tjb2xvcjojRkZGRkZGO30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02OWI1MzMyID4gLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVye21hcmdpbjoyMHB4IDBweCAwcHggMHB4O30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zYTQwNDA0ID4gLmVsZW1lbnRvci1jb250YWluZXIgPiAuZWxlbWVudG9yLXJvdyA+IC5lbGVtZW50b3ItY29sdW1uID4gLmVsZW1lbnRvci1jb2x1bW4td3JhcCA+IC5lbGVtZW50b3Itd2lkZ2V0LXdyYXB7YWxpZ24tY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zYTQwNDA0Om5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwgLmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E0MDQwNCA+IC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyID4gLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNhNDA0MDR7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MsIGJvcmRlciAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIGJveC1zaGFkb3cgMC4zcztwYWRkaW5nOjVweCAwcHggNXB4IDBweDt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E0MDQwNCA+IC5lbGVtZW50b3ItYmFja2dyb3VuZC1vdmVybGF5e3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzLCBib3JkZXItcmFkaXVzIDAuM3MsIG9wYWNpdHkgMC4zczt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjYzOWQ5OSAud2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojQzVDREQ5O30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iNjM5ZDk5IC53aWRnZXQtY29udGVudCBhOmhvdmVye2NvbG9yOiNGRkZGRkY7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThjMWRlMWN7dGV4dC1hbGlnbjpyaWdodDt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOGMxZGUxYyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGV7Y29sb3I6I0M1Q0REOTt9QG1lZGlhKG1pbi13aWR0aDo3NjhweCl7LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjJlMTg1OHt3aWR0aDoyMCU7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTMwZDkxMDF7d2lkdGg6MTkuNDg3JTt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODNmNWFmMnt3aWR0aDoyNiU7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZiZjE4NGR7d2lkdGg6MzQuNDUxJTt9fUBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSBhbmQgKG1pbi13aWR0aDo3NjhweCl7LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjJlMTg1OHt3aWR0aDozMCU7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTMwZDkxMDF7d2lkdGg6MTAwJTt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODNmNWFmMnt3aWR0aDozMCU7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZiZjE4NGR7d2lkdGg6NDAlO319QG1lZGlhKG1heC13aWR0aDoxMDI0cHgpey5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg1ZTJlZGZ7cGFkZGluZzoyMHB4IDBweCAyMHB4IDBweDt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E0MDQwNHtwYWRkaW5nOjVweCAwcHggNXB4IDBweDt9fUBtZWRpYShtYXgtd2lkdGg6NzY3cHgpey5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIyZTE4NTh7d2lkdGg6MTAwJTt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzBkOTEwMXt3aWR0aDoxMDAlO30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04M2Y1YWYye3dpZHRoOjEwMCU7fS5lbGVtZW50b3ItNTggLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZiZjE4NGR7d2lkdGg6MTAwJTt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjYzOWQ5OSAubWVudXt0ZXh0LWFsaWduOmNlbnRlcjt9LmVsZW1lbnRvci01OCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTBiMjdjYiA+IC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgPiAuZWxlbWVudG9yLXdpZGdldC13cmFwe3BhZGRpbmc6MHB4IDE1cHggMTVweCAxNXB4O30uZWxlbWVudG9yLTU4IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04YzFkZTFje3RleHQtYWxpZ246Y2VudGVyO319PC9zdHlsZT4JCTxkaXYgZGF0YS1lbGVtZW50b3ItdHlwZT0id3AtcG9zdCIgZGF0YS1lbGVtZW50b3ItaWQ9IjU4IiBjbGFzcz0iZWxlbWVudG9yIGVsZW1lbnRvci01OCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbm5lciI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itc2VjdGlvbi13cmFwIj4KCQkJCQkJCQkJPHNlY3Rpb24gY2xhc3M9ImVsZW1lbnRvci1zZWN0aW9uIGVsZW1lbnRvci10b3Atc2VjdGlvbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04NWUyZWRmIGVsZW1lbnRvci1zZWN0aW9uLXN0cmV0Y2hlZCBmdG1vYmlsZSBlbGVtZW50b3Itc2VjdGlvbi1ib3hlZCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCBlbGVtZW50b3Itc2VjdGlvbi1oZWlnaHQtZGVmYXVsdCIgZGF0YS1pZD0iODVlMmVkZiIgZGF0YS1lbGVtZW50X3R5cGU9InNlY3Rpb24iIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtzdHJldGNoX3NlY3Rpb24mcXVvdDs6JnF1b3Q7c2VjdGlvbi1zdHJldGNoZWQmcXVvdDssJnF1b3Q7YmFja2dyb3VuZF9iYWNrZ3JvdW5kJnF1b3Q7OiZxdW90O2NsYXNzaWMmcXVvdDt9Ij4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbnRhaW5lciBlbGVtZW50b3ItY29sdW1uLWdhcC1leHRlbmRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itcm93Ij4KCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtMjUgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMjJlMTg1OCIgZGF0YS1pZD0iMjJlMTg1OCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMDA2ODA0YyBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtYXB1c19lbGVtZW50X25hdl9tZW51IiBkYXRhLWlkPSIwMDY4MDRjIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJhcHVzX2VsZW1lbnRfbmF2X21lbnUuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCSAgICAgICAgPGRpdiBjbGFzcz0id2lkZ2V0LW5hdi1tZW51IG5vLW1hcmdpbiB3aWRnZXQgICI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ3aWRnZXQtdGl0bGUiPlF1aWNrIExpbmtzPC9oMj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVudS1xdWljay1saW5rcy0xLWNvbnRhaW5lciI+PHVsIGlkPSJtZW51LXF1aWNrLWxpbmtzLTEiIGNsYXNzPSJtZW51Ij48bGkgaWQ9Im1lbnUtaXRlbS01NjI2IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tNTYyNiI+PGEgaHJlZj0iP2E9aG9tZSI+SG9tZTwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS01NjMxIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLTU2MzEiPjxhIGhyZWY9Ij9hPWFib3V0Ij5BYm91dDwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS01NjI4IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tNTYyOCI+PGEgaHJlZj0iP2E9ZmFxIj5GQVEnczwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS01NjMyIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLTU2MzIiPjxhIGhyZWY9Ij9hPXJ1bGVzIj5UZXJtczwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS01NjMwIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tNTYzMCI+PGEgaHJlZj0iP2E9bmV3cyI+TmV3czwvYT48L2xpPgo8L3VsPjwvZGl2PiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0yNSBlbGVtZW50b3ItdG9wLWNvbHVtbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zMGQ5MTAxIiBkYXRhLWlkPSIzMGQ5MTAxIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIGVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lNjg0MTRlIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1hcHVzX2VsZW1lbnRfbmF2X21lbnUiIGRhdGEtaWQ9ImU2ODQxNGUiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImFwdXNfZWxlbWVudF9uYXZfbWVudS5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtbmF2LW1lbnUgbm8tbWFyZ2luIHdpZGdldCAgIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9IndpZGdldC10aXRsZSI+U2VydmljZXM8L2gyPgogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZW51LXF1aWNrLWxpbmtzLTItY29udGFpbmVyIj48dWwgaWQ9Im1lbnUtcXVpY2stbGlua3MtMiIgY2xhc3M9Im1lbnUiPjxsaSBpZD0ibWVudS1pdGVtLTMyODgiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS0zMjg4Ij48YSBocmVmPSI/YT1mYXEiPkZBUXM8L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tMzI5MCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLTMyOTAiPjxhIGhyZWY9Ij9hPXJ1bGVzIj5UZXJtczwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS0zMjkxIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tMzI5MSI+PGEgaHJlZj0iP2E9c2lnbnVwIj5TaWduVXA8L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tMzI4OSIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLTMyODkiPjxhIGhyZWY9Ij9hPWxvZ2luIj5Mb2dpbjwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS0zMjkzIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tMzI5MyI+PGEgaHJlZj0iP2E9c3VwcG9ydCI+U3VwcG9ydDwvYT48L2xpPgo8L3VsPjwvZGl2PiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC0yNSBlbGVtZW50b3ItdG9wLWNvbHVtbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04M2Y1YWYyIiBkYXRhLWlkPSI4M2Y1YWYyIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIGVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iZTEzY2VjIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSJiZTEzY2VjIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQk8aDIgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPkNvbnRhY3QgVXM8L2gyPgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTY5ZmNmZTQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjY5ZmNmZTQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPjxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QGJldGFyb2kubHRkIj5zdXBwb3J0QGJldGFyb2kubHRkPC9hPjwvZGl2PgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWI4MTdkZWUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9ImI4MTdkZWUiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPjEzNyBMb3ZlZGF5IFJvYWQsIExvbmRvbiwgRW5nbGFuZCwgVzEzIDlKVTwvZGl2PgkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTwhLS1kaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWRiYTdlYjEgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9ImRiYTdlYjEiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPisyMzQgQ29taW5nIFNvb24gPGJyLz4gPGJyLz4gCisyMzQgQ29taW5nIFNvb248L2Rpdj4JCTwvZGl2PgoJCQkJPC9kaXYtLT4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uIGVsZW1lbnRvci1jb2wtMjUgZWxlbWVudG9yLXRvcC1jb2x1bW4gZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNmJmMTg0ZCIgZGF0YS1pZD0iNmJmMTg0ZCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbHVtbiI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4td3JhcCBlbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC13cmFwIj4KCQkJCQkJCgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0yNWQ5YTA1IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1hcHVzX2VsZW1lbnRfbWFpbGNoaW1wIiBkYXRhLWlkPSIyNWQ5YTA1IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJhcHVzX2VsZW1lbnRfbWFpbGNoaW1wLmRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgoJCQkgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3dpZGdldHMuY29pbmdlY2tvLmNvbS9jb2luZ2Vja28tY29pbi1wcmljZS1jaGFydC13aWRnZXQuanMiPjwvc2NyaXB0Pgo8Y29pbmdlY2tvLWNvaW4tcHJpY2UtY2hhcnQtd2lkZ2V0ICBjb2luLWlkPSJiaXRjb2luIiBjdXJyZW5jeT0idXNkIiBoZWlnaHQ9IjMwMCIgbG9jYWxlPSJlbiI+PC9jb2luZ2Vja28tY29pbi1wcmljZS1jaGFydC13aWRnZXQ+CiAgICAgICAgCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQk8L3NlY3Rpb24+CgkJCQk8c2VjdGlvbiBjbGFzcz0iZWxlbWVudG9yLXNlY3Rpb24gZWxlbWVudG9yLXRvcC1zZWN0aW9uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTNhNDA0MDQgZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIGVsZW1lbnRvci1zZWN0aW9uLWNvbnRlbnQtbWlkZGxlIGVsZW1lbnRvci1zZWN0aW9uLWJveGVkIGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IGVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1kZWZhdWx0IiBkYXRhLWlkPSIzYTQwNDA0IiBkYXRhLWVsZW1lbnRfdHlwZT0ic2VjdGlvbiIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3N0cmV0Y2hfc2VjdGlvbiZxdW90OzomcXVvdDtzZWN0aW9uLXN0cmV0Y2hlZCZxdW90OywmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90O30iPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29udGFpbmVyIGVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1yb3ciPgoJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1jb2x1bW4gZWxlbWVudG9yLWNvbC01MCBlbGVtZW50b3ItdG9wLWNvbHVtbiBlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01YjQ2OThmIiBkYXRhLWlkPSI1YjQ2OThmIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29sdW1uIj4KCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbi13cmFwIGVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LXdyYXAiPgoJCQkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iNjM5ZDk5IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1hcHVzX2VsZW1lbnRfbmF2X21lbnUiIGRhdGEtaWQ9ImI2MzlkOTkiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImFwdXNfZWxlbWVudF9uYXZfbWVudS5kZWZhdWx0Ij4KCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KCQkJICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtbmF2LW1lbnUgbm8tbWFyZ2luIHdpZGdldCAgc3RfbGluZSI+CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZW51LWNvcHlyaWdodC1jb250YWluZXIiPjx1bCBpZD0ibWVudS1jb3B5cmlnaHQiIGNsYXNzPSJtZW51Ij48bGkgaWQ9Im1lbnUtaXRlbS03OSIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLTc5Ij48YSBocmVmPSIjIj5Qcml2YWN5IFBvbGljeTwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS04MCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLTgwIj48YSBocmVmPSIjIj5TaXRlbWFwPC9hPjwvbGk+CjwvdWw+PC9kaXY+ICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgICAgICAJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iZWxlbWVudG9yLWNvbHVtbiBlbGVtZW50b3ItY29sLTUwIGVsZW1lbnRvci10b3AtY29sdW1uIGVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWUwYjI3Y2IiIGRhdGEtaWQ9ImUwYjI3Y2IiIGRhdGEtZWxlbWVudF90eXBlPSJjb2x1bW4iPgoJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3ItY29sdW1uLXdyYXAgZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtd3JhcCI+CgkJCQkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LThjMWRlMWMgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjhjMWRlMWMiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CgkJCQk8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CgkJCTxkaXYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPsKpIDIwMjIgQkVUQVJPSS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L2Rpdj4JCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvc2VjdGlvbj4KCQkJCQkJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCTwvZGl2PjwvZGl2PgoJCTxzdHlsZT4KLmZsb2F0ewoJcG9zaXRpb246Zml4ZWQ7Cgl3aWR0aDphdXRvOwoJaGVpZ2h0OmF1dG87Cglib3R0b206NDBweDsKCWxlZnQ6NDBweDsKCWJhY2tncm91bmQtY29sb3I6IzAwNjZlZDsKCWNvbG9yOiNGRkY7Cglib3JkZXItcmFkaXVzOjBweDsKCXRleHQtYWxpZ246Y2VudGVyOwogICAgYWxpZ246bGVmdDsKCQp9Cjwvc3R5bGU+Cgo8IS0tIENvZGUgYmVnaW5zIGhlcmUgLS0+Cgo8YSBocmVmPSIjIiBjbGFzcz0iZmxvYXQiPgo8ZGl2IGlkPSJ5dFdpZGdldCI+PC9kaXY+CjwvYT4KCjxkaXYgaWQ9Inl0V2lkZ2V0Ij48L2Rpdj48c2NyaXB0IHNyYz0iaHR0cHM6Ly90cmFuc2xhdGUueWFuZGV4Lm5ldC93ZWJzaXRlLXdpZGdldC92MS93aWRnZXQuanM/d2lkZ2V0SWQ9eXRXaWRnZXQmcGFnZUxhbmc9emgmd2lkZ2V0VGhlbWU9bGlnaHQmYXV0b01vZGU9dHJ1ZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KCQk8YSBocmVmPSIjIiBpZD0iYmFjay10by10b3AiIGNsYXNzPSJhZGQtZml4LXRvcCI+CgkJCTxpIGNsYXNzPSJmbGF0aWNvbi1hcnJvd3MiPjwvaT4KCQk8L2E+Cgk8L2Rpdj48IS0tIC5zaXRlIC0tPgo8c2NyaXB0PihmdW5jdGlvbigpIHtmdW5jdGlvbiBtYXliZVByZWZpeFVybEZpZWxkKCkgewoJaWYgKHRoaXMudmFsdWUudHJpbSgpICE9PSAnJyAmJiB0aGlzLnZhbHVlLmluZGV4T2YoJ2h0dHAnKSAhPT0gMCkgewoJCXRoaXMudmFsdWUgPSAiaHR0cDovLyIgKyB0aGlzLnZhbHVlOwoJfQp9Cgp2YXIgdXJsRmllbGRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1jNHdwLWZvcm0gaW5wdXRbdHlwZT0idXJsIl0nKTsKaWYgKHVybEZpZWxkcykgewoJZm9yICh2YXIgaj0wOyBqIDwgdXJsRmllbGRzLmxlbmd0aDsgaisrKSB7CgkJdXJsRmllbGRzW2pdLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBtYXliZVByZWZpeFVybEZpZWxkKTsKCX0KfQp9KSgpOzwvc2NyaXB0PgkKCgkJICAgIDwhLS0gRmFjZWJvb2sgUGl4ZWwgRXZlbnQgQ29kZSAtLT4KICAgIDxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAnd3BjZjdtYWlsc2VudCcsIGZ1bmN0aW9uKCBldmVudCApIHsKICAgICAgICBpZiggImZiX3B4bF9jb2RlIiBpbiBldmVudC5kZXRhaWwuYXBpUmVzcG9uc2UpewogICAgICAgICAgZXZhbChldmVudC5kZXRhaWwuYXBpUmVzcG9uc2UuZmJfcHhsX2NvZGUpOwogICAgICAgIH0KICAgICAgfSwgZmFsc2UgKTsKICAgIDwvc2NyaXB0PgogICAgPCEtLSBFbmQgRmFjZWJvb2sgUGl4ZWwgRXZlbnQgQ29kZSAtLT4KICAgIDxkaXYgaWQ9J2ZiLXB4bC1hamF4LWNvZGUnPjwvZGl2PjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J3dyZS1zZWxlY3QyLWNzcycgIGhyZWY9J3dwLWNvbnRlbnQvcGx1Z2lucy93cC1yZWFsZXN0YXRlL2Fzc2V0cy9qcy9zZWxlY3QyL3NlbGVjdDIubWluLmNzcz92ZXI9NC4wLjUnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdlLWFuaW1hdGlvbnMtY3NzJyAgaHJlZj0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvbGliL2FuaW1hdGlvbnMvYW5pbWF0aW9ucy5taW4uY3NzP3Zlcj0zLjYuMicgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2VsZW1lbnRvci1pY29ucy1mYS1icmFuZHMtY3NzJyAgaHJlZj0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvbGliL2ZvbnQtYXdlc29tZS9jc3MvYnJhbmRzLm1pbi5jc3M/dmVyPTUuMTUuMycgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvdGhlbWVzL2hvbWVvL2pzL2Jvb3RzdHJhcC5taW4uanM/dmVyPTIwMTUwMzMwJyBpZD0nYm9vdHN0cmFwLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vanMvc2xpY2subWluLmpzP3Zlcj0xLjguMCcgaWQ9J3NsaWNrLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIGlkPSdjb3VudGRvd24tanMtZXh0cmEnPgovKiA8IVtDREFUQVsgKi8KdmFyIGhvbWVvX2NvdW50ZG93bl9vcHRzID0geyJkYXlzIjoiRGF5cyIsImhvdXJzIjoiSHJzIiwibWlucyI6Ik1pbnMiLCJzZWNzIjoiU2VjcyJ9OwovKiBdXT4gKi8KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvdGhlbWVzL2hvbWVvL2pzL2NvdW50ZG93bi5qcz92ZXI9MjAxNTAzMTUnIGlkPSdjb3VudGRvd24tanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3RoZW1lcy9ob21lby9qcy9qcXVlcnkubWFnbmlmaWMtcG9wdXAubWluLmpzP3Zlcj0xLjEuMCcgaWQ9J2pxdWVyeS1tYWduaWZpYy1wb3B1cC1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvdGhlbWVzL2hvbWVvL2pzL2pxdWVyeS51bnZlaWwuanM/dmVyPTEuMS4wJyBpZD0nanF1ZXJ5LXVudmVpbC1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvdGhlbWVzL2hvbWVvL2pzL3BlcmZlY3Qtc2Nyb2xsYmFyLm1pbi5qcz92ZXI9MS41LjAnIGlkPSdwZXJmZWN0LXNjcm9sbGJhci1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2xpYi93YXlwb2ludHMvd2F5cG9pbnRzLm1pbi5qcz92ZXI9NC4wLjInIGlkPSdlbGVtZW50b3Itd2F5cG9pbnRzLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vanMvc3RpY2t5Lm1pbi5qcz92ZXI9NC4wLjEnIGlkPSdzdGlja3ktanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3RoZW1lcy9ob21lby9qcy9qcXVlcnkubW1lbnUuanM/dmVyPTAuNi4xMicgaWQ9J2pxdWVyeS1tbWVudS1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBpZD0naG9tZW8tZnVuY3Rpb25zLWpzLWV4dHJhJz4KLyogPCFbQ0RBVEFbICovCnZhciBob21lb19hamF4ID0geyJhamF4dXJsIjoiaHR0cHM6XC9cL2N3bGFnb3MuY29tXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJwcmV2aW91cyI6IlByZXZpb3VzIiwibmV4dCI6Ik5leHQiLCJtbWVudV90aXRsZSI6Ik1lbnUifTsKLyogXV0+ICovCjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3RoZW1lcy9ob21lby9qcy9mdW5jdGlvbnMuanM/dmVyPTIwMTUwMzMwJyBpZD0naG9tZW8tZnVuY3Rpb25zLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIGlkPSdob21lby1mdW5jdGlvbnMtanMtYWZ0ZXInPgooZnVuY3Rpb24oaHRtbCl7aHRtbC5jbGFzc05hbWUgPSBodG1sLmNsYXNzTmFtZS5yZXBsYWNlKC9cYm5vLWpzXGIvLCdqcycpfSkoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vYzAud3AuY29tL3AvamV0cGFjay8xMC42L19pbmMvYnVpbGQvcGhvdG9uL3Bob3Rvbi5taW4uanMnIGlkPSdqZXRwYWNrLXBob3Rvbi1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vYzAud3AuY29tL2MvNS45LjMvd3AtaW5jbHVkZXMvanMvZGlzdC92ZW5kb3IvcmVnZW5lcmF0b3ItcnVudGltZS5taW4uanMnIGlkPSdyZWdlbmVyYXRvci1ydW50aW1lLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cHM6Ly9jMC53cC5jb20vYy81LjkuMy93cC1pbmNsdWRlcy9qcy9kaXN0L3ZlbmRvci93cC1wb2x5ZmlsbC5taW4uanMnIGlkPSd3cC1wb2x5ZmlsbC1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBpZD0nY29udGFjdC1mb3JtLTctanMtZXh0cmEnPgovKiA8IVtDREFUQVsgKi8KdmFyIHdwY2Y3ID0geyJhcGkiOnsicm9vdCI6Imh0dHBzOlwvXC9jd2xhZ29zLmNvbVwvd3AtanNvblwvIiwibmFtZXNwYWNlIjoiY29udGFjdC1mb3JtLTdcL3YxIn0sImNhY2hlZCI6IjEifTsKLyogXV0+ICovCjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvY29udGFjdC1mb3JtLTcvaW5jbHVkZXMvanMvaW5kZXguanM/dmVyPTUuNS42JyBpZD0nY29udGFjdC1mb3JtLTctanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvd3AtcmVhbGVzdGF0ZS9hc3NldHMvanMvbWFnbmlmaWMvanF1ZXJ5Lm1hZ25pZmljLXBvcHVwLm1pbi5qcz92ZXI9MS4xLjAnIGlkPSdtYWduaWZpYy1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vYzAud3AuY29tL2MvNS45LjMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L3VpL2NvcmUubWluLmpzJyBpZD0nanF1ZXJ5LXVpLWNvcmUtanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL2MwLndwLmNvbS9jLzUuOS4zL3dwLWluY2x1ZGVzL2pzL2pxdWVyeS91aS9tb3VzZS5taW4uanMnIGlkPSdqcXVlcnktdWktbW91c2UtanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL2MwLndwLmNvbS9jLzUuOS4zL3dwLWluY2x1ZGVzL2pzL2pxdWVyeS91aS9zbGlkZXIubWluLmpzJyBpZD0nanF1ZXJ5LXVpLXNsaWRlci1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy93cC1yZWFsZXN0YXRlL2Fzc2V0cy9qcy9qcXVlcnkudWkudG91Y2gtcHVuY2gubWluLmpzP3Zlcj0yMDE1MDMzMCcgaWQ9J2pxdWVyeS11aS10b3VjaC1wdW5jaC1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBpZD0nd3AtcmVhbGVzdGF0ZS1tYWluLWpzLWV4dHJhJz4KLyogPCFbQ0RBVEFbICovCnZhciB3cF9yZWFsZXN0YXRlX29wdHMgPSB7ImFqYXh1cmwiOiJodHRwczpcL1wvY3dsYWdvcy5jb21cL3dwLWFkbWluXC9hZG1pbi1hamF4LnBocCIsImFqYXh1cmxfZW5kcG9pbnQiOiJcLz93cmUtYWpheD0lJWVuZHBvaW50JSUiLCJkYXNoYm9hcmRfdXJsIjoiaHR0cHM6XC9cL2N3bGFnb3MuY29tXC9kYXNoYm9hcmRcLyIsImxvZ2luX3JlZ2lzdGVyX3VybCI6Imh0dHBzOlwvXC9jd2xhZ29zLmNvbVwvIiwiYWZ0ZXJfbG9naW5fcGFnZV9hZ2VuY3lfdXJsIjoiaHR0cHM6XC9cL2N3bGFnb3MuY29tXC9kYXNoYm9hcmRcLyIsImFmdGVyX2xvZ2luX3BhZ2VfYWdlbnRfdXJsIjoiaHR0cHM6XC9cL2N3bGFnb3MuY29tXC9kYXNoYm9hcmRcLyIsImFmdGVyX2xvZ2luX3BhZ2VfdXNlcl91cmwiOiJodHRwczpcL1wvY3dsYWdvcy5jb21cL2Rhc2hib2FyZFwvIiwiaG9tZV91cmwiOiJodHRwczpcL1wvY3dsYWdvcy5jb21cLyIsIm1vbmV5X2RlY2ltYWxzIjoiMCIsIm1vbmV5X2RlY19wb2ludCI6Ii4iLCJtb25leV90aG91c2FuZHNfc2VwYXJhdG9yIjoiLCIsInNob3dfbW9yZSI6IlNob3cgbW9yZSArIiwic2hvd19tb3JlX2ljb24iOiIiLCJzaG93X2xlc3MiOiJTaG93IGxlc3MgLSIsInNob3dfbGVzc19pY29uIjoiIiwibWFwX3NlcnZpY2UiOiJtYXBib3giLCJnZW9jb2Rlcl9jb3VudHJ5IjoibmciLCJybV9pdGVtX3R4dCI6IkFyZSB5b3Ugc3VyZT8iLCJhamF4X25vbmNlIjoiOTNiYzg5MGY3YiIsImFwcHJvdmFsX3R5cGUiOiJhdXRvIiwicmVzZW5kX290cF93YWl0X3RpbWUiOiIzMCIsInJlY2FwdGNoYV9lbmFibGUiOiIiLCJkaXZpc29ycyI6eyIiOnsiZGl2aXNvciI6MSwia2V5IjoiIn19LCJlbmFibGVfbXVsdGlfY3VycmVuY2llcyI6InllcyJ9OwovKiBdXT4gKi8KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy93cC1yZWFsZXN0YXRlL2Fzc2V0cy9qcy9tYWluLmpzP3Zlcj0yMDEzMTAyMicgaWQ9J3dwLXJlYWxlc3RhdGUtbWFpbi1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy93cC1wcml2YXRlLW1lc3NhZ2UvYXNzZXRzL2pzL3BlcmZlY3Qtc2Nyb2xsYmFyLmpxdWVyeS5taW4uanM/dmVyPTAuNi4xMCcgaWQ9J3BlcmZlY3Qtc2Nyb2xsYmFyLWpxdWVyeS1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBpZD0nd3AtcHJpdmF0ZS1tZXNzYWdlLW1haW4tanMtZXh0cmEnPgovKiA8IVtDREFUQVsgKi8KdmFyIHdwX3ByaXZhdGVfbWVzc2FnZV9vcHRzID0geyJhamF4dXJsIjoiaHR0cHM6XC9cL2N3bGFnb3MuY29tXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAifTsKLyogXV0+ICovCjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvd3AtcHJpdmF0ZS1tZXNzYWdlL2Fzc2V0cy9qcy9tYWluLmpzP3Zlcj0yMDEzMTAyMicgaWQ9J3dwLXByaXZhdGUtbWVzc2FnZS1tYWluLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL3dwLXJlYWxlc3RhdGUvYXNzZXRzL2pzL2pxdWVyeS5oaWdobGlnaHQuanM/dmVyPTUnIGlkPSdqcXVlcnktaGlnaGxpZ2h0LWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL3dwLXJlYWxlc3RhdGUvYXNzZXRzL2pzL2xlYWZsZXQvbGVhZmxldC5qcz92ZXI9MS41LjEnIGlkPSdsZWFmbGV0LWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL3dwLXJlYWxlc3RhdGUvYXNzZXRzL2pzL2xlYWZsZXQvQ29udHJvbC5HZW9jb2Rlci5qcz92ZXI9MS41LjEnIGlkPSdjb250cm9sLWdlb2NvZGVyLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL3dwLXJlYWxlc3RhdGUvYXNzZXRzL2pzL2xlYWZsZXQvbGVhZmxldC5tYXJrZXJjbHVzdGVyLmpzP3Zlcj0xLjUuMScgaWQ9J2xlYWZsZXQtbWFya2VyY2x1c3Rlci1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy93cC1yZWFsZXN0YXRlL2Fzc2V0cy9qcy9sZWFmbGV0L0xlYWZsZXRIdG1sSWNvbi5qcz92ZXI9MS41LjEnIGlkPSdsZWFmbGV0LUh0bWxJY29uLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cHM6Ly9jMC53cC5jb20vYy81LjkuMy93cC1pbmNsdWRlcy9qcy9pbWFnZXNsb2FkZWQubWluLmpzJyBpZD0naW1hZ2VzbG9hZGVkLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIGlkPSdob21lby1wcm9wZXJ0eS1qcy1leHRyYSc+Ci8qIDwhW0NEQVRBWyAqLwp2YXIgaG9tZW9fcHJvcGVydHlfb3B0cyA9IHsiYWpheHVybCI6Imh0dHBzOlwvXC9jd2xhZ29zLmNvbVwvd3AtYWRtaW5cL2FkbWluLWFqYXgucGhwIiwiZGVjX3BvaW50IjoiLiIsInRob3VzYW5kc19zZXBhcmF0b3IiOiIsIiwiY3VycmVuY3kiOiJOR04iLCJtb250aGx5X3RleHQiOiJNb250aGx5IFBheW1lbnQ6ICIsImNvbXBhcmVfYWRkZWRfdG9vbHRpcF90aXRsZSI6IlJlbW92ZSBDb21wYXJlIiwiY29tcGFyZV9hZGRfdG9vbHRpcF90aXRsZSI6IkFkZCBDb21wYXJlIiwiZmF2b3JpdGVfYWRkZWRfdG9vbHRpcF90aXRsZSI6IlJlbW92ZSBGYXZvcml0ZSIsImZhdm9yaXRlX2FkZF90b29sdGlwX3RpdGxlIjoiQWRkIEZhdm9yaXRlIiwidGVtcGxhdGUiOiI8YSBocmVmPVwie3t1cmx9fVwiIGNsYXNzPVwibWVkaWEgYXV0b2NvbXBsZWF0ZS1tZWRpYVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1lZGlhLWxlZnQgbWVkaWEtbWlkZGxlXCI+XG5cdFx0XHRcdDxpbWcgc3JjPVwie3tpbWFnZX19XCIgY2xhc3M9XCJtZWRpYS1vYmplY3RcIiBoZWlnaHQ9XCI3MFwiIHdpZHRoPVwiNzBcIj5cblx0XHRcdDxcL2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJtZWRpYS1ib2R5IG1lZGlhLW1pZGRsZVwiPlxuXHRcdFx0XHQ8aDQ+e3t0aXRsZX19PFwvaDQ+XG5cdFx0XHRcdHt7e3ByaWNlfX19XG5cdFx0XHRcdHt7e2xvY2F0aW9ufX19XG5cdFx0XHRcdDxcL2Rpdj48XC9hPiIsImVtcHR5X21zZyI6IlVuYWJsZSB0byBmaW5kIGFueSBsaXN0aW5nIHRoYXQgbWF0Y2ggdGhlIGN1cnJlbnR5IHF1ZXJ5In07Ci8qIF1dPiAqLwo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vanMvcHJvcGVydHkuanM/dmVyPTIwMTUwMzMwJyBpZD0naG9tZW8tcHJvcGVydHktanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgaWQ9J2hvbWVvLXByb3BlcnR5LW1hcC1qcy1leHRyYSc+Ci8qIDwhW0NEQVRBWyAqLwp2YXIgaG9tZW9fcHJvcGVydHlfbWFwX29wdHMgPSB7Im1hcF9zZXJ2aWNlIjoibWFwYm94IiwibWFwYm94X3Rva2VuIjoicGsuZXlKMUlqb2lZM2R5Wld4aFoyOXpJaXdpWVNJNkltTnJkRFJvWTJrd2NEQmhPVFV5Y1hCc05tNDBhVzV3TjI0aWZRLlRxc29WTWJ5dklUR010dmZhNnlTeFEiLCJtYXBib3hfc3R5bGUiOiJzdHJlZXRzLXYxMSIsImN1c3RvbV9zdHlsZSI6IiIsImdvb2dsZW1hcF90eXBlIjoicm9hZG1hcCIsImRlZmF1bHRfbGF0aXR1ZGUiOiI0My42NTY4IiwiZGVmYXVsdF9sb25naXR1ZGUiOiItNzkuNDUxMiIsImRlZmF1bHRfcGluIjoiaHR0cHM6XC9cL2RlbW9hcHVzLmNvbVwvaG9tZW9cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjBcLzAzXC9waW4ucG5nIn07Ci8qIF1dPiAqLwo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC90aGVtZXMvaG9tZW8vanMvcHJvcGVydHktbWFwLmpzP3Zlcj0yMDE1MDMzMCcgaWQ9J2hvbWVvLXByb3BlcnR5LW1hcC1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBpZD0nd3JlLXNlbGVjdDItanMtZXh0cmEnPgovKiA8IVtDREFUQVsgKi8KdmFyIHdwX3JlYWxlc3RhdGVfc2VsZWN0Ml9vcHRzID0geyJ3aWR0aCI6IjEwMCUiLCJsYW5ndWFnZV9yZXN1bHQiOiJObyByZXN1bHRzIGZvdW5kIn07Ci8qIF1dPiAqLwo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL3dwLXJlYWxlc3RhdGUvYXNzZXRzL2pzL3NlbGVjdDIvc2VsZWN0Mi5mdWxsLm1pbi5qcz92ZXI9NC4wLjUnIGlkPSd3cmUtc2VsZWN0Mi1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2xpYi9qcXVlcnktbnVtZXJhdG9yL2pxdWVyeS1udW1lcmF0b3IubWluLmpzP3Zlcj0wLjIuMScgaWQ9J2pxdWVyeS1udW1lcmF0b3ItanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgZGVmZXIgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvbWFpbGNoaW1wLWZvci13cC9hc3NldHMvanMvZm9ybXMuanM/dmVyPTQuOC43JyBpZD0nbWM0d3AtZm9ybXMtYXBpLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci1wcm8vYXNzZXRzL2pzL3dlYnBhY2stcHJvLnJ1bnRpbWUubWluLmpzP3Zlcj0zLjYuNCcgaWQ9J2VsZW1lbnRvci1wcm8td2VicGFjay1ydW50aW1lLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvanMvd2VicGFjay5ydW50aW1lLm1pbi5qcz92ZXI9My42LjInIGlkPSdlbGVtZW50b3Itd2VicGFjay1ydW50aW1lLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvanMvZnJvbnRlbmQtbW9kdWxlcy5taW4uanM/dmVyPTMuNi4yJyBpZD0nZWxlbWVudG9yLWZyb250ZW5kLW1vZHVsZXMtanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL2MwLndwLmNvbS9jLzUuOS4zL3dwLWluY2x1ZGVzL2pzL2Rpc3QvaG9va3MubWluLmpzJyBpZD0nd3AtaG9va3MtanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL2MwLndwLmNvbS9jLzUuOS4zL3dwLWluY2x1ZGVzL2pzL2Rpc3QvaTE4bi5taW4uanMnIGlkPSd3cC1pMThuLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIGlkPSd3cC1pMThuLWpzLWFmdGVyJz4Kd3AuaTE4bi5zZXRMb2NhbGVEYXRhKCB7ICd0ZXh0IGRpcmVjdGlvblx1MDAwNGx0cic6IFsgJ2x0cicgXSB9ICk7Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgaWQ9J2VsZW1lbnRvci1wcm8tZnJvbnRlbmQtanMtdHJhbnNsYXRpb25zJz4KKCBmdW5jdGlvbiggZG9tYWluLCB0cmFuc2xhdGlvbnMgKSB7Cgl2YXIgbG9jYWxlRGF0YSA9IHRyYW5zbGF0aW9ucy5sb2NhbGVfZGF0YVsgZG9tYWluIF0gfHwgdHJhbnNsYXRpb25zLmxvY2FsZV9kYXRhLm1lc3NhZ2VzOwoJbG9jYWxlRGF0YVsiIl0uZG9tYWluID0gZG9tYWluOwoJd3AuaTE4bi5zZXRMb2NhbGVEYXRhKCBsb2NhbGVEYXRhLCBkb21haW4gKTsKfSApKCAiZWxlbWVudG9yLXBybyIsIHsgImxvY2FsZV9kYXRhIjogeyAibWVzc2FnZXMiOiB7ICIiOiB7fSB9IH0gfSApOwo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIGlkPSdlbGVtZW50b3ItcHJvLWZyb250ZW5kLWpzLWJlZm9yZSc+CnZhciBFbGVtZW50b3JQcm9Gcm9udGVuZENvbmZpZyA9IHsiYWpheHVybCI6Imh0dHBzOlwvXC9jd2xhZ29zLmNvbVwvd3AtYWRtaW5cL2FkbWluLWFqYXgucGhwIiwibm9uY2UiOiI3ZGU0ZjNmMGQ5IiwidXJscyI6eyJhc3NldHMiOiJodHRwczpcL1wvY3dsYWdvcy5jb21cL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2VsZW1lbnRvci1wcm9cL2Fzc2V0c1wvIiwicmVzdCI6Imh0dHBzOlwvXC9jd2xhZ29zLmNvbVwvd3AtanNvblwvIn0sInNoYXJlQnV0dG9uc05ldHdvcmtzIjp7ImZhY2Vib29rIjp7InRpdGxlIjoiRmFjZWJvb2siLCJoYXNfY291bnRlciI6dHJ1ZX0sInR3aXR0ZXIiOnsidGl0bGUiOiJUd2l0dGVyIn0sImxpbmtlZGluIjp7InRpdGxlIjoiTGlua2VkSW4iLCJoYXNfY291bnRlciI6dHJ1ZX0sInBpbnRlcmVzdCI6eyJ0aXRsZSI6IlBpbnRlcmVzdCIsImhhc19jb3VudGVyIjp0cnVlfSwicmVkZGl0Ijp7InRpdGxlIjoiUmVkZGl0IiwiaGFzX2NvdW50ZXIiOnRydWV9LCJ2ayI6eyJ0aXRsZSI6IlZLIiwiaGFzX2NvdW50ZXIiOnRydWV9LCJvZG5va2xhc3NuaWtpIjp7InRpdGxlIjoiT0siLCJoYXNfY291bnRlciI6dHJ1ZX0sInR1bWJsciI6eyJ0aXRsZSI6IlR1bWJsciJ9LCJkaWdnIjp7InRpdGxlIjoiRGlnZyJ9LCJza3lwZSI6eyJ0aXRsZSI6IlNreXBlIn0sInN0dW1ibGV1cG9uIjp7InRpdGxlIjoiU3R1bWJsZVVwb24iLCJoYXNfY291bnRlciI6dHJ1ZX0sIm1peCI6eyJ0aXRsZSI6Ik1peCJ9LCJ0ZWxlZ3JhbSI6eyJ0aXRsZSI6IlRlbGVncmFtIn0sInBvY2tldCI6eyJ0aXRsZSI6IlBvY2tldCIsImhhc19jb3VudGVyIjp0cnVlfSwieGluZyI6eyJ0aXRsZSI6IlhJTkciLCJoYXNfY291bnRlciI6dHJ1ZX0sIndoYXRzYXBwIjp7InRpdGxlIjoiV2hhdHNBcHAifSwiZW1haWwiOnsidGl0bGUiOiJFbWFpbCJ9LCJwcmludCI6eyJ0aXRsZSI6IlByaW50In19LCJmYWNlYm9va19zZGsiOnsibGFuZyI6ImVuX1VTIiwiYXBwX2lkIjoiIn0sImxvdHRpZSI6eyJkZWZhdWx0QW5pbWF0aW9uVXJsIjoiaHR0cHM6XC9cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC9wbHVnaW5zXC9lbGVtZW50b3ItcHJvXC9tb2R1bGVzXC9sb3R0aWVcL2Fzc2V0c1wvYW5pbWF0aW9uc1wvZGVmYXVsdC5qc29uIn19Owo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci1wcm8vYXNzZXRzL2pzL2Zyb250ZW5kLm1pbi5qcz92ZXI9My42LjQnIGlkPSdlbGVtZW50b3ItcHJvLWZyb250ZW5kLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvbGliL3N3aXBlci9zd2lwZXIubWluLmpzP3Zlcj01LjMuNicgaWQ9J3N3aXBlci1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2xpYi9zaGFyZS1saW5rL3NoYXJlLWxpbmsubWluLmpzP3Zlcj0zLjYuMicgaWQ9J3NoYXJlLWxpbmstanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9saWIvZGlhbG9nL2RpYWxvZy5taW4uanM/dmVyPTQuOS4wJyBpZD0nZWxlbWVudG9yLWRpYWxvZy1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBpZD0nZWxlbWVudG9yLWZyb250ZW5kLWpzLWJlZm9yZSc+CnZhciBlbGVtZW50b3JGcm9udGVuZENvbmZpZyA9IHsiZW52aXJvbm1lbnRNb2RlIjp7ImVkaXQiOmZhbHNlLCJ3cFByZXZpZXciOmZhbHNlLCJpc1NjcmlwdERlYnVnIjpmYWxzZX0sImkxOG4iOnsic2hhcmVPbkZhY2Vib29rIjoiU2hhcmUgb24gRmFjZWJvb2siLCJzaGFyZU9uVHdpdHRlciI6IlNoYXJlIG9uIFR3aXR0ZXIiLCJwaW5JdCI6IlBpbiBpdCIsImRvd25sb2FkIjoiRG93bmxvYWQiLCJkb3dubG9hZEltYWdlIjoiRG93bmxvYWQgaW1hZ2UiLCJmdWxsc2NyZWVuIjoiRnVsbHNjcmVlbiIsInpvb20iOiJab29tIiwic2hhcmUiOiJTaGFyZSIsInBsYXlWaWRlbyI6IlBsYXkgVmlkZW8iLCJwcmV2aW91cyI6IlByZXZpb3VzIiwibmV4dCI6Ik5leHQiLCJjbG9zZSI6IkNsb3NlIn0sImlzX3J0bCI6ZmFsc2UsImJyZWFrcG9pbnRzIjp7InhzIjowLCJzbSI6NDgwLCJtZCI6NzY4LCJsZyI6MTAyNSwieGwiOjE0NDAsInh4bCI6MTYwMH0sInJlc3BvbnNpdmUiOnsiYnJlYWtwb2ludHMiOnsibW9iaWxlIjp7ImxhYmVsIjoiTW9iaWxlIiwidmFsdWUiOjc2NywiZGVmYXVsdF92YWx1ZSI6NzY3LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjp0cnVlfSwibW9iaWxlX2V4dHJhIjp7ImxhYmVsIjoiTW9iaWxlIEV4dHJhIiwidmFsdWUiOjg4MCwiZGVmYXVsdF92YWx1ZSI6ODgwLCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sInRhYmxldCI6eyJsYWJlbCI6IlRhYmxldCIsInZhbHVlIjoxMDI0LCJkZWZhdWx0X3ZhbHVlIjoxMDI0LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjp0cnVlfSwidGFibGV0X2V4dHJhIjp7ImxhYmVsIjoiVGFibGV0IEV4dHJhIiwidmFsdWUiOjEyMDAsImRlZmF1bHRfdmFsdWUiOjEyMDAsImRpcmVjdGlvbiI6Im1heCIsImlzX2VuYWJsZWQiOmZhbHNlfSwibGFwdG9wIjp7ImxhYmVsIjoiTGFwdG9wIiwidmFsdWUiOjEzNjYsImRlZmF1bHRfdmFsdWUiOjEzNjYsImRpcmVjdGlvbiI6Im1heCIsImlzX2VuYWJsZWQiOmZhbHNlfSwid2lkZXNjcmVlbiI6eyJsYWJlbCI6IldpZGVzY3JlZW4iLCJ2YWx1ZSI6MjQwMCwiZGVmYXVsdF92YWx1ZSI6MjQwMCwiZGlyZWN0aW9uIjoibWluIiwiaXNfZW5hYmxlZCI6ZmFsc2V9fX0sInZlcnNpb24iOiIzLjYuMiIsImlzX3N0YXRpYyI6ZmFsc2UsImV4cGVyaW1lbnRhbEZlYXR1cmVzIjp7ImVfaW1wb3J0X2V4cG9ydCI6dHJ1ZSwiZV9oaWRkZW5fd29yZHByZXNzX3dpZGdldHMiOnRydWUsInRoZW1lX2J1aWxkZXJfdjIiOnRydWUsImxhbmRpbmctcGFnZXMiOnRydWUsImVsZW1lbnRzLWNvbG9yLXBpY2tlciI6dHJ1ZSwiZmF2b3JpdGUtd2lkZ2V0cyI6dHJ1ZSwiYWRtaW4tdG9wLWJhciI6dHJ1ZSwicGFnZS10cmFuc2l0aW9ucyI6dHJ1ZSwiZm9ybS1zdWJtaXNzaW9ucyI6dHJ1ZSwiZV9zY3JvbGxfc25hcCI6dHJ1ZX0sInVybHMiOnsiYXNzZXRzIjoiaHR0cHM6XC9cL2N3bGFnb3MuY29tXC93cC1jb250ZW50XC9wbHVnaW5zXC9lbGVtZW50b3JcL2Fzc2V0c1wvIn0sInNldHRpbmdzIjp7InBhZ2UiOltdLCJlZGl0b3JQcmVmZXJlbmNlcyI6W119LCJraXQiOnsiYWN0aXZlX2JyZWFrcG9pbnRzIjpbInZpZXdwb3J0X21vYmlsZSIsInZpZXdwb3J0X3RhYmxldCJdLCJnbG9iYWxfaW1hZ2VfbGlnaHRib3giOiJ5ZXMiLCJsaWdodGJveF9lbmFibGVfY291bnRlciI6InllcyIsImxpZ2h0Ym94X2VuYWJsZV9mdWxsc2NyZWVuIjoieWVzIiwibGlnaHRib3hfZW5hYmxlX3pvb20iOiJ5ZXMiLCJsaWdodGJveF9lbmFibGVfc2hhcmUiOiJ5ZXMiLCJsaWdodGJveF90aXRsZV9zcmMiOiJ0aXRsZSIsImxpZ2h0Ym94X2Rlc2NyaXB0aW9uX3NyYyI6ImRlc2NyaXB0aW9uIn0sInBvc3QiOnsiaWQiOjIzLCJ0aXRsZSI6Ikx1eHVyeSUyMFJlYWwlMjBFc3RhdGUlMjBQcm9wZXJ0eSUyMEFnZW5jeSUyMC0lMjBCdXklMkMlMjBTZWxsJTIwb3IlMjBSZW50JTIwaW4lMjBMYWdvcyUyMCUyNiUyMEFidWphJTIwLSUyMENXJTIwUmVhbCUyMEVzdGF0ZSIsImV4Y2VycHQiOiIiLCJmZWF0dXJlZEltYWdlIjpmYWxzZX19Owo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvanMvZnJvbnRlbmQubWluLmpzP3Zlcj0zLjYuMicgaWQ9J2VsZW1lbnRvci1mcm9udGVuZC1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3ItcHJvL2Fzc2V0cy9qcy9wcmVsb2FkZWQtZWxlbWVudHMtaGFuZGxlcnMubWluLmpzP3Zlcj0zLjYuNCcgaWQ9J3Byby1wcmVsb2FkZWQtZWxlbWVudHMtaGFuZGxlcnMtanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9qcy9wcmVsb2FkZWQtbW9kdWxlcy5taW4uanM/dmVyPTMuNi4yJyBpZD0ncHJlbG9hZGVkLW1vZHVsZXMtanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yLXByby9hc3NldHMvbGliL3N0aWNreS9qcXVlcnkuc3RpY2t5Lm1pbi5qcz92ZXI9My42LjQnIGlkPSdlLXN0aWNreS1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vYzAud3AuY29tL2MvNS45LjMvd3AtaW5jbHVkZXMvanMvdW5kZXJzY29yZS5taW4uanMnIGlkPSd1bmRlcnNjb3JlLWpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIGlkPSd3cC11dGlsLWpzLWV4dHJhJz4KLyogPCFbQ0RBVEFbICovCnZhciBfd3BVdGlsU2V0dGluZ3MgPSB7ImFqYXgiOnsidXJsIjoiXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAifX07Ci8qIF1dPiAqLwo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cHM6Ly9jMC53cC5jb20vYy81LjkuMy93cC1pbmNsdWRlcy9qcy93cC11dGlsLm1pbi5qcycgaWQ9J3dwLXV0aWwtanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgaWQ9J3dwZm9ybXMtZWxlbWVudG9yLWpzLWV4dHJhJz4KLyogPCFbQ0RBVEFbICovCnZhciB3cGZvcm1zRWxlbWVudG9yVmFycyA9IHsiY2FwdGNoYV9wcm92aWRlciI6InJlY2FwdGNoYSIsInJlY2FwdGNoYV90eXBlIjoidjIifTsKLyogXV0+ICovCjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd3cC1jb250ZW50L3BsdWdpbnMvd3Bmb3Jtcy1saXRlL2Fzc2V0cy9qcy9pbnRlZ3JhdGlvbnMvZWxlbWVudG9yL2Zyb250ZW5kLm1pbi5qcz92ZXI9MS43LjMnIGlkPSd3cGZvcm1zLWVsZW1lbnRvci1qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSdodHRwczovL3N0YXRzLndwLmNvbS9lLTIwMjIxNS5qcycgZGVmZXI+PC9zY3JpcHQ+CjxzY3JpcHQ+Cglfc3RxID0gd2luZG93Ll9zdHEgfHwgW107Cglfc3RxLnB1c2goWyAndmlldycsIHt2OidleHQnLGo6JzE6MTAuNicsYmxvZzonMTY2NzI2MzUwJyxwb3N0OicyMycsdHo6JzEnLHNydjonY3dsYWdvcy5jb20nfSBdKTsKCV9zdHEucHVzaChbICdjbGlja1RyYWNrZXJJbml0JywgJzE2NjcyNjM1MCcsICcyMycgXSk7Cjwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+IAo="}},"time_used":2230,"timings":{"blocked":-1,"dns":325,"connect":94,"send":0,"wait":1241,"receive":379,"ssl":191},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/p/jetpack/10.6/_inc/build/photon/photon.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.431Z","timestamp":1785145482431,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /p/jetpack/10.6/_inc/build/photon/photon.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Tue, 07 Dec 2021 16:56:47 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=1.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":685,"size_decoded":863,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (685), with no line terminators","md5":"24626ac4453bf45fe07e6c5d4e859fbd","sha1":"9adbe5e7a5e1b5fb19aee82a9d765631b62ecb2f","sha256":"5cfd3418ebf7c95f8f7a9024ebfa383ff5a267a8568c9a2708c26733824bdf07","sha512":"843553cfc6b5e0c16f4ee4517bc292d666f4acd6e8d6ed693077682badf9070ac1105c368226f3e2f037b2bb47699b25dd51e888bfbb087af2c62555d377b984","ssdeep":"","tlshash":"b50194797304963258c25267946eb3c66c26207727c34c59151ceca38ca4d491935ce7","first_seen":"2023-03-07T01:03:05Z","last_seen":"2026-07-27T09:45:50.862259Z","times_seen":1053,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2lmKHRoaXMuY29tcGxldGUpe3ZhciBlPXRoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLWxhenktc3JjIik7aWYoZSYmdGhpcy5zcmMhPT1lKXRoaXMuYWRkRXZlbnRMaXN0ZW5lcigib25sb2FkIix0KTtlbHNle3ZhciBkPXRoaXMud2lkdGgsbj10aGlzLmhlaWdodDtkJiZkPjAmJm4mJm4+MCYmKHRoaXMuc2V0QXR0cmlidXRlKCJ3aWR0aCIsZCksdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbiksaSh0aGlzKSl9fWVsc2UgdGhpcy5hZGRFdmVudExpc3RlbmVyKCJvbmxvYWQiLHQpfXZhciBlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImltZ1tkYXRhLXJlY2FsYy1kaW1zXSIpLGk9MDtpPGUubGVuZ3RoO2krKyl0LmNhbGwoZVtpXSl9LGk9ZnVuY3Rpb24odCl7dC5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtcmVjYWxjLWRpbXMiKSx0LnJlbW92ZUF0dHJpYnV0ZSgic2NhbGUiKX07InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigibG9hZGluZyI9PT1kb2N1bWVudC5yZWFkeVN0YXRlP2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGUpOmUoKSksZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJpcy5wb3N0LWxvYWQiLGUpfSgpOw=="}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/dist/i18n.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.503Z","timestamp":1785145482503,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/dist/i18n.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Mon, 15 Nov 2021 12:50:17 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","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":10407,"size_decoded":4531,"mime_type":"application/javascript","magic":"data","md5":"67e56dc626cd9e14d5f0cef38d0c36f7","sha1":"0c03a4781237e2c86248b562b64e78afe3817c42","sha256":"22c90613db09ef65c964b143e6adbe584b42eae85c9b7a75fa27c22b25cccb90","sha512":"7e7043e189b4b72c6b34fe733c5f477d74f72633534700b05c3c397ed738a869ba8a41b8c625a21021be308283a53559b893e6457ee3ecab13ce0eca09dfebab","ssdeep":"192:un6a1BFzAb3ymfh6KGcnSuO4Ez3CZqxjsFy/o3Ds9sFGeZSNSybs:BWEBhH1nSTN7C+Ay/o3Y9sFJZSHbs","tlshash":"7122a49c71d6b092178620e894bff109f2375e6430da9490da84c9f57cb09ce61a7fee","first_seen":"2023-03-07T01:02:19Z","last_seen":"2026-07-27T13:52:26.90758Z","times_seen":2974,"resource_available":true,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwp0aGlzLndwPXRoaXMud3B8fHt9LHRoaXMud3AuaTE4bj1mdW5jdGlvbih0KXt2YXIgbj17fTtmdW5jdGlvbiBlKHIpe2lmKG5bcl0pcmV0dXJuIG5bcl0uZXhwb3J0czt2YXIgaT1uW3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtyXS5jYWxsKGkuZXhwb3J0cyxpLGkuZXhwb3J0cyxlKSxpLmw9ITAsaS5leHBvcnRzfXJldHVybiBlLm09dCxlLmM9bixlLmQ9ZnVuY3Rpb24odCxuLHIpe2Uubyh0LG4pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtlbnVtZXJhYmxlOiEwLGdldDpyfSl9LGUucj1mdW5jdGlvbih0KXsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxlLnQ9ZnVuY3Rpb24odCxuKXtpZigxJm4mJih0PWUodCkpLDgmbilyZXR1cm4gdDtpZig0Jm4mJiJvYmplY3QiPT10eXBlb2YgdCYmdCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZS5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSksMiZuJiYic3RyaW5nIiE9dHlwZW9mIHQpZm9yKHZhciBpIGluIHQpZS5kKHIsaSxmdW5jdGlvbihuKXtyZXR1cm4gdFtuXX0uYmluZChudWxsLGkpKTtyZXR1cm4gcn0sZS5uPWZ1bmN0aW9uKHQpe3ZhciBuPXQmJnQuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiB0LmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O3JldHVybiBlLmQobiwiYSIsbiksbn0sZS5vPWZ1bmN0aW9uKHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfSxlLnA9IiIsZShlLnM9IlZoeWoiKX0oeyI0Wi9UIjpmdW5jdGlvbih0LG4sZSl7dmFyIHI7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBpPXtub3Rfc3RyaW5nOi9bXnNdLyxub3RfYm9vbDovW150XS8sbm90X3R5cGU6L1teVF0vLG5vdF9wcmltaXRpdmU6L1tedl0vLG51bWJlcjovW2RpZWZnXS8sbnVtZXJpY19hcmc6L1tiY2RpZWZndXhYXS8sanNvbjovW2pdLyxub3RfanNvbjovW15qXS8sdGV4dDovXlteXHgyNV0rLyxtb2R1bG86L15ceDI1ezJ9LyxwbGFjZWhvbGRlcjovXlx4MjUoPzooWzEtOV1cZCopXCR8XCgoW14pXSspXCkpPyhcKyk/KDB8J1teJF0pPygtKT8oXGQrKT8oPzpcLihcZCspKT8oW2ItZ2lqb3N0VHV2eFhdKS8sa2V5Oi9eKFthLXpfXVthLXpfXGRdKikvaSxrZXlfYWNjZXNzOi9eXC4oW2Etel9dW2Etel9cZF0qKS9pLGluZGV4X2FjY2VzczovXlxbKFxkKylcXS8sc2lnbjovXlsrLV0vfTtmdW5jdGlvbiBvKHQpe3JldHVybiBzKGwodCksYXJndW1lbnRzKX1mdW5jdGlvbiBhKHQsbil7cmV0dXJuIG8uYXBwbHkobnVsbCxbdF0uY29uY2F0KG58fFtdKSl9ZnVuY3Rpb24gcyh0LG4pe3ZhciBlLHIsYSxzLHUsbCxjLHAsZixkPTEsaD10Lmxlbmd0aCxnPSIiO2ZvcihyPTA7cjxoO3IrKylpZigic3RyaW5nIj09dHlwZW9mIHRbcl0pZys9dFtyXTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgdFtyXSl7aWYoKHM9dFtyXSkua2V5cylmb3IoZT1uW2RdLGE9MDthPHMua2V5cy5sZW5ndGg7YSsrKXtpZihudWxsPT1lKXRocm93IG5ldyBFcnJvcihvKCdbc3ByaW50Zl0gQ2Fubm90IGFjY2VzcyBwcm9wZXJ0eSAiJXMiIG9mIHVuZGVmaW5lZCB2YWx1ZSAiJXMiJyxzLmtleXNbYV0scy5rZXlzW2EtMV0pKTtlPWVbcy5rZXlzW2FdXX1lbHNlIGU9cy5wYXJhbV9ubz9uW3MucGFyYW1fbm9dOm5bZCsrXTtpZihpLm5vdF90eXBlLnRlc3Qocy50eXBlKSYmaS5ub3RfcHJpbWl0aXZlLnRlc3Qocy50eXBlKSYmZSBpbnN0YW5jZW9mIEZ1bmN0aW9uJiYoZT1lKCkpLGkubnVtZXJpY19hcmcudGVzdChzLnR5cGUpJiYibnVtYmVyIiE9dHlwZW9mIGUmJmlzTmFOKGUpKXRocm93IG5ldyBUeXBlRXJyb3IobygiW3NwcmludGZdIGV4cGVjdGluZyBudW1iZXIgYnV0IGZvdW5kICVUIixlKSk7c3dpdGNoKGkubnVtYmVyLnRlc3Qocy50eXBlKSYmKHA9ZT49MCkscy50eXBlKXtjYXNlImIiOmU9cGFyc2VJbnQoZSwxMCkudG9TdHJpbmcoMik7YnJlYWs7Y2FzZSJjIjplPVN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZSwxMCkpO2JyZWFrO2Nhc2UiZCI6Y2FzZSJpIjplPXBhcnNlSW50KGUsMTApO2JyZWFrO2Nhc2UiaiI6ZT1KU09OLnN0cmluZ2lmeShlLG51bGwscy53aWR0aD9wYXJzZUludChzLndpZHRoKTowKTticmVhaztjYXNlImUiOmU9cy5wcmVjaXNpb24/cGFyc2VGbG9hdChlKS50b0V4cG9uZW50aWFsKHMucHJlY2lzaW9uKTpwYXJzZUZsb2F0KGUpLnRvRXhwb25lbnRpYWwoKTticmVhaztjYXNlImYiOmU9cy5wcmVjaXNpb24/cGFyc2VGbG9hdChlKS50b0ZpeGVkKHMucHJlY2lzaW9uKTpwYXJzZUZsb2F0KGUpO2JyZWFrO2Nhc2UiZyI6ZT1zLnByZWNpc2lvbj9TdHJpbmcoTnVtYmVyKGUudG9QcmVjaXNpb24ocy5wcmVjaXNpb24pKSk6cGFyc2VGbG9hdChlKTticmVhaztjYXNlIm8iOmU9KHBhcnNlSW50KGUsMTApPj4+MCkudG9TdHJpbmcoOCk7YnJlYWs7Y2FzZSJzIjplPVN0cmluZyhlKSxlPXMucHJlY2lzaW9uP2Uuc3Vic3RyaW5nKDAscy5wcmVjaXNpb24pOmU7YnJlYWs7Y2FzZSJ0IjplPVN0cmluZyghIWUpLGU9cy5wcmVjaXNpb24/ZS5zdWJzdHJpbmcoMCxzLnByZWNpc2lvbik6ZTticmVhaztjYXNlIlQiOmU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCksZT1zLnByZWNpc2lvbj9lLnN1YnN0cmluZygwLHMucHJlY2lzaW9uKTplO2JyZWFrO2Nhc2UidSI6ZT1wYXJzZUludChlLDEwKT4+PjA7YnJlYWs7Y2FzZSJ2IjplPWUudmFsdWVPZigpLGU9cy5wcmVjaXNpb24/ZS5zdWJzdHJpbmcoMCxzLnByZWNpc2lvbik6ZTticmVhaztjYXNlIngiOmU9KHBhcnNlSW50KGUsMTApPj4+MCkudG9TdHJpbmcoMTYpO2JyZWFrO2Nhc2UiWCI6ZT0ocGFyc2VJbnQoZSwxMCk+Pj4wKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX1pLmpzb24udGVzdChzLnR5cGUpP2crPWU6KCFpLm51bWJlci50ZXN0KHMudHlwZSl8fHAmJiFzLnNpZ24/Zj0iIjooZj1wPyIrIjoiLSIsZT1lLnRvU3RyaW5nKCkucmVwbGFjZShpLnNpZ24sIiIpKSxsPXMucGFkX2NoYXI/IjAiPT09cy5wYWRfY2hhcj8iMCI6cy5wYWRfY2hhci5jaGFyQXQoMSk6IiAiLGM9cy53aWR0aC0oZitlKS5sZW5ndGgsdT1zLndpZHRoJiZjPjA/bC5yZXBlYXQoYyk6IiIsZys9cy5hbGlnbj9mK2UrdToiMCI9PT1sP2YrdStlOnUrZitlKX1yZXR1cm4gZ312YXIgdT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGwodCl7aWYodVt0XSlyZXR1cm4gdVt0XTtmb3IodmFyIG4sZT10LHI9W10sbz0wO2U7KXtpZihudWxsIT09KG49aS50ZXh0LmV4ZWMoZSkpKXIucHVzaChuWzBdKTtlbHNlIGlmKG51bGwhPT0obj1pLm1vZHVsby5leGVjKGUpKSlyLnB1c2goIiUiKTtlbHNle2lmKG51bGw9PT0obj1pLnBsYWNlaG9sZGVyLmV4ZWMoZSkpKXRocm93IG5ldyBTeW50YXhFcnJvcigiW3NwcmludGZdIHVuZXhwZWN0ZWQgcGxhY2Vob2xkZXIiKTtpZihuWzJdKXtvfD0xO3ZhciBhPVtdLHM9blsyXSxsPVtdO2lmKG51bGw9PT0obD1pLmtleS5leGVjKHMpKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIltzcHJpbnRmXSBmYWlsZWQgdG8gcGFyc2UgbmFtZWQgYXJndW1lbnQga2V5Iik7Zm9yKGEucHVzaChsWzFdKTsiIiE9PShzPXMuc3Vic3RyaW5nKGxbMF0ubGVuZ3RoKSk7KWlmKG51bGwhPT0obD1pLmtleV9hY2Nlc3MuZXhlYyhzKSkpYS5wdXNoKGxbMV0pO2Vsc2V7aWYobnVsbD09PShsPWkuaW5kZXhfYWNjZXNzLmV4ZWMocykpKXRocm93IG5ldyBTeW50YXhFcnJvcigiW3NwcmludGZdIGZhaWxlZCB0byBwYXJzZSBuYW1lZCBhcmd1bWVudCBrZXkiKTthLnB1c2gobFsxXSl9blsyXT1hfWVsc2Ugb3w9MjtpZigzPT09byl0aHJvdyBuZXcgRXJyb3IoIltzcHJpbnRmXSBtaXhpbmcgcG9zaXRpb25hbCBhbmQgbmFtZWQgcGxhY2Vob2xkZXJzIGlzIG5vdCAoeWV0KSBzdXBwb3J0ZWQiKTtyLnB1c2goe3BsYWNlaG9sZGVyOm5bMF0scGFyYW1fbm86blsxXSxrZXlzOm5bMl0sc2lnbjpuWzNdLHBhZF9jaGFyOm5bNF0sYWxpZ246bls1XSx3aWR0aDpuWzZdLHByZWNpc2lvbjpuWzddLHR5cGU6bls4XX0pfWU9ZS5zdWJzdHJpbmcoblswXS5sZW5ndGgpfXJldHVybiB1W3RdPXJ9bi5zcHJpbnRmPW8sbi52c3ByaW50Zj1hLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93LnNwcmludGY9byx3aW5kb3cudnNwcmludGY9YSx2b2lkIDA9PT0ocj1mdW5jdGlvbigpe3JldHVybntzcHJpbnRmOm8sdnNwcmludGY6YX19LmNhbGwobixlLG4sdCkpfHwodC5leHBvcnRzPXIpKX0oKX0sIjRlSkMiOmZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGk9MDtmdW5jdGlvbiBvKCl7dmFyIG8sYSxzPWUsdT1hcmd1bWVudHMubGVuZ3RoO3Q6Zm9yKDtzOyl7aWYocy5hcmdzLmxlbmd0aD09PWFyZ3VtZW50cy5sZW5ndGgpe2ZvcihhPTA7YTx1O2ErKylpZihzLmFyZ3NbYV0hPT1hcmd1bWVudHNbYV0pe3M9cy5uZXh0O2NvbnRpbnVlIHR9cmV0dXJuIHMhPT1lJiYocz09PXImJihyPXMucHJldikscy5wcmV2Lm5leHQ9cy5uZXh0LHMubmV4dCYmKHMubmV4dC5wcmV2PXMucHJldikscy5uZXh0PWUscy5wcmV2PW51bGwsZS5wcmV2PXMsZT1zKSxzLnZhbH1zPXMubmV4dH1mb3Iobz1uZXcgQXJyYXkodSksYT0wO2E8dTthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuIHM9e2FyZ3M6byx2YWw6dC5hcHBseShudWxsLG8pfSxlPyhlLnByZXY9cyxzLm5leHQ9ZSk6cj1zLGk9PT1uLm1heFNpemU/KHI9ci5wcmV2KS5uZXh0PW51bGw6aSsrLGU9cyxzLnZhbH1yZXR1cm4gbj1ufHx7fSxvLmNsZWFyPWZ1bmN0aW9uKCl7ZT1udWxsLHI9bnVsbCxpPTB9LG99fSxWaHlqOmZ1bmN0aW9uKHQsbixlKXsidXNlIHN0cmljdCI7ZS5yKG4pLGUuZChuLCJzcHJpbnRmIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxlLmQobiwiY3JlYXRlSTE4biIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSksZS5kKG4sImRlZmF1bHRJMThuIiwoZnVuY3Rpb24oKXtyZXR1cm4gd30pKSxlLmQobiwic2V0TG9jYWxlRGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEZ9KSksZS5kKG4sInJlc2V0TG9jYWxlRGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFN9KSksZS5kKG4sImdldExvY2FsZURhdGEiLChmdW5jdGlvbigpe3JldHVybiBrfSkpLGUuZChuLCJzdWJzY3JpYmUiLChmdW5jdGlvbigpe3JldHVybiBqfSkpLGUuZChuLCJfXyIsKGZ1bmN0aW9uKCl7cmV0dXJuIFR9KSksZS5kKG4sIl94IiwoZnVuY3Rpb24oKXtyZXR1cm4gT30pKSxlLmQobiwiX24iLChmdW5jdGlvbigpe3JldHVybiBMfSkpLGUuZChuLCJfbngiLChmdW5jdGlvbigpe3JldHVybiBEfSkpLGUuZChuLCJpc1JUTCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFB9KSksZS5kKG4sImhhc1RyYW5zbGF0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gRX0pKTt2YXIgcj1lKCI0ZUpDIiksaT1lLm4ociksbz1lKCI0Wi9UIiksYT1lLm4obyk7Y29uc3Qgcz1pKCkoY29uc29sZS5lcnJvcik7ZnVuY3Rpb24gdSh0KXt0cnl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkobj4xP24tMTowKSxyPTE7cjxuO3IrKyllW3ItMV09YXJndW1lbnRzW3JdO3JldHVybiBhLmEuc3ByaW50Zih0LC4uLmUpfWNhdGNoKG4pe3JldHVybiBuIGluc3RhbmNlb2YgRXJyb3ImJnMoInNwcmludGYgZXJyb3I6IFxuXG4iK24udG9TdHJpbmcoKSksdH19dmFyIGwsYyxwLGY7bD17IigiOjksIiEiOjgsIioiOjcsIi8iOjcsIiUiOjcsIisiOjYsIi0iOjYsIjwiOjUsIjw9Ijo1LCI+Ijo1LCI+PSI6NSwiPT0iOjQsIiE9Ijo0LCImJiI6MywifHwiOjIsIj8iOjEsIj86IjoxfSxjPVsiKCIsIj8iXSxwPXsiKSI6WyIoIl0sIjoiOlsiPyIsIj86Il19LGY9Lzw9fD49fD09fCE9fCYmfFx8XHx8XD86fFwofCF8XCp8XC98JXxcK3wtfDx8PnxcP3xcKXw6Lzt2YXIgZD17IiEiOmZ1bmN0aW9uKHQpe3JldHVybiF0fSwiKiI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdCpufSwiLyI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC9ufSwiJSI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdCVufSwiKyI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdCtufSwiLSI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC1ufSwiPCI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdDxufSwiPD0iOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQ8PW59LCI+IjpmdW5jdGlvbih0LG4pe3JldHVybiB0Pm59LCI+PSI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD49bn0sIj09IjpmdW5jdGlvbih0LG4pe3JldHVybiB0PT09bn0sIiE9IjpmdW5jdGlvbih0LG4pe3JldHVybiB0IT09bn0sIiYmIjpmdW5jdGlvbih0LG4pe3JldHVybiB0JiZufSwifHwiOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHR8fG59LCI/OiI6ZnVuY3Rpb24odCxuLGUpe2lmKHQpdGhyb3cgbjtyZXR1cm4gZX19O2Z1bmN0aW9uIGgodCl7dmFyIG49ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGUscixpLG89W10sYT1bXTtuPXQubWF0Y2goZik7KXtmb3IoZT1uWzBdLChyPXQuc3Vic3RyKDAsbi5pbmRleCkudHJpbSgpKSYmby5wdXNoKHIpO2k9YS5wb3AoKTspe2lmKHBbZV0pe2lmKHBbZV1bMF09PT1pKXtlPXBbZV1bMV18fGU7YnJlYWt9fWVsc2UgaWYoYy5pbmRleE9mKGkpPj0wfHxsW2ldPGxbZV0pe2EucHVzaChpKTticmVha31vLnB1c2goaSl9cFtlXXx8YS5wdXNoKGUpLHQ9dC5zdWJzdHIobi5pbmRleCtlLmxlbmd0aCl9cmV0dXJuKHQ9dC50cmltKCkpJiZvLnB1c2godCksby5jb25jYXQoYS5yZXZlcnNlKCkpfSh0KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIGUscixpLG8sYSxzLHU9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl7aWYoYT10W2VdLG89ZFthXSl7Zm9yKHI9by5sZW5ndGgsaT1BcnJheShyKTtyLS07KWlbcl09dS5wb3AoKTt0cnl7cz1vLmFwcGx5KG51bGwsaSl9Y2F0Y2godCl7cmV0dXJuIHR9fWVsc2Ugcz1uLmhhc093blByb3BlcnR5KGEpP25bYV06K2E7dS5wdXNoKHMpfXJldHVybiB1WzBdfShuLHQpfX12YXIgZz17Y29udGV4dERlbGltaXRlcjoiBCIsb25NaXNzaW5nS2V5Om51bGx9O2Z1bmN0aW9uIHgodCxuKXt2YXIgZTtmb3IoZSBpbiB0aGlzLmRhdGE9dCx0aGlzLnBsdXJhbEZvcm1zPXt9LHRoaXMub3B0aW9ucz17fSxnKXRoaXMub3B0aW9uc1tlXT12b2lkIDAhPT1uJiZlIGluIG4/bltlXTpnW2VdfXgucHJvdG90eXBlLmdldFBsdXJhbEZvcm09ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGksbyxhPXRoaXMucGx1cmFsRm9ybXNbdF07cmV0dXJuIGF8fCgiZnVuY3Rpb24iIT10eXBlb2YoaT0oZT10aGlzLmRhdGFbdF1bIiJdKVsiUGx1cmFsLUZvcm1zIl18fGVbInBsdXJhbC1mb3JtcyJdfHxlLnBsdXJhbF9mb3JtcykmJihyPWZ1bmN0aW9uKHQpe3ZhciBuLGUscjtmb3Iobj10LnNwbGl0KCI7IiksZT0wO2U8bi5sZW5ndGg7ZSsrKWlmKDA9PT0ocj1uW2VdLnRyaW0oKSkuaW5kZXhPZigicGx1cmFsPSIpKXJldHVybiByLnN1YnN0cig3KX0oZVsiUGx1cmFsLUZvcm1zIl18fGVbInBsdXJhbC1mb3JtcyJdfHxlLnBsdXJhbF9mb3Jtcyksbz1oKHIpLGk9ZnVuY3Rpb24odCl7cmV0dXJuK28oe246dH0pfSksYT10aGlzLnBsdXJhbEZvcm1zW3RdPWkpLGEobil9LHgucHJvdG90eXBlLmRjbnBnZXR0ZXh0PWZ1bmN0aW9uKHQsbixlLHIsaSl7dmFyIG8sYSxzO3JldHVybiBvPXZvaWQgMD09PWk/MDp0aGlzLmdldFBsdXJhbEZvcm0odCxpKSxhPWUsbiYmKGE9bit0aGlzLm9wdGlvbnMuY29udGV4dERlbGltaXRlcitlKSwocz10aGlzLmRhdGFbdF1bYV0pJiZzW29dP3Nbb106KHRoaXMub3B0aW9ucy5vbk1pc3NpbmdLZXkmJnRoaXMub3B0aW9ucy5vbk1pc3NpbmdLZXkoZSx0KSwwPT09bz9lOnIpfTtjb25zdCB5PXsiIjp7cGx1cmFsX2Zvcm1zOnQ9PjE9PT10PzA6MX19LHY9L15pMThuXC4obj9nZXR0ZXh0fGhhc190cmFuc2xhdGlvbikoX3wkKS8sYj0odCxuLGUpPT57Y29uc3Qgcj1uZXcgeCh7fSksaT1uZXcgU2V0LG89KCk9PntpLmZvckVhY2godD0+dCgpKX0sYT1mdW5jdGlvbih0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ImRlZmF1bHQiO3IuZGF0YVtuXT17Li4ueSwuLi5yLmRhdGFbbl0sLi4udH0sci5kYXRhW25dWyIiXT17Li4ueVsiIl0sLi4uci5kYXRhW25dWyIiXX19LHM9KHQsbik9PnthKHQsbiksbygpfSx1PWZ1bmN0aW9uKCl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiJkZWZhdWx0IixuPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGU9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsaT1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxvPWFyZ3VtZW50cy5sZW5ndGg+ND9hcmd1bWVudHNbNF06dm9pZCAwO3JldHVybiByLmRhdGFbdF18fGEodm9pZCAwLHQpLHIuZGNucGdldHRleHQodCxuLGUsaSxvKX0sbD1mdW5jdGlvbigpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiZGVmYXVsdCI7cmV0dXJuIHR9LGM9KHQsbixyKT0+e2xldCBpPXUocixuLHQpO3JldHVybiBlPyhpPWUuYXBwbHlGaWx0ZXJzKCJpMThuLmdldHRleHRfd2l0aF9jb250ZXh0IixpLHQsbixyKSxlLmFwcGx5RmlsdGVycygiaTE4bi5nZXR0ZXh0X3dpdGhfY29udGV4dF8iK2wociksaSx0LG4scikpOml9O2lmKHQmJnModCxuKSxlKXtjb25zdCB0PXQ9Pnt2LnRlc3QodCkmJm8oKX07ZS5hZGRBY3Rpb24oImhvb2tBZGRlZCIsImNvcmUvaTE4biIsdCksZS5hZGRBY3Rpb24oImhvb2tSZW1vdmVkIiwiY29yZS9pMThuIix0KX1yZXR1cm57Z2V0TG9jYWxlRGF0YTpmdW5jdGlvbigpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiZGVmYXVsdCI7cmV0dXJuIHIuZGF0YVt0XX0sc2V0TG9jYWxlRGF0YTpzLHJlc2V0TG9jYWxlRGF0YToodCxuKT0+e3IuZGF0YT17fSxyLnBsdXJhbEZvcm1zPXt9LHModCxuKX0sc3Vic2NyaWJlOnQ9PihpLmFkZCh0KSwoKT0+aS5kZWxldGUodCkpLF9fOih0LG4pPT57bGV0IHI9dShuLHZvaWQgMCx0KTtyZXR1cm4gZT8ocj1lLmFwcGx5RmlsdGVycygiaTE4bi5nZXR0ZXh0IixyLHQsbiksZS5hcHBseUZpbHRlcnMoImkxOG4uZ2V0dGV4dF8iK2wobikscix0LG4pKTpyfSxfeDpjLF9uOih0LG4scixpKT0+e2xldCBvPXUoaSx2b2lkIDAsdCxuLHIpO3JldHVybiBlPyhvPWUuYXBwbHlGaWx0ZXJzKCJpMThuLm5nZXR0ZXh0IixvLHQsbixyLGkpLGUuYXBwbHlGaWx0ZXJzKCJpMThuLm5nZXR0ZXh0XyIrbChpKSxvLHQsbixyLGkpKTpvfSxfbng6KHQsbixyLGksbyk9PntsZXQgYT11KG8saSx0LG4scik7cmV0dXJuIGU/KGE9ZS5hcHBseUZpbHRlcnMoImkxOG4ubmdldHRleHRfd2l0aF9jb250ZXh0IixhLHQsbixyLGksbyksZS5hcHBseUZpbHRlcnMoImkxOG4ubmdldHRleHRfd2l0aF9jb250ZXh0XyIrbChvKSxhLHQsbixyLGksbykpOmF9LGlzUlRMOigpPT4icnRsIj09PWMoImx0ciIsInRleHQgZGlyZWN0aW9uIiksaGFzVHJhbnNsYXRpb246KHQsbixpKT0+e3ZhciBvLGE7Y29uc3Qgcz1uP24rIgQiK3Q6dDtsZXQgdT0hKG51bGw9PT0obz1yLmRhdGEpfHx2b2lkIDA9PT1vfHxudWxsPT09KGE9b1tudWxsIT1pP2k6ImRlZmF1bHQiXSl8fHZvaWQgMD09PWF8fCFhW3NdKTtyZXR1cm4gZSYmKHU9ZS5hcHBseUZpbHRlcnMoImkxOG4uaGFzX3RyYW5zbGF0aW9uIix1LHQsbixpKSx1PWUuYXBwbHlGaWx0ZXJzKCJpMThuLmhhc190cmFuc2xhdGlvbl8iK2woaSksdSx0LG4saSkpLHV9fX07dmFyIF89ZSgiZzU2eCIpO2NvbnN0IG09Yih2b2lkIDAsdm9pZCAwLF8uZGVmYXVsdEhvb2tzKTt2YXIgdz1tO2NvbnN0IGs9bS5nZXRMb2NhbGVEYXRhLmJpbmQobSksRj1tLnNldExvY2FsZURhdGEuYmluZChtKSxTPW0ucmVzZXRMb2NhbGVEYXRhLmJpbmQobSksaj1tLnN1YnNjcmliZS5iaW5kKG0pLFQ9bS5fXy5iaW5kKG0pLE89bS5feC5iaW5kKG0pLEw9bS5fbi5iaW5kKG0pLEQ9bS5fbnguYmluZChtKSxQPW0uaXNSVEwuYmluZChtKSxFPW0uaGFzVHJhbnNsYXRpb24uYmluZChtKX0sZzU2eDpmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz13aW5kb3cud3AuaG9va3N9fSk7"}},"time_used":12,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":12,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=3.6.4","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.517Z","timestamp":1785145482517,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=3.6.4 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 5954\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":5954,"size_decoded":6170,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"2f87fb22cb53b1e4de17cfb82cbd99da","sha1":"990bba2048fe3c613304b89f9433f676d68f5259","sha256":"ead4a638255b47cfdd1b1ef2128428479f13a6e366c6d834480d21bdf00804c5","sha512":"aedc71c460902bccf76d65f977dd838c1f52848db95506b93b3bf94b4246efe61cffa7c39a0b76a7399f7d23f169788b5eeffa2368c4a43e230ddeceb8fdf1d3","ssdeep":"48:VuJbw7KlBvWQvGmE7e1dN0WoZlSEWmvOJ4GGhTvKRJ3/JgOQ6Yj66zVuYfZfz37a:Qu2lnA7e1rkSEWHaJ+FQtm8Vr52s6qI","tlshash":"08c1de0cabf12039a29bf275463fc80872b7609b6e9abc043d4c62445f6907955f6fed","first_seen":"2026-07-27T08:06:56.576404Z","last_seen":"2026-07-27T09:45:50.927336Z","times_seen":3,"resource_available":true,"data":"ISBmdW5jdGlvbih0KSB7CiAgICB2YXIgbyA9IGZ1bmN0aW9uKG8sIHMpIHsKICAgICAgICB2YXIgZSwgaSwgciA9ICExLAogICAgICAgICAgICBuID0gITEsCiAgICAgICAgICAgIGEgPSAhMSwKICAgICAgICAgICAgYyA9IHt9LAogICAgICAgICAgICBmID0gewogICAgICAgICAgICAgICAgdG86ICJ0b3AiLAogICAgICAgICAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgZWZmZWN0c09mZnNldDogMCwKICAgICAgICAgICAgICAgIHBhcmVudDogITEsCiAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgc3RpY2t5OiAic3RpY2t5IiwKICAgICAgICAgICAgICAgICAgICBzdGlja3lBY3RpdmU6ICJzdGlja3ktYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICBzdGlja3lFZmZlY3RzOiAic3RpY2t5LWVmZmVjdHMiLAogICAgICAgICAgICAgICAgICAgIHNwYWNlcjogInN0aWNreS1zcGFjZXIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHAgPSBmdW5jdGlvbih0LCBvLCBzKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHt9LAogICAgICAgICAgICAgICAgICAgIGkgPSB0WzBdLnN0eWxlOwogICAgICAgICAgICAgICAgcy5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBlW3RdID0gdm9pZCAwICE9PSBpW3RdID8gaVt0XSA6ICIiCiAgICAgICAgICAgICAgICB9KSwgdC5kYXRhKCJjc3MtYmFja3VwLSIgKyBvLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBsID0gZnVuY3Rpb24odCwgbykgewogICAgICAgICAgICAgICAgcmV0dXJuIHQuZGF0YSgiY3NzLWJhY2t1cC0iICsgbykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcChlLCAidW5zdGlja3kiLCBbInBvc2l0aW9uIiwgIndpZHRoIiwgIm1hcmdpbi10b3AiLCAibWFyZ2luLWJvdHRvbSIsICJ0b3AiLCAiYm90dG9tIl0pOwogICAgICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJmaXhlZCIsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHUoZSwgIndpZHRoIiksCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAwLAogICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogMAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRbaS50b10gPSBpLm9mZnNldCwgdFsidG9wIiA9PT0gaS50byA/ICJib3R0b20iIDogInRvcCJdID0gIiIsIGUuY3NzKHQpLmFkZENsYXNzKGkuY2xhc3Nlcy5zdGlja3lBY3RpdmUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGUuY3NzKGwoZSwgInVuc3RpY2t5IikpLnJlbW92ZUNsYXNzKGkuY2xhc3Nlcy5zdGlja3lBY3RpdmUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHUgPSBmdW5jdGlvbih0LCBvLCBzKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGdldENvbXB1dGVkU3R5bGUodFswXSksCiAgICAgICAgICAgICAgICAgICAgaSA9IHBhcnNlRmxvYXQoZVtvXSksCiAgICAgICAgICAgICAgICAgICAgciA9ICJoZWlnaHQiID09PSBvID8gWyJ0b3AiLCAiYm90dG9tIl0gOiBbImxlZnQiLCAicmlnaHQiXSwKICAgICAgICAgICAgICAgICAgICBuID0gW107CiAgICAgICAgICAgICAgICByZXR1cm4gImJvcmRlci1ib3giICE9PSBlLmJveFNpemluZyAmJiBuLnB1c2goImJvcmRlciIsICJwYWRkaW5nIiksIHMgJiYgbi5wdXNoKCJtYXJnaW4iKSwgbi5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByLmZvckVhY2goZnVuY3Rpb24obykgewogICAgICAgICAgICAgICAgICAgICAgICBpICs9IHBhcnNlRmxvYXQoZVt0ICsgIi0iICsgb10pCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pLCBpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHkgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGMuJHdpbmRvdy5zY3JvbGxUb3AoKSwKICAgICAgICAgICAgICAgICAgICBzID0gdSh0LCAiaGVpZ2h0IiksCiAgICAgICAgICAgICAgICAgICAgZSA9IGlubmVySGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIGkgPSB0Lm9mZnNldCgpLnRvcCAtIG8sCiAgICAgICAgICAgICAgICAgICAgciA9IGkgLSBlOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB0b3A6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVRvcDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUJvdHRvbTogcgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Ub3A6IGkgKyBzLAogICAgICAgICAgICAgICAgICAgICAgICBmcm9tQm90dG9tOiByICsgcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYy4kc3BhY2VyID0gZS5jbG9uZSgpLmFkZENsYXNzKGkuY2xhc3Nlcy5zcGFjZXIpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogImhpZGRlbiIsCiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogIm5vbmUiCiAgICAgICAgICAgICAgICB9KSwgZS5hZnRlcihjLiRzcGFjZXIpLCBtKCksIHIgPSAhMCwgZS50cmlnZ2VyKCJzdGlja3k6c3RpY2siKQogICAgICAgICAgICB9LAogICAgICAgICAgICBrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBkKCksIGMuJHNwYWNlci5yZW1vdmUoKSwgciA9ICExLCBlLnRyaWdnZXIoInN0aWNreTp1bnN0aWNrIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgIG8gPSAidG9wIiA9PT0gaS50bzsKICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgKG8gPyB0LnRvcC5mcm9tVG9wID4gaS5vZmZzZXQgOiB0LmJvdHRvbS5mcm9tQm90dG9tIDwgLWkub2Zmc2V0KSAmJiAoYy4kcGFyZW50LmNzcyhsKGMuJHBhcmVudCwgImNoaWxkTm90Rm9sbG93aW5nIikpLCBlLmNzcyhsKGUsICJub3RGb2xsb3dpbmciKSksIG4gPSAhMSkKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB5KGMuJHBhcmVudCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBnZXRDb21wdXRlZFN0eWxlKGMuJHBhcmVudFswXSksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwYXJzZUZsb2F0KHJbbyA/ICJib3JkZXJCb3R0b21XaWR0aCIgOiAiYm9yZGVyVG9wV2lkdGgiXSksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBvID8gcy5ib3R0b20uZnJvbVRvcCAtIGEgOiBzLnRvcC5mcm9tQm90dG9tICsgYTsKICAgICAgICAgICAgICAgICAgICAobyA/IGYgPD0gdC5ib3R0b20uZnJvbVRvcCA6IGYgPj0gdC50b3AuZnJvbUJvdHRvbSkgJiYgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHAoYy4kcGFyZW50LCAiY2hpbGROb3RGb2xsb3dpbmciLCBbInBvc2l0aW9uIl0pLCBjLiRwYXJlbnQuY3NzKCJwb3NpdGlvbiIsICJyZWxhdGl2ZSIpLCBwKGUsICJub3RGb2xsb3dpbmciLCBbInBvc2l0aW9uIiwgInRvcCIsICJib3R0b20iXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdFtpLnRvXSA9ICIiLCB0WyJ0b3AiID09PSBpLnRvID8gImJvdHRvbSIgOiAidG9wIl0gPSAwLCBlLmNzcyh0KSwgbiA9ICEwCiAgICAgICAgICAgICAgICAgICAgfSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBvID0gaS5vZmZzZXQ7CiAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0geShjLiRzcGFjZXIpOwogICAgICAgICAgICAgICAgICAgIHQgPSAidG9wIiA9PT0gaS50byA/IHMudG9wLmZyb21Ub3AgLSBvIDogLXMuYm90dG9tLmZyb21Cb3R0b20gLSBvLCBpLnBhcmVudCAmJiB2KCksIHQgPiAwICYmIGsoKQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHkoZSk7CiAgICAgICAgICAgICAgICAgICAgKHQgPSAidG9wIiA9PT0gaS50byA/IG4udG9wLmZyb21Ub3AgLSBvIDogLW4uYm90dG9tLmZyb21Cb3R0b20gLSBvKSA8PSAwICYmIChoKCksIGkucGFyZW50ICYmIHYoKSkKICAgICAgICAgICAgICAgIH0hIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBhICYmIC10IDwgaS5lZmZlY3RzT2Zmc2V0ID8gKGUucmVtb3ZlQ2xhc3MoaS5jbGFzc2VzLnN0aWNreUVmZmVjdHMpLCBhID0gITEpIDogIWEgJiYgLXQgPj0gaS5lZmZlY3RzT2Zmc2V0ICYmIChlLmFkZENsYXNzKGkuY2xhc3Nlcy5zdGlja3lFZmZlY3RzKSwgYSA9ICEwKQogICAgICAgICAgICAgICAgfSh0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBiID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBnKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgciAmJiAoZCgpLCBtKCksIGkucGFyZW50ICYmIChuID0gITEsIHYoKSkpCiAgICAgICAgICAgIH07CiAgICAgICAgdGhpcy5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHIgJiYgaygpLCBjLiR3aW5kb3cub2ZmKCJzY3JvbGwiLCBiKS5vZmYoInJlc2l6ZSIsIHcpLCBlLnJlbW92ZUNsYXNzKGkuY2xhc3Nlcy5zdGlja3kpCiAgICAgICAgfSwgaSA9IGpRdWVyeS5leHRlbmQoITAsIGYsIHMpLCBlID0gdChvKS5hZGRDbGFzcyhpLmNsYXNzZXMuc3RpY2t5KSwgYy4kd2luZG93ID0gdCh3aW5kb3cpLCBpLnBhcmVudCAmJiAoYy4kcGFyZW50ID0gZS5wYXJlbnQoKSwgInBhcmVudCIgIT09IGkucGFyZW50ICYmIChjLiRwYXJlbnQgPSBjLiRwYXJlbnQuY2xvc2VzdChpLnBhcmVudCkpKSwgYy4kd2luZG93Lm9uKHsKICAgICAgICAgICAgc2Nyb2xsOiBiLAogICAgICAgICAgICByZXNpemU6IHcKICAgICAgICB9KSwgZygpCiAgICB9OwogICAgdC5mbi5zdGlja3kgPSBmdW5jdGlvbihzKSB7CiAgICAgICAgdmFyIGUgPSAic3RyaW5nIiA9PSB0eXBlb2YgczsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgaSA9IHQodGhpcyk7CiAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGkuZGF0YSgic3RpY2t5Iik7CiAgICAgICAgICAgICAgICBpZiAoIXIpIHRocm93IEVycm9yKCJUcnlpbmcgdG8gcGVyZm9ybSB0aGUgYCIgKyBzICsgImAgbWV0aG9kIHByaW9yIHRvIGluaXRpYWxpemF0aW9uIik7CiAgICAgICAgICAgICAgICBpZiAoIXJbc10pIHRocm93IFJlZmVyZW5jZUVycm9yKCJNZXRob2QgYCIgKyBzICsgImAgbm90IGZvdW5kIGluIHN0aWNreSBpbnN0YW5jZSIpOwogICAgICAgICAgICAgICAgcltzXS5hcHBseShyLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKSwgImRlc3Ryb3kiID09PSBzICYmIGkucmVtb3ZlRGF0YSgic3RpY2t5IikKICAgICAgICAgICAgfSBlbHNlIGkuZGF0YSgic3RpY2t5IiwgbmV3IG8odGhpcywgcykpCiAgICAgICAgfSksIHRoaXMKICAgIH0sIHdpbmRvdy5TdGlja3kgPSBvCn0oalF1ZXJ5KTs="}},"time_used":1375,"timings":{"blocked":1278,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"cdnconsents.websitepolicies.com/legacy/lib/cookieconsent/1.0.3/cookieconsent.min.js","fqdn":"cdnconsents.websitepolicies.com","domain":"websitepolicies.com","tld":"com"},"ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.759Z","timestamp":1785145482759,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cdnconsents.websitepolicies.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 18 Jul 2026 01:02:42 GMT","end":"Fri, 16 Oct 2026 01:02:41 GMT"},"fingerprint":{"sha1":"F4:8A:64:84:E9:6C:5C:DC:A8:BA:32:56:66:3D:AE:37:B0:6B:CE:12","sha256":"B8:0C:85:7D:C7:FE:E6:09:AA:99:31:0E:F0:15:26:1F:4B:9F:59:92:F3:F4:57:89:A2:6E:56:CF:F1:22:B8:79"}}},"request":{"raw":"GET /legacy/lib/cookieconsent/1.0.3/cookieconsent.min.js HTTP/1.1\r\nHost: cdnconsents.websitepolicies.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\nReferer: https://betaroi.ltd/\r\nSec-GPC: 1\r\nConnection: keep-alive\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\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: text/javascript\r\nserver: BunnyCDN-NO1-830\r\ncdn-pullzone: 2253271\r\ncdn-requestcountrycode: NO\r\nvary: Accept-Encoding\r\naccess-control-allow-origin: *\r\naccess-control-allow-headers: Server, x-goog-meta-frames, Content-Length, Content-Type, Range, X-Requested-With, If-Modified-Since, If-None-Match\r\naccess-control-expose-headers: Server, x-goog-meta-frames, Content-Length, Content-Type, Range, X-Requested-With, If-Modified-Since, If-None-Match\r\nage: 1675170\r\ncache-control: max-age=2678400\r\ncontent-encoding: zstd\r\netag: W/\"675c652d-338b\"\r\nexpires: Mon, 16 Jun 2025 16:54:57 GMT\r\nlast-modified: Fri, 13 Dec 2024 16:47:41 GMT\r\ncdn-cachedat: 08/14/2025 09:09:46\r\nstrict-transport-security: max-age=31536000\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncf-cache-status: HIT\r\nreport-to: {\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=TT58DUsBB1Sxy7HJUfBsSpOQPEoTgd1%2FHW%2BMOvdWvyTLP%2FObhuBEkffs2fKmLJnhGWezrtB9vrwZocDMFYN9ptD9yMMEcCQ2zgzBStvALjvfVDrZX%2FgBOt6vynpRXtm5%2BxfBPcd2LYaYyyHKlaYq\"}],\"group\":\"cf-nel\",\"max_age\":604800}\r\nnel: {\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}\r\ncf-ray: 9576d17f3b2cd62a-CDG\r\nserver-timing: cfL4;desc=\"?proto=TCP\u0026rtt=651\u0026min_rtt=650\u0026rtt_var=247\u0026sent=3\u0026recv=6\u0026lost=0\u0026retrans=0\u0026sent_bytes=219\u0026recv_bytes=1782\u0026delivery_rate=2177443\u0026cwnd=250\u0026unsent_bytes=0\u0026cid=c0aa1253fbc28237\u0026ts=36\u0026x=0\"\r\ncdn-proxyver: 1.33\r\ncdn-requestpullcode: 200\r\ncdn-requestpullsuccess: True\r\ncdn-edgestorageid: 830\r\ncdn-status: 200\r\ncdn-requesttime: 0\r\ncdn-requestid: 780656915b4dec902f582d124d7f88f3\r\ncdn-cache: HIT\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]}],"data":{"size":13195,"size_decoded":7359,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (13125)","md5":"9a701886aedd276d8b25b6eac5514561","sha1":"1f348386d885287306df05a44583c0506945d759","sha256":"e64a65c32ac0e0f3b3d953983a118c2e75de2cc59e76b008cf344dd0f8709a0d","sha512":"7b10ebdc25ae8644113fe86105f43c85e2f0b0369905a0c8cc36914901f7832685540af197764d6e905f232be188d3da255f0cc384492c4c32fcb07b8a100e04","ssdeep":"192:PIR50+DLK9SF2fgShpSxMU2Yocrs3PlPVkg1MECbVUbuIjIuk1zeqTcHij/SyWMw:gTXK9SIoR2/lPVkFbVhzw3FN4WOff4j","tlshash":"0c4284893f0432bd177b9433373bd81af17a0c05a98cd58af07678581bad325a5be678","first_seen":"2025-02-03T19:35:19.16267Z","last_seen":"2026-07-27T10:40:33.145505Z","times_seen":142,"resource_available":true,"data":"LyogaHR0cHM6Ly93d3cud2Vic2l0ZXBvbGljaWVzLmNvbS9jb29raWUtY29uc2VudC1iYW5uZXItZ2VuZXJhdG9yICovCnZhciBhbD1iO2Z1bmN0aW9uIGEoKXt2YXIgYW09WydjYWxsJywncHVzaGRvd24nLCd7e2NsYXNzZXN9fScsJ25vZGVUeXBlJywnc2V0Q29va2llJywnbWFyZ2luJywndGVtcGxhdGUnLCd0b1N0cmluZycsJzMwMzc0cGlvdW1wJywnb25CdXR0b25FbnRlcicsJ21heEhlaWdodCcsJ3dwY2MtYm9yZGVyLScsJ3JlZmVyZW5jZXMnLCdjb2xvcjpceDIwJywnY2xhc3NOYW1lJywnXHgyMC53cGNjLXByaXZhY3ksJywnc3BsaXQnLCdjb250ZW50Jywnd3BjYy1pbnZpc2libGUnLCd3cGNjLWNvcm5lcnMtcm91bmRceDIwd3BjYy1jb3JuZXJzLScsJ3Rlc3QnLCd0cmFuc2l0aW9uZW5kJywncG9wJywnZWxlbWVudCcsJ3dwY2MnLCdib3JkZXItY29sb3I6XHgyMCcsJ29uQnV0dG9uQ2xpY2snLCc8ZGl2XHgyMGNsYXNzPVx4MjJ3cGNjLWNvbnRhaW5lclx4MjB7e2NsYXNzZXN9fVx4MjI+e3tjaGlsZHJlbn19PC9kaXY+JywnaHR0cHM6Ly9jZG5jb25zZW50cy53ZWJzaXRlcG9saWNpZXMuY29tL2xlZ2FjeS9saWIvY29va2llY29uc2VudC9jb29raWVjb25zZW50Lm1pbi5jc3MnLCdjcmVhdGVFbGVtZW50JywnZ2V0U3RhdHVzJywnZGVzdHJveScsJ2FwcGVuZENoaWxkJywncGF0aD0nLCc5MjY2MTg0YXRHdGZhJywnd3BjYy1idG4nLCdwb3NpdGlvbicsJzE2MTU0MGR3QU5URicsJzAwMDAwMCcsJ3NhdmVkQ29va2llJywnY29sb3JzJywnY29va2llJywnaXNPcGVuJywnZmFkZUluJywnYm9keScsJ2NsaWNrJywnb1RyYW5zaXRpb25FbmQnLCd3cmFwcGVyJywnZm9udHNpemUnLCdrZXl1cCcsJzE2NDA4NjRSdHB6Z2UnLCdceDIwLndwY2MtYnRuOmhvdmVyJywnd3BjYy1tYXJnaW4tJywnPC9kaXY+JywncHJldmVudERlZmF1bHQnLCdkaXNwbGF5JywnZXhwaXJlcz0nLCdnZXREYXRlJywnaGFzQ2xhc3MnLCdjdXN0b21DU1MnLCdiYWNrZ3JvdW5kLWNvbG9yOlx4MjAnLCdhdXRvT3BlbicsJ2luc2VydFJ1bGUnLCczNk5QeXdHcCcsJ3Byb3RvdHlwZScsJ2Rpc3BsYXlUaW1lb3V0JywnXHgyMC53cGNjLXByaXZhY3k6YWN0aXZlLCcsJ2dldEx1bWluYW5jZScsJ3R5cGUnLCdpc0luaXQnLCd0cmFuc3BhcmVuY3knLCdzaGlmdCcsJ2hhc093blByb3BlcnR5Jywnd3BjYy1ib3JkZXItMicsJ2dldENvb2tpZScsJ2ZpcnN0Q2hpbGQnLCdkaXYnLCdhZGRFdmVudExpc3RlbmVyJywnY2hpbGRyZW4nLCdjb3JuZXJzJywnb25Jbml0JywnbGVuZ3RoJywnODA3NzY1RE9KVW9UJywnY2xvc2UnLCczMzAxNDJwZkZzdWMnLCd1bmRlZmluZWQnLCd7e2NoaWxkcmVufX0nLCdib3R0b20nLCdyZXBsYWNlJywnc3RyaW5naWZ5JywndG9wJywnc2VjdXJlJywnZ2V0RWxlbWVudHNCeUNsYXNzTmFtZScsJ3RleHQnLCdpc1BsYWluT2JqJywnYWZ0ZXJGYWRpbmcnLCdub3JtYWxpemVDb2xvcicsJ3N0cmluZycsJ1x4MjAud3BjYy1idG4nLCdrZXlDb2RlJywnc3R5bGUnLCdpbml0Jywnd3BjYy1wYWRkaW5nLScsJ3NldFN0YXR1cycsJ2ZvckVhY2gnLCd3ZWJraXRUcmFuc2l0aW9uRW5kJywnbm9uZScsJ29wdGlvbnMnLCdmbG9hdCcsJ3NoZWV0JywndXNlckFnZW50JywnMTM3NDM4eW1GUlNOJywnZmFkZUVuZCcsJ3dwY2MtYm9yZGVyLTMnLCdib3R0b20tbGVmdCcsJyMyMjIyMjInLCdiaW5kJywnb3BlbicsJ3dwY2MtY29sb3ItY3VzdG9tLScsJ2luZGV4T2YnLCdib3JkZXInLCd3cGNjLWJvcmRlci0xJywnYXBwbHknLCdzdHlsZXNoZWV0JywnVGhpc1x4MjB3ZWJzaXRlXHgyMHVzZXNceDIwY29va2llc1x4MjB0b1x4MjBlbnN1cmVceDIweW91XHgyMGdldFx4MjB0aGVceDIwYmVzdFx4MjBleHBlcmllbmNlXHgyMG9uXHgyMG91clx4MjB3ZWJzaXRlLicsJ0xlYXJuXHgyMG1vcmUnLCdjb250YWluZXInLCdDb29raWVzT0snLCdkaXNtaXNzJywnYmFja2dyb3VuZCcsJ2pvaW4nLCdwb3B1cCcsJ3JlbW92ZUV2ZW50TGlzdGVuZXInLCc8ZGl2XHgyMGNsYXNzPVx4MjJ3cGNjLXB1c2hkb3duLXdyYXBceDIyPicsJ3JhbnNpdGlvbicsJ2luc2VydEJlZm9yZScsJ3dwY2MtYm9yZGVyLTQnLCdmYWRpbmcnLCdwdXNoJywnZG9tYWluPScsJ3dwY2MtYm9yZGVyLTUnLCdoZWFkJywndGV4dC9jc3MnLCdyZW1vdmVDbGFzcycsJ3BhcmVudE5vZGUnLCdwYXRoJywnb3duZXJOb2RlJywnd3BjYy1jb250YWluZXInLCc8c3Bhblx4MjBjbGFzcz1ceDIyd3BjYy1tZXNzYWdlXHgyMj57e21lc3NhZ2V9fVx4MjA8YVx4MjBjbGFzcz1ceDIyd3BjYy1wcml2YWN5XHgyMlx4MjBocmVmPVx4MjJ7e2hyZWZ9fVx4MjJceDIwcmVsPVx4MjJub29wZW5lclx4MjJceDIwdGFyZ2V0PVx4MjJ7e3RhcmdldH19XHgyMj57e2xpbmt9fTwvYT48L3NwYW4+PGRpdlx4MjBjbGFzcz1ceDIyd3BjYy1jb21wbGlhbmNlXHgyMj48YnV0dG9uXHgyMHR5cGU9XHgyMmJ1dHRvblx4MjJceDIwY2xhc3M9XHgyMndwY2MtYnRuXHgyMlx4MjB0YWJpbmRleD1ceDIyMFx4MjI+e3tidXR0b259fTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9IndwY2MtcG93ZXJlZGJ5Ij48YSBjbGFzcz0id3BjYy1wcml2YWN5IiBocmVmPSJodHRwczovL3d3dy53ZWJzaXRlcG9saWNpZXMuY29tL2Nvb2tpZS1jb25zZW50LWJhbm5lci1nZW5lcmF0b3IiIHRhcmdldD0iX2JsYW5rIj5Qb3dlcmVkIGJ5IFdlYnNpdGVQb2xpY2llczwvYT48L2Rpdj4nLCcyMENWUk1jUScsJ3dwY2MtcHVzaGRvd24nLCdwYWRkaW5nJywnbmFtZScsJ19ibGFuaycsJ25hdmlnYXRvcicsJ2RvbWFpbicsJ2NsaWVudEhlaWdodCcsJ2ZhZGVPdXQnLCd3cGNjLXRyYW5zcGFyZW5jeS0nLCdjb25zdHJ1Y3RvcicsJ2V4dGVuZCcsJ2NvbXBpbGVUZW1wbGF0ZScsJ3dwY2MtJywndG9VVENTdHJpbmcnLCdhZGRDbGFzcycsJ2VuYWJsZWQnLCdvblN0YXR1c0NoYW5nZSddO2E9ZnVuY3Rpb24oKXtyZXR1cm4gYW07fTtyZXR1cm4gYSgpO31mdW5jdGlvbiBiKGMsZCl7dmFyIGU9YSgpO3JldHVybiBiPWZ1bmN0aW9uKGYsZyl7Zj1mLTB4MWFiO3ZhciBoPWVbZl07cmV0dXJuIGg7fSxiKGMsZCk7fShmdW5jdGlvbihjLGQpe3ZhciBEPWIsZT1jKCk7d2hpbGUoISFbXSl7dHJ5e3ZhciBmPXBhcnNlSW50KEQoMHgyNDYpKS8weDErLXBhcnNlSW50KEQoMHgxZWIpKS8weDIrLXBhcnNlSW50KEQoMHgxZTkpKS8weDMrLXBhcnNlSW50KEQoMHgyMmMpKS8weDQqKHBhcnNlSW50KEQoMHgxYmMpKS8weDUpKy1wYXJzZUludChEKDB4MWQ2KSkvMHg2KihwYXJzZUludChEKDB4MjA2KSkvMHg3KSstcGFyc2VJbnQoRCgweDFjOSkpLzB4OCtwYXJzZUludChEKDB4MWI5KSkvMHg5O2lmKGY9PT1kKWJyZWFrO2Vsc2UgZVsncHVzaCddKGVbJ3NoaWZ0J10oKSk7fWNhdGNoKGcpe2VbJ3B1c2gnXShlWydzaGlmdCddKCkpO319fShhLDB4MjI3NzQpLGZ1bmN0aW9uKGMpe3ZhciBFPWI7aWYoY1tFKDB4MWRjKV0pcmV0dXJuO3ZhciBkPXsnZ2V0Q29va2llJzpmdW5jdGlvbihmKXt2YXIgRj1FLGc9JztceDIwJytkb2N1bWVudFtGKDB4MWMwKV0saD1nW0YoMHgyNGUpXSgnO1x4MjAnK2YrJz0nKTtyZXR1cm4gaFtGKDB4MWU4KV08MHgyP3VuZGVmaW5lZDpoW0YoMHgxYWQpXSgpWydzcGxpdCddKCc7JylbRigweDFkZSldKCk7fSwnc2V0Q29va2llJzpmdW5jdGlvbihmLGcsaCxpLGosayl7dmFyIEc9RTtpZihmPT0nJylyZXR1cm47dmFyIGw9bmV3IERhdGUoKTtsWydzZXREYXRlJ10obFtHKDB4MWQwKV0oKSsoaHx8MHgxNmQpKTt2YXIgbT1bZisnPScrZyxHKDB4MWNmKStsW0coMHgyM2EpXSgpLEcoMHgxYjgpKyhqfHwnLycpXTtpJiZtW0coMHgyMjEpXShHKDB4MjIyKStpKSxrJiZtW0coMHgyMjEpXShHKDB4MWYyKSksZG9jdW1lbnRbRygweDFjMCldPW1bRygweDIxOSldKCc7Jyk7fSwnY29tcGlsZVRlbXBsYXRlJzpmdW5jdGlvbihmLGcpe3ZhciBIPUUsaD0ve3soW2Etel1bYS16MC05XC1fXSopfX0vZ2k7cmV0dXJuIGZbSCgweDFlZildKGgsZnVuY3Rpb24oaSl7cmV0dXJuIGcoYXJndW1lbnRzWzB4MV0pfHwnJzt9KTt9LCdhZGRDbGFzcyc6ZnVuY3Rpb24oZixnKXt2YXIgST1FO2ZbSSgweDI0YyldKz0nXHgyMCcrZzt9LCdyZW1vdmVDbGFzcyc6ZnVuY3Rpb24oZixnKXt2YXIgSj1FLGg9bmV3IFJlZ0V4cCgnXHg1Y2InK2crJ1x4NWNiJyk7ZltKKDB4MjRjKV09ZltKKDB4MjRjKV1bSigweDFlZildKGgsJycpO30sJ2hhc0NsYXNzJzpmdW5jdGlvbihmLGcpe3ZhciBLPUUsaD0nXHgyMCc7cmV0dXJuIGZbSygweDI0MSldPT09MHgxJiYoaCtmW0soMHgyNGMpXStoKVtLKDB4MWVmKV0oL1tcblx0XS9nLGgpW0soMHgyMGUpXShoK2craCk+PTB4MDt9LCdleHRlbmQnOmZ1bmN0aW9uKGYsZyl7dmFyIEw9RTtmb3IodmFyIGggaW4gZyl7Z1snaGFzT3duUHJvcGVydHknXShoKSYmKGggaW4gZiYmdGhpc1snaXNQbGFpbk9iaiddKGZbaF0pJiZ0aGlzW0woMHgxZjUpXShnW2hdKT90aGlzW0woMHgyMzcpXShmW2hdLGdbaF0pOmZbaF09Z1toXSk7fXJldHVybiBmO30sJ2lzUGxhaW5PYmonOmZ1bmN0aW9uKGYpe3ZhciBNPUU7cmV0dXJuIHR5cGVvZiBmPT09J29iamVjdCcmJmYhPT1udWxsJiZmW00oMHgyMzYpXT09T2JqZWN0O30sJ25vcm1hbGl6ZUNvbG9yJzpmdW5jdGlvbihmKXt2YXIgTj1FO3JldHVybiBmWzB4MF09PScjJyYmKGY9Zlsnc3Vic3RyJ10oMHgxKSksZltOKDB4MWU4KV09PTB4MyYmKGY9ZlsweDBdK2ZbMHgwXStmWzB4MV0rZlsweDFdK2ZbMHgyXStmWzB4Ml0pLGY7fSwnaGFzaENvbG9ycyc6ZnVuY3Rpb24oZil7dmFyIE89RSxnPTB4MCxoLGosaztpZihmW08oMHgxZTgpXT09PTB4MClyZXR1cm4gZztmb3IoaD0weDAsaz1mW08oMHgxZTgpXTtoPGs7KytoKXtqPWZbJ2NoYXJDb2RlQXQnXShoKSxnPShnPDwweDUpLWcraixnfD0weDA7fXJldHVybiBnO30sJ2dldEx1bWluYW5jZSc6ZnVuY3Rpb24oZil7dmFyIFA9RSxnPXBhcnNlSW50KHRoaXNbUCgweDFmNyldKGYpLDB4MTApLGg9MHgxNCxpPShnPj4weDEwKS1oLGo9KGc+PjB4OCYweGZmKS1oLGs9KGcmMHhmZiktaCxsPSgweDEwMDAwMDArKGk8MHhmZj9pPDB4MT8weDA6aToweGZmKSoweDEwMDAwKyhqPDB4ZmY/ajwweDE/MHgwOmo6MHhmZikqMHgxMDArKGs8MHhmZj9rPDB4MT8weDA6azoweGZmKSlbUCgweDI0NSldKDB4MTApWydzbGljZSddKDB4MSk7cmV0dXJuJyMnK2w7fSwnaXNNb2JpbGUnOmZ1bmN0aW9uKCl7dmFyIFE9RTtyZXR1cm4vQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfElFTW9iaWxlfE9wZXJhIE1pbml8QmxhY2tCZXJyeS9pW1EoMHgxYWIpXShuYXZpZ2F0b3JbUSgweDIwNSldKTt9fTtjW0UoMHgyMDcpXT0oZnVuY3Rpb24oKXt2YXIgUj1FLGY9ZG9jdW1lbnRbUigweDFiNCldKCdkaXYnKSxnPXsndCc6UigweDFhYyksJ01velQnOlIoMHgxYWMpLCdtc1QnOidNU1RyYW5zaXRpb25FbmQnLCdPVCc6UigweDFjNSksJ1dlYmtpdFQnOlIoMHgyMDApfTtmb3IodmFyIGggaW4gZyl7aWYoZ1tSKDB4MWRmKV0oaCkmJnR5cGVvZiBmW1IoMHgxZmIpXVtoK1IoMHgyMWQpXSE9UigweDFlYykpcmV0dXJuIGdbaF07fXJldHVybicnO30oKSksY1tFKDB4MjIwKV09ISFjW0UoMHgyMDcpXSxjWydjdXN0b21DU1MnXT17fSxjWydQb3B1cCddPShmdW5jdGlvbigpe3ZhciBTPUUsZj17J2VuYWJsZWQnOiEhW10sJ2F1dG9PcGVuJzohIVtdLCdjb29raWUnOnsnbmFtZSc6UygweDFhZiksJ3BhdGgnOicvJywnZG9tYWluJzonJywnZXhwaXJ5RGF5cyc6MHgxNmQsJ3NlY3VyZSc6IVtdfSwnY29udGVudCc6eydtZXNzYWdlJzpTKDB4MjEzKSwnbGluayc6UygweDIxNCksJ2hyZWYnOidodHRwczovL3d3dy5pbnRlcm5ldGNvb2tpZXMuY29tJywndGFyZ2V0JzpTKDB4MjMwKSwnYnV0dG9uJzonR290XHgyMGl0ISd9LCdjb250YWluZXInOlMoMHgxYjIpLCd0ZW1wbGF0ZSc6UygweDIyYiksJ3B1c2hkb3duJzohW10sJ3Bvc2l0aW9uJzpTKDB4MjA5KSwnY29ybmVycyc6JycsJ3BhZGRpbmcnOicnLCdtYXJnaW4nOicnLCdmb250c2l6ZSc6JycsJ3RyYW5zcGFyZW5jeSc6JycsJ2JvcmRlcic6JycsJ2NvbG9ycyc6bnVsbCwnb25Jbml0JzpmdW5jdGlvbih1KXt9LCdvblN0YXR1c0NoYW5nZSc6ZnVuY3Rpb24odSx2KXt9fTtmdW5jdGlvbiBnKCl7dmFyIFQ9Uzt0aGlzWydpbml0J11bVCgweDIxMSldKHRoaXMsYXJndW1lbnRzKTt9Z1sncHJvdG90eXBlJ11bJ2luaXQnXT1mdW5jdGlvbih1KXt2YXIgVT1TO3RoaXNbVSgweDIwMildJiZ0aGlzW1UoMHgxYjYpXSgpO2RbJ2V4dGVuZCddKHRoaXNbVSgweDIwMildPXt9LGYpO2RbVSgweDFmNSldKHUpJiZkW1UoMHgyMzcpXSh0aGlzW1UoMHgyMDIpXSx1KTtqW1UoMHgyM2UpXSh0aGlzKSYmKHRoaXNbVSgweDIwMildW1UoMHgyM2MpXT0hW10pO3ZhciB2PXRoaXNbVSgweDIwMildW1UoMHgyMTUpXVtVKDB4MWVmKV0oVSgweDI0MCksbFtVKDB4MjNlKV0odGhpcylbJ2pvaW4nXSgnXHgyMCcpKVtVKDB4MWVmKV0oVSgweDFlZCksblsnY2FsbCddKHRoaXMpKTt0aGlzW1UoMHgyMDIpXVsncHVzaGRvd24nXT8odGhpc1tVKDB4MWM2KV09bVtVKDB4MjNlKV0odGhpcyxVKDB4MjFjKSt2K1UoMHgxY2MpKSx0aGlzW1UoMHgxYzYpXVtVKDB4MWZiKV1bVSgweDFjZSldPScnLHRoaXNbVSgweDFhZSldPXRoaXNbJ3dyYXBwZXInXVtVKDB4MWUyKV0sdGhpc1snZWxlbWVudCddWydzdHlsZSddW1UoMHgxY2UpXT1VKDB4MjAxKSxkWydhZGRDbGFzcyddKHRoaXNbVSgweDFhZSldLFUoMHgyNTApKSk6KHRoaXNbVSgweDFjNildPW51bGwsdGhpc1tVKDB4MWFlKV09bVtVKDB4MjNlKV0odGhpcyx2KSksdGhpc1tVKDB4MjAyKV1bVSgweDFkNCldJiZ0aGlzWydhdXRvT3BlbiddKCk7fSxnW1MoMHgxZDcpXVsnZGVzdHJveSddPWZ1bmN0aW9uKCl7dmFyIFY9Uzt0aGlzW1YoMHgxYjEpXSYmdGhpc1snZWxlbWVudCddJiYodGhpc1snZWxlbWVudCddW1YoMHgyMWIpXShWKDB4MWM0KSx0aGlzWydvbkJ1dHRvbkNsaWNrJ10pLHRoaXNbVigweDFiMSldPW51bGwpO3RoaXNbVigweDI0NyldJiZ0aGlzWydlbGVtZW50J10mJih0aGlzWydlbGVtZW50J11bVigweDIxYildKFYoMHgxYzgpLHRoaXNbVigweDI0NyldKSx0aGlzW1YoMHgyNDcpXT1udWxsKTtpZih0aGlzWyd3cmFwcGVyJ10mJnRoaXNbVigweDFjNildW1YoMHgyMjcpXSl0aGlzW1YoMHgxYzYpXVsncGFyZW50Tm9kZSddWydyZW1vdmVDaGlsZCddKHRoaXNbJ3dyYXBwZXInXSk7ZWxzZSB0aGlzW1YoMHgxYWUpXSYmdGhpc1tWKDB4MWFlKV1bVigweDIyNyldJiZ0aGlzW1YoMHgxYWUpXVtWKDB4MjI3KV1bJ3JlbW92ZUNoaWxkJ10odGhpc1tWKDB4MWFlKV0pO3RoaXNbJ3dyYXBwZXInXT1udWxsLHRoaXNbVigweDFhZSldPW51bGwsdCh0aGlzW1YoMHgyMDIpXVtWKDB4MWJmKV0pLHRoaXNbVigweDIwMildPW51bGw7fSxnW1MoMHgxZDcpXVtTKDB4MjBjKV09ZnVuY3Rpb24odSl7dmFyIFc9UztpZighdGhpc1tXKDB4MWFlKV0pcmV0dXJuO3JldHVybiF0aGlzW1coMHgxYzEpXSgpJiYoY1tXKDB4MjIwKV0/dGhpc1snZmFkZUluJ10oKTp0aGlzW1coMHgxYWUpXVtXKDB4MWZiKV1bJ2Rpc3BsYXknXT0nJyksdGhpczt9LGdbUygweDFkNyldW1MoMHgxZWEpXT1mdW5jdGlvbigpe3ZhciBYPVM7aWYoIXRoaXNbWCgweDFhZSldKXJldHVybjtyZXR1cm4gdGhpc1snaXNPcGVuJ10oKSYmKGNbWCgweDIyMCldP3RoaXNbWCgweDIzNCldKCk6dGhpc1tYKDB4MWFlKV1bWCgweDFmYildW1goMHgxY2UpXT0nbm9uZScpLHRoaXM7fSxnW1MoMHgxZDcpXVtTKDB4MWMyKV09ZnVuY3Rpb24oKXt2YXIgWT1TLHU9dGhpc1snZWxlbWVudCddO2lmKCFjW1koMHgyMjApXXx8IXUpcmV0dXJuO3RoaXNbWSgweDFmNildJiZpW1koMHgyM2UpXSh0aGlzLHUpO2lmKGRbWSgweDFkMSldKHUsWSgweDI1MCkpKXt1W1koMHgxZmIpXVtZKDB4MWNlKV09Jyc7aWYodGhpc1tZKDB4MjAyKV1bWSgweDIzZildKXt2YXIgdj0weDAsdz10aGlzWydlbGVtZW50J11bWSgweDIzMyldO2lmKGRbWSgweDFkMSldKHRoaXNbWSgweDFhZSldLFkoMHgyMTApKSl2PTB4MTtlbHNle2lmKGRbWSgweDFkMSldKHRoaXNbJ2VsZW1lbnQnXSxZKDB4MWUwKSkpdj0weDI7ZWxzZXtpZihkW1koMHgxZDEpXSh0aGlzW1koMHgxYWUpXSxZKDB4MjA4KSkpdj0weDM7ZWxzZXtpZihkW1koMHgxZDEpXSh0aGlzW1koMHgxYWUpXSxZKDB4MjFmKSkpdj0weDQ7ZWxzZSBkWydoYXNDbGFzcyddKHRoaXNbWSgweDFhZSldLFkoMHgyMjMpKSYmKHY9MHg1KTt9fX10aGlzW1koMHgxYWUpXVsncGFyZW50Tm9kZSddW1koMHgxZmIpXVsnbWF4SGVpZ2h0J109dyt2KjB4MisncHgnO310aGlzW1koMHgxZDgpXT1zZXRUaW1lb3V0KGhbWSgweDIwYildKHRoaXMsdSksMHgxOSk7fX0sZ1sncHJvdG90eXBlJ11bUygweDIzNCldPWZ1bmN0aW9uKCl7dmFyIFo9Uyx1PXRoaXNbWigweDFhZSldO2lmKCF1fHwhY1taKDB4MjIwKV0pcmV0dXJuO3RoaXNbWigweDFkOCldJiYoY2xlYXJUaW1lb3V0KHRoaXNbJ2Rpc3BsYXlUaW1lb3V0J10pLGhbWigweDIwYildKHRoaXMsdSkpLCFkWydoYXNDbGFzcyddKHUsWigweDI1MCkpJiYodGhpc1snb3B0aW9ucyddW1ooMHgyM2YpXSYmKHRoaXNbWigweDFhZSldW1ooMHgyMjcpXVtaKDB4MWZiKV1bWigweDI0OCldPScnKSx0aGlzWydhZnRlckZhZGluZyddPWlbWigweDIwYildKHRoaXMsdSksdVsnYWRkRXZlbnRMaXN0ZW5lciddKGNbWigweDIwNyldLHRoaXNbWigweDFmNildKSxkW1ooMHgyM2IpXSh1LCd3cGNjLWludmlzaWJsZScpKTt9LGdbUygweDFkNyldW1MoMHgxYzEpXT1mdW5jdGlvbigpe3ZhciBhMD1TO3JldHVybiB0aGlzWydlbGVtZW50J10mJnRoaXNbYTAoMHgxYWUpXVthMCgweDFmYildWydkaXNwbGF5J109PScnJiYoY1thMCgweDIyMCldPyFkWydoYXNDbGFzcyddKHRoaXNbYTAoMHgxYWUpXSxhMCgweDI1MCkpOiEhW10pO30sZ1tTKDB4MWQ3KV1bUygweDFiZSldPWZ1bmN0aW9uKHUpe3ZhciBhMT1TO3JldHVybiB0aGlzWydnZXRTdGF0dXMnXSgpPT1hMSgweDIxNyk7fSxnW1MoMHgxZDcpXVtTKDB4MWQ0KV09ZnVuY3Rpb24odSl7dmFyIGEyPVM7IXRoaXNbYTIoMHgxYmUpXSgpJiZ0aGlzW2EyKDB4MjAyKV1bJ2VuYWJsZWQnXSYmdGhpc1thMigweDIwYyldKCk7fSxnW1MoMHgxZDcpXVsnc2V0U3RhdHVzJ109ZnVuY3Rpb24odSl7dmFyIGEzPVMsdj10aGlzWydvcHRpb25zJ11bYTMoMHgxYzApXSx3PWRbJ2dldENvb2tpZSddKHZbYTMoMHgyMmYpXSk7ZFthMygweDI0MildKHZbYTMoMHgyMmYpXSx1LHZbJ2V4cGlyeURheXMnXSx2W2EzKDB4MjMyKV0sdlsncGF0aCddLHZbJ3NlY3VyZSddKSx0aGlzW2EzKDB4MjAyKV1bYTMoMHgyM2QpXVthMygweDIzZSldKHRoaXMsdSx3PT1hMygweDIxNykpO30sZ1tTKDB4MWQ3KV1bUygweDFiNSldPWZ1bmN0aW9uKCl7dmFyIGE0PVM7cmV0dXJuIGRbYTQoMHgxZTEpXSh0aGlzW2E0KDB4MjAyKV1bYTQoMHgxYzApXVsnbmFtZSddKTt9LGdbJ3Byb3RvdHlwZSddWydjbGVhclN0YXR1cyddPWZ1bmN0aW9uKCl7dmFyIGE1PVMsdT10aGlzWydvcHRpb25zJ11bYTUoMHgxYzApXTtkWydzZXRDb29raWUnXSh1WyduYW1lJ10sJycsLTB4MSx1W2E1KDB4MjMyKV0sdVthNSgweDIyOCldLHVbYTUoMHgxZjIpXSk7fTtmdW5jdGlvbiBoKHUpe3ZhciBhNj1TO3RoaXNbJ2Rpc3BsYXlUaW1lb3V0J109bnVsbCxkW2E2KDB4MjI2KV0odSxhNigweDI1MCkpO31mdW5jdGlvbiBpKHUpe3ZhciBhNz1TO3VbYTcoMHgxZmIpXVthNygweDFjZSldPWE3KDB4MjAxKSx1W2E3KDB4MjFiKV0oY1snZmFkZUVuZCddLHRoaXNbYTcoMHgxZjYpXSksdGhpc1thNygweDFmNildPW51bGw7fWZ1bmN0aW9uIGooKXt2YXIgYTg9Uyx1PXRoaXNbYTgoMHgyMDIpXVthOCgweDFlNyldW2E4KDB4MjBiKV0odGhpcyk7aWYod2luZG93W2E4KDB4MjE2KV18fHdpbmRvd1thOCgweDIzMSldW2E4KDB4MjE2KV0pcmV0dXJuIHUoYTgoMHgyMTcpKSwhIVtdO3ZhciB2PXRoaXNbYTgoMHgxYjUpXSgpLHc9dj09J2Rpc21pc3MnO3JldHVybiB3JiZ1KHYpLHc7fWZ1bmN0aW9uIGsoKXt2YXIgYTk9Uyx1PXRoaXNbJ29wdGlvbnMnXVthOSgweDFiYildW2E5KDB4MjRlKV0oJy0nKSx2PVtdO3JldHVybiB1W2E5KDB4MWZmKV0oZnVuY3Rpb24odyl7dmFyIGFhPWE5O3ZbYWEoMHgyMjEpXShhYSgweDIzOSkrdyk7fSksdjt9ZnVuY3Rpb24gbCgpe3ZhciBhYj1TLHU9dGhpc1thYigweDIwMildLHY9dVsncG9zaXRpb24nXT09YWIoMHgxZjEpfHx1W2FiKDB4MWJiKV09PWFiKDB4MWVlKT8nYmFubmVyJzphYigweDIwMyksdz1bYWIoMHgyMzkpK3ZdO3VbYWIoMHgxZTYpXSYmd1thYigweDIyMSldKGFiKDB4MjUxKSt1W2FiKDB4MWU2KV0pO3VbYWIoMHgyMmUpXSYmd1thYigweDIyMSldKGFiKDB4MWZkKSt1WydwYWRkaW5nJ10pO3VbYWIoMHgyNDMpXSYmd1thYigweDIyMSldKGFiKDB4MWNiKSt1W2FiKDB4MjQzKV0pO3VbYWIoMHgxZGQpXSYmd1sncHVzaCddKGFiKDB4MjM1KSt1W2FiKDB4MWRkKV0pO3VbJ2ZvbnRzaXplJ10mJndbJ3B1c2gnXSgnd3BjYy1mb250c2l6ZS0nK3VbYWIoMHgxYzcpXSk7dVthYigweDIwZildJiZ3W2FiKDB4MjIxKV0oYWIoMHgyNDkpK3VbYWIoMHgyMGYpXSk7dVsncHVzaGRvd24nXSYmd1thYigweDIyMSldKGFiKDB4MjJkKSk7d1thYigweDIyMSldW2FiKDB4MjExKV0odyxrWydjYWxsJ10odGhpcykpO3ZhciB4PXFbYWIoMHgyM2UpXSh0aGlzLHRoaXNbYWIoMHgyMDIpXVthYigweDFiZildKTtyZXR1cm4gdGhpc1snY3VzdG9tQ1NTJ10mJndbJ3B1c2gnXSh0aGlzWydjdXN0b21DU1MnXSksdzt9ZnVuY3Rpb24gbSh1KXt2YXIgYWM9Uyx2PXRoaXNbYWMoMHgyMDIpXSx3PWRvY3VtZW50W2FjKDB4MWI0KV0oYWMoMHgxZTMpKSx4PXZbYWMoMHgyMTUpXSYmdlthYygweDIxNSldWydub2RlVHlwZSddPT09MHgxP3ZbYWMoMHgyMTUpXTpkb2N1bWVudFthYygweDFjMyldO3dbJ2lubmVySFRNTCddPXU7dmFyIHk9d1thYygweDFlNSldWzB4MF07eVthYygweDFmYildWydkaXNwbGF5J109J25vbmUnO2RbYWMoMHgxZDEpXSh5LGFjKDB4MjJhKSkmJmNbJ2ZhZGluZyddJiZkWydhZGRDbGFzcyddKHksYWMoMHgyNTApKTt0aGlzW2FjKDB4MWIxKV09b1snYmluZCddKHRoaXMpLHRoaXNbJ29uQnV0dG9uRW50ZXInXT1wW2FjKDB4MjBiKV0odGhpcyk7dmFyIHo9eVthYygweDFmMyldKGFjKDB4MWJhKSksQT16WzB4MF07cmV0dXJuIEFbYWMoMHgxZTQpXShhYygweDFjNCksdGhpc1thYygweDFiMSldKSxBW2FjKDB4MWU0KV0oYWMoMHgxYzgpLHRoaXNbYWMoMHgyNDcpXSksIXhbYWMoMHgxZTIpXT94WydhcHBlbmRDaGlsZCddKHkpOnhbYWMoMHgyMWUpXSh5LHhbYWMoMHgxZTIpXSkseTt9ZnVuY3Rpb24gbigpe3ZhciBhZD1TLHU9dGhpc1thZCgweDIwMildLHY9ZFthZCgweDIzOCldKHVbYWQoMHgyNDQpXSxmdW5jdGlvbih3KXt2YXIgYWU9YWQseD11W2FlKDB4MjRmKV1bd107cmV0dXJuIHcmJnR5cGVvZiB4PT1hZSgweDFmOCkmJnhbYWUoMHgxZTgpXT94OicnO30pO3JldHVybiB2O31mdW5jdGlvbiBvKHUpe3ZhciBhZj1TO3RoaXNbYWYoMHgxZmUpXShhZigweDIxNykpLHRoaXNbYWYoMHgxZWEpXSgpO31mdW5jdGlvbiBwKHUpe3ZhciBhZz1TO3VbYWcoMHgxZmEpXT09PTB4ZCYmKHVbYWcoMHgxY2QpXSgpLHRoaXNbYWcoMHgxZmUpXSgnZGlzbWlzcycpLHRoaXNbJ2Nsb3NlJ10oKSk7fWZ1bmN0aW9uIHEodSl7dmFyIGFoPVMsdj1kWydoYXNoQ29sb3JzJ10oSlNPTlthaCgweDFmMCldKHUpKSx3PWFoKDB4MjBkKSt2LHg9ZFsnaXNQbGFpbk9iaiddKHUpO3JldHVybiB0aGlzW2FoKDB4MWQyKV09eD93Om51bGwseCYmcih2LHUsJy4nK3cpLHg7fWZ1bmN0aW9uIHIodSx2LHcpe3ZhciBhaT1TO2lmKGNbYWkoMHgxZDIpXVt1XSl7KytjW2FpKDB4MWQyKV1bdV1bYWkoMHgyNGEpXTtyZXR1cm47fXZhciB4PXt9LHk9dlthaSgweDIxYSldLHo9dlsnYnV0dG9uJ107eSYmKHhbdysnLndwY2MtY29udGFpbmVyJ109W2FpKDB4MWQzKSt5WydiYWNrZ3JvdW5kJ10sYWkoMHgxYjApK3lbYWkoMHgyMGYpXSxhaSgweDI0YikreVsndGV4dCddXSx4W3crYWkoMHgyNGQpK3crYWkoMHgxZDkpK3crJ1x4MjAud3BjYy1wcml2YWN5OnZpc2l0ZWQnXT1bJ2NvbG9yOlx4MjAnK3lbYWkoMHgxZjQpXV0seiYmKHhbdythaSgweDFmOSldPVthaSgweDI0YikrelthaSgweDFmNCldLCdiYWNrZ3JvdW5kLWNvbG9yOlx4MjAnK3pbYWkoMHgyMTgpXV0seFt3KydceDIwLndwY2MtYnRuOmZvY3VzLFx4MjAnK3crYWkoMHgxY2EpXT1bJ2JhY2tncm91bmQtY29sb3I6XHgyMCcrcyh6W2FpKDB4MjE4KV0pXSkpO3ZhciBBPWRvY3VtZW50W2FpKDB4MWI0KV0oYWkoMHgxZmIpKTtkb2N1bWVudFsnaGVhZCddW2FpKDB4MWI3KV0oQSksY1snY3VzdG9tQ1NTJ11bdV09eydyZWZlcmVuY2VzJzoweDEsJ2VsZW1lbnQnOkFbYWkoMHgyMDQpXX07dmFyIEI9LTB4MTtmb3IodmFyIEMgaW4geCl7eFsnaGFzT3duUHJvcGVydHknXShDKSYmQVthaSgweDIwNCldW2FpKDB4MWQ1KV0oQysneycreFtDXVthaSgweDIxOSldKCc7JykrJ30nLCsrQik7fX1mdW5jdGlvbiBzKHUpe3ZhciBhaj1TO3U9ZFthaigweDFmNyldKHUpO2lmKHU9PWFqKDB4MWJkKSlyZXR1cm4gYWooMHgyMGEpO3JldHVybiBkW2FqKDB4MWRhKV0odSk7fWZ1bmN0aW9uIHQodSl7dmFyIGFrPVM7aWYoZFthaygweDFmNSldKHUpKXt2YXIgdj1kWydoYXNoQ29sb3JzJ10oSlNPTlthaygweDFmMCldKHUpKSx3PWNbYWsoMHgxZDIpXVt2XTtpZih3JiYhLS13W2FrKDB4MjRhKV0pe3ZhciB4PXdbYWsoMHgxYWUpXVthaygweDIyOSldO3gmJnhbJ3BhcmVudE5vZGUnXSYmeFthaygweDIyNyldWydyZW1vdmVDaGlsZCddKHgpLGNbYWsoMHgxZDIpXVt2XT1udWxsO319fXJldHVybiBnO30oKSksY1tFKDB4MWZjKV09ZnVuY3Rpb24oZixnLGgpe2lmKCFnKWc9ZnVuY3Rpb24oKXt9O2lmKCFoKWg9ZnVuY3Rpb24oKXt9O2cobmV3IGNbJ1BvcHVwJ10oZikpO307dmFyIGU9ZG9jdW1lbnRbRSgweDFiNCldKCdsaW5rJyk7ZVtFKDB4MWRiKV09RSgweDIyNSksZVsncmVsJ109RSgweDIxMiksZVsnaHJlZiddPUUoMHgxYjMpLGRvY3VtZW50W0UoMHgyMjQpXVsnYXBwZW5kQ2hpbGQnXShlKSxjWydpc0luaXQnXT0hIVtdLHdpbmRvd1tFKDB4MWFmKV09Yzt9KHdpbmRvd1thbCgweDFhZildfHx7fSkpOw=="}},"time_used":81,"timings":{"blocked":-1,"dns":63,"connect":10,"send":0,"wait":2,"receive":-1,"ssl":6},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.tradingview-widget.com/embed-widget/ticker-tape/?locale=en#%7B%22symbols%22%3A%5B%7B%22proName%22%3A%22FOREXCOM%3ASPXUSD%22%2C%22title%22%3A%22S%26P%20500%22%7D%2C%7B%22proName%22%3A%22FOREXCOM%3ANSXUSD%22%2C%22title%22%3A%22US%20100%22%7D%2C%7B%22proName%22%3A%22FX_IDC%3AEURUSD%22%2C%22title%22%3A%22EUR%2FUSD%22%7D%2C%7B%22proName%22%3A%22BITSTAMP%3ABTCUSD%22%2C%22title%22%3A%22Bitcoin%22%7D%2C%7B%22proName%22%3A%22BITSTAMP%3AETHUSD%22%2C%22title%22%3A%22Ethereum%22%7D%5D%2C%22showSymbolLogo%22%3Atrue%2C%22colorTheme%22%3A%22light%22%2C%22isTransparent%22%3Atrue%2C%22displayMode%22%3A%22compact%22%2C%22width%22%3A%22100%25%22%2C%22height%22%3A72%2C%22utm_source%22%3A%22betaroi.ltd%22%2C%22utm_medium%22%3A%22widget%22%2C%22utm_campaign%22%3A%22ticker-tape%22%2C%22page-uri%22%3A%22betaroi.ltd%2F%22%7D","fqdn":"www.tradingview-widget.com","domain":"tradingview-widget.com","tld":"com"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"subdocument","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:46.049Z","timestamp":1785145486049,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /embed-widget/ticker-tape/?locale=en HTTP/1.1\r\nHost: www.tradingview-widget.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://betaroi.ltd/\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: iframe\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cwlagos.com/wp-includes/js/wp-emoji-release.min.js?ver=5.9.3","fqdn":"cwlagos.com","domain":"cwlagos.com","tld":"com"},"ip":{"addr":"31.43.160.6","port":443,"asn":16509,"as":"AMAZON-02","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.349Z","timestamp":1785145482349,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wp-includes/js/wp-emoji-release.min.js?ver=5.9.3 HTTP/1.1\r\nHost: cwlagos.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://betaroi.ltd/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 404 \r\nalt-svc: h3=\":443\"; ma=2592000\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-type: text/html; charset=utf-8\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\nserver: Framer/5d364ee\r\nstrict-transport-security: max-age=31536000\r\nx-content-type-options: nosniff\r\ncontent-length: 10\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Framer Sites","description":"Framer is a no-code web design platform for designing and publishing responsive websites.","website":"https://www.framer.com","common_platform_enumeration":"","icon":"Framer Sites.svg","categories":["CMS","Page builders"]},{"name":"React","description":"React is an open-source JavaScript library for building user interfaces or UI components.","website":"https://reactjs.org","common_platform_enumeration":"cpe:2.3:a:facebook:react:*:*:*:*:*:*:*:*","icon":"React.svg","categories":["JavaScript frameworks"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/leaflet.js?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.471Z","timestamp":1785145482471,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/leaflet/leaflet.js?ver=1.5.1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 222245\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":222245,"size_decoded":222463,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (434)","md5":"cbf71ca7e362576331c3e06924bef1d5","sha1":"1456e979b9b4220efb06ccd65de238f9e0dd5796","sha256":"855584a095a4394c1cfcd22245008edc4e551c51ab6a70456a20c4670db8656e","sha512":"a7842e8f80240dfc001752eaf3ffb496237b490097d031aee5f601017720489be36e42d1e05a38634a8add1ee84ed7a0318fbe5a4feb3a0f50f83a3479819feb","ssdeep":"6144:EzWBpMFtWND5UWD8QxvzQxOVBdFBNHTFOMVrDHUeKYztGiO:TpmtWND5UWD8QxvzQx8BBNzFOMVrDHUv","tlshash":"f624f00ab7e529369243b1395d3f850ab335908b294aad1c3d1c92ec5f1d43c96b6ff8","first_seen":"2026-07-27T08:06:56.533001Z","last_seen":"2026-07-27T09:45:50.930695Z","times_seen":3,"resource_available":true,"data":"LyogQHByZXNlcnZlCiAqIExlYWZsZXQgMS41LjErRGV0YWNoZWQ6IDJlM2UwZmZiZTg3ZjI0NmViNzZkODZkMjYzM2RkZDU5YjI2MjgzMGIuMmUzZTBmZiwgYSBKUyBsaWJyYXJ5IGZvciBpbnRlcmFjdGl2ZSBtYXBzLiBodHRwOi8vbGVhZmxldGpzLmNvbQogKiAoYykgMjAxMC0yMDE4IFZsYWRpbWlyIEFnYWZvbmtpbiwgKGMpIDIwMTAtMjAxMSBDbG91ZE1hZGUKICovCiEgZnVuY3Rpb24odCwgaSkgewogICAgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IGkoZXhwb3J0cykgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImV4cG9ydHMiXSwgaSkgOiBpKHQuTCA9IHt9KQp9KHRoaXMsIGZ1bmN0aW9uKHQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBpID0gT2JqZWN0LmZyZWV6ZTsKCiAgICBmdW5jdGlvbiBoKHQpIHsKICAgICAgICB2YXIgaSwgZSwgbiwgbzsKICAgICAgICBmb3IgKGUgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgZSA8IG47IGUrKykKICAgICAgICAgICAgZm9yIChpIGluIG8gPSBhcmd1bWVudHNbZV0pIHRbaV0gPSBvW2ldOwogICAgICAgIHJldHVybiB0CiAgICB9CiAgICBPYmplY3QuZnJlZXplID0gZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiB0CiAgICB9OwogICAgdmFyIHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gZS5wcm90b3R5cGUgPSB0LCBuZXcgZQogICAgfTsKCiAgICBmdW5jdGlvbiBlKCkge30KCiAgICBmdW5jdGlvbiBhKHQsIGkpIHsKICAgICAgICB2YXIgZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTsKICAgICAgICBpZiAodC5iaW5kKSByZXR1cm4gdC5iaW5kLmFwcGx5KHQsIGUuY2FsbChhcmd1bWVudHMsIDEpKTsKICAgICAgICB2YXIgbiA9IGUuY2FsbChhcmd1bWVudHMsIDIpOwogICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHQuYXBwbHkoaSwgbi5sZW5ndGggPyBuLmNvbmNhdChlLmNhbGwoYXJndW1lbnRzKSkgOiBhcmd1bWVudHMpCiAgICAgICAgfQogICAgfQogICAgdmFyIG4gPSAwOwoKICAgIGZ1bmN0aW9uIHUodCkgewogICAgICAgIHJldHVybiB0Ll9sZWFmbGV0X2lkID0gdC5fbGVhZmxldF9pZCB8fCArK24sIHQuX2xlYWZsZXRfaWQKICAgIH0KCiAgICBmdW5jdGlvbiBvKHQsIGksIGUpIHsKICAgICAgICB2YXIgbiwgbywgcywgcjsKICAgICAgICByZXR1cm4gciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBuID0gITEsIG8gJiYgKHMuYXBwbHkoZSwgbyksIG8gPSAhMSkKICAgICAgICB9LCBzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG4gPyBvID0gYXJndW1lbnRzIDogKHQuYXBwbHkoZSwgYXJndW1lbnRzKSwgc2V0VGltZW91dChyLCBpKSwgbiA9ICEwKQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiByKHQsIGksIGUpIHsKICAgICAgICB2YXIgbiA9IGlbMV0sCiAgICAgICAgICAgIG8gPSBpWzBdLAogICAgICAgICAgICBzID0gbiAtIG87CiAgICAgICAgcmV0dXJuIHQgPT09IG4gJiYgZSA/IHQgOiAoKHQgLSBvKSAlIHMgKyBzKSAlIHMgKyBvCiAgICB9CgogICAgZnVuY3Rpb24gbCgpIHsKICAgICAgICByZXR1cm4gITEKICAgIH0KCiAgICBmdW5jdGlvbiBjKHQsIGkpIHsKICAgICAgICByZXR1cm4gaSA9IHZvaWQgMCA9PT0gaSA/IDYgOiBpLCArKE1hdGgucm91bmQodCArICJlKyIgKyBpKSArICJlLSIgKyBpKQogICAgfQoKICAgIGZ1bmN0aW9uIF8odCkgewogICAgICAgIHJldHVybiB0LnRyaW0gPyB0LnRyaW0oKSA6IHQucmVwbGFjZSgvXlxzK3xccyskL2csICIiKQogICAgfQoKICAgIGZ1bmN0aW9uIGQodCkgewogICAgICAgIHJldHVybiBfKHQpLnNwbGl0KC9ccysvKQogICAgfQoKICAgIGZ1bmN0aW9uIHAodCwgaSkgewogICAgICAgIGZvciAodmFyIGUgaW4gdC5oYXNPd25Qcm9wZXJ0eSgib3B0aW9ucyIpIHx8ICh0Lm9wdGlvbnMgPSB0Lm9wdGlvbnMgPyBzKHQub3B0aW9ucykgOiB7fSksIGkpIHQub3B0aW9uc1tlXSA9IGlbZV07CiAgICAgICAgcmV0dXJuIHQub3B0aW9ucwogICAgfQoKICAgIGZ1bmN0aW9uIG0odCwgaSwgZSkgewogICAgICAgIHZhciBuID0gW107CiAgICAgICAgZm9yICh2YXIgbyBpbiB0KSBuLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGUgPyBvLnRvVXBwZXJDYXNlKCkgOiBvKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudCh0W29dKSk7CiAgICAgICAgcmV0dXJuIChpICYmIC0xICE9PSBpLmluZGV4T2YoIj8iKSA/ICImIiA6ICI/IikgKyBuLmpvaW4oIiYiKQogICAgfQogICAgdmFyIGYgPSAvXHsgKihbXHdfLV0rKSAqXH0vZzsKCiAgICBmdW5jdGlvbiBnKHQsIG4pIHsKICAgICAgICByZXR1cm4gdC5yZXBsYWNlKGYsIGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgdmFyIGUgPSBuW2ldOwogICAgICAgICAgICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgRXJyb3IoIk5vIHZhbHVlIHByb3ZpZGVkIGZvciB2YXJpYWJsZSAiICsgdCk7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlICYmIChlID0gZShuKSksIGUKICAgICAgICB9KQogICAgfQogICAgdmFyIHYgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gIltvYmplY3QgQXJyYXldIiA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpCiAgICB9OwoKICAgIGZ1bmN0aW9uIHkodCwgaSkgewogICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgdC5sZW5ndGg7IGUrKykKICAgICAgICAgICAgaWYgKHRbZV0gPT09IGkpIHJldHVybiBlOwogICAgICAgIHJldHVybiAtMQogICAgfQogICAgdmFyIHggPSAiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBRC9BQ3dBQUFBQUFRQUJBQUFDQURzPSI7CgogICAgZnVuY3Rpb24gdyh0KSB7CiAgICAgICAgcmV0dXJuIHdpbmRvd1sid2Via2l0IiArIHRdIHx8IHdpbmRvd1sibW96IiArIHRdIHx8IHdpbmRvd1sibXMiICsgdF0KICAgIH0KICAgIHZhciBQID0gMDsKCiAgICBmdW5jdGlvbiBiKHQpIHsKICAgICAgICB2YXIgaSA9ICtuZXcgRGF0ZSwKICAgICAgICAgICAgZSA9IE1hdGgubWF4KDAsIDE2IC0gKGkgLSBQKSk7CiAgICAgICAgcmV0dXJuIFAgPSBpICsgZSwgd2luZG93LnNldFRpbWVvdXQodCwgZSkKICAgIH0KICAgIHZhciBUID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3KCJSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKSB8fCBiLAogICAgICAgIHogPSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwgdygiQ2FuY2VsQW5pbWF0aW9uRnJhbWUiKSB8fCB3KCJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodCkKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIE0odCwgaSwgZSkgewogICAgICAgIGlmICghZSB8fCBUICE9PSBiKSByZXR1cm4gVC5jYWxsKHdpbmRvdywgYSh0LCBpKSk7CiAgICAgICAgdC5jYWxsKGkpCiAgICB9CgogICAgZnVuY3Rpb24gQyh0KSB7CiAgICAgICAgdCAmJiB6LmNhbGwod2luZG93LCB0KQogICAgfQogICAgdmFyIFMgPSAoT2JqZWN0LmZyZWV6ZSB8fCBPYmplY3QpKHsKICAgICAgICBmcmVlemU6IGksCiAgICAgICAgZXh0ZW5kOiBoLAogICAgICAgIGNyZWF0ZTogcywKICAgICAgICBiaW5kOiBhLAogICAgICAgIGxhc3RJZDogbiwKICAgICAgICBzdGFtcDogdSwKICAgICAgICB0aHJvdHRsZTogbywKICAgICAgICB3cmFwTnVtOiByLAogICAgICAgIGZhbHNlRm46IGwsCiAgICAgICAgZm9ybWF0TnVtOiBjLAogICAgICAgIHRyaW06IF8sCiAgICAgICAgc3BsaXRXb3JkczogZCwKICAgICAgICBzZXRPcHRpb25zOiBwLAogICAgICAgIGdldFBhcmFtU3RyaW5nOiBtLAogICAgICAgIHRlbXBsYXRlOiBnLAogICAgICAgIGlzQXJyYXk6IHYsCiAgICAgICAgaW5kZXhPZjogeSwKICAgICAgICBlbXB0eUltYWdlVXJsOiB4LAogICAgICAgIHJlcXVlc3RGbjogVCwKICAgICAgICBjYW5jZWxGbjogeiwKICAgICAgICByZXF1ZXN0QW5pbUZyYW1lOiBNLAogICAgICAgIGNhbmNlbEFuaW1GcmFtZTogQwogICAgfSk7CgogICAgZnVuY3Rpb24gWigpIHt9CiAgICBaLmV4dGVuZCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICBmdW5jdGlvbiBpKCkgewogICAgICAgICAgICB0aGlzLmluaXRpYWxpemUgJiYgdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRoaXMuY2FsbEluaXRIb29rcygpCiAgICAgICAgfQogICAgICAgIHZhciBlID0gaS5fX3N1cGVyX18gPSB0aGlzLnByb3RvdHlwZSwKICAgICAgICAgICAgbiA9IHMoZSk7CiAgICAgICAgZm9yICh2YXIgbyBpbiAobi5jb25zdHJ1Y3RvciA9IGkpLnByb3RvdHlwZSA9IG4sIHRoaXMpIHRoaXMuaGFzT3duUHJvcGVydHkobykgJiYgInByb3RvdHlwZSIgIT09IG8gJiYgIl9fc3VwZXJfXyIgIT09IG8gJiYgKGlbb10gPSB0aGlzW29dKTsKICAgICAgICByZXR1cm4gdC5zdGF0aWNzICYmIChoKGksIHQuc3RhdGljcyksIGRlbGV0ZSB0LnN0YXRpY3MpLCB0LmluY2x1ZGVzICYmIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgidW5kZWZpbmVkIiA9PSB0eXBlb2YgTCB8fCAhTCB8fCAhTC5NaXhpbikgcmV0dXJuOwogICAgICAgICAgICB0ID0gdih0KSA/IHQgOiBbdF07CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykgdFtpXSA9PT0gTC5NaXhpbi5FdmVudHMgJiYgY29uc29sZS53YXJuKCJEZXByZWNhdGVkIGluY2x1ZGUgb2YgTC5NaXhpbi5FdmVudHM6IHRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSByZWxlYXNlcywgcGxlYXNlIGluaGVyaXQgZnJvbSBMLkV2ZW50ZWQgaW5zdGVhZC4iLCAobmV3IEVycm9yKS5zdGFjaykKICAgICAgICB9KHQuaW5jbHVkZXMpLCBoLmFwcGx5KG51bGwsIFtuXS5jb25jYXQodC5pbmNsdWRlcykpLCBkZWxldGUgdC5pbmNsdWRlcyksIG4ub3B0aW9ucyAmJiAodC5vcHRpb25zID0gaChzKG4ub3B0aW9ucyksIHQub3B0aW9ucykpLCBoKG4sIHQpLCBuLl9pbml0SG9va3MgPSBbXSwgbi5jYWxsSW5pdEhvb2tzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5faW5pdEhvb2tzQ2FsbGVkKSB7CiAgICAgICAgICAgICAgICBlLmNhbGxJbml0SG9va3MgJiYgZS5jYWxsSW5pdEhvb2tzLmNhbGwodGhpcyksIHRoaXMuX2luaXRIb29rc0NhbGxlZCA9ICEwOwogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIGkgPSBuLl9pbml0SG9va3MubGVuZ3RoOyB0IDwgaTsgdCsrKSBuLl9pbml0SG9va3NbdF0uY2FsbCh0aGlzKQogICAgICAgICAgICB9CiAgICAgICAgfSwgaQogICAgfSwgWi5pbmNsdWRlID0gZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiBoKHRoaXMucHJvdG90eXBlLCB0KSwgdGhpcwogICAgfSwgWi5tZXJnZU9wdGlvbnMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIGgodGhpcy5wcm90b3R5cGUub3B0aW9ucywgdCksIHRoaXMKICAgIH0sIFouYWRkSW5pdEhvb2sgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLAogICAgICAgICAgICBlID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdCA/IHQgOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXNbdF0uYXBwbHkodGhpcywgaSkKICAgICAgICAgICAgfTsKICAgICAgICByZXR1cm4gdGhpcy5wcm90b3R5cGUuX2luaXRIb29rcyA9IHRoaXMucHJvdG90eXBlLl9pbml0SG9va3MgfHwgW10sIHRoaXMucHJvdG90eXBlLl9pbml0SG9va3MucHVzaChlKSwgdGhpcwogICAgfTsKICAgIHZhciBFID0gewogICAgICAgIG9uOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCkKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdGhpcy5fb24obiwgdFtuXSwgaSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAwLCBzID0gKHQgPSBkKHQpKS5sZW5ndGg7IG8gPCBzOyBvKyspIHRoaXMuX29uKHRbb10sIGksIGUpOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgb2ZmOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiB0KQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdGhpcy5fb2ZmKG4sIHRbbl0sIGkpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAwLCBzID0gKHQgPSBkKHQpKS5sZW5ndGg7IG8gPCBzOyBvKyspIHRoaXMuX29mZih0W29dLCBpLCBlKTsKICAgICAgICAgICAgZWxzZSBkZWxldGUgdGhpcy5fZXZlbnRzOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgX29uOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cyB8fCB7fTsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9ldmVudHNbdF07CiAgICAgICAgICAgIG4gfHwgKG4gPSBbXSwgdGhpcy5fZXZlbnRzW3RdID0gbiksIGUgPT09IHRoaXMgJiYgKGUgPSB2b2lkIDApOwogICAgICAgICAgICBmb3IgKHZhciBvID0gewogICAgICAgICAgICAgICAgICAgIGZuOiBpLAogICAgICAgICAgICAgICAgICAgIGN0eDogZQogICAgICAgICAgICAgICAgfSwgcyA9IG4sIHIgPSAwLCBhID0gcy5sZW5ndGg7IHIgPCBhOyByKyspCiAgICAgICAgICAgICAgICBpZiAoc1tyXS5mbiA9PT0gaSAmJiBzW3JdLmN0eCA9PT0gZSkgcmV0dXJuOwogICAgICAgICAgICBzLnB1c2gobykKICAgICAgICB9LAogICAgICAgIF9vZmY6IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICAgICAgdmFyIG4sIG8sIHM7CiAgICAgICAgICAgIGlmICh0aGlzLl9ldmVudHMgJiYgKG4gPSB0aGlzLl9ldmVudHNbdF0pKQogICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZSA9PT0gdGhpcyAmJiAoZSA9IHZvaWQgMCksIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDAsIHMgPSBuLmxlbmd0aDsgbyA8IHM7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuY3R4ID09PSBlICYmIHIuZm4gPT09IGkpIHJldHVybiByLmZuID0gbCwgdGhpcy5fZmlyaW5nQ291bnQgJiYgKHRoaXMuX2V2ZW50c1t0XSA9IG4gPSBuLnNsaWNlKCkpLCB2b2lkIG4uc3BsaWNlKG8sIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gMCwgcyA9IG4ubGVuZ3RoOyBvIDwgczsgbysrKSBuW29dLmZuID0gbDsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3RdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBmaXJlOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5saXN0ZW5zKHQsIGUpKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgdmFyIG4gPSBoKHt9LCBpLCB7CiAgICAgICAgICAgICAgICB0eXBlOiB0LAogICAgICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLAogICAgICAgICAgICAgICAgc291cmNlVGFyZ2V0OiBpICYmIGkuc291cmNlVGFyZ2V0IHx8IHRoaXMKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICh0aGlzLl9ldmVudHMpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5fZXZlbnRzW3RdOwogICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9maXJpbmdDb3VudCA9IHRoaXMuX2ZpcmluZ0NvdW50ICsgMSB8fCAxOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAwLCByID0gby5sZW5ndGg7IHMgPCByOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvW3NdOwogICAgICAgICAgICAgICAgICAgICAgICBhLmZuLmNhbGwoYS5jdHggfHwgdGhpcywgbikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlyaW5nQ291bnQtLQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlICYmIHRoaXMuX3Byb3BhZ2F0ZUV2ZW50KG4pLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBsaXN0ZW5zOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZXZlbnRzICYmIHRoaXMuX2V2ZW50c1t0XTsKICAgICAgICAgICAgaWYgKGUgJiYgZS5sZW5ndGgpIHJldHVybiAhMDsKICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHRoaXMuX2V2ZW50UGFyZW50cykKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZXZlbnRQYXJlbnRzW25dLmxpc3RlbnModCwgaSkpIHJldHVybiAhMDsKICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfSwKICAgICAgICBvbmNlOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0KSB0aGlzLm9uY2UobiwgdFtuXSwgaSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBvID0gYShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMub2ZmKHQsIGksIGUpLm9mZih0LCBvLCBlKQogICAgICAgICAgICB9LCB0aGlzKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub24odCwgaSwgZSkub24odCwgbywgZSkKICAgICAgICB9LAogICAgICAgIGFkZEV2ZW50UGFyZW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmVudFBhcmVudHMgPSB0aGlzLl9ldmVudFBhcmVudHMgfHwge30sIHRoaXMuX2V2ZW50UGFyZW50c1t1KHQpXSA9IHQsIHRoaXMKICAgICAgICB9LAogICAgICAgIHJlbW92ZUV2ZW50UGFyZW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmVudFBhcmVudHMgJiYgZGVsZXRlIHRoaXMuX2V2ZW50UGFyZW50c1t1KHQpXSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgX3Byb3BhZ2F0ZUV2ZW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5fZXZlbnRQYXJlbnRzKSB0aGlzLl9ldmVudFBhcmVudHNbaV0uZmlyZSh0LnR5cGUsIGgoewogICAgICAgICAgICAgICAgbGF5ZXI6IHQudGFyZ2V0LAogICAgICAgICAgICAgICAgcHJvcGFnYXRlZEZyb206IHQudGFyZ2V0CiAgICAgICAgICAgIH0sIHQpLCAhMCkKICAgICAgICB9CiAgICB9OwogICAgRS5hZGRFdmVudExpc3RlbmVyID0gRS5vbiwgRS5yZW1vdmVFdmVudExpc3RlbmVyID0gRS5jbGVhckFsbEV2ZW50TGlzdGVuZXJzID0gRS5vZmYsIEUuYWRkT25lVGltZUV2ZW50TGlzdGVuZXIgPSBFLm9uY2UsIEUuZmlyZUV2ZW50ID0gRS5maXJlLCBFLmhhc0V2ZW50TGlzdGVuZXJzID0gRS5saXN0ZW5zOwogICAgdmFyIGsgPSBaLmV4dGVuZChFKTsKCiAgICBmdW5jdGlvbiBCKHQsIGksIGUpIHsKICAgICAgICB0aGlzLnggPSBlID8gTWF0aC5yb3VuZCh0KSA6IHQsIHRoaXMueSA9IGUgPyBNYXRoLnJvdW5kKGkpIDogaQogICAgfQogICAgdmFyIEEgPSBNYXRoLnRydW5jIHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gMCA8IHQgPyBNYXRoLmZsb29yKHQpIDogTWF0aC5jZWlsKHQpCiAgICB9OwoKICAgIGZ1bmN0aW9uIEkodCwgaSwgZSkgewogICAgICAgIHJldHVybiB0IGluc3RhbmNlb2YgQiA/IHQgOiB2KHQpID8gbmV3IEIodFswXSwgdFsxXSkgOiBudWxsID09IHQgPyB0IDogIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgIngiIGluIHQgJiYgInkiIGluIHQgPyBuZXcgQih0LngsIHQueSkgOiBuZXcgQih0LCBpLCBlKQogICAgfQoKICAgIGZ1bmN0aW9uIE8odCwgaSkgewogICAgICAgIGlmICh0KQogICAgICAgICAgICBmb3IgKHZhciBlID0gaSA/IFt0LCBpXSA6IHQsIG4gPSAwLCBvID0gZS5sZW5ndGg7IG4gPCBvOyBuKyspIHRoaXMuZXh0ZW5kKGVbbl0pCiAgICB9CgogICAgZnVuY3Rpb24gUih0LCBpKSB7CiAgICAgICAgcmV0dXJuICF0IHx8IHQgaW5zdGFuY2VvZiBPID8gdCA6IG5ldyBPKHQsIGkpCiAgICB9CgogICAgZnVuY3Rpb24gTih0LCBpKSB7CiAgICAgICAgaWYgKHQpCiAgICAgICAgICAgIGZvciAodmFyIGUgPSBpID8gW3QsIGldIDogdCwgbiA9IDAsIG8gPSBlLmxlbmd0aDsgbiA8IG87IG4rKykgdGhpcy5leHRlbmQoZVtuXSkKICAgIH0KCiAgICBmdW5jdGlvbiBEKHQsIGkpIHsKICAgICAgICByZXR1cm4gdCBpbnN0YW5jZW9mIE4gPyB0IDogbmV3IE4odCwgaSkKICAgIH0KCiAgICBmdW5jdGlvbiBqKHQsIGksIGUpIHsKICAgICAgICBpZiAoaXNOYU4odCkgfHwgaXNOYU4oaSkpIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBMYXRMbmcgb2JqZWN0OiAoIiArIHQgKyAiLCAiICsgaSArICIpIik7CiAgICAgICAgdGhpcy5sYXQgPSArdCwgdGhpcy5sbmcgPSAraSwgdm9pZCAwICE9PSBlICYmICh0aGlzLmFsdCA9ICtlKQogICAgfQoKICAgIGZ1bmN0aW9uIFcodCwgaSwgZSkgewogICAgICAgIHJldHVybiB0IGluc3RhbmNlb2YgaiA/IHQgOiB2KHQpICYmICJvYmplY3QiICE9IHR5cGVvZiB0WzBdID8gMyA9PT0gdC5sZW5ndGggPyBuZXcgaih0WzBdLCB0WzFdLCB0WzJdKSA6IDIgPT09IHQubGVuZ3RoID8gbmV3IGoodFswXSwgdFsxXSkgOiBudWxsIDogbnVsbCA9PSB0ID8gdCA6ICJvYmplY3QiID09IHR5cGVvZiB0ICYmICJsYXQiIGluIHQgPyBuZXcgaih0LmxhdCwgImxuZyIgaW4gdCA/IHQubG5nIDogdC5sb24sIHQuYWx0KSA6IHZvaWQgMCA9PT0gaSA/IG51bGwgOiBuZXcgaih0LCBpLCBlKQogICAgfQogICAgQi5wcm90b3R5cGUgPSB7CiAgICAgICAgY2xvbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gbmV3IEIodGhpcy54LCB0aGlzLnkpCiAgICAgICAgfSwKICAgICAgICBhZGQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5fYWRkKEkodCkpCiAgICAgICAgfSwKICAgICAgICBfYWRkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnggKz0gdC54LCB0aGlzLnkgKz0gdC55LCB0aGlzCiAgICAgICAgfSwKICAgICAgICBzdWJ0cmFjdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLl9zdWJ0cmFjdChJKHQpKQogICAgICAgIH0sCiAgICAgICAgX3N1YnRyYWN0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnggLT0gdC54LCB0aGlzLnkgLT0gdC55LCB0aGlzCiAgICAgICAgfSwKICAgICAgICBkaXZpZGVCeTogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLl9kaXZpZGVCeSh0KQogICAgICAgIH0sCiAgICAgICAgX2RpdmlkZUJ5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnggLz0gdCwgdGhpcy55IC89IHQsIHRoaXMKICAgICAgICB9LAogICAgICAgIG11bHRpcGx5Qnk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5fbXVsdGlwbHlCeSh0KQogICAgICAgIH0sCiAgICAgICAgX211bHRpcGx5Qnk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMueCAqPSB0LCB0aGlzLnkgKj0gdCwgdGhpcwogICAgICAgIH0sCiAgICAgICAgc2NhbGVCeTogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbmV3IEIodGhpcy54ICogdC54LCB0aGlzLnkgKiB0LnkpCiAgICAgICAgfSwKICAgICAgICB1bnNjYWxlQnk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBCKHRoaXMueCAvIHQueCwgdGhpcy55IC8gdC55KQogICAgICAgIH0sCiAgICAgICAgcm91bmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLl9yb3VuZCgpCiAgICAgICAgfSwKICAgICAgICBfcm91bmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy54ID0gTWF0aC5yb3VuZCh0aGlzLngpLCB0aGlzLnkgPSBNYXRoLnJvdW5kKHRoaXMueSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGZsb29yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5fZmxvb3IoKQogICAgICAgIH0sCiAgICAgICAgX2Zsb29yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMueCA9IE1hdGguZmxvb3IodGhpcy54KSwgdGhpcy55ID0gTWF0aC5mbG9vcih0aGlzLnkpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBjZWlsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5fY2VpbCgpCiAgICAgICAgfSwKICAgICAgICBfY2VpbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnggPSBNYXRoLmNlaWwodGhpcy54KSwgdGhpcy55ID0gTWF0aC5jZWlsKHRoaXMueSksIHRoaXMKICAgICAgICB9LAogICAgICAgIHRydW5jOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5fdHJ1bmMoKQogICAgICAgIH0sCiAgICAgICAgX3RydW5jOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMueCA9IEEodGhpcy54KSwgdGhpcy55ID0gQSh0aGlzLnkpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBkaXN0YW5jZVRvOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gKHQgPSBJKHQpKS54IC0gdGhpcy54LAogICAgICAgICAgICAgICAgZSA9IHQueSAtIHRoaXMueTsKICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChpICogaSArIGUgKiBlKQogICAgICAgIH0sCiAgICAgICAgZXF1YWxzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAodCA9IEkodCkpLnggPT09IHRoaXMueCAmJiB0LnkgPT09IHRoaXMueQogICAgICAgIH0sCiAgICAgICAgY29udGFpbnM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQgPSBJKHQpLCBNYXRoLmFicyh0LngpIDw9IE1hdGguYWJzKHRoaXMueCkgJiYgTWF0aC5hYnModC55KSA8PSBNYXRoLmFicyh0aGlzLnkpCiAgICAgICAgfSwKICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAiUG9pbnQoIiArIGModGhpcy54KSArICIsICIgKyBjKHRoaXMueSkgKyAiKSIKICAgICAgICB9CiAgICB9LCBPLnByb3RvdHlwZSA9IHsKICAgICAgICBleHRlbmQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQgPSBJKHQpLCB0aGlzLm1pbiB8fCB0aGlzLm1heCA/ICh0aGlzLm1pbi54ID0gTWF0aC5taW4odC54LCB0aGlzLm1pbi54KSwgdGhpcy5tYXgueCA9IE1hdGgubWF4KHQueCwgdGhpcy5tYXgueCksIHRoaXMubWluLnkgPSBNYXRoLm1pbih0LnksIHRoaXMubWluLnkpLCB0aGlzLm1heC55ID0gTWF0aC5tYXgodC55LCB0aGlzLm1heC55KSkgOiAodGhpcy5taW4gPSB0LmNsb25lKCksIHRoaXMubWF4ID0gdC5jbG9uZSgpKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgZ2V0Q2VudGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQigodGhpcy5taW4ueCArIHRoaXMubWF4LngpIC8gMiwgKHRoaXMubWluLnkgKyB0aGlzLm1heC55KSAvIDIsIHQpCiAgICAgICAgfSwKICAgICAgICBnZXRCb3R0b21MZWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBCKHRoaXMubWluLngsIHRoaXMubWF4LnkpCiAgICAgICAgfSwKICAgICAgICBnZXRUb3BSaWdodDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQih0aGlzLm1heC54LCB0aGlzLm1pbi55KQogICAgICAgIH0sCiAgICAgICAgZ2V0VG9wTGVmdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm1pbgogICAgICAgIH0sCiAgICAgICAgZ2V0Qm90dG9tUmlnaHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXgKICAgICAgICB9LAogICAgICAgIGdldFNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXguc3VidHJhY3QodGhpcy5taW4pCiAgICAgICAgfSwKICAgICAgICBjb250YWluczogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSwgZTsKICAgICAgICAgICAgcmV0dXJuICh0ID0gIm51bWJlciIgPT0gdHlwZW9mIHRbMF0gfHwgdCBpbnN0YW5jZW9mIEIgPyBJKHQpIDogUih0KSkgaW5zdGFuY2VvZiBPID8gKGkgPSB0Lm1pbiwgZSA9IHQubWF4KSA6IGkgPSBlID0gdCwgaS54ID49IHRoaXMubWluLnggJiYgZS54IDw9IHRoaXMubWF4LnggJiYgaS55ID49IHRoaXMubWluLnkgJiYgZS55IDw9IHRoaXMubWF4LnkKICAgICAgICB9LAogICAgICAgIGludGVyc2VjdHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdCA9IFIodCk7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5taW4sCiAgICAgICAgICAgICAgICBlID0gdGhpcy5tYXgsCiAgICAgICAgICAgICAgICBuID0gdC5taW4sCiAgICAgICAgICAgICAgICBvID0gdC5tYXgsCiAgICAgICAgICAgICAgICBzID0gby54ID49IGkueCAmJiBuLnggPD0gZS54LAogICAgICAgICAgICAgICAgciA9IG8ueSA+PSBpLnkgJiYgbi55IDw9IGUueTsKICAgICAgICAgICAgcmV0dXJuIHMgJiYgcgogICAgICAgIH0sCiAgICAgICAgb3ZlcmxhcHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdCA9IFIodCk7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5taW4sCiAgICAgICAgICAgICAgICBlID0gdGhpcy5tYXgsCiAgICAgICAgICAgICAgICBuID0gdC5taW4sCiAgICAgICAgICAgICAgICBvID0gdC5tYXgsCiAgICAgICAgICAgICAgICBzID0gby54ID4gaS54ICYmIG4ueCA8IGUueCwKICAgICAgICAgICAgICAgIHIgPSBvLnkgPiBpLnkgJiYgbi55IDwgZS55OwogICAgICAgICAgICByZXR1cm4gcyAmJiByCiAgICAgICAgfSwKICAgICAgICBpc1ZhbGlkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICEoIXRoaXMubWluIHx8ICF0aGlzLm1heCkKICAgICAgICB9CiAgICB9LCBOLnByb3RvdHlwZSA9IHsKICAgICAgICBleHRlbmQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGksIGUsIG4gPSB0aGlzLl9zb3V0aFdlc3QsCiAgICAgICAgICAgICAgICBvID0gdGhpcy5fbm9ydGhFYXN0OwogICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIGopIGUgPSBpID0gdDsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoISh0IGluc3RhbmNlb2YgTikpIHJldHVybiB0ID8gdGhpcy5leHRlbmQoVyh0KSB8fCBEKHQpKSA6IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAoaSA9IHQuX3NvdXRoV2VzdCwgZSA9IHQuX25vcnRoRWFzdCwgIWkgfHwgIWUpIHJldHVybiB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG4gfHwgbyA/IChuLmxhdCA9IE1hdGgubWluKGkubGF0LCBuLmxhdCksIG4ubG5nID0gTWF0aC5taW4oaS5sbmcsIG4ubG5nKSwgby5sYXQgPSBNYXRoLm1heChlLmxhdCwgby5sYXQpLCBvLmxuZyA9IE1hdGgubWF4KGUubG5nLCBvLmxuZykpIDogKHRoaXMuX3NvdXRoV2VzdCA9IG5ldyBqKGkubGF0LCBpLmxuZyksIHRoaXMuX25vcnRoRWFzdCA9IG5ldyBqKGUubGF0LCBlLmxuZykpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBwYWQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9zb3V0aFdlc3QsCiAgICAgICAgICAgICAgICBlID0gdGhpcy5fbm9ydGhFYXN0LAogICAgICAgICAgICAgICAgbiA9IE1hdGguYWJzKGkubGF0IC0gZS5sYXQpICogdCwKICAgICAgICAgICAgICAgIG8gPSBNYXRoLmFicyhpLmxuZyAtIGUubG5nKSAqIHQ7CiAgICAgICAgICAgIHJldHVybiBuZXcgTihuZXcgaihpLmxhdCAtIG4sIGkubG5nIC0gbyksIG5ldyBqKGUubGF0ICsgbiwgZS5sbmcgKyBvKSkKICAgICAgICB9LAogICAgICAgIGdldENlbnRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgaigodGhpcy5fc291dGhXZXN0LmxhdCArIHRoaXMuX25vcnRoRWFzdC5sYXQpIC8gMiwgKHRoaXMuX3NvdXRoV2VzdC5sbmcgKyB0aGlzLl9ub3J0aEVhc3QubG5nKSAvIDIpCiAgICAgICAgfSwKICAgICAgICBnZXRTb3V0aFdlc3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fc291dGhXZXN0CiAgICAgICAgfSwKICAgICAgICBnZXROb3J0aEVhc3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9ydGhFYXN0CiAgICAgICAgfSwKICAgICAgICBnZXROb3J0aFdlc3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gbmV3IGoodGhpcy5nZXROb3J0aCgpLCB0aGlzLmdldFdlc3QoKSkKICAgICAgICB9LAogICAgICAgIGdldFNvdXRoRWFzdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgaih0aGlzLmdldFNvdXRoKCksIHRoaXMuZ2V0RWFzdCgpKQogICAgICAgIH0sCiAgICAgICAgZ2V0V2VzdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zb3V0aFdlc3QubG5nCiAgICAgICAgfSwKICAgICAgICBnZXRTb3V0aDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zb3V0aFdlc3QubGF0CiAgICAgICAgfSwKICAgICAgICBnZXRFYXN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sbmcKICAgICAgICB9LAogICAgICAgIGdldE5vcnRoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sYXQKICAgICAgICB9LAogICAgICAgIGNvbnRhaW5zOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHQgPSAibnVtYmVyIiA9PSB0eXBlb2YgdFswXSB8fCB0IGluc3RhbmNlb2YgaiB8fCAibGF0IiBpbiB0ID8gVyh0KSA6IEQodCk7CiAgICAgICAgICAgIHZhciBpLCBlLCBuID0gdGhpcy5fc291dGhXZXN0LAogICAgICAgICAgICAgICAgbyA9IHRoaXMuX25vcnRoRWFzdDsKICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBOID8gKGkgPSB0LmdldFNvdXRoV2VzdCgpLCBlID0gdC5nZXROb3J0aEVhc3QoKSkgOiBpID0gZSA9IHQsIGkubGF0ID49IG4ubGF0ICYmIGUubGF0IDw9IG8ubGF0ICYmIGkubG5nID49IG4ubG5nICYmIGUubG5nIDw9IG8ubG5nCiAgICAgICAgfSwKICAgICAgICBpbnRlcnNlY3RzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHQgPSBEKHQpOwogICAgICAgICAgICB2YXIgaSA9IHRoaXMuX3NvdXRoV2VzdCwKICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ub3J0aEVhc3QsCiAgICAgICAgICAgICAgICBuID0gdC5nZXRTb3V0aFdlc3QoKSwKICAgICAgICAgICAgICAgIG8gPSB0LmdldE5vcnRoRWFzdCgpLAogICAgICAgICAgICAgICAgcyA9IG8ubGF0ID49IGkubGF0ICYmIG4ubGF0IDw9IGUubGF0LAogICAgICAgICAgICAgICAgciA9IG8ubG5nID49IGkubG5nICYmIG4ubG5nIDw9IGUubG5nOwogICAgICAgICAgICByZXR1cm4gcyAmJiByCiAgICAgICAgfSwKICAgICAgICBvdmVybGFwczogZnVuY3Rpb24odCkgewogICAgICAgICAgICB0ID0gRCh0KTsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9zb3V0aFdlc3QsCiAgICAgICAgICAgICAgICBlID0gdGhpcy5fbm9ydGhFYXN0LAogICAgICAgICAgICAgICAgbiA9IHQuZ2V0U291dGhXZXN0KCksCiAgICAgICAgICAgICAgICBvID0gdC5nZXROb3J0aEVhc3QoKSwKICAgICAgICAgICAgICAgIHMgPSBvLmxhdCA+IGkubGF0ICYmIG4ubGF0IDwgZS5sYXQsCiAgICAgICAgICAgICAgICByID0gby5sbmcgPiBpLmxuZyAmJiBuLmxuZyA8IGUubG5nOwogICAgICAgICAgICByZXR1cm4gcyAmJiByCiAgICAgICAgfSwKICAgICAgICB0b0JCb3hTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gW3RoaXMuZ2V0V2VzdCgpLCB0aGlzLmdldFNvdXRoKCksIHRoaXMuZ2V0RWFzdCgpLCB0aGlzLmdldE5vcnRoKCldLmpvaW4oIiwiKQogICAgICAgIH0sCiAgICAgICAgZXF1YWxzOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHJldHVybiAhIXQgJiYgKHQgPSBEKHQpLCB0aGlzLl9zb3V0aFdlc3QuZXF1YWxzKHQuZ2V0U291dGhXZXN0KCksIGkpICYmIHRoaXMuX25vcnRoRWFzdC5lcXVhbHModC5nZXROb3J0aEVhc3QoKSwgaSkpCiAgICAgICAgfSwKICAgICAgICBpc1ZhbGlkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICEoIXRoaXMuX3NvdXRoV2VzdCB8fCAhdGhpcy5fbm9ydGhFYXN0KQogICAgICAgIH0KICAgIH07CiAgICB2YXIgSCwgRiA9IHsKICAgICAgICAgICAgbGF0TG5nVG9Qb2ludDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnByb2plY3Rpb24ucHJvamVjdCh0KSwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5zY2FsZShpKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybWF0aW9uLl90cmFuc2Zvcm0oZSwgbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcG9pbnRUb0xhdExuZzogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnNjYWxlKGkpLAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLnRyYW5zZm9ybWF0aW9uLnVudHJhbnNmb3JtKHQsIGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvamVjdGlvbi51bnByb2plY3QobikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJvamVjdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvamVjdGlvbi5wcm9qZWN0KHQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVucHJvamVjdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvamVjdGlvbi51bnByb2plY3QodCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2NhbGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAyNTYgKiBNYXRoLnBvdygyLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICB6b29tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5sb2codCAvIDI1NikgLyBNYXRoLkxOMgogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRQcm9qZWN0ZWRCb3VuZHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZmluaXRlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5wcm9qZWN0aW9uLmJvdW5kcywKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5zY2FsZSh0KTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTyh0aGlzLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybShpLm1pbiwgZSksIHRoaXMudHJhbnNmb3JtYXRpb24udHJhbnNmb3JtKGkubWF4LCBlKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5maW5pdGU6ICEoai5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICBlcXVhbHM6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0ICYmICh0ID0gVyh0KSwgTWF0aC5tYXgoTWF0aC5hYnModGhpcy5sYXQgLSB0LmxhdCksIE1hdGguYWJzKHRoaXMubG5nIC0gdC5sbmcpKSA8PSAodm9pZCAwID09PSBpID8gMWUtOSA6IGkpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJMYXRMbmcoIiArIGModGhpcy5sYXQsIHQpICsgIiwgIiArIGModGhpcy5sbmcsIHQpICsgIikiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGlzdGFuY2VUbzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBVLmRpc3RhbmNlKHRoaXMsIFcodCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgd3JhcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFUud3JhcExhdExuZyh0aGlzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRvQm91bmRzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAxODAgKiB0IC8gNDAwNzUwMTcsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBpIC8gTWF0aC5jb3MoTWF0aC5QSSAvIDE4MCAqIHRoaXMubGF0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRChbdGhpcy5sYXQgLSBpLCB0aGlzLmxuZyAtIGVdLCBbdGhpcy5sYXQgKyBpLCB0aGlzLmxuZyArIGVdKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNsb25lOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGoodGhpcy5sYXQsIHRoaXMubG5nLCB0aGlzLmFsdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksCiAgICAgICAgICAgIHdyYXBMYXRMbmc6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53cmFwTG5nID8gcih0LmxuZywgdGhpcy53cmFwTG5nLCAhMCkgOiB0LmxuZzsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgaih0aGlzLndyYXBMYXQgPyByKHQubGF0LCB0aGlzLndyYXBMYXQsICEwKSA6IHQubGF0LCBpLCB0LmFsdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgd3JhcExhdExuZ0JvdW5kczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0LmdldENlbnRlcigpLAogICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLndyYXBMYXRMbmcoaSksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkubGF0IC0gZS5sYXQsCiAgICAgICAgICAgICAgICAgICAgbyA9IGkubG5nIC0gZS5sbmc7CiAgICAgICAgICAgICAgICBpZiAoMCA9PSBuICYmIDAgPT0gbykgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICB2YXIgcyA9IHQuZ2V0U291dGhXZXN0KCksCiAgICAgICAgICAgICAgICAgICAgciA9IHQuZ2V0Tm9ydGhFYXN0KCk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE4obmV3IGoocy5sYXQgLSBuLCBzLmxuZyAtIG8pLCBuZXcgaihyLmxhdCAtIG4sIHIubG5nIC0gbykpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIFUgPSBoKHt9LCBGLCB7CiAgICAgICAgICAgIHdyYXBMbmc6IFstMTgwLCAxODBdLAogICAgICAgICAgICBSOiA2MzcxZTMsCiAgICAgICAgICAgIGRpc3RhbmNlOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IE1hdGguUEkgLyAxODAsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQubGF0ICogZSwKICAgICAgICAgICAgICAgICAgICBvID0gaS5sYXQgKiBlLAogICAgICAgICAgICAgICAgICAgIHMgPSBNYXRoLnNpbigoaS5sYXQgLSB0LmxhdCkgKiBlIC8gMiksCiAgICAgICAgICAgICAgICAgICAgciA9IE1hdGguc2luKChpLmxuZyAtIHQubG5nKSAqIGUgLyAyKSwKICAgICAgICAgICAgICAgICAgICBhID0gcyAqIHMgKyBNYXRoLmNvcyhuKSAqIE1hdGguY29zKG8pICogciAqIHIsCiAgICAgICAgICAgICAgICAgICAgaCA9IDIgKiBNYXRoLmF0YW4yKE1hdGguc3FydChhKSwgTWF0aC5zcXJ0KDEgLSBhKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5SICogaAogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgViA9IDYzNzgxMzcsCiAgICAgICAgcSA9IHsKICAgICAgICAgICAgUjogViwKICAgICAgICAgICAgTUFYX0xBVElUVURFOiA4NS4wNTExMjg3Nzk4LAogICAgICAgICAgICBwcm9qZWN0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IE1hdGguUEkgLyAxODAsCiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuTUFYX0xBVElUVURFLAogICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLm1heChNYXRoLm1pbihlLCB0LmxhdCksIC1lKSwKICAgICAgICAgICAgICAgICAgICBvID0gTWF0aC5zaW4obiAqIGkpOwogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCKHRoaXMuUiAqIHQubG5nICogaSwgdGhpcy5SICogTWF0aC5sb2coKDEgKyBvKSAvICgxIC0gbykpIC8gMikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdW5wcm9qZWN0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IDE4MCAvIE1hdGguUEk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGooKDIgKiBNYXRoLmF0YW4oTWF0aC5leHAodC55IC8gdGhpcy5SKSkgLSBNYXRoLlBJIC8gMikgKiBpLCB0LnggKiBpIC8gdGhpcy5SKQogICAgICAgICAgICB9LAogICAgICAgICAgICBib3VuZHM6IChIID0gViAqIE1hdGguUEksIG5ldyBPKFstSCwgLUhdLCBbSCwgSF0pKQogICAgICAgIH07CgogICAgZnVuY3Rpb24gRyh0LCBpLCBlLCBuKSB7CiAgICAgICAgaWYgKHYodCkpIHJldHVybiB0aGlzLl9hID0gdFswXSwgdGhpcy5fYiA9IHRbMV0sIHRoaXMuX2MgPSB0WzJdLCB2b2lkKHRoaXMuX2QgPSB0WzNdKTsKICAgICAgICB0aGlzLl9hID0gdCwgdGhpcy5fYiA9IGksIHRoaXMuX2MgPSBlLCB0aGlzLl9kID0gbgogICAgfQoKICAgIGZ1bmN0aW9uIEsodCwgaSwgZSwgbikgewogICAgICAgIHJldHVybiBuZXcgRyh0LCBpLCBlLCBuKQogICAgfQogICAgRy5wcm90b3R5cGUgPSB7CiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm0odC5jbG9uZSgpLCBpKQogICAgICAgIH0sCiAgICAgICAgX3RyYW5zZm9ybTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICByZXR1cm4gaSA9IGkgfHwgMSwgdC54ID0gaSAqICh0aGlzLl9hICogdC54ICsgdGhpcy5fYiksIHQueSA9IGkgKiAodGhpcy5fYyAqIHQueSArIHRoaXMuX2QpLCB0CiAgICAgICAgfSwKICAgICAgICB1bnRyYW5zZm9ybTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICByZXR1cm4gaSA9IGkgfHwgMSwgbmV3IEIoKHQueCAvIGkgLSB0aGlzLl9iKSAvIHRoaXMuX2EsICh0LnkgLyBpIC0gdGhpcy5fZCkgLyB0aGlzLl9jKQogICAgICAgIH0KICAgIH07CiAgICB2YXIgWSwgWCA9IGgoe30sIFUsIHsKICAgICAgICAgICAgY29kZTogIkVQU0c6Mzg1NyIsCiAgICAgICAgICAgIHByb2plY3Rpb246IHEsCiAgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uOiAoWSA9IC41IC8gKE1hdGguUEkgKiBxLlIpLCBLKFksIC41LCAtWSwgLjUpKQogICAgICAgIH0pLAogICAgICAgIEogPSBoKHt9LCBYLCB7CiAgICAgICAgICAgIGNvZGU6ICJFUFNHOjkwMDkxMyIKICAgICAgICB9KTsKCiAgICBmdW5jdGlvbiAkKHQpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsIHQpCiAgICB9CgogICAgZnVuY3Rpb24gUSh0LCBpKSB7CiAgICAgICAgdmFyIGUsIG4sIG8sIHMsIHIsIGEsIGggPSAiIjsKICAgICAgICBmb3IgKGUgPSAwLCBvID0gdC5sZW5ndGg7IGUgPCBvOyBlKyspIHsKICAgICAgICAgICAgZm9yIChuID0gMCwgcyA9IChyID0gdFtlXSkubGVuZ3RoOyBuIDwgczsgbisrKSBoICs9IChuID8gIkwiIDogIk0iKSArIChhID0gcltuXSkueCArICIgIiArIGEueTsKICAgICAgICAgICAgaCArPSBpID8gWnQgPyAieiIgOiAieCIgOiAiIgogICAgICAgIH0KICAgICAgICByZXR1cm4gaCB8fCAiTTAgMCIKICAgIH0KICAgIHZhciB0dCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSwKICAgICAgICBpdCA9ICJBY3RpdmVYT2JqZWN0IiBpbiB3aW5kb3csCiAgICAgICAgZXQgPSBpdCAmJiAhZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICBudCA9ICJtc0xhdW5jaFVyaSIgaW4gbmF2aWdhdG9yICYmICEoImRvY3VtZW50TW9kZSIgaW4gZG9jdW1lbnQpLAogICAgICAgIG90ID0ga3QoIndlYmtpdCIpLAogICAgICAgIHN0ID0ga3QoImFuZHJvaWQiKSwKICAgICAgICBydCA9IGt0KCJhbmRyb2lkIDIiKSB8fCBrdCgiYW5kcm9pZCAzIiksCiAgICAgICAgYXQgPSBwYXJzZUludCgvV2ViS2l0XC8oWzAtOV0rKXwkLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpWzFdLCAxMCksCiAgICAgICAgaHQgPSBzdCAmJiBrdCgiR29vZ2xlIikgJiYgYXQgPCA1MzcgJiYgISgiQXVkaW9Ob2RlIiBpbiB3aW5kb3cpLAogICAgICAgIHV0ID0gISF3aW5kb3cub3BlcmEsCiAgICAgICAgbHQgPSBrdCgiY2hyb21lIiksCiAgICAgICAgY3QgPSBrdCgiZ2Vja28iKSAmJiAhb3QgJiYgIXV0ICYmICFpdCwKICAgICAgICBfdCA9ICFsdCAmJiBrdCgic2FmYXJpIiksCiAgICAgICAgZHQgPSBrdCgicGhhbnRvbSIpLAogICAgICAgIHB0ID0gIk9UcmFuc2l0aW9uIiBpbiB0dCwKICAgICAgICBtdCA9IDAgPT09IG5hdmlnYXRvci5wbGF0Zm9ybS5pbmRleE9mKCJXaW4iKSwKICAgICAgICBmdCA9IGl0ICYmICJ0cmFuc2l0aW9uIiBpbiB0dCwKICAgICAgICBndCA9ICJXZWJLaXRDU1NNYXRyaXgiIGluIHdpbmRvdyAmJiAibTExIiBpbiBuZXcgd2luZG93LldlYktpdENTU01hdHJpeCAmJiAhcnQsCiAgICAgICAgdnQgPSAiTW96UGVyc3BlY3RpdmUiIGluIHR0LAogICAgICAgIHl0ID0gIXdpbmRvdy5MX0RJU0FCTEVfM0QgJiYgKGZ0IHx8IGd0IHx8IHZ0KSAmJiAhcHQgJiYgIWR0LAogICAgICAgIHh0ID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIG9yaWVudGF0aW9uIHx8IGt0KCJtb2JpbGUiKSwKICAgICAgICB3dCA9IHh0ICYmIG90LAogICAgICAgIFB0ID0geHQgJiYgZ3QsCiAgICAgICAgTHQgPSAhd2luZG93LlBvaW50ZXJFdmVudCAmJiB3aW5kb3cuTVNQb2ludGVyRXZlbnQsCiAgICAgICAgYnQgPSAhKCF3aW5kb3cuUG9pbnRlckV2ZW50ICYmICFMdCksCiAgICAgICAgVHQgPSAhd2luZG93LkxfTk9fVE9VQ0ggJiYgKGJ0IHx8ICJvbnRvdWNoc3RhcnQiIGluIHdpbmRvdyB8fCB3aW5kb3cuRG9jdW1lbnRUb3VjaCAmJiBkb2N1bWVudCBpbnN0YW5jZW9mIHdpbmRvdy5Eb2N1bWVudFRvdWNoKSwKICAgICAgICB6dCA9IHh0ICYmIHV0LAogICAgICAgIE10ID0geHQgJiYgY3QsCiAgICAgICAgQ3QgPSAxIDwgKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IHdpbmRvdy5zY3JlZW4uZGV2aWNlWERQSSAvIHdpbmRvdy5zY3JlZW4ubG9naWNhbFhEUEkpLAogICAgICAgIFN0ID0gISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0LAogICAgICAgIFp0ID0gISghZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TIHx8ICEkKCJzdmciKS5jcmVhdGVTVkdSZWN0KSwKICAgICAgICBFdCA9ICFadCAmJiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICB0LmlubmVySFRNTCA9ICc8djpzaGFwZSBhZGo9IjEiLz4nOwogICAgICAgICAgICAgICAgdmFyIGkgPSB0LmZpcnN0Q2hpbGQ7CiAgICAgICAgICAgICAgICByZXR1cm4gaS5zdHlsZS5iZWhhdmlvciA9ICJ1cmwoI2RlZmF1bHQjVk1MKSIsIGkgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGkuYWRqCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSgpOwoKICAgIGZ1bmN0aW9uIGt0KHQpIHsKICAgICAgICByZXR1cm4gMCA8PSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0KQogICAgfQogICAgdmFyIEJ0ID0gKE9iamVjdC5mcmVlemUgfHwgT2JqZWN0KSh7CiAgICAgICAgICAgIGllOiBpdCwKICAgICAgICAgICAgaWVsdDk6IGV0LAogICAgICAgICAgICBlZGdlOiBudCwKICAgICAgICAgICAgd2Via2l0OiBvdCwKICAgICAgICAgICAgYW5kcm9pZDogc3QsCiAgICAgICAgICAgIGFuZHJvaWQyMzogcnQsCiAgICAgICAgICAgIGFuZHJvaWRTdG9jazogaHQsCiAgICAgICAgICAgIG9wZXJhOiB1dCwKICAgICAgICAgICAgY2hyb21lOiBsdCwKICAgICAgICAgICAgZ2Vja286IGN0LAogICAgICAgICAgICBzYWZhcmk6IF90LAogICAgICAgICAgICBwaGFudG9tOiBkdCwKICAgICAgICAgICAgb3BlcmExMjogcHQsCiAgICAgICAgICAgIHdpbjogbXQsCiAgICAgICAgICAgIGllM2Q6IGZ0LAogICAgICAgICAgICB3ZWJraXQzZDogZ3QsCiAgICAgICAgICAgIGdlY2tvM2Q6IHZ0LAogICAgICAgICAgICBhbnkzZDogeXQsCiAgICAgICAgICAgIG1vYmlsZTogeHQsCiAgICAgICAgICAgIG1vYmlsZVdlYmtpdDogd3QsCiAgICAgICAgICAgIG1vYmlsZVdlYmtpdDNkOiBQdCwKICAgICAgICAgICAgbXNQb2ludGVyOiBMdCwKICAgICAgICAgICAgcG9pbnRlcjogYnQsCiAgICAgICAgICAgIHRvdWNoOiBUdCwKICAgICAgICAgICAgbW9iaWxlT3BlcmE6IHp0LAogICAgICAgICAgICBtb2JpbGVHZWNrbzogTXQsCiAgICAgICAgICAgIHJldGluYTogQ3QsCiAgICAgICAgICAgIGNhbnZhczogU3QsCiAgICAgICAgICAgIHN2ZzogWnQsCiAgICAgICAgICAgIHZtbDogRXQKICAgICAgICB9KSwKICAgICAgICBBdCA9IEx0ID8gIk1TUG9pbnRlckRvd24iIDogInBvaW50ZXJkb3duIiwKICAgICAgICBJdCA9IEx0ID8gIk1TUG9pbnRlck1vdmUiIDogInBvaW50ZXJtb3ZlIiwKICAgICAgICBPdCA9IEx0ID8gIk1TUG9pbnRlclVwIiA6ICJwb2ludGVydXAiLAogICAgICAgIFJ0ID0gTHQgPyAiTVNQb2ludGVyQ2FuY2VsIiA6ICJwb2ludGVyY2FuY2VsIiwKICAgICAgICBOdCA9IFsiSU5QVVQiLCAiU0VMRUNUIiwgIk9QVElPTiJdLAogICAgICAgIER0ID0ge30sCiAgICAgICAganQgPSAhMSwKICAgICAgICBXdCA9IDA7CgogICAgZnVuY3Rpb24gSHQodCwgaSwgZSwgbikgewogICAgICAgIHJldHVybiAidG91Y2hzdGFydCIgPT09IGkgPyBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgIHZhciBuID0gYShmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIm1vdXNlIiAhPT0gdC5wb2ludGVyVHlwZSAmJiB0Lk1TUE9JTlRFUl9UWVBFX01PVVNFICYmIHQucG9pbnRlclR5cGUgIT09IHQuTVNQT0lOVEVSX1RZUEVfTU9VU0UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIShOdC5pbmRleE9mKHQudGFyZ2V0LnRhZ05hbWUpIDwgMCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBEaSh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcXQodCwgaSkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRbIl9sZWFmbGV0X3RvdWNoc3RhcnQiICsgZV0gPSBuLCB0LmFkZEV2ZW50TGlzdGVuZXIoQXQsIG4sICExKSwganQgfHwgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKEF0LCBGdCwgITApLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihJdCwgVXQsICEwKSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoT3QsIFZ0LCAhMCksIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFJ0LCBWdCwgITApLCBqdCA9ICEwKQogICAgICAgIH0odCwgZSwgbikgOiAidG91Y2htb3ZlIiA9PT0gaSA/IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAodC5wb2ludGVyVHlwZSAhPT0gdC5NU1BPSU5URVJfVFlQRV9NT1VTRSAmJiAibW91c2UiICE9PSB0LnBvaW50ZXJUeXBlIHx8IDAgIT09IHQuYnV0dG9ucykgJiYgcXQodCwgaSkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdFsiX2xlYWZsZXRfdG91Y2htb3ZlIiArIGVdID0gbiwgdC5hZGRFdmVudExpc3RlbmVyKEl0LCBuLCAhMSkKICAgICAgICB9KHQsIGUsIG4pIDogInRvdWNoZW5kIiA9PT0gaSAmJiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcXQodCwgaSkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdFsiX2xlYWZsZXRfdG91Y2hlbmQiICsgZV0gPSBuLCB0LmFkZEV2ZW50TGlzdGVuZXIoT3QsIG4sICExKSwgdC5hZGRFdmVudExpc3RlbmVyKFJ0LCBuLCAhMSkKICAgICAgICB9KHQsIGUsIG4pLCB0aGlzCiAgICB9CgogICAgZnVuY3Rpb24gRnQodCkgewogICAgICAgIER0W3QucG9pbnRlcklkXSA9IHQsIFd0KysKICAgIH0KCiAgICBmdW5jdGlvbiBVdCh0KSB7CiAgICAgICAgRHRbdC5wb2ludGVySWRdICYmIChEdFt0LnBvaW50ZXJJZF0gPSB0KQogICAgfQoKICAgIGZ1bmN0aW9uIFZ0KHQpIHsKICAgICAgICBkZWxldGUgRHRbdC5wb2ludGVySWRdLCBXdC0tCiAgICB9CgogICAgZnVuY3Rpb24gcXQodCwgaSkgewogICAgICAgIGZvciAodmFyIGUgaW4gdC50b3VjaGVzID0gW10sIER0KSB0LnRvdWNoZXMucHVzaChEdFtlXSk7CiAgICAgICAgdC5jaGFuZ2VkVG91Y2hlcyA9IFt0XSwgaSh0KQogICAgfQogICAgdmFyIEd0ID0gTHQgPyAiTVNQb2ludGVyRG93biIgOiBidCA/ICJwb2ludGVyZG93biIgOiAidG91Y2hzdGFydCIsCiAgICAgICAgS3QgPSBMdCA/ICJNU1BvaW50ZXJVcCIgOiBidCA/ICJwb2ludGVydXAiIDogInRvdWNoZW5kIiwKICAgICAgICBZdCA9ICJfbGVhZmxldF8iOwoKICAgIGZ1bmN0aW9uIFh0KHQsIG8sIGkpIHsKICAgICAgICB2YXIgcywgciwgYSA9ICExOwoKICAgICAgICBmdW5jdGlvbiBlKHQpIHsKICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgIGlmIChidCkgewogICAgICAgICAgICAgICAgaWYgKCFudCB8fCAibW91c2UiID09PSB0LnBvaW50ZXJUeXBlKSByZXR1cm47CiAgICAgICAgICAgICAgICBpID0gV3QKICAgICAgICAgICAgfSBlbHNlIGkgPSB0LnRvdWNoZXMubGVuZ3RoOwogICAgICAgICAgICBpZiAoISgxIDwgaSkpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gRGF0ZS5ub3coKSwKICAgICAgICAgICAgICAgICAgICBuID0gZSAtIChzIHx8IGUpOwogICAgICAgICAgICAgICAgciA9IHQudG91Y2hlcyA/IHQudG91Y2hlc1swXSA6IHQsIGEgPSAwIDwgbiAmJiBuIDw9IDI1MCwgcyA9IGUKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbih0KSB7CiAgICAgICAgICAgIGlmIChhICYmICFyLmNhbmNlbEJ1YmJsZSkgewogICAgICAgICAgICAgICAgaWYgKGJ0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFudCB8fCAibW91c2UiID09PSB0LnBvaW50ZXJUeXBlKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIGUsIG4gPSB7fTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgaW4gcikgaSA9IHJbZV0sIG5bZV0gPSBpICYmIGkuYmluZCA/IGkuYmluZChyKSA6IGk7CiAgICAgICAgICAgICAgICAgICAgciA9IG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIudHlwZSA9ICJkYmxjbGljayIsIHIuYnV0dG9uID0gMCwgbyhyKSwgcyA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdFtZdCArIEd0ICsgaV0gPSBlLCB0W1l0ICsgS3QgKyBpXSA9IG4sIHRbWXQgKyAiZGJsY2xpY2siICsgaV0gPSBvLCB0LmFkZEV2ZW50TGlzdGVuZXIoR3QsIGUsICExKSwgdC5hZGRFdmVudExpc3RlbmVyKEt0LCBuLCAhMSksIHQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCBvLCAhMSksIHRoaXMKICAgIH0KCiAgICBmdW5jdGlvbiBKdCh0LCBpKSB7CiAgICAgICAgdmFyIGUgPSB0W1l0ICsgR3QgKyBpXSwKICAgICAgICAgICAgbiA9IHRbWXQgKyBLdCArIGldLAogICAgICAgICAgICBvID0gdFtZdCArICJkYmxjbGljayIgKyBpXTsKICAgICAgICByZXR1cm4gdC5yZW1vdmVFdmVudExpc3RlbmVyKEd0LCBlLCAhMSksIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihLdCwgbiwgITEpLCBudCB8fCB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgbywgITEpLCB0aGlzCiAgICB9CiAgICB2YXIgJHQsIFF0LCB0aSwgaWksIGVpLCBuaSA9IHlpKFsidHJhbnNmb3JtIiwgIndlYmtpdFRyYW5zZm9ybSIsICJPVHJhbnNmb3JtIiwgIk1velRyYW5zZm9ybSIsICJtc1RyYW5zZm9ybSJdKSwKICAgICAgICBvaSA9IHlpKFsid2Via2l0VHJhbnNpdGlvbiIsICJ0cmFuc2l0aW9uIiwgIk9UcmFuc2l0aW9uIiwgIk1velRyYW5zaXRpb24iLCAibXNUcmFuc2l0aW9uIl0pLAogICAgICAgIHNpID0gIndlYmtpdFRyYW5zaXRpb24iID09PSBvaSB8fCAiT1RyYW5zaXRpb24iID09PSBvaSA/IG9pICsgIkVuZCIgOiAidHJhbnNpdGlvbmVuZCI7CgogICAgZnVuY3Rpb24gcmkodCkgewogICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpIDogdAogICAgfQoKICAgIGZ1bmN0aW9uIGFpKHQsIGkpIHsKICAgICAgICB2YXIgZSA9IHQuc3R5bGVbaV0gfHwgdC5jdXJyZW50U3R5bGUgJiYgdC5jdXJyZW50U3R5bGVbaV07CiAgICAgICAgaWYgKCghZSB8fCAiYXV0byIgPT09IGUpICYmIGRvY3VtZW50LmRlZmF1bHRWaWV3KSB7CiAgICAgICAgICAgIHZhciBuID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LCBudWxsKTsKICAgICAgICAgICAgZSA9IG4gPyBuW2ldIDogbnVsbAogICAgICAgIH0KICAgICAgICByZXR1cm4gImF1dG8iID09PSBlID8gbnVsbCA6IGUKICAgIH0KCiAgICBmdW5jdGlvbiBoaSh0LCBpLCBlKSB7CiAgICAgICAgdmFyIG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpOwogICAgICAgIHJldHVybiBuLmNsYXNzTmFtZSA9IGkgfHwgIiIsIGUgJiYgZS5hcHBlbmRDaGlsZChuKSwgbgogICAgfQoKICAgIGZ1bmN0aW9uIHVpKHQpIHsKICAgICAgICB2YXIgaSA9IHQucGFyZW50Tm9kZTsKICAgICAgICBpICYmIGkucmVtb3ZlQ2hpbGQodCkKICAgIH0KCiAgICBmdW5jdGlvbiBsaSh0KSB7CiAgICAgICAgZm9yICg7IHQuZmlyc3RDaGlsZDspIHQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKQogICAgfQoKICAgIGZ1bmN0aW9uIGNpKHQpIHsKICAgICAgICB2YXIgaSA9IHQucGFyZW50Tm9kZTsKICAgICAgICBpICYmIGkubGFzdENoaWxkICE9PSB0ICYmIGkuYXBwZW5kQ2hpbGQodCkKICAgIH0KCiAgICBmdW5jdGlvbiBfaSh0KSB7CiAgICAgICAgdmFyIGkgPSB0LnBhcmVudE5vZGU7CiAgICAgICAgaSAmJiBpLmZpcnN0Q2hpbGQgIT09IHQgJiYgaS5pbnNlcnRCZWZvcmUodCwgaS5maXJzdENoaWxkKQogICAgfQoKICAgIGZ1bmN0aW9uIGRpKHQsIGkpIHsKICAgICAgICBpZiAodm9pZCAwICE9PSB0LmNsYXNzTGlzdCkgcmV0dXJuIHQuY2xhc3NMaXN0LmNvbnRhaW5zKGkpOwogICAgICAgIHZhciBlID0gZ2kodCk7CiAgICAgICAgcmV0dXJuIDAgPCBlLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCIoXnxcXHMpIiArIGkgKyAiKFxcc3wkKSIpLnRlc3QoZSkKICAgIH0KCiAgICBmdW5jdGlvbiBwaSh0LCBpKSB7CiAgICAgICAgaWYgKHZvaWQgMCAhPT0gdC5jbGFzc0xpc3QpCiAgICAgICAgICAgIGZvciAodmFyIGUgPSBkKGkpLCBuID0gMCwgbyA9IGUubGVuZ3RoOyBuIDwgbzsgbisrKSB0LmNsYXNzTGlzdC5hZGQoZVtuXSk7CiAgICAgICAgZWxzZSBpZiAoIWRpKHQsIGkpKSB7CiAgICAgICAgICAgIHZhciBzID0gZ2kodCk7CiAgICAgICAgICAgIGZpKHQsIChzID8gcyArICIgIiA6ICIiKSArIGkpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIG1pKHQsIGkpIHsKICAgICAgICB2b2lkIDAgIT09IHQuY2xhc3NMaXN0ID8gdC5jbGFzc0xpc3QucmVtb3ZlKGkpIDogZmkodCwgXygoIiAiICsgZ2kodCkgKyAiICIpLnJlcGxhY2UoIiAiICsgaSArICIgIiwgIiAiKSkpCiAgICB9CgogICAgZnVuY3Rpb24gZmkodCwgaSkgewogICAgICAgIHZvaWQgMCA9PT0gdC5jbGFzc05hbWUuYmFzZVZhbCA/IHQuY2xhc3NOYW1lID0gaSA6IHQuY2xhc3NOYW1lLmJhc2VWYWwgPSBpCiAgICB9CgogICAgZnVuY3Rpb24gZ2kodCkgewogICAgICAgIHJldHVybiB0LmNvcnJlc3BvbmRpbmdFbGVtZW50ICYmICh0ID0gdC5jb3JyZXNwb25kaW5nRWxlbWVudCksIHZvaWQgMCA9PT0gdC5jbGFzc05hbWUuYmFzZVZhbCA/IHQuY2xhc3NOYW1lIDogdC5jbGFzc05hbWUuYmFzZVZhbAogICAgfQoKICAgIGZ1bmN0aW9uIHZpKHQsIGkpIHsKICAgICAgICAib3BhY2l0eSIgaW4gdC5zdHlsZSA/IHQuc3R5bGUub3BhY2l0eSA9IGkgOiAiZmlsdGVyIiBpbiB0LnN0eWxlICYmIGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgdmFyIGUgPSAhMSwKICAgICAgICAgICAgICAgIG4gPSAiRFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEiOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgZSA9IHQuZmlsdGVycy5pdGVtKG4pCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIGlmICgxID09PSBpKSByZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICBpID0gTWF0aC5yb3VuZCgxMDAgKiBpKSwgZSA/IChlLkVuYWJsZWQgPSAxMDAgIT09IGksIGUuT3BhY2l0eSA9IGkpIDogdC5zdHlsZS5maWx0ZXIgKz0gIiBwcm9naWQ6IiArIG4gKyAiKG9wYWNpdHk9IiArIGkgKyAiKSIKICAgICAgICB9KHQsIGkpCiAgICB9CgogICAgZnVuY3Rpb24geWkodCkgewogICAgICAgIGZvciAodmFyIGkgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsIGUgPSAwOyBlIDwgdC5sZW5ndGg7IGUrKykKICAgICAgICAgICAgaWYgKHRbZV0gaW4gaSkgcmV0dXJuIHRbZV07CiAgICAgICAgcmV0dXJuICExCiAgICB9CgogICAgZnVuY3Rpb24geGkodCwgaSwgZSkgewogICAgICAgIHZhciBuID0gaSB8fCBuZXcgQigwLCAwKTsKICAgICAgICB0LnN0eWxlW25pXSA9IChmdCA/ICJ0cmFuc2xhdGUoIiArIG4ueCArICJweCwiICsgbi55ICsgInB4KSIgOiAidHJhbnNsYXRlM2QoIiArIG4ueCArICJweCwiICsgbi55ICsgInB4LDApIikgKyAoZSA/ICIgc2NhbGUoIiArIGUgKyAiKSIgOiAiIikKICAgIH0KCiAgICBmdW5jdGlvbiB3aSh0LCBpKSB7CiAgICAgICAgdC5fbGVhZmxldF9wb3MgPSBpLCB5dCA/IHhpKHQsIGkpIDogKHQuc3R5bGUubGVmdCA9IGkueCArICJweCIsIHQuc3R5bGUudG9wID0gaS55ICsgInB4IikKICAgIH0KCiAgICBmdW5jdGlvbiBQaSh0KSB7CiAgICAgICAgcmV0dXJuIHQuX2xlYWZsZXRfcG9zIHx8IG5ldyBCKDAsIDApCiAgICB9CiAgICBpZiAoIm9uc2VsZWN0c3RhcnQiIGluIGRvY3VtZW50KSAkdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIEVpKHdpbmRvdywgInNlbGVjdHN0YXJ0IiwgRGkpCiAgICB9LCBRdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIEJpKHdpbmRvdywgInNlbGVjdHN0YXJ0IiwgRGkpCiAgICB9OwogICAgZWxzZSB7CiAgICAgICAgdmFyIExpID0geWkoWyJ1c2VyU2VsZWN0IiwgIldlYmtpdFVzZXJTZWxlY3QiLCAiT1VzZXJTZWxlY3QiLCAiTW96VXNlclNlbGVjdCIsICJtc1VzZXJTZWxlY3QiXSk7CiAgICAgICAgJHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKExpKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZTsKICAgICAgICAgICAgICAgIHRpID0gdFtMaV0sIHRbTGldID0gIm5vbmUiCiAgICAgICAgICAgIH0KICAgICAgICB9LCBRdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBMaSAmJiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlW0xpXSA9IHRpLCB0aSA9IHZvaWQgMCkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gYmkoKSB7CiAgICAgICAgRWkod2luZG93LCAiZHJhZ3N0YXJ0IiwgRGkpCiAgICB9CgogICAgZnVuY3Rpb24gVGkoKSB7CiAgICAgICAgQmkod2luZG93LCAiZHJhZ3N0YXJ0IiwgRGkpCiAgICB9CgogICAgZnVuY3Rpb24gemkodCkgewogICAgICAgIGZvciAoOyAtIDEgPT09IHQudGFiSW5kZXg7KSB0ID0gdC5wYXJlbnROb2RlOwogICAgICAgIHQuc3R5bGUgJiYgKE1pKCksIGVpID0gKGlpID0gdCkuc3R5bGUub3V0bGluZSwgdC5zdHlsZS5vdXRsaW5lID0gIm5vbmUiLCBFaSh3aW5kb3csICJrZXlkb3duIiwgTWkpKQogICAgfQoKICAgIGZ1bmN0aW9uIE1pKCkgewogICAgICAgIGlpICYmIChpaS5zdHlsZS5vdXRsaW5lID0gZWksIGVpID0gaWkgPSB2b2lkIDAsIEJpKHdpbmRvdywgImtleWRvd24iLCBNaSkpCiAgICB9CgogICAgZnVuY3Rpb24gQ2kodCkgewogICAgICAgIGZvciAoOyAhKCh0ID0gdC5wYXJlbnROb2RlKS5vZmZzZXRXaWR0aCAmJiB0Lm9mZnNldEhlaWdodCB8fCB0ID09PSBkb2N1bWVudC5ib2R5KTspOwogICAgICAgIHJldHVybiB0CiAgICB9CgogICAgZnVuY3Rpb24gU2kodCkgewogICAgICAgIHZhciBpID0gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICB4OiBpLndpZHRoIC8gdC5vZmZzZXRXaWR0aCB8fCAxLAogICAgICAgICAgICB5OiBpLmhlaWdodCAvIHQub2Zmc2V0SGVpZ2h0IHx8IDEsCiAgICAgICAgICAgIGJvdW5kaW5nQ2xpZW50UmVjdDogaQogICAgICAgIH0KICAgIH0KICAgIHZhciBaaSA9IChPYmplY3QuZnJlZXplIHx8IE9iamVjdCkoewogICAgICAgIFRSQU5TRk9STTogbmksCiAgICAgICAgVFJBTlNJVElPTjogb2ksCiAgICAgICAgVFJBTlNJVElPTl9FTkQ6IHNpLAogICAgICAgIGdldDogcmksCiAgICAgICAgZ2V0U3R5bGU6IGFpLAogICAgICAgIGNyZWF0ZTogaGksCiAgICAgICAgcmVtb3ZlOiB1aSwKICAgICAgICBlbXB0eTogbGksCiAgICAgICAgdG9Gcm9udDogY2ksCiAgICAgICAgdG9CYWNrOiBfaSwKICAgICAgICBoYXNDbGFzczogZGksCiAgICAgICAgYWRkQ2xhc3M6IHBpLAogICAgICAgIHJlbW92ZUNsYXNzOiBtaSwKICAgICAgICBzZXRDbGFzczogZmksCiAgICAgICAgZ2V0Q2xhc3M6IGdpLAogICAgICAgIHNldE9wYWNpdHk6IHZpLAogICAgICAgIHRlc3RQcm9wOiB5aSwKICAgICAgICBzZXRUcmFuc2Zvcm06IHhpLAogICAgICAgIHNldFBvc2l0aW9uOiB3aSwKICAgICAgICBnZXRQb3NpdGlvbjogUGksCiAgICAgICAgZGlzYWJsZVRleHRTZWxlY3Rpb246ICR0LAogICAgICAgIGVuYWJsZVRleHRTZWxlY3Rpb246IFF0LAogICAgICAgIGRpc2FibGVJbWFnZURyYWc6IGJpLAogICAgICAgIGVuYWJsZUltYWdlRHJhZzogVGksCiAgICAgICAgcHJldmVudE91dGxpbmU6IHppLAogICAgICAgIHJlc3RvcmVPdXRsaW5lOiBNaSwKICAgICAgICBnZXRTaXplZFBhcmVudE5vZGU6IENpLAogICAgICAgIGdldFNjYWxlOiBTaQogICAgfSk7CgogICAgZnVuY3Rpb24gRWkodCwgaSwgZSwgbikgewogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgaSkKICAgICAgICAgICAgZm9yICh2YXIgbyBpbiBpKSBBaSh0LCBvLCBpW29dLCBlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGZvciAodmFyIHMgPSAwLCByID0gKGkgPSBkKGkpKS5sZW5ndGg7IHMgPCByOyBzKyspIEFpKHQsIGlbc10sIGUsIG4pOwogICAgICAgIHJldHVybiB0aGlzCiAgICB9CiAgICB2YXIga2kgPSAiX2xlYWZsZXRfZXZlbnRzIjsKCiAgICBmdW5jdGlvbiBCaSh0LCBpLCBlLCBuKSB7CiAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBpKQogICAgICAgICAgICBmb3IgKHZhciBvIGluIGkpIElpKHQsIG8sIGlbb10sIGUpOwogICAgICAgIGVsc2UgaWYgKGkpCiAgICAgICAgICAgIGZvciAodmFyIHMgPSAwLCByID0gKGkgPSBkKGkpKS5sZW5ndGg7IHMgPCByOyBzKyspIElpKHQsIGlbc10sIGUsIG4pOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgKHZhciBhIGluIHRba2ldKSBJaSh0LCBhLCB0W2tpXVthXSk7CiAgICAgICAgICAgIGRlbGV0ZSB0W2tpXQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcwogICAgfQoKICAgIGZ1bmN0aW9uIEFpKGksIHQsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IHQgKyB1KGUpICsgKG4gPyAiXyIgKyB1KG4pIDogIiIpOwogICAgICAgIGlmIChpW2tpXSAmJiBpW2tpXVtvXSkgcmV0dXJuIHRoaXM7CiAgICAgICAgdmFyIHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5jYWxsKG4gfHwgaSwgdCB8fCB3aW5kb3cuZXZlbnQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHIgPSBzOwogICAgICAgIGJ0ICYmIDAgPT09IHQuaW5kZXhPZigidG91Y2giKSA/IEh0KGksIHQsIHMsIG8pIDogIVR0IHx8ICJkYmxjbGljayIgIT09IHQgfHwgYnQgJiYgbHQgPyAiYWRkRXZlbnRMaXN0ZW5lciIgaW4gaSA/ICJtb3VzZXdoZWVsIiA9PT0gdCA/IGkuYWRkRXZlbnRMaXN0ZW5lcigib253aGVlbCIgaW4gaSA/ICJ3aGVlbCIgOiAibW91c2V3aGVlbCIsIHMsICExKSA6ICJtb3VzZWVudGVyIiA9PT0gdCB8fCAibW91c2VsZWF2ZSIgPT09IHQgPyAocyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdCA9IHQgfHwgd2luZG93LmV2ZW50LCBLaShpLCB0KSAmJiByKHQpCiAgICAgICAgfSwgaS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIiA9PT0gdCA/ICJtb3VzZW92ZXIiIDogIm1vdXNlb3V0IiwgcywgITEpKSA6ICgiY2xpY2siID09PSB0ICYmIHN0ICYmIChzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAhIGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdC50aW1lU3RhbXAgfHwgdC5vcmlnaW5hbEV2ZW50ICYmIHQub3JpZ2luYWxFdmVudC50aW1lU3RhbXAsCiAgICAgICAgICAgICAgICAgICAgbiA9IFVpICYmIGUgLSBVaTsKICAgICAgICAgICAgICAgIGlmIChuICYmIDEwMCA8IG4gJiYgbiA8IDUwMCB8fCB0LnRhcmdldC5fc2ltdWxhdGVkQ2xpY2sgJiYgIXQuX3NpbXVsYXRlZCkgcmV0dXJuIGppKHQpOwogICAgICAgICAgICAgICAgVWkgPSBlLCBpKHQpCiAgICAgICAgICAgIH0odCwgcikKICAgICAgICB9KSwgaS5hZGRFdmVudExpc3RlbmVyKHQsIHMsICExKSkgOiAiYXR0YWNoRXZlbnQiIGluIGkgJiYgaS5hdHRhY2hFdmVudCgib24iICsgdCwgcykgOiBYdChpLCBzLCBvKSwgaVtraV0gPSBpW2tpXSB8fCB7fSwgaVtraV1bb10gPSBzCiAgICB9CgogICAgZnVuY3Rpb24gSWkodCwgaSwgZSwgbikgewogICAgICAgIHZhciBvID0gaSArIHUoZSkgKyAobiA/ICJfIiArIHUobikgOiAiIiksCiAgICAgICAgICAgIHMgPSB0W2tpXSAmJiB0W2tpXVtvXTsKICAgICAgICBpZiAoIXMpIHJldHVybiB0aGlzOwogICAgICAgIGJ0ICYmIDAgPT09IGkuaW5kZXhPZigidG91Y2giKSA/IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSB0WyJfbGVhZmxldF8iICsgaSArIGVdOwogICAgICAgICAgICAidG91Y2hzdGFydCIgPT09IGkgPyB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoQXQsIG4sICExKSA6ICJ0b3VjaG1vdmUiID09PSBpID8gdC5yZW1vdmVFdmVudExpc3RlbmVyKEl0LCBuLCAhMSkgOiAidG91Y2hlbmQiID09PSBpICYmICh0LnJlbW92ZUV2ZW50TGlzdGVuZXIoT3QsIG4sICExKSwgdC5yZW1vdmVFdmVudExpc3RlbmVyKFJ0LCBuLCAhMSkpCiAgICAgICAgfSh0LCBpLCBvKSA6ICFUdCB8fCAiZGJsY2xpY2siICE9PSBpIHx8IGJ0ICYmIGx0ID8gInJlbW92ZUV2ZW50TGlzdGVuZXIiIGluIHQgPyAibW91c2V3aGVlbCIgPT09IGkgPyB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9ud2hlZWwiIGluIHQgPyAid2hlZWwiIDogIm1vdXNld2hlZWwiLCBzLCAhMSkgOiB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiID09PSBpID8gIm1vdXNlb3ZlciIgOiAibW91c2VsZWF2ZSIgPT09IGkgPyAibW91c2VvdXQiIDogaSwgcywgITEpIDogImRldGFjaEV2ZW50IiBpbiB0ICYmIHQuZGV0YWNoRXZlbnQoIm9uIiArIGksIHMpIDogSnQodCwgbyksIHRba2ldW29dID0gbnVsbAogICAgfQoKICAgIGZ1bmN0aW9uIE9pKHQpIHsKICAgICAgICByZXR1cm4gdC5zdG9wUHJvcGFnYXRpb24gPyB0LnN0b3BQcm9wYWdhdGlvbigpIDogdC5vcmlnaW5hbEV2ZW50ID8gdC5vcmlnaW5hbEV2ZW50Ll9zdG9wcGVkID0gITAgOiB0LmNhbmNlbEJ1YmJsZSA9ICEwLCBHaSh0KSwgdGhpcwogICAgfQoKICAgIGZ1bmN0aW9uIFJpKHQpIHsKICAgICAgICByZXR1cm4gQWkodCwgIm1vdXNld2hlZWwiLCBPaSksIHRoaXMKICAgIH0KCiAgICBmdW5jdGlvbiBOaSh0KSB7CiAgICAgICAgcmV0dXJuIEVpKHQsICJtb3VzZWRvd24gdG91Y2hzdGFydCBkYmxjbGljayIsIE9pKSwgQWkodCwgImNsaWNrIiwgcWkpLCB0aGlzCiAgICB9CgogICAgZnVuY3Rpb24gRGkodCkgewogICAgICAgIHJldHVybiB0LnByZXZlbnREZWZhdWx0ID8gdC5wcmV2ZW50RGVmYXVsdCgpIDogdC5yZXR1cm5WYWx1ZSA9ICExLCB0aGlzCiAgICB9CgogICAgZnVuY3Rpb24gamkodCkgewogICAgICAgIHJldHVybiBEaSh0KSwgT2kodCksIHRoaXMKICAgIH0KCiAgICBmdW5jdGlvbiBXaSh0LCBpKSB7CiAgICAgICAgaWYgKCFpKSByZXR1cm4gbmV3IEIodC5jbGllbnRYLCB0LmNsaWVudFkpOwogICAgICAgIHZhciBlID0gU2koaSksCiAgICAgICAgICAgIG4gPSBlLmJvdW5kaW5nQ2xpZW50UmVjdDsKICAgICAgICByZXR1cm4gbmV3IEIoKHQuY2xpZW50WCAtIG4ubGVmdCkgLyBlLnggLSBpLmNsaWVudExlZnQsICh0LmNsaWVudFkgLSBuLnRvcCkgLyBlLnkgLSBpLmNsaWVudFRvcCkKICAgIH0KICAgIHZhciBIaSA9IG10ICYmIGx0ID8gMiAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIDogY3QgPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IDE7CgogICAgZnVuY3Rpb24gRmkodCkgewogICAgICAgIHJldHVybiBudCA/IHQud2hlZWxEZWx0YVkgLyAyIDogdC5kZWx0YVkgJiYgMCA9PT0gdC5kZWx0YU1vZGUgPyAtdC5kZWx0YVkgLyBIaSA6IHQuZGVsdGFZICYmIDEgPT09IHQuZGVsdGFNb2RlID8gMjAgKiAtdC5kZWx0YVkgOiB0LmRlbHRhWSAmJiAyID09PSB0LmRlbHRhTW9kZSA/IDYwICogLXQuZGVsdGFZIDogdC5kZWx0YVggfHwgdC5kZWx0YVogPyAwIDogdC53aGVlbERlbHRhID8gKHQud2hlZWxEZWx0YVkgfHwgdC53aGVlbERlbHRhKSAvIDIgOiB0LmRldGFpbCAmJiBNYXRoLmFicyh0LmRldGFpbCkgPCAzMjc2NSA/IDIwICogLXQuZGV0YWlsIDogdC5kZXRhaWwgPyB0LmRldGFpbCAvIC0zMjc2NSAqIDYwIDogMAogICAgfQogICAgdmFyIFVpLCBWaSA9IHt9OwoKICAgIGZ1bmN0aW9uIHFpKHQpIHsKICAgICAgICBWaVt0LnR5cGVdID0gITAKICAgIH0KCiAgICBmdW5jdGlvbiBHaSh0KSB7CiAgICAgICAgdmFyIGkgPSBWaVt0LnR5cGVdOwogICAgICAgIHJldHVybiBWaVt0LnR5cGVdID0gITEsIGkKICAgIH0KCiAgICBmdW5jdGlvbiBLaSh0LCBpKSB7CiAgICAgICAgdmFyIGUgPSBpLnJlbGF0ZWRUYXJnZXQ7CiAgICAgICAgaWYgKCFlKSByZXR1cm4gITA7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZm9yICg7IGUgJiYgZSAhPT0gdDspIGUgPSBlLnBhcmVudE5vZGUKICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0KICAgICAgICByZXR1cm4gZSAhPT0gdAogICAgfQogICAgdmFyIFlpID0gKE9iamVjdC5mcmVlemUgfHwgT2JqZWN0KSh7CiAgICAgICAgICAgIG9uOiBFaSwKICAgICAgICAgICAgb2ZmOiBCaSwKICAgICAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBPaSwKICAgICAgICAgICAgZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uOiBSaSwKICAgICAgICAgICAgZGlzYWJsZUNsaWNrUHJvcGFnYXRpb246IE5pLAogICAgICAgICAgICBwcmV2ZW50RGVmYXVsdDogRGksCiAgICAgICAgICAgIHN0b3A6IGppLAogICAgICAgICAgICBnZXRNb3VzZVBvc2l0aW9uOiBXaSwKICAgICAgICAgICAgZ2V0V2hlZWxEZWx0YTogRmksCiAgICAgICAgICAgIGZha2VTdG9wOiBxaSwKICAgICAgICAgICAgc2tpcHBlZDogR2ksCiAgICAgICAgICAgIGlzRXh0ZXJuYWxUYXJnZXQ6IEtpLAogICAgICAgICAgICBhZGRMaXN0ZW5lcjogRWksCiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyOiBCaQogICAgICAgIH0pLAogICAgICAgIFhpID0gay5leHRlbmQoewogICAgICAgICAgICBydW46IGZ1bmN0aW9uKHQsIGksIGUsIG4pIHsKICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpLCB0aGlzLl9lbCA9IHQsIHRoaXMuX2luUHJvZ3Jlc3MgPSAhMCwgdGhpcy5fZHVyYXRpb24gPSBlIHx8IC4yNSwgdGhpcy5fZWFzZU91dFBvd2VyID0gMSAvIE1hdGgubWF4KG4gfHwgLjUsIC4yKSwgdGhpcy5fc3RhcnRQb3MgPSBQaSh0KSwgdGhpcy5fb2Zmc2V0ID0gaS5zdWJ0cmFjdCh0aGlzLl9zdGFydFBvcyksIHRoaXMuX3N0YXJ0VGltZSA9ICtuZXcgRGF0ZSwgdGhpcy5maXJlKCJzdGFydCIpLCB0aGlzLl9hbmltYXRlKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9pblByb2dyZXNzICYmICh0aGlzLl9zdGVwKCEwKSwgdGhpcy5fY29tcGxldGUoKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2FuaW1hdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fYW5pbUlkID0gTSh0aGlzLl9hbmltYXRlLCB0aGlzKSwgdGhpcy5fc3RlcCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9zdGVwOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9ICtuZXcgRGF0ZSAtIHRoaXMuX3N0YXJ0VGltZSwKICAgICAgICAgICAgICAgICAgICBlID0gMWUzICogdGhpcy5fZHVyYXRpb247CiAgICAgICAgICAgICAgICBpIDwgZSA/IHRoaXMuX3J1bkZyYW1lKHRoaXMuX2Vhc2VPdXQoaSAvIGUpLCB0KSA6ICh0aGlzLl9ydW5GcmFtZSgxKSwgdGhpcy5fY29tcGxldGUoKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3J1bkZyYW1lOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX3N0YXJ0UG9zLmFkZCh0aGlzLl9vZmZzZXQubXVsdGlwbHlCeSh0KSk7CiAgICAgICAgICAgICAgICBpICYmIGUuX3JvdW5kKCksIHdpKHRoaXMuX2VsLCBlKSwgdGhpcy5maXJlKCJzdGVwIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2NvbXBsZXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIEModGhpcy5fYW5pbUlkKSwgdGhpcy5faW5Qcm9ncmVzcyA9ICExLCB0aGlzLmZpcmUoImVuZCIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9lYXNlT3V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMSAtIE1hdGgucG93KDEgLSB0LCB0aGlzLl9lYXNlT3V0UG93ZXIpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwKICAgICAgICBKaSA9IGsuZXh0ZW5kKHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgY3JzOiBYLAogICAgICAgICAgICAgICAgY2VudGVyOiB2b2lkIDAsCiAgICAgICAgICAgICAgICB6b29tOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBtaW5ab29tOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBtYXhab29tOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgbWF4Qm91bmRzOiB2b2lkIDAsCiAgICAgICAgICAgICAgICByZW5kZXJlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgem9vbUFuaW1hdGlvbjogITAsCiAgICAgICAgICAgICAgICB6b29tQW5pbWF0aW9uVGhyZXNob2xkOiA0LAogICAgICAgICAgICAgICAgZmFkZUFuaW1hdGlvbjogITAsCiAgICAgICAgICAgICAgICBtYXJrZXJab29tQW5pbWF0aW9uOiAhMCwKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTNETGltaXQ6IDgzODg2MDgsCiAgICAgICAgICAgICAgICB6b29tU25hcDogMSwKICAgICAgICAgICAgICAgIHpvb21EZWx0YTogMSwKICAgICAgICAgICAgICAgIHRyYWNrUmVzaXplOiAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICBpID0gcCh0aGlzLCBpKSwgdGhpcy5faGFuZGxlcnMgPSBbXSwgdGhpcy5fbGF5ZXJzID0ge30sIHRoaXMuX3pvb21Cb3VuZExheWVycyA9IHt9LCB0aGlzLl9zaXplQ2hhbmdlZCA9ICEwLCB0aGlzLl9pbml0Q29udGFpbmVyKHQpLCB0aGlzLl9pbml0TGF5b3V0KCksIHRoaXMuX29uUmVzaXplID0gYSh0aGlzLl9vblJlc2l6ZSwgdGhpcyksIHRoaXMuX2luaXRFdmVudHMoKSwgaS5tYXhCb3VuZHMgJiYgdGhpcy5zZXRNYXhCb3VuZHMoaS5tYXhCb3VuZHMpLCB2b2lkIDAgIT09IGkuem9vbSAmJiAodGhpcy5fem9vbSA9IHRoaXMuX2xpbWl0Wm9vbShpLnpvb20pKSwgaS5jZW50ZXIgJiYgdm9pZCAwICE9PSBpLnpvb20gJiYgdGhpcy5zZXRWaWV3KFcoaS5jZW50ZXIpLCBpLnpvb20sIHsKICAgICAgICAgICAgICAgICAgICByZXNldDogITAKICAgICAgICAgICAgICAgIH0pLCB0aGlzLmNhbGxJbml0SG9va3MoKSwgdGhpcy5fem9vbUFuaW1hdGVkID0gb2kgJiYgeXQgJiYgIXp0ICYmIHRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uLCB0aGlzLl96b29tQW5pbWF0ZWQgJiYgKHRoaXMuX2NyZWF0ZUFuaW1Qcm94eSgpLCBFaSh0aGlzLl9wcm94eSwgc2ksIHRoaXMuX2NhdGNoVHJhbnNpdGlvbkVuZCwgdGhpcykpLCB0aGlzLl9hZGRMYXllcnModGhpcy5vcHRpb25zLmxheWVycykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0VmlldzogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICAgICAgaWYgKChpID0gdm9pZCAwID09PSBpID8gdGhpcy5fem9vbSA6IHRoaXMuX2xpbWl0Wm9vbShpKSwgdCA9IHRoaXMuX2xpbWl0Q2VudGVyKFcodCksIGksIHRoaXMub3B0aW9ucy5tYXhCb3VuZHMpLCBlID0gZSB8fCB7fSwgdGhpcy5fc3RvcCgpLCB0aGlzLl9sb2FkZWQgJiYgIWUucmVzZXQgJiYgITAgIT09IGUpICYmICh2b2lkIDAgIT09IGUuYW5pbWF0ZSAmJiAoZS56b29tID0gaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU6IGUuYW5pbWF0ZQogICAgICAgICAgICAgICAgICAgIH0sIGUuem9vbSksIGUucGFuID0gaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU6IGUuYW5pbWF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IGUuZHVyYXRpb24KICAgICAgICAgICAgICAgICAgICB9LCBlLnBhbikpLCB0aGlzLl96b29tICE9PSBpID8gdGhpcy5fdHJ5QW5pbWF0ZWRab29tICYmIHRoaXMuX3RyeUFuaW1hdGVkWm9vbSh0LCBpLCBlLnpvb20pIDogdGhpcy5fdHJ5QW5pbWF0ZWRQYW4odCwgZS5wYW4pKSkgcmV0dXJuIGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLCB0aGlzOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc2V0Vmlldyh0LCBpKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRab29tOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGVkID8gdGhpcy5zZXRWaWV3KHRoaXMuZ2V0Q2VudGVyKCksIHQsIHsKICAgICAgICAgICAgICAgICAgICB6b29tOiBpCiAgICAgICAgICAgICAgICB9KSA6ICh0aGlzLl96b29tID0gdCwgdGhpcykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgem9vbUluOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHQgfHwgKHl0ID8gdGhpcy5vcHRpb25zLnpvb21EZWx0YSA6IDEpLCB0aGlzLnNldFpvb20odGhpcy5fem9vbSArIHQsIGkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHpvb21PdXQ6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdCB8fCAoeXQgPyB0aGlzLm9wdGlvbnMuem9vbURlbHRhIDogMSksIHRoaXMuc2V0Wm9vbSh0aGlzLl96b29tIC0gdCwgaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0Wm9vbUFyb3VuZDogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmdldFpvb21TY2FsZShpKSwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5nZXRTaXplKCkuZGl2aWRlQnkoMiksCiAgICAgICAgICAgICAgICAgICAgcyA9ICh0IGluc3RhbmNlb2YgQiA/IHQgOiB0aGlzLmxhdExuZ1RvQ29udGFpbmVyUG9pbnQodCkpLnN1YnRyYWN0KG8pLm11bHRpcGx5QnkoMSAtIDEgLyBuKSwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5jb250YWluZXJQb2ludFRvTGF0TG5nKG8uYWRkKHMpKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZpZXcociwgaSwgewogICAgICAgICAgICAgICAgICAgIHpvb206IGUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRCb3VuZHNDZW50ZXJab29tOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICBpID0gaSB8fCB7fSwgdCA9IHQuZ2V0Qm91bmRzID8gdC5nZXRCb3VuZHMoKSA6IEQodCk7CiAgICAgICAgICAgICAgICB2YXIgZSA9IEkoaS5wYWRkaW5nVG9wTGVmdCB8fCBpLnBhZGRpbmcgfHwgWzAsIDBdKSwKICAgICAgICAgICAgICAgICAgICBuID0gSShpLnBhZGRpbmdCb3R0b21SaWdodCB8fCBpLnBhZGRpbmcgfHwgWzAsIDBdKSwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5nZXRCb3VuZHNab29tKHQsICExLCBlLmFkZChuKSk7CiAgICAgICAgICAgICAgICBpZiAoKG8gPSAibnVtYmVyIiA9PSB0eXBlb2YgaS5tYXhab29tID8gTWF0aC5taW4oaS5tYXhab29tLCBvKSA6IG8pID09PSAxIC8gMCkgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IHQuZ2V0Q2VudGVyKCksCiAgICAgICAgICAgICAgICAgICAgem9vbTogbwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHZhciBzID0gbi5zdWJ0cmFjdChlKS5kaXZpZGVCeSgyKSwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5wcm9qZWN0KHQuZ2V0U291dGhXZXN0KCksIG8pLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLnByb2plY3QodC5nZXROb3J0aEVhc3QoKSwgbyk7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGNlbnRlcjogdGhpcy51bnByb2plY3Qoci5hZGQoYSkuZGl2aWRlQnkoMikuYWRkKHMpLCBvKSwKICAgICAgICAgICAgICAgICAgICB6b29tOiBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZpdEJvdW5kczogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgaWYgKCEodCA9IEQodCkpLmlzVmFsaWQoKSkgdGhyb3cgbmV3IEVycm9yKCJCb3VuZHMgYXJlIG5vdCB2YWxpZC4iKTsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZ2V0Qm91bmRzQ2VudGVyWm9vbSh0LCBpKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZpZXcoZS5jZW50ZXIsIGUuem9vbSwgaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZml0V29ybGQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpdEJvdW5kcyhbCiAgICAgICAgICAgICAgICAgICAgWy05MCwgLTE4MF0sCiAgICAgICAgICAgICAgICAgICAgWzkwLCAxODBdCiAgICAgICAgICAgICAgICBdLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBwYW5UbzogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Vmlldyh0LCB0aGlzLl96b29tLCB7CiAgICAgICAgICAgICAgICAgICAgcGFuOiBpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBwYW5CeTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgaWYgKGkgPSBpIHx8IHt9LCAhKHQgPSBJKHQpLnJvdW5kKCkpLnggJiYgIXQueSkgcmV0dXJuIHRoaXMuZmlyZSgibW92ZWVuZCIpOwogICAgICAgICAgICAgICAgaWYgKCEwICE9PSBpLmFuaW1hdGUgJiYgIXRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKHQpKSByZXR1cm4gdGhpcy5fcmVzZXRWaWV3KHRoaXMudW5wcm9qZWN0KHRoaXMucHJvamVjdCh0aGlzLmdldENlbnRlcigpKS5hZGQodCkpLCB0aGlzLmdldFpvb20oKSksIHRoaXM7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGFuQW5pbSB8fCAodGhpcy5fcGFuQW5pbSA9IG5ldyBYaSwgdGhpcy5fcGFuQW5pbS5vbih7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA6IHRoaXMuX29uUGFuVHJhbnNpdGlvblN0ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogdGhpcy5fb25QYW5UcmFuc2l0aW9uRW5kCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcykpLCBpLm5vTW92ZVN0YXJ0IHx8IHRoaXMuZmlyZSgibW92ZXN0YXJ0IiksICExICE9PSBpLmFuaW1hdGUpIHsKICAgICAgICAgICAgICAgICAgICBwaSh0aGlzLl9tYXBQYW5lLCAibGVhZmxldC1wYW4tYW5pbSIpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZ2V0TWFwUGFuZVBvcygpLnN1YnRyYWN0KHQpLnJvdW5kKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFuQW5pbS5ydW4odGhpcy5fbWFwUGFuZSwgZSwgaS5kdXJhdGlvbiB8fCAuMjUsIGkuZWFzZUxpbmVhcml0eSkKICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLl9yYXdQYW5CeSh0KSwgdGhpcy5maXJlKCJtb3ZlIikuZmlyZSgibW92ZWVuZCIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmx5VG86IGZ1bmN0aW9uKG4sIG8sIHQpIHsKICAgICAgICAgICAgICAgIGlmICghMSA9PT0gKHQgPSB0IHx8IHt9KS5hbmltYXRlIHx8ICF5dCkgcmV0dXJuIHRoaXMuc2V0VmlldyhuLCBvLCB0KTsKICAgICAgICAgICAgICAgIHRoaXMuX3N0b3AoKTsKICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy5wcm9qZWN0KHRoaXMuZ2V0Q2VudGVyKCkpLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnByb2plY3QobiksCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZ2V0U2l6ZSgpLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLl96b29tOwogICAgICAgICAgICAgICAgbiA9IFcobiksIG8gPSB2b2lkIDAgPT09IG8gPyBhIDogbzsKICAgICAgICAgICAgICAgIHZhciBoID0gTWF0aC5tYXgoaS54LCBpLnkpLAogICAgICAgICAgICAgICAgICAgIHUgPSBoICogdGhpcy5nZXRab29tU2NhbGUoYSwgbyksCiAgICAgICAgICAgICAgICAgICAgbCA9IHIuZGlzdGFuY2VUbyhzKSB8fCAxLAogICAgICAgICAgICAgICAgICAgIGMgPSAxLjQyLAogICAgICAgICAgICAgICAgICAgIF8gPSBjICogYzsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9ICh1ICogdSAtIGggKiBoICsgKHQgPyAtMSA6IDEpICogXyAqIF8gKiBsICogbCkgLyAoMiAqICh0ID8gdSA6IGgpICogXyAqIGwpLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gTWF0aC5zcXJ0KGkgKiBpICsgMSkgLSBpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIDwgMWUtOSA/IC0xOCA6IE1hdGgubG9nKGUpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gZCh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChNYXRoLmV4cCh0KSAtIE1hdGguZXhwKC10KSkgLyAyCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gcCh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChNYXRoLmV4cCh0KSArIE1hdGguZXhwKC10KSkgLyAyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbSA9IGUoMCk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gZih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggKiAocChtKSAqIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQodCkgLyBwKHQpCiAgICAgICAgICAgICAgICAgICAgfShtICsgYyAqIHQpIC0gZChtKSkgLyBfCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgZyA9IERhdGUubm93KCksCiAgICAgICAgICAgICAgICAgICAgdiA9IChlKDEpIC0gbSkgLyBjLAogICAgICAgICAgICAgICAgICAgIHkgPSB0LmR1cmF0aW9uID8gMWUzICogdC5kdXJhdGlvbiA6IDFlMyAqIHYgKiAuODsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb3ZlU3RhcnQoITAsIHQubm9Nb3ZlU3RhcnQpLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gKERhdGUubm93KCkgLSBnKSAvIHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxIC0gTWF0aC5wb3coMSAtIHQsIDEuNSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oaSkgKiB2OwogICAgICAgICAgICAgICAgICAgICAgICBpIDw9IDEgPyAodGhpcy5fZmx5VG9GcmFtZSA9IE0odCwgdGhpcyksIHRoaXMuX21vdmUodGhpcy51bnByb2plY3Qocy5hZGQoci5zdWJ0cmFjdChzKS5tdWx0aXBseUJ5KGYoZSkgLyBsKSksIGEpLCB0aGlzLmdldFNjYWxlWm9vbShoIC8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggKiAocChtKSAvIHAobSArIGMgKiB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfShlKSwgYSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZseVRvOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiB0aGlzLl9tb3ZlKG4sIG8pLl9tb3ZlRW5kKCEwKQogICAgICAgICAgICAgICAgICAgIH0uY2FsbCh0aGlzKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBmbHlUb0JvdW5kczogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nZXRCb3VuZHNDZW50ZXJab29tKHQsIGkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmx5VG8oZS5jZW50ZXIsIGUuem9vbSwgaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0TWF4Qm91bmRzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKHQgPSBEKHQpKS5pc1ZhbGlkKCkgPyAodGhpcy5vcHRpb25zLm1heEJvdW5kcyAmJiB0aGlzLm9mZigibW92ZWVuZCIsIHRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcyksIHRoaXMub3B0aW9ucy5tYXhCb3VuZHMgPSB0LCB0aGlzLl9sb2FkZWQgJiYgdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKCksIHRoaXMub24oIm1vdmVlbmQiLCB0aGlzLl9wYW5JbnNpZGVNYXhCb3VuZHMpKSA6ICh0aGlzLm9wdGlvbnMubWF4Qm91bmRzID0gbnVsbCwgdGhpcy5vZmYoIm1vdmVlbmQiLCB0aGlzLl9wYW5JbnNpZGVNYXhCb3VuZHMpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRNaW5ab29tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMub3B0aW9ucy5taW5ab29tOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5taW5ab29tID0gdCwgdGhpcy5fbG9hZGVkICYmIGkgIT09IHQgJiYgKHRoaXMuZmlyZSgiem9vbWxldmVsc2NoYW5nZSIpLCB0aGlzLmdldFpvb20oKSA8IHRoaXMub3B0aW9ucy5taW5ab29tKSA/IHRoaXMuc2V0Wm9vbSh0KSA6IHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0TWF4Wm9vbTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLm9wdGlvbnMubWF4Wm9vbTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWF4Wm9vbSA9IHQsIHRoaXMuX2xvYWRlZCAmJiBpICE9PSB0ICYmICh0aGlzLmZpcmUoInpvb21sZXZlbHNjaGFuZ2UiKSwgdGhpcy5nZXRab29tKCkgPiB0aGlzLm9wdGlvbnMubWF4Wm9vbSkgPyB0aGlzLnNldFpvb20odCkgOiB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBhbkluc2lkZUJvdW5kczogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdGhpcy5fZW5mb3JjaW5nQm91bmRzID0gITA7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0Q2VudGVyKCksCiAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuX2xpbWl0Q2VudGVyKGUsIHRoaXMuX3pvb20sIEQodCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUuZXF1YWxzKG4pIHx8IHRoaXMucGFuVG8obiwgaSksIHRoaXMuX2VuZm9yY2luZ0JvdW5kcyA9ICExLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBhbkluc2lkZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBJKChpID0gaSB8fCB7fSkucGFkZGluZ1RvcExlZnQgfHwgaS5wYWRkaW5nIHx8IFswLCAwXSksCiAgICAgICAgICAgICAgICAgICAgbiA9IEkoaS5wYWRkaW5nQm90dG9tUmlnaHQgfHwgaS5wYWRkaW5nIHx8IFswLCAwXSksCiAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZ2V0Q2VudGVyKCksCiAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMucHJvamVjdChvKSwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5wcm9qZWN0KHQpLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmdldFBpeGVsQm91bmRzKCksCiAgICAgICAgICAgICAgICAgICAgaCA9IGEuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIpLAogICAgICAgICAgICAgICAgICAgIHUgPSBSKFthLm1pbi5hZGQoZSksIGEubWF4LnN1YnRyYWN0KG4pXSk7CiAgICAgICAgICAgICAgICBpZiAoIXUuY29udGFpbnMocikpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbmZvcmNpbmdCb3VuZHMgPSAhMDsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHMuc3VidHJhY3QociksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBJKHIueCArIGwueCwgci55ICsgbC55KTsKICAgICAgICAgICAgICAgICAgICAoci54IDwgdS5taW4ueCB8fCByLnggPiB1Lm1heC54KSAmJiAoYy54ID0gcy54IC0gbC54LCAwIDwgbC54ID8gYy54ICs9IGgueCAtIGUueCA6IGMueCAtPSBoLnggLSBuLngpLCAoci55IDwgdS5taW4ueSB8fCByLnkgPiB1Lm1heC55KSAmJiAoYy55ID0gcy55IC0gbC55LCAwIDwgbC55ID8gYy55ICs9IGgueSAtIGUueSA6IGMueSAtPSBoLnkgLSBuLnkpLCB0aGlzLnBhblRvKHRoaXMudW5wcm9qZWN0KGMpLCBpKSwgdGhpcy5fZW5mb3JjaW5nQm91bmRzID0gITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGludmFsaWRhdGVTaXplOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2xvYWRlZCkgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICB0ID0gaCh7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZTogITEsCiAgICAgICAgICAgICAgICAgICAgcGFuOiAhMAogICAgICAgICAgICAgICAgfSwgITAgPT09IHQgPyB7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZTogITAKICAgICAgICAgICAgICAgIH0gOiB0KTsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5nZXRTaXplKCk7CiAgICAgICAgICAgICAgICB0aGlzLl9zaXplQ2hhbmdlZCA9ICEwLCB0aGlzLl9sYXN0Q2VudGVyID0gbnVsbDsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRTaXplKCksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkuZGl2aWRlQnkoMikucm91bmQoKSwKICAgICAgICAgICAgICAgICAgICBvID0gZS5kaXZpZGVCeSgyKS5yb3VuZCgpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuLnN1YnRyYWN0KG8pOwogICAgICAgICAgICAgICAgcmV0dXJuIHMueCB8fCBzLnkgPyAodC5hbmltYXRlICYmIHQucGFuID8gdGhpcy5wYW5CeShzKSA6ICh0LnBhbiAmJiB0aGlzLl9yYXdQYW5CeShzKSwgdGhpcy5maXJlKCJtb3ZlIiksIHQuZGVib3VuY2VNb3ZlZW5kID8gKGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLCB0aGlzLl9zaXplVGltZXIgPSBzZXRUaW1lb3V0KGEodGhpcy5maXJlLCB0aGlzLCAibW92ZWVuZCIpLCAyMDApKSA6IHRoaXMuZmlyZSgibW92ZWVuZCIpKSwgdGhpcy5maXJlKCJyZXNpemUiLCB7CiAgICAgICAgICAgICAgICAgICAgb2xkU2l6ZTogaSwKICAgICAgICAgICAgICAgICAgICBuZXdTaXplOiBlCiAgICAgICAgICAgICAgICB9KSkgOiB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Wm9vbSh0aGlzLl9saW1pdFpvb20odGhpcy5fem9vbSkpLCB0aGlzLm9wdGlvbnMuem9vbVNuYXAgfHwgdGhpcy5maXJlKCJ2aWV3cmVzZXQiKSwgdGhpcy5fc3RvcCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxvY2F0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKHQgPSB0aGlzLl9sb2NhdGVPcHRpb25zID0gaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDFlNCwKICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2g6ICExCiAgICAgICAgICAgICAgICAgICAgfSwgdCksICEoImdlb2xvY2F0aW9uIiBpbiBuYXZpZ2F0b3IpKSByZXR1cm4gdGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcih7CiAgICAgICAgICAgICAgICAgICAgY29kZTogMCwKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAiR2VvbG9jYXRpb24gbm90IHN1cHBvcnRlZC4iCiAgICAgICAgICAgICAgICB9KSwgdGhpczsKICAgICAgICAgICAgICAgIHZhciBpID0gYSh0aGlzLl9oYW5kbGVHZW9sb2NhdGlvblJlc3BvbnNlLCB0aGlzKSwKICAgICAgICAgICAgICAgICAgICBlID0gYSh0aGlzLl9oYW5kbGVHZW9sb2NhdGlvbkVycm9yLCB0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiB0LndhdGNoID8gdGhpcy5fbG9jYXRpb25XYXRjaElkID0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oaSwgZSwgdCkgOiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGksIGUsIHQpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0b3BMb2NhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5nZW9sb2NhdGlvbiAmJiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCAmJiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh0aGlzLl9sb2NhdGlvbldhdGNoSWQpLCB0aGlzLl9sb2NhdGVPcHRpb25zICYmICh0aGlzLl9sb2NhdGVPcHRpb25zLnNldFZpZXcgPSAhMSksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2hhbmRsZUdlb2xvY2F0aW9uRXJyb3I6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdC5jb2RlLAogICAgICAgICAgICAgICAgICAgIGUgPSB0Lm1lc3NhZ2UgfHwgKDEgPT09IGkgPyAicGVybWlzc2lvbiBkZW5pZWQiIDogMiA9PT0gaSA/ICJwb3NpdGlvbiB1bmF2YWlsYWJsZSIgOiAidGltZW91dCIpOwogICAgICAgICAgICAgICAgdGhpcy5fbG9jYXRlT3B0aW9ucy5zZXRWaWV3ICYmICF0aGlzLl9sb2FkZWQgJiYgdGhpcy5maXRXb3JsZCgpLCB0aGlzLmZpcmUoImxvY2F0aW9uZXJyb3IiLCB7CiAgICAgICAgICAgICAgICAgICAgY29kZTogaSwKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAiR2VvbG9jYXRpb24gZXJyb3I6ICIgKyBlICsgIi4iCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfaGFuZGxlR2VvbG9jYXRpb25SZXNwb25zZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSBuZXcgaih0LmNvb3Jkcy5sYXRpdHVkZSwgdC5jb29yZHMubG9uZ2l0dWRlKSwKICAgICAgICAgICAgICAgICAgICBlID0gaS50b0JvdW5kcygyICogdC5jb29yZHMuYWNjdXJhY3kpLAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9sb2NhdGVPcHRpb25zOwogICAgICAgICAgICAgICAgaWYgKG4uc2V0VmlldykgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5nZXRCb3VuZHNab29tKGUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmlldyhpLCBuLm1heFpvb20gPyBNYXRoLm1pbihvLCBuLm1heFpvb20pIDogbykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBzID0gewogICAgICAgICAgICAgICAgICAgIGxhdGxuZzogaSwKICAgICAgICAgICAgICAgICAgICBib3VuZHM6IGUsCiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiB0LnRpbWVzdGFtcAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdC5jb29yZHMpICJudW1iZXIiID09IHR5cGVvZiB0LmNvb3Jkc1tyXSAmJiAoc1tyXSA9IHQuY29vcmRzW3JdKTsKICAgICAgICAgICAgICAgIHRoaXMuZmlyZSgibG9jYXRpb25mb3VuZCIsIHMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFkZEhhbmRsZXI6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIGlmICghaSkgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXNbdF0gPSBuZXcgaSh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVycy5wdXNoKGUpLCB0aGlzLm9wdGlvbnNbdF0gJiYgZS5lbmFibGUoKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuX2luaXRFdmVudHMoITApLCB0aGlzLl9jb250YWluZXJJZCAhPT0gdGhpcy5fY29udGFpbmVyLl9sZWFmbGV0X2lkKSB0aHJvdyBuZXcgRXJyb3IoIk1hcCBjb250YWluZXIgaXMgYmVpbmcgcmV1c2VkIGJ5IGFub3RoZXIgaW5zdGFuY2UiKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NvbnRhaW5lci5fbGVhZmxldF9pZCwgZGVsZXRlIHRoaXMuX2NvbnRhaW5lcklkCiAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLl9sZWFmbGV0X2lkID0gdm9pZCAwLCB0aGlzLl9jb250YWluZXJJZCA9IHZvaWQgMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICBmb3IgKHQgaW4gdm9pZCAwICE9PSB0aGlzLl9sb2NhdGlvbldhdGNoSWQgJiYgdGhpcy5zdG9wTG9jYXRlKCksIHRoaXMuX3N0b3AoKSwgdWkodGhpcy5fbWFwUGFuZSksIHRoaXMuX2NsZWFyQ29udHJvbFBvcyAmJiB0aGlzLl9jbGVhckNvbnRyb2xQb3MoKSwgdGhpcy5fcmVzaXplUmVxdWVzdCAmJiAoQyh0aGlzLl9yZXNpemVSZXF1ZXN0KSwgdGhpcy5fcmVzaXplUmVxdWVzdCA9IG51bGwpLCB0aGlzLl9jbGVhckhhbmRsZXJzKCksIHRoaXMuX2xvYWRlZCAmJiB0aGlzLmZpcmUoInVubG9hZCIpLCB0aGlzLl9sYXllcnMpIHRoaXMuX2xheWVyc1t0XS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIGZvciAodCBpbiB0aGlzLl9wYW5lcykgdWkodGhpcy5fcGFuZXNbdF0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xheWVycyA9IFtdLCB0aGlzLl9wYW5lcyA9IFtdLCBkZWxldGUgdGhpcy5fbWFwUGFuZSwgZGVsZXRlIHRoaXMuX3JlbmRlcmVyLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZVBhbmU6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gaGkoImRpdiIsICJsZWFmbGV0LXBhbmUiICsgKHQgPyAiIGxlYWZsZXQtIiArIHQucmVwbGFjZSgiUGFuZSIsICIiKSArICItcGFuZSIgOiAiIiksIGkgfHwgdGhpcy5fbWFwUGFuZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiAodGhpcy5fcGFuZXNbdF0gPSBlKSwgZQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRDZW50ZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrSWZMb2FkZWQoKSwgdGhpcy5fbGFzdENlbnRlciAmJiAhdGhpcy5fbW92ZWQoKSA/IHRoaXMuX2xhc3RDZW50ZXIgOiB0aGlzLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFpvb206IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3pvb20KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0Qm91bmRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5nZXRQaXhlbEJvdW5kcygpOwogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOKHRoaXMudW5wcm9qZWN0KHQuZ2V0Qm90dG9tTGVmdCgpKSwgdGhpcy51bnByb2plY3QodC5nZXRUb3BSaWdodCgpKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TWluWm9vbTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0aGlzLm9wdGlvbnMubWluWm9vbSA/IHRoaXMuX2xheWVyc01pblpvb20gfHwgMCA6IHRoaXMub3B0aW9ucy5taW5ab29tCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldE1heFpvb206IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdGhpcy5vcHRpb25zLm1heFpvb20gPyB2b2lkIDAgPT09IHRoaXMuX2xheWVyc01heFpvb20gPyAxIC8gMCA6IHRoaXMuX2xheWVyc01heFpvb20gOiB0aGlzLm9wdGlvbnMubWF4Wm9vbQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRCb3VuZHNab29tOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICB0ID0gRCh0KSwgZSA9IEkoZSB8fCBbMCwgMF0pOwogICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmdldFpvb20oKSB8fCAwLAogICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmdldE1pblpvb20oKSwKICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRNYXhab29tKCksCiAgICAgICAgICAgICAgICAgICAgciA9IHQuZ2V0Tm9ydGhXZXN0KCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHQuZ2V0U291dGhFYXN0KCksCiAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMuZ2V0U2l6ZSgpLnN1YnRyYWN0KGUpLAogICAgICAgICAgICAgICAgICAgIHUgPSBSKHRoaXMucHJvamVjdChhLCBuKSwgdGhpcy5wcm9qZWN0KHIsIG4pKS5nZXRTaXplKCksCiAgICAgICAgICAgICAgICAgICAgbCA9IHl0ID8gdGhpcy5vcHRpb25zLnpvb21TbmFwIDogMSwKICAgICAgICAgICAgICAgICAgICBjID0gaC54IC8gdS54LAogICAgICAgICAgICAgICAgICAgIF8gPSBoLnkgLyB1LnksCiAgICAgICAgICAgICAgICAgICAgZCA9IGkgPyBNYXRoLm1heChjLCBfKSA6IE1hdGgubWluKGMsIF8pOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gPSB0aGlzLmdldFNjYWxlWm9vbShkLCBuKSwgbCAmJiAobiA9IE1hdGgucm91bmQobiAvIChsIC8gMTAwKSkgKiAobCAvIDEwMCksIG4gPSBpID8gTWF0aC5jZWlsKG4gLyBsKSAqIGwgOiBNYXRoLmZsb29yKG4gLyBsKSAqIGwpLCBNYXRoLm1heChvLCBNYXRoLm1pbihzLCBuKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0U2l6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZSAmJiAhdGhpcy5fc2l6ZUNoYW5nZWQgfHwgKHRoaXMuX3NpemUgPSBuZXcgQih0aGlzLl9jb250YWluZXIuY2xpZW50V2lkdGggfHwgMCwgdGhpcy5fY29udGFpbmVyLmNsaWVudEhlaWdodCB8fCAwKSwgdGhpcy5fc2l6ZUNoYW5nZWQgPSAhMSksIHRoaXMuX3NpemUuY2xvbmUoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRQaXhlbEJvdW5kczogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nZXRUb3BMZWZ0UG9pbnQodCwgaSk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE8oZSwgZS5hZGQodGhpcy5nZXRTaXplKCkpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRQaXhlbE9yaWdpbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tJZkxvYWRlZCgpLCB0aGlzLl9waXhlbE9yaWdpbgogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRQaXhlbFdvcmxkQm91bmRzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNycy5nZXRQcm9qZWN0ZWRCb3VuZHModm9pZCAwID09PSB0ID8gdGhpcy5nZXRab29tKCkgOiB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRQYW5lOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgPyB0aGlzLl9wYW5lc1t0XSA6IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0UGFuZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldENvbnRhaW5lcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFpvb21TY2FsZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9wdGlvbnMuY3JzOwogICAgICAgICAgICAgICAgcmV0dXJuIGkgPSB2b2lkIDAgPT09IGkgPyB0aGlzLl96b29tIDogaSwgZS5zY2FsZSh0KSAvIGUuc2NhbGUoaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0U2NhbGVab29tOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMub3B0aW9ucy5jcnM7CiAgICAgICAgICAgICAgICBpID0gdm9pZCAwID09PSBpID8gdGhpcy5fem9vbSA6IGk7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGUuem9vbSh0ICogZS5zY2FsZShpKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gaXNOYU4obikgPyAxIC8gMCA6IG4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJvamVjdDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkgPSB2b2lkIDAgPT09IGkgPyB0aGlzLl96b29tIDogaSwgdGhpcy5vcHRpb25zLmNycy5sYXRMbmdUb1BvaW50KFcodCksIGkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVucHJvamVjdDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkgPSB2b2lkIDAgPT09IGkgPyB0aGlzLl96b29tIDogaSwgdGhpcy5vcHRpb25zLmNycy5wb2ludFRvTGF0TG5nKEkodCksIGkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxheWVyUG9pbnRUb0xhdExuZzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSBJKHQpLmFkZCh0aGlzLmdldFBpeGVsT3JpZ2luKCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5wcm9qZWN0KGkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxhdExuZ1RvTGF5ZXJQb2ludDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvamVjdChXKHQpKS5fcm91bmQoKS5fc3VidHJhY3QodGhpcy5nZXRQaXhlbE9yaWdpbigpKQogICAgICAgICAgICB9LAogICAgICAgICAgICB3cmFwTGF0TG5nOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNycy53cmFwTGF0TG5nKFcodCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHdyYXBMYXRMbmdCb3VuZHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY3JzLndyYXBMYXRMbmdCb3VuZHMoRCh0KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGlzdGFuY2U6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY3JzLmRpc3RhbmNlKFcodCksIFcoaSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbnRhaW5lclBvaW50VG9MYXllclBvaW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gSSh0KS5zdWJ0cmFjdCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gSSh0KS5hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBjb250YWluZXJQb2ludFRvTGF0TG5nOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQoSSh0KSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXllclBvaW50VG9MYXRMbmcoaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbGF0TG5nVG9Db250YWluZXJQb2ludDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvQ29udGFpbmVyUG9pbnQodGhpcy5sYXRMbmdUb0xheWVyUG9pbnQoVyh0KSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gV2kodCwgdGhpcy5fY29udGFpbmVyKQogICAgICAgICAgICB9LAogICAgICAgICAgICBtb3VzZUV2ZW50VG9MYXllclBvaW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludCh0aGlzLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBtb3VzZUV2ZW50VG9MYXRMbmc6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9pbml0Q29udGFpbmVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX2NvbnRhaW5lciA9IHJpKHQpOwogICAgICAgICAgICAgICAgaWYgKCFpKSB0aHJvdyBuZXcgRXJyb3IoIk1hcCBjb250YWluZXIgbm90IGZvdW5kLiIpOwogICAgICAgICAgICAgICAgaWYgKGkuX2xlYWZsZXRfaWQpIHRocm93IG5ldyBFcnJvcigiTWFwIGNvbnRhaW5lciBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpOwogICAgICAgICAgICAgICAgRWkoaSwgInNjcm9sbCIsIHRoaXMuX29uU2Nyb2xsLCB0aGlzKSwgdGhpcy5fY29udGFpbmVySWQgPSB1KGkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9pbml0TGF5b3V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fY29udGFpbmVyOwogICAgICAgICAgICAgICAgdGhpcy5fZmFkZUFuaW1hdGVkID0gdGhpcy5vcHRpb25zLmZhZGVBbmltYXRpb24gJiYgeXQsIHBpKHQsICJsZWFmbGV0LWNvbnRhaW5lciIgKyAoVHQgPyAiIGxlYWZsZXQtdG91Y2giIDogIiIpICsgKEN0ID8gIiBsZWFmbGV0LXJldGluYSIgOiAiIikgKyAoZXQgPyAiIGxlYWZsZXQtb2xkaWUiIDogIiIpICsgKF90ID8gIiBsZWFmbGV0LXNhZmFyaSIgOiAiIikgKyAodGhpcy5fZmFkZUFuaW1hdGVkID8gIiBsZWFmbGV0LWZhZGUtYW5pbSIgOiAiIikpOwogICAgICAgICAgICAgICAgdmFyIGkgPSBhaSh0LCAicG9zaXRpb24iKTsKICAgICAgICAgICAgICAgICJhYnNvbHV0ZSIgIT09IGkgJiYgInJlbGF0aXZlIiAhPT0gaSAmJiAiZml4ZWQiICE9PSBpICYmICh0LnN0eWxlLnBvc2l0aW9uID0gInJlbGF0aXZlIiksIHRoaXMuX2luaXRQYW5lcygpLCB0aGlzLl9pbml0Q29udHJvbFBvcyAmJiB0aGlzLl9pbml0Q29udHJvbFBvcygpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9pbml0UGFuZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9wYW5lcyA9IHt9OwogICAgICAgICAgICAgICAgdGhpcy5fcGFuZVJlbmRlcmVycyA9IHt9LCB0aGlzLl9tYXBQYW5lID0gdGhpcy5jcmVhdGVQYW5lKCJtYXBQYW5lIiwgdGhpcy5fY29udGFpbmVyKSwgd2kodGhpcy5fbWFwUGFuZSwgbmV3IEIoMCwgMCkpLCB0aGlzLmNyZWF0ZVBhbmUoInRpbGVQYW5lIiksIHRoaXMuY3JlYXRlUGFuZSgic2hhZG93UGFuZSIpLCB0aGlzLmNyZWF0ZVBhbmUoIm92ZXJsYXlQYW5lIiksIHRoaXMuY3JlYXRlUGFuZSgibWFya2VyUGFuZSIpLCB0aGlzLmNyZWF0ZVBhbmUoInRvb2x0aXBQYW5lIiksIHRoaXMuY3JlYXRlUGFuZSgicG9wdXBQYW5lIiksIHRoaXMub3B0aW9ucy5tYXJrZXJab29tQW5pbWF0aW9uIHx8IChwaSh0Lm1hcmtlclBhbmUsICJsZWFmbGV0LXpvb20taGlkZSIpLCBwaSh0LnNoYWRvd1BhbmUsICJsZWFmbGV0LXpvb20taGlkZSIpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVzZXRWaWV3OiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICB3aSh0aGlzLl9tYXBQYW5lLCBuZXcgQigwLCAwKSk7CiAgICAgICAgICAgICAgICB2YXIgZSA9ICF0aGlzLl9sb2FkZWQ7CiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSAhMCwgaSA9IHRoaXMuX2xpbWl0Wm9vbShpKSwgdGhpcy5maXJlKCJ2aWV3cHJlcmVzZXQiKTsKICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fem9vbSAhPT0gaTsKICAgICAgICAgICAgICAgIHRoaXMuX21vdmVTdGFydChuLCAhMSkuX21vdmUodCwgaSkuX21vdmVFbmQobiksIHRoaXMuZmlyZSgidmlld3Jlc2V0IiksIGUgJiYgdGhpcy5maXJlKCJsb2FkIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX21vdmVTdGFydDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdGhpcy5maXJlKCJ6b29tc3RhcnQiKSwgaSB8fCB0aGlzLmZpcmUoIm1vdmVzdGFydCIpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9tb3ZlOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICB2b2lkIDAgPT09IGkgJiYgKGkgPSB0aGlzLl96b29tKTsKICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fem9vbSAhPT0gaTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl96b29tID0gaSwgdGhpcy5fbGFzdENlbnRlciA9IHQsIHRoaXMuX3BpeGVsT3JpZ2luID0gdGhpcy5fZ2V0TmV3UGl4ZWxPcmlnaW4odCksIChuIHx8IGUgJiYgZS5waW5jaCkgJiYgdGhpcy5maXJlKCJ6b29tIiwgZSksIHRoaXMuZmlyZSgibW92ZSIsIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9tb3ZlRW5kOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiB0aGlzLmZpcmUoInpvb21lbmQiKSwgdGhpcy5maXJlKCJtb3ZlZW5kIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3N0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEModGhpcy5fZmx5VG9GcmFtZSksIHRoaXMuX3BhbkFuaW0gJiYgdGhpcy5fcGFuQW5pbS5zdG9wKCksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3Jhd1BhbkJ5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB3aSh0aGlzLl9tYXBQYW5lLCB0aGlzLl9nZXRNYXBQYW5lUG9zKCkuc3VidHJhY3QodCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRab29tU3BhbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRNYXhab29tKCkgLSB0aGlzLmdldE1pblpvb20oKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcGFuSW5zaWRlTWF4Qm91bmRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VuZm9yY2luZ0JvdW5kcyB8fCB0aGlzLnBhbkluc2lkZUJvdW5kcyh0aGlzLm9wdGlvbnMubWF4Qm91bmRzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY2hlY2tJZkxvYWRlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2xvYWRlZCkgdGhyb3cgbmV3IEVycm9yKCJTZXQgbWFwIGNlbnRlciBhbmQgem9vbSBmaXJzdC4iKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfaW5pdEV2ZW50czogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0cyA9IHt9OwogICAgICAgICAgICAgICAgdmFyIGkgPSB0ID8gQmkgOiBFaTsKICAgICAgICAgICAgICAgIGkoKHRoaXMuX3RhcmdldHNbdSh0aGlzLl9jb250YWluZXIpXSA9IHRoaXMpLl9jb250YWluZXIsICJjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2Vtb3ZlIGNvbnRleHRtZW51IGtleXByZXNzIGtleWRvd24ga2V5dXAiLCB0aGlzLl9oYW5kbGVET01FdmVudCwgdGhpcyksIHRoaXMub3B0aW9ucy50cmFja1Jlc2l6ZSAmJiBpKHdpbmRvdywgInJlc2l6ZSIsIHRoaXMuX29uUmVzaXplLCB0aGlzKSwgeXQgJiYgdGhpcy5vcHRpb25zLnRyYW5zZm9ybTNETGltaXQgJiYgKHQgPyB0aGlzLm9mZiA6IHRoaXMub24pLmNhbGwodGhpcywgIm1vdmVlbmQiLCB0aGlzLl9vbk1vdmVFbmQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9vblJlc2l6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBDKHRoaXMuX3Jlc2l6ZVJlcXVlc3QpLCB0aGlzLl9yZXNpemVSZXF1ZXN0ID0gTShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWRhdGVTaXplKHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VNb3ZlZW5kOiAhMAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LCB0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25TY3JvbGw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLnNjcm9sbFRvcCA9IDAsIHRoaXMuX2NvbnRhaW5lci5zY3JvbGxMZWZ0ID0gMAogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25Nb3ZlRW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fZ2V0TWFwUGFuZVBvcygpOwogICAgICAgICAgICAgICAgTWF0aC5tYXgoTWF0aC5hYnModC54KSwgTWF0aC5hYnModC55KSkgPj0gdGhpcy5vcHRpb25zLnRyYW5zZm9ybTNETGltaXQgJiYgdGhpcy5fcmVzZXRWaWV3KHRoaXMuZ2V0Q2VudGVyKCksIHRoaXMuZ2V0Wm9vbSgpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZmluZEV2ZW50VGFyZ2V0czogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSwgbiA9IFtdLCBvID0gIm1vdXNlb3V0IiA9PT0gaSB8fCAibW91c2VvdmVyIiA9PT0gaSwgcyA9IHQudGFyZ2V0IHx8IHQuc3JjRWxlbWVudCwgciA9ICExOyBzOykgewogICAgICAgICAgICAgICAgICAgIGlmICgoZSA9IHRoaXMuX3RhcmdldHNbdShzKV0pICYmICgiY2xpY2siID09PSBpIHx8ICJwcmVjbGljayIgPT09IGkpICYmICF0Ll9zaW11bGF0ZWQgJiYgdGhpcy5fZHJhZ2dhYmxlTW92ZWQoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLmxpc3RlbnMoaSwgITApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvICYmICFLaShzLCB0KSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnB1c2goZSksIG8pIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChzID09PSB0aGlzLl9jb250YWluZXIpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIHMgPSBzLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBuLmxlbmd0aCB8fCByIHx8IG8gfHwgIUtpKHMsIHQpIHx8IChuID0gW3RoaXNdKSwgbgogICAgICAgICAgICB9LAogICAgICAgICAgICBfaGFuZGxlRE9NRXZlbnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9sb2FkZWQgJiYgIUdpKHQpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LnR5cGU7CiAgICAgICAgICAgICAgICAgICAgIm1vdXNlZG93biIgIT09IGkgJiYgImtleXByZXNzIiAhPT0gaSAmJiAia2V5dXAiICE9PSBpICYmICJrZXlkb3duIiAhPT0gaSB8fCB6aSh0LnRhcmdldCB8fCB0LnNyY0VsZW1lbnQpLCB0aGlzLl9maXJlRE9NRXZlbnQodCwgaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX21vdXNlRXZlbnRzOiBbImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlb3ZlciIsICJtb3VzZW91dCIsICJjb250ZXh0bWVudSJdLAogICAgICAgICAgICBfZmlyZURPTUV2ZW50OiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICBpZiAoImNsaWNrIiA9PT0gdC50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBoKHt9LCB0KTsKICAgICAgICAgICAgICAgICAgICBuLnR5cGUgPSAicHJlY2xpY2siLCB0aGlzLl9maXJlRE9NRXZlbnQobiwgbi50eXBlLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCF0Ll9zdG9wcGVkICYmIChlID0gKGUgfHwgW10pLmNvbmNhdCh0aGlzLl9maW5kRXZlbnRUYXJnZXRzKHQsIGkpKSkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlWzBdOwogICAgICAgICAgICAgICAgICAgICJjb250ZXh0bWVudSIgPT09IGkgJiYgby5saXN0ZW5zKGksICEwKSAmJiBEaSh0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogdAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCJrZXlwcmVzcyIgIT09IHQudHlwZSAmJiAia2V5ZG93biIgIT09IHQudHlwZSAmJiAia2V5dXAiICE9PSB0LnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBvLmdldExhdExuZyAmJiAoIW8uX3JhZGl1cyB8fCBvLl9yYWRpdXMgPD0gMTApOwogICAgICAgICAgICAgICAgICAgICAgICBzLmNvbnRhaW5lclBvaW50ID0gciA/IHRoaXMubGF0TG5nVG9Db250YWluZXJQb2ludChvLmdldExhdExuZygpKSA6IHRoaXMubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCksIHMubGF5ZXJQb2ludCA9IHRoaXMuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQocy5jb250YWluZXJQb2ludCksIHMubGF0bG5nID0gciA/IG8uZ2V0TGF0TG5nKCkgOiB0aGlzLmxheWVyUG9pbnRUb0xhdExuZyhzLmxheWVyUG9pbnQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgZS5sZW5ndGg7IGErKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbYV0uZmlyZShpLCBzLCAhMCksIHMub3JpZ2luYWxFdmVudC5fc3RvcHBlZCB8fCAhMSA9PT0gZVthXS5vcHRpb25zLmJ1YmJsaW5nTW91c2VFdmVudHMgJiYgLTEgIT09IHkodGhpcy5fbW91c2VFdmVudHMsIGkpKSByZXR1cm4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2RyYWdnYWJsZU1vdmVkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKHQgPSB0LmRyYWdnaW5nICYmIHQuZHJhZ2dpbmcuZW5hYmxlZCgpID8gdCA6IHRoaXMpLmRyYWdnaW5nICYmIHQuZHJhZ2dpbmcubW92ZWQoKSB8fCB0aGlzLmJveFpvb20gJiYgdGhpcy5ib3hab29tLm1vdmVkKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2NsZWFySGFuZGxlcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIGkgPSB0aGlzLl9oYW5kbGVycy5sZW5ndGg7IHQgPCBpOyB0KyspIHRoaXMuX2hhbmRsZXJzW3RdLmRpc2FibGUoKQogICAgICAgICAgICB9LAogICAgICAgICAgICB3aGVuUmVhZHk6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkZWQgPyB0LmNhbGwoaSB8fCB0aGlzLCB7CiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiB0aGlzCiAgICAgICAgICAgICAgICB9KSA6IHRoaXMub24oImxvYWQiLCB0LCBpKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0TWFwUGFuZVBvczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gUGkodGhpcy5fbWFwUGFuZSkgfHwgbmV3IEIoMCwgMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX21vdmVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fZ2V0TWFwUGFuZVBvcygpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgIXQuZXF1YWxzKFswLCAwXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldFRvcExlZnRQb2ludDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuICh0ICYmIHZvaWQgMCAhPT0gaSA/IHRoaXMuX2dldE5ld1BpeGVsT3JpZ2luKHQsIGkpIDogdGhpcy5nZXRQaXhlbE9yaWdpbigpKS5zdWJ0cmFjdCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXROZXdQaXhlbE9yaWdpbjogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldFNpemUoKS5fZGl2aWRlQnkoMik7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9qZWN0KHQsIGkpLl9zdWJ0cmFjdChlKS5fYWRkKHRoaXMuX2dldE1hcFBhbmVQb3MoKSkuX3JvdW5kKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2xhdExuZ1RvTmV3TGF5ZXJQb2ludDogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9nZXROZXdQaXhlbE9yaWdpbihlLCBpKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2plY3QodCwgaSkuX3N1YnRyYWN0KG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9sYXRMbmdCb3VuZHNUb05ld0xheWVyQm91bmRzOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX2dldE5ld1BpeGVsT3JpZ2luKGUsIGkpOwogICAgICAgICAgICAgICAgcmV0dXJuIFIoW3RoaXMucHJvamVjdCh0LmdldFNvdXRoV2VzdCgpLCBpKS5fc3VidHJhY3QobiksIHRoaXMucHJvamVjdCh0LmdldE5vcnRoV2VzdCgpLCBpKS5fc3VidHJhY3QobiksIHRoaXMucHJvamVjdCh0LmdldFNvdXRoRWFzdCgpLCBpKS5fc3VidHJhY3QobiksIHRoaXMucHJvamVjdCh0LmdldE5vcnRoRWFzdCgpLCBpKS5fc3VidHJhY3QobildKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0Q2VudGVyTGF5ZXJQb2ludDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludCh0aGlzLmdldFNpemUoKS5fZGl2aWRlQnkoMikpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRDZW50ZXJPZmZzZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxhdExuZ1RvTGF5ZXJQb2ludCh0KS5zdWJ0cmFjdCh0aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9saW1pdENlbnRlcjogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5wcm9qZWN0KHQsIGkpLAogICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmdldFNpemUoKS5kaXZpZGVCeSgyKSwKICAgICAgICAgICAgICAgICAgICBzID0gbmV3IE8obi5zdWJ0cmFjdChvKSwgbi5hZGQobykpLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLl9nZXRCb3VuZHNPZmZzZXQocywgZSwgaSk7CiAgICAgICAgICAgICAgICByZXR1cm4gci5yb3VuZCgpLmVxdWFscyhbMCwgMF0pID8gdCA6IHRoaXMudW5wcm9qZWN0KG4uYWRkKHIpLCBpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfbGltaXRPZmZzZXQ6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIGlmICghaSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0UGl4ZWxCb3VuZHMoKSwKICAgICAgICAgICAgICAgICAgICBuID0gbmV3IE8oZS5taW4uYWRkKHQpLCBlLm1heC5hZGQodCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQuYWRkKHRoaXMuX2dldEJvdW5kc09mZnNldChuLCBpKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldEJvdW5kc09mZnNldDogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBSKHRoaXMucHJvamVjdChpLmdldE5vcnRoRWFzdCgpLCBlKSwgdGhpcy5wcm9qZWN0KGkuZ2V0U291dGhXZXN0KCksIGUpKSwKICAgICAgICAgICAgICAgICAgICBvID0gbi5taW4uc3VidHJhY3QodC5taW4pLAogICAgICAgICAgICAgICAgICAgIHMgPSBuLm1heC5zdWJ0cmFjdCh0Lm1heCk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEIodGhpcy5fcmVib3VuZChvLngsIC1zLngpLCB0aGlzLl9yZWJvdW5kKG8ueSwgLXMueSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9yZWJvdW5kOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMCA8IHQgKyBpID8gTWF0aC5yb3VuZCh0IC0gaSkgLyAyIDogTWF0aC5tYXgoMCwgTWF0aC5jZWlsKHQpKSAtIE1hdGgubWF4KDAsIE1hdGguZmxvb3IoaSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9saW1pdFpvb206IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5nZXRNaW5ab29tKCksCiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuZ2V0TWF4Wm9vbSgpLAogICAgICAgICAgICAgICAgICAgIG4gPSB5dCA/IHRoaXMub3B0aW9ucy56b29tU25hcCA6IDE7CiAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiAodCA9IE1hdGgucm91bmQodCAvIG4pICogbiksIE1hdGgubWF4KGksIE1hdGgubWluKGUsIHQpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25QYW5UcmFuc2l0aW9uU3RlcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLmZpcmUoIm1vdmUiKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25QYW5UcmFuc2l0aW9uRW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG1pKHRoaXMuX21hcFBhbmUsICJsZWFmbGV0LXBhbi1hbmltIiksIHRoaXMuZmlyZSgibW92ZWVuZCIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF90cnlBbmltYXRlZFBhbjogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nZXRDZW50ZXJPZmZzZXQodCkuX3RydW5jKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gISghMCAhPT0gKGkgJiYgaS5hbmltYXRlKSAmJiAhdGhpcy5nZXRTaXplKCkuY29udGFpbnMoZSkpICYmICh0aGlzLnBhbkJ5KGUsIGkpLCAhMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2NyZWF0ZUFuaW1Qcm94eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3Byb3h5ID0gaGkoImRpdiIsICJsZWFmbGV0LXByb3h5IGxlYWZsZXQtem9vbS1hbmltYXRlZCIpOwogICAgICAgICAgICAgICAgdGhpcy5fcGFuZXMubWFwUGFuZS5hcHBlbmRDaGlsZCh0KSwgdGhpcy5vbigiem9vbWFuaW0iLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuaSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3Byb3h5LnN0eWxlW2ldOwogICAgICAgICAgICAgICAgICAgIHhpKHRoaXMuX3Byb3h5LCB0aGlzLnByb2plY3QodC5jZW50ZXIsIHQuem9vbSksIHRoaXMuZ2V0Wm9vbVNjYWxlKHQuem9vbSwgMSkpLCBlID09PSB0aGlzLl9wcm94eS5zdHlsZVtpXSAmJiB0aGlzLl9hbmltYXRpbmdab29tICYmIHRoaXMuX29uWm9vbVRyYW5zaXRpb25FbmQoKQogICAgICAgICAgICAgICAgfSwgdGhpcyksIHRoaXMub24oImxvYWQgbW92ZWVuZCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5nZXRDZW50ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZ2V0Wm9vbSgpOwogICAgICAgICAgICAgICAgICAgIHhpKHRoaXMuX3Byb3h5LCB0aGlzLnByb2plY3QodCwgaSksIHRoaXMuZ2V0Wm9vbVNjYWxlKGksIDEpKQogICAgICAgICAgICAgICAgfSwgdGhpcyksIHRoaXMuX29uKCJ1bmxvYWQiLCB0aGlzLl9kZXN0cm95QW5pbVByb3h5LCB0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZGVzdHJveUFuaW1Qcm94eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB1aSh0aGlzLl9wcm94eSksIGRlbGV0ZSB0aGlzLl9wcm94eQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY2F0Y2hUcmFuc2l0aW9uRW5kOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl9hbmltYXRpbmdab29tICYmIDAgPD0gdC5wcm9wZXJ0eU5hbWUuaW5kZXhPZigidHJhbnNmb3JtIikgJiYgdGhpcy5fb25ab29tVHJhbnNpdGlvbkVuZCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9ub3RoaW5nVG9BbmltYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5fY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlYWZsZXQtem9vbS1hbmltYXRlZCIpLmxlbmd0aAogICAgICAgICAgICB9LAogICAgICAgICAgICBfdHJ5QW5pbWF0ZWRab29tOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW5nWm9vbSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgaWYgKGUgPSBlIHx8IHt9LCAhdGhpcy5fem9vbUFuaW1hdGVkIHx8ICExID09PSBlLmFuaW1hdGUgfHwgdGhpcy5fbm90aGluZ1RvQW5pbWF0ZSgpIHx8IE1hdGguYWJzKGkgLSB0aGlzLl96b29tKSA+IHRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uVGhyZXNob2xkKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuZ2V0Wm9vbVNjYWxlKGkpLAogICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9nZXRDZW50ZXJPZmZzZXQodCkuX2RpdmlkZUJ5KDEgLSAxIC8gbik7CiAgICAgICAgICAgICAgICByZXR1cm4gISghMCAhPT0gZS5hbmltYXRlICYmICF0aGlzLmdldFNpemUoKS5jb250YWlucyhvKSkgJiYgKE0oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW92ZVN0YXJ0KCEwLCAhMSkuX2FuaW1hdGVab29tKHQsIGksICEwKQogICAgICAgICAgICAgICAgfSwgdGhpcyksICEwKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYW5pbWF0ZVpvb206IGZ1bmN0aW9uKHQsIGksIGUsIG4pIHsKICAgICAgICAgICAgICAgIHRoaXMuX21hcFBhbmUgJiYgKGUgJiYgKHRoaXMuX2FuaW1hdGluZ1pvb20gPSAhMCwgdGhpcy5fYW5pbWF0ZVRvQ2VudGVyID0gdCwgdGhpcy5fYW5pbWF0ZVRvWm9vbSA9IGksIHBpKHRoaXMuX21hcFBhbmUsICJsZWFmbGV0LXpvb20tYW5pbSIpKSwgdGhpcy5maXJlKCJ6b29tYW5pbSIsIHsKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IHQsCiAgICAgICAgICAgICAgICAgICAgem9vbTogaSwKICAgICAgICAgICAgICAgICAgICBub1VwZGF0ZTogbgogICAgICAgICAgICAgICAgfSksIHNldFRpbWVvdXQoYSh0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kLCB0aGlzKSwgMjUwKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uWm9vbVRyYW5zaXRpb25FbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW5nWm9vbSAmJiAodGhpcy5fbWFwUGFuZSAmJiBtaSh0aGlzLl9tYXBQYW5lLCAibGVhZmxldC16b29tLWFuaW0iKSwgdGhpcy5fYW5pbWF0aW5nWm9vbSA9ICExLCB0aGlzLl9tb3ZlKHRoaXMuX2FuaW1hdGVUb0NlbnRlciwgdGhpcy5fYW5pbWF0ZVRvWm9vbSksIE0oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW92ZUVuZCghMCkKICAgICAgICAgICAgICAgIH0sIHRoaXMpKQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgZnVuY3Rpb24gJGkodCkgewogICAgICAgIHJldHVybiBuZXcgUWkodCkKICAgIH0KICAgIHZhciBRaSA9IFouZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiAidG9wcmlnaHQiCiAgICAgICAgfSwKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHAodGhpcywgdCkKICAgICAgICB9LAogICAgICAgIGdldFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbgogICAgICAgIH0sCiAgICAgICAgc2V0UG9zaXRpb246IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9tYXA7CiAgICAgICAgICAgIHJldHVybiBpICYmIGkucmVtb3ZlQ29udHJvbCh0aGlzKSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0gdCwgaSAmJiBpLmFkZENvbnRyb2wodGhpcyksIHRoaXMKICAgICAgICB9LAogICAgICAgIGdldENvbnRhaW5lcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb250YWluZXIKICAgICAgICB9LAogICAgICAgIGFkZFRvOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRoaXMucmVtb3ZlKCksIHRoaXMuX21hcCA9IHQ7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5fY29udGFpbmVyID0gdGhpcy5vbkFkZCh0KSwKICAgICAgICAgICAgICAgIGUgPSB0aGlzLmdldFBvc2l0aW9uKCksCiAgICAgICAgICAgICAgICBuID0gdC5fY29udHJvbENvcm5lcnNbZV07CiAgICAgICAgICAgIHJldHVybiBwaShpLCAibGVhZmxldC1jb250cm9sIiksIC0xICE9PSBlLmluZGV4T2YoImJvdHRvbSIpID8gbi5pbnNlcnRCZWZvcmUoaSwgbi5maXJzdENoaWxkKSA6IG4uYXBwZW5kQ2hpbGQoaSksIHRoaXMuX21hcC5vbigidW5sb2FkIiwgdGhpcy5yZW1vdmUsIHRoaXMpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFwICYmICh1aSh0aGlzLl9jb250YWluZXIpLCB0aGlzLm9uUmVtb3ZlICYmIHRoaXMub25SZW1vdmUodGhpcy5fbWFwKSwgdGhpcy5fbWFwLm9mZigidW5sb2FkIiwgdGhpcy5yZW1vdmUsIHRoaXMpLCB0aGlzLl9tYXAgPSBudWxsKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgX3JlZm9jdXNPbk1hcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICB0aGlzLl9tYXAgJiYgdCAmJiAwIDwgdC5zY3JlZW5YICYmIDAgPCB0LnNjcmVlblkgJiYgdGhpcy5fbWFwLmdldENvbnRhaW5lcigpLmZvY3VzKCkKICAgICAgICB9CiAgICB9KTsKICAgIEppLmluY2x1ZGUoewogICAgICAgIGFkZENvbnRyb2w6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQuYWRkVG8odGhpcyksIHRoaXMKICAgICAgICB9LAogICAgICAgIHJlbW92ZUNvbnRyb2w6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQucmVtb3ZlKCksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9pbml0Q29udHJvbFBvczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBuID0gdGhpcy5fY29udHJvbENvcm5lcnMgPSB7fSwKICAgICAgICAgICAgICAgIG8gPSAibGVhZmxldC0iLAogICAgICAgICAgICAgICAgcyA9IHRoaXMuX2NvbnRyb2xDb250YWluZXIgPSBoaSgiZGl2IiwgbyArICJjb250cm9sLWNvbnRhaW5lciIsIHRoaXMuX2NvbnRhaW5lcik7CgogICAgICAgICAgICBmdW5jdGlvbiB0KHQsIGkpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gbyArIHQgKyAiICIgKyBvICsgaTsKICAgICAgICAgICAgICAgIG5bdCArIGldID0gaGkoImRpdiIsIGUsIHMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdCgidG9wIiwgImxlZnQiKSwgdCgidG9wIiwgInJpZ2h0IiksIHQoImJvdHRvbSIsICJsZWZ0IiksIHQoImJvdHRvbSIsICJyaWdodCIpCiAgICAgICAgfSwKICAgICAgICBfY2xlYXJDb250cm9sUG9zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCBpbiB0aGlzLl9jb250cm9sQ29ybmVycykgdWkodGhpcy5fY29udHJvbENvcm5lcnNbdF0pOwogICAgICAgICAgICB1aSh0aGlzLl9jb250cm9sQ29udGFpbmVyKSwgZGVsZXRlIHRoaXMuX2NvbnRyb2xDb3JuZXJzLCBkZWxldGUgdGhpcy5fY29udHJvbENvbnRhaW5lcgogICAgICAgIH0KICAgIH0pOwogICAgdmFyIHRlID0gUWkuZXh0ZW5kKHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhMCwKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAidG9wcmlnaHQiLAogICAgICAgICAgICAgICAgYXV0b1pJbmRleDogITAsCiAgICAgICAgICAgICAgICBoaWRlU2luZ2xlQmFzZTogITEsCiAgICAgICAgICAgICAgICBzb3J0TGF5ZXJzOiAhMSwKICAgICAgICAgICAgICAgIHNvcnRGdW5jdGlvbjogZnVuY3Rpb24odCwgaSwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIDwgbiA/IC0xIDogbiA8IGUgPyAxIDogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHAodGhpcywgZSksIHRoaXMuX2xheWVyQ29udHJvbElucHV0cyA9IFtdLCB0aGlzLl9sYXllcnMgPSBbXSwgdGhpcy5fbGFzdFpJbmRleCA9IDAsIHRoaXMuX2hhbmRsaW5nQ2xpY2sgPSAhMSwgdCkgdGhpcy5fYWRkTGF5ZXIodFtuXSwgbik7CiAgICAgICAgICAgICAgICBmb3IgKG4gaW4gaSkgdGhpcy5fYWRkTGF5ZXIoaVtuXSwgbiwgITApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uQWRkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl9pbml0TGF5b3V0KCksIHRoaXMuX3VwZGF0ZSgpLCAodGhpcy5fbWFwID0gdCkub24oInpvb21lbmQiLCB0aGlzLl9jaGVja0Rpc2FibGVkTGF5ZXJzLCB0aGlzKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB0aGlzLl9sYXllcnNbaV0ubGF5ZXIub24oImFkZCByZW1vdmUiLCB0aGlzLl9vbkxheWVyQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb250YWluZXIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWRkVG86IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBRaS5wcm90b3R5cGUuYWRkVG8uY2FsbCh0aGlzLCB0KSwgdGhpcy5fZXhwYW5kSWZOb3RDb2xsYXBzZWQoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBvblJlbW92ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9tYXAub2ZmKCJ6b29tZW5kIiwgdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycywgdGhpcyk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHRoaXMuX2xheWVycy5sZW5ndGg7IHQrKykgdGhpcy5fbGF5ZXJzW3RdLmxheWVyLm9mZigiYWRkIHJlbW92ZSIsIHRoaXMuX29uTGF5ZXJDaGFuZ2UsIHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFkZEJhc2VMYXllcjogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZExheWVyKHQsIGkpLCB0aGlzLl9tYXAgPyB0aGlzLl91cGRhdGUoKSA6IHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWRkT3ZlcmxheTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZExheWVyKHQsIGksICEwKSwgdGhpcy5fbWFwID8gdGhpcy5fdXBkYXRlKCkgOiB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbW92ZUxheWVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0Lm9mZigiYWRkIHJlbW92ZSIsIHRoaXMuX29uTGF5ZXJDaGFuZ2UsIHRoaXMpOwogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9nZXRMYXllcih1KHQpKTsKICAgICAgICAgICAgICAgIHJldHVybiBpICYmIHRoaXMuX2xheWVycy5zcGxpY2UodGhpcy5fbGF5ZXJzLmluZGV4T2YoaSksIDEpLCB0aGlzLl9tYXAgPyB0aGlzLl91cGRhdGUoKSA6IHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZXhwYW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHBpKHRoaXMuX2NvbnRhaW5lciwgImxlYWZsZXQtY29udHJvbC1sYXllcnMtZXhwYW5kZWQiKSwgdGhpcy5fc2VjdGlvbi5zdHlsZS5oZWlnaHQgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9tYXAuZ2V0U2l6ZSgpLnkgLSAodGhpcy5fY29udGFpbmVyLm9mZnNldFRvcCArIDUwKTsKICAgICAgICAgICAgICAgIHJldHVybiB0IDwgdGhpcy5fc2VjdGlvbi5jbGllbnRIZWlnaHQgPyAocGkodGhpcy5fc2VjdGlvbiwgImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2Nyb2xsYmFyIiksIHRoaXMuX3NlY3Rpb24uc3R5bGUuaGVpZ2h0ID0gdCArICJweCIpIDogbWkodGhpcy5fc2VjdGlvbiwgImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2Nyb2xsYmFyIiksIHRoaXMuX2NoZWNrRGlzYWJsZWRMYXllcnMoKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBjb2xsYXBzZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbWkodGhpcy5fY29udGFpbmVyLCAibGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZCIpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9pbml0TGF5b3V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gImxlYWZsZXQtY29udHJvbC1sYXllcnMiLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLl9jb250YWluZXIgPSBoaSgiZGl2IiwgdCksCiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMub3B0aW9ucy5jb2xsYXBzZWQ7CiAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZSgiYXJpYS1oYXNwb3B1cCIsICEwKSwgTmkoaSksIFJpKGkpOwogICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9zZWN0aW9uID0gaGkoInNlY3Rpb24iLCB0ICsgIi1saXN0Iik7CiAgICAgICAgICAgICAgICBlICYmICh0aGlzLl9tYXAub24oImNsaWNrIiwgdGhpcy5jb2xsYXBzZSwgdGhpcyksIHN0IHx8IEVpKGksIHsKICAgICAgICAgICAgICAgICAgICBtb3VzZWVudGVyOiB0aGlzLmV4cGFuZCwKICAgICAgICAgICAgICAgICAgICBtb3VzZWxlYXZlOiB0aGlzLmNvbGxhcHNlCiAgICAgICAgICAgICAgICB9LCB0aGlzKSk7CiAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuX2xheWVyc0xpbmsgPSBoaSgiYSIsIHQgKyAiLXRvZ2dsZSIsIGkpOwogICAgICAgICAgICAgICAgby5ocmVmID0gIiMiLCBvLnRpdGxlID0gIkxheWVycyIsIFR0ID8gKEVpKG8sICJjbGljayIsIGppKSwgRWkobywgImNsaWNrIiwgdGhpcy5leHBhbmQsIHRoaXMpKSA6IEVpKG8sICJmb2N1cyIsIHRoaXMuZXhwYW5kLCB0aGlzKSwgZSB8fCB0aGlzLmV4cGFuZCgpLCB0aGlzLl9iYXNlTGF5ZXJzTGlzdCA9IGhpKCJkaXYiLCB0ICsgIi1iYXNlIiwgbiksIHRoaXMuX3NlcGFyYXRvciA9IGhpKCJkaXYiLCB0ICsgIi1zZXBhcmF0b3IiLCBuKSwgdGhpcy5fb3ZlcmxheXNMaXN0ID0gaGkoImRpdiIsIHQgKyAiLW92ZXJsYXlzIiwgbiksIGkuYXBwZW5kQ2hpbGQobikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldExheWVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2xheWVycy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fbGF5ZXJzW2ldICYmIHUodGhpcy5fbGF5ZXJzW2ldLmxheWVyKSA9PT0gdCkgcmV0dXJuIHRoaXMuX2xheWVyc1tpXQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYWRkTGF5ZXI6IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21hcCAmJiB0Lm9uKCJhZGQgcmVtb3ZlIiwgdGhpcy5fb25MYXllckNoYW5nZSwgdGhpcyksIHRoaXMuX2xheWVycy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBsYXllcjogdCwKICAgICAgICAgICAgICAgICAgICBuYW1lOiBpLAogICAgICAgICAgICAgICAgICAgIG92ZXJsYXk6IGUKICAgICAgICAgICAgICAgIH0pLCB0aGlzLm9wdGlvbnMuc29ydExheWVycyAmJiB0aGlzLl9sYXllcnMuc29ydChhKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNvcnRGdW5jdGlvbih0LmxheWVyLCBpLmxheWVyLCB0Lm5hbWUsIGkubmFtZSkKICAgICAgICAgICAgICAgIH0sIHRoaXMpKSwgdGhpcy5vcHRpb25zLmF1dG9aSW5kZXggJiYgdC5zZXRaSW5kZXggJiYgKHRoaXMuX2xhc3RaSW5kZXgrKywgdC5zZXRaSW5kZXgodGhpcy5fbGFzdFpJbmRleCkpLCB0aGlzLl9leHBhbmRJZk5vdENvbGxhcHNlZCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jb250YWluZXIpIHJldHVybiB0aGlzOwogICAgICAgICAgICAgICAgbGkodGhpcy5fYmFzZUxheWVyc0xpc3QpLCBsaSh0aGlzLl9vdmVybGF5c0xpc3QpLCB0aGlzLl9sYXllckNvbnRyb2xJbnB1dHMgPSBbXTsKICAgICAgICAgICAgICAgIHZhciB0LCBpLCBlLCBuLCBvID0gMDsKICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCB0aGlzLl9sYXllcnMubGVuZ3RoOyBlKyspIG4gPSB0aGlzLl9sYXllcnNbZV0sIHRoaXMuX2FkZEl0ZW0obiksIGkgPSBpIHx8IG4ub3ZlcmxheSwgdCA9IHQgfHwgIW4ub3ZlcmxheSwgbyArPSBuLm92ZXJsYXkgPyAwIDogMTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGlkZVNpbmdsZUJhc2UgJiYgKHQgPSB0ICYmIDEgPCBvLCB0aGlzLl9iYXNlTGF5ZXJzTGlzdC5zdHlsZS5kaXNwbGF5ID0gdCA/ICIiIDogIm5vbmUiKSwgdGhpcy5fc2VwYXJhdG9yLnN0eWxlLmRpc3BsYXkgPSBpICYmIHQgPyAiIiA6ICJub25lIiwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25MYXllckNoYW5nZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5faGFuZGxpbmdDbGljayB8fCB0aGlzLl91cGRhdGUoKTsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fZ2V0TGF5ZXIodSh0LnRhcmdldCkpLAogICAgICAgICAgICAgICAgICAgIGUgPSBpLm92ZXJsYXkgPyAiYWRkIiA9PT0gdC50eXBlID8gIm92ZXJsYXlhZGQiIDogIm92ZXJsYXlyZW1vdmUiIDogImFkZCIgPT09IHQudHlwZSA/ICJiYXNlbGF5ZXJjaGFuZ2UiIDogbnVsbDsKICAgICAgICAgICAgICAgIGUgJiYgdGhpcy5fbWFwLmZpcmUoZSwgaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2NyZWF0ZVJhZGlvRWxlbWVudDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSAnPGlucHV0IHR5cGU9InJhZGlvIiBjbGFzcz0ibGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvciIgbmFtZT0iJyArIHQgKyAnIicgKyAoaSA/ICcgY2hlY2tlZD0iY2hlY2tlZCInIDogIiIpICsgIi8+IiwKICAgICAgICAgICAgICAgICAgICBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5pbm5lckhUTUwgPSBlLCBuLmZpcnN0Q2hpbGQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2FkZEl0ZW06IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5fbWFwLmhhc0xheWVyKHQubGF5ZXIpOwogICAgICAgICAgICAgICAgdC5vdmVybGF5ID8gKChpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudHlwZSA9ICJjaGVja2JveCIsIGkuY2xhc3NOYW1lID0gImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2VsZWN0b3IiLCBpLmRlZmF1bHRDaGVja2VkID0gbikgOiBpID0gdGhpcy5fY3JlYXRlUmFkaW9FbGVtZW50KCJsZWFmbGV0LWJhc2UtbGF5ZXJzXyIgKyB1KHRoaXMpLCBuKSwgdGhpcy5fbGF5ZXJDb250cm9sSW5wdXRzLnB1c2goaSksIGkubGF5ZXJJZCA9IHUodC5sYXllciksIEVpKGksICJjbGljayIsIHRoaXMuX29uSW5wdXRDbGljaywgdGhpcyk7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgIG8uaW5uZXJIVE1MID0gIiAiICsgdC5uYW1lOwogICAgICAgICAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgIHJldHVybiBlLmFwcGVuZENoaWxkKHMpLCBzLmFwcGVuZENoaWxkKGkpLCBzLmFwcGVuZENoaWxkKG8pLCAodC5vdmVybGF5ID8gdGhpcy5fb3ZlcmxheXNMaXN0IDogdGhpcy5fYmFzZUxheWVyc0xpc3QpLmFwcGVuZENoaWxkKGUpLCB0aGlzLl9jaGVja0Rpc2FibGVkTGF5ZXJzKCksIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uSW5wdXRDbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgaSwgZSA9IHRoaXMuX2xheWVyQ29udHJvbElucHV0cywKICAgICAgICAgICAgICAgICAgICBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgbyA9IFtdOwogICAgICAgICAgICAgICAgdGhpcy5faGFuZGxpbmdDbGljayA9ICEwOwogICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IGUubGVuZ3RoIC0gMTsgMCA8PSBzOyBzLS0pIHQgPSBlW3NdLCBpID0gdGhpcy5fZ2V0TGF5ZXIodC5sYXllcklkKS5sYXllciwgdC5jaGVja2VkID8gbi5wdXNoKGkpIDogdC5jaGVja2VkIHx8IG8ucHVzaChpKTsKICAgICAgICAgICAgICAgIGZvciAocyA9IDA7IHMgPCBvLmxlbmd0aDsgcysrKSB0aGlzLl9tYXAuaGFzTGF5ZXIob1tzXSkgJiYgdGhpcy5fbWFwLnJlbW92ZUxheWVyKG9bc10pOwogICAgICAgICAgICAgICAgZm9yIChzID0gMDsgcyA8IG4ubGVuZ3RoOyBzKyspIHRoaXMuX21hcC5oYXNMYXllcihuW3NdKSB8fCB0aGlzLl9tYXAuYWRkTGF5ZXIobltzXSk7CiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGluZ0NsaWNrID0gITEsIHRoaXMuX3JlZm9jdXNPbk1hcCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9jaGVja0Rpc2FibGVkTGF5ZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIGksIGUgPSB0aGlzLl9sYXllckNvbnRyb2xJbnB1dHMsIG4gPSB0aGlzLl9tYXAuZ2V0Wm9vbSgpLCBvID0gZS5sZW5ndGggLSAxOyAwIDw9IG87IG8tLSkgdCA9IGVbb10sIGkgPSB0aGlzLl9nZXRMYXllcih0LmxheWVySWQpLmxheWVyLCB0LmRpc2FibGVkID0gdm9pZCAwICE9PSBpLm9wdGlvbnMubWluWm9vbSAmJiBuIDwgaS5vcHRpb25zLm1pblpvb20gfHwgdm9pZCAwICE9PSBpLm9wdGlvbnMubWF4Wm9vbSAmJiBuID4gaS5vcHRpb25zLm1heFpvb20KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2V4cGFuZElmTm90Q29sbGFwc2VkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXAgJiYgIXRoaXMub3B0aW9ucy5jb2xsYXBzZWQgJiYgdGhpcy5leHBhbmQoKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBfZXhwYW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cGFuZCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9jb2xsYXBzZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsYXBzZSgpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwKICAgICAgICBpZSA9IFFpLmV4dGVuZCh7CiAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAidG9wbGVmdCIsCiAgICAgICAgICAgICAgICB6b29tSW5UZXh0OiAiKyIsCiAgICAgICAgICAgICAgICB6b29tSW5UaXRsZTogIlpvb20gaW4iLAogICAgICAgICAgICAgICAgem9vbU91dFRleHQ6ICImI3gyMjEyOyIsCiAgICAgICAgICAgICAgICB6b29tT3V0VGl0bGU6ICJab29tIG91dCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25BZGQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gImxlYWZsZXQtY29udHJvbC16b29tIiwKICAgICAgICAgICAgICAgICAgICBlID0gaGkoImRpdiIsIGkgKyAiIGxlYWZsZXQtYmFyIiksCiAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl96b29tSW5CdXR0b24gPSB0aGlzLl9jcmVhdGVCdXR0b24obi56b29tSW5UZXh0LCBuLnpvb21JblRpdGxlLCBpICsgIi1pbiIsIGUsIHRoaXMuX3pvb21JbiksIHRoaXMuX3pvb21PdXRCdXR0b24gPSB0aGlzLl9jcmVhdGVCdXR0b24obi56b29tT3V0VGV4dCwgbi56b29tT3V0VGl0bGUsIGkgKyAiLW91dCIsIGUsIHRoaXMuX3pvb21PdXQpLCB0aGlzLl91cGRhdGVEaXNhYmxlZCgpLCB0Lm9uKCJ6b29tZW5kIHpvb21sZXZlbHNjaGFuZ2UiLCB0aGlzLl91cGRhdGVEaXNhYmxlZCwgdGhpcyksIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25SZW1vdmU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHQub2ZmKCJ6b29tZW5kIHpvb21sZXZlbHNjaGFuZ2UiLCB0aGlzLl91cGRhdGVEaXNhYmxlZCwgdGhpcykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGlzYWJsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgPSAhMCwgdGhpcy5fdXBkYXRlRGlzYWJsZWQoKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkID0gITEsIHRoaXMuX3VwZGF0ZURpc2FibGVkKCksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3pvb21JbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgIXRoaXMuX2Rpc2FibGVkICYmIHRoaXMuX21hcC5fem9vbSA8IHRoaXMuX21hcC5nZXRNYXhab29tKCkgJiYgdGhpcy5fbWFwLnpvb21Jbih0aGlzLl9tYXAub3B0aW9ucy56b29tRGVsdGEgKiAodC5zaGlmdEtleSA/IDMgOiAxKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3pvb21PdXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICF0aGlzLl9kaXNhYmxlZCAmJiB0aGlzLl9tYXAuX3pvb20gPiB0aGlzLl9tYXAuZ2V0TWluWm9vbSgpICYmIHRoaXMuX21hcC56b29tT3V0KHRoaXMuX21hcC5vcHRpb25zLnpvb21EZWx0YSAqICh0LnNoaWZ0S2V5ID8gMyA6IDEpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY3JlYXRlQnV0dG9uOiBmdW5jdGlvbih0LCBpLCBlLCBuLCBvKSB7CiAgICAgICAgICAgICAgICB2YXIgcyA9IGhpKCJhIiwgZSwgbik7CiAgICAgICAgICAgICAgICByZXR1cm4gcy5pbm5lckhUTUwgPSB0LCBzLmhyZWYgPSAiIyIsIHMudGl0bGUgPSBpLCBzLnNldEF0dHJpYnV0ZSgicm9sZSIsICJidXR0b24iKSwgcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBpKSwgTmkocyksIEVpKHMsICJjbGljayIsIGppKSwgRWkocywgImNsaWNrIiwgbywgdGhpcyksIEVpKHMsICJjbGljayIsIHRoaXMuX3JlZm9jdXNPbk1hcCwgdGhpcyksIHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZURpc2FibGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fbWFwLAogICAgICAgICAgICAgICAgICAgIGkgPSAibGVhZmxldC1kaXNhYmxlZCI7CiAgICAgICAgICAgICAgICBtaSh0aGlzLl96b29tSW5CdXR0b24sIGkpLCBtaSh0aGlzLl96b29tT3V0QnV0dG9uLCBpKSwgIXRoaXMuX2Rpc2FibGVkICYmIHQuX3pvb20gIT09IHQuZ2V0TWluWm9vbSgpIHx8IHBpKHRoaXMuX3pvb21PdXRCdXR0b24sIGkpLCAhdGhpcy5fZGlzYWJsZWQgJiYgdC5fem9vbSAhPT0gdC5nZXRNYXhab29tKCkgfHwgcGkodGhpcy5fem9vbUluQnV0dG9uLCBpKQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICBKaS5tZXJnZU9wdGlvbnMoewogICAgICAgIHpvb21Db250cm9sOiAhMAogICAgfSksIEppLmFkZEluaXRIb29rKGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMub3B0aW9ucy56b29tQ29udHJvbCAmJiAodGhpcy56b29tQ29udHJvbCA9IG5ldyBpZSwgdGhpcy5hZGRDb250cm9sKHRoaXMuem9vbUNvbnRyb2wpKQogICAgfSk7CiAgICB2YXIgZWUgPSBRaS5leHRlbmQoewogICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogImJvdHRvbWxlZnQiLAogICAgICAgICAgICAgICAgbWF4V2lkdGg6IDEwMCwKICAgICAgICAgICAgICAgIG1ldHJpYzogITAsCiAgICAgICAgICAgICAgICBpbXBlcmlhbDogITAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25BZGQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gImxlYWZsZXQtY29udHJvbC1zY2FsZSIsCiAgICAgICAgICAgICAgICAgICAgZSA9IGhpKCJkaXYiLCBpKSwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5vcHRpb25zOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFNjYWxlcyhuLCBpICsgIi1saW5lIiwgZSksIHQub24obi51cGRhdGVXaGVuSWRsZSA/ICJtb3ZlZW5kIiA6ICJtb3ZlIiwgdGhpcy5fdXBkYXRlLCB0aGlzKSwgdC53aGVuUmVhZHkodGhpcy5fdXBkYXRlLCB0aGlzKSwgZQogICAgICAgICAgICB9LAogICAgICAgICAgICBvblJlbW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdC5vZmYodGhpcy5vcHRpb25zLnVwZGF0ZVdoZW5JZGxlID8gIm1vdmVlbmQiIDogIm1vdmUiLCB0aGlzLl91cGRhdGUsIHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9hZGRTY2FsZXM6IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICAgICAgICAgIHQubWV0cmljICYmICh0aGlzLl9tU2NhbGUgPSBoaSgiZGl2IiwgaSwgZSkpLCB0LmltcGVyaWFsICYmICh0aGlzLl9pU2NhbGUgPSBoaSgiZGl2IiwgaSwgZSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9tYXAsCiAgICAgICAgICAgICAgICAgICAgaSA9IHQuZ2V0U2l6ZSgpLnkgLyAyLAogICAgICAgICAgICAgICAgICAgIGUgPSB0LmRpc3RhbmNlKHQuY29udGFpbmVyUG9pbnRUb0xhdExuZyhbMCwgaV0pLCB0LmNvbnRhaW5lclBvaW50VG9MYXRMbmcoW3RoaXMub3B0aW9ucy5tYXhXaWR0aCwgaV0pKTsKICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNjYWxlcyhlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlU2NhbGVzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMubWV0cmljICYmIHQgJiYgdGhpcy5fdXBkYXRlTWV0cmljKHQpLCB0aGlzLm9wdGlvbnMuaW1wZXJpYWwgJiYgdCAmJiB0aGlzLl91cGRhdGVJbXBlcmlhbCh0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlTWV0cmljOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX2dldFJvdW5kTnVtKHQpLAogICAgICAgICAgICAgICAgICAgIGUgPSBpIDwgMWUzID8gaSArICIgbSIgOiBpIC8gMWUzICsgIiBrbSI7CiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTY2FsZSh0aGlzLl9tU2NhbGUsIGUsIGkgLyB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlSW1wZXJpYWw6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBlLCBuLCBvID0gMy4yODA4Mzk5ICogdDsKICAgICAgICAgICAgICAgIDUyODAgPCBvID8gKGkgPSBvIC8gNTI4MCwgZSA9IHRoaXMuX2dldFJvdW5kTnVtKGkpLCB0aGlzLl91cGRhdGVTY2FsZSh0aGlzLl9pU2NhbGUsIGUgKyAiIG1pIiwgZSAvIGkpKSA6IChuID0gdGhpcy5fZ2V0Um91bmROdW0obyksIHRoaXMuX3VwZGF0ZVNjYWxlKHRoaXMuX2lTY2FsZSwgbiArICIgZnQiLCBuIC8gbykpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGVTY2FsZTogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICAgICAgdC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQodGhpcy5vcHRpb25zLm1heFdpZHRoICogZSkgKyAicHgiLCB0LmlubmVySFRNTCA9IGkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldFJvdW5kTnVtOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IE1hdGgucG93KDEwLCAoTWF0aC5mbG9vcih0KSArICIiKS5sZW5ndGggLSAxKSwKICAgICAgICAgICAgICAgICAgICBlID0gdCAvIGk7CiAgICAgICAgICAgICAgICByZXR1cm4gaSAqIChlID0gMTAgPD0gZSA/IDEwIDogNSA8PSBlID8gNSA6IDMgPD0gZSA/IDMgOiAyIDw9IGUgPyAyIDogMSkKICAgICAgICAgICAgfQogICAgICAgIH0pLAogICAgICAgIG5lID0gUWkuZXh0ZW5kKHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgcG9zaXRpb246ICJib3R0b21yaWdodCIsCiAgICAgICAgICAgICAgICBwcmVmaXg6ICc8YSBocmVmPSJodHRwczovL2xlYWZsZXRqcy5jb20iIHRpdGxlPSJBIEpTIGxpYnJhcnkgZm9yIGludGVyYWN0aXZlIG1hcHMiPkxlYWZsZXQ8L2E+JwogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBwKHRoaXMsIHQpLCB0aGlzLl9hdHRyaWJ1dGlvbnMgPSB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkFkZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiAodC5hdHRyaWJ1dGlvbkNvbnRyb2wgPSB0aGlzKS5fY29udGFpbmVyID0gaGkoImRpdiIsICJsZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24iKSwgTmkodGhpcy5fY29udGFpbmVyKSwgdC5fbGF5ZXJzKSB0Ll9sYXllcnNbaV0uZ2V0QXR0cmlidXRpb24gJiYgdGhpcy5hZGRBdHRyaWJ1dGlvbih0Ll9sYXllcnNbaV0uZ2V0QXR0cmlidXRpb24oKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlKCksIHRoaXMuX2NvbnRhaW5lcgogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRQcmVmaXg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJlZml4ID0gdCwgdGhpcy5fdXBkYXRlKCksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWRkQXR0cmlidXRpb246IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0ICYmICh0aGlzLl9hdHRyaWJ1dGlvbnNbdF0gfHwgKHRoaXMuX2F0dHJpYnV0aW9uc1t0XSA9IDApLCB0aGlzLl9hdHRyaWJ1dGlvbnNbdF0rKywgdGhpcy5fdXBkYXRlKCkpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbW92ZUF0dHJpYnV0aW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiB0aGlzLl9hdHRyaWJ1dGlvbnNbdF0gJiYgKHRoaXMuX2F0dHJpYnV0aW9uc1t0XS0tLCB0aGlzLl91cGRhdGUoKSksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWFwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBbXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMuX2F0dHJpYnV0aW9ucykgdGhpcy5fYXR0cmlidXRpb25zW2ldICYmIHQucHVzaChpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFtdOwogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wcmVmaXggJiYgZS5wdXNoKHRoaXMub3B0aW9ucy5wcmVmaXgpLCB0Lmxlbmd0aCAmJiBlLnB1c2godC5qb2luKCIsICIpKSwgdGhpcy5fY29udGFpbmVyLmlubmVySFRNTCA9IGUuam9pbigiIHwgIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgSmkubWVyZ2VPcHRpb25zKHsKICAgICAgICBhdHRyaWJ1dGlvbkNvbnRyb2w6ICEwCiAgICB9KSwgSmkuYWRkSW5pdEhvb2soZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0aW9uQ29udHJvbCAmJiAobmV3IG5lKS5hZGRUbyh0aGlzKQogICAgfSk7CiAgICBRaS5MYXllcnMgPSB0ZSwgUWkuWm9vbSA9IGllLCBRaS5TY2FsZSA9IGVlLCBRaS5BdHRyaWJ1dGlvbiA9IG5lLCAkaS5sYXllcnMgPSBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgcmV0dXJuIG5ldyB0ZSh0LCBpLCBlKQogICAgfSwgJGkuem9vbSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gbmV3IGllKHQpCiAgICB9LCAkaS5zY2FsZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gbmV3IGVlKHQpCiAgICB9LCAkaS5hdHRyaWJ1dGlvbiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gbmV3IG5lKHQpCiAgICB9OwogICAgdmFyIG9lID0gWi5leHRlbmQoewogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdGhpcy5fbWFwID0gdAogICAgICAgIH0sCiAgICAgICAgZW5hYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQgfHwgKHRoaXMuX2VuYWJsZWQgPSAhMCwgdGhpcy5hZGRIb29rcygpKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgZGlzYWJsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkICYmICh0aGlzLl9lbmFibGVkID0gITEsIHRoaXMucmVtb3ZlSG9va3MoKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGVuYWJsZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gISF0aGlzLl9lbmFibGVkCiAgICAgICAgfQogICAgfSk7CiAgICBvZS5hZGRUbyA9IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICByZXR1cm4gdC5hZGRIYW5kbGVyKGksIHRoaXMpLCB0aGlzCiAgICB9OwogICAgdmFyIHNlLCByZSA9IHsKICAgICAgICAgICAgRXZlbnRzOiBFCiAgICAgICAgfSwKICAgICAgICBhZSA9IFR0ID8gInRvdWNoc3RhcnQgbW91c2Vkb3duIiA6ICJtb3VzZWRvd24iLAogICAgICAgIGhlID0gewogICAgICAgICAgICBtb3VzZWRvd246ICJtb3VzZXVwIiwKICAgICAgICAgICAgdG91Y2hzdGFydDogInRvdWNoZW5kIiwKICAgICAgICAgICAgcG9pbnRlcmRvd246ICJ0b3VjaGVuZCIsCiAgICAgICAgICAgIE1TUG9pbnRlckRvd246ICJ0b3VjaGVuZCIKICAgICAgICB9LAogICAgICAgIHVlID0gewogICAgICAgICAgICBtb3VzZWRvd246ICJtb3VzZW1vdmUiLAogICAgICAgICAgICB0b3VjaHN0YXJ0OiAidG91Y2htb3ZlIiwKICAgICAgICAgICAgcG9pbnRlcmRvd246ICJ0b3VjaG1vdmUiLAogICAgICAgICAgICBNU1BvaW50ZXJEb3duOiAidG91Y2htb3ZlIgogICAgICAgIH0sCiAgICAgICAgbGUgPSBrLmV4dGVuZCh7CiAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIGNsaWNrVG9sZXJhbmNlOiAzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHQsIGksIGUsIG4pIHsKICAgICAgICAgICAgICAgIHAodGhpcywgbiksIHRoaXMuX2VsZW1lbnQgPSB0LCB0aGlzLl9kcmFnU3RhcnRUYXJnZXQgPSBpIHx8IHQsIHRoaXMuX3ByZXZlbnRPdXRsaW5lID0gZQogICAgICAgICAgICB9LAogICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlZCB8fCAoRWkodGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LCBhZSwgdGhpcy5fb25Eb3duLCB0aGlzKSwgdGhpcy5fZW5hYmxlZCA9ICEwKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZWQgJiYgKGxlLl9kcmFnZ2luZyA9PT0gdGhpcyAmJiB0aGlzLmZpbmlzaERyYWcoKSwgQmkodGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LCBhZSwgdGhpcy5fb25Eb3duLCB0aGlzKSwgdGhpcy5fZW5hYmxlZCA9ICExLCB0aGlzLl9tb3ZlZCA9ICExKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25Eb3duOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIXQuX3NpbXVsYXRlZCAmJiB0aGlzLl9lbmFibGVkICYmICh0aGlzLl9tb3ZlZCA9ICExLCAhZGkodGhpcy5fZWxlbWVudCwgImxlYWZsZXQtem9vbS1hbmltIikgJiYgIShsZS5fZHJhZ2dpbmcgfHwgdC5zaGlmdEtleSB8fCAxICE9PSB0LndoaWNoICYmIDEgIT09IHQuYnV0dG9uICYmICF0LnRvdWNoZXMgfHwgKChsZS5fZHJhZ2dpbmcgPSB0aGlzKS5fcHJldmVudE91dGxpbmUgJiYgemkodGhpcy5fZWxlbWVudCksIGJpKCksICR0KCksIHRoaXMuX21vdmluZykpKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyZSgiZG93biIpOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC50b3VjaGVzID8gdC50b3VjaGVzWzBdIDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IENpKHRoaXMuX2VsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0UG9pbnQgPSBuZXcgQihpLmNsaWVudFgsIGkuY2xpZW50WSksIHRoaXMuX3BhcmVudFNjYWxlID0gU2koZSksIEVpKGRvY3VtZW50LCB1ZVt0LnR5cGVdLCB0aGlzLl9vbk1vdmUsIHRoaXMpLCBFaShkb2N1bWVudCwgaGVbdC50eXBlXSwgdGhpcy5fb25VcCwgdGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uTW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKCF0Ll9zaW11bGF0ZWQgJiYgdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgICAgICAgICBpZiAodC50b3VjaGVzICYmIDEgPCB0LnRvdWNoZXMubGVuZ3RoKSB0aGlzLl9tb3ZlZCA9ICEwOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQudG91Y2hlcyAmJiAxID09PSB0LnRvdWNoZXMubGVuZ3RoID8gdC50b3VjaGVzWzBdIDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgQihpLmNsaWVudFgsIGkuY2xpZW50WSkuX3N1YnRyYWN0KHRoaXMuX3N0YXJ0UG9pbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAoZS54IHx8IGUueSkgJiYgKE1hdGguYWJzKGUueCkgKyBNYXRoLmFicyhlLnkpIDwgdGhpcy5vcHRpb25zLmNsaWNrVG9sZXJhbmNlIHx8IChlLnggLz0gdGhpcy5fcGFyZW50U2NhbGUueCwgZS55IC89IHRoaXMuX3BhcmVudFNjYWxlLnksIERpKHQpLCB0aGlzLl9tb3ZlZCB8fCAodGhpcy5maXJlKCJkcmFnc3RhcnQiKSwgdGhpcy5fbW92ZWQgPSAhMCwgdGhpcy5fc3RhcnRQb3MgPSBQaSh0aGlzLl9lbGVtZW50KS5zdWJ0cmFjdChlKSwgcGkoZG9jdW1lbnQuYm9keSwgImxlYWZsZXQtZHJhZ2dpbmciKSwgdGhpcy5fbGFzdFRhcmdldCA9IHQudGFyZ2V0IHx8IHQuc3JjRWxlbWVudCwgd2luZG93LlNWR0VsZW1lbnRJbnN0YW5jZSAmJiB0aGlzLl9sYXN0VGFyZ2V0IGluc3RhbmNlb2YgU1ZHRWxlbWVudEluc3RhbmNlICYmICh0aGlzLl9sYXN0VGFyZ2V0ID0gdGhpcy5fbGFzdFRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksIHBpKHRoaXMuX2xhc3RUYXJnZXQsICJsZWFmbGV0LWRyYWctdGFyZ2V0IikpLCB0aGlzLl9uZXdQb3MgPSB0aGlzLl9zdGFydFBvcy5hZGQoZSksIHRoaXMuX21vdmluZyA9ICEwLCBDKHRoaXMuX2FuaW1SZXF1ZXN0KSwgdGhpcy5fbGFzdEV2ZW50ID0gdCwgdGhpcy5fYW5pbVJlcXVlc3QgPSBNKHRoaXMuX3VwZGF0ZVBvc2l0aW9uLCB0aGlzLCAhMCkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IHRoaXMuX2xhc3RFdmVudAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuZmlyZSgicHJlZHJhZyIsIHQpLCB3aSh0aGlzLl9lbGVtZW50LCB0aGlzLl9uZXdQb3MpLCB0aGlzLmZpcmUoImRyYWciLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25VcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgIXQuX3NpbXVsYXRlZCAmJiB0aGlzLl9lbmFibGVkICYmIHRoaXMuZmluaXNoRHJhZygpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZpbmlzaERyYWc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCBpbiBtaShkb2N1bWVudC5ib2R5LCAibGVhZmxldC1kcmFnZ2luZyIpLCB0aGlzLl9sYXN0VGFyZ2V0ICYmIChtaSh0aGlzLl9sYXN0VGFyZ2V0LCAibGVhZmxldC1kcmFnLXRhcmdldCIpLCB0aGlzLl9sYXN0VGFyZ2V0ID0gbnVsbCksIHVlKSBCaShkb2N1bWVudCwgdWVbdF0sIHRoaXMuX29uTW92ZSwgdGhpcyksIEJpKGRvY3VtZW50LCBoZVt0XSwgdGhpcy5fb25VcCwgdGhpcyk7CiAgICAgICAgICAgICAgICBUaSgpLCBRdCgpLCB0aGlzLl9tb3ZlZCAmJiB0aGlzLl9tb3ZpbmcgJiYgKEModGhpcy5fYW5pbVJlcXVlc3QpLCB0aGlzLmZpcmUoImRyYWdlbmQiLCB7CiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IHRoaXMuX25ld1Bvcy5kaXN0YW5jZVRvKHRoaXMuX3N0YXJ0UG9zKQogICAgICAgICAgICAgICAgfSkpLCB0aGlzLl9tb3ZpbmcgPSAhMSwgbGUuX2RyYWdnaW5nID0gITEKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgIGZ1bmN0aW9uIGNlKHQsIGkpIHsKICAgICAgICBpZiAoIWkgfHwgIXQubGVuZ3RoKSByZXR1cm4gdC5zbGljZSgpOwogICAgICAgIHZhciBlID0gaSAqIGk7CiAgICAgICAgcmV0dXJuIHQgPSBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHZhciBlID0gdC5sZW5ndGgsCiAgICAgICAgICAgICAgICBuID0gbmV3KHR5cGVvZiBVaW50OEFycmF5ICE9IHZvaWQgMCArICIiID8gVWludDhBcnJheSA6IEFycmF5KShlKTsKICAgICAgICAgICAgblswXSA9IG5bZSAtIDFdID0gMSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoaSwgZSwgbiwgbywgcykgewogICAgICAgICAgICAgICAgICAgIHZhciByLCBhLCBoLCB1ID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBvICsgMTsgYSA8PSBzIC0gMTsgYSsrKSBoID0gZmUoaVthXSwgaVtvXSwgaVtzXSwgITApLCB1IDwgaCAmJiAociA9IGEsIHUgPSBoKTsKICAgICAgICAgICAgICAgICAgICBuIDwgdSAmJiAoZVtyXSA9IDEsIHQoaSwgZSwgbiwgbywgciksIHQoaSwgZSwgbiwgciwgcykpCiAgICAgICAgICAgICAgICB9KHQsIG4sIGksIDAsIGUgLSAxKTsKICAgICAgICAgICAgdmFyIG8sIHMgPSBbXTsKICAgICAgICAgICAgZm9yIChvID0gMDsgbyA8IGU7IG8rKykgbltvXSAmJiBzLnB1c2godFtvXSk7CiAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgfSh0ID0gZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICBmb3IgKHZhciBlID0gW3RbMF1dLCBuID0gMSwgbyA9IDAsIHMgPSB0Lmxlbmd0aDsgbiA8IHM7IG4rKykgciA9IHRbbl0sIGEgPSB0W29dLCB2b2lkIDAsIGggPSBhLnggLSByLngsIHUgPSBhLnkgLSByLnksIGkgPCBoICogaCArIHUgKiB1ICYmIChlLnB1c2godFtuXSksIG8gPSBuKTsKICAgICAgICAgICAgdmFyIHIsIGEsIGgsIHU7CiAgICAgICAgICAgIG8gPCBzIC0gMSAmJiBlLnB1c2godFtzIC0gMV0pOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0odCwgZSksIGUpCiAgICB9CgogICAgZnVuY3Rpb24gX2UodCwgaSwgZSkgewogICAgICAgIHJldHVybiBNYXRoLnNxcnQoZmUodCwgaSwgZSwgITApKQogICAgfQoKICAgIGZ1bmN0aW9uIGRlKHQsIGksIGUsIG4sIG8pIHsKICAgICAgICB2YXIgcywgciwgYSwgaCA9IG4gPyBzZSA6IG1lKHQsIGUpLAogICAgICAgICAgICB1ID0gbWUoaSwgZSk7CiAgICAgICAgZm9yIChzZSA9IHU7OykgewogICAgICAgICAgICBpZiAoIShoIHwgdSkpIHJldHVybiBbdCwgaV07CiAgICAgICAgICAgIGlmIChoICYgdSkgcmV0dXJuICExOwogICAgICAgICAgICBhID0gbWUociA9IHBlKHQsIGksIHMgPSBoIHx8IHUsIGUsIG8pLCBlKSwgcyA9PT0gaCA/ICh0ID0gciwgaCA9IGEpIDogKGkgPSByLCB1ID0gYSkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcGUodCwgaSwgZSwgbiwgbykgewogICAgICAgIHZhciBzLCByLCBhID0gaS54IC0gdC54LAogICAgICAgICAgICBoID0gaS55IC0gdC55LAogICAgICAgICAgICB1ID0gbi5taW4sCiAgICAgICAgICAgIGwgPSBuLm1heDsKICAgICAgICByZXR1cm4gOCAmIGUgPyAocyA9IHQueCArIGEgKiAobC55IC0gdC55KSAvIGgsIHIgPSBsLnkpIDogNCAmIGUgPyAocyA9IHQueCArIGEgKiAodS55IC0gdC55KSAvIGgsIHIgPSB1LnkpIDogMiAmIGUgPyAocyA9IGwueCwgciA9IHQueSArIGggKiAobC54IC0gdC54KSAvIGEpIDogMSAmIGUgJiYgKHMgPSB1LngsIHIgPSB0LnkgKyBoICogKHUueCAtIHQueCkgLyBhKSwgbmV3IEIocywgciwgbykKICAgIH0KCiAgICBmdW5jdGlvbiBtZSh0LCBpKSB7CiAgICAgICAgdmFyIGUgPSAwOwogICAgICAgIHJldHVybiB0LnggPCBpLm1pbi54ID8gZSB8PSAxIDogdC54ID4gaS5tYXgueCAmJiAoZSB8PSAyKSwgdC55IDwgaS5taW4ueSA/IGUgfD0gNCA6IHQueSA+IGkubWF4LnkgJiYgKGUgfD0gOCksIGUKICAgIH0KCiAgICBmdW5jdGlvbiBmZSh0LCBpLCBlLCBuKSB7CiAgICAgICAgdmFyIG8sIHMgPSBpLngsCiAgICAgICAgICAgIHIgPSBpLnksCiAgICAgICAgICAgIGEgPSBlLnggLSBzLAogICAgICAgICAgICBoID0gZS55IC0gciwKICAgICAgICAgICAgdSA9IGEgKiBhICsgaCAqIGg7CiAgICAgICAgcmV0dXJuIDAgPCB1ICYmICgxIDwgKG8gPSAoKHQueCAtIHMpICogYSArICh0LnkgLSByKSAqIGgpIC8gdSkgPyAocyA9IGUueCwgciA9IGUueSkgOiAwIDwgbyAmJiAocyArPSBhICogbywgciArPSBoICogbykpLCBhID0gdC54IC0gcywgaCA9IHQueSAtIHIsIG4gPyBhICogYSArIGggKiBoIDogbmV3IEIocywgcikKICAgIH0KCiAgICBmdW5jdGlvbiBnZSh0KSB7CiAgICAgICAgcmV0dXJuICF2KHRbMF0pIHx8ICJvYmplY3QiICE9IHR5cGVvZiB0WzBdWzBdICYmIHZvaWQgMCAhPT0gdFswXVswXQogICAgfQoKICAgIGZ1bmN0aW9uIHZlKHQpIHsKICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKCJEZXByZWNhdGVkIHVzZSBvZiBfZmxhdCwgcGxlYXNlIHVzZSBMLkxpbmVVdGlsLmlzRmxhdCBpbnN0ZWFkLiIpLCBnZSh0KQogICAgfQogICAgdmFyIHllID0gKE9iamVjdC5mcmVlemUgfHwgT2JqZWN0KSh7CiAgICAgICAgc2ltcGxpZnk6IGNlLAogICAgICAgIHBvaW50VG9TZWdtZW50RGlzdGFuY2U6IF9lLAogICAgICAgIGNsb3Nlc3RQb2ludE9uU2VnbWVudDogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICByZXR1cm4gZmUodCwgaSwgZSkKICAgICAgICB9LAogICAgICAgIGNsaXBTZWdtZW50OiBkZSwKICAgICAgICBfZ2V0RWRnZUludGVyc2VjdGlvbjogcGUsCiAgICAgICAgX2dldEJpdENvZGU6IG1lLAogICAgICAgIF9zcUNsb3Nlc3RQb2ludE9uU2VnbWVudDogZmUsCiAgICAgICAgaXNGbGF0OiBnZSwKICAgICAgICBfZmxhdDogdmUKICAgIH0pOwoKICAgIGZ1bmN0aW9uIHhlKHQsIGksIGUpIHsKICAgICAgICB2YXIgbiwgbywgcywgciwgYSwgaCwgdSwgbCwgYywgXyA9IFsxLCA0LCAyLCA4XTsKICAgICAgICBmb3IgKG8gPSAwLCB1ID0gdC5sZW5ndGg7IG8gPCB1OyBvKyspIHRbb10uX2NvZGUgPSBtZSh0W29dLCBpKTsKICAgICAgICBmb3IgKHIgPSAwOyByIDwgNDsgcisrKSB7CiAgICAgICAgICAgIGZvciAobCA9IF9bcl0sIG4gPSBbXSwgbyA9IDAsIHMgPSAodSA9IHQubGVuZ3RoKSAtIDE7IG8gPCB1OyBzID0gbysrKSBhID0gdFtvXSwgaCA9IHRbc10sIGEuX2NvZGUgJiBsID8gaC5fY29kZSAmIGwgfHwgKChjID0gcGUoaCwgYSwgbCwgaSwgZSkpLl9jb2RlID0gbWUoYywgaSksIG4ucHVzaChjKSkgOiAoaC5fY29kZSAmIGwgJiYgKChjID0gcGUoaCwgYSwgbCwgaSwgZSkpLl9jb2RlID0gbWUoYywgaSksIG4ucHVzaChjKSksIG4ucHVzaChhKSk7CiAgICAgICAgICAgIHQgPSBuCiAgICAgICAgfQogICAgICAgIHJldHVybiB0CiAgICB9CiAgICB2YXIgd2UsIFBlID0gKE9iamVjdC5mcmVlemUgfHwgT2JqZWN0KSh7CiAgICAgICAgICAgIGNsaXBQb2x5Z29uOiB4ZQogICAgICAgIH0pLAogICAgICAgIExlID0gewogICAgICAgICAgICBwcm9qZWN0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEIodC5sbmcsIHQubGF0KQogICAgICAgICAgICB9LAogICAgICAgICAgICB1bnByb2plY3Q6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgaih0LnksIHQueCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYm91bmRzOiBuZXcgTyhbLTE4MCwgLTkwXSwgWzE4MCwgOTBdKQogICAgICAgIH0sCiAgICAgICAgYmUgPSB7CiAgICAgICAgICAgIFI6IDYzNzgxMzcsCiAgICAgICAgICAgIFJfTUlOT1I6IDYzNTY3NTIuMzE0MjQ1MTc5LAogICAgICAgICAgICBib3VuZHM6IG5ldyBPKFstMjAwMzc1MDguMzQyNzksIC0xNTQ5NjU3MC43Mzk3Ml0sIFsyMDAzNzUwOC4zNDI3OSwgMTg3NjQ2NTYuMjMxMzhdKSwKICAgICAgICAgICAgcHJvamVjdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSBNYXRoLlBJIC8gMTgwLAogICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLlIsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQubGF0ICogaSwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5SX01JTk9SIC8gZSwKICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5zcXJ0KDEgLSBvICogbyksCiAgICAgICAgICAgICAgICAgICAgciA9IHMgKiBNYXRoLnNpbihuKSwKICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC50YW4oTWF0aC5QSSAvIDQgLSBuIC8gMikgLyBNYXRoLnBvdygoMSAtIHIpIC8gKDEgKyByKSwgcyAvIDIpOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gPSAtZSAqIE1hdGgubG9nKE1hdGgubWF4KGEsIDFlLTEwKSksIG5ldyBCKHQubG5nICogaSAqIGUsIG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVucHJvamVjdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSwgZSA9IDE4MCAvIE1hdGguUEksIG4gPSB0aGlzLlIsIG8gPSB0aGlzLlJfTUlOT1IgLyBuLCBzID0gTWF0aC5zcXJ0KDEgLSBvICogbyksIHIgPSBNYXRoLmV4cCgtdC55IC8gbiksIGEgPSBNYXRoLlBJIC8gMiAtIDIgKiBNYXRoLmF0YW4ociksIGggPSAwLCB1ID0gLjE7IGggPCAxNSAmJiAxZS03IDwgTWF0aC5hYnModSk7IGgrKykgaSA9IHMgKiBNYXRoLnNpbihhKSwgaSA9IE1hdGgucG93KCgxIC0gaSkgLyAoMSArIGkpLCBzIC8gMiksIGEgKz0gdSA9IE1hdGguUEkgLyAyIC0gMiAqIE1hdGguYXRhbihyICogaSkgLSBhOwogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBqKGEgKiBlLCB0LnggKiBlIC8gbikKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgVGUgPSAoT2JqZWN0LmZyZWV6ZSB8fCBPYmplY3QpKHsKICAgICAgICAgICAgTG9uTGF0OiBMZSwKICAgICAgICAgICAgTWVyY2F0b3I6IGJlLAogICAgICAgICAgICBTcGhlcmljYWxNZXJjYXRvcjogcQogICAgICAgIH0pLAogICAgICAgIHplID0gaCh7fSwgVSwgewogICAgICAgICAgICBjb2RlOiAiRVBTRzozMzk1IiwKICAgICAgICAgICAgcHJvamVjdGlvbjogYmUsCiAgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uOiAod2UgPSAuNSAvIChNYXRoLlBJICogYmUuUiksIEsod2UsIC41LCAtd2UsIC41KSkKICAgICAgICB9KSwKICAgICAgICBNZSA9IGgoe30sIFUsIHsKICAgICAgICAgICAgY29kZTogIkVQU0c6NDMyNiIsCiAgICAgICAgICAgIHByb2plY3Rpb246IExlLAogICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbjogSygxIC8gMTgwLCAxLCAtMSAvIDE4MCwgLjUpCiAgICAgICAgfSksCiAgICAgICAgQ2UgPSBoKHt9LCBGLCB7CiAgICAgICAgICAgIHByb2plY3Rpb246IExlLAogICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbjogSygxLCAwLCAtMSwgMCksCiAgICAgICAgICAgIHNjYWxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5wb3coMiwgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgem9vbTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubG9nKHQpIC8gTWF0aC5MTjIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGlzdGFuY2U6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gaS5sbmcgLSB0LmxuZywKICAgICAgICAgICAgICAgICAgICBuID0gaS5sYXQgLSB0LmxhdDsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoZSAqIGUgKyBuICogbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5maW5pdGU6ICEwCiAgICAgICAgfSk7CiAgICBGLkVhcnRoID0gVSwgRi5FUFNHMzM5NSA9IHplLCBGLkVQU0czODU3ID0gWCwgRi5FUFNHOTAwOTEzID0gSiwgRi5FUFNHNDMyNiA9IE1lLCBGLlNpbXBsZSA9IENlOwogICAgdmFyIFNlID0gay5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgcGFuZTogIm92ZXJsYXlQYW5lIiwKICAgICAgICAgICAgYXR0cmlidXRpb246IG51bGwsCiAgICAgICAgICAgIGJ1YmJsaW5nTW91c2VFdmVudHM6ICEwCiAgICAgICAgfSwKICAgICAgICBhZGRUbzogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5hZGRMYXllcih0aGlzKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRnJvbSh0aGlzLl9tYXAgfHwgdGhpcy5fbWFwVG9BZGQpCiAgICAgICAgfSwKICAgICAgICByZW1vdmVGcm9tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0ICYmIHQucmVtb3ZlTGF5ZXIodGhpcyksIHRoaXMKICAgICAgICB9LAogICAgICAgIGdldFBhbmU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5nZXRQYW5lKHQgPyB0aGlzLm9wdGlvbnNbdF0gfHwgdCA6IHRoaXMub3B0aW9ucy5wYW5lKQogICAgICAgIH0sCiAgICAgICAgYWRkSW50ZXJhY3RpdmVUYXJnZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5fdGFyZ2V0c1t1KHQpXSA9IHRoaXMKICAgICAgICB9LAogICAgICAgIHJlbW92ZUludGVyYWN0aXZlVGFyZ2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBkZWxldGUgdGhpcy5fbWFwLl90YXJnZXRzW3UodCldLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBnZXRBdHRyaWJ1dGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRpb24KICAgICAgICB9LAogICAgICAgIF9sYXllckFkZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSA9IHQudGFyZ2V0OwogICAgICAgICAgICBpZiAoaS5oYXNMYXllcih0aGlzKSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuX21hcCA9IGksIHRoaXMuX3pvb21BbmltYXRlZCA9IGkuX3pvb21BbmltYXRlZCwgdGhpcy5nZXRFdmVudHMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0RXZlbnRzKCk7CiAgICAgICAgICAgICAgICAgICAgaS5vbihlLCB0aGlzKSwgdGhpcy5vbmNlKCJyZW1vdmUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5vZmYoZSwgdGhpcykKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5vbkFkZChpKSwgdGhpcy5nZXRBdHRyaWJ1dGlvbiAmJiBpLmF0dHJpYnV0aW9uQ29udHJvbCAmJiBpLmF0dHJpYnV0aW9uQ29udHJvbC5hZGRBdHRyaWJ1dGlvbih0aGlzLmdldEF0dHJpYnV0aW9uKCkpLCB0aGlzLmZpcmUoImFkZCIpLCBpLmZpcmUoImxheWVyYWRkIiwgewogICAgICAgICAgICAgICAgICAgIGxheWVyOiB0aGlzCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICBKaS5pbmNsdWRlKHsKICAgICAgICBhZGRMYXllcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICBpZiAoIXQuX2xheWVyQWRkKSB0aHJvdyBuZXcgRXJyb3IoIlRoZSBwcm92aWRlZCBvYmplY3QgaXMgbm90IGEgTGF5ZXIuIik7CiAgICAgICAgICAgIHZhciBpID0gdSh0KTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xheWVyc1tpXSB8fCAoKHRoaXMuX2xheWVyc1tpXSA9IHQpLl9tYXBUb0FkZCA9IHRoaXMsIHQuYmVmb3JlQWRkICYmIHQuYmVmb3JlQWRkKHRoaXMpLCB0aGlzLndoZW5SZWFkeSh0Ll9sYXllckFkZCwgdCkpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICByZW1vdmVMYXllcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSA9IHUodCk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sYXllcnNbaV0gJiYgKHRoaXMuX2xvYWRlZCAmJiB0Lm9uUmVtb3ZlKHRoaXMpLCB0LmdldEF0dHJpYnV0aW9uICYmIHRoaXMuYXR0cmlidXRpb25Db250cm9sICYmIHRoaXMuYXR0cmlidXRpb25Db250cm9sLnJlbW92ZUF0dHJpYnV0aW9uKHQuZ2V0QXR0cmlidXRpb24oKSksIGRlbGV0ZSB0aGlzLl9sYXllcnNbaV0sIHRoaXMuX2xvYWRlZCAmJiAodGhpcy5maXJlKCJsYXllcnJlbW92ZSIsIHsKICAgICAgICAgICAgICAgIGxheWVyOiB0CiAgICAgICAgICAgIH0pLCB0LmZpcmUoInJlbW92ZSIpKSwgdC5fbWFwID0gdC5fbWFwVG9BZGQgPSBudWxsKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgaGFzTGF5ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICEhdCAmJiB1KHQpIGluIHRoaXMuX2xheWVycwogICAgICAgIH0sCiAgICAgICAgZWFjaExheWVyOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgaW4gdGhpcy5fbGF5ZXJzKSB0LmNhbGwoaSwgdGhpcy5fbGF5ZXJzW2VdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIF9hZGRMYXllcnM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGUgPSAodCA9IHQgPyB2KHQpID8gdCA6IFt0XSA6IFtdKS5sZW5ndGg7IGkgPCBlOyBpKyspIHRoaXMuYWRkTGF5ZXIodFtpXSkKICAgICAgICB9LAogICAgICAgIF9hZGRab29tTGltaXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgIWlzTmFOKHQub3B0aW9ucy5tYXhab29tKSAmJiBpc05hTih0Lm9wdGlvbnMubWluWm9vbSkgfHwgKHRoaXMuX3pvb21Cb3VuZExheWVyc1t1KHQpXSA9IHQsIHRoaXMuX3VwZGF0ZVpvb21MZXZlbHMoKSkKICAgICAgICB9LAogICAgICAgIF9yZW1vdmVab29tTGltaXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB1KHQpOwogICAgICAgICAgICB0aGlzLl96b29tQm91bmRMYXllcnNbaV0gJiYgKGRlbGV0ZSB0aGlzLl96b29tQm91bmRMYXllcnNbaV0sIHRoaXMuX3VwZGF0ZVpvb21MZXZlbHMoKSkKICAgICAgICB9LAogICAgICAgIF91cGRhdGVab29tTGV2ZWxzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSAxIC8gMCwKICAgICAgICAgICAgICAgIGkgPSAtMSAvIDAsCiAgICAgICAgICAgICAgICBlID0gdGhpcy5fZ2V0Wm9vbVNwYW4oKTsKICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0aGlzLl96b29tQm91bmRMYXllcnMpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5fem9vbUJvdW5kTGF5ZXJzW25dLm9wdGlvbnM7CiAgICAgICAgICAgICAgICB0ID0gdm9pZCAwID09PSBvLm1pblpvb20gPyB0IDogTWF0aC5taW4odCwgby5taW5ab29tKSwgaSA9IHZvaWQgMCA9PT0gby5tYXhab29tID8gaSA6IE1hdGgubWF4KGksIG8ubWF4Wm9vbSkKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl9sYXllcnNNYXhab29tID0gaSA9PT0gLTEgLyAwID8gdm9pZCAwIDogaSwgdGhpcy5fbGF5ZXJzTWluWm9vbSA9IHQgPT09IDEgLyAwID8gdm9pZCAwIDogdCwgZSAhPT0gdGhpcy5fZ2V0Wm9vbVNwYW4oKSAmJiB0aGlzLmZpcmUoInpvb21sZXZlbHNjaGFuZ2UiKSwgdm9pZCAwID09PSB0aGlzLm9wdGlvbnMubWF4Wm9vbSAmJiB0aGlzLl9sYXllcnNNYXhab29tICYmIHRoaXMuZ2V0Wm9vbSgpID4gdGhpcy5fbGF5ZXJzTWF4Wm9vbSAmJiB0aGlzLnNldFpvb20odGhpcy5fbGF5ZXJzTWF4Wm9vbSksIHZvaWQgMCA9PT0gdGhpcy5vcHRpb25zLm1pblpvb20gJiYgdGhpcy5fbGF5ZXJzTWluWm9vbSAmJiB0aGlzLmdldFpvb20oKSA8IHRoaXMuX2xheWVyc01pblpvb20gJiYgdGhpcy5zZXRab29tKHRoaXMuX2xheWVyc01pblpvb20pCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgWmUgPSBTZS5leHRlbmQoewogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgICAgIGlmIChwKHRoaXMsIGkpLCB0aGlzLl9sYXllcnMgPSB7fSwgdCkKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwLCBuID0gdC5sZW5ndGg7IGUgPCBuOyBlKyspIHRoaXMuYWRkTGF5ZXIodFtlXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWRkTGF5ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5nZXRMYXllcklkKHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xheWVyc1tpXSA9IHQsIHRoaXMuX21hcCAmJiB0aGlzLl9tYXAuYWRkTGF5ZXIodCksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVtb3ZlTGF5ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdCBpbiB0aGlzLl9sYXllcnMgPyB0IDogdGhpcy5nZXRMYXllcklkKHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hcCAmJiB0aGlzLl9sYXllcnNbaV0gJiYgdGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1tpXSksIGRlbGV0ZSB0aGlzLl9sYXllcnNbaV0sIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGFzTGF5ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIXQgJiYgKHQgaW4gdGhpcy5fbGF5ZXJzIHx8IHRoaXMuZ2V0TGF5ZXJJZCh0KSBpbiB0aGlzLl9sYXllcnMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNsZWFyTGF5ZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2hMYXllcih0aGlzLnJlbW92ZUxheWVyLCB0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbnZva2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBlLCBuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKICAgICAgICAgICAgICAgIGZvciAoaSBpbiB0aGlzLl9sYXllcnMpKGUgPSB0aGlzLl9sYXllcnNbaV0pW3RdICYmIGVbdF0uYXBwbHkoZSwgbik7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkFkZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5lYWNoTGF5ZXIodC5hZGRMYXllciwgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25SZW1vdmU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWFjaExheWVyKHQucmVtb3ZlTGF5ZXIsIHQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVhY2hMYXllcjogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSBpbiB0aGlzLl9sYXllcnMpIHQuY2FsbChpLCB0aGlzLl9sYXllcnNbZV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TGF5ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sYXllcnNbdF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TGF5ZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gW107CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoTGF5ZXIodC5wdXNoLCB0KSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRaSW5kZXg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZSgic2V0WkluZGV4IiwgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TGF5ZXJJZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHUodCkKICAgICAgICAgICAgfQogICAgICAgIH0pLAogICAgICAgIEVlID0gWmUuZXh0ZW5kKHsKICAgICAgICAgICAgYWRkTGF5ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc0xheWVyKHQpID8gdGhpcyA6ICh0LmFkZEV2ZW50UGFyZW50KHRoaXMpLCBaZS5wcm90b3R5cGUuYWRkTGF5ZXIuY2FsbCh0aGlzLCB0KSwgdGhpcy5maXJlKCJsYXllcmFkZCIsIHsKICAgICAgICAgICAgICAgICAgICBsYXllcjogdAogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbW92ZUxheWVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNMYXllcih0KSA/ICh0IGluIHRoaXMuX2xheWVycyAmJiAodCA9IHRoaXMuX2xheWVyc1t0XSksIHQucmVtb3ZlRXZlbnRQYXJlbnQodGhpcyksIFplLnByb3RvdHlwZS5yZW1vdmVMYXllci5jYWxsKHRoaXMsIHQpLCB0aGlzLmZpcmUoImxheWVycmVtb3ZlIiwgewogICAgICAgICAgICAgICAgICAgIGxheWVyOiB0CiAgICAgICAgICAgICAgICB9KSkgOiB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldFN0eWxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnZva2UoInNldFN0eWxlIiwgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnJpbmdUb0Zyb250OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZSgiYnJpbmdUb0Zyb250IikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnJpbmdUb0JhY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW52b2tlKCJicmluZ1RvQmFjayIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEJvdW5kczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBOOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLl9sYXllcnMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2xheWVyc1tpXTsKICAgICAgICAgICAgICAgICAgICB0LmV4dGVuZChlLmdldEJvdW5kcyA/IGUuZ2V0Qm91bmRzKCkgOiBlLmdldExhdExuZygpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgfQogICAgICAgIH0pLAogICAgICAgIGtlID0gWi5leHRlbmQoewogICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICBwb3B1cEFuY2hvcjogWzAsIDBdLAogICAgICAgICAgICAgICAgdG9vbHRpcEFuY2hvcjogWzAsIDBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHAodGhpcywgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlSWNvbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oImljb24iLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGVTaGFkb3c6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVJY29uKCJzaGFkb3ciLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY3JlYXRlSWNvbjogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nZXRJY29uVXJsKHQpOwogICAgICAgICAgICAgICAgaWYgKCFlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJpY29uIiA9PT0gdCkgdGhyb3cgbmV3IEVycm9yKCJpY29uVXJsIG5vdCBzZXQgaW4gSWNvbiBvcHRpb25zIChzZWUgdGhlIGRvY3MpLiIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX2NyZWF0ZUltZyhlLCBpICYmICJJTUciID09PSBpLnRhZ05hbWUgPyBpIDogbnVsbCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2V0SWNvblN0eWxlcyhuLCB0KSwgbgogICAgICAgICAgICB9LAogICAgICAgICAgICBfc2V0SWNvblN0eWxlczogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgbiA9IGVbaSArICJTaXplIl07CiAgICAgICAgICAgICAgICAibnVtYmVyIiA9PSB0eXBlb2YgbiAmJiAobiA9IFtuLCBuXSk7CiAgICAgICAgICAgICAgICB2YXIgbyA9IEkobiksCiAgICAgICAgICAgICAgICAgICAgcyA9IEkoInNoYWRvdyIgPT09IGkgJiYgZS5zaGFkb3dBbmNob3IgfHwgZS5pY29uQW5jaG9yIHx8IG8gJiYgby5kaXZpZGVCeSgyLCAhMCkpOwogICAgICAgICAgICAgICAgdC5jbGFzc05hbWUgPSAibGVhZmxldC1tYXJrZXItIiArIGkgKyAiICIgKyAoZS5jbGFzc05hbWUgfHwgIiIpLCBzICYmICh0LnN0eWxlLm1hcmdpbkxlZnQgPSAtcy54ICsgInB4IiwgdC5zdHlsZS5tYXJnaW5Ub3AgPSAtcy55ICsgInB4IiksIG8gJiYgKHQuc3R5bGUud2lkdGggPSBvLnggKyAicHgiLCB0LnN0eWxlLmhlaWdodCA9IG8ueSArICJweCIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9jcmVhdGVJbWc6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoaSA9IGkgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpLnNyYyA9IHQsIGkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldEljb25Vcmw6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBDdCAmJiB0aGlzLm9wdGlvbnNbdCArICJSZXRpbmFVcmwiXSB8fCB0aGlzLm9wdGlvbnNbdCArICJVcmwiXQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB2YXIgQmUgPSBrZS5leHRlbmQoewogICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICBpY29uVXJsOiAibWFya2VyLWljb24ucG5nIiwKICAgICAgICAgICAgICAgIGljb25SZXRpbmFVcmw6ICJtYXJrZXItaWNvbi0yeC5wbmciLAogICAgICAgICAgICAgICAgc2hhZG93VXJsOiAibWFya2VyLXNoYWRvdy5wbmciLAogICAgICAgICAgICAgICAgaWNvblNpemU6IFsyNSwgNDFdLAogICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzEyLCA0MV0sCiAgICAgICAgICAgICAgICBwb3B1cEFuY2hvcjogWzEsIC0zNF0sCiAgICAgICAgICAgICAgICB0b29sdGlwQW5jaG9yOiBbMTYsIC0yOF0sCiAgICAgICAgICAgICAgICBzaGFkb3dTaXplOiBbNDEsIDQxXQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0SWNvblVybDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEJlLmltYWdlUGF0aCB8fCAoQmUuaW1hZ2VQYXRoID0gdGhpcy5fZGV0ZWN0SWNvblBhdGgoKSksICh0aGlzLm9wdGlvbnMuaW1hZ2VQYXRoIHx8IEJlLmltYWdlUGF0aCkgKyBrZS5wcm90b3R5cGUuX2dldEljb25VcmwuY2FsbCh0aGlzLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZGV0ZWN0SWNvblBhdGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBoaSgiZGl2IiwgImxlYWZsZXQtZGVmYXVsdC1pY29uLXBhdGgiLCBkb2N1bWVudC5ib2R5KSwKICAgICAgICAgICAgICAgICAgICBpID0gYWkodCwgImJhY2tncm91bmQtaW1hZ2UiKSB8fCBhaSh0LCAiYmFja2dyb3VuZEltYWdlIik7CiAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSwgaSA9IG51bGwgPT09IGkgfHwgMCAhPT0gaS5pbmRleE9mKCJ1cmwiKSA/ICIiIDogaS5yZXBsYWNlKC9edXJsXChbIiddPy8sICIiKS5yZXBsYWNlKC9tYXJrZXItaWNvblwucG5nWyInXT9cKSQvLCAiIikKICAgICAgICAgICAgfQogICAgICAgIH0pLAogICAgICAgIEFlID0gb2UuZXh0ZW5kKHsKICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fbWFya2VyID0gdAogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGRIb29rczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX21hcmtlci5faWNvbjsKICAgICAgICAgICAgICAgIHRoaXMuX2RyYWdnYWJsZSB8fCAodGhpcy5fZHJhZ2dhYmxlID0gbmV3IGxlKHQsIHQsICEwKSksIHRoaXMuX2RyYWdnYWJsZS5vbih7CiAgICAgICAgICAgICAgICAgICAgZHJhZ3N0YXJ0OiB0aGlzLl9vbkRyYWdTdGFydCwKICAgICAgICAgICAgICAgICAgICBwcmVkcmFnOiB0aGlzLl9vblByZURyYWcsCiAgICAgICAgICAgICAgICAgICAgZHJhZzogdGhpcy5fb25EcmFnLAogICAgICAgICAgICAgICAgICAgIGRyYWdlbmQ6IHRoaXMuX29uRHJhZ0VuZAogICAgICAgICAgICAgICAgfSwgdGhpcykuZW5hYmxlKCksIHBpKHQsICJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZW1vdmVIb29rczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9kcmFnZ2FibGUub2ZmKHsKICAgICAgICAgICAgICAgICAgICBkcmFnc3RhcnQ6IHRoaXMuX29uRHJhZ1N0YXJ0LAogICAgICAgICAgICAgICAgICAgIHByZWRyYWc6IHRoaXMuX29uUHJlRHJhZywKICAgICAgICAgICAgICAgICAgICBkcmFnOiB0aGlzLl9vbkRyYWcsCiAgICAgICAgICAgICAgICAgICAgZHJhZ2VuZDogdGhpcy5fb25EcmFnRW5kCiAgICAgICAgICAgICAgICB9LCB0aGlzKS5kaXNhYmxlKCksIHRoaXMuX21hcmtlci5faWNvbiAmJiBtaSh0aGlzLl9tYXJrZXIuX2ljb24sICJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKQogICAgICAgICAgICB9LAogICAgICAgICAgICBtb3ZlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZHJhZ2dhYmxlICYmIHRoaXMuX2RyYWdnYWJsZS5fbW92ZWQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2FkanVzdFBhbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9tYXJrZXIsCiAgICAgICAgICAgICAgICAgICAgZSA9IGkuX21hcCwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5fbWFya2VyLm9wdGlvbnMuYXV0b1BhblNwZWVkLAogICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9tYXJrZXIub3B0aW9ucy5hdXRvUGFuUGFkZGluZywKICAgICAgICAgICAgICAgICAgICBzID0gUGkoaS5faWNvbiksCiAgICAgICAgICAgICAgICAgICAgciA9IGUuZ2V0UGl4ZWxCb3VuZHMoKSwKICAgICAgICAgICAgICAgICAgICBhID0gZS5nZXRQaXhlbE9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgIGggPSBSKHIubWluLl9zdWJ0cmFjdChhKS5hZGQobyksIHIubWF4Ll9zdWJ0cmFjdChhKS5zdWJ0cmFjdChvKSk7CiAgICAgICAgICAgICAgICBpZiAoIWguY29udGFpbnMocykpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IEkoKE1hdGgubWF4KGgubWF4LngsIHMueCkgLSBoLm1heC54KSAvIChyLm1heC54IC0gaC5tYXgueCkgLSAoTWF0aC5taW4oaC5taW4ueCwgcy54KSAtIGgubWluLngpIC8gKHIubWluLnggLSBoLm1pbi54KSwgKE1hdGgubWF4KGgubWF4LnksIHMueSkgLSBoLm1heC55KSAvIChyLm1heC55IC0gaC5tYXgueSkgLSAoTWF0aC5taW4oaC5taW4ueSwgcy55KSAtIGgubWluLnkpIC8gKHIubWluLnkgLSBoLm1pbi55KSkubXVsdGlwbHlCeShuKTsKICAgICAgICAgICAgICAgICAgICBlLnBhbkJ5KHUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZTogITEKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MuX2FkZCh1KSwgdGhpcy5fZHJhZ2dhYmxlLl9zdGFydFBvcy5fYWRkKHUpLCB3aShpLl9pY29uLCB0aGlzLl9kcmFnZ2FibGUuX25ld1BvcyksIHRoaXMuX29uRHJhZyh0KSwgdGhpcy5fcGFuUmVxdWVzdCA9IE0odGhpcy5fYWRqdXN0UGFuLmJpbmQodGhpcywgdCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9vbkRyYWdTdGFydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9vbGRMYXRMbmcgPSB0aGlzLl9tYXJrZXIuZ2V0TGF0TG5nKCksIHRoaXMuX21hcmtlci5jbG9zZVBvcHVwKCkuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiZHJhZ3N0YXJ0IikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uUHJlRHJhZzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fbWFya2VyLm9wdGlvbnMuYXV0b1BhbiAmJiAoQyh0aGlzLl9wYW5SZXF1ZXN0KSwgdGhpcy5fcGFuUmVxdWVzdCA9IE0odGhpcy5fYWRqdXN0UGFuLmJpbmQodGhpcywgdCkpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25EcmFnOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX21hcmtlciwKICAgICAgICAgICAgICAgICAgICBlID0gaS5fc2hhZG93LAogICAgICAgICAgICAgICAgICAgIG4gPSBQaShpLl9pY29uKSwKICAgICAgICAgICAgICAgICAgICBvID0gaS5fbWFwLmxheWVyUG9pbnRUb0xhdExuZyhuKTsKICAgICAgICAgICAgICAgIGUgJiYgd2koZSwgbiksIGkuX2xhdGxuZyA9IG8sIHQubGF0bG5nID0gbywgdC5vbGRMYXRMbmcgPSB0aGlzLl9vbGRMYXRMbmcsIGkuZmlyZSgibW92ZSIsIHQpLmZpcmUoImRyYWciLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25EcmFnRW5kOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBDKHRoaXMuX3BhblJlcXVlc3QpLCBkZWxldGUgdGhpcy5fb2xkTGF0TG5nLCB0aGlzLl9tYXJrZXIuZmlyZSgibW92ZWVuZCIpLmZpcmUoImRyYWdlbmQiLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgSWUgPSBTZS5leHRlbmQoewogICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgQmUsCiAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZTogITAsCiAgICAgICAgICAgICAgICBrZXlib2FyZDogITAsCiAgICAgICAgICAgICAgICB0aXRsZTogIiIsCiAgICAgICAgICAgICAgICBhbHQ6ICIiLAogICAgICAgICAgICAgICAgekluZGV4T2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgIHJpc2VPbkhvdmVyOiAhMSwKICAgICAgICAgICAgICAgIHJpc2VPZmZzZXQ6IDI1MCwKICAgICAgICAgICAgICAgIHBhbmU6ICJtYXJrZXJQYW5lIiwKICAgICAgICAgICAgICAgIHNoYWRvd1BhbmU6ICJzaGFkb3dQYW5lIiwKICAgICAgICAgICAgICAgIGJ1YmJsaW5nTW91c2VFdmVudHM6ICExLAogICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiAhMSwKICAgICAgICAgICAgICAgIGF1dG9QYW46ICExLAogICAgICAgICAgICAgICAgYXV0b1BhblBhZGRpbmc6IFs1MCwgNTBdLAogICAgICAgICAgICAgICAgYXV0b1BhblNwZWVkOiAxMAogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICBwKHRoaXMsIGkpLCB0aGlzLl9sYXRsbmcgPSBXKHQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uQWRkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl96b29tQW5pbWF0ZWQgPSB0aGlzLl96b29tQW5pbWF0ZWQgJiYgdC5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb24sIHRoaXMuX3pvb21BbmltYXRlZCAmJiB0Lm9uKCJ6b29tYW5pbSIsIHRoaXMuX2FuaW1hdGVab29tLCB0aGlzKSwgdGhpcy5faW5pdEljb24oKSwgdGhpcy51cGRhdGUoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBvblJlbW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyAmJiB0aGlzLmRyYWdnaW5nLmVuYWJsZWQoKSAmJiAodGhpcy5vcHRpb25zLmRyYWdnYWJsZSA9ICEwLCB0aGlzLmRyYWdnaW5nLnJlbW92ZUhvb2tzKCkpLCBkZWxldGUgdGhpcy5kcmFnZ2luZywgdGhpcy5fem9vbUFuaW1hdGVkICYmIHQub2ZmKCJ6b29tYW5pbSIsIHRoaXMuX2FuaW1hdGVab29tLCB0aGlzKSwgdGhpcy5fcmVtb3ZlSWNvbigpLCB0aGlzLl9yZW1vdmVTaGFkb3coKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRFdmVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB6b29tOiB0aGlzLnVwZGF0ZSwKICAgICAgICAgICAgICAgICAgICB2aWV3cmVzZXQ6IHRoaXMudXBkYXRlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldExhdExuZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGF0bG5nCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldExhdExuZzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9sYXRsbmc7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGF0bG5nID0gVyh0KSwgdGhpcy51cGRhdGUoKSwgdGhpcy5maXJlKCJtb3ZlIiwgewogICAgICAgICAgICAgICAgICAgIG9sZExhdExuZzogaSwKICAgICAgICAgICAgICAgICAgICBsYXRsbmc6IHRoaXMuX2xhdGxuZwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0WkluZGV4T2Zmc2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnpJbmRleE9mZnNldCA9IHQsIHRoaXMudXBkYXRlKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0SWNvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb24KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0SWNvbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uID0gdCwgdGhpcy5fbWFwICYmICh0aGlzLl9pbml0SWNvbigpLCB0aGlzLnVwZGF0ZSgpKSwgdGhpcy5fcG9wdXAgJiYgdGhpcy5iaW5kUG9wdXAodGhpcy5fcG9wdXAsIHRoaXMuX3BvcHVwLm9wdGlvbnMpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEVsZW1lbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ljb24KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pY29uICYmIHRoaXMuX21hcCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpLnJvdW5kKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0UG9zKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBfaW5pdEljb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgaSA9ICJsZWFmbGV0LXpvb20tIiArICh0aGlzLl96b29tQW5pbWF0ZWQgPyAiYW5pbWF0ZWQiIDogImhpZGUiKSwKICAgICAgICAgICAgICAgICAgICBlID0gdC5pY29uLmNyZWF0ZUljb24odGhpcy5faWNvbiksCiAgICAgICAgICAgICAgICAgICAgbiA9ICExOwogICAgICAgICAgICAgICAgZSAhPT0gdGhpcy5faWNvbiAmJiAodGhpcy5faWNvbiAmJiB0aGlzLl9yZW1vdmVJY29uKCksIG4gPSAhMCwgdC50aXRsZSAmJiAoZS50aXRsZSA9IHQudGl0bGUpLCAiSU1HIiA9PT0gZS50YWdOYW1lICYmIChlLmFsdCA9IHQuYWx0IHx8ICIiKSksIHBpKGUsIGkpLCB0LmtleWJvYXJkICYmIChlLnRhYkluZGV4ID0gIjAiKSwgdGhpcy5faWNvbiA9IGUsIHQucmlzZU9uSG92ZXIgJiYgdGhpcy5vbih7CiAgICAgICAgICAgICAgICAgICAgbW91c2VvdmVyOiB0aGlzLl9icmluZ1RvRnJvbnQsCiAgICAgICAgICAgICAgICAgICAgbW91c2VvdXQ6IHRoaXMuX3Jlc2V0WkluZGV4CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBvID0gdC5pY29uLmNyZWF0ZVNoYWRvdyh0aGlzLl9zaGFkb3cpLAogICAgICAgICAgICAgICAgICAgIHMgPSAhMTsKICAgICAgICAgICAgICAgIG8gIT09IHRoaXMuX3NoYWRvdyAmJiAodGhpcy5fcmVtb3ZlU2hhZG93KCksIHMgPSAhMCksIG8gJiYgKHBpKG8sIGkpLCBvLmFsdCA9ICIiKSwgdGhpcy5fc2hhZG93ID0gbywgdC5vcGFjaXR5IDwgMSAmJiB0aGlzLl91cGRhdGVPcGFjaXR5KCksIG4gJiYgdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5faWNvbiksIHRoaXMuX2luaXRJbnRlcmFjdGlvbigpLCBvICYmIHMgJiYgdGhpcy5nZXRQYW5lKHQuc2hhZG93UGFuZSkuYXBwZW5kQ2hpbGQodGhpcy5fc2hhZG93KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVtb3ZlSWNvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucmlzZU9uSG92ZXIgJiYgdGhpcy5vZmYoewogICAgICAgICAgICAgICAgICAgIG1vdXNlb3ZlcjogdGhpcy5fYnJpbmdUb0Zyb250LAogICAgICAgICAgICAgICAgICAgIG1vdXNlb3V0OiB0aGlzLl9yZXNldFpJbmRleAogICAgICAgICAgICAgICAgfSksIHVpKHRoaXMuX2ljb24pLCB0aGlzLnJlbW92ZUludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX2ljb24pLCB0aGlzLl9pY29uID0gbnVsbAogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVtb3ZlU2hhZG93OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3NoYWRvdyAmJiB1aSh0aGlzLl9zaGFkb3cpLCB0aGlzLl9zaGFkb3cgPSBudWxsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9zZXRQb3M6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHdpKHRoaXMuX2ljb24sIHQpLCB0aGlzLl9zaGFkb3cgJiYgd2kodGhpcy5fc2hhZG93LCB0KSwgdGhpcy5fekluZGV4ID0gdC55ICsgdGhpcy5vcHRpb25zLnpJbmRleE9mZnNldCwgdGhpcy5fcmVzZXRaSW5kZXgoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlWkluZGV4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl9pY29uLnN0eWxlLnpJbmRleCA9IHRoaXMuX3pJbmRleCArIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2FuaW1hdGVab29tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX21hcC5fbGF0TG5nVG9OZXdMYXllclBvaW50KHRoaXMuX2xhdGxuZywgdC56b29tLCB0LmNlbnRlcikucm91bmQoKTsKICAgICAgICAgICAgICAgIHRoaXMuX3NldFBvcyhpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfaW5pdEludGVyYWN0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaW50ZXJhY3RpdmUgJiYgKHBpKHRoaXMuX2ljb24sICJsZWFmbGV0LWludGVyYWN0aXZlIiksIHRoaXMuYWRkSW50ZXJhY3RpdmVUYXJnZXQodGhpcy5faWNvbiksIEFlKSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5vcHRpb25zLmRyYWdnYWJsZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nICYmICh0ID0gdGhpcy5kcmFnZ2luZy5lbmFibGVkKCksIHRoaXMuZHJhZ2dpbmcuZGlzYWJsZSgpKSwgdGhpcy5kcmFnZ2luZyA9IG5ldyBBZSh0aGlzKSwgdCAmJiB0aGlzLmRyYWdnaW5nLmVuYWJsZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldE9wYWNpdHk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eSA9IHQsIHRoaXMuX21hcCAmJiB0aGlzLl91cGRhdGVPcGFjaXR5KCksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZU9wYWNpdHk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLm9wdGlvbnMub3BhY2l0eTsKICAgICAgICAgICAgICAgIHRoaXMuX2ljb24gJiYgdmkodGhpcy5faWNvbiwgdCksIHRoaXMuX3NoYWRvdyAmJiB2aSh0aGlzLl9zaGFkb3csIHQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9icmluZ1RvRnJvbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlWkluZGV4KHRoaXMub3B0aW9ucy5yaXNlT2Zmc2V0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVzZXRaSW5kZXg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlWkluZGV4KDApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRQb3B1cEFuY2hvcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb24ub3B0aW9ucy5wb3B1cEFuY2hvcgogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0VG9vbHRpcEFuY2hvcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb24ub3B0aW9ucy50b29sdGlwQW5jaG9yCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIHZhciBPZSA9IFNlLmV4dGVuZCh7CiAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIHN0cm9rZTogITAsCiAgICAgICAgICAgICAgICBjb2xvcjogIiMzMzg4ZmYiLAogICAgICAgICAgICAgICAgd2VpZ2h0OiAzLAogICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgIGxpbmVDYXA6ICJyb3VuZCIsCiAgICAgICAgICAgICAgICBsaW5lSm9pbjogInJvdW5kIiwKICAgICAgICAgICAgICAgIGRhc2hBcnJheTogbnVsbCwKICAgICAgICAgICAgICAgIGRhc2hPZmZzZXQ6IG51bGwsCiAgICAgICAgICAgICAgICBmaWxsOiAhMSwKICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogbnVsbCwKICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAuMiwKICAgICAgICAgICAgICAgIGZpbGxSdWxlOiAiZXZlbm9kZCIsCiAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZTogITAsCiAgICAgICAgICAgICAgICBidWJibGluZ01vdXNlRXZlbnRzOiAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBiZWZvcmVBZGQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyID0gdC5nZXRSZW5kZXJlcih0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5faW5pdFBhdGgodGhpcyksIHRoaXMuX3Jlc2V0KCksIHRoaXMuX3JlbmRlcmVyLl9hZGRQYXRoKHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uUmVtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLl9yZW1vdmVQYXRoKHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlZHJhdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFwICYmIHRoaXMuX3JlbmRlcmVyLl91cGRhdGVQYXRoKHRoaXMpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldFN0eWxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcCh0aGlzLCB0KSwgdGhpcy5fcmVuZGVyZXIgJiYgKHRoaXMuX3JlbmRlcmVyLl91cGRhdGVTdHlsZSh0aGlzKSwgdGhpcy5vcHRpb25zLnN0cm9rZSAmJiB0Lmhhc093blByb3BlcnR5KCJ3ZWlnaHQiKSAmJiB0aGlzLl91cGRhdGVCb3VuZHMoKSksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnJpbmdUb0Zyb250OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJlciAmJiB0aGlzLl9yZW5kZXJlci5fYnJpbmdUb0Zyb250KHRoaXMpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJyaW5nVG9CYWNrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJlciAmJiB0aGlzLl9yZW5kZXJlci5fYnJpbmdUb0JhY2sodGhpcyksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWxlbWVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGF0aAogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fcHJvamVjdCgpLCB0aGlzLl91cGRhdGUoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY2xpY2tUb2xlcmFuY2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbnMuc3Ryb2tlID8gdGhpcy5vcHRpb25zLndlaWdodCAvIDIgOiAwKSArIHRoaXMuX3JlbmRlcmVyLm9wdGlvbnMudG9sZXJhbmNlCiAgICAgICAgICAgIH0KICAgICAgICB9KSwKICAgICAgICBSZSA9IE9lLmV4dGVuZCh7CiAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIGZpbGw6ICEwLAogICAgICAgICAgICAgICAgcmFkaXVzOiAxMAogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICBwKHRoaXMsIGkpLCB0aGlzLl9sYXRsbmcgPSBXKHQpLCB0aGlzLl9yYWRpdXMgPSB0aGlzLm9wdGlvbnMucmFkaXVzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldExhdExuZzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xhdGxuZyA9IFcodCksIHRoaXMucmVkcmF3KCksIHRoaXMuZmlyZSgibW92ZSIsIHsKICAgICAgICAgICAgICAgICAgICBsYXRsbmc6IHRoaXMuX2xhdGxuZwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TGF0TG5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sYXRsbmcKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0UmFkaXVzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJhZGl1cyA9IHRoaXMuX3JhZGl1cyA9IHQsIHRoaXMucmVkcmF3KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0UmFkaXVzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yYWRpdXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0U3R5bGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdCAmJiB0LnJhZGl1cyB8fCB0aGlzLl9yYWRpdXM7CiAgICAgICAgICAgICAgICByZXR1cm4gT2UucHJvdG90eXBlLnNldFN0eWxlLmNhbGwodGhpcywgdCksIHRoaXMuc2V0UmFkaXVzKGkpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9wcm9qZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3BvaW50ID0gdGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpLCB0aGlzLl91cGRhdGVCb3VuZHMoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlQm91bmRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fcmFkaXVzLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLl9yYWRpdXNZIHx8IHQsCiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2NsaWNrVG9sZXJhbmNlKCksCiAgICAgICAgICAgICAgICAgICAgbiA9IFt0ICsgZSwgaSArIGVdOwogICAgICAgICAgICAgICAgdGhpcy5fcHhCb3VuZHMgPSBuZXcgTyh0aGlzLl9wb2ludC5zdWJ0cmFjdChuKSwgdGhpcy5fcG9pbnQuYWRkKG4pKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21hcCAmJiB0aGlzLl91cGRhdGVQYXRoKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVBhdGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuX3VwZGF0ZUNpcmNsZSh0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZW1wdHk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JhZGl1cyAmJiAhdGhpcy5fcmVuZGVyZXIuX2JvdW5kcy5pbnRlcnNlY3RzKHRoaXMuX3B4Qm91bmRzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY29udGFpbnNQb2ludDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLl9wb2ludCkgPD0gdGhpcy5fcmFkaXVzICsgdGhpcy5fY2xpY2tUb2xlcmFuY2UoKQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB2YXIgTmUgPSBSZS5leHRlbmQoewogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZiBpICYmIChpID0gaCh7fSwgZSwgewogICAgICAgICAgICAgICAgICAgIHJhZGl1czogaQogICAgICAgICAgICAgICAgfSkpLCBwKHRoaXMsIGkpLCB0aGlzLl9sYXRsbmcgPSBXKHQpLCBpc05hTih0aGlzLm9wdGlvbnMucmFkaXVzKSkgdGhyb3cgbmV3IEVycm9yKCJDaXJjbGUgcmFkaXVzIGNhbm5vdCBiZSBOYU4iKTsKICAgICAgICAgICAgdGhpcy5fbVJhZGl1cyA9IHRoaXMub3B0aW9ucy5yYWRpdXMKICAgICAgICB9LAogICAgICAgIHNldFJhZGl1czogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbVJhZGl1cyA9IHQsIHRoaXMucmVkcmF3KCkKICAgICAgICB9LAogICAgICAgIGdldFJhZGl1czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tUmFkaXVzCiAgICAgICAgfSwKICAgICAgICBnZXRCb3VuZHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IFt0aGlzLl9yYWRpdXMsIHRoaXMuX3JhZGl1c1kgfHwgdGhpcy5fcmFkaXVzXTsKICAgICAgICAgICAgcmV0dXJuIG5ldyBOKHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQuc3VidHJhY3QodCkpLCB0aGlzLl9tYXAubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMuX3BvaW50LmFkZCh0KSkpCiAgICAgICAgfSwKICAgICAgICBzZXRTdHlsZTogT2UucHJvdG90eXBlLnNldFN0eWxlLAogICAgICAgIF9wcm9qZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9sYXRsbmcubG5nLAogICAgICAgICAgICAgICAgaSA9IHRoaXMuX2xhdGxuZy5sYXQsCiAgICAgICAgICAgICAgICBlID0gdGhpcy5fbWFwLAogICAgICAgICAgICAgICAgbiA9IGUub3B0aW9ucy5jcnM7CiAgICAgICAgICAgIGlmIChuLmRpc3RhbmNlID09PSBVLmRpc3RhbmNlKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IE1hdGguUEkgLyAxODAsCiAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuX21SYWRpdXMgLyBVLlIgLyBvLAogICAgICAgICAgICAgICAgICAgIHIgPSBlLnByb2plY3QoW2kgKyBzLCB0XSksCiAgICAgICAgICAgICAgICAgICAgYSA9IGUucHJvamVjdChbaSAtIHMsIHRdKSwKICAgICAgICAgICAgICAgICAgICBoID0gci5hZGQoYSkuZGl2aWRlQnkoMiksCiAgICAgICAgICAgICAgICAgICAgdSA9IGUudW5wcm9qZWN0KGgpLmxhdCwKICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5hY29zKChNYXRoLmNvcyhzICogbykgLSBNYXRoLnNpbihpICogbykgKiBNYXRoLnNpbih1ICogbykpIC8gKE1hdGguY29zKGkgKiBvKSAqIE1hdGguY29zKHUgKiBvKSkpIC8gbzsKICAgICAgICAgICAgICAgICFpc05hTihsKSAmJiAwICE9PSBsIHx8IChsID0gcyAvIE1hdGguY29zKE1hdGguUEkgLyAxODAgKiBpKSksIHRoaXMuX3BvaW50ID0gaC5zdWJ0cmFjdChlLmdldFBpeGVsT3JpZ2luKCkpLCB0aGlzLl9yYWRpdXMgPSBpc05hTihsKSA/IDAgOiBoLnggLSBlLnByb2plY3QoW3UsIHQgLSBsXSkueCwgdGhpcy5fcmFkaXVzWSA9IGgueSAtIHIueQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGMgPSBuLnVucHJvamVjdChuLnByb2plY3QodGhpcy5fbGF0bG5nKS5zdWJ0cmFjdChbdGhpcy5fbVJhZGl1cywgMF0pKTsKICAgICAgICAgICAgICAgIHRoaXMuX3BvaW50ID0gZS5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKSwgdGhpcy5fcmFkaXVzID0gdGhpcy5fcG9pbnQueCAtIGUubGF0TG5nVG9MYXllclBvaW50KGMpLngKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl91cGRhdGVCb3VuZHMoKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIERlID0gT2UuZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHNtb290aEZhY3RvcjogMSwKICAgICAgICAgICAgbm9DbGlwOiAhMQogICAgICAgIH0sCiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICBwKHRoaXMsIGkpLCB0aGlzLl9zZXRMYXRMbmdzKHQpCiAgICAgICAgfSwKICAgICAgICBnZXRMYXRMbmdzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xhdGxuZ3MKICAgICAgICB9LAogICAgICAgIHNldExhdExuZ3M6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NldExhdExuZ3ModCksIHRoaXMucmVkcmF3KCkKICAgICAgICB9LAogICAgICAgIGlzRW1wdHk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gIXRoaXMuX2xhdGxuZ3MubGVuZ3RoCiAgICAgICAgfSwKICAgICAgICBjbG9zZXN0TGF5ZXJQb2ludDogZnVuY3Rpb24odCkgewogICAgICAgICAgICBmb3IgKHZhciBpLCBlLCBuID0gMSAvIDAsIG8gPSBudWxsLCBzID0gZmUsIHIgPSAwLCBhID0gdGhpcy5fcGFydHMubGVuZ3RoOyByIDwgYTsgcisrKQogICAgICAgICAgICAgICAgZm9yICh2YXIgaCA9IHRoaXMuX3BhcnRzW3JdLCB1ID0gMSwgbCA9IGgubGVuZ3RoOyB1IDwgbDsgdSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBzKHQsIGkgPSBoW3UgLSAxXSwgZSA9IGhbdV0sICEwKTsKICAgICAgICAgICAgICAgICAgICBjIDwgbiAmJiAobiA9IGMsIG8gPSBzKHQsIGksIGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbyAmJiAoby5kaXN0YW5jZSA9IE1hdGguc3FydChuKSksIG8KICAgICAgICB9LAogICAgICAgIGdldENlbnRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5fbWFwKSB0aHJvdyBuZXcgRXJyb3IoIk11c3QgYWRkIGxheWVyIHRvIG1hcCBiZWZvcmUgdXNpbmcgZ2V0Q2VudGVyKCkiKTsKICAgICAgICAgICAgdmFyIHQsIGksIGUsIG4sIG8sIHMsIHIsIGEgPSB0aGlzLl9yaW5nc1swXSwKICAgICAgICAgICAgICAgIGggPSBhLmxlbmd0aDsKICAgICAgICAgICAgaWYgKCFoKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgZm9yIChpID0gdCA9IDA7IHQgPCBoIC0gMTsgdCsrKSBpICs9IGFbdF0uZGlzdGFuY2VUbyhhW3QgKyAxXSkgLyAyOwogICAgICAgICAgICBpZiAoMCA9PT0gaSkgcmV0dXJuIHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcoYVswXSk7CiAgICAgICAgICAgIGZvciAobiA9IHQgPSAwOyB0IDwgaCAtIDE7IHQrKykKICAgICAgICAgICAgICAgIGlmIChvID0gYVt0XSwgcyA9IGFbdCArIDFdLCBpIDwgKG4gKz0gZSA9IG8uZGlzdGFuY2VUbyhzKSkpIHJldHVybiByID0gKG4gLSBpKSAvIGUsIHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcoW3MueCAtIHIgKiAocy54IC0gby54KSwgcy55IC0gciAqIChzLnkgLSBvLnkpXSkKICAgICAgICB9LAogICAgICAgIGdldEJvdW5kczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ib3VuZHMKICAgICAgICB9LAogICAgICAgIGFkZExhdExuZzogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICByZXR1cm4gaSA9IGkgfHwgdGhpcy5fZGVmYXVsdFNoYXBlKCksIHQgPSBXKHQpLCBpLnB1c2godCksIHRoaXMuX2JvdW5kcy5leHRlbmQodCksIHRoaXMucmVkcmF3KCkKICAgICAgICB9LAogICAgICAgIF9zZXRMYXRMbmdzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRoaXMuX2JvdW5kcyA9IG5ldyBOLCB0aGlzLl9sYXRsbmdzID0gdGhpcy5fY29udmVydExhdExuZ3ModCkKICAgICAgICB9LAogICAgICAgIF9kZWZhdWx0U2hhcGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZ2UodGhpcy5fbGF0bG5ncykgPyB0aGlzLl9sYXRsbmdzIDogdGhpcy5fbGF0bG5nc1swXQogICAgICAgIH0sCiAgICAgICAgX2NvbnZlcnRMYXRMbmdzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSBbXSwgZSA9IGdlKHQpLCBuID0gMCwgbyA9IHQubGVuZ3RoOyBuIDwgbzsgbisrKSBlID8gKGlbbl0gPSBXKHRbbl0pLCB0aGlzLl9ib3VuZHMuZXh0ZW5kKGlbbl0pKSA6IGlbbl0gPSB0aGlzLl9jb252ZXJ0TGF0TG5ncyh0W25dKTsKICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9LAogICAgICAgIF9wcm9qZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSBuZXcgTzsKICAgICAgICAgICAgdGhpcy5fcmluZ3MgPSBbXSwgdGhpcy5fcHJvamVjdExhdGxuZ3ModGhpcy5fbGF0bG5ncywgdGhpcy5fcmluZ3MsIHQpLCB0aGlzLl9ib3VuZHMuaXNWYWxpZCgpICYmIHQuaXNWYWxpZCgpICYmICh0aGlzLl9yYXdQeEJvdW5kcyA9IHQsIHRoaXMuX3VwZGF0ZUJvdW5kcygpKQogICAgICAgIH0sCiAgICAgICAgX3VwZGF0ZUJvdW5kczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fY2xpY2tUb2xlcmFuY2UoKSwKICAgICAgICAgICAgICAgIGkgPSBuZXcgQih0LCB0KTsKICAgICAgICAgICAgdGhpcy5fcHhCb3VuZHMgPSBuZXcgTyhbdGhpcy5fcmF3UHhCb3VuZHMubWluLnN1YnRyYWN0KGkpLCB0aGlzLl9yYXdQeEJvdW5kcy5tYXguYWRkKGkpXSkKICAgICAgICB9LAogICAgICAgIF9wcm9qZWN0TGF0bG5nczogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICB2YXIgbiwgbywgcyA9IHRbMF0gaW5zdGFuY2VvZiBqLAogICAgICAgICAgICAgICAgciA9IHQubGVuZ3RoOwogICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgZm9yIChvID0gW10sIG4gPSAwOyBuIDwgcjsgbisrKSBvW25dID0gdGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0W25dKSwgZS5leHRlbmQob1tuXSk7CiAgICAgICAgICAgICAgICBpLnB1c2gobykKICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgcjsgbisrKSB0aGlzLl9wcm9qZWN0TGF0bG5ncyh0W25dLCBpLCBlKQogICAgICAgIH0sCiAgICAgICAgX2NsaXBQb2ludHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3JlbmRlcmVyLl9ib3VuZHM7CiAgICAgICAgICAgIGlmICh0aGlzLl9wYXJ0cyA9IFtdLCB0aGlzLl9weEJvdW5kcyAmJiB0aGlzLl9weEJvdW5kcy5pbnRlcnNlY3RzKHQpKQogICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ub0NsaXApIHRoaXMuX3BhcnRzID0gdGhpcy5fcmluZ3M7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgZSwgbiwgbywgcywgciwgYSwgaCA9IHRoaXMuX3BhcnRzOwogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IGkgPSAwLCBvID0gdGhpcy5fcmluZ3MubGVuZ3RoOyBpIDwgbzsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwLCBzID0gKGEgPSB0aGlzLl9yaW5nc1tpXSkubGVuZ3RoOyBlIDwgcyAtIDE7IGUrKykociA9IGRlKGFbZV0sIGFbZSArIDFdLCB0LCBlLCAhMCkpICYmIChoW25dID0gaFtuXSB8fCBbXSwgaFtuXS5wdXNoKHJbMF0pLCByWzFdID09PSBhW2UgKyAxXSAmJiBlICE9PSBzIC0gMiB8fCAoaFtuXS5wdXNoKHJbMV0pLCBuKyspKQogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX3NpbXBsaWZ5UG9pbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IHRoaXMuX3BhcnRzLCBpID0gdGhpcy5vcHRpb25zLnNtb290aEZhY3RvciwgZSA9IDAsIG4gPSB0Lmxlbmd0aDsgZSA8IG47IGUrKykgdFtlXSA9IGNlKHRbZV0sIGkpCiAgICAgICAgfSwKICAgICAgICBfdXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fbWFwICYmICh0aGlzLl9jbGlwUG9pbnRzKCksIHRoaXMuX3NpbXBsaWZ5UG9pbnRzKCksIHRoaXMuX3VwZGF0ZVBhdGgoKSkKICAgICAgICB9LAogICAgICAgIF91cGRhdGVQYXRoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuX3VwZGF0ZVBvbHkodGhpcykKICAgICAgICB9LAogICAgICAgIF9jb250YWluc1BvaW50OiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHZhciBlLCBuLCBvLCBzLCByLCBhLCBoID0gdGhpcy5fY2xpY2tUb2xlcmFuY2UoKTsKICAgICAgICAgICAgaWYgKCF0aGlzLl9weEJvdW5kcyB8fCAhdGhpcy5fcHhCb3VuZHMuY29udGFpbnModCkpIHJldHVybiAhMTsKICAgICAgICAgICAgZm9yIChlID0gMCwgcyA9IHRoaXMuX3BhcnRzLmxlbmd0aDsgZSA8IHM7IGUrKykKICAgICAgICAgICAgICAgIGZvciAobiA9IDAsIG8gPSAociA9IChhID0gdGhpcy5fcGFydHNbZV0pLmxlbmd0aCkgLSAxOyBuIDwgcjsgbyA9IG4rKykKICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfHwgMCAhPT0gbikgJiYgX2UodCwgYVtvXSwgYVtuXSkgPD0gaCkgcmV0dXJuICEwOwogICAgICAgICAgICByZXR1cm4gITEKICAgICAgICB9CiAgICB9KTsKICAgIERlLl9mbGF0ID0gdmU7CiAgICB2YXIgamUgPSBEZS5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgZmlsbDogITAKICAgICAgICB9LAogICAgICAgIGlzRW1wdHk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gIXRoaXMuX2xhdGxuZ3MubGVuZ3RoIHx8ICF0aGlzLl9sYXRsbmdzWzBdLmxlbmd0aAogICAgICAgIH0sCiAgICAgICAgZ2V0Q2VudGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCF0aGlzLl9tYXApIHRocm93IG5ldyBFcnJvcigiTXVzdCBhZGQgbGF5ZXIgdG8gbWFwIGJlZm9yZSB1c2luZyBnZXRDZW50ZXIoKSIpOwogICAgICAgICAgICB2YXIgdCwgaSwgZSwgbiwgbywgcywgciwgYSwgaCwgdSA9IHRoaXMuX3JpbmdzWzBdLAogICAgICAgICAgICAgICAgbCA9IHUubGVuZ3RoOwogICAgICAgICAgICBpZiAoIWwpIHJldHVybiBudWxsOwogICAgICAgICAgICBmb3IgKHMgPSByID0gYSA9IDAsIHQgPSAwLCBpID0gbCAtIDE7IHQgPCBsOyBpID0gdCsrKSBlID0gdVt0XSwgbiA9IHVbaV0sIG8gPSBlLnkgKiBuLnggLSBuLnkgKiBlLngsIHIgKz0gKGUueCArIG4ueCkgKiBvLCBhICs9IChlLnkgKyBuLnkpICogbywgcyArPSAzICogbzsKICAgICAgICAgICAgcmV0dXJuIGggPSAwID09PSBzID8gdVswXSA6IFtyIC8gcywgYSAvIHNdLCB0aGlzLl9tYXAubGF5ZXJQb2ludFRvTGF0TG5nKGgpCiAgICAgICAgfSwKICAgICAgICBfY29udmVydExhdExuZ3M6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSBEZS5wcm90b3R5cGUuX2NvbnZlcnRMYXRMbmdzLmNhbGwodGhpcywgdCksCiAgICAgICAgICAgICAgICBlID0gaS5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiAyIDw9IGUgJiYgaVswXSBpbnN0YW5jZW9mIGogJiYgaVswXS5lcXVhbHMoaVtlIC0gMV0pICYmIGkucG9wKCksIGkKICAgICAgICB9LAogICAgICAgIF9zZXRMYXRMbmdzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIERlLnByb3RvdHlwZS5fc2V0TGF0TG5ncy5jYWxsKHRoaXMsIHQpLCBnZSh0aGlzLl9sYXRsbmdzKSAmJiAodGhpcy5fbGF0bG5ncyA9IFt0aGlzLl9sYXRsbmdzXSkKICAgICAgICB9LAogICAgICAgIF9kZWZhdWx0U2hhcGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZ2UodGhpcy5fbGF0bG5nc1swXSkgPyB0aGlzLl9sYXRsbmdzWzBdIDogdGhpcy5fbGF0bG5nc1swXVswXQogICAgICAgIH0sCiAgICAgICAgX2NsaXBQb2ludHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3JlbmRlcmVyLl9ib3VuZHMsCiAgICAgICAgICAgICAgICBpID0gdGhpcy5vcHRpb25zLndlaWdodCwKICAgICAgICAgICAgICAgIGUgPSBuZXcgQihpLCBpKTsKICAgICAgICAgICAgaWYgKHQgPSBuZXcgTyh0Lm1pbi5zdWJ0cmFjdChlKSwgdC5tYXguYWRkKGUpKSwgdGhpcy5fcGFydHMgPSBbXSwgdGhpcy5fcHhCb3VuZHMgJiYgdGhpcy5fcHhCb3VuZHMuaW50ZXJzZWN0cyh0KSkKICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubm9DbGlwKSB0aGlzLl9wYXJ0cyA9IHRoaXMuX3JpbmdzOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4sIG8gPSAwLCBzID0gdGhpcy5fcmluZ3MubGVuZ3RoOyBvIDwgczsgbysrKShuID0geGUodGhpcy5fcmluZ3Nbb10sIHQsICEwKSkubGVuZ3RoICYmIHRoaXMuX3BhcnRzLnB1c2gobikKICAgICAgICB9LAogICAgICAgIF91cGRhdGVQYXRoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuX3VwZGF0ZVBvbHkodGhpcywgITApCiAgICAgICAgfSwKICAgICAgICBfY29udGFpbnNQb2ludDogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSwgZSwgbiwgbywgcywgciwgYSwgaCwgdSA9ICExOwogICAgICAgICAgICBpZiAoIXRoaXMuX3B4Qm91bmRzIHx8ICF0aGlzLl9weEJvdW5kcy5jb250YWlucyh0KSkgcmV0dXJuICExOwogICAgICAgICAgICBmb3IgKG8gPSAwLCBhID0gdGhpcy5fcGFydHMubGVuZ3RoOyBvIDwgYTsgbysrKQogICAgICAgICAgICAgICAgZm9yIChzID0gMCwgciA9IChoID0gKGkgPSB0aGlzLl9wYXJ0c1tvXSkubGVuZ3RoKSAtIDE7IHMgPCBoOyByID0gcysrKSBlID0gaVtzXSwgbiA9IGlbcl0sIGUueSA+IHQueSAhPSBuLnkgPiB0LnkgJiYgdC54IDwgKG4ueCAtIGUueCkgKiAodC55IC0gZS55KSAvIChuLnkgLSBlLnkpICsgZS54ICYmICh1ID0gIXUpOwogICAgICAgICAgICByZXR1cm4gdSB8fCBEZS5wcm90b3R5cGUuX2NvbnRhaW5zUG9pbnQuY2FsbCh0aGlzLCB0LCAhMCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBXZSA9IEVlLmV4dGVuZCh7CiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICBwKHRoaXMsIGkpLCB0aGlzLl9sYXllcnMgPSB7fSwgdCAmJiB0aGlzLmFkZERhdGEodCkKICAgICAgICB9LAogICAgICAgIGFkZERhdGE6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGksIGUsIG4sIG8gPSB2KHQpID8gdCA6IHQuZmVhdHVyZXM7CiAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBlID0gby5sZW5ndGg7IGkgPCBlOyBpKyspKChuID0gb1tpXSkuZ2VvbWV0cmllcyB8fCBuLmdlb21ldHJ5IHx8IG4uZmVhdHVyZXMgfHwgbi5jb29yZGluYXRlcykgJiYgdGhpcy5hZGREYXRhKG4pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcyA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgaWYgKHMuZmlsdGVyICYmICFzLmZpbHRlcih0KSkgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgIHZhciByID0gSGUodCwgcyk7CiAgICAgICAgICAgIHJldHVybiByID8gKHIuZmVhdHVyZSA9IEtlKHQpLCByLmRlZmF1bHRPcHRpb25zID0gci5vcHRpb25zLCB0aGlzLnJlc2V0U3R5bGUociksIHMub25FYWNoRmVhdHVyZSAmJiBzLm9uRWFjaEZlYXR1cmUodCwgciksIHRoaXMuYWRkTGF5ZXIocikpIDogdGhpcwogICAgICAgIH0sCiAgICAgICAgcmVzZXRTdHlsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5vcHRpb25zID0gaCh7fSwgdC5kZWZhdWx0T3B0aW9ucyksIHRoaXMuX3NldExheWVyU3R5bGUodCwgdGhpcy5vcHRpb25zLnN0eWxlKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgc2V0U3R5bGU6IGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3NldExheWVyU3R5bGUodCwgaSkKICAgICAgICAgICAgfSwgdGhpcykKICAgICAgICB9LAogICAgICAgIF9zZXRMYXllclN0eWxlOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHQuc2V0U3R5bGUgJiYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGkgJiYgKGkgPSBpKHQuZmVhdHVyZSkpLCB0LnNldFN0eWxlKGkpKQogICAgICAgIH0KICAgIH0pOwoKICAgIGZ1bmN0aW9uIEhlKHQsIGkpIHsKICAgICAgICB2YXIgZSwgbiwgbywgcywgciA9ICJGZWF0dXJlIiA9PT0gdC50eXBlID8gdC5nZW9tZXRyeSA6IHQsCiAgICAgICAgICAgIGEgPSByID8gci5jb29yZGluYXRlcyA6IG51bGwsCiAgICAgICAgICAgIGggPSBbXSwKICAgICAgICAgICAgdSA9IGkgJiYgaS5wb2ludFRvTGF5ZXIsCiAgICAgICAgICAgIGwgPSBpICYmIGkuY29vcmRzVG9MYXRMbmcgfHwgRmU7CiAgICAgICAgaWYgKCFhICYmICFyKSByZXR1cm4gbnVsbDsKICAgICAgICBzd2l0Y2ggKHIudHlwZSkgewogICAgICAgICAgICBjYXNlICJQb2ludCI6CiAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGwoYSksIHUgPyB1KHQsIGUpIDogbmV3IEllKGUpOwogICAgICAgICAgICBjYXNlICJNdWx0aVBvaW50IjoKICAgICAgICAgICAgICAgIGZvciAobyA9IDAsIHMgPSBhLmxlbmd0aDsgbyA8IHM7IG8rKykgZSA9IGwoYVtvXSksIGgucHVzaCh1ID8gdSh0LCBlKSA6IG5ldyBJZShlKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVlKGgpOwogICAgICAgICAgICBjYXNlICJMaW5lU3RyaW5nIjoKICAgICAgICAgICAgY2FzZSAiTXVsdGlMaW5lU3RyaW5nIjoKICAgICAgICAgICAgICAgIHJldHVybiBuID0gVWUoYSwgIkxpbmVTdHJpbmciID09PSByLnR5cGUgPyAwIDogMSwgbCksIG5ldyBEZShuLCBpKTsKICAgICAgICAgICAgY2FzZSAiUG9seWdvbiI6CiAgICAgICAgICAgIGNhc2UgIk11bHRpUG9seWdvbiI6CiAgICAgICAgICAgICAgICByZXR1cm4gbiA9IFVlKGEsICJQb2x5Z29uIiA9PT0gci50eXBlID8gMSA6IDIsIGwpLCBuZXcgamUobiwgaSk7CiAgICAgICAgICAgIGNhc2UgIkdlb21ldHJ5Q29sbGVjdGlvbiI6CiAgICAgICAgICAgICAgICBmb3IgKG8gPSAwLCBzID0gci5nZW9tZXRyaWVzLmxlbmd0aDsgbyA8IHM7IG8rKykgewogICAgICAgICAgICAgICAgICAgIHZhciBjID0gSGUoewogICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeTogci5nZW9tZXRyaWVzW29dLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiRmVhdHVyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHQucHJvcGVydGllcwogICAgICAgICAgICAgICAgICAgIH0sIGkpOwogICAgICAgICAgICAgICAgICAgIGMgJiYgaC5wdXNoKGMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVlKGgpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIEdlb0pTT04gb2JqZWN0LiIpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIEZlKHQpIHsKICAgICAgICByZXR1cm4gbmV3IGoodFsxXSwgdFswXSwgdFsyXSkKICAgIH0KCiAgICBmdW5jdGlvbiBVZSh0LCBpLCBlKSB7CiAgICAgICAgZm9yICh2YXIgbiwgbyA9IFtdLCBzID0gMCwgciA9IHQubGVuZ3RoOyBzIDwgcjsgcysrKSBuID0gaSA/IFVlKHRbc10sIGkgLSAxLCBlKSA6IChlIHx8IEZlKSh0W3NdKSwgby5wdXNoKG4pOwogICAgICAgIHJldHVybiBvCiAgICB9CgogICAgZnVuY3Rpb24gVmUodCwgaSkgewogICAgICAgIHJldHVybiBpID0gIm51bWJlciIgPT0gdHlwZW9mIGkgPyBpIDogNiwgdm9pZCAwICE9PSB0LmFsdCA/IFtjKHQubG5nLCBpKSwgYyh0LmxhdCwgaSksIGModC5hbHQsIGkpXSA6IFtjKHQubG5nLCBpKSwgYyh0LmxhdCwgaSldCiAgICB9CgogICAgZnVuY3Rpb24gcWUodCwgaSwgZSwgbikgewogICAgICAgIGZvciAodmFyIG8gPSBbXSwgcyA9IDAsIHIgPSB0Lmxlbmd0aDsgcyA8IHI7IHMrKykgby5wdXNoKGkgPyBxZSh0W3NdLCBpIC0gMSwgZSwgbikgOiBWZSh0W3NdLCBuKSk7CiAgICAgICAgcmV0dXJuICFpICYmIGUgJiYgby5wdXNoKG9bMF0pLCBvCiAgICB9CgogICAgZnVuY3Rpb24gR2UodCwgaSkgewogICAgICAgIHJldHVybiB0LmZlYXR1cmUgPyBoKHt9LCB0LmZlYXR1cmUsIHsKICAgICAgICAgICAgZ2VvbWV0cnk6IGkKICAgICAgICB9KSA6IEtlKGkpCiAgICB9CgogICAgZnVuY3Rpb24gS2UodCkgewogICAgICAgIHJldHVybiAiRmVhdHVyZSIgPT09IHQudHlwZSB8fCAiRmVhdHVyZUNvbGxlY3Rpb24iID09PSB0LnR5cGUgPyB0IDogewogICAgICAgICAgICB0eXBlOiAiRmVhdHVyZSIsCiAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9LAogICAgICAgICAgICBnZW9tZXRyeTogdAogICAgICAgIH0KICAgIH0KICAgIHZhciBZZSA9IHsKICAgICAgICB0b0dlb0pTT046IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIEdlKHRoaXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6ICJQb2ludCIsCiAgICAgICAgICAgICAgICBjb29yZGluYXRlczogVmUodGhpcy5nZXRMYXRMbmcoKSwgdCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9OwoKICAgIGZ1bmN0aW9uIFhlKHQsIGkpIHsKICAgICAgICByZXR1cm4gbmV3IFdlKHQsIGkpCiAgICB9CiAgICBJZS5pbmNsdWRlKFllKSwgTmUuaW5jbHVkZShZZSksIFJlLmluY2x1ZGUoWWUpLCBEZS5pbmNsdWRlKHsKICAgICAgICB0b0dlb0pTT046IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSAhZ2UodGhpcy5fbGF0bG5ncyk7CiAgICAgICAgICAgIHJldHVybiBHZSh0aGlzLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAoaSA/ICJNdWx0aSIgOiAiIikgKyAiTGluZVN0cmluZyIsCiAgICAgICAgICAgICAgICBjb29yZGluYXRlczogcWUodGhpcy5fbGF0bG5ncywgaSA/IDEgOiAwLCAhMSwgdCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgamUuaW5jbHVkZSh7CiAgICAgICAgdG9HZW9KU09OOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gIWdlKHRoaXMuX2xhdGxuZ3MpLAogICAgICAgICAgICAgICAgZSA9IGkgJiYgIWdlKHRoaXMuX2xhdGxuZ3NbMF0pLAogICAgICAgICAgICAgICAgbiA9IHFlKHRoaXMuX2xhdGxuZ3MsIGUgPyAyIDogaSA/IDEgOiAwLCAhMCwgdCk7CiAgICAgICAgICAgIHJldHVybiBpIHx8IChuID0gW25dKSwgR2UodGhpcywgewogICAgICAgICAgICAgICAgdHlwZTogKGUgPyAiTXVsdGkiIDogIiIpICsgIlBvbHlnb24iLAogICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IG4KICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgWmUuaW5jbHVkZSh7CiAgICAgICAgdG9NdWx0aVBvaW50OiBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIHZhciBlID0gW107CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBlLnB1c2godC50b0dlb0pTT04oaSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpCiAgICAgICAgICAgIH0pLCBHZSh0aGlzLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAiTXVsdGlQb2ludCIsCiAgICAgICAgICAgICAgICBjb29yZGluYXRlczogZQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgdG9HZW9KU09OOiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5mZWF0dXJlICYmIHRoaXMuZmVhdHVyZS5nZW9tZXRyeSAmJiB0aGlzLmZlYXR1cmUuZ2VvbWV0cnkudHlwZTsKICAgICAgICAgICAgaWYgKCJNdWx0aVBvaW50IiA9PT0gdCkgcmV0dXJuIHRoaXMudG9NdWx0aVBvaW50KG4pOwogICAgICAgICAgICB2YXIgbyA9ICJHZW9tZXRyeUNvbGxlY3Rpb24iID09PSB0LAogICAgICAgICAgICAgICAgcyA9IFtdOwogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKHQudG9HZW9KU09OKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LnRvR2VvSlNPTihuKTsKICAgICAgICAgICAgICAgICAgICBpZiAobykgcy5wdXNoKGkuZ2VvbWV0cnkpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IEtlKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAiRmVhdHVyZUNvbGxlY3Rpb24iID09PSBlLnR5cGUgPyBzLnB1c2guYXBwbHkocywgZS5mZWF0dXJlcykgOiBzLnB1c2goZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBvID8gR2UodGhpcywgewogICAgICAgICAgICAgICAgZ2VvbWV0cmllczogcywKICAgICAgICAgICAgICAgIHR5cGU6ICJHZW9tZXRyeUNvbGxlY3Rpb24iCiAgICAgICAgICAgIH0pIDogewogICAgICAgICAgICAgICAgdHlwZTogIkZlYXR1cmVDb2xsZWN0aW9uIiwKICAgICAgICAgICAgICAgIGZlYXR1cmVzOiBzCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBKZSA9IFhlLAogICAgICAgICRlID0gU2UuZXh0ZW5kKHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgIGFsdDogIiIsCiAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZTogITEsCiAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogITEsCiAgICAgICAgICAgICAgICBlcnJvck92ZXJsYXlVcmw6ICIiLAogICAgICAgICAgICAgICAgekluZGV4OiAxLAogICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICB0aGlzLl91cmwgPSB0LCB0aGlzLl9ib3VuZHMgPSBEKGkpLCBwKHRoaXMsIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uQWRkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2ltYWdlIHx8ICh0aGlzLl9pbml0SW1hZ2UoKSwgdGhpcy5vcHRpb25zLm9wYWNpdHkgPCAxICYmIHRoaXMuX3VwZGF0ZU9wYWNpdHkoKSksIHRoaXMub3B0aW9ucy5pbnRlcmFjdGl2ZSAmJiAocGkodGhpcy5faW1hZ2UsICJsZWFmbGV0LWludGVyYWN0aXZlIiksIHRoaXMuYWRkSW50ZXJhY3RpdmVUYXJnZXQodGhpcy5faW1hZ2UpKSwgdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5faW1hZ2UpLCB0aGlzLl9yZXNldCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uUmVtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHVpKHRoaXMuX2ltYWdlKSwgdGhpcy5vcHRpb25zLmludGVyYWN0aXZlICYmIHRoaXMucmVtb3ZlSW50ZXJhY3RpdmVUYXJnZXQodGhpcy5faW1hZ2UpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldE9wYWNpdHk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eSA9IHQsIHRoaXMuX2ltYWdlICYmIHRoaXMuX3VwZGF0ZU9wYWNpdHkoKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRTdHlsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQub3BhY2l0eSAmJiB0aGlzLnNldE9wYWNpdHkodC5vcGFjaXR5KSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBicmluZ1RvRnJvbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hcCAmJiBjaSh0aGlzLl9pbWFnZSksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnJpbmdUb0JhY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hcCAmJiBfaSh0aGlzLl9pbWFnZSksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0VXJsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXJsID0gdCwgdGhpcy5faW1hZ2UgJiYgKHRoaXMuX2ltYWdlLnNyYyA9IHQpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldEJvdW5kczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2JvdW5kcyA9IEQodCksIHRoaXMuX21hcCAmJiB0aGlzLl9yZXNldCgpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHsKICAgICAgICAgICAgICAgICAgICB6b29tOiB0aGlzLl9yZXNldCwKICAgICAgICAgICAgICAgICAgICB2aWV3cmVzZXQ6IHRoaXMuX3Jlc2V0CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3pvb21BbmltYXRlZCAmJiAodC56b29tYW5pbSA9IHRoaXMuX2FuaW1hdGVab29tKSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRaSW5kZXg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuekluZGV4ID0gdCwgdGhpcy5fdXBkYXRlWkluZGV4KCksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0Qm91bmRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9ib3VuZHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWxlbWVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2luaXRJbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9ICJJTUciID09PSB0aGlzLl91cmwudGFnTmFtZSwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5faW1hZ2UgPSB0ID8gdGhpcy5fdXJsIDogaGkoImltZyIpOwogICAgICAgICAgICAgICAgcGkoaSwgImxlYWZsZXQtaW1hZ2UtbGF5ZXIiKSwgdGhpcy5fem9vbUFuaW1hdGVkICYmIHBpKGksICJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKSwgdGhpcy5vcHRpb25zLmNsYXNzTmFtZSAmJiBwaShpLCB0aGlzLm9wdGlvbnMuY2xhc3NOYW1lKSwgaS5vbnNlbGVjdHN0YXJ0ID0gbCwgaS5vbm1vdXNlbW92ZSA9IGwsIGkub25sb2FkID0gYSh0aGlzLmZpcmUsIHRoaXMsICJsb2FkIiksIGkub25lcnJvciA9IGEodGhpcy5fb3ZlcmxheU9uRXJyb3IsIHRoaXMsICJlcnJvciIpLCAhdGhpcy5vcHRpb25zLmNyb3NzT3JpZ2luICYmICIiICE9PSB0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4gfHwgKGkuY3Jvc3NPcmlnaW4gPSAhMCA9PT0gdGhpcy5vcHRpb25zLmNyb3NzT3JpZ2luID8gIiIgOiB0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLCB0aGlzLm9wdGlvbnMuekluZGV4ICYmIHRoaXMuX3VwZGF0ZVpJbmRleCgpLCB0ID8gdGhpcy5fdXJsID0gaS5zcmMgOiAoaS5zcmMgPSB0aGlzLl91cmwsIGkuYWx0ID0gdGhpcy5vcHRpb25zLmFsdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2FuaW1hdGVab29tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX21hcC5nZXRab29tU2NhbGUodC56b29tKSwKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fbWFwLl9sYXRMbmdCb3VuZHNUb05ld0xheWVyQm91bmRzKHRoaXMuX2JvdW5kcywgdC56b29tLCB0LmNlbnRlcikubWluOwogICAgICAgICAgICAgICAgeGkodGhpcy5faW1hZ2UsIGUsIGkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9yZXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2ltYWdlLAogICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgTyh0aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2JvdW5kcy5nZXROb3J0aFdlc3QoKSksIHRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpKSksCiAgICAgICAgICAgICAgICAgICAgZSA9IGkuZ2V0U2l6ZSgpOwogICAgICAgICAgICAgICAgd2kodCwgaS5taW4pLCB0LnN0eWxlLndpZHRoID0gZS54ICsgInB4IiwgdC5zdHlsZS5oZWlnaHQgPSBlLnkgKyAicHgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGVPcGFjaXR5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZpKHRoaXMuX2ltYWdlLCB0aGlzLm9wdGlvbnMub3BhY2l0eSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVpJbmRleDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9pbWFnZSAmJiB2b2lkIDAgIT09IHRoaXMub3B0aW9ucy56SW5kZXggJiYgbnVsbCAhPT0gdGhpcy5vcHRpb25zLnpJbmRleCAmJiAodGhpcy5faW1hZ2Uuc3R5bGUuekluZGV4ID0gdGhpcy5vcHRpb25zLnpJbmRleCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX292ZXJsYXlPbkVycm9yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuZmlyZSgiZXJyb3IiKTsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5vcHRpb25zLmVycm9yT3ZlcmxheVVybDsKICAgICAgICAgICAgICAgIHQgJiYgdGhpcy5fdXJsICE9PSB0ICYmICh0aGlzLl91cmwgPSB0LCB0aGlzLl9pbWFnZS5zcmMgPSB0KQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgUWUgPSAkZS5leHRlbmQoewogICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICBhdXRvcGxheTogITAsCiAgICAgICAgICAgICAgICBsb29wOiAhMCwKICAgICAgICAgICAgICAgIGtlZXBBc3BlY3RSYXRpbzogITAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2luaXRJbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9ICJWSURFTyIgPT09IHRoaXMuX3VybC50YWdOYW1lLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLl9pbWFnZSA9IHQgPyB0aGlzLl91cmwgOiBoaSgidmlkZW8iKTsKICAgICAgICAgICAgICAgIGlmIChwaShpLCAibGVhZmxldC1pbWFnZS1sYXllciIpLCB0aGlzLl96b29tQW5pbWF0ZWQgJiYgcGkoaSwgImxlYWZsZXQtem9vbS1hbmltYXRlZCIpLCBpLm9uc2VsZWN0c3RhcnQgPSBsLCBpLm9ubW91c2Vtb3ZlID0gbCwgaS5vbmxvYWRlZGRhdGEgPSBhKHRoaXMuZmlyZSwgdGhpcywgImxvYWQiKSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzb3VyY2UiKSwgbiA9IFtdLCBvID0gMDsgbyA8IGUubGVuZ3RoOyBvKyspIG4ucHVzaChlW29dLnNyYyk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXJsID0gMCA8IGUubGVuZ3RoID8gbiA6IFtpLnNyY10KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdih0aGlzLl91cmwpIHx8ICh0aGlzLl91cmwgPSBbdGhpcy5fdXJsXSksICF0aGlzLm9wdGlvbnMua2VlcEFzcGVjdFJhdGlvICYmIGkuc3R5bGUuaGFzT3duUHJvcGVydHkoIm9iamVjdEZpdCIpICYmIChpLnN0eWxlLm9iamVjdEZpdCA9ICJmaWxsIiksIGkuYXV0b3BsYXkgPSAhIXRoaXMub3B0aW9ucy5hdXRvcGxheSwgaS5sb29wID0gISF0aGlzLm9wdGlvbnMubG9vcDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuX3VybC5sZW5ndGg7IHMrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGhpKCJzb3VyY2UiKTsKICAgICAgICAgICAgICAgICAgICAgICAgci5zcmMgPSB0aGlzLl91cmxbc10sIGkuYXBwZW5kQ2hpbGQocikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIHZhciB0biA9ICRlLmV4dGVuZCh7CiAgICAgICAgX2luaXRJbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5faW1hZ2UgPSB0aGlzLl91cmw7CiAgICAgICAgICAgIHBpKHQsICJsZWFmbGV0LWltYWdlLWxheWVyIiksIHRoaXMuX3pvb21BbmltYXRlZCAmJiBwaSh0LCAibGVhZmxldC16b29tLWFuaW1hdGVkIiksIHQub25zZWxlY3RzdGFydCA9IGwsIHQub25tb3VzZW1vdmUgPSBsCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgZW4gPSBTZS5leHRlbmQoewogICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICBvZmZzZXQ6IFswLCA3XSwKICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogIiIsCiAgICAgICAgICAgICAgICBwYW5lOiAicG9wdXBQYW5lIgogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICBwKHRoaXMsIHQpLCB0aGlzLl9zb3VyY2UgPSBpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uQWRkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl96b29tQW5pbWF0ZWQgPSB0Ll96b29tQW5pbWF0ZWQsIHRoaXMuX2NvbnRhaW5lciB8fCB0aGlzLl9pbml0TGF5b3V0KCksIHQuX2ZhZGVBbmltYXRlZCAmJiB2aSh0aGlzLl9jb250YWluZXIsIDApLCBjbGVhclRpbWVvdXQodGhpcy5fcmVtb3ZlVGltZW91dCksIHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksIHRoaXMudXBkYXRlKCksIHQuX2ZhZGVBbmltYXRlZCAmJiB2aSh0aGlzLl9jb250YWluZXIsIDEpLCB0aGlzLmJyaW5nVG9Gcm9udCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uUmVtb3ZlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0Ll9mYWRlQW5pbWF0ZWQgPyAodmkodGhpcy5fY29udGFpbmVyLCAwKSwgdGhpcy5fcmVtb3ZlVGltZW91dCA9IHNldFRpbWVvdXQoYSh1aSwgdm9pZCAwLCB0aGlzLl9jb250YWluZXIpLCAyMDApKSA6IHVpKHRoaXMuX2NvbnRhaW5lcikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TGF0TG5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sYXRsbmcKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0TGF0TG5nOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGF0bG5nID0gVyh0KSwgdGhpcy5fbWFwICYmICh0aGlzLl91cGRhdGVQb3NpdGlvbigpLCB0aGlzLl9hZGp1c3RQYW4oKSksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0Q29udGVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudAogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRDb250ZW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudCA9IHQsIHRoaXMudXBkYXRlKCksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWxlbWVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9tYXAgJiYgKHRoaXMuX2NvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiIsIHRoaXMuX3VwZGF0ZUNvbnRlbnQoKSwgdGhpcy5fdXBkYXRlTGF5b3V0KCksIHRoaXMuX3VwZGF0ZVBvc2l0aW9uKCksIHRoaXMuX2NvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gIiIsIHRoaXMuX2FkanVzdFBhbigpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRFdmVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgem9vbTogdGhpcy5fdXBkYXRlUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgdmlld3Jlc2V0OiB0aGlzLl91cGRhdGVQb3NpdGlvbgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl96b29tQW5pbWF0ZWQgJiYgKHQuem9vbWFuaW0gPSB0aGlzLl9hbmltYXRlWm9vbSksIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNPcGVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIXRoaXMuX21hcCAmJiB0aGlzLl9tYXAuaGFzTGF5ZXIodGhpcykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnJpbmdUb0Zyb250OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXAgJiYgY2kodGhpcy5fY29udGFpbmVyKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBicmluZ1RvQmFjazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFwICYmIF9pKHRoaXMuX2NvbnRhaW5lciksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3ByZXBhcmVPcGVuOiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICBpZiAoaSBpbnN0YW5jZW9mIFNlIHx8IChlID0gaSwgaSA9IHQpLCBpIGluc3RhbmNlb2YgRWUpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0Ll9sYXllcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuX2xheWVyc1tuXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICAgICAgICAgaWYgKGkuZ2V0Q2VudGVyKSBlID0gaS5nZXRDZW50ZXIoKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpLmdldExhdExuZykgdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZ2V0IHNvdXJjZSBsYXllciBMYXRMbmcuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBpLmdldExhdExuZygpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZSA9IGksIHRoaXMudXBkYXRlKCksIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2NvbnRlbnROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5fY29udGVudCA/IHRoaXMuX2NvbnRlbnQodGhpcy5fc291cmNlIHx8IHRoaXMpIDogdGhpcy5fY29udGVudDsKICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGkpIHQuaW5uZXJIVE1MID0gaTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQuaGFzQ2hpbGROb2RlcygpOykgdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgICAgICAgICAgICB0LmFwcGVuZENoaWxkKGkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyZSgiY29udGVudHVwZGF0ZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGVQb3NpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWFwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBJKHRoaXMub3B0aW9ucy5vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fZ2V0QW5jaG9yKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fem9vbUFuaW1hdGVkID8gd2kodGhpcy5fY29udGFpbmVyLCB0LmFkZChlKSkgOiBpID0gaS5hZGQodCkuYWRkKGUpOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fY29udGFpbmVyQm90dG9tID0gLWkueSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuX2NvbnRhaW5lckxlZnQgPSAtTWF0aC5yb3VuZCh0aGlzLl9jb250YWluZXJXaWR0aCAvIDIpICsgaS54OwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5zdHlsZS5ib3R0b20gPSBuICsgInB4IiwgdGhpcy5fY29udGFpbmVyLnN0eWxlLmxlZnQgPSBvICsgInB4IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0QW5jaG9yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbMCwgMF0KICAgICAgICAgICAgfQogICAgICAgIH0pLAogICAgICAgIG5uID0gZW4uZXh0ZW5kKHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgbWF4V2lkdGg6IDMwMCwKICAgICAgICAgICAgICAgIG1pbldpZHRoOiA1MCwKICAgICAgICAgICAgICAgIG1heEhlaWdodDogbnVsbCwKICAgICAgICAgICAgICAgIGF1dG9QYW46ICEwLAogICAgICAgICAgICAgICAgYXV0b1BhblBhZGRpbmdUb3BMZWZ0OiBudWxsLAogICAgICAgICAgICAgICAgYXV0b1BhblBhZGRpbmdCb3R0b21SaWdodDogbnVsbCwKICAgICAgICAgICAgICAgIGF1dG9QYW5QYWRkaW5nOiBbNSwgNV0sCiAgICAgICAgICAgICAgICBrZWVwSW5WaWV3OiAhMSwKICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiAhMCwKICAgICAgICAgICAgICAgIGF1dG9DbG9zZTogITAsCiAgICAgICAgICAgICAgICBjbG9zZU9uRXNjYXBlS2V5OiAhMCwKICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb3Blbk9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdC5vcGVuUG9wdXAodGhpcyksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25BZGQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGVuLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsIHQpLCB0LmZpcmUoInBvcHVwb3BlbiIsIHsKICAgICAgICAgICAgICAgICAgICBwb3B1cDogdGhpcwogICAgICAgICAgICAgICAgfSksIHRoaXMuX3NvdXJjZSAmJiAodGhpcy5fc291cmNlLmZpcmUoInBvcHVwb3BlbiIsIHsKICAgICAgICAgICAgICAgICAgICBwb3B1cDogdGhpcwogICAgICAgICAgICAgICAgfSwgITApLCB0aGlzLl9zb3VyY2UgaW5zdGFuY2VvZiBPZSB8fCB0aGlzLl9zb3VyY2Uub24oInByZWNsaWNrIiwgT2kpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBvblJlbW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZW4ucHJvdG90eXBlLm9uUmVtb3ZlLmNhbGwodGhpcywgdCksIHQuZmlyZSgicG9wdXBjbG9zZSIsIHsKICAgICAgICAgICAgICAgICAgICBwb3B1cDogdGhpcwogICAgICAgICAgICAgICAgfSksIHRoaXMuX3NvdXJjZSAmJiAodGhpcy5fc291cmNlLmZpcmUoInBvcHVwY2xvc2UiLCB7CiAgICAgICAgICAgICAgICAgICAgcG9wdXA6IHRoaXMKICAgICAgICAgICAgICAgIH0sICEwKSwgdGhpcy5fc291cmNlIGluc3RhbmNlb2YgT2UgfHwgdGhpcy5fc291cmNlLm9mZigicHJlY2xpY2siLCBPaSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGVuLnByb3RvdHlwZS5nZXRFdmVudHMuY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiAodm9pZCAwICE9PSB0aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrID8gdGhpcy5vcHRpb25zLmNsb3NlT25DbGljayA6IHRoaXMuX21hcC5vcHRpb25zLmNsb3NlUG9wdXBPbkNsaWNrKSAmJiAodC5wcmVjbGljayA9IHRoaXMuX2Nsb3NlKSwgdGhpcy5vcHRpb25zLmtlZXBJblZpZXcgJiYgKHQubW92ZWVuZCA9IHRoaXMuX2FkanVzdFBhbiksIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2Nsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21hcCAmJiB0aGlzLl9tYXAuY2xvc2VQb3B1cCh0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfaW5pdExheW91dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9ICJsZWFmbGV0LXBvcHVwIiwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5fY29udGFpbmVyID0gaGkoImRpdiIsIHQgKyAiICIgKyAodGhpcy5vcHRpb25zLmNsYXNzTmFtZSB8fCAiIikgKyAiIGxlYWZsZXQtem9vbS1hbmltYXRlZCIpLAogICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl93cmFwcGVyID0gaGkoImRpdiIsIHQgKyAiLWNvbnRlbnQtd3JhcHBlciIsIGkpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnROb2RlID0gaGkoImRpdiIsIHQgKyAiLWNvbnRlbnQiLCBlKSwgTmkoZSksIFJpKHRoaXMuX2NvbnRlbnROb2RlKSwgRWkoZSwgImNvbnRleHRtZW51IiwgT2kpLCB0aGlzLl90aXBDb250YWluZXIgPSBoaSgiZGl2IiwgdCArICItdGlwLWNvbnRhaW5lciIsIGkpLCB0aGlzLl90aXAgPSBoaSgiZGl2IiwgdCArICItdGlwIiwgdGhpcy5fdGlwQ29udGFpbmVyKSwgdGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9jbG9zZUJ1dHRvbiA9IGhpKCJhIiwgdCArICItY2xvc2UtYnV0dG9uIiwgaSk7CiAgICAgICAgICAgICAgICAgICAgbi5ocmVmID0gIiNjbG9zZSIsIG4uaW5uZXJIVE1MID0gIiYjMjE1OyIsIEVpKG4sICJjbGljayIsIHRoaXMuX29uQ2xvc2VCdXR0b25DbGljaywgdGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZUxheW91dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2NvbnRlbnROb2RlLAogICAgICAgICAgICAgICAgICAgIGkgPSB0LnN0eWxlOwogICAgICAgICAgICAgICAgaS53aWR0aCA9ICIiLCBpLndoaXRlU3BhY2UgPSAibm93cmFwIjsKICAgICAgICAgICAgICAgIHZhciBlID0gdC5vZmZzZXRXaWR0aDsKICAgICAgICAgICAgICAgIGUgPSBNYXRoLm1pbihlLCB0aGlzLm9wdGlvbnMubWF4V2lkdGgpLCBlID0gTWF0aC5tYXgoZSwgdGhpcy5vcHRpb25zLm1pbldpZHRoKSwgaS53aWR0aCA9IGUgKyAxICsgInB4IiwgaS53aGl0ZVNwYWNlID0gIiIsIGkuaGVpZ2h0ID0gIiI7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHQub2Zmc2V0SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLm9wdGlvbnMubWF4SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIHMgPSAibGVhZmxldC1wb3B1cC1zY3JvbGxlZCI7CiAgICAgICAgICAgICAgICBvICYmIG8gPCBuID8gKGkuaGVpZ2h0ID0gbyArICJweCIsIHBpKHQsIHMpKSA6IG1pKHQsIHMpLCB0aGlzLl9jb250YWluZXJXaWR0aCA9IHRoaXMuX2NvbnRhaW5lci5vZmZzZXRXaWR0aAogICAgICAgICAgICB9LAogICAgICAgICAgICBfYW5pbWF0ZVpvb206IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLCB0Lnpvb20sIHQuY2VudGVyKSwKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fZ2V0QW5jaG9yKCk7CiAgICAgICAgICAgICAgICB3aSh0aGlzLl9jb250YWluZXIsIGkuYWRkKGUpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYWRqdXN0UGFuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1BhbikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX21hcC5fcGFuQW5pbSAmJiB0aGlzLl9tYXAuX3BhbkFuaW0uc3RvcCgpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fbWFwLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gcGFyc2VJbnQoYWkodGhpcy5fY29udGFpbmVyLCAibWFyZ2luQm90dG9tIiksIDEwKSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fY29udGFpbmVyLm9mZnNldEhlaWdodCArIGksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9jb250YWluZXJXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBCKHRoaXMuX2NvbnRhaW5lckxlZnQsIC1lIC0gdGhpcy5fY29udGFpbmVyQm90dG9tKTsKICAgICAgICAgICAgICAgICAgICBvLl9hZGQoUGkodGhpcy5fY29udGFpbmVyKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0LmxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50KG8pLAogICAgICAgICAgICAgICAgICAgICAgICByID0gSSh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gSSh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmdUb3BMZWZ0IHx8IHIpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gSSh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmdCb3R0b21SaWdodCB8fCByKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQuZ2V0U2l6ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDA7CiAgICAgICAgICAgICAgICAgICAgcy54ICsgbiArIGgueCA+IHUueCAmJiAobCA9IHMueCArIG4gLSB1LnggKyBoLngpLCBzLnggLSBsIC0gYS54IDwgMCAmJiAobCA9IHMueCAtIGEueCksIHMueSArIGUgKyBoLnkgPiB1LnkgJiYgKGMgPSBzLnkgKyBlIC0gdS55ICsgaC55KSwgcy55IC0gYyAtIGEueSA8IDAgJiYgKGMgPSBzLnkgLSBhLnkpLCAobCB8fCBjKSAmJiB0LmZpcmUoImF1dG9wYW5zdGFydCIpLnBhbkJ5KFtsLCBjXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uQ2xvc2VCdXR0b25DbGljazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fY2xvc2UoKSwgamkodCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldEFuY2hvcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gSSh0aGlzLl9zb3VyY2UgJiYgdGhpcy5fc291cmNlLl9nZXRQb3B1cEFuY2hvciA/IHRoaXMuX3NvdXJjZS5fZ2V0UG9wdXBBbmNob3IoKSA6IFswLCAwXSkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgSmkubWVyZ2VPcHRpb25zKHsKICAgICAgICBjbG9zZVBvcHVwT25DbGljazogITAKICAgIH0pLCBKaS5pbmNsdWRlKHsKICAgICAgICBvcGVuUG9wdXA6IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBubiB8fCAodCA9IG5ldyBubihlKS5zZXRDb250ZW50KHQpKSwgaSAmJiB0LnNldExhdExuZyhpKSwgdGhpcy5oYXNMYXllcih0KSA/IHRoaXMgOiAodGhpcy5fcG9wdXAgJiYgdGhpcy5fcG9wdXAub3B0aW9ucy5hdXRvQ2xvc2UgJiYgdGhpcy5jbG9zZVBvcHVwKCksIHRoaXMuX3BvcHVwID0gdCwgdGhpcy5hZGRMYXllcih0KSkKICAgICAgICB9LAogICAgICAgIGNsb3NlUG9wdXA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQgJiYgdCAhPT0gdGhpcy5fcG9wdXAgfHwgKHQgPSB0aGlzLl9wb3B1cCwgdGhpcy5fcG9wdXAgPSBudWxsKSwgdCAmJiB0aGlzLnJlbW92ZUxheWVyKHQpLCB0aGlzCiAgICAgICAgfQogICAgfSksIFNlLmluY2x1ZGUoewogICAgICAgIGJpbmRQb3B1cDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICByZXR1cm4gdCBpbnN0YW5jZW9mIG5uID8gKHAodCwgaSksICh0aGlzLl9wb3B1cCA9IHQpLl9zb3VyY2UgPSB0aGlzKSA6ICh0aGlzLl9wb3B1cCAmJiAhaSB8fCAodGhpcy5fcG9wdXAgPSBuZXcgbm4oaSwgdGhpcykpLCB0aGlzLl9wb3B1cC5zZXRDb250ZW50KHQpKSwgdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkIHx8ICh0aGlzLm9uKHsKICAgICAgICAgICAgICAgIGNsaWNrOiB0aGlzLl9vcGVuUG9wdXAsCiAgICAgICAgICAgICAgICBrZXlwcmVzczogdGhpcy5fb25LZXlQcmVzcywKICAgICAgICAgICAgICAgIHJlbW92ZTogdGhpcy5jbG9zZVBvcHVwLAogICAgICAgICAgICAgICAgbW92ZTogdGhpcy5fbW92ZVBvcHVwCiAgICAgICAgICAgIH0pLCB0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWQgPSAhMCksIHRoaXMKICAgICAgICB9LAogICAgICAgIHVuYmluZFBvcHVwOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BvcHVwICYmICh0aGlzLm9mZih7CiAgICAgICAgICAgICAgICBjbGljazogdGhpcy5fb3BlblBvcHVwLAogICAgICAgICAgICAgICAga2V5cHJlc3M6IHRoaXMuX29uS2V5UHJlc3MsCiAgICAgICAgICAgICAgICByZW1vdmU6IHRoaXMuY2xvc2VQb3B1cCwKICAgICAgICAgICAgICAgIG1vdmU6IHRoaXMuX21vdmVQb3B1cAogICAgICAgICAgICB9KSwgdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkID0gITEsIHRoaXMuX3BvcHVwID0gbnVsbCksIHRoaXMKICAgICAgICB9LAogICAgICAgIG9wZW5Qb3B1cDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9wdXAgJiYgdGhpcy5fbWFwICYmIChpID0gdGhpcy5fcG9wdXAuX3ByZXBhcmVPcGVuKHRoaXMsIHQsIGkpLCB0aGlzLl9tYXAub3BlblBvcHVwKHRoaXMuX3BvcHVwLCBpKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGNsb3NlUG9wdXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9wdXAgJiYgdGhpcy5fcG9wdXAuX2Nsb3NlKCksIHRoaXMKICAgICAgICB9LAogICAgICAgIHRvZ2dsZVBvcHVwOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wb3B1cCAmJiAodGhpcy5fcG9wdXAuX21hcCA/IHRoaXMuY2xvc2VQb3B1cCgpIDogdGhpcy5vcGVuUG9wdXAodCkpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBpc1BvcHVwT3BlbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAhIXRoaXMuX3BvcHVwICYmIHRoaXMuX3BvcHVwLmlzT3BlbigpCiAgICAgICAgfSwKICAgICAgICBzZXRQb3B1cENvbnRlbnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BvcHVwICYmIHRoaXMuX3BvcHVwLnNldENvbnRlbnQodCksIHRoaXMKICAgICAgICB9LAogICAgICAgIGdldFBvcHVwOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BvcHVwCiAgICAgICAgfSwKICAgICAgICBfb3BlblBvcHVwOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdC5sYXllciB8fCB0LnRhcmdldDsKICAgICAgICAgICAgdGhpcy5fcG9wdXAgJiYgdGhpcy5fbWFwICYmIChqaSh0KSwgaSBpbnN0YW5jZW9mIE9lID8gdGhpcy5vcGVuUG9wdXAodC5sYXllciB8fCB0LnRhcmdldCwgdC5sYXRsbmcpIDogdGhpcy5fbWFwLmhhc0xheWVyKHRoaXMuX3BvcHVwKSAmJiB0aGlzLl9wb3B1cC5fc291cmNlID09PSBpID8gdGhpcy5jbG9zZVBvcHVwKCkgOiB0aGlzLm9wZW5Qb3B1cChpLCB0LmxhdGxuZykpCiAgICAgICAgfSwKICAgICAgICBfbW92ZVBvcHVwOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRoaXMuX3BvcHVwLnNldExhdExuZyh0LmxhdGxuZykKICAgICAgICB9LAogICAgICAgIF9vbktleVByZXNzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIDEzID09PSB0Lm9yaWdpbmFsRXZlbnQua2V5Q29kZSAmJiB0aGlzLl9vcGVuUG9wdXAodCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBvbiA9IGVuLmV4dGVuZCh7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBwYW5lOiAidG9vbHRpcFBhbmUiLAogICAgICAgICAgICBvZmZzZXQ6IFswLCAwXSwKICAgICAgICAgICAgZGlyZWN0aW9uOiAiYXV0byIsCiAgICAgICAgICAgIHBlcm1hbmVudDogITEsCiAgICAgICAgICAgIHN0aWNreTogITEsCiAgICAgICAgICAgIGludGVyYWN0aXZlOiAhMSwKICAgICAgICAgICAgb3BhY2l0eTogLjkKICAgICAgICB9LAogICAgICAgIG9uQWRkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGVuLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsIHQpLCB0aGlzLnNldE9wYWNpdHkodGhpcy5vcHRpb25zLm9wYWNpdHkpLCB0LmZpcmUoInRvb2x0aXBvcGVuIiwgewogICAgICAgICAgICAgICAgdG9vbHRpcDogdGhpcwogICAgICAgICAgICB9KSwgdGhpcy5fc291cmNlICYmIHRoaXMuX3NvdXJjZS5maXJlKCJ0b29sdGlwb3BlbiIsIHsKICAgICAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMKICAgICAgICAgICAgfSwgITApCiAgICAgICAgfSwKICAgICAgICBvblJlbW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICBlbi5wcm90b3R5cGUub25SZW1vdmUuY2FsbCh0aGlzLCB0KSwgdC5maXJlKCJ0b29sdGlwY2xvc2UiLCB7CiAgICAgICAgICAgICAgICB0b29sdGlwOiB0aGlzCiAgICAgICAgICAgIH0pLCB0aGlzLl9zb3VyY2UgJiYgdGhpcy5fc291cmNlLmZpcmUoInRvb2x0aXBjbG9zZSIsIHsKICAgICAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMKICAgICAgICAgICAgfSwgITApCiAgICAgICAgfSwKICAgICAgICBnZXRFdmVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IGVuLnByb3RvdHlwZS5nZXRFdmVudHMuY2FsbCh0aGlzKTsKICAgICAgICAgICAgcmV0dXJuIFR0ICYmICF0aGlzLm9wdGlvbnMucGVybWFuZW50ICYmICh0LnByZWNsaWNrID0gdGhpcy5fY2xvc2UpLCB0CiAgICAgICAgfSwKICAgICAgICBfY2xvc2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmNsb3NlVG9vbHRpcCh0aGlzKQogICAgICAgIH0sCiAgICAgICAgX2luaXRMYXlvdXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9ICJsZWFmbGV0LXRvb2x0aXAgIiArICh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lIHx8ICIiKSArICIgbGVhZmxldC16b29tLSIgKyAodGhpcy5fem9vbUFuaW1hdGVkID8gImFuaW1hdGVkIiA6ICJoaWRlIik7CiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnROb2RlID0gdGhpcy5fY29udGFpbmVyID0gaGkoImRpdiIsIHQpCiAgICAgICAgfSwKICAgICAgICBfdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpIHt9LAogICAgICAgIF9hZGp1c3RQYW46IGZ1bmN0aW9uKCkge30sCiAgICAgICAgX3NldFBvc2l0aW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5fbWFwLAogICAgICAgICAgICAgICAgZSA9IHRoaXMuX2NvbnRhaW5lciwKICAgICAgICAgICAgICAgIG4gPSBpLmxhdExuZ1RvQ29udGFpbmVyUG9pbnQoaS5nZXRDZW50ZXIoKSksCiAgICAgICAgICAgICAgICBvID0gaS5sYXllclBvaW50VG9Db250YWluZXJQb2ludCh0KSwKICAgICAgICAgICAgICAgIHMgPSB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLAogICAgICAgICAgICAgICAgciA9IGUub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICBhID0gZS5vZmZzZXRIZWlnaHQsCiAgICAgICAgICAgICAgICBoID0gSSh0aGlzLm9wdGlvbnMub2Zmc2V0KSwKICAgICAgICAgICAgICAgIHUgPSB0aGlzLl9nZXRBbmNob3IoKTsKICAgICAgICAgICAgdCA9ICJ0b3AiID09PSBzID8gdC5hZGQoSSgtciAvIDIgKyBoLngsIC1hICsgaC55ICsgdS55LCAhMCkpIDogImJvdHRvbSIgPT09IHMgPyB0LnN1YnRyYWN0KEkociAvIDIgLSBoLngsIC1oLnksICEwKSkgOiAiY2VudGVyIiA9PT0gcyA/IHQuc3VidHJhY3QoSShyIC8gMiArIGgueCwgYSAvIDIgLSB1LnkgKyBoLnksICEwKSkgOiAicmlnaHQiID09PSBzIHx8ICJhdXRvIiA9PT0gcyAmJiBvLnggPCBuLnggPyAocyA9ICJyaWdodCIsIHQuYWRkKEkoaC54ICsgdS54LCB1LnkgLSBhIC8gMiArIGgueSwgITApKSkgOiAocyA9ICJsZWZ0IiwgdC5zdWJ0cmFjdChJKHIgKyB1LnggLSBoLngsIGEgLyAyIC0gdS55IC0gaC55LCAhMCkpKSwgbWkoZSwgImxlYWZsZXQtdG9vbHRpcC1yaWdodCIpLCBtaShlLCAibGVhZmxldC10b29sdGlwLWxlZnQiKSwgbWkoZSwgImxlYWZsZXQtdG9vbHRpcC10b3AiKSwgbWkoZSwgImxlYWZsZXQtdG9vbHRpcC1ib3R0b20iKSwgcGkoZSwgImxlYWZsZXQtdG9vbHRpcC0iICsgcyksIHdpKGUsIHQpCiAgICAgICAgfSwKICAgICAgICBfdXBkYXRlUG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKTsKICAgICAgICAgICAgdGhpcy5fc2V0UG9zaXRpb24odCkKICAgICAgICB9LAogICAgICAgIHNldE9wYWNpdHk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9wYWNpdHkgPSB0LCB0aGlzLl9jb250YWluZXIgJiYgdmkodGhpcy5fY29udGFpbmVyLCB0KQogICAgICAgIH0sCiAgICAgICAgX2FuaW1hdGVab29tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLCB0Lnpvb20sIHQuY2VudGVyKTsKICAgICAgICAgICAgdGhpcy5fc2V0UG9zaXRpb24oaSkKICAgICAgICB9LAogICAgICAgIF9nZXRBbmNob3I6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gSSh0aGlzLl9zb3VyY2UgJiYgdGhpcy5fc291cmNlLl9nZXRUb29sdGlwQW5jaG9yICYmICF0aGlzLm9wdGlvbnMuc3RpY2t5ID8gdGhpcy5fc291cmNlLl9nZXRUb29sdGlwQW5jaG9yKCkgOiBbMCwgMF0pCiAgICAgICAgfQogICAgfSk7CiAgICBKaS5pbmNsdWRlKHsKICAgICAgICBvcGVuVG9vbHRpcDogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICByZXR1cm4gdCBpbnN0YW5jZW9mIG9uIHx8ICh0ID0gbmV3IG9uKGUpLnNldENvbnRlbnQodCkpLCBpICYmIHQuc2V0TGF0TG5nKGkpLCB0aGlzLmhhc0xheWVyKHQpID8gdGhpcyA6IHRoaXMuYWRkTGF5ZXIodCkKICAgICAgICB9LAogICAgICAgIGNsb3NlVG9vbHRpcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdCAmJiB0aGlzLnJlbW92ZUxheWVyKHQpLCB0aGlzCiAgICAgICAgfQogICAgfSksIFNlLmluY2x1ZGUoewogICAgICAgIGJpbmRUb29sdGlwOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHJldHVybiB0IGluc3RhbmNlb2Ygb24gPyAocCh0LCBpKSwgKHRoaXMuX3Rvb2x0aXAgPSB0KS5fc291cmNlID0gdGhpcykgOiAodGhpcy5fdG9vbHRpcCAmJiAhaSB8fCAodGhpcy5fdG9vbHRpcCA9IG5ldyBvbihpLCB0aGlzKSksIHRoaXMuX3Rvb2x0aXAuc2V0Q29udGVudCh0KSksIHRoaXMuX2luaXRUb29sdGlwSW50ZXJhY3Rpb25zKCksIHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5wZXJtYW5lbnQgJiYgdGhpcy5fbWFwICYmIHRoaXMuX21hcC5oYXNMYXllcih0aGlzKSAmJiB0aGlzLm9wZW5Ub29sdGlwKCksIHRoaXMKICAgICAgICB9LAogICAgICAgIHVuYmluZFRvb2x0aXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9vbHRpcCAmJiAodGhpcy5faW5pdFRvb2x0aXBJbnRlcmFjdGlvbnMoITApLCB0aGlzLmNsb3NlVG9vbHRpcCgpLCB0aGlzLl90b29sdGlwID0gbnVsbCksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9pbml0VG9vbHRpcEludGVyYWN0aW9uczogZnVuY3Rpb24odCkgewogICAgICAgICAgICBpZiAodCB8fCAhdGhpcy5fdG9vbHRpcEhhbmRsZXJzQWRkZWQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdCA/ICJvZmYiIDogIm9uIiwKICAgICAgICAgICAgICAgICAgICBlID0gewogICAgICAgICAgICAgICAgICAgICAgICByZW1vdmU6IHRoaXMuY2xvc2VUb29sdGlwLAogICAgICAgICAgICAgICAgICAgICAgICBtb3ZlOiB0aGlzLl9tb3ZlVG9vbHRpcAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLl90b29sdGlwLm9wdGlvbnMucGVybWFuZW50ID8gZS5hZGQgPSB0aGlzLl9vcGVuVG9vbHRpcCA6IChlLm1vdXNlb3ZlciA9IHRoaXMuX29wZW5Ub29sdGlwLCBlLm1vdXNlb3V0ID0gdGhpcy5jbG9zZVRvb2x0aXAsIHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5zdGlja3kgJiYgKGUubW91c2Vtb3ZlID0gdGhpcy5fbW92ZVRvb2x0aXApLCBUdCAmJiAoZS5jbGljayA9IHRoaXMuX29wZW5Ub29sdGlwKSksIHRoaXNbaV0oZSksIHRoaXMuX3Rvb2x0aXBIYW5kbGVyc0FkZGVkID0gIXQKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgb3BlblRvb2x0aXA6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXAgJiYgdGhpcy5fbWFwICYmIChpID0gdGhpcy5fdG9vbHRpcC5fcHJlcGFyZU9wZW4odGhpcywgdCwgaSksIHRoaXMuX21hcC5vcGVuVG9vbHRpcCh0aGlzLl90b29sdGlwLCBpKSwgdGhpcy5fdG9vbHRpcC5vcHRpb25zLmludGVyYWN0aXZlICYmIHRoaXMuX3Rvb2x0aXAuX2NvbnRhaW5lciAmJiAocGkodGhpcy5fdG9vbHRpcC5fY29udGFpbmVyLCAibGVhZmxldC1jbGlja2FibGUiKSwgdGhpcy5hZGRJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl90b29sdGlwLl9jb250YWluZXIpKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGNsb3NlVG9vbHRpcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90b29sdGlwICYmICh0aGlzLl90b29sdGlwLl9jbG9zZSgpLCB0aGlzLl90b29sdGlwLm9wdGlvbnMuaW50ZXJhY3RpdmUgJiYgdGhpcy5fdG9vbHRpcC5fY29udGFpbmVyICYmIChtaSh0aGlzLl90b29sdGlwLl9jb250YWluZXIsICJsZWFmbGV0LWNsaWNrYWJsZSIpLCB0aGlzLnJlbW92ZUludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX3Rvb2x0aXAuX2NvbnRhaW5lcikpKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgdG9nZ2xlVG9vbHRpcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9vbHRpcCAmJiAodGhpcy5fdG9vbHRpcC5fbWFwID8gdGhpcy5jbG9zZVRvb2x0aXAoKSA6IHRoaXMub3BlblRvb2x0aXAodCkpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBpc1Rvb2x0aXBPcGVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXAuaXNPcGVuKCkKICAgICAgICB9LAogICAgICAgIHNldFRvb2x0aXBDb250ZW50OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90b29sdGlwICYmIHRoaXMuX3Rvb2x0aXAuc2V0Q29udGVudCh0KSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgZ2V0VG9vbHRpcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90b29sdGlwCiAgICAgICAgfSwKICAgICAgICBfb3BlblRvb2x0aXA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0LmxheWVyIHx8IHQudGFyZ2V0OwogICAgICAgICAgICB0aGlzLl90b29sdGlwICYmIHRoaXMuX21hcCAmJiB0aGlzLm9wZW5Ub29sdGlwKGksIHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5zdGlja3kgPyB0LmxhdGxuZyA6IHZvaWQgMCkKICAgICAgICB9LAogICAgICAgIF9tb3ZlVG9vbHRpcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSwgZSwgbiA9IHQubGF0bG5nOwogICAgICAgICAgICB0aGlzLl90b29sdGlwLm9wdGlvbnMuc3RpY2t5ICYmIHQub3JpZ2luYWxFdmVudCAmJiAoaSA9IHRoaXMuX21hcC5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0Lm9yaWdpbmFsRXZlbnQpLCBlID0gdGhpcy5fbWFwLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KGkpLCBuID0gdGhpcy5fbWFwLmxheWVyUG9pbnRUb0xhdExuZyhlKSksIHRoaXMuX3Rvb2x0aXAuc2V0TGF0TG5nKG4pCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgc24gPSBrZS5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgaWNvblNpemU6IFsxMiwgMTJdLAogICAgICAgICAgICBodG1sOiAhMSwKICAgICAgICAgICAgYmdQb3M6IG51bGwsCiAgICAgICAgICAgIGNsYXNzTmFtZTogImxlYWZsZXQtZGl2LWljb24iCiAgICAgICAgfSwKICAgICAgICBjcmVhdGVJY29uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdCAmJiAiRElWIiA9PT0gdC50YWdOYW1lID8gdCA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLAogICAgICAgICAgICAgICAgZSA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgaWYgKGUuaHRtbCBpbnN0YW5jZW9mIEVsZW1lbnQgPyAobGkoaSksIGkuYXBwZW5kQ2hpbGQoZS5odG1sKSkgOiBpLmlubmVySFRNTCA9ICExICE9PSBlLmh0bWwgPyBlLmh0bWwgOiAiIiwgZS5iZ1BvcykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBJKGUuYmdQb3MpOwogICAgICAgICAgICAgICAgaS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSAtbi54ICsgInB4ICIgKyAtbi55ICsgInB4IgogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZXRJY29uU3R5bGVzKGksICJpY29uIiksIGkKICAgICAgICB9LAogICAgICAgIGNyZWF0ZVNoYWRvdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQogICAgfSk7CiAgICBrZS5EZWZhdWx0ID0gQmU7CiAgICB2YXIgcm4gPSBTZS5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgdGlsZVNpemU6IDI1NiwKICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgdXBkYXRlV2hlbklkbGU6IHh0LAogICAgICAgICAgICB1cGRhdGVXaGVuWm9vbWluZzogITAsCiAgICAgICAgICAgIHVwZGF0ZUludGVydmFsOiAyMDAsCiAgICAgICAgICAgIHpJbmRleDogMSwKICAgICAgICAgICAgYm91bmRzOiBudWxsLAogICAgICAgICAgICBtaW5ab29tOiAwLAogICAgICAgICAgICBtYXhab29tOiB2b2lkIDAsCiAgICAgICAgICAgIG1heE5hdGl2ZVpvb206IHZvaWQgMCwKICAgICAgICAgICAgbWluTmF0aXZlWm9vbTogdm9pZCAwLAogICAgICAgICAgICBub1dyYXA6ICExLAogICAgICAgICAgICBwYW5lOiAidGlsZVBhbmUiLAogICAgICAgICAgICBjbGFzc05hbWU6ICIiLAogICAgICAgICAgICBrZWVwQnVmZmVyOiAyCiAgICAgICAgfSwKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHAodGhpcywgdCkKICAgICAgICB9LAogICAgICAgIG9uQWRkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5faW5pdENvbnRhaW5lcigpLCB0aGlzLl9sZXZlbHMgPSB7fSwgdGhpcy5fdGlsZXMgPSB7fSwgdGhpcy5fcmVzZXRWaWV3KCksIHRoaXMuX3VwZGF0ZSgpCiAgICAgICAgfSwKICAgICAgICBiZWZvcmVBZGQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdC5fYWRkWm9vbUxpbWl0KHRoaXMpCiAgICAgICAgfSwKICAgICAgICBvblJlbW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxUaWxlcygpLCB1aSh0aGlzLl9jb250YWluZXIpLCB0Ll9yZW1vdmVab29tTGltaXQodGhpcyksIHRoaXMuX2NvbnRhaW5lciA9IG51bGwsIHRoaXMuX3RpbGVab29tID0gdm9pZCAwCiAgICAgICAgfSwKICAgICAgICBicmluZ1RvRnJvbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFwICYmIChjaSh0aGlzLl9jb250YWluZXIpLCB0aGlzLl9zZXRBdXRvWkluZGV4KE1hdGgubWF4KSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGJyaW5nVG9CYWNrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hcCAmJiAoX2kodGhpcy5fY29udGFpbmVyKSwgdGhpcy5fc2V0QXV0b1pJbmRleChNYXRoLm1pbikpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBnZXRDb250YWluZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyCiAgICAgICAgfSwKICAgICAgICBzZXRPcGFjaXR5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eSA9IHQsIHRoaXMuX3VwZGF0ZU9wYWNpdHkoKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgc2V0WkluZGV4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuekluZGV4ID0gdCwgdGhpcy5fdXBkYXRlWkluZGV4KCksIHRoaXMKICAgICAgICB9LAogICAgICAgIGlzTG9hZGluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nCiAgICAgICAgfSwKICAgICAgICByZWRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFwICYmICh0aGlzLl9yZW1vdmVBbGxUaWxlcygpLCB0aGlzLl91cGRhdGUoKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGdldEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgdmlld3ByZXJlc2V0OiB0aGlzLl9pbnZhbGlkYXRlQWxsLAogICAgICAgICAgICAgICAgdmlld3Jlc2V0OiB0aGlzLl9yZXNldFZpZXcsCiAgICAgICAgICAgICAgICB6b29tOiB0aGlzLl9yZXNldFZpZXcsCiAgICAgICAgICAgICAgICBtb3ZlZW5kOiB0aGlzLl9vbk1vdmVFbmQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy51cGRhdGVXaGVuSWRsZSB8fCAodGhpcy5fb25Nb3ZlIHx8ICh0aGlzLl9vbk1vdmUgPSBvKHRoaXMuX29uTW92ZUVuZCwgdGhpcy5vcHRpb25zLnVwZGF0ZUludGVydmFsLCB0aGlzKSksIHQubW92ZSA9IHRoaXMuX29uTW92ZSksIHRoaXMuX3pvb21BbmltYXRlZCAmJiAodC56b29tYW5pbSA9IHRoaXMuX2FuaW1hdGVab29tKSwgdAogICAgICAgIH0sCiAgICAgICAgY3JlYXRlVGlsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogICAgICAgIH0sCiAgICAgICAgZ2V0VGlsZVNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMub3B0aW9ucy50aWxlU2l6ZTsKICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBCID8gdCA6IG5ldyBCKHQsIHQpCiAgICAgICAgfSwKICAgICAgICBfdXBkYXRlWkluZGV4OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyICYmIHZvaWQgMCAhPT0gdGhpcy5vcHRpb25zLnpJbmRleCAmJiBudWxsICE9PSB0aGlzLm9wdGlvbnMuekluZGV4ICYmICh0aGlzLl9jb250YWluZXIuc3R5bGUuekluZGV4ID0gdGhpcy5vcHRpb25zLnpJbmRleCkKICAgICAgICB9LAogICAgICAgIF9zZXRBdXRvWkluZGV4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGksIGUgPSB0aGlzLmdldFBhbmUoKS5jaGlsZHJlbiwgbiA9IC10KC0xIC8gMCwgMSAvIDApLCBvID0gMCwgcyA9IGUubGVuZ3RoOyBvIDwgczsgbysrKSBpID0gZVtvXS5zdHlsZS56SW5kZXgsIGVbb10gIT09IHRoaXMuX2NvbnRhaW5lciAmJiBpICYmIChuID0gdChuLCAraSkpOwogICAgICAgICAgICBpc0Zpbml0ZShuKSAmJiAodGhpcy5vcHRpb25zLnpJbmRleCA9IG4gKyB0KC0xLCAxKSwgdGhpcy5fdXBkYXRlWkluZGV4KCkpCiAgICAgICAgfSwKICAgICAgICBfdXBkYXRlT3BhY2l0eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzLl9tYXAgJiYgIWV0KSB7CiAgICAgICAgICAgICAgICB2aSh0aGlzLl9jb250YWluZXIsIHRoaXMub3B0aW9ucy5vcGFjaXR5KTsKICAgICAgICAgICAgICAgIHZhciB0ID0gK25ldyBEYXRlLAogICAgICAgICAgICAgICAgICAgIGkgPSAhMSwKICAgICAgICAgICAgICAgICAgICBlID0gITE7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHRoaXMuX3RpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLl90aWxlc1tuXTsKICAgICAgICAgICAgICAgICAgICBpZiAoby5jdXJyZW50ICYmIG8ubG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gTWF0aC5taW4oMSwgKHQgLSBvLmxvYWRlZCkgLyAyMDApOwogICAgICAgICAgICAgICAgICAgICAgICB2aShvLmVsLCBzKSwgcyA8IDEgPyBpID0gITAgOiAoby5hY3RpdmUgPyBlID0gITAgOiB0aGlzLl9vbk9wYXF1ZVRpbGUobyksIG8uYWN0aXZlID0gITApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZSAmJiAhdGhpcy5fbm9QcnVuZSAmJiB0aGlzLl9wcnVuZVRpbGVzKCksIGkgJiYgKEModGhpcy5fZmFkZUZyYW1lKSwgdGhpcy5fZmFkZUZyYW1lID0gTSh0aGlzLl91cGRhdGVPcGFjaXR5LCB0aGlzKSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX29uT3BhcXVlVGlsZTogbCwKICAgICAgICBfaW5pdENvbnRhaW5lcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lciB8fCAodGhpcy5fY29udGFpbmVyID0gaGkoImRpdiIsICJsZWFmbGV0LWxheWVyICIgKyAodGhpcy5vcHRpb25zLmNsYXNzTmFtZSB8fCAiIikpLCB0aGlzLl91cGRhdGVaSW5kZXgoKSwgdGhpcy5vcHRpb25zLm9wYWNpdHkgPCAxICYmIHRoaXMuX3VwZGF0ZU9wYWNpdHkoKSwgdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSkKICAgICAgICB9LAogICAgICAgIF91cGRhdGVMZXZlbHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3RpbGVab29tLAogICAgICAgICAgICAgICAgaSA9IHRoaXMub3B0aW9ucy5tYXhab29tOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIHRoaXMuX2xldmVscykgdGhpcy5fbGV2ZWxzW2VdLmVsLmNoaWxkcmVuLmxlbmd0aCB8fCBlID09PSB0ID8gKHRoaXMuX2xldmVsc1tlXS5lbC5zdHlsZS56SW5kZXggPSBpIC0gTWF0aC5hYnModCAtIGUpLCB0aGlzLl9vblVwZGF0ZUxldmVsKGUpKSA6ICh1aSh0aGlzLl9sZXZlbHNbZV0uZWwpLCB0aGlzLl9yZW1vdmVUaWxlc0F0Wm9vbShlKSwgdGhpcy5fb25SZW1vdmVMZXZlbChlKSwgZGVsZXRlIHRoaXMuX2xldmVsc1tlXSk7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX2xldmVsc1t0XSwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5fbWFwOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gfHwgKChuID0gdGhpcy5fbGV2ZWxzW3RdID0ge30pLmVsID0gaGkoImRpdiIsICJsZWFmbGV0LXRpbGUtY29udGFpbmVyIGxlYWZsZXQtem9vbS1hbmltYXRlZCIsIHRoaXMuX2NvbnRhaW5lciksIG4uZWwuc3R5bGUuekluZGV4ID0gaSwgbi5vcmlnaW4gPSBvLnByb2plY3Qoby51bnByb2plY3Qoby5nZXRQaXhlbE9yaWdpbigpKSwgdCkucm91bmQoKSwgbi56b29tID0gdCwgdGhpcy5fc2V0Wm9vbVRyYW5zZm9ybShuLCBvLmdldENlbnRlcigpLCBvLmdldFpvb20oKSksIG4uZWwub2Zmc2V0V2lkdGgsIHRoaXMuX29uQ3JlYXRlTGV2ZWwobikpLCB0aGlzLl9sZXZlbCA9IG4KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX29uVXBkYXRlTGV2ZWw6IGwsCiAgICAgICAgX29uUmVtb3ZlTGV2ZWw6IGwsCiAgICAgICAgX29uQ3JlYXRlTGV2ZWw6IGwsCiAgICAgICAgX3BydW5lVGlsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodGhpcy5fbWFwKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgaSwgZSA9IHRoaXMuX21hcC5nZXRab29tKCk7CiAgICAgICAgICAgICAgICBpZiAoZSA+IHRoaXMub3B0aW9ucy5tYXhab29tIHx8IGUgPCB0aGlzLm9wdGlvbnMubWluWm9vbSkgdGhpcy5fcmVtb3ZlQWxsVGlsZXMoKTsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiB0aGlzLl90aWxlcykoaSA9IHRoaXMuX3RpbGVzW3RdKS5yZXRhaW4gPSBpLmN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIHRoaXMuX3RpbGVzKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgPSB0aGlzLl90aWxlc1t0XSkuY3VycmVudCAmJiAhaS5hY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gaS5jb29yZHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXRhaW5QYXJlbnQobi54LCBuLnksIG4ueiwgbi56IC0gNSkgfHwgdGhpcy5fcmV0YWluQ2hpbGRyZW4obi54LCBuLnksIG4ueiwgbi56ICsgMikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiB0aGlzLl90aWxlcykgdGhpcy5fdGlsZXNbdF0ucmV0YWluIHx8IHRoaXMuX3JlbW92ZVRpbGUodCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX3JlbW92ZVRpbGVzQXRab29tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5fdGlsZXMpIHRoaXMuX3RpbGVzW2ldLmNvb3Jkcy56ID09PSB0ICYmIHRoaXMuX3JlbW92ZVRpbGUoaSkKICAgICAgICB9LAogICAgICAgIF9yZW1vdmVBbGxUaWxlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgaW4gdGhpcy5fdGlsZXMpIHRoaXMuX3JlbW92ZVRpbGUodCkKICAgICAgICB9LAogICAgICAgIF9pbnZhbGlkYXRlQWxsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCBpbiB0aGlzLl9sZXZlbHMpIHVpKHRoaXMuX2xldmVsc1t0XS5lbCksIHRoaXMuX29uUmVtb3ZlTGV2ZWwodCksIGRlbGV0ZSB0aGlzLl9sZXZlbHNbdF07CiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbFRpbGVzKCksIHRoaXMuX3RpbGVab29tID0gdm9pZCAwCiAgICAgICAgfSwKICAgICAgICBfcmV0YWluUGFyZW50OiBmdW5jdGlvbih0LCBpLCBlLCBuKSB7CiAgICAgICAgICAgIHZhciBvID0gTWF0aC5mbG9vcih0IC8gMiksCiAgICAgICAgICAgICAgICBzID0gTWF0aC5mbG9vcihpIC8gMiksCiAgICAgICAgICAgICAgICByID0gZSAtIDEsCiAgICAgICAgICAgICAgICBhID0gbmV3IEIoK28sICtzKTsKICAgICAgICAgICAgYS56ID0gK3I7CiAgICAgICAgICAgIHZhciBoID0gdGhpcy5fdGlsZUNvb3Jkc1RvS2V5KGEpLAogICAgICAgICAgICAgICAgdSA9IHRoaXMuX3RpbGVzW2hdOwogICAgICAgICAgICByZXR1cm4gdSAmJiB1LmFjdGl2ZSA/IHUucmV0YWluID0gITAgOiAodSAmJiB1LmxvYWRlZCAmJiAodS5yZXRhaW4gPSAhMCksIG4gPCByICYmIHRoaXMuX3JldGFpblBhcmVudChvLCBzLCByLCBuKSkKICAgICAgICB9LAogICAgICAgIF9yZXRhaW5DaGlsZHJlbjogZnVuY3Rpb24odCwgaSwgZSwgbikgewogICAgICAgICAgICBmb3IgKHZhciBvID0gMiAqIHQ7IG8gPCAyICogdCArIDI7IG8rKykKICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAyICogaTsgcyA8IDIgKiBpICsgMjsgcysrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuZXcgQihvLCBzKTsKICAgICAgICAgICAgICAgICAgICByLnogPSBlICsgMTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX3RpbGVDb29yZHNUb0tleShyKSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMuX3RpbGVzW2FdOwogICAgICAgICAgICAgICAgICAgIGggJiYgaC5hY3RpdmUgPyBoLnJldGFpbiA9ICEwIDogKGggJiYgaC5sb2FkZWQgJiYgKGgucmV0YWluID0gITApLCBlICsgMSA8IG4gJiYgdGhpcy5fcmV0YWluQ2hpbGRyZW4obywgcywgZSArIDEsIG4pKQogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX3Jlc2V0VmlldzogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSA9IHQgJiYgKHQucGluY2ggfHwgdC5mbHlUbyk7CiAgICAgICAgICAgIHRoaXMuX3NldFZpZXcodGhpcy5fbWFwLmdldENlbnRlcigpLCB0aGlzLl9tYXAuZ2V0Wm9vbSgpLCBpLCBpKQogICAgICAgIH0sCiAgICAgICAgX2FuaW1hdGVab29tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRoaXMuX3NldFZpZXcodC5jZW50ZXIsIHQuem9vbSwgITAsIHQubm9VcGRhdGUpCiAgICAgICAgfSwKICAgICAgICBfY2xhbXBab29tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5vcHRpb25zOwogICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBpLm1pbk5hdGl2ZVpvb20gJiYgdCA8IGkubWluTmF0aXZlWm9vbSA/IGkubWluTmF0aXZlWm9vbSA6IHZvaWQgMCAhPT0gaS5tYXhOYXRpdmVab29tICYmIGkubWF4TmF0aXZlWm9vbSA8IHQgPyBpLm1heE5hdGl2ZVpvb20gOiB0CiAgICAgICAgfSwKICAgICAgICBfc2V0VmlldzogZnVuY3Rpb24odCwgaSwgZSwgbikgewogICAgICAgICAgICB2YXIgbyA9IHRoaXMuX2NsYW1wWm9vbShNYXRoLnJvdW5kKGkpKTsKICAgICAgICAgICAgKHZvaWQgMCAhPT0gdGhpcy5vcHRpb25zLm1heFpvb20gJiYgbyA+IHRoaXMub3B0aW9ucy5tYXhab29tIHx8IHZvaWQgMCAhPT0gdGhpcy5vcHRpb25zLm1pblpvb20gJiYgbyA8IHRoaXMub3B0aW9ucy5taW5ab29tKSAmJiAobyA9IHZvaWQgMCk7CiAgICAgICAgICAgIHZhciBzID0gdGhpcy5vcHRpb25zLnVwZGF0ZVdoZW5ab29taW5nICYmIG8gIT09IHRoaXMuX3RpbGVab29tOwogICAgICAgICAgICBuICYmICFzIHx8ICh0aGlzLl90aWxlWm9vbSA9IG8sIHRoaXMuX2Fib3J0TG9hZGluZyAmJiB0aGlzLl9hYm9ydExvYWRpbmcoKSwgdGhpcy5fdXBkYXRlTGV2ZWxzKCksIHRoaXMuX3Jlc2V0R3JpZCgpLCB2b2lkIDAgIT09IG8gJiYgdGhpcy5fdXBkYXRlKHQpLCBlIHx8IHRoaXMuX3BydW5lVGlsZXMoKSwgdGhpcy5fbm9QcnVuZSA9ICEhZSksIHRoaXMuX3NldFpvb21UcmFuc2Zvcm1zKHQsIGkpCiAgICAgICAgfSwKICAgICAgICBfc2V0Wm9vbVRyYW5zZm9ybXM6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSBpbiB0aGlzLl9sZXZlbHMpIHRoaXMuX3NldFpvb21UcmFuc2Zvcm0odGhpcy5fbGV2ZWxzW2VdLCB0LCBpKQogICAgICAgIH0sCiAgICAgICAgX3NldFpvb21UcmFuc2Zvcm06IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKGUsIHQuem9vbSksCiAgICAgICAgICAgICAgICBvID0gdC5vcmlnaW4ubXVsdGlwbHlCeShuKS5zdWJ0cmFjdCh0aGlzLl9tYXAuX2dldE5ld1BpeGVsT3JpZ2luKGksIGUpKS5yb3VuZCgpOwogICAgICAgICAgICB5dCA/IHhpKHQuZWwsIG8sIG4pIDogd2kodC5lbCwgbykKICAgICAgICB9LAogICAgICAgIF9yZXNldEdyaWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX21hcCwKICAgICAgICAgICAgICAgIGkgPSB0Lm9wdGlvbnMuY3JzLAogICAgICAgICAgICAgICAgZSA9IHRoaXMuX3RpbGVTaXplID0gdGhpcy5nZXRUaWxlU2l6ZSgpLAogICAgICAgICAgICAgICAgbiA9IHRoaXMuX3RpbGVab29tLAogICAgICAgICAgICAgICAgbyA9IHRoaXMuX21hcC5nZXRQaXhlbFdvcmxkQm91bmRzKHRoaXMuX3RpbGVab29tKTsKICAgICAgICAgICAgbyAmJiAodGhpcy5fZ2xvYmFsVGlsZVJhbmdlID0gdGhpcy5fcHhCb3VuZHNUb1RpbGVSYW5nZShvKSksIHRoaXMuX3dyYXBYID0gaS53cmFwTG5nICYmICF0aGlzLm9wdGlvbnMubm9XcmFwICYmIFtNYXRoLmZsb29yKHQucHJvamVjdChbMCwgaS53cmFwTG5nWzBdXSwgbikueCAvIGUueCksIE1hdGguY2VpbCh0LnByb2plY3QoWzAsIGkud3JhcExuZ1sxXV0sIG4pLnggLyBlLnkpXSwgdGhpcy5fd3JhcFkgPSBpLndyYXBMYXQgJiYgIXRoaXMub3B0aW9ucy5ub1dyYXAgJiYgW01hdGguZmxvb3IodC5wcm9qZWN0KFtpLndyYXBMYXRbMF0sIDBdLCBuKS55IC8gZS54KSwgTWF0aC5jZWlsKHQucHJvamVjdChbaS53cmFwTGF0WzFdLCAwXSwgbikueSAvIGUueSldCiAgICAgICAgfSwKICAgICAgICBfb25Nb3ZlRW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fbWFwICYmICF0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20gJiYgdGhpcy5fdXBkYXRlKCkKICAgICAgICB9LAogICAgICAgIF9nZXRUaWxlZFBpeGVsQm91bmRzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5fbWFwLAogICAgICAgICAgICAgICAgZSA9IGkuX2FuaW1hdGluZ1pvb20gPyBNYXRoLm1heChpLl9hbmltYXRlVG9ab29tLCBpLmdldFpvb20oKSkgOiBpLmdldFpvb20oKSwKICAgICAgICAgICAgICAgIG4gPSBpLmdldFpvb21TY2FsZShlLCB0aGlzLl90aWxlWm9vbSksCiAgICAgICAgICAgICAgICBvID0gaS5wcm9qZWN0KHQsIHRoaXMuX3RpbGVab29tKS5mbG9vcigpLAogICAgICAgICAgICAgICAgcyA9IGkuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIgKiBuKTsKICAgICAgICAgICAgcmV0dXJuIG5ldyBPKG8uc3VidHJhY3QocyksIG8uYWRkKHMpKQogICAgICAgIH0sCiAgICAgICAgX3VwZGF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSA9IHRoaXMuX21hcDsKICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fY2xhbXBab29tKGkuZ2V0Wm9vbSgpKTsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQgJiYgKHQgPSBpLmdldENlbnRlcigpKSwgdm9pZCAwICE9PSB0aGlzLl90aWxlWm9vbSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fZ2V0VGlsZWRQaXhlbEJvdW5kcyh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuX3B4Qm91bmRzVG9UaWxlUmFuZ2UobiksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvLmdldENlbnRlcigpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLm9wdGlvbnMua2VlcEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG5ldyBPKG8uZ2V0Qm90dG9tTGVmdCgpLnN1YnRyYWN0KFthLCAtYV0pLCBvLmdldFRvcFJpZ2h0KCkuYWRkKFthLCAtYV0pKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIShpc0Zpbml0ZShvLm1pbi54KSAmJiBpc0Zpbml0ZShvLm1pbi55KSAmJiBpc0Zpbml0ZShvLm1heC54KSAmJiBpc0Zpbml0ZShvLm1heC55KSkpIHRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGVkIHRvIGxvYWQgYW4gaW5maW5pdGUgbnVtYmVyIG9mIHRpbGVzIik7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdSBpbiB0aGlzLl90aWxlcykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHRoaXMuX3RpbGVzW3VdLmNvb3JkczsKICAgICAgICAgICAgICAgICAgICAgICAgbC56ID09PSB0aGlzLl90aWxlWm9vbSAmJiBoLmNvbnRhaW5zKG5ldyBCKGwueCwgbC55KSkgfHwgKHRoaXMuX3RpbGVzW3VdLmN1cnJlbnQgPSAhMSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPCBNYXRoLmFicyhlIC0gdGhpcy5fdGlsZVpvb20pKSB0aGlzLl9zZXRWaWV3KHQsIGUpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gby5taW4ueTsgYyA8PSBvLm1heC55OyBjKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfID0gby5taW4ueDsgXyA8PSBvLm1heC54OyBfKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IG5ldyBCKF8sIGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLnogPSB0aGlzLl90aWxlWm9vbSwgdGhpcy5faXNWYWxpZFRpbGUoZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLl90aWxlc1t0aGlzLl90aWxlQ29vcmRzVG9LZXkoZCldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID8gcC5jdXJyZW50ID0gITAgOiByLnB1c2goZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLnNvcnQoZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmRpc3RhbmNlVG8ocykgLSBpLmRpc3RhbmNlVG8ocykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwICE9PSByLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZyB8fCAodGhpcy5fbG9hZGluZyA9ICEwLCB0aGlzLmZpcmUoImxvYWRpbmciKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoXyA9IDA7IF8gPCByLmxlbmd0aDsgXysrKSB0aGlzLl9hZGRUaWxlKHJbX10sIG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGV2ZWwuZWwuYXBwZW5kQ2hpbGQobSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX2lzVmFsaWRUaWxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5fbWFwLm9wdGlvbnMuY3JzOwogICAgICAgICAgICBpZiAoIWkuaW5maW5pdGUpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZ2xvYmFsVGlsZVJhbmdlOwogICAgICAgICAgICAgICAgaWYgKCFpLndyYXBMbmcgJiYgKHQueCA8IGUubWluLnggfHwgdC54ID4gZS5tYXgueCkgfHwgIWkud3JhcExhdCAmJiAodC55IDwgZS5taW4ueSB8fCB0LnkgPiBlLm1heC55KSkgcmV0dXJuICExCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYm91bmRzKSByZXR1cm4gITA7CiAgICAgICAgICAgIHZhciBuID0gdGhpcy5fdGlsZUNvb3Jkc1RvQm91bmRzKHQpOwogICAgICAgICAgICByZXR1cm4gRCh0aGlzLm9wdGlvbnMuYm91bmRzKS5vdmVybGFwcyhuKQogICAgICAgIH0sCiAgICAgICAgX2tleVRvQm91bmRzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aWxlQ29vcmRzVG9Cb3VuZHModGhpcy5fa2V5VG9UaWxlQ29vcmRzKHQpKQogICAgICAgIH0sCiAgICAgICAgX3RpbGVDb29yZHNUb053U2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9tYXAsCiAgICAgICAgICAgICAgICBlID0gdGhpcy5nZXRUaWxlU2l6ZSgpLAogICAgICAgICAgICAgICAgbiA9IHQuc2NhbGVCeShlKSwKICAgICAgICAgICAgICAgIG8gPSBuLmFkZChlKTsKICAgICAgICAgICAgcmV0dXJuIFtpLnVucHJvamVjdChuLCB0LnopLCBpLnVucHJvamVjdChvLCB0LnopXQogICAgICAgIH0sCiAgICAgICAgX3RpbGVDb29yZHNUb0JvdW5kczogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSA9IHRoaXMuX3RpbGVDb29yZHNUb053U2UodCksCiAgICAgICAgICAgICAgICBlID0gbmV3IE4oaVswXSwgaVsxXSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMubm9XcmFwIHx8IChlID0gdGhpcy5fbWFwLndyYXBMYXRMbmdCb3VuZHMoZSkpLCBlCiAgICAgICAgfSwKICAgICAgICBfdGlsZUNvb3Jkc1RvS2V5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0LnggKyAiOiIgKyB0LnkgKyAiOiIgKyB0LnoKICAgICAgICB9LAogICAgICAgIF9rZXlUb1RpbGVDb29yZHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0LnNwbGl0KCI6IiksCiAgICAgICAgICAgICAgICBlID0gbmV3IEIoK2lbMF0sICtpWzFdKTsKICAgICAgICAgICAgcmV0dXJuIGUueiA9ICtpWzJdLCBlCiAgICAgICAgfSwKICAgICAgICBfcmVtb3ZlVGlsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSA9IHRoaXMuX3RpbGVzW3RdOwogICAgICAgICAgICBpICYmICh1aShpLmVsKSwgZGVsZXRlIHRoaXMuX3RpbGVzW3RdLCB0aGlzLmZpcmUoInRpbGV1bmxvYWQiLCB7CiAgICAgICAgICAgICAgICB0aWxlOiBpLmVsLAogICAgICAgICAgICAgICAgY29vcmRzOiB0aGlzLl9rZXlUb1RpbGVDb29yZHModCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBfaW5pdFRpbGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcGkodCwgImxlYWZsZXQtdGlsZSIpOwogICAgICAgICAgICB2YXIgaSA9IHRoaXMuZ2V0VGlsZVNpemUoKTsKICAgICAgICAgICAgdC5zdHlsZS53aWR0aCA9IGkueCArICJweCIsIHQuc3R5bGUuaGVpZ2h0ID0gaS55ICsgInB4IiwgdC5vbnNlbGVjdHN0YXJ0ID0gbCwgdC5vbm1vdXNlbW92ZSA9IGwsIGV0ICYmIHRoaXMub3B0aW9ucy5vcGFjaXR5IDwgMSAmJiB2aSh0LCB0aGlzLm9wdGlvbnMub3BhY2l0eSksIHN0ICYmICFydCAmJiAodC5zdHlsZS5XZWJraXRCYWNrZmFjZVZpc2liaWxpdHkgPSAiaGlkZGVuIikKICAgICAgICB9LAogICAgICAgIF9hZGRUaWxlOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZ2V0VGlsZVBvcyh0KSwKICAgICAgICAgICAgICAgIG4gPSB0aGlzLl90aWxlQ29vcmRzVG9LZXkodCksCiAgICAgICAgICAgICAgICBvID0gdGhpcy5jcmVhdGVUaWxlKHRoaXMuX3dyYXBDb29yZHModCksIGEodGhpcy5fdGlsZVJlYWR5LCB0aGlzLCB0KSk7CiAgICAgICAgICAgIHRoaXMuX2luaXRUaWxlKG8pLCB0aGlzLmNyZWF0ZVRpbGUubGVuZ3RoIDwgMiAmJiBNKGEodGhpcy5fdGlsZVJlYWR5LCB0aGlzLCB0LCBudWxsLCBvKSksIHdpKG8sIGUpLCB0aGlzLl90aWxlc1tuXSA9IHsKICAgICAgICAgICAgICAgIGVsOiBvLAogICAgICAgICAgICAgICAgY29vcmRzOiB0LAogICAgICAgICAgICAgICAgY3VycmVudDogITAKICAgICAgICAgICAgfSwgaS5hcHBlbmRDaGlsZChvKSwgdGhpcy5maXJlKCJ0aWxlbG9hZHN0YXJ0IiwgewogICAgICAgICAgICAgICAgdGlsZTogbywKICAgICAgICAgICAgICAgIGNvb3JkczogdAogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgX3RpbGVSZWFkeTogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICBpICYmIHRoaXMuZmlyZSgidGlsZWVycm9yIiwgewogICAgICAgICAgICAgICAgZXJyb3I6IGksCiAgICAgICAgICAgICAgICB0aWxlOiBlLAogICAgICAgICAgICAgICAgY29vcmRzOiB0CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgbiA9IHRoaXMuX3RpbGVDb29yZHNUb0tleSh0KTsKICAgICAgICAgICAgKGUgPSB0aGlzLl90aWxlc1tuXSkgJiYgKGUubG9hZGVkID0gK25ldyBEYXRlLCB0aGlzLl9tYXAuX2ZhZGVBbmltYXRlZCA/ICh2aShlLmVsLCAwKSwgQyh0aGlzLl9mYWRlRnJhbWUpLCB0aGlzLl9mYWRlRnJhbWUgPSBNKHRoaXMuX3VwZGF0ZU9wYWNpdHksIHRoaXMpKSA6IChlLmFjdGl2ZSA9ICEwLCB0aGlzLl9wcnVuZVRpbGVzKCkpLCBpIHx8IChwaShlLmVsLCAibGVhZmxldC10aWxlLWxvYWRlZCIpLCB0aGlzLmZpcmUoInRpbGVsb2FkIiwgewogICAgICAgICAgICAgICAgdGlsZTogZS5lbCwKICAgICAgICAgICAgICAgIGNvb3JkczogdAogICAgICAgICAgICB9KSksIHRoaXMuX25vVGlsZXNUb0xvYWQoKSAmJiAodGhpcy5fbG9hZGluZyA9ICExLCB0aGlzLmZpcmUoImxvYWQiKSwgZXQgfHwgIXRoaXMuX21hcC5fZmFkZUFuaW1hdGVkID8gTSh0aGlzLl9wcnVuZVRpbGVzLCB0aGlzKSA6IHNldFRpbWVvdXQoYSh0aGlzLl9wcnVuZVRpbGVzLCB0aGlzKSwgMjUwKSkpCiAgICAgICAgfSwKICAgICAgICBfZ2V0VGlsZVBvczogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5zY2FsZUJ5KHRoaXMuZ2V0VGlsZVNpemUoKSkuc3VidHJhY3QodGhpcy5fbGV2ZWwub3JpZ2luKQogICAgICAgIH0sCiAgICAgICAgX3dyYXBDb29yZHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSBuZXcgQih0aGlzLl93cmFwWCA/IHIodC54LCB0aGlzLl93cmFwWCkgOiB0LngsIHRoaXMuX3dyYXBZID8gcih0LnksIHRoaXMuX3dyYXBZKSA6IHQueSk7CiAgICAgICAgICAgIHJldHVybiBpLnogPSB0LnosIGkKICAgICAgICB9LAogICAgICAgIF9weEJvdW5kc1RvVGlsZVJhbmdlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5nZXRUaWxlU2l6ZSgpOwogICAgICAgICAgICByZXR1cm4gbmV3IE8odC5taW4udW5zY2FsZUJ5KGkpLmZsb29yKCksIHQubWF4LnVuc2NhbGVCeShpKS5jZWlsKCkuc3VidHJhY3QoWzEsIDFdKSkKICAgICAgICB9LAogICAgICAgIF9ub1RpbGVzVG9Mb2FkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCBpbiB0aGlzLl90aWxlcykKICAgICAgICAgICAgICAgIGlmICghdGhpcy5fdGlsZXNbdF0ubG9hZGVkKSByZXR1cm4gITE7CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0KICAgIH0pOwogICAgdmFyIGFuID0gcm4uZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIG1pblpvb206IDAsCiAgICAgICAgICAgIG1heFpvb206IDE4LAogICAgICAgICAgICBzdWJkb21haW5zOiAiYWJjIiwKICAgICAgICAgICAgZXJyb3JUaWxlVXJsOiAiIiwKICAgICAgICAgICAgem9vbU9mZnNldDogMCwKICAgICAgICAgICAgdG1zOiAhMSwKICAgICAgICAgICAgem9vbVJldmVyc2U6ICExLAogICAgICAgICAgICBkZXRlY3RSZXRpbmE6ICExLAogICAgICAgICAgICBjcm9zc09yaWdpbjogITEKICAgICAgICB9LAogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgdGhpcy5fdXJsID0gdCwgKGkgPSBwKHRoaXMsIGkpKS5kZXRlY3RSZXRpbmEgJiYgQ3QgJiYgMCA8IGkubWF4Wm9vbSAmJiAoaS50aWxlU2l6ZSA9IE1hdGguZmxvb3IoaS50aWxlU2l6ZSAvIDIpLCBpLnpvb21SZXZlcnNlID8gKGkuem9vbU9mZnNldC0tLCBpLm1pblpvb20rKykgOiAoaS56b29tT2Zmc2V0KyssIGkubWF4Wm9vbS0tKSwgaS5taW5ab29tID0gTWF0aC5tYXgoMCwgaS5taW5ab29tKSksICJzdHJpbmciID09IHR5cGVvZiBpLnN1YmRvbWFpbnMgJiYgKGkuc3ViZG9tYWlucyA9IGkuc3ViZG9tYWlucy5zcGxpdCgiIikpLCBzdCB8fCB0aGlzLm9uKCJ0aWxldW5sb2FkIiwgdGhpcy5fb25UaWxlUmVtb3ZlKQogICAgICAgIH0sCiAgICAgICAgc2V0VXJsOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl91cmwgPT09IHQgJiYgdm9pZCAwID09PSBpICYmIChpID0gITApLCB0aGlzLl91cmwgPSB0LCBpIHx8IHRoaXMucmVkcmF3KCksIHRoaXMKICAgICAgICB9LAogICAgICAgIGNyZWF0ZVRpbGU6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgICAgICAgICAgcmV0dXJuIEVpKGUsICJsb2FkIiwgYSh0aGlzLl90aWxlT25Mb2FkLCB0aGlzLCBpLCBlKSksIEVpKGUsICJlcnJvciIsIGEodGhpcy5fdGlsZU9uRXJyb3IsIHRoaXMsIGksIGUpKSwgIXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbiAmJiAiIiAhPT0gdGhpcy5vcHRpb25zLmNyb3NzT3JpZ2luIHx8IChlLmNyb3NzT3JpZ2luID0gITAgPT09IHRoaXMub3B0aW9ucy5jcm9zc09yaWdpbiA/ICIiIDogdGhpcy5vcHRpb25zLmNyb3NzT3JpZ2luKSwgZS5hbHQgPSAiIiwgZS5zZXRBdHRyaWJ1dGUoInJvbGUiLCAicHJlc2VudGF0aW9uIiksIGUuc3JjID0gdGhpcy5nZXRUaWxlVXJsKHQpLCBlCiAgICAgICAgfSwKICAgICAgICBnZXRUaWxlVXJsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gewogICAgICAgICAgICAgICAgcjogQ3QgPyAiQDJ4IiA6ICIiLAogICAgICAgICAgICAgICAgczogdGhpcy5fZ2V0U3ViZG9tYWluKHQpLAogICAgICAgICAgICAgICAgeDogdC54LAogICAgICAgICAgICAgICAgeTogdC55LAogICAgICAgICAgICAgICAgejogdGhpcy5fZ2V0Wm9vbUZvclVybCgpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICh0aGlzLl9tYXAgJiYgIXRoaXMuX21hcC5vcHRpb25zLmNycy5pbmZpbml0ZSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nbG9iYWxUaWxlUmFuZ2UubWF4LnkgLSB0Lnk7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudG1zICYmIChpLnkgPSBlKSwgaVsiLXkiXSA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZyh0aGlzLl91cmwsIGgoaSwgdGhpcy5vcHRpb25zKSkKICAgICAgICB9LAogICAgICAgIF90aWxlT25Mb2FkOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIGV0ID8gc2V0VGltZW91dChhKHQsIHRoaXMsIG51bGwsIGkpLCAwKSA6IHQobnVsbCwgaSkKICAgICAgICB9LAogICAgICAgIF90aWxlT25FcnJvcjogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICB2YXIgbiA9IHRoaXMub3B0aW9ucy5lcnJvclRpbGVVcmw7CiAgICAgICAgICAgIG4gJiYgaS5nZXRBdHRyaWJ1dGUoInNyYyIpICE9PSBuICYmIChpLnNyYyA9IG4pLCB0KGUsIGkpCiAgICAgICAgfSwKICAgICAgICBfb25UaWxlUmVtb3ZlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHQudGlsZS5vbmxvYWQgPSBudWxsCiAgICAgICAgfSwKICAgICAgICBfZ2V0Wm9vbUZvclVybDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdGlsZVpvb20sCiAgICAgICAgICAgICAgICBpID0gdGhpcy5vcHRpb25zLm1heFpvb207CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuem9vbVJldmVyc2UgJiYgKHQgPSBpIC0gdCksIHQgKyB0aGlzLm9wdGlvbnMuem9vbU9mZnNldAogICAgICAgIH0sCiAgICAgICAgX2dldFN1YmRvbWFpbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSA9IE1hdGguYWJzKHQueCArIHQueSkgJSB0aGlzLm9wdGlvbnMuc3ViZG9tYWlucy5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3ViZG9tYWluc1tpXQogICAgICAgIH0sCiAgICAgICAgX2Fib3J0TG9hZGluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0LCBpOwogICAgICAgICAgICBmb3IgKHQgaW4gdGhpcy5fdGlsZXMpIHRoaXMuX3RpbGVzW3RdLmNvb3Jkcy56ICE9PSB0aGlzLl90aWxlWm9vbSAmJiAoKGkgPSB0aGlzLl90aWxlc1t0XS5lbCkub25sb2FkID0gbCwgaS5vbmVycm9yID0gbCwgaS5jb21wbGV0ZSB8fCAoaS5zcmMgPSB4LCB1aShpKSwgZGVsZXRlIHRoaXMuX3RpbGVzW3RdKSkKICAgICAgICB9LAogICAgICAgIF9yZW1vdmVUaWxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5fdGlsZXNbdF07CiAgICAgICAgICAgIGlmIChpKSByZXR1cm4gaHQgfHwgaS5lbC5zZXRBdHRyaWJ1dGUoInNyYyIsIHgpLCBybi5wcm90b3R5cGUuX3JlbW92ZVRpbGUuY2FsbCh0aGlzLCB0KQogICAgICAgIH0sCiAgICAgICAgX3RpbGVSZWFkeTogZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgICAgICBpZiAodGhpcy5fbWFwICYmICghZSB8fCBlLmdldEF0dHJpYnV0ZSgic3JjIikgIT09IHgpKSByZXR1cm4gcm4ucHJvdG90eXBlLl90aWxlUmVhZHkuY2FsbCh0aGlzLCB0LCBpLCBlKQogICAgICAgIH0KICAgIH0pOwoKICAgIGZ1bmN0aW9uIGhuKHQsIGkpIHsKICAgICAgICByZXR1cm4gbmV3IGFuKHQsIGkpCiAgICB9CiAgICB2YXIgdW4gPSBhbi5leHRlbmQoewogICAgICAgIGRlZmF1bHRXbXNQYXJhbXM6IHsKICAgICAgICAgICAgc2VydmljZTogIldNUyIsCiAgICAgICAgICAgIHJlcXVlc3Q6ICJHZXRNYXAiLAogICAgICAgICAgICBsYXllcnM6ICIiLAogICAgICAgICAgICBzdHlsZXM6ICIiLAogICAgICAgICAgICBmb3JtYXQ6ICJpbWFnZS9qcGVnIiwKICAgICAgICAgICAgdHJhbnNwYXJlbnQ6ICExLAogICAgICAgICAgICB2ZXJzaW9uOiAiMS4xLjEiCiAgICAgICAgfSwKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIGNyczogbnVsbCwKICAgICAgICAgICAgdXBwZXJjYXNlOiAhMQogICAgICAgIH0sCiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICB0aGlzLl91cmwgPSB0OwogICAgICAgICAgICB2YXIgZSA9IGgoe30sIHRoaXMuZGVmYXVsdFdtc1BhcmFtcyk7CiAgICAgICAgICAgIGZvciAodmFyIG4gaW4gaSkgbiBpbiB0aGlzLm9wdGlvbnMgfHwgKGVbbl0gPSBpW25dKTsKICAgICAgICAgICAgdmFyIG8gPSAoaSA9IHAodGhpcywgaSkpLmRldGVjdFJldGluYSAmJiBDdCA/IDIgOiAxLAogICAgICAgICAgICAgICAgcyA9IHRoaXMuZ2V0VGlsZVNpemUoKTsKICAgICAgICAgICAgZS53aWR0aCA9IHMueCAqIG8sIGUuaGVpZ2h0ID0gcy55ICogbywgdGhpcy53bXNQYXJhbXMgPSBlCiAgICAgICAgfSwKICAgICAgICBvbkFkZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICB0aGlzLl9jcnMgPSB0aGlzLm9wdGlvbnMuY3JzIHx8IHQub3B0aW9ucy5jcnMsIHRoaXMuX3dtc1ZlcnNpb24gPSBwYXJzZUZsb2F0KHRoaXMud21zUGFyYW1zLnZlcnNpb24pOwogICAgICAgICAgICB2YXIgaSA9IDEuMyA8PSB0aGlzLl93bXNWZXJzaW9uID8gImNycyIgOiAic3JzIjsKICAgICAgICAgICAgdGhpcy53bXNQYXJhbXNbaV0gPSB0aGlzLl9jcnMuY29kZSwgYW4ucHJvdG90eXBlLm9uQWRkLmNhbGwodGhpcywgdCkKICAgICAgICB9LAogICAgICAgIGdldFRpbGVVcmw6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl90aWxlQ29vcmRzVG9Od1NlKHQpLAogICAgICAgICAgICAgICAgZSA9IHRoaXMuX2NycywKICAgICAgICAgICAgICAgIG4gPSBSKGUucHJvamVjdChpWzBdKSwgZS5wcm9qZWN0KGlbMV0pKSwKICAgICAgICAgICAgICAgIG8gPSBuLm1pbiwKICAgICAgICAgICAgICAgIHMgPSBuLm1heCwKICAgICAgICAgICAgICAgIHIgPSAoMS4zIDw9IHRoaXMuX3dtc1ZlcnNpb24gJiYgdGhpcy5fY3JzID09PSBNZSA/IFtvLnksIG8ueCwgcy55LCBzLnhdIDogW28ueCwgby55LCBzLngsIHMueV0pLmpvaW4oIiwiKSwKICAgICAgICAgICAgICAgIGEgPSBhbi5wcm90b3R5cGUuZ2V0VGlsZVVybC5jYWxsKHRoaXMsIHQpOwogICAgICAgICAgICByZXR1cm4gYSArIG0odGhpcy53bXNQYXJhbXMsIGEsIHRoaXMub3B0aW9ucy51cHBlcmNhc2UpICsgKHRoaXMub3B0aW9ucy51cHBlcmNhc2UgPyAiJkJCT1g9IiA6ICImYmJveD0iKSArIHIKICAgICAgICB9LAogICAgICAgIHNldFBhcmFtczogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICByZXR1cm4gaCh0aGlzLndtc1BhcmFtcywgdCksIGkgfHwgdGhpcy5yZWRyYXcoKSwgdGhpcwogICAgICAgIH0KICAgIH0pOwogICAgYW4uV01TID0gdW4sIGhuLndtcyA9IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICByZXR1cm4gbmV3IHVuKHQsIGkpCiAgICB9OwogICAgdmFyIGxuID0gU2UuZXh0ZW5kKHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgcGFkZGluZzogLjEsCiAgICAgICAgICAgICAgICB0b2xlcmFuY2U6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcCh0aGlzLCB0KSwgdSh0aGlzKSwgdGhpcy5fbGF5ZXJzID0gdGhpcy5fbGF5ZXJzIHx8IHt9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uQWRkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lciB8fCAodGhpcy5faW5pdENvbnRhaW5lcigpLCB0aGlzLl96b29tQW5pbWF0ZWQgJiYgcGkodGhpcy5fY29udGFpbmVyLCAibGVhZmxldC16b29tLWFuaW1hdGVkIikpLCB0aGlzLmdldFBhbmUoKS5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXIpLCB0aGlzLl91cGRhdGUoKSwgdGhpcy5vbigidXBkYXRlIiwgdGhpcy5fdXBkYXRlUGF0aHMsIHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uUmVtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMub2ZmKCJ1cGRhdGUiLCB0aGlzLl91cGRhdGVQYXRocywgdGhpcyksIHRoaXMuX2Rlc3Ryb3lDb250YWluZXIoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRFdmVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgdmlld3Jlc2V0OiB0aGlzLl9yZXNldCwKICAgICAgICAgICAgICAgICAgICB6b29tOiB0aGlzLl9vblpvb20sCiAgICAgICAgICAgICAgICAgICAgbW92ZWVuZDogdGhpcy5fdXBkYXRlLAogICAgICAgICAgICAgICAgICAgIHpvb21lbmQ6IHRoaXMuX29uWm9vbUVuZAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl96b29tQW5pbWF0ZWQgJiYgKHQuem9vbWFuaW0gPSB0aGlzLl9vbkFuaW1ab29tKSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25BbmltWm9vbTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVHJhbnNmb3JtKHQuY2VudGVyLCB0Lnpvb20pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9vblpvb206IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVHJhbnNmb3JtKHRoaXMuX21hcC5nZXRDZW50ZXIoKSwgdGhpcy5fbWFwLmdldFpvb20oKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVRyYW5zZm9ybTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKGksIHRoaXMuX3pvb20pLAogICAgICAgICAgICAgICAgICAgIG4gPSBQaSh0aGlzLl9jb250YWluZXIpLAogICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9tYXAuZ2V0U2l6ZSgpLm11bHRpcGx5QnkoLjUgKyB0aGlzLm9wdGlvbnMucGFkZGluZyksCiAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuX21hcC5wcm9qZWN0KHRoaXMuX2NlbnRlciwgaSksCiAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuX21hcC5wcm9qZWN0KHQsIGkpLnN1YnRyYWN0KHMpLAogICAgICAgICAgICAgICAgICAgIGEgPSBvLm11bHRpcGx5QnkoLWUpLmFkZChuKS5hZGQobykuc3VidHJhY3Qocik7CiAgICAgICAgICAgICAgICB5dCA/IHhpKHRoaXMuX2NvbnRhaW5lciwgYSwgZSkgOiB3aSh0aGlzLl9jb250YWluZXIsIGEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9yZXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0IGluIHRoaXMuX3VwZGF0ZSgpLCB0aGlzLl91cGRhdGVUcmFuc2Zvcm0odGhpcy5fY2VudGVyLCB0aGlzLl96b29tKSwgdGhpcy5fbGF5ZXJzKSB0aGlzLl9sYXllcnNbdF0uX3Jlc2V0KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uWm9vbUVuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0IGluIHRoaXMuX2xheWVycykgdGhpcy5fbGF5ZXJzW3RdLl9wcm9qZWN0KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVBhdGhzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgaW4gdGhpcy5fbGF5ZXJzKSB0aGlzLl9sYXllcnNbdF0uX3VwZGF0ZSgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLm9wdGlvbnMucGFkZGluZywKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5fbWFwLmdldFNpemUoKSwKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fbWFwLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KGkubXVsdGlwbHlCeSgtdCkpLnJvdW5kKCk7CiAgICAgICAgICAgICAgICB0aGlzLl9ib3VuZHMgPSBuZXcgTyhlLCBlLmFkZChpLm11bHRpcGx5QnkoMSArIDIgKiB0KSkucm91bmQoKSksIHRoaXMuX2NlbnRlciA9IHRoaXMuX21hcC5nZXRDZW50ZXIoKSwgdGhpcy5fem9vbSA9IHRoaXMuX21hcC5nZXRab29tKCkKICAgICAgICAgICAgfQogICAgICAgIH0pLAogICAgICAgIGNuID0gbG4uZXh0ZW5kKHsKICAgICAgICAgICAgZ2V0RXZlbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gbG4ucHJvdG90eXBlLmdldEV2ZW50cy5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQudmlld3ByZXJlc2V0ID0gdGhpcy5fb25WaWV3UHJlUmVzZXQsIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uVmlld1ByZVJlc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3Rwb25lVXBkYXRlUGF0aHMgPSAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBsbi5wcm90b3R5cGUub25BZGQuY2FsbCh0aGlzKSwgdGhpcy5fZHJhdygpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9pbml0Q29udGFpbmVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CiAgICAgICAgICAgICAgICBFaSh0LCAibW91c2Vtb3ZlIiwgbyh0aGlzLl9vbk1vdXNlTW92ZSwgMzIsIHRoaXMpLCB0aGlzKSwgRWkodCwgImNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIGNvbnRleHRtZW51IiwgdGhpcy5fb25DbGljaywgdGhpcyksIEVpKHQsICJtb3VzZW91dCIsIHRoaXMuX2hhbmRsZU1vdXNlT3V0LCB0aGlzKSwgdGhpcy5fY3R4ID0gdC5nZXRDb250ZXh0KCIyZCIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9kZXN0cm95Q29udGFpbmVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIEModGhpcy5fcmVkcmF3UmVxdWVzdCksIGRlbGV0ZSB0aGlzLl9jdHgsIHVpKHRoaXMuX2NvbnRhaW5lciksIEJpKHRoaXMuX2NvbnRhaW5lciksIGRlbGV0ZSB0aGlzLl9jb250YWluZXIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVBhdGhzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5fcG9zdHBvbmVVcGRhdGVQYXRocykgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgaW4gdGhpcy5fcmVkcmF3Qm91bmRzID0gbnVsbCwgdGhpcy5fbGF5ZXJzKSB0aGlzLl9sYXllcnNbdF0uX3VwZGF0ZSgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlZHJhdygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20gfHwgIXRoaXMuX2JvdW5kcykgewogICAgICAgICAgICAgICAgICAgIGxuLnByb3RvdHlwZS5fdXBkYXRlLmNhbGwodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9ib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLl9jb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0LmdldFNpemUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IEN0ID8gMiA6IDE7CiAgICAgICAgICAgICAgICAgICAgd2koaSwgdC5taW4pLCBpLndpZHRoID0gbiAqIGUueCwgaS5oZWlnaHQgPSBuICogZS55LCBpLnN0eWxlLndpZHRoID0gZS54ICsgInB4IiwgaS5zdHlsZS5oZWlnaHQgPSBlLnkgKyAicHgiLCBDdCAmJiB0aGlzLl9jdHguc2NhbGUoMiwgMiksIHRoaXMuX2N0eC50cmFuc2xhdGUoLXQubWluLngsIC10Lm1pbi55KSwgdGhpcy5maXJlKCJ1cGRhdGUiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbG4ucHJvdG90eXBlLl9yZXNldC5jYWxsKHRoaXMpLCB0aGlzLl9wb3N0cG9uZVVwZGF0ZVBhdGhzICYmICh0aGlzLl9wb3N0cG9uZVVwZGF0ZVBhdGhzID0gITEsIHRoaXMuX3VwZGF0ZVBhdGhzKCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9pbml0UGF0aDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRGFzaEFycmF5KHQpOwogICAgICAgICAgICAgICAgdmFyIGkgPSAodGhpcy5fbGF5ZXJzW3UodCldID0gdCkuX29yZGVyID0gewogICAgICAgICAgICAgICAgICAgIGxheWVyOiB0LAogICAgICAgICAgICAgICAgICAgIHByZXY6IHRoaXMuX2RyYXdMYXN0LAogICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLl9kcmF3TGFzdCAmJiAodGhpcy5fZHJhd0xhc3QubmV4dCA9IGkpLCB0aGlzLl9kcmF3TGFzdCA9IGksIHRoaXMuX2RyYXdGaXJzdCA9IHRoaXMuX2RyYXdGaXJzdCB8fCB0aGlzLl9kcmF3TGFzdAogICAgICAgICAgICB9LAogICAgICAgICAgICBfYWRkUGF0aDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdFJlZHJhdyh0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVtb3ZlUGF0aDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0Ll9vcmRlciwKICAgICAgICAgICAgICAgICAgICBlID0gaS5uZXh0LAogICAgICAgICAgICAgICAgICAgIG4gPSBpLnByZXY7CiAgICAgICAgICAgICAgICBlID8gZS5wcmV2ID0gbiA6IHRoaXMuX2RyYXdMYXN0ID0gbiwgbiA/IG4ubmV4dCA9IGUgOiB0aGlzLl9kcmF3Rmlyc3QgPSBlLCBkZWxldGUgdC5fb3JkZXIsIGRlbGV0ZSB0aGlzLl9sYXllcnNbdSh0KV0sIHRoaXMuX3JlcXVlc3RSZWRyYXcodCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVBhdGg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2V4dGVuZFJlZHJhd0JvdW5kcyh0KSwgdC5fcHJvamVjdCgpLCB0Ll91cGRhdGUoKSwgdGhpcy5fcmVxdWVzdFJlZHJhdyh0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlU3R5bGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURhc2hBcnJheSh0KSwgdGhpcy5fcmVxdWVzdFJlZHJhdyh0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlRGFzaEFycmF5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQub3B0aW9ucy5kYXNoQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgZSwgbiA9IHQub3B0aW9ucy5kYXNoQXJyYXkuc3BsaXQoL1ssIF0rLyksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBbXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgbi5sZW5ndGg7IGUrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IE51bWJlcihuW2VdKSwgaXNOYU4oaSkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgby5wdXNoKGkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQub3B0aW9ucy5fZGFzaEFycmF5ID0gbwogICAgICAgICAgICAgICAgfSBlbHNlIHQub3B0aW9ucy5fZGFzaEFycmF5ID0gdC5vcHRpb25zLmRhc2hBcnJheQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVxdWVzdFJlZHJhdzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fbWFwICYmICh0aGlzLl9leHRlbmRSZWRyYXdCb3VuZHModCksIHRoaXMuX3JlZHJhd1JlcXVlc3QgPSB0aGlzLl9yZWRyYXdSZXF1ZXN0IHx8IE0odGhpcy5fcmVkcmF3LCB0aGlzKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2V4dGVuZFJlZHJhd0JvdW5kczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKHQuX3B4Qm91bmRzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAodC5vcHRpb25zLndlaWdodCB8fCAwKSArIDE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVkcmF3Qm91bmRzID0gdGhpcy5fcmVkcmF3Qm91bmRzIHx8IG5ldyBPLCB0aGlzLl9yZWRyYXdCb3VuZHMuZXh0ZW5kKHQuX3B4Qm91bmRzLm1pbi5zdWJ0cmFjdChbaSwgaV0pKSwgdGhpcy5fcmVkcmF3Qm91bmRzLmV4dGVuZCh0Ll9weEJvdW5kcy5tYXguYWRkKFtpLCBpXSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9yZWRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fcmVkcmF3UmVxdWVzdCA9IG51bGwsIHRoaXMuX3JlZHJhd0JvdW5kcyAmJiAodGhpcy5fcmVkcmF3Qm91bmRzLm1pbi5fZmxvb3IoKSwgdGhpcy5fcmVkcmF3Qm91bmRzLm1heC5fY2VpbCgpKSwgdGhpcy5fY2xlYXIoKSwgdGhpcy5fZHJhdygpLCB0aGlzLl9yZWRyYXdCb3VuZHMgPSBudWxsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9jbGVhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3JlZHJhd0JvdW5kczsKICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LmdldFNpemUoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdHguY2xlYXJSZWN0KHQubWluLngsIHQubWluLnksIGkueCwgaS55KQogICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuX2N0eC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fY29udGFpbmVyLndpZHRoLCB0aGlzLl9jb250YWluZXIuaGVpZ2h0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZHJhdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgaSA9IHRoaXMuX3JlZHJhd0JvdW5kczsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jdHguc2F2ZSgpLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBpLmdldFNpemUoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdHguYmVnaW5QYXRoKCksIHRoaXMuX2N0eC5yZWN0KGkubWluLngsIGkubWluLnksIGUueCwgZS55KSwgdGhpcy5fY3R4LmNsaXAoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fZHJhd2luZyA9ICEwOwogICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IHRoaXMuX2RyYXdGaXJzdDsgbjsgbiA9IG4ubmV4dCkgdCA9IG4ubGF5ZXIsICghaSB8fCB0Ll9weEJvdW5kcyAmJiB0Ll9weEJvdW5kcy5pbnRlcnNlY3RzKGkpKSAmJiB0Ll91cGRhdGVQYXRoKCk7CiAgICAgICAgICAgICAgICB0aGlzLl9kcmF3aW5nID0gITEsIHRoaXMuX2N0eC5yZXN0b3JlKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVBvbHk6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kcmF3aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIG4sIG8sIHMsIHIgPSB0Ll9wYXJ0cywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy5fY3R4OwogICAgICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaC5iZWdpblBhdGgoKSwgZSA9IDA7IGUgPCBhOyBlKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDAsIG8gPSByW2VdLmxlbmd0aDsgbiA8IG87IG4rKykgcyA9IHJbZV1bbl0sIGhbbiA/ICJsaW5lVG8iIDogIm1vdmVUbyJdKHMueCwgcy55KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgJiYgaC5jbG9zZVBhdGgoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGxTdHJva2UoaCwgdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGVDaXJjbGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kcmF3aW5nICYmICF0Ll9lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0Ll9wb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IE1hdGgubWF4KE1hdGgucm91bmQodC5fcmFkaXVzKSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAoTWF0aC5tYXgoTWF0aC5yb3VuZCh0Ll9yYWRpdXNZKSwgMSkgfHwgbikgLyBuOwogICAgICAgICAgICAgICAgICAgIDEgIT0gbyAmJiAoZS5zYXZlKCksIGUuc2NhbGUoMSwgbykpLCBlLmJlZ2luUGF0aCgpLCBlLmFyYyhpLngsIGkueSAvIG8sIG4sIDAsIDIgKiBNYXRoLlBJLCAhMSksIDEgIT0gbyAmJiBlLnJlc3RvcmUoKSwgdGhpcy5fZmlsbFN0cm9rZShlLCB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZmlsbFN0cm9rZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBpLm9wdGlvbnM7CiAgICAgICAgICAgICAgICBlLmZpbGwgJiYgKHQuZ2xvYmFsQWxwaGEgPSBlLmZpbGxPcGFjaXR5LCB0LmZpbGxTdHlsZSA9IGUuZmlsbENvbG9yIHx8IGUuY29sb3IsIHQuZmlsbChlLmZpbGxSdWxlIHx8ICJldmVub2RkIikpLCBlLnN0cm9rZSAmJiAwICE9PSBlLndlaWdodCAmJiAodC5zZXRMaW5lRGFzaCAmJiB0LnNldExpbmVEYXNoKGkub3B0aW9ucyAmJiBpLm9wdGlvbnMuX2Rhc2hBcnJheSB8fCBbXSksIHQuZ2xvYmFsQWxwaGEgPSBlLm9wYWNpdHksIHQubGluZVdpZHRoID0gZS53ZWlnaHQsIHQuc3Ryb2tlU3R5bGUgPSBlLmNvbG9yLCB0LmxpbmVDYXAgPSBlLmxpbmVDYXAsIHQubGluZUpvaW4gPSBlLmxpbmVKb2luLCB0LnN0cm9rZSgpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfb25DbGljazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSwgZSwgbiA9IHRoaXMuX21hcC5tb3VzZUV2ZW50VG9MYXllclBvaW50KHQpLCBvID0gdGhpcy5fZHJhd0ZpcnN0OyBvOyBvID0gby5uZXh0KShpID0gby5sYXllcikub3B0aW9ucy5pbnRlcmFjdGl2ZSAmJiBpLl9jb250YWluc1BvaW50KG4pICYmICF0aGlzLl9tYXAuX2RyYWdnYWJsZU1vdmVkKGkpICYmIChlID0gaSk7CiAgICAgICAgICAgICAgICBlICYmIChxaSh0KSwgdGhpcy5fZmlyZUV2ZW50KFtlXSwgdCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9vbk1vdXNlTW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuX21hcCAmJiAhdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmluZygpICYmICF0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX21hcC5tb3VzZUV2ZW50VG9MYXllclBvaW50KHQpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdXNlSG92ZXIodCwgaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2hhbmRsZU1vdXNlT3V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX2hvdmVyZWRMYXllcjsKICAgICAgICAgICAgICAgIGkgJiYgKG1pKHRoaXMuX2NvbnRhaW5lciwgImxlYWZsZXQtaW50ZXJhY3RpdmUiKSwgdGhpcy5fZmlyZUV2ZW50KFtpXSwgdCwgIm1vdXNlb3V0IiksIHRoaXMuX2hvdmVyZWRMYXllciA9IG51bGwpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9oYW5kbGVNb3VzZUhvdmVyOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlLCBuLCBvID0gdGhpcy5fZHJhd0ZpcnN0OyBvOyBvID0gby5uZXh0KShlID0gby5sYXllcikub3B0aW9ucy5pbnRlcmFjdGl2ZSAmJiBlLl9jb250YWluc1BvaW50KGkpICYmIChuID0gZSk7CiAgICAgICAgICAgICAgICBuICE9PSB0aGlzLl9ob3ZlcmVkTGF5ZXIgJiYgKHRoaXMuX2hhbmRsZU1vdXNlT3V0KHQpLCBuICYmIChwaSh0aGlzLl9jb250YWluZXIsICJsZWFmbGV0LWludGVyYWN0aXZlIiksIHRoaXMuX2ZpcmVFdmVudChbbl0sIHQsICJtb3VzZW92ZXIiKSwgdGhpcy5faG92ZXJlZExheWVyID0gbikpLCB0aGlzLl9ob3ZlcmVkTGF5ZXIgJiYgdGhpcy5fZmlyZUV2ZW50KFt0aGlzLl9ob3ZlcmVkTGF5ZXJdLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZmlyZUV2ZW50OiBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9tYXAuX2ZpcmVET01FdmVudChpLCBlIHx8IGkudHlwZSwgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2JyaW5nVG9Gcm9udDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0Ll9vcmRlcjsKICAgICAgICAgICAgICAgIGlmIChpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBpLm5leHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBpLnByZXY7CiAgICAgICAgICAgICAgICAgICAgZSAmJiAoKGUucHJldiA9IG4pID8gbi5uZXh0ID0gZSA6IGUgJiYgKHRoaXMuX2RyYXdGaXJzdCA9IGUpLCBpLnByZXYgPSB0aGlzLl9kcmF3TGFzdCwgKHRoaXMuX2RyYXdMYXN0Lm5leHQgPSBpKS5uZXh0ID0gbnVsbCwgdGhpcy5fZHJhd0xhc3QgPSBpLCB0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYnJpbmdUb0JhY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdC5fb3JkZXI7CiAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gaS5uZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5wcmV2OwogICAgICAgICAgICAgICAgICAgIG4gJiYgKChuLm5leHQgPSBlKSA/IGUucHJldiA9IG4gOiBuICYmICh0aGlzLl9kcmF3TGFzdCA9IG4pLCBpLnByZXYgPSBudWxsLCBpLm5leHQgPSB0aGlzLl9kcmF3Rmlyc3QsIHRoaXMuX2RyYXdGaXJzdC5wcmV2ID0gaSwgdGhpcy5fZHJhd0ZpcnN0ID0gaSwgdGhpcy5fcmVxdWVzdFJlZHJhdyh0KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgIGZ1bmN0aW9uIF9uKHQpIHsKICAgICAgICByZXR1cm4gU3QgPyBuZXcgY24odCkgOiBudWxsCiAgICB9CiAgICB2YXIgZG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5uYW1lc3BhY2VzLmFkZCgibHZtbCIsICJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIpLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIjxsdm1sOiIgKyB0ICsgJyBjbGFzcz0ibHZtbCI+JykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIjwiICsgdCArICcgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC5jb206dm1sIiBjbGFzcz0ibHZtbCI+JykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0oKSwKICAgICAgICBwbiA9IHsKICAgICAgICAgICAgX2luaXRDb250YWluZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyID0gaGkoImRpdiIsICJsZWFmbGV0LXZtbC1jb250YWluZXIiKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21hcC5fYW5pbWF0aW5nWm9vbSB8fCAobG4ucHJvdG90eXBlLl91cGRhdGUuY2FsbCh0aGlzKSwgdGhpcy5maXJlKCJ1cGRhdGUiKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2luaXRQYXRoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHQuX2NvbnRhaW5lciA9IGRuKCJzaGFwZSIpOwogICAgICAgICAgICAgICAgcGkoaSwgImxlYWZsZXQtdm1sLXNoYXBlICIgKyAodGhpcy5vcHRpb25zLmNsYXNzTmFtZSB8fCAiIikpLCBpLmNvb3Jkc2l6ZSA9ICIxIDEiLCB0Ll9wYXRoID0gZG4oInBhdGgiKSwgaS5hcHBlbmRDaGlsZCh0Ll9wYXRoKSwgdGhpcy5fdXBkYXRlU3R5bGUodCksIHRoaXMuX2xheWVyc1t1KHQpXSA9IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2FkZFBhdGg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdC5fY29udGFpbmVyOwogICAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKGkpLCB0Lm9wdGlvbnMuaW50ZXJhY3RpdmUgJiYgdC5hZGRJbnRlcmFjdGl2ZVRhcmdldChpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVtb3ZlUGF0aDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0Ll9jb250YWluZXI7CiAgICAgICAgICAgICAgICB1aShpKSwgdC5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldChpKSwgZGVsZXRlIHRoaXMuX2xheWVyc1t1KHQpXQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlU3R5bGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdC5fc3Ryb2tlLAogICAgICAgICAgICAgICAgICAgIGUgPSB0Ll9maWxsLAogICAgICAgICAgICAgICAgICAgIG4gPSB0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgbyA9IHQuX2NvbnRhaW5lcjsKICAgICAgICAgICAgICAgIG8uc3Ryb2tlZCA9ICEhbi5zdHJva2UsIG8uZmlsbGVkID0gISFuLmZpbGwsIG4uc3Ryb2tlID8gKGkgfHwgKGkgPSB0Ll9zdHJva2UgPSBkbigic3Ryb2tlIikpLCBvLmFwcGVuZENoaWxkKGkpLCBpLndlaWdodCA9IG4ud2VpZ2h0ICsgInB4IiwgaS5jb2xvciA9IG4uY29sb3IsIGkub3BhY2l0eSA9IG4ub3BhY2l0eSwgbi5kYXNoQXJyYXkgPyBpLmRhc2hTdHlsZSA9IHYobi5kYXNoQXJyYXkpID8gbi5kYXNoQXJyYXkuam9pbigiICIpIDogbi5kYXNoQXJyYXkucmVwbGFjZSgvKCAqLCAqKS9nLCAiICIpIDogaS5kYXNoU3R5bGUgPSAiIiwgaS5lbmRjYXAgPSBuLmxpbmVDYXAucmVwbGFjZSgiYnV0dCIsICJmbGF0IiksIGkuam9pbnN0eWxlID0gbi5saW5lSm9pbikgOiBpICYmIChvLnJlbW92ZUNoaWxkKGkpLCB0Ll9zdHJva2UgPSBudWxsKSwgbi5maWxsID8gKGUgfHwgKGUgPSB0Ll9maWxsID0gZG4oImZpbGwiKSksIG8uYXBwZW5kQ2hpbGQoZSksIGUuY29sb3IgPSBuLmZpbGxDb2xvciB8fCBuLmNvbG9yLCBlLm9wYWNpdHkgPSBuLmZpbGxPcGFjaXR5KSA6IGUgJiYgKG8ucmVtb3ZlQ2hpbGQoZSksIHQuX2ZpbGwgPSBudWxsKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlQ2lyY2xlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHQuX3BvaW50LnJvdW5kKCksCiAgICAgICAgICAgICAgICAgICAgZSA9IE1hdGgucm91bmQodC5fcmFkaXVzKSwKICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5yb3VuZCh0Ll9yYWRpdXNZIHx8IGUpOwogICAgICAgICAgICAgICAgdGhpcy5fc2V0UGF0aCh0LCB0Ll9lbXB0eSgpID8gIk0wIDAiIDogIkFMICIgKyBpLnggKyAiLCIgKyBpLnkgKyAiICIgKyBlICsgIiwiICsgbiArICIgMCwyMzU5MjYwMCIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9zZXRQYXRoOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICB0Ll9wYXRoLnYgPSBpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9icmluZ1RvRnJvbnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGNpKHQuX2NvbnRhaW5lcikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2JyaW5nVG9CYWNrOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBfaSh0Ll9jb250YWluZXIpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG1uID0gRXQgPyBkbiA6ICQsCiAgICAgICAgZm4gPSBsbi5leHRlbmQoewogICAgICAgICAgICBnZXRFdmVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBsbi5wcm90b3R5cGUuZ2V0RXZlbnRzLmNhbGwodGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gdC56b29tc3RhcnQgPSB0aGlzLl9vblpvb21TdGFydCwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBfaW5pdENvbnRhaW5lcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSBtbigic3ZnIiksIHRoaXMuX2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInBvaW50ZXItZXZlbnRzIiwgIm5vbmUiKSwgdGhpcy5fcm9vdEdyb3VwID0gbW4oImciKSwgdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3Jvb3RHcm91cCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2Rlc3Ryb3lDb250YWluZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdWkodGhpcy5fY29udGFpbmVyKSwgQmkodGhpcy5fY29udGFpbmVyKSwgZGVsZXRlIHRoaXMuX2NvbnRhaW5lciwgZGVsZXRlIHRoaXMuX3Jvb3RHcm91cCwgZGVsZXRlIHRoaXMuX3N2Z1NpemUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uWm9vbVN0YXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20gfHwgIXRoaXMuX2JvdW5kcykgewogICAgICAgICAgICAgICAgICAgIGxuLnByb3RvdHlwZS5fdXBkYXRlLmNhbGwodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9ib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmdldFNpemUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2NvbnRhaW5lcjsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdmdTaXplICYmIHRoaXMuX3N2Z1NpemUuZXF1YWxzKGkpIHx8ICh0aGlzLl9zdmdTaXplID0gaSwgZS5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgaS54KSwgZS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIGkueSkpLCB3aShlLCB0Lm1pbiksIGUuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IiwgW3QubWluLngsIHQubWluLnksIGkueCwgaS55XS5qb2luKCIgIikpLCB0aGlzLmZpcmUoInVwZGF0ZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9pbml0UGF0aDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0Ll9wYXRoID0gbW4oInBhdGgiKTsKICAgICAgICAgICAgICAgIHQub3B0aW9ucy5jbGFzc05hbWUgJiYgcGkoaSwgdC5vcHRpb25zLmNsYXNzTmFtZSksIHQub3B0aW9ucy5pbnRlcmFjdGl2ZSAmJiBwaShpLCAibGVhZmxldC1pbnRlcmFjdGl2ZSIpLCB0aGlzLl91cGRhdGVTdHlsZSh0KSwgdGhpcy5fbGF5ZXJzW3UodCldID0gdAogICAgICAgICAgICB9LAogICAgICAgICAgICBfYWRkUGF0aDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5fcm9vdEdyb3VwIHx8IHRoaXMuX2luaXRDb250YWluZXIoKSwgdGhpcy5fcm9vdEdyb3VwLmFwcGVuZENoaWxkKHQuX3BhdGgpLCB0LmFkZEludGVyYWN0aXZlVGFyZ2V0KHQuX3BhdGgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9yZW1vdmVQYXRoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB1aSh0Ll9wYXRoKSwgdC5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCh0Ll9wYXRoKSwgZGVsZXRlIHRoaXMuX2xheWVyc1t1KHQpXQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlUGF0aDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdC5fcHJvamVjdCgpLCB0Ll91cGRhdGUoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlU3R5bGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdC5fcGF0aCwKICAgICAgICAgICAgICAgICAgICBlID0gdC5vcHRpb25zOwogICAgICAgICAgICAgICAgaSAmJiAoZS5zdHJva2UgPyAoaS5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsIGUuY29sb3IpLCBpLnNldEF0dHJpYnV0ZSgic3Ryb2tlLW9wYWNpdHkiLCBlLm9wYWNpdHkpLCBpLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIiwgZS53ZWlnaHQpLCBpLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWxpbmVjYXAiLCBlLmxpbmVDYXApLCBpLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWxpbmVqb2luIiwgZS5saW5lSm9pbiksIGUuZGFzaEFycmF5ID8gaS5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiLCBlLmRhc2hBcnJheSkgOiBpLnJlbW92ZUF0dHJpYnV0ZSgic3Ryb2tlLWRhc2hhcnJheSIpLCBlLmRhc2hPZmZzZXQgPyBpLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWRhc2hvZmZzZXQiLCBlLmRhc2hPZmZzZXQpIDogaS5yZW1vdmVBdHRyaWJ1dGUoInN0cm9rZS1kYXNob2Zmc2V0IikpIDogaS5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsICJub25lIiksIGUuZmlsbCA/IChpLnNldEF0dHJpYnV0ZSgiZmlsbCIsIGUuZmlsbENvbG9yIHx8IGUuY29sb3IpLCBpLnNldEF0dHJpYnV0ZSgiZmlsbC1vcGFjaXR5IiwgZS5maWxsT3BhY2l0eSksIGkuc2V0QXR0cmlidXRlKCJmaWxsLXJ1bGUiLCBlLmZpbGxSdWxlIHx8ICJldmVub2RkIikpIDogaS5zZXRBdHRyaWJ1dGUoImZpbGwiLCAibm9uZSIpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfdXBkYXRlUG9seTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdGhpcy5fc2V0UGF0aCh0LCBRKHQuX3BhcnRzLCBpKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZUNpcmNsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0Ll9wb2ludCwKICAgICAgICAgICAgICAgICAgICBlID0gTWF0aC5tYXgoTWF0aC5yb3VuZCh0Ll9yYWRpdXMpLCAxKSwKICAgICAgICAgICAgICAgICAgICBuID0gImEiICsgZSArICIsIiArIChNYXRoLm1heChNYXRoLnJvdW5kKHQuX3JhZGl1c1kpLCAxKSB8fCBlKSArICIgMCAxLDAgIiwKICAgICAgICAgICAgICAgICAgICBvID0gdC5fZW1wdHkoKSA/ICJNMCAwIiA6ICJNIiArIChpLnggLSBlKSArICIsIiArIGkueSArIG4gKyAyICogZSArICIsMCAiICsgbiArIDIgKiAtZSArICIsMCAiOwogICAgICAgICAgICAgICAgdGhpcy5fc2V0UGF0aCh0LCBvKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfc2V0UGF0aDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdC5fcGF0aC5zZXRBdHRyaWJ1dGUoImQiLCBpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYnJpbmdUb0Zyb250OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBjaSh0Ll9wYXRoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfYnJpbmdUb0JhY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIF9pKHQuX3BhdGgpCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICBmdW5jdGlvbiBnbih0KSB7CiAgICAgICAgcmV0dXJuIFp0IHx8IEV0ID8gbmV3IGZuKHQpIDogbnVsbAogICAgfQogICAgRXQgJiYgZm4uaW5jbHVkZShwbiksIEppLmluY2x1ZGUoewogICAgICAgIGdldFJlbmRlcmVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdC5vcHRpb25zLnJlbmRlcmVyIHx8IHRoaXMuX2dldFBhbmVSZW5kZXJlcih0Lm9wdGlvbnMucGFuZSkgfHwgdGhpcy5vcHRpb25zLnJlbmRlcmVyIHx8IHRoaXMuX3JlbmRlcmVyOwogICAgICAgICAgICByZXR1cm4gaSB8fCAoaSA9IHRoaXMuX3JlbmRlcmVyID0gdGhpcy5fY3JlYXRlUmVuZGVyZXIoKSksIHRoaXMuaGFzTGF5ZXIoaSkgfHwgdGhpcy5hZGRMYXllcihpKSwgaQogICAgICAgIH0sCiAgICAgICAgX2dldFBhbmVSZW5kZXJlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICBpZiAoIm92ZXJsYXlQYW5lIiA9PT0gdCB8fCB2b2lkIDAgPT09IHQpIHJldHVybiAhMTsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9wYW5lUmVuZGVyZXJzW3RdOwogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBpICYmIChpID0gdGhpcy5fY3JlYXRlUmVuZGVyZXIoewogICAgICAgICAgICAgICAgcGFuZTogdAogICAgICAgICAgICB9KSwgdGhpcy5fcGFuZVJlbmRlcmVyc1t0XSA9IGkpLCBpCiAgICAgICAgfSwKICAgICAgICBfY3JlYXRlUmVuZGVyZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wcmVmZXJDYW52YXMgJiYgX24odCkgfHwgZ24odCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciB2biA9IGplLmV4dGVuZCh7CiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICBqZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIHRoaXMuX2JvdW5kc1RvTGF0TG5ncyh0KSwgaSkKICAgICAgICB9LAogICAgICAgIHNldEJvdW5kczogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRMYXRMbmdzKHRoaXMuX2JvdW5kc1RvTGF0TG5ncyh0KSkKICAgICAgICB9LAogICAgICAgIF9ib3VuZHNUb0xhdExuZ3M6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIFsodCA9IEQodCkpLmdldFNvdXRoV2VzdCgpLCB0LmdldE5vcnRoV2VzdCgpLCB0LmdldE5vcnRoRWFzdCgpLCB0LmdldFNvdXRoRWFzdCgpXQogICAgICAgIH0KICAgIH0pOwogICAgZm4uY3JlYXRlID0gbW4sIGZuLnBvaW50c1RvUGF0aCA9IFEsIFdlLmdlb21ldHJ5VG9MYXllciA9IEhlLCBXZS5jb29yZHNUb0xhdExuZyA9IEZlLCBXZS5jb29yZHNUb0xhdExuZ3MgPSBVZSwgV2UubGF0TG5nVG9Db29yZHMgPSBWZSwgV2UubGF0TG5nc1RvQ29vcmRzID0gcWUsIFdlLmdldEZlYXR1cmUgPSBHZSwgV2UuYXNGZWF0dXJlID0gS2UsIEppLm1lcmdlT3B0aW9ucyh7CiAgICAgICAgYm94Wm9vbTogITAKICAgIH0pOwogICAgdmFyIHluID0gb2UuZXh0ZW5kKHsKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRoaXMuX21hcCA9IHQsIHRoaXMuX2NvbnRhaW5lciA9IHQuX2NvbnRhaW5lciwgdGhpcy5fcGFuZSA9IHQuX3BhbmVzLm92ZXJsYXlQYW5lLCB0aGlzLl9yZXNldFN0YXRlVGltZW91dCA9IDAsIHQub24oInVubG9hZCIsIHRoaXMuX2Rlc3Ryb3ksIHRoaXMpCiAgICAgICAgfSwKICAgICAgICBhZGRIb29rczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIEVpKHRoaXMuX2NvbnRhaW5lciwgIm1vdXNlZG93biIsIHRoaXMuX29uTW91c2VEb3duLCB0aGlzKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlSG9va3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBCaSh0aGlzLl9jb250YWluZXIsICJtb3VzZWRvd24iLCB0aGlzLl9vbk1vdXNlRG93biwgdGhpcykKICAgICAgICB9LAogICAgICAgIG1vdmVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vdmVkCiAgICAgICAgfSwKICAgICAgICBfZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHVpKHRoaXMuX3BhbmUpLCBkZWxldGUgdGhpcy5fcGFuZQogICAgICAgIH0sCiAgICAgICAgX3Jlc2V0U3RhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLl9yZXNldFN0YXRlVGltZW91dCA9IDAsIHRoaXMuX21vdmVkID0gITEKICAgICAgICB9LAogICAgICAgIF9jbGVhckRlZmVycmVkUmVzZXRTdGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIDAgIT09IHRoaXMuX3Jlc2V0U3RhdGVUaW1lb3V0ICYmIChjbGVhclRpbWVvdXQodGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQpLCB0aGlzLl9yZXNldFN0YXRlVGltZW91dCA9IDApCiAgICAgICAgfSwKICAgICAgICBfb25Nb3VzZURvd246IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKCF0LnNoaWZ0S2V5IHx8IDEgIT09IHQud2hpY2ggJiYgMSAhPT0gdC5idXR0b24pIHJldHVybiAhMTsKICAgICAgICAgICAgdGhpcy5fY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGUoKSwgdGhpcy5fcmVzZXRTdGF0ZSgpLCAkdCgpLCBiaSgpLCB0aGlzLl9zdGFydFBvaW50ID0gdGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLCBFaShkb2N1bWVudCwgewogICAgICAgICAgICAgICAgY29udGV4dG1lbnU6IGppLAogICAgICAgICAgICAgICAgbW91c2Vtb3ZlOiB0aGlzLl9vbk1vdXNlTW92ZSwKICAgICAgICAgICAgICAgIG1vdXNldXA6IHRoaXMuX29uTW91c2VVcCwKICAgICAgICAgICAgICAgIGtleWRvd246IHRoaXMuX29uS2V5RG93bgogICAgICAgICAgICB9LCB0aGlzKQogICAgICAgIH0sCiAgICAgICAgX29uTW91c2VNb3ZlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRoaXMuX21vdmVkIHx8ICh0aGlzLl9tb3ZlZCA9ICEwLCB0aGlzLl9ib3ggPSBoaSgiZGl2IiwgImxlYWZsZXQtem9vbS1ib3giLCB0aGlzLl9jb250YWluZXIpLCBwaSh0aGlzLl9jb250YWluZXIsICJsZWFmbGV0LWNyb3NzaGFpciIpLCB0aGlzLl9tYXAuZmlyZSgiYm94em9vbXN0YXJ0IikpLCB0aGlzLl9wb2ludCA9IHRoaXMuX21hcC5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KTsKICAgICAgICAgICAgdmFyIGkgPSBuZXcgTyh0aGlzLl9wb2ludCwgdGhpcy5fc3RhcnRQb2ludCksCiAgICAgICAgICAgICAgICBlID0gaS5nZXRTaXplKCk7CiAgICAgICAgICAgIHdpKHRoaXMuX2JveCwgaS5taW4pLCB0aGlzLl9ib3guc3R5bGUud2lkdGggPSBlLnggKyAicHgiLCB0aGlzLl9ib3guc3R5bGUuaGVpZ2h0ID0gZS55ICsgInB4IgogICAgICAgIH0sCiAgICAgICAgX2ZpbmlzaDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX21vdmVkICYmICh1aSh0aGlzLl9ib3gpLCBtaSh0aGlzLl9jb250YWluZXIsICJsZWFmbGV0LWNyb3NzaGFpciIpKSwgUXQoKSwgVGkoKSwgQmkoZG9jdW1lbnQsIHsKICAgICAgICAgICAgICAgIGNvbnRleHRtZW51OiBqaSwKICAgICAgICAgICAgICAgIG1vdXNlbW92ZTogdGhpcy5fb25Nb3VzZU1vdmUsCiAgICAgICAgICAgICAgICBtb3VzZXVwOiB0aGlzLl9vbk1vdXNlVXAsCiAgICAgICAgICAgICAgICBrZXlkb3duOiB0aGlzLl9vbktleURvd24KICAgICAgICAgICAgfSwgdGhpcykKICAgICAgICB9LAogICAgICAgIF9vbk1vdXNlVXA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKCgxID09PSB0LndoaWNoIHx8IDEgPT09IHQuYnV0dG9uKSAmJiAodGhpcy5fZmluaXNoKCksIHRoaXMuX21vdmVkKSkgewogICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGUoKSwgdGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGEodGhpcy5fcmVzZXRTdGF0ZSwgdGhpcyksIDApOwogICAgICAgICAgICAgICAgdmFyIGkgPSBuZXcgTih0aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xhdExuZyh0aGlzLl9zdGFydFBvaW50KSwgdGhpcy5fbWFwLmNvbnRhaW5lclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQpKTsKICAgICAgICAgICAgICAgIHRoaXMuX21hcC5maXRCb3VuZHMoaSkuZmlyZSgiYm94em9vbWVuZCIsIHsKICAgICAgICAgICAgICAgICAgICBib3hab29tQm91bmRzOiBpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfb25LZXlEb3duOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIDI3ID09PSB0LmtleUNvZGUgJiYgdGhpcy5fZmluaXNoKCkKICAgICAgICB9CiAgICB9KTsKICAgIEppLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwgImJveFpvb20iLCB5biksIEppLm1lcmdlT3B0aW9ucyh7CiAgICAgICAgZG91YmxlQ2xpY2tab29tOiAhMAogICAgfSk7CiAgICB2YXIgeG4gPSBvZS5leHRlbmQoewogICAgICAgIGFkZEhvb2tzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fbWFwLm9uKCJkYmxjbGljayIsIHRoaXMuX29uRG91YmxlQ2xpY2ssIHRoaXMpCiAgICAgICAgfSwKICAgICAgICByZW1vdmVIb29rczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX21hcC5vZmYoImRibGNsaWNrIiwgdGhpcy5fb25Eb3VibGVDbGljaywgdGhpcykKICAgICAgICB9LAogICAgICAgIF9vbkRvdWJsZUNsaWNrOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5fbWFwLAogICAgICAgICAgICAgICAgZSA9IGkuZ2V0Wm9vbSgpLAogICAgICAgICAgICAgICAgbiA9IGkub3B0aW9ucy56b29tRGVsdGEsCiAgICAgICAgICAgICAgICBvID0gdC5vcmlnaW5hbEV2ZW50LnNoaWZ0S2V5ID8gZSAtIG4gOiBlICsgbjsKICAgICAgICAgICAgImNlbnRlciIgPT09IGkub3B0aW9ucy5kb3VibGVDbGlja1pvb20gPyBpLnNldFpvb20obykgOiBpLnNldFpvb21Bcm91bmQodC5jb250YWluZXJQb2ludCwgbykKICAgICAgICB9CiAgICB9KTsKICAgIEppLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwgImRvdWJsZUNsaWNrWm9vbSIsIHhuKSwgSmkubWVyZ2VPcHRpb25zKHsKICAgICAgICBkcmFnZ2luZzogITAsCiAgICAgICAgaW5lcnRpYTogIXJ0LAogICAgICAgIGluZXJ0aWFEZWNlbGVyYXRpb246IDM0MDAsCiAgICAgICAgaW5lcnRpYU1heFNwZWVkOiAxIC8gMCwKICAgICAgICBlYXNlTGluZWFyaXR5OiAuMiwKICAgICAgICB3b3JsZENvcHlKdW1wOiAhMSwKICAgICAgICBtYXhCb3VuZHNWaXNjb3NpdHk6IDAKICAgIH0pOwogICAgdmFyIHduID0gb2UuZXh0ZW5kKHsKICAgICAgICBhZGRIb29rczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5fZHJhZ2dhYmxlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX21hcDsKICAgICAgICAgICAgICAgIHRoaXMuX2RyYWdnYWJsZSA9IG5ldyBsZSh0Ll9tYXBQYW5lLCB0Ll9jb250YWluZXIpLCB0aGlzLl9kcmFnZ2FibGUub24oewogICAgICAgICAgICAgICAgICAgIGRyYWdzdGFydDogdGhpcy5fb25EcmFnU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgZHJhZzogdGhpcy5fb25EcmFnLAogICAgICAgICAgICAgICAgICAgIGRyYWdlbmQ6IHRoaXMuX29uRHJhZ0VuZAogICAgICAgICAgICAgICAgfSwgdGhpcyksIHRoaXMuX2RyYWdnYWJsZS5vbigicHJlZHJhZyIsIHRoaXMuX29uUHJlRHJhZ0xpbWl0LCB0aGlzKSwgdC5vcHRpb25zLndvcmxkQ29weUp1bXAgJiYgKHRoaXMuX2RyYWdnYWJsZS5vbigicHJlZHJhZyIsIHRoaXMuX29uUHJlRHJhZ1dyYXAsIHRoaXMpLCB0Lm9uKCJ6b29tZW5kIiwgdGhpcy5fb25ab29tRW5kLCB0aGlzKSwgdC53aGVuUmVhZHkodGhpcy5fb25ab29tRW5kLCB0aGlzKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBwaSh0aGlzLl9tYXAuX2NvbnRhaW5lciwgImxlYWZsZXQtZ3JhYiBsZWFmbGV0LXRvdWNoLWRyYWciKSwgdGhpcy5fZHJhZ2dhYmxlLmVuYWJsZSgpLCB0aGlzLl9wb3NpdGlvbnMgPSBbXSwgdGhpcy5fdGltZXMgPSBbXQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlSG9va3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBtaSh0aGlzLl9tYXAuX2NvbnRhaW5lciwgImxlYWZsZXQtZ3JhYiIpLCBtaSh0aGlzLl9tYXAuX2NvbnRhaW5lciwgImxlYWZsZXQtdG91Y2gtZHJhZyIpLCB0aGlzLl9kcmFnZ2FibGUuZGlzYWJsZSgpCiAgICAgICAgfSwKICAgICAgICBtb3ZlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kcmFnZ2FibGUgJiYgdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZAogICAgICAgIH0sCiAgICAgICAgbW92aW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RyYWdnYWJsZSAmJiB0aGlzLl9kcmFnZ2FibGUuX21vdmluZwogICAgICAgIH0sCiAgICAgICAgX29uRHJhZ1N0YXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9tYXA7CiAgICAgICAgICAgIGlmICh0Ll9zdG9wKCksIHRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kcyAmJiB0aGlzLl9tYXAub3B0aW9ucy5tYXhCb3VuZHNWaXNjb3NpdHkpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gRCh0aGlzLl9tYXAub3B0aW9ucy5tYXhCb3VuZHMpOwogICAgICAgICAgICAgICAgdGhpcy5fb2Zmc2V0TGltaXQgPSBSKHRoaXMuX21hcC5sYXRMbmdUb0NvbnRhaW5lclBvaW50KGkuZ2V0Tm9ydGhXZXN0KCkpLm11bHRpcGx5QnkoLTEpLCB0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludChpLmdldFNvdXRoRWFzdCgpKS5tdWx0aXBseUJ5KC0xKS5hZGQodGhpcy5fbWFwLmdldFNpemUoKSkpLCB0aGlzLl92aXNjb3NpdHkgPSBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCB0aGlzLl9tYXAub3B0aW9ucy5tYXhCb3VuZHNWaXNjb3NpdHkpKQogICAgICAgICAgICB9IGVsc2UgdGhpcy5fb2Zmc2V0TGltaXQgPSBudWxsOwogICAgICAgICAgICB0LmZpcmUoIm1vdmVzdGFydCIpLmZpcmUoImRyYWdzdGFydCIpLCB0Lm9wdGlvbnMuaW5lcnRpYSAmJiAodGhpcy5fcG9zaXRpb25zID0gW10sIHRoaXMuX3RpbWVzID0gW10pCiAgICAgICAgfSwKICAgICAgICBfb25EcmFnOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICh0aGlzLl9tYXAub3B0aW9ucy5pbmVydGlhKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX2xhc3RUaW1lID0gK25ldyBEYXRlLAogICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9sYXN0UG9zID0gdGhpcy5fZHJhZ2dhYmxlLl9hYnNQb3MgfHwgdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3M7CiAgICAgICAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucHVzaChlKSwgdGhpcy5fdGltZXMucHVzaChpKSwgdGhpcy5fcHJ1bmVQb3NpdGlvbnMoaSkKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl9tYXAuZmlyZSgibW92ZSIsIHQpLmZpcmUoImRyYWciLCB0KQogICAgICAgIH0sCiAgICAgICAgX3BydW5lUG9zaXRpb25zOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAoOyAxIDwgdGhpcy5fcG9zaXRpb25zLmxlbmd0aCAmJiA1MCA8IHQgLSB0aGlzLl90aW1lc1swXTspIHRoaXMuX3Bvc2l0aW9ucy5zaGlmdCgpLCB0aGlzLl90aW1lcy5zaGlmdCgpCiAgICAgICAgfSwKICAgICAgICBfb25ab29tRW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9tYXAuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIpLAogICAgICAgICAgICAgICAgaSA9IHRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQoWzAsIDBdKTsKICAgICAgICAgICAgdGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0ID0gaS5zdWJ0cmFjdCh0KS54LCB0aGlzLl93b3JsZFdpZHRoID0gdGhpcy5fbWFwLmdldFBpeGVsV29ybGRCb3VuZHMoKS5nZXRTaXplKCkueAogICAgICAgIH0sCiAgICAgICAgX3Zpc2NvdXNMaW1pdDogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICByZXR1cm4gdCAtICh0IC0gaSkgKiB0aGlzLl92aXNjb3NpdHkKICAgICAgICB9LAogICAgICAgIF9vblByZURyYWdMaW1pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzLl92aXNjb3NpdHkgJiYgdGhpcy5fb2Zmc2V0TGltaXQpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3Muc3VidHJhY3QodGhpcy5fZHJhZ2dhYmxlLl9zdGFydFBvcyksCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX29mZnNldExpbWl0OwogICAgICAgICAgICAgICAgdC54IDwgaS5taW4ueCAmJiAodC54ID0gdGhpcy5fdmlzY291c0xpbWl0KHQueCwgaS5taW4ueCkpLCB0LnkgPCBpLm1pbi55ICYmICh0LnkgPSB0aGlzLl92aXNjb3VzTGltaXQodC55LCBpLm1pbi55KSksIHQueCA+IGkubWF4LnggJiYgKHQueCA9IHRoaXMuX3Zpc2NvdXNMaW1pdCh0LngsIGkubWF4LngpKSwgdC55ID4gaS5tYXgueSAmJiAodC55ID0gdGhpcy5fdmlzY291c0xpbWl0KHQueSwgaS5tYXgueSkpLCB0aGlzLl9kcmFnZ2FibGUuX25ld1BvcyA9IHRoaXMuX2RyYWdnYWJsZS5fc3RhcnRQb3MuYWRkKHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIF9vblByZURyYWdXcmFwOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl93b3JsZFdpZHRoLAogICAgICAgICAgICAgICAgaSA9IE1hdGgucm91bmQodCAvIDIpLAogICAgICAgICAgICAgICAgZSA9IHRoaXMuX2luaXRpYWxXb3JsZE9mZnNldCwKICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy54LAogICAgICAgICAgICAgICAgbyA9IChuIC0gaSArIGUpICUgdCArIGkgLSBlLAogICAgICAgICAgICAgICAgcyA9IChuICsgaSArIGUpICUgdCAtIGkgLSBlLAogICAgICAgICAgICAgICAgciA9IE1hdGguYWJzKG8gKyBlKSA8IE1hdGguYWJzKHMgKyBlKSA/IG8gOiBzOwogICAgICAgICAgICB0aGlzLl9kcmFnZ2FibGUuX2Fic1BvcyA9IHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zLmNsb25lKCksIHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zLnggPSByCiAgICAgICAgfSwKICAgICAgICBfb25EcmFnRW5kOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5fbWFwLAogICAgICAgICAgICAgICAgZSA9IGkub3B0aW9ucywKICAgICAgICAgICAgICAgIG4gPSAhZS5pbmVydGlhIHx8IHRoaXMuX3RpbWVzLmxlbmd0aCA8IDI7CiAgICAgICAgICAgIGlmIChpLmZpcmUoImRyYWdlbmQiLCB0KSwgbikgaS5maXJlKCJtb3ZlZW5kIik7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fcHJ1bmVQb3NpdGlvbnMoK25ldyBEYXRlKTsKICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5fbGFzdFBvcy5zdWJ0cmFjdCh0aGlzLl9wb3NpdGlvbnNbMF0pLAogICAgICAgICAgICAgICAgICAgIHMgPSAodGhpcy5fbGFzdFRpbWUgLSB0aGlzLl90aW1lc1swXSkgLyAxZTMsCiAgICAgICAgICAgICAgICAgICAgciA9IGUuZWFzZUxpbmVhcml0eSwKICAgICAgICAgICAgICAgICAgICBhID0gby5tdWx0aXBseUJ5KHIgLyBzKSwKICAgICAgICAgICAgICAgICAgICBoID0gYS5kaXN0YW5jZVRvKFswLCAwXSksCiAgICAgICAgICAgICAgICAgICAgdSA9IE1hdGgubWluKGUuaW5lcnRpYU1heFNwZWVkLCBoKSwKICAgICAgICAgICAgICAgICAgICBsID0gYS5tdWx0aXBseUJ5KHUgLyBoKSwKICAgICAgICAgICAgICAgICAgICBjID0gdSAvIChlLmluZXJ0aWFEZWNlbGVyYXRpb24gKiByKSwKICAgICAgICAgICAgICAgICAgICBfID0gbC5tdWx0aXBseUJ5KC1jIC8gMikucm91bmQoKTsKICAgICAgICAgICAgICAgIF8ueCB8fCBfLnkgPyAoXyA9IGkuX2xpbWl0T2Zmc2V0KF8sIGkub3B0aW9ucy5tYXhCb3VuZHMpLCBNKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGkucGFuQnkoXywgewogICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogYywKICAgICAgICAgICAgICAgICAgICAgICAgZWFzZUxpbmVhcml0eTogciwKICAgICAgICAgICAgICAgICAgICAgICAgbm9Nb3ZlU3RhcnQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlOiAhMAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSkgOiBpLmZpcmUoIm1vdmVlbmQiKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICBKaS5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsICJkcmFnZ2luZyIsIHduKSwgSmkubWVyZ2VPcHRpb25zKHsKICAgICAgICBrZXlib2FyZDogITAsCiAgICAgICAga2V5Ym9hcmRQYW5EZWx0YTogODAKICAgIH0pOwogICAgdmFyIFBuID0gb2UuZXh0ZW5kKHsKICAgICAgICBrZXlDb2RlczogewogICAgICAgICAgICBsZWZ0OiBbMzddLAogICAgICAgICAgICByaWdodDogWzM5XSwKICAgICAgICAgICAgZG93bjogWzQwXSwKICAgICAgICAgICAgdXA6IFszOF0sCiAgICAgICAgICAgIHpvb21JbjogWzE4NywgMTA3LCA2MSwgMTcxXSwKICAgICAgICAgICAgem9vbU91dDogWzE4OSwgMTA5LCA1NCwgMTczXQogICAgICAgIH0sCiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICB0aGlzLl9tYXAgPSB0LCB0aGlzLl9zZXRQYW5EZWx0YSh0Lm9wdGlvbnMua2V5Ym9hcmRQYW5EZWx0YSksIHRoaXMuX3NldFpvb21EZWx0YSh0Lm9wdGlvbnMuem9vbURlbHRhKQogICAgICAgIH0sCiAgICAgICAgYWRkSG9va3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX21hcC5fY29udGFpbmVyOwogICAgICAgICAgICB0LnRhYkluZGV4IDw9IDAgJiYgKHQudGFiSW5kZXggPSAiMCIpLCBFaSh0LCB7CiAgICAgICAgICAgICAgICBmb2N1czogdGhpcy5fb25Gb2N1cywKICAgICAgICAgICAgICAgIGJsdXI6IHRoaXMuX29uQmx1ciwKICAgICAgICAgICAgICAgIG1vdXNlZG93bjogdGhpcy5fb25Nb3VzZURvd24KICAgICAgICAgICAgfSwgdGhpcyksIHRoaXMuX21hcC5vbih7CiAgICAgICAgICAgICAgICBmb2N1czogdGhpcy5fYWRkSG9va3MsCiAgICAgICAgICAgICAgICBibHVyOiB0aGlzLl9yZW1vdmVIb29rcwogICAgICAgICAgICB9LCB0aGlzKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlSG9va3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLl9yZW1vdmVIb29rcygpLCBCaSh0aGlzLl9tYXAuX2NvbnRhaW5lciwgewogICAgICAgICAgICAgICAgZm9jdXM6IHRoaXMuX29uRm9jdXMsCiAgICAgICAgICAgICAgICBibHVyOiB0aGlzLl9vbkJsdXIsCiAgICAgICAgICAgICAgICBtb3VzZWRvd246IHRoaXMuX29uTW91c2VEb3duCiAgICAgICAgICAgIH0sIHRoaXMpLCB0aGlzLl9tYXAub2ZmKHsKICAgICAgICAgICAgICAgIGZvY3VzOiB0aGlzLl9hZGRIb29rcywKICAgICAgICAgICAgICAgIGJsdXI6IHRoaXMuX3JlbW92ZUhvb2tzCiAgICAgICAgICAgIH0sIHRoaXMpCiAgICAgICAgfSwKICAgICAgICBfb25Nb3VzZURvd246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzZWQpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuYm9keSwKICAgICAgICAgICAgICAgICAgICBpID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIGUgPSB0LnNjcm9sbFRvcCB8fCBpLnNjcm9sbFRvcCwKICAgICAgICAgICAgICAgICAgICBuID0gdC5zY3JvbGxMZWZ0IHx8IGkuc2Nyb2xsTGVmdDsKICAgICAgICAgICAgICAgIHRoaXMuX21hcC5fY29udGFpbmVyLmZvY3VzKCksIHdpbmRvdy5zY3JvbGxUbyhuLCBlKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfb25Gb2N1czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX2ZvY3VzZWQgPSAhMCwgdGhpcy5fbWFwLmZpcmUoImZvY3VzIikKICAgICAgICB9LAogICAgICAgIF9vbkJsdXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLl9mb2N1c2VkID0gITEsIHRoaXMuX21hcC5maXJlKCJibHVyIikKICAgICAgICB9LAogICAgICAgIF9zZXRQYW5EZWx0YTogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSwgZSwgbiA9IHRoaXMuX3BhbktleXMgPSB7fSwKICAgICAgICAgICAgICAgIG8gPSB0aGlzLmtleUNvZGVzOwogICAgICAgICAgICBmb3IgKGkgPSAwLCBlID0gby5sZWZ0Lmxlbmd0aDsgaSA8IGU7IGkrKykgbltvLmxlZnRbaV1dID0gWy0xICogdCwgMF07CiAgICAgICAgICAgIGZvciAoaSA9IDAsIGUgPSBvLnJpZ2h0Lmxlbmd0aDsgaSA8IGU7IGkrKykgbltvLnJpZ2h0W2ldXSA9IFt0LCAwXTsKICAgICAgICAgICAgZm9yIChpID0gMCwgZSA9IG8uZG93bi5sZW5ndGg7IGkgPCBlOyBpKyspIG5bby5kb3duW2ldXSA9IFswLCB0XTsKICAgICAgICAgICAgZm9yIChpID0gMCwgZSA9IG8udXAubGVuZ3RoOyBpIDwgZTsgaSsrKSBuW28udXBbaV1dID0gWzAsIC0xICogdF0KICAgICAgICB9LAogICAgICAgIF9zZXRab29tRGVsdGE6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGksIGUsIG4gPSB0aGlzLl96b29tS2V5cyA9IHt9LAogICAgICAgICAgICAgICAgbyA9IHRoaXMua2V5Q29kZXM7CiAgICAgICAgICAgIGZvciAoaSA9IDAsIGUgPSBvLnpvb21Jbi5sZW5ndGg7IGkgPCBlOyBpKyspIG5bby56b29tSW5baV1dID0gdDsKICAgICAgICAgICAgZm9yIChpID0gMCwgZSA9IG8uem9vbU91dC5sZW5ndGg7IGkgPCBlOyBpKyspIG5bby56b29tT3V0W2ldXSA9IC10CiAgICAgICAgfSwKICAgICAgICBfYWRkSG9va3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBFaShkb2N1bWVudCwgImtleWRvd24iLCB0aGlzLl9vbktleURvd24sIHRoaXMpCiAgICAgICAgfSwKICAgICAgICBfcmVtb3ZlSG9va3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBCaShkb2N1bWVudCwgImtleWRvd24iLCB0aGlzLl9vbktleURvd24sIHRoaXMpCiAgICAgICAgfSwKICAgICAgICBfb25LZXlEb3duOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICghKHQuYWx0S2V5IHx8IHQuY3RybEtleSB8fCB0Lm1ldGFLZXkpKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgZSA9IHQua2V5Q29kZSwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5fbWFwOwogICAgICAgICAgICAgICAgaWYgKGUgaW4gdGhpcy5fcGFuS2V5cykgbi5fcGFuQW5pbSAmJiBuLl9wYW5BbmltLl9pblByb2dyZXNzIHx8IChpID0gdGhpcy5fcGFuS2V5c1tlXSwgdC5zaGlmdEtleSAmJiAoaSA9IEkoaSkubXVsdGlwbHlCeSgzKSksIG4ucGFuQnkoaSksIG4ub3B0aW9ucy5tYXhCb3VuZHMgJiYgbi5wYW5JbnNpZGVCb3VuZHMobi5vcHRpb25zLm1heEJvdW5kcykpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoZSBpbiB0aGlzLl96b29tS2V5cykgbi5zZXRab29tKG4uZ2V0Wm9vbSgpICsgKHQuc2hpZnRLZXkgPyAzIDogMSkgKiB0aGlzLl96b29tS2V5c1tlXSk7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMjcgIT09IGUgfHwgIW4uX3BvcHVwIHx8ICFuLl9wb3B1cC5vcHRpb25zLmNsb3NlT25Fc2NhcGVLZXkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBuLmNsb3NlUG9wdXAoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgamkodCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgSmkuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCAia2V5Ym9hcmQiLCBQbiksIEppLm1lcmdlT3B0aW9ucyh7CiAgICAgICAgc2Nyb2xsV2hlZWxab29tOiAhMCwKICAgICAgICB3aGVlbERlYm91bmNlVGltZTogNDAsCiAgICAgICAgd2hlZWxQeFBlclpvb21MZXZlbDogNjAKICAgIH0pOwogICAgdmFyIExuID0gb2UuZXh0ZW5kKHsKICAgICAgICBhZGRIb29rczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIEVpKHRoaXMuX21hcC5fY29udGFpbmVyLCAibW91c2V3aGVlbCIsIHRoaXMuX29uV2hlZWxTY3JvbGwsIHRoaXMpLCB0aGlzLl9kZWx0YSA9IDAKICAgICAgICB9LAogICAgICAgIHJlbW92ZUhvb2tzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgQmkodGhpcy5fbWFwLl9jb250YWluZXIsICJtb3VzZXdoZWVsIiwgdGhpcy5fb25XaGVlbFNjcm9sbCwgdGhpcykKICAgICAgICB9LAogICAgICAgIF9vbldoZWVsU2Nyb2xsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpID0gRmkodCksCiAgICAgICAgICAgICAgICBlID0gdGhpcy5fbWFwLm9wdGlvbnMud2hlZWxEZWJvdW5jZVRpbWU7CiAgICAgICAgICAgIHRoaXMuX2RlbHRhICs9IGksIHRoaXMuX2xhc3RNb3VzZVBvcyA9IHRoaXMuX21hcC5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KSwgdGhpcy5fc3RhcnRUaW1lIHx8ICh0aGlzLl9zdGFydFRpbWUgPSArbmV3IERhdGUpOwogICAgICAgICAgICB2YXIgbiA9IE1hdGgubWF4KGUgLSAoK25ldyBEYXRlIC0gdGhpcy5fc3RhcnRUaW1lKSwgMCk7CiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lciksIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dChhKHRoaXMuX3BlcmZvcm1ab29tLCB0aGlzKSwgbiksIGppKHQpCiAgICAgICAgfSwKICAgICAgICBfcGVyZm9ybVpvb206IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX21hcCwKICAgICAgICAgICAgICAgIGkgPSB0LmdldFpvb20oKSwKICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9tYXAub3B0aW9ucy56b29tU25hcCB8fCAwOwogICAgICAgICAgICB0Ll9zdG9wKCk7CiAgICAgICAgICAgIHZhciBuID0gdGhpcy5fZGVsdGEgLyAoNCAqIHRoaXMuX21hcC5vcHRpb25zLndoZWVsUHhQZXJab29tTGV2ZWwpLAogICAgICAgICAgICAgICAgbyA9IDQgKiBNYXRoLmxvZygyIC8gKDEgKyBNYXRoLmV4cCgtTWF0aC5hYnMobikpKSkgLyBNYXRoLkxOMiwKICAgICAgICAgICAgICAgIHMgPSBlID8gTWF0aC5jZWlsKG8gLyBlKSAqIGUgOiBvLAogICAgICAgICAgICAgICAgciA9IHQuX2xpbWl0Wm9vbShpICsgKDAgPCB0aGlzLl9kZWx0YSA/IHMgOiAtcykpIC0gaTsKICAgICAgICAgICAgdGhpcy5fZGVsdGEgPSAwLCB0aGlzLl9zdGFydFRpbWUgPSBudWxsLCByICYmICgiY2VudGVyIiA9PT0gdC5vcHRpb25zLnNjcm9sbFdoZWVsWm9vbSA/IHQuc2V0Wm9vbShpICsgcikgOiB0LnNldFpvb21Bcm91bmQodGhpcy5fbGFzdE1vdXNlUG9zLCBpICsgcikpCiAgICAgICAgfQogICAgfSk7CiAgICBKaS5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsICJzY3JvbGxXaGVlbFpvb20iLCBMbiksIEppLm1lcmdlT3B0aW9ucyh7CiAgICAgICAgdGFwOiAhMCwKICAgICAgICB0YXBUb2xlcmFuY2U6IDE1CiAgICB9KTsKICAgIHZhciBibiA9IG9lLmV4dGVuZCh7CiAgICAgICAgYWRkSG9va3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBFaSh0aGlzLl9tYXAuX2NvbnRhaW5lciwgInRvdWNoc3RhcnQiLCB0aGlzLl9vbkRvd24sIHRoaXMpCiAgICAgICAgfSwKICAgICAgICByZW1vdmVIb29rczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIEJpKHRoaXMuX21hcC5fY29udGFpbmVyLCAidG91Y2hzdGFydCIsIHRoaXMuX29uRG93biwgdGhpcykKICAgICAgICB9LAogICAgICAgIF9vbkRvd246IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKHQudG91Y2hlcykgewogICAgICAgICAgICAgICAgaWYgKERpKHQpLCB0aGlzLl9maXJlQ2xpY2sgPSAhMCwgMSA8IHQudG91Y2hlcy5sZW5ndGgpIHJldHVybiB0aGlzLl9maXJlQ2xpY2sgPSAhMSwgdm9pZCBjbGVhclRpbWVvdXQodGhpcy5faG9sZFRpbWVvdXQpOwogICAgICAgICAgICAgICAgdmFyIGkgPSB0LnRvdWNoZXNbMF0sCiAgICAgICAgICAgICAgICAgICAgZSA9IGkudGFyZ2V0OwogICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRQb3MgPSB0aGlzLl9uZXdQb3MgPSBuZXcgQihpLmNsaWVudFgsIGkuY2xpZW50WSksIGUudGFnTmFtZSAmJiAiYSIgPT09IGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpICYmIHBpKGUsICJsZWFmbGV0LWFjdGl2ZSIpLCB0aGlzLl9ob2xkVGltZW91dCA9IHNldFRpbWVvdXQoYShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc1RhcFZhbGlkKCkgJiYgKHRoaXMuX2ZpcmVDbGljayA9ICExLCB0aGlzLl9vblVwKCksIHRoaXMuX3NpbXVsYXRlRXZlbnQoImNvbnRleHRtZW51IiwgaSkpCiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgMWUzKSwgdGhpcy5fc2ltdWxhdGVFdmVudCgibW91c2Vkb3duIiwgaSksIEVpKGRvY3VtZW50LCB7CiAgICAgICAgICAgICAgICAgICAgdG91Y2htb3ZlOiB0aGlzLl9vbk1vdmUsCiAgICAgICAgICAgICAgICAgICAgdG91Y2hlbmQ6IHRoaXMuX29uVXAKICAgICAgICAgICAgICAgIH0sIHRoaXMpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIF9vblVwOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChjbGVhclRpbWVvdXQodGhpcy5faG9sZFRpbWVvdXQpLCBCaShkb2N1bWVudCwgewogICAgICAgICAgICAgICAgICAgIHRvdWNobW92ZTogdGhpcy5fb25Nb3ZlLAogICAgICAgICAgICAgICAgICAgIHRvdWNoZW5kOiB0aGlzLl9vblVwCiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgdGhpcy5fZmlyZUNsaWNrICYmIHQgJiYgdC5jaGFuZ2VkVG91Y2hlcykgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0LmNoYW5nZWRUb3VjaGVzWzBdLAogICAgICAgICAgICAgICAgICAgIGUgPSBpLnRhcmdldDsKICAgICAgICAgICAgICAgIGUgJiYgZS50YWdOYW1lICYmICJhIiA9PT0gZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgJiYgbWkoZSwgImxlYWZsZXQtYWN0aXZlIiksIHRoaXMuX3NpbXVsYXRlRXZlbnQoIm1vdXNldXAiLCBpKSwgdGhpcy5faXNUYXBWYWxpZCgpICYmIHRoaXMuX3NpbXVsYXRlRXZlbnQoImNsaWNrIiwgaSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX2lzVGFwVmFsaWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbmV3UG9zLmRpc3RhbmNlVG8odGhpcy5fc3RhcnRQb3MpIDw9IHRoaXMuX21hcC5vcHRpb25zLnRhcFRvbGVyYW5jZQogICAgICAgIH0sCiAgICAgICAgX29uTW92ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgaSA9IHQudG91Y2hlc1swXTsKICAgICAgICAgICAgdGhpcy5fbmV3UG9zID0gbmV3IEIoaS5jbGllbnRYLCBpLmNsaWVudFkpLCB0aGlzLl9zaW11bGF0ZUV2ZW50KCJtb3VzZW1vdmUiLCBpKQogICAgICAgIH0sCiAgICAgICAgX3NpbXVsYXRlRXZlbnQ6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKICAgICAgICAgICAgZS5fc2ltdWxhdGVkID0gITAsIGkudGFyZ2V0Ll9zaW11bGF0ZWRDbGljayA9ICEwLCBlLmluaXRNb3VzZUV2ZW50KHQsICEwLCAhMCwgd2luZG93LCAxLCBpLnNjcmVlblgsIGkuc2NyZWVuWSwgaS5jbGllbnRYLCBpLmNsaWVudFksICExLCAhMSwgITEsICExLCAwLCBudWxsKSwgaS50YXJnZXQuZGlzcGF0Y2hFdmVudChlKQogICAgICAgIH0KICAgIH0pOwogICAgVHQgJiYgIWJ0ICYmIEppLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwgInRhcCIsIGJuKSwgSmkubWVyZ2VPcHRpb25zKHsKICAgICAgICB0b3VjaFpvb206IFR0ICYmICFydCwKICAgICAgICBib3VuY2VBdFpvb21MaW1pdHM6ICEwCiAgICB9KTsKICAgIHZhciBUbiA9IG9lLmV4dGVuZCh7CiAgICAgICAgYWRkSG9va3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBwaSh0aGlzLl9tYXAuX2NvbnRhaW5lciwgImxlYWZsZXQtdG91Y2gtem9vbSIpLCBFaSh0aGlzLl9tYXAuX2NvbnRhaW5lciwgInRvdWNoc3RhcnQiLCB0aGlzLl9vblRvdWNoU3RhcnQsIHRoaXMpCiAgICAgICAgfSwKICAgICAgICByZW1vdmVIb29rczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG1pKHRoaXMuX21hcC5fY29udGFpbmVyLCAibGVhZmxldC10b3VjaC16b29tIiksIEJpKHRoaXMuX21hcC5fY29udGFpbmVyLCAidG91Y2hzdGFydCIsIHRoaXMuX29uVG91Y2hTdGFydCwgdGhpcykKICAgICAgICB9LAogICAgICAgIF9vblRvdWNoU3RhcnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9tYXA7CiAgICAgICAgICAgIGlmICh0LnRvdWNoZXMgJiYgMiA9PT0gdC50b3VjaGVzLmxlbmd0aCAmJiAhaS5fYW5pbWF0aW5nWm9vbSAmJiAhdGhpcy5fem9vbWluZykgewogICAgICAgICAgICAgICAgdmFyIGUgPSBpLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1swXSksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodC50b3VjaGVzWzFdKTsKICAgICAgICAgICAgICAgIHRoaXMuX2NlbnRlclBvaW50ID0gaS5nZXRTaXplKCkuX2RpdmlkZUJ5KDIpLCB0aGlzLl9zdGFydExhdExuZyA9IGkuY29udGFpbmVyUG9pbnRUb0xhdExuZyh0aGlzLl9jZW50ZXJQb2ludCksICJjZW50ZXIiICE9PSBpLm9wdGlvbnMudG91Y2hab29tICYmICh0aGlzLl9waW5jaFN0YXJ0TGF0TG5nID0gaS5jb250YWluZXJQb2ludFRvTGF0TG5nKGUuYWRkKG4pLl9kaXZpZGVCeSgyKSkpLCB0aGlzLl9zdGFydERpc3QgPSBlLmRpc3RhbmNlVG8obiksIHRoaXMuX3N0YXJ0Wm9vbSA9IGkuZ2V0Wm9vbSgpLCB0aGlzLl9tb3ZlZCA9ICExLCB0aGlzLl96b29taW5nID0gITAsIGkuX3N0b3AoKSwgRWkoZG9jdW1lbnQsICJ0b3VjaG1vdmUiLCB0aGlzLl9vblRvdWNoTW92ZSwgdGhpcyksIEVpKGRvY3VtZW50LCAidG91Y2hlbmQiLCB0aGlzLl9vblRvdWNoRW5kLCB0aGlzKSwgRGkodCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX29uVG91Y2hNb3ZlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICh0LnRvdWNoZXMgJiYgMiA9PT0gdC50b3VjaGVzLmxlbmd0aCAmJiB0aGlzLl96b29taW5nKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX21hcCwKICAgICAgICAgICAgICAgICAgICBlID0gaS5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0LnRvdWNoZXNbMF0pLAogICAgICAgICAgICAgICAgICAgIG4gPSBpLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1sxXSksCiAgICAgICAgICAgICAgICAgICAgbyA9IGUuZGlzdGFuY2VUbyhuKSAvIHRoaXMuX3N0YXJ0RGlzdDsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl96b29tID0gaS5nZXRTY2FsZVpvb20obywgdGhpcy5fc3RhcnRab29tKSwgIWkub3B0aW9ucy5ib3VuY2VBdFpvb21MaW1pdHMgJiYgKHRoaXMuX3pvb20gPCBpLmdldE1pblpvb20oKSAmJiBvIDwgMSB8fCB0aGlzLl96b29tID4gaS5nZXRNYXhab29tKCkgJiYgMSA8IG8pICYmICh0aGlzLl96b29tID0gaS5fbGltaXRab29tKHRoaXMuX3pvb20pKSwgImNlbnRlciIgPT09IGkub3B0aW9ucy50b3VjaFpvb20pIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2VudGVyID0gdGhpcy5fc3RhcnRMYXRMbmcsIDEgPT0gbykgcmV0dXJuCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gZS5fYWRkKG4pLl9kaXZpZGVCeSgyKS5fc3VidHJhY3QodGhpcy5fY2VudGVyUG9pbnQpOwogICAgICAgICAgICAgICAgICAgIGlmICgxID09IG8gJiYgMCA9PT0gcy54ICYmIDAgPT09IHMueSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NlbnRlciA9IGkudW5wcm9qZWN0KGkucHJvamVjdCh0aGlzLl9waW5jaFN0YXJ0TGF0TG5nLCB0aGlzLl96b29tKS5zdWJ0cmFjdChzKSwgdGhpcy5fem9vbSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMuX21vdmVkIHx8IChpLl9tb3ZlU3RhcnQoITAsICExKSwgdGhpcy5fbW92ZWQgPSAhMCksIEModGhpcy5fYW5pbVJlcXVlc3QpOwogICAgICAgICAgICAgICAgdmFyIHIgPSBhKGkuX21vdmUsIGksIHRoaXMuX2NlbnRlciwgdGhpcy5fem9vbSwgewogICAgICAgICAgICAgICAgICAgIHBpbmNoOiAhMCwKICAgICAgICAgICAgICAgICAgICByb3VuZDogITEKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdGhpcy5fYW5pbVJlcXVlc3QgPSBNKHIsIHRoaXMsICEwKSwgRGkodCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgX29uVG91Y2hFbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLl9tb3ZlZCAmJiB0aGlzLl96b29taW5nID8gKHRoaXMuX3pvb21pbmcgPSAhMSwgQyh0aGlzLl9hbmltUmVxdWVzdCksIEJpKGRvY3VtZW50LCAidG91Y2htb3ZlIiwgdGhpcy5fb25Ub3VjaE1vdmUpLCBCaShkb2N1bWVudCwgInRvdWNoZW5kIiwgdGhpcy5fb25Ub3VjaEVuZCksIHRoaXMuX21hcC5vcHRpb25zLnpvb21BbmltYXRpb24gPyB0aGlzLl9tYXAuX2FuaW1hdGVab29tKHRoaXMuX2NlbnRlciwgdGhpcy5fbWFwLl9saW1pdFpvb20odGhpcy5fem9vbSksICEwLCB0aGlzLl9tYXAub3B0aW9ucy56b29tU25hcCkgOiB0aGlzLl9tYXAuX3Jlc2V0Vmlldyh0aGlzLl9jZW50ZXIsIHRoaXMuX21hcC5fbGltaXRab29tKHRoaXMuX3pvb20pKSkgOiB0aGlzLl96b29taW5nID0gITEKICAgICAgICB9CiAgICB9KTsKICAgIEppLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwgInRvdWNoWm9vbSIsIFRuKSwgSmkuQm94Wm9vbSA9IHluLCBKaS5Eb3VibGVDbGlja1pvb20gPSB4biwgSmkuRHJhZyA9IHduLCBKaS5LZXlib2FyZCA9IFBuLCBKaS5TY3JvbGxXaGVlbFpvb20gPSBMbiwgSmkuVGFwID0gYm4sIEppLlRvdWNoWm9vbSA9IFRuLCBPYmplY3QuZnJlZXplID0gaSwgdC52ZXJzaW9uID0gIjEuNS4xK0hFQUQuMmUzZTBmZiIsIHQuQ29udHJvbCA9IFFpLCB0LmNvbnRyb2wgPSAkaSwgdC5Ccm93c2VyID0gQnQsIHQuRXZlbnRlZCA9IGssIHQuTWl4aW4gPSByZSwgdC5VdGlsID0gUywgdC5DbGFzcyA9IFosIHQuSGFuZGxlciA9IG9lLCB0LmV4dGVuZCA9IGgsIHQuYmluZCA9IGEsIHQuc3RhbXAgPSB1LCB0LnNldE9wdGlvbnMgPSBwLCB0LkRvbUV2ZW50ID0gWWksIHQuRG9tVXRpbCA9IFppLCB0LlBvc0FuaW1hdGlvbiA9IFhpLCB0LkRyYWdnYWJsZSA9IGxlLCB0LkxpbmVVdGlsID0geWUsIHQuUG9seVV0aWwgPSBQZSwgdC5Qb2ludCA9IEIsIHQucG9pbnQgPSBJLCB0LkJvdW5kcyA9IE8sIHQuYm91bmRzID0gUiwgdC5UcmFuc2Zvcm1hdGlvbiA9IEcsIHQudHJhbnNmb3JtYXRpb24gPSBLLCB0LlByb2plY3Rpb24gPSBUZSwgdC5MYXRMbmcgPSBqLCB0LmxhdExuZyA9IFcsIHQuTGF0TG5nQm91bmRzID0gTiwgdC5sYXRMbmdCb3VuZHMgPSBELCB0LkNSUyA9IEYsIHQuR2VvSlNPTiA9IFdlLCB0Lmdlb0pTT04gPSBYZSwgdC5nZW9Kc29uID0gSmUsIHQuTGF5ZXIgPSBTZSwgdC5MYXllckdyb3VwID0gWmUsIHQubGF5ZXJHcm91cCA9IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICByZXR1cm4gbmV3IFplKHQsIGkpCiAgICB9LCB0LkZlYXR1cmVHcm91cCA9IEVlLCB0LmZlYXR1cmVHcm91cCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICByZXR1cm4gbmV3IEVlKHQpCiAgICB9LCB0LkltYWdlT3ZlcmxheSA9ICRlLCB0LmltYWdlT3ZlcmxheSA9IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICByZXR1cm4gbmV3ICRlKHQsIGksIGUpCiAgICB9LCB0LlZpZGVvT3ZlcmxheSA9IFFlLCB0LnZpZGVvT3ZlcmxheSA9IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICByZXR1cm4gbmV3IFFlKHQsIGksIGUpCiAgICB9LCB0LlNWR092ZXJsYXkgPSB0biwgdC5zdmdPdmVybGF5ID0gZnVuY3Rpb24odCwgaSwgZSkgewogICAgICAgIHJldHVybiBuZXcgdG4odCwgaSwgZSkKICAgIH0sIHQuRGl2T3ZlcmxheSA9IGVuLCB0LlBvcHVwID0gbm4sIHQucG9wdXAgPSBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBubih0LCBpKQogICAgfSwgdC5Ub29sdGlwID0gb24sIHQudG9vbHRpcCA9IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICByZXR1cm4gbmV3IG9uKHQsIGkpCiAgICB9LCB0Lkljb24gPSBrZSwgdC5pY29uID0gZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiBuZXcga2UodCkKICAgIH0sIHQuRGl2SWNvbiA9IHNuLCB0LmRpdkljb24gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIG5ldyBzbih0KQogICAgfSwgdC5NYXJrZXIgPSBJZSwgdC5tYXJrZXIgPSBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJZSh0LCBpKQogICAgfSwgdC5UaWxlTGF5ZXIgPSBhbiwgdC50aWxlTGF5ZXIgPSBobiwgdC5HcmlkTGF5ZXIgPSBybiwgdC5ncmlkTGF5ZXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIG5ldyBybih0KQogICAgfSwgdC5TVkcgPSBmbiwgdC5zdmcgPSBnbiwgdC5SZW5kZXJlciA9IGxuLCB0LkNhbnZhcyA9IGNuLCB0LmNhbnZhcyA9IF9uLCB0LlBhdGggPSBPZSwgdC5DaXJjbGVNYXJrZXIgPSBSZSwgdC5jaXJjbGVNYXJrZXIgPSBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBSZSh0LCBpKQogICAgfSwgdC5DaXJjbGUgPSBOZSwgdC5jaXJjbGUgPSBmdW5jdGlvbih0LCBpLCBlKSB7CiAgICAgICAgcmV0dXJuIG5ldyBOZSh0LCBpLCBlKQogICAgfSwgdC5Qb2x5bGluZSA9IERlLCB0LnBvbHlsaW5lID0gZnVuY3Rpb24odCwgaSkgewogICAgICAgIHJldHVybiBuZXcgRGUodCwgaSkKICAgIH0sIHQuUG9seWdvbiA9IGplLCB0LnBvbHlnb24gPSBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBqZSh0LCBpKQogICAgfSwgdC5SZWN0YW5nbGUgPSB2biwgdC5yZWN0YW5nbGUgPSBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgcmV0dXJuIG5ldyB2bih0LCBpKQogICAgfSwgdC5NYXAgPSBKaSwgdC5tYXAgPSBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBKaSh0LCBpKQogICAgfTsKICAgIHZhciB6biA9IHdpbmRvdy5MOwogICAgdC5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHdpbmRvdy5MID0gem4sIHRoaXMKICAgIH0sIHdpbmRvdy5MID0gdAp9KTs="}},"time_used":1142,"timings":{"blocked":949,"dns":0,"connect":0,"send":0,"wait":96,"receive":97,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/Control.Geocoder.js?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.472Z","timestamp":1785145482472,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/leaflet/Control.Geocoder.js?ver=1.5.1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 59378\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":59378,"size_decoded":59595,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text","md5":"639a239fee3339560736708fe8c11acb","sha1":"75760de614cb630b1395f718256791c0244c77dc","sha256":"86d34d924dfac0aa3bd5c4f902572fdfbadeb6ef04e6fb5fa1d4e8a898ecbc36","sha512":"f120a067ec8f3bfa4d4164ed83c7959dc451fa651556997a958e500f7acc27e06541ecc909f2a520234d4fcfafb074e9077d83f1c758f8fb1f185a0aa0617b16","ssdeep":"384:JPfMuR2fIrp94wqBme2mLNLENA/i/or7rh2CzIFcIHrLrQiLT34zsfifzg:pMsQJwNw3AC8ZHx4zsfifs","tlshash":"1f433e8eaab62254419370785faf5008b679e1476d0cad183d5c93c85f8dc3cb6faee4","first_seen":"2026-07-27T08:06:56.385381Z","last_seen":"2026-07-27T09:45:50.827289Z","times_seen":3,"resource_available":true,"data":"LyogQHByZXNlcnZlCiAqIExlYWZsZXQgQ29udHJvbCBHZW9jb2RlciAxLjguMgogKiBodHRwczovL2dpdGh1Yi5jb20vcGVybGllZG1hbi9sZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXIKICoKICogQ29weXJpZ2h0IChjKSAyMDEyIHNhM20gKGh0dHBzOi8vZ2l0aHViLmNvbS9zYTNtKQogKiBDb3B5cmlnaHQgKGMpIDIwMTggUGVyIExpZWRtYW4KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICovCgp0aGlzLkwgPSB0aGlzLkwgfHwge307CnRoaXMuTC5Db250cm9sID0gdGhpcy5MLkNvbnRyb2wgfHwge307CnRoaXMuTC5Db250cm9sLkdlb2NvZGVyID0gKGZ1bmN0aW9uKEwpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICBMID0gTCAmJiBMLmhhc093blByb3BlcnR5KCdkZWZhdWx0JykgPyBMWydkZWZhdWx0J10gOiBMOwoKICAgIHZhciBsYXN0Q2FsbGJhY2tJZCA9IDA7CgogICAgLy8gQWRhcHRlZCBmcm9tIGhhbmRsZWJhcnMuanMKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy8KICAgIHZhciBiYWRDaGFycyA9IC9bJjw+IidgXS9nOwogICAgdmFyIHBvc3NpYmxlID0gL1smPD4iJ2BdLzsKICAgIHZhciBlc2NhcGUgPSB7CiAgICAgICAgJyYnOiAnJmFtcDsnLAogICAgICAgICc8JzogJyZsdDsnLAogICAgICAgICc+JzogJyZndDsnLAogICAgICAgICciJzogJyZxdW90OycsCiAgICAgICAgIiciOiAnJiN4Mjc7JywKICAgICAgICAnYCc6ICcmI3g2MDsnCiAgICB9OwoKICAgIGZ1bmN0aW9uIGVzY2FwZUNoYXIoY2hyKSB7CiAgICAgICAgcmV0dXJuIGVzY2FwZVtjaHJdOwogICAgfQoKICAgIGZ1bmN0aW9uIGh0bWxFc2NhcGUoc3RyaW5nKSB7CiAgICAgICAgaWYgKHN0cmluZyA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9IGVsc2UgaWYgKCFzdHJpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cmluZyArICcnOwogICAgICAgIH0KCiAgICAgICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kCiAgICAgICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmCiAgICAgICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuCiAgICAgICAgc3RyaW5nID0gJycgKyBzdHJpbmc7CgogICAgICAgIGlmICghcG9zc2libGUudGVzdChzdHJpbmcpKSB7CiAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7CiAgICB9CgogICAgZnVuY3Rpb24ganNvbnAodXJsLCBwYXJhbXMsIGNhbGxiYWNrLCBjb250ZXh0LCBqc29ucFBhcmFtKSB7CiAgICAgICAgdmFyIGNhbGxiYWNrSWQgPSAnX2xfZ2VvY29kZXJfJyArIGxhc3RDYWxsYmFja0lkKys7CiAgICAgICAgcGFyYW1zW2pzb25wUGFyYW0gfHwgJ2NhbGxiYWNrJ10gPSBjYWxsYmFja0lkOwogICAgICAgIHdpbmRvd1tjYWxsYmFja0lkXSA9IEwuVXRpbC5iaW5kKGNhbGxiYWNrLCBjb250ZXh0KTsKICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzY3JpcHQuc3JjID0gdXJsICsgZ2V0UGFyYW1TdHJpbmcocGFyYW1zKTsKICAgICAgICBzY3JpcHQuaWQgPSBjYWxsYmFja0lkOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRKU09OKHVybCwgcGFyYW1zLCBjYWxsYmFjaykgewogICAgICAgIHZhciB4bWxIdHRwID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeG1sSHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKHhtbEh0dHAucmVhZHlTdGF0ZSAhPT0gNCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh4bWxIdHRwLnN0YXR1cyAhPT0gMjAwICYmIHhtbEh0dHAuc3RhdHVzICE9PSAzMDQpIHsKICAgICAgICAgICAgICAgIGNhbGxiYWNrKCcnKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYWxsYmFjayh4bWxIdHRwLnJlc3BvbnNlKTsKICAgICAgICB9OwogICAgICAgIHhtbEh0dHAub3BlbignR0VUJywgdXJsICsgZ2V0UGFyYW1TdHJpbmcocGFyYW1zKSwgdHJ1ZSk7CiAgICAgICAgeG1sSHR0cC5yZXNwb25zZVR5cGUgPSAnanNvbic7CiAgICAgICAgeG1sSHR0cC5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpOwogICAgICAgIHhtbEh0dHAuc2VuZChudWxsKTsKICAgIH0KCiAgICBmdW5jdGlvbiB0ZW1wbGF0ZShzdHIsIGRhdGEpIHsKICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1x7ICooW1x3X10rKSAqXH0vZywgZnVuY3Rpb24oc3RyLCBrZXkpIHsKICAgICAgICAgICAgdmFyIHZhbHVlID0gZGF0YVtrZXldOwogICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgdmFsdWUgPSAnJzsKICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUoZGF0YSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGh0bWxFc2NhcGUodmFsdWUpOwogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFBhcmFtU3RyaW5nKG9iaiwgZXhpc3RpbmdVcmwsIHVwcGVyY2FzZSkgewogICAgICAgIHZhciBwYXJhbXMgPSBbXTsKICAgICAgICBmb3IgKHZhciBpIGluIG9iaikgewogICAgICAgICAgICB2YXIga2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHVwcGVyY2FzZSA/IGkudG9VcHBlckNhc2UoKSA6IGkpOwogICAgICAgICAgICB2YXIgdmFsdWUgPSBvYmpbaV07CiAgICAgICAgICAgIGlmICghTC5VdGlsLmlzQXJyYXkodmFsdWUpKSB7CiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsdWUubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWVbal0pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gKCFleGlzdGluZ1VybCB8fCBleGlzdGluZ1VybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIHBhcmFtcy5qb2luKCcmJyk7CiAgICB9CgogICAgdmFyIEFyY0dpcyA9IEwuQ2xhc3MuZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHNlcnZpY2VfdXJsOiAnaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlcicKICAgICAgICB9LAoKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhY2Nlc3NUb2tlbiwgb3B0aW9ucykgewogICAgICAgICAgICBMLnNldE9wdGlvbnModGhpcywgb3B0aW9ucyk7CiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gYWNjZXNzVG9rZW47CiAgICAgICAgfSwKCiAgICAgICAgZ2VvY29kZTogZnVuY3Rpb24ocXVlcnksIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIHZhciBwYXJhbXMgPSB7CiAgICAgICAgICAgICAgICBTaW5nbGVMaW5lOiBxdWVyeSwKICAgICAgICAgICAgICAgIG91dEZpZWxkczogJ0FkZHJfVHlwZScsCiAgICAgICAgICAgICAgICBmb3JTdG9yYWdlOiBmYWxzZSwKICAgICAgICAgICAgICAgIG1heExvY2F0aW9uczogMTAsCiAgICAgICAgICAgICAgICBmOiAnanNvbicKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGlmICh0aGlzLl9rZXkgJiYgdGhpcy5fa2V5Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgcGFyYW1zLnRva2VuID0gdGhpcy5fa2V5OwogICAgICAgICAgICB9CgogICAgICAgICAgICBnZXRKU09OKAogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNlcnZpY2VfdXJsICsgJy9maW5kQWRkcmVzc0NhbmRpZGF0ZXMnLAogICAgICAgICAgICAgICAgTC5leHRlbmQocGFyYW1zLCB0aGlzLm9wdGlvbnMuZ2VvY29kaW5nUXVlcnlQYXJhbXMpLAogICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nLAogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmdCb3VuZHM7CgogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmNhbmRpZGF0ZXMgJiYgZGF0YS5jYW5kaWRhdGVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBkYXRhLmNhbmRpZGF0ZXMubGVuZ3RoIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2MgPSBkYXRhLmNhbmRpZGF0ZXNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmcgPSBMLmxhdExuZyhsb2MubG9jYXRpb24ueSwgbG9jLmxvY2F0aW9uLngpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzID0gTC5sYXRMbmdCb3VuZHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTC5sYXRMbmcobG9jLmV4dGVudC55bWF4LCBsb2MuZXh0ZW50LnhtYXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwubGF0TG5nKGxvYy5leHRlbnQueW1pbiwgbG9jLmV4dGVudC54bWluKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbG9jLmFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveDogbGF0TG5nQm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjogbGF0TG5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0sCgogICAgICAgIHN1Z2dlc3Q6IGZ1bmN0aW9uKHF1ZXJ5LCBjYiwgY29udGV4dCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5nZW9jb2RlKHF1ZXJ5LCBjYiwgY29udGV4dCk7CiAgICAgICAgfSwKCiAgICAgICAgcmV2ZXJzZTogZnVuY3Rpb24obG9jYXRpb24sIHNjYWxlLCBjYiwgY29udGV4dCkgewogICAgICAgICAgICB2YXIgcGFyYW1zID0gewogICAgICAgICAgICAgICAgbG9jYXRpb246IGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5sbmcpICsgJywnICsgZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmxhdCksCiAgICAgICAgICAgICAgICBkaXN0YW5jZTogMTAwLAogICAgICAgICAgICAgICAgZjogJ2pzb24nCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBnZXRKU09OKHRoaXMub3B0aW9ucy5zZXJ2aWNlX3VybCArICcvcmV2ZXJzZUdlb2NvZGUnLCBwYXJhbXMsIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXSwKICAgICAgICAgICAgICAgICAgICBsb2M7CgogICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgIWRhdGEuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICBsb2MgPSBMLmxhdExuZyhkYXRhLmxvY2F0aW9uLnksIGRhdGEubG9jYXRpb24ueCk7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLmFkZHJlc3MuTWF0Y2hfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kczogTC5sYXRMbmdCb3VuZHMobG9jLCBsb2MpCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCByZXN1bHQpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9KTsKCiAgICBmdW5jdGlvbiBhcmNnaXMoYWNjZXNzVG9rZW4sIG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IEFyY0dpcyhhY2Nlc3NUb2tlbiwgb3B0aW9ucyk7CiAgICB9CgogICAgdmFyIEJpbmcgPSBMLkNsYXNzLmV4dGVuZCh7CiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICAgIH0sCgogICAgICAgIGdlb2NvZGU6IGZ1bmN0aW9uKHF1ZXJ5LCBjYiwgY29udGV4dCkgewogICAgICAgICAgICBqc29ucCgKICAgICAgICAgICAgICAgICdodHRwczovL2Rldi52aXJ0dWFsZWFydGgubmV0L1JFU1QvdjEvTG9jYXRpb25zJywgewogICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSwKICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMua2V5CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW107CiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzb3VyY2VTZXRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGRhdGEucmVzb3VyY2VTZXRzWzBdLnJlc291cmNlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlID0gZGF0YS5yZXNvdXJjZVNldHNbMF0ucmVzb3VyY2VzW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3ggPSByZXNvdXJjZS5iYm94OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiByZXNvdXJjZS5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3g6IEwubGF0TG5nQm91bmRzKFtiYm94WzBdLCBiYm94WzFdXSwgW2Jib3hbMl0sIGJib3hbM11dKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IEwubGF0TG5nKHJlc291cmNlLnBvaW50LmNvb3JkaW5hdGVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRoaXMsCiAgICAgICAgICAgICAgICAnanNvbnAnCiAgICAgICAgICAgICk7CiAgICAgICAgfSwKCiAgICAgICAgcmV2ZXJzZTogZnVuY3Rpb24obG9jYXRpb24sIHNjYWxlLCBjYiwgY29udGV4dCkgewogICAgICAgICAgICBqc29ucCgKICAgICAgICAgICAgICAgICcvL2Rldi52aXJ0dWFsZWFydGgubmV0L1JFU1QvdjEvTG9jYXRpb25zLycgKyBsb2NhdGlvbi5sYXQgKyAnLCcgKyBsb2NhdGlvbi5sbmcsIHsKICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMua2V5CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGRhdGEucmVzb3VyY2VTZXRzWzBdLnJlc291cmNlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBkYXRhLnJlc291cmNlU2V0c1swXS5yZXNvdXJjZXNbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94ID0gcmVzb3VyY2UuYmJveDsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHJlc291cmNlLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94OiBMLmxhdExuZ0JvdW5kcyhbYmJveFswXSwgYmJveFsxXV0sIFtiYm94WzJdLCBiYm94WzNdXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IEwubGF0TG5nKHJlc291cmNlLnBvaW50LmNvb3JkaW5hdGVzKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRoaXMsCiAgICAgICAgICAgICAgICAnanNvbnAnCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfSk7CgogICAgZnVuY3Rpb24gYmluZyhrZXkpIHsKICAgICAgICByZXR1cm4gbmV3IEJpbmcoa2V5KTsKICAgIH0KCiAgICB2YXIgR29vZ2xlID0gTC5DbGFzcy5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgc2VydmljZVVybDogJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9nZW9jb2RlL2pzb24nLAogICAgICAgICAgICBnZW9jb2RpbmdRdWVyeVBhcmFtczoge30sCiAgICAgICAgICAgIHJldmVyc2VRdWVyeVBhcmFtczoge30KICAgICAgICB9LAoKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXksIG9wdGlvbnMpIHsKICAgICAgICAgICAgdGhpcy5fa2V5ID0ga2V5OwogICAgICAgICAgICBMLnNldE9wdGlvbnModGhpcywgb3B0aW9ucyk7CiAgICAgICAgICAgIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXJ2aWNlVXJsID0gdGhpcy5vcHRpb25zLnNlcnZpY2VfdXJsIHx8IHRoaXMub3B0aW9ucy5zZXJ2aWNlVXJsOwogICAgICAgIH0sCgogICAgICAgIGdlb2NvZGU6IGZ1bmN0aW9uKHF1ZXJ5LCBjYiwgY29udGV4dCkgewogICAgICAgICAgICB2YXIgcGFyYW1zID0gewogICAgICAgICAgICAgICAgYWRkcmVzczogcXVlcnkKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGlmICh0aGlzLl9rZXkgJiYgdGhpcy5fa2V5Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgcGFyYW1zLmtleSA9IHRoaXMuX2tleTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcGFyYW1zID0gTC5VdGlsLmV4dGVuZChwYXJhbXMsIHRoaXMub3B0aW9ucy5nZW9jb2RpbmdRdWVyeVBhcmFtcyk7CgogICAgICAgICAgICBnZXRKU09OKHRoaXMub3B0aW9ucy5zZXJ2aWNlVXJsLCBwYXJhbXMsIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW10sCiAgICAgICAgICAgICAgICAgICAgbG9jLAogICAgICAgICAgICAgICAgICAgIGxhdExuZywKICAgICAgICAgICAgICAgICAgICBsYXRMbmdCb3VuZHM7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHRzICYmIGRhdGEucmVzdWx0cy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBkYXRhLnJlc3VsdHMubGVuZ3RoIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvYyA9IGRhdGEucmVzdWx0c1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nID0gTC5sYXRMbmcobG9jLmdlb21ldHJ5LmxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzID0gTC5sYXRMbmdCb3VuZHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMLmxhdExuZyhsb2MuZ2VvbWV0cnkudmlld3BvcnQubm9ydGhlYXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwubGF0TG5nKGxvYy5nZW9tZXRyeS52aWV3cG9ydC5zb3V0aHdlc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBsb2MuZm9ybWF0dGVkX2FkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94OiBsYXRMbmdCb3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IGxhdExuZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IGxvYy5hZGRyZXNzX2NvbXBvbmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCByZXN1bHRzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgcmV2ZXJzZTogZnVuY3Rpb24obG9jYXRpb24sIHNjYWxlLCBjYiwgY29udGV4dCkgewogICAgICAgICAgICB2YXIgcGFyYW1zID0gewogICAgICAgICAgICAgICAgbGF0bG5nOiBlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24ubGF0KSArICcsJyArIGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5sbmcpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHBhcmFtcyA9IEwuVXRpbC5leHRlbmQocGFyYW1zLCB0aGlzLm9wdGlvbnMucmV2ZXJzZVF1ZXJ5UGFyYW1zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2tleSAmJiB0aGlzLl9rZXkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBwYXJhbXMua2V5ID0gdGhpcy5fa2V5OwogICAgICAgICAgICB9CgogICAgICAgICAgICBnZXRKU09OKHRoaXMub3B0aW9ucy5zZXJ2aWNlVXJsLCBwYXJhbXMsIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW10sCiAgICAgICAgICAgICAgICAgICAgbG9jLAogICAgICAgICAgICAgICAgICAgIGxhdExuZywKICAgICAgICAgICAgICAgICAgICBsYXRMbmdCb3VuZHM7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHRzICYmIGRhdGEucmVzdWx0cy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBkYXRhLnJlc3VsdHMubGVuZ3RoIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvYyA9IGRhdGEucmVzdWx0c1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nID0gTC5sYXRMbmcobG9jLmdlb21ldHJ5LmxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzID0gTC5sYXRMbmdCb3VuZHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMLmxhdExuZyhsb2MuZ2VvbWV0cnkudmlld3BvcnQubm9ydGhlYXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwubGF0TG5nKGxvYy5nZW9tZXRyeS52aWV3cG9ydC5zb3V0aHdlc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBsb2MuZm9ybWF0dGVkX2FkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94OiBsYXRMbmdCb3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IGxhdExuZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IGxvYy5hZGRyZXNzX2NvbXBvbmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCByZXN1bHRzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSk7CgogICAgZnVuY3Rpb24gZ29vZ2xlKGtleSwgb3B0aW9ucykgewogICAgICAgIHJldHVybiBuZXcgR29vZ2xlKGtleSwgb3B0aW9ucyk7CiAgICB9CgogICAgdmFyIEhFUkUgPSBMLkNsYXNzLmV4dGVuZCh7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBnZW9jb2RlVXJsOiAnaHR0cDovL2dlb2NvZGVyLmFwaS5oZXJlLmNvbS82LjIvZ2VvY29kZS5qc29uJywKICAgICAgICAgICAgcmV2ZXJzZUdlb2NvZGVVcmw6ICdodHRwOi8vcmV2ZXJzZS5nZW9jb2Rlci5hcGkuaGVyZS5jb20vNi4yL3JldmVyc2VnZW9jb2RlLmpzb24nLAogICAgICAgICAgICBhcHBfaWQ6ICc8aW5zZXJ0IHlvdXIgYXBwX2lkIGhlcmU+JywKICAgICAgICAgICAgYXBwX2NvZGU6ICc8aW5zZXJ0IHlvdXIgYXBwX2NvZGUgaGVyZT4nLAogICAgICAgICAgICBnZW9jb2RpbmdRdWVyeVBhcmFtczoge30sCiAgICAgICAgICAgIHJldmVyc2VRdWVyeVBhcmFtczoge30KICAgICAgICB9LAoKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgICAgIEwuc2V0T3B0aW9ucyh0aGlzLCBvcHRpb25zKTsKICAgICAgICB9LAoKICAgICAgICBnZW9jb2RlOiBmdW5jdGlvbihxdWVyeSwgY2IsIGNvbnRleHQpIHsKICAgICAgICAgICAgdmFyIHBhcmFtcyA9IHsKICAgICAgICAgICAgICAgIHNlYXJjaHRleHQ6IHF1ZXJ5LAogICAgICAgICAgICAgICAgZ2VuOiA5LAogICAgICAgICAgICAgICAgYXBwX2lkOiB0aGlzLm9wdGlvbnMuYXBwX2lkLAogICAgICAgICAgICAgICAgYXBwX2NvZGU6IHRoaXMub3B0aW9ucy5hcHBfY29kZSwKICAgICAgICAgICAgICAgIGpzb25hdHRyaWJ1dGVzOiAxCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHBhcmFtcyA9IEwuVXRpbC5leHRlbmQocGFyYW1zLCB0aGlzLm9wdGlvbnMuZ2VvY29kaW5nUXVlcnlQYXJhbXMpOwogICAgICAgICAgICB0aGlzLmdldEpTT04odGhpcy5vcHRpb25zLmdlb2NvZGVVcmwsIHBhcmFtcywgY2IsIGNvbnRleHQpOwogICAgICAgIH0sCgogICAgICAgIHJldmVyc2U6IGZ1bmN0aW9uKGxvY2F0aW9uLCBzY2FsZSwgY2IsIGNvbnRleHQpIHsKICAgICAgICAgICAgdmFyIHBhcmFtcyA9IHsKICAgICAgICAgICAgICAgIHByb3g6IGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5sYXQpICsgJywnICsgZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmxuZyksCiAgICAgICAgICAgICAgICBtb2RlOiAncmV0cmlldmVBZGRyZXNzZXMnLAogICAgICAgICAgICAgICAgYXBwX2lkOiB0aGlzLm9wdGlvbnMuYXBwX2lkLAogICAgICAgICAgICAgICAgYXBwX2NvZGU6IHRoaXMub3B0aW9ucy5hcHBfY29kZSwKICAgICAgICAgICAgICAgIGdlbjogOSwKICAgICAgICAgICAgICAgIGpzb25hdHRyaWJ1dGVzOiAxCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHBhcmFtcyA9IEwuVXRpbC5leHRlbmQocGFyYW1zLCB0aGlzLm9wdGlvbnMucmV2ZXJzZVF1ZXJ5UGFyYW1zKTsKICAgICAgICAgICAgdGhpcy5nZXRKU09OKHRoaXMub3B0aW9ucy5yZXZlcnNlR2VvY29kZVVybCwgcGFyYW1zLCBjYiwgY29udGV4dCk7CiAgICAgICAgfSwKCiAgICAgICAgZ2V0SlNPTjogZnVuY3Rpb24odXJsLCBwYXJhbXMsIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIGdldEpTT04odXJsLCBwYXJhbXMsIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW10sCiAgICAgICAgICAgICAgICAgICAgbG9jLAogICAgICAgICAgICAgICAgICAgIGxhdExuZywKICAgICAgICAgICAgICAgICAgICBsYXRMbmdCb3VuZHM7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXNwb25zZS52aWV3ICYmIGRhdGEucmVzcG9uc2Uudmlldy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBkYXRhLnJlc3BvbnNlLnZpZXdbMF0ucmVzdWx0Lmxlbmd0aCAtIDE7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBsb2MgPSBkYXRhLnJlc3BvbnNlLnZpZXdbMF0ucmVzdWx0W2ldLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmcgPSBMLmxhdExuZyhsb2MuZGlzcGxheVBvc2l0aW9uLmxhdGl0dWRlLCBsb2MuZGlzcGxheVBvc2l0aW9uLmxvbmdpdHVkZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhdExuZ0JvdW5kcyA9IEwubGF0TG5nQm91bmRzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTC5sYXRMbmcobG9jLm1hcFZpZXcudG9wTGVmdC5sYXRpdHVkZSwgbG9jLm1hcFZpZXcudG9wTGVmdC5sb25naXR1ZGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTC5sYXRMbmcobG9jLm1hcFZpZXcuYm90dG9tUmlnaHQubGF0aXR1ZGUsIGxvYy5tYXBWaWV3LmJvdHRvbVJpZ2h0LmxvbmdpdHVkZSkKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGxvYy5hZGRyZXNzLmxhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveDogbGF0TG5nQm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBsYXRMbmcKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIHJlc3VsdHMpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9KTsKCiAgICBmdW5jdGlvbiBoZXJlKG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IEhFUkUob3B0aW9ucyk7CiAgICB9CgogICAgdmFyIExhdExuZyA9IEwuQ2xhc3MuZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIC8vIHRoZSBuZXh0IGdlb2NvZGVyIHRvIHVzZQogICAgICAgICAgICBuZXh0OiB1bmRlZmluZWQsCiAgICAgICAgICAgIHNpemVJbk1ldGVyczogMTAwMDAKICAgICAgICB9LAoKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgICAgIEwuVXRpbC5zZXRPcHRpb25zKHRoaXMsIG9wdGlvbnMpOwogICAgICAgIH0sCgogICAgICAgIGdlb2NvZGU6IGZ1bmN0aW9uKHF1ZXJ5LCBjYiwgY29udGV4dCkgewogICAgICAgICAgICB2YXIgbWF0Y2g7CiAgICAgICAgICAgIHZhciBjZW50ZXI7CiAgICAgICAgICAgIC8vIHJlZ2V4IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL29wZW5zdHJlZXRtYXAvb3BlbnN0cmVldG1hcC13ZWJzaXRlL2Jsb2IvbWFzdGVyL2FwcC9jb250cm9sbGVycy9nZW9jb2Rlcl9jb250cm9sbGVyLnJiCiAgICAgICAgICAgIGlmICgobWF0Y2ggPSBxdWVyeS5tYXRjaCgvXihbTlNdKVxzKihcZHsxLDN9KD86XC5cZCopPylcVyooW0VXXSlccyooXGR7MSwzfSg/OlwuXGQqKT8pJC8pKSkgewogICAgICAgICAgICAgICAgLy8gW05TRVddIGRlY2ltYWwgZGVncmVlcwogICAgICAgICAgICAgICAgY2VudGVyID0gTC5sYXRMbmcoCiAgICAgICAgICAgICAgICAgICAgKC9OL2kudGVzdChtYXRjaFsxXSkgPyAxIDogLTEpICogcGFyc2VGbG9hdChtYXRjaFsyXSksCiAgICAgICAgICAgICAgICAgICAgKC9FL2kudGVzdChtYXRjaFszXSkgPyAxIDogLTEpICogcGFyc2VGbG9hdChtYXRjaFs0XSkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoCiAgICAgICAgICAgICAgICAobWF0Y2ggPSBxdWVyeS5tYXRjaCgvXihcZHsxLDN9KD86XC5cZCopPylccyooW05TXSlcVyooXGR7MSwzfSg/OlwuXGQqKT8pXHMqKFtFV10pJC8pKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwgZGVncmVlcyBbTlNFV10KICAgICAgICAgICAgICAgIGNlbnRlciA9IEwubGF0TG5nKAogICAgICAgICAgICAgICAgICAgICgvTi9pLnRlc3QobWF0Y2hbMl0pID8gMSA6IC0xKSAqIHBhcnNlRmxvYXQobWF0Y2hbMV0pLAogICAgICAgICAgICAgICAgICAgICgvRS9pLnRlc3QobWF0Y2hbNF0pID8gMSA6IC0xKSAqIHBhcnNlRmxvYXQobWF0Y2hbM10pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9IGVsc2UgaWYgKAogICAgICAgICAgICAgICAgKG1hdGNoID0gcXVlcnkubWF0Y2goCiAgICAgICAgICAgICAgICAgICAgL14oW05TXSlccyooXGR7MSwzfSnCsD9ccyooXGR7MSwzfSg/OlwuXGQqKT8pP1sn4oCyXT9cVyooW0VXXSlccyooXGR7MSwzfSnCsD9ccyooXGR7MSwzfSg/OlwuXGQqKT8pP1sn4oCyXT8kLwogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAvLyBbTlNFV10gZGVncmVlcywgZGVjaW1hbCBtaW51dGVzCiAgICAgICAgICAgICAgICBjZW50ZXIgPSBMLmxhdExuZygKICAgICAgICAgICAgICAgICAgICAoL04vaS50ZXN0KG1hdGNoWzFdKSA/IDEgOiAtMSkgKiAocGFyc2VGbG9hdChtYXRjaFsyXSkgKyBwYXJzZUZsb2F0KG1hdGNoWzNdIC8gNjApKSwKICAgICAgICAgICAgICAgICAgICAoL0UvaS50ZXN0KG1hdGNoWzRdKSA/IDEgOiAtMSkgKiAocGFyc2VGbG9hdChtYXRjaFs1XSkgKyBwYXJzZUZsb2F0KG1hdGNoWzZdIC8gNjApKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSBlbHNlIGlmICgKICAgICAgICAgICAgICAgIChtYXRjaCA9IHF1ZXJ5Lm1hdGNoKAogICAgICAgICAgICAgICAgICAgIC9eKFxkezEsM30pwrA/XHMqKFxkezEsM30oPzpcLlxkKik/KT9bJ+KAsl0/XHMqKFtOU10pXFcqKFxkezEsM30pwrA/XHMqKFxkezEsM30oPzpcLlxkKik/KT9bJ+KAsl0/XHMqKFtFV10pJC8KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgLy8gZGVncmVlcywgZGVjaW1hbCBtaW51dGVzIFtOU0VXXQogICAgICAgICAgICAgICAgY2VudGVyID0gTC5sYXRMbmcoCiAgICAgICAgICAgICAgICAgICAgKC9OL2kudGVzdChtYXRjaFszXSkgPyAxIDogLTEpICogKHBhcnNlRmxvYXQobWF0Y2hbMV0pICsgcGFyc2VGbG9hdChtYXRjaFsyXSAvIDYwKSksCiAgICAgICAgICAgICAgICAgICAgKC9FL2kudGVzdChtYXRjaFs2XSkgPyAxIDogLTEpICogKHBhcnNlRmxvYXQobWF0Y2hbNF0pICsgcGFyc2VGbG9hdChtYXRjaFs1XSAvIDYwKSkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoCiAgICAgICAgICAgICAgICAobWF0Y2ggPSBxdWVyeS5tYXRjaCgKICAgICAgICAgICAgICAgICAgICAvXihbTlNdKVxzKihcZHsxLDN9KcKwP1xzKihcZHsxLDJ9KVsn4oCyXT9ccyooXGR7MSwzfSg/OlwuXGQqKT8pP1si4oCzXT9cVyooW0VXXSlccyooXGR7MSwzfSnCsD9ccyooXGR7MSwyfSlbJ+KAsl0/XHMqKFxkezEsM30oPzpcLlxkKik/KT9bIuKAs10/JC8KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgLy8gW05TRVddIGRlZ3JlZXMsIG1pbnV0ZXMsIGRlY2ltYWwgc2Vjb25kcwogICAgICAgICAgICAgICAgY2VudGVyID0gTC5sYXRMbmcoCiAgICAgICAgICAgICAgICAgICAgKC9OL2kudGVzdChtYXRjaFsxXSkgPyAxIDogLTEpICoKICAgICAgICAgICAgICAgICAgICAocGFyc2VGbG9hdChtYXRjaFsyXSkgKyBwYXJzZUZsb2F0KG1hdGNoWzNdIC8gNjAgKyBwYXJzZUZsb2F0KG1hdGNoWzRdIC8gMzYwMCkpKSwKICAgICAgICAgICAgICAgICAgICAoL0UvaS50ZXN0KG1hdGNoWzVdKSA/IDEgOiAtMSkgKgogICAgICAgICAgICAgICAgICAgIChwYXJzZUZsb2F0KG1hdGNoWzZdKSArIHBhcnNlRmxvYXQobWF0Y2hbN10gLyA2MCkgKyBwYXJzZUZsb2F0KG1hdGNoWzhdIC8gMzYwMCkpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9IGVsc2UgaWYgKAogICAgICAgICAgICAgICAgKG1hdGNoID0gcXVlcnkubWF0Y2goCiAgICAgICAgICAgICAgICAgICAgL14oXGR7MSwzfSnCsD9ccyooXGR7MSwyfSlbJ+KAsl0/XHMqKFxkezEsM30oPzpcLlxkKik/KT9bIuKAs11ccyooW05TXSlcVyooXGR7MSwzfSnCsD9ccyooXGR7MSwyfSlbJ+KAsl0/XHMqKFxkezEsM30oPzpcLlxkKik/KT9bIuKAs10/XHMqKFtFV10pJC8KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgLy8gZGVncmVlcywgbWludXRlcywgZGVjaW1hbCBzZWNvbmRzIFtOU0VXXQogICAgICAgICAgICAgICAgY2VudGVyID0gTC5sYXRMbmcoCiAgICAgICAgICAgICAgICAgICAgKC9OL2kudGVzdChtYXRjaFs0XSkgPyAxIDogLTEpICoKICAgICAgICAgICAgICAgICAgICAocGFyc2VGbG9hdChtYXRjaFsxXSkgKyBwYXJzZUZsb2F0KG1hdGNoWzJdIC8gNjAgKyBwYXJzZUZsb2F0KG1hdGNoWzNdIC8gMzYwMCkpKSwKICAgICAgICAgICAgICAgICAgICAoL0UvaS50ZXN0KG1hdGNoWzhdKSA/IDEgOiAtMSkgKgogICAgICAgICAgICAgICAgICAgIChwYXJzZUZsb2F0KG1hdGNoWzVdKSArIHBhcnNlRmxvYXQobWF0Y2hbNl0gLyA2MCkgKyBwYXJzZUZsb2F0KG1hdGNoWzddIC8gMzYwMCkpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9IGVsc2UgaWYgKAogICAgICAgICAgICAgICAgKG1hdGNoID0gcXVlcnkubWF0Y2goL15ccyooWystXT9cZCsoPzpcLlxkKik/KVxzKltccyxdXHMqKFsrLV0/XGQrKD86XC5cZCopPylccyokLykpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgY2VudGVyID0gTC5sYXRMbmcocGFyc2VGbG9hdChtYXRjaFsxXSksIHBhcnNlRmxvYXQobWF0Y2hbMl0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoY2VudGVyKSB7CiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFt7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogcXVlcnksCiAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBjZW50ZXIsCiAgICAgICAgICAgICAgICAgICAgYmJveDogY2VudGVyLnRvQm91bmRzKHRoaXMub3B0aW9ucy5zaXplSW5NZXRlcnMpCiAgICAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgICAgIGNiLmNhbGwoY29udGV4dCwgcmVzdWx0cyk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLm5leHQpIHsKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5uZXh0Lmdlb2NvZGUocXVlcnksIGNiLCBjb250ZXh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwoKICAgIGZ1bmN0aW9uIGxhdExuZyhvcHRpb25zKSB7CiAgICAgICAgcmV0dXJuIG5ldyBMYXRMbmcob3B0aW9ucyk7CiAgICB9CgogICAgdmFyIE1hcGJveCA9IEwuQ2xhc3MuZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHNlcnZpY2VVcmw6ICdodHRwczovL2FwaS5tYXBib3guY29tL2dlb2NvZGluZy92NS9tYXBib3gucGxhY2VzLycsCiAgICAgICAgICAgIGdlb2NvZGluZ1F1ZXJ5UGFyYW1zOiB7fSwKICAgICAgICAgICAgcmV2ZXJzZVF1ZXJ5UGFyYW1zOiB7fQogICAgICAgIH0sCgogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGFjY2Vzc1Rva2VuLCBvcHRpb25zKSB7CiAgICAgICAgICAgIEwuc2V0T3B0aW9ucyh0aGlzLCBvcHRpb25zKTsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLmdlb2NvZGluZ1F1ZXJ5UGFyYW1zLmFjY2Vzc190b2tlbiA9IGFjY2Vzc1Rva2VuOwogICAgICAgICAgICB0aGlzLm9wdGlvbnMucmV2ZXJzZVF1ZXJ5UGFyYW1zLmFjY2Vzc190b2tlbiA9IGFjY2Vzc1Rva2VuOwogICAgICAgIH0sCgogICAgICAgIGdlb2NvZGU6IGZ1bmN0aW9uKHF1ZXJ5LCBjYiwgY29udGV4dCkgewogICAgICAgICAgICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zLmdlb2NvZGluZ1F1ZXJ5UGFyYW1zOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICB0eXBlb2YgcGFyYW1zLnByb3hpbWl0eSAhPT0gJ3VuZGVmaW5lZCcgJiYKICAgICAgICAgICAgICAgIHBhcmFtcy5wcm94aW1pdHkuaGFzT3duUHJvcGVydHkoJ2xhdCcpICYmCiAgICAgICAgICAgICAgICBwYXJhbXMucHJveGltaXR5Lmhhc093blByb3BlcnR5KCdsbmcnKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIHBhcmFtcy5wcm94aW1pdHkgPSBwYXJhbXMucHJveGltaXR5LmxuZyArICcsJyArIHBhcmFtcy5wcm94aW1pdHkubGF0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldEpTT04odGhpcy5vcHRpb25zLnNlcnZpY2VVcmwgKyBlbmNvZGVVUklDb21wb25lbnQocXVlcnkpICsgJy5qc29uJywgcGFyYW1zLCBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtdLAogICAgICAgICAgICAgICAgICAgIGxvYywKICAgICAgICAgICAgICAgICAgICBsYXRMbmcsCiAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzOwogICAgICAgICAgICAgICAgaWYgKGRhdGEuZmVhdHVyZXMgJiYgZGF0YS5mZWF0dXJlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBkYXRhLmZlYXR1cmVzLmxlbmd0aCAtIDE7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBsb2MgPSBkYXRhLmZlYXR1cmVzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmcgPSBMLmxhdExuZyhsb2MuY2VudGVyLnJldmVyc2UoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2MuaGFzT3duUHJvcGVydHkoJ2Jib3gnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzID0gTC5sYXRMbmdCb3VuZHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTC5sYXRMbmcobG9jLmJib3guc2xpY2UoMCwgMikucmV2ZXJzZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMLmxhdExuZyhsb2MuYmJveC5zbGljZSgyLCA0KS5yZXZlcnNlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzID0gTC5sYXRMbmdCb3VuZHMobGF0TG5nLCBsYXRMbmcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGxvYy50ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogbG9jLmFkZHJlc3MKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbG9jLmNvbnRleHQubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGxvYy5jb250ZXh0W2pdLmlkLnNwbGl0KCcuJylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW2lkXSA9IGxvYy5jb250ZXh0W2pdLnRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBsb2MucGxhY2VfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3g6IGxhdExuZ0JvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjogbGF0TG5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllcwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIHJlc3VsdHMpOwogICAgICAgICAgICB9KTsKICAgICAgICB9LAoKICAgICAgICBzdWdnZXN0OiBmdW5jdGlvbihxdWVyeSwgY2IsIGNvbnRleHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VvY29kZShxdWVyeSwgY2IsIGNvbnRleHQpOwogICAgICAgIH0sCgogICAgICAgIHJldmVyc2U6IGZ1bmN0aW9uKGxvY2F0aW9uLCBzY2FsZSwgY2IsIGNvbnRleHQpIHsKICAgICAgICAgICAgZ2V0SlNPTigKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXJ2aWNlVXJsICsKICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5sbmcpICsKICAgICAgICAgICAgICAgICcsJyArCiAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24ubGF0KSArCiAgICAgICAgICAgICAgICAnLmpzb24nLAogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnJldmVyc2VRdWVyeVBhcmFtcywKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhdExuZywKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzOwogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmZlYXR1cmVzICYmIGRhdGEuZmVhdHVyZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IGRhdGEuZmVhdHVyZXMubGVuZ3RoIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2MgPSBkYXRhLmZlYXR1cmVzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nID0gTC5sYXRMbmcobG9jLmNlbnRlci5yZXZlcnNlKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvYy5oYXNPd25Qcm9wZXJ0eSgnYmJveCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzID0gTC5sYXRMbmdCb3VuZHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwubGF0TG5nKGxvYy5iYm94LnNsaWNlKDAsIDIpLnJldmVyc2UoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwubGF0TG5nKGxvYy5iYm94LnNsaWNlKDIsIDQpLnJldmVyc2UoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmdCb3VuZHMgPSBMLmxhdExuZ0JvdW5kcyhsYXRMbmcsIGxhdExuZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzW2ldID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGxvYy5wbGFjZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3g6IGxhdExuZ0JvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IGxhdExuZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCByZXN1bHRzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9KTsKCiAgICBmdW5jdGlvbiBtYXBib3goYWNjZXNzVG9rZW4sIG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IE1hcGJveChhY2Nlc3NUb2tlbiwgb3B0aW9ucyk7CiAgICB9CgogICAgdmFyIE1hcFF1ZXN0ID0gTC5DbGFzcy5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgc2VydmljZVVybDogJ2h0dHBzOi8vd3d3Lm1hcHF1ZXN0YXBpLmNvbS9nZW9jb2RpbmcvdjEnCiAgICAgICAgfSwKCiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oa2V5LCBvcHRpb25zKSB7CiAgICAgICAgICAgIC8vIE1hcFF1ZXN0IHNlZW1zIHRvIHByb3ZpZGUgVVJJIGVuY29kZWQgQVBJIGtleXMsCiAgICAgICAgICAgIC8vIHNvIHRvIGF2b2lkIGVuY29kaW5nIHRoZW0gdHdpY2UsIHdlIGRlY29kZSB0aGVtIGhlcmUKICAgICAgICAgICAgdGhpcy5fa2V5ID0gZGVjb2RlVVJJQ29tcG9uZW50KGtleSk7CgogICAgICAgICAgICBMLlV0aWwuc2V0T3B0aW9ucyh0aGlzLCBvcHRpb25zKTsKICAgICAgICB9LAoKICAgICAgICBfZm9ybWF0TmFtZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciByID0gW10sCiAgICAgICAgICAgICAgICBpOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgci5wdXNoKGFyZ3VtZW50c1tpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiByLmpvaW4oJywgJyk7CiAgICAgICAgfSwKCiAgICAgICAgZ2VvY29kZTogZnVuY3Rpb24ocXVlcnksIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIGdldEpTT04oCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2VydmljZVVybCArICcvYWRkcmVzcycsIHsKICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMuX2tleSwKICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogcXVlcnksCiAgICAgICAgICAgICAgICAgICAgbGltaXQ6IDUsCiAgICAgICAgICAgICAgICAgICAgb3V0Rm9ybWF0OiAnanNvbicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBMLmJpbmQoZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nOwogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnJlc3VsdHMgJiYgZGF0YS5yZXN1bHRzWzBdLmxvY2F0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gZGF0YS5yZXN1bHRzWzBdLmxvY2F0aW9ucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jID0gZGF0YS5yZXN1bHRzWzBdLmxvY2F0aW9uc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExuZyA9IEwubGF0TG5nKGxvYy5sYXRMbmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLl9mb3JtYXROYW1lKGxvYy5zdHJlZXQsIGxvYy5hZG1pbkFyZWE0LCBsb2MuYWRtaW5BcmVhMywgbG9jLmFkbWluQXJlYTEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3g6IEwubGF0TG5nQm91bmRzKGxhdExuZywgbGF0TG5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IGxhdExuZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCByZXN1bHRzKTsKICAgICAgICAgICAgICAgIH0sIHRoaXMpCiAgICAgICAgICAgICk7CiAgICAgICAgfSwKCiAgICAgICAgcmV2ZXJzZTogZnVuY3Rpb24obG9jYXRpb24sIHNjYWxlLCBjYiwgY29udGV4dCkgewogICAgICAgICAgICBnZXRKU09OKAogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNlcnZpY2VVcmwgKyAnL3JldmVyc2UnLCB7CiAgICAgICAgICAgICAgICAgICAga2V5OiB0aGlzLl9rZXksCiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLmxhdCArICcsJyArIGxvY2F0aW9uLmxuZywKICAgICAgICAgICAgICAgICAgICBvdXRwdXRGb3JtYXQ6ICdqc29uJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEwuYmluZChmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9jLAogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0cyAmJiBkYXRhLnJlc3VsdHNbMF0ubG9jYXRpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBkYXRhLnJlc3VsdHNbMF0ubG9jYXRpb25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2MgPSBkYXRhLnJlc3VsdHNbMF0ubG9jYXRpb25zW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nID0gTC5sYXRMbmcobG9jLmxhdExuZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzW2ldID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuX2Zvcm1hdE5hbWUobG9jLnN0cmVldCwgbG9jLmFkbWluQXJlYTQsIGxvYy5hZG1pbkFyZWEzLCBsb2MuYWRtaW5BcmVhMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveDogTC5sYXRMbmdCb3VuZHMobGF0TG5nLCBsYXRMbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjogbGF0TG5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgfSwgdGhpcykKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9KTsKCiAgICBmdW5jdGlvbiBtYXBRdWVzdChrZXksIG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IE1hcFF1ZXN0KGtleSwgb3B0aW9ucyk7CiAgICB9CgogICAgdmFyIE5ldXRyaW5vID0gTC5DbGFzcy5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgdXNlcklkOiAnPGluc2VydCB5b3VyIHVzZXJJZCBoZXJlPicsCiAgICAgICAgICAgIGFwaUtleTogJzxpbnNlcnQgeW91ciBhcGlLZXkgaGVyZT4nLAogICAgICAgICAgICBzZXJ2aWNlVXJsOiAnaHR0cHM6Ly9uZXV0cmlub2FwaS5jb20vJwogICAgICAgIH0sCgogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAgICAgTC5VdGlsLnNldE9wdGlvbnModGhpcywgb3B0aW9ucyk7CiAgICAgICAgfSwKCiAgICAgICAgLy8gaHR0cHM6Ly93d3cubmV1dHJpbm9hcGkuY29tL2FwaS9nZW9jb2RlLWFkZHJlc3MvCiAgICAgICAgZ2VvY29kZTogZnVuY3Rpb24ocXVlcnksIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIGdldEpTT04oCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2VydmljZVVybCArICdnZW9jb2RlLWFkZHJlc3MnLCB7CiAgICAgICAgICAgICAgICAgICAgYXBpS2V5OiB0aGlzLm9wdGlvbnMuYXBpS2V5LAogICAgICAgICAgICAgICAgICAgIHVzZXJJZDogdGhpcy5vcHRpb25zLnVzZXJJZCwKICAgICAgICAgICAgICAgICAgICAvL2dldCB0aHJlZSB3b3JkcyBhbmQgbWFrZSBhIGRvdCBiYXNlZCBzdHJpbmcKICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBxdWVyeS5zcGxpdCgvXHMrLykuam9pbignLicpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGxhdExuZywKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzOwogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KCdsb2NhdGlvbnMnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmdlb21ldHJ5ID0gZGF0YS5sb2NhdGlvbnNbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGxhdExuZyA9IEwubGF0TG5nKGRhdGEuZ2VvbWV0cnlbJ2xhdGl0dWRlJ10sIGRhdGEuZ2VvbWV0cnlbJ2xvbmdpdHVkZSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzID0gTC5sYXRMbmdCb3VuZHMobGF0TG5nLCBsYXRMbmcpOwogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzWzBdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS5nZW9tZXRyeS5hZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveDogbGF0TG5nQm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBsYXRMbmcKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGNiLmNhbGwoY29udGV4dCwgcmVzdWx0cyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfSwKCiAgICAgICAgc3VnZ2VzdDogZnVuY3Rpb24ocXVlcnksIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlb2NvZGUocXVlcnksIGNiLCBjb250ZXh0KTsKICAgICAgICB9LAoKICAgICAgICAvLyBodHRwczovL3d3dy5uZXV0cmlub2FwaS5jb20vYXBpL2dlb2NvZGUtcmV2ZXJzZS8KICAgICAgICByZXZlcnNlOiBmdW5jdGlvbihsb2NhdGlvbiwgc2NhbGUsIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIGdldEpTT04oCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2VydmljZVVybCArICdnZW9jb2RlLXJldmVyc2UnLCB7CiAgICAgICAgICAgICAgICAgICAgYXBpS2V5OiB0aGlzLm9wdGlvbnMuYXBpS2V5LAogICAgICAgICAgICAgICAgICAgIHVzZXJJZDogdGhpcy5vcHRpb25zLnVzZXJJZCwKICAgICAgICAgICAgICAgICAgICBsYXRpdHVkZTogbG9jYXRpb24ubGF0LAogICAgICAgICAgICAgICAgICAgIGxvbmdpdHVkZTogbG9jYXRpb24ubG5nCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGxhdExuZywKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nQm91bmRzOwogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cy5zdGF0dXMgPT0gMjAwICYmIGRhdGEuZm91bmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG5nID0gTC5sYXRMbmcobG9jYXRpb24ubGF0LCBsb2NhdGlvbi5sbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmdCb3VuZHMgPSBMLmxhdExuZ0JvdW5kcyhsYXRMbmcsIGxhdExuZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbMF0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLmFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94OiBsYXRMbmdCb3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IGxhdExuZwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0pOwoKICAgIGZ1bmN0aW9uIG5ldXRyaW5vKGFjY2Vzc1Rva2VuKSB7CiAgICAgICAgcmV0dXJuIG5ldyBOZXV0cmlubyhhY2Nlc3NUb2tlbik7CiAgICB9CgogICAgdmFyIE5vbWluYXRpbSA9IEwuQ2xhc3MuZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHNlcnZpY2VVcmw6ICdodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy8nLAogICAgICAgICAgICBnZW9jb2RpbmdRdWVyeVBhcmFtczoge30sCiAgICAgICAgICAgIHJldmVyc2VRdWVyeVBhcmFtczoge30sCiAgICAgICAgICAgIGh0bWxUZW1wbGF0ZTogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGEgPSByLmFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgcGFydHMgPSBbXTsKICAgICAgICAgICAgICAgIGlmIChhLnJvYWQgfHwgYS5idWlsZGluZykgewogICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goJ3tidWlsZGluZ30ge3JvYWR9IHtob3VzZV9udW1iZXJ9Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGEuY2l0eSB8fCBhLnRvd24gfHwgYS52aWxsYWdlIHx8IGEuaGFtbGV0KSB7CiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaCgKICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSInICsKICAgICAgICAgICAgICAgICAgICAgICAgKHBhcnRzLmxlbmd0aCA+IDAgPyAnbGVhZmxldC1jb250cm9sLWdlb2NvZGVyLWFkZHJlc3MtZGV0YWlsJyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgICciPntwb3N0Y29kZX0ge2NpdHl9IHt0b3dufSB7dmlsbGFnZX0ge2hhbWxldH08L3NwYW4+JwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGEuc3RhdGUgfHwgYS5jb3VudHJ5KSB7CiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaCgKICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSInICsKICAgICAgICAgICAgICAgICAgICAgICAgKHBhcnRzLmxlbmd0aCA+IDAgPyAnbGVhZmxldC1jb250cm9sLWdlb2NvZGVyLWFkZHJlc3MtY29udGV4dCcgOiAnJykgKwogICAgICAgICAgICAgICAgICAgICAgICAnIj57c3RhdGV9IHtjb3VudHJ5fTwvc3Bhbj4nCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGUocGFydHMuam9pbignPGJyLz4nKSwgYSwgdHJ1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgICAgIEwuVXRpbC5zZXRPcHRpb25zKHRoaXMsIG9wdGlvbnMpOwogICAgICAgIH0sCgogICAgICAgIGdlb2NvZGU6IGZ1bmN0aW9uKHF1ZXJ5LCBjYiwgY29udGV4dCkgewogICAgICAgICAgICBnZXRKU09OKAogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNlcnZpY2VVcmwgKyAnc2VhcmNoJywKICAgICAgICAgICAgICAgIEwuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgcTogcXVlcnksCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0OiA1LAogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdqc29uJywKICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2RldGFpbHM6IDEKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5nZW9jb2RpbmdRdWVyeVBhcmFtcwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIEwuYmluZChmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gZGF0YS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmJveCA9IGRhdGFbaV0uYm91bmRpbmdib3g7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKSBiYm94W2pdID0gcGFyc2VGbG9hdChiYm94W2pdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGRhdGFbaV0uaWNvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGRhdGFbaV0uZGlzcGxheV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogdGhpcy5vcHRpb25zLmh0bWxUZW1wbGF0ZSA/IHRoaXMub3B0aW9ucy5odG1sVGVtcGxhdGUoZGF0YVtpXSkgOiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94OiBMLmxhdExuZ0JvdW5kcyhbYmJveFswXSwgYmJveFsyXV0sIFtiYm94WzFdLCBiYm94WzNdXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IEwubGF0TG5nKGRhdGFbaV0ubGF0LCBkYXRhW2ldLmxvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBkYXRhW2ldCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNiLmNhbGwoY29udGV4dCwgcmVzdWx0cyk7CiAgICAgICAgICAgICAgICB9LCB0aGlzKQogICAgICAgICAgICApOwogICAgICAgIH0sCgogICAgICAgIHJldmVyc2U6IGZ1bmN0aW9uKGxvY2F0aW9uLCBzY2FsZSwgY2IsIGNvbnRleHQpIHsKICAgICAgICAgICAgZ2V0SlNPTigKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXJ2aWNlVXJsICsgJ3JldmVyc2UnLAogICAgICAgICAgICAgICAgTC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IGxvY2F0aW9uLmxhdCwKICAgICAgICAgICAgICAgICAgICAgICAgbG9uOiBsb2NhdGlvbi5sbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IE1hdGgucm91bmQoTWF0aC5sb2coc2NhbGUgLyAyNTYpIC8gTWF0aC5sb2coMikpLAogICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZGV0YWlsczogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnanNvbicKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5yZXZlcnNlUXVlcnlQYXJhbXMKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBMLmJpbmQoZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9jOwoKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxhdCAmJiBkYXRhLmxvbikgewogICAgICAgICAgICAgICAgICAgICAgICBsb2MgPSBMLmxhdExuZyhkYXRhLmxhdCwgZGF0YS5sb24pOwogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLmRpc3BsYXlfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IHRoaXMub3B0aW9ucy5odG1sVGVtcGxhdGUgPyB0aGlzLm9wdGlvbnMuaHRtbFRlbXBsYXRlKGRhdGEpIDogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHM6IEwubGF0TG5nQm91bmRzKGxvYywgbG9jKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIHJlc3VsdCk7CiAgICAgICAgICAgICAgICB9LCB0aGlzKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0pOwoKICAgIGZ1bmN0aW9uIG5vbWluYXRpbShvcHRpb25zKSB7CiAgICAgICAgcmV0dXJuIG5ldyBOb21pbmF0aW0ob3B0aW9ucyk7CiAgICB9CgogICAgdmFyIE9wZW5Mb2NhdGlvbkNvZGUgPSBMLkNsYXNzLmV4dGVuZCh7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBPcGVuTG9jYXRpb25Db2RlOiB1bmRlZmluZWQsCiAgICAgICAgICAgIGNvZGVMZW5ndGg6IHVuZGVmaW5lZAogICAgICAgIH0sCgogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAgICAgTC5zZXRPcHRpb25zKHRoaXMsIG9wdGlvbnMpOwogICAgICAgIH0sCgogICAgICAgIGdlb2NvZGU6IGZ1bmN0aW9uKHF1ZXJ5LCBjYiwgY29udGV4dCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgdmFyIGRlY29kZWQgPSB0aGlzLm9wdGlvbnMuT3BlbkxvY2F0aW9uQ29kZS5kZWNvZGUocXVlcnkpOwogICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiBxdWVyeSwKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IEwubGF0TG5nKGRlY29kZWQubGF0aXR1ZGVDZW50ZXIsIGRlY29kZWQubG9uZ2l0dWRlQ2VudGVyKSwKICAgICAgICAgICAgICAgICAgICBiYm94OiBMLmxhdExuZ0JvdW5kcygKICAgICAgICAgICAgICAgICAgICAgICAgTC5sYXRMbmcoZGVjb2RlZC5sYXRpdHVkZUxvLCBkZWNvZGVkLmxvbmdpdHVkZUxvKSwKICAgICAgICAgICAgICAgICAgICAgICAgTC5sYXRMbmcoZGVjb2RlZC5sYXRpdHVkZUhpLCBkZWNvZGVkLmxvbmdpdHVkZUhpKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIFtyZXN1bHRdKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKICAgICAgICAgICAgICAgIGNiLmNhbGwoY29udGV4dCwgW10pOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZXZlcnNlOiBmdW5jdGlvbihsb2NhdGlvbiwgc2NhbGUsIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2YXIgY29kZSA9IHRoaXMub3B0aW9ucy5PcGVuTG9jYXRpb25Db2RlLmVuY29kZSgKICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5sYXQsCiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ubG5nLAogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jb2RlTGVuZ3RoCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb2RlLAogICAgICAgICAgICAgICAgICAgIGNlbnRlcjogTC5sYXRMbmcobG9jYXRpb24ubGF0LCBsb2NhdGlvbi5sbmcpLAogICAgICAgICAgICAgICAgICAgIGJib3g6IEwubGF0TG5nQm91bmRzKAogICAgICAgICAgICAgICAgICAgICAgICBMLmxhdExuZyhsb2NhdGlvbi5sYXQsIGxvY2F0aW9uLmxuZyksCiAgICAgICAgICAgICAgICAgICAgICAgIEwubGF0TG5nKGxvY2F0aW9uLmxhdCwgbG9jYXRpb24ubG5nKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBjYi5jYWxsKGNvbnRleHQsIFtyZXN1bHRdKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKICAgICAgICAgICAgICAgIGNiLmNhbGwoY29udGV4dCwgW10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CgogICAgZnVuY3Rpb24gb3BlbkxvY2F0aW9uQ29kZShvcHRpb25zKSB7CiAgICAgICAgcmV0dXJuIG5ldyBPcGVuTG9jYXRpb25Db2RlKG9wdGlvbnMpOwogICAgfQoKICAgIHZhciBQZWxpYXMgPSBMLkNsYXNzLmV4dGVuZCh7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBzZXJ2aWNlVXJsOiAnaHR0cHM6Ly9hcGkuZ2VvY29kZS5lYXJ0aC92MScsCiAgICAgICAgICAgIGdlb2NvZGluZ1F1ZXJ5UGFyYW1zOiB7fSwKICAgICAgICAgICAgcmV2ZXJzZVF1ZXJ5UGFyYW1zOiB7fQogICAgICAgIH0sCgogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGFwaUtleSwgb3B0aW9ucykgewogICAgICAgICAgICBMLlV0aWwuc2V0T3B0aW9ucyh0aGlzLCBvcHRpb25zKTsKICAgICAgICAgICAgdGhpcy5fYXBpS2V5ID0gYXBpS2V5OwogICAgICAgICAgICB0aGlzLl9sYXN0U3VnZ2VzdCA9IDA7CiAgICAgICAgfSwKCiAgICAgICAgZ2VvY29kZTogZnVuY3Rpb24ocXVlcnksIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgICAgICAgIGdldEpTT04oCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2VydmljZVVybCArICcvc2VhcmNoJywKICAgICAgICAgICAgICAgIEwuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgYXBpX2tleTogdGhpcy5fYXBpS2V5LAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBxdWVyeQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmdlb2NvZGluZ1F1ZXJ5UGFyYW1zCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIGNiLmNhbGwoY29udGV4dCwgX3RoaXMuX3BhcnNlUmVzdWx0cyhkYXRhLCAnYmJveCcpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9LAoKICAgICAgICBzdWdnZXN0OiBmdW5jdGlvbihxdWVyeSwgY2IsIGNvbnRleHQpIHsKICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgICAgICAgZ2V0SlNPTigKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXJ2aWNlVXJsICsgJy9hdXRvY29tcGxldGUnLAogICAgICAgICAgICAgICAgTC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICBhcGlfa2V5OiB0aGlzLl9hcGlLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2VvY29kaW5nUXVlcnlQYXJhbXMKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBMLmJpbmQoZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmdlb2NvZGluZy50aW1lc3RhbXAgPiB0aGlzLl9sYXN0U3VnZ2VzdCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0U3VnZ2VzdCA9IGRhdGEuZ2VvY29kaW5nLnRpbWVzdGFtcDsKICAgICAgICAgICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCBfdGhpcy5fcGFyc2VSZXN1bHRzKGRhdGEsICdiYm94JykpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHRoaXMpCiAgICAgICAgICAgICk7CiAgICAgICAgfSwKCiAgICAgICAgcmV2ZXJzZTogZnVuY3Rpb24obG9jYXRpb24sIHNjYWxlLCBjYiwgY29udGV4dCkgewogICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICAgICAgICBnZXRKU09OKAogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNlcnZpY2VVcmwgKyAnL3JldmVyc2UnLAogICAgICAgICAgICAgICAgTC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICBhcGlfa2V5OiB0aGlzLl9hcGlLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludC5sYXQnOiBsb2NhdGlvbi5sYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludC5sb24nOiBsb2NhdGlvbi5sbmcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5yZXZlcnNlUXVlcnlQYXJhbXMKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCBfdGhpcy5fcGFyc2VSZXN1bHRzKGRhdGEsICdib3VuZHMnKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfSwKCiAgICAgICAgX3BhcnNlUmVzdWx0czogZnVuY3Rpb24oZGF0YSwgYmJveG5hbWUpIHsKICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAgICAgICAgTC5nZW9Kc29uKGRhdGEsIHsKICAgICAgICAgICAgICAgIHBvaW50VG9MYXllcjogZnVuY3Rpb24oZmVhdHVyZSwgbGF0bG5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEwuY2lyY2xlTWFya2VyKGxhdGxuZyk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogZnVuY3Rpb24oZmVhdHVyZSwgbGF5ZXIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGJib3gsCiAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGxheWVyLmdldEJvdW5kcykgewogICAgICAgICAgICAgICAgICAgICAgICBiYm94ID0gbGF5ZXIuZ2V0Qm91bmRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlciA9IGJib3guZ2V0Q2VudGVyKCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXllci5mZWF0dXJlLmJib3gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyID0gbGF5ZXIuZ2V0TGF0TG5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJib3ggPSBMLmxhdExuZ0JvdW5kcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwuR2VvSlNPTi5jb29yZHNUb0xhdExuZyhsYXllci5mZWF0dXJlLmJib3guc2xpY2UoMCwgMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTC5HZW9KU09OLmNvb3Jkc1RvTGF0TG5nKGxheWVyLmZlYXR1cmUuYmJveC5zbGljZSgyLCA0KSkKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXIgPSBsYXllci5nZXRMYXRMbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYmJveCA9IEwubGF0TG5nQm91bmRzKGNlbnRlciwgY2VudGVyKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gbGF5ZXIuZmVhdHVyZS5wcm9wZXJ0aWVzLmxhYmVsOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jZW50ZXIgPSBjZW50ZXI7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2Jib3huYW1lXSA9IGJib3g7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnByb3BlcnRpZXMgPSBsYXllci5mZWF0dXJlLnByb3BlcnRpZXM7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICB9CiAgICB9KTsKCiAgICBmdW5jdGlvbiBwZWxpYXMoYXBpS2V5LCBvcHRpb25zKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQZWxpYXMoYXBpS2V5LCBvcHRpb25zKTsKICAgIH0KICAgIHZhciBHZW9jb2RlRWFydGggPSBQZWxpYXM7CiAgICB2YXIgZ2VvY29kZUVhcnRoID0gcGVsaWFzOwoKICAgIHZhciBNYXB6ZW4gPSBQZWxpYXM7IC8vIHIuaS5wLgogICAgdmFyIG1hcHplbiA9IHBlbGlhczsKCiAgICB2YXIgT3BlbnJvdXRlc2VydmljZSA9IE1hcHplbi5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgc2VydmljZVVybDogJ2h0dHBzOi8vYXBpLm9wZW5yb3V0ZXNlcnZpY2Uub3JnL2dlb2NvZGUnCiAgICAgICAgfQogICAgfSk7CgogICAgZnVuY3Rpb24gb3BlbnJvdXRlc2VydmljZShhcGlLZXksIG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IE9wZW5yb3V0ZXNlcnZpY2UoYXBpS2V5LCBvcHRpb25zKTsKICAgIH0KCiAgICB2YXIgUGhvdG9uID0gTC5DbGFzcy5leHRlbmQoewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgc2VydmljZVVybDogJ2h0dHBzOi8vcGhvdG9uLmtvbW9vdC5kZS9hcGkvJywKICAgICAgICAgICAgcmV2ZXJzZVVybDogJ2h0dHBzOi8vcGhvdG9uLmtvbW9vdC5kZS9yZXZlcnNlLycsCiAgICAgICAgICAgIG5hbWVQcm9wZXJ0aWVzOiBbJ25hbWUnLCAnc3RyZWV0JywgJ3N1YnVyYicsICdoYW1sZXQnLCAndG93bicsICdjaXR5JywgJ3N0YXRlJywgJ2NvdW50cnknXQogICAgICAgIH0sCgogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAgICAgTC5zZXRPcHRpb25zKHRoaXMsIG9wdGlvbnMpOwogICAgICAgIH0sCgogICAgICAgIGdlb2NvZGU6IGZ1bmN0aW9uKHF1ZXJ5LCBjYiwgY29udGV4dCkgewogICAgICAgICAgICB2YXIgcGFyYW1zID0gTC5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIHE6IHF1ZXJ5CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmdlb2NvZGluZ1F1ZXJ5UGFyYW1zCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBnZXRKU09OKAogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNlcnZpY2VVcmwsCiAgICAgICAgICAgICAgICBwYXJhbXMsCiAgICAgICAgICAgICAgICBMLmJpbmQoZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgIGNiLmNhbGwoY29udGV4dCwgdGhpcy5fZGVjb2RlRmVhdHVyZXMoZGF0YSkpOwogICAgICAgICAgICAgICAgfSwgdGhpcykKICAgICAgICAgICAgKTsKICAgICAgICB9LAoKICAgICAgICBzdWdnZXN0OiBmdW5jdGlvbihxdWVyeSwgY2IsIGNvbnRleHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VvY29kZShxdWVyeSwgY2IsIGNvbnRleHQpOwogICAgICAgIH0sCgogICAgICAgIHJldmVyc2U6IGZ1bmN0aW9uKGxhdExuZywgc2NhbGUsIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBMLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgbGF0OiBsYXRMbmcubGF0LAogICAgICAgICAgICAgICAgICAgIGxvbjogbGF0TG5nLmxuZwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5yZXZlcnNlUXVlcnlQYXJhbXMKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGdldEpTT04oCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucmV2ZXJzZVVybCwKICAgICAgICAgICAgICAgIHBhcmFtcywKICAgICAgICAgICAgICAgIEwuYmluZChmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCB0aGlzLl9kZWNvZGVGZWF0dXJlcyhkYXRhKSk7CiAgICAgICAgICAgICAgICB9LCB0aGlzKQogICAgICAgICAgICApOwogICAgICAgIH0sCgogICAgICAgIF9kZWNvZGVGZWF0dXJlczogZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtdLAogICAgICAgICAgICAgICAgaSwKICAgICAgICAgICAgICAgIGYsCiAgICAgICAgICAgICAgICBjLAogICAgICAgICAgICAgICAgbGF0TG5nLAogICAgICAgICAgICAgICAgZXh0ZW50LAogICAgICAgICAgICAgICAgYmJveDsKCiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuZmVhdHVyZXMpIHsKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkYXRhLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgZiA9IGRhdGEuZmVhdHVyZXNbaV07CiAgICAgICAgICAgICAgICAgICAgYyA9IGYuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7CiAgICAgICAgICAgICAgICAgICAgbGF0TG5nID0gTC5sYXRMbmcoY1sxXSwgY1swXSk7CiAgICAgICAgICAgICAgICAgICAgZXh0ZW50ID0gZi5wcm9wZXJ0aWVzLmV4dGVudDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGV4dGVudCkgewogICAgICAgICAgICAgICAgICAgICAgICBiYm94ID0gTC5sYXRMbmdCb3VuZHMoW2V4dGVudFsxXSwgZXh0ZW50WzBdXSwgW2V4dGVudFszXSwgZXh0ZW50WzJdXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmJveCA9IEwubGF0TG5nQm91bmRzKGxhdExuZywgbGF0TG5nKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuX2RlY29kZUZlYXR1cmVOYW1lKGYpLAogICAgICAgICAgICAgICAgICAgICAgICBodG1sOiB0aGlzLm9wdGlvbnMuaHRtbFRlbXBsYXRlID8gdGhpcy5vcHRpb25zLmh0bWxUZW1wbGF0ZShmKSA6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBsYXRMbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGJib3g6IGJib3gsCiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IGYucHJvcGVydGllcwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICB9LAoKICAgICAgICBfZGVjb2RlRmVhdHVyZU5hbWU6IGZ1bmN0aW9uKGYpIHsKICAgICAgICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbnMubmFtZVByb3BlcnRpZXMgfHwgW10pCiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKHApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5wcm9wZXJ0aWVzW3BdOwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24odikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXY7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmpvaW4oJywgJyk7CiAgICAgICAgfQogICAgfSk7CgogICAgZnVuY3Rpb24gcGhvdG9uKG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IFBob3RvbihvcHRpb25zKTsKICAgIH0KCiAgICB2YXIgV2hhdDNXb3JkcyA9IEwuQ2xhc3MuZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHNlcnZpY2VVcmw6ICdodHRwczovL2FwaS53aGF0M3dvcmRzLmNvbS92Mi8nCiAgICAgICAgfSwKCiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYWNjZXNzVG9rZW4pIHsKICAgICAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW4gPSBhY2Nlc3NUb2tlbjsKICAgICAgICB9LAoKICAgICAgICBnZW9jb2RlOiBmdW5jdGlvbihxdWVyeSwgY2IsIGNvbnRleHQpIHsKICAgICAgICAgICAgLy9nZXQgdGhyZWUgd29yZHMgYW5kIG1ha2UgYSBkb3QgYmFzZWQgc3RyaW5nCiAgICAgICAgICAgIGdldEpTT04oCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2VydmljZVVybCArICdmb3J3YXJkJywgewogICAgICAgICAgICAgICAgICAgIGtleTogdGhpcy5fYWNjZXNzVG9rZW4sCiAgICAgICAgICAgICAgICAgICAgYWRkcjogcXVlcnkuc3BsaXQoL1xzKy8pLmpvaW4oJy4nKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhdExuZ0JvdW5kczsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eSgnZ2VvbWV0cnknKSkgewogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmcgPSBMLmxhdExuZyhkYXRhLmdlb21ldHJ5WydsYXQnXSwgZGF0YS5nZW9tZXRyeVsnbG5nJ10pOwogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmdCb3VuZHMgPSBMLmxhdExuZ0JvdW5kcyhsYXRMbmcsIGxhdExuZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbMF0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLndvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveDogbGF0TG5nQm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBsYXRMbmcKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGNiLmNhbGwoY29udGV4dCwgcmVzdWx0cyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfSwKCiAgICAgICAgc3VnZ2VzdDogZnVuY3Rpb24ocXVlcnksIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlb2NvZGUocXVlcnksIGNiLCBjb250ZXh0KTsKICAgICAgICB9LAoKICAgICAgICByZXZlcnNlOiBmdW5jdGlvbihsb2NhdGlvbiwgc2NhbGUsIGNiLCBjb250ZXh0KSB7CiAgICAgICAgICAgIGdldEpTT04oCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2VydmljZVVybCArICdyZXZlcnNlJywgewogICAgICAgICAgICAgICAgICAgIGtleTogdGhpcy5fYWNjZXNzVG9rZW4sCiAgICAgICAgICAgICAgICAgICAgY29vcmRzOiBbbG9jYXRpb24ubGF0LCBsb2NhdGlvbi5sbmddLmpvaW4oJywnKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhdExuZ0JvdW5kczsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMuc3RhdHVzID09IDIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmcgPSBMLmxhdExuZyhkYXRhLmdlb21ldHJ5WydsYXQnXSwgZGF0YS5nZW9tZXRyeVsnbG5nJ10pOwogICAgICAgICAgICAgICAgICAgICAgICBsYXRMbmdCb3VuZHMgPSBMLmxhdExuZ0JvdW5kcyhsYXRMbmcsIGxhdExuZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbMF0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLndvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveDogbGF0TG5nQm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBsYXRMbmcKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY2IuY2FsbChjb250ZXh0LCByZXN1bHRzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9KTsKCiAgICBmdW5jdGlvbiB3aGF0M3dvcmRzKGFjY2Vzc1Rva2VuKSB7CiAgICAgICAgcmV0dXJuIG5ldyBXaGF0M1dvcmRzKGFjY2Vzc1Rva2VuKTsKICAgIH0KCgoKICAgIHZhciBnZW9jb2RlcnMgPSAvKiNfX1BVUkVfXyovIE9iamVjdC5mcmVlemUoewogICAgICAgIEFyY0dpczogQXJjR2lzLAogICAgICAgIGFyY2dpczogYXJjZ2lzLAogICAgICAgIEJpbmc6IEJpbmcsCiAgICAgICAgYmluZzogYmluZywKICAgICAgICBHb29nbGU6IEdvb2dsZSwKICAgICAgICBnb29nbGU6IGdvb2dsZSwKICAgICAgICBIRVJFOiBIRVJFLAogICAgICAgIGhlcmU6IGhlcmUsCiAgICAgICAgTGF0TG5nOiBMYXRMbmcsCiAgICAgICAgbGF0TG5nOiBsYXRMbmcsCiAgICAgICAgTWFwYm94OiBNYXBib3gsCiAgICAgICAgbWFwYm94OiBtYXBib3gsCiAgICAgICAgTWFwUXVlc3Q6IE1hcFF1ZXN0LAogICAgICAgIG1hcFF1ZXN0OiBtYXBRdWVzdCwKICAgICAgICBOZXV0cmlubzogTmV1dHJpbm8sCiAgICAgICAgbmV1dHJpbm86IG5ldXRyaW5vLAogICAgICAgIE5vbWluYXRpbTogTm9taW5hdGltLAogICAgICAgIG5vbWluYXRpbTogbm9taW5hdGltLAogICAgICAgIE9wZW5Mb2NhdGlvbkNvZGU6IE9wZW5Mb2NhdGlvbkNvZGUsCiAgICAgICAgb3BlbkxvY2F0aW9uQ29kZTogb3BlbkxvY2F0aW9uQ29kZSwKICAgICAgICBQZWxpYXM6IFBlbGlhcywKICAgICAgICBwZWxpYXM6IHBlbGlhcywKICAgICAgICBHZW9jb2RlRWFydGg6IEdlb2NvZGVFYXJ0aCwKICAgICAgICBnZW9jb2RlRWFydGg6IGdlb2NvZGVFYXJ0aCwKICAgICAgICBNYXB6ZW46IE1hcHplbiwKICAgICAgICBtYXB6ZW46IG1hcHplbiwKICAgICAgICBPcGVucm91dGVzZXJ2aWNlOiBPcGVucm91dGVzZXJ2aWNlLAogICAgICAgIG9wZW5yb3V0ZXNlcnZpY2U6IG9wZW5yb3V0ZXNlcnZpY2UsCiAgICAgICAgUGhvdG9uOiBQaG90b24sCiAgICAgICAgcGhvdG9uOiBwaG90b24sCiAgICAgICAgV2hhdDNXb3JkczogV2hhdDNXb3JkcywKICAgICAgICB3aGF0M3dvcmRzOiB3aGF0M3dvcmRzCiAgICB9KTsKCiAgICB2YXIgR2VvY29kZXIgPSBMLkNvbnRyb2wuZXh0ZW5kKHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHNob3dSZXN1bHRJY29uczogZmFsc2UsCiAgICAgICAgICAgIGNvbGxhcHNlZDogdHJ1ZSwKICAgICAgICAgICAgZXhwYW5kOiAndG91Y2gnLCAvLyBvcHRpb25zOiB0b3VjaCwgY2xpY2ssIGFueXRoaW5nZWxzZQogICAgICAgICAgICBwb3NpdGlvbjogJ3RvcHJpZ2h0JywKICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWFyY2guLi4nLAogICAgICAgICAgICBlcnJvck1lc3NhZ2U6ICdOb3RoaW5nIGZvdW5kLicsCiAgICAgICAgICAgIHF1ZXJ5TWluTGVuZ3RoOiAxLAogICAgICAgICAgICBzdWdnZXN0TWluTGVuZ3RoOiAzLAogICAgICAgICAgICBzdWdnZXN0VGltZW91dDogMjUwLAogICAgICAgICAgICBkZWZhdWx0TWFya0dlb2NvZGU6IHRydWUKICAgICAgICB9LAoKICAgICAgICBpbmNsdWRlczogTC5FdmVudGVkLnByb3RvdHlwZSB8fCBMLk1peGluLkV2ZW50cywKCiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgICAgICBMLlV0aWwuc2V0T3B0aW9ucyh0aGlzLCBvcHRpb25zKTsKICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZ2VvY29kZXIpIHsKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5nZW9jb2RlciA9IG5ldyBOb21pbmF0aW0oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5fcmVxdWVzdENvdW50ID0gMDsKICAgICAgICB9LAoKICAgICAgICBhZGRUaHJvYmJlckNsYXNzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgTC5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX2NvbnRhaW5lciwgJ2xlYWZsZXQtY29udHJvbC1nZW9jb2Rlci10aHJvYmJlcicpOwogICAgICAgIH0sCgogICAgICAgIHJlbW92ZVRocm9iYmVyQ2xhc3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBMLkRvbVV0aWwucmVtb3ZlQ2xhc3ModGhpcy5fY29udGFpbmVyLCAnbGVhZmxldC1jb250cm9sLWdlb2NvZGVyLXRocm9iYmVyJyk7CiAgICAgICAgfSwKCiAgICAgICAgb25BZGQ6IGZ1bmN0aW9uKG1hcCkgewogICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gJ2xlYWZsZXQtY29udHJvbC1nZW9jb2RlcicsCiAgICAgICAgICAgICAgICBjb250YWluZXIgPSBMLkRvbVV0aWwuY3JlYXRlKCdkaXYnLCBjbGFzc05hbWUgKyAnIGxlYWZsZXQtYmFyJyksCiAgICAgICAgICAgICAgICBpY29uID0gTC5Eb21VdGlsLmNyZWF0ZSgnYnV0dG9uJywgY2xhc3NOYW1lICsgJy1pY29uJywgY29udGFpbmVyKSwKICAgICAgICAgICAgICAgIGZvcm0gPSAodGhpcy5fZm9ybSA9IEwuRG9tVXRpbC5jcmVhdGUoJ2RpdicsIGNsYXNzTmFtZSArICctZm9ybScsIGNvbnRhaW5lcikpLAogICAgICAgICAgICAgICAgaW5wdXQ7CgogICAgICAgICAgICB0aGlzLl9tYXAgPSBtYXA7CiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKCiAgICAgICAgICAgIGljb24uaW5uZXJIVE1MID0gJyZuYnNwOyc7CiAgICAgICAgICAgIGljb24udHlwZSA9ICdidXR0b24nOwoKICAgICAgICAgICAgaW5wdXQgPSB0aGlzLl9pbnB1dCA9IEwuRG9tVXRpbC5jcmVhdGUoJ2lucHV0JywgJycsIGZvcm0pOwogICAgICAgICAgICBpbnB1dC50eXBlID0gJ3RleHQnOwogICAgICAgICAgICBpbnB1dC5wbGFjZWhvbGRlciA9IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcjsKICAgICAgICAgICAgTC5Eb21FdmVudC5kaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbihpbnB1dCk7CgogICAgICAgICAgICB0aGlzLl9lcnJvckVsZW1lbnQgPSBMLkRvbVV0aWwuY3JlYXRlKCdkaXYnLCBjbGFzc05hbWUgKyAnLWZvcm0tbm8tZXJyb3InLCBjb250YWluZXIpOwogICAgICAgICAgICB0aGlzLl9lcnJvckVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmVycm9yTWVzc2FnZTsKCiAgICAgICAgICAgIHRoaXMuX2FsdHMgPSBMLkRvbVV0aWwuY3JlYXRlKAogICAgICAgICAgICAgICAgJ3VsJywKICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArICctYWx0ZXJuYXRpdmVzIGxlYWZsZXQtY29udHJvbC1nZW9jb2Rlci1hbHRlcm5hdGl2ZXMtbWluaW1pemVkJywKICAgICAgICAgICAgICAgIGNvbnRhaW5lcgogICAgICAgICAgICApOwogICAgICAgICAgICBMLkRvbUV2ZW50LmRpc2FibGVDbGlja1Byb3BhZ2F0aW9uKHRoaXMuX2FsdHMpOwoKICAgICAgICAgICAgTC5Eb21FdmVudC5hZGRMaXN0ZW5lcihpbnB1dCwgJ2tleWRvd24nLCB0aGlzLl9rZXlkb3duLCB0aGlzKTsKICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5nZW9jb2Rlci5zdWdnZXN0KSB7CiAgICAgICAgICAgICAgICBMLkRvbUV2ZW50LmFkZExpc3RlbmVyKGlucHV0LCAnaW5wdXQnLCB0aGlzLl9jaGFuZ2UsIHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEwuRG9tRXZlbnQuYWRkTGlzdGVuZXIoCiAgICAgICAgICAgICAgICBpbnB1dCwKICAgICAgICAgICAgICAgICdibHVyJywKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29sbGFwc2VkICYmICF0aGlzLl9wcmV2ZW50Qmx1ckNvbGxhcHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbGxhcHNlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZlbnRCbHVyQ29sbGFwc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0aGlzCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbGxhcHNlZCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5leHBhbmQgPT09ICdjbGljaycpIHsKICAgICAgICAgICAgICAgICAgICBMLkRvbUV2ZW50LmFkZExpc3RlbmVyKAogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICdjbGljaycsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmJ1dHRvbiA9PT0gMCAmJiBlLmRldGFpbCAhPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0aGlzCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTC5Ccm93c2VyLnRvdWNoICYmIHRoaXMub3B0aW9ucy5leHBhbmQgPT09ICd0b3VjaCcpIHsKICAgICAgICAgICAgICAgICAgICBMLkRvbUV2ZW50LmFkZExpc3RlbmVyKAogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICd0b3VjaHN0YXJ0IG1vdXNlZG93bicsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAvLyBtb2JpbGU6IGNsaWNraW5nIGZvY3VzZXMgdGhlIGljb24sIHNvIFVJIGV4cGFuZHMgYW5kIGltbWVkaWF0ZWx5IGNvbGxhcHNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIEwuRG9tRXZlbnQuYWRkTGlzdGVuZXIoY29udGFpbmVyLCAnbW91c2VvdmVyJywgdGhpcy5fZXhwYW5kLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICBMLkRvbUV2ZW50LmFkZExpc3RlbmVyKGNvbnRhaW5lciwgJ21vdXNlb3V0JywgdGhpcy5fY29sbGFwc2UsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX21hcC5vbignbW92ZXN0YXJ0JywgdGhpcy5fY29sbGFwc2UsIHRoaXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fZXhwYW5kKCk7CiAgICAgICAgICAgICAgICBpZiAoTC5Ccm93c2VyLnRvdWNoKSB7CiAgICAgICAgICAgICAgICAgICAgTC5Eb21FdmVudC5hZGRMaXN0ZW5lcigKICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAndG91Y2hzdGFydCcsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2VvY29kZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0aGlzCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgTC5Eb21FdmVudC5hZGRMaXN0ZW5lcigKICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAnY2xpY2snLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dlb2NvZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVmYXVsdE1hcmtHZW9jb2RlKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9uKCdtYXJrZ2VvY29kZScsIHRoaXMubWFya0dlb2NvZGUsIHRoaXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLm9uKCdzdGFydGdlb2NvZGUnLCB0aGlzLmFkZFRocm9iYmVyQ2xhc3MsIHRoaXMpOwogICAgICAgICAgICB0aGlzLm9uKCdmaW5pc2hnZW9jb2RlJywgdGhpcy5yZW1vdmVUaHJvYmJlckNsYXNzLCB0aGlzKTsKICAgICAgICAgICAgdGhpcy5vbignc3RhcnRzdWdnZXN0JywgdGhpcy5hZGRUaHJvYmJlckNsYXNzLCB0aGlzKTsKICAgICAgICAgICAgdGhpcy5vbignZmluaXNoc3VnZ2VzdCcsIHRoaXMucmVtb3ZlVGhyb2JiZXJDbGFzcywgdGhpcyk7CgogICAgICAgICAgICBMLkRvbUV2ZW50LmRpc2FibGVDbGlja1Byb3BhZ2F0aW9uKGNvbnRhaW5lcik7CgogICAgICAgICAgICByZXR1cm4gY29udGFpbmVyOwogICAgICAgIH0sCgogICAgICAgIF9nZW9jb2RlUmVzdWx0OiBmdW5jdGlvbihyZXN1bHRzLCBzdWdnZXN0KSB7CiAgICAgICAgICAgIGlmICghc3VnZ2VzdCAmJiByZXN1bHRzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgdGhpcy5fZ2VvY29kZVJlc3VsdFNlbGVjdGVkKHJlc3VsdHNbMF0pOwogICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgdGhpcy5fYWx0cy5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3VsdHMgPSByZXN1bHRzOwogICAgICAgICAgICAgICAgTC5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX2FsdHMsICdsZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXItYWx0ZXJuYXRpdmVzLW1pbmltaXplZCcpOwogICAgICAgICAgICAgICAgTC5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX2NvbnRhaW5lciwgJ2xlYWZsZXQtY29udHJvbC1nZW9jb2Rlci1vcHRpb25zLW9wZW4nKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2FsdHMuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQWx0KHJlc3VsdHNbaV0sIGkpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEwuRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9jb250YWluZXIsICdsZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXItb3B0aW9ucy1lcnJvcicpOwogICAgICAgICAgICAgICAgTC5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX2Vycm9yRWxlbWVudCwgJ2xlYWZsZXQtY29udHJvbC1nZW9jb2Rlci1lcnJvcicpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgbWFya0dlb2NvZGU6IGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZ2VvY29kZSB8fCByZXN1bHQ7CgogICAgICAgICAgICB0aGlzLl9tYXAuZml0Qm91bmRzKHJlc3VsdC5iYm94KTsKCiAgICAgICAgICAgIGlmICh0aGlzLl9nZW9jb2RlTWFya2VyKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9tYXAucmVtb3ZlTGF5ZXIodGhpcy5fZ2VvY29kZU1hcmtlcik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRoaXMuX2dlb2NvZGVNYXJrZXIgPSBuZXcgTC5NYXJrZXIocmVzdWx0LmNlbnRlcikKICAgICAgICAgICAgICAgIC5iaW5kUG9wdXAocmVzdWx0Lmh0bWwgfHwgcmVzdWx0Lm5hbWUpCiAgICAgICAgICAgICAgICAuYWRkVG8odGhpcy5fbWFwKQogICAgICAgICAgICAgICAgLm9wZW5Qb3B1cCgpOwoKICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfSwKCiAgICAgICAgX2dlb2NvZGU6IGZ1bmN0aW9uKHN1Z2dlc3QpIHsKICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5faW5wdXQudmFsdWU7CiAgICAgICAgICAgIGlmICghc3VnZ2VzdCAmJiB2YWx1ZS5sZW5ndGggPCB0aGlzLm9wdGlvbnMucXVlcnlNaW5MZW5ndGgpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHJlcXVlc3RDb3VudCA9ICsrdGhpcy5fcmVxdWVzdENvdW50LAogICAgICAgICAgICAgICAgbW9kZSA9IHN1Z2dlc3QgPyAnc3VnZ2VzdCcgOiAnZ2VvY29kZScsCiAgICAgICAgICAgICAgICBldmVudERhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHZhbHVlCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgdGhpcy5fbGFzdEdlb2NvZGUgPSB2YWx1ZTsKICAgICAgICAgICAgaWYgKCFzdWdnZXN0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl9jbGVhclJlc3VsdHMoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5maXJlKCdzdGFydCcgKyBtb2RlLCBldmVudERhdGEpOwogICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2VvY29kZXJbbW9kZV0oCiAgICAgICAgICAgICAgICB2YWx1ZSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJlc3VsdHMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdENvdW50ID09PSB0aGlzLl9yZXF1ZXN0Q291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnREYXRhLnJlc3VsdHMgPSByZXN1bHRzOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcmUoJ2ZpbmlzaCcgKyBtb2RlLCBldmVudERhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZW9jb2RlUmVzdWx0KHJlc3VsdHMsIHN1Z2dlc3QpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0aGlzCiAgICAgICAgICAgICk7CiAgICAgICAgfSwKCiAgICAgICAgX2dlb2NvZGVSZXN1bHRTZWxlY3RlZDogZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgICAgIHRoaXMuZmlyZSgnbWFya2dlb2NvZGUnLCB7CiAgICAgICAgICAgICAgICBnZW9jb2RlOiByZXN1bHQKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgX3RvZ2dsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChMLkRvbVV0aWwuaGFzQ2xhc3ModGhpcy5fY29udGFpbmVyLCAnbGVhZmxldC1jb250cm9sLWdlb2NvZGVyLWV4cGFuZGVkJykpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2NvbGxhcHNlKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLl9leHBhbmQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9leHBhbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBMLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fY29udGFpbmVyLCAnbGVhZmxldC1jb250cm9sLWdlb2NvZGVyLWV4cGFuZGVkJyk7CiAgICAgICAgICAgIHRoaXMuX2lucHV0LnNlbGVjdCgpOwogICAgICAgICAgICB0aGlzLmZpcmUoJ2V4cGFuZCcpOwogICAgICAgIH0sCgogICAgICAgIF9jb2xsYXBzZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIEwuRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9jb250YWluZXIsICdsZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXItZXhwYW5kZWQnKTsKICAgICAgICAgICAgTC5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX2FsdHMsICdsZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXItYWx0ZXJuYXRpdmVzLW1pbmltaXplZCcpOwogICAgICAgICAgICBMLkRvbVV0aWwucmVtb3ZlQ2xhc3ModGhpcy5fZXJyb3JFbGVtZW50LCAnbGVhZmxldC1jb250cm9sLWdlb2NvZGVyLWVycm9yJyk7CiAgICAgICAgICAgIEwuRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9jb250YWluZXIsICdsZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXItb3B0aW9ucy1vcGVuJyk7CiAgICAgICAgICAgIEwuRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9jb250YWluZXIsICdsZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXItb3B0aW9ucy1lcnJvcicpOwogICAgICAgICAgICB0aGlzLl9pbnB1dC5ibHVyKCk7IC8vIG1vYmlsZToga2V5Ym9hcmQgc2hvdWxkbid0IHN0YXkgZXhwYW5kZWQKICAgICAgICAgICAgdGhpcy5maXJlKCdjb2xsYXBzZScpOwogICAgICAgIH0sCgogICAgICAgIF9jbGVhclJlc3VsdHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBMLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fYWx0cywgJ2xlYWZsZXQtY29udHJvbC1nZW9jb2Rlci1hbHRlcm5hdGl2ZXMtbWluaW1pemVkJyk7CiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IG51bGw7CiAgICAgICAgICAgIEwuRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9lcnJvckVsZW1lbnQsICdsZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXItZXJyb3InKTsKICAgICAgICAgICAgTC5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX2NvbnRhaW5lciwgJ2xlYWZsZXQtY29udHJvbC1nZW9jb2Rlci1vcHRpb25zLW9wZW4nKTsKICAgICAgICAgICAgTC5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX2NvbnRhaW5lciwgJ2xlYWZsZXQtY29udHJvbC1nZW9jb2Rlci1vcHRpb25zLWVycm9yJyk7CiAgICAgICAgfSwKCiAgICAgICAgX2NyZWF0ZUFsdDogZnVuY3Rpb24ocmVzdWx0LCBpbmRleCkgewogICAgICAgICAgICB2YXIgbGkgPSBMLkRvbVV0aWwuY3JlYXRlKCdsaScsICcnKSwKICAgICAgICAgICAgICAgIGEgPSBMLkRvbVV0aWwuY3JlYXRlKCdhJywgJycsIGxpKSwKICAgICAgICAgICAgICAgIGljb24gPSB0aGlzLm9wdGlvbnMuc2hvd1Jlc3VsdEljb25zICYmIHJlc3VsdC5pY29uID8gTC5Eb21VdGlsLmNyZWF0ZSgnaW1nJywgJycsIGEpIDogbnVsbCwKICAgICAgICAgICAgICAgIHRleHQgPSByZXN1bHQuaHRtbCA/IHVuZGVmaW5lZCA6IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlc3VsdC5uYW1lKSwKICAgICAgICAgICAgICAgIG1vdXNlRG93bkhhbmRsZXIgPSBmdW5jdGlvbiBtb3VzZURvd25IYW5kbGVyKGUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJbiBzb21lIGJyb3dzZXJzLCBhIGNsaWNrIHdpbGwgZmlyZSBvbiB0aGUgbWFwIGlmIHRoZSBjb250cm9sIGlzCiAgICAgICAgICAgICAgICAgICAgLy8gY29sbGFwc2VkIGRpcmVjdGx5IGFmdGVyIG1vdXNlZG93bi4gVG8gd29yayBhcm91bmQgdGhpcywgd2UKICAgICAgICAgICAgICAgICAgICAvLyB3YWl0IHVudGlsIHRoZSBjbGljayBpcyBjb21wbGV0ZWQsIGFuZCBfdGhlbl8gY29sbGFwc2UgdGhlCiAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbC4gTWVzc3ksIGJ1dCB0aGlzIGlzIHRoZSB3b3JrYXJvdW5kIEkgY291bGQgY29tZSB1cCB3aXRoCiAgICAgICAgICAgICAgICAgICAgLy8gZm9yICMxNDIuCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJldmVudEJsdXJDb2xsYXBzZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgTC5Eb21FdmVudC5zdG9wKGUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2dlb2NvZGVSZXN1bHRTZWxlY3RlZChyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgIEwuRG9tRXZlbnQub24oCiAgICAgICAgICAgICAgICAgICAgICAgIGxpLAogICAgICAgICAgICAgICAgICAgICAgICAnY2xpY2snLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29sbGFwc2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29sbGFwc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJSZXN1bHRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGlmIChpY29uKSB7CiAgICAgICAgICAgICAgICBpY29uLnNyYyA9IHJlc3VsdC5pY29uOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsaS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmVzdWx0LWluZGV4JywgaW5kZXgpOwoKICAgICAgICAgICAgaWYgKHJlc3VsdC5odG1sKSB7CiAgICAgICAgICAgICAgICBhLmlubmVySFRNTCA9IGEuaW5uZXJIVE1MICsgcmVzdWx0Lmh0bWw7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBhLmFwcGVuZENoaWxkKHRleHQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBVc2UgbW91c2Vkb3duIGFuZCBub3QgY2xpY2ssIHNpbmNlIGNsaWNrIHdpbGwgZmlyZSBfYWZ0ZXJfIGJsdXIsCiAgICAgICAgICAgIC8vIGNhdXNpbmcgdGhlIGNvbnRyb2wgdG8gaGF2ZSBjb2xsYXBzZWQgYW5kIHJlbW92ZWQgdGhlIGl0ZW1zCiAgICAgICAgICAgIC8vIGJlZm9yZSB0aGUgY2xpY2sgY2FuIGZpcmUuCiAgICAgICAgICAgIEwuRG9tRXZlbnQuYWRkTGlzdGVuZXIobGksICdtb3VzZWRvd24gdG91Y2hzdGFydCcsIG1vdXNlRG93bkhhbmRsZXIsIHRoaXMpOwoKICAgICAgICAgICAgcmV0dXJuIGxpOwogICAgICAgIH0sCgogICAgICAgIF9rZXlkb3duOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXMsCiAgICAgICAgICAgICAgICBzZWxlY3QgPSBmdW5jdGlvbiBzZWxlY3QoZGlyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLl9zZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgTC5Eb21VdGlsLnJlbW92ZUNsYXNzKF90aGlzLl9zZWxlY3Rpb24sICdsZWFmbGV0LWNvbnRyb2wtZ2VvY29kZXItc2VsZWN0ZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3NlbGVjdGlvbiA9IF90aGlzLl9zZWxlY3Rpb25bZGlyID4gMCA/ICduZXh0U2libGluZycgOiAncHJldmlvdXNTaWJsaW5nJ107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghX3RoaXMuX3NlbGVjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fc2VsZWN0aW9uID0gX3RoaXMuX2FsdHNbZGlyID4gMCA/ICdmaXJzdENoaWxkJyA6ICdsYXN0Q2hpbGQnXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fc2VsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEwuRG9tVXRpbC5hZGRDbGFzcyhfdGhpcy5fc2VsZWN0aW9uLCAnbGVhZmxldC1jb250cm9sLWdlb2NvZGVyLXNlbGVjdGVkJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7CiAgICAgICAgICAgICAgICAvLyBFc2NhcGUKICAgICAgICAgICAgICAgIGNhc2UgMjc6CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb2xsYXBzZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29sbGFwc2UoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jbGVhclJlc3VsdHMoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgLy8gVXAKICAgICAgICAgICAgICAgIGNhc2UgMzg6CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0KC0xKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAvLyBVcAogICAgICAgICAgICAgICAgY2FzZSA0MDoKICAgICAgICAgICAgICAgICAgICBzZWxlY3QoMSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgLy8gRW50ZXIKICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludCh0aGlzLl9zZWxlY3Rpb24uZ2V0QXR0cmlidXRlKCdkYXRhLXJlc3VsdC1pbmRleCcpLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dlb2NvZGVSZXN1bHRTZWxlY3RlZCh0aGlzLl9yZXN1bHRzW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyUmVzdWx0cygpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dlb2NvZGUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgTC5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdChlKTsKICAgICAgICB9LAogICAgICAgIF9jaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdiA9IHRoaXMuX2lucHV0LnZhbHVlOwogICAgICAgICAgICBpZiAodiAhPT0gdGhpcy5fbGFzdEdlb2NvZGUpIHsKICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zdWdnZXN0VGltZW91dCk7CiAgICAgICAgICAgICAgICBpZiAodi5sZW5ndGggPj0gdGhpcy5vcHRpb25zLnN1Z2dlc3RNaW5MZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0VGltZW91dCA9IHNldFRpbWVvdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEwuYmluZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dlb2NvZGUodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc3VnZ2VzdFRpbWVvdXQKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9jbGVhclJlc3VsdHMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwoKICAgIGZ1bmN0aW9uIGdlb2NvZGVyKG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IEdlb2NvZGVyKG9wdGlvbnMpOwogICAgfQoKICAgIEwuVXRpbC5leHRlbmQoR2VvY29kZXIsIGdlb2NvZGVycyk7CgogICAgTC5VdGlsLmV4dGVuZChMLkNvbnRyb2wsIHsKICAgICAgICBHZW9jb2RlcjogR2VvY29kZXIsCiAgICAgICAgZ2VvY29kZXI6IGdlb2NvZGVyCiAgICB9KTsKCiAgICByZXR1cm4gR2VvY29kZXI7Cgp9KEwpKTs="}},"time_used":1061,"timings":{"blocked":962,"dns":0,"connect":0,"send":0,"wait":98,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/jquery-numerator/jquery-numerator.min.js?ver=0.2.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.481Z","timestamp":1785145482481,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/jquery-numerator/jquery-numerator.min.js?ver=0.2.1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 2766\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":2766,"size_decoded":2982,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"3705e648e3269e8bef456a30b26fa233","sha1":"cb9dd1b0fdd0b46c081104ea7ebcfd3867310603","sha256":"b8489080eaa64d90f6fb3b9733c7997306fb8378d4b785513eaede33a3ab7dce","sha512":"cabae001b2cdd5bef85987f52265f69959ee8d74c4420241c2b9253adf7285cd0fb0e82e3bf662b2b48f768988164e7b99470f31d3fb562489e4ff2d6f05558f","ssdeep":"","tlshash":"4151df09bae62128c24375b5c91f42086235d4671a7abc653d5c51e06f18cbc92b3ff9","first_seen":"2023-07-01T15:13:10Z","last_seen":"2026-07-27T10:21:19.491709Z","times_seen":27,"resource_available":true,"data":"ISBmdW5jdGlvbih0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQpIGRlZmluZShbImpxdWVyeSJdLCB0KTsKICAgIGVsc2UgaWYgKCJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzKSB0KHJlcXVpcmUoImpxdWVyeSIpKTsKICAgIGVsc2UgewogICAgICAgIGlmICgidW5kZWZpbmVkIiA9PSB0eXBlb2YgalF1ZXJ5KSB0aHJvdyAianF1ZXJ5LW51bWVyYXRvciByZXF1aXJlcyBqUXVlcnkgdG8gYmUgbG9hZGVkIGZpcnN0IjsKICAgICAgICB0KGpRdWVyeSkKICAgIH0KfShmdW5jdGlvbih0KSB7CiAgICBmdW5jdGlvbiBlKGUsIHMpIHsKICAgICAgICB0aGlzLmVsZW1lbnQgPSBlLCB0aGlzLnNldHRpbmdzID0gdC5leHRlbmQoe30sIGksIHMpLCB0aGlzLl9kZWZhdWx0cyA9IGksIHRoaXMuX25hbWUgPSBuLCB0aGlzLmluaXQoKQogICAgfQogICAgdmFyIG4gPSAibnVtZXJhdG9yIiwKICAgICAgICBpID0gewogICAgICAgICAgICBlYXNpbmc6ICJzd2luZyIsCiAgICAgICAgICAgIGR1cmF0aW9uOiA1MDAsCiAgICAgICAgICAgIGRlbGltaXRlcjogdm9pZCAwLAogICAgICAgICAgICByb3VuZGluZzogMCwKICAgICAgICAgICAgdG9WYWx1ZTogdm9pZCAwLAogICAgICAgICAgICBmcm9tVmFsdWU6IHZvaWQgMCwKICAgICAgICAgICAgcXVldWU6ICExLAogICAgICAgICAgICBvblN0YXJ0OiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICBvblN0ZXA6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkge30KICAgICAgICB9OwogICAgZS5wcm90b3R5cGUgPSB7CiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMucGFyc2VFbGVtZW50KCksIHRoaXMuc2V0VmFsdWUoKQogICAgICAgIH0sCiAgICAgICAgcGFyc2VFbGVtZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0LnRyaW0odCh0aGlzLmVsZW1lbnQpLnRleHQoKSk7CiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZnJvbVZhbHVlID0gdGhpcy5zZXR0aW5ncy5mcm9tVmFsdWUgfHwgdGhpcy5mb3JtYXQoZSkKICAgICAgICB9LAogICAgICAgIHNldFZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICB0KHsKICAgICAgICAgICAgICAgIHZhbHVlOiBlLnNldHRpbmdzLmZyb21WYWx1ZQogICAgICAgICAgICB9KS5hbmltYXRlKHsKICAgICAgICAgICAgICAgIHZhbHVlOiBlLnNldHRpbmdzLnRvVmFsdWUKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgZHVyYXRpb246IHBhcnNlSW50KGUuc2V0dGluZ3MuZHVyYXRpb24sIDEwKSwKICAgICAgICAgICAgICAgIGVhc2luZzogZS5zZXR0aW5ncy5lYXNpbmcsCiAgICAgICAgICAgICAgICBzdGFydDogZS5zZXR0aW5ncy5vblN0YXJ0LAogICAgICAgICAgICAgICAgc3RlcDogZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICAgICAgICAgIHQoZS5lbGVtZW50KS50ZXh0KGUuZm9ybWF0KG4pKSwgZS5zZXR0aW5ncy5vblN0ZXAobiwgaSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwcm9ncmVzczogZS5zZXR0aW5ncy5vblByb2dyZXNzLAogICAgICAgICAgICAgICAgY29tcGxldGU6IGUuc2V0dGluZ3Mub25Db21wbGV0ZQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZm9ybWF0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgcmV0dXJuIHQgPSBwYXJzZUludCh0aGlzLnNldHRpbmdzLnJvdW5kaW5nKSA8IDEgPyBwYXJzZUludCh0LCAxMCkgOiBwYXJzZUZsb2F0KHQpLnRvRml4ZWQocGFyc2VJbnQodGhpcy5zZXR0aW5ncy5yb3VuZGluZykpLCBlLnNldHRpbmdzLmRlbGltaXRlciA/IHRoaXMuZGVsaW1pdCh0KSA6IHQKICAgICAgICB9LAogICAgICAgIGRlbGltaXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICBpZiAodCA9IHQudG9TdHJpbmcoKSwgZS5zZXR0aW5ncy5yb3VuZGluZyAmJiBwYXJzZUludChlLnNldHRpbmdzLnJvdW5kaW5nLCAxMCkgPiAwKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHQuc3Vic3RyaW5nKHQubGVuZ3RoIC0gKGUuc2V0dGluZ3Mucm91bmRpbmcgKyAxKSwgdC5sZW5ndGgpLAogICAgICAgICAgICAgICAgICAgIGkgPSB0LnN1YnN0cmluZygwLCB0Lmxlbmd0aCAtIChlLnNldHRpbmdzLnJvdW5kaW5nICsgMSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUuYWRkRGVsaW1pdGVyKGkpICsgbgogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlLmFkZERlbGltaXRlcih0KQogICAgICAgIH0sCiAgICAgICAgYWRkRGVsaW1pdGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0LnRvU3RyaW5nKCkucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZywgdGhpcy5zZXR0aW5ncy5kZWxpbWl0ZXIpCiAgICAgICAgfQogICAgfSwgdC5mbltuXSA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0LmRhdGEodGhpcywgInBsdWdpbl8iICsgbikgJiYgdC5kYXRhKHRoaXMsICJwbHVnaW5fIiArIG4sIG51bGwpLCB0LmRhdGEodGhpcywgInBsdWdpbl8iICsgbiwgbmV3IGUodGhpcywgaSkpCiAgICAgICAgfSkKICAgIH0KfSk7"}},"time_used":1158,"timings":{"blocked":1060,"dns":0,"connect":0,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/dist/hooks.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.487Z","timestamp":1785145482487,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/dist/hooks.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Mon, 15 Nov 2021 12:50:17 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=1.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":5690,"size_decoded":2419,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (5655)","md5":"7935d6e0f5c1a8dabaf92fa17cc5e513","sha1":"2623f058ab2e57ad10120675d941c9b78eba82e8","sha256":"e5935466216a250bb06338805b32ffb19eeda9042ead790ebc6e5dda27820adb","sha512":"7f701299dacc1b7fe8d7c6fa25ad119d040d5f645e266069ee30618b2d10aeda6cbbba6f1680e80a7e77a339c9eadf273eeed25e5b2562d79a306ed5d902475d","ssdeep":"96:8EGuVupQg9DE/3sw4Xf/nrURoZabxUezaHh1f5NlnAmzFWHURR5QX:uu3gdg3o4R8abxpMh1x7AA5QX","tlshash":"dfc122c874d2f4b09753702ae0bf5497b37aaaa4381d8480d64d94e13d7258df0b7bae","first_seen":"2023-03-07T01:02:19Z","last_seen":"2026-07-27T13:52:26.893748Z","times_seen":3087,"resource_available":true,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwp0aGlzLndwPXRoaXMud3B8fHt9LHRoaXMud3AuaG9va3M9ZnVuY3Rpb24odCl7dmFyIG49e307ZnVuY3Rpb24gcihlKXtpZihuW2VdKXJldHVybiBuW2VdLmV4cG9ydHM7dmFyIG89bltlXT17aTplLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIHRbZV0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsciksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gci5tPXQsci5jPW4sci5kPWZ1bmN0aW9uKHQsbixlKXtyLm8odCxuKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZX0pfSxyLnI9ZnVuY3Rpb24odCl7InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sci50PWZ1bmN0aW9uKHQsbil7aWYoMSZuJiYodD1yKHQpKSw4Jm4pcmV0dXJuIHQ7aWYoNCZuJiYib2JqZWN0Ij09dHlwZW9mIHQmJnQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHIucihlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pLDImbiYmInN0cmluZyIhPXR5cGVvZiB0KWZvcih2YXIgbyBpbiB0KXIuZChlLG8sZnVuY3Rpb24obil7cmV0dXJuIHRbbl19LmJpbmQobnVsbCxvKSk7cmV0dXJuIGV9LHIubj1mdW5jdGlvbih0KXt2YXIgbj10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gci5kKG4sImEiLG4pLG59LHIubz1mdW5jdGlvbih0LG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKX0sci5wPSIiLHIoci5zPSJnRU9qIil9KHtnRU9qOmZ1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7ci5yKG4pLHIuZChuLCJkZWZhdWx0SG9va3MiLChmdW5jdGlvbigpe3JldHVybiBwfSkpLHIuZChuLCJjcmVhdGVIb29rcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSksci5kKG4sImFkZEFjdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksci5kKG4sImFkZEZpbHRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIG19KSksci5kKG4sInJlbW92ZUFjdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIEF9KSksci5kKG4sInJlbW92ZUZpbHRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIF99KSksci5kKG4sImhhc0FjdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGd9KSksci5kKG4sImhhc0ZpbHRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksci5kKG4sInJlbW92ZUFsbEFjdGlvbnMiLChmdW5jdGlvbigpe3JldHVybiBifSkpLHIuZChuLCJyZW1vdmVBbGxGaWx0ZXJzIiwoZnVuY3Rpb24oKXtyZXR1cm4gRn0pKSxyLmQobiwiZG9BY3Rpb24iLChmdW5jdGlvbigpe3JldHVybiBrfSkpLHIuZChuLCJhcHBseUZpbHRlcnMiLChmdW5jdGlvbigpe3JldHVybiB4fSkpLHIuZChuLCJjdXJyZW50QWN0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gan0pKSxyLmQobiwiY3VycmVudEZpbHRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIE99KSksci5kKG4sImRvaW5nQWN0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gSX0pKSxyLmQobiwiZG9pbmdGaWx0ZXIiLChmdW5jdGlvbigpe3JldHVybiBUfSkpLHIuZChuLCJkaWRBY3Rpb24iLChmdW5jdGlvbigpe3JldHVybiB3fSkpLHIuZChuLCJkaWRGaWx0ZXIiLChmdW5jdGlvbigpe3JldHVybiBQfSkpLHIuZChuLCJhY3Rpb25zIiwoZnVuY3Rpb24oKXtyZXR1cm4gU30pKSxyLmQobiwiZmlsdGVycyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHp9KSk7dmFyIGU9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0fHwiIj09PXQ/KGNvbnNvbGUuZXJyb3IoIlRoZSBuYW1lc3BhY2UgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuIiksITEpOiEhL15bYS16QS1aXVthLXpBLVowLTlfLlwtXC9dKiQvLnRlc3QodCl8fChjb25zb2xlLmVycm9yKCJUaGUgbmFtZXNwYWNlIGNhbiBvbmx5IGNvbnRhaW4gbnVtYmVycywgbGV0dGVycywgZGFzaGVzLCBwZXJpb2RzLCB1bmRlcnNjb3JlcyBhbmQgc2xhc2hlcy4iKSwhMSl9O3ZhciBvPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdHx8IiI9PT10Pyhjb25zb2xlLmVycm9yKCJUaGUgaG9vayBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLiIpLCExKTovXl9fLy50ZXN0KHQpPyhjb25zb2xlLmVycm9yKCJUaGUgaG9vayBuYW1lIGNhbm5vdCBiZWdpbiB3aXRoIGBfX2AuIiksITEpOiEhL15bYS16QS1aXVthLXpBLVowLTlfLi1dKiQvLnRlc3QodCl8fChjb25zb2xlLmVycm9yKCJUaGUgaG9vayBuYW1lIGNhbiBvbmx5IGNvbnRhaW4gbnVtYmVycywgbGV0dGVycywgZGFzaGVzLCBwZXJpb2RzIGFuZCB1bmRlcnNjb3Jlcy4iKSwhMSl9O3ZhciBpPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIsaSxjKXtsZXQgcz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MTA7Y29uc3QgdT10W25dO2lmKCFvKHIpKXJldHVybjtpZighZShpKSlyZXR1cm47aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVGhlIGhvb2sgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2lmKCJudW1iZXIiIT10eXBlb2YgcylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJJZiBzcGVjaWZpZWQsIHRoZSBob29rIHByaW9yaXR5IG11c3QgYmUgYSBudW1iZXIuIik7Y29uc3QgbD17Y2FsbGJhY2s6Yyxwcmlvcml0eTpzLG5hbWVzcGFjZTppfTtpZih1W3JdKXtjb25zdCB0PXVbcl0uaGFuZGxlcnM7bGV0IG47Zm9yKG49dC5sZW5ndGg7bj4wJiYhKHM+PXRbbi0xXS5wcmlvcml0eSk7bi0tKTtuPT09dC5sZW5ndGg/dFtuXT1sOnQuc3BsaWNlKG4sMCxsKSx1Ll9fY3VycmVudC5mb3JFYWNoKHQ9Pnt0Lm5hbWU9PT1yJiZ0LmN1cnJlbnRJbmRleD49biYmdC5jdXJyZW50SW5kZXgrK30pfWVsc2UgdVtyXT17aGFuZGxlcnM6W2xdLHJ1bnM6MH07Imhvb2tBZGRlZCIhPT1yJiZ0LmRvQWN0aW9uKCJob29rQWRkZWQiLHIsaSxjLHMpfX07dmFyIGM9ZnVuY3Rpb24odCxuKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3JldHVybiBmdW5jdGlvbihpLGMpe2NvbnN0IHM9dFtuXTtpZighbyhpKSlyZXR1cm47aWYoIXImJiFlKGMpKXJldHVybjtpZighc1tpXSlyZXR1cm4gMDtsZXQgdT0wO2lmKHIpdT1zW2ldLmhhbmRsZXJzLmxlbmd0aCxzW2ldPXtydW5zOnNbaV0ucnVucyxoYW5kbGVyczpbXX07ZWxzZXtjb25zdCB0PXNbaV0uaGFuZGxlcnM7Zm9yKGxldCBuPXQubGVuZ3RoLTE7bj49MDtuLS0pdFtuXS5uYW1lc3BhY2U9PT1jJiYodC5zcGxpY2UobiwxKSx1Kysscy5fX2N1cnJlbnQuZm9yRWFjaCh0PT57dC5uYW1lPT09aSYmdC5jdXJyZW50SW5kZXg+PW4mJnQuY3VycmVudEluZGV4LS19KSl9cmV0dXJuImhvb2tSZW1vdmVkIiE9PWkmJnQuZG9BY3Rpb24oImhvb2tSZW1vdmVkIixpLGMpLHV9fTt2YXIgcz1mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbihyLGUpe2NvbnN0IG89dFtuXTtyZXR1cm4gdm9pZCAwIT09ZT9yIGluIG8mJm9bcl0uaGFuZGxlcnMuc29tZSh0PT50Lm5hbWVzcGFjZT09PWUpOnIgaW4gb319O3ZhciB1PWZ1bmN0aW9uKHQsbil7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtyZXR1cm4gZnVuY3Rpb24oZSl7Y29uc3Qgbz10W25dO29bZV18fChvW2VdPXtoYW5kbGVyczpbXSxydW5zOjB9KSxvW2VdLnJ1bnMrKztjb25zdCBpPW9bZV0uaGFuZGxlcnM7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgscz1uZXcgQXJyYXkoYz4xP2MtMTowKSx1PTE7dTxjO3UrKylzW3UtMV09YXJndW1lbnRzW3VdO2lmKCFpfHwhaS5sZW5ndGgpcmV0dXJuIHI/c1swXTp2b2lkIDA7Y29uc3QgbD17bmFtZTplLGN1cnJlbnRJbmRleDowfTtmb3Ioby5fX2N1cnJlbnQucHVzaChsKTtsLmN1cnJlbnRJbmRleDxpLmxlbmd0aDspe2NvbnN0IHQ9aVtsLmN1cnJlbnRJbmRleF0uY2FsbGJhY2suYXBwbHkobnVsbCxzKTtyJiYoc1swXT10KSxsLmN1cnJlbnRJbmRleCsrfXJldHVybiBvLl9fY3VycmVudC5wb3AoKSxyP3NbMF06dm9pZCAwfX07dmFyIGw9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixlO2NvbnN0IG89dFtuXTtyZXR1cm4gbnVsbCE9PShyPW51bGw9PT0oZT1vLl9fY3VycmVudFtvLl9fY3VycmVudC5sZW5ndGgtMV0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm5hbWUpJiZ2b2lkIDAhPT1yP3I6bnVsbH19O3ZhciBkPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe2NvbnN0IGU9dFtuXTtyZXR1cm4gdm9pZCAwPT09cj92b2lkIDAhPT1lLl9fY3VycmVudFswXTohIWUuX19jdXJyZW50WzBdJiZyPT09ZS5fX2N1cnJlbnRbMF0ubmFtZX19O3ZhciBhPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe2NvbnN0IGU9dFtuXTtpZihvKHIpKXJldHVybiBlW3JdJiZlW3JdLnJ1bnM/ZVtyXS5ydW5zOjB9fTtjbGFzcyBme2NvbnN0cnVjdG9yKCl7dGhpcy5hY3Rpb25zPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5hY3Rpb25zLl9fY3VycmVudD1bXSx0aGlzLmZpbHRlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmZpbHRlcnMuX19jdXJyZW50PVtdLHRoaXMuYWRkQWN0aW9uPWkodGhpcywiYWN0aW9ucyIpLHRoaXMuYWRkRmlsdGVyPWkodGhpcywiZmlsdGVycyIpLHRoaXMucmVtb3ZlQWN0aW9uPWModGhpcywiYWN0aW9ucyIpLHRoaXMucmVtb3ZlRmlsdGVyPWModGhpcywiZmlsdGVycyIpLHRoaXMuaGFzQWN0aW9uPXModGhpcywiYWN0aW9ucyIpLHRoaXMuaGFzRmlsdGVyPXModGhpcywiZmlsdGVycyIpLHRoaXMucmVtb3ZlQWxsQWN0aW9ucz1jKHRoaXMsImFjdGlvbnMiLCEwKSx0aGlzLnJlbW92ZUFsbEZpbHRlcnM9Yyh0aGlzLCJmaWx0ZXJzIiwhMCksdGhpcy5kb0FjdGlvbj11KHRoaXMsImFjdGlvbnMiKSx0aGlzLmFwcGx5RmlsdGVycz11KHRoaXMsImZpbHRlcnMiLCEwKSx0aGlzLmN1cnJlbnRBY3Rpb249bCh0aGlzLCJhY3Rpb25zIiksdGhpcy5jdXJyZW50RmlsdGVyPWwodGhpcywiZmlsdGVycyIpLHRoaXMuZG9pbmdBY3Rpb249ZCh0aGlzLCJhY3Rpb25zIiksdGhpcy5kb2luZ0ZpbHRlcj1kKHRoaXMsImZpbHRlcnMiKSx0aGlzLmRpZEFjdGlvbj1hKHRoaXMsImFjdGlvbnMiKSx0aGlzLmRpZEZpbHRlcj1hKHRoaXMsImZpbHRlcnMiKX19dmFyIGg9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGZ9O2NvbnN0IHA9aCgpLHthZGRBY3Rpb246dixhZGRGaWx0ZXI6bSxyZW1vdmVBY3Rpb246QSxyZW1vdmVGaWx0ZXI6XyxoYXNBY3Rpb246ZyxoYXNGaWx0ZXI6eSxyZW1vdmVBbGxBY3Rpb25zOmIscmVtb3ZlQWxsRmlsdGVyczpGLGRvQWN0aW9uOmssYXBwbHlGaWx0ZXJzOngsY3VycmVudEFjdGlvbjpqLGN1cnJlbnRGaWx0ZXI6Tyxkb2luZ0FjdGlvbjpJLGRvaW5nRmlsdGVyOlQsZGlkQWN0aW9uOncsZGlkRmlsdGVyOlAsYWN0aW9uczpTLGZpbHRlcnM6en09cH19KTs="}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/style.css?ver=1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.313Z","timestamp":1785145482313,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/style.css?ver=1.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/css\r\nContent-Length: 7027\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:02 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":7027,"size_decoded":7236,"mime_type":"text/css","magic":"ASCII text","md5":"64bce1612b2b4494333a923fb36564e2","sha1":"ca0192dc24307436d51ce0c3a647c4ed2ce2dbb1","sha256":"8d28a041613d92ac16f58cd6f37efe8d52282bb72b32a080d88ce91cb48a7c7b","sha512":"5e26385bdabfe80711ee0c3c8071d05f55e7ecce7f84da56118e3b88ff3b4c1bdfb9edb3ab707fe7a77c36ba82791edfdc3aef26fc54c0fb0385bad291e23dee","ssdeep":"192:Ah/jshjO6dOkNBVYMaFFFnO2uC/Xl7l2PSr0F7OZCx:9O6scXYtFFFnOUVQF7n","tlshash":"35e15652a9f30d24e09f91596fedabd631de0583824fc8a5b6c5b218cf496ec8472f4c","first_seen":"2026-07-27T08:06:56.418973Z","last_seen":"2026-07-27T09:45:50.851347Z","times_seen":3,"resource_available":false,"data":"LyoKVGhlbWUgTmFtZTogSG9tZW8KVGhlbWUgVVJJOiBodHRwczovL3RoZW1lZm9yZXN0Lm5ldC9pdGVtL2hvbWVvLXJlYWwtZXN0YXRlLXdvcmRwcmVzcy10aGVtZS8yNjM3Mjk4NgpBdXRob3I6IEFwdXNUaGVtZQpBdXRob3IgVVJJOiBodHRwczovL2FwdXN0aGVtZXMuY29tLwpEZXNjcmlwdGlvbjogSG9tZW8gaXMgY2xlYW4gdGhlbWUsIGl0J3MgdXNlZCBBcHVzIEZyYW1ld29yay4KVmVyc2lvbjogMS4yLjE5CkxpY2Vuc2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYyIG9yIGxhdGVyCkxpY2Vuc2UgVVJJOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sClRhZ3M6IGN1c3RvbS1iYWNrZ3JvdW5kLCBjdXN0b20tY29sb3JzLCBjdXN0b20taGVhZGVyLCBjdXN0b20tbWVudSwgZWRpdG9yLXN0eWxlLCBmZWF0dXJlZC1pbWFnZXMsIG1pY3JvZm9ybWF0cywgcG9zdC1mb3JtYXRzLCBydGwtbGFuZ3VhZ2Utc3VwcG9ydCwgc3RpY2t5LXBvc3QsIHRocmVhZGVkLWNvbW1lbnRzLCB0cmFuc2xhdGlvbi1yZWFkeQpUZXh0IERvbWFpbjogaG9tZW8KClRoaXMgdGhlbWUsIGxpa2UgV29yZFByZXNzLCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMLgpVc2UgaXQgdG8gbWFrZSBzb21ldGhpbmcgY29vbCwgaGF2ZSBmdW4sIGFuZCBzaGFyZSB3aGF0IHlvdSd2ZSBsZWFybmVkIHdpdGggb3RoZXJzLgoqLwoKaW1nIHsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKfQoKLmFsaWdubm9uZSB7CiAgICBtYXJnaW46IDVweCAyMHB4IDIwcHggMDsKfQoKLmFsaWduY2VudGVyLApkaXYuYWxpZ25jZW50ZXIgewogICAgY2xlYXI6IGJvdGg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogNXB4IGF1dG8gNXB4IGF1dG87Cn0KCi5hbGlnbnJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogNXB4IDAgMzJweCAyZW07Cn0KCi53cC1ibG9jay1pbWFnZSAuYWxpZ25yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMmVtOwp9CgouYWxpZ25sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luOiA1cHggMmVtIDMycHggMDsKfQoKLndwLWJsb2NrLWltYWdlIC5hbGlnbmxlZnQgewogICAgbWFyZ2luLXJpZ2h0OiAyZW07Cn0KCmEgaW1nLmFsaWducmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luOiA1cHggMCAyMHB4IDIwcHg7Cn0KCmEgaW1nLmFsaWdubm9uZSB7CiAgICBtYXJnaW46IDVweCAyMHB4IDIwcHggMDsKfQoKYSBpbWcuYWxpZ25sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luOiA1cHggMjBweCAyMHB4IDA7Cn0KCmEgaW1nLmFsaWduY2VudGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KfQoKLndwLWNhcHRpb24gewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIG1heC13aWR0aDogOTYlOwogICAgLyogSW1hZ2UgZG9lcyBub3Qgb3ZlcmZsb3cgdGhlIGNvbnRlbnQgYXJlYSAqLwogICAgcGFkZGluZzogNXB4IDNweCAxMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgoud3AtY2FwdGlvbi5hbGlnbm5vbmUgewogICAgbWFyZ2luOiA1cHggMjBweCA1cHggMDsKfQoKLndwLWNhcHRpb24uYWxpZ25sZWZ0IHsKICAgIG1hcmdpbjogNXB4IDIwcHggNXB4IDA7Cn0KCi53cC1jYXB0aW9uLmFsaWducmlnaHQgewogICAgbWFyZ2luOiA1cHggMCA1cHggMjBweDsKfQoKLndwLWNhcHRpb24gaW1nIHsKICAgIGJvcmRlcjogMCBub25lOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWFyZ2luOiAwOwogICAgbWF4LXdpZHRoOiA5OC41JTsKICAgIHBhZGRpbmc6IDA7CiAgICB3aWR0aDogYXV0bzsKfQoKLndwLWNhcHRpb24gcC53cC1jYXB0aW9uLXRleHQgewogICAgZm9udC1zaXplOiAxMXB4OwogICAgbGluZS1oZWlnaHQ6IDE3cHg7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwIDRweCA1cHg7Cn0KCi8qIFRleHQgbWVhbnQgb25seSBmb3Igc2NyZWVuIHJlYWRlcnMuICovCgouc2NyZWVuLXJlYWRlci10ZXh0IHsKICAgIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxcHg7CiAgICB3aWR0aDogMXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnNjcmVlbi1yZWFkZXItdGV4dDpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm94LXNoYWRvdzogMCAwIDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgY2xpcDogYXV0byAhaW1wb3J0YW50OwogICAgY29sb3I6ICMyMTc1OWI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGhlaWdodDogYXV0bzsKICAgIGxlZnQ6IDVweDsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICBwYWRkaW5nOiAxNXB4IDIzcHggMTRweDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIHRvcDogNXB4OwogICAgd2lkdGg6IGF1dG87CiAgICB6LWluZGV4OiAxMDAwMDA7CiAgICAvKiBBYm92ZSBXUCB0b29sYmFyLiAqLwp9CgouZ2FsbGVyeS1jYXB0aW9uIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5ieXBvc3RhdXRob3IgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLndwLWJsb2NrLXB1bGxxdW90ZSB7CiAgICBib3JkZXI6IG5vbmU7Cn0KCi53cC1ibG9jay1hcmNoaXZlcy5hbGlnbmNlbnRlciwKLndwLWJsb2NrLWNhdGVnb3JpZXMuYWxpZ25jZW50ZXIsCi53cC1ibG9jay1sYXRlc3QtcG9zdHMuYWxpZ25jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgoud3AtYmxvY2stY292ZXIgewogICAgbWFyZ2luLWJvdHRvbTogMjhweDsKfQoKLndwLWJsb2NrLWVtYmVkIHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KCi5wcm9kdWN0LWJsb2NrLmdyaWQgLnByb2R1Y3QtaW1hZ2UgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5wcm9kdWN0LWJsb2NrLmdyaWQgLnByb2R1Y3QtaW1hZ2UgaW1nIHsKICAgIHdpZHRoOiAxMDAlOwp9CgouYnJlYWQtdGl0bGUgewogICAgd29yZC1icmVhazogYnJlYWstd29yZDsKICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKfQoKLmFkdmFuZS1zZWFyY2gtd3JhcHBlci1maWVsZHMgewogICAgZGlzcGxheTogbm9uZTsKfQoKLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbSAud3AtYmxvY2stY292ZXItdGV4dCB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLndwLWJsb2NrLWJ1dHRvbiB7CiAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKLmxvZ28tdGhlbWUgaW1nIHsKICAgIG1heC13aWR0aDogMTUwcHg7Cn0KCi8qIGZpeCAqLwoKcCB7CiAgICBtYXJnaW4tYm90dG9tOiAzMnB4Owp9CgoubWFpbi1wYWdlLmZ1bGwtZGVmYXVsdCB7CiAgICBtYXgtd2lkdGg6IDk4MHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBmbG9hdDogbm9uZTsKfQoKLmZlYXR1cmVkLXByb3BlcnR5LmxhYmVsIHsKICAgIHBhZGRpbmc6IC42ZW07CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogODUlOwp9CgoudG9wbWVudS1tZW51IGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouY21iLXRoIHNwYW4ucmVxdWlyZWQgewogICAgY29sb3I6IHJlZDsKfQoKQG1lZGlhKG1heC13aWR0aDogNzY3cHgpIHsKICAgIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uaG9yaXpvbnRhbCAuZm9ybS1ncm91cC1sb2NhdGlvbiB7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgfQogICAgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5ob3Jpem9udGFsIC5mb3JtLWdyb3VwLWxvY2F0aW9uPmRpdn5kaXYgewogICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICB9Cn0KCi5jb250YWN0LWZvcm0tYWdlbnQgLmFnZW50LWNvbnRlbnQgLmVtYWlsIHsKICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24gewogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEobWF4LXdpZHRoOiAxMjAwcHgpIHsKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgICAgICBjdXJzb3I6IGF1dG87CiAgICB9Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeS52MSAuaW1hZ2Utd3JhcHBlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeS52MSBpbWcgewogICAgZGlzcGxheTogaW5saW5lOwp9CgouZnJvbS10by10ZXh0LXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouaGVhZGluZy1maWx0ZXItcHJpY2UgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIG1hcmdpbjogMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5oZWFkaW5nLWZpbHRlci1wcmljZSAuaW5uZXIgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgaGVpZ2h0OiA1MHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2Q4ZDhkODsKICAgIG1hcmdpbjogMDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBsaW5lLWhlaWdodDogMzBweDsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5wcmljZS1pbnB1dC13cmFwcGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDEwOwogICAgdG9wOiAxMDAlOwogICAgbGVmdDogMHB4OwogICAgcmlnaHQ6IDBweDsKICAgIHdpZHRoOiAxMDAlOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDhkOGQ4OwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogICAgZGlzcGxheTogbm9uZTsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuYWR2YW5jZS1zZWFyY2gtd3JhcHBlci1maWVsZHMub3ZlcmZsb3ctdmlzaWJsZSB7CiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50Owp9Cgoucm93LnJvdy1wYWRkaW5nLTUgewogICAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC01cHg7Cn0KCi5yb3ctcGFkZGluZy01IC5jb2wteHMtNiB7CiAgICBwYWRkaW5nLWxlZnQ6IDVweDsKICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTEgLmhlYWRpbmctZmlsdGVyLXByaWNlIC5pbm5lciB7CiAgICBib3JkZXItcmFkaXVzOiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwcHggIWltcG9ydGFudDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTBweCAhaW1wb3J0YW50OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwcHggIWltcG9ydGFudDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwcHggIWltcG9ydGFudDsKfQoKLnByb3BlcnRpZXMtY3VycmVuY2llcyAuY3VycmVuY2llcyB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMTVweCAzMHB4Owp9CgoucHJvcGVydGllcy1jdXJyZW5jaWVzIC5jdXJyZW5jaWVzIGxpIGxhYmVsIHsKICAgIHdpZHRoOiAxMDAlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKLnByb3BlcnRpZXMtY3VycmVuY2llcyAuY3VycmVuY2llcyBsaS5hY3RpdmUgbGFiZWwsCi5wcm9wZXJ0aWVzLWN1cnJlbmNpZXMgLmN1cnJlbmNpZXMgbGkgbGFiZWw6aG92ZXIgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5jdXJyZW5jaWVzLXdyYXBwZXIgLmRyb3Bkb3duLXRvZ2dsZSBpIHsKICAgIG1hcmdpbi1sZWZ0OiA3cHg7Cn0KCi5mb3JtLWdyb3VwLXByaWNlLmxpc3QgdWwucHJpY2UtZmlsdGVyIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLmZvcm0tZ3JvdXAtcHJpY2UubGlzdCB1bC5wcmljZS1maWx0ZXIgbGkgewogICAgcGFkZGluZzogM3B4IDBweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLmZvcm0tZ3JvdXAtcHJpY2UubGlzdCB1bC5wcmljZS1maWx0ZXIgbGk6aG92ZXIgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5ibG9nLW5vLWJyZWFkY3J1bWJzIC5tYWluLWNvbnRlbnQsCi5ibG9nLW5vLWJyZWFkY3J1bWJzIC5tYWluLWNvbnRlbnQtZGV0YWlsIHsKICAgIHBhZGRpbmctdG9wOiAzMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYmxvZy1uby1icmVhZGNydW1icyAubWFpbi1jb250ZW50LAogICAgLmJsb2ctbm8tYnJlYWRjcnVtYnMgLm1haW4tY29udGVudC1kZXRhaWwgewogICAgICAgIHBhZGRpbmctdG9wOiA1NXB4OwogICAgfQp9Cgpycy1tb2R1bGUtd3JhcCB7CiAgICB6LWluZGV4OiAwOwp9CgoucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC5jbG9zZS1maWx0ZXIgewogICAgei1pbmRleDogMTsKfQ=="}},"time_used":746,"timings":{"blocked":651,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/images/betaroi-logo.png?fit=1295%2C349\u0026ssl=1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.367Z","timestamp":1785145482367,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /images/betaroi-logo.png?fit=1295%2C349\u0026ssl=1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:45 GMT\r\nContent-Type: image/png\r\nContent-Length: 1519\r\nConnection: keep-alive\r\nLast-Modified: Thu, 16 Jun 2022 04:56:52 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":1519,"size_decoded":1729,"mime_type":"image/png","magic":"PNG image data, 249 x 51, 8-bit/color RGBA, non-interlaced","md5":"0f0c3ac42ca07662666af131cd54d80c","sha1":"60fac3dfcbf6b3169a9ccd69f5a0d4e25c0122e9","sha256":"f76fb0a51c69881b74c9b479be252176f51c378045bcbc3840baddad8fe5b493","sha512":"c5f0194d30722de5e1e805aa6c2ebb28f63f308f0a2d64ba9683b02459cd9d224de90becfb0cd0c88f9e24f37e6b68cd56c356bc3063a81b2af5331437457eb4","ssdeep":"","tlshash":"b53197f88b1bbf44f005b9b5b4e85445c1e1b78beda072b40572abb46751f7841f1a82","first_seen":"2026-07-27T08:06:56.507262Z","last_seen":"2026-07-27T09:45:50.941599Z","times_seen":3,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAPkAAAAzCAYAAABVPK5CAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABZFJREFUeNrsnV9S4kAQxsetfTeP+7BVxhMYTiCcYPEEJidQTwCcADkB8QTgCYQTyJ5gY9U+7CN7AndaetZmnEyIEgzh+6pSQP5Oor/unk5nohQEQRAEQRAEQTXVES5BM/Tt+2mkPx70FPCs5M/vX2nOMlupXjfBVWymvuASNBLwFIBD8OTNATzUH48W4AkvCxjwKGfzhV63hasITw7VF3CCeCIAn5YBXE8dXEVADtUbcAkxQSvD7kLAtUFY4koCcqi+mliA/4dWG4CxB3BaJwHg6JND9fbiBHEsoD21AI89gJMxWOAqwpND+wO49OB9D+AKgANyqP6AXzsAX/Aymt/zbJ4AcITrUL0BJ4jHYtaFhnaas8wFeIqrCE8O7Q/giQCcEmxDz+YDAA5PDtUbcJSrQoD8gACX1WyhWq90A+AQIN8zwG2IUa4KvUtfcQlqCfhWy1X1Ng/i5w1l2fW8odjHHfrtgBzaLeC+ctWJKl+u2hbfjeGIxPw5rnxzhex6/TRW/nLVds52KFeF4Mn3wIsTxF0BbWdL5aoD8T0zIbrw4DNc/eYKibd6AR67oOVKN9+98Baq2SB48noDHit/uaoP8MJyVb2PZ/GT9j3jZJwJ/algpo+/BPrkUHWAj13QolwVAuT7D3hXoVwVQrjeWMAjB+ApLwtVcblqmfAaiTcIgqCmCtn16j02eeNAe96sZu2iaCHcYNWsbm2HAHkdQae+9d9dZ7DZwJjKthOGOvJ0A7yw80RJwZ9qVR+P23aAHBLAmWq1EfeplxUcI+RjnPNnWPFpLbk/f0+f8PiAHKCvxmAzQzRNGY7pe4Hn5F3EUJvvn6kFG7EpymsB+SGDTh52aAFpQuG5gEVCIvvPZyLs/ohm/DkXXrlM+G3C/mPxPRL7Sgl4eHdAfsiwx+zVqw6pMwb6iT8rTaSJ6OKMuwwUrdzCswPyQ/fsl2r1YEqwhV3O2CPPuZ+8/OTzezknQA7IoVcvSNCfOEJgX7j9EmpTTTquIgTIq/PG7YKQeS0ZxUm4QpnbblbSjuYf5bSlaxmG1BWec3chr6uw5Chg4fHOtP25iD7oGPemLNdaX55rhnLc3QplrdtRW/lfbEAa6n/2REDQ23Df/ZJtGTrgde3jssAwEZzU1sQyTqbe3tW1iPXyhXr7ZFzPikAA+Q6FB1R2p0D5nyjbRkTh8s5XH9hlVwLK+58U5A5eRpjle/YQPHljNbAgCwToef3rbYyzdukyLgRnQYhs3z6THp4GrLhhaIeObsgd5xC61nmSQcP7zwF5MyXLVzUcxwyKT/OPlryKpJ1LVwUhMiXtOmJfa0NNiX1LI0U5hguxDhXByCfn2mQYcJ8ckDdS1hDIErzbPA+stzl3zL8pUR9uh+W3wrhEBGqJfQUOj/3Dbptl2GiY54Hl7buec4YA+V7L5VEJlFHO+qFyZ7qDDY1KoF4HgFTstUdWBEFGIO+NKpEwTPZtO8qGL/XytfA+x0Mv3tN+qFoh8bY7EcSPFSWkYguoJz6ehC42hSk5xqTNk31fPilhfAA1ID+YPvmRmfTPlgWBK9s9kNuIafbOUL2n3G9ZuS5xGpSMa4k2ZFb00N+gHTP8NyBcb3rfPHCE7q4KthMuqHEZjFnBMbpq8/p3yr73c8LsG7X+4Ixpu4kG7tT6uO89fewTnm+MV9sK8wE5IG8s3M+exfc54Xacs/7RBuD6vKfs74dkFBxVaUsepplC80cLZMqiZ7w8tdrpazfeqIpw/SBFXjHdojEheGXCjYDsyEnPuygIqWXUQO0bWN2LsViebNB+87omeHF48kYp26D/SR5cjggz28Ix2ta8kQtc9sCh1Y1YWMbHrN/Xy8+USKJJ70+g699z9bYsls5ryvmFzBNdYMgoCIIgCIIgCIKglf4JMACbWYsbtoL9PwAAAABJRU5ErkJggg=="}},"time_used":3423,"timings":{"blocked":3326,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/font-awesome/css/brands.min.css?ver=5.15.3","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.393Z","timestamp":1785145482393,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/font-awesome/css/brands.min.css?ver=5.15.3 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/css\r\nContent-Length: 734\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":734,"size_decoded":942,"mime_type":"text/css","magic":"ASCII text, with very long lines (301)","md5":"efa19d034ab689caefee79990aa32f78","sha1":"c163dfcf24447fca3796a10b66baa77974c98ed7","sha256":"7e1cab3dddc519aa473d1b161c26b641e0e673110026de22de1fa6b2ff9c13fe","sha512":"d0528b658c930e222f17f6dcf42484f2d34709e884dec05747060ebc1186eddd707b3b7bf302ce8d6bc3ad224111c8c1d029a25a504cc8d565350ac761c3cf2e","ssdeep":"","tlshash":"eb0197900102100186800e0e3bdfaa2cae09a296780d9e62723bee0d4cf8e0e50f6f0e","first_seen":"2023-07-01T15:13:10Z","last_seen":"2026-07-27T10:21:19.586084Z","times_seen":59,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCkBmb250LWZhY2UgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtZGlzcGxheTogYmxvY2s7CiAgICBzcmM6IHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLmVvdCk7CiAgICBzcmM6IHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAud29mZikgZm9ybWF0KCJ3b2ZmIiksIHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5zdmcjZm9udGF3ZXNvbWUpIGZvcm1hdCgic3ZnIikKfQoKLmZhYiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0="}},"time_used":796,"timings":{"blocked":698,"dns":0,"connect":0,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/css/dist/block-library/style.min.css","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.277Z","timestamp":1785145482277,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/css/dist/block-library/style.min.css HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:45 GMT\r\ncontent-type: text/css\r\nvary: Accept-Encoding\r\nlast-modified: Wed, 30 Mar 2022 11:30:25 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:45 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=1.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","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":83419,"size_decoded":11978,"mime_type":"text/css","magic":"ASCII text, with very long lines (39791)","md5":"7e7a1a9e3712cd16dade7c6e811ba28b","sha1":"45e216af145ea7c3f30099c869482785ad921bc2","sha256":"cdbdaa122823601390c7dcbdd1afde33c2f1a432b8c5ff025c6137ee99ba541a","sha512":"8996cb222975064b3c4ad5dd6c8a826d4ec36b9381c946e0225cea8ff8e9343dfec48e160137b9e177464c1fbb180cba66c49ba378fad350e4a51a352346ae30","ssdeep":"768:2NX/7az41kA5SOV+sQ354sMFwnT9FgmyfblnN8yJb3qB/zh20ucYBNaNSQBFrG:2NX+WkA5SOV+sQ354uwbmQ0uQBFrG","tlshash":"74833d5417b4dcf939bfa73a9d9de248a103e941c64aa7e6e072d190718ca590cf3b0f","first_seen":"2023-04-05T02:37:48Z","last_seen":"2026-07-27T09:45:50.847823Z","times_seen":36488,"resource_available":false,"data":"QGNoYXJzZXQgIlVURi04Ijsud3AtYmxvY2stYXJjaGl2ZXMtZHJvcGRvd24gbGFiZWx7ZGlzcGxheTpibG9ja30ud3AtYmxvY2stYXVkaW97bWFyZ2luOjAgMCAxZW19LndwLWJsb2NrLWF1ZGlvIGZpZ2NhcHRpb257bWFyZ2luLXRvcDouNWVtO21hcmdpbi1ib3R0b206MWVtfS53cC1ibG9jay1hdWRpbyBhdWRpb3t3aWR0aDoxMDAlO21pbi13aWR0aDozMDBweH0ud3AtYmxvY2stYnV0dG9uX19saW5re2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzIzNzNjO2JvcmRlci1yYWRpdXM6OTk5OXB4O2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MS4xMjVlbTtwYWRkaW5nOmNhbGMoLjY2N2VtICsgMnB4KSBjYWxjKDEuMzMzZW0gKyAycHgpO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3dvcmQtYnJlYWs6YnJlYWstd29yZDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LndwLWJsb2NrLWJ1dHRvbl9fbGluazphY3RpdmUsLndwLWJsb2NrLWJ1dHRvbl9fbGluazpmb2N1cywud3AtYmxvY2stYnV0dG9uX19saW5rOmhvdmVyLC53cC1ibG9jay1idXR0b25fX2xpbms6dmlzaXRlZHtjb2xvcjojZmZmfS53cC1ibG9jay1idXR0b25fX2xpbmsuYWxpZ25jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LndwLWJsb2NrLWJ1dHRvbl9fbGluay5hbGlnbnJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LndwLWJsb2NrLWJ1dHRvbnM+LndwLWJsb2NrLWJ1dHRvbi5oYXMtY3VzdG9tLXdpZHRoe21heC13aWR0aDpub25lfS53cC1ibG9jay1idXR0b25zPi53cC1ibG9jay1idXR0b24uaGFzLWN1c3RvbS13aWR0aCAud3AtYmxvY2stYnV0dG9uX19saW5re3dpZHRoOjEwMCV9LndwLWJsb2NrLWJ1dHRvbnM+LndwLWJsb2NrLWJ1dHRvbi5oYXMtY3VzdG9tLWZvbnQtc2l6ZSAud3AtYmxvY2stYnV0dG9uX19saW5re2ZvbnQtc2l6ZTppbmhlcml0fS53cC1ibG9jay1idXR0b25zPi53cC1ibG9jay1idXR0b24ud3AtYmxvY2stYnV0dG9uX193aWR0aC0yNXt3aWR0aDpjYWxjKDI1JSAtIHZhcigtLXdwLS1zdHlsZS0tYmxvY2stZ2FwLCAuNWVtKSowLjc1KX0ud3AtYmxvY2stYnV0dG9ucz4ud3AtYmxvY2stYnV0dG9uLndwLWJsb2NrLWJ1dHRvbl9fd2lkdGgtNTB7d2lkdGg6Y2FsYyg1MCUgLSB2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwgLjVlbSkqMC41KX0ud3AtYmxvY2stYnV0dG9ucz4ud3AtYmxvY2stYnV0dG9uLndwLWJsb2NrLWJ1dHRvbl9fd2lkdGgtNzV7d2lkdGg6Y2FsYyg3NSUgLSB2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwgLjVlbSkqMC4yNSl9LndwLWJsb2NrLWJ1dHRvbnM+LndwLWJsb2NrLWJ1dHRvbi53cC1ibG9jay1idXR0b25fX3dpZHRoLTEwMHt3aWR0aDoxMDAlO2ZsZXgtYmFzaXM6MTAwJX0ud3AtYmxvY2stYnV0dG9ucy5pcy12ZXJ0aWNhbD4ud3AtYmxvY2stYnV0dG9uLndwLWJsb2NrLWJ1dHRvbl9fd2lkdGgtMjV7d2lkdGg6MjUlfS53cC1ibG9jay1idXR0b25zLmlzLXZlcnRpY2FsPi53cC1ibG9jay1idXR0b24ud3AtYmxvY2stYnV0dG9uX193aWR0aC01MHt3aWR0aDo1MCV9LndwLWJsb2NrLWJ1dHRvbnMuaXMtdmVydGljYWw+LndwLWJsb2NrLWJ1dHRvbi53cC1ibG9jay1idXR0b25fX3dpZHRoLTc1e3dpZHRoOjc1JX0ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLXNxdWFyZWQsLndwLWJsb2NrLWJ1dHRvbl9fbGluay53cC1ibG9jay1idXR0b24uaXMtc3R5bGUtc3F1YXJlZHtib3JkZXItcmFkaXVzOjB9LndwLWJsb2NrLWJ1dHRvbi5uby1ib3JkZXItcmFkaXVzLC53cC1ibG9jay1idXR0b25fX2xpbmsubm8tYm9yZGVyLXJhZGl1c3tib3JkZXItcmFkaXVzOjAhaW1wb3J0YW50fS5pcy1zdHlsZS1vdXRsaW5lPjp3aGVyZSgud3AtYmxvY2stYnV0dG9uX19saW5rKSw6d2hlcmUoLndwLWJsb2NrLWJ1dHRvbl9fbGluaykuaXMtc3R5bGUtb3V0bGluZXtib3JkZXI6MnB4IHNvbGlkO3BhZGRpbmc6LjY2N2VtIDEuMzMzZW19LmlzLXN0eWxlLW91dGxpbmU+LndwLWJsb2NrLWJ1dHRvbl9fbGluazpub3QoLmhhcy10ZXh0LWNvbG9yKSwud3AtYmxvY2stYnV0dG9uX19saW5rLmlzLXN0eWxlLW91dGxpbmU6bm90KC5oYXMtdGV4dC1jb2xvcil7Y29sb3I6Y3VycmVudENvbG9yfS5pcy1zdHlsZS1vdXRsaW5lPi53cC1ibG9jay1idXR0b25fX2xpbms6bm90KC5oYXMtYmFja2dyb3VuZCksLndwLWJsb2NrLWJ1dHRvbl9fbGluay5pcy1zdHlsZS1vdXRsaW5lOm5vdCguaGFzLWJhY2tncm91bmQpe2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LndwLWJsb2NrLWJ1dHRvbnMuaXMtdmVydGljYWx7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS53cC1ibG9jay1idXR0b25zLmlzLXZlcnRpY2FsPi53cC1ibG9jay1idXR0b246bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LndwLWJsb2NrLWJ1dHRvbnM+LndwLWJsb2NrLWJ1dHRvbntkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MH0ud3AtYmxvY2stYnV0dG9ucy5pcy1jb250ZW50LWp1c3RpZmljYXRpb24tbGVmdHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0ud3AtYmxvY2stYnV0dG9ucy5pcy1jb250ZW50LWp1c3RpZmljYXRpb24tbGVmdC5pcy12ZXJ0aWNhbHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS53cC1ibG9jay1idXR0b25zLmlzLWNvbnRlbnQtanVzdGlmaWNhdGlvbi1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ud3AtYmxvY2stYnV0dG9ucy5pcy1jb250ZW50LWp1c3RpZmljYXRpb24tY2VudGVyLmlzLXZlcnRpY2Fse2FsaWduLWl0ZW1zOmNlbnRlcn0ud3AtYmxvY2stYnV0dG9ucy5pcy1jb250ZW50LWp1c3RpZmljYXRpb24tcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS53cC1ibG9jay1idXR0b25zLmlzLWNvbnRlbnQtanVzdGlmaWNhdGlvbi1yaWdodC5pcy12ZXJ0aWNhbHthbGlnbi1pdGVtczpmbGV4LWVuZH0ud3AtYmxvY2stYnV0dG9ucy5pcy1jb250ZW50LWp1c3RpZmljYXRpb24tc3BhY2UtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ud3AtYmxvY2stYnV0dG9ucy5hbGlnbmNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0ud3AtYmxvY2stYnV0dG9uczpub3QoLmlzLWNvbnRlbnQtanVzdGlmaWNhdGlvbi1zcGFjZS1iZXR3ZWVuLC5pcy1jb250ZW50LWp1c3RpZmljYXRpb24tcmlnaHQsLmlzLWNvbnRlbnQtanVzdGlmaWNhdGlvbi1sZWZ0LC5pcy1jb250ZW50LWp1c3RpZmljYXRpb24tY2VudGVyKSAud3AtYmxvY2stYnV0dG9uLmFsaWduY2VudGVye21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87d2lkdGg6MTAwJX0ud3AtYmxvY2stYnV0dG9uLmFsaWduY2VudGVyLC53cC1ibG9jay1jYWxlbmRhcnt0ZXh0LWFsaWduOmNlbnRlcn0ud3AtYmxvY2stY2FsZW5kYXIgdGJvZHkgdGQsLndwLWJsb2NrLWNhbGVuZGFyIHRoe3BhZGRpbmc6LjI1ZW07Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS53cC1ibG9jay1jYWxlbmRhciB0Zm9vdCB0ZHtib3JkZXI6bm9uZX0ud3AtYmxvY2stY2FsZW5kYXIgdGFibGV7d2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LndwLWJsb2NrLWNhbGVuZGFyIHRhYmxlIHRoe2ZvbnQtd2VpZ2h0OjQwMDtiYWNrZ3JvdW5kOiNkZGR9LndwLWJsb2NrLWNhbGVuZGFyIGF7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0ud3AtYmxvY2stY2FsZW5kYXIgdGFibGUgY2FwdGlvbiwud3AtYmxvY2stY2FsZW5kYXIgdGFibGUgdGJvZHl7Y29sb3I6IzQwNDY0ZH0ud3AtYmxvY2stY2F0ZWdvcmllcy5hbGlnbmxlZnR7bWFyZ2luLXJpZ2h0OjJlbX0ud3AtYmxvY2stY2F0ZWdvcmllcy5hbGlnbnJpZ2h0e21hcmdpbi1sZWZ0OjJlbX0ud3AtYmxvY2stY29kZSBjb2Rle2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6cHJlLXdyYXA7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS53cC1ibG9jay1jb2x1bW5ze2Rpc3BsYXk6ZmxleDttYXJnaW4tYm90dG9tOjEuNzVlbTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleC13cmFwOndyYXB9QG1lZGlhIChtaW4td2lkdGg6NzgycHgpey53cC1ibG9jay1jb2x1bW5ze2ZsZXgtd3JhcDpub3dyYXB9fS53cC1ibG9jay1jb2x1bW5zOndoZXJlKC5oYXMtYmFja2dyb3VuZCl7cGFkZGluZzoxLjI1ZW0gMi4zNzVlbX0ud3AtYmxvY2stY29sdW1ucy5hcmUtdmVydGljYWxseS1hbGlnbmVkLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS53cC1ibG9jay1jb2x1bW5zLmFyZS12ZXJ0aWNhbGx5LWFsaWduZWQtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0ud3AtYmxvY2stY29sdW1ucy5hcmUtdmVydGljYWxseS1hbGlnbmVkLWJvdHRvbXthbGlnbi1pdGVtczpmbGV4LWVuZH1AbWVkaWEgKG1heC13aWR0aDo1OTlweCl7LndwLWJsb2NrLWNvbHVtbnM6bm90KC5pcy1ub3Qtc3RhY2tlZC1vbi1tb2JpbGUpPi53cC1ibG9jay1jb2x1bW57ZmxleC1iYXNpczoxMDAlIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NjAwcHgpIGFuZCAobWF4LXdpZHRoOjc4MXB4KXsud3AtYmxvY2stY29sdW1uczpub3QoLmlzLW5vdC1zdGFja2VkLW9uLW1vYmlsZSk+LndwLWJsb2NrLWNvbHVtbjpub3QoOm9ubHktY2hpbGQpe2ZsZXgtYmFzaXM6Y2FsYyg1MCUgLSB2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwgMmVtKS8yKSFpbXBvcnRhbnQ7ZmxleC1ncm93OjB9LndwLWJsb2NrLWNvbHVtbnM6bm90KC5pcy1ub3Qtc3RhY2tlZC1vbi1tb2JpbGUpPi53cC1ibG9jay1jb2x1bW46bnRoLWNoaWxkKDJuKXttYXJnaW4tbGVmdDp2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwyZW0pfX1AbWVkaWEgKG1pbi13aWR0aDo3ODJweCl7LndwLWJsb2NrLWNvbHVtbnM6bm90KC5pcy1ub3Qtc3RhY2tlZC1vbi1tb2JpbGUpPi53cC1ibG9jay1jb2x1bW57ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxfS53cC1ibG9jay1jb2x1bW5zOm5vdCguaXMtbm90LXN0YWNrZWQtb24tbW9iaWxlKT4ud3AtYmxvY2stY29sdW1uW3N0eWxlKj1mbGV4LWJhc2lzXXtmbGV4LWdyb3c6MH0ud3AtYmxvY2stY29sdW1uczpub3QoLmlzLW5vdC1zdGFja2VkLW9uLW1vYmlsZSk+LndwLWJsb2NrLWNvbHVtbjpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tbGVmdDp2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwyZW0pfX0ud3AtYmxvY2stY29sdW1ucy5pcy1ub3Qtc3RhY2tlZC1vbi1tb2JpbGV7ZmxleC13cmFwOm5vd3JhcH0ud3AtYmxvY2stY29sdW1ucy5pcy1ub3Qtc3RhY2tlZC1vbi1tb2JpbGU+LndwLWJsb2NrLWNvbHVtbntmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9LndwLWJsb2NrLWNvbHVtbnMuaXMtbm90LXN0YWNrZWQtb24tbW9iaWxlPi53cC1ibG9jay1jb2x1bW5bc3R5bGUqPWZsZXgtYmFzaXNde2ZsZXgtZ3JvdzowfS53cC1ibG9jay1jb2x1bW5zLmlzLW5vdC1zdGFja2VkLW9uLW1vYmlsZT4ud3AtYmxvY2stY29sdW1uOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0OnZhcigtLXdwLS1zdHlsZS0tYmxvY2stZ2FwLDJlbSl9LndwLWJsb2NrLWNvbHVtbntmbGV4LWdyb3c6MTttaW4td2lkdGg6MDt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS53cC1ibG9jay1jb2x1bW4uaXMtdmVydGljYWxseS1hbGlnbmVkLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LndwLWJsb2NrLWNvbHVtbi5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtY2VudGVye2FsaWduLXNlbGY6Y2VudGVyfS53cC1ibG9jay1jb2x1bW4uaXMtdmVydGljYWxseS1hbGlnbmVkLWJvdHRvbXthbGlnbi1zZWxmOmZsZXgtZW5kfS53cC1ibG9jay1jb2x1bW4uaXMtdmVydGljYWxseS1hbGlnbmVkLWJvdHRvbSwud3AtYmxvY2stY29sdW1uLmlzLXZlcnRpY2FsbHktYWxpZ25lZC1jZW50ZXIsLndwLWJsb2NrLWNvbHVtbi5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtdG9we3dpZHRoOjEwMCV9LndwLWJsb2NrLWNvdmVyLC53cC1ibG9jay1jb3Zlci1pbWFnZXtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7bWluLWhlaWdodDo0MzBweDt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjFlbTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1wYXJhbGxheCwud3AtYmxvY2stY292ZXIuaGFzLXBhcmFsbGF4e2JhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZH1Ac3VwcG9ydHMgKC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoKXsud3AtYmxvY2stY292ZXItaW1hZ2UuaGFzLXBhcmFsbGF4LC53cC1ibG9jay1jb3Zlci5oYXMtcGFyYWxsYXh7YmFja2dyb3VuZC1hdHRhY2htZW50OnNjcm9sbH19QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1wYXJhbGxheCwud3AtYmxvY2stY292ZXIuaGFzLXBhcmFsbGF4e2JhY2tncm91bmQtYXR0YWNobWVudDpzY3JvbGx9fS53cC1ibG9jay1jb3Zlci1pbWFnZS5pcy1yZXBlYXRlZCwud3AtYmxvY2stY292ZXIuaXMtcmVwZWF0ZWR7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O2JhY2tncm91bmQtc2l6ZTphdXRvfS53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW06bm90KFtjbGFzcyo9LWJhY2tncm91bmQtY29sb3JdKSwud3AtYmxvY2stY292ZXItaW1hZ2UgLmhhcy1iYWNrZ3JvdW5kLWRpbTpub3QoW2NsYXNzKj0tYmFja2dyb3VuZC1jb2xvcl0pLC53cC1ibG9jay1jb3Zlci5oYXMtYmFja2dyb3VuZC1kaW06bm90KFtjbGFzcyo9LWJhY2tncm91bmQtY29sb3JdKSwud3AtYmxvY2stY292ZXIgLmhhcy1iYWNrZ3JvdW5kLWRpbTpub3QoW2NsYXNzKj0tYmFja2dyb3VuZC1jb2xvcl0pe2JhY2tncm91bmQtY29sb3I6IzAwMH0ud3AtYmxvY2stY292ZXItaW1hZ2UgLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCwud3AtYmxvY2stY292ZXIgLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1ncmFkaWVudHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW06YmVmb3JlLC53cC1ibG9jay1jb3Zlci5oYXMtYmFja2dyb3VuZC1kaW06YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0fS53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW06bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3JlLC53cC1ibG9jay1jb3Zlci1pbWFnZSAud3AtYmxvY2stY292ZXJfX2JhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLWltYWdlIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZCwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIgLndwLWJsb2NrLWNvdmVyX19iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3ZlciAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2JvdHRvbTowO3JpZ2h0OjA7ei1pbmRleDoxO29wYWNpdHk6LjV9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMTAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTEwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS0xMCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMTA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6LjF9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMjAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTIwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS0yMCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMjA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6LjJ9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMzAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTMwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS0zMCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMzA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6LjN9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNDAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTQwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS00MCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNDA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6LjR9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNTAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTUwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS01MCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNTA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6LjV9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNjAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTYwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS02MCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNjA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6LjZ9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNzAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTcwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS03MCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNzA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6Ljd9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tODAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTgwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS04MCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tODA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6Ljh9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tOTAgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTkwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZSwud3AtYmxvY2stY292ZXIuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS05MCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tOTA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3Jle29wYWNpdHk6Ljl9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMTAwIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZCwud3AtYmxvY2stY292ZXItaW1hZ2UuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS0xMDA6bm90KC5oYXMtYmFja2dyb3VuZC1ncmFkaWVudCk6YmVmb3JlLC53cC1ibG9jay1jb3Zlci5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTEwMCAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQsLndwLWJsb2NrLWNvdmVyLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMTAwOm5vdCguaGFzLWJhY2tncm91bmQtZ3JhZGllbnQpOmJlZm9yZXtvcGFjaXR5OjF9LndwLWJsb2NrLWNvdmVyLWltYWdlIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTAsLndwLWJsb2NrLWNvdmVyIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTB7b3BhY2l0eTowfS53cC1ibG9jay1jb3Zlci1pbWFnZSAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS0xMCwud3AtYmxvY2stY292ZXIgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMTB7b3BhY2l0eTouMX0ud3AtYmxvY2stY292ZXItaW1hZ2UgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tMjAsLndwLWJsb2NrLWNvdmVyIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTIwe29wYWNpdHk6LjJ9LndwLWJsb2NrLWNvdmVyLWltYWdlIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTMwLC53cC1ibG9jay1jb3ZlciAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS0zMHtvcGFjaXR5Oi4zfS53cC1ibG9jay1jb3Zlci1pbWFnZSAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS00MCwud3AtYmxvY2stY292ZXIgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNDB7b3BhY2l0eTouNH0ud3AtYmxvY2stY292ZXItaW1hZ2UgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNTAsLndwLWJsb2NrLWNvdmVyIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTUwe29wYWNpdHk6LjV9LndwLWJsb2NrLWNvdmVyLWltYWdlIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTYwLC53cC1ibG9jay1jb3ZlciAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS02MHtvcGFjaXR5Oi42fS53cC1ibG9jay1jb3Zlci1pbWFnZSAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS03MCwud3AtYmxvY2stY292ZXIgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tNzB7b3BhY2l0eTouN30ud3AtYmxvY2stY292ZXItaW1hZ2UgLndwLWJsb2NrLWNvdmVyX19ncmFkaWVudC1iYWNrZ3JvdW5kLmhhcy1iYWNrZ3JvdW5kLWRpbS5oYXMtYmFja2dyb3VuZC1kaW0tODAsLndwLWJsb2NrLWNvdmVyIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTgwe29wYWNpdHk6Ljh9LndwLWJsb2NrLWNvdmVyLWltYWdlIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTkwLC53cC1ibG9jay1jb3ZlciAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS05MHtvcGFjaXR5Oi45fS53cC1ibG9jay1jb3Zlci1pbWFnZSAud3AtYmxvY2stY292ZXJfX2dyYWRpZW50LWJhY2tncm91bmQuaGFzLWJhY2tncm91bmQtZGltLmhhcy1iYWNrZ3JvdW5kLWRpbS0xMDAsLndwLWJsb2NrLWNvdmVyIC53cC1ibG9jay1jb3Zlcl9fZ3JhZGllbnQtYmFja2dyb3VuZC5oYXMtYmFja2dyb3VuZC1kaW0uaGFzLWJhY2tncm91bmQtZGltLTEwMHtvcGFjaXR5OjF9LndwLWJsb2NrLWNvdmVyLWltYWdlLmFsaWdubGVmdCwud3AtYmxvY2stY292ZXItaW1hZ2UuYWxpZ25yaWdodCwud3AtYmxvY2stY292ZXIuYWxpZ25sZWZ0LC53cC1ibG9jay1jb3Zlci5hbGlnbnJpZ2h0e21heC13aWR0aDo0MjBweDt3aWR0aDoxMDAlfS53cC1ibG9jay1jb3Zlci1pbWFnZTphZnRlciwud3AtYmxvY2stY292ZXI6YWZ0ZXJ7ZGlzcGxheTpibG9jaztjb250ZW50OiIiO2ZvbnQtc2l6ZTowO21pbi1oZWlnaHQ6aW5oZXJpdH1Ac3VwcG9ydHMgKHBvc2l0aW9uOnN0aWNreSl7LndwLWJsb2NrLWNvdmVyLWltYWdlOmFmdGVyLC53cC1ibG9jay1jb3ZlcjphZnRlcntjb250ZW50Om5vbmV9fS53cC1ibG9jay1jb3Zlci1pbWFnZS5hbGlnbmNlbnRlciwud3AtYmxvY2stY292ZXItaW1hZ2UuYWxpZ25sZWZ0LC53cC1ibG9jay1jb3Zlci1pbWFnZS5hbGlnbnJpZ2h0LC53cC1ibG9jay1jb3Zlci5hbGlnbmNlbnRlciwud3AtYmxvY2stY292ZXIuYWxpZ25sZWZ0LC53cC1ibG9jay1jb3Zlci5hbGlnbnJpZ2h0e2Rpc3BsYXk6ZmxleH0ud3AtYmxvY2stY292ZXItaW1hZ2UgLndwLWJsb2NrLWNvdmVyX19pbm5lci1jb250YWluZXIsLndwLWJsb2NrLWNvdmVyIC53cC1ibG9jay1jb3Zlcl9faW5uZXItY29udGFpbmVye3dpZHRoOjEwMCU7ei1pbmRleDoxO2NvbG9yOiNmZmZ9LndwLWJsb2NrLWNvdmVyLWltYWdlLmlzLWxpZ2h0IC53cC1ibG9jay1jb3Zlcl9faW5uZXItY29udGFpbmVyLC53cC1ibG9jay1jb3Zlci5pcy1saWdodCAud3AtYmxvY2stY292ZXJfX2lubmVyLWNvbnRhaW5lcntjb2xvcjojMDAwfS53cC1ibG9jay1jb3Zlci1pbWFnZSBoMTpub3QoLmhhcy10ZXh0LWNvbG9yKSwud3AtYmxvY2stY292ZXItaW1hZ2UgaDI6bm90KC5oYXMtdGV4dC1jb2xvciksLndwLWJsb2NrLWNvdmVyLWltYWdlIGgzOm5vdCguaGFzLXRleHQtY29sb3IpLC53cC1ibG9jay1jb3Zlci1pbWFnZSBoNDpub3QoLmhhcy10ZXh0LWNvbG9yKSwud3AtYmxvY2stY292ZXItaW1hZ2UgaDU6bm90KC5oYXMtdGV4dC1jb2xvciksLndwLWJsb2NrLWNvdmVyLWltYWdlIGg2Om5vdCguaGFzLXRleHQtY29sb3IpLC53cC1ibG9jay1jb3Zlci1pbWFnZSBwOm5vdCguaGFzLXRleHQtY29sb3IpLC53cC1ibG9jay1jb3ZlciBoMTpub3QoLmhhcy10ZXh0LWNvbG9yKSwud3AtYmxvY2stY292ZXIgaDI6bm90KC5oYXMtdGV4dC1jb2xvciksLndwLWJsb2NrLWNvdmVyIGgzOm5vdCguaGFzLXRleHQtY29sb3IpLC53cC1ibG9jay1jb3ZlciBoNDpub3QoLmhhcy10ZXh0LWNvbG9yKSwud3AtYmxvY2stY292ZXIgaDU6bm90KC5oYXMtdGV4dC1jb2xvciksLndwLWJsb2NrLWNvdmVyIGg2Om5vdCguaGFzLXRleHQtY29sb3IpLC53cC1ibG9jay1jb3ZlciBwOm5vdCguaGFzLXRleHQtY29sb3Ipe2NvbG9yOmluaGVyaXR9LndwLWJsb2NrLWNvdmVyLWltYWdlLmlzLXBvc2l0aW9uLXRvcC1sZWZ0LC53cC1ibG9jay1jb3Zlci5pcy1wb3NpdGlvbi10b3AtbGVmdHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS53cC1ibG9jay1jb3Zlci1pbWFnZS5pcy1wb3NpdGlvbi10b3AtY2VudGVyLC53cC1ibG9jay1jb3Zlci5pcy1wb3NpdGlvbi10b3AtY2VudGVye2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ud3AtYmxvY2stY292ZXItaW1hZ2UuaXMtcG9zaXRpb24tdG9wLXJpZ2h0LC53cC1ibG9jay1jb3Zlci5pcy1wb3NpdGlvbi10b3AtcmlnaHR7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LndwLWJsb2NrLWNvdmVyLWltYWdlLmlzLXBvc2l0aW9uLWNlbnRlci1sZWZ0LC53cC1ibG9jay1jb3Zlci5pcy1wb3NpdGlvbi1jZW50ZXItbGVmdHthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LndwLWJsb2NrLWNvdmVyLWltYWdlLmlzLXBvc2l0aW9uLWNlbnRlci1jZW50ZXIsLndwLWJsb2NrLWNvdmVyLmlzLXBvc2l0aW9uLWNlbnRlci1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LndwLWJsb2NrLWNvdmVyLWltYWdlLmlzLXBvc2l0aW9uLWNlbnRlci1yaWdodCwud3AtYmxvY2stY292ZXIuaXMtcG9zaXRpb24tY2VudGVyLXJpZ2h0e2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LndwLWJsb2NrLWNvdmVyLWltYWdlLmlzLXBvc2l0aW9uLWJvdHRvbS1sZWZ0LC53cC1ibG9jay1jb3Zlci5pcy1wb3NpdGlvbi1ib3R0b20tbGVmdHthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0ud3AtYmxvY2stY292ZXItaW1hZ2UuaXMtcG9zaXRpb24tYm90dG9tLWNlbnRlciwud3AtYmxvY2stY292ZXIuaXMtcG9zaXRpb24tYm90dG9tLWNlbnRlcnthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS53cC1ibG9jay1jb3Zlci1pbWFnZS5pcy1wb3NpdGlvbi1ib3R0b20tcmlnaHQsLndwLWJsb2NrLWNvdmVyLmlzLXBvc2l0aW9uLWJvdHRvbS1yaWdodHthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LndwLWJsb2NrLWNvdmVyLWltYWdlLmhhcy1jdXN0b20tY29udGVudC1wb3NpdGlvbi5oYXMtY3VzdG9tLWNvbnRlbnQtcG9zaXRpb24gLndwLWJsb2NrLWNvdmVyX19pbm5lci1jb250YWluZXIsLndwLWJsb2NrLWNvdmVyLmhhcy1jdXN0b20tY29udGVudC1wb3NpdGlvbi5oYXMtY3VzdG9tLWNvbnRlbnQtcG9zaXRpb24gLndwLWJsb2NrLWNvdmVyX19pbm5lci1jb250YWluZXJ7bWFyZ2luOjA7d2lkdGg6YXV0b30ud3AtYmxvY2stY292ZXItaW1hZ2UgaW1nLndwLWJsb2NrLWNvdmVyX19pbWFnZS1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlci1pbWFnZSB2aWRlby53cC1ibG9jay1jb3Zlcl9fdmlkZW8tYmFja2dyb3VuZCwud3AtYmxvY2stY292ZXIgaW1nLndwLWJsb2NrLWNvdmVyX19pbWFnZS1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3ZlciB2aWRlby53cC1ibG9jay1jb3Zlcl9fdmlkZW8tYmFja2dyb3VuZHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttYXgtd2lkdGg6bm9uZTttYXgtaGVpZ2h0Om5vbmU7LW8tb2JqZWN0LWZpdDpjb3ZlcjtvYmplY3QtZml0OmNvdmVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTtib3gtc2hhZG93Om5vbmV9LndwLWJsb2NrLWNvdmVyX19pbWFnZS1iYWNrZ3JvdW5kLC53cC1ibG9jay1jb3Zlcl9fdmlkZW8tYmFja2dyb3VuZHt6LWluZGV4OjB9LndwLWJsb2NrLWNvdmVyLWltYWdlLXRleHQsLndwLWJsb2NrLWNvdmVyLWltYWdlLXRleHQgYSwud3AtYmxvY2stY292ZXItaW1hZ2UtdGV4dCBhOmFjdGl2ZSwud3AtYmxvY2stY292ZXItaW1hZ2UtdGV4dCBhOmZvY3VzLC53cC1ibG9jay1jb3Zlci1pbWFnZS10ZXh0IGE6aG92ZXIsLndwLWJsb2NrLWNvdmVyLXRleHQsLndwLWJsb2NrLWNvdmVyLXRleHQgYSwud3AtYmxvY2stY292ZXItdGV4dCBhOmFjdGl2ZSwud3AtYmxvY2stY292ZXItdGV4dCBhOmZvY3VzLC53cC1ibG9jay1jb3Zlci10ZXh0IGE6aG92ZXIsc2VjdGlvbi53cC1ibG9jay1jb3Zlci1pbWFnZSBoMixzZWN0aW9uLndwLWJsb2NrLWNvdmVyLWltYWdlIGgyIGEsc2VjdGlvbi53cC1ibG9jay1jb3Zlci1pbWFnZSBoMiBhOmFjdGl2ZSxzZWN0aW9uLndwLWJsb2NrLWNvdmVyLWltYWdlIGgyIGE6Zm9jdXMsc2VjdGlvbi53cC1ibG9jay1jb3Zlci1pbWFnZSBoMiBhOmhvdmVye2NvbG9yOiNmZmZ9LndwLWJsb2NrLWNvdmVyLWltYWdlIC53cC1ibG9jay1jb3Zlci5oYXMtbGVmdC1jb250ZW50e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS53cC1ibG9jay1jb3Zlci1pbWFnZSAud3AtYmxvY2stY292ZXIuaGFzLXJpZ2h0LWNvbnRlbnR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS53cC1ibG9jay1jb3Zlci1pbWFnZS5oYXMtbGVmdC1jb250ZW50IC53cC1ibG9jay1jb3Zlci1pbWFnZS10ZXh0LC53cC1ibG9jay1jb3Zlci5oYXMtbGVmdC1jb250ZW50IC53cC1ibG9jay1jb3Zlci10ZXh0LHNlY3Rpb24ud3AtYmxvY2stY292ZXItaW1hZ2UuaGFzLWxlZnQtY29udGVudD5oMnttYXJnaW4tbGVmdDowO3RleHQtYWxpZ246bGVmdH0ud3AtYmxvY2stY292ZXItaW1hZ2UuaGFzLXJpZ2h0LWNvbnRlbnQgLndwLWJsb2NrLWNvdmVyLWltYWdlLXRleHQsLndwLWJsb2NrLWNvdmVyLmhhcy1yaWdodC1jb250ZW50IC53cC1ibG9jay1jb3Zlci10ZXh0LHNlY3Rpb24ud3AtYmxvY2stY292ZXItaW1hZ2UuaGFzLXJpZ2h0LWNvbnRlbnQ+aDJ7bWFyZ2luLXJpZ2h0OjA7dGV4dC1hbGlnbjpyaWdodH0ud3AtYmxvY2stY292ZXItaW1hZ2UgLndwLWJsb2NrLWNvdmVyLWltYWdlLXRleHQsLndwLWJsb2NrLWNvdmVyIC53cC1ibG9jay1jb3Zlci10ZXh0LHNlY3Rpb24ud3AtYmxvY2stY292ZXItaW1hZ2U+aDJ7Zm9udC1zaXplOjJlbTtsaW5lLWhlaWdodDoxLjI1O3otaW5kZXg6MTttYXJnaW4tYm90dG9tOjA7bWF4LXdpZHRoOjg0MHB4O3BhZGRpbmc6LjQ0ZW07dGV4dC1hbGlnbjpjZW50ZXJ9LndwLWJsb2NrLWVtYmVkLmFsaWdubGVmdCwud3AtYmxvY2stZW1iZWQuYWxpZ25yaWdodCwud3AtYmxvY2tbZGF0YS1hbGlnbj1sZWZ0XT5bZGF0YS10eXBlPSJjb3JlL2VtYmVkIl0sLndwLWJsb2NrW2RhdGEtYWxpZ249cmlnaHRdPltkYXRhLXR5cGU9ImNvcmUvZW1iZWQiXXttYXgtd2lkdGg6MzYwcHg7d2lkdGg6MTAwJX0ud3AtYmxvY2stZW1iZWQuYWxpZ25sZWZ0IC53cC1ibG9jay1lbWJlZF9fd3JhcHBlciwud3AtYmxvY2stZW1iZWQuYWxpZ25yaWdodCAud3AtYmxvY2stZW1iZWRfX3dyYXBwZXIsLndwLWJsb2NrW2RhdGEtYWxpZ249bGVmdF0+W2RhdGEtdHlwZT0iY29yZS9lbWJlZCJdIC53cC1ibG9jay1lbWJlZF9fd3JhcHBlciwud3AtYmxvY2tbZGF0YS1hbGlnbj1yaWdodF0+W2RhdGEtdHlwZT0iY29yZS9lbWJlZCJdIC53cC1ibG9jay1lbWJlZF9fd3JhcHBlcnttaW4td2lkdGg6MjgwcHh9LndwLWJsb2NrLWNvdmVyIC53cC1ibG9jay1lbWJlZHttaW4td2lkdGg6MzIwcHg7bWluLWhlaWdodDoyNDBweH0ud3AtYmxvY2stZW1iZWR7bWFyZ2luOjAgMCAxZW07b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS53cC1ibG9jay1lbWJlZCBmaWdjYXB0aW9ue21hcmdpbi10b3A6LjVlbTttYXJnaW4tYm90dG9tOjFlbX0ud3AtYmxvY2stZW1iZWQgaWZyYW1le21heC13aWR0aDoxMDAlfS53cC1ibG9jay1lbWJlZF9fd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZX0ud3AtZW1iZWQtcmVzcG9uc2l2ZSAud3AtaGFzLWFzcGVjdC1yYXRpbyAud3AtYmxvY2stZW1iZWRfX3dyYXBwZXI6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDo1MCV9LndwLWVtYmVkLXJlc3BvbnNpdmUgLndwLWhhcy1hc3BlY3QtcmF0aW8gaWZyYW1le3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LndwLWVtYmVkLXJlc3BvbnNpdmUgLndwLWVtYmVkLWFzcGVjdC0yMS05IC53cC1ibG9jay1lbWJlZF9fd3JhcHBlcjpiZWZvcmV7cGFkZGluZy10b3A6NDIuODUlfS53cC1lbWJlZC1yZXNwb25zaXZlIC53cC1lbWJlZC1hc3BlY3QtMTgtOSAud3AtYmxvY2stZW1iZWRfX3dyYXBwZXI6YmVmb3Jle3BhZGRpbmctdG9wOjUwJX0ud3AtZW1iZWQtcmVzcG9uc2l2ZSAud3AtZW1iZWQtYXNwZWN0LTE2LTkgLndwLWJsb2NrLWVtYmVkX193cmFwcGVyOmJlZm9yZXtwYWRkaW5nLXRvcDo1Ni4yNSV9LndwLWVtYmVkLXJlc3BvbnNpdmUgLndwLWVtYmVkLWFzcGVjdC00LTMgLndwLWJsb2NrLWVtYmVkX193cmFwcGVyOmJlZm9yZXtwYWRkaW5nLXRvcDo3NSV9LndwLWVtYmVkLXJlc3BvbnNpdmUgLndwLWVtYmVkLWFzcGVjdC0xLTEgLndwLWJsb2NrLWVtYmVkX193cmFwcGVyOmJlZm9yZXtwYWRkaW5nLXRvcDoxMDAlfS53cC1lbWJlZC1yZXNwb25zaXZlIC53cC1lbWJlZC1hc3BlY3QtOS0xNiAud3AtYmxvY2stZW1iZWRfX3dyYXBwZXI6YmVmb3Jle3BhZGRpbmctdG9wOjE3Ny43NyV9LndwLWVtYmVkLXJlc3BvbnNpdmUgLndwLWVtYmVkLWFzcGVjdC0xLTIgLndwLWJsb2NrLWVtYmVkX193cmFwcGVyOmJlZm9yZXtwYWRkaW5nLXRvcDoyMDAlfS53cC1ibG9jay1maWxle21hcmdpbi1ib3R0b206MS41ZW19LndwLWJsb2NrLWZpbGUuYWxpZ25jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LndwLWJsb2NrLWZpbGUuYWxpZ25yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS53cC1ibG9jay1maWxlIC53cC1ibG9jay1maWxlX19lbWJlZHttYXJnaW4tYm90dG9tOjFlbX0ud3AtYmxvY2stZmlsZSAud3AtYmxvY2stZmlsZV9fYnV0dG9ue2JhY2tncm91bmQ6IzMyMzczYztib3JkZXItcmFkaXVzOjJlbTtjb2xvcjojZmZmO2ZvbnQtc2l6ZTouOGVtO3BhZGRpbmc6LjVlbSAxZW19LndwLWJsb2NrLWZpbGUgYS53cC1ibG9jay1maWxlX19idXR0b257dGV4dC1kZWNvcmF0aW9uOm5vbmV9LndwLWJsb2NrLWZpbGUgYS53cC1ibG9jay1maWxlX19idXR0b246YWN0aXZlLC53cC1ibG9jay1maWxlIGEud3AtYmxvY2stZmlsZV9fYnV0dG9uOmZvY3VzLC53cC1ibG9jay1maWxlIGEud3AtYmxvY2stZmlsZV9fYnV0dG9uOmhvdmVyLC53cC1ibG9jay1maWxlIGEud3AtYmxvY2stZmlsZV9fYnV0dG9uOnZpc2l0ZWR7Ym94LXNoYWRvdzpub25lO2NvbG9yOiNmZmY7b3BhY2l0eTouODU7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LndwLWJsb2NrLWZpbGUgKisud3AtYmxvY2stZmlsZV9fYnV0dG9ue21hcmdpbi1sZWZ0Oi43NWVtfS5ibG9ja3MtZ2FsbGVyeS1ncmlkLC53cC1ibG9jay1nYWxsZXJ5e2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtsaXN0LXN0eWxlLXR5cGU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjB9LmJsb2Nrcy1nYWxsZXJ5LWdyaWQgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLC5ibG9ja3MtZ2FsbGVyeS1ncmlkIC5ibG9ja3MtZ2FsbGVyeS1pdGVtLC53cC1ibG9jay1nYWxsZXJ5IC5ibG9ja3MtZ2FsbGVyeS1pbWFnZSwud3AtYmxvY2stZ2FsbGVyeSAuYmxvY2tzLWdhbGxlcnktaXRlbXttYXJnaW46MCAxZW0gMWVtIDA7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOmNhbGMoNTAlIC0gMWVtKX0uYmxvY2tzLWdhbGxlcnktZ3JpZCAuYmxvY2tzLWdhbGxlcnktaW1hZ2U6bnRoLW9mLXR5cGUoMm4pLC5ibG9ja3MtZ2FsbGVyeS1ncmlkIC5ibG9ja3MtZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDJuKSwud3AtYmxvY2stZ2FsbGVyeSAuYmxvY2tzLWdhbGxlcnktaW1hZ2U6bnRoLW9mLXR5cGUoMm4pLC53cC1ibG9jay1nYWxsZXJ5IC5ibG9ja3MtZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDJuKXttYXJnaW4tcmlnaHQ6MH0uYmxvY2tzLWdhbGxlcnktZ3JpZCAuYmxvY2tzLWdhbGxlcnktaW1hZ2UgZmlndXJlLC5ibG9ja3MtZ2FsbGVyeS1ncmlkIC5ibG9ja3MtZ2FsbGVyeS1pdGVtIGZpZ3VyZSwud3AtYmxvY2stZ2FsbGVyeSAuYmxvY2tzLWdhbGxlcnktaW1hZ2UgZmlndXJlLC53cC1ibG9jay1nYWxsZXJ5IC5ibG9ja3MtZ2FsbGVyeS1pdGVtIGZpZ3VyZXttYXJnaW46MDtoZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmJsb2Nrcy1nYWxsZXJ5LWdyaWQgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlIGltZywuYmxvY2tzLWdhbGxlcnktZ3JpZCAuYmxvY2tzLWdhbGxlcnktaXRlbSBpbWcsLndwLWJsb2NrLWdhbGxlcnkgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlIGltZywud3AtYmxvY2stZ2FsbGVyeSAuYmxvY2tzLWdhbGxlcnktaXRlbSBpbWd7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDphdXRvfS5ibG9ja3MtZ2FsbGVyeS1ncmlkIC5ibG9ja3MtZ2FsbGVyeS1pbWFnZSBmaWdjYXB0aW9uLC5ibG9ja3MtZ2FsbGVyeS1ncmlkIC5ibG9ja3MtZ2FsbGVyeS1pdGVtIGZpZ2NhcHRpb24sLndwLWJsb2NrLWdhbGxlcnkgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlIGZpZ2NhcHRpb24sLndwLWJsb2NrLWdhbGxlcnkgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW0gZmlnY2FwdGlvbntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDt3aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6M2VtIC43N2VtIC43ZW07Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6LjhlbTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgwZGVnLHJnYmEoMCwwLDAsLjcpLHJnYmEoMCwwLDAsLjMpIDcwJSx0cmFuc3BhcmVudCk7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3otaW5kZXg6Mn0uYmxvY2tzLWdhbGxlcnktZ3JpZCAuYmxvY2tzLWdhbGxlcnktaW1hZ2UgZmlnY2FwdGlvbiBpbWcsLmJsb2Nrcy1nYWxsZXJ5LWdyaWQgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW0gZmlnY2FwdGlvbiBpbWcsLndwLWJsb2NrLWdhbGxlcnkgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlIGZpZ2NhcHRpb24gaW1nLC53cC1ibG9jay1nYWxsZXJ5IC5ibG9ja3MtZ2FsbGVyeS1pdGVtIGZpZ2NhcHRpb24gaW1ne2Rpc3BsYXk6aW5saW5lfS5ibG9ja3MtZ2FsbGVyeS1ncmlkIGZpZ2NhcHRpb24sLndwLWJsb2NrLWdhbGxlcnkgZmlnY2FwdGlvbntmbGV4LWdyb3c6MX0uYmxvY2tzLWdhbGxlcnktZ3JpZC5pcy1jcm9wcGVkIC5ibG9ja3MtZ2FsbGVyeS1pbWFnZSBhLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmlzLWNyb3BwZWQgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlIGltZywuYmxvY2tzLWdhbGxlcnktZ3JpZC5pcy1jcm9wcGVkIC5ibG9ja3MtZ2FsbGVyeS1pdGVtIGEsLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuaXMtY3JvcHBlZCAuYmxvY2tzLWdhbGxlcnktaXRlbSBpbWcsLndwLWJsb2NrLWdhbGxlcnkuaXMtY3JvcHBlZCAuYmxvY2tzLWdhbGxlcnktaW1hZ2UgYSwud3AtYmxvY2stZ2FsbGVyeS5pcy1jcm9wcGVkIC5ibG9ja3MtZ2FsbGVyeS1pbWFnZSBpbWcsLndwLWJsb2NrLWdhbGxlcnkuaXMtY3JvcHBlZCAuYmxvY2tzLWdhbGxlcnktaXRlbSBhLC53cC1ibG9jay1nYWxsZXJ5LmlzLWNyb3BwZWQgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW0gaW1ne3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZmxleDoxOy1vLW9iamVjdC1maXQ6Y292ZXI7b2JqZWN0LWZpdDpjb3Zlcn0uYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTEgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtMSAuYmxvY2tzLWdhbGxlcnktaXRlbSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTEgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtMSAuYmxvY2tzLWdhbGxlcnktaXRlbXt3aWR0aDoxMDAlO21hcmdpbi1yaWdodDowfUBtZWRpYSAobWluLXdpZHRoOjYwMHB4KXsuYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTMgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtMyAuYmxvY2tzLWdhbGxlcnktaXRlbSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTMgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtMyAuYmxvY2tzLWdhbGxlcnktaXRlbXt3aWR0aDpjYWxjKDMzLjMzMzMzJSAtIC42NjY2N2VtKTttYXJnaW4tcmlnaHQ6MWVtfS5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtNCAuYmxvY2tzLWdhbGxlcnktaW1hZ2UsLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy00IC5ibG9ja3MtZ2FsbGVyeS1pdGVtLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtNCAuYmxvY2tzLWdhbGxlcnktaW1hZ2UsLndwLWJsb2NrLWdhbGxlcnkuY29sdW1ucy00IC5ibG9ja3MtZ2FsbGVyeS1pdGVte3dpZHRoOmNhbGMoMjUlIC0gLjc1ZW0pO21hcmdpbi1yaWdodDoxZW19LmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy01IC5ibG9ja3MtZ2FsbGVyeS1pbWFnZSwuYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTUgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW0sLndwLWJsb2NrLWdhbGxlcnkuY29sdW1ucy01IC5ibG9ja3MtZ2FsbGVyeS1pbWFnZSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTUgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW17d2lkdGg6Y2FsYygyMCUgLSAuOGVtKTttYXJnaW4tcmlnaHQ6MWVtfS5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtNiAuYmxvY2tzLWdhbGxlcnktaW1hZ2UsLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy02IC5ibG9ja3MtZ2FsbGVyeS1pdGVtLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtNiAuYmxvY2tzLWdhbGxlcnktaW1hZ2UsLndwLWJsb2NrLWdhbGxlcnkuY29sdW1ucy02IC5ibG9ja3MtZ2FsbGVyeS1pdGVte3dpZHRoOmNhbGMoMTYuNjY2NjclIC0gLjgzMzMzZW0pO21hcmdpbi1yaWdodDoxZW19LmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy03IC5ibG9ja3MtZ2FsbGVyeS1pbWFnZSwuYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTcgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW0sLndwLWJsb2NrLWdhbGxlcnkuY29sdW1ucy03IC5ibG9ja3MtZ2FsbGVyeS1pbWFnZSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTcgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW17d2lkdGg6Y2FsYygxNC4yODU3MSUgLSAuODU3MTRlbSk7bWFyZ2luLXJpZ2h0OjFlbX0uYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTggLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtOCAuYmxvY2tzLWdhbGxlcnktaXRlbSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTggLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtOCAuYmxvY2tzLWdhbGxlcnktaXRlbXt3aWR0aDpjYWxjKDEyLjUlIC0gLjg3NWVtKTttYXJnaW4tcmlnaHQ6MWVtfS5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtMSAuYmxvY2tzLWdhbGxlcnktaW1hZ2U6bnRoLW9mLXR5cGUoMW4pLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtMSAuYmxvY2tzLWdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSgxbiksLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy0yIC5ibG9ja3MtZ2FsbGVyeS1pbWFnZTpudGgtb2YtdHlwZSgybiksLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy0yIC5ibG9ja3MtZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDJuKSwuYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTMgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlOm50aC1vZi10eXBlKDNuKSwuYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTMgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoM24pLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtNCAuYmxvY2tzLWdhbGxlcnktaW1hZ2U6bnRoLW9mLXR5cGUoNG4pLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtNCAuYmxvY2tzLWdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg0biksLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy01IC5ibG9ja3MtZ2FsbGVyeS1pbWFnZTpudGgtb2YtdHlwZSg1biksLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy01IC5ibG9ja3MtZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDVuKSwuYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTYgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlOm50aC1vZi10eXBlKDZuKSwuYmxvY2tzLWdhbGxlcnktZ3JpZC5jb2x1bW5zLTYgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoNm4pLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtNyAuYmxvY2tzLWdhbGxlcnktaW1hZ2U6bnRoLW9mLXR5cGUoN24pLC5ibG9ja3MtZ2FsbGVyeS1ncmlkLmNvbHVtbnMtNyAuYmxvY2tzLWdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg3biksLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy04IC5ibG9ja3MtZ2FsbGVyeS1pbWFnZTpudGgtb2YtdHlwZSg4biksLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuY29sdW1ucy04IC5ibG9ja3MtZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDhuKSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTEgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlOm50aC1vZi10eXBlKDFuKSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTEgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoMW4pLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtMiAuYmxvY2tzLWdhbGxlcnktaW1hZ2U6bnRoLW9mLXR5cGUoMm4pLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtMiAuYmxvY2tzLWdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSgybiksLndwLWJsb2NrLWdhbGxlcnkuY29sdW1ucy0zIC5ibG9ja3MtZ2FsbGVyeS1pbWFnZTpudGgtb2YtdHlwZSgzbiksLndwLWJsb2NrLWdhbGxlcnkuY29sdW1ucy0zIC5ibG9ja3MtZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDNuKSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTQgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlOm50aC1vZi10eXBlKDRuKSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTQgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoNG4pLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtNSAuYmxvY2tzLWdhbGxlcnktaW1hZ2U6bnRoLW9mLXR5cGUoNW4pLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtNSAuYmxvY2tzLWdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg1biksLndwLWJsb2NrLWdhbGxlcnkuY29sdW1ucy02IC5ibG9ja3MtZ2FsbGVyeS1pbWFnZTpudGgtb2YtdHlwZSg2biksLndwLWJsb2NrLWdhbGxlcnkuY29sdW1ucy02IC5ibG9ja3MtZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDZuKSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTcgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlOm50aC1vZi10eXBlKDduKSwud3AtYmxvY2stZ2FsbGVyeS5jb2x1bW5zLTcgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoN24pLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtOCAuYmxvY2tzLWdhbGxlcnktaW1hZ2U6bnRoLW9mLXR5cGUoOG4pLC53cC1ibG9jay1nYWxsZXJ5LmNvbHVtbnMtOCAuYmxvY2tzLWdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg4bil7bWFyZ2luLXJpZ2h0OjB9fS5ibG9ja3MtZ2FsbGVyeS1ncmlkIC5ibG9ja3MtZ2FsbGVyeS1pbWFnZTpsYXN0LWNoaWxkLC5ibG9ja3MtZ2FsbGVyeS1ncmlkIC5ibG9ja3MtZ2FsbGVyeS1pdGVtOmxhc3QtY2hpbGQsLndwLWJsb2NrLWdhbGxlcnkgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlOmxhc3QtY2hpbGQsLndwLWJsb2NrLWdhbGxlcnkgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW06bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uYmxvY2tzLWdhbGxlcnktZ3JpZC5hbGlnbmxlZnQsLmJsb2Nrcy1nYWxsZXJ5LWdyaWQuYWxpZ25yaWdodCwud3AtYmxvY2stZ2FsbGVyeS5hbGlnbmxlZnQsLndwLWJsb2NrLWdhbGxlcnkuYWxpZ25yaWdodHttYXgtd2lkdGg6NDIwcHg7d2lkdGg6MTAwJX0uYmxvY2tzLWdhbGxlcnktZ3JpZC5hbGlnbmNlbnRlciAuYmxvY2tzLWdhbGxlcnktaXRlbSBmaWd1cmUsLndwLWJsb2NrLWdhbGxlcnkuYWxpZ25jZW50ZXIgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW0gZmlndXJle2p1c3RpZnktY29udGVudDpjZW50ZXJ9LndwLWJsb2NrLWdhbGxlcnk6bm90KC5pcy1jcm9wcGVkKSAuYmxvY2tzLWdhbGxlcnktaXRlbXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzIGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2Upe21hcmdpbjowIHZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpIHZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpIDA7d2lkdGg6Y2FsYyg1MCUgLSB2YXIoLS1nYWxsZXJ5LWJsb2NrLS1ndXR0ZXItc2l6ZSwgMTZweCkvMil9LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSk6bGFzdC1vZi10eXBlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSksLndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSk6bnRoLW9mLXR5cGUoMm4pe21hcmdpbi1yaWdodDowfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzIGZpZ3VyZS53cC1ibG9jay1pbWFnZXtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXgtd2lkdGg6MTAwJX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcyBmaWd1cmUud3AtYmxvY2staW1hZ2U+YSwud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcyBmaWd1cmUud3AtYmxvY2staW1hZ2U+ZGl2e21hcmdpbjowO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcyBmaWd1cmUud3AtYmxvY2staW1hZ2UgaW1ne2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmF1dG87bWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50O3dpZHRoOmF1dG99LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMgZmlndXJlLndwLWJsb2NrLWltYWdlIGZpZ2NhcHRpb257YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMGRlZyxyZ2JhKDAsMCwwLC43KSxyZ2JhKDAsMCwwLC4zKSA3MCUsdHJhbnNwYXJlbnQpO2JvdHRvbTowO2NvbG9yOiNmZmY7Zm9udC1zaXplOjEzcHg7bGVmdDowO21hcmdpbi1ib3R0b206MDttYXgtaGVpZ2h0OjYwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MCA4cHggOHB4O3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94fS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzIGZpZ3VyZS53cC1ibG9jay1pbWFnZSBmaWdjYXB0aW9uIGltZ3tkaXNwbGF5OmlubGluZX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcyBmaWd1cmUud3AtYmxvY2staW1hZ2UuaXMtc3R5bGUtcm91bmRlZD5hLC53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzIGZpZ3VyZS53cC1ibG9jay1pbWFnZS5pcy1zdHlsZS1yb3VuZGVkPmRpdntmbGV4OjEgMSBhdXRvfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzIGZpZ3VyZS53cC1ibG9jay1pbWFnZS5pcy1zdHlsZS1yb3VuZGVkIGZpZ2NhcHRpb257ZmxleDppbml0aWFsO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O21hcmdpbjowO3BhZGRpbmc6MTBweCAxMHB4IDlweDtwb3NpdGlvbjpyZWxhdGl2ZX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcyBmaWdjYXB0aW9ue2ZsZXgtZ3JvdzoxO2ZsZXgtYmFzaXM6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcn0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlczpub3QoLmlzLWNyb3BwZWQpIGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2Upe21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOmF1dG99LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXM6bm90KC5pcy1jcm9wcGVkKSBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKSBpbWd7bWFyZ2luLWJvdHRvbTp2YXIoLS1nYWxsZXJ5LWJsb2NrLS1ndXR0ZXItc2l6ZSwxNnB4KX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlczpub3QoLmlzLWNyb3BwZWQpIGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2UpIGZpZ2NhcHRpb257Ym90dG9tOnZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmlzLWNyb3BwZWQgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSl7YWxpZ24tc2VsZjppbmhlcml0fS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmlzLWNyb3BwZWQgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSk+YSwud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5pcy1jcm9wcGVkIGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2UpPmRpdjpub3QoLmNvbXBvbmVudHMtZHJvcC16b25lKXtkaXNwbGF5OmZsZXh9LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuaXMtY3JvcHBlZCBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKSBhLC53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmlzLWNyb3BwZWQgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSkgaW1ne3dpZHRoOjEwMCU7ZmxleDoxIDAgMCU7aGVpZ2h0OjEwMCU7LW8tb2JqZWN0LWZpdDpjb3ZlcjtvYmplY3QtZml0OmNvdmVyfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtMSBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKXttYXJnaW4tcmlnaHQ6MDt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjYwMHB4KXsud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLTMgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSl7bWFyZ2luLXJpZ2h0OnZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpO3dpZHRoOmNhbGMoMzMuMzMzMzMlIC0gdmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsIDE2cHgpKjAuNjY2NjcpfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtMyBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKS5pcy1kcmFnZ2luZ35maWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKXttYXJnaW4tcmlnaHQ6dmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsMTZweCl9LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuY29sdW1ucy00IGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2Upe21hcmdpbi1yaWdodDp2YXIoLS1nYWxsZXJ5LWJsb2NrLS1ndXR0ZXItc2l6ZSwxNnB4KTt3aWR0aDpjYWxjKDI1JSAtIHZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLCAxNnB4KSowLjc1KX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLTQgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSkuaXMtZHJhZ2dpbmd+ZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSl7bWFyZ2luLXJpZ2h0OnZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtNSBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKXttYXJnaW4tcmlnaHQ6dmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsMTZweCk7d2lkdGg6Y2FsYygyMCUgLSB2YXIoLS1nYWxsZXJ5LWJsb2NrLS1ndXR0ZXItc2l6ZSwgMTZweCkqMC44KX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLTUgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSkuaXMtZHJhZ2dpbmd+ZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSl7bWFyZ2luLXJpZ2h0OnZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtNiBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKXttYXJnaW4tcmlnaHQ6dmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsMTZweCk7d2lkdGg6Y2FsYygxNi42NjY2NyUgLSB2YXIoLS1nYWxsZXJ5LWJsb2NrLS1ndXR0ZXItc2l6ZSwgMTZweCkqMC44MzMzMyl9LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuY29sdW1ucy02IGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2UpLmlzLWRyYWdnaW5nfmZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2Upe21hcmdpbi1yaWdodDp2YXIoLS1nYWxsZXJ5LWJsb2NrLS1ndXR0ZXItc2l6ZSwxNnB4KX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLTcgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSl7bWFyZ2luLXJpZ2h0OnZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpO3dpZHRoOmNhbGMoMTQuMjg1NzElIC0gdmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsIDE2cHgpKjAuODU3MTQpfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtNyBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKS5pcy1kcmFnZ2luZ35maWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKXttYXJnaW4tcmlnaHQ6dmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsMTZweCl9LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuY29sdW1ucy04IGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2Upe21hcmdpbi1yaWdodDp2YXIoLS1nYWxsZXJ5LWJsb2NrLS1ndXR0ZXItc2l6ZSwxNnB4KTt3aWR0aDpjYWxjKDEyLjUlIC0gdmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsIDE2cHgpKjAuODc1KX0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLTggZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSkuaXMtZHJhZ2dpbmd+ZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSl7bWFyZ2luLXJpZ2h0OnZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtMSBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKTpudGgtb2YtdHlwZSgxbiksLndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuY29sdW1ucy0yIGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2UpOm50aC1vZi10eXBlKDJuKSwud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLTMgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSk6bnRoLW9mLXR5cGUoM24pLC53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtNCBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKTpudGgtb2YtdHlwZSg0biksLndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuY29sdW1ucy01IGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2UpOm50aC1vZi10eXBlKDVuKSwud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLTYgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSk6bnRoLW9mLXR5cGUoNm4pLC53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtNyBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKTpudGgtb2YtdHlwZSg3biksLndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuY29sdW1ucy04IGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2UpOm50aC1vZi10eXBlKDhuKXttYXJnaW4tcmlnaHQ6MH0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLWRlZmF1bHQgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSl7bWFyZ2luLXJpZ2h0OnZhcigtLWdhbGxlcnktYmxvY2stLWd1dHRlci1zaXplLDE2cHgpO3dpZHRoOmNhbGMoMzMuMzMlIC0gdmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsIDE2cHgpKjAuNjY2NjcpfS53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmNvbHVtbnMtZGVmYXVsdCBmaWd1cmUud3AtYmxvY2staW1hZ2U6bm90KCNpbmRpdmlkdWFsLWltYWdlKTpudGgtb2YtdHlwZSgzbiszKXttYXJnaW4tcmlnaHQ6MH0ud3AtYmxvY2stZ2FsbGVyeS5oYXMtbmVzdGVkLWltYWdlcy5jb2x1bW5zLWRlZmF1bHQgZmlndXJlLndwLWJsb2NrLWltYWdlOm5vdCgjaW5kaXZpZHVhbC1pbWFnZSk6Zmlyc3QtY2hpbGQ6bnRoLWxhc3QtY2hpbGQoMiksLndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuY29sdW1ucy1kZWZhdWx0IGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2UpOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKDIpfmZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2Upe3dpZHRoOmNhbGMoNTAlIC0gdmFyKC0tZ2FsbGVyeS1ibG9jay0tZ3V0dGVyLXNpemUsIDE2cHgpKjAuNSl9LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuY29sdW1ucy1kZWZhdWx0IGZpZ3VyZS53cC1ibG9jay1pbWFnZTpub3QoI2luZGl2aWR1YWwtaW1hZ2UpOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGR7d2lkdGg6MTAwJX19LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuYWxpZ25sZWZ0LC53cC1ibG9jay1nYWxsZXJ5Lmhhcy1uZXN0ZWQtaW1hZ2VzLmFsaWducmlnaHR7bWF4LXdpZHRoOjQyMHB4O3dpZHRoOjEwMCV9LndwLWJsb2NrLWdhbGxlcnkuaGFzLW5lc3RlZC1pbWFnZXMuYWxpZ25jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ud3AtYmxvY2stZ3JvdXB7Ym94LXNpemluZzpib3JkZXItYm94fWgxLGgyLGgzLGg0LGg1LGg2e292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1oMS5oYXMtYmFja2dyb3VuZCxoMi5oYXMtYmFja2dyb3VuZCxoMy5oYXMtYmFja2dyb3VuZCxoNC5oYXMtYmFja2dyb3VuZCxoNS5oYXMtYmFja2dyb3VuZCxoNi5oYXMtYmFja2dyb3VuZHtwYWRkaW5nOjEuMjVlbSAyLjM3NWVtfS53cC1ibG9jay1pbWFnZXttYXJnaW46MCAwIDFlbX0ud3AtYmxvY2staW1hZ2UgaW1ne2hlaWdodDphdXRvO21heC13aWR0aDoxMDAlO3ZlcnRpY2FsLWFsaWduOmJvdHRvbX0ud3AtYmxvY2staW1hZ2U6bm90KC5pcy1zdHlsZS1yb3VuZGVkKT5hLC53cC1ibG9jay1pbWFnZTpub3QoLmlzLXN0eWxlLXJvdW5kZWQpIGltZ3tib3JkZXItcmFkaXVzOmluaGVyaXR9LndwLWJsb2NrLWltYWdlLmFsaWduY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS53cC1ibG9jay1pbWFnZS5hbGlnbmZ1bGwgaW1nLC53cC1ibG9jay1pbWFnZS5hbGlnbndpZGUgaW1ne2hlaWdodDphdXRvO3dpZHRoOjEwMCV9LndwLWJsb2NrLWltYWdlIC5hbGlnbmNlbnRlciwud3AtYmxvY2staW1hZ2UgLmFsaWdubGVmdCwud3AtYmxvY2staW1hZ2UgLmFsaWducmlnaHR7ZGlzcGxheTp0YWJsZX0ud3AtYmxvY2staW1hZ2UgLmFsaWduY2VudGVyPmZpZ2NhcHRpb24sLndwLWJsb2NrLWltYWdlIC5hbGlnbmxlZnQ+ZmlnY2FwdGlvbiwud3AtYmxvY2staW1hZ2UgLmFsaWducmlnaHQ+ZmlnY2FwdGlvbntkaXNwbGF5OnRhYmxlLWNhcHRpb247Y2FwdGlvbi1zaWRlOmJvdHRvbX0ud3AtYmxvY2staW1hZ2UgLmFsaWdubGVmdHtmbG9hdDpsZWZ0O21hcmdpbjouNWVtIDFlbSAuNWVtIDB9LndwLWJsb2NrLWltYWdlIC5hbGlnbnJpZ2h0e2Zsb2F0OnJpZ2h0O21hcmdpbjouNWVtIDAgLjVlbSAxZW19LndwLWJsb2NrLWltYWdlIC5hbGlnbmNlbnRlcnttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS53cC1ibG9jay1pbWFnZSBmaWdjYXB0aW9ue21hcmdpbi10b3A6LjVlbTttYXJnaW4tYm90dG9tOjFlbX0ud3AtYmxvY2staW1hZ2UuaXMtc3R5bGUtY2lyY2xlLW1hc2sgaW1nLC53cC1ibG9jay1pbWFnZS5pcy1zdHlsZS1yb3VuZGVkIGltZ3tib3JkZXItcmFkaXVzOjk5OTlweH1Ac3VwcG9ydHMgKCgtd2Via2l0LW1hc2staW1hZ2U6bm9uZSkgb3IgKG1hc2staW1hZ2U6bm9uZSkpIG9yICgtd2Via2l0LW1hc2staW1hZ2U6bm9uZSl7LndwLWJsb2NrLWltYWdlLmlzLXN0eWxlLWNpcmNsZS1tYXNrIGltZ3std2Via2l0LW1hc2staW1hZ2U6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIi8+PC9zdmc+Jyk7bWFzay1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgdmlld0JveD0iMCAwIDEwMCAxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz48L3N2Zz4nKTttYXNrLW1vZGU6YWxwaGE7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47LXdlYmtpdC1tYXNrLXBvc2l0aW9uOmNlbnRlcjttYXNrLXBvc2l0aW9uOmNlbnRlcjtib3JkZXItcmFkaXVzOjB9fS53cC1ibG9jay1pbWFnZSBmaWd1cmV7bWFyZ2luOjB9b2wud3AtYmxvY2stbGF0ZXN0LWNvbW1lbnRze21hcmdpbi1sZWZ0OjB9LndwLWJsb2NrLWxhdGVzdC1jb21tZW50cyAud3AtYmxvY2stbGF0ZXN0LWNvbW1lbnRze3BhZGRpbmctbGVmdDowfS53cC1ibG9jay1sYXRlc3QtY29tbWVudHNfX2NvbW1lbnR7bGluZS1oZWlnaHQ6MS4xO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW4tYm90dG9tOjFlbX0uaGFzLWF2YXRhcnMgLndwLWJsb2NrLWxhdGVzdC1jb21tZW50c19fY29tbWVudHttaW4taGVpZ2h0OjIuMjVlbTtsaXN0LXN0eWxlOm5vbmV9Lmhhcy1hdmF0YXJzIC53cC1ibG9jay1sYXRlc3QtY29tbWVudHNfX2NvbW1lbnQgLndwLWJsb2NrLWxhdGVzdC1jb21tZW50c19fY29tbWVudC1leGNlcnB0LC5oYXMtYXZhdGFycyAud3AtYmxvY2stbGF0ZXN0LWNvbW1lbnRzX19jb21tZW50IC53cC1ibG9jay1sYXRlc3QtY29tbWVudHNfX2NvbW1lbnQtbWV0YXttYXJnaW4tbGVmdDozLjI1ZW19Lmhhcy1kYXRlcyAud3AtYmxvY2stbGF0ZXN0LWNvbW1lbnRzX19jb21tZW50LC5oYXMtZXhjZXJwdHMgLndwLWJsb2NrLWxhdGVzdC1jb21tZW50c19fY29tbWVudHtsaW5lLWhlaWdodDoxLjV9LndwLWJsb2NrLWxhdGVzdC1jb21tZW50c19fY29tbWVudC1leGNlcnB0IHB7Zm9udC1zaXplOi44NzVlbTtsaW5lLWhlaWdodDoxLjg7bWFyZ2luOi4zNmVtIDAgMS40ZW19LndwLWJsb2NrLWxhdGVzdC1jb21tZW50c19fY29tbWVudC1kYXRle2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOi43NWVtfS53cC1ibG9jay1sYXRlc3QtY29tbWVudHMgLmF2YXRhciwud3AtYmxvY2stbGF0ZXN0LWNvbW1lbnRzX19jb21tZW50LWF2YXRhcntib3JkZXItcmFkaXVzOjEuNWVtO2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtoZWlnaHQ6Mi41ZW07bWFyZ2luLXJpZ2h0Oi43NWVtO3dpZHRoOjIuNWVtfS53cC1ibG9jay1sYXRlc3QtcG9zdHMuYWxpZ25sZWZ0e21hcmdpbi1yaWdodDoyZW19LndwLWJsb2NrLWxhdGVzdC1wb3N0cy5hbGlnbnJpZ2h0e21hcmdpbi1sZWZ0OjJlbX0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzLndwLWJsb2NrLWxhdGVzdC1wb3N0c19fbGlzdHtsaXN0LXN0eWxlOm5vbmU7cGFkZGluZy1sZWZ0OjB9LndwLWJsb2NrLWxhdGVzdC1wb3N0cy53cC1ibG9jay1sYXRlc3QtcG9zdHNfX2xpc3QgbGl7Y2xlYXI6Ym90aH0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzLmlzLWdyaWR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO3BhZGRpbmc6MH0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzLmlzLWdyaWQgbGl7bWFyZ2luOjAgMS4yNWVtIDEuMjVlbSAwO3dpZHRoOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6NjAwcHgpey53cC1ibG9jay1sYXRlc3QtcG9zdHMuY29sdW1ucy0yIGxpe3dpZHRoOmNhbGMoNTAlIC0gLjYyNWVtKX0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzLmNvbHVtbnMtMiBsaTpudGgtY2hpbGQoMm4pe21hcmdpbi1yaWdodDowfS53cC1ibG9jay1sYXRlc3QtcG9zdHMuY29sdW1ucy0zIGxpe3dpZHRoOmNhbGMoMzMuMzMzMzMlIC0gLjgzMzMzZW0pfS53cC1ibG9jay1sYXRlc3QtcG9zdHMuY29sdW1ucy0zIGxpOm50aC1jaGlsZCgzbil7bWFyZ2luLXJpZ2h0OjB9LndwLWJsb2NrLWxhdGVzdC1wb3N0cy5jb2x1bW5zLTQgbGl7d2lkdGg6Y2FsYygyNSUgLSAuOTM3NWVtKX0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzLmNvbHVtbnMtNCBsaTpudGgtY2hpbGQoNG4pe21hcmdpbi1yaWdodDowfS53cC1ibG9jay1sYXRlc3QtcG9zdHMuY29sdW1ucy01IGxpe3dpZHRoOmNhbGMoMjAlIC0gMWVtKX0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzLmNvbHVtbnMtNSBsaTpudGgtY2hpbGQoNW4pe21hcmdpbi1yaWdodDowfS53cC1ibG9jay1sYXRlc3QtcG9zdHMuY29sdW1ucy02IGxpe3dpZHRoOmNhbGMoMTYuNjY2NjclIC0gMS4wNDE2N2VtKX0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzLmNvbHVtbnMtNiBsaTpudGgtY2hpbGQoNm4pe21hcmdpbi1yaWdodDowfX0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzX19wb3N0LWF1dGhvciwud3AtYmxvY2stbGF0ZXN0LXBvc3RzX19wb3N0LWRhdGV7ZGlzcGxheTpibG9jaztmb250LXNpemU6LjgxMjVlbX0ud3AtYmxvY2stbGF0ZXN0LXBvc3RzX19wb3N0LWV4Y2VycHR7bWFyZ2luLXRvcDouNWVtO21hcmdpbi1ib3R0b206MWVtfS53cC1ibG9jay1sYXRlc3QtcG9zdHNfX2ZlYXR1cmVkLWltYWdlIGF7ZGlzcGxheTppbmxpbmUtYmxvY2t9LndwLWJsb2NrLWxhdGVzdC1wb3N0c19fZmVhdHVyZWQtaW1hZ2UgaW1ne2hlaWdodDphdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOjEwMCV9LndwLWJsb2NrLWxhdGVzdC1wb3N0c19fZmVhdHVyZWQtaW1hZ2UuYWxpZ25sZWZ0e21hcmdpbi1yaWdodDoxZW19LndwLWJsb2NrLWxhdGVzdC1wb3N0c19fZmVhdHVyZWQtaW1hZ2UuYWxpZ25yaWdodHttYXJnaW4tbGVmdDoxZW19LndwLWJsb2NrLWxhdGVzdC1wb3N0c19fZmVhdHVyZWQtaW1hZ2UuYWxpZ25jZW50ZXJ7bWFyZ2luLWJvdHRvbToxZW07dGV4dC1hbGlnbjpjZW50ZXJ9LmJsb2NrLWVkaXRvci1pbWFnZS1hbGlnbm1lbnQtY29udHJvbF9fcm93IC5jb21wb25lbnRzLWJhc2UtY29udHJvbF9fZmllbGR7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcn0uYmxvY2stZWRpdG9yLWltYWdlLWFsaWdubWVudC1jb250cm9sX19yb3cgLmNvbXBvbmVudHMtYmFzZS1jb250cm9sX19maWVsZCAuY29tcG9uZW50cy1iYXNlLWNvbnRyb2xfX2xhYmVse21hcmdpbi1ib3R0b206MH1vbCx1bHtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9b2wuaGFzLWJhY2tncm91bmQsdWwuaGFzLWJhY2tncm91bmR7cGFkZGluZzoxLjI1ZW0gMi4zNzVlbX0ud3AtYmxvY2stbWVkaWEtdGV4dHsKICAvKiFydGw6YmVnaW46aWdub3JlKi9kaXJlY3Rpb246bHRyOwogIC8qIXJ0bDplbmQ6aWdub3JlKi9kaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjUwJSAxZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG99LndwLWJsb2NrLW1lZGlhLXRleHQuaGFzLW1lZGlhLW9uLXRoZS1yaWdodHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDUwJX0ud3AtYmxvY2stbWVkaWEtdGV4dC5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtdG9wIC53cC1ibG9jay1tZWRpYS10ZXh0X19jb250ZW50LC53cC1ibG9jay1tZWRpYS10ZXh0LmlzLXZlcnRpY2FsbHktYWxpZ25lZC10b3AgLndwLWJsb2NrLW1lZGlhLXRleHRfX21lZGlhe2FsaWduLXNlbGY6c3RhcnR9LndwLWJsb2NrLW1lZGlhLXRleHQuaXMtdmVydGljYWxseS1hbGlnbmVkLWNlbnRlciAud3AtYmxvY2stbWVkaWEtdGV4dF9fY29udGVudCwud3AtYmxvY2stbWVkaWEtdGV4dC5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtY2VudGVyIC53cC1ibG9jay1tZWRpYS10ZXh0X19tZWRpYSwud3AtYmxvY2stbWVkaWEtdGV4dCAud3AtYmxvY2stbWVkaWEtdGV4dF9fY29udGVudCwud3AtYmxvY2stbWVkaWEtdGV4dCAud3AtYmxvY2stbWVkaWEtdGV4dF9fbWVkaWF7YWxpZ24tc2VsZjpjZW50ZXJ9LndwLWJsb2NrLW1lZGlhLXRleHQuaXMtdmVydGljYWxseS1hbGlnbmVkLWJvdHRvbSAud3AtYmxvY2stbWVkaWEtdGV4dF9fY29udGVudCwud3AtYmxvY2stbWVkaWEtdGV4dC5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtYm90dG9tIC53cC1ibG9jay1tZWRpYS10ZXh0X19tZWRpYXthbGlnbi1zZWxmOmVuZH0ud3AtYmxvY2stbWVkaWEtdGV4dCAud3AtYmxvY2stbWVkaWEtdGV4dF9fbWVkaWF7CiAgLyohcnRsOmJlZ2luOmlnbm9yZSovZ3JpZC1jb2x1bW46MTtncmlkLXJvdzoxOwogIC8qIXJ0bDplbmQ6aWdub3JlKi9tYXJnaW46MH0ud3AtYmxvY2stbWVkaWEtdGV4dCAud3AtYmxvY2stbWVkaWEtdGV4dF9fY29udGVudHtkaXJlY3Rpb246bHRyOwogIC8qIXJ0bDpiZWdpbjppZ25vcmUqL2dyaWQtY29sdW1uOjI7Z3JpZC1yb3c6MTsKICAvKiFydGw6ZW5kOmlnbm9yZSovcGFkZGluZzowIDglO3dvcmQtYnJlYWs6YnJlYWstd29yZH0ud3AtYmxvY2stbWVkaWEtdGV4dC5oYXMtbWVkaWEtb24tdGhlLXJpZ2h0IC53cC1ibG9jay1tZWRpYS10ZXh0X19tZWRpYXsKICAvKiFydGw6YmVnaW46aWdub3JlKi9ncmlkLWNvbHVtbjoyO2dyaWQtcm93OjEKICAvKiFydGw6ZW5kOmlnbm9yZSovfS53cC1ibG9jay1tZWRpYS10ZXh0Lmhhcy1tZWRpYS1vbi10aGUtcmlnaHQgLndwLWJsb2NrLW1lZGlhLXRleHRfX2NvbnRlbnR7CiAgLyohcnRsOmJlZ2luOmlnbm9yZSovZ3JpZC1jb2x1bW46MTtncmlkLXJvdzoxCiAgLyohcnRsOmVuZDppZ25vcmUqL30ud3AtYmxvY2stbWVkaWEtdGV4dF9fbWVkaWEgaW1nLC53cC1ibG9jay1tZWRpYS10ZXh0X19tZWRpYSB2aWRlb3toZWlnaHQ6YXV0bzttYXgtd2lkdGg6dW5zZXQ7d2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LndwLWJsb2NrLW1lZGlhLXRleHQuaXMtaW1hZ2UtZmlsbCAud3AtYmxvY2stbWVkaWEtdGV4dF9fbWVkaWF7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDoyNTBweDtiYWNrZ3JvdW5kLXNpemU6Y292ZXJ9LndwLWJsb2NrLW1lZGlhLXRleHQuaXMtaW1hZ2UtZmlsbCAud3AtYmxvY2stbWVkaWEtdGV4dF9fbWVkaWE+YXtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMDAlfS53cC1ibG9jay1tZWRpYS10ZXh0LmlzLWltYWdlLWZpbGwgLndwLWJsb2NrLW1lZGlhLXRleHRfX21lZGlhIGltZ3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTtib3JkZXI6MH1AbWVkaWEgKG1heC13aWR0aDo2MDBweCl7LndwLWJsb2NrLW1lZGlhLXRleHQuaXMtc3RhY2tlZC1vbi1tb2JpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEwMCUhaW1wb3J0YW50fS53cC1ibG9jay1tZWRpYS10ZXh0LmlzLXN0YWNrZWQtb24tbW9iaWxlIC53cC1ibG9jay1tZWRpYS10ZXh0X19tZWRpYXtncmlkLWNvbHVtbjoxO2dyaWQtcm93OjF9LndwLWJsb2NrLW1lZGlhLXRleHQuaXMtc3RhY2tlZC1vbi1tb2JpbGUgLndwLWJsb2NrLW1lZGlhLXRleHRfX2NvbnRlbnR7Z3JpZC1jb2x1bW46MTtncmlkLXJvdzoyfX0ud3AtYmxvY2stbmF2aWdhdGlvbntwb3NpdGlvbjpyZWxhdGl2ZTstLW5hdmlnYXRpb24tbGF5b3V0LWp1c3RpZmljYXRpb24tc2V0dGluZzpmbGV4LXN0YXJ0Oy0tbmF2aWdhdGlvbi1sYXlvdXQtZGlyZWN0aW9uOnJvdzstLW5hdmlnYXRpb24tbGF5b3V0LXdyYXA6d3JhcDstLW5hdmlnYXRpb24tbGF5b3V0LWp1c3RpZnk6ZmxleC1zdGFydDstLW5hdmlnYXRpb24tbGF5b3V0LWFsaWduOmNlbnRlcn0ud3AtYmxvY2stbmF2aWdhdGlvbiB1bHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO21hcmdpbi1sZWZ0OjA7cGFkZGluZy1sZWZ0OjB9LndwLWJsb2NrLW5hdmlnYXRpb24gdWwsLndwLWJsb2NrLW5hdmlnYXRpb24gdWwgbGl7bGlzdC1zdHlsZTpub25lO3BhZGRpbmc6MH0ud3AtYmxvY2stbmF2aWdhdGlvbiAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmV9LndwLWJsb2NrLW5hdmlnYXRpb24gLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbSAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXI6ZW1wdHl7ZGlzcGxheTpub25lfS53cC1ibG9jay1uYXZpZ2F0aW9uIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW1fX2NvbnRlbnR7Y29sb3I6aW5oZXJpdDtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MH0ud3AtYmxvY2stbmF2aWdhdGlvbltzdHlsZSo9dGV4dC1kZWNvcmF0aW9uXSAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLC53cC1ibG9jay1uYXZpZ2F0aW9uW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciwud3AtYmxvY2stbmF2aWdhdGlvbltzdHlsZSo9dGV4dC1kZWNvcmF0aW9uXSBhLC53cC1ibG9jay1uYXZpZ2F0aW9uW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dIGE6YWN0aXZlLC53cC1ibG9jay1uYXZpZ2F0aW9uW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dIGE6Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9LndwLWJsb2NrLW5hdmlnYXRpb246bm90KFtzdHlsZSo9dGV4dC1kZWNvcmF0aW9uXSkgYSwud3AtYmxvY2stbmF2aWdhdGlvbjpub3QoW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dKSBhOmFjdGl2ZSwud3AtYmxvY2stbmF2aWdhdGlvbjpub3QoW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dKSBhOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lfS53cC1ibG9jay1uYXZpZ2F0aW9uIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWljb257YWxpZ24tc2VsZjpjZW50ZXI7bGluZS1oZWlnaHQ6MDtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtjb2xvcjpjdXJyZW50Q29sb3I7Ym9yZGVyOm5vbmU7bWFyZ2luLWxlZnQ6LjI1ZW07d2lkdGg6LjZlbTtoZWlnaHQ6LjZlbX0ud3AtYmxvY2stbmF2aWdhdGlvbiAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1pY29uIHN2Z3tkaXNwbGF5OmlubGluZS1ibG9jaztzdHJva2U6Y3VycmVudENvbG9yO3dpZHRoOmluaGVyaXQ7aGVpZ2h0OmluaGVyaXR9LndwLWJsb2NrLW5hdmlnYXRpb24uaXMtdmVydGljYWx7LS1uYXZpZ2F0aW9uLWxheW91dC1kaXJlY3Rpb246Y29sdW1uOy0tbmF2aWdhdGlvbi1sYXlvdXQtanVzdGlmeTppbml0aWFsOy0tbmF2aWdhdGlvbi1sYXlvdXQtYWxpZ246ZmxleC1zdGFydH0ud3AtYmxvY2stbmF2aWdhdGlvbi5uby13cmFwey0tbmF2aWdhdGlvbi1sYXlvdXQtd3JhcDpub3dyYXB9LndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLWNlbnRlcnstLW5hdmlnYXRpb24tbGF5b3V0LWp1c3RpZmljYXRpb24tc2V0dGluZzpjZW50ZXI7LS1uYXZpZ2F0aW9uLWxheW91dC1qdXN0aWZ5OmNlbnRlcn0ud3AtYmxvY2stbmF2aWdhdGlvbi5pdGVtcy1qdXN0aWZpZWQtY2VudGVyLmlzLXZlcnRpY2Fsey0tbmF2aWdhdGlvbi1sYXlvdXQtYWxpZ246Y2VudGVyfS53cC1ibG9jay1uYXZpZ2F0aW9uLml0ZW1zLWp1c3RpZmllZC1yaWdodHstLW5hdmlnYXRpb24tbGF5b3V0LWp1c3RpZmljYXRpb24tc2V0dGluZzpmbGV4LWVuZDstLW5hdmlnYXRpb24tbGF5b3V0LWp1c3RpZnk6ZmxleC1lbmR9LndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLXJpZ2h0LmlzLXZlcnRpY2Fsey0tbmF2aWdhdGlvbi1sYXlvdXQtYWxpZ246ZmxleC1lbmR9LndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLXNwYWNlLWJldHdlZW57LS1uYXZpZ2F0aW9uLWxheW91dC1qdXN0aWZpY2F0aW9uLXNldHRpbmc6c3BhY2UtYmV0d2VlbjstLW5hdmlnYXRpb24tbGF5b3V0LWp1c3RpZnk6c3BhY2UtYmV0d2Vlbn0ud3AtYmxvY2stbmF2aWdhdGlvbiAuaGFzLWNoaWxkIDp3aGVyZSgud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIpe2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtjb2xvcjppbmhlcml0O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOm5vcm1hbDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4xcyBsaW5lYXI7dmlzaWJpbGl0eTpoaWRkZW47d2lkdGg6MDtoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47bGVmdDotMXB4O3RvcDoxMDAlfS53cC1ibG9jay1uYXZpZ2F0aW9uIC5oYXMtY2hpbGQgOndoZXJlKC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcik+LndwLWJsb2NrLW5hdmlnYXRpb24taXRlbT4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtX19jb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MX0ud3AtYmxvY2stbmF2aWdhdGlvbiAuaGFzLWNoaWxkIDp3aGVyZSgud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIpPi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0+LndwLWJsb2NrLW5hdmlnYXRpb24taXRlbV9fY29udGVudCAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1pY29ue21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OmF1dG99LndwLWJsb2NrLW5hdmlnYXRpb24gLmhhcy1jaGlsZCA6d2hlcmUoLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyKSAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtX19jb250ZW50e21hcmdpbjowfUBtZWRpYSAobWluLXdpZHRoOjc4MnB4KXsud3AtYmxvY2stbmF2aWdhdGlvbiAuaGFzLWNoaWxkIDp3aGVyZSgud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIpIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcntsZWZ0OjEwMCU7dG9wOi0xcHh9LndwLWJsb2NrLW5hdmlnYXRpb24gLmhhcy1jaGlsZCA6d2hlcmUoLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyKSAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXI6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrO3dpZHRoOi41ZW07YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ud3AtYmxvY2stbmF2aWdhdGlvbiAuaGFzLWNoaWxkIDp3aGVyZSgud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIpIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWljb24gc3Zne3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKX19LndwLWJsb2NrLW5hdmlnYXRpb24gLmhhcy1jaGlsZDp3aGVyZSg6bm90KC5vcGVuLW9uLWNsaWNrKSk6aG92ZXI+LndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVye3Zpc2liaWxpdHk6dmlzaWJsZTtvdmVyZmxvdzp2aXNpYmxlO29wYWNpdHk6MTt3aWR0aDphdXRvO2hlaWdodDphdXRvO21pbi13aWR0aDoyMDBweH0ud3AtYmxvY2stbmF2aWdhdGlvbiAuaGFzLWNoaWxkOndoZXJlKDpub3QoLm9wZW4tb24tY2xpY2spOm5vdCgub3Blbi1vbi1ob3Zlci1jbGljaykpOmZvY3VzLXdpdGhpbj4ud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXJ7dmlzaWJpbGl0eTp2aXNpYmxlO292ZXJmbG93OnZpc2libGU7b3BhY2l0eToxO3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87bWluLXdpZHRoOjIwMHB4fS53cC1ibG9jay1uYXZpZ2F0aW9uIC5oYXMtY2hpbGQgLndwLWJsb2NrLW5hdmlnYXRpb24tc3VibWVudV9fdG9nZ2xlW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0rLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVye3Zpc2liaWxpdHk6dmlzaWJsZTtvdmVyZmxvdzp2aXNpYmxlO29wYWNpdHk6MTt3aWR0aDphdXRvO2hlaWdodDphdXRvO21pbi13aWR0aDoyMDBweH0ud3AtYmxvY2stbmF2aWdhdGlvbi5oYXMtYmFja2dyb3VuZCAuaGFzLWNoaWxkIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcntsZWZ0OjA7dG9wOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6NzgycHgpey53cC1ibG9jay1uYXZpZ2F0aW9uLmhhcy1iYWNrZ3JvdW5kIC5oYXMtY2hpbGQgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcntsZWZ0OjEwMCU7dG9wOjB9fS53cC1ibG9jay1uYXZpZ2F0aW9uLXN1Ym1lbnV7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4fS53cC1ibG9jay1uYXZpZ2F0aW9uLXN1Ym1lbnUgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtaWNvbiBzdmd7c3Ryb2tlOmN1cnJlbnRDb2xvcn1idXR0b24ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtX19jb250ZW50e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Y29sb3I6Y3VycmVudENvbG9yO2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtZmFtaWx5OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDt0ZXh0LWFsaWduOmxlZnR9LndwLWJsb2NrLW5hdmlnYXRpb24tc3VibWVudV9fdG9nZ2xle2N1cnNvcjpwb2ludGVyfS53cC1ibG9jay1uYXZpZ2F0aW9uLC53cC1ibG9jay1uYXZpZ2F0aW9uIC53cC1ibG9jay1wYWdlLWxpc3QsLndwLWJsb2NrLW5hdmlnYXRpb25fX2NvbnRhaW5lciwud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY29udGVudHtnYXA6dmFyKC0td3AtLXN0eWxlLS1ibG9jay1nYXAsMmVtKX0ud3AtYmxvY2stbmF2aWdhdGlvbjp3aGVyZSguaGFzLWJhY2tncm91bmQpLC53cC1ibG9jay1uYXZpZ2F0aW9uOndoZXJlKC5oYXMtYmFja2dyb3VuZCkgLndwLWJsb2NrLW5hdmlnYXRpb24gLndwLWJsb2NrLXBhZ2UtbGlzdCwud3AtYmxvY2stbmF2aWdhdGlvbjp3aGVyZSguaGFzLWJhY2tncm91bmQpIC53cC1ibG9jay1uYXZpZ2F0aW9uX19jb250YWluZXJ7Z2FwOnZhcigtLXdwLS1zdHlsZS0tYmxvY2stZ2FwLC41ZW0pfS53cC1ibG9jay1uYXZpZ2F0aW9uOndoZXJlKC5oYXMtYmFja2dyb3VuZCkgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbV9fY29udGVudCwud3AtYmxvY2stbmF2aWdhdGlvbiA6d2hlcmUoLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyKSAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtX19jb250ZW50e3BhZGRpbmc6LjVlbSAxZW19LndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLXJpZ2h0IC53cC1ibG9jay1uYXZpZ2F0aW9uX19jb250YWluZXIgLmhhcy1jaGlsZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIsLndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLXJpZ2h0IC53cC1ibG9jay1wYWdlLWxpc3Q+Lmhhcy1jaGlsZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIsLndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLXNwYWNlLWJldHdlZW4gLndwLWJsb2NrLXBhZ2UtbGlzdD4uaGFzLWNoaWxkOmxhc3QtY2hpbGQgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyLC53cC1ibG9jay1uYXZpZ2F0aW9uLml0ZW1zLWp1c3RpZmllZC1zcGFjZS1iZXR3ZWVuPi53cC1ibG9jay1uYXZpZ2F0aW9uX19jb250YWluZXI+Lmhhcy1jaGlsZDpsYXN0LWNoaWxkIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcntsZWZ0OmF1dG87cmlnaHQ6MH0ud3AtYmxvY2stbmF2aWdhdGlvbi5pdGVtcy1qdXN0aWZpZWQtcmlnaHQgLndwLWJsb2NrLW5hdmlnYXRpb25fX2NvbnRhaW5lciAuaGFzLWNoaWxkIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIsLndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLXJpZ2h0IC53cC1ibG9jay1wYWdlLWxpc3Q+Lmhhcy1jaGlsZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyLC53cC1ibG9jay1uYXZpZ2F0aW9uLml0ZW1zLWp1c3RpZmllZC1zcGFjZS1iZXR3ZWVuIC53cC1ibG9jay1wYWdlLWxpc3Q+Lmhhcy1jaGlsZDpsYXN0LWNoaWxkIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIsLndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLXNwYWNlLWJldHdlZW4+LndwLWJsb2NrLW5hdmlnYXRpb25fX2NvbnRhaW5lcj4uaGFzLWNoaWxkOmxhc3QtY2hpbGQgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcntsZWZ0Oi0xcHg7cmlnaHQ6LTFweH1AbWVkaWEgKG1pbi13aWR0aDo3ODJweCl7LndwLWJsb2NrLW5hdmlnYXRpb24uaXRlbXMtanVzdGlmaWVkLXJpZ2h0IC53cC1ibG9jay1uYXZpZ2F0aW9uX19jb250YWluZXIgLmhhcy1jaGlsZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyLC53cC1ibG9jay1uYXZpZ2F0aW9uLml0ZW1zLWp1c3RpZmllZC1yaWdodCAud3AtYmxvY2stcGFnZS1saXN0Pi5oYXMtY2hpbGQgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciwud3AtYmxvY2stbmF2aWdhdGlvbi5pdGVtcy1qdXN0aWZpZWQtc3BhY2UtYmV0d2VlbiAud3AtYmxvY2stcGFnZS1saXN0Pi5oYXMtY2hpbGQ6bGFzdC1jaGlsZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyLC53cC1ibG9jay1uYXZpZ2F0aW9uLml0ZW1zLWp1c3RpZmllZC1zcGFjZS1iZXR3ZWVuPi53cC1ibG9jay1uYXZpZ2F0aW9uX19jb250YWluZXI+Lmhhcy1jaGlsZDpsYXN0LWNoaWxkIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXJ7bGVmdDphdXRvO3JpZ2h0OjEwMCV9fS53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdCguaGFzLWJhY2tncm91bmQpIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzAwMDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KX0ud3AtYmxvY2stbmF2aWdhdGlvbl9fY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6dmFyKC0tbmF2aWdhdGlvbi1sYXlvdXQtd3JhcCx3cmFwKTtmbGV4LWRpcmVjdGlvbjp2YXIoLS1uYXZpZ2F0aW9uLWxheW91dC1kaXJlY3Rpb24saW5pdGlhbCk7anVzdGlmeS1jb250ZW50OnZhcigtLW5hdmlnYXRpb24tbGF5b3V0LWp1c3RpZnksaW5pdGlhbCk7YWxpZ24taXRlbXM6dmFyKC0tbmF2aWdhdGlvbi1sYXlvdXQtYWxpZ24saW5pdGlhbCk7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmctbGVmdDowfS53cC1ibG9jay1uYXZpZ2F0aW9uX19jb250YWluZXIgLmlzLXJlc3BvbnNpdmV7ZGlzcGxheTpub25lfS53cC1ibG9jay1uYXZpZ2F0aW9uX19jb250YWluZXI6b25seS1jaGlsZCwud3AtYmxvY2stcGFnZS1saXN0Om9ubHktY2hpbGR7ZmxleC1ncm93OjF9LndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVye2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MH0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXIgLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLWNvbnRlbnR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp2YXIoLS1uYXZpZ2F0aW9uLWxheW91dC13cmFwLHdyYXApO2ZsZXgtZGlyZWN0aW9uOnZhcigtLW5hdmlnYXRpb24tbGF5b3V0LWRpcmVjdGlvbixpbml0aWFsKTtqdXN0aWZ5LWNvbnRlbnQ6dmFyKC0tbmF2aWdhdGlvbi1sYXlvdXQtanVzdGlmeSxpbml0aWFsKTthbGlnbi1pdGVtczp2YXIoLS1uYXZpZ2F0aW9uLWxheW91dC1hbGlnbixpbml0aWFsKX0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXI6bm90KC5pcy1tZW51LW9wZW4uaXMtbWVudS1vcGVuKXtjb2xvcjppbmhlcml0IWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQhaW1wb3J0YW50fS53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7cGFkZGluZzoyZW07b3ZlcmZsb3c6YXV0bzt6LWluZGV4OjEwMDAwMH0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXIuaXMtbWVudS1vcGVuIC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci1jb250ZW50e3BhZGRpbmctdG9wOmNhbGMoMmVtICsgMjRweCk7b3ZlcmZsb3c6dmlzaWJsZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtd3JhcDpub3dyYXA7YWxpZ24taXRlbXM6dmFyKC0tbmF2aWdhdGlvbi1sYXlvdXQtanVzdGlmaWNhdGlvbi1zZXR0aW5nLGluaGVyaXQpfS53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4gLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLWNvbnRlbnQsLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY29udGVudCAud3AtYmxvY2stbmF2aWdhdGlvbl9fY29udGFpbmVyLC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4gLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLWNvbnRlbnQgLndwLWJsb2NrLXBhZ2UtbGlzdHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXIuaXMtbWVudS1vcGVuIC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci1jb250ZW50IC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWljb257ZGlzcGxheTpub25lfS53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4gLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLWNvbnRlbnQgLmhhcy1jaGlsZCAuc3VibWVudS1jb250YWluZXIsLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY29udGVudCAuaGFzLWNoaWxkIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcntvcGFjaXR5OjE7dmlzaWJpbGl0eTp2aXNpYmxlO2hlaWdodDphdXRvO3dpZHRoOmF1dG87b3ZlcmZsb3c6aW5pdGlhbDttaW4td2lkdGg6MjAwcHg7cG9zaXRpb246c3RhdGljO2JvcmRlcjpub25lO3BhZGRpbmctbGVmdDoyZW07cGFkZGluZy1yaWdodDoyZW19LndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY29udGVudCAud3AtYmxvY2stbmF2aWdhdGlvbl9fY29udGFpbmVyLC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4gLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLWNvbnRlbnQgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVye2dhcDp2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwyZW0pfS53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4gLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLWNvbnRlbnQgLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVye3BhZGRpbmctdG9wOnZhcigtLXdwLS1zdHlsZS0tYmxvY2stZ2FwLDJlbSl9LndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY29udGVudCAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtX19jb250ZW50e3BhZGRpbmc6MH0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXIuaXMtbWVudS1vcGVuIC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci1jb250ZW50IC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0sLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY29udGVudCAud3AtYmxvY2stbmF2aWdhdGlvbl9fY29udGFpbmVyLC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4gLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLWNvbnRlbnQgLndwLWJsb2NrLXBhZ2UtbGlzdHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOnZhcigtLW5hdmlnYXRpb24tbGF5b3V0LWp1c3RpZmljYXRpb24tc2V0dGluZyxpbml0aWFsKX0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXIuaXMtbWVudS1vcGVuIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0sLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciwud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXIuaXMtbWVudS1vcGVuIC53cC1ibG9jay1wYWdlLWxpc3R7Y29sb3I6aW5oZXJpdCFpbXBvcnRhbnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnR9LndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiAud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXJ7cmlnaHQ6YXV0bztsZWZ0OmF1dG99QG1lZGlhIChtaW4td2lkdGg6NjAwcHgpey53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lcjpub3QoLmhpZGRlbi1ieS1kZWZhdWx0KTpub3QoLmlzLW1lbnUtb3Blbil7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6YXV0bztiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9LndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyOm5vdCguaGlkZGVuLWJ5LWRlZmF1bHQpOm5vdCguaXMtbWVudS1vcGVuKSAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY2xvc2V7ZGlzcGxheTpub25lfS53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4gLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVyLndwLWJsb2NrLW5hdmlnYXRpb25fX3N1Ym1lbnUtY29udGFpbmVye2xlZnQ6MH19LndwLWJsb2NrLW5hdmlnYXRpb246bm90KC5oYXMtYmFja2dyb3VuZCkgLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzAwMH0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY2xvc2UsLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLW9wZW57dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjpwb2ludGVyO2NvbG9yOmN1cnJlbnRDb2xvcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MH0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY2xvc2Ugc3ZnLC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci1vcGVuIHN2Z3tmaWxsOmN1cnJlbnRDb2xvcjtwb2ludGVyLWV2ZW50czpub25lO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjRweDtoZWlnaHQ6MjRweH0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3BlbntkaXNwbGF5OmZsZXh9QG1lZGlhIChtaW4td2lkdGg6NjAwcHgpey53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci1vcGVuOm5vdCguYWx3YXlzLXNob3duKXtkaXNwbGF5Om5vbmV9fS53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci1jbG9zZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO3otaW5kZXg6Mn0ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jbG9zZXt3aWR0aDoxMDAlfS5pcy1tZW51LW9wZW4gLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY2xvc2UsLmlzLW1lbnUtb3BlbiAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY29udGVudCwuaXMtbWVudS1vcGVuIC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWRpYWxvZ3tib3gtc2l6aW5nOmJvcmRlci1ib3h9LndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtZGlhbG9ne3Bvc2l0aW9uOnJlbGF0aXZlfWh0bWwuaGFzLW1vZGFsLW9wZW57b3ZlcmZsb3c6aGlkZGVufS53cC1ibG9jay1uYXZpZ2F0aW9uIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW1fX2xhYmVse3dvcmQtYnJlYWs6bm9ybWFsO292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0ud3AtYmxvY2stbmF2aWdhdGlvbiAud3AtYmxvY2staG9tZS1saW5rX19jb250ZW50e2NvbG9yOmluaGVyaXQ7ZGlzcGxheTpibG9ja30ud3AtYmxvY2stbmF2aWdhdGlvbltzdHlsZSo9dGV4dC1kZWNvcmF0aW9uXSAud3AtYmxvY2staG9tZS1saW5rLC53cC1ibG9jay1uYXZpZ2F0aW9uW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dIC53cC1ibG9jay1ob21lLWxpbmtfX2NvbnRlbnQsLndwLWJsb2NrLW5hdmlnYXRpb25bc3R5bGUqPXRleHQtZGVjb3JhdGlvbl0gLndwLWJsb2NrLWhvbWUtbGlua19fY29udGVudDphY3RpdmUsLndwLWJsb2NrLW5hdmlnYXRpb25bc3R5bGUqPXRleHQtZGVjb3JhdGlvbl0gLndwLWJsb2NrLWhvbWUtbGlua19fY29udGVudDpmb2N1c3t0ZXh0LWRlY29yYXRpb246aW5oZXJpdH0ud3AtYmxvY2stbmF2aWdhdGlvbjpub3QoW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dKSAud3AtYmxvY2staG9tZS1saW5rX19jb250ZW50LC53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdChbc3R5bGUqPXRleHQtZGVjb3JhdGlvbl0pIC53cC1ibG9jay1ob21lLWxpbmtfX2NvbnRlbnQ6YWN0aXZlLC53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdChbc3R5bGUqPXRleHQtZGVjb3JhdGlvbl0pIC53cC1ibG9jay1ob21lLWxpbmtfX2NvbnRlbnQ6Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LndwLWJsb2NrLW5hdmlnYXRpb246bm90KC5oYXMtYmFja2dyb3VuZCkgLndwLWJsb2NrLW5hdmlnYXRpb25fX2NvbnRhaW5lciAud3AtYmxvY2staG9tZS1saW5rX19jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMwMDA7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSl9LndwLWJsb2NrLW5hdmlnYXRpb246bm90KC5oYXMtYmFja2dyb3VuZCkgLndwLWJsb2NrLW5hdmlnYXRpb25fX2NvbnRhaW5lciAud3AtYmxvY2staG9tZS1saW5rX19jb250YWluZXIgLndwLWJsb2NrLWhvbWUtbGlua19fY29udGFpbmVye3RvcDotMXB4fS53cC1ibG9jay1uYXZpZ2F0aW9uIC53cC1ibG9jay1wYWdlLWxpc3R7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnZhcigtLW5hdmlnYXRpb24tbGF5b3V0LWRpcmVjdGlvbixpbml0aWFsKTtqdXN0aWZ5LWNvbnRlbnQ6dmFyKC0tbmF2aWdhdGlvbi1sYXlvdXQtanVzdGlmeSxpbml0aWFsKTthbGlnbi1pdGVtczp2YXIoLS1uYXZpZ2F0aW9uLWxheW91dC1hbGlnbixpbml0aWFsKTtmbGV4LXdyYXA6dmFyKC0tbmF2aWdhdGlvbi1sYXlvdXQtd3JhcCx3cmFwKTtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9LndwLWJsb2NrLW5hdmlnYXRpb24gLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9LmlzLXNtYWxsLXRleHR7Zm9udC1zaXplOi44NzVlbX0uaXMtcmVndWxhci10ZXh0e2ZvbnQtc2l6ZToxZW19LmlzLWxhcmdlLXRleHR7Zm9udC1zaXplOjIuMjVlbX0uaXMtbGFyZ2VyLXRleHR7Zm9udC1zaXplOjNlbX0uaGFzLWRyb3AtY2FwOm5vdCg6Zm9jdXMpOmZpcnN0LWxldHRlcntmbG9hdDpsZWZ0O2ZvbnQtc2l6ZTo4LjRlbTtsaW5lLWhlaWdodDouNjg7Zm9udC13ZWlnaHQ6MTAwO21hcmdpbjouMDVlbSAuMWVtIDAgMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Zm9udC1zdHlsZTpub3JtYWx9cHtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9cC5oYXMtZHJvcC1jYXAuaGFzLWJhY2tncm91bmR7b3ZlcmZsb3c6aGlkZGVufXAuaGFzLWJhY2tncm91bmR7cGFkZGluZzoxLjI1ZW0gMi4zNzVlbX06d2hlcmUocC5oYXMtdGV4dC1jb2xvcjpub3QoLmhhcy1saW5rLWNvbG9yKSkgYXtjb2xvcjppbmhlcml0fS53cC1ibG9jay1wb3N0LWF1dGhvcntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXB9LndwLWJsb2NrLXBvc3QtYXV0aG9yX19ieWxpbmV7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZTouNWVtfS53cC1ibG9jay1wb3N0LWF1dGhvcl9fYXZhdGFye21hcmdpbi1yaWdodDoxZW19LndwLWJsb2NrLXBvc3QtYXV0aG9yX19iaW97bWFyZ2luLWJvdHRvbTouN2VtO2ZvbnQtc2l6ZTouN2VtfS53cC1ibG9jay1wb3N0LWF1dGhvcl9fY29udGVudHtmbGV4LWdyb3c6MTtmbGV4LWJhc2lzOjB9LndwLWJsb2NrLXBvc3QtYXV0aG9yX19uYW1le21hcmdpbjowfS53cC1ibG9jay1wb3N0LWNvbW1lbnRzPmgzOmZpcnN0LW9mLXR5cGV7bWFyZ2luLXRvcDowfS53cC1ibG9jay1wb3N0LWNvbW1lbnRzIC5jb21tZW50bGlzdHtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfS53cC1ibG9jay1wb3N0LWNvbW1lbnRzIC5jb21tZW50bGlzdCAuY29tbWVudHttaW4taGVpZ2h0OjIuMjVlbTtwYWRkaW5nLWxlZnQ6My4yNWVtfS53cC1ibG9jay1wb3N0LWNvbW1lbnRzIC5jb21tZW50bGlzdCAuY29tbWVudCBwe2ZvbnQtc2l6ZTouODc1ZW07bGluZS1oZWlnaHQ6MS44O21hcmdpbjouMzZlbSAwIDEuNGVtfS53cC1ibG9jay1wb3N0LWNvbW1lbnRzIC5jb21tZW50bGlzdCAuY2hpbGRyZW57bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH0ud3AtYmxvY2stcG9zdC1jb21tZW50cyAuY29tbWVudC1hdXRob3J7bGluZS1oZWlnaHQ6MS41fS53cC1ibG9jay1wb3N0LWNvbW1lbnRzIC5jb21tZW50LWF1dGhvciAuYXZhdGFye2JvcmRlci1yYWRpdXM6MS41ZW07ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2hlaWdodDoyLjVlbTttYXJnaW4tcmlnaHQ6Ljc1ZW07d2lkdGg6Mi41ZW19LndwLWJsb2NrLXBvc3QtY29tbWVudHMgLmNvbW1lbnQtYXV0aG9yIGNpdGV7Zm9udC1zdHlsZTpub3JtYWx9LndwLWJsb2NrLXBvc3QtY29tbWVudHMgLmNvbW1lbnQtbWV0YXtsaW5lLWhlaWdodDoxLjU7bWFyZ2luLWxlZnQ6LTMuMjVlbX0ud3AtYmxvY2stcG9zdC1jb21tZW50cyAuY29tbWVudC1ib2R5IC5jb21tZW50bWV0YWRhdGF7Zm9udC1zaXplOi43NWVtfS53cC1ibG9jay1wb3N0LWNvbW1lbnRzIC5jb21tZW50LWZvcm0tYXV0aG9yIGxhYmVsLC53cC1ibG9jay1wb3N0LWNvbW1lbnRzIC5jb21tZW50LWZvcm0tY29tbWVudCBsYWJlbCwud3AtYmxvY2stcG9zdC1jb21tZW50cyAuY29tbWVudC1mb3JtLWVtYWlsIGxhYmVsLC53cC1ibG9jay1wb3N0LWNvbW1lbnRzIC5jb21tZW50LWZvcm0tdXJsIGxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTouMjVlbX0ud3AtYmxvY2stcG9zdC1jb21tZW50cyAuY29tbWVudC1mb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9Y2hlY2tib3hdKSwud3AtYmxvY2stcG9zdC1jb21tZW50cyAuY29tbWVudC1mb3JtIHRleHRhcmVhe2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCV9LndwLWJsb2NrLXBvc3QtY29tbWVudHMgLmNvbW1lbnQtZm9ybS1jb29raWVzLWNvbnNlbnR7ZGlzcGxheTpmbGV4O2dhcDouMjVlbX0ud3AtYmxvY2stcG9zdC1jb21tZW50cyAuY29tbWVudC1mb3JtLWNvb2tpZXMtY29uc2VudCAjd3AtY29tbWVudC1jb29raWVzLWNvbnNlbnR7bWFyZ2luLXRvcDouMzVlbX0ud3AtYmxvY2stcG9zdC1jb21tZW50cyAucmVwbHl7Zm9udC1zaXplOi43NWVtO21hcmdpbi1ib3R0b206MS40ZW19LndwLWJsb2NrLXBvc3QtY29tbWVudHMgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLC53cC1ibG9jay1wb3N0LWNvbW1lbnRzIHRleHRhcmVhe2JvcmRlcjoxcHggc29saWQgIzk0OTQ5NDtmb250LXNpemU6MWVtO2ZvbnQtZmFtaWx5OmluaGVyaXR9LndwLWJsb2NrLXBvc3QtY29tbWVudHMgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT1jaGVja2JveF0pLC53cC1ibG9jay1wb3N0LWNvbW1lbnRzIHRleHRhcmVhe3BhZGRpbmc6Y2FsYyguNjY3ZW0gKyAycHgpfS53cC1ibG9jay1wb3N0LWNvbW1lbnRzIGlucHV0W3R5cGU9c3VibWl0XXtib3JkZXI6bm9uZX0ud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtW3N0eWxlKj1mb250LXdlaWdodF0gOndoZXJlKC5jb21tZW50LXJlcGx5LXRpdGxlKXtmb250LXdlaWdodDppbmhlcml0fS53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm1bc3R5bGUqPWZvbnQtZmFtaWx5XSA6d2hlcmUoLmNvbW1lbnQtcmVwbHktdGl0bGUpe2ZvbnQtZmFtaWx5OmluaGVyaXR9LndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybVtjbGFzcyo9LWZvbnQtc2l6ZV0gOndoZXJlKC5jb21tZW50LXJlcGx5LXRpdGxlKSwud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtW3N0eWxlKj1mb250LXNpemVdIDp3aGVyZSguY29tbWVudC1yZXBseS10aXRsZSl7Zm9udC1zaXplOmluaGVyaXR9LndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybVtzdHlsZSo9bGluZS1oZWlnaHRdIDp3aGVyZSguY29tbWVudC1yZXBseS10aXRsZSl7bGluZS1oZWlnaHQ6aW5oZXJpdH0ud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtW3N0eWxlKj1mb250LXN0eWxlXSA6d2hlcmUoLmNvbW1lbnQtcmVwbHktdGl0bGUpe2ZvbnQtc3R5bGU6aW5oZXJpdH0ud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtW3N0eWxlKj1sZXR0ZXItc3BhY2luZ10gOndoZXJlKC5jb21tZW50LXJlcGx5LXRpdGxlKXtsZXR0ZXItc3BhY2luZzppbmhlcml0fS53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gaW5wdXRbdHlwZT1zdWJtaXRde2JvcmRlcjpub25lO2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmNlbnRlcjtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSksLndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSB0ZXh0YXJlYXtib3JkZXI6MXB4IHNvbGlkICM5NDk0OTQ7Zm9udC1zaXplOjFlbTtmb250LWZhbWlseTppbmhlcml0fS53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT1jaGVja2JveF0pLC53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gdGV4dGFyZWF7cGFkZGluZzpjYWxjKC42NjdlbSArIDJweCl9LndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSAuY29tbWVudC1mb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9Y2hlY2tib3hdKSwud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtIC5jb21tZW50LWZvcm0gdGV4dGFyZWF7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJX0ud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtIC5jb21tZW50LWZvcm0tYXV0aG9yIGxhYmVsLC53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gLmNvbW1lbnQtZm9ybS1lbWFpbCBsYWJlbCwud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtIC5jb21tZW50LWZvcm0tdXJsIGxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTouMjVlbX0ud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtIC5jb21tZW50LWZvcm0tY29va2llcy1jb25zZW50e2Rpc3BsYXk6ZmxleDtnYXA6LjI1ZW19LndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSAuY29tbWVudC1mb3JtLWNvb2tpZXMtY29uc2VudCAjd3AtY29tbWVudC1jb29raWVzLWNvbnNlbnR7bWFyZ2luLXRvcDouMzVlbX0ud3AtYmxvY2stcG9zdC1leGNlcnB0X19tb3JlLWxpbmt7ZGlzcGxheTppbmxpbmUtYmxvY2t9LndwLWJsb2NrLXBvc3QtdGVybXNfX3NlcGFyYXRvcnt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0ud3AtYmxvY2stcG9zdC10aXRsZSBhe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS53cC1ibG9jay1wcmVmb3JtYXR0ZWR7d2hpdGUtc3BhY2U6cHJlLXdyYXB9LndwLWJsb2NrLXByZWZvcm1hdHRlZC5oYXMtYmFja2dyb3VuZHtwYWRkaW5nOjEuMjVlbSAyLjM3NWVtfS53cC1ibG9jay1wdWxscXVvdGV7bWFyZ2luOjAgMCAxZW07cGFkZGluZzozZW0gMDt0ZXh0LWFsaWduOmNlbnRlcjtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LndwLWJsb2NrLXB1bGxxdW90ZSBibG9ja3F1b3RlLC53cC1ibG9jay1wdWxscXVvdGUgY2l0ZSwud3AtYmxvY2stcHVsbHF1b3RlIHB7Y29sb3I6aW5oZXJpdH0ud3AtYmxvY2stcHVsbHF1b3RlLmFsaWdubGVmdCwud3AtYmxvY2stcHVsbHF1b3RlLmFsaWducmlnaHQsLndwLWJsb2NrLXB1bGxxdW90ZS5oYXMtdGV4dC1hbGlnbi1sZWZ0LC53cC1ibG9jay1wdWxscXVvdGUuaGFzLXRleHQtYWxpZ24tcmlnaHR7bWF4LXdpZHRoOjQyMHB4fS53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0IHAsLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbnJpZ2h0IHAsLndwLWJsb2NrLXB1bGxxdW90ZS5oYXMtdGV4dC1hbGlnbi1sZWZ0IHAsLndwLWJsb2NrLXB1bGxxdW90ZS5oYXMtdGV4dC1hbGlnbi1yaWdodCBwe2ZvbnQtc2l6ZToxLjI1ZW19LndwLWJsb2NrLXB1bGxxdW90ZSBwe2ZvbnQtc2l6ZToxLjc1ZW07bGluZS1oZWlnaHQ6MS42fS53cC1ibG9jay1wdWxscXVvdGUgY2l0ZSwud3AtYmxvY2stcHVsbHF1b3RlIGZvb3Rlcntwb3NpdGlvbjpyZWxhdGl2ZX0ud3AtYmxvY2stcHVsbHF1b3RlIC5oYXMtdGV4dC1jb2xvciBhe2NvbG9yOmluaGVyaXR9LndwLWJsb2NrLXB1bGxxdW90ZS5oYXMtdGV4dC1hbGlnbi1sZWZ0IGJsb2NrcXVvdGV7dGV4dC1hbGlnbjpsZWZ0fS53cC1ibG9jay1wdWxscXVvdGUuaGFzLXRleHQtYWxpZ24tcmlnaHQgYmxvY2txdW90ZXt0ZXh0LWFsaWduOnJpZ2h0fS53cC1ibG9jay1wdWxscXVvdGU6bm90KC5pcy1zdHlsZS1zb2xpZC1jb2xvcil7YmFja2dyb3VuZDpub25lfS53cC1ibG9jay1wdWxscXVvdGUuaXMtc3R5bGUtc29saWQtY29sb3J7Ym9yZGVyOm5vbmV9LndwLWJsb2NrLXB1bGxxdW90ZS5pcy1zdHlsZS1zb2xpZC1jb2xvciBibG9ja3F1b3Rle21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87bWF4LXdpZHRoOjYwJX0ud3AtYmxvY2stcHVsbHF1b3RlLmlzLXN0eWxlLXNvbGlkLWNvbG9yIGJsb2NrcXVvdGUgcHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToyZW19LndwLWJsb2NrLXB1bGxxdW90ZS5pcy1zdHlsZS1zb2xpZC1jb2xvciBibG9ja3F1b3RlIGNpdGV7dGV4dC10cmFuc2Zvcm06bm9uZTtmb250LXN0eWxlOm5vcm1hbH0ud3AtYmxvY2stcHVsbHF1b3RlIGNpdGV7Y29sb3I6aW5oZXJpdH0ud3AtYmxvY2stcG9zdC10ZW1wbGF0ZSwud3AtYmxvY2stcXVlcnktbG9vcHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO21heC13aWR0aDoxMDAlO2xpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nOjB9LndwLWJsb2NrLXBvc3QtdGVtcGxhdGUud3AtYmxvY2stcG9zdC10ZW1wbGF0ZSwud3AtYmxvY2stcXVlcnktbG9vcC53cC1ibG9jay1wb3N0LXRlbXBsYXRle2JhY2tncm91bmQ6bm9uZX0ud3AtYmxvY2stcG9zdC10ZW1wbGF0ZS5pcy1mbGV4LWNvbnRhaW5lciwud3AtYmxvY2stcXVlcnktbG9vcC5pcy1mbGV4LWNvbnRhaW5lcntmbGV4LWRpcmVjdGlvbjpyb3c7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxLjI1ZW19LndwLWJsb2NrLXBvc3QtdGVtcGxhdGUuaXMtZmxleC1jb250YWluZXIgbGksLndwLWJsb2NrLXF1ZXJ5LWxvb3AuaXMtZmxleC1jb250YWluZXIgbGl7bWFyZ2luOjA7d2lkdGg6MTAwJX1AbWVkaWEgKG1pbi13aWR0aDo2MDBweCl7LndwLWJsb2NrLXBvc3QtdGVtcGxhdGUuaXMtZmxleC1jb250YWluZXIuaXMtZmxleC1jb250YWluZXIuY29sdW1ucy0yPmxpLC53cC1ibG9jay1xdWVyeS1sb29wLmlzLWZsZXgtY29udGFpbmVyLmlzLWZsZXgtY29udGFpbmVyLmNvbHVtbnMtMj5saXt3aWR0aDpjYWxjKDUwJSAtIC42MjVlbSl9LndwLWJsb2NrLXBvc3QtdGVtcGxhdGUuaXMtZmxleC1jb250YWluZXIuaXMtZmxleC1jb250YWluZXIuY29sdW1ucy0zPmxpLC53cC1ibG9jay1xdWVyeS1sb29wLmlzLWZsZXgtY29udGFpbmVyLmlzLWZsZXgtY29udGFpbmVyLmNvbHVtbnMtMz5saXt3aWR0aDpjYWxjKDMzLjMzMzMzJSAtIC44MzMzM2VtKX0ud3AtYmxvY2stcG9zdC10ZW1wbGF0ZS5pcy1mbGV4LWNvbnRhaW5lci5pcy1mbGV4LWNvbnRhaW5lci5jb2x1bW5zLTQ+bGksLndwLWJsb2NrLXF1ZXJ5LWxvb3AuaXMtZmxleC1jb250YWluZXIuaXMtZmxleC1jb250YWluZXIuY29sdW1ucy00Pmxpe3dpZHRoOmNhbGMoMjUlIC0gLjkzNzVlbSl9LndwLWJsb2NrLXBvc3QtdGVtcGxhdGUuaXMtZmxleC1jb250YWluZXIuaXMtZmxleC1jb250YWluZXIuY29sdW1ucy01PmxpLC53cC1ibG9jay1xdWVyeS1sb29wLmlzLWZsZXgtY29udGFpbmVyLmlzLWZsZXgtY29udGFpbmVyLmNvbHVtbnMtNT5saXt3aWR0aDpjYWxjKDIwJSAtIDFlbSl9LndwLWJsb2NrLXBvc3QtdGVtcGxhdGUuaXMtZmxleC1jb250YWluZXIuaXMtZmxleC1jb250YWluZXIuY29sdW1ucy02PmxpLC53cC1ibG9jay1xdWVyeS1sb29wLmlzLWZsZXgtY29udGFpbmVyLmlzLWZsZXgtY29udGFpbmVyLmNvbHVtbnMtNj5saXt3aWR0aDpjYWxjKDE2LjY2NjY3JSAtIDEuMDQxNjdlbSl9fS53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uPi53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uLW5leHQsLndwLWJsb2NrLXF1ZXJ5LXBhZ2luYXRpb24+LndwLWJsb2NrLXF1ZXJ5LXBhZ2luYXRpb24tbnVtYmVycywud3AtYmxvY2stcXVlcnktcGFnaW5hdGlvbj4ud3AtYmxvY2stcXVlcnktcGFnaW5hdGlvbi1wcmV2aW91c3ttYXJnaW4tcmlnaHQ6LjVlbTttYXJnaW4tYm90dG9tOi41ZW19LndwLWJsb2NrLXF1ZXJ5LXBhZ2luYXRpb24+LndwLWJsb2NrLXF1ZXJ5LXBhZ2luYXRpb24tbmV4dDpsYXN0LWNoaWxkLC53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uPi53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uLW51bWJlcnM6bGFzdC1jaGlsZCwud3AtYmxvY2stcXVlcnktcGFnaW5hdGlvbj4ud3AtYmxvY2stcXVlcnktcGFnaW5hdGlvbi1wcmV2aW91czpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uIC53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uLXByZXZpb3VzLWFycm93e21hcmdpbi1yaWdodDoxY2g7ZGlzcGxheTppbmxpbmUtYmxvY2t9LndwLWJsb2NrLXF1ZXJ5LXBhZ2luYXRpb24gLndwLWJsb2NrLXF1ZXJ5LXBhZ2luYXRpb24tcHJldmlvdXMtYXJyb3c6bm90KC5pcy1hcnJvdy1jaGV2cm9uKXt0cmFuc2Zvcm06c2NhbGVYKDEpfS53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uIC53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uLW5leHQtYXJyb3d7bWFyZ2luLWxlZnQ6MWNoO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uIC53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uLW5leHQtYXJyb3c6bm90KC5pcy1hcnJvdy1jaGV2cm9uKXt0cmFuc2Zvcm06c2NhbGVYKDEpfS53cC1ibG9jay1xdWVyeS1wYWdpbmF0aW9uLmFsaWduY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LndwLWJsb2NrLXF1b3Rle292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0ud3AtYmxvY2stcXVvdGUuaXMtbGFyZ2UsLndwLWJsb2NrLXF1b3RlLmlzLXN0eWxlLWxhcmdle21hcmdpbi1ib3R0b206MWVtO3BhZGRpbmc6MCAxZW19LndwLWJsb2NrLXF1b3RlLmlzLWxhcmdlIHAsLndwLWJsb2NrLXF1b3RlLmlzLXN0eWxlLWxhcmdlIHB7Zm9udC1zaXplOjEuNWVtO2ZvbnQtc3R5bGU6aXRhbGljO2xpbmUtaGVpZ2h0OjEuNn0ud3AtYmxvY2stcXVvdGUuaXMtbGFyZ2UgY2l0ZSwud3AtYmxvY2stcXVvdGUuaXMtbGFyZ2UgZm9vdGVyLC53cC1ibG9jay1xdW90ZS5pcy1zdHlsZS1sYXJnZSBjaXRlLC53cC1ibG9jay1xdW90ZS5pcy1zdHlsZS1sYXJnZSBmb290ZXJ7Zm9udC1zaXplOjEuMTI1ZW07dGV4dC1hbGlnbjpyaWdodH11bC53cC1ibG9jay1yc3N7bGlzdC1zdHlsZTpub25lO3BhZGRpbmc6MH11bC53cC1ibG9jay1yc3Mud3AtYmxvY2stcnNze2JveC1zaXppbmc6Ym9yZGVyLWJveH11bC53cC1ibG9jay1yc3MuYWxpZ25sZWZ0e21hcmdpbi1yaWdodDoyZW19dWwud3AtYmxvY2stcnNzLmFsaWducmlnaHR7bWFyZ2luLWxlZnQ6MmVtfXVsLndwLWJsb2NrLXJzcy5pcy1ncmlke2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfXVsLndwLWJsb2NrLXJzcy5pcy1ncmlkIGxpe21hcmdpbjowIDFlbSAxZW0gMDt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjYwMHB4KXt1bC53cC1ibG9jay1yc3MuY29sdW1ucy0yIGxpe3dpZHRoOmNhbGMoNTAlIC0gMWVtKX11bC53cC1ibG9jay1yc3MuY29sdW1ucy0zIGxpe3dpZHRoOmNhbGMoMzMuMzMzMzMlIC0gMWVtKX11bC53cC1ibG9jay1yc3MuY29sdW1ucy00IGxpe3dpZHRoOmNhbGMoMjUlIC0gMWVtKX11bC53cC1ibG9jay1yc3MuY29sdW1ucy01IGxpe3dpZHRoOmNhbGMoMjAlIC0gMWVtKX11bC53cC1ibG9jay1yc3MuY29sdW1ucy02IGxpe3dpZHRoOmNhbGMoMTYuNjY2NjclIC0gMWVtKX19LndwLWJsb2NrLXJzc19faXRlbS1hdXRob3IsLndwLWJsb2NrLXJzc19faXRlbS1wdWJsaXNoLWRhdGV7ZGlzcGxheTpibG9jaztmb250LXNpemU6LjgxMjVlbX0ud3AtYmxvY2stc2VhcmNoX19idXR0b257YmFja2dyb3VuZDojZjdmN2Y3O2JvcmRlcjoxcHggc29saWQgI2NjYztwYWRkaW5nOi4zNzVlbSAuNjI1ZW07Y29sb3I6IzMyMzczYzttYXJnaW4tbGVmdDouNjI1ZW07d29yZC1icmVhazpub3JtYWw7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fS53cC1ibG9jay1zZWFyY2hfX2J1dHRvbi5oYXMtaWNvbntsaW5lLWhlaWdodDowfS53cC1ibG9jay1zZWFyY2hfX2J1dHRvbiBzdmd7bWluLXdpZHRoOjEuNWVtO21pbi1oZWlnaHQ6MS41ZW07ZmlsbDpjdXJyZW50Q29sb3J9LndwLWJsb2NrLXNlYXJjaF9faW5zaWRlLXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6YXV0bztmbGV4LXdyYXA6bm93cmFwO21heC13aWR0aDoxMDAlfS53cC1ibG9jay1zZWFyY2hfX2xhYmVse3dpZHRoOjEwMCV9LndwLWJsb2NrLXNlYXJjaF9faW5wdXR7cGFkZGluZzo4cHg7ZmxleC1ncm93OjE7bWluLXdpZHRoOjNlbTtib3JkZXI6MXB4IHNvbGlkICM5NDk0OTQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fS53cC1ibG9jay1zZWFyY2gud3AtYmxvY2stc2VhcmNoX19idXR0b24tb25seSAud3AtYmxvY2stc2VhcmNoX19idXR0b257bWFyZ2luLWxlZnQ6MH0ud3AtYmxvY2stc2VhcmNoLndwLWJsb2NrLXNlYXJjaF9fYnV0dG9uLWluc2lkZSAud3AtYmxvY2stc2VhcmNoX19pbnNpZGUtd3JhcHBlcntwYWRkaW5nOjRweDtib3JkZXI6MXB4IHNvbGlkICM5NDk0OTR9LndwLWJsb2NrLXNlYXJjaC53cC1ibG9jay1zZWFyY2hfX2J1dHRvbi1pbnNpZGUgLndwLWJsb2NrLXNlYXJjaF9faW5zaWRlLXdyYXBwZXIgLndwLWJsb2NrLXNlYXJjaF9faW5wdXR7Ym9yZGVyLXJhZGl1czowO2JvcmRlcjpub25lO3BhZGRpbmc6MCAwIDAgLjI1ZW19LndwLWJsb2NrLXNlYXJjaC53cC1ibG9jay1zZWFyY2hfX2J1dHRvbi1pbnNpZGUgLndwLWJsb2NrLXNlYXJjaF9faW5zaWRlLXdyYXBwZXIgLndwLWJsb2NrLXNlYXJjaF9faW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lfS53cC1ibG9jay1zZWFyY2gud3AtYmxvY2stc2VhcmNoX19idXR0b24taW5zaWRlIC53cC1ibG9jay1zZWFyY2hfX2luc2lkZS13cmFwcGVyIC53cC1ibG9jay1zZWFyY2hfX2J1dHRvbntwYWRkaW5nOi4xMjVlbSAuNWVtfS53cC1ibG9jay1zZWFyY2guYWxpZ25jZW50ZXIgLndwLWJsb2NrLXNlYXJjaF9faW5zaWRlLXdyYXBwZXJ7bWFyZ2luOmF1dG99LndwLWJsb2NrLXNlcGFyYXRvcntib3JkZXItdG9wOjFweCBzb2xpZDtib3JkZXItYm90dG9tOjFweCBzb2xpZH0ud3AtYmxvY2stc2VwYXJhdG9yLmlzLXN0eWxlLXdpZGV7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LndwLWJsb2NrLXNlcGFyYXRvci5pcy1zdHlsZS1kb3Rze2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MTtoZWlnaHQ6YXV0b30ud3AtYmxvY2stc2VwYXJhdG9yLmlzLXN0eWxlLWRvdHM6YmVmb3Jle2NvbnRlbnQ6IsK3wrfCtyI7Y29sb3I6Y3VycmVudENvbG9yO2ZvbnQtc2l6ZToxLjVlbTtsZXR0ZXItc3BhY2luZzoyZW07cGFkZGluZy1sZWZ0OjJlbTtmb250LWZhbWlseTpzZXJpZn0ud3AtYmxvY2stc2l0ZS1sb2dve2xpbmUtaGVpZ2h0OjB9LndwLWJsb2NrLXNpdGUtbG9nbyBhe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS53cC1ibG9jay1zaXRlLWxvZ28uaXMtZGVmYXVsdC1zaXplIGltZ3t3aWR0aDoxMjBweDtoZWlnaHQ6YXV0b30ud3AtYmxvY2stc2l0ZS1sb2dvIGEsLndwLWJsb2NrLXNpdGUtbG9nbyBpbWd7Ym9yZGVyLXJhZGl1czppbmhlcml0fS53cC1ibG9jay1zaXRlLWxvZ28uYWxpZ25jZW50ZXJ7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzt0ZXh0LWFsaWduOmNlbnRlcn0ud3AtYmxvY2stc2l0ZS1sb2dvLmlzLXN0eWxlLXJvdW5kZWR7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LndwLWJsb2NrLXNvY2lhbC1saW5rc3twYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjA7dGV4dC1pbmRlbnQ6MDttYXJnaW4tbGVmdDowfS53cC1ibG9jay1zb2NpYWwtbGlua3MgLndwLXNvY2lhbC1saW5rIGEsLndwLWJsb2NrLXNvY2lhbC1saW5rcyAud3Atc29jaWFsLWxpbmsgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItYm90dG9tOjA7Ym94LXNoYWRvdzpub25lfS53cC1ibG9jay1zb2NpYWwtbGlua3MgLndwLXNvY2lhbC1saW5rIGF7cGFkZGluZzouMjVlbX0ud3AtYmxvY2stc29jaWFsLWxpbmtzIC53cC1zb2NpYWwtbGluayBzdmd7d2lkdGg6MWVtO2hlaWdodDoxZW19LndwLWJsb2NrLXNvY2lhbC1saW5rcy5oYXMtc21hbGwtaWNvbi1zaXple2ZvbnQtc2l6ZToxNnB4fS53cC1ibG9jay1zb2NpYWwtbGlua3MsLndwLWJsb2NrLXNvY2lhbC1saW5rcy5oYXMtbm9ybWFsLWljb24tc2l6ZXtmb250LXNpemU6MjRweH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmhhcy1sYXJnZS1pY29uLXNpemV7Zm9udC1zaXplOjM2cHh9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5oYXMtaHVnZS1pY29uLXNpemV7Zm9udC1zaXplOjQ4cHh9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5hbGlnbmNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2Rpc3BsYXk6ZmxleH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmFsaWducmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS53cC1ibG9jay1zb2NpYWwtbGlua3tkaXNwbGF5OmJsb2NrO2JvcmRlci1yYWRpdXM6OTk5OXB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4xcyBlYXNlO2hlaWdodDphdXRvfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey53cC1ibG9jay1zb2NpYWwtbGlua3t0cmFuc2l0aW9uLWR1cmF0aW9uOjBzO3RyYW5zaXRpb24tZGVsYXk6MHN9fS53cC1ibG9jay1zb2NpYWwtbGluayBhe2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMXMgZWFzZX0ud3AtYmxvY2stc29jaWFsLWxpbms6aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMSl9LndwLWJsb2NrLXNvY2lhbC1saW5rcyAud3AtYmxvY2stc29jaWFsLWxpbmsgLndwLWJsb2NrLXNvY2lhbC1saW5rLWFuY2hvciwud3AtYmxvY2stc29jaWFsLWxpbmtzIC53cC1ibG9jay1zb2NpYWwtbGluayAud3AtYmxvY2stc29jaWFsLWxpbmstYW5jaG9yOmFjdGl2ZSwud3AtYmxvY2stc29jaWFsLWxpbmtzIC53cC1ibG9jay1zb2NpYWwtbGluayAud3AtYmxvY2stc29jaWFsLWxpbmstYW5jaG9yOmhvdmVyLC53cC1ibG9jay1zb2NpYWwtbGlua3MgLndwLWJsb2NrLXNvY2lhbC1saW5rIC53cC1ibG9jay1zb2NpYWwtbGluay1hbmNob3I6dmlzaXRlZCwud3AtYmxvY2stc29jaWFsLWxpbmtzIC53cC1ibG9jay1zb2NpYWwtbGluayAud3AtYmxvY2stc29jaWFsLWxpbmstYW5jaG9yIHN2Z3tjb2xvcjpjdXJyZW50Q29sb3I7ZmlsbDpjdXJyZW50Q29sb3J9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGlua3tiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjA7Y29sb3I6IzQ0NH0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLWFtYXpvbntiYWNrZ3JvdW5kLWNvbG9yOiNmOTA7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLWJhbmRjYW1we2JhY2tncm91bmQtY29sb3I6IzFlYTBjMztjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstYmVoYW5jZXtiYWNrZ3JvdW5kLWNvbG9yOiMwNzU3ZmU7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLWNvZGVwZW57YmFja2dyb3VuZC1jb2xvcjojMWUxZjI2O2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1kZXZpYW50YXJ0e2JhY2tncm91bmQtY29sb3I6IzAyZTQ5Yjtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstZHJpYmJibGV7YmFja2dyb3VuZC1jb2xvcjojZTk0Yzg5O2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1kcm9wYm94e2JhY2tncm91bmQtY29sb3I6IzQyODBmZjtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstZXRzeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDU4MDA7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLWZhY2Vib29re2JhY2tncm91bmQtY29sb3I6IzE3NzhmMjtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstZml2ZWh1bmRyZWRweHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLWZsaWNrcntiYWNrZ3JvdW5kLWNvbG9yOiMwNDYxZGQ7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLWZvdXJzcXVhcmV7YmFja2dyb3VuZC1jb2xvcjojZTY1Njc4O2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1naXRodWJ7YmFja2dyb3VuZC1jb2xvcjojMjQyOTJkO2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1nb29kcmVhZHN7YmFja2dyb3VuZC1jb2xvcjojZWNlYWRkO2NvbG9yOiMzODIxMTB9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1nb29nbGV7YmFja2dyb3VuZC1jb2xvcjojZWE0NDM0O2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1pbnN0YWdyYW17YmFja2dyb3VuZC1jb2xvcjojZjAwMDc1O2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1sYXN0Zm17YmFja2dyb3VuZC1jb2xvcjojZTIxYjI0O2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1saW5rZWRpbntiYWNrZ3JvdW5kLWNvbG9yOiMwZDY2YzI7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLW1hc3RvZG9ue2JhY2tncm91bmQtY29sb3I6IzMyODhkNDtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstbWVkaXVte2JhY2tncm91bmQtY29sb3I6IzAyYWI2Yztjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstbWVldHVwe2JhY2tncm91bmQtY29sb3I6I2Y2NDA1Zjtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstcGF0cmVvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZjQyNGQ7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLXBpbnRlcmVzdHtiYWNrZ3JvdW5kLWNvbG9yOiNlNjAxMjI7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLXBvY2tldHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjQxNTU7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLXJlZGRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmZTQ1MDA7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLXNreXBle2JhY2tncm91bmQtY29sb3I6IzA0NzhkNztjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstc25hcGNoYXR7YmFja2dyb3VuZC1jb2xvcjojZmVmYzAwO2NvbG9yOiNmZmY7c3Ryb2tlOiMwMDB9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay1zb3VuZGNsb3Vke2JhY2tncm91bmQtY29sb3I6I2ZmNTYwMDtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstc3BvdGlmeXtiYWNrZ3JvdW5kLWNvbG9yOiMxYmQ3NjA7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLXRlbGVncmFte2JhY2tncm91bmQtY29sb3I6IzJhYWJlZTtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstdGlrdG9re2JhY2tncm91bmQtY29sb3I6IzAwMDtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstdHVtYmxye2JhY2tncm91bmQtY29sb3I6IzAxMTgzNTtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstdHdpdGNoe2JhY2tncm91bmQtY29sb3I6IzY0NDBhNDtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstdHdpdHRlcntiYWNrZ3JvdW5kLWNvbG9yOiMxZGExZjI7Y29sb3I6I2ZmZn0ud3AtYmxvY2stc29jaWFsLWxpbmtzOm5vdCguaXMtc3R5bGUtbG9nb3Mtb25seSkgLndwLXNvY2lhbC1saW5rLXZpbWVve2JhY2tncm91bmQtY29sb3I6IzFlYjdlYTtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmstdmt7YmFja2dyb3VuZC1jb2xvcjojNDY4MGMyO2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay13b3JkcHJlc3N7YmFja2dyb3VuZC1jb2xvcjojMzQ5OWNkO2NvbG9yOiNmZmZ9LndwLWJsb2NrLXNvY2lhbC1saW5rczpub3QoLmlzLXN0eWxlLWxvZ29zLW9ubHkpIC53cC1zb2NpYWwtbGluay15ZWxwe2JhY2tncm91bmQtY29sb3I6I2QzMjQyMjtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3M6bm90KC5pcy1zdHlsZS1sb2dvcy1vbmx5KSAud3Atc29jaWFsLWxpbmsteW91dHViZXtiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjojZmZmfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmt7YmFja2dyb3VuZDpub25lfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmsgYXtwYWRkaW5nOjB9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluayBzdmd7d2lkdGg6MS4yNWVtO2hlaWdodDoxLjI1ZW19LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1hbWF6b257Y29sb3I6I2Y5MH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLWJhbmRjYW1we2NvbG9yOiMxZWEwYzN9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1iZWhhbmNle2NvbG9yOiMwNzU3ZmV9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1jb2RlcGVue2NvbG9yOiMxZTFmMjZ9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1kZXZpYW50YXJ0e2NvbG9yOiMwMmU0OWJ9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1kcmliYmJsZXtjb2xvcjojZTk0Yzg5fS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstZHJvcGJveHtjb2xvcjojNDI4MGZmfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstZXRzeXtjb2xvcjojZjQ1ODAwfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstZmFjZWJvb2t7Y29sb3I6IzE3NzhmMn0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLWZpdmVodW5kcmVkcHh7Y29sb3I6IzAwMH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLWZsaWNrcntjb2xvcjojMDQ2MWRkfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstZm91cnNxdWFyZXtjb2xvcjojZTY1Njc4fS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstZ2l0aHVie2NvbG9yOiMyNDI5MmR9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1nb29kcmVhZHN7Y29sb3I6IzM4MjExMH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLWdvb2dsZXtjb2xvcjojZWE0NDM0fS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstaW5zdGFncmFte2NvbG9yOiNmMDAwNzV9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1sYXN0Zm17Y29sb3I6I2UyMWIyNH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLWxpbmtlZGlue2NvbG9yOiMwZDY2YzJ9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1tYXN0b2Rvbntjb2xvcjojMzI4OGQ0fS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstbWVkaXVte2NvbG9yOiMwMmFiNmN9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1tZWV0dXB7Y29sb3I6I2Y2NDA1Zn0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLXBhdHJlb257Y29sb3I6I2ZmNDI0ZH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLXBpbnRlcmVzdHtjb2xvcjojZTYwMTIyfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstcG9ja2V0e2NvbG9yOiNlZjQxNTV9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1yZWRkaXR7Y29sb3I6I2ZlNDUwMH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLXNreXBle2NvbG9yOiMwNDc4ZDd9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay1zbmFwY2hhdHtjb2xvcjojZmZmO3N0cm9rZTojMDAwfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstc291bmRjbG91ZHtjb2xvcjojZmY1NjAwfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstc3BvdGlmeXtjb2xvcjojMWJkNzYwfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstdGVsZWdyYW17Y29sb3I6IzJhYWJlZX0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLXRpa3Rva3tjb2xvcjojMDAwfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstdHVtYmxye2NvbG9yOiMwMTE4MzV9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay10d2l0Y2h7Y29sb3I6IzY0NDBhNH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLXR3aXR0ZXJ7Y29sb3I6IzFkYTFmMn0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLWxvZ29zLW9ubHkgLndwLXNvY2lhbC1saW5rLXZpbWVve2NvbG9yOiMxZWI3ZWF9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay12a3tjb2xvcjojNDY4MGMyfS53cC1ibG9jay1zb2NpYWwtbGlua3MuaXMtc3R5bGUtbG9nb3Mtb25seSAud3Atc29jaWFsLWxpbmstd29yZHByZXNze2NvbG9yOiMzNDk5Y2R9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay15ZWxwe2NvbG9yOiNkMzI0MjJ9LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1sb2dvcy1vbmx5IC53cC1zb2NpYWwtbGluay15b3V0dWJle2NvbG9yOnJlZH0ud3AtYmxvY2stc29jaWFsLWxpbmtzLmlzLXN0eWxlLXBpbGwtc2hhcGUgLndwLXNvY2lhbC1saW5re3dpZHRoOmF1dG99LndwLWJsb2NrLXNvY2lhbC1saW5rcy5pcy1zdHlsZS1waWxsLXNoYXBlIC53cC1zb2NpYWwtbGluayBhe3BhZGRpbmctbGVmdDouNjY2NjdlbTtwYWRkaW5nLXJpZ2h0Oi42NjY2N2VtfS53cC1ibG9jay1zcGFjZXJ7Y2xlYXI6Ym90aH0ud3AtYmxvY2stdGFnLWNsb3VkLmFsaWduY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS53cC1ibG9jay10YWctY2xvdWQuYWxpZ25mdWxse3BhZGRpbmctbGVmdDoxZW07cGFkZGluZy1yaWdodDoxZW19LndwLWJsb2NrLXRhZy1jbG91ZCBhe2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDo1cHh9LndwLWJsb2NrLXRhZy1jbG91ZCBzcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjVweDt0ZXh0LWRlY29yYXRpb246bm9uZX0ud3AtYmxvY2stdGFibGV7bWFyZ2luOjAgMCAxZW07b3ZlcmZsb3cteDphdXRvfS53cC1ibG9jay10YWJsZSB0YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJX0ud3AtYmxvY2stdGFibGUgLmhhcy1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkO3dpZHRoOjEwMCV9LndwLWJsb2NrLXRhYmxlIC5oYXMtZml4ZWQtbGF5b3V0IHRkLC53cC1ibG9jay10YWJsZSAuaGFzLWZpeGVkLWxheW91dCB0aHt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9LndwLWJsb2NrLXRhYmxlLmFsaWduY2VudGVyLC53cC1ibG9jay10YWJsZS5hbGlnbmxlZnQsLndwLWJsb2NrLXRhYmxlLmFsaWducmlnaHR7ZGlzcGxheTp0YWJsZTt3aWR0aDphdXRvfS53cC1ibG9jay10YWJsZS5hbGlnbmNlbnRlciB0ZCwud3AtYmxvY2stdGFibGUuYWxpZ25jZW50ZXIgdGgsLndwLWJsb2NrLXRhYmxlLmFsaWdubGVmdCB0ZCwud3AtYmxvY2stdGFibGUuYWxpZ25sZWZ0IHRoLC53cC1ibG9jay10YWJsZS5hbGlnbnJpZ2h0IHRkLC53cC1ibG9jay10YWJsZS5hbGlnbnJpZ2h0IHRoe3dvcmQtYnJlYWs6YnJlYWstd29yZH0ud3AtYmxvY2stdGFibGUgLmhhcy1zdWJ0bGUtbGlnaHQtZ3JheS1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6I2YzZjRmNX0ud3AtYmxvY2stdGFibGUgLmhhcy1zdWJ0bGUtcGFsZS1ncmVlbi1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6I2U5ZmJlNX0ud3AtYmxvY2stdGFibGUgLmhhcy1zdWJ0bGUtcGFsZS1ibHVlLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjojZTdmNWZlfS53cC1ibG9jay10YWJsZSAuaGFzLXN1YnRsZS1wYWxlLXBpbmstYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiNmY2YwZWZ9LndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXN7Ym9yZGVyLXNwYWNpbmc6MDtib3JkZXItY29sbGFwc2U6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmMGYwZjB9LndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCl7YmFja2dyb3VuZC1jb2xvcjojZjBmMGYwfS53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzLmhhcy1zdWJ0bGUtbGlnaHQtZ3JheS1iYWNrZ3JvdW5kLWNvbG9yIHRib2R5IHRyOm50aC1jaGlsZChvZGQpe2JhY2tncm91bmQtY29sb3I6I2YzZjRmNX0ud3AtYmxvY2stdGFibGUuaXMtc3R5bGUtc3RyaXBlcy5oYXMtc3VidGxlLXBhbGUtZ3JlZW4tYmFja2dyb3VuZC1jb2xvciB0Ym9keSB0cjpudGgtY2hpbGQob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOiNlOWZiZTV9LndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMuaGFzLXN1YnRsZS1wYWxlLWJsdWUtYmFja2dyb3VuZC1jb2xvciB0Ym9keSB0cjpudGgtY2hpbGQob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOiNlN2Y1ZmV9LndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMuaGFzLXN1YnRsZS1wYWxlLXBpbmstYmFja2dyb3VuZC1jb2xvciB0Ym9keSB0cjpudGgtY2hpbGQob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOiNmY2YwZWZ9LndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdGQsLndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdGh7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS53cC1ibG9jay10YWJsZSAuaGFzLWJvcmRlci1jb2xvcj4qLC53cC1ibG9jay10YWJsZSAuaGFzLWJvcmRlci1jb2xvciB0ZCwud3AtYmxvY2stdGFibGUgLmhhcy1ib3JkZXItY29sb3IgdGgsLndwLWJsb2NrLXRhYmxlIC5oYXMtYm9yZGVyLWNvbG9yIHRye2JvcmRlci1jb2xvcjppbmhlcml0fS53cC1ibG9jay10YWJsZSB0YWJsZVtzdHlsZSo9Ym9yZGVyLXN0eWxlXT4qLC53cC1ibG9jay10YWJsZSB0YWJsZVtzdHlsZSo9Ym9yZGVyLXN0eWxlXSB0ZCwud3AtYmxvY2stdGFibGUgdGFibGVbc3R5bGUqPWJvcmRlci1zdHlsZV0gdGgsLndwLWJsb2NrLXRhYmxlIHRhYmxlW3N0eWxlKj1ib3JkZXItc3R5bGVdIHRye2JvcmRlci1zdHlsZTppbmhlcml0fS53cC1ibG9jay10YWJsZSB0YWJsZVtzdHlsZSo9Ym9yZGVyLXdpZHRoXT4qLC53cC1ibG9jay10YWJsZSB0YWJsZVtzdHlsZSo9Ym9yZGVyLXdpZHRoXSB0ZCwud3AtYmxvY2stdGFibGUgdGFibGVbc3R5bGUqPWJvcmRlci13aWR0aF0gdGgsLndwLWJsb2NrLXRhYmxlIHRhYmxlW3N0eWxlKj1ib3JkZXItd2lkdGhdIHRye2JvcmRlci13aWR0aDppbmhlcml0fS53cC1ibG9jay10ZXh0LWNvbHVtbnMsLndwLWJsb2NrLXRleHQtY29sdW1ucy5hbGlnbmNlbnRlcntkaXNwbGF5OmZsZXh9LndwLWJsb2NrLXRleHQtY29sdW1ucyAud3AtYmxvY2stY29sdW1ue21hcmdpbjowIDFlbTtwYWRkaW5nOjB9LndwLWJsb2NrLXRleHQtY29sdW1ucyAud3AtYmxvY2stY29sdW1uOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9LndwLWJsb2NrLXRleHQtY29sdW1ucyAud3AtYmxvY2stY29sdW1uOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LndwLWJsb2NrLXRleHQtY29sdW1ucy5jb2x1bW5zLTIgLndwLWJsb2NrLWNvbHVtbnt3aWR0aDo1MCV9LndwLWJsb2NrLXRleHQtY29sdW1ucy5jb2x1bW5zLTMgLndwLWJsb2NrLWNvbHVtbnt3aWR0aDozMy4zMzMzMyV9LndwLWJsb2NrLXRleHQtY29sdW1ucy5jb2x1bW5zLTQgLndwLWJsb2NrLWNvbHVtbnt3aWR0aDoyNSV9cHJlLndwLWJsb2NrLXZlcnNle2ZvbnQtZmFtaWx5OmluaGVyaXQ7b3ZlcmZsb3c6YXV0bzt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0ud3AtYmxvY2stdmlkZW97bWFyZ2luOjAgMCAxZW19LndwLWJsb2NrLXZpZGVvIHZpZGVve3dpZHRoOjEwMCV9QHN1cHBvcnRzIChwb3NpdGlvbjpzdGlja3kpey53cC1ibG9jay12aWRlbyBbcG9zdGVyXXstby1vYmplY3QtZml0OmNvdmVyO29iamVjdC1maXQ6Y292ZXJ9fS53cC1ibG9jay12aWRlby5hbGlnbmNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0ud3AtYmxvY2stdmlkZW8gZmlnY2FwdGlvbnttYXJnaW4tdG9wOi41ZW07bWFyZ2luLWJvdHRvbToxZW19LndwLWJsb2NrLXBvc3QtZmVhdHVyZWQtaW1hZ2V7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ud3AtYmxvY2stcG9zdC1mZWF0dXJlZC1pbWFnZSBhe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS53cC1ibG9jay1wb3N0LWZlYXR1cmVkLWltYWdlIGltZ3ttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3ZlcnRpY2FsLWFsaWduOmJvdHRvbX0ud3AtYmxvY2stcG9zdC1mZWF0dXJlZC1pbWFnZS5hbGlnbmZ1bGwgaW1nLC53cC1ibG9jay1wb3N0LWZlYXR1cmVkLWltYWdlLmFsaWdud2lkZSBpbWd7d2lkdGg6MTAwJX06cm9vdHstLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbm9ybWFsOjE2cHg7LS13cC0tcHJlc2V0LS1mb250LXNpemUtLWh1Z2U6NDJweH06cm9vdCAuaGFzLXZlcnktbGlnaHQtZ3JheS1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6I2VlZX06cm9vdCAuaGFzLXZlcnktZGFyay1ncmF5LWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjojMzEzMTMxfTpyb290IC5oYXMtdmVyeS1saWdodC1ncmF5LWNvbG9ye2NvbG9yOiNlZWV9OnJvb3QgLmhhcy12ZXJ5LWRhcmstZ3JheS1jb2xvcntjb2xvcjojMzEzMTMxfTpyb290IC5oYXMtdml2aWQtZ3JlZW4tY3lhbi10by12aXZpZC1jeWFuLWJsdWUtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzAwZDA4NCwjMDY5M2UzKX06cm9vdCAuaGFzLXB1cnBsZS1jcnVzaC1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjMzRlMmU0LCM0NzIxZmIgNTAlLCNhYjFkZmUpfTpyb290IC5oYXMtaGF6eS1kYXduLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmYWFjYTgsI2RhZDBlYyl9OnJvb3QgLmhhcy1zdWJkdWVkLW9saXZlLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmYWZhZTEsIzY3YTY3MSl9OnJvb3QgLmhhcy1hdG9taWMtY3JlYW0tZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2ZkZDc5YSwjMDA0YTU5KX06cm9vdCAuaGFzLW5pZ2h0c2hhZGUtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzMzMDk2OCwjMzFjZGNmKX06cm9vdCAuaGFzLW1pZG5pZ2h0LWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCMwMjAzODEsIzI4NzRmYyl9Lmhhcy1yZWd1bGFyLWZvbnQtc2l6ZXtmb250LXNpemU6MWVtfS5oYXMtbGFyZ2VyLWZvbnQtc2l6ZXtmb250LXNpemU6Mi42MjVlbX0uaGFzLW5vcm1hbC1mb250LXNpemV7Zm9udC1zaXplOnZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbm9ybWFsKX0uaGFzLWh1Z2UtZm9udC1zaXple2ZvbnQtc2l6ZTp2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLWh1Z2UpfS5oYXMtdGV4dC1hbGlnbi1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9Lmhhcy10ZXh0LWFsaWduLWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS5oYXMtdGV4dC1hbGlnbi1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fSNlbmQtcmVzaXphYmxlLWVkaXRvci1zZWN0aW9ue2Rpc3BsYXk6bm9uZX0uYWxpZ25jZW50ZXJ7Y2xlYXI6Ym90aH0uaXRlbXMtanVzdGlmaWVkLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lml0ZW1zLWp1c3RpZmllZC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uaXRlbXMtanVzdGlmaWVkLXJpZ2h0e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uaXRlbXMtanVzdGlmaWVkLXNwYWNlLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnNjcmVlbi1yZWFkZXItdGV4dHtib3JkZXI6MDtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTstd2Via2l0LWNsaXAtcGF0aDppbnNldCg1MCUpO2NsaXAtcGF0aDppbnNldCg1MCUpO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d29yZC13cmFwOm5vcm1hbCFpbXBvcnRhbnR9LnNjcmVlbi1yZWFkZXItdGV4dDpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiNkZGQ7Y2xpcDphdXRvIWltcG9ydGFudDstd2Via2l0LWNsaXAtcGF0aDpub25lO2NsaXAtcGF0aDpub25lO2NvbG9yOiM0NDQ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MWVtO2hlaWdodDphdXRvO2xlZnQ6NXB4O2xpbmUtaGVpZ2h0Om5vcm1hbDtwYWRkaW5nOjE1cHggMjNweCAxNHB4O3RleHQtZGVjb3JhdGlvbjpub25lO3RvcDo1cHg7d2lkdGg6YXV0bzt6LWluZGV4OjEwMDAwMH1odG1sIDp3aGVyZShpbWdbY2xhc3MqPXdwLWltYWdlLV0pe2hlaWdodDphdXRvO21heC13aWR0aDoxMDAlfQ=="}},"time_used":3279,"timings":{"blocked":-1,"dns":2,"connect":8,"send":0,"wait":9,"receive":0,"ssl":3260},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css?family=Nunito:300,400,600,700,800,900\u0026subset=latin%2Clatin-ext","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://betaroi.ltd/","date":"2026-07-27T09:44:42.301Z","timestamp":1785145482301,"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 /css?family=Nunito:300,400,600,700,800,900\u0026subset=latin%2Clatin-ext 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://betaroi.ltd/\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 09:44:42 GMT\r\ndate: Mon, 27 Jul 2026 09:44:42 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":10266,"size_decoded":1355,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"8b02e0eaaf83fffdd28019362eec146e","sha1":"3f0dc4afb05990e1612dba9392a648cd5dc36bd4","sha256":"8c62363a0f5c6b40519d861a3845e524dc90a36b37f1b1aa0f0f666f6c8587f4","sha512":"cdfdff5aad134d4d170d1744f6219d43c62e26d88630eb44b79d211f9361ca4e25050b0f4c41acb110290a56ac50d404c612206a111942d9bf4432493e64d25b","ssdeep":"192:lH1yGCkbEH0y7vkmWHGy1JkUJH5yyWk/oHYynzkazHjy8ok9H:94xD69rkpfv2Y","tlshash":"7222bba1142bd400a7832cc667df7e32dd4e62103458c47aebfd9898eca7d272264b5e","first_seen":"2025-09-21T00:05:08.855083Z","last_seen":"2026-07-27T09:45:50.858959Z","times_seen":84,"resource_available":false,"data":"LyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJT09hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTWVhQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklPdWFCWHNvLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTy1hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTmVhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU9PYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU1lYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJT3VhQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU8tYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU5lYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklPT2FCWHNvLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklNZWFCWHNvLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU91YUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklPLWFCWHNvLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklOZWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJT09hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTWVhQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklPdWFCWHNvLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTy1hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTmVhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU9PYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU1lYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJT3VhQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU8tYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU5lYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklPT2FCWHNvLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklNZWFCWHNvLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ051bml0byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU91YUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklPLWFCWHNvLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9udW5pdG8vdjMyL1hSWFYzSTZMaTAxQktvZklOZWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0K"}},"time_used":91,"timings":{"blocked":-1,"dns":2,"connect":16,"send":0,"wait":34,"receive":0,"ssl":39},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/jquery.magnific-popup.min.js?ver=1.1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.420Z","timestamp":1785145482420,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/jquery.magnific-popup.min.js?ver=1.1.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 32802\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":32802,"size_decoded":33019,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (562)","md5":"342841c71bf97ea45ca04fe8d6cead55","sha1":"637e10197aa7b42cae85e8423a9570cb70afb674","sha256":"cb99922e6533e36934a738ae2fa05252cc1fd22dc76015fdc5e6e639795e88c0","sha512":"a75fc7d3daaebc0daada3b71521b6582768c93a5039c8ae287a7c6745c958d9af47d061a4c2e2f53278fd5647d60c5406543abafd62d8709d71c36dd72aac9d8","ssdeep":"768:X6pkptmFVQMxhOVvr2XZ+n6HSABdhbGQZD:X62XCwhGsoSABPbGOD","tlshash":"3ae25119f6f321279757b1388e7f9c0832759047ae05dd443e4c61a8afa883895f9fac","first_seen":"2023-03-10T00:49:37Z","last_seen":"2026-07-27T13:38:47.795544Z","times_seen":116,"resource_available":true,"data":"LyohIE1hZ25pZmljIFBvcHVwIC0gdjEuMS4wIC0gMjAxNi0wMi0yMAogKiBodHRwOi8vZGltc2VtZW5vdi5jb20vcGx1Z2lucy9tYWduaWZpYy1wb3B1cC8KICogQ29weXJpZ2h0IChjKSAyMDE2IERtaXRyeSBTZW1lbm92OyAqLwohIGZ1bmN0aW9uKGEpIHsKICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsianF1ZXJ5Il0sIGEpIDogYSgib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyA/IHJlcXVpcmUoImpxdWVyeSIpIDogd2luZG93LmpRdWVyeSB8fCB3aW5kb3cuWmVwdG8pCn0oZnVuY3Rpb24oYSkgewogICAgdmFyIGIsIGMsIGQsIGUsIGYsIGcsIGggPSAiQ2xvc2UiLAogICAgICAgIGkgPSAiQmVmb3JlQ2xvc2UiLAogICAgICAgIGogPSAiQWZ0ZXJDbG9zZSIsCiAgICAgICAgayA9ICJCZWZvcmVBcHBlbmQiLAogICAgICAgIGwgPSAiTWFya3VwUGFyc2UiLAogICAgICAgIG0gPSAiT3BlbiIsCiAgICAgICAgbiA9ICJDaGFuZ2UiLAogICAgICAgIG8gPSAibWZwIiwKICAgICAgICBwID0gIi4iICsgbywKICAgICAgICBxID0gIm1mcC1yZWFkeSIsCiAgICAgICAgciA9ICJtZnAtcmVtb3ZpbmciLAogICAgICAgIHMgPSAibWZwLXByZXZlbnQtY2xvc2UiLAogICAgICAgIHQgPSBmdW5jdGlvbigpIHt9LAogICAgICAgIHUgPSAhIXdpbmRvdy5qUXVlcnksCiAgICAgICAgdiA9IGEod2luZG93KSwKICAgICAgICB3ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICBiLmV2Lm9uKG8gKyBhICsgcCwgYykKICAgICAgICB9LAogICAgICAgIHggPSBmdW5jdGlvbihiLCBjLCBkLCBlKSB7CiAgICAgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgIHJldHVybiBmLmNsYXNzTmFtZSA9ICJtZnAtIiArIGIsIGQgJiYgKGYuaW5uZXJIVE1MID0gZCksIGUgPyBjICYmIGMuYXBwZW5kQ2hpbGQoZikgOiAoZiA9IGEoZiksIGMgJiYgZi5hcHBlbmRUbyhjKSksIGYKICAgICAgICB9LAogICAgICAgIHkgPSBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgIGIuZXYudHJpZ2dlckhhbmRsZXIobyArIGMsIGQpLCBiLnN0LmNhbGxiYWNrcyAmJiAoYyA9IGMuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjLnNsaWNlKDEpLCBiLnN0LmNhbGxiYWNrc1tjXSAmJiBiLnN0LmNhbGxiYWNrc1tjXS5hcHBseShiLCBhLmlzQXJyYXkoZCkgPyBkIDogW2RdKSkKICAgICAgICB9LAogICAgICAgIHogPSBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHJldHVybiBjID09PSBnICYmIGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuIHx8IChiLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0biA9IGEoYi5zdC5jbG9zZU1hcmt1cC5yZXBsYWNlKCIldGl0bGUlIiwgYi5zdC50Q2xvc2UpKSwgZyA9IGMpLCBiLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0bgogICAgICAgIH0sCiAgICAgICAgQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBhLm1hZ25pZmljUG9wdXAuaW5zdGFuY2UgfHwgKGIgPSBuZXcgdCwgYi5pbml0KCksIGEubWFnbmlmaWNQb3B1cC5pbnN0YW5jZSA9IGIpCiAgICAgICAgfSwKICAgICAgICBCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpLnN0eWxlLAogICAgICAgICAgICAgICAgYiA9IFsibXMiLCAiTyIsICJNb3oiLCAiV2Via2l0Il07CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGEudHJhbnNpdGlvbikgcmV0dXJuICEwOwogICAgICAgICAgICBmb3IgKDsgYi5sZW5ndGg7KQogICAgICAgICAgICAgICAgaWYgKGIucG9wKCkgKyAiVHJhbnNpdGlvbiIgaW4gYSkgcmV0dXJuICEwOwogICAgICAgICAgICByZXR1cm4gITEKICAgICAgICB9OwogICAgdC5wcm90b3R5cGUgPSB7CiAgICAgICAgY29uc3RydWN0b3I6IHQsCiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBjID0gbmF2aWdhdG9yLmFwcFZlcnNpb247CiAgICAgICAgICAgIGIuaXNMb3dJRSA9IGIuaXNJRTggPSBkb2N1bWVudC5hbGwgJiYgIWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIsIGIuaXNBbmRyb2lkID0gL2FuZHJvaWQvZ2kudGVzdChjKSwgYi5pc0lPUyA9IC9pcGhvbmV8aXBhZHxpcG9kL2dpLnRlc3QoYyksIGIuc3VwcG9ydHNUcmFuc2l0aW9uID0gQigpLCBiLnByb2JhYmx5TW9iaWxlID0gYi5pc0FuZHJvaWQgfHwgYi5pc0lPUyB8fCAvKE9wZXJhIE1pbmkpfEtpbmRsZXx3ZWJPU3xCbGFja0JlcnJ5fChPcGVyYSBNb2JpKXwoV2luZG93cyBQaG9uZSl8SUVNb2JpbGUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLCBkID0gYShkb2N1bWVudCksIGIucG9wdXBzQ2FjaGUgPSB7fQogICAgICAgIH0sCiAgICAgICAgb3BlbjogZnVuY3Rpb24oYykgewogICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgaWYgKGMuaXNPYmogPT09ICExKSB7CiAgICAgICAgICAgICAgICBiLml0ZW1zID0gYy5pdGVtcy50b0FycmF5KCksIGIuaW5kZXggPSAwOwogICAgICAgICAgICAgICAgdmFyIGcsIGggPSBjLml0ZW1zOwogICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IGgubGVuZ3RoOyBlKyspCiAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBoW2VdLCBnLnBhcnNlZCAmJiAoZyA9IGcuZWxbMF0pLCBnID09PSBjLmVsWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuaW5kZXggPSBlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGIuaXRlbXMgPSBhLmlzQXJyYXkoYy5pdGVtcykgPyBjLml0ZW1zIDogW2MuaXRlbXNdLCBiLmluZGV4ID0gYy5pbmRleCB8fCAwOwogICAgICAgICAgICBpZiAoYi5pc09wZW4pIHJldHVybiB2b2lkIGIudXBkYXRlSXRlbUhUTUwoKTsKICAgICAgICAgICAgYi50eXBlcyA9IFtdLCBmID0gIiIsIGMubWFpbkVsICYmIGMubWFpbkVsLmxlbmd0aCA/IGIuZXYgPSBjLm1haW5FbC5lcSgwKSA6IGIuZXYgPSBkLCBjLmtleSA/IChiLnBvcHVwc0NhY2hlW2Mua2V5XSB8fCAoYi5wb3B1cHNDYWNoZVtjLmtleV0gPSB7fSksIGIuY3VyclRlbXBsYXRlID0gYi5wb3B1cHNDYWNoZVtjLmtleV0pIDogYi5jdXJyVGVtcGxhdGUgPSB7fSwgYi5zdCA9IGEuZXh0ZW5kKCEwLCB7fSwgYS5tYWduaWZpY1BvcHVwLmRlZmF1bHRzLCBjKSwgYi5maXhlZENvbnRlbnRQb3MgPSAiYXV0byIgPT09IGIuc3QuZml4ZWRDb250ZW50UG9zID8gIWIucHJvYmFibHlNb2JpbGUgOiBiLnN0LmZpeGVkQ29udGVudFBvcywgYi5zdC5tb2RhbCAmJiAoYi5zdC5jbG9zZU9uQ29udGVudENsaWNrID0gITEsIGIuc3QuY2xvc2VPbkJnQ2xpY2sgPSAhMSwgYi5zdC5zaG93Q2xvc2VCdG4gPSAhMSwgYi5zdC5lbmFibGVFc2NhcGVLZXkgPSAhMSksIGIuYmdPdmVybGF5IHx8IChiLmJnT3ZlcmxheSA9IHgoImJnIikub24oImNsaWNrIiArIHAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCBiLndyYXAgPSB4KCJ3cmFwIikuYXR0cigidGFiaW5kZXgiLCAtMSkub24oImNsaWNrIiArIHAsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIGIuX2NoZWNrSWZDbG9zZShhLnRhcmdldCkgJiYgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCBiLmNvbnRhaW5lciA9IHgoImNvbnRhaW5lciIsIGIud3JhcCkpLCBiLmNvbnRlbnRDb250YWluZXIgPSB4KCJjb250ZW50IiksIGIuc3QucHJlbG9hZGVyICYmIChiLnByZWxvYWRlciA9IHgoInByZWxvYWRlciIsIGIuY29udGFpbmVyLCBiLnN0LnRMb2FkaW5nKSk7CiAgICAgICAgICAgIHZhciBpID0gYS5tYWduaWZpY1BvcHVwLm1vZHVsZXM7CiAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBpLmxlbmd0aDsgZSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgaiA9IGlbZV07CiAgICAgICAgICAgICAgICBqID0gai5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGouc2xpY2UoMSksIGJbImluaXQiICsgal0uY2FsbChiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHkoIkJlZm9yZU9wZW4iKSwgYi5zdC5zaG93Q2xvc2VCdG4gJiYgKGIuc3QuY2xvc2VCdG5JbnNpZGUgPyAodyhsLCBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICBjLmNsb3NlX3JlcGxhY2VXaXRoID0geihkLnR5cGUpCiAgICAgICAgICAgIH0pLCBmICs9ICIgbWZwLWNsb3NlLWJ0bi1pbiIpIDogYi53cmFwLmFwcGVuZCh6KCkpKSwgYi5zdC5hbGlnblRvcCAmJiAoZiArPSAiIG1mcC1hbGlnbi10b3AiKSwgYi5maXhlZENvbnRlbnRQb3MgPyBiLndyYXAuY3NzKHsKICAgICAgICAgICAgICAgIG92ZXJmbG93OiBiLnN0Lm92ZXJmbG93WSwKICAgICAgICAgICAgICAgIG92ZXJmbG93WDogImhpZGRlbiIsCiAgICAgICAgICAgICAgICBvdmVyZmxvd1k6IGIuc3Qub3ZlcmZsb3dZCiAgICAgICAgICAgIH0pIDogYi53cmFwLmNzcyh7CiAgICAgICAgICAgICAgICB0b3A6IHYuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIgogICAgICAgICAgICB9KSwgKGIuc3QuZml4ZWRCZ1BvcyA9PT0gITEgfHwgImF1dG8iID09PSBiLnN0LmZpeGVkQmdQb3MgJiYgIWIuZml4ZWRDb250ZW50UG9zKSAmJiBiLmJnT3ZlcmxheS5jc3MoewogICAgICAgICAgICAgICAgaGVpZ2h0OiBkLmhlaWdodCgpLAogICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIKICAgICAgICAgICAgfSksIGIuc3QuZW5hYmxlRXNjYXBlS2V5ICYmIGQub24oImtleXVwIiArIHAsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIDI3ID09PSBhLmtleUNvZGUgJiYgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCB2Lm9uKCJyZXNpemUiICsgcCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBiLnVwZGF0ZVNpemUoKQogICAgICAgICAgICB9KSwgYi5zdC5jbG9zZU9uQ29udGVudENsaWNrIHx8IChmICs9ICIgbWZwLWF1dG8tY3Vyc29yIiksIGYgJiYgYi53cmFwLmFkZENsYXNzKGYpOwogICAgICAgICAgICB2YXIgayA9IGIud0ggPSB2LmhlaWdodCgpLAogICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICBpZiAoYi5maXhlZENvbnRlbnRQb3MgJiYgYi5faGFzU2Nyb2xsQmFyKGspKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGIuX2dldFNjcm9sbGJhclNpemUoKTsKICAgICAgICAgICAgICAgIG8gJiYgKG4ubWFyZ2luUmlnaHQgPSBvKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGIuZml4ZWRDb250ZW50UG9zICYmIChiLmlzSUU3ID8gYSgiYm9keSwgaHRtbCIpLmNzcygib3ZlcmZsb3ciLCAiaGlkZGVuIikgOiBuLm92ZXJmbG93ID0gImhpZGRlbiIpOwogICAgICAgICAgICB2YXIgciA9IGIuc3QubWFpbkNsYXNzOwogICAgICAgICAgICByZXR1cm4gYi5pc0lFNyAmJiAociArPSAiIG1mcC1pZTciKSwgciAmJiBiLl9hZGRDbGFzc1RvTUZQKHIpLCBiLnVwZGF0ZUl0ZW1IVE1MKCksIHkoIkJ1aWxkQ29udHJvbHMiKSwgYSgiaHRtbCIpLmNzcyhuKSwgYi5iZ092ZXJsYXkuYWRkKGIud3JhcCkucHJlcGVuZFRvKGIuc3QucHJlcGVuZFRvIHx8IGEoZG9jdW1lbnQuYm9keSkpLCBiLl9sYXN0Rm9jdXNlZEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuY29udGVudCA/IChiLl9hZGRDbGFzc1RvTUZQKHEpLCBiLl9zZXRGb2N1cygpKSA6IGIuYmdPdmVybGF5LmFkZENsYXNzKHEpLCBkLm9uKCJmb2N1c2luIiArIHAsIGIuX29uRm9jdXNJbikKICAgICAgICAgICAgfSwgMTYpLCBiLmlzT3BlbiA9ICEwLCBiLnVwZGF0ZVNpemUoayksIHkobSksIGMKICAgICAgICB9LAogICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYi5pc09wZW4gJiYgKHkoaSksIGIuaXNPcGVuID0gITEsIGIuc3QucmVtb3ZhbERlbGF5ICYmICFiLmlzTG93SUUgJiYgYi5zdXBwb3J0c1RyYW5zaXRpb24gPyAoYi5fYWRkQ2xhc3NUb01GUChyKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuX2Nsb3NlKCkKICAgICAgICAgICAgfSwgYi5zdC5yZW1vdmFsRGVsYXkpKSA6IGIuX2Nsb3NlKCkpCiAgICAgICAgfSwKICAgICAgICBfY2xvc2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB5KGgpOwogICAgICAgICAgICB2YXIgYyA9IHIgKyAiICIgKyBxICsgIiAiOwogICAgICAgICAgICBpZiAoYi5iZ092ZXJsYXkuZGV0YWNoKCksIGIud3JhcC5kZXRhY2goKSwgYi5jb250YWluZXIuZW1wdHkoKSwgYi5zdC5tYWluQ2xhc3MgJiYgKGMgKz0gYi5zdC5tYWluQ2xhc3MgKyAiICIpLCBiLl9yZW1vdmVDbGFzc0Zyb21NRlAoYyksIGIuZml4ZWRDb250ZW50UG9zKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogIiIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBiLmlzSUU3ID8gYSgiYm9keSwgaHRtbCIpLmNzcygib3ZlcmZsb3ciLCAiIikgOiBlLm92ZXJmbG93ID0gIiIsIGEoImh0bWwiKS5jc3MoZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBkLm9mZigia2V5dXAiICsgcCArICIgZm9jdXNpbiIgKyBwKSwgYi5ldi5vZmYocCksIGIud3JhcC5hdHRyKCJjbGFzcyIsICJtZnAtd3JhcCIpLnJlbW92ZUF0dHIoInN0eWxlIiksIGIuYmdPdmVybGF5LmF0dHIoImNsYXNzIiwgIm1mcC1iZyIpLCBiLmNvbnRhaW5lci5hdHRyKCJjbGFzcyIsICJtZnAtY29udGFpbmVyIiksICFiLnN0LnNob3dDbG9zZUJ0biB8fCBiLnN0LmNsb3NlQnRuSW5zaWRlICYmIGIuY3VyclRlbXBsYXRlW2IuY3Vyckl0ZW0udHlwZV0gIT09ICEwIHx8IGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuICYmIGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuLmRldGFjaCgpLCBiLnN0LmF1dG9Gb2N1c0xhc3QgJiYgYi5fbGFzdEZvY3VzZWRFbCAmJiBhKGIuX2xhc3RGb2N1c2VkRWwpLmZvY3VzKCksIGIuY3Vyckl0ZW0gPSBudWxsLCBiLmNvbnRlbnQgPSBudWxsLCBiLmN1cnJUZW1wbGF0ZSA9IG51bGwsIGIucHJldkhlaWdodCA9IDAsIHkoaikKICAgICAgICB9LAogICAgICAgIHVwZGF0ZVNpemU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgaWYgKGIuaXNJT1MpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gd2luZG93LmlubmVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgZCA9IHdpbmRvdy5pbm5lckhlaWdodCAqIGM7CiAgICAgICAgICAgICAgICBiLndyYXAuY3NzKCJoZWlnaHQiLCBkKSwgYi53SCA9IGQKICAgICAgICAgICAgfSBlbHNlIGIud0ggPSBhIHx8IHYuaGVpZ2h0KCk7CiAgICAgICAgICAgIGIuZml4ZWRDb250ZW50UG9zIHx8IGIud3JhcC5jc3MoImhlaWdodCIsIGIud0gpLCB5KCJSZXNpemUiKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlSXRlbUhUTUw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYyA9IGIuaXRlbXNbYi5pbmRleF07CiAgICAgICAgICAgIGIuY29udGVudENvbnRhaW5lci5kZXRhY2goKSwgYi5jb250ZW50ICYmIGIuY29udGVudC5kZXRhY2goKSwgYy5wYXJzZWQgfHwgKGMgPSBiLnBhcnNlRWwoYi5pbmRleCkpOwogICAgICAgICAgICB2YXIgZCA9IGMudHlwZTsKICAgICAgICAgICAgaWYgKHkoIkJlZm9yZUNoYW5nZSIsIFtiLmN1cnJJdGVtID8gYi5jdXJySXRlbS50eXBlIDogIiIsIGRdKSwgYi5jdXJySXRlbSA9IGMsICFiLmN1cnJUZW1wbGF0ZVtkXSkgewogICAgICAgICAgICAgICAgdmFyIGYgPSBiLnN0W2RdID8gYi5zdFtkXS5tYXJrdXAgOiAhMTsKICAgICAgICAgICAgICAgIHkoIkZpcnN0TWFya3VwUGFyc2UiLCBmKSwgZiA/IGIuY3VyclRlbXBsYXRlW2RdID0gYShmKSA6IGIuY3VyclRlbXBsYXRlW2RdID0gITAKICAgICAgICAgICAgfQogICAgICAgICAgICBlICYmIGUgIT09IGMudHlwZSAmJiBiLmNvbnRhaW5lci5yZW1vdmVDbGFzcygibWZwLSIgKyBlICsgIi1ob2xkZXIiKTsKICAgICAgICAgICAgdmFyIGcgPSBiWyJnZXQiICsgZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGQuc2xpY2UoMSldKGMsIGIuY3VyclRlbXBsYXRlW2RdKTsKICAgICAgICAgICAgYi5hcHBlbmRDb250ZW50KGcsIGQpLCBjLnByZWxvYWRlZCA9ICEwLCB5KG4sIGMpLCBlID0gYy50eXBlLCBiLmNvbnRhaW5lci5wcmVwZW5kKGIuY29udGVudENvbnRhaW5lciksIHkoIkFmdGVyQ2hhbmdlIikKICAgICAgICB9LAogICAgICAgIGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgYi5jb250ZW50ID0gYSwgYSA/IGIuc3Quc2hvd0Nsb3NlQnRuICYmIGIuc3QuY2xvc2VCdG5JbnNpZGUgJiYgYi5jdXJyVGVtcGxhdGVbY10gPT09ICEwID8gYi5jb250ZW50LmZpbmQoIi5tZnAtY2xvc2UiKS5sZW5ndGggfHwgYi5jb250ZW50LmFwcGVuZCh6KCkpIDogYi5jb250ZW50ID0gYSA6IGIuY29udGVudCA9ICIiLCB5KGspLCBiLmNvbnRhaW5lci5hZGRDbGFzcygibWZwLSIgKyBjICsgIi1ob2xkZXIiKSwgYi5jb250ZW50Q29udGFpbmVyLmFwcGVuZChiLmNvbnRlbnQpCiAgICAgICAgfSwKICAgICAgICBwYXJzZUVsOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHZhciBkLCBlID0gYi5pdGVtc1tjXTsKICAgICAgICAgICAgaWYgKGUudGFnTmFtZSA/IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgZWw6IGEoZSkKICAgICAgICAgICAgICAgIH0gOiAoZCA9IGUudHlwZSwgZSA9IHsKICAgICAgICAgICAgICAgICAgICBkYXRhOiBlLAogICAgICAgICAgICAgICAgICAgIHNyYzogZS5zcmMKICAgICAgICAgICAgICAgIH0pLCBlLmVsKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBmID0gYi50eXBlcywgZyA9IDA7IGcgPCBmLmxlbmd0aDsgZysrKQogICAgICAgICAgICAgICAgICAgIGlmIChlLmVsLmhhc0NsYXNzKCJtZnAtIiArIGZbZ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmW2ddOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUuc3JjID0gZS5lbC5hdHRyKCJkYXRhLW1mcC1zcmMiKSwgZS5zcmMgfHwgKGUuc3JjID0gZS5lbC5hdHRyKCJocmVmIikpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUudHlwZSA9IGQgfHwgYi5zdC50eXBlIHx8ICJpbmxpbmUiLCBlLmluZGV4ID0gYywgZS5wYXJzZWQgPSAhMCwgYi5pdGVtc1tjXSA9IGUsIHkoIkVsZW1lbnRQYXJzZSIsIGUpLCBiLml0ZW1zW2NdCiAgICAgICAgfSwKICAgICAgICBhZGRHcm91cDogZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIGQubWZwRWwgPSB0aGlzLCBiLl9vcGVuQ2xpY2soZCwgYSwgYykKICAgICAgICAgICAgfTsKICAgICAgICAgICAgYyB8fCAoYyA9IHt9KTsKICAgICAgICAgICAgdmFyIGUgPSAiY2xpY2subWFnbmlmaWNQb3B1cCI7CiAgICAgICAgICAgIGMubWFpbkVsID0gYSwgYy5pdGVtcyA/IChjLmlzT2JqID0gITAsIGEub2ZmKGUpLm9uKGUsIGQpKSA6IChjLmlzT2JqID0gITEsIGMuZGVsZWdhdGUgPyBhLm9mZihlKS5vbihlLCBjLmRlbGVnYXRlLCBkKSA6IChjLml0ZW1zID0gYSwgYS5vZmYoZSkub24oZSwgZCkpKQogICAgICAgIH0sCiAgICAgICAgX29wZW5DbGljazogZnVuY3Rpb24oYywgZCwgZSkgewogICAgICAgICAgICB2YXIgZiA9IHZvaWQgMCAhPT0gZS5taWRDbGljayA/IGUubWlkQ2xpY2sgOiBhLm1hZ25pZmljUG9wdXAuZGVmYXVsdHMubWlkQ2xpY2s7CiAgICAgICAgICAgIGlmIChmIHx8ICEoMiA9PT0gYy53aGljaCB8fCBjLmN0cmxLZXkgfHwgYy5tZXRhS2V5IHx8IGMuYWx0S2V5IHx8IGMuc2hpZnRLZXkpKSB7CiAgICAgICAgICAgICAgICB2YXIgZyA9IHZvaWQgMCAhPT0gZS5kaXNhYmxlT24gPyBlLmRpc2FibGVPbiA6IGEubWFnbmlmaWNQb3B1cC5kZWZhdWx0cy5kaXNhYmxlT247CiAgICAgICAgICAgICAgICBpZiAoZykKICAgICAgICAgICAgICAgICAgICBpZiAoYS5pc0Z1bmN0aW9uKGcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZy5jYWxsKGIpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHYud2lkdGgoKSA8IGcpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIGMudHlwZSAmJiAoYy5wcmV2ZW50RGVmYXVsdCgpLCBiLmlzT3BlbiAmJiBjLnN0b3BQcm9wYWdhdGlvbigpKSwgZS5lbCA9IGEoYy5tZnBFbCksIGUuZGVsZWdhdGUgJiYgKGUuaXRlbXMgPSBkLmZpbmQoZS5kZWxlZ2F0ZSkpLCBiLm9wZW4oZSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihhLCBkKSB7CiAgICAgICAgICAgIGlmIChiLnByZWxvYWRlcikgewogICAgICAgICAgICAgICAgYyAhPT0gYSAmJiBiLmNvbnRhaW5lci5yZW1vdmVDbGFzcygibWZwLXMtIiArIGMpLCBkIHx8ICJsb2FkaW5nIiAhPT0gYSB8fCAoZCA9IGIuc3QudExvYWRpbmcpOwogICAgICAgICAgICAgICAgdmFyIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBhLAogICAgICAgICAgICAgICAgICAgIHRleHQ6IGQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB5KCJVcGRhdGVTdGF0dXMiLCBlKSwgYSA9IGUuc3RhdHVzLCBkID0gZS50ZXh0LCBiLnByZWxvYWRlci5odG1sKGQpLCBiLnByZWxvYWRlci5maW5kKCJhIikub24oImNsaWNrIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkKICAgICAgICAgICAgICAgIH0pLCBiLmNvbnRhaW5lci5hZGRDbGFzcygibWZwLXMtIiArIGEpLCBjID0gYQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfY2hlY2tJZkNsb3NlOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIGlmICghYShjKS5oYXNDbGFzcyhzKSkgewogICAgICAgICAgICAgICAgdmFyIGQgPSBiLnN0LmNsb3NlT25Db250ZW50Q2xpY2ssCiAgICAgICAgICAgICAgICAgICAgZSA9IGIuc3QuY2xvc2VPbkJnQ2xpY2s7CiAgICAgICAgICAgICAgICBpZiAoZCAmJiBlKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAoIWIuY29udGVudCB8fCBhKGMpLmhhc0NsYXNzKCJtZnAtY2xvc2UiKSB8fCBiLnByZWxvYWRlciAmJiBjID09PSBiLnByZWxvYWRlclswXSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgaWYgKGMgPT09IGIuY29udGVudFswXSB8fCBhLmNvbnRhaW5zKGIuY29udGVudFswXSwgYykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZCkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUgJiYgYS5jb250YWlucyhkb2N1bWVudCwgYykpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfYWRkQ2xhc3NUb01GUDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICBiLmJnT3ZlcmxheS5hZGRDbGFzcyhhKSwgYi53cmFwLmFkZENsYXNzKGEpCiAgICAgICAgfSwKICAgICAgICBfcmVtb3ZlQ2xhc3NGcm9tTUZQOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHRoaXMuYmdPdmVybGF5LnJlbW92ZUNsYXNzKGEpLCBiLndyYXAucmVtb3ZlQ2xhc3MoYSkKICAgICAgICB9LAogICAgICAgIF9oYXNTY3JvbGxCYXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIChiLmlzSUU3ID8gZC5oZWlnaHQoKSA6IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KSA+IChhIHx8IHYuaGVpZ2h0KCkpCiAgICAgICAgfSwKICAgICAgICBfc2V0Rm9jdXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAoYi5zdC5mb2N1cyA/IGIuY29udGVudC5maW5kKGIuc3QuZm9jdXMpLmVxKDApIDogYi53cmFwKS5mb2N1cygpCiAgICAgICAgfSwKICAgICAgICBfb25Gb2N1c0luOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHJldHVybiBjLnRhcmdldCA9PT0gYi53cmFwWzBdIHx8IGEuY29udGFpbnMoYi53cmFwWzBdLCBjLnRhcmdldCkgPyB2b2lkIDAgOiAoYi5fc2V0Rm9jdXMoKSwgITEpCiAgICAgICAgfSwKICAgICAgICBfcGFyc2VNYXJrdXA6IGZ1bmN0aW9uKGIsIGMsIGQpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIGQuZGF0YSAmJiAoYyA9IGEuZXh0ZW5kKGQuZGF0YSwgYykpLCB5KGwsIFtiLCBjLCBkXSksIGEuZWFjaChjLCBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBkIHx8IGQgPT09ICExKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAoZSA9IGMuc3BsaXQoIl8iKSwgZS5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBiLmZpbmQocCArICItIiArIGVbMF0pOwogICAgICAgICAgICAgICAgICAgIGlmIChmLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBlWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZVdpdGgiID09PSBnID8gZlswXSAhPT0gZFswXSAmJiBmLnJlcGxhY2VXaXRoKGQpIDogImltZyIgPT09IGcgPyBmLmlzKCJpbWciKSA/IGYuYXR0cigic3JjIiwgZCkgOiBmLnJlcGxhY2VXaXRoKGEoIjxpbWc+IikuYXR0cigic3JjIiwgZCkuYXR0cigiY2xhc3MiLCBmLmF0dHIoImNsYXNzIikpKSA6IGYuYXR0cihlWzFdLCBkKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBiLmZpbmQocCArICItIiArIGMpLmh0bWwoZCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9nZXRTY3JvbGxiYXJTaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYi5zY3JvbGxiYXJTaXplKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgICAgYS5zdHlsZS5jc3NUZXh0ID0gIndpZHRoOiA5OXB4OyBoZWlnaHQ6IDk5cHg7IG92ZXJmbG93OiBzY3JvbGw7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtOTk5OXB4OyIsIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksIGIuc2Nyb2xsYmFyU2l6ZSA9IGEub2Zmc2V0V2lkdGggLSBhLmNsaWVudFdpZHRoLCBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGIuc2Nyb2xsYmFyU2l6ZQogICAgICAgIH0KICAgIH0sIGEubWFnbmlmaWNQb3B1cCA9IHsKICAgICAgICBpbnN0YW5jZTogbnVsbCwKICAgICAgICBwcm90bzogdC5wcm90b3R5cGUsCiAgICAgICAgbW9kdWxlczogW10sCiAgICAgICAgb3BlbjogZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICByZXR1cm4gQSgpLCBiID0gYiA/IGEuZXh0ZW5kKCEwLCB7fSwgYikgOiB7fSwgYi5pc09iaiA9ICEwLCBiLmluZGV4ID0gYyB8fCAwLCB0aGlzLmluc3RhbmNlLm9wZW4oYikKICAgICAgICB9LAogICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGEubWFnbmlmaWNQb3B1cC5pbnN0YW5jZSAmJiBhLm1hZ25pZmljUG9wdXAuaW5zdGFuY2UuY2xvc2UoKQogICAgICAgIH0sCiAgICAgICAgcmVnaXN0ZXJNb2R1bGU6IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgYy5vcHRpb25zICYmIChhLm1hZ25pZmljUG9wdXAuZGVmYXVsdHNbYl0gPSBjLm9wdGlvbnMpLCBhLmV4dGVuZCh0aGlzLnByb3RvLCBjLnByb3RvKSwgdGhpcy5tb2R1bGVzLnB1c2goYikKICAgICAgICB9LAogICAgICAgIGRlZmF1bHRzOiB7CiAgICAgICAgICAgIGRpc2FibGVPbjogMCwKICAgICAgICAgICAga2V5OiBudWxsLAogICAgICAgICAgICBtaWRDbGljazogITEsCiAgICAgICAgICAgIG1haW5DbGFzczogIiIsCiAgICAgICAgICAgIHByZWxvYWRlcjogITAsCiAgICAgICAgICAgIGZvY3VzOiAiIiwKICAgICAgICAgICAgY2xvc2VPbkNvbnRlbnRDbGljazogITEsCiAgICAgICAgICAgIGNsb3NlT25CZ0NsaWNrOiAhMCwKICAgICAgICAgICAgY2xvc2VCdG5JbnNpZGU6ICEwLAogICAgICAgICAgICBzaG93Q2xvc2VCdG46ICEwLAogICAgICAgICAgICBlbmFibGVFc2NhcGVLZXk6ICEwLAogICAgICAgICAgICBtb2RhbDogITEsCiAgICAgICAgICAgIGFsaWduVG9wOiAhMSwKICAgICAgICAgICAgcmVtb3ZhbERlbGF5OiAwLAogICAgICAgICAgICBwcmVwZW5kVG86IG51bGwsCiAgICAgICAgICAgIGZpeGVkQ29udGVudFBvczogImF1dG8iLAogICAgICAgICAgICBmaXhlZEJnUG9zOiAiYXV0byIsCiAgICAgICAgICAgIG92ZXJmbG93WTogImF1dG8iLAogICAgICAgICAgICBjbG9zZU1hcmt1cDogJzxidXR0b24gdGl0bGU9IiV0aXRsZSUiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1mcC1jbG9zZSI+JiMyMTU7PC9idXR0b24+JywKICAgICAgICAgICAgdENsb3NlOiAiQ2xvc2UgKEVzYykiLAogICAgICAgICAgICB0TG9hZGluZzogIkxvYWRpbmcuLi4iLAogICAgICAgICAgICBhdXRvRm9jdXNMYXN0OiAhMAogICAgICAgIH0KICAgIH0sIGEuZm4ubWFnbmlmaWNQb3B1cCA9IGZ1bmN0aW9uKGMpIHsKICAgICAgICBBKCk7CiAgICAgICAgdmFyIGQgPSBhKHRoaXMpOwogICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgYykKICAgICAgICAgICAgaWYgKCJvcGVuIiA9PT0gYykgewogICAgICAgICAgICAgICAgdmFyIGUsIGYgPSB1ID8gZC5kYXRhKCJtYWduaWZpY1BvcHVwIikgOiBkWzBdLm1hZ25pZmljUG9wdXAsCiAgICAgICAgICAgICAgICAgICAgZyA9IHBhcnNlSW50KGFyZ3VtZW50c1sxXSwgMTApIHx8IDA7CiAgICAgICAgICAgICAgICBmLml0ZW1zID8gZSA9IGYuaXRlbXNbZ10gOiAoZSA9IGQsIGYuZGVsZWdhdGUgJiYgKGUgPSBlLmZpbmQoZi5kZWxlZ2F0ZSkpLCBlID0gZS5lcShnKSksIGIuX29wZW5DbGljayh7CiAgICAgICAgICAgICAgICAgICAgbWZwRWw6IGUKICAgICAgICAgICAgICAgIH0sIGQsIGYpCiAgICAgICAgICAgIH0gZWxzZSBiLmlzT3BlbiAmJiBiW2NdLmFwcGx5KGIsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwogICAgICAgIGVsc2UgYyA9IGEuZXh0ZW5kKCEwLCB7fSwgYyksIHUgPyBkLmRhdGEoIm1hZ25pZmljUG9wdXAiLCBjKSA6IGRbMF0ubWFnbmlmaWNQb3B1cCA9IGMsIGIuYWRkR3JvdXAoZCwgYyk7CiAgICAgICAgcmV0dXJuIGQKICAgIH07CiAgICB2YXIgQywgRCwgRSwgRiA9ICJpbmxpbmUiLAogICAgICAgIEcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgRSAmJiAoRC5hZnRlcihFLmFkZENsYXNzKEMpKS5kZXRhY2goKSwgRSA9IG51bGwpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShGLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBoaWRkZW5DbGFzczogImhpZGUiLAogICAgICAgICAgICBtYXJrdXA6ICIiLAogICAgICAgICAgICB0Tm90Rm91bmQ6ICJDb250ZW50IG5vdCBmb3VuZCIKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRJbmxpbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi50eXBlcy5wdXNoKEYpLCB3KGggKyAiLiIgKyBGLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBHKCkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldElubGluZTogZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICAgICAgaWYgKEcoKSwgYy5zcmMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGIuc3QuaW5saW5lLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gYShjLnNyYyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZlswXS5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICBnICYmIGcudGFnTmFtZSAmJiAoRCB8fCAoQyA9IGUuaGlkZGVuQ2xhc3MsIEQgPSB4KEMpLCBDID0gIm1mcC0iICsgQyksIEUgPSBmLmFmdGVyKEQpLmRldGFjaCgpLnJlbW92ZUNsYXNzKEMpKSwgYi51cGRhdGVTdGF0dXMoInJlYWR5IikKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgZS50Tm90Rm91bmQpLCBmID0gYSgiPGRpdj4iKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5pbmxpbmVFbGVtZW50ID0gZiwgZgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpLCBiLl9wYXJzZU1hcmt1cChkLCB7fSwgYyksIGQKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEgsIEkgPSAiYWpheCIsCiAgICAgICAgSiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBIICYmIGEoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoSCkKICAgICAgICB9LAogICAgICAgIEsgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgSigpLCBiLnJlcSAmJiBiLnJlcS5hYm9ydCgpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShJLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBzZXR0aW5nczogbnVsbCwKICAgICAgICAgICAgY3Vyc29yOiAibWZwLWFqYXgtY3VyIiwKICAgICAgICAgICAgdEVycm9yOiAnPGEgaHJlZj0iJXVybCUiPlRoZSBjb250ZW50PC9hPiBjb3VsZCBub3QgYmUgbG9hZGVkLicKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRBamF4OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIudHlwZXMucHVzaChJKSwgSCA9IGIuc3QuYWpheC5jdXJzb3IsIHcoaCArICIuIiArIEksIEspLCB3KCJCZWZvcmVDaGFuZ2UuIiArIEksIEspCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEFqYXg6IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgIEggJiYgYShkb2N1bWVudC5ib2R5KS5hZGRDbGFzcyhIKSwgYi51cGRhdGVTdGF0dXMoImxvYWRpbmciKTsKICAgICAgICAgICAgICAgIHZhciBkID0gYS5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIHVybDogYy5zcmMsCiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZCwgZSwgZikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHI6IGYKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgeSgiUGFyc2VBamF4IiwgZyksIGIuYXBwZW5kQ29udGVudChhKGcuZGF0YSksIEkpLCBjLmZpbmlzaGVkID0gITAsIEooKSwgYi5fc2V0Rm9jdXMoKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIud3JhcC5hZGRDbGFzcyhxKQogICAgICAgICAgICAgICAgICAgICAgICB9LCAxNiksIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpLCB5KCJBamF4Q29udGVudEFkZGVkIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgSigpLCBjLmZpbmlzaGVkID0gYy5sb2FkRXJyb3IgPSAhMCwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgYi5zdC5hamF4LnRFcnJvci5yZXBsYWNlKCIldXJsJSIsIGMuc3JjKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBiLnN0LmFqYXguc2V0dGluZ3MpOwogICAgICAgICAgICAgICAgcmV0dXJuIGIucmVxID0gYS5hamF4KGQpLCAiIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgTCwgTSA9IGZ1bmN0aW9uKGMpIHsKICAgICAgICBpZiAoYy5kYXRhICYmIHZvaWQgMCAhPT0gYy5kYXRhLnRpdGxlKSByZXR1cm4gYy5kYXRhLnRpdGxlOwogICAgICAgIHZhciBkID0gYi5zdC5pbWFnZS50aXRsZVNyYzsKICAgICAgICBpZiAoZCkgewogICAgICAgICAgICBpZiAoYS5pc0Z1bmN0aW9uKGQpKSByZXR1cm4gZC5jYWxsKGIsIGMpOwogICAgICAgICAgICBpZiAoYy5lbCkgcmV0dXJuIGMuZWwuYXR0cihkKSB8fCAiIgogICAgICAgIH0KICAgICAgICByZXR1cm4gIiIKICAgIH07CiAgICBhLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoImltYWdlIiwgewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgbWFya3VwOiAnPGRpdiBjbGFzcz0ibWZwLWZpZ3VyZSI+PGRpdiBjbGFzcz0ibWZwLWNsb3NlIj48L2Rpdj48ZmlndXJlPjxkaXYgY2xhc3M9Im1mcC1pbWciPjwvZGl2PjxmaWdjYXB0aW9uPjxkaXYgY2xhc3M9Im1mcC1ib3R0b20tYmFyIj48ZGl2IGNsYXNzPSJtZnAtdGl0bGUiPjwvZGl2PjxkaXYgY2xhc3M9Im1mcC1jb3VudGVyIj48L2Rpdj48L2Rpdj48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PC9kaXY+JywKICAgICAgICAgICAgY3Vyc29yOiAibWZwLXpvb20tb3V0LWN1ciIsCiAgICAgICAgICAgIHRpdGxlU3JjOiAidGl0bGUiLAogICAgICAgICAgICB2ZXJ0aWNhbEZpdDogITAsCiAgICAgICAgICAgIHRFcnJvcjogJzxhIGhyZWY9IiV1cmwlIj5UaGUgaW1hZ2U8L2E+IGNvdWxkIG5vdCBiZSBsb2FkZWQuJwogICAgICAgIH0sCiAgICAgICAgcHJvdG86IHsKICAgICAgICAgICAgaW5pdEltYWdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gYi5zdC5pbWFnZSwKICAgICAgICAgICAgICAgICAgICBkID0gIi5pbWFnZSI7CiAgICAgICAgICAgICAgICBiLnR5cGVzLnB1c2goImltYWdlIiksIHcobSArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICJpbWFnZSIgPT09IGIuY3Vyckl0ZW0udHlwZSAmJiBjLmN1cnNvciAmJiBhKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKGMuY3Vyc29yKQogICAgICAgICAgICAgICAgfSksIHcoaCArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGMuY3Vyc29yICYmIGEoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoYy5jdXJzb3IpLCB2Lm9mZigicmVzaXplIiArIHApCiAgICAgICAgICAgICAgICB9KSwgdygiUmVzaXplIiArIGQsIGIucmVzaXplSW1hZ2UpLCBiLmlzTG93SUUgJiYgdygiQWZ0ZXJDaGFuZ2UiLCBiLnJlc2l6ZUltYWdlKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZXNpemVJbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGIuY3Vyckl0ZW07CiAgICAgICAgICAgICAgICBpZiAoYSAmJiBhLmltZyAmJiBiLnN0LmltYWdlLnZlcnRpY2FsRml0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAwOwogICAgICAgICAgICAgICAgICAgIGIuaXNMb3dJRSAmJiAoYyA9IHBhcnNlSW50KGEuaW1nLmNzcygicGFkZGluZy10b3AiKSwgMTApICsgcGFyc2VJbnQoYS5pbWcuY3NzKCJwYWRkaW5nLWJvdHRvbSIpLCAxMCkpLCBhLmltZy5jc3MoIm1heC1oZWlnaHQiLCBiLndIIC0gYykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uSW1hZ2VIYXNTaXplOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICBhLmltZyAmJiAoYS5oYXNTaXplID0gITAsIEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgYS5pc0NoZWNraW5nSW1nU2l6ZSA9ICExLCB5KCJJbWFnZUhhc1NpemUiLCBhKSwgYS5pbWdIaWRkZW4gJiYgKGIuY29udGVudCAmJiBiLmNvbnRlbnQucmVtb3ZlQ2xhc3MoIm1mcC1sb2FkaW5nIiksIGEuaW1nSGlkZGVuID0gITEpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBmaW5kSW1hZ2VTaXplOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgZCA9IGEuaW1nWzBdLAogICAgICAgICAgICAgICAgICAgIGUgPSBmdW5jdGlvbihmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgTCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQubmF0dXJhbFdpZHRoID4gMCA/IHZvaWQgYi5fb25JbWFnZUhhc1NpemUoYSkgOiAoYyA+IDIwMCAmJiBjbGVhckludGVydmFsKEwpLCBjKyssIHZvaWQoMyA9PT0gYyA/IGUoMTApIDogNDAgPT09IGMgPyBlKDUwKSA6IDEwMCA9PT0gYyAmJiBlKDUwMCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBmKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBlKDEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEltYWdlOiBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IDAsCiAgICAgICAgICAgICAgICAgICAgZiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjICYmIChjLmltZ1swXS5jb21wbGV0ZSA/IChjLmltZy5vZmYoIi5tZnBsb2FkZXIiKSwgYyA9PT0gYi5jdXJySXRlbSAmJiAoYi5fb25JbWFnZUhhc1NpemUoYyksIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpKSwgYy5oYXNTaXplID0gITAsIGMubG9hZGVkID0gITAsIHkoIkltYWdlTG9hZENvbXBsZXRlIikpIDogKGUrKywgMjAwID4gZSA/IHNldFRpbWVvdXQoZiwgMTAwKSA6IGcoKSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMgJiYgKGMuaW1nLm9mZigiLm1mcGxvYWRlciIpLCBjID09PSBiLmN1cnJJdGVtICYmIChiLl9vbkltYWdlSGFzU2l6ZShjKSwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgaC50RXJyb3IucmVwbGFjZSgiJXVybCUiLCBjLnNyYykpKSwgYy5oYXNTaXplID0gITAsIGMubG9hZGVkID0gITAsIGMubG9hZEVycm9yID0gITApCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoID0gYi5zdC5pbWFnZSwKICAgICAgICAgICAgICAgICAgICBpID0gZC5maW5kKCIubWZwLWltZyIpOwogICAgICAgICAgICAgICAgaWYgKGkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGogPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgICAgICAgICAgICAgICAgICBqLmNsYXNzTmFtZSA9ICJtZnAtaW1nIiwgYy5lbCAmJiBjLmVsLmZpbmQoImltZyIpLmxlbmd0aCAmJiAoai5hbHQgPSBjLmVsLmZpbmQoImltZyIpLmF0dHIoImFsdCIpKSwgYy5pbWcgPSBhKGopLm9uKCJsb2FkLm1mcGxvYWRlciIsIGYpLm9uKCJlcnJvci5tZnBsb2FkZXIiLCBnKSwgai5zcmMgPSBjLnNyYywgaS5pcygiaW1nIikgJiYgKGMuaW1nID0gYy5pbWcuY2xvbmUoKSksIGogPSBjLmltZ1swXSwgai5uYXR1cmFsV2lkdGggPiAwID8gYy5oYXNTaXplID0gITAgOiBqLndpZHRoIHx8IChjLmhhc1NpemUgPSAhMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBiLl9wYXJzZU1hcmt1cChkLCB7CiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IE0oYyksCiAgICAgICAgICAgICAgICAgICAgaW1nX3JlcGxhY2VXaXRoOiBjLmltZwogICAgICAgICAgICAgICAgfSwgYyksIGIucmVzaXplSW1hZ2UoKSwgYy5oYXNTaXplID8gKEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgYy5sb2FkRXJyb3IgPyAoZC5hZGRDbGFzcygibWZwLWxvYWRpbmciKSwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgaC50RXJyb3IucmVwbGFjZSgiJXVybCUiLCBjLnNyYykpKSA6IChkLnJlbW92ZUNsYXNzKCJtZnAtbG9hZGluZyIpLCBiLnVwZGF0ZVN0YXR1cygicmVhZHkiKSksIGQpIDogKGIudXBkYXRlU3RhdHVzKCJsb2FkaW5nIiksIGMubG9hZGluZyA9ICEwLCBjLmhhc1NpemUgfHwgKGMuaW1nSGlkZGVuID0gITAsIGQuYWRkQ2xhc3MoIm1mcC1sb2FkaW5nIiksIGIuZmluZEltYWdlU2l6ZShjKSksIGQpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBOLCBPID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gTiAmJiAoTiA9IHZvaWQgMCAhPT0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpLnN0eWxlLk1velRyYW5zZm9ybSksIE4KICAgIH07CiAgICBhLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoInpvb20iLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgZWFzaW5nOiAiZWFzZS1pbi1vdXQiLAogICAgICAgICAgICBkdXJhdGlvbjogMzAwLAogICAgICAgICAgICBvcGVuZXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLmlzKCJpbWciKSA/IGEgOiBhLmZpbmQoImltZyIpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRab29tOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhLCBjID0gYi5zdC56b29tLAogICAgICAgICAgICAgICAgICAgIGQgPSAiLnpvb20iOwogICAgICAgICAgICAgICAgaWYgKGMuZW5hYmxlZCAmJiBiLnN1cHBvcnRzVHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBmLCBnID0gYy5kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5jbG9uZSgpLnJlbW92ZUF0dHIoInN0eWxlIikucmVtb3ZlQXR0cigiY2xhc3MiKS5hZGRDbGFzcygibWZwLWFuaW1hdGVkLWltYWdlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9ICJhbGwgIiArIGMuZHVyYXRpb24gLyAxZTMgKyAicyAiICsgYy5lYXNpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJmaXhlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IjogImhpZGRlbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAidHJhbnNpdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsiLXdlYmtpdC0iICsgZl0gPSBlWyItbW96LSIgKyBmXSA9IGVbIi1vLSIgKyBmXSA9IGVbZl0gPSBkLCBiLmNzcyhlKSwgYgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmNvbnRlbnQuY3NzKCJ2aXNpYmlsaXR5IiwgInZpc2libGUiKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHcoIkJ1aWxkQ29udHJvbHMiICsgZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLl9hbGxvd1pvb20oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChlKSwgYi5jb250ZW50LmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKSwgYSA9IGIuX2dldEl0ZW1Ub1pvb20oKSwgIWEpIHJldHVybiB2b2lkIGsoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBqKGEpLCBmLmNzcyhiLl9nZXRPZmZzZXQoKSksIGIud3JhcC5hcHBlbmQoZiksIGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYuY3NzKGIuX2dldE9mZnNldCghMCkpLCBlID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaygpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5yZW1vdmUoKSwgYSA9IGYgPSBudWxsLCB5KCJab29tQW5pbWF0aW9uRW5kZWQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdyhpICsgZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLl9hbGxvd1pvb20oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChlKSwgYi5zdC5yZW1vdmFsRGVsYXkgPSBnLCAhYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYi5fZ2V0SXRlbVRvWm9vbSgpLCAhYSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBqKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmNzcyhiLl9nZXRPZmZzZXQoITApKSwgYi53cmFwLmFwcGVuZChmKSwgYi5jb250ZW50LmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmNzcyhiLl9nZXRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDE2KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIHcoaCArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBiLl9hbGxvd1pvb20oKSAmJiAoaygpLCBmICYmIGYucmVtb3ZlKCksIGEgPSBudWxsKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9hbGxvd1pvb206IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJpbWFnZSIgPT09IGIuY3Vyckl0ZW0udHlwZQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0SXRlbVRvWm9vbTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYi5jdXJySXRlbS5oYXNTaXplID8gYi5jdXJySXRlbS5pbWcgOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0T2Zmc2V0OiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICB2YXIgZDsKICAgICAgICAgICAgICAgIGQgPSBjID8gYi5jdXJySXRlbS5pbWcgOiBiLnN0Lnpvb20ub3BlbmVyKGIuY3Vyckl0ZW0uZWwgfHwgYi5jdXJySXRlbSk7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGQub2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAgZiA9IHBhcnNlSW50KGQuY3NzKCJwYWRkaW5nLXRvcCIpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgZyA9IHBhcnNlSW50KGQuY3NzKCJwYWRkaW5nLWJvdHRvbSIpLCAxMCk7CiAgICAgICAgICAgICAgICBlLnRvcCAtPSBhKHdpbmRvdykuc2Nyb2xsVG9wKCkgLSBmOwogICAgICAgICAgICAgICAgdmFyIGggPSB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGQud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICh1ID8gZC5pbm5lckhlaWdodCgpIDogZFswXS5vZmZzZXRIZWlnaHQpIC0gZyAtIGYKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gTygpID8gaFsiLW1vei10cmFuc2Zvcm0iXSA9IGgudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgZS5sZWZ0ICsgInB4LCIgKyBlLnRvcCArICJweCkiIDogKGgubGVmdCA9IGUubGVmdCwgaC50b3AgPSBlLnRvcCksIGgKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIFAgPSAiaWZyYW1lIiwKICAgICAgICBRID0gIi8vYWJvdXQ6YmxhbmsiLAogICAgICAgIFIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGlmIChiLmN1cnJUZW1wbGF0ZVtQXSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBiLmN1cnJUZW1wbGF0ZVtQXS5maW5kKCJpZnJhbWUiKTsKICAgICAgICAgICAgICAgIGMubGVuZ3RoICYmIChhIHx8IChjWzBdLnNyYyA9IFEpLCBiLmlzSUU4ICYmIGMuY3NzKCJkaXNwbGF5IiwgYSA/ICJibG9jayIgOiAibm9uZSIpKQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShQLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBtYXJrdXA6ICc8ZGl2IGNsYXNzPSJtZnAtaWZyYW1lLXNjYWxlciI+PGRpdiBjbGFzcz0ibWZwLWNsb3NlIj48L2Rpdj48aWZyYW1lIGNsYXNzPSJtZnAtaWZyYW1lIiBzcmM9Ii8vYWJvdXQ6YmxhbmsiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+PC9kaXY+JywKICAgICAgICAgICAgc3JjQWN0aW9uOiAiaWZyYW1lX3NyYyIsCiAgICAgICAgICAgIHBhdHRlcm5zOiB7CiAgICAgICAgICAgICAgICB5b3V0dWJlOiB7CiAgICAgICAgICAgICAgICAgICAgaW5kZXg6ICJ5b3V0dWJlLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgaWQ6ICJ2PSIsCiAgICAgICAgICAgICAgICAgICAgc3JjOiAiLy93d3cueW91dHViZS5jb20vZW1iZWQvJWlkJT9hdXRvcGxheT0xIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHZpbWVvOiB7CiAgICAgICAgICAgICAgICAgICAgaW5kZXg6ICJ2aW1lby5jb20vIiwKICAgICAgICAgICAgICAgICAgICBpZDogIi8iLAogICAgICAgICAgICAgICAgICAgIHNyYzogIi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8laWQlP2F1dG9wbGF5PTEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ21hcHM6IHsKICAgICAgICAgICAgICAgICAgICBpbmRleDogIi8vbWFwcy5nb29nbGUuIiwKICAgICAgICAgICAgICAgICAgICBzcmM6ICIlaWQlJm91dHB1dD1lbWJlZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcHJvdG86IHsKICAgICAgICAgICAgaW5pdElmcmFtZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBiLnR5cGVzLnB1c2goUCksIHcoIkJlZm9yZUNoYW5nZSIsIGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICBiICE9PSBjICYmIChiID09PSBQID8gUigpIDogYyA9PT0gUCAmJiBSKCEwKSkKICAgICAgICAgICAgICAgIH0pLCB3KGggKyAiLiIgKyBQLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBSKCkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldElmcmFtZTogZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBjLnNyYywKICAgICAgICAgICAgICAgICAgICBmID0gYi5zdC5pZnJhbWU7CiAgICAgICAgICAgICAgICBhLmVhY2goZi5wYXR0ZXJucywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5kZXhPZih0aGlzLmluZGV4KSA+IC0xID8gKHRoaXMuaWQgJiYgKGUgPSAic3RyaW5nIiA9PSB0eXBlb2YgdGhpcy5pZCA/IGUuc3Vic3RyKGUubGFzdEluZGV4T2YodGhpcy5pZCkgKyB0aGlzLmlkLmxlbmd0aCwgZS5sZW5ndGgpIDogdGhpcy5pZC5jYWxsKHRoaXMsIGUpKSwgZSA9IHRoaXMuc3JjLnJlcGxhY2UoIiVpZCUiLCBlKSwgITEpIDogdm9pZCAwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBnID0ge307CiAgICAgICAgICAgICAgICByZXR1cm4gZi5zcmNBY3Rpb24gJiYgKGdbZi5zcmNBY3Rpb25dID0gZSksIGIuX3BhcnNlTWFya3VwKGQsIGcsIGMpLCBiLnVwZGF0ZVN0YXR1cygicmVhZHkiKSwgZAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgUyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGMgPSBiLml0ZW1zLmxlbmd0aDsKICAgICAgICAgICAgcmV0dXJuIGEgPiBjIC0gMSA/IGEgLSBjIDogMCA+IGEgPyBjICsgYSA6IGEKICAgICAgICB9LAogICAgICAgIFQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHJldHVybiBhLnJlcGxhY2UoLyVjdXJyJS9naSwgYiArIDEpLnJlcGxhY2UoLyV0b3RhbCUvZ2ksIGMpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZSgiZ2FsbGVyeSIsIHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICBhcnJvd01hcmt1cDogJzxidXR0b24gdGl0bGU9IiV0aXRsZSUiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1mcC1hcnJvdyBtZnAtYXJyb3ctJWRpciUiPjwvYnV0dG9uPicsCiAgICAgICAgICAgIHByZWxvYWQ6IFswLCAyXSwKICAgICAgICAgICAgbmF2aWdhdGVCeUltZ0NsaWNrOiAhMCwKICAgICAgICAgICAgYXJyb3dzOiAhMCwKICAgICAgICAgICAgdFByZXY6ICJQcmV2aW91cyAoTGVmdCBhcnJvdyBrZXkpIiwKICAgICAgICAgICAgdE5leHQ6ICJOZXh0IChSaWdodCBhcnJvdyBrZXkpIiwKICAgICAgICAgICAgdENvdW50ZXI6ICIlY3VyciUgb2YgJXRvdGFsJSIKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRHYWxsZXJ5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gYi5zdC5nYWxsZXJ5LAogICAgICAgICAgICAgICAgICAgIGUgPSAiLm1mcC1nYWxsZXJ5IjsKICAgICAgICAgICAgICAgIHJldHVybiBiLmRpcmVjdGlvbiA9ICEwLCBjICYmIGMuZW5hYmxlZCA/IChmICs9ICIgbWZwLWdhbGxlcnkiLCB3KG0gKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjLm5hdmlnYXRlQnlJbWdDbGljayAmJiBiLndyYXAub24oImNsaWNrIiArIGUsICIubWZwLWltZyIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5pdGVtcy5sZW5ndGggPiAxID8gKGIubmV4dCgpLCAhMSkgOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICB9KSwgZC5vbigia2V5ZG93biIgKyBlLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIDM3ID09PSBhLmtleUNvZGUgPyBiLnByZXYoKSA6IDM5ID09PSBhLmtleUNvZGUgJiYgYi5uZXh0KCkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSksIHcoIlVwZGF0ZVN0YXR1cyIgKyBlLCBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgYy50ZXh0ICYmIChjLnRleHQgPSBUKGMudGV4dCwgYi5jdXJySXRlbS5pbmRleCwgYi5pdGVtcy5sZW5ndGgpKQogICAgICAgICAgICAgICAgfSksIHcobCArIGUsIGZ1bmN0aW9uKGEsIGQsIGUsIGYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGIuaXRlbXMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGUuY291bnRlciA9IGcgPiAxID8gVChjLnRDb3VudGVyLCBmLmluZGV4LCBnKSA6ICIiCiAgICAgICAgICAgICAgICB9KSwgdygiQnVpbGRDb250cm9scyIgKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYi5pdGVtcy5sZW5ndGggPiAxICYmIGMuYXJyb3dzICYmICFiLmFycm93TGVmdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGMuYXJyb3dNYXJrdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYi5hcnJvd0xlZnQgPSBhKGQucmVwbGFjZSgvJXRpdGxlJS9naSwgYy50UHJldikucmVwbGFjZSgvJWRpciUvZ2ksICJsZWZ0IikpLmFkZENsYXNzKHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGIuYXJyb3dSaWdodCA9IGEoZC5yZXBsYWNlKC8ldGl0bGUlL2dpLCBjLnROZXh0KS5yZXBsYWNlKC8lZGlyJS9naSwgInJpZ2h0IikpLmFkZENsYXNzKHMpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5wcmV2KCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGYuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLm5leHQoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5jb250YWluZXIuYXBwZW5kKGUuYWRkKGYpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB3KG4gKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBiLl9wcmVsb2FkVGltZW91dCAmJiBjbGVhclRpbWVvdXQoYi5fcHJlbG9hZFRpbWVvdXQpLCBiLl9wcmVsb2FkVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIucHJlbG9hZE5lYXJieUltYWdlcygpLCBiLl9wcmVsb2FkVGltZW91dCA9IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCAxNikKICAgICAgICAgICAgICAgIH0pLCB2b2lkIHcoaCArIGUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGQub2ZmKGUpLCBiLndyYXAub2ZmKCJjbGljayIgKyBlKSwgYi5hcnJvd1JpZ2h0ID0gYi5hcnJvd0xlZnQgPSBudWxsCiAgICAgICAgICAgICAgICB9KSkgOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuZGlyZWN0aW9uID0gITAsIGIuaW5kZXggPSBTKGIuaW5kZXggKyAxKSwgYi51cGRhdGVJdGVtSFRNTCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHByZXY6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi5kaXJlY3Rpb24gPSAhMSwgYi5pbmRleCA9IFMoYi5pbmRleCAtIDEpLCBiLnVwZGF0ZUl0ZW1IVE1MKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ29UbzogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgYi5kaXJlY3Rpb24gPSBhID49IGIuaW5kZXgsIGIuaW5kZXggPSBhLCBiLnVwZGF0ZUl0ZW1IVE1MKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJlbG9hZE5lYXJieUltYWdlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSwgYyA9IGIuc3QuZ2FsbGVyeS5wcmVsb2FkLAogICAgICAgICAgICAgICAgICAgIGQgPSBNYXRoLm1pbihjWzBdLCBiLml0ZW1zLmxlbmd0aCksCiAgICAgICAgICAgICAgICAgICAgZSA9IE1hdGgubWluKGNbMV0sIGIuaXRlbXMubGVuZ3RoKTsKICAgICAgICAgICAgICAgIGZvciAoYSA9IDE7IGEgPD0gKGIuZGlyZWN0aW9uID8gZSA6IGQpOyBhKyspIGIuX3ByZWxvYWRJdGVtKGIuaW5kZXggKyBhKTsKICAgICAgICAgICAgICAgIGZvciAoYSA9IDE7IGEgPD0gKGIuZGlyZWN0aW9uID8gZCA6IGUpOyBhKyspIGIuX3ByZWxvYWRJdGVtKGIuaW5kZXggLSBhKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcHJlbG9hZEl0ZW06IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgIGlmIChjID0gUyhjKSwgIWIuaXRlbXNbY10ucHJlbG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBiLml0ZW1zW2NdOwogICAgICAgICAgICAgICAgICAgIGQucGFyc2VkIHx8IChkID0gYi5wYXJzZUVsKGMpKSwgeSgiTGF6eUxvYWQiLCBkKSwgImltYWdlIiA9PT0gZC50eXBlICYmIChkLmltZyA9IGEoJzxpbWcgY2xhc3M9Im1mcC1pbWciIC8+Jykub24oImxvYWQubWZwbG9hZGVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuaGFzU2l6ZSA9ICEwCiAgICAgICAgICAgICAgICAgICAgfSkub24oImVycm9yLm1mcGxvYWRlciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBkLmhhc1NpemUgPSAhMCwgZC5sb2FkRXJyb3IgPSAhMCwgeSgiTGF6eUxvYWRFcnJvciIsIGQpCiAgICAgICAgICAgICAgICAgICAgfSkuYXR0cigic3JjIiwgZC5zcmMpKSwgZC5wcmVsb2FkZWQgPSAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgVSA9ICJyZXRpbmEiOwogICAgYS5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKFUsIHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHJlcGxhY2VTcmM6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLnNyYy5yZXBsYWNlKC9cLlx3KyQvLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJAMngiICsgYQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmF0aW86IDEKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRSZXRpbmE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID4gMSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gYi5zdC5yZXRpbmEsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhLnJhdGlvOwogICAgICAgICAgICAgICAgICAgIGMgPSBpc05hTihjKSA/IGMoKSA6IGMsIGMgPiAxICYmICh3KCJJbWFnZUhhc1NpemUuIiArIFUsIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYi5pbWcuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXgtd2lkdGgiOiBiLmltZ1swXS5uYXR1cmFsV2lkdGggLyBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICIxMDAlIgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pLCB3KCJFbGVtZW50UGFyc2UuIiArIFUsIGZ1bmN0aW9uKGIsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZC5zcmMgPSBhLnJlcGxhY2VTcmMoZCwgYykKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBBKCkKfSk7"}},"time_used":828,"timings":{"blocked":730,"dns":0,"connect":0,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/perfect-scrollbar.min.js?ver=1.5.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.423Z","timestamp":1785145482423,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/perfect-scrollbar.min.js?ver=1.5.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 29685\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":29685,"size_decoded":29902,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (1566)","md5":"7956bedadec179d9ab13636febbb4203","sha1":"d15e5a5c12e36d927d4c3f97085ba2c2503673b8","sha256":"06d76dc28cdaf8e9947b0bf64bf93fff6cdb1aefe14f1897f6adebcae1abc7a1","sha512":"9fa1ed915fad196394ed040d8150a43a9626b6f548e9f0cb1d8b7e0d8eaeb2be51f57b43692287bcfe56bc2425ba84fd440773a73e419a999dcee464fea93140","ssdeep":"768:8K3qCzQqFIjr+0LesEF6z058Ls1bE3BRQv:8KzQXX+0LesEF6z058LsC3zw","tlshash":"dbd21d0966e1307990efb02ed99f8b4c32368017674e9cd8384cceb86f646785772f69","first_seen":"2026-07-27T08:06:56.520188Z","last_seen":"2026-07-27T09:45:50.963667Z","times_seen":3,"resource_available":true,"data":"LyohCiAqIHBlcmZlY3Qtc2Nyb2xsYmFyIHYxLjUuMAogKiBDb3B5cmlnaHQgMjAyMCBIeXVuamUgSnVuLCBNREJvb3RzdHJhcCBhbmQgQ29udHJpYnV0b3JzCiAqIExpY2Vuc2VkIHVuZGVyIE1JVAogKi8KKGZ1bmN0aW9uKGEsIGIpIHsKICAgICJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IGIoKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGIpIDogKGEgPSBhIHx8IHNlbGYsIGEuUGVyZmVjdFNjcm9sbGJhciA9IGIoKSkKfSkodGhpcywgZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB2YXIgdSA9IE1hdGguYWJzLAogICAgICAgIHYgPSBNYXRoLmZsb29yOwoKICAgIGZ1bmN0aW9uIGEoYSkgewogICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGEpCiAgICB9CgogICAgZnVuY3Rpb24gYihhLCBiKSB7CiAgICAgICAgZm9yICh2YXIgYyBpbiBiKSB7CiAgICAgICAgICAgIHZhciBkID0gYltjXTsKICAgICAgICAgICAgIm51bWJlciIgPT0gdHlwZW9mIGQgJiYgKGQgKz0gInB4IiksIGEuc3R5bGVbY10gPSBkCiAgICAgICAgfQogICAgICAgIHJldHVybiBhCiAgICB9CgogICAgZnVuY3Rpb24gYyhhKSB7CiAgICAgICAgdmFyIGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICByZXR1cm4gYi5jbGFzc05hbWUgPSBhLCBiCiAgICB9CgogICAgZnVuY3Rpb24gZChhLCBiKSB7CiAgICAgICAgaWYgKCF3KSB0aHJvdyBuZXcgRXJyb3IoIk5vIGVsZW1lbnQgbWF0Y2hpbmcgbWV0aG9kIHN1cHBvcnRlZCIpOwogICAgICAgIHJldHVybiB3LmNhbGwoYSwgYikKICAgIH0KCiAgICBmdW5jdGlvbiBlKGEpIHsKICAgICAgICBhLnJlbW92ZSA/IGEucmVtb3ZlKCkgOiBhLnBhcmVudE5vZGUgJiYgYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpCiAgICB9CgogICAgZnVuY3Rpb24gZihhLCBiKSB7CiAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChhLmNoaWxkcmVuLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBkKGEsIGIpCiAgICAgICAgfSkKICAgIH0KCiAgICBmdW5jdGlvbiBnKGEsIGIpIHsKICAgICAgICB2YXIgYyA9IGEuZWxlbWVudC5jbGFzc0xpc3QsCiAgICAgICAgICAgIGQgPSB6LnN0YXRlLnNjcm9sbGluZyhiKTsKICAgICAgICBjLmNvbnRhaW5zKGQpID8gY2xlYXJUaW1lb3V0KEFbYl0pIDogYy5hZGQoZCkKICAgIH0KCiAgICBmdW5jdGlvbiBoKGEsIGIpIHsKICAgICAgICBBW2JdID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGEuaXNBbGl2ZSAmJiBhLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh6LnN0YXRlLnNjcm9sbGluZyhiKSkKICAgICAgICB9LCBhLnNldHRpbmdzLnNjcm9sbGluZ1RocmVzaG9sZCkKICAgIH0KCiAgICBmdW5jdGlvbiBqKGEsIGIpIHsKICAgICAgICBnKGEsIGIpLCBoKGEsIGIpCiAgICB9CgogICAgZnVuY3Rpb24gayhhKSB7CiAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHdpbmRvdy5DdXN0b21FdmVudCkgcmV0dXJuIG5ldyBDdXN0b21FdmVudChhKTsKICAgICAgICB2YXIgYiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpOwogICAgICAgIHJldHVybiBiLmluaXRDdXN0b21FdmVudChhLCAhMSwgITEsIHZvaWQgMCksIGIKICAgIH0KCiAgICBmdW5jdGlvbiBsKGEsIGIsIGMsIGQsIGUpIHsKICAgICAgICB2b2lkIDAgPT09IGQgJiYgKGQgPSAhMCksIHZvaWQgMCA9PT0gZSAmJiAoZSA9ICExKTsKICAgICAgICB2YXIgZjsKICAgICAgICBpZiAoInRvcCIgPT09IGIpIGYgPSBbImNvbnRlbnRIZWlnaHQiLCAiY29udGFpbmVySGVpZ2h0IiwgInNjcm9sbFRvcCIsICJ5IiwgInVwIiwgImRvd24iXTsKICAgICAgICBlbHNlIGlmICgibGVmdCIgPT09IGIpIGYgPSBbImNvbnRlbnRXaWR0aCIsICJjb250YWluZXJXaWR0aCIsICJzY3JvbGxMZWZ0IiwgIngiLCAibGVmdCIsICJyaWdodCJdOwogICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKCJBIHByb3BlciBheGlzIHNob3VsZCBiZSBwcm92aWRlZCIpOwogICAgICAgIG0oYSwgYywgZiwgZCwgZSkKICAgIH0KCiAgICBmdW5jdGlvbiBtKGEsIGIsIGMsIGQsIGUpIHsKICAgICAgICB2YXIgZiA9IGNbMF0sCiAgICAgICAgICAgIGcgPSBjWzFdLAogICAgICAgICAgICBoID0gY1syXSwKICAgICAgICAgICAgaSA9IGNbM10sCiAgICAgICAgICAgIGwgPSBjWzRdLAogICAgICAgICAgICBtID0gY1s1XTsKICAgICAgICB2b2lkIDAgPT09IGQgJiYgKGQgPSAhMCksIHZvaWQgMCA9PT0gZSAmJiAoZSA9ICExKTsKICAgICAgICB2YXIgbiA9IGEuZWxlbWVudDsgLy8gcmVzZXQgcmVhY2gKICAgICAgICBhLnJlYWNoW2ldID0gbnVsbCwgMSA+IG5baF0gJiYgKGEucmVhY2hbaV0gPSAic3RhcnQiKSwgbltoXSA+IGFbZl0gLSBhW2ddIC0gMSAmJiAoYS5yZWFjaFtpXSA9ICJlbmQiKSwgYiAmJiAobi5kaXNwYXRjaEV2ZW50KGsoInBzLXNjcm9sbC0iICsgaSkpLCAwID4gYiA/IG4uZGlzcGF0Y2hFdmVudChrKCJwcy1zY3JvbGwtIiArIGwpKSA6IDAgPCBiICYmIG4uZGlzcGF0Y2hFdmVudChrKCJwcy1zY3JvbGwtIiArIG0pKSwgZCAmJiBqKGEsIGkpKSwgYS5yZWFjaFtpXSAmJiAoYiB8fCBlKSAmJiBuLmRpc3BhdGNoRXZlbnQoaygicHMtIiArIGkgKyAiLXJlYWNoLSIgKyBhLnJlYWNoW2ldKSkKICAgIH0KCiAgICBmdW5jdGlvbiBuKGEpIHsKICAgICAgICByZXR1cm4gcGFyc2VJbnQoYSwgMTApIHx8IDAKICAgIH0KCiAgICBmdW5jdGlvbiBvKGEpIHsKICAgICAgICByZXR1cm4gZChhLCAiaW5wdXQsW2NvbnRlbnRlZGl0YWJsZV0iKSB8fCBkKGEsICJzZWxlY3QsW2NvbnRlbnRlZGl0YWJsZV0iKSB8fCBkKGEsICJ0ZXh0YXJlYSxbY29udGVudGVkaXRhYmxlXSIpIHx8IGQoYSwgImJ1dHRvbixbY29udGVudGVkaXRhYmxlXSIpCiAgICB9CgogICAgZnVuY3Rpb24gcChiKSB7CiAgICAgICAgdmFyIGMgPSBhKGIpOwogICAgICAgIHJldHVybiBuKGMud2lkdGgpICsgbihjLnBhZGRpbmdMZWZ0KSArIG4oYy5wYWRkaW5nUmlnaHQpICsgbihjLmJvcmRlckxlZnRXaWR0aCkgKyBuKGMuYm9yZGVyUmlnaHRXaWR0aCkKICAgIH0KCiAgICBmdW5jdGlvbiBxKGEpIHsKICAgICAgICB2YXIgYiA9IE1hdGguY2VpbCwKICAgICAgICAgICAgYyA9IGEuZWxlbWVudCwKICAgICAgICAgICAgZCA9IHYoYy5zY3JvbGxUb3ApLAogICAgICAgICAgICBnID0gYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICBhLmNvbnRhaW5lcldpZHRoID0gYihnLndpZHRoKSwgYS5jb250YWluZXJIZWlnaHQgPSBiKGcuaGVpZ2h0KSwgYS5jb250ZW50V2lkdGggPSBjLnNjcm9sbFdpZHRoLCBhLmNvbnRlbnRIZWlnaHQgPSBjLnNjcm9sbEhlaWdodCwgYy5jb250YWlucyhhLnNjcm9sbGJhclhSYWlsKSB8fCAoZihjLCB6LmVsZW1lbnQucmFpbCgieCIpKS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIGUoYSkKICAgICAgICB9KSwgYy5hcHBlbmRDaGlsZChhLnNjcm9sbGJhclhSYWlsKSksIGMuY29udGFpbnMoYS5zY3JvbGxiYXJZUmFpbCkgfHwgKGYoYywgei5lbGVtZW50LnJhaWwoInkiKSkuZm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBlKGEpCiAgICAgICAgfSksIGMuYXBwZW5kQ2hpbGQoYS5zY3JvbGxiYXJZUmFpbCkpLCAhYS5zZXR0aW5ncy5zdXBwcmVzc1Njcm9sbFggJiYgYS5jb250YWluZXJXaWR0aCArIGEuc2V0dGluZ3Muc2Nyb2xsWE1hcmdpbk9mZnNldCA8IGEuY29udGVudFdpZHRoID8gKGEuc2Nyb2xsYmFyWEFjdGl2ZSA9ICEwLCBhLnJhaWxYV2lkdGggPSBhLmNvbnRhaW5lcldpZHRoIC0gYS5yYWlsWE1hcmdpbldpZHRoLCBhLnJhaWxYUmF0aW8gPSBhLmNvbnRhaW5lcldpZHRoIC8gYS5yYWlsWFdpZHRoLCBhLnNjcm9sbGJhclhXaWR0aCA9IHIoYSwgbihhLnJhaWxYV2lkdGggKiBhLmNvbnRhaW5lcldpZHRoIC8gYS5jb250ZW50V2lkdGgpKSwgYS5zY3JvbGxiYXJYTGVmdCA9IG4oKGEubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50ICsgYy5zY3JvbGxMZWZ0KSAqIChhLnJhaWxYV2lkdGggLSBhLnNjcm9sbGJhclhXaWR0aCkgLyAoYS5jb250ZW50V2lkdGggLSBhLmNvbnRhaW5lcldpZHRoKSkpIDogYS5zY3JvbGxiYXJYQWN0aXZlID0gITEsICFhLnNldHRpbmdzLnN1cHByZXNzU2Nyb2xsWSAmJiBhLmNvbnRhaW5lckhlaWdodCArIGEuc2V0dGluZ3Muc2Nyb2xsWU1hcmdpbk9mZnNldCA8IGEuY29udGVudEhlaWdodCA/IChhLnNjcm9sbGJhcllBY3RpdmUgPSAhMCwgYS5yYWlsWUhlaWdodCA9IGEuY29udGFpbmVySGVpZ2h0IC0gYS5yYWlsWU1hcmdpbkhlaWdodCwgYS5yYWlsWVJhdGlvID0gYS5jb250YWluZXJIZWlnaHQgLyBhLnJhaWxZSGVpZ2h0LCBhLnNjcm9sbGJhcllIZWlnaHQgPSByKGEsIG4oYS5yYWlsWUhlaWdodCAqIGEuY29udGFpbmVySGVpZ2h0IC8gYS5jb250ZW50SGVpZ2h0KSksIGEuc2Nyb2xsYmFyWVRvcCA9IG4oZCAqIChhLnJhaWxZSGVpZ2h0IC0gYS5zY3JvbGxiYXJZSGVpZ2h0KSAvIChhLmNvbnRlbnRIZWlnaHQgLSBhLmNvbnRhaW5lckhlaWdodCkpKSA6IGEuc2Nyb2xsYmFyWUFjdGl2ZSA9ICExLCBhLnNjcm9sbGJhclhMZWZ0ID49IGEucmFpbFhXaWR0aCAtIGEuc2Nyb2xsYmFyWFdpZHRoICYmIChhLnNjcm9sbGJhclhMZWZ0ID0gYS5yYWlsWFdpZHRoIC0gYS5zY3JvbGxiYXJYV2lkdGgpLCBhLnNjcm9sbGJhcllUb3AgPj0gYS5yYWlsWUhlaWdodCAtIGEuc2Nyb2xsYmFyWUhlaWdodCAmJiAoYS5zY3JvbGxiYXJZVG9wID0gYS5yYWlsWUhlaWdodCAtIGEuc2Nyb2xsYmFyWUhlaWdodCksIHMoYywgYSksIGEuc2Nyb2xsYmFyWEFjdGl2ZSA/IGMuY2xhc3NMaXN0LmFkZCh6LnN0YXRlLmFjdGl2ZSgieCIpKSA6IChjLmNsYXNzTGlzdC5yZW1vdmUoei5zdGF0ZS5hY3RpdmUoIngiKSksIGEuc2Nyb2xsYmFyWFdpZHRoID0gMCwgYS5zY3JvbGxiYXJYTGVmdCA9IDAsIGMuc2Nyb2xsTGVmdCA9ICEwID09PSBhLmlzUnRsID8gYS5jb250ZW50V2lkdGggOiAwKSwgYS5zY3JvbGxiYXJZQWN0aXZlID8gYy5jbGFzc0xpc3QuYWRkKHouc3RhdGUuYWN0aXZlKCJ5IikpIDogKGMuY2xhc3NMaXN0LnJlbW92ZSh6LnN0YXRlLmFjdGl2ZSgieSIpKSwgYS5zY3JvbGxiYXJZSGVpZ2h0ID0gMCwgYS5zY3JvbGxiYXJZVG9wID0gMCwgYy5zY3JvbGxUb3AgPSAwKQogICAgfQoKICAgIGZ1bmN0aW9uIHIoYSwgYikgewogICAgICAgIHZhciBjID0gTWF0aC5taW4sCiAgICAgICAgICAgIGQgPSBNYXRoLm1heDsKICAgICAgICByZXR1cm4gYS5zZXR0aW5ncy5taW5TY3JvbGxiYXJMZW5ndGggJiYgKGIgPSBkKGIsIGEuc2V0dGluZ3MubWluU2Nyb2xsYmFyTGVuZ3RoKSksIGEuc2V0dGluZ3MubWF4U2Nyb2xsYmFyTGVuZ3RoICYmIChiID0gYyhiLCBhLnNldHRpbmdzLm1heFNjcm9sbGJhckxlbmd0aCkpLCBiCiAgICB9CgogICAgZnVuY3Rpb24gcyhhLCBjKSB7CiAgICAgICAgdmFyIGQgPSB7CiAgICAgICAgICAgICAgICB3aWR0aDogYy5yYWlsWFdpZHRoCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGUgPSB2KGEuc2Nyb2xsVG9wKTsKICAgICAgICBkLmxlZnQgPSBjLmlzUnRsID8gYy5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQgKyBhLnNjcm9sbExlZnQgKyBjLmNvbnRhaW5lcldpZHRoIC0gYy5jb250ZW50V2lkdGggOiBhLnNjcm9sbExlZnQsIGMuaXNTY3JvbGxiYXJYVXNpbmdCb3R0b20gPyBkLmJvdHRvbSA9IGMuc2Nyb2xsYmFyWEJvdHRvbSAtIGUgOiBkLnRvcCA9IGMuc2Nyb2xsYmFyWFRvcCArIGUsIGIoYy5zY3JvbGxiYXJYUmFpbCwgZCk7CiAgICAgICAgdmFyIGYgPSB7CiAgICAgICAgICAgIHRvcDogZSwKICAgICAgICAgICAgaGVpZ2h0OiBjLnJhaWxZSGVpZ2h0CiAgICAgICAgfTsKICAgICAgICBjLmlzU2Nyb2xsYmFyWVVzaW5nUmlnaHQgPyBjLmlzUnRsID8gZi5yaWdodCA9IGMuY29udGVudFdpZHRoIC0gKGMubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50ICsgYS5zY3JvbGxMZWZ0KSAtIGMuc2Nyb2xsYmFyWVJpZ2h0IC0gYy5zY3JvbGxiYXJZT3V0ZXJXaWR0aCAtIDkgOiBmLnJpZ2h0ID0gYy5zY3JvbGxiYXJZUmlnaHQgLSBhLnNjcm9sbExlZnQgOiBjLmlzUnRsID8gZi5sZWZ0ID0gYy5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQgKyBhLnNjcm9sbExlZnQgKyAyICogYy5jb250YWluZXJXaWR0aCAtIGMuY29udGVudFdpZHRoIC0gYy5zY3JvbGxiYXJZTGVmdCAtIGMuc2Nyb2xsYmFyWU91dGVyV2lkdGggOiBmLmxlZnQgPSBjLnNjcm9sbGJhcllMZWZ0ICsgYS5zY3JvbGxMZWZ0LCBiKGMuc2Nyb2xsYmFyWVJhaWwsIGYpLCBiKGMuc2Nyb2xsYmFyWCwgewogICAgICAgICAgICBsZWZ0OiBjLnNjcm9sbGJhclhMZWZ0LAogICAgICAgICAgICB3aWR0aDogYy5zY3JvbGxiYXJYV2lkdGggLSBjLnJhaWxCb3JkZXJYV2lkdGgKICAgICAgICB9KSwgYihjLnNjcm9sbGJhclksIHsKICAgICAgICAgICAgdG9wOiBjLnNjcm9sbGJhcllUb3AsCiAgICAgICAgICAgIGhlaWdodDogYy5zY3JvbGxiYXJZSGVpZ2h0IC0gYy5yYWlsQm9yZGVyWVdpZHRoCiAgICAgICAgfSkKICAgIH0KCiAgICBmdW5jdGlvbiB0KGEsIGIpIHsKICAgICAgICBmdW5jdGlvbiBjKGIpIHsKICAgICAgICAgICAgYi50b3VjaGVzICYmIGIudG91Y2hlc1swXSAmJiAoYltrXSA9IGIudG91Y2hlc1swXS5wYWdlWSksIHNbb10gPSB0ICsgdiAqIChiW2tdIC0gdSksIGcoYSwgcCksIHEoYSksIGIuc3RvcFByb3BhZ2F0aW9uKCksIGIucHJldmVudERlZmF1bHQoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZCgpIHsKICAgICAgICAgICAgaChhLCBwKSwgYVtyXS5jbGFzc0xpc3QucmVtb3ZlKHouc3RhdGUuY2xpY2tpbmcpLCBhLmV2ZW50LnVuYmluZChhLm93bmVyRG9jdW1lbnQsICJtb3VzZW1vdmUiLCBjKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZihiLCBlKSB7CiAgICAgICAgICAgIHQgPSBzW29dLCBlICYmIGIudG91Y2hlcyAmJiAoYltrXSA9IGIudG91Y2hlc1swXS5wYWdlWSksIHUgPSBiW2tdLCB2ID0gKGFbal0gLSBhW2ldKSAvIChhW2xdIC0gYVtuXSksIGUgPyBhLmV2ZW50LmJpbmQoYS5vd25lckRvY3VtZW50LCAidG91Y2htb3ZlIiwgYykgOiAoYS5ldmVudC5iaW5kKGEub3duZXJEb2N1bWVudCwgIm1vdXNlbW92ZSIsIGMpLCBhLmV2ZW50Lm9uY2UoYS5vd25lckRvY3VtZW50LCAibW91c2V1cCIsIGQpLCBiLnByZXZlbnREZWZhdWx0KCkpLCBhW3JdLmNsYXNzTGlzdC5hZGQoei5zdGF0ZS5jbGlja2luZyksIGIuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICB9CiAgICAgICAgdmFyIGkgPSBiWzBdLAogICAgICAgICAgICBqID0gYlsxXSwKICAgICAgICAgICAgayA9IGJbMl0sCiAgICAgICAgICAgIGwgPSBiWzNdLAogICAgICAgICAgICBtID0gYls0XSwKICAgICAgICAgICAgbiA9IGJbNV0sCiAgICAgICAgICAgIG8gPSBiWzZdLAogICAgICAgICAgICBwID0gYls3XSwKICAgICAgICAgICAgciA9IGJbOF0sCiAgICAgICAgICAgIHMgPSBhLmVsZW1lbnQsCiAgICAgICAgICAgIHQgPSBudWxsLAogICAgICAgICAgICB1ID0gbnVsbCwKICAgICAgICAgICAgdiA9IG51bGw7CiAgICAgICAgYS5ldmVudC5iaW5kKGFbbV0sICJtb3VzZWRvd24iLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGYoYSkKICAgICAgICB9KSwgYS5ldmVudC5iaW5kKGFbbV0sICJ0b3VjaHN0YXJ0IiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICBmKGEsICEwKQogICAgICAgIH0pCiAgICB9CiAgICB2YXIgdyA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBFbGVtZW50ICYmIChFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8IEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBFbGVtZW50LnByb3RvdHlwZS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwgRWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3IpLAogICAgICAgIHogPSB7CiAgICAgICAgICAgIG1haW46ICJwcyIsCiAgICAgICAgICAgIHJ0bDogInBzX19ydGwiLAogICAgICAgICAgICBlbGVtZW50OiB7CiAgICAgICAgICAgICAgICB0aHVtYjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAicHNfX3RodW1iLSIgKyBhCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmFpbDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAicHNfX3JhaWwtIiArIGEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb25zdW1pbmc6ICJwc19fY2hpbGQtLWNvbnN1bWUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0YXRlOiB7CiAgICAgICAgICAgICAgICBmb2N1czogInBzLS1mb2N1cyIsCiAgICAgICAgICAgICAgICBjbGlja2luZzogInBzLS1jbGlja2luZyIsCiAgICAgICAgICAgICAgICBhY3RpdmU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInBzLS1hY3RpdmUtIiArIGEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzY3JvbGxpbmc6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInBzLS1zY3JvbGxpbmctIiArIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgQSA9IHsKICAgICAgICAgICAgeDogbnVsbCwKICAgICAgICAgICAgeTogbnVsbAogICAgICAgIH0sCiAgICAgICAgQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdGhpcy5lbGVtZW50ID0gYSwgdGhpcy5oYW5kbGVycyA9IHt9CiAgICAgICAgfSwKICAgICAgICBDID0gewogICAgICAgICAgICBpc0VtcHR5OiB7CiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgQi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAidW5kZWZpbmVkIiA9PSB0eXBlb2YgdGhpcy5oYW5kbGVyc1thXSAmJiAodGhpcy5oYW5kbGVyc1thXSA9IFtdKSwgdGhpcy5oYW5kbGVyc1thXS5wdXNoKGIpLCB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihhLCBiLCAhMSkKICAgIH0sIEIucHJvdG90eXBlLnVuYmluZCA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICB2YXIgYyA9IHRoaXM7CiAgICAgICAgdGhpcy5oYW5kbGVyc1thXSA9IHRoaXMuaGFuZGxlcnNbYV0uZmlsdGVyKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgcmV0dXJuICEhKGIgJiYgZCAhPT0gYikgfHwgKGMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGEsIGQsICExKSwgITEpCiAgICAgICAgfSkKICAgIH0sIEIucHJvdG90eXBlLnVuYmluZEFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZvciAodmFyIGEgaW4gdGhpcy5oYW5kbGVycykgdGhpcy51bmJpbmQoYSkKICAgIH0sIEMuaXNFbXB0eS5nZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYSA9IHRoaXM7CiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaGFuZGxlcnMpLmV2ZXJ5KGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgcmV0dXJuIDAgPT09IGEuaGFuZGxlcnNbYl0ubGVuZ3RoCiAgICAgICAgfSkKICAgIH0sIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEIucHJvdG90eXBlLCBDKTsKICAgIHZhciBEID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5ldmVudEVsZW1lbnRzID0gW10KICAgIH07CiAgICBELnByb3RvdHlwZS5ldmVudEVsZW1lbnQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgdmFyIGIgPSB0aGlzLmV2ZW50RWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgcmV0dXJuIGIuZWxlbWVudCA9PT0gYQogICAgICAgIH0pWzBdOwogICAgICAgIHJldHVybiBiIHx8IChiID0gbmV3IEIoYSksIHRoaXMuZXZlbnRFbGVtZW50cy5wdXNoKGIpKSwgYgogICAgfSwgRC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICB0aGlzLmV2ZW50RWxlbWVudChhKS5iaW5kKGIsIGMpCiAgICB9LCBELnByb3RvdHlwZS51bmJpbmQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgdmFyIGQgPSB0aGlzLmV2ZW50RWxlbWVudChhKTsKICAgICAgICBkLnVuYmluZChiLCBjKSwgZC5pc0VtcHR5ICYmIHRoaXMuZXZlbnRFbGVtZW50cy5zcGxpY2UodGhpcy5ldmVudEVsZW1lbnRzLmluZGV4T2YoZCksIDEpCiAgICB9LCBELnByb3RvdHlwZS51bmJpbmRBbGwgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLmV2ZW50RWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBhLnVuYmluZEFsbCgpCiAgICAgICAgfSksIHRoaXMuZXZlbnRFbGVtZW50cyA9IFtdCiAgICB9LCBELnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgIHZhciBkID0gdGhpcy5ldmVudEVsZW1lbnQoYSksCiAgICAgICAgICAgIGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICBkLnVuYmluZChiLCBlKSwgYyhhKQogICAgICAgICAgICB9OwogICAgICAgIGQuYmluZChiLCBlKQogICAgfTsKICAgIHZhciBFID0gewogICAgICAgICAgICBpc1dlYktpdDogInVuZGVmaW5lZCIgIT0gdHlwZW9mIGRvY3VtZW50ICYmICJXZWJraXRBcHBlYXJhbmNlIiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsCiAgICAgICAgICAgIHN1cHBvcnRzVG91Y2g6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgKCJvbnRvdWNoc3RhcnQiIGluIHdpbmRvdyB8fCAibWF4VG91Y2hQb2ludHMiIGluIHdpbmRvdy5uYXZpZ2F0b3IgJiYgMCA8IHdpbmRvdy5uYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiB3aW5kb3cuRG9jdW1lbnRUb3VjaCksCiAgICAgICAgICAgIHN1cHBvcnRzSWVQb2ludGVyOiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbmF2aWdhdG9yICYmIG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzLAogICAgICAgICAgICBpc0Nocm9tZTogInVuZGVmaW5lZCIgIT0gdHlwZW9mIG5hdmlnYXRvciAmJiAvQ2hyb21lL2kudGVzdChuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCkKICAgICAgICB9LAogICAgICAgIEYgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGhhbmRsZXJzOiBbImNsaWNrLXJhaWwiLCAiZHJhZy10aHVtYiIsICJrZXlib2FyZCIsICJ3aGVlbCIsICJ0b3VjaCJdLAogICAgICAgICAgICAgICAgbWF4U2Nyb2xsYmFyTGVuZ3RoOiBudWxsLAogICAgICAgICAgICAgICAgbWluU2Nyb2xsYmFyTGVuZ3RoOiBudWxsLAogICAgICAgICAgICAgICAgc2Nyb2xsaW5nVGhyZXNob2xkOiAxZTMsCiAgICAgICAgICAgICAgICBzY3JvbGxYTWFyZ2luT2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgc2Nyb2xsWU1hcmdpbk9mZnNldDogMCwKICAgICAgICAgICAgICAgIHN1cHByZXNzU2Nyb2xsWDogITEsCiAgICAgICAgICAgICAgICBzdXBwcmVzc1Njcm9sbFk6ICExLAogICAgICAgICAgICAgICAgc3dpcGVFYXNpbmc6ICEwLAogICAgICAgICAgICAgICAgdXNlQm90aFdoZWVsQXhlczogITEsCiAgICAgICAgICAgICAgICB3aGVlbFByb3BhZ2F0aW9uOiAhMCwKICAgICAgICAgICAgICAgIHdoZWVsU3BlZWQ6IDEKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgRyA9IHsKICAgICAgICAgICAgImNsaWNrLXJhaWwiOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICBhLmVsZW1lbnQ7CiAgICAgICAgICAgICAgICBhLmV2ZW50LmJpbmQoYS5zY3JvbGxiYXJZLCAibW91c2Vkb3duIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICB9KSwgYS5ldmVudC5iaW5kKGEuc2Nyb2xsYmFyWVJhaWwsICJtb3VzZWRvd24iLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBiLnBhZ2VZIC0gd2luZG93LnBhZ2VZT2Zmc2V0IC0gYS5zY3JvbGxiYXJZUmFpbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjID4gYS5zY3JvbGxiYXJZVG9wID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgIGEuZWxlbWVudC5zY3JvbGxUb3AgKz0gZCAqIGEuY29udGFpbmVySGVpZ2h0LCBxKGEpLCBiLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICB9KSwgYS5ldmVudC5iaW5kKGEuc2Nyb2xsYmFyWCwgIm1vdXNlZG93biIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgICAgICAgICAgfSksIGEuZXZlbnQuYmluZChhLnNjcm9sbGJhclhSYWlsLCAibW91c2Vkb3duIiwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgIHZhciBjID0gYi5wYWdlWCAtIHdpbmRvdy5wYWdlWE9mZnNldCAtIGEuc2Nyb2xsYmFyWFJhaWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGMgPiBhLnNjcm9sbGJhclhMZWZ0ID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgIGEuZWxlbWVudC5zY3JvbGxMZWZ0ICs9IGQgKiBhLmNvbnRhaW5lcldpZHRoLCBxKGEpLCBiLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICAiZHJhZy10aHVtYiI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHQoYSwgWyJjb250YWluZXJXaWR0aCIsICJjb250ZW50V2lkdGgiLCAicGFnZVgiLCAicmFpbFhXaWR0aCIsICJzY3JvbGxiYXJYIiwgInNjcm9sbGJhclhXaWR0aCIsICJzY3JvbGxMZWZ0IiwgIngiLCAic2Nyb2xsYmFyWFJhaWwiXSksIHQoYSwgWyJjb250YWluZXJIZWlnaHQiLCAiY29udGVudEhlaWdodCIsICJwYWdlWSIsICJyYWlsWUhlaWdodCIsICJzY3JvbGxiYXJZIiwgInNjcm9sbGJhcllIZWlnaHQiLCAic2Nyb2xsVG9wIiwgInkiLCAic2Nyb2xsYmFyWVJhaWwiXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAga2V5Ym9hcmQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoYiwgZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdihjLnNjcm9sbFRvcCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhLnNjcm9sbGJhcllBY3RpdmUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGUgJiYgMCA8IGQgfHwgZSA+PSBhLmNvbnRlbnRIZWlnaHQgLSBhLmNvbnRhaW5lckhlaWdodCAmJiAwID4gZCkgcmV0dXJuICFhLnNldHRpbmdzLndoZWVsUHJvcGFnYXRpb24KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBjLnNjcm9sbExlZnQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhLnNjcm9sbGJhclhBY3RpdmUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGYgJiYgMCA+IGIgfHwgZiA+PSBhLmNvbnRlbnRXaWR0aCAtIGEuY29udGFpbmVyV2lkdGggJiYgMCA8IGIpIHJldHVybiAhYS5zZXR0aW5ncy53aGVlbFByb3BhZ2F0aW9uCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGMgPSBhLmVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgZiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZChjLCAiOmhvdmVyIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQoYS5zY3JvbGxiYXJYLCAiOmZvY3VzIikgfHwgZChhLnNjcm9sbGJhclksICI6Zm9jdXMiKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBhLmV2ZW50LmJpbmQoYS5vd25lckRvY3VtZW50LCAia2V5ZG93biIsIGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIShkLmlzRGVmYXVsdFByZXZlbnRlZCAmJiBkLmlzRGVmYXVsdFByZXZlbnRlZCgpIHx8IGQuZGVmYXVsdFByZXZlbnRlZCkgJiYgKGYoKSB8fCBnKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA/IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgOiBhLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiSUZSQU1FIiA9PT0gZS50YWdOYW1lKSBlID0gZS5jb250ZW50RG9jdW1lbnQuYWN0aXZlRWxlbWVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgLy8gZ28gZGVlcGVyIGlmIGVsZW1lbnQgaXMgYSB3ZWJjb21wb25lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZS5zaGFkb3dSb290OykgZSA9IGUuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8oZSkpIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGQud2hpY2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGQubWV0YUtleSA/IC1hLmNvbnRlbnRXaWR0aCA6IGQuYWx0S2V5ID8gLWEuY29udGFpbmVyV2lkdGggOiAtMzA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBkLm1ldGFLZXkgPyBhLmNvbnRlbnRIZWlnaHQgOiBkLmFsdEtleSA/IGEuY29udGFpbmVySGVpZ2h0IDogMzA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBkLm1ldGFLZXkgPyBhLmNvbnRlbnRXaWR0aCA6IGQuYWx0S2V5ID8gYS5jb250YWluZXJXaWR0aCA6IDMwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZC5tZXRhS2V5ID8gLWEuY29udGVudEhlaWdodCA6IGQuYWx0S2V5ID8gLWEuY29udGFpbmVySGVpZ2h0IDogLTMwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZC5zaGlmdEtleSA/IGEuY29udGFpbmVySGVpZ2h0IDogLWEuY29udGFpbmVySGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYS5jb250YWluZXJIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAtYS5jb250YWluZXJIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBhLmNvbnRlbnRIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAtYS5jb250ZW50SGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYS5zZXR0aW5ncy5zdXBwcmVzc1Njcm9sbFggJiYgMCAhPT0gaCB8fCBhLnNldHRpbmdzLnN1cHByZXNzU2Nyb2xsWSAmJiAwICE9PSBpIHx8IChjLnNjcm9sbFRvcCAtPSBpLCBjLnNjcm9sbExlZnQgKz0gaCwgcShhKSwgYihoLCBpKSAmJiBkLnByZXZlbnREZWZhdWx0KCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgd2hlZWw6IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoYSwgYykgewogICAgICAgICAgICAgICAgICAgIHZhciBkLCBlID0gdihoLnNjcm9sbFRvcCksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAwID09PSBoLnNjcm9sbFRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGUgKyBoLm9mZnNldEhlaWdodCA9PT0gaC5zY3JvbGxIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwID09PSBoLnNjcm9sbExlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGogPSBoLnNjcm9sbExlZnQgKyBoLm9mZnNldFdpZHRoID09PSBoLnNjcm9sbFdpZHRoOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBkID0gdShjKSA+IHUoYSkgPyBmIHx8IGcgOiBpIHx8IGosICFkIHx8ICFiLnNldHRpbmdzLndoZWVsUHJvcGFnYXRpb24KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEuZGVsdGFYLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gLTEgKiBhLmRlbHRhWTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCJ1bmRlZmluZWQiID09IHR5cGVvZiBiIHx8ICJ1bmRlZmluZWQiID09IHR5cGVvZiBjKSAmJiAoYiA9IC0xICogYS53aGVlbERlbHRhWCAvIDYsIGMgPSBhLndoZWVsRGVsdGFZIC8gNiksIGEuZGVsdGFNb2RlICYmIDEgPT09IGEuZGVsdGFNb2RlICYmIChiICo9IDEwLCBjICo9IDEwKSwgYiAhPT0gYiAmJiBjICE9PSBjIC8qIE5hTiBjaGVja3MgKi8gJiYgKGIgPSAwLCBjID0gYS53aGVlbERlbHRhKSwgYS5zaGlmdEtleSA/IFstYywgLWJdIDogW2IsIGNdCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gZihiLCBjLCBkKSB7IC8vIEZJWE1FOiB0aGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgPHNlbGVjdD4gaXNzdWUgaW4gRkYgYW5kIElFICM1NzEKICAgICAgICAgICAgICAgICAgICBpZiAoIUUuaXNXZWJLaXQgJiYgaC5xdWVyeVNlbGVjdG9yKCJzZWxlY3Q6Zm9jdXMiKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgIGlmICghaC5jb250YWlucyhiKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBiOyBlICYmIGUgIT09IGg7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNsYXNzTGlzdC5jb250YWlucyh6LmVsZW1lbnQuY29uc3VtaW5nKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGEoZSk7IC8vIGlmIGRlbHRhWSAmJiB2ZXJ0aWNhbCBzY3JvbGxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkICYmIGYub3ZlcmZsb3dZLm1hdGNoKC8oc2Nyb2xsfGF1dG8pLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZS5zY3JvbGxIZWlnaHQgLSBlLmNsaWVudEhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwIDwgZyAmJiAoMCA8IGUuc2Nyb2xsVG9wICYmIDAgPiBkIHx8IGUuc2Nyb2xsVG9wIDwgZyAmJiAwIDwgZCkpIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9IC8vIGlmIGRlbHRhWCAmJiBob3Jpem9udGFsIHNjcm9sbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgJiYgZi5vdmVyZmxvd1gubWF0Y2goLyhzY3JvbGx8YXV0bykvKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLnNjcm9sbFdpZHRoIC0gZS5jbGllbnRXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwIDwgaSAmJiAoMCA8IGUuc2Nyb2xsTGVmdCAmJiAwID4gYyB8fCBlLnNjcm9sbExlZnQgPCBpICYmIDAgPCBjKSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUucGFyZW50Tm9kZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBnKGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGQoYSksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVsxXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWYoYS50YXJnZXQsIGcsIGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuc2V0dGluZ3MudXNlQm90aFdoZWVsQXhlcyA/IGIuc2Nyb2xsYmFyWUFjdGl2ZSAmJiAhYi5zY3JvbGxiYXJYQWN0aXZlID8gKGkgPyBoLnNjcm9sbFRvcCAtPSBpICogYi5zZXR0aW5ncy53aGVlbFNwZWVkIDogaC5zY3JvbGxUb3AgKz0gZyAqIGIuc2V0dGluZ3Mud2hlZWxTcGVlZCwgaiA9ICEwKSA6IGIuc2Nyb2xsYmFyWEFjdGl2ZSAmJiAhYi5zY3JvbGxiYXJZQWN0aXZlICYmIChnID8gaC5zY3JvbGxMZWZ0ICs9IGcgKiBiLnNldHRpbmdzLndoZWVsU3BlZWQgOiBoLnNjcm9sbExlZnQgLT0gaSAqIGIuc2V0dGluZ3Mud2hlZWxTcGVlZCwgaiA9ICEwKSA6IChoLnNjcm9sbFRvcCAtPSBpICogYi5zZXR0aW5ncy53aGVlbFNwZWVkLCBoLnNjcm9sbExlZnQgKz0gZyAqIGIuc2V0dGluZ3Mud2hlZWxTcGVlZCksIHEoYiksIGogPSBqIHx8IGMoZywgaSksIGogJiYgIWEuY3RybEtleSAmJiAoYS5zdG9wUHJvcGFnYXRpb24oKSwgYS5wcmV2ZW50RGVmYXVsdCgpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBoID0gYi5lbGVtZW50OwogICAgICAgICAgICAgICAgInVuZGVmaW5lZCIgPT0gdHlwZW9mIHdpbmRvdy5vbndoZWVsID8gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdy5vbm1vdXNld2hlZWwgJiYgYi5ldmVudC5iaW5kKGgsICJtb3VzZXdoZWVsIiwgZykgOiBiLmV2ZW50LmJpbmQoaCwgIndoZWVsIiwgZykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdG91Y2g6IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoYSwgYykgewogICAgICAgICAgICAgICAgICAgIHZhciBkID0gdihsLnNjcm9sbFRvcCksCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBsLnNjcm9sbExlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB1KGEpLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gdShjKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZyA+IGYpIHsgLy8gdXNlciBpcyBwZXJoYXBzIHRyeWluZyB0byBzd2lwZSB1cC9kb3duIHRoZSBwYWdlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID4gYyAmJiBkID09PSBiLmNvbnRlbnRIZWlnaHQgLSBiLmNvbnRhaW5lckhlaWdodCB8fCAwIDwgYyAmJiAwID09PSBkKSAvLyBzZXQgcHJldmVudCBmb3IgbW9iaWxlIENocm9tZSByZWZyZXNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gd2luZG93LnNjcm9sbFkgJiYgMCA8IGMgJiYgRS5pc0Nocm9tZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGYgPiBnICYmICgwID4gYSAmJiBlID09PSBiLmNvbnRlbnRXaWR0aCAtIGIuY29udGFpbmVyV2lkdGggfHwgMCA8IGEgJiYgMCA9PT0gZSkpIC8vIHVzZXIgaXMgcGVyaGFwcyB0cnlpbmcgdG8gc3dpcGUgbGVmdC9yaWdodCBhY3Jvc3MgdGhlIHBhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoYSwgYykgewogICAgICAgICAgICAgICAgICAgIGwuc2Nyb2xsVG9wIC09IGMsIGwuc2Nyb2xsTGVmdCAtPSBhLCBxKGIpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gZihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEudGFyZ2V0VG91Y2hlcyA/IGEudGFyZ2V0VG91Y2hlc1swXSA6IGEKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBnKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShhLnBvaW50ZXJUeXBlICYmICJwZW4iID09PSBhLnBvaW50ZXJUeXBlICYmIDAgPT09IGEuYnV0dG9ucykgJiYgKCEhKGEudGFyZ2V0VG91Y2hlcyAmJiAxID09PSBhLnRhcmdldFRvdWNoZXMubGVuZ3RoKSB8fCAhIShhLnBvaW50ZXJUeXBlICYmICJtb3VzZSIgIT09IGEucG9pbnRlclR5cGUgJiYgYS5wb2ludGVyVHlwZSAhPT0gYS5NU1BPSU5URVJfVFlQRV9NT1VTRSkpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaChhKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGcoYSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBmKGEpOwogICAgICAgICAgICAgICAgICAgICAgICBtLnBhZ2VYID0gYi5wYWdlWCwgbS5wYWdlWSA9IGIucGFnZVksIG4gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSwgbnVsbCAhPT0gcCAmJiBjbGVhckludGVydmFsKHApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoYiwgYywgZCkgewogICAgICAgICAgICAgICAgICAgIGlmICghbC5jb250YWlucyhiKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBiOyBlICYmIGUgIT09IGw7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNsYXNzTGlzdC5jb250YWlucyh6LmVsZW1lbnQuY29uc3VtaW5nKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGEoZSk7IC8vIGlmIGRlbHRhWSAmJiB2ZXJ0aWNhbCBzY3JvbGxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkICYmIGYub3ZlcmZsb3dZLm1hdGNoKC8oc2Nyb2xsfGF1dG8pLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZS5zY3JvbGxIZWlnaHQgLSBlLmNsaWVudEhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwIDwgZyAmJiAoMCA8IGUuc2Nyb2xsVG9wICYmIDAgPiBkIHx8IGUuc2Nyb2xsVG9wIDwgZyAmJiAwIDwgZCkpIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9IC8vIGlmIGRlbHRhWCAmJiBob3Jpem9udGFsIHNjcm9sbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgJiYgZi5vdmVyZmxvd1gubWF0Y2goLyhzY3JvbGx8YXV0bykvKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBlLnNjcm9sbFdpZHRoIC0gZS5jbGllbnRXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwIDwgaCAmJiAoMCA8IGUuc2Nyb2xsTGVmdCAmJiAwID4gYyB8fCBlLnNjcm9sbExlZnQgPCBoICYmIDAgPCBjKSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUucGFyZW50Tm9kZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBqKGEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZyhhKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGYoYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VYOiBiLnBhZ2VYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VZOiBiLnBhZ2VZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGUucGFnZVggLSBtLnBhZ2VYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGUucGFnZVkgLSBtLnBhZ2VZOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaShhLnRhcmdldCwgaCwgaikpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgZChoLCBqKSwgbSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gbmV3IERhdGUoKS5nZXRUaW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gayAtIG47CiAgICAgICAgICAgICAgICAgICAgICAgIDAgPCBsICYmIChvLnggPSBoIC8gbCwgby55ID0gaiAvIGwsIG4gPSBrKSwgYyhoLCBqKSAmJiBhLnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaygpIHsKICAgICAgICAgICAgICAgICAgICBiLnNldHRpbmdzLnN3aXBlRWFzaW5nICYmIChjbGVhckludGVydmFsKHApLCBwID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLmlzSW5pdGlhbGl6ZWQgPyB2b2lkIGNsZWFySW50ZXJ2YWwocCkgOiBvLnggfHwgby55ID8gLjAxID4gdShvLngpICYmIC4wMSA+IHUoby55KSA/IHZvaWQgY2xlYXJJbnRlcnZhbChwKSA6IHZvaWQoZCgzMCAqIG8ueCwgMzAgKiBvLnkpLCBvLnggKj0gLjgsIG8ueSAqPSAuOCkgOiB2b2lkIGNsZWFySW50ZXJ2YWwocCkKICAgICAgICAgICAgICAgICAgICB9LCAxMCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoRS5zdXBwb3J0c1RvdWNoIHx8IEUuc3VwcG9ydHNJZVBvaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGIuZWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBwID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBFLnN1cHBvcnRzVG91Y2ggPyAoYi5ldmVudC5iaW5kKGwsICJ0b3VjaHN0YXJ0IiwgaCksIGIuZXZlbnQuYmluZChsLCAidG91Y2htb3ZlIiwgaiksIGIuZXZlbnQuYmluZChsLCAidG91Y2hlbmQiLCBrKSkgOiBFLnN1cHBvcnRzSWVQb2ludGVyICYmICh3aW5kb3cuUG9pbnRlckV2ZW50ID8gKGIuZXZlbnQuYmluZChsLCAicG9pbnRlcmRvd24iLCBoKSwgYi5ldmVudC5iaW5kKGwsICJwb2ludGVybW92ZSIsIGopLCBiLmV2ZW50LmJpbmQobCwgInBvaW50ZXJ1cCIsIGspKSA6IHdpbmRvdy5NU1BvaW50ZXJFdmVudCAmJiAoYi5ldmVudC5iaW5kKGwsICJNU1BvaW50ZXJEb3duIiwgaCksIGIuZXZlbnQuYmluZChsLCAiTVNQb2ludGVyTW92ZSIsIGopLCBiLmV2ZW50LmJpbmQobCwgIk1TUG9pbnRlclVwIiwgaykpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBIID0gZnVuY3Rpb24oZCwgZSkgewogICAgICAgICAgICB2YXIgZiA9IHRoaXM7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUgJiYgKGUgPSB7fSksICJzdHJpbmciID09IHR5cGVvZiBkICYmIChkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihkKSksICFkIHx8ICFkLm5vZGVOYW1lKSB0aHJvdyBuZXcgRXJyb3IoIm5vIGVsZW1lbnQgaXMgc3BlY2lmaWVkIHRvIGluaXRpYWxpemUgUGVyZmVjdFNjcm9sbGJhciIpOwogICAgICAgICAgICBmb3IgKHZhciBnIGluIHRoaXMuZWxlbWVudCA9IGQsIGQuY2xhc3NMaXN0LmFkZCh6Lm1haW4pLCB0aGlzLnNldHRpbmdzID0gRigpLCBlKSB0aGlzLnNldHRpbmdzW2ddID0gZVtnXTsKICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IG51bGwsIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gbnVsbCwgdGhpcy5jb250ZW50V2lkdGggPSBudWxsLCB0aGlzLmNvbnRlbnRIZWlnaHQgPSBudWxsOwogICAgICAgICAgICB2YXIgaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkLmNsYXNzTGlzdC5hZGQoei5zdGF0ZS5mb2N1cykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQuY2xhc3NMaXN0LnJlbW92ZSh6LnN0YXRlLmZvY3VzKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5pc1J0bCA9ICJydGwiID09PSBhKGQpLmRpcmVjdGlvbiwgITAgPT09IHRoaXMuaXNSdGwgJiYgZC5jbGFzc0xpc3QuYWRkKHoucnRsKSwgdGhpcy5pc05lZ2F0aXZlU2Nyb2xsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGQuc2Nyb2xsTGVmdCwKICAgICAgICAgICAgICAgICAgICBiID0gbnVsbDsKICAgICAgICAgICAgICAgIHJldHVybiBkLnNjcm9sbExlZnQgPSAtMSwgYiA9IDAgPiBkLnNjcm9sbExlZnQsIGQuc2Nyb2xsTGVmdCA9IGEsIGIKICAgICAgICAgICAgfSgpLCB0aGlzLm5lZ2F0aXZlU2Nyb2xsQWRqdXN0bWVudCA9IHRoaXMuaXNOZWdhdGl2ZVNjcm9sbCA/IGQuc2Nyb2xsV2lkdGggLSBkLmNsaWVudFdpZHRoIDogMCwgdGhpcy5ldmVudCA9IG5ldyBELCB0aGlzLm93bmVyRG9jdW1lbnQgPSBkLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQsIHRoaXMuc2Nyb2xsYmFyWFJhaWwgPSBjKHouZWxlbWVudC5yYWlsKCJ4IikpLCBkLmFwcGVuZENoaWxkKHRoaXMuc2Nyb2xsYmFyWFJhaWwpLCB0aGlzLnNjcm9sbGJhclggPSBjKHouZWxlbWVudC50aHVtYigieCIpKSwgdGhpcy5zY3JvbGxiYXJYUmFpbC5hcHBlbmRDaGlsZCh0aGlzLnNjcm9sbGJhclgpLCB0aGlzLnNjcm9sbGJhclguc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIDApLCB0aGlzLmV2ZW50LmJpbmQodGhpcy5zY3JvbGxiYXJYLCAiZm9jdXMiLCBoKSwgdGhpcy5ldmVudC5iaW5kKHRoaXMuc2Nyb2xsYmFyWCwgImJsdXIiLCBpKSwgdGhpcy5zY3JvbGxiYXJYQWN0aXZlID0gbnVsbCwgdGhpcy5zY3JvbGxiYXJYV2lkdGggPSBudWxsLCB0aGlzLnNjcm9sbGJhclhMZWZ0ID0gbnVsbDsKICAgICAgICAgICAgdmFyIGogPSBhKHRoaXMuc2Nyb2xsYmFyWFJhaWwpOwogICAgICAgICAgICB0aGlzLnNjcm9sbGJhclhCb3R0b20gPSBwYXJzZUludChqLmJvdHRvbSwgMTApLCBpc05hTih0aGlzLnNjcm9sbGJhclhCb3R0b20pID8gKHRoaXMuaXNTY3JvbGxiYXJYVXNpbmdCb3R0b20gPSAhMSwgdGhpcy5zY3JvbGxiYXJYVG9wID0gbihqLnRvcCkpIDogdGhpcy5pc1Njcm9sbGJhclhVc2luZ0JvdHRvbSA9ICEwLCB0aGlzLnJhaWxCb3JkZXJYV2lkdGggPSBuKGouYm9yZGVyTGVmdFdpZHRoKSArIG4oai5ib3JkZXJSaWdodFdpZHRoKSwgYih0aGlzLnNjcm9sbGJhclhSYWlsLCB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiYmxvY2siCiAgICAgICAgICAgIH0pLCB0aGlzLnJhaWxYTWFyZ2luV2lkdGggPSBuKGoubWFyZ2luTGVmdCkgKyBuKGoubWFyZ2luUmlnaHQpLCBiKHRoaXMuc2Nyb2xsYmFyWFJhaWwsIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6ICIiCiAgICAgICAgICAgIH0pLCB0aGlzLnJhaWxYV2lkdGggPSBudWxsLCB0aGlzLnJhaWxYUmF0aW8gPSBudWxsLCB0aGlzLnNjcm9sbGJhcllSYWlsID0gYyh6LmVsZW1lbnQucmFpbCgieSIpKSwgZC5hcHBlbmRDaGlsZCh0aGlzLnNjcm9sbGJhcllSYWlsKSwgdGhpcy5zY3JvbGxiYXJZID0gYyh6LmVsZW1lbnQudGh1bWIoInkiKSksIHRoaXMuc2Nyb2xsYmFyWVJhaWwuYXBwZW5kQ2hpbGQodGhpcy5zY3JvbGxiYXJZKSwgdGhpcy5zY3JvbGxiYXJZLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCAwKSwgdGhpcy5ldmVudC5iaW5kKHRoaXMuc2Nyb2xsYmFyWSwgImZvY3VzIiwgaCksIHRoaXMuZXZlbnQuYmluZCh0aGlzLnNjcm9sbGJhclksICJibHVyIiwgaSksIHRoaXMuc2Nyb2xsYmFyWUFjdGl2ZSA9IG51bGwsIHRoaXMuc2Nyb2xsYmFyWUhlaWdodCA9IG51bGwsIHRoaXMuc2Nyb2xsYmFyWVRvcCA9IG51bGw7CiAgICAgICAgICAgIHZhciBrID0gYSh0aGlzLnNjcm9sbGJhcllSYWlsKTsKICAgICAgICAgICAgdGhpcy5zY3JvbGxiYXJZUmlnaHQgPSBwYXJzZUludChrLnJpZ2h0LCAxMCksIGlzTmFOKHRoaXMuc2Nyb2xsYmFyWVJpZ2h0KSA/ICh0aGlzLmlzU2Nyb2xsYmFyWVVzaW5nUmlnaHQgPSAhMSwgdGhpcy5zY3JvbGxiYXJZTGVmdCA9IG4oay5sZWZ0KSkgOiB0aGlzLmlzU2Nyb2xsYmFyWVVzaW5nUmlnaHQgPSAhMCwgdGhpcy5zY3JvbGxiYXJZT3V0ZXJXaWR0aCA9IHRoaXMuaXNSdGwgPyBwKHRoaXMuc2Nyb2xsYmFyWSkgOiBudWxsLCB0aGlzLnJhaWxCb3JkZXJZV2lkdGggPSBuKGsuYm9yZGVyVG9wV2lkdGgpICsgbihrLmJvcmRlckJvdHRvbVdpZHRoKSwgYih0aGlzLnNjcm9sbGJhcllSYWlsLCB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiYmxvY2siCiAgICAgICAgICAgIH0pLCB0aGlzLnJhaWxZTWFyZ2luSGVpZ2h0ID0gbihrLm1hcmdpblRvcCkgKyBuKGsubWFyZ2luQm90dG9tKSwgYih0aGlzLnNjcm9sbGJhcllSYWlsLCB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiIgogICAgICAgICAgICB9KSwgdGhpcy5yYWlsWUhlaWdodCA9IG51bGwsIHRoaXMucmFpbFlSYXRpbyA9IG51bGwsIHRoaXMucmVhY2ggPSB7CiAgICAgICAgICAgICAgICB4OiAwID49IGQuc2Nyb2xsTGVmdCA/ICJzdGFydCIgOiBkLnNjcm9sbExlZnQgPj0gdGhpcy5jb250ZW50V2lkdGggLSB0aGlzLmNvbnRhaW5lcldpZHRoID8gImVuZCIgOiBudWxsLAogICAgICAgICAgICAgICAgeTogMCA+PSBkLnNjcm9sbFRvcCA/ICJzdGFydCIgOiBkLnNjcm9sbFRvcCA+PSB0aGlzLmNvbnRlbnRIZWlnaHQgLSB0aGlzLmNvbnRhaW5lckhlaWdodCA/ICJlbmQiIDogbnVsbAogICAgICAgICAgICB9LCB0aGlzLmlzQWxpdmUgPSAhMCwgdGhpcy5zZXR0aW5ncy5oYW5kbGVycy5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBHW2FdKGYpCiAgICAgICAgICAgIH0pLCB0aGlzLmxhc3RTY3JvbGxUb3AgPSB2KGQuc2Nyb2xsVG9wKSwgdGhpcy5sYXN0U2Nyb2xsTGVmdCA9IGQuc2Nyb2xsTGVmdCwgdGhpcy5ldmVudC5iaW5kKHRoaXMuZWxlbWVudCwgInNjcm9sbCIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmLm9uU2Nyb2xsKGEpCiAgICAgICAgICAgIH0pLCBxKHRoaXMpCiAgICAgICAgfTsKICAgIHJldHVybiBILnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLmlzQWxpdmUgJiYgKCAvLyBSZWNhbGN1YXRlIG5lZ2F0aXZlIHNjcm9sbExlZnQgYWRqdXN0bWVudAogICAgICAgICAgICAvLyBSZWNhbGN1bGF0ZSByYWlsIG1hcmdpbnMKICAgICAgICAgICAgLy8gSGlkZSBzY3JvbGxiYXJzIG5vdCB0byBhZmZlY3Qgc2Nyb2xsV2lkdGggYW5kIHNjcm9sbEhlaWdodAogICAgICAgICAgICB0aGlzLm5lZ2F0aXZlU2Nyb2xsQWRqdXN0bWVudCA9IHRoaXMuaXNOZWdhdGl2ZVNjcm9sbCA/IHRoaXMuZWxlbWVudC5zY3JvbGxXaWR0aCAtIHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCA6IDAsIGIodGhpcy5zY3JvbGxiYXJYUmFpbCwgewogICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIgogICAgICAgICAgICB9KSwgYih0aGlzLnNjcm9sbGJhcllSYWlsLCB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiYmxvY2siCiAgICAgICAgICAgIH0pLCB0aGlzLnJhaWxYTWFyZ2luV2lkdGggPSBuKGEodGhpcy5zY3JvbGxiYXJYUmFpbCkubWFyZ2luTGVmdCkgKyBuKGEodGhpcy5zY3JvbGxiYXJYUmFpbCkubWFyZ2luUmlnaHQpLCB0aGlzLnJhaWxZTWFyZ2luSGVpZ2h0ID0gbihhKHRoaXMuc2Nyb2xsYmFyWVJhaWwpLm1hcmdpblRvcCkgKyBuKGEodGhpcy5zY3JvbGxiYXJZUmFpbCkubWFyZ2luQm90dG9tKSwgYih0aGlzLnNjcm9sbGJhclhSYWlsLCB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAibm9uZSIKICAgICAgICAgICAgfSksIGIodGhpcy5zY3JvbGxiYXJZUmFpbCwgewogICAgICAgICAgICAgICAgZGlzcGxheTogIm5vbmUiCiAgICAgICAgICAgIH0pLCBxKHRoaXMpLCBsKHRoaXMsICJ0b3AiLCAwLCAhMSwgITApLCBsKHRoaXMsICJsZWZ0IiwgMCwgITEsICEwKSwgYih0aGlzLnNjcm9sbGJhclhSYWlsLCB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiIgogICAgICAgICAgICB9KSwgYih0aGlzLnNjcm9sbGJhcllSYWlsLCB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiIgogICAgICAgICAgICB9KSkKICAgIH0sIEgucHJvdG90eXBlLm9uU2Nyb2xsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5pc0FsaXZlICYmIChxKHRoaXMpLCBsKHRoaXMsICJ0b3AiLCB0aGlzLmVsZW1lbnQuc2Nyb2xsVG9wIC0gdGhpcy5sYXN0U2Nyb2xsVG9wKSwgbCh0aGlzLCAibGVmdCIsIHRoaXMuZWxlbWVudC5zY3JvbGxMZWZ0IC0gdGhpcy5sYXN0U2Nyb2xsTGVmdCksIHRoaXMubGFzdFNjcm9sbFRvcCA9IHYodGhpcy5lbGVtZW50LnNjcm9sbFRvcCksIHRoaXMubGFzdFNjcm9sbExlZnQgPSB0aGlzLmVsZW1lbnQuc2Nyb2xsTGVmdCkKICAgIH0sIEgucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLmlzQWxpdmUgJiYgKCAvLyB1bnNldCBlbGVtZW50cwogICAgICAgICAgICB0aGlzLmV2ZW50LnVuYmluZEFsbCgpLCBlKHRoaXMuc2Nyb2xsYmFyWCksIGUodGhpcy5zY3JvbGxiYXJZKSwgZSh0aGlzLnNjcm9sbGJhclhSYWlsKSwgZSh0aGlzLnNjcm9sbGJhcllSYWlsKSwgdGhpcy5yZW1vdmVQc0NsYXNzZXMoKSwgdGhpcy5lbGVtZW50ID0gbnVsbCwgdGhpcy5zY3JvbGxiYXJYID0gbnVsbCwgdGhpcy5zY3JvbGxiYXJZID0gbnVsbCwgdGhpcy5zY3JvbGxiYXJYUmFpbCA9IG51bGwsIHRoaXMuc2Nyb2xsYmFyWVJhaWwgPSBudWxsLCB0aGlzLmlzQWxpdmUgPSAhMSkKICAgIH0sIEgucHJvdG90eXBlLnJlbW92ZVBzQ2xhc3NlcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCIgIikuZmlsdGVyKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuICFhLm1hdGNoKC9ecHMoWy1fXS4rfCkkLykKICAgICAgICB9KS5qb2luKCIgIikKICAgIH0sIEgKfSk7"}},"time_used":915,"timings":{"blocked":817,"dns":0,"connect":0,"send":0,"wait":97,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/nunito/v32/XRXV3I6Li01BKofINeaB.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.912Z","timestamp":1785145485912,"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/nunito/v32/XRXV3I6Li01BKofINeaB.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://betaroi.ltd\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: 39128\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 10:29:09 GMT\r\nexpires: Sat, 24 Jul 2027 10:29:09 GMT\r\ncache-control: public, max-age=31536000\r\nage: 256536\r\nlast-modified: Mon, 15 Sep 2025 17:03:34 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":39128,"size_decoded":39941,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 39128, version 1.0","md5":"166202cc391c71a57730bed12cbcb159","sha1":"76388dbfe374be06fdc6f9ba38d3f4e479025eeb","sha256":"ba344451eab25b217a165363b1982048a5e5830a0daf36577973955a04cac793","sha512":"9f4d1c14aa729e837b964898a1dd27e99ff674256c43326aa982cc0c17fa8b0d71a0b7df627f03cb4ac6ec7f22f0a19d65302743ff09187ce81414dde74c43e2","ssdeep":"768:lxbc6Qon+A9wOfdj2rELqjOmaLqLqKeI+00t0xIj:layndm0j2cqjOmGq+tbUIj","tlshash":"d9030284fd6a02d8c7fc1f6ef25a9f28272c2078440b6a9c44a79a6bd5975f84dd3330","first_seen":"2025-09-17T01:48:11.920934Z","last_seen":"2026-07-27T14:15:49.505533Z","times_seen":40913,"resource_available":false,"data":"d09GMgABAAAAAJjYABQAAAABUqwAAJhmAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoQAG/5SHIouP0hWQVKGVgZgP1NUQVSBKicyAIUqL3QRCAqBt3iBjzgLhEoAMIKrKAE2AiQDiRAEIAWIAAeMGwwHW8M6cUCmw4KLu9ebVfX4cMz/iBWqWzo56s0yDp2XDxZwY5x2O7jfx1N/Zv//JyWVMTQtPmmh4H6POksahVxmj8GaYywIM8RRiBzq/YwaPfj5/cOVC/G/qbnF3vdpezAQtKK5dyGpXhhlCK0mZYWkQiZ6pcALkkNDb0oORTk0tCQ67V3miuZUjVrm+XHd23jx9Qpl6KgxDB02vC5Xm2huXHLElu/H9DxguifOryx9xY4jZE4leMy97zR6JjFHmFcQSYjFJE7ITI47XrsI2jqhScSamabXKLOf6/Giefk8bh0Qj82hSiRtrDjP9+f5uf259723t71tb8E2xgZjRY/siYAYRZTZWNh8ZJRF2YhZzArCL5FGof0b/VHGzB8bnp/O/1NYk5ubpCaRWkwbUWsjTSppaqkKxboVaAtsXgpFpfiYIGP4BtubwRhv+/9hMjf4onvrTXVvSJFwTyQY1Zgdy4n+Iarf73l79r4PiArYE2MSCwjlSTj0iUYNKAkOT/8d4t+Zt6lFG2CzWMAikhPwEAbEv/4deKfayyALECxLloljh1oeHOEDpHq6ffwcE75x2y3FpCHHPng36wfvlqWGeBEPDSZBQxCtQM3k9POeiH6duq63NF02ly9e+sSAOxRAwKBuZiJy9kS0MDPEPEYJlVAd3N++f9++Lcwt9PCMZvIzJnJFhtiQIStDftRZ3xOQJRnjhIc+MLXXAlUERZvxh/K65uq7CpAHdzeZgFmCz/3CpqWB8gq3cIy4MzFrIv43aeXqGmvz03fVfxGRqCywWTXiBdB3nn+5gqZz78f38hfy7GyP2GI55cCJ/8upzcRJ4Y9UlDRFAkEaB2iZ3It1XHmXBSU2rwNkoCAq8uvpusPntE8ZQoOZz7RFplu7x6JKdFrmYQoZEseWQYhPzAPvaZ9R7nb3RP0paQp6SjuAlQbmQSZ4OPa+H9HUrbGZJugB+oqggLHBnENOWQD/VzazdPu62oA7J4P0qDVj+shB+kkizWq1NxqNZaDdORlYJ8OBiUQ+fIYQAGX5ASgEDB3kDp+zHCgIgs+jDyP6+1K1rg2Jj4LzJ51+b/zc+Dmx5a25hxSOPhw3NkC02IAoTQNU+A2K1gckqhpQqAYlulrQcGsIQoGyvGVp6YmaAA8nhPwAka4PyPK00g4mc0JMsjbFcNx82tt1j3u5rpX7+TbJigKhrKpXeSlcaHqFjyQB7UnV3haQhAsOIXR204nOdaxqcPYtHrhckPnE450uxMi3wOoAiLLCj/p3zrEMuXLRdvYv3boXiCGTmcL/2/Xy5OVl45sF601F54CNcT//G1+qFmTB+hdaMKxw4X8z0fdl6aWHhTGkhBBEZMf5zrdynrQ97sxeIQRjhFGNMMIYrxvCkB5fQ/7qe37//zr9+Jn7PM+x1ahRFVUVEbFE1NnWMgPB40xhVqSAlULw8dvbTLaaPdfidiEvZoXn/zG1DOzN5b3Ua4xMlSV8BBWp76ACpmtmL9hQ/2yfAimkXrLUWGHa3rnp9yU/+WERQgixFmshy4rLOTP3FQBCSABACqAOwG1cmJYYgn1liRQkInoc2Ix7gRFgekOMhUQjYkYGi5WiVzNERIpcHVLkGZWigC8yxVeWmsfmA8InnxH+DQVEaMQHIiLkiIghBgiCAfgBEMAofWcIkEAhO7wDBIUKA5qJ3ABNBmhkrlYijZLeiwjAhrU2b7dlp607dQKAAaAY+tOV0+sf7ckjY2HhDuP/O/x/eBadxZfJdXonW+VB4UhEE5bynBfCKBUMEC5dJ48pZsTey5xKFnAtrAhFJGK4KWOkjcyizSBDZ7E5bB5fwBfxLjFLdIkeeYw8Ts1SJ6iTtEXbtMMYdZkASFkIOYueTc2m5ZByLpSey8hl5rHy2HmcfOaJW8ArLCoUFApxYrykiF6kKlaX6ksNZcYyE4lOUpHMVBfNQ387AsHFv++EKCkVyHr1AqegsbG2pUCxu/IkNFRrQfc0ywzCR8GABSJAJFpc9dcAOadXhgJyrkBLAzlIAGC3i6zGxOVvQwPkt9ciQLgqzyUgB0i2SuF+AapMDYzLkQQEQIAzSJLp57DdoiCZ0XlE4xFVWxOAOHnSDZYQfv/kWh0iYOt8dDBAPcYgvnDg9nAGvHee6G319Fw6ShxFt14ApqUFlb1ttgL2zOPfAM3h/jK0kgrruFD//lFf2n+YnEZ+dDEKzROAA/eK1lI4DCI/A2AAEKAIELFnw7yzBJQ1mHMP8bmq82akdt4EtBRZMBPpQh48benrAAPr9EvISeSSJ7O3YyMyivQhdUgJzqciCZeWhYQQ//zU/YToR1xDXEGcQbyO2IXYgHjpUvoMog+RQETyeh6ECaFA8BFUBIFLyUJA2cJcf/xbb9t40nX38nOP3bNqYev8ZGthDM3FNTu04eEd2PfOrmXnHLPHrVJab3zb3ATfvZaCV62a//mhtBUAEH/Pa0B8Ny/sNt13W+cKzY7NntkypbNyFszrmc6lZc6wSRiKAPNvPc/RjGwYAvDvfdUXvdnWnuux1nZtF3Vmx+PI6R1Sc8Nqqr7SYvTpsvGv9OdZvzd+KevhgqX5899B8P299L8vt/8WWcbzLB6YKjZ57996EyJw/B8gzpmlnf4Zux6ys6hTeEv/R7ZZG+CH19nHFtBSJD3FSJMQVfFrXhLvDgFuJiGuAN9wgMxGQa3C2NkfIOgj/uANbrPZABrob4qZPoVqpE+pk8xC+pDE0gm10um8irJIzj0tZ57fBRGfUzZ8nGAPmXgXYisNU6mUEMkzea2vLwh57rWTDylTh1TKXxdB0DVQV69aMp1/aw3GxXkwC0EON/pXa4KQ1kM8tWftbyYHgevuFW1x4bQdbOFCw0ZhtcSJ7qnClDwlh8dMAwLv/Hduy8v3hK3nhcBnb/tfyxcOq0Mp8tlnQFDqdHg3r1cAfnMAwLM7EPdQ/2ue8D0FPAk2OUXYWDuTHDWgMhhmta1N13lMq0TkhCor+S6Ny04Bfy229MxKRy+Rxx+7y6BZJG/nQYD7AND/vXlnU35yFEehoFzwE7Wf/PvAfBtk2eMHmPBEPosFZ/jAosXz3J8hPSWdHSLO+78mWxVMY/ut/3jA3XlneZULaHh+fYqgD8DfTxebMbFdnImfcEI0Q5MTX3e7zsiSJsd7alYOQFii4zpUzPGw6xrsTYhuviWFnvEaUQ80ZqFBTK2h5XMEgH+U0xzPwCu6k1oKginFpHbVhc22fdfNr+cmlz4Av/G9eWe5la79xCFuM0PELUpxM7UEqPRDIXyR2zj30OHOD5Sg4xJn1GmWPuD3KkGGzzAcxoHYx2xUoAWDMnl4vu8vQQSw6Wkmsn1UOVJL15KRJoBTBgAShYBsvij0zcGJKBT9rVAG48KL/4CB530BE+D/me/3EC3AdKGXRcN8MT3TXfRKpasc6aMGQ263P8c/9WSRksR1L+TMh2+66dRuRfmts08hzKS0jClNlnh60cs1FbdaOCSjfNQ0IxvNu8vmUz+XoGuuO9NOe4akL61zxMMB7f+vt03fvI8C+CbvE9D/rG/ODvX0c/Ud6sswTeN8ws2e8bhlcPUkbcW4lyXv1r/aX5vg7jfrJb56qPjgQ/nl0xdk+NfmKjdFhX+FH3i30qTl3sA/544+6lFoFN6OvCWkLPN/Jv9eXssL7jlg7A3wv29OzSn+Al1vZKk+XOh6xrmOrT6eRs2R9T6VtHo8fq8ZhmkyJynPw1H7CtlkGjn+Wxf+1x6osXjKEoR61+xcLWXOybaoe7M7v8N6T5fyms+5aHlukBlpw7Oz4Q3JGrbtmc8UJzL4GknWlVGXtQO6052cJPf1UfHop3865jw/PKRZvOHd2BFy7N1lr5akCu3Afby/NbSZDtegzHhSeLYWjWHJH/3ILOXUdUd91YXGmYgGrOwhKGNyr03YZIYm9O5zUI6z+OwddYE6Jxwqrn1wUB7Tkwx7h0wyJLib6Mc1Euec9HQ+coizHNBPZo+W3+8h4tj969t42NafNeca9Svwxklrv4+lNJp4Zb58L2O/+Q6e8RW1mHliOwMpa878stFKa3rd1bSQuadHsk13K57NMlRWrk27QVbPGc87Z2rpHqvEqlDjb736S1GeM68uT0KvcwjFgqQd+0uP5ue2ifr16+/YGJyMRHPDDGGPg45Zx94MAzJmXJnVVDWOE24L0rPcopJforHiDq96FYvuNUmaiaQ43719wY3LfZIx5apcJcoojYkk4UAby0ZbC1q4l3PLgprgW0hJ6+cH1eqzxIRC5670vV3TNGW+FrZt1BFeuvxFDVZyLGw9oLBvywQW5XtA8DPt074rxDO3p2nfrsmgB/R0crv4qE6UOzXSP1cYI8u4Pl3WiLsXZ+AcI/pEqkryLTuftGq10bK4t1035jHYbCqM4oMhaYw3l3pYDt0uL6+1uEdTw4ZDddIfbz19b9TIFTBzcvFvrB4/I++yo/kxykYcYLy0fC17U/jURAb4M8IKidvu1VebPKykQ738MLjir4Ev+MxPw9zYUkAShVokfs0L2dxy2CX9N+ViRKwcXSJ0GKwPV5HwhnRS/PISLMsAMiDHS3H63Q3PTN+B1bBHs+VhKKMmzvXBqMD2pXEQb4Ir7jo0KjVlzxXEyLQOc3OL8NFJWfVfBiMf7vRohWabV5DekfhN3vuZny9/yBf85yask9FkqvXay2Ldcegj2JM9NQmrtyMpE2eSdWqehQ1kRk+8sgZM1i+LESZL3bdUTtYEvXX6BvSRszDVL6G8Pbw1MlEPhb0LxQQKeQ36eowh5DrLlap1A3kjfZ4jX+5SCpczBKepcuzH6MO9KN7RvioEeB/TLkKhKURyFXMn/SRMlaVyzi2EKnfyKpEpkvYfSdqnL+rY/22EvGmJnlEUS9EJ6x7LEElw/iX7mwz0GrXdyR4bj4uTrZEDbd70T6DwDOcOfBRS4wMyyoIbIYA74GKifV3WLnnK5UrO6tb+JDlnWouO31Mn0aV/hCE5LJG+lCt128Fclc6sftTkyDT5w3ni4GdJeiIJGoWjVMnNbh9WyZFzxyYZF26FdeZKT1D2pqdXqr32cP1m40xJa6cBzzXstykDRLOAc4TlqCcuJa3IZr+vTyRPgXYS6ZrI89wWXuRHcEDrtjXxlec5Z6IP6cGtneEjc2fHI6xvHGmYy8k7/jDXzHz8WX4EuEPvj3KgN0uYI/7Iu9V5O/cD/qeM0v33cQWkIyjI1e4uR9GHLZcVCmR4ZPjZtd8rFqdH5chdnvA+IeEqcyMvrkRs5kQmcF/hTAat8qjjvniKtC9Yc/RlqYpdR5t73inwaY2ziPpgm2rW0w7BHQmCQft5F4OyOF5+OWeSX6Z8EKrptOhju/eXUA024sbCOTmAlQmye3kqZ8v84znPXo8K8dYc6XepI6CHrB0cN8CLK650pHSqDW3uEV67MD8EqdTl4ocGL1dQo57O3VqO93LsErBe4c2FHYwnyXWmCI5wPGNyOUcxiMDM2PGlPKZELI2SujXwFuOLqAGywSvT3dWm6TW54y9T7l3ML7l3T2xDR+zLtV60TnZsirKxR3JroTlECV7ZW7rFfX4ZvO/uu3LvHomiPHjP7SdRGeu2PHvUxVDUQXeaC/OwkzNkSVN6m2L7uReLNuBEaJNxAiWOAX1sYzyICIKDiTT5nLmT2JV/+PX2T46oabBPcF/miOYMDoHLGJ3HyLAvbR0oy9Rp9CB9Z4ua2/t4lwaW0U7rlQqinP/1ziRqggfP3313sa7VimxT8bJFsycrwDogPczfGfeoVT3TE1zPkhoYKImerCHHir/JQ0rhW5Oti6M+optnss927EK9o086BfrLVKn+vtRvf/eJF62F1wd5Kv+fXuFrRk+5n7C/smhB2Lvbl8ajgJni3i/vJHisGrRzJ3Va98I5TysDvxWFWtKnHPQ+M5Gavvx7RKPc/XmNJie+/688/fnrnsezP/CzA3fr56oLRmKJMBovGTHnsWdfjzZHPz12ZFwn9iHsHXZeB3xLhm9Z7idktvscV+AN3py7c7bqMBdLZ+0xfsEVggTuMlp1u5pcoezB+RpetpulJ+wwbtErl0rg+Slp+Zn60m+HvQu2ACG3oUlW7mij6GdhV3seh2zEjniHn9uGqdAYtul7R2IOzOOdPV+TdYu4R0RjIsmfw9XAf6CA9+4dfVh3iiptTACJXaKFXI6PQk9bYo29VtjhiBJWV5Rr0GiTZq22aNepTrdHdnviO/XeeusCDN0LsBGYfS9qSiU30KpNIxNcp5Ixk2Rq0bhM46nCJBEyJIZvQI0KbFajnGw4xJQUfDSEVIpOQeilIIWUkma7AoFA86zfoRhGHAXOF7V2EnPJVa5jiHABEqbDNx3gfH+837QMCcGSQ8j+HCRoYjFHXjVX8RchYCGLvgIv4I83vBgGIGck12abOuZJQipQl5Ny58GbD6EJA8yXUQmRkVJRBip5hnIk7czlg1AwPkHPiwmh/bjFAlPypDm0bbmy79AUpugp7ESKwhW9OfZyjYqBZG2NKEPxYWJTKQElBqBmvoTMmaotrhc+OswJmeKQFwI6QLYmMVDDAffImHHgBw4jwwoltxZ8AlH4lpgbsByQPI8LOBpePjlnEi4CYzkXQYKFiyAy4a8NIwUAECHjQgcuEMUylJb4eHDmoxhG/BB2c30vgbHT9idKZgJA07EEZ26FK/JXRvlpjXA4vPJEvNqzd7U6hYF1Tinn+LwQDZMUAZWCQsIiqkRVGzBo2IgFllhqo32sTjnrohatu3B0eD1wc8tGSVEAWHAOjwGgiqYwgBYggMQsUtOOuihFwZJ9zZHtq/OkCmjSTe0bAmpboSQAMvlfMICVGMQQhPUokVXGgNXYip24tHaeyF0vilTYQi0HpmI6ZmAmZmE2jsGxOAvn4erXc4HGJlcwKrTxVK7jgl1G78ExuoE38ZaF+d0LOBjJP5+nM/RkQcAUq7CBXRFMjXIbeBNvRUA9BiGG8SjBfMzHfMzHfMzHfMzHfMzHfMyH/Eoyec5LlnQR+I6ex6GcpAFZBjJIxWixVCymYvSGAIzayO6mxxEaecJU81d/NgSI21ZIKOi9p5aXivvrcaAJ5Ai2zYuPjiYO9AmbPKT7oTPaN7PLGCoWcE5jdQGUlzs8o3EVTP93Bs8DBleYBEHrCscKqFww1zRxzVYNgDkaEykA0shFHjg0JbBExAzCBPHeKV5fxrErnZAZbF9PlIkt32dbcjPMyoXEPdKE6NVk1hZxAhSy3xDJlIYTeFhKFQ4TB9s3T6HIASukTgMogngs5OC8mEZGf+WcfgrXXqmMtQDnTntzrMWzpGpajvQRiGvpfMxd/P1M0j3SKcqkcLbCVoCEc8qRUcIPmLHdtOU+Q81pr+IjNlxBhkkGyeCQYhtciVfutiX2BGwaufQ1gGhQA3wci2MXMsg8EbayJnrKbEYqkDlL59UQjc6dY3xHyv071yejoJapxs+/B0eFRSIs2KSIW2UXbjI4DJJ9GY0UKb4I0oBDxCixOzMrvK+tuToDB30KCrKFmOszd2E/KAD/dfO/01/5geV75m49m39fiX4nSbhVZHBYYM80F/FOmThQcSSRxiGyyKOI40CO3S+FQArIct73p4AGIDepZ/MB85PPIf+G1Bi+/xFRC+TiEedOLE3USQajpE4GIEemWCNGStJePdLc+sqZ2MFN4a0RwxGlgNohzrpwjgYyplowJSF/WkSlt1BwIHbP7nBqlaku+c+0PvEP+7umiDEAjldLiEWCR2f52DIMocjx45QzkqKPrM8w3HiH50xdpngkww9IIgCmUnVkVwtzxh3qzITvx9MdsXIBIcOXCOXD5cieAYLz1BaUUkV0I4tJ+BJtKaC1zgaV39tJTB7AMKARzOAECYeniOxVuUNu/CqcUO5vUhGHWY1xvok1UFnA3XpwhwqIqVTDD2L2jAitF4tzJGqasCccKiUFd/9Vh7W8sEAKUcIYRHv83UnDKwSAXABUAGQQAADp7eBTGcCywjMrTa4xtcaLG7y00fRm67bas8f+/d484uJp757xwTkfX3T1oquX/O86PQAYAIoEUyKUMdIhukSPOklbjM+6rM9FfHR2j7om1eWm0lQ7Wk8f6ENjZGXmmjWz10sirD/BJ1IavsxMspCsZDvFQXFSPTQHzU3z0L10P2P+URxgVDBDrEpWkB1hV3Gi3GpeDb9OkBA0CpulXfI+xaCmaRWc6HPdZIXpRgH8eLMBGDpz6BhC9A9DdhFSYMa0ISEvJlP7RwLOAP2Ywrv/zwFyeUzPAHoFAKBv2gJAi4AulTiTwGtshO/5mVkd+6vGE2teH05Kw1uUZAG12gxJAQCooBtorEMmIMI4JKqZhz9wXtgH2dC/L85u2c+7f39Cmx5AlF5uDcXRgZhyEPOJ6+8PuOjd1yAaoCT9RguKjz1BK4B33wgh13lLA+DiSFlCfM/I2sbdgqkAvlohf5EK/YswCkxam9rZZ30xiCAJHmF4RrRn2ntbtU3btUO7bY/sbaFep3ZZV1jJyDxNHWUf+qa2cTAQHcEdeGfLtn7mlj3M/qkD5hL9UrAjuzPHzdo/v0r+EPmDxxmaEPwt8p9AP45+6U3c2or+F/oF9L3ob9361t/dukBZxB4jyisGQLZba9Dr2eXrYPRyap0tej7bfLXHnXPfVT9656EHWrW54menNLNqcNoZf/rdHy7ogzD4hERk5BQHCs+n4UpLz5uJL7/0q0OFFa3vL0qnRl3eaIlarCQWNg5ePv414/XFVKtRKy6pTbsOXboLRzHU7X+jLvhWh7+dcN73+v3gpe88jsoTRW577Zqn0XruL4cdibO3HrkUnUMs7jhgv4Mu4sBI3NxbCzgk6/1BSk3JiQpLx52BkSc3v/KwmlFhoognXqov7z7EfYpJSCvJKyjqFL1fbdYYASFT2B/KtKAzLDErbhIbMUTv3wDYQsJNt3TrdUMPlGs0RmS4mNkXTSfgRy3xgyU3Wc0QGhFCzBPDjwwJgJ4dflQoAPRrdnQ4AMmhdkzoGRhEY8O9WMytD6Fx4eFpPxp/ETW7RRXM/jAA3vCpaUC94BZdHwDyawbKJ6rtK3IIsKLtHYqO3e6mJpKsfKSXP0ydGCYiJwKsMytIIJbW+WXfKThZwLvIimEtl3kZiLi+Te4KBCyydTtiZ6KBTrcun3SwoxdLsqiDGceSeWdHfpyWDJKgJOofIIf+i/nEgnqk+jDg8LukUN7szRJstbptk9TIVWyWXMNfyKO8uQvY9bxDjpZSiXSz/6yVcza7kgfYbV5Vch3LzOEFvEEd+iy5gGWOsCuXyuXBm9vXKUmkG7MavluMJxWrfKYWuN+Dlm2c3SgmYUaDeLs9epyqcGZNzhb2iGA+xGbBxmdhXti9xXOGGPGLnXo9WRYVHEddm3OInbs0WeB4rws4yCZHGp/DAnY8gj4vHzlBrmJX8DXGERSOrpGKSUy4DMO+Jpndx3JifL1WOquErJSgY9oRdo1go2u8Y6sgsuZsdpUJMXBYgcI/bSY7o5adyZzXTJV+ZlnEZ/CfGF4d4usT5PXMxnRd/6x0A7sud33LZlUStRuYpTkb1ItozpbV2pIITGC5XCJwiYqS+KanYcgW8c4BOb58AasOABa0RnMcu0Axluq4Yei6KWQc0GwbWesrjxW4Jy0r4U+/jkvZwoCsLcYW3uh2Hl9tUT2f9HBeb+9Ax48uK0BlE0OSCla5DluQ+mfEuup2mu0YdjFFoLv0vQGv016lB792iMl22fY5Du8hH1k36lz90g8Mg8u7hQ9hOZFa0FS1wWU87MkS8rHO9q5PSbHEYklmuoTOZM2B7Hub6D1mtUdzzTXo9EtSQoaqKk2MAbk7bufOKtmhK0B7lOkXhtfgf245NApHN4xsl2Vy9xOrPuVXjCRD6zeQm5yeoeGjW0zTsnx8evrOUJa5d6cme5k2lKThpuN2zQB60rXyGRis40xhW94x0zA2w/cLn5qWYy4Y3Me6fjeoBHpXBVSJesSVy92vJBCcv2xSNyrj8P574F4txff0O1RGSrn9Qdi1fLqp4pyrX1nkJW1ce5x+hphRwR3BM/4Yv29Lb9MpvIGgsWanAA7bUjU9pJtsNml4K0j9ZjB5krNpehJcpcqeTtSGHGMwy70n0+pgomDuBezXqSMTe02dPQRvdi6ModnxTtQsZLfZzYG6PzRoc9WBoa2cNRbQDqshPF8AkxcCgZrMGwqOvFHUdbmgoHeJDZ5zE986sFl4Bt9VkY745Dw32KE2oS9kHfyXE0qLuzFQNrbGqr/uy7zxPgpqKi2ZI0PHysSp1bjLoP7R1YA9L3+GaEvKqWy7zs0I3ZErvr6mUgthNRz8gCBy4L0RoRSLbX1Tfl6+j5v/UKa2SHl/Na45VgvIS+QcQ+nNC2tp/XpO13u3jP15q+G1BoX1mQudc5Je4w2vrhtv6bpp0s8cWeHIxhLge0O+oKsiVGJDYARF9Qrm0swvTmFNyQUZidIU7rM0HbmixaWxpGkgRr5r1MwFudfTVrpmYug8iJzeL027kUOwugX/4OgVB88/z25NxgLpPAj4p3nk3LFA4AHyyGWFdMrhQNEydwkPmLXj95mgpWBiprA3DZBcT4itPf3NZeO7wF/ztnMBWuRQCfr9CpLfL4GyIuJVaEhEH26pHCGQlwNK0J/jo7AeqLbGzGMH1NcNabTE+YfO4Z4/xaLLW2FfGJMwpnCUPwvjiVub9BTh034M0vuTsSCzr2VdE/f5+04NRAFTTiDQX2xGfSoYMyP9Xjt8xDeF1Ul12zjyRI0GNp3ECQFlRK6TJUTUbZApWYyeVOpape4p/OExfeBuFuYHjolrWVBTPrG4u+xUhPXw+D78Max5K2ZG9KPhI2GDckV2kXosPDKIX7BNGU9klCsQG13BDz+Q8evC0pZUCL6KuWzjPYCS8BoeRH+EDm7Dpm4/U7lHjvVDV7PJrb5MBnSNuobcdkuu/4QvGXs36oi8USh0zVyU3WbPh5RYM2ze2r9pf7gwbQR/JJJMig0TPjiA4Rg7DQ0HExLB8XW4dWJv9ztsCT6f+/sxEbHY9pSgoINW/xWVEE7Gj4fkYCAvkPTFCFUko6yihbKj7FDfW4dPeLaVsjQLRqBJCkoVh3Rq3jfbqSVe3DeyZe162rD/yhElZtvBUY7extf3Tz9I9YO20jU2a2b6NCKI9coTq4q0YKP1Z+jj55i/s+3Jk86NlRGK8yVFM3FZ4mx9/wNwbQ2W3MFPTSU5zPfDT8a6XgfdH9WQOxbJNSh1XsYxVHq3YtTsOpE9v+B8f8pG3v3JIWZvdXUwvtVtPqIKL3rRrRInm4+plZ6P+XnDiyNBcftBmUrhiv4uTsfYWw8fBL2t68bcCNjxrQ6pWxt6gs6Wjdk3FL4GeLTg6CmkDbbDQ9KqG0j3U6nSrKd8hXGvzm0x9qAMGo3s0vzq8XYrKd1WspDMDlrEGZpYWwjntjzzk0Whl/hPHVYzB97027NBNxsI/1ALIHkjHYB98ajrBO92JNla4dJTsSRBArqhmUqkWfra11LBOAUZCguumyGoPLOkDvpzABjbVYqdfPAE7b8YaH/+8+dVZEbZQ2K1jXvDL8RNNMoi3UQ1/XB8XDVwawR6rdb7OZhQ5FCTtYvfv/PKdWw5KI8By//gAdJQxkmC58RveFEn0OpkDnl7c9fU0a38Dy+A/zX2NSrB48iuBFL6onDLtiVbBpNL472z6Di+6aarYTFVIf8vnuaPc9/zNiN1ciunwa7NBhv2ZoLtShuthWDapa5xrsiDniZxvrCVe+kzdG7SHsgh5y9LA+6IfGITfclTzf9JpXdCkuIjize8q68/QpYTo0vWv73BQlySq0qZgarBtGIwV2HGT4z8+ZyRNewq8Zs42RBfjO0HaN+jxGkKIF4hhvDRGizyK872jrhIacEcnxaYCoQPvVLwLm2003RtXxbyy0+wpyik/ZlMXnHvkCrlz8KaVcx3anjg4KKMdSPnHSsUulE/b6r0boiuv/XO86L1lr8dNqa9m7oGt6K2GGy6nbYOacKdUuLyllv6G8Uno3M0Al75l+KX1SbnghwzOpxM2/Y725PZI5BTtkjR7FiR+a3k6+oKS5/lbW6QGAldpbXexcK1/uFRHtGXCEE7IrWSpbB2l9IqIef6B6NfUz0uSei66LLdUkTO6sTkFxYGwUJGYqy7SCWxwhmHAYgxNNYamWwecdF1EKxTLfqSRetQbcHfr3mb+Czuq9p3WMVAyf45Ji+pG8WYeWzwSKJNDTsWJc1ebAyODRyOx9UwuTS6HowMfwVlnHNewor2KLPq8fc+dXzoREVq4f0V7UIDqVqTp5TrCwHsp5fGFobn/aa9XGW4Mtwo/VuFs7D0crJUuUQKEVRKiJt/lajUIirF26opzsSXytOOlWiDTWLUPJTVXmzo3+LLbjNvSCGnK7Xl6TPDfuKLp4NZLNX/uyeRDtASmRBokWW6Xjn3nmdTcEMY7vNGtpXCNIH7AovmUpTyYhFSuyzgQxczCQE5mDYuW7giW891X0i0UPJ3YuEwVt+B9oYbjbBGp+1lQToNUJNbRRnisE3YIu8z3h5LYjXU45DICKIuEnGD5Wd5OcP3gfJF3/+iPQDH51VXvVzlBzoQoHMsMyfTaPPRL86gQq5WGDahZ/B66imIR1l7dl6MIxnMNNzeU5MbYWc4/NB5Lgs9C9nb3TPF4ye3Kl4Zz/m2Dk8ti3xWubRBWfrZUp1nsOjjRVW5ZmJzuRe65Qy9u/mHv36o2L2NqQL+3pp7yOVlV96HzXp/xKKH5v4EMHToVirQ0tEbj7zP/73ptfTP/hNG/52fPVD56GJfxDiJz4Y4SX909ix8dbuJjwauXjxz4vU5JNvakDjq2/p9d1v7r7//75+/QOuaIpFdYIXgfczz40fjY1sDU+RXGb1hIzbNgYhEXbWD8a571HvV1TaXu9pafY/2abTGYbHW2KOfgkV0w6qQY2tPJWOZr3qg3GEaYEw0a5xrPh4aSJA0oWGH+rmm5saUryWkaiAvG/pojZPYdLyXMdBbd2bX0aMHQpzxcGQpp+Igdc7VS3O6KYOeDTMb1s4RyDF4L0qvh7tLY/UFMVa3Czapd8lpMzD0z5qmUv/1Wv3aQvAi3Tld6dzaN7JrtSxgzAUJzpkzwT3J07xseH77i7KGnG2vFR6A96FQe+Ez8D44F3IG6ofzwQAFz8Fb0cIc1qNlX8iuya0QG57W8IUBXt+Z3BrPfmHfKQix8oV5A2qn5p/L8wPcBpeZReZ07POaNTO/QMwMYWissviFqpnivTB0fWixfR5HsZQ5OSfeZ1cm0aoU0WCNQjG2moVQM1KGlECTWidQ0OxwNmrwwVMFhBLpiUetlZSUFq7MgMW4ZAt6vW+59fZzeRPCQaFGU7JVEHKXJZM70Ucoum4q7NjaXclY5q3uLbfFV4bsWyLKXO6taWylVw461M81r53ctbTi7yxNM1N7wK4jR4/tn6qDYleUO+Q62dRX+l9x9VKdHsqAZ8PMRrWR9egT8OPuwdZEwojuTwvjACp4raa6wu+H/WuuWWb1yKc4kRdv+T+/Fg1sjaQvOHcpWxnnfc/q5+tO71EqMFGSNpvq1OJQM9s2B1FbFvV9ak2fQqL2SPo/e9VYqtxIZwRQjR/X1Xg9bvPJX/cxENOCqkxX6aMmt2smrelestTW2Og1SOyqioxEdk1WLOzklNl+CjuLDZ3Ud5s0rhVpzTvryhTKMJVv5SuMBmdaIrspp95nZZaabkdxgEzBc/DKv+EGFOo4TJ7k1N+Om20GbWgkGSxlLaZt1phlw8K+kZ7e3pGFG5rtb4uqFg1rgZtCf+EoWk9n7kSi1kqLN+YXbZTuQUErcLSLY1R8AbgUfNL5YFZxEI3ao3iwuejBeqff2kq7HeHhZsZxGL0xI5Un0WjGx9it1Tm3VyvnQBlvD8byd5j5Sh/B7kFCO613xZhbYutOCFqLjXylh/8OJ2P2oBCXLD+55T+5ky+BYgqeQ9fuml8bSZ9BQq9Zf7CJfrBxjw05kZacX7umNh+Yubuc2sjpZfnH0EquQl9oDpyLRe9X8BnNc1JYOrrENVbQy6DQGjoy9tH4BpWca2LTXOV9NqleQ7flDi07O8J2NkyG81lSK6XMrWbB64PwPduKnvndpAGPaL6TwtbRJR1j+d0cCquhI30fjW9UKfgWDtUnTDoUBg3DLuCTLpLPdnnMKGNOgaHZYgW+yUWswqAkFbUP3UJp/kNJqjRzRWKPgBnVIBtruyMkW25h061dDvXgo2ARL9wTzPZnoV0NUeBDW+I2DLorIlje+4Y50di41WKIq4Tdbpeop05loIrd5YxaQ2N1l+/vR0eNsbGmC0hoc0Ir6nXJidHn/aUiqgf3jQntmP6o+fI5F5YefyHPJWiM9QaJ5y5P/2jagTZ948EBNK2Pq0Q9Lrew2z5vg6Xe+jd6aEp6gbvQf9WnmIbCBLS+XiZqsVgkLeJtZRC6yUL7m9mgK3VvhejpDfqXr1XXvrxYBFffndm22PXpNuaJw7cWChOvp3tHksUYtCcp434bvl1i9ZObJW4OI6Ssqm72id0HK6iKRRuBC21rUcq63C5ZT6PGwLMVs3BBCXY/epAyiFaTQhauWOGT0GtUqY2Jjiq6OQdny+LjKiJYHATcYS98HII+yapmmZFAPIB4sWcNgzns++HnocvGWTyJ3gtBe9Fjh/NAaaO4kfi8kaWY3FJx2ldQ7nRXepfDNxtsZmO9StRhlRDDz3nLhOYG2010r11Cnk7Wtw58LXGXM6Lq6poOn9jDZ1Rp5CN3glkpZ3YjRlOv0SlcdIpfTbYkVuJWW83u6lofIq8sgjtOI6fh9XBbRllGZomO4V6zHswODF+jdilxM6jvvzI/aXnpjxV0p52cepdOUx3ORJneKQfmfXd96DMYWosdBj8Z876eKV4Jod7Zg7o97//zwA1aa/LZi1HrAvVfXPhjJLQchT7+SfwMaBew4MLrOotuRhODWrXepTmU/nt1ol5sppN8GhV7JFad2T+xmVB5InvCOhrtNml+whjaEFeLul1yYkym95aVNx6TpyzPH3cx8Q5J6ye7NDb6/N+Vad+dnrZoljc729dd5VWFpJxmO3Y/uo/S+5uSFDRzRTK3hF6jRCRqu6IUE/R+un8La9jh3mCWPyvL0xpxBc02s67Cc/CIeQe65nVXnUpEhD3xvuDXyqb3+g22juDt07ngVqosmPsiiehxuatMu1Q/4zvytJErvMI2ccq2q4eZca0Odcl/cR4+bEcEgtYseD34neYGC58zsliT2MaYM5eqN5Wzyi7hA9nfHChnHPCUitg+/MkgWzl9pukNfR5JbRSxy9Z9HsjWpf9erq63gSU0K4T7vdHEWoMdQFpzS5VGIYvkvusv/Iub+7P8kepDAi3Gd/mjFfdA8k6725TsqeHqCGIyPXZx/PS+jGLWj16lQSem7XOVgn9EkJFaahOR/TFghX9CuRUTz8/6N+V5vF5oUufuQSGmUKmO+pct4D8R6WRQ/GoS1izFLrXdaI/GvanN7IW8nJXh8xDDrdODfxj/r+qrR+VFe2HUpPStywWnL0snYXgqTfbmqy4M+IqC0a61ryo1u5GoGcaGK7it511oNBqv2nget+WKYgUML0inz76qQsMw2rX1cvGOyyo0uI2zO23Bya9wh75YkLYbAb1u2f6f9O3/sbwOtX3rgRvZxx95l0IHv8jQ12O5BF69ilqXQTNtynnn6ii0K+dfkU2oUN3yGTCcu1yhDnF3YellTSFoHUqN2ilnW8r3pomys8I3AfyFlsaJ7EqVayKtieXL51YE/TZrxB0bzx/spJvNZbfXOas6eppbzlv8t/Yln6Z9UOK3NLNlfrnRUvd+mtjJZThFGkGolp10ubCvLpB61shkDSMyf5R5zHk0vA+di8aKnseBbw7nzetMXe/zyV2cI1R2gKYzEg3SlYSCEhrxzedK5dRBasFlxbJjDnVDuwNPzX+efDArE5qC6PPSYPCvXfQLJCOHSzJcoDth4HKi9i8s4VUrFNU8bodC0QF86MGRNw4Pize3+j1Dw68dHRJvAcRNT9Ru2L6jZrbBivXbt/sVoE7jk3tpFP98U2PahFI1MJVofAYJnUCvnNwyh90T/j8q1Sn8EVlQnpRa/DafpIrcN3SGd5KcoKGLozbEmDy/gokPSCr3f/nHspzhTTHSmgHqzkoOawI7eLW+RCL3kOgmgaPWFfP09/Z3iRxUhqVcHzC7RdVlweaPp12a5lAXU6mLMvgeKbvEdm4WtmN8tTaVKJzggV0mPoE1BvgkjLBLnPctr0PQCfS9ur4+OHVr4PXFn1ySaT/GgBit7qfdMLGdEx81HUuUiqVeFtMj8keTPnGA/qV0Nwo+BXejT8A1dB+NdkfawXqhxlArFTYYdeJEQgYMtK/LK59pryE9a443lGv5zUyamehcc645J1DKtDbaRS93dSE8smh1uVwXl0oSep2ksV5moIs8HLZPLDam3VN0mw1spxC71LLARsKk3vM3jd6LQhZKrSulM8CHdnWwZUF1Oc1p5f2MSsC6anVKaaCJZTI3sgSuZJZZv7uMsqLCdXZ1iaqd7aIlGpxud4MjUd/ogDem0RmPyH0kloFrqXOFgnGXxRL3AKADmlnyRs+2fEMZ09ZwI25ZLFaueJkNOr20IS7TajktqlZ61VuE0dveIcnxVUbLTJ421yrb1xTNwTdtwBg4VcKI+BTRfxJVgZWybGgdbK/LqZBN31nIW+4RVR5DIgZtyC5tThZqHQyamN1IKGaamP7xDQ11hlbYn1jx3SrR0BpzPokaO0cqKzbkTL4Mf4gZ/m5MM+Uvby5edXsi0VdECbFYy3hSeB0KSj9PDm8Bg3SJtbnMqOQzr37OCT/FpopOAAoP9d3H4JVIZExyPN2yG1lTyBLAa1GpeRK44XX45V+h9v+RDo9iqjF/sLl45fcT5gYi288r/5ZJeKE0+AYyvwl+PyfnE3zkzB7U3ZVl1M04Fs37N+Bd7PC11dtojQ6RuOS6sSlt1ccrSlLy1fr6qjJkjGktUdrsShr7k36WicvTw+ESPF4CLMLQZJr07SW4myZq8zt0OZRaR32zWzIDmrHJr5SyW9egph5SxG6FVmuCYsrDKdSaVrY0uYORJJyl0WaFnxDBJa6TTHZwuY5mayc4jEveCQx9hvaHaCJynlNxSLrD15qw0pocItrFEbRmsYw8rgHMoSTHXhzGSF4+8QdBS0ErzghmZFbq5qLMDDFoT0/emUlrPbwjg551pYmejrUgs+U+wdXN2Ii/H/bWe6x1N2IShv/A3sJitGlr4eWpWx4lryb98DV4EoEYKdGu7YeuvPxlOL8HuQCmZhroZsa53Dt4gVmhFoVLfRM/7IqpG/K3MpRiD5ll5JQUdubfW8LgoRYit9I6HzZOjUhvs5gUl+37ytASUBzDApj815Ksm8UGEs8sU4tjJX5Oz7t2WJdk0kNSTfmxMY+pWeV+brlXwOX6/AIRP8Ap9wnL+V4/D4wtG0hps49YnpuHfYxCPcJa2wzh2rIaBn6PDlyAMCxohxoHstpsI8Hn35JHKNgUTsgGgcyBAShqGEEMJx/9DRgU/Byn9EBuPXQhgoD/i02KhShoxbPWz4pL9hE+h+EuInHzqaIdhCdPZUU7c+OoY2EkZtEmhPNWXPrOeNlRwhU0/BynePfJkv3yOiVfneL/cQrKPdZgp5X5P/74R4AH7jBGUk5j19DOjwIgStdC1XuoAdIDX/1GAecTdBWJfBO6Ab3Z7HG8Ce8P1PwZONzSJnjKym8vv9HjzH2R9XyJVXb34jg5wURblb3KasleDaZH7J0X7oLbKr16LUmIJmqv1RZrzirq21Fec/FuhKCNd6PXmfsy83nw6jxeQCGkMCUfQXNIaB/0kYQJmHV0M3R8VEejy2vOTyXWRHBP4SLVRYj85jxdwkYOAtSeP1LIzib5oXxEUXWy8KnCZA0xNYqfYzdDm/GGXAJghnOhfRByDuJKmSnMlQwwfsc9CbnNwLjwR+lkdQrrfxHLLBsnqi5wrtJ0pS1ZuSXO9i/c28KtzX3j6s9Tgi9L06SVL0mOJfq8NttztmftWqAb16e1OzPyybyJxDFJRljTrJz/36CcB01nESNI+BH8LRra1Y6EHqEmwE/769apOnoVW5vj6s29Axs0tb1z1fEdnWHuWIVFrpBa1vW9HJXznYGaCoesP6HXyCyS55EYtyQXXoVnAZwMRc4uY+vU5B5nffil2Yqmvv0N8aNDi2NHd9f1+54un5rMOJE59e0LkhfmCzxKTote96yy3Cvl1GuNKguQ0oYaBt8hLM03vNR+36qgOuksis5M5il8Fk3ZrF5zg3D5CfM4z4ytKIL3wfB6ODerhuAtyWwZaSbuhpDLQlUtaS2DagvV0CSj5tz4bfqQtXeKoq409T0jeMLLvxHI/9H4aCuO3QSIq/Ac/KOsgsepEIs5FRU8+XnM+xhXXi48B2untHngcaMsRvzciFdOYJuu+wrYHHNRO4vD1s3VchbeWUmmkG3L3PZjxVKhK8KQCCOEJ5UcxcyZpte9BQym4Z3z4X68xMqrUxQKyfbK0UpE7ijjcg69yFzqo95ffL/EnyhiYC3BmddXhwLbade4pL5eMu5yS56pjz8jcbuNE497zu2SjMfrMRfJNMgPR/iDZjM44TCkTeYYwlrkz7HdHbWtI4lEa28t1YpfYcLJpw8P7ujBOSpiFYGKegfu6Z0Tt1elBXdbcT2919ntuXmLMO9jpvRmtUJuUenpxIlT3D7XC2hoLVW4cO5ocWTPwbxbAwIki/mbcACcdUTtg5chrQOp0HLpHnW29qTLIWjd+ehys+FZOJYxS5JMIxDTko2krFhuXpPvmYDXPRyQ/HYmel4RcLGe/rPXk+792fxC3vMy6GTdvWF2hMOJsFlJDicJ5iH0N2i054pS0AnmhZF5HZwaTl4ODb0+QLkcOonq2HiuWifqsggJIYneSb26fAHqJJT6bF6wnO7HH69kO6Zvr3jlxzKGgfhLgYtXH++uIP24fdvtaRar4nKAQD/YgZoDXstyh/+3FO9lsXHe52625LS0+EbeeuIhslguwuP1I76W4ZzJky8QvBwOwbv51EjOcHPe8IbHTgKL5Sb+/p9h/ndySUgiqJbLBdUhqU/sI0JN+P6QAPFy6CTU9b51IX08qHbOnBmsqaO6dJUkpo5Fuq0vjdZmV2WFwna5NNIo0INheZDcRqirvaSNZTVhPphnmg0RsibYHLTK9XprWm12fXaNzyKT+RNs3bz/dENzoIi2tOuMC+HwZCtyHxLai2weYQKX01Dz1ddxHI4YR7PvHIsyTlNaCFU7rrbkuAkcRZVQ3gK7kSehdRByFnrzHblb896b732vroBd8uTYUsF1EXJaru6IEsyOOjrQy+WdgJJJhY6nxbaPQ8nGDRpWZYSlFzaQBU3Y2K4zwVIfQWB32h2bTG/IeBQlR+nWuD4ZYH4dNLv/FLxXHYZP9dUjO5D3JceiyC8e0c/uQa9D0GRTc1eM3EYUvzy9/fnggvuyti1LB8/C1z7+v0T64w+D2KB92LUXBWvX1oBk5sHAlZchwFRs83d7Rc1nz7W3ZxCiO88GbbCtfdntE+nD589PZhupOuDZszSZJ5/t6bTSSOZVM154ZrJuNW//y5c+oSDr239uBBNtuPyZQiunRDEj5/rfvmbPQm3cAQS+znNkog68sse7z3L0n7HYcXnAyoNn4TmlOuZgLt7cyzd9vnHg39/hftpz7O1M/NRfNtvFGhn9IhX30u7l93PxK//84NFeB/xtd9bAl45U9oVdCd/IBa4ybE/1Z++E70SmdzbBsfE05Az107MKvS5sGJS+qtN/dBCx3qba+dUIPWRh5vyf0HVAyrVdPLoAK33+pO21cwuI1rfWuULdSTOtzlYucIa7W8xUpxaQqRGCVxHWRWWUJMGjiOABU8w4dlxMcl4PRs3M+JoE3Z5Hbr+AQFQuOjyNtwaWVN3/ZCU2fPbOgz1fPBfB8hb4eIkW+eGZQu1Fv7sQa8rMXXzTbI+WfdaidZ/cHxw9KFUeO3ryxEePKaWR0n7/kx1FVrAyXKrccVRct/FhXmo7Pg2q90YfoVCPosDgyvm4qPgjTnEJ8aPioo+J/5KQ0tL9pLJTpaWnwLaRyCmU/JfRP7ML7OBzWvCgIX8FArmuUL8pUvjijUPMgCJdfBVzYLyIsNidm20I4vb29LQzG18mEp59mknhLH21BjtJt/9kk9Eq2ubq/L6ZVYClyw+zaBD+5rNZe6sp03u3zgW3GvdTOmmtXxLGjn5yPyewxIqfPtx1gKR1jH8oXLlrUQTjjCU9/Xk8+tix7a/m5bt2XM/NYt4uLqy+FMtHTYLTk/cnrKeaM83X+92u18Z3XMjGU3LTS3Kg77dtesEggCGMn4pxZB5tgEs+LibNAcqhHGCPC0Q0Vo8LevPmqqnM3kUOp01dvZedeM7Cmj578swb0yxLhETuXV2XFgaz/wvFCN7S+GzrLyjeL63WseAZf2IOtT0DPj0btmJ90CzyqQZLKmwwi5hMiwhlSLX0z0fuK8D6wlbwCXguPzhXzdY7Qcf/fmYqB28NPDk9I6du1OF18fff9H98Fe7MhPjcGO7OBsxVW+rq/HCXT8JiE4G3U8RD3CmSDx2Yg2dtplYTR1YBbPt3GNDMAWszAXzvnI9qB5zn2KbHYp7Fw33Hzn/imN/x8qe5Gcxb+NzI4WAOci3YkfZaxoDweOEnBx5VSLYfHcZIKLqLRtZFqr5xEGDt0BJh8I9n6wP8cmBv8bN/APPcQQoA0Aid0gI2yMQSQyRhpmV6oHtEyqLA9gXgQKS36BQdMUQmXPJnHIQeXGtMjQzYJW6iy2UF34eZGCIJt4UpI06Xzbd7TxIxRCZsWc7K3cbvyb2mCXgAAZ7I3aYzLaxyzuqgvYR4PORZXuRRlm3pUmTaYf4uJx7ybF4sFTMOXPryWh/WZ+sLcfFca5Jlx4u/C5mHPMuLWXa3wVUCUsBDns2LMby81E77F6x3lS0Jfk13nzcAHnJdMw8OAABH6rEJIkxN5KQNnKkAaGJQJVVRNdXQRtpEm2lL1dZDeajU+1JQwqwqp0JSoCZvjra6sJeYJmH1zOeuOWpwmgDcF5qrwm7drSLAm3QTb9EtvBu4aw/eo3v4QD1QuXAanXzUjdn6xylxDbVf/Di+Tsv9f8PMBwfgtcmB0x8s/vHXfpU3D//nYvn13acA0QrpChZPJ2Fi8Z/Aht6N9sCcAh0ma1uLU9T3amoNbD/Q2e3ZLfDzbTGRvkOJU2RtsVha1Ap2uu+vmRVR87PbYXI9ZrXAcn7WejkzWVsulgy2Z39itcbAkhjImlqMNYL2pWHWSU+ql/PtYmZ5Tvcj6AOdpI9oL3e2D4S2T1KfP2xwnuf9SB/o5LAfZbTa7123Zf1aH3ZuvaiTBlmVZd1fytUav8gjy6irl1b0kl66UrQDaemb/TTTx1Q9hV3a5/LMQcOTMtr3pdUNskHj22XQ/uqm1sonioxuh8lRJaZt/FQzlCjMMQPAJCZkIhqd2hZAKgSJITt4Qjp4J0ZYNGnOTO0DhlHkV5T1syW2umEGs/gluXF286NVkZfTpdRd2wGqcu2ijE1GLgsFRo89NOfCx13PPrVmJaUnTSlXr+ujyRh/c1icSf1wyTIksfbMqJzrA8MrUtC9m7QfiIZsKb804GNL98w85dOzZ2m10LP2OqvNw6Q+uMil/n36v3lVX/SvAWLkGGfe/LES1qJVuratY6th2alpB9iwCYFBNCGGER8h7iB+QnKQBUgmUoWcQ/4KjYTeQ6lQF+BUuApuhxfDz8Nb4cfoMPoUBoXBYzox45g12FwsDSvHOrE12G7s02nmtMPpeen09OmM8ozZjP0ZpzM+yriT6c68lsXJ6svanHUk63zWp1kPs37P9mY/m/1lDj/n1VxMblFub+547nTu7tzjeWV5orz/5pvyDxUQCroLHhSuxgFcDq4DtxT3Em4n7it8Ff40ASYQCFzCEDGDSCUeJ75PvFkUKFpf9L/i8uINJeyS5aUppWOlZ8sMZWdJGaQI6VUynzxB/pVST9lATaOOfB59J/VN6nvU/8E3gX9oaa9EThuhnaYX0Nn0EfoFhoVxkfENfx0x21lklp+1hDXHusF6xM5ma9gt7CPsPzjPcJ/i2riT3He4n3O/5gHeAN4y3gxvH+8Ov5DP5sfKS8rvCFiCX4XrRA7RAzFPXC3uFs+Kb0rapJD0iGxI9qd8pfw1xVMKnmKB4poSrwwpX1T+oXKrFqneUBPUb6n/1FRqDmmua/7R0rS12p3av3UFuvt6n35Y/4kh31BtOGS4bhQae41XTBSTxzRsOmD6xiw2T1gQlm7L59YUa7V1q/WBTW5rtG2zHbNdtF23PbT9ZufZcXaWPWnfXgJ0UIQBD2xmAGAGGGVOKQE6gEOKMhFO3PgfWhOZ3WmlEYtIpjD2ptjYkMXkG80dcAY4PrehqbmNB0Kcxxvh61wMGqjbRzxfHJFwATxlgX9ZkvYcc5Ux7turxdpfLfLWBFjstdHtk7PV39cBC+8nS4S/qP989hIgn6u8mt+sPSf3i/S/O7+jz11UvLf+46NH4euyxfedxEjkK2voxyexAikhCTlzDNel5v7/5jFA/gumnLpoKH7BRVIxDOiektKDDbGNUP5VWzJzf10YU8q+atxSrmn/1E3TF3S6LisDskHO+0cgdV6Cph60drJC9oX5Y8nhpk1p4HuBFI/M2q9bdEYcO+L5ZIjBF9BTFvinJfEvwAMl/s63nI0bZ6qgpP+rUVCu/3HlzskKYzDn1wYbBB/bf+4BVDxjPWtpjwcs+Es5/0egal7iVe9c4nMXTt9//ElYIoj7iFrAnVYSfnzvOGo0dga9cfvRI/OrhMX3nVSSJI1DJQQhmGPKBUeuJ1tOUGZps9mocLYxJVOCT8LpFI+xtiIzBfLm86D55CcGHCklZowyhDlfSt6FhlQua6/QUsgc9MCVL4Eb3Fp9bdPhYVWJRK2f0w7/m3D1Cv/VS/+9qODyhba+eO6/gWk+D3r+6ft8cCQ0CqJEgKm2S8nPQp1FNwbad1G8f5dqYYfIolZB8NAwBaFlDEk74kGX1/tGddNDWAPbgBwllKJCqVK/iwKyc08SAAHvDs6LtOpFVIt8un37X+AsJkp7pJRuH9ELqY4auUK0SS4OOc6AWTb+CZ1FTPwzu/risN0EMLKiLXje7mc+nNuzCSogKwoUcihzwICTKtrwuBNhbFzdo6UM2JfhkrnlIVT9ZQDGaTNa7ujPG45XJyNemGs3G9mLBFAISsgsl2tNSHTOQmwmpYTIg4NDki35kAAlHRUkjxHK46sMIYdVauDWyio4XjfClW0S72+JdKKAMDRXHez+HekfzEHBZQZuOlIakIcIF/DVBCAuL5lrJSVwZuBkq7pLkW4+UC4ygROMQCxXF1wc13TiT4sPw0dV1WGzw7KsQrP8D8jOVv29RG/V1XoC4tKil3jRpV/ZPT/ncvjnD8uyCj17AAOyM0p/L9Gr7tKiuwLNSA1I/ot5gwKIlbIuT+KkaRJfLa98kXWDcODKrJCJImFgetUwxWVkHwPK5g69zTNLk2ygl48gTwSxaz05uQSEQfaPen6zkqNPzsS7ubQZVeb3F4cBcRvZrU0FFzZuL7vTNKEDdj1XVWeRYRouqXnsjlyvEdISmmusuAvEITAiTzw8w1Lp6aiYczpUfLpUR6kgElDup8/2kLZcxPD3id3b/xZmNeCQoOGh/iM9cEZVVLIT1aJoXSFKTydDjjHSKcHmZa6s3YX7JE7WEIBFVGCnEQY6ZK5dW9IU7DmHo70zo+wSpwfk4fgtpMCYM55yWyp3bx02MlLrYnNsf1C+0gLedqcv91jpB3zkHMc79079YbjtTBss0LxcZbYOSkR7WZ9AZqJccrLQrqAokMeVhBx5zSSMWOhZ91f2WYG8Kv0ea96EbUy9DOuN7uqdxX9b91T3Fl394tHMug5XN1RxLfMHWvc/6mdk9UuJib+y6V6Lq5yTjS7BCWVgvOXqOKp75hNWwLDQmKjsnh8jtJ56ctPtFgGfWKHuv1g5iCAqRZPa4+7REq8i063rLYSLO3yQU5CQqK24Phr2uK9bBNTG5nHMRUHFVcf05Kih2h7T3eqMg7hohxzjGXgTWWYnRE0MQCDA+V5S/57HfceunTeJaYwpBQIwNpWn9BM8wozcFgk6ccCCObdimFHAzGx9dDsZLDz5Fv1j8ctBVt6kH60leyZaOhtrafs8VIPQiAXw42t9O6GlnISuAHv7nS7+p/1bpEt3xvJrUZk/UKq156r40CNt3Phk9a/IckS1GJOjX4Avm2wdGFfolEMc162gHIHuYokVNrykCcjZ/HPX7PK4V/doObzUCysll9B7N/rC0Y7ttwqLP/tkAlCLEU0ktDqEOEwMIS2orK5kwGLp/E0hpnJDUTEj2kN2Lrt8No7c7xyBGqCAioRU+45D4LPxr3Z8keKiS59nyasE/u/0KPsChWWQ4GeSWlxnInogxWa1xoEo4B71gptadKPeWdSGDu4jC7cnmQTKkPq5VdA8NGDK/K70my/61LFnS2DCNHvBquL2rRTD4mqhJ598yXWJmZTDpLIfx+4uWooEDzR2qzoUP+FUVuz1ResjFnl8DXy3v3pnrZEJMjAkpPo37eZI6/uBPGZmb5/JOtS5JkWVaG/GkXvypmOiSOEnQTSxce3h1u3xIskrgZvLR99YmW2BPOT63bkjTz1ntUSRjC7nH56rb11PcoumZtvzILsXtBbeXYHii6rRIVigfY2qyWZhHtER623Nm9XCupM+xpJUF8k/tQUo4zr5OhTy4JyEK4RLYiQ72k2U/zmu1vA5l48oGnu+rvg2AvWOb5zf9MWb5xbHRvs51AvXkJQ5kInW1qiXJQfcsZXFZAPw9se+/dkXOx5Bfa/j6iTqroUyogLzf9PlUAMz0lLGUfP7XuCxwvG0+A33T4RxqOHGuhRofSK3LHfcldMFBbJYgmnId3KSFeeN9r3J7mJ+57geQurK71Ajfb4ehGeO/mL6k57r0Pob69L4V782OLU2bQRyV50u3VDMEsxAPXeTsMzlibwyMaEcnxtOoVD/C4gnoNprkvMKpQ5tolMSDN3C2nac2JoqngqdkSOe5Lx/yYU+K5AnKNPf3DHHJWOTiDq7M5yLxsdH/4NB6Iu/uOPgF89PfLM3EDpkpAzs9cIJFrd4EHrXM4vv1LG9a3AF099LkBF0rak1UVauZ7Ds4hLpv3F6SbQFHrVOUaZ1shRj4olQmHQ+fUktvETlvL1cIi7caj9Xcj7TVOt+XlM9xYknHjj4zcuw9S3ydP2p542q4sGV4lBKKUX628LSt1NeYf2zCQKCRljys5a/7bKItDwLMoO56PS4hi5euyAXYi9XWQSadq6cZMnxLQacD2T6u53FVHHPuVsV23/cqEE8xH9Ozv9SOWSJvvTZRXXW9eoWD3HonMozHTseDm/2R+tayTTQVJ7sLRiPaWxpmjFp4SLtdkVZ4GqiqDTTviEggNWMlS3SrxCWL2QLLmFet5r4ixX5SodO1dmvA0WCJVyVIuerd3dM7Dx+E9akIDw+kcHHBHiIudcFSF/ffX6rra03XM+tqQ78X0yW//PfCzSN8ZeQpn5xZDyhVRiCMnUkk5GVmcloSdSGGno6muAyd+0oz8MIndMEjlEdmwN+yGpqee0CTBrUq4k/1BmgeN4XK0InFFq1Ve1viFNJpoqKantbhjCIHrE5j6eF2UPatimx9kLPU0Uawg6OZ23fdZE4rrbvNsj4qxdhZ1u7vqfKddDzLLm6YeDC02p4Lv+mz2gM+GvfZC7T39mWY8z5XdDil/nu/8S+Uis29CzHAAuKQx6/d3fv1p3NvXHq04YLqJ6xe886JRiw78MRZrU9xsIpVzLprCqriKuFcghIJns8ivEMcwVbq6J1tKSO9kHRACQ8rdr3aHSwnsn9nr3/7/FJlixpD+9q/ER1H6uKpbqliA78pWIjXIfQjOX5/mDtbDqH8bv3dp1/SBpDBhM0PbWyqBQ+E8wZUHvW+pBFwaEVXMiiIQEo3nndwbtYvXLDShNx7hR2UAwmymUG+9yvsCpk//xjrdvig8ycoQDKsGUOUtayvJWq4igyPC1KLh6ckUsNOXRXorSLC2X/tcpBBsQ8SXqs0F5faqop1BzSUNtSKkXEZowpI+BSkqCVx7EQdzE8+I3uj369HaP1QRcDE7FUDfDmqtJqGcFBCTJKyD/eYTaTYk0hCrhYb4KH+5ovd/zs9Kf9eEc7SzA1uOOH5dnm4aWqRr5qoBpm3q5Il+FbnaNGhBUCCuErl9D1Vjdd3Jn3Y2UIzbpaSrCDV8mPsRDyJvS60V9QeoWHfzX7aeTE/U0fxmJ/dgyHMoH/e/CV1Oz9YsLmygOU3D7W3I+DCM05jLzMKlZgsI31+bfftKvNjMztTk3+8PbpVFkUgLGahxpOp4+9f+/x+ntLcBg39BvAwfEw74r5slK88dEwUfkuAv9HlI1jyQUh6H9fmXYyltJIErnEosGZCqjBNTElPIKq3W6pXlMl/L/Py3anGwMYPEiIGzDuZ8On/muvZPR28HlcFqwOhzOjhhp/hakvzHrYex3v9BH68S/15hGuNiZxYKPfxeFTbaZWLkbjU1Oeu8zSo91bBxOjehhDolW4k0eZH7b36779/yc/7Dc/mXwp+6yhGg++WGN7+59CisXlcuff9zbxLQ00kJLyDjwxHLWl8gl7qFgtox5QLo88jdQWJQ8V1BZfLK+OHzvdMTT6hlbNUQ+9ucofJE0Mgav1hkRjdts/NIqDltmxr/6fF87TRcLm+z0DgEXRwF3UW8f53/7sRYZpdMl08t0jz5kb394XNo7+0fpeXVCsg9FZAWpoQWVzHvyB8duHJwneuDUvlg2NrLYYgIQJsvZyyP30R3LORwof3BOzs57JnNl5/HfBcZROt+5qWYa+DPzhL7u6JBfApoEf2oG0wsWBfHAdrLriGFRz6GEJkOfNgEPR1h+G1trReA6jj68l2XfbMM8EORvReFyDD1DACXVZimwt4AVrwADrgA7UxoB7VsHGF53qskFrNmAA7mCdwACsej5j6zh2zTY6pmzb0mbS73FZMNKbxz6IOaTwY6ljQhsmPahLLw2lZvgVOp73oMGlIDAR2jXzvZnVOBth1XCG4CzJe4gVqBIc2ttfxi3xmei6G7VgDlKDRjESyyFB7J95+lyPkYwOkOZ6E7s+6fFynes8+tzT2qGm4qOFcrIQXGhTK68wlnG8iPb/TG1G3edwWmYvvfNRBJmb3GBb3dNIOHJF/Cx18cK9eM+PLEi6uMuCM+Q4YPhvuhyOw4mstlBoVFiGVgkoOEzBlQ0ZuArDozRIkEkItd9i0WpQt8dJ0SYw//rmj1crLoBw6Dc5WZVQu1QTTYOFVV/SxKunEL6M17kdq+0sgQcH5e1Z/VmSqJDOCbCMhdf5tmkcNDz8c4+WAhr3kNSrBHIp9WOg3BEEuylmWtAvBL6amICCoay0M3CtXEVQn4PpEz41DwZly6napCz8Qf2e4eGVj1tNPVPPSYtUIrN7RsWnRGGQGQqbyw7Qms8Mx5bUHrDg0jSEX9+t/+zTgmKybhXpi8S5Lna1OD66WHz6ncQSj/01Uuf2a62FyFkVIzs7OwTlQBziBW69P15Tj4ScTTtCZcZP1wb1WlrnaikhNJrF1mhP5/CBknkVmmjas5Slv2AgHvGazUHBOSPIw7f0IrrgTanHxkTuZbVv7RweRfczcmu0Gz95Mb9otLsmGq3hYtHCo8lN9uXzwz9ZOIcNmFXzarRYs4q+WQnfny73fRSSwa1iqK9+dM5XAm5/mKe3+NVa7W/iPp21kkGob6hU6gSv2LFjS4jUc6Pc37DQqtwQQFkemgaHlAy0wS8kIowLnVhd9kUyyy8mcksxRtog2PRDi146RlyedJ7bk3RsaHMsSl6bdwYJvThVndzbZQQlQF+3w353sIrz7WTQ0UEyAcjziFdU4KKyYZDjbpPbGd9aGZLADW3q3e7fvzLr3QEdcZ9Y6dbfXYX2RXMAGeLQ5HFvBmHgt0RRMBb0JDA7uoVlYkHSnyw4a6/MvOG2A0wNLmnucGbba6tDHy08DXMvOlIVqXlVlZD9vV3deWb6F7qu4MYBN1q8C97a35zed6bf4BwGvtaNQwKDUg/fO5utLa0+2nSvlvet4Hl45Xwtqc8j4EWaRJYZJNgClvu5/pjp1fIGmJUWgkRVgsG6onbWrlf0m28GEld0hY116gxAaQl9nvNdncm65L43NN4wimsHu7v3txeKKTD4fLZUMprDXV4IZWHTGCeJWioQjty39mNmJe/TYG61aj+bnSTjzp/Hmh7qsoaj+gY2hEPgNr9esYHrLwV1l0Nb3IFtB6ZWZgcW19dXFuRHCtaocmd3A7833quabAfcNtB9Hij2Zd4bqoxh9H8+rFGKlJN70//5twvDeqMzVHkCbAsSuHX08PHO2hO7QbMJ//GFNtXJyn+wjS7ojfrpBZVBLfTraPtUIUpUKkeuSn0u673A+/z+RBjdEUStF1VqKLQMemktp4YyPm8+IEVVK8lpmBfb21ybqZJDnBtLFO55llloMLBzRYrwzhzJewq52BCMN8TSzZH7Wx4/YRNszNLDNzpMjtJ1RQIGfp0W6HzKHDhsVBtyZZyFl3K+p0qPRyufs86qX50zN1RoDr1Nk7VsoJuFMlID9P9i5RCBSYlMq4taOp2op1XuDg0NnT0S13vSSNIVGlfVQmmLygx00ovIjE+Hbo4z1tzT0s550sFyZeXm7SEjx242Ji/Zl0vyCeKtWvoUK087dbvjSV3u0jAOeCDN9y/GAUT02SP1Y31btbIvFhApGniHp13Za0KnXHal+e5kTAEVgwfnt/IEInPCjl1n9neXlot4m4JhFJZmlAXWixhmzKnIVt6gh2QJEEvs1xzlVJLk0gvr9JjKg568phm4Ywopmw+ReOK2jBk4cc9eLncZxKgHU8YFlznwbiDQG/ZFHL59mHBFZ0pIOqLaMOuWNDs8ZAltTZaxQDhi3Xg4lynHVgZPXg6G4+jxfLuTiSvY/ugJqgfO9I02JFFHubWiiqP1Ck8tXytQvjc1uumhQpmQu28z41MPnUH/c7dlcfHXK2EqtPFhnon5Lza6/xSKn0JxiKPWZqNuryt0G89FPbbeLPa2p7ch7HpeoYZpn4ylYpc/qpei1vdjD2kGCNX9jdraX5memQY9In2/p0+7ZxY/IfQzbPa6Au3yYaOwKFM8fPRbWW0vdAcKwPaUojVDTXyqS4lgDKJGYHEq8wHytq/Agq2v4MsDJaGclufKpScDWI3MlBaRwjZV4uYR0Qx3P+S/VNzX+vqP58Q+upHucXhrPDHCFNekhyfj2GKnugIKB1hWqPgAJlWZA3dfrFBBtQkEC1gEgcr/hsrBBo1j1WsZW9WbsfqsZI5+ol6R5lFFNIWOZAI2LQ1Xu4jXhxmrh0jt8xzH0FAdNoFgiKtG6ma20dI2I4CFb7E12ADuSrVqcfRIRbiflqkf83V2LS7m6g3+iQUZuEytAR88VyzA+cQBNhm2KvFo4cD9D0yOwaoWfNAxlWcwx3lGLix7zOjfADRoM1fQq+bCVx8PuHs20dM54Zt8h1KyM4ewpqFjV/nWfrsV5o3a+75bTrcngQUPuIgoi7AoKOP9VjfVX9ndU2OCXAvfUm/kjbi84dw79I+sxyAILbj2N4m3KvI7rjHhaUA6arP7TEo5D9iOkGCsuoqTaTh8KBwVWrUnNuSOJT/6x5JEIlXqd86sb6CGKooyH4XQiOiuUbXdsaNhh34V/slhBDYBc3lDyIaREOZyen3BgMcfzLQN6evIiWaRx/o9HjxR80Sn0mqaCEe3XjnhrHVjlkdnnTiea6s4V0uaI0UvxlHTgi6/u7U6Pj6/sLk+u7S+QSivXTwMJQfJ0VCTYfVE58eZdvdvFfHGMQ7vvV261seMRuLrlHd98vjCbME5roCiiTsGxYPbWAnBySk8V67iwW2CtMNJl/JiY45VJf3UoCcL5eaqWn7NIk7e4O4rsxkkU3uTypVcRHubLG+h1QaeF1NPyoZAV3td5VCTewJv3srV6Hyj1oCbrGgEOGcvRopqLlCZATw/rfL8XLgkhe3NV1RB7gjcNdmUd6x8nvCiZ6eMbCyIqlGZAor0o5pvN56LypGhvn6mfKQvZ3CNWrBnKrJwaxVo0foo+G39lqLSwZfyI2jHXo+f/73M231ODitaIYElprW08SAtVaorgkEpHvGA1l1yDsX8ps5PlrK+t6s3pCFQJAqva3RJwcIGNIEriklt9agzopbxkRMzh4aNxL2EHhj0ReQ4HjBZPlkuQbulNgwvNDtNhs9glanNk6eI40i0btW6vC/9ceN+o3Fd7bl3NfKK5Xohs7tGxSdpVadNh/ZYMUK291G9Pur4UVXSBqDCgbEufnup1/R/Dq+2MnrIC51SL8+KjBDQlSwEpuKjzw05q6/N+UtL2xum3GW9UUSIJE4jVVHjcb+e1ur1b/5gbTq1KZjP6ZRHlIXNnAmNRLzpcKi+i83jxFL/3tHR0dHhzjJifIbE7x5dNDEq+NEdYxb+3XdDIxFv+ujw8GepedESya6z2jPgbMDOnZdA9lzangFnM3eutkGnJh9NhU8JMBvCfZbFwUQSE0q11WnDHPRxia73qBq4gEg60ZcdV0Asiuav7fb8vX2kQDUUbzE60PfG69CuZhR1mnW99w6lSqRP+sfaKyDsFenIf/kiKe/M6g8q6fCU1f7fs6obfUMWoBe5Gfua/zEOe03sFHTn0cN1TPkybgnTLxTcV+POeKzfAMo+T0L8eEb9DCOwPCD6Kpij2BLZv3pAQmHYNL4afhbbL5f4xQy0mj8qpX92dqjgKqK166aMjFF9x4XZ0PXXl+qI4EbGimNJiORr5LQOc2jH8bM8gIXtUyfEjO5a0SJqksrOdUxvyxQoSCyLCDUVjUNB9JzzqmYpPByk02yG6aHI2ZsHUsCn98NOoN9+t1Rra5JCS/HatCnk2Gm983yYvmRTb1XTANy8xSuHEqr54JwlWAeq0sExQ6EciBkJcphW6Bvznf1bo1yLO7BJpzdpRbS7htUwp9ROp5N+LSg3ZmesFh2TtksPIubbBocNTf2G75OwMm+z3LsYCqttau3spk21kVBx/h1JkEKsSJHQshqllVpXtUUXE9+LyqxgPHdU8piVjMFHxM+drvPdx264SVOKaDgzHVWhc6pzuAm8+wYQKA+m2zsmCcAjRAT1fVCpoMuX9bIsjoWCIXc67m8lbHOH1l0dRRAw+vm7LmEB3MAxcH7jZmCZCZDRamjGAJtmkZv/mUacjpT6p1odsSum4s7Ycb2oukPe+btdrJz3TnbEoRd9fynRCT0Y2k7sh7o7gIuaCkopEN25LCdc+E2SswoihIs0dD05om/HiDPM8bizbrG6g6NciEENOlhLqN6sinXSP5ciFivhNgSCIY9OQAWuYAlKzicPVockin8YNSPaYyAobqTkxmMAry/jOeJyEGg61tvTP72ZssnWJhwwAQ3htcxwzq9YNNU/qyLqigvbvPaFtzWTMUPAWWnu3782o6PkVVhH+CQaSnpm7B4hqFLUFA9OoICR6O/hUNywW87Q4Vrnln5ZP3jpmJM4M5iK5LZDLsRaDloPppudhLB3WJwdCdA2Kx0mjFmI5M/2Z5Wapp4+TR0475eBt3Phz5EWUPZ/ZSBGGB1vp/x/B5At16UAvCmYAGJdsaZd27BlYmtsgIgDz+jUVCA/kz+TCtF8q/5u3cNSDDUyBg3mD2d7+e1kMXvOcGnNZM+K7/3Mxx1lvC3785gI4H7wLbTe+7UwLGd3qN08uszdaOZtBucb5jMVKCD5TmdzxcAMb/tU9LoTWbuTK+TECwvGv7Sa82HFq0U8mIpMNRx3XSB/HmOL5L0a7Y+bfmkdl2zOeFKsr2Xs+a1Y953vzKy3c/UivL/UWWkjOdU2yu8+7gutse1ExH/hONfRea+x2ktDrL1bfyT/0moE/th75pvv/Yof3U569cI3OU/Ug511Zg3747gh2caFhZRi49+KryxulqWaPP4/j2UJ1MJtVMuTPOic8ZJKW3JChTDU220t8NlcJJIbzj1WCUCnDiFZdcDdQpjEXi66HO02IXb0zMsHKZ8nWOe/YZ7GiXW/aAS18WXwfEl/4DxtbACp/LOY2U5zo3LBJfvTZsXdbgZkDW/FfBZ+B5Dw98PoOqI+/eRW8sOfWPz6o9iDn/M9kil4dUeDfsVfBEpO+vlreJ/8ZFFT5J1mD+GGYj6vqsoec84qk08kIE9sqTq1sPTxG34v/rCIvoTWIzoHqzG2XKbX8ev2S3Wgij0jvOfTqzqjLemfhbkAZ07yBFs1Tuw/5BqsdoTTa5+N/nfXYP7CBYCz8+WgBjWKZ6EszNFv+7bzUaOEPt5UTIUejQAic5JXIXk+T6+f7k5/PWLG5Cp5OnjXSGVQn2rO4a7stG9/e746BO3bd7Ybk6b1T/3/ysnpK+j+Ozf31tsWvkF9sXCr0Ufot/yM+aCFBZbDOqW2nA4nzTjpbjrNTHUlhxXRecWEUxZI5OcGOmQmYgDd886XKlVjdcv5AwG/xxXGbgagEkfC7srHnNqkd4TQtZxiX/ckZVCmR/zvyg338An5Tdhj5w0DRyBWNU3VFAxmrjCAAwQ9Vns7x2MAwQM7KDpPbmKIDqKAl7vdhvUokAco5fZafk/LXlQrzt377PmsTidZOx1uZW1tcWYyxHAbXBFX5ueLDXocD5cmt9HT4lv/re+KBUbZu1dK2MTpL5oW3AOlG2pBfiahNkMYNsqGXi5hbiZQfAvfjIP7okgrB4CdEBql37cdiEHsRZc3hAidp+YjMq9xeCPB4UbMj+7Pbw5XDYabE2s3NQxPidwpsWXSo7xCp8SdYzmGOgd/li8HbXlkIjcM2aYqSvGUURVJd2yvj5Qm9nI7KDZAyhbw3eearb35sZJuRZQsUuVOh4t3EqD6lF+u79oWaIYdKDKGUXkiSLEUP7lSJxJLbFnd1sV0j8O5Yr4jI3dGs5g0k2oMmmGNHIXuUG2GMLR2QihJk3FBzqEVyzxtTt9PDdbrUUi9iZpyJENNmgwpE4hYd+kiSFkvF2g0b7BSIoq2o1xBM44gdeH3jZph+L0Gccw8S1vHxGCWvZjZYr7FnbrmnPVO9Qg0LNKaphAuxFLko1TmydODLUhh0cVtv0KPzhtJLAgk0S5oyriQUwthuDs0Hi8WYqbJgDKfOK/tPV8t57jkCUV2aiRZdrkclMnMcJnBkXhDMTmNhArgHc0rAQhhKEcANT+uk8ijR0Kw88w4Rp8EcqKlhaNtpgi1/JB2tfa9fiEgmWt59p5ojR0p8rzI3x6oMdYRpVUGaEAGMjmmzO1mQYtkxkgdDtupAFmTxa1MgUbJI4wBIch9z9TK93cwKl1rml1K90kmxxCHTMfQtbV0E1r793J1pvBKK2KCACEUdX+7py7cgB0x99b+B0APPlmcDwVDBPj/+R4QC4spLklepIQ9CO91jR6fzbM6bnsLPTa9cXd9KqW9E2HIXvvBeBKWtNSjHUNIfajPfR3CcA7+7OC09WhbNxIdEMOZ1kYpQ2YJVBONKSAWZ7Rh/KpDbX+8q8Phq4a6Zu9hwg0bNUpo7kcIYZgaRPIvi5PwO+v/lPrJmKdCDnP0oCernJCzGPh8Xtz0E+GU1NCcl1aftcR89cyF8fK/KPc84WZwxmxZmTXGsUUUZ7R4Gbd0urvLMKt950sh9ZArOkr4a9jS6JPOU7Qy2SQpT6U8kNPvh2aK/WZkzjZt1McqyfeDnennEnMD2SveP7JwDHlPdrFfhgvGmumtv6NBS4ECxmClWr1XA/gDPbWqsPJlZBAmNeZI5wqzqyL7asqpJzJBHTP0tM8JlcOJiqrKkpKU5ho00cRnchgH7Q16xDZ9QOt2ba08cwBWTX8onhYDKmr0YMwXAqGoeDjiAV6bJqG0T5L+tFNZisNP0IvtlpP9JZdOLh9+gqKeOc2PyvQOQbhbeO8rRgyXNjudenokYwWjvBococU956IVbSnMJdIf0lg37qqflbPJiH1j9vkWOsTkZR80bSgnk5Y+XOe0gxohLlXAXFWAC3ySdEc8LPJMbmyI+LdXZq4dcntNImD0uo0sr1t+WZSFuu3/j8GB0Hunj4SY3MbfpGwu4PEv45ZvvuQlMecyz9p7P6RaWTUo2bfe6PKHE/LYekSg0XfZbBBV30eZxauL976jwTxXvrv1Q7NP/nSpl1r54cD/c7TF92z8Kx+Gc90pWuiAIbXoetoLT9FiKZCZzR89Th3c7iqaCIIrwAJyvWXqrNxv6jg2j1TCWR4pYHO2KWB3xCAOuhthQhUNJlQINzaS8986cILHTu9Dyy5pRGijNQeAO7t20R2Mj6QtV9gjHoqw1Bk/6dZ6KYH2O2Bg6zfNcfmS+cMGgyZg+fE7w97usFsczelu9Z66UKdP/L1C7oH3x9RhcQ/g6329PX1LQay4RRYFTGoJ+mA4KynwYAhxU6roOviAhWIAWmycDmNo9xqeJgs8RyPIx0cc7kFc6WcrdJbOWAAVJ1gktTQkVVkReYjBW47H47rB+miiJrGb+VIJphIqKhVSSsdZT0/5JWFYd0Oi8rwVlvkbKAOJjWf3Ymhuj1sk9UrEWcyKu8DmTJetdW9nXV9xxvEKoymmU8Yf9BrUcPfClKh/Bg/futf416Faua/CUmVK6d69FuPQt/e/yDY7YZw+Z9ARgwCUWD6cyaKxv791oMkytb9hNubJd9tqhkFT91vfTl4NzThwmMsc30TSKwBLrZ3hAfof5AR/IvOSnTPjucvqPzWKMpBX3bMNM2q/XixpuoADt25L+2WXD+M6pg1DnUMynAZ2emzbNB0uaBCPsnjSXbzVc6QGg5WrQNqTpwHfPhr2oAIdGD06G0CDKN+82l0SL1c+FuShokwYsOAU4DtGAZmFGmUYjMwnCfxAHxRCB8LMLrUlEg5HEChKU72kEMwiyEa1Wst7BoZubpaaod7fMAnw/yeZ1Ap1/qG1KBvwCsPaxgy9n2RMOM1QqC+zOClaNF6VqPubVTt+Z1fMfvHcgHIcrqRbNGY0//HpsfEpd3N1FVtObmQ5l2iLgYbJ4YxWdNPi3KzXaJFnEN65SYw5wkdMPMjEDCAOLydKsY3ahgZOaby/j0gO523iHIgKWEoFwHOJCRfm8gDf0sylmaic+BJakYS1HXvAkzufZWqQCFQLljmGc7zXVOwq7zKHnQcucbnxDzvOk7szgVLru8WD0dSbTO51tQQ9vxnt+k+KZo+WE1Tg9arKp07ccP7VNiXhLz5DZRuD17Pjp+VgAlN2TJOh9XYcqTQGqkoh1XmKcyB0ZAc3z2WWbAEJkP5EwRYRfHMFJlg5ooPsUq5Lh+ONDBLfYIkIcu4/nOVOIa624eApmQUNQgtw/OFB95M5HZvJHV73hbGB+si+MO6/CeI1zBCSI0l56++glGaGCEl0hyh61iCgpiVjwauXf3O8mmKggMbbcfvAOvRJ+Kcu+5cTwsIfHPi73dvDM46V2mHd/ibRjFk6pO8UL56uEXuFNyg3OkMXMwW3VtBayZVdLvjAJ2mEsglj5Hc4omSBRzG88zKc86JHZHA8Ox4vn1YiAM+T22bYGhLKzuLmXDeliGYRkOKUD2VBpX+8fhmP7ralF5PPntZEueziN2TQAWVC4WZDCylE4b8O/bpWEhk8Tz49vpDoxkET7IHOn9z0zmM8Hxv0fRhPgpjJzyKGPuhXSU9qEKHleS1r32FkEaXInikUvqFHATfVDCiDlwcZDGSExsJcRZdMT2iyINEEXXGr6BZJNT10FZHmPH5+tAyQrTIgRcGIhgoFYhgDwP0dtrI5uQyhlUjekX2+KZR8pgvFo5sqJ6Nv8AUH5CGF+yfLMBWtzMsqCzM9Re1JCmR12htedKl0G9ONKnJp4XB04Rd71T7mmonB3IdJWkVUJxShqIc5ALgyY/rNeHrz2IBXrqKgCs0iACIjJXTSJpeF+5IeT7bh9EoMGcUm7g1fIWvhOYrjGz3wAikXf7R4UlYwYd/000cGWHBx+TLNGpJC/ZgQyuOjhG8fjb+88jRi4PxSgxdISf/Xzho5O3wX5YCvn417nV+9661vrblk6NAEzY35B3meOcBKnYj9GGIdyUxa5MskdEO7u0213EUXAlWnsUq8dEi9r+4cn8Jqqh2FSlCqnGlHxkzYcEKsM4j+giogKZnCqYSbbugdINjAtzp3eNE6Oys57gvXkihobwcSMODr2LVO11BERacxcwJrorY4ueP0eh0iOYQ1lqKyCoxO/kc4wSYOrtCySya2wYah1ATUQZ3k5AtfZaHCFKSy0uW0TM0CeD9wNZ5jGGmgnUwjRBxkCZNKw8SRX/YrbQL8MRAw+TSSZRbCGOXEw6sWhQIJGSDaGpeqWyMqSRdt0DKkCIq20T0X3mY3iaPAZTqFL4YUdNSJp2SgqINjv+zPejY4OBzfM8p/93Kj4VMEk4Z58T1TA7jbyWVyx+JswAc+ksdCiZc+RNauyQp21BcbMvirNStDpZTjgCLC6nEBhSozHWxD0hTP4RPW/Lg6clsWBbc3k6Il/VFMfVcvbpw7pNUczfD9ozsSSn4jUSG0QIscC8i9Yo7jBGu9QCLKpGz7uTCKVoMh/O0Taxs0fpoi2UReBTGyTbPJsgtphOdBRt2rFluituUFZy2qiUs7SlWaYaooqg92WYqmdxnmAogOivp+6GQoxGkHVBaQAnxVqULauHA9w0StIxQU4hlk2WWHloSAqnj/vbOQSHahBsKZaeZd4oEvhGOna2aAodQ/qCQqw1yBWOUPHvEzNKvajhsW1FCiGczbjTgY+oVw4l5vMHICCMeSEYUveapqpc7HCiFP6f/mynY3SAJcvkJ53s6z1K9m5JwXEJKvpMOb8POzy1acZpnsdw2LkXn7/z2qtdJAIWeKqMckk46a7XUffBo6mRBOqU6CHJZpkTIQb/WVBfuQGV3Wk34aoPKFts+WiDyz60gzZaAURYO6Pu1Wb1Vk4TJLlD89aSXjWvJdslh0Jw1AzxFOYtI43grfSfABd284A6gTcomKWp4b7PI15bWBe6q7w/nngHR/TIJrIbWTIclQ8qk1/CcogyLQSA5HcZtiTufDdEDBJyHVOJIYHV4daRI6yhbFQaa7cQZuRB6LuxNNMaAVTyfGEtoTtt3pRcdSDkaC6tTxaG4o4fX+4/CiQCH/SjqYZI5zQhKSZ/GsGu9UHhQXyzRkDa3WwNgKVcq53tdhrgtuJHz14Npjl+sAPRYnz7xN9nmiup8KkAA+RSxPJdluxXHdf33OK8W2nuZo8V8lGXLunMypJV/EGx7uVOsthwd/YJ4lcIAD2vZBo4RKiPZBp5CJ2PahSDkTUO6MoqrCCxCw1ZQg+zS8phy44QW8ioGL3cTkw870T0GLSfP/iSwzEzq0qpDHtBeKBtPvSU97dPiFYGpSv4Rg3WnfQm6k97TpALvaqusONwHDXV0bUWD1f9fR78z19/z5YTa6et5UANOizKk9OlTyhnMK1BKJsTI/CQv33d1oXcONfwuV6/+XUJTu/ApiBSYId9VtRQGetwmMKPOXpnUna1lVnyRjMyPNDpgjC5VCDyzJSDR35/O5P+Hpah4Q6t7ExBBsCrKMz4d1WC1NGy0aKFBMS0oybZ0ARfPOC+nkjE4UavTKUcJli9vIFWXUkUidkj4No1Ro5GG931aw7L1hFsM5V0AezjX/eN3arlCIReOeTTNfrl6owY6NgfrmxjqHgBxLz7SevuhHFgIx8/w3dQ/rQRWA9PfnxNYJNZpFq7N4ybs008drccvhhm1tWTXzQJs8t7MpqpfJF+uSLFx4hYVB4FmWnRFqDjOD2nhLydHwyCkjTWeLUmMbARoyKRmSgCJoAGsTdJFFH031htw3LzmzSo10I4cRuKFFcV1xmu9+ziOmoghx/rAy52mniskST2E44wl7UCNrF2NDCShq1TdKhCdAc9CoKzk4jZ09lmon60/L8gBV2jqq0JLEH4LZNbnW5BxSAtewdpDeM3qWP3gD8X6wNWIs3kcRsfMrEe1tVeTb4wLChnXNbCHkwB/1H82frAUXvSYK2L/vU0MfIj0J3egyTSDqSZaYfTO+E7qSYkCgW7VkJUalJrMfjU2VkVhY2HojdBlC2jLUjSi+EzlWj8FqsWHUuMXHfhVbF/g4HtCRwCwkBsuJsSluHeBk/+TzOzrcViissbRfJ2LD151rqMmpZVTvEnxFFpFftTrG5SrnU2gBXu5YVZ9iDFrZdpVA5WXoNtiUr+w9XPbokMSTg9tWI8H74tPCgwna04e3Pj/DicDjB/fWtvXn4BE1I92Haz/+GpEaDsJBTItBknkbtsLgIiObSt36RONI2pi4YOJFYHCW7j7MiVaCiCAi/1TdCGTKl4ou7Mp2AD5zmS01TZLakRXuOoXN+48wL2UzaKr8dVvmNxjLCfuEybwaBRmlb+TE2Vtba5XcPpGjdMjOm8auLDAQrp58TLrbELRT4bexlfO0cAGF++aODZs9ve505ULSdeITTP62N9Rpo7mN+oaXyyiY9E9dvr+BmV2Fd0r/PWEBcvEoSSf57z2kbHtPfu/eb5ytgyF1ML7bekUbnXnvTqs549Vc9BsCJsZYiIn/c5RxgU/L1P1/nzrX+NZaJd84kTNxaZ9P429fWXAocufJxyTzGsnbmY22sZXzFfGFqjiV8rVJVUUV0dQNq95rAXIUFZ/EMtb3uEUaRas+yoPNTrfIakZ0GuptH4E3+RnEP5macOz7CkppU/YGT3qYo1Kh2jMHIw6PVcERWXnfgwBDu+M1j296mDNNaN7dOXIwMtMbUg+zU/c4i3k+PGl3SMuQ1tapFx11ddOzrmSVSMIL+t6mPEl5GqulR5mc6aRy62RbHBhMFzjDGPBC/NsunTcHCWdUv9y5gVcIrFQmBLKqSzag1JJP5JQwakUtLZ3MCFO1HdasHM37pOAIALrbkpWB0bc2FMXF6VQNX/OehsT5C3614gRASWeJSBFoVmavZ7hO5cIxjp1jbITASD2Z++IcuwjreL9x+84dxpJN0idCqhAKwfQ/Fn5CKLptirDgVVQ0o6IYm+K28nss+C+sO5gOB0+wfSvF5MDq4kjMLh8DncyT2TmjDWVb2skpZu0OkYQPbkr2A2ejeeLIcX/+SBXOZMQiY3CcMQL4TR6plaK+tDgLbAiwUL8CzVb7uLH92CvqAF2Ia7qQoyCXry5KtrvySasrAt1orfHhODUrTmc8+PSpOGpF4xnZnfWrjXO+SMYPKxqT7Xnhum5BRAzUjNFHfUaWie8QKuimGeDlqkUGz1TkLjhFIJ3jyXgrgBGiXq5XwHZuVAxWG/RV2jC0fXD+4F4Ujp2EHRCkwxB0wjUF71hAo0QRApHuVI6yyNE4iB5vknYUnEzcZ+KZXi6bNvcvWzg8sLMknOppP5UPDx8rrq/L62WSdyxT/b20tkK9btxs4LrsVYTr53z+xU3ymqsdcRYUU8QeDXWWUuKRQ9w8/HEvc5T5thZgwkUyHuJAdLSJrt9qZkZYpW0+sKfhBGDG16dCCVxX5srgf69dH0rJhwU8ztsfw+r3D/6iknox2dkiNvS6+a/w40srq0rY56hCO1wpvQsRE3o69RTgDjCf0VBPOmTWQam+qDe6El5JM9F8ezYfzYwz/oiLfFSN3ESyoc/7Y1gXGLPWuDnkoa21I8+UXBjRPV0hl7FldCQe9Afn+at1BT5OPedDVMgdhPpMBfdyjqxpL8e/XPBPtgAFxfLG2YAIQZJCuZztuEbLLfTzWUqsRKy4tPChHFItaln2y2ryJ2vc5UzJt0f/FOwJYj7hyXD/2v+s3Poi0oZywLPiEecUoFvN4HE85fZELUDw1qA65QeuyT+O9XE65blFnS1j97E4HU7gx1S3WPhYujVIi7/9AuYfL/J4QBNQDv4u8YTnzKpbS2QsIabvOFSzuN2a+J4/zV4tYdN5udBaYm3NNsHQ2dt9HVEWI/9bE+88HGC8H+6ZTv6Kj24vVEfmYf4/TwAQAIYLs7WezqAU8XhcrZ8Sd4czfkNVdU648kLcvHvz4ODef1glwpvcOVobAspecGXdkbrRqEv3As3q8lvpvQiOi/9V3l4j1/6+jrO58/tJ9u3W1Zzj5+e7Yt12ox3O/EpG2Fb9b69CP7W4OX30rw021iW00cIeXP973EWqDJVkz7fQyXsnX2pjbUXFu3R43i8HJk+Jm8564oX12/NKMka2st79CtAY+S7o3hUBgA28f8xzPAWE9ZNaP+krXq3X2OJ364BwziZeIs/CUCvUE7y0ljs6cwSTn7PDxamjsrbfb5yq7mrQgTLye+aqwXSJU85ofqa91AW7rkwcDLt9Zw/OqpNt03jY3s3eyRqjNftpt5v26ireUUVbz/V9gSeEMiNjrd3zTP40SnsPrB1tOb0/7I62dUQ7a8WDX8Hi437+hnBadhXwDf2xSXPJvfb2giWYfWNvQDF4LUA2bQKfKhk8nES20RGc7nSt3XQAxpwcKAn9Mejm8V5Y9vcVOP4yNVUZrFfZTC4YbG3Ug9Fib47Mjbff6Rfp1c7nwpxR9nB8+Sl0z+29PO6SqPmEKUiY8ShLNTTEJ3HNgKEssiwO4qmqd8i54rkOTGFKqc1lHAkndghFw8mW4UBcx5ZVDNFUh2WCDVucByCXYtEbWMYRwjZUfVgu8OYYthynV5SQKc5vdw1b7V2urloBpyE8m9CcEpSa7CnpogGByDn1/ZFWYiYLarTYJMpmKi4tlXVGRJk989HA1MQVeFoSEZmoDF1bF8HiaNU1es3TJgNM4GI2yXma1ZvrIQSaVBzv7RGOQ40m1ldyVxGYe9q72NjMAthlPC0YS5zEEwrzWc4lq8o3xVXKtJApS/HaX/qGs+OfMUrbk/OchNl357d4s2ifaCqnlXRGBG62PDgpPtYsxpLVXTb5mmHzXrODo/CWp1WZXGbvPI9c/78WSyRfHc9vvz9dM/CKkIGdx6PzNrNeNRq3putcg2ReTRMFh4o9Jzt0xdaWHSrh3S7fTjwJlzRbBj58CUIrlRwIssyixk7VzaA3GoWt84JVP9Wum1CxIWSOYlyqmJ22y9QW1Twl7t1RyMN9Tnlqd4M3ktH3Z6ITNDor48y1xBlc/JqTc+ztOiotDjBmbTssyre+f0amdrb8Evd0pT7vLvYRwIMOCfCwObDet7Hd5hR+2HyuZ0ZiRVe4Df+VeBMBBNiFt5qhbyUtjrUnUbkDsxkselFCK6EZjIhezC5NDh89PSr6s4J4dP32QfH58T4MD+pxpVh7mhTFzjFv/aG8muF3Dot/czFvpFYGj2evnwncLT3/P7pD9SPtGaqDXez6H5Usuy4mgsoiJPV6pQR7PREhkbZBC0gwYWwViE8fPtwe+m2BfcfMLy+IZyfzSiLewBWh2+xDO7o4aQIqY4Uc7o8X1NZ8gAlSjaxWOfq7bep5G58W2Du3fcsXhv9UVwMgrTNwTq01HEuhdBGbUeSrFHWLq8xOuIuYaKJ9FIIagigbYS0NJKKaym5nHU7obapGE65pB0ZrjPcqw2FD67sMSfqERnJwcMp00vYQ4PUMJHYCRBueU2kYLqBzAb1gCZJmNCf+F4grhghb65TEK4mOE7+XaR/ioOaVy76vcvhpTcHKHDmf6kyp5SZhoNAQ95i/h1IMgIPfmQzq4rzeaWyZdSJjj5WLR7/UTJUVB/yRFiKM4iSub1YGbWyZd+tbyaUYkxYdKHH7ub5hltCeaxjC2/19fXXivzWXasXCpFF9//XnJptVTX1gnHEgnqj3g3WfK1xnOHsJ1fzhjcPLU9MLi0568j8Pp17ieyBz6npGf/hPDSYN79L5j1orW50oFNIpRyCK4puCutOEH0bWZZ+MB3MZu8VJ9pJ/PaifnXdRJqyBPxSVOUZL6eBb5GkJYx4tQyELPUNQASIqTDiyTBSpDqcgkJcqbmUX8xoXMIOGOI2hQvCuUjLyMVb7ZZFyfNzyJmUlAZFFy/+EzQUi0kZLJNpCqc8yhUjlRXze1Gi5WotQ09l86CTvXwqHmmc3IuSyRCiPl6HMVViD4pbAEs3lNAZsg75SY3JHcmI4ojCysX+uD4WdLO/rda7AQaBnZN2xAJWjbGp+0lSYEqKuJhpecwvgiWLO87SSp8p84GHW9MHGZT3UW9/7nHEe1TQs9Dnbu4Zd+7pbfbcpJi2uwyqTE0YqMdUHvGBsFXp2rOgpNj2pe6iTjyuQn7RjXnL8Qb881baWKcadl4llaW1+33eaui8BGbSYW9wVw+q8TTHpxh9k2ShfG4dhiNeGoyE5c212X6s2I05vchpq+h65+rhy+m+3a4F560tiz9RuMVecsWDj2+X72IXqNZGUst8KlFDIwx8kiAPGO4X8u3vW8GwiMztxb7s1ZdR6RlcKguicxZvveh2oSaNsJHU5l5zhGWxWRW8rSS39LYUWgFfgsTDqJ44g8NT7uebvC0Lj/gsnvFH/tieMjh21tIlfELH6iRhX+1EBn+mjNxY7Sx+b8GgaObFARzIGMEpM/YGuSid3cysBjEJOSz7FxvLV7pHulkSUABkKyBy1IVqxZEDDLuGQPkLUFT+Kp+BV/EM6dj1OF5zBaHcJCXf6XjjLjwavH10t8H97vmTficvpwRlxnppcKY7iL2Q7ZF82uZ8M/3x3UFe1RynS0tcLWOmycFyB7UBmPGH4hEoZq4IG0u090a1gT2U9XyShrW/CPrWgVuKlbGqlK5dyahI1WKRQwqB1ZHeEDRQZeDTHJDN0ivX6wJLw+TZ9YuLOCDfrOAQ2xwBOY1vvCNH6BFAjtCii2xcrbU+LoxOFxYv3jA60Na8WxSz7+WrnGejkIatc2jDvtN4V4/VyYJrjom6Hv+BtG24T75wcdyTXrz51aRyQfelhD/itclGbiU9Y8fG/XYGmUx581/JMj90rkFtmTayq4jN/ewYrL9yduZWhEEdP1nr1n68ALIFxqQJzza/zbtsu8dYjmjHOUxM1HY4sU4CRlqhua7pNE7ZKYm/kusGhFWMvh2SzCTRNnckZAcOeFYD39USo2usNA21GSofFSOQQbiGmzJ0cQ6fWilU4Cyjyek4BfKl013yep0gWCCfsURXSJseiyGTL7/UCJOs47e2GhQawtmgm+bpIO06q5W5Lh4yxelVINZvw6tTALTQHqNInCSc7iHk6qiukDJBx6ICHO5cmtXw4/Zaztbl5hLaauIsFTaUA3DMDi3nAy50v+5clg6zgojQDSoEgVgp0Ak0TPwZS4kQyr0sF2akhj/OCAwaFDZD3sJE85m6sGvd01AFhOkAHtYJjgIJG6Z0aOEqxU6VmrI7Wx36ScUSVshq5ksmmXuZ5tg3/7ihhgO/Qg8EA9SBJRtmMxQlzg7LQyC23MSO8StXxCdTWebWkuOGRdIbVCRpo5hzgrTOGUTvlc4I9z4Y3XmycvHghWXAUZhy/EyVqFHgYDcyGooRKkWVluVWqWtZrgmHnIGJ2hRVEmkFcLPOZtz1y+tMrwVLg1kkanYGgkPO0fmOCWdgux+JDsVtYTlsobSsNJMLonBbxLUF6bQKHDNtPQolYFQ2rNBzxcKw6LXY09VCR4DkGfMLQVXnfoVS8aTWEACqBDYnleqWf5N7SJPFKkzXg+JuMIye7MtVabnA+nLDAN9/TwvRhtzqLTRD5HtIVOFyFkqHJmVR2VeJ0Fdyk6WDaMZGMviyEG3HZ2GJKF6SwS5VWHatsetfp6wZ6tI+2wvgf4ZzM2Rh5hw7a9fHJKBnFq1NDUkArjO0k99RX9ey0G63/IZWW3xsv5B0UFCuDdiD2c4R/D0paOOjX8f7jS7OSWOf1xh+/+uxpl8UsiAMZxvYFQ4RDcFGJpKgOvGxGLfOaszuW/ZVMJy22jWM3qHGx9ENOVolMqoXSe6fMxgwt7nEa3Z1t6LW9tT1baiHRESpSagK4j7K8XSXL06Oifm9IDK7VxYSmhFxQ1GAYCad8zuFI7vABrjsyyRJKVe42NebmrACJtCQZm/pmK0ROYLN5X4+cCZXwUhPWu0+4D5krP4EROOFMmnBCd1gpwNBtDFHLzh5d2g/T/l8vKOARuC9Mn1p+TfoXi/XAMgzzfnXmwsD//pcgIX/Ey+4OL5mtqh0iuFdUeJX59rKoXgQ2o6Vb0T6NuVilPI2oDWeDFvv48OoMd0AuynOzN15+9owrlpKrck40cu/JolS/f/HZ5xtA6edr4f1ozi0Trk+HMlHCICyVchnN2liRr7Osc66UUZ25xrZSE1qULJoISKI7LePqZDVXn8sT+OnOTSg1At/D85YZp7FJJPsajRExY+DIzDCiMpwCmuCQPejK2NQogXea9gMGvsPdP3yZ2zE+2fjN3aWzZ4oO7Yu/vqu2mBsnhliNVPhwgLXuehIaScvvOza5Fbdb33ErAYYCz2/UHgae8fqRJFzpQGwlefQu6iko2E7x/s7lBSVJOuI7W8mwwC2sO6/G3xbghDGYlGMx1qrIuWK6WmV+hf/h/CQYLOrjCxWIP89/dG8h5238Qnq9CtzQuV+ZgCmfrUEzFz9I3UqJ2uVsjKnWyt7H3GW2v0X/zvHVNEMcq9ClyO587CoX4e4d/q9YwpeyVj/fg8l48Yj+X+2/6U0Jpeazz+7Vgy2gQbX195/U+s7pC99pC2v716u+avlsWFm/EgJTfryHV8889ROqZNrUfkt9KsVMee37Lvolt+bvHrzqmPv3FVnGKVcqBudjV7lYrtwxrV/6K9L1U3mXTS8dzWR4H7OKkEUxVTGfi1gL5hi9syH0vVbsJO8nT/F2YrXJMxiQqvgojRAxJVcTTPbGCzahB01NviyNwEwGr8TtGNtmcKS6wHM4wJdyx5MiXyUs0nPVSNBR2pIfm/301dKUegCMWKh/PxRAcpP8wOinL5G4MvB4YXpfK8krclQUqwiPp8QpTa06WBWbsZ7RqsaM9fjWk1oCtKD9Vw5Co8xDevT3s7AIZ0kL+PCxlbfh2ZsZDYfY7J9zWpAxitu5B5gWtkV4/lZBbRLptKsGZaj4/+Hs7/QyyOri03aHOtl/eiPYfcrvBv/6obv+dnB0XonLOU2206c0zVdabUq0PvrRu9HN2mVV0Pd2yEyqY382Sx5fRml/S+kCumM1TUANpqCnBzDdpPd5K6oS4yCk2ngTPex1BgmJcHJLBaUI6IknoRbERVP4U7MqKMvHcaHUGoXocMQhiFJYl8tIqiQzgApUe8EjrnDuAHAWzj6IactqsXmhArpKWrw1WSXTqdZKjRbSCkzVpNv+S1euzoGiUokyrRe7WuP0J9ZAVllwSklVQ7/V5Z84PKbNrKcX9FzEU3DK2wFSpCV1x34ByvJyMPj5CTRY43BKRY3jsw2ttJ+/Rzbn97r0C97cYOd2halHUNvG/yZORcE+qqDbWit2TsJtSR3qKDiqc4s+PrSe6rZ8EVERN77sTjdvRF+nUoFU6pPco5mCSspw/9LTMdZtv1T+05sywdG7/qLBxqSLTL5UV2bMZLMLn72NUiU9+PJmebe22xSZcZB5PFNK0ty6Mo4XvBddfo4spnxVj/Jl4tOiamte+NWL0oU/WrCopClf3uVoK/awKSQ3zpPr7ha5g/4E5cu50eK/aaTPkcXG2fpHZ+Mriz+CrVXpXoKYttHE9QxKxWlTxyo55Ekw4lg5cKhOItMJfFeXuYVTeq+yITJ0U1bUTD+NduhiZC6Yl83ftlskV8z6pkOuFEgsSByNSd8QkPszu2rVe4am70AgkeFBGzGLU6pF1bOol3TGN3TEO1rxaMkIMBA9kNj/E0cuocpA+BHj2KV4VD1wFcmIio0dOObudYnVPs63lcu5TTK2D+TkapDWjNjD0780o5AmQfifWB/m5aN2IxKTgf3UsFNmHTRt4zgL2bOXmem4T9hP50qQkO/K+cq3r30EDS/+0owOrkpYx+/6+xYXfl6dHX1H7zf92Xe4i7G1yjXny3EOEIVojln0KXWPyjVdBd2FDqo4JCfGqvFk6XaZtBUlqZzFfqO1vIo44Q5zVRNebKWrbe6Y+uJD8cuF5ZWusX9dHd1sPEcXIduf1l3Z0QXyx+LzmHjorOc+u9EbCPGM+5X9C6/ca29vb9eZ8S/N2jLe3f1FphTwMsyG0PaaDl3E4txurKJLh/5UZoU1gTnmcgs7YkrOtZASFwyRyVZQ63DNOJAKOdcOoFfPBELJAeK804YVkXrpzQJ13h7am0mCEBEFhVHyZCukC96SciEhUmvZkGXICwcGV0n46tTGwJgamvZdJ81mP1yvL0VI+EuqnLUG6S1xASNBQBgOFcHaBREzB7Z3keLOyiqsMT1b1cLFK2ycolv+6lkw5RNUgKZoB/8ERM1nZ2iwfvepyJ3I77kHoyGa5YQwUbeOKfapXiOhNLgAag54+Ny/KvWkoJwTSgTJdb9YUnIn9Kf1IX9wXa8XT/EJQAhCmUeiUIrCWUz1WwpKlQAiw/uOY5Ay1qlhwQycenDqMeCuFNL6T6XSh0dfomYZMgwvkO5Pna1gs4aCOFOoZsGfnyBZovOZHz9ayaGH6pmnQI1aZf5JSdCjGtLiKW1nh9KTykeNwmLKqaowvmjnp6z4qeFtufKr0f5iJ2AKgPV4Mv/9Wjy4tzbTiR3cF9fA3P9LSo/iC+BpVQ5b5DK7WYpWRjY9WNa3NCDEDIxQYfD45Fv7FMOxNTBufIjd4rhkmNNdngunxyxrXBqo6igaXlTII2nK/Ft8kYuZGjoXisJCDAQgZMYYT9n1IbpmC2XyJ3pHilSHl53D3aYiZK7Zpr6HiLPlb3gZGXHcPxCB+DcIzP9tzUilrOMtlFtwlHERICIl1AMRlr+J32ZnqLtd78s2d4DBUc1fCZDsKfD7CQX/nHrVHmYmgJkXD/QskFQ+ww2QcmgW6ymB1/ocf6MCOzwYIV4SN1waNgHOJhO468nAbXSTRqHnK5uTWTD1URS0DrBxNoDwrkrGnRAgieT5JiBFbuz36HYK2UKoi/UAd0TI5HYphLy49AlknPKjfKdCQof+3nYOzlSGj3dtp5O3+JA3puJxKJdwRHXINAUaUoq4tbkB2WJpYlHWJ9K4gf1aMnjJ6wmTyNljIjdlOTMDmetMgFGk0hDM1MYNiJpQQzOu64tNkST9OmuL+Ng+LNr1d+ACzzzjdy0FAN1OnATvoa8pJfhAlWWRIKggFcqZg/0kgVKe6rSWyjFjhGgJPIcRhUtJMJWlW1XxNW+bKTmZHU8Jq3LS1RDbVsb5crPRSuUiQZhgm/M44LcqWxBDX9KYnsfYrF6JyizYyrsQcTl8JlToRIePZPPbT7pra8BIeo4w8NZ1IJNqiogpFCRimODGviLzoJb1FUXHNJuo6lKVYTiK65xGuwjhWpEIEQ2NgBpDpEqnfwIrwsfE4WxlFTWiPgtjhRiF3UYigCUQHcQaF9igv69puW35iXa2qcixy1TGayJaASQLMGbtPBmdp0aR6ISohtHRb4At+WHUPEOOfyFUjlC+gavN7R1Iq2FUJ8k/bO/C1WP8SMagsyguwK970S6Q5S+Cq5o2bFijdOXlety/hzSLLJ5ZwyFHL9l2gFOS9Fo3b5Vk6aXFOA7S9NKdCdWQp0B3RtOw0ySH1Cx4bgfNdHLFVsJR2UKqpCp1NKQKu2yXC3XyQe0eBxKZa1pJFHKNGEUQWjf5ykgiW5E1lswgsIscSMlAyZSaRqhIHt8TrNOY3WONtuGwUE2sYS84xK2m6ytk5kmNaKEygNV9CNOp3oJF8fRTcfJGptMCjbxQ1ngxU7Ed3Xw7p84nz6gucsUlD2d6bpfz+xE+l8+PDd/1oGec2GGe75PFNRSnfp7Cey96tJIjwE1WIvJaOUVeH20p92AiW6gIEznCPsD+S2ZM66cLIPOdVyw3PypXAFjBXlIzdFAQvHdUpyjScM+zNPa9RJTECcOIbigpxYQHghRF+f65mA0fqRzhrL+bUKsZLlu1kBMG44rX3sjRNDtAeOJb2nONBsBIECeIVzVlCEpVjGuuP26c0iqEGAFRy0q57z+aT+I4zQi9R9wHCEBARV0USWgpmrfPI9dW5QHQDdu7gzmOtYW0JecagsCFarcDLahCZAxrww7uUx8kYEIZX/KkobDZqC7NMAttBRsfUsBUKPJIfjpFViTLYBSFn2PvxFlWZpB5U5VOgSjRlNAPylKF0Nr6HBDlUpslD7ZZXiwxrU9MgOeuOxA894oKHgW8g7xa4fvfHb4cdbpGOuZ3RFUibqBLSHwfW9G4y9CSHxerUQChGYdxBnrX8ITuTndNHuZV366drkSm2VJ+iJdtVa0MUlNRMSZ2qygRdYkaOxEyVYrPtuJOwawhXWzDLiKoElrUzfpmBM8kMryOg9eWsR/AYV9gJon/J7iyUyHpUFU0Brjyb5BSTKGFCIsK/P91ivHDao+YJ5MVp5f+PcTeEJj8u1X6OH+y+gcSRBM6MIqAFynQrjZEI1fWtAQi9d9NsNAIf7wMIi+QmLMuW9VRvi1ADrKfAQtYx5wlMcCPTvgHNoTwJCZmSLwy/jlJkzHR6O1mHgMXHhdgKdl/4cQXbOD+C/X8yqeQtl2B87Xc/uKfkyqiblT6j1ZZj1+o31ohRV35ejUgAcn8jSkTx9S8EuMJy8CocBw3cmVaFjjMtKQKK+WQon05VxYTjmsVEby06vcfOHqHJiZcwJSgWqNQgCxprQidRjngwHLcOUHExdi/dJc/1tNuRipNVO7g2fvcWLIS1CGVJk7WwQ3qylmeMAjxfQd2Kg+kCTOokRe1z5OoUpusbaXsXZLau6UKsIItPLS3Zc1MAaFTVhYZVdBMUwQUyaiWRSIkc7Bj26lTEUg01BEK6UYHUAQuBAhUY5CuLTjCIsfHSw9SZBRsato5F8JuK6UkqLparOZcicLOOmkWgoWY1QGi5ipjUSjEKg2Z7dx4pny2hMF8eJG6sF6k3/bEB42OaWs0N6iA10IqEPJ96RRB8K6bDxLZtkZmUHIa58MXjmfowuDCXiO+7UMfK6uioCYaj2RFksyzGZLQfDyihThQru0VUqexXjV8hy2cVsWHV0oM330SQg91OyRR1vc4RibLx8r7uuxgHEmaXg2OI8nTS8o1EH7NqUnJ1GvtzP3WNSm5+q39c80KvkewQTt5uq0oCvt8X4jiFKPsVlHiOinINAJG2eTrF02metaoHK7CLnI0JVuU09JeBL1y4tuER2H3lDXiUIKhKhZ6aq6sLSEzj2t4Uzmv/qanpvtEiLEYUx/0ZZrl8aYTGXCFmpo5Na/+XO1KtgR9Jcm1fca+C/jwsgWfMQ5aW+GZh7osbS3PSoyRjSUqiImWUJ2Io1imQ92ojB0DGN4GdIKzRb4ONLgILE+j4LYyx1/HhdBKn7ZnBCOPMEAch3AAgcY0cFRiOV3yaqWVzInKxsR4RSCf+pYikNr0vyLwmzIOr7SAYQCIQpRRVAYlMzIpBI4AG38tJem6FkGAP5klvOX1MJ97NjnnsChL/m9PqMZdhbQQpmqOEvWlkWurcGaodqS/SwlaFkgaT6TfGGYC9aZuHan++dslp0WmGGr0jXzdlH/UpncWE1J79S0f2Tz2B7VOWXngN53jYYm4YvNFm720Doij296zTbOadTT5Z7N9qwxhZ4CAir4jbbmlAa2xh9YVyjuZRAbazAJRcLxZSN628i4BmAdrhtDDI/P7TgayLgUE950dEl0icO47FKJdKpAucoMFBOAICk+oRiKSikUdraBUKSZvOLcDBORHedkSWFfQNu4VX4+Kd0pDvSkNRpOumttuJVpzhiaOYpecGYOnb1ZBJK4dcxrTYPxLkUZjn5mQQVAR05FjMl8UkVXdSjx2ECKaWDZtyCwleMxLqmEqDN5MeduWMJkhJLcrcnCE4GZNFhAmejK1bT8JHbsrWVGtPRy3XdnwonUdR1zZcGkGEADi9YfF7i+Oh8X8kwTxCwB4Pu7wQwDw7ZLDoeRpZ6dtiQCAAwMAQOD/bJimpl3Qlh8Vkp/GaHZsguom76+H7G7gV52JtdPAjDw0Ue62otaVIaJM3r6s/b3KE0g3sxYQJfHaSUfEKIKJ3TCJetEn7qu/DUz32CRnJi7ikKyqU51NUEN23bvGiMPtxPYGYtQy5BoAk914PJ9yMPG+wmBOdzmOjpCRLqFwRkVEXG4DvyRByIoa5Sr1kuGaQXRknNHMgSwe1XSP2x6SyZ04kO+ShfV9uK9UQqPd+rgPCyI0g7wkz4VXUjy/ZgDPkEYN84lLF8cvX3ivK3bxzJ3C6qqJOSmjAMhKsijlByWGNslwlU0DLAM3GEAB1eBQtjCjTgEWkCAusJUSIAD6ucLUDGN3e2O2zurmEYerr/XBpD6w6g6v8EAizlcrsThWJFIrPZcARuc6Q2XDB+xvYBj4PPskh22bzi/jxYaNk5lhz8QJmLHBjQWRsO1aTGC3hLdeFFaoP0QNG5pMTlcqdKcNrFoJZRqPbEDnzx/8F9i/gpG2df5PpnGosjUAC+SQBhzIho0kaGlcgUMypWQe7tjTbZEA2KsYFsI3sBpsYIEayDnifMg/4kJ1JqetCzawVH2Y1RRAbMsFT21NA5yF1C0V601Nqga8RNrDOmZqyYzvu6b422WyMDYPIYBmmwxpvtS9SpLhluoMMR/q8dY/HQ6UTIg+b4Wx6RchIvXvZFoUVTYdOVkuWLDCEjVBAIL4UUGpFwZZWBHAhDRZcgVRIPBJHBD7RTRwfS8uSN0WDxjtlnhZQVJK9XLgrEYyKkslp5EtBYUEOdLSS0mJ+Vc6DID1VsOpIE2JTcNYOL8YBYTJ0pi0fI5GPsbw+gtJ3SPc6ihV9yRUQBFIjU0+EWpCGtxHW8Z7UXg8yWxzfRZy5sx5i+eWc012y9099rKsHZR1WBuV+FNkDLtgehaMRgYzsENYiwWYQpHgiZCqmyhLKfgvXGp+C73tzAPlNIKIgHsh4jLui5KykmSJZsU2sH1BK+Kpt7BK4tGWAlFIWPQRDYDmsfAqjBDzVGKt/mK3R/I6rlzgapWWsKRnQ7fEI8iFSAg+6hTUtHq7kTVB372Q0h7GoYbHcQl1Uc4WJprtwxr1BEOXyQ6Y4qAabtxNRfMrT9Ok5Xw5L958mNx0y213JA59+4GmE7jrnhmu2ui0M4L9KUQW0S+mz0MzXRcpSrQYv4sNgUhI1KpdhzZdOm2RxKKb1RMpepj4ML3sHJxcPpNvyHAoWMIdDoyQZFSMdC++wEKLjNrqK0ek+UYy0I9zSpaIJcZYrFYlKqbaVxqMC424cF1LeLDbHg5ylToyiWo1ZymBb0aAhIiVFbhelHGKSv5DFue4aGLz3odo4hptdNEjYogxbiREXGicRDpI74A2awhxSMXHnTgezjkvAZrAeHEaZhd0uOCiSy477oRrvkZhGPCsVW6D9SqUxDNeJnikVDM63spsiw/W3167QkvH1WaT7PAj8D6yEFMutfUxzcvz9f58f/9fY+MTk1PTM7Nz8wuLS8srq2sYEOi8gUEgsddpfa2x/YUM6tDTLMS2Rce5gMKxUiokDrLarD3We62NWn7H1lhI1LRI1FChRpBiBqSrvitGpyzs3nnG2gAaLQJ/ufrULteoGFnflvZ+c0Cgb/YqCk4rY+YEeZ/Jlqpa5GisajmOxu/TmEbJ4y9bAyQAQANTAhQCACihgakGQICiDnw11J72kXghsh6vbTYdNRkHNYRUVFnBqF3Xa1yGq7NOlclq/Kvhd5TYrhM6u10xcmaz5n1VpFWRPXHafzxCeWiaMmuZeW1P3f9PV6VNIdfeOy6gaOdM9jfVPYspZLJ4oJYr+XDojiOxl04c+2iggrC2nB7laca5DBEvxMlDwq2Km5sZvk/SaHLTzZVPCTlNi9Y9ntJE508jOyQnJg2xWLvH4yQFJq5Qc3v4+YEWLTucJh7MhtPUSEytcl46ovjb1HWLmc5u4xbfPxD7+S/zcwA="}},"time_used":77,"timings":{"blocked":25,"dns":0,"connect":0,"send":0,"wait":34,"receive":18,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css?family=Roboto%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7CRoboto+Slab%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7COpen+Sans%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7CMontserrat%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic\u0026display=auto\u0026ver=5.9.3","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://betaroi.ltd/","date":"2026-07-27T09:44:42.315Z","timestamp":1785145482315,"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 /css?family=Roboto%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7CRoboto+Slab%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7COpen+Sans%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7CMontserrat%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic\u0026display=auto\u0026ver=5.9.3 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://betaroi.ltd/\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 09:44:42 GMT\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncache-control: private, max-age=86400\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin-allow-popups\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":220713,"size_decoded":5609,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (1572)","md5":"b716b0f0b75950cf0b0e8e33d3af68d9","sha1":"647e570decaae040b2b52d1f0460564e2cd25203","sha256":"d86f8bf41556d7d38ae9f4fe7f3a6d87fdd378a1504e5d91b486e0d20328e5f3","sha512":"c72f34ae4cf3600ae01d33004c1470e13d3d37e40db89b1f71f82c03c17864df429bd0f49a5ebc486de80c891ef8c5e8985e2596ad787665b87c8eb95c06d845","ssdeep":"1536:2TUlczIJgr8FVVdd9tcHq9YL2xEHSRIH2Vc7b:2oWM+4vVdd9tcHq9YL2xEHSRIH2Vc7b","tlshash":"c9241e91041ba44067831cd623cf7e31ee0fa2607084d076abfd9babeddad66527436d","first_seen":"2026-02-20T23:52:50.646758Z","last_seen":"2026-07-27T09:45:50.865475Z","times_seen":30,"resource_available":false,"data":"LyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnhDN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnpTN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeGk3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4Unh5N20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnlTN20wZEo5cFFPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4QzdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ6UzdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnhpN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4eTdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ5UzdtMGRKOXBRT2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeEM3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSelM3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4aTdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeHk3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeVM3bTBkSjlwUU9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnhDN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnpTN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeGk3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4Unh5N20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnlTN20wZEo5cFFPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4QzdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ6UzdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnhpN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4eTdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ5UzdtMGRKOXBRT2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeEM3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSelM3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4aTdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeHk3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeVM3bTBkSjlwUU9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnhDN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnpTN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeGk3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4Unh5N20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnlTN20wZEo5cFFPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4QzdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ6UzdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnhpN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4eTdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ5UzdtMGRKOXBRT2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeEM3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSelM3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4aTdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeHk3bTBkSjlwUU9pazIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVUWpJZzFfaTZ0OGtDSEttNDU5V3hSeVM3bTBkSjlwUU9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdSaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVcxaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V1poeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdkaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdsaHl5VG44OWRkcFEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V1JoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5VzFoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXWmh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V2RoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V2xoeXlUbjg5ZGRwUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXUmh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXMWh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdaaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXZGh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXbGh5eVRuODlkZHBRLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdSaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVcxaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V1poeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdkaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdsaHl5VG44OWRkcFEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V1JoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5VzFoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXWmh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V2RoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V2xoeXlUbjg5ZGRwUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXUmh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXMWh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdaaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXZGh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXbGh5eVRuODlkZHBRLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdSaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVcxaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V1poeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdkaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdsaHl5VG44OWRkcFEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V1JoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5VzFoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXWmh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V2RoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V2xoeXlUbjg5ZGRwUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXUmh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXMWh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdaaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXZGh5eVRuODlkZHBST2kud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVTaklnMV9pNnQ4a0NIS200NTlXbGh5eVRuODlkZHBRLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdEU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdlU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RVNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3VrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBoZWJyZXcgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd4VTZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxVzEwNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd0MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1VTZGLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdEU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdlU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RVNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3VrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBoZWJyZXcgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd4VTZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxVzEwNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd0MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1VTZGLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdEU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdlU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RVNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3VrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBoZWJyZXcgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd4VTZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxVzEwNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd0MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1VTZGLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdEU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdlU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RVNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3VrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBoZWJyZXcgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd4VTZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxVzEwNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd0MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1VTZGLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdEU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdlU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RVNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3VrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBoZWJyZXcgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd4VTZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxVzEwNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd0MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1VTZGLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdEU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW10WWFHczEyNk1pWnBCQS1VRlVJY1ZYU0NFa3gyY21xdlhsV3FXdlU2RjE1TS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RVNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3VrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBoZWJyZXcgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd4VTZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxVzEwNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdFlhR3MxMjZNaVpwQkEtVUZVSWNWWFNDRWt4MmNtcXZYbFdxV3RrNkYxNU0ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd0MDZGMTVNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXRZYUdzMTI2TWlacEJBLVVGVUljVlhTQ0VreDJjbXF2WGxXcVd1VTZGLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU0ttdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU3VtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFNPbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFN5bXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBoZWJyZXcgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTMm11MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRWT211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFVHbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFNDbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTR211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTLW11dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFNLbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFN1bXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTT211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTeW11MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogaGVicmV3ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUUzJtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwNy0wMzA4LCBVKzA1OTAtMDVGRiwgVSsyMDBDLTIwMTAsIFUrMjBBQSwgVSsyNUNDLCBVK0ZCMUQtRkI0RjsKfQovKiBtYXRoICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUVk9tdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMi0wMzAzLCBVKzAzMDUsIFUrMDMwNy0wMzA4LCBVKzAzMTAsIFUrMDMxMiwgVSswMzE1LCBVKzAzMUEsIFUrMDMyNi0wMzI3LCBVKzAzMkMsIFUrMDMyRi0wMzMwLCBVKzAzMzItMDMzMywgVSswMzM4LCBVKzAzM0EsIFUrMDM0NiwgVSswMzRELCBVKzAzOTEtMDNBMSwgVSswM0EzLTAzQTksIFUrMDNCMS0wM0M5LCBVKzAzRDEsIFUrMDNENS0wM0Q2LCBVKzAzRjAtMDNGMSwgVSswM0Y0LTAzRjUsIFUrMjAxNi0yMDE3LCBVKzIwMzQtMjAzOCwgVSsyMDNDLCBVKzIwNDAsIFUrMjA0MywgVSsyMDQ3LCBVKzIwNTAsIFUrMjA1NywgVSsyMDVGLCBVKzIwNzAtMjA3MSwgVSsyMDc0LTIwOEUsIFUrMjA5MC0yMDlDLCBVKzIwRDAtMjBEQywgVSsyMEUxLCBVKzIwRTUtMjBFRiwgVSsyMTAwLTIxMTIsIFUrMjExNC0yMTE1LCBVKzIxMTctMjEyMSwgVSsyMTIzLTIxNEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjFBRSwgVSsyMUIwLTIxRTUsIFUrMjFGMS0yMUYyLCBVKzIxRjQtMjIxMSwgVSsyMjEzLTIyMTQsIFUrMjIxNi0yMkZGLCBVKzIzMDgtMjMwQiwgVSsyMzEwLCBVKzIzMTksIFUrMjMxQy0yMzIxLCBVKzIzMzYtMjM3QSwgVSsyMzdDLCBVKzIzOTUsIFUrMjM5Qi0yM0I3LCBVKzIzRDAsIFUrMjNEQy0yM0UxLCBVKzI0NzQtMjQ3NSwgVSsyNUFGLCBVKzI1QjMsIFUrMjVCNywgVSsyNUJELCBVKzI1QzEsIFUrMjVDQSwgVSsyNUNDLCBVKzI1RkIsIFUrMjY2RC0yNjZGLCBVKzI3QzAtMjdGRiwgVSsyOTAwLTJBRkYsIFUrMkIwRS0yQjExLCBVKzJCMzAtMkI0QywgVSsyQkZFLCBVKzMwMzAsIFUrRkY1QiwgVStGRjVELCBVKzFENDAwLTFEN0ZGLCBVKzFFRTAwLTFFRUZGOwp9Ci8qIHN5bWJvbHMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRVR211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAxLTAwMEMsIFUrMDAwRS0wMDFGLCBVKzAwN0YtMDA5RiwgVSsyMERELTIwRTAsIFUrMjBFMi0yMEU0LCBVKzIxNTAtMjE4RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMTk5LCBVKzIxQUYsIFUrMjFFNi0yMUYwLCBVKzIxRjMsIFUrMjIxOC0yMjE5LCBVKzIyOTksIFUrMjJDNC0yMkM2LCBVKzIzMDAtMjQzRiwgVSsyNDQwLTI0NEEsIFUrMjQ2MC0yNEZGLCBVKzI1QTAtMjdCRiwgVSsyODAwLTI4RkYsIFUrMjkyMS0yOTIyLCBVKzI5ODEsIFUrMjlCRiwgVSsyOUVCLCBVKzJCMDAtMkJGRiwgVSs0REMwLTRERkYsIFUrRkZGOS1GRkZCLCBVKzEwMTQwLTEwMThFLCBVKzEwMTkwLTEwMTlDLCBVKzEwMUEwLCBVKzEwMUQwLTEwMUZELCBVKzEwMkUwLTEwMkZCLCBVKzEwRTYwLTEwRTdFLCBVKzFEMkMwLTFEMkQzLCBVKzFEMkUwLTFEMzdGLCBVKzFGMDAwLTFGMEZGLCBVKzFGMTAwLTFGMUFELCBVKzFGMUU2LTFGMUZGLCBVKzFGMzBELTFGMzBGLCBVKzFGMzE1LCBVKzFGMzFDLCBVKzFGMzFFLCBVKzFGMzIwLTFGMzJDLCBVKzFGMzM2LCBVKzFGMzc4LCBVKzFGMzdELCBVKzFGMzgyLCBVKzFGMzkzLTFGMzlGLCBVKzFGM0E3LTFGM0E4LCBVKzFGM0FDLTFGM0FGLCBVKzFGM0MyLCBVKzFGM0M0LTFGM0M2LCBVKzFGM0NBLTFGM0NFLCBVKzFGM0Q0LTFGM0UwLCBVKzFGM0VELCBVKzFGM0YxLTFGM0YzLCBVKzFGM0Y1LTFGM0Y3LCBVKzFGNDA4LCBVKzFGNDE1LCBVKzFGNDFGLCBVKzFGNDI2LCBVKzFGNDNGLCBVKzFGNDQxLTFGNDQyLCBVKzFGNDQ0LCBVKzFGNDQ2LTFGNDQ5LCBVKzFGNDRDLTFGNDRFLCBVKzFGNDUzLCBVKzFGNDZBLCBVKzFGNDdELCBVKzFGNEEzLCBVKzFGNEIwLCBVKzFGNEIzLCBVKzFGNEI5LCBVKzFGNEJCLCBVKzFGNEJGLCBVKzFGNEM4LTFGNENCLCBVKzFGNEQ2LCBVKzFGNERBLCBVKzFGNERGLCBVKzFGNEUzLTFGNEU2LCBVKzFGNEVBLTFGNEVELCBVKzFGNEY3LCBVKzFGNEY5LTFGNEZCLCBVKzFGNEZELTFGNEZFLCBVKzFGNTAzLCBVKzFGNTA3LTFGNTBCLCBVKzFGNTBELCBVKzFGNTEyLTFGNTEzLCBVKzFGNTNFLTFGNTRBLCBVKzFGNTRGLTFGNUZBLCBVKzFGNjEwLCBVKzFGNjUwLTFGNjdGLCBVKzFGNjg3LCBVKzFGNjhELCBVKzFGNjkxLCBVKzFGNjk0LCBVKzFGNjk4LCBVKzFGNkFELCBVKzFGNkIyLCBVKzFGNkI5LTFGNkJBLCBVKzFGNkJDLCBVKzFGNkM2LTFGNkNGLCBVKzFGNkQzLTFGNkQ3LCBVKzFGNkUwLTFGNkVBLCBVKzFGNkYwLTFGNkYzLCBVKzFGNkY3LTFGNkZDLCBVKzFGNzAwLTFGN0ZGLCBVKzFGODAwLTFGODBCLCBVKzFGODEwLTFGODQ3LCBVKzFGODUwLTFGODU5LCBVKzFGODYwLTFGODg3LCBVKzFGODkwLTFGOEFELCBVKzFGOEIwLTFGOEJCLCBVKzFGOEMwLTFGOEMxLCBVKzFGOTAwLTFGOTBCLCBVKzFGOTNCLCBVKzFGOTQ2LCBVKzFGOTg0LCBVKzFGOTk2LCBVKzFGOUU5LCBVKzFGQTAwLTFGQTZGLCBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg5LCBVKzFGQThGLTFGQUM2LCBVKzFGQUNFLTFGQURDLCBVKzFGQURGLTFGQUU5LCBVKzFGQUYwLTFGQUY4LCBVKzFGQjAwLTFGQkZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTQ211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU0dtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUUy1tdXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTS211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTdW11MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU09tdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU3ltdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIGhlYnJldyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFMybXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDctMDMwOCwgVSswNTkwLTA1RkYsIFUrMjAwQy0yMDEwLCBVKzIwQUEsIFUrMjVDQywgVStGQjFELUZCNEY7Cn0KLyogbWF0aCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFZPbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDItMDMwMywgVSswMzA1LCBVKzAzMDctMDMwOCwgVSswMzEwLCBVKzAzMTIsIFUrMDMxNSwgVSswMzFBLCBVKzAzMjYtMDMyNywgVSswMzJDLCBVKzAzMkYtMDMzMCwgVSswMzMyLTAzMzMsIFUrMDMzOCwgVSswMzNBLCBVKzAzNDYsIFUrMDM0RCwgVSswMzkxLTAzQTEsIFUrMDNBMy0wM0E5LCBVKzAzQjEtMDNDOSwgVSswM0QxLCBVKzAzRDUtMDNENiwgVSswM0YwLTAzRjEsIFUrMDNGNC0wM0Y1LCBVKzIwMTYtMjAxNywgVSsyMDM0LTIwMzgsIFUrMjAzQywgVSsyMDQwLCBVKzIwNDMsIFUrMjA0NywgVSsyMDUwLCBVKzIwNTcsIFUrMjA1RiwgVSsyMDcwLTIwNzEsIFUrMjA3NC0yMDhFLCBVKzIwOTAtMjA5QywgVSsyMEQwLTIwREMsIFUrMjBFMSwgVSsyMEU1LTIwRUYsIFUrMjEwMC0yMTEyLCBVKzIxMTQtMjExNSwgVSsyMTE3LTIxMjEsIFUrMjEyMy0yMTRGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxQUUsIFUrMjFCMC0yMUU1LCBVKzIxRjEtMjFGMiwgVSsyMUY0LTIyMTEsIFUrMjIxMy0yMjE0LCBVKzIyMTYtMjJGRiwgVSsyMzA4LTIzMEIsIFUrMjMxMCwgVSsyMzE5LCBVKzIzMUMtMjMyMSwgVSsyMzM2LTIzN0EsIFUrMjM3QywgVSsyMzk1LCBVKzIzOUItMjNCNywgVSsyM0QwLCBVKzIzREMtMjNFMSwgVSsyNDc0LTI0NzUsIFUrMjVBRiwgVSsyNUIzLCBVKzI1QjcsIFUrMjVCRCwgVSsyNUMxLCBVKzI1Q0EsIFUrMjVDQywgVSsyNUZCLCBVKzI2NkQtMjY2RiwgVSsyN0MwLTI3RkYsIFUrMjkwMC0yQUZGLCBVKzJCMEUtMkIxMSwgVSsyQjMwLTJCNEMsIFUrMkJGRSwgVSszMDMwLCBVK0ZGNUIsIFUrRkY1RCwgVSsxRDQwMC0xRDdGRiwgVSsxRUUwMC0xRUVGRjsKfQovKiBzeW1ib2xzICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUVUdtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMS0wMDBDLCBVKzAwMEUtMDAxRiwgVSswMDdGLTAwOUYsIFUrMjBERC0yMEUwLCBVKzIwRTItMjBFNCwgVSsyMTUwLTIxOEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjE5OSwgVSsyMUFGLCBVKzIxRTYtMjFGMCwgVSsyMUYzLCBVKzIyMTgtMjIxOSwgVSsyMjk5LCBVKzIyQzQtMjJDNiwgVSsyMzAwLTI0M0YsIFUrMjQ0MC0yNDRBLCBVKzI0NjAtMjRGRiwgVSsyNUEwLTI3QkYsIFUrMjgwMC0yOEZGLCBVKzI5MjEtMjkyMiwgVSsyOTgxLCBVKzI5QkYsIFUrMjlFQiwgVSsyQjAwLTJCRkYsIFUrNERDMC00REZGLCBVK0ZGRjktRkZGQiwgVSsxMDE0MC0xMDE4RSwgVSsxMDE5MC0xMDE5QywgVSsxMDFBMCwgVSsxMDFEMC0xMDFGRCwgVSsxMDJFMC0xMDJGQiwgVSsxMEU2MC0xMEU3RSwgVSsxRDJDMC0xRDJEMywgVSsxRDJFMC0xRDM3RiwgVSsxRjAwMC0xRjBGRiwgVSsxRjEwMC0xRjFBRCwgVSsxRjFFNi0xRjFGRiwgVSsxRjMwRC0xRjMwRiwgVSsxRjMxNSwgVSsxRjMxQywgVSsxRjMxRSwgVSsxRjMyMC0xRjMyQywgVSsxRjMzNiwgVSsxRjM3OCwgVSsxRjM3RCwgVSsxRjM4MiwgVSsxRjM5My0xRjM5RiwgVSsxRjNBNy0xRjNBOCwgVSsxRjNBQy0xRjNBRiwgVSsxRjNDMiwgVSsxRjNDNC0xRjNDNiwgVSsxRjNDQS0xRjNDRSwgVSsxRjNENC0xRjNFMCwgVSsxRjNFRCwgVSsxRjNGMS0xRjNGMywgVSsxRjNGNS0xRjNGNywgVSsxRjQwOCwgVSsxRjQxNSwgVSsxRjQxRiwgVSsxRjQyNiwgVSsxRjQzRiwgVSsxRjQ0MS0xRjQ0MiwgVSsxRjQ0NCwgVSsxRjQ0Ni0xRjQ0OSwgVSsxRjQ0Qy0xRjQ0RSwgVSsxRjQ1MywgVSsxRjQ2QSwgVSsxRjQ3RCwgVSsxRjRBMywgVSsxRjRCMCwgVSsxRjRCMywgVSsxRjRCOSwgVSsxRjRCQiwgVSsxRjRCRiwgVSsxRjRDOC0xRjRDQiwgVSsxRjRENiwgVSsxRjREQSwgVSsxRjRERiwgVSsxRjRFMy0xRjRFNiwgVSsxRjRFQS0xRjRFRCwgVSsxRjRGNywgVSsxRjRGOS0xRjRGQiwgVSsxRjRGRC0xRjRGRSwgVSsxRjUwMywgVSsxRjUwNy0xRjUwQiwgVSsxRjUwRCwgVSsxRjUxMi0xRjUxMywgVSsxRjUzRS0xRjU0QSwgVSsxRjU0Ri0xRjVGQSwgVSsxRjYxMCwgVSsxRjY1MC0xRjY3RiwgVSsxRjY4NywgVSsxRjY4RCwgVSsxRjY5MSwgVSsxRjY5NCwgVSsxRjY5OCwgVSsxRjZBRCwgVSsxRjZCMiwgVSsxRjZCOS0xRjZCQSwgVSsxRjZCQywgVSsxRjZDNi0xRjZDRiwgVSsxRjZEMy0xRjZENywgVSsxRjZFMC0xRjZFQSwgVSsxRjZGMC0xRjZGMywgVSsxRjZGNy0xRjZGQywgVSsxRjcwMC0xRjdGRiwgVSsxRjgwMC0xRjgwQiwgVSsxRjgxMC0xRjg0NywgVSsxRjg1MC0xRjg1OSwgVSsxRjg2MC0xRjg4NywgVSsxRjg5MC0xRjhBRCwgVSsxRjhCMC0xRjhCQiwgVSsxRjhDMC0xRjhDMSwgVSsxRjkwMC0xRjkwQiwgVSsxRjkzQiwgVSsxRjk0NiwgVSsxRjk4NCwgVSsxRjk5NiwgVSsxRjlFOSwgVSsxRkEwMC0xRkE2RiwgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OSwgVSsxRkE4Ri0xRkFDNiwgVSsxRkFDRS0xRkFEQywgVSsxRkFERi0xRkFFOSwgVSsxRkFGMC0xRkFGOCwgVSsxRkIwMC0xRkJGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU0NtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFNHbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFMtbXV3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU0ttdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU3VtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFNPbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFN5bXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBoZWJyZXcgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTMm11MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRWT211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFVHbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFNDbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTR211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTLW11dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFNLbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFN1bXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTT211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTeW11MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogaGVicmV3ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUUzJtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwNy0wMzA4LCBVKzA1OTAtMDVGRiwgVSsyMDBDLTIwMTAsIFUrMjBBQSwgVSsyNUNDLCBVK0ZCMUQtRkI0RjsKfQovKiBtYXRoICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUVk9tdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMi0wMzAzLCBVKzAzMDUsIFUrMDMwNy0wMzA4LCBVKzAzMTAsIFUrMDMxMiwgVSswMzE1LCBVKzAzMUEsIFUrMDMyNi0wMzI3LCBVKzAzMkMsIFUrMDMyRi0wMzMwLCBVKzAzMzItMDMzMywgVSswMzM4LCBVKzAzM0EsIFUrMDM0NiwgVSswMzRELCBVKzAzOTEtMDNBMSwgVSswM0EzLTAzQTksIFUrMDNCMS0wM0M5LCBVKzAzRDEsIFUrMDNENS0wM0Q2LCBVKzAzRjAtMDNGMSwgVSswM0Y0LTAzRjUsIFUrMjAxNi0yMDE3LCBVKzIwMzQtMjAzOCwgVSsyMDNDLCBVKzIwNDAsIFUrMjA0MywgVSsyMDQ3LCBVKzIwNTAsIFUrMjA1NywgVSsyMDVGLCBVKzIwNzAtMjA3MSwgVSsyMDc0LTIwOEUsIFUrMjA5MC0yMDlDLCBVKzIwRDAtMjBEQywgVSsyMEUxLCBVKzIwRTUtMjBFRiwgVSsyMTAwLTIxMTIsIFUrMjExNC0yMTE1LCBVKzIxMTctMjEyMSwgVSsyMTIzLTIxNEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjFBRSwgVSsyMUIwLTIxRTUsIFUrMjFGMS0yMUYyLCBVKzIxRjQtMjIxMSwgVSsyMjEzLTIyMTQsIFUrMjIxNi0yMkZGLCBVKzIzMDgtMjMwQiwgVSsyMzEwLCBVKzIzMTksIFUrMjMxQy0yMzIxLCBVKzIzMzYtMjM3QSwgVSsyMzdDLCBVKzIzOTUsIFUrMjM5Qi0yM0I3LCBVKzIzRDAsIFUrMjNEQy0yM0UxLCBVKzI0NzQtMjQ3NSwgVSsyNUFGLCBVKzI1QjMsIFUrMjVCNywgVSsyNUJELCBVKzI1QzEsIFUrMjVDQSwgVSsyNUNDLCBVKzI1RkIsIFUrMjY2RC0yNjZGLCBVKzI3QzAtMjdGRiwgVSsyOTAwLTJBRkYsIFUrMkIwRS0yQjExLCBVKzJCMzAtMkI0QywgVSsyQkZFLCBVKzMwMzAsIFUrRkY1QiwgVStGRjVELCBVKzFENDAwLTFEN0ZGLCBVKzFFRTAwLTFFRUZGOwp9Ci8qIHN5bWJvbHMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRVR211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAxLTAwMEMsIFUrMDAwRS0wMDFGLCBVKzAwN0YtMDA5RiwgVSsyMERELTIwRTAsIFUrMjBFMi0yMEU0LCBVKzIxNTAtMjE4RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMTk5LCBVKzIxQUYsIFUrMjFFNi0yMUYwLCBVKzIxRjMsIFUrMjIxOC0yMjE5LCBVKzIyOTksIFUrMjJDNC0yMkM2LCBVKzIzMDAtMjQzRiwgVSsyNDQwLTI0NEEsIFUrMjQ2MC0yNEZGLCBVKzI1QTAtMjdCRiwgVSsyODAwLTI4RkYsIFUrMjkyMS0yOTIyLCBVKzI5ODEsIFUrMjlCRiwgVSsyOUVCLCBVKzJCMDAtMkJGRiwgVSs0REMwLTRERkYsIFUrRkZGOS1GRkZCLCBVKzEwMTQwLTEwMThFLCBVKzEwMTkwLTEwMTlDLCBVKzEwMUEwLCBVKzEwMUQwLTEwMUZELCBVKzEwMkUwLTEwMkZCLCBVKzEwRTYwLTEwRTdFLCBVKzFEMkMwLTFEMkQzLCBVKzFEMkUwLTFEMzdGLCBVKzFGMDAwLTFGMEZGLCBVKzFGMTAwLTFGMUFELCBVKzFGMUU2LTFGMUZGLCBVKzFGMzBELTFGMzBGLCBVKzFGMzE1LCBVKzFGMzFDLCBVKzFGMzFFLCBVKzFGMzIwLTFGMzJDLCBVKzFGMzM2LCBVKzFGMzc4LCBVKzFGMzdELCBVKzFGMzgyLCBVKzFGMzkzLTFGMzlGLCBVKzFGM0E3LTFGM0E4LCBVKzFGM0FDLTFGM0FGLCBVKzFGM0MyLCBVKzFGM0M0LTFGM0M2LCBVKzFGM0NBLTFGM0NFLCBVKzFGM0Q0LTFGM0UwLCBVKzFGM0VELCBVKzFGM0YxLTFGM0YzLCBVKzFGM0Y1LTFGM0Y3LCBVKzFGNDA4LCBVKzFGNDE1LCBVKzFGNDFGLCBVKzFGNDI2LCBVKzFGNDNGLCBVKzFGNDQxLTFGNDQyLCBVKzFGNDQ0LCBVKzFGNDQ2LTFGNDQ5LCBVKzFGNDRDLTFGNDRFLCBVKzFGNDUzLCBVKzFGNDZBLCBVKzFGNDdELCBVKzFGNEEzLCBVKzFGNEIwLCBVKzFGNEIzLCBVKzFGNEI5LCBVKzFGNEJCLCBVKzFGNEJGLCBVKzFGNEM4LTFGNENCLCBVKzFGNEQ2LCBVKzFGNERBLCBVKzFGNERGLCBVKzFGNEUzLTFGNEU2LCBVKzFGNEVBLTFGNEVELCBVKzFGNEY3LCBVKzFGNEY5LTFGNEZCLCBVKzFGNEZELTFGNEZFLCBVKzFGNTAzLCBVKzFGNTA3LTFGNTBCLCBVKzFGNTBELCBVKzFGNTEyLTFGNTEzLCBVKzFGNTNFLTFGNTRBLCBVKzFGNTRGLTFGNUZBLCBVKzFGNjEwLCBVKzFGNjUwLTFGNjdGLCBVKzFGNjg3LCBVKzFGNjhELCBVKzFGNjkxLCBVKzFGNjk0LCBVKzFGNjk4LCBVKzFGNkFELCBVKzFGNkIyLCBVKzFGNkI5LTFGNkJBLCBVKzFGNkJDLCBVKzFGNkM2LTFGNkNGLCBVKzFGNkQzLTFGNkQ3LCBVKzFGNkUwLTFGNkVBLCBVKzFGNkYwLTFGNkYzLCBVKzFGNkY3LTFGNkZDLCBVKzFGNzAwLTFGN0ZGLCBVKzFGODAwLTFGODBCLCBVKzFGODEwLTFGODQ3LCBVKzFGODUwLTFGODU5LCBVKzFGODYwLTFGODg3LCBVKzFGODkwLTFGOEFELCBVKzFGOEIwLTFGOEJCLCBVKzFGOEMwLTFGOEMxLCBVKzFGOTAwLTFGOTBCLCBVKzFGOTNCLCBVKzFGOTQ2LCBVKzFGOTg0LCBVKzFGOTk2LCBVKzFGOUU5LCBVKzFGQTAwLTFGQTZGLCBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg5LCBVKzFGQThGLTFGQUM2LCBVKzFGQUNFLTFGQURDLCBVKzFGQURGLTFGQUU5LCBVKzFGQUYwLTFGQUY4LCBVKzFGQjAwLTFGQkZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTQ211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU0dtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUUy1tdXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTS211MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvb3BlbnNhbnMvdjQ0L21lbXZZYUdzMTI2TWlacEJBLVV2V2JYMnZWblhCYk9iajJPVlRTdW11MWFCLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU09tdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU3ltdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIGhlYnJldyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFMybXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDctMDMwOCwgVSswNTkwLTA1RkYsIFUrMjAwQy0yMDEwLCBVKzIwQUEsIFUrMjVDQywgVStGQjFELUZCNEY7Cn0KLyogbWF0aCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFZPbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDItMDMwMywgVSswMzA1LCBVKzAzMDctMDMwOCwgVSswMzEwLCBVKzAzMTIsIFUrMDMxNSwgVSswMzFBLCBVKzAzMjYtMDMyNywgVSswMzJDLCBVKzAzMkYtMDMzMCwgVSswMzMyLTAzMzMsIFUrMDMzOCwgVSswMzNBLCBVKzAzNDYsIFUrMDM0RCwgVSswMzkxLTAzQTEsIFUrMDNBMy0wM0E5LCBVKzAzQjEtMDNDOSwgVSswM0QxLCBVKzAzRDUtMDNENiwgVSswM0YwLTAzRjEsIFUrMDNGNC0wM0Y1LCBVKzIwMTYtMjAxNywgVSsyMDM0LTIwMzgsIFUrMjAzQywgVSsyMDQwLCBVKzIwNDMsIFUrMjA0NywgVSsyMDUwLCBVKzIwNTcsIFUrMjA1RiwgVSsyMDcwLTIwNzEsIFUrMjA3NC0yMDhFLCBVKzIwOTAtMjA5QywgVSsyMEQwLTIwREMsIFUrMjBFMSwgVSsyMEU1LTIwRUYsIFUrMjEwMC0yMTEyLCBVKzIxMTQtMjExNSwgVSsyMTE3LTIxMjEsIFUrMjEyMy0yMTRGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxQUUsIFUrMjFCMC0yMUU1LCBVKzIxRjEtMjFGMiwgVSsyMUY0LTIyMTEsIFUrMjIxMy0yMjE0LCBVKzIyMTYtMjJGRiwgVSsyMzA4LTIzMEIsIFUrMjMxMCwgVSsyMzE5LCBVKzIzMUMtMjMyMSwgVSsyMzM2LTIzN0EsIFUrMjM3QywgVSsyMzk1LCBVKzIzOUItMjNCNywgVSsyM0QwLCBVKzIzREMtMjNFMSwgVSsyNDc0LTI0NzUsIFUrMjVBRiwgVSsyNUIzLCBVKzI1QjcsIFUrMjVCRCwgVSsyNUMxLCBVKzI1Q0EsIFUrMjVDQywgVSsyNUZCLCBVKzI2NkQtMjY2RiwgVSsyN0MwLTI3RkYsIFUrMjkwMC0yQUZGLCBVKzJCMEUtMkIxMSwgVSsyQjMwLTJCNEMsIFUrMkJGRSwgVSszMDMwLCBVK0ZGNUIsIFUrRkY1RCwgVSsxRDQwMC0xRDdGRiwgVSsxRUUwMC0xRUVGRjsKfQovKiBzeW1ib2xzICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUVUdtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMS0wMDBDLCBVKzAwMEUtMDAxRiwgVSswMDdGLTAwOUYsIFUrMjBERC0yMEUwLCBVKzIwRTItMjBFNCwgVSsyMTUwLTIxOEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjE5OSwgVSsyMUFGLCBVKzIxRTYtMjFGMCwgVSsyMUYzLCBVKzIyMTgtMjIxOSwgVSsyMjk5LCBVKzIyQzQtMjJDNiwgVSsyMzAwLTI0M0YsIFUrMjQ0MC0yNDRBLCBVKzI0NjAtMjRGRiwgVSsyNUEwLTI3QkYsIFUrMjgwMC0yOEZGLCBVKzI5MjEtMjkyMiwgVSsyOTgxLCBVKzI5QkYsIFUrMjlFQiwgVSsyQjAwLTJCRkYsIFUrNERDMC00REZGLCBVK0ZGRjktRkZGQiwgVSsxMDE0MC0xMDE4RSwgVSsxMDE5MC0xMDE5QywgVSsxMDFBMCwgVSsxMDFEMC0xMDFGRCwgVSsxMDJFMC0xMDJGQiwgVSsxMEU2MC0xMEU3RSwgVSsxRDJDMC0xRDJEMywgVSsxRDJFMC0xRDM3RiwgVSsxRjAwMC0xRjBGRiwgVSsxRjEwMC0xRjFBRCwgVSsxRjFFNi0xRjFGRiwgVSsxRjMwRC0xRjMwRiwgVSsxRjMxNSwgVSsxRjMxQywgVSsxRjMxRSwgVSsxRjMyMC0xRjMyQywgVSsxRjMzNiwgVSsxRjM3OCwgVSsxRjM3RCwgVSsxRjM4MiwgVSsxRjM5My0xRjM5RiwgVSsxRjNBNy0xRjNBOCwgVSsxRjNBQy0xRjNBRiwgVSsxRjNDMiwgVSsxRjNDNC0xRjNDNiwgVSsxRjNDQS0xRjNDRSwgVSsxRjNENC0xRjNFMCwgVSsxRjNFRCwgVSsxRjNGMS0xRjNGMywgVSsxRjNGNS0xRjNGNywgVSsxRjQwOCwgVSsxRjQxNSwgVSsxRjQxRiwgVSsxRjQyNiwgVSsxRjQzRiwgVSsxRjQ0MS0xRjQ0MiwgVSsxRjQ0NCwgVSsxRjQ0Ni0xRjQ0OSwgVSsxRjQ0Qy0xRjQ0RSwgVSsxRjQ1MywgVSsxRjQ2QSwgVSsxRjQ3RCwgVSsxRjRBMywgVSsxRjRCMCwgVSsxRjRCMywgVSsxRjRCOSwgVSsxRjRCQiwgVSsxRjRCRiwgVSsxRjRDOC0xRjRDQiwgVSsxRjRENiwgVSsxRjREQSwgVSsxRjRERiwgVSsxRjRFMy0xRjRFNiwgVSsxRjRFQS0xRjRFRCwgVSsxRjRGNywgVSsxRjRGOS0xRjRGQiwgVSsxRjRGRC0xRjRGRSwgVSsxRjUwMywgVSsxRjUwNy0xRjUwQiwgVSsxRjUwRCwgVSsxRjUxMi0xRjUxMywgVSsxRjUzRS0xRjU0QSwgVSsxRjU0Ri0xRjVGQSwgVSsxRjYxMCwgVSsxRjY1MC0xRjY3RiwgVSsxRjY4NywgVSsxRjY4RCwgVSsxRjY5MSwgVSsxRjY5NCwgVSsxRjY5OCwgVSsxRjZBRCwgVSsxRjZCMiwgVSsxRjZCOS0xRjZCQSwgVSsxRjZCQywgVSsxRjZDNi0xRjZDRiwgVSsxRjZEMy0xRjZENywgVSsxRjZFMC0xRjZFQSwgVSsxRjZGMC0xRjZGMywgVSsxRjZGNy0xRjZGQywgVSsxRjcwMC0xRjdGRiwgVSsxRjgwMC0xRjgwQiwgVSsxRjgxMC0xRjg0NywgVSsxRjg1MC0xRjg1OSwgVSsxRjg2MC0xRjg4NywgVSsxRjg5MC0xRjhBRCwgVSsxRjhCMC0xRjhCQiwgVSsxRjhDMC0xRjhDMSwgVSsxRjkwMC0xRjkwQiwgVSsxRjkzQiwgVSsxRjk0NiwgVSsxRjk4NCwgVSsxRjk5NiwgVSsxRjlFOSwgVSsxRkEwMC0xRkE2RiwgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OSwgVSsxRkE4Ri0xRkFDNiwgVSsxRkFDRS0xRkFEQywgVSsxRkFERi0xRkFFOSwgVSsxRkFGMC0xRkFGOCwgVSsxRkIwMC0xRkJGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL29wZW5zYW5zL3Y0NC9tZW12WWFHczEyNk1pWnBCQS1VdldiWDJ2Vm5YQmJPYmoyT1ZUU0NtdTFhQi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFNHbXUxYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9vcGVuc2Fucy92NDQvbWVtdllhR3MxMjZNaVpwQkEtVXZXYlgydlZuWEJiT2JqMk9WVFMtbXV3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQzNrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQW5rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Nua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0JYa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBtYXRoICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rZW5rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMi0wMzAzLCBVKzAzMDUsIFUrMDMwNy0wMzA4LCBVKzAzMTAsIFUrMDMxMiwgVSswMzE1LCBVKzAzMUEsIFUrMDMyNi0wMzI3LCBVKzAzMkMsIFUrMDMyRi0wMzMwLCBVKzAzMzItMDMzMywgVSswMzM4LCBVKzAzM0EsIFUrMDM0NiwgVSswMzRELCBVKzAzOTEtMDNBMSwgVSswM0EzLTAzQTksIFUrMDNCMS0wM0M5LCBVKzAzRDEsIFUrMDNENS0wM0Q2LCBVKzAzRjAtMDNGMSwgVSswM0Y0LTAzRjUsIFUrMjAxNi0yMDE3LCBVKzIwMzQtMjAzOCwgVSsyMDNDLCBVKzIwNDAsIFUrMjA0MywgVSsyMDQ3LCBVKzIwNTAsIFUrMjA1NywgVSsyMDVGLCBVKzIwNzAtMjA3MSwgVSsyMDc0LTIwOEUsIFUrMjA5MC0yMDlDLCBVKzIwRDAtMjBEQywgVSsyMEUxLCBVKzIwRTUtMjBFRiwgVSsyMTAwLTIxMTIsIFUrMjExNC0yMTE1LCBVKzIxMTctMjEyMSwgVSsyMTIzLTIxNEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjFBRSwgVSsyMUIwLTIxRTUsIFUrMjFGMS0yMUYyLCBVKzIxRjQtMjIxMSwgVSsyMjEzLTIyMTQsIFUrMjIxNi0yMkZGLCBVKzIzMDgtMjMwQiwgVSsyMzEwLCBVKzIzMTksIFUrMjMxQy0yMzIxLCBVKzIzMzYtMjM3QSwgVSsyMzdDLCBVKzIzOTUsIFUrMjM5Qi0yM0I3LCBVKzIzRDAsIFUrMjNEQy0yM0UxLCBVKzI0NzQtMjQ3NSwgVSsyNUFGLCBVKzI1QjMsIFUrMjVCNywgVSsyNUJELCBVKzI1QzEsIFUrMjVDQSwgVSsyNUNDLCBVKzI1RkIsIFUrMjY2RC0yNjZGLCBVKzI3QzAtMjdGRiwgVSsyOTAwLTJBRkYsIFUrMkIwRS0yQjExLCBVKzJCMzAtMkI0QywgVSsyQkZFLCBVKzMwMzAsIFUrRkY1QiwgVStGRjVELCBVKzFENDAwLTFEN0ZGLCBVKzFFRTAwLTFFRUZGOwp9Ci8qIHN5bWJvbHMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWthSGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAxLTAwMEMsIFUrMDAwRS0wMDFGLCBVKzAwN0YtMDA5RiwgVSsyMERELTIwRTAsIFUrMjBFMi0yMEU0LCBVKzIxNTAtMjE4RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMTk5LCBVKzIxQUYsIFUrMjFFNi0yMUYwLCBVKzIxRjMsIFUrMjIxOC0yMjE5LCBVKzIyOTksIFUrMjJDNC0yMkM2LCBVKzIzMDAtMjQzRiwgVSsyNDQwLTI0NEEsIFUrMjQ2MC0yNEZGLCBVKzI1QTAtMjdCRiwgVSsyODAwLTI4RkYsIFUrMjkyMS0yOTIyLCBVKzI5ODEsIFUrMjlCRiwgVSsyOUVCLCBVKzJCMDAtMkJGRiwgVSs0REMwLTRERkYsIFUrRkZGOS1GRkZCLCBVKzEwMTQwLTEwMThFLCBVKzEwMTkwLTEwMTlDLCBVKzEwMUEwLCBVKzEwMUQwLTEwMUZELCBVKzEwMkUwLTEwMkZCLCBVKzEwRTYwLTEwRTdFLCBVKzFEMkMwLTFEMkQzLCBVKzFEMkUwLTFEMzdGLCBVKzFGMDAwLTFGMEZGLCBVKzFGMTAwLTFGMUFELCBVKzFGMUU2LTFGMUZGLCBVKzFGMzBELTFGMzBGLCBVKzFGMzE1LCBVKzFGMzFDLCBVKzFGMzFFLCBVKzFGMzIwLTFGMzJDLCBVKzFGMzM2LCBVKzFGMzc4LCBVKzFGMzdELCBVKzFGMzgyLCBVKzFGMzkzLTFGMzlGLCBVKzFGM0E3LTFGM0E4LCBVKzFGM0FDLTFGM0FGLCBVKzFGM0MyLCBVKzFGM0M0LTFGM0M2LCBVKzFGM0NBLTFGM0NFLCBVKzFGM0Q0LTFGM0UwLCBVKzFGM0VELCBVKzFGM0YxLTFGM0YzLCBVKzFGM0Y1LTFGM0Y3LCBVKzFGNDA4LCBVKzFGNDE1LCBVKzFGNDFGLCBVKzFGNDI2LCBVKzFGNDNGLCBVKzFGNDQxLTFGNDQyLCBVKzFGNDQ0LCBVKzFGNDQ2LTFGNDQ5LCBVKzFGNDRDLTFGNDRFLCBVKzFGNDUzLCBVKzFGNDZBLCBVKzFGNDdELCBVKzFGNEEzLCBVKzFGNEIwLCBVKzFGNEIzLCBVKzFGNEI5LCBVKzFGNEJCLCBVKzFGNEJGLCBVKzFGNEM4LTFGNENCLCBVKzFGNEQ2LCBVKzFGNERBLCBVKzFGNERGLCBVKzFGNEUzLTFGNEU2LCBVKzFGNEVBLTFGNEVELCBVKzFGNEY3LCBVKzFGNEY5LTFGNEZCLCBVKzFGNEZELTFGNEZFLCBVKzFGNTAzLCBVKzFGNTA3LTFGNTBCLCBVKzFGNTBELCBVKzFGNTEyLTFGNTEzLCBVKzFGNTNFLTFGNTRBLCBVKzFGNTRGLTFGNUZBLCBVKzFGNjEwLCBVKzFGNjUwLTFGNjdGLCBVKzFGNjg3LCBVKzFGNjhELCBVKzFGNjkxLCBVKzFGNjk0LCBVKzFGNjk4LCBVKzFGNkFELCBVKzFGNkIyLCBVKzFGNkI5LTFGNkJBLCBVKzFGNkJDLCBVKzFGNkM2LTFGNkNGLCBVKzFGNkQzLTFGNkQ3LCBVKzFGNkUwLTFGNkVBLCBVKzFGNkYwLTFGNkYzLCBVKzFGNkY3LTFGNkZDLCBVKzFGNzAwLTFGN0ZGLCBVKzFGODAwLTFGODBCLCBVKzFGODEwLTFGODQ3LCBVKzFGODUwLTFGODU5LCBVKzFGODYwLTFGODg3LCBVKzFGODkwLTFGOEFELCBVKzFGOEIwLTFGOEJCLCBVKzFGOEMwLTFGOEMxLCBVKzFGOTAwLTFGOTBCLCBVKzFGOTNCLCBVKzFGOTQ2LCBVKzFGOTg0LCBVKzFGOTk2LCBVKzFGOUU5LCBVKzFGQTAwLTFGQTZGLCBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg5LCBVKzFGQThGLTFGQUM2LCBVKzFGQUNFLTFGQURDLCBVKzFGQURGLTFGQUU5LCBVKzFGQUYwLTFGQUY4LCBVKzFGQjAwLTFGQkZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDWGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ0hrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQm5rYS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Mza2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Fua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtCWGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogbWF0aCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta2Vua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDItMDMwMywgVSswMzA1LCBVKzAzMDctMDMwOCwgVSswMzEwLCBVKzAzMTIsIFUrMDMxNSwgVSswMzFBLCBVKzAzMjYtMDMyNywgVSswMzJDLCBVKzAzMkYtMDMzMCwgVSswMzMyLTAzMzMsIFUrMDMzOCwgVSswMzNBLCBVKzAzNDYsIFUrMDM0RCwgVSswMzkxLTAzQTEsIFUrMDNBMy0wM0E5LCBVKzAzQjEtMDNDOSwgVSswM0QxLCBVKzAzRDUtMDNENiwgVSswM0YwLTAzRjEsIFUrMDNGNC0wM0Y1LCBVKzIwMTYtMjAxNywgVSsyMDM0LTIwMzgsIFUrMjAzQywgVSsyMDQwLCBVKzIwNDMsIFUrMjA0NywgVSsyMDUwLCBVKzIwNTcsIFUrMjA1RiwgVSsyMDcwLTIwNzEsIFUrMjA3NC0yMDhFLCBVKzIwOTAtMjA5QywgVSsyMEQwLTIwREMsIFUrMjBFMSwgVSsyMEU1LTIwRUYsIFUrMjEwMC0yMTEyLCBVKzIxMTQtMjExNSwgVSsyMTE3LTIxMjEsIFUrMjEyMy0yMTRGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxQUUsIFUrMjFCMC0yMUU1LCBVKzIxRjEtMjFGMiwgVSsyMUY0LTIyMTEsIFUrMjIxMy0yMjE0LCBVKzIyMTYtMjJGRiwgVSsyMzA4LTIzMEIsIFUrMjMxMCwgVSsyMzE5LCBVKzIzMUMtMjMyMSwgVSsyMzM2LTIzN0EsIFUrMjM3QywgVSsyMzk1LCBVKzIzOUItMjNCNywgVSsyM0QwLCBVKzIzREMtMjNFMSwgVSsyNDc0LTI0NzUsIFUrMjVBRiwgVSsyNUIzLCBVKzI1QjcsIFUrMjVCRCwgVSsyNUMxLCBVKzI1Q0EsIFUrMjVDQywgVSsyNUZCLCBVKzI2NkQtMjY2RiwgVSsyN0MwLTI3RkYsIFUrMjkwMC0yQUZGLCBVKzJCMEUtMkIxMSwgVSsyQjMwLTJCNEMsIFUrMkJGRSwgVSszMDMwLCBVK0ZGNUIsIFUrRkY1RCwgVSsxRDQwMC0xRDdGRiwgVSsxRUUwMC0xRUVGRjsKfQovKiBzeW1ib2xzICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rYUhrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMS0wMDBDLCBVKzAwMEUtMDAxRiwgVSswMDdGLTAwOUYsIFUrMjBERC0yMEUwLCBVKzIwRTItMjBFNCwgVSsyMTUwLTIxOEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjE5OSwgVSsyMUFGLCBVKzIxRTYtMjFGMCwgVSsyMUYzLCBVKzIyMTgtMjIxOSwgVSsyMjk5LCBVKzIyQzQtMjJDNiwgVSsyMzAwLTI0M0YsIFUrMjQ0MC0yNDRBLCBVKzI0NjAtMjRGRiwgVSsyNUEwLTI3QkYsIFUrMjgwMC0yOEZGLCBVKzI5MjEtMjkyMiwgVSsyOTgxLCBVKzI5QkYsIFUrMjlFQiwgVSsyQjAwLTJCRkYsIFUrNERDMC00REZGLCBVK0ZGRjktRkZGQiwgVSsxMDE0MC0xMDE4RSwgVSsxMDE5MC0xMDE5QywgVSsxMDFBMCwgVSsxMDFEMC0xMDFGRCwgVSsxMDJFMC0xMDJGQiwgVSsxMEU2MC0xMEU3RSwgVSsxRDJDMC0xRDJEMywgVSsxRDJFMC0xRDM3RiwgVSsxRjAwMC0xRjBGRiwgVSsxRjEwMC0xRjFBRCwgVSsxRjFFNi0xRjFGRiwgVSsxRjMwRC0xRjMwRiwgVSsxRjMxNSwgVSsxRjMxQywgVSsxRjMxRSwgVSsxRjMyMC0xRjMyQywgVSsxRjMzNiwgVSsxRjM3OCwgVSsxRjM3RCwgVSsxRjM4MiwgVSsxRjM5My0xRjM5RiwgVSsxRjNBNy0xRjNBOCwgVSsxRjNBQy0xRjNBRiwgVSsxRjNDMiwgVSsxRjNDNC0xRjNDNiwgVSsxRjNDQS0xRjNDRSwgVSsxRjNENC0xRjNFMCwgVSsxRjNFRCwgVSsxRjNGMS0xRjNGMywgVSsxRjNGNS0xRjNGNywgVSsxRjQwOCwgVSsxRjQxNSwgVSsxRjQxRiwgVSsxRjQyNiwgVSsxRjQzRiwgVSsxRjQ0MS0xRjQ0MiwgVSsxRjQ0NCwgVSsxRjQ0Ni0xRjQ0OSwgVSsxRjQ0Qy0xRjQ0RSwgVSsxRjQ1MywgVSsxRjQ2QSwgVSsxRjQ3RCwgVSsxRjRBMywgVSsxRjRCMCwgVSsxRjRCMywgVSsxRjRCOSwgVSsxRjRCQiwgVSsxRjRCRiwgVSsxRjRDOC0xRjRDQiwgVSsxRjRENiwgVSsxRjREQSwgVSsxRjRERiwgVSsxRjRFMy0xRjRFNiwgVSsxRjRFQS0xRjRFRCwgVSsxRjRGNywgVSsxRjRGOS0xRjRGQiwgVSsxRjRGRC0xRjRGRSwgVSsxRjUwMywgVSsxRjUwNy0xRjUwQiwgVSsxRjUwRCwgVSsxRjUxMi0xRjUxMywgVSsxRjUzRS0xRjU0QSwgVSsxRjU0Ri0xRjVGQSwgVSsxRjYxMCwgVSsxRjY1MC0xRjY3RiwgVSsxRjY4NywgVSsxRjY4RCwgVSsxRjY5MSwgVSsxRjY5NCwgVSsxRjY5OCwgVSsxRjZBRCwgVSsxRjZCMiwgVSsxRjZCOS0xRjZCQSwgVSsxRjZCQywgVSsxRjZDNi0xRjZDRiwgVSsxRjZEMy0xRjZENywgVSsxRjZFMC0xRjZFQSwgVSsxRjZGMC0xRjZGMywgVSsxRjZGNy0xRjZGQywgVSsxRjcwMC0xRjdGRiwgVSsxRjgwMC0xRjgwQiwgVSsxRjgxMC0xRjg0NywgVSsxRjg1MC0xRjg1OSwgVSsxRjg2MC0xRjg4NywgVSsxRjg5MC0xRjhBRCwgVSsxRjhCMC0xRjhCQiwgVSsxRjhDMC0xRjhDMSwgVSsxRjkwMC0xRjkwQiwgVSsxRjkzQiwgVSsxRjk0NiwgVSsxRjk4NCwgVSsxRjk5NiwgVSsxRjlFOSwgVSsxRkEwMC0xRkE2RiwgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OSwgVSsxRkE4Ri0xRkFDNiwgVSsxRkFDRS0xRkFEQywgVSsxRkFERi0xRkFFOSwgVSsxRkFGMC0xRkFGOCwgVSsxRkIwMC0xRkJGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ1hrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0NIa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Jua2Eud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDM2thV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtBbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ25rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQlhrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtlbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta2FIa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0NYa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDSGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtCbmthLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQzNrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQW5rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Nua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0JYa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBtYXRoICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rZW5rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMi0wMzAzLCBVKzAzMDUsIFUrMDMwNy0wMzA4LCBVKzAzMTAsIFUrMDMxMiwgVSswMzE1LCBVKzAzMUEsIFUrMDMyNi0wMzI3LCBVKzAzMkMsIFUrMDMyRi0wMzMwLCBVKzAzMzItMDMzMywgVSswMzM4LCBVKzAzM0EsIFUrMDM0NiwgVSswMzRELCBVKzAzOTEtMDNBMSwgVSswM0EzLTAzQTksIFUrMDNCMS0wM0M5LCBVKzAzRDEsIFUrMDNENS0wM0Q2LCBVKzAzRjAtMDNGMSwgVSswM0Y0LTAzRjUsIFUrMjAxNi0yMDE3LCBVKzIwMzQtMjAzOCwgVSsyMDNDLCBVKzIwNDAsIFUrMjA0MywgVSsyMDQ3LCBVKzIwNTAsIFUrMjA1NywgVSsyMDVGLCBVKzIwNzAtMjA3MSwgVSsyMDc0LTIwOEUsIFUrMjA5MC0yMDlDLCBVKzIwRDAtMjBEQywgVSsyMEUxLCBVKzIwRTUtMjBFRiwgVSsyMTAwLTIxMTIsIFUrMjExNC0yMTE1LCBVKzIxMTctMjEyMSwgVSsyMTIzLTIxNEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjFBRSwgVSsyMUIwLTIxRTUsIFUrMjFGMS0yMUYyLCBVKzIxRjQtMjIxMSwgVSsyMjEzLTIyMTQsIFUrMjIxNi0yMkZGLCBVKzIzMDgtMjMwQiwgVSsyMzEwLCBVKzIzMTksIFUrMjMxQy0yMzIxLCBVKzIzMzYtMjM3QSwgVSsyMzdDLCBVKzIzOTUsIFUrMjM5Qi0yM0I3LCBVKzIzRDAsIFUrMjNEQy0yM0UxLCBVKzI0NzQtMjQ3NSwgVSsyNUFGLCBVKzI1QjMsIFUrMjVCNywgVSsyNUJELCBVKzI1QzEsIFUrMjVDQSwgVSsyNUNDLCBVKzI1RkIsIFUrMjY2RC0yNjZGLCBVKzI3QzAtMjdGRiwgVSsyOTAwLTJBRkYsIFUrMkIwRS0yQjExLCBVKzJCMzAtMkI0QywgVSsyQkZFLCBVKzMwMzAsIFUrRkY1QiwgVStGRjVELCBVKzFENDAwLTFEN0ZGLCBVKzFFRTAwLTFFRUZGOwp9Ci8qIHN5bWJvbHMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWthSGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAxLTAwMEMsIFUrMDAwRS0wMDFGLCBVKzAwN0YtMDA5RiwgVSsyMERELTIwRTAsIFUrMjBFMi0yMEU0LCBVKzIxNTAtMjE4RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMTk5LCBVKzIxQUYsIFUrMjFFNi0yMUYwLCBVKzIxRjMsIFUrMjIxOC0yMjE5LCBVKzIyOTksIFUrMjJDNC0yMkM2LCBVKzIzMDAtMjQzRiwgVSsyNDQwLTI0NEEsIFUrMjQ2MC0yNEZGLCBVKzI1QTAtMjdCRiwgVSsyODAwLTI4RkYsIFUrMjkyMS0yOTIyLCBVKzI5ODEsIFUrMjlCRiwgVSsyOUVCLCBVKzJCMDAtMkJGRiwgVSs0REMwLTRERkYsIFUrRkZGOS1GRkZCLCBVKzEwMTQwLTEwMThFLCBVKzEwMTkwLTEwMTlDLCBVKzEwMUEwLCBVKzEwMUQwLTEwMUZELCBVKzEwMkUwLTEwMkZCLCBVKzEwRTYwLTEwRTdFLCBVKzFEMkMwLTFEMkQzLCBVKzFEMkUwLTFEMzdGLCBVKzFGMDAwLTFGMEZGLCBVKzFGMTAwLTFGMUFELCBVKzFGMUU2LTFGMUZGLCBVKzFGMzBELTFGMzBGLCBVKzFGMzE1LCBVKzFGMzFDLCBVKzFGMzFFLCBVKzFGMzIwLTFGMzJDLCBVKzFGMzM2LCBVKzFGMzc4LCBVKzFGMzdELCBVKzFGMzgyLCBVKzFGMzkzLTFGMzlGLCBVKzFGM0E3LTFGM0E4LCBVKzFGM0FDLTFGM0FGLCBVKzFGM0MyLCBVKzFGM0M0LTFGM0M2LCBVKzFGM0NBLTFGM0NFLCBVKzFGM0Q0LTFGM0UwLCBVKzFGM0VELCBVKzFGM0YxLTFGM0YzLCBVKzFGM0Y1LTFGM0Y3LCBVKzFGNDA4LCBVKzFGNDE1LCBVKzFGNDFGLCBVKzFGNDI2LCBVKzFGNDNGLCBVKzFGNDQxLTFGNDQyLCBVKzFGNDQ0LCBVKzFGNDQ2LTFGNDQ5LCBVKzFGNDRDLTFGNDRFLCBVKzFGNDUzLCBVKzFGNDZBLCBVKzFGNDdELCBVKzFGNEEzLCBVKzFGNEIwLCBVKzFGNEIzLCBVKzFGNEI5LCBVKzFGNEJCLCBVKzFGNEJGLCBVKzFGNEM4LTFGNENCLCBVKzFGNEQ2LCBVKzFGNERBLCBVKzFGNERGLCBVKzFGNEUzLTFGNEU2LCBVKzFGNEVBLTFGNEVELCBVKzFGNEY3LCBVKzFGNEY5LTFGNEZCLCBVKzFGNEZELTFGNEZFLCBVKzFGNTAzLCBVKzFGNTA3LTFGNTBCLCBVKzFGNTBELCBVKzFGNTEyLTFGNTEzLCBVKzFGNTNFLTFGNTRBLCBVKzFGNTRGLTFGNUZBLCBVKzFGNjEwLCBVKzFGNjUwLTFGNjdGLCBVKzFGNjg3LCBVKzFGNjhELCBVKzFGNjkxLCBVKzFGNjk0LCBVKzFGNjk4LCBVKzFGNkFELCBVKzFGNkIyLCBVKzFGNkI5LTFGNkJBLCBVKzFGNkJDLCBVKzFGNkM2LTFGNkNGLCBVKzFGNkQzLTFGNkQ3LCBVKzFGNkUwLTFGNkVBLCBVKzFGNkYwLTFGNkYzLCBVKzFGNkY3LTFGNkZDLCBVKzFGNzAwLTFGN0ZGLCBVKzFGODAwLTFGODBCLCBVKzFGODEwLTFGODQ3LCBVKzFGODUwLTFGODU5LCBVKzFGODYwLTFGODg3LCBVKzFGODkwLTFGOEFELCBVKzFGOEIwLTFGOEJCLCBVKzFGOEMwLTFGOEMxLCBVKzFGOTAwLTFGOTBCLCBVKzFGOTNCLCBVKzFGOTQ2LCBVKzFGOTg0LCBVKzFGOTk2LCBVKzFGOUU5LCBVKzFGQTAwLTFGQTZGLCBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg5LCBVKzFGQThGLTFGQUM2LCBVKzFGQUNFLTFGQURDLCBVKzFGQURGLTFGQUU5LCBVKzFGQUYwLTFGQUY4LCBVKzFGQjAwLTFGQkZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDWGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ0hrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQm5rYS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Mza2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Fua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtCWGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogbWF0aCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta2Vua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDItMDMwMywgVSswMzA1LCBVKzAzMDctMDMwOCwgVSswMzEwLCBVKzAzMTIsIFUrMDMxNSwgVSswMzFBLCBVKzAzMjYtMDMyNywgVSswMzJDLCBVKzAzMkYtMDMzMCwgVSswMzMyLTAzMzMsIFUrMDMzOCwgVSswMzNBLCBVKzAzNDYsIFUrMDM0RCwgVSswMzkxLTAzQTEsIFUrMDNBMy0wM0E5LCBVKzAzQjEtMDNDOSwgVSswM0QxLCBVKzAzRDUtMDNENiwgVSswM0YwLTAzRjEsIFUrMDNGNC0wM0Y1LCBVKzIwMTYtMjAxNywgVSsyMDM0LTIwMzgsIFUrMjAzQywgVSsyMDQwLCBVKzIwNDMsIFUrMjA0NywgVSsyMDUwLCBVKzIwNTcsIFUrMjA1RiwgVSsyMDcwLTIwNzEsIFUrMjA3NC0yMDhFLCBVKzIwOTAtMjA5QywgVSsyMEQwLTIwREMsIFUrMjBFMSwgVSsyMEU1LTIwRUYsIFUrMjEwMC0yMTEyLCBVKzIxMTQtMjExNSwgVSsyMTE3LTIxMjEsIFUrMjEyMy0yMTRGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxQUUsIFUrMjFCMC0yMUU1LCBVKzIxRjEtMjFGMiwgVSsyMUY0LTIyMTEsIFUrMjIxMy0yMjE0LCBVKzIyMTYtMjJGRiwgVSsyMzA4LTIzMEIsIFUrMjMxMCwgVSsyMzE5LCBVKzIzMUMtMjMyMSwgVSsyMzM2LTIzN0EsIFUrMjM3QywgVSsyMzk1LCBVKzIzOUItMjNCNywgVSsyM0QwLCBVKzIzREMtMjNFMSwgVSsyNDc0LTI0NzUsIFUrMjVBRiwgVSsyNUIzLCBVKzI1QjcsIFUrMjVCRCwgVSsyNUMxLCBVKzI1Q0EsIFUrMjVDQywgVSsyNUZCLCBVKzI2NkQtMjY2RiwgVSsyN0MwLTI3RkYsIFUrMjkwMC0yQUZGLCBVKzJCMEUtMkIxMSwgVSsyQjMwLTJCNEMsIFUrMkJGRSwgVSszMDMwLCBVK0ZGNUIsIFUrRkY1RCwgVSsxRDQwMC0xRDdGRiwgVSsxRUUwMC0xRUVGRjsKfQovKiBzeW1ib2xzICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rYUhrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMS0wMDBDLCBVKzAwMEUtMDAxRiwgVSswMDdGLTAwOUYsIFUrMjBERC0yMEUwLCBVKzIwRTItMjBFNCwgVSsyMTUwLTIxOEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjE5OSwgVSsyMUFGLCBVKzIxRTYtMjFGMCwgVSsyMUYzLCBVKzIyMTgtMjIxOSwgVSsyMjk5LCBVKzIyQzQtMjJDNiwgVSsyMzAwLTI0M0YsIFUrMjQ0MC0yNDRBLCBVKzI0NjAtMjRGRiwgVSsyNUEwLTI3QkYsIFUrMjgwMC0yOEZGLCBVKzI5MjEtMjkyMiwgVSsyOTgxLCBVKzI5QkYsIFUrMjlFQiwgVSsyQjAwLTJCRkYsIFUrNERDMC00REZGLCBVK0ZGRjktRkZGQiwgVSsxMDE0MC0xMDE4RSwgVSsxMDE5MC0xMDE5QywgVSsxMDFBMCwgVSsxMDFEMC0xMDFGRCwgVSsxMDJFMC0xMDJGQiwgVSsxMEU2MC0xMEU3RSwgVSsxRDJDMC0xRDJEMywgVSsxRDJFMC0xRDM3RiwgVSsxRjAwMC0xRjBGRiwgVSsxRjEwMC0xRjFBRCwgVSsxRjFFNi0xRjFGRiwgVSsxRjMwRC0xRjMwRiwgVSsxRjMxNSwgVSsxRjMxQywgVSsxRjMxRSwgVSsxRjMyMC0xRjMyQywgVSsxRjMzNiwgVSsxRjM3OCwgVSsxRjM3RCwgVSsxRjM4MiwgVSsxRjM5My0xRjM5RiwgVSsxRjNBNy0xRjNBOCwgVSsxRjNBQy0xRjNBRiwgVSsxRjNDMiwgVSsxRjNDNC0xRjNDNiwgVSsxRjNDQS0xRjNDRSwgVSsxRjNENC0xRjNFMCwgVSsxRjNFRCwgVSsxRjNGMS0xRjNGMywgVSsxRjNGNS0xRjNGNywgVSsxRjQwOCwgVSsxRjQxNSwgVSsxRjQxRiwgVSsxRjQyNiwgVSsxRjQzRiwgVSsxRjQ0MS0xRjQ0MiwgVSsxRjQ0NCwgVSsxRjQ0Ni0xRjQ0OSwgVSsxRjQ0Qy0xRjQ0RSwgVSsxRjQ1MywgVSsxRjQ2QSwgVSsxRjQ3RCwgVSsxRjRBMywgVSsxRjRCMCwgVSsxRjRCMywgVSsxRjRCOSwgVSsxRjRCQiwgVSsxRjRCRiwgVSsxRjRDOC0xRjRDQiwgVSsxRjRENiwgVSsxRjREQSwgVSsxRjRERiwgVSsxRjRFMy0xRjRFNiwgVSsxRjRFQS0xRjRFRCwgVSsxRjRGNywgVSsxRjRGOS0xRjRGQiwgVSsxRjRGRC0xRjRGRSwgVSsxRjUwMywgVSsxRjUwNy0xRjUwQiwgVSsxRjUwRCwgVSsxRjUxMi0xRjUxMywgVSsxRjUzRS0xRjU0QSwgVSsxRjU0Ri0xRjVGQSwgVSsxRjYxMCwgVSsxRjY1MC0xRjY3RiwgVSsxRjY4NywgVSsxRjY4RCwgVSsxRjY5MSwgVSsxRjY5NCwgVSsxRjY5OCwgVSsxRjZBRCwgVSsxRjZCMiwgVSsxRjZCOS0xRjZCQSwgVSsxRjZCQywgVSsxRjZDNi0xRjZDRiwgVSsxRjZEMy0xRjZENywgVSsxRjZFMC0xRjZFQSwgVSsxRjZGMC0xRjZGMywgVSsxRjZGNy0xRjZGQywgVSsxRjcwMC0xRjdGRiwgVSsxRjgwMC0xRjgwQiwgVSsxRjgxMC0xRjg0NywgVSsxRjg1MC0xRjg1OSwgVSsxRjg2MC0xRjg4NywgVSsxRjg5MC0xRjhBRCwgVSsxRjhCMC0xRjhCQiwgVSsxRjhDMC0xRjhDMSwgVSsxRjkwMC0xRjkwQiwgVSsxRjkzQiwgVSsxRjk0NiwgVSsxRjk4NCwgVSsxRjk5NiwgVSsxRjlFOSwgVSsxRkEwMC0xRkE2RiwgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OSwgVSsxRkE4Ri0xRkFDNiwgVSsxRkFDRS0xRkFEQywgVSsxRkFERi0xRkFFOSwgVSsxRkFGMC0xRkFGOCwgVSsxRkIwMC0xRkJGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ1hrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0NIa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Jua2Eud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDM2thV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtBbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ25rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQlhrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtlbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta2FIa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0NYa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDSGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtCbmthLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQzNrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQW5rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Nua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0JYa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBtYXRoICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rZW5rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMi0wMzAzLCBVKzAzMDUsIFUrMDMwNy0wMzA4LCBVKzAzMTAsIFUrMDMxMiwgVSswMzE1LCBVKzAzMUEsIFUrMDMyNi0wMzI3LCBVKzAzMkMsIFUrMDMyRi0wMzMwLCBVKzAzMzItMDMzMywgVSswMzM4LCBVKzAzM0EsIFUrMDM0NiwgVSswMzRELCBVKzAzOTEtMDNBMSwgVSswM0EzLTAzQTksIFUrMDNCMS0wM0M5LCBVKzAzRDEsIFUrMDNENS0wM0Q2LCBVKzAzRjAtMDNGMSwgVSswM0Y0LTAzRjUsIFUrMjAxNi0yMDE3LCBVKzIwMzQtMjAzOCwgVSsyMDNDLCBVKzIwNDAsIFUrMjA0MywgVSsyMDQ3LCBVKzIwNTAsIFUrMjA1NywgVSsyMDVGLCBVKzIwNzAtMjA3MSwgVSsyMDc0LTIwOEUsIFUrMjA5MC0yMDlDLCBVKzIwRDAtMjBEQywgVSsyMEUxLCBVKzIwRTUtMjBFRiwgVSsyMTAwLTIxMTIsIFUrMjExNC0yMTE1LCBVKzIxMTctMjEyMSwgVSsyMTIzLTIxNEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjFBRSwgVSsyMUIwLTIxRTUsIFUrMjFGMS0yMUYyLCBVKzIxRjQtMjIxMSwgVSsyMjEzLTIyMTQsIFUrMjIxNi0yMkZGLCBVKzIzMDgtMjMwQiwgVSsyMzEwLCBVKzIzMTksIFUrMjMxQy0yMzIxLCBVKzIzMzYtMjM3QSwgVSsyMzdDLCBVKzIzOTUsIFUrMjM5Qi0yM0I3LCBVKzIzRDAsIFUrMjNEQy0yM0UxLCBVKzI0NzQtMjQ3NSwgVSsyNUFGLCBVKzI1QjMsIFUrMjVCNywgVSsyNUJELCBVKzI1QzEsIFUrMjVDQSwgVSsyNUNDLCBVKzI1RkIsIFUrMjY2RC0yNjZGLCBVKzI3QzAtMjdGRiwgVSsyOTAwLTJBRkYsIFUrMkIwRS0yQjExLCBVKzJCMzAtMkI0QywgVSsyQkZFLCBVKzMwMzAsIFUrRkY1QiwgVStGRjVELCBVKzFENDAwLTFEN0ZGLCBVKzFFRTAwLTFFRUZGOwp9Ci8qIHN5bWJvbHMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWthSGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAxLTAwMEMsIFUrMDAwRS0wMDFGLCBVKzAwN0YtMDA5RiwgVSsyMERELTIwRTAsIFUrMjBFMi0yMEU0LCBVKzIxNTAtMjE4RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMTk5LCBVKzIxQUYsIFUrMjFFNi0yMUYwLCBVKzIxRjMsIFUrMjIxOC0yMjE5LCBVKzIyOTksIFUrMjJDNC0yMkM2LCBVKzIzMDAtMjQzRiwgVSsyNDQwLTI0NEEsIFUrMjQ2MC0yNEZGLCBVKzI1QTAtMjdCRiwgVSsyODAwLTI4RkYsIFUrMjkyMS0yOTIyLCBVKzI5ODEsIFUrMjlCRiwgVSsyOUVCLCBVKzJCMDAtMkJGRiwgVSs0REMwLTRERkYsIFUrRkZGOS1GRkZCLCBVKzEwMTQwLTEwMThFLCBVKzEwMTkwLTEwMTlDLCBVKzEwMUEwLCBVKzEwMUQwLTEwMUZELCBVKzEwMkUwLTEwMkZCLCBVKzEwRTYwLTEwRTdFLCBVKzFEMkMwLTFEMkQzLCBVKzFEMkUwLTFEMzdGLCBVKzFGMDAwLTFGMEZGLCBVKzFGMTAwLTFGMUFELCBVKzFGMUU2LTFGMUZGLCBVKzFGMzBELTFGMzBGLCBVKzFGMzE1LCBVKzFGMzFDLCBVKzFGMzFFLCBVKzFGMzIwLTFGMzJDLCBVKzFGMzM2LCBVKzFGMzc4LCBVKzFGMzdELCBVKzFGMzgyLCBVKzFGMzkzLTFGMzlGLCBVKzFGM0E3LTFGM0E4LCBVKzFGM0FDLTFGM0FGLCBVKzFGM0MyLCBVKzFGM0M0LTFGM0M2LCBVKzFGM0NBLTFGM0NFLCBVKzFGM0Q0LTFGM0UwLCBVKzFGM0VELCBVKzFGM0YxLTFGM0YzLCBVKzFGM0Y1LTFGM0Y3LCBVKzFGNDA4LCBVKzFGNDE1LCBVKzFGNDFGLCBVKzFGNDI2LCBVKzFGNDNGLCBVKzFGNDQxLTFGNDQyLCBVKzFGNDQ0LCBVKzFGNDQ2LTFGNDQ5LCBVKzFGNDRDLTFGNDRFLCBVKzFGNDUzLCBVKzFGNDZBLCBVKzFGNDdELCBVKzFGNEEzLCBVKzFGNEIwLCBVKzFGNEIzLCBVKzFGNEI5LCBVKzFGNEJCLCBVKzFGNEJGLCBVKzFGNEM4LTFGNENCLCBVKzFGNEQ2LCBVKzFGNERBLCBVKzFGNERGLCBVKzFGNEUzLTFGNEU2LCBVKzFGNEVBLTFGNEVELCBVKzFGNEY3LCBVKzFGNEY5LTFGNEZCLCBVKzFGNEZELTFGNEZFLCBVKzFGNTAzLCBVKzFGNTA3LTFGNTBCLCBVKzFGNTBELCBVKzFGNTEyLTFGNTEzLCBVKzFGNTNFLTFGNTRBLCBVKzFGNTRGLTFGNUZBLCBVKzFGNjEwLCBVKzFGNjUwLTFGNjdGLCBVKzFGNjg3LCBVKzFGNjhELCBVKzFGNjkxLCBVKzFGNjk0LCBVKzFGNjk4LCBVKzFGNkFELCBVKzFGNkIyLCBVKzFGNkI5LTFGNkJBLCBVKzFGNkJDLCBVKzFGNkM2LTFGNkNGLCBVKzFGNkQzLTFGNkQ3LCBVKzFGNkUwLTFGNkVBLCBVKzFGNkYwLTFGNkYzLCBVKzFGNkY3LTFGNkZDLCBVKzFGNzAwLTFGN0ZGLCBVKzFGODAwLTFGODBCLCBVKzFGODEwLTFGODQ3LCBVKzFGODUwLTFGODU5LCBVKzFGODYwLTFGODg3LCBVKzFGODkwLTFGOEFELCBVKzFGOEIwLTFGOEJCLCBVKzFGOEMwLTFGOEMxLCBVKzFGOTAwLTFGOTBCLCBVKzFGOTNCLCBVKzFGOTQ2LCBVKzFGOTg0LCBVKzFGOTk2LCBVKzFGOUU5LCBVKzFGQTAwLTFGQTZGLCBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg5LCBVKzFGQThGLTFGQUM2LCBVKzFGQUNFLTFGQURDLCBVKzFGQURGLTFGQUU5LCBVKzFGQUYwLTFGQUY4LCBVKzFGQjAwLTFGQkZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDWGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ0hrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQm5rYS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Mza2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Fua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtCWGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogbWF0aCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta2Vua2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDItMDMwMywgVSswMzA1LCBVKzAzMDctMDMwOCwgVSswMzEwLCBVKzAzMTIsIFUrMDMxNSwgVSswMzFBLCBVKzAzMjYtMDMyNywgVSswMzJDLCBVKzAzMkYtMDMzMCwgVSswMzMyLTAzMzMsIFUrMDMzOCwgVSswMzNBLCBVKzAzNDYsIFUrMDM0RCwgVSswMzkxLTAzQTEsIFUrMDNBMy0wM0E5LCBVKzAzQjEtMDNDOSwgVSswM0QxLCBVKzAzRDUtMDNENiwgVSswM0YwLTAzRjEsIFUrMDNGNC0wM0Y1LCBVKzIwMTYtMjAxNywgVSsyMDM0LTIwMzgsIFUrMjAzQywgVSsyMDQwLCBVKzIwNDMsIFUrMjA0NywgVSsyMDUwLCBVKzIwNTcsIFUrMjA1RiwgVSsyMDcwLTIwNzEsIFUrMjA3NC0yMDhFLCBVKzIwOTAtMjA5QywgVSsyMEQwLTIwREMsIFUrMjBFMSwgVSsyMEU1LTIwRUYsIFUrMjEwMC0yMTEyLCBVKzIxMTQtMjExNSwgVSsyMTE3LTIxMjEsIFUrMjEyMy0yMTRGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxQUUsIFUrMjFCMC0yMUU1LCBVKzIxRjEtMjFGMiwgVSsyMUY0LTIyMTEsIFUrMjIxMy0yMjE0LCBVKzIyMTYtMjJGRiwgVSsyMzA4LTIzMEIsIFUrMjMxMCwgVSsyMzE5LCBVKzIzMUMtMjMyMSwgVSsyMzM2LTIzN0EsIFUrMjM3QywgVSsyMzk1LCBVKzIzOUItMjNCNywgVSsyM0QwLCBVKzIzREMtMjNFMSwgVSsyNDc0LTI0NzUsIFUrMjVBRiwgVSsyNUIzLCBVKzI1QjcsIFUrMjVCRCwgVSsyNUMxLCBVKzI1Q0EsIFUrMjVDQywgVSsyNUZCLCBVKzI2NkQtMjY2RiwgVSsyN0MwLTI3RkYsIFUrMjkwMC0yQUZGLCBVKzJCMEUtMkIxMSwgVSsyQjMwLTJCNEMsIFUrMkJGRSwgVSszMDMwLCBVK0ZGNUIsIFUrRkY1RCwgVSsxRDQwMC0xRDdGRiwgVSsxRUUwMC0xRUVGRjsKfQovKiBzeW1ib2xzICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rYUhrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMS0wMDBDLCBVKzAwMEUtMDAxRiwgVSswMDdGLTAwOUYsIFUrMjBERC0yMEUwLCBVKzIwRTItMjBFNCwgVSsyMTUwLTIxOEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjE5OSwgVSsyMUFGLCBVKzIxRTYtMjFGMCwgVSsyMUYzLCBVKzIyMTgtMjIxOSwgVSsyMjk5LCBVKzIyQzQtMjJDNiwgVSsyMzAwLTI0M0YsIFUrMjQ0MC0yNDRBLCBVKzI0NjAtMjRGRiwgVSsyNUEwLTI3QkYsIFUrMjgwMC0yOEZGLCBVKzI5MjEtMjkyMiwgVSsyOTgxLCBVKzI5QkYsIFUrMjlFQiwgVSsyQjAwLTJCRkYsIFUrNERDMC00REZGLCBVK0ZGRjktRkZGQiwgVSsxMDE0MC0xMDE4RSwgVSsxMDE5MC0xMDE5QywgVSsxMDFBMCwgVSsxMDFEMC0xMDFGRCwgVSsxMDJFMC0xMDJGQiwgVSsxMEU2MC0xMEU3RSwgVSsxRDJDMC0xRDJEMywgVSsxRDJFMC0xRDM3RiwgVSsxRjAwMC0xRjBGRiwgVSsxRjEwMC0xRjFBRCwgVSsxRjFFNi0xRjFGRiwgVSsxRjMwRC0xRjMwRiwgVSsxRjMxNSwgVSsxRjMxQywgVSsxRjMxRSwgVSsxRjMyMC0xRjMyQywgVSsxRjMzNiwgVSsxRjM3OCwgVSsxRjM3RCwgVSsxRjM4MiwgVSsxRjM5My0xRjM5RiwgVSsxRjNBNy0xRjNBOCwgVSsxRjNBQy0xRjNBRiwgVSsxRjNDMiwgVSsxRjNDNC0xRjNDNiwgVSsxRjNDQS0xRjNDRSwgVSsxRjNENC0xRjNFMCwgVSsxRjNFRCwgVSsxRjNGMS0xRjNGMywgVSsxRjNGNS0xRjNGNywgVSsxRjQwOCwgVSsxRjQxNSwgVSsxRjQxRiwgVSsxRjQyNiwgVSsxRjQzRiwgVSsxRjQ0MS0xRjQ0MiwgVSsxRjQ0NCwgVSsxRjQ0Ni0xRjQ0OSwgVSsxRjQ0Qy0xRjQ0RSwgVSsxRjQ1MywgVSsxRjQ2QSwgVSsxRjQ3RCwgVSsxRjRBMywgVSsxRjRCMCwgVSsxRjRCMywgVSsxRjRCOSwgVSsxRjRCQiwgVSsxRjRCRiwgVSsxRjRDOC0xRjRDQiwgVSsxRjRENiwgVSsxRjREQSwgVSsxRjRERiwgVSsxRjRFMy0xRjRFNiwgVSsxRjRFQS0xRjRFRCwgVSsxRjRGNywgVSsxRjRGOS0xRjRGQiwgVSsxRjRGRC0xRjRGRSwgVSsxRjUwMywgVSsxRjUwNy0xRjUwQiwgVSsxRjUwRCwgVSsxRjUxMi0xRjUxMywgVSsxRjUzRS0xRjU0QSwgVSsxRjU0Ri0xRjVGQSwgVSsxRjYxMCwgVSsxRjY1MC0xRjY3RiwgVSsxRjY4NywgVSsxRjY4RCwgVSsxRjY5MSwgVSsxRjY5NCwgVSsxRjY5OCwgVSsxRjZBRCwgVSsxRjZCMiwgVSsxRjZCOS0xRjZCQSwgVSsxRjZCQywgVSsxRjZDNi0xRjZDRiwgVSsxRjZEMy0xRjZENywgVSsxRjZFMC0xRjZFQSwgVSsxRjZGMC0xRjZGMywgVSsxRjZGNy0xRjZGQywgVSsxRjcwMC0xRjdGRiwgVSsxRjgwMC0xRjgwQiwgVSsxRjgxMC0xRjg0NywgVSsxRjg1MC0xRjg1OSwgVSsxRjg2MC0xRjg4NywgVSsxRjg5MC0xRjhBRCwgVSsxRjhCMC0xRjhCQiwgVSsxRjhDMC0xRjhDMSwgVSsxRjkwMC0xRjkwQiwgVSsxRjkzQiwgVSsxRjk0NiwgVSsxRjk4NCwgVSsxRjk5NiwgVSsxRjlFOSwgVSsxRkEwMC0xRkE2RiwgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OSwgVSsxRkE4Ri0xRkFDNiwgVSsxRkFDRS0xRkFEQywgVSsxRkFERi0xRkFFOSwgVSsxRkFGMC0xRkFGOCwgVSsxRkIwMC0xRkJGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ1hrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0NIa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0Jua2Eud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDM2thV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtBbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQ25rYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPNUNucUV1OTJGcjFNdTUzWkVDOV9WdTNyMWdJaE9zem1rQlhrYVd6VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtlbmthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta2FIa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzVDbnFFdTkyRnIxTXU1M1pFQzlfVnUzcjFnSWhPc3pta0NYa2FXelUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtDSGthV3pVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk81Q25xRXU5MkZyMU11NTNaRUM5X1Z1M3IxZ0loT3N6bWtCbmthLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0dVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM2lVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNDVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTMtVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBtYXRoICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hd0NVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMi0wMzAzLCBVKzAzMDUsIFUrMDMwNy0wMzA4LCBVKzAzMTAsIFUrMDMxMiwgVSswMzE1LCBVKzAzMUEsIFUrMDMyNi0wMzI3LCBVKzAzMkMsIFUrMDMyRi0wMzMwLCBVKzAzMzItMDMzMywgVSswMzM4LCBVKzAzM0EsIFUrMDM0NiwgVSswMzRELCBVKzAzOTEtMDNBMSwgVSswM0EzLTAzQTksIFUrMDNCMS0wM0M5LCBVKzAzRDEsIFUrMDNENS0wM0Q2LCBVKzAzRjAtMDNGMSwgVSswM0Y0LTAzRjUsIFUrMjAxNi0yMDE3LCBVKzIwMzQtMjAzOCwgVSsyMDNDLCBVKzIwNDAsIFUrMjA0MywgVSsyMDQ3LCBVKzIwNTAsIFUrMjA1NywgVSsyMDVGLCBVKzIwNzAtMjA3MSwgVSsyMDc0LTIwOEUsIFUrMjA5MC0yMDlDLCBVKzIwRDAtMjBEQywgVSsyMEUxLCBVKzIwRTUtMjBFRiwgVSsyMTAwLTIxMTIsIFUrMjExNC0yMTE1LCBVKzIxMTctMjEyMSwgVSsyMTIzLTIxNEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjFBRSwgVSsyMUIwLTIxRTUsIFUrMjFGMS0yMUYyLCBVKzIxRjQtMjIxMSwgVSsyMjEzLTIyMTQsIFUrMjIxNi0yMkZGLCBVKzIzMDgtMjMwQiwgVSsyMzEwLCBVKzIzMTksIFUrMjMxQy0yMzIxLCBVKzIzMzYtMjM3QSwgVSsyMzdDLCBVKzIzOTUsIFUrMjM5Qi0yM0I3LCBVKzIzRDAsIFUrMjNEQy0yM0UxLCBVKzI0NzQtMjQ3NSwgVSsyNUFGLCBVKzI1QjMsIFUrMjVCNywgVSsyNUJELCBVKzI1QzEsIFUrMjVDQSwgVSsyNUNDLCBVKzI1RkIsIFUrMjY2RC0yNjZGLCBVKzI3QzAtMjdGRiwgVSsyOTAwLTJBRkYsIFUrMkIwRS0yQjExLCBVKzJCMzAtMkI0QywgVSsyQkZFLCBVKzMwMzAsIFUrRkY1QiwgVStGRjVELCBVKzFENDAwLTFEN0ZGLCBVKzFFRTAwLTFFRUZGOwp9Ci8qIHN5bWJvbHMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWF4S1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAxLTAwMEMsIFUrMDAwRS0wMDFGLCBVKzAwN0YtMDA5RiwgVSsyMERELTIwRTAsIFUrMjBFMi0yMEU0LCBVKzIxNTAtMjE4RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMTk5LCBVKzIxQUYsIFUrMjFFNi0yMUYwLCBVKzIxRjMsIFUrMjIxOC0yMjE5LCBVKzIyOTksIFUrMjJDNC0yMkM2LCBVKzIzMDAtMjQzRiwgVSsyNDQwLTI0NEEsIFUrMjQ2MC0yNEZGLCBVKzI1QTAtMjdCRiwgVSsyODAwLTI4RkYsIFUrMjkyMS0yOTIyLCBVKzI5ODEsIFUrMjlCRiwgVSsyOUVCLCBVKzJCMDAtMkJGRiwgVSs0REMwLTRERkYsIFUrRkZGOS1GRkZCLCBVKzEwMTQwLTEwMThFLCBVKzEwMTkwLTEwMTlDLCBVKzEwMUEwLCBVKzEwMUQwLTEwMUZELCBVKzEwMkUwLTEwMkZCLCBVKzEwRTYwLTEwRTdFLCBVKzFEMkMwLTFEMkQzLCBVKzFEMkUwLTFEMzdGLCBVKzFGMDAwLTFGMEZGLCBVKzFGMTAwLTFGMUFELCBVKzFGMUU2LTFGMUZGLCBVKzFGMzBELTFGMzBGLCBVKzFGMzE1LCBVKzFGMzFDLCBVKzFGMzFFLCBVKzFGMzIwLTFGMzJDLCBVKzFGMzM2LCBVKzFGMzc4LCBVKzFGMzdELCBVKzFGMzgyLCBVKzFGMzkzLTFGMzlGLCBVKzFGM0E3LTFGM0E4LCBVKzFGM0FDLTFGM0FGLCBVKzFGM0MyLCBVKzFGM0M0LTFGM0M2LCBVKzFGM0NBLTFGM0NFLCBVKzFGM0Q0LTFGM0UwLCBVKzFGM0VELCBVKzFGM0YxLTFGM0YzLCBVKzFGM0Y1LTFGM0Y3LCBVKzFGNDA4LCBVKzFGNDE1LCBVKzFGNDFGLCBVKzFGNDI2LCBVKzFGNDNGLCBVKzFGNDQxLTFGNDQyLCBVKzFGNDQ0LCBVKzFGNDQ2LTFGNDQ5LCBVKzFGNDRDLTFGNDRFLCBVKzFGNDUzLCBVKzFGNDZBLCBVKzFGNDdELCBVKzFGNEEzLCBVKzFGNEIwLCBVKzFGNEIzLCBVKzFGNEI5LCBVKzFGNEJCLCBVKzFGNEJGLCBVKzFGNEM4LTFGNENCLCBVKzFGNEQ2LCBVKzFGNERBLCBVKzFGNERGLCBVKzFGNEUzLTFGNEU2LCBVKzFGNEVBLTFGNEVELCBVKzFGNEY3LCBVKzFGNEY5LTFGNEZCLCBVKzFGNEZELTFGNEZFLCBVKzFGNTAzLCBVKzFGNTA3LTFGNTBCLCBVKzFGNTBELCBVKzFGNTEyLTFGNTEzLCBVKzFGNTNFLTFGNTRBLCBVKzFGNTRGLTFGNUZBLCBVKzFGNjEwLCBVKzFGNjUwLTFGNjdGLCBVKzFGNjg3LCBVKzFGNjhELCBVKzFGNjkxLCBVKzFGNjk0LCBVKzFGNjk4LCBVKzFGNkFELCBVKzFGNkIyLCBVKzFGNkI5LTFGNkJBLCBVKzFGNkJDLCBVKzFGNkM2LTFGNkNGLCBVKzFGNkQzLTFGNkQ3LCBVKzFGNkUwLTFGNkVBLCBVKzFGNkYwLTFGNkYzLCBVKzFGNkY3LTFGNkZDLCBVKzFGNzAwLTFGN0ZGLCBVKzFGODAwLTFGODBCLCBVKzFGODEwLTFGODQ3LCBVKzFGODUwLTFGODU5LCBVKzFGODYwLTFGODg3LCBVKzFGODkwLTFGOEFELCBVKzFGOEIwLTFGOEJCLCBVKzFGOEMwLTFGOEMxLCBVKzFGOTAwLTFGOTBCLCBVKzFGOTNCLCBVKzFGOTQ2LCBVKzFGOTg0LCBVKzFGOTk2LCBVKzFGOUU5LCBVKzFGQTAwLTFGQTZGLCBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg5LCBVKzFGQThGLTFGQUM2LCBVKzFGQUNFLTFGQURDLCBVKzFGQURGLTFGQUU5LCBVKzFGQUYwLTFGQUY4LCBVKzFGQjAwLTFGQkZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzT1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0tVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM3lVQkEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzR1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzaVVCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0NVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hMy1VQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWF3Q1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYXhLVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNPVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzS1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzeVVCQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNHVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNpVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzQ1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzLVVCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogbWF0aCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYXdDVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDItMDMwMywgVSswMzA1LCBVKzAzMDctMDMwOCwgVSswMzEwLCBVKzAzMTIsIFUrMDMxNSwgVSswMzFBLCBVKzAzMjYtMDMyNywgVSswMzJDLCBVKzAzMkYtMDMzMCwgVSswMzMyLTAzMzMsIFUrMDMzOCwgVSswMzNBLCBVKzAzNDYsIFUrMDM0RCwgVSswMzkxLTAzQTEsIFUrMDNBMy0wM0E5LCBVKzAzQjEtMDNDOSwgVSswM0QxLCBVKzAzRDUtMDNENiwgVSswM0YwLTAzRjEsIFUrMDNGNC0wM0Y1LCBVKzIwMTYtMjAxNywgVSsyMDM0LTIwMzgsIFUrMjAzQywgVSsyMDQwLCBVKzIwNDMsIFUrMjA0NywgVSsyMDUwLCBVKzIwNTcsIFUrMjA1RiwgVSsyMDcwLTIwNzEsIFUrMjA3NC0yMDhFLCBVKzIwOTAtMjA5QywgVSsyMEQwLTIwREMsIFUrMjBFMSwgVSsyMEU1LTIwRUYsIFUrMjEwMC0yMTEyLCBVKzIxMTQtMjExNSwgVSsyMTE3LTIxMjEsIFUrMjEyMy0yMTRGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxQUUsIFUrMjFCMC0yMUU1LCBVKzIxRjEtMjFGMiwgVSsyMUY0LTIyMTEsIFUrMjIxMy0yMjE0LCBVKzIyMTYtMjJGRiwgVSsyMzA4LTIzMEIsIFUrMjMxMCwgVSsyMzE5LCBVKzIzMUMtMjMyMSwgVSsyMzM2LTIzN0EsIFUrMjM3QywgVSsyMzk1LCBVKzIzOUItMjNCNywgVSsyM0QwLCBVKzIzREMtMjNFMSwgVSsyNDc0LTI0NzUsIFUrMjVBRiwgVSsyNUIzLCBVKzI1QjcsIFUrMjVCRCwgVSsyNUMxLCBVKzI1Q0EsIFUrMjVDQywgVSsyNUZCLCBVKzI2NkQtMjY2RiwgVSsyN0MwLTI3RkYsIFUrMjkwMC0yQUZGLCBVKzJCMEUtMkIxMSwgVSsyQjMwLTJCNEMsIFUrMkJGRSwgVSszMDMwLCBVK0ZGNUIsIFUrRkY1RCwgVSsxRDQwMC0xRDdGRiwgVSsxRUUwMC0xRUVGRjsKfQovKiBzeW1ib2xzICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1heEtVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMS0wMDBDLCBVKzAwMEUtMDAxRiwgVSswMDdGLTAwOUYsIFUrMjBERC0yMEUwLCBVKzIwRTItMjBFNCwgVSsyMTUwLTIxOEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjE5OSwgVSsyMUFGLCBVKzIxRTYtMjFGMCwgVSsyMUYzLCBVKzIyMTgtMjIxOSwgVSsyMjk5LCBVKzIyQzQtMjJDNiwgVSsyMzAwLTI0M0YsIFUrMjQ0MC0yNDRBLCBVKzI0NjAtMjRGRiwgVSsyNUEwLTI3QkYsIFUrMjgwMC0yOEZGLCBVKzI5MjEtMjkyMiwgVSsyOTgxLCBVKzI5QkYsIFUrMjlFQiwgVSsyQjAwLTJCRkYsIFUrNERDMC00REZGLCBVK0ZGRjktRkZGQiwgVSsxMDE0MC0xMDE4RSwgVSsxMDE5MC0xMDE5QywgVSsxMDFBMCwgVSsxMDFEMC0xMDFGRCwgVSsxMDJFMC0xMDJGQiwgVSsxMEU2MC0xMEU3RSwgVSsxRDJDMC0xRDJEMywgVSsxRDJFMC0xRDM3RiwgVSsxRjAwMC0xRjBGRiwgVSsxRjEwMC0xRjFBRCwgVSsxRjFFNi0xRjFGRiwgVSsxRjMwRC0xRjMwRiwgVSsxRjMxNSwgVSsxRjMxQywgVSsxRjMxRSwgVSsxRjMyMC0xRjMyQywgVSsxRjMzNiwgVSsxRjM3OCwgVSsxRjM3RCwgVSsxRjM4MiwgVSsxRjM5My0xRjM5RiwgVSsxRjNBNy0xRjNBOCwgVSsxRjNBQy0xRjNBRiwgVSsxRjNDMiwgVSsxRjNDNC0xRjNDNiwgVSsxRjNDQS0xRjNDRSwgVSsxRjNENC0xRjNFMCwgVSsxRjNFRCwgVSsxRjNGMS0xRjNGMywgVSsxRjNGNS0xRjNGNywgVSsxRjQwOCwgVSsxRjQxNSwgVSsxRjQxRiwgVSsxRjQyNiwgVSsxRjQzRiwgVSsxRjQ0MS0xRjQ0MiwgVSsxRjQ0NCwgVSsxRjQ0Ni0xRjQ0OSwgVSsxRjQ0Qy0xRjQ0RSwgVSsxRjQ1MywgVSsxRjQ2QSwgVSsxRjQ3RCwgVSsxRjRBMywgVSsxRjRCMCwgVSsxRjRCMywgVSsxRjRCOSwgVSsxRjRCQiwgVSsxRjRCRiwgVSsxRjRDOC0xRjRDQiwgVSsxRjRENiwgVSsxRjREQSwgVSsxRjRERiwgVSsxRjRFMy0xRjRFNiwgVSsxRjRFQS0xRjRFRCwgVSsxRjRGNywgVSsxRjRGOS0xRjRGQiwgVSsxRjRGRC0xRjRGRSwgVSsxRjUwMywgVSsxRjUwNy0xRjUwQiwgVSsxRjUwRCwgVSsxRjUxMi0xRjUxMywgVSsxRjUzRS0xRjU0QSwgVSsxRjU0Ri0xRjVGQSwgVSsxRjYxMCwgVSsxRjY1MC0xRjY3RiwgVSsxRjY4NywgVSsxRjY4RCwgVSsxRjY5MSwgVSsxRjY5NCwgVSsxRjY5OCwgVSsxRjZBRCwgVSsxRjZCMiwgVSsxRjZCOS0xRjZCQSwgVSsxRjZCQywgVSsxRjZDNi0xRjZDRiwgVSsxRjZEMy0xRjZENywgVSsxRjZFMC0xRjZFQSwgVSsxRjZGMC0xRjZGMywgVSsxRjZGNy0xRjZGQywgVSsxRjcwMC0xRjdGRiwgVSsxRjgwMC0xRjgwQiwgVSsxRjgxMC0xRjg0NywgVSsxRjg1MC0xRjg1OSwgVSsxRjg2MC0xRjg4NywgVSsxRjg5MC0xRjhBRCwgVSsxRjhCMC0xRjhCQiwgVSsxRjhDMC0xRjhDMSwgVSsxRjkwMC0xRjkwQiwgVSsxRjkzQiwgVSsxRjk0NiwgVSsxRjk4NCwgVSsxRjk5NiwgVSsxRjlFOSwgVSsxRkEwMC0xRkE2RiwgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OSwgVSsxRkE4Ri0xRkFDNiwgVSsxRkFDRS0xRkFEQywgVSsxRkFERi0xRkFFOSwgVSsxRkFGMC0xRkFGOCwgVSsxRkIwMC0xRkJGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM09VQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNLVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTN5VUJBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0dVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM2lVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNDVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTMtVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBtYXRoICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hd0NVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMi0wMzAzLCBVKzAzMDUsIFUrMDMwNy0wMzA4LCBVKzAzMTAsIFUrMDMxMiwgVSswMzE1LCBVKzAzMUEsIFUrMDMyNi0wMzI3LCBVKzAzMkMsIFUrMDMyRi0wMzMwLCBVKzAzMzItMDMzMywgVSswMzM4LCBVKzAzM0EsIFUrMDM0NiwgVSswMzRELCBVKzAzOTEtMDNBMSwgVSswM0EzLTAzQTksIFUrMDNCMS0wM0M5LCBVKzAzRDEsIFUrMDNENS0wM0Q2LCBVKzAzRjAtMDNGMSwgVSswM0Y0LTAzRjUsIFUrMjAxNi0yMDE3LCBVKzIwMzQtMjAzOCwgVSsyMDNDLCBVKzIwNDAsIFUrMjA0MywgVSsyMDQ3LCBVKzIwNTAsIFUrMjA1NywgVSsyMDVGLCBVKzIwNzAtMjA3MSwgVSsyMDc0LTIwOEUsIFUrMjA5MC0yMDlDLCBVKzIwRDAtMjBEQywgVSsyMEUxLCBVKzIwRTUtMjBFRiwgVSsyMTAwLTIxMTIsIFUrMjExNC0yMTE1LCBVKzIxMTctMjEyMSwgVSsyMTIzLTIxNEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjFBRSwgVSsyMUIwLTIxRTUsIFUrMjFGMS0yMUYyLCBVKzIxRjQtMjIxMSwgVSsyMjEzLTIyMTQsIFUrMjIxNi0yMkZGLCBVKzIzMDgtMjMwQiwgVSsyMzEwLCBVKzIzMTksIFUrMjMxQy0yMzIxLCBVKzIzMzYtMjM3QSwgVSsyMzdDLCBVKzIzOTUsIFUrMjM5Qi0yM0I3LCBVKzIzRDAsIFUrMjNEQy0yM0UxLCBVKzI0NzQtMjQ3NSwgVSsyNUFGLCBVKzI1QjMsIFUrMjVCNywgVSsyNUJELCBVKzI1QzEsIFUrMjVDQSwgVSsyNUNDLCBVKzI1RkIsIFUrMjY2RC0yNjZGLCBVKzI3QzAtMjdGRiwgVSsyOTAwLTJBRkYsIFUrMkIwRS0yQjExLCBVKzJCMzAtMkI0QywgVSsyQkZFLCBVKzMwMzAsIFUrRkY1QiwgVStGRjVELCBVKzFENDAwLTFEN0ZGLCBVKzFFRTAwLTFFRUZGOwp9Ci8qIHN5bWJvbHMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWF4S1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAxLTAwMEMsIFUrMDAwRS0wMDFGLCBVKzAwN0YtMDA5RiwgVSsyMERELTIwRTAsIFUrMjBFMi0yMEU0LCBVKzIxNTAtMjE4RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMTk5LCBVKzIxQUYsIFUrMjFFNi0yMUYwLCBVKzIxRjMsIFUrMjIxOC0yMjE5LCBVKzIyOTksIFUrMjJDNC0yMkM2LCBVKzIzMDAtMjQzRiwgVSsyNDQwLTI0NEEsIFUrMjQ2MC0yNEZGLCBVKzI1QTAtMjdCRiwgVSsyODAwLTI4RkYsIFUrMjkyMS0yOTIyLCBVKzI5ODEsIFUrMjlCRiwgVSsyOUVCLCBVKzJCMDAtMkJGRiwgVSs0REMwLTRERkYsIFUrRkZGOS1GRkZCLCBVKzEwMTQwLTEwMThFLCBVKzEwMTkwLTEwMTlDLCBVKzEwMUEwLCBVKzEwMUQwLTEwMUZELCBVKzEwMkUwLTEwMkZCLCBVKzEwRTYwLTEwRTdFLCBVKzFEMkMwLTFEMkQzLCBVKzFEMkUwLTFEMzdGLCBVKzFGMDAwLTFGMEZGLCBVKzFGMTAwLTFGMUFELCBVKzFGMUU2LTFGMUZGLCBVKzFGMzBELTFGMzBGLCBVKzFGMzE1LCBVKzFGMzFDLCBVKzFGMzFFLCBVKzFGMzIwLTFGMzJDLCBVKzFGMzM2LCBVKzFGMzc4LCBVKzFGMzdELCBVKzFGMzgyLCBVKzFGMzkzLTFGMzlGLCBVKzFGM0E3LTFGM0E4LCBVKzFGM0FDLTFGM0FGLCBVKzFGM0MyLCBVKzFGM0M0LTFGM0M2LCBVKzFGM0NBLTFGM0NFLCBVKzFGM0Q0LTFGM0UwLCBVKzFGM0VELCBVKzFGM0YxLTFGM0YzLCBVKzFGM0Y1LTFGM0Y3LCBVKzFGNDA4LCBVKzFGNDE1LCBVKzFGNDFGLCBVKzFGNDI2LCBVKzFGNDNGLCBVKzFGNDQxLTFGNDQyLCBVKzFGNDQ0LCBVKzFGNDQ2LTFGNDQ5LCBVKzFGNDRDLTFGNDRFLCBVKzFGNDUzLCBVKzFGNDZBLCBVKzFGNDdELCBVKzFGNEEzLCBVKzFGNEIwLCBVKzFGNEIzLCBVKzFGNEI5LCBVKzFGNEJCLCBVKzFGNEJGLCBVKzFGNEM4LTFGNENCLCBVKzFGNEQ2LCBVKzFGNERBLCBVKzFGNERGLCBVKzFGNEUzLTFGNEU2LCBVKzFGNEVBLTFGNEVELCBVKzFGNEY3LCBVKzFGNEY5LTFGNEZCLCBVKzFGNEZELTFGNEZFLCBVKzFGNTAzLCBVKzFGNTA3LTFGNTBCLCBVKzFGNTBELCBVKzFGNTEyLTFGNTEzLCBVKzFGNTNFLTFGNTRBLCBVKzFGNTRGLTFGNUZBLCBVKzFGNjEwLCBVKzFGNjUwLTFGNjdGLCBVKzFGNjg3LCBVKzFGNjhELCBVKzFGNjkxLCBVKzFGNjk0LCBVKzFGNjk4LCBVKzFGNkFELCBVKzFGNkIyLCBVKzFGNkI5LTFGNkJBLCBVKzFGNkJDLCBVKzFGNkM2LTFGNkNGLCBVKzFGNkQzLTFGNkQ3LCBVKzFGNkUwLTFGNkVBLCBVKzFGNkYwLTFGNkYzLCBVKzFGNkY3LTFGNkZDLCBVKzFGNzAwLTFGN0ZGLCBVKzFGODAwLTFGODBCLCBVKzFGODEwLTFGODQ3LCBVKzFGODUwLTFGODU5LCBVKzFGODYwLTFGODg3LCBVKzFGODkwLTFGOEFELCBVKzFGOEIwLTFGOEJCLCBVKzFGOEMwLTFGOEMxLCBVKzFGOTAwLTFGOTBCLCBVKzFGOTNCLCBVKzFGOTQ2LCBVKzFGOTg0LCBVKzFGOTk2LCBVKzFGOUU5LCBVKzFGQTAwLTFGQTZGLCBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg5LCBVKzFGQThGLTFGQUM2LCBVKzFGQUNFLTFGQURDLCBVKzFGQURGLTFGQUU5LCBVKzFGQUYwLTFGQUY4LCBVKzFGQjAwLTFGQkZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzT1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0tVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM3lVQkEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzR1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzaVVCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0NVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hMy1VQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWF3Q1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYXhLVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNPVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzS1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzeVVCQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNHVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNpVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzQ1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzLVVCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogbWF0aCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYXdDVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDItMDMwMywgVSswMzA1LCBVKzAzMDctMDMwOCwgVSswMzEwLCBVKzAzMTIsIFUrMDMxNSwgVSswMzFBLCBVKzAzMjYtMDMyNywgVSswMzJDLCBVKzAzMkYtMDMzMCwgVSswMzMyLTAzMzMsIFUrMDMzOCwgVSswMzNBLCBVKzAzNDYsIFUrMDM0RCwgVSswMzkxLTAzQTEsIFUrMDNBMy0wM0E5LCBVKzAzQjEtMDNDOSwgVSswM0QxLCBVKzAzRDUtMDNENiwgVSswM0YwLTAzRjEsIFUrMDNGNC0wM0Y1LCBVKzIwMTYtMjAxNywgVSsyMDM0LTIwMzgsIFUrMjAzQywgVSsyMDQwLCBVKzIwNDMsIFUrMjA0NywgVSsyMDUwLCBVKzIwNTcsIFUrMjA1RiwgVSsyMDcwLTIwNzEsIFUrMjA3NC0yMDhFLCBVKzIwOTAtMjA5QywgVSsyMEQwLTIwREMsIFUrMjBFMSwgVSsyMEU1LTIwRUYsIFUrMjEwMC0yMTEyLCBVKzIxMTQtMjExNSwgVSsyMTE3LTIxMjEsIFUrMjEyMy0yMTRGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxQUUsIFUrMjFCMC0yMUU1LCBVKzIxRjEtMjFGMiwgVSsyMUY0LTIyMTEsIFUrMjIxMy0yMjE0LCBVKzIyMTYtMjJGRiwgVSsyMzA4LTIzMEIsIFUrMjMxMCwgVSsyMzE5LCBVKzIzMUMtMjMyMSwgVSsyMzM2LTIzN0EsIFUrMjM3QywgVSsyMzk1LCBVKzIzOUItMjNCNywgVSsyM0QwLCBVKzIzREMtMjNFMSwgVSsyNDc0LTI0NzUsIFUrMjVBRiwgVSsyNUIzLCBVKzI1QjcsIFUrMjVCRCwgVSsyNUMxLCBVKzI1Q0EsIFUrMjVDQywgVSsyNUZCLCBVKzI2NkQtMjY2RiwgVSsyN0MwLTI3RkYsIFUrMjkwMC0yQUZGLCBVKzJCMEUtMkIxMSwgVSsyQjMwLTJCNEMsIFUrMkJGRSwgVSszMDMwLCBVK0ZGNUIsIFUrRkY1RCwgVSsxRDQwMC0xRDdGRiwgVSsxRUUwMC0xRUVGRjsKfQovKiBzeW1ib2xzICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1heEtVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMS0wMDBDLCBVKzAwMEUtMDAxRiwgVSswMDdGLTAwOUYsIFUrMjBERC0yMEUwLCBVKzIwRTItMjBFNCwgVSsyMTUwLTIxOEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjE5OSwgVSsyMUFGLCBVKzIxRTYtMjFGMCwgVSsyMUYzLCBVKzIyMTgtMjIxOSwgVSsyMjk5LCBVKzIyQzQtMjJDNiwgVSsyMzAwLTI0M0YsIFUrMjQ0MC0yNDRBLCBVKzI0NjAtMjRGRiwgVSsyNUEwLTI3QkYsIFUrMjgwMC0yOEZGLCBVKzI5MjEtMjkyMiwgVSsyOTgxLCBVKzI5QkYsIFUrMjlFQiwgVSsyQjAwLTJCRkYsIFUrNERDMC00REZGLCBVK0ZGRjktRkZGQiwgVSsxMDE0MC0xMDE4RSwgVSsxMDE5MC0xMDE5QywgVSsxMDFBMCwgVSsxMDFEMC0xMDFGRCwgVSsxMDJFMC0xMDJGQiwgVSsxMEU2MC0xMEU3RSwgVSsxRDJDMC0xRDJEMywgVSsxRDJFMC0xRDM3RiwgVSsxRjAwMC0xRjBGRiwgVSsxRjEwMC0xRjFBRCwgVSsxRjFFNi0xRjFGRiwgVSsxRjMwRC0xRjMwRiwgVSsxRjMxNSwgVSsxRjMxQywgVSsxRjMxRSwgVSsxRjMyMC0xRjMyQywgVSsxRjMzNiwgVSsxRjM3OCwgVSsxRjM3RCwgVSsxRjM4MiwgVSsxRjM5My0xRjM5RiwgVSsxRjNBNy0xRjNBOCwgVSsxRjNBQy0xRjNBRiwgVSsxRjNDMiwgVSsxRjNDNC0xRjNDNiwgVSsxRjNDQS0xRjNDRSwgVSsxRjNENC0xRjNFMCwgVSsxRjNFRCwgVSsxRjNGMS0xRjNGMywgVSsxRjNGNS0xRjNGNywgVSsxRjQwOCwgVSsxRjQxNSwgVSsxRjQxRiwgVSsxRjQyNiwgVSsxRjQzRiwgVSsxRjQ0MS0xRjQ0MiwgVSsxRjQ0NCwgVSsxRjQ0Ni0xRjQ0OSwgVSsxRjQ0Qy0xRjQ0RSwgVSsxRjQ1MywgVSsxRjQ2QSwgVSsxRjQ3RCwgVSsxRjRBMywgVSsxRjRCMCwgVSsxRjRCMywgVSsxRjRCOSwgVSsxRjRCQiwgVSsxRjRCRiwgVSsxRjRDOC0xRjRDQiwgVSsxRjRENiwgVSsxRjREQSwgVSsxRjRERiwgVSsxRjRFMy0xRjRFNiwgVSsxRjRFQS0xRjRFRCwgVSsxRjRGNywgVSsxRjRGOS0xRjRGQiwgVSsxRjRGRC0xRjRGRSwgVSsxRjUwMywgVSsxRjUwNy0xRjUwQiwgVSsxRjUwRCwgVSsxRjUxMi0xRjUxMywgVSsxRjUzRS0xRjU0QSwgVSsxRjU0Ri0xRjVGQSwgVSsxRjYxMCwgVSsxRjY1MC0xRjY3RiwgVSsxRjY4NywgVSsxRjY4RCwgVSsxRjY5MSwgVSsxRjY5NCwgVSsxRjY5OCwgVSsxRjZBRCwgVSsxRjZCMiwgVSsxRjZCOS0xRjZCQSwgVSsxRjZCQywgVSsxRjZDNi0xRjZDRiwgVSsxRjZEMy0xRjZENywgVSsxRjZFMC0xRjZFQSwgVSsxRjZGMC0xRjZGMywgVSsxRjZGNy0xRjZGQywgVSsxRjcwMC0xRjdGRiwgVSsxRjgwMC0xRjgwQiwgVSsxRjgxMC0xRjg0NywgVSsxRjg1MC0xRjg1OSwgVSsxRjg2MC0xRjg4NywgVSsxRjg5MC0xRjhBRCwgVSsxRjhCMC0xRjhCQiwgVSsxRjhDMC0xRjhDMSwgVSsxRjkwMC0xRjkwQiwgVSsxRjkzQiwgVSsxRjk0NiwgVSsxRjk4NCwgVSsxRjk5NiwgVSsxRjlFOSwgVSsxRkEwMC0xRkE2RiwgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OSwgVSsxRkE4Ri0xRkFDNiwgVSsxRkFDRS0xRkFEQywgVSsxRkFERi0xRkFFOSwgVSsxRkFGMC0xRkFGOCwgVSsxRkIwMC0xRkJGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM09VQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNLVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTN5VUJBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0dVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM2lVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNDVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTMtVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiBtYXRoICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hd0NVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMi0wMzAzLCBVKzAzMDUsIFUrMDMwNy0wMzA4LCBVKzAzMTAsIFUrMDMxMiwgVSswMzE1LCBVKzAzMUEsIFUrMDMyNi0wMzI3LCBVKzAzMkMsIFUrMDMyRi0wMzMwLCBVKzAzMzItMDMzMywgVSswMzM4LCBVKzAzM0EsIFUrMDM0NiwgVSswMzRELCBVKzAzOTEtMDNBMSwgVSswM0EzLTAzQTksIFUrMDNCMS0wM0M5LCBVKzAzRDEsIFUrMDNENS0wM0Q2LCBVKzAzRjAtMDNGMSwgVSswM0Y0LTAzRjUsIFUrMjAxNi0yMDE3LCBVKzIwMzQtMjAzOCwgVSsyMDNDLCBVKzIwNDAsIFUrMjA0MywgVSsyMDQ3LCBVKzIwNTAsIFUrMjA1NywgVSsyMDVGLCBVKzIwNzAtMjA3MSwgVSsyMDc0LTIwOEUsIFUrMjA5MC0yMDlDLCBVKzIwRDAtMjBEQywgVSsyMEUxLCBVKzIwRTUtMjBFRiwgVSsyMTAwLTIxMTIsIFUrMjExNC0yMTE1LCBVKzIxMTctMjEyMSwgVSsyMTIzLTIxNEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjFBRSwgVSsyMUIwLTIxRTUsIFUrMjFGMS0yMUYyLCBVKzIxRjQtMjIxMSwgVSsyMjEzLTIyMTQsIFUrMjIxNi0yMkZGLCBVKzIzMDgtMjMwQiwgVSsyMzEwLCBVKzIzMTksIFUrMjMxQy0yMzIxLCBVKzIzMzYtMjM3QSwgVSsyMzdDLCBVKzIzOTUsIFUrMjM5Qi0yM0I3LCBVKzIzRDAsIFUrMjNEQy0yM0UxLCBVKzI0NzQtMjQ3NSwgVSsyNUFGLCBVKzI1QjMsIFUrMjVCNywgVSsyNUJELCBVKzI1QzEsIFUrMjVDQSwgVSsyNUNDLCBVKzI1RkIsIFUrMjY2RC0yNjZGLCBVKzI3QzAtMjdGRiwgVSsyOTAwLTJBRkYsIFUrMkIwRS0yQjExLCBVKzJCMzAtMkI0QywgVSsyQkZFLCBVKzMwMzAsIFUrRkY1QiwgVStGRjVELCBVKzFENDAwLTFEN0ZGLCBVKzFFRTAwLTFFRUZGOwp9Ci8qIHN5bWJvbHMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWF4S1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAxLTAwMEMsIFUrMDAwRS0wMDFGLCBVKzAwN0YtMDA5RiwgVSsyMERELTIwRTAsIFUrMjBFMi0yMEU0LCBVKzIxNTAtMjE4RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMTk5LCBVKzIxQUYsIFUrMjFFNi0yMUYwLCBVKzIxRjMsIFUrMjIxOC0yMjE5LCBVKzIyOTksIFUrMjJDNC0yMkM2LCBVKzIzMDAtMjQzRiwgVSsyNDQwLTI0NEEsIFUrMjQ2MC0yNEZGLCBVKzI1QTAtMjdCRiwgVSsyODAwLTI4RkYsIFUrMjkyMS0yOTIyLCBVKzI5ODEsIFUrMjlCRiwgVSsyOUVCLCBVKzJCMDAtMkJGRiwgVSs0REMwLTRERkYsIFUrRkZGOS1GRkZCLCBVKzEwMTQwLTEwMThFLCBVKzEwMTkwLTEwMTlDLCBVKzEwMUEwLCBVKzEwMUQwLTEwMUZELCBVKzEwMkUwLTEwMkZCLCBVKzEwRTYwLTEwRTdFLCBVKzFEMkMwLTFEMkQzLCBVKzFEMkUwLTFEMzdGLCBVKzFGMDAwLTFGMEZGLCBVKzFGMTAwLTFGMUFELCBVKzFGMUU2LTFGMUZGLCBVKzFGMzBELTFGMzBGLCBVKzFGMzE1LCBVKzFGMzFDLCBVKzFGMzFFLCBVKzFGMzIwLTFGMzJDLCBVKzFGMzM2LCBVKzFGMzc4LCBVKzFGMzdELCBVKzFGMzgyLCBVKzFGMzkzLTFGMzlGLCBVKzFGM0E3LTFGM0E4LCBVKzFGM0FDLTFGM0FGLCBVKzFGM0MyLCBVKzFGM0M0LTFGM0M2LCBVKzFGM0NBLTFGM0NFLCBVKzFGM0Q0LTFGM0UwLCBVKzFGM0VELCBVKzFGM0YxLTFGM0YzLCBVKzFGM0Y1LTFGM0Y3LCBVKzFGNDA4LCBVKzFGNDE1LCBVKzFGNDFGLCBVKzFGNDI2LCBVKzFGNDNGLCBVKzFGNDQxLTFGNDQyLCBVKzFGNDQ0LCBVKzFGNDQ2LTFGNDQ5LCBVKzFGNDRDLTFGNDRFLCBVKzFGNDUzLCBVKzFGNDZBLCBVKzFGNDdELCBVKzFGNEEzLCBVKzFGNEIwLCBVKzFGNEIzLCBVKzFGNEI5LCBVKzFGNEJCLCBVKzFGNEJGLCBVKzFGNEM4LTFGNENCLCBVKzFGNEQ2LCBVKzFGNERBLCBVKzFGNERGLCBVKzFGNEUzLTFGNEU2LCBVKzFGNEVBLTFGNEVELCBVKzFGNEY3LCBVKzFGNEY5LTFGNEZCLCBVKzFGNEZELTFGNEZFLCBVKzFGNTAzLCBVKzFGNTA3LTFGNTBCLCBVKzFGNTBELCBVKzFGNTEyLTFGNTEzLCBVKzFGNTNFLTFGNTRBLCBVKzFGNTRGLTFGNUZBLCBVKzFGNjEwLCBVKzFGNjUwLTFGNjdGLCBVKzFGNjg3LCBVKzFGNjhELCBVKzFGNjkxLCBVKzFGNjk0LCBVKzFGNjk4LCBVKzFGNkFELCBVKzFGNkIyLCBVKzFGNkI5LTFGNkJBLCBVKzFGNkJDLCBVKzFGNkM2LTFGNkNGLCBVKzFGNkQzLTFGNkQ3LCBVKzFGNkUwLTFGNkVBLCBVKzFGNkYwLTFGNkYzLCBVKzFGNkY3LTFGNkZDLCBVKzFGNzAwLTFGN0ZGLCBVKzFGODAwLTFGODBCLCBVKzFGODEwLTFGODQ3LCBVKzFGODUwLTFGODU5LCBVKzFGODYwLTFGODg3LCBVKzFGODkwLTFGOEFELCBVKzFGOEIwLTFGOEJCLCBVKzFGOEMwLTFGOEMxLCBVKzFGOTAwLTFGOTBCLCBVKzFGOTNCLCBVKzFGOTQ2LCBVKzFGOTg0LCBVKzFGOTk2LCBVKzFGOUU5LCBVKzFGQTAwLTFGQTZGLCBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg5LCBVKzFGQThGLTFGQUM2LCBVKzFGQUNFLTFGQURDLCBVKzFGQURGLTFGQUU5LCBVKzFGQUYwLTFGQUY4LCBVKzFGQjAwLTFGQkZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzT1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0tVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM3lVQkEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzR1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzaVVCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM0NVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hMy1VQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIG1hdGggKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWF3Q1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAyLTAzMDMsIFUrMDMwNSwgVSswMzA3LTAzMDgsIFUrMDMxMCwgVSswMzEyLCBVKzAzMTUsIFUrMDMxQSwgVSswMzI2LTAzMjcsIFUrMDMyQywgVSswMzJGLTAzMzAsIFUrMDMzMi0wMzMzLCBVKzAzMzgsIFUrMDMzQSwgVSswMzQ2LCBVKzAzNEQsIFUrMDM5MS0wM0ExLCBVKzAzQTMtMDNBOSwgVSswM0IxLTAzQzksIFUrMDNEMSwgVSswM0Q1LTAzRDYsIFUrMDNGMC0wM0YxLCBVKzAzRjQtMDNGNSwgVSsyMDE2LTIwMTcsIFUrMjAzNC0yMDM4LCBVKzIwM0MsIFUrMjA0MCwgVSsyMDQzLCBVKzIwNDcsIFUrMjA1MCwgVSsyMDU3LCBVKzIwNUYsIFUrMjA3MC0yMDcxLCBVKzIwNzQtMjA4RSwgVSsyMDkwLTIwOUMsIFUrMjBEMC0yMERDLCBVKzIwRTEsIFUrMjBFNS0yMEVGLCBVKzIxMDAtMjExMiwgVSsyMTE0LTIxMTUsIFUrMjExNy0yMTIxLCBVKzIxMjMtMjE0RiwgVSsyMTkwLCBVKzIxOTIsIFUrMjE5NC0yMUFFLCBVKzIxQjAtMjFFNSwgVSsyMUYxLTIxRjIsIFUrMjFGNC0yMjExLCBVKzIyMTMtMjIxNCwgVSsyMjE2LTIyRkYsIFUrMjMwOC0yMzBCLCBVKzIzMTAsIFUrMjMxOSwgVSsyMzFDLTIzMjEsIFUrMjMzNi0yMzdBLCBVKzIzN0MsIFUrMjM5NSwgVSsyMzlCLTIzQjcsIFUrMjNEMCwgVSsyM0RDLTIzRTEsIFUrMjQ3NC0yNDc1LCBVKzI1QUYsIFUrMjVCMywgVSsyNUI3LCBVKzI1QkQsIFUrMjVDMSwgVSsyNUNBLCBVKzI1Q0MsIFUrMjVGQiwgVSsyNjZELTI2NkYsIFUrMjdDMC0yN0ZGLCBVKzI5MDAtMkFGRiwgVSsyQjBFLTJCMTEsIFUrMkIzMC0yQjRDLCBVKzJCRkUsIFUrMzAzMCwgVStGRjVCLCBVK0ZGNUQsIFUrMUQ0MDAtMUQ3RkYsIFUrMUVFMDAtMUVFRkY7Cn0KLyogc3ltYm9scyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYXhLVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDEtMDAwQywgVSswMDBFLTAwMUYsIFUrMDA3Ri0wMDlGLCBVKzIwREQtMjBFMCwgVSsyMEUyLTIwRTQsIFUrMjE1MC0yMThGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxOTksIFUrMjFBRiwgVSsyMUU2LTIxRjAsIFUrMjFGMywgVSsyMjE4LTIyMTksIFUrMjI5OSwgVSsyMkM0LTIyQzYsIFUrMjMwMC0yNDNGLCBVKzI0NDAtMjQ0QSwgVSsyNDYwLTI0RkYsIFUrMjVBMC0yN0JGLCBVKzI4MDAtMjhGRiwgVSsyOTIxLTI5MjIsIFUrMjk4MSwgVSsyOUJGLCBVKzI5RUIsIFUrMkIwMC0yQkZGLCBVKzREQzAtNERGRiwgVStGRkY5LUZGRkIsIFUrMTAxNDAtMTAxOEUsIFUrMTAxOTAtMTAxOUMsIFUrMTAxQTAsIFUrMTAxRDAtMTAxRkQsIFUrMTAyRTAtMTAyRkIsIFUrMTBFNjAtMTBFN0UsIFUrMUQyQzAtMUQyRDMsIFUrMUQyRTAtMUQzN0YsIFUrMUYwMDAtMUYwRkYsIFUrMUYxMDAtMUYxQUQsIFUrMUYxRTYtMUYxRkYsIFUrMUYzMEQtMUYzMEYsIFUrMUYzMTUsIFUrMUYzMUMsIFUrMUYzMUUsIFUrMUYzMjAtMUYzMkMsIFUrMUYzMzYsIFUrMUYzNzgsIFUrMUYzN0QsIFUrMUYzODIsIFUrMUYzOTMtMUYzOUYsIFUrMUYzQTctMUYzQTgsIFUrMUYzQUMtMUYzQUYsIFUrMUYzQzIsIFUrMUYzQzQtMUYzQzYsIFUrMUYzQ0EtMUYzQ0UsIFUrMUYzRDQtMUYzRTAsIFUrMUYzRUQsIFUrMUYzRjEtMUYzRjMsIFUrMUYzRjUtMUYzRjcsIFUrMUY0MDgsIFUrMUY0MTUsIFUrMUY0MUYsIFUrMUY0MjYsIFUrMUY0M0YsIFUrMUY0NDEtMUY0NDIsIFUrMUY0NDQsIFUrMUY0NDYtMUY0NDksIFUrMUY0NEMtMUY0NEUsIFUrMUY0NTMsIFUrMUY0NkEsIFUrMUY0N0QsIFUrMUY0QTMsIFUrMUY0QjAsIFUrMUY0QjMsIFUrMUY0QjksIFUrMUY0QkIsIFUrMUY0QkYsIFUrMUY0QzgtMUY0Q0IsIFUrMUY0RDYsIFUrMUY0REEsIFUrMUY0REYsIFUrMUY0RTMtMUY0RTYsIFUrMUY0RUEtMUY0RUQsIFUrMUY0RjcsIFUrMUY0RjktMUY0RkIsIFUrMUY0RkQtMUY0RkUsIFUrMUY1MDMsIFUrMUY1MDctMUY1MEIsIFUrMUY1MEQsIFUrMUY1MTItMUY1MTMsIFUrMUY1M0UtMUY1NEEsIFUrMUY1NEYtMUY1RkEsIFUrMUY2MTAsIFUrMUY2NTAtMUY2N0YsIFUrMUY2ODcsIFUrMUY2OEQsIFUrMUY2OTEsIFUrMUY2OTQsIFUrMUY2OTgsIFUrMUY2QUQsIFUrMUY2QjIsIFUrMUY2QjktMUY2QkEsIFUrMUY2QkMsIFUrMUY2QzYtMUY2Q0YsIFUrMUY2RDMtMUY2RDcsIFUrMUY2RTAtMUY2RUEsIFUrMUY2RjAtMUY2RjMsIFUrMUY2RjctMUY2RkMsIFUrMUY3MDAtMUY3RkYsIFUrMUY4MDAtMUY4MEIsIFUrMUY4MTAtMUY4NDcsIFUrMUY4NTAtMUY4NTksIFUrMUY4NjAtMUY4ODcsIFUrMUY4OTAtMUY4QUQsIFUrMUY4QjAtMUY4QkIsIFUrMUY4QzAtMUY4QzEsIFUrMUY5MDAtMUY5MEIsIFUrMUY5M0IsIFUrMUY5NDYsIFUrMUY5ODQsIFUrMUY5OTYsIFUrMUY5RTksIFUrMUZBMDAtMUZBNkYsIFUrMUZBNzAtMUZBN0MsIFUrMUZBODAtMUZBODksIFUrMUZBOEYtMUZBQzYsIFUrMUZBQ0UtMUZBREMsIFUrMUZBREYtMUZBRTksIFUrMUZBRjAtMUZBRjgsIFUrMUZCMDAtMUZCRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNPVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzS1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzeVVCQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNHVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNpVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzQ1VCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3Y1MS9LRk83Q25xRXU5MkZyMU1FN2tTbjY2YUdMZFR5bFVBTWEzLVVCR0VlLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogbWF0aCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYXdDVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDItMDMwMywgVSswMzA1LCBVKzAzMDctMDMwOCwgVSswMzEwLCBVKzAzMTIsIFUrMDMxNSwgVSswMzFBLCBVKzAzMjYtMDMyNywgVSswMzJDLCBVKzAzMkYtMDMzMCwgVSswMzMyLTAzMzMsIFUrMDMzOCwgVSswMzNBLCBVKzAzNDYsIFUrMDM0RCwgVSswMzkxLTAzQTEsIFUrMDNBMy0wM0E5LCBVKzAzQjEtMDNDOSwgVSswM0QxLCBVKzAzRDUtMDNENiwgVSswM0YwLTAzRjEsIFUrMDNGNC0wM0Y1LCBVKzIwMTYtMjAxNywgVSsyMDM0LTIwMzgsIFUrMjAzQywgVSsyMDQwLCBVKzIwNDMsIFUrMjA0NywgVSsyMDUwLCBVKzIwNTcsIFUrMjA1RiwgVSsyMDcwLTIwNzEsIFUrMjA3NC0yMDhFLCBVKzIwOTAtMjA5QywgVSsyMEQwLTIwREMsIFUrMjBFMSwgVSsyMEU1LTIwRUYsIFUrMjEwMC0yMTEyLCBVKzIxMTQtMjExNSwgVSsyMTE3LTIxMjEsIFUrMjEyMy0yMTRGLCBVKzIxOTAsIFUrMjE5MiwgVSsyMTk0LTIxQUUsIFUrMjFCMC0yMUU1LCBVKzIxRjEtMjFGMiwgVSsyMUY0LTIyMTEsIFUrMjIxMy0yMjE0LCBVKzIyMTYtMjJGRiwgVSsyMzA4LTIzMEIsIFUrMjMxMCwgVSsyMzE5LCBVKzIzMUMtMjMyMSwgVSsyMzM2LTIzN0EsIFUrMjM3QywgVSsyMzk1LCBVKzIzOUItMjNCNywgVSsyM0QwLCBVKzIzREMtMjNFMSwgVSsyNDc0LTI0NzUsIFUrMjVBRiwgVSsyNUIzLCBVKzI1QjcsIFUrMjVCRCwgVSsyNUMxLCBVKzI1Q0EsIFUrMjVDQywgVSsyNUZCLCBVKzI2NkQtMjY2RiwgVSsyN0MwLTI3RkYsIFUrMjkwMC0yQUZGLCBVKzJCMEUtMkIxMSwgVSsyQjMwLTJCNEMsIFUrMkJGRSwgVSszMDMwLCBVK0ZGNUIsIFUrRkY1RCwgVSsxRDQwMC0xRDdGRiwgVSsxRUUwMC0xRUVGRjsKfQovKiBzeW1ib2xzICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1heEtVQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMS0wMDBDLCBVKzAwMEUtMDAxRiwgVSswMDdGLTAwOUYsIFUrMjBERC0yMEUwLCBVKzIwRTItMjBFNCwgVSsyMTUwLTIxOEYsIFUrMjE5MCwgVSsyMTkyLCBVKzIxOTQtMjE5OSwgVSsyMUFGLCBVKzIxRTYtMjFGMCwgVSsyMUYzLCBVKzIyMTgtMjIxOSwgVSsyMjk5LCBVKzIyQzQtMjJDNiwgVSsyMzAwLTI0M0YsIFUrMjQ0MC0yNDRBLCBVKzI0NjAtMjRGRiwgVSsyNUEwLTI3QkYsIFUrMjgwMC0yOEZGLCBVKzI5MjEtMjkyMiwgVSsyOTgxLCBVKzI5QkYsIFUrMjlFQiwgVSsyQjAwLTJCRkYsIFUrNERDMC00REZGLCBVK0ZGRjktRkZGQiwgVSsxMDE0MC0xMDE4RSwgVSsxMDE5MC0xMDE5QywgVSsxMDFBMCwgVSsxMDFEMC0xMDFGRCwgVSsxMDJFMC0xMDJGQiwgVSsxMEU2MC0xMEU3RSwgVSsxRDJDMC0xRDJEMywgVSsxRDJFMC0xRDM3RiwgVSsxRjAwMC0xRjBGRiwgVSsxRjEwMC0xRjFBRCwgVSsxRjFFNi0xRjFGRiwgVSsxRjMwRC0xRjMwRiwgVSsxRjMxNSwgVSsxRjMxQywgVSsxRjMxRSwgVSsxRjMyMC0xRjMyQywgVSsxRjMzNiwgVSsxRjM3OCwgVSsxRjM3RCwgVSsxRjM4MiwgVSsxRjM5My0xRjM5RiwgVSsxRjNBNy0xRjNBOCwgVSsxRjNBQy0xRjNBRiwgVSsxRjNDMiwgVSsxRjNDNC0xRjNDNiwgVSsxRjNDQS0xRjNDRSwgVSsxRjNENC0xRjNFMCwgVSsxRjNFRCwgVSsxRjNGMS0xRjNGMywgVSsxRjNGNS0xRjNGNywgVSsxRjQwOCwgVSsxRjQxNSwgVSsxRjQxRiwgVSsxRjQyNiwgVSsxRjQzRiwgVSsxRjQ0MS0xRjQ0MiwgVSsxRjQ0NCwgVSsxRjQ0Ni0xRjQ0OSwgVSsxRjQ0Qy0xRjQ0RSwgVSsxRjQ1MywgVSsxRjQ2QSwgVSsxRjQ3RCwgVSsxRjRBMywgVSsxRjRCMCwgVSsxRjRCMywgVSsxRjRCOSwgVSsxRjRCQiwgVSsxRjRCRiwgVSsxRjRDOC0xRjRDQiwgVSsxRjRENiwgVSsxRjREQSwgVSsxRjRERiwgVSsxRjRFMy0xRjRFNiwgVSsxRjRFQS0xRjRFRCwgVSsxRjRGNywgVSsxRjRGOS0xRjRGQiwgVSsxRjRGRC0xRjRGRSwgVSsxRjUwMywgVSsxRjUwNy0xRjUwQiwgVSsxRjUwRCwgVSsxRjUxMi0xRjUxMywgVSsxRjUzRS0xRjU0QSwgVSsxRjU0Ri0xRjVGQSwgVSsxRjYxMCwgVSsxRjY1MC0xRjY3RiwgVSsxRjY4NywgVSsxRjY4RCwgVSsxRjY5MSwgVSsxRjY5NCwgVSsxRjY5OCwgVSsxRjZBRCwgVSsxRjZCMiwgVSsxRjZCOS0xRjZCQSwgVSsxRjZCQywgVSsxRjZDNi0xRjZDRiwgVSsxRjZEMy0xRjZENywgVSsxRjZFMC0xRjZFQSwgVSsxRjZGMC0xRjZGMywgVSsxRjZGNy0xRjZGQywgVSsxRjcwMC0xRjdGRiwgVSsxRjgwMC0xRjgwQiwgVSsxRjgxMC0xRjg0NywgVSsxRjg1MC0xRjg1OSwgVSsxRjg2MC0xRjg4NywgVSsxRjg5MC0xRjhBRCwgVSsxRjhCMC0xRjhCQiwgVSsxRjhDMC0xRjhDMSwgVSsxRjkwMC0xRjkwQiwgVSsxRjkzQiwgVSsxRjk0NiwgVSsxRjk4NCwgVSsxRjk5NiwgVSsxRjlFOSwgVSsxRkEwMC0xRkE2RiwgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OSwgVSsxRkE4Ri0xRkFDNiwgVSsxRkFDRS0xRkFEQywgVSsxRkFERi0xRkFFOSwgVSsxRkFGMC0xRkFGOCwgVSsxRkIwMC0xRkJGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92NTEvS0ZPN0NucUV1OTJGcjFNRTdrU242NmFHTGRUeWxVQU1hM09VQkdFZS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTNLVUJHRWUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjUxL0tGTzdDbnFFdTkyRnIxTUU3a1NuNjZhR0xkVHlsVUFNYTN5VUJBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkE1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZKNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkI1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZPNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZDNXFXNTRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG9zbGFiL3YzNi9CbmdNVVhaWVRYUEl2SUJnSkpTYjZ1ZkQ1cVc1NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3Rvc2xhYi92MzYvQm5nTVVYWllUWFBJdklCZ0pKU2I2dWZONXFVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0K"}},"time_used":94,"timings":{"blocked":-1,"dns":0,"connect":16,"send":0,"wait":45,"receive":0,"ssl":33},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor-pro/assets/js/preloaded-elements-handlers.min.js?ver=3.6.4","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.511Z","timestamp":1785145482511,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor-pro/assets/js/preloaded-elements-handlers.min.js?ver=3.6.4 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 227050\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":227050,"size_decoded":227268,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (512)","md5":"3dc7d38773ca437f649f63460f17bdbd","sha1":"0d8f55218858334fac668410979d0227f08927b4","sha256":"4f1358d7321726791823c665ae562587580e97b424ed32ba48d8d2dcdd5ddeb7","sha512":"ab8152cafea367eecef3e52a6e1b32442edd06411610d7db185f83ede2289f837c1a82196cbcc9d6e320b00864ea175e9816ebd8868658e441942535b4fc9aab","ssdeep":"1536:QEeFpcOQtnhdMsx/JvmWhkhK9iNsGFGtFAyaPmo9IaY8tnU4ozLQhuqv+0UeO1gi:6CpFNVi5o","tlshash":"d5245f0b76f61876465f707b2c1b8009b731445f680abd6d3e6c42989f28db863f2bb5","first_seen":"2026-07-27T08:06:56.584192Z","last_seen":"2026-07-27T09:45:50.904048Z","times_seen":3,"resource_available":false,"data":"LyohIGVsZW1lbnRvci1wcm8gLSB2My42LjQgLSAxNS0wMy0yMDIyICovCiJ1c2Ugc3RyaWN0IjsKKHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yX3BybyA9IHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yX3BybyB8fCBbXSkucHVzaChbCiAgICBbOTk1LCAyNiwgNTM0LCAzNjksIDgwNCwgODg4LCA2ODAsIDEyMSwgMjg4LCA0MiwgNTAsIDk4NSwgMjg3LCA4MjQsIDU4LCAxMTQsIDQ0MywgODM4LCA2ODUsIDg1OCwgMTAyLCAxLCAxMjQsIDg1OSwgOTc5LCA0OTddLCB7CiAgICAgICAgOTk3ODogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpLAogICAgICAgICAgICAgICAgaSA9IG4ocyg1NTc0KSksCiAgICAgICAgICAgICAgICBvID0gbihzKDk3NDMpKSwKICAgICAgICAgICAgICAgIHIgPSBuKHMoODEwMikpLAogICAgICAgICAgICAgICAgYSA9IG4ocyg1ODUpKSwKICAgICAgICAgICAgICAgIGwgPSBuKHMoOTA4NikpLAogICAgICAgICAgICAgICAgZCA9IG4ocygxNTU5KSksCiAgICAgICAgICAgICAgICBjID0gbihzKDk5MzcpKSwKICAgICAgICAgICAgICAgIGggPSBuKHMoNzMxNykpLAogICAgICAgICAgICAgICAgbSA9IG4ocygyMTQwKSksCiAgICAgICAgICAgICAgICB1ID0gbihzKDY0ODQpKSwKICAgICAgICAgICAgICAgIHAgPSBuKHMoNjIwOCkpLAogICAgICAgICAgICAgICAgZyA9IG4ocyg4NzQ2KSksCiAgICAgICAgICAgICAgICBmID0gbihzKDEwNjApKSwKICAgICAgICAgICAgICAgIHYgPSBuKHMoMzMzNCkpLAogICAgICAgICAgICAgICAgXyA9IG4ocyg1NDc1KSksCiAgICAgICAgICAgICAgICBTID0gbihzKDIyNCkpLAogICAgICAgICAgICAgICAgeSA9IG4ocyg3MzE4KSk7CiAgICAgICAgICAgIGNvbnN0IGV4dGVuZERlZmF1bHRIYW5kbGVycyA9IGUgPT4gKHsgLi4uZSwKICAgICAgICAgICAgICAgIC4uLnsKICAgICAgICAgICAgICAgICAgICBhbmltYXRlZFRleHQ6IGkuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbDogby5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIGNvdW50ZG93bjogci5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIGZvcm06IGEuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBnYWxsZXJ5OiBsLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgaG90c3BvdDogZC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIGxvdHRpZTogYy5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIG5hdl9tZW51OiBoLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgcG9wdXA6IG0uZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBwb3N0czogdS5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIHNoYXJlX2J1dHRvbnM6IHAuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IGcuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBzb2NpYWw6IGYuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICB0aGVtZUJ1aWxkZXI6IF8uZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICB0aGVtZUVsZW1lbnRzOiBTLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgd29vY29tbWVyY2U6IHkuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICB0YWJsZU9mQ29udGVudHM6IHYuZGVmYXVsdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZWxlbWVudG9yUHJvRnJvbnRlbmQub24oImVsZW1lbnRvci1wcm8vbW9kdWxlcy9pbml0OmJlZm9yZSIsICgoKSA9PiB7CiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5hZGRGaWx0ZXIoImVsZW1lbnRvci1wcm8vZnJvbnRlbmQvaGFuZGxlcnMiLCBleHRlbmREZWZhdWx0SGFuZGxlcnMpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgODExNTogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuY2xvc2UgPSB2b2lkIDA7CiAgICAgICAgICAgIGNvbnN0IGkgPSBuZXcobihzKDQ1MTkpKS5kZWZhdWx0KSgiZWljb24iKSwKICAgICAgICAgICAgICAgIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgZ2V0IGVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNyZWF0ZVN2Z0VsZW1lbnQoImNsb3NlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogIk03NDIgMTY3TDUwMCA0MDggMjU4IDE2N0MyNDYgMTU0IDIzMyAxNTAgMjE3IDE1MCAxOTYgMTUwIDE3OSAxNTggMTY3IDE2NyAxNTQgMTc5IDE1MCAxOTYgMTUwIDIxMiAxNTAgMjI5IDE1NCAyNDIgMTcxIDI1NEw0MDggNTAwIDE2NyA3NDJDMTM4IDc3MSAxMzggODAwIDE2NyA4MjkgMTk2IDg1OCAyMjUgODU4IDI1NCA4MjlMNDk2IDU4NyA3MzggODI5Qzc1MCA4NDIgNzY3IDg0NiA3ODMgODQ2IDgwMCA4NDYgODE3IDg0MiA4MjkgODI5IDg0MiA4MTcgODQ2IDgwNCA4NDYgNzgzIDg0NiA3NjcgODQyIDc1MCA4MjkgNzM3TDU4OCA1MDAgODMzIDI1OEM4NjMgMjI5IDg2MyAyMDAgODMzIDE3MSA4MDQgMTM3IDc3NSAxMzcgNzQyIDE2N1oiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDFlMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMWUzCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC5jbG9zZSA9IG8KICAgICAgICB9LAogICAgICAgIDQ1MTk6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBJY29uc01hbmFnZXIgewogICAgICAgICAgICAgICAgc3RhdGljIHN5bWJvbHNDb250YWluZXI7CiAgICAgICAgICAgICAgICBzdGF0aWMgaWNvbnNVc2FnZUxpc3QgPSBbXTsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmVmaXggPSBgJHtlfS1gLCAhSWNvbnNNYW5hZ2VyLnN5bWJvbHNDb250YWluZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICJlLWZvbnQtaWNvbi1zdmctc3ltYm9scyI7CiAgICAgICAgICAgICAgICAgICAgICAgIEljb25zTWFuYWdlci5zeW1ib2xzQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSksIEljb25zTWFuYWdlci5zeW1ib2xzQ29udGFpbmVyIHx8IChJY29uc01hbmFnZXIuc3ltYm9sc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAic3ZnIiksIEljb25zTWFuYWdlci5zeW1ib2xzQ29udGFpbmVyLnNldEF0dHJpYnV0ZU5TKG51bGwsICJzdHlsZSIsICJkaXNwbGF5OiBub25lOyIpLCBJY29uc01hbmFnZXIuc3ltYm9sc0NvbnRhaW5lci5zZXRBdHRyaWJ1dGVOUyhudWxsLCAiY2xhc3MiLCBlKSwgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChJY29uc01hbmFnZXIuc3ltYm9sc0NvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3JlYXRlU3ZnRWxlbWVudChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcywKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaQogICAgICAgICAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0aGlzLnByZWZpeCArIGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAiIyIgKyB0aGlzLnByZWZpeCArIGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFJY29uc01hbmFnZXIuaWNvbnNVc2FnZUxpc3QuaW5jbHVkZXMobykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFJY29uc01hbmFnZXIuc3ltYm9sc0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yKHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJzeW1ib2wiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaWQgPSBvLCBlLmlubmVySFRNTCA9ICc8cGF0aCBkPSInICsgcyArICciPjwvcGF0aD4nLCBlLnNldEF0dHJpYnV0ZU5TKG51bGwsICJ2aWV3Qm94IiwgIjAgMCAiICsgbiArICIgIiArIGkpLCBJY29uc01hbmFnZXIuc3ltYm9sc0NvbnRhaW5lci5hcHBlbmRDaGlsZChlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEljb25zTWFuYWdlci5pY29uc1VzYWdlTGlzdC5wdXNoKG8pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2ZyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmlubmVySFRNTCA9ICc8dXNlIHhsaW5rOmhyZWY9IicgKyByICsgJyIgLz4nLCBhLnNldEF0dHJpYnV0ZU5TKG51bGwsICJjbGFzcyIsICJlLWZvbnQtaWNvbi1zdmcgZS0iICsgbyksIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBJY29uc01hbmFnZXIKICAgICAgICB9LAogICAgICAgIDM2NjM6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwLCB3aW5kb3cuZWxlbWVudG9yQ29tbW9uICYmIHdpbmRvdy5lbGVtZW50b3JDb21tb24uaGVscGVycy5zb2Z0RGVwcmVjYXRlZCgnU2Nyb2xsIHV0aWwgZnJvbSAiL2Rldi9qcy9mcm9udGVuZC91dGlscy9zY3JvbGwiJywgIjMuMS4wIiwgImVsZW1lbnRvck1vZHVsZXMudXRpbHMuU2Nyb2xsIik7CiAgICAgICAgICAgIHZhciBzID0gZWxlbWVudG9yTW9kdWxlcy51dGlscy5TY3JvbGw7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IHMKICAgICAgICB9LAogICAgICAgIDU1NzQ6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDYyOSkpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKCksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hdHRhY2hIYW5kbGVyKCJhbmltYXRlZC1oZWFkbGluZSIsIGkuZGVmYXVsdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNjI5OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygzNjYzKSksCiAgICAgICAgICAgICAgICBvID0gZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgc3ZnUGF0aHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2lyY2xlOiBbIk0zMjUsMThDMjI4LjctOC4zLDExOC41LDguMyw3OCwyMUMyMi40LDM4LjQsNC42LDU0LjYsNS42LDc3LjZjMS40LDMyLjQsNTIuMiw1NCwxNDIuNiw2My43IGM2Ni4yLDcuMSwyMTIuMiw3LjUsMjczLjUtOC4zYzY0LjQtMTYuNiwxMDQuMy01Ny42LDMzLjgtOTguMkMzODYuNy00LjksMTc5LjQtMS40LDEyNi4zLDIwLjciXSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lX3ppZ3phZzogWyJNOS4zLDEyNy4zYzQ5LjMtMywxNTAuNy03LjYsMTk5LjctNy40YzEyMS45LDAuNCwxODkuOSwwLjQsMjgyLjMsNy4yQzM4MC4xLDEyOS42LDE4MS4yLDEzMC42LDcwLDEzOSBjODIuNi0yLjksMjU0LjItMSwzMzUuOSwxLjNjLTU2LDEuNC0xMzcuMi0wLjMtMTk3LjEsOSJdLAogICAgICAgICAgICAgICAgICAgICAgICB4OiBbIk00OTcuNCwyMy45QzMwMS42LDQwLDE1NS45LDgwLjYsNCwxNDQuNCIsICJNMTQuMSwyNy42YzIwNC41LDIwLjMsMzkzLjgsNzQsNDY3LjMsMTExLjciXSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWtldGhyb3VnaDogWyJNMyw3NWg0OTMuNSJdLAogICAgICAgICAgICAgICAgICAgICAgICBjdXJseTogWyJNMywxNDYuMWMxNy4xLTguOCwzMy41LTE3LjgsNTEuNC0xNy44YzE1LjYsMCwxNy4xLDE4LjEsMzAuMiwxOC4xYzIyLjksMCwzNi0xOC42LDUzLjktMTguNiBjMTcuMSwwLDIxLjMsMTguNSwzNy41LDE4LjVjMjEuMywwLDMxLjgtMTguNiw0OS0xOC42YzIyLjEsMCwxOC44LDE4LjgsMzYuOCwxOC44YzE4LjgsMCwzNy41LTE4LjYsNDktMTguNmMyMC40LDAsMTcuMSwxOSwzNi44LDE5IGMyMi45LDAsMzYuOC0yMC42LDU0LjctMTguNmMxNy43LDEuNCw3LjEsMTkuNSwzMy41LDE4LjhjMTcuMSwwLDQ3LjItNi41LDYxLjEtMTUuNiJdLAogICAgICAgICAgICAgICAgICAgICAgICBkaWFnb25hbDogWyJNMTMuNSwxNS41YzEzMSwxMy43LDI4OS4zLDU1LjUsNDc1LDEyNS41Il0sCiAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZTogWyJNOC40LDE0My4xYzE0LjItOCw5Ny42LTguOCwyMDAuNi05LjJjMTIyLjMtMC40LDI4Ny41LDcuMiwyODcuNSw3LjIiLCAiTTgsMTkuNGM3Mi4zLTUuMywxNjItNy44LDIxNi03LjhjNTQsMCwxMzYuMiwwLDI2Nyw3LjgiXSwKICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlX3VuZGVybGluZTogWyJNNSwxMjUuNGMzMC41LTMuOCwxMzcuOS03LjYsMTc3LjMtNy42YzExNy4yLDAsMjUyLjIsNC43LDMxMi43LDcuNiIsICJNMjYuOSwxNDMuOGM1NS4xLTYuMSwxMjYtNi4zLDE2Mi4yLTYuMWM0Ni41LDAuMiwyMDMuOSwzLjIsMjY4LjksNi40Il0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVybGluZTogWyJNNy43LDE0NS42QzEwOSwxMjUsMjk5LjksMTE2LjIsNDAxLDEyMS4zYzQyLjEsMi4yLDg3LjYsMTEuOCw4Ny4zLDI1LjciXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInJvdGF0ZV9pdGVyYXRpb25fZGVsYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uRGVsYXk6IGUgfHwgMjUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXR0ZXJzRGVsYXk6IC4wMiAqIGUgfHwgNTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZUxldHRlcnNEZWxheTogLjA2ICogZSB8fCAxNTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uRHVyYXRpb246IC4yICogZSB8fCA1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZWFsRHVyYXRpb246IC4yNCAqIGUgfHwgNjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVhbEFuaW1hdGlvbkRlbGF5OiAuNiAqIGUgfHwgMTUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRBbmltYXRpb25EdXJhdGlvbjogdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImhpZ2hsaWdodF9hbmltYXRpb25fZHVyYXRpb24iKSB8fCAxMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodEFuaW1hdGlvbkRlbGF5OiB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiaGlnaGxpZ2h0X2l0ZXJhdGlvbl9kZWxheSIpIHx8IDhlMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudHlwZUFuaW1hdGlvbkRlbGF5ID0gdC5zZWxlY3Rpb25EdXJhdGlvbiArIDgwMCwgdC5zZWxlY3RvcnMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkbGluZTogIi5lbGVtZW50b3ItaGVhZGxpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY1dyYXBwZXI6ICIuZWxlbWVudG9yLWhlYWRsaW5lLWR5bmFtaWMtd3JhcHBlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljVGV4dDogIi5lbGVtZW50b3ItaGVhZGxpbmUtZHluYW1pYy10ZXh0IgogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LmNsYXNzZXMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljVGV4dDogImVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLXRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY0xldHRlcjogImVsZW1lbnRvci1oZWFkbGluZS1keW5hbWljLWxldHRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWN0aXZlOiAiZWxlbWVudG9yLWhlYWRsaW5lLXRleHQtYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRJbmFjdGl2ZTogImVsZW1lbnRvci1oZWFkbGluZS10ZXh0LWluYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldHRlcnM6ICJlbGVtZW50b3ItaGVhZGxpbmUtbGV0dGVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25JbjogImVsZW1lbnRvci1oZWFkbGluZS1hbmltYXRpb24taW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVNlbGVjdGVkOiAiZWxlbWVudG9yLWhlYWRsaW5lLXR5cGluZy1zZWxlY3RlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZUhpZ2hsaWdodDogImUtYW5pbWF0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUhpZ2hsaWdodDogImUtaGlkZS1oaWdobGlnaHQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkbGluZTogdGhpcy4kZWxlbWVudC5maW5kKGUuaGVhZGxpbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGR5bmFtaWNXcmFwcGVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5keW5hbWljV3JhcHBlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZHluYW1pY1RleHQ6IHRoaXMuJGVsZW1lbnQuZmluZChlLmR5bmFtaWNUZXh0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXROZXh0V29yZDogZSA9PiBlLmlzKCI6bGFzdC1jaGlsZCIpID8gZS5wYXJlbnQoKS5jaGlsZHJlbigpLmVxKDApIDogZS5uZXh0KCksCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoV29yZChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQ2xhc3MoImVsZW1lbnRvci1oZWFkbGluZS10ZXh0LWFjdGl2ZSIpLmFkZENsYXNzKCJlbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1pbmFjdGl2ZSIpLCB0LnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1pbmFjdGl2ZSIpLmFkZENsYXNzKCJlbGVtZW50b3ItaGVhZGxpbmUtdGV4dC1hY3RpdmUiKSwgdGhpcy5zZXREeW5hbWljV3JhcHBlcldpZHRoKHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzaW5nbGVMZXR0ZXJzKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kZHluYW1pY1RleHQuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGpRdWVyeSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC50ZXh0KCkuc3BsaXQoIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0Lmhhc0NsYXNzKGUudGV4dEFjdGl2ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmVtcHR5KCksIHMuZm9yRWFjaCgoZnVuY3Rpb24ocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0galF1ZXJ5KCI8c3Bhbj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLmR5bmFtaWNMZXR0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS50ZXh0KHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gJiYgaS5hZGRDbGFzcyhlLmFuaW1hdGlvbkluKSwgdC5hcHBlbmQoaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdC5jc3MoIm9wYWNpdHkiLCAxKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNob3dMZXR0ZXIoZSwgdCwgcywgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmFkZENsYXNzKG8uYW5pbWF0aW9uSW4pLCBlLmlzKCI6bGFzdC1jaGlsZCIpID8gcyB8fCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuaGlkZVdvcmQodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuZ2V0U2V0dGluZ3MoImFuaW1hdGlvbkRlbGF5IikpIDogc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnNob3dMZXR0ZXIoZS5uZXh0KCksIHQsIHMsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGlkZUxldHRlcihlLCB0LCBzLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQ2xhc3Moby5jbGFzc2VzLmFuaW1hdGlvbkluKSwgZS5pcygiOmxhc3QtY2hpbGQiKSA/IHMgJiYgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmhpZGVXb3JkKGkuZ2V0TmV4dFdvcmQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmdldFNldHRpbmdzKCJhbmltYXRpb25EZWxheSIpKSA6IHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5oaWRlTGV0dGVyKGUubmV4dCgpLCB0LCBzLCBuKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNob3dXb3JkKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHMuZ2V0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzLmdldEVsZW1lbnRTZXR0aW5ncygiYW5pbWF0aW9uX3R5cGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGluZyIgPT09IGkgPyAocy5zaG93TGV0dGVyKGUuZmluZCgiLiIgKyBuLmNsYXNzZXMuZHluYW1pY0xldHRlcikuZXEoMCksIGUsICExLCB0KSwgZS5hZGRDbGFzcyhuLmNsYXNzZXMudGV4dEFjdGl2ZSkucmVtb3ZlQ2xhc3Mobi5jbGFzc2VzLnRleHRJbmFjdGl2ZSkpIDogImNsaXAiID09PSBpICYmIHMuZWxlbWVudHMuJGR5bmFtaWNXcmFwcGVyLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUud2lkdGgoKSArIDEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4ucmV2ZWFsRHVyYXRpb24sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuaGlkZVdvcmQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuLnJldmVhbEFuaW1hdGlvbkRlbGF5KQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhpZGVXb3JkKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuZ2V0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzLmNsYXNzZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gIi4iICsgbi5keW5hbWljTGV0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuZ2V0RWxlbWVudFNldHRpbmdzKCJhbmltYXRpb25fdHlwZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZ2V0TmV4dFdvcmQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTG9vcE1vZGUgfHwgIWUuaXMoIjpsYXN0LWNoaWxkIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInR5cGluZyIgPT09IG8pIHQuZWxlbWVudHMuJGR5bmFtaWNXcmFwcGVyLmFkZENsYXNzKG4udHlwZVNlbGVjdGVkKSwgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5lbGVtZW50cy4kZHluYW1pY1dyYXBwZXIucmVtb3ZlQ2xhc3Mobi50eXBlU2VsZWN0ZWQpLCBlLmFkZENsYXNzKHMuY2xhc3Nlcy50ZXh0SW5hY3RpdmUpLnJlbW92ZUNsYXNzKG4udGV4dEFjdGl2ZSkuY2hpbGRyZW4oaSkucmVtb3ZlQ2xhc3Mobi5hbmltYXRpb25JbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBzLnNlbGVjdGlvbkR1cmF0aW9uKSwgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93V29yZChyLCBzLnR5cGVMZXR0ZXJzRGVsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgcy50eXBlQW5pbWF0aW9uRGVsYXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodC5lbGVtZW50cy4kaGVhZGxpbmUuaGFzQ2xhc3Mobi5sZXR0ZXJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlLmNoaWxkcmVuKGkpLmxlbmd0aCA+PSByLmNoaWxkcmVuKGkpLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaGlkZUxldHRlcihlLmZpbmQoaSkuZXEoMCksIGUsIGEsIHMubGV0dGVyc0RlbGF5KSwgdC5zaG93TGV0dGVyKHIuZmluZChpKS5lcSgwKSwgciwgYSwgcy5sZXR0ZXJzRGVsYXkpLCB0LnNldER5bmFtaWNXcmFwcGVyV2lkdGgocikKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJjbGlwIiA9PT0gbyA/IHQuZWxlbWVudHMuJGR5bmFtaWNXcmFwcGVyLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICIycHgiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHMucmV2ZWFsRHVyYXRpb24sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc3dpdGNoV29yZChlLCByKSwgdC5zaG93V29yZChyKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiAodC5zd2l0Y2hXb3JkKGUsIHIpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaGlkZVdvcmQocikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHMuYW5pbWF0aW9uRGVsYXkpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0RHluYW1pY1dyYXBwZXJXaWR0aChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiYW5pbWF0aW9uX3R5cGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgImNsaXAiICE9PSB0ICYmICJ0eXBpbmciICE9PSB0ICYmIHRoaXMuZWxlbWVudHMuJGR5bmFtaWNXcmFwcGVyLmNzcygid2lkdGgiLCBlLndpZHRoKCkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhbmltYXRlSGVhZGxpbmUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLmdldEVsZW1lbnRTZXR0aW5ncygiYW5pbWF0aW9uX3R5cGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmVsZW1lbnRzLiRkeW5hbWljV3JhcHBlcjsKICAgICAgICAgICAgICAgICAgICAgICAgImNsaXAiID09PSB0ID8gcy53aWR0aChzLndpZHRoKCkgKyAxMCkgOiAidHlwaW5nIiAhPT0gdCAmJiBlLnNldER5bmFtaWNXcmFwcGVyV2lkdGgoZS5lbGVtZW50cy4kZHluYW1pY1RleHQpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaGlkZVdvcmQoZS5lbGVtZW50cy4kZHluYW1pY1RleHQuZXEoMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLmdldFNldHRpbmdzKCJhbmltYXRpb25EZWxheSIpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0U3ZnUGF0aHMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuc3ZnUGF0aHNbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0galF1ZXJ5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzLmFkZChqUXVlcnkoIjxwYXRoPiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGRIaWdobGlnaHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGpRdWVyeSgiPHN2Zz4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveDogIjAgMCA1MDAgMTUwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiAibm9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmh0bWwodGhpcy5nZXRTdmdQYXRocyhlLm1hcmtlcikpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRkeW5hbWljV3JhcHBlci5hcHBlbmQodFswXS5vdXRlckhUTUwpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByb3RhdGVIZWFkbGluZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGhlYWRsaW5lLmhhc0NsYXNzKGUuY2xhc3Nlcy5sZXR0ZXJzKSAmJiB0aGlzLnNpbmdsZUxldHRlcnMoKSwgdGhpcy5hbmltYXRlSGVhZGxpbmUoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5pdEhlYWRsaW5lKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImhlYWRsaW5lX3N0eWxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICJyb3RhdGUiID09PSBlID8gdGhpcy5yb3RhdGVIZWFkbGluZSgpIDogImhpZ2hsaWdodCIgPT09IGUgJiYgKHRoaXMuYWRkSGlnaGxpZ2h0KCksIHRoaXMuYWN0aXZhdGVIaWdobGlnaHRBbmltYXRpb24oKSksIHRoaXMuZGVhY3RpdmF0ZVNjcm9sbExpc3RlbmVyKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlSGlnaGxpZ2h0QW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGUuY2xhc3NlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmVsZW1lbnRzLiRoZWFkbGluZTsKICAgICAgICAgICAgICAgICAgICAgICAgcy5yZW1vdmVDbGFzcyh0LmhpZGVIaWdobGlnaHQpLmFkZENsYXNzKHQuYWN0aXZhdGVIaWdobGlnaHQpLCB0aGlzLmlzTG9vcE1vZGUgJiYgKHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVtb3ZlQ2xhc3ModC5hY3RpdmF0ZUhpZ2hsaWdoKS5hZGRDbGFzcyh0LmhpZGVIaWdobGlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLmhpZ2hsaWdodEFuaW1hdGlvbkR1cmF0aW9uICsgLjggKiBlLmhpZ2hsaWdodEFuaW1hdGlvbkRlbGF5KSwgc2V0VGltZW91dCgoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZUhpZ2hsaWdodEFuaW1hdGlvbighMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuaGlnaGxpZ2h0QW5pbWF0aW9uRHVyYXRpb24gKyBlLmhpZ2hsaWdodEFuaW1hdGlvbkRlbGF5KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlU2Nyb2xsTGlzdGVuZXIoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzLnN0YXJ0QW5pbWF0aW9uLm9ic2VydmVyID0gaS5kZWZhdWx0LnNjcm9sbE9ic2VydmVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogIjBweCAwcHggLTEwMHB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmlzSW5WaWV3cG9ydCAmJiB0aGlzLmluaXRIZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycy5zdGFydEFuaW1hdGlvbi5lbGVtZW50ID0gdGhpcy5lbGVtZW50cy4kaGVhZGxpbmVbMF0sIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzLnN0YXJ0QW5pbWF0aW9uLm9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMuc3RhcnRBbmltYXRpb24uZWxlbWVudCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVTY3JvbGxMaXN0ZW5lcigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMuc3RhcnRBbmltYXRpb24ub2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzLnN0YXJ0QW5pbWF0aW9uLmVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZS5wcm90b3R5cGUub25Jbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmltYXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuaXNMb29wTW9kZSA9ICJ5ZXMiID09PSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygibG9vcCIpLCB0aGlzLmFjdGl2YXRlU2Nyb2xsTGlzdGVuZXIoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBvCiAgICAgICAgfSwKICAgICAgICA5NzQzOiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg4NTA5KSksCiAgICAgICAgICAgICAgICBvID0gbihzKDQ1MjYpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigibWVkaWEtY2Fyb3VzZWwiLCBpLmRlZmF1bHQpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigidGVzdGltb25pYWwtY2Fyb3VzZWwiLCBvLmRlZmF1bHQpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigicmV2aWV3cyIsIG8uZGVmYXVsdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNTQ2NzogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIENhcm91c2VsQmFzZSBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuU3dpcGVyQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXJDb250YWluZXI6ICIuZWxlbWVudG9yLW1haW4tc3dpcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlclNsaWRlOiAiLnN3aXBlci1zbGlkZSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZXNjcmVlbjogMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3A6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXB0b3A6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZXRfZXh0cmE6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZXQ6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGVfZXh0cmE6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6IDEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3dpcGVyQ29udGFpbmVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zd2lwZXJDb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuJHNsaWRlcyA9IHQuJHN3aXBlckNvbnRhaW5lci5maW5kKGUuc3dpcGVyU2xpZGUpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRFZmZlY3QoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJlZmZlY3QiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGV2aWNlU2xpZGVzUGVyVmlldyhlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9ICJzbGlkZXNfcGVyX3ZpZXciICsgKCJkZXNrdG9wIiA9PT0gZSA/ICIiIDogIl8iICsgZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuZ2V0U2xpZGVzQ291bnQoKSwgK3RoaXMuZ2V0RWxlbWVudFNldHRpbmdzKHQpIHx8IHRoaXMuZ2V0U2V0dGluZ3MoInNsaWRlc1BlclZpZXciKVtlXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFNsaWRlc1BlclZpZXcoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAic2xpZGUiID09PSB0aGlzLmdldEVmZmVjdCgpID8gdGhpcy5nZXREZXZpY2VTbGlkZXNQZXJWaWV3KGUpIDogMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGV2aWNlU2xpZGVzVG9TY3JvbGwoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAic2xpZGVzX3RvX3Njcm9sbCIgKyAoImRlc2t0b3AiID09PSBlID8gIiIgOiAiXyIgKyBlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5nZXRTbGlkZXNDb3VudCgpLCArdGhpcy5nZXRFbGVtZW50U2V0dGluZ3ModCkgfHwgMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFNsaWRlc1RvU2Nyb2xsKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInNsaWRlIiA9PT0gdGhpcy5nZXRFZmZlY3QoKSA/IHRoaXMuZ2V0RGV2aWNlU2xpZGVzVG9TY3JvbGwoZSkgOiAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTcGFjZUJldHdlZW4oZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB0ID0gInNwYWNlX2JldHdlZW4iOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJkZXNrdG9wIiAhPT0gZSAmJiAodCArPSAiXyIgKyBlKSwgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3ModCkuc2l6ZSB8fCAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTd2lwZXJPcHRpb25zKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhYkN1cnNvcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsU2xpZGU6IHRoaXMuZ2V0SW5pdGlhbFNsaWRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoImRlc2t0b3AiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1Blckdyb3VwOiB0aGlzLmdldFNsaWRlc1RvU2Nyb2xsKCJkZXNrdG9wIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZUJldHdlZW46IHRoaXMuZ2V0U3BhY2VCZXR3ZWVuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wOiAieWVzIiA9PT0gZS5sb29wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IGUuc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3Q6IHRoaXMuZ2V0RWZmZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb246ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVUb0NsaWNrZWRTbGlkZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbGVtZW50b3JCcmVha3BvaW50czogITAKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5zaG93X2Fycm93cyAmJiAodC5uYXZpZ2F0aW9uID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldkVsOiAiLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEVsOiAiLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLnBhZ2luYXRpb24gJiYgKHQucGFnaW5hdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsOiAiLnN3aXBlci1wYWdpbmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUucGFnaW5hdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksICJjdWJlIiAhPT0gdGhpcy5nZXRFZmZlY3QoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnJlc3BvbnNpdmUuYWN0aXZlQnJlYWtwb2ludHM7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHMpLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtzW3RdLnZhbHVlXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0aGlzLmdldFNsaWRlc1BlclZpZXcodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IHRoaXMuZ2V0U2xpZGVzVG9TY3JvbGwodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VCZXR3ZWVuOiB0aGlzLmdldFNwYWNlQmV0d2Vlbih0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHQuYnJlYWtwb2ludHMgPSBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0VkaXQgJiYgZS5hdXRvcGxheSAmJiAodC5hdXRvcGxheSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IGUuYXV0b3BsYXlfc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiAhIWUucGF1c2Vfb25faW50ZXJhY3Rpb24KICAgICAgICAgICAgICAgICAgICB9KSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGV2aWNlQnJlYWtwb2ludFZhbHVlKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYnJlYWtwb2ludHNEaWN0aW9uYXJ5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50czsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5icmVha3BvaW50c0RpY3Rpb25hcnkgPSB7fSwgT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRzRGljdGlvbmFyeVt0XSA9IGVbdF0udmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJyZWFrcG9pbnRzRGljdGlvbmFyeVtlXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdXBkYXRlU3BhY2VCZXR3ZWVuKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5tYXRjaCgic3BhY2VfYmV0d2Vlbl8oLiopIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0ID8gdFsxXSA6ICJkZXNrdG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0U3BhY2VCZXR3ZWVuKHMpOwogICAgICAgICAgICAgICAgICAgICJkZXNrdG9wIiAhPT0gcyA/IHRoaXMuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c1t0aGlzLmdldERldmljZUJyZWFrcG9pbnRWYWx1ZShzKV0uc3BhY2VCZXR3ZWVuID0gbiA6IHRoaXMuc3dpcGVyLnBhcmFtcy5zcGFjZUJldHdlZW4gPSBuLCB0aGlzLnN3aXBlci5wYXJhbXMuc3BhY2VCZXR3ZWVuID0gbiwgdGhpcy5zd2lwZXIudXBkYXRlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFzeW5jIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UucHJvdG90eXBlLm9uSW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGlmICgxID49IHRoaXMuZ2V0U2xpZGVzQ291bnQoKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy5zd2lwZXI7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zd2lwZXIgPSBhd2FpdCBuZXcgdCh0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIsIHRoaXMuZ2V0U3dpcGVyT3B0aW9ucygpKSwgInllcyIgPT09IGUucGF1c2Vfb25faG92ZXIgJiYgdGhpcy50b2dnbGVQYXVzZU9uSG92ZXIoITApLCB0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIuZGF0YSgic3dpcGVyIiwgdGhpcy5zd2lwZXIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRDaGFuZ2VhYmxlUHJvcGVydGllcygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogImF1dG9wbGF5IiwKICAgICAgICAgICAgICAgICAgICAgICAgcGF1c2Vfb25faG92ZXI6ICJwYXVzZU9uSG92ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBwYXVzZV9vbl9pbnRlcmFjdGlvbjogImRpc2FibGVPbkludGVyYWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXlfc3BlZWQ6ICJkZWxheSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiAic3BlZWQiLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogIndpZHRoIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZVN3aXBlck9wdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGUuaW5kZXhPZigid2lkdGgiKSkgcmV0dXJuIHZvaWQgdGhpcy5zd2lwZXIudXBkYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0W2VdOwogICAgICAgICAgICAgICAgICAgIGxldCBuID0gdGhpcy5nZXRDaGFuZ2VhYmxlUHJvcGVydGllcygpW2VdLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gczsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYXV0b3BsYXkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICEhcyAmJiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IHQuYXV0b3BsYXlfc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZU9uSW50ZXJhY3Rpb246ICJ5ZXMiID09PSB0LnBhdXNlX29uX2ludGVyYWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImF1dG9wbGF5X3NwZWVkIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAiYXV0b3BsYXkiLCBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiAieWVzIiA9PT0gdC5wYXVzZV9vbl9pbnRlcmFjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwYXVzZV9vbl9ob3ZlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVBhdXNlT25Ib3ZlcigieWVzIiA9PT0gcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGF1c2Vfb25faW50ZXJhY3Rpb24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICJ5ZXMiID09PSBzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICJwYXVzZV9vbl9ob3ZlciIgIT09IGUgJiYgKHRoaXMuc3dpcGVyLnBhcmFtc1tuXSA9IGkpLCB0aGlzLnN3aXBlci51cGRhdGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA+PSB0aGlzLmdldFNsaWRlc0NvdW50KCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZS5pbmRleE9mKCJ3aWR0aCIpKSByZXR1cm4gdGhpcy5zd2lwZXIudXBkYXRlKCksIHZvaWQodGhpcy50aHVtYnNTd2lwZXIgJiYgdGhpcy50aHVtYnNTd2lwZXIudXBkYXRlKCkpOwogICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBlLmluZGV4T2YoInNwYWNlX2JldHdlZW4iKSkgcmV0dXJuIHZvaWQgdGhpcy51cGRhdGVTcGFjZUJldHdlZW4oZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDaGFuZ2VhYmxlUHJvcGVydGllcygpLmhhc093blByb3BlcnR5KGUpICYmIHRoaXMudXBkYXRlU3dpcGVyT3B0aW9uKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkVkaXRTZXR0aW5nc0NoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgMSA+PSB0aGlzLmdldFNsaWRlc0NvdW50KCkgfHwgImFjdGl2ZUl0ZW1JbmRleCIgPT09IGUgJiYgdGhpcy5zd2lwZXIuc2xpZGVUb0xvb3AodGhpcy5nZXRFZGl0U2V0dGluZ3MoImFjdGl2ZUl0ZW1JbmRleCIpIC0gMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBDYXJvdXNlbEJhc2UKICAgICAgICB9LAogICAgICAgIDg1MDk6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDU0NjcpKTsKICAgICAgICAgICAgY2xhc3MgTWVkaWFDYXJvdXNlbCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBpc1NsaWRlc2hvdygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInNsaWRlc2hvdyIgPT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJza2luIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gc3VwZXIuZ2V0RGVmYXVsdFNldHRpbmdzKC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNTbGlkZXNob3coKSAmJiAoZS5zZWxlY3RvcnMudGh1bWJzU3dpcGVyID0gIi5lbGVtZW50b3ItdGh1bWJuYWlscy1zd2lwZXIiLCBlLnNsaWRlc1BlclZpZXcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGVzY3JlZW46IDUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3A6IDUsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhcHRvcDogNSwKICAgICAgICAgICAgICAgICAgICAgICAgdGFibGV0X2V4dHJhOiA1LAogICAgICAgICAgICAgICAgICAgICAgICB0YWJsZXQ6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZV9leHRyYTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiAzCiAgICAgICAgICAgICAgICAgICAgfSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFNsaWRlc1BlclZpZXdTZXR0aW5nTmFtZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNsaWRlc2hvd0VsZW1lbnRTZXR0aW5ncykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc2hvd0VsZW1lbnRTZXR0aW5ncyA9IFsic2xpZGVzX3Blcl92aWV3Il07CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50czsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc2hvd0VsZW1lbnRTZXR0aW5ncy5wdXNoKCJzbGlkZXNfcGVyX3ZpZXdfIiArIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXNob3dFbGVtZW50U2V0dGluZ3MKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEVsZW1lbnRTZXR0aW5ncyhlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xICE9PSB0aGlzLmdldFNsaWRlc1BlclZpZXdTZXR0aW5nTmFtZXMoKS5pbmRleE9mKGUpICYmIHRoaXMuaXNTbGlkZXNob3coKSAmJiAoZSA9ICJzbGlkZXNob3dfIiArIGUpLCBzdXBlci5nZXRFbGVtZW50U2V0dGluZ3MoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBzdXBlci5nZXREZWZhdWx0RWxlbWVudHMoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1NsaWRlc2hvdygpICYmICh0LiR0aHVtYnNTd2lwZXIgPSB0aGlzLiRlbGVtZW50LmZpbmQoZS50aHVtYnNTd2lwZXIpKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RWZmZWN0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiY292ZXJmbG93IiA9PT0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInNraW4iKSA/ICJjb3ZlcmZsb3ciIDogc3VwZXIuZ2V0RWZmZWN0KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFNsaWRlc1BlclZpZXcoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzU2xpZGVzaG93KCkgPyAxIDogImNvdmVyZmxvdyIgPT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJza2luIikgPyB0aGlzLmdldERldmljZVNsaWRlc1BlclZpZXcoZSkgOiBzdXBlci5nZXRTbGlkZXNQZXJWaWV3KGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTd2lwZXJPcHRpb25zKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBzdXBlci5nZXRTd2lwZXJPcHRpb25zKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNTbGlkZXNob3coKSAmJiAoZS5sb29wZWRTbGlkZXMgPSB0aGlzLmdldFNsaWRlc0NvdW50KCksIGRlbGV0ZSBlLnBhZ2luYXRpb24sIGRlbGV0ZSBlLmJyZWFrcG9pbnRzKSwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXN5bmMgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIGF3YWl0IHN1cGVyLm9uSW5pdCgpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNsaWRlc0NvdW50KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2xpZGVzaG93KCkgfHwgMSA+PSBlKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAieWVzIiA9PT0gdC5sb29wLAogICAgICAgICAgICAgICAgICAgICAgICBuID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZ2V0RGV2aWNlU2xpZGVzUGVyVmlldygiZGVza3RvcCIpOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGkpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBuW2lbZV0udmFsdWVdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogdGhpcy5nZXREZXZpY2VTbGlkZXNQZXJWaWV3KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VCZXR3ZWVuOiB0aGlzLmdldFNwYWNlQmV0d2VlbihlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFNsaWRlOiB0aGlzLmdldEluaXRpYWxTbGlkZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyZWRTbGlkZXM6IHQuY2VudGVyZWRfc2xpZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVUb0NsaWNrZWRTbGlkZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZUJldHdlZW46IHRoaXMuZ2V0U3BhY2VCZXR3ZWVuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wZWRTbGlkZXM6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludHM6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbGVtZW50b3JCcmVha3BvaW50czogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLnN3aXBlcjsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN3aXBlci5jb250cm9sbGVyLmNvbnRyb2wgPSB0aGlzLnRodW1ic1N3aXBlciA9IGF3YWl0IG5ldyBhKHRoaXMuZWxlbWVudHMuJHRodW1ic1N3aXBlciwgciksIHRoaXMuZWxlbWVudHMuJHRodW1ic1N3aXBlci5kYXRhKCJzd2lwZXIiLCB0aGlzLnRodW1ic1N3aXBlciksIHRoaXMudGh1bWJzU3dpcGVyLmNvbnRyb2xsZXIuY29udHJvbCA9IHRoaXMuc3dpcGVyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gTWVkaWFDYXJvdXNlbAogICAgICAgIH0sCiAgICAgICAgNDUyNjogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoNTQ2NykpOwogICAgICAgICAgICBjbGFzcyBUZXN0aW1vbmlhbENhcm91c2VsIGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gc3VwZXIuZ2V0RGVmYXVsdFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc2xpZGVzUGVyVmlldyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVza3RvcDogMQogICAgICAgICAgICAgICAgICAgIH0sIE9iamVjdC5rZXlzKGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5yZXNwb25zaXZlLmFjdGl2ZUJyZWFrcG9pbnRzKS5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5zbGlkZXNQZXJWaWV3W3RdID0gMQogICAgICAgICAgICAgICAgICAgIH0pKSwgZS5sb29wICYmIChlLmxvb3BlZFNsaWRlcyA9IHRoaXMuZ2V0U2xpZGVzQ291bnQoKSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEVmZmVjdCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInNsaWRlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IFRlc3RpbW9uaWFsQ2Fyb3VzZWwKICAgICAgICB9LAogICAgICAgIDgxMDI6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDU0NDkpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigiY291bnRkb3duIiwgaS5kZWZhdWx0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA1NDQ5OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIHMgPSBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGNhY2hlOiBudWxsLAogICAgICAgICAgICAgICAgY2FjaGVFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy4kZWxlbWVudC5maW5kKCIuZWxlbWVudG9yLWNvdW50ZG93bi13cmFwcGVyIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50RG93bjogZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGltZUludGVydmFsOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50ZG93bjogZS5maW5kKCIuZWxlbWVudG9yLWNvdW50ZG93bi13cmFwcGVyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF5c1NwYW46IGUuZmluZCgiLmVsZW1lbnRvci1jb3VudGRvd24tZGF5cyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhvdXJzU3BhbjogZS5maW5kKCIuZWxlbWVudG9yLWNvdW50ZG93bi1ob3VycyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1pbnV0ZXNTcGFuOiBlLmZpbmQoIi5lbGVtZW50b3ItY291bnRkb3duLW1pbnV0ZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWNvbmRzU3BhbjogZS5maW5kKCIuZWxlbWVudG9yLWNvdW50ZG93bi1zZWNvbmRzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXhwaXJlTWVzc2FnZTogZS5wYXJlbnQoKS5maW5kKCIuZWxlbWVudG9yLWNvdW50ZG93bi1leHBpcmUtLW1lc3NhZ2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy4kZWxlbWVudC5kYXRhKCJpZCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZTogbmV3IERhdGUoMWUzICogZS5kYXRhKCJkYXRlIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogZS5kYXRhKCJleHBpcmUtYWN0aW9ucyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlcmdyZWVuSW50ZXJ2YWw6IGUuZGF0YSgiZXZlcmdyZWVuLWludGVydmFsIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlLnByb3RvdHlwZS5vbkluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdGhpcy5jYWNoZUVsZW1lbnRzKCksIDAgPCB0aGlzLmNhY2hlLmRhdGEuZXZlcmdyZWVuSW50ZXJ2YWwgJiYgKHRoaXMuY2FjaGUuZGF0YS5lbmRUaW1lID0gdGhpcy5nZXRFdmVyZ3JlZW5EYXRlKCkpLCB0aGlzLmluaXRpYWxpemVDbG9jaygpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXBkYXRlQ2xvY2soKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldFRpbWVSZW1haW5pbmcodGhpcy5jYWNoZS5kYXRhLmVuZFRpbWUpOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKHQucGFydHMsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBlLmNhY2hlLmVsZW1lbnRzWyIkIiArIHQgKyAiU3BhbiJdOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IHRoaXMudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgMSA9PT0gbi5sZW5ndGggJiYgKG4gPSAwICsgbiksIHMubGVuZ3RoICYmIHMudGV4dChuKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdC50b3RhbCA8PSAwICYmIChjbGVhckludGVydmFsKHRoaXMuY2FjaGUudGltZUludGVydmFsKSwgdGhpcy5ydW5BY3Rpb25zKCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUNsb2NrKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2xvY2soKSwgdGhpcy5jYWNoZS50aW1lSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUudXBkYXRlQ2xvY2soKQogICAgICAgICAgICAgICAgICAgIH0pLCAxZTMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcnVuQWN0aW9ucygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBlLiRlbGVtZW50LnRyaWdnZXIoImNvdW50ZG93bl9leHBpcmUiLCBlLiRlbGVtZW50KSwgdGhpcy5jYWNoZS5kYXRhLmFjdGlvbnMgJiYgdGhpcy5jYWNoZS5kYXRhLmFjdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaGlkZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jYWNoZS4kY291bnREb3duLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJlZGlyZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnJlZGlyZWN0X3VybCAmJiAod2luZG93LmxvY2F0aW9uLmhyZWYgPSB0LnJlZGlyZWN0X3VybCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtZXNzYWdlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNhY2hlLmVsZW1lbnRzLiRleHBpcmVNZXNzYWdlLnNob3coKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0VGltZVJlbWFpbmluZyhlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUgLSBuZXcgRGF0ZTsKICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IE1hdGguZmxvb3IodCAvIDFlMyAlIDYwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IE1hdGguZmxvb3IodCAvIDFlMyAvIDYwICUgNjApLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gTWF0aC5mbG9vcih0IC8gMzZlNSAlIDI0KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE1hdGguZmxvb3IodCAvIDg2NGU1KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG8gPCAwIHx8IGkgPCAwIHx8IG4gPCAwKSAmJiAocyA9IG4gPSBpID0gbyA9IDApLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBwYXJ0czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5czogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlczogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM6IHMKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRFdmVyZ3JlZW5EYXRlKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5jYWNoZS5kYXRhLmlkLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5jYWNoZS5kYXRhLmV2ZXJncmVlbkludGVydmFsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdCArICItZXZlcmdyZWVuX2R1ZV9kYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQgKyAiLWV2ZXJncmVlbl9pbnRlcnZhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdWVEYXRlOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVydmFsOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpbml0RXZlcmdyZWVuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2FjaGUuZGF0YS5lbmRUaW1lID0gdC5zZXRTZWNvbmRzKHQuZ2V0U2Vjb25kcygpICsgcyksIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG4sIGUuY2FjaGUuZGF0YS5lbmRUaW1lKSwgbG9jYWxTdG9yYWdlLnNldEl0ZW0oaSwgcyksIGUuY2FjaGUuZGF0YS5lbmRUaW1lCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8uZHVlRGF0ZSAmJiBudWxsID09PSBvLmludGVydmFsIHx8IG51bGwgIT09IG8uZHVlRGF0ZSAmJiBzICE9PSBwYXJzZUludChvLmludGVydmFsLCAxMCkgPyBpbml0RXZlcmdyZWVuKCkgOiBvLmR1ZURhdGUgPiAwICYmIHBhcnNlSW50KG8uaW50ZXJ2YWwsIDEwKSA9PT0gcyA/IG8uZHVlRGF0ZSA6IHZvaWQgMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gcwogICAgICAgIH0sCiAgICAgICAgNTg1OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg4NTAzKSksCiAgICAgICAgICAgICAgICBvID0gbihzKDEzOTMpKSwKICAgICAgICAgICAgICAgIHIgPSBuKHMoNjUyOSkpLAogICAgICAgICAgICAgICAgYSA9IG4ocygyMTA4KSksCiAgICAgICAgICAgICAgICBsID0gbihzKDc4NCkpLAogICAgICAgICAgICAgICAgZCA9IG4ocyg1MzQ3KSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gW2kuZGVmYXVsdCwgby5kZWZhdWx0LCByLmRlZmF1bHRdOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hdHRhY2hIYW5kbGVyKCJmb3JtIiwgWy4uLmUsIGEuZGVmYXVsdCwgbC5kZWZhdWx0LCBkLmRlZmF1bHRdKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInN1YnNjcmliZSIsIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDI2Nzk6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBEYXRhVGltZUZpZWxkQmFzZSBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IHRoaXMuZ2V0RmllbGRzU2VsZWN0b3IoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VOYXRpdmU6ICJlbGVtZW50b3ItdXNlLW5hdGl2ZSIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogZQogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldERlZmF1bHRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZHM6IHRoaXMuJGVsZW1lbnQuZmluZChlLmZpZWxkcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGRQaWNrZXIoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogdAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldERlZmF1bHRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeShlKS5oYXNDbGFzcyh0LnVzZU5hdGl2ZSkgfHwgZS5mbGF0cGlja3IodGhpcy5nZXRQaWNrZXJPcHRpb25zKGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLCB0aGlzLmVsZW1lbnRzLiRmaWVsZHMuZWFjaCgoKGUsIHQpID0+IHRoaXMuYWRkUGlja2VyKHQpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBEYXRhVGltZUZpZWxkQmFzZQogICAgICAgIH0sCiAgICAgICAgNzg0OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygyNjc5KSk7CiAgICAgICAgICAgIGNsYXNzIERhdGVGaWVsZCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXRGaWVsZHNTZWxlY3RvcigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIi5lbGVtZW50b3ItZGF0ZS1maWVsZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFBpY2tlck9wdGlvbnMoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBqUXVlcnkoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWluRGF0ZTogdC5hdHRyKCJtaW4iKSB8fCBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhEYXRlOiB0LmF0dHIoIm1heCIpIHx8IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93SW5wdXQ6ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IERhdGVGaWVsZAogICAgICAgIH0sCiAgICAgICAgNTM0NzogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMjY3OSkpOwogICAgICAgICAgICBjbGFzcyBUaW1lRmllbGQgZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgZ2V0RmllbGRzU2VsZWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIuZWxlbWVudG9yLXRpbWUtZmllbGQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRQaWNrZXJPcHRpb25zKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vQ2FsZW5kYXI6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUaW1lOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dJbnB1dDogITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gVGltZUZpZWxkCiAgICAgICAgfSwKICAgICAgICA2NTI5OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIHMgPSBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5nczogKCkgPT4gKHsKICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybTogIi5lbGVtZW50b3ItZm9ybSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuJGZvcm0gPSB0aGlzLiRlbGVtZW50LmZpbmQoZS5mb3JtKSwgdAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kZm9ybS5vbigiZm9ybV9kZXN0cnVjdCIsIHRoaXMuaGFuZGxlU3VibWl0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhbmRsZVN1Ym1pdChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSB0LmRhdGEucmVkaXJlY3RfdXJsICYmIChsb2NhdGlvbi5ocmVmID0gdC5kYXRhLnJlZGlyZWN0X3VybCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IHMKICAgICAgICB9LAogICAgICAgIDEzOTM6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgcyA9IGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZS5leHRlbmQoewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzOiAoKSA9PiAoewogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICBmb3JtOiAiLmVsZW1lbnRvci1mb3JtIiwKICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0QnV0dG9uOiAnW3R5cGU9InN1Ym1pdCJdJwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAiZWxlbWVudG9yX3Byb19mb3Jtc19zZW5kX2Zvcm0iLAogICAgICAgICAgICAgICAgICAgIGFqYXhVcmw6IGVsZW1lbnRvclByb0Zyb250ZW5kLmNvbmZpZy5hamF4dXJsCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC4kZm9ybSA9IHRoaXMuJGVsZW1lbnQuZmluZChlLmZvcm0pLCB0LiRzdWJtaXRCdXR0b24gPSB0LiRmb3JtLmZpbmQoZS5zdWJtaXRCdXR0b24pLCB0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRmb3JtLm9uKCJzdWJtaXQiLCB0aGlzLmhhbmRsZVN1Ym1pdCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudHMuJGZvcm0uZmluZCgiaW5wdXRbdHlwZT1maWxlXSIpOwogICAgICAgICAgICAgICAgICAgIGUubGVuZ3RoICYmIGUub24oImNoYW5nZSIsIHRoaXMudmFsaWRhdGVGaWxlU2l6ZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB2YWxpZGF0ZUZpbGVTaXplKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0galF1ZXJ5KGUuY3VycmVudFRhcmdldCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0WzBdLmZpbGVzOwogICAgICAgICAgICAgICAgICAgIGlmICghcy5sZW5ndGgpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gMTAyNCAqIHBhcnNlSW50KHQuYXR0cigiZGF0YS1tYXhzaXplIikpICogMTAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuYXR0cigiZGF0YS1tYXhzaXplLW1lc3NhZ2UiKTsKICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChzKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgbiA8IGUuc2l6ZSAmJiAodC5wYXJlbnQoKS5hZGRDbGFzcygiZWxlbWVudG9yLWVycm9yIikuYXBwZW5kKCc8c3BhbiBjbGFzcz0iZWxlbWVudG9yLW1lc3NhZ2UgZWxlbWVudG9yLW1lc3NhZ2UtZGFuZ2VyIGVsZW1lbnRvci1oZWxwLWlubGluZSBlbGVtZW50b3ItZm9ybS1oZWxwLWlubGluZSIgcm9sZT0iYWxlcnQiPicgKyBpICsgIjwvc3Bhbj4iKS5maW5kKCI6aW5wdXQiKS5hdHRyKCJhcmlhLWludmFsaWQiLCAidHJ1ZSIpLCB0aGlzLmVsZW1lbnRzLiRmb3JtLnRyaWdnZXIoImVycm9yIikpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmVmb3JlU2VuZCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5lbGVtZW50cy4kZm9ybTsKICAgICAgICAgICAgICAgICAgICBlLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAiMC40NSIKICAgICAgICAgICAgICAgICAgICB9LCA1MDApLmFkZENsYXNzKCJlbGVtZW50b3ItZm9ybS13YWl0aW5nIiksIGUuZmluZCgiLmVsZW1lbnRvci1tZXNzYWdlIikucmVtb3ZlKCksIGUuZmluZCgiLmVsZW1lbnRvci1lcnJvciIpLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItZXJyb3IiKSwgZS5maW5kKCJkaXYuZWxlbWVudG9yLWZpZWxkLWdyb3VwIikucmVtb3ZlQ2xhc3MoImVycm9yIikuZmluZCgic3Bhbi5lbGVtZW50b3ItZm9ybS1oZWxwLWlubGluZSIpLnJlbW92ZSgpLmVuZCgpLmZpbmQoIjppbnB1dCIpLmF0dHIoImFyaWEtaW52YWxpZCIsICJmYWxzZSIpLCB0aGlzLmVsZW1lbnRzLiRzdWJtaXRCdXR0b24uYXR0cigiZGlzYWJsZWQiLCAiZGlzYWJsZWQiKS5maW5kKCI+IHNwYW4iKS5wcmVwZW5kKCc8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWJ1dHRvbi10ZXh0IGVsZW1lbnRvci1mb3JtLXNwaW5uZXIiPjxpIGNsYXNzPSJmYSBmYS1zcGlubmVyIGZhLXNwaW4iPjwvaT4mbmJzcDs8L3NwYW4+JykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRGb3JtRGF0YSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gbmV3IEZvcm1EYXRhKHRoaXMuZWxlbWVudHMuJGZvcm1bMF0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmFwcGVuZCgiYWN0aW9uIiwgdGhpcy5nZXRTZXR0aW5ncygiYWN0aW9uIikpLCBlLmFwcGVuZCgicmVmZXJyZXIiLCBsb2NhdGlvbi50b1N0cmluZygpKSwgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9uU3VjY2VzcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZWxlbWVudHMuJGZvcm07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kc3VibWl0QnV0dG9uLnJlbW92ZUF0dHIoImRpc2FibGVkIikuZmluZCgiLmVsZW1lbnRvci1mb3JtLXNwaW5uZXIiKS5yZW1vdmUoKSwgdC5hbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogIjEiCiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKS5yZW1vdmVDbGFzcygiZWxlbWVudG9yLWZvcm0td2FpdGluZyIpLCBlLnN1Y2Nlc3MgPyAodC50cmlnZ2VyKCJzdWJtaXRfc3VjY2VzcyIsIGUuZGF0YSksIHQudHJpZ2dlcigiZm9ybV9kZXN0cnVjdCIsIGUuZGF0YSksIHQudHJpZ2dlcigicmVzZXQiKSwgdm9pZCAwICE9PSBlLmRhdGEubWVzc2FnZSAmJiAiIiAhPT0gZS5kYXRhLm1lc3NhZ2UgJiYgdC5hcHBlbmQoJzxkaXYgY2xhc3M9ImVsZW1lbnRvci1tZXNzYWdlIGVsZW1lbnRvci1tZXNzYWdlLXN1Y2Nlc3MiIHJvbGU9ImFsZXJ0Ij4nICsgZS5kYXRhLm1lc3NhZ2UgKyAiPC9kaXY+IikpIDogKGUuZGF0YS5lcnJvcnMgJiYgKGpRdWVyeS5lYWNoKGUuZGF0YS5lcnJvcnMsIChmdW5jdGlvbihlLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZmluZCgiI2Zvcm0tZmllbGQtIiArIGUpLnBhcmVudCgpLmFkZENsYXNzKCJlbGVtZW50b3ItZXJyb3IiKS5hcHBlbmQoJzxzcGFuIGNsYXNzPSJlbGVtZW50b3ItbWVzc2FnZSBlbGVtZW50b3ItbWVzc2FnZS1kYW5nZXIgZWxlbWVudG9yLWhlbHAtaW5saW5lIGVsZW1lbnRvci1mb3JtLWhlbHAtaW5saW5lIiByb2xlPSJhbGVydCI+JyArIHMgKyAiPC9zcGFuPiIpLmZpbmQoIjppbnB1dCIpLmF0dHIoImFyaWEtaW52YWxpZCIsICJ0cnVlIikKICAgICAgICAgICAgICAgICAgICB9KSksIHQudHJpZ2dlcigiZXJyb3IiKSksIHQuYXBwZW5kKCc8ZGl2IGNsYXNzPSJlbGVtZW50b3ItbWVzc2FnZSBlbGVtZW50b3ItbWVzc2FnZS1kYW5nZXIiIHJvbGU9ImFsZXJ0Ij4nICsgZS5kYXRhLm1lc3NhZ2UgKyAiPC9kaXY+IikpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25FcnJvcihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuZWxlbWVudHMuJGZvcm07CiAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoJzxkaXYgY2xhc3M9ImVsZW1lbnRvci1tZXNzYWdlIGVsZW1lbnRvci1tZXNzYWdlLWRhbmdlciIgcm9sZT0iYWxlcnQiPicgKyB0ICsgIjwvZGl2PiIpLCB0aGlzLmVsZW1lbnRzLiRzdWJtaXRCdXR0b24uaHRtbCh0aGlzLmVsZW1lbnRzLiRzdWJtaXRCdXR0b24udGV4dCgpKS5yZW1vdmVBdHRyKCJkaXNhYmxlZCIpLCBzLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAiMSIKICAgICAgICAgICAgICAgICAgICB9LCAxMDApLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItZm9ybS13YWl0aW5nIiksIHMudHJpZ2dlcigiZXJyb3IiKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhbmRsZVN1Ym1pdChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmVsZW1lbnRzLiRmb3JtOwogICAgICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KCksIHMuaGFzQ2xhc3MoImVsZW1lbnRvci1mb3JtLXdhaXRpbmciKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlU2VuZCgpLCBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdC5nZXRTZXR0aW5ncygiYWpheFVybCIpLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHQuZ2V0Rm9ybURhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGE6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHQub25TdWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogdC5vbkVycm9yCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IHMKICAgICAgICB9LAogICAgICAgIDg1MDM6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBGb3JtU3RlcHMgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybTogIi5lbGVtZW50b3ItZm9ybSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNXcmFwcGVyOiAiLmVsZW1lbnRvci1mb3JtLWZpZWxkcy13cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkR3JvdXA6ICIuZWxlbWVudG9yLWZpZWxkLWdyb3VwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBXcmFwcGVyOiAiLmVsZW1lbnRvci1maWVsZC10eXBlLXN0ZXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcEZpZWxkOiAiLmUtZmllbGQtc3RlcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRXcmFwcGVyOiAiLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRCdXR0b246ICdbdHlwZT0ic3VibWl0Il0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogIi5lLWZvcm1fX2J1dHRvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uV3JhcHBlcjogIi5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiAiLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRvcjogIi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3JQcm9ncmVzczogIi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fcHJvZ3Jlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yUHJvZ3Jlc3NNZXRlcjogIi5lLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fcHJvZ3Jlc3NfX21ldGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1IZWxwSW5saW5lOiAiLmVsZW1lbnRvci1mb3JtLWhlbHAtaW5saW5lIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW46ICJlbGVtZW50b3ItaGlkZGVuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogImVsZW1lbnRvci1jb2x1bW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRHcm91cDogImVsZW1lbnRvci1maWVsZC1ncm91cCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JCdXR0b246ICJlbGVtZW50b3ItYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA6ICJlLWZvcm1fX3N0ZXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogImUtZm9ybV9fYnV0dG9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25XcmFwcGVyOiAiZS1mb3JtX19idXR0b25zX193cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogImUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRvcnM6ICJlLWZvcm1fX2luZGljYXRvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yOiAiZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9ySWNvbjogImUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yX19pY29uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRvck51bWJlcjogImUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yX19udW1iZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yTGFiZWw6ICJlLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fbGFiZWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yUHJvZ3Jlc3M6ICJlLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvcl9fcHJvZ3Jlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yUHJvZ3Jlc3NNZXRlcjogImUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yX19wcm9ncmVzc19fbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yU2VwYXJhdG9yOiAiZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3JfX3NlcGFyYXRvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3JJbmFjdGl2ZTogImUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yLS1zdGF0ZS1pbmFjdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3JBY3RpdmU6ICJlLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc3RhdGUtYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRvckNvbXBsZXRlZDogImUtZm9ybV9faW5kaWNhdG9yc19faW5kaWNhdG9yLS1zdGF0ZS1jb21wbGV0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yU2hhcGVDaXJjbGU6ICJlLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc2hhcGUtY2lyY2xlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRvclNoYXBlU3F1YXJlOiAiZS1mb3JtX19pbmRpY2F0b3JzX19pbmRpY2F0b3ItLXNoYXBlLXNxdWFyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3JTaGFwZVJvdW5kZWQ6ICJlLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc2hhcGUtcm91bmRlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3JTaGFwZU5vbmU6ICJlLWZvcm1fX2luZGljYXRvcnNfX2luZGljYXRvci0tc2hhcGUtbm9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogZQogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCksIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3JtOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5mb3JtKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuJGZpZWxkc1dyYXBwZXIgPSB0LiRmb3JtLmNoaWxkcmVuKGUuZmllbGRzV3JhcHBlciksIHQuJHN0ZXBXcmFwcGVyID0gdC4kZmllbGRzV3JhcHBlci5jaGlsZHJlbihlLnN0ZXBXcmFwcGVyKSwgdC4kc3RlcEZpZWxkID0gdC4kc3RlcFdyYXBwZXIuY2hpbGRyZW4oZS5zdGVwRmllbGQpLCB0LiRmaWVsZEdyb3VwID0gdC4kZmllbGRzV3JhcHBlci5jaGlsZHJlbihlLmZpZWxkR3JvdXApLCB0LiRzdWJtaXRXcmFwcGVyID0gdC4kZmllbGRzV3JhcHBlci5jaGlsZHJlbihlLnN1Ym1pdFdyYXBwZXIpLCB0LiRzdWJtaXRCdXR0b24gPSB0LiRzdWJtaXRXcmFwcGVyLmNoaWxkcmVuKGUuc3VibWl0QnV0dG9uKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLCB0aGlzLmlzU3RlcHNFeGlzdCgpICYmICh0aGlzLmRhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yc1dpdGhPYmplY3RUYWdzOiBbXQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuc3RhdGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBzdGVwc1R5cGU6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBzdGVwc1NoYXBlOiAiIgogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuYnVpbGRTdGVwcygpLCB0aGlzLmVsZW1lbnRzID0geyAuLi50aGlzLmVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNyZWF0ZVN0ZXBzSW5kaWNhdG9ycygpLAogICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNyZWF0ZVN0ZXBzQnV0dG9ucygpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5pbml0UHJvZ3Jlc3NCYXIoKSwgdGhpcy5leHRyYWN0UmVzcG9uc2l2ZVNpemVGcm9tU3VibWl0V3JhcHBlcigpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3RlcHNFeGlzdCgpICYmIHRoaXMuZWxlbWVudHMuJGZvcm0ub24oewogICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXQ6ICgpID0+IHRoaXMucmVzZXRGb3JtKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGtleWRvd246IGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMgIT09IGUua2V5Q29kZSB8fCB0aGlzLmlzTGFzdFN0ZXAoKSB8fCAidGV4dGFyZWEiID09PSBlLnRhcmdldC5sb2NhbE5hbWUgfHwgKGUucHJldmVudERlZmF1bHQoKSwgdGhpcy5hcHBseVN0ZXAoIm5leHQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMub25Gb3JtRXJyb3IoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc1N0ZXBzRXhpc3QoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudHMuJHN0ZXBXcmFwcGVyLmxlbmd0aAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5pdFByb2dyZXNzQmFyKCkgewogICAgICAgICAgICAgICAgICAgICJwcm9ncmVzc19iYXIiID09PSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLnN0ZXBfdHlwZSAmJiB0aGlzLnNldFByb2dyZXNzQmFyKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJ1aWxkU3RlcHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kc3RlcFdyYXBwZXIuZWFjaCgoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogbgogICAgICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpLCBpID0galF1ZXJ5KHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpLmFkZENsYXNzKG4uc3RlcCkucmVtb3ZlQ2xhc3Mobi5maWVsZEdyb3VwLCBuLmNvbHVtbiksIGUgJiYgaS5hZGRDbGFzcyhuLmhpZGRlbiksIHRoaXMuc2V0U3RlcERhdGEoaS5jaGlsZHJlbihzLnN0ZXBGaWVsZCkpLCBpLmFwcGVuZChpLm5leHRVbnRpbCh0aGlzLmVsZW1lbnRzLiRzdGVwV3JhcHBlcikubm90KHRoaXMuZWxlbWVudHMuJHN1Ym1pdFdyYXBwZXIpKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0U3RlcERhdGEoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICBbImxhYmVsIiwgInByZXZpb3VzQnV0dG9uIiwgIm5leHRCdXR0b24iLCAiaWNvblVybCIsICJpY29uTGlicmFyeSIsICJpY29uIl0uZm9yRWFjaCgocyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlLmF0dHIoImRhdGEtIiArIHMpOwogICAgICAgICAgICAgICAgICAgICAgICBuICYmICh0W3NdID0gbikKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZGF0YS5zdGVwcy5wdXNoKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjcmVhdGVTdGVwc0luZGljYXRvcnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoIm5vbmUiICE9PSBlLnN0ZXBfdHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCksIGkgPSBuLmluZGljYXRvcnMgKyAiLS10eXBlLSIgKyBlLnN0ZXBfdHlwZSwgbyA9IFtuLmluZGljYXRvcnMsIGldOwogICAgICAgICAgICAgICAgICAgICAgICB0LiRpbmRpY2F0b3JzV3JhcHBlciA9IGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogby5qb2luKCIgIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuJGluZGljYXRvcnNXcmFwcGVyLmFwcGVuZCh0aGlzLmJ1aWxkSW5kaWNhdG9ycygpKSwgdGhpcy5lbGVtZW50cy4kZmllbGRzV3JhcHBlci5iZWZvcmUodC4kaW5kaWNhdG9yc1dyYXBwZXIpLCAicHJvZ3Jlc3NfYmFyIiA9PT0gZS5zdGVwX3R5cGUgPyAodC4kcHJvZ3Jlc3NCYXIgPSB0LiRpbmRpY2F0b3JzV3JhcHBlci5maW5kKHMuaW5kaWNhdG9yUHJvZ3Jlc3MpLCB0LiRwcm9ncmVzc0Jhck1ldGVyID0gdC4kaW5kaWNhdG9yc1dyYXBwZXIuZmluZChzLmluZGljYXRvclByb2dyZXNzTWV0ZXIpKSA6ICh0LiRpbmRpY2F0b3JzID0gdC4kaW5kaWNhdG9yc1dyYXBwZXIuZmluZChzLmluZGljYXRvciksIHQuJGN1cnJlbnRJbmRpY2F0b3IgPSB0LiRpbmRpY2F0b3JzLmVxKHRoaXMuc3RhdGUuY3VycmVudFN0ZXApKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlSW5kaWNhdG9yc1N0YXRlKCksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJ1aWxkSW5kaWNhdG9ycygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInByb2dyZXNzX2JhciIgPT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCkuc3RlcF90eXBlID8gdGhpcy5idWlsZFByb2dyZXNzQmFyKCkgOiB0aGlzLmJ1aWxkSW5kaWNhdG9yc0Zyb21TdGVwc0RhdGEoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnVpbGRQcm9ncmVzc0JhcigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IGUKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpLCB0ID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGUuaW5kaWNhdG9yUHJvZ3Jlc3MKICAgICAgICAgICAgICAgICAgICB9KSwgcyA9IGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLmluZGljYXRvclByb2dyZXNzTWV0ZXIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5hcHBlbmQocyksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFByb2dyZXNzQmFyVmFsdWUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZGF0YS5zdGVwcy5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLnN0YXRlLmN1cnJlbnRTdGVwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdCA/ICh0ICsgMSkgLyBlICogMTAwIDogMTAwIC8gZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihzKSArICIlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0UHJvZ3Jlc3NCYXIoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0UHJvZ3Jlc3NCYXJWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3NNZXRlckNTU1ZhcmlhYmxlKGUpLCB0aGlzLmVsZW1lbnRzLiRwcm9ncmVzc0Jhck1ldGVyLnRleHQoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZVByb2dyZXNzTWV0ZXJDU1NWYXJpYWJsZShlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudFswXS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1lLWZvcm0tc3RlcHMtaW5kaWNhdG9yLXByb2dyZXNzLW1ldGVyLXdpZHRoIiwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNhdmVJbmRpY2F0b3JzU3RhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zdGVwc1R5cGUgPSBlLnN0ZXBfdHlwZSwgWyJub25lIiwgInRleHQiLCAicHJvZ3Jlc3NfYmFyIl0uaW5jbHVkZXMoZS5zdGVwX3R5cGUpIHx8ICh0aGlzLnN0YXRlLnN0ZXBzU2hhcGUgPSBlLnN0ZXBfaWNvbl9zaGFwZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJ1aWxkSW5kaWNhdG9yc0Zyb21TdGVwc0RhdGEoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGEuc3RlcHMuZm9yRWFjaCgoKHQsIHMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgcyAmJiBlLnB1c2godGhpcy5nZXRTdGVwU2VwYXJhdG9yKCkpLCBlLnB1c2godGhpcy5nZXRTdGVwSW5kaWNhdG9yRWxlbWVudCh0LCBzKSkKICAgICAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFN0ZXBJbmRpY2F0b3JFbGVtZW50KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHMKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpLCBuID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwgaSA9IHRoaXMuZ2V0SW5kaWNhdG9yU3RhdGVDbGFzcyh0KSwgbyA9IFtzLmluZGljYXRvciwgaV0sIHIgPSBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogby5qb2luKCIgIikKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdGVwX3R5cGUuaW5jbHVkZXMoImljb24iKSAmJiByLmFwcGVuZCh0aGlzLmdldFN0ZXBJY29uRWxlbWVudChlKSksIG4uc3RlcF90eXBlLmluY2x1ZGVzKCJudW1iZXIiKSAmJiByLmFwcGVuZCh0aGlzLmdldFN0ZXBOdW1iZXJFbGVtZW50KHQpKSwgbi5zdGVwX3R5cGUuaW5jbHVkZXMoInRleHQiKSAmJiByLmFwcGVuZCh0aGlzLmdldFN0ZXBMYWJlbEVsZW1lbnQoZS5sYWJlbCkpLCByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRJbmRpY2F0b3JTdGF0ZUNsYXNzKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHQKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIDwgdGhpcy5zdGF0ZS5jdXJyZW50U3RlcCA/IHQuaW5kaWNhdG9yQ29tcGxldGVkIDogZSA+IHRoaXMuc3RhdGUuY3VycmVudFN0ZXAgPyB0LmluZGljYXRvckluYWN0aXZlIDogdC5pbmRpY2F0b3JBY3RpdmUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEluZGljYXRvclNoYXBlQ2xhc3MoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFsiaW5kaWNhdG9yU2hhcGUiICsgdGhpcy5maXJzdExldHRlclRvVXBwZXJjYXNlKGUuc3RlcF9pY29uX3NoYXBlKV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZpcnN0TGV0dGVyVG9VcHBlcmNhc2UoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZS5zbGljZSgxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3RlcE51bWJlckVsZW1lbnQoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogdAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCksIHMgPSBbdC5pbmRpY2F0b3JOdW1iZXIsIHRoaXMuZ2V0SW5kaWNhdG9yU2hhcGVDbGFzcygpXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHMuam9pbigiICIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlICsgMQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdGVwSWNvbkVsZW1lbnQoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogdAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCksIHMgPSBbdC5pbmRpY2F0b3JJY29uLCB0aGlzLmdldEluZGljYXRvclNoYXBlQ2xhc3MoKV0sIG4gPSBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogcy5qb2luKCIgIikKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5pY29uKSBuLmh0bWwoZS5pY29uKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuaWNvbkxpYnJhcnkgPyB0ID0galF1ZXJ5KCI8aT4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZS5pY29uTGlicmFyeQogICAgICAgICAgICAgICAgICAgICAgICB9KSA6ICh0ID0galF1ZXJ5KGA8b2JqZWN0IHR5cGU9ImltYWdlL3N2Zyt4bWwiIGRhdGE9IiR7ZS5pY29uVXJsfSI+PC9vYmplY3Q+YCksIHQub24oImxvYWQiLCAoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3ZnIikuc3R5bGUuZmlsbCA9IHQuY3NzKCJmaWxsIikKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmRhdGEuaW5kaWNhdG9yc1dpdGhPYmplY3RUYWdzLnB1c2godCkpLCBuLmFwcGVuZCh0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3RlcExhYmVsRWxlbWVudChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5KCI8bGFiZWw+IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogdC5pbmRpY2F0b3JMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdGVwU2VwYXJhdG9yKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogZQogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLmluZGljYXRvclNlcGFyYXRvcgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjcmVhdGVTdGVwc0J1dHRvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IGUKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpLCB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0QnV0dG9uc1RvU3RlcHModCksIHQuJGJ1dHRvbnNDb250YWluZXIgPSB0aGlzLmVsZW1lbnRzLiRzdGVwV3JhcHBlci5maW5kKGUuYnV0dG9ucyksIHQuJGJ1dHRvbnNXcmFwcGVycyA9IHQuJGJ1dHRvbnNDb250YWluZXIuY2hpbGRyZW4oZS5idXR0b25XcmFwcGVyKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5qZWN0QnV0dG9uc1RvU3RlcHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudHMuJHN0ZXBXcmFwcGVyLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzdGVwV3JhcHBlci5lYWNoKCgodCwgcykgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0galF1ZXJ5KHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZ2V0QnV0dG9uc0NvbnRhaW5lcigpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgbzsKICAgICAgICAgICAgICAgICAgICAgICAgdCA/IChpLmFwcGVuZCh0aGlzLmdldFN0ZXBCdXR0b24oInByZXZpb3VzIiwgdCkpLCBvID0gdCA9PT0gZSAtIDEgPyB0aGlzLmdldFN1Ym1pdEJ1dHRvbigpIDogdGhpcy5nZXRTdGVwQnV0dG9uKCJuZXh0IiwgdCkpIDogbyA9IHRoaXMuZ2V0U3RlcEJ1dHRvbigibmV4dCIsIHQpLCBpLmFwcGVuZChvKSwgbi5hcHBlbmQoaSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEJ1dHRvbnNDb250YWluZXIoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiBlCiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwgdCA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksIHMgPSBbZS5idXR0b25zLCBlLmNvbHVtbiwgImVsZW1lbnRvci1jb2wtIiArIHQuYnV0dG9uX3dpZHRoXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHMuam9pbigiICIpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGV4dHJhY3RSZXNwb25zaXZlU2l6ZUZyb21TdWJtaXRXcmFwcGVyKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gW107CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kc3VibWl0V3JhcHBlci5yZW1vdmVDbGFzcygoKHQsIHMpID0+IChlID0gcy5tYXRjaCgvZWxlbWVudG9yLShzbXxtZCktWzAtOV0rL2cpID8gLmpvaW4oIiAiKSwgZSkpKSwgdGhpcy5lbGVtZW50cy4kYnV0dG9uc0NvbnRhaW5lci5hZGRDbGFzcyhlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3RlcEJ1dHRvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiBzCiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwgbiA9IHRoaXMuZ2V0QnV0dG9uKGUsIHQpLm9uKCJjbGljayIsICgoKSA9PiB0aGlzLmFwcGx5U3RlcChlKSkpLCBpID0gW3MuZmllbGRHcm91cCwgcy5idXR0b25XcmFwcGVyLCAiZWxlbWVudG9yLWZpZWxkLXR5cGUtIiArIGVdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogaS5qb2luKCIgIikKICAgICAgICAgICAgICAgICAgICB9KS5hcHBlbmQobikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFN1Ym1pdEJ1dHRvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IGUKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzLiRzdWJtaXRCdXR0b24uYWRkQ2xhc3MoZS5idXR0b24pLCB0aGlzLmVsZW1lbnRzLiRzdWJtaXRXcmFwcGVyLmF0dHIoImNsYXNzIiwgKChlLCB0KSA9PiB0aGlzLnJlcGxhY2VDbGFzc05hbWVDb2xTaXplKHQsICIiKSkpLnJlbW92ZUNsYXNzKGUuY29sdW1uKS5yZW1vdmVDbGFzcyhlLmJ1dHRvbnMpLmFkZENsYXNzKGUuYnV0dG9uV3JhcHBlcikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlcGxhY2VDbGFzc05hbWVDb2xTaXplKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZXBsYWNlKC9lbGVtZW50b3ItY29sLShbMC05XSspL2csIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRCdXR0b24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogcwogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCksIG4gPSB0aGlzLmVsZW1lbnRzLiRzdWJtaXRCdXR0b24uYXR0cigiY2xhc3MiKS5tYXRjaCgvZWxlbWVudG9yLXNpemUtKFteXFdcZF0rKS9nKSwgaSA9IFtzLmVsZW1lbnRvckJ1dHRvbiwgbiwgcy5idXR0b24sIHMuYnV0dG9uICsgIi0iICsgZV07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSgiPGJ1dHRvbj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJidXR0b24iLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmdldEJ1dHRvbkxhYmVsKGUsIHQpLAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogaS5qb2luKCIgIikKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QnV0dG9uTGFiZWwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gYHN0ZXBfJHtlfV9sYWJlbGA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5zdGVwc1t0XVtlICsgIkJ1dHRvbiJdIHx8IHNbbl0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFwcGx5U3RlcChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9ICJuZXh0IiA9PT0gZSA/IHRoaXMuc3RhdGUuY3VycmVudFN0ZXAgKyAxIDogdGhpcy5zdGF0ZS5jdXJyZW50U3RlcCAtIDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJuZXh0IiA9PT0gZSAmJiAhdGhpcy5pc0ZpZWxkc1ZhbGlkKHRoaXMuZWxlbWVudHMuJHN0ZXBXcmFwcGVyKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub1N0ZXAodCksIHRoaXMuc3RhdGUuY3VycmVudFN0ZXAgPSB0LCAicHJvZ3Jlc3NfYmFyIiA9PT0gdGhpcy5zdGF0ZS5zdGVwc1R5cGUgPyB0aGlzLnNldFByb2dyZXNzQmFyKCkgOiAibm9uZSIgIT09IHRoaXMuc3RhdGUuc3RlcHNUeXBlICYmIHRoaXMudXBkYXRlSW5kaWNhdG9yc1N0YXRlKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnb1RvU3RlcChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzdGVwV3JhcHBlci5lcSh0aGlzLnN0YXRlLmN1cnJlbnRTdGVwKS5hZGRDbGFzcyh0LmhpZGRlbiksIHRoaXMuZWxlbWVudHMuJHN0ZXBXcmFwcGVyLmVxKGUpLnJlbW92ZUNsYXNzKHQuaGlkZGVuKS5jaGlsZHJlbih0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMuZmllbGRHcm91cCIpKS5maXJzdCgpLmZpbmQoIjppbnB1dCIpLmZpcnN0KCkudHJpZ2dlcigiZm9jdXMiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNGaWVsZHNWYWxpZChlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSAhMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5lcSh0aGlzLnN0YXRlLmN1cnJlbnRTdGVwKS5maW5kKCIuZWxlbWVudG9yLWZpZWxkLWdyb3VwIDppbnB1dCIpLmVhY2goKChlLCBzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcy5jaGVja1ZhbGlkaXR5KCkpIHJldHVybiBzLnJlcG9ydFZhbGlkaXR5KCksIHQgPSAhMQogICAgICAgICAgICAgICAgICAgIH0pKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNMYXN0U3RlcCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50U3RlcCA9PT0gdGhpcy5kYXRhLnN0ZXBzLmxlbmd0aCAtIDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlc2V0Rm9ybSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRTdGVwID0gMCwgdGhpcy5yZXNldFN0ZXBzKCksICJwcm9ncmVzc19iYXIiID09PSB0aGlzLnN0YXRlLnN0ZXBzVHlwZSA/IHRoaXMuc2V0UHJvZ3Jlc3NCYXIoKSA6ICJub25lIiAhPT0gdGhpcy5zdGF0ZS5zdGVwc1R5cGUgJiYgKHRoaXMuZWxlbWVudHMuJGN1cnJlbnRJbmRpY2F0b3IgPSB0aGlzLmVsZW1lbnRzLiRpbmRpY2F0b3JzLmVxKHRoaXMuc3RhdGUuY3VycmVudFN0ZXApLCB0aGlzLnJlc2V0SW5kaWNhdG9ycygpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVzZXRTdGVwcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IGUKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHN0ZXBXcmFwcGVyLmFkZENsYXNzKGUuaGlkZGVuKS5lcSgwKS5yZW1vdmVDbGFzcyhlLmhpZGRlbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlc2V0SW5kaWNhdG9ycygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IGUKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpLCB0ID0gWyJpbmFjdGl2ZSIsICJhY3RpdmUiLCAiY29tcGxldGVkIl0ubWFwKCh0ID0+IGUuaW5kaWNhdG9yICsgIi0tc3RhdGUtIiArIHQpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRpbmRpY2F0b3JzLnJlbW92ZUNsYXNzKHQuam9pbigiICIpKS5ub3QodGhpcy5lbGVtZW50cy4kaW5kaWNhdG9ycy5lcSgwKSkuYWRkQ2xhc3MoZS5pbmRpY2F0b3JJbmFjdGl2ZSksIHRoaXMuZWxlbWVudHMuJGluZGljYXRvcnMuZXEoMCkuYWRkQ2xhc3MoZS5pbmRpY2F0b3JBY3RpdmUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVJbmRpY2F0b3JzU3RhdGUoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogdAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCksIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZTogdC5pbmRpY2F0b3JBY3RpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQ6ICJuZXh0IiA9PT0gZSA/IHQuaW5kaWNhdG9yQ29tcGxldGVkIDogdC5pbmRpY2F0b3JJbmFjdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmU6ICJuZXh0IiA9PT0gZSA/IHQuaW5kaWNhdG9ySW5hY3RpdmUgOiB0LmluZGljYXRvckNvbXBsZXRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDogdC5pbmRpY2F0b3JBY3RpdmUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kY3VycmVudEluZGljYXRvci5yZW1vdmVDbGFzcyhzLmN1cnJlbnQucmVtb3ZlKS5hZGRDbGFzcyhzLmN1cnJlbnQuYWRkKSwgdGhpcy5lbGVtZW50cy4kY3VycmVudEluZGljYXRvciA9IHRoaXMuZWxlbWVudHMuJGluZGljYXRvcnMuZXEodGhpcy5zdGF0ZS5jdXJyZW50U3RlcCksIHRoaXMuZWxlbWVudHMuJGN1cnJlbnRJbmRpY2F0b3IucmVtb3ZlQ2xhc3Mocy5uZXh0LnJlbW92ZSkuYWRkQ2xhc3Mocy5uZXh0LmFkZCksIHRoaXMuZGF0YS5pbmRpY2F0b3JzV2l0aE9iamVjdFRhZ3MuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY29udGVudHMoKS5jaGlsZHJlbigic3ZnIikuY3NzKCJmaWxsIiwgZS5jc3MoImZpbGwiKSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZVZhbHVlKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBzdGVwX3R5cGU6ICgpID0+IHRoaXMudXBkYXRlU3RlcHNUeXBlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBfaWNvbl9zaGFwZTogKCkgPT4gdGhpcy51cGRhdGVTdGVwc1NoYXBlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBfbmV4dF9sYWJlbDogKCkgPT4gdGhpcy51cGRhdGVTdGVwQnV0dG9uc0xhYmVsKCJuZXh0IiksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBfcHJldmlvdXNfbGFiZWw6ICgpID0+IHRoaXMudXBkYXRlU3RlcEJ1dHRvbnNMYWJlbCgicHJldmlvdXMiKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgdFtlXSAmJiB0W2VdKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZVN0ZXBzVHlwZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRpbmRpY2F0b3JzV3JhcHBlciAmJiB0aGlzLmVsZW1lbnRzLiRpbmRpY2F0b3JzV3JhcHBlci5yZW1vdmUoKSwgIm5vbmUiICE9PSBlLnN0ZXBfdHlwZSAmJiB0aGlzLnJlYnVpbGRJbmRpY2F0b3JzKCksIHRoaXMuc3RhdGUuc3RlcHNUeXBlID0gZS5zdGVwX3R5cGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlYnVpbGRJbmRpY2F0b3JzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMgPSB7IC4uLnRoaXMuZWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY3JlYXRlU3RlcHNJbmRpY2F0b3JzKCkKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmluaXRQcm9ncmVzc0JhcigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVTdGVwc1NoYXBlKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzLmluZGljYXRvciArICItLXNoYXBlLSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuICsgdGhpcy5zdGF0ZS5zdGVwc1NoYXBlLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gbiArIGUuc3RlcF9pY29uX3NoYXBlOwogICAgICAgICAgICAgICAgICAgIGxldCByID0gIiI7CiAgICAgICAgICAgICAgICAgICAgZS5zdGVwX3R5cGUuaW5jbHVkZXMoImljb24iKSA/IHIgPSAiaWNvbiIgOiBlLnN0ZXBfdHlwZS5pbmNsdWRlcygibnVtYmVyIikgJiYgKHIgPSAibnVtYmVyIiksIHRoaXMuZWxlbWVudHMuJGluZGljYXRvcnMuY2hpbGRyZW4odC5pbmRpY2F0b3IgKyAiX18iICsgcikucmVtb3ZlQ2xhc3MoaSkuYWRkQ2xhc3MobyksIHRoaXMuc3RhdGUuc3RlcHNTaGFwZSA9IGUuc3RlcF9pY29uX3NoYXBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVTdGVwQnV0dG9uc0xhYmVsKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogdAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCksIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzOiB0LmJ1dHRvbiArICItcHJldmlvdXMiLAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiB0LmJ1dHRvbiArICItbmV4dCIKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHN0ZXBXcmFwcGVyLmVhY2goKCh0LCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShuKS5maW5kKHNbZV0pLnRleHQodGhpcy5nZXRCdXR0b25MYWJlbChlLCB0KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRm9ybUVycm9yKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiBlCiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwgdCA9IHRoaXMuZWxlbWVudHMuJGZvcm0uZmluZChlLmZvcm1IZWxwSW5saW5lKS5jbG9zZXN0KGUuc3RlcFdyYXBwZXIpOwogICAgICAgICAgICAgICAgICAgIHQubGVuZ3RoICYmIHRoaXMuZ29Ub1N0ZXAodC5pbmRleCgpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3RlcHNFeGlzdCgpICYmIHRoaXMudXBkYXRlVmFsdWUoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBGb3JtU3RlcHMKICAgICAgICB9LAogICAgICAgIDIxMDg6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBSZWNhcHRjaGEgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjYXB0Y2hhOiAiLmVsZW1lbnRvci1nLXJlY2FwdGNoYTpsYXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pdDogJ2J1dHRvblt0eXBlPSJzdWJtaXQiXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNhcHRjaGFSZXNwb25zZTogJ1tuYW1lPSJnLXJlY2FwdGNoYS1yZXNwb25zZSJdJwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiBlCiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0RGVmYXVsdFNldHRpbmdzKCksIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZWNhcHRjaGE6IHRoaXMuJGVsZW1lbnQuZmluZChlLnJlY2FwdGNoYSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LiRmb3JtID0gdC4kcmVjYXB0Y2hhLnBhcmVudHMoImZvcm0iKSwgdC4kc3VibWl0ID0gdC4kZm9ybS5maW5kKGUuc3VibWl0KSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUmVjYXB0Y2hhQXBpUmVhZHkoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNBY3RpdmUoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0RGVmYXVsdFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuJGVsZW1lbnQuZmluZCh0LnJlY2FwdGNoYSkubGVuZ3RoCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGRSZWNhcHRjaGEoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudHMuJHJlY2FwdGNoYS5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAidjMiICE9PSBlLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBzLmZvckVhY2goKGUgPT4gd2luZG93LmdyZWNhcHRjaGEucmVzZXQoZSkpKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gd2luZG93LmdyZWNhcHRjaGEucmVuZGVyKHRoaXMuZWxlbWVudHMuJHJlY2FwdGNoYVswXSwgZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kZm9ybS5vbigicmVzZXQgZXJyb3IiLCAoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZ3JlY2FwdGNoYS5yZXNldChuKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdCA/IHRoaXMuZWxlbWVudHMuJHJlY2FwdGNoYS5kYXRhKCJ3aWRnZXRJZCIsIG4pIDogKHMucHVzaChuKSwgdGhpcy5lbGVtZW50cy4kc3VibWl0Lm9uKCJjbGljayIsIChlID0+IHRoaXMub25WM0Zvcm1TdWJtaXQoZSwgbikpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uVjNGb3JtU3VibWl0KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHdpbmRvdy5ncmVjYXB0Y2hhLnJlYWR5KCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmVsZW1lbnRzLiRmb3JtOwogICAgICAgICAgICAgICAgICAgICAgICBncmVjYXB0Y2hhLmV4ZWN1dGUodCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiB0aGlzLmVsZW1lbnRzLiRyZWNhcHRjaGEuZGF0YSgiYWN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbigodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRyZWNhcHRjaGFSZXNwb25zZSA/IHRoaXMuZWxlbWVudHMuJHJlY2FwdGNoYVJlc3BvbnNlLnZhbCh0KSA6ICh0aGlzLmVsZW1lbnRzLiRyZWNhcHRjaGFSZXNwb25zZSA9IGpRdWVyeSgiPGlucHV0PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiaGlkZGVuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZy1yZWNhcHRjaGEtcmVzcG9uc2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgZS5hcHBlbmQodGhpcy5lbGVtZW50cy4kcmVjYXB0Y2hhUmVzcG9uc2UpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICghZVswXS5yZXBvcnRWYWxpZGl0eSB8fCAiZnVuY3Rpb24iICE9IHR5cGVvZiBlWzBdLnJlcG9ydFZhbGlkaXR5IHx8IGVbMF0ucmVwb3J0VmFsaWRpdHkoKSkgJiYgZS50cmlnZ2VyKCJzdWJtaXQiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uUmVjYXB0Y2hhQXBpUmVhZHkoKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmdyZWNhcHRjaGEgJiYgd2luZG93LmdyZWNhcHRjaGEucmVuZGVyID8gdGhpcy5hZGRSZWNhcHRjaGEoKSA6IHNldFRpbWVvdXQoKCgpID0+IHRoaXMub25SZWNhcHRjaGFBcGlSZWFkeSgpKSwgMzUwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IFJlY2FwdGNoYQogICAgICAgIH0sCiAgICAgICAgOTA4NjogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMjIxOSkpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKCksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hdHRhY2hIYW5kbGVyKCJnYWxsZXJ5IiwgaS5kZWZhdWx0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICAyMjE5OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgZ2FsbGVyeUhhbmRsZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiAiLmVsZW1lbnRvci1nYWxsZXJ5X19jb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FsbGVyeVRpdGxlczogIi5lbGVtZW50b3ItZ2FsbGVyeS10aXRsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYWxsZXJ5SW1hZ2VzOiAiLmUtZ2FsbGVyeS1pbWFnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYWxsZXJ5SXRlbU92ZXJsYXk6ICIuZWxlbWVudG9yLWdhbGxlcnktaXRlbV9fb3ZlcmxheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYWxsZXJ5SXRlbUNvbnRlbnQ6ICIuZWxlbWVudG9yLWdhbGxlcnktaXRlbV9fY29udGVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGl0bGU6ICJlbGVtZW50b3ItaXRlbS1hY3RpdmUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IGUKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXRTZXR0aW5ncygpLCB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5jb250YWluZXIpLAogICAgICAgICAgICAgICAgICAgICAgICAkdGl0bGVzOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5nYWxsZXJ5VGl0bGVzKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuJGl0ZW1zID0gdC4kY29udGFpbmVyLmNoaWxkcmVuKCksIHQuJGltYWdlcyA9IHQuJGl0ZW1zLmNoaWxkcmVuKGUuZ2FsbGVyeUltYWdlcyksIHQuJGl0ZW1zT3ZlcmxheSA9IHQuJGl0ZW1zLmNoaWxkcmVuKGUuZ2FsbGVyeUl0ZW1PdmVybGF5KSwgdC4kaXRlbXNDb250ZW50ID0gdC4kaXRlbXMuY2hpbGRyZW4oZS5nYWxsZXJ5SXRlbUNvbnRlbnQpLCB0LiRpdGVtc0NvbnRlbnRFbGVtZW50cyA9IHQuJGl0ZW1zQ29udGVudC5jaGlsZHJlbigpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRHYWxsZXJ5U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE9iamVjdC5rZXlzKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlbGVtZW50b3JGcm9udGVuZC5nZXREZXZpY2VTZXR0aW5nKCJkZXNrdG9wIiwgZSwgImlkZWFsX3Jvd19oZWlnaHQiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5mb3JFYWNoKChzID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ3aWRlc2NyZWVuIiAhPT0gcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IGVsZW1lbnRvckZyb250ZW5kLmdldERldmljZVNldHRpbmcocywgZSwgImlkZWFsX3Jvd19oZWlnaHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bdFtzXS52YWx1ZV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbEdhcDogZWxlbWVudG9yRnJvbnRlbmQuZ2V0RGV2aWNlU2V0dGluZyhzLCBlLCAiZ2FwIikuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbEdhcDogZWxlbWVudG9yRnJvbnRlbmQuZ2V0RGV2aWNlU2V0dGluZyhzLCBlLCAiZ2FwIikuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBlbGVtZW50b3JGcm9udGVuZC5nZXREZXZpY2VTZXR0aW5nKHMsIGUsICJjb2x1bW5zIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWxSb3dIZWlnaHQ6IGkgPyAuc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUuZ2FsbGVyeV9sYXlvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsUm93SGVpZ2h0OiBpID8gLnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5lbGVtZW50cy4kY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBlLmNvbHVtbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGFzcGVjdFJhdGlvOiBlLmFzcGVjdF9yYXRpbywKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFJvdzogIm5vcm1hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxHYXA6IGVsZW1lbnRvckZyb250ZW5kLmdldERldmljZVNldHRpbmcoImRlc2t0b3AiLCBlLCAiZ2FwIikuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxHYXA6IGVsZW1lbnRvckZyb250ZW5kLmdldERldmljZVNldHRpbmcoImRlc2t0b3AiLCBlLCAiZ2FwIikuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGUuY29udGVudF9hbmltYXRpb25fZHVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBydGw6IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19ydGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhenlMb2FkOiAieWVzIiA9PT0gZS5sYXp5bG9hZAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRHYWxsZXJ5KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FsbGVyeSA9IG5ldyBFR2FsbGVyeSh0aGlzLmdldEdhbGxlcnlTZXR0aW5ncygpKSwgdGhpcy50b2dnbGVBbGxBbmltYXRpb25zQ2xhc3NlcygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZW1vdmVBbmltYXRpb25DbGFzc2VzKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUNsYXNzKCgoZSwgdCkgPT4gKHQubWF0Y2goL2VsZW1lbnRvci1hbmltYXRlZC1pdGVtLVxTKy9nKSB8fCBbXSkuam9pbigiICIpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRvZ2dsZU92ZXJsYXlIb3ZlckFuaW1hdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUFuaW1hdGlvbkNsYXNzZXModGhpcy5lbGVtZW50cy4kaXRlbXNPdmVybGF5KTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImJhY2tncm91bmRfb3ZlcmxheV9ob3Zlcl9hbmltYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICBlICYmIHRoaXMuZWxlbWVudHMuJGl0ZW1zT3ZlcmxheS5hZGRDbGFzcygiZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLSIgKyBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdG9nZ2xlT3ZlcmxheUNvbnRlbnRBbmltYXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVBbmltYXRpb25DbGFzc2VzKHRoaXMuZWxlbWVudHMuJGl0ZW1zQ29udGVudEVsZW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImNvbnRlbnRfaG92ZXJfYW5pbWF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgZSAmJiB0aGlzLmVsZW1lbnRzLiRpdGVtc0NvbnRlbnRFbGVtZW50cy5hZGRDbGFzcygiZWxlbWVudG9yLWFuaW1hdGVkLWl0ZW0tLSIgKyBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdG9nZ2xlT3ZlcmxheUNvbnRlbnRTZXF1ZW5jZWRBbmltYXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kaXRlbXNDb250ZW50LnRvZ2dsZUNsYXNzKCJlbGVtZW50b3ItZ2FsbGVyeS0tc2VxdWVuY2VkLWFuaW1hdGlvbiIsICJ5ZXMiID09PSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiY29udGVudF9zZXF1ZW5jZWRfYW5pbWF0aW9uIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0b2dnbGVJbWFnZUhvdmVyQW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiaW1hZ2VfaG92ZXJfYW5pbWF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVBbmltYXRpb25DbGFzc2VzKHRoaXMuZWxlbWVudHMuJGltYWdlcyksIGUgJiYgdGhpcy5lbGVtZW50cy4kaW1hZ2VzLmFkZENsYXNzKCJlbGVtZW50b3ItYW5pbWF0ZWQtaXRlbS0tIiArIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0b2dnbGVBbGxBbmltYXRpb25zQ2xhc3NlcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGUuYmFja2dyb3VuZF9vdmVybGF5X2hvdmVyX2FuaW1hdGlvbiB8fCBlLmNvbnRlbnRfaG92ZXJfYW5pbWF0aW9uIHx8IGUuaW1hZ2VfaG92ZXJfYW5pbWF0aW9uOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGl0ZW1zLnRvZ2dsZUNsYXNzKCJlbGVtZW50b3ItYW5pbWF0ZWQtY29udGVudCIsICEhdCksIHRoaXMudG9nZ2xlSW1hZ2VIb3ZlckFuaW1hdGlvbigpLCB0aGlzLnRvZ2dsZU92ZXJsYXlIb3ZlckFuaW1hdGlvbigpLCB0aGlzLnRvZ2dsZU92ZXJsYXlDb250ZW50QW5pbWF0aW9uKCksIHRoaXMudG9nZ2xlT3ZlcmxheUNvbnRlbnRTZXF1ZW5jZWRBbmltYXRpb24oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdG9nZ2xlQW5pbWF0aW9uQ2xhc3NlcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgImNvbnRlbnRfc2VxdWVuY2VkX2FuaW1hdGlvbiIgPT09IGUgJiYgdGhpcy50b2dnbGVPdmVybGF5Q29udGVudFNlcXVlbmNlZEFuaW1hdGlvbigpLCAiYmFja2dyb3VuZF9vdmVybGF5X2hvdmVyX2FuaW1hdGlvbiIgPT09IGUgJiYgdGhpcy50b2dnbGVPdmVybGF5SG92ZXJBbmltYXRpb24oKSwgImNvbnRlbnRfaG92ZXJfYW5pbWF0aW9uIiA9PT0gZSAmJiB0aGlzLnRvZ2dsZU92ZXJsYXlDb250ZW50QW5pbWF0aW9uKCksICJpbWFnZV9ob3Zlcl9hbmltYXRpb24iID09PSBlICYmIHRoaXMudG9nZ2xlSW1hZ2VIb3ZlckFuaW1hdGlvbigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRHYWxsZXJ5VGFncyhlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nYWxsZXJ5LnNldFNldHRpbmdzKCJ0YWdzIiwgImFsbCIgPT09IGUgPyBbXSA6IFsiIiArIGVdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiR0aXRsZXMub24oImNsaWNrIiwgdGhpcy5nYWxsZXJpZXNOYXZpZ2F0aW9uTGlzdGVuZXIuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdhbGxlcmllc05hdmlnYXRpb25MaXN0ZW5lcihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGpRdWVyeShlLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kdGl0bGVzLnJlbW92ZUNsYXNzKHQuYWN0aXZlVGl0bGUpLCBzLmFkZENsYXNzKHQuYWN0aXZlVGl0bGUpLCB0aGlzLnNldEdhbGxlcnlUYWdzKHMuZGF0YSgiZ2FsbGVyeS1pbmRleCIpKTsKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgoKSA9PiB0aGlzLnNldExpZ2h0Ym94R2FsbGVyeUluZGV4KHMuZGF0YSgiZ2FsbGVyeS1pbmRleCIpKSksIDFlMykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldExpZ2h0Ym94R2FsbGVyeUluZGV4KCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAiYWxsIjsKICAgICAgICAgICAgICAgICAgICBpZiAoImFsbCIgPT09IGUpIHJldHVybiB0aGlzLmVsZW1lbnRzLiRpdGVtcy5hdHRyKCJkYXRhLWVsZW1lbnRvci1saWdodGJveC1zbGlkZXNob3ciLCAiYWxsXyIgKyB0aGlzLmdldElEKCkpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGl0ZW1zLm5vdCgiLmUtZ2FsbGVyeS1pdGVtLS1oaWRkZW4iKS5hdHRyKCJkYXRhLWVsZW1lbnRvci1saWdodGJveC1zbGlkZXNob3ciLCBlICsgIl8iICsgdGhpcy5nZXRJRCgpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLCBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgMSA8PSB0aGlzLiRlbGVtZW50LmZpbmQoIi5lbGVtZW50b3Itd2lkZ2V0LWVtcHR5LWljb24iKS5sZW5ndGggJiYgdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiZWxlbWVudG9yLXdpZGdldC1lbXB0eSIpLCB0aGlzLmVsZW1lbnRzLiRjb250YWluZXIubGVuZ3RoICYmICh0aGlzLmluaXRHYWxsZXJ5KCksIHRoaXMuZWxlbWVudHMuJHRpdGxlcy5maXJzdCgpLnRyaWdnZXIoImNsaWNrIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTZXR0aW5nc0RpY3Rpb25hcnkoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3NEaWN0aW9uYXJ5KSByZXR1cm4gdGhpcy5zZXR0aW5nc0RpY3Rpb25hcnk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5yZXNwb25zaXZlLmFjdGl2ZUJyZWFrcG9pbnRzLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gT2JqZWN0LmtleXMoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBbImNvbHVtbnMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogWyJob3Jpem9udGFsR2FwIiwgInZlcnRpY2FsR2FwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbF9yb3dfaGVpZ2h0OiBbImlkZWFsUm93SGVpZ2h0Il0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgIndpZGVzY3JlZW4iICE9PSB0ICYmIChzWyJjb2x1bW5zXyIgKyB0XSA9IFsiYnJlYWtwb2ludHMuIiArIGVbdF0udmFsdWUgKyAiLmNvbHVtbnMiXSwgc1siZ2FwXyIgKyB0XSA9IFsiYnJlYWtwb2ludHMuIiArIGVbdF0udmFsdWUgKyAiLmhvcml6b250YWxHYXAiLCAiYnJlYWtwb2ludHMuIiArIGVbdF0udmFsdWUgKyAiLnZlcnRpY2FsR2FwIl0sIHNbImlkZWFsX3Jvd19oZWlnaHRfIiArIHRdID0gWyJicmVha3BvaW50cy4iICsgZVt0XS52YWx1ZSArICIuaWRlYWxSb3dIZWlnaHQiXSkKICAgICAgICAgICAgICAgICAgICB9KSksIHMuYXNwZWN0X3JhdGlvID0gWyJhc3BlY3RSYXRpbyJdLCB0aGlzLnNldHRpbmdzRGljdGlvbmFyeSA9IHMsIHRoaXMuc2V0dGluZ3NEaWN0aW9uYXJ5CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgICAgIGlmICgtMSAhPT0gWyJiYWNrZ3JvdW5kX292ZXJsYXlfaG92ZXJfYW5pbWF0aW9uIiwgImNvbnRlbnRfaG92ZXJfYW5pbWF0aW9uIiwgImltYWdlX2hvdmVyX2FuaW1hdGlvbiIsICJjb250ZW50X3NlcXVlbmNlZF9hbmltYXRpb24iXS5pbmRleE9mKGUpKSByZXR1cm4gdm9pZCB0aGlzLnRvZ2dsZUFuaW1hdGlvbkNsYXNzZXMoZSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3NEaWN0aW9uYXJ5KClbZV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0R2FsbGVyeVNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdhbGxlcnkuc2V0U2V0dGluZ3ModCwgdGhpcy5nZXRJdGVtcyhlLCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25EZXN0cm95KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uRGVzdHJveSgpLCB0aGlzLmdhbGxlcnkgJiYgdGhpcy5nYWxsZXJ5LmRlc3Ryb3koKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IGdhbGxlcnlIYW5kbGVyCiAgICAgICAgfSwKICAgICAgICAxNTU5OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygxMDE2KSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoImhvdHNwb3QiLCBpLmRlZmF1bHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDEwMTY6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBIb3RzcG90IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlIHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdHNwb3Q6ICIuZS1ob3RzcG90IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICIuZS1ob3RzcG90X190b29sdGlwIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkaG90c3BvdDogdGhpcy4kZWxlbWVudC5maW5kKGUuaG90c3BvdCksCiAgICAgICAgICAgICAgICAgICAgICAgICRob3RzcG90c0V4Y2x1ZGVzTGlua3M6IHRoaXMuJGVsZW1lbnQuZmluZChlLmhvdHNwb3QpLmZpbHRlcigiOm5vdCguZS1ob3RzcG90LS1uby10b29sdGlwKSIpLAogICAgICAgICAgICAgICAgICAgICAgICAkdG9vbHRpcDogdGhpcy4kZWxlbWVudC5maW5kKGUudG9vbHRpcCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKCJ0b29sdGlwX3RyaWdnZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICJtb3VzZWVudGVyIiA9PT0gZSA/ICJtb3VzZWxlYXZlIG1vdXNlZW50ZXIiIDogZTsKICAgICAgICAgICAgICAgICAgICAibm9uZSIgIT09IHQgJiYgdGhpcy5lbGVtZW50cy4kaG90c3BvdHNFeGNsdWRlc0xpbmtzLm9uKHQsIChlID0+IHRoaXMub25Ib3RzcG90VHJpZ2dlckV2ZW50KGUpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRGV2aWNlTW9kZUNoYW5nZSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRob3RzcG90c0V4Y2x1ZGVzTGlua3Mub2ZmKCksIHRoaXMuYmluZEV2ZW50cygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkhvdHNwb3RUcmlnZ2VyRXZlbnQoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBqUXVlcnkoZS50YXJnZXQpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5jbG9zZXN0KCIuZS1ob3RzcG90X19idXR0b24iKS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAibW91c2VsZWF2ZSIgPT09IGUudHlwZSAmJiAodC5pcygiLmUtaG90c3BvdC0tdG9vbHRpcC1wb3NpdGlvbiIpIHx8IHQucGFyZW50cygiLmUtaG90c3BvdC0tdG9vbHRpcC1wb3NpdGlvbiIpLmxlbmd0aCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAibW9iaWxlIiA9PT0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoISh0LmNsb3Nlc3QoIi5lLWhvdHNwb3QtLWxpbmsiKS5sZW5ndGggJiYgaSAmJiAoIm1vdXNlbGVhdmUiID09PSBlLnR5cGUgfHwgIm1vdXNlZW50ZXIiID09PSBlLnR5cGUpKSAmJiAocyB8fCBuKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0galF1ZXJ5KGUuY3VycmVudFRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGhvdHNwb3Qubm90KHQpLnJlbW92ZUNsYXNzKCJlLWhvdHNwb3QtLWFjdGl2ZSIpLCB0LnRvZ2dsZUNsYXNzKCJlLWhvdHNwb3QtLWFjdGl2ZSIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWRpdG9yQWRkU2VxdWVuY2VkQW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGhvdHNwb3QudG9nZ2xlQ2xhc3MoImUtaG90c3BvdC0tc2VxdWVuY2VkIiwgInllcyIgPT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJob3RzcG90X3NlcXVlbmNlZF9hbmltYXRpb24iKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhvdHNwb3RTZXF1ZW5jZWRBbmltYXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJubyIgPT09IGUuaG90c3BvdF9zZXF1ZW5jZWRfYW5pbWF0aW9uKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVsZW1lbnRvck1vZHVsZXMudXRpbHMuU2Nyb2xsLnNjcm9sbE9ic2VydmVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IHMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5pc0luVmlld3BvcnQgJiYgKHQudW5vYnNlcnZlKHRoaXMuJGVsZW1lbnRbMF0pLCB0aGlzLmVsZW1lbnRzLiRob3RzcG90LmVhY2goKCh0LCBzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZS5ob3RzcG90X3NlcXVlbmNlZF9hbmltYXRpb25fZHVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0ICogKChuID8gbi5zaXplIDogMWUzKSAvIHRoaXMuZWxlbWVudHMuJGhvdHNwb3QubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnN0eWxlLmFuaW1hdGlvbkRlbGF5ID0gaSArICJtcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHQub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0VG9vbHRpcFBvc2l0aW9uQ29udHJvbCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUudG9vbHRpcF9hbmltYXRpb24gJiYgZS50b29sdGlwX2FuaW1hdGlvbi5tYXRjaCgvXmUtaG90c3BvdC0tKHNsaWRlfGZhZGUpLWRpcmVjdGlvbi8pICYmICh0aGlzLmVsZW1lbnRzLiR0b29sdGlwLnJlbW92ZUNsYXNzKCJlLWhvdHNwb3QtLXRvb2x0aXAtYW5pbWF0aW9uLWZyb20tbGVmdCBlLWhvdHNwb3QtLXRvb2x0aXAtYW5pbWF0aW9uLWZyb20tdG9wIGUtaG90c3BvdC0tdG9vbHRpcC1hbmltYXRpb24tZnJvbS1yaWdodCBlLWhvdHNwb3QtLXRvb2x0aXAtYW5pbWF0aW9uLWZyb20tYm90dG9tIiksIHRoaXMuZWxlbWVudHMuJHRvb2x0aXAuYWRkQ2xhc3MoImUtaG90c3BvdC0tdG9vbHRpcC1hbmltYXRpb24tZnJvbS0iICsgZS50b29sdGlwX3Bvc2l0aW9uKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoLi4uYXJndW1lbnRzKSwgdGhpcy5ob3RzcG90U2VxdWVuY2VkQW5pbWF0aW9uKCksIHRoaXMuc2V0VG9vbHRpcFBvc2l0aW9uQ29udHJvbCgpLCB3aW5kb3cuZWxlbWVudG9yICYmIGVsZW1lbnRvci5saXN0ZW5UbyhlbGVtZW50b3IuY2hhbm5lbHMuZGV2aWNlTW9kZSwgImNoYW5nZSIsICgoKSA9PiB0aGlzLm9uRGV2aWNlTW9kZUNoYW5nZSgpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5zdGFydHNXaXRoKCJ0b29sdGlwX3Bvc2l0aW9uIikgJiYgdGhpcy5zZXRUb29sdGlwUG9zaXRpb25Db250cm9sKCksIGUuc3RhcnRzV2l0aCgiaG90c3BvdF9zZXF1ZW5jZWRfYW5pbWF0aW9uIikgJiYgdGhpcy5lZGl0b3JBZGRTZXF1ZW5jZWRBbmltYXRpb24oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEhvdHNwb3QKICAgICAgICB9LAogICAgICAgIDk5Mzc6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDE0NjQpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigibG90dGllIiwgaS5kZWZhdWx0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICAxNDY0OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgbG90dGllSGFuZGxlciBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICIuZS1sb3R0aWVfX2NvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJMaW5rOiAiLmUtbG90dGllX19jb250YWluZXJfX2xpbmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAiLmUtbG90dGllX19hbmltYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbjogIi5lLWxvdHRpZV9fY2FwdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbjogImUtbG90dGllX19jYXB0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiBlCiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkd2lkZ2V0V3JhcHBlcjogdGhpcy4kZWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcjogdGhpcy4kZWxlbWVudC5maW5kKGUuY29udGFpbmVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lckxpbms6IHRoaXMuJGVsZW1lbnQuZmluZChlLmNvbnRhaW5lckxpbmspLAogICAgICAgICAgICAgICAgICAgICAgICAkYW5pbWF0aW9uOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5hbmltYXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAkY2FwdGlvbjogdGhpcy4kZWxlbWVudC5maW5kKGUuY2FwdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWN0aW9uUGFyZW50OiB0aGlzLiRlbGVtZW50LmNsb3Nlc3QoIi5lbGVtZW50b3Itc2VjdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAkY29sdW1uUGFyZW50OiB0aGlzLiRlbGVtZW50LmNsb3Nlc3QoIi5lbGVtZW50b3ItY29sdW1uIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksIHRoaXMubG90dGllID0gbnVsbCwgdGhpcy5zdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNBbmltYXRpb25TY3JvbGxVcGRhdGVOZWVkZWRPbkZpcnN0TG9hZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzTmV3TG9vcEN5Y2xlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNJblZpZXdwb3J0OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9vcDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbkRpcmVjdGlvbjogImZvcndhcmQiLAogICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QW5pbWF0aW9uVHJpZ2dlcjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdHNSZWxhdGl2ZVRvOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJPdXRNb2RlOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJBcmVhOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlBbmltYXRpb25Db3VudDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uU3BlZWQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUaW1lb3V0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydE9mZnNldDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDEwMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGxhenlsb2FkOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ID0gewogICAgICAgICAgICAgICAgICAgICAgICB0aW1lcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNjcm9sbFk6IDAKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmxpc3RlbmVycyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2lkZ2V0QXJlYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJBbmltYXRpb25Ib3ZlckluOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJBbmltYXRpb25Ib3Zlck91dDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQW5pbWF0aW9uQ2xpY2s6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuaW5pdExvdHRpZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbml0TG90dGllKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG90dGllU2V0dGluZ3MoKS5sYXp5bG9hZCA/IHRoaXMubGF6eWxvYWRMb3R0aWUoKSA6IHRoaXMuZ2VuZXJhdGVMb3R0aWUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbGF6eWxvYWRMb3R0aWUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMubGF6eWxvYWQub2JzZXJ2ZXIgPSBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLlNjcm9sbC5zY3JvbGxPYnNlcnZlcih7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogIjBweCAwcHggMjAwcHgiLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmlzSW5WaWV3cG9ydCAmJiAodGhpcy5nZW5lcmF0ZUxvdHRpZSgpLCB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycy5sYXp5bG9hZC5vYnNlcnZlci51bm9ic2VydmUodGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMubGF6eWxvYWQuZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMubGF6eWxvYWQuZWxlbWVudCA9IHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lclswXSwgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMubGF6eWxvYWQub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycy5sYXp5bG9hZC5lbGVtZW50KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2VuZXJhdGVMb3R0aWUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVMb3R0aWVJbnN0YW5jZSgpLCB0aGlzLnNldExvdHRpZUV2ZW50cygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjcmVhdGVMb3R0aWVJbnN0YW5jZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMubG90dGllID0gYm9keW1vdmluLmxvYWRBbmltYXRpb24oewogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHRoaXMuZWxlbWVudHMuJGFuaW1hdGlvblswXSwKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogdGhpcy5nZXRBbmltYXRpb25QYXRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyOiBlLnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb3R0aWUtd2lkZ2V0IgogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmVsZW1lbnRzLiRhbmltYXRpb24uZGF0YSgibG90dGllIiwgdGhpcy5sb3R0aWUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRBbmltYXRpb25QYXRoKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldExvdHRpZVNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc291cmNlX2pzb24gPyAudXJsICYmICJqc29uIiA9PT0gZS5zb3VyY2VfanNvbi51cmwudG9Mb3dlckNhc2UoKS5zdWJzdHIoLTQpID8gZS5zb3VyY2VfanNvbi51cmwgOiBlLnNvdXJjZV9leHRlcm5hbF91cmwgPyAudXJsID8gZS5zb3VyY2VfZXh0ZXJuYWxfdXJsLnVybCA6IGVsZW1lbnRvclByb0Zyb250ZW5kLmNvbmZpZy5sb3R0aWUuZGVmYXVsdEFuaW1hdGlvblVybAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0Q2FwdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGlmICgiZXh0ZXJuYWxfdXJsIiA9PT0gZS5zb3VyY2UgfHwgIm1lZGlhX2ZpbGUiID09PSBlLnNvdXJjZSAmJiAiY3VzdG9tIiA9PT0gZS5jYXB0aW9uX3NvdXJjZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENhcHRpb25FbGVtZW50KCkudGV4dChlLmNhcHRpb24pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0Q2FwdGlvbkVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRzLiRjYXB0aW9uLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzLiRjYXB0aW9uID0galF1ZXJ5KCI8cD4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZS5jYXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmVsZW1lbnRzLiRjb250YWluZXIuYXBwZW5kKHRoaXMuZWxlbWVudHMuJGNhcHRpb24pLCB0aGlzLmVsZW1lbnRzLiRjYXB0aW9uCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzLiRjYXB0aW9uCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRMb3R0aWVFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb3R0aWUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTG9hZGVkIiwgKCgpID0+IHRoaXMub25Mb3R0aWVEb21Mb2FkZWQoKSkpLCB0aGlzLmxvdHRpZS5hZGRFdmVudExpc3RlbmVyKCJjb21wbGV0ZSIsICgoKSA9PiB0aGlzLm9uQ29tcGxldGUoKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzYXZlSW5pdGlhbFZhbHVlcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMubG90dGllLl9faW5pdGlhbFRvdGFsRnJhbWVzID0gdGhpcy5sb3R0aWUudG90YWxGcmFtZXMsIHRoaXMubG90dGllLl9faW5pdGlhbEZpcnN0RnJhbWUgPSB0aGlzLmxvdHRpZS5maXJzdEZyYW1lLCB0aGlzLnN0YXRlLmN1cnJlbnRBbmltYXRpb25UcmlnZ2VyID0gZS50cmlnZ2VyLCB0aGlzLnN0YXRlLmVmZmVjdHNSZWxhdGl2ZVRvID0gZS5lZmZlY3RzX3JlbGF0aXZlX3RvLCB0aGlzLnN0YXRlLnZpZXdwb3J0T2Zmc2V0LnN0YXJ0ID0gZS52aWV3cG9ydCA/IGUudmlld3BvcnQuc2l6ZXMuc3RhcnQgOiAwLCB0aGlzLnN0YXRlLnZpZXdwb3J0T2Zmc2V0LmVuZCA9IGUudmlld3BvcnQgPyBlLnZpZXdwb3J0LnNpemVzLmVuZCA6IDEwMCwgdGhpcy5zdGF0ZS5hbmltYXRpb25TcGVlZCA9IGUucGxheV9zcGVlZCA/IC5zaXplLCB0aGlzLnN0YXRlLmxpbmtUaW1lb3V0ID0gZS5saW5rX3RpbWVvdXQsIHRoaXMuc3RhdGUuY2FwdGlvbiA9IGUuY2FwdGlvbiwgdGhpcy5zdGF0ZS5sb29wID0gZS5sb29wCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRBbmltYXRpb25GaXJzdEZyYW1lKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEFuaW1hdGlvbkZyYW1lcygpOwogICAgICAgICAgICAgICAgICAgIGUuZmlyc3QgPSBlLmZpcnN0IC0gdGhpcy5sb3R0aWUuX19pbml0aWFsRmlyc3RGcmFtZSwgdGhpcy5sb3R0aWUuZ29Ub0FuZFN0b3AoZS5maXJzdCwgITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbml0QW5pbWF0aW9uVHJpZ2dlcigpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZ2V0TG90dGllU2V0dGluZ3MoKS50cmlnZ2VyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm5vbmUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5TG90dGllKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYXJyaXZpbmdfdG9fdmlld3BvcnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5QW5pbWF0aW9uV2hlbkFycml2aW5nVG9WaWV3cG9ydCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJpbmRfdG9fc2Nyb2xsIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheUFuaW1hdGlvbldoZW5CaW5kVG9TY3JvbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJvbl9jbGljayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRBbmltYXRpb25DbGlja0V2ZW50cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9uX2hvdmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZEFuaW1hdGlvbkhvdmVyRXZlbnRzKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwbGF5QW5pbWF0aW9uV2hlbkFycml2aW5nVG9WaWV3cG9ydCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycy5hbmltYXRpb24ub2JzZXJ2ZXIgPSBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLlNjcm9sbC5zY3JvbGxPYnNlcnZlcih7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogYCR7ZS5lbmR9JSAwJSAke2Uuc3RhcnR9JWAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaXNJblZpZXdwb3J0ID8gKHRoaXMuc3RhdGUuaXNJblZpZXdwb3J0ID0gITAsIHRoaXMucGxheUxvdHRpZSgpKSA6ICh0aGlzLnN0YXRlLmlzSW5WaWV3cG9ydCA9ICExLCB0aGlzLmxvdHRpZS5wYXVzZSgpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzLmFuaW1hdGlvbi5lbGVtZW50ID0gdGhpcy5lbGVtZW50cy4kd2lkZ2V0V3JhcHBlclswXSwgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMuYW5pbWF0aW9uLm9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMuYW5pbWF0aW9uLmVsZW1lbnQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRPZmZzZXQoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0TG90dGllU2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogLWUudmlld3BvcnQuc2l6ZXMuc3RhcnQgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiAtKDEwMCAtIGUudmlld3BvcnQuc2l6ZXMuZW5kKSB8fCAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGxheUFuaW1hdGlvbldoZW5CaW5kVG9TY3JvbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0TG90dGllU2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMuYW5pbWF0aW9uLm9ic2VydmVyID0gZWxlbWVudG9yTW9kdWxlcy51dGlscy5TY3JvbGwuc2Nyb2xsT2JzZXJ2ZXIoewogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGAke3QuZW5kfSUgMCUgJHt0LnN0YXJ0fSVgLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZSA9PiB0aGlzLm9uTG90dGllSW50ZXJzZWN0aW9uKGUpCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzLmFuaW1hdGlvbi5lbGVtZW50ID0gInZpZXdwb3J0IiA9PT0gZS5lZmZlY3RzX3JlbGF0aXZlX3RvID8gdGhpcy5lbGVtZW50cy4kd2lkZ2V0V3JhcHBlclswXSA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMuYW5pbWF0aW9uLm9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnMuYW5pbWF0aW9uLmVsZW1lbnQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVBbmltYXRpb25CeVNjcm9sbFBvc2l0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlOwogICAgICAgICAgICAgICAgICAgIGUgPSAicGFnZSIgPT09IHRoaXMuZ2V0TG90dGllU2V0dGluZ3MoKS5lZmZlY3RzX3JlbGF0aXZlX3RvID8gdGhpcy5nZXRMb3R0aWVQYWdlUGVyY2VudGFnZSgpIDogImZpeGVkIiA9PT0gdGhpcy5nZXRDdXJyZW50RGV2aWNlU2V0dGluZygiX3Bvc2l0aW9uIikgPyB0aGlzLmdldExvdHRpZVZpZXdwb3J0SGVpZ2h0UGVyY2VudGFnZSgpIDogdGhpcy5nZXRMb3R0aWVWaWV3cG9ydFBlcmNlbnRhZ2UoKTsKICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IHRoaXMuZ2V0RnJhbWVOdW1iZXJCeVBlcmNlbnQoZSk7CiAgICAgICAgICAgICAgICAgICAgdCAtPSB0aGlzLmxvdHRpZS5fX2luaXRpYWxGaXJzdEZyYW1lLCB0aGlzLmxvdHRpZS5nb1RvQW5kU3RvcCh0LCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldExvdHRpZVZpZXdwb3J0UGVyY2VudGFnZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yTW9kdWxlcy51dGlscy5TY3JvbGwuZ2V0RWxlbWVudFZpZXdwb3J0UGVyY2VudGFnZSh0aGlzLmVsZW1lbnRzLiR3aWRnZXRXcmFwcGVyLCB0aGlzLmdldE9mZnNldCgpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0TG90dGllUGFnZVBlcmNlbnRhZ2UoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvck1vZHVsZXMudXRpbHMuU2Nyb2xsLmdldFBhZ2VTY3JvbGxQZXJjZW50YWdlKHRoaXMuZ2V0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRMb3R0aWVWaWV3cG9ydEhlaWdodFBlcmNlbnRhZ2UoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvck1vZHVsZXMudXRpbHMuU2Nyb2xsLmdldFBhZ2VTY3JvbGxQZXJjZW50YWdlKHRoaXMuZ2V0T2Zmc2V0KCksIHdpbmRvdy5pbm5lckhlaWdodCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEZyYW1lTnVtYmVyQnlQZXJjZW50KGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRBbmltYXRpb25GcmFtZXMoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgZSkpLCB0LmZpcnN0ICsgKHQubGFzdCAtIHQuZmlyc3QpICogZSAvIDEwMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QW5pbWF0aW9uRnJhbWVzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldExvdHRpZVNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldEFuaW1hdGlvbkN1cnJlbnRGcmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRBbmltYXRpb25SYW5nZSgpLnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5nZXRBbmltYXRpb25SYW5nZSgpLmVuZDsKICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IHRoaXMubG90dGllLl9faW5pdGlhbEZpcnN0RnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwID09PSB0aGlzLmxvdHRpZS5fX2luaXRpYWxGaXJzdEZyYW1lID8gdGhpcy5sb3R0aWUuX19pbml0aWFsVG90YWxGcmFtZXMgOiB0aGlzLmxvdHRpZS5fX2luaXRpYWxGaXJzdEZyYW1lICsgdGhpcy5sb3R0aWUuX19pbml0aWFsVG90YWxGcmFtZXM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgcyA+IGkgJiYgKGkgPSBzKSwgbiAmJiBuIDwgbyAmJiAobyA9IG4pLCB0aGlzLnN0YXRlLmlzTmV3TG9vcEN5Y2xlIHx8ICJiaW5kX3RvX3Njcm9sbCIgPT09IGUudHJpZ2dlciB8fCAoaSA9IHMgJiYgcyA+IHQgPyBzIDogdCksICJiYWNrd2FyZCIgPT09IHRoaXMuc3RhdGUuYW5pbWF0aW9uRGlyZWN0aW9uICYmIHRoaXMuaXNSZXZlcnNlTW9kZSgpICYmIChpID0gdCwgbyA9IHMgJiYgcyA+IHRoaXMubG90dGllLl9faW5pdGlhbEZpcnN0RnJhbWUgPyBzIDogdGhpcy5sb3R0aWUuX19pbml0aWFsRmlyc3RGcmFtZSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Q6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiB0aGlzLmxvdHRpZS5fX2luaXRpYWxUb3RhbEZyYW1lcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEFuaW1hdGlvblJhbmdlKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldExvdHRpZVNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMuZ2V0SW5pdGlhbEZyYW1lTnVtYmVyQnlQZXJjZW50KGUuc3RhcnRfcG9pbnQuc2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogdGhpcy5nZXRJbml0aWFsRnJhbWVOdW1iZXJCeVBlcmNlbnQoZS5lbmRfcG9pbnQuc2l6ZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRJbml0aWFsRnJhbWVOdW1iZXJCeVBlcmNlbnQoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBlKSksIHRoaXMubG90dGllLl9faW5pdGlhbEZpcnN0RnJhbWUgKyAodGhpcy5sb3R0aWUuX19pbml0aWFsVG90YWxGcmFtZXMgLSB0aGlzLmxvdHRpZS5fX2luaXRpYWxGaXJzdEZyYW1lKSAqIGUgLyAxMDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEFuaW1hdGlvbkN1cnJlbnRGcmFtZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdGhpcy5sb3R0aWUuZmlyc3RGcmFtZSA/IHRoaXMubG90dGllLmN1cnJlbnRGcmFtZSA6IHRoaXMubG90dGllLmZpcnN0RnJhbWUgKyB0aGlzLmxvdHRpZS5jdXJyZW50RnJhbWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldExpbmtUaW1lb3V0KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldExvdHRpZVNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgIm9uX2NsaWNrIiA9PT0gZS50cmlnZ2VyICYmIGUuY3VzdG9tX2xpbmsgPyAudXJsICYmIGUubGlua190aW1lb3V0ICYmIHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lckxpbmsub24oImNsaWNrIiwgKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCksIHRoaXMuaXNFZGl0IHx8IHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAib24iID09PSBlLmN1c3RvbV9saW5rLmlzX2V4dGVybmFsID8gIl9ibGFuayIgOiAiX3NlbGYiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oZS5jdXN0b21fbGluay51cmwsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLmxpbmtfdGltZW91dCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRBbmltYXRpb25DbGlja0V2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVycy5lbGVtZW50cy4kY29udGFpbmVyLnRyaWdnZXJBbmltYXRpb25DbGljayA9ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5TG90dGllKCkKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmFkZFNlc3Npb25FdmVudExpc3RlbmVyKHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lciwgImNsaWNrIiwgdGhpcy5saXN0ZW5lcnMuZWxlbWVudHMuJGNvbnRhaW5lci50cmlnZ2VyQW5pbWF0aW9uQ2xpY2spCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRMb3R0aWVTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5lLAogICAgICAgICAgICAgICAgICAgICAgICBsYXp5bG9hZDogInllcyIgPT09IGUubGF6eWxvYWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A6ICJ5ZXMiID09PSBlLmxvb3AKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwbGF5TG90dGllKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEFuaW1hdGlvbkZyYW1lcygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMubG90dGllLnN0b3AoKSwgdGhpcy5sb3R0aWUucGxheVNlZ21lbnRzKFtlLmZpcnN0LCBlLmxhc3RdLCAhMCksIHRoaXMuc3RhdGUuaXNOZXdMb29wQ3ljbGUgPSAhMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEFuaW1hdGlvbkhvdmVyRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQW5pbWF0aW9uSG92ZXJJbkV2ZW50cygpLCB0aGlzLmNyZWF0ZUFuaW1hdGlvbkhvdmVyT3V0RXZlbnRzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNyZWF0ZUFuaW1hdGlvbkhvdmVySW5FdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0TG90dGllU2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0SG92ZXJBcmVhRWxlbWVudCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuaG92ZXJBcmVhID0gZS5ob3Zlcl9hcmVhLCB0aGlzLmxpc3RlbmVycy5lbGVtZW50cy4kd2lkZ2V0QXJlYS50cmlnZ2VyQW5pbWF0aW9uSG92ZXJJbiA9ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5hbmltYXRpb25EaXJlY3Rpb24gPSAiZm9yd2FyZCIsIHRoaXMucGxheUxvdHRpZSgpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5hZGRTZXNzaW9uRXZlbnRMaXN0ZW5lcih0LCAibW91c2VlbnRlciIsIHRoaXMubGlzdGVuZXJzLmVsZW1lbnRzLiR3aWRnZXRBcmVhLnRyaWdnZXJBbmltYXRpb25Ib3ZlckluKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRkU2Vzc2lvbkV2ZW50TGlzdGVuZXIoZSwgdCwgcykgewogICAgICAgICAgICAgICAgICAgIGUub24odCwgcyksIHRoaXMubGlzdGVuZXJzLmNvbGxlY3Rpb24ucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBzCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNyZWF0ZUFuaW1hdGlvbkhvdmVyT3V0RXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldExvdHRpZVNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldEhvdmVyQXJlYUVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAicGF1c2UiICE9PSBlLm9uX2hvdmVyX291dCAmJiAicmV2ZXJzZSIgIT09IGUub25faG92ZXJfb3V0IHx8ICh0aGlzLnN0YXRlLmhvdmVyT3V0TW9kZSA9IGUub25faG92ZXJfb3V0LCB0aGlzLmxpc3RlbmVycy5lbGVtZW50cy4kd2lkZ2V0QXJlYS50cmlnZ2VyQW5pbWF0aW9uSG92ZXJPdXQgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJwYXVzZSIgPT09IGUub25faG92ZXJfb3V0ID8gdGhpcy5sb3R0aWUucGF1c2UoKSA6ICh0aGlzLnN0YXRlLmFuaW1hdGlvbkRpcmVjdGlvbiA9ICJiYWNrd2FyZCIsIHRoaXMucGxheUxvdHRpZSgpKQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuYWRkU2Vzc2lvbkV2ZW50TGlzdGVuZXIodCwgIm1vdXNlbGVhdmUiLCB0aGlzLmxpc3RlbmVycy5lbGVtZW50cy4kd2lkZ2V0QXJlYS50cmlnZ2VyQW5pbWF0aW9uSG92ZXJPdXQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0SG92ZXJBcmVhRWxlbWVudCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAic2VjdGlvbiIgPT09IGUuaG92ZXJfYXJlYSA/IHRoaXMuZWxlbWVudHMuJHNlY3Rpb25QYXJlbnQgOiAiY29sdW1uIiA9PT0gZS5ob3Zlcl9hcmVhID8gdGhpcy5lbGVtZW50cy4kY29sdW1uUGFyZW50IDogdGhpcy5lbGVtZW50cy4kY29udGFpbmVyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRMb29wT25BbmltYXRpb25Db21wbGV0ZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuaXNOZXdMb29wQ3ljbGUgPSAhMCwgZS5sb29wICYmICF0aGlzLmlzUmV2ZXJzZU1vZGUoKSA/IHRoaXMuc2V0TG9vcFdoZW5Ob3RSZXZlcnNlKCkgOiBlLmxvb3AgJiYgdGhpcy5pc1JldmVyc2VNb2RlKCkgPyB0aGlzLnNldFJldmVyc2VBbmltYXRpb25Pbkxvb3AoKSA6ICFlLmxvb3AgJiYgdGhpcy5pc1JldmVyc2VNb2RlKCkgJiYgdGhpcy5zZXRSZXZlcnNlQW5pbWF0aW9uT25TaW5nbGVUcmlnZ2VyKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzUmV2ZXJzZU1vZGUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0TG90dGllU2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInllcyIgPT09IGUucmV2ZXJzZV9hbmltYXRpb24gfHwgInJldmVyc2UiID09PSBlLm9uX2hvdmVyX291dCAmJiAiYmFja3dhcmQiID09PSB0aGlzLnN0YXRlLmFuaW1hdGlvbkRpcmVjdGlvbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0TG9vcFdoZW5Ob3RSZXZlcnNlKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldExvdHRpZVNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgZS5udW1iZXJfb2ZfdGltZXMgPiAwID8gKHRoaXMuc3RhdGUucGxheUFuaW1hdGlvbkNvdW50KyssIHRoaXMuc3RhdGUucGxheUFuaW1hdGlvbkNvdW50IDwgZS5udW1iZXJfb2ZfdGltZXMgPyB0aGlzLnBsYXlMb3R0aWUoKSA6IHRoaXMuc3RhdGUucGxheUFuaW1hdGlvbkNvdW50ID0gMCkgOiB0aGlzLnBsYXlMb3R0aWUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbk9uTG9vcCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgICFlLm51bWJlcl9vZl90aW1lcyB8fCB0aGlzLnN0YXRlLnBsYXlBbmltYXRpb25Db3VudCA8IGUubnVtYmVyX29mX3RpbWVzID8gKHRoaXMuc3RhdGUuYW5pbWF0aW9uRGlyZWN0aW9uID0gImZvcndhcmQiID09PSB0aGlzLnN0YXRlLmFuaW1hdGlvbkRpcmVjdGlvbiA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIsIHRoaXMucGxheUxvdHRpZSgpLCAiYmFja3dhcmQiID09PSB0aGlzLnN0YXRlLmFuaW1hdGlvbkRpcmVjdGlvbiAmJiB0aGlzLnN0YXRlLnBsYXlBbmltYXRpb25Db3VudCsrKSA6ICh0aGlzLnN0YXRlLnBsYXlBbmltYXRpb25Db3VudCA9IDAsIHRoaXMuc3RhdGUuYW5pbWF0aW9uRGlyZWN0aW9uID0gImZvcndhcmQiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbk9uU2luZ2xlVHJpZ2dlcigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnBsYXlBbmltYXRpb25Db3VudCA8IDEgPyAodGhpcy5zdGF0ZS5wbGF5QW5pbWF0aW9uQ291bnQrKywgdGhpcy5zdGF0ZS5hbmltYXRpb25EaXJlY3Rpb24gPSAiYmFja3dhcmQiLCB0aGlzLnBsYXlMb3R0aWUoKSkgOiB0aGlzLnN0YXRlLnBsYXlBbmltYXRpb25Db3VudCA+PSAxICYmICJmb3J3YXJkIiA9PT0gdGhpcy5zdGF0ZS5hbmltYXRpb25EaXJlY3Rpb24gPyAodGhpcy5zdGF0ZS5hbmltYXRpb25EaXJlY3Rpb24gPSAiYmFja3dhcmQiLCB0aGlzLnBsYXlMb3R0aWUoKSkgOiAodGhpcy5zdGF0ZS5wbGF5QW5pbWF0aW9uQ291bnQgPSAwLCB0aGlzLnN0YXRlLmFuaW1hdGlvbkRpcmVjdGlvbiA9ICJmb3J3YXJkIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldEFuaW1hdGlvblNwZWVkKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldExvdHRpZVNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wbGF5X3NwZWVkICYmIHRoaXMubG90dGllLnNldFNwZWVkKGUucGxheV9zcGVlZC5zaXplKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTG90dGllVmFsdWVzKCksIHRoaXMucmVzZXRBbmltYXRpb25UcmlnZ2VyKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZUxvdHRpZVZhbHVlcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIFt7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVZhbDogZS5wbGF5X3NwZWVkID8gLnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlUHJvcDogImFuaW1hdGlvblNwZWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuc2V0QW5pbWF0aW9uU3BlZWQoKQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlVmFsOiBlLmxpbmtfdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVQcm9wOiAibGlua1RpbWVvdXQiLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogKCkgPT4gdGhpcy5zZXRMaW5rVGltZW91dCgpCiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VWYWw6IGUuY2FwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVQcm9wOiAiY2FwdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLnNldENhcHRpb24oKQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlVmFsOiBlLmVmZmVjdHNfcmVsYXRpdmVfdG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlUHJvcDogImVmZmVjdHNSZWxhdGl2ZVRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMudXBkYXRlQW5pbWF0aW9uQnlTY3JvbGxQb3NpdGlvbigpCiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VWYWw6IGUubG9vcCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVQcm9wOiAibG9vcCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLm9uTG9vcFN0YXRlQ2hhbmdlKCkKICAgICAgICAgICAgICAgICAgICB9XS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBlLnNvdXJjZVZhbCAmJiBlLnNvdXJjZVZhbCAhPT0gdGhpcy5zdGF0ZVtlLnN0YXRlUHJvcF0gJiYgKHRoaXMuc3RhdGVbZS5zdGF0ZVByb3BdID0gZS5zb3VyY2VWYWwsIGUuY2FsbGJhY2soKSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uTG9vcFN0YXRlQ2hhbmdlKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSAiYXJyaXZpbmdfdG9fdmlld3BvcnQiID09PSB0aGlzLnN0YXRlLmN1cnJlbnRBbmltYXRpb25UcmlnZ2VyICYmIHRoaXMuc3RhdGUuaXNJblZpZXdwb3J0OwogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUubG9vcCAmJiAoZSB8fCAibm9uZSIgPT09IHRoaXMuc3RhdGUuY3VycmVudEFuaW1hdGlvblRyaWdnZXIpICYmIHRoaXMucGxheUxvdHRpZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXNldEFuaW1hdGlvblRyaWdnZXIoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0TG90dGllU2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGUudHJpZ2dlciAhPT0gdGhpcy5zdGF0ZS5jdXJyZW50QW5pbWF0aW9uVHJpZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICEhZS52aWV3cG9ydCAmJiB0aGlzLmlzVmlld3BvcnRPZmZzZXRDaGFuZ2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICEhZS5vbl9ob3Zlcl9vdXQgJiYgdGhpcy5pc0hvdmVyT3V0TW9kZUNoYW5nZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gISFlLmhvdmVyX2FyZWEgJiYgdGhpcy5pc0hvdmVyQXJlYUNoYW5nZSgpOwogICAgICAgICAgICAgICAgICAgICh0IHx8IHMgfHwgbiB8fCBpKSAmJiAodGhpcy5yZW1vdmVBbmltYXRpb25GcmFtZVJlcXVlc3RzKCksIHRoaXMucmVtb3ZlT2JzZXJ2ZXJzKCksIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKSwgdGhpcy5pbml0QW5pbWF0aW9uVHJpZ2dlcigpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNWaWV3cG9ydE9mZnNldENoYW5nZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS52aWV3cG9ydC5zaXplcy5zdGFydCAhPT0gdGhpcy5zdGF0ZS52aWV3cG9ydE9mZnNldC5zdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUudmlld3BvcnQuc2l6ZXMuZW5kICE9PSB0aGlzLnN0YXRlLnZpZXdwb3J0T2Zmc2V0LmVuZDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCB8fCBzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0hvdmVyT3V0TW9kZUNoYW5nZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMb3R0aWVTZXR0aW5ncygpLm9uX2hvdmVyX291dCAhPT0gdGhpcy5zdGF0ZS5ob3Zlck91dE1vZGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzSG92ZXJBcmVhQ2hhbmdlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExvdHRpZVNldHRpbmdzKCkuaG92ZXJfYXJlYSAhPT0gdGhpcy5zdGF0ZS5ob3ZlckFyZWEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLmNvbGxlY3Rpb24uZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuJGVsLm9mZihlLmV2ZW50LCBudWxsLCBlLmNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVtb3ZlT2JzZXJ2ZXJzKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBpbiB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycykgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnNbZV0ub2JzZXJ2ZXIgJiYgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnNbZV0uZWxlbWVudCAmJiB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyc1tlXS5vYnNlcnZlci51bm9ic2VydmUodGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnNbZV0uZWxlbWVudCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlbW92ZUFuaW1hdGlvbkZyYW1lUmVxdWVzdHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25GcmFtZVJlcXVlc3QudGltZXIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkRlc3Ryb3koKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25EZXN0cm95KCksIHRoaXMuZGVzdHJveUxvdHRpZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZXN0cm95TG90dGllKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQW5pbWF0aW9uRnJhbWVSZXF1ZXN0cygpLCB0aGlzLnJlbW92ZU9ic2VydmVycygpLCB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCksIHRoaXMuZWxlbWVudHMuJGFuaW1hdGlvbi5yZW1vdmVEYXRhKCJsb3R0aWUiKSwgdGhpcy5sb3R0aWUgJiYgdGhpcy5sb3R0aWUuZGVzdHJveSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkxvdHRpZURvbUxvYWRlZCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVJbml0aWFsVmFsdWVzKCksIHRoaXMuc2V0QW5pbWF0aW9uU3BlZWQoKSwgdGhpcy5zZXRMaW5rVGltZW91dCgpLCB0aGlzLnNldENhcHRpb24oKSwgdGhpcy5zZXRBbmltYXRpb25GaXJzdEZyYW1lKCksIHRoaXMuaW5pdEFuaW1hdGlvblRyaWdnZXIoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Db21wbGV0ZSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvb3BPbkFuaW1hdGlvbkNvbXBsZXRlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uTG90dGllSW50ZXJzZWN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5pc0luVmlld3BvcnQpIHRoaXMuc3RhdGUuaXNBbmltYXRpb25TY3JvbGxVcGRhdGVOZWVkZWRPbkZpcnN0TG9hZCAmJiAodGhpcy5zdGF0ZS5pc0FuaW1hdGlvblNjcm9sbFVwZGF0ZU5lZWRlZE9uRmlyc3RMb2FkID0gITEsIHRoaXMudXBkYXRlQW5pbWF0aW9uQnlTY3JvbGxQb3NpdGlvbigpKSwgdGhpcy5hbmltYXRpb25GcmFtZVJlcXVlc3QudGltZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpID0+IHRoaXMub25BbmltYXRpb25GcmFtZVJlcXVlc3QoKSkpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRBbmltYXRpb25GcmFtZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAidXAiID09PSBlLmludGVyc2VjdGlvblNjcm9sbERpcmVjdGlvbiA/IHQuZmlyc3QgOiB0Lmxhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuaXNBbmltYXRpb25TY3JvbGxVcGRhdGVOZWVkZWRPbkZpcnN0TG9hZCA9ICExLCBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdC50aW1lciksIHRoaXMubG90dGllLmdvVG9BbmRTdG9wKHMsICEwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uQW5pbWF0aW9uRnJhbWVSZXF1ZXN0KCkgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICE9PSB0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdC5sYXN0U2Nyb2xsWSAmJiAodGhpcy51cGRhdGVBbmltYXRpb25CeVNjcm9sbFBvc2l0aW9uKCksIHRoaXMuYW5pbWF0aW9uRnJhbWVSZXF1ZXN0Lmxhc3RTY3JvbGxZID0gd2luZG93LnNjcm9sbFkpLCB0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdC50aW1lciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCkgPT4gdGhpcy5vbkFuaW1hdGlvbkZyYW1lUmVxdWVzdCgpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBsb3R0aWVIYW5kbGVyCiAgICAgICAgfSwKICAgICAgICA3MzE3OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg3NDgwKSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgalF1ZXJ5LmZuLnNtYXJ0bWVudXMgJiYgKGpRdWVyeS5TbWFydE1lbnVzLnByb3RvdHlwZS5pc0NTU09uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgIH0sIGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19ydGwgJiYgKGpRdWVyeS5mbi5zbWFydG1lbnVzLmRlZmF1bHRzLnJpZ2h0VG9MZWZ0U3ViTWVudXMgPSAhMCkpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigibmF2LW1lbnUiLCBpLmRlZmF1bHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDc0ODA6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgcyA9IGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZS5leHRlbmQoewogICAgICAgICAgICAgICAgc3RyZXRjaEVsZW1lbnQ6IG51bGwsCiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6ICgpID0+ICh7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnU6ICIuZWxlbWVudG9yLW5hdi1tZW51IiwKICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yTGluazogIi5lbGVtZW50b3ItbmF2LW1lbnUtLW1haW4gLmVsZW1lbnRvci1pdGVtLWFuY2hvciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duTWVudTogIi5lbGVtZW50b3ItbmF2LW1lbnVfX2NvbnRhaW5lci5lbGVtZW50b3ItbmF2LW1lbnUtLWRyb3Bkb3duIiwKICAgICAgICAgICAgICAgICAgICAgICAgbWVudVRvZ2dsZTogIi5lbGVtZW50b3ItbWVudS10b2dnbGUiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LiRtZW51ID0gdGhpcy4kZWxlbWVudC5maW5kKGUubWVudSksIHQuJGFuY2hvckxpbmsgPSB0aGlzLiRlbGVtZW50LmZpbmQoZS5hbmNob3JMaW5rKSwgdC4kZHJvcGRvd25NZW51ID0gdGhpcy4kZWxlbWVudC5maW5kKGUuZHJvcGRvd25NZW51KSwgdC4kZHJvcGRvd25NZW51RmluYWxJdGVtcyA9IHQuJGRyb3Bkb3duTWVudS5maW5kKCIubWVudS1pdGVtOm5vdCgubWVudS1pdGVtLWhhcy1jaGlsZHJlbikgPiBhIiksIHQuJG1lbnVUb2dnbGUgPSB0aGlzLiRlbGVtZW50LmZpbmQoZS5tZW51VG9nZ2xlKSwgdC4kbGlua3MgPSB0LiRkcm9wZG93bk1lbnUuZmluZCgiYS5lbGVtZW50b3ItaXRlbSIpLCB0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRtZW51Lmxlbmd0aCAmJiAodGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZS5vbigiY2xpY2siLCB0aGlzLnRvZ2dsZU1lbnUuYmluZCh0aGlzKSksIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJmdWxsX3dpZHRoIikgJiYgdGhpcy5lbGVtZW50cy4kZHJvcGRvd25NZW51RmluYWxJdGVtcy5vbigiY2xpY2siLCB0aGlzLnRvZ2dsZU1lbnUuYmluZCh0aGlzLCAhMSkpLCBlbGVtZW50b3JGcm9udGVuZC5hZGRMaXN0ZW5lck9uY2UodGhpcy4kZWxlbWVudC5kYXRhKCJtb2RlbC1jaWQiKSwgInJlc2l6ZSIsIHRoaXMuc3RyZXRjaE1lbnUpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaXRTdHJldGNoRWxlbWVudCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmV0Y2hFbGVtZW50ID0gbmV3IGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQudG9vbHMuU3RyZXRjaEVsZW1lbnQoewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnRzLiRkcm9wZG93bk1lbnUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRvZ2dsZU5hdkxpbmtzVGFiSW5kZXgoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdKSB8fCBhcmd1bWVudHNbMF07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kbGlua3MuYXR0cigidGFiaW5kZXgiLCBlID8gMCA6IC0xKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRvZ2dsZU1lbnUoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZS5oYXNDbGFzcygiZWxlbWVudG9yLWFjdGl2ZSIpOwogICAgICAgICAgICAgICAgICAgICJib29sZWFuIiAhPSB0eXBlb2YgZSAmJiAoZSA9ICF0KSwgdGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwgZSksIHRoaXMuZWxlbWVudHMuJGRyb3Bkb3duTWVudS5hdHRyKCJhcmlhLWhpZGRlbiIsICFlKSwgdGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZS50b2dnbGVDbGFzcygiZWxlbWVudG9yLWFjdGl2ZSIsIGUpLCB0aGlzLnRvZ2dsZU5hdkxpbmtzVGFiSW5kZXgoZSksIGUgJiYgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImZ1bGxfd2lkdGgiKSAmJiB0aGlzLnN0cmV0Y2hFbGVtZW50LnN0cmV0Y2goKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZvbGxvd01lbnVBbmNob3JzKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBlLmVsZW1lbnRzLiRhbmNob3JMaW5rLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5wYXRobmFtZSA9PT0gdGhpcy5wYXRobmFtZSAmJiAiIiAhPT0gdGhpcy5oYXNoICYmIGUuZm9sbG93TWVudUFuY2hvcihqUXVlcnkodGhpcykpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZm9sbG93TWVudUFuY2hvcihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVbMF0uaGFzaDsKICAgICAgICAgICAgICAgICAgICBsZXQgcywgbiA9IC0zMDA7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGpRdWVyeShkZWNvZGVVUklDb21wb25lbnQodCkpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcy5oYXNDbGFzcygiZWxlbWVudG9yLW1lbnUtYW5jaG9yIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0galF1ZXJ5KHdpbmRvdykuaGVpZ2h0KCkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IC1zLm91dGVySGVpZ2h0KCkgKyBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQud2F5cG9pbnQocywgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb3duIiA9PT0gdCA/IGUuYWRkQ2xhc3MoImVsZW1lbnRvci1pdGVtLWFjdGl2ZSIpIDogZS5yZW1vdmVDbGFzcygiZWxlbWVudG9yLWl0ZW0tYWN0aXZlIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogIjUwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyT25jZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGVsZW1lbnRvckZyb250ZW5kLndheXBvaW50KHMsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG93biIgPT09IHQgPyBlLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItaXRlbS1hY3RpdmUiKSA6IGUuYWRkQ2xhc3MoImVsZW1lbnRvci1pdGVtLWFjdGl2ZSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyT25jZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RyZXRjaE1lbnUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImZ1bGxfd2lkdGgiKSA/ICh0aGlzLnN0cmV0Y2hFbGVtZW50LnN0cmV0Y2goKSwgdGhpcy5lbGVtZW50cy4kZHJvcGRvd25NZW51LmNzcygidG9wIiwgdGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZS5vdXRlckhlaWdodCgpKSkgOiB0aGlzLnN0cmV0Y2hFbGVtZW50LnJlc2V0KCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZS5wcm90b3R5cGUub25Jbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksICF0aGlzLmVsZW1lbnRzLiRtZW51Lmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLnN1Ym1lbnVfaWNvbi52YWx1ZTsKICAgICAgICAgICAgICAgICAgICBsZXQgdCA9ICIiOwogICAgICAgICAgICAgICAgICAgIGUgJiYgKHQgPSBlLmluZGV4T2YoIjwiKSA+IC0xID8gZSA6IGA8aSBjbGFzcz0iJHtlfSI+PC9pPmApLCB0aGlzLmVsZW1lbnRzLiRtZW51LnNtYXJ0bWVudXMoewogICAgICAgICAgICAgICAgICAgICAgICBzdWJJbmRpY2F0b3JzOiAiIiAhPT0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgc3ViSW5kaWNhdG9yc1RleHQ6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YkluZGljYXRvcnNQb3M6ICJhcHBlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICBzdWJNZW51c01heFdpZHRoOiAiMTAwMHB4IgogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmluaXRTdHJldGNoRWxlbWVudCgpLCB0aGlzLnN0cmV0Y2hNZW51KCksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSB8fCB0aGlzLmZvbGxvd01lbnVBbmNob3JzKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgICAgICJmdWxsX3dpZHRoIiA9PT0gZSAmJiB0aGlzLnN0cmV0Y2hNZW51KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IHMKICAgICAgICB9LAogICAgICAgIDcxMDc6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDI2MzUpKSwKICAgICAgICAgICAgICAgIG8gPSBuKHMoMzQ2NykpLAogICAgICAgICAgICAgICAgciA9IHMoODExNSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5Eb2N1bWVudCB7CiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldERvY3VtZW50U2V0dGluZ3MoIm9wZW5fc2VsZWN0b3IiKTsKICAgICAgICAgICAgICAgICAgICBlICYmIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRib2R5Lm9uKCJjbGljayIsIGUsIHRoaXMuc2hvd01vZGFsLmJpbmQodGhpcykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGFydFRpbWluZygpIHsKICAgICAgICAgICAgICAgICAgICBuZXcgby5kZWZhdWx0KHRoaXMuZ2V0RG9jdW1lbnRTZXR0aW5ncygidGltaW5nIiksIHRoaXMpLmNoZWNrKCkgJiYgdGhpcy5pbml0VHJpZ2dlcnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5pdFRyaWdnZXJzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcnMgPSBuZXcgaS5kZWZhdWx0KHRoaXMuZ2V0RG9jdW1lbnRTZXR0aW5ncygidHJpZ2dlcnMiKSwgdGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNob3dNb2RhbChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0RG9jdW1lbnRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0VkaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50b3JGcm9udGVuZC5pc1dQUHJldmlld01vZGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0U3RvcmFnZSgiZGlzYWJsZSIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlbGVtZW50b3JQcm9Gcm9udGVuZC5tb2R1bGVzLnBvcHVwLnBvcHVwUG9wcGVkICYmIHQuYXZvaWRfbXVsdGlwbGVfcG9wdXBzKSByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50ID0galF1ZXJ5KHRoaXMuZWxlbWVudEhUTUwpLCB0aGlzLmVsZW1lbnRzLiRlbGVtZW50cyA9IHRoaXMuJGVsZW1lbnQuZmluZCh0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMuZWxlbWVudHMiKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuZ2V0TW9kYWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHMuZ2V0RWxlbWVudHMoImNsb3NlQnV0dG9uIik7CiAgICAgICAgICAgICAgICAgICAgcy5zZXRNZXNzYWdlKHRoaXMuJGVsZW1lbnQpLnNob3coKSwgdGhpcy5pc0VkaXQgfHwgKHQuY2xvc2VfYnV0dG9uX2RlbGF5ICYmIChuLmhpZGUoKSwgY2xlYXJUaW1lb3V0KHRoaXMuY2xvc2VCdXR0b25UaW1lb3V0KSwgdGhpcy5jbG9zZUJ1dHRvblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgoKSA9PiBuLnNob3coKSksIDFlMyAqIHQuY2xvc2VfYnV0dG9uX2RlbGF5KSksIHN1cGVyLnJ1bkVsZW1lbnRzSGFuZGxlcnMoKSksIHRoaXMuc2V0RW50cmFuY2VBbmltYXRpb24oKSwgdC50aW1pbmcgJiYgdC50aW1pbmcudGltZXNfY291bnQgfHwgdGhpcy5jb3VudFRpbWVzKCksIGVsZW1lbnRvclByb0Zyb250ZW5kLm1vZHVsZXMucG9wdXAucG9wdXBQb3BwZWQgPSAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0RW50cmFuY2VBbmltYXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0TW9kYWwoKS5nZXRFbGVtZW50cygid2lkZ2V0Q29udGVudCIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXREb2N1bWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlbGVtZW50b3JGcm9udGVuZC5nZXRDdXJyZW50RGV2aWNlU2V0dGluZyh0LCAiZW50cmFuY2VfYW5pbWF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEFuaW1hdGlvbiAmJiBlLnJlbW92ZUNsYXNzKHRoaXMuY3VycmVudEFuaW1hdGlvbiksIHRoaXMuY3VycmVudEFuaW1hdGlvbiA9IHMsICFzKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHQuZW50cmFuY2VfYW5pbWF0aW9uX2R1cmF0aW9uLnNpemU7CiAgICAgICAgICAgICAgICAgICAgZS5hZGRDbGFzcyhzKSwgc2V0VGltZW91dCgoKCkgPT4gZS5yZW1vdmVDbGFzcyhzKSksIDFlMyAqIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRFeGl0QW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldE1vZGFsKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldERvY3VtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuZ2V0RWxlbWVudHMoIndpZGdldENvbnRlbnQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKHQsICJleGl0X2FuaW1hdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbiA/IHQuZW50cmFuY2VfYW5pbWF0aW9uX2R1cmF0aW9uLnNpemUgOiAwOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiBzLnJlbW92ZUNsYXNzKG4gKyAiIHJldmVyc2UiKSwgdGhpcy5pc0VkaXQgfHwgKHRoaXMuJGVsZW1lbnQucmVtb3ZlKCksIGUuZ2V0RWxlbWVudHMoIndpZGdldCIpLmhpZGUoKSkKICAgICAgICAgICAgICAgICAgICB9KSwgMWUzICogaSksIG4gJiYgcy5hZGRDbGFzcyhuICsgIiByZXZlcnNlIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRNb2RhbCgpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1vZGFsID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldERvY3VtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRTZXR0aW5ncygiaWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyUG9wdXBFdmVudCA9IGUgPT4gZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGRvY3VtZW50LnRyaWdnZXIoImVsZW1lbnRvci9wb3B1cC8iICsgZSwgW3MsIHRoaXNdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gImVsZW1lbnRvci1wb3B1cC1tb2RhbCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmNsYXNzZXMgJiYgKG4gKz0gIiAiICsgdC5jbGFzc2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICJlbGVtZW50b3ItcG9wdXAtbW9kYWwtIiArIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0LnByZXZlbnRfc2Nyb2xsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2hvdzogKCkgPT4gdHJpZ2dlclBvcHVwRXZlbnQoInNob3ciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkhpZGU6ICgpID0+IHRyaWdnZXJQb3B1cEV2ZW50KCJoaWRlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlOiAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnRpbWluZyAmJiB0LnRpbWluZy50aW1lc19jb3VudCAmJiB0aGlzLmNvdW50VGltZXMoKSwgdGhpcy5zZXRFeGl0QW5pbWF0aW9uKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogInNob3ciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG86ICEhdC5jbG9zZV9hdXRvbWF0aWNhbGx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvRGVsYXk6IDFlMyAqIHQuY2xvc2VfYXV0b21hdGljYWxseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CYWNrZ3JvdW5kQ2xpY2s6ICF0LnByZXZlbnRfY2xvc2Vfb25fYmFja2dyb3VuZF9jbGljaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25PdXRzaWRlQ2xpY2s6ICF0LnByZXZlbnRfY2xvc2Vfb25fYmFja2dyb3VuZF9jbGljaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Fc2NLZXlQcmVzczogIXQucHJldmVudF9jbG9zZV9vbl9lc2Nfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU6ICIuZmxhdHBpY2tyLWNhbGVuZGFyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuZXhwZXJpbWVudGFsRmVhdHVyZXMuZV9mb250X2ljb25fc3ZnICYmIChpLmNsb3NlQnV0dG9uT3B0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uRWxlbWVudDogci5jbG9zZS5lbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5jbG9zZUJ1dHRvbkNsYXNzID0gImVpY29uLWNsb3NlIiwgZSA9IGVsZW1lbnRvckZyb250ZW5kLmdldERpYWxvZ3NNYW5hZ2VyKCkuY3JlYXRlV2lkZ2V0KCJsaWdodGJveCIsIGkpLCBlLmdldEVsZW1lbnRzKCJ3aWRnZXRDb250ZW50IikuYWRkQ2xhc3MoImFuaW1hdGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gZS5nZXRFbGVtZW50cygiY2xvc2VCdXR0b24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNFZGl0ICYmIChvLm9mZigiY2xpY2siKSwgZS5oaWRlID0gKCkgPT4ge30pLCB0aGlzLnNldENsb3NlQnV0dG9uUG9zaXRpb24oKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0Q2xvc2VCdXR0b25Qb3NpdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRNb2RhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXREb2N1bWVudFNldHRpbmdzKCJjbG9zZV9idXR0b25fcG9zaXRpb24iKTsKICAgICAgICAgICAgICAgICAgICBlLmdldEVsZW1lbnRzKCJjbG9zZUJ1dHRvbiIpLmFwcGVuZFRvKGUuZ2V0RWxlbWVudHMoIm91dHNpZGUiID09PSB0ID8gIndpZGdldCIgOiAid2lkZ2V0Q29udGVudCIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGlzYWJsZSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0b3JhZ2UoImRpc2FibGUiLCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldFN0b3JhZ2UoZSwgdCwgcykgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnN0b3JhZ2Uuc2V0KGBwb3B1cF8ke3RoaXMuZ2V0U2V0dGluZ3MoImlkIil9XyR7ZX1gLCB0LCBzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3RvcmFnZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLnN0b3JhZ2UuZ2V0KGBwb3B1cF8ke3RoaXMuZ2V0U2V0dGluZ3MoImlkIil9XyR7ZX1gLCB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291bnRUaW1lcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTdG9yYWdlKCJ0aW1lcyIpIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdG9yYWdlKCJ0aW1lcyIsIGUgKyAxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcnVuRWxlbWVudHNIYW5kbGVycygpIHt9CiAgICAgICAgICAgICAgICBhc3luYyBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCksIHdpbmRvdy5EaWFsb2dzTWFuYWdlciB8fCBhd2FpdCBlbGVtZW50b3JGcm9udGVuZC51dGlscy5hc3NldHNMb2FkZXIubG9hZCgic2NyaXB0IiwgImRpYWxvZyIpLCB0aGlzLmluaXRNb2RhbCgpLCB0aGlzLmlzRWRpdCA/IHRoaXMuc2hvd01vZGFsKCkgOiAodGhpcy4kZWxlbWVudC5zaG93KCkucmVtb3ZlKCksIHRoaXMuZWxlbWVudEhUTUwgPSB0aGlzLiRlbGVtZW50WzBdLm91dGVySFRNTCwgZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpIHx8IChlbGVtZW50b3JGcm9udGVuZC5pc1dQUHJldmlld01vZGUoKSAmJiBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucG9zdC5pZCA9PT0gdGhpcy5nZXRTZXR0aW5ncygiaWQiKSA/IHRoaXMuc2hvd01vZGFsKCkgOiB0aGlzLnN0YXJ0VGltaW5nKCkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25TZXR0aW5nc0NoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IE9iamVjdC5rZXlzKGUuY2hhbmdlZClbMF07IC0gMSAhPT0gdC5pbmRleE9mKCJlbnRyYW5jZV9hbmltYXRpb24iKSAmJiB0aGlzLnNldEVudHJhbmNlQW5pbWF0aW9uKCksICJleGl0X2FuaW1hdGlvbiIgPT09IHQgJiYgdGhpcy5zZXRFeGl0QW5pbWF0aW9uKCksICJjbG9zZV9idXR0b25fcG9zaXRpb24iID09PSB0ICYmIHRoaXMuc2V0Q2xvc2VCdXR0b25Qb3NpdGlvbigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDIxNDA6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDcxMDcpKSwKICAgICAgICAgICAgICAgIG8gPSBuKHMoODg3MikpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKCksIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbigiZWxlbWVudG9yL2Zyb250ZW5kL2RvY3VtZW50cy1tYW5hZ2VyL2luaXQtY2xhc3NlcyIsIHRoaXMuYWRkRG9jdW1lbnRDbGFzcyksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hdHRhY2hIYW5kbGVyKCJmb3JtIiwgby5kZWZhdWx0KSwgZWxlbWVudG9yRnJvbnRlbmQub24oImNvbXBvbmVudHM6aW5pdCIsICgoKSA9PiB0aGlzLm9uRnJvbnRlbmRDb21wb25lbnRzSW5pdCgpKSksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSB8fCBlbGVtZW50b3JGcm9udGVuZC5pc1dQUHJldmlld01vZGUoKSB8fCB0aGlzLnNldFZpZXdzQW5kU2Vzc2lvbnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRkRG9jdW1lbnRDbGFzcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5hZGREb2N1bWVudENsYXNzKCJwb3B1cCIsIGkuZGVmYXVsdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldFZpZXdzQW5kU2Vzc2lvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGVsZW1lbnRvckZyb250ZW5kLnN0b3JhZ2UuZ2V0KCJwYWdlVmlld3MiKSB8fCAwOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnN0b3JhZ2Uuc2V0KCJwYWdlVmlld3MiLCBlICsgMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50b3JGcm9udGVuZC5zdG9yYWdlLmdldCgiYWN0aXZlU2Vzc2lvbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb246ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnN0b3JhZ2Uuc2V0KCJhY3RpdmVTZXNzaW9uIiwgITAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb246ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuc3RvcmFnZS5nZXQoInNlc3Npb25zIikgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuc3RvcmFnZS5zZXQoInNlc3Npb25zIiwgZSArIDEpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2hvd1BvcHVwKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZWxlbWVudG9yRnJvbnRlbmQuZG9jdW1lbnRzTWFuYWdlci5kb2N1bWVudHNbZS5pZF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHQuZ2V0TW9kYWwoKTsKICAgICAgICAgICAgICAgICAgICBlLnRvZ2dsZSAmJiBzLmlzVmlzaWJsZSgpID8gcy5oaWRlKCkgOiB0LnNob3dNb2RhbCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjbG9zZVBvcHVwKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0galF1ZXJ5KHQudGFyZ2V0KS5wYXJlbnRzKCdbZGF0YS1lbGVtZW50b3ItdHlwZT0icG9wdXAiXScpLmRhdGEoImVsZW1lbnRvcklkIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGVsZW1lbnRvckZyb250ZW5kLmRvY3VtZW50c01hbmFnZXIuZG9jdW1lbnRzW3NdOwogICAgICAgICAgICAgICAgICAgIG4uZ2V0TW9kYWwoKS5oaWRlKCksIGUuZG9fbm90X3Nob3dfYWdhaW4gJiYgbi5kaXNhYmxlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRnJvbnRlbmRDb21wb25lbnRzSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC51dGlscy51cmxBY3Rpb25zLmFkZEFjdGlvbigicG9wdXA6b3BlbiIsIChlID0+IHRoaXMuc2hvd1BvcHVwKGUpKSksIGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLnVybEFjdGlvbnMuYWRkQWN0aW9uKCJwb3B1cDpjbG9zZSIsICgoZSwgdCkgPT4gdGhpcy5jbG9zZVBvcHVwKGUsIHQpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgODg3MjogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBzID0gZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6ICgpID0+ICh7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06ICIuZWxlbWVudG9yLWZvcm0iCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LiRmb3JtID0gdGhpcy4kZWxlbWVudC5maW5kKGUuZm9ybSksIHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGZvcm0ub24oInN1Ym1pdF9zdWNjZXNzIiwgdGhpcy5oYW5kbGVGb3JtQWN0aW9uKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhbmRsZUZvcm1BY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQuZGF0YS5wb3B1cCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0LmRhdGEucG9wdXA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJvcGVuIiA9PT0gcy5hY3Rpb24pIHJldHVybiBlbGVtZW50b3JQcm9Gcm9udGVuZC5tb2R1bGVzLnBvcHVwLnNob3dQb3B1cChzKTsKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgoKSA9PiBlbGVtZW50b3JQcm9Gcm9udGVuZC5tb2R1bGVzLnBvcHVwLmNsb3NlUG9wdXAocywgZSkpLCAxZTMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBzCiAgICAgICAgfSwKICAgICAgICAzNDY3OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg2NzIzKSksCiAgICAgICAgICAgICAgICBvID0gbihzKDM3NTQpKSwKICAgICAgICAgICAgICAgIHIgPSBuKHMoNjQ3MCkpLAogICAgICAgICAgICAgICAgYSA9IG4ocygyMjEpKSwKICAgICAgICAgICAgICAgIGwgPSBuKHMoMjE5MykpLAogICAgICAgICAgICAgICAgZCA9IG4ocyg2MTk1KSksCiAgICAgICAgICAgICAgICBjID0gbihzKDUyNDcpKSwKICAgICAgICAgICAgICAgIGggPSBuKHMoMzQ5KSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKGUpLCB0aGlzLmRvY3VtZW50ID0gdCwgdGhpcy50aW1pbmdDbGFzc2VzID0gewogICAgICAgICAgICAgICAgICAgICAgICBwYWdlX3ZpZXdzOiBpLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25zOiBvLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogci5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzOiBhLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlZF9pbjogbC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzOiBkLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzOiBjLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJzOiBoLmRlZmF1bHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjaGVjaygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGxldCB0ID0gITA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5lYWNoKHRoaXMudGltaW5nQ2xhc3NlcywgKChzLCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtzXSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBuZXcgbihlLCB0aGlzLmRvY3VtZW50KS5jaGVjaygpIHx8ICh0ID0gITEpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDMxMDc6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcihlKSwgdGhpcy5kb2N1bWVudCA9IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFRpbWluZ1NldHRpbmcoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNldHRpbmdzKHRoaXMuZ2V0TmFtZSgpICsgIl8iICsgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgMzQ5OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygzMTA3KSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldE5hbWUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJicm93c2VycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNoZWNrKCkgewogICAgICAgICAgICAgICAgICAgIGlmICgiYWxsIiA9PT0gdGhpcy5nZXRUaW1pbmdTZXR0aW5nKCJicm93c2VycyIpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0VGltaW5nU2V0dGluZygiYnJvd3NlcnNfb3B0aW9ucyIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuZW52aXJvbm1lbnQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc29tZSgoZSA9PiB0W2VdKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNjE5NTogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMzEwNykpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXROYW1lKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZGV2aWNlcyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNoZWNrKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSAhPT0gdGhpcy5nZXRUaW1pbmdTZXR0aW5nKCJkZXZpY2VzIikuaW5kZXhPZihlbGVtZW50b3JGcm9udGVuZC5nZXRDdXJyZW50RGV2aWNlTW9kZSgpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICAyMTkzOiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygzMTA3KSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldE5hbWUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJsb2dnZWRfaW4iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjaGVjaygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnVzZXI7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJhbGwiID09PSB0aGlzLmdldFRpbWluZ1NldHRpbmcoInVzZXJzIikpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZ2V0VGltaW5nU2V0dGluZygicm9sZXMiKS5maWx0ZXIoKHQgPT4gLTEgIT09IGUucm9sZXMuaW5kZXhPZih0KSkpLmxlbmd0aAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA2NzIzOiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygzMTA3KSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldE5hbWUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJwYWdlX3ZpZXdzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2hlY2soKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGVsZW1lbnRvckZyb250ZW5kLnN0b3JhZ2UuZ2V0KCJwYWdlVmlld3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0TmFtZSgpOwogICAgICAgICAgICAgICAgICAgIGxldCBzID0gdGhpcy5kb2N1bWVudC5nZXRTdG9yYWdlKHQgKyAiX2luaXRpYWxQYWdlVmlld3MiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyB8fCAodGhpcy5kb2N1bWVudC5zZXRTdG9yYWdlKHQgKyAiX2luaXRpYWxQYWdlVmlld3MiLCBlKSwgcyA9IGUpLCBlIC0gcyA+PSB0aGlzLmdldFRpbWluZ1NldHRpbmcoInZpZXdzIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgMzc1NDogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMzEwNykpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXROYW1lKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAic2Vzc2lvbnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjaGVjaygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuc3RvcmFnZS5nZXQoInNlc3Npb25zIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldE5hbWUoKTsKICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IHRoaXMuZG9jdW1lbnQuZ2V0U3RvcmFnZSh0ICsgIl9pbml0aWFsU2Vzc2lvbnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyB8fCAodGhpcy5kb2N1bWVudC5zZXRTdG9yYWdlKHQgKyAiX2luaXRpYWxTZXNzaW9ucyIsIGUpLCBzID0gZSksIGUgLSBzID49IHRoaXMuZ2V0VGltaW5nU2V0dGluZygic2Vzc2lvbnMiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICAyMjE6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDMxMDcpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgZ2V0TmFtZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInNvdXJjZXMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjaGVjaygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRUaW1pbmdTZXR0aW5nKCJzb3VyY2VzIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKDMgPT09IGUubGVuZ3RoKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UoL2h0dHBzPzpcL1wvKD86d3d3XC4pPy8sICIiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdC5pbmRleE9mKGxvY2F0aW9uLmhvc3QucmVwbGFjZSgid3d3LiIsICIiKSkgPyAtMSAhPT0gZS5pbmRleE9mKCJpbnRlcm5hbCIpIDogLTEgIT09IGUuaW5kZXhPZigiZXh0ZXJuYWwiKSB8fCAtMSAhPT0gZS5pbmRleE9mKCJzZWFyY2giKSAmJiAvXihnb29nbGV8eWFob298YmluZ3x5YW5kZXh8YmFpZHUpXC4vLnRlc3QodCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNTI0NzogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMzEwNykpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXROYW1lKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAidGltZXMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjaGVjaygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5kb2N1bWVudC5nZXRTdG9yYWdlKCJ0aW1lcyIpIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGltaW5nU2V0dGluZygidGltZXMiKSA+IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNjQ3MDogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMzEwNykpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXROYW1lKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAidXJsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2hlY2soKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0VGltaW5nU2V0dGluZygidXJsIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldFRpbWluZ1NldHRpbmcoImFjdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZG9jdW1lbnQucmVmZXJyZXI7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJyZWdleCIgIT09IHQpIHJldHVybiAiaGlkZSIgPT09IHQgXiAtMSAhPT0gcy5pbmRleE9mKGUpOwogICAgICAgICAgICAgICAgICAgIGxldCBuOwogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgUmVnRXhwKGUpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udGVzdChzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICAyNjM1OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg0NjIyKSksCiAgICAgICAgICAgICAgICBvID0gbihzKDg3MjkpKSwKICAgICAgICAgICAgICAgIHIgPSBuKHMoMzU4KSksCiAgICAgICAgICAgICAgICBhID0gbihzKDYyKSksCiAgICAgICAgICAgICAgICBsID0gbihzKDg4MTEpKSwKICAgICAgICAgICAgICAgIGQgPSBuKHMoOTc1OCkpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcihlKSwgdGhpcy5kb2N1bWVudCA9IHQsIHRoaXMudHJpZ2dlcnMgPSBbXSwgdGhpcy50cmlnZ2VyQ2xhc3NlcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9sb2FkOiBpLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZzogby5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdfdG86IHIuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGEuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgaW5hY3Rpdml0eTogbC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBleGl0X2ludGVudDogZC5kZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5ydW5UcmlnZ2VycygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW5UcmlnZ2VycygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKHRoaXMudHJpZ2dlckNsYXNzZXMsICgodCwgcykgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbdF0pIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IG5ldyBzKGUsICgoKSA9PiB0aGlzLm9uVHJpZ2dlckZpcmVkKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5ydW4oKSwgdGhpcy50cmlnZ2Vycy5wdXNoKG4pCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZXN0cm95VHJpZ2dlcnMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2Vycy5mb3JFYWNoKChlID0+IGUuZGVzdHJveSgpKSksIHRoaXMudHJpZ2dlcnMgPSBbXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25UcmlnZ2VyRmlyZWQoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5zaG93TW9kYWwoITApLCB0aGlzLmRlc3Ryb3lUcmlnZ2VycygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDIxNjI6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcihlKSwgdGhpcy5jYWxsYmFjayA9IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFRyaWdnZXJTZXR0aW5nKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZXR0aW5ncyh0aGlzLmdldE5hbWUoKSArICJfIiArIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDYyOiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygyMTYyKSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyksIHRoaXMuY2hlY2tDbGljayA9IHRoaXMuY2hlY2tDbGljay5iaW5kKHRoaXMpLCB0aGlzLmNsaWNrc0NvdW50ID0gMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0TmFtZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImNsaWNrIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2hlY2tDbGljaygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaWNrc0NvdW50KyssIHRoaXMuY2xpY2tzQ291bnQgPT09IHRoaXMuZ2V0VHJpZ2dlclNldHRpbmcoInRpbWVzIikgJiYgdGhpcy5jYWxsYmFjaygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW4oKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGJvZHkub24oImNsaWNrIiwgdGhpcy5jaGVja0NsaWNrKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVzdHJveSgpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5vZmYoImNsaWNrIiwgdGhpcy5jaGVja0NsaWNrKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA5NzU4OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygyMTYyKSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyksIHRoaXMuZGV0ZWN0RXhpdEludGVudCA9IHRoaXMuZGV0ZWN0RXhpdEludGVudC5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXROYW1lKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZXhpdF9pbnRlbnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZXRlY3RFeGl0SW50ZW50KGUpIHsKICAgICAgICAgICAgICAgICAgICBlLmNsaWVudFkgPD0gMCAmJiB0aGlzLmNhbGxiYWNrKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJ1bigpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9uKCJtb3VzZWxlYXZlIiwgdGhpcy5kZXRlY3RFeGl0SW50ZW50KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVzdHJveSgpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9mZigibW91c2VsZWF2ZSIsIHRoaXMuZGV0ZWN0RXhpdEludGVudCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgODgxMTogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMjE2MikpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpLCB0aGlzLnJlc3RhcnRUaW1lciA9IHRoaXMucmVzdGFydFRpbWVyLmJpbmQodGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldE5hbWUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJpbmFjdGl2aXR5IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcnVuKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQub24oImtleXByZXNzIG1vdXNlbW92ZSIsIHRoaXMucmVzdGFydFRpbWVyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhcnRUaW1lcigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVPdXQgPSBzZXRUaW1lb3V0KHRoaXMuY2FsbGJhY2ssIDFlMyAqIHRoaXMuZ2V0VHJpZ2dlclNldHRpbmcoInRpbWUiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNsZWFyVGltZXIoKSB7CiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZU91dCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlc3RhcnRUaW1lcigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoKSwgdGhpcy5zdGFydFRpbWVyKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRkb2N1bWVudC5vZmYoImtleXByZXNzIG1vdXNlbW92ZSIsIHRoaXMucmVzdGFydFRpbWVyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA0NjIyOiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygyMTYyKSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldE5hbWUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJwYWdlX2xvYWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW4oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLmNhbGxiYWNrLCAxZTMgKiB0aGlzLmdldFRyaWdnZXJTZXR0aW5nKCJkZWxheSIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVzdHJveSgpIHsKICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICAzNTg6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDIxNjIpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgZ2V0TmFtZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInNjcm9sbGluZ190byIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJ1bigpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgZTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBlID0galF1ZXJ5KHRoaXMuZ2V0VHJpZ2dlclNldHRpbmcoInNlbGVjdG9yIikpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy53YXlwb2ludEluc3RhbmNlID0gZWxlbWVudG9yRnJvbnRlbmQud2F5cG9pbnQoZSwgdGhpcy5jYWxsYmFjaylbMF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy53YXlwb2ludEluc3RhbmNlICYmIHRoaXMud2F5cG9pbnRJbnN0YW5jZS5kZXN0cm95KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgODcyOTogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMjE2MikpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpLCB0aGlzLmNoZWNrU2Nyb2xsID0gdGhpcy5jaGVja1Njcm9sbC5iaW5kKHRoaXMpLCB0aGlzLmxhc3RTY3JvbGxPZmZzZXQgPSAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXROYW1lKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAic2Nyb2xsaW5nIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2hlY2tTY3JvbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHNjcm9sbFkgPiB0aGlzLmxhc3RTY3JvbGxPZmZzZXQgPyAiZG93biIgOiAidXAiLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRUcmlnZ2VyU2V0dGluZygiZGlyZWN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGFzdFNjcm9sbE9mZnNldCA9IHNjcm9sbFksIGUgIT09IHQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAoInVwIiA9PT0gZSkgcmV0dXJuIHZvaWQgdGhpcy5jYWxsYmFjaygpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQuaGVpZ2h0KCkgLSBpbm5lckhlaWdodDsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxZIC8gcyAqIDEwMCA+PSB0aGlzLmdldFRyaWdnZXJTZXR0aW5nKCJvZmZzZXQiKSAmJiB0aGlzLmNhbGxiYWNrKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJ1bigpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9uKCJzY3JvbGwiLCB0aGlzLmNoZWNrU2Nyb2xsKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVzdHJveSgpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9mZigic2Nyb2xsIiwgdGhpcy5jaGVja1Njcm9sbCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNjQ4NDogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMjI5OCkpLAogICAgICAgICAgICAgICAgbyA9IG4ocyg4NDk2KSksCiAgICAgICAgICAgICAgICByID0gbihzKDUyMDgpKSwKICAgICAgICAgICAgICAgIGEgPSBuKHMoMjYwNykpOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKCksIFsiY2xhc3NpYyIsICJmdWxsX2NvbnRlbnQiLCAiY2FyZHMiXS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInBvc3RzIiwgYS5kZWZhdWx0LCBlKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInBvc3RzIiwgaS5kZWZhdWx0LCAiY2xhc3NpYyIpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigicG9zdHMiLCBpLmRlZmF1bHQsICJmdWxsX2NvbnRlbnQiKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInBvc3RzIiwgby5kZWZhdWx0LCAiY2FyZHMiKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInBvcnRmb2xpbyIsIHIuZGVmYXVsdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgODQ5NjogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMjI5OCkpLmRlZmF1bHQuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldFNraW5QcmVmaXg6ICgpID0+ICJjYXJkc18iCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBpCiAgICAgICAgfSwKICAgICAgICAyNjA3OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgTG9hZE1vcmUgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdHNDb250YWluZXI6ICIuZWxlbWVudG9yLXBvc3RzLWNvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTW9yZUJ1dHRvbjogIi5lbGVtZW50b3ItYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNb3JlU3Bpbm5lcldyYXBwZXI6ICIuZS1sb2FkLW1vcmUtc3Bpbm5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTW9yZVNwaW5uZXI6ICIuZS1sb2FkLW1vcmUtc3Bpbm5lciBpLCAuZS1sb2FkLW1vcmUtc3Bpbm5lciBzdmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1vcmVBbmNob3I6ICIuZS1sb2FkLW1vcmUtYW5jaG9yIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTW9yZVNwaW46ICJlaWNvbi1hbmltYXRpb24tc3BpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTW9yZUlzTG9hZGluZzogImUtbG9hZC1tb3JlLXBhZ2luYXRpb24tbG9hZGluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTW9yZVBhZ2luYXRpb25FbmQ6ICJlLWxvYWQtbW9yZS1wYWdpbmF0aW9uLWVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTW9yZU5vU3Bpbm5lcjogImUtbG9hZC1tb3JlLW5vLXNwaW5uZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RzV2lkZ2V0V3JhcHBlcjogdGhpcy4kZWxlbWVudFswXSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdHNDb250YWluZXI6IHRoaXMuJGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvcihlLnBvc3RzQ29udGFpbmVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1vcmVCdXR0b246IHRoaXMuJGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvcihlLmxvYWRNb3JlQnV0dG9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1vcmVTcGlubmVyV3JhcHBlcjogdGhpcy4kZWxlbWVudFswXS5xdWVyeVNlbGVjdG9yKGUubG9hZE1vcmVTcGlubmVyV3JhcHBlciksCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNb3JlU3Bpbm5lcjogdGhpcy4kZWxlbWVudFswXS5xdWVyeVNlbGVjdG9yKGUubG9hZE1vcmVTcGlubmVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1vcmVBbmNob3I6IHRoaXMuJGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvcihlLmxvYWRNb3JlQW5jaG9yKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIuYmluZEV2ZW50cygpLCB0aGlzLmVsZW1lbnRzLmxvYWRNb3JlQnV0dG9uICYmIHRoaXMuZWxlbWVudHMubG9hZE1vcmVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nIHx8IChlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuaGFuZGxlUG9zdHNRdWVyeSgpKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCgpLCB0aGlzLmNsYXNzZXMgPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIiksIHRoaXMuaXNMb2FkaW5nID0gITE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJwYWdpbmF0aW9uX3R5cGUiKTsKICAgICAgICAgICAgICAgICAgICAibG9hZF9tb3JlX29uX2NsaWNrIiAhPT0gZSAmJiAibG9hZF9tb3JlX2luZmluaXRlX3Njcm9sbCIgIT09IGUgfHwgKHRoaXMuaXNJbmZpbnRlU2Nyb2xsID0gImxvYWRfbW9yZV9pbmZpbml0ZV9zY3JvbGwiID09PSBlLCB0aGlzLmlzU3Bpbm5lckF2YWlsYWJsZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJsb2FkX21vcmVfc3Bpbm5lciIpLnZhbHVlLCB0aGlzLmlzU3Bpbm5lckF2YWlsYWJsZSB8fCB0aGlzLmVsZW1lbnRzLnBvc3RzV2lkZ2V0V3JhcHBlci5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3Nlcy5sb2FkTW9yZU5vU3Bpbm5lciksIHRoaXMuaXNJbmZpbnRlU2Nyb2xsID8gdGhpcy5oYW5kbGVJbmZpbml0ZVNjcm9sbCgpIDogdGhpcy5lbGVtZW50cy5sb2FkTW9yZVNwaW5uZXJXcmFwcGVyICYmIHRoaXMuZWxlbWVudHMubG9hZE1vcmVCdXR0b24gJiYgdGhpcy5lbGVtZW50cy5sb2FkTW9yZUJ1dHRvbi5pbnNlcnRBZGphY2VudEVsZW1lbnQoImJlZm9yZUVuZCIsIHRoaXMuZWxlbWVudHMubG9hZE1vcmVTcGlubmVyV3JhcHBlciksIHRoaXMuZWxlbWVudElkID0gdGhpcy5nZXRJRCgpLCB0aGlzLnBvc3RJZCA9IGVsZW1lbnRvckZyb250ZW5kQ29uZmlnLnBvc3QuaWQsIHRoaXMuZWxlbWVudHMubG9hZE1vcmVBbmNob3IgJiYgKHRoaXMuY3VycmVudFBhZ2UgPSBwYXJzZUludCh0aGlzLmVsZW1lbnRzLmxvYWRNb3JlQW5jaG9yLmdldEF0dHJpYnV0ZSgiZGF0YS1wYWdlIikpLCB0aGlzLm1heFBhZ2UgPSBwYXJzZUludCh0aGlzLmVsZW1lbnRzLmxvYWRNb3JlQW5jaG9yLmdldEF0dHJpYnV0ZSgiZGF0YS1tYXgtcGFnZSIpKSwgdGhpcy5jdXJyZW50UGFnZSAhPT0gdGhpcy5tYXhQYWdlICYmIHRoaXMuY3VycmVudFBhZ2UgfHwgdGhpcy5oYW5kbGVVaVdoZW5Ob1Bvc3RzKCkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGFuZGxlSW5maW5pdGVTY3JvbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0VkaXQgfHwgKHRoaXMub2JzZXJ2ZXIgPSBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLlNjcm9sbC5zY3JvbGxPYnNlcnZlcih7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaXNJblZpZXdwb3J0ICYmICF0aGlzLmlzTG9hZGluZyAmJiAodGhpcy5vYnNlcnZlci51bm9ic2VydmUodGhpcy5lbGVtZW50cy5sb2FkTW9yZUFuY2hvciksIHRoaXMuaGFuZGxlUG9zdHNRdWVyeSgpLnRoZW4oKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlICE9PSB0aGlzLm1heFBhZ2UgJiYgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudHMubG9hZE1vcmVBbmNob3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudHMubG9hZE1vcmVBbmNob3IpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGFuZGxlVWlCZWZvcmVMb2FkaW5nKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gITAsIHRoaXMuZWxlbWVudHMubG9hZE1vcmVTcGlubmVyICYmIHRoaXMuZWxlbWVudHMubG9hZE1vcmVTcGlubmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc2VzLmxvYWRNb3JlU3BpbiksIHRoaXMuZWxlbWVudHMucG9zdHNXaWRnZXRXcmFwcGVyLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc2VzLmxvYWRNb3JlSXNMb2FkaW5nKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGFuZGxlVWlBZnRlckxvYWRpbmcoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSAhMSwgdGhpcy5lbGVtZW50cy5sb2FkTW9yZVNwaW5uZXIgJiYgdGhpcy5lbGVtZW50cy5sb2FkTW9yZVNwaW5uZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNsYXNzZXMubG9hZE1vcmVTcGluKSwgdGhpcy5pc0luZmludGVTY3JvbGwgJiYgdGhpcy5lbGVtZW50cy5sb2FkTW9yZVNwaW5uZXJXcmFwcGVyICYmIHRoaXMuZWxlbWVudHMubG9hZE1vcmVBbmNob3IgJiYgdGhpcy5lbGVtZW50cy5sb2FkTW9yZUFuY2hvci5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyZW5kIiwgdGhpcy5lbGVtZW50cy5sb2FkTW9yZVNwaW5uZXJXcmFwcGVyKSwgdGhpcy5lbGVtZW50cy5wb3N0c1dpZGdldFdyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNsYXNzZXMubG9hZE1vcmVJc0xvYWRpbmcpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoYW5kbGVVaVdoZW5Ob1Bvc3RzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMucG9zdHNXaWRnZXRXcmFwcGVyLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc2VzLmxvYWRNb3JlUGFnaW5hdGlvbkVuZCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZVN1Y2Nlc3NGZXRjaChlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVaUFmdGVyTG9hZGluZygpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlLnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWlkPSIke3RoaXMuZWxlbWVudElkfSJdIC5lbGVtZW50b3ItcG9zdHMtY29udGFpbmVyID4gYXJ0aWNsZWApLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5xdWVyeVNlbGVjdG9yKCIuZS1sb2FkLW1vcmUtYW5jaG9yIikuZ2V0QXR0cmlidXRlKCJkYXRhLW5leHQtcGFnZSIpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gWy4uLnRdLnJlZHVjZSgoKGUsIHQpID0+IGUgKyB0Lm91dGVySFRNTCksICIiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLnBvc3RzQ29udGFpbmVyLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlZW5kIiwgbiksIHRoaXMuZWxlbWVudHMubG9hZE1vcmVBbmNob3Iuc2V0QXR0cmlidXRlKCJkYXRhLXBhZ2UiLCB0aGlzLmN1cnJlbnRQYWdlKSwgdGhpcy5lbGVtZW50cy5sb2FkTW9yZUFuY2hvci5zZXRBdHRyaWJ1dGUoImRhdGEtbmV4dC1wYWdlIiwgcyksIHRoaXMuY3VycmVudFBhZ2UgPT09IHRoaXMubWF4UGFnZSAmJiB0aGlzLmhhbmRsZVVpV2hlbk5vUG9zdHMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGFuZGxlUG9zdHNRdWVyeSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVVpQmVmb3JlTG9hZGluZygpLCB0aGlzLmN1cnJlbnRQYWdlKys7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudHMubG9hZE1vcmVBbmNob3IuZ2V0QXR0cmlidXRlKCJkYXRhLW5leHQtcGFnZSIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaChlKS50aGVuKChlID0+IGUudGV4dCgpKSkudGhlbigoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAobmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsICJ0ZXh0L2h0bWwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdWNjZXNzRmV0Y2godCkKICAgICAgICAgICAgICAgICAgICB9KSkuY2F0Y2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oIlNvbWV0aGluZyB3ZW50IHdyb25nLiIsIGUpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gTG9hZE1vcmUKICAgICAgICB9LAogICAgICAgIDUyMDg6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDIyOTgpKSwKICAgICAgICAgICAgICAgIG8gPSBpLmRlZmF1bHQuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZTogZSA9PiBlLiRlbGVtZW50LmZpbmQoIi5lbGVtZW50b3ItcG9ydGZvbGlvIikubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIGdldFNraW5QcmVmaXg6ICgpID0+ICIiLAogICAgICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBpLmRlZmF1bHQucHJvdG90eXBlLmdldERlZmF1bHRTZXR0aW5ncy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50cmFuc2l0aW9uRHVyYXRpb24gPSA0NTAsIGpRdWVyeS5leHRlbmQoZS5jbGFzc2VzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6ICJlbGVtZW50b3ItYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06ICJlbGVtZW50b3ItcG9ydGZvbGlvLWl0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2hvc3RJdGVtOiAiZWxlbWVudG9yLXBvcnRmb2xpby1naG9zdC1pdGVtIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGkuZGVmYXVsdC5wcm90b3R5cGUuZ2V0RGVmYXVsdEVsZW1lbnRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLiRmaWx0ZXJCdXR0b25zID0gdGhpcy4kZWxlbWVudC5maW5kKCIuZWxlbWVudG9yLXBvcnRmb2xpb19fZmlsdGVyIiksIGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldE9mZnNldChlLCB0LCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5nZXRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZWxlbWVudHMuJHBvc3RzQ29udGFpbmVyLndpZHRoKCkgLyBuLmNvbHNDb3VudCAtIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogKHQgKyAoaSArPSBpIC8gKG4uY29sc0NvdW50IC0gMSkpKSAqIChlICUgbi5jb2xzQ291bnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAocyArIGkpICogTWF0aC5mbG9vcihlIC8gbi5jb2xzQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldENsb3N1cmVNZXRob2RzTmFtZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmRlZmF1bHQucHJvdG90eXBlLmdldENsb3N1cmVNZXRob2RzTmFtZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKS5jb25jYXQoWyJvbkZpbHRlckJ1dHRvbkNsaWNrIl0pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJdGVtcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5lbGVtZW50cy4kcG9zdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3Nlcy5hY3RpdmUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAiLmVsZW1lbnRvci1maWx0ZXItIiArIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICJfX2FsbCIgIT09IGUgPyAodC5ub3QobikucmVtb3ZlQ2xhc3MocyksIHQuZmlsdGVyKG4pLmFkZENsYXNzKHMpKSA6IHQuYWRkQ2xhc3MocykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlbW92ZUV4dHJhR2hvc3RJdGVtcygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5lbGVtZW50cy4kcG9zdHMuZmlsdGVyKCI6dmlzaWJsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IChlLmNvbHNDb3VudCAtIHQubGVuZ3RoICUgZS5jb2xzQ291bnQpICUgZS5jb2xzQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHBvc3RzQ29udGFpbmVyLmZpbmQoIi4iICsgZS5jbGFzc2VzLmdob3N0SXRlbSkuc2xpY2UocykucmVtb3ZlKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhhbmRsZUVtcHR5Q29sdW1ucygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFeHRyYUdob3N0SXRlbXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwgdCA9IHRoaXMuZWxlbWVudHMuJHBvc3RzLmZpbHRlcigiOnZpc2libGUiKSwgcyA9IHRoaXMuZWxlbWVudHMuJHBvc3RzQ29udGFpbmVyLmZpbmQoIi4iICsgZS5jbGFzc2VzLmdob3N0SXRlbSksIG4gPSAoZS5jb2xzQ291bnQgLSAodC5sZW5ndGggKyBzLmxlbmd0aCkgJSBlLmNvbHNDb3VudCkgJSBlLmNvbHNDb3VudCwgaSA9IDA7IGkgPCBuOyBpKyspIHRoaXMuZWxlbWVudHMuJHBvc3RzQ29udGFpbmVyLmFwcGVuZChqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGUuY2xhc3Nlcy5pdGVtICsgIiAiICsgZS5jbGFzc2VzLmdob3N0SXRlbQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNob3dJdGVtcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2hvdygpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhpZGVJdGVtcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhcnJhbmdlR3JpZCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBqUXVlcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmdldFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5lbGVtZW50cy4kcG9zdHMuZmlsdGVyKCIuIiArIHMuY2xhc3Nlcy5hY3RpdmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuZWxlbWVudHMuJHBvc3RzLm5vdCgiLiIgKyBzLmNsYXNzZXMuYWN0aXZlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmVsZW1lbnRzLiRwb3N0cy5maWx0ZXIoIjp2aXNpYmxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5hZGQobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbi5maWx0ZXIoIjp2aXNpYmxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5maWx0ZXIoIjpoaWRkZW4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBpLmZpbHRlcigiOnZpc2libGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBvLm91dGVyV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBvLm91dGVySGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmVsZW1lbnRzLiRwb3N0cy5jc3MoInRyYW5zaXRpb24tZHVyYXRpb24iLCBzLnRyYW5zaXRpb25EdXJhdGlvbiArICJtcyIpLCB0LnNob3dJdGVtcyhsKSwgdC5pc0VkaXQgJiYgdC5maXRJbWFnZXMoKSwgdC5oYW5kbGVFbXB0eUNvbHVtbnMoKSwgdC5pc01hc29ucnlFbmFibGVkKCkpIHJldHVybiB0LmhpZGVJdGVtcyhkKSwgdC5zaG93SXRlbXMobCksIHQuaGFuZGxlRW1wdHlDb2x1bW5zKCksIHZvaWQgdC5ydW5NYXNvbnJ5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICJzY2FsZTNkKDAuMiwgMC4yLCAxKSIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGUodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZ2V0T2Zmc2V0KHIuaW5kZXgocyksIGMsIGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmdldE9mZnNldChvLmluZGV4KHMpLCBjLCBoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc3RhcnQgPT09IGkuc3RhcnQgJiYgbi50b3AgPT09IGkudG9wIHx8IChpLnN0YXJ0IC09IG4uc3RhcnQsIGkudG9wIC09IG4udG9wLCBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaXNfcnRsICYmIChpLnN0YXJ0ICo9IC0xKSwgcy5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAidHJhbnNsYXRlM2QoIiArIGkuc3RhcnQgKyAicHgsICIgKyBpLnRvcCArICJweCwgMCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5nZXRPZmZzZXQoci5pbmRleChpKSwgYywgaCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmdldE9mZnNldChuLmluZGV4KGkpLCBjLCBoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogcy50cmFuc2l0aW9uRHVyYXRpb24gKyAibXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEuc3RhcnQgLT0gby5zdGFydCwgYS50b3AgLT0gby50b3AsIGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19ydGwgJiYgKGEuc3RhcnQgKj0gLTEpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5jc3MoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUzZCgiICsgYS5zdGFydCArICJweCwgIiArIGEudG9wICsgInB4LCAwKSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaGlkZUl0ZW1zKGQpLCBuLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICJ0cmFuc2xhdGUzZCgwcHgsIDBweCwgMHB4KSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LmhhbmRsZUVtcHR5Q29sdW1ucygpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBzLnRyYW5zaXRpb25EdXJhdGlvbikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFjdGl2ZUZpbHRlckJ1dHRvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3Nlcy5hY3RpdmUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmVsZW1lbnRzLiRmaWx0ZXJCdXR0b25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHMuZmlsdGVyKCdbZGF0YS1maWx0ZXI9IicgKyBlICsgJyJdJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMucmVtb3ZlQ2xhc3ModCksIG4uYWRkQ2xhc3ModCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldEZpbHRlcihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRmlsdGVyQnV0dG9uKGUpLCB0aGlzLmZpbHRlckl0ZW1zKGUpLCB0aGlzLmFycmFuZ2VHcmlkKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlZnJlc2hHcmlkKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldENvbHNDb3VudFNldHRpbmdzKCksIHRoaXMuYXJyYW5nZUdyaWQoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5kZWZhdWx0LnByb3RvdHlwZS5iaW5kRXZlbnRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRoaXMuZWxlbWVudHMuJGZpbHRlckJ1dHRvbnMub24oImNsaWNrIiwgdGhpcy5vbkZpbHRlckJ1dHRvbkNsaWNrKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaXNNYXNvbnJ5RW5hYmxlZCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoIm1hc29ucnkiKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcnVuKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLmRlZmF1bHQucHJvdG90eXBlLnJ1bi5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB0aGlzLnNldENvbHNDb3VudFNldHRpbmdzKCksIHRoaXMuc2V0RmlsdGVyKCJfX2FsbCIpLCB0aGlzLmhhbmRsZUVtcHR5Q29sdW1ucygpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvbkZpbHRlckJ1dHRvbkNsaWNrKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXIoalF1ZXJ5KGUuY3VycmVudFRhcmdldCkuZGF0YSgiZmlsdGVyIikpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvbldpbmRvd1Jlc2l6ZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5kZWZhdWx0LnByb3RvdHlwZS5vbldpbmRvd1Jlc2l6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB0aGlzLnJlZnJlc2hHcmlkKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuZGVmYXVsdC5wcm90b3R5cGUub25FbGVtZW50Q2hhbmdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksICJjbGFzc2ljX2l0ZW1fcmF0aW8iID09PSBlICYmIHRoaXMucmVmcmVzaEdyaWQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBvCiAgICAgICAgfSwKICAgICAgICAyMjk4OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIHMgPSBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldFNraW5QcmVmaXg6ICgpID0+ICJjbGFzc2ljXyIsCiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRNb2RlbENJRCgpOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmFkZExpc3RlbmVyT25jZShlLCAicmVzaXplIiwgdGhpcy5vbldpbmRvd1Jlc2l6ZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRDbG9zdXJlTWV0aG9kc05hbWVzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UucHJvdG90eXBlLmdldENsb3N1cmVNZXRob2RzTmFtZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKS5jb25jYXQoWyJmaXRJbWFnZXMiLCAib25XaW5kb3dSZXNpemUiLCAicnVuTWFzb25yeSJdKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5nczogKCkgPT4gKHsKICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpdEhlaWdodDogImVsZW1lbnRvci1maXQtaGVpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgaGFzSXRlbVJhdGlvOiAiZWxlbWVudG9yLWhhcy1pdGVtLXJhdGlvIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RzQ29udGFpbmVyOiAiLmVsZW1lbnRvci1wb3N0cy1jb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBwb3N0OiAiLmVsZW1lbnRvci1wb3N0IiwKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdFRodW1ibmFpbDogIi5lbGVtZW50b3ItcG9zdF9fdGh1bWJuYWlsIiwKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdFRodW1ibmFpbEltYWdlOiAiLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWwgaW1nIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBvc3RzQ29udGFpbmVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5wb3N0c0NvbnRhaW5lciksCiAgICAgICAgICAgICAgICAgICAgICAgICRwb3N0czogdGhpcy4kZWxlbWVudC5maW5kKGUucG9zdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZml0SW1hZ2UoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5nZXRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5maW5kKHQuc2VsZWN0b3JzLnBvc3RUaHVtYm5haWwpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gcy5maW5kKCJpbWciKVswXTsKICAgICAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHMub3V0ZXJIZWlnaHQoKSAvIHMub3V0ZXJXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4ubmF0dXJhbEhlaWdodCAvIG4ubmF0dXJhbFdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICBzLnRvZ2dsZUNsYXNzKHQuY2xhc3Nlcy5maXRIZWlnaHQsIG8gPCBpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmaXRJbWFnZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBqUXVlcnksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLiRlbGVtZW50WzBdLCAiOmFmdGVyIikuY29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRwb3N0c0NvbnRhaW5lci50b2dnbGVDbGFzcyhuLmNsYXNzZXMuaGFzSXRlbVJhdGlvLCAhIXMubWF0Y2goL1xkLykpLCB0LmlzTWFzb25yeUVuYWJsZWQoKSB8fCB0aGlzLmVsZW1lbnRzLiRwb3N0cy5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBlKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHMuZmluZChuLnNlbGVjdG9ycy5wb3N0VGh1bWJuYWlsSW1hZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICB0LmZpdEltYWdlKHMpLCBpLm9uKCJsb2FkIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5maXRJbWFnZShzKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRDb2xzQ291bnRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VNb2RlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5nZXRTa2luUHJlZml4KCk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vYmlsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gc1tuICsgImNvbHVtbnNfbW9iaWxlIl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFibGV0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBzW24gKyAiY29sdW1uc190YWJsZXQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHNbbiArICJjb2x1bW5zIl0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZXR0aW5ncygiY29sc0NvdW50IiwgZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpc01hc29ucnlFbmFibGVkKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKHRoaXMuZ2V0U2tpblByZWZpeCgpICsgIm1hc29ucnkiKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaXRNYXNvbnJ5KCkgewogICAgICAgICAgICAgICAgICAgIGltYWdlc0xvYWRlZCh0aGlzLmVsZW1lbnRzLiRwb3N0cywgdGhpcy5ydW5NYXNvbnJ5KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJ1bk1hc29ucnkoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmVsZW1lbnRzOwogICAgICAgICAgICAgICAgICAgIGUuJHBvc3RzLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogIiIKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5zZXRDb2xzQ291bnRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5nZXRTZXR0aW5ncygiY29sc0NvdW50IiksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmlzTWFzb25yeUVuYWJsZWQoKSAmJiB0ID49IDI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuJHBvc3RzQ29udGFpbmVyLnRvZ2dsZUNsYXNzKCJlbGVtZW50b3ItcG9zdHMtbWFzb25yeSIsIHMpLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3ModGhpcy5nZXRTa2luUHJlZml4KCkgKyAicm93X2dhcC5zaXplIik7CiAgICAgICAgICAgICAgICAgICAgICAgICIiID09PSB0aGlzLmdldFNraW5QcmVmaXgoKSAmJiAiIiA9PT0gbiAmJiAobiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKHRoaXMuZ2V0U2tpblByZWZpeCgpICsgIml0ZW1fZ2FwLnNpemUiKSksIG5ldyBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLk1hc29ucnkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBlLiRwb3N0c0NvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBlLiRwb3N0cy5maWx0ZXIoIjp2aXNpYmxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zQ291bnQ6IHRoaXMuZ2V0U2V0dGluZ3MoImNvbHNDb3VudCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxTcGFjZUJldHdlZW46IG4KICAgICAgICAgICAgICAgICAgICAgICAgfSkucnVuKCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZS4kcG9zdHNDb250YWluZXIuaGVpZ2h0KCIiKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJ1bigpIHsKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMuZml0SW1hZ2VzLCAwKSwgdGhpcy5pbml0TWFzb25yeSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZS5wcm90b3R5cGUub25Jbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRoaXMuYmluZEV2ZW50cygpLCB0aGlzLnJ1bigpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25XaW5kb3dSZXNpemUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXRJbWFnZXMoKSwgdGhpcy5ydW5NYXNvbnJ5KCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXRJbWFnZXMoKSwgc2V0VGltZW91dCh0aGlzLnJ1bk1hc29ucnkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBzCiAgICAgICAgfSwKICAgICAgICA2MjA4OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg0MTEyKSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInNoYXJlLWJ1dHRvbnMiLCBpLmRlZmF1bHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDQxMTI6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgcyA9IGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZS5leHRlbmQoewogICAgICAgICAgICAgICAgYXN5bmMgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlLnByb3RvdHlwZS5vbkluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuc2hhcmVfdXJsICYmIGUuc2hhcmVfdXJsLnVybCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzUHJlZml4OiB0LnNoYXJlTGlua1ByZWZpeAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHMgPyBuLnVybCA9IGUuc2hhcmVfdXJsLnVybCA6IChuLnVybCA9IGxvY2F0aW9uLmhyZWYsIG4udGl0bGUgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucG9zdC50aXRsZSwgbi50ZXh0ID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnBvc3QuZXhjZXJwdCwgbi5pbWFnZSA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5wb3N0LmZlYXR1cmVkSW1hZ2UpLCAhd2luZG93LlNoYXJlTGluayAmJiBlbGVtZW50b3JGcm9udGVuZC51dGlscy5hc3NldHNMb2FkZXIgJiYgYXdhaXQgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuYXNzZXRzTG9hZGVyLmxvYWQoInNjcmlwdCIsICJzaGFyZS1saW5rIiksIHRoaXMuZWxlbWVudHMuJHNoYXJlQnV0dG9uLnNoYXJlTGluayAmJiB0aGlzLmVsZW1lbnRzLiRzaGFyZUJ1dHRvbi5zaGFyZUxpbmsobikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6ICgpID0+ICh7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQnV0dG9uOiAiLmVsZW1lbnRvci1zaGFyZS1idG4iCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlTGlua1ByZWZpeDogImVsZW1lbnRvci1zaGFyZS1idG5fIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNoYXJlQnV0dG9uOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zaGFyZUJ1dHRvbikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaXNBY3RpdmU6ICgpID0+ICFlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IHMKICAgICAgICB9LAogICAgICAgIDg3NDY6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDkzNzgpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigic2xpZGVzIiwgaS5kZWZhdWx0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA5Mzc4OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgU2xpZGVzSGFuZGxlciBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuU3dpcGVyQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXI6ICIuZWxlbWVudG9yLXNsaWRlcy13cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlOiAiLnN3aXBlci1zbGlkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUlubmVyQ29udGVudHM6ICIuc3dpcGVyLXNsaWRlLWNvbnRlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVNsaWRlOiAiLnN3aXBlci1zbGlkZS1hY3RpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlRHVwbGljYXRlOiAiLnN3aXBlci1zbGlkZS1kdXBsaWNhdGUtYWN0aXZlIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlZDogImFuaW1hdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlbkJ1cm5zQWN0aXZlOiAiZWxlbWVudG9yLWtlbi1idXJucy0tYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlQmFja2dyb3VuZDogInN3aXBlci1zbGlkZS1iZyIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNsaWRlck9wdGlvbnM6ICJzbGlkZXJfb3B0aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQW5pbWF0aW9uOiAiYW5pbWF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzd2lwZXJDb250YWluZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLnNsaWRlcikKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC4kc2xpZGVzID0gdC4kc3dpcGVyQ29udGFpbmVyLmZpbmQoZS5zbGlkZSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFN3aXBlck9wdGlvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRBdXRvcGxheUNvbmZpZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhYkN1cnNvcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsU2xpZGU6IHRoaXMuZ2V0SW5pdGlhbFNsaWRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wOiAieWVzIiA9PT0gZS5pbmZpbml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiBlLnRyYW5zaXRpb25fc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3Q6IGUudHJhbnNpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVQYXJlbnRzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUVsZW1lbnRvckJyZWFrcG9pbnRzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVDaGFuZ2U6ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVLZW5CdXJucygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gImFycm93cyIgPT09IGUubmF2aWdhdGlvbiB8fCAiYm90aCIgPT09IGUubmF2aWdhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICJkb3RzIiA9PT0gZS5uYXZpZ2F0aW9uIHx8ICJib3RoIiA9PT0gZS5uYXZpZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzICYmICh0Lm5hdmlnYXRpb24gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZFbDogIi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IiwKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEVsOiAiLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQiCiAgICAgICAgICAgICAgICAgICAgfSksIG4gJiYgKHQucGFnaW5hdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWw6ICIuc3dpcGVyLXBhZ2luYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiYnVsbGV0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrYWJsZTogITAKICAgICAgICAgICAgICAgICAgICB9KSwgITAgPT09IHQubG9vcCAmJiAodC5sb29wZWRTbGlkZXMgPSB0aGlzLmdldFNsaWRlc0NvdW50KCkpLCAiZmFkZSIgPT09IHQuZWZmZWN0ICYmICh0LmZhZGVFZmZlY3QgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzRmFkZTogITAKICAgICAgICAgICAgICAgICAgICB9KSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QXV0b3BsYXlDb25maWcoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ5ZXMiID09PSBlLmF1dG9wbGF5ICYmIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcE9uTGFzdFNsaWRlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IGUuYXV0b3BsYXlfc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiAieWVzIiA9PT0gZS5wYXVzZV9vbl9pbnRlcmFjdGlvbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRTaW5nbGVTbGlkZUFuaW1hdGlvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lci5kYXRhKGUuYXR0cmlidXRlcy5kYXRhQW5pbWF0aW9uKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIuZmluZCgiLiIgKyBlLmNsYXNzZXMuc2xpZGVCYWNrZ3JvdW5kKS5hZGRDbGFzcyhlLmNsYXNzZXMua2VuQnVybnNBY3RpdmUpLCB0ICYmIHRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lci5maW5kKGUuc2VsZWN0b3JzLnNsaWRlSW5uZXJDb250ZW50cykuYWRkQ2xhc3MoZS5jbGFzc2VzLmFuaW1hdGVkICsgIiAiICsgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFzeW5jIGluaXRTbGlkZXIoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmRhdGEodC5hdHRyaWJ1dGVzLmRhdGFBbmltYXRpb24pOwogICAgICAgICAgICAgICAgICAgIGlmICghZS5sZW5ndGgpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA+PSB0aGlzLmdldFNsaWRlc0NvdW50KCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuc3dpcGVyOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyID0gYXdhaXQgbmV3IGkoZSwgdGhpcy5nZXRTd2lwZXJPcHRpb25zKCkpLCBlLmRhdGEoInN3aXBlciIsIHRoaXMuc3dpcGVyKSwgdGhpcy5oYW5kbGVLZW5CdXJucygpLCBzLnBhdXNlX29uX2hvdmVyICYmIHRoaXMudG9nZ2xlUGF1c2VPbkhvdmVyKCEwKSwgbiAmJiAodGhpcy5zd2lwZXIub24oInNsaWRlQ2hhbmdlVHJhbnNpdGlvblN0YXJ0IiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmZpbmQodC5zZWxlY3RvcnMuc2xpZGVJbm5lckNvbnRlbnRzKS5yZW1vdmVDbGFzcyh0LmNsYXNzZXMuYW5pbWF0ZWQgKyAiICIgKyBuKS5oaWRlKCkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuc3dpcGVyLm9uKCJzbGlkZUNoYW5nZVRyYW5zaXRpb25FbmQiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZmluZCh0LnNlbGVjdG9ycy5zbGlkZUlubmVyQ29udGVudHMpLnNob3coKS5hZGRDbGFzcyh0LmNsYXNzZXMuYW5pbWF0ZWQgKyAiICIgKyBuKQogICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UucHJvdG90eXBlLm9uSW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCAyID4gdGhpcy5nZXRTbGlkZXNDb3VudCgpID8gdGhpcy5pbml0U2luZ2xlU2xpZGVBbmltYXRpb25zKCkgOiB0aGlzLmluaXRTbGlkZXIoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0Q2hhbmdlYWJsZVByb3BlcnRpZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF1c2Vfb25faG92ZXI6ICJwYXVzZU9uSG92ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBwYXVzZV9vbl9pbnRlcmFjdGlvbjogImRpc2FibGVPbkludGVyYWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXlfc3BlZWQ6ICJkZWxheSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25fc3BlZWQ6ICJzcGVlZCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVTd2lwZXJPcHRpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBlLmluZGV4T2YoIndpZHRoIikpIHJldHVybiB2b2lkIHRoaXMuc3dpcGVyLnVwZGF0ZSgpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IHRoaXMuZ2V0Q2hhbmdlYWJsZVByb3BlcnRpZXMoKVtlXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHM7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImF1dG9wbGF5X3NwZWVkIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAiYXV0b3BsYXkiLCBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiAieWVzIiA9PT0gdC5wYXVzZV9vbl9pbnRlcmFjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwYXVzZV9vbl9ob3ZlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVBhdXNlT25Ib3ZlcigieWVzIiA9PT0gcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGF1c2Vfb25faW50ZXJhY3Rpb24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICJ5ZXMiID09PSBzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICJwYXVzZV9vbl9ob3ZlciIgIT09IGUgJiYgKHRoaXMuc3dpcGVyLnBhcmFtc1tuXSA9IGkpLCB0aGlzLnN3aXBlci51cGRhdGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA+PSB0aGlzLmdldFNsaWRlc0NvdW50KCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENoYW5nZWFibGVQcm9wZXJ0aWVzKCkuaGFzT3duUHJvcGVydHkoZSkgJiYgdGhpcy51cGRhdGVTd2lwZXJPcHRpb24oZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWRpdFNldHRpbmdzQ2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICAxID49IHRoaXMuZ2V0U2xpZGVzQ291bnQoKSB8fCAiYWN0aXZlSXRlbUluZGV4IiA9PT0gZSAmJiB0aGlzLnN3aXBlci5zbGlkZVRvTG9vcCh0aGlzLmdldEVkaXRTZXR0aW5ncygiYWN0aXZlSXRlbUluZGV4IikgLSAxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IFNsaWRlc0hhbmRsZXIKICAgICAgICB9LAogICAgICAgIDEwNjA6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDMyMjUpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigiZmFjZWJvb2stYnV0dG9uIiwgaS5kZWZhdWx0KSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoImZhY2Vib29rLWNvbW1lbnRzIiwgaS5kZWZhdWx0KSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoImZhY2Vib29rLWVtYmVkIiwgaS5kZWZhdWx0KSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoImZhY2Vib29rLXBhZ2UiLCBpLmRlZmF1bHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDMyMjU6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBGYWNlYm9va0hhbmRsZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0Q29uZmlnKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JQcm9Gcm9udGVuZC5jb25maWcuZmFjZWJvb2tfc2RrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRDb25maWcoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvclByb0Zyb250ZW5kLmNvbmZpZy5mYWNlYm9va19zZGtbZV0gPSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwYXJzZSgpIHsKICAgICAgICAgICAgICAgICAgICBGQi5YRkJNTC5wYXJzZSh0aGlzLiRlbGVtZW50WzBdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbG9hZFNESygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRDb25maWcoKTsKICAgICAgICAgICAgICAgICAgICBlLmlzTG9hZGluZyB8fCBlLmlzTG9hZGVkIHx8ICh0aGlzLnNldENvbmZpZygiaXNMb2FkaW5nIiwgITApLCBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogImh0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQvIiArIGUubGFuZyArICIvc2RrLmpzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICBjYWNoZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZCLmluaXQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcElkOiBlLmFwcF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiAidjIuMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmYm1sOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuc2V0Q29uZmlnKCJpc0xvYWRlZCIsICEwKSwgdGhpcy5zZXRDb25maWcoImlzTG9hZGluZyIsICExKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGRvY3VtZW50LnRyaWdnZXIoImZiOnNkazpsb2FkZWQiKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksIHRoaXMubG9hZFNESygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29uZmlnKCkuaXNMb2FkZWQgPyB0aGlzLnBhcnNlKCkgOiBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQub24oImZiOnNkazpsb2FkZWQiLCAoKCkgPT4gdGhpcy5wYXJzZSgpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBGYWNlYm9va0hhbmRsZXIKICAgICAgICB9LAogICAgICAgIDMzMzQ6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDgyMDgpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigidGFibGUtb2YtY29udGVudHMiLCBpLmRlZmF1bHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDgyMDg6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg4MDAzKS5fXzsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIFRPQ0hhbmRsZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0Q29udGFpbmVyOiAiLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RDb250ZW50Q29udGFpbmVyOiAnLmVsZW1lbnRvcjpub3QoW2RhdGEtZWxlbWVudG9yLXR5cGU9ImhlYWRlciJdKTpub3QoW2RhdGEtZWxlbWVudG9yLXR5cGU9ImZvb3RlciJdKTpub3QoW2RhdGEtZWxlbWVudG9yLXR5cGU9InBvcHVwIl0pJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZEJ1dHRvbjogIi5lbGVtZW50b3ItdG9jX190b2dnbGUtYnV0dG9uLS1leHBhbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VCdXR0b246ICIuZWxlbWVudG9yLXRvY19fdG9nZ2xlLWJ1dHRvbi0tY29sbGFwc2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogIi5lbGVtZW50b3ItdG9jX19ib2R5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlclRpdGxlOiAiLmVsZW1lbnRvci10b2NfX2hlYWRlci10aXRsZSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yOiAiZWxlbWVudG9yLW1lbnUtYW5jaG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RXcmFwcGVyOiAiZWxlbWVudG9yLXRvY19fbGlzdC13cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtOiAiZWxlbWVudG9yLXRvY19fbGlzdC1pdGVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RUZXh0V3JhcHBlcjogImVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS10ZXh0LXdyYXBwZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RMZXZlbExpc3RJdGVtOiAiZWxlbWVudG9yLXRvY19fdG9wLWxldmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtVGV4dDogImVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS10ZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0ZW06ICJlbGVtZW50b3ItaXRlbS1hY3RpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZ0FuY2hvcjogImVsZW1lbnRvci10b2NfX2hlYWRpbmctYW5jaG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogImVsZW1lbnRvci10b2MtLWNvbGxhcHNlZCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFdyYXBwZXJUYWc6ICJudW1iZXJzIiA9PT0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKS5tYXJrZXJfdmlldyA/ICJvbCIgOiAidWwiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VDb250YWluZXI6IHRoaXMuZ2V0Q29udGFpbmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICR3aWRnZXRDb250YWluZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLnNlbGVjdG9ycy53aWRnZXRDb250YWluZXIpLAogICAgICAgICAgICAgICAgICAgICAgICAkZXhwYW5kQnV0dG9uOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zZWxlY3RvcnMuZXhwYW5kQnV0dG9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbGxhcHNlQnV0dG9uOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zZWxlY3RvcnMuY29sbGFwc2VCdXR0b24pLAogICAgICAgICAgICAgICAgICAgICAgICAkdG9jQm9keTogdGhpcy4kZWxlbWVudC5maW5kKGUuc2VsZWN0b3JzLmJvZHkpLAogICAgICAgICAgICAgICAgICAgICAgICAkbGlzdEl0ZW1zOiB0aGlzLiRlbGVtZW50LmZpbmQoIi4iICsgZS5jbGFzc2VzLmxpc3RJdGVtKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldENvbnRhaW5lcigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5jb250YWluZXIpIHJldHVybiBqUXVlcnkodC5jb250YWluZXIpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLiRlbGVtZW50LnBhcmVudHMoIi5lbGVtZW50b3IiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInBvcHVwIiA9PT0gcy5hdHRyKCJkYXRhLWVsZW1lbnRvci10eXBlIikgPyBzIDogalF1ZXJ5KGUuc2VsZWN0b3JzLnBvc3RDb250ZW50Q29udGFpbmVyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICBlLm1pbmltaXplX2JveCAmJiAodGhpcy5lbGVtZW50cy4kZXhwYW5kQnV0dG9uLm9uKCJjbGljayIsICgoKSA9PiB0aGlzLmV4cGFuZEJveCgpKSksIHRoaXMuZWxlbWVudHMuJGNvbGxhcHNlQnV0dG9uLm9uKCJjbGljayIsICgoKSA9PiB0aGlzLmNvbGxhcHNlQm94KCkpKSksIGUuY29sbGFwc2Vfc3ViaXRlbXMgJiYgdGhpcy5lbGVtZW50cy4kbGlzdEl0ZW1zLm9uKCJob3ZlciIsIChlID0+IGpRdWVyeShlLnRhcmdldCkuc2xpZGVUb2dnbGUoKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRIZWFkaW5ncygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGUuaGVhZGluZ3NfYnlfdGFncy5qb2luKCIsIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuZXhjbHVkZV9oZWFkaW5nc19ieV9zZWxlY3RvcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cy4kcGFnZUNvbnRhaW5lci5maW5kKHQpLm5vdChzLmhlYWRlclRpdGxlKS5maWx0ZXIoKChlLCB0KSA9PiAhalF1ZXJ5KHQpLmNsb3Nlc3QobikubGVuZ3RoKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFkZEFuY2hvcnNCZWZvcmVIZWFkaW5ncygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGhlYWRpbmdzLmJlZm9yZSgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghalF1ZXJ5KHRoaXMuZWxlbWVudHMuJGhlYWRpbmdzW3RdKS5kYXRhKCJoYXNPd25JRCIpKSByZXR1cm4gYDxzcGFuIGlkPSIke2UuaGVhZGluZ0FuY2hvcn0tJHt0fSIgY2xhc3M9IiR7ZS5hbmNob3J9ICI+PC9zcGFuPmAKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFjdGl2YXRlSXRlbShlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWFjdGl2YXRlQWN0aXZlSXRlbShlKSwgZS5hZGRDbGFzcyh0LmFjdGl2ZUl0ZW0pLCB0aGlzLiRhY3RpdmVJdGVtID0gZSwgIXRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJjb2xsYXBzZV9zdWJpdGVtcyIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgbGV0IHM7CiAgICAgICAgICAgICAgICAgICAgcyA9IGUuaGFzQ2xhc3ModC5maXJzdExldmVsTGlzdEl0ZW0pID8gZS5wYXJlbnQoKS5uZXh0KCkgOiBlLnBhcmVudHMoIi4iICsgdC5saXN0V3JhcHBlcikuZXEoLTIpLCBzLmxlbmd0aCA/ICh0aGlzLiRhY3RpdmVMaXN0ID0gcywgdGhpcy4kYWN0aXZlTGlzdC5zdG9wKCkuc2xpZGVEb3duKCkpIDogZGVsZXRlIHRoaXMuJGFjdGl2ZUxpc3QKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVBY3RpdmVJdGVtKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuJGFjdGl2ZUl0ZW0gfHwgdGhpcy4kYWN0aXZlSXRlbS5pcyhlKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogdAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kYWN0aXZlSXRlbS5yZW1vdmVDbGFzcyh0LmFjdGl2ZUl0ZW0pLCAhdGhpcy4kYWN0aXZlTGlzdCB8fCBlICYmIHRoaXMuJGFjdGl2ZUxpc3RbMF0uY29udGFpbnMoZVswXSkgfHwgdGhpcy4kYWN0aXZlTGlzdC5zbGlkZVVwKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvbGxvd0FuY2hvcihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IGVbMF0uaGFzaDsKICAgICAgICAgICAgICAgICAgICBsZXQgbjsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBuID0galF1ZXJ5KGRlY29kZVVSSUNvbXBvbmVudChzKSkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC53YXlwb2ludChuLCAocyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1DbGlja2VkKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBuLmF0dHIoImlkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICJkb3duIiA9PT0gcyA/ICh0aGlzLnZpZXdwb3J0SXRlbXNbaV0gPSAhMCwgdGhpcy5hY3RpdmF0ZUl0ZW0oZSkpIDogKGRlbGV0ZSB0aGlzLnZpZXdwb3J0SXRlbXNbaV0sIHRoaXMuYWN0aXZhdGVJdGVtKHRoaXMuJGxpc3RJdGVtVGV4dHMuZXEodCAtIDEpKSkKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6ICJib3R0b20taW4tdmlldyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPbmNlOiAhMQogICAgICAgICAgICAgICAgICAgIH0pLCBlbGVtZW50b3JGcm9udGVuZC53YXlwb2ludChuLCAocyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1DbGlja2VkKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBuLmF0dHIoImlkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICJkb3duIiA9PT0gcyA/IChkZWxldGUgdGhpcy52aWV3cG9ydEl0ZW1zW2ldLCBPYmplY3Qua2V5cyh0aGlzLnZpZXdwb3J0SXRlbXMpLmxlbmd0aCAmJiB0aGlzLmFjdGl2YXRlSXRlbSh0aGlzLiRsaXN0SXRlbVRleHRzLmVxKHQgKyAxKSkpIDogKHRoaXMudmlld3BvcnRJdGVtc1tpXSA9ICEwLCB0aGlzLmFjdGl2YXRlSXRlbShlKSkKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPbmNlOiAhMQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb2xsb3dBbmNob3JzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGxpc3RJdGVtVGV4dHMuZWFjaCgoKGUsIHQpID0+IHRoaXMuZm9sbG93QW5jaG9yKGpRdWVyeSh0KSwgZSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcG9wdWxhdGVUT0MoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SXRlbVBvaW50ZXIgPSAwOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCkuaGllcmFyY2hpY2FsX3ZpZXcgPyB0aGlzLmNyZWF0ZU5lc3RlZExpc3QoKSA6IHRoaXMuY3JlYXRlRmxhdExpc3QoKSwgdGhpcy4kbGlzdEl0ZW1UZXh0cyA9IHRoaXMuJGVsZW1lbnQuZmluZCgiLmVsZW1lbnRvci10b2NfX2xpc3QtaXRlbS10ZXh0IiksIHRoaXMuJGxpc3RJdGVtVGV4dHMub24oImNsaWNrIiwgdGhpcy5vbkxpc3RJdGVtQ2xpY2suYmluZCh0aGlzKSksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSB8fCB0aGlzLmZvbGxvd0FuY2hvcnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3JlYXRlTmVzdGVkTGlzdCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRpbmdzRGF0YS5mb3JFYWNoKCgoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlLmxldmVsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IHQgLSAxOyBzID49IDA7IHMtLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuaGVhZGluZ3NEYXRhW3NdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQudGFnIDw9IGUudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5sZXZlbCA9IHQubGV2ZWwsIHQudGFnIDwgZS50YWcgJiYgZS5sZXZlbCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZWxlbWVudHMuJHRvY0JvZHkuaHRtbCh0aGlzLmdldE5lc3RlZExldmVsKDApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3JlYXRlRmxhdExpc3QoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kdG9jQm9keS5odG1sKHRoaXMuZ2V0TmVzdGVkTGV2ZWwoKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldE5lc3RlZExldmVsKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJpY29uIik7CiAgICAgICAgICAgICAgICAgICAgbGV0IGk7CiAgICAgICAgICAgICAgICAgICAgbiAmJiAoaSA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5leHBlcmltZW50YWxGZWF0dXJlcy5lX2ZvbnRfaWNvbl9zdmcgJiYgIWVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSA/IG4ucmVuZGVyZWRfdGFnIDogYDxpIGNsYXNzPSIke24udmFsdWV9Ij48L2k+YCk7CiAgICAgICAgICAgICAgICAgICAgbGV0IG8gPSBgPCR7dC5saXN0V3JhcHBlclRhZ30gY2xhc3M9IiR7dC5jbGFzc2VzLmxpc3RXcmFwcGVyfSI+YDsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdGhpcy5saXN0SXRlbVBvaW50ZXIgPCB0aGlzLmhlYWRpbmdzRGF0YS5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmhlYWRpbmdzRGF0YVt0aGlzLmxpc3RJdGVtUG9pbnRlcl07CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gdC5jbGFzc2VzLmxpc3RJdGVtVGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHIubGV2ZWwgJiYgKGEgKz0gIiAiICsgdC5jbGFzc2VzLmZpcnN0TGV2ZWxMaXN0SXRlbSksIGUgPiByLmxldmVsKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IHIubGV2ZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gKz0gYDxsaSBjbGFzcz0iJHt0LmNsYXNzZXMubGlzdEl0ZW19Ij5gLCBvICs9IGA8ZGl2IGNsYXNzPSIke3QuY2xhc3Nlcy5saXN0VGV4dFdyYXBwZXJ9Ij5gOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGwgPSBgPGEgaHJlZj0iIyR7ci5hbmNob3JMaW5rfSIgY2xhc3M9IiR7YX0iPiR7ci50ZXh0fTwvYT5gOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1bGxldHMiID09PSBzLm1hcmtlcl92aWV3ICYmIG4gJiYgKGwgPSBgJHtpfSR7bH1gKSwgbyArPSBsLCBvICs9ICI8L2Rpdj4iLCB0aGlzLmxpc3RJdGVtUG9pbnRlcisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuaGVhZGluZ3NEYXRhW3RoaXMubGlzdEl0ZW1Qb2ludGVyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgJiYgZSA8IGQubGV2ZWwgJiYgKG8gKz0gdGhpcy5nZXROZXN0ZWRMZXZlbChkLmxldmVsKSksIG8gKz0gIjwvbGk+IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBvICs9IGA8LyR7dC5saXN0V3JhcHBlclRhZ30+YCwgbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGFuZGxlTm9IZWFkaW5nc0ZvdW5kKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gbigiTm8gaGVhZGluZ3Mgd2VyZSBmb3VuZCBvbiB0aGlzIHBhZ2UuIiwgImVsZW1lbnRvci1wcm8iKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cy4kdG9jQm9keS5odG1sKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb2xsYXBzZU9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoIm1pbmltaXplZF9vbiIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKTsKICAgICAgICAgICAgICAgICAgICAoInRhYmxldCIgPT09IGUgJiYgImRlc2t0b3AiICE9PSB0IHx8ICJtb2JpbGUiID09PSBlICYmICJtb2JpbGUiID09PSB0KSAmJiB0aGlzLmNvbGxhcHNlQm94KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEhlYWRpbmdBbmNob3JMaW5rKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5lbGVtZW50cy4kaGVhZGluZ3NbZV0uaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmVsZW1lbnRzLiRoZWFkaW5nc1tlXS5jbG9zZXN0KCIuZWxlbWVudG9yLXdpZGdldCIpLmlkOwogICAgICAgICAgICAgICAgICAgIGxldCBpID0gIiI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPyBpID0gcyA6IG4gJiYgKGkgPSBuKSwgcyB8fCBuID8galF1ZXJ5KHRoaXMuZWxlbWVudHMuJGhlYWRpbmdzW2VdKS5kYXRhKCJoYXNPd25JRCIsICEwKSA6IGkgPSBgJHt0LmhlYWRpbmdBbmNob3J9LSR7ZX1gLCBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRIZWFkaW5nc0RhdGEoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkaW5nc0RhdGEgPSBbXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygiY2xhc3NlcyIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGhlYWRpbmdzLmVhY2goKCh0LCBzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmdldEhlYWRpbmdBbmNob3JMaW5rKHQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRpbmdzRGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogK3Mubm9kZU5hbWUuc2xpY2UoMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBzLnRleHRDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yTGluazogbgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcnVuKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnRzLiRoZWFkaW5ncyA9IHRoaXMuZ2V0SGVhZGluZ3MoKSwgIXRoaXMuZWxlbWVudHMuJGhlYWRpbmdzLmxlbmd0aCkgcmV0dXJuIHRoaXMuaGFuZGxlTm9IZWFkaW5nc0ZvdW5kKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRIZWFkaW5nc0RhdGEoKSwgZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpIHx8IHRoaXMuYWRkQW5jaG9yc0JlZm9yZUhlYWRpbmdzKCksIHRoaXMucG9wdWxhdGVUT0MoKSwgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoIm1pbmltaXplX2JveCIpICYmIHRoaXMuY29sbGFwc2VPbkluaXQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZXhwYW5kQm94KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKCJtaW5faGVpZ2h0Iik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzLmNvbGxhcHNlZCIpKSwgdGhpcy5lbGVtZW50cy4kdG9jQm9keS5zbGlkZURvd24oKSwgdGhpcy5lbGVtZW50cy4kd2lkZ2V0Q29udGFpbmVyLmNzcygibWluLWhlaWdodCIsIGUuc2l6ZSArIGUudW5pdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbGxhcHNlQm94KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5nZXRTZXR0aW5ncygiY2xhc3Nlcy5jb2xsYXBzZWQiKSksIHRoaXMuZWxlbWVudHMuJHRvY0JvZHkuc2xpZGVVcCgpLCB0aGlzLmVsZW1lbnRzLiR3aWRnZXRDb250YWluZXIuY3NzKCJtaW4taGVpZ2h0IiwgIjBweCIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksIHRoaXMudmlld3BvcnRJdGVtcyA9IFtdLCBqUXVlcnkoKCgpID0+IHRoaXMucnVuKCkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25MaXN0SXRlbUNsaWNrKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gITAsIHNldFRpbWVvdXQoKCgpID0+IHRoaXMuaXRlbUNsaWNrZWQgPSAhMSksIDJlMyk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGpRdWVyeShlLnRhcmdldCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnBhcmVudCgpLm5leHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJjb2xsYXBzZV9zdWJpdGVtcyIpOwogICAgICAgICAgICAgICAgICAgIGxldCBpOwogICAgICAgICAgICAgICAgICAgIG4gJiYgdC5oYXNDbGFzcyh0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzLmZpcnN0TGV2ZWxMaXN0SXRlbSIpKSAmJiBzLmlzKCI6dmlzaWJsZSIpICYmIChpID0gITApLCB0aGlzLmFjdGl2YXRlSXRlbSh0KSwgbiAmJiBpICYmIHMuc2xpZGVVcCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gVE9DSGFuZGxlcgogICAgICAgIH0sCiAgICAgICAgNTQ3NTogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoODUzNykpLAogICAgICAgICAgICAgICAgbyA9IG4ocyg5NDA5KSksCiAgICAgICAgICAgICAgICByID0gbihzKDgyOTcpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBbImFyY2hpdmVfY2xhc3NpYyIsICJhcmNoaXZlX2Z1bGxfY29udGVudCIsICJhcmNoaXZlX2NhcmRzIl0uZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hdHRhY2hIYW5kbGVyKCJhcmNoaXZlLXBvc3RzIiwgci5kZWZhdWx0LCBlKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoImFyY2hpdmUtcG9zdHMiLCBpLmRlZmF1bHQsICJhcmNoaXZlX2NsYXNzaWMiKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoImFyY2hpdmUtcG9zdHMiLCBpLmRlZmF1bHQsICJhcmNoaXZlX2Z1bGxfY29udGVudCIpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigiYXJjaGl2ZS1wb3N0cyIsIG8uZGVmYXVsdCwgImFyY2hpdmVfY2FyZHMiKSwgalF1ZXJ5KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBsb2NhdGlvbi5zZWFyY2gubWF0Y2goL3RoZW1lX3RlbXBsYXRlX2lkPShcZCopLyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZSA/IGpRdWVyeSgiLmVsZW1lbnRvci0iICsgZVsxXSkgOiBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5sZW5ndGggJiYgalF1ZXJ5KCJodG1sLCBib2R5IikuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IHQub2Zmc2V0KCkudG9wIC0gd2luZG93LmlubmVySGVpZ2h0IC8gMgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA4Mjk3OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocygyNjA3KSk7CiAgICAgICAgICAgIGNsYXNzIEFyY2hpdmVQb3N0c0xvYWRNb3JlIGV4dGVuZHMgaS5kZWZhdWx0IHt9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEFyY2hpdmVQb3N0c0xvYWRNb3JlCiAgICAgICAgfSwKICAgICAgICA5NDA5OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg4NDk2KSkuZGVmYXVsdC5leHRlbmQoewogICAgICAgICAgICAgICAgZ2V0U2tpblByZWZpeDogKCkgPT4gImFyY2hpdmVfY2FyZHNfIgogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gaQogICAgICAgIH0sCiAgICAgICAgODUzNzogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoMjI5OCkpLmRlZmF1bHQuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldFNraW5QcmVmaXg6ICgpID0+ICJhcmNoaXZlX2NsYXNzaWNfIgogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gaQogICAgICAgIH0sCiAgICAgICAgMjI0OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg2NzA5KSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInNlYXJjaC1mb3JtIiwgaS5kZWZhdWx0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA2NzA5OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIHMgPSBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5nczogKCkgPT4gKHsKICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcjogIi5lbGVtZW50b3Itc2VhcmNoLWZvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICIuZWxlbWVudG9yLXNlYXJjaC1mb3JtX19jb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAiLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9faWNvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiAiLmVsZW1lbnRvci1zZWFyY2gtZm9ybV9faW5wdXQiLAogICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGU6ICIuZWxlbWVudG9yLXNlYXJjaC1mb3JtX190b2dnbGUiLAogICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXQ6ICIuZWxlbWVudG9yLXNlYXJjaC1mb3JtX19zdWJtaXQiLAogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogIi5kaWFsb2ctY2xvc2UtYnV0dG9uIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICBpc0ZvY3VzOiAiZWxlbWVudG9yLXNlYXJjaC1mb3JtLS1mb2N1cyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzRnVsbFNjcmVlbjogImVsZW1lbnRvci1zZWFyY2gtZm9ybS0tZnVsbC1zY3JlZW4iLAogICAgICAgICAgICAgICAgICAgICAgICBsaWdodGJveDogImVsZW1lbnRvci1saWdodGJveCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuJHdyYXBwZXIgPSB0aGlzLiRlbGVtZW50LmZpbmQoZS53cmFwcGVyKSwgdC4kY29udGFpbmVyID0gdGhpcy4kZWxlbWVudC5maW5kKGUuY29udGFpbmVyKSwgdC4kaW5wdXQgPSB0aGlzLiRlbGVtZW50LmZpbmQoZS5pbnB1dCksIHQuJGljb24gPSB0aGlzLiRlbGVtZW50LmZpbmQoZS5pY29uKSwgdC4kdG9nZ2xlID0gdGhpcy4kZWxlbWVudC5maW5kKGUudG9nZ2xlKSwgdC4kc3VibWl0ID0gdGhpcy4kZWxlbWVudC5maW5kKGUuc3VibWl0KSwgdC4kY2xvc2VCdXR0b24gPSB0aGlzLiRlbGVtZW50LmZpbmQoZS5jbG9zZUJ1dHRvbiksIHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGUuZWxlbWVudHMuJGNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuZWxlbWVudHMuJGNsb3NlQnV0dG9uLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5lbGVtZW50cy4kaW5wdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmVsZW1lbnRzLiR3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5lbGVtZW50cy4kaWNvbiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJza2luIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIik7CiAgICAgICAgICAgICAgICAgICAgImZ1bGxfc2NyZWVuIiA9PT0gciA/IChlLmVsZW1lbnRzLiR0b2dnbGUub24oImNsaWNrIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LnRvZ2dsZUNsYXNzKGEuaXNGdWxsU2NyZWVuKS50b2dnbGVDbGFzcyhhLmxpZ2h0Ym94KSwgbi50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0Lm9uKCJjbGljayIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuaGFzQ2xhc3MoYS5pc0Z1bGxTY3JlZW4pICYmIHRbMF0gPT09IGUudGFyZ2V0ICYmIHQucmVtb3ZlQ2xhc3MoYS5pc0Z1bGxTY3JlZW4pLnJlbW92ZUNsYXNzKGEubGlnaHRib3gpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBzLm9uKCJjbGljayIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmVDbGFzcyhhLmlzRnVsbFNjcmVlbikucmVtb3ZlQ2xhc3MoYS5saWdodGJveCkKICAgICAgICAgICAgICAgICAgICB9KSksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRkb2N1bWVudC5vbigia2V5dXAiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAyNyA9PT0gZS5rZXlDb2RlICYmIHQuaGFzQ2xhc3MoYS5pc0Z1bGxTY3JlZW4pICYmIHQudHJpZ2dlcigiY2xpY2siKQogICAgICAgICAgICAgICAgICAgIH0pKSkgOiBuLm9uKHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmFkZENsYXNzKGEuaXNGb2N1cykKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYmx1cigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkucmVtb3ZlQ2xhc3MoYS5pc0ZvY3VzKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksICJtaW5pbWFsIiA9PT0gciAmJiBvLm9uKCJjbGljayIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5hZGRDbGFzcyhhLmlzRm9jdXMpLCBuLnRyaWdnZXIoImZvY3VzIikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IHMKICAgICAgICB9LAogICAgICAgIDczMTg6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDIwODMpKSwKICAgICAgICAgICAgICAgIG8gPSBuKHMoNDg0KSksCiAgICAgICAgICAgICAgICByID0gbihzKDkwMzUpKSwKICAgICAgICAgICAgICAgIGEgPSBuKHMoNzY0OSkpLAogICAgICAgICAgICAgICAgbCA9IG4ocygxOTE1KSksCiAgICAgICAgICAgICAgICBkID0gbihzKDI2MjcpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigid29vY29tbWVyY2UtbWVudS1jYXJ0IiwgaS5kZWZhdWx0KSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoIndvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkiLCBvLmRlZmF1bHQpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigid29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZSIsIHIuZGVmYXVsdCksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hdHRhY2hIYW5kbGVyKCJ3b29jb21tZXJjZS1jYXJ0IiwgYS5kZWZhdWx0KSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoIndvb2NvbW1lcmNlLW15LWFjY291bnQiLCBsLmRlZmF1bHQpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYXR0YWNoSGFuZGxlcigid29vY29tbWVyY2Utbm90aWNlcyIsIGQuZGVmYXVsdCksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiBlbGVtZW50b3JGcm9udGVuZC5vbigiY29tcG9uZW50czppbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGJvZHkuZmluZCgiLmVsZW1lbnRvci13aWRnZXQtd29vY29tbWVyY2UtY2FydCIpLmxlbmd0aCB8fCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5hcHBlbmQoJzxkaXYgY2xhc3M9Indvb2NvbW1lcmNlLWNhcnQtZm9ybSI+JykKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgOTE1OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgQmFzZSBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lSaWdodENvbHVtbjogIi5lLXN0aWNreS1yaWdodC1jb2x1bW4iCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJpZ2h0Q29sdW1uQWN0aXZlOiAiZS1zdGlja3ktcmlnaHQtY29sdW1uLS1hY3RpdmUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdGlja3lSaWdodENvbHVtbjogdGhpcy4kZWxlbWVudC5maW5kKGUuc3RpY2t5UmlnaHRDb2x1bW4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQub24oInNlbGVjdDI6b3BlbiIsIChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTZWxlY3QyV3JhcHBlcihlKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRkU2VsZWN0MldyYXBwZXIoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBqUXVlcnkoZS50YXJnZXQpLmRhdGEoInNlbGVjdDIiKTsKICAgICAgICAgICAgICAgICAgICB0LiRkcm9wZG93biAmJiB0LiRkcm9wZG93bi5hZGRDbGFzcygiZS13b28tc2VsZWN0Mi13cmFwcGVyIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzU3RpY2t5UmlnaHRDb2x1bW5BY3RpdmUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cy4kc3RpY2t5UmlnaHRDb2x1bW4uaGFzQ2xhc3MoZS5zdGlja3lSaWdodENvbHVtbkFjdGl2ZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFjdGl2YXRlU3RpY2t5UmlnaHRDb2x1bW4oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd3BBZG1pbkJhciwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKTsKICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGUuc3RpY2t5X3JpZ2h0X2NvbHVtbl9vZmZzZXQgfHwgMDsKICAgICAgICAgICAgICAgICAgICB0Lmxlbmd0aCAmJiAiZml4ZWQiID09PSB0LmNzcygicG9zaXRpb24iKSAmJiAobiArPSB0LmhlaWdodCgpKSwgInllcyIgPT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJzdGlja3lfcmlnaHRfY29sdW1uIikgJiYgKHRoaXMuZWxlbWVudHMuJHN0aWNreVJpZ2h0Q29sdW1uLmFkZENsYXNzKHMuc3RpY2t5UmlnaHRDb2x1bW5BY3RpdmUpLCB0aGlzLmVsZW1lbnRzLiRzdGlja3lSaWdodENvbHVtbi5jc3MoInRvcCIsIG4gKyAicHgiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVTdGlja3lSaWdodENvbHVtbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNTdGlja3lSaWdodENvbHVtbkFjdGl2ZSgpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzdGlja3lSaWdodENvbHVtbi5yZW1vdmVDbGFzcyhlLnN0aWNreVJpZ2h0Q29sdW1uQWN0aXZlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdG9nZ2xlU3RpY2t5UmlnaHRDb2x1bW4oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInN0aWNreV9yaWdodF9jb2x1bW4iKSA/IHRoaXMuaXNTdGlja3lSaWdodENvbHVtbkFjdGl2ZSgpIHx8IHRoaXMuYWN0aXZhdGVTdGlja3lSaWdodENvbHVtbigpIDogdGhpcy5kZWFjdGl2YXRlU3RpY2t5UmlnaHRDb2x1bW4oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZXF1YWxpemVFbGVtZW50SGVpZ2h0KGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVBdHRyKCJzdHlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZWFjaCgoKGUsIHMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBNYXRoLm1heCh0LCBzLm9mZnNldEhlaWdodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAwIDwgdCAmJiBlLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHQgKyAicHgiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVtb3ZlUGFkZGluZ0JldHdlZW5QdXJjaGFzZU5vdGUoZSkgewogICAgICAgICAgICAgICAgICAgIGUgJiYgZS5lYWNoKCgoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkodCkucHJldigpLmNoaWxkcmVuKCJ0ZCIpLmFkZENsYXNzKCJwcm9kdWN0LXB1cmNoYXNlLW5vdGUtaXMtYmVsb3ciKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEJhc2UKICAgICAgICB9LAogICAgICAgIDc2NDk6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDkxNSkpOwogICAgICAgICAgICBjbGFzcyBDYXJ0IGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gc3VwZXIuZ2V0RGVmYXVsdFNldHRpbmdzKC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7IC4uLmUuc2VsZWN0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpcHBpbmdGb3JtOiAiLnNoaXBwaW5nLWNhbGN1bGF0b3ItZm9ybSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudGl0eUlucHV0OiAiLnF0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDYXJ0QnV0dG9uOiAiYnV0dG9uW25hbWU9dXBkYXRlX2NhcnRdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdwSHR0cFJlZmVyZXJJbnB1dHM6ICJbbmFtZT1fd3BfaHR0cF9yZWZlcmVyXSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5JbnB1dDogImlucHV0W3R5cGU9aGlkZGVuXSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0UmVtb3ZlOiAiLnByb2R1Y3QtcmVtb3ZlIGEiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IGUuY2xhc3NlcywKICAgICAgICAgICAgICAgICAgICAgICAgYWpheFVybDogZWxlbWVudG9yUHJvRnJvbnRlbmQuY29uZmlnLmFqYXh1cmwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnN1cGVyLmdldERlZmF1bHRFbGVtZW50cyguLi5hcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICAkc2hpcHBpbmdGb3JtOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zaGlwcGluZ0Zvcm0pLAogICAgICAgICAgICAgICAgICAgICAgICAkc3RpY2t5Q29sdW1uOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zdGlja3lDb2x1bW4pLAogICAgICAgICAgICAgICAgICAgICAgICAkaGlkZGVuSW5wdXQ6IHRoaXMuJGVsZW1lbnQuZmluZChlLmhpZGRlbklucHV0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIuYmluZEV2ZW50cygpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5vbigid2NfZnJhZ21lbnRzX3JlZnJlc2hlZCIsICgoKSA9PiB0aGlzLmFwcGx5QnV0dG9uc0hvdmVyQW5pbWF0aW9uKCkpKSwgInllcyIgPT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJ1cGRhdGVfY2FydF9hdXRvbWF0aWNhbGx5IikgJiYgdGhpcy4kZWxlbWVudC5vbigiY2xpY2siLCBlLnF1YW50aXR5SW5wdXQsICgoKSA9PiB0aGlzLnVwZGF0ZUNhcnQoKSkpLCAoZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpIHx8IGVsZW1lbnRvckZyb250ZW5kLmlzV1BQcmV2aWV3TW9kZSgpKSAmJiBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5vbigid2NfZnJhZ21lbnRzX2xvYWRlZCB3Y19mcmFnbWVudHNfcmVmcmVzaGVkIiwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RpZnlXcEh0dHBSZWZlcmVyKCksIHRoaXMuZGlzYWJsZUFjdGlvbnMoKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLCB0aGlzLnRvZ2dsZVN0aWNreVJpZ2h0Q29sdW1uKCksIHRoaXMuaGlkZUhpZGRlbklucHV0c1BhcmVudEVsZW1lbnRzKCksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiB0aGlzLmVsZW1lbnRzLiRzaGlwcGluZ0Zvcm0uc2hvdygpLCB0aGlzLmFwcGx5QnV0dG9uc0hvdmVyQW5pbWF0aW9uKCksIChlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgfHwgZWxlbWVudG9yRnJvbnRlbmQuaXNXUFByZXZpZXdNb2RlKCkpICYmICh0aGlzLm1vZGlmeVdwSHR0cFJlZmVyZXIoKSwgdGhpcy5kaXNhYmxlQWN0aW9ucygpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGlzYWJsZUFjdGlvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZChlLnVwZGF0ZUNhcnRCdXR0b24pLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogImRpc2FibGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtZGlzYWJsZWQiOiAidHJ1ZSIKICAgICAgICAgICAgICAgICAgICB9KSwgZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpICYmICh0aGlzLiRlbGVtZW50LmZpbmQoZS5xdWFudGl0eUlucHV0KS5hdHRyKCJkaXNhYmxlZCIsICJkaXNhYmxlZCIpLCB0aGlzLiRlbGVtZW50LmZpbmQoZS5wcm9kdWN0UmVtb3ZlKS5jc3MoInBvaW50ZXItZXZlbnRzIiwgIm5vbmUiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgInN0aWNreV9yaWdodF9jb2x1bW4iID09PSBlICYmIHRoaXMudG9nZ2xlU3RpY2t5UmlnaHRDb2x1bW4oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25EZXN0cm95KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uRGVzdHJveSguLi5hcmd1bWVudHMpLCB0aGlzLmRlYWN0aXZhdGVTdGlja3lSaWdodENvbHVtbigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVDYXJ0KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fZGVib3VuY2UpLCB0aGlzLl9kZWJvdW5jZSA9IHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKGUudXBkYXRlQ2FydEJ1dHRvbikudHJpZ2dlcigiY2xpY2siKQogICAgICAgICAgICAgICAgICAgIH0pLCA2MDApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhcHBseUJ1dHRvbnNIb3ZlckFuaW1hdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICBlLmNoZWNrb3V0X2J1dHRvbl9ob3Zlcl9hbmltYXRpb24gJiYgalF1ZXJ5KCIuY2hlY2tvdXQtYnV0dG9uIikuYWRkQ2xhc3MoImVsZW1lbnRvci1hbmltYXRpb24tIiArIGUuY2hlY2tvdXRfYnV0dG9uX2hvdmVyX2FuaW1hdGlvbiksIGUuZm9ybXNfYnV0dG9uc19ob3Zlcl9hbmltYXRpb24gJiYgalF1ZXJ5KCIuc2hvcF90YWJsZSAuYnV0dG9uIikuYWRkQ2xhc3MoImVsZW1lbnRvci1hbmltYXRpb24tIiArIGUuZm9ybXNfYnV0dG9uc19ob3Zlcl9hbmltYXRpb24pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoaWRlSGlkZGVuSW5wdXRzUGFyZW50RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0VkaXQgJiYgdGhpcy5lbGVtZW50cy4kaGlkZGVuSW5wdXQgJiYgdGhpcy5lbGVtZW50cy4kaGlkZGVuSW5wdXQucGFyZW50KCIuZm9ybS1yb3ciKS5hZGRDbGFzcygiZWxlbWVudG9yLWhpZGRlbiIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtb2RpZnlXcEh0dHBSZWZlcmVyKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgdGhpcy4kZWxlbWVudC5maW5kKGUud3BIdHRwUmVmZXJlcklucHV0cykuYXR0cigidmFsdWUiLCBlbGVtZW50b3IuZG9jdW1lbnRzLmdldEN1cnJlbnQoKS5jb25maWcudXJscy53cF9wcmV2aWV3KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IENhcnQKICAgICAgICB9LAogICAgICAgIDkwMzU6IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgIHZhciBuID0gcyg3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbihzKDkxNSkpOwogICAgICAgICAgICBjbGFzcyBDaGVja291dCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHN1cGVyLmdldERlZmF1bHRTZXR0aW5ncyguLi5hcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogeyAuLi5lLnNlbGVjdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogIi5lbGVtZW50b3Itd2lkZ2V0LXdvb2NvbW1lcmNlLWNoZWNrb3V0LXBhZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5Gb3JtOiAiLmUtd29vY29tbWVyY2UtbG9naW4tYW5jaG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luU3VibWl0OiAiLmUtd29vY29tbWVyY2UtZm9ybS1sb2dpbi1zdWJtaXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5TZWN0aW9uOiAiLmUtd29vY29tbWVyY2UtbG9naW4tc2VjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q291cG9uRm9ybTogIi5lLXNob3ctY291cG9uLWZvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291cG9uU2VjdGlvbjogIi5lLWNvdXBvbi1hbmNob3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xvZ2luRm9ybTogIi5lLXNob3ctbG9naW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlDb3Vwb246ICIuZS1hcHBseS1jb3Vwb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXRGb3JtOiAiZm9ybS53b29jb21tZXJjZS1jaGVja291dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vwb25Cb3g6ICIuZS1jb3Vwb24tYm94IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICJhZGRyZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdwSHR0cFJlZmVyZXJJbnB1dHM6ICdbbmFtZT0iX3dwX2h0dHBfcmVmZXJlciJdJwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiBlLmNsYXNzZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhVcmw6IGVsZW1lbnRvclByb0Zyb250ZW5kLmNvbmZpZy5hamF4dXJsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdXBlci5nZXREZWZhdWx0RWxlbWVudHMoLi4uYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcjogdGhpcy4kZWxlbWVudC5maW5kKGUuY29udGFpbmVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGxvZ2luRm9ybTogdGhpcy4kZWxlbWVudC5maW5kKGUubG9naW5Gb3JtKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHNob3dDb3Vwb25Gb3JtOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zaG93Q291cG9uRm9ybSksCiAgICAgICAgICAgICAgICAgICAgICAgICRjb3Vwb25TZWN0aW9uOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5jb3Vwb25TZWN0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHNob3dMb2dpbkZvcm06IHRoaXMuJGVsZW1lbnQuZmluZChlLnNob3dMb2dpbkZvcm0pLAogICAgICAgICAgICAgICAgICAgICAgICAkYXBwbHlDb3Vwb246IHRoaXMuJGVsZW1lbnQuZmluZChlLmFwcGx5Q291cG9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGxvZ2luU3VibWl0OiB0aGlzLiRlbGVtZW50LmZpbmQoZS5sb2dpblN1Ym1pdCksCiAgICAgICAgICAgICAgICAgICAgICAgICRjb3Vwb25Cb3g6IHRoaXMuJGVsZW1lbnQuZmluZChlLmNvdXBvbkJveCksCiAgICAgICAgICAgICAgICAgICAgICAgICRjaGVja291dEZvcm06IHRoaXMuJGVsZW1lbnQuZmluZChlLmNoZWNrb3V0Rm9ybSksCiAgICAgICAgICAgICAgICAgICAgICAgICRsb2dpblNlY3Rpb246IHRoaXMuJGVsZW1lbnQuZmluZChlLmxvZ2luU2VjdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRyZXNzOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5hZGRyZXNzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIuYmluZEV2ZW50cyguLi5hcmd1bWVudHMpLCB0aGlzLmVsZW1lbnRzLiRzaG93Q291cG9uRm9ybS5vbigiY2xpY2siLCAoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgdGhpcy5lbGVtZW50cy4kY291cG9uU2VjdGlvbi5zbGlkZVRvZ2dsZSgpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmVsZW1lbnRzLiRzaG93TG9naW5Gb3JtLm9uKCJjbGljayIsIChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLmVsZW1lbnRzLiRsb2dpbkZvcm0uc2xpZGVUb2dnbGUoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbGVtZW50cy4kYXBwbHlDb3Vwb24ub24oImNsaWNrIiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuYXBwbHlDb3Vwb24oKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbGVtZW50cy4kbG9naW5TdWJtaXQub24oImNsaWNrIiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMubG9naW5Vc2VyKCkKICAgICAgICAgICAgICAgICAgICB9KSksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRib2R5Lm9uKCJ1cGRhdGVkX2NoZWNrb3V0IiwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVB1cmNoYXNlQnV0dG9uSG92ZXJBbmltYXRpb24oKSwgdGhpcy51cGRhdGVXcFJlZmVyZXJzKCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoLi4uYXJndW1lbnRzKSwgdGhpcy50b2dnbGVTdGlja3lSaWdodENvbHVtbigpLCB0aGlzLnVwZGF0ZVdwUmVmZXJlcnMoKSwgdGhpcy5lcXVhbGl6ZUVsZW1lbnRIZWlnaHQodGhpcy5lbGVtZW50cy4kYWRkcmVzcyksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiAodGhpcy5lbGVtZW50cy4kbG9naW5Gb3JtLnNob3coKSwgdGhpcy5lbGVtZW50cy4kY291cG9uU2VjdGlvbi5zaG93KCksIHRoaXMuYXBwbHlQdXJjaGFzZUJ1dHRvbkhvdmVyQW5pbWF0aW9uKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgICAgICJzdGlja3lfcmlnaHRfY29sdW1uIiA9PT0gZSAmJiB0aGlzLnRvZ2dsZVN0aWNreVJpZ2h0Q29sdW1uKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRGVzdHJveSgpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkRlc3Ryb3koLi4uYXJndW1lbnRzKSwgdGhpcy5kZWFjdGl2YXRlU3RpY2t5UmlnaHRDb2x1bW4oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXBwbHlQdXJjaGFzZUJ1dHRvbkhvdmVyQW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygicHVyY2hhc2VfYnV0dG9uX2hvdmVyX2FuaW1hdGlvbiIpOwogICAgICAgICAgICAgICAgICAgIGUgJiYgalF1ZXJ5KCIjcGxhY2Vfb3JkZXIiKS5hZGRDbGFzcygiZWxlbWVudG9yLWFuaW1hdGlvbi0iICsgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFwcGx5Q291cG9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICghd2NfY2hlY2tvdXRfcGFyYW1zKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFByb2Nlc3NpbmcodGhpcy5lbGVtZW50cy4kY291cG9uQm94KTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gewogICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eTogd2NfY2hlY2tvdXRfcGFyYW1zLmFwcGx5X2NvdXBvbl9ub25jZSwKICAgICAgICAgICAgICAgICAgICAgICAgY291cG9uX2NvZGU6IHRoaXMuZWxlbWVudHMuJGNvdXBvbkJveC5maW5kKCdpbnB1dFtuYW1lPSJjb3Vwb25fY29kZSJdJykudmFsKCkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5hamF4KHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIlBPU1QiLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHdjX2NoZWNrb3V0X3BhcmFtcy53Y19hamF4X3VybC50b1N0cmluZygpLnJlcGxhY2UoIiUlZW5kcG9pbnQlJSIsICJhcHBseV9jb3Vwb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcyh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIi53b29jb21tZXJjZS1lcnJvciwgLndvb2NvbW1lcmNlLW1lc3NhZ2UiKS5yZW1vdmUoKSwgdGhpcy5lbGVtZW50cy4kY291cG9uQm94LnJlbW92ZUNsYXNzKCJwcm9jZXNzaW5nIikudW5ibG9jaygpLCB0ICYmICh0aGlzLmVsZW1lbnRzLiRjaGVja291dEZvcm0uYmVmb3JlKHQpLCB0aGlzLmVsZW1lbnRzLiRjb3Vwb25TZWN0aW9uLnNsaWRlVXAoKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGJvZHkudHJpZ2dlcigiYXBwbGllZF9jb3Vwb25faW5fY2hlY2tvdXQiLCBbZS5jb3Vwb25fY29kZV0pLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS50cmlnZ2VyKCJ1cGRhdGVfY2hlY2tvdXQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX3NoaXBwaW5nX21ldGhvZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxvZ2luVXNlcigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0UHJvY2Vzc2luZyh0aGlzLmVsZW1lbnRzLiRsb2dpblNlY3Rpb24pOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogImVsZW1lbnRvcl93b29jb21tZXJjZV9jaGVja291dF9sb2dpbl91c2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6IHRoaXMuZWxlbWVudHMuJGxvZ2luU2VjdGlvbi5maW5kKCdpbnB1dFtuYW1lPSJ1c2VybmFtZSJdJykudmFsKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiB0aGlzLmVsZW1lbnRzLiRsb2dpblNlY3Rpb24uZmluZCgnaW5wdXRbbmFtZT0icGFzc3dvcmQiXScpLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICBub25jZTogdGhpcy5lbGVtZW50cy4kbG9naW5TZWN0aW9uLmZpbmQoJ2lucHV0W25hbWU9Indvb2NvbW1lcmNlLWxvZ2luLW5vbmNlIl0nKS52YWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXI6IHRoaXMuZWxlbWVudHMuJGxvZ2luU2VjdGlvbi5maW5kKCJpbnB1dCNyZW1lbWJlcm1lIikucHJvcCgiY2hlY2tlZCIpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLmdldFNldHRpbmdzKCJhamF4VXJsIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IEpTT04ucGFyc2UoZSksIHRoaXMuZWxlbWVudHMuJGxvZ2luU2VjdGlvbi5yZW1vdmVDbGFzcygicHJvY2Vzc2luZyIpLnVuYmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgiLndvb2NvbW1lcmNlLWVycm9yLCAud29vY29tbWVyY2UtbWVzc2FnZSIpLnJlbW92ZSgpLCBlLmxvZ2dlZF9pbiA/IGxvY2F0aW9uLnJlbG9hZCgpIDogKHRoaXMuZWxlbWVudHMuJGNoZWNrb3V0Rm9ybS5iZWZvcmUoZS5tZXNzYWdlKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGJvZHkudHJpZ2dlcigiY2hlY2tvdXRfZXJyb3IiLCBbZS5tZXNzYWdlXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhcnRQcm9jZXNzaW5nKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLmlzKCIucHJvY2Vzc2luZyIpIHx8IGUuYWRkQ2xhc3MoInByb2Nlc3NpbmciKS5ibG9jayh7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlDU1M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICIjZmZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC42CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdXBkYXRlV3BSZWZlcmVycygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLiRlbGVtZW50LmZpbmQoZS53cEh0dHBSZWZlcmVySW5wdXRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBVUkwoZG9jdW1lbnQubG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgIHMuc2VhcmNoUGFyYW1zLnNldCgiZWxlbWVudG9yUG9zdElkIiwgZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnBvc3QuaWQpLCBzLnNlYXJjaFBhcmFtcy5zZXQoImVsZW1lbnRvcldpZGdldElkIiwgdGhpcy5nZXRJRCgpKSwgdC5hdHRyKCJ2YWx1ZSIsIHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gQ2hlY2tvdXQKICAgICAgICB9LAogICAgICAgIDIwODM6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICIuZWxlbWVudG9yLW1lbnUtY2FydF9fY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW46ICIuZWxlbWVudG9yLW1lbnUtY2FydF9fbWFpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGU6ICIuZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUJ1dHRvbjogIiNlbGVtZW50b3ItbWVudS1jYXJ0X190b2dnbGVfYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVdyYXBwZXI6ICIuZWxlbWVudG9yLW1lbnUtY2FydF9fdG9nZ2xlX3dyYXBwZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VCdXR0b246ICIuZWxlbWVudG9yLW1lbnUtY2FydF9fY2xvc2UtYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RMaXN0OiAiLmVsZW1lbnRvci1tZW51LWNhcnRfX3Byb2R1Y3RzIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Nob3duOiAiZWxlbWVudG9yLW1lbnUtY2FydC0tc2hvd24iCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLmNvbnRhaW5lciksCiAgICAgICAgICAgICAgICAgICAgICAgICRtYWluOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5tYWluKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHRvZ2dsZVdyYXBwZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLnRvZ2dsZVdyYXBwZXIpLAogICAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VCdXR0b246IHRoaXMuJGVsZW1lbnQuZmluZChlLmNsb3NlQnV0dG9uKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRvZ2dsZUNhcnQoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NhcnRPcGVuID8gdGhpcy5oaWRlQ2FydCgpIDogdGhpcy5zaG93Q2FydCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzaG93Q2FydCgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NhcnRPcGVuKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDYXJ0T3BlbiA9ICEwLCB0aGlzLiRlbGVtZW50LmFkZENsYXNzKGUuaXNTaG93biksIHRoaXMuJGVsZW1lbnQuZmluZCh0LnRvZ2dsZUJ1dHRvbikuYXR0cigiYXJpYS1leHBhbmRlZCIsICEwKSwgdGhpcy5lbGVtZW50cy4kbWFpbi5hdHRyKCJhcmlhLWhpZGRlbiIsICExKSwgdGhpcy5lbGVtZW50cy4kY29udGFpbmVyLmF0dHIoImFyaWEtaGlkZGVuIiwgITEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoaWRlQ2FydCgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNDYXJ0T3BlbikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ2FydE9wZW4gPSAhMSwgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhlLmlzU2hvd24pLCB0aGlzLiRlbGVtZW50LmZpbmQodC50b2dnbGVCdXR0b24pLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAhMSksIHRoaXMuZWxlbWVudHMuJG1haW4uYXR0cigiYXJpYS1oaWRkZW4iLCAhMCksIHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lci5hdHRyKCJhcmlhLWhpZGRlbiIsICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXV0b21hdGljYWxseU9wZW5DYXJ0KCkgewogICAgICAgICAgICAgICAgICAgICJ5ZXMiID09PSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLmF1dG9tYXRpY2FsbHlfb3Blbl9jYXJ0ICYmIHRoaXMuc2hvd0NhcnQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yUHJvRnJvbnRlbmQuY29uZmlnLndvb2NvbW1lcmNlLm1lbnVfY2FydCwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0xID09PSBlLmNhcnRfcGFnZV91cmwuaW5kZXhPZigiPyIpID8gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5jYXJ0X3BhZ2VfdXJsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5jYXJ0X3BhZ2VfdXJsID09PSB0LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5jaGVja291dF9wYWdlX3VybCA9PT0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKTsKICAgICAgICAgICAgICAgICAgICBuICYmIGkgPyB0aGlzLiRlbGVtZW50LmZpbmQoby50b2dnbGVCdXR0b24pLmF0dHIoImhyZWYiLCBzKSA6ICh0aGlzLmlzQ2FydE9wZW4gPSB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKGEuaXNTaG93biksICJtb3VzZW92ZXIiID09PSByLm9wZW5fY2FydCA/ICh0aGlzLmVsZW1lbnRzLiR0b2dnbGVXcmFwcGVyLm9uKCJtb3VzZW92ZXIgY2xpY2siLCBvLnRvZ2dsZUJ1dHRvbiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuc2hvd0NhcnQoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbGVtZW50cy4kdG9nZ2xlV3JhcHBlci5vbigibW91c2VsZWF2ZSIsICgoKSA9PiB0aGlzLmhpZGVDYXJ0KCkpKSkgOiB0aGlzLmVsZW1lbnRzLiR0b2dnbGVXcmFwcGVyLm9uKCJjbGljayIsIG8udG9nZ2xlQnV0dG9uLCAoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgdGhpcy50b2dnbGVDYXJ0KCkKICAgICAgICAgICAgICAgICAgICB9KSksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRkb2N1bWVudC5vbigiY2xpY2siLCAoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0NhcnRPcGVuKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBqUXVlcnkoZS50YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICB0LmNsb3Nlc3QodGhpcy5lbGVtZW50cy4kbWFpbikubGVuZ3RoIHx8IHQuY2xvc2VzdChvLnRvZ2dsZSkubGVuZ3RoIHx8IHRoaXMuaGlkZUNhcnQoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbGVtZW50cy4kY2xvc2VCdXR0b24ub24oImNsaWNrIiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuaGlkZUNhcnQoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGRvY3VtZW50Lm9uKCJrZXl1cCIsIChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgMjcgPT09IGUua2V5Q29kZSAmJiB0aGlzLmhpZGVDYXJ0KCkKICAgICAgICAgICAgICAgICAgICB9KSksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRib2R5Lm9uKCJhZGRlZF90b19jYXJ0IiwgKCgpID0+IHRoaXMuYXV0b21hdGljYWxseU9wZW5DYXJ0KCkpKSwgZWxlbWVudG9yRnJvbnRlbmQuYWRkTGlzdGVuZXJPbmNlKHRoaXMuZ2V0VW5pcXVlSGFuZGxlcklEKCkgKyAiX3dpbmRvd19yZXNpemVfZHJvcGRvd24iLCAicmVzaXplIiwgKCgpID0+IHRoaXMuZ292ZXJuRHJvcGRvd25IZWlnaHQoKSkpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5vbigid2NfZnJhZ21lbnRzX2xvYWRlZCB3Y19mcmFnbWVudHNfcmVmcmVzaGVkIiwgKCgpID0+IHRoaXMuZ292ZXJuRHJvcGRvd25IZWlnaHQoKSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5iaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnJlbW92ZUxpc3RlbmVycyh0aGlzLmdldFVuaXF1ZUhhbmRsZXJJRCgpICsgIl93aW5kb3dfcmVzaXplX2Ryb3Bkb3duIiwgInJlc2l6ZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCksIGVsZW1lbnRvclByb0Zyb250ZW5kLmNvbmZpZy53b29jb21tZXJjZS5wcm9kdWN0QWRkZWRUb0NhcnQgJiYgdGhpcy5hdXRvbWF0aWNhbGx5T3BlbkNhcnQoKSwgdGhpcy5nb3Zlcm5Ecm9wZG93bkhlaWdodCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnb3Zlcm5Ecm9wZG93bkhlaWdodCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIGlmICgibWluaS1jYXJ0IiAhPT0gZS5jYXJ0X3R5cGUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy4kZWxlbWVudC5maW5kKHQucHJvZHVjdExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy4kZWxlbWVudC5maW5kKHQudG9nZ2xlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXMubGVuZ3RoIHx8ICFuLmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCh0LnByb2R1Y3RMaXN0KS5jc3MoIm1heC1oZWlnaHQiLCAiIik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmhlaWdodCgpICsgcGFyc2VJbnQodGhpcy5lbGVtZW50cy4kbWFpbi5jc3MoIm1hcmdpbi10b3AiKSksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHMuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBpIC0gciAtIG8gLSAodGhpcy5lbGVtZW50cy4kbWFpbi5wcm9wKCJzY3JvbGxIZWlnaHQiKSAtIGEpIC0gMzAsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBNYXRoLm1heCgxMjAsIGwpOwogICAgICAgICAgICAgICAgICAgIHMuY3NzKCJtYXgtaGVpZ2h0IiwgZCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgMTkxNTogKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgdmFyIG4gPSBzKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBuKHMoOTE1KSk7CiAgICAgICAgICAgIGNsYXNzIE15QWNjb3VudEhhbmRsZXIgZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogImFkZHJlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiTGlua3M6ICIud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24tbGluayBhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdPcmRlckJ1dHRvbnM6ICIubXlfYWNjb3VudF9vcmRlcnMgLndvb2NvbW1lcmNlLWJ1dHRvbi52aWV3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdPcmRlckxpbmtzOiAiLndvb2NvbW1lcmNlLW9yZGVycy10YWJsZV9fY2VsbC1vcmRlci1udW1iZXIgYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoRm9ybXM6ICJmb3JtLmxvZ2luLCBmb3JtLnJlZ2lzdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYldyYXBwZXI6ICIuZS1teS1hY2NvdW50LXRhYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJdGVtOiAiLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uIGxpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbFBhZ2VFbGVtZW50czogIltlLW15LWFjY291bnQtcGFnZV0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVyY2hhc2Vub3RlOiAidHIucHJvZHVjdC1wdXJjaGFzZS1ub3RlIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkcmVzczogdGhpcy4kZWxlbWVudC5maW5kKGUuYWRkcmVzcyksCiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJMaW5rczogdGhpcy4kZWxlbWVudC5maW5kKGUudGFiTGlua3MpLAogICAgICAgICAgICAgICAgICAgICAgICAkdmlld09yZGVyQnV0dG9uczogdGhpcy4kZWxlbWVudC5maW5kKGUudmlld09yZGVyQnV0dG9ucyksCiAgICAgICAgICAgICAgICAgICAgICAgICR2aWV3T3JkZXJMaW5rczogdGhpcy4kZWxlbWVudC5maW5kKGUudmlld09yZGVyTGlua3MpLAogICAgICAgICAgICAgICAgICAgICAgICAkYXV0aEZvcm1zOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5hdXRoRm9ybXMpLAogICAgICAgICAgICAgICAgICAgICAgICAkdGFiV3JhcHBlcjogdGhpcy4kZWxlbWVudC5maW5kKGUudGFiV3JhcHBlciksCiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJJdGVtOiB0aGlzLiRlbGVtZW50LmZpbmQoZS50YWJJdGVtKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGFsbFBhZ2VFbGVtZW50czogdGhpcy4kZWxlbWVudC5maW5kKGUuYWxsUGFnZUVsZW1lbnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHB1cmNoYXNlbm90ZTogdGhpcy4kZWxlbWVudC5maW5kKGUucHVyY2hhc2Vub3RlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVkaXRvckluaXRUYWJzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGFsbFBhZ2VFbGVtZW50cy5lYWNoKCgoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdC5nZXRBdHRyaWJ1dGUoImUtbXktYWNjb3VudC1wYWdlIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZpZXctb3JkZXIiID09PSBzKSBuID0gdGhpcy5lbGVtZW50cy4kdmlld09yZGVyTGlua3MuYWRkKHRoaXMuZWxlbWVudHMuJHZpZXdPcmRlckJ1dHRvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG4gPSB0aGlzLiRlbGVtZW50LmZpbmQoIi53b29jb21tZXJjZS1NeUFjY291bnQtbmF2aWdhdGlvbi1saW5rLS0iICsgcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4ub24oImNsaWNrIiwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBzLCB0aGlzLmVkaXRvclNob3dUYWIoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVkaXRvclNob3dUYWIoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuJGVsZW1lbnQuZmluZCgnW2UtbXktYWNjb3VudC1wYWdlPSInICsgdGhpcy5jdXJyZW50UGFnZSArICciXScpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuYXR0cigiZS1teS1hY2NvdW50LXBhZ2UiLCB0aGlzLmN1cnJlbnRQYWdlKSwgdGhpcy5lbGVtZW50cy4kYWxsUGFnZUVsZW1lbnRzLmhpZGUoKSwgZS5zaG93KCksIHRoaXMudG9nZ2xlRW5kcG9pbnRDbGFzc2VzKCksICJ2aWV3LW9yZGVyIiAhPT0gdGhpcy5jdXJyZW50UGFnZSAmJiAodGhpcy5lbGVtZW50cy4kdGFiSXRlbS5yZW1vdmVDbGFzcygiaXMtYWN0aXZlIiksIHRoaXMuJGVsZW1lbnQuZmluZCgiLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uLWxpbmstLSIgKyB0aGlzLmN1cnJlbnRQYWdlKS5hZGRDbGFzcygiaXMtYWN0aXZlIikpLCAiZWRpdC1hZGRyZXNzIiAhPT0gdGhpcy5jdXJyZW50UGFnZSAmJiAidmlldy1vcmRlciIgIT09IHRoaXMuY3VycmVudFBhZ2UgfHwgdGhpcy5lcXVhbGl6ZUVsZW1lbnRIZWlnaHRzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRvZ2dsZUVuZHBvaW50Q2xhc3NlcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gWyJkYXNoYm9hcmQiLCAib3JkZXJzIiwgInZpZXctb3JkZXIiLCAiZG93bmxvYWRzIiwgImVkaXQtYWNjb3VudCIsICJlZGl0LWFkZHJlc3MiLCAicGF5bWVudC1tZXRob2RzIl07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kdGFiV3JhcHBlci5yZW1vdmVDbGFzcygiZS1teS1hY2NvdW50LXRhYl9fIiArIGUuam9pbigiIGUtbXktYWNjb3VudC10YWJfXyIpKSwgZS5pbmNsdWRlcyh0aGlzLmN1cnJlbnRQYWdlKSAmJiB0aGlzLmVsZW1lbnRzLiR0YWJXcmFwcGVyLmFkZENsYXNzKCJlLW15LWFjY291bnQtdGFiX18iICsgdGhpcy5jdXJyZW50UGFnZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFwcGx5QnV0dG9uc0hvdmVyQW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGUuZm9ybXNfYnV0dG9uc19ob3Zlcl9hbmltYXRpb24gJiYgdGhpcy4kZWxlbWVudC5maW5kKCIud29vY29tbWVyY2UgYnV0dG9uLmJ1dHRvbiIpLmFkZENsYXNzKCJlbGVtZW50b3ItYW5pbWF0aW9uLSIgKyBlLmZvcm1zX2J1dHRvbnNfaG92ZXJfYW5pbWF0aW9uKSwgZS50YWJsZXNfYnV0dG9uX2hvdmVyX2FuaW1hdGlvbiAmJiB0aGlzLiRlbGVtZW50LmZpbmQoIi5vcmRlci1hZ2FpbiAuYnV0dG9uLCB0ZCAuYnV0dG9uLCAud29vY29tbWVyY2UtcGFnaW5hdGlvbiAuYnV0dG9uIikuYWRkQ2xhc3MoImVsZW1lbnRvci1hbmltYXRpb24tIiArIGUudGFibGVzX2J1dHRvbl9ob3Zlcl9hbmltYXRpb24pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlcXVhbGl6ZUVsZW1lbnRIZWlnaHRzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZXF1YWxpemVFbGVtZW50SGVpZ2h0KHRoaXMuZWxlbWVudHMuJGFkZHJlc3MpLCB0aGlzLmlzRWRpdCB8fCB0aGlzLmVxdWFsaXplRWxlbWVudEhlaWdodCh0aGlzLmVsZW1lbnRzLiRhdXRoRm9ybXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgICAgIDAgIT09IGUuaW5kZXhPZigiZ2VuZXJhbF90ZXh0X3R5cG9ncmFwaHkiKSAmJiAwICE9PSBlLmluZGV4T2YoInNlY3Rpb25zX3BhZGRpbmciKSB8fCB0aGlzLmVxdWFsaXplRWxlbWVudEhlaWdodHMoKSwgMCA9PT0gZS5pbmRleE9mKCJmb3Jtc19yb3dzX2dhcCIpICYmIHRoaXMucmVtb3ZlUGFkZGluZ0JldHdlZW5QdXJjaGFzZU5vdGUodGhpcy5lbGVtZW50cy4kcHVyY2hhc2Vub3RlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5iaW5kRXZlbnRzKCksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRib2R5Lm9uKCJrZXl1cCBjaGFuZ2UiLCAiLnJlZ2lzdGVyICNyZWdfcGFzc3dvcmQiLCAoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVxdWFsaXplRWxlbWVudEhlaWdodHMoKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLCB0aGlzLmlzRWRpdCAmJiAodGhpcy5lZGl0b3JJbml0VGFicygpLCB0aGlzLiRlbGVtZW50LmF0dHIoImUtbXktYWNjb3VudC1wYWdlIikgPyB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy4kZWxlbWVudC5hdHRyKCJlLW15LWFjY291bnQtcGFnZSIpIDogdGhpcy5jdXJyZW50UGFnZSA9ICJkYXNoYm9hcmQiLCB0aGlzLmVkaXRvclNob3dUYWIoKSksIHRoaXMuYXBwbHlCdXR0b25zSG92ZXJBbmltYXRpb24oKSwgdGhpcy5lcXVhbGl6ZUVsZW1lbnRIZWlnaHRzKCksIHRoaXMucmVtb3ZlUGFkZGluZ0JldHdlZW5QdXJjaGFzZU5vdGUodGhpcy5lbGVtZW50cy4kcHVyY2hhc2Vub3RlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IE15QWNjb3VudEhhbmRsZXIKICAgICAgICB9LAogICAgICAgIDI2Mjc6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b29jb21tZXJjZU5vdGljZXM6ICIud29vY29tbWVyY2UtTm90aWNlR3JvdXAsIDpub3QoLndvb2NvbW1lcmNlLU5vdGljZUdyb3VwKSAud29vY29tbWVyY2UtZXJyb3IsIDpub3QoLndvb2NvbW1lcmNlLU5vdGljZUdyb3VwKSAud29vY29tbWVyY2UtbWVzc2FnZSwgOm5vdCgud29vY29tbWVyY2UtTm90aWNlR3JvdXApIC53b29jb21tZXJjZS1pbmZvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGljZXNXcmFwcGVyOiAiLmUtd29vY29tbWVyY2Utbm90aWNlcy13cmFwcGVyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkZG9jdW1lbnRTY3JvbGxUb0VsZW1lbnRzOiBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQuZmluZCgiaHRtbCwgYm9keSIpLAogICAgICAgICAgICAgICAgICAgICAgICAkd29vY29tbWVyY2VDaGVja291dEZvcm06IGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRib2R5LmZpbmQoIi5mb3JtLmNoZWNrb3V0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICRub3RpY2VzV3JhcHBlcjogdGhpcy4kZWxlbWVudC5maW5kKGUubm90aWNlc1dyYXBwZXIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbW92ZU5vdGljZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSAmJiBhcmd1bWVudHNbMF07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIGxldCBzID0gZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGJvZHkuZmluZCh0Lndvb2NvbW1lcmNlTm90aWNlcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKChlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgfHwgZWxlbWVudG9yRnJvbnRlbmQuaXNXUFByZXZpZXdNb2RlKCkpICYmIChzID0gcy5maWx0ZXIoIjpub3QoLmUtbm90aWNlcy1kZW1vLW5vdGljZSkiKSksIGUgJiYgdGhpcy5lbGVtZW50cy4kZG9jdW1lbnRTY3JvbGxUb0VsZW1lbnRzLnN0b3AoKSwgdGhpcy5lbGVtZW50cy4kbm90aWNlc1dyYXBwZXIucHJlcGVuZChzKSwgdGhpcy5pc19yZWFkeSB8fCAodGhpcy5lbGVtZW50cy4kbm90aWNlc1dyYXBwZXIucmVtb3ZlQ2xhc3MoImUtd29vY29tbWVyY2Utbm90aWNlcy13cmFwcGVyLWxvYWRpbmciKSwgdGhpcy5pc19yZWFkeSA9ICEwKSwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZSA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGUubGVuZ3RoIHx8IChlID0gdGhpcy5lbGVtZW50cy4kd29vY29tbWVyY2VDaGVja291dEZvcm0pLCBlLmxlbmd0aCAmJiB0aGlzLmVsZW1lbnRzLiRkb2N1bWVudFNjcm9sbFRvRWxlbWVudHMuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IGUub2Zmc2V0KCkudG9wIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgfSwgMWUzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoKSwgdGhpcy5pc19yZWFkeSA9ICExLCB0aGlzLm1vdmVOb3RpY2VzKCEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5vbigidXBkYXRlZF93Y19kaXYgdXBkYXRlZF9jaGVja291dCB1cGRhdGVkX2NhcnRfdG90YWxzIGFwcGxpZWRfY291cG9uIHJlbW92ZWRfY291cG9uIGFwcGxpZWRfY291cG9uX2luX2NoZWNrb3V0IHJlbW92ZWRfY291cG9uX2luX2NoZWNrb3V0IGNoZWNrb3V0X2Vycm9yIiwgKCgpID0+IHRoaXMubW92ZU5vdGljZXMoITApKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNDg0OiAoZSwgdCwgcykgPT4gewogICAgICAgICAgICB2YXIgbiA9IHMoNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG4ocyg5MTUpKTsKICAgICAgICAgICAgY2xhc3MgUHVyY2hhc2VTdW1tYXJ5SGFuZGxlciBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICIuZWxlbWVudG9yLXdpZGdldC13b29jb21tZXJjZS1wdXJjaGFzZS1zdW1tYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICJhZGRyZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1cmNoYXNlbm90ZTogIi5wcm9kdWN0LXB1cmNoYXNlLW5vdGUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLmNvbnRhaW5lciksCiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRyZXNzOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5hZGRyZXNzKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHB1cmNoYXNlbm90ZTogdGhpcy4kZWxlbWVudC5maW5kKGUucHVyY2hhc2Vub3RlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IFsiZ2VuZXJhbF90ZXh0X3R5cG9ncmFwaHkiLCAic2VjdGlvbnNfcGFkZGluZyIsICJzZWN0aW9uc19ib3JkZXJfd2lkdGgiXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2YgdCkgZS5zdGFydHNXaXRoKHMpICYmIHRoaXMuZXF1YWxpemVFbGVtZW50SGVpZ2h0KHRoaXMuZWxlbWVudHMuJGFkZHJlc3MpOwogICAgICAgICAgICAgICAgICAgIGUuc3RhcnRzV2l0aCgib3JkZXJfZGV0YWlsc19yb3dzX2dhcCIpICYmIHRoaXMucmVtb3ZlUGFkZGluZ0JldHdlZW5QdXJjaGFzZU5vdGUodGhpcy5lbGVtZW50cy4kcHVyY2hhc2Vub3RlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXBwbHlCdXR0b25zSG92ZXJBbmltYXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgZS5vcmRlcl9kZXRhaWxzX2J1dHRvbl9ob3Zlcl9hbmltYXRpb24gJiYgdGhpcy4kZWxlbWVudC5maW5kKCIub3JkZXItYWdhaW4gLmJ1dHRvbiwgdGQgLmJ1dHRvbiIpLmFkZENsYXNzKCJlbGVtZW50b3ItYW5pbWF0aW9uLSIgKyBlLm9yZGVyX2RldGFpbHNfYnV0dG9uX2hvdmVyX2FuaW1hdGlvbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoLi4uYXJndW1lbnRzKSwgdGhpcy5lcXVhbGl6ZUVsZW1lbnRIZWlnaHQodGhpcy5lbGVtZW50cy4kYWRkcmVzcyksIHRoaXMucmVtb3ZlUGFkZGluZ0JldHdlZW5QdXJjaGFzZU5vdGUodGhpcy5lbGVtZW50cy4kcHVyY2hhc2Vub3RlKSwgdGhpcy5hcHBseUJ1dHRvbnNIb3ZlckFuaW1hdGlvbigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gUHVyY2hhc2VTdW1tYXJ5SGFuZGxlcgogICAgICAgIH0sCiAgICAgICAgODAwMzogZSA9PiB7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IHdwLmkxOG4KICAgICAgICB9CiAgICB9LAogICAgZSA9PiB7CiAgICAgICAgZS5PKDAsIFs4MTldLCAoKCkgPT4gewogICAgICAgICAgICByZXR1cm4gdCA9IDk5NzgsIGUoZS5zID0gdCk7CiAgICAgICAgICAgIHZhciB0CiAgICAgICAgfSkpOwogICAgICAgIGUuTygpCiAgICB9Cl0pOw=="}},"time_used":1314,"timings":{"blocked":1212,"dns":0,"connect":0,"send":0,"wait":97,"receive":5,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/magnific/magnific-popup.css?ver=1.1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.288Z","timestamp":1785145482288,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/magnific/magnific-popup.css?ver=1.1.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 7414\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":7414,"size_decoded":7623,"mime_type":"text/css","magic":"ASCII text","md5":"c1215af4c048085b504c41c4ae2f129f","sha1":"84e63c0c698a8c0e536b59b834ad39a5b8e4afbb","sha256":"431de3947ec89bcb0438d3143545138beee2a883ad3434b6d845fa3383d084f6","sha512":"5c1bcdb126a93b5e7f0d3c4377f30a9c820bfef266f17b586e2bb64ddb2a2a8a8e1761739327c946e1b8bd2401141d2c34085d745c26a9694004b0b3f9cd1657","ssdeep":"192:nfhYfYIe/KniUr1ZhTUgQSNYROc6Fnu7BeKe6vtF0eUfeAe3F1e49cpRJo:cb1FuFCKFJ","tlshash":"79e122965fb31b01d41ed5a89baba715231a0053d30bcc6b7fcd6548cf8e69885a2fc4","first_seen":"2023-04-17T22:27:08Z","last_seen":"2026-07-27T13:15:07.524619Z","times_seen":77,"resource_available":false,"data":"LyogTWFnbmlmaWMgUG9wdXAgQ1NTICovCgoubWZwLWJnIHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHotaW5kZXg6IDEwNDI7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgYmFja2dyb3VuZDogIzBiMGIwYjsKICAgIG9wYWNpdHk6IDAuODsKfQoKLm1mcC13cmFwIHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHotaW5kZXg6IDEwNDM7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLm1mcC1jb250YWluZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwOwogICAgcGFkZGluZzogMCA4cHg7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgoubWZwLWNvbnRhaW5lcjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgoubWZwLWFsaWduLXRvcCAubWZwLWNvbnRhaW5lcjpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm1mcC1jb250ZW50IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB6LWluZGV4OiAxMDQ1Owp9CgoubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50LAoubWZwLWFqYXgtaG9sZGVyIC5tZnAtY29udGVudCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGN1cnNvcjogYXV0bzsKfQoKLm1mcC1hamF4LWN1ciB7CiAgICBjdXJzb3I6IHByb2dyZXNzOwp9CgoubWZwLXpvb20tb3V0LWN1ciwKLm1mcC16b29tLW91dC1jdXIgLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jbG9zZSB7CiAgICBjdXJzb3I6IC1tb3otem9vbS1vdXQ7CiAgICBjdXJzb3I6IC13ZWJraXQtem9vbS1vdXQ7CiAgICBjdXJzb3I6IHpvb20tb3V0Owp9CgoubWZwLXpvb20gewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiAtd2Via2l0LXpvb20taW47CiAgICBjdXJzb3I6IC1tb3otem9vbS1pbjsKICAgIGN1cnNvcjogem9vbS1pbjsKfQoKLm1mcC1hdXRvLWN1cnNvciAubWZwLWNvbnRlbnQgewogICAgY3Vyc29yOiBhdXRvOwp9CgoubWZwLWNsb3NlLAoubWZwLWFycm93LAoubWZwLXByZWxvYWRlciwKLm1mcC1jb3VudGVyIHsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCi5tZnAtbG9hZGluZy5tZnAtZmlndXJlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5tZnAtaGlkZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5tZnAtcHJlbG9hZGVyIHsKICAgIGNvbG9yOiAjQ0NDOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICB3aWR0aDogYXV0bzsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi10b3A6IC0wLjhlbTsKICAgIGxlZnQ6IDhweDsKICAgIHJpZ2h0OiA4cHg7CiAgICB6LWluZGV4OiAxMDQ0Owp9CgoubWZwLXByZWxvYWRlciBhIHsKICAgIGNvbG9yOiAjQ0NDOwp9CgoubWZwLXByZWxvYWRlciBhOmhvdmVyIHsKICAgIGNvbG9yOiAjRkZGOwp9CgoubWZwLXMtcmVhZHkgLm1mcC1wcmVsb2FkZXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm1mcC1zLWVycm9yIC5tZnAtY29udGVudCB7CiAgICBkaXNwbGF5OiBub25lOwp9CgpidXR0b24ubWZwLWNsb3NlLApidXR0b24ubWZwLWFycm93IHsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IDA7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG91dGxpbmU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgei1pbmRleDogMTA0NjsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsKfQoKYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgIHBhZGRpbmc6IDA7CiAgICBib3JkZXI6IDA7Cn0KCi5tZnAtY2xvc2UgewogICAgd2lkdGg6IDQ0cHg7CiAgICBoZWlnaHQ6IDQ0cHg7CiAgICBsaW5lLWhlaWdodDogNDRweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAwOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgb3BhY2l0eTogMC42NTsKICAgIHBhZGRpbmc6IDAgMCAxOHB4IDEwcHg7CiAgICBjb2xvcjogI0ZGRjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtc2l6ZTogMjhweDsKICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgQmFza2VydmlsbGUsIG1vbm9zcGFjZTsKfQoKLm1mcC1jbG9zZTpob3ZlciwKLm1mcC1jbG9zZTpmb2N1cyB7CiAgICBvcGFjaXR5OiAxOwp9CgoubWZwLWNsb3NlOmFjdGl2ZSB7CiAgICB0b3A6IDFweDsKfQoKLm1mcC1jbG9zZS1idG4taW4gLm1mcC1jbG9zZSB7CiAgICBjb2xvcjogIzMzMzsKfQoKLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jbG9zZSwKLm1mcC1pZnJhbWUtaG9sZGVyIC5tZnAtY2xvc2UgewogICAgY29sb3I6ICNGRkY7CiAgICByaWdodDogLTZweDsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgcGFkZGluZy1yaWdodDogNnB4OwogICAgd2lkdGg6IDEwMCU7Cn0KCi5tZnAtY291bnRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIGNvbG9yOiAjQ0NDOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgoubWZwLWFycm93IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG9wYWNpdHk6IDAuNjU7CiAgICBtYXJnaW46IDA7CiAgICB0b3A6IDUwJTsKICAgIG1hcmdpbi10b3A6IC01NXB4OwogICAgcGFkZGluZzogMDsKICAgIHdpZHRoOiA5MHB4OwogICAgaGVpZ2h0OiAxMTBweDsKICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5tZnAtYXJyb3c6YWN0aXZlIHsKICAgIG1hcmdpbi10b3A6IC01NHB4Owp9CgoubWZwLWFycm93OmhvdmVyLAoubWZwLWFycm93OmZvY3VzIHsKICAgIG9wYWNpdHk6IDE7Cn0KCi5tZnAtYXJyb3c6YmVmb3JlLAoubWZwLWFycm93OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBtYXJnaW4tdG9wOiAzNXB4OwogICAgbWFyZ2luLWxlZnQ6IDM1cHg7CiAgICBib3JkZXI6IG1lZGl1bSBpbnNldCB0cmFuc3BhcmVudDsKfQoKLm1mcC1hcnJvdzphZnRlciB7CiAgICBib3JkZXItdG9wLXdpZHRoOiAxM3B4OwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMTNweDsKICAgIHRvcDogOHB4Owp9CgoubWZwLWFycm93OmJlZm9yZSB7CiAgICBib3JkZXItdG9wLXdpZHRoOiAyMXB4OwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMjFweDsKICAgIG9wYWNpdHk6IDAuNzsKfQoKLm1mcC1hcnJvdy1sZWZ0IHsKICAgIGxlZnQ6IDA7Cn0KCi5tZnAtYXJyb3ctbGVmdDphZnRlciB7CiAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgI0ZGRjsKICAgIG1hcmdpbi1sZWZ0OiAzMXB4Owp9CgoubWZwLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIG1hcmdpbi1sZWZ0OiAyNXB4OwogICAgYm9yZGVyLXJpZ2h0OiAyN3B4IHNvbGlkICMzRjNGM0Y7Cn0KCi5tZnAtYXJyb3ctcmlnaHQgewogICAgcmlnaHQ6IDA7Cn0KCi5tZnAtYXJyb3ctcmlnaHQ6YWZ0ZXIgewogICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgI0ZGRjsKICAgIG1hcmdpbi1sZWZ0OiAzOXB4Owp9CgoubWZwLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgICBib3JkZXItbGVmdDogMjdweCBzb2xpZCAjM0YzRjNGOwp9CgoubWZwLWlmcmFtZS1ob2xkZXIgewogICAgcGFkZGluZy10b3A6IDQwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNDBweDsKfQoKLm1mcC1pZnJhbWUtaG9sZGVyIC5tZnAtY29udGVudCB7CiAgICBsaW5lLWhlaWdodDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiA5MDBweDsKfQoKLm1mcC1pZnJhbWUtaG9sZGVyIC5tZnAtY2xvc2UgewogICAgdG9wOiAtNDBweDsKfQoKLm1mcC1pZnJhbWUtc2NhbGVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmctdG9wOiA1Ni4yNSU7Cn0KCi5tZnAtaWZyYW1lLXNjYWxlciBpZnJhbWUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3gtc2hhZG93OiAwIDAgOHB4IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgIGJhY2tncm91bmQ6ICMwMDA7Cn0KCi8qIE1haW4gaW1hZ2UgaW4gcG9wdXAgKi8KCmltZy5tZnAtaW1nIHsKICAgIHdpZHRoOiBhdXRvOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBwYWRkaW5nOiA0MHB4IDAgNDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwp9CgovKiBUaGUgc2hhZG93IGJlaGluZCB0aGUgaW1hZ2UgKi8KCi5tZnAtZmlndXJlIHsKICAgIGxpbmUtaGVpZ2h0OiAwOwp9CgoubWZwLWZpZ3VyZTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDQwcHg7CiAgICBib3R0b206IDQwcHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICB6LWluZGV4OiAtMTsKICAgIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgYmFja2dyb3VuZDogIzQ0NDsKfQoKLm1mcC1maWd1cmUgc21hbGwgewogICAgY29sb3I6ICNCREJEQkQ7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxNHB4Owp9CgoubWZwLWZpZ3VyZSBmaWd1cmUgewogICAgbWFyZ2luOiAwOwp9CgoubWZwLWJvdHRvbS1iYXIgewogICAgbWFyZ2luLXRvcDogLTM2cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBjdXJzb3I6IGF1dG87Cn0KCi5tZnAtdGl0bGUgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgY29sb3I6ICNGM0YzRjM7CiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAzNnB4Owp9CgoubWZwLWltYWdlLWhvbGRlciAubWZwLWNvbnRlbnQgewogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgoubWZwLWdhbGxlcnkgLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1maWd1cmUgewogICAgY3Vyc29yOiBwb2ludGVyOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSwKc2NyZWVuIGFuZCAobWF4LWhlaWdodDogMzAwcHgpIHsKICAgIC8qKgogICAgICAgKiBSZW1vdmUgYWxsIHBhZGRpbmdzIGFyb3VuZCB0aGUgaW1hZ2Ugb24gc21hbGwgc2NyZWVuCiAgICAgICAqLwogICAgLm1mcC1pbWctbW9iaWxlIC5tZnAtaW1hZ2UtaG9sZGVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICAgICAgcGFkZGluZy1yaWdodDogMDsKICAgIH0KICAgIC5tZnAtaW1nLW1vYmlsZSBpbWcubWZwLWltZyB7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KICAgIC5tZnAtaW1nLW1vYmlsZSAubWZwLWZpZ3VyZTphZnRlciB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgIH0KICAgIC5tZnAtaW1nLW1vYmlsZSAubWZwLWZpZ3VyZSBzbWFsbCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lOwogICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICB9CiAgICAubWZwLWltZy1tb2JpbGUgLm1mcC1ib3R0b20tYmFyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICB0b3A6IGF1dG87CiAgICAgICAgcGFkZGluZzogM3B4IDVweDsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KICAgIC5tZnAtaW1nLW1vYmlsZSAubWZwLWJvdHRvbS1iYXI6ZW1wdHkgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICB9CiAgICAubWZwLWltZy1tb2JpbGUgLm1mcC1jb3VudGVyIHsKICAgICAgICByaWdodDogNXB4OwogICAgICAgIHRvcDogM3B4OwogICAgfQogICAgLm1mcC1pbWctbW9iaWxlIC5tZnAtY2xvc2UgewogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDM1cHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KfQoKQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5tZnAtYXJyb3cgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpOwogICAgfQogICAgLm1mcC1hcnJvdy1sZWZ0IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDA7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMDsKICAgIH0KICAgIC5tZnAtYXJyb3ctcmlnaHQgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMTAwJTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlOwogICAgfQogICAgLm1mcC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDZweDsKICAgIH0KfQ=="}},"time_used":328,"timings":{"blocked":-1,"dns":0,"connect":94,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/all-awesome.css?ver=5.11.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.302Z","timestamp":1785145482302,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/all-awesome.css?ver=5.11.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 73436\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:02 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":73436,"size_decoded":73646,"mime_type":"text/css","magic":"ASCII text","md5":"de03c348d51599ea909e80665b3d0036","sha1":"3e804c0d18ac8e99d2d5bd7cdd90477dcc56e8ef","sha256":"abb4b57bda800473b70511ceaf550843379c207e10e430bfd6a300c6dd68b9c4","sha512":"92284f747ad95094ba621df79ed8dd427b545a86c8199fb6e0ee9b8db3488d32217581213287702a85125a70f829c11c6d04b769410c773da85c526fce17a94e","ssdeep":"768:Vb00EWGma1iUDgaXidI2D6TY1Z39u+0TvpUqbnMHOefpGTna:VA0EWkiVaS6C6E1Z39u+opZMdhGe","tlshash":"e17302bcd1bf18904319e4d1274be240bb2db6ae9c494d5cf282fe9dbbc02549186bdd","first_seen":"2026-07-27T08:06:56.349194Z","last_seen":"2026-07-27T09:45:50.9214Z","times_seen":3,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTEuMiBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCi5mYSwKLmZhcywKLmZhciwKLmZhbCwKLmZhZCwKLmZhYiB7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDsKICAgIHRleHQtcmVuZGVyaW5nOiBhdXRvOwogICAgbGluZS1oZWlnaHQ6IDE7Cn0KCi5mYS1sZyB7CiAgICBmb250LXNpemU6IDEuMzMzMzNlbTsKICAgIGxpbmUtaGVpZ2h0OiAwLjc1ZW07CiAgICB2ZXJ0aWNhbC1hbGlnbjogLS4wNjY3ZW07Cn0KCi5mYS14cyB7CiAgICBmb250LXNpemU6IC43NWVtOwp9CgouZmEtc20gewogICAgZm9udC1zaXplOiAuODc1ZW07Cn0KCi5mYS0xeCB7CiAgICBmb250LXNpemU6IDFlbTsKfQoKLmZhLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtOwp9CgouZmEtM3ggewogICAgZm9udC1zaXplOiAzZW07Cn0KCi5mYS00eCB7CiAgICBmb250LXNpemU6IDRlbTsKfQoKLmZhLTV4IHsKICAgIGZvbnQtc2l6ZTogNWVtOwp9CgouZmEtNnggewogICAgZm9udC1zaXplOiA2ZW07Cn0KCi5mYS03eCB7CiAgICBmb250LXNpemU6IDdlbTsKfQoKLmZhLTh4IHsKICAgIGZvbnQtc2l6ZTogOGVtOwp9CgouZmEtOXggewogICAgZm9udC1zaXplOiA5ZW07Cn0KCi5mYS0xMHggewogICAgZm9udC1zaXplOiAxMGVtOwp9CgouZmEtZncgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDEuMjVlbTsKfQoKLmZhLXVsIHsKICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgIG1hcmdpbi1sZWZ0OiAyLjVlbTsKICAgIHBhZGRpbmctbGVmdDogMDsKfQoKLmZhLXVsPmxpIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmZhLWxpIHsKICAgIGxlZnQ6IC0yZW07CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMmVtOwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCi5mYS1ib3JkZXIgewogICAgYm9yZGVyOiBzb2xpZCAwLjA4ZW0gI2VlZTsKICAgIGJvcmRlci1yYWRpdXM6IC4xZW07CiAgICBwYWRkaW5nOiAuMmVtIC4yNWVtIC4xNWVtOwp9CgouZmEtcHVsbC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0Owp9CgouZmEtcHVsbC1yaWdodCB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5mYS5mYS1wdWxsLWxlZnQsCi5mYXMuZmEtcHVsbC1sZWZ0LAouZmFyLmZhLXB1bGwtbGVmdCwKLmZhbC5mYS1wdWxsLWxlZnQsCi5mYWIuZmEtcHVsbC1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogLjNlbTsKfQoKLmZhLmZhLXB1bGwtcmlnaHQsCi5mYXMuZmEtcHVsbC1yaWdodCwKLmZhci5mYS1wdWxsLXJpZ2h0LAouZmFsLmZhLXB1bGwtcmlnaHQsCi5mYWIuZmEtcHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogLjNlbTsKfQoKLmZhLXNwaW4gewogICAgLXdlYmtpdC1hbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyOwogICAgYW5pbWF0aW9uOiBmYS1zcGluIDJzIGluZmluaXRlIGxpbmVhcjsKfQoKLmZhLXB1bHNlIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpOwogICAgYW5pbWF0aW9uOiBmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIH0KICAgIDEwMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgfQp9CgpAa2V5ZnJhbWVzIGZhLXNwaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIH0KfQoKLmZhLXJvdGF0ZS05MCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MSkiOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Cn0KCi5mYS1yb3RhdGUtMTgwIHsKICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yKSI7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwp9CgouZmEtcm90YXRlLTI3MCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MykiOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKfQoKLmZhLWZsaXAtaG9yaXpvbnRhbCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MCwgbWlycm9yPTEpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgtMSwgMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTsKfQoKLmZhLWZsaXAtdmVydGljYWwgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsIG1pcnJvcj0xKSI7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSwgLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAtMSk7Cn0KCi5mYS1mbGlwLWJvdGgsCi5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MiwgbWlycm9yPTEpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgtMSwgLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgtMSwgLTEpOwp9Cgo6cm9vdCAuZmEtcm90YXRlLTkwLAo6cm9vdCAuZmEtcm90YXRlLTE4MCwKOnJvb3QgLmZhLXJvdGF0ZS0yNzAsCjpyb290IC5mYS1mbGlwLWhvcml6b250YWwsCjpyb290IC5mYS1mbGlwLXZlcnRpY2FsLAo6cm9vdCAuZmEtZmxpcC1ib3RoIHsKICAgIC13ZWJraXQtZmlsdGVyOiBub25lOwogICAgZmlsdGVyOiBub25lOwp9CgouZmEtc3RhY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAyZW07CiAgICBsaW5lLWhlaWdodDogMmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHdpZHRoOiAyLjVlbTsKfQoKLmZhLXN0YWNrLTF4LAouZmEtc3RhY2stMnggewogICAgbGVmdDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHdpZHRoOiAxMDAlOwp9CgouZmEtc3RhY2stMXggewogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCi5mYS1zdGFjay0yeCB7CiAgICBmb250LXNpemU6IDJlbTsKfQoKLmZhLWludmVyc2UgewogICAgY29sb3I6ICNmZmY7Cn0KCi8qIEZvbnQgQXdlc29tZSB1c2VzIHRoZSBVbmljb2RlIFByaXZhdGUgVXNlIEFyZWEgKFBVQSkgdG8gZW5zdXJlIHNjcmVlbgpyZWFkZXJzIGRvIG5vdCByZWFkIG9mZiByYW5kb20gY2hhcmFjdGVycyB0aGF0IHJlcHJlc2VudCBpY29ucyAqLwoKLmZhLTUwMHB4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmUiOwp9CgouZmEtYWNjZXNzaWJsZS1pY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjgiOwp9CgouZmEtYWNjdXNvZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2OSI7Cn0KCi5mYS1hY3F1aXNpdGlvbnMtaW5jb3Jwb3JhdGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YWYiOwp9CgouZmEtYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0MSI7Cn0KCi5mYS1hZGRyZXNzLWJvb2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiOSI7Cn0KCi5mYS1hZGRyZXNzLWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiYiI7Cn0KCi5mYS1hZGp1c3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MiI7Cn0KCi5mYS1hZG46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MCI7Cn0KCi5mYS1hZG9iZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzc4IjsKfQoKLmZhLWFkdmVyc2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNmEiOwp9CgouZmEtYWZmaWxpYXRldGhlbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YiI7Cn0KCi5mYS1haXItZnJlc2hlbmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDAiOwp9CgouZmEtYWlyYm5iOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzQiOwp9CgouZmEtYWxnb2xpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZjIjsKfQoKLmZhLWFsaWduLWNlbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM3IjsKfQoKLmZhLWFsaWduLWp1c3RpZnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzOSI7Cn0KCi5mYS1hbGlnbi1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMzYiOwp9CgouZmEtYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzOCI7Cn0KCi5mYS1hbGlwYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0MiI7Cn0KCi5mYS1hbGxlcmdpZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2MSI7Cn0KCi5mYS1hbWF6b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MCI7Cn0KCi5mYS1hbWF6b24tcGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmMiOwp9CgouZmEtYW1idWxhbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjkiOwp9CgouZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMyI7Cn0KCi5mYS1hbWlsaWE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2ZCI7Cn0KCi5mYS1hbmNob3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzZCI7Cn0KCi5mYS1hbmRyb2lkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2IiOwp9CgouZmEtYW5nZWxsaXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDkiOwp9CgouZmEtYW5nbGUtZG91YmxlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwMyI7Cn0KCi5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTAwIjsKfQoKLmZhLWFuZ2xlLWRvdWJsZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTAxIjsKfQoKLmZhLWFuZ2xlLWRvdWJsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTAyIjsKfQoKLmZhLWFuZ2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNyI7Cn0KCi5mYS1hbmdsZS1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDQiOwp9CgouZmEtYW5nbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNSI7Cn0KCi5mYS1hbmdsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA2IjsKfQoKLmZhLWFuZ3J5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTYiOwp9CgouZmEtYW5ncnljcmVhdGl2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZlIjsKfQoKLmZhLWFuZ3VsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMCI7Cn0KCi5mYS1hbmtoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NDQiOwp9CgouZmEtYXBwLXN0b3JlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNmYiOwp9CgouZmEtYXBwLXN0b3JlLWlvczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzcwIjsKfQoKLmZhLWFwcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzEiOwp9CgouZmEtYXBwbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3OSI7Cn0KCi5mYS1hcHBsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkMSI7Cn0KCi5mYS1hcHBsZS1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNSI7Cn0KCi5mYS1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODciOwp9CgouZmEtYXJjaHdheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU3IjsKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzU4IjsKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzU5IjsKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YSI7Cn0KCi5mYS1hcnJvdy1hbHQtY2lyY2xlLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNWIiOwp9CgouZmEtYXJyb3ctY2lyY2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhYiI7Cn0KCi5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE4IjsKfQoKLmZhLWFycm93LWNpcmNsZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE5IjsKfQoKLmZhLWFycm93LWNpcmNsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFhIjsKfQoKLmZhLWFycm93LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MyI7Cn0KCi5mYS1hcnJvdy1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjAiOwp9CgouZmEtYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MSI7Cn0KCi5mYS1hcnJvdy11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDYyIjsKfQoKLmZhLWFycm93cy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBiMiI7Cn0KCi5mYS1hcnJvd3MtYWx0LWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzNyI7Cn0KCi5mYS1hcnJvd3MtYWx0LXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzOCI7Cn0KCi5mYS1hcnRzdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3N2EiOwp9CgouZmEtYXNzaXN0aXZlLWxpc3RlbmluZy1zeXN0ZW1zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTIiOwp9CgouZmEtYXN0ZXJpc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2OSI7Cn0KCi5mYS1hc3ltbWV0cmlrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzIiOwp9CgouZmEtYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmYSI7Cn0KCi5mYS1hdGxhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU4IjsKfQoKLmZhLWF0bGFzc2lhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzdiIjsKfQoKLmZhLWF0b206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkMiI7Cn0KCi5mYS1hdWRpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzMiOwp9CgouZmEtYXVkaW8tZGVzY3JpcHRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5ZSI7Cn0KCi5mYS1hdXRvcHJlZml4ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxYyI7Cn0KCi5mYS1hdmlhbmV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzQiOwp9CgouZmEtYXZpYXRvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjEiOwp9CgouZmEtYXdhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1OSI7Cn0KCi5mYS1hd3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3NSI7Cn0KCi5mYS1iYWJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3N2MiOwp9CgouZmEtYmFieS1jYXJyaWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzdkIjsKfQoKLmZhLWJhY2tzcGFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVhIjsKfQoKLmZhLWJhY2t3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGEiOwp9CgouZmEtYmFjb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNSI7Cn0KCi5mYS1iYWxhbmNlLXNjYWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNGUiOwp9CgouZmEtYmFsYW5jZS1zY2FsZS1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTUiOwp9CgouZmEtYmFsYW5jZS1zY2FsZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE2IjsKfQoKLmZhLWJhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDVlIjsKfQoKLmZhLWJhbmQtYWlkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjIiOwp9CgouZmEtYmFuZGNhbXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkNSI7Cn0KCi5mYS1iYXJjb2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmEiOwp9CgouZmEtYmFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM5IjsKfQoKLmZhLWJhc2ViYWxsLWJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzMyI7Cn0KCi5mYS1iYXNrZXRiYWxsLWJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzNCI7Cn0KCi5mYS1iYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2QiOwp9CgouZmEtYmF0dGVyeS1lbXB0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ0IjsKfQoKLmZhLWJhdHRlcnktZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQwIjsKfQoKLmZhLWJhdHRlcnktaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQyIjsKfQoKLmZhLWJhdHRlcnktcXVhcnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQzIjsKfQoKLmZhLWJhdHRlcnktdGhyZWUtcXVhcnRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0MSI7Cn0KCi5mYS1iYXR0bGUtbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzUiOwp9CgouZmEtYmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzYiOwp9CgouZmEtYmVlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGZjIjsKfQoKLmZhLWJlaGFuY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiNCI7Cn0KCi5mYS1iZWhhbmNlLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWI1IjsKfQoKLmZhLWJlbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMyI7Cn0KCi5mYS1iZWxsLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjYiOwp9CgouZmEtYmV6aWVyLWN1cnZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NWIiOwp9CgouZmEtYmlibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0NyI7Cn0KCi5mYS1iaWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDYiOwp9CgouZmEtYmlraW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NGEiOwp9CgouZmEtYmltb2JqZWN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzgiOwp9CgouZmEtYmlub2N1bGFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU1IjsKfQoKLmZhLWJpb2hhemFyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzgwIjsKfQoKLmZhLWJpcnRoZGF5LWNha2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmZCI7Cn0KCi5mYS1iaXRidWNrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MSI7Cn0KCi5mYS1iaXRjb2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzkiOwp9CgouZmEtYml0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdhIjsKfQoKLmZhLWJsYWNrLXRpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdlIjsKfQoKLmZhLWJsYWNrYmVycnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YiI7Cn0KCi5mYS1ibGVuZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTciOwp9CgouZmEtYmxlbmRlci1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmI2IjsKfQoKLmZhLWJsaW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOWQiOwp9CgouZmEtYmxvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzgxIjsKfQoKLmZhLWJsb2dnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YyI7Cn0KCi5mYS1ibG9nZ2VyLWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3ZCI7Cn0KCi5mYS1ibHVldG9vdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MyI7Cn0KCi5mYS1ibHVldG9vdGgtYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjk0IjsKfQoKLmZhLWJvbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzMiI7Cn0KCi5mYS1ib2x0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTciOwp9CgouZmEtYm9tYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUyIjsKfQoKLmZhLWJvbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkNyI7Cn0KCi5mYS1ib25nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NWMiOwp9CgouZmEtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJkIjsKfQoKLmZhLWJvb2stZGVhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmI3IjsKfQoKLmZhLWJvb2stbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2U2IjsKfQoKLmZhLWJvb2stb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE4IjsKfQoKLmZhLWJvb2stcmVhZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGEiOwp9CgouZmEtYm9va21hcms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyZSI7Cn0KCi5mYS1ib290c3RyYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNiI7Cn0KCi5mYS1ib3JkZXItYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NGMiOwp9CgouZmEtYm9yZGVyLW5vbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg1MCI7Cn0KCi5mYS1ib3JkZXItc3R5bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg1MyI7Cn0KCi5mYS1ib3dsaW5nLWJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzNiI7Cn0KCi5mYS1ib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2NiI7Cn0KCi5mYS1ib3gtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDllIjsKfQoKLmZhLWJveGVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjgiOwp9CgouZmEtYnJhaWxsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmExIjsKfQoKLmZhLWJyYWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGMiOwp9CgouZmEtYnJlYWQtc2xpY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlYyI7Cn0KCi5mYS1icmllZmNhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBiMSI7Cn0KCi5mYS1icmllZmNhc2UtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDY5IjsKfQoKLmZhLWJyb2FkY2FzdC10b3dlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE5IjsKfQoKLmZhLWJyb29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWEiOwp9CgouZmEtYnJ1c2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1ZCI7Cn0KCi5mYS1idGM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1YSI7Cn0KCi5mYS1idWZmZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNyI7Cn0KCi5mYS1idWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OCI7Cn0KCi5mYS1idWlsZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFkIjsKfQoKLmZhLWJ1bGxob3JuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTEiOwp9CgouZmEtYnVsbHNleWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0MCI7Cn0KCi5mYS1idXJuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NmEiOwp9CgouZmEtYnVyb21vYmVsZXhwZXJ0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdmIjsKfQoKLmZhLWJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA3IjsKfQoKLmZhLWJ1cy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1ZSI7Cn0KCi5mYS1idXNpbmVzcy10aW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NGEiOwp9CgouZmEtYnV5LW4tbGFyZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhhNiI7Cn0KCi5mYS1idXlzZWxsYWRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMGQiOwp9CgouZmEtY2FsY3VsYXRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWVjIjsKfQoKLmZhLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzMiOwp9CgouZmEtY2FsZW5kYXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzMiOwp9CgouZmEtY2FsZW5kYXItY2hlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NCI7Cn0KCi5mYS1jYWxlbmRhci1kYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MyI7Cn0KCi5mYS1jYWxlbmRhci1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjcyIjsKfQoKLmZhLWNhbGVuZGFyLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MSI7Cn0KCi5mYS1jYWxlbmRhci10aW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjczIjsKfQoKLmZhLWNhbGVuZGFyLXdlZWs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NCI7Cn0KCi5mYS1jYW1lcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzMCI7Cn0KCi5mYS1jYW1lcmEtcmV0cm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MyI7Cn0KCi5mYS1jYW1wZ3JvdW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YmIiOwp9CgouZmEtY2FuYWRpYW4tbWFwbGUtbGVhZjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzg1IjsKfQoKLmZhLWNhbmR5LWNhbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NiI7Cn0KCi5mYS1jYW5uYWJpczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVmIjsKfQoKLmZhLWNhcHN1bGVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NmIiOwp9CgouZmEtY2FyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjkiOwp9CgouZmEtY2FyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWRlIjsKfQoKLmZhLWNhci1iYXR0ZXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGYiOwp9CgouZmEtY2FyLWNyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTEiOwp9CgouZmEtY2FyLXNpZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVlNCI7Cn0KCi5mYS1jYXJldC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDciOwp9CgouZmEtY2FyZXQtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ5IjsKfQoKLmZhLWNhcmV0LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGEiOwp9CgouZmEtY2FyZXQtc3F1YXJlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MCI7Cn0KCi5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkxIjsKfQoKLmZhLWNhcmV0LXNxdWFyZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUyIjsKfQoKLmZhLWNhcmV0LXNxdWFyZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUxIjsKfQoKLmZhLWNhcmV0LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDgiOwp9CgouZmEtY2Fycm90OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODciOwp9CgouZmEtY2FydC1hcnJvdy1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTgiOwp9CgouZmEtY2FydC1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTciOwp9CgouZmEtY2FzaC1yZWdpc3RlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzg4IjsKfQoKLmZhLWNhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmJlIjsKfQoKLmZhLWNjLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZCI7Cn0KCi5mYS1jYy1hbWV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjMiOwp9CgouZmEtY2MtYXBwbGUtcGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MTYiOwp9CgouZmEtY2MtZGluZXJzLWNsdWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YyI7Cn0KCi5mYS1jYy1kaXNjb3ZlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWYyIjsKfQoKLmZhLWNjLWpjYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRiIjsKfQoKLmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMSI7Cn0KCi5mYS1jYy1wYXlwYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmNCI7Cn0KCi5mYS1jYy1zdHJpcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmNSI7Cn0KCi5mYS1jYy12aXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjAiOwp9CgouZmEtY2VudGVyY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzgwIjsKfQoKLmZhLWNlbnRvczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzg5IjsKfQoKLmZhLWNlcnRpZmljYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTMiOwp9CgouZmEtY2hhaXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjMCI7Cn0KCi5mYS1jaGFsa2JvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWIiOwp9CgouZmEtY2hhbGtib2FyZC10ZWFjaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWMiOwp9CgouZmEtY2hhcmdpbmctc3RhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWU3IjsKfQoKLmZhLWNoYXJ0LWFyZWE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmZSI7Cn0KCi5mYS1jaGFydC1iYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MCI7Cn0KCi5mYS1jaGFydC1saW5lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDEiOwp9CgouZmEtY2hhcnQtcGllOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDAiOwp9CgouZmEtY2hlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwYyI7Cn0KCi5mYS1jaGVjay1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1OCI7Cn0KCi5mYS1jaGVjay1kb3VibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MCI7Cn0KCi5mYS1jaGVjay1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YSI7Cn0KCi5mYS1jaGVlc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlZiI7Cn0KCi5mYS1jaGVzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDM5IjsKfQoKLmZhLWNoZXNzLWJpc2hvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDNhIjsKfQoKLmZhLWNoZXNzLWJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0M2MiOwp9CgouZmEtY2hlc3Mta2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNDNmIjsKfQoKLmZhLWNoZXNzLWtuaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQxIjsKfQoKLmZhLWNoZXNzLXBhd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0MyI7Cn0KCi5mYS1jaGVzcy1xdWVlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQ1IjsKfQoKLmZhLWNoZXNzLXJvb2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NyI7Cn0KCi5mYS1jaGV2cm9uLWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2EiOwp9CgouZmEtY2hldnJvbi1jaXJjbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM3IjsKfQoKLmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzgiOwp9CgouZmEtY2hldnJvbi1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzOSI7Cn0KCi5mYS1jaGV2cm9uLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3OCI7Cn0KCi5mYS1jaGV2cm9uLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MyI7Cn0KCi5mYS1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTQiOwp9CgouZmEtY2hldnJvbi11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDc3IjsKfQoKLmZhLWNoaWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWUiOwp9CgouZmEtY2hyb21lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjgiOwp9CgouZmEtY2hyb21lY2FzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODM4IjsKfQoKLmZhLWNodXJjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFkIjsKfQoKLmZhLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTExIjsKfQoKLmZhLWNpcmNsZS1ub3RjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNlIjsKfQoKLmZhLWNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0ZiI7Cn0KCi5mYS1jbGluaWMtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2YyIjsKfQoKLmZhLWNsaXBib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzI4IjsKfQoKLmZhLWNsaXBib2FyZC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZjIjsKfQoKLmZhLWNsaXBib2FyZC1saXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NmQiOwp9CgouZmEtY2xvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxNyI7Cn0KCi5mYS1jbG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRkIjsKfQoKLmZhLWNsb3NlZC1jYXB0aW9uaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMGEiOwp9CgouZmEtY2xvdWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMiI7Cn0KCi5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MSI7Cn0KCi5mYS1jbG91ZC1tZWF0YmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzNiIjsKfQoKLmZhLWNsb3VkLW1vb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjMyI7Cn0KCi5mYS1jbG91ZC1tb29uLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczYyI7Cn0KCi5mYS1jbG91ZC1yYWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3M2QiOwp9CgouZmEtY2xvdWQtc2hvd2Vycy1oZWF2eTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzQwIjsKfQoKLmZhLWNsb3VkLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmM0IjsKfQoKLmZhLWNsb3VkLXN1bi1yYWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NDMiOwp9CgouZmEtY2xvdWQtdXBsb2FkLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzgyIjsKfQoKLmZhLWNsb3Vkc2NhbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MyI7Cn0KCi5mYS1jbG91ZHNtaXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODQiOwp9CgouZmEtY2xvdWR2ZXJzaWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODUiOwp9CgouZmEtY29ja3RhaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MSI7Cn0KCi5mYS1jb2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjEiOwp9CgouZmEtY29kZS1icmFuY2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNiI7Cn0KCi5mYS1jb2RlcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2IiOwp9CgouZmEtY29kaWVwaWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4NCI7Cn0KCi5mYS1jb2ZmZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmNCI7Cn0KCi5mYS1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMyI7Cn0KCi5mYS1jb2dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODUiOwp9CgouZmEtY29pbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxZSI7Cn0KCi5mYS1jb2x1bW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGIiOwp9CgouZmEtY29tbWVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDc1IjsKfQoKLmZhLWNvbW1lbnQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyN2EiOwp9CgouZmEtY29tbWVudC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1MSI7Cn0KCi5mYS1jb21tZW50LWRvdHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRhZCI7Cn0KCi5mYS1jb21tZW50LW1lZGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdmNSI7Cn0KCi5mYS1jb21tZW50LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjMiOwp9CgouZmEtY29tbWVudHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4NiI7Cn0KCi5mYS1jb21tZW50cy1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1MyI7Cn0KCi5mYS1jb21wYWN0LWRpc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxZiI7Cn0KCi5mYS1jb21wYXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNGUiOwp9CgouZmEtY29tcHJlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2NiI7Cn0KCi5mYS1jb21wcmVzcy1hcnJvd3MtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OGMiOwp9CgouZmEtY29uY2llcmdlLWJlbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MiI7Cn0KCi5mYS1jb25mbHVlbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OGQiOwp9CgouZmEtY29ubmVjdGRldmVsb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwZSI7Cn0KCi5mYS1jb250YW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2ZCI7Cn0KCi5mYS1jb29raWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MyI7Cn0KCi5mYS1jb29raWUtYml0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTY0IjsKfQoKLmZhLWNvcHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNSI7Cn0KCi5mYS1jb3B5cmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOSI7Cn0KCi5mYS1jb3R0b24tYnVyZWF1OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4OWUiOwp9CgouZmEtY291Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRiOCI7Cn0KCi5mYS1jcGFuZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4OCI7Cn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWUiOwp9CgouZmEtY3JlYXRpdmUtY29tbW9ucy1ieTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGU3IjsKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOCI7Cn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLW5jLWV1OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTkiOwp9CgouZmEtY3JlYXRpdmUtY29tbW9ucy1uYy1qcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNGVhIjsKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYiI7Cn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXBkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWMiOwp9CgouZmEtY3JlYXRpdmUtY29tbW9ucy1wZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlZCI7Cn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXJlbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWUiOwp9CgouZmEtY3JlYXRpdmUtY29tbW9ucy1zYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGVmIjsKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMCI7Cn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMSI7Cn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNoYXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjIiOwp9CgouZmEtY3JlYXRpdmUtY29tbW9ucy16ZXJvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjMiOwp9CgouZmEtY3JlZGl0LWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5ZCI7Cn0KCi5mYS1jcml0aWNhbC1yb2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YzkiOwp9CgouZmEtY3JvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI1IjsKfQoKLmZhLWNyb3AtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjUiOwp9CgouZmEtY3Jvc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1NCI7Cn0KCi5mYS1jcm9zc2hhaXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNWIiOwp9CgouZmEtY3JvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIwIjsKfQoKLmZhLWNyb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjEiOwp9CgouZmEtY3J1dGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjciOwp9CgouZmEtY3NzMzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTNjIjsKfQoKLmZhLWNzczMtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOGIiOwp9CgouZmEtY3ViZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWIyIjsKfQoKLmZhLWN1YmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjMiOwp9CgouZmEtY3V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzQiOwp9CgouZmEtY3V0dGxlZmlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhjIjsKfQoKLmZhLWQtYW5kLWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4ZCI7Cn0KCi5mYS1kLWFuZC1kLWJleW9uZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmNhIjsKfQoKLmZhLWRhc2hjdWJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTAiOwp9CgouZmEtZGF0YWJhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjMCI7Cn0KCi5mYS1kZWFmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTQiOwp9CgouZmEtZGVsaWNpb3VzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTUiOwp9CgouZmEtZGVtb2NyYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0NyI7Cn0KCi5mYS1kZXBsb3lkb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4ZSI7Cn0KCi5mYS1kZXNrcHJvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOGYiOwp9CgouZmEtZGVza3RvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA4IjsKfQoKLmZhLWRldjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmNjIjsKfQoKLmZhLWRldmlhbnRhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiZCI7Cn0KCi5mYS1kaGFybWFjaGFrcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1NSI7Cn0KCi5mYS1kaGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5MCI7Cn0KCi5mYS1kaWFnbm9zZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3MCI7Cn0KCi5mYS1kaWFzcG9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkxIjsKfQoKLmZhLWRpY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyMiI7Cn0KCi5mYS1kaWNlLWQyMDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmNmIjsKfQoKLmZhLWRpY2UtZDY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkMSI7Cn0KCi5mYS1kaWNlLWZpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyMyI7Cn0KCi5mYS1kaWNlLWZvdXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNCI7Cn0KCi5mYS1kaWNlLW9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTI1IjsKfQoKLmZhLWRpY2Utc2l4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjYiOwp9CgouZmEtZGljZS10aHJlZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTI3IjsKfQoKLmZhLWRpY2UtdHdvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjgiOwp9CgouZmEtZGlnZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE2IjsKfQoKLmZhLWRpZ2l0YWwtb2NlYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5MSI7Cn0KCi5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2NiI7Cn0KCi5mYS1kaXJlY3Rpb25zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZWIiOwp9CgouZmEtZGlzY29yZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzkyIjsKfQoKLmZhLWRpc2NvdXJzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzkzIjsKfQoKLmZhLWRpdmlkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTI5IjsKfQoKLmZhLWRpenp5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjciOwp9CgouZmEtZG5hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzEiOwp9CgouZmEtZG9jaHViOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTQiOwp9CgouZmEtZG9ja2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTUiOwp9CgouZmEtZG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZDMiOwp9CgouZmEtZG9sbGFyLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1NSI7Cn0KCi5mYS1kb2xseTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDcyIjsKfQoKLmZhLWRvbGx5LWZsYXRiZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3NCI7Cn0KCi5mYS1kb25hdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRiOSI7Cn0KCi5mYS1kb29yLWNsb3NlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJhIjsKfQoKLmZhLWRvb3Itb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJiIjsKfQoKLmZhLWRvdC1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5MiI7Cn0KCi5mYS1kb3ZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YmEiOwp9CgouZmEtZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxOSI7Cn0KCi5mYS1kcmFmdDJkaWdpdGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTYiOwp9CgouZmEtZHJhZnRpbmctY29tcGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTY4IjsKfQoKLmZhLWRyYWdvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ1IjsKfQoKLmZhLWRyYXctcG9seWdvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWVlIjsKfQoKLmZhLWRyaWJiYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2QiOwp9CgouZmEtZHJpYmJibGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTciOwp9CgouZmEtZHJvcGJveDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZiIjsKfQoKLmZhLWRydW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2OSI7Cn0KCi5mYS1kcnVtLXN0ZWVscGFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmEiOwp9CgouZmEtZHJ1bXN0aWNrLWJpdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkNyI7Cn0KCi5mYS1kcnVwYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhOSI7Cn0KCi5mYS1kdW1iYmVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDRiIjsKfQoKLmZhLWR1bXBzdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTMiOwp9CgouZmEtZHVtcHN0ZXItZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzk0IjsKfQoKLmZhLWR1bmdlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkOSI7Cn0KCi5mYS1keWFsb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5OSI7Cn0KCi5mYS1lYXJseWJpcmRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWEiOwp9CgouZmEtZWJheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGY0IjsKfQoKLmZhLWVkZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4MiI7Cn0KCi5mYS1lZGl0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNDQiOwp9CgouZmEtZWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZmIiOwp9CgouZmEtZWplY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MiI7Cn0KCi5mYS1lbGVtZW50b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzMCI7Cn0KCi5mYS1lbGxpcHNpcy1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNDEiOwp9CgouZmEtZWxsaXBzaXMtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQyIjsKfQoKLmZhLWVsbG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVmMSI7Cn0KCi5mYS1lbWJlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDIzIjsKfQoKLmZhLWVtcGlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQxIjsKfQoKLmZhLWVudmVsb3BlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTAiOwp9CgouZmEtZW52ZWxvcGUtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI2IjsKfQoKLmZhLWVudmVsb3BlLW9wZW4tdGV4dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU4IjsKfQoKLmZhLWVudmVsb3BlLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk5IjsKfQoKLmZhLWVudmlyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjk5IjsKfQoKLmZhLWVxdWFsczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJjIjsKfQoKLmZhLWVyYXNlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTJkIjsKfQoKLmZhLWVybGFuZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzlkIjsKfQoKLmZhLWV0aGVyZXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmUiOwp9CgouZmEtZXRoZXJuZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5NiI7Cn0KCi5mYS1ldHN5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDciOwp9CgouZmEtZXVyby1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTMiOwp9CgouZmEtZXZlcm5vdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzOSI7Cn0KCi5mYS1leGNoYW5nZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2MiI7Cn0KCi5mYS1leGNsYW1hdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTJhIjsKfQoKLmZhLWV4Y2xhbWF0aW9uLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZhIjsKfQoKLmZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzEiOwp9CgouZmEtZXhwYW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjUiOwp9CgouZmEtZXhwYW5kLWFycm93cy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMxZSI7Cn0KCi5mYS1leHBlZGl0ZWRzc2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzZSI7Cn0KCi5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVkIjsKfQoKLmZhLWV4dGVybmFsLWxpbmstc3F1YXJlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzYwIjsKfQoKLmZhLWV5ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZlIjsKfQoKLmZhLWV5ZS1kcm9wcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmIiOwp9CgouZmEtZXllLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzAiOwp9CgouZmEtZmFjZWJvb2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YSI7Cn0KCi5mYS1mYWNlYm9vay1mOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWUiOwp9CgouZmEtZmFjZWJvb2stbWVzc2VuZ2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWYiOwp9CgouZmEtZmFjZWJvb2stc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODIiOwp9CgouZmEtZmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NjMiOwp9CgouZmEtZmFudGFzeS1mbGlnaHQtZ2FtZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkYyI7Cn0KCi5mYS1mYXN0LWJhY2t3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNDkiOwp9CgouZmEtZmFzdC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTAiOwp9CgouZmEtZmF4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWMiOwp9CgouZmEtZmVhdGhlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJkIjsKfQoKLmZhLWZlYXRoZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmIiOwp9CgouZmEtZmVkZXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5NyI7Cn0KCi5mYS1mZWRvcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5OCI7Cn0KCi5mYS1mZW1hbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4MiI7Cn0KCi5mYS1maWdodGVyLWpldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGZiIjsKfQoKLmZhLWZpZ21hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTkiOwp9CgouZmEtZmlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTViIjsKfQoKLmZhLWZpbGUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWMiOwp9CgouZmEtZmlsZS1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzYiOwp9CgouZmEtZmlsZS1hdWRpbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM3IjsKfQoKLmZhLWZpbGUtY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM5IjsKfQoKLmZhLWZpbGUtY29udHJhY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YyI7Cn0KCi5mYS1maWxlLWNzdjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmRkIjsKfQoKLmZhLWZpbGUtZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2ZCI7Cn0KCi5mYS1maWxlLWV4Y2VsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzMiOwp9CgouZmEtZmlsZS1leHBvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2ZSI7Cn0KCi5mYS1maWxlLWltYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzUiOwp9CgouZmEtZmlsZS1pbXBvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2ZiI7Cn0KCi5mYS1maWxlLWludm9pY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3MCI7Cn0KCi5mYS1maWxlLWludm9pY2UtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzEiOwp9CgouZmEtZmlsZS1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzciOwp9CgouZmEtZmlsZS1tZWRpY2FsLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDc4IjsKfQoKLmZhLWZpbGUtcGRmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzEiOwp9CgouZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzQiOwp9CgouZmEtZmlsZS1wcmVzY3JpcHRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3MiI7Cn0KCi5mYS1maWxlLXNpZ25hdHVyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTczIjsKfQoKLmZhLWZpbGUtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzQiOwp9CgouZmEtZmlsZS12aWRlbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM4IjsKfQoKLmZhLWZpbGUtd29yZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWMyIjsKfQoKLmZhLWZpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3NSI7Cn0KCi5mYS1maWxsLWRyaXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3NiI7Cn0KCi5mYS1maWxtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDgiOwp9CgouZmEtZmlsdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjAiOwp9CgouZmEtZmluZ2VycHJpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3NyI7Cn0KCi5mYS1maXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmQiOwp9CgouZmEtZmlyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNCI7Cn0KCi5mYS1maXJlLWV4dGluZ3Vpc2hlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM0IjsKfQoKLmZhLWZpcmVmb3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2OSI7Cn0KCi5mYS1maXJzdC1haWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3OSI7Cn0KCi5mYS1maXJzdC1vcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmIwIjsKfQoKLmZhLWZpcnN0LW9yZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBhIjsKfQoKLmZhLWZpcnN0ZHJhZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhMSI7Cn0KCi5mYS1maXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzgiOwp9CgouZmEtZmlzdC1yYWlzZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkZSI7Cn0KCi5mYS1mbGFnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjQiOwp9CgouZmEtZmxhZy1jaGVja2VyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExZSI7Cn0KCi5mYS1mbGFnLXVzYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzRkIjsKfQoKLmZhLWZsYXNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzMiOwp9CgouZmEtZmxpY2tyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNmUiOwp9CgouZmEtZmxpcGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGQiOwp9CgouZmEtZmx1c2hlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc5IjsKfQoKLmZhLWZseTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE3IjsKfQoKLmZhLWZvbGRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdiIjsKfQoKLmZhLWZvbGRlci1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmNjVkIjsKfQoKLmZhLWZvbGRlci1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwN2MiOwp9CgouZmEtZm9sZGVyLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1ZSI7Cn0KCi5mYS1mb250OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMzEiOwp9CgouZmEtZm9udC1hd2Vzb21lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjQiOwp9CgouZmEtZm9udC1hd2Vzb21lLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVjIjsKfQoKLmZhLWZvbnQtYXdlc29tZS1mbGFnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjUiOwp9CgouZmEtZm9udC1hd2Vzb21lLWxvZ28tZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNGU2IjsKfQoKLmZhLWZvbnRpY29uczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgwIjsKfQoKLmZhLWZvbnRpY29ucy1maTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2EyIjsKfQoKLmZhLWZvb3RiYWxsLWJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0ZSI7Cn0KCi5mYS1mb3J0LWF3ZXNvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4NiI7Cn0KCi5mYS1mb3J0LWF3ZXNvbWUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTMiOwp9CgouZmEtZm9ydW1iZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxMSI7Cn0KCi5mYS1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGUiOwp9CgouZmEtZm91cnNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgwIjsKfQoKLmZhLWZyZWUtY29kZS1jYW1wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzUiOwp9CgouZmEtZnJlZWJzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E0IjsKfQoKLmZhLWZyb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyZSI7Cn0KCi5mYS1mcm93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE5IjsKfQoKLmZhLWZyb3duLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YSI7Cn0KCi5mYS1mdWxjcnVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MGIiOwp9CgouZmEtZnVubmVsLWRvbGxhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNjYyIjsKfQoKLmZhLWZ1dGJvbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIjsKfQoKLmZhLWdhbGFjdGljLXJlcHVibGljOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MGMiOwp9CgouZmEtZ2FsYWN0aWMtc2VuYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MGQiOwp9CgouZmEtZ2FtZXBhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFiIjsKfQoKLmZhLWdhcy1wdW1wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MmYiOwp9CgouZmEtZ2F2ZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMyI7Cn0KCi5mYS1nZW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNSI7Cn0KCi5mYS1nZW5kZXJsZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMmQiOwp9CgouZmEtZ2V0LXBvY2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjY1IjsKfQoKLmZhLWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjAiOwp9CgouZmEtZ2ctY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjEiOwp9CgouZmEtZ2hvc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZlMiI7Cn0KCi5mYS1naWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmIiOwp9CgouZmEtZ2lmdHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5YyI7Cn0KCi5mYS1naXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkMyI7Cn0KCi5mYS1naXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDEiOwp9CgouZmEtZ2l0LXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQyIjsKfQoKLmZhLWdpdGh1YjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDliIjsKfQoKLmZhLWdpdGh1Yi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExMyI7Cn0KCi5mYS1naXRodWItc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTIiOwp9CgouZmEtZ2l0a3Jha2VuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTYiOwp9CgouZmEtZ2l0bGFiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTYiOwp9CgouZmEtZ2l0dGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjYiOwp9CgouZmEtZ2xhc3MtY2hlZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OWYiOwp9CgouZmEtZ2xhc3MtbWFydGluaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDAwIjsKfQoKLmZhLWdsYXNzLW1hcnRpbmktYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2IiOwp9CgouZmEtZ2xhc3Mtd2hpc2tleTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2EwIjsKfQoKLmZhLWdsYXNzZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzMCI7Cn0KCi5mYS1nbGlkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmE1IjsKfQoKLmZhLWdsaWRlLWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhNiI7Cn0KCi5mYS1nbG9iZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFjIjsKfQoKLmZhLWdsb2JlLWFmcmljYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdjIjsKfQoKLmZhLWdsb2JlLWFtZXJpY2FzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2QiOwp9CgouZmEtZ2xvYmUtYXNpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdlIjsKfQoKLmZhLWdsb2JlLWV1cm9wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2EyIjsKfQoKLmZhLWdvZm9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E3IjsKfQoKLmZhLWdvbGYtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDUwIjsKfQoKLmZhLWdvb2RyZWFkczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E4IjsKfQoKLmZhLWdvb2RyZWFkcy1nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTkiOwp9CgouZmEtZ29vZ2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTAiOwp9CgouZmEtZ29vZ2xlLWRyaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYWEiOwp9CgouZmEtZ29vZ2xlLXBsYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhYiI7Cn0KCi5mYS1nb29nbGUtcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMmIzIjsKfQoKLmZhLWdvb2dsZS1wbHVzLWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkNSI7Cn0KCi5mYS1nb29nbGUtcGx1cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkNCI7Cn0KCi5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWUiOwp9CgouZmEtZ29wdXJhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY0IjsKfQoKLmZhLWdyYWR1YXRpb24tY2FwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWQiOwp9CgouZmEtZ3JhdGlwYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NCI7Cn0KCi5mYS1ncmF2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDYiOwp9CgouZmEtZ3JlYXRlci10aGFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzEiOwp9CgouZmEtZ3JlYXRlci10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzIiOwp9CgouZmEtZ3JpbWFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdmIjsKfQoKLmZhLWdyaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4MCI7Cn0KCi5mYS1ncmluLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTgxIjsKfQoKLmZhLWdyaW4tYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTgyIjsKfQoKLmZhLWdyaW4tYmVhbS1zd2VhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTgzIjsKfQoKLmZhLWdyaW4taGVhcnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODQiOwp9CgouZmEtZ3Jpbi1zcXVpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NSI7Cn0KCi5mYS1ncmluLXNxdWludC10ZWFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTg2IjsKfQoKLmZhLWdyaW4tc3RhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NyI7Cn0KCi5mYS1ncmluLXRlYXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODgiOwp9CgouZmEtZ3Jpbi10b25ndWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4OSI7Cn0KCi5mYS1ncmluLXRvbmd1ZS1zcXVpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YSI7Cn0KCi5mYS1ncmluLXRvbmd1ZS13aW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGIiOwp9CgouZmEtZ3Jpbi13aW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGMiOwp9CgouZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGQiOwp9CgouZmEtZ3JpcC1saW5lczpiZWZvcmUgewogICAgY29udGVudDogIlxmN2E0IjsKfQoKLmZhLWdyaXAtbGluZXMtdmVydGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhNSI7Cn0KCi5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGUiOwp9CgouZmEtZ3JpcGZpcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhYyI7Cn0KCi5mYS1ncnVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FkIjsKfQoKLmZhLWd1aXRhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2E2IjsKfQoKLmZhLWd1bHA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZSI7Cn0KCi5mYS1oLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGZkIjsKfQoKLmZhLWhhY2tlci1uZXdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiOwp9CgouZmEtaGFja2VyLW5ld3Mtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYWYiOwp9CgouZmEtaGFja2VycmFuazpiZWZvcmUgewogICAgY29udGVudDogIlxmNWY3IjsKfQoKLmZhLWhhbWJ1cmdlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmODA1IjsKfQoKLmZhLWhhbW1lcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmUzIjsKfQoKLmZhLWhhbXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NjUiOwp9CgouZmEtaGFuZC1ob2xkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YmQiOwp9CgouZmEtaGFuZC1ob2xkaW5nLWhlYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YmUiOwp9CgouZmEtaGFuZC1ob2xkaW5nLXVzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNGMwIjsKfQoKLmZhLWhhbmQtbGl6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTgiOwp9CgouZmEtaGFuZC1taWRkbGUtZmluZ2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MDYiOwp9CgouZmEtaGFuZC1wYXBlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU2IjsKfQoKLmZhLWhhbmQtcGVhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YiI7Cn0KCi5mYS1oYW5kLXBvaW50LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhNyI7Cn0KCi5mYS1oYW5kLXBvaW50LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhNSI7Cn0KCi5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTQiOwp9CgouZmEtaGFuZC1wb2ludC11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE2IjsKfQoKLmZhLWhhbmQtcG9pbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjVhIjsKfQoKLmZhLWhhbmQtcm9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU1IjsKfQoKLmZhLWhhbmQtc2Npc3NvcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1NyI7Cn0KCi5mYS1oYW5kLXNwb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTkiOwp9CgouZmEtaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMiI7Cn0KCi5mYS1oYW5kcy1oZWxwaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YzQiOwp9CgouZmEtaGFuZHNoYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjUiOwp9CgouZmEtaGFudWtpYWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZlNiI7Cn0KCi5mYS1oYXJkLWhhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODA3IjsKfQoKLmZhLWhhc2h0YWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MiI7Cn0KCi5mYS1oYXQtY293Ym95OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4YzAiOwp9CgouZmEtaGF0LWNvd2JveS1zaWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4YzEiOwp9CgouZmEtaGF0LXdpemFyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU4IjsKfQoKLmZhLWhheWthbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY2IjsKfQoKLmZhLWhkZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGEwIjsKfQoKLmZhLWhlYWRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkYyI7Cn0KCi5mYS1oZWFkcGhvbmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjUiOwp9CgouZmEtaGVhZHBob25lcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4ZiI7Cn0KCi5mYS1oZWFkc2V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTAiOwp9CgouZmEtaGVhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwNCI7Cn0KCi5mYS1oZWFydC1icm9rZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhOSI7Cn0KCi5mYS1oZWFydGJlYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxZSI7Cn0KCi5mYS1oZWxpY29wdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzMiOwp9CgouZmEtaGlnaGxpZ2h0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MSI7Cn0KCi5mYS1oaWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZlYyI7Cn0KCi5mYS1oaXBwbzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmVkIjsKfQoKLmZhLWhpcHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1MiI7Cn0KCi5mYS1oaXJlLWEtaGVscGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjAiOwp9CgouZmEtaGlzdG9yeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWRhIjsKfQoKLmZhLWhvY2tleS1wdWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTMiOwp9CgouZmEtaG9sbHktYmVycnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhYSI7Cn0KCi5mYS1ob21lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTUiOwp9CgouZmEtaG9vbGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNyI7Cn0KCi5mYS1ob3JuYmlsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTkyIjsKfQoKLmZhLWhvcnNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZjAiOwp9CgouZmEtaG9yc2UtaGVhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FiIjsKfQoKLmZhLWhvc3BpdGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjgiOwp9CgouZmEtaG9zcGl0YWwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0N2QiOwp9CgouZmEtaG9zcGl0YWwtc3ltYm9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0N2UiOwp9CgouZmEtaG90LXR1YjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTkzIjsKfQoKLmZhLWhvdGRvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmODBmIjsKfQoKLmZhLWhvdGVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTQiOwp9CgouZmEtaG90amFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjEiOwp9CgouZmEtaG91cmdsYXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTQiOwp9CgouZmEtaG91cmdsYXNzLWVuZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUzIjsKfQoKLmZhLWhvdXJnbGFzcy1oYWxmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTIiOwp9CgouZmEtaG91cmdsYXNzLXN0YXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTEiOwp9CgouZmEtaG91c2UtZGFtYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZjEiOwp9CgouZmEtaG91eno6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3YyI7Cn0KCi5mYS1ocnl2bmlhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZjIiOwp9CgouZmEtaHRtbDU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYiI7Cn0KCi5mYS1odWJzcG90OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjIiOwp9CgouZmEtaS1jdXJzb3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NiI7Cn0KCi5mYS1pY2UtY3JlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxMCI7Cn0KCi5mYS1pY2ljbGVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YWQiOwp9CgouZmEtaWNvbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg2ZCI7Cn0KCi5mYS1pZC1iYWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMxIjsKfQoKLmZhLWlkLWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjMiI7Cn0KCi5mYS1pZC1jYXJkLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDdmIjsKfQoKLmZhLWlnbG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YWUiOwp9CgouZmEtaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZSI7Cn0KCi5mYS1pbWFnZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwMiI7Cn0KCi5mYS1pbWRiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDgiOwp9CgouZmEtaW5ib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxYyI7Cn0KCi5mYS1pbmRlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzYyI7Cn0KCi5mYS1pbmR1c3RyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc1IjsKfQoKLmZhLWluZmluaXR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzQiOwp9CgouZmEtaW5mbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI5IjsKfQoKLmZhLWluZm8tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNWEiOwp9CgouZmEtaW5zdGFncmFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNmQiOwp9CgouZmEtaW50ZXJjb206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhZiI7Cn0KCi5mYS1pbnRlcm5ldC1leHBsb3JlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZiIjsKfQoKLmZhLWludmlzaW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YjAiOwp9CgouZmEtaW94aG9zdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA4IjsKfQoKLmZhLWl0YWxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMzIjsKfQoKLmZhLWl0Y2gtaW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzYSI7Cn0KCi5mYS1pdHVuZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiNCI7Cn0KCi5mYS1pdHVuZXMtbm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I1IjsKfQoKLmZhLWphdmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNCI7Cn0KCi5mYS1qZWRpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NjkiOwp9CgouZmEtamVkaS1vcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBlIjsKfQoKLmZhLWplbmtpbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiNiI7Cn0KCi5mYS1qaXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YjEiOwp9CgouZmEtam9nZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiNyI7Cn0KCi5mYS1qb2ludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk1IjsKfQoKLmZhLWpvb21sYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFhIjsKfQoKLmZhLWpvdXJuYWwtd2hpbGxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmEiOwp9CgouZmEtanM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiOCI7Cn0KCi5mYS1qcy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiOSI7Cn0KCi5mYS1qc2ZpZGRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNjIjsKfQoKLmZhLWthYWJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmIiOwp9CgouZmEta2FnZ2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZmEiOwp9CgouZmEta2V5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODQiOwp9CgouZmEta2V5YmFzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGY1IjsKfQoKLmZhLWtleWJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWMiOwp9CgouZmEta2V5Y2RuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmEiOwp9CgouZmEta2hhbmRhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmQiOwp9CgouZmEta2lja3N0YXJ0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiYiI7Cn0KCi5mYS1raWNrc3RhcnRlci1rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmMiOwp9CgouZmEta2lzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk2IjsKfQoKLmZhLWtpc3MtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk3IjsKfQoKLmZhLWtpc3Mtd2luay1oZWFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk4IjsKfQoKLmZhLWtpd2ktYmlyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM1IjsKfQoKLmZhLWtvcnZ1ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDJmIjsKfQoKLmZhLWxhbmRtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmYiOwp9CgouZmEtbGFuZ3VhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhYiI7Cn0KCi5mYS1sYXB0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwOSI7Cn0KCi5mYS1sYXB0b3AtY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZjIjsKfQoKLmZhLWxhcHRvcC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MTIiOwp9CgouZmEtbGFyYXZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JkIjsKfQoKLmZhLWxhc3RmbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAyIjsKfQoKLmZhLWxhc3RmbS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwMyI7Cn0KCi5mYS1sYXVnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk5IjsKfQoKLmZhLWxhdWdoLWJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5YSI7Cn0KCi5mYS1sYXVnaC1zcXVpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5YiI7Cn0KCi5mYS1sYXVnaC13aW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWMiOwp9CgouZmEtbGF5ZXItZ3JvdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVmZCI7Cn0KCi5mYS1sZWFmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmMiOwp9CgouZmEtbGVhbnB1YjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEyIjsKfQoKLmZhLWxlbW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTQiOwp9CgouZmEtbGVzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFkIjsKfQoKLmZhLWxlc3MtdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM2IjsKfQoKLmZhLWxlc3MtdGhhbi1lcXVhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM3IjsKfQoKLmZhLWxldmVsLWRvd24tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmUiOwp9CgouZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmYiOwp9CgouZmEtbGlmZS1yaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiOwp9CgouZmEtbGlnaHRidWxiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZWIiOwp9CgouZmEtbGluZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2MwIjsKfQoKLmZhLWxpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMSI7Cn0KCi5mYS1saW5rZWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDhjIjsKfQoKLmZhLWxpbmtlZGluLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTEiOwp9CgouZmEtbGlub2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjgiOwp9CgouZmEtbGludXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3YyI7Cn0KCi5mYS1saXJhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NSI7Cn0KCi5mYS1saXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwM2EiOwp9CgouZmEtbGlzdC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyMiI7Cn0KCi5mYS1saXN0LW9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2IiOwp9CgouZmEtbGlzdC11bDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGNhIjsKfQoKLmZhLWxvY2F0aW9uLWFycm93OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjQiOwp9CgouZmEtbG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDIzIjsKfQoKLmZhLWxvY2stb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2MxIjsKfQoKLmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwOSI7Cn0KCi5mYS1sb25nLWFycm93LWFsdC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMGEiOwp9CgouZmEtbG9uZy1hcnJvdy1hbHQtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYiI7Cn0KCi5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzBjIjsKfQoKLmZhLWxvdy12aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOCI7Cn0KCi5mYS1sdWdnYWdlLWNhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5ZCI7Cn0KCi5mYS1seWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzMiOwp9CgouZmEtbWFnZW50bzpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M0IjsKfQoKLmZhLW1hZ2ljOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDAiOwp9CgouZmEtbWFnbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzYiOwp9CgouZmEtbWFpbC1idWxrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NzQiOwp9CgouZmEtbWFpbGNoaW1wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWUiOwp9CgouZmEtbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgzIjsKfQoKLmZhLW1hbmRhbG9yaWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MGYiOwp9CgouZmEtbWFwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzkiOwp9CgouZmEtbWFwLW1hcmtlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlmIjsKfQoKLmZhLW1hcC1tYXJrZWQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTAiOwp9CgouZmEtbWFwLW1hcmtlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQxIjsKfQoKLmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzUiOwp9CgouZmEtbWFwLXBpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc2IjsKfQoKLmZhLW1hcC1zaWduczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc3IjsKfQoKLmZhLW1hcmtkb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MGYiOwp9CgouZmEtbWFya2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTEiOwp9CgouZmEtbWFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjIyIjsKfQoKLmZhLW1hcnMtZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMjciOwp9CgouZmEtbWFycy1zdHJva2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyOSI7Cn0KCi5mYS1tYXJzLXN0cm9rZS1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMmIiOwp9CgouZmEtbWFycy1zdHJva2UtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJhIjsKfQoKLmZhLW1hc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZmYSI7Cn0KCi5mYS1tYXN0b2RvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNGY2IjsKfQoKLmZhLW1heGNkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM2IjsKfQoKLmZhLW1kYjpiZWZvcmUgewogICAgY29udGVudDogIlxmOGNhIjsKfQoKLmZhLW1lZGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTIiOwp9CgouZmEtbWVkYXBwczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M2IjsKfQoKLmZhLW1lZGl1bTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjNhIjsKfQoKLmZhLW1lZGl1bS1tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzciOwp9CgouZmEtbWVka2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZmEiOwp9CgouZmEtbWVkcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNjOCI7Cn0KCi5mYS1tZWV0dXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlMCI7Cn0KCi5mYS1tZWdhcG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEzIjsKfQoKLmZhLW1laDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFhIjsKfQoKLmZhLW1laC1ibGFuazpiZWZvcmUgewogICAgY29udGVudDogIlxmNWE0IjsKfQoKLmZhLW1laC1yb2xsaW5nLWV5ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNSI7Cn0KCi5mYS1tZW1vcnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzOCI7Cn0KCi5mYS1tZW5kZWxleTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2IzIjsKfQoKLmZhLW1lbm9yYWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NiI7Cn0KCi5mYS1tZXJjdXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMjMiOwp9CgouZmEtbWV0ZW9yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NTMiOwp9CgouZmEtbWljcm9jaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGIiOwp9CgouZmEtbWljcm9waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTMwIjsKfQoKLmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzkiOwp9CgouZmEtbWljcm9waG9uZS1hbHQtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzOSI7Cn0KCi5mYS1taWNyb3Bob25lLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzEiOwp9CgouZmEtbWljcm9zY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjEwIjsKfQoKLmZhLW1pY3Jvc29mdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2NhIjsKfQoKLmZhLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjgiOwp9CgouZmEtbWludXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTYiOwp9CgouZmEtbWludXMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNDYiOwp9CgouZmEtbWl0dGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YjUiOwp9CgouZmEtbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2IiOwp9CgouZmEtbWl4Y2xvdWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4OSI7Cn0KCi5mYS1taXp1bmk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNjYyI7Cn0KCi5mYS1tb2JpbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwYiI7Cn0KCi5mYS1tb2JpbGUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2QiOwp9CgouZmEtbW9keDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg1IjsKfQoKLmZhLW1vbmVybzpiZWZvcmUgewogICAgY29udGVudDogIlxmM2QwIjsKfQoKLmZhLW1vbmV5LWJpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkNiI7Cn0KCi5mYS1tb25leS1iaWxsLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2QxIjsKfQoKLmZhLW1vbmV5LWJpbGwtd2F2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTNhIjsKfQoKLmZhLW1vbmV5LWJpbGwtd2F2ZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYiI7Cn0KCi5mYS1tb25leS1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNTNjIjsKfQoKLmZhLW1vbmV5LWNoZWNrLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTNkIjsKfQoKLmZhLW1vbnVtZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTYiOwp9CgouZmEtbW9vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg2IjsKfQoKLmZhLW1vcnRhci1wZXN0bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNyI7Cn0KCi5mYS1tb3NxdWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OCI7Cn0KCi5mYS1tb3RvcmN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWMiOwp9CgouZmEtbW91bnRhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZmYyI7Cn0KCi5mYS1tb3VzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGNjIjsKfQoKLmZhLW1vdXNlLXBvaW50ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NSI7Cn0KCi5mYS1tdWctaG90OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YjYiOwp9CgouZmEtbXVzaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwMSI7Cn0KCi5mYS1uYXBzdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDIiOwp9CgouZmEtbmVvczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjEyIjsKfQoKLmZhLW5ldHdvcmstd2lyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZmZiI7Cn0KCi5mYS1uZXV0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyYyI7Cn0KCi5mYS1uZXdzcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlYSI7Cn0KCi5mYS1uaW1ibHI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhOCI7Cn0KCi5mYS1ub2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MTkiOwp9CgouZmEtbm9kZS1qczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2QzIjsKfQoKLmZhLW5vdC1lcXVhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTNlIjsKfQoKLmZhLW5vdGVzLW1lZGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4MSI7Cn0KCi5mYS1ucG06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNCI7Cn0KCi5mYS1uczg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNSI7Cn0KCi5mYS1udXRyaXRpb25peDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Q2IjsKfQoKLmZhLW9iamVjdC1ncm91cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ3IjsKfQoKLmZhLW9iamVjdC11bmdyb3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDgiOwp9CgouZmEtb2Rub2tsYXNzbmlraTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjYzIjsKfQoKLmZhLW9kbm9rbGFzc25pa2ktc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjQiOwp9CgouZmEtb2lsLWNhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNjEzIjsKfQoKLmZhLW9sZC1yZXB1YmxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEwIjsKfQoKLmZhLW9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NzkiOwp9CgouZmEtb3BlbmNhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzZCI7Cn0KCi5mYS1vcGVuaWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YiI7Cn0KCi5mYS1vcGVyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZhIjsKfQoKLmZhLW9wdGluLW1vbnN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzYyI7Cn0KCi5mYS1vcmNpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGQyIjsKfQoKLmZhLW9zaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFhIjsKfQoKLmZhLW90dGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MDAiOwp9CgouZmEtb3V0ZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNiIjsKfQoKLmZhLXBhZ2U0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDciOwp9CgouZmEtcGFnZWxpbmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOGMiOwp9CgouZmEtcGFnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNSI7Cn0KCi5mYS1wYWludC1icnVzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWZjIjsKfQoKLmZhLXBhaW50LXJvbGxlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFhIjsKfQoKLmZhLXBhbGV0dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZiI7Cn0KCi5mYS1wYWxmZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkOCI7Cn0KCi5mYS1wYWxsZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4MiI7Cn0KCi5mYS1wYXBlci1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4IjsKfQoKLmZhLXBhcGVyY2xpcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM2IjsKfQoKLmZhLXBhcmFjaHV0ZS1ib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjZCI7Cn0KCi5mYS1wYXJhZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkZCI7Cn0KCi5mYS1wYXJraW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDAiOwp9CgouZmEtcGFzc3BvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYiI7Cn0KCi5mYS1wYXN0YWZhcmlhbmlzbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdiIjsKfQoKLmZhLXBhc3RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZWEiOwp9CgouZmEtcGF0cmVvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Q5IjsKfQoKLmZhLXBhdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGMiOwp9CgouZmEtcGF1c2UtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOGIiOwp9CgouZmEtcGF3OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjAiOwp9CgouZmEtcGF5cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWQiOwp9CgouZmEtcGVhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3YyI7Cn0KCi5mYS1wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwNCI7Cn0KCi5mYS1wZW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDUiOwp9CgouZmEtcGVuLWZhbmN5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YWMiOwp9CgouZmEtcGVuLW5pYjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFkIjsKfQoKLmZhLXBlbi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YiI7Cn0KCi5mYS1wZW5jaWwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDMiOwp9CgouZmEtcGVuY2lsLXJ1bGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YWUiOwp9CgouZmEtcGVubnktYXJjYWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MDQiOwp9CgouZmEtcGVvcGxlLWNhcnJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0Y2UiOwp9CgouZmEtcGVwcGVyLWhvdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODE2IjsKfQoKLmZhLXBlcmNlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NSI7Cn0KCi5mYS1wZXJjZW50YWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDEiOwp9CgouZmEtcGVyaXNjb3BlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGEiOwp9CgouZmEtcGVyc29uLWJvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NTYiOwp9CgouZmEtcGhhYnJpY2F0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkYiI7Cn0KCi5mYS1waG9lbml4LWZyYW1ld29yazpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RjIjsKfQoKLmZhLXBob2VuaXgtc3F1YWRyb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMSI7Cn0KCi5mYS1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDk1IjsKfQoKLmZhLXBob25lLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODc5IjsKfQoKLmZhLXBob25lLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGQiOwp9CgouZmEtcGhvbmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTgiOwp9CgouZmEtcGhvbmUtc3F1YXJlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODdiIjsKfQoKLmZhLXBob25lLXZvbHVtZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEwIjsKfQoKLmZhLXBob3RvLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4N2MiOwp9CgouZmEtcGhwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTciOwp9CgouZmEtcGllZC1waXBlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmFlIjsKfQoKLmZhLXBpZWQtcGlwZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTgiOwp9CgouZmEtcGllZC1waXBlci1oYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNSI7Cn0KCi5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTciOwp9CgouZmEtcGlnZ3ktYmFuazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQzIjsKfQoKLmZhLXBpbGxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODQiOwp9CgouZmEtcGludGVyZXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDIiOwp9CgouZmEtcGludGVyZXN0LXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzMSI7Cn0KCi5mYS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDMiOwp9CgouZmEtcGl6emEtc2xpY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxOCI7Cn0KCi5mYS1wbGFjZS1vZi13b3JzaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2N2YiOwp9CgouZmEtcGxhbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MiI7Cn0KCi5mYS1wbGFuZS1hcnJpdmFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YWYiOwp9CgouZmEtcGxhbmUtZGVwYXJ0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjAiOwp9CgouZmEtcGxheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDRiIjsKfQoKLmZhLXBsYXktY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNDQiOwp9CgouZmEtcGxheXN0YXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkZiI7Cn0KCi5mYS1wbHVnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTYiOwp9CgouZmEtcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDY3IjsKfQoKLmZhLXBsdXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTUiOwp9CgouZmEtcGx1cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZSI7Cn0KCi5mYS1wb2RjYXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2UiOwp9CgouZmEtcG9sbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjgxIjsKfQoKLmZhLXBvbGwtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjgyIjsKfQoKLmZhLXBvbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmZlIjsKfQoKLmZhLXBvby1zdG9ybTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVhIjsKfQoKLmZhLXBvb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxOSI7Cn0KCi5mYS1wb3J0cmFpdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2UwIjsKfQoKLmZhLXBvdW5kLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1NCI7Cn0KCi5mYS1wb3dlci1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMSI7Cn0KCi5mYS1wcmF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODMiOwp9CgouZmEtcHJheWluZy1oYW5kczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjg0IjsKfQoKLmZhLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIxIjsKfQoKLmZhLXByZXNjcmlwdGlvbi1ib3R0bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NSI7Cn0KCi5mYS1wcmVzY3JpcHRpb24tYm90dGxlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDg2IjsKfQoKLmZhLXByaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmYiOwp9CgouZmEtcHJvY2VkdXJlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDg3IjsKfQoKLmZhLXByb2R1Y3QtaHVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg4IjsKfQoKLmZhLXByb2plY3QtZGlhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQyIjsKfQoKLmZhLXB1c2hlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2UxIjsKfQoKLmZhLXB1enpsZS1waWVjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTJlIjsKfQoKLmZhLXB5dGhvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2UyIjsKfQoKLmZhLXFxOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDYiOwp9CgouZmEtcXJjb2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjkiOwp9CgouZmEtcXVlc3Rpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyOCI7Cn0KCi5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1OSI7Cn0KCi5mYS1xdWlkZGl0Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1OCI7Cn0KCi5mYS1xdWluc2NhcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1OSI7Cn0KCi5mYS1xdW9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM0IjsKfQoKLmZhLXF1b3RlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwZCI7Cn0KCi5mYS1xdW90ZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTBlIjsKfQoKLmZhLXF1cmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODciOwp9CgouZmEtci1wcm9qZWN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjciOwp9CgouZmEtcmFkaWF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YjkiOwp9CgouZmEtcmFkaWF0aW9uLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2JhIjsKfQoKLmZhLXJhaW5ib3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc1YiI7Cn0KCi5mYS1yYW5kb206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3NCI7Cn0KCi5mYS1yYXNwYmVycnktcGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYiI7Cn0KCi5mYS1yYXZlbHJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDkiOwp9CgouZmEtcmVhY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxYiI7Cn0KCi5mYS1yZWFjdGV1cm9wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVkIjsKfQoKLmZhLXJlYWRtZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ1IjsKfQoKLmZhLXJlYmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDAiOwp9CgouZmEtcmVjZWlwdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQzIjsKfQoKLmZhLXJlY29yZC12aW55bDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGQ5IjsKfQoKLmZhLXJlY3ljbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiOCI7Cn0KCi5mYS1yZWQtcml2ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMyI7Cn0KCi5mYS1yZWRkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhMSI7Cn0KCi5mYS1yZWRkaXQtYWxpZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4MSI7Cn0KCi5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTIiOwp9CgouZmEtcmVkaGF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmMiOwp9CgouZmEtcmVkbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDFlIjsKfQoKLmZhLXJlZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjkiOwp9CgouZmEtcmVnaXN0ZXJlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjVkIjsKfQoKLmZhLXJlbW92ZS1mb3JtYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3ZCI7Cn0KCi5mYS1yZW5yZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4YiI7Cn0KCi5mYS1yZXBseTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U1IjsKfQoKLmZhLXJlcGx5LWFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTIyIjsKfQoKLmZhLXJlcGx5ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U2IjsKfQoKLmZhLXJlcHVibGljYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc1ZSI7Cn0KCi5mYS1yZXNlYXJjaGdhdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmOCI7Cn0KCi5mYS1yZXNvbHZpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNyI7Cn0KCi5mYS1yZXN0cm9vbTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2JkIjsKfQoKLmZhLXJldHdlZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3OSI7Cn0KCi5mYS1yZXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViMiI7Cn0KCi5mYS1yaWJib246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkNiI7Cn0KCi5mYS1yaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MGIiOwp9CgouZmEtcm9hZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE4IjsKfQoKLmZhLXJvYm90OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDQiOwp9CgouZmEtcm9ja2V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzUiOwp9CgouZmEtcm9ja2V0Y2hhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U4IjsKfQoKLmZhLXJvY2tybXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlOSI7Cn0KCi5mYS1yb3V0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ3IjsKfQoKLmZhLXJzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDllIjsKfQoKLmZhLXJzcy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0MyI7Cn0KCi5mYS1ydWJsZS1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTgiOwp9CgouZmEtcnVsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NSI7Cn0KCi5mYS1ydWxlci1jb21iaW5lZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQ2IjsKfQoKLmZhLXJ1bGVyLWhvcml6b250YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NyI7Cn0KCi5mYS1ydWxlci12ZXJ0aWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQ4IjsKfQoKLmZhLXJ1bm5pbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcwYyI7Cn0KCi5mYS1ydXBlZS1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTYiOwp9CgouZmEtc2FkLWNyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIzIjsKfQoKLmZhLXNhZC10ZWFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjQiOwp9CgouZmEtc2FmYXJpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjciOwp9CgouZmEtc2FsZXNmb3JjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNiIjsKfQoKLmZhLXNhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxZSI7Cn0KCi5mYS1zYXRlbGxpdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiZiI7Cn0KCi5mYS1zYXRlbGxpdGUtZGlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MwIjsKfQoKLmZhLXNhdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNyI7Cn0KCi5mYS1zY2hsaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlYSI7Cn0KCi5mYS1zY2hvb2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0OSI7Cn0KCi5mYS1zY3Jld2RyaXZlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRhIjsKfQoKLmZhLXNjcmliZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjhhIjsKfQoKLmZhLXNjcm9sbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBlIjsKfQoKLmZhLXNkLWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjMiI7Cn0KCi5mYS1zZWFyY2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwMiI7Cn0KCi5mYS1zZWFyY2gtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODgiOwp9CgouZmEtc2VhcmNoLWxvY2F0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODkiOwp9CgouZmEtc2VhcmNoLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTAiOwp9CgouZmEtc2VhcmNoLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZSI7Cn0KCi5mYS1zZWFyY2hlbmdpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ViIjsKfQoKLmZhLXNlZWRsaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZDgiOwp9CgouZmEtc2VsbGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYSI7Cn0KCi5mYS1zZWxsc3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxMyI7Cn0KCi5mYS1zZXJ2ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzMyI7Cn0KCi5mYS1zZXJ2aWNlc3RhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlYyI7Cn0KCi5mYS1zaGFwZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxZiI7Cn0KCi5mYS1zaGFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDY0IjsKfQoKLmZhLXNoYXJlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUwIjsKfQoKLmZhLXNoYXJlLWFsdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlMSI7Cn0KCi5mYS1zaGFyZS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0ZCI7Cn0KCi5mYS1zaGVrZWwtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBiIjsKfQoKLmZhLXNoaWVsZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlZCI7Cn0KCi5mYS1zaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWEiOwp9CgouZmEtc2hpcHBpbmctZmFzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhiIjsKfQoKLmZhLXNoaXJ0c2luYnVsazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjE0IjsKfQoKLmZhLXNob2UtcHJpbnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGIiOwp9CgouZmEtc2hvcHBpbmctYmFnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTAiOwp9CgouZmEtc2hvcHBpbmctYmFza2V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTEiOwp9CgouZmEtc2hvcHBpbmctY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdhIjsKfQoKLmZhLXNob3B3YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjUiOwp9CgouZmEtc2hvd2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2MiOwp9CgouZmEtc2h1dHRsZS12YW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNiI7Cn0KCi5mYS1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZDkiOwp9CgouZmEtc2lnbi1pbi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmNiI7Cn0KCi5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTciOwp9CgouZmEtc2lnbi1vdXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjUiOwp9CgouZmEtc2lnbmFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTIiOwp9CgouZmEtc2lnbmF0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjciOwp9CgouZmEtc2ltLWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjNCI7Cn0KCi5mYS1zaW1wbHlidWlsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjE1IjsKfQoKLmZhLXNpc3RyaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlZSI7Cn0KCi5mYS1zaXRlbWFwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTgiOwp9CgouZmEtc2l0aDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEyIjsKfQoKLmZhLXNrYXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjNSI7Cn0KCi5mYS1za2V0Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjNiI7Cn0KCi5mYS1za2lpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjOSI7Cn0KCi5mYS1za2lpbmctbm9yZGljOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3Y2EiOwp9CgouZmEtc2t1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0YyI7Cn0KCi5mYS1za3VsbC1jcm9zc2JvbmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MTQiOwp9CgouZmEtc2t5YXRsYXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNiI7Cn0KCi5mYS1za3lwZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTdlIjsKfQoKLmZhLXNsYWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTgiOwp9CgouZmEtc2xhY2staGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VmIjsKfQoKLmZhLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MTUiOwp9CgouZmEtc2xlaWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3Y2MiOwp9CgouZmEtc2xpZGVycy1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZGUiOwp9CgouZmEtc2xpZGVzaGFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU3IjsKfQoKLmZhLXNtaWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTgiOwp9CgouZmEtc21pbGUtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWI4IjsKfQoKLmZhLXNtaWxlLXdpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkYSI7Cn0KCi5mYS1zbW9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NWYiOwp9CgouZmEtc21va2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhkIjsKfQoKLmZhLXNtb2tpbmctYmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGQiOwp9CgouZmEtc21zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3Y2QiOwp9CgouZmEtc25hcGNoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYiI7Cn0KCi5mYS1zbmFwY2hhdC1naG9zdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmFjIjsKfQoKLmZhLXNuYXBjaGF0LXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmFkIjsKfQoKLmZhLXNub3dib2FyZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NlIjsKfQoKLmZhLXNub3dmbGFrZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmRjIjsKfQoKLmZhLXNub3dtYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkMCI7Cn0KCi5mYS1zbm93cGxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2QyIjsKfQoKLmZhLXNvY2tzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OTYiOwp9CgouZmEtc29sYXItcGFuZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViYSI7Cn0KCi5mYS1zb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGMiOwp9CgouZmEtc29ydC1hbHBoYS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWQiOwp9CgouZmEtc29ydC1hbHBoYS1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODgxIjsKfQoKLmZhLXNvcnQtYWxwaGEtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZSI7Cn0KCi5mYS1zb3J0LWFscGhhLXVwLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODgyIjsKfQoKLmZhLXNvcnQtYW1vdW50LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MCI7Cn0KCi5mYS1zb3J0LWFtb3VudC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg0IjsKfQoKLmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjEiOwp9CgouZmEtc29ydC1hbW91bnQtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODUiOwp9CgouZmEtc29ydC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGQiOwp9CgouZmEtc29ydC1udW1lcmljLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MiI7Cn0KCi5mYS1zb3J0LW51bWVyaWMtZG93bi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4NiI7Cn0KCi5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MyI7Cn0KCi5mYS1zb3J0LW51bWVyaWMtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODciOwp9CgouZmEtc29ydC11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGRlIjsKfQoKLmZhLXNvdW5kY2xvdWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiZSI7Cn0KCi5mYS1zb3VyY2V0cmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDMiOwp9CgouZmEtc3BhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmIiOwp9CgouZmEtc3BhY2Utc2h1dHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk3IjsKfQoKLmZhLXNwZWFrYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmMyI7Cn0KCi5mYS1zcGVha2VyLWRlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzYyI7Cn0KCi5mYS1zcGVsbC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmODkxIjsKfQoKLmZhLXNwaWRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzE3IjsKfQoKLmZhLXNwaW5uZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExMCI7Cn0KCi5mYS1zcGxvdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmMiOwp9CgouZmEtc3BvdGlmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWJjIjsKfQoKLmZhLXNwcmF5LWNhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJkIjsKfQoKLmZhLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM4IjsKfQoKLmZhLXNxdWFyZS1mdWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NWMiOwp9CgouZmEtc3F1YXJlLXJvb3QtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OTgiOwp9CgouZmEtc3F1YXJlc3BhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZSI7Cn0KCi5mYS1zdGFjay1leGNoYW5nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMThkIjsKfQoKLmZhLXN0YWNrLW92ZXJmbG93OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNmMiOwp9CgouZmEtc3RhY2twYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDIiOwp9CgouZmEtc3RhbXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZiI7Cn0KCi5mYS1zdGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDUiOwp9CgouZmEtc3Rhci1hbmQtY3Jlc2NlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5OSI7Cn0KCi5mYS1zdGFyLWhhbGY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4OSI7Cn0KCi5mYS1zdGFyLWhhbGYtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzAiOwp9CgouZmEtc3Rhci1vZi1kYXZpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjlhIjsKfQoKLmZhLXN0YXItb2YtbGlmZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjIxIjsKfQoKLmZhLXN0YXlsaW5rZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmNSI7Cn0KCi5mYS1zdGVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWI2IjsKfQoKLmZhLXN0ZWFtLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWI3IjsKfQoKLmZhLXN0ZWFtLXN5bWJvbDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Y2IjsKfQoKLmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0OCI7Cn0KCi5mYS1zdGVwLWZvcndhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MSI7Cn0KCi5mYS1zdGV0aG9zY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGYxIjsKfQoKLmZhLXN0aWNrZXItbXVsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Y3IjsKfQoKLmZhLXN0aWNreS1ub3RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDkiOwp9CgouZmEtc3RvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDRkIjsKfQoKLmZhLXN0b3AtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOGQiOwp9CgouZmEtc3RvcHdhdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjIiOwp9CgouZmEtc3RvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZSI7Cn0KCi5mYS1zdG9yZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZiI7Cn0KCi5mYS1zdHJhdmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyOCI7Cn0KCi5mYS1zdHJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MCI7Cn0KCi5mYS1zdHJlZXQtdmlldzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjFkIjsKfQoKLmZhLXN0cmlrZXRocm91Z2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjYyI7Cn0KCi5mYS1zdHJpcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyOSI7Cn0KCi5mYS1zdHJpcGUtczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDJhIjsKfQoKLmZhLXN0cm9vcHdhZmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTEiOwp9CgouZmEtc3R1ZGlvdmluYXJpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjgiOwp9CgouZmEtc3R1bWJsZXVwb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhNCI7Cn0KCi5mYS1zdHVtYmxldXBvbi1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhMyI7Cn0KCi5mYS1zdWJzY3JpcHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyYyI7Cn0KCi5mYS1zdWJ3YXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzOSI7Cn0KCi5mYS1zdWl0Y2FzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGYyIjsKfQoKLmZhLXN1aXRjYXNlLXJvbGxpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjMSI7Cn0KCi5mYS1zdW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NSI7Cn0KCi5mYS1zdXBlcnBvd2VyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMmRkIjsKfQoKLmZhLXN1cGVyc2NyaXB0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmIiOwp9CgouZmEtc3VwcGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjkiOwp9CgouZmEtc3VycHJpc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjMiI7Cn0KCi5mYS1zdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDYiOwp9CgouZmEtc3dhdGNoYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmNWMzIjsKfQoKLmZhLXN3aWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ZTEiOwp9CgouZmEtc3dpbW1lcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM0IjsKfQoKLmZhLXN3aW1taW5nLXBvb2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjNSI7Cn0KCi5mYS1zeW1mb255OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4M2QiOwp9CgouZmEtc3luYWdvZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWIiOwp9CgouZmEtc3luYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDIxIjsKfQoKLmZhLXN5bmMtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjEiOwp9CgouZmEtc3lyaW5nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhlIjsKfQoKLmZhLXRhYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2UiOwp9CgouZmEtdGFibGUtdGVubmlzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NWQiOwp9CgouZmEtdGFibGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGEiOwp9CgouZmEtdGFibGV0LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZhIjsKfQoKLmZhLXRhYmxldHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5MCI7Cn0KCi5mYS10YWNob21ldGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZkIjsKfQoKLmZhLXRhZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJiIjsKfQoKLmZhLXRhZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyYyI7Cn0KCi5mYS10YXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZGIiOwp9CgouZmEtdGFza3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhZSI7Cn0KCi5mYS10YXhpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmEiOwp9CgouZmEtdGVhbXNwZWFrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjkiOwp9CgouZmEtdGVldGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYyZSI7Cn0KCi5mYS10ZWV0aC1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MmYiOwp9CgouZmEtdGVsZWdyYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjNiI7Cn0KCi5mYS10ZWxlZ3JhbS1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZlIjsKfQoKLmZhLXRlbXBlcmF0dXJlLWhpZ2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc2OSI7Cn0KCi5mYS10ZW1wZXJhdHVyZS1sb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc2YiI7Cn0KCi5mYS10ZW5jZW50LXdlaWJvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDUiOwp9CgouZmEtdGVuZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkNyI7Cn0KCi5mYS10ZXJtaW5hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTIwIjsKfQoKLmZhLXRleHQtaGVpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMzQiOwp9CgouZmEtdGV4dC13aWR0aDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM1IjsKfQoKLmZhLXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMGEiOwp9CgouZmEtdGgtbGFyZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwOSI7Cn0KCi5mYS10aC1saXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMGIiOwp9CgouZmEtdGhlLXJlZC15ZXRpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWQiOwp9CgouZmEtdGhlYXRlci1tYXNrczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjMwIjsKfQoKLmZhLXRoZW1lY286YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjNiI7Cn0KCi5mYS10aGVtZWlzbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMiI7Cn0KCi5mYS10aGVybW9tZXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDkxIjsKfQoKLmZhLXRoZXJtb21ldGVyLWVtcHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2IiOwp9CgouZmEtdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM3IjsKfQoKLmZhLXRoZXJtb21ldGVyLWhhbGY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjOSI7Cn0KCi5mYS10aGVybW9tZXRlci1xdWFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2EiOwp9CgouZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjOCI7Cn0KCi5mYS10aGluay1wZWFrczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzMxIjsKfQoKLmZhLXRodW1icy1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjUiOwp9CgouZmEtdGh1bWJzLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjQiOwp9CgouZmEtdGh1bWJ0YWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOGQiOwp9CgouZmEtdGlja2V0LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZmIjsKfQoKLmZhLXRpbWVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMGQiOwp9CgouZmEtdGltZXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTciOwp9CgouZmEtdGludDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQzIjsKfQoKLmZhLXRpbnQtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjNyI7Cn0KCi5mYS10aXJlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM4IjsKfQoKLmZhLXRvZ2dsZS1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwNCI7Cn0KCi5mYS10b2dnbGUtb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwNSI7Cn0KCi5mYS10b2lsZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkOCI7Cn0KCi5mYS10b2lsZXQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxZSI7Cn0KCi5mYS10b29sYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTIiOwp9CgouZmEtdG9vbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkOSI7Cn0KCi5mYS10b290aDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM5IjsKfQoKLmZhLXRvcmFoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YTAiOwp9CgouZmEtdG9yaWktZ2F0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmExIjsKfQoKLmZhLXRyYWN0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcyMiI7Cn0KCi5mYS10cmFkZS1mZWRlcmF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTMiOwp9CgouZmEtdHJhZGVtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWMiOwp9CgouZmEtdHJhZmZpYy1saWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjM3IjsKfQoKLmZhLXRyYWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzgiOwp9CgouZmEtdHJhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RhIjsKfQoKLmZhLXRyYW5zZ2VuZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMjQiOwp9CgouZmEtdHJhbnNnZW5kZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMjUiOwp9CgouZmEtdHJhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOCI7Cn0KCi5mYS10cmFzaC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlZCI7Cn0KCi5mYS10cmFzaC1yZXN0b3JlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MjkiOwp9CgouZmEtdHJhc2gtcmVzdG9yZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyYSI7Cn0KCi5mYS10cmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmIiOwp9CgouZmEtdHJlbGxvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODEiOwp9CgouZmEtdHJpcGFkdmlzb3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MiI7Cn0KCi5mYS10cm9waHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5MSI7Cn0KCi5mYS10cnVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQxIjsKfQoKLmZhLXRydWNrLWxvYWRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkZSI7Cn0KCi5mYS10cnVjay1tb25zdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2M2IiOwp9CgouZmEtdHJ1Y2stbW92aW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZGYiOwp9CgouZmEtdHJ1Y2stcGlja3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2M2MiOwp9CgouZmEtdHNoaXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTMiOwp9CgouZmEtdHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTQiOwp9CgouZmEtdHVtYmxyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzMiOwp9CgouZmEtdHVtYmxyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTc0IjsKfQoKLmZhLXR2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmMiOwp9CgouZmEtdHdpdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTgiOwp9CgouZmEtdHdpdHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDk5IjsKfQoKLmZhLXR3aXR0ZXItc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODEiOwp9CgouZmEtdHlwbzM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYiI7Cn0KCi5mYS11YmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MDIiOwp9CgouZmEtdWJ1bnR1OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZGYiOwp9CgouZmEtdWlraXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMyI7Cn0KCi5mYS11bWJyYWNvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ZTgiOwp9CgouZmEtdW1icmVsbGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlOSI7Cn0KCi5mYS11bWJyZWxsYS1iZWFjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNhIjsKfQoKLmZhLXVuZGVybGluZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGNkIjsKfQoKLmZhLXVuZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMiI7Cn0KCi5mYS11bmRvLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmVhIjsKfQoKLmZhLXVuaXJlZ2lzdHJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MDQiOwp9CgouZmEtdW5pdmVyc2FsLWFjY2VzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjlhIjsKfQoKLmZhLXVuaXZlcnNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YyI7Cn0KCi5mYS11bmxpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNyI7Cn0KCi5mYS11bmxvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YyI7Cn0KCi5mYS11bmxvY2stYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2UiOwp9CgouZmEtdW50YXBwZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA1IjsKfQoKLmZhLXVwbG9hZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDkzIjsKfQoKLmZhLXVwczpiZWZvcmUgewogICAgY29udGVudDogIlxmN2UwIjsKfQoKLmZhLXVzYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg3IjsKfQoKLmZhLXVzZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwNyI7Cn0KCi5mYS11c2VyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA2IjsKfQoKLmZhLXVzZXItYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmEiOwp9CgouZmEtdXNlci1hc3Ryb25hdXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmYiI7Cn0KCi5mYS11c2VyLWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmMiOwp9CgouZmEtdXNlci1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiZCI7Cn0KCi5mYS11c2VyLWNsb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmQiOwp9CgouZmEtdXNlci1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZSI7Cn0KCi5mYS11c2VyLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZiI7Cn0KCi5mYS11c2VyLWZyaWVuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMCI7Cn0KCi5mYS11c2VyLWdyYWR1YXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDEiOwp9CgouZmEtdXNlci1pbmp1cmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjgiOwp9CgouZmEtdXNlci1sb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDIiOwp9CgouZmEtdXNlci1tZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGYwIjsKfQoKLmZhLXVzZXItbWludXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMyI7Cn0KCi5mYS11c2VyLW5pbmphOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDQiOwp9CgouZmEtdXNlci1udXJzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODJmIjsKfQoKLmZhLXVzZXItcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM0IjsKfQoKLmZhLXVzZXItc2VjcmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWIiOwp9CgouZmEtdXNlci1zaGllbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwNSI7Cn0KCi5mYS11c2VyLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDYiOwp9CgouZmEtdXNlci10YWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwNyI7Cn0KCi5mYS11c2VyLXRpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTA4IjsKfQoKLmZhLXVzZXItdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNSI7Cn0KCi5mYS11c2VyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGMwIjsKfQoKLmZhLXVzZXJzLWNvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTA5IjsKfQoKLmZhLXVzcHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMSI7Cn0KCi5mYS11c3N1bm5haDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA3IjsKfQoKLmZhLXV0ZW5zaWwtc3Bvb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlNSI7Cn0KCi5mYS11dGVuc2lsczpiZWZvcmUgewogICAgY29udGVudDogIlxmMmU3IjsKfQoKLmZhLXZhYWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA4IjsKfQoKLmZhLXZlY3Rvci1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjYiI7Cn0KCi5mYS12ZW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjIxIjsKfQoKLmZhLXZlbnVzLWRvdWJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI2IjsKfQoKLmZhLXZlbnVzLW1hcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyOCI7Cn0KCi5mYS12aWFjb2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzciOwp9CgouZmEtdmlhZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTkiOwp9CgouZmEtdmlhZGVvLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmFhIjsKfQoKLmZhLXZpYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5MiI7Cn0KCi5mYS12aWFsczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDkzIjsKfQoKLmZhLXZpYmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MDkiOwp9CgouZmEtdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZCI7Cn0KCi5mYS12aWRlby1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNGUyIjsKfQoKLmZhLXZpaGFyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmE3IjsKfQoKLmZhLXZpbWVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGEiOwp9CgouZmEtdmltZW8tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTQiOwp9CgouZmEtdmltZW8tdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdkIjsKfQoKLmZhLXZpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjYSI7Cn0KCi5mYS12azpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg5IjsKfQoKLmZhLXZudjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBiIjsKfQoKLmZhLXZvaWNlbWFpbDpiZWZvcmUgewogICAgY29udGVudDogIlxmODk3IjsKfQoKLmZhLXZvbGxleWJhbGwtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDVmIjsKfQoKLmZhLXZvbHVtZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjciOwp9CgouZmEtdm9sdW1lLW11dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZhOSI7Cn0KCi5mYS12b2x1bWUtb2ZmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjYiOwp9CgouZmEtdm9sdW1lLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjgiOwp9CgouZmEtdm90ZS15ZWE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3MiI7Cn0KCi5mYS12ci1jYXJkYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcyOSI7Cn0KCi5mYS12dWVqczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFmIjsKfQoKLmZhLXdhbGtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1NCI7Cn0KCi5mYS13YWxsZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1NSI7Cn0KCi5mYS13YXJlaG91c2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NCI7Cn0KCi5mYS13YXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzczIjsKfQoKLmZhLXdhdmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4M2UiOwp9CgouZmEtd2F6ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNmIjsKfQoKLmZhLXdlZWJseTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNjIjsKfQoKLmZhLXdlaWJvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOGEiOwp9CgouZmEtd2VpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTYiOwp9CgouZmEtd2VpZ2h0LWhhbmdpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjZCI7Cn0KCi5mYS13ZWl4aW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkNyI7Cn0KCi5mYS13aGF0c2FwcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjMyIjsKfQoKLmZhLXdoYXRzYXBwLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBjIjsKfQoKLmZhLXdoZWVsY2hhaXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5MyI7Cn0KCi5mYS13aG1jczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBkIjsKfQoKLmZhLXdpZmk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlYiI7Cn0KCi5mYS13aWtpcGVkaWEtdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjY2IjsKfQoKLmZhLXdpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcyZSI7Cn0KCi5mYS13aW5kb3ctY2xvc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMCI7Cn0KCi5mYS13aW5kb3ctbWF4aW1pemU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkMCI7Cn0KCi5mYS13aW5kb3ctbWluaW1pemU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkMSI7Cn0KCi5mYS13aW5kb3ctcmVzdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQyIjsKfQoKLmZhLXdpbmRvd3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3YSI7Cn0KCi5mYS13aW5lLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzJmIjsKfQoKLmZhLXdpbmUtZ2xhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlMyI7Cn0KCi5mYS13aW5lLWdsYXNzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNlIjsKfQoKLmZhLXdpeDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNmIjsKfQoKLmZhLXdpemFyZHMtb2YtdGhlLWNvYXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MzAiOwp9CgouZmEtd29sZi1wYWNrLWJhdHRhbGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE0IjsKfQoKLmZhLXdvbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTkiOwp9CgouZmEtd29yZHByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWEiOwp9CgouZmEtd29yZHByZXNzLXNpbXBsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDExIjsKfQoKLmZhLXdwYmVnaW5uZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NyI7Cn0KCi5mYS13cGV4cGxvcmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGUiOwp9CgouZmEtd3Bmb3JtczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjk4IjsKfQoKLmZhLXdwcmVzc3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNCI7Cn0KCi5mYS13cmVuY2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhZCI7Cn0KCi5mYS14LXJheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDk3IjsKfQoKLmZhLXhib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMiI7Cn0KCi5mYS14aW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjgiOwp9CgouZmEteGluZy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2OSI7Cn0KCi5mYS15LWNvbWJpbmF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzYiI7Cn0KCi5mYS15YWhvbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTllIjsKfQoKLmZhLXlhbW1lcjpiZWZvcmUgewogICAgY29udGVudDogIlxmODQwIjsKfQoKLmZhLXlhbmRleDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEzIjsKfQoKLmZhLXlhbmRleC1pbnRlcm5hdGlvbmFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MTQiOwp9CgouZmEteWFybjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2UzIjsKfQoKLmZhLXllbHA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlOSI7Cn0KCi5mYS15ZW4tc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU3IjsKfQoKLmZhLXlpbi15YW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YWQiOwp9CgouZmEteW9hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMSI7Cn0KCi5mYS15b3V0dWJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjciOwp9CgouZmEteW91dHViZS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzMSI7Cn0KCi5mYS16aGlodTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjNmIjsKfQoKLnNyLW9ubHkgewogICAgYm9yZGVyOiAwOwogICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICAgIGhlaWdodDogMXB4OwogICAgbWFyZ2luOiAtMXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmc6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMXB4Owp9Cgouc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLAouc3Itb25seS1mb2N1c2FibGU6Zm9jdXMgewogICAgY2xpcDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIG1hcmdpbjogMDsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgcG9zaXRpb246IHN0YXRpYzsKICAgIHdpZHRoOiBhdXRvOwp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgQnJhbmRzJzsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBmb250LWRpc3BsYXk6IGF1dG87CiAgICBzcmM6IHVybCgiLi4vZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QiKTsKICAgIHNyYzogdXJsKCIuLi9mb250cy9mYS1icmFuZHMtNDAwLmVvdD8jaWVmaXgiKSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksIHVybCgiLi4vZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMiIpIGZvcm1hdCgid29mZjIiKSwgdXJsKCIuLi9mb250cy9mYS1icmFuZHMtNDAwLndvZmYiKSBmb3JtYXQoIndvZmYiKSwgdXJsKCIuLi9mb250cy9mYS1icmFuZHMtNDAwLnR0ZiIpIGZvcm1hdCgidHJ1ZXR5cGUiKSwgdXJsKCIuLi9mb250cy9mYS1icmFuZHMtNDAwLnN2ZyNmb250YXdlc29tZSIpIGZvcm1hdCgic3ZnIik7Cn0KCi5mYWIgewogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBCcmFuZHMnOwp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1kaXNwbGF5OiBhdXRvOwogICAgc3JjOiB1cmwoIi4uL2ZvbnRzL2ZhLXJlZ3VsYXItNDAwLmVvdCIpOwogICAgc3JjOiB1cmwoIi4uL2ZvbnRzL2ZhLXJlZ3VsYXItNDAwLmVvdD8jaWVmaXgiKSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksIHVybCgiLi4vZm9udHMvZmEtcmVndWxhci00MDAud29mZjIiKSBmb3JtYXQoIndvZmYyIiksIHVybCgiLi4vZm9udHMvZmEtcmVndWxhci00MDAud29mZiIpIGZvcm1hdCgid29mZiIpLCB1cmwoIi4uL2ZvbnRzL2ZhLXJlZ3VsYXItNDAwLnR0ZiIpIGZvcm1hdCgidHJ1ZXR5cGUiKSwgdXJsKCIuLi9mb250cy9mYS1yZWd1bGFyLTQwMC5zdmcjZm9udGF3ZXNvbWUiKSBmb3JtYXQoInN2ZyIpOwp9CgouZmFyIHsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICBmb250LXdlaWdodDogNDAwOwp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXdlaWdodDogOTAwOwogICAgZm9udC1kaXNwbGF5OiBhdXRvOwogICAgc3JjOiB1cmwoIi4uL2ZvbnRzL2ZhLXNvbGlkLTkwMC5lb3QiKTsKICAgIHNyYzogdXJsKCIuLi9mb250cy9mYS1zb2xpZC05MDAuZW90PyNpZWZpeCIpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSwgdXJsKCIuLi9mb250cy9mYS1zb2xpZC05MDAud29mZjIiKSBmb3JtYXQoIndvZmYyIiksIHVybCgiLi4vZm9udHMvZmEtc29saWQtOTAwLndvZmYiKSBmb3JtYXQoIndvZmYiKSwgdXJsKCIuLi9mb250cy9mYS1zb2xpZC05MDAudHRmIikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoIi4uL2ZvbnRzL2ZhLXNvbGlkLTkwMC5zdmcjZm9udGF3ZXNvbWUiKSBmb3JtYXQoInN2ZyIpOwp9CgouZmEsCi5mYXMgewogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJzsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7Cn0="}},"time_used":567,"timings":{"blocked":280,"dns":0,"connect":0,"send":0,"wait":98,"receive":189,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/themify-icons.css?ver=1.0.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.304Z","timestamp":1785145482304,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/themify-icons.css?ver=1.0.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 17842\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:02 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":17842,"size_decoded":18052,"mime_type":"text/css","magic":"ASCII text","md5":"ce772fdba7a7c5a3141e85712abdd903","sha1":"1d67c7e09e730195ea3cbb325d87db4a9c0f4547","sha256":"20679ca0d1924e12f0d9a5735015a69527208512796603134c5ee91c28c20791","sha512":"ca205d7bc5639cf6e8dba3adcaa940355407134450d05959d7d04af461ba35582a02ecf0711d9ffc93762a7393612f4fcda94b5839afa2c0c3f30fb6c7cac241","ssdeep":"192:vElG8SWxB5iQYxil3EguJ+JvZ247F52WM:P8NbAlMJdFg","tlshash":"1282e39495bf1ca41319e0c1734bf215bb0db6aa9a450c5ce293ff8c6fd3a1199c2adc","first_seen":"2026-07-27T08:06:56.430388Z","last_seen":"2026-07-27T09:45:50.922338Z","times_seen":3,"resource_available":false,"data":"QGZvbnQtZmFjZSB7CiAgICBmb250LWZhbWlseTogJ3RoZW1pZnknOwogICAgc3JjOiB1cmwoJy4uL2ZvbnRzL3RoZW1pZnkuZW90Jyk7CiAgICBzcmM6IHVybCgnLi4vZm9udHMvdGhlbWlmeS5lb3QnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgnLi4vZm9udHMvdGhlbWlmeS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi4vZm9udHMvdGhlbWlmeS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksIHVybCgnLi4vZm9udHMvdGhlbWlmeS5zdmcnKSBmb3JtYXQoJ3N2ZycpOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKfQoKW2NsYXNzXj0idGktIl0sCltjbGFzcyo9IiB0aS0iXSB7CiAgICBmb250LWZhbWlseTogJ3RoZW1pZnknOwogICAgc3BlYWs6IG5vbmU7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgZm9udC12YXJpYW50OiBub3JtYWw7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovCiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cn0KCi50aS13YW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MDAiOwp9CgoudGktdm9sdW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MDEiOwp9CgoudGktdXNlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjAyIjsKfQoKLnRpLXVubG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxlNjAzIjsKfQoKLnRpLXVubGluazpiZWZvcmUgewogICAgY29udGVudDogIlxlNjA0IjsKfQoKLnRpLXRyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MDUiOwp9CgoudGktdGhvdWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjA2IjsKfQoKLnRpLXRhcmdldDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjA3IjsKfQoKLnRpLXRhZzpiZWZvcmUgewogICAgY29udGVudDogIlxlNjA4IjsKfQoKLnRpLXRhYmxldDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjA5IjsKfQoKLnRpLXN0YXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYwYSI7Cn0KCi50aS1zcHJheTpiZWZvcmUgewogICAgY29udGVudDogIlxlNjBiIjsKfQoKLnRpLXNpZ25hbDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjBjIjsKfQoKLnRpLXNob3BwaW5nLWNhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYwZCI7Cn0KCi50aS1zaG9wcGluZy1jYXJ0LWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYwZSI7Cn0KCi50aS1zZXR0aW5nczpiZWZvcmUgewogICAgY29udGVudDogIlxlNjBmIjsKfQoKLnRpLXNlYXJjaDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjEwIjsKfQoKLnRpLXpvb20taW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYxMSI7Cn0KCi50aS16b29tLW91dDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjEyIjsKfQoKLnRpLWN1dDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjEzIjsKfQoKLnRpLXJ1bGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MTQiOwp9CgoudGktcnVsZXItcGVuY2lsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MTUiOwp9CgoudGktcnVsZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MTYiOwp9CgoudGktYm9va21hcms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYxNyI7Cn0KCi50aS1ib29rbWFyay1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYxOCI7Cn0KCi50aS1yZWxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYxOSI7Cn0KCi50aS1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MWEiOwp9CgoudGktcGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MWIiOwp9CgoudGktcGVuY2lsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MWMiOwp9CgoudGktcGVuY2lsLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjFkIjsKfQoKLnRpLXBhaW50LXJvbGxlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjFlIjsKfQoKLnRpLXBhaW50LWJ1Y2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjFmIjsKfQoKLnRpLW5hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MjAiOwp9CgoudGktbW9iaWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MjEiOwp9CgoudGktbWludXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYyMiI7Cn0KCi50aS1tZWRhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYyMyI7Cn0KCi50aS1tZWRhbGwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MjQiOwp9CgoudGktbWFya2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MjUiOwp9CgoudGktbWFya2VyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjI2IjsKfQoKLnRpLWFycm93LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MjciOwp9CgoudGktYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYyOCI7Cn0KCi50aS1hcnJvdy1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MjkiOwp9CgoudGktYXJyb3ctZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjJhIjsKfQoKLnRpLWxvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYyYiI7Cn0KCi50aS1sb2NhdGlvbi1hcnJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxlNjJjIjsKfQoKLnRpLWxpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYyZCI7Cn0KCi50aS1sYXlvdXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYyZSI7Cn0KCi50aS1sYXllcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYyZiI7Cn0KCi50aS1sYXllcnMtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MzAiOwp9CgoudGkta2V5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MzEiOwp9CgoudGktaW1wb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2MzIiOwp9CgoudGktaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYzMyI7Cn0KCi50aS1oZWFydDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjM0IjsKfQoKLnRpLWhlYXJ0LWJyb2tlbjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjM1IjsKfQoKLnRpLWhhbmQtc3RvcDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjM2IjsKfQoKLnRpLWhhbmQtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjM3IjsKfQoKLnRpLWhhbmQtZHJhZzpiZWZvcmUgewogICAgY29udGVudDogIlxlNjM4IjsKfQoKLnRpLWZvbGRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjM5IjsKfQoKLnRpLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYzYSI7Cn0KCi50aS1mbGFnLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjNiIjsKfQoKLnRpLWZsYWctYWx0LTI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYzYyI7Cn0KCi50aS1leWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYzZCI7Cn0KCi50aS1leHBvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTYzZSI7Cn0KCi50aS1leGNoYW5nZS12ZXJ0aWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjNmIjsKfQoKLnRpLWRlc2t0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0MCI7Cn0KCi50aS1jdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0MSI7Cn0KCi50aS1jcm93bjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjQyIjsKfQoKLnRpLWNvbW1lbnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NDMiOwp9CgoudGktY29tbWVudDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjQ0IjsKfQoKLnRpLWNvbW1lbnQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NDUiOwp9CgoudGktY2xvc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0NiI7Cn0KCi50aS1jbGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NDciOwp9CgoudGktYW5nbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0OCI7Cn0KCi50aS1hbmdsZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjQ5IjsKfQoKLnRpLWFuZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0YSI7Cn0KCi50aS1hbmdsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NGIiOwp9CgoudGktY2hlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0YyI7Cn0KCi50aS1jaGVjay1ib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0ZCI7Cn0KCi50aS1jYW1lcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0ZSI7Cn0KCi50aS1hbm5vdW5jZW1lbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY0ZiI7Cn0KCi50aS1icnVzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjUwIjsKfQoKLnRpLWJyaWVmY2FzZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNjUxIjsKfQoKLnRpLWJvbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY1MiI7Cn0KCi50aS1ib2x0LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjUzIjsKfQoKLnRpLWJsYWNrYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY1NCI7Cn0KCi50aS1iYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY1NSI7Cn0KCi50aS1tb3ZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NTYiOwp9CgoudGktYXJyb3dzLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NTciOwp9CgoudGktYXJyb3dzLWhvcml6b250YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY1OCI7Cn0KCi50aS1mdWxsc2NyZWVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NTkiOwp9CgoudGktYXJyb3ctdG9wLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NWEiOwp9CgoudGktYXJyb3ctdG9wLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY1YiI7Cn0KCi50aS1hcnJvdy1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY1YyI7Cn0KCi50aS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY1ZCI7Cn0KCi50aS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjVlIjsKfQoKLnRpLWFycm93LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NWYiOwp9CgoudGktYW5nbGUtZG91YmxlLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NjAiOwp9CgoudGktYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NjEiOwp9CgoudGktYW5nbGUtZG91YmxlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY2MiI7Cn0KCi50aS1hbmdsZS1kb3VibGUtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjYzIjsKfQoKLnRpLXppcDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjY0IjsKfQoKLnRpLXdvcmxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NjUiOwp9CgoudGktd2hlZWxjaGFpcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjY2IjsKfQoKLnRpLXZpZXctbGlzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjY3IjsKfQoKLnRpLXZpZXctbGlzdC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY2OCI7Cn0KCi50aS12aWV3LWdyaWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY2OSI7Cn0KCi50aS11cHBlcmNhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY2YSI7Cn0KCi50aS11cGxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY2YiI7Cn0KCi50aS11bmRlcmxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY2YyI7Cn0KCi50aS10cnVjazpiZWZvcmUgewogICAgY29udGVudDogIlxlNjZkIjsKfQoKLnRpLXRpbWVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NmUiOwp9CgoudGktdGlja2V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NmYiOwp9CgoudGktdGh1bWItdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY3MCI7Cn0KCi50aS10aHVtYi1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NzEiOwp9CgoudGktdGV4dDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjcyIjsKfQoKLnRpLXN0YXRzLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NzMiOwp9CgoudGktc3RhdHMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjc0IjsKfQoKLnRpLXNwbGl0LXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY3NSI7Cn0KCi50aS1zcGxpdC1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NzYiOwp9CgoudGktc21hbGxjYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY3NyI7Cn0KCi50aS1zaGluZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNjc4IjsKfQoKLnRpLXNoaWZ0LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2NzkiOwp9CgoudGktc2hpZnQtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjdhIjsKfQoKLnRpLXNoaWVsZDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjdiIjsKfQoKLnRpLW5vdGVwYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY3YyI7Cn0KCi50aS1zZXJ2ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY3ZCI7Cn0KCi50aS1xdW90ZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjdlIjsKfQoKLnRpLXF1b3RlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY3ZiI7Cn0KCi50aS1wdWxzZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNjgwIjsKfQoKLnRpLXByaW50ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY4MSI7Cn0KCi50aS1wb3dlci1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY4MiI7Cn0KCi50aS1wbHVnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ODMiOwp9CgoudGktcGllLWNoYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ODQiOwp9CgoudGktcGFyYWdyYXBoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ODUiOwp9CgoudGktcGFuZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY4NiI7Cn0KCi50aS1wYWNrYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ODciOwp9CgoudGktbXVzaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY4OCI7Cn0KCi50aS1tdXNpYy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY4OSI7Cn0KCi50aS1tb3VzZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNjhhIjsKfQoKLnRpLW1vdXNlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjhiIjsKfQoKLnRpLW1vbmV5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2OGMiOwp9CgoudGktbWljcm9waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNjhkIjsKfQoKLnRpLW1lbnU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY4ZSI7Cn0KCi50aS1tZW51LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjhmIjsKfQoKLnRpLW1hcDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjkwIjsKfQoKLnRpLW1hcC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY5MSI7Cn0KCi50aS1sb29wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2OTIiOwp9CgoudGktbG9jYXRpb24tcGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2OTMiOwp9CgoudGktbGlzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNjk0IjsKfQoKLnRpLWxpZ2h0LWJ1bGI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY5NSI7Cn0KCi50aS1JdGFsaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY5NiI7Cn0KCi50aS1pbmZvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2OTciOwp9CgoudGktaW5maW5pdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY5OCI7Cn0KCi50aS1pZC1iYWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNjk5IjsKfQoKLnRpLWh1bW1lcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNjlhIjsKfQoKLnRpLWhvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTY5YiI7Cn0KCi50aS1oZWxwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2OWMiOwp9CgoudGktaGVhZHBob25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2OWQiOwp9CgoudGktaGFyZGRyaXZlczpiZWZvcmUgewogICAgY29udGVudDogIlxlNjllIjsKfQoKLnRpLWhhcmRkcml2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNjlmIjsKfQoKLnRpLWdpZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZhMCI7Cn0KCi50aS1nYW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YTEiOwp9CgoudGktZmlsdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YTIiOwp9CgoudGktZmlsZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZhMyI7Cn0KCi50aS1maWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YTQiOwp9CgoudGktZXJhc2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YTUiOwp9CgoudGktZW52ZWxvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZhNiI7Cn0KCi50aS1kb3dubG9hZDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmE3IjsKfQoKLnRpLWRpcmVjdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmE4IjsKfQoKLnRpLWRpcmVjdGlvbi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZhOSI7Cn0KCi50aS1kYXNoYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZhYSI7Cn0KCi50aS1jb250cm9sLXN0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZhYiI7Cn0KCi50aS1jb250cm9sLXNodWZmbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZhYyI7Cn0KCi50aS1jb250cm9sLXBsYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZhZCI7Cn0KCi50aS1jb250cm9sLXBhdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YWUiOwp9CgoudGktY29udHJvbC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YWYiOwp9CgoudGktY29udHJvbC1iYWNrd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmIwIjsKfQoKLnRpLWNsb3VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YjEiOwp9CgoudGktY2xvdWQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZiMiI7Cn0KCi50aS1jbG91ZC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YjMiOwp9CgoudGktY2xpcGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YjQiOwp9CgoudGktY2FyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YjUiOwp9CgoudGktY2FsZW5kYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZiNiI7Cn0KCi50aS1ib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YjciOwp9CgoudGktYmVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmI4IjsKfQoKLnRpLWJhc2tldGJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZiOSI7Cn0KCi50aS1iYXItY2hhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZiYSI7Cn0KCi50aS1iYXItY2hhcnQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YmIiOwp9CgoudGktYmFjay1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmJjIjsKfQoKLnRpLWJhY2stbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmJkIjsKfQoKLnRpLWFycm93cy1jb3JuZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZiZSI7Cn0KCi50aS1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YmYiOwp9CgoudGktYW5jaG9yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YzAiOwp9CgoudGktYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZjMSI7Cn0KCi50aS1hbGlnbi1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YzIiOwp9CgoudGktYWxpZ24tanVzdGlmeTpiZWZvcmUgewogICAgY29udGVudDogIlxlNmMzIjsKfQoKLnRpLWFsaWduLWNlbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmM0IjsKfQoKLnRpLWFsZXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2YzUiOwp9CgoudGktYWxhcm0tY2xvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZjNiI7Cn0KCi50aS1hZ2VuZGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZjNyI7Cn0KCi50aS13cml0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNmM4IjsKfQoKLnRpLXdpbmRvdzpiZWZvcmUgewogICAgY29udGVudDogIlxlNmM5IjsKfQoKLnRpLXdpZGdldGl6ZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZjYSI7Cn0KCi50aS13aWRnZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZjYiI7Cn0KCi50aS13aWRnZXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2Y2MiOwp9CgoudGktd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2Y2QiOwp9CgoudGktdmlkZW8tY2xhcHBlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmNlIjsKfQoKLnRpLXZpZGVvLWNhbWVyYTpiZWZvcmUgewogICAgY29udGVudDogIlxlNmNmIjsKfQoKLnRpLXZlY3RvcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmQwIjsKfQoKLnRpLXRoZW1pZnktbG9nbzpiZWZvcmUgewogICAgY29udGVudDogIlxlNmQxIjsKfQoKLnRpLXRoZW1pZnktZmF2aWNvbjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmQyIjsKfQoKLnRpLXRoZW1pZnktZmF2aWNvbi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZkMyI7Cn0KCi50aS1zdXBwb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZDQiOwp9CgoudGktc3RhbXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZkNSI7Cn0KCi50aS1zcGxpdC12LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmQ2IjsKfQoKLnRpLXNsaWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZDciOwp9CgoudGktc2hvcnRjb2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZDgiOwp9CgoudGktc2hpZnQtcmlnaHQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZDkiOwp9CgoudGktc2hpZnQtbGVmdC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZkYSI7Cn0KCi50aS1ydWxlci1hbHQtMjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmRiIjsKfQoKLnRpLXJlY2VpcHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZkYyI7Cn0KCi50aS1waW4yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZGQiOwp9CgoudGktcGluLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmRlIjsKfQoKLnRpLXBlbmNpbC1hbHQyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZGYiOwp9CgoudGktcGFsZXR0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNmUwIjsKfQoKLnRpLW1vcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZlMSI7Cn0KCi50aS1tb3JlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmUyIjsKfQoKLnRpLW1pY3JvcGhvbmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZTMiOwp9CgoudGktbWFnbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZTQiOwp9CgoudGktbGluZS1kb3VibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZlNSI7Cn0KCi50aS1saW5lLWRvdHRlZDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmU2IjsKfQoKLnRpLWxpbmUtZGFzaGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZTciOwp9CgoudGktbGF5b3V0LXdpZHRoLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZlOCI7Cn0KCi50aS1sYXlvdXQtd2lkdGgtZGVmYXVsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmU5IjsKfQoKLnRpLWxheW91dC13aWR0aC1kZWZhdWx0LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmVhIjsKfQoKLnRpLWxheW91dC10YWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZlYiI7Cn0KCi50aS1sYXlvdXQtdGFiLXdpbmRvdzpiZWZvcmUgewogICAgY29udGVudDogIlxlNmVjIjsKfQoKLnRpLWxheW91dC10YWItdjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmVkIjsKfQoKLnRpLWxheW91dC10YWItbWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZWUiOwp9CgoudGktbGF5b3V0LXNsaWRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmVmIjsKfQoKLnRpLWxheW91dC1zbGlkZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZjAiOwp9CgoudGktbGF5b3V0LXNpZGViYXItcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZmMSI7Cn0KCi50aS1sYXlvdXQtc2lkZWJhci1ub25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZjIiOwp9CgoudGktbGF5b3V0LXNpZGViYXItbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmYzIjsKfQoKLnRpLWxheW91dC1wbGFjZWhvbGRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmY0IjsKfQoKLnRpLWxheW91dC1tZW51OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZjUiOwp9CgoudGktbGF5b3V0LW1lbnUtdjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmY2IjsKfQoKLnRpLWxheW91dC1tZW51LXNlcGFyYXRlZDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmY3IjsKfQoKLnRpLWxheW91dC1tZW51LWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZmOCI7Cn0KCi50aS1sYXlvdXQtbWVkaWEtcmlnaHQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZjkiOwp9CgoudGktbGF5b3V0LW1lZGlhLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZmEiOwp9CgoudGktbGF5b3V0LW1lZGlhLW92ZXJsYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZmYiI7Cn0KCi50aS1sYXlvdXQtbWVkaWEtb3ZlcmxheS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTZmYyI7Cn0KCi50aS1sYXlvdXQtbWVkaWEtb3ZlcmxheS1hbHQtMjpiZWZvcmUgewogICAgY29udGVudDogIlxlNmZkIjsKfQoKLnRpLWxheW91dC1tZWRpYS1sZWZ0LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNmZlIjsKfQoKLnRpLWxheW91dC1tZWRpYS1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU2ZmYiOwp9CgoudGktbGF5b3V0LW1lZGlhLWNlbnRlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcwMCI7Cn0KCi50aS1sYXlvdXQtbWVkaWEtY2VudGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MDEiOwp9CgoudGktbGF5b3V0LWxpc3QtdGh1bWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcwMiI7Cn0KCi50aS1sYXlvdXQtbGlzdC10aHVtYi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcwMyI7Cn0KCi50aS1sYXlvdXQtbGlzdC1wb3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MDQiOwp9CgoudGktbGF5b3V0LWxpc3QtbGFyZ2UtaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcwNSI7Cn0KCi50aS1sYXlvdXQtbGluZS1zb2xpZDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzA2IjsKfQoKLnRpLWxheW91dC1ncmlkNDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzA3IjsKfQoKLnRpLWxheW91dC1ncmlkMzpiZWZvcmUgewogICAgY29udGVudDogIlxlNzA4IjsKfQoKLnRpLWxheW91dC1ncmlkMjpiZWZvcmUgewogICAgY29udGVudDogIlxlNzA5IjsKfQoKLnRpLWxheW91dC1ncmlkMi10aHVtYjpiZWZvcmUgewogICAgY29udGVudDogIlxlNzBhIjsKfQoKLnRpLWxheW91dC1jdGEtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcwYiI7Cn0KCi50aS1sYXlvdXQtY3RhLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcwYyI7Cn0KCi50aS1sYXlvdXQtY3RhLWNlbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNzBkIjsKfQoKLnRpLWxheW91dC1jdGEtYnRuLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MGUiOwp9CgoudGktbGF5b3V0LWN0YS1idG4tbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzBmIjsKfQoKLnRpLWxheW91dC1jb2x1bW40OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MTAiOwp9CgoudGktbGF5b3V0LWNvbHVtbjM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcxMSI7Cn0KCi50aS1sYXlvdXQtY29sdW1uMjpiZWZvcmUgewogICAgY29udGVudDogIlxlNzEyIjsKfQoKLnRpLWxheW91dC1hY2NvcmRpb24tc2VwYXJhdGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MTMiOwp9CgoudGktbGF5b3V0LWFjY29yZGlvbi1tZXJnZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcxNCI7Cn0KCi50aS1sYXlvdXQtYWNjb3JkaW9uLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcxNSI7Cn0KCi50aS1pbmstcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MTYiOwp9CgoudGktaW5mby1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcxNyI7Cn0KCi50aS1oZWxwLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzE4IjsKfQoKLnRpLWhlYWRwaG9uZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcxOSI7Cn0KCi50aS1oYW5kLXBvaW50LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MWEiOwp9CgoudGktaGFuZC1wb2ludC1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzFiIjsKfQoKLnRpLWhhbmQtcG9pbnQtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzFjIjsKfQoKLnRpLWhhbmQtcG9pbnQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxlNzFkIjsKfQoKLnRpLWdhbGxlcnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcxZSI7Cn0KCi50aS1mYWNlLXNtaWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MWYiOwp9CgoudGktZmFjZS1zYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcyMCI7Cn0KCi50aS1jcmVkaXQtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzIxIjsKfQoKLnRpLWNvbnRyb2wtc2tpcC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MjIiOwp9CgoudGktY29udHJvbC1za2lwLWJhY2t3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MjMiOwp9CgoudGktY29udHJvbC1yZWNvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcyNCI7Cn0KCi50aS1jb250cm9sLWVqZWN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MjUiOwp9CgoudGktY29tbWVudHMtc21pbGV5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MjYiOwp9CgoudGktYnJ1c2gtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MjciOwp9CgoudGkteW91dHViZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNzI4IjsKfQoKLnRpLXZpbWVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MjkiOwp9CgoudGktdHdpdHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxlNzJhIjsKfQoKLnRpLXRpbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcyYiI7Cn0KCi50aS10dW1ibHI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTcyYyI7Cn0KCi50aS1za3lwZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNzJkIjsKfQoKLnRpLXNoYXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MmUiOwp9CgoudGktc2hhcmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MmYiOwp9CgoudGktcm9ja2V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MzAiOwp9CgoudGktcGludGVyZXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MzEiOwp9CgoudGktbmV3LXdpbmRvdzpiZWZvcmUgewogICAgY29udGVudDogIlxlNzMyIjsKfQoKLnRpLW1pY3Jvc29mdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzMzIjsKfQoKLnRpLWxpc3Qtb2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczNCI7Cn0KCi50aS1saW5rZWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxlNzM1IjsKfQoKLnRpLWxheW91dC1zaWRlYmFyLTI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczNiI7Cn0KCi50aS1sYXlvdXQtZ3JpZDQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3MzciOwp9CgoudGktbGF5b3V0LWdyaWQzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzM4IjsKfQoKLnRpLWxheW91dC1ncmlkMi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczOSI7Cn0KCi50aS1sYXlvdXQtY29sdW1uNC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczYSI7Cn0KCi50aS1sYXlvdXQtY29sdW1uMy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczYiI7Cn0KCi50aS1sYXlvdXQtY29sdW1uMi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczYyI7Cn0KCi50aS1pbnN0YWdyYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczZCI7Cn0KCi50aS1nb29nbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczZSI7Cn0KCi50aS1naXRodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTczZiI7Cn0KCi50aS1mbGlja3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTc0MCI7Cn0KCi50aS1mYWNlYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxlNzQxIjsKfQoKLnRpLWRyb3Bib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTc0MiI7Cn0KCi50aS1kcmliYmJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNzQzIjsKfQoKLnRpLWFwcGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NDQiOwp9CgoudGktYW5kcm9pZDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzQ1IjsKfQoKLnRpLXNhdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTc0NiI7Cn0KCi50aS1zYXZlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzQ3IjsKfQoKLnRpLXlhaG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NDgiOwp9CgoudGktd29yZHByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NDkiOwp9CgoudGktdmltZW8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NGEiOwp9CgoudGktdHdpdHRlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTc0YiI7Cn0KCi50aS10dW1ibHItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NGMiOwp9CgoudGktdHJlbGxvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NGQiOwp9CgoudGktc3RhY2stb3ZlcmZsb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTc0ZSI7Cn0KCi50aS1zb3VuZGNsb3VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NGYiOwp9CgoudGktc2hhcmV0aGlzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NTAiOwp9CgoudGktc2hhcmV0aGlzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzUxIjsKfQoKLnRpLXJlZGRpdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzUyIjsKfQoKLnRpLXBpbnRlcmVzdC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTc1MyI7Cn0KCi50aS1taWNyb3NvZnQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NTQiOwp9CgoudGktbGludXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTc1NSI7Cn0KCi50aS1qc2ZpZGRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxlNzU2IjsKfQoKLnRpLWpvb21sYTpiZWZvcmUgewogICAgY29udGVudDogIlxlNzU3IjsKfQoKLnRpLWh0bWw1OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NTgiOwp9CgoudGktZmxpY2tyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzU5IjsKfQoKLnRpLWVtYWlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NWEiOwp9CgoudGktZHJ1cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NWIiOwp9CgoudGktZHJvcGJveC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTc1YyI7Cn0KCi50aS1jc3MzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NWQiOwp9CgoudGktcnNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU3NWUiOwp9CgoudGktcnNzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxlNzVmIjsKfQ=="}},"time_used":558,"timings":{"blocked":463,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/font-awesome/css/fontawesome.min.css?ver=5.15.3","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.316Z","timestamp":1785145482316,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/font-awesome/css/fontawesome.min.css?ver=5.15.3 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/css\r\nContent-Length: 73359\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":73359,"size_decoded":73569,"mime_type":"text/css","magic":"ASCII text","md5":"285142ab9002610c15db2f814de46a5c","sha1":"7c321a42c72d44ca0039a5d7590c9f0d4081cc95","sha256":"4eaa1d8e14590dc7a2adb63ae00de9707e9122366be2cf832d81c3d59d4b51d9","sha512":"2050bf5a793609a40c133e51a5fc1abf49ef58752168da43589bb380e80930db015e943a8ebbe4f89ba352eda4a9e6a8c4f6e9d02c258cc57a5f546ebdac453f","ssdeep":"768:0slcWL1WmZlMBOulII2tt0QNTbgMCo5PVCLD1LDfgjGGncx:0slcWL1W1BpaI2nzNPgMCo5PwVXeXQ","tlshash":"2963eebcd1fe08954308e485274bb380b325b6af9c584c5df282be8ddbd06799186bdd","first_seen":"2023-05-09T14:52:25Z","last_seen":"2026-07-27T10:21:19.461983Z","times_seen":56,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCi5mYSwKLmZhYiwKLmZhZCwKLmZhbCwKLmZhciwKLmZhcyB7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDsKICAgIHRleHQtcmVuZGVyaW5nOiBhdXRvOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmZhLWxnIHsKICAgIGZvbnQtc2l6ZTogMS4zMzMzM2VtOwogICAgbGluZS1oZWlnaHQ6IC43NWVtOwogICAgdmVydGljYWwtYWxpZ246IC0uMDY2N2VtCn0KCi5mYS14cyB7CiAgICBmb250LXNpemU6IC43NWVtCn0KCi5mYS1zbSB7CiAgICBmb250LXNpemU6IC44NzVlbQp9CgouZmEtMXggewogICAgZm9udC1zaXplOiAxZW0KfQoKLmZhLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5mYS0zeCB7CiAgICBmb250LXNpemU6IDNlbQp9CgouZmEtNHggewogICAgZm9udC1zaXplOiA0ZW0KfQoKLmZhLTV4IHsKICAgIGZvbnQtc2l6ZTogNWVtCn0KCi5mYS02eCB7CiAgICBmb250LXNpemU6IDZlbQp9CgouZmEtN3ggewogICAgZm9udC1zaXplOiA3ZW0KfQoKLmZhLTh4IHsKICAgIGZvbnQtc2l6ZTogOGVtCn0KCi5mYS05eCB7CiAgICBmb250LXNpemU6IDllbQp9CgouZmEtMTB4IHsKICAgIGZvbnQtc2l6ZTogMTBlbQp9CgouZmEtZncgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDEuMjVlbQp9CgouZmEtdWwgewogICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgbWFyZ2luLWxlZnQ6IDIuNWVtOwogICAgcGFkZGluZy1sZWZ0OiAwCn0KCi5mYS11bD5saSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmZhLWxpIHsKICAgIGxlZnQ6IC0yZW07CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMmVtOwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmZhLWJvcmRlciB7CiAgICBib3JkZXI6IC4wOGVtIHNvbGlkICNlZWU7CiAgICBib3JkZXItcmFkaXVzOiAuMWVtOwogICAgcGFkZGluZzogLjJlbSAuMjVlbSAuMTVlbQp9CgouZmEtcHVsbC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5mYS1wdWxsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodAp9CgouZmEuZmEtcHVsbC1sZWZ0LAouZmFiLmZhLXB1bGwtbGVmdCwKLmZhbC5mYS1wdWxsLWxlZnQsCi5mYXIuZmEtcHVsbC1sZWZ0LAouZmFzLmZhLXB1bGwtbGVmdCB7CiAgICBtYXJnaW4tcmlnaHQ6IC4zZW0KfQoKLmZhLmZhLXB1bGwtcmlnaHQsCi5mYWIuZmEtcHVsbC1yaWdodCwKLmZhbC5mYS1wdWxsLXJpZ2h0LAouZmFyLmZhLXB1bGwtcmlnaHQsCi5mYXMuZmEtcHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogLjNlbQp9CgouZmEtc3BpbiB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlCn0KCi5mYS1wdWxzZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKQogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMXR1cm4pOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKQogICAgfQp9CgpAa2V5ZnJhbWVzIGZhLXNwaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybikKICAgIH0KfQoKLmZhLXJvdGF0ZS05MCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MSkiOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykKfQoKLmZhLXJvdGF0ZS0xODAgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykKfQoKLmZhLXJvdGF0ZS0yNzAgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTMpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZykKfQoKLmZhLWZsaXAtaG9yaXpvbnRhbCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MCwgbWlycm9yPTEpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpCn0KCi5mYS1mbGlwLXZlcnRpY2FsIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZVkoLTEpCn0KCi5mYS1mbGlwLWJvdGgsCi5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbCwKLmZhLWZsaXAtdmVydGljYWwgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsIG1pcnJvcj0xKSIKfQoKLmZhLWZsaXAtYm90aCwKLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2FsIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgtMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC0xKQp9Cgo6cm9vdCAuZmEtZmxpcC1ib3RoLAo6cm9vdCAuZmEtZmxpcC1ob3Jpem9udGFsLAo6cm9vdCAuZmEtZmxpcC12ZXJ0aWNhbCwKOnJvb3QgLmZhLXJvdGF0ZS05MCwKOnJvb3QgLmZhLXJvdGF0ZS0xODAsCjpyb290IC5mYS1yb3RhdGUtMjcwIHsKICAgIC13ZWJraXQtZmlsdGVyOiBub25lOwogICAgZmlsdGVyOiBub25lCn0KCi5mYS1zdGFjayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBoZWlnaHQ6IDJlbTsKICAgIGxpbmUtaGVpZ2h0OiAyZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgd2lkdGg6IDIuNWVtCn0KCi5mYS1zdGFjay0xeCwKLmZhLXN0YWNrLTJ4IHsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJQp9CgouZmEtc3RhY2stMXggewogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmZhLXN0YWNrLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5mYS1pbnZlcnNlIHsKICAgIGNvbG9yOiAjZmZmCn0KCi5mYS01MDBweDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZlIgp9CgouZmEtYWNjZXNzaWJsZS1pY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjgiCn0KCi5mYS1hY2N1c29mdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzY5Igp9CgouZmEtYWNxdWlzaXRpb25zLWluY29ycG9yYXRlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmFmIgp9CgouZmEtYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0MSIKfQoKLmZhLWFkZHJlc3MtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI5Igp9CgouZmEtYWRkcmVzcy1jYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYmIiCn0KCi5mYS1hZGp1c3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MiIKfQoKLmZhLWFkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTcwIgp9CgouZmEtYWR2ZXJzYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YSIKfQoKLmZhLWFmZmlsaWF0ZXRoZW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNmIiCn0KCi5mYS1haXItZnJlc2hlbmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDAiCn0KCi5mYS1haXJibmI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNCIKfQoKLmZhLWFsZ29saWE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YyIKfQoKLmZhLWFsaWduLWNlbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM3Igp9CgouZmEtYWxpZ24tanVzdGlmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM5Igp9CgouZmEtYWxpZ24tbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM2Igp9CgouZmEtYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzOCIKfQoKLmZhLWFsaXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjQyIgp9CgouZmEtYWxsZXJnaWVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjEiCn0KCi5mYS1hbWF6b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MCIKfQoKLmZhLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYyIKfQoKLmZhLWFtYnVsYW5jZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGY5Igp9CgouZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMyIKfQoKLmZhLWFtaWxpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZkIgp9CgouZmEtYW5jaG9yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2QiCn0KCi5mYS1hbmRyb2lkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2IiCn0KCi5mYS1hbmdlbGxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwOSIKfQoKLmZhLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDMiCn0KCi5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTAwIgp9CgouZmEtYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDEiCn0KCi5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwMiIKfQoKLmZhLWFuZ2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNyIKfQoKLmZhLWFuZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNCIKfQoKLmZhLWFuZ2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDUiCn0KCi5mYS1hbmdsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA2Igp9CgouZmEtYW5ncnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1NiIKfQoKLmZhLWFuZ3J5Y3JlYXRpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2ZSIKfQoKLmZhLWFuZ3VsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMCIKfQoKLmZhLWFua2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0NCIKfQoKLmZhLWFwcC1zdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZmIgp9CgouZmEtYXBwLXN0b3JlLWlvczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzcwIgp9CgouZmEtYXBwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3MSIKfQoKLmZhLWFwcGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzkiCn0KCi5mYS1hcHBsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkMSIKfQoKLmZhLWFwcGxlLXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE1Igp9CgouZmEtYXJjaGl2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg3Igp9CgouZmEtYXJjaHdheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU3Igp9CgouZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTgiCn0KCi5mYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1OSIKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YSIKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YiIKfQoKLmZhLWFycm93LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYWIiCn0KCi5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE4Igp9CgouZmEtYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTkiCn0KCi5mYS1hcnJvdy1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhYSIKfQoKLmZhLWFycm93LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MyIKfQoKLmZhLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MCIKfQoKLmZhLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjEiCn0KCi5mYS1hcnJvdy11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDYyIgp9CgouZmEtYXJyb3dzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGIyIgp9CgouZmEtYXJyb3dzLWFsdC1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMzciCn0KCi5mYS1hcnJvd3MtYWx0LXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzOCIKfQoKLmZhLWFydHN0YXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3YSIKfQoKLmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEyIgp9CgouZmEtYXN0ZXJpc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2OSIKfQoKLmZhLWFzeW1tZXRyaWs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3MiIKfQoKLmZhLWF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmEiCn0KCi5mYS1hdGxhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU4Igp9CgouZmEtYXRsYXNzaWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3N2IiCn0KCi5mYS1hdG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDIiCn0KCi5mYS1hdWRpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzMiCn0KCi5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjllIgp9CgouZmEtYXV0b3ByZWZpeGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWMiCn0KCi5mYS1hdmlhbmV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzQiCn0KCi5mYS1hdmlhdG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMSIKfQoKLmZhLWF3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTkiCn0KCi5mYS1hd3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3NSIKfQoKLmZhLWJhYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3YyIKfQoKLmZhLWJhYnktY2FycmlhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3ZCIKfQoKLmZhLWJhY2tzcGFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVhIgp9CgouZmEtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0YSIKfQoKLmZhLWJhY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZTUiCn0KCi5mYS1iYWN0ZXJpYTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU5Igp9CgouZmEtYmFjdGVyaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNWEiCn0KCi5mYS1iYWhhaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY2Igp9CgouZmEtYmFsYW5jZS1zY2FsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRlIgp9CgouZmEtYmFsYW5jZS1zY2FsZS1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTUiCn0KCi5mYS1iYWxhbmNlLXNjYWxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTYiCn0KCi5mYS1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1ZSIKfQoKLmZhLWJhbmQtYWlkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjIiCn0KCi5mYS1iYW5kY2FtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ1Igp9CgouZmEtYmFyY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJhIgp9CgouZmEtYmFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM5Igp9CgouZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDMzIgp9CgouZmEtYmFza2V0YmFsbC1iYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MzQiCn0KCi5mYS1iYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2QiCn0KCi5mYS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDQiCn0KCi5mYS1iYXR0ZXJ5LWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0MCIKfQoKLmZhLWJhdHRlcnktaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQyIgp9CgouZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDMiCn0KCi5mYS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDEiCn0KCi5mYS1iYXR0bGUtbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzUiCn0KCi5mYS1iZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNiIKfQoKLmZhLWJlZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmYyIKfQoKLmZhLWJlaGFuY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiNCIKfQoKLmZhLWJlaGFuY2Utc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjUiCn0KCi5mYS1iZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjMiCn0KCi5mYS1iZWxsLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjYiCn0KCi5mYS1iZXppZXItY3VydmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1YiIKfQoKLmZhLWJpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NDciCn0KCi5mYS1iaWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDYiCn0KCi5mYS1iaWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0YSIKfQoKLmZhLWJpbW9iamVjdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzc4Igp9CgouZmEtYmlub2N1bGFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU1Igp9CgouZmEtYmlvaGF6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODAiCn0KCi5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmQiCn0KCi5mYS1iaXRidWNrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MSIKfQoKLmZhLWJpdGNvaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3OSIKfQoKLmZhLWJpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YSIKfQoKLmZhLWJsYWNrLXRpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdlIgp9CgouZmEtYmxhY2tiZXJyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdiIgp9CgouZmEtYmxlbmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE3Igp9CgouZmEtYmxlbmRlci1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmI2Igp9CgouZmEtYmxpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5ZCIKfQoKLmZhLWJsb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MSIKfQoKLmZhLWJsb2dnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YyIKfQoKLmZhLWJsb2dnZXItYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdkIgp9CgouZmEtYmx1ZXRvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTMiCn0KCi5mYS1ibHVldG9vdGgtYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjk0Igp9CgouZmEtYm9sZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMyIgp9CgouZmEtYm9sdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGU3Igp9CgouZmEtYm9tYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUyIgp9CgouZmEtYm9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWQ3Igp9CgouZmEtYm9uZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVjIgp9CgouZmEtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJkIgp9CgouZmEtYm9vay1kZWFkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YjciCn0KCi5mYS1ib29rLW1lZGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNiIKfQoKLmZhLWJvb2stb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE4Igp9CgouZmEtYm9vay1yZWFkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkYSIKfQoKLmZhLWJvb2ttYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmUiCn0KCi5mYS1ib290c3RyYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNiIKfQoKLmZhLWJvcmRlci1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0YyIKfQoKLmZhLWJvcmRlci1ub25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NTAiCn0KCi5mYS1ib3JkZXItc3R5bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg1MyIKfQoKLmZhLWJvd2xpbmctYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDM2Igp9CgouZmEtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjYiCn0KCi5mYS1ib3gtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDllIgp9CgouZmEtYm94LXRpc3N1ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDViIgp9CgouZmEtYm94ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2OCIKfQoKLmZhLWJyYWlsbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMSIKfQoKLmZhLWJyYWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGMiCn0KCi5mYS1icmVhZC1zbGljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2VjIgp9CgouZmEtYnJpZWZjYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjEiCn0KCi5mYS1icmllZmNhc2UtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDY5Igp9CgouZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTkiCn0KCi5mYS1icm9vbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFhIgp9CgouZmEtYnJ1c2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1ZCIKfQoKLmZhLWJ0YzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVhIgp9CgouZmEtYnVmZmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzciCn0KCi5mYS1idWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OCIKfQoKLmZhLWJ1aWxkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWQiCn0KCi5mYS1idWxsaG9ybjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGExIgp9CgouZmEtYnVsbHNleWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0MCIKfQoKLmZhLWJ1cm46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2YSIKfQoKLmZhLWJ1cm9tb2JlbGV4cGVydGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3ZiIKfQoKLmZhLWJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA3Igp9CgouZmEtYnVzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVlIgp9CgouZmEtYnVzaW5lc3MtdGltZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjRhIgp9CgouZmEtYnV5LW4tbGFyZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhhNiIKfQoKLmZhLWJ1eXNlbGxhZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwZCIKfQoKLmZhLWNhbGN1bGF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlYyIKfQoKLmZhLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzMiCn0KCi5mYS1jYWxlbmRhci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MyIKfQoKLmZhLWNhbGVuZGFyLWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzQiCn0KCi5mYS1jYWxlbmRhci1kYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MyIKfQoKLmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzIiCn0KCi5mYS1jYWxlbmRhci1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzEiCn0KCi5mYS1jYWxlbmRhci10aW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjczIgp9CgouZmEtY2FsZW5kYXItd2VlazpiZWZvcmUgewogICAgY29udGVudDogIlxmNzg0Igp9CgouZmEtY2FtZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMzAiCn0KCi5mYS1jYW1lcmEtcmV0cm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MyIKfQoKLmZhLWNhbXBncm91bmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZiYiIKfQoKLmZhLWNhbmFkaWFuLW1hcGxlLWxlYWY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NSIKfQoKLmZhLWNhbmR5LWNhbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NiIKfQoKLmZhLWNhbm5hYmlzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NWYiCn0KCi5mYS1jYXBzdWxlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZiIgp9CgouZmEtY2FyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjkiCn0KCi5mYS1jYXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGUiCn0KCi5mYS1jYXItYmF0dGVyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWRmIgp9CgouZmEtY2FyLWNyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTEiCn0KCi5mYS1jYXItc2lkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWU0Igp9CgouZmEtY2FyYXZhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmOGZmIgp9CgouZmEtY2FyZXQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ3Igp9CgouZmEtY2FyZXQtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ5Igp9CgouZmEtY2FyZXQtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkYSIKfQoKLmZhLWNhcmV0LXNxdWFyZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTAiCn0KCi5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkxIgp9CgouZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTIiCn0KCi5mYS1jYXJldC1zcXVhcmUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MSIKfQoKLmZhLWNhcmV0LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDgiCn0KCi5mYS1jYXJyb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NyIKfQoKLmZhLWNhcnQtYXJyb3ctZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjE4Igp9CgouZmEtY2FydC1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTciCn0KCi5mYS1jYXNoLXJlZ2lzdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODgiCn0KCi5mYS1jYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZiZSIKfQoKLmZhLWNjLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZCIKfQoKLmZhLWNjLWFtZXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMyIKfQoKLmZhLWNjLWFwcGxlLXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE2Igp9CgouZmEtY2MtZGluZXJzLWNsdWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YyIKfQoKLmZhLWNjLWRpc2NvdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjIiCn0KCi5mYS1jYy1qY2I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YiIKfQoKLmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMSIKfQoKLmZhLWNjLXBheXBhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWY0Igp9CgouZmEtY2Mtc3RyaXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjUiCn0KCi5mYS1jYy12aXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjAiCn0KCi5mYS1jZW50ZXJjb2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODAiCn0KCi5mYS1jZW50b3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4OSIKfQoKLmZhLWNlcnRpZmljYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTMiCn0KCi5mYS1jaGFpcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmMwIgp9CgouZmEtY2hhbGtib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFiIgp9CgouZmEtY2hhbGtib2FyZC10ZWFjaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWMiCn0KCi5mYS1jaGFyZ2luZy1zdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTciCn0KCi5mYS1jaGFydC1hcmVhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmUiCn0KCi5mYS1jaGFydC1iYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MCIKfQoKLmZhLWNoYXJ0LWxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwMSIKfQoKLmZhLWNoYXJ0LXBpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAwIgp9CgouZmEtY2hlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwYyIKfQoKLmZhLWNoZWNrLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU4Igp9CgouZmEtY2hlY2stZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjAiCn0KCi5mYS1jaGVjay1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YSIKfQoKLmZhLWNoZWVzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2VmIgp9CgouZmEtY2hlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzOSIKfQoKLmZhLWNoZXNzLWJpc2hvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDNhIgp9CgouZmEtY2hlc3MtYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzYyIKfQoKLmZhLWNoZXNzLWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzZiIKfQoKLmZhLWNoZXNzLWtuaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQxIgp9CgouZmEtY2hlc3MtcGF3bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQzIgp9CgouZmEtY2hlc3MtcXVlZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NSIKfQoKLmZhLWNoZXNzLXJvb2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NyIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYSIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzNyIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzgiCn0KCi5mYS1jaGV2cm9uLWNpcmNsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM5Igp9CgouZmEtY2hldnJvbi1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzgiCn0KCi5mYS1jaGV2cm9uLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MyIKfQoKLmZhLWNoZXZyb24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1NCIKfQoKLmZhLWNoZXZyb24tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3NyIKfQoKLmZhLWNoaWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWUiCn0KCi5mYS1jaHJvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2OCIKfQoKLmZhLWNocm9tZWNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzOCIKfQoKLmZhLWNodXJjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFkIgp9CgouZmEtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS1jaXJjbGUtbm90Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZSIKfQoKLmZhLWNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0ZiIKfQoKLmZhLWNsaW5pYy1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjIiCn0KCi5mYS1jbGlwYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMyOCIKfQoKLmZhLWNsaXBib2FyZC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZjIgp9CgouZmEtY2xpcGJvYXJkLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2ZCIKfQoKLmZhLWNsb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTciCn0KCi5mYS1jbG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRkIgp9CgouZmEtY2xvc2VkLWNhcHRpb25pbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwYSIKfQoKLmZhLWNsb3VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzIiCn0KCi5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MSIKfQoKLmZhLWNsb3VkLW1lYXRiYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3M2IiCn0KCi5mYS1jbG91ZC1tb29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YzMiCn0KCi5mYS1jbG91ZC1tb29uLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczYyIKfQoKLmZhLWNsb3VkLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczZCIKfQoKLmZhLWNsb3VkLXNob3dlcnMtaGVhdnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0MCIKfQoKLmZhLWNsb3VkLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmM0Igp9CgouZmEtY2xvdWQtc3VuLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0MyIKfQoKLmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MiIKfQoKLmZhLWNsb3VkZmxhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZCIKfQoKLmZhLWNsb3Vkc2NhbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MyIKfQoKLmZhLWNsb3Vkc21pdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4NCIKfQoKLmZhLWNsb3VkdmVyc2lmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzg1Igp9CgouZmEtY29ja3RhaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MSIKfQoKLmZhLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMSIKfQoKLmZhLWNvZGUtYnJhbmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjYiCn0KCi5mYS1jb2RlcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2IiCn0KCi5mYS1jb2RpZXBpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg0Igp9CgouZmEtY29mZmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjQiCn0KCi5mYS1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMyIKfQoKLmZhLWNvZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4NSIKfQoKLmZhLWNvaW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWUiCn0KCi5mYS1jb2x1bW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGIiCn0KCi5mYS1jb21tZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzUiCn0KCi5mYS1jb21tZW50LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdhIgp9CgouZmEtY29tbWVudC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1MSIKfQoKLmZhLWNvbW1lbnQtZG90czpiZWZvcmUgewogICAgY29udGVudDogIlxmNGFkIgp9CgouZmEtY29tbWVudC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjUiCn0KCi5mYS1jb21tZW50LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjMiCn0KCi5mYS1jb21tZW50czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg2Igp9CgouZmEtY29tbWVudHMtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NTMiCn0KCi5mYS1jb21wYWN0LWRpc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxZiIKfQoKLmZhLWNvbXBhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0ZSIKfQoKLmZhLWNvbXByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjYiCn0KCi5mYS1jb21wcmVzcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMiIKfQoKLmZhLWNvbXByZXNzLWFycm93cy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4YyIKfQoKLmZhLWNvbmNpZXJnZS1iZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjIiCn0KCi5mYS1jb25mbHVlbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OGQiCn0KCi5mYS1jb25uZWN0ZGV2ZWxvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBlIgp9CgouZmEtY29udGFvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmQiCn0KCi5mYS1jb29raWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MyIKfQoKLmZhLWNvb2tpZS1iaXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjQiCn0KCi5mYS1jb3B5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzUiCn0KCi5mYS1jb3B5cmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOSIKfQoKLmZhLWNvdHRvbi1idXJlYXU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg5ZSIKfQoKLmZhLWNvdWNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjgiCn0KCi5mYS1jcGFuZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4OCIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1ZSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNyIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOCIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtZXU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtanA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYiIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYyIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWQiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXJlbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWUiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWYiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjAiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMiIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtemVybzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGYzIgp9CgouZmEtY3JlZGl0LWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5ZCIKfQoKLmZhLWNyaXRpY2FsLXJvbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjOSIKfQoKLmZhLWNyb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNSIKfQoKLmZhLWNyb3AtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjUiCn0KCi5mYS1jcm9zczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU0Igp9CgouZmEtY3Jvc3NoYWlyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDViIgp9CgouZmEtY3JvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIwIgp9CgouZmEtY3Jvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyMSIKfQoKLmZhLWNydXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2Y3Igp9CgouZmEtY3NzMzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTNjIgp9CgouZmEtY3NzMy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4YiIKfQoKLmZhLWN1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiMiIKfQoKLmZhLWN1YmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjMiCn0KCi5mYS1jdXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNCIKfQoKLmZhLWN1dHRsZWZpc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4YyIKfQoKLmZhLWQtYW5kLWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4ZCIKfQoKLmZhLWQtYW5kLWQtYmV5b25kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2Y2EiCn0KCi5mYS1kYWlseW1vdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDUyIgp9CgouZmEtZGFzaGN1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxMCIKfQoKLmZhLWRhdGFiYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzAiCn0KCi5mYS1kZWFmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTQiCn0KCi5mYS1kZWV6ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3NyIKfQoKLmZhLWRlbGljaW91czpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE1Igp9CgouZmEtZGVtb2NyYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0NyIKfQoKLmZhLWRlcGxveWRvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhlIgp9CgouZmEtZGVza3BybzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhmIgp9CgouZmEtZGVza3RvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA4Igp9CgouZmEtZGV2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2Y2MiCn0KCi5mYS1kZXZpYW50YXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmQiCn0KCi5mYS1kaGFybWFjaGFrcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1NSIKfQoKLmZhLWRobDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkwIgp9CgouZmEtZGlhZ25vc2VzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzAiCn0KCi5mYS1kaWFzcG9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkxIgp9CgouZmEtZGljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIyIgp9CgouZmEtZGljZS1kMjA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjZiIKfQoKLmZhLWRpY2UtZDY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkMSIKfQoKLmZhLWRpY2UtZml2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIzIgp9CgouZmEtZGljZS1mb3VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjQiCn0KCi5mYS1kaWNlLW9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTI1Igp9CgouZmEtZGljZS1zaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNiIKfQoKLmZhLWRpY2UtdGhyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNyIKfQoKLmZhLWRpY2UtdHdvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjgiCn0KCi5mYS1kaWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTYiCn0KCi5mYS1kaWdpdGFsLW9jZWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTEiCn0KCi5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2NiIKfQoKLmZhLWRpcmVjdGlvbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVlYiIKfQoKLmZhLWRpc2NvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5MiIKfQoKLmZhLWRpc2NvdXJzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzkzIgp9CgouZmEtZGlzZWFzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2ZhIgp9CgouZmEtZGl2aWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjkiCn0KCi5mYS1kaXp6eTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTY3Igp9CgouZmEtZG5hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzEiCn0KCi5mYS1kb2NodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5NCIKfQoKLmZhLWRvY2tlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzk1Igp9CgouZmEtZG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZDMiCn0KCi5mYS1kb2xsYXItc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU1Igp9CgouZmEtZG9sbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3MiIKfQoKLmZhLWRvbGx5LWZsYXRiZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3NCIKfQoKLmZhLWRvbmF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGI5Igp9CgouZmEtZG9vci1jbG9zZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyYSIKfQoKLmZhLWRvb3Itb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJiIgp9CgouZmEtZG90LWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkyIgp9CgouZmEtZG92ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGJhIgp9CgouZmEtZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxOSIKfQoKLmZhLWRyYWZ0MmRpZ2l0YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5NiIKfQoKLmZhLWRyYWZ0aW5nLWNvbXBhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2OCIKfQoKLmZhLWRyYWdvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ1Igp9CgouZmEtZHJhdy1wb2x5Z29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZWUiCn0KCi5mYS1kcmliYmJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTdkIgp9CgouZmEtZHJpYmJibGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTciCn0KCi5mYS1kcm9wYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNmIiCn0KCi5mYS1kcnVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjkiCn0KCi5mYS1kcnVtLXN0ZWVscGFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmEiCn0KCi5mYS1kcnVtc3RpY2stYml0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ3Igp9CgouZmEtZHJ1cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTkiCn0KCi5mYS1kdW1iYmVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDRiIgp9CgouZmEtZHVtcHN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5MyIKfQoKLmZhLWR1bXBzdGVyLWZpcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5NCIKfQoKLmZhLWR1bmdlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkOSIKfQoKLmZhLWR5YWxvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzk5Igp9CgouZmEtZWFybHliaXJkczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzlhIgp9CgouZmEtZWJheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGY0Igp9CgouZmEtZWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgyIgp9CgouZmEtZWRnZS1sZWdhY3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3OCIKfQoKLmZhLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0NCIKfQoKLmZhLWVnZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2ZiIgp9CgouZmEtZWplY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MiIKfQoKLmZhLWVsZW1lbnRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDMwIgp9CgouZmEtZWxsaXBzaXMtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQxIgp9CgouZmEtZWxsaXBzaXMtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQyIgp9CgouZmEtZWxsbzpiZWZvcmUgewogICAgY29udGVudDogIlxmNWYxIgp9CgouZmEtZW1iZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMyIKfQoKLmZhLWVtcGlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQxIgp9CgouZmEtZW52ZWxvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMCIKfQoKLmZhLWVudmVsb3BlLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiNiIKfQoKLmZhLWVudmVsb3BlLW9wZW4tdGV4dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU4Igp9CgouZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTkiCn0KCi5mYS1lbnZpcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5OSIKfQoKLmZhLWVxdWFsczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJjIgp9CgouZmEtZXJhc2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmQiCn0KCi5mYS1lcmxhbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZCIKfQoKLmZhLWV0aGVyZXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmUiCn0KCi5mYS1ldGhlcm5ldDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzk2Igp9CgouZmEtZXRzeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ3Igp9CgouZmEtZXVyby1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTMiCn0KCi5mYS1ldmVybm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODM5Igp9CgouZmEtZXhjaGFuZ2UtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjIiCn0KCi5mYS1leGNsYW1hdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTJhIgp9CgouZmEtZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmEiCn0KCi5mYS1leGNsYW1hdGlvbi10cmlhbmdsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDcxIgp9CgouZmEtZXhwYW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjUiCn0KCi5mYS1leHBhbmQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjQiCn0KCi5mYS1leHBhbmQtYXJyb3dzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzFlIgp9CgouZmEtZXhwZWRpdGVkc3NsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2UiCn0KCi5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVkIgp9CgouZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjAiCn0KCi5mYS1leWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2ZSIKfQoKLmZhLWV5ZS1kcm9wcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmIiCn0KCi5mYS1leWUtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MCIKfQoKLmZhLWZhY2Vib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWEiCn0KCi5mYS1mYWNlYm9vay1mOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWUiCn0KCi5mYS1mYWNlYm9vay1tZXNzZW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZiIKfQoKLmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDgyIgp9CgouZmEtZmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NjMiCn0KCi5mYS1mYW50YXN5LWZsaWdodC1nYW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmNmRjIgp9CgouZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQ5Igp9CgouZmEtZmFzdC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTAiCn0KCi5mYS1mYXVjZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNSIKfQoKLmZhLWZheDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFjIgp9CgouZmEtZmVhdGhlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJkIgp9CgouZmEtZmVhdGhlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YiIKfQoKLmZhLWZlZGV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTciCn0KCi5mYS1mZWRvcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5OCIKfQoKLmZhLWZlbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgyIgp9CgouZmEtZmlnaHRlci1qZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmYiIKfQoKLmZhLWZpZ21hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTkiCn0KCi5mYS1maWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWIiCn0KCi5mYS1maWxlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVjIgp9CgouZmEtZmlsZS1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzYiCn0KCi5mYS1maWxlLWF1ZGlvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzciCn0KCi5mYS1maWxlLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOSIKfQoKLmZhLWZpbGUtY29udHJhY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YyIKfQoKLmZhLWZpbGUtY3N2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZGQiCn0KCi5mYS1maWxlLWRvd25sb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmQiCn0KCi5mYS1maWxlLWV4Y2VsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzMiCn0KCi5mYS1maWxlLWV4cG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTZlIgp9CgouZmEtZmlsZS1pbWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM1Igp9CgouZmEtZmlsZS1pbXBvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2ZiIKfQoKLmZhLWZpbGUtaW52b2ljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcwIgp9CgouZmEtZmlsZS1pbnZvaWNlLWRvbGxhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcxIgp9CgouZmEtZmlsZS1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzciCn0KCi5mYS1maWxlLW1lZGljYWwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzgiCn0KCi5mYS1maWxlLXBkZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWMxIgp9CgouZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzQiCn0KCi5mYS1maWxlLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcyIgp9CgouZmEtZmlsZS1zaWduYXR1cmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3MyIKfQoKLmZhLWZpbGUtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzQiCn0KCi5mYS1maWxlLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzgiCn0KCi5mYS1maWxlLXdvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjMiIKfQoKLmZhLWZpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3NSIKfQoKLmZhLWZpbGwtZHJpcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc2Igp9CgouZmEtZmlsbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA4Igp9CgouZmEtZmlsdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjAiCn0KCi5mYS1maW5nZXJwcmludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc3Igp9CgouZmEtZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZkIgp9CgouZmEtZmlyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNCIKfQoKLmZhLWZpcmUtZXh0aW5ndWlzaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzQiCn0KCi5mYS1maXJlZm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjkiCn0KCi5mYS1maXJlZm94LWJyb3dzZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNyIKfQoKLmZhLWZpcnN0LWFpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDc5Igp9CgouZmEtZmlyc3Qtb3JkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMCIKfQoKLmZhLWZpcnN0LW9yZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBhIgp9CgouZmEtZmlyc3RkcmFmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ExIgp9CgouZmEtZmlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc4Igp9CgouZmEtZmlzdC1yYWlzZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkZSIKfQoKLmZhLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyNCIKfQoKLmZhLWZsYWctY2hlY2tlcmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWUiCn0KCi5mYS1mbGFnLXVzYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzRkIgp9CgouZmEtZmxhc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMyIKfQoKLmZhLWZsaWNrcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZlIgp9CgouZmEtZmxpcGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGQiCn0KCi5mYS1mbHVzaGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzkiCn0KCi5mYS1mbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNyIKfQoKLmZhLWZvbGRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdiIgp9CgouZmEtZm9sZGVyLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NWQiCn0KCi5mYS1mb2xkZXItb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdjIgp9CgouZmEtZm9sZGVyLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1ZSIKfQoKLmZhLWZvbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzMSIKfQoKLmZhLWZvbnQtYXdlc29tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI0Igp9CgouZmEtZm9udC1hd2Vzb21lLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVjIgp9CgouZmEtZm9udC1hd2Vzb21lLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNSIKfQoKLmZhLWZvbnQtYXdlc29tZS1sb2dvLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNiIKfQoKLmZhLWZvbnRpY29uczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgwIgp9CgouZmEtZm9udGljb25zLWZpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTIiCn0KCi5mYS1mb290YmFsbC1iYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGUiCn0KCi5mYS1mb3J0LWF3ZXNvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4NiIKfQoKLmZhLWZvcnQtYXdlc29tZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhMyIKfQoKLmZhLWZvcnVtYmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTEiCn0KCi5mYS1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGUiCn0KCi5mYS1mb3Vyc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODAiCn0KCi5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM1Igp9CgouZmEtZnJlZWJzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E0Igp9CgouZmEtZnJvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJlIgp9CgouZmEtZnJvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExOSIKfQoKLmZhLWZyb3duLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YSIKfQoKLmZhLWZ1bGNydW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwYiIKfQoKLmZhLWZ1bm5lbC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2MiIKfQoKLmZhLWZ1dGJvbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEtZ2FsYWN0aWMtcmVwdWJsaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwYyIKfQoKLmZhLWdhbGFjdGljLXNlbmF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBkIgp9CgouZmEtZ2FtZXBhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFiIgp9CgouZmEtZ2FzLXB1bXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyZiIKfQoKLmZhLWdhdmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTMiCn0KCi5mYS1nZW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNSIKfQoKLmZhLWdlbmRlcmxlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyZCIKfQoKLmZhLWdldC1wb2NrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NSIKfQoKLmZhLWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjAiCn0KCi5mYS1nZy1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MSIKfQoKLmZhLWdob3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZTIiCn0KCi5mYS1naWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmIiCn0KCi5mYS1naWZ0czpiZWZvcmUgewogICAgY29udGVudDogIlxmNzljIgp9CgouZmEtZ2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDMiCn0KCi5mYS1naXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDEiCn0KCi5mYS1naXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDIiCn0KCi5mYS1naXRodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YiIKfQoKLmZhLWdpdGh1Yi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExMyIKfQoKLmZhLWdpdGh1Yi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5MiIKfQoKLmZhLWdpdGtyYWtlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E2Igp9CgouZmEtZ2l0bGFiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTYiCn0KCi5mYS1naXR0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNiIKfQoKLmZhLWdsYXNzLWNoZWVyczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzlmIgp9CgouZmEtZ2xhc3MtbWFydGluaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDAwIgp9CgouZmEtZ2xhc3MtbWFydGluaS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YiIKfQoKLmZhLWdsYXNzLXdoaXNrZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhMCIKfQoKLmZhLWdsYXNzZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzMCIKfQoKLmZhLWdsaWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTUiCn0KCi5mYS1nbGlkZS1nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTYiCn0KCi5mYS1nbG9iZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFjIgp9CgouZmEtZ2xvYmUtYWZyaWNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2MiCn0KCi5mYS1nbG9iZS1hbWVyaWNhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdkIgp9CgouZmEtZ2xvYmUtYXNpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdlIgp9CgouZmEtZ2xvYmUtZXVyb3BlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTIiCn0KCi5mYS1nb2ZvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNyIKfQoKLmZhLWdvbGYtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDUwIgp9CgouZmEtZ29vZHJlYWRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTgiCn0KCi5mYS1nb29kcmVhZHMtZzpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E5Igp9CgouZmEtZ29vZ2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTAiCn0KCi5mYS1nb29nbGUtZHJpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhYSIKfQoKLmZhLWdvb2dsZS1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3OSIKfQoKLmZhLWdvb2dsZS1wbGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYWIiCn0KCi5mYS1nb29nbGUtcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMmIzIgp9CgouZmEtZ29vZ2xlLXBsdXMtZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ1Igp9CgouZmEtZ29vZ2xlLXBsdXMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDQiCn0KCi5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWUiCn0KCi5mYS1nb3B1cmFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NjQiCn0KCi5mYS1ncmFkdWF0aW9uLWNhcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTlkIgp9CgouZmEtZ3JhdGlwYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NCIKfQoKLmZhLWdyYXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkNiIKfQoKLmZhLWdyZWF0ZXItdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTMxIgp9CgouZmEtZ3JlYXRlci10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzIiCn0KCi5mYS1ncmltYWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2YiCn0KCi5mYS1ncmluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODAiCn0KCi5mYS1ncmluLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTgxIgp9CgouZmEtZ3Jpbi1iZWFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODIiCn0KCi5mYS1ncmluLWJlYW0tc3dlYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4MyIKfQoKLmZhLWdyaW4taGVhcnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODQiCn0KCi5mYS1ncmluLXNxdWludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTg1Igp9CgouZmEtZ3Jpbi1zcXVpbnQtdGVhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NiIKfQoKLmZhLWdyaW4tc3RhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NyIKfQoKLmZhLWdyaW4tdGVhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4OCIKfQoKLmZhLWdyaW4tdG9uZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODkiCn0KCi5mYS1ncmluLXRvbmd1ZS1zcXVpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YSIKfQoKLmZhLWdyaW4tdG9uZ3VlLXdpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YiIKfQoKLmZhLWdyaW4td2luazpiZWZvcmUgewogICAgY29udGVudDogIlxmNThjIgp9CgouZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGQiCn0KCi5mYS1ncmlwLWxpbmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTQiCn0KCi5mYS1ncmlwLWxpbmVzLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTUiCn0KCi5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGUiCn0KCi5mYS1ncmlwZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FjIgp9CgouZmEtZ3J1bnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZCIKfQoKLmZhLWd1aWxkZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZSIKfQoKLmZhLWd1aXRhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2E2Igp9CgouZmEtZ3VscDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FlIgp9CgouZmEtaC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZCIKfQoKLmZhLWhhY2tlci1uZXdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS1oYWNrZXItbmV3cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZiIKfQoKLmZhLWhhY2tlcnJhbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVmNyIKfQoKLmZhLWhhbWJ1cmdlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmODA1Igp9CgouZmEtaGFtbWVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZTMiCn0KCi5mYS1oYW1zYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY1Igp9CgouZmEtaGFuZC1ob2xkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YmQiCn0KCi5mYS1oYW5kLWhvbGRpbmctaGVhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRiZSIKfQoKLmZhLWhhbmQtaG9sZGluZy1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNWMiCn0KCi5mYS1oYW5kLWhvbGRpbmctdXNkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YzAiCn0KCi5mYS1oYW5kLWhvbGRpbmctd2F0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMSIKfQoKLmZhLWhhbmQtbGl6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTgiCn0KCi5mYS1oYW5kLW1pZGRsZS1maW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwNiIKfQoKLmZhLWhhbmQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1NiIKfQoKLmZhLWhhbmQtcGVhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YiIKfQoKLmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE3Igp9CgouZmEtaGFuZC1wb2ludC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTUiCn0KCi5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTQiCn0KCi5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTYiCn0KCi5mYS1oYW5kLXBvaW50ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YSIKfQoKLmZhLWhhbmQtcm9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU1Igp9CgouZmEtaGFuZC1zY2lzc29yczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU3Igp9CgouZmEtaGFuZC1zcGFya2xlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDVkIgp9CgouZmEtaGFuZC1zcG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU5Igp9CgouZmEtaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMiIKfQoKLmZhLWhhbmRzLWhlbHBpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjNCIKfQoKLmZhLWhhbmRzLXdhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1ZSIKfQoKLmZhLWhhbmRzaGFrZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI1Igp9CgouZmEtaGFuZHNoYWtlLWFsdC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDVmIgp9CgouZmEtaGFuZHNoYWtlLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjAiCn0KCi5mYS1oYW51a2lhaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU2Igp9CgouZmEtaGFyZC1oYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwNyIKfQoKLmZhLWhhc2h0YWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MiIKfQoKLmZhLWhhdC1jb3dib3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhjMCIKfQoKLmZhLWhhdC1jb3dib3ktc2lkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGMxIgp9CgouZmEtaGF0LXdpemFyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU4Igp9CgouZmEtaGRkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTAiCn0KCi5mYS1oZWFkLXNpZGUtY291Z2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MSIKfQoKLmZhLWhlYWQtc2lkZS1jb3VnaC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDYyIgp9CgouZmEtaGVhZC1zaWRlLW1hc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MyIKfQoKLmZhLWhlYWQtc2lkZS12aXJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY0Igp9CgouZmEtaGVhZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWRjIgp9CgouZmEtaGVhZHBob25lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI1Igp9CgouZmEtaGVhZHBob25lcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4ZiIKfQoKLmZhLWhlYWRzZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MCIKfQoKLmZhLWhlYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDQiCn0KCi5mYS1oZWFydC1icm9rZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhOSIKfQoKLmZhLWhlYXJ0YmVhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjFlIgp9CgouZmEtaGVsaWNvcHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTMzIgp9CgouZmEtaGlnaGxpZ2h0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MSIKfQoKLmZhLWhpa2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmVjIgp9CgouZmEtaGlwcG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZlZCIKfQoKLmZhLWhpcHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1MiIKfQoKLmZhLWhpcmUtYS1oZWxwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMCIKfQoKLmZhLWhpc3Rvcnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkYSIKfQoKLmZhLWhpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZiIKfQoKLmZhLWhvY2tleS1wdWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTMiCn0KCi5mYS1ob2xseS1iZXJyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FhIgp9CgouZmEtaG9tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE1Igp9CgouZmEtaG9vbGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNyIKfQoKLmZhLWhvcm5iaWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTIiCn0KCi5mYS1ob3JzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmYwIgp9CgouZmEtaG9yc2UtaGVhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FiIgp9CgouZmEtaG9zcGl0YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmOCIKfQoKLmZhLWhvc3BpdGFsLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDdkIgp9CgouZmEtaG9zcGl0YWwtc3ltYm9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0N2UiCn0KCi5mYS1ob3NwaXRhbC11c2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MGQiCn0KCi5mYS1ob3QtdHViOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTMiCn0KCi5mYS1ob3Rkb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwZiIKfQoKLmZhLWhvdGVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTQiCn0KCi5mYS1ob3RqYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMSIKfQoKLmZhLWhvdXJnbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU0Igp9CgouZmEtaG91cmdsYXNzLWVuZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUzIgp9CgouZmEtaG91cmdsYXNzLWhhbGY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1MiIKfQoKLmZhLWhvdXJnbGFzcy1zdGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUxIgp9CgouZmEtaG91c2UtZGFtYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZjEiCn0KCi5mYS1ob3VzZS11c2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjUiCn0KCi5mYS1ob3V6ejpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdjIgp9CgouZmEtaHJ5dm5pYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmYyIgp9CgouZmEtaHRtbDU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYiIKfQoKLmZhLWh1YnNwb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMiIKfQoKLmZhLWktY3Vyc29yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDYiCn0KCi5mYS1pY2UtY3JlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxMCIKfQoKLmZhLWljaWNsZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhZCIKfQoKLmZhLWljb25zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NmQiCn0KCi5mYS1pZC1iYWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMxIgp9CgouZmEtaWQtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMyIgp9CgouZmEtaWQtY2FyZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3ZiIKfQoKLmZhLWlkZWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTMiCn0KCi5mYS1pZ2xvbzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FlIgp9CgouZmEtaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZSIKfQoKLmZhLWltYWdlczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzAyIgp9CgouZmEtaW1kYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ4Igp9CgouZmEtaW5ib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxYyIKfQoKLmZhLWluZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNjIgp9CgouZmEtaW5kdXN0cnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NSIKfQoKLmZhLWluZmluaXR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzQiCn0KCi5mYS1pbmZvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjkiCn0KCi5mYS1pbmZvLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDVhIgp9CgouZmEtaW5ub3NvZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MCIKfQoKLmZhLWluc3RhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZkIgp9CgouZmEtaW5zdGFncmFtLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU1Igp9CgouZmEtaW5zdGFsb2Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MSIKfQoKLmZhLWludGVyY29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YWYiCn0KCi5mYS1pbnRlcm5ldC1leHBsb3JlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZiIgp9CgouZmEtaW52aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiMCIKfQoKLmZhLWlveGhvc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwOCIKfQoKLmZhLWl0YWxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMzIgp9CgouZmEtaXRjaC1pbzpiZWZvcmUgewogICAgY29udGVudDogIlxmODNhIgp9CgouZmEtaXR1bmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjQiCn0KCi5mYS1pdHVuZXMtbm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I1Igp9CgouZmEtamF2YTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGU0Igp9CgouZmEtamVkaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY5Igp9CgouZmEtamVkaS1vcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBlIgp9CgouZmEtamVua2luczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I2Igp9CgouZmEtamlyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2IxIgp9CgouZmEtam9nZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiNyIKfQoKLmZhLWpvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTUiCn0KCi5mYS1qb29tbGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhYSIKfQoKLmZhLWpvdXJuYWwtd2hpbGxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmEiCn0KCi5mYS1qczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I4Igp9CgouZmEtanMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjkiCn0KCi5mYS1qc2ZpZGRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNjIgp9CgouZmEta2FhYmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2YiIKfQoKLmZhLWthZ2dsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZhIgp9CgouZmEta2V5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODQiCn0KCi5mYS1rZXliYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjUiCn0KCi5mYS1rZXlib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFjIgp9CgouZmEta2V5Y2RuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmEiCn0KCi5mYS1raGFuZGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2ZCIKfQoKLmZhLWtpY2tzdGFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmIiCn0KCi5mYS1raWNrc3RhcnRlci1rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmMiCn0KCi5mYS1raXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTYiCn0KCi5mYS1raXNzLWJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5NyIKfQoKLmZhLWtpc3Mtd2luay1oZWFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk4Igp9CgouZmEta2l3aS1iaXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzUiCn0KCi5mYS1rb3J2dWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZiIKfQoKLmZhLWxhbmRtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmYiCn0KCi5mYS1sYW5ndWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFiIgp9CgouZmEtbGFwdG9wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDkiCn0KCi5mYS1sYXB0b3AtY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZjIgp9CgouZmEtbGFwdG9wLWhvdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjYiCn0KCi5mYS1sYXB0b3AtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmODEyIgp9CgouZmEtbGFyYXZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JkIgp9CgouZmEtbGFzdGZtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDIiCn0KCi5mYS1sYXN0Zm0tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDMiCn0KCi5mYS1sYXVnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk5Igp9CgouZmEtbGF1Z2gtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlhIgp9CgouZmEtbGF1Z2gtc3F1aW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWIiCn0KCi5mYS1sYXVnaC13aW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWMiCn0KCi5mYS1sYXllci1ncm91cDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZkIgp9CgouZmEtbGVhZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZjIgp9CgouZmEtbGVhbnB1YjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEyIgp9CgouZmEtbGVtb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5NCIKfQoKLmZhLWxlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxZCIKfQoKLmZhLWxlc3MtdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM2Igp9CgouZmEtbGVzcy10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzciCn0KCi5mYS1sZXZlbC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JlIgp9CgouZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmYiCn0KCi5mYS1saWZlLXJpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZCIKfQoKLmZhLWxpZ2h0YnVsYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGViIgp9CgouZmEtbGluZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2MwIgp9CgouZmEtbGluazpiZWZvcmUgewogICAgY29udGVudDogIlxmMGMxIgp9CgouZmEtbGlua2VkaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4YyIKfQoKLmZhLWxpbmtlZGluLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTEiCn0KCi5mYS1saW5vZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiOCIKfQoKLmZhLWxpbnV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2MiCn0KCi5mYS1saXJhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NSIKfQoKLmZhLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzYSIKfQoKLmZhLWxpc3QtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjIiCn0KCi5mYS1saXN0LW9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2IiCn0KCi5mYS1saXN0LXVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2EiCn0KCi5mYS1sb2NhdGlvbi1hcnJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI0Igp9CgouZmEtbG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDIzIgp9CgouZmEtbG9jay1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzEiCn0KCi5mYS1sb25nLWFycm93LWFsdC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDkiCn0KCi5mYS1sb25nLWFycm93LWFsdC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMGEiCn0KCi5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzBiIgp9CgouZmEtbG9uZy1hcnJvdy1hbHQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYyIKfQoKLmZhLWxvdy12aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOCIKfQoKLmZhLWx1Z2dhZ2UtY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlkIgp9CgouZmEtbHVuZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYwNCIKfQoKLmZhLWx1bmdzLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjciCn0KCi5mYS1seWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzMiCn0KCi5mYS1tYWdlbnRvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzQiCn0KCi5mYS1tYWdpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQwIgp9CgouZmEtbWFnbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzYiCn0KCi5mYS1tYWlsLWJ1bGs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NCIKfQoKLmZhLW1haWxjaGltcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTllIgp9CgouZmEtbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgzIgp9CgouZmEtbWFuZGFsb3JpYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwZiIKfQoKLmZhLW1hcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc5Igp9CgouZmEtbWFwLW1hcmtlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlmIgp9CgouZmEtbWFwLW1hcmtlZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhMCIKfQoKLmZhLW1hcC1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MSIKfQoKLmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzUiCn0KCi5mYS1tYXAtcGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzYiCn0KCi5mYS1tYXAtc2lnbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NyIKfQoKLmZhLW1hcmtkb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MGYiCn0KCi5mYS1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhMSIKfQoKLmZhLW1hcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMiIKfQoKLmZhLW1hcnMtZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMjciCn0KCi5mYS1tYXJzLXN0cm9rZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI5Igp9CgouZmEtbWFycy1zdHJva2UtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJiIgp9CgouZmEtbWFycy1zdHJva2UtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJhIgp9CgouZmEtbWFzazpiZWZvcmUgewogICAgY29udGVudDogIlxmNmZhIgp9CgouZmEtbWFzdG9kb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmNiIKfQoKLmZhLW1heGNkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM2Igp9CgouZmEtbWRiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4Y2EiCn0KCi5mYS1tZWRhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEyIgp9CgouZmEtbWVkYXBwczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M2Igp9CgouZmEtbWVkaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2EiCn0KCi5mYS1tZWRpdW0tbTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M3Igp9CgouZmEtbWVka2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZmEiCn0KCi5mYS1tZWRydDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M4Igp9CgouZmEtbWVldHVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZTAiCn0KCi5mYS1tZWdhcG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEzIgp9CgouZmEtbWVoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWEiCn0KCi5mYS1tZWgtYmxhbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNCIKfQoKLmZhLW1laC1yb2xsaW5nLWV5ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNSIKfQoKLmZhLW1lbW9yeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM4Igp9CgouZmEtbWVuZGVsZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiMyIKfQoKLmZhLW1lbm9yYWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NiIKfQoKLmZhLW1lcmN1cnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMyIKfQoKLmZhLW1ldGVvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzUzIgp9CgouZmEtbWljcm9ibG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMWEiCn0KCi5mYS1taWNyb2NoaXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYiIKfQoKLmZhLW1pY3JvcGhvbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzMCIKfQoKLmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzkiCn0KCi5mYS1taWNyb3Bob25lLWFsdC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM5Igp9CgouZmEtbWljcm9waG9uZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTMxIgp9CgouZmEtbWljcm9zY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjEwIgp9CgouZmEtbWljcm9zb2Z0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2EiCn0KCi5mYS1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDY4Igp9CgouZmEtbWludXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTYiCn0KCi5mYS1taW51cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NiIKfQoKLmZhLW1pdHRlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I1Igp9CgouZmEtbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2IiCn0KCi5mYS1taXhjbG91ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg5Igp9CgouZmEtbWl4ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1NiIKfQoKLmZhLW1penVuaTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2NjIgp9CgouZmEtbW9iaWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGIiCn0KCi5mYS1tb2JpbGUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2QiCn0KCi5mYS1tb2R4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyODUiCn0KCi5mYS1tb25lcm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMCIKfQoKLmZhLW1vbmV5LWJpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkNiIKfQoKLmZhLW1vbmV5LWJpbGwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDEiCn0KCi5mYS1tb25leS1iaWxsLXdhdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYSIKfQoKLmZhLW1vbmV5LWJpbGwtd2F2ZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYiIKfQoKLmZhLW1vbmV5LWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1M2MiCn0KCi5mYS1tb25leS1jaGVjay1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZCIKfQoKLmZhLW1vbnVtZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTYiCn0KCi5mYS1tb29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODYiCn0KCi5mYS1tb3J0YXItcGVzdGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTciCn0KCi5mYS1tb3NxdWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OCIKfQoKLmZhLW1vdG9yY3ljbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxYyIKfQoKLmZhLW1vdW50YWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZmMiCn0KCi5mYS1tb3VzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGNjIgp9CgouZmEtbW91c2UtcG9pbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ1Igp9CgouZmEtbXVnLWhvdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I2Igp9CgouZmEtbXVzaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwMSIKfQoKLmZhLW5hcHN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMiIKfQoKLmZhLW5lb3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxMiIKfQoKLmZhLW5ldHdvcmstd2lyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZmZiIKfQoKLmZhLW5ldXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJjIgp9CgouZmEtbmV3c3BhcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWEiCn0KCi5mYS1uaW1ibHI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhOCIKfQoKLmZhLW5vZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxOSIKfQoKLmZhLW5vZGUtanM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMyIKfQoKLmZhLW5vdC1lcXVhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTNlIgp9CgouZmEtbm90ZXMtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDgxIgp9CgouZmEtbnBtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDQiCn0KCi5mYS1uczg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNSIKfQoKLmZhLW51dHJpdGlvbml4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDYiCn0KCi5mYS1vYmplY3QtZ3JvdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NyIKfQoKLmZhLW9iamVjdC11bmdyb3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDgiCn0KCi5mYS1vY3RvcHVzLWRlcGxveTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDgyIgp9CgouZmEtb2Rub2tsYXNzbmlraTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjYzIgp9CgouZmEtb2Rub2tsYXNzbmlraS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NCIKfQoKLmZhLW9pbC1jYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxMyIKfQoKLmZhLW9sZC1yZXB1YmxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEwIgp9CgouZmEtb206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OSIKfQoKLmZhLW9wZW5jYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2QiCn0KCi5mYS1vcGVuaWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YiIKfQoKLmZhLW9wZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmEiCn0KCi5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2MiCn0KCi5mYS1vcmNpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGQyIgp9CgouZmEtb3NpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWEiCn0KCi5mYS1vdHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzAwIgp9CgouZmEtb3V0ZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNiIgp9CgouZmEtcGFnZTQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNyIKfQoKLmZhLXBhZ2VsaW5lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMThjIgp9CgouZmEtcGFnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNSIKfQoKLmZhLXBhaW50LWJydXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmMiCn0KCi5mYS1wYWludC1yb2xsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYSIKfQoKLmZhLXBhbGV0dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZiIKfQoKLmZhLXBhbGZlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Q4Igp9CgouZmEtcGFsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODIiCn0KCi5mYS1wYXBlci1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4Igp9CgouZmEtcGFwZXJjbGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzYiCn0KCi5mYS1wYXJhY2h1dGUtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0Y2QiCn0KCi5mYS1wYXJhZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkZCIKfQoKLmZhLXBhcmtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0MCIKfQoKLmZhLXBhc3Nwb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YWIiCn0KCi5mYS1wYXN0YWZhcmlhbmlzbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdiIgp9CgouZmEtcGFzdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlYSIKfQoKLmZhLXBhdHJlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkOSIKfQoKLmZhLXBhdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGMiCn0KCi5mYS1wYXVzZS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YiIKfQoKLmZhLXBhdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWIwIgp9CgouZmEtcGF5cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWQiCn0KCi5mYS1wZWFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdjIgp9CgouZmEtcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDQiCn0KCi5mYS1wZW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDUiCn0KCi5mYS1wZW4tZmFuY3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYyIKfQoKLmZhLXBlbi1uaWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhZCIKfQoKLmZhLXBlbi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YiIKfQoKLmZhLXBlbmNpbC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwMyIKfQoKLmZhLXBlbmNpbC1ydWxlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFlIgp9CgouZmEtcGVubnktYXJjYWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MDQiCn0KCi5mYS1wZW9wbGUtYXJyb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjgiCn0KCi5mYS1wZW9wbGUtY2Fycnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjZSIKfQoKLmZhLXBlcHBlci1ob3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNiIKfQoKLmZhLXBlcmJ5dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MyIKfQoKLmZhLXBlcmNlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NSIKfQoKLmZhLXBlcmNlbnRhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0MSIKfQoKLmZhLXBlcmlzY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RhIgp9CgouZmEtcGVyc29uLWJvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NTYiCn0KCi5mYS1waGFicmljYXRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RiIgp9CgouZmEtcGhvZW5peC1mcmFtZXdvcms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkYyIKfQoKLmZhLXBob2VuaXgtc3F1YWRyb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMSIKfQoKLmZhLXBob25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTUiCn0KCi5mYS1waG9uZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3OSIKfQoKLmZhLXBob25lLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGQiCn0KCi5mYS1waG9uZS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5OCIKfQoKLmZhLXBob25lLXNxdWFyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3YiIKfQoKLmZhLXBob25lLXZvbHVtZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEwIgp9CgouZmEtcGhvdG8tdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3YyIKfQoKLmZhLXBocDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDU3Igp9CgouZmEtcGllZC1waXBlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmFlIgp9CgouZmEtcGllZC1waXBlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhOCIKfQoKLmZhLXBpZWQtcGlwZXItaGF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTUiCn0KCi5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTciCn0KCi5mYS1waWVkLXBpcGVyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDFlIgp9CgouZmEtcGlnZ3ktYmFuazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQzIgp9CgouZmEtcGlsbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NCIKfQoKLmZhLXBpbnRlcmVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQyIgp9CgouZmEtcGludGVyZXN0LXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzMSIKfQoKLmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkMyIKfQoKLmZhLXBpenphLXNsaWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MTgiCn0KCi5mYS1wbGFjZS1vZi13b3JzaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2N2YiCn0KCi5mYS1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDcyIgp9CgouZmEtcGxhbmUtYXJyaXZhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFmIgp9CgouZmEtcGxhbmUtZGVwYXJ0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjAiCn0KCi5mYS1wbGFuZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY5Igp9CgouZmEtcGxheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDRiIgp9CgouZmEtcGxheS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NCIKfQoKLmZhLXBsYXlzdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGYiCn0KCi5mYS1wbHVnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTYiCn0KCi5mYS1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjciCn0KCi5mYS1wbHVzLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU1Igp9CgouZmEtcGx1cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZSIKfQoKLmZhLXBvZGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjZSIKfQoKLmZhLXBvbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4MSIKfQoKLmZhLXBvbGwtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjgyIgp9CgouZmEtcG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZmUiCn0KCi5mYS1wb28tc3Rvcm06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc1YSIKfQoKLmZhLXBvb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxOSIKfQoKLmZhLXBvcnRyYWl0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTAiCn0KCi5mYS1wb3VuZC1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTQiCn0KCi5mYS1wb3dlci1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMSIKfQoKLmZhLXByYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4MyIKfQoKLmZhLXByYXlpbmctaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4NCIKfQoKLmZhLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIxIgp9CgouZmEtcHJlc2NyaXB0aW9uLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDg1Igp9CgouZmEtcHJlc2NyaXB0aW9uLWJvdHRsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NiIKfQoKLmZhLXByaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmYiCn0KCi5mYS1wcm9jZWR1cmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODciCn0KCi5mYS1wcm9kdWN0LWh1bnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4OCIKfQoKLmZhLXByb2plY3QtZGlhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQyIgp9CgouZmEtcHVtcC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNmEiCn0KCi5mYS1wdW1wLXNvYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2YiIKfQoKLmZhLXB1c2hlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2UxIgp9CgouZmEtcHV6emxlLXBpZWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmUiCn0KCi5mYS1weXRob246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMiIKfQoKLmZhLXFxOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDYiCn0KCi5mYS1xcmNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyOSIKfQoKLmZhLXF1ZXN0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjgiCn0KCi5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1OSIKfQoKLmZhLXF1aWRkaXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDU4Igp9CgouZmEtcXVpbnNjYXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTkiCn0KCi5mYS1xdW9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM0Igp9CgouZmEtcXVvdGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTBkIgp9CgouZmEtcXVvdGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwZSIKfQoKLmZhLXF1cmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODciCn0KCi5mYS1yLXByb2plY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmNyIKfQoKLmZhLXJhZGlhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I5Igp9CgouZmEtcmFkaWF0aW9uLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2JhIgp9CgouZmEtcmFpbmJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzViIgp9CgouZmEtcmFuZG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzQiCn0KCi5mYS1yYXNwYmVycnktcGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYiIKfQoKLmZhLXJhdmVscnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkOSIKfQoKLmZhLXJlYWN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWIiCn0KCi5mYS1yZWFjdGV1cm9wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVkIgp9CgouZmEtcmVhZG1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZDUiCn0KCi5mYS1yZWJlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQwIgp9CgouZmEtcmVjZWlwdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQzIgp9CgouZmEtcmVjb3JkLXZpbnlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ZDkiCn0KCi5mYS1yZWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjgiCn0KCi5mYS1yZWQtcml2ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMyIKfQoKLmZhLXJlZGRpdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWExIgp9CgouZmEtcmVkZGl0LWFsaWVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyODEiCn0KCi5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTIiCn0KCi5mYS1yZWRoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYyIKfQoKLmZhLXJlZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxZSIKfQoKLmZhLXJlZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjkiCn0KCi5mYS1yZWdpc3RlcmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWQiCn0KCi5mYS1yZW1vdmUtZm9ybWF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4N2QiCn0KCi5mYS1yZW5yZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4YiIKfQoKLmZhLXJlcGx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTUiCn0KCi5mYS1yZXBseS1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMiIKfQoKLmZhLXJlcGx5ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U2Igp9CgouZmEtcmVwdWJsaWNhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVlIgp9CgouZmEtcmVzZWFyY2hnYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjgiCn0KCi5mYS1yZXNvbHZpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNyIKfQoKLmZhLXJlc3Ryb29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmQiCn0KCi5mYS1yZXR3ZWV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzkiCn0KCi5mYS1yZXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViMiIKfQoKLmZhLXJpYmJvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ2Igp9CgouZmEtcmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBiIgp9CgouZmEtcm9hZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE4Igp9CgouZmEtcm9ib3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NCIKfQoKLmZhLXJvY2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM1Igp9CgouZmEtcm9ja2V0Y2hhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U4Igp9CgouZmEtcm9ja3JtczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U5Igp9CgouZmEtcm91dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkNyIKfQoKLmZhLXJzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDllIgp9CgouZmEtcnNzLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQzIgp9CgouZmEtcnVibGUtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU4Igp9CgouZmEtcnVsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NSIKfQoKLmZhLXJ1bGVyLWNvbWJpbmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDYiCn0KCi5mYS1ydWxlci1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDciCn0KCi5mYS1ydWxlci12ZXJ0aWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQ4Igp9CgouZmEtcnVubmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBjIgp9CgouZmEtcnVwZWUtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU2Igp9CgouZmEtcnVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdhIgp9CgouZmEtc2FkLWNyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIzIgp9CgouZmEtc2FkLXRlYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNCIKfQoKLmZhLXNhZmFyaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjY3Igp9CgouZmEtc2FsZXNmb3JjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNiIgp9CgouZmEtc2FzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFlIgp9CgouZmEtc2F0ZWxsaXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmYiCn0KCi5mYS1zYXRlbGxpdGUtZGlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MwIgp9CgouZmEtc2F2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM3Igp9CgouZmEtc2NobGl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZWEiCn0KCi5mYS1zY2hvb2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0OSIKfQoKLmZhLXNjcmV3ZHJpdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGEiCn0KCi5mYS1zY3JpYmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YSIKfQoKLmZhLXNjcm9sbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBlIgp9CgouZmEtc2QtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MyIgp9CgouZmEtc2VhcmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDIiCn0KCi5mYS1zZWFyY2gtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODgiCn0KCi5mYS1zZWFyY2gtbG9jYXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4OSIKfQoKLmZhLXNlYXJjaC1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDEwIgp9CgouZmEtc2VhcmNoLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZSIKfQoKLmZhLXNlYXJjaGVuZ2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZWIiCn0KCi5mYS1zZWVkbGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ4Igp9CgouZmEtc2VsbGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYSIKfQoKLmZhLXNlbGxzeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEzIgp9CgouZmEtc2VydmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzMiCn0KCi5mYS1zZXJ2aWNlc3RhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlYyIKfQoKLmZhLXNoYXBlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjFmIgp9CgouZmEtc2hhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2NCIKfQoKLmZhLXNoYXJlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUwIgp9CgouZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUxIgp9CgouZmEtc2hhcmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNGQiCn0KCi5mYS1zaGVrZWwtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBiIgp9CgouZmEtc2hpZWxkLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VkIgp9CgouZmEtc2hpZWxkLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNmMiCn0KCi5mYS1zaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWEiCn0KCi5mYS1zaGlwcGluZy1mYXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OGIiCn0KCi5mYS1zaGlydHNpbmJ1bGs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNCIKfQoKLmZhLXNob2UtcHJpbnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGIiCn0KCi5mYS1zaG9waWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNTciCn0KCi5mYS1zaG9wcGluZy1iYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MCIKfQoKLmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjkxIgp9CgouZmEtc2hvcHBpbmctY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdhIgp9CgouZmEtc2hvcHdhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNSIKfQoKLmZhLXNob3dlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNjIgp9CgouZmEtc2h1dHRsZS12YW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNiIKfQoKLmZhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkOSIKfQoKLmZhLXNpZ24taW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjYiCn0KCi5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTciCn0KCi5mYS1zaWduLW91dC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmNSIKfQoKLmZhLXNpZ25hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDEyIgp9CgouZmEtc2lnbmF0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjciCn0KCi5mYS1zaW0tY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2M0Igp9CgouZmEtc2ltcGx5YnVpbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNSIKfQoKLmZhLXNpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2ZCIKfQoKLmZhLXNpc3RyaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlZSIKfQoKLmZhLXNpdGVtYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlOCIKfQoKLmZhLXNpdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMiIKfQoKLmZhLXNrYXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjNSIKfQoKLmZhLXNrZXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2M2Igp9CgouZmEtc2tpaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YzkiCn0KCi5mYS1za2lpbmctbm9yZGljOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3Y2EiCn0KCi5mYS1za3VsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRjIgp9CgouZmEtc2t1bGwtY3Jvc3Nib25lczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzE0Igp9CgouZmEtc2t5YXRsYXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNiIKfQoKLmZhLXNreXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2UiCn0KCi5mYS1zbGFjazpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk4Igp9CgouZmEtc2xhY2staGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VmIgp9CgouZmEtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxNSIKfQoKLmZhLXNsZWlnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NjIgp9CgouZmEtc2xpZGVycy1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZGUiCn0KCi5mYS1zbGlkZXNoYXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTciCn0KCi5mYS1zbWlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE4Igp9CgouZmEtc21pbGUtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWI4Igp9CgouZmEtc21pbGUtd2luazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGRhIgp9CgouZmEtc21vZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVmIgp9CgouZmEtc21va2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhkIgp9CgouZmEtc21va2luZy1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZCIKfQoKLmZhLXNtczpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NkIgp9CgouZmEtc25hcGNoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYiIKfQoKLmZhLXNuYXBjaGF0LWdob3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYWMiCn0KCi5mYS1zbmFwY2hhdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhZCIKfQoKLmZhLXNub3dib2FyZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NlIgp9CgouZmEtc25vd2ZsYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGMiCn0KCi5mYS1zbm93bWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDAiCn0KCi5mYS1zbm93cGxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2QyIgp9CgouZmEtc29hcDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDZlIgp9CgouZmEtc29ja3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5NiIKfQoKLmZhLXNvbGFyLXBhbmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmEiCn0KCi5mYS1zb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGMiCn0KCi5mYS1zb3J0LWFscGhhLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZCIKfQoKLmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4MSIKfQoKLmZhLXNvcnQtYWxwaGEtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZSIKfQoKLmZhLXNvcnQtYWxwaGEtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODIiCn0KCi5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjAiCn0KCi5mYS1zb3J0LWFtb3VudC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg0Igp9CgouZmEtc29ydC1hbW91bnQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MSIKfQoKLmZhLXNvcnQtYW1vdW50LXVwLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg1Igp9CgouZmEtc29ydC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGQiCn0KCi5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTYyIgp9CgouZmEtc29ydC1udW1lcmljLWRvd24tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODYiCn0KCi5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MyIKfQoKLmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4NyIKfQoKLmZhLXNvcnQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkZSIKfQoKLmZhLXNvdW5kY2xvdWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiZSIKfQoKLmZhLXNvdXJjZXRyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkMyIKfQoKLmZhLXNwYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJiIgp9CgouZmEtc3BhY2Utc2h1dHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk3Igp9CgouZmEtc3BlYWthcDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2YzIgp9CgouZmEtc3BlYWtlci1kZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4M2MiCn0KCi5mYS1zcGVsbC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmODkxIgp9CgouZmEtc3BpZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MTciCn0KCi5mYS1zcGlubmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTAiCn0KCi5mYS1zcGxvdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmMiCn0KCi5mYS1zcG90aWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmMiCn0KCi5mYS1zcHJheS1jYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZCIKfQoKLmZhLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM4Igp9CgouZmEtc3F1YXJlLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1YyIKfQoKLmZhLXNxdWFyZS1yb290LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjk4Igp9CgouZmEtc3F1YXJlc3BhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZSIKfQoKLmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOGQiCn0KCi5mYS1zdGFjay1vdmVyZmxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZjIgp9CgouZmEtc3RhY2twYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDIiCn0KCi5mYS1zdGFtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJmIgp9CgouZmEtc3RhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA1Igp9CgouZmEtc3Rhci1hbmQtY3Jlc2NlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5OSIKfQoKLmZhLXN0YXItaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEtc3Rhci1oYWxmLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWMwIgp9CgouZmEtc3Rhci1vZi1kYXZpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjlhIgp9CgouZmEtc3Rhci1vZi1saWZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MjEiCn0KCi5mYS1zdGF5bGlua2VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjUiCn0KCi5mYS1zdGVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWI2Igp9CgouZmEtc3RlYW0tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjciCn0KCi5mYS1zdGVhbS1zeW1ib2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmNiIKfQoKLmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0OCIKfQoKLmZhLXN0ZXAtZm9yd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDUxIgp9CgouZmEtc3RldGhvc2NvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMSIKfQoKLmZhLXN0aWNrZXItbXVsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Y3Igp9CgouZmEtc3RpY2t5LW5vdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0OSIKfQoKLmZhLXN0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0ZCIKfQoKLmZhLXN0b3AtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOGQiCn0KCi5mYS1zdG9wd2F0Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmMiIKfQoKLmZhLXN0b3B3YXRjaC0yMDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDZmIgp9CgouZmEtc3RvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZSIKfQoKLmZhLXN0b3JlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRmIgp9CgouZmEtc3RvcmUtYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzAiCn0KCi5mYS1zdG9yZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcxIgp9CgouZmEtc3RyYXZhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjgiCn0KCi5mYS1zdHJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MCIKfQoKLmZhLXN0cmVldC12aWV3OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWQiCn0KCi5mYS1zdHJpa2V0aHJvdWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2MiCn0KCi5mYS1zdHJpcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyOSIKfQoKLmZhLXN0cmlwZS1zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmEiCn0KCi5mYS1zdHJvb3B3YWZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTUxIgp9CgouZmEtc3R1ZGlvdmluYXJpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjgiCn0KCi5mYS1zdHVtYmxldXBvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE0Igp9CgouZmEtc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTMiCn0KCi5mYS1zdWJzY3JpcHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyYyIKfQoKLmZhLXN1YndheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM5Igp9CgouZmEtc3VpdGNhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMiIKfQoKLmZhLXN1aXRjYXNlLXJvbGxpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjMSIKfQoKLmZhLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg1Igp9CgouZmEtc3VwZXJwb3dlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkZCIKfQoKLmZhLXN1cGVyc2NyaXB0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmIiCn0KCi5mYS1zdXBwbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmOSIKfQoKLmZhLXN1cnByaXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzIiCn0KCi5mYS1zdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDYiCn0KCi5mYS1zd2F0Y2hib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzMiCn0KCi5mYS1zd2lmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGUxIgp9CgouZmEtc3dpbW1lcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM0Igp9CgouZmEtc3dpbW1pbmctcG9vbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM1Igp9CgouZmEtc3ltZm9ueTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNkIgp9CgouZmEtc3luYWdvZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWIiCn0KCi5mYS1zeW5jOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjEiCn0KCi5mYS1zeW5jLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmYxIgp9CgouZmEtc3lyaW5nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhlIgp9CgouZmEtdGFibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjZSIKfQoKLmZhLXRhYmxlLXRlbm5pczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDVkIgp9CgouZmEtdGFibGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGEiCn0KCi5mYS10YWJsZXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZmEiCn0KCi5mYS10YWJsZXRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTAiCn0KCi5mYS10YWNob21ldGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZkIgp9CgouZmEtdGFnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmIiCn0KCi5mYS10YWdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmMiCn0KCi5mYS10YXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZGIiCn0KCi5mYS10YXNrczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFlIgp9CgouZmEtdGF4aTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWJhIgp9CgouZmEtdGVhbXNwZWFrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjkiCn0KCi5mYS10ZWV0aDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjJlIgp9CgouZmEtdGVldGgtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNjJmIgp9CgouZmEtdGVsZWdyYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjNiIKfQoKLmZhLXRlbGVncmFtLXBsYW5lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZmUiCn0KCi5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NjkiCn0KCi5mYS10ZW1wZXJhdHVyZS1sb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc2YiIKfQoKLmZhLXRlbmNlbnQtd2VpYm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkNSIKfQoKLmZhLXRlbmdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDciCn0KCi5mYS10ZXJtaW5hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTIwIgp9CgouZmEtdGV4dC1oZWlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzNCIKfQoKLmZhLXRleHQtd2lkdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzNSIKfQoKLmZhLXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMGEiCn0KCi5mYS10aC1sYXJnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA5Igp9CgouZmEtdGgtbGlzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDBiIgp9CgouZmEtdGhlLXJlZC15ZXRpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWQiCn0KCi5mYS10aGVhdGVyLW1hc2tzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MzAiCn0KCi5mYS10aGVtZWNvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzYiCn0KCi5mYS10aGVtZWlzbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMiIKfQoKLmZhLXRoZXJtb21ldGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTEiCn0KCi5mYS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNiIgp9CgouZmEtdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM3Igp9CgouZmEtdGhlcm1vbWV0ZXItaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM5Igp9CgouZmEtdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNhIgp9CgouZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjOCIKfQoKLmZhLXRoaW5rLXBlYWtzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MzEiCn0KCi5mYS10aHVtYnMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTY1Igp9CgouZmEtdGh1bWJzLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjQiCn0KCi5mYS10aHVtYnRhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4ZCIKfQoKLmZhLXRpY2tldC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmZiIKfQoKLmZhLXRpa3RvazpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdiIgp9CgouZmEtdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZCIKfQoKLmZhLXRpbWVzLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU3Igp9CgouZmEtdGludDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQzIgp9CgouZmEtdGludC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM3Igp9CgouZmEtdGlyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjOCIKfQoKLmZhLXRvZ2dsZS1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwNCIKfQoKLmZhLXRvZ2dsZS1vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA1Igp9CgouZmEtdG9pbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDgiCn0KCi5mYS10b2lsZXQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxZSIKfQoKLmZhLXRvaWxldC1wYXBlci1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcyIgp9CgouZmEtdG9vbGJveDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTUyIgp9CgouZmEtdG9vbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkOSIKfQoKLmZhLXRvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzkiCn0KCi5mYS10b3JhaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmEwIgp9CgouZmEtdG9yaWktZ2F0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmExIgp9CgouZmEtdHJhY3RvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzIyIgp9CgouZmEtdHJhZGUtZmVkZXJhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEzIgp9CgouZmEtdHJhZGVtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWMiCn0KCi5mYS10cmFmZmljLWxpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MzciCn0KCi5mYS10cmFpbGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDEiCn0KCi5mYS10cmFpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM4Igp9CgouZmEtdHJhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RhIgp9CgouZmEtdHJhbnNnZW5kZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyNCIKfQoKLmZhLXRyYW5zZ2VuZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI1Igp9CgouZmEtdHJhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOCIKfQoKLmZhLXRyYXNoLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmVkIgp9CgouZmEtdHJhc2gtcmVzdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODI5Igp9CgouZmEtdHJhc2gtcmVzdG9yZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyYSIKfQoKLmZhLXRyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiYiIKfQoKLmZhLXRyZWxsbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgxIgp9CgouZmEtdHJpcGFkdmlzb3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MiIKfQoKLmZhLXRyb3BoeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDkxIgp9CgouZmEtdHJ1Y2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkMSIKfQoKLmZhLXRydWNrLWxvYWRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkZSIKfQoKLmZhLXRydWNrLW1vbnN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYzYiIKfQoKLmZhLXRydWNrLW1vdmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGRmIgp9CgouZmEtdHJ1Y2stcGlja3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2M2MiCn0KCi5mYS10c2hpcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MyIKfQoKLmZhLXR0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU0Igp9CgouZmEtdHVtYmxyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzMiCn0KCi5mYS10dW1ibHItc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzQiCn0KCi5mYS10djpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZjIgp9CgouZmEtdHdpdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTgiCn0KCi5mYS10d2l0dGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTkiCn0KCi5mYS10d2l0dGVyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDgxIgp9CgouZmEtdHlwbzM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYiIKfQoKLmZhLXViZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMiIKfQoKLmZhLXVidW50dTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RmIgp9CgouZmEtdWlraXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMyIKfQoKLmZhLXVtYnJhY286YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhlOCIKfQoKLmZhLXVtYnJlbGxhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTkiCn0KCi5mYS11bWJyZWxsYS1iZWFjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNhIgp9CgouZmEtdW5jaGFydGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODQiCn0KCi5mYS11bmRlcmxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjZCIKfQoKLmZhLXVuZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMiIKfQoKLmZhLXVuZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZWEiCn0KCi5mYS11bmlyZWdpc3RyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA0Igp9CgouZmEtdW5pdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA0OSIKfQoKLmZhLXVuaXZlcnNhbC1hY2Nlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5YSIKfQoKLmZhLXVuaXZlcnNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YyIKfQoKLmZhLXVubGluazpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI3Igp9CgouZmEtdW5sb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWMiCn0KCi5mYS11bmxvY2stYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2UiCn0KCi5mYS11bnNwbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdjIgp9CgouZmEtdW50YXBwZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA1Igp9CgouZmEtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTMiCn0KCi5mYS11cHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMCIKfQoKLmZhLXVzYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg3Igp9CgouZmEtdXNlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA3Igp9CgouZmEtdXNlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwNiIKfQoKLmZhLXVzZXItYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmEiCn0KCi5mYS11c2VyLWFzdHJvbmF1dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNGZiIgp9CgouZmEtdXNlci1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGZjIgp9CgouZmEtdXNlci1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiZCIKfQoKLmZhLXVzZXItY2xvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZCIKfQoKLmZhLXVzZXItY29nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmUiCn0KCi5mYS11c2VyLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZiIKfQoKLmZhLXVzZXItZnJpZW5kczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTAwIgp9CgouZmEtdXNlci1ncmFkdWF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTAxIgp9CgouZmEtdXNlci1pbmp1cmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjgiCn0KCi5mYS11c2VyLWxvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMiIKfQoKLmZhLXVzZXItbWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMCIKfQoKLmZhLXVzZXItbWludXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMyIKfQoKLmZhLXVzZXItbmluamE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwNCIKfQoKLmZhLXVzZXItbnVyc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyZiIKfQoKLmZhLXVzZXItcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM0Igp9CgouZmEtdXNlci1zZWNyZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxYiIKfQoKLmZhLXVzZXItc2hpZWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDUiCn0KCi5mYS11c2VyLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDYiCn0KCi5mYS11c2VyLXRhZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTA3Igp9CgouZmEtdXNlci10aWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwOCIKfQoKLmZhLXVzZXItdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNSIKfQoKLmZhLXVzZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzAiCn0KCi5mYS11c2Vycy1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwOSIKfQoKLmZhLXVzZXJzLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzMiCn0KCi5mYS11c3BzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZTEiCn0KCi5mYS11c3N1bm5haDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA3Igp9CgouZmEtdXRlbnNpbC1zcG9vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmU1Igp9CgouZmEtdXRlbnNpbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlNyIKfQoKLmZhLXZhYWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA4Igp9CgouZmEtdmVjdG9yLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNiIgp9CgouZmEtdmVudXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMSIKfQoKLmZhLXZlbnVzLWRvdWJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI2Igp9CgouZmEtdmVudXMtbWFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI4Igp9CgouZmEtdmVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDg1Igp9CgouZmEtdmVzdC1wYXRjaGVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODYiCn0KCi5mYS12aWFjb2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzciCn0KCi5mYS12aWFkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOSIKfQoKLmZhLXZpYWRlby1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYSIKfQoKLmZhLXZpYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5MiIKfQoKLmZhLXZpYWxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTMiCn0KCi5mYS12aWJlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA5Igp9CgouZmEtdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZCIKfQoKLmZhLXZpZGVvLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTIiCn0KCi5mYS12aWhhcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZhNyIKfQoKLmZhLXZpbWVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGEiCn0KCi5mYS12aW1lby1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NCIKfQoKLmZhLXZpbWVvLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3ZCIKfQoKLmZhLXZpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjYSIKfQoKLmZhLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzQiCn0KCi5mYS12aXJ1cy1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc1Igp9CgouZmEtdmlydXNlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc2Igp9CgouZmEtdms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OSIKfQoKLmZhLXZudjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBiIgp9CgouZmEtdm9pY2VtYWlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4OTciCn0KCi5mYS12b2xsZXliYWxsLWJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1ZiIKfQoKLmZhLXZvbHVtZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjciCn0KCi5mYS12b2x1bWUtbXV0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmE5Igp9CgouZmEtdm9sdW1lLW9mZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI2Igp9CgouZmEtdm9sdW1lLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjgiCn0KCi5mYS12b3RlLXllYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzcyIgp9CgouZmEtdnItY2FyZGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjkiCn0KCi5mYS12dWVqczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFmIgp9CgouZmEtd2Fsa2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU0Igp9CgouZmEtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTUiCn0KCi5mYS13YXJlaG91c2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NCIKfQoKLmZhLXdhdGNobWFuLW1vbml0b3Jpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4NyIKfQoKLmZhLXdhdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NzMiCn0KCi5mYS13YXZlLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNlIgp9CgouZmEtd2F6ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNmIgp9CgouZmEtd2VlYmx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1Y2MiCn0KCi5mYS13ZWlibzpiZWZvcmUgewogICAgY29udGVudDogIlxmMThhIgp9CgouZmEtd2VpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTYiCn0KCi5mYS13ZWlnaHQtaGFuZ2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNkIgp9CgouZmEtd2VpeGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDciCn0KCi5mYS13aGF0c2FwcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjMyIgp9CgouZmEtd2hhdHNhcHAtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGMiCn0KCi5mYS13aGVlbGNoYWlyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTMiCn0KCi5mYS13aG1jczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBkIgp9CgouZmEtd2lmaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWViIgp9CgouZmEtd2lraXBlZGlhLXc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NiIKfQoKLmZhLXdpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcyZSIKfQoKLmZhLXdpbmRvdy1jbG9zZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEwIgp9CgouZmEtd2luZG93LW1heGltaXplOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDAiCn0KCi5mYS13aW5kb3ctbWluaW1pemU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkMSIKfQoKLmZhLXdpbmRvdy1yZXN0b3JlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDIiCn0KCi5mYS13aW5kb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2EiCn0KCi5mYS13aW5lLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzJmIgp9CgouZmEtd2luZS1nbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNGUzIgp9CgouZmEtd2luZS1nbGFzcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjZSIKfQoKLmZhLXdpeDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNmIgp9CgouZmEtd2l6YXJkcy1vZi10aGUtY29hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczMCIKfQoKLmZhLXdvZHU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4OCIKfQoKLmZhLXdvbGYtcGFjay1iYXR0YWxpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxNCIKfQoKLmZhLXdvbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTkiCn0KCi5mYS13b3JkcHJlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YSIKfQoKLmZhLXdvcmRwcmVzcy1zaW1wbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMSIKfQoKLmZhLXdwYmVnaW5uZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NyIKfQoKLmZhLXdwZXhwbG9yZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkZSIKfQoKLmZhLXdwZm9ybXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5OCIKfQoKLmZhLXdwcmVzc3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNCIKfQoKLmZhLXdyZW5jaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFkIgp9CgouZmEteC1yYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NyIKfQoKLmZhLXhib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMiIKfQoKLmZhLXhpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2OCIKfQoKLmZhLXhpbmctc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjkiCn0KCi5mYS15LWNvbWJpbmF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzYiIKfQoKLmZhLXlhaG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWUiCn0KCi5mYS15YW1tZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0MCIKfQoKLmZhLXlhbmRleDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEzIgp9CgouZmEteWFuZGV4LWludGVybmF0aW9uYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNCIKfQoKLmZhLXlhcm46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMyIKfQoKLmZhLXllbHA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlOSIKfQoKLmZhLXllbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTciCn0KCi5mYS15aW4teWFuZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmFkIgp9CgouZmEteW9hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMSIKfQoKLmZhLXlvdXR1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NyIKfQoKLmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MzEiCn0KCi5mYS16aGlodTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjNmIgp9Cgouc3Itb25seSB7CiAgICBib3JkZXI6IDA7CiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogICAgaGVpZ2h0OiAxcHg7CiAgICBtYXJnaW46IC0xcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxcHgKfQoKLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICAgIGNsaXA6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICB3aWR0aDogYXV0bwp9"}},"time_used":761,"timings":{"blocked":661,"dns":0,"connect":0,"send":0,"wait":97,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/font-awesome/css/solid.min.css?ver=5.15.3","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.317Z","timestamp":1785145482317,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/font-awesome/css/solid.min.css?ver=5.15.3 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/css\r\nContent-Length: 729\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":729,"size_decoded":937,"mime_type":"text/css","magic":"ASCII text","md5":"33221d876f28d0a96ebb428e2bb22d58","sha1":"809b5f269722a86c2bb11673fdc70e5a939879f5","sha256":"5661b2d55e15c17b4fc087867e550e7af98fadeef6ee6b76b0937a9294d8fbdb","sha512":"66ef8d69015fc95a7af337b293739984d9a7a0c53e8bb355da5849a33ffa66c14879598abcf4bc595f7be9749510203634eaf300b2d4f0beab95a7ec4f3a0a7c","ssdeep":"","tlshash":"0101471c01472a415ac00d083bdaaa5ddf59b0a6784c5b32723aec1d8cf8e1a61e5f0d","first_seen":"2023-05-09T14:52:25Z","last_seen":"2026-07-27T10:21:19.750347Z","times_seen":64,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCkBmb250LWZhY2UgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBmb250LWRpc3BsYXk6IGJsb2NrOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLmVvdCk7CiAgICBzcmM6IHVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksIHVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZikgZm9ybWF0KCJ3b2ZmIiksIHVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksIHVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAuc3ZnI2ZvbnRhd2Vzb21lKSBmb3JtYXQoInN2ZyIpCn0KCi5mYSwKLmZhcyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDkwMAp9"}},"time_used":763,"timings":{"blocked":667,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/fonts/Flaticon.woff2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.908Z","timestamp":1785145485908,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /wp-content/themes/homeo/fonts/Flaticon.woff2 HTTP/1.1\r\nHost: betaroi.ltd\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\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://betaroi.ltd/wp-content/themes/homeo/css/flaticon.css?ver=1.0.0\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.280Z","timestamp":1785145482280,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:45 GMT\r\ncontent-type: text/css\r\nvary: Accept-Encoding\r\nlast-modified: Tue, 29 Sep 2020 15:53:06 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:45 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":11256,"size_decoded":3079,"mime_type":"text/css","magic":"ASCII text, with very long lines (11256), with no line terminators","md5":"2b0dd7eecea03b4bdedb94ba622fdb03","sha1":"703becba85161118dd6fc66af465428ef43f561c","sha256":"b7908a015a567ec2363011df2475368dbff34360e9da3fdff50604d6395fb646","sha512":"fe64cff950921bdf83ec09fe79ca5ce52de40f5b8788697eb1d7b28055f2817778347d5d3c81a324801c7ec7151b3ee0eee99b2882c3c3b10bd760342d3bf3e7","ssdeep":"192:xthsVmeDXDanvgZenjAJKdXSMpNO96hDIzL79V1QVSD1CNxn6fR31r:czDanvuenjAkNBhDInSwh31r","tlshash":"713223929c88212cf43795645ac107ec923fc303fd62ededb73c7679caca58a516a943","first_seen":"2023-04-05T04:06:46Z","last_seen":"2026-07-27T12:31:11.226544Z","times_seen":90254,"resource_available":false,"data":"Lm1lanMtb2Zmc2NyZWVue2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpOy13ZWJraXQtY2xpcC1wYXRoOmluc2V0KDUwJSk7Y2xpcC1wYXRoOmluc2V0KDUwJSk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3b3JkLXdyYXA6bm9ybWFsfS5tZWpzLWNvbnRhaW5lcntiYWNrZ3JvdW5kOiMwMDA7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNlcmlmO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdDt0ZXh0LWluZGVudDowO3ZlcnRpY2FsLWFsaWduOnRvcH0ubWVqcy1jb250YWluZXIsLm1lanMtY29udGFpbmVyICp7Ym94LXNpemluZzpib3JkZXItYm94fS5tZWpzLWNvbnRhaW5lciB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scywubWVqcy1jb250YWluZXIgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwsLm1lanMtY29udGFpbmVyIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLWNvbnRhaW5lciwubWVqcy1jb250YWluZXIgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc3RhcnQtcGxheWJhY2stYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Lm1lanMtZmlsbC1jb250YWluZXIsLm1lanMtZmlsbC1jb250YWluZXIgLm1lanMtY29udGFpbmVye2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9Lm1lanMtZmlsbC1jb250YWluZXJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDttYXJnaW46MCBhdXRvO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWVqcy1jb250YWluZXI6Zm9jdXN7b3V0bGluZTpub25lfS5tZWpzLWlmcmFtZS1vdmVybGF5e2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9Lm1lanMtZW1iZWQsLm1lanMtZW1iZWQgYm9keXtiYWNrZ3JvdW5kOiMwMDA7aGVpZ2h0OjEwMCU7bWFyZ2luOjA7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt3aWR0aDoxMDAlfS5tZWpzLWZ1bGxzY3JlZW57b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0ubWVqcy1jb250YWluZXItZnVsbHNjcmVlbntib3R0b206MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjA7dG9wOjA7ei1pbmRleDoxMDAwfS5tZWpzLWNvbnRhaW5lci1mdWxsc2NyZWVuIC5tZWpzLW1lZGlhZWxlbWVudCwubWVqcy1jb250YWluZXItZnVsbHNjcmVlbiB2aWRlb3toZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7d2lkdGg6MTAwJSFpbXBvcnRhbnR9Lm1lanMtYmFja2dyb3VuZCwubWVqcy1tZWRpYWVsZW1lbnR7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5tZWpzLW1lZGlhZWxlbWVudHtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3otaW5kZXg6MH0ubWVqcy1wb3N0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3otaW5kZXg6MX06cm9vdCAubWVqcy1wb3N0ZXItaW1ne2Rpc3BsYXk6bm9uZX0ubWVqcy1wb3N0ZXItaW1ne2JvcmRlcjowO3BhZGRpbmc6MH0ubWVqcy1vdmVybGF5ey13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5tZWpzLWxheWVye3otaW5kZXg6MX0ubWVqcy1vdmVybGF5LXBsYXl7Y3Vyc29yOnBvaW50ZXJ9Lm1lanMtb3ZlcmxheS1idXR0b257YmFja2dyb3VuZDp1cmwobWVqcy1jb250cm9scy5zdmcpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTM5cHg7aGVpZ2h0OjgwcHg7d2lkdGg6ODBweH0ubWVqcy1vdmVybGF5OmhvdmVyPi5tZWpzLW92ZXJsYXktYnV0dG9ue2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTM5cHh9Lm1lanMtb3ZlcmxheS1sb2FkaW5ne2hlaWdodDo4MHB4O3dpZHRoOjgwcHh9Lm1lanMtb3ZlcmxheS1sb2FkaW5nLWJnLWltZ3std2Via2l0LWFuaW1hdGlvbjphIDFzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246YSAxcyBsaW5lYXIgaW5maW5pdGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudCB1cmwobWVqcy1jb250cm9scy5zdmcpIC0xNjBweCAtNDBweCBuby1yZXBlYXQ7ZGlzcGxheTpibG9jaztoZWlnaHQ6ODBweDt3aWR0aDo4MHB4O3otaW5kZXg6MX1ALXdlYmtpdC1rZXlmcmFtZXMgYXt0b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIGF7dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTt0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19Lm1lanMtY29udHJvbHN7Ym90dG9tOjA7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDBweDtsZWZ0OjA7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowIDEwcHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt6LWluZGV4OjN9Lm1lanMtY29udHJvbHM6bm90KFtzdHlsZSo9ImRpc3BsYXk6IG5vbmUiXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwwLDAsLjcpO2JhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQscmdiYSgwLDAsMCwuMzUpKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCxyZ2JhKDAsMCwwLC4zNSkpfS5tZWpzLWJ1dHRvbiwubWVqcy10aW1lLC5tZWpzLXRpbWUtcmFpbHtmb250LXNpemU6MTBweDtoZWlnaHQ6NDBweDtsaW5lLWhlaWdodDoxMHB4O21hcmdpbjowO3dpZHRoOjMycHh9Lm1lanMtYnV0dG9uPmJ1dHRvbntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IHVybChtZWpzLWNvbnRyb2xzLnN2Zyk7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztmb250LXNpemU6MDtoZWlnaHQ6MjBweDtsaW5lLWhlaWdodDowO21hcmdpbjoxMHB4IDZweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3RleHQtZGVjb3JhdGlvbjpub25lO3dpZHRoOjIwcHh9Lm1lanMtYnV0dG9uPmJ1dHRvbjpmb2N1c3tvdXRsaW5lOjFweCBkb3R0ZWQgIzk5OX0ubWVqcy1jb250YWluZXIta2V5Ym9hcmQtaW5hY3RpdmUgW3JvbGU9c2xpZGVyXSwubWVqcy1jb250YWluZXIta2V5Ym9hcmQtaW5hY3RpdmUgW3JvbGU9c2xpZGVyXTpmb2N1cywubWVqcy1jb250YWluZXIta2V5Ym9hcmQtaW5hY3RpdmUgYSwubWVqcy1jb250YWluZXIta2V5Ym9hcmQtaW5hY3RpdmUgYTpmb2N1cywubWVqcy1jb250YWluZXIta2V5Ym9hcmQtaW5hY3RpdmUgYnV0dG9uLC5tZWpzLWNvbnRhaW5lci1rZXlib2FyZC1pbmFjdGl2ZSBidXR0b246Zm9jdXN7b3V0bGluZTowfS5tZWpzLXRpbWV7Ym94LXNpemluZzpjb250ZW50LWJveDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtoZWlnaHQ6MjRweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzoxNnB4IDZweCAwO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOmF1dG99Lm1lanMtcGxheT5idXR0b257YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9Lm1lanMtcGF1c2U+YnV0dG9ue2JhY2tncm91bmQtcG9zaXRpb246LTIwcHggMH0ubWVqcy1yZXBsYXk+YnV0dG9ue2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IDB9Lm1lanMtdGltZS1yYWlse2RpcmVjdGlvbjpsdHI7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleC1ncm93OjE7LW1zLWZsZXgtcG9zaXRpdmU6MTtmbGV4LWdyb3c6MTtoZWlnaHQ6NDBweDttYXJnaW46MCAxMHB4O3BhZGRpbmctdG9wOjEwcHg7cG9zaXRpb246cmVsYXRpdmV9Lm1lanMtdGltZS1idWZmZXJpbmcsLm1lanMtdGltZS1jdXJyZW50LC5tZWpzLXRpbWUtZmxvYXQsLm1lanMtdGltZS1mbG9hdC1jb3JuZXIsLm1lanMtdGltZS1mbG9hdC1jdXJyZW50LC5tZWpzLXRpbWUtaG92ZXJlZCwubWVqcy10aW1lLWxvYWRlZCwubWVqcy10aW1lLW1hcmtlciwubWVqcy10aW1lLXRvdGFse2JvcmRlci1yYWRpdXM6MnB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGV9Lm1lanMtdGltZS10b3RhbHtiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC4zKTttYXJnaW46NXB4IDAgMDt3aWR0aDoxMDAlfS5tZWpzLXRpbWUtYnVmZmVyaW5ney13ZWJraXQtYW5pbWF0aW9uOmIgMnMgbGluZWFyIGluZmluaXRlO2FuaW1hdGlvbjpiIDJzIGxpbmVhciBpbmZpbml0ZTtiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDEzNWRlZyxoc2xhKDAsMCUsMTAwJSwuNCkgMjUlLHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgNTAlLGhzbGEoMCwwJSwxMDAlLC40KSAwLGhzbGEoMCwwJSwxMDAlLC40KSA3NSUsdHJhbnNwYXJlbnQgMCx0cmFuc3BhcmVudCk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLGhzbGEoMCwwJSwxMDAlLC40KSAyNSUsdHJhbnNwYXJlbnQgMCx0cmFuc3BhcmVudCA1MCUsaHNsYSgwLDAlLDEwMCUsLjQpIDAsaHNsYSgwLDAlLDEwMCUsLjQpIDc1JSx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLXNpemU6MTVweCAxNXB4O3dpZHRoOjEwMCV9QC13ZWJraXQta2V5ZnJhbWVzIGJ7MCV7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjozMHB4IDB9fUBrZXlmcmFtZXMgYnswJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjMwcHggMH19Lm1lanMtdGltZS1sb2FkZWR7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuMyl9Lm1lanMtdGltZS1jdXJyZW50LC5tZWpzLXRpbWUtaGFuZGxlLWNvbnRlbnR7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuOSl9Lm1lanMtdGltZS1ob3ZlcmVke2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjUpO3otaW5kZXg6MTB9Lm1lanMtdGltZS1ob3ZlcmVkLm5lZ2F0aXZle2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMil9Lm1lanMtdGltZS1idWZmZXJpbmcsLm1lanMtdGltZS1jdXJyZW50LC5tZWpzLXRpbWUtaG92ZXJlZCwubWVqcy10aW1lLWxvYWRlZHtsZWZ0OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVYKDApOy1tcy10cmFuc2Zvcm06c2NhbGVYKDApO3RyYW5zZm9ybTpzY2FsZVgoMCk7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbXMtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMTVzIGVhc2UtaW47dHJhbnNpdGlvbjphbGwgLjE1cyBlYXNlLWluO3dpZHRoOjEwMCV9Lm1lanMtdGltZS1idWZmZXJpbmd7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVYKDEpOy1tcy10cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2FsZVgoMSl9Lm1lanMtdGltZS1ob3ZlcmVkey13ZWJraXQtdHJhbnNpdGlvbjpoZWlnaHQgLjFzIGN1YmljLWJlemllciguNDQsMCwxLDEpO3RyYW5zaXRpb246aGVpZ2h0IC4xcyBjdWJpYy1iZXppZXIoLjQ0LDAsMSwxKX0ubWVqcy10aW1lLWhvdmVyZWQubm8taG92ZXJ7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVYKDApIWltcG9ydGFudDstbXMtdHJhbnNmb3JtOnNjYWxlWCgwKSFpbXBvcnRhbnQ7dHJhbnNmb3JtOnNjYWxlWCgwKSFpbXBvcnRhbnR9Lm1lanMtdGltZS1oYW5kbGUsLm1lanMtdGltZS1oYW5kbGUtY29udGVudHtib3JkZXI6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2N1cnNvcjpwb2ludGVyO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt6LWluZGV4OjExfS5tZWpzLXRpbWUtaGFuZGxlLWNvbnRlbnR7Ym9yZGVyOjRweCBzb2xpZCBoc2xhKDAsMCUsMTAwJSwuOSk7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjEwcHg7bGVmdDotN3B4O3RvcDotNHB4Oy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDApOy1tcy10cmFuc2Zvcm06c2NhbGUoMCk7dHJhbnNmb3JtOnNjYWxlKDApO3dpZHRoOjEwcHh9Lm1lanMtdGltZS1yYWlsIC5tZWpzLXRpbWUtaGFuZGxlLWNvbnRlbnQ6YWN0aXZlLC5tZWpzLXRpbWUtcmFpbCAubWVqcy10aW1lLWhhbmRsZS1jb250ZW50OmZvY3VzLC5tZWpzLXRpbWUtcmFpbDpob3ZlciAubWVqcy10aW1lLWhhbmRsZS1jb250ZW50ey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpOy1tcy10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpfS5tZWpzLXRpbWUtZmxvYXR7YmFja2dyb3VuZDojZWVlO2JvcmRlcjoxcHggc29saWQgIzMzMztib3R0b206MTAwJTtjb2xvcjojMTExO2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MTdweDttYXJnaW4tYm90dG9tOjlweDtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt3aWR0aDozNnB4fS5tZWpzLXRpbWUtZmxvYXQtY3VycmVudHtkaXNwbGF5OmJsb2NrO2xlZnQ6MDttYXJnaW46MnB4O3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjMwcHh9Lm1lanMtdGltZS1mbG9hdC1jb3JuZXJ7Ym9yZGVyOjVweCBzb2xpZCAjZWVlO2JvcmRlci1jb2xvcjojZWVlIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MDtkaXNwbGF5OmJsb2NrO2hlaWdodDowO2xlZnQ6NTAlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7d2lkdGg6MH0ubWVqcy1sb25nLXZpZGVvIC5tZWpzLXRpbWUtZmxvYXR7bWFyZ2luLWxlZnQ6LTIzcHg7d2lkdGg6NjRweH0ubWVqcy1sb25nLXZpZGVvIC5tZWpzLXRpbWUtZmxvYXQtY3VycmVudHt3aWR0aDo2MHB4fS5tZWpzLWJyb2FkY2FzdHtjb2xvcjojZmZmO2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNXB4O3dpZHRoOjEwMCV9Lm1lanMtZnVsbHNjcmVlbi1idXR0b24+YnV0dG9ue2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggMH0ubWVqcy11bmZ1bGxzY3JlZW4+YnV0dG9ue2JhY2tncm91bmQtcG9zaXRpb246LTEwMHB4IDB9Lm1lanMtbXV0ZT5idXR0b257YmFja2dyb3VuZC1wb3NpdGlvbjotNjBweCAwfS5tZWpzLXVubXV0ZT5idXR0b257YmFja2dyb3VuZC1wb3NpdGlvbjotNDBweCAwfS5tZWpzLXZvbHVtZS1idXR0b257cG9zaXRpb246cmVsYXRpdmV9Lm1lanMtdm9sdW1lLWJ1dHRvbj4ubWVqcy12b2x1bWUtc2xpZGVyey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2dyb3VuZDpyZ2JhKDUwLDUwLDUwLC43KTtib3JkZXItcmFkaXVzOjA7Ym90dG9tOjEwMCU7ZGlzcGxheTpub25lO2hlaWdodDoxMTVweDtsZWZ0OjUwJTttYXJnaW46MDtwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt3aWR0aDoyNXB4O3otaW5kZXg6MX0ubWVqcy12b2x1bWUtYnV0dG9uOmhvdmVye2JvcmRlci1yYWRpdXM6MCAwIDRweCA0cHh9Lm1lanMtdm9sdW1lLXRvdGFse2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjUpO2hlaWdodDoxMDBweDtsZWZ0OjUwJTttYXJnaW46MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6OHB4Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3dpZHRoOjJweH0ubWVqcy12b2x1bWUtY3VycmVudHtsZWZ0OjA7bWFyZ2luOjA7d2lkdGg6MTAwJX0ubWVqcy12b2x1bWUtY3VycmVudCwubWVqcy12b2x1bWUtaGFuZGxle2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjkpO3Bvc2l0aW9uOmFic29sdXRlfS5tZWpzLXZvbHVtZS1oYW5kbGV7Ym9yZGVyLXJhZGl1czoxcHg7Y3Vyc29yOm5zLXJlc2l6ZTtoZWlnaHQ6NnB4O2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3dpZHRoOjE2cHh9Lm1lanMtaG9yaXpvbnRhbC12b2x1bWUtc2xpZGVye2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjM2cHg7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjU2cHh9Lm1lanMtaG9yaXpvbnRhbC12b2x1bWUtdG90YWx7YmFja2dyb3VuZDpyZ2JhKDUwLDUwLDUwLC44KTtoZWlnaHQ6OHB4O3RvcDoxNnB4O3dpZHRoOjUwcHh9Lm1lanMtaG9yaXpvbnRhbC12b2x1bWUtY3VycmVudCwubWVqcy1ob3Jpem9udGFsLXZvbHVtZS10b3RhbHtib3JkZXItcmFkaXVzOjJweDtmb250LXNpemU6MXB4O2xlZnQ6MDttYXJnaW46MDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGV9Lm1lanMtaG9yaXpvbnRhbC12b2x1bWUtY3VycmVudHtiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC44KTtoZWlnaHQ6MTAwJTt0b3A6MDt3aWR0aDoxMDAlfS5tZWpzLWhvcml6b250YWwtdm9sdW1lLWhhbmRsZXtkaXNwbGF5Om5vbmV9Lm1lanMtY2FwdGlvbnMtYnV0dG9uLC5tZWpzLWNoYXB0ZXJzLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZX0ubWVqcy1jYXB0aW9ucy1idXR0b24+YnV0dG9ue2JhY2tncm91bmQtcG9zaXRpb246LTE0MHB4IDB9Lm1lanMtY2hhcHRlcnMtYnV0dG9uPmJ1dHRvbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xODBweCAwfS5tZWpzLWNhcHRpb25zLWJ1dHRvbj4ubWVqcy1jYXB0aW9ucy1zZWxlY3RvciwubWVqcy1jaGFwdGVycy1idXR0b24+Lm1lanMtY2hhcHRlcnMtc2VsZWN0b3J7YmFja2dyb3VuZDpyZ2JhKDUwLDUwLDUwLC43KTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MDtib3R0b206MTAwJTttYXJnaW4tcmlnaHQ6LTQzcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo1MCU7dmlzaWJpbGl0eTp2aXNpYmxlO3dpZHRoOjg2cHh9Lm1lanMtY2hhcHRlcnMtYnV0dG9uPi5tZWpzLWNoYXB0ZXJzLXNlbGVjdG9ye21hcmdpbi1yaWdodDotNTVweDt3aWR0aDoxMTBweH0ubWVqcy1jYXB0aW9ucy1zZWxlY3Rvci1saXN0LC5tZWpzLWNoYXB0ZXJzLXNlbGVjdG9yLWxpc3R7bGlzdC1zdHlsZS10eXBlOm5vbmUhaW1wb3J0YW50O21hcmdpbjowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjB9Lm1lanMtY2FwdGlvbnMtc2VsZWN0b3ItbGlzdC1pdGVtLC5tZWpzLWNoYXB0ZXJzLXNlbGVjdG9yLWxpc3QtaXRlbXtjb2xvcjojZmZmO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7bGlzdC1zdHlsZS10eXBlOm5vbmUhaW1wb3J0YW50O21hcmdpbjowIDAgNnB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjB9Lm1lanMtY2FwdGlvbnMtc2VsZWN0b3ItbGlzdC1pdGVtOmhvdmVyLC5tZWpzLWNoYXB0ZXJzLXNlbGVjdG9yLWxpc3QtaXRlbTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNjOGM4YzghaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjQpIWltcG9ydGFudH0ubWVqcy1jYXB0aW9ucy1zZWxlY3Rvci1pbnB1dCwubWVqcy1jaGFwdGVycy1zZWxlY3Rvci1pbnB1dHtjbGVhcjpib3RoO2Zsb2F0OmxlZnQ7bGVmdDotMTAwMHB4O21hcmdpbjozcHggM3B4IDAgNXB4O3Bvc2l0aW9uOmFic29sdXRlfS5tZWpzLWNhcHRpb25zLXNlbGVjdG9yLWxhYmVsLC5tZWpzLWNoYXB0ZXJzLXNlbGVjdG9yLWxhYmVse2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7Zm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTVweDtwYWRkaW5nOjRweCAxMHB4IDA7d2lkdGg6MTAwJX0ubWVqcy1jYXB0aW9ucy1zZWxlY3RlZCwubWVqcy1jaGFwdGVycy1zZWxlY3RlZHtjb2xvcjojMjFmOGY4fS5tZWpzLWNhcHRpb25zLXRyYW5zbGF0aW9uc3tmb250LXNpemU6MTBweDttYXJnaW46MCAwIDVweH0ubWVqcy1jYXB0aW9ucy1sYXllcntib3R0b206MDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxNnB4O2xlZnQ6MDtsaW5lLWhlaWdodDoyMHB4O3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyfS5tZWpzLWNhcHRpb25zLWxheWVyIGF7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5tZWpzLWNhcHRpb25zLWxheWVyW2xhbmc9YXJde2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWVqcy1jYXB0aW9ucy1wb3NpdGlvbntib3R0b206MTVweDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0ubWVqcy1jYXB0aW9ucy1wb3NpdGlvbi1ob3Zlcntib3R0b206MzVweH0ubWVqcy1jYXB0aW9ucy10ZXh0LC5tZWpzLWNhcHRpb25zLXRleHQgKntiYWNrZ3JvdW5kOmhzbGEoMCwwJSw4JSwuNSk7Ym94LXNoYWRvdzo1cHggMCAwIGhzbGEoMCwwJSw4JSwuNSksLTVweCAwIDAgaHNsYSgwLDAlLDglLC41KTtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6cHJlLXdyYXB9Lm1lanMtY29udGFpbmVyLm1lanMtaGlkZS1jdWVzIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVye2Rpc3BsYXk6bm9uZX0ubWVqcy1vdmVybGF5LWVycm9ye3Bvc2l0aW9uOnJlbGF0aXZlfS5tZWpzLW92ZXJsYXktZXJyb3I+aW1ne2xlZnQ6MDttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt6LWluZGV4Oi0xfS5tZWpzLWNhbm5vdHBsYXksLm1lanMtY2Fubm90cGxheSBhe2NvbG9yOiNmZmY7Zm9udC1zaXplOi44ZW19Lm1lanMtY2Fubm90cGxheXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWVqcy1jYW5ub3RwbGF5IGEsLm1lanMtY2Fubm90cGxheSBwe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MCAxNXB4O3dpZHRoOjEwMCV9"}},"time_used":3471,"timings":{"blocked":-1,"dns":0,"connect":8,"send":0,"wait":8,"receive":0,"ssl":3454},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/countdown.js?ver=20150315","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.402Z","timestamp":1785145482402,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/countdown.js?ver=20150315 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 3410\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":3410,"size_decoded":3626,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (328)","md5":"b8386e00af5d6f59c1391b19eaa18248","sha1":"a53f3b6a23467ae5d6711574d7e0199fd749f05e","sha256":"29677816fdde607ce9c4f6974ba318be573c77f789917973341923b134dc8b9a","sha512":"2b65fe5130e53252e3e6778e04c4dc8be89adc0848414ed04706d73431eaf13e5cc7f0c751ef21150b924e7371cb2dfe45e116dbc2a68c9be490741c5170c60d","ssdeep":"","tlshash":"3c61ac28e0b715546877b0617a3f524e2b3692271c89d6113edc23e25f66c38d89aff4","first_seen":"2026-07-27T08:06:56.454291Z","last_seen":"2026-07-27T09:45:50.899659Z","times_seen":3,"resource_available":true,"data":"KGZ1bmN0aW9uKCQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgICQuZm4uYXB1c0NvdW50RG93biA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBuZXcgJC5hcHVzQ291bnREb3duKHRoaXMsIG9wdGlvbnMpOwogICAgICAgIH0pOwogICAgfQogICAgJC5hcHVzQ291bnREb3duID0gZnVuY3Rpb24ob2JqLCBvcHRpb25zKSB7CiAgICAgICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQoewogICAgICAgICAgICBhdXRvU3RhcnQ6IHRydWUsCiAgICAgICAgICAgIExlYWRpbmdaZXJvOiB0cnVlLAogICAgICAgICAgICBEaXNwbGF5Rm9ybWF0OiAiPGRpdj4lJUQlJSBEYXlzPC9kaXY+PGRpdj4lJUglJSBIb3VyczwvZGl2PjxkaXY+JSVNJSUgTWludXRlczwvZGl2PjxkaXY+JSVTJSUgU2Vjb25kczwvZGl2PiIsCiAgICAgICAgICAgIEZpbmlzaE1lc3NhZ2U6ICJFeHBpcmVkIiwKICAgICAgICAgICAgQ291bnRBY3RpdmU6IHRydWUsCiAgICAgICAgICAgIFRhcmdldERhdGU6IG51bGwKICAgICAgICB9LCBvcHRpb25zIHx8IHt9KTsKICAgICAgICBpZiAodGhpcy5vcHRpb25zLlRhcmdldERhdGUgPT0gbnVsbCB8fCB0aGlzLm9wdGlvbnMuVGFyZ2V0RGF0ZSA9PSAnJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRoaXMudGltZXIgPSBudWxsOwogICAgICAgIHRoaXMuZWxlbWVudCA9IG9iajsKICAgICAgICB0aGlzLkNvdW50U3RlcHBlciA9IC0xOwogICAgICAgIHRoaXMuQ291bnRTdGVwcGVyID0gTWF0aC5jZWlsKHRoaXMuQ291bnRTdGVwcGVyKTsKICAgICAgICB0aGlzLlNldFRpbWVPdXRQZXJpb2QgPSAoTWF0aC5hYnModGhpcy5Db3VudFN0ZXBwZXIpIC0gMSkgKiAxMDAwICsgOTkwOwogICAgICAgIHZhciBkdGhlbiA9IG5ldyBEYXRlKHRoaXMub3B0aW9ucy5UYXJnZXREYXRlKTsKICAgICAgICB2YXIgZG5vdyA9IG5ldyBEYXRlKCk7CiAgICAgICAgaWYgKHRoaXMuQ291bnRTdGVwcGVyID4gMCkgewogICAgICAgICAgICB2YXIgZGRpZmYgPSBuZXcgRGF0ZShkbm93IC0gZHRoZW4pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBkZGlmZiA9IG5ldyBEYXRlKGR0aGVuIC0gZG5vdyk7CiAgICAgICAgfQogICAgICAgIHZhciBnc2VjcyA9IE1hdGguZmxvb3IoZGRpZmYudmFsdWVPZigpIC8gMTAwMCk7CiAgICAgICAgdGhpcy5Db3VudEJhY2soZ3NlY3MsIHRoaXMpOwogICAgfTsKICAgICQuYXB1c0NvdW50RG93bi5mbiA9ICQuYXB1c0NvdW50RG93bi5wcm90b3R5cGU7CiAgICAkLmFwdXNDb3VudERvd24uZm4uZXh0ZW5kID0gJC5hcHVzQ291bnREb3duLmV4dGVuZCA9ICQuZXh0ZW5kOwogICAgJC5hcHVzQ291bnREb3duLmZuLmV4dGVuZCh7CiAgICAgICAgY2FsY3VsYXRlRGF0ZTogZnVuY3Rpb24oc2VjcywgbnVtMSwgbnVtMikgewogICAgICAgICAgICB2YXIgcyA9ICgoTWF0aC5mbG9vcihzZWNzIC8gbnVtMSkpICUgbnVtMikudG9TdHJpbmcoKTsKICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5MZWFkaW5nWmVybyAmJiBzLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgIHMgPSAiMCIgKyBzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAiPHNwYW4+IiArIHMgKyAiPC9zcGFuPiI7CiAgICAgICAgfSwKICAgICAgICBDb3VudEJhY2s6IGZ1bmN0aW9uKHNlY3MsIHNlbGYpIHsKICAgICAgICAgICAgaWYgKHNlY3MgPCAwKSB7CiAgICAgICAgICAgICAgICBzZWxmLmVsZW1lbnQuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImxhYmVsZXhwaXJlZCI+ICcgKyBzZWxmLm9wdGlvbnMuRmluaXNoTWVzc2FnZSArICI8L2Rpdj4iOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoc2VsZi50aW1lcik7CiAgICAgICAgICAgIHZhciBEaXNwbGF5U3RyID0gc2VsZi5vcHRpb25zLkRpc3BsYXlGb3JtYXQucmVwbGFjZSgvJSVEJSUvZywgc2VsZi5jYWxjdWxhdGVEYXRlKHNlY3MsIDg2NDAwLCAxMDAwMDApKTsKICAgICAgICAgICAgRGlzcGxheVN0ciA9IERpc3BsYXlTdHIucmVwbGFjZSgvJSVIJSUvZywgc2VsZi5jYWxjdWxhdGVEYXRlKHNlY3MsIDM2MDAsIDI0KSk7CiAgICAgICAgICAgIERpc3BsYXlTdHIgPSBEaXNwbGF5U3RyLnJlcGxhY2UoLyUlTSUlL2csIHNlbGYuY2FsY3VsYXRlRGF0ZShzZWNzLCA2MCwgNjApKTsKICAgICAgICAgICAgRGlzcGxheVN0ciA9IERpc3BsYXlTdHIucmVwbGFjZSgvJSVTJSUvZywgc2VsZi5jYWxjdWxhdGVEYXRlKHNlY3MsIDEsIDYwKSk7CiAgICAgICAgICAgIHNlbGYuZWxlbWVudC5pbm5lckhUTUwgPSBEaXNwbGF5U3RyOwogICAgICAgICAgICBpZiAoc2VsZi5vcHRpb25zLkNvdW50QWN0aXZlKSB7CiAgICAgICAgICAgICAgICBzZWxmLnRpbWVyID0gbnVsbDsKICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHNlbGYuQ291bnRCYWNrKChzZWNzICsgc2VsZi5Db3VudFN0ZXBwZXIpLCBzZWxmKTsKICAgICAgICAgICAgICAgIH0sIChzZWxmLlNldFRpbWVPdXRQZXJpb2QpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwoKICAgIGpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oJCkgewogICAgICAgICQoJ1tkYXRhLXRpbWU9InRpbW1lciJdJykuZWFjaChmdW5jdGlvbihpbmRleCwgZWwpIHsKICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgdmFyICRkYXRlID0gJHRoaXMuZGF0YSgnZGF0ZScpLnNwbGl0KCItIik7CiAgICAgICAgICAgICR0aGlzLmFwdXNDb3VudERvd24oewogICAgICAgICAgICAgICAgVGFyZ2V0RGF0ZTogJGRhdGVbMF0gKyAiLyIgKyAkZGF0ZVsxXSArICIvIiArICRkYXRlWzJdICsgIiAiICsgJGRhdGVbM10gKyAiOiIgKyAkZGF0ZVs0XSArICI6IiArICRkYXRlWzVdLAogICAgICAgICAgICAgICAgRGlzcGxheUZvcm1hdDogIjxkaXYgY2xhc3M9XCJ0aW1lc1wiPjxkaXYgY2xhc3M9XCJkYXlcIj4lJUQlJSAiICsgaG9tZW9fY291bnRkb3duX29wdHMuZGF5cyArICI8L2Rpdj48ZGl2IGNsYXNzPVwiaG91cnNcIj4lJUglJSAiICsgaG9tZW9fY291bnRkb3duX29wdHMuaG91cnMgKyAiPC9kaXY+PGRpdiBjbGFzcz1cIm1pbnV0ZXNcIj4lJU0lJSAiICsgaG9tZW9fY291bnRkb3duX29wdHMubWlucyArICI8L2Rpdj48ZGl2IGNsYXNzPVwic2Vjb25kc1wiPiUlUyUlICIgKyBob21lb19jb3VudGRvd25fb3B0cy5zZWNzICsgIjwvZGl2PjwvZGl2PiIsCiAgICAgICAgICAgICAgICBGaW5pc2hNZXNzYWdlOiAiIiwKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9KTsKCn0pKGpRdWVyeSk="}},"time_used":870,"timings":{"blocked":772,"dns":0,"connect":0,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/sticky.min.js?ver=4.0.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.426Z","timestamp":1785145482426,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/sticky.min.js?ver=4.0.1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 1556\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":1556,"size_decoded":1772,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text","md5":"f7f1703ee9dda81c864d2185aa879e05","sha1":"9e957778d21389fd55b9cbe31b1661948c6c319d","sha256":"40b8f39d84cbc9dd7801d47b17bb85ba2975cf62e9fc8b60a790396dea502063","sha512":"b4c8b16b5f46009ad59b6d03cdf33561b0349ebcf13379bd2a4fed1db8433978940b935c9fb7b29512188fb77a8ab858158cfc3268a3a173c50095329982b7d9","ssdeep":"","tlshash":"d431580a7af13112538760ef2c1b090cb2b2423e6947681d74fc83cd5f2282826bae74","first_seen":"2026-07-27T08:06:56.364221Z","last_seen":"2026-07-27T09:45:50.900492Z","times_seen":3,"resource_available":true,"data":"LyohCldheXBvaW50cyBTdGlja3kgRWxlbWVudCBTaG9ydGN1dCAtIDQuMC4xCkNvcHlyaWdodCDCqSAyMDExLTIwMTYgQ2FsZWIgVHJvdWdodG9uCkxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KaHR0cHM6Ly9naXRodWIuY29tL2ltYWtld2VidGhpbmdzL3dheXBvaW50cy9ibG9iL21hc3Rlci9saWNlbnNlcy50eHQKKi8KISBmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiB0KHMpIHsKICAgICAgICB0aGlzLm9wdGlvbnMgPSBlLmV4dGVuZCh7fSwgaS5kZWZhdWx0cywgdC5kZWZhdWx0cywgcyksIHRoaXMuZWxlbWVudCA9IHRoaXMub3B0aW9ucy5lbGVtZW50LCB0aGlzLiRlbGVtZW50ID0gZSh0aGlzLmVsZW1lbnQpLCB0aGlzLmNyZWF0ZVdyYXBwZXIoKSwgdGhpcy5jcmVhdGVXYXlwb2ludCgpCiAgICB9CiAgICB2YXIgZSA9IHdpbmRvdy5qUXVlcnksCiAgICAgICAgaSA9IHdpbmRvdy5XYXlwb2ludDsKICAgIHQucHJvdG90eXBlLmNyZWF0ZVdheXBvaW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHQgPSB0aGlzLm9wdGlvbnMuaGFuZGxlcjsKICAgICAgICB0aGlzLndheXBvaW50ID0gbmV3IGkoZS5leHRlbmQoe30sIHRoaXMub3B0aW9ucywgewogICAgICAgICAgICBlbGVtZW50OiB0aGlzLndyYXBwZXIsCiAgICAgICAgICAgIGhhbmRsZXI6IGUucHJveHkoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLmluZGV4T2YoZSkgPiAtMSwKICAgICAgICAgICAgICAgICAgICBzID0gaSA/IHRoaXMuJGVsZW1lbnQub3V0ZXJIZWlnaHQoITApIDogIiI7CiAgICAgICAgICAgICAgICB0aGlzLiR3cmFwcGVyLmhlaWdodChzKSwgdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcyh0aGlzLm9wdGlvbnMuc3R1Y2tDbGFzcywgaSksIHQgJiYgdC5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgIH0sIHRoaXMpCiAgICAgICAgfSkpCiAgICB9LCB0LnByb3RvdHlwZS5jcmVhdGVXcmFwcGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5vcHRpb25zLndyYXBwZXIgJiYgdGhpcy4kZWxlbWVudC53cmFwKHRoaXMub3B0aW9ucy53cmFwcGVyKSwgdGhpcy4kd3JhcHBlciA9IHRoaXMuJGVsZW1lbnQucGFyZW50KCksIHRoaXMud3JhcHBlciA9IHRoaXMuJHdyYXBwZXJbMF0KICAgIH0sIHQucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLiRlbGVtZW50LnBhcmVudCgpWzBdID09PSB0aGlzLndyYXBwZXIgJiYgKHRoaXMud2F5cG9pbnQuZGVzdHJveSgpLCB0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5zdHVja0NsYXNzKSwgdGhpcy5vcHRpb25zLndyYXBwZXIgJiYgdGhpcy4kZWxlbWVudC51bndyYXAoKSkKICAgIH0sIHQuZGVmYXVsdHMgPSB7CiAgICAgICAgd3JhcHBlcjogJzxkaXYgY2xhc3M9InN0aWNreS13cmFwcGVyIiAvPicsCiAgICAgICAgc3R1Y2tDbGFzczogInN0dWNrIiwKICAgICAgICBkaXJlY3Rpb246ICJkb3duIHJpZ2h0IgogICAgfSwgaS5TdGlja3kgPSB0Cn0oKTs="}},"time_used":925,"timings":{"blocked":828,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/css/frontend-legacy.min.css?ver=3.6.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.294Z","timestamp":1785145482294,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/css/frontend-legacy.min.css?ver=3.6.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 17425\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":17425,"size_decoded":17635,"mime_type":"text/css","magic":"ASCII text","md5":"fc186ff5da87f13dfbb72fd787593ec1","sha1":"d99164a3bced994600b1ed2286e483976ee2b132","sha256":"33be5abe86e3b94b81fe05b192e4dfaa926f361c43a27d28c2b60d0aff6c9188","sha512":"138f1dd819f078d6b52ca7e702286e4ca502463fb61630a2d749acaabd5ceff9f4448ac6605b939cf0d48a4a95b87f16d9e244b9a40b27fbed7d563f8f935924","ssdeep":"192:8Iyt1xTghgyNgugYgSgggOgQgkhyNuYSgOQahyNuYSgOQ1eKzNf5rJ/R3FWNi0+B:8","tlshash":"9d7258173d932226308fa97e33df398dd36091e7c491bee4b7edc5028f65da06a94894","first_seen":"2026-07-27T08:06:56.413326Z","last_seen":"2026-07-27T09:45:50.920553Z","times_seen":3,"resource_available":false,"data":"LyohIGVsZW1lbnRvciAtIHYzLjYuMiAtIDA0LTA0LTIwMjIgKi8KCi5lbGVtZW50b3ItYmMtZmxleC13aWRnZXQgLmVsZW1lbnRvci1zZWN0aW9uLWNvbnRlbnQtdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93Pi5lbGVtZW50b3ItY29sdW1uPi5lbGVtZW50b3ItY29sdW1uLXdyYXAgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OwogICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQKfQoKLmVsZW1lbnRvci1iYy1mbGV4LXdpZGdldCAuZWxlbWVudG9yLXNlY3Rpb24tY29udGVudC1taWRkbGU+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1jb2x1bW4td3JhcCB7CiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1iYy1mbGV4LXdpZGdldCAuZWxlbWVudG9yLXNlY3Rpb24tY29udGVudC1ib3R0b20+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1jb2x1bW4td3JhcCB7CiAgICAtd2Via2l0LWJveC1hbGlnbjogZW5kOwogICAgLW1zLWZsZXgtYWxpZ246IGVuZDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLWNvbHVtbi1nYXAtbmFycm93Pi5lbGVtZW50b3Itcm93Pi5lbGVtZW50b3ItY29sdW1uPi5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQ+LmVsZW1lbnRvci13aWRnZXQtd3JhcCB7CiAgICBwYWRkaW5nOiA1cHgKfQoKLmVsZW1lbnRvci1jb2x1bW4tZ2FwLWRlZmF1bHQ+LmVsZW1lbnRvci1yb3c+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZD4uZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIHBhZGRpbmc6IDEwcHgKfQoKLmVsZW1lbnRvci1jb2x1bW4tZ2FwLWV4dGVuZGVkPi5lbGVtZW50b3Itcm93Pi5lbGVtZW50b3ItY29sdW1uPi5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQ+LmVsZW1lbnRvci13aWRnZXQtd3JhcCB7CiAgICBwYWRkaW5nOiAxNXB4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC13aWRlPi5lbGVtZW50b3Itcm93Pi5lbGVtZW50b3ItY29sdW1uPi5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQ+LmVsZW1lbnRvci13aWRnZXQtd3JhcCB7CiAgICBwYWRkaW5nOiAyMHB4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC13aWRlcj4uZWxlbWVudG9yLXJvdz4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkPi5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgewogICAgcGFkZGluZzogMzBweAp9CgpAbWVkaWEgKG1pbi13aWR0aDotMXB4KSB7CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46Zmlyc3QtY2hpbGQgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEwOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA5OwogICAgICAgIG9yZGVyOiA5CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDMpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA5OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA4OwogICAgICAgIG9yZGVyOiA4CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDQpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA4OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDUpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA3OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA2OwogICAgICAgIG9yZGVyOiA2CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDYpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA2OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA1OwogICAgICAgIG9yZGVyOiA1CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDcpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA1OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDgpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAzOwogICAgICAgIG9yZGVyOiAzCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDkpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAzOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAyOwogICAgICAgIG9yZGVyOiAyCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxMDI1cHgpIGFuZCAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+OmZpcnN0LWNoaWxkIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTA7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEwOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA5OwogICAgICAgIG9yZGVyOiA5CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMykgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDk7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDg7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogODsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgICAgICBvcmRlcjogNwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDUpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA3OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA2OwogICAgICAgIG9yZGVyOiA2CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNikgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDY7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgICAgICBvcmRlcjogNAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDgpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAzOwogICAgICAgIG9yZGVyOiAzCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoOSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDM7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDI7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCgxMCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7CiAgICAgICAgb3JkZXI6IDEKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6LTFweCkgYW5kIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46Zmlyc3QtY2hpbGQgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTA7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDk7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogODsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDQpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA4OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDc7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDY7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDcpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA1OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoOCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDQ7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxMDI1cHgpIGFuZCAobWF4LXdpZHRoOi0xcHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+OmZpcnN0LWNoaWxkLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDIpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDMpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDQpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDUpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDYpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDcpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDgpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDkpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogaW5pdGlhbDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogaW5pdGlhbDsKICAgICAgICBvcmRlcjogMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldF9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46Zmlyc3QtY2hpbGQgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTA7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDk7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogODsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldF9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDQpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA4OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0X2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDc7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDY7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldF9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDcpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA1OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0X2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoOCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDQ7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldF9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpmaXJzdC1jaGlsZCB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTE7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgICAgIG9yZGVyOiAxMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDIpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDMpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA5OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA4OwogICAgICAgIG9yZGVyOiA4CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDg7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDc7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDYpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA2OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA1OwogICAgICAgIG9yZGVyOiA1CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNykgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDU7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDQ7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDkpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAzOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAyOwogICAgICAgIG9yZGVyOiAyCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMTApIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAyOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxOwogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xcHgpIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46Zmlyc3QtY2hpbGQgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTA7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDk7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTsKICAgICAgICAtbXMtZmxleC1vcmRlcjogODsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDQpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA4OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNSkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDc7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDY7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDcpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA1OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoOCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDQ7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6LTFweCkgewogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46Zmlyc3QtY2hpbGQsCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMiksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMyksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNCksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNSksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNiksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNyksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoOCksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoOSksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMTApIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiBpbml0aWFsOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiBpbml0aWFsOwogICAgICAgIG9yZGVyOiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlX2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpmaXJzdC1jaGlsZCB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTE7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgICAgIG9yZGVyOiAxMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDIpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDMpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA5OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA4OwogICAgICAgIG9yZGVyOiA4CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlX2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDg7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDc7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGVfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDYpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA2OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA1OwogICAgICAgIG9yZGVyOiA1CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlX2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNykgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDU7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDQ7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGVfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDkpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAzOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAyOwogICAgICAgIG9yZGVyOiAyCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlX2V4dHJhPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMTApIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAyOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxOwogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpmaXJzdC1jaGlsZCB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTE7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgICAgIG9yZGVyOiAxMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDIpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDMpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA5OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA4OwogICAgICAgIG9yZGVyOiA4CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNCkgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDg7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDc7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNzsKICAgICAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDYpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA2OwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiA1OwogICAgICAgIG9yZGVyOiA1CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoNykgewogICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDU7CiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDQ7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+LmVsZW1lbnRvci1yb3c+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNDsKICAgICAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLXJvdz46bnRoLWNoaWxkKDkpIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAzOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAyOwogICAgICAgIG9yZGVyOiAyCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbW9iaWxlPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3Itcm93PjpudGgtY2hpbGQoMTApIHsKICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAyOwogICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxOwogICAgICAgIG9yZGVyOiAxCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQ=="}},"time_used":278,"timings":{"blocked":180,"dns":0,"connect":0,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/jquery.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.320Z","timestamp":1785145482320,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/jquery/jquery.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\r\nSec-Fetch-Dest: script\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Wed, 10 Mar 2021 15:07:24 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":89521,"size_decoded":32439,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (65447)","md5":"02dd5d04add4759122013c5ab4dc5cc2","sha1":"a45a56e396ac549b4ff39b696ce9e0c16a7612de","sha256":"bd4de6a3fc0fb68d6f76ba7b93514b96a92e585c295b5351c31ad92a4b0777ea","sha512":"04690d9875e98f5ae6bf94f5c71b7a0177b374bc09609a0f58312e1c337348749a40e07fe226737dc248bd8fe2f6a489071258619affc7f1df644e4255159615","ssdeep":"1536:DjExXUqJnxDjoXEZxkMV4QYSt0zvDL6gP3h8cApwEIOzVTB/UjPazMdLiX4mQ1vM:DIh8GgP3hujzwbhd3XvSiDQ47GKq","tlshash":"e99309ddb2c6702257a720ba007f510bf236199d6c4d8450f169d8eabc78a4e827bf7d","first_seen":"2023-03-07T01:02:02Z","last_seen":"2026-07-27T13:52:26.928236Z","times_seen":59818,"resource_available":true,"data":"LyohIGpRdWVyeSB2My42LjAgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihDLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25jYXQuYXBwbHkoW10sZSl9LHU9dC5wdXNoLGk9dC5pbmRleE9mLG49e30sbz1uLnRvU3RyaW5nLHY9bi5oYXNPd25Qcm9wZXJ0eSxhPXYudG9TdHJpbmcsbD1hLmNhbGwoT2JqZWN0KSx5PXt9LG09ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuaXRlbX0seD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fSxFPUMuZG9jdW1lbnQsYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjYuMCIsUz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUy5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9Uy5mbj1TLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6UyxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFMuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dSxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFMuZXh0ZW5kPVMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxtKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSlyPWVbdF0sIl9fcHJvdG9fXyIhPT10JiZhIT09ciYmKGwmJnImJihTLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Uy5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPVMuZXh0ZW5kKGwsbyxyKSk6dm9pZCAwIT09ciYmKGFbdF09cikpO3JldHVybiBhfSxTLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49di5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZhLmNhbGwobik9PT1sKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXtiKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKHAoZSkpe2ZvcihuPWUubGVuZ3RoO3I8bjtyKyspaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrfWVsc2UgZm9yKHIgaW4gZSlpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWs7cmV0dXJuIGV9LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxsIT1lJiYocChPYmplY3QoZSkpP1MubWVyZ2Uobiwic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUpOnUuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTppLmNhbGwodCxlLG4pfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZS5sZW5ndGgsYT0hbjtpPG87aSsrKSF0KGVbaV0saSkhPT1hJiZyLnB1c2goZVtpXSk7cmV0dXJuIHJ9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihwKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO3JldHVybiBnKGEpfSxndWlkOjEsc3VwcG9ydDp5fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFMuZm5bU3ltYm9sLml0ZXJhdG9yXT10W1N5bWJvbC5pdGVyYXRvcl0pLFMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtuWyJbb2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO3ZhciBkPWZ1bmN0aW9uKG4pe3ZhciBlLGQsYixvLGksaCxmLGcsdyx1LGwsVCxDLGEsRSx2LHMsYyx5LFM9InNpenpsZSIrMSpuZXcgRGF0ZSxwPW4uZG9jdW1lbnQsaz0wLHI9MCxtPXVlKCkseD11ZSgpLEE9dWUoKSxOPXVlKCksaj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGw9ITApLDB9LEQ9e30uaGFzT3duUHJvcGVydHksdD1bXSxxPXQucG9wLEw9dC5wdXNoLEg9dC5wdXNoLE89dC5zbGljZSxQPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxSPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsST0iKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIsVz0iXFxbIitNKyIqKCIrSSsiKSg/OiIrTSsiKihbKl4kfCF+XT89KSIrTSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0krIikpfCkiK00rIipcXF0iLEY9IjooIitJKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitXKyIpKil8LiopXFwpfCkiLEI9bmV3IFJlZ0V4cChNKyIrIiwiZyIpLCQ9bmV3IFJlZ0V4cCgiXiIrTSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitNKyIrJCIsImciKSxfPW5ldyBSZWdFeHAoIl4iK00rIiosIitNKyIqIiksej1uZXcgUmVnRXhwKCJeIitNKyIqKFs+K35dfCIrTSsiKSIrTSsiKiIpLFU9bmV3IFJlZ0V4cChNKyJ8PiIpLFg9bmV3IFJlZ0V4cChGKSxWPW5ldyBSZWdFeHAoIl4iK0krIiQiKSxHPXtJRDpuZXcgUmVnRXhwKCJeIygiK0krIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrSSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrSSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1cpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitGKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitSKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9IVE1MJC9pLFE9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxKPS9eaFxkJC9pLEs9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxlZT0vWyt+XS8sdGU9bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwocC5jaGlsZE5vZGVzKSxwLmNoaWxkTm9kZXMpLHRbcC5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnkoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhTlt0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiYoVS50ZXN0KHQpfHx6LnRlc3QodCkpKXsoZj1lZS50ZXN0KHQpJiZ5ZShlLnBhcmVudE5vZGUpfHxlKT09PWUmJmQuc2NvcGV8fCgocz1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1zLnJlcGxhY2UocmUsaWUpOmUuc2V0QXR0cmlidXRlKCJpZCIscz1TKSksbz0obD1oKHQpKS5sZW5ndGg7d2hpbGUoby0tKWxbb109KHM/IiMiK3M6IjpzY29wZSIpKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpfXRyeXtyZXR1cm4gSC5hcHBseShuLGYucXVlcnlTZWxlY3RvckFsbChjKSksbn1jYXRjaChlKXtOKHQsITApfWZpbmFsbHl7cz09PVMmJmUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGcodC5yZXBsYWNlKCQsIiQxIiksZSxuLHIpfWZ1bmN0aW9uIHVlKCl7dmFyIHI9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gci5wdXNoKHQrIiAiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVtyLnNoaWZ0KCldLGVbdCsiICJdPW59fWZ1bmN0aW9uIGxlKGUpe3JldHVybiBlW1NdPSEwLGV9ZnVuY3Rpb24gY2UoZSl7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7dmFyIG49ZS5zcGxpdCgifCIpLHI9bi5sZW5ndGg7d2hpbGUoci0tKWIuYXR0ckhhbmRsZVtuW3JdXT10fWZ1bmN0aW9uIHBlKGUsdCl7dmFyIG49dCYmZSxyPW4mJjE9PT1lLm5vZGVUeXBlJiYxPT09dC5ub2RlVHlwZSYmZS5zb3VyY2VJbmRleC10LnNvdXJjZUluZGV4O2lmKHIpcmV0dXJuIHI7aWYobil3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBkZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gaGUobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PXR8fCJidXR0b24iPT09dCkmJmUudHlwZT09PW59fWZ1bmN0aW9uIGdlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iZm9ybSJpbiBlP2UucGFyZW50Tm9kZSYmITE9PT1lLmRpc2FibGVkPyJsYWJlbCJpbiBlPyJsYWJlbCJpbiBlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmRpc2FibGVkPT09dDplLmRpc2FibGVkPT09dDplLmlzRGlzYWJsZWQ9PT10fHxlLmlzRGlzYWJsZWQhPT0hdCYmYWUoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24gdmUoYSl7cmV0dXJuIGxlKGZ1bmN0aW9uKG8pe3JldHVybiBvPStvLGxlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKFtdLGUubGVuZ3RoLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1yW2ldXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24geWUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mb3IoZSBpbiBkPXNlLnN1cHBvcnQ9e30saT1zZS5pc1hNTD1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5hbWVzcGFjZVVSSSxuPWUmJihlLm93bmVyRG9jdW1lbnR8fGUpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hWS50ZXN0KHR8fG4mJm4ubm9kZU5hbWV8fCJIVE1MIil9LFQ9c2Uuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWU/ZS5vd25lckRvY3VtZW50fHxlOnA7cmV0dXJuIHIhPUMmJjk9PT1yLm5vZGVUeXBlJiZyLmRvY3VtZW50RWxlbWVudCYmKGE9KEM9cikuZG9jdW1lbnRFbGVtZW50LEU9IWkoQykscCE9QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuc2NvcGU9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksInVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwmJiFlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSBmaWVsZHNldCBkaXYiKS5sZW5ndGh9KSxkLmF0dHJpYnV0ZXM9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NOYW1lPSJpIiwhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksZC5nZXRFbGVtZW50c0J5VGFnTmFtZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChDLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1LLnRlc3QoQy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxkLmdldEJ5SWQ9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuaWQ9UywhQy5nZXRFbGVtZW50c0J5TmFtZXx8IUMuZ2V0RWxlbWVudHNCeU5hbWUoUykubGVuZ3RofSksZC5nZXRCeUlkPyhiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0sYi5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRCeUlkJiZFKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBuP1tuXTpbXX19KTooYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKHRlLG5lKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gdCYmdC52YWx1ZT09PW59fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOmQucXNhP3QucXVlcnlTZWxlY3RvckFsbChlKTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lmKCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGIuZmluZC5DTEFTUz1kLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJkUpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0scz1bXSx2PVtdLChkLnFzYT1LLnRlc3QoQy5xdWVyeVNlbGVjdG9yQWxsKSkmJihjZShmdW5jdGlvbihlKXt2YXIgdDthLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrUysiJz48L2E+PHNlbGVjdCBpZD0nIitTKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnYucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitSKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrUysiLV0iKS5sZW5ndGh8fHYucHVzaCgifj0iKSwodD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqbmFtZSIrTSsiKj0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHYucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitTKyIrKiIpLmxlbmd0aHx8di5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiXFxcZiIpLHYucHVzaCgiW1xcclxcblxcZl0iKX0pLGNlKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnYucHVzaCgibmFtZSIrTSsiKlsqXiR8IX5dPz0iKSwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmdi5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iiksdi5wdXNoKCIsLio6Iil9KSksKGQubWF0Y2hlc1NlbGVjdG9yPUsudGVzdChjPWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3IpKSYmY2UoZnVuY3Rpb24oZSl7ZC5kaXNjb25uZWN0ZWRNYXRjaD1jLmNhbGwoZSwiKiIpLGMuY2FsbChlLCJbcyE9JyddOngiKSxzLnB1c2goIiE9IixGKX0pLHY9di5sZW5ndGgmJm5ldyBSZWdFeHAodi5qb2luKCJ8IikpLHM9cy5sZW5ndGgmJm5ldyBSZWdFeHAocy5qb2luKCJ8IikpLHQ9Sy50ZXN0KGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHk9dHx8Sy50ZXN0KGEuY29udGFpbnMpP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFyZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0saj10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09Q3x8ZS5vd25lckRvY3VtZW50PT1wJiZ5KHAsZSk/LTE6dD09Q3x8dC5vd25lckRvY3VtZW50PT1wJiZ5KHAsdCk/MTp1P1AodSxlKS1QKHUsdCk6MDo0Jm4/LTE6MSl9OmZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbixyPTAsaT1lLnBhcmVudE5vZGUsbz10LnBhcmVudE5vZGUsYT1bZV0scz1bdF07aWYoIWl8fCFvKXJldHVybiBlPT1DPy0xOnQ9PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09cD8tMTpzW3JdPT1wPzE6MH0pLEN9LHNlLm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc2UoZSxudWxsLG51bGwsdCl9LHNlLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKFQoZSksZC5tYXRjaGVzU2VsZWN0b3ImJkUmJiFOW3QrIiAiXSYmKCFzfHwhcy50ZXN0KHQpKSYmKCF2fHwhdi50ZXN0KHQpKSl0cnl7dmFyIG49Yy5jYWxsKGUsdCk7aWYobnx8ZC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe04odCwhMCl9cmV0dXJuIDA8c2UodCxDLG51bGwsW2VdKS5sZW5ndGh9LHNlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSkseShlLHQpfSxzZS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZELmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KGopLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1tW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJm0oZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoQiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx2KXt2YXIgeT0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT12P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9eSE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHkpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtTXXx8KGFbU109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09ayYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W2sscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtrLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXYpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW1NdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoJCwiJDEiKSk7cmV0dXJuIHNbU10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnZlKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp2ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6dmUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnZlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bayxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW1NdfHwoZVtTXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PWsmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltTXSYmKHY9Q2UodikpLHkmJiF5W1NdJiYoeT1DZSh5LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/eXx8KGU/ZDpsfHx2KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx2KXtpPVRlKHAsdSksdihpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYoeXx8ZCl7aWYoeSl7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7eShudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9eT9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx5P3kobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlbU10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoJCwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKCQsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9QVtlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtTXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPUEoZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPWsrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT1DfHx0fHxpKTtsIT09ZyYmbnVsbCE9KG89ZFtsXSk7bCsrKXtpZih4JiZvKXthPTAsdHx8by5vd25lckRvY3VtZW50PT1DfHwoVChvKSxuPSFFKTt3aGlsZShzPXZbYSsrXSlpZihzKG8sdHx8QyxuKSl7ci5wdXNoKG8pO2JyZWFrfWkmJihrPWgpfW0mJigobz0hcyYmbykmJnUtLSxlJiZjLnB1c2gobykpfWlmKHUrPWwsbSYmbCE9PXUpe2E9MDt3aGlsZShzPXlbYSsrXSlzKGMsZix0LG4pO2lmKGUpe2lmKDA8dSl3aGlsZShsLS0pY1tsXXx8ZltsXXx8KGZbbF09cS5jYWxsKHIpKTtmPVRlKGYpfUguYXBwbHkocixmKSxpJiYhZSYmMDxmLmxlbmd0aCYmMTx1K3kubGVuZ3RoJiZzZS51bmlxdWVTb3J0KHIpfXJldHVybiBpJiYoaz1oLHc9cCksY30sbT9sZShyKTpyKSkpLnNlbGVjdG9yPWV9cmV0dXJuIGF9LGc9c2Uuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxjPSFyJiZoKGU9bC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09Yy5sZW5ndGgpe2lmKDI8KG89Y1swXT1jWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1vWzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmRSYmYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZighKHQ9KGIuZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksdCl8fFtdKVswXSkpcmV0dXJuIG47bCYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1HLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6by5sZW5ndGg7d2hpbGUoaS0tKXtpZihhPW9baV0sYi5yZWxhdGl2ZVtzPWEudHlwZV0pYnJlYWs7aWYoKHU9Yi5maW5kW3NdKSYmKHI9dShhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksZWUudGVzdChvWzBdLnR5cGUpJiZ5ZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8uc3BsaWNlKGksMSksIShlPXIubGVuZ3RoJiZ4ZShvKSkpcmV0dXJuIEguYXBwbHkobixyKSxuO2JyZWFrfX19cmV0dXJuKGx8fGYoZSxjKSkocix0LCFFLG4sIXR8fGVlLnRlc3QoZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpLG59LGQuc29ydFN0YWJsZT1TLnNwbGl0KCIiKS5zb3J0KGopLmpvaW4oIiIpPT09UyxkLmRldGVjdER1cGxpY2F0ZXM9ISFsLFQoKSxkLnNvcnREZXRhY2hlZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gMSZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuKXJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBlIj09PXQudG9Mb3dlckNhc2UoKT8xOjIpfSksZC5hdHRyaWJ1dGVzJiZjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxpbnB1dC8+IixlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxmZSgidmFsdWUiLGZ1bmN0aW9uKGUsdCxuKXtpZighbiYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8ZmUoUixmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoIW4pcmV0dXJuITA9PT1lW3RdP3QudG9Mb3dlckNhc2UoKToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9KSxzZX0oQyk7Uy5maW5kPWQsUy5leHByPWQuc2VsZWN0b3JzLFMuZXhwclsiOiJdPVMuZXhwci5wc2V1ZG9zLFMudW5pcXVlU29ydD1TLnVuaXF1ZT1kLnVuaXF1ZVNvcnQsUy50ZXh0PWQuZ2V0VGV4dCxTLmlzWE1MRG9jPWQuaXNYTUwsUy5jb250YWlucz1kLmNvbnRhaW5zLFMuZXNjYXBlU2VsZWN0b3I9ZC5lc2NhcGU7dmFyIGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLGk9dm9pZCAwIT09bjt3aGlsZSgoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGUpaWYoMT09PWUubm9kZVR5cGUpe2lmKGkmJlMoZSkuaXMobikpYnJlYWs7ci5wdXNoKGUpfXJldHVybiByfSxUPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufSxrPVMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7ZnVuY3Rpb24gQShlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9dmFyIE49L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZnVuY3Rpb24gaihlLG4scil7cmV0dXJuIG0obik/Uy5ncmVwKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4uY2FsbChlLHQsZSkhPT1yfSk6bi5ub2RlVHlwZT9TLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PW4hPT1yfSk6InN0cmluZyIhPXR5cGVvZiBuP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPGkuY2FsbChuLGUpIT09cn0pOlMuZmlsdGVyKG4sZSxyKX1TLmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT9TLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSk/W3JdOltdOlMuZmluZC5tYXRjaGVzKGUsUy5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxTLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYoUy5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKylTLmZpbmQoZSxpW3RdLG4pO3JldHVybiAxPHI/Uy51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhaih0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmay50ZXN0KGUpP1MoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgRCxxPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KFMuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZighZSlyZXR1cm4gdGhpcztpZihuPW58fEQsInN0cmluZyI9PXR5cGVvZiBlKXtpZighKHI9IjwiPT09ZVswXSYmIj4iPT09ZVtlLmxlbmd0aC0xXSYmMzw9ZS5sZW5ndGg/W251bGwsZSxudWxsXTpxLmV4ZWMoZSkpfHwhclsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKHJbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIFM/dFswXTp0LFMubWVyZ2UodGhpcyxTLnBhcnNlSFRNTChyWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OkUsITApKSxOLnRlc3QoclsxXSkmJlMuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KW0odGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4oaT1FLmdldEVsZW1lbnRCeUlkKHJbMl0pKSYmKHRoaXNbMF09aSx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTptKGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKFMpOlMubWFrZUFycmF5KGUsdGhpcyl9KS5wcm90b3R5cGU9Uy5mbixEPVMoRSk7dmFyIEw9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sSD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBPKGUsdCl7d2hpbGUoKGU9ZVt0XSkmJjEhPT1lLm5vZGVUeXBlKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGUpe3ZhciB0PVMoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoUy5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZTKGUpO2lmKCFrLnRlc3QoZSkpZm9yKDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbiE9PXQ7bj1uLnBhcmVudE5vZGUpaWYobi5ub2RlVHlwZTwxMSYmKGE/LTE8YS5pbmRleChuKToxPT09bi5ub2RlVHlwZSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPG8ubGVuZ3RoP1MudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP2kuY2FsbChTKGUpLHRoaXNbMF0pOmkuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy51bmlxdWVTb3J0KFMubWVyZ2UodGhpcy5nZXQoKSxTKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLFMuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gVCgoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuY29udGVudERvY3VtZW50JiZyKGUuY29udGVudERvY3VtZW50KT9lLmNvbnRlbnREb2N1bWVudDooQShlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLFMubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihyLGkpe1MuZm5bcl09ZnVuY3Rpb24oZSx0KXt2YXIgbj1TLm1hcCh0aGlzLGksZSk7cmV0dXJuIlVudGlsIiE9PXIuc2xpY2UoLTUpJiYodD1lKSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJihuPVMuZmlsdGVyKHQsbikpLDE8dGhpcy5sZW5ndGgmJihIW3JdfHxTLnVuaXF1ZVNvcnQobiksTC50ZXN0KHIpJiZuLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyIFA9L1teXHgyMFx0XHJcblxmXSsvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlfWZ1bmN0aW9uIE0oZSl7dGhyb3cgZX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpO3RyeXtlJiZtKGk9ZS5wcm9taXNlKT9pLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pOmUmJm0oaT1lLnRoZW4pP2kuY2FsbChlLHQsbik6dC5hcHBseSh2b2lkIDAsW2VdLnNsaWNlKHIpKX1jYXRjaChlKXtuLmFwcGx5KHZvaWQgMCxbZV0pfX1TLkNhbGxiYWNrcz1mdW5jdGlvbihyKXt2YXIgZSxuO3I9InN0cmluZyI9PXR5cGVvZiByPyhlPXIsbj17fSxTLmVhY2goZS5tYXRjaChQKXx8W10sZnVuY3Rpb24oZSx0KXtuW3RdPSEwfSksbik6Uy5leHRlbmQoe30scik7dmFyIGksdCxvLGEscz1bXSx1PVtdLGw9LTEsYz1mdW5jdGlvbigpe2ZvcihhPWF8fHIub25jZSxvPWk9ITA7dS5sZW5ndGg7bD0tMSl7dD11LnNoaWZ0KCk7d2hpbGUoKytsPHMubGVuZ3RoKSExPT09c1tsXS5hcHBseSh0WzBdLHRbMV0pJiZyLnN0b3BPbkZhbHNlJiYobD1zLmxlbmd0aCx0PSExKX1yLm1lbW9yeXx8KHQ9ITEpLGk9ITEsYSYmKHM9dD9bXToiIil9LGY9e2FkZDpmdW5jdGlvbigpe3JldHVybiBzJiYodCYmIWkmJihsPXMubGVuZ3RoLTEsdS5wdXNoKHQpKSxmdW5jdGlvbiBuKGUpe1MuZWFjaChlLGZ1bmN0aW9uKGUsdCl7bSh0KT9yLnVuaXF1ZSYmZi5oYXModCl8fHMucHVzaCh0KTp0JiZ0Lmxlbmd0aCYmInN0cmluZyIhPT13KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIWkmJmMoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIFMuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgbjt3aGlsZSgtMTwobj1TLmluQXJyYXkodCxzLG4pKSlzLnNwbGljZShuLDEpLG48PWwmJmwtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gZT8tMTxTLmluQXJyYXkoZSxzKTowPHMubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBzJiYocz1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPXU9W10scz10PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXN9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYT11PVtdLHR8fGl8fChzPXQ9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhYX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KHQ9W2UsKHQ9dHx8W10pLnNsaWNlP3Quc2xpY2UoKTp0XSx1LnB1c2godCksaXx8YygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFvfX07cmV0dXJuIGZ9LFMuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgbz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsUy5DYWxsYmFja3MoIm1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0saT0icGVuZGluZyIsYT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGUpe3JldHVybiBhLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cztyZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihyKXtTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPW0oaVt0WzRdXSkmJmlbdFs0XV07c1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJm0oZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpOnJbdFswXSsiV2l0aCJdKHRoaXMsbj9bZV06YXJndW1lbnRzKX0pfSksaT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKHQsbixyKXt2YXIgdT0wO2Z1bmN0aW9uIGwoaSxvLGEscyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPWFyZ3VtZW50cyxlPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighKGk8dSkpe2lmKChlPWEuYXBwbHkobixyKSk9PT1vLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTt0PWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmZS50aGVuLG0odCk/cz90LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scykpOih1KyssdC5jYWxsKGUsbCh1LG8sUixzKSxsKHUsbyxNLHMpLGwodSxvLFIsby5ub3RpZnlXaXRoKSkpOihhIT09UiYmKG49dm9pZCAwLHI9W2VdKSwoc3x8by5yZXNvbHZlV2l0aCkobixyKSl9fSx0PXM/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7Uy5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soZSx0LnN0YWNrVHJhY2UpLHU8PWkrMSYmKGEhPT1NJiYobj12b2lkIDAscj1bZV0pLG8ucmVqZWN0V2l0aChuLHIpKX19O2k/dCgpOihTLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuc3RhY2tUcmFjZT1TLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxDLnNldFRpbWVvdXQodCkpfX1yZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihlKXtvWzBdWzNdLmFkZChsKDAsZSxtKHIpP3I6UixlLm5vdGlmeVdpdGgpKSxvWzFdWzNdLmFkZChsKDAsZSxtKHQpP3Q6UikpLG9bMl1bM10uYWRkKGwoMCxlLG0obik/bjpNKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/Uy5leHRlbmQoZSxhKTphfX0scz17fTtyZXR1cm4gUy5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLHI9dFs1XTthW3RbMV1dPW4uYWRkLHImJm4uYWRkKGZ1bmN0aW9uKCl7aT1yfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLHNbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gc1t0WzBdKyJXaXRoIl0odGhpcz09PXM/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxzW3RbMF0rIldpdGgiXT1uLmZpcmVXaXRofSksYS5wcm9taXNlKHMpLGUmJmUuY2FsbChzLHMpLHN9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCx0PW4scj1BcnJheSh0KSxpPXMuY2FsbChhcmd1bWVudHMpLG89Uy5EZWZlcnJlZCgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxpW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9zLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8by5yZXNvbHZlV2l0aChyLGkpfX07aWYobjw9MSYmKEkoZSxvLmRvbmUoYSh0KSkucmVzb2x2ZSxvLnJlamVjdCwhbiksInBlbmRpbmciPT09by5zdGF0ZSgpfHxtKGlbdF0mJmlbdF0udGhlbikpKXJldHVybiBvLnRoZW4oKTt3aGlsZSh0LS0pSShpW3RdLGEodCksby5yZWplY3QpO3JldHVybiBvLnByb21pc2UoKX19KTt2YXIgVz0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oZSx0KXtDLmNvbnNvbGUmJkMuY29uc29sZS53YXJuJiZlJiZXLnRlc3QoZS5uYW1lKSYmQy5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrZS5tZXNzYWdlLGUuc3RhY2ssdCl9LFMucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oZSl7Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTt2YXIgRj1TLkRlZmVycmVkKCk7ZnVuY3Rpb24gQigpe0UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixCKSxTLnJlYWR5KCl9Uy5mbi5yZWFkeT1mdW5jdGlvbihlKXtyZXR1cm4gRi50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpe1MucmVhZHlFeGNlcHRpb24oZSl9KSx0aGlzfSxTLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tUy5yZWFkeVdhaXQ6Uy5pc1JlYWR5KXx8KFMuaXNSZWFkeT0hMCkhPT1lJiYwPC0tUy5yZWFkeVdhaXR8fEYucmVzb2x2ZVdpdGgoRSxbU10pfX0pLFMucmVhZHkudGhlbj1GLnRoZW4sImNvbXBsZXRlIj09PUUucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09RS5yZWFkeVN0YXRlJiYhRS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/Qy5zZXRUaW1lb3V0KFMucmVhZHkpOihFLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEIpLEMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsQikpO3ZhciAkPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51bGw9PW47aWYoIm9iamVjdCI9PT13KG4pKWZvcihzIGluIGk9ITAsbikkKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLG0ocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwoUyhlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxfPS9eLW1zLS8sej0vLShbYS16XSkvZztmdW5jdGlvbiBVKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBYKGUpe3JldHVybiBlLnJlcGxhY2UoXywibXMtIikucmVwbGFjZSh6LFUpfXZhciBWPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gRygpe3RoaXMuZXhwYW5kbz1TLmV4cGFuZG8rRy51aWQrK31HLnVpZD0xLEcucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LFYoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW1godCldPW47ZWxzZSBmb3IociBpbiB0KWlbWChyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtYKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChYKToodD1YKHQpKWluIHI/W3RdOnQubWF0Y2goUCl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHxTLmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiFTLmlzRW1wdHlPYmplY3QodCl9fTt2YXIgWT1uZXcgRyxRPW5ldyBHLEo9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxLPS9bQS1aXS9nO2Z1bmN0aW9uIFooZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShLLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Si50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fVEuc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufVMuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBRLmhhc0RhdGEoZSl8fFkuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFEuYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gWS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1kucmVtb3ZlKGUsdCl9fSksUy5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1RLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVkuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9WChyLnNsaWNlKDUpKSxaKG8scixpW3JdKSk7WS5zZXQobywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGl9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbil9KTokKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ7aWYobyYmdm9pZCAwPT09ZSlyZXR1cm4gdm9pZCAwIT09KHQ9US5nZXQobyxuKSk/dDp2b2lkIDAhPT0odD1aKG8sbikpP3Q6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbixlKX0pfSxudWxsLGUsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtRLnJlbW92ZSh0aGlzLGUpfSl9fSksUy5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVldWUiLHI9WS5nZXQoZSx0KSxuJiYoIXJ8fEFycmF5LmlzQXJyYXkobik/cj1ZLmFjY2VzcyhlLHQsUy5tYWtlQXJyYXkobikpOnIucHVzaChuKSkscnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0PXR8fCJmeCI7dmFyIG49Uy5xdWV1ZShlLHQpLHI9bi5sZW5ndGgsaT1uLnNoaWZ0KCksbz1TLl9xdWV1ZUhvb2tzKGUsdCk7ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYmKCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9wLGkuY2FsbChlLGZ1bmN0aW9uKCl7Uy5kZXF1ZXVlKGUsdCl9LG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIFkuZ2V0KGUsbil8fFkuYWNjZXNzKGUsbix7ZW1wdHk6Uy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7WS5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksUy5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJihuPXQsdD0iZngiLGUtLSksYXJndW1lbnRzLmxlbmd0aDxlP1MucXVldWUodGhpc1swXSx0KTp2b2lkIDA9PT1uP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Uy5xdWV1ZSh0aGlzLHQsbik7Uy5fcXVldWVIb29rcyh0aGlzLHQpLCJmeCI9PT10JiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZTLmRlcXVldWUodGhpcyx0KX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9Uy5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVuY3Rpb24oKXstLXJ8fGkucmVzb2x2ZVdpdGgobyxbb10pfTsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8ImZ4Ijt3aGlsZShhLS0pKG49WS5nZXQob1thXSxlKyJxdWV1ZUhvb2tzIikpJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgZWU9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsdGU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK2VlKyIpKFthLXolXSopJCIsImkiKSxuZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLHJlPUUuZG9jdW1lbnRFbGVtZW50LGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sb2U9e2NvbXBvc2VkOiEwfTtyZS5nZXRSb290Tm9kZSYmKGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShvZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibm9uZSI9PT0oZT10fHxlKS5zdHlsZS5kaXNwbGF5fHwiIj09PWUuc3R5bGUuZGlzcGxheSYmaWUoZSkmJiJub25lIj09PVMuY3NzKGUsImRpc3BsYXkiKX07ZnVuY3Rpb24gc2UoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBTLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChTLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihTLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmdGUuZXhlYyhTLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pUy5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLFMuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgdWU9e307ZnVuY3Rpb24gbGUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109WS5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmYWUocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT11ZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9Uy5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSx1ZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsWS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthZSh0aGlzKT9TKHRoaXMpLnNob3coKTpTKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBjZSxmZSxwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7Y2U9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKGZlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksZmUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGNlLmFwcGVuZENoaWxkKGZlKSx5LmNoZWNrQ2xvbmU9Y2UuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGNlLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIseS5ub0Nsb25lQ2hlY2tlZD0hIWNlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjZS5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+Iix5Lm9wdGlvbj0hIWNlLmxhc3RDaGlsZDt2YXIgZ2U9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB2ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP1MubWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24geWUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspWS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFkuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2UudGJvZHk9Z2UudGZvb3Q9Z2UuY29sZ3JvdXA9Z2UuY2FwdGlvbj1nZS50aGVhZCxnZS50aD1nZS50ZCx5Lm9wdGlvbnx8KGdlLm9wdGdyb3VwPWdlLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgbWU9Lzx8JiM/XHcrOy87ZnVuY3Rpb24geGUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsbCxjLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscD1bXSxkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWlmKChvPWVbZF0pfHwwPT09bylpZigib2JqZWN0Ij09PXcobykpUy5tZXJnZShwLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYobWUudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KGRlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1nZVtzXXx8Z2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStTLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxjPXVbMF07d2hpbGUoYy0tKWE9YS5sYXN0Q2hpbGQ7Uy5tZXJnZShwLGEuY2hpbGROb2RlcyksKGE9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLGQ9MDt3aGlsZShvPXBbZCsrXSlpZihyJiYtMTxTLmluQXJyYXkobyxyKSlpJiZpLnB1c2gobyk7ZWxzZSBpZihsPWllKG8pLGE9dmUoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksbCYmeWUoYSksbil7Yz0wO3doaWxlKG89YVtjKytdKWhlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgYmU9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHdlKCl7cmV0dXJuITB9ZnVuY3Rpb24gVGUoKXtyZXR1cm4hMX1mdW5jdGlvbiBDZShlLHQpe3JldHVybiBlPT09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEUuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fSgpPT0oImZvY3VzIj09PXQpfWZ1bmN0aW9uIEVlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHMgaW4ic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApLHQpRWUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9VGU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIFMoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD1TLmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX1mdW5jdGlvbiBTZShlLGksbyl7bz8oWS5zZXQoZSxpLCExKSxTLmV2ZW50LmFkZChlLGkse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj1ZLmdldCh0aGlzLGkpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbaV0pe2lmKHIubGVuZ3RoKShTLmV2ZW50LnNwZWNpYWxbaV18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihyPXMuY2FsbChhcmd1bWVudHMpLFkuc2V0KHRoaXMsaSxyKSx0PW8odGhpcyxpKSx0aGlzW2ldKCksciE9PShuPVkuZ2V0KHRoaXMsaSkpfHx0P1kuc2V0KHRoaXMsaSwhMSk6bj17fSxyIT09bilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksbiYmbi52YWx1ZX1lbHNlIHIubGVuZ3RoJiYoWS5zZXQodGhpcyxpLHt2YWx1ZTpTLmV2ZW50LnRyaWdnZXIoUy5leHRlbmQoclswXSxTLkV2ZW50LnByb3RvdHlwZSksci5zbGljZSgxKSx0aGlzKX0pLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX0pKTp2b2lkIDA9PT1ZLmdldChlLGkpJiZTLmV2ZW50LmFkZChlLGksd2UpfVMuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5nZXQodCk7aWYoVih0KSl7bi5oYW5kbGVyJiYobj0obz1uKS5oYW5kbGVyLGk9by5zZWxlY3RvciksaSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihyZSxpKSxuLmd1aWR8fChuLmd1aWQ9Uy5ndWlkKyspLCh1PXYuZXZlbnRzKXx8KHU9di5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFMmJlMuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP1MuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9YmUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9Uy5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxTLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5oYXNEYXRhKGUpJiZZLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9YmUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fFMucmVtb3ZlRXZlbnQoZSxkLHYuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KVMuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Uy5pc0VtcHR5T2JqZWN0KHUpJiZZLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdT1TLmV2ZW50LmZpeChlKSxsPShZLmdldCh0aGlzLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbdS50eXBlXXx8W10sYz1TLmV2ZW50LnNwZWNpYWxbdS50eXBlXXx8e307Zm9yKHNbMF09dSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylzW3RdPWFyZ3VtZW50c1t0XTtpZih1LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdSkpe2E9Uy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdSxsKSx0PTA7d2hpbGUoKGk9YVt0KytdKSYmIXUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxuPTA7d2hpbGUoKG89aS5oYW5kbGVyc1tuKytdKSYmIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl1LnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiF1LnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fCh1LmhhbmRsZU9iaj1vLHUuZGF0YT1vLmRhdGEsdm9pZCAwIT09KHI9KChTLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fG8uaGFuZGxlcikuYXBwbHkoaS5lbGVtLHMpKSYmITE9PT0odS5yZXN1bHQ9cikmJih1LnByZXZlbnREZWZhdWx0KCksdS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBjLnBvc3REaXNwYXRjaCYmYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLHUpLHUucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHM9W10sdT10LmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYhKCJjbGljayI9PT1lLnR5cGUmJjE8PWUuYnV0dG9uKSlmb3IoO2whPT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8ITAhPT1sLmRpc2FibGVkKSl7Zm9yKG89W10sYT17fSxuPTA7bjx1O24rKyl2b2lkIDA9PT1hW2k9KHI9dFtuXSkuc2VsZWN0b3IrIiAiXSYmKGFbaV09ci5uZWVkc0NvbnRleHQ/LTE8UyhpLHRoaXMpLmluZGV4KGwpOlMuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLkV2ZW50LnByb3RvdHlwZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6bShlKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gZSh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbUy5leHBhbmRvXT9lOm5ldyBTLkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIsd2UpLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlkuZ2V0KHQsImNsaWNrIil8fEEodCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LFMucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LFMuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBTLkV2ZW50KSlyZXR1cm4gbmV3IFMuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT93ZTpUZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZTLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbUy5leHBhbmRvXT0hMH0sUy5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOlRlLGlzUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD13ZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sUy5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtTLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIFNlKHRoaXMsZSxDZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gU2UodGhpcyxlKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZGVsZWdhdGVUeXBlOnR9fSksUy5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe1MuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxTLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxTLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEVlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRWUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosUyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49VGUpLHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIGtlPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLEFlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLE5lPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBqZShlLHQpe3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIERlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIExlKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihzPVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1EuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19ZnVuY3Rpb24gSGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYheS5jaGVja0Nsb25lJiZBZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksSGUodCxyLGksbyl9KTtpZihmJiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAodmUoZSwic2NyaXB0IiksRGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCkscyYmUy5tZXJnZShhLHZlKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLHFlKSxjPTA7YzxzO2MrKyl1PWFbY10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShOZSwiIiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gT2UoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xlYW5EYXRhKHZlKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmeWUodmUociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEoeS5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9dmUoYykscj0wLGk9KG89dmUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAwLCJpbnB1dCI9PT0obD11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHZlKGUpLGE9YXx8dmUoYykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylMZShvW3JdLGFbcl0pO2Vsc2UgTGUoZSxjKTtyZXR1cm4gMDwoYT12ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ5ZShhLCFmJiZ2ZShlLCJzY3JpcHQiKSksY30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVtb3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYmKG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBPZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9lKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fGplKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9amUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEodmUoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIWtlLnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKFMuY2xlYW5EYXRhKHZlKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYoUy5jbGVhbkRhdGEodmUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxTLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltvXSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUGU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksUmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxNZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBpbiByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sSWU9bmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksImkiKTtmdW5jdGlvbiBXZShlLHQsbil7dmFyIHIsaSxvLGEscz1lLnN0eWxlO3JldHVybihuPW58fFJlKGUpKSYmKCIiIT09KGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3RdKXx8aWUoZSl8fChhPVMuc3R5bGUoZSx0KSksIXkucGl4ZWxCb3hTdHlsZXMoKSYmUGUudGVzdChhKSYmSWUudGVzdCh0KSYmKHI9cy53aWR0aCxpPXMubWluV2lkdGgsbz1zLm1heFdpZHRoLHMubWluV2lkdGg9cy5tYXhXaWR0aD1zLndpZHRoPWEsYT1uLndpZHRoLHMud2lkdGg9cixzLm1pbldpZHRoPWkscy5tYXhXaWR0aD1vKSksdm9pZCAwIT09YT9hKyIiOmF9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWUoKSlyZXR1cm4odGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fSFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZihsKXt1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAlO3RvcDoxJSIscmUuYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7dmFyIGU9Qy5nZXRDb21wdXRlZFN0eWxlKGwpO249IjElIiE9PWUudG9wLHM9MTI9PT10KGUubWFyZ2luTGVmdCksbC5zdHlsZS5yaWdodD0iNjAlIixvPTM2PT09dChlLnJpZ2h0KSxyPTM2PT09dChlLndpZHRoKSxsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT0xMj09PXQobC5vZmZzZXRXaWR0aC8zKSxyZS5yZW1vdmVDaGlsZCh1KSxsPW51bGx9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSl9dmFyIG4scixpLG8sYSxzLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUUuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIseS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsUy5leHRlbmQoeSx7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxufSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHN9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGl9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7cmV0dXJuIG51bGw9PWEmJihlPUUuY3JlYXRlRWxlbWVudCgidGFibGUiKSx0PUUuY3JlYXRlRWxlbWVudCgidHIiKSxuPUUuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsdC5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MXB4IHNvbGlkIix0LnN0eWxlLmhlaWdodD0iMXB4IixuLnN0eWxlLmhlaWdodD0iOXB4IixuLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixyZS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxyPUMuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxhPXBhcnNlSW50KHIuaGVpZ2h0LDEwKStwYXJzZUludChyLmJvcmRlclRvcFdpZHRoLDEwKStwYXJzZUludChyLmJvcmRlckJvdHRvbVdpZHRoLDEwKT09PXQub2Zmc2V0SGVpZ2h0LHJlLnJlbW92ZUNoaWxkKGUpKSxhfX0pKX0oKTt2YXIgQmU9WyJXZWJraXQiLCJNb3oiLCJtcyJdLCRlPUUuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsX2U9e307ZnVuY3Rpb24gemUoZSl7dmFyIHQ9Uy5jc3NQcm9wc1tlXXx8X2VbZV07cmV0dXJuIHR8fChlIGluICRlP2U6X2VbZV09ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj1CZS5sZW5ndGg7d2hpbGUobi0tKWlmKChlPUJlW25dK3QpaW4gJGUpcmV0dXJuIGV9KGUpfHxlKX12YXIgVWU9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFhlPS9eLS0vLFZlPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxHZT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZnVuY3Rpb24gWWUoZSx0LG4pe3ZhciByPXRlLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIpOnR9ZnVuY3Rpb24gUWUoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0wO2lmKG49PT0ocj8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwO2Zvcig7YTw0O2ErPTIpIm1hcmdpbiI9PT1uJiYodSs9Uy5jc3MoZSxuK25lW2FdLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYodS09Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSkpLCJtYXJnaW4iIT09biYmKHUtPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKSkpOih1Kz1TLmNzcyhlLCJwYWRkaW5nIituZVthXSwhMCxpKSwicGFkZGluZyIhPT1uP3UrPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKTpzKz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpO3JldHVybiFyJiYwPD1vJiYodSs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVsib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKV0tby11LXMtLjUpKXx8MCksdX1mdW5jdGlvbiBKZShlLHQsbil7dmFyIHI9UmUoZSksaT0oIXkuYm94U2l6aW5nUmVsaWFibGUoKXx8bikmJiJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsciksbz1pLGE9V2UoZSx0LHIpLHM9Im9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7aWYoUGUudGVzdChhKSl7aWYoIW4pcmV0dXJuIGE7YT0iYXV0byJ9cmV0dXJuKCF5LmJveFNpemluZ1JlbGlhYmxlKCkmJml8fCF5LnJlbGlhYmxlVHJEaW1lbnNpb25zKCkmJkEoZSwidHIiKXx8ImF1dG8iPT09YXx8IXBhcnNlRmxvYXQoYSkmJiJpbmxpbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIsITEscikpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoaT0iYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLChvPXMgaW4gZSkmJihhPWVbc10pKSwoYT1wYXJzZUZsb2F0KGEpfHwwKStRZShlLHQsbnx8KGk/ImJvcmRlciI6ImNvbnRlbnQiKSxvLHIsYSkrInB4In1mdW5jdGlvbiBLZShlLHQsbixyLGkpe3JldHVybiBuZXcgS2UucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX1TLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVdlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJjMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIGksbyxhLHM9WCh0KSx1PVhlLnRlc3QodCksbD1lLnN0eWxlO2lmKHV8fCh0PXplKHMpKSxhPVMuY3NzSG9va3NbdF18fFMuY3NzSG9va3Nbc10sdm9pZCAwPT09bilyZXR1cm4gYSYmImdldCJpbiBhJiZ2b2lkIDAhPT0oaT1hLmdldChlLCExLHIpKT9pOmxbdF07InN0cmluZyI9PT0obz10eXBlb2YgbikmJihpPXRlLmV4ZWMobikpJiZpWzFdJiYobj1zZShlLHQsaSksbz0ibnVtYmVyIiksbnVsbCE9biYmbj09biYmKCJudW1iZXIiIT09b3x8dXx8KG4rPWkmJmlbM118fChTLmNzc051bWJlcltzXT8iIjoicHgiKSkseS5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobFt0XT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/bC5zZXRQcm9wZXJ0eSh0LG4pOmxbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVgodCk7cmV0dXJuIFhlLnRlc3QodCl8fCh0PXplKHMpKSwoYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hvb2tzW3NdKSYmImdldCJpbiBhJiYoaT1hLmdldChlLCEwLG4pKSx2b2lkIDA9PT1pJiYoaT1XZShlLHQscikpLCJub3JtYWwiPT09aSYmdCBpbiBHZSYmKGk9R2VbdF0pLCIiPT09bnx8bj8obz1wYXJzZUZsb2F0KGkpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLFMuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oZSx1KXtTLmNzc0hvb2tzW3VdPXtnZXQ6ZnVuY3Rpb24oZSx0LG4pe2lmKHQpcmV0dXJuIVVlLnRlc3QoUy5jc3MoZSwiZGlzcGxheSIpKXx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9KZShlLHUsbik6TWUoZSxWZSxmdW5jdGlvbigpe3JldHVybiBKZShlLHUsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPVJlKGUpLG89IXkuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aS5wb3NpdGlvbixhPShvfHxuKSYmImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxpKSxzPW4/UWUoZSx1LG4sYSxpKTowO3JldHVybiBhJiZvJiYocy09TWF0aC5jZWlsKGVbIm9mZnNldCIrdVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSldLXBhcnNlRmxvYXQoaVt1XSktUWUoZSx1LCJib3JkZXIiLCExLGkpLS41KSkscyYmKHI9dGUuZXhlYyh0KSkmJiJweCIhPT0oclszXXx8InB4IikmJihlLnN0eWxlW3VdPXQsdD1TLmNzcyhlLHUpKSxZZSgwLHQscyl9fX0pLFMuY3NzSG9va3MubWFyZ2luTGVmdD1GZSh5LnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoV2UoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LU1lKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSxTLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihpLG8pe1MuY3NzSG9va3NbaStvXT17ZXhwYW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30scj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiICIpOltlXTt0PDQ7dCsrKW5baStuZVt0XStvXT1yW3RdfHxyW3QtMl18fHJbMF07cmV0dXJuIG59fSwibWFyZ2luIiE9PWkmJihTLmNzc0hvb2tzW2krb10uc2V0PVllKX0pLFMuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPVJlKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPVMuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9TLnN0eWxlKGUsdCxuKTpTLmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKFMuVHdlZW49S2UpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2UsaW5pdDpmdW5jdGlvbihlLHQsbixyLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8Uy5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChTLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9S2UucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOktlLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPUtlLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD1TLmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6S2UucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPUtlLnByb3RvdHlwZSwoS2UucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxudWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2UucHJvcF06KHQ9Uy5jc3MoZS5lbGVtLGUucHJvcCwiIikpJiYiYXV0byIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe1MuZnguc3RlcFtlLnByb3BdP1MuZnguc3RlcFtlLnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fCFTLmNzc0hvb2tzW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVt6ZShlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpTLnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSkuc2Nyb2xsVG9wPUtlLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LFMuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sUy5meD1LZS5wcm90b3R5cGUuaW5pdCxTLmZ4LnN0ZXA9e307dmFyIFplLGV0LHR0LG50LHJ0PS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxpdD0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIG90KCl7ZXQmJighMT09PUUuaGlkZGVuJiZDLnJlcXVlc3RBbmltYXRpb25GcmFtZT9DLnJlcXVlc3RBbmltYXRpb25GcmFtZShvdCk6Qy5zZXRUaW1lb3V0KG90LFMuZnguaW50ZXJ2YWwpLFMuZngudGljaygpKX1mdW5jdGlvbiBhdCgpe3JldHVybiBDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtaZT12b2lkIDB9KSxaZT1EYXRlLm5vdygpfWZ1bmN0aW9uIHN0KGUsdCl7dmFyIG4scj0wLGk9e2hlaWdodDplfTtmb3IodD10PzE6MDtyPDQ7cis9Mi10KWlbIm1hcmdpbiIrKG49bmVbcl0pXT1pWyJwYWRkaW5nIituXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5PWkud2lkdGg9ZSksaX1mdW5jdGlvbiB1dChlLHQsbil7Zm9yKHZhciByLGk9KGx0LnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KGx0LnR3ZWVuZXJzWyIqIl0pLG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYocj1pW29dLmNhbGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGx0KG8sZSx0KXt2YXIgbixhLHI9MCxpPWx0LnByZWZpbHRlcnMubGVuZ3RoLHM9Uy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4hMTtmb3IodmFyIGU9WmV8fGF0KCksdD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tZSksbj0xLSh0L2wuZHVyYXRpb258fDApLHI9MCxpPWwudHdlZW5zLmxlbmd0aDtyPGk7cisrKWwudHdlZW5zW3JdLnJ1bihuKTtyZXR1cm4gcy5ub3RpZnlXaXRoKG8sW2wsbix0XSksbjwxJiZpP3Q6KGl8fHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2VsZW06byxwcm9wczpTLmV4dGVuZCh7fSxlKSxvcHRzOlMuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpTLmVhc2luZy5fZGVmYXVsdH0sdCksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3JpZ2luYWxPcHRpb25zOnQsc3RhcnRUaW1lOlplfHxhdCgpLGR1cmF0aW9uOnQuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Uy5Ud2VlbihvLGwub3B0cyxlLHQsbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKG4pLG59LHN0b3A6ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWU/bC50d2VlbnMubGVuZ3RoOjA7aWYoYSlyZXR1cm4gdGhpcztmb3IoYT0hMDt0PG47dCsrKWwudHdlZW5zW3RdLnJ1bigxKTtyZXR1cm4gZT8ocy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsLGVdKSk6cy5yZWplY3RXaXRoKG8sW2wsZV0pLHRoaXN9fSksYz1sLnByb3BzO2ZvcighZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhO2ZvcihuIGluIGUpaWYoaT10W3I9WChuKV0sbz1lW25dLEFycmF5LmlzQXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSwoYT1TLmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX0oYyxsLm9wdHMuc3BlY2lhbEVhc2luZyk7cjxpO3IrKylpZihuPWx0LnByZWZpbHRlcnNbcl0uY2FsbChsLG8sYyxsLm9wdHMpKXJldHVybiBtKG4uc3RvcCkmJihTLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9bi5zdG9wLmJpbmQobikpLG47cmV0dXJuIFMubWFwKGMsdXQsbCksbShsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChvLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLFMuZngudGltZXIoUy5leHRlbmQodSx7ZWxlbTpvLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1TLkFuaW1hdGlvbj1TLmV4dGVuZChsdCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIHNlKG4uZWxlbSxlLHRlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7bShlKT8odD1lLGU9WyIqIl0pOmU9ZS5tYXRjaChQKTtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluPWVbcl0sbHQudHdlZW5lcnNbbl09bHQudHdlZW5lcnNbbl18fFtdLGx0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjLGY9IndpZHRoImluIHR8fCJoZWlnaHQiaW4gdCxwPXRoaXMsZD17fSxoPWUuc3R5bGUsZz1lLm5vZGVUeXBlJiZhZShlKSx2PVkuZ2V0KGUsImZ4c2hvdyIpO2ZvcihyIGluIG4ucXVldWV8fChudWxsPT0oYT1TLl9xdWV1ZUhvb2tzKGUsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVlZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8fHMoKX0pLGEudW5xdWV1ZWQrKyxwLmFsd2F5cyhmdW5jdGlvbigpe3AuYWx3YXlzKGZ1bmN0aW9uKCl7YS51bnF1ZXVlZC0tLFMucXVldWUoZSwiZngiKS5sZW5ndGh8fGEuZW1wdHkuZmlyZSgpfSl9KSksdClpZihpPXRbcl0scnQudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShnPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhdnx8dm9pZCAwPT09dltyXSljb250aW51ZTtnPSEwfWRbcl09diYmdltyXXx8Uy5zdHlsZShlLHIpfWlmKCh1PSFTLmlzRW1wdHlPYmplY3QodCkpfHwhUy5pc0VtcHR5T2JqZWN0KGQpKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sbnVsbD09KGw9diYmdi5kaXNwbGF5KSYmKGw9WS5nZXQoZSwiZGlzcGxheSIpKSwibm9uZSI9PT0oYz1TLmNzcyhlLCJkaXNwbGF5IikpJiYobD9jPWw6KGxlKFtlXSwhMCksbD1lLnN0eWxlLmRpc3BsYXl8fGwsYz1TLmNzcyhlLCJkaXNwbGF5IiksbGUoW2VdKSkpLCgiaW5saW5lIj09PWN8fCJpbmxpbmUtYmxvY2siPT09YyYmbnVsbCE9bCkmJiJub25lIj09PVMuY3NzKGUsImZsb2F0IikmJih1fHwocC5kb25lKGZ1bmN0aW9uKCl7aC5kaXNwbGF5PWx9KSxudWxsPT1sJiYoYz1oLmRpc3BsYXksbD0ibm9uZSI9PT1jPyIiOmMpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVyZmxvdz0iaGlkZGVuIixwLmFsd2F5cyhmdW5jdGlvbigpe2gub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxoLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGgub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSksdT0hMSxkKXV8fCh2PyJoaWRkZW4iaW4gdiYmKGc9di5oaWRkZW4pOnY9WS5hY2Nlc3MoZSwiZnhzaG93Iix7ZGlzcGxheTpsfSksbyYmKHYuaGlkZGVuPSFnKSxnJiZsZShbZV0sITApLHAuZG9uZShmdW5jdGlvbigpe2ZvcihyIGluIGd8fGxlKFtlXSksWS5yZW1vdmUoZSwiZnhzaG93IiksZClTLnN0eWxlKGUscixkW3JdKX0pKSx1PXV0KGc/dltyXTowLHIscCksciBpbiB2fHwodltyXT11LnN0YXJ0LGcmJih1LmVuZD11LnN0YXJ0LHUuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9sdC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6bHQucHJlZmlsdGVycy5wdXNoKGUpfX0pLFMuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9TLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fG0oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIW0odCkmJnR9O3JldHVybiBTLmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiByLmR1cmF0aW9uJiYoci5kdXJhdGlvbiBpbiBTLmZ4LnNwZWVkcz9yLmR1cmF0aW9uPVMuZnguc3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249Uy5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPXIucXVldWUmJiEwIT09ci5xdWV1ZXx8KHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bShyLm9sZCkmJnIub2xkLmNhbGwodGhpcyksci5xdWV1ZSYmUy5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LFMuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGFlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1TLmlzRW1wdHlPYmplY3QodCksbz1TLnNwZWVkKGUsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIGU9bHQodGhpcyxTLmV4dGVuZCh7fSx0KSxvKTsoaXx8WS5nZXQodGhpcywiZmluaXNoIikpJiZlLnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihpLGUsbyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChvKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpJiYobz1lLGU9aSxpPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShpfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0hMCx0PW51bGwhPWkmJmkrInF1ZXVlSG9va3MiLG49Uy50aW1lcnMscj1ZLmdldCh0aGlzKTtpZih0KXJbdF0mJnJbdF0uc3RvcCYmYShyW3RdKTtlbHNlIGZvcih0IGluIHIpclt0XSYmclt0XS5zdG9wJiZpdC50ZXN0KHQpJiZhKHJbdF0pO2Zvcih0PW4ubGVuZ3RoO3QtLTspblt0XS5lbGVtIT09dGhpc3x8bnVsbCE9aSYmblt0XS5xdWV1ZSE9PWl8fChuW3RdLmFuaW0uc3RvcChvKSxlPSExLG4uc3BsaWNlKHQsMSkpOyFlJiZvfHxTLmRlcXVldWUodGhpcyxpKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PVkuZ2V0KHRoaXMpLG49dFthKyJxdWV1ZSJdLHI9dFthKyJxdWV1ZUhvb2tzIl0saT1TLnRpbWVycyxvPW4/bi5sZW5ndGg6MDtmb3IodC5maW5pc2g9ITAsUy5xdWV1ZSh0aGlzLGEsW10pLHImJnIuc3RvcCYmci5zdG9wLmNhbGwodGhpcywhMCksZT1pLmxlbmd0aDtlLS07KWlbZV0uZWxlbT09PXRoaXMmJmlbZV0ucXVldWU9PT1hJiYoaVtlXS5hbmltLnN0b3AoITApLGkuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxvO2UrKyluW2VdJiZuW2VdLmZpbmlzaCYmbltlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgdC5maW5pc2h9KX19KSxTLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUscil7dmFyIGk9Uy5mbltyXTtTLmZuW3JdPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoc3QociwhMCksZSx0LG4pfX0pLFMuZWFjaCh7c2xpZGVEb3duOnN0KCJzaG93Iiksc2xpZGVVcDpzdCgiaGlkZSIpLHNsaWRlVG9nZ2xlOnN0KCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUscil7Uy5mbltlXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShyLGUsdCxuKX19KSxTLnRpbWVycz1bXSxTLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1TLnRpbWVycztmb3IoWmU9RGF0ZS5ub3coKTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24ubGVuZ3RofHxTLmZ4LnN0b3AoKSxaZT12b2lkIDB9LFMuZngudGltZXI9ZnVuY3Rpb24oZSl7Uy50aW1lcnMucHVzaChlKSxTLmZ4LnN0YXJ0KCl9LFMuZnguaW50ZXJ2YWw9MTMsUy5meC5zdGFydD1mdW5jdGlvbigpe2V0fHwoZXQ9ITAsb3QoKSl9LFMuZnguc3RvcD1mdW5jdGlvbigpe2V0PW51bGx9LFMuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LFMuZm4uZGVsYXk9ZnVuY3Rpb24ocixlKXtyZXR1cm4gcj1TLmZ4JiZTLmZ4LnNwZWVkc1tyXXx8cixlPWV8fCJmeCIsdGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49Qy5zZXRUaW1lb3V0KGUscik7dC5zdG9wPWZ1bmN0aW9uKCl7Qy5jbGVhclRpbWVvdXQobil9fSl9LHR0PUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxudD1FLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLHR0LnR5cGU9ImNoZWNrYm94Iix5LmNoZWNrT249IiIhPT10dC52YWx1ZSx5Lm9wdFNlbGVjdGVkPW50LnNlbGVjdGVkLCh0dD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0Iix0dC50eXBlPSJyYWRpbyIseS5yYWRpb1ZhbHVlPSJ0Ij09PXR0LnZhbHVlO3ZhciBjdCxmdD1TLmV4cHIuYXR0ckhhbmRsZTtTLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiAkKHRoaXMsUy5hdHRyLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLnJlbW92ZUF0dHIodGhpcyxlKX0pfX0pLFMuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/Uy5wcm9wKGUsdCxuKTooMT09PW8mJlMuaXNYTUxEb2MoZSl8fChpPVMuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChTLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpP2N0OnZvaWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCBTLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIiKSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOm51bGw9PShyPVMuZmluZC5hdHRyKGUsdCkpP3ZvaWQgMDpyKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZigheS5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYmQShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXQmJnQubWF0Y2goUCk7aWYoaSYmMT09PWUubm9kZVR5cGUpd2hpbGUobj1pW3IrK10pZS5yZW1vdmVBdHRyaWJ1dGUobil9fSksY3Q9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P1MucmVtb3ZlQXR0cihlLG4pOmUuc2V0QXR0cmlidXRlKG4sbiksbn19LFMuZWFjaChTLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLHQpe3ZhciBhPWZ0W3RdfHxTLmZpbmQuYXR0cjtmdFt0XT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gbnx8KGk9ZnRbb10sZnRbb109cixyPW51bGwhPWEoZSx0LG4pP286bnVsbCxmdFtvXT1pKSxyfX0pO3ZhciBwdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGR0PS9eKD86YXxhcmVhKSQvaTtmdW5jdGlvbiBodChlKXtyZXR1cm4oZS5tYXRjaChQKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBndChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiB2dChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5tYXRjaChQKXx8W119Uy5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLFMucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbUy5wcm9wRml4W2VdfHxlXX0pfX0pLFMuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmUy5pc1hNTERvYyhlKXx8KHQ9Uy5wcm9wRml4W3RdfHx0LGk9Uy5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6ZVt0XT1uOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6cHQudGVzdChlLm5vZGVOYW1lKXx8ZHQudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSkseS5vcHRTZWxlY3RlZHx8KFMucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxTLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe1MucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxTLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLmFkZENsYXNzKHQuY2FsbCh0aGlzLGUsZ3QodGhpcykpKX0pO2lmKChlPXZ0KHQpKS5sZW5ndGgpd2hpbGUobj10aGlzW3UrK10paWYoaT1ndChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIraHQoaSkrIiAiKXthPTA7d2hpbGUobz1lW2ErK10pci5pbmRleE9mKCIgIitvKyIgIik8MCYmKHIrPW8rIiAiKTtpIT09KHM9aHQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyx1PTA7aWYobSh0KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsZSxndCh0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigoZT12dCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9Z3Qobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK2h0KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXdoaWxlKC0xPHIuaW5kZXhPZigiICIrbysiICIpKXI9ci5yZXBsYWNlKCIgIitvKyIgIiwiICIpO2khPT0ocz1odChyKSkmJm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGksdCl7dmFyIG89dHlwZW9mIGksYT0ic3RyaW5nIj09PW98fEFycmF5LmlzQXJyYXkoaSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdCYmYT90P3RoaXMuYWRkQ2xhc3MoaSk6dGhpcy5yZW1vdmVDbGFzcyhpKTptKGkpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNzKGkuY2FsbCh0aGlzLGUsZ3QodGhpcyksdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtpZihhKXt0PTAsbj1TKHRoaXMpLHI9dnQoaSk7d2hpbGUoZT1yW3QrK10pbi5oYXNDbGFzcyhlKT9uLnJlbW92ZUNsYXNzKGUpOm4uYWRkQ2xhc3MoZSl9ZWxzZSB2b2lkIDAhPT1pJiYiYm9vbGVhbiIhPT1vfHwoKGU9Z3QodGhpcykpJiZZLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWk/IiI6WS5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYtMTwoIiAiK2h0KGd0KG4pKSsiICIpLmluZGV4T2YodCkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHl0PS9cci9nO1MuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24obil7dmFyIHIsZSxpLHQ9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1tKG4pLHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgdDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PSh0PWk/bi5jYWxsKHRoaXMsZSxTKHRoaXMpLnZhbCgpKTpuKT90PSIiOiJudW1iZXIiPT10eXBlb2YgdD90Kz0iIjpBcnJheS5pc0FycmF5KHQpJiYodD1TLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksKHI9Uy52YWxIb29rc1t0aGlzLnR5cGVdfHxTLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIHImJnZvaWQgMCE9PXIuc2V0KHRoaXMsdCwidmFsdWUiKXx8KHRoaXMudmFsdWU9dCkpfSkpOnQ/KHI9Uy52YWxIb29rc1t0LnR5cGVdfHxTLnZhbEhvb2tzW3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIHImJnZvaWQgMCE9PShlPXIuZ2V0KHQsInZhbHVlIikpP2U6InN0cmluZyI9PXR5cGVvZihlPXQudmFsdWUpP2UucmVwbGFjZSh5dCwiIik6bnVsbD09ZT8iIjplOnZvaWQgMH19KSxTLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJuIG51bGwhPXQ/dDpodChTLnRleHQoZSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9ZS5vcHRpb25zLG89ZS5zZWxlY3RlZEluZGV4LGE9InNlbGVjdC1vbmUiPT09ZS50eXBlLHM9YT9udWxsOltdLHU9YT9vKzE6aS5sZW5ndGg7Zm9yKHI9bzwwP3U6YT9vOjA7cjx1O3IrKylpZigoKG49aVtyXSkuc2VsZWN0ZWR8fHI9PT1vKSYmIW4uZGlzYWJsZWQmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhQShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZih0PVMobikudmFsKCksYSlyZXR1cm4gdDtzLnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLm9wdGlvbnMsbz1TLm1ha2VBcnJheSh0KSxhPWkubGVuZ3RoO3doaWxlKGEtLSkoKHI9aVthXSkuc2VsZWN0ZWQ9LTE8Uy5pbkFycmF5KFMudmFsSG9va3Mub3B0aW9uLmdldChyKSxvKSkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRleD0tMSksb319fX0pLFMuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe1MudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxTLmluQXJyYXkoUyhlKS52YWwoKSx0KX19LHkuY2hlY2tPbnx8KFMudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KSx5LmZvY3VzaW49Im9uZm9jdXNpbiJpbiBDO3ZhciBtdD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8seHQ9ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX07Uy5leHRlbmQoUy5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLHA9W258fEVdLGQ9di5jYWxsKGUsInR5cGUiKT9lLnR5cGU6ZSxoPXYuY2FsbChlLCJuYW1lc3BhY2UiKT9lLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKG89Zj1hPW49bnx8RSwzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5cGUmJiFtdC50ZXN0KGQrUy5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKCIuIikmJihkPShoPWQuc3BsaXQoIi4iKSkuc2hpZnQoKSxoLnNvcnQoKSksdT1kLmluZGV4T2YoIjoiKTwwJiYib24iK2QsKGU9ZVtTLmV4cGFuZG9dP2U6bmV3IFMuRXZlbnQoZCwib2JqZWN0Ij09dHlwZW9mIGUmJmUpKS5pc1RyaWdnZXI9cj8yOjMsZS5uYW1lc3BhY2U9aC5qb2luKCIuIiksZS5ybmFtZXNwYWNlPWUubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxlLnJlc3VsdD12b2lkIDAsZS50YXJnZXR8fChlLnRhcmdldD1uKSx0PW51bGw9PXQ/W2VdOlMubWFrZUFycmF5KHQsW2VdKSxjPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scnx8IWMudHJpZ2dlcnx8ITEhPT1jLnRyaWdnZXIuYXBwbHkobix0KSkpe2lmKCFyJiYhYy5ub0J1YmJsZSYmIXgobikpe2ZvcihzPWMuZGVsZWdhdGVUeXBlfHxkLG10LnRlc3QocytkKXx8KG89by5wYXJlbnROb2RlKTtvO289by5wYXJlbnROb2RlKXAucHVzaChvKSxhPW87YT09PShuLm93bmVyRG9jdW1lbnR8fEUpJiZwLnB1c2goYS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3d8fEMpfWk9MDt3aGlsZSgobz1wW2krK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWY9byxlLnR5cGU9MTxpP3M6Yy5iaW5kVHlwZXx8ZCwobD0oWS5nZXQobywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0mJlkuZ2V0KG8sImhhbmRsZSIpKSYmbC5hcHBseShvLHQpLChsPXUmJm9bdV0pJiZsLmFwcGx5JiZWKG8pJiYoZS5yZXN1bHQ9bC5hcHBseShvLHQpLCExPT09ZS5yZXN1bHQmJmUucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGUudHlwZT1kLHJ8fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fGMuX2RlZmF1bHQmJiExIT09Yy5fZGVmYXVsdC5hcHBseShwLnBvcCgpLHQpfHwhVihuKXx8dSYmbShuW2RdKSYmIXgobikmJigoYT1uW3VdKSYmKG5bdV09bnVsbCksUy5ldmVudC50cmlnZ2VyZWQ9ZCxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcihkLHh0KSxuW2RdKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCx4dCksUy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGEmJihuW3VdPWEpKSxlLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1TLmV4dGVuZChuZXcgUy5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6ITB9KTtTLmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLFMuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIFMuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSkseS5mb2N1c2lufHxTLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKG4scil7dmFyIGk9ZnVuY3Rpb24oZSl7Uy5ldmVudC5zaW11bGF0ZShyLGUudGFyZ2V0LFMuZXZlbnQuZml4KGUpKX07Uy5ldmVudC5zcGVjaWFsW3JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUscik7dHx8ZS5hZGRFdmVudExpc3RlbmVyKG4saSwhMCksWS5hY2Nlc3MoZSxyLCh0fHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1ZLmFjY2VzcyhlLHIpLTE7dD9ZLmFjY2VzcyhlLHIsdCk6KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGksITApLFkucmVtb3ZlKGUscikpfX19KTt2YXIgYnQ9Qy5sb2NhdGlvbix3dD17Z3VpZDpEYXRlLm5vdygpfSxUdD0vXD8vO1MucGFyc2VYTUw9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXt0PShuZXcgQy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhlLCJ0ZXh0L3htbCIpfWNhdGNoKGUpe31yZXR1cm4gbj10JiZ0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLHQmJiFufHxTLmVycm9yKCJJbnZhbGlkIFhNTDogIisobj9TLm1hcChuLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KS5qb2luKCJcbiIpOmUpKSx0fTt2YXIgQ3Q9L1xbXF0kLyxFdD0vXHI/XG4vZyxTdD0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksa3Q9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIEF0KG4sZSxyLGkpe3ZhciB0O2lmKEFycmF5LmlzQXJyYXkoZSkpUy5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyfHxDdC50ZXN0KG4pP2kobix0KTpBdChuKyJbIisoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10P2U6IiIpKyJdIix0LHIsaSl9KTtlbHNlIGlmKHJ8fCJvYmplY3QiIT09dyhlKSlpKG4sZSk7ZWxzZSBmb3IodCBpbiBlKUF0KG4rIlsiK3QrIl0iLGVbdF0scixpKX1TLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49bSh0KT90KCk6dDtyW3IubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT1lKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhUy5pc1BsYWluT2JqZWN0KGUpKVMuZWFjaChlLGZ1bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpQXQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxTLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIFMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT1TLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gZT9TLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFTKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYma3QudGVzdCh0aGlzLm5vZGVOYW1lKSYmIVN0LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFwZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuPVModGhpcykudmFsKCk7cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP1MubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShFdCwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoRXQsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgTnQ9LyUyMC9nLGp0PS8jLiokLyxEdD0vKFs/Jl0pXz1bXiZdKi8scXQ9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxMdD0vXig/OkdFVHxIRUFEKSQvLEh0PS9eXC9cLy8sT3Q9e30sUHQ9e30sUnQ9IiovIi5jb25jYXQoIioiKSxNdD1FLmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBJdChvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iKiIpO3ZhciBuLHI9MCxpPWUudG9Mb3dlckNhc2UoKS5tYXRjaChQKXx8W107aWYobSh0KSl3aGlsZShuPWlbcisrXSkiKyI9PT1uWzBdPyhuPW4uc2xpY2UoMSl8fCIqIiwob1tuXT1vW25dfHxbXSkudW5zaGlmdCh0KSk6KG9bbl09b1tuXXx8W10pLnB1c2godCl9fWZ1bmN0aW9uIFd0KHQsaSxvLGEpe3ZhciBzPXt9LHU9dD09PVB0O2Z1bmN0aW9uIGwoZSl7dmFyIHI7cmV0dXJuIHNbZV09ITAsUy5lYWNoKHRbZV18fFtdLGZ1bmN0aW9uKGUsdCl7dmFyIG49dChpLG8sYSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBufHx1fHxzW25dP3U/IShyPW4pOnZvaWQgMDooaS5kYXRhVHlwZXMudW5zaGlmdChuKSxsKG4pLCExKX0pLHJ9cmV0dXJuIGwoaS5kYXRhVHlwZXNbMF0pfHwhc1siKiJdJiZsKCIqIil9ZnVuY3Rpb24gRnQoZSx0KXt2YXIgbixyLGk9Uy5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9pZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmUy5leHRlbmQoITAsZSxyKSxlfU10LmhyZWY9YnQuaHJlZixTLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6YnQuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChidC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpSdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6Uy5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/RnQoRnQoZSxTLmFqYXhTZXR0aW5ncyksdCk6RnQoUy5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6SXQoT3QpLGFqYXhUcmFuc3BvcnQ6SXQoUHQpLGFqYXg6ZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLHQ9dHx8e307dmFyIGMsZixwLG4sZCxyLGgsZyxpLG8sdj1TLmFqYXhTZXR1cCh7fSx0KSx5PXYuY29udGV4dHx8dixtPXYuY29udGV4dCYmKHkubm9kZVR5cGV8fHkuanF1ZXJ5KT9TKHkpOlMuZXZlbnQseD1TLkRlZmVycmVkKCksYj1TLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3PXYuc3RhdHVzQ29kZXx8e30sYT17fSxzPXt9LHU9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoaCl7aWYoIW4pe249e307d2hpbGUodD1xdC5leGVjKHApKW5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5jb25jYXQodFsyXSl9dD1uW2UudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT10P251bGw6dC5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaD9wOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09aCYmKGU9c1tlLnRvTG93ZXJDYXNlKCldPXNbZS50b0xvd2VyQ2FzZSgpXXx8ZSxhW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWgmJih2Lm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihoKVQuYWx3YXlzKGVbVC5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dTtyZXR1cm4gYyYmYy5hYm9ydCh0KSxsKDAsdCksdGhpc319O2lmKHgucHJvbWlzZShUKSx2LnVybD0oKGV8fHYudXJsfHxidC5ocmVmKSsiIikucmVwbGFjZShIdCxidC5wcm90b2NvbCsiLy8iKSx2LnR5cGU9dC5tZXRob2R8fHQudHlwZXx8di5tZXRob2R8fHYudHlwZSx2LmRhdGFUeXBlcz0odi5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbIiJdLG51bGw9PXYuY3Jvc3NEb21haW4pe3I9RS5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e3IuaHJlZj12LnVybCxyLmhyZWY9ci5ocmVmLHYuY3Jvc3NEb21haW49TXQucHJvdG9jb2wrIi8vIitNdC5ob3N0IT1yLnByb3RvY29sKyIvLyIrci5ob3N0fWNhdGNoKGUpe3YuY3Jvc3NEb21haW49ITB9fWlmKHYuZGF0YSYmdi5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiB2LmRhdGEmJih2LmRhdGE9Uy5wYXJhbSh2LmRhdGEsdi50cmFkaXRpb25hbCkpLFd0KE90LHYsdCxUKSxoKXJldHVybiBUO2ZvcihpIGluKGc9Uy5ldmVudCYmdi5nbG9iYWwpJiYwPT1TLmFjdGl2ZSsrJiZTLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHYudHlwZT12LnR5cGUudG9VcHBlckNhc2UoKSx2Lmhhc0NvbnRlbnQ9IUx0LnRlc3Qodi50eXBlKSxmPXYudXJsLnJlcGxhY2UoanQsIiIpLHYuaGFzQ29udGVudD92LmRhdGEmJnYucHJvY2Vzc0RhdGEmJjA9PT0odi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYodi5kYXRhPXYuZGF0YS5yZXBsYWNlKE50LCIrIikpOihvPXYudXJsLnNsaWNlKGYubGVuZ3RoKSx2LmRhdGEmJih2LnByb2Nlc3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHYuZGF0YSkmJihmKz0oVHQudGVzdChmKT8iJiI6Ij8iKSt2LmRhdGEsZGVsZXRlIHYuZGF0YSksITE9PT12LmNhY2hlJiYoZj1mLnJlcGxhY2UoRHQsIiQxIiksbz0oVHQudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3d0Lmd1aWQrKytvKSx2LnVybD1mK28pLHYuaWZNb2RpZmllZCYmKFMubGFzdE1vZGlmaWVkW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixTLmxhc3RNb2RpZmllZFtmXSksUy5ldGFnW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLFMuZXRhZ1tmXSkpLCh2LmRhdGEmJnYuaGFzQ29udGVudCYmITEhPT12LmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHYuY29udGVudFR5cGUpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iix2LmRhdGFUeXBlc1swXSYmdi5hY2NlcHRzW3YuZGF0YVR5cGVzWzBdXT92LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dKygiKiIhPT12LmRhdGFUeXBlc1swXT8iLCAiK1J0KyI7IHE9MC4wMSI6IiIpOnYuYWNjZXB0c1siKiJdKSx2LmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGksdi5oZWFkZXJzW2ldKTtpZih2LmJlZm9yZVNlbmQmJighMT09PXYuYmVmb3JlU2VuZC5jYWxsKHksVCx2KXx8aCkpcmV0dXJuIFQuYWJvcnQoKTtpZih1PSJhYm9ydCIsYi5hZGQodi5jb21wbGV0ZSksVC5kb25lKHYuc3VjY2VzcyksVC5mYWlsKHYuZXJyb3IpLGM9V3QoUHQsdix0LFQpKXtpZihULnJlYWR5U3RhdGU9MSxnJiZtLnRyaWdnZXIoImFqYXhTZW5kIixbVCx2XSksaClyZXR1cm4gVDt2LmFzeW5jJiYwPHYudGltZW91dCYmKGQ9Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VC5hYm9ydCgidGltZW91dCIpfSx2LnRpbWVvdXQpKTt0cnl7aD0hMSxjLnNlbmQoYSxsKX1jYXRjaChlKXtpZihoKXRocm93IGU7bCgtMSxlKX19ZWxzZSBsKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD10O2h8fChoPSEwLGQmJkMuY2xlYXJUaW1lb3V0KGQpLGM9dm9pZCAwLHA9cnx8IiIsVC5yZWFkeVN0YXRlPTA8ZT80OjAsaT0yMDA8PWUmJmU8MzAwfHwzMDQ9PT1lLG4mJihzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSx2b2lkIDA9PT1yJiYocj1lLm1pbWVUeXBlfHx0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYocilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0udGVzdChyKSl7dS51bnNoaWZ0KGkpO2JyZWFrfWlmKHVbMF1pbiBuKW89dVswXTtlbHNle2ZvcihpIGluIG4pe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwoYT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9PXVbMF0mJnUudW5zaGlmdChvKSxuW29dfSh2LFQsbikpLCFpJiYtMTxTLmluQXJyYXkoInNjcmlwdCIsdi5kYXRhVHlwZXMpJiZTLmluQXJyYXkoImpzb24iLHYuZGF0YVR5cGVzKTwwJiYodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoUy5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKFMuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLVMuYWN0aXZlfHxTLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBTLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxTLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtTW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksUy5hamF4KFMuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxTLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlwZT1lLmhlYWRlcnNbdF18fCIiKX0pLFMuX2V2YWxVcmw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBTLmFqYXgoe3VybDplLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe1MuZ2xvYmFsRXZhbChlLHQsbil9fSl9LFMuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PVMoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtTKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLFMuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hUy5leHByLnBzZXVkb3MudmlzaWJsZShlKX0sUy5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LFMuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIEJ0PXswOjIwMCwxMjIzOjIwNH0sJHQ9Uy5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhJHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gJHQseS5hamF4PSR0PSEhJHQsUy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHwkdCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChCdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksUy5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxTLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gUy5nbG9iYWxFdmFsKGUpLGV9fX0pLFMuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxTLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1TKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgX3QsenQ9W10sVXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztTLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9enQucG9wKCl8fFMuZXhwYW5kbysiXyIrd3QuZ3VpZCsrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksUy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9ITEhPT1lLmpzb25wJiYoVXQudGVzdChlLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT0oZS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZVdC50ZXN0KGUuZGF0YSkmJiJkYXRhIik7aWYoYXx8Impzb25wIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiByPWUuanNvbnBDYWxsYmFjaz1tKGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLGE/ZVthXT1lW2FdLnJlcGxhY2UoVXQsIiQxIityKTohMSE9PWUuanNvbnAmJihlLnVybCs9KFR0LnRlc3QoZS51cmwpPyImIjoiPyIpK2UuanNvbnArIj0iK3IpLGUuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBvfHxTLmVycm9yKHIrIiB3YXMgbm90IGNhbGxlZCIpLG9bMF19LGUuZGF0YVR5cGVzWzBdPSJqc29uIixpPUNbcl0sQ1tyXT1mdW5jdGlvbigpe289YXJndW1lbnRzfSxuLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWk/UyhDKS5yZW1vdmVQcm9wKHIpOkNbcl09aSxlW3JdJiYoZS5qc29ucENhbGxiYWNrPXQuanNvbnBDYWxsYmFjayx6dC5wdXNoKHIpKSxvJiZtKGkpJiZpKG9bMF0pLG89aT12b2lkIDB9KSwic2NyaXB0In0pLHkuY3JlYXRlSFRNTERvY3VtZW50PSgoX3Q9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1fdC5jaGlsZE5vZGVzLmxlbmd0aCksUy5wYXJzZUhUTUw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9bXTooImJvb2xlYW4iPT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9jdW1lbnQ/KChyPSh0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUUubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQocikpOnQ9RSksbz0hbiYmW10sKGk9Ti5leGVjKGUpKT9bdC5jcmVhdGVFbGVtZW50KGlbMV0pXTooaT14ZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmUyhvKS5yZW1vdmUoKSxTLm1lcmdlKFtdLGkuY2hpbGROb2RlcykpKTt2YXIgcixpLG99LFMuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybi0xPHMmJihyPWh0KGUuc2xpY2UocykpLGU9ZS5zbGljZSgwLHMpKSxtKHQpPyhuPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGk9IlBPU1QiKSwwPGEubGVuZ3RoJiZTLmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKHI/UygiPGRpdj4iKS5hcHBlbmQoUy5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KS5hbHdheXMobiYmZnVuY3Rpb24oZSx0KXthLmVhY2goZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSl9KSx0aGlzfSxTLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gUy5ncmVwKFMudGltZXJzLGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVtfSkubGVuZ3RofSxTLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD1TLmNzcyhlLCJwb3NpdGlvbiIpLGM9UyhlKSxmPXt9OyJzdGF0aWMiPT09bCYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1jLm9mZnNldCgpLG89Uy5jc3MoZSwidG9wIiksdT1TLmNzcyhlLCJsZWZ0IiksKCJhYnNvbHV0ZSI9PT1sfHwiZml4ZWQiPT09bCkmJi0xPChvK3UpLmluZGV4T2YoImF1dG8iKT8oYT0ocj1jLnBvc2l0aW9uKCkpLnRvcCxpPXIubGVmdCk6KGE9cGFyc2VGbG9hdChvKXx8MCxpPXBhcnNlRmxvYXQodSl8fDApLG0odCkmJih0PXQuY2FsbChlLG4sUy5leHRlbmQoe30scykpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLXMudG9wK2EpLG51bGwhPXQubGVmdCYmKGYubGVmdD10LmxlZnQtcy5sZWZ0K2kpLCJ1c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGYpOmMuY3NzKGYpfX0sUy5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1Mub2Zmc2V0LnNldE9mZnNldCh0aGlzLHQsZSl9KTt2YXIgZSxuLHI9dGhpc1swXTtyZXR1cm4gcj9yLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhlPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1yLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcse3RvcDplLnRvcCtuLnBhZ2VZT2Zmc2V0LGxlZnQ6ZS5sZWZ0K24ucGFnZVhPZmZzZXR9KTp7dG9wOjAsbGVmdDowfTp2b2lkIDB9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGUsdCxuLHI9dGhpc1swXSxpPXt0b3A6MCxsZWZ0OjB9O2lmKCJmaXhlZCI9PT1TLmNzcyhyLCJwb3NpdGlvbiIpKXQ9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle3Q9dGhpcy5vZmZzZXQoKSxuPXIub3duZXJEb2N1bWVudCxlPXIub2Zmc2V0UGFyZW50fHxuLmRvY3VtZW50RWxlbWVudDt3aGlsZShlJiYoZT09PW4uYm9keXx8ZT09PW4uZG9jdW1lbnRFbGVtZW50KSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5wYXJlbnROb2RlO2UmJmUhPT1yJiYxPT09ZS5ub2RlVHlwZSYmKChpPVMoZSkub2Zmc2V0KCkpLnRvcCs9Uy5jc3MoZSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxpLmxlZnQrPVMuY3NzKGUsImJvcmRlckxlZnRXaWR0aCIsITApKX1yZXR1cm57dG9wOnQudG9wLWkudG9wLVMuY3NzKHIsIm1hcmdpblRvcCIsITApLGxlZnQ6dC5sZWZ0LWkubGVmdC1TLmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoZSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fHJlfSl9fSksUy5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKHQsaSl7dmFyIG89InBhZ2VZT2Zmc2V0Ij09PWk7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZih4KGUpP3I9ZTo5PT09ZS5ub2RlVHlwZSYmKHI9ZS5kZWZhdWx0Vmlldyksdm9pZCAwPT09bilyZXR1cm4gcj9yW2ldOmVbdF07cj9yLnNjcm9sbFRvKG8/ci5wYWdlWE9mZnNldDpuLG8/bjpyLnBhZ2VZT2Zmc2V0KTplW3RdPW59LHQsZSxhcmd1bWVudHMubGVuZ3RoKX19KSxTLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oZSxuKXtTLmNzc0hvb2tzW25dPUZlKHkucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuIHQ9V2UoZSxuKSxQZS50ZXN0KHQpP1MoZSkucG9zaXRpb24oKVtuXSsicHgiOnR9KX0pLFMuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEscyl7Uy5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OnMsIiI6Im91dGVyIithfSxmdW5jdGlvbihyLG8pe1MuZm5bb109ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoJiYocnx8ImJvb2xlYW4iIT10eXBlb2YgZSksaT1yfHwoITA9PT1lfHwhMD09PXQ/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiB4KGUpPzA9PT1vLmluZGV4T2YoIm91dGVyIik/ZVsiaW5uZXIiK2FdOmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1lLm5vZGVUeXBlPyhyPWUuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGUuYm9keVsic2Nyb2xsIithXSxyWyJzY3JvbGwiK2FdLGUuYm9keVsib2Zmc2V0IithXSxyWyJvZmZzZXQiK2FdLHJbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1uP1MuY3NzKGUsdCxpKTpTLnN0eWxlKGUsdCxuLGkpfSxzLG4/ZTp2b2lkIDAsbil9fSl9KSxTLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihlLHQpe1MuZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub24odCxlKX19KSxTLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQsbil9LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51bGwsdCl9LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKHQsZSxuLHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlzLm9mZih0LGV8fCIqKiIsbil9LGhvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLFMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLG4pe1MuZm5bbl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMDxhcmd1bWVudHMubGVuZ3RoP3RoaXMub24obixudWxsLGUsdCk6dGhpcy50cmlnZ2VyKG4pfX0pO3ZhciBYdD0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2c7Uy5wcm94eT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaTtpZigic3RyaW5nIj09dHlwZW9mIHQmJihuPWVbdF0sdD1lLGU9biksbShlKSlyZXR1cm4gcj1zLmNhbGwoYXJndW1lbnRzLDIpLChpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodHx8dGhpcyxyLmNvbmNhdChzLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1lLmd1aWQ9ZS5ndWlkfHxTLmd1aWQrKyxpfSxTLmhvbGRSZWFkeT1mdW5jdGlvbihlKXtlP1MucmVhZHlXYWl0Kys6Uy5yZWFkeSghMCl9LFMuaXNBcnJheT1BcnJheS5pc0FycmF5LFMucGFyc2VKU09OPUpTT04ucGFyc2UsUy5ub2RlTmFtZT1BLFMuaXNGdW5jdGlvbj1tLFMuaXNXaW5kb3c9eCxTLmNhbWVsQ2FzZT1YLFMudHlwZT13LFMubm93PURhdGUubm93LFMuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3ZhciB0PVMudHlwZShlKTtyZXR1cm4oIm51bWJlciI9PT10fHwic3RyaW5nIj09PXQpJiYhaXNOYU4oZS1wYXJzZUZsb2F0KGUpKX0sUy50cmltPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKFh0LCIiKX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIFN9KTt2YXIgVnQ9Qy5qUXVlcnksR3Q9Qy4kO3JldHVybiBTLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuJD09PVMmJihDLiQ9R3QpLGUmJkMualF1ZXJ5PT09UyYmKEMualF1ZXJ5PVZ0KSxTfSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihDLmpRdWVyeT1DLiQ9UyksU30pOwpqUXVlcnkubm9Db25mbGljdCgpOw=="}},"time_used":44,"timings":{"blocked":-1,"dns":0,"connect":8,"send":0,"wait":8,"receive":0,"ssl":27},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js?ver=4.0.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.424Z","timestamp":1785145482424,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js?ver=4.0.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 16048\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":16048,"size_decoded":16265,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (1161)","md5":"6bf2d21e9bdb4d04e40b5f9decc60314","sha1":"1f16da2e4fd4d2c9db5fce1e101c3a44be54dd89","sha256":"02f83fb268599737a5a5c8e1db12d562bdaa9ae73cb906c4f63c7b871eeecdb4","sha512":"c23497a91d4221d642363cdf3f47b1a867ab0dca284df0029fd1277848585f119df5268816158889bb15991d477b1e94214ae0eca3d1e26adf7e99ecf53b8fad","ssdeep":"384:ZDCVFGE8Psl1GbOdoEMTGT6Gt7w50xioyTQTflUw4OSIU/3P:5/0JTHlh45IU/3P","tlshash":"de72df096ebb20126f9f7069fd0b55857237402b54899c2778dcd7d80fe24386eb6fa8","first_seen":"2023-03-12T11:49:12Z","last_seen":"2026-07-27T10:21:19.575257Z","times_seen":64,"resource_available":true,"data":"ISBmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBXYXlwb2ludChvcHRpb25zKSB7CiAgICAgICAgaWYgKCFvcHRpb25zKSB0aHJvdyBuZXcgRXJyb3IoIk5vIG9wdGlvbnMgcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgaWYgKCFvcHRpb25zLmVsZW1lbnQpIHRocm93IG5ldyBFcnJvcigiTm8gZWxlbWVudCBvcHRpb24gcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgaWYgKCFvcHRpb25zLmhhbmRsZXIpIHRocm93IG5ldyBFcnJvcigiTm8gaGFuZGxlciBvcHRpb24gcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgdGhpcy5rZXkgPSAid2F5cG9pbnQtIiArIGtleUNvdW50ZXIsIHRoaXMub3B0aW9ucyA9IFdheXBvaW50LkFkYXB0ZXIuZXh0ZW5kKHt9LCBXYXlwb2ludC5kZWZhdWx0cywgb3B0aW9ucyksIHRoaXMuZWxlbWVudCA9IHRoaXMub3B0aW9ucy5lbGVtZW50LCB0aGlzLmFkYXB0ZXIgPSBuZXcgV2F5cG9pbnQuQWRhcHRlcih0aGlzLmVsZW1lbnQpLCB0aGlzLmNhbGxiYWNrID0gb3B0aW9ucy5oYW5kbGVyLCB0aGlzLmF4aXMgPSB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbCA/ICJob3Jpem9udGFsIiA6ICJ2ZXJ0aWNhbCIsIHRoaXMuZW5hYmxlZCA9IHRoaXMub3B0aW9ucy5lbmFibGVkLCB0aGlzLnRyaWdnZXJQb2ludCA9IG51bGwsIHRoaXMuZ3JvdXAgPSBXYXlwb2ludC5Hcm91cC5maW5kT3JDcmVhdGUoewogICAgICAgICAgICBuYW1lOiB0aGlzLm9wdGlvbnMuZ3JvdXAsCiAgICAgICAgICAgIGF4aXM6IHRoaXMuYXhpcwogICAgICAgIH0pLCB0aGlzLmNvbnRleHQgPSBXYXlwb2ludC5Db250ZXh0LmZpbmRPckNyZWF0ZUJ5RWxlbWVudCh0aGlzLm9wdGlvbnMuY29udGV4dCksIFdheXBvaW50Lm9mZnNldEFsaWFzZXNbdGhpcy5vcHRpb25zLm9mZnNldF0gJiYgKHRoaXMub3B0aW9ucy5vZmZzZXQgPSBXYXlwb2ludC5vZmZzZXRBbGlhc2VzW3RoaXMub3B0aW9ucy5vZmZzZXRdKSwgdGhpcy5ncm91cC5hZGQodGhpcyksIHRoaXMuY29udGV4dC5hZGQodGhpcyksIGFsbFdheXBvaW50c1t0aGlzLmtleV0gPSB0aGlzLCBrZXlDb3VudGVyICs9IDEKICAgIH0KICAgIHZhciBrZXlDb3VudGVyID0gMCwKICAgICAgICBhbGxXYXlwb2ludHMgPSB7fTsKICAgIFdheXBvaW50LnByb3RvdHlwZS5xdWV1ZVRyaWdnZXIgPSBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgICB0aGlzLmdyb3VwLnF1ZXVlVHJpZ2dlcih0aGlzLCBkaXJlY3Rpb24pCiAgICB9LCBXYXlwb2ludC5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uKGFyZ3MpIHsKICAgICAgICB0aGlzLmVuYWJsZWQgJiYgdGhpcy5jYWxsYmFjayAmJiB0aGlzLmNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3MpCiAgICB9LCBXYXlwb2ludC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuY29udGV4dC5yZW1vdmUodGhpcyksIHRoaXMuZ3JvdXAucmVtb3ZlKHRoaXMpLCBkZWxldGUgYWxsV2F5cG9pbnRzW3RoaXMua2V5XQogICAgfSwgV2F5cG9pbnQucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5lbmFibGVkID0gITEsIHRoaXMKICAgIH0sIFdheXBvaW50LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlZnJlc2goKSwgdGhpcy5lbmFibGVkID0gITAsIHRoaXMKICAgIH0sIFdheXBvaW50LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAubmV4dCh0aGlzKQogICAgfSwgV2F5cG9pbnQucHJvdG90eXBlLnByZXZpb3VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAucHJldmlvdXModGhpcykKICAgIH0sIFdheXBvaW50Lmludm9rZUFsbCA9IGZ1bmN0aW9uKG1ldGhvZCkgewogICAgICAgIHZhciBhbGxXYXlwb2ludHNBcnJheSA9IFtdOwogICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIGFsbFdheXBvaW50cykgYWxsV2F5cG9pbnRzQXJyYXkucHVzaChhbGxXYXlwb2ludHNbd2F5cG9pbnRLZXldKTsKICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gYWxsV2F5cG9pbnRzQXJyYXkubGVuZ3RoOyBpIDwgZW5kOyBpKyspIGFsbFdheXBvaW50c0FycmF5W2ldW21ldGhvZF0oKQogICAgfSwgV2F5cG9pbnQuZGVzdHJveUFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIFdheXBvaW50Lmludm9rZUFsbCgiZGVzdHJveSIpCiAgICB9LCBXYXlwb2ludC5kaXNhYmxlQWxsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgV2F5cG9pbnQuaW52b2tlQWxsKCJkaXNhYmxlIikKICAgIH0sIFdheXBvaW50LmVuYWJsZUFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIFdheXBvaW50LkNvbnRleHQucmVmcmVzaEFsbCgpOwogICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIGFsbFdheXBvaW50cykgYWxsV2F5cG9pbnRzW3dheXBvaW50S2V5XS5lbmFibGVkID0gITA7CiAgICAgICAgcmV0dXJuIHRoaXMKICAgIH0sIFdheXBvaW50LnJlZnJlc2hBbGwgPSBmdW5jdGlvbigpIHsKICAgICAgICBXYXlwb2ludC5Db250ZXh0LnJlZnJlc2hBbGwoKQogICAgfSwgV2F5cG9pbnQudmlld3BvcnRIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQKICAgIH0sIFdheXBvaW50LnZpZXdwb3J0V2lkdGggPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoCiAgICB9LCBXYXlwb2ludC5hZGFwdGVycyA9IFtdLCBXYXlwb2ludC5kZWZhdWx0cyA9IHsKICAgICAgICBjb250ZXh0OiB3aW5kb3csCiAgICAgICAgY29udGludW91czogITAsCiAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgZ3JvdXA6ICJkZWZhdWx0IiwKICAgICAgICBob3Jpem9udGFsOiAhMSwKICAgICAgICBvZmZzZXQ6IDAKICAgIH0sIFdheXBvaW50Lm9mZnNldEFsaWFzZXMgPSB7CiAgICAgICAgImJvdHRvbS1pbi12aWV3IjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuaW5uZXJIZWlnaHQoKSAtIHRoaXMuYWRhcHRlci5vdXRlckhlaWdodCgpCiAgICAgICAgfSwKICAgICAgICAicmlnaHQtaW4tdmlldyI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LmlubmVyV2lkdGgoKSAtIHRoaXMuYWRhcHRlci5vdXRlcldpZHRoKCkKICAgICAgICB9CiAgICB9LCB3aW5kb3cuV2F5cG9pbnQgPSBXYXlwb2ludAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZVNoaW0oY2FsbGJhY2spIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMWUzIC8gNjApCiAgICB9CgogICAgZnVuY3Rpb24gQ29udGV4dChlbGVtZW50KSB7CiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudCwgdGhpcy5BZGFwdGVyID0gV2F5cG9pbnQuQWRhcHRlciwgdGhpcy5hZGFwdGVyID0gbmV3IHRoaXMuQWRhcHRlcihlbGVtZW50KSwgdGhpcy5rZXkgPSAid2F5cG9pbnQtY29udGV4dC0iICsga2V5Q291bnRlciwgdGhpcy5kaWRTY3JvbGwgPSAhMSwgdGhpcy5kaWRSZXNpemUgPSAhMSwgdGhpcy5vbGRTY3JvbGwgPSB7CiAgICAgICAgICAgIHg6IHRoaXMuYWRhcHRlci5zY3JvbGxMZWZ0KCksCiAgICAgICAgICAgIHk6IHRoaXMuYWRhcHRlci5zY3JvbGxUb3AoKQogICAgICAgIH0sIHRoaXMud2F5cG9pbnRzID0gewogICAgICAgICAgICB2ZXJ0aWNhbDoge30sCiAgICAgICAgICAgIGhvcml6b250YWw6IHt9CiAgICAgICAgfSwgZWxlbWVudC53YXlwb2ludENvbnRleHRLZXkgPSB0aGlzLmtleSwgY29udGV4dHNbZWxlbWVudC53YXlwb2ludENvbnRleHRLZXldID0gdGhpcywga2V5Q291bnRlciArPSAxLCBXYXlwb2ludC53aW5kb3dDb250ZXh0IHx8IChXYXlwb2ludC53aW5kb3dDb250ZXh0ID0gITAsIFdheXBvaW50LndpbmRvd0NvbnRleHQgPSBuZXcgQ29udGV4dCh3aW5kb3cpKSwgdGhpcy5jcmVhdGVUaHJvdHRsZWRTY3JvbGxIYW5kbGVyKCksIHRoaXMuY3JlYXRlVGhyb3R0bGVkUmVzaXplSGFuZGxlcigpCiAgICB9CiAgICB2YXIga2V5Q291bnRlciA9IDAsCiAgICAgICAgY29udGV4dHMgPSB7fSwKICAgICAgICBXYXlwb2ludCA9IHdpbmRvdy5XYXlwb2ludCwKICAgICAgICBvbGRXaW5kb3dMb2FkID0gd2luZG93Lm9ubG9hZDsKICAgIENvbnRleHQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKHdheXBvaW50KSB7CiAgICAgICAgdmFyIGF4aXMgPSB3YXlwb2ludC5vcHRpb25zLmhvcml6b250YWwgPyAiaG9yaXpvbnRhbCIgOiAidmVydGljYWwiOwogICAgICAgIHRoaXMud2F5cG9pbnRzW2F4aXNdW3dheXBvaW50LmtleV0gPSB3YXlwb2ludCwgdGhpcy5yZWZyZXNoKCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmNoZWNrRW1wdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaG9yaXpvbnRhbEVtcHR5ID0gdGhpcy5BZGFwdGVyLmlzRW1wdHlPYmplY3QodGhpcy53YXlwb2ludHMuaG9yaXpvbnRhbCksCiAgICAgICAgICAgIHZlcnRpY2FsRW1wdHkgPSB0aGlzLkFkYXB0ZXIuaXNFbXB0eU9iamVjdCh0aGlzLndheXBvaW50cy52ZXJ0aWNhbCksCiAgICAgICAgICAgIGlzV2luZG93ID0gdGhpcy5lbGVtZW50ID09IHRoaXMuZWxlbWVudC53aW5kb3c7CiAgICAgICAgaG9yaXpvbnRhbEVtcHR5ICYmIHZlcnRpY2FsRW1wdHkgJiYgIWlzV2luZG93ICYmICh0aGlzLmFkYXB0ZXIub2ZmKCIud2F5cG9pbnRzIiksIGRlbGV0ZSBjb250ZXh0c1t0aGlzLmtleV0pCiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5jcmVhdGVUaHJvdHRsZWRSZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gcmVzaXplSGFuZGxlcigpIHsKICAgICAgICAgICAgc2VsZi5oYW5kbGVSZXNpemUoKSwgc2VsZi5kaWRSZXNpemUgPSAhMQogICAgICAgIH0KICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgdGhpcy5hZGFwdGVyLm9uKCJyZXNpemUud2F5cG9pbnRzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNlbGYuZGlkUmVzaXplIHx8IChzZWxmLmRpZFJlc2l6ZSA9ICEwLCBXYXlwb2ludC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzaXplSGFuZGxlcikpCiAgICAgICAgfSkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmNyZWF0ZVRocm90dGxlZFNjcm9sbEhhbmRsZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiBzY3JvbGxIYW5kbGVyKCkgewogICAgICAgICAgICBzZWxmLmhhbmRsZVNjcm9sbCgpLCBzZWxmLmRpZFNjcm9sbCA9ICExCiAgICAgICAgfQogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICB0aGlzLmFkYXB0ZXIub24oInNjcm9sbC53YXlwb2ludHMiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgc2VsZi5kaWRTY3JvbGwgJiYgIVdheXBvaW50LmlzVG91Y2ggfHwgKHNlbGYuZGlkU2Nyb2xsID0gITAsIFdheXBvaW50LnJlcXVlc3RBbmltYXRpb25GcmFtZShzY3JvbGxIYW5kbGVyKSkKICAgICAgICB9KQogICAgfSwgQ29udGV4dC5wcm90b3R5cGUuaGFuZGxlUmVzaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgV2F5cG9pbnQuQ29udGV4dC5yZWZyZXNoQWxsKCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciB0cmlnZ2VyZWRHcm91cHMgPSB7fSwKICAgICAgICAgICAgYXhlcyA9IHsKICAgICAgICAgICAgICAgIGhvcml6b250YWw6IHsKICAgICAgICAgICAgICAgICAgICBuZXdTY3JvbGw6IHRoaXMuYWRhcHRlci5zY3JvbGxMZWZ0KCksCiAgICAgICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC54LAogICAgICAgICAgICAgICAgICAgIGZvcndhcmQ6ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJsZWZ0IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB7CiAgICAgICAgICAgICAgICAgICAgbmV3U2Nyb2xsOiB0aGlzLmFkYXB0ZXIuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgICAgIGZvcndhcmQ6ICJkb3duIiwKICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZDogInVwIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIGZvciAodmFyIGF4aXNLZXkgaW4gYXhlcykgewogICAgICAgICAgICB2YXIgYXhpcyA9IGF4ZXNbYXhpc0tleV0sCiAgICAgICAgICAgICAgICBpc0ZvcndhcmQgPSBheGlzLm5ld1Njcm9sbCA+IGF4aXMub2xkU2Nyb2xsLAogICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gaXNGb3J3YXJkID8gYXhpcy5mb3J3YXJkIDogYXhpcy5iYWNrd2FyZDsKICAgICAgICAgICAgZm9yICh2YXIgd2F5cG9pbnRLZXkgaW4gdGhpcy53YXlwb2ludHNbYXhpc0tleV0pIHsKICAgICAgICAgICAgICAgIHZhciB3YXlwb2ludCA9IHRoaXMud2F5cG9pbnRzW2F4aXNLZXldW3dheXBvaW50S2V5XTsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB3YXlwb2ludC50cmlnZ2VyUG9pbnQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgd2FzQmVmb3JlVHJpZ2dlclBvaW50ID0gYXhpcy5vbGRTY3JvbGwgPCB3YXlwb2ludC50cmlnZ2VyUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIG5vd0FmdGVyVHJpZ2dlclBvaW50ID0gYXhpcy5uZXdTY3JvbGwgPj0gd2F5cG9pbnQudHJpZ2dlclBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICBjcm9zc2VkRm9yd2FyZCA9IHdhc0JlZm9yZVRyaWdnZXJQb2ludCAmJiBub3dBZnRlclRyaWdnZXJQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NlZEJhY2t3YXJkID0gIXdhc0JlZm9yZVRyaWdnZXJQb2ludCAmJiAhbm93QWZ0ZXJUcmlnZ2VyUG9pbnQ7CiAgICAgICAgICAgICAgICAgICAgKGNyb3NzZWRGb3J3YXJkIHx8IGNyb3NzZWRCYWNrd2FyZCkgJiYgKHdheXBvaW50LnF1ZXVlVHJpZ2dlcihkaXJlY3Rpb24pLCB0cmlnZ2VyZWRHcm91cHNbd2F5cG9pbnQuZ3JvdXAuaWRdID0gd2F5cG9pbnQuZ3JvdXApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yICh2YXIgZ3JvdXBLZXkgaW4gdHJpZ2dlcmVkR3JvdXBzKSB0cmlnZ2VyZWRHcm91cHNbZ3JvdXBLZXldLmZsdXNoVHJpZ2dlcnMoKTsKICAgICAgICB0aGlzLm9sZFNjcm9sbCA9IHsKICAgICAgICAgICAgeDogYXhlcy5ob3Jpem9udGFsLm5ld1Njcm9sbCwKICAgICAgICAgICAgeTogYXhlcy52ZXJ0aWNhbC5uZXdTY3JvbGwKICAgICAgICB9CiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5pbm5lckhlaWdodCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQgPT0gdGhpcy5lbGVtZW50LndpbmRvdyA/IFdheXBvaW50LnZpZXdwb3J0SGVpZ2h0KCkgOiB0aGlzLmFkYXB0ZXIuaW5uZXJIZWlnaHQoKQogICAgfSwgQ29udGV4dC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24od2F5cG9pbnQpIHsKICAgICAgICBkZWxldGUgdGhpcy53YXlwb2ludHNbd2F5cG9pbnQuYXhpc11bd2F5cG9pbnQua2V5XSwgdGhpcy5jaGVja0VtcHR5KCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmlubmVyV2lkdGggPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50ID09IHRoaXMuZWxlbWVudC53aW5kb3cgPyBXYXlwb2ludC52aWV3cG9ydFdpZHRoKCkgOiB0aGlzLmFkYXB0ZXIuaW5uZXJXaWR0aCgpCiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGFsbFdheXBvaW50cyA9IFtdOwogICAgICAgIGZvciAodmFyIGF4aXMgaW4gdGhpcy53YXlwb2ludHMpCiAgICAgICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIHRoaXMud2F5cG9pbnRzW2F4aXNdKSBhbGxXYXlwb2ludHMucHVzaCh0aGlzLndheXBvaW50c1theGlzXVt3YXlwb2ludEtleV0pOwogICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBhbGxXYXlwb2ludHMubGVuZ3RoOyBpIDwgZW5kOyBpKyspIGFsbFdheXBvaW50c1tpXS5kZXN0cm95KCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYXhlcywgaXNXaW5kb3cgPSB0aGlzLmVsZW1lbnQgPT0gdGhpcy5lbGVtZW50LndpbmRvdywKICAgICAgICAgICAgY29udGV4dE9mZnNldCA9IGlzV2luZG93ID8gdm9pZCAwIDogdGhpcy5hZGFwdGVyLm9mZnNldCgpLAogICAgICAgICAgICB0cmlnZ2VyZWRHcm91cHMgPSB7fTsKICAgICAgICB0aGlzLmhhbmRsZVNjcm9sbCgpLCBheGVzID0gewogICAgICAgICAgICBob3Jpem9udGFsOiB7CiAgICAgICAgICAgICAgICBjb250ZXh0T2Zmc2V0OiBpc1dpbmRvdyA/IDAgOiBjb250ZXh0T2Zmc2V0LmxlZnQsCiAgICAgICAgICAgICAgICBjb250ZXh0U2Nyb2xsOiBpc1dpbmRvdyA/IDAgOiB0aGlzLm9sZFNjcm9sbC54LAogICAgICAgICAgICAgICAgY29udGV4dERpbWVuc2lvbjogdGhpcy5pbm5lcldpZHRoKCksCiAgICAgICAgICAgICAgICBvbGRTY3JvbGw6IHRoaXMub2xkU2Nyb2xsLngsCiAgICAgICAgICAgICAgICBmb3J3YXJkOiAicmlnaHQiLAogICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJsZWZ0IiwKICAgICAgICAgICAgICAgIG9mZnNldFByb3A6ICJsZWZ0IgogICAgICAgICAgICB9LAogICAgICAgICAgICB2ZXJ0aWNhbDogewogICAgICAgICAgICAgICAgY29udGV4dE9mZnNldDogaXNXaW5kb3cgPyAwIDogY29udGV4dE9mZnNldC50b3AsCiAgICAgICAgICAgICAgICBjb250ZXh0U2Nyb2xsOiBpc1dpbmRvdyA/IDAgOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgY29udGV4dERpbWVuc2lvbjogdGhpcy5pbm5lckhlaWdodCgpLAogICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgZm9yd2FyZDogImRvd24iLAogICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJ1cCIsCiAgICAgICAgICAgICAgICBvZmZzZXRQcm9wOiAidG9wIgogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBmb3IgKHZhciBheGlzS2V5IGluIGF4ZXMpIHsKICAgICAgICAgICAgdmFyIGF4aXMgPSBheGVzW2F4aXNLZXldOwogICAgICAgICAgICBmb3IgKHZhciB3YXlwb2ludEtleSBpbiB0aGlzLndheXBvaW50c1theGlzS2V5XSkgewogICAgICAgICAgICAgICAgdmFyIGNvbnRleHRNb2RpZmllciwgd2FzQmVmb3JlU2Nyb2xsLCBub3dBZnRlclNjcm9sbCwgdHJpZ2dlcmVkQmFja3dhcmQsIHRyaWdnZXJlZEZvcndhcmQsIHdheXBvaW50ID0gdGhpcy53YXlwb2ludHNbYXhpc0tleV1bd2F5cG9pbnRLZXldLAogICAgICAgICAgICAgICAgICAgIGFkanVzdG1lbnQgPSB3YXlwb2ludC5vcHRpb25zLm9mZnNldCwKICAgICAgICAgICAgICAgICAgICBvbGRUcmlnZ2VyUG9pbnQgPSB3YXlwb2ludC50cmlnZ2VyUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgZWxlbWVudE9mZnNldCA9IDAsCiAgICAgICAgICAgICAgICAgICAgZnJlc2hXYXlwb2ludCA9IG51bGwgPT0gb2xkVHJpZ2dlclBvaW50OwogICAgICAgICAgICAgICAgd2F5cG9pbnQuZWxlbWVudCAhPT0gd2F5cG9pbnQuZWxlbWVudC53aW5kb3cgJiYgKGVsZW1lbnRPZmZzZXQgPSB3YXlwb2ludC5hZGFwdGVyLm9mZnNldCgpW2F4aXMub2Zmc2V0UHJvcF0pLCAiZnVuY3Rpb24iID09IHR5cGVvZiBhZGp1c3RtZW50ID8gYWRqdXN0bWVudCA9IGFkanVzdG1lbnQuYXBwbHkod2F5cG9pbnQpIDogInN0cmluZyIgPT0gdHlwZW9mIGFkanVzdG1lbnQgJiYgKGFkanVzdG1lbnQgPSBwYXJzZUZsb2F0KGFkanVzdG1lbnQpLCB3YXlwb2ludC5vcHRpb25zLm9mZnNldC5pbmRleE9mKCIlIikgPiAtMSAmJiAoYWRqdXN0bWVudCA9IE1hdGguY2VpbChheGlzLmNvbnRleHREaW1lbnNpb24gKiBhZGp1c3RtZW50IC8gMTAwKSkpLCBjb250ZXh0TW9kaWZpZXIgPSBheGlzLmNvbnRleHRTY3JvbGwgLSBheGlzLmNvbnRleHRPZmZzZXQsIHdheXBvaW50LnRyaWdnZXJQb2ludCA9IE1hdGguZmxvb3IoZWxlbWVudE9mZnNldCArIGNvbnRleHRNb2RpZmllciAtIGFkanVzdG1lbnQpLCB3YXNCZWZvcmVTY3JvbGwgPSBvbGRUcmlnZ2VyUG9pbnQgPCBheGlzLm9sZFNjcm9sbCwgbm93QWZ0ZXJTY3JvbGwgPSB3YXlwb2ludC50cmlnZ2VyUG9pbnQgPj0gYXhpcy5vbGRTY3JvbGwsIHRyaWdnZXJlZEJhY2t3YXJkID0gd2FzQmVmb3JlU2Nyb2xsICYmIG5vd0FmdGVyU2Nyb2xsLCB0cmlnZ2VyZWRGb3J3YXJkID0gIXdhc0JlZm9yZVNjcm9sbCAmJiAhbm93QWZ0ZXJTY3JvbGwsICFmcmVzaFdheXBvaW50ICYmIHRyaWdnZXJlZEJhY2t3YXJkID8gKHdheXBvaW50LnF1ZXVlVHJpZ2dlcihheGlzLmJhY2t3YXJkKSwgdHJpZ2dlcmVkR3JvdXBzW3dheXBvaW50Lmdyb3VwLmlkXSA9IHdheXBvaW50Lmdyb3VwKSA6ICFmcmVzaFdheXBvaW50ICYmIHRyaWdnZXJlZEZvcndhcmQgPyAod2F5cG9pbnQucXVldWVUcmlnZ2VyKGF4aXMuZm9yd2FyZCksIHRyaWdnZXJlZEdyb3Vwc1t3YXlwb2ludC5ncm91cC5pZF0gPSB3YXlwb2ludC5ncm91cCkgOiBmcmVzaFdheXBvaW50ICYmIGF4aXMub2xkU2Nyb2xsID49IHdheXBvaW50LnRyaWdnZXJQb2ludCAmJiAod2F5cG9pbnQucXVldWVUcmlnZ2VyKGF4aXMuZm9yd2FyZCksIHRyaWdnZXJlZEdyb3Vwc1t3YXlwb2ludC5ncm91cC5pZF0gPSB3YXlwb2ludC5ncm91cCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gV2F5cG9pbnQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmb3IgKHZhciBncm91cEtleSBpbiB0cmlnZ2VyZWRHcm91cHMpIHRyaWdnZXJlZEdyb3Vwc1tncm91cEtleV0uZmx1c2hUcmlnZ2VycygpCiAgICAgICAgfSksIHRoaXMKICAgIH0sIENvbnRleHQuZmluZE9yQ3JlYXRlQnlFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgIHJldHVybiBDb250ZXh0LmZpbmRCeUVsZW1lbnQoZWxlbWVudCkgfHwgbmV3IENvbnRleHQoZWxlbWVudCkKICAgIH0sIENvbnRleHQucmVmcmVzaEFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZvciAodmFyIGNvbnRleHRJZCBpbiBjb250ZXh0cykgY29udGV4dHNbY29udGV4dElkXS5yZWZyZXNoKCkKICAgIH0sIENvbnRleHQuZmluZEJ5RWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICByZXR1cm4gY29udGV4dHNbZWxlbWVudC53YXlwb2ludENvbnRleHRLZXldCiAgICB9LCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgb2xkV2luZG93TG9hZCAmJiBvbGRXaW5kb3dMb2FkKCksIENvbnRleHQucmVmcmVzaEFsbCgpCiAgICB9LCBXYXlwb2ludC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICAgIHZhciByZXF1ZXN0Rm4gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVTaGltOwogICAgICAgIHJlcXVlc3RGbi5jYWxsKHdpbmRvdywgY2FsbGJhY2spCiAgICB9LCBXYXlwb2ludC5Db250ZXh0ID0gQ29udGV4dAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGJ5VHJpZ2dlclBvaW50KGEsIGIpIHsKICAgICAgICByZXR1cm4gYS50cmlnZ2VyUG9pbnQgLSBiLnRyaWdnZXJQb2ludAogICAgfQoKICAgIGZ1bmN0aW9uIGJ5UmV2ZXJzZVRyaWdnZXJQb2ludChhLCBiKSB7CiAgICAgICAgcmV0dXJuIGIudHJpZ2dlclBvaW50IC0gYS50cmlnZ2VyUG9pbnQKICAgIH0KCiAgICBmdW5jdGlvbiBHcm91cChvcHRpb25zKSB7CiAgICAgICAgdGhpcy5uYW1lID0gb3B0aW9ucy5uYW1lLCB0aGlzLmF4aXMgPSBvcHRpb25zLmF4aXMsIHRoaXMuaWQgPSB0aGlzLm5hbWUgKyAiLSIgKyB0aGlzLmF4aXMsIHRoaXMud2F5cG9pbnRzID0gW10sIHRoaXMuY2xlYXJUcmlnZ2VyUXVldWVzKCksIGdyb3Vwc1t0aGlzLmF4aXNdW3RoaXMubmFtZV0gPSB0aGlzCiAgICB9CiAgICB2YXIgZ3JvdXBzID0gewogICAgICAgICAgICB2ZXJ0aWNhbDoge30sCiAgICAgICAgICAgIGhvcml6b250YWw6IHt9CiAgICAgICAgfSwKICAgICAgICBXYXlwb2ludCA9IHdpbmRvdy5XYXlwb2ludDsKICAgIEdyb3VwLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHRoaXMud2F5cG9pbnRzLnB1c2god2F5cG9pbnQpCiAgICB9LCBHcm91cC5wcm90b3R5cGUuY2xlYXJUcmlnZ2VyUXVldWVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy50cmlnZ2VyUXVldWVzID0gewogICAgICAgICAgICB1cDogW10sCiAgICAgICAgICAgIGRvd246IFtdLAogICAgICAgICAgICBsZWZ0OiBbXSwKICAgICAgICAgICAgcmlnaHQ6IFtdCiAgICAgICAgfQogICAgfSwgR3JvdXAucHJvdG90eXBlLmZsdXNoVHJpZ2dlcnMgPSBmdW5jdGlvbigpIHsKICAgICAgICBmb3IgKHZhciBkaXJlY3Rpb24gaW4gdGhpcy50cmlnZ2VyUXVldWVzKSB7CiAgICAgICAgICAgIHZhciB3YXlwb2ludHMgPSB0aGlzLnRyaWdnZXJRdWV1ZXNbZGlyZWN0aW9uXSwKICAgICAgICAgICAgICAgIHJldmVyc2UgPSAidXAiID09PSBkaXJlY3Rpb24gfHwgImxlZnQiID09PSBkaXJlY3Rpb247CiAgICAgICAgICAgIHdheXBvaW50cy5zb3J0KHJldmVyc2UgPyBieVJldmVyc2VUcmlnZ2VyUG9pbnQgOiBieVRyaWdnZXJQb2ludCk7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSB3YXlwb2ludHMubGVuZ3RoOyBpIDwgZW5kOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIHZhciB3YXlwb2ludCA9IHdheXBvaW50c1tpXTsKICAgICAgICAgICAgICAgICh3YXlwb2ludC5vcHRpb25zLmNvbnRpbnVvdXMgfHwgaSA9PT0gd2F5cG9pbnRzLmxlbmd0aCAtIDEpICYmIHdheXBvaW50LnRyaWdnZXIoW2RpcmVjdGlvbl0pCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5jbGVhclRyaWdnZXJRdWV1ZXMoKQogICAgfSwgR3JvdXAucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHRoaXMud2F5cG9pbnRzLnNvcnQoYnlUcmlnZ2VyUG9pbnQpOwogICAgICAgIHZhciBpbmRleCA9IFdheXBvaW50LkFkYXB0ZXIuaW5BcnJheSh3YXlwb2ludCwgdGhpcy53YXlwb2ludHMpLAogICAgICAgICAgICBpc0xhc3QgPSBpbmRleCA9PT0gdGhpcy53YXlwb2ludHMubGVuZ3RoIC0gMTsKICAgICAgICByZXR1cm4gaXNMYXN0ID8gbnVsbCA6IHRoaXMud2F5cG9pbnRzW2luZGV4ICsgMV0KICAgIH0sIEdyb3VwLnByb3RvdHlwZS5wcmV2aW91cyA9IGZ1bmN0aW9uKHdheXBvaW50KSB7CiAgICAgICAgdGhpcy53YXlwb2ludHMuc29ydChieVRyaWdnZXJQb2ludCk7CiAgICAgICAgdmFyIGluZGV4ID0gV2F5cG9pbnQuQWRhcHRlci5pbkFycmF5KHdheXBvaW50LCB0aGlzLndheXBvaW50cyk7CiAgICAgICAgcmV0dXJuIGluZGV4ID8gdGhpcy53YXlwb2ludHNbaW5kZXggLSAxXSA6IG51bGwKICAgIH0sIEdyb3VwLnByb3RvdHlwZS5xdWV1ZVRyaWdnZXIgPSBmdW5jdGlvbih3YXlwb2ludCwgZGlyZWN0aW9uKSB7CiAgICAgICAgdGhpcy50cmlnZ2VyUXVldWVzW2RpcmVjdGlvbl0ucHVzaCh3YXlwb2ludCkKICAgIH0sIEdyb3VwLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHZhciBpbmRleCA9IFdheXBvaW50LkFkYXB0ZXIuaW5BcnJheSh3YXlwb2ludCwgdGhpcy53YXlwb2ludHMpOwogICAgICAgIGluZGV4ID4gLTEgJiYgdGhpcy53YXlwb2ludHMuc3BsaWNlKGluZGV4LCAxKQogICAgfSwgR3JvdXAucHJvdG90eXBlLmZpcnN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMud2F5cG9pbnRzWzBdCiAgICB9LCBHcm91cC5wcm90b3R5cGUubGFzdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLndheXBvaW50c1t0aGlzLndheXBvaW50cy5sZW5ndGggLSAxXQogICAgfSwgR3JvdXAuZmluZE9yQ3JlYXRlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIHJldHVybiBncm91cHNbb3B0aW9ucy5heGlzXVtvcHRpb25zLm5hbWVdIHx8IG5ldyBHcm91cChvcHRpb25zKQogICAgfSwgV2F5cG9pbnQuR3JvdXAgPSBHcm91cAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIEpRdWVyeUFkYXB0ZXIoZWxlbWVudCkgewogICAgICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpCiAgICB9CiAgICB2YXIgJCA9IHdpbmRvdy5qUXVlcnksCiAgICAgICAgV2F5cG9pbnQgPSB3aW5kb3cuV2F5cG9pbnQ7CiAgICAkLmVhY2goWyJpbm5lckhlaWdodCIsICJpbm5lcldpZHRoIiwgIm9mZiIsICJvZmZzZXQiLCAib24iLCAib3V0ZXJIZWlnaHQiLCAib3V0ZXJXaWR0aCIsICJzY3JvbGxMZWZ0IiwgInNjcm9sbFRvcCJdLCBmdW5jdGlvbihpLCBtZXRob2QpIHsKICAgICAgICBKUXVlcnlBZGFwdGVyLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnRbbWV0aG9kXS5hcHBseSh0aGlzLiRlbGVtZW50LCBhcmdzKQogICAgICAgIH0KICAgIH0pLCAkLmVhY2goWyJleHRlbmQiLCAiaW5BcnJheSIsICJpc0VtcHR5T2JqZWN0Il0sIGZ1bmN0aW9uKGksIG1ldGhvZCkgewogICAgICAgIEpRdWVyeUFkYXB0ZXJbbWV0aG9kXSA9ICRbbWV0aG9kXQogICAgfSksIFdheXBvaW50LmFkYXB0ZXJzLnB1c2goewogICAgICAgIG5hbWU6ICJqcXVlcnkiLAogICAgICAgIEFkYXB0ZXI6IEpRdWVyeUFkYXB0ZXIKICAgIH0pLCBXYXlwb2ludC5BZGFwdGVyID0gSlF1ZXJ5QWRhcHRlcgp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGNyZWF0ZUV4dGVuc2lvbihmcmFtZXdvcmspIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB3YXlwb2ludHMgPSBbXSwKICAgICAgICAgICAgICAgIG92ZXJyaWRlcyA9IGFyZ3VtZW50c1swXTsKICAgICAgICAgICAgcmV0dXJuIGZyYW1ld29yay5pc0Z1bmN0aW9uKGFyZ3VtZW50c1swXSkgJiYgKG92ZXJyaWRlcyA9IGZyYW1ld29yay5leHRlbmQoe30sIGFyZ3VtZW50c1sxXSksIG92ZXJyaWRlcy5oYW5kbGVyID0gYXJndW1lbnRzWzBdKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBmcmFtZXdvcmsuZXh0ZW5kKHt9LCBvdmVycmlkZXMsIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBvcHRpb25zLmNvbnRleHQgJiYgKG9wdGlvbnMuY29udGV4dCA9IGZyYW1ld29yayh0aGlzKS5jbG9zZXN0KG9wdGlvbnMuY29udGV4dClbMF0pLCB3YXlwb2ludHMucHVzaChuZXcgV2F5cG9pbnQob3B0aW9ucykpCiAgICAgICAgICAgIH0pLCB3YXlwb2ludHMKICAgICAgICB9CiAgICB9CiAgICB2YXIgV2F5cG9pbnQgPSB3aW5kb3cuV2F5cG9pbnQ7CiAgICB3aW5kb3cualF1ZXJ5ICYmICh3aW5kb3cualF1ZXJ5LmZuLmVsZW1lbnRvcldheXBvaW50ID0gY3JlYXRlRXh0ZW5zaW9uKHdpbmRvdy5qUXVlcnkpKSwgd2luZG93LlplcHRvICYmICh3aW5kb3cuWmVwdG8uZm4uZWxlbWVudG9yV2F5cG9pbnQgPSBjcmVhdGVFeHRlbnNpb24od2luZG93LlplcHRvKSkKfSgpOw=="}},"time_used":925,"timings":{"blocked":827,"dns":0,"connect":0,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.6.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.486Z","timestamp":1785145482486,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.6.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 26951\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":26951,"size_decoded":27168,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (470)","md5":"98bcaca9d15d0b93869a859721324685","sha1":"71fb07ba2218885d731f3dd6e376e872fa35c711","sha256":"490d450d6521313036f4aeb0363938a5634347e9d6a670bbe7a34126431f9fe3","sha512":"61eca47837839c9abea2f543c4f0c59dd7aa2409ebac9a338d49bd0ee84e4faeb0cf4fd534183943ec09af058f77e56e24550fde5c840dcf7b997bc82b3df7bb","ssdeep":"768:w4Crdu6++RCvAyqxuG0aFWEDPPk2UTm5XSCpm9Hz2uyddI37M88Q:w4Chu6dRCvAfuG0WQTm5XSCYquyddI3D","tlshash":"8fc2300a7af26835824bb077691bd509b336409f284abc183e1c46906f25d3e63f5ff8","first_seen":"2026-07-27T08:06:56.401759Z","last_seen":"2026-07-27T09:45:50.8556Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvciAtIHYzLjYuMiAtIDA0LTA0LTIwMjIgKi8KKHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yID0gc2VsZi53ZWJwYWNrQ2h1bmtlbGVtZW50b3IgfHwgW10pLnB1c2goWwogICAgWzM1NF0sIHsKICAgICAgICA3OTE0OiBlID0+IHsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgZS5leHBvcnRzLmRlZmF1bHQgPSBlLmV4cG9ydHMsIGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gITAKICAgICAgICB9LAogICAgICAgIDM4MTogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgIHQgPSBBcnJheS5pc0FycmF5KHQpID8gdCA6IFt0XTsKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbiBvZiB0KQogICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbnN0cnVjdG9yLm5hbWUgPT09IG4ucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ10pIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA4MTM1OiAoZSwgdCkgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogIi5lbGVtZW50b3ItZWxlbWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWREb2N1bWVudEVsZW1lbnRzOiAiLmVsZW1lbnRvciAuZWxlbWVudG9yLWVsZW1lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRNb2RlOiAiZWxlbWVudG9yLWVkaXQtbW9kZSIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnRzOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5lbGVtZW50cykubm90KHRoaXMuJGVsZW1lbnQuZmluZChlLm5lc3RlZERvY3VtZW50RWxlbWVudHMpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERvY3VtZW50U2V0dGluZ3MoZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB0OwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRWRpdCkgewogICAgICAgICAgICAgICAgICAgICAgICB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3Iuc2V0dGluZ3MucGFnZS5tb2RlbDsKICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goZS5nZXRBY3RpdmVDb250cm9scygpLCAobiA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0W25dID0gZS5hdHRyaWJ1dGVzW25dCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0ID0gdGhpcy4kZWxlbWVudC5kYXRhKCJlbGVtZW50b3Itc2V0dGluZ3MiKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyh0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcnVuRWxlbWVudHNIYW5kbGVycygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRlbGVtZW50cy5lYWNoKCgoZSwgdCkgPT4gZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLnJ1blJlYWR5VHJpZ2dlcih0KSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudCA9IHRoaXMuZ2V0U2V0dGluZ3MoIiRlbGVtZW50IiksIHN1cGVyLm9uSW5pdCgpLCB0aGlzLmlzRWRpdCA9IHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3ModGhpcy5nZXRTZXR0aW5ncygiY2xhc3Nlcy5lZGl0TW9kZSIpKSwgdGhpcy5pc0VkaXQgPyBlbGVtZW50b3Iub24oImRvY3VtZW50OmxvYWRlZCIsICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvci5zZXR0aW5ncy5wYWdlLm1vZGVsLm9uKCJjaGFuZ2UiLCB0aGlzLm9uU2V0dGluZ3NDaGFuZ2UuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgICAgICB9KSkgOiB0aGlzLnJ1bkVsZW1lbnRzSGFuZGxlcnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25TZXR0aW5nc0NoYW5nZSgpIHt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDI4MjE6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIHMgPSBuKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBzKG4oMzA5MCkpOwogICAgICAgICAgICBjbGFzcyBTd2lwZXJIYW5kbGVyQmFzZSBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXRJbml0aWFsU2xpZGUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWRpdFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYWN0aXZlSXRlbUluZGV4ID8gZS5hY3RpdmVJdGVtSW5kZXggLSAxIDogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U2xpZGVzQ291bnQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudHMuJHNsaWRlcy5sZW5ndGgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRvZ2dsZVBhdXNlT25Ib3ZlcihlKSB7CiAgICAgICAgICAgICAgICAgICAgZSA/IHRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lci5vbih7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlZW50ZXI6ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyLmF1dG9wbGF5LnN0b3AoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBtb3VzZWxlYXZlOiAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN3aXBlci5hdXRvcGxheS5zdGFydCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSA6IHRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lci5vZmYoIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoYW5kbGVLZW5CdXJucygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGFjdGl2ZUltYWdlQmcgJiYgdGhpcy4kYWN0aXZlSW1hZ2VCZy5yZW1vdmVDbGFzcyhlLmNsYXNzZXMua2VuQnVybnNBY3RpdmUpLCB0aGlzLmFjdGl2ZUl0ZW1JbmRleCA9IHRoaXMuc3dpcGVyID8gdGhpcy5zd2lwZXIuYWN0aXZlSW5kZXggOiB0aGlzLmdldEluaXRpYWxTbGlkZSgpLCB0aGlzLnN3aXBlciA/IHRoaXMuJGFjdGl2ZUltYWdlQmcgPSBqUXVlcnkodGhpcy5zd2lwZXIuc2xpZGVzW3RoaXMuYWN0aXZlSXRlbUluZGV4XSkuY2hpbGRyZW4oIi4iICsgZS5jbGFzc2VzLnNsaWRlQmFja2dyb3VuZCkgOiB0aGlzLiRhY3RpdmVJbWFnZUJnID0galF1ZXJ5KHRoaXMuZWxlbWVudHMuJHNsaWRlc1swXSkuY2hpbGRyZW4oIi4iICsgZS5jbGFzc2VzLnNsaWRlQmFja2dyb3VuZCksIHRoaXMuJGFjdGl2ZUltYWdlQmcuYWRkQ2xhc3MoZS5jbGFzc2VzLmtlbkJ1cm5zQWN0aXZlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IFN3aXBlckhhbmRsZXJCYXNlCiAgICAgICAgfSwKICAgICAgICAzMDkwOiBlID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICRlbGVtZW50OiBudWxsLAogICAgICAgICAgICAgICAgZWRpdG9yTGlzdGVuZXJzOiBudWxsLAogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlOiBudWxsLAogICAgICAgICAgICAgICAgb25FZGl0U2V0dGluZ3NDaGFuZ2U6IG51bGwsCiAgICAgICAgICAgICAgICBvblBhZ2VTZXR0aW5nc0NoYW5nZTogbnVsbCwKICAgICAgICAgICAgICAgIGlzRWRpdDogbnVsbCwKICAgICAgICAgICAgICAgIF9fY29uc3RydWN0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZShlKSAmJiAodGhpcy4kZWxlbWVudCA9IGUuJGVsZW1lbnQsIHRoaXMuaXNFZGl0ID0gdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZWxlbWVudG9yLWVsZW1lbnQtZWRpdC1tb2RlIiksIHRoaXMuaXNFZGl0ICYmIHRoaXMuYWRkRWRpdG9yTGlzdGVuZXJzKCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaXNBY3RpdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpbmRFbGVtZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLiRlbGVtZW50OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmZpbmQoZSkuZmlsdGVyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSh0aGlzKS5jbG9zZXN0KCIuZWxlbWVudG9yLWVsZW1lbnQiKS5pcyh0KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFVuaXF1ZUhhbmRsZXJJRDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IChlID0gdGhpcy5nZXRNb2RlbENJRCgpKSwgdCB8fCAodCA9IHRoaXMuJGVsZW1lbnQpLCBlICsgdC5hdHRyKCJkYXRhLWVsZW1lbnRfdHlwZSIpICsgdGhpcy5nZXRDb25zdHJ1Y3RvcklEKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbml0RWRpdG9yTGlzdGVuZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZWRpdG9yTGlzdGVuZXJzID0gW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiAiZWxlbWVudDpkZXN0cm95IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBlbGVtZW50b3IuY2hhbm5lbHMuZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5jaWQgPT09IGUuZ2V0TW9kZWxDSUQoKSAmJiBlLm9uRGVzdHJveSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dLCBlLm9uRWxlbWVudENoYW5nZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5nZXRXaWRnZXRUeXBlKCkgfHwgZS5nZXRFbGVtZW50VHlwZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9ICJjaGFuZ2UiOwogICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsIiAhPT0gdCAmJiAobiArPSAiOiIgKyB0KSwgZS5lZGl0b3JMaXN0ZW5lcnMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBlbGVtZW50b3IuY2hhbm5lbHMuZWRpdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmdldFVuaXF1ZUhhbmRsZXJJRChuLm1vZGVsLmNpZCwgbi4kZWwpID09PSBlLmdldFVuaXF1ZUhhbmRsZXJJRCgpICYmIGUub25FbGVtZW50Q2hhbmdlKHQubW9kZWwuZ2V0KCJuYW1lIiksIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUub25FZGl0U2V0dGluZ3NDaGFuZ2UgJiYgZS5lZGl0b3JMaXN0ZW5lcnMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiAiY2hhbmdlOmVkaXRTZXR0aW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBlbGVtZW50b3IuY2hhbm5lbHMuZWRpdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5tb2RlbC5jaWQgPT09IGUuZ2V0TW9kZWxDSUQoKSAmJiBlLm9uRWRpdFNldHRpbmdzQ2hhbmdlKE9iamVjdC5rZXlzKHQuY2hhbmdlZClbMF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgWyJwYWdlIl0uZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICJvbiIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpICsgIlNldHRpbmdzQ2hhbmdlIjsKICAgICAgICAgICAgICAgICAgICAgICAgZVtuXSAmJiBlLmVkaXRvckxpc3RlbmVycy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiAiY2hhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBlbGVtZW50b3Iuc2V0dGluZ3NbdF0ubW9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbl0odC5jaGFuZ2VkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEVkaXRvckxpc3RlbmVyczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yTGlzdGVuZXJzIHx8IHRoaXMuaW5pdEVkaXRvckxpc3RlbmVycygpLCB0aGlzLmVkaXRvckxpc3RlbmVycwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZEVkaXRvckxpc3RlbmVyczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldFVuaXF1ZUhhbmRsZXJJRCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWRpdG9yTGlzdGVuZXJzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5hZGRMaXN0ZW5lck9uY2UoZSwgdC5ldmVudCwgdC5jYWxsYmFjaywgdC50bykKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZW1vdmVFZGl0b3JMaXN0ZW5lcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRVbmlxdWVIYW5kbGVySUQoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEVkaXRvckxpc3RlbmVycygpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQucmVtb3ZlTGlzdGVuZXJzKGUsIHQuZXZlbnQsIG51bGwsIHQudG8pCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0RWxlbWVudFR5cGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LmRhdGEoImVsZW1lbnRfdHlwZSIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0V2lkZ2V0VHlwZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuJGVsZW1lbnQuZGF0YSgid2lkZ2V0X3R5cGUiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZSkgcmV0dXJuIGUuc3BsaXQoIi4iKVswXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldElEOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWxlbWVudC5kYXRhKCJpZCIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0TW9kZWxDSUQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LmRhdGEoIm1vZGVsLWNpZCIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0RWxlbWVudFNldHRpbmdzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5nZXRNb2RlbENJRCgpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRWRpdCAmJiBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuZWxlbWVudHMuZGF0YVtuXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmF0dHJpYnV0ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gcy53aWRnZXRUeXBlIHx8IHMuZWxUeXBlOwogICAgICAgICAgICAgICAgICAgICAgICBzLmlzSW5uZXIgJiYgKGkgPSAiaW5uZXItIiArIGkpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgciA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5lbGVtZW50cy5rZXlzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICByIHx8IChyID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmVsZW1lbnRzLmtleXNbaV0gPSBbXSwgalF1ZXJ5LmVhY2goZS5jb250cm9scywgKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmZyb250ZW5kX2F2YWlsYWJsZSAmJiByLnB1c2goZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgalF1ZXJ5LmVhY2goZS5nZXRBY3RpdmVDb250cm9scygpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSByLmluZGV4T2YoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IHNbZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi50b0pTT04gJiYgKG4gPSBuLnRvSlNPTigpKSwgdFtlXSA9IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHQgPSB0aGlzLiRlbGVtZW50LmRhdGEoInNldHRpbmdzIikgfHwge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbXModCwgZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRFZGl0U2V0dGluZ3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRWRpdCAmJiAodCA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5lbGVtZW50cy5lZGl0U2V0dGluZ3NbdGhpcy5nZXRNb2RlbENJRCgpXS5hdHRyaWJ1dGVzKSwgdGhpcy5nZXRJdGVtcyh0LCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEN1cnJlbnREZXZpY2VTZXR0aW5nOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksIGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Jbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlKHRoaXMuZ2V0U2V0dGluZ3MoKSkgJiYgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlLnByb3RvdHlwZS5vbkluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9uRGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0VkaXQgJiYgdGhpcy5yZW1vdmVFZGl0b3JMaXN0ZW5lcnMoKSwgdGhpcy51bmJpbmRFdmVudHMgJiYgdGhpcy51bmJpbmRFdmVudHMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgNjQxMjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgcyA9IG4oNzkxNCksCiAgICAgICAgICAgICAgICBpID0gcyhuKDU5NTUpKSwKICAgICAgICAgICAgICAgIHIgPSBzKG4oODEzNSkpLAogICAgICAgICAgICAgICAgbyA9IHMobig1NjU4KSksCiAgICAgICAgICAgICAgICBsID0gcyhuKDMwOTApKSwKICAgICAgICAgICAgICAgIGMgPSBzKG4oMjgyMSkpOwogICAgICAgICAgICBpLmRlZmF1bHQuZnJvbnRlbmQgPSB7CiAgICAgICAgICAgICAgICBEb2N1bWVudDogci5kZWZhdWx0LAogICAgICAgICAgICAgICAgdG9vbHM6IHsKICAgICAgICAgICAgICAgICAgICBTdHJldGNoRWxlbWVudDogby5kZWZhdWx0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGFuZGxlcnM6IHsKICAgICAgICAgICAgICAgICAgICBCYXNlOiBsLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgU3dpcGVyQmFzZTogYy5kZWZhdWx0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDU2NTg6IGUgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZS5leHRlbmQoewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19ydGwgPyAicmlnaHQiIDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogd2luZG93CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudDogalF1ZXJ5KHRoaXMuZ2V0U2V0dGluZ3MoImVsZW1lbnQiKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RyZXRjaDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMuY29udGFpbmVyIik7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGpRdWVyeSh0KQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgZSAmJiBlLmxlbmd0aCB8fCAoZSA9IGpRdWVyeSh0aGlzLmdldERlZmF1bHRTZXR0aW5ncygpLnNlbGVjdG9ycy5jb250YWluZXIpKSwgdGhpcy5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5lbGVtZW50cy4kZWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuaW5uZXJXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5vZmZzZXQoKS5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICByID0gImZpeGVkIiA9PT0gbi5jc3MoInBvc2l0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByID8gMCA6IGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdyAhPT0gZVswXSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGUub2Zmc2V0KCkubGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgciAmJiAobyA9IGwpLCBpID4gbCAmJiAobyA9IGkgLSBsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByIHx8IChlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaXNfcnRsICYmIChvID0gcyAtIChuLm91dGVyV2lkdGgoKSArIG8pKSwgbyA9IC1vKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHt9OwogICAgICAgICAgICAgICAgICAgIGMud2lkdGggPSBzICsgInB4IiwgY1t0aGlzLmdldFNldHRpbmdzKCJkaXJlY3Rpb24iKV0gPSBvICsgInB4Iiwgbi5jc3MoYykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiIgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgZVt0aGlzLmdldFNldHRpbmdzKCJkaXJlY3Rpb24iKV0gPSAiIiwgdGhpcy5lbGVtZW50cy4kZWxlbWVudC5jc3MoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIDI2MTg6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIHMgPSBuKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBzKG4oNzU5NykpLAogICAgICAgICAgICAgICAgciA9IHMobigzODEpKTsKICAgICAgICAgICAgY2xhc3MgQXJnc09iamVjdCBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0SW5zdGFuY2VUeXBlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiQXJnc09iamVjdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCB0aGlzLmFyZ3MgPSBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXF1aXJlQXJndW1lbnQoZSwgdCA9IHRoaXMuYXJncykgewogICAgICAgICAgICAgICAgICAgIGlmICghdC5oYXNPd25Qcm9wZXJ0eShlKSkgdGhyb3cgRXJyb3IoYCR7ZX0gaXMgcmVxdWlyZWQuYCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlcXVpcmVBcmd1bWVudFR5cGUoZSwgdCwgbiA9IHRoaXMuYXJncykgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlcXVpcmVBcmd1bWVudChlLCBuKSwgdHlwZW9mIG5bZV0gIT09IHQpIHRocm93IEVycm9yKGAke2V9IGludmFsaWQgdHlwZTogJHt0fS5gKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVxdWlyZUFyZ3VtZW50SW5zdGFuY2UoZSwgdCwgbiA9IHRoaXMuYXJncykgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlcXVpcmVBcmd1bWVudChlLCBuKSwgIShuW2VdIGluc3RhbmNlb2YgdCB8fCAoMCwgci5kZWZhdWx0KShuW2VdLCB0KSkpIHRocm93IEVycm9yKGAke2V9IGludmFsaWQgaW5zdGFuY2UuYCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlcXVpcmVBcmd1bWVudENvbnN0cnVjdG9yKGUsIHQsIG4gPSB0aGlzLmFyZ3MpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXF1aXJlQXJndW1lbnQoZSwgbiksIG5bZV0uY29uc3RydWN0b3IudG9TdHJpbmcoKSAhPT0gdC5wcm90b3R5cGUuY29uc3RydWN0b3IudG9TdHJpbmcoKSkgdGhyb3cgRXJyb3IoYCR7ZX0gaW52YWxpZCBjb25zdHJ1Y3RvciB0eXBlLmApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gQXJnc09iamVjdAogICAgICAgIH0sCiAgICAgICAgODY5OiAoZSwgdCkgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdC5Gb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBGb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uIGV4dGVuZHMgRXJyb3IgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoZSA9IHt9KSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoYCR7ZS5pc1N0YXRpYz8ic3RhdGljICI6IiJ9JHtlLmZ1bGxOYW1lfSgpIHNob3VsZCBiZSBpbXBsZW1lbnRlZCwgcGxlYXNlIHByb3ZpZGUgJyR7ZS5mdW5jdGlvbk5hbWV8fGUuZnVsbE5hbWV9JyBmdW5jdGlvbmFsaXR5LmApLCBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBGb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuRm9yY2VNZXRob2RJbXBsZW1lbnRhdGlvbiA9IEZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb247CiAgICAgICAgICAgIHQuZGVmYXVsdCA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBFcnJvcigpLnN0YWNrLnNwbGl0KCJcbiIpWzJdLnRyaW0oKSwKICAgICAgICAgICAgICAgICAgICB0ID0gZS5zdGFydHNXaXRoKCJhdCBuZXciKSA/ICJjb25zdHJ1Y3RvciIgOiBlLnNwbGl0KCIgIilbMV0sCiAgICAgICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICAgICAgaWYgKG4uZnVuY3Rpb25OYW1lID0gdCwgbi5mdWxsTmFtZSA9IHQsIG4uZnVuY3Rpb25OYW1lLmluY2x1ZGVzKCIuIikpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gbi5mdW5jdGlvbk5hbWUuc3BsaXQoIi4iKTsKICAgICAgICAgICAgICAgICAgICBuLmNsYXNzTmFtZSA9IGVbMF0sIG4uZnVuY3Rpb25OYW1lID0gZVsxXQogICAgICAgICAgICAgICAgfSBlbHNlIG4uaXNTdGF0aWMgPSAhMDsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uKG4pCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDc1OTc6IChlLCB0KSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIEluc3RhbmNlVHlwZSB7CiAgICAgICAgICAgICAgICBzdGF0aWNbU3ltYm9sLmhhc0luc3RhbmNlXShlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSBzdXBlcltTeW1ib2wuaGFzSW5zdGFuY2VdKGUpOwogICAgICAgICAgICAgICAgICAgIGlmIChlICYmICFlLmNvbnN0cnVjdG9yLmdldEluc3RhbmNlVHlwZSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgKGUuaW5zdGFuY2VUeXBlcyB8fCAoZS5pbnN0YW5jZVR5cGVzID0gW10pLCB0IHx8IHRoaXMuZ2V0SW5zdGFuY2VUeXBlKCkgPT09IGUuY29uc3RydWN0b3IuZ2V0SW5zdGFuY2VUeXBlKCkgJiYgKHQgPSAhMCksIHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldEluc3RhbmNlVHlwZSA9PT0gSW5zdGFuY2VUeXBlLmdldEluc3RhbmNlVHlwZSA/ICJCYXNlSW5zdGFuY2VUeXBlIiA6IHRoaXMuZ2V0SW5zdGFuY2VUeXBlKCk7IC0gMSA9PT0gZS5pbnN0YW5jZVR5cGVzLmluZGV4T2YodCkgJiYgZS5pbnN0YW5jZVR5cGVzLnB1c2godCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0ICYmIGUgJiYgKHQgPSBlLmluc3RhbmNlVHlwZXMgJiYgQXJyYXkuaXNBcnJheShlLmluc3RhbmNlVHlwZXMpICYmIC0xICE9PSBlLmluc3RhbmNlVHlwZXMuaW5kZXhPZih0aGlzLmdldEluc3RhbmNlVHlwZSgpKSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gbmV3LnRhcmdldDsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGUuX19wcm90b19fICYmIGUuX19wcm90b19fLm5hbWU7KSB0LnB1c2goZS5fX3Byb3RvX18pLCBlID0gZS5fX3Byb3RvX187CiAgICAgICAgICAgICAgICAgICAgdC5yZXZlcnNlKCkuZm9yRWFjaCgoZSA9PiB0aGlzIGluc3RhbmNlb2YgZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0SW5zdGFuY2VUeXBlKCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvck1vZHVsZXMuRm9yY2VNZXRob2RJbXBsZW1lbnRhdGlvbigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gSW5zdGFuY2VUeXBlCiAgICAgICAgfSwKICAgICAgICAxMTkyOiBlID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBjb25zdCBNb2R1bGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBqUXVlcnksCiAgICAgICAgICAgICAgICAgICAgdCA9IGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBzID0ge307CiAgICAgICAgICAgICAgICBsZXQgaTsKICAgICAgICAgICAgICAgIGNvbnN0IGVuc3VyZUNsb3N1cmVNZXRob2RzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZWFjaChuLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IG5bZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmIChuW2VdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYXBwbHkobiwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpbml0U2V0dGluZ3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uZ2V0RGVmYXVsdFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0WzBdOwogICAgICAgICAgICAgICAgICAgICAgICBzICYmIGUuZXh0ZW5kKCEwLCBpLCBzKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBuLl9fY29uc3RydWN0LmFwcGx5KG4sIHQpLCBlbnN1cmVDbG9zdXJlTWV0aG9kcygpLCBpbml0U2V0dGluZ3MoKSwgbi50cmlnZ2VyKCJpbml0IikKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgdGhpcy5nZXRJdGVtcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdC5zcGxpdCgiLiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4uc3BsaWNlKDAsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4ubGVuZ3RoKSByZXR1cm4gZVtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW3NdKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKGVbc10sIG4uam9pbigiLiIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfSwgdGhpcy5nZXRTZXR0aW5ncyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyhpLCBlKQogICAgICAgICAgICAgICAgfSwgdGhpcy5zZXRTZXR0aW5ncyA9IGZ1bmN0aW9uKHQsIHMsIHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAociB8fCAociA9IGkpLCAib2JqZWN0IiA9PSB0eXBlb2YgdCkgcmV0dXJuIGUuZXh0ZW5kKHIsIHQpLCBuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0LnNwbGl0KCIuIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBvLnNwbGljZSgwLCAxKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5sZW5ndGggPyAocltsXSB8fCAocltsXSA9IHt9KSwgbi5zZXRTZXR0aW5ncyhvLmpvaW4oIi4iKSwgcywgcltsXSkpIDogKHJbbF0gPSBzLCBuKQogICAgICAgICAgICAgICAgfSwgdGhpcy5nZXRFcnJvck1lc3NhZ2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IG47CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uIiA9PT0gZSkgbiA9IGBUaGUgbWV0aG9kICcke3R9JyBtdXN0IHRvIGJlIGltcGxlbWVudGVkIGluIHRoZSBpbmhlcml0b3IgY2hpbGQuYDsKICAgICAgICAgICAgICAgICAgICBlbHNlIG4gPSAiQW4gZXJyb3Igb2NjdXJzIjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgfSwgdGhpcy5mb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZSgiZm9yY2VNZXRob2RJbXBsZW1lbnRhdGlvbiIsIGUpKQogICAgICAgICAgICAgICAgfSwgdGhpcy5vbiA9IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHQpIHJldHVybiBlLmVhY2godCwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5vbihlLCB0aGlzKQogICAgICAgICAgICAgICAgICAgIH0pKSwgbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc1tlXSB8fCAoc1tlXSA9IFtdKSwgc1tlXS5wdXNoKGkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICB9LCB0aGlzLm9mZiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXNbZV0pIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIGRlbGV0ZSBzW2VdLCBuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBzW2VdLmluZGV4T2YodCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xICE9PSBpICYmIChkZWxldGUgc1tlXVtpXSwgc1tlXSA9IHNbZV0uZmlsdGVyKChlID0+IGUpKSksIG4KICAgICAgICAgICAgICAgIH0sIHRoaXMudHJpZ2dlciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gIm9uIiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwogICAgICAgICAgICAgICAgICAgIG5baV0gJiYgbltpXS5hcHBseShuLCByKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gc1t0XTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA/IChlLmVhY2gobywgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5hcHBseShuLCByKQogICAgICAgICAgICAgICAgICAgIH0pKSwgbikgOiBuCiAgICAgICAgICAgICAgICB9LCBpbml0KCkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgTW9kdWxlLnByb3RvdHlwZS5fX2NvbnN0cnVjdCA9IGZ1bmN0aW9uKCkge30sIE1vZHVsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdFNldHRpbmdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4ge30KICAgICAgICAgICAgfSwgTW9kdWxlLnByb3RvdHlwZS5nZXRDb25zdHJ1Y3RvcklEID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lCiAgICAgICAgICAgIH0sIE1vZHVsZS5leHRlbmQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0galF1ZXJ5LAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGNoaWxkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIHQuZXh0ZW5kKGNoaWxkLCBuKSwgKGNoaWxkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodC5leHRlbmQoe30sIG4ucHJvdG90eXBlLCBlKSkpLmNvbnN0cnVjdG9yID0gY2hpbGQsIGNoaWxkLl9fc3VwZXJfXyA9IG4ucHJvdG90eXBlLCBjaGlsZAogICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSBNb2R1bGUKICAgICAgICB9LAogICAgICAgIDY1MTY6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIHMgPSBuKDc5MTQpKG4oMjY0MCkpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBzLmRlZmF1bHQuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5nczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc0NvdW50OiAzLAogICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbFNwYWNlQmV0d2VlbjogMzAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyOiBqUXVlcnkodGhpcy5nZXRTZXR0aW5ncygiY29udGFpbmVyIikpLAogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbXM6IGpRdWVyeSh0aGlzLmdldFNldHRpbmdzKCJpdGVtcyIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBydW46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmVsZW1lbnRzLiRjb250YWluZXIucG9zaXRpb24oKS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmdldFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuLmNvbHVtbnNDb3VudDsKICAgICAgICAgICAgICAgICAgICB0ICs9IHBhcnNlSW50KHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lci5jc3MoIm1hcmdpbi10b3AiKSwgMTApLCB0aGlzLmVsZW1lbnRzLiRpdGVtcy5lYWNoKChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gTWF0aC5mbG9vcihpIC8gcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0galF1ZXJ5KHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG9bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ICsgbi52ZXJ0aWNhbFNwYWNlQmV0d2VlbjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gby5wb3NpdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpICUgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gYy50b3AgLSB0IC0gZVthXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgLT0gcGFyc2VJbnQoby5jc3MoIm1hcmdpbi10b3AiKSwgMTApLCB1ICo9IC0xLCBvLmNzcygibWFyZ2luLXRvcCIsIHUgKyAicHgiKSwgZVthXSArPSBsCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBlLnB1c2gobCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIDQwMDogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gY2xhc3MgU2Nyb2xsIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBzY3JvbGxPYnNlcnZlcihlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSAwOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Q6IGUucm9vdCB8fCBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICByb290TWFyZ2luOiBlLm9mZnNldCB8fCAiMHB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkOiAoKGUgPSAwKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA+IDAgJiYgZSA8PSAxMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gMTAwIC8gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gMDsgZSA8PSAxMDA7IGUgKz0gbikgdC5wdXNoKGUgLyAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdC5wdXNoKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkoZS5zZW5zaXRpdml0eSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uIGhhbmRsZUludGVyc2VjdChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBuWzBdLmJvdW5kaW5nQ2xpZW50UmVjdC55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bMF0uaXNJbnRlcnNlY3RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gcyA8IHQgPyAiZG93biIgOiAidXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE1hdGguYWJzKHBhcnNlRmxvYXQoKDEwMCAqIG5bMF0uaW50ZXJzZWN0aW9uUmF0aW8pLnRvRml4ZWQoMikpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jYWxsYmFjayh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zaXRpdml0eTogZS5zZW5zaXRpdml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSW5WaWV3cG9ydDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFBlcmNlbnRhZ2U6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25TY3JvbGxEaXJlY3Rpb246IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgPSBzCiAgICAgICAgICAgICAgICAgICAgfSksIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0RWxlbWVudFZpZXdwb3J0UGVyY2VudGFnZShlLCB0ID0ge30pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuc3RhcnQgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuZW5kIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB3aW5kb3cuaW5uZXJIZWlnaHQgKiBzIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gd2luZG93LmlubmVySGVpZ2h0ICogaSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4udG9wIC0gd2luZG93LmlubmVySGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gMCAtIGwgKyByLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbi50b3AgKyByICsgZS5oZWlnaHQoKSAtIGwgKyBvLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oYyAvIGEsIDEpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCgoMTAwICogdSkudG9GaXhlZCgyKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXRQYWdlU2Nyb2xsUGVyY2VudGFnZShlID0ge30sIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZS5zdGFydCB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5lbmQgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpICogbiAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkgKyByICsgaSAqIHMgLyAxMDA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgKyByKSAvIG8gKiAxMDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMjY0MDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgcyA9IG4oNzkxNCkobigxMTkyKSk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IHMuZGVmYXVsdC5leHRlbmQoewogICAgICAgICAgICAgICAgZWxlbWVudHM6IG51bGwsCiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7fQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJpbmRFdmVudHM6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgICAgICBvbkluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdEVsZW1lbnRzKCksIHRoaXMuYmluZEV2ZW50cygpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5pdEVsZW1lbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzID0gdGhpcy5nZXREZWZhdWx0RWxlbWVudHMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgNTk1NTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgcyA9IG4oNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IHMobigxMTkyKSksCiAgICAgICAgICAgICAgICByID0gcyhuKDI2NDApKSwKICAgICAgICAgICAgICAgIG8gPSBzKG4oMjYxOCkpLAogICAgICAgICAgICAgICAgbCA9IHMobig2NTE2KSksCiAgICAgICAgICAgICAgICBjID0gcyhuKDQwMCkpLAogICAgICAgICAgICAgICAgYSA9IHMobig4NjkpKSwKICAgICAgICAgICAgICAgIHUgPSB3aW5kb3cuZWxlbWVudG9yTW9kdWxlcyA9IHsKICAgICAgICAgICAgICAgICAgICBNb2R1bGU6IGkuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBWaWV3TW9kdWxlOiByLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgQXJnc09iamVjdDogby5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIEZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb246IGEuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICB1dGlsczogewogICAgICAgICAgICAgICAgICAgICAgICBNYXNvbnJ5OiBsLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbDogYy5kZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gdQogICAgICAgIH0KICAgIH0sCiAgICBlID0+IHsKICAgICAgICB2YXIgdDsKICAgICAgICB0ID0gNjQxMiwgZShlLnMgPSB0KQogICAgfQpdKTs="}},"time_used":1231,"timings":{"blocked":1135,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/images/betaroi-logo.png?w=1295\u0026ssl=1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"lazy-imageset","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.950Z","timestamp":1785145485950,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /images/betaroi-logo.png?w=1295\u0026ssl=1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/dist/vendor/regenerator-runtime.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.432Z","timestamp":1785145482432,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/dist/vendor/regenerator-runtime.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Mon, 15 Nov 2021 16:35:13 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=1.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","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":6494,"size_decoded":2989,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (6494), with no line terminators","md5":"64e89b93b02055fb75ea0913089ded0b","sha1":"9ccf854a6acedb27496725fa7570a670fd7bd572","sha256":"a3e64300797e8078baa41dbc49e2affc1d2bedd04a470f0c929ed7fac698fbcd","sha512":"a0249e580255ab1555cfffd5fddc4d02e7131accde87c748ff1484f06ef68d30e627fb8c9182d6c21da5f840546b88c6aadbd4d1197536fde4158298396a8a11","ssdeep":"192:qgmZqezJYiwDL+U3GA6qiY8qgx8s9Zqrr4PFkS:oUDl3t6CE9g8PFP","tlshash":"ded164ca71c6f01543977b25911f000be33a595ef9498558eb18e8e2fcb484e922beb8","first_seen":"2023-03-07T01:02:19Z","last_seen":"2026-07-27T13:52:26.90601Z","times_seen":37003,"resource_available":true,"data":"dmFyIHJ1bnRpbWU9ZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciB1LHQ9T2JqZWN0LnByb3RvdHlwZSxoPXQuaGFzT3duUHJvcGVydHkscj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxuPXIuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixlPXIuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsbz1yLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gaSh0LHIsZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse3ZhbHVlOmUsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W3JdfXRyeXtpKHt9LCIiKX1jYXRjaCh0KXtpPWZ1bmN0aW9uKHQscixlKXtyZXR1cm4gdFtyXT1lfX1mdW5jdGlvbiBjKHQscixlLG4pe3ZhciBvLGksYSxjLHI9ciYmci5wcm90b3R5cGUgaW5zdGFuY2VvZiB2P3I6dixyPU9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpLG49bmV3IGoobnx8W10pO3JldHVybiByLl9pbnZva2U9KG89dCxpPWUsYT1uLGM9bCxmdW5jdGlvbih0LHIpe2lmKGM9PT1wKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKGM9PT15KXtpZigidGhyb3ciPT09dCl0aHJvdyByO3JldHVybiBrKCl9Zm9yKGEubWV0aG9kPXQsYS5hcmc9cjs7KXt2YXIgZT1hLmRlbGVnYXRlO2lmKGUpe3ZhciBuPWZ1bmN0aW9uIHQocixlKXt2YXIgbj1yLml0ZXJhdG9yW2UubWV0aG9kXTtpZihuPT09dSl7aWYoZS5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1lLm1ldGhvZCl7aWYoci5pdGVyYXRvci5yZXR1cm4mJihlLm1ldGhvZD0icmV0dXJuIixlLmFyZz11LHQocixlKSwidGhyb3ciPT09ZS5tZXRob2QpKXJldHVybiBnO2UubWV0aG9kPSJ0aHJvdyIsZS5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBnfXZhciBuPWYobixyLml0ZXJhdG9yLGUuYXJnKTtpZigidGhyb3ciPT09bi50eXBlKXJldHVybiBlLm1ldGhvZD0idGhyb3ciLGUuYXJnPW4uYXJnLGUuZGVsZWdhdGU9bnVsbCxnO249bi5hcmc7aWYoIW4pcmV0dXJuIGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxlLmRlbGVnYXRlPW51bGwsZzt7aWYoIW4uZG9uZSlyZXR1cm4gbjtlW3IucmVzdWx0TmFtZV09bi52YWx1ZSxlLm5leHQ9ci5uZXh0TG9jLCJyZXR1cm4iIT09ZS5tZXRob2QmJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dSl9ZS5kZWxlZ2F0ZT1udWxsO3JldHVybiBnfShlLGEpO2lmKG4pe2lmKG49PT1nKWNvbnRpbnVlO3JldHVybiBufX1pZigibmV4dCI9PT1hLm1ldGhvZClhLnNlbnQ9YS5fc2VudD1hLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1hLm1ldGhvZCl7aWYoYz09PWwpdGhyb3cgYz15LGEuYXJnO2EuZGlzcGF0Y2hFeGNlcHRpb24oYS5hcmcpfWVsc2UicmV0dXJuIj09PWEubWV0aG9kJiZhLmFicnVwdCgicmV0dXJuIixhLmFyZyk7Yz1wO249ZihvLGksYSk7aWYoIm5vcm1hbCI9PT1uLnR5cGUpe2lmKGM9YS5kb25lP3k6cyxuLmFyZyE9PWcpcmV0dXJue3ZhbHVlOm4uYXJnLGRvbmU6YS5kb25lfX1lbHNlInRocm93Ij09PW4udHlwZSYmKGM9eSxhLm1ldGhvZD0idGhyb3ciLGEuYXJnPW4uYXJnKX19KSxyfWZ1bmN0aW9uIGYodCxyLGUpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKHIsZSl9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1hLndyYXA9Yzt2YXIgbD0ic3VzcGVuZGVkU3RhcnQiLHM9InN1c3BlbmRlZFlpZWxkIixwPSJleGVjdXRpbmciLHk9ImNvbXBsZXRlZCIsZz17fTtmdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gbSgpe312YXIgdz17fTtpKHcsbixmdW5jdGlvbigpe3JldHVybiB0aGlzfSk7cj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yscj1yJiZyKHIoTyhbXSkpKTtyJiZyIT09dCYmaC5jYWxsKHIsbikmJih3PXIpO3ZhciBMPW0ucHJvdG90eXBlPXYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyk7ZnVuY3Rpb24geCh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goZnVuY3Rpb24ocil7aSh0LHIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShyLHQpfSl9KX1mdW5jdGlvbiBiKGEsYyl7dmFyIHI7dGhpcy5faW52b2tlPWZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgYyhmdW5jdGlvbih0LHIpeyFmdW5jdGlvbiByKHQsZSxuLG8pe3Q9ZihhW3RdLGEsZSk7aWYoInRocm93IiE9PXQudHlwZSl7dmFyIGk9dC5hcmc7cmV0dXJuKGU9aS52YWx1ZSkmJiJvYmplY3QiPT10eXBlb2YgZSYmaC5jYWxsKGUsIl9fYXdhaXQiKT9jLnJlc29sdmUoZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHQpe3IoIm5leHQiLHQsbixvKX0sZnVuY3Rpb24odCl7cigidGhyb3ciLHQsbixvKX0pOmMucmVzb2x2ZShlKS50aGVuKGZ1bmN0aW9uKHQpe2kudmFsdWU9dCxuKGkpfSxmdW5jdGlvbih0KXtyZXR1cm4gcigidGhyb3ciLHQsbixvKX0pfW8odC5hcmcpfShlLG4sdCxyKX0pfXJldHVybiByPXI/ci50aGVuKHQsdCk6dCgpfX1mdW5jdGlvbiBFKHQpe3ZhciByPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoci5jYXRjaExvYz10WzFdKSwyIGluIHQmJihyLmZpbmFsbHlMb2M9dFsyXSxyLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKHIpfWZ1bmN0aW9uIF8odCl7dmFyIHI9dC5jb21wbGV0aW9ufHx7fTtyLnR5cGU9Im5vcm1hbCIsZGVsZXRlIHIuYXJnLHQuY29tcGxldGlvbj1yfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChFLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIE8ocil7aWYocil7dmFyIHQ9cltuXTtpZih0KXJldHVybiB0LmNhbGwocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHIubmV4dClyZXR1cm4gcjtpZighaXNOYU4oci5sZW5ndGgpKXt2YXIgZT0tMSx0PWZ1bmN0aW9uIHQoKXtmb3IoOysrZTxyLmxlbmd0aDspaWYoaC5jYWxsKHIsZSkpcmV0dXJuIHQudmFsdWU9cltlXSx0LmRvbmU9ITEsdDtyZXR1cm4gdC52YWx1ZT11LHQuZG9uZT0hMCx0fTtyZXR1cm4gdC5uZXh0PXR9fXJldHVybntuZXh0Omt9fWZ1bmN0aW9uIGsoKXtyZXR1cm57dmFsdWU6dSxkb25lOiEwfX1yZXR1cm4gaShMLCJjb25zdHJ1Y3RvciIsZC5wcm90b3R5cGU9bSksaShtLCJjb25zdHJ1Y3RvciIsZCksZC5kaXNwbGF5TmFtZT1pKG0sbywiR2VuZXJhdG9yRnVuY3Rpb24iKSxhLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dD0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09ZHx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sYS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsbSk6KHQuX19wcm90b19fPW0saSh0LG8sIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTCksdH0sYS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0seChiLnByb3RvdHlwZSksaShiLnByb3RvdHlwZSxlLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhLkFzeW5jSXRlcmF0b3I9YixhLmFzeW5jPWZ1bmN0aW9uKHQscixlLG4sbyl7dm9pZCAwPT09byYmKG89UHJvbWlzZSk7dmFyIGk9bmV3IGIoYyh0LHIsZSxuKSxvKTtyZXR1cm4gYS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP2k6aS5uZXh0KCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6aS5uZXh0KCl9KX0seChMKSxpKEwsbywiR2VuZXJhdG9yIiksaShMLG4sZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGkoTCwidG9TdHJpbmciLGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSxhLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXTtmb3IodCBpbiBlKW4ucHVzaCh0KTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGEudmFsdWVzPU8sai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dSx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz11LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKF8pLCF0KWZvcih2YXIgciBpbiB0aGlzKSJ0Ij09PXIuY2hhckF0KDApJiZoLmNhbGwodGhpcyxyKSYmIWlzTmFOKCtyLnNsaWNlKDEpKSYmKHRoaXNbcl09dSl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIHQodCxyKXtyZXR1cm4gaS50eXBlPSJ0aHJvdyIsaS5hcmc9ZSxuLm5leHQ9dCxyJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXUpLCEhcn1mb3IodmFyIHI9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xOzA8PXI7LS1yKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbcl0saT1vLmNvbXBsZXRpb247aWYoInJvb3QiPT09by50cnlMb2MpcmV0dXJuIHQoImVuZCIpO2lmKG8udHJ5TG9jPD10aGlzLnByZXYpe3ZhciBhPWguY2FsbChvLCJjYXRjaExvYyIpLGM9aC5jYWxsKG8sImZpbmFsbHlMb2MiKTtpZihhJiZjKXtpZih0aGlzLnByZXY8by5jYXRjaExvYylyZXR1cm4gdChvLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8by5maW5hbGx5TG9jKXJldHVybiB0KG8uZmluYWxseUxvYyl9ZWxzZSBpZihhKXtpZih0aGlzLnByZXY8by5jYXRjaExvYylyZXR1cm4gdChvLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8by5maW5hbGx5TG9jKXJldHVybiB0KG8uZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7MDw9ZTstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYzw9dGhpcy5wcmV2JiZoLmNhbGwobiwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8bi5maW5hbGx5TG9jKXt2YXIgbz1uO2JyZWFrfX12YXIgaT0obz1vJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmby50cnlMb2M8PXImJnI8PW8uZmluYWxseUxvYz9udWxsOm8pP28uY29tcGxldGlvbjp7fTtyZXR1cm4gaS50eXBlPXQsaS5hcmc9cixvPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PW8uZmluYWxseUxvYyxnKTp0aGlzLmNvbXBsZXRlKGkpfSxjb21wbGV0ZTpmdW5jdGlvbih0LHIpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZyJiYodGhpcy5uZXh0PXIpLGd9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xOzA8PXI7LS1yKXt2YXIgZT10aGlzLnRyeUVudHJpZXNbcl07aWYoZS5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShlLmNvbXBsZXRpb24sZS5hZnRlckxvYyksXyhlKSxnfX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTswPD1yOy0tcil7dmFyIGU9dGhpcy50cnlFbnRyaWVzW3JdO2lmKGUudHJ5TG9jPT09dCl7dmFyIG4sbz1lLmNvbXBsZXRpb247cmV0dXJuInRocm93Ij09PW8udHlwZSYmKG49by5hcmcsXyhlKSksbn19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LHIsZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOk8odCkscmVzdWx0TmFtZTpyLG5leHRMb2M6ZX0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz11KSxnfX0sYX0oIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM6e30pO3RyeXtyZWdlbmVyYXRvclJ1bnRpbWU9cnVudGltZX1jYXRjaCh0KXsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpcy5yZWdlbmVyYXRvclJ1bnRpbWU9cnVudGltZTpGdW5jdGlvbigiciIsInJlZ2VuZXJhdG9yUnVudGltZSA9IHIiKShydW50aW1lKX0="}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/jquery.ui.touch-punch.min.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.442Z","timestamp":1785145482442,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/jquery.ui.touch-punch.min.js?ver=20150330 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 1819\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":1819,"size_decoded":2035,"mime_type":"text/javascript","magic":"Unicode text, UTF-8 text","md5":"1235b66b886793d7ffe52bb76f73a2a0","sha1":"b9ddc9406beb1e23d56512de31bd53588159a676","sha256":"b91f520d58f78934a9508d283053934acbbdf4e5f76ad17f7b5c4ee3af67bb3b","sha512":"e00e3bcebf49385d5a8e4ad00e9cf38563efdaac9f909aab8030732ba58599ac74e96c8c244585b510f5fedb79957ec8814bdc3f450c29e09797a29f420db33e","ssdeep":"","tlshash":"ca317b4b93e2646fe263b754f37b6e6e7235814b4106c9843a3e42e09f2943d17b898d","first_seen":"2026-07-27T08:06:56.499915Z","last_seen":"2026-07-27T09:45:50.859817Z","times_seen":3,"resource_available":true,"data":"LyohCiAqIGpRdWVyeSBVSSBUb3VjaCBQdW5jaCAwLjIuMwogKgogKiBDb3B5cmlnaHQgMjAxMeKAkzIwMTQsIERhdmUgRnVyZmVybwogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICoKICogRGVwZW5kczoKICogIGpxdWVyeS51aS53aWRnZXQuanMKICogIGpxdWVyeS51aS5tb3VzZS5qcwogKi8KISBmdW5jdGlvbihhKSB7CiAgICBmdW5jdGlvbiBmKGEsIGIpIHsKICAgICAgICBpZiAoIShhLm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGggPiAxKSkgewogICAgICAgICAgICBhLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHZhciBjID0gYS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLAogICAgICAgICAgICAgICAgZCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOwogICAgICAgICAgICBkLmluaXRNb3VzZUV2ZW50KGIsICEwLCAhMCwgd2luZG93LCAxLCBjLnNjcmVlblgsIGMuc2NyZWVuWSwgYy5jbGllbnRYLCBjLmNsaWVudFksICExLCAhMSwgITEsICExLCAwLCBudWxsKSwgYS50YXJnZXQuZGlzcGF0Y2hFdmVudChkKQogICAgICAgIH0KICAgIH0KICAgIGlmIChhLnN1cHBvcnQudG91Y2ggPSAib250b3VjaGVuZCIgaW4gZG9jdW1lbnQsIGEuc3VwcG9ydC50b3VjaCkgewogICAgICAgIHZhciBlLCBiID0gYS51aS5tb3VzZS5wcm90b3R5cGUsCiAgICAgICAgICAgIGMgPSBiLl9tb3VzZUluaXQsCiAgICAgICAgICAgIGQgPSBiLl9tb3VzZURlc3Ryb3k7CiAgICAgICAgYi5fdG91Y2hTdGFydCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSB0aGlzOwogICAgICAgICAgICAhZSAmJiBiLl9tb3VzZUNhcHR1cmUoYS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdKSAmJiAoZSA9ICEwLCBiLl90b3VjaE1vdmVkID0gITEsIGYoYSwgIm1vdXNlb3ZlciIpLCBmKGEsICJtb3VzZW1vdmUiKSwgZihhLCAibW91c2Vkb3duIikpCiAgICAgICAgfSwgYi5fdG91Y2hNb3ZlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICBlICYmICh0aGlzLl90b3VjaE1vdmVkID0gITAsIGYoYSwgIm1vdXNlbW92ZSIpKQogICAgICAgIH0sIGIuX3RvdWNoRW5kID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICBlICYmIChmKGEsICJtb3VzZXVwIiksIGYoYSwgIm1vdXNlb3V0IiksIHRoaXMuX3RvdWNoTW92ZWQgfHwgZihhLCAiY2xpY2siKSwgZSA9ICExKQogICAgICAgIH0sIGIuX21vdXNlSW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYiA9IHRoaXM7CiAgICAgICAgICAgIGIuZWxlbWVudC5iaW5kKHsKICAgICAgICAgICAgICAgIHRvdWNoc3RhcnQ6IGEucHJveHkoYiwgIl90b3VjaFN0YXJ0IiksCiAgICAgICAgICAgICAgICB0b3VjaG1vdmU6IGEucHJveHkoYiwgIl90b3VjaE1vdmUiKSwKICAgICAgICAgICAgICAgIHRvdWNoZW5kOiBhLnByb3h5KGIsICJfdG91Y2hFbmQiKQogICAgICAgICAgICB9KSwgYy5jYWxsKGIpCiAgICAgICAgfSwgYi5fbW91c2VEZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBiID0gdGhpczsKICAgICAgICAgICAgYi5lbGVtZW50LnVuYmluZCh7CiAgICAgICAgICAgICAgICB0b3VjaHN0YXJ0OiBhLnByb3h5KGIsICJfdG91Y2hTdGFydCIpLAogICAgICAgICAgICAgICAgdG91Y2htb3ZlOiBhLnByb3h5KGIsICJfdG91Y2hNb3ZlIiksCiAgICAgICAgICAgICAgICB0b3VjaGVuZDogYS5wcm94eShiLCAiX3RvdWNoRW5kIikKICAgICAgICAgICAgfSksIGQuY2FsbChiKQogICAgICAgIH0KICAgIH0KfShqUXVlcnkpOw=="}},"time_used":998,"timings":{"blocked":899,"dns":0,"connect":0,"send":0,"wait":99,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/revslider/public/assets/css/rs6.css?ver=6.4.11","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.285Z","timestamp":1785145482285,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/revslider/public/assets/css/rs6.css?ver=6.4.11 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 68671\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":68671,"size_decoded":68881,"mime_type":"text/css","magic":"Unicode text, UTF-8 text","md5":"e72b64b82b058b567608f04fbb0beea9","sha1":"f9e969f7871666f0b0e6553e447cdc0eaf4d8272","sha256":"656919b5d05a0b268f52676352aa60b1f164e2730b7083c8ae072ce69c11e875","sha512":"a2e194443a11c5d5c189f8847772eeb4ca44ea8d17386af2dfc4715f636be480608148abc46c270fbd4d83093fce1eb0afe55f09e6c23b14eac4a64a130498c4","ssdeep":"1536:qiywF5+5oyUgMd3xtY6LIETLZtw4yF0we/MuGF4wCPouyFqovbrLJetv:8kJ3WS","tlshash":"ac6384619cf30c94320bc5985bed47e47628d8135d0e9c6cfb8a365c8f4e698d1aafc9","first_seen":"2026-07-27T08:06:56.410202Z","last_seen":"2026-07-27T09:45:50.93668Z","times_seen":3,"resource_available":false,"data":"LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLQlSZXZvbHV0aW9uIFNsaWRlciA2LjAgRGVmYXVsdCBTdHlsZSBTZXR0aW5ncyAtCgpTY3JlZW4gU3R5bGVzaGVldAoKdmVyc2lvbjogICAJNi4yLjgKZGF0ZTogICAgICAJMjQvMDYvMTkKYXV0aG9yOgkJdGhlbWVwdW5jaAplbWFpbDogICAgIAlpbmZvQHRoZW1lcHVuY2guY29tCndlYnNpdGU6ICAgCWh0dHA6Ly93d3cudGhlbWVwdW5jaC5jb20KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogRklYIEZPUiBXT1JEUFJFU1MncyBDUkFaWSA8cD4gVEFHIEFOT01BTFkgKi8KCi5ycy1wLXdwLWZpeCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGhlaWdodDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIE5FVyBaLUlOREVYIEZJWCovCgoud3AtYmxvY2stdGhlbWVwdW5jaC1yZXZzbGlkZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCiNkZWJ1bmdjb250cm9sbHMgewogICAgei1pbmRleDogMTAwMDAwOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgYm90dG9tOiAwcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Cgpycy1kZWJ1ZyB7CiAgICB6LWluZGV4OiAxMDAwMDA7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDBweDsKICAgIHdpZHRoOiAzMDBweDsKICAgIGhlaWdodDogMzAwcHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiAxMHB4OwogICAgbGluZS1oZWlnaHQ6IDEzcHg7CiAgICBvdmVyZmxvdzogc2Nyb2xsOwp9CgovKiBNT0RBTCBCQVNJQ1MgKi8KCnJzLW1vZGFsIHsKICAgIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50OwogICAgei1pbmRleDogOTk5OTk5OSAhaW1wb3J0YW50OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsKfQoKcnMtbW9kYWwucnMtbW9kYWwtYXV0byB7CiAgICB0b3A6IGF1dG87CiAgICBib3R0b206IGF1dG87CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IGF1dG87Cn0KCnJzLW1vZGFsLnJzLW1vZGFsLWZ1bGx3aWR0aCwKcnMtbW9kYWwucnMtbW9kYWwtZnVsbHNjcmVlbiB7CiAgICB0b3A6IDBweDsKICAgIGxlZnQ6IDBweDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9Cgpycy1tb2RhbCBycy1mdWxsd2lkdGgtd3JhcCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDBweDsKICAgIGxlZnQ6IDBweDsKICAgIGhlaWdodDogMTAwJTsKfQoKcnMtbW9kdWxlLXdyYXAucnMtbW9kYWwgewogICAgZGlzcGxheTogbm9uZTsKICAgIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50Owp9Cgpycy1tb2R1bGUtd3JhcC5oaWRlYWxsc2Nyb2xsYmFycy5ycy1tb2RhbCB7CiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudAp9Cgpycy1tb2RhbC1jb3ZlciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHotaW5kZXg6IDA7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcG9pbnRlci1ldmVudHM6IGF1dG8KfQoKYm9keT5ycy1tb2RhbC1jb3ZlciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiA5OTk5OTk1ICFpbXBvcnRhbnQ7Cn0KCnJzLXNiZy1weCB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgoucnMtZm9yY2V1bnRvdWNoYWJsZSwKLnJzLWZvcmNldW50b3VjaGFibGUgKiB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50Owp9CgoucnMtZm9yY2VoaWRkZW4gKiB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQoKLypycy1tb2RhbCBycy1mdWxsd2lkdGgtd3JhcCBycy1tb2R1bGUtd3JhcCB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSAhaW1wb3J0YW50OyB0b3A6IDUwJSAhaW1wb3J0YW50OyB9Ki8KCi5yc19zcGxpdHRlZF9saW5lcyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudAp9CgouZGVidWd0aW1lbGluZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogM3B4OwogICAgZGlzcGxheTogbm9uZTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgouZGVidWd0aW1lbGluZTpob3ZlciB7CiAgICBoZWlnaHQ6IDE1cHg7Cn0KCi50aGVfdGltZWxpbmVfdGVzdGVyIHsKICAgIGJhY2tncm91bmQ6ICNlNzRjM2M7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDBweDsKICAgIGxlZnQ6IDBweDsKICAgIGhlaWdodDogMTAwJTsKICAgIHdpZHRoOiAwOwp9CgoucnMtZ28tZnVsbHNjcmVlbiB7CiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIHRvcDogMHB4ICFpbXBvcnRhbnQ7CiAgICBsZWZ0OiAwcHggIWltcG9ydGFudDsKICAgIHotaW5kZXg6IDk5OTk5OTkgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7Cn0KCi5kZWJ1Z3RpbWVsaW5lLnRsX3NsaWRlIC50aGVfdGltZWxpbmVfdGVzdGVyIHsKICAgIGJhY2tncm91bmQ6ICNmMzljMTI7Cn0KCi5kZWJ1Z3RpbWVsaW5lLnRsX2ZyYW1lIC50aGVfdGltZWxpbmVfdGVzdGVyIHsKICAgIGJhY2tncm91bmQ6ICMzNDk4ZGI7Cn0KCi5kZWJ1Z3RpbWxpbmVfdHh0IHsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogN3B4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMTBweDsKICAgIHRvcDogMHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGxpbmUtaGVpZ2h0OiAxMHB4Owp9CgoucnRsIHsKICAgIGRpcmVjdGlvbjogcnRsOwp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAncmV2aWNvbnMnOwogICAgc3JjOiB1cmwoJy4uL2ZvbnRzL3Jldmljb25zL3Jldmljb25zLmVvdD81NTEwODg4Jyk7CiAgICBzcmM6IHVybCgnLi4vZm9udHMvcmV2aWNvbnMvcmV2aWNvbnMuZW90PzU1MTA4ODgjaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgnLi4vZm9udHMvcmV2aWNvbnMvcmV2aWNvbnMud29mZj81NTEwODg4JykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi4vZm9udHMvcmV2aWNvbnMvcmV2aWNvbnMudHRmPzU1MTA4ODgnKSBmb3JtYXQoJ3RydWV0eXBlJyksIHVybCgnLi4vZm9udHMvcmV2aWNvbnMvcmV2aWNvbnMuc3ZnPzU1MTA4ODgjcmV2aWNvbnMnKSBmb3JtYXQoJ3N2ZycpOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKfQoKW2NsYXNzXj0icmV2aWNvbi0iXTpiZWZvcmUsCltjbGFzcyo9IiByZXZpY29uLSJdOmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogInJldmljb25zIjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBzcGVhazogbm9uZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDsKICAgIHdpZHRoOiAxZW07CiAgICBtYXJnaW4tcmlnaHQ6IC4yZW07CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAvKiBGb3Igc2FmZXR5IC0gcmVzZXQgcGFyZW50IHN0eWxlcywgdGhhdCBjYW4gYnJlYWsgZ2x5cGggY29kZXMqLwogICAgZm9udC12YXJpYW50OiBub3JtYWw7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgIC8qIGZpeCBidXR0b25zIGhlaWdodCwgZm9yIHR3aXR0ZXIgYm9vdHN0cmFwICovCiAgICBsaW5lLWhlaWdodDogMWVtOwogICAgLyogQW5pbWF0aW9uIGNlbnRlciBjb21wZW5zYXRpb24gLSBtYXJnaW5zIHNob3VsZCBiZSBzeW1tZXRyaWMgKi8KICAgIC8qIHJlbW92ZSBpZiBub3QgbmVlZGVkICovCiAgICBtYXJnaW4tbGVmdDogLjJlbTsKICAgIC8qIHlvdSBjYW4gYmUgbW9yZSBjb21mb3J0YWJsZSB3aXRoIGluY3JlYXNlZCBpY29ucyBzaXplICovCiAgICAvKiBmb250LXNpemU6IDEyMCU7ICovCiAgICAvKiBVbmNvbW1lbnQgZm9yIDNEIGVmZmVjdCAqLwogICAgLyogdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4IHJnYmEoMTI3LCAxMjcsIDEyNywgMC4zKTsgKi8KfQoKcnMtbW9kdWxlIGlbY2xhc3NePSJmYS0iXSwKcnMtbW9kdWxlIGlbY2xhc3MqPSIgZmEtIl0sCi5yYi1tb2RhbC13cmFwcGVyIGlbY2xhc3NePSJmYS0iXSwKLnJiLW1vZGFsLXdyYXBwZXIgaVtjbGFzcyo9IiBmYS0iXSwKI3dhaXRhbWludXRlIGlbY2xhc3NePSJmYS0iXSwKI3dhaXRhbWludXRlIGlbY2xhc3MqPSIgZmEtIl0sCiNvYmplY3RsaWJyYXJ5IGlbY2xhc3NePSJmYS0iXSwKI29iamVjdGxpYnJhcnkgaVtjbGFzcyo9IiBmYS0iXSwKI3JzX292ZXJ2aWV3IGlbY2xhc3NePSJmYS0iXSwKI3JzX292ZXJ2aWV3IGlbY2xhc3MqPSIgZmEtIl0sCiNyc19vdmVydmlld19tZW51IGlbY2xhc3NePSJmYS0iXSwKI3JzX292ZXJ2aWV3X21lbnUgaVtjbGFzcyo9IiBmYS0iXSwKI2J1aWxkZXJWaWV3IGlbY2xhc3NePSJmYS0iXSwKI2J1aWxkZXJWaWV3IGlbY2xhc3MqPSIgZmEtIl0gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIEZvbnRBd2Vzb21lOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgdGV4dC1yZW5kZXJpbmc6IGF1dG87CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cn0KCnJzLW1vZHVsZSBbY2xhc3NePSJmYS0iXTpiZWZvcmUsCnJzLW1vZHVsZSBbY2xhc3MqPSIgZmEtIl06YmVmb3JlLAoucmItbW9kYWwtd3JhcHBlciBbY2xhc3NePSJmYS0iXTpiZWZvcmUsCi5yYi1tb2RhbC13cmFwcGVyIFtjbGFzcyo9IiBmYS0iXTpiZWZvcmUsCiNyc19vdmVydmlldyBbY2xhc3NePSJmYS0iXTpiZWZvcmUsCiNyc19vdmVydmlldyBbY2xhc3MqPSIgZmEtIl06YmVmb3JlLAojb2JqZWN0bGlicmFyeSBbY2xhc3NePSJmYS0iXTpiZWZvcmUsCiNvYmplY3RsaWJyYXJ5IFtjbGFzcyo9IiBmYS0iXTpiZWZvcmUsCiN3YWl0YW1pbnV0ZSBbY2xhc3NePSJmYS0iXTpiZWZvcmUsCiN3YWl0YW1pbnV0ZSBbY2xhc3MqPSIgZmEtIl06YmVmb3JlLAojcnNfb3ZlcnZpZXdfbWVudSBbY2xhc3NePSJmYS0iXTpiZWZvcmUsCiNyc19vdmVydmlld19tZW51IFtjbGFzcyo9IiBmYS0iXTpiZWZvcmUsCiNidWlsZGVyVmlldyBbY2xhc3NePSJmYS0iXTpiZWZvcmUsCiNidWlsZGVyVmlldyBbY2xhc3MqPSIgZmEtIl06YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBzcGVhazogbm9uZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDsKICAgIHdpZHRoOiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC12YXJpYW50OiBub3JtYWw7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCnJzLW1vZHVsZSAuc3Itb25seSwKI29iamVjdGxpYnJhcnkgLnNyLW9ubHksCiN3YWl0YW1pbnV0ZSAuc3Itb25seSwKI3JzX292ZXJ2aWV3IC5zci1vbmx5LAojcnNfb3ZlcnZpZXdfbWVudSAuc3Itb25seSwKLnJiLW1vZGFsLXdyYXBwZXIgLnNyLW9ubHksCiNidWlsZGVyVmlldyAuc3Itb25seSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiAxcHg7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAtMXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgICBib3JkZXI6IDA7Cn0KCnJzLW1vZHVsZSAuc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLApycy1tb2R1bGUgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzLAojd2FpdGFtaW51dGUgLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKI3dhaXRhbWludXRlIC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cywKI29iamVjdGxpYnJhcnkgLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKI29iamVjdGxpYnJhcnkgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzLAojcnNfb3ZlcnZpZXcgLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKI3JzX292ZXJ2aWV3IC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cywKI3JzX292ZXJ2aWV3X21lbnUgLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKI3JzX292ZXJ2aWV3X21lbnUgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzLAoucmItbW9kYWwtd3JhcHBlciAuc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLAoucmItbW9kYWwtd3JhcHBlciAuc3Itb25seS1mb2N1c2FibGU6Zm9jdXMsCiNidWlsZGVyVmlldyAuc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLAojYnVpbGRlclZpZXcgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICB3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIG1hcmdpbjogMDsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgY2xpcDogYXV0bzsKfQoKLnJldmljb24tc2VhcmNoLTE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwMic7Cn0KCi8qICfDrsKg4oCaJyAqLwoKLnJldmljb24tcGVuY2lsLTE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzMSc7Cn0KCi8qICfDrsKgwrEnICovCgoucmV2aWNvbi1waWN0dXJlLTE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwMyc7Cn0KCi8qICfDrsKgxpInICovCgoucmV2aWNvbi1jYW5jZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwYSc7Cn0KCi8qICfDrsKgxaAnICovCgoucmV2aWNvbi1pbmZvLWNpcmNsZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwZic7Cn0KCi8qICfDrsKgwo8nICovCgoucmV2aWNvbi10cmFzaDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODAxJzsKfQoKLyogJ8OuwqDCgScgKi8KCi5yZXZpY29uLWxlZnQtZGlyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MTcnOwp9CgovKiAnw67CoOKAlCcgKi8KCi5yZXZpY29uLXJpZ2h0LWRpcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODE4JzsKfQoKLyogJ8OuwqDLnCcgKi8KCi5yZXZpY29uLWRvd24tb3BlbjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODNiJzsKfQoKLyogJ8OuwqDCuycgKi8KCi5yZXZpY29uLWxlZnQtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODE5JzsKfQoKLyogJ8OuwqDihKInICovCgoucmV2aWNvbi1yaWdodC1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MWEnOwp9CgovKiAnw67CoMWhJyAqLwoKLnJldmljb24tYW5nbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODIwJzsKfQoKLyogJ8OuwqDCoCcgKi8KCi5yZXZpY29uLWFuZ2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MWQnOwp9CgovKiAnw67CoMKdJyAqLwoKLnJldmljb24tbGVmdC1iaWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgxZic7Cn0KCi8qICfDrsKgxbgnICovCgoucmV2aWNvbi1yaWdodC1iaWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgxZSc7Cn0KCi8qICfDrsKgxb4nICovCgoucmV2aWNvbi1tYWdpYzpiZWZvcmUgewogICAgY29udGVudDogJ1xlODA3JzsKfQoKLyogJ8OuwqDigKEnICovCgoucmV2aWNvbi1waWN0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MDAnOwp9CgovKiAnw67CoOKCrCcgKi8KCi5yZXZpY29uLWV4cG9ydDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODBiJzsKfQoKLyogJ8OuwqDigLknICovCgoucmV2aWNvbi1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzMic7Cn0KCi8qICfDrsKgwrInICovCgoucmV2aWNvbi1sb2dpbjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODMzJzsKfQoKLyogJ8OuwqDCsycgKi8KCi5yZXZpY29uLWxvZ291dDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODM0JzsKfQoKLyogJ8OuwqDCtCcgKi8KCi5yZXZpY29uLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MDUnOwp9CgovKiAnw67CoOKApicgKi8KCi5yZXZpY29uLWFycm93LWNvbWJvOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MjcnOwp9CgovKiAnw67CoMKnJyAqLwoKLnJldmljb24tbGVmdC1vcGVuLTE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyYSc7Cn0KCi8qICfDrsKgwqonICovCgoucmV2aWNvbi1yaWdodC1vcGVuLTE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyYic7Cn0KCi8qICfDrsKgwqsnICovCgoucmV2aWNvbi1sZWZ0LW9wZW4tbWluaTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODIyJzsKfQoKLyogJ8OuwqDCoicgKi8KCi5yZXZpY29uLXJpZ2h0LW9wZW4tbWluaTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODIzJzsKfQoKLyogJ8OuwqDCoycgKi8KCi5yZXZpY29uLWxlZnQtb3Blbi1iaWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyNCc7Cn0KCi8qICfDrsKgwqQnICovCgoucmV2aWNvbi1yaWdodC1vcGVuLWJpZzpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI1JzsKfQoKLyogJ8OuwqDCpScgKi8KCi5yZXZpY29uLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzNic7Cn0KCi8qICfDrsKgwrYnICovCgoucmV2aWNvbi1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI2JzsKfQoKLyogJ8OuwqDCpicgKi8KCi5yZXZpY29uLWNjdzpiZWZvcmUgewogICAgY29udGVudDogJ1xlODA4JzsKfQoKLyogJ8OuwqDLhicgKi8KCi5yZXZpY29uLWFycm93cy1jY3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwNic7Cn0KCi8qICfDrsKg4oCgJyAqLwoKLnJldmljb24tcGFsZXR0ZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI5JzsKfQoKLyogJ8OuwqDCqScgKi8KCi5yZXZpY29uLWxpc3QtYWRkOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MGMnOwp9CgovKiAnw67CoMWSJyAqLwoKLnJldmljb24tZG9jOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MDknOwp9CgovKiAnw67CoOKAsCcgKi8KCi5yZXZpY29uLWxlZnQtb3Blbi1vdXRsaW5lOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MmUnOwp9CgovKiAnw67CoMKuJyAqLwoKLnJldmljb24tbGVmdC1vcGVuLTI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyYyc7Cn0KCi8qICfDrsKgwqwnICovCgoucmV2aWNvbi1yaWdodC1vcGVuLW91dGxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyZic7Cn0KCi8qICfDrsKgwq8nICovCgoucmV2aWNvbi1yaWdodC1vcGVuLTI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyZCc7Cn0KCi8qICfDrsKgwq0nICovCgoucmV2aWNvbi1lcXVhbGl6ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzYSc7Cn0KCi8qICfDrsKgwronICovCgoucmV2aWNvbi1sYXllcnMtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MDQnOwp9CgovKiAnw67CoOKAnicgKi8KCi5yZXZpY29uLXBvcHVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MjgnOwp9CgovKiAnw67CoMKoJyAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJLQlCQVNJQyBTVFlMRVMJCS0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLnRwLWZ1bGx3aWR0aC1mb3JjZXIgewogICAgei1pbmRleDogMDsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lCn0KCnJzLW1vZHVsZS13cmFwIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbgp9Cgpycy1tb2R1bGUtd3JhcCwKcnMtbW9kdWxlLXdyYXAgKiB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwp9Cgpycy1tb2R1bGUtd3JhcCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwogICAgd2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnJzLWZpeGVkc2Nyb2xsb24gcnMtbW9kdWxlLXdyYXAgewogICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7CiAgICB0b3A6IDBweCAhaW1wb3J0YW50OwogICAgei1pbmRleDogMTAwMDsKICAgIGxlZnQ6IDAgIWltcG9ydGFudDsKfQoKLnJzLXN0aWNreXNjcm9sbG9uIHJzLW1vZHVsZS13cmFwIHsKICAgIHBvc2l0aW9uOiBzdGlja3kgIWltcG9ydGFudDsKICAgIHRvcDogMHB4OwogICAgei1pbmRleDogMTAwMDsKfQoKLnJzLXN0aWNreXNjcm9sbG9uIHsKICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7Cn0KCnJzLWZ3LWZvcmNlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCnJzLW1vZHVsZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCnJzLW1vZHVsZS5kaXNhYmxlVmVydGljYWxTY3JvbGwgewogICAgLW1zLXRvdWNoLWFjdGlvbjogcGFuLXg7CiAgICB0b3VjaC1hY3Rpb246IHBhbi14Owp9Cgpycy1wemltZy13cmFwLApycy1zYmctZWZmZWN0d3JhcCwKcnMtc2JnIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKcnMtc2JnLWVmZmVjdHdyYXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJQp9Cgpycy1jYXJvdXNlbC13cmFwIHJzLWNvbHVtbiBycy1sYXllciBpbWcgewogICAgd2lkdGg6IDBweDsKICAgIGhlaWdodDogMHB4Owp9Cgpycy1zYmctcHgsCnJzLXNiZy13cmFwIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4OwogICAgei1pbmRleDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCmEucnMtbGF5ZXIsCmEucnMtbGF5ZXI6LXdlYmtpdC1hbnktbGluayB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKYVt4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzXSB7CiAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IGluaGVyaXQgIWltcG9ydGFudDsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50OwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQgIWltcG9ydGFudDsKfQoKLmVudHJ5LWNvbnRlbnQgcnMtbW9kdWxlIGEsCnJzLW1vZHVsZSBhIHsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi5ycy1vdi1oaWRkZW4gewogICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgoucnMtZm9yY2VvdmVyZmxvdywKLnJzLWZvcmNlb3ZlcmZsb3cgcnMtbW9kdWxlLXdyYXAsCi5ycy1mb3JjZW92ZXJmbG93IHJzLW1vZHVsZSwKLnJzLWZvcmNlb3ZlcmZsb3cgcnMtc2xpZGVzLAoucnMtZm9yY2VvdmVyZmxvdyBycy1zbGlkZSB7CiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50Cn0KCi50cC1zaW1wbGVyZXNwb25zaXZlIGltZywKcnMtbW9kdWxlIGltZyB7CiAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICBtYXJnaW46IDBweDsKICAgIHBhZGRpbmc6IDBweDsKICAgIGJvcmRlcjogbm9uZTsKfQoKcnMtbW9kdWxlIC5uby1zbGlkZXMtdGV4dCB7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmctdG9wOiA4MHB4Owp9Cgpycy1zbGlkZXMsCnJzLXNsaWRlLApycy1zbGlkZTpiZWZvcmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1pbmRlbnQ6IDBlbTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4Owp9Cgpycy1zbGlkZSwKcnMtc2xpZGU6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwp9CgoucnMtbGF5ZXIgLnJzLXVudG9nZ2xlZC1jb250ZW50IHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgoucnMtbGF5ZXIgLnJzLXRvZ2dsZWQtY29udGVudCB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoucnMtdGMtYWN0aXZlLnJzLWxheWVyPi5ycy10b2dnbGVkLWNvbnRlbnQgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5ycy10Yy1hY3RpdmUucnMtbGF5ZXI+LnJzLXVudG9nZ2xlZC1jb250ZW50IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5ycy1sYXllci12aWRlbyB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5yc19odG1sNXZpZGJhc2ljc3R5bGVzIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Cgpycy1tb2R1bGUgcnMtbGF5ZXIsCnJzLW1vZHVsZSAucnMtbGF5ZXIgewogICAgb3BhY2l0eTogMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogICAgei1pbmRleDogMTsKfQoKcnMtbGF5ZXItd3JhcCwKcnMtbWFzaywKcnMtbW9kdWxlLXdyYXAsCnJzLW1vZHVsZSAucnMtbGF5ZXIsCnJzLW1vZHVsZSBpbWcgewogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtby11c2VyLXNlbGVjdDogbm9uZTsKfQoKcnMtbW9kdWxlIHJzLW1hc2std3JhcCAucnMtbGF5ZXIsCnJzLW1vZHVsZSBycy1tYXNrLXdyYXAgKjpsYXN0LWNoaWxkLAoud3BiX3RleHRfY29sdW1uIHJzLW1vZHVsZSBycy1tYXNrLXdyYXAgLnJzLWxheWVyLAoud3BiX3RleHRfY29sdW1uIHJzLW1vZHVsZSBycy1tYXNrLXdyYXAgKjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5ycy1zdmcgc3ZnIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdmVydGljYWwtYWxpZ246IHRvcAp9Cgpycy1sYXllcjpub3QoLnJzLXd0YmluZGV4KSwKLnJzLWxheWVyOm5vdCgucnMtd3RiaW5kZXgpLApycy1hbHllciAqOm5vdCgucnMtd3RiaW5kZXgpLAoucnMtbGF5ZXIgKjpub3QoLnJzLXd0YmluZGV4KSB7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIENBUk9VU0VMIEZVTkNUSU9OUyAqLwoKcnMtY2Fyb3VzZWwtd3JhcCB7CiAgICBjdXJzb3I6IHVybChvcGVuaGFuZC5jdXIpLCBtb3ZlOwp9Cgpycy1jYXJvdXNlbC13cmFwLmRyYWdnZWQgewogICAgY3Vyc29yOiB1cmwoY2xvc2VkaGFuZC5jdXIpLCBtb3ZlOwp9Cgpycy1jYXJvdXNlbC13cmFwLm5vc3dpcGUgewogICAgY3Vyc29yOiBkZWZhdWx0Owp9Cgpycy1jYXJvdXNlbC13cmFwIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4Owp9Cgpycy1jYXJvdXNlbC1zcGFjZSB7CiAgICBjbGVhcjogYm90aDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLyogQURERUQgRk9SIFNMSURFTElOSyBNQU5BR0VNRU5UICovCgoudHBfaW5uZXJfcGFkZGluZyB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50Owp9CgoucnMtbGF5ZXIucnMtc2VsZWN0YWJsZSB7CiAgICAtbW96LXVzZXItc2VsZWN0OiB0ZXh0OwogICAgLWtodG1sLXVzZXItc2VsZWN0OiB0ZXh0OwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDsKICAgIC1vLXVzZXItc2VsZWN0OiB0ZXh0Owp9Cgpycy1weC1tYXNrIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Cgpycy1tb2R1bGUgZW1iZWQsCnJzLW1vZHVsZSBpZnJhbWUsCnJzLW1vZHVsZSBvYmplY3QsCnJzLW1vZHVsZSBhdWRpbywKcnMtbW9kdWxlIHZpZGVvIHsKICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lOwp9Cgpycy1iZy1lbGVtIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB6LWluZGV4OiAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLnRwLWJsb2NrbWFzaywKLnRwLWJsb2NrbWFza19pbiwKLnRwLWJsb2NrbWFza19vdXQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICB6LWluZGV4OiAxMDAwOwogICAgdHJhbnNmb3JtOiBzY2FsZVgoMCkgc2NhbGVZKDApOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCS0gCVpPTkVTIC8gR09VUCAvIFJPVyAvIENPTFVNTiBMQVlFUlMgQU5EIEhFTFBFUlMgCS0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpycy16b25lIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgbGVmdDogMHB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICBmb250LXNpemU6IDBweDsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lCn0KCnJzLXJvdy13cmFwLApycy1jb2x1bW4sCnJzLWNiZy1tYXNrLXdyYXAgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKcnMtbGF5ZXItd3JhcCwKcnMtcGFyYWxsYXgtd3JhcCwKcnMtbG9vcC13cmFwLApycy1tYXNrLXdyYXAgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCnJzLWNvbHVtbi13cmFwPnJzLWxvb3Atd3JhcCB7CiAgICB6LWluZGV4OiAxCn0KCnJzLWxheWVyLXdyYXAsCnJzLW1hc2std3JhcCwKcnMtY2JnLW1hc2std3JhcCB7CiAgICB0cmFuc2Zvcm0tc3R5bGU6IGZsYXQ7Cn0KCi8qIEFOWSBTQUZBUkkgTkVFRFMgSU4gQ0FST1VTRUwgU09NRSBIRUxQIFRPIEFWT0lEIEZMSUNLRVJJTkcsIExPVkVMWS4uLi4qLwoKQG1lZGlhIG5vdCBhbGwgYW5kIChtaW4tcmVzb2x1dGlvbjouMDAxZHBjbSkgewogICAgQG1lZGlhIHsKICAgICAgICBycy1jYXJvdXNlbC13cmFwIHJzLWxheWVyLXdyYXAsCiAgICAgICAgcnMtY2Fyb3VzZWwtd3JhcCBycy1sb29wLXdyYXAgewogICAgICAgICAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOwogICAgICAgIH0KICAgIH0KfQoKLnNhZmFyaWZpeCBycy1sYXllci13cmFwIHsKICAgIHBlcnNwZWN0aXZlOiAxMDAwMDAwOwp9CgpALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCkgewogICAgcnMtbGF5ZXItd3JhcCwKICAgIHJzLW1hc2std3JhcCwKICAgIHJzLWNiZy1tYXNrLXdyYXAgewogICAgICAgIHBlcnNwZWN0aXZlOiBub25lOwogICAgfQp9CgovKkAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKSB7CiAJcnMtbGF5ZXItd3JhcCwKCXJzLW1hc2std3JhcCwKCXJzLWNiZy1tYXNrLXdyYXAgeyBmaWx0ZXI6IGJsdXIoMHB4KTsgfQogfSovCgovKiBSRU1PVkVEIExJTkVTIFRPIEZJWCBCT1gtU0hBRE9XIElTU1VFIElOIEZJUkVGT1ggKi8KCnJzLW1hc2std3JhcCB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCnJzLWZ1bGx3aWR0aC13cmFwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50Owp9CgovKklFMTEgQU5EIElFIEVER0UgTkVFRCBTT01FIFNQRUNJQUwgT1ZFUkZMT1cKUmVtb3ZlZCBub3cgc2luY2UgaUUgMTEgYW5kIGllRWRnZSBmdWxsd2lkdGggU2xpZGVyIGhhZCBzcGFjaW5ncyBhZ2FpbiBvbiBvdGhlciB0aGVtZXMuCk1heSBuZWVkIHRvIGtlZXAgaW4gZXllIHRoZSBDYXJvdXNlbCBhbmQgTW9kYWwgc2xpZGVycyBpbiBGdWxsc2NyZWVuIC8gRnVsbHdpZHRoIG1vZGUgISAKQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSB7Cglycy1mdWxsd2lkdGgtd3JhcCB7IG92ZXJmbG93OiBoaWRkZW47IH0KfQpAc3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0bykgewogIHJzLWZ1bGx3aWR0aC13cmFwIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfSAgCn0KKi8KCi5yZXZfcm93X3pvbmVfdG9wIHsKICAgIHRvcDogMHB4Owp9CgoucmV2X3Jvd196b25lX2JvdHRvbSB7CiAgICBib3R0b206IDBweDsKfQoKLnJldl9yb3dfem9uZV9taWRkbGUgewogICAgdG9wOiA1MCU7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDFweCkgdHJhbnNsYXRlWSgtNTAlKTsKfQoKcnMtY29sdW1uLXdyYXAgLnJzLXBhcmFsbGF4LXdyYXAgewogICAgdmVydGljYWwtYWxpZ246IHRvcAp9CgoucnMtbGF5ZXIgaW1nLApycy1sYXllciBpbWcgewogICAgdmVydGljYWwtYWxpZ246IHRvcAp9Cgpycy1yb3csCnJzLXJvdy5ycy1sYXllciB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBmb250LXNpemU6IDBweDsKfQoKcnMtY29sdW1uLXdyYXAgewogICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgZm9udC1zaXplOiAwcHg7Cn0KCnJzLWNvbHVtbiB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7Cn0KCnJzLWNiZy1tYXNrLXdyYXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogMDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCnJzLWNvbHVtbi13cmFwIHJzLWNiZy1tYXNrLXdyYXAgewogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7CiAgICBib3R0b206IDBweDsKICAgIHJpZ2h0OiAwcHg7Cn0KCnJzLWNvbHVtbi1iZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAwOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9CgoucnMtcGVsb2NrICogewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsKfQoKcnMtY29sdW1uIC5ycy1wYXJhbGxheC13cmFwLApycy1jb2x1bW4gcnMtbG9vcC13cmFwLApycy1jb2x1bW4gcnMtbWFzay13cmFwIHsKICAgIHRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCnJzLWNvbHVtbiBycy1tYXNrLXdyYXAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Cgpycy1jb2x1bW4gLnJzLXBhcmFsbGF4LXdyYXAgcnMtbG9vcC13cmFwLApycy1jb2x1bW4gLnJzLXBhcmFsbGF4LXdyYXAgcnMtbWFzay13cmFwLApycy1jb2x1bW4gLnJzLXBhcmFsbGF4LXdyYXAgewogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB0b3A6IGF1dG8gIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAwcHg7Cn0KCnJzLWNvbHVtbiAucnMtcGFyYWxsYXgtd3JhcCBycy1sb29wLXdyYXAsCnJzLWNvbHVtbiAucnMtcGFyYWxsYXgtd3JhcCBycy1tYXNrLXdyYXAsCnJzLWNvbHVtbiAucnMtcGFyYWxsYXgtd3JhcCwKcnMtY29sdW1uIC5yZXZfbGF5ZXJfaW5fY29sdW1uIHsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCi5yZXZfYnJlYWtfY29sdW1ucyB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Cn0KCi5yZXZfYnJlYWtfY29sdW1ucyBycy1jb2x1bW4td3JhcC5ycy1wYXJhbGxheC13cmFwIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgoucmV2X2JyZWFrX2NvbHVtbnMgcnMtY29sdW1uLXdyYXAucnMtcGFyYWxsYXgtd3JhcC5ycy1sYXllci1oaWRkZW4sCi50cC1mb3JjZW5vdHZpc2libGUsCi50cC1oaWRlLXJldnNsaWRlciwKcnMtcm93LXdyYXAucnMtbGF5ZXItaGlkZGVuLApycy1jb2x1bW4td3JhcC5ycy1sYXllci1oaWRkZW4sCi5ycy1sYXllci5ycy1sYXllci1oaWRkZW4sCi5ycy1sYXllci1hdWRpby5ycy1sYXllci1oaWRkZW4sCi5ycy1wYXJhbGxheC13cmFwLnJzLWxheWVyLWhpZGRlbiB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgovKnJzLWNvbHVtbiAucnMtcGFyYWxsYXgtd3JhcCwKcnMtY29sdW1uIHJzLWxvb3Atd3JhcCwKcnMtY29sdW1uIHJzLW1hc2std3JhcCwKcnMtY29sdW1uIHJzLWxheWVyIHsgdmVydGljYWwtYWxpZ246IGluaGVyaXQgfSovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgktCVNQRUNJQUwgVFAgQ0FQVElPTlMgLQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcnMtbGF5ZXIucnMtbm9pbnRlcmFjdGlvbiwKLnJzLWxheWVyLnJzLW5vaW50ZXJhY3Rpb24gewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudAp9Cgpycy1zdGF0aWMtbGF5ZXJzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDEwMTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9CgovKiBuZXcgc3RhdGljIGxheWVycyBwb3NpdGlvbiBvcHRpb24gKi8KCnJzLXN0YXRpYy1sYXllcnMucnMtc3RsLWJhY2sgewogICAgei1pbmRleDogMDsKfQoKLnJzLWxheWVyIHJzLWZjciB7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIGJvcmRlci1sZWZ0OiA0MHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJpZ2h0OiAwcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItdG9wOiA0MHB4IHNvbGlkICMwMEE4RkY7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMTAwJTsKICAgIHRvcDogMHB4Owp9CgoucnMtbGF5ZXIgcnMtZmNydCB7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIGJvcmRlci1sZWZ0OiA0MHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJpZ2h0OiAwcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tOiA0MHB4IHNvbGlkICMwMEE4RkY7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMTAwJTsKICAgIHRvcDogMHB4Owp9CgoucnMtbGF5ZXIgcnMtYmNyIHsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwOwogICAgYm9yZGVyLWxlZnQ6IDBweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yaWdodDogNDBweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1ib3R0b206IDQwcHggc29saWQgIzAwQThGRjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDEwMCU7CiAgICB0b3A6IDBweDsKfQoKLnJzLWxheWVyIHJzLWJjcnQgewogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDA7CiAgICBib3JkZXItbGVmdDogMHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJpZ2h0OiA0MHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXRvcDogNDBweCBzb2xpZCAjMDBBOEZGOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMTAwJTsKICAgIHRvcDogMHB4Owp9CgoudHAtbGF5ZXItaW5uZXItcm90YXRpb24gewogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJLQlTUEVDSUFMIEFMVEVSTkFUSVZFIElNQUdFIFNFVFRJTkdTCS0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgppbWcudHAtc2xpZGVyLWFsdGVybmF0aXZlLWltYWdlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgktCUlFOCBIQUNLUwktCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoubm9GaWx0ZXJDbGFzcyB7CiAgICBmaWx0ZXI6IG5vbmUgIWltcG9ydGFudDsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgktCUZVTExTQ1JFRU4gVklERU8JLQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpycy1iZ3ZpZGVvIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB6LWluZGV4OiAwOwogICAgZGlzcGxheTogYmxvY2sKfQoKLnJzLWxheWVyLnJzLWZzdiB7CiAgICB0b3A6IDBweDsKICAgIGxlZnQ6IDBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlCn0KCi5ycy1sYXllci5ycy1mc3YgYXVkaW8sCi5ycy1sYXllci5ycy1mc3YgdmlkZW8sCi5ycy1sYXllci5ycy1mc3YgaWZyYW1lLAoucnMtbGF5ZXIucnMtZnN2IGlmcmFtZSBhdWRpbywKLnJzLWxheWVyLnJzLWZzdiBpZnJhbWUgdmlkZW8gewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICAvKmRpc3BsYXk6IG5vbmUqLwp9CgoucnMtZnN2IHZpZGVvIHsKICAgIGJhY2tncm91bmQ6ICMwMDAKfQoKLmZ1bGxjb3ZlcmVkdmlkZW8gcnMtcG9zdGVyIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB0b3A6IDBweDsKICAgIGxlZnQ6IDBweAp9CgoudmlkZW9pc3BsYXlpbmcgLmh0bWw1dmlkIHJzLXBvc3RlciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi50cC12aWRlby1wbGF5LWJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kOiAjMDAwOwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiA1MCU7CiAgICBjb2xvcjogI0ZGRjsKICAgIHotaW5kZXg6IDM7CiAgICBtYXJnaW4tdG9wOiAtMjVweDsKICAgIG1hcmdpbi1sZWZ0OiAtMjVweDsKICAgIGxpbmUtaGVpZ2h0OiA1MHB4ICFpbXBvcnRhbnQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgei1pbmRleDogNDsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zIGVhc2Utb3V0ICFpbXBvcnRhbnQ7Cn0KCi5ycy1JU00gLnRwLXZpZGVvLXBsYXktYnV0dG9uIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgICB6LWluZGV4OiA2Owp9CgoucnMtYXVkaW8gLnRwLXZpZGVvLXBsYXktYnV0dG9uIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLnJzLWxheWVyIC5odG1sNXZpZCB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi50cC12aWRlby1wbGF5LWJ1dHRvbiBpIHsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgbGluZS1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgIGZvbnQtc2l6ZTogMzBweCAhaW1wb3J0YW50Owp9CgoucnMtbGF5ZXI6aG92ZXIgLnRwLXZpZGVvLXBsYXktYnV0dG9uIHsKICAgIG9wYWNpdHk6IDE7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHotaW5kZXg6IDY7Cn0KCi5ycy1sYXllciAudHAtcmV2c3RvcCB7CiAgICBkaXNwbGF5OiBub25lOwogICAgd2lkdGg6IDE1cHg7CiAgICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCAjZmZmICFpbXBvcnRhbnQ7CiAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZmYgIWltcG9ydGFudDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MCUpIHRyYW5zbGF0ZVkoNTAlKTsKICAgIGhlaWdodDogMjBweDsKICAgIG1hcmdpbi1sZWZ0OiAxMXB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiA1cHggIWltcG9ydGFudDsKfQoKLnZpZGVvaXNwbGF5aW5nIC5yZXZpY29uLXJpZ2h0LWRpciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi52aWRlb2lzcGxheWluZyAudHAtcmV2c3RvcCB7CiAgICBkaXNwbGF5OiBibG9jawp9CgoudmlkZW9pc3BsYXlpbmcgLnRwLXZpZGVvLXBsYXktYnV0dG9uIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmZ1bGxjb3ZlcmVkdmlkZW8gLnRwLXZpZGVvLXBsYXktYnV0dG9uIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgoucnMtZnN2IC5ycy1mc3YgYXVkaW8gewogICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50Owp9CgoucnMtZnN2IC5ycy1mc3YgdmlkZW8gewogICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50Owp9CgoucnMtbGF5ZXItdmlkZW8gLmh0bWw1dmlkLmhpZGVmdWxsc2NyZWVuIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCkBzdXBwb3J0cyBub3QgKC1tcy1oaWdoLWNvbnRyYXN0Om5vbmUpIHsKICAgIC8qIE5vbi1JRSBzdHlsZXMgaGVyZSAqLwogICAgLnJzLWZzdiAuZnVsbGNvdmVyZWR2aWRlbyBhdWRpbyB7CiAgICAgICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsKICAgIH0KICAgIC5ycy1mc3YgLmZ1bGxjb3ZlcmVkdmlkZW8gdmlkZW8gewogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7CiAgICB9Cn0KCi5ycy1mdWxsdmlkZW8tY292ZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB0b3A6IDBweDsKICAgIGxlZnQ6IDBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgei1pbmRleDogNTsKfQoKLnJzLW5vbGMgLnRwLXZpZGVvLXBsYXktYnV0dG9uLApycy1iZ3ZpZGVvIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXN0YXJ0LXBsYXliYWNrLWJ1dHRvbiwKcnMtYmd2aWRlbyB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scywKcnMtYmd2aWRlbyBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5ycy1hdWRpbyAudHAtdmlkZW8tY29udHJvbHMgewogICAgb3BhY2l0eTogMSAhaW1wb3J0YW50OwogICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Cn0KCnJzLW1vZHVsZSBoMS5ycy1sYXllciwKcnMtbW9kdWxlIGgyLnJzLWxheWVyLApycy1tb2R1bGUgaDMucnMtbGF5ZXIsCnJzLW1vZHVsZSBoNC5ycy1sYXllciwKcnMtbW9kdWxlIGg1LnJzLWxheWVyLApycy1tb2R1bGUgaDYucnMtbGF5ZXIsCnJzLW1vZHVsZSBkaXYucnMtbGF5ZXIsCnJzLW1vZHVsZSBzcGFuLnJzLWxheWVyLApycy1tb2R1bGUgcC5ycy1sYXllciB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwOwogICAgbWFyZ2luLWJsb2NrLWVuZDogMDsKICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7CiAgICBtYXJnaW4taW5saW5lLWVuZDogMDsKfQoKcnMtbW9kdWxlIGgxLnJzLWxheWVyOmJlZm9yZSwKcnMtbW9kdWxlIGgyLnJzLWxheWVyOmJlZm9yZSwKcnMtbW9kdWxlIGgzLnJzLWxheWVyOmJlZm9yZSwKcnMtbW9kdWxlIGg0LnJzLWxheWVyOmJlZm9yZSwKcnMtbW9kdWxlIGg1LnJzLWxheWVyOmJlZm9yZSwKcnMtbW9kdWxlIGg2LnJzLWxheWVyOmJlZm9yZSB7CiAgICBjb250ZW50OiBub25lOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCS0JRE9UVEVEIE9WRVJMQVlTCS0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcnMtZG90dGVkIHsKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4OwogICAgei1pbmRleDogMzsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKcnMtc2JnLXdyYXAgcnMtZG90dGVkIHsKICAgIHotaW5kZXg6IDMxCn0KCnJzLWRvdHRlZC50d294dHdvIHsKICAgIGJhY2tncm91bmQ6IHVybCguLi9hc3NldHMvZ3JpZHRpbGUucG5nKQp9Cgpycy1kb3R0ZWQudHdveHR3b3doaXRlIHsKICAgIGJhY2tncm91bmQ6IHVybCguLi9hc3NldHMvZ3JpZHRpbGVfd2hpdGUucG5nKQp9Cgpycy1kb3R0ZWQudGhyZWV4dGhyZWUgewogICAgYmFja2dyb3VuZDogdXJsKC4uL2Fzc2V0cy9ncmlkdGlsZV8zeDMucG5nKQp9Cgpycy1kb3R0ZWQudGhyZWV4dGhyZWV3aGl0ZSB7CiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vYXNzZXRzL2dyaWR0aWxlXzN4M193aGl0ZS5wbmcpCn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCS0JU0hBRE9XUwkJLQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoudHAtc2hhZG93Y292ZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB0b3A6IDBweDsKICAgIGxlZnQ6IDBweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAtMTsKfQoKLnRwLXNoYWRvdzEgewogICAgYm94LXNoYWRvdzogMCAxMHB4IDZweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC44KTsKfQoKLnRwLXNoYWRvdzI6YmVmb3JlLAoudHAtc2hhZG93MjphZnRlciwKLnRwLXNoYWRvdzM6YmVmb3JlLAoudHAtc2hhZG93NDphZnRlciB7CiAgICB6LWluZGV4OiAtMjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGNvbnRlbnQ6ICIiOwogICAgYm90dG9tOiAxMHB4OwogICAgbGVmdDogMTBweDsKICAgIHdpZHRoOiA1MCU7CiAgICB0b3A6IDg1JTsKICAgIG1heC13aWR0aDogMzAwcHg7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJveC1zaGFkb3c6IDAgMTVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgIHRyYW5zZm9ybTogcm90YXRlKC0zZGVnKTsKfQoKLnRwLXNoYWRvdzI6YWZ0ZXIsCi50cC1zaGFkb3c0OmFmdGVyIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDNkZWcpOwogICAgcmlnaHQ6IDEwcHg7CiAgICBsZWZ0OiBhdXRvOwp9CgoudHAtc2hhZG93NSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpLCAwIDAgNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkgaW5zZXQ7Cn0KCi50cC1zaGFkb3c1OmJlZm9yZSwKLnRwLXNoYWRvdzU6YWZ0ZXIgewogICAgY29udGVudDogIiI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAtMjsKICAgIGJveC1zaGFkb3c6IDAgMCAyNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICB0b3A6IDMwJTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDIwcHg7CiAgICByaWdodDogMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4IC8gMjBweDsKfQoKLyogVFAgQlVUVE9OUyBERVNLVE9QIFNJWkUgKi8KCi5yZXYtYnRuLAoucmV2LWJ0bjp2aXNpdGVkIHsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5yZXYtYnRuLnJldi11cHBlcmNhc2UsCi5yZXYtYnRuLnJldi11cHBlcmNhc2U6dmlzaXRlZCB7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CgoucmV2LWJ0biBpIHsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IDBweDsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLW91dCwgbWFyZ2luIDAuMnMgZWFzZS1vdXQ7CiAgICBtYXJnaW4tbGVmdDogMHB4OwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLnJldi1idG4ucmV2LWhpZGRlbmljb24gaSB7CiAgICBmb250LXNpemU6IGluaGVyaXQ7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAwcHg7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQsIG1hcmdpbiAwLjJzIGVhc2Utb3V0OwogICAgb3BhY2l0eTogMDsKICAgIG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDsKICAgIHdpZHRoOiAwcHggIWltcG9ydGFudDsKfQoKLnJldi1idG4ucmV2LWhpZGRlbmljb246aG92ZXIgaSB7CiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogMTBweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQoKLyogQlVSR0VSIEJVVFRPTiAqLwoKLnJldi1idXJnZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIHBhZGRpbmc6IDIycHggMTRweCAyMnB4IDE0cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDUxLCA1MSwgNTEsIDAuMjUpOwogICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLnJldi1idXJnZXIgc3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAzMHB4OwogICAgaGVpZ2h0OiAzcHg7CiAgICBiYWNrZ3JvdW5kOiAjMzMzOwogICAgdHJhbnNpdGlvbjogLjdzOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB0cmFuc2Zvcm0tc3R5bGU6IGZsYXQgIWltcG9ydGFudDsKfQoKLnJldi1idXJnZXIgc3BhbjpudGgtY2hpbGQoMikgewogICAgbWFyZ2luOiAzcHggMDsKfQoKLnF1aWNrX3N0eWxlX2V4YW1wbGVfd3JhcCAucmV2LWJ1cmdlcjpob3ZlciA6Zmlyc3QtY2hpbGQsCiNkaWFsb2dfYWRkYnV0dG9uIC5yZXYtYnVyZ2VyOmhvdmVyIDpmaXJzdC1jaGlsZCwKLm9wZW4gLnJldi1idXJnZXIgOmZpcnN0LWNoaWxkLAoub3Blbi5yZXYtYnVyZ2VyIDpmaXJzdC1jaGlsZCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNnB4KSByb3RhdGUoLTQ1ZGVnKTsKfQoKLnF1aWNrX3N0eWxlX2V4YW1wbGVfd3JhcCAucmV2LWJ1cmdlcjpob3ZlciA6bnRoLWNoaWxkKDIpLAojZGlhbG9nX2FkZGJ1dHRvbiAucmV2LWJ1cmdlcjpob3ZlciA6bnRoLWNoaWxkKDIpLAoub3BlbiAucmV2LWJ1cmdlciA6bnRoLWNoaWxkKDIpLAoub3Blbi5yZXYtYnVyZ2VyIDpudGgtY2hpbGQoMikgewogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAgIG9wYWNpdHk6IDA7Cn0KCi5xdWlja19zdHlsZV9leGFtcGxlX3dyYXAgLnJldi1idXJnZXI6aG92ZXIgOmxhc3QtY2hpbGQsCiNkaWFsb2dfYWRkYnV0dG9uIC5yZXYtYnVyZ2VyOmhvdmVyIDpsYXN0LWNoaWxkLAoub3BlbiAucmV2LWJ1cmdlciA6bGFzdC1jaGlsZCwKLm9wZW4ucmV2LWJ1cmdlciA6bGFzdC1jaGlsZCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTZweCkgcm90YXRlKC0xMzVkZWcpOwp9CgoucmV2LWJ1cmdlci5yZXZiLXdoaXRlIHsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKfQoKLnJldi1iLXNwYW4tbGlnaHQgc3BhbiwKLnJldi1idXJnZXIucmV2Yi13aGl0ZSBzcGFuIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7Cn0KCi5yZXYtYnVyZ2VyLnJldmItd2hpdGVub2JvcmRlciB7CiAgICBib3JkZXI6IDA7Cn0KCi5yZXYtYnVyZ2VyLnJldmItd2hpdGVub2JvcmRlciBzcGFuIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7Cn0KCi5yZXYtYnVyZ2VyLnJldmItZGFya25vYm9yZGVyIHsKICAgIGJvcmRlcjogMDsKfQoKLnJldi1iLXNwYW4tZGFyayBzcGFuLAoucmV2LWJ1cmdlci5yZXZiLWRhcmtub2JvcmRlciBzcGFuIHsKICAgIGJhY2tncm91bmQ6ICMzMzM7Cn0KCi5yZXYtYnVyZ2VyLnJldmItd2hpdGVmdWxsIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IG5vbmU7Cn0KCi5yZXYtYnVyZ2VyLnJldmItd2hpdGVmdWxsIHNwYW4gewogICAgYmFja2dyb3VuZDogIzMzMzsKfQoKLnJldi1idXJnZXIucmV2Yi1kYXJrZnVsbCB7CiAgICBiYWNrZ3JvdW5kOiAjMzMzOwogICAgYm9yZGVyOiBub25lOwp9CgoucmV2LWJ1cmdlci5yZXZiLWRhcmtmdWxsIHNwYW4gewogICAgYmFja2dyb3VuZDogI2ZmZjsKfQoKLyogU0NST0xMIERPV04gQlVUVE9OICovCgpAa2V5ZnJhbWVzIHJldi1hbmktbW91c2UgewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdG9wOiAyOSU7CiAgICB9CiAgICAxNSUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdG9wOiA3MCU7CiAgICB9CiAgICA1MCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdG9wOiA3MCU7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRvcDogMjklOwogICAgfQp9CgoucmV2LXNjcm9sbC1idG4gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgd2lkdGg6IDM1cHg7CiAgICBoZWlnaHQ6IDU1cHg7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm9yZGVyOiAzcHggc29saWQgd2hpdGU7CiAgICBib3JkZXItcmFkaXVzOiAyM3B4Owp9CgoucmV2LXNjcm9sbC1idG4+KiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMThweDsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBjb2xvcjogIzdmOGM4ZDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgZm9udC1mYW1pbHk6ICJwcm94aW1hLW5vdmEiLCAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKfQoKLnJldi1zY3JvbGwtYnRuPio6aG92ZXIsCi5yZXYtc2Nyb2xsLWJ0bj4qOmZvY3VzLAoucmV2LXNjcm9sbC1idG4+Ki5hY3RpdmUgewogICAgY29sb3I6ICNmZmZmZmY7Cn0KCi5yZXYtc2Nyb2xsLWJ0bj4qOmhvdmVyLAoucmV2LXNjcm9sbC1idG4+Kjpmb2N1cywKLnJldi1zY3JvbGwtYnRuPio6YWN0aXZlLAoucmV2LXNjcm9sbC1idG4+Ki5hY3RpdmUgewogICAgb3BhY2l0eTogMC44Owp9CgoucmV2LXNjcm9sbC1idG4ucmV2cy1mdWxsd2hpdGUgewogICAgYmFja2dyb3VuZDogI2ZmZjsKfQoKLnJldi1zY3JvbGwtYnRuLnJldnMtZnVsbHdoaXRlIHNwYW4gewogICAgYmFja2dyb3VuZDogIzMzMzsKfQoKLnJldi1zY3JvbGwtYnRuLnJldnMtZnVsbGRhcmsgewogICAgYmFja2dyb3VuZDogIzMzMzsKICAgIGJvcmRlcjogbm9uZTsKfQoKLnJldi1zY3JvbGwtYnRuLnJldnMtZnVsbGRhcmsgc3BhbiB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9CgoucmV2LXNjcm9sbC1idG4gc3BhbiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRvcDogMjklOwogICAgbGVmdDogNTAlOwogICAgd2lkdGg6IDhweDsKICAgIGhlaWdodDogOHB4OwogICAgbWFyZ2luOiAtNHB4IDAgMCAtNHB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgYW5pbWF0aW9uOiByZXYtYW5pLW1vdXNlIDIuNXMgbGluZWFyIGluZmluaXRlOwogICAgYmFja2dyb3VuZDogI2ZmZjsKfQoKLnJldi1zY3JvbGwtYnRuLnJldi1iLXNwYW4tZGFyayB7CiAgICBib3JkZXItY29sb3I6ICMzMzM7Cn0KCi5yZXYtc2Nyb2xsLWJ0bi5yZXYtYi1zcGFuLWRhcmsgc3BhbiwKLnJldi1zY3JvbGwtYnRuLnJldnMtZGFyayBzcGFuIHsKICAgIGJhY2tncm91bmQ6ICMzMzM7Cn0KCi5yZXYtY29udHJvbC1idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgei1pbmRleDogNTsKICAgIGNvbG9yOiAjRkZGOwogICAgZm9udC1zaXplOiAyMHB4OwogICAgbGluZS1oZWlnaHQ6IDYwcHg7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgZm9udC1mYW1pbHk6IFJhbGV3YXk7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIHRleHQtc2hhZG93OiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUwKTsKICAgIHdpZHRoOiA2MHB4OwogICAgaGVpZ2h0OiA2MHB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLnJldi1jYnV0dG9uLWRhcmstc3IgewogICAgYm9yZGVyLXJhZGl1czogM3B4Owp9CgoucmV2LWNidXR0b24tbGlnaHQgewogICAgY29sb3I6ICMzMzM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOwp9CgoucmV2LWNidXR0b24tbGlnaHQtc3IgewogICAgY29sb3I6ICMzMzM7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOwp9CgoucmV2LXNidXR0b24gewogICAgbGluZS1oZWlnaHQ6IDM3cHg7CiAgICB3aWR0aDogMzdweDsKICAgIGhlaWdodDogMzdweDsKfQoKLnJldi1zYnV0dG9uLWJsdWUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzNCNTk5OAp9CgoucmV2LXNidXR0b24tbGlnaHRibHVlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMEEwRDE7Cn0KCi5yZXYtc2J1dHRvbi1yZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI0RENEIzOTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCVRQIEJBTk5FUiBUSU1FUgkJLQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcnMtcHJvZ3Jlc3MgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogMjAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KCnJzLXByb2dyZXNzLWJhciwKLnJzLXByb2dyZXNzLWJhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHotaW5kZXg6IDIwOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgbGluZS1oZWlnaHQ6IDBweDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9Cgpycy1wcm9ncmVzcy1iZ3MgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB6LWluZGV4OiAxNTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB3aWR0aDogMTAwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGhlaWdodDogMTAwJTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4Owp9Cgpycy1wcm9ncmVzcy1iZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKfQoKcnMtcHJvZ3Jlc3MtZ2FwIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9Cgpycy1wcm9ncmVzcy12aXMgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQlCQVNJQyBTRVRUSU5HUyBGT1IgVEhFIEJBTk5FUgktCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLnJzLWxheWVyIGltZyB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0jMDBGRkZGRkYsZW5kQ29sb3JzdHI9IzAwRkZGRkZGKSI7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSMwMEZGRkZGRiwgZW5kQ29sb3JzdHI9IzAwRkZGRkZGKTsKICAgIC8qem9vbToxOyovCn0KCi8qcnMtY2Fyb3VzZWwtd3JhcCBycy1sYXllci5ycy1sYXllciBpbWcgeyAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMC4wMDAxcHgpfSovCgoucnMtbGF5ZXIuc2xpZGVsaW5rIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9CgoucnMtbGF5ZXIuc2xpZGVsaW5rIGEgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBibG9jawp9CgoucnMtbGF5ZXIuc2xpZGVsaW5rIGEgZGl2IHsKICAgIHdpZHRoOiAzMDAwcHg7CiAgICBoZWlnaHQ6IDE1MDBweDsKICAgIGJhY2tncm91bmQ6IHVybCguLi9hc3NldHMvY29sb3JlZGJnLnBuZykgcmVwZWF0Cn0KCi5ycy1sYXllci5zbGlkZWxpbmsgYSBzcGFuIHsKICAgIGJhY2tncm91bmQ6IHVybCguLi9hc3NldHMvY29sb3JlZGJnLnBuZykgcmVwZWF0OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBibG9jawp9CgovKi50cC1zaGFwZSB7CXdpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7fSovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0JV09PQ09NTUVSQ0UgU1RZTEVTCS0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoucnMtbGF5ZXIgLnJzLXN0YXJyaW5nIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgoucnMtbGF5ZXIgLnJzLXN0YXJyaW5nIC5zdGFyLXJhdGluZyB7CiAgICBmbG9hdDogbm9uZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBjb2xvcjogI0ZGQzMyMSAhaW1wb3J0YW50Owp9CgoucnMtbGF5ZXIgLnJzLXN0YXJyaW5nIC5zdGFyLXJhdGluZywKLnJzLWxheWVyIC5ycy1zdGFycmluZy1wYWdlIC5zdGFyLXJhdGluZyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiA1LjRlbTsKICAgIGZvbnQtZmFtaWx5OiBzdGFyOwogICAgZm9udC1zaXplOiAxZW0gIWltcG9ydGFudDsKfQoKLnJzLWxheWVyIC5ycy1zdGFycmluZyAuc3Rhci1yYXRpbmc6YmVmb3JlLAoucnMtbGF5ZXIgLnJzLXN0YXJyaW5nLXBhZ2UgLnN0YXItcmF0aW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDczXDczXDczXDczXDczIjsKICAgIGNvbG9yOiAjRTBEQURGOwogICAgZmxvYXQ6IGxlZnQ7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwp9CgoucnMtbGF5ZXIgLnJzLXN0YXJyaW5nIC5zdGFyLXJhdGluZyBzcGFuIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBmbG9hdDogbGVmdDsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBwYWRkaW5nLXRvcDogMS41ZW07CiAgICBmb250LXNpemU6IDFlbSAhaW1wb3J0YW50Owp9CgoucnMtbGF5ZXIgLnJzLXN0YXJyaW5nIC5zdGFyLXJhdGluZyBzcGFuOmJlZm9yZSwKLnJzLWxheWVyIC5ycy1zdGFycmluZyAuc3Rhci1yYXRpbmcgc3BhbjpiZWZvcmUgewogICAgY29udGVudDogIlw1M1w1M1w1M1w1M1w1MyI7CiAgICB0b3A6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgktCUxPQURFUiBGT1JNUwktCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcnMtbG9hZGVyIHsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgei1pbmRleDogMTAwMDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KCnJzLWxvYWRlci5vZmYgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Cgpycy1sb2FkZXIuc3Bpbm5lcjAgewogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2Fzc2V0cy9sb2FkZXIuZ2lmKTsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogICAgYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgbWFyZ2luLXRvcDogLTIwcHg7CiAgICBtYXJnaW4tbGVmdDogLTIwcHg7CiAgICBhbmltYXRpb246IHRwLXJvdGF0ZXBsYW5lIDEuMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7Cn0KCnJzLWxvYWRlci5zcGlubmVyMSB7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3gtc2hhZG93OiAwcHggMHB4IDIwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICBtYXJnaW4tdG9wOiAtMjBweDsKICAgIG1hcmdpbi1sZWZ0OiAtMjBweDsKICAgIGFuaW1hdGlvbjogdHAtcm90YXRlcGxhbmUgMS4ycyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKfQoKcnMtbG9hZGVyLnNwaW5uZXI1IHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9hc3NldHMvbG9hZGVyLmdpZik7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTBweCAxMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIG1hcmdpbjogLTIycHggLTIycHg7CiAgICB3aWR0aDogNDRweDsKICAgIGhlaWdodDogNDRweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKfQoKQGtleWZyYW1lcyB0cC1yb3RhdGVwbGFuZSB7CiAgICAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMjBweCkgcm90YXRlWCgwZGVnKSByb3RhdGVZKDBkZWcpOwogICAgfQogICAgNTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEyMHB4KSByb3RhdGVYKC0xODAuMWRlZykgcm90YXRlWSgwZGVnKTsKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTIwcHgpIHJvdGF0ZVgoLTE4MGRlZykgcm90YXRlWSgtMTc5LjlkZWcpOwogICAgfQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjIgewogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tdG9wOiAtMjBweDsKICAgIG1hcmdpbi1sZWZ0OiAtMjBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjAwMDA7CiAgICBib3gtc2hhZG93OiAwcHggMHB4IDIwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgYW5pbWF0aW9uOiB0cC1zY2FsZW91dCAxLjBzIGluZmluaXRlIGVhc2UtaW4tb3V0Owp9CgpAa2V5ZnJhbWVzIHRwLXNjYWxlb3V0IHsKICAgIDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMCk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKcnMtbG9hZGVyLnNwaW5uZXIzIHsKICAgIG1hcmdpbjogLTlweCAwcHggMHB4IC0zNXB4OwogICAgd2lkdGg6IDcwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCnJzLWxvYWRlci5zcGlubmVyMyAuYm91bmNlMSwKcnMtbG9hZGVyLnNwaW5uZXIzIC5ib3VuY2UyLApycy1sb2FkZXIuc3Bpbm5lcjMgLmJvdW5jZTMgewogICAgd2lkdGg6IDE4cHg7CiAgICBoZWlnaHQ6IDE4cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGFuaW1hdGlvbjogdHAtYm91bmNlZGVsYXkgMS40cyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICAgIC8qIFByZXZlbnQgZmlyc3QgZnJhbWUgZnJvbSBmbGlja2VyaW5nIHdoZW4gYW5pbWF0aW9uIHN0YXJ0cyAqLwogICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKfQoKcnMtbG9hZGVyLnNwaW5uZXIzIC5ib3VuY2UxIHsKICAgIGFuaW1hdGlvbi1kZWxheTogLTAuMzJzOwp9Cgpycy1sb2FkZXIuc3Bpbm5lcjMgLmJvdW5jZTIgewogICAgYW5pbWF0aW9uLWRlbGF5OiAtMC4xNnM7Cn0KCkBrZXlmcmFtZXMgdHAtYm91bmNlZGVsYXkgewogICAgMCUsCiAgICA4MCUsCiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMCk7CiAgICB9CiAgICA0MCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wKTsKICAgIH0KfQoKcnMtbG9hZGVyLnNwaW5uZXI0IHsKICAgIG1hcmdpbjogLTIwcHggMHB4IDBweCAtMjBweDsKICAgIHdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYW5pbWF0aW9uOiB0cC1yb3RhdGUgMi4wcyBpbmZpbml0ZSBsaW5lYXI7Cn0KCnJzLWxvYWRlci5zcGlubmVyNCAuZG90MSwKcnMtbG9hZGVyLnNwaW5uZXI0IC5kb3QyIHsKICAgIHdpZHRoOiA2MCU7CiAgICBoZWlnaHQ6IDYwJTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgYW5pbWF0aW9uOiB0cC1ib3VuY2UgMi4wcyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICAgIGJveC1zaGFkb3c6IDBweCAwcHggMjBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKfQoKcnMtbG9hZGVyLnNwaW5uZXI0IC5kb3QyIHsKICAgIHRvcDogYXV0bzsKICAgIGJvdHRvbTogMHB4OwogICAgYW5pbWF0aW9uLWRlbGF5OiAtMS4wczsKfQoKQGtleWZyYW1lcyB0cC1yb3RhdGUgewogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIH0KfQoKQGtleWZyYW1lcyB0cC1ib3VuY2UgewogICAgMCUsCiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMCk7CiAgICB9CiAgICA1MCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wKTsKICAgIH0KfQoKcnMtbGF5ZXIgaWZyYW1lIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKcnMtbGF5ZXIucnMtaWktbyBpZnJhbWUgewogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKfQoKcnMtbGF5ZXIgaW5wdXRbdHlwZT0idGV4dCJdLApycy1sYXllciBpbnB1dFt0eXBlPSJlbWFpbCJdLApycy1sYXllciBpbnB1dFt0eXBlPSJ1cmwiXSwKcnMtbGF5ZXIgaW5wdXRbdHlwZT0icGFzc3dvcmQiXSwKcnMtbGF5ZXIgaW5wdXRbdHlwZT0ic2VhcmNoIl0sCnJzLWxheWVyIGlucHV0W3R5cGU9Im51bWJlciJdLApycy1sYXllciBpbnB1dFt0eXBlPSJ0ZWwiXSwKcnMtbGF5ZXIgaW5wdXRbdHlwZT0icmFuZ2UiXSwKcnMtbGF5ZXIgaW5wdXRbdHlwZT0iZGF0ZSJdLApycy1sYXllciBpbnB1dFt0eXBlPSJtb250aCJdLApycy1sYXllciBpbnB1dFt0eXBlPSJ3ZWVrIl0sCnJzLWxheWVyIGlucHV0W3R5cGU9InRpbWUiXSwKcnMtbGF5ZXIgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXSwKcnMtbGF5ZXIgaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKcnMtbGF5ZXIgaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBsaW5lLWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50Cn0KCmEucnMtbGF5ZXIgewogICAgdHJhbnNpdGlvbjogbm9uZQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCS0gIFNUQU5EQVJEIE5BVklHQVRJT04gU0VUVElOR1MgCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcnMtdGh1bWJzLXdyYXAsCnJzLXRhYnMtd3JhcCwKcnMtdGh1bWJzLApycy10aHVtYiwKcnMtdGFiLApycy1idWxsZXQsCnJzLWJ1bGxldHMsCnJzLW5hdm1hc2ssCnJzLXRhYnMsCnJzLWFycm93IHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgovKnJzLWxheWVyIHsJZm9udC1zaXplOjIwcHg7IGxpbmUtaGVpZ2h0OiAyNXB4OyBwYWRkaW5nOjBweDsgbWFyZ2luOjBweDsgYm9yZGVyLXJhZGl1czowcHg7IG1heC13aWR0aDogbm9uZTttaW4td2lkdGg6bm9uZTsgbWF4LWhlaWdodDogbm9uZTsgbWluLWhlaWdodDogbm9uZX0qLwoKLnRwLXRodW1icy5uYXZiYXIsCi50cC1idWxsZXRzLm5hdmJhciwKLnRwLXRhYnMubmF2YmFyIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIG1pbi1oZWlnaHQ6IDA7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXItcmFkaXVzOiAwOwp9CgoudHAtdGFicywKLnRwLXRodW1icywKLnRwLWJ1bGxldHMgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB6LWluZGV4OiAxMDAwOwogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7Cn0KCi50cC10YWIsCi50cC10aHVtYiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBvcGFjaXR5OiAwLjU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgoudHAtYXJyLWltZ2hvbGRlciwKcnMtcG9zdGVyLAoudHAtdGh1bWItaW1hZ2UsCi50cC10YWItaW1hZ2UgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7Cn0KCnJzLXBvc3RlciB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB6LWluZGV4OiAzOwp9CgoudHAtdGFiLnJzLXRvdWNoaG92ZXIsCi50cC10YWIuc2VsZWN0ZWQsCi50cC10aHVtYi5ycy10b3VjaGhvdmVyLAoudHAtdGh1bWIuc2VsZWN0ZWQgewogICAgb3BhY2l0eTogMTsKfQoKLnRwLXRhYi1tYXNrLAoudHAtdGh1bWItbWFzayB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7Cn0KCi50cC10YWJzLAoudHAtdGh1bWJzIHsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7Cn0KCi50cC1idWxsZXQgewogICAgd2lkdGg6IDE1cHg7CiAgICBoZWlnaHQ6IDE1cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoudHAtYnVsbGV0LnNlbGVjdGVkLAoudHAtYnVsbGV0LnJzLXRvdWNoaG92ZXIgewogICAgYmFja2dyb3VuZDogI2ZmZjsKfQoKLnRwYXJyb3dzIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQ6ICMwMDA7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgei1pbmRleDogMTAwMDsKfQoKLnRwYXJyb3dzLnJzLXRvdWNoaG92ZXIgewogICAgYmFja2dyb3VuZDogIzAwMDsKfQoKLnRwYXJyb3dzOmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogInJldmljb25zIjsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGNvbG9yOiAjZmZmOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBsaW5lLWhlaWdodDogNDBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnRwYXJyb3dzLnRwLWxlZnRhcnJvdzpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI0JzsKfQoKLnRwYXJyb3dzLnRwLXJpZ2h0YXJyb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyNSc7Cn0KCi8qLnRwLXRodW1iLW1hc2sge21heC13aWR0aDogMTAwJSAhaW1wb3J0YW50fSovCgovKioqKioqKioqKioqKioqKioqKioqKioqCiAtIEZJWEVTIEZPUiBQRS03IElDT05TIC0KKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoucnMtbGF5ZXIgW2NsYXNzXj0icGUtN3MtIl06YmVmb3JlLAoucnMtbGF5ZXIgW2NsYXNzKj0iIHBlLTdzLSJdOmJlZm9yZSwKLnJzLWxheWVyIFtjbGFzc149InBlLTdzLSJdLAoucnMtbGF5ZXIgW2NsYXNzKj0iIHBlLTdzLSJdIHsKICAgIHdpZHRoOiBhdXRvOwogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgICBib3gtc2l6aW5nOiBpbmhlcml0Owp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqCgktIEtFTiBCVVJOUyBGSVhFUyAtCioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnJzLXB6aW1nLXdyYXAgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCmJvZHkucnRsIC5ycy1wemltZyB7CiAgICBsZWZ0OiAwICFpbXBvcnRhbnQKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCS0gQ1VCRSAmIENBTlZBUyBTRVRUSU5HUyAtCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLnJzX2Zha2VfY3ViZSB7CiAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkCn0KCi5yc19mYWtlX2N1YmUsCi5yc19mYWtlX2N1YmVfd2FsbCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIGxlZnQ6IDBweDsKICAgIHRvcDogMHB4OwogICAgei1pbmRleDogMAp9CgoucnMtYnVpbGRlci1tb2RlIHJzLXNiZy13cmFwIGNhbnZhcywKcnMtc2JnIGNhbnZhcyB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgei1pbmRleDogNTsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqCgktIDNEIFNIQURPVyBNT0RFIC0KKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLmRkZHdyYXBwZXJzaGFkb3cgewogICAgYm94LXNoYWRvdzogMCA0NXB4IDEwMHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKfQoKLmRkZHdyYXBwZXIgewogICAgdHJhbnNmb3JtLXN0eWxlOiBmbGF0OwogICAgcGVyc3BlY3RpdmU6IDEwMDAwcHg7Cn0KCi8qKioqKioqKioqKioqKioqKioqCgktIERFQlVHIE1PREUgLQoqKioqKioqKioqKioqKioqKioqLwoKLnJzX2Vycm9yX21lc3NhZ2VfYm94IHsKICAgIGJhY2tncm91bmQ6ICMxMTE7CiAgICB3aWR0aDogODAwcHg7CiAgICBtYXJnaW46IDQwcHggYXV0bzsKICAgIHBhZGRpbmc6IDQwcHggMjBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtZmFtaWx5OiAiT3BlbiBTYW5zIiwgc2Fucy1zZXJpZgp9CgoucnNfZXJyb3JfbWVzc2FnZV9vb3BzIHsKICAgIG1hcmdpbjogMHB4IDBweCAyMHB4OwogICAgbGluZS1oZWlnaHQ6IDYwcHg7CiAgICBmb250LXNpemU6IDM0cHg7CiAgICBjb2xvcjogI0ZGRjsKfQoKLnJzX2Vycm9yX21lc3NhZ2VfY29udGVudCB7CiAgICBtYXJnaW46IDBweCAwcHggMjBweDsKICAgIGxpbmUtaGVpZ2h0OiAyNXB4OwogICAgZm9udC1zaXplOiAxN3B4OwogICAgY29sb3I6ICNGRkY7Cn0KCi5yc19lcnJvcl9tZXNzYWdlX2J1dHRvbiB7CiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzMzMzsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQKfQoKLnJzX2Vycm9yX21lc3NhZ2VfYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6ICM1ZTM1YjEKfQoKLmhnbGF5ZXJpbmZvIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIGJvdHRvbTogMHB4OwogICAgbGVmdDogMHB4OwogICAgY29sb3I6ICNGRkY7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMjBweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNzUpOwogICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICB6LWluZGV4OiAyMDAwOwogICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKLmhnaW5mbyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC0ycHg7CiAgICBsZWZ0OiAtMnB4OwogICAgY29sb3I6ICNlNzRjM2M7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgYmFja2dyb3VuZDogIzAwMDsKICAgIHBhZGRpbmc6IDJweCA1cHg7Cn0KCi5pbmRlYnVnbW9kZSAucnMtbGF5ZXI6aG92ZXIgewogICAgYm9yZGVyOiAxcHggZGFzaGVkICNjMDM5MmIgIWltcG9ydGFudDsKfQoKLmhlbHBncmlkIHsKICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjYzAzOTJiOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7CiAgICB6LWluZGV4OiAwCn0KCiNyZXZzbGlkZXJsb2dsb2dsb2cgewogICAgcGFkZGluZzogMTVweDsKICAgIGNvbG9yOiAjZmZmOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7CiAgICB3aWR0aDogMjAwcHg7CiAgICBoZWlnaHQ6IDE1MHB4OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpOwogICAgei1pbmRleDogMTAwMDAwOwogICAgZm9udC1zaXplOiAxMHB4OwogICAgb3ZlcmZsb3c6IHNjcm9sbDsKfQoKLyoqIApJTlNUQUdSQU0gRklMVEVSUyBCWSBVTkEgCmh0dHBzOi8vdW5hLmltL0NTU2dyYW0vCioqLwoKLmFkZW4gewogICAgZmlsdGVyOiBodWUtcm90YXRlKC0yMGRlZykgY29udHJhc3QoLjkpIHNhdHVyYXRlKC44NSkgYnJpZ2h0bmVzcygxLjIpCn0KCi5hZGVuOjphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoNjYsIDEwLCAxNCwgLjIpLCB0cmFuc3BhcmVudCk7CiAgICBtaXgtYmxlbmQtbW9kZTogZGFya2VuCn0KCi5wZXJwZXR1YTo6YWZ0ZXIsCi5yZXllczo6YWZ0ZXIgewogICAgbWl4LWJsZW5kLW1vZGU6IHNvZnQtbGlnaHQ7CiAgICBvcGFjaXR5OiAuNQp9CgouaW5rd2VsbCB7CiAgICBmaWx0ZXI6IHNlcGlhKC4zKSBjb250cmFzdCgxLjEpIGJyaWdodG5lc3MoMS4xKSBncmF5c2NhbGUoMSkKfQoKLnBlcnBldHVhOjphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDA1YjlhLCAjZTZjMTNkKQp9CgoucmV5ZXMgewogICAgZmlsdGVyOiBzZXBpYSguMjIpIGJyaWdodG5lc3MoMS4xKSBjb250cmFzdCguODUpIHNhdHVyYXRlKC43NSkKfQoKLnJleWVzOjphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiAjZWZjZGFkCn0KCi5naW5naGFtIHsKICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA1KSBodWUtcm90YXRlKC0xMGRlZykKfQoKLmdpbmdoYW06OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSg2NiwgMTAsIDE0LCAuMiksIHRyYW5zcGFyZW50KTsKICAgIG1peC1ibGVuZC1tb2RlOiBkYXJrZW4KfQoKLnRvYXN0ZXIgewogICAgZmlsdGVyOiBjb250cmFzdCgxLjUpIGJyaWdodG5lc3MoLjkpCn0KCi50b2FzdGVyOjphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCAjODA0ZTBmLCAjM2IwMDNiKTsKICAgIG1peC1ibGVuZC1tb2RlOiBzY3JlZW4KfQoKLndhbGRlbiB7CiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKSBodWUtcm90YXRlKC0xMGRlZykgc2VwaWEoLjMpIHNhdHVyYXRlKDEuNikKfQoKLndhbGRlbjo6YWZ0ZXIgewogICAgYmFja2dyb3VuZDogIzA0YzsKICAgIG1peC1ibGVuZC1tb2RlOiBzY3JlZW47CiAgICBvcGFjaXR5OiAuMwp9CgouaHVkc29uIHsKICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjIpIGNvbnRyYXN0KC45KSBzYXR1cmF0ZSgxLjEpCn0KCi5odWRzb246OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICNhNmIxZmYgNTAlLCAjMzQyMTM0KTsKICAgIG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseTsKICAgIG9wYWNpdHk6IC41Cn0KCi5lYXJseWJpcmQgewogICAgZmlsdGVyOiBjb250cmFzdCguOSkgc2VwaWEoLjIpCn0KCi5lYXJseWJpcmQ6OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICNkMGJhOGUgMjAlLCAjMzYwMzA5IDg1JSwgIzFkMDIxMCAxMDAlKTsKICAgIG1peC1ibGVuZC1tb2RlOiBvdmVybGF5Cn0KCi5tYXlmYWlyIHsKICAgIGZpbHRlcjogY29udHJhc3QoMS4xKSBzYXR1cmF0ZSgxLjEpCn0KCi5tYXlmYWlyOjphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQwJSA0MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjgpLCByZ2JhKDI1NSwgMjAwLCAyMDAsIC42KSwgIzExMSA2MCUpOwogICAgbWl4LWJsZW5kLW1vZGU6IG92ZXJsYXk7CiAgICBvcGFjaXR5OiAuNAp9CgoubG9maSB7CiAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMSkgY29udHJhc3QoMS41KQp9CgoubG9maTo6YWZ0ZXIgewogICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgdHJhbnNwYXJlbnQgNzAlLCAjMjIyIDE1MCUpOwogICAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5Cn0KCi5fMTk3NyB7CiAgICBmaWx0ZXI6IGNvbnRyYXN0KDEuMSkgYnJpZ2h0bmVzcygxLjEpIHNhdHVyYXRlKDEuMykKfQoKLl8xOTc3OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjQzLCAxMDYsIDE4OCwgLjMpOwogICAgbWl4LWJsZW5kLW1vZGU6IHNjcmVlbgp9CgouYnJvb2tseW4gewogICAgZmlsdGVyOiBjb250cmFzdCguOSkgYnJpZ2h0bmVzcygxLjEpCn0KCi5icm9va2x5bjo6YWZ0ZXIgewogICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgxNjgsIDIyMywgMTkzLCAuNCkgNzAlLCAjYzRiN2M4KTsKICAgIG1peC1ibGVuZC1tb2RlOiBvdmVybGF5Cn0KCi54cHJvMiB7CiAgICBmaWx0ZXI6IHNlcGlhKC4zKQp9CgoueHBybzI6OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICNlNmU3ZTAgNDAlLCByZ2JhKDQzLCA0MiwgMTYxLCAuNikgMTEwJSk7CiAgICBtaXgtYmxlbmQtbW9kZTogY29sb3ItYnVybgp9CgoubmFzaHZpbGxlIHsKICAgIGZpbHRlcjogc2VwaWEoLjIpIGNvbnRyYXN0KDEuMikgYnJpZ2h0bmVzcygxLjA1KSBzYXR1cmF0ZSgxLjIpCn0KCi5uYXNodmlsbGU6OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgNzAsIDE1MCwgLjQpOwogICAgbWl4LWJsZW5kLW1vZGU6IGxpZ2h0ZW4KfQoKLm5hc2h2aWxsZTo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ3LCAxNzYsIDE1MywgLjU2KTsKICAgIG1peC1ibGVuZC1tb2RlOiBkYXJrZW4KfQoKLmxhcmsgewogICAgZmlsdGVyOiBjb250cmFzdCguOSkKfQoKLmxhcms6OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjQyLCAyNDIsIDI0MiwgLjgpOwogICAgbWl4LWJsZW5kLW1vZGU6IGRhcmtlbgp9CgoubGFyazo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQ6ICMyMjI1M2Y7CiAgICBtaXgtYmxlbmQtbW9kZTogY29sb3ItZG9kZ2UKfQoKLm1vb24gewogICAgZmlsdGVyOiBncmF5c2NhbGUoMSkgY29udHJhc3QoMS4xKSBicmlnaHRuZXNzKDEuMSkKfQoKLm1vb246OmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kOiAjYTBhMGEwOwogICAgbWl4LWJsZW5kLW1vZGU6IHNvZnQtbGlnaHQKfQoKLm1vb246OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6ICMzODM4Mzg7CiAgICBtaXgtYmxlbmQtbW9kZTogbGlnaHRlbgp9CgouY2xhcmVuZG9uIHsKICAgIGZpbHRlcjogY29udHJhc3QoMS4yKSBzYXR1cmF0ZSgxLjM1KQp9CgouY2xhcmVuZG9uOmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNywgMTg3LCAyMjcsIC4yKTsKICAgIG1peC1ibGVuZC1tb2RlOiBvdmVybGF5Cn0KCi53aWxsb3cgewogICAgZmlsdGVyOiBncmF5c2NhbGUoLjUpIGNvbnRyYXN0KC45NSkgYnJpZ2h0bmVzcyguOSkKfQoKLndpbGxvdzo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJhZGlhbC1ncmFkaWVudCg0MCUsIGNpcmNsZSwgI2Q0YTlhZiA1NSUsICMwMDAgMTUwJSk7CiAgICBtaXgtYmxlbmQtbW9kZTogb3ZlcmxheQp9CgoucmlzZSB7CiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNSkgc2VwaWEoLjIpIGNvbnRyYXN0KC45KSBzYXR1cmF0ZSguOSkKfQoKLnJpc2U6OmFmdGVyIHsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMjMyLCAxOTcsIDE1MiwgLjgpLCB0cmFuc3BhcmVudCA5MCUpOwogICAgbWl4LWJsZW5kLW1vZGU6IG92ZXJsYXk7CiAgICBvcGFjaXR5OiAuNgp9CgoucmlzZTo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMjM2LCAyMDUsIDE2OSwgLjE1KSA1NSUsIHJnYmEoNTAsIDMwLCA3LCAuNCkpOwogICAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5Cn0KCi5fMTk3NzphZnRlciwKLl8xOTc3OmJlZm9yZSwKcnMtcHppbWctd3JhcC5hZGVuOmFmdGVyLAouYWRlbjpiZWZvcmUsCi5icm9va2x5bjphZnRlciwKLmJyb29rbHluOmJlZm9yZSwKLmNsYXJlbmRvbjphZnRlciwKLmNsYXJlbmRvbjpiZWZvcmUsCi5lYXJseWJpcmQ6YWZ0ZXIsCi5lYXJseWJpcmQ6YmVmb3JlLAouZ2luZ2hhbTphZnRlciwKLmdpbmdoYW06YmVmb3JlLAouaHVkc29uOmFmdGVyLAouaHVkc29uOmJlZm9yZSwKLmlua3dlbGw6YWZ0ZXIsCi5pbmt3ZWxsOmJlZm9yZSwKLmxhcms6YWZ0ZXIsCi5sYXJrOmJlZm9yZSwKLmxvZmk6YWZ0ZXIsCi5sb2ZpOmJlZm9yZSwKLm1heWZhaXI6YWZ0ZXIsCi5tYXlmYWlyOmJlZm9yZSwKLm1vb246YWZ0ZXIsCi5tb29uOmJlZm9yZSwKLm5hc2h2aWxsZTphZnRlciwKLm5hc2h2aWxsZTpiZWZvcmUsCi5wZXJwZXR1YTphZnRlciwKLnBlcnBldHVhOmJlZm9yZSwKLnJleWVzOmFmdGVyLAoucmV5ZXM6YmVmb3JlLAoucmlzZTphZnRlciwKLnJpc2U6YmVmb3JlLAouc2x1bWJlcjphZnRlciwKLnNsdW1iZXI6YmVmb3JlLAoudG9hc3RlcjphZnRlciwKLnRvYXN0ZXI6YmVmb3JlLAoud2FsZGVuOmFmdGVyLAoud2FsZGVuOmJlZm9yZSwKLndpbGxvdzphZnRlciwKLndpbGxvdzpiZWZvcmUsCi54cHJvMjphZnRlciwKLnhwcm8yOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLl8xOTc3LAouYWRlbiwKLmJyb29rbHluLAouY2xhcmVuZG9uLAouZWFybHliaXJkLAouZ2luZ2hhbSwKLmh1ZHNvbiwKLmlua3dlbGwsCi5sYXJrLAoubG9maSwKLm1heWZhaXIsCi5tb29uLAoubmFzaHZpbGxlLAoucGVycGV0dWEsCi5yZXllcywKLnJpc2UsCi5zbHVtYmVyLAoudG9hc3RlciwKLndhbGRlbiwKLndpbGxvdywKLnhwcm8yIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLl8xOTc3OmJlZm9yZSwKLmFkZW46YmVmb3JlLAouYnJvb2tseW46YmVmb3JlLAouY2xhcmVuZG9uOmJlZm9yZSwKLmVhcmx5YmlyZDpiZWZvcmUsCi5naW5naGFtOmJlZm9yZSwKLmh1ZHNvbjpiZWZvcmUsCi5pbmt3ZWxsOmJlZm9yZSwKLmxhcms6YmVmb3JlLAoubG9maTpiZWZvcmUsCi5tYXlmYWlyOmJlZm9yZSwKLm1vb246YmVmb3JlLAoubmFzaHZpbGxlOmJlZm9yZSwKLnBlcnBldHVhOmJlZm9yZSwKLnJleWVzOmJlZm9yZSwKLnJpc2U6YmVmb3JlLAouc2x1bWJlcjpiZWZvcmUsCi50b2FzdGVyOmJlZm9yZSwKLndhbGRlbjpiZWZvcmUsCi53aWxsb3c6YmVmb3JlLAoueHBybzI6YmVmb3JlIHsKICAgIHotaW5kZXg6IDMwCn0KCi5fMTk3NzphZnRlciwKLmFkZW46YWZ0ZXIsCi5icm9va2x5bjphZnRlciwKLmNsYXJlbmRvbjphZnRlciwKLmVhcmx5YmlyZDphZnRlciwKLmdpbmdoYW06YWZ0ZXIsCi5odWRzb246YWZ0ZXIsCi5pbmt3ZWxsOmFmdGVyLAoubGFyazphZnRlciwKLmxvZmk6YWZ0ZXIsCi5tYXlmYWlyOmFmdGVyLAoubW9vbjphZnRlciwKLm5hc2h2aWxsZTphZnRlciwKLnBlcnBldHVhOmFmdGVyLAoucmV5ZXM6YWZ0ZXIsCi5yaXNlOmFmdGVyLAouc2x1bWJlcjphZnRlciwKLnRvYXN0ZXI6YWZ0ZXIsCi53YWxkZW46YWZ0ZXIsCi53aWxsb3c6YWZ0ZXIsCi54cHJvMjphZnRlciB7CiAgICB6LWluZGV4OiA0MAp9Cgouc2x1bWJlciB7CiAgICBmaWx0ZXI6IHNhdHVyYXRlKC42NikgYnJpZ2h0bmVzcygxLjA1KQp9Cgouc2x1bWJlcjo6YWZ0ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEwNSwgMjQsIC41KTsKICAgIG1peC1ibGVuZC1tb2RlOiBzb2Z0LWxpZ2h0Cn0KCi5zbHVtYmVyOjpiZWZvcmUgewogICAgYmFja2dyb3VuZDogcmdiYSg2OSwgNDEsIDEyLCAuNCk7CiAgICBtaXgtYmxlbmQtbW9kZTogbGlnaHRlbgp9Cgoud2lsbG93OjphZnRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDhjZGNiOwogICAgbWl4LWJsZW5kLW1vZGU6IGNvbG9yCn0KCi8qIFNBRkFSSSBCVUcgRklYIE9OIENPTE9SIEJMRU5EIE1PREUgKi8KCkBtZWRpYSBub3QgYWxsIGFuZCAobWluLXJlc29sdXRpb246LjAwMWRwY20pIHsKICAgIEBzdXBwb3J0cyAoLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lKSB7CiAgICAgICAgLndpbGxvdyB7CiAgICAgICAgICAgIGZpbHRlcjpncmF5c2NhbGUoMSkgY29udHJhc3QoLjk1KSBicmlnaHRuZXNzKC45KQogICAgICAgIH0KICAgICAgICAud2lsbG93OjphZnRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIH0KICAgIH0KfQoKcnMtcHppbWctd3JhcC5wZXJwZXR1YTpiZWZvcmUsCnJzLXB6aW1nLXdyYXAucGVycGV0dWE6YWZ0ZXIsCnJzLXB6aW1nLXdyYXAubmFzaHZpbGxlOmJlZm9yZSwKcnMtcHppbWctd3JhcC5uYXNodmlsbGU6YWZ0ZXIsCnJzLXB6aW1nLXdyYXAueHBybzI6YmVmb3JlLApycy1wemltZy13cmFwLnhwcm8yOmFmdGVyLApycy1wemltZy13cmFwLl8xOTc3OmFmdGVyLApycy1wemltZy13cmFwLl8xOTc3OmJlZm9yZSwKcnMtcHppbWctd3JhcC5hZGVuOmFmdGVyLApycy1wemltZy13cmFwLmFkZW46YmVmb3JlLApycy1wemltZy13cmFwLmJyb29rbHluOmFmdGVyLApycy1wemltZy13cmFwLmJyb29rbHluOmJlZm9yZSwKcnMtcHppbWctd3JhcC5jbGFyZW5kb246YWZ0ZXIsCnJzLXB6aW1nLXdyYXAuY2xhcmVuZG9uOmJlZm9yZSwKcnMtcHppbWctd3JhcC5lYXJseWJpcmQ6YWZ0ZXIsCnJzLXB6aW1nLXdyYXAuZWFybHliaXJkOmJlZm9yZSwKcnMtcHppbWctd3JhcC5naW5naGFtOmFmdGVyLApycy1wemltZy13cmFwLmdpbmdoYW06YmVmb3JlLApycy1wemltZy13cmFwLmh1ZHNvbjphZnRlciwKcnMtcHppbWctd3JhcC5odWRzb246YmVmb3JlLApycy1wemltZy13cmFwLmlua3dlbGw6YWZ0ZXIsCnJzLXB6aW1nLXdyYXAuaW5rd2VsbDpiZWZvcmUsCnJzLXB6aW1nLXdyYXAubGFyazphZnRlciwKcnMtcHppbWctd3JhcC5sYXJrOmJlZm9yZSwKcnMtcHppbWctd3JhcC5sb2ZpOmFmdGVyLApycy1wemltZy13cmFwLmxvZmk6YmVmb3JlLApycy1wemltZy13cmFwLm1heWZhaXI6YWZ0ZXIsCnJzLXB6aW1nLXdyYXAubWF5ZmFpcjpiZWZvcmUsCnJzLXB6aW1nLXdyYXAubW9vbjphZnRlciwKcnMtcHppbWctd3JhcC5tb29uOmJlZm9yZSwKcnMtcHppbWctd3JhcC5yZXllczphZnRlciwKcnMtcHppbWctd3JhcC5yZXllczpiZWZvcmUsCnJzLXB6aW1nLXdyYXAucmlzZTphZnRlciwKcnMtcHppbWctd3JhcC5yaXNlOmJlZm9yZSwKcnMtcHppbWctd3JhcC5zbHVtYmVyOmFmdGVyLApycy1wemltZy13cmFwLnNsdW1iZXI6YmVmb3JlLApycy1wemltZy13cmFwLnRvYXN0ZXI6YWZ0ZXIsCnJzLXB6aW1nLXdyYXAudG9hc3RlcjpiZWZvcmUsCnJzLXB6aW1nLXdyYXAud2FsZGVuOmFmdGVyLApycy1wemltZy13cmFwLndhbGRlbjpiZWZvcmUsCnJzLXB6aW1nLXdyYXAud2lsbG93OmFmdGVyLApycy1wemltZy13cmFwLndpbGxvdzpiZWZvcmUsCnJzLXB6aW1nLXdyYXA6YmVmb3JlLApycy1wemltZy13cmFwOmFmdGVyIHsKICAgIGhlaWdodDogNTAwJTsKICAgIHdpZHRoOiA1MDAlCn0KCi8qKgpuZXcgc3Bpbm5lcnMKKiovCgpycy1sb2FkZXIuc3Bpbm5lcjYgewogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKcnMtbG9hZGVyLnNwaW5uZXI2IC5ycy1zcGlubmVyLWlubmVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJzLXJldmVhbGVyLTYgMS40cyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHJzLXJldmVhbGVyLTYgMS40cyBsaW5lYXIgaW5maW5pdGUKfQoKcnMtbG9hZGVyLnNwaW5uZXI2IC5ycy1zcGlubmVyLWlubmVyIHNwYW4gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciAyMHB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgMjBweAp9Cgpycy1sb2FkZXIuc3Bpbm5lcjYgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoMikgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzZkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNmRlZyk7CiAgICBvcGFjaXR5OiAuMQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjYgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoMykgewogICAgdHJhbnNmb3JtOiByb3RhdGUoNzJkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg3MmRlZyk7CiAgICBvcGFjaXR5OiAuMgp9Cgpycy1sb2FkZXIuc3Bpbm5lcjYgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoNCkgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTA4ZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTA4ZGVnKTsKICAgIG9wYWNpdHk6IC4zCn0KCnJzLWxvYWRlci5zcGlubmVyNiAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCg1KSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNDRkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxNDRkZWcpOwogICAgb3BhY2l0eTogLjQKfQoKcnMtbG9hZGVyLnNwaW5uZXI2IC5ycy1zcGlubmVyLWlubmVyIHNwYW46bnRoLWNoaWxkKDYpIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBvcGFjaXR5OiAuNQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjYgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoNykgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjE2ZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjE2ZGVnKTsKICAgIG9wYWNpdHk6IC42Cn0KCnJzLWxvYWRlci5zcGlubmVyNiAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCg4KSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyNTJkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNTJkZWcpOwogICAgb3BhY2l0eTogLjcKfQoKcnMtbG9hZGVyLnNwaW5uZXI2IC5ycy1zcGlubmVyLWlubmVyIHNwYW46bnRoLWNoaWxkKDkpIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI4OGRlZyk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDI4OGRlZyk7CiAgICBvcGFjaXR5OiAuOAp9Cgpycy1sb2FkZXIuc3Bpbm5lcjYgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoMTApIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDMyNGRlZyk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDMyNGRlZyk7CiAgICBvcGFjaXR5OiAuOQp9CgpAa2V5ZnJhbWVzIHJzLXJldmVhbGVyLTYgewogICAgZnJvbSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMCkKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBycy1yZXZlYWxlci02IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCkKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykKICAgIH0KfQoKcnMtbG9hZGVyLnNwaW5uZXI3IHsKICAgIHdpZHRoOiAzNXB4OwogICAgaGVpZ2h0OiAzNXB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpCn0KCnJzLWxvYWRlci5zcGlubmVyNyAucnMtc3Bpbm5lci1pbm5lciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDA7CiAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgYm9yZGVyOiAycHggc29saWQ7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcnMtcmV2ZWFsZXItNyAuOHMgbGluZWFyIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBycy1yZXZlYWxlci03IC44cyBsaW5lYXIgaW5maW5pdGUKfQoKQGtleWZyYW1lcyBycy1yZXZlYWxlci03IHsKICAgIGZyb20gewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDApCiAgICB9CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKQogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcnMtcmV2ZWFsZXItNyB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApCiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpCiAgICB9Cn0KCnJzLWxvYWRlci5zcGlubmVyOCB7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjggLnJzLXNwaW5uZXItaW5uZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAwOwogICAgdGV4dC1hbGlnbjogbGVmdAp9Cgpycy1sb2FkZXIuc3Bpbm5lcjggLnJzLXNwaW5uZXItaW5uZXIgc3BhbiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcnMtcmV2ZWFsZXItOCAxLjZzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcnMtcmV2ZWFsZXItOCAxLjZzIGxpbmVhciBpbmZpbml0ZQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjggLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpsYXN0LWNoaWxkIHsKICAgIGFuaW1hdGlvbi1kZWxheTogLS44czsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAtLjhzCn0KCkBrZXlmcmFtZXMgcnMtcmV2ZWFsZXItOCB7CiAgICAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTsKICAgICAgICBvcGFjaXR5OiAuNQogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBycy1yZXZlYWxlci04IHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCwgMCk7CiAgICAgICAgb3BhY2l0eTogLjUKICAgIH0KICAgIDEwMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9Cn0KCnJzLWxvYWRlci5zcGlubmVyOSB7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjkgLnJzLXNwaW5uZXItaW5uZXIgc3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgb3BhY2l0eTogLjY7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJzLXJldmVhbGVyLTkgMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb246IHJzLXJldmVhbGVyLTkgMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQKfQoKcnMtbG9hZGVyLnNwaW5uZXI5IC5ycy1zcGlubmVyLWlubmVyIHNwYW46bGFzdC1jaGlsZCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLTFzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAtMXMKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJzLXJldmVhbGVyLTkgewogICAgMCUsCiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCkKICAgIH0KICAgIDUwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpCiAgICB9Cn0KCkBrZXlmcmFtZXMgcnMtcmV2ZWFsZXItOSB7CiAgICAwJSwKICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApCiAgICB9CiAgICA1MCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpCiAgICB9Cn0KCnJzLWxvYWRlci5zcGlubmVyMTAgewogICAgd2lkdGg6IDU0cHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMCAucnMtc3Bpbm5lci1pbm5lciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTBweAp9Cgpycy1sb2FkZXIuc3Bpbm5lcjEwIC5ycy1zcGlubmVyLWlubmVyIHNwYW4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogNnB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJzLXJldmVhbGVyLTEwIDEuMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb246IHJzLXJldmVhbGVyLTEwIDEuMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMCAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCgyKSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLTEuMXM7CiAgICBhbmltYXRpb24tZGVsYXk6IC0xLjFzCn0KCnJzLWxvYWRlci5zcGlubmVyMTAgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoMykgewogICAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC0xczsKICAgIGFuaW1hdGlvbi1kZWxheTogLTFzCn0KCnJzLWxvYWRlci5zcGlubmVyMTAgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoNCkgewogICAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC0uOXM7CiAgICBhbmltYXRpb24tZGVsYXk6IC0uOXMKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMCAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCg1KSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLS44czsKICAgIGFuaW1hdGlvbi1kZWxheTogLS44cwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcnMtcmV2ZWFsZXItMTAgewogICAgMCUsCiAgICAxMDAlLAogICAgNDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVZKC40KQogICAgfQogICAgMjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVZKDEpCiAgICB9Cn0KCkBrZXlmcmFtZXMgcnMtcmV2ZWFsZXItMTAgewogICAgMCUsCiAgICAxMDAlLAogICAgNDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSguNCk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSguNCkKICAgIH0KICAgIDIwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgxKQogICAgfQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjExIHsKICAgIHdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpCn0KCnJzLWxvYWRlci5zcGlubmVyMTEgLnJzLXNwaW5uZXItaW5uZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCUKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMSAucnMtc3Bpbm5lci1pbm5lciBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDMzJTsKICAgIGhlaWdodDogMzMlOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsKICAgIGZsb2F0OiBsZWZ0OwogICAgLXdlYmtpdC1hbmltYXRpb246IHJzLXJldmVhbGVyLTExIDEuM3MgaW5maW5pdGUgZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb246IHJzLXJldmVhbGVyLTExIDEuM3MgaW5maW5pdGUgZWFzZS1pbi1vdXQKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMSAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCgxKSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLjJzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAuMnMKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMSAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCgyKSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLjNzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAuM3MKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMSAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCgzKSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLjRzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAuNHMKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMSAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCg0KSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLjFzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAuMXMKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMSAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCg1KSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLjJzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAuMnMKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMSAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCg2KSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLjNzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAuM3MKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMSAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCg3KSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMHM7CiAgICBhbmltYXRpb24tZGVsYXk6IDBzCn0KCnJzLWxvYWRlci5zcGlubmVyMTEgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoOCkgewogICAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC4xczsKICAgIGFuaW1hdGlvbi1kZWxheTogLjFzCn0KCnJzLWxvYWRlci5zcGlubmVyMTEgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoOSkgewogICAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC4yczsKICAgIGFuaW1hdGlvbi1kZWxheTogLjJzCn0KCkAtd2Via2l0LWtleWZyYW1lcyBycy1yZXZlYWxlci0xMSB7CiAgICAwJSwKICAgIDEwMCUsCiAgICA3MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNEKDEsIDEsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzRCgxLCAxLCAxKQogICAgfQogICAgMzUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzRCgwLCAwLCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM0QoMCwgMCwgMSkKICAgIH0KfQoKQGtleWZyYW1lcyBycy1yZXZlYWxlci0xMSB7CiAgICAwJSwKICAgIDEwMCUsCiAgICA3MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNEKDEsIDEsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzRCgxLCAxLCAxKQogICAgfQogICAgMzUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzRCgwLCAwLCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM0QoMCwgMCwgMSkKICAgIH0KfQoKcnMtbG9hZGVyLnNwaW5uZXIxMiB7CiAgICB3aWR0aDogMzVweDsKICAgIGhlaWdodDogMzVweDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjEyIC5ycy1zcGlubmVyLWlubmVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJzLXJldmVhbGVyLTEyIDFzIGluZmluaXRlIGxpbmVhcjsKICAgIGFuaW1hdGlvbjogcnMtcmV2ZWFsZXItMTIgMXMgaW5maW5pdGUgbGluZWFyCn0KCkAtd2Via2l0LWtleWZyYW1lcyBycy1yZXZlYWxlci0xMiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKQogICAgfQogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpCiAgICB9Cn0KCkBrZXlmcmFtZXMgcnMtcmV2ZWFsZXItMTIgewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDApCiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpCiAgICB9Cn0KCnJzLWxvYWRlci5zcGlubmVyMTMgewogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMyAucnMtc3Bpbm5lci1pbm5lciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjEzIC5ycy1zcGlubmVyLWlubmVyIHNwYW4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogNDAlOwogICAgaGVpZ2h0OiA0MCU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcnMtcmV2ZWFsZXItMTMgMnMgZWFzZSBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcnMtcmV2ZWFsZXItMTMgMnMgZWFzZSBpbmZpbml0ZQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjEzIC5ycy1zcGlubmVyLWlubmVyIHNwYW46bnRoLWNoaWxkKDEpIHsKICAgIGFuaW1hdGlvbi1kZWxheTogLTEuNXM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLTEuNXMKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMyAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCgyKSB7CiAgICBhbmltYXRpb24tZGVsYXk6IC0xczsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAtMXMKfQoKcnMtbG9hZGVyLnNwaW5uZXIxMyAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCgzKSB7CiAgICBhbmltYXRpb24tZGVsYXk6IC0uNXM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLS41cwp9CgpAa2V5ZnJhbWVzIHJzLXJldmVhbGVyLTEzIHsKICAgIDAlLAogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCkKICAgIH0KICAgIDI1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTYwJSkKICAgIH0KICAgIDUwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTYwJSwgMTYwJSkKICAgIH0KICAgIDc1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTYwJSkKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJzLXJldmVhbGVyLTEzIHsKICAgIDAlLAogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKQogICAgfQogICAgMjUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE2MCUpCiAgICB9CiAgICA1MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTYwJSwgMTYwJSkKICAgIH0KICAgIDc1JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNjAlKQogICAgfQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjE0IHsKICAgIHdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpCn0KCnJzLWxvYWRlci5zcGlubmVyMTQgLnJzLXNwaW5uZXItaW5uZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBhbmltYXRpb246IHJzLXJldmVhbGVyLTE0IDFzIGluZmluaXRlIGxpbmVhcgp9Cgpycy1sb2FkZXIuc3Bpbm5lcjE0IC5ycy1zcGlubmVyLWlubmVyIHNwYW4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNnB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgbWFyZ2luOiAtOHB4Cn0KCnJzLWxvYWRlci5zcGlubmVyMTQgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoMSkgewogICAgLXdlYmtpdC1hbmltYXRpb246IHJzLXJldmVhbGVyLTE0LTEgMnMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHJzLXJldmVhbGVyLTE0LTEgMnMgaW5maW5pdGUKfQoKcnMtbG9hZGVyLnNwaW5uZXIxNCAucnMtc3Bpbm5lci1pbm5lciBzcGFuOm50aC1jaGlsZCgyKSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcnMtcmV2ZWFsZXItMTQtMiAycyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcnMtcmV2ZWFsZXItMTQtMiAycyBpbmZpbml0ZQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjE0IC5ycy1zcGlubmVyLWlubmVyIHNwYW46bnRoLWNoaWxkKDMpIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBycy1yZXZlYWxlci0xNC0zIDJzIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBycy1yZXZlYWxlci0xNC0zIDJzIGluZmluaXRlCn0KCnJzLWxvYWRlci5zcGlubmVyMTQgLnJzLXNwaW5uZXItaW5uZXIgc3BhbjpudGgtY2hpbGQoNCkgewogICAgLXdlYmtpdC1hbmltYXRpb246IHJzLXJldmVhbGVyLTE0LTQgMnMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHJzLXJldmVhbGVyLTE0LTQgMnMgaW5maW5pdGUKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJzLXJldmVhbGVyLTE0LTEgewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQogICAgMjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZykgdHJhbnNsYXRlM2QoODAlLCA4MCUsIDApCiAgICB9CiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAzNjBkZWcpIHRyYW5zbGF0ZTNkKDgwJSwgODAlLCAwKQogICAgfQogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDM2MGRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJzLXJldmVhbGVyLTE0LTIgewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQogICAgMjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZykgdHJhbnNsYXRlM2QoODAlLCAtODAlLCAwKQogICAgfQogICAgODAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMzYwZGVnKSB0cmFuc2xhdGUzZCg4MCUsIC04MCUsIDApCiAgICB9CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMzYwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcnMtcmV2ZWFsZXItMTQtMyB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDBkZWcpIHRyYW5zbGF0ZTNkKDAsIDAsIDApCiAgICB9CiAgICAyMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKSB0cmFuc2xhdGUzZCgtODAlLCAtODAlLCAwKQogICAgfQogICAgODAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMzYwZGVnKSB0cmFuc2xhdGUzZCgtODAlLCAtODAlLCAwKQogICAgfQogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDM2MGRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJzLXJldmVhbGVyLTE0LTQgewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQogICAgMjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZykgdHJhbnNsYXRlM2QoLTgwJSwgODAlLCAwKQogICAgfQogICAgODAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMzYwZGVnKSB0cmFuc2xhdGUzZCgtODAlLCA4MCUsIDApCiAgICB9CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMzYwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQp9CgpAa2V5ZnJhbWVzIHJzLXJldmVhbGVyLTE0LTEgewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KICAgIDIwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKSB0cmFuc2xhdGUzZCg4MCUsIDgwJSwgMCkKICAgIH0KICAgIDgwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAzNjBkZWcpIHRyYW5zbGF0ZTNkKDgwJSwgODAlLCAwKQogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAzNjBkZWcpIHRyYW5zbGF0ZTNkKDAsIDAsIDApCiAgICB9Cn0KCkBrZXlmcmFtZXMgcnMtcmV2ZWFsZXItMTQtMiB7CiAgICAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQogICAgMjAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDBkZWcpIHRyYW5zbGF0ZTNkKDgwJSwgLTgwJSwgMCkKICAgIH0KICAgIDgwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAzNjBkZWcpIHRyYW5zbGF0ZTNkKDgwJSwgLTgwJSwgMCkKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMzYwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQp9CgpAa2V5ZnJhbWVzIHJzLXJldmVhbGVyLTE0LTMgewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KICAgIDIwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKSB0cmFuc2xhdGUzZCgtODAlLCAtODAlLCAwKQogICAgfQogICAgODAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDM2MGRlZykgdHJhbnNsYXRlM2QoLTgwJSwgLTgwJSwgMCkKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMzYwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQp9CgpAa2V5ZnJhbWVzIHJzLXJldmVhbGVyLTE0LTQgewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KICAgIDIwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKSB0cmFuc2xhdGUzZCgtODAlLCA4MCUsIDApCiAgICB9CiAgICA4MCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMzYwZGVnKSB0cmFuc2xhdGUzZCgtODAlLCA4MCUsIDApCiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDM2MGRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KfQoKcnMtbG9hZGVyLnNwaW5uZXIxNSB7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIG1hcmdpbi10b3A6IC00cHg7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKcnMtbG9hZGVyLnNwaW5uZXIxNSAucnMtc3Bpbm5lci1pbm5lciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJQp9Cgpycy1sb2FkZXIuc3Bpbm5lcjE1IC5ycy1zcGlubmVyLWlubmVyIHNwYW4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMjBweDsKICAgIGhlaWdodDogMjBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcnMtcmV2ZWFsZXItMTUgMS44cyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICAgIGFuaW1hdGlvbjogcnMtcmV2ZWFsZXItMTUgMS44cyBpbmZpbml0ZSBlYXNlLWluLW91dAp9Cgpycy1sb2FkZXIuc3Bpbm5lcjE1IC5ycy1zcGlubmVyLWlubmVyOmxhc3QtY2hpbGQgewogICAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC0uOXM7CiAgICBhbmltYXRpb24tZGVsYXk6IC0uOXMKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJzLXJldmVhbGVyLTE1IHsKICAgIDI1JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCkgcm90YXRlKC05MGRlZykgc2NhbGUoLjUpCiAgICB9CiAgICA1MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpIHRyYW5zbGF0ZVkoMzBweCkgcm90YXRlKC0xODBkZWcpCiAgICB9CiAgICA3NSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVkoMzBweCkgcm90YXRlKC0yNzBkZWcpIHNjYWxlKC41KQogICAgfQogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMzYwZGVnKQogICAgfQp9CgpAa2V5ZnJhbWVzIHJzLXJldmVhbGVyLTE1IHsKICAgIDI1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpIHJvdGF0ZSgtOTBkZWcpIHNjYWxlKC41KTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgzMHB4KSByb3RhdGUoLTkwZGVnKSBzY2FsZSguNSkKICAgIH0KICAgIDUwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpIHRyYW5zbGF0ZVkoMzBweCkgcm90YXRlKC0xNzlkZWcpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpIHRyYW5zbGF0ZVkoMzBweCkgcm90YXRlKC0xNzlkZWcpCiAgICB9CiAgICA1MC4xJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpIHRyYW5zbGF0ZVkoMzBweCkgcm90YXRlKC0xODBkZWcpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpIHRyYW5zbGF0ZVkoMzBweCkgcm90YXRlKC0xODBkZWcpCiAgICB9CiAgICA3NSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDMwcHgpIHJvdGF0ZSgtMjcwZGVnKSBzY2FsZSguNSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgzMHB4KSByb3RhdGUoLTI3MGRlZykgc2NhbGUoLjUpCiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMzYwZGVnKTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0zNjBkZWcpCiAgICB9Cn0KCi8qIE5FVyBDQU5WQVMgQU5JTUFUSU9OUyBPTiBTTElERSBCRydTICovCgouYmdjYW52YXMgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi8qIHdheSB0aGUgaGVsbCBvZmYgc2NyZWVuICovCgouUlNzY3JvbGxiYXItbWVhc3VyZSB7CiAgICB3aWR0aDogMTAwcHg7CiAgICBoZWlnaHQ6IDEwMHB4OwogICAgb3ZlcmZsb3c6IHNjcm9sbDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTk5OTlweDsKfQ=="}},"time_used":128,"timings":{"blocked":-1,"dns":0,"connect":94,"send":0,"wait":97,"receive":5,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/slick.css?ver=1.8.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.307Z","timestamp":1785145482307,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/slick.css?ver=1.8.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 1740\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":1740,"size_decoded":1949,"mime_type":"text/css","magic":"ASCII text","md5":"c4db758f18e65cac2380a39301e23377","sha1":"29065990a07761785c3ecdd703f4e67639bd3c89","sha256":"a03455a97e294a827c2b1d55d4a19321ff7800ca6480d10ef32689cfc0e72c33","sha512":"bcc4a3b9930892532d3c6030c107484dd6a5a6fa1c856383786119df267899187faf21135dd4a7f9a6d53a8005c3aa25d696cf9a9c2b386806781436c8a05d05","ssdeep":"","tlshash":"4f314c4806b38946841a81d95fd7c64579fff0530d399988bb801305df8fbd8b9c6ba3","first_seen":"2023-06-03T10:28:38Z","last_seen":"2026-07-27T13:15:07.484737Z","times_seen":87,"resource_available":false,"data":"LyogU2xpZGVyICovCgouc2xpY2stc2xpZGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7CiAgICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbXMtdG91Y2gtYWN0aW9uOiBwYW4teTsKICAgIHRvdWNoLWFjdGlvbjogcGFuLXk7CiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50Owp9Cgouc2xpY2stbGlzdCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9Cgouc2xpY2stbGlzdDpmb2N1cyB7CiAgICBvdXRsaW5lOiBub25lOwp9Cgouc2xpY2stbGlzdC5kcmFnZ2luZyB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCi5zbGljay1zbGlkZXIgLnNsaWNrLXRyYWNrLAouc2xpY2stc2xpZGVyIC5zbGljay1saXN0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7Cn0KCi5zbGljay10cmFjayB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnNsaWNrLXRyYWNrOmJlZm9yZSwKLnNsaWNrLXRyYWNrOmFmdGVyIHsKICAgIGRpc3BsYXk6IHRhYmxlOwogICAgY29udGVudDogJyc7Cn0KCi5zbGljay10cmFjazphZnRlciB7CiAgICBjbGVhcjogYm90aDsKfQoKLnNsaWNrLWxvYWRpbmcgLnNsaWNrLXRyYWNrIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLnNsaWNrLXNsaWRlIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBmbG9hdDogbGVmdDsKICAgIGhlaWdodDogMTAwJTsKICAgIG1pbi1oZWlnaHQ6IDFweDsKfQoKW2Rpcj0ncnRsJ10gLnNsaWNrLXNsaWRlIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLnNsaWNrLXNsaWRlIGltZyB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnNsaWNrLXNsaWRlLnNsaWNrLWxvYWRpbmcgaW1nIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5zbGljay1zbGlkZS5kcmFnZ2luZyBpbWcgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5zbGljay1pbml0aWFsaXplZCAuc2xpY2stc2xpZGUgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5zbGljay1sb2FkaW5nIC5zbGljay1zbGlkZSB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KCi5zbGljay12ZXJ0aWNhbCAuc2xpY2stc2xpZGUgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLnNsaWNrLWFycm93LnNsaWNrLWhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lOwp9"}},"time_used":652,"timings":{"blocked":558,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/magnific-popup.css?ver=1.1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.308Z","timestamp":1785145482308,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/magnific-popup.css?ver=1.1.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 7414\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":7414,"size_decoded":7623,"mime_type":"text/css","magic":"ASCII text","md5":"c1215af4c048085b504c41c4ae2f129f","sha1":"84e63c0c698a8c0e536b59b834ad39a5b8e4afbb","sha256":"431de3947ec89bcb0438d3143545138beee2a883ad3434b6d845fa3383d084f6","sha512":"5c1bcdb126a93b5e7f0d3c4377f30a9c820bfef266f17b586e2bb64ddb2a2a8a8e1761739327c946e1b8bd2401141d2c34085d745c26a9694004b0b3f9cd1657","ssdeep":"192:nfhYfYIe/KniUr1ZhTUgQSNYROc6Fnu7BeKe6vtF0eUfeAe3F1e49cpRJo:cb1FuFCKFJ","tlshash":"79e122965fb31b01d41ed5a89baba715231a0053d30bcc6b7fcd6548cf8e69885a2fc4","first_seen":"2023-04-17T22:27:08Z","last_seen":"2026-07-27T13:15:07.524619Z","times_seen":77,"resource_available":false,"data":"LyogTWFnbmlmaWMgUG9wdXAgQ1NTICovCgoubWZwLWJnIHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHotaW5kZXg6IDEwNDI7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgYmFja2dyb3VuZDogIzBiMGIwYjsKICAgIG9wYWNpdHk6IDAuODsKfQoKLm1mcC13cmFwIHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHotaW5kZXg6IDEwNDM7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLm1mcC1jb250YWluZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwOwogICAgcGFkZGluZzogMCA4cHg7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgoubWZwLWNvbnRhaW5lcjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgoubWZwLWFsaWduLXRvcCAubWZwLWNvbnRhaW5lcjpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm1mcC1jb250ZW50IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB6LWluZGV4OiAxMDQ1Owp9CgoubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50LAoubWZwLWFqYXgtaG9sZGVyIC5tZnAtY29udGVudCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGN1cnNvcjogYXV0bzsKfQoKLm1mcC1hamF4LWN1ciB7CiAgICBjdXJzb3I6IHByb2dyZXNzOwp9CgoubWZwLXpvb20tb3V0LWN1ciwKLm1mcC16b29tLW91dC1jdXIgLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jbG9zZSB7CiAgICBjdXJzb3I6IC1tb3otem9vbS1vdXQ7CiAgICBjdXJzb3I6IC13ZWJraXQtem9vbS1vdXQ7CiAgICBjdXJzb3I6IHpvb20tb3V0Owp9CgoubWZwLXpvb20gewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiAtd2Via2l0LXpvb20taW47CiAgICBjdXJzb3I6IC1tb3otem9vbS1pbjsKICAgIGN1cnNvcjogem9vbS1pbjsKfQoKLm1mcC1hdXRvLWN1cnNvciAubWZwLWNvbnRlbnQgewogICAgY3Vyc29yOiBhdXRvOwp9CgoubWZwLWNsb3NlLAoubWZwLWFycm93LAoubWZwLXByZWxvYWRlciwKLm1mcC1jb3VudGVyIHsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCi5tZnAtbG9hZGluZy5tZnAtZmlndXJlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5tZnAtaGlkZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5tZnAtcHJlbG9hZGVyIHsKICAgIGNvbG9yOiAjQ0NDOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICB3aWR0aDogYXV0bzsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi10b3A6IC0wLjhlbTsKICAgIGxlZnQ6IDhweDsKICAgIHJpZ2h0OiA4cHg7CiAgICB6LWluZGV4OiAxMDQ0Owp9CgoubWZwLXByZWxvYWRlciBhIHsKICAgIGNvbG9yOiAjQ0NDOwp9CgoubWZwLXByZWxvYWRlciBhOmhvdmVyIHsKICAgIGNvbG9yOiAjRkZGOwp9CgoubWZwLXMtcmVhZHkgLm1mcC1wcmVsb2FkZXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm1mcC1zLWVycm9yIC5tZnAtY29udGVudCB7CiAgICBkaXNwbGF5OiBub25lOwp9CgpidXR0b24ubWZwLWNsb3NlLApidXR0b24ubWZwLWFycm93IHsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IDA7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG91dGxpbmU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgei1pbmRleDogMTA0NjsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsKfQoKYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgIHBhZGRpbmc6IDA7CiAgICBib3JkZXI6IDA7Cn0KCi5tZnAtY2xvc2UgewogICAgd2lkdGg6IDQ0cHg7CiAgICBoZWlnaHQ6IDQ0cHg7CiAgICBsaW5lLWhlaWdodDogNDRweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAwOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgb3BhY2l0eTogMC42NTsKICAgIHBhZGRpbmc6IDAgMCAxOHB4IDEwcHg7CiAgICBjb2xvcjogI0ZGRjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtc2l6ZTogMjhweDsKICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgQmFza2VydmlsbGUsIG1vbm9zcGFjZTsKfQoKLm1mcC1jbG9zZTpob3ZlciwKLm1mcC1jbG9zZTpmb2N1cyB7CiAgICBvcGFjaXR5OiAxOwp9CgoubWZwLWNsb3NlOmFjdGl2ZSB7CiAgICB0b3A6IDFweDsKfQoKLm1mcC1jbG9zZS1idG4taW4gLm1mcC1jbG9zZSB7CiAgICBjb2xvcjogIzMzMzsKfQoKLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jbG9zZSwKLm1mcC1pZnJhbWUtaG9sZGVyIC5tZnAtY2xvc2UgewogICAgY29sb3I6ICNGRkY7CiAgICByaWdodDogLTZweDsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgcGFkZGluZy1yaWdodDogNnB4OwogICAgd2lkdGg6IDEwMCU7Cn0KCi5tZnAtY291bnRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIGNvbG9yOiAjQ0NDOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgoubWZwLWFycm93IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG9wYWNpdHk6IDAuNjU7CiAgICBtYXJnaW46IDA7CiAgICB0b3A6IDUwJTsKICAgIG1hcmdpbi10b3A6IC01NXB4OwogICAgcGFkZGluZzogMDsKICAgIHdpZHRoOiA5MHB4OwogICAgaGVpZ2h0OiAxMTBweDsKICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5tZnAtYXJyb3c6YWN0aXZlIHsKICAgIG1hcmdpbi10b3A6IC01NHB4Owp9CgoubWZwLWFycm93OmhvdmVyLAoubWZwLWFycm93OmZvY3VzIHsKICAgIG9wYWNpdHk6IDE7Cn0KCi5tZnAtYXJyb3c6YmVmb3JlLAoubWZwLWFycm93OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBtYXJnaW4tdG9wOiAzNXB4OwogICAgbWFyZ2luLWxlZnQ6IDM1cHg7CiAgICBib3JkZXI6IG1lZGl1bSBpbnNldCB0cmFuc3BhcmVudDsKfQoKLm1mcC1hcnJvdzphZnRlciB7CiAgICBib3JkZXItdG9wLXdpZHRoOiAxM3B4OwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMTNweDsKICAgIHRvcDogOHB4Owp9CgoubWZwLWFycm93OmJlZm9yZSB7CiAgICBib3JkZXItdG9wLXdpZHRoOiAyMXB4OwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMjFweDsKICAgIG9wYWNpdHk6IDAuNzsKfQoKLm1mcC1hcnJvdy1sZWZ0IHsKICAgIGxlZnQ6IDA7Cn0KCi5tZnAtYXJyb3ctbGVmdDphZnRlciB7CiAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgI0ZGRjsKICAgIG1hcmdpbi1sZWZ0OiAzMXB4Owp9CgoubWZwLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIG1hcmdpbi1sZWZ0OiAyNXB4OwogICAgYm9yZGVyLXJpZ2h0OiAyN3B4IHNvbGlkICMzRjNGM0Y7Cn0KCi5tZnAtYXJyb3ctcmlnaHQgewogICAgcmlnaHQ6IDA7Cn0KCi5tZnAtYXJyb3ctcmlnaHQ6YWZ0ZXIgewogICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgI0ZGRjsKICAgIG1hcmdpbi1sZWZ0OiAzOXB4Owp9CgoubWZwLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgICBib3JkZXItbGVmdDogMjdweCBzb2xpZCAjM0YzRjNGOwp9CgoubWZwLWlmcmFtZS1ob2xkZXIgewogICAgcGFkZGluZy10b3A6IDQwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNDBweDsKfQoKLm1mcC1pZnJhbWUtaG9sZGVyIC5tZnAtY29udGVudCB7CiAgICBsaW5lLWhlaWdodDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiA5MDBweDsKfQoKLm1mcC1pZnJhbWUtaG9sZGVyIC5tZnAtY2xvc2UgewogICAgdG9wOiAtNDBweDsKfQoKLm1mcC1pZnJhbWUtc2NhbGVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmctdG9wOiA1Ni4yNSU7Cn0KCi5tZnAtaWZyYW1lLXNjYWxlciBpZnJhbWUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3gtc2hhZG93OiAwIDAgOHB4IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgIGJhY2tncm91bmQ6ICMwMDA7Cn0KCi8qIE1haW4gaW1hZ2UgaW4gcG9wdXAgKi8KCmltZy5tZnAtaW1nIHsKICAgIHdpZHRoOiBhdXRvOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBwYWRkaW5nOiA0MHB4IDAgNDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwp9CgovKiBUaGUgc2hhZG93IGJlaGluZCB0aGUgaW1hZ2UgKi8KCi5tZnAtZmlndXJlIHsKICAgIGxpbmUtaGVpZ2h0OiAwOwp9CgoubWZwLWZpZ3VyZTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDQwcHg7CiAgICBib3R0b206IDQwcHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICB6LWluZGV4OiAtMTsKICAgIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgYmFja2dyb3VuZDogIzQ0NDsKfQoKLm1mcC1maWd1cmUgc21hbGwgewogICAgY29sb3I6ICNCREJEQkQ7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxNHB4Owp9CgoubWZwLWZpZ3VyZSBmaWd1cmUgewogICAgbWFyZ2luOiAwOwp9CgoubWZwLWJvdHRvbS1iYXIgewogICAgbWFyZ2luLXRvcDogLTM2cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBjdXJzb3I6IGF1dG87Cn0KCi5tZnAtdGl0bGUgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgY29sb3I6ICNGM0YzRjM7CiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAzNnB4Owp9CgoubWZwLWltYWdlLWhvbGRlciAubWZwLWNvbnRlbnQgewogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgoubWZwLWdhbGxlcnkgLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1maWd1cmUgewogICAgY3Vyc29yOiBwb2ludGVyOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSwKc2NyZWVuIGFuZCAobWF4LWhlaWdodDogMzAwcHgpIHsKICAgIC8qKgogICAgICAgKiBSZW1vdmUgYWxsIHBhZGRpbmdzIGFyb3VuZCB0aGUgaW1hZ2Ugb24gc21hbGwgc2NyZWVuCiAgICAgICAqLwogICAgLm1mcC1pbWctbW9iaWxlIC5tZnAtaW1hZ2UtaG9sZGVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICAgICAgcGFkZGluZy1yaWdodDogMDsKICAgIH0KICAgIC5tZnAtaW1nLW1vYmlsZSBpbWcubWZwLWltZyB7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KICAgIC5tZnAtaW1nLW1vYmlsZSAubWZwLWZpZ3VyZTphZnRlciB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgIH0KICAgIC5tZnAtaW1nLW1vYmlsZSAubWZwLWZpZ3VyZSBzbWFsbCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lOwogICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICB9CiAgICAubWZwLWltZy1tb2JpbGUgLm1mcC1ib3R0b20tYmFyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICB0b3A6IGF1dG87CiAgICAgICAgcGFkZGluZzogM3B4IDVweDsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KICAgIC5tZnAtaW1nLW1vYmlsZSAubWZwLWJvdHRvbS1iYXI6ZW1wdHkgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICB9CiAgICAubWZwLWltZy1tb2JpbGUgLm1mcC1jb3VudGVyIHsKICAgICAgICByaWdodDogNXB4OwogICAgICAgIHRvcDogM3B4OwogICAgfQogICAgLm1mcC1pbWctbW9iaWxlIC5tZnAtY2xvc2UgewogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDM1cHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KfQoKQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5tZnAtYXJyb3cgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpOwogICAgfQogICAgLm1mcC1hcnJvdy1sZWZ0IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDA7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMDsKICAgIH0KICAgIC5tZnAtYXJyb3ctcmlnaHQgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMTAwJTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlOwogICAgfQogICAgLm1mcC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDZweDsKICAgIH0KfQ=="}},"time_used":652,"timings":{"blocked":558,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/jquery.unveil.js?ver=1.1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.422Z","timestamp":1785145482422,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/jquery.unveil.js?ver=1.1.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 2130\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":2130,"size_decoded":2346,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text","md5":"4151f9b52a775a4a77e591b8d45d7d01","sha1":"597ec87af6a4e0e2d3616dd5a9912f74ca381d8f","sha256":"4da6818c4bfccb5fdbcc8b32bdc8852a6e6d4224c00a770f00941258eb4c5a00","sha512":"85e47bd515c655d0aa6b131cfdf99be18e8b3cdfd59a68267570dce96f844ba3122988c5419ffb53cd980a91c486e837c3980395d106b8c308fd3152034775bc","ssdeep":"","tlshash":"6d41fd2f2d6a32336c23316a8f9b6049f66190374805e61af92c5094dfb8c3e0275ee8","first_seen":"2026-07-27T08:06:56.362315Z","last_seen":"2026-07-27T09:45:50.939982Z","times_seen":3,"resource_available":true,"data":"LyoqCiAqIGpRdWVyeSBVbnZlaWwKICogQSB2ZXJ5IGxpZ2h0d2VpZ2h0IGpRdWVyeSBwbHVnaW4gdG8gbGF6eSBsb2FkIGltYWdlcwogKiBodHRwOi8vbHVpcy1hbG1laWRhLmdpdGh1Yi5jb20vdW52ZWlsCiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogQ29weXJpZ2h0IDIwMTMgTHXDrXMgQWxtZWlkYQogKiBodHRwczovL2dpdGh1Yi5jb20vbHVpcy1hbG1laWRhCiAqLwoKOwooZnVuY3Rpb24oJCkgewogICAgInVzZSBzdHJpY3QiOwogICAgJC5mbi51bnZlaWwgPSBmdW5jdGlvbih0aHJlc2hvbGQsIGNhbGxiYWNrKSB7CgogICAgICAgIHZhciAkdyA9ICQod2luZG93KSwKICAgICAgICAgICAgdGggPSB0aHJlc2hvbGQgfHwgMCwKICAgICAgICAgICAgcmV0aW5hID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gPiAxLAogICAgICAgICAgICBhdHRyaWIgPSByZXRpbmEgPyAiZGF0YS1zcmMtcmV0aW5hIiA6ICJkYXRhLXNyYyIsCiAgICAgICAgICAgIGF0dHJzcmNzZXQgPSAiZGF0YS1zcmNzZXQiLAogICAgICAgICAgICBhdHRyc2l6ZXMgPSAiZGF0YS1zaXplcyIsCiAgICAgICAgICAgIGltYWdlcyA9IHRoaXMsCiAgICAgICAgICAgIGxvYWRlZDsKCiAgICAgICAgdGhpcy5vbmUoInVudmVpbCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgc291cmNlID0gdGhpcy5nZXRBdHRyaWJ1dGUoYXR0cmliKTsKICAgICAgICAgICAgc291cmNlID0gc291cmNlIHx8IHRoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLXNyYyIpOwogICAgICAgICAgICBpZiAoc291cmNlKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgic3JjIiwgc291cmNlKTsKCiAgICAgICAgICAgICAgICB2YXIgc291cmNlX3NyY3NldCA9IHRoaXMuZ2V0QXR0cmlidXRlKGF0dHJzcmNzZXQpOwogICAgICAgICAgICAgICAgc291cmNlX3NyY3NldCA9IHNvdXJjZV9zcmNzZXQgfHwgdGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtc3Jjc2V0Iik7CiAgICAgICAgICAgICAgICBpZiAoc291cmNlX3NyY3NldCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJzcmNzZXQiLCBzb3VyY2Vfc3Jjc2V0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgc291cmNlX3NpemVzID0gdGhpcy5nZXRBdHRyaWJ1dGUoYXR0cnNpemVzKTsKICAgICAgICAgICAgICAgIHNvdXJjZV9zaXplcyA9IHNvdXJjZV9zaXplcyB8fCB0aGlzLmdldEF0dHJpYnV0ZSgiZGF0YS1zaXplcyIpOwogICAgICAgICAgICAgICAgaWYgKHNvdXJjZV9zaXplcykgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJzaXplcyIsIHNvdXJjZV9zaXplcyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIikgY2FsbGJhY2suY2FsbCh0aGlzKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBmdW5jdGlvbiB1bnZlaWwoKSB7CiAgICAgICAgICAgIHZhciBpbnZpZXcgPSBpbWFnZXMuZmlsdGVyKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICRlID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgkZS5pcygiOmhpZGRlbiIpKSByZXR1cm47CgogICAgICAgICAgICAgICAgdmFyIHd0ID0gJHcuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgd2IgPSB3dCArICR3LmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgIGV0ID0gJGUub2Zmc2V0KCkudG9wLAogICAgICAgICAgICAgICAgICAgIGViID0gZXQgKyAkZS5oZWlnaHQoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gZWIgPj0gd3QgLSB0aCAmJiBldCA8PSB3YiArIHRoOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGxvYWRlZCA9IGludmlldy50cmlnZ2VyKCJ1bnZlaWwiKTsKICAgICAgICAgICAgaW1hZ2VzID0gaW1hZ2VzLm5vdChsb2FkZWQpOwogICAgICAgIH0KCiAgICAgICAgJHcub24oInNjcm9sbC51bnZlaWwgcmVzaXplLnVudmVpbCBsb29rdXAudW52ZWlsIiwgdW52ZWlsKTsKCiAgICAgICAgdW52ZWlsKCk7CgogICAgICAgIHJldHVybiB0aGlzOwoKICAgIH07Cgp9KSh3aW5kb3cualF1ZXJ5IHx8IHdpbmRvdy5aZXB0byk7"}},"time_used":897,"timings":{"blocked":803,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/images/1003.gif","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.433Z","timestamp":1785145482433,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /images/1003.gif HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:45 GMT\r\nContent-Type: image/gif\r\nContent-Length: 1450\r\nConnection: keep-alive\r\nLast-Modified: Mon, 21 Sep 2015 03:21:28 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":1450,"size_decoded":1660,"mime_type":"image/gif","magic":"GIF image data, version 89a, 44 x 17","md5":"eae32a4c8f92ea69dd51e2fb4d5c0c99","sha1":"fea9202479cafc2c416c31b151152dd8dec785df","sha256":"37304e2d32b5d7817b2f61e5b5d1d4629855e34b7f827b66424d394a0d51df2b","sha512":"0bfdc8acc492e2b389881ac28435a1f5bfed9a4b0d96a6a8cb511804007da8752ac40b3fd39da882c1e34b5dfa6b9c1d0d03f3a242df1a5ee888b22857ccb8a5","ssdeep":"","tlshash":"0c311b7dc0c7f45bfb6b76b06d08998434aa41dde9d54640154388d326520f5bc84736","first_seen":"2024-08-29T19:41:24Z","last_seen":"2026-07-27T09:45:50.931586Z","times_seen":23,"resource_available":false,"data":"R0lGODlhLAARAPcAAOTi45CLkIJ8epSOjbKurqGjzr+8vIuEfqmkourp6ZmXrpeVrZqVkoR+e9DNz5GMlqOm14mBepCLiI6IiouFhZ2dvp2curaysoyGhM7Ly3lxcr25ubq3tYiBeYZ/fZKOnJOPmoF6eY2HiOzr6p+fxJ6fwpqZs5mYtaCbmZ2Xl9fV1peTo4B5d5SRoMrIx8vIyI6IiI2Hi4yGgoeBgby5u4mCe6es64Z+cqOl062oqZ+hz6ahn6SgnpuauaCbnZ6Zl5WTqpWTqJSQnZCMko+KkYyFg4qDfoiBfoeAfoqDf4yFhIuEgYmCgImCfIyGhoqDgYmDgYV+fIuFgo6JjJydwcXCwd3b28G9vIuEg7m2tZqZtoyEgoV/fIqEgYuDgIeAfYmCf4mDf5KPnoN8eo+JjYJ6eIJ7eZaUqczJyc3KytLQ0KunqYqEgIqDgJ2YlYiCf4mCfpeRjoiBf4eBfpGOmubk5Y+KiYiAdoeAe6ahoJaVsKWq4YmEgbSvr5iSkJKMibm2ts7LyZGOmcTBwcjFxcnHxfLy8YB5daOencPAwI6HhqWgnsLAweTj5OXj5IJ7e7izs5+gxoN8fNvY2JWSoJWSoo2IiYuDgeDf4Jybuaijn6Kl1NPQznpzcIqCfX94dXx1c6ijopubv4h/da+rrKikq8zKzId/dL26ub66uri0tNHOz6So26Gk052ewI6IhouFgYmBf5mYtqKdm5qatd7c3JGNmaSfn5KNmJucwMTBwsTCw52fx56fx9jW14yEg5KMjMnFx8nGx5KNkdvZ19za2MvJzvHw8PPz85ycvZ6evZWPjIuEgMfEwqGcnZCLlaKdn6Ken8C9vsK+voqCgL66vI6HhJGNlbKusJKOlZWTppeUp52YloiCgJ+i0aijptza3ZWPjZWQj5GPncfExIiAfpiSlNjW2qeipIR+fYmCfYV+fYqEgt7c25mZuc/NzpqZuKCbm4uDf4R9e4aAfq+qqn53dYN7eMvIyoyGh42Gh46JjYmDfYuEgouFgwAAACH5BAAAAAAALAAAAAAsABEAAAj/AP8JHEiwoMGDCBP6W9hvocN+/Q60ECGihREyAeAIIhNhiL4aMPQsoGBk4ZZ+RVAWSdlP4EOHDI0siOSvhwJYJWxNqDBBTIkDlZRR4ZXsWhKYSP25ZIh0CQUdU6ZYuKOtwg1XQJqwAvIMQoAaHT5swtAlqcOl/hrC9BLDWxtKPUZpgXcAghhLNoaJOhEBopFWJpqkHcyw5b+Xa2PoCHPG3SktJ+qOm2IjGxVZHRYeKHCCn9mFaNU6XOIE6r5MEYRYuGEhCJw9QB5AmNCkAy4cMNrAbKg2NNJ+RnIla0ICRL4SToaYqLGtVwdam1asIPGhJBbeDw0jfki6hT8iYozg/yISRsgENnScGHlwZsGQkmmxF3ZZBIM/+/Ux/FKyRV0RZkkowYYU3eABkTxF+JOEJ0YkMcZKWNiHgRL+UKjUP0+UwUIIknBRzjxjMFHGJ0jIwcIYUUTRiQ8+dMLOOixE8UY6oCwTjBn23BNCFCyYIcAj8xQhkAjkoMGBAWu8ksYGUFzhgDN2vNAHKbNk4UIxL8yQgy/o2LGKLtEQw4AqG2SwBiQvECJMDkcIZI4hF4wgwTSrZDHIILWkoUIinExSzzHtEHBLM+ekwk0jpojAiCMjGJKGI7vgU4c0PCBDwBgCpTBCKAlwcUU1hVSBjRWoqHEBDd/MAMAOedAQiDRZrIehAiDxVKEGJuCg0Qg0pTgSjgbGWNGAQBj88IcbfIQzxw7cROHGAMDMgYg4KLwTggSaLDJGOAhYcwQCKCwRBwUMxIGAHwzIoMgiy9AjkBRIQIFEP9T0U2I/RzABhRRHHIJCClFc4sEXRTDhwRP9fIFEF7E8AcYbHoBxBERcMCFkQhhnrLFAAQEAOw=="}},"time_used":3267,"timings":{"blocked":3173,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/ui/core.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.438Z","timestamp":1785145482438,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/jquery/ui/core.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Thu, 03 Feb 2022 00:04:02 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","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":20714,"size_decoded":7559,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (8189)","md5":"e77ef4006bb97c97c8407f4a8abf4e3d","sha1":"1a27436ff6ef47ca5c3e352b792e50901ebb705e","sha256":"9d7da1b980a95ff3d31d0bb8733cbabd1d210ec601d15a1aac2b67394a33191d","sha512":"42bc78cf422404867ec9c74ea58a3d8e064552abd337b1b822073f683336ad3f31d29403cf764c20865e94512d99b0b2c16226ba960a61d09f9ddcc6e537f586","ssdeep":"384:Au1fevEqqqVS3dsfA/N1H1ib58fuxNhDGXvhHQfZw/OwR2op9FkFrFd:IS3V27+hJLp7kl","tlshash":"fb92d68db2453805c5fba275507f534fa132a29cb10a88ddf4acc9e92c7ae991073f79","first_seen":"2023-03-07T01:06:36Z","last_seen":"2026-07-27T09:45:50.825673Z","times_seen":4252,"resource_available":true,"data":"LyohIGpRdWVyeSBVSSAtIHYxLjEzLjEgLSAyMDIyLTAxLTIwCiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiBkYXRhLmpzLCBkaXNhYmxlLXNlbGVjdGlvbi5qcywgZXNjYXBlLXNlbGVjdG9yLmpzLCBmb2N1c2FibGUuanMsIGZvcm0tcmVzZXQtbWl4aW4uanMsIGZvcm0uanMsIGllLmpzLCBqcXVlcnktMS03LmpzLCBrZXljb2RlLmpzLCBsYWJlbHMuanMsIHBsdWdpbi5qcywgcG9zaXRpb24uanMsIHNhZmUtYWN0aXZlLWVsZW1lbnQuanMsIHNhZmUtYmx1ci5qcywgc2Nyb2xsLXBhcmVudC5qcywgdGFiYmFibGUuanMsIHVuaXF1ZS1pZC5qcywgdmVyc2lvbi5qcywgd2lkZ2V0LmpzCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkICAqLwohZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sdCk6dChqUXVlcnkpfShmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7dmFyIHQsZSxpLG4sVyxDLG8scyxyLGwsYSxoLHU7ZnVuY3Rpb24gRSh0LGUsaSl7cmV0dXJuW3BhcnNlRmxvYXQodFswXSkqKGEudGVzdCh0WzBdKT9lLzEwMDoxKSxwYXJzZUZsb2F0KHRbMV0pKihhLnRlc3QodFsxXSk/aS8xMDA6MSldfWZ1bmN0aW9uIEwodCxlKXtyZXR1cm4gcGFyc2VJbnQoeC5jc3ModCxlKSwxMCl8fDB9ZnVuY3Rpb24gTih0KXtyZXR1cm4gbnVsbCE9dCYmdD09PXQud2luZG93fXgudWk9eC51aXx8e30seC51aS52ZXJzaW9uPSIxLjEzLjEiLAovKiEKICogalF1ZXJ5IFVJIDpkYXRhIDEuMTMuMQogKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAqCiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKi8KeC5leHRlbmQoeC5leHByLnBzZXVkb3Mse2RhdGE6eC5leHByLmNyZWF0ZVBzZXVkbz94LmV4cHIuY3JlYXRlUHNldWRvKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4hIXguZGF0YSh0LGUpfX0pOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4hIXguZGF0YSh0LGlbM10pfX0pLAovKiEKICogalF1ZXJ5IFVJIERpc2FibGUgU2VsZWN0aW9uIDEuMTMuMQogKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAqCiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKi8KeC5mbi5leHRlbmQoe2Rpc2FibGVTZWxlY3Rpb246KHQ9Im9uc2VsZWN0c3RhcnQiaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik/InNlbGVjdHN0YXJ0IjoibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uKHQrIi51aS1kaXNhYmxlU2VsZWN0aW9uIixmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9KX0pLGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9mZigiLnVpLWRpc2FibGVTZWxlY3Rpb24iKX19KSwKLyohCiAqIGpRdWVyeSBVSSBGb2N1c2FibGUgMS4xMy4xCiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICoKICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqLwp4LnVpLmZvY3VzYWJsZT1mdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzLHI9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJhcmVhIj09PXI/KG49KGk9dC5wYXJlbnROb2RlKS5uYW1lLCEoIXQuaHJlZnx8IW58fCJtYXAiIT09aS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSYmKDA8KG49eCgiaW1nW3VzZW1hcD0nIyIrbisiJ10iKSkubGVuZ3RoJiZuLmlzKCI6dmlzaWJsZSIpKSk6KC9eKGlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvLnRlc3Qocik/KG89IXQuZGlzYWJsZWQpJiYocz14KHQpLmNsb3Nlc3QoImZpZWxkc2V0IilbMF0pJiYobz0hcy5kaXNhYmxlZCk6bz0iYSI9PT1yJiZ0LmhyZWZ8fGUsbyYmeCh0KS5pcygiOnZpc2libGUiKSYmZnVuY3Rpb24odCl7dmFyIGU9dC5jc3MoInZpc2liaWxpdHkiKTtmb3IoOyJpbmhlcml0Ij09PWU7KXQ9dC5wYXJlbnQoKSxlPXQuY3NzKCJ2aXNpYmlsaXR5Iik7cmV0dXJuInZpc2libGUiPT09ZX0oeCh0KSkpfSx4LmV4dGVuZCh4LmV4cHIucHNldWRvcyx7Zm9jdXNhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiB4LnVpLmZvY3VzYWJsZSh0LG51bGwhPXguYXR0cih0LCJ0YWJpbmRleCIpKX19KSx4LmZuLl9mb3JtPWZ1bmN0aW9uKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzWzBdLmZvcm0/dGhpcy5jbG9zZXN0KCJmb3JtIik6eCh0aGlzWzBdLmZvcm0pfSwKLyohCiAqIGpRdWVyeSBVSSBGb3JtIFJlc2V0IE1peGluIDEuMTMuMQogKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAqCiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKi8KeC51aS5mb3JtUmVzZXRNaXhpbj17X2Zvcm1SZXNldEhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgZT14KHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdD1lLmRhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIik7eC5lYWNoKHQsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2goKX0pfSl9LF9iaW5kRm9ybVJlc2V0SGFuZGxlcjpmdW5jdGlvbigpe3ZhciB0O3RoaXMuZm9ybT10aGlzLmVsZW1lbnQuX2Zvcm0oKSx0aGlzLmZvcm0ubGVuZ3RoJiYoKHQ9dGhpcy5mb3JtLmRhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIil8fFtdKS5sZW5ndGh8fHRoaXMuZm9ybS5vbigicmVzZXQudWktZm9ybS1yZXNldCIsdGhpcy5fZm9ybVJlc2V0SGFuZGxlciksdC5wdXNoKHRoaXMpLHRoaXMuZm9ybS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIsdCkpfSxfdW5iaW5kRm9ybVJlc2V0SGFuZGxlcjpmdW5jdGlvbigpe3ZhciB0O3RoaXMuZm9ybS5sZW5ndGgmJigodD10aGlzLmZvcm0uZGF0YSgidWktZm9ybS1yZXNldC1pbnN0YW5jZXMiKSkuc3BsaWNlKHguaW5BcnJheSh0aGlzLHQpLDEpLHQubGVuZ3RoP3RoaXMuZm9ybS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIsdCk6dGhpcy5mb3JtLnJlbW92ZURhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIikub2ZmKCJyZXNldC51aS1mb3JtLXJlc2V0IikpfX0seC51aS5pZT0hIS9tc2llIFtcdy5dKy8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpLAovKiEKICogalF1ZXJ5IFVJIFN1cHBvcnQgZm9yIGpRdWVyeSBjb3JlIDEuOC54IGFuZCBuZXdlciAxLjEzLjAKICogaHR0cDovL2pxdWVyeXVpLmNvbQogKgogKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICovCnguZXhwci5wc2V1ZG9zfHwoeC5leHByLnBzZXVkb3M9eC5leHByWyI6Il0pLHgudW5pcXVlU29ydHx8KHgudW5pcXVlU29ydD14LnVuaXF1ZSkseC5lc2NhcGVTZWxlY3Rvcnx8KGU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15ceDgwLVx1RkZGRlx3LV0vZyxpPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/IlwwIj09PXQ/Iu+/vSI6dC5zbGljZSgwLC0xKSsiXFwiK3QuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKS50b1N0cmluZygxNikrIiAiOiJcXCIrdH0seC5lc2NhcGVTZWxlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4odCsiIikucmVwbGFjZShlLGkpfSkseC5mbi5ldmVuJiZ4LmZuLm9kZHx8eC5mbi5leHRlbmQoe2V2ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQlMj09MH0pfSxvZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQlMj09MX0pfX0pLAovKiEKICogalF1ZXJ5IFVJIEtleWNvZGUgMS4xMy4xCiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICoKICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqLwp4LnVpLmtleUNvZGU9e0JBQ0tTUEFDRTo4LENPTU1BOjE4OCxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsTEVGVDozNyxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQRVJJT0Q6MTkwLFJJR0hUOjM5LFNQQUNFOjMyLFRBQjo5LFVQOjM4fSwKLyohCiAqIGpRdWVyeSBVSSBMYWJlbHMgMS4xMy4xCiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICoKICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqLwp4LmZuLmxhYmVscz1mdW5jdGlvbigpe3ZhciB0LGUsaTtyZXR1cm4gdGhpcy5sZW5ndGg/dGhpc1swXS5sYWJlbHMmJnRoaXNbMF0ubGFiZWxzLmxlbmd0aD90aGlzLnB1c2hTdGFjayh0aGlzWzBdLmxhYmVscyk6KGU9dGhpcy5lcSgwKS5wYXJlbnRzKCJsYWJlbCIpLCh0PXRoaXMuYXR0cigiaWQiKSkmJihpPShpPXRoaXMuZXEoMCkucGFyZW50cygpLmxhc3QoKSkuYWRkKChpLmxlbmd0aD9pOnRoaXMpLnNpYmxpbmdzKCkpLHQ9ImxhYmVsW2Zvcj0nIit4LmVzY2FwZVNlbGVjdG9yKHQpKyInXSIsZT1lLmFkZChpLmZpbmQodCkuYWRkQmFjayh0KSkpLHRoaXMucHVzaFN0YWNrKGUpKTp0aGlzLnB1c2hTdGFjayhbXSl9LHgudWkucGx1Z2luPXthZGQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG89eC51aVt0XS5wcm90b3R5cGU7Zm9yKG4gaW4gaSlvLnBsdWdpbnNbbl09by5wbHVnaW5zW25dfHxbXSxvLnBsdWdpbnNbbl0ucHVzaChbZSxpW25dXSl9LGNhbGw6ZnVuY3Rpb24odCxlLGksbil7dmFyIG8scz10LnBsdWdpbnNbZV07aWYocyYmKG58fHQuZWxlbWVudFswXS5wYXJlbnROb2RlJiYxMSE9PXQuZWxlbWVudFswXS5wYXJlbnROb2RlLm5vZGVUeXBlKSlmb3Iobz0wO288cy5sZW5ndGg7bysrKXQub3B0aW9uc1tzW29dWzBdXSYmc1tvXVsxXS5hcHBseSh0LmVsZW1lbnQsaSl9fSwKLyohCiAqIGpRdWVyeSBVSSBQb3NpdGlvbiAxLjEzLjEKICogaHR0cDovL2pxdWVyeXVpLmNvbQogKgogKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vcG9zaXRpb24vCiAqLwpXPU1hdGgubWF4LEM9TWF0aC5hYnMsbz0vbGVmdHxjZW50ZXJ8cmlnaHQvLHM9L3RvcHxjZW50ZXJ8Ym90dG9tLyxyPS9bXCtcLV1cZCsoXC5bXGRdKyk/JT8vLGw9L15cdysvLGE9LyUkLyxoPXguZm4ucG9zaXRpb24seC5wb3NpdGlvbj17c2Nyb2xsYmFyV2lkdGg6ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1uKXJldHVybiBuO3ZhciB0LGU9eCgiPGRpdiBzdHlsZT0nZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoyMDBweDtoZWlnaHQ6MjAwcHg7b3ZlcmZsb3c6aGlkZGVuOyc+PGRpdiBzdHlsZT0naGVpZ2h0OjMwMHB4O3dpZHRoOmF1dG87Jz48L2Rpdj48L2Rpdj4iKSxpPWUuY2hpbGRyZW4oKVswXTtyZXR1cm4geCgiYm9keSIpLmFwcGVuZChlKSx0PWkub2Zmc2V0V2lkdGgsZS5jc3MoIm92ZXJmbG93Iiwic2Nyb2xsIiksdD09PShpPWkub2Zmc2V0V2lkdGgpJiYoaT1lWzBdLmNsaWVudFdpZHRoKSxlLnJlbW92ZSgpLG49dC1pfSxnZXRTY3JvbGxJbmZvOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaXNXaW5kb3d8fHQuaXNEb2N1bWVudD8iIjp0LmVsZW1lbnQuY3NzKCJvdmVyZmxvdy14IiksaT10LmlzV2luZG93fHx0LmlzRG9jdW1lbnQ/IiI6dC5lbGVtZW50LmNzcygib3ZlcmZsb3cteSIpLGU9InNjcm9sbCI9PT1lfHwiYXV0byI9PT1lJiZ0LndpZHRoPHQuZWxlbWVudFswXS5zY3JvbGxXaWR0aDtyZXR1cm57d2lkdGg6InNjcm9sbCI9PT1pfHwiYXV0byI9PT1pJiZ0LmhlaWdodDx0LmVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0P3gucG9zaXRpb24uc2Nyb2xsYmFyV2lkdGgoKTowLGhlaWdodDplP3gucG9zaXRpb24uc2Nyb2xsYmFyV2lkdGgoKTowfX0sZ2V0V2l0aGluSW5mbzpmdW5jdGlvbih0KXt2YXIgZT14KHR8fHdpbmRvdyksaT1OKGVbMF0pLG49ISFlWzBdJiY5PT09ZVswXS5ub2RlVHlwZTtyZXR1cm57ZWxlbWVudDplLGlzV2luZG93OmksaXNEb2N1bWVudDpuLG9mZnNldDohaSYmIW4/eCh0KS5vZmZzZXQoKTp7bGVmdDowLHRvcDowfSxzY3JvbGxMZWZ0OmUuc2Nyb2xsTGVmdCgpLHNjcm9sbFRvcDplLnNjcm9sbFRvcCgpLHdpZHRoOmUub3V0ZXJXaWR0aCgpLGhlaWdodDplLm91dGVySGVpZ2h0KCl9fX0seC5mbi5wb3NpdGlvbj1mdW5jdGlvbihmKXtpZighZnx8IWYub2YpcmV0dXJuIGguYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBjLGQscCxnLG0sdCx2PSJzdHJpbmciPT10eXBlb2YoZj14LmV4dGVuZCh7fSxmKSkub2Y/eChkb2N1bWVudCkuZmluZChmLm9mKTp4KGYub2YpLHk9eC5wb3NpdGlvbi5nZXRXaXRoaW5JbmZvKGYud2l0aGluKSx3PXgucG9zaXRpb24uZ2V0U2Nyb2xsSW5mbyh5KSxiPShmLmNvbGxpc2lvbnx8ImZsaXAiKS5zcGxpdCgiICIpLF89e30sZT05PT09KHQ9KGU9dilbMF0pLm5vZGVUeXBlP3t3aWR0aDplLndpZHRoKCksaGVpZ2h0OmUuaGVpZ2h0KCksb2Zmc2V0Ont0b3A6MCxsZWZ0OjB9fTpOKHQpP3t3aWR0aDplLndpZHRoKCksaGVpZ2h0OmUuaGVpZ2h0KCksb2Zmc2V0Ont0b3A6ZS5zY3JvbGxUb3AoKSxsZWZ0OmUuc2Nyb2xsTGVmdCgpfX06dC5wcmV2ZW50RGVmYXVsdD97d2lkdGg6MCxoZWlnaHQ6MCxvZmZzZXQ6e3RvcDp0LnBhZ2VZLGxlZnQ6dC5wYWdlWH19Ont3aWR0aDplLm91dGVyV2lkdGgoKSxoZWlnaHQ6ZS5vdXRlckhlaWdodCgpLG9mZnNldDplLm9mZnNldCgpfTtyZXR1cm4gdlswXS5wcmV2ZW50RGVmYXVsdCYmKGYuYXQ9ImxlZnQgdG9wIiksZD1lLndpZHRoLHA9ZS5oZWlnaHQsbT14LmV4dGVuZCh7fSxnPWUub2Zmc2V0KSx4LmVhY2goWyJteSIsImF0Il0sZnVuY3Rpb24oKXt2YXIgdCxlLGk9KGZbdGhpc118fCIiKS5zcGxpdCgiICIpOyhpPTE9PT1pLmxlbmd0aD9vLnRlc3QoaVswXSk/aS5jb25jYXQoWyJjZW50ZXIiXSk6cy50ZXN0KGlbMF0pP1siY2VudGVyIl0uY29uY2F0KGkpOlsiY2VudGVyIiwiY2VudGVyIl06aSlbMF09by50ZXN0KGlbMF0pP2lbMF06ImNlbnRlciIsaVsxXT1zLnRlc3QoaVsxXSk/aVsxXToiY2VudGVyIix0PXIuZXhlYyhpWzBdKSxlPXIuZXhlYyhpWzFdKSxfW3RoaXNdPVt0P3RbMF06MCxlP2VbMF06MF0sZlt0aGlzXT1bbC5leGVjKGlbMF0pWzBdLGwuZXhlYyhpWzFdKVswXV19KSwxPT09Yi5sZW5ndGgmJihiWzFdPWJbMF0pLCJyaWdodCI9PT1mLmF0WzBdP20ubGVmdCs9ZDoiY2VudGVyIj09PWYuYXRbMF0mJihtLmxlZnQrPWQvMiksImJvdHRvbSI9PT1mLmF0WzFdP20udG9wKz1wOiJjZW50ZXIiPT09Zi5hdFsxXSYmKG0udG9wKz1wLzIpLGM9RShfLmF0LGQscCksbS5sZWZ0Kz1jWzBdLG0udG9wKz1jWzFdLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpLHQscj14KHRoaXMpLGw9ci5vdXRlcldpZHRoKCksYT1yLm91dGVySGVpZ2h0KCksZT1MKHRoaXMsIm1hcmdpbkxlZnQiKSxuPUwodGhpcywibWFyZ2luVG9wIiksbz1sK2UrTCh0aGlzLCJtYXJnaW5SaWdodCIpK3cud2lkdGgscz1hK24rTCh0aGlzLCJtYXJnaW5Cb3R0b20iKSt3LmhlaWdodCxoPXguZXh0ZW5kKHt9LG0pLHU9RShfLm15LHIub3V0ZXJXaWR0aCgpLHIub3V0ZXJIZWlnaHQoKSk7InJpZ2h0Ij09PWYubXlbMF0/aC5sZWZ0LT1sOiJjZW50ZXIiPT09Zi5teVswXSYmKGgubGVmdC09bC8yKSwiYm90dG9tIj09PWYubXlbMV0/aC50b3AtPWE6ImNlbnRlciI9PT1mLm15WzFdJiYoaC50b3AtPWEvMiksaC5sZWZ0Kz11WzBdLGgudG9wKz11WzFdLGk9e21hcmdpbkxlZnQ6ZSxtYXJnaW5Ub3A6bn0seC5lYWNoKFsibGVmdCIsInRvcCJdLGZ1bmN0aW9uKHQsZSl7eC51aS5wb3NpdGlvbltiW3RdXSYmeC51aS5wb3NpdGlvbltiW3RdXVtlXShoLHt0YXJnZXRXaWR0aDpkLHRhcmdldEhlaWdodDpwLGVsZW1XaWR0aDpsLGVsZW1IZWlnaHQ6YSxjb2xsaXNpb25Qb3NpdGlvbjppLGNvbGxpc2lvbldpZHRoOm8sY29sbGlzaW9uSGVpZ2h0OnMsb2Zmc2V0OltjWzBdK3VbMF0sY1sxXSt1WzFdXSxteTpmLm15LGF0OmYuYXQsd2l0aGluOnksZWxlbTpyfSl9KSxmLnVzaW5nJiYodD1mdW5jdGlvbih0KXt2YXIgZT1nLmxlZnQtaC5sZWZ0LGk9ZStkLWwsbj1nLnRvcC1oLnRvcCxvPW4rcC1hLHM9e3RhcmdldDp7ZWxlbWVudDp2LGxlZnQ6Zy5sZWZ0LHRvcDpnLnRvcCx3aWR0aDpkLGhlaWdodDpwfSxlbGVtZW50OntlbGVtZW50OnIsbGVmdDpoLmxlZnQsdG9wOmgudG9wLHdpZHRoOmwsaGVpZ2h0OmF9LGhvcml6b250YWw6aTwwPyJsZWZ0IjowPGU/InJpZ2h0IjoiY2VudGVyIix2ZXJ0aWNhbDpvPDA/InRvcCI6MDxuPyJib3R0b20iOiJtaWRkbGUifTtkPGwmJkMoZStpKTxkJiYocy5ob3Jpem9udGFsPSJjZW50ZXIiKSxwPGEmJkMobitvKTxwJiYocy52ZXJ0aWNhbD0ibWlkZGxlIiksVyhDKGUpLEMoaSkpPlcoQyhuKSxDKG8pKT9zLmltcG9ydGFudD0iaG9yaXpvbnRhbCI6cy5pbXBvcnRhbnQ9InZlcnRpY2FsIixmLnVzaW5nLmNhbGwodGhpcyx0LHMpfSksci5vZmZzZXQoeC5leHRlbmQoaCx7dXNpbmc6dH0pKX0pfSx4LnVpLnBvc2l0aW9uPXtmaXQ6e2xlZnQ6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLndpdGhpbixuPWkuaXNXaW5kb3c/aS5zY3JvbGxMZWZ0Omkub2Zmc2V0LmxlZnQsbz1pLndpZHRoLHM9dC5sZWZ0LWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCxyPW4tcyxsPXMrZS5jb2xsaXNpb25XaWR0aC1vLW47ZS5jb2xsaXNpb25XaWR0aD5vPzA8ciYmbDw9MD8oaT10LmxlZnQrcitlLmNvbGxpc2lvbldpZHRoLW8tbix0LmxlZnQrPXItaSk6dC5sZWZ0PSEoMDxsJiZyPD0wKSYmbDxyP24rby1lLmNvbGxpc2lvbldpZHRoOm46MDxyP3QubGVmdCs9cjowPGw/dC5sZWZ0LT1sOnQubGVmdD1XKHQubGVmdC1zLHQubGVmdCl9LHRvcDpmdW5jdGlvbih0LGUpe3ZhciBpPWUud2l0aGluLG49aS5pc1dpbmRvdz9pLnNjcm9sbFRvcDppLm9mZnNldC50b3Asbz1lLndpdGhpbi5oZWlnaHQscz10LnRvcC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCxyPW4tcyxsPXMrZS5jb2xsaXNpb25IZWlnaHQtby1uO2UuY29sbGlzaW9uSGVpZ2h0Pm8/MDxyJiZsPD0wPyhpPXQudG9wK3IrZS5jb2xsaXNpb25IZWlnaHQtby1uLHQudG9wKz1yLWkpOnQudG9wPSEoMDxsJiZyPD0wKSYmbDxyP24rby1lLmNvbGxpc2lvbkhlaWdodDpuOjA8cj90LnRvcCs9cjowPGw/dC50b3AtPWw6dC50b3A9Vyh0LnRvcC1zLHQudG9wKX19LGZsaXA6e2xlZnQ6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLndpdGhpbixuPWkub2Zmc2V0LmxlZnQraS5zY3JvbGxMZWZ0LG89aS53aWR0aCxzPWkuaXNXaW5kb3c/aS5zY3JvbGxMZWZ0Omkub2Zmc2V0LmxlZnQscj10LmxlZnQtZS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0LGw9ci1zLGE9citlLmNvbGxpc2lvbldpZHRoLW8tcyxoPSJsZWZ0Ij09PWUubXlbMF0/LWUuZWxlbVdpZHRoOiJyaWdodCI9PT1lLm15WzBdP2UuZWxlbVdpZHRoOjAsaT0ibGVmdCI9PT1lLmF0WzBdP2UudGFyZ2V0V2lkdGg6InJpZ2h0Ij09PWUuYXRbMF0/LWUudGFyZ2V0V2lkdGg6MCxyPS0yKmUub2Zmc2V0WzBdO2w8MD8oKG49dC5sZWZ0K2graStyK2UuY29sbGlzaW9uV2lkdGgtby1uKTwwfHxuPEMobCkpJiYodC5sZWZ0Kz1oK2krcik6MDxhJiYoMDwocz10LmxlZnQtZS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0K2graStyLXMpfHxDKHMpPGEpJiYodC5sZWZ0Kz1oK2krcil9LHRvcDpmdW5jdGlvbih0LGUpe3ZhciBpPWUud2l0aGluLG49aS5vZmZzZXQudG9wK2kuc2Nyb2xsVG9wLG89aS5oZWlnaHQscz1pLmlzV2luZG93P2kuc2Nyb2xsVG9wOmkub2Zmc2V0LnRvcCxyPXQudG9wLWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLGw9ci1zLGE9citlLmNvbGxpc2lvbkhlaWdodC1vLXMsaD0idG9wIj09PWUubXlbMV0/LWUuZWxlbUhlaWdodDoiYm90dG9tIj09PWUubXlbMV0/ZS5lbGVtSGVpZ2h0OjAsaT0idG9wIj09PWUuYXRbMV0/ZS50YXJnZXRIZWlnaHQ6ImJvdHRvbSI9PT1lLmF0WzFdPy1lLnRhcmdldEhlaWdodDowLHI9LTIqZS5vZmZzZXRbMV07bDwwPygobj10LnRvcCtoK2krcitlLmNvbGxpc2lvbkhlaWdodC1vLW4pPDB8fG48QyhsKSkmJih0LnRvcCs9aCtpK3IpOjA8YSYmKDA8KHM9dC50b3AtZS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3AraCtpK3Itcyl8fEMocyk8YSkmJih0LnRvcCs9aCtpK3IpfX0sZmxpcGZpdDp7bGVmdDpmdW5jdGlvbigpe3gudWkucG9zaXRpb24uZmxpcC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx4LnVpLnBvc2l0aW9uLmZpdC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdG9wOmZ1bmN0aW9uKCl7eC51aS5wb3NpdGlvbi5mbGlwLnRvcC5hcHBseSh0aGlzLGFyZ3VtZW50cykseC51aS5wb3NpdGlvbi5maXQudG9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSx4LnVpLnNhZmVBY3RpdmVFbGVtZW50PWZ1bmN0aW9uKGUpe3ZhciBpO3RyeXtpPWUuYWN0aXZlRWxlbWVudH1jYXRjaCh0KXtpPWUuYm9keX1yZXR1cm4gaT0hKGk9aXx8ZS5ib2R5KS5ub2RlTmFtZT9lLmJvZHk6aX0seC51aS5zYWZlQmx1cj1mdW5jdGlvbih0KXt0JiYiYm9keSIhPT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJngodCkudHJpZ2dlcigiYmx1ciIpfSwKLyohCiAqIGpRdWVyeSBVSSBTY3JvbGwgUGFyZW50IDEuMTMuMQogKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAqCiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKi8KeC5mbi5zY3JvbGxQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jc3MoInBvc2l0aW9uIiksaT0iYWJzb2x1dGUiPT09ZSxuPXQ/LyhhdXRvfHNjcm9sbHxoaWRkZW4pLzovKGF1dG98c2Nyb2xsKS8sdD10aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgdD14KHRoaXMpO3JldHVybighaXx8InN0YXRpYyIhPT10LmNzcygicG9zaXRpb24iKSkmJm4udGVzdCh0LmNzcygib3ZlcmZsb3ciKSt0LmNzcygib3ZlcmZsb3cteSIpK3QuY3NzKCJvdmVyZmxvdy14IikpfSkuZXEoMCk7cmV0dXJuImZpeGVkIiE9PWUmJnQubGVuZ3RoP3Q6eCh0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KX0sCi8qIQogKiBqUXVlcnkgVUkgVGFiYmFibGUgMS4xMy4xCiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICoKICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqLwp4LmV4dGVuZCh4LmV4cHIucHNldWRvcyx7dGFiYmFibGU6ZnVuY3Rpb24odCl7dmFyIGU9eC5hdHRyKHQsInRhYmluZGV4IiksaT1udWxsIT1lO3JldHVybighaXx8MDw9ZSkmJngudWkuZm9jdXNhYmxlKHQsaSl9fSksCi8qIQogKiBqUXVlcnkgVUkgVW5pcXVlIElEIDEuMTMuMQogKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAqCiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKi8KeC5mbi5leHRlbmQoe3VuaXF1ZUlkOih1PTAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5pZHx8KHRoaXMuaWQ9InVpLWlkLSIrICsrdSl9KX0pLHJlbW92ZVVuaXF1ZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpey9edWktaWQtXGQrJC8udGVzdCh0aGlzLmlkKSYmeCh0aGlzKS5yZW1vdmVBdHRyKCJpZCIpfSl9fSk7Ci8qIQogKiBqUXVlcnkgVUkgV2lkZ2V0IDEuMTMuMQogKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAqCiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKi8KdmFyIGYsYz0wLGQ9QXJyYXkucHJvdG90eXBlLmhhc093blByb3BlcnR5LHA9QXJyYXkucHJvdG90eXBlLnNsaWNlO3guY2xlYW5EYXRhPShmPXguY2xlYW5EYXRhLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpLG49MDtudWxsIT0oaT10W25dKTtuKyspKGU9eC5fZGF0YShpLCJldmVudHMiKSkmJmUucmVtb3ZlJiZ4KGkpLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKTtmKHQpfSkseC53aWRnZXQ9ZnVuY3Rpb24odCxpLGUpe3ZhciBuLG8scyxyPXt9LGw9dC5zcGxpdCgiLiIpWzBdLGE9bCsiLSIrKHQ9dC5zcGxpdCgiLiIpWzFdKTtyZXR1cm4gZXx8KGU9aSxpPXguV2lkZ2V0KSxBcnJheS5pc0FycmF5KGUpJiYoZT14LmV4dGVuZC5hcHBseShudWxsLFt7fV0uY29uY2F0KGUpKSkseC5leHByLnBzZXVkb3NbYS50b0xvd2VyQ2FzZSgpXT1mdW5jdGlvbih0KXtyZXR1cm4hIXguZGF0YSh0LGEpfSx4W2xdPXhbbF18fHt9LG49eFtsXVt0XSxvPXhbbF1bdF09ZnVuY3Rpb24odCxlKXtpZighdGhpc3x8IXRoaXMuX2NyZWF0ZVdpZGdldClyZXR1cm4gbmV3IG8odCxlKTthcmd1bWVudHMubGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQodCxlKX0seC5leHRlbmQobyxuLHt2ZXJzaW9uOmUudmVyc2lvbixfcHJvdG86eC5leHRlbmQoe30sZSksX2NoaWxkQ29uc3RydWN0b3JzOltdfSksKHM9bmV3IGkpLm9wdGlvbnM9eC53aWRnZXQuZXh0ZW5kKHt9LHMub3B0aW9ucykseC5lYWNoKGUsZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBvKCl7cmV0dXJuIGkucHJvdG90eXBlW2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBzKHQpe3JldHVybiBpLnByb3RvdHlwZVtlXS5hcHBseSh0aGlzLHQpfXJbZV09ImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX3N1cGVyLGk9dGhpcy5fc3VwZXJBcHBseTtyZXR1cm4gdGhpcy5fc3VwZXI9byx0aGlzLl9zdXBlckFwcGx5PXMsdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj1lLHRoaXMuX3N1cGVyQXBwbHk9aSx0fTpufSksby5wcm90b3R5cGU9eC53aWRnZXQuZXh0ZW5kKHMse3dpZGdldEV2ZW50UHJlZml4Om4mJnMud2lkZ2V0RXZlbnRQcmVmaXh8fHR9LHIse2NvbnN0cnVjdG9yOm8sbmFtZXNwYWNlOmwsd2lkZ2V0TmFtZTp0LHdpZGdldEZ1bGxOYW1lOmF9KSxuPyh4LmVhY2gobi5fY2hpbGRDb25zdHJ1Y3RvcnMsZnVuY3Rpb24odCxlKXt2YXIgaT1lLnByb3RvdHlwZTt4LndpZGdldChpLm5hbWVzcGFjZSsiLiIraS53aWRnZXROYW1lLG8sZS5fcHJvdG8pfSksZGVsZXRlIG4uX2NoaWxkQ29uc3RydWN0b3JzKTppLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKG8pLHgud2lkZ2V0LmJyaWRnZSh0LG8pLG99LHgud2lkZ2V0LmV4dGVuZD1mdW5jdGlvbih0KXtmb3IodmFyIGUsaSxuPXAuY2FsbChhcmd1bWVudHMsMSksbz0wLHM9bi5sZW5ndGg7bzxzO28rKylmb3IoZSBpbiBuW29dKWk9bltvXVtlXSxkLmNhbGwobltvXSxlKSYmdm9pZCAwIT09aSYmKHguaXNQbGFpbk9iamVjdChpKT90W2VdPXguaXNQbGFpbk9iamVjdCh0W2VdKT94LndpZGdldC5leHRlbmQoe30sdFtlXSxpKTp4LndpZGdldC5leHRlbmQoe30saSk6dFtlXT1pKTtyZXR1cm4gdH0seC53aWRnZXQuYnJpZGdlPWZ1bmN0aW9uKHMsZSl7dmFyIHI9ZS5wcm90b3R5cGUud2lkZ2V0RnVsbE5hbWV8fHM7eC5mbltzXT1mdW5jdGlvbihpKXt2YXIgdD0ic3RyaW5nIj09dHlwZW9mIGksbj1wLmNhbGwoYXJndW1lbnRzLDEpLG89dGhpcztyZXR1cm4gdD90aGlzLmxlbmd0aHx8Imluc3RhbmNlIiE9PWk/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQsZT14LmRhdGEodGhpcyxyKTtyZXR1cm4iaW5zdGFuY2UiPT09aT8obz1lLCExKTplPyJmdW5jdGlvbiIhPXR5cGVvZiBlW2ldfHwiXyI9PT1pLmNoYXJBdCgwKT94LmVycm9yKCJubyBzdWNoIG1ldGhvZCAnIitpKyInIGZvciAiK3MrIiB3aWRnZXQgaW5zdGFuY2UiKToodD1lW2ldLmFwcGx5KGUsbikpIT09ZSYmdm9pZCAwIT09dD8obz10JiZ0LmpxdWVyeT9vLnB1c2hTdGFjayh0LmdldCgpKTp0LCExKTp2b2lkIDA6eC5lcnJvcigiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiK3MrIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICciK2krIiciKX0pOm89dm9pZCAwOihuLmxlbmd0aCYmKGk9eC53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW2ldLmNvbmNhdChuKSkpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXguZGF0YSh0aGlzLHIpO3Q/KHQub3B0aW9uKGl8fHt9KSx0Ll9pbml0JiZ0Ll9pbml0KCkpOnguZGF0YSh0aGlzLHIsbmV3IGUoaSx0aGlzKSl9KSksb319LHguV2lkZ2V0PWZ1bmN0aW9uKCl7fSx4LldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnM9W10seC5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLGRlZmF1bHRFbGVtZW50OiI8ZGl2PiIsb3B0aW9uczp7Y2xhc3Nlczp7fSxkaXNhYmxlZDohMSxjcmVhdGU6bnVsbH0sX2NyZWF0ZVdpZGdldDpmdW5jdGlvbih0LGUpe2U9eChlfHx0aGlzLmRlZmF1bHRFbGVtZW50fHx0aGlzKVswXSx0aGlzLmVsZW1lbnQ9eChlKSx0aGlzLnV1aWQ9YysrLHRoaXMuZXZlbnROYW1lc3BhY2U9Ii4iK3RoaXMud2lkZ2V0TmFtZSt0aGlzLnV1aWQsdGhpcy5iaW5kaW5ncz14KCksdGhpcy5ob3ZlcmFibGU9eCgpLHRoaXMuZm9jdXNhYmxlPXgoKSx0aGlzLmNsYXNzZXNFbGVtZW50TG9va3VwPXt9LGUhPT10aGlzJiYoeC5kYXRhKGUsdGhpcy53aWRnZXRGdWxsTmFtZSx0aGlzKSx0aGlzLl9vbighMCx0aGlzLmVsZW1lbnQse3JlbW92ZTpmdW5jdGlvbih0KXt0LnRhcmdldD09PWUmJnRoaXMuZGVzdHJveSgpfX0pLHRoaXMuZG9jdW1lbnQ9eChlLnN0eWxlP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50fHxlKSx0aGlzLndpbmRvdz14KHRoaXMuZG9jdW1lbnRbMF0uZGVmYXVsdFZpZXd8fHRoaXMuZG9jdW1lbnRbMF0ucGFyZW50V2luZG93KSksdGhpcy5vcHRpb25zPXgud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMsdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLHQpLHRoaXMuX2NyZWF0ZSgpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQodGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl90cmlnZ2VyKCJjcmVhdGUiLG51bGwsdGhpcy5fZ2V0Q3JlYXRlRXZlbnREYXRhKCkpLHRoaXMuX2luaXQoKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm57fX0sX2dldENyZWF0ZUV2ZW50RGF0YTp4Lm5vb3AsX2NyZWF0ZTp4Lm5vb3AsX2luaXQ6eC5ub29wLGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgaT10aGlzO3RoaXMuX2Rlc3Ryb3koKSx4LmVhY2godGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cCxmdW5jdGlvbih0LGUpe2kuX3JlbW92ZUNsYXNzKGUsdCl9KSx0aGlzLmVsZW1lbnQub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSksdGhpcy53aWRnZXQoKS5vZmYodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3Mub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpfSxfZGVzdHJveTp4Lm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHM9dDtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4geC53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlmKHM9e30sdD0oaT10LnNwbGl0KCIuIikpLnNoaWZ0KCksaS5sZW5ndGgpe2ZvcihuPXNbdF09eC53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1t0XSksbz0wO288aS5sZW5ndGgtMTtvKyspbltpW29dXT1uW2lbb11dfHx7fSxuPW5baVtvXV07aWYodD1pLnBvcCgpLDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1uW3RdP251bGw6blt0XTtuW3RdPWV9ZWxzZXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zW3RdP251bGw6dGhpcy5vcHRpb25zW3RdO3NbdF09ZX1yZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyhzKSx0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdCl0aGlzLl9zZXRPcHRpb24oZSx0W2VdKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiJjbGFzc2VzIj09PXQmJnRoaXMuX3NldE9wdGlvbkNsYXNzZXMoZSksdGhpcy5vcHRpb25zW3RdPWUsImRpc2FibGVkIj09PXQmJnRoaXMuX3NldE9wdGlvbkRpc2FibGVkKGUpLHRoaXN9LF9zZXRPcHRpb25DbGFzc2VzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtmb3IoZSBpbiB0KW49dGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cFtlXSx0W2VdIT09dGhpcy5vcHRpb25zLmNsYXNzZXNbZV0mJm4mJm4ubGVuZ3RoJiYoaT14KG4uZ2V0KCkpLHRoaXMuX3JlbW92ZUNsYXNzKG4sZSksaS5hZGRDbGFzcyh0aGlzLl9jbGFzc2VzKHtlbGVtZW50Omksa2V5czplLGNsYXNzZXM6dCxhZGQ6ITB9KSkpfSxfc2V0T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy53aWRnZXQoKSx0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLG51bGwsISF0KSx0JiYodGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5ob3ZlcmFibGUsbnVsbCwidWktc3RhdGUtaG92ZXIiKSx0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmZvY3VzYWJsZSxudWxsLCJ1aS1zdGF0ZS1mb2N1cyIpKX0sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX2NsYXNzZXM6ZnVuY3Rpb24obyl7dmFyIHM9W10scj10aGlzO2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIGksbj0wO248dC5sZW5ndGg7bisrKWk9ci5jbGFzc2VzRWxlbWVudExvb2t1cFt0W25dXXx8eCgpLGk9by5hZGQ/KGZ1bmN0aW9uKCl7dmFyIGk9W107by5lbGVtZW50LmVhY2goZnVuY3Rpb24odCxlKXt4Lm1hcChyLmNsYXNzZXNFbGVtZW50TG9va3VwLGZ1bmN0aW9uKHQpe3JldHVybiB0fSkuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdC5pcyhlKX0pfHxpLnB1c2goZSl9KSxyLl9vbih4KGkpLHtyZW1vdmU6Il91bnRyYWNrQ2xhc3Nlc0VsZW1lbnQifSl9KCkseCh4LnVuaXF1ZVNvcnQoaS5nZXQoKS5jb25jYXQoby5lbGVtZW50LmdldCgpKSkpKTp4KGkubm90KG8uZWxlbWVudCkuZ2V0KCkpLHIuY2xhc3Nlc0VsZW1lbnRMb29rdXBbdFtuXV09aSxzLnB1c2godFtuXSksZSYmby5jbGFzc2VzW3Rbbl1dJiZzLnB1c2goby5jbGFzc2VzW3Rbbl1dKX1yZXR1cm4obz14LmV4dGVuZCh7ZWxlbWVudDp0aGlzLmVsZW1lbnQsY2xhc3Nlczp0aGlzLm9wdGlvbnMuY2xhc3Nlc3x8e319LG8pKS5rZXlzJiZ0KG8ua2V5cy5tYXRjaCgvXFMrL2cpfHxbXSwhMCksby5leHRyYSYmdChvLmV4dHJhLm1hdGNoKC9cUysvZyl8fFtdKSxzLmpvaW4oIiAiKX0sX3VudHJhY2tDbGFzc2VzRWxlbWVudDpmdW5jdGlvbihpKXt2YXIgbj10aGlzO3guZWFjaChuLmNsYXNzZXNFbGVtZW50TG9va3VwLGZ1bmN0aW9uKHQsZSl7LTEhPT14LmluQXJyYXkoaS50YXJnZXQsZSkmJihuLmNsYXNzZXNFbGVtZW50TG9va3VwW3RdPXgoZS5ub3QoaS50YXJnZXQpLmdldCgpKSl9KSx0aGlzLl9vZmYoeChpLnRhcmdldCkpfSxfcmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLl90b2dnbGVDbGFzcyh0LGUsaSwhMSl9LF9hZGRDbGFzczpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuX3RvZ2dsZUNsYXNzKHQsZSxpLCEwKX0sX3RvZ2dsZUNsYXNzOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBvPSJzdHJpbmciPT10eXBlb2YgdHx8bnVsbD09PXQsaT17ZXh0cmE6bz9lOmksa2V5czpvP3Q6ZSxlbGVtZW50Om8/dGhpcy5lbGVtZW50OnQsYWRkOm49ImJvb2xlYW4iPT10eXBlb2Ygbj9uOml9O3JldHVybiBpLmVsZW1lbnQudG9nZ2xlQ2xhc3ModGhpcy5fY2xhc3NlcyhpKSxuKSx0aGlzfSxfb246ZnVuY3Rpb24obyxzLHQpe3ZhciByLGw9dGhpczsiYm9vbGVhbiIhPXR5cGVvZiBvJiYodD1zLHM9byxvPSExKSx0PyhzPXI9eChzKSx0aGlzLmJpbmRpbmdzPXRoaXMuYmluZGluZ3MuYWRkKHMpKToodD1zLHM9dGhpcy5lbGVtZW50LHI9dGhpcy53aWRnZXQoKSkseC5lYWNoKHQsZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKCl7aWYob3x8ITAhPT1sLm9wdGlvbnMuZGlzYWJsZWQmJiF4KHRoaXMpLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpKXJldHVybigic3RyaW5nIj09dHlwZW9mIGU/bFtlXTplKS5hcHBseShsLGFyZ3VtZW50cyl9InN0cmluZyIhPXR5cGVvZiBlJiYoaS5ndWlkPWUuZ3VpZD1lLmd1aWR8fGkuZ3VpZHx8eC5ndWlkKyspO3ZhciBuPXQubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLHQ9blsxXStsLmV2ZW50TmFtZXNwYWNlLG49blsyXTtuP3Iub24odCxuLGkpOnMub24odCxpKX0pfSxfb2ZmOmZ1bmN0aW9uKHQsZSl7ZT0oZXx8IiIpLnNwbGl0KCIgIikuam9pbih0aGlzLmV2ZW50TmFtZXNwYWNlKyIgIikrdGhpcy5ldmVudE5hbWVzcGFjZSx0Lm9mZihlKSx0aGlzLmJpbmRpbmdzPXgodGhpcy5iaW5kaW5ncy5ub3QodCkuZ2V0KCkpLHRoaXMuZm9jdXNhYmxlPXgodGhpcy5mb2N1c2FibGUubm90KHQpLmdldCgpKSx0aGlzLmhvdmVyYWJsZT14KHRoaXMuaG92ZXJhYmxlLm5vdCh0KS5nZXQoKSl9LF9kZWxheTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4oInN0cmluZyI9PXR5cGVvZiB0P2lbdF06dCkuYXBwbHkoaSxhcmd1bWVudHMpfSxlfHwwKX0sX2hvdmVyYWJsZTpmdW5jdGlvbih0KXt0aGlzLmhvdmVyYWJsZT10aGlzLmhvdmVyYWJsZS5hZGQodCksdGhpcy5fb24odCx7bW91c2VlbnRlcjpmdW5jdGlvbih0KXt0aGlzLl9hZGRDbGFzcyh4KHQuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtaG92ZXIiKX0sbW91c2VsZWF2ZTpmdW5jdGlvbih0KXt0aGlzLl9yZW1vdmVDbGFzcyh4KHQuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQodCksdGhpcy5fb24odCx7Zm9jdXNpbjpmdW5jdGlvbih0KXt0aGlzLl9hZGRDbGFzcyh4KHQuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtZm9jdXMiKX0sZm9jdXNvdXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVtb3ZlQ2xhc3MoeCh0LmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWZvY3VzIil9fSl9LF90cmlnZ2VyOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHM9dGhpcy5vcHRpb25zW3RdO2lmKGk9aXx8e30sKGU9eC5FdmVudChlKSkudHlwZT0odD09PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg/dDp0aGlzLndpZGdldEV2ZW50UHJlZml4K3QpLnRvTG93ZXJDYXNlKCksZS50YXJnZXQ9dGhpcy5lbGVtZW50WzBdLG89ZS5vcmlnaW5hbEV2ZW50KWZvcihuIGluIG8pbiBpbiBlfHwoZVtuXT1vW25dKTtyZXR1cm4gdGhpcy5lbGVtZW50LnRyaWdnZXIoZSxpKSwhKCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYhMT09PXMuYXBwbHkodGhpcy5lbGVtZW50WzBdLFtlXS5jb25jYXQoaSkpfHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LHguZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24ocyxyKXt4LldpZGdldC5wcm90b3R5cGVbIl8iK3NdPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvPSh0PSJzdHJpbmciPT10eXBlb2YgdD97ZWZmZWN0OnR9OnQpPyEwIT09dCYmIm51bWJlciIhPXR5cGVvZiB0JiZ0LmVmZmVjdHx8cjpzOyJudW1iZXIiPT10eXBlb2YodD10fHx7fSk/dD17ZHVyYXRpb246dH06ITA9PT10JiYodD17fSksbj0heC5pc0VtcHR5T2JqZWN0KHQpLHQuY29tcGxldGU9aSx0LmRlbGF5JiZlLmRlbGF5KHQuZGVsYXkpLG4mJnguZWZmZWN0cyYmeC5lZmZlY3RzLmVmZmVjdFtvXT9lW3NdKHQpOm8hPT1zJiZlW29dP2Vbb10odC5kdXJhdGlvbix0LmVhc2luZyxpKTplLnF1ZXVlKGZ1bmN0aW9uKHQpe3godGhpcylbc10oKSxpJiZpLmNhbGwoZVswXSksdCgpfSl9fSl9KTs="}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/nunito/v32/XRXV3I6Li01BKofINeaB.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.907Z","timestamp":1785145485907,"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/nunito/v32/XRXV3I6Li01BKofINeaB.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://betaroi.ltd\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: 39128\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 10:29:09 GMT\r\nexpires: Sat, 24 Jul 2027 10:29:09 GMT\r\ncache-control: public, max-age=31536000\r\nage: 256536\r\nlast-modified: Mon, 15 Sep 2025 17:03:34 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":39128,"size_decoded":39941,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 39128, version 1.0","md5":"166202cc391c71a57730bed12cbcb159","sha1":"76388dbfe374be06fdc6f9ba38d3f4e479025eeb","sha256":"ba344451eab25b217a165363b1982048a5e5830a0daf36577973955a04cac793","sha512":"9f4d1c14aa729e837b964898a1dd27e99ff674256c43326aa982cc0c17fa8b0d71a0b7df627f03cb4ac6ec7f22f0a19d65302743ff09187ce81414dde74c43e2","ssdeep":"768:lxbc6Qon+A9wOfdj2rELqjOmaLqLqKeI+00t0xIj:layndm0j2cqjOmGq+tbUIj","tlshash":"d9030284fd6a02d8c7fc1f6ef25a9f28272c2078440b6a9c44a79a6bd5975f84dd3330","first_seen":"2025-09-17T01:48:11.920934Z","last_seen":"2026-07-27T14:15:49.505533Z","times_seen":40913,"resource_available":false,"data":"d09GMgABAAAAAJjYABQAAAABUqwAAJhmAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoQAG/5SHIouP0hWQVKGVgZgP1NUQVSBKicyAIUqL3QRCAqBt3iBjzgLhEoAMIKrKAE2AiQDiRAEIAWIAAeMGwwHW8M6cUCmw4KLu9ebVfX4cMz/iBWqWzo56s0yDp2XDxZwY5x2O7jfx1N/Zv//JyWVMTQtPmmh4H6POksahVxmj8GaYywIM8RRiBzq/YwaPfj5/cOVC/G/qbnF3vdpezAQtKK5dyGpXhhlCK0mZYWkQiZ6pcALkkNDb0oORTk0tCQ67V3miuZUjVrm+XHd23jx9Qpl6KgxDB02vC5Xm2huXHLElu/H9DxguifOryx9xY4jZE4leMy97zR6JjFHmFcQSYjFJE7ITI47XrsI2jqhScSamabXKLOf6/Giefk8bh0Qj82hSiRtrDjP9+f5uf259723t71tb8E2xgZjRY/siYAYRZTZWNh8ZJRF2YhZzArCL5FGof0b/VHGzB8bnp/O/1NYk5ubpCaRWkwbUWsjTSppaqkKxboVaAtsXgpFpfiYIGP4BtubwRhv+/9hMjf4onvrTXVvSJFwTyQY1Zgdy4n+Iarf73l79r4PiArYE2MSCwjlSTj0iUYNKAkOT/8d4t+Zt6lFG2CzWMAikhPwEAbEv/4deKfayyALECxLloljh1oeHOEDpHq6ffwcE75x2y3FpCHHPng36wfvlqWGeBEPDSZBQxCtQM3k9POeiH6duq63NF02ly9e+sSAOxRAwKBuZiJy9kS0MDPEPEYJlVAd3N++f9++Lcwt9PCMZvIzJnJFhtiQIStDftRZ3xOQJRnjhIc+MLXXAlUERZvxh/K65uq7CpAHdzeZgFmCz/3CpqWB8gq3cIy4MzFrIv43aeXqGmvz03fVfxGRqCywWTXiBdB3nn+5gqZz78f38hfy7GyP2GI55cCJ/8upzcRJ4Y9UlDRFAkEaB2iZ3It1XHmXBSU2rwNkoCAq8uvpusPntE8ZQoOZz7RFplu7x6JKdFrmYQoZEseWQYhPzAPvaZ9R7nb3RP0paQp6SjuAlQbmQSZ4OPa+H9HUrbGZJugB+oqggLHBnENOWQD/VzazdPu62oA7J4P0qDVj+shB+kkizWq1NxqNZaDdORlYJ8OBiUQ+fIYQAGX5ASgEDB3kDp+zHCgIgs+jDyP6+1K1rg2Jj4LzJ51+b/zc+Dmx5a25hxSOPhw3NkC02IAoTQNU+A2K1gckqhpQqAYlulrQcGsIQoGyvGVp6YmaAA8nhPwAka4PyPK00g4mc0JMsjbFcNx82tt1j3u5rpX7+TbJigKhrKpXeSlcaHqFjyQB7UnV3haQhAsOIXR204nOdaxqcPYtHrhckPnE450uxMi3wOoAiLLCj/p3zrEMuXLRdvYv3boXiCGTmcL/2/Xy5OVl45sF601F54CNcT//G1+qFmTB+hdaMKxw4X8z0fdl6aWHhTGkhBBEZMf5zrdynrQ97sxeIQRjhFGNMMIYrxvCkB5fQ/7qe37//zr9+Jn7PM+x1ahRFVUVEbFE1NnWMgPB40xhVqSAlULw8dvbTLaaPdfidiEvZoXn/zG1DOzN5b3Ua4xMlSV8BBWp76ACpmtmL9hQ/2yfAimkXrLUWGHa3rnp9yU/+WERQgixFmshy4rLOTP3FQBCSABACqAOwG1cmJYYgn1liRQkInoc2Ix7gRFgekOMhUQjYkYGi5WiVzNERIpcHVLkGZWigC8yxVeWmsfmA8InnxH+DQVEaMQHIiLkiIghBgiCAfgBEMAofWcIkEAhO7wDBIUKA5qJ3ABNBmhkrlYijZLeiwjAhrU2b7dlp607dQKAAaAY+tOV0+sf7ckjY2HhDuP/O/x/eBadxZfJdXonW+VB4UhEE5bynBfCKBUMEC5dJ48pZsTey5xKFnAtrAhFJGK4KWOkjcyizSBDZ7E5bB5fwBfxLjFLdIkeeYw8Ts1SJ6iTtEXbtMMYdZkASFkIOYueTc2m5ZByLpSey8hl5rHy2HmcfOaJW8ArLCoUFApxYrykiF6kKlaX6ksNZcYyE4lOUpHMVBfNQ387AsHFv++EKCkVyHr1AqegsbG2pUCxu/IkNFRrQfc0ywzCR8GABSJAJFpc9dcAOadXhgJyrkBLAzlIAGC3i6zGxOVvQwPkt9ciQLgqzyUgB0i2SuF+AapMDYzLkQQEQIAzSJLp57DdoiCZ0XlE4xFVWxOAOHnSDZYQfv/kWh0iYOt8dDBAPcYgvnDg9nAGvHee6G319Fw6ShxFt14ApqUFlb1ttgL2zOPfAM3h/jK0kgrruFD//lFf2n+YnEZ+dDEKzROAA/eK1lI4DCI/A2AAEKAIELFnw7yzBJQ1mHMP8bmq82akdt4EtBRZMBPpQh48benrAAPr9EvISeSSJ7O3YyMyivQhdUgJzqciCZeWhYQQ//zU/YToR1xDXEGcQbyO2IXYgHjpUvoMog+RQETyeh6ECaFA8BFUBIFLyUJA2cJcf/xbb9t40nX38nOP3bNqYev8ZGthDM3FNTu04eEd2PfOrmXnHLPHrVJab3zb3ATfvZaCV62a//mhtBUAEH/Pa0B8Ny/sNt13W+cKzY7NntkypbNyFszrmc6lZc6wSRiKAPNvPc/RjGwYAvDvfdUXvdnWnuux1nZtF3Vmx+PI6R1Sc8Nqqr7SYvTpsvGv9OdZvzd+KevhgqX5899B8P299L8vt/8WWcbzLB6YKjZ57996EyJw/B8gzpmlnf4Zux6ys6hTeEv/R7ZZG+CH19nHFtBSJD3FSJMQVfFrXhLvDgFuJiGuAN9wgMxGQa3C2NkfIOgj/uANbrPZABrob4qZPoVqpE+pk8xC+pDE0gm10um8irJIzj0tZ57fBRGfUzZ8nGAPmXgXYisNU6mUEMkzea2vLwh57rWTDylTh1TKXxdB0DVQV69aMp1/aw3GxXkwC0EON/pXa4KQ1kM8tWftbyYHgevuFW1x4bQdbOFCw0ZhtcSJ7qnClDwlh8dMAwLv/Hduy8v3hK3nhcBnb/tfyxcOq0Mp8tlnQFDqdHg3r1cAfnMAwLM7EPdQ/2ue8D0FPAk2OUXYWDuTHDWgMhhmta1N13lMq0TkhCor+S6Ny04Bfy229MxKRy+Rxx+7y6BZJG/nQYD7AND/vXlnU35yFEehoFzwE7Wf/PvAfBtk2eMHmPBEPosFZ/jAosXz3J8hPSWdHSLO+78mWxVMY/ut/3jA3XlneZULaHh+fYqgD8DfTxebMbFdnImfcEI0Q5MTX3e7zsiSJsd7alYOQFii4zpUzPGw6xrsTYhuviWFnvEaUQ80ZqFBTK2h5XMEgH+U0xzPwCu6k1oKginFpHbVhc22fdfNr+cmlz4Av/G9eWe5la79xCFuM0PELUpxM7UEqPRDIXyR2zj30OHOD5Sg4xJn1GmWPuD3KkGGzzAcxoHYx2xUoAWDMnl4vu8vQQSw6Wkmsn1UOVJL15KRJoBTBgAShYBsvij0zcGJKBT9rVAG48KL/4CB530BE+D/me/3EC3AdKGXRcN8MT3TXfRKpasc6aMGQ263P8c/9WSRksR1L+TMh2+66dRuRfmts08hzKS0jClNlnh60cs1FbdaOCSjfNQ0IxvNu8vmUz+XoGuuO9NOe4akL61zxMMB7f+vt03fvI8C+CbvE9D/rG/ODvX0c/Ud6sswTeN8ws2e8bhlcPUkbcW4lyXv1r/aX5vg7jfrJb56qPjgQ/nl0xdk+NfmKjdFhX+FH3i30qTl3sA/544+6lFoFN6OvCWkLPN/Jv9eXssL7jlg7A3wv29OzSn+Al1vZKk+XOh6xrmOrT6eRs2R9T6VtHo8fq8ZhmkyJynPw1H7CtlkGjn+Wxf+1x6osXjKEoR61+xcLWXOybaoe7M7v8N6T5fyms+5aHlukBlpw7Oz4Q3JGrbtmc8UJzL4GknWlVGXtQO6052cJPf1UfHop3865jw/PKRZvOHd2BFy7N1lr5akCu3Afby/NbSZDtegzHhSeLYWjWHJH/3ILOXUdUd91YXGmYgGrOwhKGNyr03YZIYm9O5zUI6z+OwddYE6Jxwqrn1wUB7Tkwx7h0wyJLib6Mc1Euec9HQ+coizHNBPZo+W3+8h4tj969t42NafNeca9Svwxklrv4+lNJp4Zb58L2O/+Q6e8RW1mHliOwMpa878stFKa3rd1bSQuadHsk13K57NMlRWrk27QVbPGc87Z2rpHqvEqlDjb736S1GeM68uT0KvcwjFgqQd+0uP5ue2ifr16+/YGJyMRHPDDGGPg45Zx94MAzJmXJnVVDWOE24L0rPcopJforHiDq96FYvuNUmaiaQ43719wY3LfZIx5apcJcoojYkk4UAby0ZbC1q4l3PLgprgW0hJ6+cH1eqzxIRC5670vV3TNGW+FrZt1BFeuvxFDVZyLGw9oLBvywQW5XtA8DPt074rxDO3p2nfrsmgB/R0crv4qE6UOzXSP1cYI8u4Pl3WiLsXZ+AcI/pEqkryLTuftGq10bK4t1035jHYbCqM4oMhaYw3l3pYDt0uL6+1uEdTw4ZDddIfbz19b9TIFTBzcvFvrB4/I++yo/kxykYcYLy0fC17U/jURAb4M8IKidvu1VebPKykQ738MLjir4Ev+MxPw9zYUkAShVokfs0L2dxy2CX9N+ViRKwcXSJ0GKwPV5HwhnRS/PISLMsAMiDHS3H63Q3PTN+B1bBHs+VhKKMmzvXBqMD2pXEQb4Ir7jo0KjVlzxXEyLQOc3OL8NFJWfVfBiMf7vRohWabV5DekfhN3vuZny9/yBf85yask9FkqvXay2Ldcegj2JM9NQmrtyMpE2eSdWqehQ1kRk+8sgZM1i+LESZL3bdUTtYEvXX6BvSRszDVL6G8Pbw1MlEPhb0LxQQKeQ36eowh5DrLlap1A3kjfZ4jX+5SCpczBKepcuzH6MO9KN7RvioEeB/TLkKhKURyFXMn/SRMlaVyzi2EKnfyKpEpkvYfSdqnL+rY/22EvGmJnlEUS9EJ6x7LEElw/iX7mwz0GrXdyR4bj4uTrZEDbd70T6DwDOcOfBRS4wMyyoIbIYA74GKifV3WLnnK5UrO6tb+JDlnWouO31Mn0aV/hCE5LJG+lCt128Fclc6sftTkyDT5w3ni4GdJeiIJGoWjVMnNbh9WyZFzxyYZF26FdeZKT1D2pqdXqr32cP1m40xJa6cBzzXstykDRLOAc4TlqCcuJa3IZr+vTyRPgXYS6ZrI89wWXuRHcEDrtjXxlec5Z6IP6cGtneEjc2fHI6xvHGmYy8k7/jDXzHz8WX4EuEPvj3KgN0uYI/7Iu9V5O/cD/qeM0v33cQWkIyjI1e4uR9GHLZcVCmR4ZPjZtd8rFqdH5chdnvA+IeEqcyMvrkRs5kQmcF/hTAat8qjjvniKtC9Yc/RlqYpdR5t73inwaY2ziPpgm2rW0w7BHQmCQft5F4OyOF5+OWeSX6Z8EKrptOhju/eXUA024sbCOTmAlQmye3kqZ8v84znPXo8K8dYc6XepI6CHrB0cN8CLK650pHSqDW3uEV67MD8EqdTl4ocGL1dQo57O3VqO93LsErBe4c2FHYwnyXWmCI5wPGNyOUcxiMDM2PGlPKZELI2SujXwFuOLqAGywSvT3dWm6TW54y9T7l3ML7l3T2xDR+zLtV60TnZsirKxR3JroTlECV7ZW7rFfX4ZvO/uu3LvHomiPHjP7SdRGeu2PHvUxVDUQXeaC/OwkzNkSVN6m2L7uReLNuBEaJNxAiWOAX1sYzyICIKDiTT5nLmT2JV/+PX2T46oabBPcF/miOYMDoHLGJ3HyLAvbR0oy9Rp9CB9Z4ua2/t4lwaW0U7rlQqinP/1ziRqggfP3313sa7VimxT8bJFsycrwDogPczfGfeoVT3TE1zPkhoYKImerCHHir/JQ0rhW5Oti6M+optnss927EK9o086BfrLVKn+vtRvf/eJF62F1wd5Kv+fXuFrRk+5n7C/smhB2Lvbl8ajgJni3i/vJHisGrRzJ3Va98I5TysDvxWFWtKnHPQ+M5Gavvx7RKPc/XmNJie+/688/fnrnsezP/CzA3fr56oLRmKJMBovGTHnsWdfjzZHPz12ZFwn9iHsHXZeB3xLhm9Z7idktvscV+AN3py7c7bqMBdLZ+0xfsEVggTuMlp1u5pcoezB+RpetpulJ+wwbtErl0rg+Slp+Zn60m+HvQu2ACG3oUlW7mij6GdhV3seh2zEjniHn9uGqdAYtul7R2IOzOOdPV+TdYu4R0RjIsmfw9XAf6CA9+4dfVh3iiptTACJXaKFXI6PQk9bYo29VtjhiBJWV5Rr0GiTZq22aNepTrdHdnviO/XeeusCDN0LsBGYfS9qSiU30KpNIxNcp5Ixk2Rq0bhM46nCJBEyJIZvQI0KbFajnGw4xJQUfDSEVIpOQeilIIWUkma7AoFA86zfoRhGHAXOF7V2EnPJVa5jiHABEqbDNx3gfH+837QMCcGSQ8j+HCRoYjFHXjVX8RchYCGLvgIv4I83vBgGIGck12abOuZJQipQl5Ny58GbD6EJA8yXUQmRkVJRBip5hnIk7czlg1AwPkHPiwmh/bjFAlPypDm0bbmy79AUpugp7ESKwhW9OfZyjYqBZG2NKEPxYWJTKQElBqBmvoTMmaotrhc+OswJmeKQFwI6QLYmMVDDAffImHHgBw4jwwoltxZ8AlH4lpgbsByQPI8LOBpePjlnEi4CYzkXQYKFiyAy4a8NIwUAECHjQgcuEMUylJb4eHDmoxhG/BB2c30vgbHT9idKZgJA07EEZ26FK/JXRvlpjXA4vPJEvNqzd7U6hYF1Tinn+LwQDZMUAZWCQsIiqkRVGzBo2IgFllhqo32sTjnrohatu3B0eD1wc8tGSVEAWHAOjwGgiqYwgBYggMQsUtOOuihFwZJ9zZHtq/OkCmjSTe0bAmpboSQAMvlfMICVGMQQhPUokVXGgNXYip24tHaeyF0vilTYQi0HpmI6ZmAmZmE2jsGxOAvn4erXc4HGJlcwKrTxVK7jgl1G78ExuoE38ZaF+d0LOBjJP5+nM/RkQcAUq7CBXRFMjXIbeBNvRUA9BiGG8SjBfMzHfMzHfMzHfMzHfMzHfMyH/Eoyec5LlnQR+I6ex6GcpAFZBjJIxWixVCymYvSGAIzayO6mxxEaecJU81d/NgSI21ZIKOi9p5aXivvrcaAJ5Ai2zYuPjiYO9AmbPKT7oTPaN7PLGCoWcE5jdQGUlzs8o3EVTP93Bs8DBleYBEHrCscKqFww1zRxzVYNgDkaEykA0shFHjg0JbBExAzCBPHeKV5fxrErnZAZbF9PlIkt32dbcjPMyoXEPdKE6NVk1hZxAhSy3xDJlIYTeFhKFQ4TB9s3T6HIASukTgMogngs5OC8mEZGf+WcfgrXXqmMtQDnTntzrMWzpGpajvQRiGvpfMxd/P1M0j3SKcqkcLbCVoCEc8qRUcIPmLHdtOU+Q81pr+IjNlxBhkkGyeCQYhtciVfutiX2BGwaufQ1gGhQA3wci2MXMsg8EbayJnrKbEYqkDlL59UQjc6dY3xHyv071yejoJapxs+/B0eFRSIs2KSIW2UXbjI4DJJ9GY0UKb4I0oBDxCixOzMrvK+tuToDB30KCrKFmOszd2E/KAD/dfO/01/5geV75m49m39fiX4nSbhVZHBYYM80F/FOmThQcSSRxiGyyKOI40CO3S+FQArIct73p4AGIDepZ/MB85PPIf+G1Bi+/xFRC+TiEedOLE3USQajpE4GIEemWCNGStJePdLc+sqZ2MFN4a0RwxGlgNohzrpwjgYyplowJSF/WkSlt1BwIHbP7nBqlaku+c+0PvEP+7umiDEAjldLiEWCR2f52DIMocjx45QzkqKPrM8w3HiH50xdpngkww9IIgCmUnVkVwtzxh3qzITvx9MdsXIBIcOXCOXD5cieAYLz1BaUUkV0I4tJ+BJtKaC1zgaV39tJTB7AMKARzOAECYeniOxVuUNu/CqcUO5vUhGHWY1xvok1UFnA3XpwhwqIqVTDD2L2jAitF4tzJGqasCccKiUFd/9Vh7W8sEAKUcIYRHv83UnDKwSAXABUAGQQAADp7eBTGcCywjMrTa4xtcaLG7y00fRm67bas8f+/d484uJp757xwTkfX3T1oquX/O86PQAYAIoEUyKUMdIhukSPOklbjM+6rM9FfHR2j7om1eWm0lQ7Wk8f6ENjZGXmmjWz10sirD/BJ1IavsxMspCsZDvFQXFSPTQHzU3z0L10P2P+URxgVDBDrEpWkB1hV3Gi3GpeDb9OkBA0CpulXfI+xaCmaRWc6HPdZIXpRgH8eLMBGDpz6BhC9A9DdhFSYMa0ISEvJlP7RwLOAP2Ywrv/zwFyeUzPAHoFAKBv2gJAi4AulTiTwGtshO/5mVkd+6vGE2teH05Kw1uUZAG12gxJAQCooBtorEMmIMI4JKqZhz9wXtgH2dC/L85u2c+7f39Cmx5AlF5uDcXRgZhyEPOJ6+8PuOjd1yAaoCT9RguKjz1BK4B33wgh13lLA+DiSFlCfM/I2sbdgqkAvlohf5EK/YswCkxam9rZZ30xiCAJHmF4RrRn2ntbtU3btUO7bY/sbaFep3ZZV1jJyDxNHWUf+qa2cTAQHcEdeGfLtn7mlj3M/qkD5hL9UrAjuzPHzdo/v0r+EPmDxxmaEPwt8p9AP45+6U3c2or+F/oF9L3ob9361t/dukBZxB4jyisGQLZba9Dr2eXrYPRyap0tej7bfLXHnXPfVT9656EHWrW54menNLNqcNoZf/rdHy7ogzD4hERk5BQHCs+n4UpLz5uJL7/0q0OFFa3vL0qnRl3eaIlarCQWNg5ePv414/XFVKtRKy6pTbsOXboLRzHU7X+jLvhWh7+dcN73+v3gpe88jsoTRW577Zqn0XruL4cdibO3HrkUnUMs7jhgv4Mu4sBI3NxbCzgk6/1BSk3JiQpLx52BkSc3v/KwmlFhoognXqov7z7EfYpJSCvJKyjqFL1fbdYYASFT2B/KtKAzLDErbhIbMUTv3wDYQsJNt3TrdUMPlGs0RmS4mNkXTSfgRy3xgyU3Wc0QGhFCzBPDjwwJgJ4dflQoAPRrdnQ4AMmhdkzoGRhEY8O9WMytD6Fx4eFpPxp/ETW7RRXM/jAA3vCpaUC94BZdHwDyawbKJ6rtK3IIsKLtHYqO3e6mJpKsfKSXP0ydGCYiJwKsMytIIJbW+WXfKThZwLvIimEtl3kZiLi+Te4KBCyydTtiZ6KBTrcun3SwoxdLsqiDGceSeWdHfpyWDJKgJOofIIf+i/nEgnqk+jDg8LukUN7szRJstbptk9TIVWyWXMNfyKO8uQvY9bxDjpZSiXSz/6yVcza7kgfYbV5Vch3LzOEFvEEd+iy5gGWOsCuXyuXBm9vXKUmkG7MavluMJxWrfKYWuN+Dlm2c3SgmYUaDeLs9epyqcGZNzhb2iGA+xGbBxmdhXti9xXOGGPGLnXo9WRYVHEddm3OInbs0WeB4rws4yCZHGp/DAnY8gj4vHzlBrmJX8DXGERSOrpGKSUy4DMO+Jpndx3JifL1WOquErJSgY9oRdo1go2u8Y6sgsuZsdpUJMXBYgcI/bSY7o5adyZzXTJV+ZlnEZ/CfGF4d4usT5PXMxnRd/6x0A7sud33LZlUStRuYpTkb1ItozpbV2pIITGC5XCJwiYqS+KanYcgW8c4BOb58AasOABa0RnMcu0Axluq4Yei6KWQc0GwbWesrjxW4Jy0r4U+/jkvZwoCsLcYW3uh2Hl9tUT2f9HBeb+9Ax48uK0BlE0OSCla5DluQ+mfEuup2mu0YdjFFoLv0vQGv016lB792iMl22fY5Du8hH1k36lz90g8Mg8u7hQ9hOZFa0FS1wWU87MkS8rHO9q5PSbHEYklmuoTOZM2B7Hub6D1mtUdzzTXo9EtSQoaqKk2MAbk7bufOKtmhK0B7lOkXhtfgf245NApHN4xsl2Vy9xOrPuVXjCRD6zeQm5yeoeGjW0zTsnx8evrOUJa5d6cme5k2lKThpuN2zQB60rXyGRis40xhW94x0zA2w/cLn5qWYy4Y3Me6fjeoBHpXBVSJesSVy92vJBCcv2xSNyrj8P574F4txff0O1RGSrn9Qdi1fLqp4pyrX1nkJW1ce5x+hphRwR3BM/4Yv29Lb9MpvIGgsWanAA7bUjU9pJtsNml4K0j9ZjB5krNpehJcpcqeTtSGHGMwy70n0+pgomDuBezXqSMTe02dPQRvdi6ModnxTtQsZLfZzYG6PzRoc9WBoa2cNRbQDqshPF8AkxcCgZrMGwqOvFHUdbmgoHeJDZ5zE986sFl4Bt9VkY745Dw32KE2oS9kHfyXE0qLuzFQNrbGqr/uy7zxPgpqKi2ZI0PHysSp1bjLoP7R1YA9L3+GaEvKqWy7zs0I3ZErvr6mUgthNRz8gCBy4L0RoRSLbX1Tfl6+j5v/UKa2SHl/Na45VgvIS+QcQ+nNC2tp/XpO13u3jP15q+G1BoX1mQudc5Je4w2vrhtv6bpp0s8cWeHIxhLge0O+oKsiVGJDYARF9Qrm0swvTmFNyQUZidIU7rM0HbmixaWxpGkgRr5r1MwFudfTVrpmYug8iJzeL027kUOwugX/4OgVB88/z25NxgLpPAj4p3nk3LFA4AHyyGWFdMrhQNEydwkPmLXj95mgpWBiprA3DZBcT4itPf3NZeO7wF/ztnMBWuRQCfr9CpLfL4GyIuJVaEhEH26pHCGQlwNK0J/jo7AeqLbGzGMH1NcNabTE+YfO4Z4/xaLLW2FfGJMwpnCUPwvjiVub9BTh034M0vuTsSCzr2VdE/f5+04NRAFTTiDQX2xGfSoYMyP9Xjt8xDeF1Ul12zjyRI0GNp3ECQFlRK6TJUTUbZApWYyeVOpape4p/OExfeBuFuYHjolrWVBTPrG4u+xUhPXw+D78Max5K2ZG9KPhI2GDckV2kXosPDKIX7BNGU9klCsQG13BDz+Q8evC0pZUCL6KuWzjPYCS8BoeRH+EDm7Dpm4/U7lHjvVDV7PJrb5MBnSNuobcdkuu/4QvGXs36oi8USh0zVyU3WbPh5RYM2ze2r9pf7gwbQR/JJJMig0TPjiA4Rg7DQ0HExLB8XW4dWJv9ztsCT6f+/sxEbHY9pSgoINW/xWVEE7Gj4fkYCAvkPTFCFUko6yihbKj7FDfW4dPeLaVsjQLRqBJCkoVh3Rq3jfbqSVe3DeyZe162rD/yhElZtvBUY7extf3Tz9I9YO20jU2a2b6NCKI9coTq4q0YKP1Z+jj55i/s+3Jk86NlRGK8yVFM3FZ4mx9/wNwbQ2W3MFPTSU5zPfDT8a6XgfdH9WQOxbJNSh1XsYxVHq3YtTsOpE9v+B8f8pG3v3JIWZvdXUwvtVtPqIKL3rRrRInm4+plZ6P+XnDiyNBcftBmUrhiv4uTsfYWw8fBL2t68bcCNjxrQ6pWxt6gs6Wjdk3FL4GeLTg6CmkDbbDQ9KqG0j3U6nSrKd8hXGvzm0x9qAMGo3s0vzq8XYrKd1WspDMDlrEGZpYWwjntjzzk0Whl/hPHVYzB97027NBNxsI/1ALIHkjHYB98ajrBO92JNla4dJTsSRBArqhmUqkWfra11LBOAUZCguumyGoPLOkDvpzABjbVYqdfPAE7b8YaH/+8+dVZEbZQ2K1jXvDL8RNNMoi3UQ1/XB8XDVwawR6rdb7OZhQ5FCTtYvfv/PKdWw5KI8By//gAdJQxkmC58RveFEn0OpkDnl7c9fU0a38Dy+A/zX2NSrB48iuBFL6onDLtiVbBpNL472z6Di+6aarYTFVIf8vnuaPc9/zNiN1ciunwa7NBhv2ZoLtShuthWDapa5xrsiDniZxvrCVe+kzdG7SHsgh5y9LA+6IfGITfclTzf9JpXdCkuIjize8q68/QpYTo0vWv73BQlySq0qZgarBtGIwV2HGT4z8+ZyRNewq8Zs42RBfjO0HaN+jxGkKIF4hhvDRGizyK872jrhIacEcnxaYCoQPvVLwLm2003RtXxbyy0+wpyik/ZlMXnHvkCrlz8KaVcx3anjg4KKMdSPnHSsUulE/b6r0boiuv/XO86L1lr8dNqa9m7oGt6K2GGy6nbYOacKdUuLyllv6G8Uno3M0Al75l+KX1SbnghwzOpxM2/Y725PZI5BTtkjR7FiR+a3k6+oKS5/lbW6QGAldpbXexcK1/uFRHtGXCEE7IrWSpbB2l9IqIef6B6NfUz0uSei66LLdUkTO6sTkFxYGwUJGYqy7SCWxwhmHAYgxNNYamWwecdF1EKxTLfqSRetQbcHfr3mb+Czuq9p3WMVAyf45Ji+pG8WYeWzwSKJNDTsWJc1ebAyODRyOx9UwuTS6HowMfwVlnHNewor2KLPq8fc+dXzoREVq4f0V7UIDqVqTp5TrCwHsp5fGFobn/aa9XGW4Mtwo/VuFs7D0crJUuUQKEVRKiJt/lajUIirF26opzsSXytOOlWiDTWLUPJTVXmzo3+LLbjNvSCGnK7Xl6TPDfuKLp4NZLNX/uyeRDtASmRBokWW6Xjn3nmdTcEMY7vNGtpXCNIH7AovmUpTyYhFSuyzgQxczCQE5mDYuW7giW891X0i0UPJ3YuEwVt+B9oYbjbBGp+1lQToNUJNbRRnisE3YIu8z3h5LYjXU45DICKIuEnGD5Wd5OcP3gfJF3/+iPQDH51VXvVzlBzoQoHMsMyfTaPPRL86gQq5WGDahZ/B66imIR1l7dl6MIxnMNNzeU5MbYWc4/NB5Lgs9C9nb3TPF4ye3Kl4Zz/m2Dk8ti3xWubRBWfrZUp1nsOjjRVW5ZmJzuRe65Qy9u/mHv36o2L2NqQL+3pp7yOVlV96HzXp/xKKH5v4EMHToVirQ0tEbj7zP/73ptfTP/hNG/52fPVD56GJfxDiJz4Y4SX909ix8dbuJjwauXjxz4vU5JNvakDjq2/p9d1v7r7//75+/QOuaIpFdYIXgfczz40fjY1sDU+RXGb1hIzbNgYhEXbWD8a571HvV1TaXu9pafY/2abTGYbHW2KOfgkV0w6qQY2tPJWOZr3qg3GEaYEw0a5xrPh4aSJA0oWGH+rmm5saUryWkaiAvG/pojZPYdLyXMdBbd2bX0aMHQpzxcGQpp+Igdc7VS3O6KYOeDTMb1s4RyDF4L0qvh7tLY/UFMVa3Czapd8lpMzD0z5qmUv/1Wv3aQvAi3Tld6dzaN7JrtSxgzAUJzpkzwT3J07xseH77i7KGnG2vFR6A96FQe+Ez8D44F3IG6ofzwQAFz8Fb0cIc1qNlX8iuya0QG57W8IUBXt+Z3BrPfmHfKQix8oV5A2qn5p/L8wPcBpeZReZ07POaNTO/QMwMYWissviFqpnivTB0fWixfR5HsZQ5OSfeZ1cm0aoU0WCNQjG2moVQM1KGlECTWidQ0OxwNmrwwVMFhBLpiUetlZSUFq7MgMW4ZAt6vW+59fZzeRPCQaFGU7JVEHKXJZM70Ucoum4q7NjaXclY5q3uLbfFV4bsWyLKXO6taWylVw461M81r53ctbTi7yxNM1N7wK4jR4/tn6qDYleUO+Q62dRX+l9x9VKdHsqAZ8PMRrWR9egT8OPuwdZEwojuTwvjACp4raa6wu+H/WuuWWb1yKc4kRdv+T+/Fg1sjaQvOHcpWxnnfc/q5+tO71EqMFGSNpvq1OJQM9s2B1FbFvV9ak2fQqL2SPo/e9VYqtxIZwRQjR/X1Xg9bvPJX/cxENOCqkxX6aMmt2smrelestTW2Og1SOyqioxEdk1WLOzklNl+CjuLDZ3Ud5s0rhVpzTvryhTKMJVv5SuMBmdaIrspp95nZZaabkdxgEzBc/DKv+EGFOo4TJ7k1N+Om20GbWgkGSxlLaZt1phlw8K+kZ7e3pGFG5rtb4uqFg1rgZtCf+EoWk9n7kSi1kqLN+YXbZTuQUErcLSLY1R8AbgUfNL5YFZxEI3ao3iwuejBeqff2kq7HeHhZsZxGL0xI5Un0WjGx9it1Tm3VyvnQBlvD8byd5j5Sh/B7kFCO613xZhbYutOCFqLjXylh/8OJ2P2oBCXLD+55T+5ky+BYgqeQ9fuml8bSZ9BQq9Zf7CJfrBxjw05kZacX7umNh+Yubuc2sjpZfnH0EquQl9oDpyLRe9X8BnNc1JYOrrENVbQy6DQGjoy9tH4BpWca2LTXOV9NqleQ7flDi07O8J2NkyG81lSK6XMrWbB64PwPduKnvndpAGPaL6TwtbRJR1j+d0cCquhI30fjW9UKfgWDtUnTDoUBg3DLuCTLpLPdnnMKGNOgaHZYgW+yUWswqAkFbUP3UJp/kNJqjRzRWKPgBnVIBtruyMkW25h061dDvXgo2ARL9wTzPZnoV0NUeBDW+I2DLorIlje+4Y50di41WKIq4Tdbpeop05loIrd5YxaQ2N1l+/vR0eNsbGmC0hoc0Ir6nXJidHn/aUiqgf3jQntmP6o+fI5F5YefyHPJWiM9QaJ5y5P/2jagTZ948EBNK2Pq0Q9Lrew2z5vg6Xe+jd6aEp6gbvQf9WnmIbCBLS+XiZqsVgkLeJtZRC6yUL7m9mgK3VvhejpDfqXr1XXvrxYBFffndm22PXpNuaJw7cWChOvp3tHksUYtCcp434bvl1i9ZObJW4OI6Ssqm72id0HK6iKRRuBC21rUcq63C5ZT6PGwLMVs3BBCXY/epAyiFaTQhauWOGT0GtUqY2Jjiq6OQdny+LjKiJYHATcYS98HII+yapmmZFAPIB4sWcNgzns++HnocvGWTyJ3gtBe9Fjh/NAaaO4kfi8kaWY3FJx2ldQ7nRXepfDNxtsZmO9StRhlRDDz3nLhOYG2010r11Cnk7Wtw58LXGXM6Lq6poOn9jDZ1Rp5CN3glkpZ3YjRlOv0SlcdIpfTbYkVuJWW83u6lofIq8sgjtOI6fh9XBbRllGZomO4V6zHswODF+jdilxM6jvvzI/aXnpjxV0p52cepdOUx3ORJneKQfmfXd96DMYWosdBj8Z876eKV4Jod7Zg7o97//zwA1aa/LZi1HrAvVfXPhjJLQchT7+SfwMaBew4MLrOotuRhODWrXepTmU/nt1ol5sppN8GhV7JFad2T+xmVB5InvCOhrtNml+whjaEFeLul1yYkym95aVNx6TpyzPH3cx8Q5J6ye7NDb6/N+Vad+dnrZoljc729dd5VWFpJxmO3Y/uo/S+5uSFDRzRTK3hF6jRCRqu6IUE/R+un8La9jh3mCWPyvL0xpxBc02s67Cc/CIeQe65nVXnUpEhD3xvuDXyqb3+g22juDt07ngVqosmPsiiehxuatMu1Q/4zvytJErvMI2ccq2q4eZca0Odcl/cR4+bEcEgtYseD34neYGC58zsliT2MaYM5eqN5Wzyi7hA9nfHChnHPCUitg+/MkgWzl9pukNfR5JbRSxy9Z9HsjWpf9erq63gSU0K4T7vdHEWoMdQFpzS5VGIYvkvusv/Iub+7P8kepDAi3Gd/mjFfdA8k6725TsqeHqCGIyPXZx/PS+jGLWj16lQSem7XOVgn9EkJFaahOR/TFghX9CuRUTz8/6N+V5vF5oUufuQSGmUKmO+pct4D8R6WRQ/GoS1izFLrXdaI/GvanN7IW8nJXh8xDDrdODfxj/r+qrR+VFe2HUpPStywWnL0snYXgqTfbmqy4M+IqC0a61ryo1u5GoGcaGK7it511oNBqv2nget+WKYgUML0inz76qQsMw2rX1cvGOyyo0uI2zO23Bya9wh75YkLYbAb1u2f6f9O3/sbwOtX3rgRvZxx95l0IHv8jQ12O5BF69ilqXQTNtynnn6ii0K+dfkU2oUN3yGTCcu1yhDnF3YellTSFoHUqN2ilnW8r3pomys8I3AfyFlsaJ7EqVayKtieXL51YE/TZrxB0bzx/spJvNZbfXOas6eppbzlv8t/Yln6Z9UOK3NLNlfrnRUvd+mtjJZThFGkGolp10ubCvLpB61shkDSMyf5R5zHk0vA+di8aKnseBbw7nzetMXe/zyV2cI1R2gKYzEg3SlYSCEhrxzedK5dRBasFlxbJjDnVDuwNPzX+efDArE5qC6PPSYPCvXfQLJCOHSzJcoDth4HKi9i8s4VUrFNU8bodC0QF86MGRNw4Pize3+j1Dw68dHRJvAcRNT9Ru2L6jZrbBivXbt/sVoE7jk3tpFP98U2PahFI1MJVofAYJnUCvnNwyh90T/j8q1Sn8EVlQnpRa/DafpIrcN3SGd5KcoKGLozbEmDy/gokPSCr3f/nHspzhTTHSmgHqzkoOawI7eLW+RCL3kOgmgaPWFfP09/Z3iRxUhqVcHzC7RdVlweaPp12a5lAXU6mLMvgeKbvEdm4WtmN8tTaVKJzggV0mPoE1BvgkjLBLnPctr0PQCfS9ur4+OHVr4PXFn1ySaT/GgBit7qfdMLGdEx81HUuUiqVeFtMj8keTPnGA/qV0Nwo+BXejT8A1dB+NdkfawXqhxlArFTYYdeJEQgYMtK/LK59pryE9a443lGv5zUyamehcc645J1DKtDbaRS93dSE8smh1uVwXl0oSep2ksV5moIs8HLZPLDam3VN0mw1spxC71LLARsKk3vM3jd6LQhZKrSulM8CHdnWwZUF1Oc1p5f2MSsC6anVKaaCJZTI3sgSuZJZZv7uMsqLCdXZ1iaqd7aIlGpxud4MjUd/ogDem0RmPyH0kloFrqXOFgnGXxRL3AKADmlnyRs+2fEMZ09ZwI25ZLFaueJkNOr20IS7TajktqlZ61VuE0dveIcnxVUbLTJ421yrb1xTNwTdtwBg4VcKI+BTRfxJVgZWybGgdbK/LqZBN31nIW+4RVR5DIgZtyC5tThZqHQyamN1IKGaamP7xDQ11hlbYn1jx3SrR0BpzPokaO0cqKzbkTL4Mf4gZ/m5MM+Uvby5edXsi0VdECbFYy3hSeB0KSj9PDm8Bg3SJtbnMqOQzr37OCT/FpopOAAoP9d3H4JVIZExyPN2yG1lTyBLAa1GpeRK44XX45V+h9v+RDo9iqjF/sLl45fcT5gYi288r/5ZJeKE0+AYyvwl+PyfnE3zkzB7U3ZVl1M04Fs37N+Bd7PC11dtojQ6RuOS6sSlt1ccrSlLy1fr6qjJkjGktUdrsShr7k36WicvTw+ESPF4CLMLQZJr07SW4myZq8zt0OZRaR32zWzIDmrHJr5SyW9egph5SxG6FVmuCYsrDKdSaVrY0uYORJJyl0WaFnxDBJa6TTHZwuY5mayc4jEveCQx9hvaHaCJynlNxSLrD15qw0pocItrFEbRmsYw8rgHMoSTHXhzGSF4+8QdBS0ErzghmZFbq5qLMDDFoT0/emUlrPbwjg551pYmejrUgs+U+wdXN2Ii/H/bWe6x1N2IShv/A3sJitGlr4eWpWx4lryb98DV4EoEYKdGu7YeuvPxlOL8HuQCmZhroZsa53Dt4gVmhFoVLfRM/7IqpG/K3MpRiD5ll5JQUdubfW8LgoRYit9I6HzZOjUhvs5gUl+37ytASUBzDApj815Ksm8UGEs8sU4tjJX5Oz7t2WJdk0kNSTfmxMY+pWeV+brlXwOX6/AIRP8Ap9wnL+V4/D4wtG0hps49YnpuHfYxCPcJa2wzh2rIaBn6PDlyAMCxohxoHstpsI8Hn35JHKNgUTsgGgcyBAShqGEEMJx/9DRgU/Byn9EBuPXQhgoD/i02KhShoxbPWz4pL9hE+h+EuInHzqaIdhCdPZUU7c+OoY2EkZtEmhPNWXPrOeNlRwhU0/BynePfJkv3yOiVfneL/cQrKPdZgp5X5P/74R4AH7jBGUk5j19DOjwIgStdC1XuoAdIDX/1GAecTdBWJfBO6Ab3Z7HG8Ce8P1PwZONzSJnjKym8vv9HjzH2R9XyJVXb34jg5wURblb3KasleDaZH7J0X7oLbKr16LUmIJmqv1RZrzirq21Fec/FuhKCNd6PXmfsy83nw6jxeQCGkMCUfQXNIaB/0kYQJmHV0M3R8VEejy2vOTyXWRHBP4SLVRYj85jxdwkYOAtSeP1LIzib5oXxEUXWy8KnCZA0xNYqfYzdDm/GGXAJghnOhfRByDuJKmSnMlQwwfsc9CbnNwLjwR+lkdQrrfxHLLBsnqi5wrtJ0pS1ZuSXO9i/c28KtzX3j6s9Tgi9L06SVL0mOJfq8NttztmftWqAb16e1OzPyybyJxDFJRljTrJz/36CcB01nESNI+BH8LRra1Y6EHqEmwE/769apOnoVW5vj6s29Axs0tb1z1fEdnWHuWIVFrpBa1vW9HJXznYGaCoesP6HXyCyS55EYtyQXXoVnAZwMRc4uY+vU5B5nffil2Yqmvv0N8aNDi2NHd9f1+54un5rMOJE59e0LkhfmCzxKTote96yy3Cvl1GuNKguQ0oYaBt8hLM03vNR+36qgOuksis5M5il8Fk3ZrF5zg3D5CfM4z4ytKIL3wfB6ODerhuAtyWwZaSbuhpDLQlUtaS2DagvV0CSj5tz4bfqQtXeKoq409T0jeMLLvxHI/9H4aCuO3QSIq/Ac/KOsgsepEIs5FRU8+XnM+xhXXi48B2untHngcaMsRvzciFdOYJuu+wrYHHNRO4vD1s3VchbeWUmmkG3L3PZjxVKhK8KQCCOEJ5UcxcyZpte9BQym4Z3z4X68xMqrUxQKyfbK0UpE7ijjcg69yFzqo95ffL/EnyhiYC3BmddXhwLbade4pL5eMu5yS56pjz8jcbuNE497zu2SjMfrMRfJNMgPR/iDZjM44TCkTeYYwlrkz7HdHbWtI4lEa28t1YpfYcLJpw8P7ujBOSpiFYGKegfu6Z0Tt1elBXdbcT2919ntuXmLMO9jpvRmtUJuUenpxIlT3D7XC2hoLVW4cO5ocWTPwbxbAwIki/mbcACcdUTtg5chrQOp0HLpHnW29qTLIWjd+ehys+FZOJYxS5JMIxDTko2krFhuXpPvmYDXPRyQ/HYmel4RcLGe/rPXk+792fxC3vMy6GTdvWF2hMOJsFlJDicJ5iH0N2i054pS0AnmhZF5HZwaTl4ODb0+QLkcOonq2HiuWifqsggJIYneSb26fAHqJJT6bF6wnO7HH69kO6Zvr3jlxzKGgfhLgYtXH++uIP24fdvtaRar4nKAQD/YgZoDXstyh/+3FO9lsXHe52625LS0+EbeeuIhslguwuP1I76W4ZzJky8QvBwOwbv51EjOcHPe8IbHTgKL5Sb+/p9h/ndySUgiqJbLBdUhqU/sI0JN+P6QAPFy6CTU9b51IX08qHbOnBmsqaO6dJUkpo5Fuq0vjdZmV2WFwna5NNIo0INheZDcRqirvaSNZTVhPphnmg0RsibYHLTK9XprWm12fXaNzyKT+RNs3bz/dENzoIi2tOuMC+HwZCtyHxLai2weYQKX01Dz1ddxHI4YR7PvHIsyTlNaCFU7rrbkuAkcRZVQ3gK7kSehdRByFnrzHblb896b732vroBd8uTYUsF1EXJaru6IEsyOOjrQy+WdgJJJhY6nxbaPQ8nGDRpWZYSlFzaQBU3Y2K4zwVIfQWB32h2bTG/IeBQlR+nWuD4ZYH4dNLv/FLxXHYZP9dUjO5D3JceiyC8e0c/uQa9D0GRTc1eM3EYUvzy9/fnggvuyti1LB8/C1z7+v0T64w+D2KB92LUXBWvX1oBk5sHAlZchwFRs83d7Rc1nz7W3ZxCiO88GbbCtfdntE+nD589PZhupOuDZszSZJ5/t6bTSSOZVM154ZrJuNW//y5c+oSDr239uBBNtuPyZQiunRDEj5/rfvmbPQm3cAQS+znNkog68sse7z3L0n7HYcXnAyoNn4TmlOuZgLt7cyzd9vnHg39/hftpz7O1M/NRfNtvFGhn9IhX30u7l93PxK//84NFeB/xtd9bAl45U9oVdCd/IBa4ybE/1Z++E70SmdzbBsfE05Az107MKvS5sGJS+qtN/dBCx3qba+dUIPWRh5vyf0HVAyrVdPLoAK33+pO21cwuI1rfWuULdSTOtzlYucIa7W8xUpxaQqRGCVxHWRWWUJMGjiOABU8w4dlxMcl4PRs3M+JoE3Z5Hbr+AQFQuOjyNtwaWVN3/ZCU2fPbOgz1fPBfB8hb4eIkW+eGZQu1Fv7sQa8rMXXzTbI+WfdaidZ/cHxw9KFUeO3ryxEePKaWR0n7/kx1FVrAyXKrccVRct/FhXmo7Pg2q90YfoVCPosDgyvm4qPgjTnEJ8aPioo+J/5KQ0tL9pLJTpaWnwLaRyCmU/JfRP7ML7OBzWvCgIX8FArmuUL8pUvjijUPMgCJdfBVzYLyIsNidm20I4vb29LQzG18mEp59mknhLH21BjtJt/9kk9Eq2ubq/L6ZVYClyw+zaBD+5rNZe6sp03u3zgW3GvdTOmmtXxLGjn5yPyewxIqfPtx1gKR1jH8oXLlrUQTjjCU9/Xk8+tix7a/m5bt2XM/NYt4uLqy+FMtHTYLTk/cnrKeaM83X+92u18Z3XMjGU3LTS3Kg77dtesEggCGMn4pxZB5tgEs+LibNAcqhHGCPC0Q0Vo8LevPmqqnM3kUOp01dvZedeM7Cmj578swb0yxLhETuXV2XFgaz/wvFCN7S+GzrLyjeL63WseAZf2IOtT0DPj0btmJ90CzyqQZLKmwwi5hMiwhlSLX0z0fuK8D6wlbwCXguPzhXzdY7Qcf/fmYqB28NPDk9I6du1OF18fff9H98Fe7MhPjcGO7OBsxVW+rq/HCXT8JiE4G3U8RD3CmSDx2Yg2dtplYTR1YBbPt3GNDMAWszAXzvnI9qB5zn2KbHYp7Fw33Hzn/imN/x8qe5Gcxb+NzI4WAOci3YkfZaxoDweOEnBx5VSLYfHcZIKLqLRtZFqr5xEGDt0BJh8I9n6wP8cmBv8bN/APPcQQoA0Aid0gI2yMQSQyRhpmV6oHtEyqLA9gXgQKS36BQdMUQmXPJnHIQeXGtMjQzYJW6iy2UF34eZGCIJt4UpI06Xzbd7TxIxRCZsWc7K3cbvyb2mCXgAAZ7I3aYzLaxyzuqgvYR4PORZXuRRlm3pUmTaYf4uJx7ybF4sFTMOXPryWh/WZ+sLcfFca5Jlx4u/C5mHPMuLWXa3wVUCUsBDns2LMby81E77F6x3lS0Jfk13nzcAHnJdMw8OAABH6rEJIkxN5KQNnKkAaGJQJVVRNdXQRtpEm2lL1dZDeajU+1JQwqwqp0JSoCZvjra6sJeYJmH1zOeuOWpwmgDcF5qrwm7drSLAm3QTb9EtvBu4aw/eo3v4QD1QuXAanXzUjdn6xylxDbVf/Di+Tsv9f8PMBwfgtcmB0x8s/vHXfpU3D//nYvn13acA0QrpChZPJ2Fi8Z/Aht6N9sCcAh0ma1uLU9T3amoNbD/Q2e3ZLfDzbTGRvkOJU2RtsVha1Ap2uu+vmRVR87PbYXI9ZrXAcn7WejkzWVsulgy2Z39itcbAkhjImlqMNYL2pWHWSU+ql/PtYmZ5Tvcj6AOdpI9oL3e2D4S2T1KfP2xwnuf9SB/o5LAfZbTa7123Zf1aH3ZuvaiTBlmVZd1fytUav8gjy6irl1b0kl66UrQDaemb/TTTx1Q9hV3a5/LMQcOTMtr3pdUNskHj22XQ/uqm1sonioxuh8lRJaZt/FQzlCjMMQPAJCZkIhqd2hZAKgSJITt4Qjp4J0ZYNGnOTO0DhlHkV5T1syW2umEGs/gluXF286NVkZfTpdRd2wGqcu2ijE1GLgsFRo89NOfCx13PPrVmJaUnTSlXr+ujyRh/c1icSf1wyTIksfbMqJzrA8MrUtC9m7QfiIZsKb804GNL98w85dOzZ2m10LP2OqvNw6Q+uMil/n36v3lVX/SvAWLkGGfe/LES1qJVuratY6th2alpB9iwCYFBNCGGER8h7iB+QnKQBUgmUoWcQ/4KjYTeQ6lQF+BUuApuhxfDz8Nb4cfoMPoUBoXBYzox45g12FwsDSvHOrE12G7s02nmtMPpeen09OmM8ozZjP0ZpzM+yriT6c68lsXJ6svanHUk63zWp1kPs37P9mY/m/1lDj/n1VxMblFub+547nTu7tzjeWV5orz/5pvyDxUQCroLHhSuxgFcDq4DtxT3Em4n7it8Ff40ASYQCFzCEDGDSCUeJ75PvFkUKFpf9L/i8uINJeyS5aUppWOlZ8sMZWdJGaQI6VUynzxB/pVST9lATaOOfB59J/VN6nvU/8E3gX9oaa9EThuhnaYX0Nn0EfoFhoVxkfENfx0x21lklp+1hDXHusF6xM5ma9gt7CPsPzjPcJ/i2riT3He4n3O/5gHeAN4y3gxvH+8Ov5DP5sfKS8rvCFiCX4XrRA7RAzFPXC3uFs+Kb0rapJD0iGxI9qd8pfw1xVMKnmKB4poSrwwpX1T+oXKrFqneUBPUb6n/1FRqDmmua/7R0rS12p3av3UFuvt6n35Y/4kh31BtOGS4bhQae41XTBSTxzRsOmD6xiw2T1gQlm7L59YUa7V1q/WBTW5rtG2zHbNdtF23PbT9ZufZcXaWPWnfXgJ0UIQBD2xmAGAGGGVOKQE6gEOKMhFO3PgfWhOZ3WmlEYtIpjD2ptjYkMXkG80dcAY4PrehqbmNB0Kcxxvh61wMGqjbRzxfHJFwATxlgX9ZkvYcc5Ux7turxdpfLfLWBFjstdHtk7PV39cBC+8nS4S/qP989hIgn6u8mt+sPSf3i/S/O7+jz11UvLf+46NH4euyxfedxEjkK2voxyexAikhCTlzDNel5v7/5jFA/gumnLpoKH7BRVIxDOiektKDDbGNUP5VWzJzf10YU8q+atxSrmn/1E3TF3S6LisDskHO+0cgdV6Cph60drJC9oX5Y8nhpk1p4HuBFI/M2q9bdEYcO+L5ZIjBF9BTFvinJfEvwAMl/s63nI0bZ6qgpP+rUVCu/3HlzskKYzDn1wYbBB/bf+4BVDxjPWtpjwcs+Es5/0egal7iVe9c4nMXTt9//ElYIoj7iFrAnVYSfnzvOGo0dga9cfvRI/OrhMX3nVSSJI1DJQQhmGPKBUeuJ1tOUGZps9mocLYxJVOCT8LpFI+xtiIzBfLm86D55CcGHCklZowyhDlfSt6FhlQua6/QUsgc9MCVL4Eb3Fp9bdPhYVWJRK2f0w7/m3D1Cv/VS/+9qODyhba+eO6/gWk+D3r+6ft8cCQ0CqJEgKm2S8nPQp1FNwbad1G8f5dqYYfIolZB8NAwBaFlDEk74kGX1/tGddNDWAPbgBwllKJCqVK/iwKyc08SAAHvDs6LtOpFVIt8un37X+AsJkp7pJRuH9ELqY4auUK0SS4OOc6AWTb+CZ1FTPwzu/risN0EMLKiLXje7mc+nNuzCSogKwoUcihzwICTKtrwuBNhbFzdo6UM2JfhkrnlIVT9ZQDGaTNa7ujPG45XJyNemGs3G9mLBFAISsgsl2tNSHTOQmwmpYTIg4NDki35kAAlHRUkjxHK46sMIYdVauDWyio4XjfClW0S72+JdKKAMDRXHez+HekfzEHBZQZuOlIakIcIF/DVBCAuL5lrJSVwZuBkq7pLkW4+UC4ygROMQCxXF1wc13TiT4sPw0dV1WGzw7KsQrP8D8jOVv29RG/V1XoC4tKil3jRpV/ZPT/ncvjnD8uyCj17AAOyM0p/L9Gr7tKiuwLNSA1I/ot5gwKIlbIuT+KkaRJfLa98kXWDcODKrJCJImFgetUwxWVkHwPK5g69zTNLk2ygl48gTwSxaz05uQSEQfaPen6zkqNPzsS7ubQZVeb3F4cBcRvZrU0FFzZuL7vTNKEDdj1XVWeRYRouqXnsjlyvEdISmmusuAvEITAiTzw8w1Lp6aiYczpUfLpUR6kgElDup8/2kLZcxPD3id3b/xZmNeCQoOGh/iM9cEZVVLIT1aJoXSFKTydDjjHSKcHmZa6s3YX7JE7WEIBFVGCnEQY6ZK5dW9IU7DmHo70zo+wSpwfk4fgtpMCYM55yWyp3bx02MlLrYnNsf1C+0gLedqcv91jpB3zkHMc79079YbjtTBss0LxcZbYOSkR7WZ9AZqJccrLQrqAokMeVhBx5zSSMWOhZ91f2WYG8Kv0ea96EbUy9DOuN7uqdxX9b91T3Fl394tHMug5XN1RxLfMHWvc/6mdk9UuJib+y6V6Lq5yTjS7BCWVgvOXqOKp75hNWwLDQmKjsnh8jtJ56ctPtFgGfWKHuv1g5iCAqRZPa4+7REq8i063rLYSLO3yQU5CQqK24Phr2uK9bBNTG5nHMRUHFVcf05Kih2h7T3eqMg7hohxzjGXgTWWYnRE0MQCDA+V5S/57HfceunTeJaYwpBQIwNpWn9BM8wozcFgk6ccCCObdimFHAzGx9dDsZLDz5Fv1j8ctBVt6kH60leyZaOhtrafs8VIPQiAXw42t9O6GlnISuAHv7nS7+p/1bpEt3xvJrUZk/UKq156r40CNt3Phk9a/IckS1GJOjX4Avm2wdGFfolEMc162gHIHuYokVNrykCcjZ/HPX7PK4V/doObzUCysll9B7N/rC0Y7ttwqLP/tkAlCLEU0ktDqEOEwMIS2orK5kwGLp/E0hpnJDUTEj2kN2Lrt8No7c7xyBGqCAioRU+45D4LPxr3Z8keKiS59nyasE/u/0KPsChWWQ4GeSWlxnInogxWa1xoEo4B71gptadKPeWdSGDu4jC7cnmQTKkPq5VdA8NGDK/K70my/61LFnS2DCNHvBquL2rRTD4mqhJ598yXWJmZTDpLIfx+4uWooEDzR2qzoUP+FUVuz1ResjFnl8DXy3v3pnrZEJMjAkpPo37eZI6/uBPGZmb5/JOtS5JkWVaG/GkXvypmOiSOEnQTSxce3h1u3xIskrgZvLR99YmW2BPOT63bkjTz1ntUSRjC7nH56rb11PcoumZtvzILsXtBbeXYHii6rRIVigfY2qyWZhHtER623Nm9XCupM+xpJUF8k/tQUo4zr5OhTy4JyEK4RLYiQ72k2U/zmu1vA5l48oGnu+rvg2AvWOb5zf9MWb5xbHRvs51AvXkJQ5kInW1qiXJQfcsZXFZAPw9se+/dkXOx5Bfa/j6iTqroUyogLzf9PlUAMz0lLGUfP7XuCxwvG0+A33T4RxqOHGuhRofSK3LHfcldMFBbJYgmnId3KSFeeN9r3J7mJ+57geQurK71Ajfb4ehGeO/mL6k57r0Pob69L4V782OLU2bQRyV50u3VDMEsxAPXeTsMzlibwyMaEcnxtOoVD/C4gnoNprkvMKpQ5tolMSDN3C2nac2JoqngqdkSOe5Lx/yYU+K5AnKNPf3DHHJWOTiDq7M5yLxsdH/4NB6Iu/uOPgF89PfLM3EDpkpAzs9cIJFrd4EHrXM4vv1LG9a3AF099LkBF0rak1UVauZ7Ds4hLpv3F6SbQFHrVOUaZ1shRj4olQmHQ+fUktvETlvL1cIi7caj9Xcj7TVOt+XlM9xYknHjj4zcuw9S3ydP2p542q4sGV4lBKKUX628LSt1NeYf2zCQKCRljys5a/7bKItDwLMoO56PS4hi5euyAXYi9XWQSadq6cZMnxLQacD2T6u53FVHHPuVsV23/cqEE8xH9Ozv9SOWSJvvTZRXXW9eoWD3HonMozHTseDm/2R+tayTTQVJ7sLRiPaWxpmjFp4SLtdkVZ4GqiqDTTviEggNWMlS3SrxCWL2QLLmFet5r4ixX5SodO1dmvA0WCJVyVIuerd3dM7Dx+E9akIDw+kcHHBHiIudcFSF/ffX6rra03XM+tqQ78X0yW//PfCzSN8ZeQpn5xZDyhVRiCMnUkk5GVmcloSdSGGno6muAyd+0oz8MIndMEjlEdmwN+yGpqee0CTBrUq4k/1BmgeN4XK0InFFq1Ve1viFNJpoqKantbhjCIHrE5j6eF2UPatimx9kLPU0Uawg6OZ23fdZE4rrbvNsj4qxdhZ1u7vqfKddDzLLm6YeDC02p4Lv+mz2gM+GvfZC7T39mWY8z5XdDil/nu/8S+Uis29CzHAAuKQx6/d3fv1p3NvXHq04YLqJ6xe886JRiw78MRZrU9xsIpVzLprCqriKuFcghIJns8ivEMcwVbq6J1tKSO9kHRACQ8rdr3aHSwnsn9nr3/7/FJlixpD+9q/ER1H6uKpbqliA78pWIjXIfQjOX5/mDtbDqH8bv3dp1/SBpDBhM0PbWyqBQ+E8wZUHvW+pBFwaEVXMiiIQEo3nndwbtYvXLDShNx7hR2UAwmymUG+9yvsCpk//xjrdvig8ycoQDKsGUOUtayvJWq4igyPC1KLh6ckUsNOXRXorSLC2X/tcpBBsQ8SXqs0F5faqop1BzSUNtSKkXEZowpI+BSkqCVx7EQdzE8+I3uj369HaP1QRcDE7FUDfDmqtJqGcFBCTJKyD/eYTaTYk0hCrhYb4KH+5ovd/zs9Kf9eEc7SzA1uOOH5dnm4aWqRr5qoBpm3q5Il+FbnaNGhBUCCuErl9D1Vjdd3Jn3Y2UIzbpaSrCDV8mPsRDyJvS60V9QeoWHfzX7aeTE/U0fxmJ/dgyHMoH/e/CV1Oz9YsLmygOU3D7W3I+DCM05jLzMKlZgsI31+bfftKvNjMztTk3+8PbpVFkUgLGahxpOp4+9f+/x+ntLcBg39BvAwfEw74r5slK88dEwUfkuAv9HlI1jyQUh6H9fmXYyltJIErnEosGZCqjBNTElPIKq3W6pXlMl/L/Py3anGwMYPEiIGzDuZ8On/muvZPR28HlcFqwOhzOjhhp/hakvzHrYex3v9BH68S/15hGuNiZxYKPfxeFTbaZWLkbjU1Oeu8zSo91bBxOjehhDolW4k0eZH7b36779/yc/7Dc/mXwp+6yhGg++WGN7+59CisXlcuff9zbxLQ00kJLyDjwxHLWl8gl7qFgtox5QLo88jdQWJQ8V1BZfLK+OHzvdMTT6hlbNUQ+9ucofJE0Mgav1hkRjdts/NIqDltmxr/6fF87TRcLm+z0DgEXRwF3UW8f53/7sRYZpdMl08t0jz5kb394XNo7+0fpeXVCsg9FZAWpoQWVzHvyB8duHJwneuDUvlg2NrLYYgIQJsvZyyP30R3LORwof3BOzs57JnNl5/HfBcZROt+5qWYa+DPzhL7u6JBfApoEf2oG0wsWBfHAdrLriGFRz6GEJkOfNgEPR1h+G1trReA6jj68l2XfbMM8EORvReFyDD1DACXVZimwt4AVrwADrgA7UxoB7VsHGF53qskFrNmAA7mCdwACsej5j6zh2zTY6pmzb0mbS73FZMNKbxz6IOaTwY6ljQhsmPahLLw2lZvgVOp73oMGlIDAR2jXzvZnVOBth1XCG4CzJe4gVqBIc2ttfxi3xmei6G7VgDlKDRjESyyFB7J95+lyPkYwOkOZ6E7s+6fFynes8+tzT2qGm4qOFcrIQXGhTK68wlnG8iPb/TG1G3edwWmYvvfNRBJmb3GBb3dNIOHJF/Cx18cK9eM+PLEi6uMuCM+Q4YPhvuhyOw4mstlBoVFiGVgkoOEzBlQ0ZuArDozRIkEkItd9i0WpQt8dJ0SYw//rmj1crLoBw6Dc5WZVQu1QTTYOFVV/SxKunEL6M17kdq+0sgQcH5e1Z/VmSqJDOCbCMhdf5tmkcNDz8c4+WAhr3kNSrBHIp9WOg3BEEuylmWtAvBL6amICCoay0M3CtXEVQn4PpEz41DwZly6napCz8Qf2e4eGVj1tNPVPPSYtUIrN7RsWnRGGQGQqbyw7Qms8Mx5bUHrDg0jSEX9+t/+zTgmKybhXpi8S5Lna1OD66WHz6ncQSj/01Uuf2a62FyFkVIzs7OwTlQBziBW69P15Tj4ScTTtCZcZP1wb1WlrnaikhNJrF1mhP5/CBknkVmmjas5Slv2AgHvGazUHBOSPIw7f0IrrgTanHxkTuZbVv7RweRfczcmu0Gz95Mb9otLsmGq3hYtHCo8lN9uXzwz9ZOIcNmFXzarRYs4q+WQnfny73fRSSwa1iqK9+dM5XAm5/mKe3+NVa7W/iPp21kkGob6hU6gSv2LFjS4jUc6Pc37DQqtwQQFkemgaHlAy0wS8kIowLnVhd9kUyyy8mcksxRtog2PRDi146RlyedJ7bk3RsaHMsSl6bdwYJvThVndzbZQQlQF+3w353sIrz7WTQ0UEyAcjziFdU4KKyYZDjbpPbGd9aGZLADW3q3e7fvzLr3QEdcZ9Y6dbfXYX2RXMAGeLQ5HFvBmHgt0RRMBb0JDA7uoVlYkHSnyw4a6/MvOG2A0wNLmnucGbba6tDHy08DXMvOlIVqXlVlZD9vV3deWb6F7qu4MYBN1q8C97a35zed6bf4BwGvtaNQwKDUg/fO5utLa0+2nSvlvet4Hl45Xwtqc8j4EWaRJYZJNgClvu5/pjp1fIGmJUWgkRVgsG6onbWrlf0m28GEld0hY116gxAaQl9nvNdncm65L43NN4wimsHu7v3txeKKTD4fLZUMprDXV4IZWHTGCeJWioQjty39mNmJe/TYG61aj+bnSTjzp/Hmh7qsoaj+gY2hEPgNr9esYHrLwV1l0Nb3IFtB6ZWZgcW19dXFuRHCtaocmd3A7833quabAfcNtB9Hij2Zd4bqoxh9H8+rFGKlJN70//5twvDeqMzVHkCbAsSuHX08PHO2hO7QbMJ//GFNtXJyn+wjS7ojfrpBZVBLfTraPtUIUpUKkeuSn0u673A+/z+RBjdEUStF1VqKLQMemktp4YyPm8+IEVVK8lpmBfb21ybqZJDnBtLFO55llloMLBzRYrwzhzJewq52BCMN8TSzZH7Wx4/YRNszNLDNzpMjtJ1RQIGfp0W6HzKHDhsVBtyZZyFl3K+p0qPRyufs86qX50zN1RoDr1Nk7VsoJuFMlID9P9i5RCBSYlMq4taOp2op1XuDg0NnT0S13vSSNIVGlfVQmmLygx00ovIjE+Hbo4z1tzT0s550sFyZeXm7SEjx242Ji/Zl0vyCeKtWvoUK087dbvjSV3u0jAOeCDN9y/GAUT02SP1Y31btbIvFhApGniHp13Za0KnXHal+e5kTAEVgwfnt/IEInPCjl1n9neXlot4m4JhFJZmlAXWixhmzKnIVt6gh2QJEEvs1xzlVJLk0gvr9JjKg568phm4Ywopmw+ReOK2jBk4cc9eLncZxKgHU8YFlznwbiDQG/ZFHL59mHBFZ0pIOqLaMOuWNDs8ZAltTZaxQDhi3Xg4lynHVgZPXg6G4+jxfLuTiSvY/ugJqgfO9I02JFFHubWiiqP1Ck8tXytQvjc1uumhQpmQu28z41MPnUH/c7dlcfHXK2EqtPFhnon5Lza6/xSKn0JxiKPWZqNuryt0G89FPbbeLPa2p7ch7HpeoYZpn4ylYpc/qpei1vdjD2kGCNX9jdraX5memQY9In2/p0+7ZxY/IfQzbPa6Au3yYaOwKFM8fPRbWW0vdAcKwPaUojVDTXyqS4lgDKJGYHEq8wHytq/Agq2v4MsDJaGclufKpScDWI3MlBaRwjZV4uYR0Qx3P+S/VNzX+vqP58Q+upHucXhrPDHCFNekhyfj2GKnugIKB1hWqPgAJlWZA3dfrFBBtQkEC1gEgcr/hsrBBo1j1WsZW9WbsfqsZI5+ol6R5lFFNIWOZAI2LQ1Xu4jXhxmrh0jt8xzH0FAdNoFgiKtG6ma20dI2I4CFb7E12ADuSrVqcfRIRbiflqkf83V2LS7m6g3+iQUZuEytAR88VyzA+cQBNhm2KvFo4cD9D0yOwaoWfNAxlWcwx3lGLix7zOjfADRoM1fQq+bCVx8PuHs20dM54Zt8h1KyM4ewpqFjV/nWfrsV5o3a+75bTrcngQUPuIgoi7AoKOP9VjfVX9ndU2OCXAvfUm/kjbi84dw79I+sxyAILbj2N4m3KvI7rjHhaUA6arP7TEo5D9iOkGCsuoqTaTh8KBwVWrUnNuSOJT/6x5JEIlXqd86sb6CGKooyH4XQiOiuUbXdsaNhh34V/slhBDYBc3lDyIaREOZyen3BgMcfzLQN6evIiWaRx/o9HjxR80Sn0mqaCEe3XjnhrHVjlkdnnTiea6s4V0uaI0UvxlHTgi6/u7U6Pj6/sLk+u7S+QSivXTwMJQfJ0VCTYfVE58eZdvdvFfHGMQ7vvV261seMRuLrlHd98vjCbME5roCiiTsGxYPbWAnBySk8V67iwW2CtMNJl/JiY45VJf3UoCcL5eaqWn7NIk7e4O4rsxkkU3uTypVcRHubLG+h1QaeF1NPyoZAV3td5VCTewJv3srV6Hyj1oCbrGgEOGcvRopqLlCZATw/rfL8XLgkhe3NV1RB7gjcNdmUd6x8nvCiZ6eMbCyIqlGZAor0o5pvN56LypGhvn6mfKQvZ3CNWrBnKrJwaxVo0foo+G39lqLSwZfyI2jHXo+f/73M231ODitaIYElprW08SAtVaorgkEpHvGA1l1yDsX8ps5PlrK+t6s3pCFQJAqva3RJwcIGNIEriklt9agzopbxkRMzh4aNxL2EHhj0ReQ4HjBZPlkuQbulNgwvNDtNhs9glanNk6eI40i0btW6vC/9ceN+o3Fd7bl3NfKK5Xohs7tGxSdpVadNh/ZYMUK291G9Pur4UVXSBqDCgbEufnup1/R/Dq+2MnrIC51SL8+KjBDQlSwEpuKjzw05q6/N+UtL2xum3GW9UUSIJE4jVVHjcb+e1ur1b/5gbTq1KZjP6ZRHlIXNnAmNRLzpcKi+i83jxFL/3tHR0dHhzjJifIbE7x5dNDEq+NEdYxb+3XdDIxFv+ujw8GepedESya6z2jPgbMDOnZdA9lzangFnM3eutkGnJh9NhU8JMBvCfZbFwUQSE0q11WnDHPRxia73qBq4gEg60ZcdV0Asiuav7fb8vX2kQDUUbzE60PfG69CuZhR1mnW99w6lSqRP+sfaKyDsFenIf/kiKe/M6g8q6fCU1f7fs6obfUMWoBe5Gfua/zEOe03sFHTn0cN1TPkybgnTLxTcV+POeKzfAMo+T0L8eEb9DCOwPCD6Kpij2BLZv3pAQmHYNL4afhbbL5f4xQy0mj8qpX92dqjgKqK166aMjFF9x4XZ0PXXl+qI4EbGimNJiORr5LQOc2jH8bM8gIXtUyfEjO5a0SJqksrOdUxvyxQoSCyLCDUVjUNB9JzzqmYpPByk02yG6aHI2ZsHUsCn98NOoN9+t1Rra5JCS/HatCnk2Gm983yYvmRTb1XTANy8xSuHEqr54JwlWAeq0sExQ6EciBkJcphW6Bvznf1bo1yLO7BJpzdpRbS7htUwp9ROp5N+LSg3ZmesFh2TtksPIubbBocNTf2G75OwMm+z3LsYCqttau3spk21kVBx/h1JkEKsSJHQshqllVpXtUUXE9+LyqxgPHdU8piVjMFHxM+drvPdx264SVOKaDgzHVWhc6pzuAm8+wYQKA+m2zsmCcAjRAT1fVCpoMuX9bIsjoWCIXc67m8lbHOH1l0dRRAw+vm7LmEB3MAxcH7jZmCZCZDRamjGAJtmkZv/mUacjpT6p1odsSum4s7Ycb2oukPe+btdrJz3TnbEoRd9fynRCT0Y2k7sh7o7gIuaCkopEN25LCdc+E2SswoihIs0dD05om/HiDPM8bizbrG6g6NciEENOlhLqN6sinXSP5ciFivhNgSCIY9OQAWuYAlKzicPVockin8YNSPaYyAobqTkxmMAry/jOeJyEGg61tvTP72ZssnWJhwwAQ3htcxwzq9YNNU/qyLqigvbvPaFtzWTMUPAWWnu3782o6PkVVhH+CQaSnpm7B4hqFLUFA9OoICR6O/hUNywW87Q4Vrnln5ZP3jpmJM4M5iK5LZDLsRaDloPppudhLB3WJwdCdA2Kx0mjFmI5M/2Z5Wapp4+TR0475eBt3Phz5EWUPZ/ZSBGGB1vp/x/B5At16UAvCmYAGJdsaZd27BlYmtsgIgDz+jUVCA/kz+TCtF8q/5u3cNSDDUyBg3mD2d7+e1kMXvOcGnNZM+K7/3Mxx1lvC3785gI4H7wLbTe+7UwLGd3qN08uszdaOZtBucb5jMVKCD5TmdzxcAMb/tU9LoTWbuTK+TECwvGv7Sa82HFq0U8mIpMNRx3XSB/HmOL5L0a7Y+bfmkdl2zOeFKsr2Xs+a1Y953vzKy3c/UivL/UWWkjOdU2yu8+7gutse1ExH/hONfRea+x2ktDrL1bfyT/0moE/th75pvv/Yof3U569cI3OU/Ug511Zg3747gh2caFhZRi49+KryxulqWaPP4/j2UJ1MJtVMuTPOic8ZJKW3JChTDU220t8NlcJJIbzj1WCUCnDiFZdcDdQpjEXi66HO02IXb0zMsHKZ8nWOe/YZ7GiXW/aAS18WXwfEl/4DxtbACp/LOY2U5zo3LBJfvTZsXdbgZkDW/FfBZ+B5Dw98PoOqI+/eRW8sOfWPz6o9iDn/M9kil4dUeDfsVfBEpO+vlreJ/8ZFFT5J1mD+GGYj6vqsoec84qk08kIE9sqTq1sPTxG34v/rCIvoTWIzoHqzG2XKbX8ev2S3Wgij0jvOfTqzqjLemfhbkAZ07yBFs1Tuw/5BqsdoTTa5+N/nfXYP7CBYCz8+WgBjWKZ6EszNFv+7bzUaOEPt5UTIUejQAic5JXIXk+T6+f7k5/PWLG5Cp5OnjXSGVQn2rO4a7stG9/e746BO3bd7Ybk6b1T/3/ysnpK+j+Ozf31tsWvkF9sXCr0Ufot/yM+aCFBZbDOqW2nA4nzTjpbjrNTHUlhxXRecWEUxZI5OcGOmQmYgDd886XKlVjdcv5AwG/xxXGbgagEkfC7srHnNqkd4TQtZxiX/ckZVCmR/zvyg338An5Tdhj5w0DRyBWNU3VFAxmrjCAAwQ9Vns7x2MAwQM7KDpPbmKIDqKAl7vdhvUokAco5fZafk/LXlQrzt377PmsTidZOx1uZW1tcWYyxHAbXBFX5ueLDXocD5cmt9HT4lv/re+KBUbZu1dK2MTpL5oW3AOlG2pBfiahNkMYNsqGXi5hbiZQfAvfjIP7okgrB4CdEBql37cdiEHsRZc3hAidp+YjMq9xeCPB4UbMj+7Pbw5XDYabE2s3NQxPidwpsWXSo7xCp8SdYzmGOgd/li8HbXlkIjcM2aYqSvGUURVJd2yvj5Qm9nI7KDZAyhbw3eearb35sZJuRZQsUuVOh4t3EqD6lF+u79oWaIYdKDKGUXkiSLEUP7lSJxJLbFnd1sV0j8O5Yr4jI3dGs5g0k2oMmmGNHIXuUG2GMLR2QihJk3FBzqEVyzxtTt9PDdbrUUi9iZpyJENNmgwpE4hYd+kiSFkvF2g0b7BSIoq2o1xBM44gdeH3jZph+L0Gccw8S1vHxGCWvZjZYr7FnbrmnPVO9Qg0LNKaphAuxFLko1TmydODLUhh0cVtv0KPzhtJLAgk0S5oyriQUwthuDs0Hi8WYqbJgDKfOK/tPV8t57jkCUV2aiRZdrkclMnMcJnBkXhDMTmNhArgHc0rAQhhKEcANT+uk8ijR0Kw88w4Rp8EcqKlhaNtpgi1/JB2tfa9fiEgmWt59p5ojR0p8rzI3x6oMdYRpVUGaEAGMjmmzO1mQYtkxkgdDtupAFmTxa1MgUbJI4wBIch9z9TK93cwKl1rml1K90kmxxCHTMfQtbV0E1r793J1pvBKK2KCACEUdX+7py7cgB0x99b+B0APPlmcDwVDBPj/+R4QC4spLklepIQ9CO91jR6fzbM6bnsLPTa9cXd9KqW9E2HIXvvBeBKWtNSjHUNIfajPfR3CcA7+7OC09WhbNxIdEMOZ1kYpQ2YJVBONKSAWZ7Rh/KpDbX+8q8Phq4a6Zu9hwg0bNUpo7kcIYZgaRPIvi5PwO+v/lPrJmKdCDnP0oCernJCzGPh8Xtz0E+GU1NCcl1aftcR89cyF8fK/KPc84WZwxmxZmTXGsUUUZ7R4Gbd0urvLMKt950sh9ZArOkr4a9jS6JPOU7Qy2SQpT6U8kNPvh2aK/WZkzjZt1McqyfeDnennEnMD2SveP7JwDHlPdrFfhgvGmumtv6NBS4ECxmClWr1XA/gDPbWqsPJlZBAmNeZI5wqzqyL7asqpJzJBHTP0tM8JlcOJiqrKkpKU5ho00cRnchgH7Q16xDZ9QOt2ba08cwBWTX8onhYDKmr0YMwXAqGoeDjiAV6bJqG0T5L+tFNZisNP0IvtlpP9JZdOLh9+gqKeOc2PyvQOQbhbeO8rRgyXNjudenokYwWjvBococU956IVbSnMJdIf0lg37qqflbPJiH1j9vkWOsTkZR80bSgnk5Y+XOe0gxohLlXAXFWAC3ySdEc8LPJMbmyI+LdXZq4dcntNImD0uo0sr1t+WZSFuu3/j8GB0Hunj4SY3MbfpGwu4PEv45ZvvuQlMecyz9p7P6RaWTUo2bfe6PKHE/LYekSg0XfZbBBV30eZxauL976jwTxXvrv1Q7NP/nSpl1r54cD/c7TF92z8Kx+Gc90pWuiAIbXoetoLT9FiKZCZzR89Th3c7iqaCIIrwAJyvWXqrNxv6jg2j1TCWR4pYHO2KWB3xCAOuhthQhUNJlQINzaS8986cILHTu9Dyy5pRGijNQeAO7t20R2Mj6QtV9gjHoqw1Bk/6dZ6KYH2O2Bg6zfNcfmS+cMGgyZg+fE7w97usFsczelu9Z66UKdP/L1C7oH3x9RhcQ/g6329PX1LQay4RRYFTGoJ+mA4KynwYAhxU6roOviAhWIAWmycDmNo9xqeJgs8RyPIx0cc7kFc6WcrdJbOWAAVJ1gktTQkVVkReYjBW47H47rB+miiJrGb+VIJphIqKhVSSsdZT0/5JWFYd0Oi8rwVlvkbKAOJjWf3Ymhuj1sk9UrEWcyKu8DmTJetdW9nXV9xxvEKoymmU8Yf9BrUcPfClKh/Bg/futf416Faua/CUmVK6d69FuPQt/e/yDY7YZw+Z9ARgwCUWD6cyaKxv791oMkytb9hNubJd9tqhkFT91vfTl4NzThwmMsc30TSKwBLrZ3hAfof5AR/IvOSnTPjucvqPzWKMpBX3bMNM2q/XixpuoADt25L+2WXD+M6pg1DnUMynAZ2emzbNB0uaBCPsnjSXbzVc6QGg5WrQNqTpwHfPhr2oAIdGD06G0CDKN+82l0SL1c+FuShokwYsOAU4DtGAZmFGmUYjMwnCfxAHxRCB8LMLrUlEg5HEChKU72kEMwiyEa1Wst7BoZubpaaod7fMAnw/yeZ1Ap1/qG1KBvwCsPaxgy9n2RMOM1QqC+zOClaNF6VqPubVTt+Z1fMfvHcgHIcrqRbNGY0//HpsfEpd3N1FVtObmQ5l2iLgYbJ4YxWdNPi3KzXaJFnEN65SYw5wkdMPMjEDCAOLydKsY3ahgZOaby/j0gO523iHIgKWEoFwHOJCRfm8gDf0sylmaic+BJakYS1HXvAkzufZWqQCFQLljmGc7zXVOwq7zKHnQcucbnxDzvOk7szgVLru8WD0dSbTO51tQQ9vxnt+k+KZo+WE1Tg9arKp07ccP7VNiXhLz5DZRuD17Pjp+VgAlN2TJOh9XYcqTQGqkoh1XmKcyB0ZAc3z2WWbAEJkP5EwRYRfHMFJlg5ooPsUq5Lh+ONDBLfYIkIcu4/nOVOIa624eApmQUNQgtw/OFB95M5HZvJHV73hbGB+si+MO6/CeI1zBCSI0l56++glGaGCEl0hyh61iCgpiVjwauXf3O8mmKggMbbcfvAOvRJ+Kcu+5cTwsIfHPi73dvDM46V2mHd/ibRjFk6pO8UL56uEXuFNyg3OkMXMwW3VtBayZVdLvjAJ2mEsglj5Hc4omSBRzG88zKc86JHZHA8Ox4vn1YiAM+T22bYGhLKzuLmXDeliGYRkOKUD2VBpX+8fhmP7ralF5PPntZEueziN2TQAWVC4WZDCylE4b8O/bpWEhk8Tz49vpDoxkET7IHOn9z0zmM8Hxv0fRhPgpjJzyKGPuhXSU9qEKHleS1r32FkEaXInikUvqFHATfVDCiDlwcZDGSExsJcRZdMT2iyINEEXXGr6BZJNT10FZHmPH5+tAyQrTIgRcGIhgoFYhgDwP0dtrI5uQyhlUjekX2+KZR8pgvFo5sqJ6Nv8AUH5CGF+yfLMBWtzMsqCzM9Re1JCmR12htedKl0G9ONKnJp4XB04Rd71T7mmonB3IdJWkVUJxShqIc5ALgyY/rNeHrz2IBXrqKgCs0iACIjJXTSJpeF+5IeT7bh9EoMGcUm7g1fIWvhOYrjGz3wAikXf7R4UlYwYd/000cGWHBx+TLNGpJC/ZgQyuOjhG8fjb+88jRi4PxSgxdISf/Xzho5O3wX5YCvn417nV+9661vrblk6NAEzY35B3meOcBKnYj9GGIdyUxa5MskdEO7u0213EUXAlWnsUq8dEi9r+4cn8Jqqh2FSlCqnGlHxkzYcEKsM4j+giogKZnCqYSbbugdINjAtzp3eNE6Oys57gvXkihobwcSMODr2LVO11BERacxcwJrorY4ueP0eh0iOYQ1lqKyCoxO/kc4wSYOrtCySya2wYah1ATUQZ3k5AtfZaHCFKSy0uW0TM0CeD9wNZ5jGGmgnUwjRBxkCZNKw8SRX/YrbQL8MRAw+TSSZRbCGOXEw6sWhQIJGSDaGpeqWyMqSRdt0DKkCIq20T0X3mY3iaPAZTqFL4YUdNSJp2SgqINjv+zPejY4OBzfM8p/93Kj4VMEk4Z58T1TA7jbyWVyx+JswAc+ksdCiZc+RNauyQp21BcbMvirNStDpZTjgCLC6nEBhSozHWxD0hTP4RPW/Lg6clsWBbc3k6Il/VFMfVcvbpw7pNUczfD9ozsSSn4jUSG0QIscC8i9Yo7jBGu9QCLKpGz7uTCKVoMh/O0Taxs0fpoi2UReBTGyTbPJsgtphOdBRt2rFluituUFZy2qiUs7SlWaYaooqg92WYqmdxnmAogOivp+6GQoxGkHVBaQAnxVqULauHA9w0StIxQU4hlk2WWHloSAqnj/vbOQSHahBsKZaeZd4oEvhGOna2aAodQ/qCQqw1yBWOUPHvEzNKvajhsW1FCiGczbjTgY+oVw4l5vMHICCMeSEYUveapqpc7HCiFP6f/mynY3SAJcvkJ53s6z1K9m5JwXEJKvpMOb8POzy1acZpnsdw2LkXn7/z2qtdJAIWeKqMckk46a7XUffBo6mRBOqU6CHJZpkTIQb/WVBfuQGV3Wk34aoPKFts+WiDyz60gzZaAURYO6Pu1Wb1Vk4TJLlD89aSXjWvJdslh0Jw1AzxFOYtI43grfSfABd284A6gTcomKWp4b7PI15bWBe6q7w/nngHR/TIJrIbWTIclQ8qk1/CcogyLQSA5HcZtiTufDdEDBJyHVOJIYHV4daRI6yhbFQaa7cQZuRB6LuxNNMaAVTyfGEtoTtt3pRcdSDkaC6tTxaG4o4fX+4/CiQCH/SjqYZI5zQhKSZ/GsGu9UHhQXyzRkDa3WwNgKVcq53tdhrgtuJHz14Npjl+sAPRYnz7xN9nmiup8KkAA+RSxPJdluxXHdf33OK8W2nuZo8V8lGXLunMypJV/EGx7uVOsthwd/YJ4lcIAD2vZBo4RKiPZBp5CJ2PahSDkTUO6MoqrCCxCw1ZQg+zS8phy44QW8ioGL3cTkw870T0GLSfP/iSwzEzq0qpDHtBeKBtPvSU97dPiFYGpSv4Rg3WnfQm6k97TpALvaqusONwHDXV0bUWD1f9fR78z19/z5YTa6et5UANOizKk9OlTyhnMK1BKJsTI/CQv33d1oXcONfwuV6/+XUJTu/ApiBSYId9VtRQGetwmMKPOXpnUna1lVnyRjMyPNDpgjC5VCDyzJSDR35/O5P+Hpah4Q6t7ExBBsCrKMz4d1WC1NGy0aKFBMS0oybZ0ARfPOC+nkjE4UavTKUcJli9vIFWXUkUidkj4No1Ro5GG931aw7L1hFsM5V0AezjX/eN3arlCIReOeTTNfrl6owY6NgfrmxjqHgBxLz7SevuhHFgIx8/w3dQ/rQRWA9PfnxNYJNZpFq7N4ybs008drccvhhm1tWTXzQJs8t7MpqpfJF+uSLFx4hYVB4FmWnRFqDjOD2nhLydHwyCkjTWeLUmMbARoyKRmSgCJoAGsTdJFFH031htw3LzmzSo10I4cRuKFFcV1xmu9+ziOmoghx/rAy52mniskST2E44wl7UCNrF2NDCShq1TdKhCdAc9CoKzk4jZ09lmon60/L8gBV2jqq0JLEH4LZNbnW5BxSAtewdpDeM3qWP3gD8X6wNWIs3kcRsfMrEe1tVeTb4wLChnXNbCHkwB/1H82frAUXvSYK2L/vU0MfIj0J3egyTSDqSZaYfTO+E7qSYkCgW7VkJUalJrMfjU2VkVhY2HojdBlC2jLUjSi+EzlWj8FqsWHUuMXHfhVbF/g4HtCRwCwkBsuJsSluHeBk/+TzOzrcViissbRfJ2LD151rqMmpZVTvEnxFFpFftTrG5SrnU2gBXu5YVZ9iDFrZdpVA5WXoNtiUr+w9XPbokMSTg9tWI8H74tPCgwna04e3Pj/DicDjB/fWtvXn4BE1I92Haz/+GpEaDsJBTItBknkbtsLgIiObSt36RONI2pi4YOJFYHCW7j7MiVaCiCAi/1TdCGTKl4ou7Mp2AD5zmS01TZLakRXuOoXN+48wL2UzaKr8dVvmNxjLCfuEybwaBRmlb+TE2Vtba5XcPpGjdMjOm8auLDAQrp58TLrbELRT4bexlfO0cAGF++aODZs9ve505ULSdeITTP62N9Rpo7mN+oaXyyiY9E9dvr+BmV2Fd0r/PWEBcvEoSSf57z2kbHtPfu/eb5ytgyF1ML7bekUbnXnvTqs549Vc9BsCJsZYiIn/c5RxgU/L1P1/nzrX+NZaJd84kTNxaZ9P429fWXAocufJxyTzGsnbmY22sZXzFfGFqjiV8rVJVUUV0dQNq95rAXIUFZ/EMtb3uEUaRas+yoPNTrfIakZ0GuptH4E3+RnEP5macOz7CkppU/YGT3qYo1Kh2jMHIw6PVcERWXnfgwBDu+M1j296mDNNaN7dOXIwMtMbUg+zU/c4i3k+PGl3SMuQ1tapFx11ddOzrmSVSMIL+t6mPEl5GqulR5mc6aRy62RbHBhMFzjDGPBC/NsunTcHCWdUv9y5gVcIrFQmBLKqSzag1JJP5JQwakUtLZ3MCFO1HdasHM37pOAIALrbkpWB0bc2FMXF6VQNX/OehsT5C3614gRASWeJSBFoVmavZ7hO5cIxjp1jbITASD2Z++IcuwjreL9x+84dxpJN0idCqhAKwfQ/Fn5CKLptirDgVVQ0o6IYm+K28nss+C+sO5gOB0+wfSvF5MDq4kjMLh8DncyT2TmjDWVb2skpZu0OkYQPbkr2A2ejeeLIcX/+SBXOZMQiY3CcMQL4TR6plaK+tDgLbAiwUL8CzVb7uLH92CvqAF2Ia7qQoyCXry5KtrvySasrAt1orfHhODUrTmc8+PSpOGpF4xnZnfWrjXO+SMYPKxqT7Xnhum5BRAzUjNFHfUaWie8QKuimGeDlqkUGz1TkLjhFIJ3jyXgrgBGiXq5XwHZuVAxWG/RV2jC0fXD+4F4Ujp2EHRCkwxB0wjUF71hAo0QRApHuVI6yyNE4iB5vknYUnEzcZ+KZXi6bNvcvWzg8sLMknOppP5UPDx8rrq/L62WSdyxT/b20tkK9btxs4LrsVYTr53z+xU3ymqsdcRYUU8QeDXWWUuKRQ9w8/HEvc5T5thZgwkUyHuJAdLSJrt9qZkZYpW0+sKfhBGDG16dCCVxX5srgf69dH0rJhwU8ztsfw+r3D/6iknox2dkiNvS6+a/w40srq0rY56hCO1wpvQsRE3o69RTgDjCf0VBPOmTWQam+qDe6El5JM9F8ezYfzYwz/oiLfFSN3ESyoc/7Y1gXGLPWuDnkoa21I8+UXBjRPV0hl7FldCQe9Afn+at1BT5OPedDVMgdhPpMBfdyjqxpL8e/XPBPtgAFxfLG2YAIQZJCuZztuEbLLfTzWUqsRKy4tPChHFItaln2y2ryJ2vc5UzJt0f/FOwJYj7hyXD/2v+s3Poi0oZywLPiEecUoFvN4HE85fZELUDw1qA65QeuyT+O9XE65blFnS1j97E4HU7gx1S3WPhYujVIi7/9AuYfL/J4QBNQDv4u8YTnzKpbS2QsIabvOFSzuN2a+J4/zV4tYdN5udBaYm3NNsHQ2dt9HVEWI/9bE+88HGC8H+6ZTv6Kj24vVEfmYf4/TwAQAIYLs7WezqAU8XhcrZ8Sd4czfkNVdU648kLcvHvz4ODef1glwpvcOVobAspecGXdkbrRqEv3As3q8lvpvQiOi/9V3l4j1/6+jrO58/tJ9u3W1Zzj5+e7Yt12ox3O/EpG2Fb9b69CP7W4OX30rw021iW00cIeXP973EWqDJVkz7fQyXsnX2pjbUXFu3R43i8HJk+Jm8564oX12/NKMka2st79CtAY+S7o3hUBgA28f8xzPAWE9ZNaP+krXq3X2OJ364BwziZeIs/CUCvUE7y0ljs6cwSTn7PDxamjsrbfb5yq7mrQgTLye+aqwXSJU85ofqa91AW7rkwcDLt9Zw/OqpNt03jY3s3eyRqjNftpt5v26ireUUVbz/V9gSeEMiNjrd3zTP40SnsPrB1tOb0/7I62dUQ7a8WDX8Hi437+hnBadhXwDf2xSXPJvfb2giWYfWNvQDF4LUA2bQKfKhk8nES20RGc7nSt3XQAxpwcKAn9Mejm8V5Y9vcVOP4yNVUZrFfZTC4YbG3Ug9Fib47Mjbff6Rfp1c7nwpxR9nB8+Sl0z+29PO6SqPmEKUiY8ShLNTTEJ3HNgKEssiwO4qmqd8i54rkOTGFKqc1lHAkndghFw8mW4UBcx5ZVDNFUh2WCDVucByCXYtEbWMYRwjZUfVgu8OYYthynV5SQKc5vdw1b7V2urloBpyE8m9CcEpSa7CnpogGByDn1/ZFWYiYLarTYJMpmKi4tlXVGRJk989HA1MQVeFoSEZmoDF1bF8HiaNU1es3TJgNM4GI2yXma1ZvrIQSaVBzv7RGOQ40m1ldyVxGYe9q72NjMAthlPC0YS5zEEwrzWc4lq8o3xVXKtJApS/HaX/qGs+OfMUrbk/OchNl357d4s2ifaCqnlXRGBG62PDgpPtYsxpLVXTb5mmHzXrODo/CWp1WZXGbvPI9c/78WSyRfHc9vvz9dM/CKkIGdx6PzNrNeNRq3putcg2ReTRMFh4o9Jzt0xdaWHSrh3S7fTjwJlzRbBj58CUIrlRwIssyixk7VzaA3GoWt84JVP9Wum1CxIWSOYlyqmJ22y9QW1Twl7t1RyMN9Tnlqd4M3ktH3Z6ITNDor48y1xBlc/JqTc+ztOiotDjBmbTssyre+f0amdrb8Evd0pT7vLvYRwIMOCfCwObDet7Hd5hR+2HyuZ0ZiRVe4Df+VeBMBBNiFt5qhbyUtjrUnUbkDsxkselFCK6EZjIhezC5NDh89PSr6s4J4dP32QfH58T4MD+pxpVh7mhTFzjFv/aG8muF3Dot/czFvpFYGj2evnwncLT3/P7pD9SPtGaqDXez6H5Usuy4mgsoiJPV6pQR7PREhkbZBC0gwYWwViE8fPtwe+m2BfcfMLy+IZyfzSiLewBWh2+xDO7o4aQIqY4Uc7o8X1NZ8gAlSjaxWOfq7bep5G58W2Du3fcsXhv9UVwMgrTNwTq01HEuhdBGbUeSrFHWLq8xOuIuYaKJ9FIIagigbYS0NJKKaym5nHU7obapGE65pB0ZrjPcqw2FD67sMSfqERnJwcMp00vYQ4PUMJHYCRBueU2kYLqBzAb1gCZJmNCf+F4grhghb65TEK4mOE7+XaR/ioOaVy76vcvhpTcHKHDmf6kyp5SZhoNAQ95i/h1IMgIPfmQzq4rzeaWyZdSJjj5WLR7/UTJUVB/yRFiKM4iSub1YGbWyZd+tbyaUYkxYdKHH7ub5hltCeaxjC2/19fXXivzWXasXCpFF9//XnJptVTX1gnHEgnqj3g3WfK1xnOHsJ1fzhjcPLU9MLi0568j8Pp17ieyBz6npGf/hPDSYN79L5j1orW50oFNIpRyCK4puCutOEH0bWZZ+MB3MZu8VJ9pJ/PaifnXdRJqyBPxSVOUZL6eBb5GkJYx4tQyELPUNQASIqTDiyTBSpDqcgkJcqbmUX8xoXMIOGOI2hQvCuUjLyMVb7ZZFyfNzyJmUlAZFFy/+EzQUi0kZLJNpCqc8yhUjlRXze1Gi5WotQ09l86CTvXwqHmmc3IuSyRCiPl6HMVViD4pbAEs3lNAZsg75SY3JHcmI4ojCysX+uD4WdLO/rda7AQaBnZN2xAJWjbGp+0lSYEqKuJhpecwvgiWLO87SSp8p84GHW9MHGZT3UW9/7nHEe1TQs9Dnbu4Zd+7pbfbcpJi2uwyqTE0YqMdUHvGBsFXp2rOgpNj2pe6iTjyuQn7RjXnL8Qb881baWKcadl4llaW1+33eaui8BGbSYW9wVw+q8TTHpxh9k2ShfG4dhiNeGoyE5c212X6s2I05vchpq+h65+rhy+m+3a4F560tiz9RuMVecsWDj2+X72IXqNZGUst8KlFDIwx8kiAPGO4X8u3vW8GwiMztxb7s1ZdR6RlcKguicxZvveh2oSaNsJHU5l5zhGWxWRW8rSS39LYUWgFfgsTDqJ44g8NT7uebvC0Lj/gsnvFH/tieMjh21tIlfELH6iRhX+1EBn+mjNxY7Sx+b8GgaObFARzIGMEpM/YGuSid3cysBjEJOSz7FxvLV7pHulkSUABkKyBy1IVqxZEDDLuGQPkLUFT+Kp+BV/EM6dj1OF5zBaHcJCXf6XjjLjwavH10t8H97vmTficvpwRlxnppcKY7iL2Q7ZF82uZ8M/3x3UFe1RynS0tcLWOmycFyB7UBmPGH4hEoZq4IG0u090a1gT2U9XyShrW/CPrWgVuKlbGqlK5dyahI1WKRQwqB1ZHeEDRQZeDTHJDN0ivX6wJLw+TZ9YuLOCDfrOAQ2xwBOY1vvCNH6BFAjtCii2xcrbU+LoxOFxYv3jA60Na8WxSz7+WrnGejkIatc2jDvtN4V4/VyYJrjom6Hv+BtG24T75wcdyTXrz51aRyQfelhD/itclGbiU9Y8fG/XYGmUx581/JMj90rkFtmTayq4jN/ewYrL9yduZWhEEdP1nr1n68ALIFxqQJzza/zbtsu8dYjmjHOUxM1HY4sU4CRlqhua7pNE7ZKYm/kusGhFWMvh2SzCTRNnckZAcOeFYD39USo2usNA21GSofFSOQQbiGmzJ0cQ6fWilU4Cyjyek4BfKl013yep0gWCCfsURXSJseiyGTL7/UCJOs47e2GhQawtmgm+bpIO06q5W5Lh4yxelVINZvw6tTALTQHqNInCSc7iHk6qiukDJBx6ICHO5cmtXw4/Zaztbl5hLaauIsFTaUA3DMDi3nAy50v+5clg6zgojQDSoEgVgp0Ak0TPwZS4kQyr0sF2akhj/OCAwaFDZD3sJE85m6sGvd01AFhOkAHtYJjgIJG6Z0aOEqxU6VmrI7Wx36ScUSVshq5ksmmXuZ5tg3/7ihhgO/Qg8EA9SBJRtmMxQlzg7LQyC23MSO8StXxCdTWebWkuOGRdIbVCRpo5hzgrTOGUTvlc4I9z4Y3XmycvHghWXAUZhy/EyVqFHgYDcyGooRKkWVluVWqWtZrgmHnIGJ2hRVEmkFcLPOZtz1y+tMrwVLg1kkanYGgkPO0fmOCWdgux+JDsVtYTlsobSsNJMLonBbxLUF6bQKHDNtPQolYFQ2rNBzxcKw6LXY09VCR4DkGfMLQVXnfoVS8aTWEACqBDYnleqWf5N7SJPFKkzXg+JuMIye7MtVabnA+nLDAN9/TwvRhtzqLTRD5HtIVOFyFkqHJmVR2VeJ0Fdyk6WDaMZGMviyEG3HZ2GJKF6SwS5VWHatsetfp6wZ6tI+2wvgf4ZzM2Rh5hw7a9fHJKBnFq1NDUkArjO0k99RX9ey0G63/IZWW3xsv5B0UFCuDdiD2c4R/D0paOOjX8f7jS7OSWOf1xh+/+uxpl8UsiAMZxvYFQ4RDcFGJpKgOvGxGLfOaszuW/ZVMJy22jWM3qHGx9ENOVolMqoXSe6fMxgwt7nEa3Z1t6LW9tT1baiHRESpSagK4j7K8XSXL06Oifm9IDK7VxYSmhFxQ1GAYCad8zuFI7vABrjsyyRJKVe42NebmrACJtCQZm/pmK0ROYLN5X4+cCZXwUhPWu0+4D5krP4EROOFMmnBCd1gpwNBtDFHLzh5d2g/T/l8vKOARuC9Mn1p+TfoXi/XAMgzzfnXmwsD//pcgIX/Ey+4OL5mtqh0iuFdUeJX59rKoXgQ2o6Vb0T6NuVilPI2oDWeDFvv48OoMd0AuynOzN15+9owrlpKrck40cu/JolS/f/HZ5xtA6edr4f1ozi0Trk+HMlHCICyVchnN2liRr7Osc66UUZ25xrZSE1qULJoISKI7LePqZDVXn8sT+OnOTSg1At/D85YZp7FJJPsajRExY+DIzDCiMpwCmuCQPejK2NQogXea9gMGvsPdP3yZ2zE+2fjN3aWzZ4oO7Yu/vqu2mBsnhliNVPhwgLXuehIaScvvOza5Fbdb33ErAYYCz2/UHgae8fqRJFzpQGwlefQu6iko2E7x/s7lBSVJOuI7W8mwwC2sO6/G3xbghDGYlGMx1qrIuWK6WmV+hf/h/CQYLOrjCxWIP89/dG8h5238Qnq9CtzQuV+ZgCmfrUEzFz9I3UqJ2uVsjKnWyt7H3GW2v0X/zvHVNEMcq9ClyO587CoX4e4d/q9YwpeyVj/fg8l48Yj+X+2/6U0Jpeazz+7Vgy2gQbX195/U+s7pC99pC2v716u+avlsWFm/EgJTfryHV8889ROqZNrUfkt9KsVMee37Lvolt+bvHrzqmPv3FVnGKVcqBudjV7lYrtwxrV/6K9L1U3mXTS8dzWR4H7OKkEUxVTGfi1gL5hi9syH0vVbsJO8nT/F2YrXJMxiQqvgojRAxJVcTTPbGCzahB01NviyNwEwGr8TtGNtmcKS6wHM4wJdyx5MiXyUs0nPVSNBR2pIfm/301dKUegCMWKh/PxRAcpP8wOinL5G4MvB4YXpfK8krclQUqwiPp8QpTa06WBWbsZ7RqsaM9fjWk1oCtKD9Vw5Co8xDevT3s7AIZ0kL+PCxlbfh2ZsZDYfY7J9zWpAxitu5B5gWtkV4/lZBbRLptKsGZaj4/+Hs7/QyyOri03aHOtl/eiPYfcrvBv/6obv+dnB0XonLOU2206c0zVdabUq0PvrRu9HN2mVV0Pd2yEyqY382Sx5fRml/S+kCumM1TUANpqCnBzDdpPd5K6oS4yCk2ngTPex1BgmJcHJLBaUI6IknoRbERVP4U7MqKMvHcaHUGoXocMQhiFJYl8tIqiQzgApUe8EjrnDuAHAWzj6IactqsXmhArpKWrw1WSXTqdZKjRbSCkzVpNv+S1euzoGiUokyrRe7WuP0J9ZAVllwSklVQ7/V5Z84PKbNrKcX9FzEU3DK2wFSpCV1x34ByvJyMPj5CTRY43BKRY3jsw2ttJ+/Rzbn97r0C97cYOd2halHUNvG/yZORcE+qqDbWit2TsJtSR3qKDiqc4s+PrSe6rZ8EVERN77sTjdvRF+nUoFU6pPco5mCSspw/9LTMdZtv1T+05sywdG7/qLBxqSLTL5UV2bMZLMLn72NUiU9+PJmebe22xSZcZB5PFNK0ty6Mo4XvBddfo4spnxVj/Jl4tOiamte+NWL0oU/WrCopClf3uVoK/awKSQ3zpPr7ha5g/4E5cu50eK/aaTPkcXG2fpHZ+Mriz+CrVXpXoKYttHE9QxKxWlTxyo55Ekw4lg5cKhOItMJfFeXuYVTeq+yITJ0U1bUTD+NduhiZC6Yl83ftlskV8z6pkOuFEgsSByNSd8QkPszu2rVe4am70AgkeFBGzGLU6pF1bOol3TGN3TEO1rxaMkIMBA9kNj/E0cuocpA+BHj2KV4VD1wFcmIio0dOObudYnVPs63lcu5TTK2D+TkapDWjNjD0780o5AmQfifWB/m5aN2IxKTgf3UsFNmHTRt4zgL2bOXmem4T9hP50qQkO/K+cq3r30EDS/+0owOrkpYx+/6+xYXfl6dHX1H7zf92Xe4i7G1yjXny3EOEIVojln0KXWPyjVdBd2FDqo4JCfGqvFk6XaZtBUlqZzFfqO1vIo44Q5zVRNebKWrbe6Y+uJD8cuF5ZWusX9dHd1sPEcXIduf1l3Z0QXyx+LzmHjorOc+u9EbCPGM+5X9C6/ca29vb9eZ8S/N2jLe3f1FphTwMsyG0PaaDl3E4txurKJLh/5UZoU1gTnmcgs7YkrOtZASFwyRyVZQ63DNOJAKOdcOoFfPBELJAeK804YVkXrpzQJ13h7am0mCEBEFhVHyZCukC96SciEhUmvZkGXICwcGV0n46tTGwJgamvZdJ81mP1yvL0VI+EuqnLUG6S1xASNBQBgOFcHaBREzB7Z3keLOyiqsMT1b1cLFK2ycolv+6lkw5RNUgKZoB/8ERM1nZ2iwfvepyJ3I77kHoyGa5YQwUbeOKfapXiOhNLgAag54+Ny/KvWkoJwTSgTJdb9YUnIn9Kf1IX9wXa8XT/EJQAhCmUeiUIrCWUz1WwpKlQAiw/uOY5Ay1qlhwQycenDqMeCuFNL6T6XSh0dfomYZMgwvkO5Pna1gs4aCOFOoZsGfnyBZovOZHz9ayaGH6pmnQI1aZf5JSdCjGtLiKW1nh9KTykeNwmLKqaowvmjnp6z4qeFtufKr0f5iJ2AKgPV4Mv/9Wjy4tzbTiR3cF9fA3P9LSo/iC+BpVQ5b5DK7WYpWRjY9WNa3NCDEDIxQYfD45Fv7FMOxNTBufIjd4rhkmNNdngunxyxrXBqo6igaXlTII2nK/Ft8kYuZGjoXisJCDAQgZMYYT9n1IbpmC2XyJ3pHilSHl53D3aYiZK7Zpr6HiLPlb3gZGXHcPxCB+DcIzP9tzUilrOMtlFtwlHERICIl1AMRlr+J32ZnqLtd78s2d4DBUc1fCZDsKfD7CQX/nHrVHmYmgJkXD/QskFQ+ww2QcmgW6ymB1/ocf6MCOzwYIV4SN1waNgHOJhO468nAbXSTRqHnK5uTWTD1URS0DrBxNoDwrkrGnRAgieT5JiBFbuz36HYK2UKoi/UAd0TI5HYphLy49AlknPKjfKdCQof+3nYOzlSGj3dtp5O3+JA3puJxKJdwRHXINAUaUoq4tbkB2WJpYlHWJ9K4gf1aMnjJ6wmTyNljIjdlOTMDmetMgFGk0hDM1MYNiJpQQzOu64tNkST9OmuL+Ng+LNr1d+ACzzzjdy0FAN1OnATvoa8pJfhAlWWRIKggFcqZg/0kgVKe6rSWyjFjhGgJPIcRhUtJMJWlW1XxNW+bKTmZHU8Jq3LS1RDbVsb5crPRSuUiQZhgm/M44LcqWxBDX9KYnsfYrF6JyizYyrsQcTl8JlToRIePZPPbT7pra8BIeo4w8NZ1IJNqiogpFCRimODGviLzoJb1FUXHNJuo6lKVYTiK65xGuwjhWpEIEQ2NgBpDpEqnfwIrwsfE4WxlFTWiPgtjhRiF3UYigCUQHcQaF9igv69puW35iXa2qcixy1TGayJaASQLMGbtPBmdp0aR6ISohtHRb4At+WHUPEOOfyFUjlC+gavN7R1Iq2FUJ8k/bO/C1WP8SMagsyguwK970S6Q5S+Cq5o2bFijdOXlety/hzSLLJ5ZwyFHL9l2gFOS9Fo3b5Vk6aXFOA7S9NKdCdWQp0B3RtOw0ySH1Cx4bgfNdHLFVsJR2UKqpCp1NKQKu2yXC3XyQe0eBxKZa1pJFHKNGEUQWjf5ykgiW5E1lswgsIscSMlAyZSaRqhIHt8TrNOY3WONtuGwUE2sYS84xK2m6ytk5kmNaKEygNV9CNOp3oJF8fRTcfJGptMCjbxQ1ngxU7Ed3Xw7p84nz6gucsUlD2d6bpfz+xE+l8+PDd/1oGec2GGe75PFNRSnfp7Cey96tJIjwE1WIvJaOUVeH20p92AiW6gIEznCPsD+S2ZM66cLIPOdVyw3PypXAFjBXlIzdFAQvHdUpyjScM+zNPa9RJTECcOIbigpxYQHghRF+f65mA0fqRzhrL+bUKsZLlu1kBMG44rX3sjRNDtAeOJb2nONBsBIECeIVzVlCEpVjGuuP26c0iqEGAFRy0q57z+aT+I4zQi9R9wHCEBARV0USWgpmrfPI9dW5QHQDdu7gzmOtYW0JecagsCFarcDLahCZAxrww7uUx8kYEIZX/KkobDZqC7NMAttBRsfUsBUKPJIfjpFViTLYBSFn2PvxFlWZpB5U5VOgSjRlNAPylKF0Nr6HBDlUpslD7ZZXiwxrU9MgOeuOxA894oKHgW8g7xa4fvfHb4cdbpGOuZ3RFUibqBLSHwfW9G4y9CSHxerUQChGYdxBnrX8ITuTndNHuZV366drkSm2VJ+iJdtVa0MUlNRMSZ2qygRdYkaOxEyVYrPtuJOwawhXWzDLiKoElrUzfpmBM8kMryOg9eWsR/AYV9gJon/J7iyUyHpUFU0Brjyb5BSTKGFCIsK/P91ivHDao+YJ5MVp5f+PcTeEJj8u1X6OH+y+gcSRBM6MIqAFynQrjZEI1fWtAQi9d9NsNAIf7wMIi+QmLMuW9VRvi1ADrKfAQtYx5wlMcCPTvgHNoTwJCZmSLwy/jlJkzHR6O1mHgMXHhdgKdl/4cQXbOD+C/X8yqeQtl2B87Xc/uKfkyqiblT6j1ZZj1+o31ohRV35ejUgAcn8jSkTx9S8EuMJy8CocBw3cmVaFjjMtKQKK+WQon05VxYTjmsVEby06vcfOHqHJiZcwJSgWqNQgCxprQidRjngwHLcOUHExdi/dJc/1tNuRipNVO7g2fvcWLIS1CGVJk7WwQ3qylmeMAjxfQd2Kg+kCTOokRe1z5OoUpusbaXsXZLau6UKsIItPLS3Zc1MAaFTVhYZVdBMUwQUyaiWRSIkc7Bj26lTEUg01BEK6UYHUAQuBAhUY5CuLTjCIsfHSw9SZBRsato5F8JuK6UkqLparOZcicLOOmkWgoWY1QGi5ipjUSjEKg2Z7dx4pny2hMF8eJG6sF6k3/bEB42OaWs0N6iA10IqEPJ96RRB8K6bDxLZtkZmUHIa58MXjmfowuDCXiO+7UMfK6uioCYaj2RFksyzGZLQfDyihThQru0VUqexXjV8hy2cVsWHV0oM330SQg91OyRR1vc4RibLx8r7uuxgHEmaXg2OI8nTS8o1EH7NqUnJ1GvtzP3WNSm5+q39c80KvkewQTt5uq0oCvt8X4jiFKPsVlHiOinINAJG2eTrF02metaoHK7CLnI0JVuU09JeBL1y4tuER2H3lDXiUIKhKhZ6aq6sLSEzj2t4Uzmv/qanpvtEiLEYUx/0ZZrl8aYTGXCFmpo5Na/+XO1KtgR9Jcm1fca+C/jwsgWfMQ5aW+GZh7osbS3PSoyRjSUqiImWUJ2Io1imQ92ojB0DGN4GdIKzRb4ONLgILE+j4LYyx1/HhdBKn7ZnBCOPMEAch3AAgcY0cFRiOV3yaqWVzInKxsR4RSCf+pYikNr0vyLwmzIOr7SAYQCIQpRRVAYlMzIpBI4AG38tJem6FkGAP5klvOX1MJ97NjnnsChL/m9PqMZdhbQQpmqOEvWlkWurcGaodqS/SwlaFkgaT6TfGGYC9aZuHan++dslp0WmGGr0jXzdlH/UpncWE1J79S0f2Tz2B7VOWXngN53jYYm4YvNFm720Doij296zTbOadTT5Z7N9qwxhZ4CAir4jbbmlAa2xh9YVyjuZRAbazAJRcLxZSN628i4BmAdrhtDDI/P7TgayLgUE950dEl0icO47FKJdKpAucoMFBOAICk+oRiKSikUdraBUKSZvOLcDBORHedkSWFfQNu4VX4+Kd0pDvSkNRpOumttuJVpzhiaOYpecGYOnb1ZBJK4dcxrTYPxLkUZjn5mQQVAR05FjMl8UkVXdSjx2ECKaWDZtyCwleMxLqmEqDN5MeduWMJkhJLcrcnCE4GZNFhAmejK1bT8JHbsrWVGtPRy3XdnwonUdR1zZcGkGEADi9YfF7i+Oh8X8kwTxCwB4Pu7wQwDw7ZLDoeRpZ6dtiQCAAwMAQOD/bJimpl3Qlh8Vkp/GaHZsguom76+H7G7gV52JtdPAjDw0Ue62otaVIaJM3r6s/b3KE0g3sxYQJfHaSUfEKIKJ3TCJetEn7qu/DUz32CRnJi7ikKyqU51NUEN23bvGiMPtxPYGYtQy5BoAk914PJ9yMPG+wmBOdzmOjpCRLqFwRkVEXG4DvyRByIoa5Sr1kuGaQXRknNHMgSwe1XSP2x6SyZ04kO+ShfV9uK9UQqPd+rgPCyI0g7wkz4VXUjy/ZgDPkEYN84lLF8cvX3ivK3bxzJ3C6qqJOSmjAMhKsijlByWGNslwlU0DLAM3GEAB1eBQtjCjTgEWkCAusJUSIAD6ucLUDGN3e2O2zurmEYerr/XBpD6w6g6v8EAizlcrsThWJFIrPZcARuc6Q2XDB+xvYBj4PPskh22bzi/jxYaNk5lhz8QJmLHBjQWRsO1aTGC3hLdeFFaoP0QNG5pMTlcqdKcNrFoJZRqPbEDnzx/8F9i/gpG2df5PpnGosjUAC+SQBhzIho0kaGlcgUMypWQe7tjTbZEA2KsYFsI3sBpsYIEayDnifMg/4kJ1JqetCzawVH2Y1RRAbMsFT21NA5yF1C0V601Nqga8RNrDOmZqyYzvu6b422WyMDYPIYBmmwxpvtS9SpLhluoMMR/q8dY/HQ6UTIg+b4Wx6RchIvXvZFoUVTYdOVkuWLDCEjVBAIL4UUGpFwZZWBHAhDRZcgVRIPBJHBD7RTRwfS8uSN0WDxjtlnhZQVJK9XLgrEYyKkslp5EtBYUEOdLSS0mJ+Vc6DID1VsOpIE2JTcNYOL8YBYTJ0pi0fI5GPsbw+gtJ3SPc6ihV9yRUQBFIjU0+EWpCGtxHW8Z7UXg8yWxzfRZy5sx5i+eWc012y9099rKsHZR1WBuV+FNkDLtgehaMRgYzsENYiwWYQpHgiZCqmyhLKfgvXGp+C73tzAPlNIKIgHsh4jLui5KykmSJZsU2sH1BK+Kpt7BK4tGWAlFIWPQRDYDmsfAqjBDzVGKt/mK3R/I6rlzgapWWsKRnQ7fEI8iFSAg+6hTUtHq7kTVB372Q0h7GoYbHcQl1Uc4WJprtwxr1BEOXyQ6Y4qAabtxNRfMrT9Ok5Xw5L958mNx0y213JA59+4GmE7jrnhmu2ui0M4L9KUQW0S+mz0MzXRcpSrQYv4sNgUhI1KpdhzZdOm2RxKKb1RMpepj4ML3sHJxcPpNvyHAoWMIdDoyQZFSMdC++wEKLjNrqK0ek+UYy0I9zSpaIJcZYrFYlKqbaVxqMC424cF1LeLDbHg5ylToyiWo1ZymBb0aAhIiVFbhelHGKSv5DFue4aGLz3odo4hptdNEjYogxbiREXGicRDpI74A2awhxSMXHnTgezjkvAZrAeHEaZhd0uOCiSy477oRrvkZhGPCsVW6D9SqUxDNeJnikVDM63spsiw/W3167QkvH1WaT7PAj8D6yEFMutfUxzcvz9f58f/9fY+MTk1PTM7Nz8wuLS8srq2sYEOi8gUEgsddpfa2x/YUM6tDTLMS2Rce5gMKxUiokDrLarD3We62NWn7H1lhI1LRI1FChRpBiBqSrvitGpyzs3nnG2gAaLQJ/ufrULteoGFnflvZ+c0Cgb/YqCk4rY+YEeZ/Jlqpa5GisajmOxu/TmEbJ4y9bAyQAQANTAhQCACihgakGQICiDnw11J72kXghsh6vbTYdNRkHNYRUVFnBqF3Xa1yGq7NOlclq/Kvhd5TYrhM6u10xcmaz5n1VpFWRPXHafzxCeWiaMmuZeW1P3f9PV6VNIdfeOy6gaOdM9jfVPYspZLJ4oJYr+XDojiOxl04c+2iggrC2nB7laca5DBEvxMlDwq2Km5sZvk/SaHLTzZVPCTlNi9Y9ntJE508jOyQnJg2xWLvH4yQFJq5Qc3v4+YEWLTucJh7MhtPUSEytcl46ovjb1HWLmc5u4xbfPxD7+S/zcwA="}},"time_used":85,"timings":{"blocked":28,"dns":0,"connect":0,"send":0,"wait":40,"receive":17,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/eicons/css/elementor-icons.min.css?ver=5.15.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.293Z","timestamp":1785145482293,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/eicons/css/elementor-icons.min.css?ver=5.15.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 23696\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":23696,"size_decoded":23906,"mime_type":"text/css","magic":"ASCII text","md5":"9d0139010a0ad3b93a9916be905ba9ab","sha1":"fd25040a55b29b869244d40fc2c554560821d071","sha256":"1c128bd96bc31f0cef26946a15e645408fb8a8a994a84ad68e305c074a0773c7","sha512":"42fc5e2ae9e0dfd72acc1b883da8ed81fca1368ce1c9c2bd2c064e98ef32fb3d8cee3d359cf4347e36c586207715dc8f217ecbe19eb863d5a6571007474437ef","ssdeep":"192:pJBiNJKK/dBsx6eO7g6aiZw+ovGInnabxEbnelK7YPp8z9EHBp4y0LsY:wFBsxSKrnabq+h8Ys","tlshash":"a9b204e49cf90a804709d1857b87b298b345b3568d84dc6cf382fa5cbbe419a49d3adc","first_seen":"2026-01-25T19:10:34.364314Z","last_seen":"2026-07-27T09:45:50.929067Z","times_seen":6,"resource_available":false,"data":"LyohIGVsZW1lbnRvci1pY29ucyAtIHY1LjE1LjAgLSAzMC0wMS0yMDIyICovCgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiBlaWNvbnM7CiAgICBzcmM6IHVybCguLi9mb250cy9laWNvbnMuZW90PzUuMTUuMCk7CiAgICBzcmM6IHVybCguLi9mb250cy9laWNvbnMuZW90PzUuMTUuMCNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoLi4vZm9udHMvZWljb25zLndvZmYyPzUuMTUuMCkgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwoLi4vZm9udHMvZWljb25zLndvZmY/NS4xNS4wKSBmb3JtYXQoIndvZmYiKSwgdXJsKC4uL2ZvbnRzL2VpY29ucy50dGY/NS4xNS4wKSBmb3JtYXQoInRydWV0eXBlIiksIHVybCguLi9mb250cy9laWNvbnMuc3ZnPzUuMTUuMCNlaWNvbikgZm9ybWF0KCJzdmciKTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXN0eWxlOiBub3JtYWwKfQoKW2NsYXNzKj0iIGVpY29uLSJdLApbY2xhc3NePWVpY29uXSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LWZhbWlseTogZWljb25zOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtdmFyaWFudDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0ZXh0LXJlbmRlcmluZzogYXV0bzsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZQp9CgpAa2V5ZnJhbWVzIGEgewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpCiAgICB9CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKQogICAgfQp9CgouZWljb24tYW5pbWF0aW9uLXNwaW4gewogICAgYW5pbWF0aW9uOiBhIDJzIGluZmluaXRlIGxpbmVhcgp9CgouZWljb24tZWRpdG9yLWxpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwMCcKfQoKLmVpY29uLWVkaXRvci11bmxpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwMScKfQoKLmVpY29uLWVkaXRvci1leHRlcm5hbC1saW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MDInCn0KCi5laWNvbi1lZGl0b3ItY2xvc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwMycKfQoKLmVpY29uLWVkaXRvci1saXN0LW9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MDQnCn0KCi5laWNvbi1lZGl0b3ItbGlzdC11bDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODA1Jwp9CgouZWljb24tZWRpdG9yLWJvbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwNicKfQoKLmVpY29uLWVkaXRvci1pdGFsaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwNycKfQoKLmVpY29uLWVkaXRvci11bmRlcmxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwOCcKfQoKLmVpY29uLWVkaXRvci1wYXJhZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwOScKfQoKLmVpY29uLWVkaXRvci1oMTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODBhJwp9CgouZWljb24tZWRpdG9yLWgyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MGInCn0KCi5laWNvbi1lZGl0b3ItaDM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwYycKfQoKLmVpY29uLWVkaXRvci1oNDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODBkJwp9CgouZWljb24tZWRpdG9yLWg1OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MGUnCn0KCi5laWNvbi1lZGl0b3ItaDY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgwZicKfQoKLmVpY29uLWVkaXRvci1xdW90ZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODEwJwp9CgouZWljb24tZWRpdG9yLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgxMScKfQoKLmVpY29uLWVsZW1lbnRvcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODEyJwp9CgouZWljb24tZWxlbWVudG9yLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODEzJwp9CgouZWljb24tcG9qb21lOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MTQnCn0KCi5laWNvbi1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MTUnCn0KCi5laWNvbi1tZW51LWJhcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODE2Jwp9CgouZWljb24tYXBwczpiZWZvcmUgewogICAgY29udGVudDogJ1xlODE3Jwp9CgouZWljb24tYWNjb3JkaW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MTgnCn0KCi5laWNvbi1hbGVydDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODE5Jwp9CgouZWljb24tYW5pbWF0aW9uLXRleHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgxYScKfQoKLmVpY29uLWFuaW1hdGlvbjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODFiJwp9CgouZWljb24tYmFubmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MWMnCn0KCi5laWNvbi1ibG9ja3F1b3RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MWQnCn0KCi5laWNvbi1idXR0b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgxZScKfQoKLmVpY29uLWNhbGwtdG8tYWN0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MWYnCn0KCi5laWNvbi1jYXB0Y2hhOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MjAnCn0KCi5laWNvbi1jYXJvdXNlbDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODIxJwp9CgouZWljb24tY2hlY2tib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyMicKfQoKLmVpY29uLWNvbHVtbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyMycKfQoKLmVpY29uLWNvdW50ZG93bjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI0Jwp9CgouZWljb24tY291bnRlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI1Jwp9CgouZWljb24tZGF0ZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI2Jwp9CgouZWljb24tZGl2aWRlci1zaGFwZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI3Jwp9CgouZWljb24tZGl2aWRlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODI4Jwp9CgouZWljb24tZG93bmxvYWQtYnV0dG9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MjknCn0KCi5laWNvbi1kdWFsLWJ1dHRvbjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODJhJwp9CgouZWljb24tZW1haWwtZmllbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgyYicKfQoKLmVpY29uLWZhY2Vib29rLWNvbW1lbnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MmMnCn0KCi5laWNvbi1mYWNlYm9vay1saWtlLWJveDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODJkJwp9CgouZWljb24tZm9ybS1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MmUnCn0KCi5laWNvbi1mb3JtLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MmYnCn0KCi5laWNvbi1nYWxsZXJ5LWdyaWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzMCcKfQoKLmVpY29uLWdhbGxlcnktZ3JvdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzMScKfQoKLmVpY29uLWdhbGxlcnktanVzdGlmaWVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MzInCn0KCi5laWNvbi1nYWxsZXJ5LW1hc29ucnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzMycKfQoKLmVpY29uLWljb24tYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MzQnCn0KCi5laWNvbi1pbWFnZS1iZWZvcmUtYWZ0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzNScKfQoKLmVpY29uLWltYWdlLWJveDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODM2Jwp9CgouZWljb24taW1hZ2UtaG90c3BvdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODM3Jwp9CgouZWljb24taW1hZ2Utcm9sbG92ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzOCcKfQoKLmVpY29uLWluZm8tYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MzknCn0KCi5laWNvbi1pbm5lci1zZWN0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4M2EnCn0KCi5laWNvbi1tYWlsY2hpbXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTgzYicKfQoKLmVpY29uLW1lbnUtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODNjJwp9CgouZWljb24tbmF2aWdhdGlvbi1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4M2QnCn0KCi5laWNvbi1uYXYtbWVudTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODNlJwp9CgouZWljb24tbmF2aWdhdGlvbi12ZXJ0aWNhbDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODNmJwp9CgouZWljb24tbnVtYmVyLWZpZWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NDAnCn0KCi5laWNvbi1wYXJhbGxheDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODQxJwp9CgouZWljb24tcGhwNzpiZWZvcmUgewogICAgY29udGVudDogJ1xlODQyJwp9CgouZWljb24tcG9zdC1saXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NDMnCn0KCi5laWNvbi1wb3N0LXNsaWRlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODQ0Jwp9CgouZWljb24tcG9zdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODQ1Jwp9CgouZWljb24tcG9zdHMtY2Fyb3VzZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg0NicKfQoKLmVpY29uLXBvc3RzLWdyaWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg0NycKfQoKLmVpY29uLXBvc3RzLWdyb3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NDgnCn0KCi5laWNvbi1wb3N0cy1qdXN0aWZpZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg0OScKfQoKLmVpY29uLXBvc3RzLW1hc29ucnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg0YScKfQoKLmVpY29uLXBvc3RzLXRpY2tlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODRiJwp9CgouZWljb24tcHJpY2UtbGlzdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODRjJwp9CgouZWljb24tcHJpY2UtdGFibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg0ZCcKfQoKLmVpY29uLXJhZGlvOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NGUnCn0KCi5laWNvbi1ydGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg0ZicKfQoKLmVpY29uLXNjcm9sbDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODUwJwp9CgouZWljb24tc2VhcmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NTEnCn0KCi5laWNvbi1zZWxlY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg1MicKfQoKLmVpY29uLXNoYXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NTMnCn0KCi5laWNvbi1zaWRlYmFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NTQnCn0KCi5laWNvbi1za2lsbC1iYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg1NScKfQoKLmVpY29uLXNsaWRlci0zZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODU2Jwp9CgouZWljb24tc2xpZGVyLWFsYnVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NTcnCn0KCi5laWNvbi1zbGlkZXItZGV2aWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NTgnCn0KCi5laWNvbi1zbGlkZXItZnVsbC1zY3JlZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg1OScKfQoKLmVpY29uLXNsaWRlci1wdXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NWEnCn0KCi5laWNvbi1zbGlkZXItdmVydGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg1YicKfQoKLmVpY29uLXNsaWRlci12aWRlbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlODVjJwp9CgouZWljb24tc2xpZGVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NWQnCn0KCi5laWNvbi1zb2NpYWwtaWNvbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg1ZScKfQoKLmVpY29uLXNwYWNlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODVmJwp9CgouZWljb24tdGFibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg2MCcKfQoKLmVpY29uLXRhYnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg2MScKfQoKLmVpY29uLXRlbC1maWVsZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODYyJwp9CgouZWljb24tdGV4dC1hcmVhOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NjMnCn0KCi5laWNvbi10ZXh0LWZpZWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NjQnCn0KCi5laWNvbi10aHVtYm5haWxzLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg2NScKfQoKLmVpY29uLXRodW1ibmFpbHMtaGFsZjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODY2Jwp9CgouZWljb24tdGh1bWJuYWlscy1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODY3Jwp9CgouZWljb24tdGltZS1saW5lOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NjgnCn0KCi5laWNvbi10b2dnbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg2OScKfQoKLmVpY29uLXVybDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODZhJwp9CgouZWljb24tdC1sZXR0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg2YicKfQoKLmVpY29uLXdvcmRwcmVzczpiZWZvcmUgewogICAgY29udGVudDogJ1xlODZjJwp9CgouZWljb24tdGV4dDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODZkJwp9CgouZWljb24tYW5jaG9yOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NmUnCn0KCi5laWNvbi1idWxsZXQtbGlzdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODZmJwp9CgouZWljb24tY29kZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODcwJwp9CgouZWljb24tZmF2b3JpdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg3MScKfQoKLmVpY29uLWdvb2dsZS1tYXBzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NzInCn0KCi5laWNvbi1pbWFnZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODczJwp9CgouZWljb24tcGhvdG8tbGlicmFyeTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODc0Jwp9CgouZWljb24td29vY29tbWVyY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg3NScKfQoKLmVpY29uLXlvdXR1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg3NicKfQoKLmVpY29uLWZsaXAtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4NzcnCn0KCi5laWNvbi1zZXR0aW5nczpiZWZvcmUgewogICAgY29udGVudDogJ1xlODc4Jwp9CgouZWljb24taGVhZHBob25lczpiZWZvcmUgewogICAgY29udGVudDogJ1xlODc5Jwp9CgouZWljb24tdGVzdGltb25pYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg3YScKfQoKLmVpY29uLWNvdW50ZXItY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4N2InCn0KCi5laWNvbi1wZXJzb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg3YycKfQoKLmVpY29uLWNoZXZyb24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg3ZCcKfQoKLmVpY29uLWNoZXZyb24tbGVmdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODdlJwp9CgouZWljb24tY2xvc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg3ZicKfQoKLmVpY29uLWZpbGUtZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4MCcKfQoKLmVpY29uLXNhdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4MScKfQoKLmVpY29uLXpvb20taW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4MicKfQoKLmVpY29uLXNob3J0Y29kZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODgzJwp9CgouZWljb24tbmVyZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODg0Jwp9CgouZWljb24tZGV2aWNlLWRlc2t0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4NScKfQoKLmVpY29uLWRldmljZS10YWJsZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4NicKfQoKLmVpY29uLWRldmljZS1tb2JpbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4NycKfQoKLmVpY29uLWRvY3VtZW50LWZpbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4OCcKfQoKLmVpY29uLWZvbGRlci1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ODknCn0KCi5laWNvbi1oeXBzdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4OGEnCn0KCi5laWNvbi1oLWFsaWduLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4YicKfQoKLmVpY29uLWgtYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4YycKfQoKLmVpY29uLWgtYWxpZ24tY2VudGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4OGQnCn0KCi5laWNvbi1oLWFsaWduLXN0cmV0Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg4ZScKfQoKLmVpY29uLXYtYWxpZ24tdG9wOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4OGYnCn0KCi5laWNvbi12LWFsaWduLWJvdHRvbTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODkwJwp9CgouZWljb24tdi1hbGlnbi1taWRkbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg5MScKfQoKLmVpY29uLXYtYWxpZ24tc3RyZXRjaDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODkyJwp9CgouZWljb24tcHJvLWljb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg5MycKfQoKLmVpY29uLW1haWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg5NCcKfQoKLmVpY29uLWxvY2stdXNlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlODk1Jwp9CgouZWljb24tdGVzdGltb25pYWwtY2Fyb3VzZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg5NicKfQoKLmVpY29uLW1lZGlhLWNhcm91c2VsOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4OTcnCn0KCi5laWNvbi1zZWN0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4OTgnCn0KCi5laWNvbi1jb2x1bW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg5OScKfQoKLmVpY29uLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg5YScKfQoKLmVpY29uLWNsb25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4OWInCn0KCi5laWNvbi10cmFzaDpiZWZvcmUgewogICAgY29udGVudDogJ1xlODljJwp9CgouZWljb24tcGxheTpiZWZvcmUgewogICAgY29udGVudDogJ1xlODlkJwp9CgouZWljb24tYW5nbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg5ZScKfQoKLmVpY29uLWFuZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTg5ZicKfQoKLmVpY29uLWFuaW1hdGVkLWhlYWRsaW5lOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YTAnCn0KCi5laWNvbi1tZW51LXRvZ2dsZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGExJwp9CgouZWljb24tZmItZW1iZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThhMicKfQoKLmVpY29uLWZiLWZlZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThhMycKfQoKLmVpY29uLXR3aXR0ZXItZW1iZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThhNCcKfQoKLmVpY29uLXR3aXR0ZXItZmVlZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGE1Jwp9CgouZWljb24tc3luYzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGE2Jwp9CgouZWljb24taW1wb3J0LWV4cG9ydDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGE3Jwp9CgouZWljb24tY2hlY2stY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YTgnCn0KCi5laWNvbi1saWJyYXJ5LXNhdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThhOScKfQoKLmVpY29uLWxpYnJhcnktZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThhYScKfQoKLmVpY29uLWluc2VydDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGFiJwp9CgouZWljb24tcHJldmlldy1tZWRpdW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThhYycKfQoKLmVpY29uLXNvcnQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGFkJwp9CgouZWljb24tc29ydC11cDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGFlJwp9CgouZWljb24taGVhZGluZzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGFmJwp9CgouZWljb24tbG9nbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGIwJwp9CgouZWljb24tbWV0YS1kYXRhOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YjEnCn0KCi5laWNvbi1wb3N0LWNvbnRlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThiMicKfQoKLmVpY29uLXBvc3QtZXhjZXJwdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGIzJwp9CgouZWljb24tcG9zdC1uYXZpZ2F0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YjQnCn0KCi5laWNvbi15b2FzdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGI1Jwp9CgouZWljb24tbmVyZC1jaHVja2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YjYnCn0KCi5laWNvbi1uZXJkLXdpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThiNycKfQoKLmVpY29uLWNvbW1lbnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YjgnCn0KCi5laWNvbi1kb3dubG9hZC1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGI5Jwp9CgouZWljb24tbGlicmFyeS11cGxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThiYScKfQoKLmVpY29uLXNhdmUtbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGJiJwp9CgouZWljb24tdXBsb2FkLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YmMnCn0KCi5laWNvbi1lbGxpcHNpcy1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YmQnCn0KCi5laWNvbi1lbGxpcHNpcy12OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YmUnCn0KCi5laWNvbi1hcnJvdy1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YmYnCn0KCi5laWNvbi1hcnJvdy1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGMwJwp9CgouZWljb24tYXJyb3ctdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThjMScKfQoKLmVpY29uLWFycm93LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThjMicKfQoKLmVpY29uLXBsYXktbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGMzJwp9CgouZWljb24tYXJjaGl2ZS1wb3N0czpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGM0Jwp9CgouZWljb24tYXJjaGl2ZS10aXRsZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGM1Jwp9CgouZWljb24tZmVhdHVyZWQtaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThjNicKfQoKLmVpY29uLXBvc3QtaW5mbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGM3Jwp9CgouZWljb24tcG9zdC10aXRsZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGM4Jwp9CgouZWljb24tc2l0ZS1sb2dvOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YzknCn0KCi5laWNvbi1zaXRlLXNlYXJjaDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGNhJwp9CgouZWljb24tc2l0ZS10aXRsZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGNiJwp9CgouZWljb24tcGx1cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThjYycKfQoKLmVpY29uLW1pbnVzLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGNkJwp9CgouZWljb24tY2xvdWQtY2hlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThjZScKfQoKLmVpY29uLWRyYWctbi1kcm9wOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4Y2YnCn0KCi5laWNvbi13ZWxjb21lOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZDAnCn0KCi5laWNvbi1oYW5kbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThkMScKfQoKLmVpY29uLWNhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThkMicKfQoKLmVpY29uLXByb2R1Y3QtYWRkLXRvLWNhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThkMycKfQoKLmVpY29uLXByb2R1Y3QtYnJlYWRjcnVtYnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThkNCcKfQoKLmVpY29uLXByb2R1Y3QtY2F0ZWdvcmllczpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGQ1Jwp9CgouZWljb24tcHJvZHVjdC1kZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGQ2Jwp9CgouZWljb24tcHJvZHVjdC1pbWFnZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThkNycKfQoKLmVpY29uLXByb2R1Y3QtaW5mbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGQ4Jwp9CgouZWljb24tcHJvZHVjdC1tZXRhOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZDknCn0KCi5laWNvbi1wcm9kdWN0LXBhZ2VzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZGEnCn0KCi5laWNvbi1wcm9kdWN0LXByaWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZGInCn0KCi5laWNvbi1wcm9kdWN0LXJhdGluZzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGRjJwp9CgouZWljb24tcHJvZHVjdC1yZWxhdGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZGQnCn0KCi5laWNvbi1wcm9kdWN0LXN0b2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZGUnCn0KCi5laWNvbi1wcm9kdWN0LXRhYnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThkZicKfQoKLmVpY29uLXByb2R1Y3QtdGl0bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThlMCcKfQoKLmVpY29uLXByb2R1Y3QtdXBzZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTEnCn0KCi5laWNvbi1wcm9kdWN0czpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGUyJwp9CgouZWljb24tYmFnLWxpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTMnCn0KCi5laWNvbi1iYWctbWVkaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTQnCn0KCi5laWNvbi1iYWctc29saWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThlNScKfQoKLmVpY29uLWJhc2tldC1saWdodDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGU2Jwp9CgouZWljb24tYmFza2V0LW1lZGl1bTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGU3Jwp9CgouZWljb24tYmFza2V0LXNvbGlkOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTgnCn0KCi5laWNvbi1jYXJ0LWxpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTknCn0KCi5laWNvbi1jYXJ0LW1lZGl1bTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGVhJwp9CgouZWljb24tY2FydC1zb2xpZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGViJwp9CgouZWljb24tZXhjaGFuZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThlYycKfQoKLmVpY29uLXByZXZpZXctdGhpbjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGVkJwp9CgouZWljb24tZGV2aWNlLWxhcHRvcDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGVlJwp9CgouZWljb24tY29sbGFwc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThlZicKfQoKLmVpY29uLWV4cGFuZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGYwJwp9CgouZWljb24tbmF2aWdhdG9yOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZjEnCn0KCi5laWNvbi1wbHVnOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZjInCn0KCi5laWNvbi1kYXNoYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThmMycKfQoKLmVpY29uLXR5cG9ncmFwaHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThmNCcKfQoKLmVpY29uLWluZm8tY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThmNScKfQoKLmVpY29uLWludGVncmF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZjYnCn0KCi5laWNvbi1wbHVzLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZjcnCn0KCi5laWNvbi1yYXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThmOCcKfQoKLmVpY29uLXJldmlldzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGY5Jwp9CgouZWljb24tdG9vbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThmYScKfQoKLmVpY29uLWxvYWRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThmYicKfQoKLmVpY29uLXNpdGVtYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThmYycKfQoKLmVpY29uLWNsaWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZmQnCn0KCi5laWNvbi1jbG9jazpiZWZvcmUgewogICAgY29udGVudDogJ1xlOGZlJwp9CgouZWljb24tbGlicmFyeS1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZmYnCn0KCi5laWNvbi13YXJuaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MDAnCn0KCi5laWNvbi1mbG93OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MDEnCn0KCi5laWNvbi1jdXJzb3ItbW92ZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTAyJwp9CgouZWljb24tYXJyb3ctY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkwMycKfQoKLmVpY29uLWZsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MDQnCn0KCi5laWNvbi1yZWRvOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MDUnCn0KCi5laWNvbi1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkwNicKfQoKLmVpY29uLWJhcmNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkwNycKfQoKLmVpY29uLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MDgnCn0KCi5laWNvbi1jYXJldC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MDknCn0KCi5laWNvbi1jYXJldC1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTBhJwp9CgouZWljb24tY2FyZXQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkwYicKfQoKLmVpY29uLWNoYWluLWJyb2tlbjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTBjJwp9CgouZWljb24tY2hlY2stY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkwZCcKfQoKLmVpY29uLWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MGUnCn0KCi5laWNvbi1jaGV2cm9uLWRvdWJsZS1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MGYnCn0KCi5laWNvbi1jaGV2cm9uLWRvdWJsZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTEwJwp9CgouZWljb24tdW5kbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTExJwp9CgouZWljb24tZmlsdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MTInCn0KCi5laWNvbi1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTEzJwp9CgouZWljb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MTQnCn0KCi5laWNvbi1jbG9jay1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MTUnCn0KCi5laWNvbi1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkxNicKfQoKLmVpY29uLWNvZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkxNycKfQoKLmVpY29uLWNvbW1lbnRpbmctbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTE4Jwp9CgouZWljb24tY29weTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTE5Jwp9CgouZWljb24tZGF0YWJhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkxYScKfQoKLmVpY29uLWRvdC1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTFiJwp9CgouZWljb24tZW52ZWxvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkxYycKfQoKLmVpY29uLWV4dGVybmFsLWxpbmstc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MWQnCn0KCi5laWNvbi1leWVkcm9wcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MWUnCn0KCi5laWNvbi1mb2xkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkxZicKfQoKLmVpY29uLWZvbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyMCcKfQoKLmVpY29uLWFkanVzdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTIxJwp9CgouZWljb24tbGlnaHRib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyMicKfQoKLmVpY29uLWhlYXJ0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyMycKfQoKLmVpY29uLWhpc3Rvcnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyNCcKfQoKLmVpY29uLWltYWdlLWJvbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyNScKfQoKLmVpY29uLWluZm8tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MjYnCn0KCi5laWNvbi1saW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MjcnCn0KCi5laWNvbi1sb25nLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyOCcKfQoKLmVpY29uLWxvbmctYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyOScKfQoKLmVpY29uLWNhcmV0LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyYScKfQoKLmVpY29uLXBhaW50LWJydXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MmInCn0KCi5laWNvbi1wZW5jaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyYycKfQoKLmVpY29uLXBsdXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MmQnCn0KCi5laWNvbi16b29tLWluLWJvbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyZScKfQoKLmVpY29uLXNvcnQtYW1vdW50LWRlc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkyZicKfQoKLmVpY29uLXNpZ24tb3V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MzAnCn0KCi5laWNvbi1zcGlubmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MzEnCn0KCi5laWNvbi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkzMicKfQoKLmVpY29uLXN0YXItbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTMzJwp9CgouZWljb24tc3RhcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTM0Jwp9CgouZWljb24tdGV4dC1hbGlnbi1qdXN0aWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MzUnCn0KCi5laWNvbi10ZXh0LWFsaWduLWNlbnRlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTM2Jwp9CgouZWljb24tdGFnczpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTM3Jwp9CgouZWljb24tdGV4dC1hbGlnbi1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MzgnCn0KCi5laWNvbi10ZXh0LWFsaWduLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5MzknCn0KCi5laWNvbi1jbG9zZS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkzYScKfQoKLmVpY29uLXRyYXNoLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTkzYicKfQoKLmVpY29uLWZvbnQtYXdlc29tZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTNjJwp9CgouZWljb24tdXNlci1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTNkJwp9CgouZWljb24tdmlkZW8tY2FtZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5M2UnCn0KCi5laWNvbi1oZWFydDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTNmJwp9CgouZWljb24td3JlbmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NDAnCn0KCi5laWNvbi1oZWxwOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NDEnCn0KCi5laWNvbi1oZWxwLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk0MicKfQoKLmVpY29uLXpvb20tb3V0LWJvbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk0MycKfQoKLmVpY29uLXBsdXMtc3F1YXJlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk0NCcKfQoKLmVpY29uLW1pbnVzLXNxdWFyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NDUnCn0KCi5laWNvbi1taW51cy1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk0NicKfQoKLmVpY29uLW1pbnVzLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NDcnCn0KCi5laWNvbi1jb2RlLWJvbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk0OCcKfQoKLmVpY29uLWNsb3VkLXVwbG9hZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTQ5Jwp9CgouZWljb24tc2VhcmNoLWJvbGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk0YScKfQoKLmVpY29uLW1hcC1waW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk0YicKfQoKLmVpY29uLW1lZXR1cDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTRjJwp9CgouZWljb24tc2xpZGVzaG93OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NGQnCn0KCi5laWNvbi10LWxldHRlci1ib2xkOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NGUnCn0KCi5laWNvbi1wcmVmZXJlbmNlczpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTRmJwp9CgouZWljb24tdGFibGUtb2YtY29udGVudHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk1MCcKfQoKLmVpY29uLXR2OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NTEnCn0KCi5laWNvbi11cGxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk1MicKfQoKLmVpY29uLWluc3RhZ3JhbS1jb21tZW50czpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTUzJwp9CgouZWljb24taW5zdGFncmFtLW5lc3RlZC1nYWxsZXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NTQnCn0KCi5laWNvbi1pbnN0YWdyYW0tcG9zdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTU1Jwp9CgouZWljb24taW5zdGFncmFtLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NTYnCn0KCi5laWNvbi1pbnN0YWdyYW0tZ2FsbGVyeTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTU3Jwp9CgouZWljb24taW5zdGFncmFtLWxpa2VzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NTgnCn0KCi5laWNvbi1mYWNlYm9vazpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTU5Jwp9CgouZWljb24tdHdpdHRlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTVhJwp9CgouZWljb24tcGludGVyZXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NWInCn0KCi5laWNvbi1mcmFtZS1leHBhbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk1YycKfQoKLmVpY29uLWZyYW1lLW1pbmltaXplOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NWQnCn0KCi5laWNvbi1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NWUnCn0KCi5laWNvbi1jb2xvcnMtdHlwb2dyYXBoeTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTVmJwp9CgouZWljb24tY3VzdG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NjAnCn0KCi5laWNvbi1mb290ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk2MScKfQoKLmVpY29uLWhlYWRlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTYyJwp9CgouZWljb24tbGF5b3V0LXNldHRpbmdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NjMnCn0KCi5laWNvbi1saWdodGJveC1leHBhbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk2NCcKfQoKLmVpY29uLWVycm9yLTQwNDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTY1Jwp9CgouZWljb24tdGhlbWUtc3R5bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk2NicKfQoKLmVpY29uLXNlYXJjaC1yZXN1bHRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NjcnCn0KCi5laWNvbi1zaW5nbGUtcG9zdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTY4Jwp9CgouZWljb24tc2l0ZS1pZGVudGl0eTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTY5Jwp9CgouZWljb24tdGhlbWUtYnVpbGRlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTZhJwp9CgouZWljb24tZG93bmxvYWQtYm9sZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTZiJwp9CgouZWljb24tc2hhcmUtYXJyb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk2YycKfQoKLmVpY29uLWdsb2JhbC1zZXR0aW5nczpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTZkJwp9CgouZWljb24tdXNlci1wcmVmZXJlbmNlczpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTZlJwp9CgouZWljb24tbG9jazpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTZmJwp9CgouZWljb24tZXhwb3J0LWtpdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTcwJwp9CgouZWljb24taW1wb3J0LWtpdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTcxJwp9CgouZWljb24tbG90dGllOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NzInCn0KCi5laWNvbi1wcm9kdWN0cy1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NzMnCn0KCi5laWNvbi1zaW5nbGUtcHJvZHVjdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTc0Jwp9CgouZWljb24tZGlzYWJsZS10cmFzaC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NzUnCn0KCi5laWNvbi1zaW5nbGUtcGFnZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTc2Jwp9CgouZWljb24td29yZHByZXNzLWxpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NzcnCn0KCi5laWNvbi1jb2dzLWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NzgnCn0KCi5laWNvbi1jdXN0b20tY3NzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5NzknCn0KCi5laWNvbi1nbG9iYWwtY29sb3JzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5N2EnCn0KCi5laWNvbi1nbG9iZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTdiJwp9CgouZWljb24tdHlwb2dyYXBoeS0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5N2MnCn0KCi5laWNvbi1iYWNrZ3JvdW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5N2QnCn0KCi5laWNvbi1kZXZpY2UtcmVzcG9uc2l2ZTpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTdlJwp9CgouZWljb24tZGV2aWNlLXdpZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk3ZicKfQoKLmVpY29uLWNvZGUtaGlnaGxpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5ODAnCn0KCi5laWNvbi12aWRlby1wbGF5bGlzdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTgxJwp9CgouZWljb24tZG93bmxvYWQta2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5ODInCn0KCi5laWNvbi1raXQtZGV0YWlsczpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTgzJwp9CgouZWljb24ta2l0LXBhcnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5ODQnCn0KCi5laWNvbi1raXQtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5ODUnCn0KCi5laWNvbi1raXQtcGx1Z2luczpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTg2Jwp9CgouZWljb24ta2l0LXVwbG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk4NycKfQoKLmVpY29uLWhvdHNwb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk4OCcKfQoKLmVpY29uLXBheXBhbC1idXR0b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk4OScKfQoKLmVpY29uLXNoYXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OGEnCn0KCi5laWNvbi13b3JkYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OGInCn0KCi5laWNvbi1jaGVja291dDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOThjJwp9CgouZWljb24tY29udGFpbmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OGQnCn0KCi5laWNvbi1mbGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OGUnCn0KCi5laWNvbi1pbmZvOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OGYnCn0KCi5laWNvbi1teS1hY2NvdW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OTAnCn0KCi5laWNvbi1wdXJjaGFzZS1zdW1tYXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OTEnCn0KCi5laWNvbi1wYWdlLXRyYW5zaXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk5MicKfQoKLmVpY29uLXNwb3RpZnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk5MycKfQoKLmVpY29uLXN0cmlwZS1idXR0b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk5NCcKfQoKLmVpY29uLXdvby1zZXR0aW5nczpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTk1Jwp9CgouZWljb24td29vLWNhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk5NicKfQoKLmVpY29uLWdyb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk5NycKfQoKLmVpY29uLW9yZGVyLWVuZDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTk4Jwp9CgouZWljb24tbm93cmFwOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OTknCn0KCi5laWNvbi1vcmRlci1zdGFydDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTlhJwp9CgouZWljb24tcHJvZ3Jlc3MtdHJhY2tlcjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTliJwp9CgouZWljb24tc2hyaW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OWMnCn0KCi5laWNvbi13cmFwOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5OWQnCn0KCi5laWNvbi1hbGlnbi1jZW50ZXItaDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOTllJwp9CgouZWljb24tYWxpZ24tY2VudGVyLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTk5ZicKfQoKLmVpY29uLWFsaWduLWVuZC1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5YTAnCn0KCi5laWNvbi1hbGlnbi1lbmQtdjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOWExJwp9CgouZWljb24tYWxpZ24tc3RhcnQtaDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOWEyJwp9CgouZWljb24tYWxpZ24tc3RhcnQtdjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOWEzJwp9CgouZWljb24tYWxpZ24tc3RyZXRjaC1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5YTQnCn0KCi5laWNvbi1hbGlnbi1zdHJldGNoLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTlhNScKfQoKLmVpY29uLWp1c3RpZnktY2VudGVyLWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTlhNicKfQoKLmVpY29uLWp1c3RpZnktY2VudGVyLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTlhNycKfQoKLmVpY29uLWp1c3RpZnktZW5kLWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTlhOCcKfQoKLmVpY29uLWp1c3RpZnktZW5kLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTlhOScKfQoKLmVpY29uLWp1c3RpZnktc3BhY2UtYXJvdW5kLWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTlhYScKfQoKLmVpY29uLWp1c3RpZnktc3BhY2UtYXJvdW5kLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTlhYicKfQoKLmVpY29uLWp1c3RpZnktc3BhY2UtYmV0d2Vlbi1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5YWMnCn0KCi5laWNvbi1qdXN0aWZ5LXNwYWNlLWJldHdlZW4tdjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOWFkJwp9CgouZWljb24tanVzdGlmeS1zcGFjZS1ldmVubHktaDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOWFlJwp9CgouZWljb24tanVzdGlmeS1zcGFjZS1ldmVubHktdjpiZWZvcmUgewogICAgY29udGVudDogJ1xlOWFmJwp9CgouZWljb24tanVzdGlmeS1zdGFydC1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5YjAnCn0KCi5laWNvbi1qdXN0aWZ5LXN0YXJ0LXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTliMScKfQoKLmVpY29uLXdvb2NvbW1lcmNlLWNyb3NzLXNlbGxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5YjInCn0KCi5laWNvbi13b29jb21tZXJjZS1ub3RpY2VzOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU5YjMnCn0KCi5laWNvbi1pbm5lci1jb250YWluZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZTliNCcKfQoKLmVpY29uLXdhcm5pbmctZnVsbDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOWI1Jwp9CgouZWljb24tZXhpdDpiZWZvcmUgewogICAgY29udGVudDogJ1xlOWI2Jwp9CgouZWljb24tZXllOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4YWMnCn0KCi5laWNvbi1lbGVtZW50b3Itc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4MTMnCn0="}},"time_used":178,"timings":{"blocked":77,"dns":0,"connect":0,"send":0,"wait":101,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"translate.yandex.net/website-widget/v1/widget.js?widgetId=ytWidget\u0026pageLang=zh\u0026widgetTheme=light\u0026autoMode=true","fqdn":"translate.yandex.net","domain":"yandex.net","tld":"net"},"ip":{"addr":"213.180.204.194","port":443,"asn":13238,"as":"YANDEX LLC","country":"Russia","country_code":"RU"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.382Z","timestamp":1785145482382,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /website-widget/v1/widget.js?widgetId=ytWidget\u0026pageLang=zh\u0026widgetTheme=light\u0026autoMode=true HTTP/1.1\r\nHost: translate.yandex.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://betaroi.ltd/\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 429 \r\naccept-ch: Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model, Sec-CH-UA-Bitness\r\nset-cookie: _yasc=ED0XR2+0beQv4hRjzLFoHYDb6ihDl71lhfEfi8sLzUjqM6rWLMvqwmIyNcYX96I8zhc=; domain=.yandex.net; path=/; expires=Thu, 24 Jul 2036 09:44:42 GMT; SameSite=None; Secure\nbh=YIrRnNMGahfcyuH/CJLYobEDn8/14QzlyPCOA5S2Ag==; Expires=Tue, 31 Aug 2027 09:44:42 GMT; SameSite=None; Secure\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"429","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"text/plain","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.min.css?ver=5.0.10","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.299Z","timestamp":1785145482299,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.min.css?ver=5.0.10 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 32468\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":32468,"size_decoded":32678,"mime_type":"text/css","magic":"ASCII text","md5":"d6cf6af5d1f307a0c3cb9d9c054ce2d4","sha1":"7566aea9ab48f22a1a10da0d6f71a861c6574d18","sha256":"0b9e2918b6a5023cb744e4d146d5448da0e68e8544527e8aef0d2d26ec94e313","sha512":"1b56daa8485c8ba9d868e3dbb6daf9eb690567136b69fcf3ebfc326a4da778ee73ec0da3bc1580ae745afd1704f8e572b9412bbf51b09edd896bf8d7ca3265d3","ssdeep":"384:0S1BYdXiSmbulserd1QNcfxHI5HjusHENl:0ABY1iSjd1QNcfxHIduGE","tlshash":"59e2926c83ae58d2628c7c89360b76507b3837db59895848f3837e4dcec356662e1f8d","first_seen":"2024-10-11T08:24:47.434355Z","last_seen":"2026-07-27T10:21:19.507034Z","times_seen":31,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCi5mYS5mYS1nbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDAwIgp9CgouZmEuZmEtbWVldHVwIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXN0YXItbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3Rhci1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDUiCn0KCi5mYS5mYS1jbG9zZTpiZWZvcmUsCi5mYS5mYS1yZW1vdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZCIKfQoKLmZhLmZhLWdlYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMyIKfQoKLmZhLmZhLXRyYXNoLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRyYXNoLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlZCIKfQoKLmZhLmZhLWZpbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWIiCn0KCi5mYS5mYS1jbG9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jbG9jay1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTciCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1kb3duIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTgiCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby11cCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYXJyb3ctY2lyY2xlLW8tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YiIKfQoKLmZhLmZhLXBsYXktY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXBsYXktY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NCIKfQoKLmZhLmZhLXJlcGVhdDpiZWZvcmUsCi5mYS5mYS1yb3RhdGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxZSIKfQoKLmZhLmZhLXJlZnJlc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyMSIKfQoKLmZhLmZhLWxpc3QtYWx0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kZWRlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzYiIKfQoKLmZhLmZhLXZpZGVvLWNhbWVyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNkIgp9CgouZmEuZmEtcGljdHVyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1waWN0dXJlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZSIKfQoKLmZhLmZhLXBob3RvIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1waG90bzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNlIgp9CgouZmEuZmEtaW1hZ2UgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWltYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwM2UiCn0KCi5mYS5mYS1wZW5jaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwMyIKfQoKLmZhLmZhLW1hcC1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNjNSIKfQoKLmZhLmZhLXBlbmNpbC1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGVuY2lsLXNxdWFyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNDQiCn0KCi5mYS5mYS1zaGFyZS1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc2hhcmUtc3F1YXJlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0ZCIKfQoKLmZhLmZhLWNoZWNrLXNxdWFyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jaGVjay1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTRhIgp9CgouZmEuZmEtYXJyb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjIiCn0KCi5mYS5mYS10aW1lcy1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGltZXMtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1NyIKfQoKLmZhLmZhLWNoZWNrLWNpcmNsZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jaGVjay1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU4Igp9CgouZmEuZmEtbWFpbC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjQiCn0KCi5mYS5mYS1leHBhbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNCIKfQoKLmZhLmZhLWNvbXByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjIiCn0KCi5mYS5mYS1leWUsCi5mYS5mYS1leWUtc2xhc2ggewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXdhcm5pbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MSIKfQoKLmZhLmZhLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzMiCn0KCi5mYS5mYS1hcnJvd3MtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzM4Igp9CgouZmEuZmEtYXJyb3dzLWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzNyIKfQoKLmZhLmZhLWJhci1jaGFydCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFyLWNoYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODAiCn0KCi5mYS5mYS1iYXItY2hhcnQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFyLWNoYXJ0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MCIKfQoKLmZhLmZhLWZhY2Vib29rLXNxdWFyZSwKLmZhLmZhLXR3aXR0ZXItc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdlYXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODUiCn0KCi5mYS5mYS10aHVtYnMtby11cCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGh1bWJzLW8tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NCIKfQoKLmZhLmZhLXRodW1icy1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRodW1icy1vLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NSIKfQoKLmZhLmZhLWhlYXJ0LW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhlYXJ0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwNCIKfQoKLmZhLmZhLXNpZ24tb3V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjUiCn0KCi5mYS5mYS1saW5rZWRpbi1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlua2VkaW4tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOGMiCn0KCi5mYS5mYS10aHVtYi10YWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOGQiCn0KCi5mYS5mYS1leHRlcm5hbC1saW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNWQiCn0KCi5mYS5mYS1zaWduLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjYiCn0KCi5mYS5mYS1naXRodWItc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWxlbW9uLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWxlbW9uLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5NCIKfQoKLmZhLmZhLXNxdWFyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM4Igp9CgouZmEuZmEtYm9va21hcmstbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYm9va21hcmstbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJlIgp9CgouZmEuZmEtZmFjZWJvb2ssCi5mYS5mYS10d2l0dGVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZhY2Vib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWUiCn0KCi5mYS5mYS1mYWNlYm9vay1mIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZhY2Vib29rLWY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZSIKfQoKLmZhLmZhLWdpdGh1YiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jcmVkaXQtY2FyZCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmVlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDllIgp9CgouZmEuZmEtaGRkLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhkZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTAiCn0KCi5mYS5mYS1oYW5kLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE0Igp9CgouZmEuZmEtaGFuZC1vLWxlZnQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTUiCn0KCi5mYS5mYS1oYW5kLW8tdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE2Igp9CgouZmEuZmEtaGFuZC1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTciCn0KCi5mYS5mYS1hcnJvd3MtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMWUiCn0KCi5mYS5mYS1ncm91cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGMwIgp9CgouZmEuZmEtY2hhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMSIKfQoKLmZhLmZhLXNjaXNzb3JzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzQiCn0KCi5mYS5mYS1maWxlcy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlcy1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzUiCn0KCi5mYS5mYS1mbG9wcHktbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmxvcHB5LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNyIKfQoKLmZhLmZhLW5hdmljb246YmVmb3JlLAouZmEuZmEtcmVvcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM5Igp9CgouZmEuZmEtZ29vZ2xlLXBsdXMsCi5mYS5mYS1nb29nbGUtcGx1cy1zcXVhcmUsCi5mYS5mYS1waW50ZXJlc3QsCi5mYS5mYS1waW50ZXJlc3Qtc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdvb2dsZS1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDUiCn0KCi5mYS5mYS1tb25leSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbW9uZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMSIKfQoKLmZhLmZhLXVuc29ydGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGMiCn0KCi5mYS5mYS1zb3J0LWRlc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkZCIKfQoKLmZhLmZhLXNvcnQtYXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGUiCn0KCi5mYS5mYS1saW5rZWRpbiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saW5rZWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGUxIgp9CgouZmEuZmEtcm90YXRlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMiIKfQoKLmZhLmZhLWxlZ2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTMiCn0KCi5mYS5mYS1kYXNoYm9hcmQ6YmVmb3JlLAouZmEuZmEtdGFjaG9tZXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZkIgp9CgouZmEuZmEtY29tbWVudC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jb21tZW50LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3NSIKfQoKLmZhLmZhLWNvbW1lbnRzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNvbW1lbnRzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4NiIKfQoKLmZhLmZhLWZsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTciCn0KCi5mYS5mYS1jbGlwYm9hcmQsCi5mYS5mYS1wYXN0ZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGFzdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMyOCIKfQoKLmZhLmZhLWxpZ2h0YnVsYi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWdodGJ1bGItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGViIgp9CgouZmEuZmEtZXhjaGFuZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2MiIKfQoKLmZhLmZhLWNsb3VkLWRvd25sb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODEiCn0KCi5mYS5mYS1jbG91ZC11cGxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MiIKfQoKLmZhLmZhLWJlbGwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmVsbC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjMiCn0KCi5mYS5mYS1jdXRsZXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZTciCn0KCi5mYS5mYS1maWxlLXRleHQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS10ZXh0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1YyIKfQoKLmZhLmZhLWJ1aWxkaW5nLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJ1aWxkaW5nLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhZCIKfQoKLmZhLmZhLWhvc3BpdGFsLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhvc3BpdGFsLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmOCIKfQoKLmZhLmZhLXRhYmxldDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZhIgp9CgouZmEuZmEtbW9iaWxlLXBob25lOmJlZm9yZSwKLmZhLmZhLW1vYmlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2NkIgp9CgouZmEuZmEtY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS5mYS1tYWlsLXJlcGx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTUiCn0KCi5mYS5mYS1naXRodWItYWx0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZvbGRlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mb2xkZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdiIgp9CgouZmEuZmEtZm9sZGVyLW9wZW4tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZm9sZGVyLW9wZW4tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdjIgp9CgouZmEuZmEtc21pbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc21pbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE4Igp9CgouZmEuZmEtZnJvd24tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZnJvd24tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE5Igp9CgouZmEuZmEtbWVoLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW1laC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWEiCn0KCi5mYS5mYS1rZXlib2FyZC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1rZXlib2FyZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWMiCn0KCi5mYS5mYS1mbGFnLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZsYWctbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI0Igp9CgouZmEuZmEtbWFpbC1yZXBseS1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMiIKfQoKLmZhLmZhLXN0YXItaGFsZi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEuZmEtc3Rhci1oYWxmLWVtcHR5IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtZW1wdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4OSIKfQoKLmZhLmZhLXN0YXItaGFsZi1mdWxsIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEuZmEtY29kZS1mb3JrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjYiCn0KCi5mYS5mYS1jaGFpbi1icm9rZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNyIKfQoKLmZhLmZhLXNoaWVsZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VkIgp9CgouZmEuZmEtY2FsZW5kYXItbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FsZW5kYXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTMzIgp9CgouZmEuZmEtY3NzMywKLmZhLmZhLWh0bWw1LAouZmEuZmEtbWF4Y2RuIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRpY2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZmIgp9CgouZmEuZmEtbWludXMtc3F1YXJlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW1pbnVzLXNxdWFyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNDYiCn0KCi5mYS5mYS1sZXZlbC11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JmIgp9CgouZmEuZmEtbGV2ZWwtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JlIgp9CgouZmEuZmEtcGVuY2lsLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTRiIgp9CgouZmEuZmEtZXh0ZXJuYWwtbGluay1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2MCIKfQoKLmZhLmZhLWNvbXBhc3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MCIKfQoKLmZhLmZhLXRvZ2dsZS1kb3duIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS10b2dnbGUtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUwIgp9CgouZmEuZmEtY2FyZXQtc3F1YXJlLW8tdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTEiCn0KCi5mYS5mYS10b2dnbGUtdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRvZ2dsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUxIgp9CgouZmEuZmEtY2FyZXQtc3F1YXJlLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTIiCn0KCi5mYS5mYS10b2dnbGUtcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRvZ2dsZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUyIgp9CgouZmEuZmEtZXVyOmJlZm9yZSwKLmZhLmZhLWV1cm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MyIKfQoKLmZhLmZhLWdicDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU0Igp9CgouZmEuZmEtZG9sbGFyOmJlZm9yZSwKLmZhLmZhLXVzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU1Igp9CgouZmEuZmEtaW5yOmJlZm9yZSwKLmZhLmZhLXJ1cGVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTYiCn0KCi5mYS5mYS1jbnk6YmVmb3JlLAouZmEuZmEtanB5OmJlZm9yZSwKLmZhLmZhLXJtYjpiZWZvcmUsCi5mYS5mYS15ZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1NyIKfQoKLmZhLmZhLXJvdWJsZTpiZWZvcmUsCi5mYS5mYS1ydWI6YmVmb3JlLAouZmEuZmEtcnVibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1OCIKfQoKLmZhLmZhLWtydzpiZWZvcmUsCi5mYS5mYS13b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1OSIKfQoKLmZhLmZhLWJpdGNvaW4sCi5mYS5mYS1idGMgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYml0Y29pbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVhIgp9CgouZmEuZmEtZmlsZS10ZXh0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWMiCn0KCi5mYS5mYS1zb3J0LWFscGhhLWFzYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVkIgp9CgouZmEuZmEtc29ydC1hbHBoYS1kZXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODEiCn0KCi5mYS5mYS1zb3J0LWFtb3VudC1hc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MCIKfQoKLmZhLmZhLXNvcnQtYW1vdW50LWRlc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4NCIKfQoKLmZhLmZhLXNvcnQtbnVtZXJpYy1hc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MiIKfQoKLmZhLmZhLXNvcnQtbnVtZXJpYy1kZXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODYiCn0KCi5mYS5mYS14aW5nLAouZmEuZmEteGluZy1zcXVhcmUsCi5mYS5mYS15b3V0dWJlLAouZmEuZmEteW91dHViZS1wbGF5LAouZmEuZmEteW91dHViZS1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEteW91dHViZS1wbGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjciCn0KCi5mYS5mYS1hZG4sCi5mYS5mYS1iaXRidWNrZXQsCi5mYS5mYS1iaXRidWNrZXQtc3F1YXJlLAouZmEuZmEtZHJvcGJveCwKLmZhLmZhLWZsaWNrciwKLmZhLmZhLWluc3RhZ3JhbSwKLmZhLmZhLXN0YWNrLW92ZXJmbG93IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJpdGJ1Y2tldC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MSIKfQoKLmZhLmZhLXR1bWJsciwKLmZhLmZhLXR1bWJsci1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbG9uZy1hcnJvdy1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDkiCn0KCi5mYS5mYS1sb25nLWFycm93LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMGMiCn0KCi5mYS5mYS1sb25nLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYSIKfQoKLmZhLmZhLWxvbmctYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYiIKfQoKLmZhLmZhLWFuZHJvaWQsCi5mYS5mYS1hcHBsZSwKLmZhLmZhLWRyaWJiYmxlLAouZmEuZmEtZm91cnNxdWFyZSwKLmZhLmZhLWdpdHRpcCwKLmZhLmZhLWdyYXRpcGF5LAouZmEuZmEtbGludXgsCi5mYS5mYS1za3lwZSwKLmZhLmZhLXRyZWxsbywKLmZhLmZhLXdpbmRvd3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZ2l0dGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODQiCn0KCi5mYS5mYS1zdW4tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3VuLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NSIKfQoKLmZhLmZhLW1vb24tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbW9vbi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODYiCn0KCi5mYS5mYS1wYWdlbGluZXMsCi5mYS5mYS1yZW5yZW4sCi5mYS5mYS1zdGFjay1leGNoYW5nZSwKLmZhLmZhLXZrLAouZmEuZmEtd2VpYm8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYXJyb3ctY2lyY2xlLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWFycm93LWNpcmNsZS1vLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNWEiCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1sZWZ0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTkiCn0KCi5mYS5mYS1jYXJldC1zcXVhcmUtby1sZWZ0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jYXJldC1zcXVhcmUtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTEiCn0KCi5mYS5mYS10b2dnbGUtbGVmdCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdG9nZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5MSIKfQoKLmZhLmZhLWRvdC1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZG90LWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTIiCn0KCi5mYS5mYS12aW1lby1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdHJ5OmJlZm9yZSwKLmZhLmZhLXR1cmtpc2gtbGlyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk1Igp9CgouZmEuZmEtcGx1cy1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGx1cy1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGZlIgp9CgouZmEuZmEtb3BlbmlkLAouZmEuZmEtc2xhY2ssCi5mYS5mYS13b3JkcHJlc3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFuazpiZWZvcmUsCi5mYS5mYS1pbnN0aXR1dGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTljIgp9CgouZmEuZmEtbW9ydGFyLWJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWQiCn0KCi5mYS5mYS1kZWxpY2lvdXMsCi5mYS5mYS1kaWdnLAouZmEuZmEtZHJ1cGFsLAouZmEuZmEtZ29vZ2xlLAouZmEuZmEtam9vbWxhLAouZmEuZmEtcGllZC1waXBlci1hbHQsCi5mYS5mYS1waWVkLXBpcGVyLXBwLAouZmEuZmEtcmVkZGl0LAouZmEuZmEtcmVkZGl0LXNxdWFyZSwKLmZhLmZhLXN0dW1ibGV1cG9uLAouZmEuZmEtc3R1bWJsZXVwb24tY2lyY2xlLAouZmEuZmEteWFob28gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3Bvb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlNSIKfQoKLmZhLmZhLWJlaGFuY2UsCi5mYS5mYS1iZWhhbmNlLXNxdWFyZSwKLmZhLmZhLXN0ZWFtLAouZmEuZmEtc3RlYW0tc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWF1dG9tb2JpbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiOSIKfQoKLmZhLmZhLWVudmVsb3BlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWVudmVsb3BlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMCIKfQoKLmZhLmZhLWRldmlhbnRhcnQsCi5mYS5mYS1zb3VuZGNsb3VkLAouZmEuZmEtc3BvdGlmeSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXBkZi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXBkZi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzEiCn0KCi5mYS5mYS1maWxlLXdvcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS13b3JkLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjMiIKfQoKLmZhLmZhLWZpbGUtZXhjZWwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1leGNlbC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzMiCn0KCi5mYS5mYS1maWxlLXBvd2VycG9pbnQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1wb3dlcnBvaW50LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNCIKfQoKLmZhLmZhLWZpbGUtaW1hZ2UtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1pbWFnZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzUiCn0KCi5mYS5mYS1maWxlLXBob3RvLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtcGhvdG8tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM1Igp9CgouZmEuZmEtZmlsZS1waWN0dXJlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtcGljdHVyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzUiCn0KCi5mYS5mYS1maWxlLWFyY2hpdmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1hcmNoaXZlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNiIKfQoKLmZhLmZhLWZpbGUtemlwLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtemlwLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNiIKfQoKLmZhLmZhLWZpbGUtYXVkaW8tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1hdWRpby1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzciCn0KCi5mYS5mYS1maWxlLXNvdW5kLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtc291bmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM3Igp9CgouZmEuZmEtZmlsZS12aWRlby1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXZpZGVvLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOCIKfQoKLmZhLmZhLWZpbGUtbW92aWUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1tb3ZpZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzgiCn0KCi5mYS5mYS1maWxlLWNvZGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1jb2RlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOSIKfQoKLmZhLmZhLWNvZGVwZW4sCi5mYS5mYS1qc2ZpZGRsZSwKLmZhLmZhLXZpbmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlmZS1ib3V5LAouZmEuZmEtbGlmZS1yaW5nIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWZlLWJvdXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZCIKfQoKLmZhLmZhLWxpZmUtYnVveSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlmZS1idW95OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1saWZlLXNhdmVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWZlLXNhdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1zdXBwb3J0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdXBwb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1jaXJjbGUtby1ub3RjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNlIgp9CgouZmEuZmEtcmEsCi5mYS5mYS1yZWJlbCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQwIgp9CgouZmEuZmEtcmVzaXN0YW5jZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1yZXNpc3RhbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDAiCn0KCi5mYS5mYS1lbXBpcmUsCi5mYS5mYS1nZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQxIgp9CgouZmEuZmEtZ2l0LAouZmEuZmEtZ2l0LXNxdWFyZSwKLmZhLmZhLWhhY2tlci1uZXdzLAouZmEuZmEteS1jb21iaW5hdG9yLXNxdWFyZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS15LWNvbWJpbmF0b3Itc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS5mYS15Yy1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEteWMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS5mYS1xcSwKLmZhLmZhLXRlbmNlbnQtd2VpYm8sCi5mYS5mYS13ZWNoYXQsCi5mYS5mYS13ZWl4aW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtd2VjaGF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDciCn0KCi5mYS5mYS1zZW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDgiCn0KCi5mYS5mYS1wYXBlci1wbGFuZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1wYXBlci1wbGFuZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDgiCn0KCi5mYS5mYS1zZW5kLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXNlbmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4Igp9CgouZmEuZmEtY2lyY2xlLXRoaW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNpcmNsZS10aGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS5mYS1oZWFkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkYyIKfQoKLmZhLmZhLXNsaWRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkZSIKfQoKLmZhLmZhLWZ1dGJvbC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mdXRib2wtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEuZmEtc29jY2VyLWJhbGwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc29jY2VyLWJhbGwtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEuZmEtc2xpZGVzaGFyZSwKLmZhLmZhLXR3aXRjaCwKLmZhLmZhLXllbHAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbmV3c3BhcGVyLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW5ld3NwYXBlci1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWEiCn0KCi5mYS5mYS1jYy1hbWV4LAouZmEuZmEtY2MtZGlzY292ZXIsCi5mYS5mYS1jYy1tYXN0ZXJjYXJkLAouZmEuZmEtY2MtcGF5cGFsLAouZmEuZmEtY2Mtc3RyaXBlLAouZmEuZmEtY2MtdmlzYSwKLmZhLmZhLWdvb2dsZS13YWxsZXQsCi5mYS5mYS1wYXlwYWwgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmVsbC1zbGFzaC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1iZWxsLXNsYXNoLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmNiIKfQoKLmZhLmZhLXRyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZWQiCn0KCi5mYS5mYS1jb3B5cmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWV5ZWRyb3BwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmYiIKfQoKLmZhLmZhLWFyZWEtY2hhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmZSIKfQoKLmZhLmZhLXBpZS1jaGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAwIgp9CgouZmEuZmEtbGluZS1jaGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAxIgp9CgouZmEuZmEtYW5nZWxsaXN0LAouZmEuZmEtaW94aG9zdCwKLmZhLmZhLWxhc3RmbSwKLmZhLmZhLWxhc3RmbS1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMGEiCn0KCi5mYS5mYS1pbHM6YmVmb3JlLAouZmEuZmEtc2hla2VsOmJlZm9yZSwKLmZhLmZhLXNoZXFlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBiIgp9CgouZmEuZmEtbWVhbnBhdGggewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbWVhbnBhdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiNCIKfQoKLmZhLmZhLWJ1eXNlbGxhZHMsCi5mYS5mYS1jb25uZWN0ZGV2ZWxvcCwKLmZhLmZhLWRhc2hjdWJlLAouZmEuZmEtZm9ydW1iZWUsCi5mYS5mYS1sZWFucHViLAouZmEuZmEtc2VsbHN5LAouZmEuZmEtc2hpcnRzaW5idWxrLAouZmEuZmEtc2ltcGx5YnVpbHQsCi5mYS5mYS1za3lhdGxhcyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kaWFtb25kIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kaWFtb25kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTUiCn0KCi5mYS5mYS1pbnRlcnNleDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI0Igp9CgouZmEuZmEtZmFjZWJvb2stb2ZmaWNpYWwgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmFjZWJvb2stb2ZmaWNpYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YSIKfQoKLmZhLmZhLXBpbnRlcmVzdC1wLAouZmEuZmEtd2hhdHNhcHAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaG90ZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNiIKfQoKLmZhLmZhLW1lZGl1bSwKLmZhLmZhLXZpYWNvaW4sCi5mYS5mYS15LWNvbWJpbmF0b3IsCi5mYS5mYS15YyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS15YzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjNiIgp9CgouZmEuZmEtZXhwZWRpdGVkc3NsLAouZmEuZmEtb3BlbmNhcnQsCi5mYS5mYS1vcHRpbi1tb25zdGVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJhdHRlcnktNDpiZWZvcmUsCi5mYS5mYS1iYXR0ZXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDAiCn0KCi5mYS5mYS1iYXR0ZXJ5LTM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0MSIKfQoKLmZhLmZhLWJhdHRlcnktMjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQyIgp9CgouZmEuZmEtYmF0dGVyeS0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDMiCn0KCi5mYS5mYS1iYXR0ZXJ5LTA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NCIKfQoKLmZhLmZhLW9iamVjdC1ncm91cCwKLmZhLmZhLW9iamVjdC11bmdyb3VwLAouZmEuZmEtc3RpY2t5LW5vdGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3RpY2t5LW5vdGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ5Igp9CgouZmEuZmEtY2MtZGluZXJzLWNsdWIsCi5mYS5mYS1jYy1qY2IgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2xvbmUsCi5mYS5mYS1ob3VyZ2xhc3MtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaG91cmdsYXNzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1NCIKfQoKLmZhLmZhLWhvdXJnbGFzcy0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTEiCn0KCi5mYS5mYS1ob3VyZ2xhc3MtMjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUyIgp9CgouZmEuZmEtaG91cmdsYXNzLTM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1MyIKfQoKLmZhLmZhLWhhbmQtcm9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXJvY2stbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU1Igp9CgouZmEuZmEtaGFuZC1ncmFiLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtZ3JhYi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTUiCn0KCi5mYS5mYS1oYW5kLXBhcGVyLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtcGFwZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU2Igp9CgouZmEuZmEtaGFuZC1zdG9wLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtc3RvcC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTYiCn0KCi5mYS5mYS1oYW5kLXNjaXNzb3JzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtc2Npc3NvcnMtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU3Igp9CgouZmEuZmEtaGFuZC1saXphcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaGFuZC1saXphcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU4Igp9CgouZmEuZmEtaGFuZC1zcG9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXNwb2NrLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1OSIKfQoKLmZhLmZhLWhhbmQtcG9pbnRlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXBvaW50ZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjVhIgp9CgouZmEuZmEtaGFuZC1wZWFjZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXBlYWNlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YiIKfQoKLmZhLmZhLXJlZ2lzdGVyZWQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNocm9tZSwKLmZhLmZhLWNyZWF0aXZlLWNvbW1vbnMsCi5mYS5mYS1maXJlZm94LAouZmEuZmEtZ2V0LXBvY2tldCwKLmZhLmZhLWdnLAouZmEuZmEtZ2ctY2lyY2xlLAouZmEuZmEtaW50ZXJuZXQtZXhwbG9yZXIsCi5mYS5mYS1vZG5va2xhc3NuaWtpLAouZmEuZmEtb2Rub2tsYXNzbmlraS1zcXVhcmUsCi5mYS5mYS1vcGVyYSwKLmZhLmZhLXNhZmFyaSwKLmZhLmZhLXRyaXBhZHZpc29yLAouZmEuZmEtd2lraXBlZGlhLXcgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGVsZXZpc2lvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZjIgp9CgouZmEuZmEtNTAwcHgsCi5mYS5mYS1hbWF6b24sCi5mYS5mYS1jb250YW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FsZW5kYXItcGx1cy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jYWxlbmRhci1wbHVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MSIKfQoKLmZhLmZhLWNhbGVuZGFyLW1pbnVzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLW1pbnVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MiIKfQoKLmZhLmZhLWNhbGVuZGFyLXRpbWVzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLXRpbWVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MyIKfQoKLmZhLmZhLWNhbGVuZGFyLWNoZWNrLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLWNoZWNrLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NCIKfQoKLmZhLmZhLW1hcC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1tYXAtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc5Igp9CgouZmEuZmEtY29tbWVudGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGFkIgp9CgouZmEuZmEtY29tbWVudGluZy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jb21tZW50aW5nLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRhZCIKfQoKLmZhLmZhLWhvdXp6LAouZmEuZmEtdmltZW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdmltZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3ZCIKfQoKLmZhLmZhLWJsYWNrLXRpZSwKLmZhLmZhLWVkZ2UsCi5mYS5mYS1mb250aWNvbnMsCi5mYS5mYS1yZWRkaXQtYWxpZW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY3JlZGl0LWNhcmQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWQiCn0KCi5mYS5mYS1jb2RpZXBpZSwKLmZhLmZhLWZvcnQtYXdlc29tZSwKLmZhLmZhLW1peGNsb3VkLAouZmEuZmEtbW9keCwKLmZhLmZhLXByb2R1Y3QtaHVudCwKLmZhLmZhLXNjcmliZCwKLmZhLmZhLXVzYiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1wYXVzZS1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGF1c2UtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YiIKfQoKLmZhLmZhLXN0b3AtY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXN0b3AtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4ZCIKfQoKLmZhLmZhLWJsdWV0b290aCwKLmZhLmZhLWJsdWV0b290aC1iLAouZmEuZmEtZW52aXJhLAouZmEuZmEtZ2l0bGFiLAouZmEuZmEtd2hlZWxjaGFpci1hbHQsCi5mYS5mYS13cGJlZ2lubmVyLAouZmEuZmEtd3Bmb3JtcyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS13aGVlbGNoYWlyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzY4Igp9CgouZmEuZmEtcXVlc3Rpb24tY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXF1ZXN0aW9uLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTkiCn0KCi5mYS5mYS12b2x1bWUtY29udHJvbC1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEwIgp9CgouZmEuZmEtYXNsLWludGVycHJldGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEzIgp9CgouZmEuZmEtZGVhZm5lc3M6YmVmb3JlLAouZmEuZmEtaGFyZC1vZi1oZWFyaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTQiCn0KCi5mYS5mYS1nbGlkZSwKLmZhLmZhLWdsaWRlLWcgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc2lnbmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmE3Igp9CgouZmEuZmEtZmlyc3Qtb3JkZXIsCi5mYS5mYS1nb29nbGUtcGx1cy1vZmZpY2lhbCwKLmZhLmZhLXBpZWQtcGlwZXIsCi5mYS5mYS1zbmFwY2hhdCwKLmZhLmZhLXNuYXBjaGF0LWdob3N0LAouZmEuZmEtc25hcGNoYXQtc3F1YXJlLAouZmEuZmEtdGhlbWVpc2xlLAouZmEuZmEtdmlhZGVvLAouZmEuZmEtdmlhZGVvLXNxdWFyZSwKLmZhLmZhLXlvYXN0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdvb2dsZS1wbHVzLW9mZmljaWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjMiCn0KCi5mYS5mYS1nb29nbGUtcGx1cy1jaXJjbGUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZ29vZ2xlLXBsdXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjMiCn0KCi5mYS5mYS1mYSwKLmZhLmZhLWZvbnQtYXdlc29tZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI0Igp9CgouZmEuZmEtaGFuZHNoYWtlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmRzaGFrZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjUiCn0KCi5mYS5mYS1lbnZlbG9wZS1vcGVuLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWVudmVsb3BlLW9wZW4tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI2Igp9CgouZmEuZmEtbGlub2RlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWFkZHJlc3MtYm9vay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hZGRyZXNzLWJvb2stbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI5Igp9CgouZmEuZmEtdmNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiYiIKfQoKLmZhLmZhLWFkZHJlc3MtY2FyZC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hZGRyZXNzLWNhcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJiIgp9CgouZmEuZmEtdmNhcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdmNhcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJiIgp9CgouZmEuZmEtdXNlci1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdXNlci1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJkIgp9CgouZmEuZmEtdXNlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS11c2VyLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwNyIKfQoKLmZhLmZhLWlkLWJhZGdlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kcml2ZXJzLWxpY2Vuc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjMiIKfQoKLmZhLmZhLWlkLWNhcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaWQtY2FyZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzIiCn0KCi5mYS5mYS1kcml2ZXJzLWxpY2Vuc2UtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZHJpdmVycy1saWNlbnNlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjMiIKfQoKLmZhLmZhLWZyZWUtY29kZS1jYW1wLAouZmEuZmEtcXVvcmEsCi5mYS5mYS10ZWxlZ3JhbSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS10aGVybW9tZXRlci00OmJlZm9yZSwKLmZhLmZhLXRoZXJtb21ldGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzciCn0KCi5mYS5mYS10aGVybW9tZXRlci0zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzgiCn0KCi5mYS5mYS10aGVybW9tZXRlci0yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzkiCn0KCi5mYS5mYS10aGVybW9tZXRlci0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2EiCn0KCi5mYS5mYS10aGVybW9tZXRlci0wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2IiCn0KCi5mYS5mYS1iYXRodHViOmJlZm9yZSwKLmZhLmZhLXMxNTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNkIgp9CgouZmEuZmEtd2luZG93LW1heGltaXplLAouZmEuZmEtd2luZG93LXJlc3RvcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRpbWVzLXJlY3RhbmdsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEwIgp9CgouZmEuZmEtd2luZG93LWNsb3NlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXdpbmRvdy1jbG9zZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MTAiCn0KCi5mYS5mYS10aW1lcy1yZWN0YW5nbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGltZXMtcmVjdGFuZ2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMCIKfQoKLmZhLmZhLWJhbmRjYW1wLAouZmEuZmEtZWVyY2FzdCwKLmZhLmZhLWV0c3ksCi5mYS5mYS1ncmF2LAouZmEuZmEtaW1kYiwKLmZhLmZhLXJhdmVscnkgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZWVyY2FzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmRhIgp9CgouZmEuZmEtc25vd2ZsYWtlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXNub3dmbGFrZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGMiCn0KCi5mYS5mYS1zdXBlcnBvd2VycywKLmZhLmZhLXdwZXhwbG9yZXIgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmEiCn0="}},"time_used":469,"timings":{"blocked":279,"dns":0,"connect":0,"send":0,"wait":97,"receive":93,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/animate.css?ver=3.6.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.305Z","timestamp":1785145482305,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/animate.css?ver=3.6.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 83370\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":83370,"size_decoded":83580,"mime_type":"text/css","magic":"ASCII text","md5":"bd153046f7a3cc2c3f3d8284f5231019","sha1":"cc19c85de24fb6eae5455708f2eb621e3bce2a03","sha256":"8fa7c1c057feb602e62fbd8c8ebb3ef285b7745e21b78000e3f1b1926b490ead","sha512":"d6eeb094f8d688acbb01990366e77ea1deac0a1f72d87356dbb71555cf2a69fc14b91ea3bab6380eb39e0ebd92dbcadcf87149b0b84375e272c878dc071cda2f","ssdeep":"192:bKAVY/D7fAVY/D70FXJilxq6stlxq6sInxXjujd7B7GjshxXjujd7B7GjsakAZQD:b4teOer7ReXeZ1B1k2P2E+B+MRk","tlshash":"f3833f6d2992108452638a1d83df5e68163ce1731816ecee738e598fcf8bfac57c9247","first_seen":"2026-07-27T08:06:56.375925Z","last_seen":"2026-07-27T09:45:50.892713Z","times_seen":3,"resource_available":false,"data":"QGNoYXJzZXQgIlVURi04IjsKLyohCiAqIGFuaW1hdGUuY3NzIC1odHRwOi8vZGFuZWRlbi5tZS9hbmltYXRlCiAqIFZlcnNpb24gLSAzLjYuMAogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgLSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqCiAqIENvcHlyaWdodCAoYykgMjAxOCBEYW5pZWwgRWRlbgogKi8KCi5hbmltYXRlZCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogICAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKfQoKLmFuaW1hdGVkLmluZmluaXRlIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZSB7CiAgICBmcm9tLAogICAgMjAlLAogICAgNTMlLAogICAgODAlLAogICAgdG8gewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9CiAgICA0MCUsCiAgICA0MyUgewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1LCAwLjg1NSwgMC4wNik7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1LCAwLjg1NSwgMC4wNik7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0zMHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0zMHB4LCAwKTsKICAgIH0KICAgIDcwJSB7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTE1cHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTE1cHgsIDApOwogICAgfQogICAgOTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTRweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNHB4LCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBib3VuY2UgewogICAgZnJvbSwKICAgIDIwJSwKICAgIDUzJSwKICAgIDgwJSwKICAgIHRvIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQogICAgNDAlLAogICAgNDMlIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjc1NSwgMC4wNSwgMC44NTUsIDAuMDYpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjc1NSwgMC4wNSwgMC44NTUsIDAuMDYpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzBweCwgMCk7CiAgICB9CiAgICA3MCUgewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1LCAwLjg1NSwgMC4wNik7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1LCAwLjg1NSwgMC4wNik7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xNXB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xNXB4LCAwKTsKICAgIH0KICAgIDkwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC00cHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTRweCwgMCk7CiAgICB9Cn0KCi5ib3VuY2UgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlOwogICAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmbGFzaCB7CiAgICBmcm9tLAogICAgNTAlLAogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICAyNSUsCiAgICA3NSUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmxhc2ggewogICAgZnJvbSwKICAgIDUwJSwKICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgMjUlLAogICAgNzUlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgouZmxhc2ggewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmxhc2g7CiAgICBhbmltYXRpb24tbmFtZTogZmxhc2g7Cn0KCi8qIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTmljayBQZXR0aXQgLSBodHRwczovL2dpdGh1Yi5jb20vbmlja3BldHRpdC9nbGlkZSAqLwoKQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNlIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMS4wNSwgMS4wNSwgMS4wNSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDUsIDEuMDUsIDEuMDUpOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgIH0KfQoKQGtleWZyYW1lcyBwdWxzZSB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgICB9CiAgICA1MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDUsIDEuMDUsIDEuMDUpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjA1LCAxLjA1LCAxLjA1KTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgICB9Cn0KCi5wdWxzZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBwdWxzZTsKICAgIGFuaW1hdGlvbi1uYW1lOiBwdWxzZTsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJ1YmJlckJhbmQgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgfQogICAgMzAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLjI1LCAwLjc1LCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4yNSwgMC43NSwgMSk7CiAgICB9CiAgICA0MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNzUsIDEuMjUsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAxLjI1LCAxKTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMS4xNSwgMC44NSwgMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMTUsIDAuODUsIDEpOwogICAgfQogICAgNjUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjk1LCAxLjA1LCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC45NSwgMS4wNSwgMSk7CiAgICB9CiAgICA3NSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDUsIDAuOTUsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjA1LCAwLjk1LCAxKTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgcnViYmVyQmFuZCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgICB9CiAgICAzMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEuMjUsIDAuNzUsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjI1LCAwLjc1LCAxKTsKICAgIH0KICAgIDQwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC43NSwgMS4yNSwgMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNzUsIDEuMjUsIDEpOwogICAgfQogICAgNTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLjE1LCAwLjg1LCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xNSwgMC44NSwgMSk7CiAgICB9CiAgICA2NSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuOTUsIDEuMDUsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjk1LCAxLjA1LCAxKTsKICAgIH0KICAgIDc1JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMS4wNSwgMC45NSwgMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDUsIDAuOTUsIDEpOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgIH0KfQoKLnJ1YmJlckJhbmQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcnViYmVyQmFuZDsKICAgIGFuaW1hdGlvbi1uYW1lOiBydWJiZXJCYW5kOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2hha2UgewogICAgZnJvbSwKICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KICAgIDEwJSwKICAgIDMwJSwKICAgIDUwJSwKICAgIDcwJSwKICAgIDkwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgIH0KICAgIDIwJSwKICAgIDQwJSwKICAgIDYwJSwKICAgIDgwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTBweCwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgc2hha2UgewogICAgZnJvbSwKICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KICAgIDEwJSwKICAgIDMwJSwKICAgIDUwJSwKICAgIDcwJSwKICAgIDkwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgIH0KICAgIDIwJSwKICAgIDQwJSwKICAgIDYwJSwKICAgIDgwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTBweCwgMCwgMCk7CiAgICB9Cn0KCi5zaGFrZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzaGFrZTsKICAgIGFuaW1hdGlvbi1uYW1lOiBzaGFrZTsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGhlYWRTaGFrZSB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgfQogICAgNi41JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTZweCkgcm90YXRlWSgtOWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC02cHgpIHJvdGF0ZVkoLTlkZWcpOwogICAgfQogICAgMTguNSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCkgcm90YXRlWSg3ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KSByb3RhdGVZKDdkZWcpOwogICAgfQogICAgMzEuNSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpIHJvdGF0ZVkoLTVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KSByb3RhdGVZKC01ZGVnKTsKICAgIH0KICAgIDQzLjUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpIHJvdGF0ZVkoM2RlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCkgcm90YXRlWSgzZGVnKTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGhlYWRTaGFrZSB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgfQogICAgNi41JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTZweCkgcm90YXRlWSgtOWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC02cHgpIHJvdGF0ZVkoLTlkZWcpOwogICAgfQogICAgMTguNSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCkgcm90YXRlWSg3ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KSByb3RhdGVZKDdkZWcpOwogICAgfQogICAgMzEuNSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpIHJvdGF0ZVkoLTVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KSByb3RhdGVZKC01ZGVnKTsKICAgIH0KICAgIDQzLjUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpIHJvdGF0ZVkoM2RlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCkgcm90YXRlWSgzZGVnKTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgfQp9CgouaGVhZFNoYWtlIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGhlYWRTaGFrZTsKICAgIGFuaW1hdGlvbi1uYW1lOiBoZWFkU2hha2U7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzd2luZyB7CiAgICAyMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAxNWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAxNWRlZyk7CiAgICB9CiAgICA0MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtMTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTEwZGVnKTsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNWRlZyk7CiAgICB9CiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNWRlZyk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZyk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgc3dpbmcgewogICAgMjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMTVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMTVkZWcpOwogICAgfQogICAgNDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTEwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC0xMGRlZyk7CiAgICB9CiAgICA2MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDVkZWcpOwogICAgfQogICAgODAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTVkZWcpOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDBkZWcpOwogICAgfQp9Cgouc3dpbmcgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyOwogICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHN3aW5nOwogICAgYW5pbWF0aW9uLW5hbWU6IHN3aW5nOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgdGFkYSB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgICB9CiAgICAxMCUsCiAgICAyMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuOSwgMC45LCAwLjkpIHJvdGF0ZTNkKDAsIDAsIDEsIC0zZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC45LCAwLjksIDAuOSkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpOwogICAgfQogICAgMzAlLAogICAgNTAlLAogICAgNzAlLAogICAgOTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKSByb3RhdGUzZCgwLCAwLCAxLCAzZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xLCAxLjEsIDEuMSkgcm90YXRlM2QoMCwgMCwgMSwgM2RlZyk7CiAgICB9CiAgICA0MCUsCiAgICA2MCUsCiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpIHJvdGF0ZTNkKDAsIDAsIDEsIC0zZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xLCAxLjEsIDEuMSkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgIH0KfQoKQGtleWZyYW1lcyB0YWRhIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgIH0KICAgIDEwJSwKICAgIDIwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC45LCAwLjksIDAuOSkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjksIDAuOSwgMC45KSByb3RhdGUzZCgwLCAwLCAxLCAtM2RlZyk7CiAgICB9CiAgICAzMCUsCiAgICA1MCUsCiAgICA3MCUsCiAgICA5MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKSByb3RhdGUzZCgwLCAwLCAxLCAzZGVnKTsKICAgIH0KICAgIDQwJSwKICAgIDYwJSwKICAgIDgwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMS4xLCAxLjEsIDEuMSkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKSByb3RhdGUzZCgwLCAwLCAxLCAtM2RlZyk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgfQp9CgoudGFkYSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB0YWRhOwogICAgYW5pbWF0aW9uLW5hbWU6IHRhZGE7Cn0KCi8qIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTmljayBQZXR0aXQgLSBodHRwczovL2dpdGh1Yi5jb20vbmlja3BldHRpdC9nbGlkZSAqLwoKQC13ZWJraXQta2V5ZnJhbWVzIHdvYmJsZSB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KICAgIDE1JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC01ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC01ZGVnKTsKICAgIH0KICAgIDMwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgM2RlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpOwogICAgfQogICAgNDUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTE1JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTE1JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpOwogICAgfQogICAgNjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAyZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgMmRlZyk7CiAgICB9CiAgICA3NSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC0xZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTFkZWcpOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIHdvYmJsZSB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KICAgIDE1JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC01ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC01ZGVnKTsKICAgIH0KICAgIDMwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgM2RlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpOwogICAgfQogICAgNDUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTE1JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTE1JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpOwogICAgfQogICAgNjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAyZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgMmRlZyk7CiAgICB9CiAgICA3NSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC0xZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTFkZWcpOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9Cgoud29iYmxlIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHdvYmJsZTsKICAgIGFuaW1hdGlvbi1uYW1lOiB3b2JibGU7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBqZWxsbyB7CiAgICBmcm9tLAogICAgMTEuMSUsCiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9CiAgICAyMi4yJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXdYKC0xMi41ZGVnKSBza2V3WSgtMTIuNWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgtMTIuNWRlZykgc2tld1koLTEyLjVkZWcpOwogICAgfQogICAgMzMuMyUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3WCg2LjI1ZGVnKSBza2V3WSg2LjI1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKDYuMjVkZWcpIHNrZXdZKDYuMjVkZWcpOwogICAgfQogICAgNDQuNCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3WCgtMy4xMjVkZWcpIHNrZXdZKC0zLjEyNWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgtMy4xMjVkZWcpIHNrZXdZKC0zLjEyNWRlZyk7CiAgICB9CiAgICA1NS41JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXdYKDEuNTYyNWRlZykgc2tld1koMS41NjI1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKDEuNTYyNWRlZykgc2tld1koMS41NjI1ZGVnKTsKICAgIH0KICAgIDY2LjYlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2tld1goLTAuNzgxMjVkZWcpIHNrZXdZKC0wLjc4MTI1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKC0wLjc4MTI1ZGVnKSBza2V3WSgtMC43ODEyNWRlZyk7CiAgICB9CiAgICA3Ny43JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXdYKDAuMzkwNjI1ZGVnKSBza2V3WSgwLjM5MDYyNWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgwLjM5MDYyNWRlZykgc2tld1koMC4zOTA2MjVkZWcpOwogICAgfQogICAgODguOCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3WCgtMC4xOTUzMTI1ZGVnKSBza2V3WSgtMC4xOTUzMTI1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKC0wLjE5NTMxMjVkZWcpIHNrZXdZKC0wLjE5NTMxMjVkZWcpOwogICAgfQp9CgpAa2V5ZnJhbWVzIGplbGxvIHsKICAgIGZyb20sCiAgICAxMS4xJSwKICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KICAgIDIyLjIlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2tld1goLTEyLjVkZWcpIHNrZXdZKC0xMi41ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKC0xMi41ZGVnKSBza2V3WSgtMTIuNWRlZyk7CiAgICB9CiAgICAzMy4zJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXdYKDYuMjVkZWcpIHNrZXdZKDYuMjVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2tld1goNi4yNWRlZykgc2tld1koNi4yNWRlZyk7CiAgICB9CiAgICA0NC40JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXdYKC0zLjEyNWRlZykgc2tld1koLTMuMTI1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKC0zLjEyNWRlZykgc2tld1koLTMuMTI1ZGVnKTsKICAgIH0KICAgIDU1LjUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2tld1goMS41NjI1ZGVnKSBza2V3WSgxLjU2MjVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2tld1goMS41NjI1ZGVnKSBza2V3WSgxLjU2MjVkZWcpOwogICAgfQogICAgNjYuNiUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3WCgtMC43ODEyNWRlZykgc2tld1koLTAuNzgxMjVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2tld1goLTAuNzgxMjVkZWcpIHNrZXdZKC0wLjc4MTI1ZGVnKTsKICAgIH0KICAgIDc3LjclIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2tld1goMC4zOTA2MjVkZWcpIHNrZXdZKDAuMzkwNjI1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKDAuMzkwNjI1ZGVnKSBza2V3WSgwLjM5MDYyNWRlZyk7CiAgICB9CiAgICA4OC44JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXdYKC0wLjE5NTMxMjVkZWcpIHNrZXdZKC0wLjE5NTMxMjVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2tld1goLTAuMTk1MzEyNWRlZykgc2tld1koLTAuMTk1MzEyNWRlZyk7CiAgICB9Cn0KCi5qZWxsbyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBqZWxsbzsKICAgIGFuaW1hdGlvbi1uYW1lOiBqZWxsbzsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOwogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlSW4gewogICAgZnJvbSwKICAgIDIwJSwKICAgIDQwJSwKICAgIDYwJSwKICAgIDgwJSwKICAgIHRvIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpOwogICAgfQogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC4zLCAwLjMsIDAuMyk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuMywgMC4zLCAwLjMpOwogICAgfQogICAgMjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xLCAxLjEsIDEuMSk7CiAgICB9CiAgICA0MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuOSwgMC45LCAwLjkpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjksIDAuOSwgMC45KTsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLjAzLCAxLjAzLCAxLjAzKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4wMywgMS4wMywgMS4wMyk7CiAgICB9CiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuOTcsIDAuOTcsIDAuOTcpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjk3LCAwLjk3LCAwLjk3KTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsKICAgIH0KfQoKQGtleWZyYW1lcyBib3VuY2VJbiB7CiAgICBmcm9tLAogICAgMjAlLAogICAgNDAlLAogICAgNjAlLAogICAgODAlLAogICAgdG8gewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICB9CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjMsIDAuMywgMC4zKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4zLCAwLjMsIDAuMyk7CiAgICB9CiAgICAyMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKTsKICAgIH0KICAgIDQwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC45LCAwLjksIDAuOSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuOSwgMC45LCAwLjkpOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDMsIDEuMDMsIDEuMDMpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjAzLCAxLjAzLCAxLjAzKTsKICAgIH0KICAgIDgwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC45NywgMC45NywgMC45Nyk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuOTcsIDAuOTcsIDAuOTcpOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogICAgfQp9CgouYm91bmNlSW4gewogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuNzVzOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjc1czsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluOwogICAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlSW5Eb3duIHsKICAgIGZyb20sCiAgICA2MCUsCiAgICA3NSUsCiAgICA5MCUsCiAgICB0byB7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsKICAgIH0KICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzAwMHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0zMDAwcHgsIDApOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyNXB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDI1cHgsIDApOwogICAgfQogICAgNzUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwcHgsIDApOwogICAgfQogICAgOTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgNXB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDVweCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgYm91bmNlSW5Eb3duIHsKICAgIGZyb20sCiAgICA2MCUsCiAgICA3NSUsCiAgICA5MCUsCiAgICB0byB7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsKICAgIH0KICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzAwMHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0zMDAwcHgsIDApOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyNXB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDI1cHgsIDApOwogICAgfQogICAgNzUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwcHgsIDApOwogICAgfQogICAgOTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgNXB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDVweCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCi5ib3VuY2VJbkRvd24gewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlSW5Eb3duOwogICAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluRG93bjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZUluTGVmdCB7CiAgICBmcm9tLAogICAgNjAlLAogICAgNzUlLAogICAgOTAlLAogICAgdG8gewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICB9CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTMwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMzAwMHB4LCAwLCAwKTsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjVweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyNXB4LCAwLCAwKTsKICAgIH0KICAgIDc1JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgIH0KICAgIDkwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDVweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg1cHgsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGJvdW5jZUluTGVmdCB7CiAgICBmcm9tLAogICAgNjAlLAogICAgNzUlLAogICAgOTAlLAogICAgdG8gewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICB9CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTMwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMzAwMHB4LCAwLCAwKTsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjVweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyNXB4LCAwLCAwKTsKICAgIH0KICAgIDc1JSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgIH0KICAgIDkwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDVweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg1cHgsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgouYm91bmNlSW5MZWZ0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluTGVmdDsKICAgIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbkxlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VJblJpZ2h0IHsKICAgIGZyb20sCiAgICA2MCUsCiAgICA3NSUsCiAgICA5MCUsCiAgICB0byB7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsKICAgIH0KICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDMwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzMDAwcHgsIDAsIDApOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjVweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjVweCwgMCwgMCk7CiAgICB9CiAgICA3NSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogICAgfQogICAgOTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTVweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNXB4LCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBib3VuY2VJblJpZ2h0IHsKICAgIGZyb20sCiAgICA2MCUsCiAgICA3NSUsCiAgICA5MCUsCiAgICB0byB7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsKICAgIH0KICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDMwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzMDAwcHgsIDAsIDApOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjVweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjVweCwgMCwgMCk7CiAgICB9CiAgICA3NSUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogICAgfQogICAgOTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTVweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNXB4LCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKLmJvdW5jZUluUmlnaHQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlSW5SaWdodDsKICAgIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJblJpZ2h0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlSW5VcCB7CiAgICBmcm9tLAogICAgNjAlLAogICAgNzUlLAogICAgOTAlLAogICAgdG8gewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICB9CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMDAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzAwMHB4LCAwKTsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogICAgfQogICAgNzUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMHB4LCAwKTsKICAgIH0KICAgIDkwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01cHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTVweCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgYm91bmNlSW5VcCB7CiAgICBmcm9tLAogICAgNjAlLAogICAgNzUlLAogICAgOTAlLAogICAgdG8gewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7CiAgICB9CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMDAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzAwMHB4LCAwKTsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogICAgfQogICAgNzUlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMHB4LCAwKTsKICAgIH0KICAgIDkwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01cHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTVweCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCi5ib3VuY2VJblVwIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluVXA7CiAgICBhbmltYXRpb24tbmFtZTogYm91bmNlSW5VcDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZU91dCB7CiAgICAyMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuOSwgMC45LCAwLjkpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjksIDAuOSwgMC45KTsKICAgIH0KICAgIDUwJSwKICAgIDU1JSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xLCAxLjEsIDEuMSk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjMsIDAuMywgMC4zKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4zLCAwLjMsIDAuMyk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgYm91bmNlT3V0IHsKICAgIDIwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC45LCAwLjksIDAuOSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuOSwgMC45LCAwLjkpOwogICAgfQogICAgNTAlLAogICAgNTUlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuMywgMC4zLCAwLjMpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjMsIDAuMywgMC4zKTsKICAgIH0KfQoKLmJvdW5jZU91dCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC43NXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNzVzOwogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlT3V0OwogICAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZU91dERvd24gewogICAgMjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMHB4LCAwKTsKICAgIH0KICAgIDQwJSwKICAgIDQ1JSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGJvdW5jZU91dERvd24gewogICAgMjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMHB4LCAwKTsKICAgIH0KICAgIDQwJSwKICAgIDQ1JSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgfQp9CgouYm91bmNlT3V0RG93biB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBib3VuY2VPdXREb3duOwogICAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dERvd247Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VPdXRMZWZ0IHsKICAgIDIwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMHB4LCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGJvdW5jZU91dExlZnQgewogICAgMjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwcHgsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICB9Cn0KCi5ib3VuY2VPdXRMZWZ0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dExlZnQ7CiAgICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0TGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZU91dFJpZ2h0IHsKICAgIDIwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwcHgsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGJvdW5jZU91dFJpZ2h0IHsKICAgIDIwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwcHgsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApOwogICAgfQp9CgouYm91bmNlT3V0UmlnaHQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlT3V0UmlnaHQ7CiAgICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0UmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VPdXRVcCB7CiAgICAyMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTBweCwgMCk7CiAgICB9CiAgICA0MCUsCiAgICA0NSUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjBweCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBib3VuY2VPdXRVcCB7CiAgICAyMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTBweCwgMCk7CiAgICB9CiAgICA0MCUsCiAgICA0NSUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjBweCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIH0KfQoKLmJvdW5jZU91dFVwIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dFVwOwogICAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dFVwOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KfQoKQGtleWZyYW1lcyBmYWRlSW4gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQp9CgouZmFkZUluIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbjsKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW47Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5Eb3duIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVJbkRvd24gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCi5mYWRlSW5Eb3duIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd247CiAgICBhbmltYXRpb24tbmFtZTogZmFkZUluRG93bjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbkRvd25CaWcgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVJbkRvd25CaWcgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgouZmFkZUluRG93bkJpZyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5Eb3duQmlnOwogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd25CaWc7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5MZWZ0IHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVJbkxlZnQgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCi5mYWRlSW5MZWZ0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnQ7CiAgICBhbmltYXRpb24tbmFtZTogZmFkZUluTGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbkxlZnRCaWcgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVJbkxlZnRCaWcgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgouZmFkZUluTGVmdEJpZyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5MZWZ0QmlnOwogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnRCaWc7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmFkZUluUmlnaHQgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgouZmFkZUluUmlnaHQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluUmlnaHQ7CiAgICBhbmltYXRpb24tbmFtZTogZmFkZUluUmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5SaWdodEJpZyB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVJblJpZ2h0QmlnIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCi5mYWRlSW5SaWdodEJpZyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5SaWdodEJpZzsKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5SaWdodEJpZzsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJblVwIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBmYWRlSW5VcCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCi5mYWRlSW5VcCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDsKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJblVwQmlnIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmFkZUluVXBCaWcgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKLmZhZGVJblVwQmlnIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwQmlnOwogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwQmlnOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmFkZU91dCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCi5mYWRlT3V0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXQ7CiAgICBhbmltYXRpb24tbmFtZTogZmFkZU91dDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXREb3duIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBmYWRlT3V0RG93biB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7CiAgICB9Cn0KCi5mYWRlT3V0RG93biB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0RG93bjsKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0RG93bjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXREb3duQmlnIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmFkZU91dERvd25CaWcgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTsKICAgIH0KfQoKLmZhZGVPdXREb3duQmlnIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXREb3duQmlnOwogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXREb3duQmlnOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dExlZnQgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmFkZU91dExlZnQgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICB9Cn0KCi5mYWRlT3V0TGVmdCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdDsKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXRMZWZ0QmlnIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBmYWRlT3V0TGVmdEJpZyB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICB9Cn0KCi5mYWRlT3V0TGVmdEJpZyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdEJpZzsKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdEJpZzsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXRSaWdodCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmFkZU91dFJpZ2h0IHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICAgIH0KfQoKLmZhZGVPdXRSaWdodCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0UmlnaHQ7CiAgICBhbmltYXRpb24tbmFtZTogZmFkZU91dFJpZ2h0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dFJpZ2h0QmlnIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmFkZU91dFJpZ2h0QmlnIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgICB9Cn0KCi5mYWRlT3V0UmlnaHRCaWcgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZU91dFJpZ2h0QmlnOwogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRSaWdodEJpZzsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXRVcCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBmYWRlT3V0VXAgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7CiAgICB9Cn0KCi5mYWRlT3V0VXAgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZU91dFVwOwogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRVcDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXRVcEJpZyB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMDAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmFkZU91dFVwQmlnIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIH0KfQoKLmZhZGVPdXRVcEJpZyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0VXBCaWc7CiAgICBhbmltYXRpb24tbmFtZTogZmFkZU91dFVwQmlnOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmxpcCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0zNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0zNjBkZWcpOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7CiAgICB9CiAgICA0MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlM2QoMCwgMCwgMTUwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xOTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZTNkKDAsIDAsIDE1MHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtMTkwZGVnKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogICAgfQogICAgNTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZTNkKDAsIDAsIDE1MHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtMTcwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGUzZCgwLCAwLCAxNTBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTE3MGRlZyk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICB9CiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgc2NhbGUzZCgwLjk1LCAwLjk1LCAwLjk1KTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSBzY2FsZTNkKDAuOTUsIDAuOTUsIDAuOTUpOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmxpcCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0zNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0zNjBkZWcpOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7CiAgICB9CiAgICA0MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlM2QoMCwgMCwgMTUwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xOTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZTNkKDAsIDAsIDE1MHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtMTkwZGVnKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogICAgfQogICAgNTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZTNkKDAsIDAsIDE1MHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtMTcwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGUzZCgwLCAwLCAxNTBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTE3MGRlZyk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICB9CiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgc2NhbGUzZCgwLjk1LCAwLjk1LCAwLjk1KTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSBzY2FsZTNkKDAuOTUsIDAuOTUsIDAuOTUpOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICB9Cn0KCi5hbmltYXRlZC5mbGlwIHsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmbGlwOwogICAgYW5pbWF0aW9uLW5hbWU6IGZsaXA7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmbGlwSW5YIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgOTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIDkwZGVnKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgNDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIC0yMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTIwZGVnKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAxMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgMTBkZWcpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIC01ZGVnKTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpOwogICAgfQp9CgpAa2V5ZnJhbWVzIGZsaXBJblggewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCA5MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgOTBkZWcpOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICA0MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTIwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAtMjBkZWcpOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgfQogICAgNjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIDEwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAxMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDgwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAtNWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTVkZWcpOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgICB9Cn0KCi5mbGlwSW5YIHsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmxpcEluWDsKICAgIGFuaW1hdGlvbi1uYW1lOiBmbGlwSW5YOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmxpcEluWSB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIDkwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCA5MGRlZyk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KICAgIDQwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtMjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0yMGRlZyk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICB9CiAgICA2MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgMTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIDEwZGVnKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgODAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC01ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtNWRlZyk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTsKICAgIH0KfQoKQGtleWZyYW1lcyBmbGlwSW5ZIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgOTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIDkwZGVnKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgNDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0yMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTIwZGVnKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCAxMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgMTBkZWcpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC01ZGVnKTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpOwogICAgfQp9CgouZmxpcEluWSB7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZsaXBJblk7CiAgICBhbmltYXRpb24tbmFtZTogZmxpcEluWTsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZsaXBPdXRYIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgICB9CiAgICAzMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTIwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAtMjBkZWcpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCA5MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgOTBkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCkBrZXlmcmFtZXMgZmxpcE91dFggewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTsKICAgIH0KICAgIDMwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAtMjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIC0yMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIDkwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCA5MGRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKLmZsaXBPdXRYIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjc1czsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC43NXM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmbGlwT3V0WDsKICAgIGFuaW1hdGlvbi1uYW1lOiBmbGlwT3V0WDsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmxpcE91dFkgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTsKICAgIH0KICAgIDMwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtMTVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xNWRlZyk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIDkwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCA5MGRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKQGtleWZyYW1lcyBmbGlwT3V0WSB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpOwogICAgfQogICAgMzAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xNWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTE1ZGVnKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgOTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIDkwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgouZmxpcE91dFkgewogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuNzVzOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjc1czsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmxpcE91dFk7CiAgICBhbmltYXRpb24tbmFtZTogZmxpcE91dFk7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBsaWdodFNwZWVkSW4gewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHNrZXdYKC0zMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSBza2V3WCgtMzBkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICA2MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3WCgyMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgyMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDgwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXdYKC01ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKC01ZGVnKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9Cn0KCkBrZXlmcmFtZXMgbGlnaHRTcGVlZEluIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSBza2V3WCgtMzBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkgc2tld1goLTMwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgNjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2tld1goMjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2tld1goMjBkZWcpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICA4MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3WCgtNWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgtNWRlZyk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQp9CgoubGlnaHRTcGVlZEluIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGxpZ2h0U3BlZWRJbjsKICAgIGFuaW1hdGlvbi1uYW1lOiBsaWdodFNwZWVkSW47CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBsaWdodFNwZWVkT3V0IHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHNrZXdYKDMwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHNrZXdYKDMwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgpAa2V5ZnJhbWVzIGxpZ2h0U3BlZWRPdXQgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkgc2tld1goMzBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkgc2tld1goMzBkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCi5saWdodFNwZWVkT3V0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGxpZ2h0U3BlZWRPdXQ7CiAgICBhbmltYXRpb24tbmFtZTogbGlnaHRTcGVlZE91dDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVJbiB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC0yMDBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTIwMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KfQoKQGtleWZyYW1lcyByb3RhdGVJbiB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC0yMDBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTIwMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KfQoKLnJvdGF0ZUluIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluOwogICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlSW5Eb3duTGVmdCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNDVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTQ1ZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KfQoKQGtleWZyYW1lcyByb3RhdGVJbkRvd25MZWZ0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC00NWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNDVkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQp9Cgoucm90YXRlSW5Eb3duTGVmdCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25MZWZ0OwogICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluRG93bkxlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVJbkRvd25SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluRG93blJpZ2h0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNDVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNDVkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9Cn0KCi5yb3RhdGVJbkRvd25SaWdodCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25SaWdodDsKICAgIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25SaWdodDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZUluVXBMZWZ0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KfQoKQGtleWZyYW1lcyByb3RhdGVJblVwTGVmdCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA0NWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA0NWRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9Cn0KCi5yb3RhdGVJblVwTGVmdCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVJblVwTGVmdDsKICAgIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJblVwTGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZUluVXBSaWdodCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC05MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtOTBkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9Cn0KCkBrZXlmcmFtZXMgcm90YXRlSW5VcFJpZ2h0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTkwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC05MGRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KfQoKLnJvdGF0ZUluVXBSaWdodCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVJblVwUmlnaHQ7CiAgICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5VcFJpZ2h0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlT3V0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMjAwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDIwMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKQGtleWZyYW1lcyByb3RhdGVPdXQgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAyMDBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMjAwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9Cgoucm90YXRlT3V0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dDsKICAgIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVPdXQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVPdXREb3duTGVmdCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNDVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNDVkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCkBrZXlmcmFtZXMgcm90YXRlT3V0RG93bkxlZnQgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9Cgoucm90YXRlT3V0RG93bkxlZnQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcm90YXRlT3V0RG93bkxlZnQ7CiAgICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0RG93bkxlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVPdXREb3duUmlnaHQgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNDVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTQ1ZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgpAa2V5ZnJhbWVzIHJvdGF0ZU91dERvd25SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC00NWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNDVkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCi5yb3RhdGVPdXREb3duUmlnaHQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcm90YXRlT3V0RG93blJpZ2h0OwogICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dERvd25SaWdodDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZU91dFVwTGVmdCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTQ1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC00NWRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKQGtleWZyYW1lcyByb3RhdGVPdXRVcExlZnQgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC00NWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNDVkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCi5yb3RhdGVPdXRVcExlZnQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcm90YXRlT3V0VXBMZWZ0OwogICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dFVwTGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZU91dFVwUmlnaHQgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA5MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA5MGRlZyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKQGtleWZyYW1lcyByb3RhdGVPdXRVcFJpZ2h0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgOTBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgOTBkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCi5yb3RhdGVPdXRVcFJpZ2h0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dFVwUmlnaHQ7CiAgICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0VXBSaWdodDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGhpbmdlIHsKICAgIDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICB9CiAgICAyMCUsCiAgICA2MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA4MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA4MGRlZyk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogICAgfQogICAgNDAlLAogICAgODAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNjBkZWcpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA3MDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA3MDBweCwgMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKQGtleWZyYW1lcyBoaW5nZSB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogICAgfQogICAgMjAlLAogICAgNjAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgODBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgODBkZWcpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgIH0KICAgIDQwJSwKICAgIDgwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDYwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDYwZGVnKTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgNzAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgNzAwcHgsIDApOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCi5oaW5nZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDJzOwogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogaGluZ2U7CiAgICBhbmltYXRpb24tbmFtZTogaGluZ2U7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBqYWNrSW5UaGVCb3ggewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC4xKSByb3RhdGUoMzBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4xKSByb3RhdGUoMzBkZWcpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwogICAgfQogICAgNTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEwZGVnKTsKICAgIH0KICAgIDcwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgfQp9CgpAa2V5ZnJhbWVzIGphY2tJblRoZUJveCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjEpIHJvdGF0ZSgzMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjEpIHJvdGF0ZSgzMGRlZyk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207CiAgICB9CiAgICA1MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTBkZWcpOwogICAgfQogICAgNzAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDNkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDNkZWcpOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB9Cn0KCi5qYWNrSW5UaGVCb3ggewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogamFja0luVGhlQm94OwogICAgYW5pbWF0aW9uLW5hbWU6IGphY2tJblRoZUJveDsKfQoKLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovCgpALXdlYmtpdC1rZXlmcmFtZXMgcm9sbEluIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAtMTIwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAtMTIwZGVnKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIHJvbGxJbiB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTEyMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTEyMGRlZyk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKLnJvbGxJbiB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb2xsSW47CiAgICBhbmltYXRpb24tbmFtZTogcm9sbEluOwp9CgovKiBvcmlnaW5hbGx5IGF1dGhvcmVkIGJ5IE5pY2sgUGV0dGl0IC0gaHR0cHM6Ly9naXRodWIuY29tL25pY2twZXR0aXQvZ2xpZGUgKi8KCkAtd2Via2l0LWtleWZyYW1lcyByb2xsT3V0IHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgMTIwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDEyMGRlZyk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgcm9sbE91dCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDEyMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAxMjBkZWcpOwogICAgfQp9Cgoucm9sbE91dCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb2xsT3V0OwogICAgYW5pbWF0aW9uLW5hbWU6IHJvbGxPdXQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyB6b29tSW4gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjMsIDAuMywgMC4zKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4zLCAwLjMsIDAuMyk7CiAgICB9CiAgICA1MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9Cn0KCkBrZXlmcmFtZXMgem9vbUluIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC4zLCAwLjMsIDAuMyk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuMywgMC4zLCAwLjMpOwogICAgfQogICAgNTAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQp9Cgouem9vbUluIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb21JbjsKICAgIGFuaW1hdGlvbi1uYW1lOiB6b29tSW47Cn0KCkAtd2Via2l0LWtleWZyYW1lcyB6b29tSW5Eb3duIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgLTEwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuMSwgMC4xLCAwLjEpIHRyYW5zbGF0ZTNkKDAsIC0xMDAwcHgsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMCwgNjBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgem9vbUluRG93biB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuMSwgMC4xLCAwLjEpIHRyYW5zbGF0ZTNkKDAsIC0xMDAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAtMTAwMHB4LCAwKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCgwLCA2MHB4LCAwKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpOwogICAgfQp9Cgouem9vbUluRG93biB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tSW5Eb3duOwogICAgYW5pbWF0aW9uLW5hbWU6IHpvb21JbkRvd247Cn0KCkAtd2Via2l0LWtleWZyYW1lcyB6b29tSW5MZWZ0IHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoLTEwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuMSwgMC4xLCAwLjEpIHRyYW5zbGF0ZTNkKC0xMDAwcHgsIDAsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMTBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgem9vbUluTGVmdCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuMSwgMC4xLCAwLjEpIHRyYW5zbGF0ZTNkKC0xMDAwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgtMTAwMHB4LCAwLCAwKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpOwogICAgfQp9Cgouem9vbUluTGVmdCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tSW5MZWZ0OwogICAgYW5pbWF0aW9uLW5hbWU6IHpvb21JbkxlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyB6b29tSW5SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuMSwgMC4xLCAwLjEpIHRyYW5zbGF0ZTNkKDEwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuMSwgMC4xLCAwLjEpIHRyYW5zbGF0ZTNkKDEwMDBweCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTsKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCgtMTBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpOwogICAgfQp9CgpAa2V5ZnJhbWVzIHpvb21JblJpZ2h0IHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMTAwMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMTAwMHB4LCAwLCAwKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICB9Cn0KCi56b29tSW5SaWdodCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tSW5SaWdodDsKICAgIGFuaW1hdGlvbi1uYW1lOiB6b29tSW5SaWdodDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHpvb21JblVwIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgMTAwMHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgMTAwMHB4LCAwKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIC02MHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgem9vbUluVXAgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAxMDAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAxMDAwcHgsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCgwLCAtNjBweCwgMCk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxKTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxKTsKICAgIH0KfQoKLnpvb21JblVwIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb21JblVwOwogICAgYW5pbWF0aW9uLW5hbWU6IHpvb21JblVwOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgem9vbU91dCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgNTAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuMywgMC4zLCAwLjMpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjMsIDAuMywgMC4zKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgpAa2V5ZnJhbWVzIHpvb21PdXQgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjMsIDAuMywgMC4zKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4zLCAwLjMsIDAuMyk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKLnpvb21PdXQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogem9vbU91dDsKICAgIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgem9vbU91dERvd24gewogICAgNDAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIC02MHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgem9vbU91dERvd24gewogICAgNDAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIC02MHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICB9Cn0KCi56b29tT3V0RG93biB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tT3V0RG93bjsKICAgIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0RG93bjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHpvb21PdXRMZWZ0IHsKICAgIDQwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCg0MnB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoNDJweCwgMCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC4xKSB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMSkgdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgIH0KfQoKQGtleWZyYW1lcyB6b29tT3V0TGVmdCB7CiAgICA0MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoNDJweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDQycHgsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuMSkgdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjEpIHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7CiAgICB9Cn0KCi56b29tT3V0TGVmdCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tT3V0TGVmdDsKICAgIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0TGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHpvb21PdXRSaWdodCB7CiAgICA0MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoLTQycHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCgtNDJweCwgMCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC4xKSB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4xKSB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGNlbnRlcjsKICAgIH0KfQoKQGtleWZyYW1lcyB6b29tT3V0UmlnaHQgewogICAgNDAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKC00MnB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoLTQycHgsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuMSkgdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMSkgdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgICB9Cn0KCi56b29tT3V0UmlnaHQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogem9vbU91dFJpZ2h0OwogICAgYW5pbWF0aW9uLW5hbWU6IHpvb21PdXRSaWdodDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHpvb21PdXRVcCB7CiAgICA0MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMCwgNjBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7CiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxKTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxKTsKICAgIH0KfQoKQGtleWZyYW1lcyB6b29tT3V0VXAgewogICAgNDAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCgwLCA2MHB4LCAwKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuMSwgMC4xLCAwLjEpIHRyYW5zbGF0ZTNkKDAsIC0yMDAwcHgsIDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7CiAgICB9Cn0KCi56b29tT3V0VXAgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogem9vbU91dFVwOwogICAgYW5pbWF0aW9uLW5hbWU6IHpvb21PdXRVcDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5Eb3duIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBzbGlkZUluRG93biB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCi5zbGlkZUluRG93biB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluRG93bjsKICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluRG93bjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5MZWZ0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBzbGlkZUluTGVmdCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOwogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9Cn0KCi5zbGlkZUluTGVmdCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluTGVmdDsKICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluTGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIHNsaWRlSW5SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQp9Cgouc2xpZGVJblJpZ2h0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5SaWdodDsKICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluUmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluVXAgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBzbGlkZUluVXAgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KfQoKLnNsaWRlSW5VcCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluVXA7CiAgICBhbmltYXRpb24tbmFtZTogc2xpZGVJblVwOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVPdXREb3duIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBzbGlkZU91dERvd24gewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogICAgfQp9Cgouc2xpZGVPdXREb3duIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0RG93bjsKICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dERvd247Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZU91dExlZnQgewogICAgZnJvbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgc2xpZGVPdXRMZWZ0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOwogICAgfQp9Cgouc2xpZGVPdXRMZWZ0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0TGVmdDsKICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dExlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZU91dFJpZ2h0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBzbGlkZU91dFJpZ2h0IHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICAgIH0KfQoKLnNsaWRlT3V0UmlnaHQgewogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVPdXRSaWdodDsKICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dFJpZ2h0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVPdXRVcCB7CiAgICBmcm9tIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBzbGlkZU91dFVwIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgfQogICAgdG8gewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogICAgfQp9Cgouc2xpZGVPdXRVcCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dFVwOwogICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0VXA7Cn0KCi5hbmltYXRlZC5kZWxheS0ycyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMnM7CiAgICBhbmltYXRpb24tZGVsYXk6IDJzOwp9CgpAa2V5ZnJhbWVzIHJvdGF0ZSB7CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlIHsKICAgIDEwMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzY2FsZWljb24gewogICAgZnJvbSB7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSwgMSk7CiAgICAgICAgLyogSUUgOSAqLwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7CiAgICAgICAgLyogU3RhbmRhcmQgc3ludGF4ICovCiAgICB9CiAgICA1MCUgewogICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMywgMS4zKTsKICAgICAgICAvKiBJRSA5ICovCiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMsIDEuMyk7CiAgICAgICAgLyogU3RhbmRhcmQgc3ludGF4ICovCiAgICB9Cn0KCkBrZXlmcmFtZXMgc2NhbGVpY29uIHsKICAgIGZyb20gewogICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogICAgICAgIC8qIElFIDkgKi8KICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogICAgICAgIC8qIFN0YW5kYXJkIHN5bnRheCAqLwogICAgfQogICAgNTAlIHsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjMsIDEuMyk7CiAgICAgICAgLyogSUUgOSAqLwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4zLCAxLjMpOwogICAgICAgIC8qIFN0YW5kYXJkIHN5bnRheCAqLwogICAgfQp9"}},"time_used":659,"timings":{"blocked":468,"dns":0,"connect":0,"send":0,"wait":97,"receive":94,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/animations/animations.min.css?ver=3.6.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.388Z","timestamp":1785145482388,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/animations/animations.min.css?ver=3.6.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/css\r\nContent-Length: 25167\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":25167,"size_decoded":25377,"mime_type":"text/css","magic":"ASCII text","md5":"2de5ec033343c141f73ff28f07dd1624","sha1":"6f01e4cf704b1375d1f1affa034bfd5cf1570461","sha256":"2a2c3f4f75f2dad29ae4706aacb514f69a26c5e425f1d476e3472847f20a2575","sha512":"ad33288e95e4ba24e0bbd466fc94a5020c0fdef54626df95c3f3c7a422722a1eae0406b890608d1a2ef63478026030060315c9b36466f0ea7f5cf8010ad3f2d5","ssdeep":"192:cls9bg/0jbk2j2321+K6jAna6ql3dhHuITKKRTFu6jufKJY8mLKik2c2ns6MjIwA:cwe9Lce0B","tlshash":"a9b27dc57ca21408835b423a82ef4a6ca978edc3282b5dfdf65d018f4f1567867c6b63","first_seen":"2023-07-07T15:41:17Z","last_seen":"2026-07-27T10:21:19.46733Z","times_seen":48,"resource_available":false,"data":"QGtleWZyYW1lcyBib3VuY2UgewogICAgMjAlLAogICAgNTMlLAogICAgODAlLAogICAgZnJvbSwKICAgIHRvIHsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjIxNSwgLjYxLCAuMzU1LCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApCiAgICB9CiAgICA0MCUsCiAgICA0MyUgewogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNzU1LCAuMDUwLCAuODU1LCAuMDYwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0zMHB4LCAwKQogICAgfQogICAgNzAlIHsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjc1NSwgLjA1MCwgLjg1NSwgLjA2MCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTVweCwgMCkKICAgIH0KICAgIDkwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNHB4LCAwKQogICAgfQp9CgouYm91bmNlIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBib3VuY2U7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tCn0KCkBrZXlmcmFtZXMgZmxhc2ggewogICAgNTAlLAogICAgZnJvbSwKICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9CiAgICAyNSUsCiAgICA3NSUgewogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KfQoKLmZsYXNoIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBmbGFzaAp9CgpAa2V5ZnJhbWVzIHB1bHNlIHsKICAgIGZyb20sCiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpCiAgICB9CiAgICA1MCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjA1LCAxLjA1LCAxLjA1KQogICAgfQp9CgoucHVsc2UgewogICAgYW5pbWF0aW9uLW5hbWU6IHB1bHNlCn0KCkBrZXlmcmFtZXMgcnViYmVyQmFuZCB7CiAgICBmcm9tLAogICAgdG8gewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKQogICAgfQogICAgMzAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4yNSwgLjc1LCAxKQogICAgfQogICAgNDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjc1LCAxLjI1LCAxKQogICAgfQogICAgNTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xNSwgLjg1LCAxKQogICAgfQogICAgNjUlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjk1LCAxLjA1LCAxKQogICAgfQogICAgNzUlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4wNSwgLjk1LCAxKQogICAgfQp9CgoucnViYmVyQmFuZCB7CiAgICBhbmltYXRpb24tbmFtZTogcnViYmVyQmFuZAp9CgpAa2V5ZnJhbWVzIHNoYWtlIHsKICAgIGZyb20sCiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQogICAgMTAlLAogICAgMzAlLAogICAgNTAlLAogICAgNzAlLAogICAgOTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKQogICAgfQogICAgMjAlLAogICAgNDAlLAogICAgNjAlLAogICAgODAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApCiAgICB9Cn0KCi5zaGFrZSB7CiAgICBhbmltYXRpb24tbmFtZTogc2hha2UKfQoKQGtleWZyYW1lcyBoZWFkU2hha2UgewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKQogICAgfQogICAgNi41JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC02cHgpIHJvdGF0ZVkoLTlkZWcpCiAgICB9CiAgICAxOC41JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCkgcm90YXRlWSg3ZGVnKQogICAgfQogICAgMzEuNSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KSByb3RhdGVZKC01ZGVnKQogICAgfQogICAgNDMuNSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpIHJvdGF0ZVkoM2RlZykKICAgIH0KICAgIDUwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApCiAgICB9Cn0KCi5oZWFkU2hha2UgewogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24tbmFtZTogaGVhZFNoYWtlCn0KCkBrZXlmcmFtZXMgc3dpbmcgewogICAgMjAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDE1ZGVnKQogICAgfQogICAgNDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC0xMGRlZykKICAgIH0KICAgIDYwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA1ZGVnKQogICAgfQogICAgODAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC01ZGVnKQogICAgfQogICAgdG8gewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZykKICAgIH0KfQoKLnN3aW5nIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICBhbmltYXRpb24tbmFtZTogc3dpbmcKfQoKQGtleWZyYW1lcyB0YWRhIHsKICAgIGZyb20sCiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpCiAgICB9CiAgICAxMCUsCiAgICAyMCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCguOSwgLjksIC45KSByb3RhdGUzZCgwLCAwLCAxLCAtM2RlZykKICAgIH0KICAgIDMwJSwKICAgIDUwJSwKICAgIDcwJSwKICAgIDkwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpCiAgICB9CiAgICA0MCUsCiAgICA2MCUsCiAgICA4MCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKSByb3RhdGUzZCgwLCAwLCAxLCAtM2RlZykKICAgIH0KfQoKLnRhZGEgewogICAgYW5pbWF0aW9uLW5hbWU6IHRhZGEKfQoKQGtleWZyYW1lcyB3b2JibGUgewogICAgZnJvbSwKICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUKICAgIH0KICAgIDE1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjUlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAtNWRlZykKICAgIH0KICAgIDMwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpCiAgICB9CiAgICA0NSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTE1JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpCiAgICB9CiAgICA2MCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAyZGVnKQogICAgfQogICAgNzUlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTFkZWcpCiAgICB9Cn0KCi53b2JibGUgewogICAgYW5pbWF0aW9uLW5hbWU6IHdvYmJsZQp9CgpAa2V5ZnJhbWVzIGplbGxvIHsKICAgIDExLjElLAogICAgZnJvbSwKICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUKICAgIH0KICAgIDIyLjIlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKC0xMi41ZGVnKSBza2V3WSgtMTIuNWRlZykKICAgIH0KICAgIDMzLjMlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKDYuMjVkZWcpIHNrZXdZKDYuMjVkZWcpCiAgICB9CiAgICA0NC40JSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgtMy4xMjVkZWcpIHNrZXdZKC0zLjEyNWRlZykKICAgIH0KICAgIDU1LjUlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKDEuNTYyNWRlZykgc2tld1koMS41NjI1ZGVnKQogICAgfQogICAgNjYuNiUgewogICAgICAgIHRyYW5zZm9ybTogc2tld1goLS43ODEyNWRlZykgc2tld1koLS43ODEyNWRlZykKICAgIH0KICAgIDc3LjclIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKC4zOTA2MjVkZWcpIHNrZXdZKC4zOTA2MjVkZWcpCiAgICB9CiAgICA4OC44JSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgtLjE5NTMxMjVkZWcpIHNrZXdZKC0uMTk1MzEyNWRlZykKICAgIH0KfQoKLmplbGxvIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBqZWxsbzsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcgp9CgpAa2V5ZnJhbWVzIGJvdW5jZUluIHsKICAgIDIwJSwKICAgIDQwJSwKICAgIDYwJSwKICAgIDgwJSwKICAgIGZyb20sCiAgICB0byB7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC4yMTUsIC42MSwgLjM1NSwgMSkKICAgIH0KICAgIDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMywgLjMsIC4zKQogICAgfQogICAgMjAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xLCAxLjEsIDEuMSkKICAgIH0KICAgIDQwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45LCAuOSwgLjkpCiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDMsIDEuMDMsIDEuMDMpCiAgICB9CiAgICA4MCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCguOTcsIC45NywgLjk3KQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpCiAgICB9Cn0KCi5ib3VuY2VJbiB7CiAgICBhbmltYXRpb24tbmFtZTogYm91bmNlSW4KfQoKQGtleWZyYW1lcyBib3VuY2VJbkRvd24gewogICAgNjAlLAogICAgNzUlLAogICAgOTAlLAogICAgZnJvbSwKICAgIHRvIHsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjIxNSwgLjYxLCAuMzU1LCAxKQogICAgfQogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzAwMHB4LCAwKQogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjVweCwgMCkKICAgIH0KICAgIDc1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTBweCwgMCkKICAgIH0KICAgIDkwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA1cHgsIDApCiAgICB9CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiBub25lCiAgICB9Cn0KCi5ib3VuY2VJbkRvd24gewogICAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluRG93bgp9CgpAa2V5ZnJhbWVzIGJvdW5jZUluTGVmdCB7CiAgICA2MCUsCiAgICA3NSUsCiAgICA5MCUsCiAgICBmcm9tLAogICAgdG8gewogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguMjE1LCAuNjEsIC4zNTUsIDEpCiAgICB9CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0zMDAwcHgsIDAsIDApCiAgICB9CiAgICA2MCUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyNXB4LCAwLCAwKQogICAgfQogICAgNzUlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKQogICAgfQogICAgOTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDVweCwgMCwgMCkKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUKICAgIH0KfQoKLmJvdW5jZUluTGVmdCB7CiAgICBhbmltYXRpb24tbmFtZTogYm91bmNlSW5MZWZ0Cn0KCkBrZXlmcmFtZXMgYm91bmNlSW5SaWdodCB7CiAgICA2MCUsCiAgICA3NSUsCiAgICA5MCUsCiAgICBmcm9tLAogICAgdG8gewogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguMjE1LCAuNjEsIC4zNTUsIDEpCiAgICB9CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMzAwMHB4LCAwLCAwKQogICAgfQogICAgNjAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTI1cHgsIDAsIDApCiAgICB9CiAgICA3NSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTBweCwgMCwgMCkKICAgIH0KICAgIDkwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNXB4LCAwLCAwKQogICAgfQogICAgdG8gewogICAgICAgIHRyYW5zZm9ybTogbm9uZQogICAgfQp9CgouYm91bmNlSW5SaWdodCB7CiAgICBhbmltYXRpb24tbmFtZTogYm91bmNlSW5SaWdodAp9CgpAa2V5ZnJhbWVzIGJvdW5jZUluVXAgewogICAgNjAlLAogICAgNzUlLAogICAgOTAlLAogICAgZnJvbSwKICAgIHRvIHsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjIxNSwgLjYxLCAuMzU1LCAxKQogICAgfQogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwMDBweCwgMCkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMHB4LCAwKQogICAgfQogICAgNzUlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwcHgsIDApCiAgICB9CiAgICA5MCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTVweCwgMCkKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApCiAgICB9Cn0KCi5ib3VuY2VJblVwIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJblVwCn0KCkBrZXlmcmFtZXMgZmFkZUluIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9Cn0KCi5mYWRlSW4gewogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbgp9CgpAa2V5ZnJhbWVzIGZhZGVJbkRvd24gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNmb3JtOiBub25lCiAgICB9Cn0KCi5mYWRlSW5Eb3duIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5Eb3duCn0KCkBrZXlmcmFtZXMgZmFkZUluTGVmdCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUKICAgIH0KfQoKLmZhZGVJbkxlZnQgewogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnQKfQoKQGtleWZyYW1lcyBmYWRlSW5SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogbm9uZQogICAgfQp9CgouZmFkZUluUmlnaHQgewogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblJpZ2h0Cn0KCkBrZXlmcmFtZXMgZmFkZUluVXAgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApCiAgICB9CiAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUKICAgIH0KfQoKLmZhZGVJblVwIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcAp9CgpAa2V5ZnJhbWVzIGxpZ2h0U3BlZWRJbiB7CiAgICBmcm9tIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHNrZXdYKC0zMGRlZyk7CiAgICAgICAgb3BhY2l0eTogMAogICAgfQogICAgNjAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKDIwZGVnKTsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9CiAgICA4MCUgewogICAgICAgIHRyYW5zZm9ybTogc2tld1goLTVkZWcpOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQp9CgoubGlnaHRTcGVlZEluIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBsaWdodFNwZWVkSW47CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dAp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluIHsKICAgIGZyb20gewogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC0yMDBkZWcpOwogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KfQoKLnJvdGF0ZUluIHsKICAgIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbgp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluRG93bkxlZnQgewogICAgZnJvbSB7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNDVkZWcpOwogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQp9Cgoucm90YXRlSW5Eb3duTGVmdCB7CiAgICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5Eb3duTGVmdAp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluRG93blJpZ2h0IHsKICAgIGZyb20gewogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgICBvcGFjaXR5OiAxCiAgICB9Cn0KCi5yb3RhdGVJbkRvd25SaWdodCB7CiAgICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5Eb3duUmlnaHQKfQoKQGtleWZyYW1lcyByb3RhdGVJblVwTGVmdCB7CiAgICBmcm9tIHsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTsKICAgICAgICBvcGFjaXR5OiAwCiAgICB9CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KfQoKLnJvdGF0ZUluVXBMZWZ0IHsKICAgIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJblVwTGVmdAp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluVXBSaWdodCB7CiAgICBmcm9tIHsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtOTBkZWcpOwogICAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIG9wYWNpdHk6IDEKICAgIH0KfQoKLnJvdGF0ZUluVXBSaWdodCB7CiAgICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5VcFJpZ2h0Cn0KCkBrZXlmcmFtZXMgcm9sbEluIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTEyMGRlZykKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogbm9uZQogICAgfQp9Cgoucm9sbEluIHsKICAgIGFuaW1hdGlvbi1uYW1lOiByb2xsSW4KfQoKQGtleWZyYW1lcyB6b29tSW4gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMykKICAgIH0KICAgIDUwJSB7CiAgICAgICAgb3BhY2l0eTogMQogICAgfQp9Cgouem9vbUluIHsKICAgIGFuaW1hdGlvbi1uYW1lOiB6b29tSW4KfQoKQGtleWZyYW1lcyB6b29tSW5Eb3duIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDAsIC0xMDAwcHgsIDApOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNTUsIC4wNTUsIC42NzUsIC4xOSkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgNjBweCwgMCk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC4xNzUsIC44ODUsIC4zMiwgMSkKICAgIH0KfQoKLnpvb21JbkRvd24gewogICAgYW5pbWF0aW9uLW5hbWU6IHpvb21JbkRvd24KfQoKQGtleWZyYW1lcyB6b29tSW5MZWZ0IHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKC0xMDAwcHgsIDAsIDApOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNTUsIC4wNTUsIC42NzUsIC4xOSkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMTBweCwgMCwgMCk7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC4xNzUsIC44ODUsIC4zMiwgMSkKICAgIH0KfQoKLnpvb21JbkxlZnQgewogICAgYW5pbWF0aW9uLW5hbWU6IHpvb21JbkxlZnQKfQoKQGtleWZyYW1lcyB6b29tSW5SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgxMDAwcHgsIDAsIDApOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNTUsIC4wNTUsIC42NzUsIC4xOSkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguMTc1LCAuODg1LCAuMzIsIDEpCiAgICB9Cn0KCi56b29tSW5SaWdodCB7CiAgICBhbmltYXRpb24tbmFtZTogem9vbUluUmlnaHQKfQoKQGtleWZyYW1lcyB6b29tSW5VcCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAxMDAwcHgsIDApOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNTUsIC4wNTUsIC42NzUsIC4xOSkKICAgIH0KICAgIDYwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguMTc1LCAuODg1LCAuMzIsIDEpCiAgICB9Cn0KCi56b29tSW5VcCB7CiAgICBhbmltYXRpb24tbmFtZTogem9vbUluVXAKfQoKQGtleWZyYW1lcyBzbGlkZUluRG93biB7CiAgICBmcm9tIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlCiAgICB9CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKQogICAgfQp9Cgouc2xpZGVJbkRvd24gewogICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5Eb3duCn0KCkBrZXlmcmFtZXMgc2xpZGVJbkxlZnQgewogICAgZnJvbSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZQogICAgfQogICAgdG8gewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KfQoKLnNsaWRlSW5MZWZ0IHsKICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluTGVmdAp9CgpAa2V5ZnJhbWVzIHNsaWRlSW5SaWdodCB7CiAgICBmcm9tIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApCiAgICB9Cn0KCi5zbGlkZUluUmlnaHQgewogICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5SaWdodAp9CgpAa2V5ZnJhbWVzIHNsaWRlSW5VcCB7CiAgICBmcm9tIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUKICAgIH0KICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApCiAgICB9Cn0KCi5zbGlkZUluVXAgewogICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5VcAp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1ncm93IHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4zczsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1ncm93OmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24tZ3Jvdzpmb2N1cywKLmVsZW1lbnRvci1hbmltYXRpb24tZ3Jvdzpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSkKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tc2hyaW5rIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4zczsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1zaHJpbms6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi1zaHJpbms6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLXNocmluazpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSkKfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItYW5pbWF0aW9uLXB1bHNlIHsKICAgIDI1JSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpCiAgICB9CiAgICA3NSUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KQogICAgfQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZTphY3RpdmUsCi5lbGVtZW50b3ItYW5pbWF0aW9uLXB1bHNlOmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZTpob3ZlciB7CiAgICBhbmltYXRpb24tbmFtZTogZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZTsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1hbmltYXRpb24tcHVsc2UtZ3JvdyB7CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpCiAgICB9Cn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXB1bHNlLWdyb3c6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZS1ncm93OmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZS1ncm93OmhvdmVyIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBlbGVtZW50b3ItYW5pbWF0aW9uLXB1bHNlLWdyb3c7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC4zczsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOwogICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogYWx0ZXJuYXRlCn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZS1zaHJpbmsgewogICAgdG8gewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KQogICAgfQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZS1zaHJpbms6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZS1zaHJpbms6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLXB1bHNlLXNocmluazpob3ZlciB7CiAgICBhbmltYXRpb24tbmFtZTogZWxlbWVudG9yLWFuaW1hdGlvbi1wdWxzZS1zaHJpbms7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC4zczsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOwogICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogYWx0ZXJuYXRlCn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWFuaW1hdGlvbi1wdXNoIHsKICAgIDUwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpCiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpCiAgICB9Cn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXB1c2g6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi1wdXNoOmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi1wdXNoOmhvdmVyIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBlbGVtZW50b3ItYW5pbWF0aW9uLXB1c2g7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC4zczsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEKfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItYW5pbWF0aW9uLXBvcCB7CiAgICA1MCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKQogICAgfQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1wb3A6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi1wb3A6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLXBvcDpob3ZlciB7CiAgICBhbmltYXRpb24tbmFtZTogZWxlbWVudG9yLWFuaW1hdGlvbi1wb3A7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC4zczsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tYm91bmNlLWluIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC41cwp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1ib3VuY2UtaW46YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi1ib3VuY2UtaW46Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLWJvdW5jZS1pbjpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNDcsIDIuMDIsIC4zMSwgLS4zNikKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tYm91bmNlLW91dCB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuNXMKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tYm91bmNlLW91dDphY3RpdmUsCi5lbGVtZW50b3ItYW5pbWF0aW9uLWJvdW5jZS1vdXQ6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLWJvdW5jZS1vdXQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQ3LCAyLjAyLCAuMzEsIC0uMzYpCn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXJvdGF0ZSB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuM3M7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0KfQoKLmVsZW1lbnRvci1hbmltYXRpb24tcm90YXRlOmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24tcm90YXRlOmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi1yb3RhdGU6aG92ZXIgewogICAgdHJhbnNmb3JtOiByb3RhdGUoNGRlZykKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tZ3Jvdy1yb3RhdGUgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtCn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLWdyb3ctcm90YXRlOmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24tZ3Jvdy1yb3RhdGU6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLWdyb3ctcm90YXRlOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoNGRlZykKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tZmxvYXQgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0Cn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLWZsb2F0OmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24tZmxvYXQ6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLWZsb2F0OmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1zaW5rIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4zczsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dAp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1zaW5rOmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24tc2luazpmb2N1cywKLmVsZW1lbnRvci1hbmltYXRpb24tc2luazpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1hbmltYXRpb24tYm9iIHsKICAgIDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkKICAgIH0KICAgIDUwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpCiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkKICAgIH0KfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItYW5pbWF0aW9uLWJvYi1mbG9hdCB7CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkKICAgIH0KfQoKLmVsZW1lbnRvci1hbmltYXRpb24tYm9iOmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24tYm9iOmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi1ib2I6aG92ZXIgewogICAgYW5pbWF0aW9uLW5hbWU6IGVsZW1lbnRvci1hbmltYXRpb24tYm9iLWZsb2F0LCBlbGVtZW50b3ItYW5pbWF0aW9uLWJvYjsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzLCAxLjVzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAwcywgLjNzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQsIGVhc2UtaW4tb3V0OwogICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSwgaW5maW5pdGU7CiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IG5vcm1hbCwgYWx0ZXJuYXRlCn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWFuaW1hdGlvbi1oYW5nIHsKICAgIDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KQogICAgfQogICAgNTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KQogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCkKICAgIH0KfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItYW5pbWF0aW9uLWhhbmctc2luayB7CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KQogICAgfQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi1oYW5nOmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24taGFuZzpmb2N1cywKLmVsZW1lbnRvci1hbmltYXRpb24taGFuZzpob3ZlciB7CiAgICBhbmltYXRpb24tbmFtZTogZWxlbWVudG9yLWFuaW1hdGlvbi1oYW5nLXNpbmssIGVsZW1lbnRvci1hbmltYXRpb24taGFuZzsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzLCAxLjVzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAwcywgLjNzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQsIGVhc2UtaW4tb3V0OwogICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSwgaW5maW5pdGU7CiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IG5vcm1hbCwgYWx0ZXJuYXRlCn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXNrZXcgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjNzOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtCn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXNrZXc6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi1za2V3OmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi1za2V3OmhvdmVyIHsKICAgIHRyYW5zZm9ybTogc2tldygtMTBkZWcpCn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXNrZXctZm9yd2FyZCB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuM3M7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDEwMCUKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tc2tldy1mb3J3YXJkOmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24tc2tldy1mb3J3YXJkOmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi1za2V3LWZvcndhcmQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiBza2V3KC0xMGRlZykKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tc2tldy1iYWNrd2FyZCB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuM3M7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDEwMCUKfQoKLmVsZW1lbnRvci1hbmltYXRpb24tc2tldy1iYWNrd2FyZDphY3RpdmUsCi5lbGVtZW50b3ItYW5pbWF0aW9uLXNrZXctYmFja3dhcmQ6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLXNrZXctYmFja3dhcmQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiBza2V3KDEwZGVnKQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1hbmltYXRpb24td29iYmxlLXZlcnRpY2FsIHsKICAgIDE2LjY1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCkKICAgIH0KICAgIDMzLjMlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTZweCkKICAgIH0KICAgIDQ5Ljk1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCkKICAgIH0KICAgIDY2LjYlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkKICAgIH0KICAgIDgzLjI1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCkKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKQogICAgfQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdmVydGljYWw6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdmVydGljYWw6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS12ZXJ0aWNhbDpob3ZlciB7CiAgICBhbmltYXRpb24tbmFtZTogZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdmVydGljYWw7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxCn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtaG9yaXpvbnRhbCB7CiAgICAxNi42NSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg4cHgpCiAgICB9CiAgICAzMy4zJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC02cHgpCiAgICB9CiAgICA0OS45NSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpCiAgICB9CiAgICA2Ni42JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0ycHgpCiAgICB9CiAgICA4My4yNSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxcHgpCiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkKICAgIH0KfQoKLmVsZW1lbnRvci1hbmltYXRpb24td29iYmxlLWhvcml6b250YWw6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtaG9yaXpvbnRhbDpmb2N1cywKLmVsZW1lbnRvci1hbmltYXRpb24td29iYmxlLWhvcml6b250YWw6aG92ZXIgewogICAgYW5pbWF0aW9uLW5hbWU6IGVsZW1lbnRvci1hbmltYXRpb24td29iYmxlLWhvcml6b250YWw7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxCn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdG8tYm90dG9tLXJpZ2h0IHsKICAgIDE2LjY1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoOHB4LCA4cHgpCiAgICB9CiAgICAzMy4zJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTZweCwgLTZweCkKICAgIH0KICAgIDQ5Ljk1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNHB4LCA0cHgpCiAgICB9CiAgICA2Ni42JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTJweCwgLTJweCkKICAgIH0KICAgIDgzLjI1JSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMXB4LCAxcHgpCiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKQogICAgfQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdG8tYm90dG9tLXJpZ2h0OmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24td29iYmxlLXRvLWJvdHRvbS1yaWdodDpmb2N1cywKLmVsZW1lbnRvci1hbmltYXRpb24td29iYmxlLXRvLWJvdHRvbS1yaWdodDpob3ZlciB7CiAgICBhbmltYXRpb24tbmFtZTogZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdG8tYm90dG9tLXJpZ2h0OwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxczsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1hbmltYXRpb24td29iYmxlLXRvLXRvcC1yaWdodCB7CiAgICAxNi42NSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDhweCwgLThweCkKICAgIH0KICAgIDMzLjMlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNnB4LCA2cHgpCiAgICB9CiAgICA0OS45NSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDRweCwgLTRweCkKICAgIH0KICAgIDY2LjYlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAycHgpCiAgICB9CiAgICA4My4yNSUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDFweCwgLTFweCkKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApCiAgICB9Cn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS10by10b3AtcmlnaHQ6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdG8tdG9wLXJpZ2h0OmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdG8tdG9wLXJpZ2h0OmhvdmVyIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBlbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS10by10b3AtcmlnaHQ7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxCn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdG9wIHsKICAgIDE2LjY1JSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3KC0xMmRlZykKICAgIH0KICAgIDMzLjMlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXcoMTBkZWcpCiAgICB9CiAgICA0OS45NSUgewogICAgICAgIHRyYW5zZm9ybTogc2tldygtNmRlZykKICAgIH0KICAgIDY2LjYlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXcoNGRlZykKICAgIH0KICAgIDgzLjI1JSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3KC0yZGVnKQogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3KDApCiAgICB9Cn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS10b3AgewogICAgdHJhbnNmb3JtLW9yaWdpbjogMCAxMDAlCn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS10b3A6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdG9wOmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtdG9wOmhvdmVyIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBlbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS10b3A7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxCn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtYm90dG9tIHsKICAgIDE2LjY1JSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3KC0xMmRlZykKICAgIH0KICAgIDMzLjMlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXcoMTBkZWcpCiAgICB9CiAgICA0OS45NSUgewogICAgICAgIHRyYW5zZm9ybTogc2tldygtNmRlZykKICAgIH0KICAgIDY2LjYlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXcoNGRlZykKICAgIH0KICAgIDgzLjI1JSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3KC0yZGVnKQogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3KDApCiAgICB9Cn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS1ib3R0b20gewogICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAwCn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS1ib3R0b206YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtYm90dG9tOmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtYm90dG9tOmhvdmVyIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBlbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS1ib3R0b207CiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxCn0KCkBrZXlmcmFtZXMgZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtc2tldyB7CiAgICAxNi42NSUgewogICAgICAgIHRyYW5zZm9ybTogc2tldygtMTJkZWcpCiAgICB9CiAgICAzMy4zJSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3KDEwZGVnKQogICAgfQogICAgNDkuOTUlIHsKICAgICAgICB0cmFuc2Zvcm06IHNrZXcoLTZkZWcpCiAgICB9CiAgICA2Ni42JSB7CiAgICAgICAgdHJhbnNmb3JtOiBza2V3KDRkZWcpCiAgICB9CiAgICA4My4yNSUgewogICAgICAgIHRyYW5zZm9ybTogc2tldygtMmRlZykKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogc2tldygwKQogICAgfQp9CgouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtc2tldzphY3RpdmUsCi5lbGVtZW50b3ItYW5pbWF0aW9uLXdvYmJsZS1za2V3OmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtc2tldzpob3ZlciB7CiAgICBhbmltYXRpb24tbmFtZTogZWxlbWVudG9yLWFuaW1hdGlvbi13b2JibGUtc2tldzsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEKfQoKQGtleWZyYW1lcyBlbGVtZW50b3ItYW5pbWF0aW9uLWJ1enogewogICAgNTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KSByb3RhdGUoMmRlZykKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KSByb3RhdGUoLTJkZWcpCiAgICB9Cn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLWJ1eno6YWN0aXZlLAouZWxlbWVudG9yLWFuaW1hdGlvbi1idXp6OmZvY3VzLAouZWxlbWVudG9yLWFuaW1hdGlvbi1idXp6OmhvdmVyIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBlbGVtZW50b3ItYW5pbWF0aW9uLWJ1eno7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC4xNXM7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZQp9CgpAa2V5ZnJhbWVzIGVsZW1lbnRvci1hbmltYXRpb24tYnV6ei1vdXQgewogICAgMTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KSByb3RhdGUoMmRlZykKICAgIH0KICAgIDIwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpIHJvdGF0ZSgtMmRlZykKICAgIH0KICAgIDMwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDNweCkgcm90YXRlKDJkZWcpCiAgICB9CiAgICA0MCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KSByb3RhdGUoLTJkZWcpCiAgICB9CiAgICA1MCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpIHJvdGF0ZSgxZGVnKQogICAgfQogICAgNjAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTJweCkgcm90YXRlKC0xZGVnKQogICAgfQogICAgNzAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KSByb3RhdGUoMWRlZykKICAgIH0KICAgIDgwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0ycHgpIHJvdGF0ZSgtMWRlZykKICAgIH0KICAgIDkwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDFweCkgcm90YXRlKDApCiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTFweCkgcm90YXRlKDApCiAgICB9Cn0KCi5lbGVtZW50b3ItYW5pbWF0aW9uLWJ1enotb3V0OmFjdGl2ZSwKLmVsZW1lbnRvci1hbmltYXRpb24tYnV6ei1vdXQ6Zm9jdXMsCi5lbGVtZW50b3ItYW5pbWF0aW9uLWJ1enotb3V0OmhvdmVyIHsKICAgIGFuaW1hdGlvbi1uYW1lOiBlbGVtZW50b3ItYW5pbWF0aW9uLWJ1enotb3V0OwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuNzVzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwogICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMQp9"}},"time_used":813,"timings":{"blocked":716,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/font-awesome/css/all.min.css?ver=5.0.10","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.298Z","timestamp":1785145482298,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/font-awesome/css/all.min.css?ver=5.0.10 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 74967\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":74967,"size_decoded":75177,"mime_type":"text/css","magic":"ASCII text","md5":"aaedf08d2b897f7cee43ae772a64f226","sha1":"93589c92cd675ce8ac721383042c1f715d2f0ed1","sha256":"99ea8f5ec5c3ec12d3af950dc6d437b8691b402ead578d4362a993556dcdc970","sha512":"ae25132f1edac0c96ff733095559c30bb3f71bb48b0735b44de39742bf3fc3fd64233affb7f6378f0b059a0d6eda468e14d9abda52b3193db30e34b3c5d03b70","ssdeep":"768:0slcWL1WmZlMBOulII2tt0QNTbgMCo5PVCLD1LDfgjGGncs:0slcWL1W1BpaI2nzNPgMCo5PwVXeX5","tlshash":"ad73ffbcd1fe18954308e485274bb380b325b6af9c484c5df282be8ddbd06799186bdd","first_seen":"2024-10-11T08:24:47.432393Z","last_seen":"2026-07-27T10:21:19.579016Z","times_seen":23,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCi5mYSwKLmZhYiwKLmZhZCwKLmZhbCwKLmZhciwKLmZhcyB7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDsKICAgIHRleHQtcmVuZGVyaW5nOiBhdXRvOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmZhLWxnIHsKICAgIGZvbnQtc2l6ZTogMS4zMzMzM2VtOwogICAgbGluZS1oZWlnaHQ6IC43NWVtOwogICAgdmVydGljYWwtYWxpZ246IC0uMDY2N2VtCn0KCi5mYS14cyB7CiAgICBmb250LXNpemU6IC43NWVtCn0KCi5mYS1zbSB7CiAgICBmb250LXNpemU6IC44NzVlbQp9CgouZmEtMXggewogICAgZm9udC1zaXplOiAxZW0KfQoKLmZhLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5mYS0zeCB7CiAgICBmb250LXNpemU6IDNlbQp9CgouZmEtNHggewogICAgZm9udC1zaXplOiA0ZW0KfQoKLmZhLTV4IHsKICAgIGZvbnQtc2l6ZTogNWVtCn0KCi5mYS02eCB7CiAgICBmb250LXNpemU6IDZlbQp9CgouZmEtN3ggewogICAgZm9udC1zaXplOiA3ZW0KfQoKLmZhLTh4IHsKICAgIGZvbnQtc2l6ZTogOGVtCn0KCi5mYS05eCB7CiAgICBmb250LXNpemU6IDllbQp9CgouZmEtMTB4IHsKICAgIGZvbnQtc2l6ZTogMTBlbQp9CgouZmEtZncgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDEuMjVlbQp9CgouZmEtdWwgewogICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgbWFyZ2luLWxlZnQ6IDIuNWVtOwogICAgcGFkZGluZy1sZWZ0OiAwCn0KCi5mYS11bD5saSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmZhLWxpIHsKICAgIGxlZnQ6IC0yZW07CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMmVtOwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmZhLWJvcmRlciB7CiAgICBib3JkZXI6IC4wOGVtIHNvbGlkICNlZWU7CiAgICBib3JkZXItcmFkaXVzOiAuMWVtOwogICAgcGFkZGluZzogLjJlbSAuMjVlbSAuMTVlbQp9CgouZmEtcHVsbC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5mYS1wdWxsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodAp9CgouZmEuZmEtcHVsbC1sZWZ0LAouZmFiLmZhLXB1bGwtbGVmdCwKLmZhbC5mYS1wdWxsLWxlZnQsCi5mYXIuZmEtcHVsbC1sZWZ0LAouZmFzLmZhLXB1bGwtbGVmdCB7CiAgICBtYXJnaW4tcmlnaHQ6IC4zZW0KfQoKLmZhLmZhLXB1bGwtcmlnaHQsCi5mYWIuZmEtcHVsbC1yaWdodCwKLmZhbC5mYS1wdWxsLXJpZ2h0LAouZmFyLmZhLXB1bGwtcmlnaHQsCi5mYXMuZmEtcHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogLjNlbQp9CgouZmEtc3BpbiB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlCn0KCi5mYS1wdWxzZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKQogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMXR1cm4pOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKQogICAgfQp9CgpAa2V5ZnJhbWVzIGZhLXNwaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybikKICAgIH0KfQoKLmZhLXJvdGF0ZS05MCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MSkiOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykKfQoKLmZhLXJvdGF0ZS0xODAgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykKfQoKLmZhLXJvdGF0ZS0yNzAgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTMpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZykKfQoKLmZhLWZsaXAtaG9yaXpvbnRhbCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MCwgbWlycm9yPTEpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpCn0KCi5mYS1mbGlwLXZlcnRpY2FsIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZVkoLTEpCn0KCi5mYS1mbGlwLWJvdGgsCi5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbCwKLmZhLWZsaXAtdmVydGljYWwgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsIG1pcnJvcj0xKSIKfQoKLmZhLWZsaXAtYm90aCwKLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2FsIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgtMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC0xKQp9Cgo6cm9vdCAuZmEtZmxpcC1ib3RoLAo6cm9vdCAuZmEtZmxpcC1ob3Jpem9udGFsLAo6cm9vdCAuZmEtZmxpcC12ZXJ0aWNhbCwKOnJvb3QgLmZhLXJvdGF0ZS05MCwKOnJvb3QgLmZhLXJvdGF0ZS0xODAsCjpyb290IC5mYS1yb3RhdGUtMjcwIHsKICAgIC13ZWJraXQtZmlsdGVyOiBub25lOwogICAgZmlsdGVyOiBub25lCn0KCi5mYS1zdGFjayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBoZWlnaHQ6IDJlbTsKICAgIGxpbmUtaGVpZ2h0OiAyZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgd2lkdGg6IDIuNWVtCn0KCi5mYS1zdGFjay0xeCwKLmZhLXN0YWNrLTJ4IHsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJQp9CgouZmEtc3RhY2stMXggewogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmZhLXN0YWNrLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5mYS1pbnZlcnNlIHsKICAgIGNvbG9yOiAjZmZmCn0KCi5mYS01MDBweDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZlIgp9CgouZmEtYWNjZXNzaWJsZS1pY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjgiCn0KCi5mYS1hY2N1c29mdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzY5Igp9CgouZmEtYWNxdWlzaXRpb25zLWluY29ycG9yYXRlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmFmIgp9CgouZmEtYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0MSIKfQoKLmZhLWFkZHJlc3MtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI5Igp9CgouZmEtYWRkcmVzcy1jYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYmIiCn0KCi5mYS1hZGp1c3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MiIKfQoKLmZhLWFkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTcwIgp9CgouZmEtYWR2ZXJzYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YSIKfQoKLmZhLWFmZmlsaWF0ZXRoZW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNmIiCn0KCi5mYS1haXItZnJlc2hlbmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDAiCn0KCi5mYS1haXJibmI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNCIKfQoKLmZhLWFsZ29saWE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YyIKfQoKLmZhLWFsaWduLWNlbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM3Igp9CgouZmEtYWxpZ24tanVzdGlmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM5Igp9CgouZmEtYWxpZ24tbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM2Igp9CgouZmEtYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzOCIKfQoKLmZhLWFsaXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjQyIgp9CgouZmEtYWxsZXJnaWVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjEiCn0KCi5mYS1hbWF6b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MCIKfQoKLmZhLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYyIKfQoKLmZhLWFtYnVsYW5jZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGY5Igp9CgouZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMyIKfQoKLmZhLWFtaWxpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZkIgp9CgouZmEtYW5jaG9yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2QiCn0KCi5mYS1hbmRyb2lkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2IiCn0KCi5mYS1hbmdlbGxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwOSIKfQoKLmZhLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDMiCn0KCi5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTAwIgp9CgouZmEtYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDEiCn0KCi5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwMiIKfQoKLmZhLWFuZ2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNyIKfQoKLmZhLWFuZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNCIKfQoKLmZhLWFuZ2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDUiCn0KCi5mYS1hbmdsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA2Igp9CgouZmEtYW5ncnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1NiIKfQoKLmZhLWFuZ3J5Y3JlYXRpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2ZSIKfQoKLmZhLWFuZ3VsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMCIKfQoKLmZhLWFua2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0NCIKfQoKLmZhLWFwcC1zdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZmIgp9CgouZmEtYXBwLXN0b3JlLWlvczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzcwIgp9CgouZmEtYXBwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3MSIKfQoKLmZhLWFwcGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzkiCn0KCi5mYS1hcHBsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkMSIKfQoKLmZhLWFwcGxlLXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE1Igp9CgouZmEtYXJjaGl2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg3Igp9CgouZmEtYXJjaHdheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU3Igp9CgouZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTgiCn0KCi5mYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1OSIKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YSIKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YiIKfQoKLmZhLWFycm93LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYWIiCn0KCi5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE4Igp9CgouZmEtYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTkiCn0KCi5mYS1hcnJvdy1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhYSIKfQoKLmZhLWFycm93LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MyIKfQoKLmZhLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MCIKfQoKLmZhLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjEiCn0KCi5mYS1hcnJvdy11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDYyIgp9CgouZmEtYXJyb3dzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGIyIgp9CgouZmEtYXJyb3dzLWFsdC1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMzciCn0KCi5mYS1hcnJvd3MtYWx0LXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzOCIKfQoKLmZhLWFydHN0YXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3YSIKfQoKLmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEyIgp9CgouZmEtYXN0ZXJpc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2OSIKfQoKLmZhLWFzeW1tZXRyaWs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3MiIKfQoKLmZhLWF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmEiCn0KCi5mYS1hdGxhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU4Igp9CgouZmEtYXRsYXNzaWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3N2IiCn0KCi5mYS1hdG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDIiCn0KCi5mYS1hdWRpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzMiCn0KCi5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjllIgp9CgouZmEtYXV0b3ByZWZpeGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWMiCn0KCi5mYS1hdmlhbmV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzQiCn0KCi5mYS1hdmlhdG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMSIKfQoKLmZhLWF3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTkiCn0KCi5mYS1hd3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3NSIKfQoKLmZhLWJhYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3YyIKfQoKLmZhLWJhYnktY2FycmlhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3ZCIKfQoKLmZhLWJhY2tzcGFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVhIgp9CgouZmEtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0YSIKfQoKLmZhLWJhY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZTUiCn0KCi5mYS1iYWN0ZXJpYTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU5Igp9CgouZmEtYmFjdGVyaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNWEiCn0KCi5mYS1iYWhhaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY2Igp9CgouZmEtYmFsYW5jZS1zY2FsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRlIgp9CgouZmEtYmFsYW5jZS1zY2FsZS1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTUiCn0KCi5mYS1iYWxhbmNlLXNjYWxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTYiCn0KCi5mYS1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1ZSIKfQoKLmZhLWJhbmQtYWlkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjIiCn0KCi5mYS1iYW5kY2FtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ1Igp9CgouZmEtYmFyY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJhIgp9CgouZmEtYmFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM5Igp9CgouZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDMzIgp9CgouZmEtYmFza2V0YmFsbC1iYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MzQiCn0KCi5mYS1iYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2QiCn0KCi5mYS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDQiCn0KCi5mYS1iYXR0ZXJ5LWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0MCIKfQoKLmZhLWJhdHRlcnktaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQyIgp9CgouZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDMiCn0KCi5mYS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDEiCn0KCi5mYS1iYXR0bGUtbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzUiCn0KCi5mYS1iZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNiIKfQoKLmZhLWJlZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmYyIKfQoKLmZhLWJlaGFuY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiNCIKfQoKLmZhLWJlaGFuY2Utc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjUiCn0KCi5mYS1iZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjMiCn0KCi5mYS1iZWxsLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjYiCn0KCi5mYS1iZXppZXItY3VydmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1YiIKfQoKLmZhLWJpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NDciCn0KCi5mYS1iaWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDYiCn0KCi5mYS1iaWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0YSIKfQoKLmZhLWJpbW9iamVjdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzc4Igp9CgouZmEtYmlub2N1bGFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU1Igp9CgouZmEtYmlvaGF6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODAiCn0KCi5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmQiCn0KCi5mYS1iaXRidWNrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MSIKfQoKLmZhLWJpdGNvaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3OSIKfQoKLmZhLWJpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YSIKfQoKLmZhLWJsYWNrLXRpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdlIgp9CgouZmEtYmxhY2tiZXJyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdiIgp9CgouZmEtYmxlbmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE3Igp9CgouZmEtYmxlbmRlci1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmI2Igp9CgouZmEtYmxpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5ZCIKfQoKLmZhLWJsb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MSIKfQoKLmZhLWJsb2dnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YyIKfQoKLmZhLWJsb2dnZXItYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdkIgp9CgouZmEtYmx1ZXRvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTMiCn0KCi5mYS1ibHVldG9vdGgtYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjk0Igp9CgouZmEtYm9sZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMyIgp9CgouZmEtYm9sdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGU3Igp9CgouZmEtYm9tYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUyIgp9CgouZmEtYm9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWQ3Igp9CgouZmEtYm9uZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVjIgp9CgouZmEtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJkIgp9CgouZmEtYm9vay1kZWFkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YjciCn0KCi5mYS1ib29rLW1lZGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNiIKfQoKLmZhLWJvb2stb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE4Igp9CgouZmEtYm9vay1yZWFkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkYSIKfQoKLmZhLWJvb2ttYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmUiCn0KCi5mYS1ib290c3RyYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNiIKfQoKLmZhLWJvcmRlci1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0YyIKfQoKLmZhLWJvcmRlci1ub25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NTAiCn0KCi5mYS1ib3JkZXItc3R5bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg1MyIKfQoKLmZhLWJvd2xpbmctYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDM2Igp9CgouZmEtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjYiCn0KCi5mYS1ib3gtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDllIgp9CgouZmEtYm94LXRpc3N1ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDViIgp9CgouZmEtYm94ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2OCIKfQoKLmZhLWJyYWlsbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMSIKfQoKLmZhLWJyYWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGMiCn0KCi5mYS1icmVhZC1zbGljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2VjIgp9CgouZmEtYnJpZWZjYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjEiCn0KCi5mYS1icmllZmNhc2UtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDY5Igp9CgouZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTkiCn0KCi5mYS1icm9vbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFhIgp9CgouZmEtYnJ1c2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1ZCIKfQoKLmZhLWJ0YzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVhIgp9CgouZmEtYnVmZmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzciCn0KCi5mYS1idWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OCIKfQoKLmZhLWJ1aWxkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWQiCn0KCi5mYS1idWxsaG9ybjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGExIgp9CgouZmEtYnVsbHNleWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0MCIKfQoKLmZhLWJ1cm46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2YSIKfQoKLmZhLWJ1cm9tb2JlbGV4cGVydGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3ZiIKfQoKLmZhLWJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA3Igp9CgouZmEtYnVzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVlIgp9CgouZmEtYnVzaW5lc3MtdGltZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjRhIgp9CgouZmEtYnV5LW4tbGFyZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhhNiIKfQoKLmZhLWJ1eXNlbGxhZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwZCIKfQoKLmZhLWNhbGN1bGF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlYyIKfQoKLmZhLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzMiCn0KCi5mYS1jYWxlbmRhci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MyIKfQoKLmZhLWNhbGVuZGFyLWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzQiCn0KCi5mYS1jYWxlbmRhci1kYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MyIKfQoKLmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzIiCn0KCi5mYS1jYWxlbmRhci1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzEiCn0KCi5mYS1jYWxlbmRhci10aW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjczIgp9CgouZmEtY2FsZW5kYXItd2VlazpiZWZvcmUgewogICAgY29udGVudDogIlxmNzg0Igp9CgouZmEtY2FtZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMzAiCn0KCi5mYS1jYW1lcmEtcmV0cm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MyIKfQoKLmZhLWNhbXBncm91bmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZiYiIKfQoKLmZhLWNhbmFkaWFuLW1hcGxlLWxlYWY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NSIKfQoKLmZhLWNhbmR5LWNhbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NiIKfQoKLmZhLWNhbm5hYmlzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NWYiCn0KCi5mYS1jYXBzdWxlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZiIgp9CgouZmEtY2FyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjkiCn0KCi5mYS1jYXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGUiCn0KCi5mYS1jYXItYmF0dGVyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWRmIgp9CgouZmEtY2FyLWNyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTEiCn0KCi5mYS1jYXItc2lkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWU0Igp9CgouZmEtY2FyYXZhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmOGZmIgp9CgouZmEtY2FyZXQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ3Igp9CgouZmEtY2FyZXQtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ5Igp9CgouZmEtY2FyZXQtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkYSIKfQoKLmZhLWNhcmV0LXNxdWFyZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTAiCn0KCi5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkxIgp9CgouZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTIiCn0KCi5mYS1jYXJldC1zcXVhcmUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MSIKfQoKLmZhLWNhcmV0LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDgiCn0KCi5mYS1jYXJyb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NyIKfQoKLmZhLWNhcnQtYXJyb3ctZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjE4Igp9CgouZmEtY2FydC1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTciCn0KCi5mYS1jYXNoLXJlZ2lzdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODgiCn0KCi5mYS1jYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZiZSIKfQoKLmZhLWNjLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZCIKfQoKLmZhLWNjLWFtZXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMyIKfQoKLmZhLWNjLWFwcGxlLXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE2Igp9CgouZmEtY2MtZGluZXJzLWNsdWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YyIKfQoKLmZhLWNjLWRpc2NvdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjIiCn0KCi5mYS1jYy1qY2I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YiIKfQoKLmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMSIKfQoKLmZhLWNjLXBheXBhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWY0Igp9CgouZmEtY2Mtc3RyaXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjUiCn0KCi5mYS1jYy12aXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjAiCn0KCi5mYS1jZW50ZXJjb2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODAiCn0KCi5mYS1jZW50b3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4OSIKfQoKLmZhLWNlcnRpZmljYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTMiCn0KCi5mYS1jaGFpcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmMwIgp9CgouZmEtY2hhbGtib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFiIgp9CgouZmEtY2hhbGtib2FyZC10ZWFjaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWMiCn0KCi5mYS1jaGFyZ2luZy1zdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTciCn0KCi5mYS1jaGFydC1hcmVhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmUiCn0KCi5mYS1jaGFydC1iYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MCIKfQoKLmZhLWNoYXJ0LWxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwMSIKfQoKLmZhLWNoYXJ0LXBpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAwIgp9CgouZmEtY2hlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwYyIKfQoKLmZhLWNoZWNrLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU4Igp9CgouZmEtY2hlY2stZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjAiCn0KCi5mYS1jaGVjay1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YSIKfQoKLmZhLWNoZWVzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2VmIgp9CgouZmEtY2hlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzOSIKfQoKLmZhLWNoZXNzLWJpc2hvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDNhIgp9CgouZmEtY2hlc3MtYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzYyIKfQoKLmZhLWNoZXNzLWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzZiIKfQoKLmZhLWNoZXNzLWtuaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQxIgp9CgouZmEtY2hlc3MtcGF3bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQzIgp9CgouZmEtY2hlc3MtcXVlZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NSIKfQoKLmZhLWNoZXNzLXJvb2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NyIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYSIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzNyIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzgiCn0KCi5mYS1jaGV2cm9uLWNpcmNsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM5Igp9CgouZmEtY2hldnJvbi1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzgiCn0KCi5mYS1jaGV2cm9uLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MyIKfQoKLmZhLWNoZXZyb24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1NCIKfQoKLmZhLWNoZXZyb24tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3NyIKfQoKLmZhLWNoaWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWUiCn0KCi5mYS1jaHJvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2OCIKfQoKLmZhLWNocm9tZWNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzOCIKfQoKLmZhLWNodXJjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFkIgp9CgouZmEtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS1jaXJjbGUtbm90Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZSIKfQoKLmZhLWNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0ZiIKfQoKLmZhLWNsaW5pYy1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjIiCn0KCi5mYS1jbGlwYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMyOCIKfQoKLmZhLWNsaXBib2FyZC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZjIgp9CgouZmEtY2xpcGJvYXJkLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2ZCIKfQoKLmZhLWNsb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTciCn0KCi5mYS1jbG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRkIgp9CgouZmEtY2xvc2VkLWNhcHRpb25pbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwYSIKfQoKLmZhLWNsb3VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzIiCn0KCi5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MSIKfQoKLmZhLWNsb3VkLW1lYXRiYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3M2IiCn0KCi5mYS1jbG91ZC1tb29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YzMiCn0KCi5mYS1jbG91ZC1tb29uLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczYyIKfQoKLmZhLWNsb3VkLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczZCIKfQoKLmZhLWNsb3VkLXNob3dlcnMtaGVhdnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0MCIKfQoKLmZhLWNsb3VkLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmM0Igp9CgouZmEtY2xvdWQtc3VuLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0MyIKfQoKLmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MiIKfQoKLmZhLWNsb3VkZmxhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZCIKfQoKLmZhLWNsb3Vkc2NhbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MyIKfQoKLmZhLWNsb3Vkc21pdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4NCIKfQoKLmZhLWNsb3VkdmVyc2lmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzg1Igp9CgouZmEtY29ja3RhaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MSIKfQoKLmZhLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMSIKfQoKLmZhLWNvZGUtYnJhbmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjYiCn0KCi5mYS1jb2RlcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2IiCn0KCi5mYS1jb2RpZXBpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg0Igp9CgouZmEtY29mZmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjQiCn0KCi5mYS1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMyIKfQoKLmZhLWNvZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4NSIKfQoKLmZhLWNvaW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWUiCn0KCi5mYS1jb2x1bW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGIiCn0KCi5mYS1jb21tZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzUiCn0KCi5mYS1jb21tZW50LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdhIgp9CgouZmEtY29tbWVudC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1MSIKfQoKLmZhLWNvbW1lbnQtZG90czpiZWZvcmUgewogICAgY29udGVudDogIlxmNGFkIgp9CgouZmEtY29tbWVudC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjUiCn0KCi5mYS1jb21tZW50LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjMiCn0KCi5mYS1jb21tZW50czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg2Igp9CgouZmEtY29tbWVudHMtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NTMiCn0KCi5mYS1jb21wYWN0LWRpc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxZiIKfQoKLmZhLWNvbXBhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0ZSIKfQoKLmZhLWNvbXByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjYiCn0KCi5mYS1jb21wcmVzcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMiIKfQoKLmZhLWNvbXByZXNzLWFycm93cy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4YyIKfQoKLmZhLWNvbmNpZXJnZS1iZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjIiCn0KCi5mYS1jb25mbHVlbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OGQiCn0KCi5mYS1jb25uZWN0ZGV2ZWxvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBlIgp9CgouZmEtY29udGFvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmQiCn0KCi5mYS1jb29raWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MyIKfQoKLmZhLWNvb2tpZS1iaXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjQiCn0KCi5mYS1jb3B5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzUiCn0KCi5mYS1jb3B5cmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOSIKfQoKLmZhLWNvdHRvbi1idXJlYXU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg5ZSIKfQoKLmZhLWNvdWNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjgiCn0KCi5mYS1jcGFuZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4OCIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1ZSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNyIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOCIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtZXU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtanA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYiIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYyIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWQiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXJlbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWUiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWYiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjAiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMiIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtemVybzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGYzIgp9CgouZmEtY3JlZGl0LWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5ZCIKfQoKLmZhLWNyaXRpY2FsLXJvbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjOSIKfQoKLmZhLWNyb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNSIKfQoKLmZhLWNyb3AtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjUiCn0KCi5mYS1jcm9zczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU0Igp9CgouZmEtY3Jvc3NoYWlyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDViIgp9CgouZmEtY3JvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIwIgp9CgouZmEtY3Jvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyMSIKfQoKLmZhLWNydXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2Y3Igp9CgouZmEtY3NzMzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTNjIgp9CgouZmEtY3NzMy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4YiIKfQoKLmZhLWN1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiMiIKfQoKLmZhLWN1YmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjMiCn0KCi5mYS1jdXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNCIKfQoKLmZhLWN1dHRsZWZpc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4YyIKfQoKLmZhLWQtYW5kLWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4ZCIKfQoKLmZhLWQtYW5kLWQtYmV5b25kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2Y2EiCn0KCi5mYS1kYWlseW1vdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDUyIgp9CgouZmEtZGFzaGN1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxMCIKfQoKLmZhLWRhdGFiYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzAiCn0KCi5mYS1kZWFmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTQiCn0KCi5mYS1kZWV6ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3NyIKfQoKLmZhLWRlbGljaW91czpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE1Igp9CgouZmEtZGVtb2NyYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0NyIKfQoKLmZhLWRlcGxveWRvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhlIgp9CgouZmEtZGVza3BybzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhmIgp9CgouZmEtZGVza3RvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA4Igp9CgouZmEtZGV2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2Y2MiCn0KCi5mYS1kZXZpYW50YXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmQiCn0KCi5mYS1kaGFybWFjaGFrcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1NSIKfQoKLmZhLWRobDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkwIgp9CgouZmEtZGlhZ25vc2VzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzAiCn0KCi5mYS1kaWFzcG9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkxIgp9CgouZmEtZGljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIyIgp9CgouZmEtZGljZS1kMjA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjZiIKfQoKLmZhLWRpY2UtZDY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkMSIKfQoKLmZhLWRpY2UtZml2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIzIgp9CgouZmEtZGljZS1mb3VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjQiCn0KCi5mYS1kaWNlLW9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTI1Igp9CgouZmEtZGljZS1zaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNiIKfQoKLmZhLWRpY2UtdGhyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNyIKfQoKLmZhLWRpY2UtdHdvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjgiCn0KCi5mYS1kaWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTYiCn0KCi5mYS1kaWdpdGFsLW9jZWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTEiCn0KCi5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2NiIKfQoKLmZhLWRpcmVjdGlvbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVlYiIKfQoKLmZhLWRpc2NvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5MiIKfQoKLmZhLWRpc2NvdXJzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzkzIgp9CgouZmEtZGlzZWFzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2ZhIgp9CgouZmEtZGl2aWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjkiCn0KCi5mYS1kaXp6eTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTY3Igp9CgouZmEtZG5hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzEiCn0KCi5mYS1kb2NodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5NCIKfQoKLmZhLWRvY2tlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzk1Igp9CgouZmEtZG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZDMiCn0KCi5mYS1kb2xsYXItc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU1Igp9CgouZmEtZG9sbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3MiIKfQoKLmZhLWRvbGx5LWZsYXRiZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3NCIKfQoKLmZhLWRvbmF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGI5Igp9CgouZmEtZG9vci1jbG9zZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyYSIKfQoKLmZhLWRvb3Itb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJiIgp9CgouZmEtZG90LWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkyIgp9CgouZmEtZG92ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGJhIgp9CgouZmEtZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxOSIKfQoKLmZhLWRyYWZ0MmRpZ2l0YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5NiIKfQoKLmZhLWRyYWZ0aW5nLWNvbXBhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2OCIKfQoKLmZhLWRyYWdvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ1Igp9CgouZmEtZHJhdy1wb2x5Z29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZWUiCn0KCi5mYS1kcmliYmJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTdkIgp9CgouZmEtZHJpYmJibGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTciCn0KCi5mYS1kcm9wYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNmIiCn0KCi5mYS1kcnVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjkiCn0KCi5mYS1kcnVtLXN0ZWVscGFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmEiCn0KCi5mYS1kcnVtc3RpY2stYml0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ3Igp9CgouZmEtZHJ1cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTkiCn0KCi5mYS1kdW1iYmVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDRiIgp9CgouZmEtZHVtcHN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5MyIKfQoKLmZhLWR1bXBzdGVyLWZpcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5NCIKfQoKLmZhLWR1bmdlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkOSIKfQoKLmZhLWR5YWxvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzk5Igp9CgouZmEtZWFybHliaXJkczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzlhIgp9CgouZmEtZWJheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGY0Igp9CgouZmEtZWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgyIgp9CgouZmEtZWRnZS1sZWdhY3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3OCIKfQoKLmZhLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0NCIKfQoKLmZhLWVnZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2ZiIgp9CgouZmEtZWplY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MiIKfQoKLmZhLWVsZW1lbnRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDMwIgp9CgouZmEtZWxsaXBzaXMtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQxIgp9CgouZmEtZWxsaXBzaXMtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQyIgp9CgouZmEtZWxsbzpiZWZvcmUgewogICAgY29udGVudDogIlxmNWYxIgp9CgouZmEtZW1iZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMyIKfQoKLmZhLWVtcGlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQxIgp9CgouZmEtZW52ZWxvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMCIKfQoKLmZhLWVudmVsb3BlLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiNiIKfQoKLmZhLWVudmVsb3BlLW9wZW4tdGV4dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU4Igp9CgouZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTkiCn0KCi5mYS1lbnZpcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5OSIKfQoKLmZhLWVxdWFsczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJjIgp9CgouZmEtZXJhc2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmQiCn0KCi5mYS1lcmxhbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZCIKfQoKLmZhLWV0aGVyZXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmUiCn0KCi5mYS1ldGhlcm5ldDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzk2Igp9CgouZmEtZXRzeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ3Igp9CgouZmEtZXVyby1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTMiCn0KCi5mYS1ldmVybm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODM5Igp9CgouZmEtZXhjaGFuZ2UtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjIiCn0KCi5mYS1leGNsYW1hdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTJhIgp9CgouZmEtZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmEiCn0KCi5mYS1leGNsYW1hdGlvbi10cmlhbmdsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDcxIgp9CgouZmEtZXhwYW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjUiCn0KCi5mYS1leHBhbmQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjQiCn0KCi5mYS1leHBhbmQtYXJyb3dzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzFlIgp9CgouZmEtZXhwZWRpdGVkc3NsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2UiCn0KCi5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVkIgp9CgouZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjAiCn0KCi5mYS1leWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2ZSIKfQoKLmZhLWV5ZS1kcm9wcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmIiCn0KCi5mYS1leWUtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MCIKfQoKLmZhLWZhY2Vib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWEiCn0KCi5mYS1mYWNlYm9vay1mOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWUiCn0KCi5mYS1mYWNlYm9vay1tZXNzZW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZiIKfQoKLmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDgyIgp9CgouZmEtZmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NjMiCn0KCi5mYS1mYW50YXN5LWZsaWdodC1nYW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmNmRjIgp9CgouZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQ5Igp9CgouZmEtZmFzdC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTAiCn0KCi5mYS1mYXVjZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNSIKfQoKLmZhLWZheDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFjIgp9CgouZmEtZmVhdGhlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJkIgp9CgouZmEtZmVhdGhlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YiIKfQoKLmZhLWZlZGV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTciCn0KCi5mYS1mZWRvcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5OCIKfQoKLmZhLWZlbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgyIgp9CgouZmEtZmlnaHRlci1qZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmYiIKfQoKLmZhLWZpZ21hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTkiCn0KCi5mYS1maWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWIiCn0KCi5mYS1maWxlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVjIgp9CgouZmEtZmlsZS1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzYiCn0KCi5mYS1maWxlLWF1ZGlvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzciCn0KCi5mYS1maWxlLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOSIKfQoKLmZhLWZpbGUtY29udHJhY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YyIKfQoKLmZhLWZpbGUtY3N2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZGQiCn0KCi5mYS1maWxlLWRvd25sb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmQiCn0KCi5mYS1maWxlLWV4Y2VsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzMiCn0KCi5mYS1maWxlLWV4cG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTZlIgp9CgouZmEtZmlsZS1pbWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM1Igp9CgouZmEtZmlsZS1pbXBvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2ZiIKfQoKLmZhLWZpbGUtaW52b2ljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcwIgp9CgouZmEtZmlsZS1pbnZvaWNlLWRvbGxhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcxIgp9CgouZmEtZmlsZS1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzciCn0KCi5mYS1maWxlLW1lZGljYWwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzgiCn0KCi5mYS1maWxlLXBkZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWMxIgp9CgouZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzQiCn0KCi5mYS1maWxlLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcyIgp9CgouZmEtZmlsZS1zaWduYXR1cmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3MyIKfQoKLmZhLWZpbGUtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzQiCn0KCi5mYS1maWxlLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzgiCn0KCi5mYS1maWxlLXdvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjMiIKfQoKLmZhLWZpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3NSIKfQoKLmZhLWZpbGwtZHJpcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc2Igp9CgouZmEtZmlsbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA4Igp9CgouZmEtZmlsdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjAiCn0KCi5mYS1maW5nZXJwcmludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc3Igp9CgouZmEtZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZkIgp9CgouZmEtZmlyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNCIKfQoKLmZhLWZpcmUtZXh0aW5ndWlzaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzQiCn0KCi5mYS1maXJlZm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjkiCn0KCi5mYS1maXJlZm94LWJyb3dzZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNyIKfQoKLmZhLWZpcnN0LWFpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDc5Igp9CgouZmEtZmlyc3Qtb3JkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMCIKfQoKLmZhLWZpcnN0LW9yZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBhIgp9CgouZmEtZmlyc3RkcmFmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ExIgp9CgouZmEtZmlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc4Igp9CgouZmEtZmlzdC1yYWlzZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkZSIKfQoKLmZhLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyNCIKfQoKLmZhLWZsYWctY2hlY2tlcmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWUiCn0KCi5mYS1mbGFnLXVzYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzRkIgp9CgouZmEtZmxhc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMyIKfQoKLmZhLWZsaWNrcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZlIgp9CgouZmEtZmxpcGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGQiCn0KCi5mYS1mbHVzaGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzkiCn0KCi5mYS1mbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNyIKfQoKLmZhLWZvbGRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdiIgp9CgouZmEtZm9sZGVyLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NWQiCn0KCi5mYS1mb2xkZXItb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdjIgp9CgouZmEtZm9sZGVyLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1ZSIKfQoKLmZhLWZvbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzMSIKfQoKLmZhLWZvbnQtYXdlc29tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI0Igp9CgouZmEtZm9udC1hd2Vzb21lLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVjIgp9CgouZmEtZm9udC1hd2Vzb21lLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNSIKfQoKLmZhLWZvbnQtYXdlc29tZS1sb2dvLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNiIKfQoKLmZhLWZvbnRpY29uczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgwIgp9CgouZmEtZm9udGljb25zLWZpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTIiCn0KCi5mYS1mb290YmFsbC1iYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGUiCn0KCi5mYS1mb3J0LWF3ZXNvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4NiIKfQoKLmZhLWZvcnQtYXdlc29tZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhMyIKfQoKLmZhLWZvcnVtYmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTEiCn0KCi5mYS1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGUiCn0KCi5mYS1mb3Vyc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODAiCn0KCi5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM1Igp9CgouZmEtZnJlZWJzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E0Igp9CgouZmEtZnJvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJlIgp9CgouZmEtZnJvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExOSIKfQoKLmZhLWZyb3duLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YSIKfQoKLmZhLWZ1bGNydW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwYiIKfQoKLmZhLWZ1bm5lbC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2MiIKfQoKLmZhLWZ1dGJvbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEtZ2FsYWN0aWMtcmVwdWJsaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwYyIKfQoKLmZhLWdhbGFjdGljLXNlbmF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBkIgp9CgouZmEtZ2FtZXBhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFiIgp9CgouZmEtZ2FzLXB1bXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyZiIKfQoKLmZhLWdhdmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTMiCn0KCi5mYS1nZW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNSIKfQoKLmZhLWdlbmRlcmxlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyZCIKfQoKLmZhLWdldC1wb2NrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NSIKfQoKLmZhLWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjAiCn0KCi5mYS1nZy1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MSIKfQoKLmZhLWdob3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZTIiCn0KCi5mYS1naWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmIiCn0KCi5mYS1naWZ0czpiZWZvcmUgewogICAgY29udGVudDogIlxmNzljIgp9CgouZmEtZ2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDMiCn0KCi5mYS1naXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDEiCn0KCi5mYS1naXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDIiCn0KCi5mYS1naXRodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YiIKfQoKLmZhLWdpdGh1Yi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExMyIKfQoKLmZhLWdpdGh1Yi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5MiIKfQoKLmZhLWdpdGtyYWtlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E2Igp9CgouZmEtZ2l0bGFiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTYiCn0KCi5mYS1naXR0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNiIKfQoKLmZhLWdsYXNzLWNoZWVyczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzlmIgp9CgouZmEtZ2xhc3MtbWFydGluaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDAwIgp9CgouZmEtZ2xhc3MtbWFydGluaS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YiIKfQoKLmZhLWdsYXNzLXdoaXNrZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhMCIKfQoKLmZhLWdsYXNzZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzMCIKfQoKLmZhLWdsaWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTUiCn0KCi5mYS1nbGlkZS1nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTYiCn0KCi5mYS1nbG9iZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFjIgp9CgouZmEtZ2xvYmUtYWZyaWNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2MiCn0KCi5mYS1nbG9iZS1hbWVyaWNhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdkIgp9CgouZmEtZ2xvYmUtYXNpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdlIgp9CgouZmEtZ2xvYmUtZXVyb3BlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTIiCn0KCi5mYS1nb2ZvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNyIKfQoKLmZhLWdvbGYtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDUwIgp9CgouZmEtZ29vZHJlYWRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTgiCn0KCi5mYS1nb29kcmVhZHMtZzpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E5Igp9CgouZmEtZ29vZ2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTAiCn0KCi5mYS1nb29nbGUtZHJpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhYSIKfQoKLmZhLWdvb2dsZS1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3OSIKfQoKLmZhLWdvb2dsZS1wbGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYWIiCn0KCi5mYS1nb29nbGUtcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMmIzIgp9CgouZmEtZ29vZ2xlLXBsdXMtZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ1Igp9CgouZmEtZ29vZ2xlLXBsdXMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDQiCn0KCi5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWUiCn0KCi5mYS1nb3B1cmFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NjQiCn0KCi5mYS1ncmFkdWF0aW9uLWNhcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTlkIgp9CgouZmEtZ3JhdGlwYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NCIKfQoKLmZhLWdyYXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkNiIKfQoKLmZhLWdyZWF0ZXItdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTMxIgp9CgouZmEtZ3JlYXRlci10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzIiCn0KCi5mYS1ncmltYWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2YiCn0KCi5mYS1ncmluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODAiCn0KCi5mYS1ncmluLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTgxIgp9CgouZmEtZ3Jpbi1iZWFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODIiCn0KCi5mYS1ncmluLWJlYW0tc3dlYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4MyIKfQoKLmZhLWdyaW4taGVhcnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODQiCn0KCi5mYS1ncmluLXNxdWludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTg1Igp9CgouZmEtZ3Jpbi1zcXVpbnQtdGVhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NiIKfQoKLmZhLWdyaW4tc3RhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NyIKfQoKLmZhLWdyaW4tdGVhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4OCIKfQoKLmZhLWdyaW4tdG9uZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODkiCn0KCi5mYS1ncmluLXRvbmd1ZS1zcXVpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YSIKfQoKLmZhLWdyaW4tdG9uZ3VlLXdpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YiIKfQoKLmZhLWdyaW4td2luazpiZWZvcmUgewogICAgY29udGVudDogIlxmNThjIgp9CgouZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGQiCn0KCi5mYS1ncmlwLWxpbmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTQiCn0KCi5mYS1ncmlwLWxpbmVzLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTUiCn0KCi5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGUiCn0KCi5mYS1ncmlwZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FjIgp9CgouZmEtZ3J1bnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZCIKfQoKLmZhLWd1aWxkZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZSIKfQoKLmZhLWd1aXRhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2E2Igp9CgouZmEtZ3VscDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FlIgp9CgouZmEtaC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZCIKfQoKLmZhLWhhY2tlci1uZXdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS1oYWNrZXItbmV3cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZiIKfQoKLmZhLWhhY2tlcnJhbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVmNyIKfQoKLmZhLWhhbWJ1cmdlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmODA1Igp9CgouZmEtaGFtbWVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZTMiCn0KCi5mYS1oYW1zYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY1Igp9CgouZmEtaGFuZC1ob2xkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YmQiCn0KCi5mYS1oYW5kLWhvbGRpbmctaGVhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRiZSIKfQoKLmZhLWhhbmQtaG9sZGluZy1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNWMiCn0KCi5mYS1oYW5kLWhvbGRpbmctdXNkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YzAiCn0KCi5mYS1oYW5kLWhvbGRpbmctd2F0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMSIKfQoKLmZhLWhhbmQtbGl6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTgiCn0KCi5mYS1oYW5kLW1pZGRsZS1maW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwNiIKfQoKLmZhLWhhbmQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1NiIKfQoKLmZhLWhhbmQtcGVhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YiIKfQoKLmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE3Igp9CgouZmEtaGFuZC1wb2ludC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTUiCn0KCi5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTQiCn0KCi5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTYiCn0KCi5mYS1oYW5kLXBvaW50ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YSIKfQoKLmZhLWhhbmQtcm9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU1Igp9CgouZmEtaGFuZC1zY2lzc29yczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU3Igp9CgouZmEtaGFuZC1zcGFya2xlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDVkIgp9CgouZmEtaGFuZC1zcG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU5Igp9CgouZmEtaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMiIKfQoKLmZhLWhhbmRzLWhlbHBpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjNCIKfQoKLmZhLWhhbmRzLXdhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1ZSIKfQoKLmZhLWhhbmRzaGFrZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI1Igp9CgouZmEtaGFuZHNoYWtlLWFsdC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDVmIgp9CgouZmEtaGFuZHNoYWtlLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjAiCn0KCi5mYS1oYW51a2lhaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU2Igp9CgouZmEtaGFyZC1oYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwNyIKfQoKLmZhLWhhc2h0YWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MiIKfQoKLmZhLWhhdC1jb3dib3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhjMCIKfQoKLmZhLWhhdC1jb3dib3ktc2lkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGMxIgp9CgouZmEtaGF0LXdpemFyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU4Igp9CgouZmEtaGRkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTAiCn0KCi5mYS1oZWFkLXNpZGUtY291Z2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MSIKfQoKLmZhLWhlYWQtc2lkZS1jb3VnaC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDYyIgp9CgouZmEtaGVhZC1zaWRlLW1hc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MyIKfQoKLmZhLWhlYWQtc2lkZS12aXJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY0Igp9CgouZmEtaGVhZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWRjIgp9CgouZmEtaGVhZHBob25lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI1Igp9CgouZmEtaGVhZHBob25lcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4ZiIKfQoKLmZhLWhlYWRzZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MCIKfQoKLmZhLWhlYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDQiCn0KCi5mYS1oZWFydC1icm9rZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhOSIKfQoKLmZhLWhlYXJ0YmVhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjFlIgp9CgouZmEtaGVsaWNvcHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTMzIgp9CgouZmEtaGlnaGxpZ2h0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MSIKfQoKLmZhLWhpa2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmVjIgp9CgouZmEtaGlwcG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZlZCIKfQoKLmZhLWhpcHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1MiIKfQoKLmZhLWhpcmUtYS1oZWxwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMCIKfQoKLmZhLWhpc3Rvcnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkYSIKfQoKLmZhLWhpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZiIKfQoKLmZhLWhvY2tleS1wdWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTMiCn0KCi5mYS1ob2xseS1iZXJyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FhIgp9CgouZmEtaG9tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE1Igp9CgouZmEtaG9vbGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNyIKfQoKLmZhLWhvcm5iaWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTIiCn0KCi5mYS1ob3JzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmYwIgp9CgouZmEtaG9yc2UtaGVhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FiIgp9CgouZmEtaG9zcGl0YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmOCIKfQoKLmZhLWhvc3BpdGFsLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDdkIgp9CgouZmEtaG9zcGl0YWwtc3ltYm9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0N2UiCn0KCi5mYS1ob3NwaXRhbC11c2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MGQiCn0KCi5mYS1ob3QtdHViOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTMiCn0KCi5mYS1ob3Rkb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwZiIKfQoKLmZhLWhvdGVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTQiCn0KCi5mYS1ob3RqYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMSIKfQoKLmZhLWhvdXJnbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU0Igp9CgouZmEtaG91cmdsYXNzLWVuZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUzIgp9CgouZmEtaG91cmdsYXNzLWhhbGY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1MiIKfQoKLmZhLWhvdXJnbGFzcy1zdGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUxIgp9CgouZmEtaG91c2UtZGFtYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZjEiCn0KCi5mYS1ob3VzZS11c2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjUiCn0KCi5mYS1ob3V6ejpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdjIgp9CgouZmEtaHJ5dm5pYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmYyIgp9CgouZmEtaHRtbDU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYiIKfQoKLmZhLWh1YnNwb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMiIKfQoKLmZhLWktY3Vyc29yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDYiCn0KCi5mYS1pY2UtY3JlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxMCIKfQoKLmZhLWljaWNsZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhZCIKfQoKLmZhLWljb25zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NmQiCn0KCi5mYS1pZC1iYWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMxIgp9CgouZmEtaWQtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMyIgp9CgouZmEtaWQtY2FyZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3ZiIKfQoKLmZhLWlkZWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTMiCn0KCi5mYS1pZ2xvbzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FlIgp9CgouZmEtaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZSIKfQoKLmZhLWltYWdlczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzAyIgp9CgouZmEtaW1kYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ4Igp9CgouZmEtaW5ib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxYyIKfQoKLmZhLWluZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNjIgp9CgouZmEtaW5kdXN0cnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NSIKfQoKLmZhLWluZmluaXR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzQiCn0KCi5mYS1pbmZvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjkiCn0KCi5mYS1pbmZvLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDVhIgp9CgouZmEtaW5ub3NvZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MCIKfQoKLmZhLWluc3RhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZkIgp9CgouZmEtaW5zdGFncmFtLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU1Igp9CgouZmEtaW5zdGFsb2Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MSIKfQoKLmZhLWludGVyY29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YWYiCn0KCi5mYS1pbnRlcm5ldC1leHBsb3JlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZiIgp9CgouZmEtaW52aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiMCIKfQoKLmZhLWlveGhvc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwOCIKfQoKLmZhLWl0YWxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMzIgp9CgouZmEtaXRjaC1pbzpiZWZvcmUgewogICAgY29udGVudDogIlxmODNhIgp9CgouZmEtaXR1bmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjQiCn0KCi5mYS1pdHVuZXMtbm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I1Igp9CgouZmEtamF2YTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGU0Igp9CgouZmEtamVkaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY5Igp9CgouZmEtamVkaS1vcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBlIgp9CgouZmEtamVua2luczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I2Igp9CgouZmEtamlyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2IxIgp9CgouZmEtam9nZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiNyIKfQoKLmZhLWpvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTUiCn0KCi5mYS1qb29tbGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhYSIKfQoKLmZhLWpvdXJuYWwtd2hpbGxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmEiCn0KCi5mYS1qczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I4Igp9CgouZmEtanMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjkiCn0KCi5mYS1qc2ZpZGRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNjIgp9CgouZmEta2FhYmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2YiIKfQoKLmZhLWthZ2dsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZhIgp9CgouZmEta2V5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODQiCn0KCi5mYS1rZXliYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjUiCn0KCi5mYS1rZXlib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFjIgp9CgouZmEta2V5Y2RuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmEiCn0KCi5mYS1raGFuZGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2ZCIKfQoKLmZhLWtpY2tzdGFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmIiCn0KCi5mYS1raWNrc3RhcnRlci1rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmMiCn0KCi5mYS1raXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTYiCn0KCi5mYS1raXNzLWJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5NyIKfQoKLmZhLWtpc3Mtd2luay1oZWFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk4Igp9CgouZmEta2l3aS1iaXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzUiCn0KCi5mYS1rb3J2dWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZiIKfQoKLmZhLWxhbmRtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmYiCn0KCi5mYS1sYW5ndWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFiIgp9CgouZmEtbGFwdG9wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDkiCn0KCi5mYS1sYXB0b3AtY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZjIgp9CgouZmEtbGFwdG9wLWhvdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjYiCn0KCi5mYS1sYXB0b3AtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmODEyIgp9CgouZmEtbGFyYXZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JkIgp9CgouZmEtbGFzdGZtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDIiCn0KCi5mYS1sYXN0Zm0tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDMiCn0KCi5mYS1sYXVnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk5Igp9CgouZmEtbGF1Z2gtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlhIgp9CgouZmEtbGF1Z2gtc3F1aW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWIiCn0KCi5mYS1sYXVnaC13aW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWMiCn0KCi5mYS1sYXllci1ncm91cDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZkIgp9CgouZmEtbGVhZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZjIgp9CgouZmEtbGVhbnB1YjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEyIgp9CgouZmEtbGVtb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5NCIKfQoKLmZhLWxlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxZCIKfQoKLmZhLWxlc3MtdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM2Igp9CgouZmEtbGVzcy10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzciCn0KCi5mYS1sZXZlbC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JlIgp9CgouZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmYiCn0KCi5mYS1saWZlLXJpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZCIKfQoKLmZhLWxpZ2h0YnVsYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGViIgp9CgouZmEtbGluZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2MwIgp9CgouZmEtbGluazpiZWZvcmUgewogICAgY29udGVudDogIlxmMGMxIgp9CgouZmEtbGlua2VkaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4YyIKfQoKLmZhLWxpbmtlZGluLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTEiCn0KCi5mYS1saW5vZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiOCIKfQoKLmZhLWxpbnV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2MiCn0KCi5mYS1saXJhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NSIKfQoKLmZhLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzYSIKfQoKLmZhLWxpc3QtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjIiCn0KCi5mYS1saXN0LW9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2IiCn0KCi5mYS1saXN0LXVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2EiCn0KCi5mYS1sb2NhdGlvbi1hcnJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI0Igp9CgouZmEtbG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDIzIgp9CgouZmEtbG9jay1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzEiCn0KCi5mYS1sb25nLWFycm93LWFsdC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDkiCn0KCi5mYS1sb25nLWFycm93LWFsdC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMGEiCn0KCi5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzBiIgp9CgouZmEtbG9uZy1hcnJvdy1hbHQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYyIKfQoKLmZhLWxvdy12aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOCIKfQoKLmZhLWx1Z2dhZ2UtY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlkIgp9CgouZmEtbHVuZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYwNCIKfQoKLmZhLWx1bmdzLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjciCn0KCi5mYS1seWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzMiCn0KCi5mYS1tYWdlbnRvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzQiCn0KCi5mYS1tYWdpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQwIgp9CgouZmEtbWFnbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzYiCn0KCi5mYS1tYWlsLWJ1bGs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NCIKfQoKLmZhLW1haWxjaGltcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTllIgp9CgouZmEtbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgzIgp9CgouZmEtbWFuZGFsb3JpYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwZiIKfQoKLmZhLW1hcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc5Igp9CgouZmEtbWFwLW1hcmtlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlmIgp9CgouZmEtbWFwLW1hcmtlZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhMCIKfQoKLmZhLW1hcC1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MSIKfQoKLmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzUiCn0KCi5mYS1tYXAtcGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzYiCn0KCi5mYS1tYXAtc2lnbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NyIKfQoKLmZhLW1hcmtkb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MGYiCn0KCi5mYS1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhMSIKfQoKLmZhLW1hcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMiIKfQoKLmZhLW1hcnMtZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMjciCn0KCi5mYS1tYXJzLXN0cm9rZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI5Igp9CgouZmEtbWFycy1zdHJva2UtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJiIgp9CgouZmEtbWFycy1zdHJva2UtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJhIgp9CgouZmEtbWFzazpiZWZvcmUgewogICAgY29udGVudDogIlxmNmZhIgp9CgouZmEtbWFzdG9kb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmNiIKfQoKLmZhLW1heGNkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM2Igp9CgouZmEtbWRiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4Y2EiCn0KCi5mYS1tZWRhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEyIgp9CgouZmEtbWVkYXBwczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M2Igp9CgouZmEtbWVkaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2EiCn0KCi5mYS1tZWRpdW0tbTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M3Igp9CgouZmEtbWVka2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZmEiCn0KCi5mYS1tZWRydDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M4Igp9CgouZmEtbWVldHVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZTAiCn0KCi5mYS1tZWdhcG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEzIgp9CgouZmEtbWVoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWEiCn0KCi5mYS1tZWgtYmxhbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNCIKfQoKLmZhLW1laC1yb2xsaW5nLWV5ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNSIKfQoKLmZhLW1lbW9yeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM4Igp9CgouZmEtbWVuZGVsZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiMyIKfQoKLmZhLW1lbm9yYWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NiIKfQoKLmZhLW1lcmN1cnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMyIKfQoKLmZhLW1ldGVvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzUzIgp9CgouZmEtbWljcm9ibG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMWEiCn0KCi5mYS1taWNyb2NoaXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYiIKfQoKLmZhLW1pY3JvcGhvbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzMCIKfQoKLmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzkiCn0KCi5mYS1taWNyb3Bob25lLWFsdC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM5Igp9CgouZmEtbWljcm9waG9uZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTMxIgp9CgouZmEtbWljcm9zY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjEwIgp9CgouZmEtbWljcm9zb2Z0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2EiCn0KCi5mYS1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDY4Igp9CgouZmEtbWludXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTYiCn0KCi5mYS1taW51cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NiIKfQoKLmZhLW1pdHRlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I1Igp9CgouZmEtbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2IiCn0KCi5mYS1taXhjbG91ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg5Igp9CgouZmEtbWl4ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1NiIKfQoKLmZhLW1penVuaTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2NjIgp9CgouZmEtbW9iaWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGIiCn0KCi5mYS1tb2JpbGUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2QiCn0KCi5mYS1tb2R4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyODUiCn0KCi5mYS1tb25lcm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMCIKfQoKLmZhLW1vbmV5LWJpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkNiIKfQoKLmZhLW1vbmV5LWJpbGwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDEiCn0KCi5mYS1tb25leS1iaWxsLXdhdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYSIKfQoKLmZhLW1vbmV5LWJpbGwtd2F2ZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYiIKfQoKLmZhLW1vbmV5LWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1M2MiCn0KCi5mYS1tb25leS1jaGVjay1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZCIKfQoKLmZhLW1vbnVtZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTYiCn0KCi5mYS1tb29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODYiCn0KCi5mYS1tb3J0YXItcGVzdGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTciCn0KCi5mYS1tb3NxdWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OCIKfQoKLmZhLW1vdG9yY3ljbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxYyIKfQoKLmZhLW1vdW50YWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZmMiCn0KCi5mYS1tb3VzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGNjIgp9CgouZmEtbW91c2UtcG9pbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ1Igp9CgouZmEtbXVnLWhvdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I2Igp9CgouZmEtbXVzaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwMSIKfQoKLmZhLW5hcHN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMiIKfQoKLmZhLW5lb3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxMiIKfQoKLmZhLW5ldHdvcmstd2lyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZmZiIKfQoKLmZhLW5ldXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJjIgp9CgouZmEtbmV3c3BhcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWEiCn0KCi5mYS1uaW1ibHI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhOCIKfQoKLmZhLW5vZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxOSIKfQoKLmZhLW5vZGUtanM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMyIKfQoKLmZhLW5vdC1lcXVhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTNlIgp9CgouZmEtbm90ZXMtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDgxIgp9CgouZmEtbnBtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDQiCn0KCi5mYS1uczg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNSIKfQoKLmZhLW51dHJpdGlvbml4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDYiCn0KCi5mYS1vYmplY3QtZ3JvdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NyIKfQoKLmZhLW9iamVjdC11bmdyb3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDgiCn0KCi5mYS1vY3RvcHVzLWRlcGxveTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDgyIgp9CgouZmEtb2Rub2tsYXNzbmlraTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjYzIgp9CgouZmEtb2Rub2tsYXNzbmlraS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NCIKfQoKLmZhLW9pbC1jYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxMyIKfQoKLmZhLW9sZC1yZXB1YmxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEwIgp9CgouZmEtb206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OSIKfQoKLmZhLW9wZW5jYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2QiCn0KCi5mYS1vcGVuaWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YiIKfQoKLmZhLW9wZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmEiCn0KCi5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2MiCn0KCi5mYS1vcmNpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGQyIgp9CgouZmEtb3NpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWEiCn0KCi5mYS1vdHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzAwIgp9CgouZmEtb3V0ZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNiIgp9CgouZmEtcGFnZTQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNyIKfQoKLmZhLXBhZ2VsaW5lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMThjIgp9CgouZmEtcGFnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNSIKfQoKLmZhLXBhaW50LWJydXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmMiCn0KCi5mYS1wYWludC1yb2xsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYSIKfQoKLmZhLXBhbGV0dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZiIKfQoKLmZhLXBhbGZlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Q4Igp9CgouZmEtcGFsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODIiCn0KCi5mYS1wYXBlci1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4Igp9CgouZmEtcGFwZXJjbGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzYiCn0KCi5mYS1wYXJhY2h1dGUtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0Y2QiCn0KCi5mYS1wYXJhZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkZCIKfQoKLmZhLXBhcmtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0MCIKfQoKLmZhLXBhc3Nwb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YWIiCn0KCi5mYS1wYXN0YWZhcmlhbmlzbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdiIgp9CgouZmEtcGFzdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlYSIKfQoKLmZhLXBhdHJlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkOSIKfQoKLmZhLXBhdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGMiCn0KCi5mYS1wYXVzZS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YiIKfQoKLmZhLXBhdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWIwIgp9CgouZmEtcGF5cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWQiCn0KCi5mYS1wZWFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdjIgp9CgouZmEtcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDQiCn0KCi5mYS1wZW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDUiCn0KCi5mYS1wZW4tZmFuY3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYyIKfQoKLmZhLXBlbi1uaWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhZCIKfQoKLmZhLXBlbi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YiIKfQoKLmZhLXBlbmNpbC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwMyIKfQoKLmZhLXBlbmNpbC1ydWxlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFlIgp9CgouZmEtcGVubnktYXJjYWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MDQiCn0KCi5mYS1wZW9wbGUtYXJyb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjgiCn0KCi5mYS1wZW9wbGUtY2Fycnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjZSIKfQoKLmZhLXBlcHBlci1ob3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNiIKfQoKLmZhLXBlcmJ5dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MyIKfQoKLmZhLXBlcmNlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NSIKfQoKLmZhLXBlcmNlbnRhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0MSIKfQoKLmZhLXBlcmlzY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RhIgp9CgouZmEtcGVyc29uLWJvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NTYiCn0KCi5mYS1waGFicmljYXRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RiIgp9CgouZmEtcGhvZW5peC1mcmFtZXdvcms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkYyIKfQoKLmZhLXBob2VuaXgtc3F1YWRyb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMSIKfQoKLmZhLXBob25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTUiCn0KCi5mYS1waG9uZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3OSIKfQoKLmZhLXBob25lLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGQiCn0KCi5mYS1waG9uZS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5OCIKfQoKLmZhLXBob25lLXNxdWFyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3YiIKfQoKLmZhLXBob25lLXZvbHVtZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEwIgp9CgouZmEtcGhvdG8tdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3YyIKfQoKLmZhLXBocDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDU3Igp9CgouZmEtcGllZC1waXBlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmFlIgp9CgouZmEtcGllZC1waXBlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhOCIKfQoKLmZhLXBpZWQtcGlwZXItaGF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTUiCn0KCi5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTciCn0KCi5mYS1waWVkLXBpcGVyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDFlIgp9CgouZmEtcGlnZ3ktYmFuazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQzIgp9CgouZmEtcGlsbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NCIKfQoKLmZhLXBpbnRlcmVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQyIgp9CgouZmEtcGludGVyZXN0LXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzMSIKfQoKLmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkMyIKfQoKLmZhLXBpenphLXNsaWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MTgiCn0KCi5mYS1wbGFjZS1vZi13b3JzaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2N2YiCn0KCi5mYS1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDcyIgp9CgouZmEtcGxhbmUtYXJyaXZhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFmIgp9CgouZmEtcGxhbmUtZGVwYXJ0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjAiCn0KCi5mYS1wbGFuZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY5Igp9CgouZmEtcGxheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDRiIgp9CgouZmEtcGxheS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NCIKfQoKLmZhLXBsYXlzdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGYiCn0KCi5mYS1wbHVnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTYiCn0KCi5mYS1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjciCn0KCi5mYS1wbHVzLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU1Igp9CgouZmEtcGx1cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZSIKfQoKLmZhLXBvZGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjZSIKfQoKLmZhLXBvbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4MSIKfQoKLmZhLXBvbGwtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjgyIgp9CgouZmEtcG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZmUiCn0KCi5mYS1wb28tc3Rvcm06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc1YSIKfQoKLmZhLXBvb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxOSIKfQoKLmZhLXBvcnRyYWl0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTAiCn0KCi5mYS1wb3VuZC1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTQiCn0KCi5mYS1wb3dlci1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMSIKfQoKLmZhLXByYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4MyIKfQoKLmZhLXByYXlpbmctaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4NCIKfQoKLmZhLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIxIgp9CgouZmEtcHJlc2NyaXB0aW9uLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDg1Igp9CgouZmEtcHJlc2NyaXB0aW9uLWJvdHRsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NiIKfQoKLmZhLXByaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmYiCn0KCi5mYS1wcm9jZWR1cmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODciCn0KCi5mYS1wcm9kdWN0LWh1bnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4OCIKfQoKLmZhLXByb2plY3QtZGlhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQyIgp9CgouZmEtcHVtcC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNmEiCn0KCi5mYS1wdW1wLXNvYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2YiIKfQoKLmZhLXB1c2hlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2UxIgp9CgouZmEtcHV6emxlLXBpZWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmUiCn0KCi5mYS1weXRob246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMiIKfQoKLmZhLXFxOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDYiCn0KCi5mYS1xcmNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyOSIKfQoKLmZhLXF1ZXN0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjgiCn0KCi5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1OSIKfQoKLmZhLXF1aWRkaXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDU4Igp9CgouZmEtcXVpbnNjYXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTkiCn0KCi5mYS1xdW9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM0Igp9CgouZmEtcXVvdGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTBkIgp9CgouZmEtcXVvdGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwZSIKfQoKLmZhLXF1cmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODciCn0KCi5mYS1yLXByb2plY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmNyIKfQoKLmZhLXJhZGlhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I5Igp9CgouZmEtcmFkaWF0aW9uLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2JhIgp9CgouZmEtcmFpbmJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzViIgp9CgouZmEtcmFuZG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzQiCn0KCi5mYS1yYXNwYmVycnktcGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYiIKfQoKLmZhLXJhdmVscnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkOSIKfQoKLmZhLXJlYWN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWIiCn0KCi5mYS1yZWFjdGV1cm9wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVkIgp9CgouZmEtcmVhZG1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZDUiCn0KCi5mYS1yZWJlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQwIgp9CgouZmEtcmVjZWlwdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQzIgp9CgouZmEtcmVjb3JkLXZpbnlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ZDkiCn0KCi5mYS1yZWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjgiCn0KCi5mYS1yZWQtcml2ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMyIKfQoKLmZhLXJlZGRpdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWExIgp9CgouZmEtcmVkZGl0LWFsaWVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyODEiCn0KCi5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTIiCn0KCi5mYS1yZWRoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYyIKfQoKLmZhLXJlZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxZSIKfQoKLmZhLXJlZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjkiCn0KCi5mYS1yZWdpc3RlcmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWQiCn0KCi5mYS1yZW1vdmUtZm9ybWF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4N2QiCn0KCi5mYS1yZW5yZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4YiIKfQoKLmZhLXJlcGx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTUiCn0KCi5mYS1yZXBseS1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMiIKfQoKLmZhLXJlcGx5ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U2Igp9CgouZmEtcmVwdWJsaWNhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVlIgp9CgouZmEtcmVzZWFyY2hnYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjgiCn0KCi5mYS1yZXNvbHZpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNyIKfQoKLmZhLXJlc3Ryb29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmQiCn0KCi5mYS1yZXR3ZWV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzkiCn0KCi5mYS1yZXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViMiIKfQoKLmZhLXJpYmJvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ2Igp9CgouZmEtcmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBiIgp9CgouZmEtcm9hZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE4Igp9CgouZmEtcm9ib3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NCIKfQoKLmZhLXJvY2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM1Igp9CgouZmEtcm9ja2V0Y2hhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U4Igp9CgouZmEtcm9ja3JtczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U5Igp9CgouZmEtcm91dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkNyIKfQoKLmZhLXJzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDllIgp9CgouZmEtcnNzLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQzIgp9CgouZmEtcnVibGUtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU4Igp9CgouZmEtcnVsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NSIKfQoKLmZhLXJ1bGVyLWNvbWJpbmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDYiCn0KCi5mYS1ydWxlci1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDciCn0KCi5mYS1ydWxlci12ZXJ0aWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQ4Igp9CgouZmEtcnVubmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBjIgp9CgouZmEtcnVwZWUtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU2Igp9CgouZmEtcnVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdhIgp9CgouZmEtc2FkLWNyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIzIgp9CgouZmEtc2FkLXRlYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNCIKfQoKLmZhLXNhZmFyaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjY3Igp9CgouZmEtc2FsZXNmb3JjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNiIgp9CgouZmEtc2FzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFlIgp9CgouZmEtc2F0ZWxsaXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmYiCn0KCi5mYS1zYXRlbGxpdGUtZGlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MwIgp9CgouZmEtc2F2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM3Igp9CgouZmEtc2NobGl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZWEiCn0KCi5mYS1zY2hvb2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0OSIKfQoKLmZhLXNjcmV3ZHJpdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGEiCn0KCi5mYS1zY3JpYmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YSIKfQoKLmZhLXNjcm9sbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBlIgp9CgouZmEtc2QtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MyIgp9CgouZmEtc2VhcmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDIiCn0KCi5mYS1zZWFyY2gtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODgiCn0KCi5mYS1zZWFyY2gtbG9jYXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4OSIKfQoKLmZhLXNlYXJjaC1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDEwIgp9CgouZmEtc2VhcmNoLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZSIKfQoKLmZhLXNlYXJjaGVuZ2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZWIiCn0KCi5mYS1zZWVkbGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ4Igp9CgouZmEtc2VsbGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYSIKfQoKLmZhLXNlbGxzeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEzIgp9CgouZmEtc2VydmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzMiCn0KCi5mYS1zZXJ2aWNlc3RhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlYyIKfQoKLmZhLXNoYXBlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjFmIgp9CgouZmEtc2hhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2NCIKfQoKLmZhLXNoYXJlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUwIgp9CgouZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUxIgp9CgouZmEtc2hhcmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNGQiCn0KCi5mYS1zaGVrZWwtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBiIgp9CgouZmEtc2hpZWxkLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VkIgp9CgouZmEtc2hpZWxkLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNmMiCn0KCi5mYS1zaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWEiCn0KCi5mYS1zaGlwcGluZy1mYXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OGIiCn0KCi5mYS1zaGlydHNpbmJ1bGs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNCIKfQoKLmZhLXNob2UtcHJpbnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGIiCn0KCi5mYS1zaG9waWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNTciCn0KCi5mYS1zaG9wcGluZy1iYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MCIKfQoKLmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjkxIgp9CgouZmEtc2hvcHBpbmctY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdhIgp9CgouZmEtc2hvcHdhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNSIKfQoKLmZhLXNob3dlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNjIgp9CgouZmEtc2h1dHRsZS12YW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNiIKfQoKLmZhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkOSIKfQoKLmZhLXNpZ24taW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjYiCn0KCi5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTciCn0KCi5mYS1zaWduLW91dC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmNSIKfQoKLmZhLXNpZ25hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDEyIgp9CgouZmEtc2lnbmF0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjciCn0KCi5mYS1zaW0tY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2M0Igp9CgouZmEtc2ltcGx5YnVpbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNSIKfQoKLmZhLXNpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2ZCIKfQoKLmZhLXNpc3RyaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlZSIKfQoKLmZhLXNpdGVtYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlOCIKfQoKLmZhLXNpdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMiIKfQoKLmZhLXNrYXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjNSIKfQoKLmZhLXNrZXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2M2Igp9CgouZmEtc2tpaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YzkiCn0KCi5mYS1za2lpbmctbm9yZGljOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3Y2EiCn0KCi5mYS1za3VsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRjIgp9CgouZmEtc2t1bGwtY3Jvc3Nib25lczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzE0Igp9CgouZmEtc2t5YXRsYXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNiIKfQoKLmZhLXNreXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2UiCn0KCi5mYS1zbGFjazpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk4Igp9CgouZmEtc2xhY2staGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VmIgp9CgouZmEtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxNSIKfQoKLmZhLXNsZWlnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NjIgp9CgouZmEtc2xpZGVycy1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZGUiCn0KCi5mYS1zbGlkZXNoYXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTciCn0KCi5mYS1zbWlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE4Igp9CgouZmEtc21pbGUtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWI4Igp9CgouZmEtc21pbGUtd2luazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGRhIgp9CgouZmEtc21vZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVmIgp9CgouZmEtc21va2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhkIgp9CgouZmEtc21va2luZy1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZCIKfQoKLmZhLXNtczpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NkIgp9CgouZmEtc25hcGNoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYiIKfQoKLmZhLXNuYXBjaGF0LWdob3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYWMiCn0KCi5mYS1zbmFwY2hhdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhZCIKfQoKLmZhLXNub3dib2FyZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NlIgp9CgouZmEtc25vd2ZsYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGMiCn0KCi5mYS1zbm93bWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDAiCn0KCi5mYS1zbm93cGxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2QyIgp9CgouZmEtc29hcDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDZlIgp9CgouZmEtc29ja3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5NiIKfQoKLmZhLXNvbGFyLXBhbmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmEiCn0KCi5mYS1zb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGMiCn0KCi5mYS1zb3J0LWFscGhhLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZCIKfQoKLmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4MSIKfQoKLmZhLXNvcnQtYWxwaGEtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZSIKfQoKLmZhLXNvcnQtYWxwaGEtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODIiCn0KCi5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjAiCn0KCi5mYS1zb3J0LWFtb3VudC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg0Igp9CgouZmEtc29ydC1hbW91bnQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MSIKfQoKLmZhLXNvcnQtYW1vdW50LXVwLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg1Igp9CgouZmEtc29ydC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGQiCn0KCi5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTYyIgp9CgouZmEtc29ydC1udW1lcmljLWRvd24tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODYiCn0KCi5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MyIKfQoKLmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4NyIKfQoKLmZhLXNvcnQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkZSIKfQoKLmZhLXNvdW5kY2xvdWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiZSIKfQoKLmZhLXNvdXJjZXRyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkMyIKfQoKLmZhLXNwYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJiIgp9CgouZmEtc3BhY2Utc2h1dHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk3Igp9CgouZmEtc3BlYWthcDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2YzIgp9CgouZmEtc3BlYWtlci1kZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4M2MiCn0KCi5mYS1zcGVsbC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmODkxIgp9CgouZmEtc3BpZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MTciCn0KCi5mYS1zcGlubmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTAiCn0KCi5mYS1zcGxvdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmMiCn0KCi5mYS1zcG90aWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmMiCn0KCi5mYS1zcHJheS1jYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZCIKfQoKLmZhLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM4Igp9CgouZmEtc3F1YXJlLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1YyIKfQoKLmZhLXNxdWFyZS1yb290LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjk4Igp9CgouZmEtc3F1YXJlc3BhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZSIKfQoKLmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOGQiCn0KCi5mYS1zdGFjay1vdmVyZmxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZjIgp9CgouZmEtc3RhY2twYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDIiCn0KCi5mYS1zdGFtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJmIgp9CgouZmEtc3RhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA1Igp9CgouZmEtc3Rhci1hbmQtY3Jlc2NlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5OSIKfQoKLmZhLXN0YXItaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEtc3Rhci1oYWxmLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWMwIgp9CgouZmEtc3Rhci1vZi1kYXZpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjlhIgp9CgouZmEtc3Rhci1vZi1saWZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MjEiCn0KCi5mYS1zdGF5bGlua2VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjUiCn0KCi5mYS1zdGVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWI2Igp9CgouZmEtc3RlYW0tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjciCn0KCi5mYS1zdGVhbS1zeW1ib2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmNiIKfQoKLmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0OCIKfQoKLmZhLXN0ZXAtZm9yd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDUxIgp9CgouZmEtc3RldGhvc2NvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMSIKfQoKLmZhLXN0aWNrZXItbXVsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Y3Igp9CgouZmEtc3RpY2t5LW5vdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0OSIKfQoKLmZhLXN0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0ZCIKfQoKLmZhLXN0b3AtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOGQiCn0KCi5mYS1zdG9wd2F0Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmMiIKfQoKLmZhLXN0b3B3YXRjaC0yMDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDZmIgp9CgouZmEtc3RvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZSIKfQoKLmZhLXN0b3JlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRmIgp9CgouZmEtc3RvcmUtYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzAiCn0KCi5mYS1zdG9yZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcxIgp9CgouZmEtc3RyYXZhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjgiCn0KCi5mYS1zdHJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MCIKfQoKLmZhLXN0cmVldC12aWV3OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWQiCn0KCi5mYS1zdHJpa2V0aHJvdWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2MiCn0KCi5mYS1zdHJpcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyOSIKfQoKLmZhLXN0cmlwZS1zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmEiCn0KCi5mYS1zdHJvb3B3YWZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTUxIgp9CgouZmEtc3R1ZGlvdmluYXJpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjgiCn0KCi5mYS1zdHVtYmxldXBvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE0Igp9CgouZmEtc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTMiCn0KCi5mYS1zdWJzY3JpcHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyYyIKfQoKLmZhLXN1YndheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM5Igp9CgouZmEtc3VpdGNhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMiIKfQoKLmZhLXN1aXRjYXNlLXJvbGxpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjMSIKfQoKLmZhLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg1Igp9CgouZmEtc3VwZXJwb3dlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkZCIKfQoKLmZhLXN1cGVyc2NyaXB0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmIiCn0KCi5mYS1zdXBwbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmOSIKfQoKLmZhLXN1cnByaXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzIiCn0KCi5mYS1zdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDYiCn0KCi5mYS1zd2F0Y2hib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzMiCn0KCi5mYS1zd2lmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGUxIgp9CgouZmEtc3dpbW1lcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM0Igp9CgouZmEtc3dpbW1pbmctcG9vbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM1Igp9CgouZmEtc3ltZm9ueTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNkIgp9CgouZmEtc3luYWdvZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWIiCn0KCi5mYS1zeW5jOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjEiCn0KCi5mYS1zeW5jLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmYxIgp9CgouZmEtc3lyaW5nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhlIgp9CgouZmEtdGFibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjZSIKfQoKLmZhLXRhYmxlLXRlbm5pczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDVkIgp9CgouZmEtdGFibGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGEiCn0KCi5mYS10YWJsZXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZmEiCn0KCi5mYS10YWJsZXRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTAiCn0KCi5mYS10YWNob21ldGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZkIgp9CgouZmEtdGFnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmIiCn0KCi5mYS10YWdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmMiCn0KCi5mYS10YXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZGIiCn0KCi5mYS10YXNrczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFlIgp9CgouZmEtdGF4aTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWJhIgp9CgouZmEtdGVhbXNwZWFrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjkiCn0KCi5mYS10ZWV0aDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjJlIgp9CgouZmEtdGVldGgtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNjJmIgp9CgouZmEtdGVsZWdyYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjNiIKfQoKLmZhLXRlbGVncmFtLXBsYW5lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZmUiCn0KCi5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NjkiCn0KCi5mYS10ZW1wZXJhdHVyZS1sb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc2YiIKfQoKLmZhLXRlbmNlbnQtd2VpYm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkNSIKfQoKLmZhLXRlbmdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDciCn0KCi5mYS10ZXJtaW5hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTIwIgp9CgouZmEtdGV4dC1oZWlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzNCIKfQoKLmZhLXRleHQtd2lkdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzNSIKfQoKLmZhLXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMGEiCn0KCi5mYS10aC1sYXJnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA5Igp9CgouZmEtdGgtbGlzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDBiIgp9CgouZmEtdGhlLXJlZC15ZXRpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWQiCn0KCi5mYS10aGVhdGVyLW1hc2tzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MzAiCn0KCi5mYS10aGVtZWNvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzYiCn0KCi5mYS10aGVtZWlzbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMiIKfQoKLmZhLXRoZXJtb21ldGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTEiCn0KCi5mYS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNiIgp9CgouZmEtdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM3Igp9CgouZmEtdGhlcm1vbWV0ZXItaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM5Igp9CgouZmEtdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNhIgp9CgouZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjOCIKfQoKLmZhLXRoaW5rLXBlYWtzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MzEiCn0KCi5mYS10aHVtYnMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTY1Igp9CgouZmEtdGh1bWJzLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjQiCn0KCi5mYS10aHVtYnRhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4ZCIKfQoKLmZhLXRpY2tldC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmZiIKfQoKLmZhLXRpa3RvazpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdiIgp9CgouZmEtdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZCIKfQoKLmZhLXRpbWVzLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU3Igp9CgouZmEtdGludDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQzIgp9CgouZmEtdGludC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM3Igp9CgouZmEtdGlyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjOCIKfQoKLmZhLXRvZ2dsZS1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwNCIKfQoKLmZhLXRvZ2dsZS1vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA1Igp9CgouZmEtdG9pbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDgiCn0KCi5mYS10b2lsZXQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxZSIKfQoKLmZhLXRvaWxldC1wYXBlci1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcyIgp9CgouZmEtdG9vbGJveDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTUyIgp9CgouZmEtdG9vbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkOSIKfQoKLmZhLXRvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzkiCn0KCi5mYS10b3JhaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmEwIgp9CgouZmEtdG9yaWktZ2F0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmExIgp9CgouZmEtdHJhY3RvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzIyIgp9CgouZmEtdHJhZGUtZmVkZXJhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEzIgp9CgouZmEtdHJhZGVtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWMiCn0KCi5mYS10cmFmZmljLWxpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MzciCn0KCi5mYS10cmFpbGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDEiCn0KCi5mYS10cmFpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM4Igp9CgouZmEtdHJhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RhIgp9CgouZmEtdHJhbnNnZW5kZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyNCIKfQoKLmZhLXRyYW5zZ2VuZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI1Igp9CgouZmEtdHJhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOCIKfQoKLmZhLXRyYXNoLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmVkIgp9CgouZmEtdHJhc2gtcmVzdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODI5Igp9CgouZmEtdHJhc2gtcmVzdG9yZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyYSIKfQoKLmZhLXRyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiYiIKfQoKLmZhLXRyZWxsbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgxIgp9CgouZmEtdHJpcGFkdmlzb3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MiIKfQoKLmZhLXRyb3BoeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDkxIgp9CgouZmEtdHJ1Y2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkMSIKfQoKLmZhLXRydWNrLWxvYWRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkZSIKfQoKLmZhLXRydWNrLW1vbnN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYzYiIKfQoKLmZhLXRydWNrLW1vdmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGRmIgp9CgouZmEtdHJ1Y2stcGlja3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2M2MiCn0KCi5mYS10c2hpcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MyIKfQoKLmZhLXR0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU0Igp9CgouZmEtdHVtYmxyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzMiCn0KCi5mYS10dW1ibHItc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzQiCn0KCi5mYS10djpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZjIgp9CgouZmEtdHdpdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTgiCn0KCi5mYS10d2l0dGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTkiCn0KCi5mYS10d2l0dGVyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDgxIgp9CgouZmEtdHlwbzM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYiIKfQoKLmZhLXViZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMiIKfQoKLmZhLXVidW50dTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RmIgp9CgouZmEtdWlraXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMyIKfQoKLmZhLXVtYnJhY286YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhlOCIKfQoKLmZhLXVtYnJlbGxhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTkiCn0KCi5mYS11bWJyZWxsYS1iZWFjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNhIgp9CgouZmEtdW5jaGFydGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODQiCn0KCi5mYS11bmRlcmxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjZCIKfQoKLmZhLXVuZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMiIKfQoKLmZhLXVuZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZWEiCn0KCi5mYS11bmlyZWdpc3RyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA0Igp9CgouZmEtdW5pdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA0OSIKfQoKLmZhLXVuaXZlcnNhbC1hY2Nlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5YSIKfQoKLmZhLXVuaXZlcnNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YyIKfQoKLmZhLXVubGluazpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI3Igp9CgouZmEtdW5sb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWMiCn0KCi5mYS11bmxvY2stYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2UiCn0KCi5mYS11bnNwbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdjIgp9CgouZmEtdW50YXBwZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA1Igp9CgouZmEtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTMiCn0KCi5mYS11cHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMCIKfQoKLmZhLXVzYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg3Igp9CgouZmEtdXNlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA3Igp9CgouZmEtdXNlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwNiIKfQoKLmZhLXVzZXItYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmEiCn0KCi5mYS11c2VyLWFzdHJvbmF1dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNGZiIgp9CgouZmEtdXNlci1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGZjIgp9CgouZmEtdXNlci1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiZCIKfQoKLmZhLXVzZXItY2xvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZCIKfQoKLmZhLXVzZXItY29nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmUiCn0KCi5mYS11c2VyLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZiIKfQoKLmZhLXVzZXItZnJpZW5kczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTAwIgp9CgouZmEtdXNlci1ncmFkdWF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTAxIgp9CgouZmEtdXNlci1pbmp1cmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjgiCn0KCi5mYS11c2VyLWxvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMiIKfQoKLmZhLXVzZXItbWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMCIKfQoKLmZhLXVzZXItbWludXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMyIKfQoKLmZhLXVzZXItbmluamE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwNCIKfQoKLmZhLXVzZXItbnVyc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyZiIKfQoKLmZhLXVzZXItcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM0Igp9CgouZmEtdXNlci1zZWNyZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxYiIKfQoKLmZhLXVzZXItc2hpZWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDUiCn0KCi5mYS11c2VyLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDYiCn0KCi5mYS11c2VyLXRhZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTA3Igp9CgouZmEtdXNlci10aWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwOCIKfQoKLmZhLXVzZXItdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNSIKfQoKLmZhLXVzZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzAiCn0KCi5mYS11c2Vycy1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwOSIKfQoKLmZhLXVzZXJzLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzMiCn0KCi5mYS11c3BzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZTEiCn0KCi5mYS11c3N1bm5haDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA3Igp9CgouZmEtdXRlbnNpbC1zcG9vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmU1Igp9CgouZmEtdXRlbnNpbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlNyIKfQoKLmZhLXZhYWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA4Igp9CgouZmEtdmVjdG9yLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNiIgp9CgouZmEtdmVudXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMSIKfQoKLmZhLXZlbnVzLWRvdWJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI2Igp9CgouZmEtdmVudXMtbWFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI4Igp9CgouZmEtdmVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDg1Igp9CgouZmEtdmVzdC1wYXRjaGVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODYiCn0KCi5mYS12aWFjb2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzciCn0KCi5mYS12aWFkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOSIKfQoKLmZhLXZpYWRlby1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYSIKfQoKLmZhLXZpYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5MiIKfQoKLmZhLXZpYWxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTMiCn0KCi5mYS12aWJlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA5Igp9CgouZmEtdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZCIKfQoKLmZhLXZpZGVvLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTIiCn0KCi5mYS12aWhhcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZhNyIKfQoKLmZhLXZpbWVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGEiCn0KCi5mYS12aW1lby1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NCIKfQoKLmZhLXZpbWVvLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3ZCIKfQoKLmZhLXZpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjYSIKfQoKLmZhLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzQiCn0KCi5mYS12aXJ1cy1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc1Igp9CgouZmEtdmlydXNlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc2Igp9CgouZmEtdms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OSIKfQoKLmZhLXZudjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBiIgp9CgouZmEtdm9pY2VtYWlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4OTciCn0KCi5mYS12b2xsZXliYWxsLWJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1ZiIKfQoKLmZhLXZvbHVtZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjciCn0KCi5mYS12b2x1bWUtbXV0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmE5Igp9CgouZmEtdm9sdW1lLW9mZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI2Igp9CgouZmEtdm9sdW1lLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjgiCn0KCi5mYS12b3RlLXllYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzcyIgp9CgouZmEtdnItY2FyZGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjkiCn0KCi5mYS12dWVqczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFmIgp9CgouZmEtd2Fsa2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU0Igp9CgouZmEtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTUiCn0KCi5mYS13YXJlaG91c2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NCIKfQoKLmZhLXdhdGNobWFuLW1vbml0b3Jpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4NyIKfQoKLmZhLXdhdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NzMiCn0KCi5mYS13YXZlLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNlIgp9CgouZmEtd2F6ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNmIgp9CgouZmEtd2VlYmx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1Y2MiCn0KCi5mYS13ZWlibzpiZWZvcmUgewogICAgY29udGVudDogIlxmMThhIgp9CgouZmEtd2VpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTYiCn0KCi5mYS13ZWlnaHQtaGFuZ2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNkIgp9CgouZmEtd2VpeGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDciCn0KCi5mYS13aGF0c2FwcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjMyIgp9CgouZmEtd2hhdHNhcHAtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGMiCn0KCi5mYS13aGVlbGNoYWlyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTMiCn0KCi5mYS13aG1jczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBkIgp9CgouZmEtd2lmaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWViIgp9CgouZmEtd2lraXBlZGlhLXc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NiIKfQoKLmZhLXdpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcyZSIKfQoKLmZhLXdpbmRvdy1jbG9zZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEwIgp9CgouZmEtd2luZG93LW1heGltaXplOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDAiCn0KCi5mYS13aW5kb3ctbWluaW1pemU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkMSIKfQoKLmZhLXdpbmRvdy1yZXN0b3JlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDIiCn0KCi5mYS13aW5kb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2EiCn0KCi5mYS13aW5lLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzJmIgp9CgouZmEtd2luZS1nbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNGUzIgp9CgouZmEtd2luZS1nbGFzcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjZSIKfQoKLmZhLXdpeDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNmIgp9CgouZmEtd2l6YXJkcy1vZi10aGUtY29hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczMCIKfQoKLmZhLXdvZHU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4OCIKfQoKLmZhLXdvbGYtcGFjay1iYXR0YWxpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxNCIKfQoKLmZhLXdvbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTkiCn0KCi5mYS13b3JkcHJlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YSIKfQoKLmZhLXdvcmRwcmVzcy1zaW1wbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMSIKfQoKLmZhLXdwYmVnaW5uZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NyIKfQoKLmZhLXdwZXhwbG9yZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkZSIKfQoKLmZhLXdwZm9ybXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5OCIKfQoKLmZhLXdwcmVzc3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNCIKfQoKLmZhLXdyZW5jaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFkIgp9CgouZmEteC1yYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NyIKfQoKLmZhLXhib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMiIKfQoKLmZhLXhpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2OCIKfQoKLmZhLXhpbmctc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjkiCn0KCi5mYS15LWNvbWJpbmF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzYiIKfQoKLmZhLXlhaG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWUiCn0KCi5mYS15YW1tZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0MCIKfQoKLmZhLXlhbmRleDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEzIgp9CgouZmEteWFuZGV4LWludGVybmF0aW9uYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNCIKfQoKLmZhLXlhcm46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMyIKfQoKLmZhLXllbHA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlOSIKfQoKLmZhLXllbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTciCn0KCi5mYS15aW4teWFuZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmFkIgp9CgouZmEteW9hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMSIKfQoKLmZhLXlvdXR1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NyIKfQoKLmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MzEiCn0KCi5mYS16aGlodTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjNmIgp9Cgouc3Itb25seSB7CiAgICBib3JkZXI6IDA7CiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogICAgaGVpZ2h0OiAxcHg7CiAgICBtYXJnaW46IC0xcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxcHgKfQoKLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICAgIGNsaXA6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICB3aWR0aDogYXV0bwp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LWRpc3BsYXk6IGJsb2NrOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QpOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5lb3Q/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksIHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksIHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYpIGZvcm1hdCgid29mZiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAuc3ZnI2ZvbnRhd2Vzb21lKSBmb3JtYXQoInN2ZyIpCn0KCi5mYWIgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiCn0KCkBmb250LWZhY2UgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LWRpc3BsYXk6IGJsb2NrOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtcmVndWxhci00MDAuZW90KTsKICAgIHNyYzogdXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksIHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtcmVndWxhci00MDAuc3ZnI2ZvbnRhd2Vzb21lKSBmb3JtYXQoInN2ZyIpCn0KCi5mYWIsCi5mYXIgewogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXdlaWdodDogOTAwOwogICAgZm9udC1kaXNwbGF5OiBibG9jazsKICAgIHNyYzogdXJsKC4uL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC5lb3QpOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYpIGZvcm1hdCgid29mZiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKQp9CgouZmEsCi5mYXIsCi5mYXMgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIgp9CgouZmEsCi5mYXMgewogICAgZm9udC13ZWlnaHQ6IDkwMAp9"}},"time_used":560,"timings":{"blocked":279,"dns":0,"connect":0,"send":0,"wait":187,"receive":94,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/functions.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.428Z","timestamp":1785145482428,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/functions.js?ver=20150330 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 22318\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":22318,"size_decoded":22535,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"e4e47f9df7358641216d7dd6baf6d1e3","sha1":"39fb9b6d65ed8bda5af6989e08a9d2ea0347712a","sha256":"0ec02a79c1f273e68245ca538293ce641d17fb739e8eb003de826cf83ea48a95","sha512":"9337c220a435641bbbecc606ec8a8931fca9d26d90c6db2b9457ad6ee8b1f20dca750579510ac9583ba22cab3564fc59222769f4eb9c12f3c182b5e91b6e47e8","ssdeep":"192:03SOh4RGbIJjVnAxta5HO6g2S48+WXS+QhtT3qaPRi3ZOBQATa7a5lGq5cDSCLmG:gQtCjiA/szI","tlshash":"e8a20208bcf710325063743e9bdf5014a7ab6887450dde11bd9c56980f95a28eaf8bfc","first_seen":"2026-07-27T08:06:56.559484Z","last_seen":"2026-07-27T09:45:50.896274Z","times_seen":3,"resource_available":true,"data":"KGZ1bmN0aW9uKCQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBpZiAoISQuYXB1c1RoZW1lRXh0ZW5zaW9ucykKICAgICAgICAkLmFwdXNUaGVtZUV4dGVuc2lvbnMgPSB7fTsKCiAgICBmdW5jdGlvbiBBcHVzVGhlbWVDb3JlKCkgewogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAvLyBzZWxmLmluaXQoKTsKICAgIH07CgogICAgQXB1c1RoZW1lQ29yZS5wcm90b3R5cGUgPSB7CiAgICAgICAgLyoqCiAgICAgICAgICogIEluaXRpYWxpemUKICAgICAgICAgKi8KICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAgICAgc2VsZi5wcmVsb2FkU2l0ZSgpOwoKICAgICAgICAgICAgc2VsZi5hY3RpdmVBY2NvcmRpb24oKTsKCiAgICAgICAgICAgIC8vIHNsaWNrIGluaXQKICAgICAgICAgICAgc2VsZi5pbml0U2xpY2soJCgiW2RhdGEtY2Fyb3VzZWw9c2xpY2tdIikpOwoKICAgICAgICAgICAgLy8gaXNvdG8KICAgICAgICAgICAgc2VsZi5pbml0SXNvdG9wZSgpOwoKICAgICAgICAgICAgLy8gVW52ZWlsIGluaXQKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHNlbGYubGF5enlMb2FkSW1hZ2UoKTsKICAgICAgICAgICAgfSwgMjAwKTsKCiAgICAgICAgICAgIHNlbGYuaW5pdEhlYWRlclN0aWNreSgnbWFpbi1zdGlja3ktaGVhZGVyJyk7CgogICAgICAgICAgICAvLyBzZWxmLmluaXRIZWFkZXJTdGlja3koJ2hlYWRlci1tb2JpbGUnKTsKCiAgICAgICAgICAgIC8vIGJhY2sgdG8gdG9wCiAgICAgICAgICAgIHNlbGYuYmFja1RvVG9wKCk7CgogICAgICAgICAgICAvLyBwb3B1cCBpbWFnZQogICAgICAgICAgICBzZWxmLnBvcHVwSW1hZ2UoKTsKCiAgICAgICAgICAgICQoJ1tkYXRhLXRvZ2dsZT0idG9vbHRpcCJdJykudG9vbHRpcCgpOwoKICAgICAgICAgICAgc2VsZi5pbml0TW9iaWxlTWVudSgpOwoKICAgICAgICAgICAgc2VsZi5tYWluTWVudUluaXQoKTsKCiAgICAgICAgICAgICQoZG9jdW1lbnQuYm9keSkub24oJ2NsaWNrJywgJy5uYXYgW2RhdGEtdG9nZ2xlPSJkcm9wZG93biJdJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuaHJlZiAmJiB0aGlzLmhyZWYgIT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0ICYmIHRoaXMudGFyZ2V0ID09ICdfYmxhbmsnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMuaHJlZiwgJ19ibGFuaycpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5ocmVmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBzZWxmLmxvYWRFeHRlbnNpb24oKTsKICAgICAgICB9LAogICAgICAgIC8qKgogICAgICAgICAqICBFeHRlbnNpb25zOiBMb2FkIHNjcmlwdHMKICAgICAgICAgKi8KICAgICAgICBsb2FkRXh0ZW5zaW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAgICAgaWYgKCQuYXB1c1RoZW1lRXh0ZW5zaW9ucy5xdWFudGl0eV9pbmNyZW1lbnQpIHsKICAgICAgICAgICAgICAgICQuYXB1c1RoZW1lRXh0ZW5zaW9ucy5xdWFudGl0eV9pbmNyZW1lbnQuY2FsbChzZWxmKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCQuYXB1c1RoZW1lRXh0ZW5zaW9ucy5zaG9wKSB7CiAgICAgICAgICAgICAgICAkLmFwdXNUaGVtZUV4dGVuc2lvbnMuc2hvcC5jYWxsKHNlbGYpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJC5hcHVzVGhlbWVFeHRlbnNpb25zLnByb3BlcnR5X21hcCkgewogICAgICAgICAgICAgICAgJC5hcHVzVGhlbWVFeHRlbnNpb25zLnByb3BlcnR5X21hcC5jYWxsKHNlbGYpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJC5hcHVzVGhlbWVFeHRlbnNpb25zLnByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAkLmFwdXNUaGVtZUV4dGVuc2lvbnMucHJvcGVydHkuY2FsbChzZWxmKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaW5pdFNsaWNrOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgZWxlbWVudC5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHsKICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgYXJyb3dzOiAkKHRoaXMpLmRhdGEoJ25hdicpLAogICAgICAgICAgICAgICAgICAgIGRvdHM6ICQodGhpcykuZGF0YSgncGFnaW5hdGlvbicpLAogICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogNCwKICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogNCwKICAgICAgICAgICAgICAgICAgICBwcmV2QXJyb3c6ICI8YnV0dG9uIHR5cGU9J2J1dHRvbicgY2xhc3M9J3NsaWNrLWFycm93IHNsaWNrLXByZXYnPjxpIGNsYXNzPSdmbGF0aWNvbi1sZWZ0LWFycm93LTEnIGFyaWEtaGlkZGVuPSd0cnVlJz48L2k+PC9zcGFuPjxzcGFuIGNsYXNzPSd0ZXh0bmF2Jz4iICsgaG9tZW9fYWpheC5wcmV2aW91cyArICI8L3NwYW4+PC9idXR0b24+IiwKICAgICAgICAgICAgICAgICAgICBuZXh0QXJyb3c6ICI8YnV0dG9uIHR5cGU9J2J1dHRvbicgY2xhc3M9J3NsaWNrLWFycm93IHNsaWNrLW5leHQnPjxzcGFuIGNsYXNzPSd0ZXh0bmF2Jz4iICsgaG9tZW9fYWpheC5uZXh0ICsgIjwvc3Bhbj48aSBjbGFzcz0nZmxhdGljb24tcmlnaHQtYXJyb3cnIGFyaWEtaGlkZGVuPSd0cnVlJz48L2k+PC9idXR0b24+IiwKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgdmFyIHNsaWNrID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ2l0ZW1zJykpIHsKICAgICAgICAgICAgICAgICAgICBjb25maWcuc2xpZGVzVG9TaG93ID0gJCh0aGlzKS5kYXRhKCdpdGVtcycpOwogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZXN0b3Njcm9sbCA9ICQodGhpcykuZGF0YSgnaXRlbXMnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ2luZmluaXRlJykpIHsKICAgICAgICAgICAgICAgICAgICBjb25maWcuaW5maW5pdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgnYXV0b3BsYXknKSkgewogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hdXRvcGxheSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmF1dG9wbGF5U3BlZWQgPSAyNTAwOwogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wYXVzZU9uSG92ZXIgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgnZGlzYWJsZV9kcmFnZ2FibGUnKSkgewogICAgICAgICAgICAgICAgICAgIGNvbmZpZy50b3VjaE1vdmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBjb25maWcuZHJhZ2dhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgY29uZmlnLnN3aXBlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgY29uZmlnLnN3aXBlVG9TbGlkZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgnY2VudGVybW9kZScpKSB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNlbnRlck1vZGUgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgndmVydGljYWwnKSkgewogICAgICAgICAgICAgICAgICAgIGNvbmZpZy52ZXJ0aWNhbCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5kYXRhKCdyb3dzJykpIHsKICAgICAgICAgICAgICAgICAgICBjb25maWcucm93cyA9ICQodGhpcykuZGF0YSgncm93cycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgnYXNuYXZmb3InKSkgewogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hc05hdkZvciA9ICQodGhpcykuZGF0YSgnYXNuYXZmb3InKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ3NsaWRlc3Rvc2Nyb2xsJykpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVzdG9zY3JvbGwgPSAkKHRoaXMpLmRhdGEoJ3NsaWRlc3Rvc2Nyb2xsJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5kYXRhKCdmb2N1c29uc2VsZWN0JykpIHsKICAgICAgICAgICAgICAgICAgICBjb25maWcuZm9jdXNPblNlbGVjdCA9ICQodGhpcykuZGF0YSgnZm9jdXNvbnNlbGVjdCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uZmlnLnNsaWRlc1RvU2Nyb2xsID0gc2xpZGVzdG9zY3JvbGw7CgogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgnbGFyZ2UnKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBkZXNrdG9wID0gJCh0aGlzKS5kYXRhKCdsYXJnZScpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGVza3RvcCA9IGNvbmZpZy5pdGVtczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ3NtYWxsZGVza3RvcCcpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNtYWxsZGVza3RvcCA9ICQodGhpcykuZGF0YSgnc21hbGxkZXNrdG9wJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ2xhcmdlJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNtYWxsZGVza3RvcCA9ICQodGhpcykuZGF0YSgnbGFyZ2UnKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc21hbGxkZXNrdG9wID0gY29uZmlnLml0ZW1zOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ21lZGl1bScpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1lZGl1bSA9ICQodGhpcykuZGF0YSgnbWVkaXVtJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBtZWRpdW0gPSBjb25maWcuaXRlbXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5kYXRhKCdzbWFsbG1lZGl1bScpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNtYWxsbWVkaXVtID0gJCh0aGlzKS5kYXRhKCdzbWFsbG1lZGl1bScpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc21hbGxtZWRpdW0gPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgnZXh0cmFzbWFsbCcpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGV4dHJhc21hbGwgPSAkKHRoaXMpLmRhdGEoJ2V4dHJhc21hbGwnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGV4dHJhc21hbGwgPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgnc21hbGxlc3QnKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzbWFsbGVzdCA9ICQodGhpcykuZGF0YSgnc21hbGxlc3QnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNtYWxsZXN0ID0gMTsKICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZGF0YSgnc2xpZGVzdG9zY3JvbGxfbGFyZ2UnKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZXN0b3Njcm9sbF9kZXNrdG9wID0gJCh0aGlzKS5kYXRhKCdzbGlkZXN0b3Njcm9sbF9sYXJnZScpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVzdG9zY3JvbGxfZGVza3RvcCA9IGNvbmZpZy5zbGlkZXNUb1Njcm9sbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ3NsaWRlc3Rvc2Nyb2xsX3NtYWxsZGVza3RvcCcpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlc3Rvc2Nyb2xsX3NtYWxsZGVza3RvcCA9ICQodGhpcykuZGF0YSgnc2xpZGVzdG9zY3JvbGxfc21hbGxkZXNrdG9wJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ3NsaWRlc3Rvc2Nyb2xsX2xhcmdlJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlc3Rvc2Nyb2xsX3NtYWxsZGVza3RvcCA9ICQodGhpcykuZGF0YSgnc2xpZGVzdG9zY3JvbGxfbGFyZ2UnKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVzdG9zY3JvbGxfc21hbGxkZXNrdG9wID0gY29uZmlnLml0ZW1zOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ3NsaWRlc3Rvc2Nyb2xsX21lZGl1bScpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlc3Rvc2Nyb2xsX21lZGl1bSA9ICQodGhpcykuZGF0YSgnc2xpZGVzdG9zY3JvbGxfbWVkaXVtJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZXN0b3Njcm9sbF9tZWRpdW0gPSBjb25maWcuaXRlbXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5kYXRhKCdzbGlkZXN0b3Njcm9sbF9zbWFsbG1lZGl1bScpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlc3Rvc2Nyb2xsX3NtYWxsbWVkaXVtID0gJCh0aGlzKS5kYXRhKCdzbGlkZXN0b3Njcm9sbF9zbWFsbG1lZGl1bScpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVzdG9zY3JvbGxfc21hbGxtZWRpdW0gPSBzbWFsbG1lZGl1bTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ3NsaWRlc3Rvc2Nyb2xsX2V4dHJhc21hbGwnKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZXN0b3Njcm9sbF9leHRyYXNtYWxsID0gJCh0aGlzKS5kYXRhKCdzbGlkZXN0b3Njcm9sbF9leHRyYXNtYWxsJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZXN0b3Njcm9sbF9leHRyYXNtYWxsID0gZXh0cmFzbWFsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ3NsaWRlc3Rvc2Nyb2xsX3NtYWxsZXN0JykpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVzdG9zY3JvbGxfc21hbGxlc3QgPSAkKHRoaXMpLmRhdGEoJ3NsaWRlc3Rvc2Nyb2xsX3NtYWxsZXN0Jyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZXN0b3Njcm9sbF9zbWFsbGVzdCA9IHNtYWxsZXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uZmlnLnJlc3BvbnNpdmUgPSBbewogICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAzMjEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHNtYWxsZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IHNsaWRlc3Rvc2Nyb2xsX3NtYWxsZXN0LAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ6IDU4MCwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogZXh0cmFzbWFsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiBzbGlkZXN0b3Njcm9sbF9leHRyYXNtYWxsLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ6IDc2OSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogc21hbGxtZWRpdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogc2xpZGVzdG9zY3JvbGxfc21hbGxtZWRpdW0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiA5ODEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IG1lZGl1bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiBzbGlkZXN0b3Njcm9sbF9tZWRpdW0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAxMjAwLAogICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbWFsbGRlc2t0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogc2xpZGVzdG9zY3JvbGxfc21hbGxkZXNrdG9wCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludDogMTUwMSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogZGVza3RvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiBzbGlkZXN0b3Njcm9sbF9kZXNrdG9wCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgIGlmICgkKCdodG1sJykuYXR0cignZGlyJykgPT0gJ3J0bCcpIHsKICAgICAgICAgICAgICAgICAgICBjb25maWcucnRsID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkKHRoaXMpLnNsaWNrKGNvbmZpZyk7CgogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIEZpeCBvd2wgaW4gYm9vdHN0cmFwIHRhYnMKICAgICAgICAgICAgJCgnYVtkYXRhLXRvZ2dsZT0idGFiIl0nKS5vbignc2hvd24uYnMudGFiJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9ICQoZS50YXJnZXQpLmF0dHIoImhyZWYiKTsKICAgICAgICAgICAgICAgIHZhciAkc2xpY2sgPSAkKCIuc2xpY2stY2Fyb3VzZWwiLCB0YXJnZXQpOwoKICAgICAgICAgICAgICAgIGlmICgkc2xpY2subGVuZ3RoID4gMCAmJiAkc2xpY2suaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHsKICAgICAgICAgICAgICAgICAgICAkc2xpY2suc2xpY2soJ3JlZnJlc2gnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNlbGYubGF5enlMb2FkSW1hZ2UoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBsYXl6eUxvYWRJbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQod2luZG93KS5vZmYoJ3Njcm9sbC51bnZlaWwgcmVzaXplLnVudmVpbCBsb29rdXAudW52ZWlsJyk7CiAgICAgICAgICAgIHZhciAkaW1hZ2VzID0gJCgnLmltYWdlLXdyYXBwZXI6bm90KC5pbWFnZS1sb2FkZWQpIC51bnZlaWwtaW1hZ2UnKTsgLy8gR2V0IHVuLWxvYWRlZCBpbWFnZXMgb25seQogICAgICAgICAgICBpZiAoJGltYWdlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICRpbWFnZXMudW52ZWlsKDEsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykubG9hZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuaW1hZ2Utd3JhcHBlcicpLmZpcnN0KCkuYWRkQ2xhc3MoJ2ltYWdlLWxvYWRlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUF0dHIoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQXR0cignZGF0YS1zcmNzZXQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVBdHRyKCdkYXRhLXNpemVzJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyICRpbWFnZXMgPSAkKCcucHJvZHVjdC1pbWFnZTpub3QoLmltYWdlLWxvYWRlZCkgLnVudmVpbC1pbWFnZScpOyAvLyBHZXQgdW4tbG9hZGVkIGltYWdlcyBvbmx5CiAgICAgICAgICAgIGlmICgkaW1hZ2VzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgJGltYWdlcy51bnZlaWwoMSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5sb2FkKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5wcm9kdWN0LWltYWdlJykuZmlyc3QoKS5hZGRDbGFzcygnaW1hZ2UtbG9hZGVkJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaW5pdElzb3RvcGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCcuaXNvdG9wZS1pdGVtcycpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgJGNvbnRhaW5lciA9ICQodGhpcyk7CgogICAgICAgICAgICAgICAgJGNvbnRhaW5lci5pbWFnZXNMb2FkZWQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5pc290b3BlKHsKICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNlbGVjdG9yOiAnLmlzb3RvcGUtaXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNFbmFibGVkOiB0cnVlLCAvLyBJbXBvcnRhbnQgZm9yIHZpZGVvcwogICAgICAgICAgICAgICAgICAgICAgICBtYXNvbnJ5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aDogJGNvbnRhaW5lci5kYXRhKCdjb2x1bW53aWR0aCcpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKICAgICAgICAgICAgICogICAgQXBwbHkgRmlsdGVyICAgICAgICAKICAgICAgICAgICAgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgICAgICAgJCgnLmlzb3RvcGUtZmlsdGVyIGxpIGEnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICB2YXIgcGFyZW50dWwgPSAkKHRoaXMpLnBhcmVudHMoJ3VsLmlzb3RvcGUtZmlsdGVyJykuZGF0YSgncmVsYXRlZC1ncmlkJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJ3VsLmlzb3RvcGUtZmlsdGVyJykuZmluZCgnbGkgYScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gJCh0aGlzKS5hdHRyKCdkYXRhLWZpbHRlcicpOwogICAgICAgICAgICAgICAgJCgnIycgKyBwYXJlbnR1bCkuaXNvdG9wZSh7CiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBzZWxlY3RvcgogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7fSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIChmYWxzZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgaW5pdEhlYWRlclN0aWNreTogZnVuY3Rpb24obWFpbl9zdGlja3lfY2xhc3MpIHsKICAgICAgICAgICAgaWYgKCQoJy4nICsgbWFpbl9zdGlja3lfY2xhc3MpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBXYXlwb2ludCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJCgnLicgKyBtYWluX3N0aWNreV9jbGFzcykgJiYgdHlwZW9mIFdheXBvaW50LlN0aWNreSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0aWNreSA9IG5ldyBXYXlwb2ludC5TdGlja3koewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogJCgnLicgKyBtYWluX3N0aWNreV9jbGFzcylbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyOiAnPGRpdiBjbGFzcz0ibWFpbi1zdGlja3ktaGVhZGVyLXdyYXBwZXIiPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6ICctMTBweCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVja0NsYXNzOiAnc3RpY2t5LWhlYWRlcicKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBiYWNrVG9Ub3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuc2Nyb2xsVG9wKCkgPiA0MDApIHsKICAgICAgICAgICAgICAgICAgICAkKCcjYmFjay10by10b3AnKS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoJyNiYWNrLXRvLXRvcCcpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNiYWNrLXRvLXRvcCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJzBweCcKICAgICAgICAgICAgICAgIH0sIDgwMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIHBvcHVwSW1hZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyBwb3B1cAogICAgICAgICAgICAkKCIucG9wdXAtaW1hZ2UiKS5tYWduaWZpY1BvcHVwKHsKICAgICAgICAgICAgICAgIHR5cGU6ICdpbWFnZScKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJy5wb3B1cC12aWRlbycpLm1hZ25pZmljUG9wdXAoewogICAgICAgICAgICAgICAgZGlzYWJsZU9uOiA3MDAsCiAgICAgICAgICAgICAgICB0eXBlOiAnaWZyYW1lJywKICAgICAgICAgICAgICAgIG1haW5DbGFzczogJ21mcC1mYWRlJywKICAgICAgICAgICAgICAgIHJlbW92YWxEZWxheTogMTYwLAogICAgICAgICAgICAgICAgcHJlbG9hZGVyOiBmYWxzZSwKICAgICAgICAgICAgICAgIGZpeGVkQ29udGVudFBvczogZmFsc2UKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcud2lkZ2V0LWdhbGxlcnknKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRhZ0lEID0gJCh0aGlzKS5hdHRyKCdpZCcpOwogICAgICAgICAgICAgICAgJCgnIycgKyB0YWdJRCkubWFnbmlmaWNQb3B1cCh7CiAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6ICcucG9wdXAtaW1hZ2UtZ2FsbGVyeScsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2ltYWdlJywKICAgICAgICAgICAgICAgICAgICB0TG9hZGluZzogJ0xvYWRpbmcgaW1hZ2UgIyVjdXJyJS4uLicsCiAgICAgICAgICAgICAgICAgICAgbWFpbkNsYXNzOiAnbWZwLWltZy1tb2JpbGUnLAogICAgICAgICAgICAgICAgICAgIGdhbGxlcnk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVCeUltZ0NsaWNrOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkOiBbMCwgMV0gLy8gV2lsbCBwcmVsb2FkIDAgLSBiZWZvcmUgY3VycmVudCwgYW5kIDEgYWZ0ZXIgdGhlIGN1cnJlbnQgaW1hZ2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBwcmVsb2FkU2l0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIHByZWxvYWQgcGFnZQogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCQoJ2JvZHknKS5oYXNDbGFzcygnYXB1cy1ib2R5LWxvYWRpbmcnKSkgewogICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5yZW1vdmVDbGFzcygnYXB1cy1ib2R5LWxvYWRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAkKCcuYXB1cy1wYWdlLWxvYWRpbmcnKS5mYWRlT3V0KDEwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgfSwKCiAgICAgICAgYWN0aXZlQWNjb3JkaW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCgnLnBhbmVsLWNvbGxhcHNlJykub24oJ3Nob3cuYnMuY29sbGFwc2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQodGhpcykuc2libGluZ3MoJy5wYW5lbC1oZWFkaW5nJykuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJy5wYW5lbC1jb2xsYXBzZScpLm9uKCdoaWRlLmJzLmNvbGxhcHNlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnNpYmxpbmdzKCcucGFuZWwtaGVhZGluZycpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgaW5pdE1vYmlsZU1lbnU6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgLy8gbWVudQogICAgICAgICAgICB2YXIgbW9iaWxlbWVudSA9ICQoIiNuYXZiYXItb2ZmY2FudmFzIikubW1lbnUoewogICAgICAgICAgICAgICAgb2ZmQ2FudmFzOiB0cnVlLAogICAgICAgICAgICAgICAgbmF2YmFyOiB7CiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvbWVvX2FqYXgubW1lbnVfdGl0bGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgb2ZmQ2FudmFzOiB7CiAgICAgICAgICAgICAgICAgICAgcGFnZVNlbGVjdG9yOiAiI3dyYXBwZXItaGlkZGVuIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIHNpZGViYXIgbW9iaWxlICAgICAgICAgICAgCiAgICAgICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLm1vYmlsZS1zaWRlYmFyLWJ0bicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCQoJy5zaWRlYmFyLWxlZnQnKS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnLnNpZGViYXItbGVmdCcpLnRvZ2dsZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJCgnLnNpZGViYXItcmlnaHQnKS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnLnNpZGViYXItcmlnaHQnKS50b2dnbGVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkKCcubW9iaWxlLXNpZGViYXItcGFuZWwtb3ZlcmxheScpLnRvZ2dsZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgICQoJy5tb2JpbGUtc2lkZWJhci1idG4gaScpLnRvZ2dsZUNsYXNzKCd0aS1tZW51LWFsdCB0aS1jbG9zZScpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnYm9keScpLm9uKCdjbGljaycsICcubW9iaWxlLXNpZGViYXItcGFuZWwtb3ZlcmxheSwgLmNsb3NlLXNpZGViYXItYnRuJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoJCgnLnNpZGViYXItbGVmdCcpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAkKCcuc2lkZWJhci1sZWZ0JykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKCcuc2lkZWJhci1yaWdodCcpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAkKCcuc2lkZWJhci1yaWdodCcpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICQoJy5tb2JpbGUtc2lkZWJhci1wYW5lbC1vdmVybGF5JykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgJCgnLm1vYmlsZS1zaWRlYmFyLWJ0biBpJykudG9nZ2xlQ2xhc3MoJ3RpLW1lbnUtYWx0IHRpLWNsb3NlJyk7CiAgICAgICAgICAgIH0pOwoKCiAgICAgICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSA8IDk5MikgewogICAgICAgICAgICAgICAgaWYgKCQoJy5zaWRlYmFyLXdyYXBwZXI6bm90KC5vZmZjYW52YXMtZmlsdGVyLXNpZGViYXIpID4gLnNpZGViYXItcmlnaHQsIC5zaWRlYmFyLXdyYXBwZXI6bm90KC5vZmZjYW52YXMtZmlsdGVyLXNpZGViYXIpID4gLnNpZGViYXItbGVmdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHZhciBwcyA9IG5ldyBQZXJmZWN0U2Nyb2xsYmFyKCcuc2lkZWJhci13cmFwcGVyOm5vdCgub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyKSA+IC5zaWRlYmFyLXJpZ2h0LCAuc2lkZWJhci13cmFwcGVyOm5vdCgub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyKSA+IC5zaWRlYmFyLWxlZnQnLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoZWVsUHJvcGFnYXRpb246IHRydWUKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJCh3aW5kb3cpLnNjcm9sbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSA8PSA2MDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJCgnI3dwYWRtaW5iYXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkbWluX2Jhcl9oID0gJCgnI3dwYWRtaW5iYXInKS5vdXRlckhlaWdodCgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsX2ggPSAkKHRoaXMpLnNjcm9sbFRvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsX2ggPiBhZG1pbl9iYXJfaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmFkbWluLWJhciAuaGVhZGVyLW1vYmlsZScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCc6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9IGFkbWluX2Jhcl9oIC0gc2Nyb2xsX2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuYWRtaW4tYmFyIC5oZWFkZXItbW9iaWxlJykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9wJzogdG9wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBtYWluTWVudUluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCcuYXB1cy1tZWdhbWVudSAubWVnYW1lbnUgLmhhcy1tZWdhLW1lbnUuYWxpZ25lZC1mdWxsd2lkdGgnKS5lYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgaSA9ICR0aGlzLmNsb3Nlc3QoIi5lbGVtZW50b3ItY29udGFpbmVyIiksCiAgICAgICAgICAgICAgICAgICAgYSA9ICR0aGlzLmNsb3Nlc3QoJy5hcHVzLW1lZ2FtZW51Jyk7CiAgICAgICAgICAgICAgICAkdGhpcy5vbignaG92ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbSA9ICQodGhpcykuZmluZCgnPiAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24tbWVudS1pbm5lcicpLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gaS53aWR0aCgpOwoKICAgICAgICAgICAgICAgICAgICBtLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3LAogICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiBpLm9mZnNldCgpLmxlZnQgLSBhLm9mZnNldCgpLmxlZnQKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJy5lbGVtZW50b3ItZWxlbWVudCcpLmFkZENsYXNzKCduby10cmFuc3BhcmVudCcpOwogICAgICAgICAgICB9KTsKICAgICAgICB9LAoKICAgICAgICBzZXRDb29raWU6IGZ1bmN0aW9uKGNuYW1lLCBjdmFsdWUsIGV4ZGF5cykgewogICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgIGQuc2V0VGltZShkLmdldFRpbWUoKSArIChleGRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwKSk7CiAgICAgICAgICAgIHZhciBleHBpcmVzID0gImV4cGlyZXM9IiArIGQudG9VVENTdHJpbmcoKTsKICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY25hbWUgKyAiPSIgKyBjdmFsdWUgKyAiOyAiICsgZXhwaXJlcyArICI7cGF0aD0vIjsKICAgICAgICB9LAogICAgICAgIGdldENvb2tpZTogZnVuY3Rpb24oY25hbWUpIHsKICAgICAgICAgICAgdmFyIG5hbWUgPSBjbmFtZSArICI9IjsKICAgICAgICAgICAgdmFyIGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBjID0gY2FbaV07CiAgICAgICAgICAgICAgICB3aGlsZSAoYy5jaGFyQXQoMCkgPT0gJyAnKSBjID0gYy5zdWJzdHJpbmcoMSk7CiAgICAgICAgICAgICAgICBpZiAoYy5pbmRleE9mKG5hbWUpID09IDApIHJldHVybiBjLnN1YnN0cmluZyhuYW1lLmxlbmd0aCwgYy5sZW5ndGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICB9CiAgICB9CgogICAgJC5hcHVzVGhlbWVDb3JlID0gQXB1c1RoZW1lQ29yZS5wcm90b3R5cGU7CgogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gSW5pdGlhbGl6ZSBzY3JpcHQKICAgICAgICB2YXIgYXB1c3RoZW1lY29yZV9pbml0ID0gbmV3IEFwdXNUaGVtZUNvcmUoKTsKICAgICAgICBhcHVzdGhlbWVjb3JlX2luaXQuaW5pdCgpOwogICAgfSk7CgogICAgalF1ZXJ5KHdpbmRvdykub24oImVsZW1lbnRvci9mcm9udGVuZC9pbml0IiwgZnVuY3Rpb24oKSB7CgogICAgICAgIHZhciBhcHVzdGhlbWVjb3JlX2luaXQgPSBuZXcgQXB1c1RoZW1lQ29yZSgpOwoKICAgICAgICAvLyBHZW5lcmFsIGVsZW1lbnQKICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5hZGRBY3Rpb24oImZyb250ZW5kL2VsZW1lbnRfcmVhZHkvYXB1c19lbGVtZW50X2JyYW5kcy5kZWZhdWx0IiwKICAgICAgICAgICAgZnVuY3Rpb24oJHNjb3BlKSB7CiAgICAgICAgICAgICAgICBhcHVzdGhlbWVjb3JlX2luaXQuaW5pdFNsaWNrKCRzY29wZS5maW5kKCcuc2xpY2stY2Fyb3VzZWwnKSk7CiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5hZGRBY3Rpb24oImZyb250ZW5kL2VsZW1lbnRfcmVhZHkvYXB1c19lbGVtZW50X2ZlYXR1cmVzX2JveC5kZWZhdWx0IiwKICAgICAgICAgICAgZnVuY3Rpb24oJHNjb3BlKSB7CiAgICAgICAgICAgICAgICBhcHVzdGhlbWVjb3JlX2luaXQuaW5pdFNsaWNrKCRzY29wZS5maW5kKCcuc2xpY2stY2Fyb3VzZWwnKSk7CiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5hZGRBY3Rpb24oImZyb250ZW5kL2VsZW1lbnRfcmVhZHkvYXB1c19lbGVtZW50X2luc3RhZ3JhbS5kZWZhdWx0IiwKICAgICAgICAgICAgZnVuY3Rpb24oJHNjb3BlKSB7CiAgICAgICAgICAgICAgICBhcHVzdGhlbWVjb3JlX2luaXQuaW5pdFNsaWNrKCRzY29wZS5maW5kKCcuc2xpY2stY2Fyb3VzZWwnKSk7CiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5hZGRBY3Rpb24oImZyb250ZW5kL2VsZW1lbnRfcmVhZHkvYXB1c19lbGVtZW50X3Bvc3RzLmRlZmF1bHQiLAogICAgICAgICAgICBmdW5jdGlvbigkc2NvcGUpIHsKICAgICAgICAgICAgICAgIGFwdXN0aGVtZWNvcmVfaW5pdC5pbml0U2xpY2soJHNjb3BlLmZpbmQoJy5zbGljay1jYXJvdXNlbCcpKTsKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbigiZnJvbnRlbmQvZWxlbWVudF9yZWFkeS9hcHVzX2VsZW1lbnRfdGVzdGltb25pYWxzLmRlZmF1bHQiLAogICAgICAgICAgICBmdW5jdGlvbigkc2NvcGUpIHsKICAgICAgICAgICAgICAgIGFwdXN0aGVtZWNvcmVfaW5pdC5pbml0U2xpY2soJHNjb3BlLmZpbmQoJy5zbGljay1jYXJvdXNlbCcpKTsKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIC8vIHJlYWwgZXN0YXRlIGVsZW1lbnRzCiAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYWRkQWN0aW9uKCJmcm9udGVuZC9lbGVtZW50X3JlYWR5L2FwdXNfZWxlbWVudF9yZWFsZXN0YXRlX2FnZW5jaWVzLmRlZmF1bHQiLAogICAgICAgICAgICBmdW5jdGlvbigkc2NvcGUpIHsKICAgICAgICAgICAgICAgIGFwdXN0aGVtZWNvcmVfaW5pdC5pbml0U2xpY2soJHNjb3BlLmZpbmQoJy5zbGljay1jYXJvdXNlbCcpKTsKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbigiZnJvbnRlbmQvZWxlbWVudF9yZWFkeS9hcHVzX2VsZW1lbnRfcmVhbGVzdGF0ZV9hZ2VudHMuZGVmYXVsdCIsCiAgICAgICAgICAgIGZ1bmN0aW9uKCRzY29wZSkgewogICAgICAgICAgICAgICAgYXB1c3RoZW1lY29yZV9pbml0LmluaXRTbGljaygkc2NvcGUuZmluZCgnLnNsaWNrLWNhcm91c2VsJykpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYWRkQWN0aW9uKCJmcm9udGVuZC9lbGVtZW50X3JlYWR5L2FwdXNfZWxlbWVudF9yZWFsZXN0YXRlX3Byb3BlcnRpZXMuZGVmYXVsdCIsCiAgICAgICAgICAgIGZ1bmN0aW9uKCRzY29wZSkgewogICAgICAgICAgICAgICAgYXB1c3RoZW1lY29yZV9pbml0LmluaXRTbGljaygkc2NvcGUuZmluZCgnLnNsaWNrLWNhcm91c2VsJykpOwogICAgICAgICAgICAgICAgYXB1c3RoZW1lY29yZV9pbml0LmxheXp5TG9hZEltYWdlKCk7CiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5hZGRBY3Rpb24oImZyb250ZW5kL2VsZW1lbnRfcmVhZHkvYXB1c19lbGVtZW50X3JlYWxlc3RhdGVfcHJvcGVydGllc190YWJzLmRlZmF1bHQiLAogICAgICAgICAgICBmdW5jdGlvbigkc2NvcGUpIHsKICAgICAgICAgICAgICAgIGFwdXN0aGVtZWNvcmVfaW5pdC5pbml0U2xpY2soJHNjb3BlLmZpbmQoJy5zbGljay1jYXJvdXNlbCcpKTsKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbigiZnJvbnRlbmQvZWxlbWVudF9yZWFkeS9hcHVzX2VsZW1lbnRfcmVhbGVzdGF0ZV9wcm9wZXJ0aWVzX3NsaWRlci5kZWZhdWx0IiwKICAgICAgICAgICAgZnVuY3Rpb24oJHNjb3BlKSB7CiAgICAgICAgICAgICAgICBhcHVzdGhlbWVjb3JlX2luaXQuaW5pdFNsaWNrKCRzY29wZS5maW5kKCcuc2xpY2stY2Fyb3VzZWwnKSk7CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfSk7Cgp9KShqUXVlcnkpOw=="}},"time_used":981,"timings":{"blocked":886,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/ui/slider.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.441Z","timestamp":1785145482441,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/jquery/ui/slider.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Thu, 03 Feb 2022 00:04:02 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=1.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":10750,"size_decoded":3764,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (10571)","md5":"49cde5e6fac6c9450b87e3a4b7beb3a0","sha1":"7035ed9cb54c0f65c75f32e24926f486e845850a","sha256":"45ad602a77364ffb8bb717c9b1dd8431d8fcf91bfdeba4d2fbba3968f83de1d9","sha512":"5250e87f66cc01757a2ef62223392d22f374fe9d4af660a204d6fcbc3f2a24ea26c5c652d76184c0b5ee6dd6c6a9091a7eddddc66e290a6ca240130bfaa721a5","ssdeep":"192:6eASBogU9cCX7Wxcf5tI/6wgFKklFhtJAOnvY3yspt:6eAyPU9c/cn3Ct","tlshash":"4522744a320a2b015b9bd271653da8cbd77752c8a90449dcb074dfce485cf4992ebfb8","first_seen":"2023-03-07T01:34:38Z","last_seen":"2026-07-27T09:45:50.95204Z","times_seen":355,"resource_available":true,"data":"LyohCiAqIGpRdWVyeSBVSSBTbGlkZXIgMS4xMy4xCiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICoKICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqLwohZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwiLi9tb3VzZSIsIi4vY29yZSJdLGUpOmUoalF1ZXJ5KX0oZnVuY3Rpb24obyl7InVzZSBzdHJpY3QiO3JldHVybiBvLndpZGdldCgidWkuc2xpZGVyIixvLnVpLm1vdXNlLHt2ZXJzaW9uOiIxLjEzLjEiLHdpZGdldEV2ZW50UHJlZml4OiJzbGlkZSIsb3B0aW9uczp7YW5pbWF0ZTohMSxjbGFzc2VzOnsidWktc2xpZGVyIjoidWktY29ybmVyLWFsbCIsInVpLXNsaWRlci1oYW5kbGUiOiJ1aS1jb3JuZXItYWxsIiwidWktc2xpZGVyLXJhbmdlIjoidWktY29ybmVyLWFsbCB1aS13aWRnZXQtaGVhZGVyIn0sZGlzdGFuY2U6MCxtYXg6MTAwLG1pbjowLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixyYW5nZTohMSxzdGVwOjEsdmFsdWU6MCx2YWx1ZXM6bnVsbCxjaGFuZ2U6bnVsbCxzbGlkZTpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxudW1QYWdlczo1LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX21vdXNlU2xpZGluZz0hMSx0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX2hhbmRsZUluZGV4PW51bGwsdGhpcy5fZGV0ZWN0T3JpZW50YXRpb24oKSx0aGlzLl9tb3VzZUluaXQoKSx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLl9hZGRDbGFzcygidWktc2xpZGVyIHVpLXNsaWRlci0iK3RoaXMub3JpZW50YXRpb24sInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCIpLHRoaXMuX3JlZnJlc2goKSx0aGlzLl9hbmltYXRlT2ZmPSExfSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXMuX2NyZWF0ZVJhbmdlKCksdGhpcy5fY3JlYXRlSGFuZGxlcygpLHRoaXMuX3NldHVwRXZlbnRzKCksdGhpcy5fcmVmcmVzaFZhbHVlKCl9LF9jcmVhdGVIYW5kbGVzOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLm9wdGlvbnMsaT10aGlzLmVsZW1lbnQuZmluZCgiLnVpLXNsaWRlci1oYW5kbGUiKSxzPVtdLGE9dC52YWx1ZXMmJnQudmFsdWVzLmxlbmd0aHx8MTtmb3IoaS5sZW5ndGg+YSYmKGkuc2xpY2UoYSkucmVtb3ZlKCksaT1pLnNsaWNlKDAsYSkpLGU9aS5sZW5ndGg7ZTxhO2UrKylzLnB1c2goIjxzcGFuIHRhYmluZGV4PScwJz48L3NwYW4+Iik7dGhpcy5oYW5kbGVzPWkuYWRkKG8ocy5qb2luKCIiKSkuYXBwZW5kVG8odGhpcy5lbGVtZW50KSksdGhpcy5fYWRkQ2xhc3ModGhpcy5oYW5kbGVzLCJ1aS1zbGlkZXItaGFuZGxlIiwidWktc3RhdGUtZGVmYXVsdCIpLHRoaXMuaGFuZGxlPXRoaXMuaGFuZGxlcy5lcSgwKSx0aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihlKXtvKHRoaXMpLmRhdGEoInVpLXNsaWRlci1oYW5kbGUtaW5kZXgiLGUpLmF0dHIoInRhYkluZGV4IiwwKX0pfSxfY3JlYXRlUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7ZS5yYW5nZT8oITA9PT1lLnJhbmdlJiYoZS52YWx1ZXM/ZS52YWx1ZXMubGVuZ3RoJiYyIT09ZS52YWx1ZXMubGVuZ3RoP2UudmFsdWVzPVtlLnZhbHVlc1swXSxlLnZhbHVlc1swXV06QXJyYXkuaXNBcnJheShlLnZhbHVlcykmJihlLnZhbHVlcz1lLnZhbHVlcy5zbGljZSgwKSk6ZS52YWx1ZXM9W3RoaXMuX3ZhbHVlTWluKCksdGhpcy5fdmFsdWVNaW4oKV0pLHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UubGVuZ3RoPyh0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLnJhbmdlLCJ1aS1zbGlkZXItcmFuZ2UtbWluIHVpLXNsaWRlci1yYW5nZS1tYXgiKSx0aGlzLnJhbmdlLmNzcyh7bGVmdDoiIixib3R0b206IiJ9KSk6KHRoaXMucmFuZ2U9bygiPGRpdj4iKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLHRoaXMuX2FkZENsYXNzKHRoaXMucmFuZ2UsInVpLXNsaWRlci1yYW5nZSIpKSwibWluIiE9PWUucmFuZ2UmJiJtYXgiIT09ZS5yYW5nZXx8dGhpcy5fYWRkQ2xhc3ModGhpcy5yYW5nZSwidWktc2xpZGVyLXJhbmdlLSIrZS5yYW5nZSkpOih0aGlzLnJhbmdlJiZ0aGlzLnJhbmdlLnJlbW92ZSgpLHRoaXMucmFuZ2U9bnVsbCl9LF9zZXR1cEV2ZW50czpmdW5jdGlvbigpe3RoaXMuX29mZih0aGlzLmhhbmRsZXMpLHRoaXMuX29uKHRoaXMuaGFuZGxlcyx0aGlzLl9oYW5kbGVFdmVudHMpLHRoaXMuX2hvdmVyYWJsZSh0aGlzLmhhbmRsZXMpLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLmhhbmRsZXMpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlcy5yZW1vdmUoKSx0aGlzLnJhbmdlJiZ0aGlzLnJhbmdlLnJlbW92ZSgpLHRoaXMuX21vdXNlRGVzdHJveSgpfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGUpe3ZhciBpLHMsYSxuLHQsaCxsPXRoaXMscj10aGlzLm9wdGlvbnM7cmV0dXJuIXIuZGlzYWJsZWQmJih0aGlzLmVsZW1lbnRTaXplPXt3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKX0sdGhpcy5lbGVtZW50T2Zmc2V0PXRoaXMuZWxlbWVudC5vZmZzZXQoKSxoPXt4OmUucGFnZVgseTplLnBhZ2VZfSxpPXRoaXMuX25vcm1WYWx1ZUZyb21Nb3VzZShoKSxzPXRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSsxLHRoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PU1hdGguYWJzKGktbC52YWx1ZXMoZSkpOyh0PHN8fHM9PT10JiYoZT09PWwuX2xhc3RDaGFuZ2VkVmFsdWV8fGwudmFsdWVzKGUpPT09ci5taW4pKSYmKHM9dCxhPW8odGhpcyksbj1lKX0pLCExIT09dGhpcy5fc3RhcnQoZSxuKSYmKHRoaXMuX21vdXNlU2xpZGluZz0hMCx0aGlzLl9oYW5kbGVJbmRleD1uLHRoaXMuX2FkZENsYXNzKGEsbnVsbCwidWktc3RhdGUtYWN0aXZlIiksYS50cmlnZ2VyKCJmb2N1cyIpLHQ9YS5vZmZzZXQoKSxoPSFvKGUudGFyZ2V0KS5wYXJlbnRzKCkuYWRkQmFjaygpLmlzKCIudWktc2xpZGVyLWhhbmRsZSIpLHRoaXMuX2NsaWNrT2Zmc2V0PWg/e2xlZnQ6MCx0b3A6MH06e2xlZnQ6ZS5wYWdlWC10LmxlZnQtYS53aWR0aCgpLzIsdG9wOmUucGFnZVktdC50b3AtYS5oZWlnaHQoKS8yLShwYXJzZUludChhLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLShwYXJzZUludChhLmNzcygiYm9yZGVyQm90dG9tV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChhLmNzcygibWFyZ2luVG9wIiksMTApfHwwKX0sdGhpcy5oYW5kbGVzLmhhc0NsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfHx0aGlzLl9zbGlkZShlLG4saSksdGhpcy5fYW5pbWF0ZU9mZj0hMCkpfSxfbW91c2VTdGFydDpmdW5jdGlvbigpe3JldHVybiEwfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGUpe3ZhciB0PXt4OmUucGFnZVgseTplLnBhZ2VZfSx0PXRoaXMuX25vcm1WYWx1ZUZyb21Nb3VzZSh0KTtyZXR1cm4gdGhpcy5fc2xpZGUoZSx0aGlzLl9oYW5kbGVJbmRleCx0KSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5oYW5kbGVzLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMuX21vdXNlU2xpZGluZz0hMSx0aGlzLl9zdG9wKGUsdGhpcy5faGFuZGxlSW5kZXgpLHRoaXMuX2NoYW5nZShlLHRoaXMuX2hhbmRsZUluZGV4KSx0aGlzLl9oYW5kbGVJbmRleD1udWxsLHRoaXMuX2NsaWNrT2Zmc2V0PW51bGwsdGhpcy5fYW5pbWF0ZU9mZj0hMX0sX2RldGVjdE9yaWVudGF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5vcmllbnRhdGlvbj0idmVydGljYWwiPT09dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uPyJ2ZXJ0aWNhbCI6Imhvcml6b250YWwifSxfbm9ybVZhbHVlRnJvbU1vdXNlOmZ1bmN0aW9uKGUpe3ZhciB0LGU9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj8odD10aGlzLmVsZW1lbnRTaXplLndpZHRoLGUueC10aGlzLmVsZW1lbnRPZmZzZXQubGVmdC0odGhpcy5fY2xpY2tPZmZzZXQ/dGhpcy5fY2xpY2tPZmZzZXQubGVmdDowKSk6KHQ9dGhpcy5lbGVtZW50U2l6ZS5oZWlnaHQsZS55LXRoaXMuZWxlbWVudE9mZnNldC50b3AtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LnRvcDowKSksZT1lL3Q7cmV0dXJuKGU9MTxlPzE6ZSk8MCYmKGU9MCksInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJihlPTEtZSksdD10aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCksdD10aGlzLl92YWx1ZU1pbigpK2UqdCx0aGlzLl90cmltQWxpZ25WYWx1ZSh0KX0sX3VpSGFzaDpmdW5jdGlvbihlLHQsaSl7dmFyIHM9e2hhbmRsZTp0aGlzLmhhbmRsZXNbZV0saGFuZGxlSW5kZXg6ZSx2YWx1ZTp2b2lkIDAhPT10P3Q6dGhpcy52YWx1ZSgpfTtyZXR1cm4gdGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKSYmKHMudmFsdWU9dm9pZCAwIT09dD90OnRoaXMudmFsdWVzKGUpLHMudmFsdWVzPWl8fHRoaXMudmFsdWVzKCkpLHN9LF9oYXNNdWx0aXBsZVZhbHVlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aH0sX3N0YXJ0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3RyaWdnZXIoInN0YXJ0IixlLHRoaXMuX3VpSGFzaCh0KSl9LF9zbGlkZTpmdW5jdGlvbihlLHQsaSl7dmFyIHMsYT10aGlzLnZhbHVlKCksbj10aGlzLnZhbHVlcygpO3RoaXMuX2hhc011bHRpcGxlVmFsdWVzKCkmJihzPXRoaXMudmFsdWVzKHQ/MDoxKSxhPXRoaXMudmFsdWVzKHQpLDI9PT10aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCYmITA9PT10aGlzLm9wdGlvbnMucmFuZ2UmJihpPTA9PT10P01hdGgubWluKHMsaSk6TWF0aC5tYXgocyxpKSksblt0XT1pKSxpIT09YSYmITEhPT10aGlzLl90cmlnZ2VyKCJzbGlkZSIsZSx0aGlzLl91aUhhc2godCxpLG4pKSYmKHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk/dGhpcy52YWx1ZXModCxpKTp0aGlzLnZhbHVlKGkpKX0sX3N0b3A6ZnVuY3Rpb24oZSx0KXt0aGlzLl90cmlnZ2VyKCJzdG9wIixlLHRoaXMuX3VpSGFzaCh0KSl9LF9jaGFuZ2U6ZnVuY3Rpb24oZSx0KXt0aGlzLl9rZXlTbGlkaW5nfHx0aGlzLl9tb3VzZVNsaWRpbmd8fCh0aGlzLl9sYXN0Q2hhbmdlZFZhbHVlPXQsdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLHRoaXMuX3VpSGFzaCh0KSkpfSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3RyaW1BbGlnblZhbHVlKGUpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHZvaWQgdGhpcy5fY2hhbmdlKG51bGwsMCkpOnRoaXMuX3ZhbHVlKCl9LHZhbHVlczpmdW5jdGlvbihlLHQpe3ZhciBpLHMsYTtpZigxPGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXNbZV09dGhpcy5fdHJpbUFsaWduVmFsdWUodCksdGhpcy5fcmVmcmVzaFZhbHVlKCksdm9pZCB0aGlzLl9jaGFuZ2UobnVsbCxlKTtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fdmFsdWVzKCk7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk/dGhpcy5fdmFsdWVzKGUpOnRoaXMudmFsdWUoKTtmb3IoaT10aGlzLm9wdGlvbnMudmFsdWVzLHM9ZSxhPTA7YTxpLmxlbmd0aDthKz0xKWlbYV09dGhpcy5fdHJpbUFsaWduVmFsdWUoc1thXSksdGhpcy5fY2hhbmdlKG51bGwsYSk7dGhpcy5fcmVmcmVzaFZhbHVlKCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt2YXIgaSxzPTA7c3dpdGNoKCJyYW5nZSI9PT1lJiYhMD09PXRoaXMub3B0aW9ucy5yYW5nZSYmKCJtaW4iPT09dD8odGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3ZhbHVlcygwKSx0aGlzLm9wdGlvbnMudmFsdWVzPW51bGwpOiJtYXgiPT09dCYmKHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl92YWx1ZXModGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgtMSksdGhpcy5vcHRpb25zLnZhbHVlcz1udWxsKSksQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMudmFsdWVzKSYmKHM9dGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgpLHRoaXMuX3N1cGVyKGUsdCksZSl7Y2FzZSJvcmllbnRhdGlvbiI6dGhpcy5fZGV0ZWN0T3JpZW50YXRpb24oKSx0aGlzLl9yZW1vdmVDbGFzcygidWktc2xpZGVyLWhvcml6b250YWwgdWktc2xpZGVyLXZlcnRpY2FsIikuX2FkZENsYXNzKCJ1aS1zbGlkZXItIit0aGlzLm9yaWVudGF0aW9uKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLm9wdGlvbnMucmFuZ2UmJnRoaXMuX3JlZnJlc2hSYW5nZSh0KSx0aGlzLmhhbmRsZXMuY3NzKCJob3Jpem9udGFsIj09PXQ/ImJvdHRvbSI6ImxlZnQiLCIiKTticmVhaztjYXNlInZhbHVlIjp0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2NoYW5nZShudWxsLDApLHRoaXMuX2FuaW1hdGVPZmY9ITE7YnJlYWs7Y2FzZSJ2YWx1ZXMiOmZvcih0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLGk9cy0xOzA8PWk7aS0tKXRoaXMuX2NoYW5nZShudWxsLGkpO3RoaXMuX2FuaW1hdGVPZmY9ITE7YnJlYWs7Y2FzZSJzdGVwIjpjYXNlIm1pbiI6Y2FzZSJtYXgiOnRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5fY2FsY3VsYXRlTmV3TWF4KCksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5fYW5pbWF0ZU9mZj0hMTticmVhaztjYXNlInJhbmdlIjp0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX3JlZnJlc2goKSx0aGlzLl9hbmltYXRlT2ZmPSExfX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKGUpe3RoaXMuX3N1cGVyKGUpLHRoaXMuX3RvZ2dsZUNsYXNzKG51bGwsInVpLXN0YXRlLWRpc2FibGVkIiwhIWUpfSxfdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMudmFsdWU7cmV0dXJuIGU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSl9LF92YWx1ZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaTtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPXRoaXMub3B0aW9ucy52YWx1ZXNbZV0sZT10aGlzLl90cmltQWxpZ25WYWx1ZShlKTtpZih0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpKXtmb3IodD10aGlzLm9wdGlvbnMudmFsdWVzLnNsaWNlKCksaT0wO2k8dC5sZW5ndGg7aSs9MSl0W2ldPXRoaXMuX3RyaW1BbGlnblZhbHVlKHRbaV0pO3JldHVybiB0fXJldHVybltdfSxfdHJpbUFsaWduVmFsdWU6ZnVuY3Rpb24oZSl7aWYoZTw9dGhpcy5fdmFsdWVNaW4oKSlyZXR1cm4gdGhpcy5fdmFsdWVNaW4oKTtpZihlPj10aGlzLl92YWx1ZU1heCgpKXJldHVybiB0aGlzLl92YWx1ZU1heCgpO3ZhciB0PTA8dGhpcy5vcHRpb25zLnN0ZXA/dGhpcy5vcHRpb25zLnN0ZXA6MSxpPShlLXRoaXMuX3ZhbHVlTWluKCkpJXQsZT1lLWk7cmV0dXJuIDIqTWF0aC5hYnMoaSk+PXQmJihlKz0wPGk/dDotdCkscGFyc2VGbG9hdChlLnRvRml4ZWQoNSkpfSxfY2FsY3VsYXRlTmV3TWF4OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLm1heCx0PXRoaXMuX3ZhbHVlTWluKCksaT10aGlzLm9wdGlvbnMuc3RlcDsoZT1NYXRoLnJvdW5kKChlLXQpL2kpKmkrdCk+dGhpcy5vcHRpb25zLm1heCYmKGUtPWkpLHRoaXMubWF4PXBhcnNlRmxvYXQoZS50b0ZpeGVkKHRoaXMuX3ByZWNpc2lvbigpKSl9LF9wcmVjaXNpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9wcmVjaXNpb25PZih0aGlzLm9wdGlvbnMuc3RlcCk7cmV0dXJuIGU9bnVsbCE9PXRoaXMub3B0aW9ucy5taW4/TWF0aC5tYXgoZSx0aGlzLl9wcmVjaXNpb25PZih0aGlzLm9wdGlvbnMubWluKSk6ZX0sX3ByZWNpc2lvbk9mOmZ1bmN0aW9uKGUpe3ZhciB0PWUudG9TdHJpbmcoKSxlPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09ZT8wOnQubGVuZ3RoLWUtMX0sX3ZhbHVlTWluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW59LF92YWx1ZU1heDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heH0sX3JlZnJlc2hSYW5nZTpmdW5jdGlvbihlKXsidmVydGljYWwiPT09ZSYmdGhpcy5yYW5nZS5jc3Moe3dpZHRoOiIiLGxlZnQ6IiJ9KSwiaG9yaXpvbnRhbCI9PT1lJiZ0aGlzLnJhbmdlLmNzcyh7aGVpZ2h0OiIiLGJvdHRvbToiIn0pfSxfcmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsaSxlLHMsYSxuPXRoaXMub3B0aW9ucy5yYW5nZSxoPXRoaXMub3B0aW9ucyxsPXRoaXMscj0hdGhpcy5fYW5pbWF0ZU9mZiYmaC5hbmltYXRlLHU9e307dGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKT90aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihlKXtpPShsLnZhbHVlcyhlKS1sLl92YWx1ZU1pbigpKS8obC5fdmFsdWVNYXgoKS1sLl92YWx1ZU1pbigpKSoxMDAsdVsiaG9yaXpvbnRhbCI9PT1sLm9yaWVudGF0aW9uPyJsZWZ0IjoiYm90dG9tIl09aSsiJSIsbyh0aGlzKS5zdG9wKDEsMSlbcj8iYW5pbWF0ZSI6ImNzcyJdKHUsaC5hbmltYXRlKSwhMD09PWwub3B0aW9ucy5yYW5nZSYmKCJob3Jpem9udGFsIj09PWwub3JpZW50YXRpb24/KDA9PT1lJiZsLnJhbmdlLnN0b3AoMSwxKVtyPyJhbmltYXRlIjoiY3NzIl0oe2xlZnQ6aSsiJSJ9LGguYW5pbWF0ZSksMT09PWUmJmwucmFuZ2Vbcj8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDppLXQrIiUifSx7cXVldWU6ITEsZHVyYXRpb246aC5hbmltYXRlfSkpOigwPT09ZSYmbC5yYW5nZS5zdG9wKDEsMSlbcj8iYW5pbWF0ZSI6ImNzcyJdKHtib3R0b206aSsiJSJ9LGguYW5pbWF0ZSksMT09PWUmJmwucmFuZ2Vbcj8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6aS10KyIlIn0se3F1ZXVlOiExLGR1cmF0aW9uOmguYW5pbWF0ZX0pKSksdD1pfSk6KGU9dGhpcy52YWx1ZSgpLHM9dGhpcy5fdmFsdWVNaW4oKSxhPXRoaXMuX3ZhbHVlTWF4KCksaT1hIT09cz8oZS1zKS8oYS1zKSoxMDA6MCx1WyJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/ImxlZnQiOiJib3R0b20iXT1pKyIlIix0aGlzLmhhbmRsZS5zdG9wKDEsMSlbcj8iYW5pbWF0ZSI6ImNzcyJdKHUsaC5hbmltYXRlKSwibWluIj09PW4mJiJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW3I/ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6aSsiJSJ9LGguYW5pbWF0ZSksIm1heCI9PT1uJiYiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtyPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOjEwMC1pKyIlIn0saC5hbmltYXRlKSwibWluIj09PW4mJiJ2ZXJ0aWNhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtyPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDppKyIlIn0saC5hbmltYXRlKSwibWF4Ij09PW4mJiJ2ZXJ0aWNhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtyPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDoxMDAtaSsiJSJ9LGguYW5pbWF0ZSkpfSxfaGFuZGxlRXZlbnRzOntrZXlkb3duOmZ1bmN0aW9uKGUpe3ZhciB0LGkscyxhPW8oZS50YXJnZXQpLmRhdGEoInVpLXNsaWRlci1oYW5kbGUtaW5kZXgiKTtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIG8udWkua2V5Q29kZS5IT01FOmNhc2Ugby51aS5rZXlDb2RlLkVORDpjYXNlIG8udWkua2V5Q29kZS5QQUdFX1VQOmNhc2Ugby51aS5rZXlDb2RlLlBBR0VfRE9XTjpjYXNlIG8udWkua2V5Q29kZS5VUDpjYXNlIG8udWkua2V5Q29kZS5SSUdIVDpjYXNlIG8udWkua2V5Q29kZS5ET1dOOmNhc2Ugby51aS5rZXlDb2RlLkxFRlQ6aWYoZS5wcmV2ZW50RGVmYXVsdCgpLCF0aGlzLl9rZXlTbGlkaW5nJiYodGhpcy5fa2V5U2xpZGluZz0hMCx0aGlzLl9hZGRDbGFzcyhvKGUudGFyZ2V0KSxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSwhMT09PXRoaXMuX3N0YXJ0KGUsYSkpKXJldHVybn1zd2l0Y2gocz10aGlzLm9wdGlvbnMuc3RlcCx0PWk9dGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKT90aGlzLnZhbHVlcyhhKTp0aGlzLnZhbHVlKCksZS5rZXlDb2RlKXtjYXNlIG8udWkua2V5Q29kZS5IT01FOmk9dGhpcy5fdmFsdWVNaW4oKTticmVhaztjYXNlIG8udWkua2V5Q29kZS5FTkQ6aT10aGlzLl92YWx1ZU1heCgpO2JyZWFrO2Nhc2Ugby51aS5rZXlDb2RlLlBBR0VfVVA6aT10aGlzLl90cmltQWxpZ25WYWx1ZSh0Kyh0aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkpL3RoaXMubnVtUGFnZXMpO2JyZWFrO2Nhc2Ugby51aS5rZXlDb2RlLlBBR0VfRE9XTjppPXRoaXMuX3RyaW1BbGlnblZhbHVlKHQtKHRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSkvdGhpcy5udW1QYWdlcyk7YnJlYWs7Y2FzZSBvLnVpLmtleUNvZGUuVVA6Y2FzZSBvLnVpLmtleUNvZGUuUklHSFQ6aWYodD09PXRoaXMuX3ZhbHVlTWF4KCkpcmV0dXJuO2k9dGhpcy5fdHJpbUFsaWduVmFsdWUodCtzKTticmVhaztjYXNlIG8udWkua2V5Q29kZS5ET1dOOmNhc2Ugby51aS5rZXlDb2RlLkxFRlQ6aWYodD09PXRoaXMuX3ZhbHVlTWluKCkpcmV0dXJuO2k9dGhpcy5fdHJpbUFsaWduVmFsdWUodC1zKX10aGlzLl9zbGlkZShlLGEsaSl9LGtleXVwOmZ1bmN0aW9uKGUpe3ZhciB0PW8oZS50YXJnZXQpLmRhdGEoInVpLXNsaWRlci1oYW5kbGUtaW5kZXgiKTt0aGlzLl9rZXlTbGlkaW5nJiYodGhpcy5fa2V5U2xpZGluZz0hMSx0aGlzLl9zdG9wKGUsdCksdGhpcy5fY2hhbmdlKGUsdCksdGhpcy5fcmVtb3ZlQ2xhc3MobyhlLnRhcmdldCksbnVsbCwidWktc3RhdGUtYWN0aXZlIikpfX19KX0pOw=="}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/icon-dol2.png","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.874Z","timestamp":1785145485874,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/icon-dol2.png HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/wp-content/themes/homeo/css/template.css?ver=1.0\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:45 GMT\r\nContent-Type: image/png\r\nContent-Length: 791\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 13:00:27 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":791,"size_decoded":1000,"mime_type":"image/png","magic":"PNG image data, 29 x 32, 8-bit/color RGBA, non-interlaced","md5":"831578458a577d807863603097895ee3","sha1":"521f14f7543f6bfdc8387ea91189c1f31ef92cda","sha256":"b5c3f237f7b0e21479d044d480491c6946b9dc1b1df5dfc28c3ee59715505aa5","sha512":"cd75d7580954880882a7ce349876137a37763cc0f01378b77ceb26e0a3341cb5e7065390cda08df795219192f24e5c2811eee2039c347aa5ada6eff7120a87ff","ssdeep":"","tlshash":"740141c4b342a797e53b3cc6a11a1301e8af45a10a67554b54bd8b293c50a982214eb3","first_seen":"2023-05-04T14:40:12Z","last_seen":"2026-07-27T13:54:26.989941Z","times_seen":98,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAB0AAAAgCAYAAADud3N8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAKdSURBVHjavJZLiI5hFMd/7+ebcRufIpnGxLgrNGjInWThklxSlAWhZCEbEisLUha2LIhkJ9lJCmFkSm6JQq5pyDWahfvPwvk03gafMe936unfe57L/z2X5zwnUekAqQOeAl9KWZz7T7IewGHgFLC55F1qe0Yndb16Sx2hJmqT2quU/e0hnKI+UhcFWVHfXz1eyhn5MDgP9PuLu7sDe4HzwPBw7VzgRMw/AZ4Di4HroXsPvE4flKi1QCOwH/jQBtlMYD5wGlgBvAG2BuE9oAvwDLgCHANagN3AS2AqcAfYko7pJbXQhhsSdVm4coKaU+fF9/RW63qr/dSbapW6JlxfnD+k1qRjaio2qKPUO+raSJqh6g11g5r/TayGqwdi/QO1MvTL1LFtkW5Re6rV6tHYVK/2UQ+rzer4sOR3o6BeUxsis3eGflPKMyT+qA5LgKVABdnIGGAPsK8YU+MPcv+IyT9gEh6sVn+5IrsCtwduAxJgY1yldUAnYGVcseVAJbAQ6ArMAaqAGUBPYBLQO6zsCxyJcvnTvQnZy4K4Rk25MpBNBGo6suCXIk1Ac7lJpwK15SZtjLf2p+QzICkA54BBKX034CIwO4vsXR/F/3Ibc6uBW1m4tzKuRh1wNl4hYzQD+SxjOjAKRSE9kc+IMAecifO/pvjMIqZDgJPA1XTDAIwHRmdVBiuAzindKuAGcCGrmH6OtqUFqI7kehz6zGLaWh6l4lqWilSTzuByWPr8T5bOCpwWODlwQiTauMD62DcyHvVh8fODI4EGRBLVxuPeKwpE0pr0bihvh+5e4P3Ah1FNngQ+DXwGfANehCUvA19HwrwFPgHvgI9AQ7HxTtR64CCwo5hdHSxFLzVE9/CjeYpAF92VhbyKTl+A7wMAFyahk2WTt7QAAAAASUVORK5CYII="}},"time_used":96,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/uploads/2021/08/LuxiaRegular.woff","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.906Z","timestamp":1785145485906,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/uploads/2021/08/LuxiaRegular.woff HTTP/1.1\r\nHost: betaroi.ltd\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\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx\r\nDate: Mon, 27 Jul 2026 09:44:45 GMT\r\nContent-Type: font/woff\r\nContent-Length: 76\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:02 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":76,"size_decoded":284,"mime_type":"font/woff","magic":"ASCII text, with no line terminators","md5":"3876af430ef40050d0b63d18e6e897a6","sha1":"f88d48b72d661cee789c40b23468169dab98775b","sha256":"ee20d8b2bf21532193923cf82fe6f4ea40396f8b68157e141dc3c602127eb78e","sha512":"f1ec2a33558b4d43da74d7905f0f5a00c9430d9b407f976647f0cae0ec7217cda55036980afdf534736dcd1da80b9ef17663175da150102f015609975db24cf8","ssdeep":"","tlshash":"e2a022b30fc82300af20caa8f0003e0cca03003f800cc2c2ea0c008c82c0a8000200a8","first_seen":"2026-07-27T08:06:56.450458Z","last_seen":"2026-07-27T09:45:50.928234Z","times_seen":3,"resource_available":false,"data":"Tm8gQ29udGVudDogaHR0cHM6Ly9jd2xhZ29zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMS8wOC9MdXhpYVJlZ3VsYXIud29mZg=="}},"time_used":98,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"s3.tradingview.com/external-embedding/embed-widget-timeline.js","fqdn":"s3.tradingview.com","domain":"tradingview.com","tld":"com"},"ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.374Z","timestamp":1785145482374,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.tradingview.com","organization":""},"issuer":{"commonName":"DigiCert Global G2 TLS RSA SHA256 2020 CA1","organization":"DigiCert Inc"},"validity":{"start":"Tue, 21 Oct 2025 00:00:00 GMT","end":"Tue, 17 Nov 2026 23:59:59 GMT"},"fingerprint":{"sha1":"C4:FE:64:00:30:2A:CD:16:30:95:7E:E1:70:D1:31:3A:D6:33:3A:CC","sha256":"87:D2:67:7D:3E:02:F0:3B:58:BD:38:17:DA:FE:73:C0:CA:25:F9:58:CC:11:14:E0:3A:6E:C3:58:84:9E:BF:52"}}},"request":{"raw":"GET /external-embedding/embed-widget-timeline.js HTTP/1.1\r\nHost: s3.tradingview.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://betaroi.ltd/\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\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: text/javascript\r\nserver: BunnyCDN-NO1-830\r\ncdn-pullzone: 1837468\r\ncdn-requestcountrycode: NO\r\nvary: Accept-Encoding\r\naccess-control-allow-methods: GET\r\naccess-control-allow-origin: *\r\naccess-control-max-age: 3000\r\ncache-control: public, max-age=300\r\ncontent-encoding: zstd\r\netag: \"45fde7c9b5fe73225f39ad186531ae50\"\r\nlast-modified: Fri, 24 Jul 2026 10:29:31 GMT\r\nx-amz-id-2: tuoaDwWlx+XLLUiFepJTJsa0RVMPUYd27xnBi+XyaSVZLuFZY5G9WC6Snu2AhGIYYOh0tafcy/UboK6lfdhyn4+HQoBIW/rF\r\nx-amz-request-id: FDZ34VXJ6S6YXHPR\r\nx-amz-server-side-encryption: AES256\r\nx-amz-version-id: R.yZjsO3e4Fm1HID.Ff3OAIzWkgFhNny\r\ncdn-proxyver: 1.58\r\ncdn-requestpullcode: 200\r\ncdn-requestpullsuccess: True\r\ncdn-edgestorageid: 830\r\ncontent-security-policy: default-src 'none'\r\ncdn-cachedat: 07/24/2026 10:31:56\r\ncdn-status: 200\r\ncdn-requesttime: 0\r\ncdn-requestid: 95bd4fa03cb80d815b5bb5351266c5be\r\ncdn-cache: HIT\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]}],"data":{"size":13397,"size_decoded":6191,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (3458)","md5":"45fde7c9b5fe73225f39ad186531ae50","sha1":"b91437d3352f7dd8837afe887ace22fe90baa81e","sha256":"16109a716500895b8fd1cb8a20b8cb6b361b9f67433db420d47af19a222d8643","sha512":"aa4ebb4663ea67325d359a985581e77385865f9469415de45528fe183d217cc2d128e2209f14a6f5489e86cf41dc5c6d2337bc87f24204a333c47a0709c05840","ssdeep":"384:gf6uCWoofYkFdjhUjrb26n0q6OlmaRMViZMEaGT:uD5Unb26nD6OlmaRkFEJT","tlshash":"e252d7a9b660dcbd41d945dba07a2321b61d3a48b207aca4b5ece4c510fdccca531f7e","first_seen":"2026-07-23T06:14:49.706446Z","last_seen":"2026-07-27T14:14:25.315542Z","times_seen":135,"resource_available":true,"data":"KCgpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQodCxlKXtpZihudWxsPT09dCl0aHJvdyBuZXcgRXJyb3IoYCR7ZT8/IlZhbHVlIn0gaXMgbnVsbGApO3JldHVybiB0fWNvbnN0IGU9eyJjb2xvci1jb2xkLWdyYXktMzAwIjoiI0IyQjVCRSIsImNvbG9yLWJyYW5kIjoiIzI5NjJGRiIsImNvbG9yLWJyYW5kLWhvdmVyIjoiIzFFNTNFNSIsImNvbG9yLWJyYW5kLWFjdGl2ZSI6IiMxODQ4Q0MifQo7Y29uc3QgaT1KU09OLnBhcnNlKCd7ImNyeXB0by1ta3Qtc2NyZWVuZXIiOnsid2lkdGgiOjEwMDAsImhlaWdodCI6NDkwLCJkZWZhdWx0Q29sdW1uIjoib3ZlcnZpZXciLCJtYXJrZXQiOiJjcnlwdG8iLCJzY3JlZW5lcl90eXBlIjoiY3J5cHRvX21rdCIsImRpc3BsYXlDdXJyZW5jeSI6IlVTRCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwiZXZlbnRzIjp7IndpZHRoIjo1MTAsImhlaWdodCI6NjAwLCJpc1RyYW5zcGFyZW50IjpmYWxzZSwiaGlkZUltcG9ydGFuY2VJbmRpY2F0b3IiOmZhbHNlLCJhdXRvc2l6ZSI6ZmFsc2V9LCJmb3JleC1jcm9zcy1yYXRlcyI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImN1cnJlbmNpZXMiOlsiRVVSIiwiVVNEIiwiSlBZIiwiR0JQIiwiQ0hGIiwiQVVEIiwiQ0FEIiwiTlpEIl0sImZyYW1lRWxlbWVudElkIjpudWxsLCJhdXRvc2l6ZSI6ZmFsc2V9LCJmb3JleC1oZWF0LW1hcCI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImN1cnJlbmNpZXMiOlsiRVVSIiwiVVNEIiwiSlBZIiwiR0JQIiwiQ0hGIiwiQVVEIiwiQ0FEIiwiTlpEIiwiQ05ZIl0sImZyYW1lRWxlbWVudElkIjpudWxsLCJhdXRvc2l6ZSI6ZmFsc2V9LCJob3RsaXN0cyI6eyJ3aWR0aCI6NDAwLCJoZWlnaHQiOjYwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImRhdGVSYW5nZSI6IjEyTSIsInNob3dTeW1ib2xMb2dvIjpmYWxzZX0sIm1hcmtldC1vdmVydmlldyI6eyJ3aWR0aCI6NDAwLCJoZWlnaHQiOjY1MCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImRhdGVSYW5nZSI6IjEyTSIsInNob3dTeW1ib2xMb2dvIjp0cnVlfSwibWFya2V0LXF1b3RlcyI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQ1MCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsInNob3dTeW1ib2xMb2dvIjpmYWxzZX0sIm1pbmktc3ltYm9sLW92ZXJ2aWV3Ijp7IndpZHRoIjozNTAsImhlaWdodCI6MjIwLCJzeW1ib2wiOiJGWDpFVVJVU0QiLCJkYXRlUmFuZ2UiOiIxMk0iLCJpc1RyYW5zcGFyZW50IjpmYWxzZSwiYXV0b3NpemUiOmZhbHNlLCJsYXJnZUNoYXJ0VXJsIjoiIn0sInN5bWJvbC1vdmVydmlldyI6eyJ3aWR0aCI6MTAwMCwiaGVpZ2h0Ijo1MDAsInN5bWJvbHMiOltbIkFwcGxlIiwiQUFQTHwxRCJdLFsiR29vZ2xlIiwiR09PR0x8MUQiXSxbIk1pY3Jvc29mdCIsIk1TRlR8MUQiXV0sImF1dG9zaXplIjpmYWxzZSwiY2hhcnRPbmx5IjpmYWxzZSwiaGlkZURhdGVSYW5nZXMiOmZhbHNlLCJoaWRlTWFya2V0U3RhdHVzIjpmYWxzZSwiaGlkZVN5bWJvbExvZ28iOmZhbHNlLCJzY2FsZVBvc2l0aW9uIjoicmlnaHQiLCJzY2FsZU1vZGUiOiJOb3JtYWwiLCJmb250RmFtaWx5IjoiLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBUcmVidWNoZXQgTVMsIFJvYm90bywgVWJ1bnR1LCBzYW5zLXNlcmlmIiwiZm9udFNpemUiOiIxMCIsIm5vVGltZVNjYWxlIjpmYWxzZSwiY2hhcnRUeXBlIjoiYXJlYSIsInZhbHVlc1RyYWNraW5nIjoiMCIsImNoYW5nZU1vZGUiOiJwcmljZS1hbmQtcGVyY2VudCJ9LCJhZHZhbmNlZC1jaGFydCI6eyJib2R5SWQiOiJ3aWRnZXQtY29udGFpbmVyIiwiYm9keUNsYXNzZXMiOlsiY2hhcnQtcGFnZSIsInVuc2VsZWN0YWJsZSIsIm9uLXdpZGdldCJdfSwic2NyZWVuZXIiOnsid2lkdGgiOjExMDAsImhlaWdodCI6NTIzLCJkZWZhdWx0Q29sdW1uIjoib3ZlcnZpZXciLCJkZWZhdWx0U2NyZWVuIjoiZ2VuZXJhbCIsIm1hcmtldCI6ImZvcmV4Iiwic2hvd1Rvb2xiYXIiOnRydWUsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwic2luZ2xlLXF1b3RlIjp7IndpZHRoIjozNTAsInN5bWJvbCI6IkZYOkVVUlVTRCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwic3ltYm9sLXByb2ZpbGUiOnsid2lkdGgiOjQ4MCwiaGVpZ2h0Ijo2NTAsInN5bWJvbCI6Ik5BU0RBUTpBQVBMIiwiaXNUcmFuc3BhcmVudCI6ZmFsc2V9LCJzeW1ib2wtaW5mbyI6eyJ3aWR0aCI6MTAwMCwic3ltYm9sIjoiTkFTREFROkFBUEwiLCJpc1RyYW5zcGFyZW50IjpmYWxzZX0sInRlY2huaWNhbC1hbmFseXNpcyI6eyJpbnRlcnZhbCI6IjFtIiwid2lkdGgiOjQyNSwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImhlaWdodCI6NDUwLCJzeW1ib2wiOiJOQVNEQVE6QUFQTCIsInNob3dJbnRlcnZhbFRhYnMiOnRydWUsImRpc3BsYXlNb2RlIjoic2luZ2xlIn0sInRpY2tlci10YXBlIjp7ImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6ImFkYXB0aXZlIiwic2hvd1N5bWJvbExvZ28iOmZhbHNlfSwidGlja2VycyI6eyJpc1RyYW5zcGFyZW50IjpmYWxzZSwic2hvd1N5bWJvbExvZ28iOmZhbHNlfSwiZmluYW5jaWFscyI6eyJ3aWR0aCI6NDgwLCJoZWlnaHQiOjgzMCwiYXV0b3NpemUiOmZhbHNlLCJzeW1ib2wiOiJOQVNEQVE6QUFQTCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6InJlZ3VsYXIiLCJsYXJnZUNoYXJ0VXJsIjoiIn0sInRpbWVsaW5lIjp7IndpZHRoIjo0ODAsImhlaWdodCI6ODMwLCJhdXRvc2l6ZSI6ZmFsc2UsImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6InJlZ3VsYXIiLCJmZWVkTW9kZSI6ImFsbF9zeW1ib2xzIn0sInN0b2NrLWhlYXRtYXAiOnsid2lkdGgiOjUwMCwiaGVpZ2h0Ijo1MDAsImF1dG9zaXplIjp0cnVlLCJkYXRhU291cmNlIjoiU1BYNTAwIiwiZXhjaGFuZ2VzIjpbXSwiZ3JvdXBpbmciOiJzZWN0b3IiLCJibG9ja1NpemUiOiJtYXJrZXRfY2FwX2Jhc2ljIiwiYmxvY2tDb2xvciI6ImNoYW5nZSIsImhhc1RvcEJhciI6ZmFsc2UsImlzRGF0YVNldEVuYWJsZWQiOmZhbHNlLCJpc1pvb21FbmFibGVkIjp0cnVlLCJoYXNTeW1ib2xUb29sdGlwIjp0cnVlLCJzeW1ib2xVcmwiOiIiLCJpc01vbm9TaXplIjpmYWxzZX0sImNyeXB0by1jb2lucy1oZWF0bWFwIjp7IndpZHRoIjo1MDAsImhlaWdodCI6NTAwLCJhdXRvc2l6ZSI6dHJ1ZSwiZGF0YVNvdXJjZSI6IkNyeXB0byIsImJsb2NrU2l6ZSI6Im1hcmtldF9jYXBfY2FsYyIsImJsb2NrQ29sb3IiOiIyNGhfY2xvc2VfY2hhbmdlfDUiLCJoYXNUb3BCYXIiOmZhbHNlLCJpc0RhdGFTZXRFbmFibGVkIjpmYWxzZSwiaXNab29tRW5hYmxlZCI6dHJ1ZSwiaGFzU3ltYm9sVG9vbHRpcCI6dHJ1ZSwic3ltYm9sVXJsIjoiIiwiaXNNb25vU2l6ZSI6ZmFsc2V9LCJldGYtaGVhdG1hcCI6eyJ3aWR0aCI6NTAwLCJoZWlnaHQiOjUwMCwiYXV0b3NpemUiOnRydWUsImRhdGFTb3VyY2UiOiJBbGxVU0V0ZiIsImJsb2NrU2l6ZSI6InZvbHVtZSIsImJsb2NrQ29sb3IiOiJjaGFuZ2UiLCJncm91cGluZyI6ImFzc2V0X2NsYXNzIiwiaGFzVG9wQmFyIjpmYWxzZSwiaXNEYXRhU2V0RW5hYmxlZCI6ZmFsc2UsImlzWm9vbUVuYWJsZWQiOnRydWUsImhhc1N5bWJvbFRvb2x0aXAiOnRydWUsInN5bWJvbFVybCI6IiIsImlzTW9ub1NpemUiOmZhbHNlfX0nKQo7dmFyIHIsczshZnVuY3Rpb24odCl7bGV0IGU7IWZ1bmN0aW9uKHQpe3QuU2V0U3ltYm9sPSJzZXQtc3ltYm9sIix0LlNldEludGVydmFsPSJzZXQtaW50ZXJ2YWwifShlPXQuTmFtZXN8fCh0Lk5hbWVzPXt9KSl9KHJ8fChyPXt9KSksZnVuY3Rpb24odCl7bGV0IGU7IWZ1bmN0aW9uKHQpe3QuU3ltYm9sQ2xpY2s9InR2LXdpZGdldC1zeW1ib2wtY2xpY2siLHQuV2lkZ2V0TG9hZD0idHYtd2lkZ2V0LWxvYWQiLHQuV2lkZ2V0UmVhZHk9InR2LXdpZGdldC1yZWFkeSIsdC5SZXNpemVJZnJhbWU9InR2LXdpZGdldC1yZXNpemUtaWZyYW1lIix0Lk5vRGF0YT0idHYtd2lkZ2V0LW5vLWRhdGEifShlPXQuTmFtZXN8fCh0Lk5hbWVzPXt9KSl9KHN8fChzPXt9KSk7Y29uc3Qgbj0iX19GQUlMX18iLG89Il9fTkhUVFBfXyIsYT1uZXcgUmVnRXhwKCJeaHR0cChzKT86KC8vKT8iKTtmdW5jdGlvbiBsKHQ9bG9jYXRpb24uaHJlZil7Y29uc3QgZT1mdW5jdGlvbih0KXt0cnl7Y29uc3QgZT1uZXcgVVJMKHQpO3JldHVybiBhLnRlc3QoZS5wcm90b2NvbCk/bnVsbDpvfWNhdGNoKHQpe3JldHVybiBufX0odCk7cmV0dXJuIGV8fHQucmVwbGFjZShhLCIiKX1jb25zdCBjPXt3aWRnZXRIb3N0OiJodHRwczovL3d3dy50cmFkaW5ndmlldy13aWRnZXQuY29tIixlbnY6IkJBVFRMRSJ9O2NvbnN0IGg9WyJsb2NhbGUiLCJzeW1ib2wiLCJtYXJrZXQiXTtjbGFzcyBke2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NvcHlyaWdodENvbnRhaW5lcj1udWxsO2NvbnN0IGU9dD8/dGhpcy5fZ2V0U2NyaXB0SW5mbygpO2UmJnRoaXMuX3JlcGxhY2VTY3JpcHQoZSl9aGFzQ29weXJpZ2h0KCl7cmV0dXJuISF0aGlzLl9jb3B5cmlnaHRDb250YWluZXJ9Z2V0IHdpZGdldElkKCl7dGhyb3cgbmV3IEVycm9yKCJNZXRob2QgbXVzdCBiZSBvdmVycmlkZGVuIil9d2lkZ2V0VXRtTmFtZSgpe3JldHVybiB0aGlzLndpZGdldElkfWdldCBkZWZhdWx0U2V0dGluZ3MoKXtyZXR1cm4gaVt0aGlzLndpZGdldElkXX1nZXQgcHJvcGVydGllc1RvV29ya1dpdGgoKXtyZXR1cm5bXX1nZXQgdXNlUGFyYW1zRm9yQ29ubmVjdFNvY2tldCgpe3JldHVybiExfWdldCB1c2VTbm93cGxvd1BhZ2VWaWV3KCl7cmV0dXJuITF9dXNlUXVlcnlTdHJpbmdQYXJhbWV0ZXJzKHQpe3JldHVybnt9fWZpbHRlclJhd1NldHRpbmdzKHQpe2NvbnN0IGU9e30saT17Li4udCwuLi50aGlzLnVzZVF1ZXJ5U3RyaW5nUGFyYW1ldGVycyh0KX0scj1PYmplY3Qua2V5cyhpKSxzPW5ldyBTZXQodGhpcy5wcm9wZXJ0aWVzVG9Xb3JrV2l0aCk7cmV0dXJuIHIuZm9yRWFjaCgodD0+e3MuaGFzKHQpJiYoZVt0XT1pW3RdKX0pKSxlfWdldCBzaG91bGRMaXN0ZW5Ub0lmcmFtZVJlc2l6ZSgpe3JldHVybiEwfWdldCBwcm9wZXJ0aWVzVG9Ta2lwSW5IYXNoKCl7cmV0dXJuWyJjdXN0b21lciIsImxvY2FsZSJdfWdldCBwcm9wZXJ0aWVzVG9BZGRUb0dldFBhcmFtcygpe3JldHVyblsibG9jYWxlIl19c2hvdWxkQWRkQ29weXJpZ2h0U3R5bGVzKCl7cmV0dXJuITB9X2RlZmF1bHRXaWR0aCgpe31fZGVmYXVsdEhlaWdodCgpe31fZ2V0U2NyaXB0SW5mbygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3VycmVudFNjcmlwdDtpZighdHx8IXQuc3JjKXJldHVybiBjb25zb2xlLmVycm9yKCJDb3VsZCBub3Qgc2VsZi1yZXBsYWNlIHRoZSBzY3JpcHQsIHdpZGdldCBlbWJlZGRpbmcgaGFzIGJlZW4gYWJvcnRlZCIpLG51bGw7cmV0dXJue3NjcmlwdFVSTDpmdW5jdGlvbih0KXtjb25zdCBlPW5ldyBVUkwodCxkb2N1bWVudC5iYXNlVVJJKTtyZXR1cm57aG9zdDplLmhvc3QscGF0aG5hbWU6ZS5wYXRobmFtZSxocmVmOmUuaHJlZixwcm90b2NvbDplLnByb3RvY29sfX0odC5zcmMpLHNjcmlwdEVsZW1lbnQ6dCxpZDp0LmlkLHJhd1NldHRpbmdzOnRoaXMuX3NjcmlwdENvbnRlbnRUb0pTT04odCksb3ZlcnJpZGVIb3N0OnQuZ2V0QXR0cmlidXRlKCJvdmVycmlkZS1ob3N0Iil9fV9yZXBsYWNlU2NyaXB0KGkpe2NvbnN0e3NjcmlwdFVSTDpyLHNjcmlwdEVsZW1lbnQ6bixyYXdTZXR0aW5nczpvLGlkOmEsb3ZlcnJpZGVIb3N0Omx9PWksaD1sfHxmdW5jdGlvbih0LGU9Yyl7aWYoIkJBVFRMRSI9PT1lLmVudil7aWYod2luZG93LldJREdFVF9IT1NUKXJldHVybiB3aW5kb3cuV0lER0VUX0hPU1Q7aWYodC5ob3N0Lm1hdGNoKC9cLlx3c3RcdypcLlx3diQvaSkpcmV0dXJuYGh0dHBzOi8vJHsoaT10Lmhvc3Qscj0zLGkuc3BsaXQoIi4iKS5zbGljZSgtcikuam9pbigiLiIpKS5yZXBsYWNlKC9eYmV0YTAoPz1cLnhzdGFnaW5nXC50diQpL2ksImJldGEwLXhzdGFnaW5nIikucmVwbGFjZSgvXC4oXHcpdiQvaSwoKHQsZSk9PmAtd2lkZ2V0LiR7ZX12YCkpfWB9dmFyIGkscjtyZXR1cm4gZS53aWRnZXRIb3N0fShyKSxkPW4ucGFyZW50Tm9kZTtvJiYidGltZWxpbmUiPT09dGhpcy53aWRnZXRVdG1OYW1lKCkmJihvLmxvY2FsZT0iZW4iKTtjb25zdCBnPW4ubm9uY2V8fG4uZ2V0QXR0cmlidXRlKCJub25jZSIpLHU9ZnVuY3Rpb24odCl7aWYobnVsbD09PXQpcmV0dXJuIG51bGw7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoIiN0cmFkaW5ndmlldy1jb3B5cmlnaHQiKSxpPXQucXVlcnlTZWxlY3RvcigiI3RyYWRpbmd2aWV3LXF1b3RlcyIpLHI9ZXx8aTtyZXR1cm4gciYmdC5yZW1vdmVDaGlsZChyKSxyfShkKSxtPWQucXVlcnlTZWxlY3RvcigiLnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQiKTt0aGlzLl9jb3B5cmlnaHRDb250YWluZXI9dXx8bTtjb25zdCBwPWQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0cmFkaW5ndmlldy13aWRnZXQtY29udGFpbmVyIik7dGhpcy5pZnJhbWVDb250YWluZXI9ZCYmcD9kOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG8mJih0aGlzLnNldHRpbmdzPXRoaXMuZmlsdGVyUmF3U2V0dGluZ3MobykpLG8mJnRoaXMuX3ZhbGlkYXRlU2V0dGluZ3MoKXx8KGNvbnNvbGUuZXJyb3IoIkludmFsaWQgc2V0dGluZ3MgcHJvdmlkZWQsIGZhbGwgYmFjayB0byBkZWZhdWx0cyIpLHRoaXMuc2V0dGluZ3M9dGhpcy5maWx0ZXJSYXdTZXR0aW5ncyh0aGlzLmRlZmF1bHRTZXR0aW5ncykpCjtjb25zdCBmPSIzMnB4Iix7d2lkdGg6dyxoZWlnaHQ6eX09dGhpcy5zZXR0aW5ncyxiPXZvaWQgMD09PXk/dm9pZCAwOmAke3l9JHtOdW1iZXIuaXNJbnRlZ2VyKHkpPyJweCI6IiJ9YCxTPXZvaWQgMD09PXc/dm9pZCAwOmAke3d9JHtOdW1iZXIuaXNJbnRlZ2VyKHcpPyJweCI6IiJ9YDtpZih2b2lkIDAhPT1TJiYodGhpcy5pZnJhbWVDb250YWluZXIuc3R5bGUud2lkdGg9Uyksdm9pZCAwIT09YiYmKHRoaXMuaWZyYW1lQ29udGFpbmVyLnN0eWxlLmhlaWdodD1iKSx0aGlzLnNob3VsZEFkZENvcHlyaWdodFN0eWxlcygpKXtjb25zdCB0PWZ1bmN0aW9uKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0LmlubmVySFRNTD1gXG5cdC50cmFkaW5ndmlldy13aWRnZXQtY29weXJpZ2h0IHtcblx0XHRmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcblx0XHRsaW5lLWhlaWdodDogMzJweCAhaW1wb3J0YW50O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDtcblx0XHQvKiBAbWl4aW4gc2YtcHJvLWRpc3BsYXktZm9udDsgKi9cblx0XHRmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnVHJlYnVjaGV0IE1TJywgUm9ib3RvLCBVYnVudHUsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1jb2xkLWdyYXktMzAwIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQgYSB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0Y29sb3I6ICR7ZVsiY29sb3ItY29sZC1ncmF5LTMwMCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQgYTp2aXNpdGVkIHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1jb2xkLWdyYXktMzAwIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCBhOmhvdmVyIC5ibHVlLXRleHQge1xuXHRcdGNvbG9yOiAke2VbImNvbG9yLWJyYW5kLWhvdmVyIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCBhOmFjdGl2ZSAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZC1hY3RpdmUiXX0gIWltcG9ydGFudDtcblx0fVxuXG5cdC50cmFkaW5ndmlldy13aWRnZXQtY29weXJpZ2h0IGE6dmlzaXRlZCAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cdGAsdH0oKTtnJiZ0LnNldEF0dHJpYnV0ZSgibm9uY2UiLGcpLHRoaXMuaWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpfWNvbnN0IHY9dGhpcy5oYXNDb3B5cmlnaHQoKT9gY2FsYygxMDAlIC0gJHtmfSlgOiIxMDAlIixUPWxvY2F0aW9uLmhvc3RuYW1lLEM9bT8id2lkZ2V0X25ldyI6IndpZGdldCIsXz10aGlzLndpZGdldFV0bU5hbWUoKTt0aGlzLnNldHRpbmdzLnV0bV9zb3VyY2U9VCx0aGlzLnNldHRpbmdzLnV0bV9tZWRpdW09Qyx0aGlzLnNldHRpbmdzLnV0bV9jYW1wYWlnbj1fLHRoaXMuX3VwZGF0ZUNvcHlyaWdodEhyZWZQYXJhbXMoVCxDLF8pO2NvbnN0IEE9dGhpcy5zZXR0aW5ncy5pZnJhbWVUaXRsZXx8YCR7dGhpcy53aWRnZXRJZC5yZXBsYWNlKCItIiwiICIpfSBUcmFkaW5nVmlldyB3aWRnZXRgLGs9dGhpcy5zZXR0aW5ncy5pZnJhbWVMYW5nfHwiZW4iO3RoaXMuaWZyYW1lPXRoaXMuX2NyZWF0ZUlmcmFtZSh2LGgsYSxBLGspLHRoaXMuX2FkZENTUEVycm9yTGlzdGVuZXIoaCksZyYmdGhpcy5pZnJhbWUuc2V0QXR0cmlidXRlKCJub25jZSIsZyk7Y29uc3QgRT10aGlzLmlmcmFtZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIudHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lcl9fd2lkZ2V0Iik7aWYoRT8odChFLnBhcmVudEVsZW1lbnQpLnJlcGxhY2VDaGlsZCh0aGlzLmlmcmFtZSxFKSxuPy5yZW1vdmUoKSk6cD8odGhpcy5pZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLG4/LnJlbW92ZSgpKToodGhpcy5pZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLGQucmVwbGFjZUNoaWxkKHRoaXMuaWZyYW1lQ29udGFpbmVyLHQobikpKSx0aGlzLnNob3VsZExpc3RlblRvSWZyYW1lUmVzaXplJiZmdW5jdGlvbih0LGUsaSl7Y29uc3Qgcj1lLmNvbnRlbnRXaW5kb3c7aWYoIXIpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIkNhbm5vdCBsaXN0ZW4gdG8gdGhlIGV2ZW50IGZyb20gdGhlIHByb3ZpZGVkIGlmcmFtZSwgY29udGVudFdpbmRvdyBpcyBub3QgYXZhaWxhYmxlIiksKCk9Pnt9O2Z1bmN0aW9uIHMoZSl7ZS5zb3VyY2UmJmUuc291cmNlPT09ciYmZS5kYXRhJiZlLmRhdGEubmFtZSYmZS5kYXRhLm5hbWU9PT10JiZpKGUuZGF0YS5kYXRhKX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscywhMSl9KHMuTmFtZXMuUmVzaXplSWZyYW1lLHRoaXMuaWZyYW1lLCh0PT57dC53aWR0aCYmKHRoaXMuaWZyYW1lLnN0eWxlLndpZHRoPXQud2lkdGgrInB4Iix0aGlzLmlmcmFtZUNvbnRhaW5lci5zdHlsZS53aWR0aD10LndpZHRoKyJweCIpLHRoaXMuaWZyYW1lLnN0eWxlLmhlaWdodD10LmhlaWdodCsicHgiLHRoaXMuaWZyYW1lQ29udGFpbmVyLnN0eWxlLmhlaWdodD10LmhlaWdodCsodGhpcy5oYXNDb3B5cmlnaHQoKT8zMjowKSsicHgifSkpLHUpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5zdHlsZS5oZWlnaHQ9Zix0LnN0eWxlLmxpbmVIZWlnaHQ9Zix2b2lkIDAhPT1TJiYodC5zdHlsZS53aWR0aD1TKSx0LnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIix0LnN0eWxlLnZlcnRpY2FsQWxpZ249Im1pZGRsZSIsdC5pbm5lckhUTUw9dS5pbm5lckhUTUwsCnRoaXMuaWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpfX1faWZyYW1lU3JjQmFzZSh0KXtsZXQgZT1gJHt0fS9lbWJlZC13aWRnZXQvJHt0aGlzLndpZGdldElkfS9gO3JldHVybiB0aGlzLnNldHRpbmdzLmN1c3RvbWVyJiYtMSE9PXRoaXMucHJvcGVydGllc1RvU2tpcEluSGFzaC5pbmRleE9mKCJjdXN0b21lciIpJiYoZSs9YCR7dGhpcy5zZXR0aW5ncy5jdXN0b21lcn0vYCksZX1fdmFsaWRhdGVTZXR0aW5ncygpe2NvbnN0IHQ9KHQsZSk9PntpZih2b2lkIDA9PT10KXJldHVybiBlO2NvbnN0IGk9U3RyaW5nKHQpO3JldHVybi9eXGQrJC8udGVzdChpKT9wYXJzZUludChpKTovXihcZCslfGF1dG8pJC8udGVzdChpKT9pOm51bGx9LGU9dCh0aGlzLnNldHRpbmdzLndpZHRoLHRoaXMuX2RlZmF1bHRXaWR0aCgpKSxpPXQodGhpcy5zZXR0aW5ncy5oZWlnaHQsdGhpcy5fZGVmYXVsdEhlaWdodCgpKTtyZXR1cm4gbnVsbCE9PWUmJm51bGwhPT1pJiYodGhpcy5zZXR0aW5ncy53aWR0aD1lLHRoaXMuc2V0dGluZ3MuaGVpZ2h0PWksITApfV9zZXRTZXR0aW5nc1F1ZXJ5U3RyaW5nKHQpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzVG9BZGRUb0dldFBhcmFtcy5maWx0ZXIoKHQ9Pi0xIT09aC5pbmRleE9mKHQpKSksaT1mdW5jdGlvbih0LGUpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpO2Zvcihjb25zdCByIG9mIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihpW3JdPXRbcl0pO3JldHVybiBpfSh0aGlzLnNldHRpbmdzLGUpO2Zvcihjb25zdFtlLHJdb2YgT2JqZWN0LmVudHJpZXMoaSkpdC5zZWFyY2hQYXJhbXMuYXBwZW5kKGUscil9X3NldEhhc2hTdHJpbmcodCxlKXtjb25zdCBpPXt9O2UmJihpLmZyYW1lRWxlbWVudElkPWUpLE9iamVjdC5rZXlzKHRoaXMuc2V0dGluZ3MpLmZvckVhY2goKHQ9PnstMT09PXRoaXMucHJvcGVydGllc1RvU2tpcEluSGFzaC5pbmRleE9mKHQpJiYoaVt0XT10aGlzLnNldHRpbmdzW3RdKX0pKSwodGhpcy51c2VQYXJhbXNGb3JDb25uZWN0U29ja2V0fHx0aGlzLnVzZVNub3dwbG93UGFnZVZpZXcpJiYoaVsicGFnZS11cmkiXT1sKCkpO09iamVjdC5rZXlzKGkpLmxlbmd0aD4wJiYodC5oYXNoPWVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpfV9zY3JpcHRDb250ZW50VG9KU09OKHQpe2NvbnN0IGU9dC5pbm5lckhUTUwudHJpbSgpO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcihgV2lkZ2V0IHNldHRpbmdzIHBhcnNlIGVycm9yOiAke3R9YCksbnVsbH19X2NyZWF0ZUlmcmFtZSh0LGUsaSxyLHMpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7aSYmKG4uaWQ9aSksdGhpcy5zZXR0aW5ncy5lbmFibGVTY3JvbGxpbmd8fG4uc2V0QXR0cmlidXRlKCJzY3JvbGxpbmciLCJubyIpLG4uc2V0QXR0cmlidXRlKCJhbGxvd3RyYW5zcGFyZW5jeSIsInRydWUiKSxuLnNldEF0dHJpYnV0ZSgiZnJhbWVib3JkZXIiLCIwIiksbi5zdHlsZS51c2VyU2VsZWN0PSJub25lIixuLnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayIsbi5zdHlsZS5oZWlnaHQ9dCxuLnN0eWxlLndpZHRoPSIxMDAlIjtjb25zdCBvPW5ldyBVUkwodGhpcy5faWZyYW1lU3JjQmFzZShlKSk7cmV0dXJuIHRoaXMuX3NldFNldHRpbmdzUXVlcnlTdHJpbmcobyksdGhpcy5fc2V0SGFzaFN0cmluZyhvLGkpLG4uc2V0QXR0cmlidXRlKCJzcmMiLG8udG9TdHJpbmcoKSksbi50aXRsZT1yLG4ubGFuZz1zLG59X2FkZENTUEVycm9yTGlzdGVuZXIodCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLChlPT57ZS5ibG9ja2VkVVJJLmluY2x1ZGVzKHQpJiYodGhpcy5fdHJ5Rml4Q1NQSXNzdWVXaXRoRmFsbGJhY2sodCksY29uc29sZS53YXJuKCJQbGVhc2UgdXBkYXRlIHlvdXIgQ1NQIHJ1bGVzIHRvIGFsbG93IHRoZSB0cmFkaW5ndmlldy13aWRnZXQuY29tIG9yaWdpbiBmb3IgZnJhbWUtc3JjLiIpKX0pKX1fdHJ5Rml4Q1NQSXNzdWVXaXRoRmFsbGJhY2sodCl7Y29uc3QgZT10aGlzLmlmcmFtZS5nZXRBdHRyaWJ1dGUoInNyYyIpO2lmKGUpe2NvbnN0IGk9bmV3IFVSTChlLnJlcGxhY2UodCwiaHR0cHM6Ly9zLnRyYWRpbmd2aWV3LmNvbSIpKTt0aGlzLmlmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsaS5ocmVmKX19X3VwZGF0ZUNvcHlyaWdodEhyZWZQYXJhbXModCxlLGkpe2lmKHRoaXMuX2NvcHlyaWdodENvbnRhaW5lcil7Y29uc3Qgcj10aGlzLl9jb3B5cmlnaHRDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiYSIpO3ImJnIuZm9yRWFjaCgocj0+e2NvbnN0IHM9ci5nZXRBdHRyaWJ1dGUoImhyZWYiKTtpZihzKXRyeXtjb25zdCBuPW5ldyBVUkwocyk7bi5zZWFyY2hQYXJhbXMuc2V0KCJ1dG1fc291cmNlIix0KSxuLnNlYXJjaFBhcmFtcy5zZXQoInV0bV9tZWRpdW0iLGUpLG4uc2VhcmNoUGFyYW1zLnNldCgidXRtX2NhbXBhaWduIixpKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbi50b1N0cmluZygpKX1jYXRjaCh0KXtjb25zb2xlLmxvZyhgQ2Fubm90IHVwZGF0ZSBsaW5rIFVUTSBwYXJhbXMsIGhyZWY9IiR7c30iYCl9fSkpfX19dmFyIGcsdSxtLHA7IWZ1bmN0aW9uKHQpe3QuQWRhcHRpdmU9ImFkYXB0aXZlIix0LlJlZ3VsYXI9InJlZ3VsYXIiLHQuQ29tcGFjdD0iY29tcGFjdCJ9KGd8fChnPXt9KSksZnVuY3Rpb24odCl7dC5BbGxTeW1ib2xzPSJhbGxfc3ltYm9scyIsdC5NYXJrZXQ9Im1hcmtldCIsdC5TeW1ib2w9InN5bWJvbCJ9KHV8fCh1PXt9KSksZnVuY3Rpb24odCl7dC5DcnlwdG9jdXJyZW5jaWVzPSJjcnlwdG8iLHQuQ3VycmVuY2llcz0iZm9yZXgiLHQuU3RvY2tzPSJzdG9jayIsdC5JbmRpY2VzPSJpbmRleCIsdC5GdXR1cmVzPSJmdXR1cmVzIix0LkJvbmRzPSJjZmQifShtfHwobT17fSkpLGZ1bmN0aW9uKHQpe3QuSFRNTD0iaHRtbCIsdC5SZWFjdD0icmVhY3QifShwfHwocD17fSkpO25ldyBjbGFzcyBleHRlbmRzIGR7CmdldCB3aWRnZXRJZCgpe3JldHVybiJ0aW1lbGluZSJ9Z2V0IHVzZVNub3dwbG93UGFnZVZpZXcoKXtyZXR1cm4hMH1nZXQgcHJvcGVydGllc1RvQWRkVG9HZXRQYXJhbXMoKXtyZXR1cm5bIm1hcmtldCIsInN5bWJvbCJdfXVzZVF1ZXJ5U3RyaW5nUGFyYW1ldGVycyh0KXtyZXR1cm4gdCYmdC5mZWVkTW9kZT09PXUuU3ltYm9sP2Z1bmN0aW9uKHQpe3RyeXtjb25zdCBlPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLGk9e307Zm9yKGNvbnN0W3Isc11vZiBPYmplY3QuZW50cmllcyh0KSl7Y29uc3QgdD1lLnNlYXJjaFBhcmFtcy5nZXQocyk7dCYmKGlbcl09dCl9cmV0dXJuIGl9Y2F0Y2h7cmV0dXJue319fSh7c3ltYm9sOiJ0dndpZGdldHN5bWJvbCJ9KTp7fX1nZXQgcHJvcGVydGllc1RvV29ya1dpdGgoKXtyZXR1cm5bIndpZHRoIiwiaGVpZ2h0IiwibWFya2V0Iiwic3ltYm9sIiwiY29sb3JUaGVtZSIsImlzVHJhbnNwYXJlbnQiLCJjb2xvclRoZW1lIiwiZGlzcGxheU1vZGUiLCJsYXJnZUNoYXJ0VXJsIiwiY3VzdG9tZXIiXX19fSkoKTs="}},"time_used":61,"timings":{"blocked":-1,"dns":23,"connect":22,"send":0,"wait":2,"receive":-1,"ssl":11},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/main.js?ver=20131022","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.443Z","timestamp":1785145482443,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/main.js?ver=20131022 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 68482\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":68482,"size_decoded":68699,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with CRLF line terminators","md5":"a1b8e80e7340db27642acf331aa999d2","sha1":"0a9911309211e2c08c1e0dd33b273aa0c03f9f7e","sha256":"35c7a37cc8a2c10f6842eabe5a8dd8dd494813eb6d21c2f3adb631193962ed8f","sha512":"96275f8429f24c9066f2e9446a256ba77aed5e257a7046dd39b74e42e3d97fa8cdbed4995db48c6cb86a6bf667d624ebb5d2bc2f3ae4fbd0220cc89404939435","ssdeep":"768:QnCaXiz5dZbn/L+jLy2d01Rds9nHnWu1yKy+/AgnvSIDPi:QnCaXildZbn/iJ0Pds3/AgnvSYPi","tlshash":"da63420cb6255caa49b7337b9fbfa405fa7a0127810347147e7c92d45f71848a229fbd","first_seen":"2026-07-27T08:06:56.571178Z","last_seen":"2026-07-27T09:45:50.849552Z","times_seen":3,"resource_available":true,"data":"KGZ1bmN0aW9uKCQpIHsNCiAgICAidXNlIHN0cmljdCI7DQoNCiAgICBpZiAoISQud2piRXh0ZW5zaW9ucykNCiAgICAgICAgJC53amJFeHRlbnNpb25zID0ge307DQoNCiAgICBmdW5jdGlvbiBXSkJNYWluQ29yZSgpIHsNCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOw0KICAgICAgICBzZWxmLmluaXQoKTsNCiAgICB9Ow0KDQogICAgV0pCTWFpbkNvcmUucHJvdG90eXBlID0gew0KICAgICAgICAvKioNCiAgICAgICAgICogIEluaXRpYWxpemUNCiAgICAgICAgICovDQogICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOw0KDQogICAgICAgICAgICBzZWxmLmZpbGVVcGxvYWQoJCgnLmxhYmVsLWNhbi1kcmFnJykpOw0KDQogICAgICAgICAgICBzZWxmLnJlY2FwdGNoYUNhbGxiYWNrKCk7DQoNCiAgICAgICAgICAgIHNlbGYuc3VibWl0UHJvcGVydHkoKTsNCg0KICAgICAgICAgICAgc2VsZi51c2VyTG9naW5SZWdpc3RlcigpOw0KDQogICAgICAgICAgICBzZWxmLnVzZXJDaGFuZ2VQYXNzKCk7DQoNCiAgICAgICAgICAgIHNlbGYucmVtb3ZlUHJvcGVydHkoKTsNCg0KICAgICAgICAgICAgLy8gZmF2b3JpdGUNCiAgICAgICAgICAgIHNlbGYuYWRkUHJvcGVydHlGYXZvcml0ZSgpOw0KDQogICAgICAgICAgICBzZWxmLnJlbW92ZVByb3BlcnR5RmF2b3JpdGUoKTsNCg0KICAgICAgICAgICAgLy8gYWRkIGFnZW50DQogICAgICAgICAgICBzZWxmLmFnZW5jeUFkZEFnZW50KCk7DQoNCiAgICAgICAgICAgIC8vIGNvbXBhcmUNCiAgICAgICAgICAgIHNlbGYuYWRkUHJvcGVydHlDb21wYXJlKCk7DQoNCiAgICAgICAgICAgIHNlbGYucmVtb3ZlUHJvcGVydHlDb21wYXJlKCk7DQoNCiAgICAgICAgICAgIHNlbGYucmV2aWV3SW5pdCgpOw0KDQogICAgICAgICAgICBzZWxmLnByb3BlcnR5U2F2ZWRTZWFyY2goKTsNCg0KICAgICAgICAgICAgc2VsZi5zZWxlY3QySW5pdCgpOw0KDQogICAgICAgICAgICBzZWxmLmZpbHRlckxpc3RpbmcoKTsNCg0KICAgICAgICAgICAgLy8gcHJvcGVydHkgZGV0YWlsDQogICAgICAgICAgICBzZWxmLnByb3BlcnR5Q2hhcnRJbml0KCk7DQoNCiAgICAgICAgICAgIHNlbGYucHJvcGVydHlOZWFyYnlZZWxwKCk7DQoNCiAgICAgICAgICAgIHNlbGYucHJvcGVydHlOZWFyYnlHb29nbGVQbGFjZXMoKTsNCg0KICAgICAgICAgICAgc2VsZi5wcm9wZXJ0eVdhbGtTY29yZSgpOw0KDQogICAgICAgICAgICAvLyBtaXhlcw0KICAgICAgICAgICAgc2VsZi5taXhlc0ZuKCk7DQoNCiAgICAgICAgICAgIHNlbGYubG9hZEV4dGVuc2lvbigpOw0KICAgICAgICB9LA0KICAgICAgICBsb2FkRXh0ZW5zaW9uOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCg0KICAgICAgICAgICAgLy8gaWYgKCQud2piRXh0ZW5zaW9ucy5hamF4X3VwbG9hZCkgew0KICAgICAgICAgICAgLy8gICAgICQud2piRXh0ZW5zaW9ucy5hamF4X3VwbG9hZC5jYWxsKHNlbGYpOw0KICAgICAgICAgICAgLy8gfQ0KICAgICAgICB9LA0KICAgICAgICByZWNhcHRjaGFDYWxsYmFjazogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICBpZiAod3BfcmVhbGVzdGF0ZV9vcHRzLnJlY2FwdGNoYV9lbmFibGUpIHsNCiAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5ncmVjYXB0Y2hhKSB7fSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWNhcHRjaGFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZ2EtcmVjYXB0Y2hhIik7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlY2FwdGNoYXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVjYXB0Y2hhID0gcmVjYXB0Y2hhc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2l0ZWtleSA9IHJlY2FwdGNoYS5kYXRhc2V0LnNpdGVrZXk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVjYXB0Y2hhLnJlbmRlcihyZWNhcHRjaGEsIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGVrZXknOiBzaXRla2V5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBmaWxlVXBsb2FkOiBmdW5jdGlvbigkZWwpIHsNCg0KICAgICAgICAgICAgdmFyIGlzQWR2YW5jZWRVcGxvYWQgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICAgICAgICAgICAgcmV0dXJuICgoJ2RyYWdnYWJsZScgaW4gZGl2KSB8fCAoJ29uZHJhZ3N0YXJ0JyBpbiBkaXYgJiYgJ29uZHJvcCcgaW4gZGl2KSkgJiYgJ0Zvcm1EYXRhJyBpbiB3aW5kb3cgJiYgJ0ZpbGVSZWFkZXInIGluIHdpbmRvdzsNCiAgICAgICAgICAgIH0oKTsNCg0KICAgICAgICAgICAgaWYgKGlzQWR2YW5jZWRVcGxvYWQpIHsNCg0KICAgICAgICAgICAgICAgIHZhciBkcm9wcGVkRmlsZXMgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAkZWwuZWFjaChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGxhYmVsX3NlbGYgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICAgICBsYWJlbF9zZWxmLm9uKCdkcmFnIGRyYWdzdGFydCBkcmFnZW5kIGRyYWdvdmVyIGRyYWdlbnRlciBkcmFnbGVhdmUgZHJvcCcsIGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7DQogICAgICAgICAgICAgICAgICAgIH0pLm9uKCdkcmFnb3ZlciBkcmFnZW50ZXInLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsX3NlbGYuYWRkQ2xhc3MoJ2lzLWRyYWdvdmVyJyk7DQogICAgICAgICAgICAgICAgICAgIH0pLm9uKCdkcmFnbGVhdmUgZHJhZ2VuZCBkcm9wJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9zZWxmLnJlbW92ZUNsYXNzKCdpcy1kcmFnb3ZlcicpOw0KICAgICAgICAgICAgICAgICAgICB9KS5vbignZHJvcCcsIGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BwZWRGaWxlcyA9IGUub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7DQogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9zZWxmLnBhcmVudCgpLmZpbmQoJ2lucHV0W3R5cGU9ImZpbGUiXScpLnByb3AoJ2ZpbGVzJywgZHJvcHBlZEZpbGVzKS50cmlnZ2VyKCdjaGFuZ2UnKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmxhYmVsLWNhbi1kcmFnJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5maW5kKCdpbnB1dFt0eXBlPSJmaWxlIl0nKS50cmlnZ2VyKCdjbGljaycpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIHN1Ym1pdFByb3BlcnR5OiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCiAgICAgICAgICAgICQoJy5jbWItcmVwZWF0YWJsZS1ncm91cCcpLm9uKCdjbWIyX2FkZF9yb3cnLCBmdW5jdGlvbihldmVudCwgbmV3Um93KSB7DQoNCiAgICAgICAgICAgICAgICAvLyBSZWluaXRpYWxpc2UgdGhlIGZpZWxkIHdlIHByZXZpb3VzbHkgZGVzdHJveWVkDQogICAgICAgICAgICAgICAgJChuZXdSb3cpLmZpbmQoJy5sYWJlbC1jYW4tZHJhZycpLmVhY2goZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZVVwbG9hZCgkKHRoaXMpKTsNCiAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIHVzZXJMb2dpblJlZ2lzdGVyOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCg0KICAgICAgICAgICAgLy8gc2lnbiBpbiBwcm9jY2Vzcw0KICAgICAgICAgICAgJCgnYm9keScpLm9uKCdzdWJtaXQnLCAnZm9ybS5sb2dpbi1mb3JtJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsNCiAgICAgICAgICAgICAgICAkKCcuYWxlcnQnLCB0aGlzKS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgIHVybDogd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9hamF4X2xvZ2luJyksDQogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YTogJCh0aGlzKS5zZXJpYWxpemUoKSArICImYWN0aW9uPXdwX3JlYWxlc3RhdGVfYWpheF9sb2dpbiINCiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj4nICsgZGF0YS5tc2cgKyAnPC9kaXY+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnJvbGUgPT0gJ3dwX3JlYWxlc3RhdGVfYWdlbmN5Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdwX3JlYWxlc3RhdGVfb3B0cy5hZnRlcl9sb2dpbl9wYWdlX2FnZW5jeV91cmw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLnJvbGUgPT0gJ3dwX3JlYWxlc3RhdGVfYWdlbnQnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd3BfcmVhbGVzdGF0ZV9vcHRzLmFmdGVyX2xvZ2luX3BhZ2VfYWdlbnRfdXJsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd3BfcmVhbGVzdGF0ZV9vcHRzLmFmdGVyX2xvZ2luX3BhZ2VfdXNlcl91cmw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDApOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucHJlcGVuZCgnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+JyArIGRhdGEubXNnICsgJzwvZGl2PicpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJy5iYWNrLWxpbmsnLCBmdW5jdGlvbihlKSB7DQogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgIHZhciAkY29uID0gJCh0aGlzKS5jbG9zZXN0KCcubG9naW4tZm9ybS13cmFwcGVyJyk7DQogICAgICAgICAgICAgICAgJGNvbi5maW5kKCcuZm9ybS1jb250YWluZXInKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgJCgkKHRoaXMpLmF0dHIoJ2hyZWYnKSkuc2hvdygpOw0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAvLyBsb3N0IHBhc3N3b3JkIGluIHByb2NjZXNzDQogICAgICAgICAgICAkKCdib2R5Jykub24oJ3N1Ym1pdCcsICdmb3JtLmZvcmdvdHBhc3N3b3JkLWZvcm0nLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICQoJy5hbGVydCcsIHRoaXMpLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2FqYXhfZm9yZ290cGFzcycpLA0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQogICAgICAgICAgICAgICAgICAgIGRhdGE6ICQodGhpcykuc2VyaWFsaXplKCkgKyAiJmFjdGlvbj13cF9yZWFsZXN0YXRlX2FqYXhfZm9yZ290cGFzcyINCiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj4nICsgZGF0YS5tc2cgKyAnPC9kaXY+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDApOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucHJlcGVuZCgnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+JyArIGRhdGEubXNnICsgJzwvZGl2PicpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJyNmb3Jnb3QtcGFzc3dvcmQtZm9ybS13cmFwcGVyIGZvcm0gLmJ0bi1jYW5jZWwnLCBmdW5jdGlvbihlKSB7DQogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgICQoJyNmb3Jnb3QtcGFzc3dvcmQtZm9ybS13cmFwcGVyJykuaGlkZSgpOw0KICAgICAgICAgICAgICAgICQoJyNsb2dpbi1mb3JtLXdyYXBwZXInKS5zaG93KCk7DQogICAgICAgICAgICB9KTsNCg0KDQogICAgICAgICAgICAvLyByZWdpc3Rlcg0KICAgICAgICAgICAgdmFyIHJlZ2lzdGVyX3N0ZXAgPSAnMSc7DQogICAgICAgICAgICAkKCdib2R5Jykub24oJ3N1Ym1pdCcsICdmb3JtLnJlZ2lzdGVyLWZvcm0nLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLA0KICAgICAgICAgICAgICAgICAgICAkcGFyZW50X2RpdiA9ICR0aGlzLmNsb3Nlc3QoJy5yZWdpc3Rlci1mb3JtLXdyYXBwZXInKTsNCiAgICAgICAgICAgICAgICAkKCcuYWxlcnQnLCB0aGlzKS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMuaGFzQ2xhc3MoJ2xvYWRpbmcnKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQoNCiAgICAgICAgICAgICAgICB2YXIgYWN0aW9uID0gJ3dwX3JlYWxlc3RhdGVfYWpheF9yZWdpc3Rlcic7DQogICAgICAgICAgICAgICAgaWYgKHdwX3JlYWxlc3RhdGVfb3B0cy5hcHByb3ZhbF90eXBlID09PSAncGhvbmVfYXBwcm92ZScpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ2lzdGVyX3N0ZXAgPT0gJzEnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSAnd3BfcmVhbGVzdGF0ZV9hamF4X2dldF9vcHQnDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsIGFjdGlvbiksDQogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YTogJCh0aGlzKS5zZXJpYWxpemUoKSArICImYWN0aW9uPSIgKyBhY3Rpb24NCiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAod3BfcmVhbGVzdGF0ZV9vcHRzLmFwcHJvdmFsX3R5cGUgPT09ICdwaG9uZV9hcHByb3ZlJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWdpc3Rlcl9zdGVwID09ICcxJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkb3RwX2Zvcm0gPSAkcGFyZW50X2Rpdi5maW5kKCdmb3JtLnJlZ2lzdGVyLWZvcm0tb3RwJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdHBfZm9ybS5maW5kKCcuc2VudC10eHQgLm5vLXR4dCcpLmh0bWwoZGF0YS5tc2cpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3RwX2Zvcm0uc2hvdygpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkcmVzZW5kTGluayA9ICRvdHBfZm9ybS5maW5kKCcucmVzZW5kLWxpbmsnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lciA9ICRvdHBfZm9ybS5maW5kKCcucmVzZW5kLXRpbWVyJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlbmRUaW1lID0gcGFyc2VJbnQod3BfcmVhbGVzdGF0ZV9vcHRzLnJlc2VuZF9vdHBfd2FpdF90aW1lKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzZW5kVGltZSA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNlbmRMaW5rLmFkZENsYXNzKCdkaXNhYmxlZCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc2VuZFRpbWVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChyZXNlbmRUaW1lcik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VuZFRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVyLmh0bWwoJygnICsgcmVzZW5kVGltZSArICcpJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc2VuZFRpbWUgPD0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHJlc2VuZFRpbWVyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc2VuZExpbmsucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lci5odG1sKCcnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZW5kVGltZS0tOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVnaXN0ZXJfc3RlcCA9PSAnMicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucHJlcGVuZCgnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+JyArIGRhdGEubXNnICsgJzwvZGl2PicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZWRpcmVjdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yb2xlID09ICd3cF9yZWFsZXN0YXRlX2FnZW5jeScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3cF9yZWFsZXN0YXRlX29wdHMuYWZ0ZXJfbG9naW5fcGFnZV9hZ2VuY3lfdXJsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5yb2xlID09ICd3cF9yZWFsZXN0YXRlX2FnZW50Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdwX3JlYWxlc3RhdGVfb3B0cy5hZnRlcl9sb2dpbl9wYWdlX2FnZW50X3VybDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdwX3JlYWxlc3RhdGVfb3B0cy5hZnRlcl9sb2dpbl9wYWdlX3VzZXJfdXJsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnByZXBlbmQoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPicgKyBkYXRhLm1zZyArICc8L2Rpdj4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZWRpcmVjdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucm9sZSA9PSAnd3BfcmVhbGVzdGF0ZV9hZ2VuY3knKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3cF9yZWFsZXN0YXRlX29wdHMuYWZ0ZXJfbG9naW5fcGFnZV9hZ2VuY3lfdXJsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLnJvbGUgPT0gJ3dwX3JlYWxlc3RhdGVfYWdlbnQnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3cF9yZWFsZXN0YXRlX29wdHMuYWZ0ZXJfbG9naW5fcGFnZV9hZ2VudF91cmw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd3BfcmVhbGVzdGF0ZV9vcHRzLmFmdGVyX2xvZ2luX3BhZ2VfdXNlcl91cmw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucHJlcGVuZCgnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+JyArIGRhdGEubXNnICsgJzwvZGl2PicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdwX3JlYWxlc3RhdGVfb3B0cy5yZWNhcHRjaGFfZW5hYmxlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cuZ3JlY2FwdGNoYSkge30gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWNhcHRjaGEucmVzZXQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgLy8gdmVyaWZ5IG90cA0KICAgICAgICAgICAgJCgnYm9keScpLm9uKCdzdWJtaXQnLCAnZm9ybS5yZWdpc3Rlci1mb3JtLW90cCcsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksDQogICAgICAgICAgICAgICAgICAgICRwYXJlbnRfZGl2ID0gJHRoaXMuY2xvc2VzdCgnLnJlZ2lzdGVyLWZvcm0td3JhcHBlcicpLA0KICAgICAgICAgICAgICAgICAgICAkcmVnaXN0ZXJfZm9ybSA9ICRwYXJlbnRfZGl2LmZpbmQoJ2Zvcm0ucmVnaXN0ZXItZm9ybScpOw0KDQogICAgICAgICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKCdsb2FkaW5nJykpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkKCcuYWxlcnQnLCB0aGlzKS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KDQogICAgICAgICAgICAgICAgdmFyIG90cCA9ICcnOw0KICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJy5vdHAtaW5wdXQtY29udCBpbnB1dCcpLmVhY2goZnVuY3Rpb24oaW5kZXgsIGlucHV0KSB7DQogICAgICAgICAgICAgICAgICAgIG90cCArPSAkKHRoaXMpLnZhbCgpOw0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgdmFyIGZvcm1fZGF0YSA9IHsNCiAgICAgICAgICAgICAgICAgICAgJ290cCc6IG90cCwNCiAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJzogJHJlZ2lzdGVyX2Zvcm0uZmluZCgnLnJlZ2lzdGVyLWZvcm0tdG9rZW4nKS52YWwoKSwNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgICAgICAgICB1cmw6IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ3dwX3JlYWxlc3RhdGVfYWpheF92ZXJpZnlfb3B0JyksDQogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YTogZm9ybV9kYXRhDQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfc3RlcCA9ICcyJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmhpZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9mb3JtLnNob3coKS50cmlnZ2VyKCdzdWJtaXQnKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnByZXBlbmQoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmciPicgKyBkYXRhLm1zZyArICc8L2Rpdj4nKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAvL1N3aXRjaCBJbnB1dA0KICAgICAgICAgICAgJCgnLm90cC1pbnB1dC1jb250IGlucHV0Lm90cC1pbnB1dCcpLm9uKCdrZXl1cCcsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhYWEnKTsNCiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS52YWwoKS5sZW5ndGggPT09IHBhcnNlSW50KCQodGhpcykuYXR0cignbWF4bGVuZ3RoJykpICYmICQodGhpcykubmV4dCgnaW5wdXQub3RwLWlucHV0JykubGVuZ3RoICE9PSAwKSB7DQogICAgICAgICAgICAgICAgICAgICQodGhpcykubmV4dCgnaW5wdXQub3RwLWlucHV0JykuZm9jdXMoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvL0JhY2tzcGFjZSBpcyBwcmVzc2VkDQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykudmFsKCkubGVuZ3RoID09PSAwICYmIGV2ZW50LmtleUNvZGUgPT0gOCAmJiAkKHRoaXMpLnByZXYoJ2lucHV0Lm90cC1pbnB1dCcpLmxlbmd0aCAhPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnByZXYoJ2lucHV0Lm90cC1pbnB1dCcpLmZvY3VzKCkudmFsKCcnKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgLy8gcmVzZW5kIG90cA0KICAgICAgICAgICAgJCgnYm9keScpLm9uKCdjbGljaycsICcucmVzZW5kLWxpbms6bm90KC5kaXNhYmxlZCknLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLA0KICAgICAgICAgICAgICAgICAgICAkcGFyZW50X2RpdiA9ICR0aGlzLmNsb3Nlc3QoJy5yZWdpc3Rlci1mb3JtLXdyYXBwZXInKSwNCiAgICAgICAgICAgICAgICAgICAgJG90cF9mb3JtID0gJHRoaXMuY2xvc2VzdCgnZm9ybScpOw0KDQogICAgICAgICAgICAgICAgaWYgKCRvdHBfZm9ybS5oYXNDbGFzcygnbG9hZGluZycpKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJCgnLmFsZXJ0JywgdGhpcykucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgJG90cF9mb3JtLmFkZENsYXNzKCdsb2FkaW5nJyk7DQoNCiAgICAgICAgICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgICAgICAgICB1cmw6IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ3dwX3JlYWxlc3RhdGVfYWpheF9yZXNlbmRfb3B0JyksDQogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgJG90cF9mb3JtLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgew0KDQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgJHJlc2VuZExpbmsgPSAkb3RwX2Zvcm0uZmluZCgnLnJlc2VuZC1saW5rJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVyID0gJG90cF9mb3JtLmZpbmQoJy5yZXNlbmQtdGltZXInKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlbmRUaW1lID0gcGFyc2VJbnQod3BfcmVhbGVzdGF0ZV9vcHRzLnJlc2VuZF9vdHBfd2FpdF90aW1lKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc2VuZFRpbWUgPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc2VuZExpbmsuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc2VuZFRpbWVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVzZW5kVGltZXIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZW5kVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVyLmh0bWwoJygnICsgcmVzZW5kVGltZSArICcpJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNlbmRUaW1lIDw9IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVzZW5kVGltZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc2VuZExpbmsucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZXIuaHRtbCgnJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZW5kVGltZS0tOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIj4nICsgZGF0YS5tc2cgKyAnPC9kaXY+Jyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ2Zvcm0ucmVnaXN0ZXItZm9ybS1vdHAgLm5vLWNoYW5nZScsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgdmFyICRwYXJlbnRfZGl2ID0gJHRoaXMuY2xvc2VzdCgnLnJlZ2lzdGVyLWZvcm0td3JhcHBlcicpOw0KICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJ2Zvcm0nKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgcmVnaXN0ZXJfc3RlcCA9ICcxJzsNCiAgICAgICAgICAgICAgICAkcGFyZW50X2Rpdi5maW5kKCdmb3JtLnJlZ2lzdGVyLWZvcm0nKS5zaG93KCk7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgLy8gd3AtcmVhbGVzdGF0ZS1yZXNlbmQtYXBwcm92ZS1hY2NvdW50LWJ0bg0KICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy53cC1yZWFsZXN0YXRlLXJlc2VuZC1hcHByb3ZlLWFjY291bnQtYnRuJywgZnVuY3Rpb24oZSkgew0KICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLA0KICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyID0gJCh0aGlzKS5wYXJlbnQoKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgIHVybDogd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9hamF4X3Jlc2VuZF9hcHByb3ZlX2FjY291bnQnKSwNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICd3cF9yZWFsZXN0YXRlX2FqYXhfcmVzZW5kX2FwcHJvdmVfYWNjb3VudCcsDQogICAgICAgICAgICAgICAgICAgICAgICBsb2dpbjogJHRoaXMuZGF0YSgnbG9naW4nKSwNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbChkYXRhLm1zZyk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoZGF0YS5tc2cpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICB9LA0KICAgICAgICB1c2VyQ2hhbmdlUGFzczogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7DQogICAgICAgICAgICAkKCdib2R5Jykub24oJ3N1Ym1pdCcsICdmb3JtLmNoYW5nZS1wYXNzd29yZC1mb3JtJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsNCiAgICAgICAgICAgICAgICAkKCcuYWxlcnQnLCB0aGlzKS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgIHVybDogd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9hamF4X2NoYW5nZV9wYXNzd29yZCcpLA0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQogICAgICAgICAgICAgICAgICAgIGRhdGE6ICQodGhpcykuc2VyaWFsaXplKCkgKyAiJmFjdGlvbj13cF9yZWFsZXN0YXRlX2FqYXhfY2hhbmdlX3Bhc3N3b3JkIg0KICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnByZXBlbmQoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPicgKyBkYXRhLm1zZyArICc8L2Rpdj4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3cF9yZWFsZXN0YXRlX29wdHMubG9naW5fcmVnaXN0ZXJfdXJsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnByZXBlbmQoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmciPicgKyBkYXRhLm1zZyArICc8L2Rpdj4nKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9LA0KICAgICAgICByZW1vdmVQcm9wZXJ0eTogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7DQogICAgICAgICAgICAkKCcucHJvcGVydHktYnV0dG9uLWRlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgdmFyIHIgPSBjb25maXJtKHdwX3JlYWxlc3RhdGVfb3B0cy5ybV9pdGVtX3R4dCk7DQogICAgICAgICAgICAgICAgaWYgKHIgPT0gdHJ1ZSkgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlfaWQgPSAkKHRoaXMpLmRhdGEoJ3Byb3BlcnR5X2lkJyk7DQogICAgICAgICAgICAgICAgICAgIHZhciBub25jZSA9ICQodGhpcykuZGF0YSgnbm9uY2UnKTsNCiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9hamF4X3JlbW92ZV9wcm9wZXJ0eScpLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLA0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydHlfaWQnOiBwcm9wZXJ0eV9pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9uY2UnOiBub25jZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ3dwX3JlYWxlc3RhdGVfYWpheF9yZW1vdmVfcHJvcGVydHknLA0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcubXktcHJvcGVydGllcy1pdGVtJykucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dNZXNzYWdlKGRhdGEubXNnLCBkYXRhLnN0YXR1cyk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9LA0KICAgICAgICBhZGRQcm9wZXJ0eUZhdm9yaXRlOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYnRuLWFkZC1wcm9wZXJ0eS1mYXZvcml0ZScsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlfaWQgPSAkKHRoaXMpLmRhdGEoJ3Byb3BlcnR5X2lkJyk7DQogICAgICAgICAgICAgICAgdmFyIG5vbmNlID0gJCh0aGlzKS5kYXRhKCdub25jZScpOw0KICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgIHVybDogd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9hamF4X2FkZF9wcm9wZXJ0eV9mYXZvcml0ZScpLA0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQogICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0eV9pZCc6IHByb3BlcnR5X2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmNlJzogbm9uY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ3dwX3JlYWxlc3RhdGVfYWpheF9hZGRfcHJvcGVydHlfZmF2b3JpdGUnLA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2J0bi1hZGQtcHJvcGVydHktZmF2b3JpdGUnKS5hZGRDbGFzcygnYnRuLWFkZGVkLXByb3BlcnR5LWZhdm9yaXRlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5kYXRhKCdub25jZScsIGRhdGEubm9uY2UpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCJhZnRlcl9hZGRfcHJvcGVydHlfZmF2b3JpdGUiLCBbJHRoaXMsIGRhdGFdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dNZXNzYWdlKGRhdGEubXNnLCBkYXRhLnN0YXR1cyk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSwNCiAgICAgICAgcmVtb3ZlUHJvcGVydHlGYXZvcml0ZTogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7DQogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmJ0bi1hZGRlZC1wcm9wZXJ0eS1mYXZvcml0ZScsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlfaWQgPSAkKHRoaXMpLmRhdGEoJ3Byb3BlcnR5X2lkJyk7DQogICAgICAgICAgICAgICAgdmFyIG5vbmNlID0gJCh0aGlzKS5kYXRhKCdub25jZScpOw0KICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgIHVybDogd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9hamF4X3JlbW92ZV9wcm9wZXJ0eV9mYXZvcml0ZScpLA0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQogICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0eV9pZCc6IHByb3BlcnR5X2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmNlJzogbm9uY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ3dwX3JlYWxlc3RhdGVfYWpheF9yZW1vdmVfcHJvcGVydHlfZmF2b3JpdGUnLA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2J0bi1hZGRlZC1wcm9wZXJ0eS1mYXZvcml0ZScpLmFkZENsYXNzKCdidG4tYWRkLXByb3BlcnR5LWZhdm9yaXRlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5kYXRhKCdub25jZScsIGRhdGEubm9uY2UpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCJhZnRlcl9yZW1vdmVfcHJvcGVydHlfZmF2b3JpdGUiLCBbJHRoaXMsIGRhdGFdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dNZXNzYWdlKGRhdGEubXNnLCBkYXRhLnN0YXR1cyk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgJCgnLmJ0bi1yZW1vdmUtcHJvcGVydHktZmF2b3JpdGUnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5X2lkID0gJCh0aGlzKS5kYXRhKCdwcm9wZXJ0eV9pZCcpOw0KICAgICAgICAgICAgICAgIHZhciBub25jZSA9ICQodGhpcykuZGF0YSgnbm9uY2UnKTsNCiAgICAgICAgICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgICAgICAgICB1cmw6IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ3dwX3JlYWxlc3RhdGVfYWpheF9yZW1vdmVfcHJvcGVydHlfZmF2b3JpdGUnKSwNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydHlfaWQnOiBwcm9wZXJ0eV9pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICdub25jZSc6IG5vbmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbic6ICd3cF9yZWFsZXN0YXRlX2FqYXhfcmVtb3ZlX3Byb3BlcnR5X2Zhdm9yaXRlJywNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5wcm9wZXJ0eS1mYXZvcml0ZS13cmFwcGVyJykucmVtb3ZlKCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoImFmdGVyX3JlbW92ZV9wcm9wZXJ0eV9mYXZvcml0ZSIsIFskdGhpcywgZGF0YV0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHNlbGYuc2hvd01lc3NhZ2UoZGF0YS5tc2csIGRhdGEuc3RhdHVzKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9LA0KICAgICAgICAvLyBjb21wYXJlDQogICAgICAgIGFnZW5jeUFkZEFnZW50OiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCg0KICAgICAgICAgICAgaWYgKCQudWkgIT0gdW5kZWZpbmVkICYmICQudWkuYXV0b2NvbXBsZXRlICE9IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgICAgICQoJyN0ZWFtLWFnZW50LWF1dG9jb21wbGV0ZScpLmF1dG9jb21wbGV0ZSh7DQogICAgICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24ocmVxdWVzdCwgcmVzcG9uc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2FqYXhfZ2V0X2FnZW50cycpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnd3BfcmVhbGVzdGF0ZV9hamF4X2dldF9hZ2VudHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxOiByZXF1ZXN0LnRlcm0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UoZGF0YSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24oZXZlbnQsIHVpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCIjdGVhbS1hZ2VudC1hdXRvY29tcGxldGUiKS52YWwoJycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz0idGVhbS1hZ2VudC1pbm5lciI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFnZW50X2lkIiB2YWx1ZT0iJyArIHVpLml0ZW0udmFsdWUgKyAnIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0idGVhbS1hZ2VudC1pbWciPic7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodWkuaXRlbS5pbWcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8aW1nIHNyYz0iJyArIHVpLml0ZW0uaW1nICsgJyI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPGkgY2xhc3M9ImZhIGZhLXVzZXIiPjwvaT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPC9kaXY+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InRlYW0tYWdlbnQtY29udGVudCI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIGNsYXNzPSJ0ZWFtLWFnZW50LWxhYmVsIj4nICsgdWkuaXRlbS5sYWJlbCArICc8L3NwYW4+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIGNsYXNzPSJ0ZWFtLWFnZW50LXJlbW92ZSI+PGkgY2xhc3M9ImZhcyBmYS10aW1lcyI+PC9pPjwvc3Bhbj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPC9kaXY+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCIjdGVhbS1hZ2VudC1hdXRvY29tcGxldGUiKS5jbG9zZXN0KCcudGVhbS1hZ2VudC1hdXRvY29tcGxldGUtd3JhcHBlcicpLmZpbmQoJy50ZWFtLWFnZW50LXdyYXBwZXInKS5odG1sKGh0bWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy50ZWFtLWFnZW50LXJlbW92ZScsIGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy50ZWFtLWFnZW50LWlubmVyJykucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pLmF1dG9jb21wbGV0ZSgiaW5zdGFuY2UiKS5fcmVuZGVySXRlbSA9IGZ1bmN0aW9uKHVsLCBpdGVtKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9InRlYW0tYWdlbnQtbGlzdC1pbm5lciI+JzsNCiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0idGVhbS1hZ2VudC1saXN0LWltZyI+JzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW1nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8aW1nIHNyYz0iJyArIGl0ZW0uaW1nICsgJyI+JzsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxpIGNsYXNzPSJmYSBmYS11c2VyIj48L2k+JzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8L2Rpdj4nOw0KICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJ0ZWFtLWFnZW50LWxpc3QtY29udGVudCI+JzsNCiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPHNwYW4gY2xhc3M9InRlYW0tYWdlbnQtbGlzdC1sYWJlbCI+JyArIGl0ZW0ubGFiZWwgKyAnPC9zcGFuPic7DQogICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7DQogICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7DQoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoIjxsaT4iKS5hcHBlbmQoaHRtbCkuYXBwZW5kVG8odWwpOw0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvLyBhZGQNCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdzdWJtaXQnLCAnZm9ybS5hZ2VuY3ktYWRkLWFnZW50cy1mb3JtJywgZnVuY3Rpb24oZSkgew0KICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2FqYXhfYWdlbmN5X2FkZF9hZ2VudCcpLA0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQogICAgICAgICAgICAgICAgICAgIGRhdGE6ICR0aGlzLnNlcmlhbGl6ZSgpICsgJyZhY3Rpb249d3BfcmVhbGVzdGF0ZV9hamF4X2FnZW5jeV9hZGRfYWdlbnQnDQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmFnZW5jeS1hZ2VudHMtbGlzdC1pbm5lcicpLmFwcGVuZChkYXRhLmh0bWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnLnRlYW0tYWdlbnQtaW5uZXInKS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dNZXNzYWdlKGRhdGEubXNnLCBkYXRhLnN0YXR1cyk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAvLyByZW1vdmUNCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYnRuLWFnZW5jeS1yZW1vdmUtYWdlbnQnLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgIHZhciByID0gY29uZmlybSh3cF9yZWFsZXN0YXRlX29wdHMucm1faXRlbV90eHQpOw0KICAgICAgICAgICAgICAgIGlmIChyID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGFnZW50X2lkID0gJCh0aGlzKS5kYXRhKCdhZ2VudF9pZCcpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgbm9uY2UgPSAkKHRoaXMpLmRhdGEoJ25vbmNlJyk7DQogICAgICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ3dwX3JlYWxlc3RhdGVfYWpheF9hZ2VuY3lfcmVtb3ZlX2FnZW50JyksDQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZ2VudF9pZCc6IGFnZW50X2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub25jZSc6IG5vbmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiAnd3BfcmVhbGVzdGF0ZV9hamF4X2FnZW5jeV9yZW1vdmVfYWdlbnQnLA0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCdhcnRpY2xlLmFnZW50LXRlYW0nKS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2hvd01lc3NhZ2UoZGF0YS5tc2csIGRhdGEuc3RhdHVzKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIC8vIGNvbXBhcmUNCiAgICAgICAgYWRkUHJvcGVydHlDb21wYXJlOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYnRuLWFkZC1wcm9wZXJ0eS1jb21wYXJlJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eV9pZCA9ICQodGhpcykuZGF0YSgncHJvcGVydHlfaWQnKTsNCiAgICAgICAgICAgICAgICB2YXIgbm9uY2UgPSAkKHRoaXMpLmRhdGEoJ25vbmNlJyk7DQogICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2FqYXhfYWRkX3Byb3BlcnR5X2NvbXBhcmUnKSwNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydHlfaWQnOiBwcm9wZXJ0eV9pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICdub25jZSc6IG5vbmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbic6ICd3cF9yZWFsZXN0YXRlX2FqYXhfYWRkX3Byb3BlcnR5X2NvbXBhcmUnLA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2J0bi1hZGQtcHJvcGVydHktY29tcGFyZScpLmFkZENsYXNzKCdidG4tYWRkZWQtcHJvcGVydHktY29tcGFyZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZGF0YSgnbm9uY2UnLCBkYXRhLm5vbmNlKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcigiYWZ0ZXJfYWRkX3Byb3BlcnR5X2NvbXBhcmUiLCBbJHRoaXMsIGRhdGFdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dNZXNzYWdlKGRhdGEubXNnLCBkYXRhLnN0YXR1cyk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSwNCiAgICAgICAgcmVtb3ZlUHJvcGVydHlDb21wYXJlOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYnRuLWFkZGVkLXByb3BlcnR5LWNvbXBhcmUnLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5X2lkID0gJCh0aGlzKS5kYXRhKCdwcm9wZXJ0eV9pZCcpOw0KICAgICAgICAgICAgICAgIHZhciBub25jZSA9ICQodGhpcykuZGF0YSgnbm9uY2UnKTsNCiAgICAgICAgICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgICAgICAgICB1cmw6IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ3dwX3JlYWxlc3RhdGVfYWpheF9yZW1vdmVfcHJvcGVydHlfY29tcGFyZScpLA0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQogICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0eV9pZCc6IHByb3BlcnR5X2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmNlJzogbm9uY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ3dwX3JlYWxlc3RhdGVfYWpheF9yZW1vdmVfcHJvcGVydHlfY29tcGFyZScsDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnYnRuLWFkZGVkLXByb3BlcnR5LWNvbXBhcmUnKS5hZGRDbGFzcygnYnRuLWFkZC1wcm9wZXJ0eS1jb21wYXJlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5kYXRhKCdub25jZScsIGRhdGEubm9uY2UpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCJhZnRlcl9yZW1vdmVfcHJvcGVydHlfY29tcGFyZSIsIFskdGhpcywgZGF0YV0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHNlbGYuc2hvd01lc3NhZ2UoZGF0YS5tc2csIGRhdGEuc3RhdHVzKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAkKCcuYnRuLXJlbW92ZS1wcm9wZXJ0eS1jb21wYXJlJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eV9pZCA9ICQodGhpcykuZGF0YSgncHJvcGVydHlfaWQnKTsNCiAgICAgICAgICAgICAgICB2YXIgbm9uY2UgPSAkKHRoaXMpLmRhdGEoJ25vbmNlJyk7DQogICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2FqYXhfcmVtb3ZlX3Byb3BlcnR5X2NvbXBhcmUnKSwNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydHlfaWQnOiBwcm9wZXJ0eV9pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICdub25jZSc6IG5vbmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbic6ICd3cF9yZWFsZXN0YXRlX2FqYXhfcmVtb3ZlX3Byb3BlcnR5X2NvbXBhcmUnLA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgew0KICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgc2VsZi5zaG93TWVzc2FnZShkYXRhLm1zZywgZGF0YS5zdGF0dXMpOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIHJldmlld0luaXQ6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOw0KDQogICAgICAgICAgICBpZiAoJCgnLmNvbW1lbnQtZm9ybS1yYXRpbmcnKS5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgJCgnLmNvbW1lbnQtZm9ybS1yYXRpbmcgLnJhdGluZy1pbm5lcicpLmVhY2goZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBlX3RoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgJHN0YXIgPSBlX3RoaXMuZmluZCgnLnJldmlldy1zdGFycycpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgJHJldmlldyA9IGVfdGhpcy5maW5kKCdpbnB1dC5yYXRpbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgJHN0YXIuZmluZCgnbGknKS5vbignbW91c2VvdmVyJywNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykubmV4dEFsbCgpLmZpbmQoJ3NwYW4nKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcmV2QWxsKCkuZmluZCgnc3BhbicpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKS5hZGRDbGFzcygnYWN0aXZlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCdzcGFuJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpLmFkZENsYXNzKCdhY3RpdmUnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgJHN0YXIub24oJ21vdXNlb3V0JywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9ICRyZXZpZXcudmFsKCkgLSAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRfZSA9ICRzdGFyLmZpbmQoJ2xpJykuZXEoY3VycmVudCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZS5uZXh0QWxsKCkuZmluZCgnc3BhbicpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZS5wcmV2QWxsKCkuZmluZCgnc3BhbicpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKS5hZGRDbGFzcygnYWN0aXZlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2UuZmluZCgnc3BhbicpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKS5hZGRDbGFzcygnYWN0aXZlJyk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICRzdGFyLmZpbmQoJ2xpJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLm5leHRBbGwoKS5maW5kKCdzcGFuJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcmV2QWxsKCkuZmluZCgnc3BhbicpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKS5hZGRDbGFzcygnYWN0aXZlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJ3NwYW4nKS5yZW1vdmVDbGFzcygnYWN0aXZlJykuYWRkQ2xhc3MoJ2FjdGl2ZScpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAkcmV2aWV3LnZhbCgkKHRoaXMpLmluZGV4KCkgKyAxKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgcHJvcGVydHlTYXZlZFNlYXJjaDogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7DQogICAgICAgICAgICAkKCcuYnRuLXNhdmVkLXNlYXJjaCcpLm1hZ25pZmljUG9wdXAoew0KICAgICAgICAgICAgICAgIG1haW5DbGFzczogJ3dwLXJlYWxlc3RhdGUtbWZwLWNvbnRhaW5lcicsDQogICAgICAgICAgICAgICAgdHlwZTogJ2lubGluZScsDQogICAgICAgICAgICAgICAgbWlkQ2xpY2s6IHRydWUNCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignc3VibWl0JywgJ2Zvcm0uc2F2ZWQtc2VhcmNoLWZvcm0nLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnbG9hZGluZycpKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCcuYWxlcnQnKS5yZW1vdmUoKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgdmFyIHVybF92YXJzID0gc2VsZi5nZXRVcmxWYXJzKCk7DQogICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2FqYXhfYWRkX3NhdmVkX3NlYXJjaCcpLA0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQogICAgICAgICAgICAgICAgICAgIGRhdGE6ICR0aGlzLnNlcmlhbGl6ZSgpICsgJyZhY3Rpb249d3BfcmVhbGVzdGF0ZV9hamF4X2FkZF9zYXZlZF9zZWFyY2gnICsgdXJsX3ZhcnMNCiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj4nICsgZGF0YS5tc2cgKyAnPC9kaXY+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQubWFnbmlmaWNQb3B1cC5jbG9zZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUwMCk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIj4nICsgZGF0YS5tc2cgKyAnPC9kaXY+Jyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAvLyBSZW1vdmUgcHJvcGVydHkgYWxlcnQNCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYnRuLXJlbW92ZS1zYXZlZC1zZWFyY2gnLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgdmFyIHNhdmVkX3NlYXJjaF9pZCA9ICQodGhpcykuZGF0YSgnc2F2ZWRfc2VhcmNoX2lkJyk7DQogICAgICAgICAgICAgICAgdmFyIG5vbmNlID0gJCh0aGlzKS5kYXRhKCdub25jZScpOw0KICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgIHVybDogd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9hamF4X3JlbW92ZV9zYXZlZF9zZWFyY2gnKSwNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAnc2F2ZWRfc2VhcmNoX2lkJzogc2F2ZWRfc2VhcmNoX2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmNlJzogbm9uY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ3dwX3JlYWxlc3RhdGVfYWpheF9yZW1vdmVfc2F2ZWRfc2VhcmNoJywNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5zYXZlZC1zZWFyY2gtd3JhcHBlcicpLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHNlbGYuc2hvd01lc3NhZ2UoZGF0YS5tc2csIGRhdGEuc3RhdHVzKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9LA0KICAgICAgICBnZXRVcmxWYXJzOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCiAgICAgICAgICAgIHZhciB2YXJzID0gJyc7DQogICAgICAgICAgICB2YXIgaGFzaGVzID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc2xpY2Uod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignPycpICsgMSkuc3BsaXQoJyYnKTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFzaGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgdmFycyArPSAnJicgKyBoYXNoZXNbaV07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdmFyczsNCiAgICAgICAgfSwNCiAgICAgICAgc2VsZWN0MkluaXQ6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOw0KICAgICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbigkLmZuLnNlbGVjdDIpICYmIHR5cGVvZiB3cF9yZWFsZXN0YXRlX3NlbGVjdDJfb3B0cyAhPT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0Ml9hcmdzID0gd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHM7DQogICAgICAgICAgICAgICAgc2VsZWN0Ml9hcmdzWydhbGxvd0NsZWFyJ10gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJ10gPSAxMDsNCiAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ3dpZHRoJ10gPSAnYXV0byc7DQoNCiAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ2xhbmd1YWdlJ10gPSB7DQogICAgICAgICAgICAgICAgICAgIG5vUmVzdWx0czogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHMubGFuZ3VhZ2VfcmVzdWx0Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIGlmICgkKCdzZWxlY3QnKS5oYXNDbGFzcygnb3JkZXJieScpKSB7DQogICAgICAgICAgICAgICAgICAgIHNlbGVjdDJfYXJncy50aGVtZSA9ICdkZWZhdWx0IG9yZGVyYnknOw0KICAgICAgICAgICAgICAgICAgICAkKCdzZWxlY3Qub3JkZXJieScpLnNlbGVjdDIoc2VsZWN0Ml9hcmdzKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJCgnc2VsZWN0LnByb3BlcnR5X2lkJykuc2VsZWN0MihzZWxlY3QyX2FyZ3MpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBmaWx0ZXJMaXN0aW5nOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsNCg0KICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ2Zvcm0gLnRvZ2dsZS1maWVsZCAuaGVhZGluZy1sYWJlbCcsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSAkKHRoaXMpLmNsb3Nlc3QoJy5mb3JtLWdyb3VwJyk7DQogICAgICAgICAgICAgICAgY29udGFpbmVyLmZpbmQoJy5mb3JtLWdyb3VwLWlubmVyJykuc2xpZGVUb2dnbGUoKTsNCiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLmhhc0NsYXNzKCdoaWRlLWNvbnRlbnQnKSkgew0KICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQ2xhc3MoJ2hpZGUtY29udGVudCcpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hZGRDbGFzcygnaGlkZS1jb250ZW50Jyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLnRvZ2dsZS1maWx0ZXItbGlzdCcsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICQodGhpcykuY2xvc2VzdCgnLmZvcm0tZ3JvdXAnKTsNCiAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZCgnLnRlcm1zLWxpc3QgLm1vcmUtZmllbGRzJykuZWFjaChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2FjdGl2ZScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJy50ZXh0JykudGV4dCh3cF9yZWFsZXN0YXRlX29wdHMuc2hvd19tb3JlKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnLnRleHQnKS50ZXh0KHdwX3JlYWxlc3RhdGVfb3B0cy5zaG93X2xlc3MpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbigkLmZuLnNsaWRlcikpIHsNCiAgICAgICAgICAgICAgICAkKCcuc2VhcmNoLWRpc3RhbmNlLXNsaWRlcicpLmVhY2goZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgICAgIHZhciBzZWFyY2hfZGlzdGFuY2UgPSAkdGhpcy5jbG9zZXN0KCcuc2VhcmNoLWRpc3RhbmNlLXdyYXBwZXInKS5maW5kKCdpbnB1dFtuYW1lXj1maWx0ZXItZGlzdGFuY2VdJyk7DQogICAgICAgICAgICAgICAgICAgIHZhciBzZWFyY2hfd3JhcCA9ICR0aGlzLmNsb3Nlc3QoJy5zZWFyY2hfZGlzdGFuY2Vfd3JhcHBlcicpOw0KICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnNsaWRlcih7DQogICAgICAgICAgICAgICAgICAgICAgICByYW5nZTogIm1pbiIsDQogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VhcmNoX2Rpc3RhbmNlLnZhbCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWluOiAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiAxMDAsDQogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogZnVuY3Rpb24oZXZlbnQsIHVpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2Rpc3RhbmNlLnZhbCh1aS52YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnRleHQtZGlzdGFuY2UnLCBzZWFyY2hfd3JhcCkudGV4dCh1aS52YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmRpc3RhbmNlLWN1c3RvbS1oYW5kbGUnLCAkdGhpcykuYXR0cigiZGF0YS12YWx1ZSIsIHVpLnZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfZGlzdGFuY2UudHJpZ2dlcignY2hhbmdlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuZGlzdGFuY2UtY3VzdG9tLWhhbmRsZScsICR0aGlzKS5hdHRyKCJkYXRhLXZhbHVlIiwgJCh0aGlzKS5zbGlkZXIoInZhbHVlIikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgICAgICQoJy5tYWluLXJhbmdlLXNsaWRlcicpLmVhY2goZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLnNsaWRlcih7DQogICAgICAgICAgICAgICAgICAgICAgICByYW5nZTogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogJHRoaXMuZGF0YSgnbWluJyksDQogICAgICAgICAgICAgICAgICAgICAgICBtYXg6ICR0aGlzLmRhdGEoJ21heCcpLA0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJHRoaXMucGFyZW50KCkuZmluZCgnLmZpbHRlci1mcm9tJykudmFsKCksICR0aGlzLnBhcmVudCgpLmZpbmQoJy5maWx0ZXItdG8nKS52YWwoKV0sDQogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogZnVuY3Rpb24oZXZlbnQsIHVpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkuZmluZCgnLmZyb20tdGV4dCcpLnRleHQodWkudmFsdWVzWzBdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5maW5kKCcuZmlsdGVyLWZyb20nKS52YWwodWkudmFsdWVzWzBdKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLmZpbmQoJy50by10ZXh0JykudGV4dCh1aS52YWx1ZXNbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLmZpbmQoJy5maWx0ZXItdG8nKS52YWwodWkudmFsdWVzWzFdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5maW5kKCcuZmlsdGVyLXRvJykudHJpZ2dlcignY2hhbmdlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgJCgnLnByaWNlLXJhbmdlLXNsaWRlcicpLmVhY2goZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLnNsaWRlcih7DQogICAgICAgICAgICAgICAgICAgICAgICByYW5nZTogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogJHRoaXMuZGF0YSgnbWluJyksDQogICAgICAgICAgICAgICAgICAgICAgICBtYXg6ICR0aGlzLmRhdGEoJ21heCcpLA0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJHRoaXMucGFyZW50KCkuZmluZCgnLmZpbHRlci1mcm9tJykudmFsKCksICR0aGlzLnBhcmVudCgpLmZpbmQoJy5maWx0ZXItdG8nKS52YWwoKV0sDQogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogZnVuY3Rpb24oZXZlbnQsIHVpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyICRmcm9tX3ByaWNlID0gdWkudmFsdWVzWzBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkdG9fcHJpY2UgPSB1aS52YWx1ZXNbMV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdwX3JlYWxlc3RhdGVfb3B0cy5lbmFibGVfbXVsdGlfY3VycmVuY2llcyA9PT0gJ3llcycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZyb21fcHJpY2UgPSBzZWxmLnNob3J0ZW5OdW1iZXIoJGZyb21fcHJpY2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9fcHJpY2UgPSBzZWxmLnNob3J0ZW5OdW1iZXIoJHRvX3ByaWNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnJvbV9wcmljZSA9IHNlbGYuYWRkQ29tbWFzKCRmcm9tX3ByaWNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvX3ByaWNlID0gc2VsZi5hZGRDb21tYXMoJHRvX3ByaWNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkuZmluZCgnLmZyb20tdGV4dCAucHJpY2UtdGV4dCcpLnRleHQoJGZyb21fcHJpY2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLmZpbmQoJy5maWx0ZXItZnJvbScpLnZhbCh1aS52YWx1ZXNbMF0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkuZmluZCgnLnRvLXRleHQgLnByaWNlLXRleHQnKS50ZXh0KCR0b19wcmljZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkuZmluZCgnLmZpbHRlci10bycpLnZhbCh1aS52YWx1ZXNbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLmZpbmQoJy5maWx0ZXItdG8nKS50cmlnZ2VyKCdjaGFuZ2UnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICQoJy5maW5kLW1lJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgIHZhciB0aGlzX2UgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSAkKHRoaXMpLmNsb3Nlc3QoJy5mb3JtLWdyb3VwJyk7DQoNCiAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHBvc2l0aW9uKSB7DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPSJmaWx0ZXItY2VudGVyLWxhdGl0dWRlIl0nKS52YWwocG9zaXRpb24uY29vcmRzLmxhdGl0dWRlKTsNCiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmZpbmQoJ2lucHV0W25hbWU9ImZpbHRlci1jZW50ZXItbG9uZ2l0dWRlIl0nKS52YWwocG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZSk7DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPSJmaWx0ZXItY2VudGVyLWxvY2F0aW9uIl0nKS52YWwoJ0xvY2F0aW9uJyk7DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCcuY2xlYXItbG9jYXRpb24nKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gW3Bvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSwgcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZV07DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBMLmVzcmkuR2VvY29kaW5nLmdlb2NvZGVTZXJ2aWNlICE9ICd1bmRlZmluZWQnKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnZW9jb2RlU2VydmljZSA9IEwuZXNyaS5HZW9jb2RpbmcuZ2VvY29kZVNlcnZpY2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGdlb2NvZGVTZXJ2aWNlLnJldmVyc2UoKS5sYXRsbmcocG9zaXRpb24pLnJ1bihmdW5jdGlvbihlcnJvciwgcmVzdWx0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmZpbmQoJ2lucHV0W25hbWU9ImZpbHRlci1jZW50ZXItbG9jYXRpb24iXScpLnZhbChyZXN1bHQuYWRkcmVzcy5NYXRjaF9hZGRyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNfZS5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNfZS5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgIH0sIHsNCiAgICAgICAgICAgICAgICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5OiB0cnVlDQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgJCgnLmNsZWFyLWxvY2F0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICQodGhpcykuY2xvc2VzdCgnLmZvcm0tZ3JvdXAnKTsNCg0KICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPSJmaWx0ZXItY2VudGVyLWxhdGl0dWRlIl0nKS52YWwoJycpOw0KICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPSJmaWx0ZXItY2VudGVyLWxvbmdpdHVkZSJdJykudmFsKCcnKTsNCiAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZCgnaW5wdXRbbmFtZT0iZmlsdGVyLWNlbnRlci1sb2NhdGlvbiJdJykudmFsKCcnKTsNCiAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZCgnLmNsZWFyLWxvY2F0aW9uJykuYWRkQ2xhc3MoJ2hpZGRlbicpOw0KICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCcubGVhZmxldC1nZW9jb2RlLWNvbnRhaW5lcicpLmh0bWwoJycpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAkKCdpbnB1dFtuYW1lPSJmaWx0ZXItY2VudGVyLWxvY2F0aW9uIl0nKS5vbigna2V5dXAnLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gJCh0aGlzKS5jbG9zZXN0KCcuZm9ybS1ncm91cCcpOw0KICAgICAgICAgICAgICAgIHZhciB2YWwgPSAkKHRoaXMpLnZhbCgpOw0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnZhbCgpICE9PSAnJykgew0KICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZCgnLmNsZWFyLWxvY2F0aW9uJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCcuY2xlYXItbG9jYXRpb24nKS5yZW1vdmVDbGFzcygnaGlkZGVuJykuYWRkQ2xhc3MoJ2hpZGRlbicpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT0iZmlsdGVyLWNlbnRlci1sb2NhdGlvbiJdJykuZWFjaChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gJCh0aGlzKS5jbG9zZXN0KCcuZm9ybS1ncm91cCcpOw0KICAgICAgICAgICAgICAgIHZhciB2YWwgPSAkKHRoaXMpLnZhbCgpOw0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnZhbCgpICE9PSAnJykgew0KICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZCgnLmNsZWFyLWxvY2F0aW9uJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCcuY2xlYXItbG9jYXRpb24nKS5yZW1vdmVDbGFzcygnaGlkZGVuJykuYWRkQ2xhc3MoJ2hpZGRlbicpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAvLyBzZWFyY2ggYXV0b2NvbXBsZXRlIGxvY2F0aW9uDQogICAgICAgICAgICBpZiAod3BfcmVhbGVzdGF0ZV9vcHRzLm1hcF9zZXJ2aWNlID09ICdnb29nbGUtbWFwJykgew0KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZ29vZ2xlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZ29vZ2xlLm1hcHMgPT09ICdvYmplY3QnKSB7DQogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNlYXJjaF9sb2NhdGlvbl9pbml0aWFsaXplKCkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAkKCdpbnB1dFtuYW1lPSJmaWx0ZXItY2VudGVyLWxvY2F0aW9uIl0nKS5lYWNoKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkaWQgPSAkKHRoaXMpLmF0dHIoJ2lkJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mICRpZCAhPT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICQoJyMnICsgJGlkKS5jbG9zZXN0KCcuZm9ybS1ncm91cC1pbm5lcicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXV0b2NvbXBsZXRlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGUoaW5wdXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGUuc2V0VHlwZXMoW10pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3cF9yZWFsZXN0YXRlX29wdHMuZ2VvY29kZXJfY291bnRyeSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlLnNldENvbXBvbmVudFJlc3RyaWN0aW9ucyh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogW3dwX3JlYWxlc3RhdGVfb3B0cy5nZW9jb2Rlcl9jb3VudHJ5XSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlLmFkZExpc3RlbmVyKCdwbGFjZV9jaGFuZ2VkJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGxhY2UgPSBhdXRvY29tcGxldGUuZ2V0UGxhY2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlLnRvU3RyaW5nKCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGxhY2UuZ2VvbWV0cnkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuYWxlcnQoIk5vIGRldGFpbHMgYXZhaWxhYmxlIGZvciBpbnB1dDogJyIgKyBwbGFjZS5uYW1lICsgIiciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPWZpbHRlci1jZW50ZXItbGF0aXR1ZGVdJykudmFsKHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPWZpbHRlci1jZW50ZXItbG9uZ2l0dWRlXScpLnZhbChwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkRG9tTGlzdGVuZXIod2luZG93LCAnbG9hZCcsIHNlYXJjaF9sb2NhdGlvbl9pbml0aWFsaXplKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgTC5Db250cm9sLkdlb2NvZGVyLk5vbWluYXRpbSAhPSAndW5kZWZpbmVkJykgew0KICAgICAgICAgICAgICAgICAgICBpZiAod3BfcmVhbGVzdGF0ZV9vcHRzLmdlb2NvZGVyX2NvdW50cnkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnZW9jb2RlciA9IG5ldyBMLkNvbnRyb2wuR2VvY29kZXIuTm9taW5hdGltKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW9jb2RpbmdRdWVyeVBhcmFtczogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Y29kZXM6IHdwX3JlYWxlc3RhdGVfb3B0cy5nZW9jb2Rlcl9jb3VudHJ5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ2VvY29kZXIgPSBuZXcgTC5Db250cm9sLkdlb2NvZGVyLk5vbWluYXRpbSgpOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZGVsYXkoZm4sIG1zKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGltZXIgPSAwDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oLi4uYXJncykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoZm4uYmluZCh0aGlzLCAuLi5hcmdzKSwgbXMgfHwgMCkNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICQoImlucHV0W25hbWU9ZmlsdGVyLWNlbnRlci1sb2NhdGlvbl0iKS5hdHRyKCdhdXRvY29tcGxldGUnLCAnb2ZmJykuYWZ0ZXIoJzxkaXYgY2xhc3M9ImxlYWZsZXQtZ2VvY29kZS1jb250YWluZXIiPjwvZGl2PicpOw0KICAgICAgICAgICAgICAgICAgICAkKCJpbnB1dFtuYW1lPWZpbHRlci1jZW50ZXItbG9jYXRpb25dIikub24oImtleXVwIiwgZGVsYXkoZnVuY3Rpb24oZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAkKHRoaXMpLnZhbCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzID0gJCh0aGlzKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIgPSAkKHRoaXMpLmNsb3Nlc3QoJy5mb3JtLWdyb3VwLWlubmVyJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocyAmJiBzLmxlbmd0aCA+PSAyKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlb2NvZGVyLmdlb2NvZGUocywgZnVuY3Rpb24ocmVzdWx0cykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3V0cHV0X2h0bWwgPSAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfaHRtbCArPSAnPGxpIGNsYXNzPSJyZXN1bHQtaXRlbSIgZGF0YS1sYXRpdHVkZT0iJyArIHJlc3VsdHNbaV0uY2VudGVyLmxhdCArICciIGRhdGEtbG9uZ2l0dWRlPSInICsgcmVzdWx0c1tpXS5jZW50ZXIubG5nICsgJyIgPjxpIGNsYXNzPSJmYXMgZmEtbWFwLW1hcmtlci1hbHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+ICcgKyByZXN1bHRzW2ldLm5hbWUgKyAnPC9saT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRwdXRfaHRtbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2h0bWwgPSAnPHVsPicgKyBvdXRwdXRfaHRtbCArICc8L3VsPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZCgnLmxlYWZsZXQtZ2VvY29kZS1jb250YWluZXInKS5odG1sKG91dHB1dF9odG1sKS5hZGRDbGFzcygnYWN0aXZlJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhpZ2hsaWdodF90ZXh0cyA9IHMuc3BsaXQoJyAnKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRfdGV4dHMuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZCgnLmxlYWZsZXQtZ2VvY29kZS1jb250YWluZXInKS5oaWdobGlnaHQoaXRlbSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCcubGVhZmxldC1nZW9jb2RlLWNvbnRhaW5lcicpLmh0bWwoJycpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSwgNTAwKSk7DQogICAgICAgICAgICAgICAgICAgICQoJy5mb3JtLWdyb3VwLWlubmVyJykub24oJ2NsaWNrJywgJy5sZWFmbGV0LWdlb2NvZGUtY29udGFpbmVyIHVsIGxpJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gJCh0aGlzKS5jbG9zZXN0KCcuZm9ybS1ncm91cC1pbm5lcicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmZpbmQoJ2lucHV0W25hbWU9ZmlsdGVyLWNlbnRlci1sYXRpdHVkZV0nKS52YWwoJCh0aGlzKS5kYXRhKCdsYXRpdHVkZScpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPWZpbHRlci1jZW50ZXItbG9uZ2l0dWRlXScpLnZhbCgkKHRoaXMpLmRhdGEoJ2xvbmdpdHVkZScpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPWZpbHRlci1jZW50ZXItbG9jYXRpb25dJykudmFsKCQodGhpcykudGV4dCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCcubGVhZmxldC1nZW9jb2RlLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKS5odG1sKCcnKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBhZHZhbmNlDQogICAgICAgICAgICAkKCcuZmlsdGVyLXRvZ2dsZS1hZHYnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7DQogICAgICAgICAgICAgICAgJCgnLmZpbHRlci1hZHZhbmNlLWZpZWxkcycpLnNsaWRlVG9nZ2xlKCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIHByb3BlcnR5Q2hhcnRJbml0OiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQoJyNwcm9wZXJ0eV9jaGFydF93cmFwcGVyJyk7DQogICAgICAgICAgICBpZiAoJHRoaXMubGVuZ3RoIDw9IDApIHsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJHRoaXMuaGFzQ2xhc3MoJ2xvYWRpbmcnKSkgew0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQoNCiAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2dldF9wcm9wZXJ0eV9jaGFydCcpLA0KICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywNCiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnd3BfcmVhbGVzdGF0ZV9nZXRfcHJvcGVydHlfY2hhcnQnLA0KICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eV9pZDogJHRoaXMuZGF0YSgncHJvcGVydHlfaWQnKSwNCiAgICAgICAgICAgICAgICAgICAgbm9uY2U6ICR0aGlzLmRhdGEoJ25vbmNlJyksDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihyZXNwb25zZSkgew0KICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ2Vycm9yJykgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICB2YXIgY3R4ID0gJHRoaXMuZ2V0KDApLmdldENvbnRleHQoIjJkIik7DQogICAgICAgICAgICAgICAgICAgIHZhciBteU5ld0NoYXJ0ID0gbmV3IENoYXJ0KGN0eCk7DQogICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gew0KICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiByZXNwb25zZS5zdGF0c19sYWJlbHMsDQogICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0czogW3sNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcmVzcG9uc2Uuc3RhdHNfdmlldywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHJlc3BvbnNlLmJnX2NvbG9yLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiByZXNwb25zZS5ib3JkZXJfY29sb3IsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcmVzcG9uc2Uuc3RhdHNfdmFsdWVzDQogICAgICAgICAgICAgICAgICAgICAgICB9LCBdDQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvL0Jvb2xlYW4gLSBXaGV0aGVyIHRoZSBzY2FsZSBzaG91bGQgc3RhcnQgYXQgemVybywgb3IgYW4gb3JkZXIgb2YgbWFnbml0dWRlIGRvd24gZnJvbSB0aGUgbG93ZXN0IHZhbHVlDQogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZUJlZ2luQXRaZXJvOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgLy9Cb29sZWFuIC0gV2hldGhlciBncmlkIGxpbmVzIGFyZSBzaG93biBhY3Jvc3MgdGhlIGNoYXJ0DQogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVNob3dHcmlkTGluZXM6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgLy9TdHJpbmcgLSBDb2xvdXIgb2YgdGhlIGdyaWQgbGluZXMNCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlR3JpZExpbmVDb2xvcjogInJnYmEoMCwwLDAsLjA1KSIsDQogICAgICAgICAgICAgICAgICAgICAgICAvL051bWJlciAtIFdpZHRoIG9mIHRoZSBncmlkIGxpbmVzDQogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZUdyaWRMaW5lV2lkdGg6IDEsDQogICAgICAgICAgICAgICAgICAgICAgICAvL0Jvb2xlYW4gLSBXaGV0aGVyIHRvIHNob3cgaG9yaXpvbnRhbCBsaW5lcyAoZXhjZXB0IFggYXhpcykNCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlU2hvd0hvcml6b250YWxMaW5lczogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQm9vbGVhbiAtIFdoZXRoZXIgdG8gc2hvdyB2ZXJ0aWNhbCBsaW5lcyAoZXhjZXB0IFkgYXhpcykNCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlU2hvd1ZlcnRpY2FsTGluZXM6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICAvL0Jvb2xlYW4gLSBJZiB0aGVyZSBpcyBhIHN0cm9rZSBvbiBlYWNoIGJhcg0KICAgICAgICAgICAgICAgICAgICAgICAgYmFyU2hvd1N0cm9rZTogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICAgICAvL051bWJlciAtIFBpeGVsIHdpZHRoIG9mIHRoZSBiYXIgc3Ryb2tlDQogICAgICAgICAgICAgICAgICAgICAgICBiYXJTdHJva2VXaWR0aDogMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vTnVtYmVyIC0gU3BhY2luZyBiZXR3ZWVuIGVhY2ggb2YgdGhlIFggdmFsdWUgc2V0cw0KICAgICAgICAgICAgICAgICAgICAgICAgYmFyVmFsdWVTcGFjaW5nOiA1LA0KICAgICAgICAgICAgICAgICAgICAgICAgLy9OdW1iZXIgLSBTcGFjaW5nIGJldHdlZW4gZGF0YSBzZXRzIHdpdGhpbiBYIHZhbHVlcw0KICAgICAgICAgICAgICAgICAgICAgICAgYmFyRGF0YXNldFNwYWNpbmc6IDEsDQogICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcHM6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICd4LWF4aXMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcm5lclJhZGl1czogNA0KICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHZhciBteUJhckNoYXJ0ID0gbmV3IENoYXJ0KGN0eCwgew0KICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogcmVzcG9uc2UuY2hhcnRfdHlwZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsDQogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zDQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIHByb3BlcnR5TmVhcmJ5WWVscDogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIgJHRoaXMgPSAkKCcjcHJvcGVydHktc2VjdGlvbi1uZWFyYnlfeWVscCcpOw0KICAgICAgICAgICAgaWYgKCR0aGlzLmxlbmd0aCA8PSAwKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKCdsb2FkaW5nJykpIHsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KDQogICAgICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgICAgIHVybDogd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9nZXRfbmVhcmJ5X3llbHAnKSwNCiAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3dwX3JlYWxlc3RhdGVfZ2V0X25lYXJieV95ZWxwJywNCiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfaWQ6ICR0aGlzLmRhdGEoJ3Byb3BlcnR5X2lkJyksDQogICAgICAgICAgICAgICAgICAgIG5vbmNlOiAkdGhpcy5kYXRhKCdub25jZScpLA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24ocmVzcG9uc2UpIHsNCiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLmh0bWwocmVzcG9uc2UuaHRtbCk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoImFmdGVyX25lYXJieV95ZWxwX2NvbnRlbnQiLCBbJHRoaXMsIHJlc3BvbnNlXSk7DQogICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9LA0KICAgICAgICBwcm9wZXJ0eU5lYXJieUdvb2dsZVBsYWNlczogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIgJHRoaXMgPSAkKCcjcHJvcGVydHktc2VjdGlvbi1nb29nbGUtcGxhY2VzJyk7DQogICAgICAgICAgICBpZiAoJHRoaXMubGVuZ3RoIDw9IDApIHsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJHRoaXMuaGFzQ2xhc3MoJ2xvYWRpbmcnKSkgew0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQoNCiAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2dldF9uZWFyYnlfZ29vZ2xlX3BsYWNlcycpLA0KICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywNCiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnd3BfcmVhbGVzdGF0ZV9nZXRfbmVhcmJ5X2dvb2dsZV9wbGFjZXMnLA0KICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eV9pZDogJHRoaXMuZGF0YSgncHJvcGVydHlfaWQnKSwNCiAgICAgICAgICAgICAgICAgICAgbm9uY2U6ICR0aGlzLmRhdGEoJ25vbmNlJyksDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihyZXNwb25zZSkgew0KICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnLnByb3BlcnR5LXNlY3Rpb24tY29udGVudCcpLmh0bWwocmVzcG9uc2UuaHRtbCk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoImFmdGVyX25lYXJieV9nb29nbGVfcGxhY2VfY29udGVudCIsIFskdGhpcywgcmVzcG9uc2VdKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIHByb3BlcnR5V2Fsa1Njb3JlOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQoJyNwcm9wZXJ0eS1zZWN0aW9uLXdhbGtfc2NvcmUnKTsNCiAgICAgICAgICAgIGlmICgkdGhpcy5sZW5ndGggPD0gMCkgew0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnbG9hZGluZycpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ2xvYWRpbmcnKTsNCg0KICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICB1cmw6IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ3dwX3JlYWxlc3RhdGVfZ2V0X3dhbGtfc2NvcmUnKSwNCiAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3dwX3JlYWxlc3RhdGVfZ2V0X3dhbGtfc2NvcmUnLA0KICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eV9pZDogJHRoaXMuZGF0YSgncHJvcGVydHlfaWQnKSwNCiAgICAgICAgICAgICAgICAgICAgbm9uY2U6ICR0aGlzLmRhdGEoJ25vbmNlJyksDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihyZXNwb25zZSkgew0KICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMuaHRtbChyZXNwb25zZS5odG1sKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcigiYWZ0ZXJfd2Fsa19zY29yZV9jb250ZW50IiwgWyR0aGlzLCByZXNwb25zZV0pOw0KICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSwNCiAgICAgICAgbWl4ZXNGbjogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7DQoNCiAgICAgICAgICAgICQoJy5teS1wcm9wZXJ0aWVzLW9yZGVyaW5nJykub24oJ2NoYW5nZScsICdzZWxlY3Qub3JkZXJieScsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnZm9ybScpLnN1Ym1pdCgpOw0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICQoJy5jb250YWN0LWZvcm0td3JhcHBlcicpLm9uKCdzdWJtaXQnLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnLmFsZXJ0JykucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2FqYXhfY29udGFjdF9mb3JtJyksDQogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YTogJHRoaXMuc2VyaWFsaXplKCkgKyAnJmFjdGlvbj13cF9yZWFsZXN0YXRlX2FqYXhfY29udGFjdF9mb3JtJw0KICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnByZXBlbmQoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPicgKyBkYXRhLm1zZyArICc8L2Rpdj4nKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnByZXBlbmQoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmciPicgKyBkYXRhLm1zZyArICc8L2Rpdj4nKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdzdWJtaXQnLCAnZm9ybS5kZWxldGUtcHJvZmlsZS1mb3JtJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLmFsZXJ0JykucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2FqYXhfZGVsZXRlX3Byb2ZpbGUnKSwNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiAkdGhpcy5zZXJpYWxpemUoKSArICcmYWN0aW9uPXdwX3JlYWxlc3RhdGVfYWpheF9kZWxldGVfcHJvZmlsZScNCiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj4nICsgZGF0YS5tc2cgKyAnPC9kaXY+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdwX3JlYWxlc3RhdGVfb3B0cy5ob21lX3VybDsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnByZXBlbmQoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmciPicgKyBkYXRhLm1zZyArICc8L2Rpdj4nKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgIGlmICgkKCdpbnB1dC5maWVsZC1kYXRldGltZXBpY2tlcicpLmxlbmd0aCA+IDAgJiYgJC5pc0Z1bmN0aW9uKCQuZm4uZGF0ZXRpbWVwaWNrZXIpKSB7DQogICAgICAgICAgICAgICAgJCgnaW5wdXQuZmllbGQtZGF0ZXRpbWVwaWNrZXInKS5kYXRldGltZXBpY2tlcih7DQogICAgICAgICAgICAgICAgICAgIHRpbWVwaWNrZXI6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdZLW0tZCcNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gTG9jYXRpb24gQ2hhbmdlDQogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NoYW5nZScsICdzZWxlY3Quc2VsZWN0LWZpZWxkLXJlZ2lvbicsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHZhciB2YWwgPSAkKHRoaXMpLnZhbCgpOw0KICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gJCh0aGlzKS5kYXRhKCduZXh0Jyk7DQogICAgICAgICAgICAgICAgdmFyIG1haW5fc2VsZWN0ID0gJ3NlbGVjdC5zZWxlY3QtZmllbGQtcmVnaW9uJyArIG5leHQ7DQogICAgICAgICAgICAgICAgaWYgKCQobWFpbl9zZWxlY3QpLmxlbmd0aCA+IDApIHsNCg0KICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0Ml9hcmdzID0gd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHM7DQogICAgICAgICAgICAgICAgICAgIHNlbGVjdDJfYXJnc1snYWxsb3dDbGVhciddID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0Ml9hcmdzWydtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCddID0gMTA7DQogICAgICAgICAgICAgICAgICAgIHNlbGVjdDJfYXJnc1snd2lkdGgnXSA9ICcxMDAlJzsNCg0KICAgICAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ2xhbmd1YWdlJ10gPSB7DQogICAgICAgICAgICAgICAgICAgICAgICBub1Jlc3VsdHM6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cF9yZWFsZXN0YXRlX3NlbGVjdDJfb3B0cy5sYW5ndWFnZV9yZXN1bHQ7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICAgICAgJChtYWluX3NlbGVjdCkucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgJChtYWluX3NlbGVjdCkudmFsKCcnKS50cmlnZ2VyKCdjaGFuZ2UnKTsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKG1haW5fc2VsZWN0KS5wYXJlbnQoKS5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ3dwcmVfcHJvY2Vzc19jaGFuZ2VfbG9jYXRpb24nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiAnd3ByZV9wcm9jZXNzX2NoYW5nZV9sb2NhdGlvbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnQnOiB2YWwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YXhvbm9teSc6ICQobWFpbl9zZWxlY3QpLmRhdGEoJ3RheG9ub215JyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN1cml0eSc6IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4X25vbmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobWFpbl9zZWxlY3QpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG1haW5fc2VsZWN0KS5maW5kKCdvcHRpb24nKS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goZGF0YSwgZnVuY3Rpb24oaSwgaXRlbSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9wdGlvbiA9IG5ldyBPcHRpb24oaXRlbS5uYW1lLCBpdGVtLmlkLCB0cnVlLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobWFpbl9zZWxlY3QpLmFwcGVuZChvcHRpb24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJChtYWluX3NlbGVjdCkucHJvcCgiZGlzYWJsZWQiLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJChtYWluX3NlbGVjdCkudmFsKG51bGwpLnNlbGVjdDIoImRlc3Ryb3kiKS5zZWxlY3QyKHNlbGVjdDJfYXJncyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQobWFpbl9zZWxlY3QpLmZpbmQoJ29wdGlvbicpLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJChtYWluX3NlbGVjdCkucHJvcCgiZGlzYWJsZWQiLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKG1haW5fc2VsZWN0KS52YWwobnVsbCkuc2VsZWN0MigiZGVzdHJveSIpLnNlbGVjdDIoc2VsZWN0Ml9hcmdzKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NoYW5nZScsICcucHJvcGVydGllcy1jdXJyZW5jaWVzIGlucHV0JywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCdmb3JtJykudHJpZ2dlcignc3VibWl0Jyk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSwNCiAgICAgICAgc2hvcnRlbk51bWJlcjogZnVuY3Rpb24oJG51bWJlcikgew0KICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOw0KDQogICAgICAgICAgICB2YXIgZGl2aXNvcnMgPSB3cF9yZWFsZXN0YXRlX29wdHMuZGl2aXNvcnM7DQoNCiAgICAgICAgICAgICQuZWFjaChkaXZpc29ycywgZnVuY3Rpb24oJGluZGV4LCAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICBpZiAoJG51bWJlciA8ICgkdmFsdWVbJ2Rpdmlzb3InXSAqIDEwMDApKSB7DQogICAgICAgICAgICAgICAgICAgICRudW1iZXIgPSAkbnVtYmVyIC8gJHZhbHVlWydkaXZpc29yJ107DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmFkZENvbW1hcygkbnVtYmVyKSArICR2YWx1ZVsna2V5J107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgIHJldHVybiAkbnVtYmVyOw0KICAgICAgICB9LA0KICAgICAgICBhZGRDb21tYXM6IGZ1bmN0aW9uKHN0cikgew0KICAgICAgICAgICAgdmFyIHBhcnRzID0gKHN0ciArICIiKS5zcGxpdCgiLiIpLA0KICAgICAgICAgICAgICAgIG1haW4gPSBwYXJ0c1swXSwNCiAgICAgICAgICAgICAgICBsZW4gPSBtYWluLmxlbmd0aCwNCiAgICAgICAgICAgICAgICBvdXRwdXQgPSAiIiwNCiAgICAgICAgICAgICAgICBmaXJzdCA9IG1haW4uY2hhckF0KDApLA0KICAgICAgICAgICAgICAgIGk7DQoNCiAgICAgICAgICAgIGlmIChmaXJzdCA9PT0gJy0nKSB7DQogICAgICAgICAgICAgICAgbWFpbiA9IG1haW4uc2xpY2UoMSk7DQogICAgICAgICAgICAgICAgbGVuID0gbWFpbi5sZW5ndGg7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGZpcnN0ID0gIiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpID0gbGVuIC0gMTsNCiAgICAgICAgICAgIHdoaWxlIChpID49IDApIHsNCiAgICAgICAgICAgICAgICBvdXRwdXQgPSBtYWluLmNoYXJBdChpKSArIG91dHB1dDsNCiAgICAgICAgICAgICAgICBpZiAoKGxlbiAtIGkpICUgMyA9PT0gMCAmJiBpID4gMCkgew0KICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSB3cF9yZWFsZXN0YXRlX29wdHMubW9uZXlfdGhvdXNhbmRzX3NlcGFyYXRvciArIG91dHB1dDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLS1pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gcHV0IHNpZ24gYmFjaw0KICAgICAgICAgICAgb3V0cHV0ID0gZmlyc3QgKyBvdXRwdXQ7DQogICAgICAgICAgICAvLyBwdXQgZGVjaW1hbCBwYXJ0IGJhY2sNCiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7DQogICAgICAgICAgICAgICAgb3V0cHV0ICs9IHdwX3JlYWxlc3RhdGVfb3B0cy5tb25leV9kZWNfcG9pbnQgKyBwYXJ0c1sxXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7DQogICAgICAgIH0sDQogICAgICAgIHNob3dNZXNzYWdlOiBmdW5jdGlvbihtc2csIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKG1zZykgew0KICAgICAgICAgICAgICAgIHZhciBjbGFzc2VzID0gJ2FsZXJ0IGJnLXdhcm5pbmcnOw0KICAgICAgICAgICAgICAgIGlmIChzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgY2xhc3NlcyA9ICdhbGVydCBiZy1pbmZvJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdmFyICRodG1sID0gJzxkaXYgaWQ9IndwLXJlYWxlc3RhdGUtcG9wdXAtbWVzc2FnZSIgY2xhc3M9ImFuaW1hdGVkIGZhZGVJblJpZ2h0Ij48ZGl2IGNsYXNzPSJtZXNzYWdlLWlubmVyICcgKyBjbGFzc2VzICsgJyI+JyArIG1zZyArICc8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgICAgICQoJ2JvZHknKS5maW5kKCcjd3AtcmVhbGVzdGF0ZS1wb3B1cC1tZXNzYWdlJykucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZCgkaHRtbCkuZmFkZUluKDUwMCk7DQogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLmZpbmQoJyN3cC1yZWFsZXN0YXRlLXBvcHVwLW1lc3NhZ2UnKS5yZW1vdmVDbGFzcygnZmFkZUluUmlnaHQnKS5hZGRDbGFzcygnZGVsYXktMnMgZmFkZU91dFJpZ2h0Jyk7DQogICAgICAgICAgICAgICAgfSwgMTUwMCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIHNldENvb2tpZTogZnVuY3Rpb24oY25hbWUsIGN2YWx1ZSwgZXhkYXlzKSB7DQogICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7DQogICAgICAgICAgICBkLnNldFRpbWUoZC5nZXRUaW1lKCkgKyAoZXhkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpOw0KICAgICAgICAgICAgdmFyIGV4cGlyZXMgPSAiZXhwaXJlcz0iICsgZC50b1VUQ1N0cmluZygpOw0KICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY25hbWUgKyAiPSIgKyBjdmFsdWUgKyAiOyAiICsgZXhwaXJlcyArICI7cGF0aD0vIjsNCiAgICAgICAgfSwNCiAgICAgICAgZ2V0Q29va2llOiBmdW5jdGlvbihjbmFtZSkgew0KICAgICAgICAgICAgdmFyIG5hbWUgPSBjbmFtZSArICI9IjsNCiAgICAgICAgICAgIHZhciBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYS5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgIHZhciBjID0gY2FbaV07DQogICAgICAgICAgICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09ICcgJykgYyA9IGMuc3Vic3RyaW5nKDEpOw0KICAgICAgICAgICAgICAgIGlmIChjLmluZGV4T2YobmFtZSkgPT0gMCkgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLCBjLmxlbmd0aCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gIiI7DQogICAgICAgIH0sDQogICAgfQ0KDQogICAgJC53amJNYWluQ29yZSA9IFdKQk1haW5Db3JlLnByb3RvdHlwZTsNCg0KICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICAgICAgICAvLyBJbml0aWFsaXplIHNjcmlwdA0KICAgICAgICBuZXcgV0pCTWFpbkNvcmUoKTsNCg0KICAgIH0pOw0KDQp9KShqUXVlcnkpOw=="}},"time_used":998,"timings":{"blocked":899,"dns":0,"connect":0,"send":0,"wait":98,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/underscore.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.521Z","timestamp":1785145482521,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/underscore.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Mon, 01 Nov 2021 21:47:13 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":19069,"size_decoded":8148,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (19034)","md5":"47e07d05e0e32338ed2e112d3f46cac1","sha1":"331fa3259ce673bf92047a25542305242eb6f35f","sha256":"4f6366518c3d992d6a9a3aee342675532822d6b1d66217df7b284bb450dbb99a","sha512":"583b9cb53036b1f0ede5a97fdc93c59ccbef43220394d37a28950c162e1622740034430e6d7a3f47b4f83c4595efd042ce13a570194e6e2e5f2b7e2875e7aa85","ssdeep":"384:iUsvcJGc5p5ANjxBAlPT/f49EE85c3XQW8mSWLCMNfktcc:svcIc5p5ATBAB/f3iQ4Qo8p","tlshash":"ec8263c839d3f06a926320ba403f1097f23e6e62a8acaa40d265e4ec7c7555dd43bd5c","first_seen":"2023-03-07T01:02:19Z","last_seen":"2026-07-27T09:45:50.904814Z","times_seen":3693,"resource_available":true,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwohZnVuY3Rpb24obixyKXt2YXIgdCxlOyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9cigpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJ1bmRlcnNjb3JlIixyKToobj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczpufHxzZWxmLHQ9bi5fLChlPW4uXz1yKCkpLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbi5fPXQsZX0pfSh0aGlzLGZ1bmN0aW9uKCl7dmFyIG49IjEuMTMuMSIscj0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYuc2VsZj09PXNlbGYmJnNlbGZ8fCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwuZ2xvYmFsPT09Z2xvYmFsJiZnbG9iYWx8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl8fHt9LGU9QXJyYXkucHJvdG90eXBlLG89T2JqZWN0LnByb3RvdHlwZSxzPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sP1N5bWJvbC5wcm90b3R5cGU6bnVsbCx1PWUucHVzaCxhPWUuc2xpY2UscD1vLnRvU3RyaW5nLHQ9by5oYXNPd25Qcm9wZXJ0eSxpPSJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXIsZj0idW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3LGM9QXJyYXkuaXNBcnJheSxsPU9iamVjdC5rZXlzLGg9T2JqZWN0LmNyZWF0ZSx2PWkmJkFycmF5QnVmZmVyLmlzVmlldyx5PWlzTmFOLGQ9aXNGaW5pdGUsZz0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLGI9WyJ2YWx1ZU9mIiwiaXNQcm90b3R5cGVPZiIsInRvU3RyaW5nIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJoYXNPd25Qcm9wZXJ0eSIsInRvTG9jYWxlU3RyaW5nIl0sbT1NYXRoLnBvdygyLDUzKS0xO2Z1bmN0aW9uIGoodSxpKXtyZXR1cm4gaT1udWxsPT1pP3UubGVuZ3RoLTE6K2ksZnVuY3Rpb24oKXtmb3IodmFyIG49TWF0aC5tYXgoYXJndW1lbnRzLmxlbmd0aC1pLDApLHI9QXJyYXkobiksdD0wO3Q8bjt0Kyspclt0XT1hcmd1bWVudHNbdCtpXTtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiB1LmNhbGwodGhpcyxyKTtjYXNlIDE6cmV0dXJuIHUuY2FsbCh0aGlzLGFyZ3VtZW50c1swXSxyKTtjYXNlIDI6cmV0dXJuIHUuY2FsbCh0aGlzLGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0scil9Zm9yKHZhciBlPUFycmF5KGkrMSksdD0wO3Q8aTt0KyspZVt0XT1hcmd1bWVudHNbdF07cmV0dXJuIGVbaV09cix1LmFwcGx5KHRoaXMsZSl9fWZ1bmN0aW9uIF8obil7dmFyIHI9dHlwZW9mIG47cmV0dXJuImZ1bmN0aW9uIj09cnx8Im9iamVjdCI9PXImJiEhbn1mdW5jdGlvbiB3KG4pe3JldHVybiB2b2lkIDA9PT1ufWZ1bmN0aW9uIEEobil7cmV0dXJuITA9PT1ufHwhMT09PW58fCJbb2JqZWN0IEJvb2xlYW5dIj09PXAuY2FsbChuKX1mdW5jdGlvbiB4KG4pe3ZhciByPSJbb2JqZWN0ICIrbisiXSI7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBwLmNhbGwobik9PT1yfX12YXIgUz14KCJTdHJpbmciKSxPPXgoIk51bWJlciIpLE09eCgiRGF0ZSIpLEU9eCgiUmVnRXhwIiksQj14KCJFcnJvciIpLE49eCgiU3ltYm9sIiksST14KCJBcnJheUJ1ZmZlciIpLFQ9eCgiRnVuY3Rpb24iKSxrPXIuZG9jdW1lbnQmJnIuZG9jdW1lbnQuY2hpbGROb2RlcyxEPVQ9ImZ1bmN0aW9uIiE9dHlwZW9mLy4vJiYib2JqZWN0IiE9dHlwZW9mIEludDhBcnJheSYmImZ1bmN0aW9uIiE9dHlwZW9mIGs/ZnVuY3Rpb24obil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG58fCExfTpULFI9eCgiT2JqZWN0IiksRj1mJiZSKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoOCkpKSxWPSJ1bmRlZmluZWQiIT10eXBlb2YgTWFwJiZSKG5ldyBNYXApLFA9eCgiRGF0YVZpZXciKTt2YXIgcT1GP2Z1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uJiZEKG4uZ2V0SW50OCkmJkkobi5idWZmZXIpfTpQLFU9Y3x8eCgiQXJyYXkiKTtmdW5jdGlvbiBXKG4scil7cmV0dXJuIG51bGwhPW4mJnQuY2FsbChuLHIpfXZhciB6PXgoIkFyZ3VtZW50cyIpOyFmdW5jdGlvbigpe3ooYXJndW1lbnRzKXx8KHo9ZnVuY3Rpb24obil7cmV0dXJuIFcobiwiY2FsbGVlIil9KX0oKTt2YXIgTD16O2Z1bmN0aW9uICQobil7cmV0dXJuIE8obikmJnkobil9ZnVuY3Rpb24gQyhuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gSyhyKXtyZXR1cm4gZnVuY3Rpb24obil7bj1yKG4pO3JldHVybiJudW1iZXIiPT10eXBlb2YgbiYmMDw9biYmbjw9bX19ZnVuY3Rpb24gSihyKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PW4/dm9pZCAwOm5bcl19fXZhciBHPUooImJ5dGVMZW5ndGgiKSxIPUsoRyksUT0vXFtvYmplY3QgKChJfFVpKW50KDh8MTZ8MzIpfEZsb2F0KDMyfDY0KXxVaW50OENsYW1wZWR8QmlnKEl8VWkpbnQ2NClBcnJheVxdLzt2YXIgWD1pP2Z1bmN0aW9uKG4pe3JldHVybiB2P3YobikmJiFxKG4pOkgobikmJlEudGVzdChwLmNhbGwobikpfTpDKCExKSxZPUooImxlbmd0aCIpO2Z1bmN0aW9uIFoobixyKXtyPWZ1bmN0aW9uKHIpe2Zvcih2YXIgdD17fSxuPXIubGVuZ3RoLGU9MDtlPG47KytlKXRbcltlXV09ITA7cmV0dXJue2NvbnRhaW5zOmZ1bmN0aW9uKG4pe3JldHVybiB0W25dfSxwdXNoOmZ1bmN0aW9uKG4pe3JldHVybiB0W25dPSEwLHIucHVzaChuKX19fShyKTt2YXIgdD1iLmxlbmd0aCxlPW4uY29uc3RydWN0b3IsdT1EKGUpJiZlLnByb3RvdHlwZXx8byxpPSJjb25zdHJ1Y3RvciI7Zm9yKFcobixpKSYmIXIuY29udGFpbnMoaSkmJnIucHVzaChpKTt0LS07KShpPWJbdF0paW4gbiYmbltpXSE9PXVbaV0mJiFyLmNvbnRhaW5zKGkpJiZyLnB1c2goaSl9ZnVuY3Rpb24gbm4obil7aWYoIV8obikpcmV0dXJuW107aWYobClyZXR1cm4gbChuKTt2YXIgcix0PVtdO2ZvcihyIGluIG4pVyhuLHIpJiZ0LnB1c2gocik7cmV0dXJuIGcmJloobix0KSx0fWZ1bmN0aW9uIHJuKG4scil7dmFyIHQ9bm4ociksZT10Lmxlbmd0aDtpZihudWxsPT1uKXJldHVybiFlO2Zvcih2YXIgdT1PYmplY3QobiksaT0wO2k8ZTtpKyspe3ZhciBvPXRbaV07aWYocltvXSE9PXVbb118fCEobyBpbiB1KSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiB0bihuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIHRuP246dGhpcyBpbnN0YW5jZW9mIHRuP3ZvaWQodGhpcy5fd3JhcHBlZD1uKTpuZXcgdG4obil9ZnVuY3Rpb24gZW4obil7cmV0dXJuIG5ldyBVaW50OEFycmF5KG4uYnVmZmVyfHxuLG4uYnl0ZU9mZnNldHx8MCxHKG4pKX10bi5WRVJTSU9OPW4sdG4ucHJvdG90eXBlLnZhbHVlT2Y9dG4ucHJvdG90eXBlLnRvSlNPTj10bi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcHBlZH0sdG4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLl93cmFwcGVkKX07dmFyIHVuPSJbb2JqZWN0IERhdGFWaWV3XSI7ZnVuY3Rpb24gb24obixyLHQsZSl7aWYobj09PXIpcmV0dXJuIDAhPT1ufHwxL249PTEvcjtpZihudWxsPT1ufHxudWxsPT1yKXJldHVybiExO2lmKG4hPW4pcmV0dXJuIHIhPXI7dmFyIHU9dHlwZW9mIG47cmV0dXJuKCJmdW5jdGlvbiI9PXV8fCJvYmplY3QiPT11fHwib2JqZWN0Ij09dHlwZW9mIHIpJiZmdW5jdGlvbiBuKHIsdCxlLHUpe3IgaW5zdGFuY2VvZiB0biYmKHI9ci5fd3JhcHBlZCk7dCBpbnN0YW5jZW9mIHRuJiYodD10Ll93cmFwcGVkKTt2YXIgaT1wLmNhbGwocik7aWYoaSE9PXAuY2FsbCh0KSlyZXR1cm4hMTtpZihGJiYiW29iamVjdCBPYmplY3RdIj09aSYmcShyKSl7aWYoIXEodCkpcmV0dXJuITE7aT11bn1zd2l0Y2goaSl7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4iIityPT0iIit0O2Nhc2UiW29iamVjdCBOdW1iZXJdIjpyZXR1cm4rciE9K3I/K3QhPSt0OjA9PStyPzEvK3I9PTEvdDorcj09K3Q7Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgQm9vbGVhbl0iOnJldHVybityPT0rdDtjYXNlIltvYmplY3QgU3ltYm9sXSI6cmV0dXJuIHMudmFsdWVPZi5jYWxsKHIpPT09cy52YWx1ZU9mLmNhbGwodCk7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6Y2FzZSB1bjpyZXR1cm4gbihlbihyKSxlbih0KSxlLHUpfXZhciBvPSJbb2JqZWN0IEFycmF5XSI9PT1pO2lmKCFvJiZYKHIpKXt2YXIgZj1HKHIpO2lmKGYhPT1HKHQpKXJldHVybiExO2lmKHIuYnVmZmVyPT09dC5idWZmZXImJnIuYnl0ZU9mZnNldD09PXQuYnl0ZU9mZnNldClyZXR1cm4hMDtvPSEwfWlmKCFvKXtpZigib2JqZWN0IiE9dHlwZW9mIHJ8fCJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4hMTtpPXIuY29uc3RydWN0b3IsZj10LmNvbnN0cnVjdG9yO2lmKGkhPT1mJiYhKEQoaSkmJmkgaW5zdGFuY2VvZiBpJiZEKGYpJiZmIGluc3RhbmNlb2YgZikmJiJjb25zdHJ1Y3RvciJpbiByJiYiY29uc3RydWN0b3IiaW4gdClyZXR1cm4hMX1lPWV8fFtdO3U9dXx8W107dmFyIGE9ZS5sZW5ndGg7Zm9yKDthLS07KWlmKGVbYV09PT1yKXJldHVybiB1W2FdPT09dDtlLnB1c2gocik7dS5wdXNoKHQpO2lmKG8pe2lmKChhPXIubGVuZ3RoKSE9PXQubGVuZ3RoKXJldHVybiExO2Zvcig7YS0tOylpZighb24oclthXSx0W2FdLGUsdSkpcmV0dXJuITF9ZWxzZXt2YXIgYyxsPW5uKHIpO2lmKGE9bC5sZW5ndGgsbm4odCkubGVuZ3RoIT09YSlyZXR1cm4hMTtmb3IoO2EtLTspaWYoYz1sW2FdLCFXKHQsYyl8fCFvbihyW2NdLHRbY10sZSx1KSlyZXR1cm4hMX1lLnBvcCgpO3UucG9wKCk7cmV0dXJuITB9KG4scix0LGUpfWZ1bmN0aW9uIGZuKG4pe2lmKCFfKG4pKXJldHVybltdO3ZhciByLHQ9W107Zm9yKHIgaW4gbil0LnB1c2gocik7cmV0dXJuIGcmJloobix0KSx0fWZ1bmN0aW9uIGFuKGUpe3ZhciB1PVkoZSk7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKG51bGw9PW4pcmV0dXJuITE7dmFyIHI9Zm4obik7aWYoWShyKSlyZXR1cm4hMTtmb3IodmFyIHQ9MDt0PHU7dCsrKWlmKCFEKG5bZVt0XV0pKXJldHVybiExO3JldHVybiBlIT09aG58fCFEKG5bY25dKX19dmFyIGNuPSJmb3JFYWNoIixsbj1bImNsZWFyIiwiZGVsZXRlIl0sc249WyJnZXQiLCJoYXMiLCJzZXQiXSxwbj1sbi5jb25jYXQoY24sc24pLGhuPWxuLmNvbmNhdChzbiksdm49WyJhZGQiXS5jb25jYXQobG4sY24sImhhcyIpLHluPVY/YW4ocG4pOngoIk1hcCIpLGRuPVY/YW4oaG4pOngoIldlYWtNYXAiKSxnbj1WP2FuKHZuKTp4KCJTZXQiKSxibj14KCJXZWFrU2V0Iik7ZnVuY3Rpb24gbW4obil7Zm9yKHZhciByPW5uKG4pLHQ9ci5sZW5ndGgsZT1BcnJheSh0KSx1PTA7dTx0O3UrKyllW3VdPW5bclt1XV07cmV0dXJuIGV9ZnVuY3Rpb24gam4obil7Zm9yKHZhciByPXt9LHQ9bm4obiksZT0wLHU9dC5sZW5ndGg7ZTx1O2UrKylyW25bdFtlXV1dPXRbZV07cmV0dXJuIHJ9ZnVuY3Rpb24gX24obil7dmFyIHIsdD1bXTtmb3IociBpbiBuKUQobltyXSkmJnQucHVzaChyKTtyZXR1cm4gdC5zb3J0KCl9ZnVuY3Rpb24gd24oYSxjKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtpZihjJiYobj1PYmplY3QobikpLHI8Mnx8bnVsbD09bilyZXR1cm4gbjtmb3IodmFyIHQ9MTt0PHI7dCsrKWZvcih2YXIgZT1hcmd1bWVudHNbdF0sdT1hKGUpLGk9dS5sZW5ndGgsbz0wO288aTtvKyspe3ZhciBmPXVbb107YyYmdm9pZCAwIT09bltmXXx8KG5bZl09ZVtmXSl9cmV0dXJuIG59fXZhciBBbj13bihmbikseG49d24obm4pLFNuPXduKGZuLCEwKTtmdW5jdGlvbiBPbihuKXtpZighXyhuKSlyZXR1cm57fTtpZihoKXJldHVybiBoKG4pO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1uO249bmV3IHI7cmV0dXJuIHIucHJvdG90eXBlPW51bGwsbn1mdW5jdGlvbiBNbihuKXtyZXR1cm4gXyhuKT9VKG4pP24uc2xpY2UoKTpBbih7fSxuKTpufWZ1bmN0aW9uIEVuKG4pe3JldHVybiBVKG4pP246W25dfWZ1bmN0aW9uIEJuKG4pe3JldHVybiB0bi50b1BhdGgobil9ZnVuY3Rpb24gTm4obixyKXtmb3IodmFyIHQ9ci5sZW5ndGgsZT0wO2U8dDtlKyspe2lmKG51bGw9PW4pcmV0dXJuO249bltyW2VdXX1yZXR1cm4gdD9uOnZvaWQgMH1mdW5jdGlvbiBJbihuLHIsdCl7cj1ObihuLEJuKHIpKTtyZXR1cm4gdyhyKT90OnJ9ZnVuY3Rpb24gVG4obil7cmV0dXJuIG59ZnVuY3Rpb24ga24ocil7cmV0dXJuIHI9eG4oe30sciksZnVuY3Rpb24obil7cmV0dXJuIHJuKG4scil9fWZ1bmN0aW9uIERuKHIpe3JldHVybiByPUJuKHIpLGZ1bmN0aW9uKG4pe3JldHVybiBObihuLHIpfX1mdW5jdGlvbiBSbih1LGksbil7aWYodm9pZCAwPT09aSlyZXR1cm4gdTtzd2l0Y2gobnVsbD09bj8zOm4pe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHUuY2FsbChpLG4pfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKG4scix0KXtyZXR1cm4gdS5jYWxsKGksbixyLHQpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKG4scix0LGUpe3JldHVybiB1LmNhbGwoaSxuLHIsdCxlKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHUuYXBwbHkoaSxhcmd1bWVudHMpfX1mdW5jdGlvbiBGbihuLHIsdCl7cmV0dXJuIG51bGw9PW4/VG46RChuKT9SbihuLHIsdCk6KF8obikmJiFVKG4pP2tuOkRuKShuKX1mdW5jdGlvbiBWbihuLHIpe3JldHVybiBGbihuLHIsMS8wKX1mdW5jdGlvbiBQbihuLHIsdCl7cmV0dXJuIHRuLml0ZXJhdGVlIT09Vm4/dG4uaXRlcmF0ZWUobixyKTpGbihuLHIsdCl9ZnVuY3Rpb24gcW4oKXt9ZnVuY3Rpb24gVW4obixyKXtyZXR1cm4gbnVsbD09ciYmKHI9bixuPTApLG4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihyLW4rMSkpfXRuLnRvUGF0aD1Fbix0bi5pdGVyYXRlZT1Wbjt2YXIgV249RGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O2Z1bmN0aW9uIHpuKHIpe2Z1bmN0aW9uIHQobil7cmV0dXJuIHJbbl19dmFyIG49Iig/OiIrbm4ocikuam9pbigifCIpKyIpIixlPVJlZ0V4cChuKSx1PVJlZ0V4cChuLCJnIik7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlLnRlc3Qobj1udWxsPT1uPyIiOiIiK24pP24ucmVwbGFjZSh1LHQpOm59fXZhciBMbj17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsImAiOiImI3g2MDsifSwkbj16bihMbiksQ249em4oam4oTG4pKSxLbj10bi50ZW1wbGF0ZVNldHRpbmdzPXtldmFsdWF0ZTovPCUoW1xzXFNdKz8pJT4vZyxpbnRlcnBvbGF0ZTovPCU9KFtcc1xTXSs/KSU+L2csZXNjYXBlOi88JS0oW1xzXFNdKz8pJT4vZ30sSm49LyguKV4vLEduPXsiJyI6IiciLCJcXCI6IlxcIiwiXHIiOiJyIiwiXG4iOiJuIiwiXHUyMDI4IjoidTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LEhuPS9cXHwnfFxyfFxufFx1MjAyOHxcdTIwMjkvZztmdW5jdGlvbiBRbihuKXtyZXR1cm4iXFwiK0duW25dfXZhciBYbj0vXlxzKihcd3xcJCkrXHMqJC87dmFyIFluPTA7ZnVuY3Rpb24gWm4obixyLHQsZSx1KXtpZighKGUgaW5zdGFuY2VvZiByKSlyZXR1cm4gbi5hcHBseSh0LHUpO3Q9T24obi5wcm90b3R5cGUpLHU9bi5hcHBseSh0LHUpO3JldHVybiBfKHUpP3U6dH12YXIgbnI9aihmdW5jdGlvbih1LGkpe2Z1bmN0aW9uIG8oKXtmb3IodmFyIG49MCxyPWkubGVuZ3RoLHQ9QXJyYXkociksZT0wO2U8cjtlKyspdFtlXT1pW2VdPT09Zj9hcmd1bWVudHNbbisrXTppW2VdO2Zvcig7bjxhcmd1bWVudHMubGVuZ3RoOyl0LnB1c2goYXJndW1lbnRzW24rK10pO3JldHVybiBabih1LG8sdGhpcyx0aGlzLHQpfXZhciBmPW5yLnBsYWNlaG9sZGVyO3JldHVybiBvfSk7bnIucGxhY2Vob2xkZXI9dG47dmFyIHJyPWooZnVuY3Rpb24ocix0LGUpe2lmKCFEKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoIkJpbmQgbXVzdCBiZSBjYWxsZWQgb24gYSBmdW5jdGlvbiIpO3ZhciB1PWooZnVuY3Rpb24obil7cmV0dXJuIFpuKHIsdSx0LHRoaXMsZS5jb25jYXQobikpfSk7cmV0dXJuIHV9KSx0cj1LKFkpO2Z1bmN0aW9uIGVyKG4scix0LGUpe2lmKGU9ZXx8W10scnx8MD09PXIpe2lmKHI8PTApcmV0dXJuIGUuY29uY2F0KG4pfWVsc2Ugcj0xLzA7Zm9yKHZhciB1PWUubGVuZ3RoLGk9MCxvPVkobik7aTxvO2krKyl7dmFyIGY9bltpXTtpZih0cihmKSYmKFUoZil8fEwoZikpKWlmKDE8cillcihmLHItMSx0LGUpLHU9ZS5sZW5ndGg7ZWxzZSBmb3IodmFyIGE9MCxjPWYubGVuZ3RoO2E8YzspZVt1KytdPWZbYSsrXTtlbHNlIHR8fChlW3UrK109Zil9cmV0dXJuIGV9dmFyIHVyPWooZnVuY3Rpb24obixyKXt2YXIgdD0ocj1lcihyLCExLCExKSkubGVuZ3RoO2lmKHQ8MSl0aHJvdyBuZXcgRXJyb3IoImJpbmRBbGwgbXVzdCBiZSBwYXNzZWQgZnVuY3Rpb24gbmFtZXMiKTtmb3IoO3QtLTspe3ZhciBlPXJbdF07bltlXT1ycihuW2VdLG4pfXJldHVybiBufSk7dmFyIGlyPWooZnVuY3Rpb24obixyLHQpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG4uYXBwbHkobnVsbCx0KX0scil9KSxvcj1ucihpcix0biwxKTtmdW5jdGlvbiBmcihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGFyKG4scil7dmFyIHQ7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIDA8LS1uJiYodD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbjw9MSYmKHI9bnVsbCksdH19cj1ucihhciwyKTtmdW5jdGlvbiBjcihuLHIsdCl7cj1QbihyLHQpO2Zvcih2YXIgZSx1PW5uKG4pLGk9MCxvPXUubGVuZ3RoO2k8bztpKyspaWYocihuW2U9dVtpXV0sZSxuKSlyZXR1cm4gZX1mdW5jdGlvbiBscihpKXtyZXR1cm4gZnVuY3Rpb24obixyLHQpe3I9UG4ocix0KTtmb3IodmFyIGU9WShuKSx1PTA8aT8wOmUtMTswPD11JiZ1PGU7dSs9aSlpZihyKG5bdV0sdSxuKSlyZXR1cm4gdTtyZXR1cm4tMX19dmFyIHNyPWxyKDEpLGs9bHIoLTEpO2Z1bmN0aW9uIHByKG4scix0LGUpe2Zvcih2YXIgdT0odD1Qbih0LGUsMSkpKHIpLGk9MCxvPVkobik7aTxvOyl7dmFyIGY9TWF0aC5mbG9vcigoaStvKS8yKTt0KG5bZl0pPHU/aT1mKzE6bz1mfXJldHVybiBpfWZ1bmN0aW9uIGhyKGksbyxmKXtyZXR1cm4gZnVuY3Rpb24obixyLHQpe3ZhciBlPTAsdT1ZKG4pO2lmKCJudW1iZXIiPT10eXBlb2YgdCkwPGk/ZT0wPD10P3Q6TWF0aC5tYXgodCt1LGUpOnU9MDw9dD9NYXRoLm1pbih0KzEsdSk6dCt1KzE7ZWxzZSBpZihmJiZ0JiZ1KXJldHVybiBuW3Q9ZihuLHIpXT09PXI/dDotMTtpZihyIT1yKXJldHVybiAwPD0odD1vKGEuY2FsbChuLGUsdSksJCkpP3QrZTotMTtmb3IodD0wPGk/ZTp1LTE7MDw9dCYmdDx1O3QrPWkpaWYoblt0XT09PXIpcmV0dXJuIHQ7cmV0dXJuLTF9fXZhciB2cj1ocigxLHNyLHByKSxUPWhyKC0xLGspO2Z1bmN0aW9uIHlyKG4scix0KXt0PSh0cihuKT9zcjpjcikobixyLHQpO2lmKHZvaWQgMCE9PXQmJi0xIT09dClyZXR1cm4gblt0XX1mdW5jdGlvbiBkcihuLHIsdCl7aWYocj1SbihyLHQpLHRyKG4pKWZvcih1PTAsaT1uLmxlbmd0aDt1PGk7dSsrKXIoblt1XSx1LG4pO2Vsc2UgZm9yKHZhciBlPW5uKG4pLHU9MCxpPWUubGVuZ3RoO3U8aTt1KyspcihuW2VbdV1dLGVbdV0sbik7cmV0dXJuIG59ZnVuY3Rpb24gZ3IobixyLHQpe3I9UG4ocix0KTtmb3IodmFyIGU9IXRyKG4pJiZubihuKSx1PShlfHxuKS5sZW5ndGgsaT1BcnJheSh1KSxvPTA7bzx1O28rKyl7dmFyIGY9ZT9lW29dOm87aVtvXT1yKG5bZl0sZixuKX1yZXR1cm4gaX1mdW5jdGlvbiBicihhKXtyZXR1cm4gZnVuY3Rpb24obixyLHQsZSl7dmFyIHU9Mzw9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obixyLHQsZSl7dmFyIHU9IXRyKG4pJiZubihuKSxpPSh1fHxuKS5sZW5ndGgsbz0wPGE/MDppLTE7Zm9yKGV8fCh0PW5bdT91W29dOm9dLG8rPWEpOzA8PW8mJm88aTtvKz1hKXt2YXIgZj11P3Vbb106bzt0PXIodCxuW2ZdLGYsbil9cmV0dXJuIHR9KG4sUm4ocixlLDQpLHQsdSl9fWY9YnIoMSksUj1icigtMSk7ZnVuY3Rpb24gbXIobixlLHIpe3ZhciB1PVtdO3JldHVybiBlPVBuKGUsciksZHIobixmdW5jdGlvbihuLHIsdCl7ZShuLHIsdCkmJnUucHVzaChuKX0pLHV9ZnVuY3Rpb24ganIobixyLHQpe3I9UG4ocix0KTtmb3IodmFyIGU9IXRyKG4pJiZubihuKSx1PShlfHxuKS5sZW5ndGgsaT0wO2k8dTtpKyspe3ZhciBvPWU/ZVtpXTppO2lmKCFyKG5bb10sbyxuKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBfcihuLHIsdCl7cj1QbihyLHQpO2Zvcih2YXIgZT0hdHIobikmJm5uKG4pLHU9KGV8fG4pLmxlbmd0aCxpPTA7aTx1O2krKyl7dmFyIG89ZT9lW2ldOmk7aWYocihuW29dLG8sbikpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gd3IobixyLHQsZSl7cmV0dXJuIHRyKG4pfHwobj1tbihuKSksMDw9dnIobixyLHQ9Im51bWJlciIhPXR5cGVvZiB0fHxlPzA6dCl9UD1qKGZ1bmN0aW9uKG4sdCxlKXt2YXIgdSxpO3JldHVybiBEKHQpP2k9dDoodD1Cbih0KSx1PXQuc2xpY2UoMCwtMSksdD10W3QubGVuZ3RoLTFdKSxncihuLGZ1bmN0aW9uKG4pe3ZhciByPWk7aWYoIXIpe2lmKG51bGw9PShuPXUmJnUubGVuZ3RoP05uKG4sdSk6bikpcmV0dXJuO3I9blt0XX1yZXR1cm4gbnVsbD09cj9yOnIuYXBwbHkobixlKX0pfSk7ZnVuY3Rpb24gQXIobixyKXtyZXR1cm4gZ3IobixEbihyKSl9ZnVuY3Rpb24geHIobixlLHIpe3ZhciB0LHUsaT0tMS8wLG89LTEvMDtpZihudWxsPT1lfHwibnVtYmVyIj09dHlwZW9mIGUmJiJvYmplY3QiIT10eXBlb2YgblswXSYmbnVsbCE9bilmb3IodmFyIGY9MCxhPShuPXRyKG4pP246bW4obikpLmxlbmd0aDtmPGE7ZisrKW51bGwhPSh0PW5bZl0pJiZpPHQmJihpPXQpO2Vsc2UgZT1QbihlLHIpLGRyKG4sZnVuY3Rpb24obixyLHQpe3U9ZShuLHIsdCksKG88dXx8dT09PS0xLzAmJmk9PT0tMS8wKSYmKGk9bixvPXUpfSk7cmV0dXJuIGl9ZnVuY3Rpb24gU3IobixyLHQpe2lmKG51bGw9PXJ8fHQpcmV0dXJuKG49IXRyKG4pP21uKG4pOm4pW1VuKG4ubGVuZ3RoLTEpXTt2YXIgZT0odHIobik/TW46bW4pKG4pLG49WShlKTtyPU1hdGgubWF4KE1hdGgubWluKHIsbiksMCk7Zm9yKHZhciB1PW4tMSxpPTA7aTxyO2krKyl7dmFyIG89VW4oaSx1KSxmPWVbaV07ZVtpXT1lW29dLGVbb109Zn1yZXR1cm4gZS5zbGljZSgwLHIpfWZ1bmN0aW9uIE9yKGkscil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXt2YXIgdT1yP1tbXSxbXV06e307cmV0dXJuIGU9UG4oZSxuKSxkcih0LGZ1bmN0aW9uKG4scil7cj1lKG4scix0KTtpKHUsbixyKX0pLHV9fXZhciBjPU9yKGZ1bmN0aW9uKG4scix0KXtXKG4sdCk/blt0XS5wdXNoKHIpOm5bdF09W3JdfSksaT1PcihmdW5jdGlvbihuLHIsdCl7blt0XT1yfSksc249T3IoZnVuY3Rpb24obixyLHQpe1cobix0KT9uW3RdKys6blt0XT0xfSksbG49T3IoZnVuY3Rpb24obixyLHQpe25bdD8wOjFdLnB1c2gocil9LCEwKSxNcj0vW15cdWQ4MDAtXHVkZmZmXXxbXHVkODAwLVx1ZGJmZl1bXHVkYzAwLVx1ZGZmZl18W1x1ZDgwMC1cdWRmZmZdL2c7ZnVuY3Rpb24gRXIobixyLHQpe3JldHVybiByIGluIHR9dmFyIEJyPWooZnVuY3Rpb24obixyKXt2YXIgdD17fSxlPXJbMF07aWYobnVsbD09bilyZXR1cm4gdDtEKGUpPygxPHIubGVuZ3RoJiYoZT1SbihlLHJbMV0pKSxyPWZuKG4pKTooZT1FcixyPWVyKHIsITEsITEpLG49T2JqZWN0KG4pKTtmb3IodmFyIHU9MCxpPXIubGVuZ3RoO3U8aTt1Kyspe3ZhciBvPXJbdV0sZj1uW29dO2UoZixvLG4pJiYodFtvXT1mKX1yZXR1cm4gdH0pLHBuPWooZnVuY3Rpb24obix0KXt2YXIgcixlPXRbMF07cmV0dXJuIEQoZSk/KGU9ZnIoZSksMTx0Lmxlbmd0aCYmKHI9dFsxXSkpOih0PWdyKGVyKHQsITEsITEpLFN0cmluZyksZT1mdW5jdGlvbihuLHIpe3JldHVybiF3cih0LHIpfSksQnIobixlLHIpfSk7ZnVuY3Rpb24gTnIobixyLHQpe3JldHVybiBhLmNhbGwobiwwLE1hdGgubWF4KDAsbi5sZW5ndGgtKG51bGw9PXJ8fHQ/MTpyKSkpfWZ1bmN0aW9uIElyKG4scix0KXtyZXR1cm4gbnVsbD09bnx8bi5sZW5ndGg8MT9udWxsPT1yfHx0P3ZvaWQgMDpbXTpudWxsPT1yfHx0P25bMF06TnIobixuLmxlbmd0aC1yKX1mdW5jdGlvbiBUcihuLHIsdCl7cmV0dXJuIGEuY2FsbChuLG51bGw9PXJ8fHQ/MTpyKX12YXIga3I9aihmdW5jdGlvbihuLHIpe3JldHVybiByPWVyKHIsITAsITApLG1yKG4sZnVuY3Rpb24obil7cmV0dXJuIXdyKHIsbil9KX0pLFY9aihmdW5jdGlvbihuLHIpe3JldHVybiBrcihuLHIpfSk7ZnVuY3Rpb24gRHIobixyLHQsZSl7QShyKXx8KGU9dCx0PXIscj0hMSksbnVsbCE9dCYmKHQ9UG4odCxlKSk7Zm9yKHZhciB1PVtdLGk9W10sbz0wLGY9WShuKTtvPGY7bysrKXt2YXIgYT1uW29dLGM9dD90KGEsbyxuKTphO3ImJiF0PyhvJiZpPT09Y3x8dS5wdXNoKGEpLGk9Yyk6dD93cihpLGMpfHwoaS5wdXNoKGMpLHUucHVzaChhKSk6d3IodSxhKXx8dS5wdXNoKGEpfXJldHVybiB1fXZuPWooZnVuY3Rpb24obil7cmV0dXJuIERyKGVyKG4sITAsITApKX0pO2Z1bmN0aW9uIFJyKG4pe2Zvcih2YXIgcj1uJiZ4cihuLFkpLmxlbmd0aHx8MCx0PUFycmF5KHIpLGU9MDtlPHI7ZSsrKXRbZV09QXIobixlKTtyZXR1cm4gdH1Mbj1qKFJyKTtmdW5jdGlvbiBGcihuLHIpe3JldHVybiBuLl9jaGFpbj90bihyKS5jaGFpbigpOnJ9ZnVuY3Rpb24gVnIodCl7cmV0dXJuIGRyKF9uKHQpLGZ1bmN0aW9uKG4pe3ZhciByPXRuW25dPXRbbl07dG4ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIG49W3RoaXMuX3dyYXBwZWRdO3JldHVybiB1LmFwcGx5KG4sYXJndW1lbnRzKSxGcih0aGlzLHIuYXBwbHkodG4sbikpfX0pLHRufWRyKFsicG9wIiwicHVzaCIsInJldmVyc2UiLCJzaGlmdCIsInNvcnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24ocil7dmFyIHQ9ZVtyXTt0bi5wcm90b3R5cGVbcl09ZnVuY3Rpb24oKXt2YXIgbj10aGlzLl93cmFwcGVkO3JldHVybiBudWxsIT1uJiYodC5hcHBseShuLGFyZ3VtZW50cyksInNoaWZ0IiE9PXImJiJzcGxpY2UiIT09cnx8MCE9PW4ubGVuZ3RofHxkZWxldGUgblswXSksRnIodGhpcyxuKX19KSxkcihbImNvbmNhdCIsImpvaW4iLCJzbGljZSJdLGZ1bmN0aW9uKG4pe3ZhciByPWVbbl07dG4ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5fd3JhcHBlZDtyZXR1cm4gRnIodGhpcyxuPW51bGwhPW4/ci5hcHBseShuLGFyZ3VtZW50cyk6bil9fSk7TG49VnIoe19fcHJvdG9fXzpudWxsLFZFUlNJT046bixyZXN0QXJndW1lbnRzOmosaXNPYmplY3Q6Xyxpc051bGw6ZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PT1ufSxpc1VuZGVmaW5lZDp3LGlzQm9vbGVhbjpBLGlzRWxlbWVudDpmdW5jdGlvbihuKXtyZXR1cm4hKCFufHwxIT09bi5ub2RlVHlwZSl9LGlzU3RyaW5nOlMsaXNOdW1iZXI6Tyxpc0RhdGU6TSxpc1JlZ0V4cDpFLGlzRXJyb3I6Qixpc1N5bWJvbDpOLGlzQXJyYXlCdWZmZXI6SSxpc0RhdGFWaWV3OnEsaXNBcnJheTpVLGlzRnVuY3Rpb246RCxpc0FyZ3VtZW50czpMLGlzRmluaXRlOmZ1bmN0aW9uKG4pe3JldHVybiFOKG4pJiZkKG4pJiYhaXNOYU4ocGFyc2VGbG9hdChuKSl9LGlzTmFOOiQsaXNUeXBlZEFycmF5OlgsaXNFbXB0eTpmdW5jdGlvbihuKXtpZihudWxsPT1uKXJldHVybiEwO3ZhciByPVkobik7cmV0dXJuIm51bWJlciI9PXR5cGVvZiByJiYoVShuKXx8UyhuKXx8TChuKSk/MD09PXI6MD09PVkobm4obikpfSxpc01hdGNoOnJuLGlzRXF1YWw6ZnVuY3Rpb24obixyKXtyZXR1cm4gb24obixyKX0saXNNYXA6eW4saXNXZWFrTWFwOmRuLGlzU2V0OmduLGlzV2Vha1NldDpibixrZXlzOm5uLGFsbEtleXM6Zm4sdmFsdWVzOm1uLHBhaXJzOmZ1bmN0aW9uKG4pe2Zvcih2YXIgcj1ubihuKSx0PXIubGVuZ3RoLGU9QXJyYXkodCksdT0wO3U8dDt1KyspZVt1XT1bclt1XSxuW3JbdV1dXTtyZXR1cm4gZX0saW52ZXJ0OmpuLGZ1bmN0aW9uczpfbixtZXRob2RzOl9uLGV4dGVuZDpBbixleHRlbmRPd246eG4sYXNzaWduOnhuLGRlZmF1bHRzOlNuLGNyZWF0ZTpmdW5jdGlvbihuLHIpe3JldHVybiBuPU9uKG4pLHImJnhuKG4sciksbn0sY2xvbmU6TW4sdGFwOmZ1bmN0aW9uKG4scil7cmV0dXJuIHIobiksbn0sZ2V0OkluLGhhczpmdW5jdGlvbihuLHIpe2Zvcih2YXIgdD0ocj1CbihyKSkubGVuZ3RoLGU9MDtlPHQ7ZSsrKXt2YXIgdT1yW2VdO2lmKCFXKG4sdSkpcmV0dXJuITE7bj1uW3VdfXJldHVybiEhdH0sbWFwT2JqZWN0OmZ1bmN0aW9uKG4scix0KXtyPVBuKHIsdCk7Zm9yKHZhciBlPW5uKG4pLHU9ZS5sZW5ndGgsaT17fSxvPTA7bzx1O28rKyl7dmFyIGY9ZVtvXTtpW2ZdPXIobltmXSxmLG4pfXJldHVybiBpfSxpZGVudGl0eTpUbixjb25zdGFudDpDLG5vb3A6cW4sdG9QYXRoOkVuLHByb3BlcnR5OkRuLHByb3BlcnR5T2Y6ZnVuY3Rpb24ocil7cmV0dXJuIG51bGw9PXI/cW46ZnVuY3Rpb24obil7cmV0dXJuIEluKHIsbil9fSxtYXRjaGVyOmtuLG1hdGNoZXM6a24sdGltZXM6ZnVuY3Rpb24obixyLHQpe3ZhciBlPUFycmF5KE1hdGgubWF4KDAsbikpO3I9Um4ocix0LDEpO2Zvcih2YXIgdT0wO3U8bjt1KyspZVt1XT1yKHUpO3JldHVybiBlfSxyYW5kb206VW4sbm93OlduLGVzY2FwZTokbix1bmVzY2FwZTpDbix0ZW1wbGF0ZVNldHRpbmdzOktuLHRlbXBsYXRlOmZ1bmN0aW9uKGksbixyKXtuPVNuKHt9LG49IW4mJnI/cjpuLHRuLnRlbXBsYXRlU2V0dGluZ3MpO3ZhciB0LHI9UmVnRXhwKFsobi5lc2NhcGV8fEpuKS5zb3VyY2UsKG4uaW50ZXJwb2xhdGV8fEpuKS5zb3VyY2UsKG4uZXZhbHVhdGV8fEpuKS5zb3VyY2VdLmpvaW4oInwiKSsifCQiLCJnIiksbz0wLGY9Il9fcCs9JyI7aWYoaS5yZXBsYWNlKHIsZnVuY3Rpb24obixyLHQsZSx1KXtyZXR1cm4gZis9aS5zbGljZShvLHUpLnJlcGxhY2UoSG4sUW4pLG89dStuLmxlbmd0aCxyP2YrPSInK1xuKChfX3Q9KCIrcisiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjp0P2YrPSInK1xuKChfX3Q9KCIrdCsiKSk9PW51bGw/Jyc6X190KStcbiciOmUmJihmKz0iJztcbiIrZSsiXG5fX3ArPSciKSxufSksZis9Iic7XG4iLHI9bi52YXJpYWJsZSl7aWYoIVhuLnRlc3QocikpdGhyb3cgbmV3IEVycm9yKCJ2YXJpYWJsZSBpcyBub3QgYSBiYXJlIGlkZW50aWZpZXI6ICIrcil9ZWxzZSBmPSJ3aXRoKG9ianx8e30pe1xuIitmKyJ9XG4iLHI9Im9iaiI7Zj0idmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLHByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iK2YrInJldHVybiBfX3A7XG4iO3RyeXt0PW5ldyBGdW5jdGlvbihyLCJfIixmKX1jYXRjaChuKXt0aHJvdyBuLnNvdXJjZT1mLG59cmV0dXJuKG49ZnVuY3Rpb24obil7cmV0dXJuIHQuY2FsbCh0aGlzLG4sdG4pfSkuc291cmNlPSJmdW5jdGlvbigiK3IrIil7XG4iK2YrIn0iLG59LHJlc3VsdDpmdW5jdGlvbihuLHIsdCl7dmFyIGU9KHI9Qm4ocikpLmxlbmd0aDtpZighZSlyZXR1cm4gRCh0KT90LmNhbGwobik6dDtmb3IodmFyIHU9MDt1PGU7dSsrKXt2YXIgaT1udWxsPT1uP3ZvaWQgMDpuW3JbdV1dO3ZvaWQgMD09PWkmJihpPXQsdT1lKSxuPUQoaSk/aS5jYWxsKG4pOml9cmV0dXJuIG59LHVuaXF1ZUlkOmZ1bmN0aW9uKG4pe3ZhciByPSsrWW4rIiI7cmV0dXJuIG4/bityOnJ9LGNoYWluOmZ1bmN0aW9uKG4pe3JldHVybihuPXRuKG4pKS5fY2hhaW49ITAsbn0saXRlcmF0ZWU6Vm4scGFydGlhbDpucixiaW5kOnJyLGJpbmRBbGw6dXIsbWVtb2l6ZTpmdW5jdGlvbihlLHUpe2Z1bmN0aW9uIGkobil7dmFyIHI9aS5jYWNoZSx0PSIiKyh1P3UuYXBwbHkodGhpcyxhcmd1bWVudHMpOm4pO3JldHVybiBXKHIsdCl8fChyW3RdPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxyW3RdfXJldHVybiBpLmNhY2hlPXt9LGl9LGRlbGF5OmlyLGRlZmVyOm9yLHRocm90dGxlOmZ1bmN0aW9uKHQsZSx1KXt2YXIgaSxvLGYsYSxjPTA7ZnVuY3Rpb24gbCgpe2M9ITE9PT11LmxlYWRpbmc/MDpXbigpLGk9bnVsbCxhPXQuYXBwbHkobyxmKSxpfHwobz1mPW51bGwpfWZ1bmN0aW9uIG4oKXt2YXIgbj1XbigpO2N8fCExIT09dS5sZWFkaW5nfHwoYz1uKTt2YXIgcj1lLShuLWMpO3JldHVybiBvPXRoaXMsZj1hcmd1bWVudHMscjw9MHx8ZTxyPyhpJiYoY2xlYXJUaW1lb3V0KGkpLGk9bnVsbCksYz1uLGE9dC5hcHBseShvLGYpLGl8fChvPWY9bnVsbCkpOml8fCExPT09dS50cmFpbGluZ3x8KGk9c2V0VGltZW91dChsLHIpKSxhfXJldHVybiB1PXV8fHt9LG4uY2FuY2VsPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGkpLGM9MCxpPW89Zj1udWxsfSxufSxkZWJvdW5jZTpmdW5jdGlvbihyLHQsZSl7ZnVuY3Rpb24gdSgpe3ZhciBuPVduKCktbztuPHQ/aT1zZXRUaW1lb3V0KHUsdC1uKTooaT1udWxsLGV8fChhPXIuYXBwbHkoYyxmKSksaXx8KGY9Yz1udWxsKSl9dmFyIGksbyxmLGEsYyxuPWooZnVuY3Rpb24obil7cmV0dXJuIGM9dGhpcyxmPW4sbz1XbigpLGl8fChpPXNldFRpbWVvdXQodSx0KSxlJiYoYT1yLmFwcGx5KGMsZikpKSxhfSk7cmV0dXJuIG4uY2FuY2VsPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGkpLGk9Zj1jPW51bGx9LG59LHdyYXA6ZnVuY3Rpb24obixyKXtyZXR1cm4gbnIocixuKX0sbmVnYXRlOmZyLGNvbXBvc2U6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMsZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj1lLHI9dFtlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bi0tOylyPXRbbl0uY2FsbCh0aGlzLHIpO3JldHVybiByfX0sYWZ0ZXI6ZnVuY3Rpb24obixyKXtyZXR1cm4gZnVuY3Rpb24oKXtpZigtLW48MSlyZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxiZWZvcmU6YXIsb25jZTpyLGZpbmRLZXk6Y3IsZmluZEluZGV4OnNyLGZpbmRMYXN0SW5kZXg6ayxzb3J0ZWRJbmRleDpwcixpbmRleE9mOnZyLGxhc3RJbmRleE9mOlQsZmluZDp5cixkZXRlY3Q6eXIsZmluZFdoZXJlOmZ1bmN0aW9uKG4scil7cmV0dXJuIHlyKG4sa24ocikpfSxlYWNoOmRyLGZvckVhY2g6ZHIsbWFwOmdyLGNvbGxlY3Q6Z3IscmVkdWNlOmYsZm9sZGw6ZixpbmplY3Q6ZixyZWR1Y2VSaWdodDpSLGZvbGRyOlIsZmlsdGVyOm1yLHNlbGVjdDptcixyZWplY3Q6ZnVuY3Rpb24obixyLHQpe3JldHVybiBtcihuLGZyKFBuKHIpKSx0KX0sZXZlcnk6anIsYWxsOmpyLHNvbWU6X3IsYW55Ol9yLGNvbnRhaW5zOndyLGluY2x1ZGVzOndyLGluY2x1ZGU6d3IsaW52b2tlOlAscGx1Y2s6QXIsd2hlcmU6ZnVuY3Rpb24obixyKXtyZXR1cm4gbXIobixrbihyKSl9LG1heDp4cixtaW46ZnVuY3Rpb24obixlLHIpe3ZhciB0LHUsaT0xLzAsbz0xLzA7aWYobnVsbD09ZXx8Im51bWJlciI9PXR5cGVvZiBlJiYib2JqZWN0IiE9dHlwZW9mIG5bMF0mJm51bGwhPW4pZm9yKHZhciBmPTAsYT0obj10cihuKT9uOm1uKG4pKS5sZW5ndGg7ZjxhO2YrKyludWxsIT0odD1uW2ZdKSYmdDxpJiYoaT10KTtlbHNlIGU9UG4oZSxyKSxkcihuLGZ1bmN0aW9uKG4scix0KXsoKHU9ZShuLHIsdCkpPG98fHU9PT0xLzAmJmk9PT0xLzApJiYoaT1uLG89dSl9KTtyZXR1cm4gaX0sc2h1ZmZsZTpmdW5jdGlvbihuKXtyZXR1cm4gU3IobiwxLzApfSxzYW1wbGU6U3Isc29ydEJ5OmZ1bmN0aW9uKG4sZSxyKXt2YXIgdT0wO3JldHVybiBlPVBuKGUsciksQXIoZ3IobixmdW5jdGlvbihuLHIsdCl7cmV0dXJue3ZhbHVlOm4saW5kZXg6dSsrLGNyaXRlcmlhOmUobixyLHQpfX0pLnNvcnQoZnVuY3Rpb24obixyKXt2YXIgdD1uLmNyaXRlcmlhLGU9ci5jcml0ZXJpYTtpZih0IT09ZSl7aWYoZTx0fHx2b2lkIDA9PT10KXJldHVybiAxO2lmKHQ8ZXx8dm9pZCAwPT09ZSlyZXR1cm4tMX1yZXR1cm4gbi5pbmRleC1yLmluZGV4fSksInZhbHVlIil9LGdyb3VwQnk6YyxpbmRleEJ5OmksY291bnRCeTpzbixwYXJ0aXRpb246bG4sdG9BcnJheTpmdW5jdGlvbihuKXtyZXR1cm4gbj9VKG4pP2EuY2FsbChuKTpTKG4pP24ubWF0Y2goTXIpOnRyKG4pP2dyKG4sVG4pOm1uKG4pOltdfSxzaXplOmZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1uPzA6KHRyKG4pP246bm4obikpLmxlbmd0aH0scGljazpCcixvbWl0OnBuLGZpcnN0OklyLGhlYWQ6SXIsdGFrZTpJcixpbml0aWFsOk5yLGxhc3Q6ZnVuY3Rpb24obixyLHQpe3JldHVybiBudWxsPT1ufHxuLmxlbmd0aDwxP251bGw9PXJ8fHQ/dm9pZCAwOltdOm51bGw9PXJ8fHQ/bltuLmxlbmd0aC0xXTpUcihuLE1hdGgubWF4KDAsbi5sZW5ndGgtcikpfSxyZXN0OlRyLHRhaWw6VHIsZHJvcDpUcixjb21wYWN0OmZ1bmN0aW9uKG4pe3JldHVybiBtcihuLEJvb2xlYW4pfSxmbGF0dGVuOmZ1bmN0aW9uKG4scil7cmV0dXJuIGVyKG4sciwhMSl9LHdpdGhvdXQ6Vix1bmlxOkRyLHVuaXF1ZTpEcix1bmlvbjp2bixpbnRlcnNlY3Rpb246ZnVuY3Rpb24obil7Zm9yKHZhciByPVtdLHQ9YXJndW1lbnRzLmxlbmd0aCxlPTAsdT1ZKG4pO2U8dTtlKyspe3ZhciBpPW5bZV07aWYoIXdyKHIsaSkpe2Zvcih2YXIgbz0xO288dCYmd3IoYXJndW1lbnRzW29dLGkpO28rKyk7bz09PXQmJnIucHVzaChpKX19cmV0dXJuIHJ9LGRpZmZlcmVuY2U6a3IsdW56aXA6UnIsdHJhbnNwb3NlOlJyLHppcDpMbixvYmplY3Q6ZnVuY3Rpb24obixyKXtmb3IodmFyIHQ9e30sZT0wLHU9WShuKTtlPHU7ZSsrKXI/dFtuW2VdXT1yW2VdOnRbbltlXVswXV09bltlXVsxXTtyZXR1cm4gdH0scmFuZ2U6ZnVuY3Rpb24obixyLHQpe251bGw9PXImJihyPW58fDAsbj0wKSx0PXR8fChyPG4/LTE6MSk7Zm9yKHZhciBlPU1hdGgubWF4KE1hdGguY2VpbCgoci1uKS90KSwwKSx1PUFycmF5KGUpLGk9MDtpPGU7aSsrLG4rPXQpdVtpXT1uO3JldHVybiB1fSxjaHVuazpmdW5jdGlvbihuLHIpe2lmKG51bGw9PXJ8fHI8MSlyZXR1cm5bXTtmb3IodmFyIHQ9W10sZT0wLHU9bi5sZW5ndGg7ZTx1Oyl0LnB1c2goYS5jYWxsKG4sZSxlKz1yKSk7cmV0dXJuIHR9LG1peGluOlZyLGRlZmF1bHQ6dG59KTtyZXR1cm4gTG4uXz1Mbn0pOw=="}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"stats.wp.com/e-202215.js","fqdn":"stats.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.76.3","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.526Z","timestamp":1785145482526,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /e-202215.js HTTP/1.1\r\nHost: stats.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nx-minify: t\r\nx-minify-cache: hit\r\netag: W/7134-1748959716663.3035\r\na8c-edge-cache: cache\r\ncontent-encoding: br\r\nexpires: Thu, 15 Oct 2026 06:12:38 GMT\r\ncache-control: max-age=31536000\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nx-nc: HIT arn\r\nalt-svc: h3=\":443\"; ma=86400\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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":3812,"size_decoded":1897,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (3812), with no line terminators","md5":"b1e85b83d13876fefcf2d873fde8da3e","sha1":"09d271f2a7dd17e66a19fcbfca887734d951ed2f","sha256":"2abd616c43c16e7a2d01f1f1c761d6c12acf4b2ed9a9a411289ee3bb5a681ffe","sha512":"a1ab2e32190702e46c440606a45e51dd073168fa11828683764aef077fb2b495343bd91ee784974244c37d0a52a8225d1a6359ffe0ddf0ec6971aeb7c50e3ec8","ssdeep":"","tlshash":"6b71646536c5f0381af630a5235f630af5ba8b7a7d4a9044c37cd4b07c79e8b9412f9a","first_seen":"2025-06-09T00:15:30.881783Z","last_seen":"2026-07-27T14:12:53.747436Z","times_seen":73436,"resource_available":true,"data":"d2luZG93LndwY29tPXdpbmRvdy53cGNvbXx8e307d2luZG93Ll9zdHE9d2luZG93Ll9zdHF8fFtdO2Z1bmN0aW9uIHN0X2dvKHQpe3dpbmRvdy5fc3RxLnB1c2goWyJ2aWV3Iix0XSl9O2Z1bmN0aW9uIGxpbmt0cmFja2VyX2luaXQodCxlKXt3aW5kb3cuX3N0cS5wdXNoKFsiY2xpY2tUcmFja2VySW5pdCIsdCxlXSl9O3dpbmRvdy53cGNvbS5zdGF0cz1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKCl7dmFyIHQsbjt2YXIgbz1mdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0LmFkZEV2ZW50TGlzdGVuZXIpe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4pfWVsc2UgaWYoIm9iamVjdCI9PT10eXBlb2YgdC5hdHRhY2hFdmVudCl7dC5hdHRhY2hFdmVudCgib24iK2Usbil9fTt2YXIgaT1mdW5jdGlvbih0KXtpZigib2JqZWN0Ij09PXR5cGVvZiB0JiZ0LnRhcmdldCl7cmV0dXJuIHQudGFyZ2V0fWVsc2V7cmV0dXJuIHdpbmRvdy5ldmVudC5zcmNFbGVtZW50fX07dmFyIHI9ZnVuY3Rpb24odCl7dmFyIG49MDtpZigib2JqZWN0Ij09PXR5cGVvZiBJbnN0YWxsVHJpZ2dlciluPTEwMDtpZig3PT09ZSgpKW49MTAwO2YoaSh0KSxuKX07dmFyIGM9ZnVuY3Rpb24odCl7ZihpKHQpLDApfTt2YXIgYT1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5sb2NhdGlvbjtpZihlLmhvc3Q9PT10Lmhvc3QpcmV0dXJuIHRydWU7aWYoIiI9PT10Lmhvc3QpcmV0dXJuIHRydWU7aWYoZS5wcm90b2NvbD09PXQucHJvdG9jb2wmJmUuaG9zdD09PXQuaG9zdG5hbWUpe2lmKCJodHRwOiI9PT1lLnByb3RvY29sJiZlLmhvc3QrIjo4MCI9PT10Lmhvc3QpcmV0dXJuIHRydWU7aWYoImh0dHBzOiI9PT1lLnByb3RvY29sJiZlLmhvc3QrIjo0NDMiPT09dC5ob3N0KXJldHVybiB0cnVlfTtyZXR1cm4gZmFsc2V9O3ZhciBmPWZ1bmN0aW9uKGUsbyl7dHJ5e2lmKCJvYmplY3QiIT09dHlwZW9mIGUpcmV0dXJuO3doaWxlKCJBIiE9PWUubm9kZU5hbWUpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGUubm9kZU5hbWUpcmV0dXJuO2lmKCJvYmplY3QiIT09dHlwZW9mIGUucGFyZW50Tm9kZSlyZXR1cm47ZT1lLnBhcmVudE5vZGV9O2lmKGEoZSkmJiFlLmhyZWYuaW5jbHVkZXMoIi93cC1jb250ZW50L3VwbG9hZHMiKSlyZXR1cm47aWYoImphdmFzY3JpcHQ6Ij09PWUucHJvdG9jb2wpcmV0dXJuO3dpbmRvdy5fc3RxLnB1c2goWyJjbGljayIse3M6IjIiLHU6ZS5ocmVmLHI6InVuZGVmaW5lZCIhPT10eXBlb2YgZS5yZWw/ZS5yZWw6IjAiLGI6InVuZGVmaW5lZCIhPT10eXBlb2YgdD90OiIwIixwOiJ1bmRlZmluZWQiIT09dHlwZW9mIG4/bjoiMCJ9XSk7aWYobyl7dmFyIGk9bmV3IERhdGU7dmFyIHI9aS5nZXRUaW1lKCkrbzt3aGlsZSh0cnVlKXtpPW5ldyBEYXRlO2lmKGkuZ2V0VGltZSgpPnIpe2JyZWFrfX19fWNhdGNoKHQpe319O3ZhciB1PXtpbml0OmZ1bmN0aW9uKGUsaSl7dD1lO249aTtpZihkb2N1bWVudC5ib2R5KXtvKGRvY3VtZW50LmJvZHksImNsaWNrIixyKTtvKGRvY3VtZW50LmJvZHksImNvbnRleHRtZW51IixjKX1lbHNlIGlmKGRvY3VtZW50KXtvKGRvY3VtZW50LCJjbGljayIscik7byhkb2N1bWVudCwiY29udGV4dG1lbnUiLGMpfX19O3JldHVybiB1fSgpO3ZhciBlPWZ1bmN0aW9uKCl7dmFyIHQ9MDtpZigib2JqZWN0Ij09PXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci5hcHBOYW1lPT0iTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIil7dmFyIGU9bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvTVNJRSAoWzAtOV17MSx9KVtcLjAtOV17MCx9Lyk7aWYobnVsbCE9PWUpe3Q9cGFyc2VJbnQoZVsxXSl9fTtyZXR1cm4gdH07dmFyIG49ZnVuY3Rpb24odCl7dmFyIGUsbj1bXTtmb3IoZSBpbiB0KXtpZih0Lmhhc093blByb3BlcnR5KGUpKXtuLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQodFtlXSkpfX07cmV0dXJuIG4uam9pbigiJiIpfTt2YXIgbz1mdW5jdGlvbih0LGUsbil7dmFyIG89bmV3IEltYWdlO28uc3JjPWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKyIvL3BpeGVsLndwLmNvbS8iK3QrIj8iK2UrIiZyYW5kPSIrTWF0aC5yYW5kb20oKTtvLmFsdD0iIjtvLndpZHRoPSI2IjtvLmhlaWdodD0iNSI7aWYoInN0cmluZyI9PT10eXBlb2YgbiYmZG9jdW1lbnQuYm9keSl7by5pZD1uO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobyl9fTt2YXIgaT1mdW5jdGlvbih0KXt0aGlzLmE9MTtpZih0JiZ0Lmxlbmd0aCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3RoaXMucHVzaCh0W2VdKX19fTtpLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQpe2lmKHQpe2lmKCJvYmplY3QiPT09dHlwZW9mIHQmJnQubGVuZ3RoKXt2YXIgZT10LnNwbGljZSgwLDEpO2lmKGNbZV0pY1tlXS5hcHBseShudWxsLHQpfWVsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0KXt0KCl9fX07dmFyIHI9ZnVuY3Rpb24oKXtpZighd2luZG93Ll9zdHEuYSl7d2luZG93Ll9zdHE9bmV3IGkod2luZG93Ll9zdHEpfX07dmFyIGM9e3ZpZXc6ZnVuY3Rpb24odCl7dC5ob3N0PWRvY3VtZW50LmxvY2F0aW9uLmhvc3Q7dC5yZWY9ZG9jdW1lbnQucmVmZXJyZXI7dC5mY3A9ZCgpO3RyeXtpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCImJndpbmRvdy5sb2NhdGlvbil7dmFyIGU9bmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikuc2VhcmNoUGFyYW1zO3ZhciBpPWUmJkFycmF5LmZyb20oZS5lbnRyaWVzKCkpLmZpbHRlcigoW3RdKT0+dC5zdGFydHNXaXRoKCJ1dG1fIikpO3ZhciByPWk/T2JqZWN0LmZyb21FbnRyaWVzKGkpOnt9O3ZhciBjPUFycmF5LmZyb20oT2JqZWN0LmVudHJpZXModCkpLmZpbHRlcigoW3RdKT0+IXQuc3RhcnRzV2l0aCgidXRtXyIpKTt0PWM/T2JqZWN0LmZyb21FbnRyaWVzKGMpOnQ7dD1PYmplY3QuYXNzaWduKHQscil9fWNhdGNoKHQpe2lmKHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cpe3dpbmRvdy5jb25zb2xlLmxvZyh0KX19bygiZy5naWYiLG4odCksIndwc3RhdHMiKX0sY2xpY2s6ZnVuY3Rpb24odCl7bygiYy5naWYiLG4odCksZmFsc2UpfSxjbGlja1RyYWNrZXJJbml0OmZ1bmN0aW9uKGUsbil7dC5pbml0KGUsbil9fTt2YXIgYT1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgZG9jdW1lbnQuaGlkZGVuIT09InVuZGVmaW5lZCImJmRvY3VtZW50LmhpZGRlbn07dmFyIGY9ZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuaGlkZGVuKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixmKTtyKCl9fTt2YXIgdT1mdW5jdGlvbigpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLGYpfTtmdW5jdGlvbiBkKCl7aWYod2luZG93LnBlcmZvcm1hbmNlKXt2YXIgdD13aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicGFpbnQiKTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7aWYodFtlXVsibmFtZSJdPT09ImZpcnN0LWNvbnRlbnRmdWwtcGFpbnQiKXtyZXR1cm4gTWF0aC5yb3VuZCh0W2VdWyJzdGFydFRpbWUiXSl9fX1yZXR1cm4gMH1pZig2PT09ZSgpJiYiY29tcGxldGUiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmIm9iamVjdCI9PT10eXBlb2YgZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2RvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKHQpe2lmKCJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlKXdpbmRvdy5zZXRUaW1lb3V0KHIsMjUwKX0pfWVsc2V7aWYoYSgpKXt1KCl9ZWxzZXtyKCl9fTtyZXR1cm4gY30oKTs="}},"time_used":37,"timings":{"blocked":-1,"dns":2,"connect":8,"send":0,"wait":8,"receive":0,"ssl":19},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.910Z","timestamp":1785145485910,"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/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.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://betaroi.ltd\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: 48320\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:19 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:19 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Mon, 15 Sep 2025 16:30:41 GMT\r\ncontent-type: font/woff2\r\nage: 419666\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":48320,"size_decoded":49133,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48320, version 1.0","md5":"dcf31ebe107435bd68e0164d59e19b87","sha1":"b68160c9333af833fe483928b3ef7128c07a56a0","sha256":"d8e4fe0452aa2076429a9bb5d8757d00a994dd95986cf950e9a1a371b9a072a0","sha512":"130cd52c3cccc36a7029bf92b2ddb363b8b36d206454aacc246739919552fccec5cacbad615ba4ac3817da3e83239371fe51324bdadd08357e3495087f62cb08","ssdeep":"768:Jzqdwl5YV7FVmpudK5a8dF8D8Z7J78VGnNFZEKh02dmSTPe9UiallHcOEi2c0NC1:9q+SYuMaVwZ7oGRNh02dd6UialBcOEpE","tlshash":"1623f218f29471f7edecd4d500a18c72baa528d442f116ed07b8d53ca36ca817a729fb","first_seen":"2025-09-17T00:07:53.723302Z","last_seen":"2026-07-27T14:17:21.437652Z","times_seen":316980,"resource_available":false,"data":"d09GMgABAAAAALzAABcAAAABQkQAALxFAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoVPG55CHIZoP0hWQVKIeAZgP1NUQVSBJCceAIIoKxMIgXwJnxQvVhEQCoG1GIGbKwuEMgAwgs0UATYCJAOIYAQgBYd+B4kfDIUfW5gxcSNacVv1x4BuMQL4Ss8t1RmfoIBz4iu3gy7y7Dc4GccswHkI1Dlfzi/7///PTCoyZlI06TY2mKB4/R/LjtLk4qCmm1aht9EKly2RtI9E03x41nqIDSFRkqV4wHJUFVScDvw0NWF7hRcGrVR2kZWQTRbmMcmCUIoqvLdH2KHWlJDUR0+c3DcyTzUIbyguosQun2RUKdDiQZM3CToTIx15n3QJmW3FCiFNk/Nw1lLQPHpL8iV6wj95KAey1N6CbJkvLuUj/kBeF756vm8/zli3fXdr6ZfECip58brwWrjhYt1h17Iv2RJEorpyPkv8e6s//0c9w9cdfif0y6VhFfvuloGxi6G0GGNd3p+nub3/726MMWDMgTARRlrYGGBQNRmlkiPSETVH1MiwsMFIRDARqwkrwMRoRCzoLQB4qOwe/k/39Mw+MwJDWJXLCuVvhjAj4e4O/27W/0FKbXamHe+suM/ufWb6JUZzzWRM2ikt4gkESEiIC8ESoAQ/Xmc5X2Cv3kgyhbhKHa6vCoFo7QU2hUDSNFa2s7PdIZK9RZOiugHYZrFwOuecFbMBA5MQA5GWEklBJRVMFBUFCxurURetGDmdOne7GYvqv0VfbRf1/PPPye4nntBOHiRRBbxOQEGShSlmFNDevbrXu7PIEGTluVJ5JNCLA8ROAdgFcnHsMjoFWpaO4+f5/9+vct/3C7sGiNQIl7WqQyDszMQlNhbfSU3Ah110PCpAFJq4h+e32fufMEDUZdx0rq82d72vrq/aiy4eHxCDMhuJVqEVHGn0VIxZebMXhcPjpv1LAiEKCQkREpIQAsELXqpQXbvO9URs939pdl9FT77v/s53PtNOvEp/ni79P5cD7SyzEYq0fWRSvOcvcmc2/QQeoIKpkjRaj++FXlq+PknbbKf0ClCnpQNqGgC1/84BOJQE0pvBNqMSpDDtuulr98ye93LonOjX7GfmI9Y6RQNJiJHEgHezb+hKu2Zdk5pDHYshGop6EAsEghRatse5fdqfuT05s+6eWeade0uJkxTwI+av2UGGOTRuxh+RNHsrCHeq/Ubt0KY1kkY8gtUum2LHDpDzQNBVekrpuryi+eLjN/n9lreSKInaiE20EqJJ+gZ32xNMDsdYd+AbLjJB1K81Uie0CaL/BHTzq+LECEkgiKrd0m5bfWj5r2oq2T1VzmSAKZ/46TxnblVXXe8OzqfSyKvIsPU5wM+2PKbKYxqqcIDHi2fUDgAYcDjo7ngblKT/MzVtZxHIpWRaglIEHaGQi0a5ci46Pxedq5n/ZzE7s7vEYEGcgAVwB4IXQOLCAkeKQQkgFADeySGnSs/VglSAYq5UOr0+xNJF7aJ1U7gu7dq1/69Uy2t9kh/T1CbQ8qE2Fx0/ZxxaGofrSI7p7MPFh1OjAZJAk1w1QMnbBKWZJiStm1QqgqRfARpOoLRJcg5ySPkDkNZFUHouitpnSNpAOeVjvMV4uPh2WPuafkbVr//U/FBrrSynJOfAQ4Qi0AD6j7RBmi9PuWTXbJJDuhQitNnBgwfgBnQhQ6NLxY8d4ff3c6X92f9ygNmUti5XYiHxC1dSMpsDopQ4x9mdk4C2hMIBuuwe5Ti3WzjAOgDSCEJWyHpJwpaF8xWuiIPjQ4CBNQxA8kzWqqoSgb4Ni8pon4yd4fVdv/am+u3at5RRbCeY8TAqoRvKMFSl+Ehu+a/9k5YxLQPbWtRyFRcQltyPYUyzYuDWTq42UyNulClb2v5QM6YJF+H+TEOSVnsAFbC2mb2Qfs+vHxSTusbSWCnNzdjP++z35fEao6iEEEE0gEidueWAENgaU+jRpDAmQ8sgtgKuqRgxqUyZqTyVqfW2pLZpTZ1zU349jyL06of99uct9deQRPHZA2gDYEJovvrrn/8GDEJ8/kMQwPsiAGwB4A+Ag4GYPB6CFwHSUenyItJQ/sPowiXXbr+XPMUakdrh81t36V/ydy51LYyXi8rcw+yYgY3xSNmXPZV81U/NN8Pv6nvB8r7/btf+IED5D4WK/rBQ6V98q/T+yt+Cd0sneqcYQPx9f7jQYdJVn9g1XsKFSOlFP+9LoeTrP/326Cn53Qj63bj8u1TFPWeTB+HxD/Hqh9TSx5DIf/tJewzjPyegXvxLeRHLeYHLeenk9NLd/aU/9WVwycsI3Et06iu7gFfulq8QRFjZr5CMV5H0Nx6QN2GkN0gqBL2qfPOmE+hvw3HvQvkHEJH7Lkb5PjjqPQr9Hsf7YBv7Acr6AJd8tMNWnt9vZCYPYitPLv/jLerZ11cdHhPPHzfOnwpC084/vvjwKWbPbX3k+igifP1Roe9RmblwQrywEYYsXXgoNnDlwmsrHjuhi+vcxZc2/BmRrZPTl+6SLj1lXj5uXTkmX7kFpL1XT6nXTogDpK5HieC46NSI82MTU8eFqZtDU0+Xp15c/C/app8e/ff08H+yw2fD6xrO8y8FJJJGCCv/F/QF/dyFidfg+gEAAnABQHXwH4UAQIP/iS38emHhVwuucfSpq+RlKnGVhVOj5dOd5ZY5RAszrzbXDpTW/P3n+V7/P7+7vpsj2uahPOMD/ft+HUJ83gCwOPXdy4WyBIidYbFVqCOO4nsB75zSpJgkLygMj5YXKkKS5KUycZzZTAq3AeT21CjxFXMNNC7LyTuACgDcEMDxbWQm+KcVAw0LqgUSbPznkHRMNN4cLTeLDhXEIqvt63lgAFh2JyCgHmEKY+3qM/0ZnaPloVtwVlStt5VJj/x+rMMiiCYBxPNDNKCyT8TO2CJYo6P874/9w+U1liggMmEC49ciJGL1k3l30KDQCOTOBpRvvygt5fEQHVq3J74Sr8unAUMX+J8DQAXHAy0cMRHmKTOViCYVxAgDwAF6xdDFMD6mIxfr9HPpb+0kiaSvEYRcs3Z7RAIxYNQbhwT7dt5V0YMZoEQUh4LRQr0kkygAMY9gW5SYV4l2Ii1Ls+5oajouxtKToCT8e62lMFShnhGzgcJvOoDl1ktm41ib6xOi0Ks+AMnKxBUBMPMguYnJFxTzfgMJ1L9qHf+1q+C12zAd/7/5d57i73kJv8fvcJk1PNOXPtbLelgPa4/WaiEaiLAE7+EdlKFZz+Qlj+WmnJRRGZQm/KdLrIYVWZ9an1jvWm9Y7gKqIjy3tH9p79Lf1D+oP1C/oM6p7xn5eOSVkYsjj2HTWD+mK3FwevGtxf8t/kn5jfId5TPKh4a/HH5l+PTwcc+kp+ihPO5d6B1MvJh4OvE7/gv+Df4J/o7j7x9/4Th2/AF0FC2j4G70nl44uPDiQryfX7AfsS+xGnvHsfhjF4895p52F90tapLsqzdrh8xxD5fQhLqFqip77XklLtFa7ycIwqqF7GtpzVuzraaueWgCHXACxiFthPSTz2vI8AqPvq9tjYLW2ppaXdvYytZwnkCKBATBbSHLNmcNbjNu2lPHBOyAvjpluA8f8WKhG3kuj42WPDBqJ9iB9SjZNTWjUth74AXnF1t231yYJqkvphwmV+lRmJ10NIT64mPqQ7+YDBGBSccetpZInyxdK2iudV5JAF2OzFiLDyALzlFhrZ3sLWeOcse6RNSj5h2O68WTZ41aXq6twSlTjovQ9Jr5ZN0p7o9KGjxcYvBK0lgzehUzGeZE52fcWoliT615x7UxWWdlqvf6La9Lx9dLDF5xsm1Grxi0V1K8k+LqqEcCYAyKY/Irj+ETAGgHmwoclKmhi9B4JU1pjpGAwQVrWq8iRkE+7ZzBKyHMWHmUHpjRq7YR0bKeOdWXGQbvkr0lqG7SLoDkikfMRklXcQ5CzdX9UcnU3Ph19bUWPmPw6k181IlePelDg+wyGIxcxdMISW6N1a0pEJc8smyqrgeZf2bvZNXtfdabqvpSYxuq+7zABzQdQH0LOJ53YGes/Z7pVk28yaU3OXVep/Y5hz6jba4UxM5wg1qfXxPRX7ngmYmT1TgghDdVjR1Sk+qxXvYjw4IzWuMvTQfErjsE4ZHCiUF706ry57HVuKcEscu4pLziqtGkUuPqUScZu0RKUwYWsqcBAixNfr8b0a6mxr+pC5hDUy2kd/MTgC7l27OgM0Yk+LYz84QAjBSFOhHjiSj61IIY91IDp2SGbxrvP4LqxnWZzwklYCjGxoG5mVEhpij79AZD3HHQpJnb7RNEwmIE1/GtqJnOQsFQPEPjnG17XCCFXNnezZswXfy6mdzpH8W8HXgkFjKnAaYIWI9LouQzPIL1YIpQRyuIA47RmRUFMtO3C15C77V2hAnRCQxXc90nHLbAcfMLIufcX6auMGO266SwtfIy9b57YuiDxo7nyonLaeQkAk53ZATR6yavE0N2DpWspDvVwPluPlG3GntdiAFUXbBLJtRp5wuRdYBexUS3KDbznDUotS7AdFsAXcGJrsGXNGdWDjHrtH4xCFMo/j49rnBGu2VebpmV6pUAMUIp18UIzbf9LlHw7bgvtVRQDGDhosB5+guFuper3Pyk9HzqK7UYINfZga56K9k6VWa9tOnMQ5wxFht7Vc9JlvrMk1LD8TCw9B0D+Y5479aEcHyr9qKm3iYsnyEkZmFwP25aJ0jpBkG3l//b/jOdKdYpgFa3i3FBN7UwdEUnzF9iH+Y/WRS2RRIVtuXM2ce0y+X6VR932+sIb3LvdPEu/X8+rI9yQEdyY0gw+biuy7YQ/RIX6S+R1buhTMMA7x0h4DYe5wlGM5YX7Oc9IlM/C3gHCxR3s9r6ilb0yIYsgIDm730eQq5cE94ibOQ9FjIxKjf37n1wUweAAM5sUxIA8D6eiCAfwJfyknMjHirgjJMW9NcAMfGb/XX3t2daaWW5Svne9XXQcBl3GPG6hnXfA9WPwwNrvL44llnnaDa80Vpmy75nf5+EOEHyBcK2Vk4tjOhY1jBQn4x3MnQsPDM6abmK5z/w4dHP/x3tq8KXIdxCIoXck88m8O805igh/IplAd4/TLW4we1amPxPIyqgMmkkoFoRXTEmFC5hzSJCG3mIFY1RF+byj6WhHSQMeD9PblPBF2aLoI/8HmgXqpdSjOnQxOZT+2ACPy8RX2/ipB8xLfCLEj4EOeT/IG1hwfzGIBATwHZ3hX4jWb5YaE/FjDEQCnY1S1wyqxWGA2d2aCu2KK0MZaQB9JHuuLXb7aPZ93J8dkYj8PAE2m/utGN/E37kGiwtwCfPdunrywVoJaMTGRW4xwpECoxxLwDZ5uwPU0k1fPuzQUODpy+FcZjUGTXIkPVD+h18pz5PUyi7wtEAPub1NW9WqIcmS82+zUkbmrW6bFZsPWZLIWGJ5KBifQf0W8rxj9giUD53YQQS+InlocQzRcLlKuBrVfl1zhLZCrFRoXseShOlAnMls9atkpd4/LIAedZxUa5Mp1JSLrzZ14fcBHl+nfuum6p0EOGL0FKSeJbCuFj6b/unSoJ5ut7XBKMQhTDb7hxMOth0f6m/65564aV+OJ+33BAmQZWUgvTHUEhSFYJzP7TSfZVbtooXoMpLGx7DFolaLpMdvPT7wz3iI127DR4L5VqMokaiarfmeoDmmleeuI0jI0lYERNqqqx5yC1PDgxXXQmzkMUPU5sTCf/Pce5YzV4GO9GCxVgjsRW958Nbodp47Q46vnheYH63NqIXXXLlolganXVt95cS3A9zk+H++fmPY+adJzS3v+qcuQv8j8y7qVH9veBAqD/nZpg+r9ydl2FzoL2u+/76o8rbd+BasN/lqI/vgSpy74UzMV3D6aCaPYt5n1Lo+efhXgRhigJdX4KhCFRujZlfI3Xk21DvCT7gFsM/cDR4P9MdNr8BpWH8B7WO/Rm4t+37b8vbPyn76Jt2fvRzVz4nceBzf/n5eR9bPy+y6QtBKr8gsu5LMTYUatPHs+3Lgcq+HOrFlxMUfM3T/q8Fy/3GTPnf9CX9tkDbD+OU/OwN5P3SUM0vTdT+KcCmvyZYertfwxt71ccqTtsXc37xMy91nHaN5J0MIUnuPVbps6GvHy2/9MbuN+Mb34565NuvVb79evoHu9g33un98ETt7Uc7335y4xOH609El3DR9hwKHXo6YuTpj6hfRNpH45ZO7IqdeOLB32L53yHQ6UOrfnf8kT+crE0+svGPofbZN7qHhJ/+iv/u19JM9Wb4cdTSP8ewf18vTk1Onnp04J/nu/8KuiT9ztkXsi1QDLSKKEexE1w5sfDv8UXv00e7Gw8oQA4U0t4/P/5D/8oQ6N0cX0CWVpyT+YHave4C2KYCcNl5Xq7XpEnBjVg09YoCcDhZ4ICuALkelatDgD7jcoBeBADkMb0FAA8JQegIABx0ACbwDeeKoxACSLkgSowA0H8jc0bapjGCuLG12JHMswzMX3sBjIYA+71yrgWQQkaPQzj+3xCGX9C9Tw1AHQNJw4iiL3VL+I1WAzoEo35wI8HDrDs3hwzAv7a84O/TVvIVBCCVcqEiPEVIBPxuaXiPNXQ29OwhK74r+lb0nRhEKNHIhAGP4qPkKG8EDc0wjZhRNDqMgXs/CY+bfjPQmsvMSu+UAb4x+ax3AoQQ9a2cIRnqBy4YtX+5oKT2+PzZ+dPz+7fpFsiq2dqsrRs5Aca/+4u3Pd09XT2tPad7TvUc72nq2dtT17OpZ9bPX3jT8RajT75CmvfAVN5gAPj8s0C9xHK5kTU4lHoLjd1VyhEHyFMjX0znTUvYSqsDedYGhzSozakD8uSRtT1RvWqH355tm1hltolWZbt0+1SGuQLIPdrep1BqOM4yXZbqNDjpyS6LNbaqd5YPO9ZTOaAxSC1dXiBQcn1T7krPNt1eRzTLV2FLmEskVaw63Xa/LEXKbTo+fpM+qbKV2BCO0kjp922jbQ6Oay29M4CzvJB17eAhx21dmZWZwGYxcQak34/62Xu97m6n3WqKjbpQq/KVcqlYyOeyGS6dSibisWgkHAoG/D6vp/b3cHCwv7e7s93rdtqt5tULxTF/X74dBgk/mR7b38jeGYQnfXz/h7cWIoF8ZhhzBHcgtteX8qmx1hu2Lw0wU+72x4mmP7S9U2YdPsTzd+oNuHdQCZW6DvY2PDS4K3fTbukSKEll9LrUvYj3ianR3wNjADGSCTCu+VYCz7QWnEl4eHSefFnAmPOMTceWZepblxREncPw5DwRjcp1C5RQXQnJcij1jGvEukqg12e+7VwAMtguG9RwIH57tMNvT54SQRge7Yt2FrjOxkz1hfWGadDaSd7XpV1VSB+itxqJoCvF+HYiuSk0VUldCc3Rb6flKyEl4bFPOxJtEB13MQLcIBzE9Ew2lA/1Y6ruTe3q4pnDThAupDXCa1yRIxMhQW5lLzHLkgYlWNwxYrCEcjPM5C5DxSqPOgJCKO75m59AKI/18Bh3a27dnaAyakl4Kr+yyH8IYCB8j7AMMZLF+/U/mG23FUzdidd/MjI4T2bMnEDQ3Yq9sPBJD8wQf9uZSr5FUIYtW1ZUj98eYKtRJhp1LNN0LoEMQrARvOFD4kmiDbiB4M0HY/1H+6d9oFiRJDw17FNtrV57sqGy8klPk4NKzVC6lqeNFRucyhtIWYmL23QdPNMZczPk5xnMfGQnLI0PidmbjexcoqKpvQqhYqahfo7wTEJm8pOZxj0iiagI4uljhPHjwtNOZdqYILIKrGf4My65pM03mvKICG5f5mbmI3R6hTiCxY/NeAZd1vrNfH+DygSj7qlZ3ztIbs/tP5eIYJo076alJRvH8WbFU2vY6uWvjbufemy7pLpwLTIUzdJjW5KRZg9HmiTXH4AZAkzx6VcVfnhYiUZbvOqB3PVDbSiNo7Etb3RhzOz6061GPpJsYNkyWVCRvpfNePazvNaQDDw6Ac3c9HXLeSZnDT2Zz92+8DuOizrI5aQIn3bkt/OSvliaeHnxYdxm3M0K18YFgmda3q2Vx46SyBjTX0CLs3DynGp+zgQwcwOhb6nVu1hcMLjkXfl2Edkmqa7k2/yFNY0WaUm+B1kaDZMSascCo7uWZGSsB7MPZ1XZKGO+GORzccW1h+a0E6fFgsxUQsjGKfiPDAkyoa1xBg9oFiULTK7anwvbUpVQOepUn4LFs2ggp6WqNGXrwTldOOOBvCYzXUDdekBLnsd5gWPeNN8bCNxC2M6O6Q3XHMcp9PpQtgZoxmpcZQx01DQlW48yAWwEqjVqgs2vcanGG4SV4MDNhlabdUd0/ghWiqxCjw8x2tOigprEZx2NBxRQHaD9HeCVTN9gU/y4i8Vll1ZWzRkHc1ddxROUvTUBJgXj5Y7MCLevR2VquJmBiZdwslIO4xJQzuabHUbt+kqZhvQs0HSZx5qqTj3PnBGWEMq/xWyW1Hho9eiIj3hEfKL0FQf0iVWm5FSy3cEeRszxieddHz1sbCIeFca4Fw4CZqbP3BXC6EHogYv8GTJ1KbU8OvzAgFLoW6leEBvbdfQGJguPx1Z0gELxEQtVZ/y9l5wgU5IoLObTGeJUF4yr1aUU0/AG76Gw5pnPGmnpHDlNzrmTBu5K1ugQja12YXwQaejn0jnPdrUFMWh5JEw5Teflfmao27UMoJDNvJczfTL7swT1YIO4P0f1TBfI86C7yDfwVwJU8c074ncmQllgvSEKFSejPOXPXJg46fZ9ARxuuYsDJZS/AbGqO2bpqGlZbllakBcauXf56dgtlAqo7urjrGSiUsU5RUBFrEkEEbAFcOy1Bp+BXPVElBN+KB+gJfo07NqTu8idShds5y50KrsWMtBnX3OzFqSVU9pZjuxGKnwGgbkFaZFAZIv9KO3DeL9KnfE7fyiT8EKe5c1xVBZtzm+5ZndDEuG0YMB9pS7NSUZMTgHI4JVpq8xqiIoJmfRcNT9lmFUTWFrkHdfQ4cjii7a5OLfwS3LcEjj5HHcGRzohXTOUpZblBQQdrQKeuc3KeXu8kL7Wo9lpaWOc0G7NQ9sPsHUEwLPA8gvCgp6U8NjV0OpPQZUVbrn24JzMLAHnyr7hgrUUloIEYRK7gF9SPvdX3AA3n/7bm0/ADFVi/BPAK9i9CWXzVGCRs82SlpxJntt8kxrKJ2BS+X9BzsCAW/upDN1gIFTv4lUX5KpPgpXPfwu2V9b0JoIleeyvh32gNwiTajRwZc03EBV/8TWMvcn9Xj8yfrBBJVxQfjxTtaxlrBQjJARmBNl4ywPX65Ku2ip0fKr12TZUrYsNnDq7WlQ28Iq2VrHD55TWICwGO5iZy3McILx5gvKhQbOyyZh9jMtjXKyuPuWve8sUNd0IjGs4x28tG+gxv8rvLNbG0PqF1IwA/IGRs15zvao4kSocyhZLSKAReQACko+pfYhLdg6PnRDq3/H8PyHBH5DywUh4yElo/Ab57PMfqbjhz0DefOS3xTucx1F/gEc0sG8ULLSGbX/+Sz4vWsKRjNr1yknBY0KDmjCaWBr/+0oewPHUFg/cgOh9Co4A0DtURfaAWYUAoF2lIWo9CwpFLA+/wXIYxFfDWg2HFHkaWgcgsBMGCEADz5oEJ0R5CwA0Hhi9GQA/BBB6GcD1Ggh1NxcMjQPPyghwp60h5GDFyUOk3IjDSaTPfRK+sVAODpKEBN8zTwNsBaWB/I3WJNAFtJNIujzENbjWCOPuMaTWY6fsre8f8b0eklUi55ukqbATtbBaiMNFBDQQMCvuiQboMY611vQt7bHXEPlUhYS4xpOxRJj0jT+2NSWRxxSd4/bs6XCd9FWK/J+IyJNG1Ff0fRy+te7KO3IHwpLU1JUU3JiyfTVdeiDrDBqNYevHuJ3CZObXTCukhlq8G0qa8xiHx3mKj7R1N3izIB2PxzwifpKIulW38VqraLsOMyGtHsK2HWMgrTF6i2mFD95eUcYUaeV9cl+9T+aUkWh2fhPnfEqmRSJaED157ykjotb4SW/Q251eIuGWBqJd3EZsqMS4ffH+NzWaZ3c+AOpIOc6c9wgJ1jUawVihXEMih+wItROVcyJHeYofo35SA1OqT6kPbB1m7rViovQ+EQ0ClQTpzGP2Ugr0p6YhxSOV7AOwfdk99Xmv/EeiGDJa7PY6apt94pqfugaCh8DhfbqXM/sxtKoXdFpzSi7iVObHs/xhxgfI+CYxSO/3nfAqsJjQmN1KivuvV0jRtD8x7FWjoDYVTlbFIVuDbitH5+mXzcIaKWhd8z+WQjYBwRXphJGQd5ULG28PnUgAdLvWsS5eo2Flfdtn76x0eEGdK0WsLxIFxTSwn0wunxrljRkqyLdLx7SErOXzrzsGdWSbnGomgtEEDbqrhHNs62Slz8ZeVDSoJRqLzYiGYLxAbnTC1wlmlUY6PsJA8JFj0YQuxd3eBkV2GxspRSxR3C5kyX5WAImBemA+F7f8iDkkBECIWDXeVprUMfrs0dhbHwfeZfdEDoguPZQeDN13i2NoTBSdqRKKEyGSWVnzSeLUR9dNcYQIQV0+TlFjlkCWOdhZJB0YjdZ2oU7/UOchSepP0hRVcl6Ct/9z4wmgomvb2TYuvupGEE5a1dXm0taqlSmROAtPEDFHth1ySldhGDnlvnTJAjnavHvUrwXqhN9aleebkI3nMMQL/9gilcDVCuQaBQd7w6AVOaOpBVHcVsdjh3VbYBYNCBslk3lbnkRdK1Lb5srudufpQjz+9q7SqKHr/OfrNgUqpVhHC21ykAXIZ/JXigXo5KZbrTeHeV4iiJBKAvjzaeMQQ1h5JQzIJAzxsx7Q9i95rjutKWTyQBMt+xUhH3CgTQdqTg0klbNBqLeU2o7u67RVhWzJ3TX/+2GeD/4YmZcYKSeHaDM3UL9eDu317/pztPSr0skoJusQ1Xy2HJAt4/KlwloNtFvcbHPjH7sUGzBTI+CLK6VB6dI2NeHEkQSp/+2wlZPY47SkHdFJEUuyj7aTcNoWv0zZzsMFAS7qzOe8t0OZ3nXo2b9OFK2DDJ6fjAeX54YHac5TWNWB02W3e9S7TQUoqY/TTfBGCpzPSzKyllcb6pwgwMG8VH04HFREpn+O3L6KTpkD410WhQGE7RzyUGHMbU3cWwA5s5pV0Ke32TEs378UOuTtW4il9k3jKvM+X5jFx5bgPEagTUyMgE/Uu2K9agWm0YouEBmCVes1kHXUOmF2XpRrYz+PFg9Rm+JZfs2nXBePvcfL6zzTRMvTIA6EKZ5tkf/Mtl2z2O+TOsp6cURJ1px0WbhbHjqSCNVyxJ/1rgrrCA7pIkdM2f0YQRU7HvXMs3En08EHnA85aRWGNDfmCj3D0zsChM7UEuCQQwEFtM9L1WLaysUoEyoMmRyyjeljaUjqaiYbOqFNR9ijbJtc3uJ6nGMZ+xFkWAmMkfzoJvB5DbDHb7F1cgOwOmbM2XqoibkZiDEOWS0AswSXFnx9WFoopOAXfhuz0qmmlDVHFiia5px3vKbyKYDmzA6XFrSqzkMVnlGS6BbM/bwrM+oJE5AxwTxdHPjQOieQWAQd7SelvoYcEAQV/ShhZPx2wx2yzVGopQRldSOziAqK/1fwu0v9Qeg/uLcnne+dU3S7B/zg7DB2F3yD8LJp5VDGYkBXIiSRyl40ZeEcNE+WT68gYw10qya2AGpj6hTv4xsY4FT52Z2QugrKqoxbaMHg9v7AY/flfNsvY98gg/ld6hoNgFlq0A1HzRFc5CEfpXx2nE6WtLZagju+aLFize3G6/7MrDc3vbutGNCL6o+845nvMDKMKjSd3WRfgo6p+v3aMlYkvJiDtF5Z+L1clSgN9T5HXBUnnDkRPKl6jpAwQKy0II/MBH7ogRPtxPKzW6AOuK/Wmb1dWMXFLTSnnkBgPya/NQbyC7Mdq4Pic9BUIXvXev4BysHMJlte3Vkp8YJpuSzaE2uOpmT5TFCfC2cndrZjPjYeq/NiOfeXslWbDSbQnKMyz1/ZrGCMWzZsQMfXpIFD3d3tqQ9xKh3rcSjnn3a6ovWcH2lhjx+najr3Pa5uRwhqSqljyoXe8w2inw0mFJuTMITHAJa4Q5LDp54NOY4oLwgHwY8dStUPmSoqvhdB6KdOXJH7FkXw+INoK1jjhefNvc+QAamzsyVladOmxlRQjEJtwJI48JDXJ2y1bb4UrLj0LLnoByIKVm0/aiw6fWPh9BW9N2bWlS9ed1ETQXjaxkZNE9eC1roq0Yzb4y5ucG2f9QhAmX2G839rhN4pqG2f3tin70pd4xQJOXrMSrCtRW7KqmEuLpCO40UvmGvk1h4qHg09B2VI+82areMWOgyr9QCsG5yTZ4HUOS2MjAdFG+/b3ENMQF1YZl9LrhJPT8jDyL53wc/RlrUPtFg95/NgLB3UObWUoamE5JUsrDUZd2WlAdUL+fILiwcArKtY0F3xE4xn6VSIuAFp/0ibWVYukFmSUlhFCr8BtSMdcld2qfdedsgeLLPKZWY9FK/uq5qB2u3F5XHvTR4dZwN65ukYwVj0sME1oQoEg/NaQK3l59lLb3UkZHs7jgnP57Spe7ajo+DrmrRtR8ttnScg54fTvgsWTwJYpsmpsdMdjdXvmsRporKtfqADfot/p5p2cK3VbafkU1zzEFSr7ArUiPoLzAprElQTfKBUEPXxflHp+XpABBExQqrZ/acFoUzfOBIWB4VDF4tEJC4iwdf/RlbMgXAoEr7LCUuCPqAPcAXwou/qBK0K/25wWg0SfKufknlBdq7vN0Vqj3cUx+t+0WPRpPcO8qQMLOv4/61bkf35GyGDhI+CQQlRJCIBDYXh0Q62C4ugHVnWDm/gVtEqBl+H4bhWwbkzjUo9jDWjZ8xsqdJxHAddEHuheUAwVH8zbtXl17hhWE5YpInm5cINN3ywOw8TPO6HZG44XgecFPOaU9OlXTOsYpOpsonsjTN+VA9YC95lHyhhy4IefIyfUpPRc3du1eZRXtm2kq2MiOC4LHiyY+n1RupmRQZKgUUHMuThfk7fLmfu/vLokeGXPYLBX1w7ur/0a1i00bEx2gSLy5oYG2WOwbtSoQuLPS8xG27Y00Y9nFI48MvDvq4vA1pqhBp3Gp24WEe9wd+ufr2Xym1Nqx2dr6EYmlXEUcfUUY86+VMaB+j+8tjsXz1vzIWq266m5B+tyY4f6CxOQ/7AyYaVUeXJ7Ubaht5t8ek8flQuo3hfW33TqSRcrMNmyNCsmEdnVdHiKwj51fyETBmEmreMOSs3honVeylKD3R9333920EsvNpDXLVPodW7YKLNt0JHMKh613TNPklltRcm/OARbHS1j7TyQHpZvScGbe63aAdqayl0ni4F/0o4JDiWNpw2IvjZVgt2na4vBLe5+p122Nu0d7R59Pt3w3izpfLsOWty+DDG6EmusEvwnfWc3BpHsd7u+6kv0JBBwkeFwYhRJCIRDQvDo82DDIveJotD3vaL23C/ejqHcFSvLclrjtw5msn88kHMvH1sevjuXAYz7ManKzE7WhoKClr06B1XL8ZYNjep1c1NKEur64ctogFcTLJ+FOYb9Yn5raEt9j6nWhvalLl9E/FGeUVPbUnWoTguVqDqaqLthSQ1nhZlT5UUpZwbXs9TxqBMPzqi78hSaZ2NySnWZlP20/M9VZrTX/NWis4AkwL2JgfehcovHN3fIkktOh5e29PRqx0mJlbyVb0lVYwqDxWyiFOQEPM6qefF88sepDXOY85hzuk2SN3zqbuPdc+QGwQIHSZCZr6hgtr1Sg8fWKXhsbxkpbm/5sGvReOFp31xvvvJkOuwVJWRJOzK65nbv4butf2bE46cuj9IAR7na6181Pn1wL/5DwaO/E94ICjDzLmTLt4WeuLOIZHdlsltLyXMppCU6lMZmWfbB1SPr2k6c+ZZ9YcoP/14o+nI1GxX90ivvJfN0mFx4MYEdSnRwxukd3cbvF4NIobbAvWXq04n5O0uSKLX16QywKKA/hx+t7xcM3dX0rXngTB/ulzB62vP4QDJviUKUlOKKn/3GaYFMCl/X9fBweEuDYWW18oX+6BSQNVCfLHt6TqNIT+bTs7UUeM9aB7FdHwWNbtP5YLjxOmBfwseDhx5JTwAyTX376KnWYZ+d/egyM5k0uK5lNkcKqw6mZF5tm2g8Ml1bbtynlV/mPzjZ75+aGqmu32kL72PxdThxr/7wlKShwzFnCQfDyUTiDE2x1ilfL5nHYc0Yowe5Eo7hu+s99TWOOknDGcEXo+PQchscF2/osLjErvsSV/oywJmKd7GFJbcON4YdWiXllikPxX6Mw0i1X1ZY8XZHbfxMMCZboXUNBwyHpOc7JuCzdTnlaXtCiN5R+pZASsIzdrtUyOi6NpcJRWFRRK5zgK012wQCRsFDzNx3wfC4Fi0Y07hI0nAMX5XLS9JlJtjTsFBjJ70nL2j1yYbsq+ta/RJI27Wtj2bHbYpx6hIfHJmyKxyZdd2y/bZGcvcP12Q2I5c6XJz6rtU9hIh8KrlAx8G1/3MO7bA+bKmwb/4jKm9eJ86e5KE9UrXZ5WLi5RTph3bNl9gWwRlVMoi9/iL5q9T565P+pw9uctHf7I/ffwKy4Xlym8ZdGDaE7RTV1wt9Iv7bWyPnOVhGsr5yVbmEm9vAqdT1Vix/IN47+/mR/BOKz26Ut107so/BT6hpw8N1nLIxYfRTR4wA6J0ld2wN+5p6/FCy1e9k6mTniynvgS3mZ2lzwOO97HeGIU2c+c3x/xQdRXC9sN3Ej2MwVY8m/e/z1/kGn9tB6SW5efYw9PouZ/OMv7f0rfe1uBgf6vfgoFJS3B//UNJn8St3rlw/PD0O4kMIkdYz3//31fwL6DPvYpYOMR898Mci33iS9mjQJEfppfpvR6WOf9fL3v78lKx5Z8GV1q7w4FVnjNrFSB7J0DbReZxFUDV4HwhN1qNFubVUNr2ie4/KeaQCBEEmSUCmDRNDA3sbk6eNwos3ly0vLWnNbpJ9Q8jMNrqKOz4nfPEUpemdes0D1rStAVLswiTYqSFvHc/ZvrPziurAZPlq39dHRodxW6qNSlKmnnYW+zk/ASZiztXzHimFa42ChnvMj0dNnTBlG1SvbkPk3DQMWX96RjPbvTcnznD4//kGM+z7cde9LICv/vhod/yIJO8+vpE1o5HvWPjD3ozdpxw/YT+e7y/O9vCCqhYdN385JoIZWysfEI+OBc71npyu85wD7SdiBY15Pcsd7T7rDom81m92BnEz/yVO7L90PbObXYGIRaPfRCoF9qLOLsbJXTnrq5zCllo6hDaq3vuh72bH+3uMMyVu2Gs9bXVi28l+zi9O7xb8PURqvt9uCZvIIqRx6Bh5YPsumChZztDkhZaxyvWGG8JmovPQdhAeDfDcxYiFleH49OI8RhFB6M4oDp4PlPUv7N5AkDiXenH9l+yZQ0vzu2p+Hn0M7U7XEC/TcvnT5y5eKZhXMqeVh+zovMWPe8uTlhtc/ZppymeWc6yffucU72yqfb4VduigpNT8U1o4/PgogPXln4p2H3MiubAu2x95P6EE3HxqOW84Xs7gRVne8Ia0g6un++QdMVK3Tpj7dPzzDHFJtGSsVJqm+NS/J/KfJ/r4FpLXVfdwps/z1i+V5LySMdOH3dBPah/suSurkKOh7jXNZ5wJP4ufRC+/49Bz9xZwn5/52z8WQB55CzHB2Dy1cdym2HRG7Q47G2/aAFdPo1sOpf7WX6OJrBc1Xulbrf3Gorfc95bLmbBmsubzawbvHSkfEa2iVMBipvAEeCZgXY2wL7kM9/PrL0v9Thk9jiNWesnke8mCtpzhzbNbDU9aYr/WGmBKnFPGNELqqOAVhBxMcYtV0wPFivFBUninuVDh33sE+30+C06/9ZAypii/trXnfKy6t9O2FprlAYSt3v1lAC2cF7jta1C1InOrdebHy3uGnx+407/XZDCtu9lqe7PS576f97/YWAPepqFtdjWekQW9suo37fqyd91pebyW4FNfTkNblZw2xu/uEquv3vu5dcEieg/MdGmOeaSEUDmNDjtMX0hTqgNRjfPdp8/636z5fnSroEPly/1PwaBuMK28+VZzwwZ3/Dq8sWxzAMgHrCHDTzspdr/obrmzwWtZuOD1q5G/b4pyz0EgMy8T8t29lefsz5nPLfOXAuntLAm97DyYzPtdQG1LlybQElyWR3T2vXFxwfvD3Zn1HarHY+gEuAoXDLBn+edbVRpZMZlfr3bkABRknPR6Z5vLn7o6ep68O/mUCzEU0Gxgq/NnzJ0Lfqu2dQ0zYUL0uNw0Ti1A/cUNTcoKgmfZBBuS7tTq9Wqy0vLtIVllWX55dog+0S7m36bmI1tzpkMvR+tfpYjmGm7NLTSXNFYU9YlRM/XxhgBZI6rPZdMNpK5u/yHIpDD/hA9MqLeKuAjjGa53Pj+L78BDk3+54Fr8tiOOhrgd1lEPQSnH2ztSXZ+fiaFiillueJUTt3p47cfqC/UbqkvbR8GkDmeiSPfa2DEgrdauLB08ua1oXP6wvqCA51L84rhc0nQYnlUfG5dUtRsDcFIbnDavdUsbUm5L0k3KgSJtyLE3wn9IHLh6fOnbhO7YrH36hk01l9G+7b65zD0fq6kjeBG4u267hN0Td4ivb6bfLvxWOk/75n7+l/oK/4xNebriWvdWerCniziWn0d8VR3RtHE/pdWEKDw6q/OyneqfztgC78uSBT/2cLYLDexPgIgz2u2P2T2cwq7PjSmtbCFHzu9oc6zFbXSlqZNb8zFnale738Finj54Z7vJsXAtiDamKLh4q+uwWXVv3cYzXXD6cEUM6e99QDyvDeSotZEzMyGWp87nY/mdxs+XLxoeAYKsBN6xW1ZsNtlxJq64Yrg/NSwFh59hNxifdFUWyKvjHZGYgOzMjvW4xrVIz4vduE8lxGyjqqUhCAoQYvJAmf6DjLYBSmtL/qW0ibBVE9kPX7nLl+muoyGg0VgdZHp4HSQgcksdLFS+/O2j9VcSbcO47ejuN01LXtZezHYz/L/rGqx+gyxwg1fTyY3Oe7a6pQT3wCm185wBDMt10bXm8sbqsq6UmLnarGuB102k3/1U/8WPOxIt+lR5JAD7qfaShc7sj1uduO67oIDw4b8hWQa/syGYs98cLnsO5tX5Ml9wr+1H7RLJ5oJvEQ/w55x+GLZ/HrpjzszHKVEszD7tJ3af+vfHrP5SnadDy1zOOU57DF8ssyhM/QU9BT81MmdACB57ufyOJ90V1G56U3YYTfuq7J5tzvvQXK5oZOZHhJn3q/nvvVGJwdjk3TRu1xUHnmgXgGs9lM5yJYudv4eXw6Y04vbc6BxyMRcX1YLE5BrjOTFwXPS2uaI2ibKhsxEOI8QlJmly7W1UPkzdFkwAoKb6UsFuLmfs28FBFKtZrj+FsqGjHg4lxCSla1T2ljkcZm6zFAigpfhRwU0dQFHdeI2ZSgZmZjny2ph5fkieaTw7LT2oyQ3/26Sh8wpJLIS72OwK0NQ0EUufBDZXeIcFK3D2/b+WhpBRRU7u90eVW185XF5+6cEEiEKugpFBKP7DKNtg0wuD9M3tnmAQ1rk9e4R6gEJ9VRnB+V4T3KeoNHrYXe2xiNhw/nqKxXWCxWy98eW0r4sVJdZT9kFvL6omgkmekXrr/QFc0p1VR0eB6sOPuP65mFwPKdBAPerIjxcm/LifNX5sAr51JIQtHgr1k9j1dSWktSs36iN4TBqsE2LPiWpoXVHgAaLAZdg6puTBC36n4vBGFwp+IfmhmRBY4uVn6YqNp5cUUGmM3QUSoWQU3Q6anx8BZXMleNeldyYccFvMivvnI5WY+44vANVjprOtNll06ajgaz9TGxt/aU1uNXC7LS/QqHDudPAvDxe2bX21YJ9YKobtIrg2gaW6nLwaP+Ykkg5MANoSGSquZli/S0ykKlktr7ZfbNg1Oe/LqcaXOWI2aNJQQd8X4RS+maCBzgsTUcOIjKhmpDly0ZxxaTwKE47pQL0XCJxsVUUQmPAvvHQMIwvOLQq9MaAwCItTDAo1BKBsTtio7p0Mc/m8BGVjePHKg7vs8q/ekltffjw8SmuAV26/McNlvTK8aJ6XI1HG1LtLHMJqWqd3X2wcqIZWugMLzPJUNJX9O8kM9Npn9obxO8n5j/I29o+SCanxYNB9GFy7t8QVwf9+dq6XO16ikNidkFEPEYMgSbhCcSUzjDlJhUSQuQi0cj0nfcDxJE1nrczZZvKkaTeKMQNRKYwlePBgHAGNXh3qbtUQ+D0t7sIBovwblI3aRFB0A/E4R12NDQimyzRrjqTI3tq62Wp+X/0Jg1dS2uRP1JxxCxSPB8vzDUjFKe5LocUE2ijDybdzqKKMnNNS5F2xjPbhCJGWycjVdLFYLWJhFa5K15YkCpTCoRypUThHlookCqtMhpPNzr/4Jqif3ldfWFcbOant6wEvsKTFYKLJ+Fi0oPJOMHR1ujE2t7qfEJ4QbaaTh47stvGPvx2Z7culSvIurXFzSe+laMd752j1TpfLcV7NPuglemJNLqGoNRmazOlLDyWG4vB5AWk4gVPWhGu7hovOxSByRFwE1Aqp2+07Lh8nQ0BTiY3Og9stRfRK/xYiSUInZnvJhIkKCcYAWRT4xl9VVNNRbsQNVeD9SLe3BwPthx9QL4F+cR38WYg3ZJU/uDY97mPz4r0ATbjbjKDsttDsykrsuBOS4DAkdlhbDPBz1UIlTPTP4Ro5e6wltsYDnQP3ImLXFfSsSLz4zaQO6qhyaXe1um5MePYXJ+sjRm/C/BNWkpFerqworQkpTRdIdJaRfXYCAbUBDeZm0SNFwx0ufAGio4iivBHdS6m4a8Xu8K/LZ6htKw/raS1c6lZ+dXpak9qH74VXl1YfXUQve164IZcYxQlkoXfaA3k24DI9iDX/wMUy048Lm5RXqVwgvLiEkhYtGI8rOBQWzRvILIgK1kLlrfwSrxePB9JrXO5Wor3bPFGK9N5dLqW/h82N6AQz3/ahhB3dFemcvhZt0wFPsktHO1EH2w9ijhmAG2ONjpdiM4ey5yAJ7ip01t9SjKYacgrZaEkr0GnEFoxT0lBlcMIYDAmCrEcgUE7mC8ds8hkAP/cuPW0dTbg2+LlfvZDSB/EjU0Lu7m0pIZcEzYnz89+8Rnu8DT64+/zF3nGr5XNewx7Bru73puKP1v0+/X7g/x9z9b9Pw/zTGYRdaZfJJXJpIlYmiYRSlKlN37eOVWSBlwrNapZgVKgik41LXdPclqS+9yKRiVnGUoNkrUUMrJ6hbLUROULDcgH4bQA22Pa7sCU9KahmK4TtbBbMLr/D9O8Zl9eohMcSWLlpAcsxZ3Ghspn5COz2NRPBmifbnjydcv++jsIldKg6l1su3zaAzv0NS5SwY3nYiMxfh7XGShKaFxIlixCw8kXdY+SCmSd3pIBghCU5RhelJ7KRQDjuVRSEBsh4/sLIrBIAQfPjkUyIgRdLHV8VQAtPWXEONKsHrpIqalZwWXX28/+Pt0eXxLqT5UrngKE+bOb2ofX98p3gZjAHhZwr5dCuj+8JNs3PpCclzMQlSPfS0xqz83N63/GNm5eNo37sC5fydobSvSG6Sjgc3B5zVASWA5PnlIkxu7dsmpaX6wUK5NSklvjEjqV53eWdo+aH7QGpC7oU7FggrpoXDVuePcayu4PTXGKyxqxoOMdw3X4lHbTy7oDPS+0umeDu4of39N000pdxIg/aneXNF0VMM13kTLe1E9JIsy+Zqt7OaRDxZmkxkYEhROHrp9Dg/MSEivCvATbqvSPNp1uetkV/CAGezs48DY25gHk+5sOgzBXih1pI/hY2X/v2fsSGoD1/BIlVVqHouKu1Fpa+n5kNPsWczUqsrQumoy/CPesYjs1zd+uokrcoib2vzScT3DW99yuDpC6RsagwYjZfHXiCr7fqf5th82CuiAR/T+mtQkBiZMujgACZCPNHptkqulPQmZdaPLVX91+ZHen79beyZ4zG64Cb7Q/m89okOPWvCzCeJfh0q2X7PqFDxF9CDdh/7Yl2Vb4DwHf9bD/97+eBPDyJ0PNSVbZHtTTthPZlk97xiMUVpWaTtn2ID4wufV0WeZTQ8b/NrVPrw7l7AWxk5pP7T4vZc/d0hhNdPGtsrbup/qK/05Xaf9+y9zddLU8Ug2i5Wd3R6w0G/sf3GzDrbal5qtaZbiTLR341TbZ8IbqAaPFweA0ZG8RM8gj0bMtKT8tJ91Bwy5QJCbmyTmFDnxpjkC11zHAIGvgN1hsUxxOM1QsbL4++qC8IF1eVpAqqbEqGVWFUgkCh0EiCbEw6MC79sdgLE2AT1K8REgs3TskmAOkBZOAXqHU56kWRfe0SAJZgWUy0Ccs6pkb63GfsM9sSiheBZBObFQ/s2BNRhqxRs+4Mlu631GvaXOS1xa0+LpAfdiTXPbOvcZV76ArtoTYL9oVM8x5TW0l/VLljhjGGb3Iv506/WJBHz6MTXQMsH9KUdCQVGdH8z/qNVNa+fRdK0pEpqXknXuNi95Bp3Ac/8hHZkpDYmKsCTIrkYvMloZdKKxVZvbDi+MECxXhajtmbjFOtLixlemXYenjc1tZ+JzlDbjafRMrP/vF8G+LPHknbgt9fSl9OpAVTGzsGAhjMmrC0hTEQRvFH5kmm8wc7LebXKtYcSjJHBtJUifsA/1t6BsEyo6803V83Dk8UjFotsnV0d1ysGLYabTzjw8JkO5XN+fPwi7Dpm+W7XfcJKNMb8HSL8DMbDZy+VG7rJuZbpm3syD6kdsMwvWqvtphvoMsLbe3b/l/hlnATjB4LbvC5l3feWDzfHt1x8TeIXyr68Pq/GYQUqLiJbOUAkU4bcfbBc8RD3MYV/pnx08CsYPPDiuHxBsFB5V5dF4axoPtJVVxC0aaGmVNUaRcWqQ/jxJ7D+tLSGIoh4o4r75ioJ4YfxSPnpjEpcWgkplsF4CeocdERHDj/rB0jCdFRTBiHGPf2EWdHo86PRZ1ZAw9+3dIYR8ONh3PAcvwzScHjkSWuKggj1hH8V6VQcjYhyFRcBIeTkPh8pnRLjZkJhoVwUaT6WxUBIqJcnS6+yhexCVbmeXdajFJt0jMhYXRfaJ3ym3lCI1vaU2yvYMPYd+ed88fGz4c2bf/7bNHhs/DWiFvaGKcNyRM5g5NjnGGLN3e3PQgmhbfn0EyB6uqeZE9JinY5fxoXqmho05MbWqmiEQ9XN5UXQb4hLRrjOMwFy2AhBJ8EQEyXgyamSqVMvkpzvaJd4W97MTxhgzwSXHvCLfWJ85U8aAAuy0sX5ccYdjMJ5ayMJza/m693jjSkktPEwlZHKkgShAQRvCN8Zdwka48I9losaZXspRtDTAgI/oCIH16qcEMf/9fQxotPybXrEY6zn8UJ9w6NmO8c3sEWFfI2Fh3MPwpwMjwBr0yf/iILaGtAFKLfQKRh2mzD8dxxmik7YMkN4wazjo4tK4qD4afnnpZr3G2ycWv0hvj4uuFFMtHdF/STBLYSL8vl9y+cs60QXqfT9593P+Yc/DdMwpATaRYZvzetNoZpZv37cr+w7BW/PJxqb3V2NGP3Js8GKT6LJFKrLwKzVD/geB0IZLLdw+KP+WUBeSPdeQcA/Jw47KxG/AR6FAlMD6Z671zViLbPfff7gDuB3OBFF/t2nVmRfXphNy3SKDqoDDAAMWaf6C3Pr0dSylOoNDyWviS10HuH1fMoBKL2rD59yjuGhohm5bdq6ooNuRn0ymZFVRHHMwnDwaGXqXEWwM6z3HnoNjWZCrIiAYLH7dyfvITv2FocrarY7gH8OkmJrMi/kLXFgKmAQvgCdQAPjuNGQLU2adtNjEt4tOSuJK+5Uu6w/llIqYBJO3hJY/GSXpqgGpqcKqrqTyqpn74MWIRPZqkbZbDaYmQ9K2lF4vmB5wbd8RSzkvbxLW0JL2X34oc46M88jR4p7XYRzWZADRWi90KGB9ur5Z2lKkDW37AK8BpSYiX37LtKwM6Lpt/SfQHQdwejIF9jnshbDl639nA5cKgOoQsmPzT/q7OsnljSHJglt06BTwCexwDd9QaUXngw0ykJbEvfUvH8g5144PlFlXlXdWaeMSfzcq7eorMQ7ar/CXYYElIRevQ+8RsAaQtvVZxZgVYCu9VbR2/Z8r/kMMPgx1Qa0yhlhAKXumexgPuzcWXwi44lRX4FfO4cST/qYJoiqjk/up6iAUEoTpo87/bByWrWQc7/uc+eHvG86JVs8Dj38DYuzEDxbgWX+Mb/I5vsQd/iG+jsn9iBopxLb7GN/gd32LP8I/vhAZsTTNieXDO86/v7i8hpsJPvPjfLzxy8IhXaZ0JatM+CpoLfmfUugo1jNXIRysbA7JmTnX2Tm2A+Kd3K2B13mr5WkUPtcSpGB/L0aWlcsWeoHl4/1DCUAdPfFnLp34BWxFWT9GYlbPA3QJYHXAcAMibhPA7a51DD21hgjfdX3uPsLZE0sxp68uflLomeDejBI+ybfmnAD2m6WqAt89YLgJ8VsaiAryNqXmBPLS/hh3EzVSClwVTuZfG4k04wWNM47lQmIM9Q06D/7GWGNviqweH1TyEovzkKfw8unYZ73t9w21Xw8rzmCuKbJ2Txzo6gPrc0MU0uWVimqZ9iXw84v/O1b1SDb1VNczlyq/o/071al4j0XNXvQyTHjx/6qzg9kemLV2va9n4AP2yJeAuPAQA/NOR/xC5dtH5KKI3AgDriGQ8tXYu+uE9lKa/SWThsSk4VR7Xxc8QmdjXKn2FyNWx6CXwD6g28Ey7KBsh/R4eqiOGfjpWDyLRS+HPQ258XqujLsJT6EXwZwWl6R9Tt8FjU0Op8rhn8WvULbCvVfke1Rn7tfa+H6Xyoz1gTOvgK+cVHnclot/OrxeNZJcg0aqXWS++Yr5i67ULu1Eahhh7aIz3MbqxFZUz8A3NM5gRivwzTLeMQcYeje1Wx+N6b6yfHcW6gha8/RoYnPvl2LeKY4bz2M1dcZw6daGiYJXbIIcNlQR27p3q+n/us95+IkE5eeZGeg/PkVWzq++BwAKiw4zEDMfsVXhij7I/TggYIxm8SjjvnivP0mp0XgTGyStzASBZr9aGylkrFZxHxurPkhcEu8xQ5TzmLA6E9UOxtjWCV2bgmx1saDdB1l6Gi3A7ijvvnCKsQBSmALOj8boi64qv14IEKjsUr5Qkhs08t49PhUJLzXEeDYoZK9teDdZKxnjRWHkjeEDikGZRS5pG0QiAvl2VPjaZplnmN1NpNptyU73eOnV25YuBeeMjVnIuxonYa+PjpH+McA3Z9BkKKCak2JRuDCURJtChtk+6UodK5ptdbDB5YdR1er4Sl0ygUFAtz8RUApQeoaxwJclQcAEqQR+S+91uNttYlVrRU54SbE37259jQru4EyPsTz+FpKRL1UcPGlmHqB0oC5/GziGIwrmQvGphIBKKz2utaduiABuM1lbAWcKpzugVYZaqzVZnld/TSCPeMClrmeTItGPQKYw3exGhgH837QGULoi6lhb3omSEkF4Ny1ZaNeMV6tPLrILSFGMQ4lFwE2EoVEeVl83oiAxxrpw89QxNdJUx6yiLwtxzsq1Hi8zW5hM2N/GkQa7hPlnrI8EWfh760LZ0oF6tFAdURy/EXRtNKTbFJsnPddGoMcDHyhl0+3Wq4nEjVcJGgpTvsVoIpBdIkm6tPxjJoOJkHkWCsz8GfWWORyndb+E0T5aSbohceoPMUejaCFwLCRDINcciARsaUbbtGwZAgfBO1XxMKwZnyrxZMUI2+aDJZW3IqxmJwJqgx2wF4TCDnT3CxVNMwflh+V+bX0DRp5O1bX3gfUVXR9DGK2s9WT6yG0DtXS3taOTJtMRx1Lm94F9gcGSK94zgge6a5maG6p3+cFVd2y5JgF/DaaUU2My9qc9YCawKKcnYqHpmiFXh+EIz2PjhYH/7raE++2yzAUscf2zf1VdIDRnhotX/OWT537RATbOrKNvWGDGM9ih0QlXerTqDuu0WK/B0O/icb0vnE0SU3igXQuOqU9IQ4JgxO82hMofTGDGuB/OF3LYTY7D3evmiapSzk3GUoAKKZ2UnVMvIfkBpDAvE6G30P3aQ9EsXtTaxToeDlviF+i5NgQbAGeKerWpbztYVZR8W65CKONxJmsaLa2Mst5GMV7Pa49GrJC8Mh76HXlHE06DaD+lNKY7BrBBYiu5nL5xHm9MKiD3gG1qLaE1/UEW833ip6kN0LVlD1JNVYExmKK1KpooTaOeoNmsHYUJeJYC9SyOuruOenof1xnTWQueL9QRADChogAGKVCg5u9blAShwfUxzehblS268aKXyCAab6moGe4+5XQug6aArh/Nd/vs51MtUU5jqEQTg0REWVHP0/WiottnECINdNUiAEAHeRl7vh8N1mCTrdR5Nr2c8yj2iV6HU66sRQ0Bp7YrgG0rOMi3ec/BYdDKihy5AptYhP13XNDbrsZLKOlWOzSOIU1AJ1LAnSuc9Hd68E6N5OkKD2Q2MOt6R+l6yO/NwWDFT1Lvu1xmsXy3rhEBPEtXxiAdASvtuAKJ4L0GM8aJePNG4kzEqCAdaceZZafGWmBGjK4Yg4n40opCJAgbho738XgeX3dgbN6RRj5zBmZ4umgxzUkfXEB0xBKudYwyAMEKtoES3nN0evLnmP/iGPhM1kpTebLIscN6uASOl8LNfiBkykLdrGtujmCZZ9zo1BP6zBYLTZcpa0Uiqcle5U5tN8a6Ac9apH2G9I438LfxHg+dnYz9XiMFagngibl3QoFB4J4kZKkGz17Xuh8Mk8ad5HmFJFKqBokVMjCXkmIYdx92BCKMmO9TtdsXMbzwrhuRIvnae62CM2713dXV5Se5evSqPkniBiNu7IEDIwv2iT9xLu+ScMX16iLIAs9lGq9RCNqsPwdMsndDwOZ/cTRyr1d0aMT6C961hs3BBrHeSitfImHR7LcQYIVE8qm+x8Np982q17xEUTDvWNztQhZn1HZGoaayuM3IMP7a3gQJfMrs6V7d2G0U+eTf5PPF+pfr4AWHLz6zVlgnjuTROAZhOISoQhMCXizkce1gMw8Mh5o9Rd/cbyxtzOJhW2i5ytF3s+bjevNjcKp/YV6v7DYKC6azbeUpq8mqVpoCBWBd74fUhXj4T6oeuLsVSctZ5yhl0bz750cTn1err9xHjz7QV/B4Yuyh6vLzki805eaNOT7S0f19dHwI+S6x6/voOaB77JUbMiXl5Nx325MknSi746B7oUxxXvWAiV6o5IM6JZ3KS5VHs1fZqZAwDeHZ9hQHtpB+zHpO37LiBOPk88f6B6uFjd7oH0cEArY8Pzx/U/DPzZbNcRtF4HAZQq7frwnRaPzwYBr1Q+c3p26Byuzy5peA/7x85OP0EakMZxuNMqzlmWVHt7a3s6WqFsAeqD24BFaKn03SKjKqdEz6+7qwErzdzCoQg4JYDCLle1H6xeKWq4UMAQ622T3sj56hjuLfCLl7xeXiLUZSLSsQIzg8fLL1HWRKJM37MLg+sK4B0Ue+IZcJ1GNg2srnMs5ka1pTTGbwvLYlVr/gmtXMxH0HWd3SmvPCH4q7JUMUL67l/YP8ZXEozokZODDFaeUTyKLUnzhL1Vq2Bq+uYCF4JlQAumbQ7AcdM7VMSBDiq4qUCX30/D95/cDp5t1OyDe2UYD1zvL+wJsIVQ7UXs4pjKZGYdIwAYaJwPgXwc7Crwv8cIab7ODwo761FxsRb0t6se239OHGzLtJUUqqlN769MgB1NpIx9SbcD6+6hm6XQH2Re+HdeUCe+qzdn8QxPT6KMJ1MGClgZuivrAS1764Yeg9ObVlN8FZUL5gcPwD5lG6HT9qjOnSQh+j6+TxJoPG2/cFTdAihJ9VgE35DsOaqNcsnWsc/ZqSdtdJfN5i2+eCFrVYgCCic/Err+KgUH/4whM/IRim4keuIQGDfM4rCBjZD6Q8ZjGWbiYddVCBj4gpSuaDoD1EvBpUN6h5G3t3r03vKkl7EuEcBDbqEINYm7utauwA0Q08Rvmq6NnKDuPlvvsj3xutL+KVHHkdecEREAq/meuPRUnoTDX3R/W12NLFmGHjePrwS/kTdu/wr/Q0n3asR8mmnfjlVbF535tUzWnv7WeehoO+qc9+cu3mEyfQyn2IOrc2t333hxcOrL/6Ku+7SL/nXXv4Qf+SYHTh03BY2j35E+L3wwPHJE0GxJD58jZG+J4/IPwxuDH5C+Y5qDq699b9bI6H67RnHW3eq+0WPfI+/PXd6bfQq9nriDfb+5lPzWfX5CdgE7gUFgNrDf5C7YDH4F98f+W32A/vb+xcHMAIeQfwgNAg30CsQGbgv8FEQLuhOsENwd/C94M8h5JCWkI+hEaE3wtqgWpgPLBrGgeXA6mB7YPNwU7g7HAlnwNPhOrgBPgU/C3+KYCIyEdWIAcQ04iziSbh9+O3wj8iNSGdkKJKCXIgwRpyKuBfxJXJLpHtkeBR/bfFR8qjyqJ6osai1qIdRP0fj0Wejn0R/RZEob1QkiolajlHEVMT0xozHrMU8QjeiD6KX0DdiSzDxmGHMGnYDdgt2FfsQ+4t1AC4dp8M9wxPxQvxh/Cn8/whOBCqhnDBAlBLPEn8gwUjDpBtxtWimJ26EvOkPcyfFhPI1yjLlNuUz1YKaosZRe6lG6jL1CvU59ReXQBqGxqVl0ipoXbQh2nHaFdoL2le+hr4aHx7/goFnXEioT5hldrPiWCksFauONcCaYK2wbrPesv722MG2MHk3DihuAfQBJBADMIhhMgDqQOotVkU51nc7/zTN21qye2Vj1Z4NXgjyYSxJeeu6inSxgcKHQ3fTd1r/5MmhqJRZhrYgwUfA0RWegE2m9C5Xam0/5JB3ZiTV0UMY/uYr9vFg74NoWnU6BU7c5sVVkuU795RJjYbMDzt5ARo5FAbE6zoD7ctH2nlQlmRCcHTIfydyZDSzMqjLmt9jjFJFNdDcKQtFBn5VFFghXnnRYAAHcAjsDdSX1XFUl7ebJ0bWRYRYFTdzCoeunFDPzoRib7OcjJyEiAPHlSNcEyrEQ7/rNyvn3ZEJIaub4zfS0QtRyqzo/0s/1X6cH0dVZ9hdic927i3eEsbU2e/sPua47n22fFxJIiQb6Ouy/xZvDbVCUP/Fbyy094odW7XF3m9mfynw7YrXnKU0jUR+LfS19M97VvK3/uTqae2Frt887/f38SRCEkBLv+k3l/NNSAiqfvTYxYvoUwDuw3vw/rRZQ78pTyM058UsY171KSy/l2/D8HtSLsJ6RcwTD/iCPSwZ2NvO+LgZiGg8bM8feOMzucXF2wYlUTOtSKQZHo/EzHXRkO9XksBRlSoK8v4Zx4dmKPaGGccH2RUJWRmEIKlvniSN0OOfuwlY2feqPqcvP3zbp5qEg4xe0uftL/NVjxxq0vSXpv5C7Ew4tbDrASTekXWzX53cRwhRnGJzTAiw6C+bVMrHa3nda3QwePaWGWKtI5P62bf+zjY0LFSGBxeenm0bGNbrmrjNS8aOzpPxSLpnY1JTySYpj/jjuee9s0qfJ9x6enZtIPJHrb8ESCg9/nJnR/xPvpR5028qm524pJswHtf9zAe/IBA8dyIXVeyJFvDBhUV00fXj8re+X1N2Omu1VQMAdPZuPfbSJy699EOXlsqowMwDEkXauL0tPQiPOCTwSmcCPeSr5klOljpdvSAbSTN0q4AvECVgyndGAQnYUTw4+xXBpbHwqKfEdRg5GD8QEN22A86ECWAUxcFQxMOo+Lf08v4IIi5+QcW6QBDW6ojplMv1H52byiBSSdlyZ6XUIT2ZbNJI14GHSi9XO4HsjsjRpCMJv/j0wXXTr+JhMEZkUzz+9dOH16MbEClj61rOkO1fyPlD5e1yzXeqOp14E470qHR6Hf4vBF2EnqjDpC7FT2yziARo9ombwAXwyHR1d8wtz0PlgBiqCBZUXxnu2rRlyf8a6/hmFyWUUSqsap8qsYBzd3rWAPtDzA7vwffi97LxK6QJuqW8UE/g1eCbJN7Z3qSjFKIaOslpCYXjCYuz9UbOp4IN+4rIMiaVAc8MLIBDgSGYG5SzO0oEz8u2mUTLLOobQgljB4tuayrxyhvCItrbLehEOE8VZE9WctzA0AtOj1nOD+Nksn8nv2V+4Zu2rfr1Q0rPTDIXREhrWym2dhE1Mnv2hqYvvH3lO58Ou2hMLtKn6vuvgiPQJ4zNZCXKvxdzKDvHJlAP34K6mxFmifEaXIR4lDq++NYznZg9UGaPCubLX3Y3nUNp4Yp8ZOELOLpg1T6DDOgkZxy+dWW3TpPBliRZxZ6PHtEO2gZ0rFdSOi9WujsNfV0abQRRbdRnyCAec2YK24mbKWSjpWmG86zzj24Z1AkSMNaROUm3O29ConCcHo87bvJNfPqeu7lejCkYU1KGFgzr7H/hF03R/C0UyuF2m6OUT+2uauuOLZtF9ltZAh5wxNE75F4B/0kCSbjH4P2PokgXraDljEmpxiGOMSyafhRzBnteS/X+pAsVQCJjeCl0lG4qHkWpMBPpCI9zPvRC5BJefClBazwawhoexH+Tl2nDygxAQctHGNXJhx6aKwTxp5EkocTJu5wvnpLKccEOYAY+KSVOtRMJ2x8QiCyGrHJxIIlJrDJcK1KpoAkqx3bKkMpjP/YBAe0haChWEZpJy3WNeJjZTr3womAoFJT+K7h10VmIEb9KCoARlRZJY+w5qfVwYF5FJkslKh4RXXQqVYfR3VV4aWQpJXN3L4RCgEaeIdYCPKfGE4m46l+AiRGM/aXwHjQsheDugvbdbgtMwHK8opoPXPTnMwW/OCAdhnVmyqQKNevIfvW1lOLtw8FqNE4d8v+z2X3kWx3dJ/KHQ7uZc4tUZZ38xdHYHz97Wd6ygvHQSdv07/9x+jJGpb6duyrfvW234AQZhRH5RAAXZPfAk+UGWj0R8pMbdPVkHzh79Z/B3OQb3t6H3Jv3zZ560P3Z20yv+NrwoV+9jW7/WFbb15kDFAxiZH+o///b4qgiM+wiBL436QSpNRPrYSUlWzcFOzuszfqHOb0bIBp6ArQwtWA0Z4eFna1MDHDyeUIUePBZ9GW1STg3Z477EBe72wLAkEC6+f0xclK73cmoDS0fhc55PgZv8fp9t01FV7wVcgkaaqjptG23Em6vf1Kc1rPBXnVLp4+w0WB2mT+pxSB8BBxTs0L5anS0Pkrcu1a0bHVtwHU5bsI9uZgb9jzuzYV/ReDlExSSe5euz52E0qR1jHVgCPvwBsZccG3XByPnbYtOEc+qapUeQC4yz2DZILTcqgJ/hOBM6dgVMucai9lo7JzFyhDcjXpGy7yK1EeHQqpIwuWFiEXtg14JCb6H946Bd54W4i7tA5Gv8wMis8h8EiEBoTlV2dmrixD3WIv6UQavHIDCurs7SyYzp/K0qtOcWe7ugyMcnjs4n9/Hii38IMF8sjZGIo+jg52QjBkI+UpIplYKWNvdOIAESujBaWZzGZRvSy120MmWnMUHHW3MJr4DpzKYLImKbpw/yLwN/FEzaCdjNNJGG7uC7bY+/gf2y3bsyBUrfrn63oF3HopZLuNV5OlRQKAm8xGmocUFRLVqkB3Bftn9HObwXpvnt7vDH7X0rSULFklHHoEFXziqS6hjHy4z9JED1LmZqFG8N3Kv8RPVIBlVAk2TMkh++peRnJm0+8Okc8nBskytxrC4r0nIBoudg/ScOwdty5y92sKLV+Rn16N2dF8/O9uY66xTV6VkugVhj+IejS+vRGaYq9wMkAB9tOdrAzXHTb3891Jp0N/7hu+SsZABXwciHi3/9v/e4bbOlTHGo+bFhqyGr9ypXuQ0T0h5Lf/B09GRm4q839yubZIHqsGSLjdPQ0tFieawE7fjE2YO5rQm8aLIa8WaPkdSB461z2bwmzwD4xzRl2RYAMWFukir6IZm4I8IylAj4uCaNLGqkPvgSpQ0YKImTo0bgR4p8W0J4PKBWj9jOmkqi7ERlzU5N1xpGloIqU/gN/rqg86/heK3Bu7VutmRsTNeC+Bph7ANhQKMddNg/iCWVr7pME9drUzLf+VHVPLl1oU0B0GWKJDuwya8OMBspPP5Qh99tgyyWRqGw9c+GxtLzE4/oZ93Lmu406gK+3Nc9tb03eKR+f5IeAA7oa7pJznAqEUN1UeU3Ck58RiCtll4fbJG0eLc+Znzro+e2VhvLPioGJH6sAUXW1DGXlwRS0F32f22i255i5fttsesSCSqqr6HgN9D+mYTH9LjMOSbjq8O6Ehtg9xqrJzCwSbSWbnv/OzG4C8rdv/MMZFIbKrkH77Rq4FkQKX3TwXX2XlEcqCiHy8hjKGbARdWReMuAyTZr4gJYaa2EVLXb3zu5ce3IoZd0aobp1j+ePfE7iTdA7wX/vlCozQBE43Jwz3hP1uVrbbw/sgG4QojOIxblyNrQlBjOx/RTVNLvUC6nUGjGqFFRwvzswOccYE/QtuYUMJ1zDByf7WM6vTE4bbV0tmm65KO03a/Hj7XkiV4EWuiFceBEjWp/t0UBlP3c2Po/epUcEMqtuHwqXE7LLNun7Ww8JY/ZZRvwbdosZrMriRx/fojqbiTu8m8XuY2pTDSW5Eko3LX4uoccH4bRspjMk493PJirQ8CZQpaFHZCZklsREWijuRy17f7zUgTLWW24uY7+bWSmyODMRV91s/pCIEPt+Et+AEOcDHEGrBt5sKklbGwarZYLuezsNDrtYREWHTMgIVHCirV3d5FeaRlAH+kitvyiQCMkubKfIlW2ddahBEEf7EogH03pwnPV+ypE5NRvKaTTSrQg0/g0lZiQSli21Y81dY9araaNG1X44ghI6ApW1HN4P7Pobx+ZSDKuZS8o6ajGvMOZcC3jPaRNFq3nM1m4tE+hsQS2Feb9dmbilt0Oe5few+z5XXFgfOoo46bx2vVxU6n3bCwao8Gn4BQyrZHwixrJO26qpJw5ls0/mfrMuTJbkCmA2CqvOv8IXEJhCAdxoioGMnxRymMDy8yjhepOBh0pEa+mtBYl49HKL0TSrO1wNE3BWbVs3F9w0zwJqkNHLKoNGMPVnxOqylDew0x72hCNJNf5fWR91jLBvE2buxXexmol9liqb6TJJAq+Gu1GCY4PSHrcpbwJD6J38h6/NMma6J2KpRujev2iDEkYNeyKuMj0GMdvbCXZBKmROGFjvlKHULas0Is+UhE0PJ8CqGqCqOMyFTpeBqSoWVdZVIyE+DWsW8H5GacC6phU6POzqsECVExhEDqaN65DEb5iCRV7UwZYSKggiY8wQq7RZz1eXhzeKlFfIvR9C0y6aXhoSNbIfrrs/RlEd8F0WQG+COplLafBoSxPx1CMHTSxqJNWhCFkg64TMYHpXSmKoQ/+5nHiJvl7qLa0nPfxHfzse7RIt5sycXoiWWNWuunSeWS2tJC1BUQ0/1obsLTrbHSfqyVjJd3JNYvCN6Z4mygpPv2UdaqZ29ubL2o5hgbWqWMigXj3U9Zohou6Tua63V4ukXt3GLQX6KQhS1711+4ivwoO0/WMpuVivD7ZQeXOtalPcutztexny/kPLw1N2HMmTSKmitgsLbModIjstliOSViBPNmJGe+O8z8vTkUO2KKXU9YvqhBT9TwfoMaQFpFUKR/RjYhYJlhakRWc1O2nykFsL4HXR0G2NdLlqfKYvLTgkARBIXWKtsaqNbRqDfwDsN7KbAHozCAbdtRq67j1fmJ2Da5PuyUxBRFZfKVXD6vuop4DZxQsjWIOz9E6ZfXOZxjjQHmyTjLf1uIRwzqFPK8JglEo0GUmzcKEqHc8lpPudHuKkydQLw2eH0DBS150hB9+4gwroylF9JesBNqfd0Vwom4MW7vQRFRG6ZH/dsI/vMnU80le5QIpZfGMOUpN2T7JYv332NmvTrHf3smhJKCABWsYOXtZHV6K9X6iM3JMdN2y3Ex0/mNMo6sZm+lch8hJqdBeCQ4/eneN2pAW9XvrVTxI8Tk3bAa2aKvFc2ZWQRKWMBOB8mTzlRxYom2TSvHXDH4jF+MNwY5sFeD+YHJVDOQ65r0Cu2WDf8/U0JMxYSWW1X6soYeB8egvyDCnoMJghzPnRmMsWcoTcIzoU+b+s+lSHxov7rpp6H7wNmUL+/u6vJ4k+qLt7t4Bjz6UWzDosATiT+Oj6S/7RW9pd9BzEPk3EXvCOb+8w66Vzoafx4cx10brw7Pt+vwNhuEIHrzU3c33oKfrZaMAg6ZEW6eRLt9faiEEgrvzC3HTwAXeZ6Qk7fsLiIj/3/20Pvx0vP+dIZcL/ruo98F+aspF5IoADp/wDgVjoi15kehfNE+58EPPMAfbUPg2h2Sq11HV2H9s48qZu/u2yk0bMEt2IwzxCaEMGL1cXNdE7gH9JbBUBC8DrfwFlljrhlizkk0RjlwOuHHG5yuSpTgq1aVf3mDuED7ZZ2jkHIXaeyL3b9Y70g63xMsBW4pXUsGT4wn4LcvSUOKlTwvtsmBatSxXHBybEeb8E7cZVyANTNLQWTN80X+5dn8cc8vX5p6VI7T29cWWO0xLngkquV6Vny3PLwsw8oPAexWC3D5wtSx0DIwfoZJj4GuznIMOGrRQ3GGcHIE1GUGfLuEYJbNc0FmGjpQcLoY+j8SwmSdM5uBAyLEqT7YuZMAfVPc8D98H3+APxvA6OgGwtw4iHA9uCN13IsxXB8ruq60kvd1WaMhooHmWIm0JIsnGCVZ/VBknWaIj8GSI25Nq0GVx6UclQA4nVPxAHMTZd3Tc6FqCG7qrKVXFain8oaEtsZQ3EejYT/U2S6qdN5rEqpct23hkBx+nbMSH6cmRUl2IOtX5hivjtPD8KxtdDCJ4Cc9ULeVy6WyEue18nXaoM3pDR2D/KbB0Ft7ekqqREaIQYnQGrJkzjQDaDRiOWVO5BQTQN6VhEjFUf9Np9lAeYSd53xeMxlg1mQ7SfGuxn8ytEL7uta1RFmdl3wWNQ2dCIuJg4k+0q4M4hiDuYiTeu+kpQmkOoguy7S7cAThEGIyaNftNru6PUtfKqVer3tIcWWKt04w2KVbIpZxDV+mGJTXXU9hQ9Yql5w5m81n4bhWHHUB8bb2y7xXRx0ol7UV1R+NZUu+tM1nQ/S1FRJYVa7mz19e14kEB+sMWETHxb0+berSSMxSeT6gBCk1VqnTlp+pnMedEwwBaSxg42F4YvN/24BwTyp2VFB0RZFlUegOsIWOLCj39P0tT57l0W1099udjv/g+EXEBgKlHXiXkG1OPfOcmdH29BTiibvxa2pIRQUzYPjdX5LaYfjbWH2jD+eja8caKChaDUrWZzN4du77cKuUSqYCVgMBfcfYQ4+RCgpqhYUrpYts5HUuveVyLCKz5HU+z7AMl+BdyzY5aveMkO22KuG+erWeeM4NJ/JU8zd5sz/ijK0ooDcMauyjRBi40FIQiNi/hJw6VsXT/sdigWtommM3NlL9UDa7u5vSbfqKMfXCf187eDE/c/eu/OiBHzg6RwOgDB1CIGQXuxRT1bmfPwvpmb+S5tX/M0vdbJHFIhTw1HM7QtR8BQUp44032Ywymri07w0YrPxHo2b8OGt4qA+GU5b/nSJtKSkHNkANThAXZy2s3wwjT9mqz7b32Sv7PnX2SD/7DnPA+vqK+1czZzTUAUt6AMdwoxZG1y+nr5fhZtwpntfeWDoVsUtGUZLbyy0FroZmVsuoOGlv5IUvRN0+RTAsMxPT966X9m85pJc6UKHAjrsf2H77ouYsuDuJpXudHcemMLQhP97XAaFQaePG0pqxad9YuR66QYBeLNSnMEo7bX36v9xMTMfR/rMfZqDWEm1Tsn/xKUohFKKafCWb3M7qtooV+5Jmgii4PSd7FErWk/HGxxmokINDWwm4T5E4lsrEaLS8JTFgG9+4AGMfLbZroauLYvAEum+ca92iinNUOq3EVPBGkhjtVkrxiQ2VFv8dXII2WZZCoAZy8Kr12a+b7pns6slPZIBd8DNBsp0fpiG+3X7d0Y1jqmTu6z5hJWN9kjace8JmTzTqMLH8HDa9m4RwiNVwvJtAqnbvWamNM3qJKmffrCvwoQ+kFw/e7oIHvxne7kcRNTu5+9+AvHjILukW5JFb5vzrSyDd1CYDtN+A2YpmCtgzb5yh6MDsi/QIP937e/88/M34dilJMDu8HbgXw0dO/kYfkC2LXgBId2A/tIJLdH9m38Dj36X348rczrbuxYa0zj69ZDPeoqY/J3Va2Wo3n5/07FJpH7jpkY/jK26fOzsx5yG7pdAeowyJ4XJfpuCrd27TnPKP1pUh2qO4H5fOnAsdmAHB0XdT4JA1Q9DZNnVsv557wWVw2yOLqqjikwPUcROfPbv/8W+mhcj79ifX8jYu/NVmaOMvNsWT0y64s8yOmuXzsHZ4fEaKA0jTEfmlg+1vpfSY4g/lGtgOiW/wFMUn+/6Pe6iPhuW9kp8wO2gjH8aRaU8yVfZTEMmvq3X1dlT+j6L6HPm5rfv6/x/shjAV8uXM/98fv24dB3fAQxCYVzJtdANTK4g8jENZwIsBEF+PGPpecZP57Q5DTg9AWkRv7+HLfPLyo8C+dZhw74Mk5rHAcouWYZpatzUI+FrcT+kudIaiJpl3BwibHYE8YmDAs4453WAplKEpMqrfBSaRTUSAoYfyuBNF3qBJE82Q+2bpNHqkM10YpbAKFk6wsPgW6vFCcQW4hVxvadFpX765kiSKnGfSp17R0wtiaI0UmwFhpx5zpHfQ+SccrGah3qkD9kBkKevgrrpPYfVtC8WVRd/+qNfb+U7JSWL5bwLODr50PMju+xBhaWxWSoKV+k45G+WQysRUz7pPp8EZ30L0X4uBoeaMz8i5OcPKSTVKoW0+cJ0589kwPSUHN/jty6sVZhD63874H8LnVTxwrw/uPpwhDtWhinVcpct34TpSKbU/gf7iNbX2sz8suVeWaaeBPnTC4vauHSTSKVZIQwMe855JHYLVC8ZureujZDyVDfto8Q7kbjGy/vrG7RE9a9zUb8CbqZ2pTDgNPswFhSQHu6qJHA34t1pWaLsWAnx5v1SZfD3rfgPTbdTyulk64smfNjAh+A7U9ERJG4vO4bZNmEl4BIphb211Zu8ND53VrPvm7Fo8SGAXDq0LGPIvdNSJ9vv+PrfX6Xf1B2ALJFmRqtFkecAuX/ZeL85kYZLmNz5Jc6n0TtWrJ+pQ5biPu+vgr3hIUVFcAik4cssu8LybUmLZ8u4/r3Xj85AuTQami9Mk24y6jA93nEFrx1QEnmlbOnVRpsbiZZc2PO+Kfl7m+40tOJrzcFvbMCfpTrena9rCJM0l7rrFw3lEjdeKqzsrXj/1tgrFBPtsaoeWiRnGUHC6OiMHSoJdj5YlStTVUqlMSmcxmUhM5THRtlQDKYO+iN9kz+hzzPrWqncTU6aDSOiDtR2TywBB66pyGHulhnLfB3sesaiHoPCOjt6uOIu0c5NWZ5bLN7b74NMusuZ+4dU4qYcNNVzPWtZre9bXQVRmVBhAJNRxdEEXYkaPn8RpC8GPr8p5sqd6RocCFkZ6MyAt9La7UYOpHheWO0M6zQ7TwmKwPzBAnYGQPYSa0BZWjjNmWEhWnL5BHUPDYGVZjizfO6T02U5LFu5BtFv7Psa1kaKByYYNJ2Rs+IgpDQ/0sEU4nchVGy3k6fas+3dvs1nEGVluFmbAU13aj77G3tkKa4yYLY7ba2Zq954k7KuUb1iOa/Hef0j28HA7dzn79rgklagThlJ94KG66poUGr8K6onm/i9WIoX0q/Pv6TjBjSWNJiRMrQr0H8dNFITSqvbUncaI1++GccJgd598829+NV8bDN/gyFJwsI1dmzqtbHa9tRCHq6EY8vPgUTvZKnkLPk31UH9wAruo/Vi3zv0v2p2gM94xNln9kd3feAvhVv95ZFgYAm900KhQRgnOvYeR5Otff7wZ5vjVDJw03b2xyDINXPnhTTr773LFDz+W9uozH0wyBP587EgOS2uRmbeSyF/+cizndnp92mI5MfrJx5Ec3Ii3omPPL/eqIZkHCueagO7hclOT5UU/QU1VJUHRIzNqjLdTumEax+s9iCO4g0UcQFL94ukCfRAltBRFDJBYOpwaKJLLGlsOVAy5WxNRtwbBMF8WZAZSDdylRwX9F4zx4pegnOLOWcHT5gkIpRYLyKpfy2xu4i5EGYUmADfEaizmY9IqNiDE2HYXluAKMydjcPa6xd0SR/PsuvGBtHQfsMLDjfuilsYzju0TSNoesF61WZ9ajVz4xvbaxDj71G9aO4quueP+eNfaRm8zYZW2GVDECbs3qpCPPUQF8DjEi/rGJzC2+gbR1ZxRwUPwN7mPteCLWr3BbC/yYx/1Tr9DMuEiiG7WHpWvFqvDhLZWpjFQSA37pweKTB7+J136f4IZiObybY7dsP0dbwR7o2a9UgO5XuozuRbXBicO7IoDM60EdUxQcaviB8lxKRuYDET6cQzXfIU67oVUuGCuNKBUqRDRFe9S9puzyJUqOOnySCLQxLR2n8S7Vd2tBSrHqg7erZ+GjRw2xN08XhLb3juR8CisodYTmI9Y5SbyadMccza1IsOtG+gYx1wr09twCPzp1/5C/xZZmnwHeDPMwNKNIl2NroSfwATfLpFUHwAmYWG7Xu5qL9Uq8VPg28yBd5aAkyQba6vuB585y+s6ehFgFax/uFYucbGQ2/IpgPGGed6geV10zHQ6TOsxTMB6vBM/91c1pfy5+/+3cFoQeJZX3MFTtwgv+D2CCWlJU9oLf32ygVTKlWopnxuYPtjDCEythQzaQe1omgRT2iq4akOp1p7dUeVzE2FQWVWhpta+JRYmM8FvSyQtnjxQ7WgvlYqZRLpYB+fQK6N/Js9mC+Ui7zuXmv5neSpmJ2w7nU1MgTfjX2waHpkqm8iVysa9wWEvG/orC2eSiNFk9Ofz/gMlsN5IWEzmMgGWXy/P+r9IdPwPHRg4EuAY6C1N7JBglCpaQBpoBiujawKUgIUjTQmJCnvAgcWo3hbK5XNVoXAf1F0N4+IuEpWiSjSLt2FXFv4gKuKjOVC/yKhRnWJMbAUmKw+9WvbhwbXzhewb2RPgvKLWxgTVWunqH0KYxLQLrUcvdbdk7p+7g7//A6gCwaG98IuO+7xbn1Fbk1cTELYRzu6AoITjDdQydIzBJUTipnhUH1/FzWEQ2diLjkUn7sEycO1AtkCjenNIw9JNWH7z4LNt/AcChkZCGSCGyU+3GUPgD+wBthH85m5k/adYsCTc6W1cA0xmHcfKhkE5KPpnsehxJQttWrC8esXTE654nMgpMDDIvUHRYfIAI3/aiHAmHj9H+IuClOp8DJTdgHjkCLf/sQbYaHTK6bVgvA3y1SEmeWzse1JGgWUdfl5KgQTuknNi/gcSyWtQgsSqrhdcN4mevRcQl5YWjwR+eX+/9u/rw7M3/S/2Jh/89XY52bz6rvwC8po3ZP8RfAHFqvBmDcSXgPhq543ghIXa++SE63+wC2Do2vf6xC+mh+Y2r93+7s0rwGMAg22YOo52L2Rfo/6fECYqJJjmzGmc9nbwoPGv2xc49MO9bCq+IfU0tiLs2j23Upfa0XwQfCPEh3eSf9XfkKb1Ur4AQ88INkpAjRpq80bjC+A9a68HC7n7fjn9IeN8NyeMov1HRmhPOTGGSSCUMx8GQycgmYgIEcQDAtOOQKZySgqKkadDbRG+JWUg+m5fUmYlyPVq01YQjUYSA3yEdGx/vdp/y6jtyRPGZKa1LX09rMVNeFstOTVYzAyJO8fAEZFO5/UkZEXuuHKQVsuX0C/hEWkB02BPCCEn6GQbVBW63h+auiCrfTNul7bEguCHUjpMDqLqY8UZHeu517bL02PGuFTufEnJiN4qokUiyqmgdOz4Mk3V2l5jvHZMBh8FDygen/TkVazwUrgtnrADB3ZIHHuHF/XTtsfCtfWun70MQa/fpVpH7mrfWds0TMuxLUel4g7Bps5C9MS8+v/UEzSaSHN2eeuD/1eBzmQQNtqwiJBOuslY0Iczvb19xBmTe5/8nJ2b7f28fHKoQMFe4uJTZfd7NQyW4lJ8OI45ypfLpbe7BI3cRuDRYipbIuKuVoKmIWl2fzjyVKZB7ewq7+5SE12EOYz2MScWm7BmZhQ4rA9gJqqzYsbZsIt2et181Epuo2ODid1uPfl46fieO/ebqfPmQb38FXAY1qiT9LBphiRcfCZHPh5MtM2Q5uaGSIrrvYvLlL4javw8E1k0qv6j5UsexwVTT9Z1g8zFExeGknDo8p1Yv5krXPKCqUlu/ltqsbgHYKlRjdLduVwq1r1EniI+/rNLbcYYjy9IR83I55kwsxZ4dQ92PkknqGM/rslktMO85hGxtJ46inKZuXaKRlmLzVrEsQLc9LxttJ0mRqDS+vJSlihwwkYlJpudod3SXecmDfhuNsh0Lx6ji76zt4rsJq1WrXStlpTAonibF5ADV4Qi2c+OVpJ6zwgvzkbiUd7QwucYRnRz5l4mw6XREoHkkfN6ffMeBgou0kU9TzPokqKYUWu0ehBSC8FINH4Jn5Xq7Hf8MvH0kcrjDMTRBoPmSkrcBEtwCe5IY0GxFz/OiUZYEUWl01t9B4OKrvMzK0EsIGSBEaWfpdTxpraN51ihwFizzihjULD3g6ENAofaL1+hYGj//0cNP4eW0zdqLCYN+0TXG3pNpdl12xl7GmlsLKm3sTgMPaqiVQJusqrrRn7FwL065Bp8cfu6Rz8otWXypuJtg5FfPT6azRtVRamClESWwTXmC1xWYpb4keMl5a4df2YACRyES+wAi0dRKalRXexEKlXdSYCzIv7FTIMYcg8bfM+F/TNWamTes345MS8JRhjEwZENDRC+MzGaWFLbHYZK8bykOmqftmtMuvle6k5TxuBEaEO8qXo55mIZW64YSt+iq3FuB5sT2GpzVEk4Y5Ldu0xaF63jdq2hlkLcrOEaWOqiWuvJITMBuqA9UVRl8vDgbWt4qFByhOgrj1rjhiH+yx21LPSAG0LnjNR0SCR2Bxf21pW+XLVacy4Y85IPOR6sU6Cr4x2/elk/CR6MYhTN2r57vE8MgAP3mCKtmNxXHraFF4Xot39626yG31VWbKhiFUfNYOXt6bgr7bywQSLRcJXnOBFJY54D+iBG0SY/sOyVu1nEZ1D8vHJBPmte94f9D/R6j5cGpHwNNu5q35FlaL16c8+kjs//4p08GSS7rhbUWbNh+vFvZVWb64AgONuV6xYr246MHfK5w9xyaNtL6mY2EmeQ2u3gyjumIEheHiQf+i5POjY/8dFI+bbUoEbh/EKo/hpF+Rm+jl/Hv6YK610J/ZamrZvSyWEKS3qJ65omim41wBDO0jQKITW01ajDih6moY+yqDX1Rl5RN52e5OWU0UnbG6At8FQ2gV6uUiw8pFJnhrbGjKmfGAlgimY60aJZgzK5o+lO4PFPSStk/iBYmU6WDUlavuKwBn4KdWfQKd5ZSkGTOlIQeZl1Iow/0Z7r6dngoiGTOCZD7aRS7Wzv7lWGt73XpuIgOTnTZ1LzdPFyWfbKpU2ucpCBzVOY4lDr0GMwqqiGUwiwKz/L80drqAUWE83UPMNIFsvomLEEMHjNhoI19jtg5bCcG5xJ4APIKo7f40rCETczVyWS9Vi2XbvfwdFjuJYfqwh6sMIHVKvA06fRi6H4yn0rhqf1aXD/Smq02sJt41qDShdmVOneQoMth2SzaHLI49OL/W2jlHMKMDCMUyjtKX04SeOQMgqSHjEOhw+rX9JaJqLnJzlhMNQ9tOPvaFdb4P473BPUavMe2FbEXi6YzdOYsejijL2WGGVwqGEnrotVp0Y2n94yehjsNVDcpHqpRWRqC25PBJP6tB2r11va2EO41JGCB1LKCr5vcBcjtnr77UI6EM4ifrQyn3yf7zF+6JugY9IXa8bteIbskzifp3CvRn3B4K6/+7mWq1J57mdipVUgA8SSjeLxyaybf2gLjfxlXIYuH/g5tRirULhmu1XryNtujGpiEx3ZYBu1xpP26thguFvseWn0/Zfm34/IHUlOjJTKiZfMTfQHaAi44ZmDletrQYs4iH+dhigM5OQeob8D6R95fOKR1ppyuX/ynQ81jUJ8coS3HigA0GDZXRhe9P2cWFHZdK357oGeud3PgwOR0DRa5aLYXTza8Ix0uM9Fc+jFblxZZ1an+njKAGMRd1zMd5KBy/mrJGMT3CbCv1c4cjXtB//n+jBOby3raAPBa7bd79DKa/F2vcL8pX1y2fiXb6stRzLA16lvuS1fDJfmRoVSQQLEgQIyTqyM8BZEsei/jKmajOZt5t6qiGdLx2t/euXWRXXKPeKOo2Tj7XcBJi34WTJyy/Jfv5x4ezS6gp0C/lhXId8GGrLGHNZj3tVsoZAuX7X6T996Pbhv4r7ghh+HHjzxGnq+ylJcfmNQRMjgODsoy+aOKPRKIqU/aZd1TDqemBe1i8olL5cQsCs7l6iHRgU3ay7df/cLrMmhBipqWhXdHkE2Qy+U3QdS4HdvN7cuH8BqXbPp6CSeJfr9CS4/EY3fwupDbONP2TXU7wQN8Li/Hi+9DV/fAmDCdhg3fECIYC1uw/E0UScVt5iW9XrrkrhxJuN4nY/6PerJ3KiuaS+mty1aFZDK46usOWks87o6qzdVlmqvWaFSaFp/aYw4SpMuukmSGtRRjEiBnsRHL7U8Ort6X/z5HFTbhgucNuAz6VK5Wi3kCgIJJnrLwE8hE0WW9Gi3zWpXm5uSgbdrq1e22l5KhmgIphkJia5YbW0x8RROQwVLHI+70pQoPkDBDPHkuV9kn6zdwIOiVf/D4mzNky1NLomOl1DR3qmoY7JDMIqqXBPtqdsnn2OCIxDdsz2JQ7OEHQoY8nu9VEooaT9Etp9ejg6Q48jT4pV2UXTMLr+GwQXa6eYxPYoHbheXm3yQ/QNBlaBeuclzEHoGRDxHlUYpj/iy8DhfUfjotrYkWUOIdqTt+KlMDIFTPp0blqbfRxUzzyCjoE3pBB38vGMvFjd1yzpx/D+bySRiBYBhHMZ1nNnXJ1i9Rq4NL/HaIhlWBZlKVXhnzt/ALqG9WQqMhJB4OPOrVP1I2pZLKmfa2IUJ1UuglOJZx7yovRgP+okUpVgGjJWS7Q+JMYX/YvqH7NLhrveLiICIwbGMZ4m54QoilJ8cW1Iktvtk8Jcf8TNQ+CsTAZPcEqE1ibV9J5JbkqAk6faSeNH4+W/G0o/tUb5690MEXB1cCC5QdG7IzIJiRutCROUqD4yw08e717mLFz7m7EDBYR2uw/fVk+N6W9fEkMheKqsVdM4m0Efz2VQOHyw3Mo8armsjW+9Q44pJoQMCgv0Ra7JYDHNuTQvYL1MVNdiSkmaM8UkUpg2V5+ZTJ/mSq4y2+qOVIWn1ugm2HV4Wu5169mrt5i5JVilPly/u0yQ4DN0VkdQV7I8kjixLoRTmOMG2TUX8+c9dXce7bV2ZTra71NpP2iIfU9pTlRPGOUGuEjudGAtp5tyfy1uj6wd2KjXpZ+YhtTHhBCJsmkwmh29urhu/ecJ60falqyzvEsGmon4/RXwnTky/CRmK2flqNZ+IdsaeVXzsmDBMI2Xx/eLDy/wJAstxGW6pxrYYDcgGlhJoC2WfUwMcsQc3fFMSkVA23ua7wGAiNKeUKZdDLZRNUjMoz1ZwfrD2fEWI+PFqUirOcxUoBez/5dpqXZW+vsnZYHesF7dqamxPdpvwPidld2i0eTsrDkMu02Dhl7aM+3Gm6q5bliC0/pJzTKDqni5KfjVzU/mD8SWnJAsVtR2yjS5dV+VlZ+d/edcQ94hFxFdfcBFyxxEOYYb5qz81G6ZKIchYrblKJRptnYZIdXy+nOr7L73TnvUhYvpVr4CIyC3v5WxBcQprlnYstsZlf7yxtLtlA75QB1qMLm3LVSNlBqgoIaQ10LyHC+6woQzf3BTZhnksX6vW63gnZjJZ+fzXU7shrVdtkJZlBO91h1RCfMyS7BvA9BUOKX2tL7cu378yZCVEKhR38HeItUjMb2XRhjVZqbu0mz9UyI6OcmoGCGzC7XhHWUi62G7EJcJYsfYIq4lXhLTBuaBGuTKBkM1LOBE8BhMamA3aFNY/UtjzJgIrj61QkKORcGc5SppLMwl3sWUyouEG0TB8UXsl6jWtgB0e4w/8EGJHEYTvd3eVLyipgXuspI5RwInbNNbNGtTtIAkxT8R9w5n9l3x+2RU6nVGi2kuscxHFe/50psZ9Ihos1NqrxYQztiWS8a6k+Iveid3qi1xIVoXW6rO7H4iXl5a3k1L5cT0cEA5i3D0O5hAfwcvBczLCBBqQ9yBXkgxoPrx2nDnX37EEj4+KtlLob9SLNvfGzQG3x2Xaph1UcQiXs8H61hIMlymiqc31R0Lvb9e0ItsrOtAZUsem20z6nE7WI6PMueYQvD/rgoBAaATfPt2opdpnVJL1Ocfpzw0Z9isJ5yH+IJUGTFFI0cVa8zLpq5IF89d/HVtCeVl477VzoDjYpYSSWlPTS9bSlBaBe3UpEBsxYELBPDxxaG3HXE4cpU3HWjx2wqaP1Sb8thXjqej7+edeBJQiFcrYgUO8XF8/Vw9ckegIwIhE3KJwRRoZNXhJrt0OmU7a3ARNSMaYGsNswzi/Tr+pMDLGPOtHLhQ4KVFo40Vb6lXOGMT/S2ySXUqVgZhhZ5eFxeG8RtJtGnVmFQzcQjbHMZwShq2Ji2+hDjTmdMXtd2uMwc//FJHR3wNET4Z1NxrdpUMWOb5QhFOS9hHCmMD87n0I/PFHrkXgnQo8+MPvgSp0yiD70m86Lf6+9PM+1hED6rgzcdluNBF3FWgWPKyO4X3FaAi5rhs5LqfMGWhngT6TdIom6dVqetteGMfGdYnx8Oh9egONqqNdqhtcb01Lhh/YjA5+967T8w2VerPVaKFoi6CuUqk7JhSe4Wg7nn3sTH57TzGfyWUyOxZL50ezQUYOtX7Pqc1atm1luleG/u+n9FPfUXvLnW4pK5Q/mK//Vu8plYoXCvPuBjRDk/nBfjPtdjps6lTYriOnmOkdoC9C46FAbB7Xjpk+gqF4LcjvtBq5XM9Q0w3IZNldWIF/uzQM4tL6xWcMg31kAsrQzvKuj+EbYEgaJzh3djw8iQTJQ8pl/uFjWjWZtajG3DGjzXu1IDzjka4ZdAwzRsTRTIue9o5804WhXeiWjoeNgT7J3u2ejdKpZ2WB8F1FcqxC5tLf1elO1wbIfJ2fjdvVUqVMv2YfsXKW43tkSfNnR0bRrFc9saynwmw0mTKjqxYvH0GLHm7l+70h02FIc3uea3E4qNe0TUS7DFRvGYn95bKN/M6+BPaELGPs336Q1EEWejiu6LX48mmLYtzqv6EO2D6A72+hjLKwflQghB2uy9G6638+PxLAdTT9Fm+8WExfULVotA5uO51hm5DjzAJ9uAJ3GPraHx6qo2hj9wjrjf7vvp0nc5NSd83pndYliuJdIMvO6/6vtqwuGC5dsd4Y/B/lzuyV9lG4vLcGv+SAfwa584xq0EhT2wod3FUB71rS1nBK3V4qFgvFUqVazCBQlxyShhCqbu/1v6ecXf23pkt+REA9AHftW0Msn8Th7g5MqlYmYZJYKCaVEWQnhtyFeQ2Em0NCXhdNbo/fTigz7DUUolFUbPRpqHlCWherLi9uWPXF0XDHajKpVKfvaal1uAmLrqBlKvhZUz2NvP7oK+rxE+nDz+X5ol5p//byHu/rp/0R6/6IxAo8J36QPYv8GcpgJa4cuXEVsJsvKz0b5Sbid6un9Wo1dbGSDQ+K5tI/DJ29CjpDD1uYrZcgcIMsH58wRrCFRjxybiEbUZr6qIaIMDO6AcNQlHi012WTpSmKZuHVTfaEmB5ysaEjSRqvGBZEYGf2CC8eYCxRq1SezKWjWlynPbXv/8rSxQnWVBjIKJHskN8/KD5y/1pMmtq152rTu1utb32kxSKbVFk8xpd8TPD0d18ut6Xgt0xNzlkj8l/7eaXyhbNJU17AzwQC7/ukuF0A//8tjLV9rLi50x6AIevzggHG4YOh51GkB9DDb3uz6HQAb/n871H5ObqEFbgCt6/CiNQN6dYgPC0qXa2yLprlPEfJRkRe1twkTR/pvr3NKCXMJXXRQajfzBTyACLa1YVrqaJsyDwmF3vp+kafE4+a0uBlWUxjdny2sN2+KU2dPXVC03lXW2Uo09/KAG8fMx8O+RFPa96R2MZVsRggtNGkaqXz+eebam26zfXmigsLh6obaUiWpacdqvRcvuAtmIPYwkNeildiLYJVfPG7TYDdfPFb1N7f28EV3ZWDPO6cEz3U+i02e6PAEejc7hGH462/r7J5Fq4XFjWhA9tHOvYDAFFoFQlXTUVhnLhEVLmTEAthrAwMEJHcJ6j9yphx3pCiZsqK4A5Loj/kyIlfddc9X9Mq0fmevGDCIKcaqVefwloqtHmfHZfpRDw1n0lbCe1LC9qukA6pGaXcBG6tJKbSSTuRiKqBgB+EoHzT3wRbfaXZcqouGYpklF738f/bvpoaPChWLsncxrbXPXuJ0bu2S40Vs0cjVEue2z+l0q9cV129sudlr74Z/frz7KLgMyaEAg3n9GkSdcBxrqSj08ON1hC0xxBTuKUx/Undmc1pmw737eIEdM6fPxA/7f4+0m2sRufIvMAYLsadfHSxixMnDgFRePsfl9Xr6KBBMD6uquvTNCxmDHIfLGhF45viKRBXltskCiLsQkUWC3PkLn0lDr2y9ES3HikFEtkiHsLZ08YSWZ0zqJUzTZkRxWMy08aMO0IxEH2TwlP2sa+XS0yjYPe50LudKP4/5jTCQmEJ4LqizGlzAQ7H8HP8nEE7uQRAj+JiTx8V+oPjeDw2Ojy8JHBCpZGCcYOvcHxrV4KhZ/U9UgiOYvLkwn04nL6DgeA3VSZj5D2dIhm45mVuC2OgzFEDx3IPMxTSyKILfa096SpNTwxPYY6zQlRMy6okkQ16oRU11ynmZV1F7exlSVpjDlO1fC6XpNxXQtfHa8zcZvty7tq2p9q8zJnY2E6VZSdGqFQnY15bTxurgYecxzk8xgj9+McZtnn953r+FT3g+i9c9APzzc2yx/gzmN/511ES15WpyIBnjLPHLMiw5j6VpKQ73svu0vYR07ilYWHnT5SnOvcUEIIIpZzslHJhyEUsf++b4DY8YG81xWSFkkolO+OkUK2qlOLvXSx+eCEe87iLaeBuvBOftJdvT4AmtlVrLFxeioDLb0E7J9iJSBwiRKGSMw3M/LlEeFnfzOMSoWSzVQL+qIjUUjDq6loFq6SuJfMoSiuDDi04xnCobE939tG6ckVCDbBvQ8kx5qufy1iE+OWWRgs8omorDBZR9k+tj1B8X6xpZtuO6a92a8SFUzvS2G2TYaVn9aD2UCAxtWUGTbAGXu0JVh6CNhLJTbkTBhcU47MjOgEy5oNoJXDiRbGjbQo6lM2yjvp6LkY2x+ktKdlGy9xzaMO//p+L92gs3Xuyo80+uhe4can84diTPU6dd7/Xv2EPq9F4ZKNZPB/aT0Ra+4Lvv/e1guuA0Ic6lvx1YqTQvTkePm27wAD7Mwop5PBRxCR488nYhJOW0+2zCAXMjdTSsFCAgji81x10/pXKdL68Ozz/uy6g7vPDSIJ+bZm5G0Runzy/sBmqsvSqmnK1Vs80vWfI2dNT/4bfnv8uNA+R9oKW8aEtUjNzBhhM8h88ct/8Qxl9c/N/+9Kb8NqJoTdBS47s+BdwHzryeOcEOM4dhYoPhqqdt+niiHtqZLzlbZmYK/rP23eBq+/zXPwpUf7qn9tD+Ax+Br+q94YxajbGtUGmqE4neCrlTYnunSB5W6odWmNnDMecGxpBzhT7QYsBxzPvULpJxSXT9Iz7UbO7C0he7ZREKKNaC5S2257HeW5G53V3SDwCzsvzJIQuayob2Rw4uA7C92gBH87aOWf0FowI1ecaUQIMWr9y1caKmAI3WuH72T7HeEO9kKoKRw2SfcbdTot+0H5r3Ih894vuh8zdYVT71e5ycGHv7pcKAr7/575xsRv8O6dCU3PcwWkPoaLmO7936h2jl7iEtjU7YBmqmce7EgnrynJBC9IsrKy17kEXcpKejlKxf5ZpInUNOnqY4QjOkfO62QH6ME/NrtqFpNaFiMZKPohnfdYggyUqDHjTb/QhkuQY529/2Mwz/yaEp6aZK72pLi17z8HK/RjPqVjs8NZwpW+UQvFnvqNxaNWmOiv7BChssM0Qw7AXIMy9JeJi/+9MBzzdhJXskRIs9plZanRq4TiyozdPe1XnOrVNApLJucwkcwWOA7N8ykKQgDVIkjlGpDPT2bcjHoJo83yYt/rDjPtb/KBzZLxzI5oyzl4BF5kYowWlQUbJ240fjDrz6x/2jCsjdr06jX8vUL1wU5eCgrD1w6ENDLJQLBRXKBXcVeLthriUd/gINvHDy+NvpETiYyoDF8OSpLLzqJR1MeoSyoDKI6s5ug3AYrquESDK0p0RZFGYaxLeNjlyxq/3YrxyvaW1Km3BLWAKw4YRWpmyKNmdYxrSK3PORtGLHuOk7IwRcNklBTZAYZh1LqUyxCabYFjwEH+NEJacctKmxkipLDNRGOatIJE/siTGx2sj0EqqThW/p+6RJQXBVFzBETxqJkQDqtuQD7mQGhAlUZX2RebUkORjMNOkijczegkQPS7k9IZIsAa30P1dFnI7f56c1SvsmycVqb1UhffNdxGhp9OgsXFDic/UogdMK/aud52no3Ah2o7PAQHKjEfapookX/yOSPaDvfHdE/zQTXJrdzFMwtzKbmhTlR0C7ct2t1mwBtfgmjRxU8PygW6AME2qipKyNlIQ0LroDJ+Q2JNg3gMcCIzEtmUVZMWaSr0CUxMyamm6hiDgllLWJYhU95zN5/SZfXcEP2bgTiYDhkbsYXSZhlN/lKaDE7tJMtL8nAWXwyZtf5Oi+idoOd7oSyKj7lilCJvZ1V0w8iPNDCkLhdehgzfYed+0n867aVhIH8Gn2VVRijDnF6XTwYV3k7jJ83YB8fFohzLZrB2QkINpM2QLUbfnekVYafncCB5+v0r6psxXIJYDuGEO8++Gj/PS+MeVqhHv8dRHUvn2BmAkhAX1M+go87fhIGLcD1LwGk0febvisLDgerkjp+KBueZZar2UKxxdh4O13uglSbOBsJWe/SkodNcuWQLBu6To2OYDi0eAt1/XrX134FK7BwzSw8yUR9KmpVOocF3Vk5rVxtLTHr74/wffue0Z37u6E1m4ESsAIKAAXSsCdqglNQ8m8AncrfVs4PEOa65eyrfx+xl6iWvju+LIQ2CPvgLXFoakh0WVOAhW8922zU4onUQgckVe3nqPDc+WN7V6xlFCGG90QV6o/BtMRcDHMFwX9takLI0Uc6lJ28aWO8NGeL9gL84pV8Gp9bvzRNdAq3QyX3v7dOefyH7vm60dPb0Hb82l4VmBNWGoVWBoCrJTQ9PjU4stqWyx9wLuzQ1ceR8tngGKKKKr3j+RJ1vQfOA684n3t7gZOrETu7PxK6qda+LTYKapVC82UJSIkCvnaR2tygHGq1PfJZqdC8hXh763EoERvaw7HN8WyB2IOgajP6KCpNjDJBdOJMvW3+hNN3kwVhmyPZXF8jeC9cZB9bxMM9vVnaHYbZcgpBcHakKpnvDfl2VXMNbFmuByhH71qyVGL+a+sOtY4UpJGs1eKHyX6RmJVz3I5KCjOhLzgtRJOKXyOIzhO1T3gom9ROVYF1TlvZNK8/Bghr+Q5zn4YMsJ7yvVq53oXhDScKY+MLuc4e7yC8s3sBeBgtiDPYaKEGIqBbM5HrQkP5xWpMI4VJoCR8CpwC2HLL1PyEIUlbApDduRwnDabhHQluuPkcJprQJnxOVE4uLokEi0RIeeYYYAy68H1mnMKHQ8yJEzLuk1CyP6SARU03yWU//wjaBrpQnLTYbal5ql4anVmSyJ2+R03OwfxhfBRFNb2Frhy1HywjmfPgsrae6EbyowD2zE9bi+niL1uvv10umyA0PcTNO4cOjhoirrUdxA2F1wZYweSZtwKgdF2HMRRCgmMO+hGDrICbIrQk5cfpU51G/4UCyGqQ18TGU5zk5wlqoEBYH3Vq+3oIt+WW6FW237WrBc9PtDu63vR1FAk2xMgp6NUsxnmVVScc0z4oh0L9f2/Pm9UbiewtFvTaiq15vhOKNFbYbDWroHPQJ9qHPUPOY72bamZfp1l/lSifTaj2kuJTNCmzLL5KNVPnKdOegRd8jZ9pm8G0VFi3+9PDCKdh90cJAkOhSRJNEHU22utvOA4Di9lhhWFq02slGfMkktKRY+oMjs18H1DnSiHCQiwgRBu+3tpk0HjrLIk3GLJKrFrgO1pyLHwBWKkd1w6fUde2nfpZduvGTXm5rm+vE8eUq+ZD+TK+Qz6a4uuKeMHKSh13l4xYTi1CcJhM9LsZiVrA0e6AFTU1inBsX7dbD7E+7Yajk00n2hWqdL0dmgMGXuFeYMmXnwminFSZhOx2jUtmLFex5RFpYE876DhMs06ohlACMU3pWx4e89kBlk9nAPE2bTyypGVKjSyLhikokQ7718xPz1898qkgGlXexpVSYneDAVh/S+iu+80N4Hz1+0M7A/yOGDThE+8Awku6vkgv0riIwaTfz56C4SHgXbejd4CELnFCYIBRZiKXDBwlVfrPz0pzBwLWItZ5i+j9/1t+4VuUOoWY9U1pput70X056lL/pMMRfgQQ96kqZa9urmsAmOVYYXEf02jW4gWMR2Uxpk9NiCTVQSgO1uy8NknmA4pihGbIYEmmc5/V4CUeSRDrcNpcAPTnXKO7Z6nj/Po01dkXd1aYGzpc1J/wTJ9Gv1GrOMSuSFJ/3cnG068LvkCbDPvnyCZY1ownUUdolu3puLZQRgOP/xxoXM6bs3nzLxqRPXC/INSpVcYE00cunkITisP0KtFM44FZDhVBhBlBd0y4yZeX439PrsQENIz6mdTAHU4wPOW/o961e5BVn5iuZ3xhgd4+MdH4gy5vqN7rPPgdvin2eRUa7ghZixYPcpO66K4LRQw+pIzQDBMXHQJX7aBWOlyLL2oO3mcNgcgKlsUQq0suRBRGUmcK/LhIeNXfLW3RzUMKsEkyKSs7y85+J57eqic52NgymNOUrTuj2UWBMnCO/b2wMgeLJq+l1rcFF/wK7eV9NdOnie9qHD/TXsh9K8kljr8EIj6634eCrSNb9TMDVsCeY1s8phny/9tLPe+IZAU9db7916Bm3MG56cAuX/ck5DS2BPuzdXpeAsgU+VNx+7599BOJvnG44eZ6grmYh1FhkdPQ9KlUo5cDI6tCt3WdtZj6sdbxyBvC9Ck2+/C6W6hTHciPdq9qZXisfNdtI1jWtXGnb/f/+79j+3urfuwvAhzgz9+QmuIjDsDbPOVxxsaEEBXoI3Bixw3SdVJb/caX7x1d9cyNnxtu1IUbIxKp8J6afDYZ4P6R2zKsZzmMbFswu+cCQSLVSAHQ+zwQxligIdQjsbow46mpvkp53pdOpK7VlLwNP/Erhj/cF6mSxNrBb51egKm+sAW2k8j6XXHNgWprNCq3rppKVf+yUtHbOjzd0MNz7MZrYnbvy7EMwFvemmrR5dCryVwebHnxSvSnhyq1sDPo4fXGmLvpSKq3f2lpBCJrgJ3PNWKHqwPdicL5EEr2EobkvuaIh8cT8FJ8IMpsyqGKV2lWrA4juRt3sLn2zbcgl36oC5FZpY76dQGBqC8pF8v/Ae0YCpQJU6lyTiK2dVqxn8PkMGSgNHoz7ItJEZXJKbUlhO0SkVony2twL2mTsoPQD21uKzrXq1eifRDSr/Cd+ZDGI1PHGQi4pkb91uIBoNQZPgTfPlQ2dAl0CzyP+ajIWa0Sa0cueHMxN3MHehRVTSLCFM7YNOXOaWW9wqE12r/3JUSeFczLVJVcvJpY1Coa2FD+An8Du23qijlVyukVDFNFXp2SNSjce1ohjpJKFSsKMZrxJiVBFKHCKHeRnT9pOaNsT0wXCWqZEBFZwMfnRpUjp5qlfWEyg8gVnPTRA5/NAY5n1EgL3zBgcwFj/f091dq1VzHdL10IvKnZ1GeJY7Pd211rtW7l20vgjFrpZGLa36+XRvb2oQyUFwwrQ+j5+PumQ7ekBdYvDt6kfyTLNSqbrmr4gjcy615pwfxjaWgH7SPPO7FrjCBYl9FANeMcZu2FHWarn2NePXi166OplUKvPchZXBUHShY10w3sFHIGESV+n34rTruSAVZx7j1jTYEKaLLvgOgEgvZOHp2OLk1iUfafAtt5mzHnH7HMpLElK8dDeMqdum1JTUFVfJSbAFb8D3xpm5IpZl2CLO9WUrMZq1LmM5iKSZQUkhB9iAUdMNioUHgdrYoYwhyqql4eFu0XTH7va19CZANdRMH2GGwp3DSmUYi2To8He1F5KxKg26mIS987LtTNdYv0wvyrAkYZrVJfmrDDkvXmkcn25kwrWxf/6yWGuwtquzfMeNptnaLUaLzVKCCr7w/Uxt7+4ZZR3hzM+tQU8blFSyKMQdc7qoUgdW9uCsGM2SMMrd7L0pXCgyozWBl5I3ITSbrV5l3/bmmHm9tI6AsAdssxbUWisx1FWEcMNi75BgD5Y2unJwlSZWKrmMrkVUctn5beN05nsYnNpSpBxM/wPM2/r7Tb5uQ+gA2X+VzQDwlyV7vQ2WHxUb+CYpjl3cRzqJj+NNpEV8Gu8hraE1pIX2hXbPGp6mTDoJJYYWAkbDWA1h/veD7h0w+Exsad5TrIXyoJFJR0xLEwpESevtSzpAXXktGiTALXwsDuUcKpi5PbiRqkPBLuNdAl+ptf8SfAnEUTmNUxiFP9tJVVPArzT738vWSKAIVxayAy+hHeLGir0uVywfXErHmwxcDWthTYCPuQqi/HfAjDCLdgQxaGzsKghZqlvc4tIumxoN2jxyFKRN24Qw/+zg4DMrIWkzJsxhFfeSVbvo90RpRIcbfZmIG7w6KqaRHsMuvkz6Ml7AG6eWqR66CuujgIYJ4y2JYtvPKPEjd3DL2kskTEZVsUWcB75AolwCRny2rp+YAq/C8j8CO0ygiInOMKzfjBcJSY6PDbuFe+je6m9nEpYPZZiK4Tbsgp9et6fxmRL49MNn/keAiQlYMREPnRi9GS98n/jfelkuwc9+NS6lGHp/peVn4yRt065dPgfCoUdEqotjn2xoePUCWkpA/PAPSbEqvdh8TtR/QO1C3KjglsuGJ5BBVOESzaLTjU6X2SorKrg0qq553RBzwv1YRVaIoa/iZbKTuIO7jqcpjVZBu2YBMTBNTQah+YTlOZYE/ogMTwFHZlHsONh1k4Yo9yeqyIPggXvZ/bNbEEkfBg/fLYbng/+Puh36X5XXXf4T9eITWvUlJ0EIkvxP8NLfv557DYr28rtN6mb6PvojIQUKkXSR7hT61H0Uosxqet9ZgefiChH7160MyGbPf/5zY+fRiIdKxGnOgHs5CNYbUHvGpIRrzBtAfqT+216mjQSda07fmjoKMUSHUpQ92tWw3SWRkxEZT08ksqmLmbHrDTDG8et0G+/3ne7FNDn8gbv74KKsWl+/FL+APhLfOKU6QHd8t4ceC7D2T/f7cTfLYu/y7/3ZUYgh22BG0ra10eoYHhyFaI620ubt1d6OQcSN8SJ/E9QpbfwLr76gHq/GvHca3FHe9mHC0YfW3rvq0SNjPSASfPrEZODSMo7gD9dlYlr3EmJwHrL7HLJUbTDllzicgp/QLnLFtXDRbLX0aHB1VF33uiGOhEewgUyMI3yPXi7g3YMzvcULzM+A5QVYDD06ULL6xNthRTZ3+kgUofuwNVl4jEyPk8MMtegkWvxmwGsZqct9TsahQ6fgXU7oMz2b3wHzyzY8Pi5BqAi+JhNR8BU4m3snVPwFsasIEQ3RDkErCQYKGXCa+0VOo8y3zqTi6/NGdO+t9I6UMaEvCce4JgUDdqjGnmsiYPBXHi2dMFzR4lddOM1IJIluia8zcKZ40zr+35lJXPyDttOfc/hdgLScZfIx9JZKWYVUudpWU1NfKsHlvRSsMh5Dq4P2ChlcdwHZTaN4QO9ym9pbUqCeYUU2oBoiFq8k3R218znqD8vo94giEg1iD/kDDI65VeAYbz5oFHlUypSRRE+r/ToIqqc+dx4i2ItmHTGgXSOo2RWce6TZ4PlChc/SqzVPd99WOzcciPI99DjzYd0bBBIiNb1tdAk7Now3CWUQGQjQEMf1Kb7OzP7zPo/bVixJntVBpt2oIzBcLe1eKylAXfK6JHqny95EBjMofvbq+FPQNHQmdG5lu2Qvy56RnZdFQ5uQpWHQgn6VcvGhkCKNEHPXiFymrt9yaDe7ab9Po4AJhPFYTGzZ/smRWkXh8Zkheaxf/U2jqHTToh0I11uSBcJHA/xeMLHCqwiRnVvdJ7GjDYUbukq1SqkQ56edrUIcPeogaXoT7z85uIn0/w1SnBxx9hto1J+GjyTIbsAkjQVdFkjoJesFRbhH9gBeAZNMEz4Ah0wbPoPW1JOoT9Bfov/Stl4Eri2pajHrPN9fEUzTckcrsjUAJiQRThs0k1tyJVIGB2TcXBAXvHXoFPDLNIyagGY7uBU8X3g0Y/rg0uj5UWXX8XXrxJyVMaj6dGgasiCr3v/pcIln+Wz0v7NNk3X0rxQqiYR7nh+VEw78NK/SKxQgBsb5B8W4Tp8RhKp/q6ezzZZ8OmLwR5EWipmm19py1QLiWiUr2T1qOty+YjoPtLWBBff6ws9FGs1LbLAE7h2RP0ryHBy4Vws5sGC4rr8FLYVTmXjCLp2zhXPnDgeVpaV1ajHURwJz7fKlhmaTlnu/G0IianoISIJwW9czSC1xlAYkTFRO3a9jHfSGzuKRDfM2jONEtm992GOlRnY3Als9myvc748PgKEF7C4ap1hOz839GgWcjnE0KtZyoC7D139UFL/L/SokaCF/78CItrmBGCsOmCiKONWRE66oYHfSrn4lAc5UOLF/RDlY2z59yBO6Fjd1pqzsrlnNc0cZDjQLVhGmWGucZwbAXwVdkqXgBLsdnpj1SvgZdOExSTcYwimSCyCDkRnTHXG2DzToz8HXUciBci74JSjCH7I/oApPyJ7BN+BOrU/dQ99DjytVqGk1qFOpmKmUMj1GnZOUIdZGMgJxTVc02uNHahpHndJaKTiE442FzJoSgvtCdb2tk58UIFKhj/D6kzJpW0ZtKFHlwVShjSxJhhGPq2i0aCIkTCblqXLcqRRFUaA2jbIGtWPkQgEizLR1W6XWzm1bzZPhBPowbvULxR0dFiTXAsfM2mrtPmyCFEZUNfYo0uCkYCr+pKR2JaRGWzhdKnvvOle73FPLZfb28P18bDiAfIFIxtU9aP+mX6QFqX+/X884hnPNFmZUu11vkct9Jzsrd3Rl28qb8hCm3mIgVitZI/GXTr3+fSJtEv77JnhuTJU5pcA/O5hzk1+k/QGREO18W2ytLvJ4r/z0oxrQ834u86UC+3Sk5z4KvGj/1xuuztV+UsAZbAge3WYKGxmMDcG8/hsQsd8x+gkXLkMKy+IH1wW9/xyq8EeSP8IKLJN0oQUdx5jqobvoHlmIzGNp1ZE2YFKNS00fVEBESvWktiFJdDgmVeADS4rHQ1grRbmnhuKO0vQO98HVEYYhGGOlSOB/EZ96MLFvI7rRgFVmAXido2krPKWuzLUsGtrZHV4Q92b7Gma20Vfq3sMyEILKTe/Sj/1cVNPr2zEPtrZFKysDe2jG2dQpsl3H1A56O/2k1bY+Uu03xih6aSgwXUtCDFTeP7OFJ1OpcuNuDevNUrdpnOuv//N5O9cPDgVNAszfWAh71hY9JDlNZ72QBiZocVXgyHpopHOW2QOpyhVh7LNave2i9raQP1ysjt2Fe2mbztkei51YskBZxvWRB0ZuvziusDf/Pb3iB60OIiBksPrGluiXrg6BUdjWI1p5amlD9pPa37qz8XXbIsvqUZEg7uoTPd/ZLjdbYu/aSroyRV5uuGnhSH1FC1I7kz3mc6BarOdhjx5P3FoXCKiHMZZtnkWl4nEY+eBcK8Awgk4gsK9+1gc7shwWtGir18aY8ToxzXU8QYC/uG8pI+fkkVMVvFcfLe3WV8gS78BvOE5vLNCSoAzfSHqADZ0kN6EXWNOyysO5mLUDWRXBjSj5FibC0JQ5CDfhh9vSAwMMTcC7Y8Nn8qQwbZPLZXZcuKRTt+toe/7YlDO0oa3rSxHS/Q5Hh6cRgUID42leMZB0uqYHLZWtPFXw4q39cIpb0JEnw+CKZmqdbifFRWF6kGZ9t1XLhi3ke/8+fmyk1+12bdenyhfBYYhjU3EwYVlaD+LBiPqGVmOWFX4IWvrMg2o1vOq99K4l75xDNS7tVZ1PrICUvICno7mffdhZQ8FASyJHYsUGSa/wdQ3rb6dhel8bEq+fLMIurCRgwePETcXBOY63xEFvMCJzLbVaKLQ9BH0qyP9LYGvhDRW20Skm391kZ1b1MNKVm44OV60JS7SKaPLkeln052P3E7JoMS9gsfFmLXURxEiuINkcgg14Ez7OJW8Gmcuyn0gbZA7Bu85IZOB2Q4CbMtyY1dNb7V7GMWkM4+yDhD1gKvJcXDup3a7/O5/cShVtnMC8YFfmbQlDvX2EHQq7r5bzDiC16bGBm7hvfVi012fT8qmpPhywpJmDuDYQNDu4uB7e/j7La28d06NNQhfBR0EY+8q3vvXAWf/K/V3hoCoFO1uAGH/jG+V2Fex9eXye0HzBFzPxXUMu6lMG8QoaprXs/1+0zS5JbaIw6B2D8003lFOa45qu8hagrOoj7gvOLJbw7GkZir8/YH6Sv64XhGclN0XLuuDqKTLDCeBiG+dl41ga3IZduAu/kHVH2UGqnU4Jsz6OcFmOl2d8389ccwMGixJxokRQUpzXUhBYHihGqr/FxL2L8q+5TGtAgN5I4KBduWss39I/NxFReMKYMPvz2TpxfHtGJXQE28aPpTg2lUzqGkYl6XSzatcKnUxWBScXG6Q2gg8GSWSMsDMW7ICLC3GPEbzDi0VIUhla2JvpTwDqGaP2n/HaFC6H3qocmuwrdw+LH/t+x+Y+xI28JMsOlT1L8k9/OryaWF2kzbPov5z9kbegTRgHChBpMt7n05kEFOPGcxbZfG9vfWz+jrwl6BllRmEHv5zh3UU9YuaepOEhuujgVUvzVz/v/z6znza0TwCvv/6VeRLERNlot8Xoewqv6wwsvvezjZuBxCiolu0dbiCQPd5DTX3sY51Heh4PftF+/MP0jbM/5olEmsLL7vwWpBBxCdszSntcXrHG1o4gGEXgm8RxyYEob9LKVCrliWiEso8oY7PhLnVcvNwcO+fJPXwylfIHnkEQ5VDnCBEBRGDG4+ixxUSIIh4gfnPaghVYMFv+0c5Uq90mISg4g/+ACrNSStLl2AHGKqpAYWFrH8IjSPI46GzYnk7P4/nmfxgYei8nm+zVlxBCC2PX8ARYentKcKWnEevIPAfBhzY9gaaC+vjGUEIS9VqJFxz46mpk8iVpZkUTK8BS+K4QUAkwlrCMZQNMDXkZNnnLbggpKXnJEw9WspnlJZdMa3z3aWMiWRGLW8oUQgZov2gPxNqRUcVHpKtE8pFl0a9lsz4XSppqHJGd0hCHpVbCt+AP3hYhraS6N0aqUrJHDqQ6liZKsFEtmR6hF4ZtlevM7Fv0iu7ljYfp+X4PQ6xhbbDxKzJpK8PWeFYSvLUGRqmC4vRWusdk0ElmqRkuMqZxpLSskTGWk7SYrl8ZwBwet2B4SAAkBOoJ9EnkQ7xBfr5gEBIKA/Dvsr93gEPCkkeicGXUe7jtSdBcSfWXv/80gImFk6eTCxgetdPGMu0GOoUcCwvwJbLYADnZn669DKZ5gSxiyxdqfOa2+WbFf8X9aN5oxI5CFORM16HkG/NH/yiGIbT9U0uDNz0bNko5q3OwrqK0+1N6y2wFLZAyz43WEATPSSlim/kwxWWz+CA+8rMSfdf2HjYmpOr0JEd7z5WvSEnHiBLc2KjsnApT1i4r8NyBhirGetNOR66ConE8x3H+f9YPp8p6RKa1nYOQj1P/UeQa6f+dkvK6F8YeQTCC5hTp9nxh8i7sgJyUhHhQ0hidgWg2vvEThanNF8wAbnS/LeEalzIhePk4j/TzyAnwFOu8bR7jYH8x+yvJicl9VLteKZcy2xYrhTplHSgIHSUo9uChePq+35wtN68GTRq338jdvPMpLpvPwS8AgkCdK3RkTK8jufRSy9zT5wA0DW2FzoTOAh9+epmUkJ6iUFM6GRNyna4BVsebpa2oB32j8vK+uC9xLRSxAxc9gJT2lYz84uKuDi/y2UwebjTieI7nOfDV8oZM4HnrRZOUn9t1WK+48l6c229Ox2MxjkunU0np/12nugJkEEUEbxsUQ/7dZL0su81j0MW530XQhdAF4KvyZcuQbvNUKD3lZKQTJUNTOd8RUm6FZvMn+Zr+fun+rKlN8mNwXxutObCcxHSTA/VQEcBCC1Om78nuJA2X92SaxfsQcqjbqdE+NaYhJQnsiO5my4rjnDnTaIF1D4+wSuEHk+9e3k+0e5ZINCFw5JXzfS5JELm+vnaJld1BgUFs0+BF5uKNH4K9sEabsb0tic+DV5/ifIXiLqGPxAi1PRgfuqsBDJuOLroXmML1HDiFAU6wPcuOgEYfcnuAg+7rS4K5QETFrpPMD6bPzqbXEyLjegjXZ6GSNhA0q3k+HXAbVTT64MPT3zOBoIY+0BBAy6iwbIOjJJ7EAM/Ia34wLY2bHtzLoiA3re9QorwCZLGy5a+4sWPz3kcvCCmNSk6Z9Dv5rqEk2wLZ06QoNV+HPKpEtMLpmaaQx49MZ3/U4PytZ6wWQ5hHedjggK/WwbFRLG1+0jGxVt9hgRg6I0KU8KQL4hXmzXkDFZZ7wv/gwXmwQHKr//InQGTQlb/90huSLUH/XcoVPID34Wf7t29gp6xVvMRTcSrI42g130Fw3O2GfJjT9k0iU8pqOdU0LUFIJhNWTn7YYhFdBq0oTIheHNBtS7LBecs6LlGBU3WUnycLTC6/n8VsHOH5+QPr49RlBWHS6iauc0GJZ72tRSIQ6w8U62dp7xRq4Hqc/O6yTyHLiLTUyQeQBjrMu2IZxLpR/JobE5xw4Ev4zR+n6lJs75eFw4K7D6ysKMfkQ2M8TC7znyhmA1OWK6NNFC2v9j8usHAwxM+0ktEr/VPbBgUt/ydjVX1FIkOGI4eSpD60cii4/qrNihoIaOvXp4T5wEVWbppiSEv0DY/miQgxd1CqzDjiPWZOfeHU3ZGXUa4XO0Gu8fjrPRuPM9AgRkJUgzR2z/YuBIuZSCXoYE2w7jtXKVT3JsFOU+vt/Yqh9VMZNe23WmvkDRcNBl16fSC3Lj4AggBpGKBzRfwZ7I/Hm3RmRqVXIfJe3u2umX9bY/psjqMbf0qx+JxSTkWOmCXnoP2bsAp3NYiOMRUwqb1aLHFgS7v/0oPJX3OesImGtms4hqA6PMkmUISmk4CmeFW1cqRUCiqpapq1f/0LSg7HQCMB9LTquI7Hxjm50Uk83zwc2rzvtXXzR65E+z7GkpDFJGbNwAxFrTEeRX+LdN+anrY2qO4HM0EmrabdrNCn7Ak5adDPMswvJD+YVo38xY0me70LQH2ld3852H5hdLejH8Pc+KZy+TfaEvbodr7wm2aexYjn4otV3k03hXZ3gtgcmNTOS0qrrBt/QD/240BkhDpueIlls6gl86leKz2AvgG7RDmqVpXAqdB3jOiX+hRZjGJHcXaQ5mQ/86XgKkvNjW7LDBppQttVl1tQpKAgMJQRJ9jDfFuli3SgntqOP/9yvetFOirDStor36plhGnJXQ3Dfeeea4xVsZzPzV3F6eeiCdOU/ew1Qns4vDzIjSrgtgyr3/3u3uEQMsgQVEn7usOE3FbBGzeKgro02zdyOaHG+pt+1CpGSHMN7GZiQZrlXboMsFfvP/9p9l4mtZMY4i6/JErwxeh997tfQbT67ePdubuT5dG8pYRJ4rg7iB23NMsYUU2DRoS0R9JVIri8xCTTU5kEhlNq2Yy7kFBq46MNhUpYHh1CFuujAywmSXDsIcjldd1Lw8p2Q8boTnk01x+pt6iGlcLwQ5FSgsJ5dUSqc5lfqnRoUcVCRm2D3NSQBeYAqOdcxpC0ZvMDUotlIG7oVJoucA/6U7QFKP0ZHRUynHZqNW6qGRGdSEY16MT5yytIoc03VGKNvT5UvK2lUicMe4st6Vv1tdRpHeUVTWlU8Bebzwa35VxF0co0cOdJJ9Ql5FnFD+bk4bih3IkoCSU7xj1MczON8hlNk5GwbAM+nT6Dexoiv82E0M8hSj0gfPdLCKlfNfm7KuVRUPFBBCXgyZqCHOawhwnMO96CecBvKO2uB0iNc9XIIWsQwcrRpudk+hBvTmNcFmcmhhsGtmVqhfwZnr0BNzJZE5pNepGNZJbY7nAhrpJN1CxaDVU5u0wXdmxB7oA5V/GHB9lDwESWK5ZUi3uucNTEsD5k+P9km95GfZ09xpHwNWMrjSikqE+16FDGMnak8o1JoOQBmkjFJ37pDgo80saSZRvDCElsM1EX7P1Kj+h1lhC80IaQEW6Ct0dik20ol8PXEemPjQp1CzBdbj4AASZMgN55yjnbQr8XSwc4/NIAzQ5N2BPbRgpIyzp4rQlEf04hg6RtDb74V975aNyXvptFevSC//oc/7WcHQXb38g5bMNteI9LdsZb7bVQaVoS0cZwRpA4iaC5vdBSw0WaeNlWvOVlh5AMLGUDlmgiYi3o+Po3gRbBlPU74aMjdB6u8EoqWTF+L1oTnew5cNtKfHnY7QmnOC65Y9CrINWMJdM6dfpsOb0koRxLCjiwOIeZTaf4n+cskg7fpBhPCVaYNo/lqBjhvT4pYGJp0N3Pke1NKMBzJ5ZKJSs5A6AcpUTEQeOib384IvEalXEW26AVS/F+wZCkzcXMGHyX7Ai+yFYXVdQf78iE1N7i8CysNI4STMKmjaJUe3+/ucOZ9fVHOCXHF2exhs24MbczXemlohleo0fNwVJjTrAOcUuXyjhKgee4UnpNPajhHktYSEjNXRCczT0IHWYZCTcqcF6tXVE5mPd5WdeJhRtxTjedzGimWtOtnJSoAutzcvBpXWJoljf7WYgspAc4ZZ4PTkvzw+IUlx0Mza1+8h7tGgNX5pBWQ2soGHXz4z912IuxsIonGsmVvYbv7hgJxHHz6tfzGs6YXlIuwpm9vd0m2zNpGh7JUigj2loKNT1NWRtOjcZr2Trj66boR5TdK1I5sj0vy1LAVF3P2rnTbR7o4KcSp7OdswX4nJdpSWL9eLUAtlGau1cSZWrVKBLmEC6YN7NvghvESMvR07U6b+65n3xmk+aBNkS/rJRFbTwVIZ+TVnOecOirxu6k9aMEJkw23s2XwTLYHQ3/jwyWlt5eqms1AHhrHRYZR9fIXTuWLG3tp3sD0ft6Qj7xXB7iDeDu61COYzer+5PXWjR3fGTdpBuupCvptmMNFPA5ICsJViVc5Qjw+NDgxzsF8pDn47LmXMBXegVsV2kBgfHcZVBRxUhKUvNxk35KbfpDR2lGymQXrvmteyflGO/cX5FufjLun4GM48etvT7uGmxtafGzRkwTC6djoabNUnxM/rW/ihNrNaFtYZOwviOk43eXj7mHZiKsI75438koMIAjuDUOX1XqjoRPWibLkfTToly2wlIWg6WkhSW0DG5GCE54F7vjVjjXeeyLlXOkjGOyZhvOPbdYyJgCjVNJ0/QFI1NsgB2y/etHD32XN7V3y113EWAnOAq122gMYWiBsGCJ63lsPXDhz3DYDWsRHgqwmfLwSHGRg0R3eHx7bGzPaYnPIuvU3ds+CNWpDk4Lt0lMhAOa4y9Q6Wvmz09HzZZ166apiuHk9odw/7ufjX6hW/iEkZc2nrOVmHX8qQ83ClE4+MribQJnecJY0wxnqv30V19oyMJDQWC8aYtNGbaeUz1jNRmKtzn2Nxx1QCOQaUsVjUcbsnDXeRZuragW/i4Ys/+33/QSYCR0+3JEjHdujcYjoZkmPxrIl/KHVWu50DVsw79n00asAYkkcUkH8Hm1qvHM6ppTgS9kk+851rHc8uUGu9q3k2tCE+M6UrYl/OxAnufF2dTc8PpxbTfaWpFiuVxAhEcZR5MMQ5DtkcrDj2c8NfyWze9hWtPbsDtY11EEtCSI8qzyCtZ9lbgeZwo2odXPVGVEItEMb0sEixiTzbL+o2z4awbxcbShwt//XzhoT6zUhRHzPWcC0tNsjdmv0iP3M3zLbMS5a02W9UrPsO64wDJebd0dnmh95zQV3PG57Sb738rKT3+koURYk4P649Fc+0mqZNkjOAQ1TYtRhag0kZ9NZneth2+2un4lkz947JTrY6ejjBXlt9n8BW/sxHqT+ESXLNcvjBqUyi3Wq6PWWepqOwbugzXdNiI0WMpgNIZI9aBOvVg5MJu//sOVvz/ZmoZQuePXf1hUUlJcVGbSv4sKpdRaMF4OovXfO1sNx0EORmuSsKLx4lO7EfSrNdtyrlSeZSwTxzlFpZjKDs51yuA27x/FLwaWzuDN66UC29vA/D78Z754UbwKD11M/nojN0yNyMQE9wleVjTVbrOuBGPiataPJI2KGacTIbvlbIIWjTafzpZ5kwtLE50pg7zuC3mdaGZ3hTiTjv8whlEt4pkfvjO8o5DVABJW4XDm3uGllOzXEcPSiuPs8and/4/NF+9ypHXpJ9nXLr/W049MEu3yO9jjPtmSipLx5Bn/5v7HCj/FWRvenXs/E6AUw2H89EqDiAUl05OZbOqGl7Z7jQJMP1a5NVbmTsxgXmhJavrBJ+DitVeAZfepoRxfstP+tUCw784IcvPtaPpj0VQGg8ZgcdMKCgpVch6dTiEpExPk7Wa16S/3S6s4+6NbTPbbjz/Zo6U7owHYXLE2n45Vs9ee/O7EjfL2193lq0lZErGktFQp5sQBmqCBDobM6CED73KxVpUxMCKi4peDSMQuOszFrvru36qDko+Pj1th88PzuuaSUY3mQEC/J9cetRtVJa7xnvcnOeYCRg8IBXzjQlxYgiMTkMtJH/tAEuVLMzyYTdSfplf1dHYXxyerOukz80D80fZBNDz1txngYQJ347ez3tUoZRkpRCtp2UtUmapmReR2iVQNopm+rDyiti4QcOxDwvaSNTUu+XkdWcZNAK6NF8a5JVWfzY3xVpipt7kE2j/GDbE2WrRq1+3epXCb1G2jDa9EBUqMsLUiyihkbJBaf3q83NOnSBLNy1ddP6am0TW5si5NHFPIYt2P5MBq+eZfhO0+ABz0nlBps5WIm0uw9YJpXLNNSyG+OKouaQuHSfk2mjOOLnZhRnJnJToPSripY1QHyU6cs2kbF3RL6KH87+PrVvhPTkVW0uAoKG8Y5aigJzJVSKTuCF0VolL3Cw4pS0CEHlWozVfeKcu4SaEhS57ZLN4UbZOO1FvE26YFqK/xyhcOfD0WPlrUcHNscGXE23JNZlzCSiUxeg1XZpnSCz3bTmUtH8wqg4ShasqamVvfoepxwqLuYqoeOB8iPVknnM2DmDxaR0Dz1mPZhEQQy9IIwm7tpf1cJYC19zqEMgpIz6w4xVmsaHKBVkg9sVS2RlarFbQw6zrdTktGHyqFUu2NOyM9KMd98OJzt71ERkAjVM73VepPmx9Lt3nKtcf6H/GSc7SntzfluDVqX5fmuqXMsnITLZwvKy0RXSI6Zlgi1qag1bUiOn47pRLuTZKZy99+7+s/W3DmBrwd+qhacUneREaocBtj5/1Hq09VGaxGHA3WGMWJ0auzzYJlP/f9HTdlMroL1zpfRbn08j6oJwxX8aLnUOPwe5B7VwACACDgn2du+tCDf3zuiatLpAqN8Tff2/OBP3Tnj6V3NVtrLcupaaqBV9FgpxD4Dx4qesmO0H9jCE1EW9RdV53Am+zct1Xb5ijuM5jWBjljp4j+RHxcfV9Kfx4k6+LyiuLTbo9MNs/cIBfnqs1f1JkYZ41ww98wMQoMsREQiwQpo2cFlayeYRPTnUxIuioAtZu2zoCsfg/5ShKp92w8JJ/zuZTzxssfsLtZM/U0j1ODdshMVj1QpH98hVpTUdj9qbN1Eyg8P7ZO1aNVGiCf5Zp1DqTLRM7nM3NructdX8yjkgjrk+b2VBJZIdn5PN4X5U23vmpOCnaxIa8p0yOlOUWBrVAPpLJZSonNTta1ByLzBV779e9tcqDtTrPmmFIYcLvCrQGYVXj0NgCbfFh5t3Jn2BppStf9nEpbeu2NheOQsHzMtg2CQA4M7WsUyGXEWltuM684Rt3o/APNfZn0XM/HLdqt58/PcbBpg7Ci97IeRkyGOb0mtiDn/XYN2l+lvwxYAkGA/DJQeaoa8GFav8ecNt01aoNCgjL0EADK1ahRaM55XzbHZ+QtsjGflHyIRrU8zcNf6o7EEmwKyAkoKEMPA6BcoOA8epY5UfMUIWuqldDseOQoeEQMSYjZyswCcw2YDz+TylW58R+sssMkyfWOs2oYjgwztfGcWzPj2RlJ0FgRNNn5f8h0aNMtj6Eul4thXjItsDPRGRp04BW6AcY7sX1vGi5t0EPoVMubpgg4B+F8XAfGtgTjd1ayRV72XSW/LY7v55fjnxddsWenxYewz6oaJDeJ+SUiqBKra5s5dXR21UguNrU6Jf3+EYkIBddWBgTQFq8RxQYJY5ltG8CfXT8fAQHQDGOdL0V9uBvTBMJOLkwlmQgL4xmSfpxC4cY2NLxIHxWmYb8QADPMIWDEnBBl/GScAwpYoYEG9FChAGxjVMDYM6owXSMWE1JqDPljm2UWLiZ92jEmZSG1mWTIyfHJAC4uJ15ZQoVJY5w/2lNsOGlKsd204wkVUWZVY6XCJR6se65foNPWIIhNCfMdd3pxz91lF+56//NsOBezRKXn4xeqlFX+i+U0krXUplG75dK3yrTKHHOcBXY0zlRtW1pblyLIqwq7pxbVZalCDstZS/EL6lnT2zx96Y2O4Cd5ab9HYdFyzim8cvf4eu51y5pKBqyy+f4po/Ua/SKUafz7ng6hy6V75IK78j3uN4Prm5h0+Mu8QstJ1RWSmDHIBrhy09nz6otKVt5ZFiVFpUoHFlYlH1slnExOILu1JXw8rz5fmDGk+VBSV/7F521RfrG0BBz9l/+XkyBKMoAIE8q4kBVV0w3Tsh3X84MwipM0y4uyqpu264dxmpd127tyC5asWLNhy449B46cOHPBt4IrATfuPHjystIqq3nz4cuPvwBCgYIEBwl7FSh0Ua2vilQpt9Nh+4KCsqBBvg2hgOhQGYpQ4ro3wYA6Df77Z8AeR7W7rUmIUDXCdArXpsN9d9x1zzcRHnvgoWaR+q3zzBNPRfnhp1Iia0SLFSPOLvESJUiSbC0xiRTfpUqXJkOWTK12y5FNKlevPudCCTHhmOO6vPDKa91OOKnFGTecctpNxX5UueDVZssqldICCQAhGEExnCBTqDQ6o1QvM1nhbA6XxxcIRWKJVCZXKFVqjVanNxhNZovVZnc4XW6P1+d3KcXA7DNW6xA9OSxeyS8vN3LKHzgxqFk4hly8VewrIFlMltfVjk5s8Y2jpYN7fPi53ONjsKWODvIp/MQ++XK1RMlysppon84VkrVY37l6nV5PTTGgjg19/UdzV/nimTscw619Kb6c/DVejpOVthqyt5Y5Vgqx/MItPX9ZsYrv30h4HTyRSMWGPrdxvpRGQU2RK6lWO7VztTEwXLiBAfLX6bvD3hH+CneYa9xtOSeHnh8W6sSY9HNdPN+UnFY/38YR+McNDqg/bk6rnK84w+GD0s3H52yBilKNVGCq4QoUVOBiFwBWcMAKnmQXAE8XBtoGgAcAggNrBGoEAoBrDqw5EAjU+Od+ZfJ8ub6QojprOoHmJquL7ZJG+5vVK18lVK5mrZJRrUr4ckalGNXLRV0qvZvFklkoZORzWT2Xi8jmBD2T0+lcHjqd7wul8qyebPOaiTYdz6qOZf1mNBuKZNf1zRnRoXTbDKZDgXRW96c0wpd6BW9K4knSdCe0K6GmM5GxE3/IEZdsNe12hi0msUa1JfqcYY4SuskyjRFtMMXUm1pn9mUw4VegwxmU/lWkrgm9bWqNkMa4RVdr1KoQM5Tq/fq2umZLXaZv1J/9uEOvFtfQSi6lJ+J17HRAkTfbNzN6LFrXJ7xpY4R1I69HZF03ZX/4vn6Lfk+vM0qVhM3aNVUPiQuDLRR9s7DbuUnaFKqbgjom/oEHrvcIC21X/GvYFWaNP8AEaDlJLkcZBVig4mifHTL3nOSVodxJKVcSY+CJgSAgAv9VJRwsfOh7u0NMIAtyIz05lypAgYqhPh2Sex6OZHdM9gH8UkxDLH+QpZW0d/jjS+/At4VxPTQdK/gOEcaCZ4f870R88YL+40e4XR1tX6YE7/JgC214JxE98YvJvBCujjlzJh+oyL45siz8YQC6B1LQsssuagA23MBZ/5WYi7r7Tkk="}},"time_used":82,"timings":{"blocked":26,"dns":0,"connect":0,"send":0,"wait":17,"receive":39,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"pixel.wp.com/g.gif?v=ext\u0026j=1%3A10.6\u0026blog=166726350\u0026post=23\u0026tz=1\u0026srv=cwlagos.com\u0026host=betaroi.ltd\u0026ref=\u0026fcp=5886\u0026rand=0.5893818995850739","fqdn":"pixel.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:46.042Z","timestamp":1785145486042,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /g.gif?v=ext\u0026j=1%3A10.6\u0026blog=166726350\u0026post=23\u0026tz=1\u0026srv=cwlagos.com\u0026host=betaroi.ltd\u0026ref=\u0026fcp=5886\u0026rand=0.5893818995850739 HTTP/1.1\r\nHost: pixel.wp.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://betaroi.ltd/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/LeafletHtmlIcon.js?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.474Z","timestamp":1785145482474,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/leaflet/LeafletHtmlIcon.js?ver=1.5.1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 602\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":602,"size_decoded":817,"mime_type":"text/javascript","magic":"ASCII text","md5":"d0bda3031a93e9fe4952897579f5048c","sha1":"5fd0462e92521e11299d4671e208f4b45da1c049","sha256":"1f6497b7e90c3e4aedda2af396887a26b575d13c14af1a0eb2ead8b925389b47","sha512":"b5be53e765f2249216a818a75f8e153a4bdeb4323835f4ddb17266b39a623444aebf28add93a49dd4626f35f43b5a8ae9dea0cc05937f19ba7456b43aa169d2f","ssdeep":"","tlshash":"83f04c4e79e6604223d372952abb6046f231820b3a045c55bc1e43c05f20a24d597f9c","first_seen":"2026-07-27T08:06:56.518312Z","last_seen":"2026-07-27T09:45:50.853118Z","times_seen":3,"resource_available":true,"data":"LyoqCiAqIFBsdWdpbiBmb3IgYWRkaW5nIGFyYml0cmFyeSBIVE1MIG1hcmtlcnMgdG8gYSBMZWFmbGV0IG1hcAogKiBodHRwczovL2dpdGh1Yi5jb20vZHdub2JsZS9MZWFmbGV0SHRtbEljb24KICogCiAqIFB1YmxpYyBkb21haW4KICogCiAqLwoKTC5IdG1sSWNvbiA9IEwuSWNvbi5leHRlbmQoewogICAgb3B0aW9uczogewogICAgICAgIC8qCiAgICAgICAgaHRtbDogKFN0cmluZykgKHJlcXVpcmVkKQogICAgICAgIGljb25BbmNob3I6IChQb2ludCkKICAgICAgICBwb3B1cEFuY2hvcjogKFBvaW50KQogICAgICAgICovCiAgICB9LAoKICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICBMLlV0aWwuc2V0T3B0aW9ucyh0aGlzLCBvcHRpb25zKTsKICAgIH0sCgogICAgY3JlYXRlSWNvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGRpdi5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuaHRtbDsKICAgICAgICByZXR1cm4gZGl2OwogICAgfSwKCiAgICBjcmVhdGVTaGFkb3c6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9KTs="}},"time_used":1105,"timings":{"blocked":1009,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/mediaelement/wp-mediaelement.min.css","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.282Z","timestamp":1785145482282,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/mediaelement/wp-mediaelement.min.css HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:45 GMT\r\ncontent-type: text/css\r\nvary: Accept-Encoding\r\nlast-modified: Fri, 07 Jun 2019 20:45:02 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:45 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","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"]},{"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":4186,"size_decoded":1607,"mime_type":"text/css","magic":"ASCII text, with very long lines (4186), with no line terminators","md5":"ea958276b7de454bd3c2873f0dc47e5f","sha1":"b143f6e8e8f79d8f104c26b0057ef5514d763219","sha256":"2e10d353ff038c2cad3492fc17801af3e6ef2669c9e9713bdb78b1dcb104c4fe","sha512":"2d40a1e713355eff88fa3bbf5471b4db5acc48fa2b978a555c034f2e5c7f131fcaf48e849d5d048df9d5dae068c4b6467a97b1dde99115e6b32f57e928569fc1","ssdeep":"48:wFfAeWkkqEsKO+TBxaBIIj+NqUFQW76d7JrOv2bN:wueWkkrLoI7U","tlshash":"d9810c1084149d2cf4eab33766cec75db43ad747fe75e7b86936e2b8c098a842073484","first_seen":"2023-04-05T04:06:46Z","last_seen":"2026-07-27T12:31:11.1676Z","times_seen":91331,"resource_available":false,"data":"Lm1lanMtY29udGFpbmVye2NsZWFyOmJvdGg7bWF4LXdpZHRoOjEwMCV9Lm1lanMtY29udGFpbmVyICp7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsfS5tZWpzLWNvbnRhaW5lciwubWVqcy1jb250YWluZXIgLm1lanMtY29udHJvbHMsLm1lanMtZW1iZWQsLm1lanMtZW1iZWQgYm9keXtiYWNrZ3JvdW5kOiMyMjJ9Lm1lanMtdGltZXtmb250LXdlaWdodDo0MDA7d29yZC13cmFwOm5vcm1hbH0ubWVqcy1jb250cm9scyBhLm1lanMtaG9yaXpvbnRhbC12b2x1bWUtc2xpZGVye2Rpc3BsYXk6dGFibGV9Lm1lanMtY29udHJvbHMgLm1lanMtaG9yaXpvbnRhbC12b2x1bWUtc2xpZGVyIC5tZWpzLWhvcml6b250YWwtdm9sdW1lLWN1cnJlbnQsLm1lanMtY29udHJvbHMgLm1lanMtdGltZS1yYWlsIC5tZWpzLXRpbWUtbG9hZGVke2JhY2tncm91bmQ6I2ZmZn0ubWVqcy1jb250cm9scyAubWVqcy10aW1lLXJhaWwgLm1lanMtdGltZS1jdXJyZW50e2JhY2tncm91bmQ6IzAwNzNhYX0ubWVqcy1jb250cm9scyAubWVqcy1ob3Jpem9udGFsLXZvbHVtZS1zbGlkZXIgLm1lanMtaG9yaXpvbnRhbC12b2x1bWUtdG90YWwsLm1lanMtY29udHJvbHMgLm1lanMtdGltZS1yYWlsIC5tZWpzLXRpbWUtdG90YWx7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4zMyl9Lm1lanMtY29udHJvbHMgLm1lanMtaG9yaXpvbnRhbC12b2x1bWUtc2xpZGVyIC5tZWpzLWhvcml6b250YWwtdm9sdW1lLWN1cnJlbnQsLm1lanMtY29udHJvbHMgLm1lanMtaG9yaXpvbnRhbC12b2x1bWUtc2xpZGVyIC5tZWpzLWhvcml6b250YWwtdm9sdW1lLXRvdGFsLC5tZWpzLWNvbnRyb2xzIC5tZWpzLXRpbWUtcmFpbCBzcGFue2JvcmRlci1yYWRpdXM6MH0ubWVqcy1vdmVybGF5LWxvYWRpbmd7YmFja2dyb3VuZDowIDB9Lm1lanMtY29udHJvbHMgYnV0dG9uOmhvdmVye2JvcmRlcjpub25lOy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0ubWUtY2Fubm90cGxheXt3aWR0aDphdXRvIWltcG9ydGFudH0ubWVkaWEtZW1iZWQtZGV0YWlscyAud3AtYXVkaW8tc2hvcnRjb2Rle2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDo0MDBweH0uYXVkaW8tZGV0YWlscyAuZW1iZWQtbWVkaWEtc2V0dGluZ3N7b3ZlcmZsb3c6dmlzaWJsZX0ubWVkaWEtZW1iZWQtZGV0YWlscyAuZW1iZWQtbWVkaWEtc2V0dGluZ3MgLnNldHRpbmcgc3Bhbjpub3QoLmJ1dHRvbi1ncm91cCl7bWF4LXdpZHRoOjQwMHB4O3dpZHRoOmF1dG99Lm1lZGlhLWVtYmVkLWRldGFpbHMgLmVtYmVkLW1lZGlhLXNldHRpbmdzIC5jaGVja2JveC1zZXR0aW5nIHNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm1lZGlhLWVtYmVkLWRldGFpbHMgLmVtYmVkLW1lZGlhLXNldHRpbmdze3BhZGRpbmctdG9wOjA7dG9wOjI4cHh9Lm1lZGlhLWVtYmVkLWRldGFpbHMgLmluc3RydWN0aW9uc3twYWRkaW5nOjE2cHggMDttYXgtd2lkdGg6NjAwcHh9Lm1lZGlhLWVtYmVkLWRldGFpbHMgLnNldHRpbmcgLnJlbW92ZS1zZXR0aW5nLC5tZWRpYS1lbWJlZC1kZXRhaWxzIC5zZXR0aW5nIHB7Y29sb3I6I2EwMDtmb250LXNpemU6MTBweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Lm1lZGlhLWVtYmVkLWRldGFpbHMgLnNldHRpbmcgLnJlbW92ZS1zZXR0aW5ne3BhZGRpbmc6NXB4IDB9Lm1lZGlhLWVtYmVkLWRldGFpbHMgLnNldHRpbmcgYTpob3Zlcntjb2xvcjojZGMzMjMyfS5tZWRpYS1lbWJlZC1kZXRhaWxzIC5lbWJlZC1tZWRpYS1zZXR0aW5ncyAuY2hlY2tib3gtc2V0dGluZ3tmbG9hdDpub25lO21hcmdpbjowIDAgMTBweH0ud3AtdmlkZW97bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99LndwX2F0dGFjaG1lbnRfaG9sZGVyIC53cC1hdWRpby1zaG9ydGNvZGUsLndwX2F0dGFjaG1lbnRfaG9sZGVyIC53cC12aWRlb3ttYXJnaW4tdG9wOjE4cHh9LndwLXZpZGVvLXNob3J0Y29kZSB2aWRlbyx2aWRlby53cC12aWRlby1zaG9ydGNvZGV7bWF4LXdpZHRoOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnZpZGVvLWRldGFpbHMgLndwLXZpZGVvLWhvbGRlcnt3aWR0aDoxMDAlO21heC13aWR0aDo2NDBweH0ud3AtcGxheWxpc3R7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6MTBweDttYXJnaW46MTJweCAwIDE4cHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS41fS53cC1hZG1pbiAud3AtcGxheWxpc3R7bWFyZ2luOjAgMCAxOHB4fS53cC1wbGF5bGlzdCB2aWRlb3tkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6MTAwJX0ud3AtcGxheWxpc3QgYXVkaW97ZGlzcGxheTpub25lO21heC13aWR0aDoxMDAlO3dpZHRoOjQwMHB4fS53cC1wbGF5bGlzdCAubWVqcy1jb250YWluZXJ7bWFyZ2luOjA7bWF4LXdpZHRoOjEwMCV9LndwLXBsYXlsaXN0IC5tZWpzLWNvbnRyb2xzIC5tZWpzLWJ1dHRvbiBidXR0b257b3V0bGluZTowfS53cC1wbGF5bGlzdC1saWdodHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzAwMH0ud3AtcGxheWxpc3QtZGFya3tjb2xvcjojZmZmO2JhY2tncm91bmQ6IzAwMH0ud3AtcGxheWxpc3QtY2FwdGlvbntkaXNwbGF5OmJsb2NrO21heC13aWR0aDo4OCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNX0ud3AtcGxheWxpc3QtaXRlbSAud3AtcGxheWxpc3QtY2FwdGlvbnt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMDAwO21heC13aWR0aDotd2Via2l0LWNhbGMoMTAwJSAtIDQwcHgpO21heC13aWR0aDpjYWxjKDEwMCUgLSA0MHB4KX0ud3AtcGxheWxpc3QtaXRlbS1tZXRhe2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS41fS53cC1wbGF5bGlzdC1pdGVtLXRpdGxle2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNX0ud3AtcGxheWxpc3QtaXRlbS1hbGJ1bXtmb250LXN0eWxlOml0YWxpYztvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LndwLXBsYXlsaXN0LWl0ZW0tYXJ0aXN0e2ZvbnQtc2l6ZToxMnB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ud3AtcGxheWxpc3QtaXRlbS1sZW5ndGh7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6M3B4O3RvcDowO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNX0ucnRsIC53cC1wbGF5bGlzdC1pdGVtLWxlbmd0aHtsZWZ0OjNweDtyaWdodDphdXRvfS53cC1wbGF5bGlzdC10cmFja3N7bWFyZ2luLXRvcDoxMHB4fS53cC1wbGF5bGlzdC1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MCAzcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjY30ud3AtcGxheWxpc3QtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MH0ud3AtcGxheWxpc3QtbGlnaHQgLndwLXBsYXlsaXN0LWNhcHRpb257Y29sb3I6IzMzM30ud3AtcGxheWxpc3QtZGFyayAud3AtcGxheWxpc3QtY2FwdGlvbntjb2xvcjojZGRkfS53cC1wbGF5bGlzdC1wbGF5aW5ne2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOiNmN2Y3Zjd9LndwLXBsYXlsaXN0LWxpZ2h0IC53cC1wbGF5bGlzdC1wbGF5aW5ne2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMDAwfS53cC1wbGF5bGlzdC1kYXJrIC53cC1wbGF5bGlzdC1wbGF5aW5ne2JhY2tncm91bmQ6IzAwMDtjb2xvcjojZmZmfS53cC1wbGF5bGlzdC1jdXJyZW50LWl0ZW17b3ZlcmZsb3c6aGlkZGVuO21hcmdpbi1ib3R0b206MTBweDtoZWlnaHQ6NjBweH0ud3AtcGxheWxpc3QgLndwLXBsYXlsaXN0LWN1cnJlbnQtaXRlbSBpbWd7ZmxvYXQ6bGVmdDttYXgtd2lkdGg6NjBweDtoZWlnaHQ6YXV0bzttYXJnaW4tcmlnaHQ6MTBweDtwYWRkaW5nOjA7Ym9yZGVyOjB9LnJ0bCAud3AtcGxheWxpc3QgLndwLXBsYXlsaXN0LWN1cnJlbnQtaXRlbSBpbWd7ZmxvYXQ6cmlnaHQ7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6MH0ud3AtcGxheWxpc3QtY3VycmVudC1pdGVtIC53cC1wbGF5bGlzdC1pdGVtLWFydGlzdCwud3AtcGxheWxpc3QtY3VycmVudC1pdGVtIC53cC1wbGF5bGlzdC1pdGVtLXRpdGxle292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ud3AtYXVkaW8tcGxheWxpc3QgLm1lLWNhbm5vdHBsYXkgc3BhbntwYWRkaW5nOjVweCAxNXB4fQ=="}},"time_used":3262,"timings":{"blocked":-1,"dns":0,"connect":8,"send":0,"wait":8,"receive":0,"ssl":3246},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/svg-support/css/svgs-attachment.css?ver=5.9.3","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.287Z","timestamp":1785145482287,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/svg-support/css/svgs-attachment.css?ver=5.9.3 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 82\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":82,"size_decoded":289,"mime_type":"text/css","magic":"ASCII text","md5":"2c6a93eabd6076e26db0cb3a924360ce","sha1":"64e7d0123692e029a1eed8bb26ca815b74f725e6","sha256":"1df9f912eeaad4cc3be80111bd99008afd1db7d3d453fd6a85a5fa4d580824ac","sha512":"2af51729df1e4ddec1852da34688e866e1ef51dd819fab03ddfb3027f6ec33525e5355cb28dae0d27808131893f3674beef890e886d64118067c94c1761e184a","ssdeep":"","tlshash":"6da0243003311c0f1000c05d13df051014cf4105030ddf5474dcf0004f44540d4710cd","first_seen":"2026-07-27T08:06:56.369533Z","last_seen":"2026-07-27T09:45:50.925666Z","times_seen":3,"resource_available":false,"data":"LmF0dGFjaG1lbnQgc3ZnLAoud2lkZ2V0X21lZGlhX2ltYWdlIHN2ZyB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IGF1dG8KfQ=="}},"time_used":329,"timings":{"blocked":-1,"dns":0,"connect":96,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/template.css?ver=1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.312Z","timestamp":1785145482312,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/template.css?ver=1.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/css\r\nContent-Length: 591559\r\nConnection: keep-alive\r\nLast-Modified: Sun, 10 Apr 2022 07:19:09 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":591559,"size_decoded":591770,"mime_type":"text/css","magic":"ASCII text, with very long lines (521)","md5":"290039c0b515792e8b47fe74c043bd20","sha1":"4da49ff2b2a1697afe0778a24ed267f5d855e555","sha256":"0c32e20324197be70648b8dabd6c38f7d1b7e0b63860545b5b797be3bbaaf81c","sha512":"cfd28f1b6682220e32253a345dc0dc43d61f3002a9c9cee09b9a7bd9f6d0181e6a182bfc71e85732e69389c14740d826a8bd43911693b521c4a391c7e1792199","ssdeep":"12288:n+99x3Vfn+sGe0of/xSdRrNKuUwKrrNSLj3HF8hetY7+/8n7Eiei/f2wikJUwKrt:bpdihk","tlshash":"4fc452a66df30d08641bc5989befb7a5737c5083921acdaabbc93618cf056d84072f4d","first_seen":"2026-07-27T08:06:56.47655Z","last_seen":"2026-07-27T09:45:50.954536Z","times_seen":3,"resource_available":false,"data":"LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KW1RhYmxlIG9mIGNvbnRlbnRzXQoxLiBiYXNlCjIuIGVsZW1lbnRzCjMuIGZvcm0KNC4gbGF5b3V0CjUuIG1lbnUKNi4gcGFnZXMgCjcuIHBvc3QKOC4gZWZmZWN0IAo5LiB1dGlsaXRpZXMKMTAuIHdpZGdldHMgbGF5b3V0CjExLiB3aWRnZXRzIAoxMi4gcmVzcG9uc2l2ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qKgoqIFdlYiBBcHBsaWNhdGlvbiBQcmVmaXggQXBwbHkgRm9yIE1ha2luZyBPd25lciBTdHlsZXMKKi8KCi8qKgogKiAgIEJsb2NrcyBMYXlvdXQgU2VsZWN0b3JzCiAqLwoKLyoqKioqKioqKiBMQVlPVVQgKioqKioqKioqKioqKiovCgovKiBjYXJvdXNlbC1jb250cm9scy12MSAqLwoKLyogY2Fyb3VzZWwtY29udHJvbHMtdjIgKi8KCi8qIGNhcm91c2VsLWNvbnRyb2xzLXYzICovCgovKioqKi8KCi5tYXJnaW4tdG9wLTEgewogICAgbWFyZ2luLXRvcDogMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0xIHsKICAgIG1hcmdpbi1sZWZ0OiAxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMSB7CiAgICBtYXJnaW4tYm90dG9tOiAxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0xIHsKICAgIG1hcmdpbi1yaWdodDogMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTIgewogICAgbWFyZ2luLXRvcDogMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMiB7CiAgICBtYXJnaW4tYm90dG9tOiAycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0yIHsKICAgIG1hcmdpbi1yaWdodDogMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTMgewogICAgbWFyZ2luLXRvcDogM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0zIHsKICAgIG1hcmdpbi1sZWZ0OiAzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMyB7CiAgICBtYXJnaW4tYm90dG9tOiAzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0zIHsKICAgIG1hcmdpbi1yaWdodDogM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTQgewogICAgbWFyZ2luLXRvcDogNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC00IHsKICAgIG1hcmdpbi1sZWZ0OiA0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNCB7CiAgICBtYXJnaW4tYm90dG9tOiA0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC00IHsKICAgIG1hcmdpbi1yaWdodDogNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTUgewogICAgbWFyZ2luLXRvcDogNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC01IHsKICAgIG1hcmdpbi1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNSB7CiAgICBtYXJnaW4tYm90dG9tOiA1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC01IHsKICAgIG1hcmdpbi1yaWdodDogNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTYgewogICAgbWFyZ2luLXRvcDogNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC02IHsKICAgIG1hcmdpbi1sZWZ0OiA2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNiB7CiAgICBtYXJnaW4tYm90dG9tOiA2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC02IHsKICAgIG1hcmdpbi1yaWdodDogNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTcgewogICAgbWFyZ2luLXRvcDogN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC03IHsKICAgIG1hcmdpbi1sZWZ0OiA3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNyB7CiAgICBtYXJnaW4tYm90dG9tOiA3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC03IHsKICAgIG1hcmdpbi1yaWdodDogN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTggewogICAgbWFyZ2luLXRvcDogOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC04IHsKICAgIG1hcmdpbi1sZWZ0OiA4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tOCB7CiAgICBtYXJnaW4tYm90dG9tOiA4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC04IHsKICAgIG1hcmdpbi1yaWdodDogOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTkgewogICAgbWFyZ2luLXRvcDogOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC05IHsKICAgIG1hcmdpbi1sZWZ0OiA5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tOSB7CiAgICBtYXJnaW4tYm90dG9tOiA5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC05IHsKICAgIG1hcmdpbi1yaWdodDogOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTEwIHsKICAgIG1hcmdpbi10b3A6IDEwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTEwIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTEwIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0xMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMTEgewogICAgbWFyZ2luLXRvcDogMTFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMTEgewogICAgbWFyZ2luLWxlZnQ6IDExcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMTEgewogICAgbWFyZ2luLWJvdHRvbTogMTFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTExIHsKICAgIG1hcmdpbi1yaWdodDogMTFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0xMiB7CiAgICBtYXJnaW4tdG9wOiAxMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0xMiB7CiAgICBtYXJnaW4tbGVmdDogMTJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0xMiB7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMTIgewogICAgbWFyZ2luLXJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTEzIHsKICAgIG1hcmdpbi10b3A6IDEzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTEzIHsKICAgIG1hcmdpbi1sZWZ0OiAxM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTEzIHsKICAgIG1hcmdpbi1ib3R0b206IDEzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0xMyB7CiAgICBtYXJnaW4tcmlnaHQ6IDEzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMTQgewogICAgbWFyZ2luLXRvcDogMTRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMTQgewogICAgbWFyZ2luLWxlZnQ6IDE0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMTQgewogICAgbWFyZ2luLWJvdHRvbTogMTRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTE0IHsKICAgIG1hcmdpbi1yaWdodDogMTRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0xNSB7CiAgICBtYXJnaW4tdG9wOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0xNSB7CiAgICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0xNSB7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMTUgewogICAgbWFyZ2luLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTE2IHsKICAgIG1hcmdpbi10b3A6IDE2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTE2IHsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTE2IHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0xNiB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMTcgewogICAgbWFyZ2luLXRvcDogMTdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMTcgewogICAgbWFyZ2luLWxlZnQ6IDE3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMTcgewogICAgbWFyZ2luLWJvdHRvbTogMTdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTE3IHsKICAgIG1hcmdpbi1yaWdodDogMTdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0xOCB7CiAgICBtYXJnaW4tdG9wOiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0xOCB7CiAgICBtYXJnaW4tbGVmdDogMThweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0xOCB7CiAgICBtYXJnaW4tYm90dG9tOiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMTggewogICAgbWFyZ2luLXJpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTE5IHsKICAgIG1hcmdpbi10b3A6IDE5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTE5IHsKICAgIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTE5IHsKICAgIG1hcmdpbi1ib3R0b206IDE5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0xOSB7CiAgICBtYXJnaW4tcmlnaHQ6IDE5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMjAgewogICAgbWFyZ2luLXRvcDogMjBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMjAgewogICAgbWFyZ2luLWxlZnQ6IDIwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMjAgewogICAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTIwIHsKICAgIG1hcmdpbi1yaWdodDogMjBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0yMSB7CiAgICBtYXJnaW4tdG9wOiAyMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0yMSB7CiAgICBtYXJnaW4tbGVmdDogMjFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0yMSB7CiAgICBtYXJnaW4tYm90dG9tOiAyMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMjEgewogICAgbWFyZ2luLXJpZ2h0OiAyMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTIyIHsKICAgIG1hcmdpbi10b3A6IDIycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTIyIHsKICAgIG1hcmdpbi1sZWZ0OiAyMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTIyIHsKICAgIG1hcmdpbi1ib3R0b206IDIycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0yMiB7CiAgICBtYXJnaW4tcmlnaHQ6IDIycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMjMgewogICAgbWFyZ2luLXRvcDogMjNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMjMgewogICAgbWFyZ2luLWxlZnQ6IDIzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMjMgewogICAgbWFyZ2luLWJvdHRvbTogMjNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTIzIHsKICAgIG1hcmdpbi1yaWdodDogMjNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0yNCB7CiAgICBtYXJnaW4tdG9wOiAyNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0yNCB7CiAgICBtYXJnaW4tbGVmdDogMjRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0yNCB7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMjQgewogICAgbWFyZ2luLXJpZ2h0OiAyNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTI1IHsKICAgIG1hcmdpbi10b3A6IDI1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTI1IHsKICAgIG1hcmdpbi1sZWZ0OiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTI1IHsKICAgIG1hcmdpbi1ib3R0b206IDI1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0yNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDI1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMjYgewogICAgbWFyZ2luLXRvcDogMjZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMjYgewogICAgbWFyZ2luLWxlZnQ6IDI2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMjYgewogICAgbWFyZ2luLWJvdHRvbTogMjZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTI2IHsKICAgIG1hcmdpbi1yaWdodDogMjZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0yNyB7CiAgICBtYXJnaW4tdG9wOiAyN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0yNyB7CiAgICBtYXJnaW4tbGVmdDogMjdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0yNyB7CiAgICBtYXJnaW4tYm90dG9tOiAyN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMjcgewogICAgbWFyZ2luLXJpZ2h0OiAyN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTI4IHsKICAgIG1hcmdpbi10b3A6IDI4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTI4IHsKICAgIG1hcmdpbi1sZWZ0OiAyOHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTI4IHsKICAgIG1hcmdpbi1ib3R0b206IDI4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0yOCB7CiAgICBtYXJnaW4tcmlnaHQ6IDI4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMjkgewogICAgbWFyZ2luLXRvcDogMjlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMjkgewogICAgbWFyZ2luLWxlZnQ6IDI5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMjkgewogICAgbWFyZ2luLWJvdHRvbTogMjlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTI5IHsKICAgIG1hcmdpbi1yaWdodDogMjlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0zMCB7CiAgICBtYXJnaW4tdG9wOiAzMHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0zMCB7CiAgICBtYXJnaW4tbGVmdDogMzBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0zMCB7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMzAgewogICAgbWFyZ2luLXJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTMxIHsKICAgIG1hcmdpbi10b3A6IDMxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTMxIHsKICAgIG1hcmdpbi1sZWZ0OiAzMXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTMxIHsKICAgIG1hcmdpbi1ib3R0b206IDMxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0zMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDMxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMzIgewogICAgbWFyZ2luLXRvcDogMzJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMzIgewogICAgbWFyZ2luLWxlZnQ6IDMycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMzIgewogICAgbWFyZ2luLWJvdHRvbTogMzJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTMyIHsKICAgIG1hcmdpbi1yaWdodDogMzJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0zMyB7CiAgICBtYXJnaW4tdG9wOiAzM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0zMyB7CiAgICBtYXJnaW4tbGVmdDogMzNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0zMyB7CiAgICBtYXJnaW4tYm90dG9tOiAzM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMzMgewogICAgbWFyZ2luLXJpZ2h0OiAzM3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTM0IHsKICAgIG1hcmdpbi10b3A6IDM0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTM0IHsKICAgIG1hcmdpbi1sZWZ0OiAzNHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTM0IHsKICAgIG1hcmdpbi1ib3R0b206IDM0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0zNCB7CiAgICBtYXJnaW4tcmlnaHQ6IDM0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMzUgewogICAgbWFyZ2luLXRvcDogMzVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMzUgewogICAgbWFyZ2luLWxlZnQ6IDM1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMzUgewogICAgbWFyZ2luLWJvdHRvbTogMzVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTM1IHsKICAgIG1hcmdpbi1yaWdodDogMzVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0zNiB7CiAgICBtYXJnaW4tdG9wOiAzNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0zNiB7CiAgICBtYXJnaW4tbGVmdDogMzZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0zNiB7CiAgICBtYXJnaW4tYm90dG9tOiAzNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMzYgewogICAgbWFyZ2luLXJpZ2h0OiAzNnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTM3IHsKICAgIG1hcmdpbi10b3A6IDM3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTM3IHsKICAgIG1hcmdpbi1sZWZ0OiAzN3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTM3IHsKICAgIG1hcmdpbi1ib3R0b206IDM3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC0zNyB7CiAgICBtYXJnaW4tcmlnaHQ6IDM3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtMzggewogICAgbWFyZ2luLXRvcDogMzhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtMzggewogICAgbWFyZ2luLWxlZnQ6IDM4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tMzggewogICAgbWFyZ2luLWJvdHRvbTogMzhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTM4IHsKICAgIG1hcmdpbi1yaWdodDogMzhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC0zOSB7CiAgICBtYXJnaW4tdG9wOiAzOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC0zOSB7CiAgICBtYXJnaW4tbGVmdDogMzlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS0zOSB7CiAgICBtYXJnaW4tYm90dG9tOiAzOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtMzkgewogICAgbWFyZ2luLXJpZ2h0OiAzOXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTQwIHsKICAgIG1hcmdpbi10b3A6IDQwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTQwIHsKICAgIG1hcmdpbi1sZWZ0OiA0MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTQwIHsKICAgIG1hcmdpbi1ib3R0b206IDQwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC00MCB7CiAgICBtYXJnaW4tcmlnaHQ6IDQwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNDEgewogICAgbWFyZ2luLXRvcDogNDFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNDEgewogICAgbWFyZ2luLWxlZnQ6IDQxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNDEgewogICAgbWFyZ2luLWJvdHRvbTogNDFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTQxIHsKICAgIG1hcmdpbi1yaWdodDogNDFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC00MiB7CiAgICBtYXJnaW4tdG9wOiA0MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC00MiB7CiAgICBtYXJnaW4tbGVmdDogNDJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS00MiB7CiAgICBtYXJnaW4tYm90dG9tOiA0MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNDIgewogICAgbWFyZ2luLXJpZ2h0OiA0MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTQzIHsKICAgIG1hcmdpbi10b3A6IDQzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTQzIHsKICAgIG1hcmdpbi1sZWZ0OiA0M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTQzIHsKICAgIG1hcmdpbi1ib3R0b206IDQzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC00MyB7CiAgICBtYXJnaW4tcmlnaHQ6IDQzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNDQgewogICAgbWFyZ2luLXRvcDogNDRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNDQgewogICAgbWFyZ2luLWxlZnQ6IDQ0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNDQgewogICAgbWFyZ2luLWJvdHRvbTogNDRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTQ0IHsKICAgIG1hcmdpbi1yaWdodDogNDRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC00NSB7CiAgICBtYXJnaW4tdG9wOiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC00NSB7CiAgICBtYXJnaW4tbGVmdDogNDVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS00NSB7CiAgICBtYXJnaW4tYm90dG9tOiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNDUgewogICAgbWFyZ2luLXJpZ2h0OiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTQ2IHsKICAgIG1hcmdpbi10b3A6IDQ2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTQ2IHsKICAgIG1hcmdpbi1sZWZ0OiA0NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTQ2IHsKICAgIG1hcmdpbi1ib3R0b206IDQ2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC00NiB7CiAgICBtYXJnaW4tcmlnaHQ6IDQ2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNDcgewogICAgbWFyZ2luLXRvcDogNDdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNDcgewogICAgbWFyZ2luLWxlZnQ6IDQ3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNDcgewogICAgbWFyZ2luLWJvdHRvbTogNDdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTQ3IHsKICAgIG1hcmdpbi1yaWdodDogNDdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC00OCB7CiAgICBtYXJnaW4tdG9wOiA0OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC00OCB7CiAgICBtYXJnaW4tbGVmdDogNDhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS00OCB7CiAgICBtYXJnaW4tYm90dG9tOiA0OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNDggewogICAgbWFyZ2luLXJpZ2h0OiA0OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTQ5IHsKICAgIG1hcmdpbi10b3A6IDQ5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTQ5IHsKICAgIG1hcmdpbi1sZWZ0OiA0OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTQ5IHsKICAgIG1hcmdpbi1ib3R0b206IDQ5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC00OSB7CiAgICBtYXJnaW4tcmlnaHQ6IDQ5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNTAgewogICAgbWFyZ2luLXRvcDogNTBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNTAgewogICAgbWFyZ2luLWxlZnQ6IDUwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNTAgewogICAgbWFyZ2luLWJvdHRvbTogNTBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTUwIHsKICAgIG1hcmdpbi1yaWdodDogNTBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC01MSB7CiAgICBtYXJnaW4tdG9wOiA1MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC01MSB7CiAgICBtYXJnaW4tbGVmdDogNTFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS01MSB7CiAgICBtYXJnaW4tYm90dG9tOiA1MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNTEgewogICAgbWFyZ2luLXJpZ2h0OiA1MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTUyIHsKICAgIG1hcmdpbi10b3A6IDUycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTUyIHsKICAgIG1hcmdpbi1sZWZ0OiA1MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTUyIHsKICAgIG1hcmdpbi1ib3R0b206IDUycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC01MiB7CiAgICBtYXJnaW4tcmlnaHQ6IDUycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNTMgewogICAgbWFyZ2luLXRvcDogNTNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNTMgewogICAgbWFyZ2luLWxlZnQ6IDUzcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNTMgewogICAgbWFyZ2luLWJvdHRvbTogNTNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTUzIHsKICAgIG1hcmdpbi1yaWdodDogNTNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC01NCB7CiAgICBtYXJnaW4tdG9wOiA1NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC01NCB7CiAgICBtYXJnaW4tbGVmdDogNTRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS01NCB7CiAgICBtYXJnaW4tYm90dG9tOiA1NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNTQgewogICAgbWFyZ2luLXJpZ2h0OiA1NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTU1IHsKICAgIG1hcmdpbi10b3A6IDU1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTU1IHsKICAgIG1hcmdpbi1sZWZ0OiA1NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTU1IHsKICAgIG1hcmdpbi1ib3R0b206IDU1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC01NSB7CiAgICBtYXJnaW4tcmlnaHQ6IDU1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNTYgewogICAgbWFyZ2luLXRvcDogNTZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNTYgewogICAgbWFyZ2luLWxlZnQ6IDU2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNTYgewogICAgbWFyZ2luLWJvdHRvbTogNTZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTU2IHsKICAgIG1hcmdpbi1yaWdodDogNTZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC01NyB7CiAgICBtYXJnaW4tdG9wOiA1N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC01NyB7CiAgICBtYXJnaW4tbGVmdDogNTdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS01NyB7CiAgICBtYXJnaW4tYm90dG9tOiA1N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNTcgewogICAgbWFyZ2luLXJpZ2h0OiA1N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTU4IHsKICAgIG1hcmdpbi10b3A6IDU4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTU4IHsKICAgIG1hcmdpbi1sZWZ0OiA1OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTU4IHsKICAgIG1hcmdpbi1ib3R0b206IDU4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC01OCB7CiAgICBtYXJnaW4tcmlnaHQ6IDU4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNTkgewogICAgbWFyZ2luLXRvcDogNTlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNTkgewogICAgbWFyZ2luLWxlZnQ6IDU5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNTkgewogICAgbWFyZ2luLWJvdHRvbTogNTlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTU5IHsKICAgIG1hcmdpbi1yaWdodDogNTlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC02MCB7CiAgICBtYXJnaW4tdG9wOiA2MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC02MCB7CiAgICBtYXJnaW4tbGVmdDogNjBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS02MCB7CiAgICBtYXJnaW4tYm90dG9tOiA2MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNjAgewogICAgbWFyZ2luLXJpZ2h0OiA2MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTYxIHsKICAgIG1hcmdpbi10b3A6IDYxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTYxIHsKICAgIG1hcmdpbi1sZWZ0OiA2MXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTYxIHsKICAgIG1hcmdpbi1ib3R0b206IDYxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC02MSB7CiAgICBtYXJnaW4tcmlnaHQ6IDYxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNjIgewogICAgbWFyZ2luLXRvcDogNjJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNjIgewogICAgbWFyZ2luLWxlZnQ6IDYycHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNjIgewogICAgbWFyZ2luLWJvdHRvbTogNjJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTYyIHsKICAgIG1hcmdpbi1yaWdodDogNjJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC02MyB7CiAgICBtYXJnaW4tdG9wOiA2M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC02MyB7CiAgICBtYXJnaW4tbGVmdDogNjNweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS02MyB7CiAgICBtYXJnaW4tYm90dG9tOiA2M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNjMgewogICAgbWFyZ2luLXJpZ2h0OiA2M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTY0IHsKICAgIG1hcmdpbi10b3A6IDY0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTY0IHsKICAgIG1hcmdpbi1sZWZ0OiA2NHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTY0IHsKICAgIG1hcmdpbi1ib3R0b206IDY0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC02NCB7CiAgICBtYXJnaW4tcmlnaHQ6IDY0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNjUgewogICAgbWFyZ2luLXRvcDogNjVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNjUgewogICAgbWFyZ2luLWxlZnQ6IDY1cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNjUgewogICAgbWFyZ2luLWJvdHRvbTogNjVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTY1IHsKICAgIG1hcmdpbi1yaWdodDogNjVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC02NiB7CiAgICBtYXJnaW4tdG9wOiA2NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC02NiB7CiAgICBtYXJnaW4tbGVmdDogNjZweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS02NiB7CiAgICBtYXJnaW4tYm90dG9tOiA2NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNjYgewogICAgbWFyZ2luLXJpZ2h0OiA2NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTY3IHsKICAgIG1hcmdpbi10b3A6IDY3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTY3IHsKICAgIG1hcmdpbi1sZWZ0OiA2N3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTY3IHsKICAgIG1hcmdpbi1ib3R0b206IDY3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC02NyB7CiAgICBtYXJnaW4tcmlnaHQ6IDY3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNjggewogICAgbWFyZ2luLXRvcDogNjhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNjggewogICAgbWFyZ2luLWxlZnQ6IDY4cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNjggewogICAgbWFyZ2luLWJvdHRvbTogNjhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTY4IHsKICAgIG1hcmdpbi1yaWdodDogNjhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC02OSB7CiAgICBtYXJnaW4tdG9wOiA2OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC02OSB7CiAgICBtYXJnaW4tbGVmdDogNjlweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS02OSB7CiAgICBtYXJnaW4tYm90dG9tOiA2OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNjkgewogICAgbWFyZ2luLXJpZ2h0OiA2OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTcwIHsKICAgIG1hcmdpbi10b3A6IDcwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTcwIHsKICAgIG1hcmdpbi1sZWZ0OiA3MHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTcwIHsKICAgIG1hcmdpbi1ib3R0b206IDcwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC03MCB7CiAgICBtYXJnaW4tcmlnaHQ6IDcwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNzEgewogICAgbWFyZ2luLXRvcDogNzFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNzEgewogICAgbWFyZ2luLWxlZnQ6IDcxcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNzEgewogICAgbWFyZ2luLWJvdHRvbTogNzFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTcxIHsKICAgIG1hcmdpbi1yaWdodDogNzFweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC03MiB7CiAgICBtYXJnaW4tdG9wOiA3MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC03MiB7CiAgICBtYXJnaW4tbGVmdDogNzJweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS03MiB7CiAgICBtYXJnaW4tYm90dG9tOiA3MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNzIgewogICAgbWFyZ2luLXJpZ2h0OiA3MnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTczIHsKICAgIG1hcmdpbi10b3A6IDczcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTczIHsKICAgIG1hcmdpbi1sZWZ0OiA3M3B4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTczIHsKICAgIG1hcmdpbi1ib3R0b206IDczcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC03MyB7CiAgICBtYXJnaW4tcmlnaHQ6IDczcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNzQgewogICAgbWFyZ2luLXRvcDogNzRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNzQgewogICAgbWFyZ2luLWxlZnQ6IDc0cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNzQgewogICAgbWFyZ2luLWJvdHRvbTogNzRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTc0IHsKICAgIG1hcmdpbi1yaWdodDogNzRweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC03NSB7CiAgICBtYXJnaW4tdG9wOiA3NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC03NSB7CiAgICBtYXJnaW4tbGVmdDogNzVweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS03NSB7CiAgICBtYXJnaW4tYm90dG9tOiA3NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNzUgewogICAgbWFyZ2luLXJpZ2h0OiA3NXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTc2IHsKICAgIG1hcmdpbi10b3A6IDc2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTc2IHsKICAgIG1hcmdpbi1sZWZ0OiA3NnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTc2IHsKICAgIG1hcmdpbi1ib3R0b206IDc2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC03NiB7CiAgICBtYXJnaW4tcmlnaHQ6IDc2cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtNzcgewogICAgbWFyZ2luLXRvcDogNzdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtNzcgewogICAgbWFyZ2luLWxlZnQ6IDc3cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tNzcgewogICAgbWFyZ2luLWJvdHRvbTogNzdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTc3IHsKICAgIG1hcmdpbi1yaWdodDogNzdweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXRvcC03OCB7CiAgICBtYXJnaW4tdG9wOiA3OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tbGVmdC03OCB7CiAgICBtYXJnaW4tbGVmdDogNzhweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWJvdHRvbS03OCB7CiAgICBtYXJnaW4tYm90dG9tOiA3OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tcmlnaHQtNzggewogICAgbWFyZ2luLXJpZ2h0OiA3OHB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tdG9wLTc5IHsKICAgIG1hcmdpbi10b3A6IDc5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1sZWZ0LTc5IHsKICAgIG1hcmdpbi1sZWZ0OiA3OXB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXJnaW4tYm90dG9tLTc5IHsKICAgIG1hcmdpbi1ib3R0b206IDc5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1yaWdodC03OSB7CiAgICBtYXJnaW4tcmlnaHQ6IDc5cHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi10b3AtODAgewogICAgbWFyZ2luLXRvcDogODBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLWxlZnQtODAgewogICAgbWFyZ2luLWxlZnQ6IDgwcHggIWltcG9ydGFudDsKfQoKLm1hcmdpbi1ib3R0b20tODAgewogICAgbWFyZ2luLWJvdHRvbTogODBweCAhaW1wb3J0YW50Owp9CgoubWFyZ2luLXJpZ2h0LTgwIHsKICAgIG1hcmdpbi1yaWdodDogODBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMSB7CiAgICBwYWRkaW5nLXRvcDogMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTEgewogICAgcGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0yIHsKICAgIHBhZGRpbmctdG9wOiAycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0yIHsKICAgIHBhZGRpbmctbGVmdDogMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTMgewogICAgcGFkZGluZy10b3A6IDNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTMgewogICAgcGFkZGluZy1sZWZ0OiAzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTMgewogICAgcGFkZGluZy1ib3R0b206IDNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNCB7CiAgICBwYWRkaW5nLXRvcDogNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTQgewogICAgcGFkZGluZy1yaWdodDogNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC01IHsKICAgIHBhZGRpbmctdG9wOiA1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC01IHsKICAgIHBhZGRpbmctbGVmdDogNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS01IHsKICAgIHBhZGRpbmctYm90dG9tOiA1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTYgewogICAgcGFkZGluZy10b3A6IDZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTYgewogICAgcGFkZGluZy1sZWZ0OiA2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTYgewogICAgcGFkZGluZy1ib3R0b206IDZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC02IHsKICAgIHBhZGRpbmctcmlnaHQ6IDZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNyB7CiAgICBwYWRkaW5nLXRvcDogN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNyB7CiAgICBwYWRkaW5nLWxlZnQ6IDdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNyB7CiAgICBwYWRkaW5nLWJvdHRvbTogN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTcgewogICAgcGFkZGluZy1yaWdodDogN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC04IHsKICAgIHBhZGRpbmctdG9wOiA4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC04IHsKICAgIHBhZGRpbmctbGVmdDogOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS04IHsKICAgIHBhZGRpbmctYm90dG9tOiA4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtOCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTkgewogICAgcGFkZGluZy10b3A6IDlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTkgewogICAgcGFkZGluZy1sZWZ0OiA5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTkgewogICAgcGFkZGluZy1ib3R0b206IDlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC05IHsKICAgIHBhZGRpbmctcmlnaHQ6IDlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMTAgewogICAgcGFkZGluZy10b3A6IDEwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0xMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTEwIHsKICAgIHBhZGRpbmctYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTEwIHsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTExIHsKICAgIHBhZGRpbmctdG9wOiAxMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMTEgewogICAgcGFkZGluZy1sZWZ0OiAxMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0xMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMTFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0xMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0xMiB7CiAgICBwYWRkaW5nLXRvcDogMTJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTEyIHsKICAgIHBhZGRpbmctbGVmdDogMTJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMTIgewogICAgcGFkZGluZy1ib3R0b206IDEycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMTIgewogICAgcGFkZGluZy1yaWdodDogMTJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMTMgewogICAgcGFkZGluZy10b3A6IDEzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0xMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDEzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTEzIHsKICAgIHBhZGRpbmctYm90dG9tOiAxM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTEzIHsKICAgIHBhZGRpbmctcmlnaHQ6IDEzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTE0IHsKICAgIHBhZGRpbmctdG9wOiAxNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMTQgewogICAgcGFkZGluZy1sZWZ0OiAxNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0xNCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMTRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0xNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0xNSB7CiAgICBwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTE1IHsKICAgIHBhZGRpbmctbGVmdDogMTVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMTUgewogICAgcGFkZGluZy1ib3R0b206IDE1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMTUgewogICAgcGFkZGluZy1yaWdodDogMTVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMTYgewogICAgcGFkZGluZy10b3A6IDE2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0xNiB7CiAgICBwYWRkaW5nLWxlZnQ6IDE2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTE2IHsKICAgIHBhZGRpbmctYm90dG9tOiAxNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTE2IHsKICAgIHBhZGRpbmctcmlnaHQ6IDE2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTE3IHsKICAgIHBhZGRpbmctdG9wOiAxN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMTcgewogICAgcGFkZGluZy1sZWZ0OiAxN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0xNyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMTdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0xNyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0xOCB7CiAgICBwYWRkaW5nLXRvcDogMThweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTE4IHsKICAgIHBhZGRpbmctbGVmdDogMThweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMTggewogICAgcGFkZGluZy1ib3R0b206IDE4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMTggewogICAgcGFkZGluZy1yaWdodDogMThweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMTkgewogICAgcGFkZGluZy10b3A6IDE5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0xOSB7CiAgICBwYWRkaW5nLWxlZnQ6IDE5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTE5IHsKICAgIHBhZGRpbmctYm90dG9tOiAxOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTE5IHsKICAgIHBhZGRpbmctcmlnaHQ6IDE5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTIwIHsKICAgIHBhZGRpbmctdG9wOiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMjAgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0yMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0yMCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0yMSB7CiAgICBwYWRkaW5nLXRvcDogMjFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTIxIHsKICAgIHBhZGRpbmctbGVmdDogMjFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMjEgewogICAgcGFkZGluZy1ib3R0b206IDIxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMjEgewogICAgcGFkZGluZy1yaWdodDogMjFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMjIgewogICAgcGFkZGluZy10b3A6IDIycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0yMiB7CiAgICBwYWRkaW5nLWxlZnQ6IDIycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTIyIHsKICAgIHBhZGRpbmctYm90dG9tOiAyMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTIyIHsKICAgIHBhZGRpbmctcmlnaHQ6IDIycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTIzIHsKICAgIHBhZGRpbmctdG9wOiAyM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMjMgewogICAgcGFkZGluZy1sZWZ0OiAyM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0yMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0yMyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyM3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0yNCB7CiAgICBwYWRkaW5nLXRvcDogMjRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTI0IHsKICAgIHBhZGRpbmctbGVmdDogMjRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMjQgewogICAgcGFkZGluZy1ib3R0b206IDI0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMjQgewogICAgcGFkZGluZy1yaWdodDogMjRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMjUgewogICAgcGFkZGluZy10b3A6IDI1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0yNSB7CiAgICBwYWRkaW5nLWxlZnQ6IDI1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTI1IHsKICAgIHBhZGRpbmctYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTI1IHsKICAgIHBhZGRpbmctcmlnaHQ6IDI1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTI2IHsKICAgIHBhZGRpbmctdG9wOiAyNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMjYgewogICAgcGFkZGluZy1sZWZ0OiAyNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0yNiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0yNiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0yNyB7CiAgICBwYWRkaW5nLXRvcDogMjdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTI3IHsKICAgIHBhZGRpbmctbGVmdDogMjdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMjcgewogICAgcGFkZGluZy1ib3R0b206IDI3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMjcgewogICAgcGFkZGluZy1yaWdodDogMjdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMjggewogICAgcGFkZGluZy10b3A6IDI4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0yOCB7CiAgICBwYWRkaW5nLWxlZnQ6IDI4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTI4IHsKICAgIHBhZGRpbmctYm90dG9tOiAyOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTI4IHsKICAgIHBhZGRpbmctcmlnaHQ6IDI4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTI5IHsKICAgIHBhZGRpbmctdG9wOiAyOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMjkgewogICAgcGFkZGluZy1sZWZ0OiAyOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0yOSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0yOSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyOXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0zMCB7CiAgICBwYWRkaW5nLXRvcDogMzBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTMwIHsKICAgIHBhZGRpbmctbGVmdDogMzBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMzAgewogICAgcGFkZGluZy1ib3R0b206IDMwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMzAgewogICAgcGFkZGluZy1yaWdodDogMzBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMzEgewogICAgcGFkZGluZy10b3A6IDMxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0zMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDMxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTMxIHsKICAgIHBhZGRpbmctYm90dG9tOiAzMXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTMxIHsKICAgIHBhZGRpbmctcmlnaHQ6IDMxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTMyIHsKICAgIHBhZGRpbmctdG9wOiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMzIgewogICAgcGFkZGluZy1sZWZ0OiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0zMiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMzJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0zMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0zMyB7CiAgICBwYWRkaW5nLXRvcDogMzNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTMzIHsKICAgIHBhZGRpbmctbGVmdDogMzNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMzMgewogICAgcGFkZGluZy1ib3R0b206IDMzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMzMgewogICAgcGFkZGluZy1yaWdodDogMzNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMzQgewogICAgcGFkZGluZy10b3A6IDM0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0zNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDM0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTM0IHsKICAgIHBhZGRpbmctYm90dG9tOiAzNHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTM0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDM0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTM1IHsKICAgIHBhZGRpbmctdG9wOiAzNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMzUgewogICAgcGFkZGluZy1sZWZ0OiAzNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0zNSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMzVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0zNSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzNXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0zNiB7CiAgICBwYWRkaW5nLXRvcDogMzZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTM2IHsKICAgIHBhZGRpbmctbGVmdDogMzZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMzYgewogICAgcGFkZGluZy1ib3R0b206IDM2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMzYgewogICAgcGFkZGluZy1yaWdodDogMzZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtMzcgewogICAgcGFkZGluZy10b3A6IDM3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC0zNyB7CiAgICBwYWRkaW5nLWxlZnQ6IDM3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTM3IHsKICAgIHBhZGRpbmctYm90dG9tOiAzN3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTM3IHsKICAgIHBhZGRpbmctcmlnaHQ6IDM3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTM4IHsKICAgIHBhZGRpbmctdG9wOiAzOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtMzggewogICAgcGFkZGluZy1sZWZ0OiAzOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS0zOCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMzhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC0zOCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzOHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC0zOSB7CiAgICBwYWRkaW5nLXRvcDogMzlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTM5IHsKICAgIHBhZGRpbmctbGVmdDogMzlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tMzkgewogICAgcGFkZGluZy1ib3R0b206IDM5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtMzkgewogICAgcGFkZGluZy1yaWdodDogMzlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNDAgewogICAgcGFkZGluZy10b3A6IDQwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC00MCB7CiAgICBwYWRkaW5nLWxlZnQ6IDQwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTQwIHsKICAgIHBhZGRpbmctYm90dG9tOiA0MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTQwIHsKICAgIHBhZGRpbmctcmlnaHQ6IDQwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTQxIHsKICAgIHBhZGRpbmctdG9wOiA0MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNDEgewogICAgcGFkZGluZy1sZWZ0OiA0MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS00MSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNDFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC00MSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC00MiB7CiAgICBwYWRkaW5nLXRvcDogNDJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTQyIHsKICAgIHBhZGRpbmctbGVmdDogNDJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNDIgewogICAgcGFkZGluZy1ib3R0b206IDQycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNDIgewogICAgcGFkZGluZy1yaWdodDogNDJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNDMgewogICAgcGFkZGluZy10b3A6IDQzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC00MyB7CiAgICBwYWRkaW5nLWxlZnQ6IDQzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTQzIHsKICAgIHBhZGRpbmctYm90dG9tOiA0M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTQzIHsKICAgIHBhZGRpbmctcmlnaHQ6IDQzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTQ0IHsKICAgIHBhZGRpbmctdG9wOiA0NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNDQgewogICAgcGFkZGluZy1sZWZ0OiA0NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS00NCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNDRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC00NCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC00NSB7CiAgICBwYWRkaW5nLXRvcDogNDVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTQ1IHsKICAgIHBhZGRpbmctbGVmdDogNDVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNDUgewogICAgcGFkZGluZy1ib3R0b206IDQ1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNDUgewogICAgcGFkZGluZy1yaWdodDogNDVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNDYgewogICAgcGFkZGluZy10b3A6IDQ2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC00NiB7CiAgICBwYWRkaW5nLWxlZnQ6IDQ2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTQ2IHsKICAgIHBhZGRpbmctYm90dG9tOiA0NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTQ2IHsKICAgIHBhZGRpbmctcmlnaHQ6IDQ2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTQ3IHsKICAgIHBhZGRpbmctdG9wOiA0N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNDcgewogICAgcGFkZGluZy1sZWZ0OiA0N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS00NyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNDdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC00NyB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC00OCB7CiAgICBwYWRkaW5nLXRvcDogNDhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTQ4IHsKICAgIHBhZGRpbmctbGVmdDogNDhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNDggewogICAgcGFkZGluZy1ib3R0b206IDQ4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNDggewogICAgcGFkZGluZy1yaWdodDogNDhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNDkgewogICAgcGFkZGluZy10b3A6IDQ5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC00OSB7CiAgICBwYWRkaW5nLWxlZnQ6IDQ5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTQ5IHsKICAgIHBhZGRpbmctYm90dG9tOiA0OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTQ5IHsKICAgIHBhZGRpbmctcmlnaHQ6IDQ5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTUwIHsKICAgIHBhZGRpbmctdG9wOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNTAgewogICAgcGFkZGluZy1sZWZ0OiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS01MCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC01MCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC01MSB7CiAgICBwYWRkaW5nLXRvcDogNTFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTUxIHsKICAgIHBhZGRpbmctbGVmdDogNTFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNTEgewogICAgcGFkZGluZy1ib3R0b206IDUxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNTEgewogICAgcGFkZGluZy1yaWdodDogNTFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNTIgewogICAgcGFkZGluZy10b3A6IDUycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC01MiB7CiAgICBwYWRkaW5nLWxlZnQ6IDUycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTUyIHsKICAgIHBhZGRpbmctYm90dG9tOiA1MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTUyIHsKICAgIHBhZGRpbmctcmlnaHQ6IDUycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTUzIHsKICAgIHBhZGRpbmctdG9wOiA1M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNTMgewogICAgcGFkZGluZy1sZWZ0OiA1M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS01MyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC01MyB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC01NCB7CiAgICBwYWRkaW5nLXRvcDogNTRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTU0IHsKICAgIHBhZGRpbmctbGVmdDogNTRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNTQgewogICAgcGFkZGluZy1ib3R0b206IDU0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNTQgewogICAgcGFkZGluZy1yaWdodDogNTRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNTUgewogICAgcGFkZGluZy10b3A6IDU1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC01NSB7CiAgICBwYWRkaW5nLWxlZnQ6IDU1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTU1IHsKICAgIHBhZGRpbmctYm90dG9tOiA1NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTU1IHsKICAgIHBhZGRpbmctcmlnaHQ6IDU1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTU2IHsKICAgIHBhZGRpbmctdG9wOiA1NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNTYgewogICAgcGFkZGluZy1sZWZ0OiA1NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS01NiB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC01NiB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC01NyB7CiAgICBwYWRkaW5nLXRvcDogNTdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTU3IHsKICAgIHBhZGRpbmctbGVmdDogNTdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNTcgewogICAgcGFkZGluZy1ib3R0b206IDU3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNTcgewogICAgcGFkZGluZy1yaWdodDogNTdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNTggewogICAgcGFkZGluZy10b3A6IDU4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC01OCB7CiAgICBwYWRkaW5nLWxlZnQ6IDU4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTU4IHsKICAgIHBhZGRpbmctYm90dG9tOiA1OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTU4IHsKICAgIHBhZGRpbmctcmlnaHQ6IDU4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTU5IHsKICAgIHBhZGRpbmctdG9wOiA1OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNTkgewogICAgcGFkZGluZy1sZWZ0OiA1OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS01OSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC01OSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC02MCB7CiAgICBwYWRkaW5nLXRvcDogNjBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTYwIHsKICAgIHBhZGRpbmctbGVmdDogNjBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNjAgewogICAgcGFkZGluZy1ib3R0b206IDYwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNjAgewogICAgcGFkZGluZy1yaWdodDogNjBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNjEgewogICAgcGFkZGluZy10b3A6IDYxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC02MSB7CiAgICBwYWRkaW5nLWxlZnQ6IDYxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTYxIHsKICAgIHBhZGRpbmctYm90dG9tOiA2MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTYxIHsKICAgIHBhZGRpbmctcmlnaHQ6IDYxcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTYyIHsKICAgIHBhZGRpbmctdG9wOiA2MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNjIgewogICAgcGFkZGluZy1sZWZ0OiA2MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS02MiB7CiAgICBwYWRkaW5nLWJvdHRvbTogNjJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC02MiB7CiAgICBwYWRkaW5nLXJpZ2h0OiA2MnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC02MyB7CiAgICBwYWRkaW5nLXRvcDogNjNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTYzIHsKICAgIHBhZGRpbmctbGVmdDogNjNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNjMgewogICAgcGFkZGluZy1ib3R0b206IDYzcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNjMgewogICAgcGFkZGluZy1yaWdodDogNjNweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNjQgewogICAgcGFkZGluZy10b3A6IDY0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC02NCB7CiAgICBwYWRkaW5nLWxlZnQ6IDY0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTY0IHsKICAgIHBhZGRpbmctYm90dG9tOiA2NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTY0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDY0cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTY1IHsKICAgIHBhZGRpbmctdG9wOiA2NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNjUgewogICAgcGFkZGluZy1sZWZ0OiA2NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS02NSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNjVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC02NSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA2NXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC02NiB7CiAgICBwYWRkaW5nLXRvcDogNjZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTY2IHsKICAgIHBhZGRpbmctbGVmdDogNjZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNjYgewogICAgcGFkZGluZy1ib3R0b206IDY2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNjYgewogICAgcGFkZGluZy1yaWdodDogNjZweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNjcgewogICAgcGFkZGluZy10b3A6IDY3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC02NyB7CiAgICBwYWRkaW5nLWxlZnQ6IDY3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTY3IHsKICAgIHBhZGRpbmctYm90dG9tOiA2N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTY3IHsKICAgIHBhZGRpbmctcmlnaHQ6IDY3cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTY4IHsKICAgIHBhZGRpbmctdG9wOiA2OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNjggewogICAgcGFkZGluZy1sZWZ0OiA2OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS02OCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNjhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC02OCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA2OHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC02OSB7CiAgICBwYWRkaW5nLXRvcDogNjlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTY5IHsKICAgIHBhZGRpbmctbGVmdDogNjlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNjkgewogICAgcGFkZGluZy1ib3R0b206IDY5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNjkgewogICAgcGFkZGluZy1yaWdodDogNjlweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNzAgewogICAgcGFkZGluZy10b3A6IDcwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC03MCB7CiAgICBwYWRkaW5nLWxlZnQ6IDcwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTcwIHsKICAgIHBhZGRpbmctYm90dG9tOiA3MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTcwIHsKICAgIHBhZGRpbmctcmlnaHQ6IDcwcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTcxIHsKICAgIHBhZGRpbmctdG9wOiA3MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNzEgewogICAgcGFkZGluZy1sZWZ0OiA3MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS03MSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzFweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC03MSB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3MXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC03MiB7CiAgICBwYWRkaW5nLXRvcDogNzJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTcyIHsKICAgIHBhZGRpbmctbGVmdDogNzJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNzIgewogICAgcGFkZGluZy1ib3R0b206IDcycHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNzIgewogICAgcGFkZGluZy1yaWdodDogNzJweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNzMgewogICAgcGFkZGluZy10b3A6IDczcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC03MyB7CiAgICBwYWRkaW5nLWxlZnQ6IDczcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTczIHsKICAgIHBhZGRpbmctYm90dG9tOiA3M3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTczIHsKICAgIHBhZGRpbmctcmlnaHQ6IDczcHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTc0IHsKICAgIHBhZGRpbmctdG9wOiA3NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNzQgewogICAgcGFkZGluZy1sZWZ0OiA3NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS03NCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzRweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC03NCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3NHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC03NSB7CiAgICBwYWRkaW5nLXRvcDogNzVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTc1IHsKICAgIHBhZGRpbmctbGVmdDogNzVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNzUgewogICAgcGFkZGluZy1ib3R0b206IDc1cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNzUgewogICAgcGFkZGluZy1yaWdodDogNzVweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNzYgewogICAgcGFkZGluZy10b3A6IDc2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC03NiB7CiAgICBwYWRkaW5nLWxlZnQ6IDc2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTc2IHsKICAgIHBhZGRpbmctYm90dG9tOiA3NnB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTc2IHsKICAgIHBhZGRpbmctcmlnaHQ6IDc2cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTc3IHsKICAgIHBhZGRpbmctdG9wOiA3N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtNzcgewogICAgcGFkZGluZy1sZWZ0OiA3N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS03NyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzdweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC03NyB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3N3B4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXRvcC03OCB7CiAgICBwYWRkaW5nLXRvcDogNzhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1sZWZ0LTc4IHsKICAgIHBhZGRpbmctbGVmdDogNzhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1ib3R0b20tNzggewogICAgcGFkZGluZy1ib3R0b206IDc4cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctcmlnaHQtNzggewogICAgcGFkZGluZy1yaWdodDogNzhweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy10b3AtNzkgewogICAgcGFkZGluZy10b3A6IDc5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctbGVmdC03OSB7CiAgICBwYWRkaW5nLWxlZnQ6IDc5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctYm90dG9tLTc5IHsKICAgIHBhZGRpbmctYm90dG9tOiA3OXB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLXJpZ2h0LTc5IHsKICAgIHBhZGRpbmctcmlnaHQ6IDc5cHggIWltcG9ydGFudDsKfQoKLnBhZGRpbmctdG9wLTgwIHsKICAgIHBhZGRpbmctdG9wOiA4MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWxlZnQtODAgewogICAgcGFkZGluZy1sZWZ0OiA4MHB4ICFpbXBvcnRhbnQ7Cn0KCi5wYWRkaW5nLWJvdHRvbS04MCB7CiAgICBwYWRkaW5nLWJvdHRvbTogODBweCAhaW1wb3J0YW50Owp9CgoucGFkZGluZy1yaWdodC04MCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA4MHB4ICFpbXBvcnRhbnQ7Cn0KCkBrZXlmcmFtZXMgcm90YXRlX2ljb24gewogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZV9pY29uIHsKICAgIDEwMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgc2NhbGVfaWNvbiB7CiAgICBmb3JtIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICB9CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNjYWxlX2ljb24gewogICAgZm9ybSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgICAgICAtby10cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUljb24gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgfQogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIHNsaWRlSWNvbiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgfQogICAgNTAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgc2NhbGVfaWNvbl9tYXAgewogICAgZm9ybSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMS4yKTsKICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDEuMik7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDEuMik7CiAgICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMS4yKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgxLjIpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2NhbGVfaWNvbl9tYXAgewogICAgZm9ybSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMS4yKTsKICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDEuMik7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDEuMik7CiAgICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMS4yKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgxLjIpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgfQp9CgpAa2V5ZnJhbWVzIHJvdGF0ZV9pY29uIHsKICAgIDEwMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVfaWNvbiB7CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgfQp9CgovKiAxLiBiYXNlICovCgoud3AtYmxvY2staW1hZ2UsCi53cC1ibG9jay1nYWxsZXJ5IHsKICAgIG1hcmdpbi1ib3R0b206IDI4cHg7Cn0KCi5mb3JtLWNvbnRyb2wgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKfQoKZmlnY2FwdGlvbiB7CiAgICBtYXJnaW4tdG9wOiAxNXB4Owp9CgpidXR0b24sCi5idG4sCmEgewogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50Owp9CgoubWZwLWNvbnRhaW5lciB7CiAgICBvdmVyZmxvdy14OiBoaWRkZW47Cn0KCmZpZWxkc2V0IHsKICAgIGNsZWFyOiBib3RoOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnBvc3QtcGFzc3dvcmQtZm9ybSBpbnB1dCB7CiAgICBoZWlnaHQ6IDQzcHg7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKfQoKLnBvc3QtcGFzc3dvcmQtZm9ybSBpbnB1dFt0eXBlPSJzdWJtaXQiXSB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiA1cHggMjVweDsKfQoKLnBvc3QtcGFzc3dvcmQtZm9ybSBpbnB1dFt0eXBlPSJzdWJtaXQiXTpob3ZlciwKLnBvc3QtcGFzc3dvcmQtZm9ybSBpbnB1dFt0eXBlPSJzdWJtaXQiXTphY3RpdmUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZmYyNzJlOwp9CgouYnRuLXNlYXJjaC10b3AgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouaW5wdXQtZ3JvdXAgLmJ0biB7CiAgICBib3JkZXItd2lkdGg6IDFweDsKfQoKYTpmb2N1cywKLmJ0bjpmb2N1cyB7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cn0KCi5saXN0LAoubGlzdC1ubyB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKfQoKLm1lZGlhLWJvZHkgewogICAgd2lkdGg6IDEwMDAwcHg7Cn0KCi5idG4sCmJ1dHRvbiB7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cn0KCjo6LW1vei1zZWxlY3Rpb24gewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjMjQzMjRhOwp9Cgo6OnNlbGVjdGlvbiB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICMyNDMyNGE7Cn0KCi5wc3dwX19pdGVtIHsKICAgIGN1cnNvcjogbW92ZTsKfQoKLm5vLWJvcmRlciB7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQoKLm5vLWJvcmRlcjpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Cgoud3BiX3dpZGdldGlzZWRfY29sdW1uIHsKICAgIG1hcmdpbjogMDsKfQoKLnRvcG1lbnUtbWVudS1saW5lIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwp9CgoudG9wbWVudS1tZW51LWxpbmUgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLnRvcG1lbnUtbWVudS1saW5lIGxpIC5zcGFjZSB7CiAgICBtYXJnaW46IDAgM3B4Owp9CgoudG9wLW1lbnUtbW9iaWxlIC50aXRsZSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBwYWRkaW5nOiAwIDE1cHg7CiAgICBtYXJnaW46IDAgMCAxNXB4Owp9CgoudG9wLW1lbnUtbW9iaWxlIC5uYXZiYXItbmF2PmxpPmEgewogICAgcGFkZGluZzogMnB4IDE1cHg7Cn0KCi5hcHVzLW1mcC16b29tLWluLm1mcC1iZyB7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5hcHVzLW1mcC16b29tLWluLm1mcC1iZy5tZnAtcmVhZHkgewogICAgb3BhY2l0eTogMC44OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTsKfQoKLmFwdXMtbWZwLXpvb20taW4ubWZwLWJnLm1mcC1yZW1vdmluZyB7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwp9CgouYXB1cy1tZnAtem9vbS1pbi5tZnAtd3JhcCAubWZwLWNvbnRlbnQgewogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yNSUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjUlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjUlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjUlKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgouYXB1cy1tZnAtem9vbS1pbi5tZnAtd3JhcC5tZnAtcmVhZHkgLm1mcC1jb250ZW50IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLmFwdXMtbWZwLXpvb20taW4ubWZwLXdyYXAubWZwLXJlbW92aW5nIC5tZnAtY29udGVudCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjUlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI1JSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI1JSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI1JSk7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwp9CgoubG9naW4tcG9wdXAgLm1mcC1jb250ZW50IHsKICAgIG1heC13aWR0aDogODEwcHg7Cn0KCi5sb2dpbi1wb3B1cCAubWZwLWNvbnRlbnQgLm1zZy1pbm5lciB7CiAgICBwYWRkaW5nOiAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubG9naW4tcG9wdXAgLm1mcC1jb250ZW50IC5tc2ctaW5uZXIgewogICAgICAgIHBhZGRpbmc6IDMwcHg7CiAgICB9Cn0KCi5sb2dpbi1wb3B1cC5tZnAtcmVhZHkgLm1mcC1jb250ZW50IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5sb2dpbi1wb3B1cCAubWZwLWNsb3NlIHsKICAgIGJvcmRlcjogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICB0b3A6IDE4cHg7CiAgICByaWdodDogMTVweDsKICAgIGNvbG9yOiAjMDA2YzcwOwogICAgZm9udC1zaXplOiAzMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5ydGwgLmxvZ2luLXBvcHVwIC5tZnAtY2xvc2UgewogICAgbGVmdDogMTVweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoubG9naW4tcG9wdXAgLm1mcC1jbG9zZTpob3ZlciwKLmxvZ2luLXBvcHVwIC5tZnAtY2xvc2U6Zm9jdXMgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi5tZnAtd3JhcCAubWZwLWNvbnRlbnQgewogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI1JSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yNSUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yNSUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yNSUpOwp9CgoubWZwLXdyYXAubWZwLXJlYWR5IC5tZnAtY29udGVudCB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KCi5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIHdpZHRoOiA5MCU7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIGJhY2tncm91bmQ6ICNmZmY7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IHsKICAgICAgICB3aWR0aDogMTIwMHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IDQwMHB4OwogICAgfQp9CgouYXB1cy1xdWlja3ZpZXcgLm1mcC1pbmxpbmUtaG9sZGVyIC5tZnAtY29udGVudCAuZGV0YWlscy1wcm9kdWN0IHsKICAgIHBhZGRpbmc6IDM1cHggMjBweCAyMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IC5kZXRhaWxzLXByb2R1Y3QgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICB9Cn0KCi5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IC53b29jb21tZXJjZS1wcm9kdWN0LWRldGFpbHNfX3Nob3J0LWRlc2NyaXB0aW9uLXdyYXBwZXIgewogICAgb3ZlcmZsb3c6IGF1dG87Cn0KCi5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IC5pbmZvcm1hdGlvbi13cmFwcGVyIHsKICAgIHBhZGRpbmctdG9wOiAzMHB4OwogICAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IC53cmFwcGVyLWltZy1tYWluIHsKICAgICAgICBwYWRkaW5nOiAzMHB4IDAgMzBweCAzMHB4OwogICAgfQogICAgLnJ0bCAuYXB1cy1xdWlja3ZpZXcgLm1mcC1pbmxpbmUtaG9sZGVyIC5tZnAtY29udGVudCAud3JhcHBlci1pbWctbWFpbiB7CiAgICAgICAgcGFkZGluZzogMzBweCAzMHB4IDMwcHggMDsKICAgIH0KICAgIC5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IC5pbmZvcm1hdGlvbiB7CiAgICAgICAgcGFkZGluZzogMCAzMHB4IDAgMDsKICAgIH0KICAgIC5ydGwgLmFwdXMtcXVpY2t2aWV3IC5tZnAtaW5saW5lLWhvbGRlciAubWZwLWNvbnRlbnQgLmluZm9ybWF0aW9uIHsKICAgICAgICBwYWRkaW5nOiAwIDAgMCAzMHB4OwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIC5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IC5kZXRhaWxzLXByb2R1Y3QgLmluZm9ybWF0aW9uIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTBweDsKICAgIH0KfQoKLmFwdXMtcXVpY2t2aWV3IC5tZnAtaW5saW5lLWhvbGRlciAubWZwLWNvbnRlbnQgLm1mcC1jbG9zZSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBmb250LXNpemU6IDMwcHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKfQoKLmFwdXMtcXVpY2t2aWV3IC5tZnAtaW5saW5lLWhvbGRlciAubWZwLWNvbnRlbnQgLm1mcC1jbG9zZTpob3ZlciwKLmFwdXMtcXVpY2t2aWV3IC5tZnAtaW5saW5lLWhvbGRlciAubWZwLWNvbnRlbnQgLm1mcC1jbG9zZTphY3RpdmUgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IC53cmFwcGVyLXRodW1icyB7CiAgICBtYXJnaW4tdG9wOiAxNnB4Owp9CgouYXB1cy1xdWlja3ZpZXcgLm1mcC1pbmxpbmUtaG9sZGVyIC5tZnAtY29udGVudCAuc2xpY2stY2Fyb3VzZWwgewogICAgbWFyZ2luLWxlZnQ6IC04cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC04cHg7Cn0KCi5hcHVzLXF1aWNrdmlldyAubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50IC5zbGljay1jYXJvdXNlbCAuc2xpY2stc2xpZGUgewogICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7Cn0KCi5hY3Rpb24gLmNhcmV0IHsKICAgIHdpZHRoOiA4cHg7CiAgICBoZWlnaHQ6IDhweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmFjdGlvblthcmlhLWV4cGFuZGVkPSJ0cnVlIl0gYiB7CiAgICBib3JkZXI6IG5vbmU7Cn0KCi5hY3Rpb25bYXJpYS1leHBhbmRlZD0idHJ1ZSJdIGI6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTsKICAgIGNvbnRlbnQ6ICJcZjAwZCI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgZm9udC1zaXplOiAxMnB4Owp9CgppbnMgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgppbWcgewogICAgYm9yZGVyOiAwOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKfQoKLnZpZGVvLXJlc3BvbnNpdmUgewogICAgaGVpZ2h0OiAwOwogICAgcGFkZGluZy10b3A6IDA7CiAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi52aWRlby1yZXNwb25zaXZlIGVtYmVkLAoudmlkZW8tcmVzcG9uc2l2ZSBpZnJhbWUsCi52aWRlby1yZXNwb25zaXZlIG9iamVjdCwKLnZpZGVvLXJlc3BvbnNpdmUgdmlkZW8gewogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9CgouYXVkaW8tcmVzcG9uc2l2ZSBpZnJhbWUgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEyNnB4Owp9Cgp1bC5saXN0LXNxdWFyZSB7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKfQoKdWwubGlzdC1zcXVhcmU+bGkgewogICAgbGluZS1oZWlnaHQ6IDM1cHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXJnaW46IDA7Cn0KCnVsLmxpc3Qtc3F1YXJlPmxpLmFjdGl2ZT5hLAp1bC5saXN0LXNxdWFyZT5saTpob3Zlcj5hIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9Cgp1bC5saXN0LXNxdWFyZT5saS5hY3RpdmU+YTpiZWZvcmUsCnVsLmxpc3Qtc3F1YXJlPmxpOmhvdmVyPmE6YmVmb3JlIHsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7Cn0KCnVsLmxpc3Qtc3F1YXJlPmxpPmEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDIxcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5ydGwgdWwubGlzdC1zcXVhcmU+bGk+YSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMXB4OwogICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0Owp9Cgp1bC5saXN0LXNxdWFyZT5saT5hOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIGJhY2tncm91bmQ6ICM0ODQ4NDg7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBsZWZ0OiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7Cn0KCi5ydGwgdWwubGlzdC1zcXVhcmU+bGk+YTpiZWZvcmUgewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvOwp9CgouYnJlYWRjcnVtYj5hK2xpOmJlZm9yZSwKLmJyZWFkY3J1bWI+bGkrYTpiZWZvcmUsCi5icmVhZGNydW1iPmxpK2xpOmJlZm9yZSB7CiAgICBjb2xvcjogIzc3Nzc3NyAhaW1wb3J0YW50OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgY29udGVudDogIlxmMTA1IjsKfQoKLmFwdXMtYnJlYWRzY3J1bWIgLmJyZWFkY3J1bWIgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5hcHVzLWJyZWFkc2NydW1iIC5icmVhZGNydW1iIC5hY3RpdmUgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5hcHVzLWJyZWFkc2NydW1iIC5icmVhZGNydW1iIGEgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKfQoKLmFwdXMtYnJlYWRzY3J1bWIgLmJyZWFkY3J1bWIgYTpob3ZlciwKLmFwdXMtYnJlYWRzY3J1bWIgLmJyZWFkY3J1bWIgYTpmb2N1cyB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmFwdXMtYnJlYWRzY3J1bWIgLndyYXBwZXItYnJlYWRzIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHBhZGRpbmc6IDIwcHggMDsKICAgIHdpZHRoOiAxMDAlOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYXB1cy1icmVhZHNjcnVtYiAud3JhcHBlci1icmVhZHMgewogICAgICAgIHBhZGRpbmc6IDUwcHggMDsKICAgIH0KfQoKLmFwdXMtYnJlYWRzY3J1bWIgLmJyZWFkLXRpdGxlIHsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgZm9udC1zaXplOiAyMHB4OwogICAgbWFyZ2luOiAwIDAgNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYXB1cy1icmVhZHNjcnVtYiAuYnJlYWQtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIH0KfQoKLmFwdXMtYnJlYWRzY3J1bWIuaG9yaXpvbnRhbCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTZlNmU2Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYXB1cy1icmVhZHNjcnVtYi5ob3Jpem9udGFsIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4NXB4OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYXB1cy1icmVhZHNjcnVtYi5ob3Jpem9udGFsIC53cmFwcGVyLWJyZWFkcyB7CiAgICAgICAgcGFkZGluZzogMzBweCAwOwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5hcHVzLWJyZWFkc2NydW1iLmhvcml6b250YWwgLndyYXBwZXItYnJlYWRzLWlubmVyIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAgICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgLW1zLWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB9CiAgICAuYXB1cy1icmVhZHNjcnVtYi5ob3Jpem9udGFsIC53cmFwcGVyLWJyZWFkcy1pbm5lciAubGVmdC1pbm5lciB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5hcHVzLWJyZWFkc2NydW1iLmhvcml6b250YWwgLndyYXBwZXItYnJlYWRzLWlubmVyIC5sZWZ0LWlubmVyIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9Cn0KCi5hcHVzLWJyZWFkc2NydW1iLmhhc19iZyB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFwdXMtYnJlYWRzY3J1bWIuaGFzX2JnIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQogICAgLmFwdXMtYnJlYWRzY3J1bWIuaGFzX2JnIC53cmFwcGVyLWJyZWFkcyB7CiAgICAgICAgcGFkZGluZzogMTUwcHggMDsKICAgIH0KfQoKLmFwdXMtYnJlYWRzY3J1bWIuaGFzX2JnIC5icmVhZGNydW1iIGEgewogICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICAgIG9wYWNpdHk6IDAuNjsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT02MCk7Cn0KCi5hcHVzLWJyZWFkc2NydW1iLmhhc19iZyAuYnJlYWRjcnVtYiBhOmhvdmVyLAouYXB1cy1icmVhZHNjcnVtYi5oYXNfYmcgLmJyZWFkY3J1bWIgYTpmb2N1cyB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5hcHVzLWJyZWFkc2NydW1iLmhhc19iZyBsaTpiZWZvcmUgewogICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICAgIG9wYWNpdHk6IDAuNjsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT02MCk7Cn0KCi5hcHVzLWJyZWFkc2NydW1iLmhhc19iZyAuYnJlYWQtdGl0bGUgewogICAgY29sb3I6ICNmZmY7Cn0KCi5hcHVzLWJyZWFkc2NydW1iIC5icmVhZGNydW1iIC5hY3RpdmUgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5hcHVzLWJyZWFkc2NydW1iIC5icmVhZGNydW1iIGEgewogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi5hcHVzLWJyZWFkc2NydW1iIC5icmVhZGNydW1iIGE6aG92ZXIsCi5hcHVzLWJyZWFkc2NydW1iIC5icmVhZGNydW1iIGE6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5zZWFyY2gtZm9ybSBpbnB1dCwKLnNlYXJjaC1mb3JtIC5idG4gewogICAgYmFja2dyb3VuZDogI2ViZWRlZTsKICAgIGJvcmRlci1jb2xvcjogI2ViZWRlZTsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9Cgouc2VhcmNoLWZvcm0gLmJ0biB7CiAgICBwYWRkaW5nOiAxMnB4IDE1cHg7Cn0KCi51aS1hdXRvY29tcGxldGUudWktd2lkZ2V0LWNvbnRlbnQgewogICAgcGFkZGluZzogMTVweDsKICAgIG1hcmdpbjogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgd2lkdGg6IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgYm94LXNoYWRvdzogMCAwIDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7Cn0KCi51aS1hdXRvY29tcGxldGUudWktd2lkZ2V0LWNvbnRlbnQgbGkgewogICAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi51aS1hdXRvY29tcGxldGUudWktd2lkZ2V0LWNvbnRlbnQgbGk6aG92ZXIgLnRlYW0tYWdlbnQtbGlzdC1sYWJlbCwKLnVpLWF1dG9jb21wbGV0ZS51aS13aWRnZXQtY29udGVudCBsaTpmb2N1cyAudGVhbS1hZ2VudC1saXN0LWxhYmVsIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoudWktYXV0b2NvbXBsZXRlLnVpLXdpZGdldC1jb250ZW50IGxpOmxhc3QtY2hpbGQgewogICAgYm9yZGVyOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKfQoKLmJnLWRhcmsgewogICAgYmFja2dyb3VuZDogIzI3MjcyNzsKICAgIGNvbG9yOiAjZmZmOwp9CgoudGV4dC1wdXJwbGUgewogICAgY29sb3I6ICM2YzU4YmQgIWltcG9ydGFudDsKfQoKLnRleHQtcmVkIHsKICAgIGNvbG9yOiAjZjIxMTM2ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWdyZWVuIHsKICAgIGNvbG9yOiAjMGZiNzZiICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWJsdWUgewogICAgY29sb3I6ICMxMTk0ZjcgIWltcG9ydGFudDsKfQoKLnRleHQtb3JhbmdlIHsKICAgIGNvbG9yOiAjZjY2MDAwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXllbGxvdyB7CiAgICBjb2xvcjogI2UyZDk1MSAhaW1wb3J0YW50Owp9CgoudGV4dC1ibGFjayB7CiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50Owp9CgoudGV4dC13aGl0ZSwKLnRleHQtbGlnaHQgewogICAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsKfQoKLnRleHQtZGFya2VyIHsKICAgIGNvbG9yOiAjMzMzICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXVwcGVyY2FzZSB7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CgovKlJhZGl1cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLnJhZGl1cy0wIHsKICAgIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKfQoKLnJhZGl1cy14IHsKICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50Owp9CgoucmFkaXVzLTF4IHsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHggIWltcG9ydGFudDsKfQoKLnJhZGl1cy0yeCB7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5yYWRpdXMtM3ggewogICAgYm9yZGVyLXJhZGl1czogMzBweCAhaW1wb3J0YW50Owp9CgoucmFkaXVzLTR4IHsKICAgIGJvcmRlci1yYWRpdXM6IDQwcHggIWltcG9ydGFudDsKfQoKLnJhZGl1cy01eCB7CiAgICBib3JkZXItcmFkaXVzOiA1cHggIWltcG9ydGFudDsKfQoKLnJhZGl1cy02eCB7CiAgICBib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDsKfQoKLm93bC1jYXJvdXNlbC1wbGF5IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLm93bC1jYXJvdXNlbC1wbGF5IC5vd2wtaXRlbTpsYXN0LWNoaWxkIC5wcm9kdWN0LXdyYXBwZXIgewogICAgYm9yZGVyOiBub25lOwp9CgouY2Fyb3VzZWwtbWQgewogICAgd2lkdGg6IDQ0cHg7CiAgICBoZWlnaHQ6IDQ0cHg7CiAgICBsaW5lLWhlaWdodDogNDRweDsKfQoKLmNhcm91c2VsLXNtIHsKICAgIHdpZHRoOiAzNHB4OwogICAgaGVpZ2h0OiAzNHB4OwogICAgbGluZS1oZWlnaHQ6IDM0cHg7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5jYXJvdXNlbC14cyB7CiAgICB3aWR0aDogMjhweDsKICAgIGhlaWdodDogMjhweDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgZm9udC1zaXplOiAxNHB4Owp9CgouYWRkLWZpeC10b3AgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiA0OwogICAgYm90dG9tOiA4cHg7CiAgICByaWdodDogOHB4OwogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBsaW5lLWhlaWdodDogNDBweDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJvcmRlci1yYWRpdXM6IDQ1cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDQ1cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDQ1cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNDVweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDQ1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzE0MWUyZjsKICAgIGNvbG9yOiAjOGE5OWIzOwp9CgoucnRsIC5hZGQtZml4LXRvcCB7CiAgICBsZWZ0OiA4cHg7CiAgICByaWdodDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFkZC1maXgtdG9wIHsKICAgICAgICByaWdodDogMzBweDsKICAgICAgICBib3R0b206IDMwcHg7CiAgICAgICAgd2lkdGg6IDQ1cHg7CiAgICAgICAgaGVpZ2h0OiA0NXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiA0NXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIH0KICAgIC5ydGwgLmFkZC1maXgtdG9wIHsKICAgICAgICBsZWZ0OiAzMHB4OwogICAgICAgIHJpZ2h0OiBhdXRvOwogICAgfQp9CgouYWRkLWZpeC10b3AuYWN0aXZlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIG9wYWNpdHk6IDAuNzsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT03MCk7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hZGQtZml4LXRvcC5hY3RpdmUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICB9Cn0KCi5hZGQtZml4LXRvcC5hY3RpdmU6Zm9jdXMsCi5hZGQtZml4LXRvcC5hY3RpdmU6aG92ZXIgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgY29sb3I6ICNmZmY7Cn0KCi5tZW51IHsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7Cn0KCi5tZW51IGxpIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KCi5tZW51IGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLm1lbnUgdWwgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgbWFyZ2luOiAwOwp9CgoucnRsIC5tZW51IHVsIHsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCi5hcHVzLWJvZHktbG9hZGluZyB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgpAa2V5ZnJhbWVzIHNwaW4gewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIH0KfQoKQGtleWZyYW1lcyAtd2Via2l0LXNwaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICB9Cn0KCi5hcHVzLXBhZ2UtbG9hZGluZyB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgei1pbmRleDogOTk5OTsKfQoKLmFwdXMtbG9hZGVyLWlubmVyIHsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgd2lkdGg6IDgwcHg7CiAgICBoZWlnaHQ6IDgwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBmb250LXNpemU6IDEwcHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgouYXB1cy1sb2FkZXItaW5uZXI+ZGl2IHsKICAgIHdpZHRoOiA4cHg7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZGVsYXkgMC44cyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICAgIGFuaW1hdGlvbjogZGVsYXkgMC44cyBpbmZpbml0ZSBlYXNlLWluLW91dDsKfQoKLmFwdXMtbG9hZGVyLWlubmVyIC5sb2FkZXIxIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlMzk1MDU7Cn0KCi5hcHVzLWxvYWRlci1pbm5lciAubG9hZGVyMiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1Mzk1OwogICAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC0wLjdzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAtMC43czsKfQoKLmFwdXMtbG9hZGVyLWlubmVyIC5sb2FkZXIzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM4NGI4MTM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLTAuNnM7CiAgICBhbmltYXRpb24tZGVsYXk6IC0wLjZzOwp9CgouYXB1cy1sb2FkZXItaW5uZXIgLmxvYWRlcjQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YzOGNhMzsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAtMC41czsKICAgIGFuaW1hdGlvbi1kZWxheTogLTAuNXM7Cn0KCi5hcHVzLWxvYWRlci1pbm5lciAubG9hZGVyNSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGE1ODAwOwogICAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC0wLjRzOwogICAgYW5pbWF0aW9uLWRlbGF5OiAtMC40czsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGRlbGF5IHsKICAgIDAlLAogICAgNDAlLAogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgwLjA1KTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgwLjA1KTsKICAgIH0KICAgIDIwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTsKICAgIH0KfQoKQGtleWZyYW1lcyBkZWxheSB7CiAgICAwJSwKICAgIDQwJSwKICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDAuMDUpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMC4wNSk7CiAgICB9CiAgICAyMCUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMSk7CiAgICB9Cn0KCi50YWItdjEgLnRhYnMtbGlzdCB7CiAgICBib3JkZXI6IG5vbmU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAzMHB4IDAgNTBweDsKfQoKLnRhYi12MSAudGFicy1saXN0IGxpIHsKICAgIHBhZGRpbmc6IDAgMjJweDsKICAgIG1hcmdpbjogMDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZsb2F0OiBub25lOwp9CgoudGFiLXYxIC50YWJzLWxpc3QgbGkgYSB7CiAgICBwYWRkaW5nOiA1cHggMDsKICAgIGNvbG9yOiAjNzc3Nzc3OwogICAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4ICFpbXBvcnRhbnQ7CiAgICBib3JkZXItY29sb3I6ICNjY2NjY2M7CiAgICBib3JkZXItc3R5bGU6IGRhc2hlZDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiAzMDA7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi50YWItdjEgLnRhYnMtbGlzdCBsaS5hY3RpdmU+YTphY3RpdmUsCi50YWItdjEgLnRhYnMtbGlzdCBsaS5hY3RpdmU+YTpmb2N1cywKLnRhYi12MSAudGFicy1saXN0IGxpLmFjdGl2ZT5hLAoudGFiLXYxIC50YWJzLWxpc3QgbGk6aG92ZXI+YTphY3RpdmUsCi50YWItdjEgLnRhYnMtbGlzdCBsaTpob3Zlcj5hOmZvY3VzLAoudGFiLXYxIC50YWJzLWxpc3QgbGk6aG92ZXI+YSB7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgY29sb3I6ICNmZjVhNWY7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLnRhYi12MS5zdHlsZTEgLnRhYnMtbGlzdCB7CiAgICBwYWRkaW5nOiAxMHB4IDAgNzBweDsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgoucnRsIC50YWItdjEuc3R5bGUxIC50YWJzLWxpc3QgewogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnRhYi12MS5zdHlsZTEgLnRhYnMtbGlzdCBsaS5hY3RpdmUsCi50YWItdjEuc3R5bGUxIC50YWJzLWxpc3QgbGk6aG92ZXIgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICBib3gtc2hhZG93OiAwIDVweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi50YWItdjEuc3R5bGUxIC50YWJzLWxpc3QgbGkuYWN0aXZlPmE6YWN0aXZlLAoudGFiLXYxLnN0eWxlMSAudGFicy1saXN0IGxpLmFjdGl2ZT5hOmZvY3VzLAoudGFiLXYxLnN0eWxlMSAudGFicy1saXN0IGxpLmFjdGl2ZT5hLAoudGFiLXYxLnN0eWxlMSAudGFicy1saXN0IGxpOmhvdmVyPmE6YWN0aXZlLAoudGFiLXYxLnN0eWxlMSAudGFicy1saXN0IGxpOmhvdmVyPmE6Zm9jdXMsCi50YWItdjEuc3R5bGUxIC50YWJzLWxpc3QgbGk6aG92ZXI+YSB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgICAudGFiLXYxLnN0eWxlMSB7CiAgICAgICAgcGFkZGluZzogMCA3MHB4OwogICAgfQp9CgoudGFiLXByb2R1Y3QtY2VudGVyIC5uYXYtdGFicyB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBtYXJnaW46IDAgMCAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoudGFiLXByb2R1Y3QtY2VudGVyIC5uYXYtdGFicz5saSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CgoudGFiLXByb2R1Y3QtY2VudGVyIC5uYXYtdGFicz5saT5hIHsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIHBhZGRpbmc6IDAgMzBweDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50Owp9CgoudGFiLXByb2R1Y3QtY2VudGVyIC5uYXYtdGFicz5saTpob3ZlciBhLAoudGFiLXByb2R1Y3QtY2VudGVyIC5uYXYtdGFicz5saS5hY3RpdmUgYSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLnRhYi1wcm9kdWN0LWNlbnRlciAudGFiLWNvbnRlbnQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoudGFiLXByb2R1Y3QtY2VudGVyIC50YWItY29udGVudC5sb2FkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiA5OTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpIHVybCguLi9pbWFnZXMvbG9hZGluZy1xdWljay5naWYpIG5vLXJlcGVhdCBzY3JvbGwgY2VudGVyIDEwMHB4LzUwcHggYXV0bzsKfQoKLnBhZ2UtbGlua3MgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIG1hcmdpbjogMCAwIDMwcHg7Cn0KCi5wYWdlLWxpbmtzIC5wYWdlLWxpbmtzLXRpdGxlIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLnBhZ2UtbGlua3M+c3Bhbjpub3QoLnBhZ2UtbGlua3MtdGl0bGUpLAoucGFnZS1saW5rcz5hIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgbWFyZ2luOiAwIDNweDsKICAgIHBhZGRpbmc6IDEwcHggMTNweDsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogMnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoucGFnZS1saW5rcz5zcGFuOm5vdCgucGFnZS1saW5rcy10aXRsZSk6aG92ZXIsCi5wYWdlLWxpbmtzPnNwYW46bm90KC5wYWdlLWxpbmtzLXRpdGxlKTphY3RpdmUsCi5wYWdlLWxpbmtzPmE6aG92ZXIsCi5wYWdlLWxpbmtzPmE6YWN0aXZlIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLnBhZ2UtbGlua3M+c3Bhbjpub3QoLnBhZ2UtbGlua3MtdGl0bGUpIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKb3B0aW9uIHsKICAgIHBhZGRpbmc6IDVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgICAuc3BhY2UtcGFkZGluZy1sZWZ0LTMwIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwcHggIWltcG9ydGFudDsKICAgIH0KfQoKLndvb2NvbW1lcmNlLU15QWNjb3VudC1uYXZpZ2F0aW9uPnVsIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDM1cHg7Cn0KCi55aXRoX3dvb2NvbXBhcmVfY29sb3Jib3ggI2Nib3hXcmFwcGVyICNjYm94Q29udGVudCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi55aXRoX3dvb2NvbXBhcmVfY29sb3Jib3ggI2Nib3hXcmFwcGVyICNjYm94Q29udGVudCAjY2JveENsb3NlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTVweDsKICAgIHJpZ2h0OiAtNXB4OwogICAgcGFkZGluZzogNXB4OwogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZTQ0MzQzOwogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB3aWR0aDogODBweDsKICAgIGhlaWdodDogMzZweDsKICAgIHRleHQtaW5kZW50OiAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7Cn0KCi5ydGwgLnlpdGhfd29vY29tcGFyZV9jb2xvcmJveCAjY2JveFdyYXBwZXIgI2Nib3hDb250ZW50ICNjYm94Q2xvc2UgewogICAgbGVmdDogLTVweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoueWl0aF93b29jb21wYXJlX2NvbG9yYm94ICNjYm94V3JhcHBlciAjY2JveENvbnRlbnQgI2Nib3hDbG9zZTpob3ZlciwKLnlpdGhfd29vY29tcGFyZV9jb2xvcmJveCAjY2JveFdyYXBwZXIgI2Nib3hDb250ZW50ICNjYm94Q2xvc2U6YWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICNlMTJkMmQ7Cn0KCi5pbWFnZS1sYXp5LWxvYWRpbmcgLmltYWdlLXdyYXBwZXIgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzgiIGhlaWdodD0iMzgiIHZpZXdCb3g9IjAgMCAzOCAzOCIgc3Ryb2tlPSJyZ2JhKDEwMiwxMDIsMTAyLDAuMjUpIiUzRSUzQ2cgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiUzRSUzQ2cgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxKSIgc3Ryb2tlLXdpZHRoPSIyIiUzRSUzQ2NpcmNsZSBzdHJva2Utb3BhY2l0eT0iLjU1IiBjeD0iMTgiIGN5PSIxOCIgcj0iMTgiLyUzRSUzQ3BhdGggZD0iTTM2IDE4YzAtOS45NC04LjA2LTE4LTE4LTE4IiUzRSUzQ2FuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgMTggMTgiIHRvPSIzNjAgMTggMTgiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8lM0UlM0MvcGF0aCUzRSUzQy9nJTNFJTNDL2clM0UlM0Mvc3ZnJTNFJyk7CiAgICBtYXgtaGVpZ2h0OiAxMDAlOwp9CgouaW1hZ2UtbGF6eS1sb2FkaW5nIC5pbWFnZS13cmFwcGVyIGltZyB7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5pbWFnZS1sYXp5LWxvYWRpbmcgLmltYWdlLXdyYXBwZXIuaW1hZ2UtbG9hZGVkIHsKICAgIGJhY2tncm91bmQ6IG5vbmU7Cn0KCi5pbWFnZS1sYXp5LWxvYWRpbmcgLmltYWdlLXdyYXBwZXIuaW1hZ2UtbG9hZGVkIGltZyB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5zY3JvbGxiYXIgewogICAgd2lkdGg6IDEwMnB4OwogICAgaGVpZ2h0OiAxMDJweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGxpbmUtaGVpZ2h0OiA5MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCAjMjQzMjRhIDAlLCAjZmY1YTVmIDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICMyNDMyNGEgMCUsICNmZjVhNWYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMyNDMyNGEgMCUsICNmZjVhNWYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjRkYyNDMyNEEnLCBlbmRDb2xvcnN0cj0nI0ZGRkY1QTVGJywgR3JhZGllbnRUeXBlPTEpOwogICAgZm9udC1zaXplOiA1MHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgYm9yZGVyOiA2cHggc29saWQgI2ZmZmZmZjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDU1cHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1NXB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1NXB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1NXB4KTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDk7Cn0KCi5zY3JvbGxiYXI6aG92ZXIsCi5zY3JvbGxiYXI6YWN0aXZlIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgI2ZmNWE1ZiAwJSwgIzI0MzI0YSAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCAjZmY1YTVmIDAlLCAjMjQzMjRhIDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjZmY1YTVmIDAlLCAjMjQzMjRhIDEwMCUpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI0ZGRkY1QTVGJywgZW5kQ29sb3JzdHI9JyNGRjI0MzI0QScsIEdyYWRpZW50VHlwZT0xKTsKfQoKLnJ0bCAubmF2YmFyLW5hdiB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5ydGwgLm5hdi10YWJzPmxpIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLnJ0bCAuYXB1cy10b3BjYXJ0IC5kcm9wZG93bi1tZW51LXJpZ2h0IHsKICAgIHJpZ2h0OiBhdXRvOwogICAgbGVmdDogMDsKfQoKLnJ0bCAuZHJvcGRvd24tbWVudSB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKLnJ0bCAud2lkZ2V0LW5hdi1tZW51IC5tZW51IGxpPmE6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDkiOwp9CgoucnRsIC5tZWRpYS1sZWZ0LAoucnRsIC5tZWRpYT4ucHVsbC1sZWZ0IHsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCi5ydGwgLm1tLW1lbnUubW0tb2ZmY2FudmFzIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKfQoKLnJ0bCAubW0tbGlzdHZpZXcgLm1tLW5leHQgewogICAgcmlnaHQ6IGluaGVyaXQ7CiAgICBsZWZ0OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKfQoKLnJ0bCAubW0tbGlzdHZpZXcgLm1tLW5leHQrYSwKLnJ0bCAubW0tbGlzdHZpZXcgLm1tLW5leHQrc3BhbiB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBtYXJnaW4tbGVmdDogNTBweDsKfQoKLnJ0bCAubW0tbGlzdHZpZXc+bGk+YSwKLnJ0bCAubW0tbGlzdHZpZXc+bGk+c3BhbiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgoucnRsIC5tbS1tZW51IC5tZW51IGEgewogICAgcGFkZGluZy1yaWdodDogMjBweDsKfQoKLnJ0bCAucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKfQoKLnJ0bCAucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyLmFjdGl2ZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KCi5ydGwgLmN1c3RvbWl6ZXItc2VhcmNoPi5zZWxlY3QyLWRyb3Bkb3duIHsKICAgIG1pbi13aWR0aDogMDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAucnRsIC5lbmVyZ3ktaW5uZXIgLmVuZXJneS1ncm91cCAuaW5kaWNhdG9yLWVuZXJneSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAlKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwJSk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwJSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwJSk7CiAgICB9Cn0KCi5zaG93LXNlYXJjaCB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGZvbnQtc2l6ZTogMTZweDsKfQoKLnNob3ctc2VhcmNoOmhvdmVyLAouc2hvdy1zZWFyY2g6YWN0aXZlLAouc2hvdy1zZWFyY2g6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5hcHVzLWhlYWRlciAud3BtbC1scy1sZWdhY3ktZHJvcGRvd24gYS53cG1sLWxzLWl0ZW0tdG9nZ2xlIHsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogNHB4IDI1cHggNnB4IDA7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgY29sb3I6ICM3MDcwNzAgIWltcG9ydGFudDsKfQoKLmFwdXMtaGVhZGVyIC53cG1sLWxzLWxlZ2FjeS1kcm9wZG93biAud3BtbC1scy1zdWItbWVudSB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIG1pbi13aWR0aDogMTE0cHg7Cn0KCi5hcHVzLWhlYWRlciAud3BtbC1scy1sZWdhY3ktZHJvcGRvd24gLndwbWwtbHMtc3ViLW1lbnUgbGkgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgICBwYWRkaW5nOiA5cHggMTBweDsKfQoKLmFwdXMtaGVhZGVyIC53cG1sLWxzLWxlZ2FjeS1kcm9wZG93biAud3BtbC1scy1zdWItbWVudSBsaSBhIHsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDA7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLmFwdXMtaGVhZGVyIC53cG1sLWxzLWxlZ2FjeS1kcm9wZG93biAud3BtbC1scy1zdWItbWVudSBsaSBhOmhvdmVyLAouYXB1cy1oZWFkZXIgLndwbWwtbHMtbGVnYWN5LWRyb3Bkb3duIC53cG1sLWxzLXN1Yi1tZW51IGxpIGE6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5hcHVzLWhlYWRlciAud3BtbC1scy1sZWdhY3ktZHJvcGRvd24gLndwbWwtbHMtc3ViLW1lbnUgbGk6bGFzdC1jaGlsZCB7CiAgICBib3JkZXI6IG5vbmU7Cn0KCi5hcHVzLWhlYWRlciAud3BtbC1scy1sZWdhY3ktZHJvcGRvd24gewogICAgd2lkdGg6IGF1dG87Cn0KCi5hcHVzLWhlYWRlciAud29vLW11bHRpLWN1cnJlbmN5LnNob3J0Y29kZS5wbGFpbi12ZXJ0aWNhbCAud21jLWN1cnJlbmN5LXdyYXBwZXIgc3Bhbi53bWMtY3VycmVudC1jdXJyZW5jeSwKLmFwdXMtaGVhZGVyIC53b28tbXVsdGktY3VycmVuY3kuc2hvcnRjb2RlLnBsYWluLXZlcnRpY2FsIC53bWMtY3VycmVuY3ktd3JhcHBlciAud21jLXN1Yi1jdXJyZW5jeSAud21jLWN1cnJlbmN5IHsKICAgIHBhZGRpbmc6IDA7CiAgICBib3JkZXI6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLmFwdXMtaGVhZGVyIC53b28tbXVsdGktY3VycmVuY3kuc2hvcnRjb2RlLnBsYWluLXZlcnRpY2FsIC53bWMtY3VycmVuY3ktd3JhcHBlciAud21jLXN1Yi1jdXJyZW5jeSAud21jLWN1cnJlbmN5IHsKICAgIHBhZGRpbmc6IDVweCAxMHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7Cn0KCi5hcHVzLWhlYWRlciAud29vLW11bHRpLWN1cnJlbmN5LnNob3J0Y29kZS5wbGFpbi12ZXJ0aWNhbCAud21jLWN1cnJlbmN5LXdyYXBwZXIgLndtYy1zdWItY3VycmVuY3kgLndtYy1jdXJyZW5jeTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlcjogbm9uZTsKfQoKLmFwdXMtaGVhZGVyIC53b28tbXVsdGktY3VycmVuY3kuc2hvcnRjb2RlLnBsYWluLXZlcnRpY2FsIC53bWMtY3VycmVuY3ktd3JhcHBlciBzcGFuLndtYy1jdXJyZW50LWN1cnJlbmN5IHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogIzcwNzA3MDsKfQoKLmFwdXMtaGVhZGVyIC53b28tbXVsdGktY3VycmVuY3kuc2hvcnRjb2RlLnBsYWluLXZlcnRpY2FsIC53bWMtY3VycmVuY3ktd3JhcHBlciAud21jLXN1Yi1jdXJyZW5jeSAud21jLWN1cnJlbmN5IGE6aG92ZXIsCi5hcHVzLWhlYWRlciAud29vLW11bHRpLWN1cnJlbmN5LnNob3J0Y29kZS5wbGFpbi12ZXJ0aWNhbCAud21jLWN1cnJlbmN5LXdyYXBwZXIgLndtYy1zdWItY3VycmVuY3kgLndtYy1jdXJyZW5jeS5hY3RpdmUgYSB7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5hcHVzLWhlYWRlciAud29vLW11bHRpLWN1cnJlbmN5LnNob3J0Y29kZS5wbGFpbi12ZXJ0aWNhbCAud21jLWN1cnJlbmN5LXdyYXBwZXIgLndtYy1zdWItY3VycmVuY3kgewogICAgbWluLXdpZHRoOiA4MHB4OwogICAgdGV4dC1hbGlnbjogaW5oZXJpdDsKICAgIHotaW5kZXg6IDk5Owp9CgouYXB1cy1oZWFkZXIgLndvby1tdWx0aS1jdXJyZW5jeS5zaG9ydGNvZGUucGxhaW4tdmVydGljYWwgLndtYy1jdXJyZW5jeS13cmFwcGVyIHNwYW4ud21jLWN1cnJlbnQtY3VycmVuY3k6OmFmdGVyIHsKICAgIGZvbnQtc2l6ZTogMTFweDsKfQoKLmFwdXMtaGVhZGVyIC5hcHVzLXRvcGJhciAud3BtbC1scy1sZWdhY3ktZHJvcGRvd24gLndwbWwtbHMtc3ViLW1lbnUgewogICAgbWluLXdpZHRoOiAxNTVweDsKfQoKLnNlYXJjaC1oZWFkZXIgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgei1pbmRleDogOTsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDA7CiAgICBiYWNrZ3JvdW5kOiAjZjdmN2Y3OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7Cn0KCi5zZWFyY2gtaGVhZGVyLmFjdGl2ZSB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9CgouYXB1c19zb2NpYWxzIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwp9CgouYXB1c19zb2NpYWxzIGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLnJ0bCAuYXB1c19zb2NpYWxzIGxpIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouYXB1c19zb2NpYWxzIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luOiAwOwp9CgouYXB1c19zb2NpYWxzIGEgewogICAgYm9yZGVyOiAxcHggc29saWQgI2RjZTFlNjsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgd2lkdGg6IDQycHg7CiAgICBoZWlnaHQ6IDQycHg7CiAgICBsaW5lLWhlaWdodDogNDJweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdGV4dC1pbmRlbnQ6IDJweDsKfQoKLmFwdXNfc29jaWFscyBhOmhvdmVyLAouYXB1c19zb2NpYWxzIGE6Zm9jdXMgewogICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7Cn0KCi5hcHVzX3NvY2lhbHMgYS5mYWNlYm9vayB7CiAgICBjb2xvcjogIzNjNjZjNDsKfQoKLmFwdXNfc29jaWFscyBhLnR3aXR0ZXIgewogICAgY29sb3I6ICMwMGFjZWQ7Cn0KCi5hcHVzX3NvY2lhbHMgYS5waW50ZXJlc3QgewogICAgY29sb3I6ICNiZDA4MWM7Cn0KCi5hcHVzX3NvY2lhbHMgYS5nb29nbGUtcGx1cyB7CiAgICBjb2xvcjogI2RjNDczYTsKfQoKLmFwdXNfc29jaWFscyBhLmluc3RhZ3JhbSB7CiAgICBjb2xvcjogI2JjNDRiZDsKfQoKLmFwdXNfc29jaWFscy5zdHlsZTIgYSB7CiAgICBib3JkZXItY29sb3I6ICM0NzU4NmQ7Cn0KCi5zZWxlY3QyLWNvbnRhaW5lciB7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cn0KCi5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24gewogICAgcGFkZGluZzogMTBweCAxNXB4Owp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VhcmNoLS1kcm9wZG93biAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHsKICAgIGJvcmRlci1jb2xvcjogI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogICAgaGVpZ2h0OiAzM3B4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgcGFkZGluZzogNXB4IDEwcHg7Cn0KCi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKfQoKLnNlbGVjdDItZHJvcGRvd24gewogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYiAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDZweCAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4ICFpbXBvcnRhbnQ7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4ICFpbXBvcnRhbnQ7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDsKICAgIG1pbi13aWR0aDogMjAwcHg7Cn0KCi5zZWxlY3QyLXJlc3VsdHMgewogICAgcGFkZGluZzogMTJweCAwOwp9Cgouc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7CiAgICBwYWRkaW5nOiA1cHggMThweDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHsKICAgICAgICBwYWRkaW5nOiA1cHggMjVweDsKICAgIH0KfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsKICAgIGhlaWdodDogNTBweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkOGQ4ZDg7CiAgICBtYXJnaW46IDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHBhZGRpbmc6IDAgMTBweDsKfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQgewogICAgcGFkZGluZy10b3A6IDEwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgewogICAgdG9wOiAxMnB4OwogICAgcmlnaHQ6IDEwcHg7Cn0KCi5ydGwgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgewogICAgbGVmdDogMTBweDsKICAgIHJpZ2h0OiBhdXRvOwp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhcjpob3ZlciwKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXI6Zm9jdXMgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHsKICAgIGhlaWdodDogNTBweDsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkOGQ4ZDggIWltcG9ydGFudDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLWZvY3VzIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgewogICAgYm9yZGVyLWNvbG9yOiAjY2JjYmNiICFpbXBvcnRhbnQ7Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7CiAgICBib3JkZXItY29sb3I6ICNjYmNiY2I7Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkW2FyaWEtc2VsZWN0ZWRdLAouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZFtkYXRhLXNlbGVjdGVkXSB7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD0idHJ1ZSJdLAouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2RhdGEtc2VsZWN0ZWQ9InRydWUiXSB7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD0idHJ1ZSJdOmJlZm9yZSwKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbltkYXRhLXNlbGVjdGVkPSJ0cnVlIl06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwYSI7CiAgICBmb250LWZhbWlseTogIkZsYXRpY29uIjsKICAgIGNvbG9yOiAjZmU2NjZiOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICByaWdodDogMTBweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLnJ0bCAuc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWQ9InRydWUiXTpiZWZvcmUsCi5ydGwgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbltkYXRhLXNlbGVjdGVkPSJ0cnVlIl06YmVmb3JlIHsKICAgIGxlZnQ6IDEwcHg7CiAgICByaWdodDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkPSJ0cnVlIl06YmVmb3JlLAogICAgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbltkYXRhLXNlbGVjdGVkPSJ0cnVlIl06YmVmb3JlIHsKICAgICAgICByaWdodDogMjBweDsKICAgIH0KICAgIC5ydGwgLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkPSJ0cnVlIl06YmVmb3JlLAogICAgLnJ0bCAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2RhdGEtc2VsZWN0ZWQ9InRydWUiXTpiZWZvcmUgewogICAgICAgIGxlZnQ6IDIwcHg7CiAgICAgICAgcmlnaHQ6IGF1dG87CiAgICB9Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci5vcmRlcmJ5IC5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHsKICAgIHBhZGRpbmc6IDAgMTBweDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci5vcmRlcmJ5IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkPSJ0cnVlIl06YmVmb3JlLAouc2VsZWN0Mi1jb250YWluZXIub3JkZXJieSAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bZGF0YS1zZWxlY3RlZD0idHJ1ZSJdOmJlZm9yZSB7CiAgICByaWdodDogMTBweDsKfQoKLnJ0bCAuc2VsZWN0Mi1jb250YWluZXIub3JkZXJieSAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD0idHJ1ZSJdOmJlZm9yZSwKLnJ0bCAuc2VsZWN0Mi1jb250YWluZXIub3JkZXJieSAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bZGF0YS1zZWxlY3RlZD0idHJ1ZSJdOmJlZm9yZSB7CiAgICBsZWZ0OiAxMHB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLmN1c3RvbWl6ZXItc2VhcmNoPi5zZWxlY3QyLWRyb3Bkb3duIHsKICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgIG1pbi13aWR0aDogMjQwcHg7CiAgICB9CiAgICAuY3VzdG9taXplci1zZWFyY2g+LnNlbGVjdDItZHJvcGRvd24uc2VsZWN0Mi1kcm9wZG93bi0tYWJvdmUgewogICAgICAgIG1hcmdpbi10b3A6IC01MHB4OwogICAgfQogICAgLmN1c3RvbWl6ZXItc2VhcmNoPi5zZWxlY3QyLWRyb3Bkb3duOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogMTAwJTsKICAgICAgICBsZWZ0OiAyMCU7CiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgICAgICBib3JkZXItd2lkdGg6IDlweDsKICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmY7CiAgICB9CiAgICAucnRsIC5jdXN0b21pemVyLXNlYXJjaD4uc2VsZWN0Mi1kcm9wZG93bjpiZWZvcmUgewogICAgICAgIHJpZ2h0OiAyMCU7CiAgICAgICAgbGVmdDogYXV0bzsKICAgIH0KICAgIC5jdXN0b21pemVyLXNlYXJjaD4uc2VsZWN0Mi1kcm9wZG93bi5zZWxlY3QyLWRyb3Bkb3duLS1hYm92ZTpiZWZvcmUgewogICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgICB0b3A6IDEwMCU7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC5jdXN0b21pemVyLXNlYXJjaC5jdXN0b21pemVyLXNlYXJjaC1oYWxwbWFwPi5zZWxlY3QyLWRyb3Bkb3duIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC5jdXN0b21pemVyLXNlYXJjaCAuc2VsZWN0Mi1yZXN1bHRzIHsKICAgICAgICBwYWRkaW5nOiAxNXB4IDA7CiAgICB9CiAgICAuY3VzdG9taXplci1zZWFyY2ggLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gewogICAgICAgIHBhZGRpbmc6IDVweCAzMHB4OwogICAgfQp9CgoubmF2LXRhYnMtY3VzdG9tIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlOGViZWY7CiAgICBtYXJnaW46IDQ3cHggMCAwOwp9CgoubmF2LXRhYnMtY3VzdG9tPi5uYXYtdGFicyB7CiAgICBtYXJnaW4tdG9wOiAtNDdweDsKICAgIG1hcmdpbi1sZWZ0OiAtMXB4Owp9CgoucnRsIC5uYXYtdGFicy1jdXN0b20+Lm5hdi10YWJzIHsKICAgIG1hcmdpbi1yaWdodDogLTFweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgoubmF2LXRhYnMtY3VzdG9tIC50YWItY29udGVudD4udGFiLXBhbmUgewogICAgcGFkZGluZzogMCAxZW07Cn0KCi5wYWdlLWhlYWRlciB7CiAgICBwYWRkaW5nLWJvdHRvbTogOXB4OwogICAgbWFyZ2luOiA0MHB4IDAgMjBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwp9CgpzZWN0aW9uI21lZGljYWwgLmNvbC1tZC0zLmNvbC1zbS00LAouZm9udGF3ZXNvbWUtaWNvbi1saXN0IC5jb2wtbWQtMy5jb2wtc20tNCB7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgouYnMtZ2x5cGhpY29ucyB7CiAgICBwYWRkaW5nOiAwOwp9CgouYnMtZ2x5cGhpY29ucyBsaSB7CiAgICB3aWR0aDogMjQuNSU7CiAgICBoZWlnaHQ6IDExNXB4OwogICAgcGFkZGluZzogMTBweDsKICAgIG1hcmdpbjogMCAtMXB4IC0xcHggMDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZThlZGVmOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouYnMtZ2x5cGhpY29ucyAuZ2x5cGhpY29uIHsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBmb250LXNpemU6IDI0cHg7Cn0KCi5icy1nbHlwaGljb25zIC5nbHlwaGljb24tY2xhc3MgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7Cn0KCi5pY29uLWNvbnRhaW5lciB7CiAgICB3aWR0aDogMjQwcHg7CiAgICBwYWRkaW5nOiAuN2VtIDA7CiAgICBmbG9hdDogbGVmdDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5hcHVzLXNvY2lhbC1zaGFyZSAudGl0bGUgewogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgoucnRsIC5hcHVzLXNvY2lhbC1zaGFyZSAudGl0bGUgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKLmFwdXMtc29jaWFsLXNoYXJlIGEgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBtYXJnaW46IDAgMnB4OwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIHdpZHRoOiA0NXB4OwogICAgaGVpZ2h0OiA0NXB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDQ1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5hcHVzLXNvY2lhbC1zaGFyZSBhIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgIH0KfQoKLmFwdXMtc29jaWFsLXNoYXJlIGE6aG92ZXIsCi5hcHVzLXNvY2lhbC1zaGFyZSBhOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmY7Cn0KCi5ib3gtYWNjb3VudCAudGl0bGUgewogICAgbWFyZ2luOiAwIDAgMjBweDsKICAgIGZvbnQtc2l6ZTogMjVweDsKfQoKLnNwYWNlLWhlaWdodC0yMCB7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5maWx0ZXItc2Nyb2xsIHsKICAgIGhlaWdodDogMTAwJTsKfQoKLnRvb2x0aXAgewogICAgei1pbmRleDogNDsKfQoKLmZsYXRpY29uLXJlcGVhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI5IjsKICAgIGZvbnQtZmFtaWx5OiAiRmxhdGljb24iOwp9CgouYWZmaXggewogICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7Cn0KCi50b29sdGlwLnRvcCAudG9vbHRpcC1hcnJvdyB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjMjQzMjRhOwp9CgoudG9vbHRpcC50b3AgLnRvb2x0aXAtaW5uZXIgewogICAgcGFkZGluZzogNXB4IDE1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjQzMjRhOwogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLmFwdXMtcmVzdWx0cyB7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CgouYXB1cy1yZXN1bHRzIC5hcHVzLXJlc3VsdHMtcmVzZXQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogNnB4IDE1cHg7CiAgICBiYWNrZ3JvdW5kOiAjZTQ0MzQzOwogICAgY29sb3I6ICNmZmY7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwp9CgouYXB1cy1yZXN1bHRzIC5hcHVzLXJlc3VsdHMtcmVzZXQ6aG92ZXIsCi5hcHVzLXJlc3VsdHMgLmFwdXMtcmVzdWx0cy1yZXNldDphY3RpdmUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZDUxZjFmOwp9CgouYWpheC1wYWdpbmF0aW9uIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbjogMTBweCAwOwp9CgouYWpheC1wYWdpbmF0aW9uLmFwdXMtbG9hZGVyIC5hcHVzLWxvYWRtb3JlLWJ0biB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouYWpheC1wYWdpbmF0aW9uLmFwdXMtbG9hZGVyOmFmdGVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzOCIgaGVpZ2h0PSIzOCIgdmlld0JveD0iMCAwIDM4IDM4IiBzdHJva2U9InJnYmEoMTAyLDEwMiwxMDIsMC4yNSkiJTNFJTNDZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiJTNFJTNDZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEpIiBzdHJva2Utd2lkdGg9IjIiJTNFJTNDY2lyY2xlIHN0cm9rZS1vcGFjaXR5PSIuNTUiIGN4PSIxOCIgY3k9IjE4IiByPSIxOCIvJTNFJTNDcGF0aCBkPSJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMTgiJTNFJTNDYW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgZnJvbT0iMCAxOCAxOCIgdG89IjM2MCAxOCAxOCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLyUzRSUzQy9wYXRoJTNFJTNDL2clM0UlM0MvZyUzRSUzQy9zdmclM0UnKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgY29udGVudDogIiI7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEwMCU7Cn0KCi5hamF4LXBhZ2luYXRpb24gLmFwdXMtbG9hZG1vcmUtYnRuKy5hcHVzLWFsbHByb2R1Y3RzIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5hamF4LXBhZ2luYXRpb24gLmFwdXMtbG9hZG1vcmUtYnRuLmhpZGRlbisuYXB1cy1hbGxwcm9kdWN0cyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbG9yOiAjZTQ0MzQzOwp9Cgpib2R5LmFkbWluLWJhciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkgewogICAgYm9keS5hZG1pbi1iYXIgI3dwYWRtaW5iYXIgewogICAgICAgIG1hcmdpbi10b3A6IC00NnB4OwogICAgfQp9CgpodG1sLm1tLWJsb2NraW5nLm1tLW9wZW5lZCB7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKfQoKLyogMi4gZWxlbWVudHMgKi8KCi8qIGJsb2NrICovCgoud2lkZ2V0IHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLndpZGdldCAud2lkZ2V0LXRpdGxlLAoud2lkZ2V0IC53aWRnZXR0aXRsZSwKLndpZGdldCAud2lkZ2V0LWhlYWRpbmcgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWFyZ2luOiAwIDAgMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldCAud2lkZ2V0LXRpdGxlLAogICAgLndpZGdldCAud2lkZ2V0dGl0bGUsCiAgICAud2lkZ2V0IC53aWRnZXQtaGVhZGluZyB7CiAgICAgICAgbWFyZ2luOiAwIDAgMjVweDsKICAgIH0KfQoKLndpZGdldCAud2lkZ2V0LXRpdGxlIC51cmdlbnQsCi53aWRnZXQgLndpZGdldC10aXRsZSAuZmVhdHVyZWQsCi53aWRnZXQgLndpZGdldHRpdGxlIC51cmdlbnQsCi53aWRnZXQgLndpZGdldHRpdGxlIC5mZWF0dXJlZCwKLndpZGdldCAud2lkZ2V0LWhlYWRpbmcgLnVyZ2VudCwKLndpZGdldCAud2lkZ2V0LWhlYWRpbmcgLmZlYXR1cmVkIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKfQoKLnNpZGViYXIgLndpZGdldCwKLmFwdXMtc2lkZWJhciAud2lkZ2V0IHsKICAgIG1hcmdpbjogMCAwIDMwcHg7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnNpZGViYXIgLndpZGdldCwKICAgIC5hcHVzLXNpZGViYXIgLndpZGdldCB7CiAgICAgICAgcGFkZGluZzogMzBweDsKICAgIH0KfQoKLnNpZGViYXIgLndpZGdldCNjYWxlbmRhcl93cmFwLAouYXB1cy1zaWRlYmFyIC53aWRnZXQjY2FsZW5kYXJfd3JhcCB7CiAgICBwYWRkaW5nOiAwOwp9Cgouc2lkZWJhciAud2lkZ2V0LndpZGdldF9qb2JfZmlsdGVyX3dpZGdldCwKLnNpZGViYXIgLndpZGdldC53aWRnZXRfZW1wbG95ZXJfZmlsdGVyX3dpZGdldCwKLnNpZGViYXIgLndpZGdldC53aWRnZXRfY2FuZGlkYXRlX2ZpbHRlcl93aWRnZXQsCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfam9iX2ZpbHRlcl93aWRnZXQsCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfZW1wbG95ZXJfZmlsdGVyX3dpZGdldCwKLmFwdXMtc2lkZWJhciAud2lkZ2V0LndpZGdldF9jYW5kaWRhdGVfZmlsdGVyX3dpZGdldCB7CiAgICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiAwOwp9Cgouc2lkZWJhciAud2lkZ2V0LndpZGdldF90YWdfY2xvdWQsCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfdGFnX2Nsb3VkIHsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4Owp9Cgouc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9pbmZvLAouc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9jb250YWN0X2luZm8sCi5zaWRlYmFyIC53aWRnZXQud2lkZ2V0X2FwdXNfZW1wbG95ZXJfbWFwcywKLmFwdXMtc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9pbmZvLAouYXB1cy1zaWRlYmFyIC53aWRnZXQud2lkZ2V0X2FwdXNfY2FuZGlkYXRlX2NvbnRhY3RfaW5mbywKLmFwdXMtc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2VtcGxveWVyX21hcHMgewogICAgcGFkZGluZzogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5zaWRlYmFyIC53aWRnZXQud2lkZ2V0X2FwdXNfY2FuZGlkYXRlX2luZm8gLmNhbmRpZGF0ZV9wcm9maWxlLAouc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9pbmZvIC5jYW5kaWRhdGUtZGV0YWlsLWxvY2F0aW9uLAouc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9pbmZvIC5lbXBsb3llci1kZXRhaWwtbG9jYXRpb24sCi5zaWRlYmFyIC53aWRnZXQud2lkZ2V0X2FwdXNfY2FuZGlkYXRlX2NvbnRhY3RfaW5mbyAuY2FuZGlkYXRlX3Byb2ZpbGUsCi5zaWRlYmFyIC53aWRnZXQud2lkZ2V0X2FwdXNfY2FuZGlkYXRlX2NvbnRhY3RfaW5mbyAuY2FuZGlkYXRlLWRldGFpbC1sb2NhdGlvbiwKLnNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19jYW5kaWRhdGVfY29udGFjdF9pbmZvIC5lbXBsb3llci1kZXRhaWwtbG9jYXRpb24sCi5zaWRlYmFyIC53aWRnZXQud2lkZ2V0X2FwdXNfZW1wbG95ZXJfbWFwcyAuY2FuZGlkYXRlX3Byb2ZpbGUsCi5zaWRlYmFyIC53aWRnZXQud2lkZ2V0X2FwdXNfZW1wbG95ZXJfbWFwcyAuY2FuZGlkYXRlLWRldGFpbC1sb2NhdGlvbiwKLnNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19lbXBsb3llcl9tYXBzIC5lbXBsb3llci1kZXRhaWwtbG9jYXRpb24sCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19jYW5kaWRhdGVfaW5mbyAuY2FuZGlkYXRlX3Byb2ZpbGUsCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19jYW5kaWRhdGVfaW5mbyAuY2FuZGlkYXRlLWRldGFpbC1sb2NhdGlvbiwKLmFwdXMtc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9pbmZvIC5lbXBsb3llci1kZXRhaWwtbG9jYXRpb24sCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19jYW5kaWRhdGVfY29udGFjdF9pbmZvIC5jYW5kaWRhdGVfcHJvZmlsZSwKLmFwdXMtc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9jb250YWN0X2luZm8gLmNhbmRpZGF0ZS1kZXRhaWwtbG9jYXRpb24sCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19jYW5kaWRhdGVfY29udGFjdF9pbmZvIC5lbXBsb3llci1kZXRhaWwtbG9jYXRpb24sCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19lbXBsb3llcl9tYXBzIC5jYW5kaWRhdGVfcHJvZmlsZSwKLmFwdXMtc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2VtcGxveWVyX21hcHMgLmNhbmRpZGF0ZS1kZXRhaWwtbG9jYXRpb24sCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19lbXBsb3llcl9tYXBzIC5lbXBsb3llci1kZXRhaWwtbG9jYXRpb24gewogICAgcGFkZGluZzogMjVweCAzMHB4Owp9Cgouc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9jb250YWN0X2luZm8gLmpvYl9tYXBzX3NpZGViYXIsCi5zaWRlYmFyIC53aWRnZXQud2lkZ2V0X2FwdXNfZW1wbG95ZXJfbWFwcyAuam9iX21hcHNfc2lkZWJhciwKLmFwdXMtc2lkZWJhciAud2lkZ2V0LndpZGdldF9hcHVzX2NhbmRpZGF0ZV9jb250YWN0X2luZm8gLmpvYl9tYXBzX3NpZGViYXIsCi5hcHVzLXNpZGViYXIgLndpZGdldC53aWRnZXRfYXB1c19lbXBsb3llcl9tYXBzIC5qb2JfbWFwc19zaWRlYmFyIHsKICAgIHBhZGRpbmc6IDAgMzBweCAyNXB4Owp9Cgouc2lkZWJhciAud2lkZ2V0X2NhbGVuZGFyIC5jYWxlbmRhcl93cmFwLAouYXB1cy1zaWRlYmFyIC53aWRnZXRfY2FsZW5kYXIgLmNhbGVuZGFyX3dyYXAgewogICAgb3ZlcmZsb3cteDogYXV0bzsKfQoKLnNpZGViYXIgLmFwdXMtcHJvZHVjdHMtbGlzdCwKLmFwdXMtc2lkZWJhciAuYXB1cy1wcm9kdWN0cy1saXN0IHsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6ICNlYmViZWI7CiAgICBib3JkZXItd2lkdGg6IDAgMXB4IDFweDsKfQoKLnNpZGViYXIgLmFwdXMtcHJvZHVjdHMtbGlzdCAucHJvZHVjdC1ibG9jaywKLmFwdXMtc2lkZWJhciAuYXB1cy1wcm9kdWN0cy1saXN0IC5wcm9kdWN0LWJsb2NrIHsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBtYXJnaW46IDA7Cn0KCi5zaWRlYmFyIC5yb3cuaW5zdGFncmFtLXBpY3MsCi5hcHVzLXNpZGViYXIgLnJvdy5pbnN0YWdyYW0tcGljcyB7CiAgICBtYXJnaW4tbGVmdDogLTZweDsKICAgIG1hcmdpbi1yaWdodDogLTZweDsKfQoKLnNpZGViYXIgLnJvdy5pbnN0YWdyYW0tcGljcz5bY2xhc3MqPSJjb2wtbWQiXSwKLmFwdXMtc2lkZWJhciAucm93Lmluc3RhZ3JhbS1waWNzPltjbGFzcyo9ImNvbC1tZCJdIHsKICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgcGFkZGluZy1yaWdodDogNnB4OwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKLnNpZGViYXIgLndpZGdldF9hcHVzX3NpbmdsZV9pbWFnZSwKLmFwdXMtc2lkZWJhciAud2lkZ2V0X2FwdXNfc2luZ2xlX2ltYWdlIHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KCi5wYWdlLXNob3AgLnNpZGViYXIgLndpZGdldCAud2lkZ2V0LXRpdGxlLAoucGFnZS1zaG9wIC5zaWRlYmFyIC53aWRnZXQgLndpZGdldHRpdGxlLAoucGFnZS1zaG9wIC5zaWRlYmFyIC53aWRnZXQgLndpZGdldC1oZWFkaW5nLAoucGFnZS1zaG9wIC5hcHVzLXNpZGViYXIgLndpZGdldCAud2lkZ2V0LXRpdGxlLAoucGFnZS1zaG9wIC5hcHVzLXNpZGViYXIgLndpZGdldCAud2lkZ2V0dGl0bGUsCi5wYWdlLXNob3AgLmFwdXMtc2lkZWJhciAud2lkZ2V0IC53aWRnZXQtaGVhZGluZyB7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBtYXJnaW46IDAgMCAyMHB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogMXB4Owp9CgouYXB1cy1oZWFkZXIgLndpZGdldC1zZWFyY2ggewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5hcHVzLWhlYWRlciAud2lkZ2V0LXNlYXJjaCAuaW5wdXQtZ3JvdXAgewogICAgYm9yZGVyLWNvbG9yOiAjZjdmN2Y3OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwcHg7Cn0KCi5hcHVzLWhlYWRlciAud2lkZ2V0LXNlYXJjaCAuYXB1cy1zZWFyY2ggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1MDBweCkgewogICAgLmFwdXMtaGVhZGVyIC53aWRnZXQtc2VhcmNoIC5hcHVzLXNlYXJjaCB7CiAgICAgICAgbWluLXdpZHRoOiAyODBweDsKICAgIH0KfQoKLmFwdXMtZm9vdGVyIC53aWRnZXQgLndpZGdldC10aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAxMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYXB1cy1mb290ZXIgLndpZGdldCAud2lkZ2V0LXRpdGxlIHsKICAgICAgICBtYXJnaW46IDAgMCAyMHB4OwogICAgfQp9CgovKiAzLiBmb3JtICovCgouYnRuLWFjdGlvbi1pY29uIHsKICAgIGhlaWdodDogMzRweDsKICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDM0cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGNvbG9yOiAjZmQ2ZDZkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYnRuLWFjdGlvbi1pY29uLmJ0bi1hY3Rpb24tc20gewogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICB3aWR0aDogMzBweDsKfQoKLmJ0bi1hY3Rpb24taWNvbi5idG4tYWN0aW9uLXNtOmJlZm9yZSB7CiAgICBsaW5lLWhlaWdodDogMzBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmJ0bi1hY3Rpb24taWNvbi5idG4tYWN0aW9uLWxnIHsKICAgICAgICBoZWlnaHQ6IDQ1cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDQ1cHg7CiAgICAgICAgd2lkdGg6IDQ1cHg7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIH0KICAgIC5idG4tYWN0aW9uLWljb24uYnRuLWFjdGlvbi1sZzpiZWZvcmUgewogICAgICAgIGxpbmUtaGVpZ2h0OiA0NXB4OwogICAgfQp9CgouYnRuLWFjdGlvbi1pY29uOmhvdmVyLAouYnRuLWFjdGlvbi1pY29uOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogI2ZkNmQ2ZDsKfQoKLmJ0bi1hY3Rpb24taWNvbi5yZWplYyB7CiAgICBjb2xvcjogI2YwYWQ0ZTsKICAgIGJhY2tncm91bmQ6ICNmZmY7Cn0KCi5idG4tYWN0aW9uLWljb24ucmVqZWM6aG92ZXIsCi5idG4tYWN0aW9uLWljb24ucmVqZWM6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZjBhZDRlOwp9CgouYnRuLWFjdGlvbi1pY29uLnJlamVjLnJlamVjdGVkIHsKICAgIG9wYWNpdHk6IDAuNjsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT02MCk7Cn0KCi5idG4tYWN0aW9uLWljb24uZG93bmxvYWQgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGNvbG9yOiAjMjIyOwp9CgouYnRuLWFjdGlvbi1pY29uLmRvd25sb2FkOmhvdmVyLAouYnRuLWFjdGlvbi1pY29uLmRvd25sb2FkOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogIzIyMjsKfQoKLmJ0bi1hY3Rpb24taWNvbi5yZW1vdmUgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGNvbG9yOiAjRjQ0MzM2Owp9CgouYnRuLWFjdGlvbi1pY29uLnJlbW92ZTpob3ZlciwKLmJ0bi1hY3Rpb24taWNvbi5yZW1vdmU6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjRjQ0MzM2Owp9CgouYnRuLWFjdGlvbi1pY29uOmJlZm9yZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBsaW5lLWhlaWdodDogMzRweDsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGNvbnRlbnQ6ICdcZjExMCc7CiAgICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnOwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgouYnRuLWFjdGlvbi1pY29uLmxvYWRpbmcgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKfQoKLmJ0bi1hY3Rpb24taWNvbi5sb2FkaW5nOmJlZm9yZSB7CiAgICBvcGFjaXR5OiAwLjg7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9ODApOwogICAgYW5pbWF0aW9uOiByb3RhdGVfaWNvbiAxNTAwbXMgbGluZWFyIDBzIG5vcm1hbCBub25lIGluZmluaXRlIHJ1bm5pbmc7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRlX2ljb24gMTUwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwp9Cgoudmlld19hbGwgewogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKfQoKLnZpZXdfYWxsIGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KCi5ydGwgLnZpZXdfYWxsIGkgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi52aWV3X2FsbDpob3ZlciB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVJY29uIDAuNnMgbGluZWFyIDBzIDEgbm9ybWFsOwogICAgLyogU2FmYXJpIDQuMCAtIDguMCAqLwogICAgYW5pbWF0aW9uOiBzbGlkZUljb24gMC42cyBsaW5lYXIgMHMgMSBub3JtYWw7Cn0KCi5idG4taWNvbiBpIHsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmJ0bi1pY29uIGkgewogICAgICAgIGZvbnQtc2l6ZTogMjhweCAhaW1wb3J0YW50OwogICAgfQogICAgLmJ0bi1pY29uIGkgLnByZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAucnRsIC5idG4taWNvbiBpIC5wcmUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQogICAgLmJ0bi1pY29uIGkgLm5leHQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAucnRsIC5idG4taWNvbiBpIC5uZXh0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgIH0KfQoKLmJ0bi1saW5rLWpvYiwKLmJ1dHRvbiwKLmJ0biB7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cn0KCi5idG4tbGluay1qb2IgLnByZSwKLmJ1dHRvbiAucHJlLAouYnRuIC5wcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiA4cHg7Cn0KCi5ydGwgLmJ0bi1saW5rLWpvYiAucHJlLAoucnRsIC5idXR0b24gLnByZSwKLnJ0bCAuYnRuIC5wcmUgewogICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmJ0bi1saW5rLWpvYiAubmV4dCwKLmJ1dHRvbiAubmV4dCwKLmJ0biAubmV4dCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tbGVmdDogOHB4Owp9CgoucnRsIC5idG4tbGluay1qb2IgLm5leHQsCi5ydGwgLmJ1dHRvbiAubmV4dCwKLnJ0bCAuYnRuIC5uZXh0IHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5idG4tY2FuZGlkYXRlLWFsZXJ0OmJlZm9yZSwKLmJ0bi1qb2ItYWxlcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0MiI7CiAgICBmb250LWZhbWlseTogIkZsYXRpY29uIjsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIGZvbnQtc2l6ZTogMjVweDsKICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgdmVydGljYWwtYWxpZ246IHN1YjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLnJ0bCAuYnRuLWNhbmRpZGF0ZS1hbGVydDpiZWZvcmUsCi5ydGwgLmJ0bi1qb2ItYWxlcnQ6YmVmb3JlIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouYnRuLW91dGxpbmUtbGlnaHQgewogICAgY29sb3I6ICNGRkZGRkY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1jb2xvcjogI0ZGRkZGRjsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVyLAouYnRuLW91dGxpbmUtbGlnaHQ6Zm9jdXMsCi5idG4tb3V0bGluZS1saWdodDphY3RpdmUsCi5idG4tb3V0bGluZS1saWdodC5hY3RpdmUgewogICAgY29sb3I6ICMyNjI2MjY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOwogICAgYm9yZGVyLWNvbG9yOiAjMjYyNjI2Owp9Cgoub3BlbiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGNvbG9yOiAjMjYyNjI2OwogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKICAgIGJvcmRlci1jb2xvcjogIzI2MjYyNjsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmFjdGl2ZSwKLmJ0bi1vdXRsaW5lLWxpZ2h0LmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Cgoub3BlbiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KCi5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZCwKLmJ0bi1vdXRsaW5lLWxpZ2h0LmRpc2FibGVkOmhvdmVyLAouYnRuLW91dGxpbmUtbGlnaHQuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZDphY3RpdmUsCi5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZC5hY3RpdmUsCi5idG4tb3V0bGluZS1saWdodFtkaXNhYmxlZF0sCi5idG4tb3V0bGluZS1saWdodFtkaXNhYmxlZF06aG92ZXIsCi5idG4tb3V0bGluZS1saWdodFtkaXNhYmxlZF06Zm9jdXMsCi5idG4tb3V0bGluZS1saWdodFtkaXNhYmxlZF06YWN0aXZlLAouYnRuLW91dGxpbmUtbGlnaHRbZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tb3V0bGluZS1saWdodCwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tb3V0bGluZS1saWdodDpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tb3V0bGluZS1saWdodDpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tb3V0bGluZS1saWdodDphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLW91dGxpbmUtbGlnaHQuYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWNvbG9yOiAjRkZGRkZGOwp9CgouYnRuLW91dGxpbmUtbGlnaHQgLmJhZGdlIHsKICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7Cn0KCi5idG4tc2hvcCB7CiAgICBwYWRkaW5nOiAwIDAgM3B4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2Y0MzQzNDsKfQoKLmJ0bi1vdXRsaW5lLmJ0bi1kZWZhdWx0IHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWNvbG9yOiAjZmZmOwogICAgY29sb3I6ICNmZmY7Cn0KCi5idG4tb3V0bGluZS5idG4tZGVmYXVsdDpob3ZlciB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZmY7Cn0KCi5idG4tb3V0bGluZS5idG4tcHJpbWFyeSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1jb2xvcjogIzI2MjYyNjsKICAgIGNvbG9yOiAjMjYyNjI2Owp9CgouYnRuLW91dGxpbmUuYnRuLXByaW1hcnk6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICMyNjI2MjY7CiAgICBiYWNrZ3JvdW5kOiAjMjYyNjI2Owp9CgouYnRuLW91dGxpbmUuYnRuLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItY29sb3I6ICM3OWI1MzA7CiAgICBjb2xvcjogIzc5YjUzMDsKfQoKLmJ0bi1vdXRsaW5lLmJ0bi1zdWNjZXNzOmhvdmVyIHsKICAgIGNvbG9yOiAjRkZGRkZGOwogICAgYm9yZGVyLWNvbG9yOiAjNzliNTMwOwogICAgYmFja2dyb3VuZDogIzc5YjUzMDsKfQoKLmJ0bi1vdXRsaW5lLmJ0bi1pbmZvIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWNvbG9yOiAjMjdjZWI0OwogICAgY29sb3I6ICMyN2NlYjQ7Cn0KCi5idG4tb3V0bGluZS5idG4taW5mbzpob3ZlciB7CiAgICBjb2xvcjogI0ZGRkZGRjsKICAgIGJvcmRlci1jb2xvcjogIzI3Y2ViNDsKICAgIGJhY2tncm91bmQ6ICMyN2NlYjQ7Cn0KCi5idG4tb3V0bGluZS5idG4tZGFuZ2VyIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWNvbG9yOiAjZTQ0MzQzOwogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi5idG4tb3V0bGluZS5idG4tZGFuZ2VyOmhvdmVyIHsKICAgIGNvbG9yOiAjRkZGRkZGOwogICAgYm9yZGVyLWNvbG9yOiAjZTQ0MzQzOwogICAgYmFja2dyb3VuZDogI2U0NDM0MzsKfQoKLmJ0bi1vdXRsaW5lLmJ0bi13YXJuaW5nIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWNvbG9yOiAjZjBhZDRlOwogICAgY29sb3I6ICNmMGFkNGU7Cn0KCi5idG4tb3V0bGluZS5idG4td2FybmluZzpob3ZlciB7CiAgICBjb2xvcjogI0ZGRkZGRjsKICAgIGJvcmRlci1jb2xvcjogI2YwYWQ0ZTsKICAgIGJhY2tncm91bmQ6ICNmMGFkNGU7Cn0KCi5idG4taW52ZXJzZS5idG4tcHJpbWFyeTpob3ZlciB7CiAgICBjb2xvcjogIzI2MjYyNjsKICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7Cn0KCi5idG4taW52ZXJzZS5idG4tc3VjY2Vzczpob3ZlciB7CiAgICBjb2xvcjogIzc5YjUzMDsKICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7Cn0KCi5idG4taW52ZXJzZS5idG4taW5mbzpob3ZlciB7CiAgICBjb2xvcjogIzI3Y2ViNDsKICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7Cn0KCi5idG4taW52ZXJzZS5idG4tZGFuZ2VyOmhvdmVyIHsKICAgIGNvbG9yOiAjZTQ0MzQzOwogICAgYmFja2dyb3VuZDogI0ZGRkZGRjsKfQoKLmJ0bi1pbnZlcnNlLmJ0bi13YXJuaW5nOmhvdmVyIHsKICAgIGNvbG9yOiAjZjBhZDRlOwogICAgYmFja2dyb3VuZDogI0ZGRkZGRjsKfQoKLmJ0bi1pbnZlcnNlLmJ0bi10aGVtZTpob3ZlciB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7Cn0KCi5idG4tY29tcGFyZS5idG4tb3V0bGluZSB7CiAgICBjb2xvcjogIzRjNGM0YzsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTllOWU5OwogICAgaGVpZ2h0OiA1MHB4Owp9CgouYnRuLWNvbXBhcmUuYnRuLW91dGxpbmU6aG92ZXIsCi5idG4tY29tcGFyZS5idG4tb3V0bGluZTphY3RpdmUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjNGM0YzRjOwogICAgYm9yZGVyLWNvbG9yOiAjNGM0YzRjOwp9Cgoudmlldy1tb3JlLWJ0biBpIHsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4Owp9CgoucnRsIC52aWV3LW1vcmUtYnRuIGkgewogICAgbWFyZ2luLXJpZ2h0OiAxMnB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5yZWFtb3JlIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogI2ZmNWE1ZiAhaW1wb3J0YW50OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIHBhZGRpbmc6IDAgMCA0cHg7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ZmNWE1ZjsKfQoKLnJlYW1vcmUgaSB7CiAgICBtYXJnaW4tbGVmdDogOHB4Owp9CgoucnRsIC5yZWFtb3JlIGkgewogICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1icm93c2UgewogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVmZjU7CiAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7Cn0KCi5idG4tYnJvd3NlOmhvdmVyLAouYnRuLWJyb3dzZTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7Cn0KCi5hcHVzLWxvYWRtb3JlLWJ0biB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAxMHB4IDMwcHg7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjMjQzMjRBOwogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6ICMyNDMyNEE7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFwdXMtbG9hZG1vcmUtYnRuIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDQwcHg7CiAgICB9Cn0KCi5hcHVzLWxvYWRtb3JlLWJ0bjpob3ZlciwKLmFwdXMtbG9hZG1vcmUtYnRuOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjMjQzMjRBOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI0MzI0QTsKfQoKLmFwdXMtbG9hZG1vcmUtYnRuLmxvYWRpbmcgewogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouYXB1cy1sb2FkbW9yZS1idG4ubG9hZGluZzphZnRlciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzgiIGhlaWdodD0iMzgiIHZpZXdCb3g9IjAgMCAzOCAzOCIgc3Ryb2tlPSJyZ2JhKDEwMiwxMDIsMTAyLDAuMjUpIiUzRSUzQ2cgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiUzRSUzQ2cgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxKSIgc3Ryb2tlLXdpZHRoPSIyIiUzRSUzQ2NpcmNsZSBzdHJva2Utb3BhY2l0eT0iLjU1IiBjeD0iMTgiIGN5PSIxOCIgcj0iMTgiLyUzRSUzQ3BhdGggZD0iTTM2IDE4YzAtOS45NC04LjA2LTE4LTE4LTE4IiUzRSUzQ2FuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgMTggMTgiIHRvPSIzNjAgMTggMTgiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8lM0UlM0MvcGF0aCUzRSUzQy9nJTNFJTNDL2clM0UlM0Mvc3ZnJTNFJyk7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGNvbnRlbnQ6ICIiOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7Cn0KCi52aWV3bW9yZS1wcm9kdWN0cy1idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Cgoudmlld21vcmUtcHJvZHVjdHMtYnRuOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTJweDsKICAgIGxlZnQ6IC0ycHg7CiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTsKICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTsKICAgIHotaW5kZXg6IDI7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpIHVybCguLi9pbWFnZXMvbG9hZGluZy1xdWljay5naWYpIG5vLXJlcGVhdCBzY3JvbGwgY2VudGVyIGNlbnRlci8yMHB4IGF1dG87Cn0KCi52aWV3bW9yZS1wcm9kdWN0cy1idG4ubG9hZGluZzpiZWZvcmUgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgpidXR0b246Zm9jdXMsCi5idG46Zm9jdXMgewogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5yYWRpdXMtMCB7CiAgICBib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKfQoKLnJhZGl1cy1jaXJjbGUgewogICAgYm9yZGVyLXJhZGl1czogMTAwcHggIWltcG9ydGFudDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwcHggIWltcG9ydGFudDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTAwcHggIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAxMDBweCAhaW1wb3J0YW50OwogICAgLW8tYm9yZGVyLXJhZGl1czogMTAwcHggIWltcG9ydGFudDsKfQoKLmJ0bi0zZCB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxMHB4IDAgcmdiYSgyNTUsIDkwLCA5NSwgMC44KTsKICAgIGJveC1zaGFkb3c6IDAgMCAxMHB4IDAgcmdiYSgyNTUsIDkwLCA5NSwgMC44KTsKfQoKLnJlYWQtbW9yZSB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgouYnRuLXdoaXRlIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmZjsKfQoKLmJ0bi13aGl0ZTphY3RpdmUsCi5idG4td2hpdGU6aG92ZXIgewogICAgY29sb3I6ICNmZjVhNWY7CiAgICBiYWNrZ3JvdW5kOiAjZjJmMmYyOwogICAgYm9yZGVyLWNvbG9yOiAjZjJmMmYyOwp9CgouYnRuLXB1cnBsZSB7CiAgICBiYWNrZ3JvdW5kOiAjYmM3Y2JmOwogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNiYzdjYmY7Cn0KCi5idG4tcHVycGxlOmFjdGl2ZSwKLmJ0bi1wdXJwbGU6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjYjM2YmI3OwogICAgYm9yZGVyLWNvbG9yOiAjYjM2YmI3Owp9CgouYnRuLWJyb3duIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY29sb3I6ICNjMGMwYzA7CiAgICBib3JkZXItY29sb3I6ICM0ZTRmNGY7Cn0KCi5idG4tYnJvd246Zm9jdXMsCi5idG4tYnJvd246aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1jb2xvcjogI2ZmZjsKfQoKLmJ0bi1iYWNrIHsKICAgIHBhZGRpbmc6IDhweCAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAycHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgNTgsIDExNCwgMC4xKTsKICAgIGNvbG9yOiAjZmY3YzM5OwogICAgYm9yZGVyLWNvbG9yOiAjZmY3YzM5Owp9CgouYnRuLWJhY2s6Zm9jdXMsCi5idG4tYmFjazpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZjNhNzI7CiAgICBib3JkZXItY29sb3I6ICNmZjdjMzk7Cn0KCi5idG4td2hpdGUuYnRuLWJyLXdoaXRlIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGJvcmRlci1jb2xvcjogI2ZmZjsKfQoKLmJ0bi13aGl0ZS5idG4tYnItd2hpdGU6YWN0aXZlLAouYnRuLXdoaXRlLmJ0bi1ici13aGl0ZTpob3ZlciB7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGJhY2tncm91bmQ6ICNkOWQ5ZDk7CiAgICBib3JkZXItY29sb3I6ICNkOWQ5ZDk7Cn0KCi5idG4tZ3JhZGllbnQtdGhlbWUgewogICAgei1pbmRleDogMTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmNWE1ZiwgIzI0MzI0YSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmNWE1ZiwgIzI0MzI0YSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjZmY1YTVmLCAjMjQzMjRhKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmNWE1ZiwgIzI0MzI0YSk7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgcGFkZGluZzogMXB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgouYnRuLWdyYWRpZW50LXRoZW1lIC5idG4gewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9CgouYnRuLWdyYWRpZW50LXRoZW1lIC5idG46YmVmb3JlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC0xcHg7CiAgICBsZWZ0OiAtMXB4OwogICAgd2lkdGg6IGNhbGMoMTAwJSArIDJweCk7CiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7CiAgICB6LWluZGV4OiAtMTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmNWE1ZiwgIzI0MzI0YSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmNWE1ZiwgIzI0MzI0YSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjZmY1YTVmLCAjMjQzMjRhKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmNWE1ZiwgIzI0MzI0YSk7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7Cn0KCi5idG4tZ3JhZGllbnQtdGhlbWU6aG92ZXIgLmJ0biB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmJ0bi1ncmFkaWVudC10aGVtZTpob3ZlciAuYnRuOmJlZm9yZSB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5idG4tZ3JhZGllbnQtcHJpbWFyeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCAjZmYzMzdkIDAlLCAjZmQ1NTU5IDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICNmZjMzN2QgMCUsICNmZDU1NTkgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNmZjMzN2QgMCUsICNmZDU1NTkgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjRkZGRjMzN0QnLCBlbmRDb2xvcnN0cj0nI0ZGRkQ1NTU5JywgR3JhZGllbnRUeXBlPTEpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5idG4tZ3JhZGllbnQtcHJpbWFyeSAuZWxlbWVudG9yLWJ1dHRvbjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICNmZDU1NTkgMCUsICNmZjMzN2QgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQobGVmdCwgI2ZkNTU1OSAwJSwgI2ZmMzM3ZCAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZkNTU1OSAwJSwgI2ZmMzM3ZCAxMDAlKTsKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNGRkZENTU1OScsIGVuZENvbG9yc3RyPScjRkZGRjMzN0QnLCBHcmFkaWVudFR5cGU9MSk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0OwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDsKfQoKLmJ0bi1ncmFkaWVudC1wcmltYXJ5IC5lbGVtZW50b3ItYnV0dG9uPiogewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjsKfQoKLmJ0bi1ncmFkaWVudC1wcmltYXJ5IC5lbGVtZW50b3ItYnV0dG9uOmhvdmVyOmJlZm9yZSwKLmJ0bi1ncmFkaWVudC1wcmltYXJ5IC5lbGVtZW50b3ItYnV0dG9uOmFjdGl2ZTpiZWZvcmUgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgouYnRuLXJlYWRtb3JlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmJ0bi1yZWFkbW9yZTpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDFweDsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDFweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgouYnRuLXJlYWRtb3JlIGkgewogICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5ydGwgLmJ0bi1yZWFkbW9yZSBpIHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5idG4tcmVhZG1vcmU6aG92ZXI6YmVmb3JlIHsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKfQoKLmJ0bi1saWdodGVuIHsKICAgIGJvcmRlci1jb2xvcjogI2ZmZjsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tbGlnaHRlbjpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWNvbG9yOiAjZmZmOwp9CgouYnRuLW91dGxpbmUuYnRuLXdoaXRlIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNmZmY7Cn0KCi5idG4tb3V0bGluZS5idG4td2hpdGU6YWN0aXZlLAouYnRuLW91dGxpbmUuYnRuLXdoaXRlOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLmJ0bi1waW5rIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2UzYTNhMjsKICAgIGJvcmRlci1jb2xvcjogI2UzYTNhMjsKfQoKLmJ0bi1waW5rOmhvdmVyLAouYnRuLXBpbms6Zm9jdXMsCi5idG4tcGluazphY3RpdmUsCi5idG4tcGluay5hY3RpdmUsCi5vcGVuPi5idG4tcGluay5kcm9wZG93bi10b2dnbGUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDc3YzdiOwogICAgYm9yZGVyLWNvbG9yOiAjZDc3YzdiOwp9CgouYnRuLXBpbms6YWN0aXZlLAouYnRuLXBpbmsuYWN0aXZlLAoub3Blbj4uYnRuLXBpbmsuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KCi5idG4tcGluay5kaXNhYmxlZCwKLmJ0bi1waW5rLmRpc2FibGVkOmhvdmVyLAouYnRuLXBpbmsuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tcGluay5kaXNhYmxlZDphY3RpdmUsCi5idG4tcGluay5kaXNhYmxlZC5hY3RpdmUsCi5idG4tcGlua1tkaXNhYmxlZF0sCi5idG4tcGlua1tkaXNhYmxlZF06aG92ZXIsCi5idG4tcGlua1tkaXNhYmxlZF06Zm9jdXMsCi5idG4tcGlua1tkaXNhYmxlZF06YWN0aXZlLAouYnRuLXBpbmtbZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcGluaywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcGluazpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcGluazpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcGluazphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXBpbmsuYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2EzYTI7CiAgICBib3JkZXItY29sb3I6ICNlM2EzYTI7Cn0KCi5idG4tcGluayAuYmFkZ2UgewogICAgY29sb3I6ICNlM2EzYTI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouYnRuLXByaW1hcnkuYnRuLWludmVyc2U6YWN0aXZlLAouYnRuLXByaW1hcnkuYnRuLWludmVyc2U6aG92ZXIgewogICAgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50OwogICAgY29sb3I6ICMyNjI2MjYgIWltcG9ydGFudDsKICAgIGJvcmRlci1jb2xvcjogIzI2MjYyNiAhaW1wb3J0YW50Owp9CgouYnRuLXRoZW1lIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLmJ0bi10aGVtZTpob3ZlciwKLmJ0bi10aGVtZTpmb2N1cywKLmJ0bi10aGVtZTphY3RpdmUsCi5idG4tdGhlbWUuYWN0aXZlLAoub3Blbj4uYnRuLXRoZW1lLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjI3MmU7CiAgICBib3JkZXItY29sb3I6ICNmZjI3MmU7Cn0KCi5idG4tdGhlbWU6YWN0aXZlLAouYnRuLXRoZW1lLmFjdGl2ZSwKLm9wZW4+LmJ0bi10aGVtZS5kcm9wZG93bi10b2dnbGUgewogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQoKLmJ0bi10aGVtZS5kaXNhYmxlZCwKLmJ0bi10aGVtZS5kaXNhYmxlZDpob3ZlciwKLmJ0bi10aGVtZS5kaXNhYmxlZDpmb2N1cywKLmJ0bi10aGVtZS5kaXNhYmxlZDphY3RpdmUsCi5idG4tdGhlbWUuZGlzYWJsZWQuYWN0aXZlLAouYnRuLXRoZW1lW2Rpc2FibGVkXSwKLmJ0bi10aGVtZVtkaXNhYmxlZF06aG92ZXIsCi5idG4tdGhlbWVbZGlzYWJsZWRdOmZvY3VzLAouYnRuLXRoZW1lW2Rpc2FibGVkXTphY3RpdmUsCi5idG4tdGhlbWVbZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tdGhlbWUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXRoZW1lOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi10aGVtZTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tdGhlbWU6YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi10aGVtZS5hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLmJ0bi10aGVtZSAuYmFkZ2UgewogICAgY29sb3I6ICNmZjVhNWY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouYnRuLXRoZW1lOmFjdGl2ZSwKLmJ0bi10aGVtZTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmJ0bi15ZWxsb3cgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVhYzM2OwogICAgYm9yZGVyLWNvbG9yOiAjZmVhYzM2Owp9CgouYnRuLXllbGxvdzpob3ZlciwKLmJ0bi15ZWxsb3c6Zm9jdXMsCi5idG4teWVsbG93OmFjdGl2ZSwKLmJ0bi15ZWxsb3cuYWN0aXZlLAoub3Blbj4uYnRuLXllbGxvdy5kcm9wZG93bi10b2dnbGUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU5NzAzOwogICAgYm9yZGVyLWNvbG9yOiAjZmU5NzAzOwp9CgouYnRuLXllbGxvdzphY3RpdmUsCi5idG4teWVsbG93LmFjdGl2ZSwKLm9wZW4+LmJ0bi15ZWxsb3cuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KCi5idG4teWVsbG93LmRpc2FibGVkLAouYnRuLXllbGxvdy5kaXNhYmxlZDpob3ZlciwKLmJ0bi15ZWxsb3cuZGlzYWJsZWQ6Zm9jdXMsCi5idG4teWVsbG93LmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi15ZWxsb3cuZGlzYWJsZWQuYWN0aXZlLAouYnRuLXllbGxvd1tkaXNhYmxlZF0sCi5idG4teWVsbG93W2Rpc2FibGVkXTpob3ZlciwKLmJ0bi15ZWxsb3dbZGlzYWJsZWRdOmZvY3VzLAouYnRuLXllbGxvd1tkaXNhYmxlZF06YWN0aXZlLAouYnRuLXllbGxvd1tkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi15ZWxsb3csCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXllbGxvdzpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4teWVsbG93OmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi15ZWxsb3c6YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi15ZWxsb3cuYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZWFjMzY7CiAgICBib3JkZXItY29sb3I6ICNmZWFjMzY7Cn0KCi5idG4teWVsbG93IC5iYWRnZSB7CiAgICBjb2xvcjogI2ZlYWMzNjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5idG4teWVsbG93OmFjdGl2ZSwKLmJ0bi15ZWxsb3c6aG92ZXIgewogICAgY29sb3I6ICNmZmY7Cn0KCi5idG4tZGFyayB7CiAgICBjb2xvcjogIzI1MjUyNTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2NjY2M7CiAgICBib3JkZXItY29sb3I6ICNjY2NjY2M7Cn0KCi5idG4tZGFyazpob3ZlciwKLmJ0bi1kYXJrOmZvY3VzLAouYnRuLWRhcms6YWN0aXZlLAouYnRuLWRhcmsuYWN0aXZlLAoub3Blbj4uYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGNvbG9yOiAjMjUyNTI1OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2IzYjNiMzsKICAgIGJvcmRlci1jb2xvcjogI2IzYjNiMzsKfQoKLmJ0bi1kYXJrOmFjdGl2ZSwKLmJ0bi1kYXJrLmFjdGl2ZSwKLm9wZW4+LmJ0bi1kYXJrLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouYnRuLWRhcmsuZGlzYWJsZWQsCi5idG4tZGFyay5kaXNhYmxlZDpob3ZlciwKLmJ0bi1kYXJrLmRpc2FibGVkOmZvY3VzLAouYnRuLWRhcmsuZGlzYWJsZWQ6YWN0aXZlLAouYnRuLWRhcmsuZGlzYWJsZWQuYWN0aXZlLAouYnRuLWRhcmtbZGlzYWJsZWRdLAouYnRuLWRhcmtbZGlzYWJsZWRdOmhvdmVyLAouYnRuLWRhcmtbZGlzYWJsZWRdOmZvY3VzLAouYnRuLWRhcmtbZGlzYWJsZWRdOmFjdGl2ZSwKLmJ0bi1kYXJrW2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhcmssCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhcms6aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhcms6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhcms6YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYXJrLmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjY2NjOwogICAgYm9yZGVyLWNvbG9yOiAjY2NjY2NjOwp9CgouYnRuLWRhcmsgLmJhZGdlIHsKICAgIGNvbG9yOiAjY2NjY2NjOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjUyNTsKfQoKLmJ0bi1kYXJrOmFjdGl2ZSwKLmJ0bi1kYXJrOmhvdmVyIHsKICAgIGNvbG9yOiAjMTgxODE4Owp9CgouYnRuLXRoZW1lLXNlY29uZCB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyNDMyNGE7CiAgICBib3JkZXItY29sb3I6ICMyNDMyNGE7Cn0KCi5idG4tdGhlbWUtc2Vjb25kOmhvdmVyLAouYnRuLXRoZW1lLXNlY29uZDpmb2N1cywKLmJ0bi10aGVtZS1zZWNvbmQ6YWN0aXZlLAouYnRuLXRoZW1lLXNlY29uZC5hY3RpdmUsCi5vcGVuPi5idG4tdGhlbWUtc2Vjb25kLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxMzFiMjg7CiAgICBib3JkZXItY29sb3I6ICMxMzFiMjg7Cn0KCi5idG4tdGhlbWUtc2Vjb25kOmFjdGl2ZSwKLmJ0bi10aGVtZS1zZWNvbmQuYWN0aXZlLAoub3Blbj4uYnRuLXRoZW1lLXNlY29uZC5kcm9wZG93bi10b2dnbGUgewogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQoKLmJ0bi10aGVtZS1zZWNvbmQuZGlzYWJsZWQsCi5idG4tdGhlbWUtc2Vjb25kLmRpc2FibGVkOmhvdmVyLAouYnRuLXRoZW1lLXNlY29uZC5kaXNhYmxlZDpmb2N1cywKLmJ0bi10aGVtZS1zZWNvbmQuZGlzYWJsZWQ6YWN0aXZlLAouYnRuLXRoZW1lLXNlY29uZC5kaXNhYmxlZC5hY3RpdmUsCi5idG4tdGhlbWUtc2Vjb25kW2Rpc2FibGVkXSwKLmJ0bi10aGVtZS1zZWNvbmRbZGlzYWJsZWRdOmhvdmVyLAouYnRuLXRoZW1lLXNlY29uZFtkaXNhYmxlZF06Zm9jdXMsCi5idG4tdGhlbWUtc2Vjb25kW2Rpc2FibGVkXTphY3RpdmUsCi5idG4tdGhlbWUtc2Vjb25kW2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXRoZW1lLXNlY29uZCwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tdGhlbWUtc2Vjb25kOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi10aGVtZS1zZWNvbmQ6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXRoZW1lLXNlY29uZDphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXRoZW1lLXNlY29uZC5hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI0MzI0YTsKICAgIGJvcmRlci1jb2xvcjogIzI0MzI0YTsKfQoKLmJ0bi10aGVtZS1zZWNvbmQgLmJhZGdlIHsKICAgIGNvbG9yOiAjMjQzMjRhOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmJ0bi10aGVtZS1zZWNvbmQ6YWN0aXZlLAouYnRuLXRoZW1lLXNlY29uZDpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmJ0bi10aGVtZS5idG4tb3V0bGluZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CgouYnRuLXRoZW1lLmJ0bi1vdXRsaW5lOmhvdmVyLAouYnRuLXRoZW1lLmJ0bi1vdXRsaW5lOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7Cn0KCi5tb3JlLWxpbmsgewogICAgY29sb3I6ICNmZjVhNWY7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbWFyZ2luOiAxMHB4IDA7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoKLm1vcmUtbGluazpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5idG4tc2hhZGVkLXNtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmJ0bi1zaGFkZWQtc206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7CiAgICBib3JkZXItd2lkdGg6IDIwcHggMTBweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTsKfQoKLyogU2VhcmNoCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouc2VhcmNoLXBvcHVwIC5kcm9wZG93bi1tZW51IHsKICAgIHBhZGRpbmc6IDEwcHg7Cn0KCi5idG4tYWN0aW9uIHsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHBhZGRpbmc6IDBweCAxMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZSAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlIDBzOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5zZWFyY2hmb3JtIC5pbnB1dC1zZWFyY2ggewogICAgcGFkZGluZzogMTVweDsKICAgIGJvcmRlci1yaWdodDogMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5ydGwgLnNlYXJjaGZvcm0gLmlucHV0LXNlYXJjaCB7CiAgICBib3JkZXItbGVmdDogMDsKICAgIGJvcmRlci1yaWdodDogaW5oZXJpdDsKfQoKLnNlYXJjaGZvcm0gLmJ0bi1zZWFyY2ggewogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGNvbG9yOiAjYWRhZmFjOwogICAgcGFkZGluZzogMTJweCA4cHg7Cn0KCi5zZWFyY2hmb3JtIC5pbnB1dC1ncm91cC1idG4gewogICAgbGluZS1oZWlnaHQ6IDEwMCU7Cn0KCi5zZWFyY2gtY2F0ZWdvcnkgLmJ0biB7CiAgICBtYXJnaW4tbGVmdDogMTBweCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50Owp9CgoucnRsIC5zZWFyY2gtY2F0ZWdvcnkgLmJ0biB7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHggIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9Cgouc2VhcmNoLWNhdGVnb3J5IC53cG8tc2VhcmNoLWlubmVyIGxhYmVsLmZvcm0tY29udHJvbCB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKfQoKLnNlYXJjaC1jYXRlZ29yeSBzZWxlY3QgewogICAgYm9yZGVyOiBub25lOwogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgICBmb250LXdlaWdodDogNTAwOwp9CgovKiBjb21tZW50IGZvcm0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5jaG9zZW4tY29udGFpbmVyIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5pbnB1dC1ncm91cC1mb3JtIHsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW8tYm9yZGVyLXJhZGl1czogM3B4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBtYXJnaW46IDAgMCA1cHggMDsKfQoKLmlucHV0LWdyb3VwLWZvcm0gLmZvcm0tY29udHJvbC1yZXZlcnNlZCB7CiAgICBib3JkZXI6IDBweDsKICAgIGJhY2tncm91bmQ6ICMyMjIyMjI7CiAgICBjb2xvcjogI2NjY2NjYzsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGhlaWdodDogMzRweDsKfQoKLmlucHV0LWdyb3VwLWZvcm0gLmZvcm0tY29udHJvbC1yZXZlcnNlZDpob3ZlciwKLmlucHV0LWdyb3VwLWZvcm0gLmZvcm0tY29udHJvbC1yZXZlcnNlZDpmb2N1cyB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgouaW5wdXQtZ3JvdXAtZm9ybSAuaW5wdXQtZ3JvdXAtYWRkb24gewogICAgYm9yZGVyOiAwOwogICAgYmFja2dyb3VuZDogIzIyMjIyMjsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKfQoKLmJ0bi1kYXJrLW5vcm1hbCB7CiAgICBiYWNrZ3JvdW5kOiAjNDM1ZjdhOwogICAgY29sb3I6ICNmNWY1ZjU7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGxpbmUtaGVpZ2h0OiA1MHB4OwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5idG4tZGFyay1ub3JtYWw6Zm9jdXMsCi5idG4tZGFyay1ub3JtYWw6aG92ZXIgewogICAgYmFja2dyb3VuZDogIzNhNTI2YTsKICAgIGNvbG9yOiAjZjVmNWY1Owp9CgouYnRuLWNvbXBhcmUsCi5idG4tZmF2b3JpdGVzIHsKICAgIGZvbnQtc2l6ZTogMjFweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9CgouYnRuLWNvbXBhcmUgLmNvdW50LAouYnRuLWZhdm9yaXRlcyAuY291bnQgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgcGFkZGluZzogNHB4IDdweDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTRweDsKfQoKLnJ0bCAuYnRuLWNvbXBhcmUgLmNvdW50LAoucnRsIC5idG4tZmF2b3JpdGVzIC5jb3VudCB7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5idG4tdW5kZXJsaW5lIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgouYnRuLXVuZGVybGluZTpob3ZlciB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmJ0bi1zdWJtaXQgLmJ1dHRvbi1pY29uIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogOHB4Owp9CgoucnRsIC5idG4tc3VibWl0IC5idXR0b24taWNvbiB7CiAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouYnRuLXZpZXctYWxsLXBob3RvcyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouYnRuLXZpZXctYWxsLXBob3RvcyBpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogOHB4Owp9CgoucnRsIC5idG4tdmlldy1hbGwtcGhvdG9zIGkgewogICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgICAuYnRuLXZpZXctYWxsLXBob3RvcyB7CiAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICB9Cn0KCi5idG4tdmlldyBpLAoudmlldy1teS1saXN0aW5ncyBpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBmb250LXNpemU6IDEwcHg7Cn0KCi5ydGwgLmJ0bi12aWV3IGksCi5ydGwgLnZpZXctbXktbGlzdGluZ3MgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouYnRuLXZpZXcgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5idG4tc2hvdy1maWx0ZXIgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiAwOwp9CgouYnRuLXNob3ctZmlsdGVyIGkgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1M2M0MTsKICAgIHBhZGRpbmc6IDVweCAxMHB4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmJ0bi1zaG93LWZpbHRlciBpIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICB9Cn0KCi5idG4tc2hvdy1maWx0ZXIgc3BhbiB7CiAgICBwYWRkaW5nOiA1cHggMjBweDsKfQoKLmJ0bi1zaG93LWZpbHRlcjpob3ZlciwKLmJ0bi1zaG93LWZpbHRlcjpmb2N1cyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNTNjNDE7Cn0KCi8qIDQuIGxheW91dCAqLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgYXB1cy10b3BiYXIKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLm1tLW1lbnUgLndwbWwtbHMtbGVnYWN5LWRyb3Bkb3duIGEsCi50b3BiYXItcmlnaHQtaW5uZXIgLndwbWwtbHMtbGVnYWN5LWRyb3Bkb3duIGEgewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMDsKICAgIHBhZGRpbmctYm90dG9tOiAycHg7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgoubW0tbWVudSAud3BtbC1scy1sZWdhY3ktZHJvcGRvd24gLndwbWwtbHMtc3ViLW1lbnUsCi50b3BiYXItcmlnaHQtaW5uZXIgLndwbWwtbHMtbGVnYWN5LWRyb3Bkb3duIC53cG1sLWxzLXN1Yi1tZW51IHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiA1cHggMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDJweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgIGJveC1zaGFkb3c6IDBweCAycHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi5tbS1tZW51IC53cG1sLWxzLWxlZ2FjeS1kcm9wZG93biAud3BtbC1scy1zdWItbWVudSBhLAoudG9wYmFyLXJpZ2h0LWlubmVyIC53cG1sLWxzLWxlZ2FjeS1kcm9wZG93biAud3BtbC1scy1zdWItbWVudSBhIHsKICAgIHBhZGRpbmc6IDVweCAxMHB4Owp9CgoubW0tbWVudSAud3BtbC1scy1sZWdhY3ktZHJvcGRvd24sCi50b3BiYXItcmlnaHQtaW5uZXIgLndwbWwtbHMtbGVnYWN5LWRyb3Bkb3duIHsKICAgIHdpZHRoOiBhdXRvOwp9CgoubW0tbWVudSAud3BtbC1scy1sZWdhY3ktZHJvcGRvd24gLndwbWwtbHMtc3ViLW1lbnUsCi50b3BiYXItcmlnaHQtaW5uZXIgLndwbWwtbHMtbGVnYWN5LWRyb3Bkb3duIC53cG1sLWxzLXN1Yi1tZW51IHsKICAgIG1pbi13aWR0aDogMTQwcHg7Cn0KCi50b3BiYXItcmlnaHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5ydGwgLnRvcGJhci1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgoudG9wYmFyLXJpZ2h0IC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXdpZGdldC1zcGFjZXIpIHsKICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZy1sZWZ0OiAxOHB4OwogICAgbWFyZ2luLWxlZnQ6IDE4cHg7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlYmViZWI7CiAgICB3aWR0aDogYXV0bzsKfQoKLnJ0bCAudG9wYmFyLXJpZ2h0IC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXdpZGdldC1zcGFjZXIpIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE4cHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCi5ydGwgLnRvcGJhci1yaWdodCAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci13aWRnZXQtc3BhY2VyKSB7CiAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLnJ0bCAudG9wYmFyLXJpZ2h0IC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLXdpZGdldC1zcGFjZXIpIHsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlYmViZWI7CiAgICBib3JkZXItbGVmdDogaW5oZXJpdDsKfQoKLnRvcGJhci1yaWdodCAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci13aWRnZXQtc3BhY2VyKTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiAwOwp9CgoudG9wYmFyLXJpZ2h0IC50b3Atd3JhcHBlci1tZW51IC5sb2dpbiBpLAoudG9wYmFyLXJpZ2h0IC50b3Atd3JhcHBlci1tZW51IC5kcm9wLWRvdyBpIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLnRvcGJhci1yaWdodCAubGFuZ3VhZ2Utd3JhcHBlciAuZHJvcGRvd24tbWVudS1yaWdodCB7CiAgICByaWdodDogLTIwcHg7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgIEhlYWRlcgpcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpib2R5LnBhZ2UtdGVtcGxhdGUtcGFnZS1kYXNoYm9hcmQgI2FwdXMtaGVhZGVyLApib2R5LmZpeC1oZWFkZXIgI2FwdXMtaGVhZGVyIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7Cn0KCi50b2dldGhlci1zaWRlYmFyLWFjY291bnQgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi50b2dldGhlci1zaWRlYmFyLWFjY291bnQ6aG92ZXIgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi50b3Atd3JhcHBlci1tZW51IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLnRvcC13cmFwcGVyLW1lbnU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMDAlOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxNXB4Owp9CgoudG9wLXdyYXBwZXItbWVudSAuaW5uZXItdG9wLW1lbnUgewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKICAgIHJpZ2h0OiAwOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIHotaW5kZXg6IDQ7CiAgICBtaW4td2lkdGg6IDIwMHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICBib3gtc2hhZG93OiAwIDAgMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoKLnJ0bCAudG9wLXdyYXBwZXItbWVudSAuaW5uZXItdG9wLW1lbnUgewogICAgbGVmdDogMDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoucnRsIC50b3Atd3JhcHBlci1tZW51IC5pbm5lci10b3AtbWVudSB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKLnRvcC13cmFwcGVyLW1lbnU6aG92ZXIgLmlubmVyLXRvcC1tZW51IHsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwp9CgoudG9wLXdyYXBwZXItbWVudSAuaGVhZGVyX2N1c3RvbWVyX2xvZ2luIHsKICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICByaWdodDogMDsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIG1pbi13aWR0aDogMzIwcHg7CiAgICB6LWluZGV4OiA5Owp9CgoucnRsIC50b3Atd3JhcHBlci1tZW51IC5oZWFkZXJfY3VzdG9tZXJfbG9naW4gewogICAgbGVmdDogMDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoudG9wLXdyYXBwZXItbWVudTpob3ZlciAuaGVhZGVyX2N1c3RvbWVyX2xvZ2luIHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNXB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgYm94LXNoYWRvdzogMCA1cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7Cn0KCi50b3Atd3JhcHBlci1tZW51IC5pbmZvci1hY2NvdW50IC5hdmF0YXItd3JhcHBlciB7CiAgICB3aWR0aDogMzVweDsKICAgIGhlaWdodDogMzVweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBmbG9hdDogbGVmdDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIC8qIFNhZmFyaSAqLwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLyogU2FmYXJpIDcuMCsgKi8KICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoucnRsIC50b3Atd3JhcHBlci1tZW51IC5pbmZvci1hY2NvdW50IC5hdmF0YXItd3JhcHBlciB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi50b3Atd3JhcHBlci1tZW51IC5pbmZvci1hY2NvdW50IC5hdmF0YXItd3JhcHBlciBpbWcgewogICAgbWFyZ2luOiAwOwp9CgoudG9wLXdyYXBwZXItbWVudSAuaW5mb3ItYWNjb3VudCAubmFtZS1hY291bnQgewogICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gMzVweCk7Cn0KCi5ydGwgLnRvcC13cmFwcGVyLW1lbnUgLmluZm9yLWFjY291bnQgLm5hbWUtYWNvdW50IHsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLnRvcC13cmFwcGVyLW1lbnUgLmluZm9yLWFjY291bnQgLm5hbWUtYWNvdW50IGkgewogICAgbWFyZ2luLWxlZnQ6IDdweDsKfQoKLnJ0bCAudG9wLXdyYXBwZXItbWVudSAuaW5mb3ItYWNjb3VudCAubmFtZS1hY291bnQgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDdweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgoudG9wLXdyYXBwZXItbWVudSAubG9naW4taWNvbiB7CiAgICBmb250LXNpemU6IDIxcHg7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogNXB4Owp9CgoucnRsIC50b3Atd3JhcHBlci1tZW51IC5sb2dpbi1pY29uIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi50b3Atd3JhcHBlci1tZW51Lm5vdC1sb2dpbiB7CiAgICBmb250LXNpemU6IDE2cHg7Cn0KCi5oZWFkZXJfY3VzdG9tZXJfbG9naW4gewogICAgcGFkZGluZzogMzBweDsKfQoKLmhlYWRlcl9jdXN0b21lcl9sb2dpbiAudGl0bGUgewogICAgbWFyZ2luOiAwIDAgMTBweDsKICAgIGZvbnQtc2l6ZTogMjVweDsKfQoKLmhlYWRlci1sZWZ0IFtjbGFzcyo9Imljb24iXSB7CiAgICBmb250LXNpemU6IDE2cHg7Cn0KCi5oZWFkZXItbGVmdCAuYnRuLXNlYXJjaC10b3AgewogICAgbWFyZ2luLXRvcDogNHB4Owp9CgouaGVhZGVyLWxlZnQgLmljb24tbWVudS10b3AgW2NsYXNzKj0iaWNvbiJdIHsKICAgIGZvbnQtc2l6ZTogMzBweDsKfQoKLmhlYWRlci1sZWZ0PmRpdiB7CiAgICBtYXJnaW4tcmlnaHQ6IDIycHg7Cn0KCi5ydGwgLmhlYWRlci1sZWZ0PmRpdiB7CiAgICBtYXJnaW4tbGVmdDogMjJweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmhlYWRlci1sZWZ0PmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1yaWdodDogMHB4Owp9CgoucnRsIC5oZWFkZXItbGVmdD5kaXY6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouaGVhZGVyLXJpZ2h0IFtjbGFzcyo9Imljb24iXSB7CiAgICBmb250LXNpemU6IDE2cHg7Cn0KCi5oZWFkZXItcmlnaHQ+ZGl2IHsKICAgIG1hcmdpbi1sZWZ0OiAyNXB4Owp9CgoucnRsIC5oZWFkZXItcmlnaHQ+ZGl2IHsKICAgIG1hcmdpbi1yaWdodDogMjVweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouaGVhZGVyLXJpZ2h0PmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwcHg7Cn0KCi5ydGwgLmhlYWRlci1yaWdodD5kaXY6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDBweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouaGVhZGVyLWRlZmF1bHQgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuaGVhZGVyLWRlZmF1bHQgLm1lZ2FtZW51PmxpIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDMycHg7CiAgICB9CiAgICAucnRsIC5oZWFkZXItZGVmYXVsdCAubWVnYW1lbnU+bGkgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMnB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KICAgIC5oZWFkZXItZGVmYXVsdCAubWVnYW1lbnU+bGk6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQogICAgLnJ0bCAuaGVhZGVyLWRlZmF1bHQgLm1lZ2FtZW51PmxpOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLmhlYWRlci1tb2JpbGUgewogICAgcGFkZGluZzogMTVweCAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlIDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMXMgZWFzZSAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UgMHM7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiA1OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwp9CgouaGVhZGVyLW1vYmlsZSAuYnRuLXNob3dtZW51IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIHBhZGRpbmc6IDhweDsKICAgIGZvbnQtc2l6ZTogMjBweDsKfQoKLmhlYWRlci1tb2JpbGUgLmJ0bi1tZW51LWFjY291bnQgewogICAgZm9udC1zaXplOiAyMnB4Owp9Cgouc3RpY2t5LWhlYWRlciB7CiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsKICAgIHotaW5kZXg6IDU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogICAgYm94LXNoYWRvdzogMCAycHggNnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9Cgouc3RpY2t5LWhlYWRlci5zdGlja3ktaGVhZGVyLWhpZGRlbiB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTEwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMTAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTEwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTExMCUpOwp9Cgouc3RpY2t5LWhlYWRlciAudmVydGljYWwtd3JhcHBlci5zaG93LWFsd2F5cyAuY29udGVudC12ZXJ0aWNhbCB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5zdGlja3ktaGVhZGVyIC52ZXJ0aWNhbC13cmFwcGVyLnNob3ctYWx3YXlzOmhvdmVyIC5jb250ZW50LXZlcnRpY2FsIHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5oZWFkZXJfdHJhbnNwYXJlbnQgLmFwdXMtaGVhZGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIHotaW5kZXg6IDc7Cn0KCi5oZWFkZXJfdHJhbnNwYXJlbnQ6bm90KC5maXgtaGVhZGVyKSAubWFpbi1zdGlja3ktaGVhZGVyOm5vdCguc3RpY2t5LWhlYWRlcikgc2VjdGlvbi5lbGVtZW50b3ItZWxlbWVudDpub3QoLm5vLXRyYW5zcGFyZW50KSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouaGVhZGVyX3RyYW5zcGFyZW50Om5vdCguZml4LWhlYWRlcikgLm1haW4tc3RpY2t5LWhlYWRlcjpub3QoLnN0aWNreS1oZWFkZXIpIHNlY3Rpb24uZWxlbWVudG9yLWVsZW1lbnQ6bm90KC5uby10cmFuc3BhcmVudCkgLmFwdXMtdXNlci1yZWdpc3RlciwKLmhlYWRlcl90cmFuc3BhcmVudDpub3QoLmZpeC1oZWFkZXIpIC5tYWluLXN0aWNreS1oZWFkZXI6bm90KC5zdGlja3ktaGVhZGVyKSBzZWN0aW9uLmVsZW1lbnRvci1lbGVtZW50Om5vdCgubm8tdHJhbnNwYXJlbnQpIC5hcHVzLXVzZXItbG9naW4gewogICAgY29sb3I6ICNmZmY7Cn0KCi5oZWFkZXJfdHJhbnNwYXJlbnQ6bm90KC5maXgtaGVhZGVyKSAubm9fa2VlcF9oZWFkZXIgc2VjdGlvbi5lbGVtZW50b3ItZWxlbWVudDpub3QoLm5vLXRyYW5zcGFyZW50KSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouaGVhZGVyX3RyYW5zcGFyZW50IC5tYWluLXN0aWNreS1oZWFkZXI6bm90KC5zdGlja3ktaGVhZGVyKSAubWVnYW1lbnU+bGk+YSB7CiAgICBjb2xvcjogI2ZmZjsKfQoKYm9keS5oZWFkZXJfZml4ZWQgLmFwdXMtaGVhZGVyIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHdpZHRoOiAxMDAlOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7Cn0KCi5tYWluLXN0aWNreS1oZWFkZXIgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5oZWFkZXItYnV0dG9uLXdvbz5kaXYgewogICAgbWFyZ2luLWxlZnQ6IDI1cHg7Cn0KCi5ydGwgLmhlYWRlci1idXR0b24td29vPmRpdiB7CiAgICBtYXJnaW4tcmlnaHQ6IDI1cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmhlYWRlci1idXR0b24td29vPmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgoucnRsIC5oZWFkZXItYnV0dG9uLXdvbz5kaXY6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmhlYWRlci1zaWRlYmFyIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHdpZHRoOiAxMDBweDsKICAgIHotaW5kZXg6IDkxOwogICAgbGVmdDogMDsKICAgIHRvcDogMDsKICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgYmFja2dyb3VuZDogIzAwMDsKICAgIGNvbG9yOiAjZmZmOwp9CgouaGVhZGVyLXNpZGViYXIgYSB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmhlYWRlci1zaWRlYmFyIGE6aG92ZXIsCi5oZWFkZXItc2lkZWJhciBhOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmhlYWRlci1zaWRlYmFyIC5zaG93LW1haW4tbWVudSB7CiAgICB3aWR0aDogMTAwcHg7CiAgICBoZWlnaHQ6IDEwMHB4OwogICAgbGluZS1oZWlnaHQ6IDEwMHB4OwogICAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4OwogICAgYm9yZGVyLWNvbG9yOiAjZWJlYmViOwogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwOwp9CgouaGVhZGVyLXNpZGViYXIgLmFwdXMtdG9wY2FydCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAyMHB4IDA7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzMzMzMzMzsKfQoKLmhlYWRlci1zaWRlYmFyIC5hcHVzLXRvcGNhcnQgLmNvdW50IHsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLmhlYWRlci1zaWRlYmFyIC5hcHVzLXRvcGNhcnQgLmRyb3Bkb3duLW1lbnUgewogICAgYm90dG9tOiAwOwogICAgdG9wOiBpbmhlcml0OwogICAgbGVmdDogMTAwJTsKfQoKLmhlYWRlci1zaWRlYmFyIC5zZXJ2aWNlIHsKICAgIGNvbG9yOiAjOTk5OTk5OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgei1pbmRleDogOTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgbGVmdDogNTBweDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMTFweDsKICAgIC1tb3otdHJhbnNmb3JtLW9yaWdpbjogMCAxMXB4OwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDAgMTFweDsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMTFweDsKfQoKLmhlYWRlci1zaWRlYmFyIC5zZXJ2aWNlPiogewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwp9CgouaGVhZGVyLXNpZGViYXIgLnNlcnZpY2UgcCB7CiAgICBtYXJnaW46IDA7Cn0KCi5vdmVyLWRhcmsgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAwOwogICAgei1pbmRleDogNTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjgpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7Cn0KCi5ydGwgLm92ZXItZGFyayB7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IGF1dG87Cn0KCi5vdmVyLWRhcmsuYWN0aXZlIHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5tZW51LWNlbnRlciAubmF2YmFyLW5hdi5tZWdhbWVudSB7CiAgICBmbG9hdDogbm9uZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgQnJlYWRjcnVtYgpcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouYXB1cy1icmVhZGNydW1iIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBwYWRkaW5nLXRvcDogMjBweDsKICAgIHBhZGRpbmctYm90dG9tOiAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKICAgIG1hcmdpbjogMCAwIDMwcHg7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgZm9udC1zaXplOiAxNHB4Owp9CgouYXB1cy1icmVhZGNydW1iIC5icmVhZGNydW1iLXRpdGxlIHsKICAgIGNvbG9yOiAjY2NjOwogICAgbWFyZ2luOiAwOwogICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgIGZvbnQtc2l6ZTogNDhweDsKfQoKLmFwdXMtYnJlYWRjcnVtYiBuYXYgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGxpbmUtaGVpZ2h0OiAzMHB4Owp9CgoucnRsIC5hcHVzLWJyZWFkY3J1bWIgbmF2IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouYXB1cy1icmVhZGNydW1iIG5hdiBhIHsKICAgIGNvbG9yOiAjMDAwOwp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICBDb250YWluZXIKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmFwdXMtbWFpbmJvZHkgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBwYWRkaW5nLXRvcDogMHB4OwogICAgcGFkZGluZy1ib3R0b206IDBweDsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgQ29udGVudApcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouYXB1cy1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6ICNmZmY7Cn0KCi5hcHVzLWNvbnRlbnQ6YmVmb3JlLAouYXB1cy1jb250ZW50OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGRpc3BsYXk6IHRhYmxlOwp9CgouYXB1cy1jb250ZW50OmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICBQYWdpbmF0aW9uClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5uYXZpZ2F0aW9uIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY2xlYXI6IGJvdGg7Cn0KCi5wYWdpbmF0aW9uLAoucGFnaW5hdGlvbi1saW5rcywKLmFwdXMtcGFnaW5hdGlvbiB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDEwcHggMDsKICAgIG1hcmdpbjogMDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucGFnaW5hdGlvbiwKICAgIC5wYWdpbmF0aW9uLWxpbmtzLAogICAgLmFwdXMtcGFnaW5hdGlvbiB7CiAgICAgICAgcGFkZGluZzogMzBweCAwOwogICAgfQp9CgoucGFnaW5hdGlvbiBsaSwKLnBhZ2luYXRpb24tbGlua3MgbGksCi5hcHVzLXBhZ2luYXRpb24gbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIG1hcmdpbjogMCA0cHg7Cn0KCi5wYWdpbmF0aW9uIGxpPnNwYW4sCi5wYWdpbmF0aW9uIGxpPmEsCi5wYWdpbmF0aW9uLWxpbmtzIGxpPnNwYW4sCi5wYWdpbmF0aW9uLWxpbmtzIGxpPmEsCi5hcHVzLXBhZ2luYXRpb24gbGk+c3BhbiwKLmFwdXMtcGFnaW5hdGlvbiBsaT5hIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbjogMCA0cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIGNvbG9yOiAjNzc3Nzc3OwogICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBtaW4td2lkdGg6IDM1cHg7CiAgICBsaW5lLWhlaWdodDogMzNweDsKICAgIHBhZGRpbmc6IDAgNXB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucGFnaW5hdGlvbiBsaT5zcGFuLAogICAgLnBhZ2luYXRpb24gbGk+YSwKICAgIC5wYWdpbmF0aW9uLWxpbmtzIGxpPnNwYW4sCiAgICAucGFnaW5hdGlvbi1saW5rcyBsaT5hLAogICAgLmFwdXMtcGFnaW5hdGlvbiBsaT5zcGFuLAogICAgLmFwdXMtcGFnaW5hdGlvbiBsaT5hIHsKICAgICAgICBtaW4td2lkdGg6IDQ1cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDQzcHg7CiAgICAgICAgcGFkZGluZzogMCAxMHB4OwogICAgfQp9CgoucGFnaW5hdGlvbiBsaT5zcGFuOmZvY3VzLAoucGFnaW5hdGlvbiBsaT5zcGFuOmhvdmVyLAoucGFnaW5hdGlvbiBsaT5hOmZvY3VzLAoucGFnaW5hdGlvbiBsaT5hOmhvdmVyLAoucGFnaW5hdGlvbi1saW5rcyBsaT5zcGFuOmZvY3VzLAoucGFnaW5hdGlvbi1saW5rcyBsaT5zcGFuOmhvdmVyLAoucGFnaW5hdGlvbi1saW5rcyBsaT5hOmZvY3VzLAoucGFnaW5hdGlvbi1saW5rcyBsaT5hOmhvdmVyLAouYXB1cy1wYWdpbmF0aW9uIGxpPnNwYW46Zm9jdXMsCi5hcHVzLXBhZ2luYXRpb24gbGk+c3Bhbjpob3ZlciwKLmFwdXMtcGFnaW5hdGlvbiBsaT5hOmZvY3VzLAouYXB1cy1wYWdpbmF0aW9uIGxpPmE6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgYm9yZGVyLWNvbG9yOiAjZmY1YTVmOwp9CgoucGFnaW5hdGlvbiBsaT5zcGFuLmN1cnJlbnQsCi5wYWdpbmF0aW9uIGxpPmEuY3VycmVudCwKLnBhZ2luYXRpb24tbGlua3MgbGk+c3Bhbi5jdXJyZW50LAoucGFnaW5hdGlvbi1saW5rcyBsaT5hLmN1cnJlbnQsCi5hcHVzLXBhZ2luYXRpb24gbGk+c3Bhbi5jdXJyZW50LAouYXB1cy1wYWdpbmF0aW9uIGxpPmEuY3VycmVudCB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7Cn0KCi5wYWdpbmF0aW9uPnNwYW4sCi5wYWdpbmF0aW9uPmEsCi5wYWdpbmF0aW9uLWxpbmtzPnNwYW4sCi5wYWdpbmF0aW9uLWxpbmtzPmEsCi5hcHVzLXBhZ2luYXRpb24+c3BhbiwKLmFwdXMtcGFnaW5hdGlvbj5hIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbjogMCA0cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIGNvbG9yOiAjNzc3Nzc3OwogICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBtaW4td2lkdGg6IDM1cHg7CiAgICBsaW5lLWhlaWdodDogMzNweDsKICAgIHBhZGRpbmc6IDAgNXB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucGFnaW5hdGlvbj5zcGFuLAogICAgLnBhZ2luYXRpb24+YSwKICAgIC5wYWdpbmF0aW9uLWxpbmtzPnNwYW4sCiAgICAucGFnaW5hdGlvbi1saW5rcz5hLAogICAgLmFwdXMtcGFnaW5hdGlvbj5zcGFuLAogICAgLmFwdXMtcGFnaW5hdGlvbj5hIHsKICAgICAgICBtaW4td2lkdGg6IDQ1cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDQzcHg7CiAgICAgICAgcGFkZGluZzogMCAxMHB4OwogICAgfQp9CgoucGFnaW5hdGlvbj5zcGFuOmZvY3VzLAoucGFnaW5hdGlvbj5zcGFuOmhvdmVyLAoucGFnaW5hdGlvbj5hOmZvY3VzLAoucGFnaW5hdGlvbj5hOmhvdmVyLAoucGFnaW5hdGlvbi1saW5rcz5zcGFuOmZvY3VzLAoucGFnaW5hdGlvbi1saW5rcz5zcGFuOmhvdmVyLAoucGFnaW5hdGlvbi1saW5rcz5hOmZvY3VzLAoucGFnaW5hdGlvbi1saW5rcz5hOmhvdmVyLAouYXB1cy1wYWdpbmF0aW9uPnNwYW46Zm9jdXMsCi5hcHVzLXBhZ2luYXRpb24+c3Bhbjpob3ZlciwKLmFwdXMtcGFnaW5hdGlvbj5hOmZvY3VzLAouYXB1cy1wYWdpbmF0aW9uPmE6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgYm9yZGVyLWNvbG9yOiAjZmY1YTVmOwp9CgoucGFnaW5hdGlvbj5zcGFuLmN1cnJlbnQsCi5wYWdpbmF0aW9uPmEuY3VycmVudCwKLnBhZ2luYXRpb24tbGlua3M+c3Bhbi5jdXJyZW50LAoucGFnaW5hdGlvbi1saW5rcz5hLmN1cnJlbnQsCi5hcHVzLXBhZ2luYXRpb24+c3Bhbi5jdXJyZW50LAouYXB1cy1wYWdpbmF0aW9uPmEuY3VycmVudCB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7Cn0KCi5wYWdpbmF0aW9uIHVsLnBhZ2UtbnVtYmVycywKLnBhZ2luYXRpb24tbGlua3MgdWwucGFnZS1udW1iZXJzLAouYXB1cy1wYWdpbmF0aW9uIHVsLnBhZ2UtbnVtYmVycyB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLnBhZ2luYXRpb24gLm5leHQsCi5wYWdpbmF0aW9uIC5wcmV2LAoucGFnaW5hdGlvbi1saW5rcyAubmV4dCwKLnBhZ2luYXRpb24tbGlua3MgLnByZXYsCi5hcHVzLXBhZ2luYXRpb24gLm5leHQsCi5hcHVzLXBhZ2luYXRpb24gLnByZXYgewogICAgd2lkdGg6IDM1cHg7CiAgICBoZWlnaHQ6IDM1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wYWdpbmF0aW9uIC5uZXh0LAogICAgLnBhZ2luYXRpb24gLnByZXYsCiAgICAucGFnaW5hdGlvbi1saW5rcyAubmV4dCwKICAgIC5wYWdpbmF0aW9uLWxpbmtzIC5wcmV2LAogICAgLmFwdXMtcGFnaW5hdGlvbiAubmV4dCwKICAgIC5hcHVzLXBhZ2luYXRpb24gLnByZXYgewogICAgICAgIHdpZHRoOiA0NXB4OwogICAgICAgIGhlaWdodDogNDVweDsKICAgIH0KfQoKLnBhZ2luYXRpb24gLm5leHQ6YmVmb3JlLAoucGFnaW5hdGlvbiAucHJldjpiZWZvcmUsCi5wYWdpbmF0aW9uLWxpbmtzIC5uZXh0OmJlZm9yZSwKLnBhZ2luYXRpb24tbGlua3MgLnByZXY6YmVmb3JlLAouYXB1cy1wYWdpbmF0aW9uIC5uZXh0OmJlZm9yZSwKLmFwdXMtcGFnaW5hdGlvbiAucHJldjpiZWZvcmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDMzcHg7CiAgICBoZWlnaHQ6IDMzcHg7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgZm9udC1mYW1pbHk6ICdGbGF0aWNvbic7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnBhZ2luYXRpb24gLm5leHQ6YmVmb3JlLAogICAgLnBhZ2luYXRpb24gLnByZXY6YmVmb3JlLAogICAgLnBhZ2luYXRpb24tbGlua3MgLm5leHQ6YmVmb3JlLAogICAgLnBhZ2luYXRpb24tbGlua3MgLnByZXY6YmVmb3JlLAogICAgLmFwdXMtcGFnaW5hdGlvbiAubmV4dDpiZWZvcmUsCiAgICAuYXB1cy1wYWdpbmF0aW9uIC5wcmV2OmJlZm9yZSB7CiAgICAgICAgd2lkdGg6IDQzcHg7CiAgICAgICAgaGVpZ2h0OiA0M3B4OwogICAgfQp9CgoucGFnaW5hdGlvbiAubmV4dDpob3ZlciwKLnBhZ2luYXRpb24gLm5leHQ6Zm9jdXMsCi5wYWdpbmF0aW9uIC5wcmV2OmhvdmVyLAoucGFnaW5hdGlvbiAucHJldjpmb2N1cywKLnBhZ2luYXRpb24tbGlua3MgLm5leHQ6aG92ZXIsCi5wYWdpbmF0aW9uLWxpbmtzIC5uZXh0OmZvY3VzLAoucGFnaW5hdGlvbi1saW5rcyAucHJldjpob3ZlciwKLnBhZ2luYXRpb24tbGlua3MgLnByZXY6Zm9jdXMsCi5hcHVzLXBhZ2luYXRpb24gLm5leHQ6aG92ZXIsCi5hcHVzLXBhZ2luYXRpb24gLm5leHQ6Zm9jdXMsCi5hcHVzLXBhZ2luYXRpb24gLnByZXY6aG92ZXIsCi5hcHVzLXBhZ2luYXRpb24gLnByZXY6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7Cn0KCi5wYWdpbmF0aW9uIC5uZXh0OmhvdmVyOmJlZm9yZSwKLnBhZ2luYXRpb24gLm5leHQ6Zm9jdXM6YmVmb3JlLAoucGFnaW5hdGlvbiAucHJldjpob3ZlcjpiZWZvcmUsCi5wYWdpbmF0aW9uIC5wcmV2OmZvY3VzOmJlZm9yZSwKLnBhZ2luYXRpb24tbGlua3MgLm5leHQ6aG92ZXI6YmVmb3JlLAoucGFnaW5hdGlvbi1saW5rcyAubmV4dDpmb2N1czpiZWZvcmUsCi5wYWdpbmF0aW9uLWxpbmtzIC5wcmV2OmhvdmVyOmJlZm9yZSwKLnBhZ2luYXRpb24tbGlua3MgLnByZXY6Zm9jdXM6YmVmb3JlLAouYXB1cy1wYWdpbmF0aW9uIC5uZXh0OmhvdmVyOmJlZm9yZSwKLmFwdXMtcGFnaW5hdGlvbiAubmV4dDpmb2N1czpiZWZvcmUsCi5hcHVzLXBhZ2luYXRpb24gLnByZXY6aG92ZXI6YmVmb3JlLAouYXB1cy1wYWdpbmF0aW9uIC5wcmV2OmZvY3VzOmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwp9CgoucGFnaW5hdGlvbiAubmV4dDpiZWZvcmUsCi5wYWdpbmF0aW9uLWxpbmtzIC5uZXh0OmJlZm9yZSwKLmFwdXMtcGFnaW5hdGlvbiAubmV4dDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM3IjsKfQoKLnBhZ2luYXRpb24gLnByZXY6YmVmb3JlLAoucGFnaW5hdGlvbi1saW5rcyAucHJldjpiZWZvcmUsCi5hcHVzLXBhZ2luYXRpb24gLnByZXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzNiI7Cn0KCi5hamF4LXBhZ2luYXRpb24gewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luOiAwIDAgMzBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFqYXgtcGFnaW5hdGlvbiB7CiAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7CiAgICB9Cn0KCi5hamF4LXBhZ2luYXRpb24uYXB1cy1sb2FkZXIgLmFwdXMtbG9hZG1vcmUtYnRuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5hamF4LXBhZ2luYXRpb24uYXB1cy1sb2FkZXI6YWZ0ZXIgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHN0cm9rZT0icmdiYSgxMDIsMTAyLDEwMiwwLjI1KSIlM0UlM0NnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIlM0UlM0NnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiIHN0cm9rZS13aWR0aD0iMiIlM0UlM0NjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9Ii41NSIgY3g9IjE4IiBjeT0iMTgiIHI9IjE4Ii8lM0UlM0NwYXRoIGQ9Ik0zNiAxOGMwLTkuOTQtOC4wNi0xOC0xOC0xOCIlM0UlM0NhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiBmcm9tPSIwIDE4IDE4IiB0bz0iMzYwIDE4IDE4IiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvJTNFJTNDL3BhdGglM0UlM0MvZyUzRSUzQy9nJTNFJTNDL3N2ZyUzRScpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBjb250ZW50OiAiIjsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA1MHB4OwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5hamF4LXBhZ2luYXRpb24gLmFwdXMtbG9hZG1vcmUtYnRuKy5hcHVzLWFsbHByb2R1Y3RzIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5hamF4LXBhZ2luYXRpb24gLmFwdXMtbG9hZG1vcmUtYnRuLmhpZGRlbisuYXB1cy1hbGxwcm9kdWN0cyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbG9yOiAjZTQ0MzQzOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgZm9udC1zaXplOiAxNnB4Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICBGb290ZXIKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmZvb3Rlci1kZWZhdWx0IHsKICAgICAgICBtYXJnaW4tdG9wOiAzMHB4OwogICAgfQp9CgouYXB1cy1mb290ZXItbW9iaWxlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5hcHVzLWZvb3RlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKLmFwdXMtZm9vdGVyIGE6bm90KFtjbGFzc10pIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgouYXB1cy1mb290ZXIgYTpub3QoW2NsYXNzXSk6aG92ZXIsCi5hcHVzLWZvb3RlciBhOm5vdChbY2xhc3NdKTpmb2N1cywKLmFwdXMtZm9vdGVyIGE6bm90KFtjbGFzc10pOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmFwdXMtZm9vdGVyLmZ1bGwtbWVkaXVtIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWF4LXdpZHRoOiAxNjAwcHg7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgIENvcHlyaWdodApcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouYXB1cy1jb3B5cmlnaHQgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIHBhZGRpbmctdG9wOiAyMHB4OwogICAgcGFkZGluZy1ib3R0b206IDIwcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5hcHVzLWNvcHlyaWdodCBhIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgouYXB1cy1jb3B5cmlnaHQgYTpob3ZlciwKLmFwdXMtY29weXJpZ2h0IGE6Zm9jdXMsCi5hcHVzLWNvcHlyaWdodCBhOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmFwdXMtY29weXJpZ2h0IC53aWRnZXQtc29jaWFsIHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgoucnRsIC5hcHVzLWNvcHlyaWdodCAud2lkZ2V0LXNvY2lhbCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgouYXB1cy1jb3B5cmlnaHQgLndpZGdldC1zb2NpYWwgYSB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLmFwdXMtY29weXJpZ2h0IC53aWRnZXQtc29jaWFsIGE6aG92ZXIgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgIFRvcCBiYXIKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmFwdXMtb2ZmY2FudmFzIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMTAwMDsKICAgIHdpZHRoOiAzMDBweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgLyogU2FmYXJpICovCiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKLmFwdXMtb2ZmY2FudmFzIC5hcHVzLW9mZmNhbnZhcy1ib2R5IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmFwdXMtb2ZmY2FudmFzIC5vZmZjYW52YXMtYm90dG9tLAouYXB1cy1vZmZjYW52YXMgLm9mZmNhbnZhcy10b3AgewogICAgaGVpZ2h0OiAyMCU7Cn0KCi5hcHVzLW9mZmNhbnZhcyAub2ZmY2FudmFzLW1pZGRsZSB7CiAgICBoZWlnaHQ6IDYwJTsKICAgIHBhZGRpbmc6IDIwcHggMDsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKfQoKLmFwdXMtb2ZmY2FudmFzLmFjdGl2ZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAycHggMCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgYm94LXNoYWRvdzogMnB4IDAgNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKfQoKLmFwdXMtb2ZmY2FudmFzIC5vZmZjYW52YXMtaGVhZCB7CiAgICBiYWNrZ3JvdW5kOiAjZTQ0MzQzOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7Cn0KCi5hcHVzLW9mZmNhbnZhcyAub2ZmY2FudmFzLWhlYWQ6aG92ZXIsCi5hcHVzLW9mZmNhbnZhcyAub2ZmY2FudmFzLWhlYWQ6YWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICNkNTFmMWY7Cn0KCi5hcHVzLW9mZmNhbnZhcyAub2ZmY2FudmFzLWhlYWQgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKfQoKLnJ0bCAuYXB1cy1vZmZjYW52YXMgLm9mZmNhbnZhcy1oZWFkIGkgewogICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmFwdXMtb2ZmY2FudmFzIC5vZmZjYW52YXMtaGVhZCBhIHsKICAgIGNvbG9yOiAjZmZmOwp9CgouYXB1cy1vZmZjYW52YXMgLmxvZ28taW4tdGhlbWUgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoKLmFwdXMtb2ZmY2FudmFzIC5oZWFkZXItcmlnaHQ+ZGl2IHsKICAgIG1hcmdpbi1sZWZ0OiAzMHB4Owp9CgoucnRsIC5hcHVzLW9mZmNhbnZhcyAuaGVhZGVyLXJpZ2h0PmRpdiB7CiAgICBtYXJnaW4tcmlnaHQ6IDMwcHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmFwdXMtb2ZmY2FudmFzIC5oZWFkZXItcmlnaHQ+ZGl2Omxhc3QtY2hpbGQgewogICAgbWFyZ2luLWxlZnQ6IDBweDsKfQoKLnJ0bCAuYXB1cy1vZmZjYW52YXMgLmhlYWRlci1yaWdodD5kaXY6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDBweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouYXB1cy1vZmZjYW52YXMgLmVsZW1lbnRvci1jb2x1bW4gewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLmFwdXMtb2ZmY2FudmFzIC5lbGVtZW50b3ItY29sdW1uIC5lbGVtZW50b3ItY29sdW1uLXdyYXAsCi5hcHVzLW9mZmNhbnZhcyAuZWxlbWVudG9yLWNvbHVtbiAuZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoKLmFwdXMtb2ZmY2FudmFzIC5lbGVtZW50b3ItY29sdW1uIC53aWRnZXQgewogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgICAudG9wYmFyLW1vYmlsZSB7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgIH0KICAgIC50b3BiYXItbW9iaWxlIC5idG4gewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgIH0KICAgIC5ydGwgLnRvcGJhci1tb2JpbGUgLmJ0biB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQogICAgLnRvcGJhci1tb2JpbGUgLnRvcC1jYXJ0IC5kcm9wZG93bi1tZW51IHsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiBpbmhlcml0OwogICAgfQogICAgLnRvcGJhci1tb2JpbGUgLnRvcC1jYXJ0IC5kcm9wZG93bi1tZW51OmFmdGVyLAogICAgLnRvcGJhci1tb2JpbGUgLnRvcC1jYXJ0IC5kcm9wZG93bi1tZW51OmJlZm9yZSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KfQoKLm9wZW4tdGV4dCB7CiAgICBmb250LXNpemU6IDI2cHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHBhZGRpbmc6IDZweCA4cHg7CiAgICBiYWNrZ3JvdW5kOiAjNzliNTMwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKfQoKLm9wZW4tdGV4dDpob3ZlciwKLm9wZW4tdGV4dDphY3RpdmUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjNmNhMTJiOwp9CgojbW9iaWxlLW9mZmNhbnZhcy1zaWRlYmFyIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDk5OTsKICAgIHRvcDogMHB4OwogICAgd2lkdGg6IDI3MHB4OwogICAgaGVpZ2h0OiAxMDAlOwogICAgbWF4LXdpZHRoOiA4MCU7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9CgojbW9iaWxlLW9mZmNhbnZhcy1zaWRlYmFyLm1vYmlsZS1vZmZjYW52YXMtbGVmdCB7CiAgICBsZWZ0OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKfQoKI21vYmlsZS1vZmZjYW52YXMtc2lkZWJhci5tb2JpbGUtb2ZmY2FudmFzLWxlZnQ+Lm1vYmlsZS1zaWRlYmFyLWJ0biB7CiAgICBsZWZ0OiAxMDAlOwp9CgojbW9iaWxlLW9mZmNhbnZhcy1zaWRlYmFyLm1vYmlsZS1vZmZjYW52YXMtcmlnaHQgewogICAgcmlnaHQ6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KCiNtb2JpbGUtb2ZmY2FudmFzLXNpZGViYXIubW9iaWxlLW9mZmNhbnZhcy1yaWdodD4ubW9iaWxlLXNpZGViYXItYnRuIHsKICAgIHJpZ2h0OiAxMDAlOwp9CgojbW9iaWxlLW9mZmNhbnZhcy1zaWRlYmFyIC5tb2JpbGUtc2lkZWJhci13cmFwcGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDAgMTVweDsKfQoKI21vYmlsZS1vZmZjYW52YXMtc2lkZWJhci5hY3RpdmU+Lm1vYmlsZS1zaWRlYmFyLXdyYXBwZXIgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCiNtb2JpbGUtb2ZmY2FudmFzLXNpZGViYXI+Lm1vYmlsZS1zaWRlYmFyLWJ0biB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMHB4Owp9CgoubW9iaWxlLXNpZGViYXItcGFuZWwtb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogLTU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KCi5tb2JpbGUtc2lkZWJhci1wYW5lbC1vdmVybGF5LmFjdGl2ZSB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgei1pbmRleDogNTsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGUgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgei1pbmRleDogOTk5OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwogICAgcGFkZGluZzogMTBweCAyMHB4OwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOwogICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsKfQoKLmFwdXMtZm9vdGVyLW1vYmlsZSAuZm9vdGVyLXNlYXJjaC1tb2JpbGUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogOTk5OwogICAgbGVmdDogMDsKICAgIHRvcDogLTYwcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKfQoKLmFwdXMtZm9vdGVyLW1vYmlsZSAuZm9vdGVyLXNlYXJjaC1tb2JpbGUuYWN0aXZlIHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGU+dWwgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGU+dWw+bGkgewogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDAgMjVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmFwdXMtZm9vdGVyLW1vYmlsZT51bD5saSBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4OwogICAgbGluZS1oZWlnaHQ6IDE7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGU+dWw+bGkgLndpc2hsaXN0LWljb24sCi5hcHVzLWZvb3Rlci1tb2JpbGU+dWw+bGkgLm1pbmktY2FydCB7CiAgICBsaW5lLWhlaWdodDogMS43NTsKfQoKLmFwdXMtZm9vdGVyLW1vYmlsZT51bD5saSAud3JhcHBlci1tb3JlbGluayB7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDQwcHg7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDRweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgIGJveC1zaGFkb3c6IDAgMCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGU+dWw+bGkgLndyYXBwZXItbW9yZWxpbmsgLmZvb3Rlci1tb3JlbGluayB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTBweDsKfQoKLmFwdXMtZm9vdGVyLW1vYmlsZT51bD5saSAud3JhcHBlci1tb3JlbGluayBsaSB7CiAgICBwYWRkaW5nOiAzcHggMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnJ0bCAuYXB1cy1mb290ZXItbW9iaWxlPnVsPmxpIC53cmFwcGVyLW1vcmVsaW5rIGxpIHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouYXB1cy1mb290ZXItbW9iaWxlPnVsPmxpIC53cmFwcGVyLW1vcmVsaW5rLmFjdGl2ZSB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgouYXB1cy1mb290ZXItbW9iaWxlIC5taW5pLWNhcnQgaSB7CiAgICBmb250LXNpemU6IDE1cHg7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGUgLm1pbmktY2FydCAuY291bnQgewogICAgdG9wOiAycHg7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGUgLmFwdXMtc2VhcmNoLWZvcm0gewogICAgbWluLXdpZHRoOiAzMDBweDsKICAgIHBhZGRpbmc6IDEwcHggMzBweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKfQoKLmFwdXMtZm9vdGVyLW1vYmlsZSAuYXB1cy1zZWFyY2gtZm9ybSAuc2VsZWN0LWNhdGVnb3J5IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGUgLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBtYXJnaW46IDA7Cn0KCi5hcHVzLWZvb3Rlci1tb2JpbGUgLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSAuZm9ybS1jb250cm9sIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7Cn0KCi5jbG9zZS1zaWRlYmFyLWJ0biwKLm1vYmlsZS1zaWRlYmFyLWJ0biB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLm1vYmlsZS1zaWRlYmFyLWJ0biB7CiAgICBwYWRkaW5nOiA4cHg7CiAgICBtYXJnaW46IDA7CiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogNDUlOwogICAgei1pbmRleDogNjsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9CgoubW9iaWxlLXNpZGViYXItYnRuLmJ0bi1sZWZ0IHsKICAgIHJpZ2h0OiAwOwogICAgYm9yZGVyLXJhZGl1czogNHB4IDAgMCA0cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4Owp9CgoubW9iaWxlLXNpZGViYXItYnRuLmJ0bi1yaWdodCB7CiAgICBib3JkZXItcmFkaXVzOiAwIDRweCA0cHggMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCA0cHggNHB4IDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMCA0cHggNHB4IDA7CiAgICBsZWZ0OiAwOwp9CgouY2xvc2Utc2lkZWJhci1idG46YWN0aXZlLAouY2xvc2Utc2lkZWJhci1idG46aG92ZXIgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi5jbG9zZS1zaWRlYmFyLWJ0biB7CiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKICAgIHdpZHRoOiAxMDAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6ICNlNDQzNDM7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkgewogICAgLnNpZGViYXIgewogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAgICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAgICAgei1pbmRleDogODsKICAgICAgICB0b3A6IDBweDsKICAgICAgICB3aWR0aDogMzMwcHg7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgICBtYXgtd2lkdGg6IDkwJTsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgcGFkZGluZzogMTVweDsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjdmN2Y3OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICB9CiAgICAuc2lkZWJhci5zaWRlYmFyLWxlZnQgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICAgIH0KICAgIC5zaWRlYmFyLnNpZGViYXItbGVmdC5hY3RpdmUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIH0KICAgIC5zaWRlYmFyLnNpZGViYXItcmlnaHQgewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIH0KICAgIC5zaWRlYmFyLnNpZGViYXItcmlnaHQuYWN0aXZlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB9Cn0KCi5hcHVzLWhlYWRlciAud3JhcHBlci10b3BtZW51OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTBweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgei1pbmRleDogOTsKfQoKLmFwdXMtaGVhZGVyIC53cmFwcGVyLXRvcG1lbnUgLmRyb3Bkb3duLW1lbnUtcmlnaHQgewogICAgdG9wOiBjYWxjKDEwMCUgKyAxMHB4KTsKfQoKLmFwdXMtdG9wYmFyIC53cmFwcGVyLXRvcG1lbnU6aG92ZXI+YSB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLndyYXBwZXItdG9wLWNhcnQgLm92ZXJsYXktZHJvcGRvd24tbWVudS1yaWdodCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB6LWluZGV4OiA5ODsKfQoKLndyYXBwZXItdG9wLWNhcnQgLm92ZXJsYXktZHJvcGRvd24tbWVudS1yaWdodC5hY3RpdmUgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKfQoKLndyYXBwZXItdG9wLWNhcnQ+LmRyb3Bkb3duLW1lbnUtcmlnaHQgewogICAgbWF4LXdpZHRoOiA3MCU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiA5OTk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAwOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIHdpZHRoOiA0MjBweDsKICAgIGhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDMwcHg7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KCi53cmFwcGVyLXRvcC1jYXJ0Pi5kcm9wZG93bi1tZW51LXJpZ2h0IC53aWRnZXRfc2hvcHBpbmdfY2FydF9oZWFkaW5nIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleDogMCAwIGF1dG87CiAgICAtd2Via2l0LWZsZXg6IDAgMCBhdXRvOwp9Cgoud3JhcHBlci10b3AtY2FydD4uZHJvcGRvd24tbWVudS1yaWdodCAud2lkZ2V0X3Nob3BwaW5nX2NhcnRfaGVhZGluZz5oMyB7CiAgICBtYXJnaW46IDAgMCAyMHB4OwogICAgZm9udC1zaXplOiAyMnB4OwogICAgcGFkZGluZzogMCAwIDIwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKICAgIHdpZHRoOiAxMDAlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi53cmFwcGVyLXRvcC1jYXJ0Pi5kcm9wZG93bi1tZW51LXJpZ2h0IC53aWRnZXRfc2hvcHBpbmdfY2FydF9jb250ZW50X3dyYXBwZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4OiAxIDEgYXV0bzsKICAgIC13ZWJraXQtZmxleDogMSAxIGF1dG87CiAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICBvdmVyZmxvdy15OiBhdXRvOwp9Cgoud3JhcHBlci10b3AtY2FydD4uZHJvcGRvd24tbWVudS1yaWdodCAuc2hvcHBpbmdfY2FydF9jb250ZW50IHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGhlaWdodDogMTAwJTsKfQoKLndyYXBwZXItdG9wLWNhcnQ+LmRyb3Bkb3duLW1lbnUtcmlnaHQgLnNob3BwaW5nX2NhcnRfY29udGVudCAuY2FydF9saXN0IHsKICAgIGZsZXg6IDEgMSBhdXRvOwogICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKLndyYXBwZXItdG9wLWNhcnQ+LmRyb3Bkb3duLW1lbnUtcmlnaHQgLnNob3BwaW5nX2NhcnRfY29udGVudCAuY2FydC1ib3R0b20gewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgLXdlYmtpdC1mbGV4OiAwIDAgYXV0bzsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Owp9Cgoud3JhcHBlci10b3AtY2FydD4uZHJvcGRvd24tbWVudS1yaWdodC5hY3RpdmUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwp9Cgoud3JhcHBlci10b3AtY2FydCAuY2FydF9saXN0IC52YXJpYXRpb24gewogICAgbWFyZ2luOiAwOwp9Cgoud3JhcHBlci10b3AtY2FydCAuY2FydF9saXN0IC52YXJpYXRpb24+KiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Cgoud3JhcHBlci10b3AtY2FydCAuY2FydF9saXN0IC52YXJpYXRpb24+KiBwIHsKICAgIG1hcmdpbjogMDsKfQoKLndyYXBwZXItdG9wLWNhcnQgLmJ1dHRvbnMgLmJ0bi1ibG9jayB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgovKiA1LiBtZW51ICovCgoubmF2YmFyLmFwdXMtbWVnYW1lbnUgewogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKICAgIG1pbi1oZWlnaHQ6IDA7CiAgICBtYXJnaW46IDA7Cn0KCi5tZWdhbWVudSB7CiAgICBwYWRkaW5nOiAwOwogICAgZmxvYXQ6IG5vbmU7Cn0KCi5tZWdhbWVudSAubWVudS1pdGVtLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9CgoubWVnYW1lbnU+bGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBmbG9hdDogbm9uZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi1yaWdodDogMjBweDsKfQoKLnJ0bCAubWVnYW1lbnU+bGkgewogICAgbWFyZ2luLWxlZnQ6IDIwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5tZWdhbWVudT5saSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0NXB4OwogICAgfQogICAgLnJ0bCAubWVnYW1lbnU+bGkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA0NXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLm1lZ2FtZW51PmxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC5tZWdhbWVudT5saTpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoubWVnYW1lbnU+bGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMjBweDsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7Cn0KCi5tZWdhbWVudT5saT5hIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgcGFkZGluZzogMzNweCAwOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoubWVnYW1lbnU+bGk+YSAuZmEsCi5tZWdhbWVudT5saT5hIGltZyB7CiAgICBtYXgtd2lkdGg6IDUwcHg7CiAgICBtYXJnaW4tbGVmdDogM3B4Owp9CgoucnRsIC5tZWdhbWVudT5saT5hIC5mYSwKLnJ0bCAubWVnYW1lbnU+bGk+YSBpbWcgewogICAgbWFyZ2luLXJpZ2h0OiAzcHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLm1lZ2FtZW51PmxpPmE6aG92ZXIsCi5tZWdhbWVudT5saT5hOmFjdGl2ZSwKLm1lZ2FtZW51PmxpPmE6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5tZWdhbWVudT5saTpob3Zlcj5hLAoubWVnYW1lbnU+bGkuYWN0aXZlPmEgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5tZWdhbWVudT5saS5hbGlnbmVkLWxlZnQgLmRyb3Bkb3duLW1lbnU6YmVmb3JlIHsKICAgIGxlZnQ6IDI1cHg7Cn0KCi5tZWdhbWVudT5saS5hbGlnbmVkLXJpZ2h0Pi5kcm9wZG93bi1tZW51IHsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKfQoKLm1lZ2FtZW51PmxpLmFsaWduZWQtcmlnaHQ+LmRyb3Bkb3duLW1lbnU6YmVmb3JlIHsKICAgIHJpZ2h0OiAyNXB4Owp9CgoubWVnYW1lbnUgLmFsaWduZWQtZnVsbHdpZHRoPi5kcm9wZG93bi1tZW51IHsKICAgIHBhZGRpbmc6IDUwcHggMzBweCAzMHB4Owp9CgoubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgewogICAgYm9yZGVyLXJhZGl1czogNnB4ICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweCAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweCAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEoNjIsIDI4LCAxMzEsIDAuMSk7CiAgICBib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEoNjIsIDI4LCAxMzEsIDAuMSk7CiAgICBwYWRkaW5nOiAxNnB4IDMwcHg7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudTpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDEwMCU7CiAgICBsZWZ0OiAyMHB4OwogICAgd2lkdGg6IDE2cHg7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBib3JkZXItd2lkdGg6IDhweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmYgdHJhbnNwYXJlbnQ7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnJ0bCAubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnU6YmVmb3JlIHsKICAgIHJpZ2h0OiAyMHB4OwogICAgbGVmdDogYXV0bzsKfQoKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IC50ZXh0LWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHZlcnRpY2FsLWFsaWduOiBzdXBlcjsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLnJ0bCAubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgLnRleHQtbGFiZWwgewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IC50ZXh0LWxhYmVsLmxhYmVsLWhvdCB7CiAgICBjb2xvcjogI2U0NDM0MzsKfQoKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IC50ZXh0LWxhYmVsLmxhYmVsLW5ldyB7CiAgICBjb2xvcjogIzc5YjUzMDsKfQoKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IC5jdXJyZW50LW1lbnUtaXRlbT5hIHsKICAgIGNvbG9yOiAjZmZmOwp9CgoubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgbGkgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b206IDA7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaT5hIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBwYWRkaW5nOiA4cHggMDsKICAgIHBhZGRpbmctcmlnaHQ6IDI1cHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgoucnRsIC5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaT5hIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaT5hOmhvdmVyLAoubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgbGk+YTphY3RpdmUgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaT5hIGIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAyMHB4OwogICAgcmlnaHQ6IDEwcHg7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwp9CgoucnRsIC5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaT5hIGIgewogICAgbGVmdDogMTBweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgbGk6aG92ZXI+YSwKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IGxpLmN1cnJlbnQtbWVudS1pdGVtPmEsCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaS5vcGVuPmEsCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaS5hY3RpdmU+YSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIHBhZGRpbmctbGVmdDogNXB4Owp9CgoucnRsIC5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaTpob3Zlcj5hLAoucnRsIC5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaS5jdXJyZW50LW1lbnUtaXRlbT5hLAoucnRsIC5tZWdhbWVudSAuZHJvcGRvd24tbWVudSBsaS5vcGVuPmEsCi5ydGwgLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IGxpLmFjdGl2ZT5hIHsKICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IC53aWRnZXQtdGl0bGUsCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSAud2lkZ2V0dGl0bGUgewogICAgbWFyZ2luOiAwIDAgMTBweDsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIHBhZGRpbmc6IDA7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgoucnRsIC5tZWdhbWVudSAuZHJvcGRvd24tbWVudSAud2lkZ2V0LXRpdGxlLAoucnRsIC5tZWdhbWVudSAuZHJvcGRvd24tbWVudSAud2lkZ2V0dGl0bGUgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSAud2lkZ2V0LXRpdGxlOmJlZm9yZSwKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IC53aWRnZXQtdGl0bGU6YWZ0ZXIsCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSAud2lkZ2V0dGl0bGU6YmVmb3JlLAoubWVnYW1lbnUgLmRyb3Bkb3duLW1lbnUgLndpZGdldHRpdGxlOmFmdGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24tbWVudSB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICAtbW96LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKC05MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVYKC05MGRlZyk7CiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZVgoLTkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgtOTBkZWcpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEoNjIsIDI4LCAxMzEsIDAuMSk7CiAgICBib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEoNjIsIDI4LCAxMzEsIDAuMSk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGxlZnQ6IDEwMCU7CiAgICB0b3A6IC0xNnB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIG1pbi13aWR0aDogMjI1cHg7CiAgICBtYXJnaW46IDA7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24tbWVudTpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IGxpOmhvdmVyPi5kcm9wZG93bi1tZW51IHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7Cn0KCi5tZWdhbWVudSAuZHJvcGRvd24tbWVudSAud2lkZ2V0LW5hdi1tZW51IC5tZW51IGxpIHsKICAgIG1hcmdpbjogMDsKfQoKLm1lZ2FtZW51IC5kcm9wZG93bi1tZW51IC53aWRnZXQtbmF2LW1lbnUgLm1lbnUgbGkgYTpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm1lZ2FtZW51IC5hcHVzLWNvbnRhaW5lciB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgd2lkdGg6IDEwMCU7Cn0KCi5tZWdhbWVudSAuaGFzLW1lZ2EtbWVudS5hbGlnbmVkLWZ1bGx3aWR0aCB7CiAgICBwb3NpdGlvbjogc3RhdGljOwp9CgoubWVnYW1lbnUgbGkuYWxpZ25lZC1mdWxsd2lkdGg+LmRyb3Bkb3duLW1lbnUgewogICAgd2lkdGg6IDEwMCU7CiAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5tZWdhbWVudT5saT5hPi50ZXh0LWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIHBhZGRpbmc6IDBweCA1cHg7CiAgICBiYWNrZ3JvdW5kOiAjMjdjZWI0OwogICAgY29sb3I6ICNmZmY7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogLTE1cHg7CiAgICB0b3A6IC0xMHB4OwogICAgbGluZS1oZWlnaHQ6IDI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogMnB4Owp9CgoucnRsIC5tZWdhbWVudT5saT5hPi50ZXh0LWxhYmVsIHsKICAgIGxlZnQ6IC0xNXB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCi5tZWdhbWVudT5saT5hPi50ZXh0LWxhYmVsLmxhYmVsLWhvdCB7CiAgICBiYWNrZ3JvdW5kOiAjZTQ0MzQzOwp9CgoubWVnYW1lbnU+bGk+YT4udGV4dC1sYWJlbC5sYWJlbC1ob3Q6YmVmb3JlIHsKICAgIGJvcmRlci1jb2xvcjogI2U0NDM0MyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZTQ0MzQzOwp9CgoubWVnYW1lbnU+bGk+YT4udGV4dC1sYWJlbC5sYWJlbC1uZXcgewogICAgYmFja2dyb3VuZDogIzc5YjUzMDsKfQoKLm1lZ2FtZW51PmxpPmE+LnRleHQtbGFiZWwubGFiZWwtbmV3OmJlZm9yZSB7CiAgICBib3JkZXItY29sb3I6ICM3OWI1MzAgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc5YjUzMDsKfQoKLm1lZ2FtZW51PmxpPmE+LnRleHQtbGFiZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogOTsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDdweDsKICAgIGJvcmRlci13aWR0aDogM3B4OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1jb2xvcjogIzI3Y2ViNCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjMjdjZWI0Owp9CgoucnRsIC5tZWdhbWVudT5saT5hPi50ZXh0LWxhYmVsOmJlZm9yZSB7CiAgICByaWdodDogN3B4OwogICAgbGVmdDogYXV0bzsKfQoKLm1lZ2FtZW51LmVmZmVjdDE+bGk+LmRyb3Bkb3duLW1lbnUgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtaW4td2lkdGg6IDIyNXB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICAgIC1tb3otdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoLTkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoLTkwZGVnKTsKICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCgtOTBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGVYKC05MGRlZyk7CiAgICBwYWRkaW5nOiAxNnB4IDMwcHg7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiAwOwp9CgoubWVnYW1lbnUuZWZmZWN0MT5saTpob3Zlcj4uZHJvcGRvd24tbWVudSB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpOwogICAgLW8tdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1pbi13aWR0aDogMjI1cHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgLW1vei10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgtOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWCgtOTBkZWcpOwogICAgLW8tdHJhbnNmb3JtOiByb3RhdGVYKC05MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoLTkwZGVnKTsKICAgIHBhZGRpbmc6IDE2cHggMzBweDsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rMSkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjFzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjFzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rMikgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjJzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjJzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rMykgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjNzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjNzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rNCkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjRzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjRzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rNSkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjVzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjVzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rNikgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjZzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjZzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rNykgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjdzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjdzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rOCkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjhzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjhzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rOSkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjlzOwogICAgLyogU2FmYXJpICovCiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjlzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudSBsaTpudGgtY2hpbGQoMm4rMTApIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheTogMXM7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDFzOwp9CgoubWVnYW1lbnUuZWZmZWN0Mj5saT4uZHJvcGRvd24tbWVudT5saSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNXB4KTsKfQoKLm1lZ2FtZW51LmVmZmVjdDI+bGk6aG92ZXI+LmRyb3Bkb3duLW1lbnUgewogICAgbWFyZ2luLXRvcDogMDsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7Cn0KCi5tZWdhbWVudS5lZmZlY3QyPmxpOmhvdmVyPi5kcm9wZG93bi1tZW51PmxpIHsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwp9CgoubWVnYW1lbnUuZWZmZWN0Mz5saT4uZHJvcGRvd24tbWVudSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1pbi13aWR0aDogMjI1cHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIHBhZGRpbmc6IDE2cHggMzBweDsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmFkZWxlZnQgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGFuaW1hdGlvbjogZmFkZWxlZnQgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLm1lZ2FtZW51LmVmZmVjdDM+bGk6aG92ZXI+LmRyb3Bkb3duLW1lbnUgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYWRlcmlnaHQgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGFuaW1hdGlvbjogZmFkZXJpZ2h0IDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5uYXZiYXItb2ZmY2FudmFzIHsKICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICBmb250LXNpemU6IDE2cHg7Cn0KCi5uYXZiYXItb2ZmY2FudmFzIC5uYXZiYXItbmF2IHsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGZsb2F0OiBub25lOwp9CgoubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBub25lOwogICAgbWFyZ2luOiAwOwp9CgoubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaT4uaWNvbi10b2dnbGUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxcHg7CiAgICByaWdodDogMHB4OwogICAgcGFkZGluZzogNXB4OwogICAgei1pbmRleDogMjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoucnRsIC5uYXZiYXItb2ZmY2FudmFzIC5uYXZiYXItbmF2IGxpPi5pY29uLXRvZ2dsZSB7CiAgICBsZWZ0OiAwcHg7CiAgICByaWdodDogYXV0bzsKfQoKLm5hdmJhci1vZmZjYW52YXMgLm5hdmJhci1uYXYgbGk+YSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiA3cHggMTBweDsKfQoKLm5hdmJhci1vZmZjYW52YXMgLm5hdmJhci1uYXYgbGkub3Blbj5hLAoubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaS5vcGVuPmE6Zm9jdXMsCi5uYXZiYXItb2ZmY2FudmFzIC5uYXZiYXItbmF2IGxpLm9wZW4+YTpob3ZlciwKLm5hdmJhci1vZmZjYW52YXMgLm5hdmJhci1uYXYgbGkuYWN0aXZlPmEsCi5uYXZiYXItb2ZmY2FudmFzIC5uYXZiYXItbmF2IGxpLmFjdGl2ZT5hOmZvY3VzLAoubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaS5hY3RpdmU+YTpob3ZlciB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CgoubmF2YmFyLW9mZmNhbnZhcyAuZHJvcGRvd24tbWVudSB7CiAgICBtYXJnaW46IDA7Cn0KCi5uYXZiYXItb2ZmY2FudmFzIC5kcm9wZG93bi1tZW51PmxpIGEgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKfQoKLm5hdmJhci1vZmZjYW52YXMgLmRyb3Bkb3duLW1lbnU+bGkuYWN0aXZlPmEsCi5uYXZiYXItb2ZmY2FudmFzIC5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIsCi5uYXZiYXItb2ZmY2FudmFzIC5kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXMgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLm5hdmJhci1vZmZjYW52YXMgLmRyb3Bkb3duLW1lbnUgW2NsYXNzKj0iY29sLXNtIl0gewogICAgd2lkdGg6IDEwMCU7Cn0KCi5uYXZiYXItb2ZmY2FudmFzIC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1tZW51LWlubmVyIHsKICAgIHBhZGRpbmc6IDAgMzBweDsKfQoKLm5hdmJhci1vZmZjYW52YXMgLmRyb3Bkb3duLW1lbnUgLndpZGdldHRpdGxlIHsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBtYXJnaW46IDAgMCAxMHB4Owp9CgoubmF2YmFyLW9mZmNhbnZhcyAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24tbWVudSB7CiAgICBsZWZ0OiAxMDAlOwogICAgdG9wOiAwOwp9CgoubmF2YmFyLW9mZmNhbnZhcyBsaTpob3ZlciAuZHJvcGRvd24tbWVudSB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLm5hdmJhci1vZmZjYW52YXMgLmFsaWduZWQtZnVsbHdpZHRoPi5kcm9wZG93bi1tZW51IHsKICAgIHdpZHRoOiAxMDAlOwp9CgoubW9iaWxlLXZlcnRpY2FsLW1lbnUgLm5hdmJhci1uYXYgbGkgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjZWJlYmViOwp9CgoubW9iaWxlLXZlcnRpY2FsLW1lbnUgLm5hdmJhci1uYXYgbGk6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tOiAwOwp9CgoubW9iaWxlLXZlcnRpY2FsLW1lbnUgLm5hdmJhci1uYXYgbGk+YSB7CiAgICBwYWRkaW5nOiA1cHggMDsKfQoKLm1vYmlsZS12ZXJ0aWNhbC1tZW51IC50ZXh0LWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHZlcnRpY2FsLWFsaWduOiBzdXBlcjsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIiwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5ydGwgLm1vYmlsZS12ZXJ0aWNhbC1tZW51IC50ZXh0LWxhYmVsIHsKICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5tb2JpbGUtdmVydGljYWwtbWVudSAudGV4dC1sYWJlbC5sYWJlbC1ob3QgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi5tb2JpbGUtdmVydGljYWwtbWVudSAudGV4dC1sYWJlbC5sYWJlbC1uZXcgewogICAgY29sb3I6ICM3OWI1MzA7Cn0KCiNhcHVzLW1vYmlsZS1tZW51IC5idG4tdG9nZ2xlLWNhbnZhcyB7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJhY2tncm91bmQ6ICNlNDQzNDM7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKfQoKI2FwdXMtbW9iaWxlLW1lbnUgLmJ0bi10b2dnbGUtY2FudmFzOmhvdmVyLAojYXB1cy1tb2JpbGUtbWVudSAuYnRuLXRvZ2dsZS1jYW52YXM6YWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICNkNTFmMWY7CiAgICBjb2xvcjogI2ZmZjsKfQoKI2FwdXMtbW9iaWxlLW1lbnUgLm9mZmNhbnZhcy1oZWFkIHN0cm9uZyB7CiAgICBtYXJnaW46IDAgNXB4Owp9CgojYXB1cy1tb2JpbGUtbWVudSAud2lkZ2V0LW5hdi1tZW51IC5tZW51IGxpIHsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLm1haW4tbW9iaWxlLW1lbnUgewogICAgZmxvYXQ6IG5vbmU7Cn0KCi5tYWluLW1vYmlsZS1tZW51PmxpIHsKICAgIGZsb2F0OiBub25lOwp9CgoubWFpbi1tb2JpbGUtbWVudSAuaGFzLXN1Ym1lbnU+LnN1Yi1tZW51IHsKICAgIHBhZGRpbmctbGVmdDogMzBweDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBkaXNwbGF5OiBub25lOwp9CgoucnRsIC5tYWluLW1vYmlsZS1tZW51IC5oYXMtc3VibWVudT4uc3ViLW1lbnUgewogICAgcGFkZGluZy1yaWdodDogMzBweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLm1haW4tbW9iaWxlLW1lbnUgLmhhcy1zdWJtZW51Pi5zdWItbWVudSBsaT4uaWNvbi10b2dnbGUgewogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nOiAwIDVweDsKfQoKLm1haW4tbW9iaWxlLW1lbnUgLmhhcy1zdWJtZW51Pi5zdWItbWVudSBsaSBhIHsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIHBhZGRpbmc6IDJweCAwOwp9CgoubWFpbi1tb2JpbGUtbWVudSAud2lkZ2V0IC53aWRnZXQtdGl0bGUsCi5tYWluLW1vYmlsZS1tZW51IC53aWRnZXQgLndpZGdldHRpdGxlLAoubWFpbi1tb2JpbGUtbWVudSAud2lkZ2V0IC53aWRnZXQtaGVhZGluZyB7CiAgICBtYXJnaW46IDAgMCAxMHB4OwogICAgZm9udC1zaXplOiAxNnB4OwogICAgcGFkZGluZzogMCAwIDhweDsKICAgIHRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCi5tYWluLW1vYmlsZS1tZW51IC5zdWItbWVudSB7CiAgICBtYXgtd2lkdGg6IDEwMCU7Cn0KCi5tYWluLW1vYmlsZS1tZW51IC5zaG9wLWxpc3Qtc21hbGwgewogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLm1haW4tbW9iaWxlLW1lbnUgLnRleHQtbGFiZWwgewogICAgZm9udC1zaXplOiAxMnB4OwogICAgdmVydGljYWwtYWxpZ246IHN1cGVyOwogICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgZm9udC1mYW1pbHk6ICJOdW5pdG8iLCBBcmlhbCwgc2Fucy1zZXJpZjsKfQoKLnJ0bCAubWFpbi1tb2JpbGUtbWVudSAudGV4dC1sYWJlbCB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgoubWFpbi1tb2JpbGUtbWVudSAudGV4dC1sYWJlbC5sYWJlbC1ob3QgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi5tYWluLW1vYmlsZS1tZW51IC50ZXh0LWxhYmVsLmxhYmVsLW5ldyB7CiAgICBjb2xvcjogIzc5YjUzMDsKfQoKLm1lbnUtc2V0dGluZy1tZW51LWNvbnRhaW5lciAuYXB1cy1tZW51LXRvcCB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIGxpbmUtaGVpZ2h0OiAyOwp9CgoubWVudS1zZXR0aW5nLW1lbnUtY29udGFpbmVyIC5hcHVzLW1lbnUtdG9wIGxpIGEgewogICAgcGFkZGluZzogMCAxNXB4OwogICAgd2lkdGg6IDEwMCU7Cn0KCi5tZW51LXNldHRpbmctbWVudS1jb250YWluZXIgLmFwdXMtbWVudS10b3AgdWwgewogICAgcGFkZGluZy1sZWZ0OiAxNXB4Owp9CgoucnRsIC5tZW51LXNldHRpbmctbWVudS1jb250YWluZXIgLmFwdXMtbWVudS10b3AgdWwgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLndyYXBwZXItdG9wbWVudSAuZHJvcGRvd24tbWVudSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwOwp9CgoudG9wbWVudS1tZW51IHsKICAgIHdpZHRoOiAxMDAlOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7Cn0KCi50b3BtZW51LW1lbnUgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDhweDsKfQoKLnJ0bCAudG9wbWVudS1tZW51IGkgewogICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnRvcG1lbnUtbWVudT5saSB7CiAgICBmbG9hdDogbm9uZTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogOHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7Cn0KCi50b3BtZW51LW1lbnU+bGk6bGFzdC1jaGlsZCB7CiAgICBib3JkZXI6IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLnRvcG1lbnUtbWVudT5saT5hIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwOwp9CgoudG9wbWVudS1tZW51PmxpLmFjdGl2ZT5hIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoubW0tbWVudSB7CiAgICBiYWNrZ3JvdW5kOiAjZjdmN2Y3OwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3IC5tbS1uZXh0OjpiZWZvcmUgewogICAgYm9yZGVyOiBub25lOwp9CgoubW0tbWVudSAuZWxlbWVudG9yLWNvbHVtbi13cmFwIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoKLm1tLW1lbnUgLm1tLXBhbmVsIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5tbS1tZW51IC5tbS1wYW5lbCAuZHJvcGRvd24tbWVudS1pbm5lciB7CiAgICBwYWRkaW5nLXRvcDogMzBweDsKICAgIG1hcmdpbjogLTIwcHggLTIwcHggMjBweDsKfQoKLm1tLW1lbnUgLm1lbnUgbGkgewogICAgbGluZS1oZWlnaHQ6IDI7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwp9CgoubW0tbWVudSAubWVudSBsaTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b206IDA7Cn0KCi5tbS1tZW51IC5tZW51IGEgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY29sb3I6IGluaGVyaXQ7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDIwcHg7CiAgICBtYXJnaW46IDA7Cn0KCi5tbS1tZW51IC5tZW51IGE6YmVmb3JlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5tbS1tZW51IC5tZW51IGE6aG92ZXIsCi5tbS1tZW51IC5tZW51IGE6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5tbS1tZW51IC5tbS1saXN0dmlldz5saT5hIHsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAyOwp9CgoubW0tbWVudSAubW0tbGlzdHZpZXc+bGk+YTpob3ZlciwKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpPmE6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5tbS1tZW51IC5tbS1saXN0dmlldz5saT5hIC50ZXh0LWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIHBhZGRpbmc6IDBweCA1cHg7CiAgICBiYWNrZ3JvdW5kOiAjMjdjZWI0OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDUwcHg7CiAgICB0b3A6IDA7CiAgICBsaW5lLWhlaWdodDogMjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAycHg7Cn0KCi5ydGwgLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpPmEgLnRleHQtbGFiZWwgewogICAgbGVmdDogNTBweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoubW0tbWVudSAubW0tbGlzdHZpZXc+bGk+YSAudGV4dC1sYWJlbC5sYWJlbC1ob3QgewogICAgYmFja2dyb3VuZDogI2U0NDM0MzsKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpPmEgLnRleHQtbGFiZWwubGFiZWwtaG90OmJlZm9yZSB7CiAgICBib3JkZXItY29sb3I6ICNlNDQzNDMgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2U0NDM0MzsKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpPmEgLnRleHQtbGFiZWwubGFiZWwtbmV3IHsKICAgIGJhY2tncm91bmQ6ICM3OWI1MzA7Cn0KCi5tbS1tZW51IC5tbS1saXN0dmlldz5saT5hIC50ZXh0LWxhYmVsLmxhYmVsLW5ldzpiZWZvcmUgewogICAgYm9yZGVyLWNvbG9yOiAjNzliNTMwIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3OWI1MzA7Cn0KCi5tbS1tZW51IC5tbS1saXN0dmlldz5saT5hIC50ZXh0LWxhYmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDk7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiA3cHg7CiAgICBib3JkZXItd2lkdGg6IDNweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6ICMyN2NlYjQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzI3Y2ViNDsKfQoKLnJ0bCAubW0tbWVudSAubW0tbGlzdHZpZXc+bGk+YSAudGV4dC1sYWJlbDpiZWZvcmUgewogICAgcmlnaHQ6IDdweDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5tbS1tZW51IC5tbS1saXN0dmlldyAubWVudS1pdGVtLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpOmFmdGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5tbS1tZW51IC5tbS1saXN0dmlldz5saSAubW0tbmV4dDphZnRlciB7CiAgICBib3JkZXItY29sb3I6ICM0ODQ4NDg7Cn0KCi5tbS1tZW51IC5tbS1saXN0dmlldz5saSAubW0tbmV4dDpob3ZlcjphZnRlciwKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpIC5tbS1uZXh0OmZvY3VzOmFmdGVyIHsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpLmFjdGl2ZT5hIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoubW0tbWVudSAubW0tbGlzdHZpZXc+bGkuYWN0aXZlPi5tbS1uZXh0OmFmdGVyIHsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLm1tLW1lbnUgLm1tLWJ0bjpiZWZvcmUgewogICAgYm9yZGVyLWNvbG9yOiAjNDg0ODQ4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7Cn0KCi5tbS1tZW51IC5tbS1idG46aG92ZXI6YmVmb3JlLAoubW0tbWVudSAubW0tYnRuOmZvY3VzOmJlZm9yZSB7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7Cn0KCi5tbS1tZW51IC5tbS10aXRsZSB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgcGFkZGluZzogMTVweCAwOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc2l6ZTogMTdweDsKICAgIGhlaWdodDogYXV0bzsKICAgIGNvbG9yOiAjNDg0ODQ4ICFpbXBvcnRhbnQ7Cn0KCi5tbS1tZW51IC5tbS1uYXZiYXIgewogICAgcGFkZGluZzogMDsKfQoKLm1tLW1lbnUgLm1tLW5hdmJhciAubW0tYnRuIHsKICAgIHRvcDogN3B4Owp9CgoubW0tbWVudSAud2lkZ2V0IC53aWRnZXQtdGl0bGUsCi5tbS1tZW51IC53aWRnZXQgLndpZGdldHRpdGxlLAoubW0tbWVudSAud2lkZ2V0IC53aWRnZXQtaGVhZGluZyB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLm1tLW1lbnUgLndpZGdldCAud2lkZ2V0LXRpdGxlOmJlZm9yZSwKLm1tLW1lbnUgLndpZGdldCAud2lkZ2V0dGl0bGU6YmVmb3JlLAoubW0tbWVudSAud2lkZ2V0IC53aWRnZXQtaGVhZGluZzpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm1tLW1lbnUgbGkudGV4dC10aXRsZSB7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZm9udC1zaXplOiAxNXB4OwogICAgcGFkZGluZzogMTVweDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KCi5tbS1tZW51IGxpLnRleHQtdGl0bGV+bGkgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4Owp9CgoubW0tbWVudSBsaS50ZXh0LXRpdGxlfmxpIGEgewogICAgcGFkZGluZzogN3B4OwogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudDsKfQoKLm1tLW1lbnUgbGkudGV4dC10aXRsZX5saSBpIHsKICAgIG1hcmdpbi1yaWdodDogN3B4Owp9CgoucnRsIC5tbS1tZW51IGxpLnRleHQtdGl0bGV+bGkgaSB7CiAgICBtYXJnaW4tbGVmdDogN3B4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC5tbS1tZW51IGxpLnRleHQtdGl0bGV+bGkgewogICAgcGFkZGluZy1yaWdodDogMjBweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLm1tLXBhbmVscz4ubW0tcGFuZWw+Lm1tLWxpc3R2aWV3IHsKICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgZm9udC1zaXplOiAxNnB4OwogICAgcGFkZGluZy1ib3R0b206IDQwcHg7Cn0KCi5tbS1wYW5lbHM+Lm1tLXBhbmVsPi5tbS1saXN0dmlldz5saSB7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2ViZWJlYjsKfQoKLm1tLXBhbmVscz4ubW0tcGFuZWw+Lm1tLWxpc3R2aWV3PmxpLnNwYWNlLTIwIHsKICAgIGJvcmRlcjogbm9uZTsKfQoKLm1vYmlsZS1zdWJtaXQgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAxOwogICAgd2lkdGg6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgcGFkZGluZzogMTVweDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7Cn0KCi5tb2JpbGUtc3VibWl0IC5idG4gewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MHB4Owp9CgoudG9wLW1lbnU+bGk+YSB7CiAgICBwYWRkaW5nOiAwIDE1cHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoKI21tLWJsb2NrZXIgewogICAgei1pbmRleDogOTk5OTkwOwp9CgoubW0tbWVudS5tbS1vZmZjYW52YXMgewogICAgei1pbmRleDogOTk5OTkxOwogICAgbWF4LXdpZHRoOiA4NSU7Cn0KCi5tbS1tZW51Lm1tLW9mZmNhbnZhcyAuc29jaWFsLXRvcDphZnRlciB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoubW0tbWVudS5tbS1vZmZjYW52YXMgLnNvY2lhbC10b3AgYSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXNpemU6IDE2cHg7Cn0KCi5tbS1tZW51Lm1tLW9mZmNhbnZhcyAuc29jaWFsLXRvcCBhOmhvdmVyLAoubW0tbWVudS5tbS1vZmZjYW52YXMgLnNvY2lhbC10b3AgYTphY3RpdmUgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5tbS1tZW51Lm1tLW9mZmNhbnZhcyAud2lkZ2V0IHsKICAgIG1hcmdpbjogMDsKfQoKLm1tLW1lbnUubW0tb2ZmY2FudmFzIC50b3BiYXItcmlnaHQtd3JhcHBlciB7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgoubW0tbWVudS5tbS1vZmZjYW52YXMgLnRvcGJhci1yaWdodC13cmFwcGVyPiogewogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKLm1tLW1lbnUubW0tb2ZmY2FudmFzIC50b3BiYXItcmlnaHQtd3JhcHBlcj4qOmxhc3QtY2hpbGQgewogICAgbWFyZ2luOiAwOwp9CgoubW0tbWVudS5tbS1vZmZjYW52YXMgLnRvcGJhci1yaWdodC13cmFwcGVyOmFmdGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5tbS1tZW51Lm1tLW9mZmNhbnZhcyAud29vY29tbWVyY2UtY3VycmVuY3ktc3dpdGNoZXItZm9ybSB1bC5kZC1vcHRpb25zIHsKICAgIG1hcmdpbi10b3A6IDA7Cn0KCmh0bWwubW0tb3BlbmluZyAubW0tbWVudX4ubW0tc2xpZGVvdXQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7Cn0KCi5tbS1saXN0dmlldyAubW0tbmV4dCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7Cn0KCi5tbS1tZW51Lm1tLW9mZmNhbnZhcyB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZWJlYmViOwp9CgpAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7CiAgICAubW0tbWVudS5tbS1vZmZjYW52YXMgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQp9CgoubW0tbWVudS5tbS1vZmZjYW52YXMubW0tb3BlbmVkIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKfQoKI21tLWJsb2NrZXIgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLm1vYmlsZS12ZXJ0aWNhbC1tZW51IC5uYXZiYXItb2ZmY2FudmFzIC5uYXZiYXItbmF2IGxpPmEgewogICAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKLm1vYmlsZS12ZXJ0aWNhbC1tZW51IC5uYXZiYXItb2ZmY2FudmFzIC5uYXZiYXItbmF2IGxpPmEgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1pbi13aWR0aDogMjBweDsKfQoKLnJ0bCAubW9iaWxlLXZlcnRpY2FsLW1lbnUgLm5hdmJhci1vZmZjYW52YXMgLm5hdmJhci1uYXYgbGk+YSBpIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5tb2JpbGUtdmVydGljYWwtbWVudSAubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaSAuZmEtbWludXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5tb2JpbGUtdmVydGljYWwtbWVudSAubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaSAuc3ViLW1lbnUgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgZGlzcGxheTogbm9uZTsKICAgIHBhZGRpbmc6IDAgMTVweDsKfQoKLm1vYmlsZS12ZXJ0aWNhbC1tZW51IC5uYXZiYXItb2ZmY2FudmFzIC5uYXZiYXItbmF2IGxpIC53aWRnZXQgLndpZGdldHRpdGxlLAoubW9iaWxlLXZlcnRpY2FsLW1lbnUgLm5hdmJhci1vZmZjYW52YXMgLm5hdmJhci1uYXYgbGkgLndpZGdldCAud2lkZ2V0LXRpdGxlIHsKICAgIHBhZGRpbmc6IDA7CiAgICBib3JkZXI6IG5vbmU7CiAgICBtYXJnaW46IDAgMCAxMHB4OwogICAgZm9udC1zaXplOiAxNnB4Owp9CgoubW9iaWxlLXZlcnRpY2FsLW1lbnUgLm5hdmJhci1vZmZjYW52YXMgLm5hdmJhci1uYXYgbGkgLndpZGdldCAud2lkZ2V0dGl0bGU6YmVmb3JlLAoubW9iaWxlLXZlcnRpY2FsLW1lbnUgLm5hdmJhci1vZmZjYW52YXMgLm5hdmJhci1uYXYgbGkgLndpZGdldCAud2lkZ2V0dGl0bGU6YWZ0ZXIsCi5tb2JpbGUtdmVydGljYWwtbWVudSAubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaSAud2lkZ2V0IC53aWRnZXQtdGl0bGU6YmVmb3JlLAoubW9iaWxlLXZlcnRpY2FsLW1lbnUgLm5hdmJhci1vZmZjYW52YXMgLm5hdmJhci1uYXYgbGkgLndpZGdldCAud2lkZ2V0LXRpdGxlOmFmdGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5tb2JpbGUtdmVydGljYWwtbWVudSAubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaSAuZHJvcGRvd24tbWVudS1pbm5lciB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7Cn0KCi5ydGwgLm1vYmlsZS12ZXJ0aWNhbC1tZW51IC5uYXZiYXItb2ZmY2FudmFzIC5uYXZiYXItbmF2IGxpIC5kcm9wZG93bi1tZW51LWlubmVyIHsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCi5tb2JpbGUtdmVydGljYWwtbWVudSAubmF2YmFyLW9mZmNhbnZhcyAubmF2YmFyLW5hdiBsaSAubWVudSBsaSBhIHsKICAgIHBhZGRpbmc6IDA7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5tb2JpbGUtdmVydGljYWwtbWVudSAud2lkZ2V0IHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi8qIDYuIHBhZ2VzICovCgpAbWVkaWEgKG1pbi13aWR0aDogMTUwMXB4KSB7CiAgICAuY29sLW1kLWNsLTUgewogICAgICAgIHdpZHRoOiAyMCU7CiAgICB9CiAgICAuY29sLW1kLWNsLTUuZmlyc3QgewogICAgICAgIGNsZWFyOiBib3RoOwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgICAuY29sLW1kLWNsLTUgewogICAgICAgIHdpZHRoOiAyNSU7CiAgICB9CiAgICAuY29sLW1kLWNsLTUuZmlyc3Q6bnRoLWNoaWxkKDRuKzEpIHsKICAgICAgICBjbGVhcjogYm90aDsKICAgIH0KICAgIGRpdi5wcm9kdWN0LmNvbC1tZC1jbC01Om50aC1jaGlsZCg0bisxKSB7CiAgICAgICAgY2xlYXI6IGJvdGg7CiAgICB9Cn0KCi5ob21lLXBhZ2UtZGVmYXVsdCB7CiAgICBwYWRkaW5nLXRvcDogMzBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmhvbWUtcGFnZS1kZWZhdWx0IHsKICAgICAgICBwYWRkaW5nLXRvcDogNTVweDsKICAgIH0KfQoKLmFwdXMtYnJlYWRzY3J1bWIrLmhvbWUtcGFnZS1kZWZhdWx0IHsKICAgIHBhZGRpbmctdG9wOiAwOwp9CgoubWFpbi1wYWdlIC5wYWdlLWxpbmtzIHsKICAgIGNsZWFyOiBib3RoOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmc6IDMwcHggMDsKICAgIG1hcmdpbjogMDsKfQoKLm1haW4tcGFnZSAjcmVzcG9uZCAuY29tbWVudC1yZXBseS10aXRsZSB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKfQoKLm1haW4tcGFnZSAjY29tbWVudHMgewogICAgcGFkZGluZy10b3A6IDMwcHg7CiAgICBjbGVhcjogYm90aDsKfQoKLm1haW4tY29udGVudCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsKfQoKLm1haW4tY29udGVudC1kZXRhaWwgewogICAgcGFkZGluZy1ib3R0b206IDMwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5tYWluLWNvbnRlbnQtZGV0YWlsIHsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNzBweDsKICAgIH0KfQoKYm9keS5uby1mb290ZXIgI2FwdXMtZm9vdGVyIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKYm9keS5zaW5nbGUtcHJvZHVjdCwKYm9keS5ibG9nLApib2R5W2NsYXNzKj0iYXJjaGl2ZS1wcm9kdWN0Il0sCmJvZHkuc2luZ2xlLXBvc3QgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKZGl2LndwY2Y3LXZhbGlkYXRpb24tZXJyb3JzIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDE1cHg7Cn0KCi5jb250YWN0LWZvcm0tY29udGVudCB7CiAgICBwYWRkaW5nOiAzMHB4OwogICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICBtaW4taGVpZ2h0OiAyNjBweDsKfQoKLmNvbnRhY3QtZm9ybS1jb250ZW50IC5yb3VuZGVkIHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIGNvbG9yOiAjZmZmOwogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBiYWNrZ3JvdW5kOiAjYzRjNGM0Owp9CgoucnRsIC5jb250YWN0LWZvcm0tY29udGVudCAucm91bmRlZCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmNvbnRhY3QtZm9ybS1jb250ZW50IC5yb3VuZGVkIC5mYSwKLmNvbnRhY3QtZm9ybS1jb250ZW50IC5yb3VuZGVkIC5pY29uIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIG1hcmdpbjogMTNweDsKfQoKLmNvbnRhY3QtZm9ybS1jb250ZW50IHNtYWxsIHsKICAgIGNvbG9yOiAjMTUxNTE1Owp9CgoucGFnZS00MDQgewogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wYWdlLTQwNCAuYnRuLWJhY2staG9tZSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7CiAgICB9Cn0KCi5wYWdlLTQwNCAubm90LWZvdW5kIHsKICAgIHBhZGRpbmc6IDMwcHggMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnBhZ2UtNDA0IC5ub3QtZm91bmQgewogICAgICAgIHBhZGRpbmc6IDcwcHggMDsKICAgIH0KfQoKLnBhZ2UtNDA0IC50b3AtaW1hZ2UgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnBhZ2UtNDA0IC50b3AtaW1hZ2UgewogICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICB9Cn0KCi5wYWdlLTQwNCAudG9wLWltYWdlIGltZyB7CiAgICBtYXgtd2lkdGg6IDgwJTsKfQoKLnBhZ2UtNDA0IC5kZXNjcmlwdGlvbiB7CiAgICBtYXJnaW4tYm90dG9tOiAyNXB4Owp9CgoucGFnZS00MDQgLnRpdGxlLWJpZyB7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICBtYXJnaW46IDAgMCA1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wYWdlLTQwNCAudGl0bGUtYmlnIHsKICAgICAgICBmb250LXNpemU6IDQ1cHg7CiAgICB9Cn0KCi5wYWdlLTQwNCAud2lkZ2V0LXNlYXJjaCB7CiAgICBtYXJnaW46IDAgYXV0byAzMHB4OwogICAgbWF4LXdpZHRoOiA2MDBweDsKfQoKLmlubmVyLWRhc2hib2FyZCAud2lkZ2V0X2FwdXNfdXNlcl9zaG9ydF9wcm9maWxlIHsKICAgIGJvcmRlcjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9CgouaW5uZXItZGFzaGJvYXJkIC53aWRnZXRfYXB1c191c2VyX3Nob3J0X3Byb2ZpbGUgLnVzZXJfc2hvcnRfcHJvZmlsZSB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7Cn0KCi5pbm5lci1kYXNoYm9hcmQgLndpZGdldF9hcHVzX3VzZXJfc2hvcnRfcHJvZmlsZSAubmF2YmFyLWNvbGxhcHNlIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi5pbm5lci1kYXNoYm9hcmQgLmNsb3NlLXNpZGViYXItYnRuIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAxNXB4Owp9CgouaW5uZXItZGFzaGJvYXJkIC5zaWRlYmFyOm5vdCguc2lkZWJhci1wcm9wZXJ0eSkgewogICAgY29sb3I6ICM4YTk5YjM7CiAgICBiYWNrZ3JvdW5kOiAjMWQyOTNlOwogICAgcGFkZGluZzogMDsKfQoKLmlubmVyLWRhc2hib2FyZCAuc2lkZWJhcjpub3QoLnNpZGViYXItcHJvcGVydHkpIGEgewogICAgY29sb3I6ICM4YTk5YjM7Cn0KCi5pbm5lci1kYXNoYm9hcmQgLnNpZGViYXI6bm90KC5zaWRlYmFyLXByb3BlcnR5KSBhOmhvdmVyLAouaW5uZXItZGFzaGJvYXJkIC5zaWRlYmFyOm5vdCguc2lkZWJhci1wcm9wZXJ0eSkgYTpmb2N1cyB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmlubmVyLWRhc2hib2FyZCAuc2lkZWJhcjpub3QoLnNpZGViYXItcHJvcGVydHkpIC53aWRnZXQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IDA7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7Cn0KCi5pbm5lci1kYXNoYm9hcmQgLnNpZGViYXI6bm90KC5zaWRlYmFyLXByb3BlcnR5KSAud2lkZ2V0LndpZGdldF9tZWRpYV9pbWFnZSB7CiAgICBiYWNrZ3JvdW5kOiAjMjQzMjRhOwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmlubmVyLWRhc2hib2FyZCAuc2lkZWJhcjpub3QoLnNpZGViYXItcHJvcGVydHkpIC53aWRnZXQgewogICAgICAgIHBhZGRpbmc6IDIycHggMzBweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgICAuaW5uZXItZGFzaGJvYXJkIC5zaWRlYmFyOm5vdCguc2lkZWJhci1wcm9wZXJ0eSkgewogICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgei1pbmRleDogNTsKICAgIH0KICAgIC5pbm5lci1kYXNoYm9hcmQgLnNpZGViYXI6bm90KC5zaWRlYmFyLXByb3BlcnR5KS5zaWRlYmFyLWxlZnQgewogICAgICAgIGxlZnQ6IDA7CiAgICB9CiAgICAuaW5uZXItZGFzaGJvYXJkIC5zaWRlYmFyOm5vdCguc2lkZWJhci1wcm9wZXJ0eSkuc2lkZWJhci1yaWdodCB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5pbm5lci1kYXNoYm9hcmQgLnNpZGViYXI6bm90KC5zaWRlYmFyLXByb3BlcnR5KSB7CiAgICAgICAgd2lkdGg6IDMwMHB4OwogICAgfQp9CgouaW5uZXItZGFzaGJvYXJkIC5zaWRlYmFyLWxlZnQgLm1lbnVfc2hvcnRfcHJvZmlsZSBsaSBhIHsKICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4Owp9CgouaW5uZXItZGFzaGJvYXJkIC5zaWRlYmFyLXJpZ2h0IC5tZW51X3Nob3J0X3Byb2ZpbGUgbGkgYSB7CiAgICBib3JkZXItd2lkdGg6IDAgMnB4IDAgMDsKfQoKLmlubmVyLWRhc2hib2FyZCAubWVudV9zaG9ydF9wcm9maWxlIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwp9CgouaW5uZXItZGFzaGJvYXJkIC5tZW51X3Nob3J0X3Byb2ZpbGUgYSB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmlubmVyLWRhc2hib2FyZCAubWVudV9zaG9ydF9wcm9maWxlIGE6aG92ZXIsCi5pbm5lci1kYXNoYm9hcmQgLm1lbnVfc2hvcnRfcHJvZmlsZSBhOmZvY3VzIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgouaW5uZXItZGFzaGJvYXJkIC5tZW51X3Nob3J0X3Byb2ZpbGUgbGkgYSB7CiAgICBwYWRkaW5nOiA1cHggMTVweDsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgZGlzcGxheTogYmxvY2s7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuaW5uZXItZGFzaGJvYXJkIC5tZW51X3Nob3J0X3Byb2ZpbGUgbGkgYSB7CiAgICAgICAgcGFkZGluZzogOXB4IDMwcHg7CiAgICB9Cn0KCi5pbm5lci1kYXNoYm9hcmQgLm1lbnVfc2hvcnRfcHJvZmlsZSBsaSBhIGkgewogICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5ydGwgLmlubmVyLWRhc2hib2FyZCAubWVudV9zaG9ydF9wcm9maWxlIGxpIGEgaSB7CiAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuaW5uZXItZGFzaGJvYXJkIC5tZW51X3Nob3J0X3Byb2ZpbGUgbGkgYSBpIHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4OwogICAgfQogICAgLnJ0bCAuaW5uZXItZGFzaGJvYXJkIC5tZW51X3Nob3J0X3Byb2ZpbGUgbGkgYSBpIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9Cn0KCi5pbm5lci1kYXNoYm9hcmQgLm1lbnVfc2hvcnRfcHJvZmlsZSBsaTpob3Zlcj5hIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogIzE3MjEzMzsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLmlubmVyLWRhc2hib2FyZCAubWVudV9zaG9ydF9wcm9maWxlIGxpLmFjdGl2ZT5hIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogIzE3MjEzMzsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgICAucGFnZS1kYXNoYm9hcmRbY2xhc3MqPSJsZWZ0Il0gewogICAgICAgIHBhZGRpbmctbGVmdDogMjAwcHg7CiAgICB9CiAgICAucGFnZS1kYXNoYm9hcmRbY2xhc3MqPSJyaWdodCJdIHsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMDBweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnBhZ2UtZGFzaGJvYXJkW2NsYXNzKj0ibGVmdCJdIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwMHB4OwogICAgfQogICAgLnBhZ2UtZGFzaGJvYXJkW2NsYXNzKj0icmlnaHQiXSB7CiAgICAgICAgcGFkZGluZy1yaWdodDogMzAwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLnBhZ2UtdGVtcGxhdGUtcGFnZS1kYXNoYm9hcmRbY2xhc3MqPSJsZWZ0Il0gLmFwdXMtZm9vdGVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwMHB4OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucGFnZS10ZW1wbGF0ZS1wYWdlLWRhc2hib2FyZFtjbGFzcyo9ImxlZnQiXSAuYXB1cy1mb290ZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLnBhZ2UtdGVtcGxhdGUtcGFnZS1kYXNoYm9hcmRbY2xhc3MqPSJyaWdodCJdIC5hcHVzLWZvb3RlciB7CiAgICAgICAgcGFkZGluZy1yaWdodDogMjAwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wYWdlLXRlbXBsYXRlLXBhZ2UtZGFzaGJvYXJkW2NsYXNzKj0icmlnaHQiXSAuYXB1cy1mb290ZXIgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwMHB4OwogICAgfQp9CgouYXB1cy1kYXNoYm9hcmQgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgei1pbmRleDogLTE7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7Cn0KCi50b3BfcHJvZmlsZSB7CiAgICBwYWRkaW5nOiAzMHB4IDMwcHggMjVweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlNmVkOwp9CgoudG9wX3Byb2ZpbGUgLnVzZXItbG9nbyB7CiAgICBtYXJnaW46IDAgMCAyNXB4Owp9CgoudG9wX3Byb2ZpbGUgLmxvZ28taW5uZXIgewogICAgd2lkdGg6IDE1MHB4OwogICAgaGVpZ2h0OiAxNTBweDsKICAgIHBhZGRpbmc6IDVweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgYm94LXNoYWRvdzogMCAwIDMwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICBtYXJnaW46IGF1dG87Cn0KCi50b3BfcHJvZmlsZSAudGl0bGUgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWFyZ2luOiAwOwp9CgoudG9wX3Byb2ZpbGUgLmNhdGVnb3JpZXMgYSB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLnRvcF9wcm9maWxlIC5jYXRlZ29yaWVzIGE6aG92ZXIsCi50b3BfcHJvZmlsZSAuY2F0ZWdvcmllcyBhOmZvY3VzIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgovKiA3LiBwb3N0ICovCgovKgoqIEdlbmVyYWwgUG9zdCBTdHlsZSB1c2luZyBmb3IgYWxsIHdpdGggbmFtaW5nIGNsYXNzIGVudHJ5CiovCgoucG9zdC5uby1yZXN1bHRzIHsKICAgIG1hcmdpbjogMCAwIDM1cHg7Cn0KCi5wb3N0Lm5vLXJlc3VsdHMgLndpZGdldC1zZWFyY2ggewogICAgbWFyZ2luLXRvcDogMjVweDsKICAgIHBhZGRpbmc6IDE1cHg7Cn0KCi5wb3N0Lm5vLXJlc3VsdHMgLnRpdGxlLW5vLXJlc3VsdHMgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBtYXJnaW46IDAgMCAzNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5wb3N0Lm5vLXJlc3VsdHMgLnRpdGxlLW5vLXJlc3VsdHMgewogICAgICAgIG1hcmdpbjogMCAwIDkwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLnBvc3Qubm8tcmVzdWx0cyB7CiAgICAgICAgbWFyZ2luOiAwIDAgMTAwcHg7CiAgICB9Cn0KCi5lbnRyeS10aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAxMnB4OwogICAgd29yZC13cmFwOiBicmVhay13b3JkOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuZW50cnktdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIH0KfQoKLmVudHJ5LWNyZWF0ZSB7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBtYXJnaW46IDAgMCAxNXB4Owp9CgouZW50cnktY3JlYXRlPiogewogICAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KCi5ydGwgLmVudHJ5LWNyZWF0ZT4qIHsKICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5lbnRyeS1jcmVhdGUgLmF1dGhvciB7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoKLmNvbW1lbnQtZm9ybS1jb29raWVzLWNvbnNlbnQgW3R5cGU9ImNoZWNrYm94Il0gewogICAgbWFyZ2luLXJpZ2h0OiA3cHg7Cn0KCi5ydGwgLmNvbW1lbnQtZm9ybS1jb29raWVzLWNvbnNlbnQgW3R5cGU9ImNoZWNrYm94Il0gewogICAgbWFyZ2luLWxlZnQ6IDdweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmVudHJ5LWxpbmsgewogICAgbWFyZ2luLXRvcDogMjBweDsKfQoKLmVudHJ5LWxpbmsgLnJlYWRtb3JlIHsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZm9udC1zaXplOiAxMnB4Owp9CgouZW50cnktbGluayAucmVhZG1vcmU6aG92ZXIgewogICAgY29sb3I6ICMwMDA7Cn0KCi5lbnRyeS1tZXRhIHsKICAgIG1hcmdpbjogMDsKfQoKLmVudHJ5LW1ldGEgLmZhLAouZW50cnktbWV0YSAuaWNvbiB7CiAgICBtYXJnaW4tcmlnaHQ6IDNweDsKfQoKLnJ0bCAuZW50cnktbWV0YSAuZmEsCi5ydGwgLmVudHJ5LW1ldGEgLmljb24gewogICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLndwLWJsb2NrLXF1b3RlLApibG9ja3F1b3RlIHsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogNTBweCAyMHB4IDIwcHg7CiAgICBtYXJnaW46IDMwcHggMDsKICAgIGJvcmRlcjogMDsKICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIGJvcmRlci1sZWZ0OiA4cHggc29saWQgI2ZmNWE1ZjsKfQoKLnJ0bCAud3AtYmxvY2stcXVvdGUsCi5ydGwgYmxvY2txdW90ZSB7CiAgICBib3JkZXItcmlnaHQ6IDhweCBzb2xpZCAjZmY1YTVmOwogICAgYm9yZGVyLWxlZnQ6IGluaGVyaXQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53cC1ibG9jay1xdW90ZSwKICAgIGJsb2NrcXVvdGUgewogICAgICAgIHBhZGRpbmc6IDYwcHggNDBweCAzMHB4OwogICAgfQp9Cgoud3AtYmxvY2stcXVvdGU6YmVmb3JlLApibG9ja3F1b3RlOmJlZm9yZSB7CiAgICBjb2xvcjogI2JiYmJiYjsKICAgIGZvbnQtc2l6ZTogNzBweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAyMHB4OwogICAgbGVmdDogMjBweDsKICAgIHRleHQtaW5kZW50OiAtOXB4Owp9CgoucnRsIC53cC1ibG9jay1xdW90ZTpiZWZvcmUsCi5ydGwgYmxvY2txdW90ZTpiZWZvcmUgewogICAgcmlnaHQ6IDIwcHg7CiAgICBsZWZ0OiBhdXRvOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud3AtYmxvY2stcXVvdGU6YmVmb3JlLAogICAgYmxvY2txdW90ZTpiZWZvcmUgewogICAgICAgIGxlZnQ6IDQwcHg7CiAgICB9CiAgICAucnRsIC53cC1ibG9jay1xdW90ZTpiZWZvcmUsCiAgICAucnRsIGJsb2NrcXVvdGU6YmVmb3JlIHsKICAgICAgICByaWdodDogNDBweDsKICAgICAgICBsZWZ0OiBhdXRvOwogICAgfQp9CgouZW50cnktdm90ZSB7CiAgICB6LWluZGV4OiAxOwogICAgZGlzcGxheTogdGFibGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB0b3A6IDIwcHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgICB3aWR0aDogNDRweDsKICAgIGhlaWdodDogNDRweDsKICAgIHJpZ2h0OiAyMHB4Owp9CgoucnRsIC5lbnRyeS12b3RlIHsKICAgIGxlZnQ6IDIwcHg7CiAgICByaWdodDogYXV0bzsKfQoKLmVudHJ5LXZvdGUgLmVudHJ5LXZvdGUtaW5uZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KCi5lbnRyeS12b3RlLnZvdGUtcGVyZmVjdCAuZW50cnktdm90ZS1pbm5lciB7CiAgICBjb2xvcjogI2ZmMDAzYTsKfQoKLmVudHJ5LXZvdGUudm90ZS1nb29kIC5lbnRyeS12b3RlLWlubmVyIHsKICAgIGNvbG9yOiAjZmRmZjM5Owp9CgouZW50cnktdm90ZS52b3RlLWF2ZXJhZ2UgLmVudHJ5LXZvdGUtaW5uZXIgewogICAgY29sb3I6ICM5MWU1MzY7Cn0KCi5lbnRyeS12b3RlLnZvdGUtYmFkIC5lbnRyeS12b3RlLWlubmVyIHsKICAgIGNvbG9yOiAjZTkzNDM0Owp9CgouZW50cnktdm90ZS52b3RlLXBvb3IgLmVudHJ5LXZvdGUtaW5uZXIgewogICAgY29sb3I6ICM3OGFlMDA7Cn0KCi50eXBlLXBvc3QgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoKLmJsb2ctdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgICAubGF5b3V0LXBvc3RzLWxpc3Q+LnBvc3QgewogICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9Cn0KCiNyZXZpZXdfZm9ybSwKI2NvbW1lbnRmb3JtIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCiNyZXZpZXdfZm9ybSBsYWJlbCwKI2NvbW1lbnRmb3JtIGxhYmVsIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIG1hcmdpbjogMCAwIDEwcHg7Cn0KCiNyZXZpZXdfZm9ybSAuY29tbWVudC1mb3JtLWNvb2tpZXMtY29uc2VudCwKI2NvbW1lbnRmb3JtIC5jb21tZW50LWZvcm0tY29va2llcy1jb25zZW50IHsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKI3Jldmlld19mb3JtIC5jb21tZW50LWZvcm0tY29va2llcy1jb25zZW50IGxhYmVsLAojY29tbWVudGZvcm0gLmNvbW1lbnQtZm9ybS1jb29raWVzLWNvbnNlbnQgbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGRpc3BsYXk6IGlubGluZTsKfQoKI3Jldmlld19mb3JtIC5mb3JtLWdyb3VwLAojY29tbWVudGZvcm0gLmZvcm0tZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKI3Jldmlld19mb3JtIC5mb3JtLWNvbnRyb2wsCiNjb21tZW50Zm9ybSAuZm9ybS1jb250cm9sIHsKICAgIG1hcmdpbjogMDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7Cn0KCiNyZXZpZXdfZm9ybSB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wsCiNjb21tZW50Zm9ybSB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wgewogICAgaGVpZ2h0OiAyMDBweDsKICAgIHJlc2l6ZTogbm9uZTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgI3Jldmlld19mb3JtIHRleHRhcmVhLmZvcm0tY29udHJvbCwKICAgICNjb21tZW50Zm9ybSB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wgewogICAgICAgIGhlaWdodDogMjUwcHg7CiAgICB9Cn0KCiNyZXZpZXdfZm9ybSAuc3BhY2UtY29tbWVudCwKI2NvbW1lbnRmb3JtIC5zcGFjZS1jb21tZW50IHsKICAgIG1hcmdpbjogMCAwIDMwcHg7Cn0KCiNyZXZpZXdfZm9ybSAuZm9ybS1zdWJtaXQsCiNjb21tZW50Zm9ybSAuZm9ybS1zdWJtaXQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKI3Jldmlld19mb3JtICNjYW5jZWwtY29tbWVudC1yZXBseS1saW5rLAojY29tbWVudGZvcm0gI2NhbmNlbC1jb21tZW50LXJlcGx5LWxpbmsgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCiNyZXZpZXdfZm9ybSAjc3VibWl0LAojY29tbWVudGZvcm0gI3N1Ym1pdCB7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgcGFkZGluZzogMTFweCA0MHB4Owp9CgouY29tbWVudGZvcm0gLmNvbW1lbnQtcmVzcG9uZCAjY29tbWVudGZvcm0gewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLyoKKiB1c2luZyBmb3IgbmV3LCBtYWdhemluZQoqLwoKLnBvc3Qtc3BlY2FpbCAuZW50cnktdGl0bGUgewogICAgZm9udC1zaXplOiAxNnB4Owp9CgoucG9zdC1zcGVjYWlsIC5lbnRyeS1kYXRlIHsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLnBvc3Qtc3BlY2FpbCAuZW50cnktY3JlYXRlIHsKICAgIG1hcmdpbjogMCAwIDE4cHg7Cn0KCi5wb3N0LXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKLnBvc3QtdGh1bWIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYmxvZy1tZXRhIHsKICAgIHRvcDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwcHg7Cn0KCi5ydGwgLmJsb2ctbWV0YSB7CiAgICBsZWZ0OiAwcHg7CiAgICByaWdodDogYXV0bzsKfQoKLyoqIFBvc3QgYmxvZyBzdHlsZSAqKi8KCi5ibG9nLnN0eWxlMSAuYmxvZy1kYXRlIHsKICAgIHRvcDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwp9CgoucnRsIC5ibG9nLnN0eWxlMSAuYmxvZy1kYXRlIHsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogYXV0bzsKfQoKLmJsb2cuc3R5bGUyIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7Cn0KCi5ibG9nLnN0eWxlMiAuYmxvZy1kYXRlIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luOiAtMXB4IDMwcHggMHB4IDBweDsKfQoKLnJ0bCAuYmxvZy5zdHlsZTIgLmJsb2ctZGF0ZSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5ydGwgLmJsb2cuc3R5bGUyIC5ibG9nLWRhdGUgewogICAgbWFyZ2luOiAtMXB4IDBweCAwcHggMzBweDsKfQoKLmJsb2cuc3R5bGUyIC5lbnRyeS10aXRsZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDY1cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgoucnRsIC5ibG9nLnN0eWxlMiAuZW50cnktdGl0bGUgewogICAgcGFkZGluZy1yaWdodDogNjVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLnJ0bCAuYmxvZy5zdHlsZTIgLmVudHJ5LXRpdGxlIHsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCi5ibG9nLnN0eWxlMiAuZW50cnktZGVzY3JpcHRpb24gewogICAgcGFkZGluZy1sZWZ0OiA2NXB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKfQoKLnJ0bCAuYmxvZy5zdHlsZTIgLmVudHJ5LWRlc2NyaXB0aW9uIHsKICAgIHBhZGRpbmctcmlnaHQ6IDY1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCi5ydGwgLmJsb2cuc3R5bGUyIC5lbnRyeS1kZXNjcmlwdGlvbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgouYmxvZy5zdHlsZTIgLmVudHJ5LWNvbnRlbnQgewogICAgYm9yZGVyOiAwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgouYmxvZy5zdHlsZTIgLmVudHJ5LWNvbnRlbnQ6YmVmb3JlLAouYmxvZy5zdHlsZTIgLmVudHJ5LWNvbnRlbnQ6YWZ0ZXIgewogICAgY29udGVudDogIiAiOwogICAgZGlzcGxheTogdGFibGU7Cn0KCi5ibG9nLnN0eWxlMiAuZW50cnktY29udGVudDphZnRlciB7CiAgICBjbGVhcjogYm90aDsKfQoKLmJsb2cgLmJsb2ctZGF0ZSB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICAgIGJhY2tncm91bmQ6ICNlOTM0MzQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjMDAwOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7Cn0KCi5ibG9nIC5ibG9nLWRhdGUgLmJsb2ctZGF0ZS1pbm5lciB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLmJsb2cgLmJsb2ctZGF0ZSBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luOiAycHggMCAzcHggMDsKICAgIGxpbmUtaGVpZ2h0OiAyNXB4OwogICAgZm9udC1zaXplOiAyNHB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKLmJsb2cgLmJsb2ctZGF0ZS0tZ3JpZHMgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgcmlnaHQ6IDE1cHg7Cn0KCi5ydGwgLmJsb2cgLmJsb2ctZGF0ZS0tZ3JpZHMgewogICAgbGVmdDogMTVweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgouYmxvZyAuZW50cnktY29udGVudC0taW5mbyB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogMzBweCAwOwp9CgoucG9zdCAuZW50cnktZGVzY3JpcHRpb24gewogICAgbWFyZ2luOiAwIDAgMzBweDsKICAgIGNsZWFyOiBib3RoOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnBvc3QgLmVudHJ5LWRlc2NyaXB0aW9uIHA6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW46IDA7Cn0KCi8qIFBvc3QgdHlwZTogaGFsZiBjb250ZW50ICovCgouZ3JpZC1oYWxmLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIHsKICAgIHRvcDogMTAwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTBweCwgLTgwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDUwcHgsIC04MHB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKDUwcHgsIC04MHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwcHgsIC04MHB4KTsKICAgIGxlZnQ6IDUwJTsKfQoKLnJ0bCAuZ3JpZC1oYWxmLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIHsKICAgIHJpZ2h0OiA1MCU7CiAgICBsZWZ0OiBhdXRvOwp9CgouZ3JpZC1oYWxmLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldiwKLmdyaWQtaGFsZi5vd2wtY2Fyb3VzZWwgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLW5leHQgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgcG9zaXRpb246IHN0YXRpYzsKfQoKLmdyaWQtaGFsZi5vd2wtY2Fyb3VzZWwgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLW5leHQgewogICAgbWFyZ2luLWxlZnQ6IDVweDsKfQoKLnJ0bCAuZ3JpZC1oYWxmLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dCB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouZ3JpZC1oYWxmLmhhbGZkYXJrLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldiwKLmdyaWQtaGFsZi5oYWxmZGFyay5vd2wtY2Fyb3VzZWwgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLW5leHQgewogICAgYmFja2dyb3VuZDogI2UxZTRlNjsKICAgIGJvcmRlci1jb2xvcjogI2UxZTRlNjsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgouZ3JpZC1oYWxmLmhhbGZkYXJrLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldjpob3ZlciwKLmdyaWQtaGFsZi5oYWxmZGFyay5vd2wtY2Fyb3VzZWwgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLXByZXY6YWN0aXZlLAouZ3JpZC1oYWxmLmhhbGZkYXJrLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dDpob3ZlciwKLmdyaWQtaGFsZi5oYWxmZGFyay5vd2wtY2Fyb3VzZWwgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLW5leHQ6YWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmdyaWQtaGFsZi5zdHlsZV9pbWcub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMgewogICAgbGVmdDogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwp9CgoucnRsIC5ncmlkLWhhbGYuc3R5bGVfaW1nLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKfQoKLmxheW91dC1oYWxmIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmxheW91dC1oYWxmIC5lbnRyeS1jb250ZW50IHsKICAgIG1heC13aWR0aDogNjUwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTIwcHg7CiAgICBwYWRkaW5nLXRvcDogNTBweDsKfQoKLmxheW91dC1oYWxmIC5lbnRyeS1jb250ZW50W2NsYXNzKj0nLTYnXSB7CiAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA1MHB4Owp9CgoubGF5b3V0LWhhbGY+ZGl2IHsKICAgIHBhZGRpbmctbGVmdDogMHB4OwogICAgcGFkZGluZy1yaWdodDogMHB4Owp9CgpAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7CiAgICAubGF5b3V0LWhhbGYgLmVudHJ5LWNvbnRlbnRbY2xhc3MqPSctNiddIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogMzBweDsKICAgICAgICBwYWRkaW5nLXRvcDogMzBweDsKICAgICAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICB9Cn0KCi5sYXlvdXQtaGFsZiAuZW50cnktdGl0bGUgewogICAgZm9udC1zaXplOiA1MHB4OwogICAgbWFyZ2luOiAwIDAgMjBweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjE7CiAgICBmb250LWZhbWlseTogIk51bml0byIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5sYXlvdXQtaGFsZiAuZW50cnktdGl0bGUgYSB7CiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9CgoubGF5b3V0LWhhbGYgLmVudHJ5LWRlc2NyaXB0aW9uIHsKICAgIG1hcmdpbjogMCAwIDQwcHg7CiAgICBmb250LXNpemU6IDE3cHg7CiAgICBmb250LXdlaWdodDogNDAwOwp9CgoubGF5b3V0LWRhcmsgewogICAgYmFja2dyb3VuZDogI2VmZjFmMiAhaW1wb3J0YW50OwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5sYXlvdXQtZGFyayAubWV0YSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1mYW1pbHk6ICJOdW5pdG8iOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogMCAwIDEwcHg7CiAgICBtYXJnaW46IDAgMCAzNXB4Owp9CgoubGF5b3V0LWRhcmsgLm1ldGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgd2lkdGg6IDgwcHg7CiAgICBoZWlnaHQ6IDJweDsKICAgIGJhY2tncm91bmQ6ICM0ODQ4NDg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwp9CgoucnRsIC5sYXlvdXQtZGFyayAubWV0YTpiZWZvcmUgewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvOwp9CgoubGF5b3V0LWRhcmsgLmVudHJ5LXRpdGxlIHsKICAgIG1hcmdpbjogMCAwIDEwcHg7Cn0KCi5sYXlvdXQtZGFyayAuZW50cnktdGl0bGUgYSB7CiAgICBjb2xvcjogIzQ4NDg0OCAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiAzMHB4Owp9CgoubGF5b3V0LWRhcmsgLmVudHJ5LWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cn0KCi8qIFBvc3QgdHlwZTogTGlzdCB3aWRnZXQgbGlzdCovCgoudG9wLWluZm8tYmxvZyB7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDAuODsKfQoKLnRvcC1pbmZvLWJsb2c+ZGl2IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNTU1NTU1Owp9CgoucnRsIC50b3AtaW5mby1ibG9nPmRpdiB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnJ0bCAudG9wLWluZm8tYmxvZz5kaXYgewogICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKLnJ0bCAudG9wLWluZm8tYmxvZz5kaXYgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNTU1NTU1OwogICAgYm9yZGVyLXJpZ2h0OiBpbmhlcml0Owp9CgoudG9wLWluZm8tYmxvZz5kaXY6bGFzdC1jaGlsZCB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwp9CgoucnRsIC50b3AtaW5mby1ibG9nPmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC50b3AtaW5mby1ibG9nPmRpdjpsYXN0LWNoaWxkIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCi50b3AtaW5mby1ibG9nIC5jYXRlZ29yaWVzLW5hbWUgewogICAgY29sb3I6ICNmZjVhNWYgIWltcG9ydGFudDsKfQoKLnRvcC1pbmZvLWJsb2cgYSB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLnRvcC1pbmZvLWJsb2cgYTpob3ZlciwKLnRvcC1pbmZvLWJsb2cgYTpmb2N1cyB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLnBvc3RzLWxpc3QgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7Cn0KCi5wb3N0cy1saXN0PmxpIHsKICAgIG1hcmdpbjogMCAwIDMwcHg7Cn0KCi5wb3N0cy1saXN0PmxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luOiAwOwp9CgoucG9zdHMtbGlzdCAuZW50cnktdGl0bGUgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgbWFyZ2luOiAwIDAgMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoucG9zdHMtbGlzdCAuaW1hZ2UgewogICAgd2lkdGg6IDExMHB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKfQoKLnJ0bCAucG9zdHMtbGlzdCAuaW1hZ2UgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKLnBvc3RzLWxpc3QgLmltYWdlKy5pbm5lciB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gMTEwcHgpOwp9CgoucG9zdHMtbGlzdCAuaW1hZ2UgLmltYWdlLWlubmVyIHsKICAgIG1heC1oZWlnaHQ6IDgwcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1cHg7Cn0KCi5wb3N0cy1saXN0IC50b3AtaW5mby1ibG9nIHsKICAgIG1hcmdpbjogNXB4IDAgMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGNvbG9yOiAjYThhOGE4Owp9CgoucG9zdC1sYXlvdXQgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgoucG9zdC1sYXlvdXQgLnBvc3Qtc3RpY2t5IHsKICAgIGJhY2tncm91bmQ6ICNlNDQzNDM7CiAgICBjb2xvcjogI2ZmZjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDAgMTVweDsKICAgIG1hcmdpbjogNXB4IDA7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5wb3N0LWxheW91dFtjbGFzcyo9ImZvcm1hdC1nYWxsZXJ5Il0gLnRvcC1pbWFnZSB7CiAgICBvdmVyZmxvdzogaW5oZXJpdDsKfQoKLnBvc3QtbGF5b3V0LnN0aWNreSB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAyMHB4IDBweCAjZGVkZWRlOwogICAgYm94LXNoYWRvdzogMCAwIDIwcHggMHB4ICNkZWRlZGU7Cn0KCi5wb3N0LWxheW91dCAuZW50cnktdGl0bGUgLnN0aWNrLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBtYXJnaW4tcmlnaHQ6IDdweDsKfQoKLnJ0bCAucG9zdC1sYXlvdXQgLmVudHJ5LXRpdGxlIC5zdGljay1pY29uIHsKICAgIG1hcmdpbi1sZWZ0OiA3cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5wb3N0LWxheW91dCAudG9wLWltYWdlIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtYXJnaW46IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLnBvc3QtbGF5b3V0IC50b3AtaW1hZ2UgLmxpc3QtY2F0ZWdvcmllcyB7CiAgICB0b3A6IDEwcHg7CiAgICBsZWZ0OiAxMHB4OwogICAgei1pbmRleDogMTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLnJ0bCAucG9zdC1sYXlvdXQgLnRvcC1pbWFnZSAubGlzdC1jYXRlZ29yaWVzIHsKICAgIHJpZ2h0OiAxMHB4OwogICAgbGVmdDogYXV0bzsKfQoKLnBvc3QtbGF5b3V0IC50b3AtaW1hZ2UgLmNhdGVnb3JpZXMtbmFtZSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAycHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgIHBhZGRpbmc6IDAgMTVweDsKICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLnBvc3QtbGF5b3V0IC50b3AtaW1hZ2UgLmNhdGVnb3JpZXMtbmFtZStzcGFuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5wb3N0LWxheW91dCAuZGF0ZSB7CiAgICBjb2xvcjogIzc3Nzc3NzsKfQoKLnBvc3QtbGF5b3V0IC5kYXRlIGkgewogICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICBmb250LXNpemU6IDE4cHg7Cn0KCi5ydGwgLnBvc3QtbGF5b3V0IC5kYXRlIGkgewogICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnBvc3QtbGF5b3V0IC5pbmZvLWJvdHRvbSB7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlYmViZWI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wb3N0LWxheW91dCAuaW5mby1ib3R0b20gewogICAgICAgIHBhZGRpbmc6IDI1cHggMzBweDsKICAgIH0KfQoKLnBvc3QtbGF5b3V0IC5pbmZvLWJvdHRvbSAuZGF0ZSB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKfQoKLnJ0bCAucG9zdC1sYXlvdXQgLmluZm8tYm90dG9tIC5kYXRlIHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucG9zdC1sYXlvdXQgLmluZm8tYm90dG9tIC5kYXRlIHsKICAgICAgICBtYXJnaW4tbGVmdDogMzVweDsKICAgIH0KICAgIC5ydGwgLnBvc3QtbGF5b3V0IC5pbmZvLWJvdHRvbSAuZGF0ZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzNXB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgfQp9CgoucG9zdC1sYXlvdXQgaWZyYW1lIHsKICAgIG1heC13aWR0aDogMTAwJTsKfQoKLnBvc3QtbGF5b3V0IC5wb3N0LXRodW1ibmFpbCB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5wb3N0LWxheW91dCAucG9zdC10aHVtYm5haWwgaW1nIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2UtaW4tb3V0IDBzOwp9CgoucG9zdC1sYXlvdXQgLmNvbC1jb250ZW50IHsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnBvc3QtbGF5b3V0IC5jb2wtY29udGVudCB7CiAgICAgICAgcGFkZGluZzogMTBweCAzMHB4IDIycHg7CiAgICB9Cn0KCi5wb3N0LWxheW91dCAuY29sLWNvbnRlbnQgLmxpc3QtY2F0ZWdvcmllcyB7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KCi5wb3N0LWxheW91dCAuY29sLWNvbnRlbnQgLmxpc3QtY2F0ZWdvcmllcyBhIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoucG9zdC1sYXlvdXQ6aG92ZXIgLnBvc3QtdGh1bWJuYWlsIGltZyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wNSkgcm90YXRlKC0xZGVnKTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjA1KSByb3RhdGUoLTFkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4wNSkgcm90YXRlKC0xZGVnKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMS4wNSkgcm90YXRlKC0xZGVnKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSkgcm90YXRlKC0xZGVnKTsKfQoKLnBvc3QtZ3JpZCAuZW50cnktdGl0bGUgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWFyZ2luOiAwIDAgNXB4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnBvc3QtZ3JpZCAuZGF0ZSB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgoucG9zdC1ncmlkIC5jb2wtY29udGVudCB7CiAgICBwYWRkaW5nOiA1cHggMjBweCAxNXB4Owp9CgoucG9zdC1ncmlkIC5pbmZvLWJvdHRvbSB7CiAgICBwYWRkaW5nOiAyMHB4Owp9CgoucG9zdC1ncmlkLXYyIC5pbmZvLWJvdHRvbSB7CiAgICBwYWRkaW5nOiAxNXB4IDIwcHg7Cn0KCi5wb3N0LWdyaWQtdjIgLmVudHJ5LXRpdGxlIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi50b3AtaW5mby1wb3N0LWdpcmQ+ZGl2IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLnJ0bCAudG9wLWluZm8tcG9zdC1naXJkPmRpdiB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnRvcC1pbmZvLXBvc3QtZ2lyZD5kaXYgewogICAgICAgIG1hcmdpbi1yaWdodDogMjBweDsKICAgIH0KICAgIC5ydGwgLnRvcC1pbmZvLXBvc3QtZ2lyZD5kaXYgewogICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLnRvcC1pbmZvLXBvc3QtZ2lyZD5kaXY6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5ydGwgLnRvcC1pbmZvLXBvc3QtZ2lyZD5kaXY6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnRvcC1pbmZvLXBvc3QtZ2lyZCBpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogNXB4Owp9CgoucnRsIC50b3AtaW5mby1wb3N0LWdpcmQgaSB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoudG9wLWluZm8tcG9zdC1naXJkIGEgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi50b3AtaW5mby1wb3N0LWdpcmQgYTpob3ZlciwKLnRvcC1pbmZvLXBvc3QtZ2lyZCBhOmZvY3VzIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoudG9wLWluZm8tcG9zdC1naXJkIC5saXN0LWNhdGVnb3JpZXMgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgoucG9zdC1saXN0LWl0ZW0gLmNvbC1jb250ZW50IC5saXN0LWNhdGVnb3JpZXMgewogICAgbWFyZ2luLXRvcDogMTBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnBvc3QtbGlzdC1pdGVtIC5jb2wtY29udGVudCAubGlzdC1jYXRlZ29yaWVzIHsKICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgfQp9CgovKiBQb3N0IHR5cGU6IEJ5IENhdGVnb3J5ICovCgoucG9zdHMtZ3JpZC1jYXRlZ29yeSB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoudG9wLWJsb2ctaW5mbyB7CiAgICBwYWRkaW5nOiAyNXB4IDA7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7Cn0KCi50b3AtYmxvZy1pbmZvIGkgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9CgoucnRsIC50b3AtYmxvZy1pbmZvIGkgewogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi50b3AtYmxvZy1pbmZvIC5jYXRlZ29yaWVzIHsKICAgIG1hcmdpbi1yaWdodDogMzVweDsKfQoKLnJ0bCAudG9wLWJsb2ctaW5mbyAuY2F0ZWdvcmllcyB7CiAgICBtYXJnaW4tbGVmdDogMzVweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnRvcC1ibG9nLWluZm8gLmF1dGhvciBhIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoudG9wLWJsb2ctaW5mbyBhIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoudG9wLWJsb2ctaW5mbyBhOmhvdmVyLAoudG9wLWJsb2ctaW5mbyBhOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmxpc3QtZGVmYXVsdCB7CiAgICBtYXJnaW4tYm90dG9tOiA0NXB4Owp9CgoubGlzdC1kZWZhdWx0IC5lbnRyeS10aXRsZSB7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZm9udC1zaXplOiAzMHB4OwogICAgbWFyZ2luOiAwIDAgMTBweDsKfQoKLmxpc3QtZGVmYXVsdCAuZGVzY3JpcHRpb24gewogICAgbWFyZ2luOiAwIDAgMTVweDsKfQoKLmNhdGVnb3J5LXBvc3RzIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmNhdGVnb3J5LXBvc3RzOjphZnRlciB7CiAgICBjb250ZW50OiAiIjsKICAgIHRvcDogMjBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IDFweDsKICAgIGhlaWdodDogMTAwMHB4OwogICAgYmFja2dyb3VuZDogI2ViZWJlYjsKfQoKLnJ0bCAuY2F0ZWdvcnktcG9zdHM6OmFmdGVyIHsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogYXV0bzsKfQoKLmNhdGVnb3J5LXBvc3RzIC5wb3N0IHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwp9CgouY2F0ZWdvcnktcG9zdHMgLmNhdGVnb3J5LXBvc3RzLWxhYmVsIHsKICAgIHBhZGRpbmc6IDFweCAzcHg7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwOwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXNpemU6IDEwcHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CgouY2F0ZWdvcnktcG9zdHMgLmNhdGVnb3J5LXBvc3RzLWxhYmVsIGEgewogICAgY29sb3I6ICNmZmY7Cn0KCi5jYXRlZ29yeS1wb3N0cyAuZW50cnktbWV0YTo6YWZ0ZXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmNhdGVnb3J5LXBvc3RzIC5wb3N0cy1tb3JlIC5wb3N0Omxhc3QtY2hpbGQgewogICAgYm9yZGVyOiAwcHg7Cn0KCi5jYXRlZ29yeS1wb3N0cyAucG9zdHMtbW9yZSAuZW50cnktdGl0bGUgewogICAgZm9udC1zaXplOiAxMHB4Owp9CgouY2F0ZWdvcnktcG9zdHMgLnBvc3RzLW1vcmUgLmVudHJ5LXRpdGxlIGEgewogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi5jYXRlZ29yeS1wb3N0cyAucG9zdHMtbW9yZSAuZW50cnktdGl0bGUgYTpob3ZlciB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgQ29tbWVudCBMaXN0ClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5jb21tZW50LWxpc3QgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5jb21tZW50LWxpc3QgLmNvbW1lbnQtcmVzcG9uZCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsKfQoKLmNvbW1lbnQtbGlzdCAuY29tbWVudC1yZXNwb25kIC50aXRsZSB7CiAgICBtYXJnaW46IDAgMCA1cHg7Cn0KCi5jb21tZW50LWxpc3QgLmNvbW1lbnQtcmVzcG9uZCBzbWFsbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgouY29tbWVudC1saXN0ICNjYW5jZWwtY29tbWVudC1yZXBseS1saW5rIHsKICAgIGNvbG9yOiAjZTQ0MzQzOwp9CgouY29tbWVudC1saXN0IC5jb21tZW50LWF1dGhvciB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXJnaW46IDAgMCAxMHB4Owp9CgouY29tbWVudC1saXN0IC5jb21tZW50LWF1dGhvciAuc3BhY2UgewogICAgZm9udC1zaXplOiAxMnB4OwogICAgbWFyZ2luOiAwIDEycHg7CiAgICBjb2xvcjogIzc3Nzc3NzsKfQoKLmNvbW1lbnQtbGlzdCAuY29tbWVudC1hdXRob3IgLmRhdGUgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGNvbG9yOiAjNzc3Nzc3Owp9CgouY29tbWVudC1saXN0IC5uYW1lLWNvbW1lbnQgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBtYXJnaW46IDA7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgouY29tbWVudC1saXN0IC5uYW1lLWNvbW1lbnQrLnN0YXItcmF0aW5nIHsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4Owp9CgoucnRsIC5jb21tZW50LWxpc3QgLm5hbWUtY29tbWVudCsuc3Rhci1yYXRpbmcgewogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5jb21tZW50LWxpc3QgLmNoaWxkcmVuIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgcGFkZGluZy1sZWZ0OiAxNXB4Owp9CgoucnRsIC5jb21tZW50LWxpc3QgLmNoaWxkcmVuIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5jb21tZW50LWxpc3QgLmNoaWxkcmVuIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDc1cHg7CiAgICB9CiAgICAucnRsIC5jb21tZW50LWxpc3QgLmNoaWxkcmVuIHsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiA3NXB4OwogICAgICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKICAgIH0KfQoKLmNvbW1lbnQtbGlzdCAuY29tbWVudC1lZGl0LWxpbmsgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi5jb21tZW50LWxpc3QgLmNvbW1lbnQtcmVwbHktbGluayB7CiAgICBjb2xvcjogIzAyY2NhZDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5jb21tZW50LWxpc3QgLmNvbW1lbnQtcmVwbHktbGluayAudGV4dC1yZXBseTpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJzsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBjb250ZW50OiAiXGYzZTUiOwogICAgbWFyZ2luLXJpZ2h0OiA1cHg7Cn0KCi5ydGwgLmNvbW1lbnQtbGlzdCAuY29tbWVudC1yZXBseS1saW5rIC50ZXh0LXJlcGx5OmJlZm9yZSB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouY29tbWVudC1saXN0IC5jb21tZW50LWJveCB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgouY29tbWVudC1saXN0IC5jb21tZW50LXRleHQgcDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbjogMDsKfQoKLmNvbW1lbnQtbGlzdCBkaXYuYXZhdGFyIHsKICAgIHdpZHRoOiA4MHB4OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIGZsb2F0OiBsZWZ0Owp9CgoucnRsIC5jb21tZW50LWxpc3QgZGl2LmF2YXRhciB7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5jb21tZW50LWxpc3QgZGl2LmF2YXRhciB7CiAgICAgICAgcGFkZGluZy1yaWdodDogMjVweDsKICAgICAgICB3aWR0aDogMTA1cHg7CiAgICB9CiAgICAucnRsIC5jb21tZW50LWxpc3QgZGl2LmF2YXRhciB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAyNXB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7CiAgICB9Cn0KCi5ydGwgLmNvbW1lbnQtbGlzdCBkaXYuYXZhdGFyIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLmNvbW1lbnQtbGlzdCBkaXYuYXZhdGFyIGltZyB7CiAgICBtYXJnaW46IDA7Cn0KCi5jb21tZW50LWxpc3QgaW1nLmF2YXRhciB7CiAgICB3aWR0aDogODBweDsKICAgIGhlaWdodDogYXV0bzsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmNvbW1lbnQtbGlzdCAudGhlLWNvbW1lbnQgewogICAgcGFkZGluZzogMCAwIDE1cHg7CiAgICBtYXJnaW46IDAgMCAxNXB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWU2ZWQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5jb21tZW50LWxpc3QgLnRoZS1jb21tZW50IHsKICAgICAgICBwYWRkaW5nOiAwIDAgMzBweDsKICAgICAgICBtYXJnaW46IDAgMCAzMHB4OwogICAgfQp9CgouYm94LWNvbW1lbnQgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoKLmJveC1jb21tZW50IC5jb21tZW50cy10aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAyMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuY29tbWVudGZvcm0gewogICAgICAgIHBhZGRpbmctdG9wOiAxNXB4OwogICAgfQp9CgouY29tbWVudGZvcm0gLnRpdGxlIHsKICAgIG1hcmdpbjogMCAwIDIwcHg7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLmNvbW1lbnRmb3JtIC5jb21tZW50LW5vdGVzIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5sb2dnZWQtaW4tYXMgewogICAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQoKLmxvZ2dlZC1pbi1hcyBhK2EgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgIFNpbmdsZSBwb3N0ClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5lbnRyeS1jb250ZW50LWRldGFpbCAubGlzdC1jYXRlZ29yaWVzIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5lbnRyeS1jb250ZW50LWRldGFpbCAuY2F0ZWdvcmllcy1uYW1lIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGNvbG9yOiAjZmZmOwogICAgcGFkZGluZzogMXB4IDE1cHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDJweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmVudHJ5LWNvbnRlbnQtZGV0YWlsIC5lbnRyeS10aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIH0KfQoKLmVudHJ5LWNvbnRlbnQtZGV0YWlsIC5lbnRyeS10aHVtYiB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Cgouc29jaWFsLW5ldHdvcmtzIGxpIHsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7Cn0KCi5zb2NpYWwtbmV0d29ya3MgbGk6bGFzdC1jaGlsZCBhIHsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnNvY2lhbC1uZXR3b3JrcyBsaSBhIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLnNvY2lhbC1uZXR3b3JrcyBsaSBhOmhvdmVyIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoudGFnLWxpbmtzLAoucG9zdC1zaGFyZSB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgoudGFnLWxpbmtzIHNwYW4gaSwKLnBvc3Qtc2hhcmUgc3BhbiBpIHsKICAgIG1hcmdpbi1yaWdodDogNXB4Owp9CgoucnRsIC50YWctbGlua3Mgc3BhbiBpLAoucnRsIC5wb3N0LXNoYXJlIHNwYW4gaSB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouZGV0YWlsLXBvc3QgI2NvbW1lbnRzICNyZXBseS10aXRsZSB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKfQoKLnBvc3QtbmF2aWdhdGlvbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wb3N0LW5hdmlnYXRpb24gewogICAgICAgIHBhZGRpbmc6IDVweCAwOwogICAgfQp9CgoucG9zdC1uYXZpZ2F0aW9uIC5zY3JlZW4tcmVhZGVyLXRleHQgewogICAgZGlzcGxheTogbm9uZTsKfQoKLnBvc3QtbmF2aWdhdGlvbiAubmF2LWxpbmtzIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIC8qIFNhZmFyaSAqLwogICAgZGlzcGxheTogZmxleDsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7Cn0KCi5wb3N0LW5hdmlnYXRpb24gLm5hdi1saW5rcz4qIHsKICAgIHdpZHRoOiA1MCU7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7Cn0KCi5ydGwgLnBvc3QtbmF2aWdhdGlvbiAubmF2LWxpbmtzPiogewogICAgZmxvYXQ6IHJpZ2h0Owp9CgoucG9zdC1uYXZpZ2F0aW9uIC5uYXYtbGlua3M+KiAuaW5uZXIgewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDM1cHgpOwogICAgcGFkZGluZzogMCAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucG9zdC1uYXZpZ2F0aW9uIC5uYXYtbGlua3M+KiAuaW5uZXIgewogICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0NXB4KTsKICAgIH0KfQoKLnBvc3QtbmF2aWdhdGlvbiAubmF2LWxpbmtzPioubmF2LW5leHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5ydGwgLnBvc3QtbmF2aWdhdGlvbiAubmF2LWxpbmtzPioubmF2LW5leHQgewogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnBvc3QtbmF2aWdhdGlvbiAubmF2LWxpbmtzPioubmF2LW5leHQgLm1ldGEtbmF2IHsKICAgIG9yZGVyOiAyOwogICAgLXdlYmtpdC1vcmRlcjogMjsKfQoKLnBvc3QtbmF2aWdhdGlvbiAubmF2LWxpbmtzPioubmF2LW5leHQgLmlubmVyIHsKICAgIG9yZGVyOiAxOwogICAgLXdlYmtpdC1vcmRlcjogMTsKfQoKLnBvc3QtbmF2aWdhdGlvbiAubmF2LWxpbmtzPio+YSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIC8qIFNhZmFyaSAqLwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLyogU2FmYXJpIDcuMCsgKi8KICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoucG9zdC1uYXZpZ2F0aW9uIC5uYXYtbGlua3M+Kj5hOmhvdmVyIC5tZXRhLW5hdiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwp9CgoucG9zdC1uYXZpZ2F0aW9uIC5uYXYtbGlua3MgLnRpdGxlLWRpcmVjdCB7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxOwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5wb3N0LW5hdmlnYXRpb24gLm5hdi1saW5rcyAubWV0YS1uYXYgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMzVweDsKICAgIGhlaWdodDogMzVweDsKICAgIGxpbmUtaGVpZ2h0OiAzNXB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBiYWNrZ3JvdW5kOiAjZDBkMGQwOwogICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICAgIGZsb2F0OiBsZWZ0Owp9CgoucnRsIC5wb3N0LW5hdmlnYXRpb24gLm5hdi1saW5rcyAubWV0YS1uYXYgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucG9zdC1uYXZpZ2F0aW9uIC5uYXYtbGlua3MgLm1ldGEtbmF2IHsKICAgICAgICB3aWR0aDogNDVweDsKICAgICAgICBoZWlnaHQ6IDQ1cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDQ1cHg7CiAgICB9Cn0KCi5wb3N0LW5hdmlnYXRpb24gLm5hdi1saW5rcyAubmF2aSB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgouYXV0aG9yLWluZm8gewogICAgcGFkZGluZzogMjBweCAwOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlYmViZWI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLmF1dGhvci1pbmZvIHsKICAgICAgICBwYWRkaW5nOiA0MHB4IDA7CiAgICB9Cn0KCi5hdXRob3ItaW5mbyAuYXV0aG9yLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBtYXJnaW46IDAgMCA1cHg7Cn0KCi5hdXRob3ItaW5mbyAuYXZhdGFyLWltZyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgoucnRsIC5hdXRob3ItaW5mbyAuYXZhdGFyLWltZyB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgouYXV0aG9yLWluZm8gLmF2YXRhci1pbWcgLmF2YXRhciB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgbWF4LXdpZHRoOiBub25lOwp9CgoucmVsYXRlZC1wb3N0cyB7CiAgICBtYXJnaW46IDMwcHggMCAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucmVsYXRlZC1wb3N0cyB7CiAgICAgICAgbWFyZ2luLXRvcDogNDBweDsKICAgIH0KfQoKLnJlbGF0ZWQtcG9zdHMgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbjogMCAwIDEwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5yZWxhdGVkLXBvc3RzIC50aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIH0KfQoKLnJlbGF0ZWQtcG9zdHMgLnR5cGUtcG9zdCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgouYmxvZy1wb3N0LWljb24gewogICAgZGlzcGxheTogdGFibGU7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIHotaW5kZXg6IDE7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgb3BhY2l0eTogMC45OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTkwKTsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKfQoKLnJ0bCAuYmxvZy1wb3N0LWljb24gewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvOwp9CgouYmxvZy1wb3N0LWljb24gLmZhIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgZm9udC1zaXplOiAyMnB4Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICBCbG9nIE1hc29ucnkgUGFnZQpcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouYmxvZy1tYXNvbnJ5IC5lbnRyeS10aHVtYiB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgouZ2FsbGVyeSB7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmdhbGxlcnkgLmdhbGxlcnktaXRlbSB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoucnRsIC5nYWxsZXJ5IC5nYWxsZXJ5LWl0ZW0gewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouZ2FsbGVyeSAuZ2FsbGVyeS1pdGVtIGZpZ2NhcHRpb24gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIGJvdHRvbTogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgY29sb3I6ICNmZmY7CiAgICBtYXgtaGVpZ2h0OiA1MCU7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICBwYWRkaW5nOiA4cHggMTVweDsKfQoKLmdhbGxlcnkgLmdhbGxlcnktaXRlbTpob3ZlciBmaWdjYXB0aW9uIHsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTkgLmdhbGxlcnktaXRlbSB7CiAgICB3aWR0aDogMTElOwp9CgouZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtOCAuZ2FsbGVyeS1pdGVtIHsKICAgIHdpZHRoOiAxMi41JTsKfQoKLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTcgLmdhbGxlcnktaXRlbSB7CiAgICB3aWR0aDogMTQlOwp9CgouZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtNiAuZ2FsbGVyeS1pdGVtIHsKICAgIHdpZHRoOiAxNi41JTsKfQoKLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTUgLmdhbGxlcnktaXRlbSB7CiAgICB3aWR0aDogMjAlOwp9CgouZ2FsbGVyeS5nYWxsZXJ5LWNvbHVtbnMtNCAuZ2FsbGVyeS1pdGVtIHsKICAgIHdpZHRoOiAyNSU7Cn0KCi5nYWxsZXJ5LmdhbGxlcnktY29sdW1ucy0zIC5nYWxsZXJ5LWl0ZW0gewogICAgd2lkdGg6IDMzJTsKfQoKLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTEgLmdhbGxlcnktaXRlbSB7CiAgICB3aWR0aDogMTAwJTsKfQoKLmdhbGxlcnkuZ2FsbGVyeS1jb2x1bW5zLTIgLmdhbGxlcnktaXRlbSB7CiAgICB3aWR0aDogNTAlOwp9CgouY29tbWVudC1uYXZpZ2F0aW9uIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwYWRkaW5nOiAyMHB4IDA7Cn0KCi5jb21tZW50LW5hdmlnYXRpb24gLm5hdi1saW5rcz5kaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouY29tbWVudC1uYXZpZ2F0aW9uIC5uYXYtbGlua3M+ZGl2K2RpdiB7CiAgICBsaW5lLWhlaWdodDogMS4xOwogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNlYmViZWI7Cn0KCi5ydGwgLmNvbW1lbnQtbmF2aWdhdGlvbiAubmF2LWxpbmtzPmRpditkaXYgewogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5ydGwgLmNvbW1lbnQtbmF2aWdhdGlvbiAubmF2LWxpbmtzPmRpditkaXYgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLnJ0bCAuY29tbWVudC1uYXZpZ2F0aW9uIC5uYXYtbGlua3M+ZGl2K2RpdiB7CiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZWJlYmViOwogICAgYm9yZGVyLWxlZnQ6IGluaGVyaXQ7Cn0KCi5saXN0LWNoZWNrIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwp9CgoubGlzdC1jaGVjayBsaSB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgoubGlzdC1jaGVjayBpIHsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9CgoucnRsIC5saXN0LWNoZWNrIGkgewogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi50b3AtZGV0YWlsLWluZm8gewogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgIGNvbG9yOiAjNzc3Nzc3Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAudG9wLWRldGFpbC1pbmZvIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgoudG9wLWRldGFpbC1pbmZvPiogewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLnJ0bCAudG9wLWRldGFpbC1pbmZvPiogewogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50b3AtZGV0YWlsLWluZm8+KiB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzMHB4OwogICAgfQogICAgLnJ0bCAudG9wLWRldGFpbC1pbmZvPiogewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLnRvcC1kZXRhaWwtaW5mbz4qOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC50b3AtZGV0YWlsLWluZm8+KjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoudG9wLWRldGFpbC1pbmZvIGkgewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7Cn0KCi5ydGwgLnRvcC1kZXRhaWwtaW5mbyBpIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50b3AtZGV0YWlsLWluZm8gaSB7CiAgICAgICAgZm9udC1zaXplOiAyMXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5ydGwgLnRvcC1kZXRhaWwtaW5mbyBpIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9Cn0KCi5kZXRhaWwtcG9zdCBpZnJhbWUgewogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgouZGV0YWlsLXBvc3QgLmJvdHRvbS1pbmZvIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5kZXRhaWwtcG9zdCAuYm90dG9tLWluZm8gLnN1ZmZpeCB7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KCi5kZXRhaWwtcG9zdCAuYm90dG9tLWluZm8gLmF1dGhvciB7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CgouZGV0YWlsLXBvc3QgLmJvdHRvbS1pbmZvPmRpdiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgouZGV0YWlsLXBvc3QgLmJvdHRvbS1pbmZvIGEgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5kZXRhaWwtcG9zdCAuYm90dG9tLWluZm8gYTpob3ZlciwKLmRldGFpbC1wb3N0IC5ib3R0b20taW5mbyBhOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmRldGFpbC1wb3N0IC50YWctc29jaWFsIHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWJlYmViOwogICAgcGFkZGluZy10b3A6IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5kZXRhaWwtcG9zdCAudGFnLXNvY2lhbCB7CiAgICAgICAgcGFkZGluZy10b3A6IDMwcHg7CiAgICB9Cn0KCi5kZXRhaWwtcG9zdCAudGFnLXNvY2lhbCBzdHJvbmcgewogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgcGFkZGluZy1yaWdodDogMTBweDsKfQoKLnJ0bCAuZGV0YWlsLXBvc3QgLnRhZy1zb2NpYWwgc3Ryb25nIHsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5kZXRhaWwtcG9zdCAudGFnLXNvY2lhbCBzdHJvbmcgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgICB9CiAgICAucnRsIC5kZXRhaWwtcG9zdCAudGFnLXNvY2lhbCBzdHJvbmcgewogICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0OwogICAgfQp9CgouZGV0YWlsLXBvc3QgLmVudHJ5LXRhZ3MtbGlzdCB7CiAgICBtYXJnaW46IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5kZXRhaWwtcG9zdCAucG9zdC1uYXZpZ2F0aW9uIHsKICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICBib3JkZXItd2lkdGg6IDFweCAwOwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1jb2xvcjogI2ViZWJlYjsKICAgIHBhZGRpbmc6IDE1cHggMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmRldGFpbC1wb3N0IC5wb3N0LW5hdmlnYXRpb24gewogICAgICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICAgICAgcGFkZGluZzogMzBweCAwOwogICAgfQp9CgouYXV0aG9yLXBvc3QgLmF2YXRhciB7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmF1dGhvci1wb3N0IC5hdmF0YXItaW1nIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogOHB4Owp9CgoucnRsIC5hdXRob3ItcG9zdCAuYXZhdGFyLWltZyB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5ydGwgLmF1dGhvci1wb3N0IC5hdmF0YXItaW1nIHsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKLmF1dGhvci1wb3N0IC5uYW1lLWF1dGhvciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tdG9wOiA5cHg7Cn0KCi5hdXRob3Itd3JhcHBlciAuYXZhdGFyLWltZyB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC1tcy1hbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLW1zLWp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouYXV0aG9yLXdyYXBwZXIgLmF2YXRhci1pbWcgaW1nIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CgouYXV0aG9yLXdyYXBwZXIgLmF1dGhvci10aXRsZSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbWFyZ2luOiAwOwogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KCi5hdXRob3Itd3JhcHBlciAuYXV0aG9yLXRpdGxlIGEgewogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi5hdXRob3Itd3JhcHBlciAuYXV0aG9yLXRpdGxlIGE6aG92ZXIsCi5hdXRob3Itd3JhcHBlciAuYXV0aG9yLXRpdGxlIGE6Zm9jdXMgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5hdXRob3Itd3JhcHBlciAucmlnaHQtaW5uZXIgewogICAgcGFkZGluZy1sZWZ0OiAxMHB4Owp9CgoucnRsIC5hdXRob3Itd3JhcHBlciAucmlnaHQtaW5uZXIgewogICAgcGFkZGluZy1yaWdodDogMTBweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLmNvbW1lbnQtcmVwbHktdGl0bGUgewogICAgbWFyZ2luOiAwIDAgMTBweDsKICAgIGZvbnQtc2l6ZTogMjBweDsKfQoKLmNvbW1lbnQtcmVwbHktdGl0bGUgI2NhbmNlbC1jb21tZW50LXJlcGx5LWxpbmsgewogICAgY29sb3I6ICNlNDQzNDM7Cn0KCi8qIDguIGVmZmVjdCAqLwoKLmVmZmVjdC0xIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmVmZmVjdC0xOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMHB4OwogICAgaGVpZ2h0OiAxcHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlIDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAwczsKICAgIGxlZnQ6IDA7CiAgICBib3R0b206IDA7CiAgICByaWdodDogMDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgbWFyZ2luOiBhdXRvOwp9CgouZWZmZWN0LTE6aG92ZXI6YWZ0ZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDFweDsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7Cn0KCi56b29tLTIgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAzcHg7Cn0KCi56b29tLTIgaW1nIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLW91dDsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2Utb3V0OwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1vdXQ7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7Cn0KCi56b29tLTI6aG92ZXIgaW1nIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTsKfQoKLmZpbHRlci1ncmF5c2NhbGUsCi53aWRnZXQgLndpZGdldF9zcF9pbWFnZS1pbWFnZS1saW5rIGltZyB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjZzIGVhc2Utb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNnMgZWFzZS1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC42cyBlYXNlLW91dCAwczsKfQoKLmZpbHRlci1ncmF5c2NhbGU6aG92ZXIsCi53aWRnZXQgLndpZGdldF9zcF9pbWFnZS1pbWFnZS1saW5rIGltZzpob3ZlciB7CiAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTsKICAgIC13ZWJraXQtZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7CiAgICAtbW96LWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpOwogICAgLW8tZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7CiAgICAtbXMtZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7Cn0KCi5maWx0ZXItYnJpZ2h0bmVzcyB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKfQoKLmZpbHRlci1icmlnaHRuZXNzOmhvdmVyIHsKICAgIGZpbHRlcjogYnJpZ2h0bmVzcygwLjQpOwogICAgLXdlYmtpdC1maWx0ZXI6IGJyaWdodG5lc3MoMC40KTsKICAgIC1tb3otZmlsdGVyOiBicmlnaHRuZXNzKDAuNCk7CiAgICAtby1maWx0ZXI6IGJyaWdodG5lc3MoMC40KTsKICAgIC1tcy1maWx0ZXI6IGJyaWdodG5lc3MoMC40KTsKfQoKLmZpbHRlci1ibHVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNnMgZWFzZS1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC42cyBlYXNlLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjZzIGVhc2Utb3V0IDBzOwp9CgouZmlsdGVyLWJsdXI6aG92ZXIgewogICAgZmlsdGVyOiBibHVyKDVweCk7CiAgICAtd2Via2l0LWZpbHRlcjogYmx1cig1cHgpOwogICAgLW1vei1maWx0ZXI6IGJsdXIoNXB4KTsKICAgIC1vLWZpbHRlcjogYmx1cig1cHgpOwogICAgLW1zLWZpbHRlcjogYmx1cig1cHgpOwp9CgouY2xvc2UgLmZhIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDFzIGVhc2UtaW4tb3V0OwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDFzIGVhc2UtaW4tb3V0OwogICAgdHJhbnNpdGlvbjogYWxsIDFzIGVhc2UtaW4tb3V0Owp9CgouY2xvc2U6aG92ZXIgLmZhIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7Cn0KCi5pbWFnZS1vdmVybGF5LTE6YWZ0ZXIsCi5pbWFnZS1vdmVybGF5LTE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAxMDA7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlIDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgMHM7Cn0KCi5ydGwgLmltYWdlLW92ZXJsYXktMTphZnRlciwKLnJ0bCAuaW1hZ2Utb3ZlcmxheS0xOmJlZm9yZSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5pbWFnZS1vdmVybGF5LTE6YWZ0ZXIgewogICAgdG9wOiAtMTAwJTsKfQoKLmltYWdlLW92ZXJsYXktMTpiZWZvcmUgewogICAgYm90dG9tOiAtMTAwJTsKfQoKLmltYWdlLW92ZXJsYXktMTpob3ZlcjphZnRlciB7CiAgICB0b3A6IC01MCU7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5pbWFnZS1vdmVybGF5LTE6aG92ZXI6YmVmb3JlIHsKICAgIGJvdHRvbTogLTUwJTsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLmltYWdlLXBsdXMtMSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5pbWFnZS1wbHVzLTE6OmJlZm9yZSB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgY29udGVudDogIiI7CiAgICB6LWluZGV4OiAxMDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlIDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgMHM7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2VzL3BsdXMucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyLzYwcHggNjBweCByZ2JhKDAsIDAsIDAsIDAuNik7Cn0KCi5ydGwgLmltYWdlLXBsdXMtMTo6YmVmb3JlIHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKfQoKLmltYWdlLXBsdXMtMTpob3Zlcjo6YmVmb3JlIHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAwLjY7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjApOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKfQoKLmltYWdlLXBsdXMtMiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5pbWFnZS1wbHVzLTI6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIHotaW5kZXg6IDE5OTsKICAgIHRvcDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2VzL3BsdXMucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyLzYwcHggNjBweCByZ2JhKDAsIDAsIDAsIDAuOCk7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlIDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAwczsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogMTBweCAxMHB4LCAxMDAlIDEwMCU7CiAgICAtbW96LWJhY2tncm91bmQtc2l6ZTogMTBweCAxMHB4LCAxMDAlIDEwMCU7CiAgICAtbXMtYmFja2dyb3VuZC1zaXplOiAxMHB4IDEwcHgsIDEwMCUgMTAwJTsKICAgIC1vLWJhY2tncm91bmQtc2l6ZTogMTBweCAxMHB4LCAxMDAlIDEwMCU7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwcHggMTBweCwgMTAwJSAxMDAlOwogICAgLXdlYmtpdC1iYWNrZ3JvdW5kLW9yaWdpbjogcGFkZGluZy1ib3gsIHBhZGRpbmctYm94OwogICAgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogcGFkZGluZy1ib3gsIHBhZGRpbmctYm94OwogICAgLW1zLWJhY2tncm91bmQtb3JpZ2luOiBwYWRkaW5nLWJveCwgcGFkZGluZy1ib3g7CiAgICAtby1iYWNrZ3JvdW5kLW9yaWdpbjogcGFkZGluZy1ib3gsIHBhZGRpbmctYm94OwogICAgYmFja2dyb3VuZC1vcmlnaW46IHBhZGRpbmctYm94LCBwYWRkaW5nLWJveDsKfQoKLnJ0bCAuaW1hZ2UtcGx1cy0yOjpiZWZvcmUgewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvOwp9CgouaW1hZ2UtcGx1cy0yOmhvdmVyOjpiZWZvcmUgewogICAgb3BhY2l0eTogLjY7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDYwcHggNjBweCwgMTAwJSAxMDAlOwogICAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDYwcHggNjBweCwgMTAwJSAxMDAlOwogICAgLW1zLWJhY2tncm91bmQtc2l6ZTogNjBweCA2MHB4LCAxMDAlIDEwMCU7CiAgICAtby1iYWNrZ3JvdW5kLXNpemU6IDYwcHggNjBweCwgMTAwJSAxMDAlOwogICAgYmFja2dyb3VuZC1zaXplOiA2MHB4IDYwcHgsIDEwMCUgMTAwJTsKfQoKLmltYWdlLXBsdXMtMyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5pbWFnZS1wbHVzLTM6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIHRvcDogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAxMDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC41KSByb3RhdGVYKDE4MGRlZyk7CiAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMC41KSByb3RhdGVYKDE4MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjUpIHJvdGF0ZVgoMTgwZGVnKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KSByb3RhdGVYKDE4MGRlZyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSkgcm90YXRlWCgxODBkZWcpOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlIDBzOwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjgpOwp9CgoucnRsIC5pbWFnZS1wbHVzLTM6OmJlZm9yZSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5pbWFnZS1wbHVzLTM6aG92ZXI6OmJlZm9yZSB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgb3BhY2l0eTogMC42OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTYwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGVYKDBkZWcpOwogICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZVgoMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGVYKDBkZWcpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGVYKDBkZWcpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGVYKDBkZWcpOwp9CgouaWNvbi1lZmZlY3QtMSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5pY29uLWVmZmVjdC0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKSwgYmFja2dyb3VuZC1jb2xvciAwLjJzIGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKTsKICAgIC1vLXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKSwgYmFja2dyb3VuZC1jb2xvciAwLjJzIGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKTsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKSwgYmFja2dyb3VuZC1jb2xvciAwLjJzIGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKTsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIHRvcDogMDsKICAgIG1hcmdpbjogYXV0bzsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5pY29uLWVmZmVjdC0xOmhvdmVyOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSksIGJhY2tncm91bmQtY29sb3IgMC4ycyBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSk7CiAgICAtby10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSksIGJhY2tncm91bmQtY29sb3IgMC4ycyBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSk7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSksIGJhY2tncm91bmQtY29sb3IgMC4ycyBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSk7Cn0KCi8qIDkuIHV0aWxpdGllcyAqLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBObyBNYXJnaW4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoubm8tbWFyZ2luIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9Cgoubm8tbWFyZ2luIC5wYWdpbmF0aW9uIHsKICAgIG1hcmdpbjogMDsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBObyBQYWRkaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLm5vLXBhZGRpbmcgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9Cgoubm8tcG9zaXRpb24gewogICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9CgouaW5saW5lLWJsb2NrIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5sdC1pZTggLmlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICB6b29tOiAxOwp9Cgoubm8tYmFja2dyb3VuZCB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50Owp9Cgoubm8tZWZmZWN0IGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgQ2xlYXIgTGlzdCBTdHlsZQpcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouY2xlYXItbGlzdCB7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBUZXh0IFRyYW5zZm9ybQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi50ZXh0LXVwcGVyY2FzZSB7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgQWxpZ24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouc2VwYXJhdG9yX2FsaWduX2NlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLnZjX2FsaWduX3JpZ2h0LAouc2VwYXJhdG9yX2FsaWduX3JpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KCi5zZXBhcmF0b3JfYWxpZ25fbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgIEZvbnQgc2l6ZSBoZWFkaW5nIHRpdGxlClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mb250LXNpemUtbGcgewogICAgZm9udC1zaXplOiA0OHB4Owp9CgouZm9udC1zaXplLW1kIHsKICAgIGZvbnQtc2l6ZTogMzBweDsKfQoKLmZvbnQtc2l6ZS1zbSB7CiAgICBmb250LXNpemU6IDE4cHg7Cn0KCi5mb250LXNpemUteHMgewogICAgZm9udC1zaXplOiAxNHB4Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICBCb3JkZXIKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLm5vLWJvcmRlciB7CiAgICBib3JkZXI6IDBweCAhaW1wb3J0YW50Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICBObyBiYWNrZ3JvdW5kClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5iZy10cmFuc3BhcmVudCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgovKiAxMC4gd2lkZ2V0cyBsYXlvdXQgKi8KCi53aWRnZXQtdGV4dC1oZWFkaW5nIHsKICAgIG1hcmdpbjogMDsKfQoKLndpZGdldC10ZXh0LWhlYWRpbmcgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzZweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBtYXJnaW46IDAgMCA1cHg7Cn0KCi53aWRnZXQtdGV4dC1oZWFkaW5nIC5kZXMgewogICAgZm9udC1zaXplOiAxM3B4Owp9Cgoud2lkZ2V0LXRleHQtaGVhZGluZy5jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoudmVydGljYWwtd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi52ZXJ0aWNhbC13cmFwcGVyIC50aXRsZS12ZXJ0aWNhbCB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgIHBhZGRpbmc6IDEzcHggMjBweDsKICAgIG1hcmdpbjogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLnZlcnRpY2FsLXdyYXBwZXIgLnRpdGxlLXZlcnRpY2FsIGkgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4Owp9CgoucnRsIC52ZXJ0aWNhbC13cmFwcGVyIC50aXRsZS12ZXJ0aWNhbCBpIHsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoudmVydGljYWwtd3JhcHBlciAudGl0bGUtdmVydGljYWwgLnNob3ctZG93biB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDNweCAwIDA7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5ydGwgLnZlcnRpY2FsLXdyYXBwZXIgLnRpdGxlLXZlcnRpY2FsIC5zaG93LWRvd24gewogICAgZmxvYXQ6IGxlZnQ7Cn0KCi52ZXJ0aWNhbC13cmFwcGVyIC5jb250ZW50LXZlcnRpY2FsIHsKICAgIHBhZGRpbmc6IDA7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMDAlOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB6LWluZGV4OiA4Owp9CgoudmVydGljYWwtd3JhcHBlci5zaG93LWFsd2F5cyAuY29udGVudC12ZXJ0aWNhbCB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLmFwdXMtdmVydGljYWwtbWVudSB7CiAgICBwYWRkaW5nOiAxNHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIG1hcmdpbjogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBib3JkZXItd2lkdGg6IDAgMXB4IDFweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6ICNlYmViZWI7Cn0KCi5hcHVzLXZlcnRpY2FsLW1lbnU+bGkgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2ViZWJlYjsKfQoKLmFwdXMtdmVydGljYWwtbWVudT5saTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlcjogbm9uZTsKfQoKLmFwdXMtdmVydGljYWwtbWVudT5saT5hIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIHBhZGRpbmc6IDA7CiAgICBsaW5lLWhlaWdodDogNDBweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5hcHVzLXZlcnRpY2FsLW1lbnU+bGk+YT5pLAouYXB1cy12ZXJ0aWNhbC1tZW51PmxpPmE+aW1nIHsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgIHdpZHRoOiAxOHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5ydGwgLmFwdXMtdmVydGljYWwtbWVudT5saT5hPmksCi5ydGwgLmFwdXMtdmVydGljYWwtbWVudT5saT5hPmltZyB7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmFwdXMtdmVydGljYWwtbWVudT5saT5hIC5jYXJldCB7CiAgICBmbG9hdDogcmlnaHQ7CiAgICBtYXJnaW46IDIycHggMCAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKfQoKLnJ0bCAuYXB1cy12ZXJ0aWNhbC1tZW51PmxpPmEgLmNhcmV0IHsKICAgIGZsb2F0OiBsZWZ0Owp9CgouYXB1cy12ZXJ0aWNhbC1tZW51PmxpIC5hcHVzLWNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiAxMHB4IDM1cHg7Cn0KCi5hcHVzLXZlcnRpY2FsLW1lbnU+bGk6aG92ZXI+YSwKLmFwdXMtdmVydGljYWwtbWVudT5saS5hY3RpdmU+YSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmFwdXMtdmVydGljYWwtbWVudSBsaTpob3Zlcj4uZHJvcGRvd24tbWVudSB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9CgouYXB1cy12ZXJ0aWNhbC1tZW51IC50ZXh0LWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHZlcnRpY2FsLWFsaWduOiBzdXBlcjsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIiwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5ydGwgLmFwdXMtdmVydGljYWwtbWVudSAudGV4dC1sYWJlbCB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouYXB1cy12ZXJ0aWNhbC1tZW51IC50ZXh0LWxhYmVsLmxhYmVsLWhvdCB7CiAgICBjb2xvcjogI2U0NDM0MzsKfQoKLmFwdXMtdmVydGljYWwtbWVudSAudGV4dC1sYWJlbC5sYWJlbC1uZXcgewogICAgY29sb3I6ICM3OWI1MzA7Cn0KCi5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgewogICAgbWluLXdpZHRoOiAyNDBweDsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgYm94LXNoYWRvdzogMCAwIDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7Cn0KCi5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwOwp9CgouYXB1cy12ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51PmxpPmE+aSwKLmFwdXMtdmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudT5saT5hPmltZyB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICB3aWR0aDogMTVweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLnJ0bCAuYXB1cy12ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51PmxpPmE+aSwKLnJ0bCAuYXB1cy12ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51PmxpPmE+aW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouYXB1cy12ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51PmxpPmEgLmNhcmV0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogMTJweCAwIDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwp9CgoucnRsIC5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnU+bGk+YSAuY2FyZXQgewogICAgZmxvYXQ6IGxlZnQ7Cn0KCi5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnU+bGk6aG92ZXI+YSwKLmFwdXMtdmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudT5saS5hY3RpdmU+YSwKLmFwdXMtdmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudT5saTphY3RpdmU+YSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmFwdXMtdmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudSAud3BiX2J1dHRvbiwKLmFwdXMtdmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudSAud3BiX2NvbnRlbnRfZWxlbWVudCwKLmFwdXMtdmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudSB1bC53cGJfdGh1bWJuYWlscy1mbHVpZD5saSwKLmFwdXMtdmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudSAud2lkZ2V0IHsKICAgIG1hcmdpbjogMDsKfQoKLmFwdXMtdmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudSAud2lkZ2V0IC53aWRnZXQtdGl0bGUsCi5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgLndpZGdldCAud2lkZ2V0dGl0bGUsCi5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgLndpZGdldCAud2lkZ2V0LWhlYWRpbmcgewogICAgbWFyZ2luOiAwIDAgMTBweDsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgLndpZGdldCAud2lkZ2V0LXRpdGxlOmFmdGVyLAouYXB1cy12ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51IC53aWRnZXQgLndpZGdldC10aXRsZTpiZWZvcmUsCi5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgLndpZGdldCAud2lkZ2V0dGl0bGU6YWZ0ZXIsCi5hcHVzLXZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgLndpZGdldCAud2lkZ2V0dGl0bGU6YmVmb3JlLAouYXB1cy12ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51IC53aWRnZXQgLndpZGdldC1oZWFkaW5nOmFmdGVyLAouYXB1cy12ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51IC53aWRnZXQgLndpZGdldC1oZWFkaW5nOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouYXB1cy12ZXJ0aWNhbC1tZW51IC5hbGlnbmVkLWxlZnQ+YTpob3ZlciAuY2FyZXQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKfQoKLmFwdXMtdmVydGljYWwtbWVudSAuYWxpZ25lZC1sZWZ0Pi5kcm9wZG93bi1tZW51IHsKICAgIHRvcDogLTEwcHg7CiAgICBsZWZ0OiAxMDAlOwp9CgouYXB1cy12ZXJ0aWNhbC1tZW51IC5hbGlnbmVkLXJpZ2h0PmE6aG92ZXIgLmNhcmV0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKfQoKLmFwdXMtdmVydGljYWwtbWVudSAuYWxpZ25lZC1yaWdodD4uZHJvcGRvd24tbWVudSB7CiAgICB0b3A6IC0xMHB4OwogICAgcmlnaHQ6IDEwMCU7CiAgICBsZWZ0OiBpbmhlcml0Owp9CgouYXB1c19jdXN0b21fbWVudS5jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouYXB1c19jdXN0b21fbWVudS5jZW50ZXIgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luOiAwIDE1cHg7Cn0KCi5hcHVzX2N1c3RvbV9tZW51LmxlZnQgewogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLmFwdXNfY3VzdG9tX21lbnUucmlnaHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5hcHVzX2N1c3RvbV9tZW51LmlubGluZSBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIG1hcmdpbi1yaWdodDogMjBweDsKfQoKLnJ0bCAuYXB1c19jdXN0b21fbWVudS5pbmxpbmUgbGkgewogICAgbWFyZ2luLWxlZnQ6IDIwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hcHVzX2N1c3RvbV9tZW51LmlubGluZSBsaSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0MHB4OwogICAgfQogICAgLnJ0bCAuYXB1c19jdXN0b21fbWVudS5pbmxpbmUgbGkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA0MHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLmFwdXNfY3VzdG9tX21lbnUuaW5saW5lIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luOiAwOwp9Cgouc2xpY2stY2Fyb3VzZWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKfQoKLnNsaWNrLWNhcm91c2VsIC5zbGljay1hcnJvdyB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgcGFkZGluZzogMDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIHdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgICBjb2xvcjogIzAwNmM3MDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTsKICAgIHotaW5kZXg6IDI7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgYm94LXNoYWRvdzogMCAwIDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwp9Cgouc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWFycm93IC50ZXh0bmF2IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5zbGljay1jYXJvdXNlbCAuc2xpY2stYXJyb3c6aG92ZXIsCi5zbGljay1jYXJvdXNlbCAuc2xpY2stYXJyb3c6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwp9Cgouc2xpY2stY2Fyb3VzZWwgLnNsaWNrLXByZXYgewogICAgbGVmdDogMDsKfQoKLnNsaWNrLWNhcm91c2VsIC5zbGljay1uZXh0IHsKICAgIHJpZ2h0OiAwOwp9Cgouc2xpY2stY2Fyb3VzZWwgLnNsaWNrLXNsaWRlIHsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7Cn0KCi5zbGljay1jYXJvdXNlbC5uby1nYXAgewogICAgbWFyZ2luOiAwOwp9Cgouc2xpY2stY2Fyb3VzZWwubm8tZ2FwIC5zbGljay1zbGlkZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwp9Cgouc2xpY2stY2Fyb3VzZWwuc2hvdy10ZXh0IC50ZXh0bmF2IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbjogMCAycHg7Cn0KCi5zbGljay1jYXJvdXNlbC5zaG93LXRleHQgLnNsaWNrLWFycm93IHsKICAgIHdpZHRoOiBhdXRvOwogICAgaGVpZ2h0OiBhdXRvOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLnNsaWNrLWNhcm91c2VsLnNob3ctdGV4dCAuc2xpY2stYXJyb3c6aG92ZXIsCi5zbGljay1jYXJvdXNlbC5zaG93LXRleHQgLnNsaWNrLWFycm93OmFjdGl2ZSwKLnNsaWNrLWNhcm91c2VsLnNob3ctdGV4dCAuc2xpY2stYXJyb3c6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5zbGljay1jYXJvdXNlbC5zaG93LXRleHQgLnNsaWNrLXByZXYgewogICAgbGVmdDogMDsKICAgIHJpZ2h0OiBpbmhlcml0Owp9Cgouc2xpY2stY2Fyb3VzZWwuc2hvdy10ZXh0IC5zbGljay1uZXh0IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogaW5oZXJpdDsKfQoKLnNsaWNrLWNhcm91c2VsIC5zbGljay10cmFjayB7CiAgICBtYXJnaW46IGluaGVyaXQ7Cn0KCi5zbGljay1jYXJvdXNlbCAuc2xpY2stZG90cyB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDE1cHggMCAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWRvdHMgewogICAgICAgIHBhZGRpbmc6IDI1cHggMCAwOwogICAgfQp9Cgouc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWRvdHMgbGkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBtYXJnaW46IDAgNHB4OwogICAgYm9yZGVyOiAwOwogICAgd2lkdGg6IDE2cHg7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDVweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9Cgouc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWRvdHMgbGkgYnV0dG9uIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1pbmRlbnQ6IC05OTk5ZW07CiAgICB3aWR0aDogNnB4OwogICAgaGVpZ2h0OiA2cHg7CiAgICBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZDogI2RlZGVkZTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwp9Cgouc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWRvdHMgbGkuc2xpY2stYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICNkZWRlZGU7Cn0KCi5zbGljay1jYXJvdXNlbCAuc2xpY2stZG90cyBsaS5zbGljay1hY3RpdmUgYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6ICMyNDMyNGE7Cn0KCi8qIAogKiAgT3dsIENhcm91c2VsIC0gQW5pbWF0ZSBQbHVnaW4KICovCgoub3dsLWNhcm91c2VsIC5hbmltYXRlZCB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMG1zOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwbXM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwp9Cgoub3dsLWNhcm91c2VsIC5vd2wtYW5pbWF0ZWQtaW4gewogICAgei1pbmRleDogMDsKfQoKLm93bC1jYXJvdXNlbCAub3dsLWFuaW1hdGVkLW91dCB7CiAgICB6LWluZGV4OiAxOwp9Cgoub3dsLWNhcm91c2VsIC5mYWRlT3V0IHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXQ7CiAgICBhbmltYXRpb24tbmFtZTogZmFkZU91dDsKfQoKLyogCiAqIAlPd2wgQ2Fyb3VzZWwgLSBBdXRvIEhlaWdodCBQbHVnaW4KICovCgoub3dsLWhlaWdodCB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCA1MDBtcyBlYXNlLWluLW91dDsKICAgIC1tb3otdHJhbnNpdGlvbjogaGVpZ2h0IDUwMG1zIGVhc2UtaW4tb3V0OwogICAgLW1zLXRyYW5zaXRpb246IGhlaWdodCA1MDBtcyBlYXNlLWluLW91dDsKICAgIC1vLXRyYW5zaXRpb246IGhlaWdodCA1MDBtcyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGhlaWdodCA1MDBtcyBlYXNlLWluLW91dDsKfQoKLm93bC1jYXJvdXNlbC10b3AgLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dCwKLm93bC1jYXJvdXNlbC10b3AgLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldiwKLm93bC1jYXJvdXNlbC10b3Aub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1uZXh0LAoub3dsLWNhcm91c2VsLXRvcC5vd2wtY2Fyb3VzZWwgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLXByZXYgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgYmFja2dyb3VuZDogI2FhYWFhYTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGNvbG9yOiAjZmZmOwp9Cgoub3dsLWNhcm91c2VsLXRvcCAub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1uZXh0OmhvdmVyLAoub3dsLWNhcm91c2VsLXRvcCAub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1uZXh0OmFjdGl2ZSwKLm93bC1jYXJvdXNlbC10b3AgLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldjpob3ZlciwKLm93bC1jYXJvdXNlbC10b3AgLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldjphY3RpdmUsCi5vd2wtY2Fyb3VzZWwtdG9wLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dDpob3ZlciwKLm93bC1jYXJvdXNlbC10b3Aub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1uZXh0OmFjdGl2ZSwKLm93bC1jYXJvdXNlbC10b3Aub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1wcmV2OmhvdmVyLAoub3dsLWNhcm91c2VsLXRvcC5vd2wtY2Fyb3VzZWwgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLXByZXY6YWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICMyMjIyMjI7CiAgICBjb2xvcjogI2ZmZjsKfQoKLm93bC1jYXJvdXNlbC10b3AgLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzLAoub3dsLWNhcm91c2VsLXRvcC5vd2wtY2Fyb3VzZWwgLm93bC1jb250cm9scyB7CiAgICB0b3A6IC03MHB4OwogICAgd2lkdGg6IDEwOHB4OwogICAgcmlnaHQ6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKfQoKLnJ0bCAub3dsLWNhcm91c2VsLXRvcCAub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMsCi5ydGwgLm93bC1jYXJvdXNlbC10b3Aub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMgewogICAgbGVmdDogMDsKICAgIHJpZ2h0OiBhdXRvOwp9CgovKiAKICogIENvcmUgT3dsIENhcm91c2VsIENTUyBGaWxlCiAqLwoKLm93bC1jYXJvdXNlbCB7CiAgICBkaXNwbGF5OiBub25lOwogICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIC8qIHBvc2l0aW9uIHJlbGF0aXZlIGFuZCB6LWluZGV4IGZpeCB3ZWJraXQgcmVuZGVyaW5nIGZvbnRzIGlzc3VlICovCiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLm93bC1jYXJvdXNlbDpob3ZlciAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldiwKLm93bC1jYXJvdXNlbDpob3ZlciAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dCB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5vd2wtY29udHJvbHMgLm93bC1kb3RzIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLm93bC1jb250cm9scyAub3dsLWRvdHMgLm93bC1kb3QgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgbWFyZ2luOiAwIDVweDsKICAgIHdpZHRoOiAxMXB4OwogICAgaGVpZ2h0OiAxMXB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjNjQ2YTdjOwogICAgYmFja2dyb3VuZDogIzY0NmE3YzsKfQoKLm93bC1jb250cm9scyAub3dsLWRvdHMgLm93bC1kb3QuYWN0aXZlIHsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7Cn0KCi5uYXYtYm90dG9tLm93bC1jYXJvdXNlbCB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTVweDsKfQoKLm5hdi1ib3R0b20ub3dsLWNhcm91c2VsIC5vd2wtY29udHJvbHMgewogICAgdG9wOiAxMDAlOwp9CgoubmF2LXdoaXRlIC5vd2wtY29udHJvbHMgLm93bC1kb3RzIC5vd2wtZG90IHsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CgoubmF2LXdoaXRlIC5vd2wtY29udHJvbHMgLm93bC1kb3RzIC5vd2wtZG90OmhvdmVyLAoubmF2LXdoaXRlIC5vd2wtY29udHJvbHMgLm93bC1kb3RzIC5vd2wtZG90LmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjZmY1YTVmOwp9CgoubmF2LXNtYWxsIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1wcmV2LAoubmF2LXNtYWxsIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1uZXh0IHsKICAgIHdpZHRoOiAzMHB4OwogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICBib3JkZXItd2lkdGg6IDFweDsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKLm5hdi13aGl0ZSAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldiwKLm5hdi13aGl0ZSAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dCB7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KCi5uYXYtd2hpdGUgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLXByZXY6aG92ZXIsCi5uYXYtd2hpdGUgLm93bC1jb250cm9scyAub3dsLW5hdiAub3dsLXByZXY6YWN0aXZlLAoubmF2LXdoaXRlIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1uZXh0OmhvdmVyLAoubmF2LXdoaXRlIC5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1uZXh0OmFjdGl2ZSB7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmY7Cn0KCi5vd2wtY2Fyb3VzZWwgLm93bC1zdGFnZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtbXMtdG91Y2gtYWN0aW9uOiBwYW4tWTsKfQoKLm93bC1jYXJvdXNlbCAub3dsLXN0YWdlOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIuIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY2xlYXI6IGJvdGg7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICBsaW5lLWhlaWdodDogMDsKICAgIGhlaWdodDogMDsKfQoKLm93bC1jYXJvdXNlbCAub3dsLXN0YWdlLW91dGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAvKiBmaXggZm9yIGZsYXNoaW5nIGJhY2tncm91bmQgKi8KICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDBweCwgMHB4KTsKfQoKLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgd2lkdGg6IDEwMCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7Cn0KCi5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1wcmV2LAoub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dCB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjZmY1YTVmOwogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAxNXB4OwogICAgei1pbmRleDogOTk7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIHdpZHRoOiA0OHB4OwogICAgaGVpZ2h0OiA0OHB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBsaW5lLWhlaWdodDogNDJweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9Cgoub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtcHJldjphY3RpdmUsCi5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1wcmV2OmhvdmVyLAoub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dDphY3RpdmUsCi5vd2wtY29udHJvbHMgLm93bC1uYXYgLm93bC1uZXh0OmhvdmVyIHsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLm93bC1jYXJvdXNlbCAub3dsLWNvbnRyb2xzIC5vd2wtbmF2IC5vd2wtbmV4dCB7CiAgICBsZWZ0OiBpbmhlcml0OwogICAgcmlnaHQ6IDE1cHg7Cn0KCi5vd2wtY2Fyb3VzZWwub3dsLWxvYWRlZCB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLm93bC1jYXJvdXNlbC5vd2wtbG9hZGluZyB7CiAgICBvcGFjaXR5OiAwOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5vd2wtY2Fyb3VzZWwub3dsLWhpZGRlbiB7CiAgICBvcGFjaXR5OiAwOwp9Cgoub3dsLWNhcm91c2VsIC5vd2wtcmVmcmVzaCAub3dsLWl0ZW0gewogICAgZGlzcGxheTogbm9uZTsKfQoKLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWluLWhlaWdodDogMXB4OwogICAgZmxvYXQ6IGxlZnQ7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKfQoKLm93bC1jYXJvdXNlbC5vd2wtdGV4dC1zZWxlY3Qtb24gLm93bC1pdGVtIHsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IGF1dG87CiAgICAtbW96LXVzZXItc2VsZWN0OiBhdXRvOwogICAgLW1zLXVzZXItc2VsZWN0OiBhdXRvOwogICAgdXNlci1zZWxlY3Q6IGF1dG87Cn0KCi5vd2wtY2Fyb3VzZWwgLm93bC1ncmFiIHsKICAgIGN1cnNvcjogbW92ZTsKICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiOwogICAgY3Vyc29yOiAtby1ncmFiOwogICAgY3Vyc29yOiAtbXMtZ3JhYjsKICAgIGN1cnNvcjogZ3JhYjsKfQoKLm93bC1jYXJvdXNlbC5vd2wtcnRsIHsKICAgIGRpcmVjdGlvbjogcnRsOwp9Cgoub3dsLWNhcm91c2VsLm93bC1ydGwgLm93bC1pdGVtIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLyogTm8gSnMgKi8KCi5uby1qcyAub3dsLWNhcm91c2VsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgovKiAKICogCU93bCBDYXJvdXNlbCAtIExhenkgTG9hZCBQbHVnaW4KICovCgoub3dsLWNhcm91c2VsIC5vd2wtaXRlbSAub3dsLWxhenkgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOwogICAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2U7CiAgICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOwogICAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOwp9CgovKiAKICogCU93bCBDYXJvdXNlbCAtIFZpZGVvIFBsdWdpbgogKi8KCi5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby13cmFwcGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6ICMwMDA7Cn0KCi5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby1wbGF5LWljb24gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgaGVpZ2h0OiA4MHB4OwogICAgd2lkdGg6IDgwcHg7CiAgICBsZWZ0OiA1MCU7CiAgICB0b3A6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtNDBweDsKICAgIG1hcmdpbi10b3A6IC00MHB4OwogICAgYmFja2dyb3VuZDogdXJsKCJvd2wudmlkZW8ucGxheS5wbmciKSBuby1yZXBlYXQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB6LWluZGV4OiAxOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICAtd2Via2l0LXRyYW5zaXRpb246IHNjYWxlIDEwMG1zIGVhc2U7CiAgICAtbW96LXRyYW5zaXRpb246IHNjYWxlIDEwMG1zIGVhc2U7CiAgICAtbXMtdHJhbnNpdGlvbjogc2NhbGUgMTAwbXMgZWFzZTsKICAgIC1vLXRyYW5zaXRpb246IHNjYWxlIDEwMG1zIGVhc2U7CiAgICB0cmFuc2l0aW9uOiBzY2FsZSAxMDBtcyBlYXNlOwp9Cgoub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tcGxheS1pY29uOmhvdmVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogc2NhbGUoMS4zLCAxLjMpOwogICAgLW1vei10cmFuc2l0aW9uOiBzY2FsZSgxLjMsIDEuMyk7CiAgICAtbXMtdHJhbnNpdGlvbjogc2NhbGUoMS4zLCAxLjMpOwogICAgLW8tdHJhbnNpdGlvbjogc2NhbGUoMS4zLCAxLjMpOwogICAgdHJhbnNpdGlvbjogc2NhbGUoMS4zLCAxLjMpOwp9Cgoub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tcGxheWluZyAub3dsLXZpZGVvLXRuLAoub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tcGxheWluZyAub3dsLXZpZGVvLXBsYXktaWNvbiB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgoub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tdG4gewogICAgb3BhY2l0eTogMDsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47CiAgICAtbW96LWJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKICAgIC1vLWJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOwogICAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2U7CiAgICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOwogICAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOwp9Cgoub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tZnJhbWUgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLndwYl9nbWFwc193aWRnZXQud3BiX2NvbnRlbnRfZWxlbWVudCB7CiAgICBtYXJnaW46IDA7Cn0KCi53aWRnZXQtZ29vZ2xlbWFwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLndpZGdldC1nb29nbGVtYXAgLmFwdXMtZ29vZ2xlLW1hcCB7CiAgICB6LWluZGV4OiAxOwp9Cgoud2lkZ2V0LWdvb2dsZW1hcCAubWFwLWNvbnRlbnQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9Cgoud2lkZ2V0LWdvb2dsZW1hcCAuY29udGVudC1pbmZvIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE3LCAxNywgMTcsIDAuOCk7CiAgICBwYWRkaW5nOiAzMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7CiAgICAud2lkZ2V0LWdvb2dsZW1hcCAuY29udGVudC1pbmZvIHsKICAgICAgICBwYWRkaW5nOiA2NXB4IDY1cHggNDBweDsKICAgIH0KfQoKLndpZGdldC1nb29nbGVtYXAgLmRlc2NyaXB0aW9uIHsKICAgIG1hcmdpbjogMCAwIDM1cHg7Cn0KCi53aWRnZXQtZ29vZ2xlbWFwIC5pbmZvLXdyYXBwZXIgewogICAgbWFyZ2luOiAwIDAgNDBweDsKfQoKLndpZGdldC1nb29nbGVtYXAgLmluZm8td3JhcHBlcjpudGgtY2hpbGQoMm4pIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KCi53aWRnZXQtZ29vZ2xlbWFwIC5pbmZvLXdyYXBwZXIgLmljb24gewogICAgd2lkdGg6IDcwcHg7CiAgICBoZWlnaHQ6IDcwcHg7CiAgICBsaW5lLWhlaWdodDogNzZweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjM2Y0MTQzOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1yaWdodDogMjBweDsKfQoKLnJ0bCAud2lkZ2V0LWdvb2dsZW1hcCAuaW5mby13cmFwcGVyIC5pY29uIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLnJ0bCAud2lkZ2V0LWdvb2dsZW1hcCAuaW5mby13cmFwcGVyIC5pY29uIHsKICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud2lkZ2V0LWdvb2dsZW1hcCAuaW5mby13cmFwcGVyIC5pY29uIGkgewogICAgZm9udC1zaXplOiAyOHB4Owp9Cgoud2lkZ2V0LWdvb2dsZW1hcCAuaW5mby13cmFwcGVyIC5kZXMgewogICAgY29sb3I6ICNmZmY7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgbWFyZ2luOiA2cHggMCAwOwp9Cgoud2lkZ2V0LWdvb2dsZW1hcCAuaW5mby10b3AgewogICAgYm9yZGVyLWJvdHRvbTogMnB4IGRhc2hlZCAjNDE0NDQ1OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLndpZGdldC1nb29nbGVtYXAgLmluZm8tYm90dG9tIHsKICAgIG1hcmdpbjogNDBweCAwOwp9Cgoud2lkZ2V0LWdvb2dsZW1hcCAuaW5mby1ib3R0b20gYSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBsaW5lLWhlaWdodDogNDJweDsKICAgIHdpZHRoOiA0MnB4OwogICAgaGVpZ2h0OiA0MnB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBjb2xvcjogIzEwMTQxNjsKICAgIGJhY2tncm91bmQ6ICMzZjQxNDM7Cn0KCi53aWRnZXQtZ29vZ2xlbWFwIC5pbmZvLWJvdHRvbSBhOmhvdmVyLAoud2lkZ2V0LWdvb2dsZW1hcCAuaW5mby1ib3R0b20gYTphY3RpdmUgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgIzI0MzI0YSAwJSwgI2ZmNWE1ZiAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCAjMjQzMjRhIDAlLCAjZmY1YTVmIDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMjQzMjRhIDAlLCAjZmY1YTVmIDEwMCUpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI0ZGMjQzMjRBJywgZW5kQ29sb3JzdHI9JyNGRkZGNUE1RicsIEdyYWRpZW50VHlwZT0xKTsKICAgIGNvbG9yOiAjMGUxMTEzOwp9Cgoud2lkZ2V0LWdvb2dsZW1hcCAuaW5mby1ib3R0b20gYSthIHsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4Owp9CgoucnRsIC53aWRnZXQtZ29vZ2xlbWFwIC5pbmZvLWJvdHRvbSBhK2EgewogICAgbWFyZ2luLXJpZ2h0OiAxMnB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi53aWRnZXQtc29jaWFscyAuc29jaWFsIHsKICAgIHBhZGRpbmc6IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgbWFyZ2luOiAwOwp9Cgoud2lkZ2V0LXNvY2lhbHMgLnNvY2lhbD5saSB7CiAgICBwYWRkaW5nOiAwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgZm9udC1zaXplOiAxNnB4Owp9CgoucnRsIC53aWRnZXQtc29jaWFscyAuc29jaWFsPmxpIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LXNvY2lhbHMgLnNvY2lhbD5saSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMnB4OwogICAgfQogICAgLnJ0bCAud2lkZ2V0LXNvY2lhbHMgLnNvY2lhbD5saSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDIycHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQp9Cgoud2lkZ2V0LXNvY2lhbHMgLnNvY2lhbD5saTpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbjogMDsKfQoKLnBob25lX2hlYWRlciB7CiAgICBmb250LXNpemU6IDIycHg7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoucGhvbmVfaGVhZGVyIGltZyB7CiAgICBtYXJnaW46IDAgMTBweCAwIDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgoucnRsIC5waG9uZV9oZWFkZXIgaW1nIHsKICAgIG1hcmdpbjogMCAwIDAgMTBweDsKfQoKLmNvbHVtbi1ib3g+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1yYWRpdXM6IDdweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogN3B4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA3cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogN3B4OwogICAgLW8tYm9yZGVyLXJhZGl1czogN3B4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMXB4IDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA5KTsKICAgIGJveC1zaGFkb3c6IDFweCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4wOSk7Cn0KCi53aWRnZXQtcHJvY2VzcyB7CiAgICBwYWRkaW5nLXRvcDogMzVweDsKfQoKLndpZGdldC1wcm9jZXNzIC50aXRsZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLndpZGdldC1wcm9jZXNzIC5kZXMgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgZm9udC1mYW1pbHk6ICJOdW5pdG8iOwogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LXByb2Nlc3MgLmRlcyB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgfQp9Cgoud2lkZ2V0LXByb2Nlc3MgLnRvcC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldC1wcm9jZXNzIC50b3AtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgfQp9Cgoud2lkZ2V0LXByb2Nlc3MgLnByb2Nlcy1pdGVtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLndpZGdldC1wcm9jZXNzIC5wcm9jZXMtaXRlbSAubGluZS1zcGFjZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTkwcHg7CiAgICBoZWlnaHQ6IDM1cHg7CiAgICBsZWZ0OiAxMDAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgYm90dG9tOiAxMDAlOwp9Cgoud2lkZ2V0LXByb2Nlc3MgLnByb2Nlcy1pdGVtOmxhc3QtY2hpbGQgLmxpbmUtc3BhY2UgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmxhbmd1YWdlLXdyYXBwZXIgewogICAgZm9udC1zaXplOiAxMnB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoubGFuZ3VhZ2Utd3JhcHBlcjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDVweDsKfQoKLmxhbmd1YWdlLXdyYXBwZXIgLnNlbGVjdGVkIC5sYW5ndWFnZS1jdXJyZW50PmltZyB7CiAgICBtYXJnaW46IDAgMTBweCAwIDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogc3ViOwp9CgoucnRsIC5sYW5ndWFnZS13cmFwcGVyIC5zZWxlY3RlZCAubGFuZ3VhZ2UtY3VycmVudD5pbWcgewogICAgbWFyZ2luOiAwIDAgMCAxMHB4Owp9CgoubGFuZ3VhZ2Utd3JhcHBlciAuc2VsZWN0ZWQgLmxhbmd1YWdlLWN1cnJlbnQ+aSB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKfQoKLnJ0bCAubGFuZ3VhZ2Utd3JhcHBlciAuc2VsZWN0ZWQgLmxhbmd1YWdlLWN1cnJlbnQ+aSB7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmxhbmd1YWdlLXdyYXBwZXIgLmRyb3Bkb3duLW1lbnUgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDA7CiAgICBwYWRkaW5nOiAxM3B4IDE4cHg7CiAgICBtaW4td2lkdGg6IDEzMHB4OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLmxhbmd1YWdlLXdyYXBwZXI6aG92ZXIgLmRyb3Bkb3duLW1lbnUgewogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLmxhbmd1YWdlLXdyYXBwZXIgLmxpc3QtbGFuZ3VhZ2UgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7Cn0KCi5sYW5ndWFnZS13cmFwcGVyIC5saXN0LWxhbmd1YWdlIGxpIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi5sYW5ndWFnZS13cmFwcGVyIC5saXN0LWxhbmd1YWdlIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmxhbmd1YWdlLXdyYXBwZXIgLmxpc3QtbGFuZ3VhZ2UgYTpob3ZlciwKLmxhbmd1YWdlLXdyYXBwZXIgLmxpc3QtbGFuZ3VhZ2UgYTpmb2N1cyB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmxhbmd1YWdlLXdyYXBwZXIgLmxpc3QtbGFuZ3VhZ2UgaW1nIHsKICAgIG1hcmdpbi1yaWdodDogNnB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLnJ0bCAubGFuZ3VhZ2Utd3JhcHBlciAubGlzdC1sYW5ndWFnZSBpbWcgewogICAgbWFyZ2luLWxlZnQ6IDZweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnNvY2lhbC1saW5rIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbjogMCA1cHg7CiAgICBwYWRkaW5nOiAwOwp9Cgouc29jaWFsLWxpbmsgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luOiAwIDVweDsKfQoKLnNvY2lhbC1saW5rIGxpIGEgewogICAgYmFja2dyb3VuZDogI2Y0ZjRmNCBub25lIHJlcGVhdCBzY3JvbGwgMCAwOwogICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiA0MHB4OwogICAgbGluZS1oZWlnaHQ6IDM4cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogNDBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7Cn0KCi5zb2NpYWwtbGluay5saWdodGVuIGxpIGEgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgbm9uZSByZXBlYXQgc2Nyb2xsIDAgMDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmZmZmY7CiAgICBjb2xvcjogI2ZmZmZmZjsKfQoKLndpZGdldC1nYWxsZXJ5IC5pbWFnZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi53aWRnZXQtZ2FsbGVyeSAuaW1hZ2U6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgY29udGVudDogJyc7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIHotaW5kZXg6IDI7Cn0KCi53aWRnZXQtZ2FsbGVyeSAuaW1hZ2UgLmNvbnRlbnQtY292ZXIgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDEwMCU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgei1pbmRleDogOTsKfQoKLndpZGdldC1nYWxsZXJ5IC5pbWFnZTpob3ZlcjpiZWZvcmUgewogICAgb3BhY2l0eTogMC45OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTkwKTsKfQoKLndpZGdldC1nYWxsZXJ5IC5pbWFnZTpob3ZlciAuY29udGVudC1jb3ZlciB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi53aWRnZXQtZ2FsbGVyeSAucG9wdXAtaW1hZ2UtZ2FsbGVyeSB7CiAgICB3aWR0aDogNjBweDsKICAgIGhlaWdodDogNjBweDsKICAgIGxpbmUtaGVpZ2h0OiA2MHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKfQoKLndpZGdldC1nYWxsZXJ5IC5wb3B1cC1pbWFnZS1nYWxsZXJ5OmhvdmVyLAoud2lkZ2V0LWdhbGxlcnkgLnBvcHVwLWltYWdlLWdhbGxlcnk6YWN0aXZlIHsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgYmFja2dyb3VuZDogI2U2ZTZlNjsKfQoKLndpZGdldC1nYWxsZXJ5IC50aXRsZSB7CiAgICBmb250LXNpemU6IDI0cHg7CiAgICBmb250LXNpemU6ICJOdW5pdG8iOwogICAgbWFyZ2luOiAwOwogICAgY29sb3I6ICNmZmY7Cn0KCi53aWRnZXQtZ2FsbGVyeSAuZGVzY3JpcHRpb24gewogICAgY29sb3I6ICNlMGRlZGU7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Cgoud2lkZ2V0LWdhbGxlcnkgLmd1dHRlci1kZWZhdWx0IHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud2lkZ2V0LWdhbGxlcnkgLmd1dHRlci1kZWZhdWx0PmRpdiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgcGFkZGluZy1sZWZ0OiAwOwp9Cgoud2lkZ2V0LWdhbGxlcnkuZ3V0dGVyMzAgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIjsKfQoKLndpZGdldC1nYWxsZXJ5Lmd1dHRlcjMwIC5pbWFnZSB7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Cgoud2lkZ2V0LWdhbGxlcnkuZ3V0dGVyMzAgLmRlc2NyaXB0aW9uIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi53aWRnZXQtZ2FsbGVyeS5ndXR0ZXIzMCAuZ3V0dGVyLWRlZmF1bHQgewogICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKfQoKLndpZGdldC1nYWxsZXJ5Lmd1dHRlcjMwIC5ndXR0ZXItZGVmYXVsdD5kaXYgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKfQoKLndpZGdldC1mZWF0dXJlcy1ib3ggLml0ZW0taW5uZXIsCi53aWRnZXQtZmVhdHVyZXMtYm94IC50aXRsZSwKLndpZGdldC1mZWF0dXJlcy1ib3ggLmRlc2NyaXB0aW9uLAoud2lkZ2V0LWZlYXR1cmVzLWJveCAuZmVhdHVyZXMtYm94LWltYWdlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9Cgoud2lkZ2V0LWZlYXR1cmVzLWJveCAuaXRlbS1pbm5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWZlYXR1cmVzLWJveCAuaXRlbS1pbm5lciB7CiAgICAgICAgcGFkZGluZzogNDBweCA0NXB4IDM1cHg7CiAgICB9Cn0KCi53aWRnZXQtZmVhdHVyZXMtYm94IC5mZWF0dXJlcy1ib3gtaW1hZ2UgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICB3aWR0aDogODBweDsKICAgIGhlaWdodDogODBweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiA4MHB4OwogICAgZm9udC1zaXplOiAzNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWZlYXR1cmVzLWJveCAuZmVhdHVyZXMtYm94LWltYWdlIHsKICAgICAgICB3aWR0aDogMTMwcHg7CiAgICAgICAgaGVpZ2h0OiAxMzBweDsKICAgICAgICBsaW5lLWhlaWdodDogMTMwcHg7CiAgICAgICAgZm9udC1zaXplOiA2MHB4OwogICAgfQp9Cgoud2lkZ2V0LWZlYXR1cmVzLWJveCAudG9wLWlubmVyIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtZmVhdHVyZXMtYm94IC50b3AtaW5uZXIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9Cn0KCi53aWRnZXQtZmVhdHVyZXMtYm94IC50aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAxNXB4Owp9Cgoud2lkZ2V0LWZlYXR1cmVzLWJveC5zdHlsZTIgLml0ZW0taW5uZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg3cHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg3cHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDdweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoN3B4KTsKfQoKLndpZGdldC1mZWF0dXJlcy1ib3guc3R5bGUyIC5pdGVtLWlubmVyOmhvdmVyOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KCi53aWRnZXQtZmVhdHVyZXMtYm94LnN0eWxlMyAuaXRlbSB7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZThlZWYyOwp9CgoucnRsIC53aWRnZXQtZmVhdHVyZXMtYm94LnN0eWxlMyAuaXRlbSB7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlOGVlZjI7CiAgICBib3JkZXItcmlnaHQ6IGluaGVyaXQ7Cn0KCi53aWRnZXQtZmVhdHVyZXMtYm94LnN0eWxlMyAuaXRlbTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlcjogMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldC1mZWF0dXJlcy1ib3guc3R5bGUzIC5pdGVtLWlubmVyIHsKICAgICAgICBwYWRkaW5nOiA1MHB4IDI4cHggNDBweDsKICAgIH0KfQoKLndpZGdldC1mZWF0dXJlcy1ib3guc3R5bGUzIC5pdGVtLWlubmVyIC50b3AtaW5uZXIgewogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldC1mZWF0dXJlcy1ib3guc3R5bGUzIC5pdGVtLWlubmVyIC50b3AtaW5uZXIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICB9Cn0KCi53aWRnZXQtdGVzdGltb25pYWxzLnN0X3doaXRlLAoud2lkZ2V0LXRlc3RpbW9uaWFscy5zdF93aGl0ZSAubmFtZS1jbGllbnQgewogICAgY29sb3I6ICNmZmY7Cn0KCi53aWRnZXQtdGVzdGltb25pYWxzLnN0X3doaXRlIC5zbGljay1jYXJvdXNlbCAuc2xpY2stZG90cyBsaSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLndpZGdldC10ZXN0aW1vbmlhbHMuc3Rfd2hpdGUgLnNsaWNrLWNhcm91c2VsIC5zbGljay1kb3RzIGxpIGJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi53aWRnZXQtdGVzdGltb25pYWxzLnN0X3doaXRlIC5zbGljay1jYXJvdXNlbCAuc2xpY2stZG90cyBsaS5zbGljay1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwp9Cgoud2lkZ2V0LXRlc3RpbW9uaWFscy5zdF93aGl0ZSAudGVzdGltb25pYWxzLWl0ZW0gLmF2YXJ0YSB7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtdGVzdGltb25pYWxzLnN0X3doaXRlIC50ZXN0aW1vbmlhbHMtaXRlbSAuYXZhcnRhIHsKICAgICAgICB3aWR0aDogMTMwcHg7CiAgICAgICAgaGVpZ2h0OiAxMzBweDsKICAgICAgICBib3JkZXItd2lkdGg6IDEwcHg7CiAgICB9Cn0KCi53aWRnZXQtdGVzdGltb25pYWxzLmhpZGRlbmljb24gLnRlc3RpbW9uaWFscy1pdGVtIC5hdmFydGE6OmJlZm9yZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi53aWRnZXQtdGVzdGltb25pYWxzLnYxIHsKICAgIG1heC13aWR0aDogNjAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLndpZGdldC10ZXN0aW1vbmlhbHMudjIgLnNsaWNrLWxpc3QgewogICAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCi53aWRnZXQtdGVzdGltb25pYWxzLnYyIC50ZXN0aW1vbmlhbHMtaW5uZXIgewogICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAzMHB4KTsKfQoKLndpZGdldC10ZXN0aW1vbmlhbHMudjIgLnRlc3RpbW9uaWFscy1pbm5lciAuc2xpY2stY2Fyb3VzZWwgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7Cn0KCi53aWRnZXQtdGVzdGltb25pYWxzIC5zbGljay1jYXJvdXNlbC52MiAuc2xpY2stbGlzdCB7CiAgICBwYWRkaW5nOiAzMHB4IDA7Cn0KCi50ZXN0aW1vbmlhbHMtaXRlbSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nLXRvcDogMjBweDsKfQoKLnRlc3RpbW9uaWFscy1pdGVtIC5hdmFydGEgewogICAgd2lkdGg6IDEyMHB4OwogICAgaGVpZ2h0OiAxMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgYm9yZGVyOiA1cHggc29saWQgI2ZmZjsKICAgIG1hcmdpbjogYXV0bzsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpOwogICAgYm94LXNoYWRvdzogMCAwIDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgLyogU2FmYXJpICovCiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAvKiBTYWZhcmkgNy4wKyAqLwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi50ZXN0aW1vbmlhbHMtaXRlbSAuYXZhcnRhIGltZyB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLnRlc3RpbW9uaWFscy1pdGVtIC5hdmFydGE6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDQzcHg7CiAgICBoZWlnaHQ6IDQzcHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiAtMTBweDsKICAgIHotaW5kZXg6IDE7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogNTBweDsKICAgIGxpbmUtaGVpZ2h0OiA2NnB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGMzc3OTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtNDVkZWcsICNGRjM3NzkgMCUsICNGRTUxNUQgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsICNGRjM3NzkgMCUsICNGRTUxNUQgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCAjRkYzNzc5IDAlLCAjRkU1MTVEIDEwMCUpOwp9CgoucnRsIC50ZXN0aW1vbmlhbHMtaXRlbSAuYXZhcnRhOmJlZm9yZSB7CiAgICBsZWZ0OiAtMTBweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoudGVzdGltb25pYWxzLWl0ZW0gLm5hbWUtY2xpZW50IHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1hcmdpbjogMDsKfQoKLnRlc3RpbW9uaWFscy1pdGVtIC5qb2IgewogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi50ZXN0aW1vbmlhbHMtaXRlbSAuaW5mby10ZXN0aW1vbmlhbHMgewogICAgbWFyZ2luOiAyMHB4IDA7Cn0KCi50ZXN0aW1vbmlhbHMtaXRlbSAuZGVzY3JpcHRpb24gewogICAgbWF4LXdpZHRoOiA0NDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgoudGVzdGltb25pYWxzLWl0ZW0udjIgewogICAgdGV4dC1hbGlnbjogaW5oZXJpdDsKICAgIHBhZGRpbmctdG9wOiAwOwp9CgoudGVzdGltb25pYWxzLWl0ZW0udjIuc2xpY2stYWN0aXZlIC5pbm5lciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgYm94LXNoYWRvdzogMCAwIDMwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi50ZXN0aW1vbmlhbHMtaXRlbS52MiAuaW5uZXIgewogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgcGFkZGluZzogMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnRlc3RpbW9uaWFscy1pdGVtLnYyIC5pbm5lciB7CiAgICAgICAgcGFkZGluZzogMzBweDsKICAgIH0KfQoKLnRlc3RpbW9uaWFscy1pdGVtLnYyIC5xdW90ZS10ZXN0aW1vbmlhbHMgewogICAgZm9udC1zaXplOiA3MnB4OwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgoudGVzdGltb25pYWxzLWl0ZW0udjIgLnRvcC1pY29uIHsKICAgIG1hcmdpbjogMTVweCAwIDVweDsKfQoKLnRlc3RpbW9uaWFscy1pdGVtLnYyIC5kZXNjcmlwdGlvbiB7CiAgICBtYXJnaW46IDA7Cn0KCi50ZXN0aW1vbmlhbHMtaXRlbS52MiAuYXZhcnRhIHsKICAgIGJvcmRlcjogMDsKICAgIHdpZHRoOiA5MHB4OwogICAgaGVpZ2h0OiA5MHB4OwogICAgbWFyZ2luOiAwOwp9CgoudGVzdGltb25pYWxzLWl0ZW0udjIgLmF2YXJ0YTpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLnRlc3RpbW9uaWFscy1pdGVtLnYyIC5ib3R0b20taW5mbyB7CiAgICBwYWRkaW5nLXRvcDogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnRlc3RpbW9uaWFscy1pdGVtLnYyIC5ib3R0b20taW5mbyB7CiAgICAgICAgcGFkZGluZy10b3A6IDI1cHg7CiAgICB9Cn0KCi50ZXN0aW1vbmlhbHMtaXRlbS52MiAuaW5mby10ZXN0aW1vbmlhbHMgewogICAgbWFyZ2luOiAwOwogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDkwcHgpOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4Owp9CgoucnRsIC50ZXN0aW1vbmlhbHMtaXRlbS52MiAuaW5mby10ZXN0aW1vbmlhbHMgewogICAgcGFkZGluZy1yaWdodDogMjBweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLndyYXBwZXItdGVzdGltb25pYWwtdGh1bWJuYWlsIHsKICAgIG1heC13aWR0aDogNTUwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKfQoKLndyYXBwZXItdGVzdGltb25pYWwtdGh1bWJuYWlsIC5hdmFydGEgewogICAgd2lkdGg6IDEwMHB4OwogICAgaGVpZ2h0OiAxMDBweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjYpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMC42KTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMC42KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC42KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3BhY2l0eTogMC42OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTYwKTsKfQoKLndyYXBwZXItdGVzdGltb25pYWwtdGh1bWJuYWlsIC5zbGljay1hY3RpdmUrLnNsaWNrLWFjdGl2ZSAuYXZhcnRhIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTsKfQoKLndyYXBwZXItdGVzdGltb25pYWwtdGh1bWJuYWlsIC5zbGljay1jdXJyZW50IC5hdmFydGEgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpICFpbXBvcnRhbnQ7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKSAhaW1wb3J0YW50OwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKSAhaW1wb3J0YW50OwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKSAhaW1wb3J0YW50OwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgYm94LXNoYWRvdzogMCAwIDRweCAwIHJnYmEoMCwgMCwgMCwgMC4zKTsKfQoKLndyYXBwZXItdGVzdGltb25pYWwtdGh1bWJuYWlsIC5zbGljay1jdXJyZW50Ky5zbGljay1hY3RpdmUgLmF2YXJ0YSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7Cn0KCi53cmFwcGVyLXRlc3RpbW9uaWFsLXRodW1ibmFpbCAuc2xpY2stY3VycmVudCsuc2xpY2stYWN0aXZlKy5zbGljay1hY3RpdmUgLmF2YXJ0YSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC42KTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDAuNik7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDAuNik7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7Cn0KCi53cmFwcGVyLXRlc3RpbW9uaWFsLXRodW1ibmFpbCAuc2xpY2stY2Fyb3VzZWwgewogICAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC01cHg7Cn0KCi53cmFwcGVyLXRlc3RpbW9uaWFsLXRodW1ibmFpbCAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWxpc3QgewogICAgcGFkZGluZzogNXB4IDAgIWltcG9ydGFudDsKfQoKLndyYXBwZXItdGVzdGltb25pYWwtdGh1bWJuYWlsIC5zbGljay1jYXJvdXNlbCAuc2xpY2stc2xpZGUgewogICAgcGFkZGluZy1yaWdodDogNXB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KCi5mYXFfcXVlc3Rpb25fd2lkZ2V0IC50aXRsZSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBtYXJnaW46IDAgMCAxNXB4Owp9CgouZmFxX3F1ZXN0aW9uX3dpZGdldCAud2lkZ2V0X2xpc3QgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAxcHggMXB4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4wOSk7CiAgICBib3gtc2hhZG93OiAxcHggMXB4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4wOSk7CiAgICBwYWRkaW5nOiAyMHB4IDIwcHggMTBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmZhcV9xdWVzdGlvbl93aWRnZXQgLndpZGdldF9saXN0IHsKICAgICAgICBwYWRkaW5nOiAzMHB4IDM1cHggMTBweDsKICAgIH0KfQoKLmZhcV9xdWVzdGlvbl93aWRnZXQgLmxpc3RfZGV0YWlscyB7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLmZhcV9xdWVzdGlvbl93aWRnZXQgLmxpc3RfZGV0YWlscyBsaSB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgouZmFxX3F1ZXN0aW9uX3dpZGdldCAubGlzdF9kZXRhaWxzIGxpIGEgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5mYXFfcXVlc3Rpb25fd2lkZ2V0IC5saXN0X2RldGFpbHMgbGkgYTpob3ZlciwKLmZhcV9xdWVzdGlvbl93aWRnZXQgLmxpc3RfZGV0YWlscyBsaSBhOmZvY3VzIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9Cgoud2lkZ2V0LWJhbm5lciB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Cgoud2lkZ2V0LWJhbm5lciAuYnRuIHsKICAgIGJvcmRlci13aWR0aDogMnB4Owp9Cgoud2lkZ2V0LWJhbm5lciAuaW1hZ2Utd3JhcHBlciBpbWcgewogICAgd2lkdGg6IGF1dG87Cn0KCi53aWRnZXQtYmFubmVyIC5iYW5uZXItY29udGVudCBpbWcgewogICAgbWFyZ2luOiAwOwp9Cgoud2lkZ2V0LWJhbm5lciAuZmxleC10b3AgLmJhbm5lci1pbWFnZSB7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWJhbm5lciAuZmxleC10b3AgLmJhbm5lci1pbWFnZSB7CiAgICAgICAgbWFyZ2luLXRvcDogMjVweDsKICAgIH0KfQoKLndpZGdldC1iYW5uZXIgLmZsZXgtdG9wIC5iYW5uZXItY29udGVudCB7CiAgICBtYXJnaW4tdG9wOiAyMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWJhbm5lciAuZmxleC10b3AgLmJhbm5lci1jb250ZW50IHsKICAgICAgICBtYXJnaW4tdG9wOiA0NXB4OwogICAgfQp9Cgoud2lkZ2V0LWJhbm5lci5zdHlsZTEgLmlubmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGhlaWdodDogMjAwcHg7Cn0KCi53aWRnZXQtYmFubmVyLnN0eWxlMSAuYmFubmVyLWltYWdlIGltZyB7CiAgICBtYXgtaGVpZ2h0OiAxNTBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldC1iYW5uZXIuc3R5bGUxIC5pbm5lciB7CiAgICAgICAgaGVpZ2h0OiA0NTBweDsKICAgIH0KICAgIC53aWRnZXQtYmFubmVyLnN0eWxlMSAuYmFubmVyLWltYWdlIGltZyB7CiAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7CiAgICB9Cn0KCi53aWRnZXQtYmFubmVyLnN0eWxlMSAuYnRuIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDUwJTsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIHotaW5kZXg6IDI7CiAgICBwYWRkaW5nOiA4cHggMjVweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtYmFubmVyLnN0eWxlMSAuYnRuIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICB9Cn0KCi53aWRnZXQtYmFubmVyLnN0eWxlMTpob3ZlciAuYnRuIHsKICAgIGJvdHRvbTogMzBweDsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLndpZGdldC1iYW5uZXIuc3R5bGUyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7Cn0KCi53aWRnZXQtYmFubmVyLnN0eWxlMiAuaW5uZXIgewogICAgaGVpZ2h0OiAxNTBweDsKfQoKLndpZGdldC1iYW5uZXIuc3R5bGUyIC5iYW5uZXItaW1hZ2UgaW1nIHsKICAgIG1heC1oZWlnaHQ6IDE4MHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWJhbm5lci5zdHlsZTIgLmlubmVyIHsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgfQogICAgLndpZGdldC1iYW5uZXIuc3R5bGUyIC5iYW5uZXItaW1hZ2UgaW1nIHsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgIH0KfQoKLndpZGdldC1iYW5uZXIuc3R5bGUyIC5iYW5uZXItY29udGVudCB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBjb2xvcjogIzI1MjUyNTsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KCi53aWRnZXQtYmFubmVyLnN0eWxlMiAuYmFubmVyLWNvbnRlbnQgc3Ryb25nIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBmb250LWZhbWlseTogIk51bml0byI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtYmFubmVyLnN0eWxlMiAuYmFubmVyLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIH0KfQoKLndpZGdldC1iYW5uZXIuc3R5bGUzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7Cn0KCi53aWRnZXQtYmFubmVyLnN0eWxlMyAuaW5uZXIgewogICAgaGVpZ2h0OiAyMDBweDsKfQoKLndpZGdldC1iYW5uZXIuc3R5bGUzIC5iYW5uZXItaW1hZ2UgaW1nIHsKICAgIG1heC1oZWlnaHQ6IDE4MHB4Owp9Cgoud2lkZ2V0LWJhbm5lci5zdHlsZTMgLmxpbmstYm90dG9tIHsKICAgIHBhZGRpbmctdG9wOiA1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtYmFubmVyLnN0eWxlMyAubGluay1ib3R0b20gewogICAgICAgIHBhZGRpbmctdG9wOiAxNXB4OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWJhbm5lci5zdHlsZTMgLmlubmVyIHsKICAgICAgICBoZWlnaHQ6IDI4NnB4OwogICAgfQogICAgLndpZGdldC1iYW5uZXIuc3R5bGUzIC5iYW5uZXItaW1hZ2UgaW1nIHsKICAgICAgICBtYXgtaGVpZ2h0OiAyNTBweDsKICAgIH0KfQoKLndpZGdldC1iYW5uZXIuc3R5bGUzIC5iYW5uZXItY29udGVudCB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBjb2xvcjogIzI1MjUyNTsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KCi53aWRnZXQtYmFubmVyLnN0eWxlMyAuYmFubmVyLWNvbnRlbnQgc3Ryb25nIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBmb250LWZhbWlseTogIk51bml0byI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtYmFubmVyLnN0eWxlMyAuYmFubmVyLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIH0KfQoKLndpZGdldC1iYW5uZXIuc3R5bGU0IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7Cn0KCi53aWRnZXQtYmFubmVyLnN0eWxlNCAuaW5uZXIgewogICAgaGVpZ2h0OiAxMjBweDsKfQoKLndpZGdldC1iYW5uZXIuc3R5bGU0IC5iYW5uZXItaW1hZ2UgaW1nIHsKICAgIG1heC1oZWlnaHQ6IDEwMHB4Owp9Cgoud2lkZ2V0LWJhbm5lci5zdHlsZTQgLmxpbmstYm90dG9tIHsKICAgIHBhZGRpbmctdG9wOiA1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtYmFubmVyLnN0eWxlNCAuaW5uZXIgewogICAgICAgIGhlaWdodDogMTgwcHg7CiAgICB9CiAgICAud2lkZ2V0LWJhbm5lci5zdHlsZTQgLmJhbm5lci1pbWFnZSBpbWcgewogICAgICAgIG1heC1oZWlnaHQ6IDE1MHB4OwogICAgfQp9Cgoud2lkZ2V0LWJhbm5lci5zdHlsZTQgLmJhbm5lci1jb250ZW50IHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjMjUyNTI1OwogICAgbGluZS1oZWlnaHQ6IDEuMjsKfQoKLndpZGdldC1iYW5uZXIuc3R5bGU0IC5iYW5uZXItY29udGVudCBzdHJvbmcgewogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldC1iYW5uZXIuc3R5bGU0IC5iYW5uZXItY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgfQp9Cgoud2lkZ2V0LWJhbm5lci5zdHlsZTQgLmJ0biB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBwYWRkaW5nOiA2cHggMjVweDsKfQoKLndpZGdldC1uYXYtbWVudSAubWVudSBsaSB7CiAgICBtYXJnaW46IDAgMCAxMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLndpZGdldC1uYXYtbWVudSAubWVudSBsaT5hIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9Cgoud2lkZ2V0LW5hdi1tZW51IC5tZW51IGxpOmhvdmVyPmEsCi53aWRnZXQtbmF2LW1lbnUgLm1lbnUgbGkuY3VycmVudC1jYXQtcGFyZW50PmEsCi53aWRnZXQtbmF2LW1lbnUgLm1lbnUgbGkuY3VycmVudC1jYXQ+YSB7CiAgICBwYWRkaW5nLWxlZnQ6IDZweDsKfQoKLnJ0bCAud2lkZ2V0LW5hdi1tZW51IC5tZW51IGxpOmhvdmVyPmEsCi5ydGwgLndpZGdldC1uYXYtbWVudSAubWVudSBsaS5jdXJyZW50LWNhdC1wYXJlbnQ+YSwKLnJ0bCAud2lkZ2V0LW5hdi1tZW51IC5tZW51IGxpLmN1cnJlbnQtY2F0PmEgewogICAgcGFkZGluZy1yaWdodDogNnB4OwogICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0Owp9Cgoud2lkZ2V0LW5hdi1tZW51IC5tZW51IGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luOiAwOwp9Cgoud2lkZ2V0LW5hdi1tZW51LnN0X2xpbmUgLm1lbnUgbGkgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCi5ydGwgLndpZGdldC1uYXYtbWVudS5zdF9saW5lIC5tZW51IGxpIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud2lkZ2V0LW5hdi1tZW51LnN0X2xpbmUgLm1lbnUgbGkgYSB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtbmF2LW1lbnUuc3RfbGluZSAubWVudSBsaSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyNXB4OwogICAgfQogICAgLnJ0bCAud2lkZ2V0LW5hdi1tZW51LnN0X2xpbmUgLm1lbnUgbGkgewogICAgICAgIG1hcmdpbi1sZWZ0OiAyNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLndpZGdldC1uYXYtbWVudS5zdF9saW5lIC5tZW51IGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwcHg7Cn0KCi5ydGwgLndpZGdldC1uYXYtbWVudS5zdF9saW5lIC5tZW51IGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWxlZnQ6IDBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLndpZGdldC1uYXYtbWVudS5zdF9pY29uIGxpIGEgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9Cgoud2lkZ2V0LW5hdi1tZW51LnN0X2ljb24gbGkgYTpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJzsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBjb250ZW50OiAiXGYwZGEiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9CgoucnRsIC53aWRnZXQtbmF2LW1lbnUuc3RfaWNvbiBsaSBhOmJlZm9yZSB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLndpZGdldC1tYWlsY2hpbXAgW3R5cGU9ImVtYWlsIl0gewogICAgaGVpZ2h0OiA1MHB4OwogICAgcGFkZGluZzogNXB4IDMwcHg7CiAgICBib3JkZXI6IDA7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNjVweCk7CiAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MHB4Owp9Cgoud2lkZ2V0LW1haWxjaGltcCBbdHlwZT0iZW1haWwiXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAvKiBFZGdlICovCiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi53aWRnZXQtbWFpbGNoaW1wIFt0eXBlPSJlbWFpbCJdOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAvKiBJbnRlcm5ldCBFeHBsb3JlciAxMC0xMSAqLwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9Cgoud2lkZ2V0LW1haWxjaGltcCBbdHlwZT0iZW1haWwiXTo6cGxhY2Vob2xkZXIgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9Cgoud2lkZ2V0LW1haWxjaGltcCBbdHlwZT0ic3VibWl0Il0gewogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBib3JkZXI6IDA7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgoucnRsIC53aWRnZXQtbWFpbGNoaW1wIFt0eXBlPSJzdWJtaXQiXSB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLndpZGdldC1tYWlsY2hpbXAgLm1jNHdwLWVycm9yIHsKICAgIGNvbG9yOiAjZTQ0MzQzOwp9Cgoud2lkZ2V0LWJyYW5kIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLndpZGdldC1icmFuZCAuc2xpY2stc2xpZGUgaW1nIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9Cgoud2lkZ2V0LWJyYW5kOmhvdmVyIGltZyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDAuOSk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDAuOSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7Cn0KCi53aWRnZXQtYnJhbmQ6aG92ZXIgaW1nOmhvdmVyLAoud2lkZ2V0LWJyYW5kOmhvdmVyIGltZzpmb2N1cyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwp9CgouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgIHBhZGRpbmc6IDEwcHggMCAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgICAgICBwYWRkaW5nOiAyMHB4IDAgMTBweDsKICAgIH0KfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItY29udGVudCBwOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci1hY2NvcmRpb24taXRlbSB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLWFjY29yZGlvbi1pdGVtOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUgewogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgouZWxlbWVudG9yLWFjY29yZGlvbiAuZWxlbWVudG9yLXRhYi10aXRsZS5lbGVtZW50b3ItYWN0aXZlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZjVhNWYgIWltcG9ydGFudDsKfQoKLmVsZW1lbnRvci1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItdGl0bGUuZWxlbWVudG9yLWFjdGl2ZSBhIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9Cgoud29ya3MgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIG1hcmdpbjogMCAwIDEwcHg7Cn0KCi53b3JrcyAubGVmdC1pbm5lciB7CiAgICBtYXJnaW4tcmlnaHQ6IDI1cHg7Cn0KCi5ydGwgLndvcmtzIC5sZWZ0LWlubmVyIHsKICAgIG1hcmdpbi1sZWZ0OiAyNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud29ya3MgLm51bWJlciB7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogICAgd2lkdGg6IDMwcHg7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBsaW5lLWhlaWdodDogMzBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi53b3Jrcy50ZXh0LXJpZ2h0IHsKICAgIGRpcmVjdGlvbjogcnRsOwp9Cgoud29ya3MudGV4dC1yaWdodCAubGVmdC1pbm5lciB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKfQoKLnJ0bCAud29ya3MudGV4dC1yaWdodCAubGVmdC1pbm5lciB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnJ0bCAud29ya3MudGV4dC1yaWdodCAubGVmdC1pbm5lciB7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLm5vLXNwYWNlIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9Cgoubm8tc3BhY2U+LmFwdXMtY29udGFpbmVyPi52Y19mbHVpZCB7CiAgICBwYWRkaW5nOiAwOwp9Cgoubm8tc3BhY2UgLnJvdyB7CiAgICBtYXJnaW46IDA7Cn0KCi5uby1zcGFjZSAucm93PltjbGFzcyo9ImNvbCJdIHsKICAgIHBhZGRpbmc6IDA7Cn0KCi5zcGFjZS00NSB7CiAgICBtYXJnaW4tYm90dG9tOiA0NXB4Owp9Cgoubm8tbWFyZ2luIC53aWRnZXQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmJnLXdoaXRlIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7Cn0KCi5iZy10cmFuc3BhcmVudCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC5zcGFjZS1wYWRkaW5nLWxyLTEwMCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMDBweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMDBweDsKICAgIH0KICAgIC5zcGFjZS1wYWRkaW5nLWxyLTgwIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDgwcHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogODBweDsKICAgIH0KICAgIC5zcGFjZS1ybC01MCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA1MHB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDUwcHg7CiAgICB9CiAgICAuc3BhY2UtbC02NSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA2NXB4OwogICAgfQogICAgLnRvcC0xNzAgewogICAgICAgIG1hcmdpbi10b3A6IC0xNzBweDsKICAgIH0KICAgIC5sZWZ0LTEwMCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMDBweDsKICAgIH0KICAgIC5zcGFjZS1sZWZ0LTQ1IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDQ1cHg7CiAgICB9CiAgICAucmlnaHQtMzAgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7CiAgICB9CiAgICAucnRsIC5yaWdodC0zMCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7CiAgICB9CiAgICAucGFkZGluZy1sci02MCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA2MHB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7CiAgICB9CiAgICAucGFkZGluZy1sci00NSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA0NXB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDQ1cHg7CiAgICB9CiAgICAucGFkZGluZy1sci01NSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA1NXB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDU1cHg7CiAgICB9CiAgICAucGFkZGluZy1sci0yNSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAyNXB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDI1cHg7CiAgICB9CiAgICAuc3BhY2UtYm9yZGVyIC5yb3cgewogICAgICAgIG1hcmdpbjogMDsKICAgIH0KICAgIC5zcGFjZS1ib3JkZXIgLnJvdz5bY2xhc3MqPSJjb2wiXSB7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2ViZWJlYjsKICAgIH0KICAgIC5ydGwgLnNwYWNlLWJvcmRlciAucm93PltjbGFzcyo9ImNvbCJdIHsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlYmViZWI7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiBpbmhlcml0OwogICAgfQogICAgLnNwYWNlLWJvcmRlciAucm93PltjbGFzcyo9ImNvbCJdOmxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlcjogbm9uZTsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnBhZGRpbmctbHItMTUgewogICAgICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgfQogICAgLnNwYWNlLXBhZGRpbmctbGctMzAgewogICAgICAgIHBhZGRpbmc6IDMwcHggIWltcG9ydGFudDsKICAgIH0KICAgIC5zcGFjZS1tZC0zMCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweCAhaW1wb3J0YW50OwogICAgfQogICAgLmxnLTI4IHsKICAgICAgICB3aWR0aDogMzAlOwogICAgfQogICAgLmxnLTcyIHsKICAgICAgICB3aWR0aDogNzAlOwogICAgfQogICAgLmZsZXgtbGcgewogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDExOTlweCkgewogICAgLnNwYWNlLXBhZGRpbmcteHMtMTUgewogICAgICAgIHBhZGRpbmc6IDE1cHggIWltcG9ydGFudDsKICAgIH0KfQoKLmZsb3ctaGlkZGVuIHsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5zdHlsZS13aGl0ZSB7CiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Cgouc3R5bGUtd2hpdGUgLndpZGdldC10aXRsZSB7CiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXRvcC10aGVtZSB7CiAgICBib3JkZXItdG9wOiAzcHggc29saWQgI2ZmNWE1ZjsKfQoKLmZvbnQtc2l6ZS0zNiB7CiAgICBmb250LXNpemU6IDM2cHggIWltcG9ydGFudDsKfQoKLmZvbnQtc2l6ZS0zMCB7CiAgICBmb250LXNpemU6IDMwcHggIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LTQwMCB7CiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7Cn0KCi53ZWlnaHQtbm9ybWFsIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDsKfQoKLmZvbnQtMTQgewogICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7Cn0KCi5zcGFjZS1sZWZ0LTggewogICAgbWFyZ2luLWxlZnQ6IDhweDsKfQoKLnJ0bCAuc3BhY2UtbGVmdC04IHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi50ZXh0LXVwcGVyIHsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQoKLnNwYWNlLTEwIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHggIWltcG9ydGFudDsKfQoKLnNwYWNlLTE1IHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsKfQoKLnNwYWNlLTIwIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHggIWltcG9ydGFudDsKfQoKLnNwYWNlLTI1IHsKICAgIG1hcmdpbi1ib3R0b206IDI1cHggIWltcG9ydGFudDsKfQoKLnNwYWNlLTMwIHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnNwYWNlLTMwIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4ICFpbXBvcnRhbnQ7CiAgICB9Cn0KCi5zcGFjZS01MCB7CiAgICBtYXJnaW4tYm90dG9tOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5zcGFjZS1wYWRkaW5nLTM1IHsKICAgIHBhZGRpbmc6IDM1cHggMCAhaW1wb3J0YW50Owp9Cgouc3BhY2UtcGFkZGluZy10Yi05MCB7CiAgICBwYWRkaW5nLXRvcDogOTBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1ib3R0b206IDkwcHggIWltcG9ydGFudDsKfQoKLnNwYWNlLXBhZGRpbmctdGItNTUgewogICAgcGFkZGluZy10b3A6IDU1cHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctYm90dG9tOiA1NXB4ICFpbXBvcnRhbnQ7Cn0KCi5zcGFjZS10b3AtMCB7CiAgICBtYXJnaW4tdG9wOiAwOwp9Cgouc3BhY2UtbGVmdC0xMiB7CiAgICBtYXJnaW4tbGVmdDogMTJweDsKfQoKLnJ0bCAuc3BhY2UtbGVmdC0xMiB7CiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLnAtcmVsYXRpdmUgewogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7Cn0KCi5wLWFic29sdXRlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50Owp9CgoucC1zdGF0aWMgewogICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9CgouaHIgewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlYmViZWI7CiAgICBtaW4taGVpZ2h0OiAxcHg7CiAgICB3aWR0aDogMTAwJTsKfQoKLm5vLWZsb2F0IHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5uby1wYWRkaW5nLWxlZnQgewogICAgcGFkZGluZy1sZWZ0OiAwOwp9CgoucnRsIC5uby1wYWRkaW5nLWxlZnQgewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLm5vLXBhZGRpbmctcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMDsKfQoKLnJ0bCAubm8tcGFkZGluZy1yaWdodCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7CiAgICAucGFkZGluZy1sci0zNSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAzNXB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDM1cHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5ndXR0ZXItNTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiAtMjVweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IC0yNXB4OwogICAgfQogICAgLmd1dHRlci01MCAudmNfY29sdW1uX2NvbnRhaW5lcj4udmNfY29sdW1uLWlubmVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogMjVweDsKICAgIH0KICAgIC5ndXR0ZXItNTAgLnZjX3JvdywKICAgIC5ndXR0ZXItNTAgLnJvdyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0yNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogLTI1cHg7CiAgICB9Cn0KCi50ZXh0LXRoZW1lIHsKICAgIGNvbG9yOiAjZmY1YTVmICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlIHsKICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi5iZy10aGVtZSB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwp9CgouYm9yZGVyLXRoZW1lIHsKICAgIGJvcmRlci1jb2xvcjogI2ZmNWE1ZjsKfQoKLnJhZGl1cy0zeCB7CiAgICBib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4ICFpbXBvcnRhbnQ7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50OwogICAgLW8tYm9yZGVyLXJhZGl1czogM3B4ICFpbXBvcnRhbnQ7Cn0KCi5yYWRpdXMtNTAgewogICAgYm9yZGVyLXJhZGl1czogNTBweCAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwcHggIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5kZWxldGVkX3dwYl9zaW5nbGVfaW1hZ2UgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmRlbGV0ZWRfd3BiX3NpbmdsZV9pbWFnZTpiZWZvcmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogMjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgY29udGVudDogJyc7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKfQoKLmRlbGV0ZWRfd3BiX3NpbmdsZV9pbWFnZTphZnRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGNvbnRlbnQ6ICcnOwogICAgdG9wOiAzMHB4OwogICAgbGVmdDogMzBweDsKICAgIHJpZ2h0OiAzMHB4OwogICAgYm90dG9tOiAzMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICAgIHotaW5kZXg6IDM7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwp9CgouZGVsZXRlZF93cGJfc2luZ2xlX2ltYWdlOmhvdmVyOmJlZm9yZSB7CiAgICBvcGFjaXR5OiAwLjU7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NTApOwp9CgouZGVsZXRlZF93cGJfc2luZ2xlX2ltYWdlOmhvdmVyOmFmdGVyIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7Cn0KCi53aWRnZXQtdGVhbSB7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLndpZGdldC10ZWFtIC5jb250ZW50IHsKICAgIHBhZGRpbmc6IDIwcHggMzBweDsKfQoKLndpZGdldC10ZWFtIC5uYW1lLXRlYW0gewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWFyZ2luOiA1cHggMCAwOwp9Cgoud2lkZ2V0LXRlYW0gLnNvY2lhbCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiAzOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDAgMzBweCAyMHB4OwogICAgbWFyZ2luOiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LXRlYW0gLnNvY2lhbCB7CiAgICAgICAgcGFkZGluZzogMCAzMHB4IDMwcHg7CiAgICB9Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybisxKSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuMXM7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuMXM7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybisyKSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuMnM7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuMnM7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybiszKSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuM3M7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuM3M7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybis0KSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuNHM7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuNHM7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybis1KSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuNXM7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuNXM7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybis2KSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuNnM7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuNnM7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybis3KSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuN3M7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuN3M7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybis4KSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuOHM7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuOHM7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybis5KSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDAuOXM7CiAgICAvKiBTYWZhcmkgKi8KICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuOXM7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpOm50aC1jaGlsZCgybisxMCkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAxczsKICAgIC8qIFNhZmFyaSAqLwogICAgdHJhbnNpdGlvbi1kZWxheTogMXM7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKfQoKLnJ0bCAud2lkZ2V0LXRlYW0gLnNvY2lhbCBsaSB7CiAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud2lkZ2V0LXRlYW0gLnNvY2lhbCBsaSBhIHsKICAgIHdpZHRoOiAzMnB4OwogICAgaGVpZ2h0OiAzMnB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIGE6YmVmb3JlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIGE6aG92ZXIsCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIGE6Zm9jdXMgewogICAgYmFja2dyb3VuZDogI2ZmMzEzNzsKfQoKLndpZGdldC10ZWFtIC5zb2NpYWwgbGkgYVtjbGFzcyo9ImZhY2Vib29rIl0gewogICAgYmFja2dyb3VuZDogIzNiNTk5ODsKfQoKLndpZGdldC10ZWFtIC5zb2NpYWwgbGkgYVtjbGFzcyo9ImZhY2Vib29rIl06aG92ZXIsCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIGFbY2xhc3MqPSJmYWNlYm9vayJdOmZvY3VzIHsKICAgIGJhY2tncm91bmQ6ICMzMDQ4N2I7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIGFbY2xhc3MqPSJ0d2l0dGVyIl0gewogICAgYmFja2dyb3VuZDogIzAwYWNlZTsKfQoKLndpZGdldC10ZWFtIC5zb2NpYWwgbGkgYVtjbGFzcyo9InR3aXR0ZXIiXTpob3ZlciwKLndpZGdldC10ZWFtIC5zb2NpYWwgbGkgYVtjbGFzcyo9InR3aXR0ZXIiXTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kOiAjMDA4ZmM1Owp9Cgoud2lkZ2V0LXRlYW0gLnNvY2lhbCBsaSBhW2NsYXNzKj0ibGlua2VkaW4iXSB7CiAgICBiYWNrZ3JvdW5kOiAjMDA3N2I1Owp9Cgoud2lkZ2V0LXRlYW0gLnNvY2lhbCBsaSBhW2NsYXNzKj0ibGlua2VkaW4iXTpob3ZlciwKLndpZGdldC10ZWFtIC5zb2NpYWwgbGkgYVtjbGFzcyo9ImxpbmtlZGluIl06Zm9jdXMgewogICAgYmFja2dyb3VuZDogIzAwNWM4YzsKfQoKLndpZGdldC10ZWFtIC5zb2NpYWwgbGkgYVtjbGFzcyo9Imdvb2dsZSJdIHsKICAgIGJhY2tncm91bmQ6ICNkMzQ4MzY7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIGFbY2xhc3MqPSJnb29nbGUiXTpob3ZlciwKLndpZGdldC10ZWFtIC5zb2NpYWwgbGkgYVtjbGFzcyo9Imdvb2dsZSJdOmZvY3VzIHsKICAgIGJhY2tncm91bmQ6ICNiODM5Mjg7Cn0KCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIGFbY2xhc3MqPSJwaW50ZXJlc3QiXSB7CiAgICBiYWNrZ3JvdW5kOiAjYzQzMDJiOwp9Cgoud2lkZ2V0LXRlYW0gLnNvY2lhbCBsaSBhW2NsYXNzKj0icGludGVyZXN0Il06aG92ZXIsCi53aWRnZXQtdGVhbSAuc29jaWFsIGxpIGFbY2xhc3MqPSJwaW50ZXJlc3QiXTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kOiAjYTMyODI0Owp9Cgoud2lkZ2V0LXRlYW0gLnRlYW0taXRlbSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Cgoud2lkZ2V0LXRlYW06aG92ZXIgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMzBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgIGJveC1zaGFkb3c6IDAgMCAzMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwp9Cgoud2lkZ2V0LXRlYW06aG92ZXIgLnNvY2lhbCBsaSB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwp9Cgoud2lkZ2V0X2FwdXNfdmVydGljYWxfbWVudSB7CiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkICMyZTJkMmQ7Cn0KCi53aWRnZXRfYXB1c192ZXJ0aWNhbF9tZW51IC53aWRnZXQtdGl0bGUgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIG1hcmdpbjogMCAwIDEwcHg7CiAgICBwYWRkaW5nOiAxNXB4IDMwcHggMDsKfQoKLnJ0bCAud2lkZ2V0X2FwdXNfdmVydGljYWxfbWVudSB7CiAgICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCAjMmUyZDJkOwogICAgYm9yZGVyLWxlZnQ6IGluaGVyaXQ7Cn0KCi53aWRnZXRfYXB1c192ZXJ0aWNhbF9tZW51IC5hcHVzLXZlcnRpY2FsLW1lbnUgewogICAgYm9yZGVyOiBub25lOwp9Cgoud2lkZ2V0X2FwdXNfdmVydGljYWxfbWVudSAuYXB1cy12ZXJ0aWNhbC1tZW51PmxpIHsKICAgIG1hcmdpbi1sZWZ0OiAtNHB4Owp9CgoucnRsIC53aWRnZXRfYXB1c192ZXJ0aWNhbF9tZW51IC5hcHVzLXZlcnRpY2FsLW1lbnU+bGkgewogICAgbWFyZ2luLXJpZ2h0OiAtNHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi53aWRnZXRfYXB1c192ZXJ0aWNhbF9tZW51IC5hcHVzLXZlcnRpY2FsLW1lbnU+bGk+YSB7CiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgZm9udC1zaXplOiAxNnB4OwogICAgcGFkZGluZzogMCAzMHB4Owp9CgoucnRsIC53aWRnZXRfYXB1c192ZXJ0aWNhbF9tZW51IC5hcHVzLXZlcnRpY2FsLW1lbnU+bGk+YSB7CiAgICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1sZWZ0OiBpbmhlcml0Owp9Cgoud2lkZ2V0X2FwdXNfdmVydGljYWxfbWVudSAuYXB1cy12ZXJ0aWNhbC1tZW51PmxpLmFjdGl2ZT5hLAoud2lkZ2V0X2FwdXNfdmVydGljYWxfbWVudSAuYXB1cy12ZXJ0aWNhbC1tZW51PmxpOmhvdmVyPmEgewogICAgYm9yZGVyLWNvbG9yOiAjZmY1YTVmOwp9Cgoud2lkZ2V0X2FwdXNfdmVydGljYWxfbWVudS5kYXJrZW4gLmFwdXMtdmVydGljYWwtbWVudSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLndpZGdldF9hcHVzX3ZlcnRpY2FsX21lbnUuZGFya2VuIC5hcHVzLXZlcnRpY2FsLW1lbnU+bGk+YSB7CiAgICBjb2xvcjogI2VlZWFlMjsKICAgIHBhZGRpbmc6IDAgMjBweDsKfQoKLndpZGdldF9hcHVzX3ZlcnRpY2FsX21lbnUuZGFya2VuIC5hcHVzLXZlcnRpY2FsLW1lbnU+bGkuYWN0aXZlPmEsCi53aWRnZXRfYXB1c192ZXJ0aWNhbF9tZW51LmRhcmtlbiAuYXB1cy12ZXJ0aWNhbC1tZW51PmxpOmhvdmVyPmEgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi53aWRnZXRfYXB1c192ZXJ0aWNhbF9tZW51LmRhcmtlbiAud2lkZ2V0LXRpdGxlIHsKICAgIGNvbG9yOiAjZWVlYWUyOwogICAgYm9yZGVyOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZy1yaWdodDogMjBweDsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKfQoKLndpZGdldF9hcHVzX3ZlcnRpY2FsX21lbnUuZGFya2VuIC53aWRnZXQtdGl0bGU6YmVmb3JlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi50YWJzLXYxIC5uYXYtdGFicyB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAvKiBTYWZhcmkgKi8KICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtbXMtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi50YWJzLXYxIC5uYXYtdGFiczpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAtMzBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7CiAgICB3aWR0aDogY2FsYygxMDAlICsgNjBweCk7CiAgICBoZWlnaHQ6IDFweDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAudGFicy12MSAubmF2LXRhYnM6YmVmb3JlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQp9CgoudGFicy12MSAubmF2LXRhYnM+bGkgewogICAgZmxvYXQ6IG5vbmU7CiAgICBtYXJnaW46IDAgMjhweCAwICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50YWJzLXYxIC5uYXYtdGFicz5saSB7CiAgICAgICAgbWFyZ2luOiAwIDE1cHggMCAhaW1wb3J0YW50OwogICAgfQp9CgoudGFicy12MSAubmF2LXRhYnM+bGk+YSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBwYWRkaW5nOiAwIDAgMTBweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBtYXJnaW46IDA7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnRhYnMtdjEgLm5hdi10YWJzPmxpPmEgewogICAgICAgIHBhZGRpbmc6IDAgMCAxOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgIH0KfQoKLnRhYnMtdjEgLm5hdi10YWJzPmxpPmE6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHotaW5kZXg6IDI7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMXB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAsIDEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCwgMSk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDAsIDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwp9CgoucnRsIC50YWJzLXYxIC5uYXYtdGFicz5saT5hOmJlZm9yZSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCi50YWJzLXYxIC5uYXYtdGFicz5saTpmaXJzdC1jaGlsZD5hIHsKICAgIHBhZGRpbmctbGVmdDogMDsKfQoKLnJ0bCAudGFicy12MSAubmF2LXRhYnM+bGk6Zmlyc3QtY2hpbGQ+YSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0Owp9CgoudGFicy12MSAubmF2LXRhYnM+bGkuYWN0aXZlPmEgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi50YWJzLXYxIC5uYXYtdGFicz5saS5hY3RpdmU+YTpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSwgMSk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKfQoKLnRhYnMtdjEgLnRhYi1jb250ZW50IHsKICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICBtYXgtd2lkdGg6IDczMHB4OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50YWJzLXYxIC50YWItY29udGVudCB7CiAgICAgICAgbWFyZ2luLXRvcDogMjVweDsKICAgIH0KfQoKLnRhYnMtdjEgLnRhYi1jb250ZW50IGgyIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1hcmdpbjogMCAwIDEwcHg7Cn0KCi5uYXYudGFicy1wcm9kdWN0IHsKICAgIGJvcmRlcjogbm9uZTsKfQoKLm5hdi50YWJzLXByb2R1Y3QuaGFzLWJvcmRlciB7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKfQoKLm5hdi50YWJzLXByb2R1Y3QuaGFzLWJvcmRlcj5saSB7CiAgICBtYXJnaW4tYm90dG9tOiAtMnB4Owp9CgoubmF2LnRhYnMtcHJvZHVjdD5saSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5uYXYudGFicy1wcm9kdWN0PmxpPmEgewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogMCAwIDhweDsKfQoKLm5hdi50YWJzLXByb2R1Y3Q+bGk+YTpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDNweDsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7Cn0KCi5uYXYudGFicy1wcm9kdWN0PmxpLmFjdGl2ZT5hLAoubmF2LnRhYnMtcHJvZHVjdD5saS5hY3RpdmU+YTpob3ZlciwKLm5hdi50YWJzLXByb2R1Y3Q+bGkuYWN0aXZlPmE6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5uYXYudGFicy1wcm9kdWN0PmxpLmFjdGl2ZT5hOmJlZm9yZSwKLm5hdi50YWJzLXByb2R1Y3Q+bGkuYWN0aXZlPmE6aG92ZXI6YmVmb3JlLAoubmF2LnRhYnMtcHJvZHVjdD5saS5hY3RpdmU+YTpmb2N1czpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKfQoKLm5hdi50YWJzLXByb2R1Y3QuY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDI1cHg7Cn0KCi5uYXYudGFicy1wcm9kdWN0LmNlbnRlcj5saSB7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLm5hdi50YWJzLXByb2R1Y3QuY2VudGVyPmxpIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5uYXYudGFicy1wcm9kdWN0LmNlbnRlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzVweDsKICAgIH0KfQoKLm5hdi50YWJzLXByb2R1Y3QucmlnaHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5uYXYudGFicy1wcm9kdWN0LnJpZ2h0PmxpIHsKICAgIG1hcmdpbi1yaWdodDogMjBweDsKfQoKLnJ0bCAubmF2LnRhYnMtcHJvZHVjdC5yaWdodD5saSB7CiAgICBtYXJnaW4tbGVmdDogMjBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLm5hdi50YWJzLXByb2R1Y3QucmlnaHQ+bGkgewogICAgICAgIG1hcmdpbi1yaWdodDogNDBweDsKICAgIH0KICAgIC5ydGwgLm5hdi50YWJzLXByb2R1Y3QucmlnaHQ+bGkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA0MHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLm5hdi50YWJzLXByb2R1Y3QucmlnaHQ+bGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5ydGwgLm5hdi50YWJzLXByb2R1Y3QucmlnaHQ+bGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLm5hdi50YWJzLXByb2R1Y3QubGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgoubmF2LnRhYnMtcHJvZHVjdC5sZWZ0PmxpIHsKICAgIG1hcmdpbi1sZWZ0OiAyMHB4Owp9CgoucnRsIC5uYXYudGFicy1wcm9kdWN0LmxlZnQ+bGkgewogICAgbWFyZ2luLXJpZ2h0OiAyMHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5uYXYudGFicy1wcm9kdWN0LmxlZnQ+bGkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1MHB4OwogICAgfQogICAgLnJ0bCAubmF2LnRhYnMtcHJvZHVjdC5sZWZ0PmxpIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDUwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9Cn0KCi5uYXYudGFicy1wcm9kdWN0LmxlZnQ+bGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLnJ0bCAubmF2LnRhYnMtcHJvZHVjdC5sZWZ0PmxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5mbGV4IHsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIC8qIFNhZmFyaSAqLwogICAgZGlzcGxheTogZmxleDsKfQoKLmZsZXggLmFsaS1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKfQoKLnJ0bCAuZmxleCAuYWxpLXJpZ2h0IHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouZmxleCAuYWxpLWxlZnQgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgoucnRsIC5mbGV4IC5hbGktbGVmdCB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuZmxleC1zbSB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIC8qIFNhZmFyaSAqLwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICB9CiAgICAuZmxleC1zbSAuYWxpLXJpZ2h0IHsKICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIH0KICAgIC5ydGwgLmZsZXgtc20gLmFsaS1yaWdodCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgfQogICAgLmZsZXgtc20gLmFsaS1sZWZ0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5mbGV4LXNtIC5hbGktbGVmdCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQogICAgLmp1c3RpZnktY29udGVudC1lbmQtc20gewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICAgIH0KICAgIC5qdXN0aWZ5LWNvbnRlbnQtZW5kLXNtIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQgIWltcG9ydGFudDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgICAuZmxleC1ib3R0b20taW4tc20gewogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICAvKiBTYWZhcmkgKi8KICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgICAvKiBTYWZhcmkgNy4wKyAqLwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgfQp9CgouZmxleC13cmFwIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKfQoKLmZsZXgtY29sdW1uIHsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWwgIWltcG9ydGFudDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LXdlYmtpdC1kaXJlY3Rpb246IG5vcm1hbCAhaW1wb3J0YW50OwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50Owp9CgouYWxpZ24taXRlbXMtZW5kIHsKICAgIC13ZWJraXQtYm94LWFsaWduOiBlbmQgIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24taXRlbXMtc3RhcnQgewogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50Owp9CgouanVzdGlmeS1jb250ZW50LWJldHdlZW4gewogICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwogICAgLW1zLWZsZXgtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LW1pZGRsZSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAvKiBTYWZhcmkgKi8KICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC8qIFNhZmFyaSA3LjArICovCiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmZsZXgtbWlkZGxlIC5hbGktcmlnaHQgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5ydGwgLmZsZXgtbWlkZGxlIC5hbGktcmlnaHQgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5mbGV4LW1pZGRsZSAuYWxpLWxlZnQgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgoucnRsIC5mbGV4LW1pZGRsZSAuYWxpLWxlZnQgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5mbGV4LWJvdHRvbSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAvKiBTYWZhcmkgKi8KICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgLyogU2FmYXJpIDcuMCsgKi8KICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7Cn0KCi5mbGV4LWJvdHRvbSAuYWxpLXJpZ2h0IHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgoucnRsIC5mbGV4LWJvdHRvbSAuYWxpLXJpZ2h0IHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouZmxleC1ib3R0b20gLmFsaS1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnJ0bCAuZmxleC1ib3R0b20gLmFsaS1sZWZ0IHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouZmxleC1lbmQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKfQoKLmZsZXgtdG9wIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIC8qIFNhZmFyaSAqLwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIC8qIFNhZmFyaSA3LjArICovCiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Cn0KCi5mbGV4LXRvcCAuYWxpLXJpZ2h0IHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgoucnRsIC5mbGV4LXRvcCAuYWxpLXJpZ2h0IHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouZmxleC10b3AgLmFsaS1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnJ0bCAuZmxleC10b3AgLmFsaS1sZWZ0IHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuZmxleC1lbmQtbGcgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgfQogICAgLmZsZXgtdG9wLWxnIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAgICAgLyogU2FmYXJpICovCiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICAvKiBTYWZhcmkgNy4wKyAqLwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICB9CiAgICAuZmxleC10b3AtbGcgLmFsaS1yaWdodCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5mbGV4LXRvcC1sZyAuYWxpLXJpZ2h0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9CiAgICAuZmxleC10b3AtbGcgLmFsaS1sZWZ0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5mbGV4LXRvcC1sZyAuYWxpLWxlZnQgewogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KICAgIC5mbGV4LW1pZGRsZS1sZyB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIC8qIFNhZmFyaSAqLwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAvKiBTYWZhcmkgNy4wKyAqLwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KICAgIC5mbGV4LW1pZGRsZS1sZyAuYWxpLXJpZ2h0IHsKICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIH0KICAgIC5ydGwgLmZsZXgtbWlkZGxlLWxnIC5hbGktcmlnaHQgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgIH0KICAgIC5mbGV4LW1pZGRsZS1sZyAuYWxpLWxlZnQgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIH0KICAgIC5ydGwgLmZsZXgtbWlkZGxlLWxnIC5hbGktbGVmdCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQogICAgLmp1c3RpZnktY29udGVudC1lbmQtbGcgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICAgIH0KICAgIC5qdXN0aWZ5LWNvbnRlbnQtZW5kLWxnIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQgIWltcG9ydGFudDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkgewogICAgLmZsZXgtbWlkZGxlLW1kIHsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAgICAgLyogU2FmYXJpICovCiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIC8qIFNhZmFyaSA3LjArICovCiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgfQogICAgLmZsZXgtbWlkZGxlLW1kIC5hbGktcmlnaHQgewogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgfQogICAgLnJ0bCAuZmxleC1taWRkbGUtbWQgLmFsaS1yaWdodCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgfQogICAgLmZsZXgtbWlkZGxlLW1kIC5hbGktbGVmdCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgfQogICAgLnJ0bCAuZmxleC1taWRkbGUtbWQgLmFsaS1sZWZ0IHsKICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9CiAgICAuanVzdGlmeS1jb250ZW50LWVuZC1tZCB7CiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogICAgfQogICAgLmp1c3RpZnktY29udGVudC1lbmQtbWQgewogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuZmxleC1taWRkbGUtc20gewogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICAvKiBTYWZhcmkgKi8KICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgLyogU2FmYXJpIDcuMCsgKi8KICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB9CiAgICAuZmxleC1taWRkbGUtc20gLmFsaS1yaWdodCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5mbGV4LW1pZGRsZS1zbSAuYWxpLXJpZ2h0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9CiAgICAuZmxleC1taWRkbGUtc20gLmFsaS1sZWZ0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5mbGV4LW1pZGRsZS1zbSAuYWxpLWxlZnQgewogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KICAgIC5mbGV4LWJvdHRvbS1zbSB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIC8qIFNhZmFyaSAqLwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIC8qIFNhZmFyaSA3LjArICovCiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICB9CiAgICAuZmxleC1ib3R0b20tc20gLmFsaS1yaWdodCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5mbGV4LWJvdHRvbS1zbSAuYWxpLXJpZ2h0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9CiAgICAuZmxleC1ib3R0b20tc20gLmFsaS1sZWZ0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5mbGV4LWJvdHRvbS1zbSAuYWxpLWxlZnQgewogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLmNsLTMsCi5jbC0yIHsKICAgIGZsb2F0OiBsZWZ0Owp9CgoucnRsIC5jbC0zLAoucnRsIC5jbC0yIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLmNsLTM+LnJvdywKLmNsLTI+LnJvdyB7CiAgICBtYXJnaW46IDA7Cn0KCi5jbC0zIC53aWRnZXQsCi5jbC0yIC53aWRnZXQgewogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKfQoKLmNsLTMgewogICAgd2lkdGg6IDU4LjMzMzMlOwp9CgouY2wtMiB7CiAgICB3aWR0aDogNDEuNjY2NyU7Cn0KCmEuYnRuLWFwcCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBoZWlnaHQ6IDY1cHg7CiAgICBsaW5lLWhlaWdodDogMjJweDsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgIG1hcmdpbi1yaWdodDogMzBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAyMzBweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgoucnRsIGEuYnRuLWFwcCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKLnJ0bCBhLmJ0bi1hcHAgewogICAgbWFyZ2luLWxlZnQ6IDMwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCmEuYnRuLWFwcDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnJ0bCBhLmJ0bi1hcHA6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKYS5idG4tYXBwIGkgewogICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgIGZvbnQtc2l6ZTogMzZweDsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4Owp9CgoucnRsIGEuYnRuLWFwcCBpIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLnJ0bCBhLmJ0bi1hcHAgaSB7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKYS5idG4tYXBwIC50aXRsZS1hcHAgewogICAgZm9udC1zaXplOiAxNHB4Owp9CgouZm9udC1zZWNvbmQgewogICAgZm9udC1mYW1pbHk6ICJOdW5pdG8iICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgoubWF4LTE3NzAgewogICAgbWF4LXdpZHRoOiAxNzcwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnVwZG93OmhvdmVyIC50b3AtaW1nIGltZywKLnVwZG93OmhvdmVyIC5pbWcgaW1nLAoudXBkb3c6aG92ZXIgLmltYWdlLXdyYXBwZXIgaW1nIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiB1cGRvdyAwLjhzIGVhc2UtaW4tb3V0IDBzIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiB1cGRvdyAwLjhzIGVhc2UtaW4tb3V0IDBzIGluZmluaXRlOwp9CgoudXBkb3ctaW5maW5pdGUgaW1nIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiB1cGRvdyAxcyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogdXBkb3cgMXMgZWFzZS1pbi1vdXQgMHMgaW5maW5pdGU7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyB1cGRvdyB7CiAgICA1MCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICB9CiAgICAwJSwKICAgIDEwMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgfQp9CgpAa2V5ZnJhbWVzIHVwZG93IHsKICAgIDUwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgIH0KICAgIDAlLAogICAgMTAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlbGVmdCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMCk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTsKICAgIH0KfQoKQGtleWZyYW1lcyBmYWRlbGVmdCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMCk7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTsKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVyaWdodCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTsKICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVyaWdodCB7CiAgICBmcm9tIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTsKICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTsKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgfQp9CgoubWIwIHsKICAgIG1hcmdpbi1ib3R0b206IDBweCAhaW1wb3J0YW50Owp9Cgoud2lkdGgtZnVsbCB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgouY3VzdG9tLW1lbnUgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7Cn0KCi5jdXN0b20tbWVudSBsaSB7CiAgICBwYWRkaW5nLWxlZnQ6IDIycHg7CiAgICBtYXJnaW4tYm90dG9tOiAxOHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKfQoKLnJ0bCAuY3VzdG9tLW1lbnUgbGkgewogICAgcGFkZGluZy1yaWdodDogMjJweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLmN1c3RvbS1tZW51IGxpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMnB4OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogIzIyMWYxZjsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLnJ0bCAuY3VzdG9tLW1lbnUgbGk6YmVmb3JlIHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKfQoKLmN1c3RvbS1tZW51IGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luOiAwOwp9CgouY3VzdG9tLW1lbnUgbGkgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICBmb250LXNpemU6IDE4cHg7Cn0KCi5ydGwgLmN1c3RvbS1tZW51IGxpIGkgewogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5jdXN0b20tbWVudSBsaSBpIHsKICAgICAgICBmb250LXNpemU6IDIzcHg7CiAgICB9Cn0KCi5jdXN0b20tbWVudSBsaSBhIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgouY3VzdG9tLW1lbnUgbGkgYTpmb2N1cywKLmN1c3RvbS1tZW51IGxpIGE6aG92ZXIgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5jdXN0b20tbWVudSBsaTpob3ZlcjpiZWZvcmUsCi5jdXN0b20tbWVudSBsaS5hY3RpdmU6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLmJveC13aGl0ZS10aGVtZSB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgYm94LXNoYWRvdzogMCAwIDMwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICBwYWRkaW5nOiAzMHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKfQoKLndyYXBwZXItYXBwIGEgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgcGFkZGluZzogMTJweCAyMnB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGNlMWU2OwogICAgb3BhY2l0eTogMC42OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTYwKTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBjb2xvcjogIzMzNGU2ZiAhaW1wb3J0YW50Owp9CgoucnRsIC53cmFwcGVyLWFwcCBhIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud3JhcHBlci1hcHAgYTpob3ZlciwKLndyYXBwZXItYXBwIGE6Zm9jdXMgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwogICAgYm9yZGVyLWNvbG9yOiAjYWZiYmM2Owp9Cgoud3JhcHBlci1hcHAgYSBpIHsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLnJ0bCAud3JhcHBlci1hcHAgYSBpIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud3JhcHBlci1hcHAuc3RfZGFyayBhIHsKICAgIGJvcmRlci1jb2xvcjogIzQ3NTg2ZDsKICAgIGNvbG9yOiAjNzI4NDllICFpbXBvcnRhbnQ7Cn0KCi53aWRnZXQtYmFubmVyLWFjY291bnQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjYyNjsKICAgIHBhZGRpbmc6IDMwcHggMTVweDsKICAgIG1pbi1oZWlnaHQ6IDMwMHB4OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgLyogU2FmYXJpICovCiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAvKiBTYWZhcmkgNy4wKyAqLwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAvKiBTYWZhcmkgNi4xKyAqLwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWJhbm5lci1hY2NvdW50IHsKICAgICAgICBwYWRkaW5nOiA1MHB4IDMwcHg7CiAgICAgICAgbWluLWhlaWdodDogNDcwcHg7CiAgICB9Cn0KCi53aWRnZXQtYmFubmVyLWFjY291bnQgLnRpdGxlLWFjY291bnQgewogICAgY29sb3I6ICNmZmY7CiAgICBtYXJnaW46IDA7CiAgICBmb250LXNpemU6IDMwcHg7CiAgICBtYXJnaW46IDAgMCAxMnB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWJhbm5lci1hY2NvdW50IC50aXRsZS1hY2NvdW50IHsKICAgICAgICBmb250LXNpemU6IDUwcHg7CiAgICB9Cn0KCi53aWRnZXQtYmFubmVyLWFjY291bnQgLmRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiAjZmZmOwogICAgbWFyZ2luOiAwIDAgMzBweDsKfQoKLndpZGdldC1hY2hpZXZlbWVudHMgLmlubmVyLWxlZnQgewogICAgbGluZS1oZWlnaHQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogICAgZm9udC1zaXplOiAzNXB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoucnRsIC53aWRnZXQtYWNoaWV2ZW1lbnRzIC5pbm5lci1sZWZ0IHsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtYWNoaWV2ZW1lbnRzIC5pbm5lci1sZWZ0IHsKICAgICAgICBmb250LXNpemU6IDU1cHg7CiAgICB9Cn0KCi53aWRnZXQtYWNoaWV2ZW1lbnRzIC5pbm5lci1sZWZ0IC52ZXJpZnkgewogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIGNvbG9yOiAjZmZmOwogICAgd2lkdGg6IDIycHg7CiAgICBoZWlnaHQ6IDIycHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMTVweDsKICAgIGJvdHRvbTogLTVweDsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7Cn0KCi5ydGwgLndpZGdldC1hY2hpZXZlbWVudHMgLmlubmVyLWxlZnQgLnZlcmlmeSB7CiAgICBsZWZ0OiAxNXB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCi53aWRnZXQtYWNoaWV2ZW1lbnRzIC50aXRsZSB7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICBtYXJnaW46IDAgMCA1cHg7Cn0KCi53aWRnZXQtYWNoaWV2ZW1lbnRzIC5kZXNjcmlwdGlvbiB7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIG9wYWNpdHk6IDAuODsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT04MCk7Cn0KCi5iZy10cmFuc3BhcmVudCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouZWxlbWVudG9yLWNvdW50ZXIgLmVsZW1lbnRvci1jb3VudGVyLW51bWJlci1wcmVmaXggewogICAgLXdlYmtpdC1mbGV4LWdyb3c6IDA7CiAgICBmbGV4LWdyb3c6IDA7Cn0KCi5lbGVtZW50b3ItY291bnRlciAuZWxlbWVudG9yLWNvdW50ZXItdGl0bGUgewogICAgdGV4dC1hbGlnbjogaW5oZXJpdDsKfQoKLm5vLWJvcmRlciB7CiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKfQoKLmxpc3QtZmVhdHVyZSB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKfQoKLmxpc3QtZmVhdHVyZSBsaSB7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4Owp9CgoubGlzdC1mZWF0dXJlIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmxpc3QtZmVhdHVyZSBsaSBpIHsKICAgIG1hcmdpbi1yaWdodDogOHB4Owp9CgoucnRsIC5saXN0LWZlYXR1cmUgbGkgaSB7CiAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgICAgICBXaWRnZXQgdmlkZW8KXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoudmlkZW8td3JhcHBlci1pbm5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi52aWRlby13cmFwcGVyLWlubmVyIC5wb3B1cC12aWRlbyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBsaW5lLWhlaWdodDogNTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC52aWRlby13cmFwcGVyLWlubmVyIC5wb3B1cC12aWRlbyB7CiAgICAgICAgd2lkdGg6IDcwcHg7CiAgICAgICAgaGVpZ2h0OiA3MHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiA3MHB4OwogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIH0KfQoKLnZpZGVvLXdyYXBwZXItaW5uZXIgLnBvcHVwLXZpZGVvOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgei1pbmRleDogLTE7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgb3BhY2l0eTogMC4zOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1hbmltYXRpb246IHNjYWxlaWNvbiAzcyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7CiAgICBhbmltYXRpb246IHNjYWxlaWNvbiAzcyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7Cn0KCi53aWRnZXQtdmlkZW8uc3R5bGUyIC5wb3B1cC12aWRlbyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwp9Cgoud2lkZ2V0LXZpZGVvLnN0eWxlMSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC1vLWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi53aWRnZXQtdmlkZW8uc3R5bGUxIC50aXRsZS12aWRlbyB7CiAgICBtYXJnaW46IDAgMCA1cHg7Cn0KCi53aWRnZXQtdmlkZW8uc3R5bGUxIC52aWRlby13cmFwcGVyLWlubmVyIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgoucnRsIC53aWRnZXQtdmlkZW8uc3R5bGUxIC52aWRlby13cmFwcGVyLWlubmVyIHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouZWxlbWVudG9yLXNvY2lhbC1pY29uIGkgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7Cn0KCi5jb250YWN0LXVzIC5mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkZGRkOwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMXB4IDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDkpOwogICAgYm94LXNoYWRvdzogMXB4IDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDkpOwp9CgouY29udGFjdC11cyAuZm9ybS1jb250cm9sOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogI2QwZDBkMDsKfQoKLmNvbnRhY3QtdXMgdGV4dGFyZWEuZm9ybS1jb250cm9sIHsKICAgIHJlc2l6ZTogbm9uZTsKICAgIGhlaWdodDogMTIwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5jb250YWN0LXVzIHRleHRhcmVhLmZvcm0tY29udHJvbCB7CiAgICAgICAgaGVpZ2h0OiAyMDBweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmNvbnRhY3QtdXMgW3R5cGU9InN1Ym1pdCJdIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA0NXB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDQ1cHg7CiAgICB9Cn0KCi5yb3ctMjAgewogICAgbWFyZ2luLWxlZnQ6IC0xMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAtMTBweDsKfQoKLnJvdy0yMD5bY2xhc3MqPSJjb2wtIl0gewogICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgcGFkZGluZy1yaWdodDogMTBweDsKfQoKLmJvcmRlci0yIHsKICAgIGJvcmRlci13aWR0aDogMnB4ICFpbXBvcnRhbnQ7Cn0KCi5tYXgtMTE0MCB7CiAgICBtYXgtd2lkdGg6IDExNDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgoubWF4LTYwMCB7CiAgICBtYXgtd2lkdGg6IDYwMHB4Owp9CgovKiAxMS4gd2lkZ2V0cyAqLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgV2lkZ2V0ClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi53aWRnZXQgbGFiZWwgewogICAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKLndpZGdldCAud2lkZ2V0X3NwX2ltYWdlLWltYWdlLWxpbmsgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Cgoud2lkZ2V0IC53aWRnZXRfc3BfaW1hZ2UtaW1hZ2UtbGluayBpbWcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJSBcOTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMzVzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMzVzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMzVzOwp9Cgoud2lkZ2V0LndpZGdldF90ZXh0IGltZyB7CiAgICBtYXJnaW46IDE1cHggMDsKICAgIGhlaWdodDogYXV0bzsKfQoKLndpZGdldC53aWRnZXRfcnNzIC53aWRnZXQtdGl0bGUgewogICAgYmFja2dyb3VuZDogbm9uZTsKfQoKLndpZGdldC53aWRnZXRfcnNzIC53aWRnZXQtdGl0bGUgaW1nIHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi53aWRnZXQud2lkZ2V0X3JzcyB1bCwKLndpZGdldC53aWRnZXRfcnNzIG9sIHsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwp9Cgoud2lkZ2V0LndpZGdldF9yc3MgdWwgbGk6bGFzdC1jaGlsZCwKLndpZGdldC53aWRnZXRfcnNzIG9sIGxpOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLWJvdHRvbTogMDsKICAgIHBhZGRpbmctYm90dG9tOiAwOwp9Cgoud2lkZ2V0LndpZGdldF9yc3MgdWwgbGkgLmNoaWxkcmVuPmxpOmJlZm9yZSwKLndpZGdldC53aWRnZXRfcnNzIG9sIGxpIC5jaGlsZHJlbj5saTpiZWZvcmUgewogICAgdG9wOiAyNHB4Owp9Cgoud2lkZ2V0LndpZGdldF9yc3MgdWwgdWwgbGk6Zmlyc3QtY2hpbGQsCi53aWRnZXQud2lkZ2V0X3JzcyBvbCB1bCBsaTpmaXJzdC1jaGlsZCB7CiAgICBwYWRkaW5nLXRvcDogMTRweDsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMjRweDsKfQoKLndpZGdldC53aWRnZXRfcnNzIHVsIGxpIHsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICBtYXJnaW46IDAgMCAxNXB4OwogICAgcGFkZGluZzogMCAwIDE1cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKfQoKLndpZGdldC53aWRnZXRfcnNzIHVsIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgYm9yZGVyOiBub25lOwp9Cgoud2lkZ2V0LndpZGdldF9yZWNlbnRfY29tbWVudHMgdWwsCi53aWRnZXQud2lkZ2V0X3JlY2VudF9jb21tZW50cyBvbCB7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLndpZGdldC53aWRnZXRfcmVjZW50X2NvbW1lbnRzIHVsIGxpOmxhc3QtY2hpbGQsCi53aWRnZXQud2lkZ2V0X3JlY2VudF9jb21tZW50cyBvbCBsaTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b206IDA7CiAgICBwYWRkaW5nLWJvdHRvbTogMDsKfQoKLndpZGdldC53aWRnZXRfcmVjZW50X2NvbW1lbnRzIHVsIGxpIC5jaGlsZHJlbj5saTpiZWZvcmUsCi53aWRnZXQud2lkZ2V0X3JlY2VudF9jb21tZW50cyBvbCBsaSAuY2hpbGRyZW4+bGk6YmVmb3JlIHsKICAgIHRvcDogMjRweDsKfQoKLndpZGdldC53aWRnZXRfcmVjZW50X2NvbW1lbnRzIHVsIHVsIGxpOmZpcnN0LWNoaWxkLAoud2lkZ2V0LndpZGdldF9yZWNlbnRfY29tbWVudHMgb2wgdWwgbGk6Zmlyc3QtY2hpbGQgewogICAgcGFkZGluZy10b3A6IDE0cHg7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDI0cHg7Cn0KCi53aWRnZXQud2lkZ2V0X3JlY2VudF9jb21tZW50cyB1bCBsaSB7CiAgICBiYWNrZ3JvdW5kOiBub25lOwp9Cgoud2lkZ2V0LndpZGdldF9yZWNlbnRfcmV2aWV3cyB1bC5wcm9kdWN0X2xpc3Rfd2lkZ2V0IHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi53aWRnZXQud2lkZ2V0X3JlY2VudF9yZXZpZXdzIHVsLnByb2R1Y3RfbGlzdF93aWRnZXQgbGkgewogICAgcGFkZGluZzogMTVweDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi53aWRnZXQud2lkZ2V0X3JlY2VudF9yZXZpZXdzIHVsLnByb2R1Y3RfbGlzdF93aWRnZXQgbGkgYSBpbWcgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCi5ydGwgLndpZGdldC53aWRnZXRfcmVjZW50X3Jldmlld3MgdWwucHJvZHVjdF9saXN0X3dpZGdldCBsaSBhIGltZyB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLndpZGdldC53aWRnZXRfcHJvZHVjdF9zZWFyY2ggLndvb2NvbW1lcmNlLXByb2R1Y3Qtc2VhcmNoIHsKICAgIHBhZGRpbmc6IDIwcHggMTVweDsKfQoKLndpZGdldC53aWRnZXRfcHJvZHVjdF9zZWFyY2ggLndvb2NvbW1lcmNlLXByb2R1Y3Qtc2VhcmNoIGxhYmVsLnNjcmVlbi1yZWFkZXItdGV4dCB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgoud2lkZ2V0LnlpdGgtd29vY29tcGFyZS13aWRnZXQgLnByb2R1Y3RzLWxpc3QgewogICAgcGFkZGluZy10b3A6IDIwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsKfQoKLndpZGdldC55aXRoLXdvb2NvbXBhcmUtd2lkZ2V0IGEuY2xlYXItYWxsIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKfQoKLnJ0bCAud2lkZ2V0LnlpdGgtd29vY29tcGFyZS13aWRnZXQgYS5jbGVhci1hbGwgewogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi53aWRnZXQueWl0aC13b29jb21wYXJlLXdpZGdldCBhLmNvbXBhcmUgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKfQoKLnJ0bCAud2lkZ2V0LnlpdGgtd29vY29tcGFyZS13aWRnZXQgYS5jb21wYXJlIHsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud2lkZ2V0LndpZGdldF9zaG9wcGluZ19jYXJ0IC53aWRnZXRfc2hvcHBpbmdfY2FydF9jb250ZW50IHsKICAgIHBhZGRpbmc6IDIwcHggMTVweDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi53aWRnZXQud2lkZ2V0X3JlY2VudF9lbnRyaWVzIHVsIGxpIGEgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi53aWRnZXQud2lkZ2V0X2NhbGVuZGFyIHRhYmxlIHsKICAgIG1hcmdpbjogMDsKfQoKLmNhbGVuZGFyX3dyYXAgY2FwdGlvbiB7CiAgICBiYWNrZ3JvdW5kOiAjMjEyMTIxOwogICAgY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiA1cHg7Cn0KCi5jYWxlbmRhcl93cmFwIHRkLAouY2FsZW5kYXJfd3JhcCB0aCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jYWxlbmRhcl93cmFwIHRmb290IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5jYWxlbmRhcl93cmFwICN0b2RheSB7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi53aWRnZXQtYmxvZ3MgLmJvdHRvbS1pbmZvIHsKICAgIHBhZGRpbmctdG9wOiAyMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LWJsb2dzIC5ib3R0b20taW5mbyAuYnRuIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogNDBweDsKICAgIH0KfQoKLndpZGdldC1ibG9ncyAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWRvdHMgewogICAgcGFkZGluZy10b3A6IDA7Cn0KCi5mb3JtLWNvbnRhY3QgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMTdweDsKICAgIG1hcmdpbjogMTEuNXB4IDAgMjhweDsKfQoKLmZvcm0tY29udGFjdCBpbnB1dDpub3QoLmJ0biksCi5mb3JtLWNvbnRhY3QgdGV4dGFyZWEgewogICAgcGFkZGluZzogMTBweCAzMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLmZvcm0tY29udGFjdCAuY29udGFudC1pbm5lcj4qIHsKICAgIG1hcmdpbjogMCAwIDIwcHg7Cn0KCi5jb250YWN0LXRvcGJhcj4qIHsKICAgIG1hcmdpbi1yaWdodDogMzBweDsKfQoKLnJ0bCAuY29udGFjdC10b3BiYXI+KiB7CiAgICBtYXJnaW4tbGVmdDogMzBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmNvbnRhY3QtdG9wYmFyPio6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW46IDA7Cn0KCi5jb250YWN0LXRvcGJhcj4qIGkgewogICAgbWFyZ2luLXJpZ2h0OiA2cHg7Cn0KCi5ydGwgLmNvbnRhY3QtdG9wYmFyPiogaSB7CiAgICBtYXJnaW4tbGVmdDogNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud2lkZ2V0X3BhZ2VzIHVsLAoud2lkZ2V0X25hdl9tZW51IHVsLAoud2lkZ2V0X21ldGEgdWwsCi53aWRnZXRfYXJjaGl2ZSB1bCwKLndpZGdldF9yZWNlbnRfZW50cmllcyB1bCwKLndpZGdldF9jYXRlZ29yaWVzIHVsIHsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwp9Cgoud2lkZ2V0X3BhZ2VzIHVsIHVsLAoud2lkZ2V0X25hdl9tZW51IHVsIHVsLAoud2lkZ2V0X21ldGEgdWwgdWwsCi53aWRnZXRfYXJjaGl2ZSB1bCB1bCwKLndpZGdldF9yZWNlbnRfZW50cmllcyB1bCB1bCwKLndpZGdldF9jYXRlZ29yaWVzIHVsIHVsIHsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIG1hcmdpbi10b3A6IDE1cHg7Cn0KCi5ydGwgLndpZGdldF9wYWdlcyB1bCB1bCwKLnJ0bCAud2lkZ2V0X25hdl9tZW51IHVsIHVsLAoucnRsIC53aWRnZXRfbWV0YSB1bCB1bCwKLnJ0bCAud2lkZ2V0X2FyY2hpdmUgdWwgdWwsCi5ydGwgLndpZGdldF9yZWNlbnRfZW50cmllcyB1bCB1bCwKLnJ0bCAud2lkZ2V0X2NhdGVnb3JpZXMgdWwgdWwgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLndpZGdldF9wYWdlcyB1bCBsaSwKLndpZGdldF9uYXZfbWVudSB1bCBsaSwKLndpZGdldF9tZXRhIHVsIGxpLAoud2lkZ2V0X2FyY2hpdmUgdWwgbGksCi53aWRnZXRfcmVjZW50X2VudHJpZXMgdWwgbGksCi53aWRnZXRfY2F0ZWdvcmllcyB1bCBsaSB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgbWFyZ2luOiAwIDAgMTVweDsKICAgIHBhZGRpbmc6IDA7Cn0KCi53aWRnZXRfcGFnZXMgdWwgbGkgYSwKLndpZGdldF9uYXZfbWVudSB1bCBsaSBhLAoud2lkZ2V0X21ldGEgdWwgbGkgYSwKLndpZGdldF9hcmNoaXZlIHVsIGxpIGEsCi53aWRnZXRfcmVjZW50X2VudHJpZXMgdWwgbGkgYSwKLndpZGdldF9jYXRlZ29yaWVzIHVsIGxpIGEgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KCi5ydGwgLndpZGdldF9wYWdlcyB1bCBsaSBhLAoucnRsIC53aWRnZXRfbmF2X21lbnUgdWwgbGkgYSwKLnJ0bCAud2lkZ2V0X21ldGEgdWwgbGkgYSwKLnJ0bCAud2lkZ2V0X2FyY2hpdmUgdWwgbGkgYSwKLnJ0bCAud2lkZ2V0X3JlY2VudF9lbnRyaWVzIHVsIGxpIGEsCi5ydGwgLndpZGdldF9jYXRlZ29yaWVzIHVsIGxpIGEgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLndpZGdldF9wYWdlcyB1bCBsaSBhOmJlZm9yZSwKLndpZGdldF9uYXZfbWVudSB1bCBsaSBhOmJlZm9yZSwKLndpZGdldF9tZXRhIHVsIGxpIGE6YmVmb3JlLAoud2lkZ2V0X2FyY2hpdmUgdWwgbGkgYTpiZWZvcmUsCi53aWRnZXRfcmVjZW50X2VudHJpZXMgdWwgbGkgYTpiZWZvcmUsCi53aWRnZXRfY2F0ZWdvcmllcyB1bCBsaSBhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGEiOwogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJzsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDJweDsKICAgIGxlZnQ6IDA7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLnJ0bCAud2lkZ2V0X3BhZ2VzIHVsIGxpIGE6YmVmb3JlLAoucnRsIC53aWRnZXRfbmF2X21lbnUgdWwgbGkgYTpiZWZvcmUsCi5ydGwgLndpZGdldF9tZXRhIHVsIGxpIGE6YmVmb3JlLAoucnRsIC53aWRnZXRfYXJjaGl2ZSB1bCBsaSBhOmJlZm9yZSwKLnJ0bCAud2lkZ2V0X3JlY2VudF9lbnRyaWVzIHVsIGxpIGE6YmVmb3JlLAoucnRsIC53aWRnZXRfY2F0ZWdvcmllcyB1bCBsaSBhOmJlZm9yZSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCi53aWRnZXRfcGFnZXMgdWwgbGk6bGFzdC1jaGlsZCwKLndpZGdldF9uYXZfbWVudSB1bCBsaTpsYXN0LWNoaWxkLAoud2lkZ2V0X21ldGEgdWwgbGk6bGFzdC1jaGlsZCwKLndpZGdldF9hcmNoaXZlIHVsIGxpOmxhc3QtY2hpbGQsCi53aWRnZXRfcmVjZW50X2VudHJpZXMgdWwgbGk6bGFzdC1jaGlsZCwKLndpZGdldF9jYXRlZ29yaWVzIHVsIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLndpZGdldF9wYWdlcyB1bCBsaTpob3Zlcj5hLAoud2lkZ2V0X3BhZ2VzIHVsIGxpLmN1cnJlbnQtY2F0LXBhcmVudD5hLAoud2lkZ2V0X3BhZ2VzIHVsIGxpLmN1cnJlbnQtY2F0PmEsCi53aWRnZXRfbmF2X21lbnUgdWwgbGk6aG92ZXI+YSwKLndpZGdldF9uYXZfbWVudSB1bCBsaS5jdXJyZW50LWNhdC1wYXJlbnQ+YSwKLndpZGdldF9uYXZfbWVudSB1bCBsaS5jdXJyZW50LWNhdD5hLAoud2lkZ2V0X21ldGEgdWwgbGk6aG92ZXI+YSwKLndpZGdldF9tZXRhIHVsIGxpLmN1cnJlbnQtY2F0LXBhcmVudD5hLAoud2lkZ2V0X21ldGEgdWwgbGkuY3VycmVudC1jYXQ+YSwKLndpZGdldF9hcmNoaXZlIHVsIGxpOmhvdmVyPmEsCi53aWRnZXRfYXJjaGl2ZSB1bCBsaS5jdXJyZW50LWNhdC1wYXJlbnQ+YSwKLndpZGdldF9hcmNoaXZlIHVsIGxpLmN1cnJlbnQtY2F0PmEsCi53aWRnZXRfcmVjZW50X2VudHJpZXMgdWwgbGk6aG92ZXI+YSwKLndpZGdldF9yZWNlbnRfZW50cmllcyB1bCBsaS5jdXJyZW50LWNhdC1wYXJlbnQ+YSwKLndpZGdldF9yZWNlbnRfZW50cmllcyB1bCBsaS5jdXJyZW50LWNhdD5hLAoud2lkZ2V0X2NhdGVnb3JpZXMgdWwgbGk6aG92ZXI+YSwKLndpZGdldF9jYXRlZ29yaWVzIHVsIGxpLmN1cnJlbnQtY2F0LXBhcmVudD5hLAoud2lkZ2V0X2NhdGVnb3JpZXMgdWwgbGkuY3VycmVudC1jYXQ+YSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLnNwZWNpYWwgLnBvc3QtaW5mbyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5zcGVjaWFsIC5wb3N0LWluZm86YmVmb3JlIHsKICAgIGJvcmRlci13aWR0aDogMTRweCAyMHB4OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1jb2xvcjogI2Y0ZjRmNCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMDAlOwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC0xMHB4OwogICAgei1pbmRleDogMjsKfQoKLnNwZWNpYWwgLnNwZWNpYWwtaXRlbXM+ZGl2Om50aC1jaGlsZCgybikgLnBvc3QtaW5mbyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5zcGVjaWFsIC5zcGVjaWFsLWl0ZW1zPmRpdjpudGgtY2hpbGQoMm4pIC5wb3N0LWluZm86YmVmb3JlIHsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2Y0ZjRmNDsKICAgIHRvcDogaW5oZXJpdDsKICAgIGJvdHRvbTogMTAwJTsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgV2lkZ2V0IENvbnRhY3QgVXMKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmNvbnRhY3QgewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKfQoKLmNvbnRhY3Q6YmVmb3JlLAouY29udGFjdDphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBkaXNwbGF5OiB0YWJsZTsKfQoKLmNvbnRhY3Q6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7Cn0KCi5jb250YWN0IGR0IHsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDMwcHg7CiAgICBoZWlnaHQ6IGF1dG87Cn0KCi5ydGwgLmNvbnRhY3QgZHQgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouY29udGFjdCBkZCB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgouY29udGFjdCAuY29udGFjdC1pY29uIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDIycHg7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDJweDsKfQoKLnJ0bCAuY29udGFjdCAuY29udGFjdC1pY29uIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLmNvbnRhY3QgLmNvbnRhY3QtaWNvbiAuZmEgewogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXJnaW46IDAgMCAwIDRweDsKfQoKLnJ0bCAuY29udGFjdCAuY29udGFjdC1pY29uIC5mYSB7CiAgICBtYXJnaW46IDAgNHB4IDAgMDsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgV2lkZ2V0IE1haWxjaGlwClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5tYWlsLWZvcm0gLmlucHV0LWdyb3VwIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwIDAgMTBweDsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgV2lkZ2V0IFNpZGViYXIKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmFwdXMtc2lkZWJhciBzZWxlY3QsCi5hcHVzLXNpZGViYXIgdGFibGUgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5hcHVzLXNpZGViYXIgLnBvc3Qtd2lkZ2V0IC5ibG9nLXRpdGxlLAouYXB1cy1zaWRlYmFyIC5wb3N0LXdpZGdldCBoNiB7CiAgICBtYXJnaW46IDAgMCA1cHg7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGhlaWdodDogNDBweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBmb250LWZhbWlseTogIk51bml0byIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgIHNlYXJjaApcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouYXB1cy1zZWFyY2gtZm9ybSAuc2VsZWN0LWNhdGVnb3J5IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1pbi13aWR0aDogMjAwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4OwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50Owp9CgoucnRsIC5hcHVzLXNlYXJjaC1mb3JtIC5zZWxlY3QtY2F0ZWdvcnkgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgoucnRsIC5hcHVzLXNlYXJjaC1mb3JtIC5zZWxlY3QtY2F0ZWdvcnkgewogICAgcGFkZGluZy1sZWZ0OiAxMnB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gLnNlbGVjdC1jYXRlZ29yeTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgcmlnaHQ6IDBweDsKICAgIGJhY2tncm91bmQ6ICNkZGRkZGQ7CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiAyMHB4Owp9CgoucnRsIC5hcHVzLXNlYXJjaC1mb3JtIC5zZWxlY3QtY2F0ZWdvcnk6YWZ0ZXIgewogICAgbGVmdDogMHB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIC5zZWxlY3QtY2F0ZWdvcnkgLmRyb3Bkb3duX3Byb2R1Y3RfY2F0IHsKICAgIGJvcmRlcjogMDsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAzOHB4KTsKICAgIGhlaWdodDogNDhweDsKICAgIHBhZGRpbmc6IDAgMjBweDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gLnRpdGxlLXRvcC1zZWFyY2ggewogICAgZm9udC1zaXplOiAyNHB4OwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIC5jbG9zZS1zZWFyY2gtZml4IHsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGNvbG9yOiAjZTQ0MzQzOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouYXB1cy1zZWFyY2gtZm9ybSAuY2xvc2Utc2VhcmNoLWZpeDpob3ZlciwKLmFwdXMtc2VhcmNoLWZvcm0gLmNsb3NlLXNlYXJjaC1maXg6YWN0aXZlIHsKICAgIGNvbG9yOiAjZDUxZjFmOwp9CgouYXB1cy1zZWFyY2gtZm9ybSAuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGhlaWdodDogNDhweDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50Owp9CgouYXB1cy1zZWFyY2gtZm9ybSAuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7Cn0KCi5ydGwgLmFwdXMtc2VhcmNoLWZvcm0gLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQgewogICAgcGFkZGluZy1yaWdodDogMjBweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViOwogICAgZGlzcGxheTogdGFibGU7CiAgICB3aWR0aDogMTAwJTsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSAubWFpbi1zZWFyY2gsCi5hcHVzLXNlYXJjaC1mb3JtIGZvcm0gLmJ0biwKLmFwdXMtc2VhcmNoLWZvcm0gZm9ybT4uc2VsZWN0LWNhdGVnb3J5IHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgouYXB1cy1zZWFyY2gtZm9ybSBmb3JtIC5idG4gewogICAgaGVpZ2h0OiA1MHB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBtYXJnaW4tdG9wOiAtMXB4OwogICAgbWFyZ2luLWJvdHRvbTogLTFweDsKICAgIG1hcmdpbi1yaWdodDogLTFweDsKfQoKLnJ0bCAuYXB1cy1zZWFyY2gtZm9ybSBmb3JtIC5idG4gewogICAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIGZvcm0gLmJ0biBpIHsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSAuYnRuIGkrc3BhbiB7CiAgICBtYXJnaW4tbGVmdDogNXB4Owp9CgoucnRsIC5hcHVzLXNlYXJjaC1mb3JtIGZvcm0gLmJ0biBpK3NwYW4gewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSAuYnRuLnN0X3NtYWxsIHsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIGZvcm0gLmZvcm0tY29udHJvbCB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSAuZm9ybS1jb250cm9sIHsKICAgIGhlaWdodDogNDhweDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSAuZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIC8qIENocm9tZS9PcGVyYS9TYWZhcmkgKi8KICAgIGNvbG9yOiAjZDFkMWQxOwp9CgouYXB1cy1zZWFyY2gtZm9ybSBmb3JtIC5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgLyogRmlyZWZveCAxOSsgKi8KICAgIGNvbG9yOiAjZDFkMWQxOwp9CgouYXB1cy1zZWFyY2gtZm9ybSBmb3JtIC5mb3JtLWNvbnRyb2w6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIC8qIElFIDEwKyAqLwogICAgY29sb3I6ICNkMWQxZDE7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIGZvcm0gLmZvcm0tY29udHJvbDotbW96LXBsYWNlaG9sZGVyIHsKICAgIC8qIEZpcmVmb3ggMTgtICovCiAgICBjb2xvcjogI2QxZDFkMTsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gZm9ybSAuZm9ybS1jb250cm9sOmZvY3VzIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgouYXB1cy1zZWFyY2gtZm9ybSAuaGlkZGVuLXNlYXJjaCB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmbG9hdDogcmlnaHQ7CiAgICBmb250LXNpemU6IDM1cHg7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgY29sb3I6ICNlNDQzNDM7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tbGVmdDogMzBweDsKfQoKLnJ0bCAuYXB1cy1zZWFyY2gtZm9ybSAuaGlkZGVuLXNlYXJjaCB7CiAgICBmbG9hdDogbGVmdDsKfQoKLnJ0bCAuYXB1cy1zZWFyY2gtZm9ybSAuaGlkZGVuLXNlYXJjaCB7CiAgICBtYXJnaW4tcmlnaHQ6IDMwcHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gLm1haW4tc2VhcmNoIHsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYXB1cy1zZWFyY2gtZm9ybSAubWFpbi1zZWFyY2ggLmF1dG9jb21wbGV0ZS1saXN0IHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW4tdG9wOiAxcHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiA4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA1cHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICBib3gtc2hhZG93OiAwIDVweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgIG1heC1oZWlnaHQ6IDM1MHB4OwogICAgb3ZlcmZsb3c6IGF1dG87Cn0KCi5ydGwgLmFwdXMtc2VhcmNoLWZvcm0gLm1haW4tc2VhcmNoIC5hdXRvY29tcGxldGUtbGlzdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gZGl2LnR3aXR0ZXItdHlwZWFoZWFkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYXB1cy1zZWFyY2gtZm9ybSBkaXYudHdpdHRlci10eXBlYWhlYWQgc3Bhbi50d2l0dGVyLXR5cGVhaGVhZCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgd2lkdGg6IDEwMCU7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIGRpdi50d2l0dGVyLXR5cGVhaGVhZDpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEzcHg7CiAgICByaWdodDogMTBweDsKICAgIHdpZHRoOiAxOHB4OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9sb2FkaW5nLXF1aWNrLmdpZikgbm8tcmVwZWF0IHNjcm9sbCAwIDAvMThweCBhdXRvOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIHotaW5kZXg6IDk7Cn0KCi5ydGwgLmFwdXMtc2VhcmNoLWZvcm0gZGl2LnR3aXR0ZXItdHlwZWFoZWFkOmJlZm9yZSB7CiAgICBsZWZ0OiAxMHB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIGRpdi50d2l0dGVyLXR5cGVhaGVhZC5sb2FkaW5nOmJlZm9yZSB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIC50dC1tZW51IHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW4tdG9wOiAxcHg7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIC50dC1tZW51PiogewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogOTsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gLnR0LW1lbnUgYS5tZWRpYSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDEycHg7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIC50dC1tZW51IGEubWVkaWEgaW1nIHsKICAgIG1heC13aWR0aDogNjBweDsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gLnR0LW1lbnUgaDQgewogICAgZm9udC1zaXplOiAxNHB4OwogICAgbWFyZ2luOiAwOwp9CgouYXB1cy1zZWFyY2gtZm9ybSAudHQtbWVudSBoNCBzdHJvbmcgewogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgouYXB1cy1zZWFyY2gtZm9ybSAudHQtbWVudSAucHJpY2UgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgbWFyZ2luOiAwOwp9CgouYXB1cy1zZWFyY2gtZm9ybSAudHQtbWVudSAudHQtZGF0YXNldC1zZWFyY2g+KjpmaXJzdC1jaGlsZCB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouYXB1cy1zZWFyY2gtZm9ybS5zdHlsZTIgZm9ybSB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZy1yaWdodDogNDBweDsKfQoKLnJ0bCAuYXB1cy1zZWFyY2gtZm9ybS5zdHlsZTIgZm9ybSB7CiAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgouYXB1cy1zZWFyY2gtZm9ybS5zdHlsZTIgZm9ybSAuZm9ybS1jb250cm9sIHsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiA0NXB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmFwdXMtc2VhcmNoLWZvcm0uc3R5bGUyIGZvcm0gLmZvcm0tY29udHJvbDpmb2N1cyB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLmFwdXMtc2VhcmNoLWZvcm0uc3R5bGUyIGZvcm0gLmJ0biB7CiAgICBsaW5lLWhlaWdodDogMzJweDsKICAgIGhlaWdodDogMzVweDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNnB4OwogICAgcGFkZGluZzogMCA5cHg7CiAgICByaWdodDogNXB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50Owp9CgoucnRsIC5hcHVzLXNlYXJjaC1mb3JtLnN0eWxlMiBmb3JtIC5idG4gewogICAgbGVmdDogNXB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCi5hcHVzLXNlYXJjaC1mb3JtLnN0eWxlMiBmb3JtIC5idG4gaSB7CiAgICBmb250LXNpemU6IDE2cHg7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIC5hdXRvY29tcGxldGUtbGlzdCB7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAycHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hcHVzLXNlYXJjaC1mb3JtIC5hdXRvY29tcGxldGUtbGlzdCB7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgIH0KfQoKLmFwdXMtc2VhcmNoLWZvcm0gLmF1dG9jb21wbGV0ZS1saXN0LWl0ZW0gewogICAgcGFkZGluZzogMCAwIDEwcHg7CiAgICBtYXJnaW46IDAgMCAxMHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hcHVzLXNlYXJjaC1mb3JtIC5hdXRvY29tcGxldGUtbGlzdC1pdGVtIHsKICAgICAgICBwYWRkaW5nOiAwIDAgMTVweDsKICAgICAgICBtYXJnaW46IDAgMCAxNXB4OwogICAgfQp9CgouYXB1cy1zZWFyY2gtZm9ybSAuYXV0b2NvbXBsZXRlLWxpc3QtaXRlbTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIC5hdXRvY29tcGxldGUtbGlzdC1pdGVtIC5hdXRvY29tcGxlYXRlLW1lZGlhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouYXB1cy1zZWFyY2gtZm9ybSAuYXV0b2NvbXBsZXRlLWxpc3QtaXRlbSAuYXV0b2NvbXBsZWF0ZS1tZWRpYTpob3ZlciAubmFtZS1wcm9kdWN0IHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgouYXB1cy1zZWFyY2gtZm9ybSAuYXV0b2NvbXBsZXRlLWxpc3QtaXRlbSBpbWcgewogICAgd2lkdGg6IDYwcHg7CiAgICBtYXgtd2lkdGg6IG5vbmU7Cn0KCi5hcHVzLXNlYXJjaC1mb3JtIC5hdXRvY29tcGxldGUtbGlzdC1pdGVtIC5wcmljZSB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLmFwdXMtc2VhcmNoLWZvcm0gLmF1dG9jb21wbGV0ZS1saXN0LWl0ZW0gLm5hbWUtcHJvZHVjdCB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIG1hcmdpbjogMCAwIDNweDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGZvbnQtZmFtaWx5OiAiTnVuaXRvIjsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9CgouYXB1cy1zZWFyY2gtZm9ybSAuYXV0b2NvbXBsZXRlLWxpc3QtaXRlbSAubmFtZS1wcm9kdWN0IHN0cm9uZyB7CiAgICBjb2xvcjogI2U0NDM0MzsKfQoKLmFwdXMtc2VhcmNoLW5vY2F0ZWdvcnkgewogICAgYmFja2dyb3VuZDogI2YwZjJmOTsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwcHg7Cn0KCi5hcHVzLXNlYXJjaC1ub2NhdGVnb3J5IC5mb3JtLWNvbnRyb2wgewogICAgYmFja2dyb3VuZDogI2YwZjJmOTsKICAgIGJvcmRlci1jb2xvcjogI2YwZjJmOTsKICAgIGNvbG9yOiAjOTk5NTkxOwogICAgYm9yZGVyOiBub25lOwogICAgbWF4LXdpZHRoOiAxODVweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKfQoKLmFwdXMtc2VhcmNoLW5vY2F0ZWdvcnkgLmJ0biB7CiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZTsKfQoKLmFwdXMtc2VhcmNoLW5vY2F0ZWdvcnkgLmJ0bjpob3ZlciwKLmFwdXMtc2VhcmNoLW5vY2F0ZWdvcnkgLmJ0bjphY3RpdmUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwp9CgouYXB1cy1zZWFyY2gtbm9jYXRlZ29yeSB7CiAgICBiYWNrZ3JvdW5kOiAjZjBmMmY5OwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNTBweDsKfQoKLmFwdXMtc2VhcmNoLW5vY2F0ZWdvcnkgLmZvcm0tY29udHJvbCB7CiAgICBiYWNrZ3JvdW5kOiAjZjBmMmY5OwogICAgYm9yZGVyLWNvbG9yOiAjZjBmMmY5OwogICAgY29sb3I6ICM5OTk1OTE7CiAgICBib3JkZXI6IG5vbmU7CiAgICBtYXgtd2lkdGg6IDE4NXB4OwogICAgZm9udC1zaXplOiAxMnB4Owp9CgouYXB1cy1zZWFyY2gtbm9jYXRlZ29yeSAuYnRuIHsKICAgIHBhZGRpbmctbGVmdDogMTJweDsKICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgZm9udC1zaXplOiAxNnB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lOwp9CgouYXB1cy1zZWFyY2gtbm9jYXRlZ29yeSAuYnRuOmhvdmVyLAouYXB1cy1zZWFyY2gtbm9jYXRlZ29yeSAuYnRuOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7Cn0KCi53aWRnZXQtc2VhcmNoIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Cgoud2lkZ2V0LXNlYXJjaCAuaW5wdXQtZ3JvdXAgewogICAgYm9yZGVyOiAxcHggc29saWQgI2Q4ZDhkODsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLndpZGdldC1zZWFyY2ggLmJ0biB7CiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDEwcHggMjVweDsKICAgIGZvbnQtc2l6ZTogMjFweDsKICAgIGhlaWdodDogNTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDA7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Cgoud2lkZ2V0LXNlYXJjaCAuYnRuOmhvdmVyLAoud2lkZ2V0LXNlYXJjaCAuYnRuOmZvY3VzIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9Cgoud2lkZ2V0LXNlYXJjaCAuZm9ybS1jb250cm9sIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIHBhZGRpbmc6IDZweCAyMHB4OwogICAgYm9yZGVyOiBub25lOwp9Cgoud2lkZ2V0LXNlYXJjaCAuZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIC8qIENocm9tZS9PcGVyYS9TYWZhcmkgKi8KICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLndpZGdldC1zZWFyY2ggLmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAvKiBGaXJlZm94IDE5KyAqLwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9Cgoud2lkZ2V0LXNlYXJjaCAuZm9ybS1jb250cm9sOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAvKiBJRSAxMCsgKi8KICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLndpZGdldC1zZWFyY2ggLmZvcm0tY29udHJvbDotbW96LXBsYWNlaG9sZGVyIHsKICAgIC8qIEZpcmVmb3ggMTgtICovCiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgIFRhZ3MgV2lkZ2V0ClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi50YWdjbG91ZCBhIHsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIG1hcmdpbi1yaWdodDogN3B4OwogICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMTNweCAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlIDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZSAwczsKICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDVweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDVweDsKfQoKLnJ0bCAudGFnY2xvdWQgYSB7CiAgICBtYXJnaW4tbGVmdDogN3B4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoudGFnY2xvdWQgYTpob3ZlciwKLnRhZ2Nsb3VkIGE6Zm9jdXMsCi50YWdjbG91ZCBhLmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7Cn0KCi53aWRnZXQtYnJhbmQtbG9nbyB7CiAgICBwYWRkaW5nOiAzMHB4Owp9Cgoud2lkZ2V0LWJyYW5kLWxvZ28gLml0ZW0tYnJhbmQ+YSB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLndpZGdldC1icmFuZC1sb2dvIC5jYXJvdXNlbC1jb250cm9sIHsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7Cn0KCi53aWRnZXQtYnJhbmQtbG9nbzpob3ZlciAuY2Fyb3VzZWwtY29udHJvbCB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgICAgIFdpZGdldCBDb250YWN0IApcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi53aWRnZXQtaW5mb3IgLmhlZGluZyB7CiAgICBmb250LWZhbWlseTogIk51bml0byIsICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgICBmb250LXdlaWdodDogNDAwOwp9Cgoud2lkZ2V0LWluZm9yIC5pbmZvci1pbm5lciB7CiAgICBtYXJnaW46IDAgMCAyMHB4Owp9CgouYXB1cy1zZWFyY2gtdG9wIC5idXR0b24tc2hvdy1zZWFyY2ggewogICAgZm9udC1zaXplOiAxOHB4OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBwYWRkaW5nOiAwIDVweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5hcHVzLXNlYXJjaC10b3AgLmJ1dHRvbi1zaG93LXNlYXJjaDpob3ZlciwKLmFwdXMtc2VhcmNoLXRvcCAuYnV0dG9uLXNob3ctc2VhcmNoOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmFwdXMtc2VhcmNoLXRvcCAuY29udGVudC1mb3JtIHsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWluLXdpZHRoOiAyODBweDsKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICBXaWRnZXQgVmVydGljYWwgTWVudQpcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi52ZXJ0aWNhbC1tZW51IHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDA7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgei1pbmRleDogOTk5Owp9CgoudmVydGljYWwtbWVudT4ubmF2IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwp9CgoudmVydGljYWwtbWVudT4ubmF2IC5vcGVuPmEsCi52ZXJ0aWNhbC1tZW51Pi5uYXYgLm9wZW4+YTpob3ZlciwKLnZlcnRpY2FsLW1lbnU+Lm5hdiAub3Blbj5hOmZvY3VzLAoudmVydGljYWwtbWVudT4ubmF2IC5hY3RpdmU+YSwKLnZlcnRpY2FsLW1lbnU+Lm5hdiAuYWN0aXZlPmE6aG92ZXIsCi52ZXJ0aWNhbC1tZW51Pi5uYXYgLmFjdGl2ZT5hOmZvY3VzIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoudmVydGljYWwtbWVudT4ubmF2PmxpIHsKICAgIGZsb2F0OiBub25lOwogICAgcG9zaXRpb246IHN0YXRpYzsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwp9CgoudmVydGljYWwtbWVudT4ubmF2PmxpLmFjdGl2ZT5hIHsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgYmFja2dyb3VuZDogI2ZhZmFmYTsKfQoKLnZlcnRpY2FsLW1lbnU+Lm5hdj5saT5hIHsKICAgIGNvbG9yOiAjNDE0MTQxOwogICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgoudmVydGljYWwtbWVudT4ubmF2PmxpPmE6aG92ZXIgewogICAgY29sb3I6ICNmZjVhNWY7CiAgICBiYWNrZ3JvdW5kOiAjZmFmYWZhOwp9CgoudmVydGljYWwtbWVudT4ubmF2PmxpPmEgLmZhIHsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIG1pbi13aWR0aDogMTVweDsKICAgIG1hcmdpbi1yaWdodDogMTJweDsKfQoKLnJ0bCAudmVydGljYWwtbWVudT4ubmF2PmxpPmEgLmZhIHsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoudmVydGljYWwtbWVudT4ubmF2PmxpIC5kcm9wZG93bi1tZW51IHsKICAgIG1pbi13aWR0aDogMjMwcHg7CiAgICBtaW4taGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKfQoKLnZlcnRpY2FsLW1lbnU+Lm5hdiAucHJvZHVjdC1ibG9jayB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi52ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51IHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDMwcHg7CiAgICBib3JkZXI6IG5vbmU7CiAgICB0b3A6IDA7Cn0KCi52ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51OmJlZm9yZSwKLnZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnU6YWZ0ZXIgewogICAgY29udGVudDogIiAiOwogICAgZGlzcGxheTogdGFibGU7Cn0KCi52ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51OmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwp9CgoudmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudSB1bCB7CiAgICBwYWRkaW5nOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLnZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgdWwgbGkgewogICAgbGluZS1oZWlnaHQ6IDM0cHg7Cn0KCi52ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51IHVsIGxpIGEgewogICAgY29sb3I6ICM0MTQxNDE7Cn0KCi52ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51IHVsIGxpIGE6aG92ZXIsCi52ZXJ0aWNhbC1tZW51IC5kcm9wZG93bi1tZW51IHVsIGxpIGEuYWN0aXZlIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoudmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudSB1bCB1bCB7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KCi5ydGwgLnZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgdWwgdWwgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLnZlcnRpY2FsLW1lbnUgLmRyb3Bkb3duLW1lbnUgLndpZGdldC10aXRsZSB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBwYWRkaW5nOiAwIDAgMTVweDsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoudmVydGljYWwtbWVudSAuZHJvcGRvd24tbWVudSAud29vY29tbWVyY2UgLnByb2R1Y3Qtd3JhcHBlciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoKLnZlcnRpY2FsLW1lbnUubWVudS1sZWZ0IC5kcm9wZG93bi1tZW51IHsKICAgIGxlZnQ6IDEwMCUgIWltcG9ydGFudDsKICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5ydGwgLnZlcnRpY2FsLW1lbnUubWVudS1sZWZ0IC5kcm9wZG93bi1tZW51IHsKICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBsZWZ0OiBhdXRvOwp9CgoucnRsIC52ZXJ0aWNhbC1tZW51Lm1lbnUtbGVmdCAuZHJvcGRvd24tbWVudSB7CiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICByaWdodDogYXV0bzsKfQoKLnZlcnRpY2FsLW1lbnUubWVudS1yaWdodCAuZHJvcGRvd24tbWVudSB7CiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICByaWdodDogMTAwJSAhaW1wb3J0YW50Owp9CgoucnRsIC52ZXJ0aWNhbC1tZW51Lm1lbnUtcmlnaHQgLmRyb3Bkb3duLW1lbnUgewogICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5ydGwgLnZlcnRpY2FsLW1lbnUubWVudS1yaWdodCAuZHJvcGRvd24tbWVudSB7CiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICByaWdodDogYXV0bzsKfQoKLnZlcnRpY2FsLW1lbnUgLmljb24tdmVyIHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLnJ0bCAudmVydGljYWwtbWVudSAuaWNvbi12ZXIgewogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCiNyZWNlbnRjb21tZW50cz5saSB7CiAgICBtYXJnaW46IDAgMCAxM3B4Owp9CgojcmVjZW50Y29tbWVudHM+bGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW46IDA7Cn0KCiNyZWNlbnRjb21tZW50cyBhIHsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogI2ZmOGQ5MDsKfQoKI3JlY2VudGNvbW1lbnRzIGE6aG92ZXIsCiNyZWNlbnRjb21tZW50cyBhOmZvY3VzIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9Cgoud2lkZ2V0LXF1aWNrbGluay1tZW51IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNmY2ZjY7CiAgICBsaW5lLWhlaWdodDogMzVweDsKfQoKLndpZGdldC1xdWlja2xpbmstbWVudSAucXVpY2tsaW5rLWhlYWRpbmcgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzMzMzsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4OwogICAgbWFyZ2luOiAwIDIwcHggMCAwOwogICAgcGFkZGluZzogMTJweCAxNXB4IDEycHggMjVweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBmb250LWZhbWlseTogIk51bml0byI7Cn0KCi5ydGwgLndpZGdldC1xdWlja2xpbmstbWVudSAucXVpY2tsaW5rLWhlYWRpbmcgewogICAgbWFyZ2luOiAwIDAgMCAyMHB4Owp9Cgoud2lkZ2V0LXF1aWNrbGluay1tZW51IC5xdWlja2xpbmstaGVhZGluZzpiZWZvcmUgewogICAgYm9yZGVyLXRvcDogMThweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1ib3R0b206IDE4cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItbGVmdDogMTBweCBzb2xpZCAjMzMzOwogICAgY29udGVudDogIiI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogLTEwcHg7CiAgICB0b3A6IDA7Cn0KCi5ydGwgLndpZGdldC1xdWlja2xpbmstbWVudSAucXVpY2tsaW5rLWhlYWRpbmc6YmVmb3JlIHsKICAgIGJvcmRlci1yaWdodDogMTBweCBzb2xpZCAjMzMzOwogICAgYm9yZGVyLWxlZnQ6IGluaGVyaXQ7Cn0KCi5ydGwgLndpZGdldC1xdWlja2xpbmstbWVudSAucXVpY2tsaW5rLWhlYWRpbmc6YmVmb3JlIHsKICAgIGxlZnQ6IC0xMHB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCi53aWRnZXQtcXVpY2tsaW5rLW1lbnUgYSB7CiAgICBjb2xvcjogIzk5OTk5OTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KCi53aWRnZXQtcXVpY2tsaW5rLW1lbnUgYTpob3ZlciB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLndvby1vbnNhbGUgLm9uc2FsZSB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgoud29vLW9uc2FsZSAucHJvZHVjdC1zYWxlLWxhYmVsIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAzNnB4OwogICAgaGVpZ2h0OiAzNnB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZiNDk0OTsKICAgIGNvbG9yOiAjZmZmOwogICAgdG9wOiAxMHB4OwogICAgcmlnaHQ6IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGxpbmUtaGVpZ2h0OiAzNnB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKLnJ0bCAud29vLW9uc2FsZSAucHJvZHVjdC1zYWxlLWxhYmVsIHsKICAgIGxlZnQ6IDEwcHg7CiAgICByaWdodDogYXV0bzsKfQoKLndpZGdldC10YWJzIC53aWRnZXQtdGl0bGUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Cgoud2lkZ2V0LXRhYnMgLm5hdi10YWJzIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBtYXJnaW46IDAgMCA3cHg7Cn0KCi53aWRnZXQtdGFicyAubmF2LXRhYnMudGFicy1saXN0LXYyIHsKICAgIG1hcmdpbjogMCAwIDE1cHg7Cn0KCi53aWRnZXQtdGFicyAuY2Fyb3VzZWwtY29udHJvbHMgewogICAgdG9wOiAtNDJweDsKfQoKLndpZGdldC1pbmZvciAubWVkaWEgLmZhLAoud2lkZ2V0LWluZm9yIC5tZWRpYSAuaWNvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6ICNmZjVhNWY7CiAgICBiYWNrZ3JvdW5kOiAjMjUyNTI1Owp9CgouY29udGFudC1pbmZvIC50aXRsZSB7CiAgICBtYXJnaW46IDAgMCAyMHB4OwogICAgZm9udC1zaXplOiAzMHB4Owp9CgouY29udGFudC1pbmZvIC5pbmZvLWRlc2NyaXB0aW9uIHsKICAgIG1hcmdpbjogMCAwIDMwcHg7Cn0KCi5jb250YW50LWluZm8gLm1lZGlhLWhlYWRpbmcgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIG1hcmdpbjogMCAwIDVweDsKfQoKLmNvbnRhbnQtaW5mbyAubWVkaWEgewogICAgbWFyZ2luLXRvcDogMzBweDsKfQoKLmNvbnRhbnQtaW5mbyAubWVkaWE6aG92ZXIgLmZhIHsKICAgIGJvcmRlci1jb2xvcjogI2U0NDM0MzsKICAgIGNvbG9yOiAjZTQ0MzQzOwp9CgouY29udGFudC1pbmZvIC5tZWRpYS1sZWZ0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7Cn0KCi5ydGwgLmNvbnRhbnQtaW5mbyAubWVkaWEtbGVmdCB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgouY29udGFudC1pbmZvIC5tZWRpYS1sZWZ0IC5mYSB7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjMjYyNjI2OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgY29sb3I6ICMyNjI2MjY7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICBoZWlnaHQ6IDU4cHg7CiAgICBsaW5lLWhlaWdodDogNTJweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHdpZHRoOiA1OHB4Owp9Cgoud2lkZ2V0X2NhdGVnb3JpZXMgc2VsZWN0LAoud2lkZ2V0X2FyY2hpdmUgc2VsZWN0IHsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogOHB4OwogICAgaGVpZ2h0OiA1MHB4Owp9CgoudGV4dHdpZGdldCBzZWxlY3QgewogICAgcGFkZGluZzogOHB4OwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi53aWRnZXQtdHdpdHRlciAudHdpdHRlci10aW1lbGluZSB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9Cgoud2lkZ2V0LXR3aXR0ZXIgLnRpbWVsaW5lLVR3ZWV0LW1lZGlhIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi53aWRnZXRfYXB1c19pbnN0YWdyYW0gewogICAgbWFyZ2luOiAwOwp9Cgoud2lkZ2V0X2FwdXNfaW5zdGFncmFtIC53aWRnZXQtdGl0bGUgewogICAgZm9udC1zaXplOiAzNXB4OwogICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgIG1hcmdpbjogMCAwIDYwcHg7CiAgICBwYWRkaW5nOiAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7Cn0KCi53aWRnZXRfYXB1c19pbnN0YWdyYW0gLndpZGdldC10aXRsZSBhIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLndpZGdldF9hcHVzX2luc3RhZ3JhbSAuaW5zdGFncmFtLXBpY3MgYSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMXMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW4tb3V0IDBzOwp9Cgoud2lkZ2V0X2FwdXNfaW5zdGFncmFtIC5pbnN0YWdyYW0tcGljcyBhOmhvdmVyLAoud2lkZ2V0X2FwdXNfaW5zdGFncmFtIC5pbnN0YWdyYW0tcGljcyBhOmFjdGl2ZSB7CiAgICBvdXRsaW5lOiA4cHggc29saWQgI2ZmNWE1ZjsKICAgIG91dGxpbmUtb2Zmc2V0OiAtOHB4Owp9Cgoud2lkZ2V0X2FwdXNfaW5zdGFncmFtIC5pbnN0YWdyYW0tcGljcyBhOmhvdmVyOmJlZm9yZSwKLndpZGdldF9hcHVzX2luc3RhZ3JhbSAuaW5zdGFncmFtLXBpY3MgYTphY3RpdmU6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7Cn0KCi53aWRnZXRfYXB1c19pbnN0YWdyYW0gLmluc3RhZ3JhbS1waWNzIGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiAjMDAwOwogICAgb3BhY2l0eTogMC41OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9Cgoud2lkZ2V0LXRpY2tldC1wcmljaW5nIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjZWJlYmViOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNTBweDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtdGlja2V0LXByaWNpbmcgLnByb2R1Y3QtYmxvY2stcHJpY2luZyB7CiAgICAgICAgbWF4LXdpZHRoOiAxNzBweDsKICAgICAgICBtYXJnaW46IGF1dG87CiAgICB9Cn0KCi53aWRnZXQtdGlja2V0LXByaWNpbmcgLmNvbHVtbiB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXI6IDJweCBkYXNoZWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICBtYXJnaW46IC0ycHggMDsKICAgIHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50Owp9Cgoud2lkZ2V0LXRpY2tldC1wcmljaW5nIC5jb2x1bW46bGFzdC1jaGlsZCwKLndpZGdldC10aWNrZXQtcHJpY2luZyAuY29sdW1uOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIG1hcmdpbjogMDsKfQoKLndpZGdldC10aWNrZXQtcHJpY2luZy5zdHlsZS1zdHlsZTIgewogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwp9Cgoud2lkZ2V0LXRpY2tldC1wcmljaW5nLnN0eWxlLXN0eWxlMiAuY29sdW1uIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7CiAgICBtYXJnaW46IC0xcHggMDsKfQoKLndpZGdldC10aWNrZXQtcHJpY2luZy5zdHlsZS1zdHlsZTIgLmNvbHVtbjpsYXN0LWNoaWxkLAoud2lkZ2V0LXRpY2tldC1wcmljaW5nLnN0eWxlLXN0eWxlMiAuY29sdW1uOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbjogMDsKICAgIGJvcmRlcjogbm9uZTsKfQoKLndpZGdldC10aWNrZXQtcHJpY2luZy5zdHlsZS1zdHlsZTIgLmNvbHVtbjpob3ZlciB7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7Cn0KCi53aWRnZXQtdGlja2V0LXByaWNpbmcuc3R5bGUtc3R5bGUyIC5jb2x1bW46aG92ZXIgLnByb2R1Y3QtYmxvY2stcHJpY2luZyAud3JhcHBlci1wcmljaW5nIC5wcmljZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmY1YTVmOwp9Cgoud2lkZ2V0LXRpY2tldC1wcmljaW5nLnN0eWxlLXN0eWxlMiAuY29sdW1uOmhvdmVyIC5wcm9kdWN0LWJsb2NrLXByaWNpbmcgLndyYXBwZXItcHJpY2luZzpiZWZvcmUgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmZjVhNWY7Cn0KCi53aWRnZXQtdGlja2V0LXByaWNpbmcuc3R5bGUtc3R5bGUyIC5wcm9kdWN0LWJsb2NrLXByaWNpbmcgLndyYXBwZXItcHJpY2luZyAucHJpY2UgewogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKfQoKLndpZGdldC10aWNrZXQtcHJpY2luZy5zdHlsZS1zdHlsZTIgLnByb2R1Y3QtYmxvY2stcHJpY2luZyAud3JhcHBlci1wcmljaW5nOmJlZm9yZSB7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKfQoKLndpZGdldC10aWNrZXQtcHJpY2luZy5zdHlsZS1zdHlsZTMgewogICAgYm9yZGVyOiBub25lOwogICAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCi53aWRnZXQtdGlja2V0LXByaWNpbmcuc3R5bGUtc3R5bGUzIC5jb2x1bW4gewogICAgYm9yZGVyOiBub25lOwogICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICBtYXJnaW46IDIwcHggMDsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZyAubmFtZSB7CiAgICBmb250LXNpemU6IDIycHg7CiAgICBmb250LWZhbWlseTogIk51bml0byI7CiAgICBtYXJnaW46IDM3cHggMCAzMHB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZyAud3JhcHBlci1wcmljaW5nIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZyAud3JhcHBlci1wcmljaW5nOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHdpZHRoOiAxMDAwcHg7CiAgICBoZWlnaHQ6IDJweDsKICAgIGJvcmRlci1ib3R0b206IDJweCBkYXNoZWQgI2ViZWJlYjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgbGVmdDogLTE1MHB4OwogICAgei1pbmRleDogMTsKICAgIGNvbnRlbnQ6ICcnOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nIC53cmFwcGVyLXByaWNpbmcgLnByaWNlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgYm9yZGVyOiAycHggZGFzaGVkICNlYmViZWI7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIHBhZGRpbmc6IDhweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB6LWluZGV4OiAyOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nIC53b29jb21tZXJjZS1QcmljZS1hbW91bnQgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB3aWR0aDogMTAwcHg7CiAgICBoZWlnaHQ6IDEwMHB4OwogICAgbGluZS1oZWlnaHQ6IDEwMHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAzMHB4OwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgYmFja2dyb3VuZDogI2YxZjFmMTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nIC53b29jb21tZXJjZS1QcmljZS1hbW91bnQ+c3BhbiB7CiAgICBmb250LXdlaWdodDogMzAwOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nIC5ibG9jay1pbm5lci1jb250ZW50IC5kZXNjIHsKICAgIG1hcmdpbjogMjBweCAwIDM1cHg7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmcgLmJsb2NrLWlubmVyLWNvbnRlbnQgLmRlc2Mgc3Ryb25nIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nIC5ibG9jay1pbm5lci1jb250ZW50IHVsIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nIC5ibG9jay1pbm5lci1jb250ZW50IHVsIGxpIHsKICAgIG1hcmdpbjogMCAwIDVweDsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZyAuYmxvY2staW5uZXItY29udGVudCB1bCBpIHsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoucnRsIC5wcm9kdWN0LWJsb2NrLXByaWNpbmcgLmJsb2NrLWlubmVyLWNvbnRlbnQgdWwgaSB7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZyAuYnV0dG9uIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nIC5ncm91cHMtYnV0dG9uIHsKICAgIG1hcmdpbjogNDBweCAwIDQ1cHg7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmcgLmdyb3Vwcy1idXR0b24gLmJ1dHRvbi5hZGRlZCB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nIC5ncm91cHMtYnV0dG9uIC5hZGRlZF90b19jYXJ0LndjLWZvcndhcmQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMTRweCAzMHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMjVweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCAjMjQzMjRhIDAlLCAjZmY1YTVmIDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICMyNDMyNGEgMCUsICNmZjVhNWYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMyNDMyNGEgMCUsICNmZjVhNWYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjRkYyNDMyNEEnLCBlbmRDb2xvcnN0cj0nI0ZGRkY1QTVGJywgR3JhZGllbnRUeXBlPTEpOwogICAgY29sb3I6ICNmZmY7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmcgLmdyb3Vwcy1idXR0b24gLmFkZGVkX3RvX2NhcnQud2MtZm9yd2FyZDpob3ZlciwKLnByb2R1Y3QtYmxvY2stcHJpY2luZyAuZ3JvdXBzLWJ1dHRvbiAuYWRkZWRfdG9fY2FydC53Yy1mb3J3YXJkOmFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICNmZjVhNWYgMCUsICMyNDMyNGEgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQobGVmdCwgI2ZmNWE1ZiAwJSwgIzI0MzI0YSAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmNWE1ZiAwJSwgIzI0MzI0YSAxMDAlKTsKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNGRkZGNUE1RicsIGVuZENvbG9yc3RyPScjRkYyNDMyNEEnLCBHcmFkaWVudFR5cGU9MSk7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmc6aG92ZXIgLndvb2NvbW1lcmNlLVByaWNlLWFtb3VudCB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCAjMjQzMjRhIDAlLCAjZmY1YTVmIDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICMyNDMyNGEgMCUsICNmZjVhNWYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMyNDMyNGEgMCUsICNmZjVhNWYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjRkYyNDMyNEEnLCBlbmRDb2xvcnN0cj0nI0ZGRkY1QTVGJywgR3JhZGllbnRUeXBlPTEpOwogICAgY29sb3I6ICNmZmY7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmc6aG92ZXIgLmJ1dHRvbiB7CiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nOmhvdmVyIC5idXR0b246YmVmb3JlIHsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmczIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDgwcHggMTBweCA1MHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmczIC5uYW1lIHsKICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBtYXJnaW46IDAgMCA4cHg7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmczIC5kZXNjIHN0cm9uZyB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZzMgLnByaWNlIHsKICAgIGZvbnQtc2l6ZTogNDBweDsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZzMgLnByaWNlIC53b29jb21tZXJjZS1QcmljZS1jdXJyZW5jeVN5bWJvbCB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7CiAgICBmb250LXdlaWdodDogNjAwOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nMyAud3JhcHBlci1wcmljaW5nIHsKICAgIG1heC13aWR0aDogMzEwcHg7CiAgICBtYXJnaW46IGF1dG87CiAgICBwYWRkaW5nOiA1cHggMDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlNWU1OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTU7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmczIC5ibG9jay1pbm5lci1jb250ZW50PnVsIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBtYXJnaW46IDQwcHggMCA0MnB4OwogICAgcGFkZGluZzogMDsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZzMgLmJsb2NrLWlubmVyLWNvbnRlbnQ+dWwgbGkgewogICAgbWFyZ2luOiAwIDAgNXB4Owp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nMyAuYmxvY2staW5uZXItY29udGVudD51bCBsaT5pIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmczIC50aHVtYm5haWwtd3JhcHBlciB7CiAgICBtYXJnaW46IDUwcHggMCA1NHB4Owp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nMyAuYnV0dG9uIHsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA1cHggMTVweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmczIC5idXR0b246YmVmb3JlIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZzMgLmJ1dHRvbjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZzMgLmxhYmVsIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IC0zN3B4OwogICAgbWFyZ2luLWxlZnQ6IDEwMCU7CiAgICB0b3A6IC0xMHB4OwogICAgcGFkZGluZzogMTBweCAyNXB4OwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICAtbW96LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7Cn0KCi5wcm9kdWN0LWJsb2NrLXByaWNpbmczIC5sYWJlbDphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICB3aWR0aDogMTBweDsKICAgIGhlaWdodDogNnB4OwogICAgYm9yZGVyLXdpZHRoOiAzcHggNXB4OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmMGUxNSAjZmYwZTE1IHRyYW5zcGFyZW50Owp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nMyAubGFiZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMTAwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIGJvcmRlci13aWR0aDogMTdweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWYgdHJhbnNwYXJlbnQgI2ZmNWE1ZiAjZmY1YTVmOwp9CgoucHJvZHVjdC1ibG9jay1wcmljaW5nMy5pcy1mZWF0dXJlZCwKLnByb2R1Y3QtYmxvY2stcHJpY2luZzM6aG92ZXIgewogICAgei1pbmRleDogMTsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZzMuaXMtZmVhdHVyZWQgLmJ1dHRvbiwKLnByb2R1Y3QtYmxvY2stcHJpY2luZzM6aG92ZXIgLmJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoKLnByb2R1Y3QtYmxvY2stcHJpY2luZzMuaXMtZmVhdHVyZWQgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgYm94LXNoYWRvdzogMCA1cHggMjBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoKLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5tZnAtY29udGVudCB7CiAgICB3aWR0aDogNTkwcHg7CiAgICBtYXgtd2lkdGg6IDkwJTsKfQoKLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5hcHVzLW1mcC1jbG9zZSB7CiAgICBiYWNrZ3JvdW5kOiAjZTQ0MzQzOwogICAgY29sb3I6ICNmZmY7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiA0N3B4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDIycHgsIC0yMnB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMnB4LCAtMjJweCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMnB4LCAtMjJweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMnB4LCAtMjJweCk7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAuYXB1cy1tZnAtY2xvc2U6aG92ZXIsCi5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAuYXB1cy1tZnAtY2xvc2U6Zm9jdXMgewogICAgYmFja2dyb3VuZDogI2UxMmQyZDsKfQoKLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5tb2RhbC1jb250ZW50IHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDA7CiAgICBwYWRkaW5nOiAyNjBweCA2MHB4IDQwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAubW9kYWwtY29udGVudCBoMyB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBtYXJnaW46IDAgMCAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucG9wdXBuZXdzbGV0dGVyLXdyYXBwZXIgLm1vZGFsLWNvbnRlbnQgaDMgewogICAgICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIH0KfQoKLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5tb2RhbC1jb250ZW50IC5kZXNjcmlwdGlvbiB7CiAgICBmb250LWZhbWlseTogIk51bml0byI7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtYXJnaW46IDAgMCAyMHB4Owp9CgoucG9wdXBuZXdzbGV0dGVyLXdyYXBwZXIgLm1vZGFsLWNvbnRlbnQgZm9ybSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7CiAgICB3aWR0aDogMzI1cHg7CiAgICBiYWNrZ3JvdW5kOiAjZjVmNmY3OwogICAgY2xlYXI6IGJvdGg7CiAgICBtYXJnaW46IDAgYXV0byAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogNDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0NnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNDZweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHBhZGRpbmctcmlnaHQ6IDQ2cHg7Cn0KCi5ydGwgLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5tb2RhbC1jb250ZW50IGZvcm0gewogICAgcGFkZGluZy1sZWZ0OiA0NnB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5tb2RhbC1jb250ZW50IGZvcm0gewogICAgICAgIG1hcmdpbjogMCBhdXRvIDQwcHg7CiAgICB9Cn0KCi5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAubW9kYWwtY29udGVudCBmb3JtOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogI2QyZDJkMjsKfQoKLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5tb2RhbC1jb250ZW50IGZvcm0gLmZvcm0tY29udHJvbCB7CiAgICBiYWNrZ3JvdW5kOiAjZjVmNmY3OwogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA0NnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0NnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0NnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDQ2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0NnB4OwogICAgaGVpZ2h0OiA0NHB4OwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAubW9kYWwtY29udGVudCBmb3JtIC5pbnB1dC1ncm91cCB7CiAgICBwb3NpdGlvbjogc3RhdGljOwogICAgd2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5tb2RhbC1jb250ZW50IGZvcm0gLmlucHV0LWdyb3VwPiogewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIHBvc2l0aW9uOiBzdGF0aWM7Cn0KCi5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAubW9kYWwtY29udGVudCBmb3JtIFt0eXBlPSJzdWJtaXQiXSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgei1pbmRleDogMiAhaW1wb3J0YW50OwogICAgdG9wOiAtMXB4OwogICAgcmlnaHQ6IC0xcHg7CiAgICB6LWluZGV4OiAxOwogICAgd2lkdGg6IDQ2cHg7CiAgICBoZWlnaHQ6IDQ2cHg7CiAgICBsaW5lLWhlaWdodDogNDZweDsKICAgIGJvcmRlci1yYWRpdXM6IDQ2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDQ2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDQ2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDQ2cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwp9CgoucnRsIC5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAubW9kYWwtY29udGVudCBmb3JtIFt0eXBlPSJzdWJtaXQiXSB7CiAgICBsZWZ0OiAtMXB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCi5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAubW9kYWwtY29udGVudCBmb3JtIFt0eXBlPSJzdWJtaXQiXTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4IjsKICAgIGZvbnQtZmFtaWx5OiAnRm9udEF3ZXNvbWUnOwogICAgZm9udC1zaXplOiAxOHB4OwogICAgY29sb3I6ICNmZmY7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogNDVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5tb2RhbC1jb250ZW50IGZvcm0gW3R5cGU9InN1Ym1pdCJdOmhvdmVyLAoucG9wdXBuZXdzbGV0dGVyLXdyYXBwZXIgLm1vZGFsLWNvbnRlbnQgZm9ybSBbdHlwZT0ic3VibWl0Il06Zm9jdXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMjcyZTsKfQoKLnBvcHVwbmV3c2xldHRlci13cmFwcGVyIC5jbG9zZS1kb250LXNob3c6aG92ZXIsCi5wb3B1cG5ld3NsZXR0ZXItd3JhcHBlciAuY2xvc2UtZG9udC1zaG93OmZvY3VzIHsKICAgIGNvbG9yOiAjZTQ0MzQzOwp9CgouZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICBwYWRkaW5nOiAxNXB4Owp9CgouZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciAudGl0bGUgewogICAgY29sb3I6ICMwMDZjNzA7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAyMHB4Owp9CgouZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciAuYm94LWVtcGxveWVyIHsKICAgIG1hcmdpbjogMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciAuaW5uZXItcmlnaHQgewogICAgICAgIHBhZGRpbmc6IDEwcHggMTVweCAxNXB4OwogICAgfQogICAgLmZvcm0tbG9naW4tcmVnaXN0ZXItaW5uZXIgLmJhbm5lci1pbWFnZSB7CiAgICAgICAgcGFkZGluZy1yaWdodDogMDsKICAgIH0KICAgIC5ydGwgLmZvcm0tbG9naW4tcmVnaXN0ZXItaW5uZXIgLmJhbm5lci1pbWFnZSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7CiAgICB9Cn0KCi5mb3JtLWxvZ2luLXJlZ2lzdGVyLWlubmVyIC5mb3JtLWdyb3VwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmZvcm0tbG9naW4tcmVnaXN0ZXItaW5uZXIgLmZvcm0tZ3JvdXA+aSB7CiAgICBjb2xvcjogIzAwNmM3MDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogN3B4OwogICAgZm9udC1zaXplOiAyMXB4OwogICAgcmlnaHQ6IDE3cHg7CiAgICB6LWluZGV4OiAxOwp9CgoucnRsIC5mb3JtLWxvZ2luLXJlZ2lzdGVyLWlubmVyIC5mb3JtLWdyb3VwPmkgewogICAgbGVmdDogMTdweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgouZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciAuYmFubmVyLWltYWdlIC5pbWFnZS13cmFwcGVyIHsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmZvcm0tbG9naW4tcmVnaXN0ZXItaW5uZXIgLmJveC13aGl0ZS1kYXNoYm9hcmQgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGJvcmRlcjogMDsKfQoKLmZvcm0tbG9naW4tcmVnaXN0ZXItaW5uZXIgI3JlZ2lzdGVyLXBob25lLWNjKy5zZWxlY3QyIHsKICAgIHdpZHRoOiA5NXB4ICFpbXBvcnRhbnQ7Cn0KCi5mb3JtLWxvZ2luLXJlZ2lzdGVyLWlubmVyICNyZWdpc3Rlci1waG9uZS1jYysuc2VsZWN0MiAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4Owp9CgoucnRsIC5mb3JtLWxvZ2luLXJlZ2lzdGVyLWlubmVyICNyZWdpc3Rlci1waG9uZS1jYysuc2VsZWN0MiAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDRweCA0cHggMDsKICAgIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwOwp9CgouZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciAjcmVnaXN0ZXItcGhvbmUtY2MrLnNlbGVjdDIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7CiAgICBwYWRkaW5nOiAxMHB4IDhweDsKfQoKLmZvcm0tbG9naW4tcmVnaXN0ZXItaW5uZXIgI3JlZ2lzdGVyLXBob25lIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA5NXB4KSAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDRweCA0cHggMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCA0cHggNHB4IDA7CiAgICBib3JkZXItcmFkaXVzOiAwIDRweCA0cHggMDsKICAgIGJvcmRlci1sZWZ0OiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLnJ0bCAuZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciAjcmVnaXN0ZXItcGhvbmUgewogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4IDAgMCA0cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDsKfQoKLnJ0bCAuZm9ybS1sb2dpbi1yZWdpc3Rlci1pbm5lciAjcmVnaXN0ZXItcGhvbmUgewogICAgYm9yZGVyLXJpZ2h0OiAwOwogICAgYm9yZGVyLWxlZnQ6IGluaGVyaXQ7Cn0KCi5yZWdpc3Rlci1mb3JtLW90cCB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoucmVnaXN0ZXItZm9ybS1vdHAgLnJlc2VuZCB7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CgoucmVnaXN0ZXItZm9ybS1vdHAgLnNlbnQtdHh0IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi5yZWdpc3Rlci1mb3JtLW90cCAuc2VudC10eHQgc3Ryb25nIHsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKLnJlZ2lzdGVyLWZvcm0tb3RwIC5zZW50LXR4dCAubm8tY2hhbmdlIHsKICAgIGNvbG9yOiAjMDAwOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLm90cC1pbnB1dC1jb250IHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgd2lkdGg6IDEwMCU7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAtd2Via2l0LWZsZXgtd3JhcDogd3JhcDsKfQoKLm90cC1pbnB1dC1jb250IGlucHV0IHsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYiAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIHdpZHRoOiBjYWxjKDIwJSAtIDIwcHgpOwogICAgbWFyZ2luOiAzcHggMTBweCAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcGFkZGluZzogN3B4OwogICAgb3V0bGluZTogbm9uZTsKfQoKLmxvZ2luLWluZm8sCi5yZWdpc3Rlci1pbmZvIHsKICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5sb2dpbi1pbmZvIC5hcHVzLXVzZXItbG9naW4sCi5sb2dpbi1pbmZvIC5hcHVzLXVzZXItcmVnaXN0ZXIsCi5yZWdpc3Rlci1pbmZvIC5hcHVzLXVzZXItbG9naW4sCi5yZWdpc3Rlci1pbmZvIC5hcHVzLXVzZXItcmVnaXN0ZXIgewogICAgY29sb3I6ICM2NjI0MjY7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgoubmF2LXRhYnMtbG9naW4gewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlN2VjZWE7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4Owp9CgoubmF2LXRhYnMtbG9naW4+bGkgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogNTAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luOiAwOwp9CgoucnRsIC5uYXYtdGFicy1sb2dpbj5saSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5uYXYtdGFicy1sb2dpbj5saT5hIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAxNHB4IDI1cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5uYXYtdGFicy1sb2dpbj5saS5hY3RpdmU+YTpmb2N1cywKLm5hdi10YWJzLWxvZ2luPmxpLmFjdGl2ZT5hOmhvdmVyLAoubmF2LXRhYnMtbG9naW4+bGkuYWN0aXZlPmEgewogICAgYmFja2dyb3VuZDogI2Y1ZjVmNSAhaW1wb3J0YW50Owp9CgoubmF2LXRhYnMtbG9naW4rLnRhYi1jb250ZW50IHsKICAgIHBhZGRpbmc6IDM1cHggMjVweCAyNXB4Owp9Cgoucm9sZS10YWJzIHsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjbGVhcjogYm90aDsKICAgIHdpZHRoOiAxMDAlOwp9Cgoucm9sZS10YWJzIGxpIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHBhZGRpbmc6IDE0cHggMTVweDsKICAgIHdpZHRoOiA1MCU7CiAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50Owp9CgoucnRsIC5yb2xlLXRhYnMgbGkgewogICAgZmxvYXQ6IHJpZ2h0Owp9Cgoucm9sZS10YWJzIGxpIGlucHV0IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5yb2xlLXRhYnMgbGkgbGFiZWwgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgbWFyZ2luOiAwOwogICAgd2lkdGg6IDEwMCU7Cn0KCi5yb2xlLXRhYnMgbGk6aG92ZXIsCi5yb2xlLXRhYnMgbGk6Zm9jdXMsCi5yb2xlLXRhYnMgbGkuYWN0aXZlIHsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgYm9yZGVyLWNvbG9yOiAjZmY1YTVmOwp9Cgoucm9sZS10YWJzIGxhYmVsIHsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgN3B4OwogICAgY3Vyc29yOiBwb2ludGVyOwp9Cgoucm9sZS10YWJzIGxhYmVsIC50ZXh0LWFjdGlvbiB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLnJvbGUtdGFicyBsYWJlbCBbdHlwZT0icmFkaW8iXSB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgoucm9sZS10YWJzIGxhYmVsIFt0eXBlPSJyYWRpbyJdOmNoZWNrZWQrLnRleHQtYWN0aW9uIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoubG9naW4tZm9ybS13cmFwcGVyIC53cF9yZWFsZXN0YXRlX2NhbmRpZGF0ZV9zaG93LAoucmVnaXN0ZXItZm9ybSAud3BfcmVhbGVzdGF0ZV9jYW5kaWRhdGVfc2hvdyB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLmxvZ2luLWZvcm0td3JhcHBlciBsYWJlbCwKLnJlZ2lzdGVyLWZvcm0gbGFiZWwgewogICAgbWFyZ2luOiAwIDAgMTBweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgLmZvcm0tZ3JvdXAsCi5yZWdpc3Rlci1mb3JtIC5mb3JtLWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgLmZvcm0tZ3JvdXA+LnJlcXVpcmVkLWZpZWxkLAoucmVnaXN0ZXItZm9ybSAuZm9ybS1ncm91cD4ucmVxdWlyZWQtZmllbGQgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmxvZ2luLWZvcm0td3JhcHBlciAuYmFjay1saW5rLAoucmVnaXN0ZXItZm9ybSAuYmFjay1saW5rIHsKICAgIGNvbG9yOiAjOGI5MWRkOwp9CgoubG9naW4tZm9ybS13cmFwcGVyIC5yZW1lbWJlciwKLnJlZ2lzdGVyLWZvcm0gLnJlbWVtYmVyIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdywKLnJlZ2lzdGVyLWZvcm0gLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoubG9naW4tZm9ybS13cmFwcGVyIFt0eXBlPSJjaGVja2JveCJdLAoucmVnaXN0ZXItZm9ybSBbdHlwZT0iY2hlY2tib3giXSB7CiAgICBtYXJnaW4tcmlnaHQ6IDJweDsKfQoKLnJ0bCAubG9naW4tZm9ybS13cmFwcGVyIFt0eXBlPSJjaGVja2JveCJdLAoucnRsIC5yZWdpc3Rlci1mb3JtIFt0eXBlPSJjaGVja2JveCJdIHsKICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgLmluZm8sCi5yZWdpc3Rlci1mb3JtIC5pbmZvIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLmxvZ2luLWZvcm0td3JhcHBlciAuY3JlYXRlLWFjY291bnQsCi5yZWdpc3Rlci1mb3JtIC5jcmVhdGUtYWNjb3VudCB7CiAgICBtYXJnaW46IDAgMCA1cHg7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgLmNyZWF0ZS1hY2NvdW50IC5jcmVhdGUsCi5yZWdpc3Rlci1mb3JtIC5jcmVhdGUtYWNjb3VudCAuY3JlYXRlIHsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgLmlubmVyLXJlZ2lzdGVyLAoucmVnaXN0ZXItZm9ybSAuaW5uZXItcmVnaXN0ZXIgewogICAgcGFkZGluZzogMjBweCAzMHB4IDMwcHg7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgaDMsCi5yZWdpc3Rlci1mb3JtIGgzIHsKICAgIG1hcmdpbjogMCAwIDIwcHg7CiAgICBmb250LXNpemU6IDIycHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgI2ZvcmdvdC1wYXNzd29yZC1mb3JtLXdyYXBwZXIsCi5yZWdpc3Rlci1mb3JtICNmb3Jnb3QtcGFzc3dvcmQtZm9ybS13cmFwcGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgLmJ0biwKLnJlZ2lzdGVyLWZvcm0gLmJ0biB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBwYWRkaW5nOiAxMHB4IDMwcHg7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgLmJ0bi10aGVtZSwKLnJlZ2lzdGVyLWZvcm0gLmJ0bi10aGVtZSB7CiAgICBib3JkZXItd2lkdGg6IDJweDsKfQoKLmxvZ2luLWZvcm0td3JhcHBlciAuYnRuLXRoZW1lOmhvdmVyLAoubG9naW4tZm9ybS13cmFwcGVyIC5idG4tdGhlbWU6Zm9jdXMsCi5yZWdpc3Rlci1mb3JtIC5idG4tdGhlbWU6aG92ZXIsCi5yZWdpc3Rlci1mb3JtIC5idG4tdGhlbWU6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWYgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWY7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgI3JlY2FwdGNoYS1jb250YWN0LWZvcm0sCi5yZWdpc3Rlci1mb3JtICNyZWNhcHRjaGEtY29udGFjdC1mb3JtIHsKICAgIG1pbi1oZWlnaHQ6IDg4cHg7Cn0KCi5sb2dpbi1mb3JtLXdyYXBwZXIgI3JlY2FwdGNoYS1jb250YWN0LWZvcm0+ZGl2LAoucmVnaXN0ZXItZm9ybSAjcmVjYXB0Y2hhLWNvbnRhY3QtZm9ybT5kaXYgewogICAgbWFyZ2luOiAwIGF1dG8gMTBweDsKfQoKLnNpZ24taW4tZGVtby1ub3RpY2UgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIHBhZGRpbmc6IDEwcHggMThweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgYmFja2dyb3VuZDogI2NjZjVlZjsKfQoKLnNpZ24taW4tZGVtby1ub3RpY2Ugc3Ryb25nIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGNvbG9yOiAjMjdjZWI0OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQoKLmZvcmdvdHBhc3N3b3JkLWZvcm0sCi5qb2ItYXBwbHktZW1haWwtZm9ybSwKLmNoYW5nZS1wYXNzd29yZC1mb3JtLAouZGVsZXRlLXByb2ZpbGUtZm9ybSwKLnJlZ2lzdGVyLWZvcm0sCi5sb2dpbi1mb3JtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmZvcmdvdHBhc3N3b3JkLWZvcm06YmVmb3JlLAouam9iLWFwcGx5LWVtYWlsLWZvcm06YmVmb3JlLAouY2hhbmdlLXBhc3N3b3JkLWZvcm06YmVmb3JlLAouZGVsZXRlLXByb2ZpbGUtZm9ybTpiZWZvcmUsCi5yZWdpc3Rlci1mb3JtOmJlZm9yZSwKLmxvZ2luLWZvcm06YmVmb3JlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSkgdXJsKCIuLi9pbWFnZXMvbG9hZGluZy5naWYiKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlci8zMnB4IGF1dG87CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB6LWluZGV4OiAyOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwp9CgouZm9yZ290cGFzc3dvcmQtZm9ybS5sb2FkaW5nOmJlZm9yZSwKLmpvYi1hcHBseS1lbWFpbC1mb3JtLmxvYWRpbmc6YmVmb3JlLAouY2hhbmdlLXBhc3N3b3JkLWZvcm0ubG9hZGluZzpiZWZvcmUsCi5kZWxldGUtcHJvZmlsZS1mb3JtLmxvYWRpbmc6YmVmb3JlLAoucmVnaXN0ZXItZm9ybS5sb2FkaW5nOmJlZm9yZSwKLmxvZ2luLWZvcm0ubG9hZGluZzpiZWZvcmUgewogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLmlubmVyLXNvY2lhbD5kaXYgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmlubmVyLXNvY2lhbD5kaXYgYSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDEycHggMzBweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ZmNWE1ZjsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5pbm5lci1zb2NpYWw+ZGl2IGE6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi5pbm5lci1zb2NpYWw+ZGl2IGE+aSB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi10b3A6IDRweDsKfQoKLnJ0bCAuaW5uZXItc29jaWFsPmRpdiBhPmkgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouaW5uZXItc29jaWFsPmRpdiBhLmZhY2Vib29rLWxvZ2luLWJ0biB7CiAgICBib3JkZXItY29sb3I6ICM1MDZkYWI7CiAgICBjb2xvcjogIzUwNmRhYjsKfQoKLmlubmVyLXNvY2lhbD5kaXYgYS5mYWNlYm9vay1sb2dpbi1idG46aG92ZXIsCi5pbm5lci1zb2NpYWw+ZGl2IGEuZmFjZWJvb2stbG9naW4tYnRuOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1MDZkYWI7Cn0KCi5pbm5lci1zb2NpYWw+ZGl2IGEuZ29vZ2xlLWxvZ2luLWJ0bi13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogI2RkNGIzOTsKICAgIGNvbG9yOiAjZGQ0YjM5Owp9CgouaW5uZXItc29jaWFsPmRpdiBhLmdvb2dsZS1sb2dpbi1idG4td3JhcHBlcjpob3ZlciwKLmlubmVyLXNvY2lhbD5kaXYgYS5nb29nbGUtbG9naW4tYnRuLXdyYXBwZXI6Zm9jdXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkNGIzOTsKfQoKLmlubmVyLXNvY2lhbCAubGluZS1oZWFkZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgY29sb3I6ICMwMDZjNzA7Cn0KCi5pbm5lci1zb2NpYWwgLmxpbmUtaGVhZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDFweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLmlubmVyLXNvY2lhbCAubGluZS1oZWFkZXIgc3BhbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwogICAgcGFkZGluZzogMCA1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KCi5jb250YWN0LWZvcm0td3JhcHBlciAuYnV0dG9uIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmNvbnRhY3QtZm9ybS13cmFwcGVyIC5idXR0b246YmVmb3JlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC0xcHg7CiAgICBsZWZ0OiAtMXB4OwogICAgd2lkdGg6IGNhbGMoMTAwJSArIDJweCk7CiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSkgdXJsKCIuLi9pbWFnZXMvbG9hZGluZy5naWYiKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlci8yMHB4IGF1dG87CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB6LWluZGV4OiAxOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwp9CgouY29udGFjdC1mb3JtLXdyYXBwZXIubG9hZGluZyAuYnV0dG9uOmJlZm9yZSB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgouY29udGFjdC1mb3JtLXdyYXBwZXIgLmdhLXJlY2FwdGNoYSB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgoucGhvbmUtd3JhcHBlci5waG9uZS1oaWRlIC5waG9uZSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoucGhvbmUtd3JhcHBlci5waG9uZS1oaWRlIC5waG9uZS1zaG93IHNwYW4gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDJweDsKICAgIHBhZGRpbmc6IDFweCA2cHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyNDMyNEE7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIG1hcmdpbi1sZWZ0OiAycHg7Cn0KCi5ydGwgLnBob25lLXdyYXBwZXIucGhvbmUtaGlkZSAucGhvbmUtc2hvdyBzcGFuIHsKICAgIG1hcmdpbi1yaWdodDogMnB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5waG9uZS13cmFwcGVyLnBob25lLWhpZGUuc2hvdyAucGhvbmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgoucGhvbmUtd3JhcHBlci5waG9uZS1oaWRlLnNob3cgLnBob25lLXNob3cgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm1hcC1wb3B1cCB7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIG1hcmdpbi10b3A6IC00MHB4OwogICAgbWFyZ2luLWxlZnQ6IC0yMHB4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQoKLm1hcC1wb3B1cDpiZWZvcmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgoubWFwLXBvcHVwIC5pY29uLXdyYXBwZXIgewogICAgY29sb3I6ICNmZjVhNWYgIWltcG9ydGFudDsKICAgIGZvbnQtc2l6ZTogMzhweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5tYXAtcG9wdXAgLmljb24td3JhcHBlcjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMzVweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG1hcmdpbi10b3A6IC0yMHB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVYKC02MGRlZykgc2NhbGUoMCk7CiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZVgoLTYwZGVnKSBzY2FsZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgtNjBkZWcpIHNjYWxlKDApOwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgoubWFwLXBvcHVwIC5pY29uLXdyYXBwZXI6bm90KC5oYXMtaW1nKTphZnRlciB7CiAgICBjb250ZW50OiAiXGYxM2QiOwogICAgZm9udC1mYW1pbHk6ICJGbGF0aWNvbiI7Cn0KCi5tYXAtcG9wdXAgLmljb24td3JhcHBlcjpob3ZlciwKLm1hcC1wb3B1cCAuaWNvbi13cmFwcGVyOmZvY3VzIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoubWFwLXBvcHVwIC5pY29uLXdyYXBwZXI6aG92ZXI6YmVmb3JlLAoubWFwLXBvcHVwIC5pY29uLXdyYXBwZXI6Zm9jdXM6YmVmb3JlIHsKICAgIGFuaW1hdGlvbjogc2NhbGVfaWNvbl9tYXAgMS41cyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2NhbGVfaWNvbl9tYXAgMS41cyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZSBub3JtYWw7Cn0KCi5tYXAtcG9wdXAubWFwLXBvcHVwLXNlbGVjdGVkIC5pY29uLXdyYXBwZXI6YmVmb3JlIHsKICAgIGFuaW1hdGlvbjogc2NhbGVfaWNvbl9tYXAgMS41cyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZSBub3JtYWw7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2NhbGVfaWNvbl9tYXAgMS41cyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZSBub3JtYWw7Cn0KCi5jbWItZm9ybSAuaWNvbi13cmFwcGVyOmJlZm9yZSwKLnNpbmdsZS1wcm9wZXJ0eS1tYXAgLmljb24td3JhcHBlcjpiZWZvcmUgewogICAgYW5pbWF0aW9uOiBzY2FsZV9pY29uX21hcCAxLjVzIGVhc2UtaW4tb3V0IDBzIGluZmluaXRlIG5vcm1hbDsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzY2FsZV9pY29uX21hcCAxLjVzIGVhc2UtaW4tb3V0IDBzIGluZmluaXRlIG5vcm1hbDsKfQoKLnNhdmVkLXNlYXJjaC1mb3JtLAojcHJvcGVydGllcy1nb29nbGUtbWFwcywKLm1haW4taXRlbXMtd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5zYXZlZC1zZWFyY2gtZm9ybS5sb2FkaW5nOmJlZm9yZSwKI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMubG9hZGluZzpiZWZvcmUsCi5tYWluLWl0ZW1zLXdyYXBwZXIubG9hZGluZzpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgMjAwcHg7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHN0cm9rZT0icmdiYSgxMDIsMTAyLDEwMiwwLjI1KSIlM0UlM0NnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIlM0UlM0NnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiIHN0cm9rZS13aWR0aD0iMiIlM0UlM0NjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9Ii41NSIgY3g9IjE4IiBjeT0iMTgiIHI9IjE4Ii8lM0UlM0NwYXRoIGQ9Ik0zNiAxOGMwLTkuOTQtOC4wNi0xOC0xOC0xOCIlM0UlM0NhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiBmcm9tPSIwIDE4IDE4IiB0bz0iMzYwIDE4IDE4IiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvJTNFJTNDL3BhdGglM0UlM0MvZyUzRSUzQy9nJTNFJTNDL3N2ZyUzRScpOwogICAgbWF4LWhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMzsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9CgouYnRuLXJlbW92ZS1jb21wYXJlLWFsbCwKLmxvYWRtb3JlLW1lc3NhZ2UtYnRuLAoubG9hZG1vcmUtcmVwbGllZC1idG4sCi5yZXBseS1tZXNzYWdlLWJ0biB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKfQoKLmJ0bi1yZW1vdmUtY29tcGFyZS1hbGw6YmVmb3JlLAoubG9hZG1vcmUtbWVzc2FnZS1idG46YmVmb3JlLAoubG9hZG1vcmUtcmVwbGllZC1idG46YmVmb3JlLAoucmVwbHktbWVzc2FnZS1idG46YmVmb3JlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgY29udGVudDogJ1xmMTEwJzsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICBmb250LXdlaWdodDogOTAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBtYXJnaW46IC0xNHB4IC04cHg7Cn0KCi5idG4tcmVtb3ZlLWNvbXBhcmUtYWxsLmxvYWRpbmcsCi5sb2FkbW9yZS1tZXNzYWdlLWJ0bi5sb2FkaW5nLAoubG9hZG1vcmUtcmVwbGllZC1idG4ubG9hZGluZywKLnJlcGx5LW1lc3NhZ2UtYnRuLmxvYWRpbmcgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKfQoKLmJ0bi1yZW1vdmUtY29tcGFyZS1hbGwubG9hZGluZzpiZWZvcmUsCi5sb2FkbW9yZS1tZXNzYWdlLWJ0bi5sb2FkaW5nOmJlZm9yZSwKLmxvYWRtb3JlLXJlcGxpZWQtYnRuLmxvYWRpbmc6YmVmb3JlLAoucmVwbHktbWVzc2FnZS1idG4ubG9hZGluZzpiZWZvcmUgewogICAgb3BhY2l0eTogMC44OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTsKICAgIGFuaW1hdGlvbjogcm90YXRlX2ljb24gMTUwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0ZV9pY29uIDE1MDBtcyBsaW5lYXIgMHMgbm9ybWFsIG5vbmUgaW5maW5pdGUgcnVubmluZzsKfQoKLnNhdmVkLXNlYXJjaC1mb3JtLmxvYWRpbmc6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzLmxvYWRpbmc6YmVmb3JlIHsKICAgIHotaW5kZXg6IDk5OTsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7Cn0KCi5wcm9wZXJ0eS10aXRsZSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBtYXJnaW46IDAgMCAxNXB4Owp9CgoucHJvcGVydHktcHJpY2UgewogICAgZm9udC1zaXplOiAyNXB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnByb3BlcnR5LXByaWNlIHsKICAgICAgICBmb250LXNpemU6IDMwcHg7CiAgICB9Cn0KCi5wcm9wZXJ0eS1wcmljZSAucHJlZml4LXRleHQsCi5wcm9wZXJ0eS1wcmljZSAuc3VmZml4LXRleHQgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1wcmljZSAucHJlZml4LXRleHQsCiAgICAucHJvcGVydHktcHJpY2UgLnN1ZmZpeC10ZXh0IHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICB9Cn0KCi5mZWF0dXJlZC1wcm9wZXJ0eSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmF2YXRhci13cmFwcGVyIC5hdmF0YXItaW1nIHsKICAgIHdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgouYXZhdGFyLXdyYXBwZXIgLmF2YXRhci1pbWcgaW1nIHsKICAgIG1hcmdpbjogMDsKfQoKLmF2YXRhci13cmFwcGVyIC5hdmF0YXItaW1nKy5uYW1lLWF1dGhvciB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7Cn0KCi5hdmF0YXItd3JhcHBlciAubmFtZS1hdXRob3IgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoucnRsIC5hdmF0YXItd3JhcHBlciAubmFtZS1hdXRob3IgewogICAgcGFkZGluZy1yaWdodDogMTBweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLnByb3BlcnR5LXBvc3RkYXRlIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5ib3gtd2hpdGUtZGV0YWlsIHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmJveC13aGl0ZS1kZXRhaWwgewogICAgICAgIHBhZGRpbmc6IDI1cHggMzBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgouYm94LXdoaXRlLWRldGFpbCAudGl0bGUgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgbWFyZ2luOiAwIDAgMTVweDsKfQoKLnRpdGxlLXdyYXBwZXI+KiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgoudGl0bGUtd3JhcHBlcj4qKyogewogICAgbWFyZ2luLWxlZnQ6IDZweDsKfQoKLnJ0bCAudGl0bGUtd3JhcHBlcj4qKyogewogICAgbWFyZ2luLXJpZ2h0OiA2cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLnRpdGxlLXdyYXBwZXIgLmFnZW5jeS10aXRsZSwKLnRpdGxlLXdyYXBwZXIgLmFnZW50LXRpdGxlIHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50aXRsZS13cmFwcGVyIC5hZ2VuY3ktdGl0bGUsCiAgICAudGl0bGUtd3JhcHBlciAuYWdlbnQtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogNDBweDsKICAgIH0KfQoKLnN0YXItcmF0aW5nIC5yZXZpZXctYXZnIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5yZXZpZXctc3RhcnMtcmF0ZWQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHdpZHRoOiA5OXB4Owp9CgoucmV2aWV3LXN0YXJzLXJhdGVkIC5yZXZpZXctc3RhcnMgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICBjb2xvcjogI2UxZTFlMTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgaGVpZ2h0OiAxOXB4OwogICAgbGluZS1oZWlnaHQ6IDE5cHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsZXR0ZXItc3BhY2luZzogMnB4Owp9CgoucmV2aWV3LXN0YXJzLXJhdGVkIC5yZXZpZXctc3RhcnMgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgoucmV2aWV3LXN0YXJzLXJhdGVkIC5yZXZpZXctc3RhcnMuZmlsbGVkIHsKICAgIGNvbG9yOiAjYmNjNTJhOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKfQoKLnJ0bCAucmV2aWV3LXN0YXJzLXJhdGVkIC5yZXZpZXctc3RhcnMuZmlsbGVkIHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKfQoKLnJldmlldy1zdGFycy1yYXRlZC13cmFwcGVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLnJldmlldy1zdGFycy1yYXRlZC13cmFwcGVyIC5uYi1yZXZpZXcgewogICAgbWFyZ2luLWxlZnQ6IDVweDsKfQoKLnJ0bCAucmV2aWV3LXN0YXJzLXJhdGVkLXdyYXBwZXIgLm5iLXJldmlldyB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgoucmV2aWV3LXRpdGxlLXdyYXBwZXIgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoKLnJldmlldy10aXRsZS13cmFwcGVyIC5jb21tZW50cy10aXRsZSwKLnJldmlldy10aXRsZS13cmFwcGVyIC50aXRsZSB7CiAgICBtYXJnaW46IDA7CiAgICBmb250LXNpemU6IDE4cHg7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDM7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LWZhbWlseTogIk51bml0byIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICBsaW5lLWhlaWdodDogMS43NTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIC5sZWFmbGV0LXBvcHVwLWNvbnRlbnQgewogICAgbGluZS1oZWlnaHQ6IDEuNzU7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIC5sZWFmbGV0LXBvcHVwLWNvbnRlbnQgewogICAgbWFyZ2luOiAwOwp9CgojcHJvcGVydGllcy1nb29nbGUtbWFwcyAubGVhZmxldC1wb3B1cC1jb250ZW50LXdyYXBwZXIgewogICAgcGFkZGluZzogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICBib3gtc2hhZG93OiAwIDAgNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIGEgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIGE6aG92ZXIsCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIGE6Zm9jdXMgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIC5wcm9wZXJ0eS1ncmlkIHsKICAgIGJvcmRlcjogMDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CgojcHJvcGVydGllcy1nb29nbGUtbWFwcyAucHJvcGVydHktZ3JpZCAucHJvcGVydHktbG9jYXRpb24gaSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgojcHJvcGVydGllcy1nb29nbGUtbWFwcyAucHJvcGVydHktZ3JpZCAucHJvcGVydHktaW5mb3JtYXRpb24gewogICAgcGFkZGluZzogMTBweCAxMHB4IDVweDsKfQoKI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMgLnByb3BlcnR5LWdyaWQgLnByb3BlcnR5LW1ldGFzIHsKICAgIHBhZGRpbmctdG9wOiA1cHg7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzLmxlYWZsZXQtY29udGFpbmVyIGEubGVhZmxldC1wb3B1cC1jbG9zZS1idXR0b24gewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIHBhZGRpbmc6IDVweCA3cHggN3B4OwogICAgaGVpZ2h0OiBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBsaW5lLWhlaWdodDogMTsKICAgIG1hcmdpbjogLTEwcHggLTEwcHggMCAwOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBjb2xvcjogI2U0NDM0MzsKICAgIG9wYWNpdHk6IDAuODsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT04MCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMubGVhZmxldC1jb250YWluZXIgYS5sZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbjpob3ZlciwKI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMubGVhZmxldC1jb250YWluZXIgYS5sZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbjpmb2N1cyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNlNDQzNDM7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIC5sZWFmbGV0LXBvcHVwIHsKICAgIG1hcmdpbi1ib3R0b206IDM4cHg7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIC5tYXJrZXItY2x1c3RlciB7CiAgICB3aWR0aDogNDRweCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiA0NHB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogLTIycHggIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IC0yMnB4ICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJvcmRlcjogMnB4IHNvbGlkICNmZjVhNWY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIC5tYXJrZXItY2x1c3Rlcj5kaXYgewogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogNDBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGNvbG9yOiAjZGEwMDAxOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCiNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIC5tYXJrZXItY2x1c3RlcjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC04cHg7CiAgICBsZWZ0OiAtOHB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxNnB4KTsKICAgIGhlaWdodDogY2FsYygxMDAlICsgMTZweCk7CiAgICBvcGFjaXR5OiAwLjI1OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTI1KTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMC41KTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTsKfQoKI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMgLm1hcmtlci1jbHVzdGVyOmhvdmVyOmJlZm9yZSwKI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMgLm1hcmtlci1jbHVzdGVyOmZvY3VzOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwp9Cgouc29jaWFscy1tZW1iZXIgYSB7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICBjb2xvcjogIzc2NzY3NjsKfQoKLnJ0bCAuc29jaWFscy1tZW1iZXIgYSB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnNvY2lhbHMtbWVtYmVyIGE6aG92ZXIsCi5zb2NpYWxzLW1lbWJlciBhOmZvY3VzIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuc29jaWFscy1tZW1iZXIgYSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgfQogICAgLnJ0bCAuc29jaWFscy1tZW1iZXIgYSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQp9CgoucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyLAouYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlciwKLmFnZW50cy1vcmRlcmluZy13cmFwcGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyLAogICAgLmFnZW5jaWVzLW9yZGVyaW5nLXdyYXBwZXIsCiAgICAuYWdlbnRzLW9yZGVyaW5nLXdyYXBwZXIgewogICAgICAgIHBhZGRpbmc6IDE1cHggMzBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgoucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyIC5wcm9wZXJ0aWVzLW9yZGVyaW5nLAouYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlciAucHJvcGVydGllcy1vcmRlcmluZywKLmFnZW50cy1vcmRlcmluZy13cmFwcGVyIC5wcm9wZXJ0aWVzLW9yZGVyaW5nIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgoucnRsIC5wcm9wZXJ0aWVzLW9yZGVyaW5nLXdyYXBwZXIgLnByb3BlcnRpZXMtb3JkZXJpbmcsCi5ydGwgLmFnZW5jaWVzLW9yZGVyaW5nLXdyYXBwZXIgLnByb3BlcnRpZXMtb3JkZXJpbmcsCi5ydGwgLmFnZW50cy1vcmRlcmluZy13cmFwcGVyIC5wcm9wZXJ0aWVzLW9yZGVyaW5nIHsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgoucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyIC5zYXZlZC1zZWFyY2gtZm9ybS1idG4sCi5hZ2VuY2llcy1vcmRlcmluZy13cmFwcGVyIC5zYXZlZC1zZWFyY2gtZm9ybS1idG4sCi5hZ2VudHMtb3JkZXJpbmctd3JhcHBlciAuc2F2ZWQtc2VhcmNoLWZvcm0tYnRuIHsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4Owp9CgoucnRsIC5wcm9wZXJ0aWVzLW9yZGVyaW5nLXdyYXBwZXIgLnNhdmVkLXNlYXJjaC1mb3JtLWJ0biwKLnJ0bCAuYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlciAuc2F2ZWQtc2VhcmNoLWZvcm0tYnRuLAoucnRsIC5hZ2VudHMtb3JkZXJpbmctd3JhcHBlciAuc2F2ZWQtc2VhcmNoLWZvcm0tYnRuIHsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyIC5zYXZlZC1zZWFyY2gtZm9ybS1idG4sCiAgICAuYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlciAuc2F2ZWQtc2VhcmNoLWZvcm0tYnRuLAogICAgLmFnZW50cy1vcmRlcmluZy13cmFwcGVyIC5zYXZlZC1zZWFyY2gtZm9ybS1idG4gewogICAgICAgIG1hcmdpbi1sZWZ0OiAyNXB4OwogICAgfQogICAgLnJ0bCAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyIC5zYXZlZC1zZWFyY2gtZm9ybS1idG4sCiAgICAucnRsIC5hZ2VuY2llcy1vcmRlcmluZy13cmFwcGVyIC5zYXZlZC1zZWFyY2gtZm9ybS1idG4sCiAgICAucnRsIC5hZ2VudHMtb3JkZXJpbmctd3JhcHBlciAuc2F2ZWQtc2VhcmNoLWZvcm0tYnRuIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDI1cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9Cn0KCi5wcm9wZXJ0aWVzLW9yZGVyaW5nLXdyYXBwZXIgLmJ0bi1zYXZlZC1zZWFyY2gsCi5hZ2VuY2llcy1vcmRlcmluZy13cmFwcGVyIC5idG4tc2F2ZWQtc2VhcmNoLAouYWdlbnRzLW9yZGVyaW5nLXdyYXBwZXIgLmJ0bi1zYXZlZC1zZWFyY2ggewogICAgZm9udC1zaXplOiAxNnB4Owp9CgoucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyIC5idG4tc2F2ZWQtc2VhcmNoIGksCi5hZ2VuY2llcy1vcmRlcmluZy13cmFwcGVyIC5idG4tc2F2ZWQtc2VhcmNoIGksCi5hZ2VudHMtb3JkZXJpbmctd3JhcHBlciAuYnRuLXNhdmVkLXNlYXJjaCBpIHsKICAgIGZvbnQtc2l6ZTogMjFweDsKICAgIG1hcmdpbi1yaWdodDogNXB4Owp9CgoucnRsIC5wcm9wZXJ0aWVzLW9yZGVyaW5nLXdyYXBwZXIgLmJ0bi1zYXZlZC1zZWFyY2ggaSwKLnJ0bCAuYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlciAuYnRuLXNhdmVkLXNlYXJjaCBpLAoucnRsIC5hZ2VudHMtb3JkZXJpbmctd3JhcHBlciAuYnRuLXNhdmVkLXNlYXJjaCBpIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5hZ2VudC1pdGVtIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hZ2VudC1pdGVtIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgouYWdlbnQtaXRlbTpob3ZlciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKICAgIGJveC1zaGFkb3c6IDAgMCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKfQoKLmFnZW50LWl0ZW0gLnRvcC1pbmZvIHsKICAgIHBhZGRpbmc6IDEwcHg7Cn0KCi5hZ2VudC1pdGVtIC5hZ2VudC10aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDA7Cn0KCi5hZ2VudC1pdGVtIC5wcm9wZXJ0eS1qb2IgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5hZ2VudC1pdGVtIC5tZXRhcyB7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CgouYWdlbnQtaXRlbSAubWV0YXM+ZGl2IHsKICAgIG1hcmdpbi1ib3R0b206IDJweDsKfQoKLmFnZW50LWl0ZW0gLm1ldGFzPmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5hZ2VudC1pdGVtIC5hZ2VudC1pbmZvcm1hdGlvbiB7CiAgICBwYWRkaW5nOiAxMHB4IDEwcHggN3B4Owp9CgouYWdlbnQtaXRlbSAubWVtYmVyLXRodW1ibmFpbC13cmFwcGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKfQoKLmFnZW50LWl0ZW0gLmFnZW50LWluZm9ybWF0aW9uLWJvdHRvbSB7CiAgICBwYWRkaW5nOiAxNXB4IDIwcHg7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2ViZWJlYjsKfQoKLmFnZW50LWdyaWQtdjEgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFnZW50LWdyaWQtdjEgewogICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9Cn0KCi5hZ2VudC1ncmlkLXYxIC5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgewogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKLmFnZW50LWdyaWQtdjEgLnNvY2lhbHMtbWVtYmVyIHsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiAxOwogICAgcGFkZGluZzogMjBweCAxMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5hZ2VudC1ncmlkLXYxIC5zb2NpYWxzLW1lbWJlciBhIHsKICAgIGNvbG9yOiAjZmZmOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYWdlbnQtZ3JpZC12MSAuc29jaWFscy1tZW1iZXIgYSB7CiAgICAgICAgcGFkZGluZzogMCA1cHg7CiAgICB9Cn0KCi5hZ2VudC1ncmlkLXYxIC5hZ2VudC10aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAzcHg7Cn0KCi5hZ2VudC1ncmlkLXYxIC5yYXRpbmctd3JhcHBlciBpIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBjb2xvcjogI2ZlYmU0MjsKfQoKLnJ0bCAuYWdlbnQtZ3JpZC12MSAucmF0aW5nLXdyYXBwZXIgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouYWdlbnQtZ3JpZC12MSAuYWdlbnQtbG9nbyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmFnZW50LWdyaWQtdjEgLmFnZW50LWxvZ286YmVmb3JlIHsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDgsIDE1LCAyOSwgMC44KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKfQoKLmFnZW50LWdyaWQtdjE6aG92ZXIgLnNvY2lhbHMtbWVtYmVyLAouYWdlbnQtZ3JpZC12MTpob3ZlciAuYWdlbnQtbG9nbzpiZWZvcmUgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgouYWdlbnQtZ3JpZC12MiB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgcGFkZGluZzogMTBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFnZW50LWdyaWQtdjIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9Cn0KCi5hZ2VudC1ncmlkLXYyIC5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgewogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKLmFnZW50LWdyaWQtdjIgLnNvY2lhbHMtbWVtYmVyIHsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiAxOwogICAgcGFkZGluZzogMjBweCAxMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5hZ2VudC1ncmlkLXYyIC5zb2NpYWxzLW1lbWJlciBhIHsKICAgIGNvbG9yOiAjZmZmOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYWdlbnQtZ3JpZC12MiAuc29jaWFscy1tZW1iZXIgYSB7CiAgICAgICAgcGFkZGluZzogMCA1cHg7CiAgICB9Cn0KCi5hZ2VudC1ncmlkLXYyIC5hZ2VudC10aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAzcHg7Cn0KCi5hZ2VudC1ncmlkLXYyIC5hZ2VudC1pbmZvcm1hdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5hZ2VudC1ncmlkLXYyIC5hZ2VudC1sb2dvIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYWdlbnQtZ3JpZC12MiAuYWdlbnQtbG9nbzpiZWZvcmUgewogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KDE0NWRlZywgIzNlM2VhNSAwJSwgI2ZmNWE1ZiAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDE0NWRlZywgIzNlM2VhNSAwJSwgI2ZmNWE1ZiAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCAjM2UzZWE1IDAlLCAjZmY1YTVmIDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgIzNlM2VhNSAwJSwgI2ZmNWE1ZiAxMDAlKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA5MCwgOTUsIDAuOCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAwczsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7Cn0KCi5hZ2VudC1ncmlkLXYyOmhvdmVyIC5zb2NpYWxzLW1lbWJlciB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5hZ2VudC1ncmlkLXYyOmhvdmVyIC5hZ2VudC1sb2dvOmJlZm9yZSB7CiAgICBvcGFjaXR5OiAwLjk7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9OTApOwp9CgouYWdlbnQtbGlzdCB7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgouYWdlbnQtbGlzdCAubWVtYmVyLXRodW1ibmFpbC13cmFwcGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB3aWR0aDogMTkwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4Owp9CgoucnRsIC5hZ2VudC1saXN0IC5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgewogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFnZW50LWxpc3QgLm1lbWJlci10aHVtYm5haWwtd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDI5MHB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7CiAgICB9CiAgICAucnRsIC5hZ2VudC1saXN0IC5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogMzBweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0OwogICAgfQp9CgouYWdlbnQtbGlzdCAuaW5uZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgoucnRsIC5hZ2VudC1saXN0IC5pbm5lciB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgouYWdlbnQtbGlzdCAuYWdlbnQtaW5mb3JtYXRpb24tYm90dG9tIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBhZGRpbmc6IDE1cHggMCAwOwogICAgd2lkdGg6IDEwMCU7Cn0KCi5hZ2VudC1saXN0IC5hZ2VudC1pbmZvcm1hdGlvbiB7CiAgICBwYWRkaW5nOiAwOwogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE5MHB4KTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFnZW50LWxpc3QgLmFnZW50LWluZm9ybWF0aW9uIHsKICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjkwcHgpOwogICAgfQp9CgouYWdlbnQtbGlzdCAuYWdlbnQtaW5mb3JtYXRpb24ubm8taW1hZ2UgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5hZ2VuY3ktaXRlbSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYWdlbmN5LWl0ZW0gewogICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9Cn0KCi5hZ2VuY3ktaXRlbTpob3ZlciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgYm94LXNoYWRvdzogMCAwIDMwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi5hZ2VuY3ktaXRlbSAubWV0YXMgewogICAgbWFyZ2luLXRvcDogMTBweDsKfQoKLmFnZW5jeS1pdGVtIC5tZXRhcz5kaXYgewogICAgbWFyZ2luLWJvdHRvbTogMnB4Owp9CgouYWdlbmN5LWl0ZW0gLm1ldGFzPmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5hZ2VuY3ktaXRlbSAuYWdlbmN5LXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1hcmdpbjogMDsKfQoKLmFnZW5jeS1pdGVtIC5jYXRlZ29yeS1hZ2VuY3kgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hZ2VuY3ktZ3JpZCAudG9wLWluZm8gewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICB9Cn0KCi5hZ2VuY3ktZ3JpZCAuYWdlbmN5LWluZm9ybWF0aW9uIHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWJlYmViOwogICAgcGFkZGluZzogMTVweCAyMHB4Owp9CgouYWdlbmN5LWdyaWQgLmFnZW5jeS1pbmZvcm1hdGlvbi1ib3R0b20gewogICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlYmViZWI7Cn0KCi5hZ2VuY3ktbGlzdCAubWVtYmVyLXRodW1ibmFpbC13cmFwcGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB3aWR0aDogMTUwcHg7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZWJlYmViOwp9CgoucnRsIC5hZ2VuY3ktbGlzdCAubWVtYmVyLXRodW1ibmFpbC13cmFwcGVyIHsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yaWdodDogaW5oZXJpdDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFnZW5jeS1saXN0IC5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAzMDBweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFnZW5jeS1saXN0IC5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgLm5iLXByb3BlcnR5IHsKICAgICAgICBtYXJnaW46IDEwcHg7CiAgICB9Cn0KCi5hZ2VuY3ktbGlzdCAuaW5uZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYWdlbmN5LWxpc3QgLmlubmVyIHsKICAgICAgICBwYWRkaW5nOiAyMHB4IDMwcHg7CiAgICB9Cn0KCi5hZ2VuY3ktbGlzdCAuYWdlbmN5LWluZm9ybWF0aW9uIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxNTBweCk7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hZ2VuY3ktbGlzdCAuYWdlbmN5LWluZm9ybWF0aW9uIHsKICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzAwcHgpOwogICAgfQp9CgouYWdlbmN5LWxpc3QgLmFnZW5jeS1pbmZvcm1hdGlvbi5uby1pbWFnZSB7CiAgICB3aWR0aDogMTAwJTsKfQoKLmFnZW5jeS1saXN0IC5hZ2VuY3ktaW5mb3JtYXRpb24tYm90dG9tIHsKICAgIHBhZGRpbmctdG9wOiAxNXB4Owp9Cgouc2VuZC1tZXNzYWdlLWJ0biB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLnNlbmQtbWVzc2FnZS1idG46YmVmb3JlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC0xcHg7CiAgICBsZWZ0OiAtMXB4OwogICAgd2lkdGg6IGNhbGMoMTAwJSArIDJweCk7CiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSkgdXJsKCIuLi9pbWFnZXMvbG9hZGluZy5naWYiKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlci8yMHB4IGF1dG87CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB6LWluZGV4OiAxOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwp9Cgouc2VuZC1tZXNzYWdlLWJ0bi5sb2FkaW5nOmJlZm9yZSB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyIC50aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAzcHg7Cn0KCi5sb2NhdGlvbi1iYW5uZXItaW5uZXIgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVtIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlMSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGUxIC5pbm5lciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA1MCU7CiAgICBwYWRkaW5nOiAyNXB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbCAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWltcG9ydGFudDsKICAgIC13ZWJraXQtd2Via2l0LWRpcmVjdGlvbjogbm9ybWFsICFpbXBvcnRhbnQ7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KCi5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGUxIC5pbmZvLWNpdHkgewogICAgbWFyZ2luLXRvcDogYXV0bzsKfQoKLmxvY2F0aW9uLWJhbm5lci1pbm5lci5zdHlsZTE6aG92ZXIgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVtIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgtMC43ZGVnKTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgtMC43ZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKC0wLjdkZWcpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgtMC43ZGVnKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoLTAuN2RlZyk7Cn0KCi5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGUyIHsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgcGFkZGluZzogMTBweCAxMHB4IDE1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAxcHggI2ViZWJlYjsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZWJlYmViOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlMiAubG9jYXRpb24tYmFubmVyLWlubmVyLWl0ZW0gewogICAgcG9zaXRpb246IHN0YXRpYzsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLmxvY2F0aW9uLWJhbm5lci1pbm5lci5zdHlsZTIgLmlubmVyIHsKICAgIHBhZGRpbmctdG9wOiAxNXB4Owp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlMjpob3ZlciB7CiAgICB6LWluZGV4OiAxOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7CiAgICBib3gtc2hhZG93OiAwIDAgNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7Cn0KCi5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGUzIC5pbm5lciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA1MCU7CiAgICBwYWRkaW5nOiAyNXB4IDI1cHggMzBweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWwgIWltcG9ydGFudDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LXdlYmtpdC1kaXJlY3Rpb246IG5vcm1hbCAhaW1wb3J0YW50OwogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50Owp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlMyAuaW5mby1jaXR5IHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luLXRvcDogYXV0bzsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC8qIFNhZmFyaSA3LjArICovCn0KCi5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGUzIC5pbmZvLWNpdHkgLm51bWJlciB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKfQoKLnJ0bCAubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlMyAuaW5mby1jaXR5IC5udW1iZXIgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGUzIC50aXRsZSB7CiAgICBtYXJnaW46IDA7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNTBweDsKICAgIHBhZGRpbmc6IDdweCAzMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgNXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7Cn0KCi5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGUzOmhvdmVyIC5sb2NhdGlvbi1iYW5uZXItaW5uZXItaXRlbSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoLTAuN2RlZyk7CiAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoLTAuN2RlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgtMC43ZGVnKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoLTAuN2RlZyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKC0wLjdkZWcpOwp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNCB7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDFweCAjZWJlYmViOwogICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNlYmViZWI7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKfQoKLmxvY2F0aW9uLWJhbm5lci1pbm5lci5zdHlsZTQgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVtIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICB3aWR0aDogMTIwcHg7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGU0IC5sb2NhdGlvbi1iYW5uZXItaW5uZXItaXRlbSB7CiAgICAgICAgd2lkdGg6IDE3MHB4OwogICAgfQp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNCAuaW5uZXIgewogICAgcGFkZGluZzogMjBweCAxMHB4OwogICAgd2lkdGg6IDEwMCU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGU0IC5pbm5lciB7CiAgICAgICAgcGFkZGluZzogNDVweCAzMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNCAuaW5uZXIubm8taW1hZ2UgewogICAgd2lkdGg6IDEwMCU7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAgIC5sb2NhdGlvbi1iYW5uZXItaW5uZXIuc3R5bGU0IC50aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgfQp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNDpob3ZlciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKICAgIGJveC1zaGFkb3c6IDAgMCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKfQoKLmxvY2F0aW9uLWJhbm5lci1pbm5lci5zdHlsZTUgLndyYXBwZXItdG9wIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLmxvY2F0aW9uLWJhbm5lci1pbm5lci5zdHlsZTUgLmxvY2F0aW9uLWJhbm5lci1pbm5lci1pdGVtIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICBtaW4taGVpZ2h0OiAxNTBweDsKfQoKLmxvY2F0aW9uLWJhbm5lci1pbm5lci5zdHlsZTUgLmlubmVyIHsKICAgIHBhZGRpbmctdG9wOiAxNXB4Owp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNTpob3ZlciAubG9jYXRpb24tYmFubmVyLWlubmVyLWl0ZW0gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKC0wLjdkZWcpOwogICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKC0wLjdkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoLTAuN2RlZyk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKC0wLjdkZWcpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgtMC43ZGVnKTsKfQoKLmxvY2F0aW9uLWJhbm5lci1pbm5lci5zdHlsZTYgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNiAubG9jYXRpb24tYmFubmVyLWlubmVyLWl0ZW0gewogICAgcG9zaXRpb246IHN0YXRpYzsKfQoKLmxvY2F0aW9uLWJhbm5lci1pbm5lci5zdHlsZTYgLmlubmVyIHsKICAgIHBhZGRpbmctdG9wOiAxNXB4Owp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNiAud3JhcHBlci10b3AgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwp9CgoubG9jYXRpb24tYmFubmVyLWlubmVyLnN0eWxlNjpob3ZlciAubG9jYXRpb24tYmFubmVyLWlubmVyLWl0ZW0gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsKfQoKLnR5cGUtYmFubmVyLXByb3BlcnR5IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDBzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDBzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDBzIGVhc2UtaW4tb3V0IDBzOwp9CgoudHlwZS1iYW5uZXItcHJvcGVydHkgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1hcmdpbjogMTVweCAwIDNweDsKfQoKLnR5cGUtYmFubmVyLXByb3BlcnR5IC5vdmVybGF5IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IC0xOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi50eXBlLWJhbm5lci1wcm9wZXJ0eS5zdHlsZTEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MHB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNTBweDsKICAgIHBhZGRpbmc6IDlweCAxMnB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLyogU2FmYXJpIDcuMCsgKi8KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMSB7CiAgICAgICAgcGFkZGluZzogOXB4IDMwcHg7CiAgICB9Cn0KCi50eXBlLWJhbm5lci1wcm9wZXJ0eS5zdHlsZTEgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogI2ZmZjsKfQoKLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMSAuaWNvbiB7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMSAubnVtYmVyLAoudHlwZS1iYW5uZXItcHJvcGVydHkuc3R5bGUxIC5pY29uIHsKICAgIGNvbG9yOiAjZmZmOwp9CgoudHlwZS1iYW5uZXItcHJvcGVydHkuc3R5bGUxIC5pbmZvIHsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKfQoKLnJ0bCAudHlwZS1iYW5uZXItcHJvcGVydHkuc3R5bGUxIC5pbmZvIHsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCi50eXBlLWJhbm5lci1wcm9wZXJ0eS5zdHlsZTE6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKfQoKLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMiB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtaW4td2lkdGg6IDEwMHB4OwogICAgcGFkZGluZzogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAudHlwZS1iYW5uZXItcHJvcGVydHkuc3R5bGUyIHsKICAgICAgICBtaW4td2lkdGg6IDEzMHB4OwogICAgICAgIHBhZGRpbmc6IDIycHg7CiAgICB9Cn0KCi50eXBlLWJhbm5lci1wcm9wZXJ0eS5zdHlsZTIgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbjogMTBweCAwIDA7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgY29sb3I6ICNmZmY7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50eXBlLWJhbm5lci1wcm9wZXJ0eS5zdHlsZTIgLnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICB9Cn0KCi50eXBlLWJhbm5lci1wcm9wZXJ0eS5zdHlsZTIgLm51bWJlciwKLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMiAuaWNvbiB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMiAuaWNvbiB7CiAgICBmb250LXNpemU6IDMwcHg7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMiAuaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiA0MHB4OwogICAgfQp9CgoudHlwZS1iYW5uZXItcHJvcGVydHkuc3R5bGUyOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7Cn0KCi50eXBlLWJhbm5lci1wcm9wZXJ0eS5zdHlsZTMgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAxcHggI2ViZWJlYjsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZWJlYmViOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICBwYWRkaW5nOiAyMHB4IDE1cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMyB7CiAgICAgICAgcGFkZGluZzogNDBweCAyMHB4IDMwcHg7CiAgICB9Cn0KCi50eXBlLWJhbm5lci1wcm9wZXJ0eS5zdHlsZTMgLmljb24gewogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBmb250LXNpemU6IDQwcHg7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMyAuaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiA1MHB4OwogICAgfQp9CgoudHlwZS1iYW5uZXItcHJvcGVydHkuc3R5bGUzOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKICAgIGNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMzpob3ZlciAuaWNvbiwKLnR5cGUtYmFubmVyLXByb3BlcnR5LnN0eWxlMzpob3ZlciAudGl0bGUgewogICAgY29sb3I6ICNmZmY7Cn0KCi5zaW5nbGUtbGlzdGluZy1hZ2VudC1hZ2VuY3kgewogICAgbWFyZ2luOiAzMHB4IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5zaW5nbGUtbGlzdGluZy1hZ2VudC1hZ2VuY3kgewogICAgICAgIG1hcmdpbjogNjBweCAwOwogICAgfQp9Cgouc2luZ2xlLWxpc3RpbmctYWdlbnQtYWdlbmN5IC5hcHVzLWJyZWFkc2NydW1iPi5jb250YWluZXIgewogICAgcGFkZGluZzogMDsKfQoKLnNpbmdsZS1saXN0aW5nLWFnZW50LWFnZW5jeSAuYXB1cy1icmVhZHNjcnVtYiAud3JhcHBlci1icmVhZHMgewogICAgcGFkZGluZzogMDsKfQoKLnRvcC1kZXRhaWwtbWVtYmVyIHsKICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50b3AtZGV0YWlsLW1lbWJlciB7CiAgICAgICAgbWFyZ2luLXRvcDogNDVweDsKICAgIH0KfQoKLnRvcC1kZXRhaWwtbWVtYmVyIC5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDE1MHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAudG9wLWRldGFpbC1tZW1iZXIgLm1lbWJlci10aHVtYm5haWwtd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDI2MHB4OwogICAgfQp9CgoudG9wLWRldGFpbC1tZW1iZXIgLm1lbWJlci10aHVtYm5haWwtd3JhcHBlci5tZW1iZXItdGh1bWJuYWlsLWFnZW5jeTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTE1cHg7CiAgICByaWdodDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiA2MDBweDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgoucnRsIC50b3AtZGV0YWlsLW1lbWJlciAubWVtYmVyLXRodW1ibmFpbC13cmFwcGVyLm1lbWJlci10aHVtYm5haWwtYWdlbmN5OmFmdGVyIHsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogYXV0bzsKfQoKLnRvcC1kZXRhaWwtbWVtYmVyIC5tZW1iZXItaW5mb3JtYXRpb24gewogICAgd2lkdGg6IGNhbGMoIDEwMCUgLSAxNTBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KCi5ydGwgLnRvcC1kZXRhaWwtbWVtYmVyIC5tZW1iZXItaW5mb3JtYXRpb24gewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnRvcC1kZXRhaWwtbWVtYmVyIC5tZW1iZXItaW5mb3JtYXRpb24gewogICAgICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gMjYwcHgpOwogICAgICAgIHBhZGRpbmctbGVmdDogMzBweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTVweDsKICAgIH0KICAgIC5ydGwgLnRvcC1kZXRhaWwtbWVtYmVyIC5tZW1iZXItaW5mb3JtYXRpb24gewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0OwogICAgfQp9CgoudG9wLWRldGFpbC1tZW1iZXIgLm1lbWJlci1pbmZvcm1hdGlvbi5uby1pbWFnZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDA7Cn0KCi50b3AtZGV0YWlsLW1lbWJlciAucHJvcGVydHktam9iIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoudG9wLWRldGFpbC1tZW1iZXIgLm1lbWJlci1tZXRhcyB7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CgoudG9wLWRldGFpbC1tZW1iZXIgLm1lbWJlci1tZXRhcz5kaXYgewogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgoudG9wLWRldGFpbC1tZW1iZXIgLm1lbWJlci1tZXRhcz5kaXY6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5ydGwgLnRvcC1kZXRhaWwtbWVtYmVyIC5tZW1iZXItbWV0YXM+ZGl2Omxhc3QtY2hpbGQgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi50b3AtZGV0YWlsLW1lbWJlciAuYWdlbmN5LXNvY2lhbHMgewogICAgbWFyZ2luLXRvcDogMTBweDsKfQoKLnRvcC1kZXRhaWwtbWVtYmVyIC5hZ2VuY3ktc29jaWFscyBhIHsKICAgIGNvbG9yOiAjNzY3Njc2OwogICAgbWFyZ2luLXJpZ2h0OiAxMnB4Owp9CgoudG9wLWRldGFpbC1tZW1iZXIgLmFnZW5jeS1zb2NpYWxzIGE6aG92ZXIsCi50b3AtZGV0YWlsLW1lbWJlciAuYWdlbmN5LXNvY2lhbHMgYTpmb2N1cyB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLnJ0bCAudG9wLWRldGFpbC1tZW1iZXIgLmFnZW5jeS1zb2NpYWxzIGEgewogICAgbWFyZ2luLWxlZnQ6IDEycHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi50b3AtZGV0YWlsLW1lbWJlciAuYWdlbmN5LXNvY2lhbHMgYTpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnJ0bCAudG9wLWRldGFpbC1tZW1iZXIgLmFnZW5jeS1zb2NpYWxzIGE6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLm1lbWJlci10aHVtYm5haWwtd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgaW1nIHsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgoubWVtYmVyLXRodW1ibmFpbC13cmFwcGVyIC5uYi1wcm9wZXJ0eSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwcHg7CiAgICBsZWZ0OiAxMHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMnB4IDE1cHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDJweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7CiAgICBjb2xvcjogI2ZmZjsKfQoKLnJ0bCAubWVtYmVyLXRodW1ibmFpbC13cmFwcGVyIC5uYi1wcm9wZXJ0eSB7CiAgICByaWdodDogMTBweDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5tZW1iZXItdGl0bGUgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWFyZ2luOiAwOwp9CgouZGV0YWlsLXRhYnMtbWVtYmVyIHsKICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICBwYWRkaW5nOiAwIDE1cHggMTVweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmRldGFpbC10YWJzLW1lbWJlciB7CiAgICAgICAgcGFkZGluZzogNXB4IDMwcHggMzBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgouZGV0YWlsLXRhYnMtbWVtYmVyIC5sb2NhdGlvbi1zaW5nbGUtYWdlbnQgewogICAgbWFyZ2luLXRvcDogMzBweDsKfQoKLmRldGFpbC10YWJzLW1lbWJlciAuY29tbWVudGZvcm0gLmNvbW1lbnQtcmVzcG9uZCB7CiAgICBib3JkZXI6IDA7CiAgICBwYWRkaW5nOiAwOwp9CgouZGV0YWlsLXRhYnMtbWVtYmVyIC5ib3gtY29tbWVudCB7CiAgICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiAwOwp9CgouZGV0YWlsLXRhYnMtbWVtYmVyIC5wYWdpbmF0aW9uIHsKICAgIHBhZGRpbmctYm90dG9tOiAwOwp9CgouZGV0YWlsLXRhYnMtbWVtYmVyIC5saXN0LWl0ZW06bGFzdC1jaGlsZCAuYWdlbnQtaXRlbSwKLmRldGFpbC10YWJzLW1lbWJlciAubGlzdC1pdGVtOmxhc3QtY2hpbGQgLnByb3BlcnR5LWl0ZW0gewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmRldGFpbC10YWJzLW1lbWJlciAuYWdlbnQtbGlzdCB7CiAgICBwYWRkaW5nOiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmRldGFpbC10YWJzLW1lbWJlciAuYWdlbnQtbGlzdCAubWVtYmVyLXRodW1ibmFpbC13cmFwcGVyIGltZyB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwOwp9CgouZGV0YWlsLXRhYnMtbWVtYmVyIC5hamF4LWFnZW50cy1wYWdpbmF0aW9uLAouZGV0YWlsLXRhYnMtbWVtYmVyIC5hamF4LXByb3BlcnRpZXMtcGFnaW5hdGlvbiB7CiAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouZGV0YWlsLXRhYnMtbWVtYmVyIC5hamF4LWFnZW50cy1wYWdpbmF0aW9uIC5hcHVzLWFsbHByb2R1Y3RzLAouZGV0YWlsLXRhYnMtbWVtYmVyIC5hamF4LXByb3BlcnRpZXMtcGFnaW5hdGlvbiAuYXB1cy1hbGxwcm9kdWN0cyB7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBkaXNwbGF5OiBub25lOwogICAgY29sb3I6ICNmMGFkNGU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5kZXRhaWwtdGFicy1tZW1iZXIgLmFqYXgtYWdlbnRzLXBhZ2luYXRpb24gLmFwdXMtYWxscHJvZHVjdHMsCiAgICAuZGV0YWlsLXRhYnMtbWVtYmVyIC5hamF4LXByb3BlcnRpZXMtcGFnaW5hdGlvbiAuYXB1cy1hbGxwcm9kdWN0cyB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgfQp9CgouZGV0YWlsLXRhYnMtbWVtYmVyIC5hamF4LWFnZW50cy1wYWdpbmF0aW9uLmFsbC1wcm9wZXJ0aWVzLWxvYWRlZCAuYXB1cy1hbGxwcm9kdWN0cywKLmRldGFpbC10YWJzLW1lbWJlciAuYWpheC1wcm9wZXJ0aWVzLXBhZ2luYXRpb24uYWxsLXByb3BlcnRpZXMtbG9hZGVkIC5hcHVzLWFsbHByb2R1Y3RzIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmRldGFpbC10YWJzLW1lbWJlciAuYWpheC1hZ2VudHMtcGFnaW5hdGlvbi5hbGwtcHJvcGVydGllcy1sb2FkZWQgLmFwdXMtbG9hZG1vcmUtYnRuLAouZGV0YWlsLXRhYnMtbWVtYmVyIC5hamF4LXByb3BlcnRpZXMtcGFnaW5hdGlvbi5hbGwtcHJvcGVydGllcy1sb2FkZWQgLmFwdXMtbG9hZG1vcmUtYnRuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5kZXRhaWwtdGFicy1tZW1iZXIgLmFqYXgtYWdlbnRzLXBhZ2luYXRpb24sCiAgICAuZGV0YWlsLXRhYnMtbWVtYmVyIC5hamF4LXByb3BlcnRpZXMtcGFnaW5hdGlvbiB7CiAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKICAgIH0KfQoKLm5hdi1tZW1iZXIgewogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgIGJvcmRlcjogMCAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubmF2LW1lbWJlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIH0KfQoKLm5hdi1tZW1iZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogLTMwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJlYmViOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogY2FsYygxMDAlICsgNjBweCk7CiAgICBoZWlnaHQ6IDFweDsKfQoKLm5hdi1tZW1iZXI+bGkgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiAyMHB4Owp9CgoucnRsIC5uYXYtbWVtYmVyPmxpIHsKICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubmF2LW1lbWJlcj5saSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1MHB4OwogICAgfQogICAgLnJ0bCAubmF2LW1lbWJlcj5saSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDUwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQp9CgoubmF2LW1lbWJlcj5saT5hIHsKICAgIHBhZGRpbmc6IDEycHggMDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5uYXYtbWVtYmVyPmxpPmEgewogICAgICAgIHBhZGRpbmc6IDE4cHggMDsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICB9Cn0KCi5uYXYtbWVtYmVyPmxpPmE6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDFweDsKfQoKLnJ0bCAubmF2LW1lbWJlcj5saT5hOmJlZm9yZSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5uYXYtbWVtYmVyPmxpOmhvdmVyPmEsCi5uYXYtbWVtYmVyPmxpLmFjdGl2ZT5hLAoubmF2LW1lbWJlcj5saTpmb2N1cz5hIHsKICAgIGNvbG9yOiAjZmY1YTVmICFpbXBvcnRhbnQ7Cn0KCi5uYXYtbWVtYmVyPmxpOmhvdmVyPmE6YmVmb3JlLAoubmF2LW1lbWJlcj5saS5hY3RpdmU+YTpiZWZvcmUsCi5uYXYtbWVtYmVyPmxpOmZvY3VzPmE6YmVmb3JlIHsKICAgIHdpZHRoOiAxMDAlOwp9CgouY29tbWVudGZvcm0tZGV0YWlsLWFnZW5jeSAuZm9ybS1ncm91cD5sYWJlbCwKLmNvbW1lbnRmb3JtLWRldGFpbC1hZ2VudCAuZm9ybS1ncm91cD5sYWJlbCB7CiAgICBkaXNwbGF5OiBub25lOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuY29udGFjdC1mb3JtLWFnZW50IC5mb3JtLWdyb3VwIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgfQp9CgouY29udGFjdC1mb3JtLWFnZW50IHRleHRhcmVhLmZvcm0tY29udHJvbCB7CiAgICBoZWlnaHQ6IDE3MHB4OwogICAgcmVzaXplOiBub25lOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuY29udGFjdC1mb3JtLWFnZW50IC5idG4gewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMHB4IDMwcHg7CiAgICB9Cn0KCi5sb2NhdGlvbi1zaW5nbGUtbWVtYmVyIHsKICAgIG1hcmdpbi10b3A6IDIwcHg7Cn0KCi5sb2NhdGlvbi1zaW5nbGUtbWVtYmVyIC50aXRsZS13cmFwcGVyIHsKICAgIG1hcmdpbjogMCAwIDIwcHg7Cn0KCi5sb2NhdGlvbi1zaW5nbGUtbWVtYmVyIC50aXRsZS13cmFwcGVyIC50aXRsZSB7CiAgICBtYXJnaW46IDA7CiAgICBmb250LXNpemU6IDE4cHg7Cn0KCi5zaW5nbGUtbWFwLWFnZW5jeSwKLnNpbmdsZS1tYXAtYWdlbnQgewogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDI1MHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuc2luZ2xlLW1hcC1hZ2VuY3ksCiAgICAuc2luZ2xlLW1hcC1hZ2VudCB7CiAgICAgICAgaGVpZ2h0OiAzODBweDsKICAgIH0KfQoKLmFwdXMtYnJlYWRzY3J1bWIgLnNhdmVkLXNlYXJjaC1mb3JtLWJ0biB7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7Cn0KCi5ydGwgLmFwdXMtYnJlYWRzY3J1bWIgLnNhdmVkLXNlYXJjaC1mb3JtLWJ0biB7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFwdXMtYnJlYWRzY3J1bWIgLnNhdmVkLXNlYXJjaC1mb3JtLWJ0biB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyNXB4OwogICAgfQogICAgLnJ0bCAuYXB1cy1icmVhZHNjcnVtYiAuc2F2ZWQtc2VhcmNoLWZvcm0tYnRuIHsKICAgICAgICBtYXJnaW4tbGVmdDogMjVweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9Cn0KCi5hcHVzLWJyZWFkc2NydW1iIC5idG4tc2F2ZWQtc2VhcmNoIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKfQoKLmFwdXMtYnJlYWRzY3J1bWIgLmJ0bi1zYXZlZC1zZWFyY2ggaSB7CiAgICBmb250LXNpemU6IDIxcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKfQoKLnJ0bCAuYXB1cy1icmVhZHNjcnVtYiAuYnRuLXNhdmVkLXNlYXJjaCBpIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi53cC1yZWFsZXN0YXRlLW1mcC1jb250YWluZXIgLnNhdmVkLXNlYXJjaC1mb3JtLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIG1heC13aWR0aDogNTAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgcGFkZGluZzogMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndwLXJlYWxlc3RhdGUtbWZwLWNvbnRhaW5lciAuc2F2ZWQtc2VhcmNoLWZvcm0td3JhcHBlciB7CiAgICAgICAgcGFkZGluZzogMzBweDsKICAgIH0KfQoKLndwLXJlYWxlc3RhdGUtbWZwLWNvbnRhaW5lciAuc2F2ZWQtc2VhcmNoLWZvcm0td3JhcHBlciAubWZwLWNsb3NlIHsKICAgIGNvbG9yOiAjMDA2YzcwOwp9Cgoud3AtcmVhbGVzdGF0ZS1tZnAtY29udGFpbmVyIC5zYXZlZC1zZWFyY2gtZm9ybS13cmFwcGVyIC5tZnAtY2xvc2U6aG92ZXIsCi53cC1yZWFsZXN0YXRlLW1mcC1jb250YWluZXIgLnNhdmVkLXNlYXJjaC1mb3JtLXdyYXBwZXIgLm1mcC1jbG9zZTpmb2N1cyB7CiAgICBjb2xvcjogI2U0NDM0MzsKfQoKLndyYXBwZXItc2F2ZS1zZWFyY2ggewogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLndyYXBwZXItc2F2ZS1zZWFyY2ggLnByb3BlcnR5LXRhYmxlLWluZm8tY29udGVudC10aXRsZSB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud3JhcHBlci1zYXZlLXNlYXJjaCAudXNlci10cmFuc2FjdGlvbnMgdGQgewogICAgICAgIHBhZGRpbmc6IDE1cHggMzBweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndyYXBwZXItc2F2ZS1zZWFyY2ggLnVzZXItdHJhbnNhY3Rpb25zIHRib2R5IHRkIHsKICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgfQp9Cgouc2F2ZWQtc2VhcmNoLWZvcm0gLmJ1dHRvbiB7CiAgICBtaW4td2lkdGg6IDEyMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuc2F2ZWQtc2VhcmNoLWZvcm0gLmZvcm0tZ3JvdXAgewogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICB9Cn0KCi5wcm9wZXJ0aWVzLWRpc3BsYXktbW9kZS13cmFwcGVyIGxhYmVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLnJ0bCAucHJvcGVydGllcy1kaXNwbGF5LW1vZGUtd3JhcHBlciBsYWJlbCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnByb3BlcnRpZXMtZGlzcGxheS1tb2RlLXdyYXBwZXIgbGFiZWwgW3R5cGU9InJhZGlvIl0gewogICAgZGlzcGxheTogbm9uZTsKfQoKLnByb3BlcnRpZXMtZGlzcGxheS1tb2RlLXdyYXBwZXIgbGFiZWwgaSB7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogIzNlNGM2NjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAzNHB4OwogICAgd2lkdGg6IDM1cHg7CiAgICBoZWlnaHQ6IDM1cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucHJvcGVydGllcy1kaXNwbGF5LW1vZGUtd3JhcHBlciBsYWJlbCBpIHsKICAgICAgICBsaW5lLWhlaWdodDogNDBweDsKICAgICAgICB3aWR0aDogNDVweDsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgZm9udC1zaXplOiAyMXB4OwogICAgfQp9CgoucHJvcGVydGllcy1kaXNwbGF5LW1vZGUtd3JhcHBlciBsYWJlbCBpbnB1dDpjaGVja2VkK2kgewogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2UzZTM7Cn0KCi5wcm9wZXJ0aWVzLWRpc3BsYXktbW9kZS13cmFwcGVyIGxhYmVsOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC5wcm9wZXJ0aWVzLWRpc3BsYXktbW9kZS13cmFwcGVyIGxhYmVsOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5teS1wcm9wZXJ0aWVzLW9yZGVyaW5nIC5sYWJlbCwKLnNvcnQtbXktcHJvcGVydGllcy1mb3JtIC5sYWJlbCwKLnNvcnQtcHJvcGVydGllcy1mYXZvcml0ZS1mb3JtIC5sYWJlbCwKLnByb3BlcnRpZXMtb3JkZXJpbmcgLmxhYmVsIHsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgcGFkZGluZzogMDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5teS1wcm9wZXJ0aWVzLW9yZGVyaW5nIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSwKLnNvcnQtbXktcHJvcGVydGllcy1mb3JtIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSwKLnNvcnQtcHJvcGVydGllcy1mYXZvcml0ZS1mb3JtIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSwKLnByb3BlcnRpZXMtb3JkZXJpbmcgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsKICAgIGJvcmRlcjogMCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvOwogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgY29sb3I6ICM3Nzc3Nzc7Cn0KCi5ydGwgLm15LXByb3BlcnRpZXMtb3JkZXJpbmcgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlLAoucnRsIC5zb3J0LW15LXByb3BlcnRpZXMtZm9ybSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUsCi5ydGwgLnNvcnQtcHJvcGVydGllcy1mYXZvcml0ZS1mb3JtIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSwKLnJ0bCAucHJvcGVydGllcy1vcmRlcmluZyAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLm15LXByb3BlcnRpZXMtb3JkZXJpbmcgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQsCi5zb3J0LW15LXByb3BlcnRpZXMtZm9ybSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCwKLnNvcnQtcHJvcGVydGllcy1mYXZvcml0ZS1mb3JtIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkLAoucHJvcGVydGllcy1vcmRlcmluZyAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7CiAgICBwYWRkaW5nLXRvcDogMDsKICAgIHBhZGRpbmctYm90dG9tOiAwOwp9CgoubXktcHJvcGVydGllcy1vcmRlcmluZyAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdywKLnNvcnQtbXktcHJvcGVydGllcy1mb3JtIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93LAouc29ydC1wcm9wZXJ0aWVzLWZhdm9yaXRlLWZvcm0gLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3csCi5wcm9wZXJ0aWVzLW9yZGVyaW5nIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHsKICAgIHRvcDogMXB4OwogICAgcmlnaHQ6IDFweDsKfQoKLnJ0bCAubXktcHJvcGVydGllcy1vcmRlcmluZyAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdywKLnJ0bCAuc29ydC1teS1wcm9wZXJ0aWVzLWZvcm0gLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3csCi5ydGwgLnNvcnQtcHJvcGVydGllcy1mYXZvcml0ZS1mb3JtIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93LAoucnRsIC5wcm9wZXJ0aWVzLW9yZGVyaW5nIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHsKICAgIGxlZnQ6IDFweDsKICAgIHJpZ2h0OiBhdXRvOwp9Cgouc2VhcmNoLW9yZGVyYnktd3JhcHBlciB7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgbWFyZ2luLXRvcDogMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnNlYXJjaC1vcmRlcmJ5LXdyYXBwZXIgewogICAgICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICAgIH0KfQoKLnNlYXJjaC1vcmRlcmJ5LXdyYXBwZXIgLnRpdGxlLXByb2ZpbGUgewogICAgbWFyZ2luOiAwOwp9Cgouc2VhcmNoLW9yZGVyYnktd3JhcHBlciAuc29ydGJ5LWZvcm0gewogICAgbWFyZ2luLWxlZnQ6IDIwcHg7Cn0KCi5ydGwgLnNlYXJjaC1vcmRlcmJ5LXdyYXBwZXIgLnNvcnRieS1mb3JtIHsKICAgIG1hcmdpbi1yaWdodDogMjBweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuc2VhcmNoLW9yZGVyYnktd3JhcHBlciAuc29ydGJ5LWZvcm0gewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwogICAgfQogICAgLnJ0bCAuc2VhcmNoLW9yZGVyYnktd3JhcHBlciAuc29ydGJ5LWZvcm0gewogICAgICAgIG1hcmdpbi1yaWdodDogMzBweDsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgIH0KfQoKLnNlYXJjaC1vcmRlcmJ5LXdyYXBwZXIgLm9yZGVyYnktd3JhcHBlciB7CiAgICBwYWRkaW5nOiAxMXB4IDIwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9Cgouc2xpY2stY2Fyb3VzZWwtZ2FsbGVyeS1wcm9wZXJ0aWVzIC5zbGljay1jYXJvdXNlbCB7CiAgICBtYXJnaW46IDA7Cn0KCi5zbGljay1jYXJvdXNlbC1nYWxsZXJ5LXByb3BlcnRpZXMgLnNsaWNrLWNhcm91c2VsIC5zbGljay1zbGlkZSwKLnNsaWNrLWNhcm91c2VsLWdhbGxlcnktcHJvcGVydGllcyAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWxpc3QgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9Cgouc2xpY2stY2Fyb3VzZWwtZ2FsbGVyeS1wcm9wZXJ0aWVzIC5zbGljay1jYXJvdXNlbCAuc2xpY2stYXJyb3cgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5wcm9wZXJ0eS1pdGVtIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1pdGVtIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgoucHJvcGVydHktaXRlbS5pbWFnZXMtbG9hZGluZyAucHJvcGVydHktaW1hZ2U6YWZ0ZXIgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgY29sb3I6ICNmZmY7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAzNXB4OwogICAgaGVpZ2h0OiAzNXB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGluZS1oZWlnaHQ6IDM1cHg7CiAgICBtYXJnaW4tdG9wOiAtMTdweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTdweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgY29udGVudDogJ1xmMTEwJzsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICBmb250LXdlaWdodDogOTAwOwogICAgYW5pbWF0aW9uOiByb3RhdGVfaWNvbiAxMjAwbXMgbGluZWFyIDBzIG5vcm1hbCBub25lIGluZmluaXRlIHJ1bm5pbmc7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRlX2ljb24gMTIwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwogICAgei1pbmRleDogMjsKICAgIG9wYWNpdHk6IDAuODsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT04MCk7Cn0KCi5wcm9wZXJ0eS1pdGVtIC50eXBlLXByb3BlcnR5IHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoucHJvcGVydHktaXRlbSAudG9wLWxhYmVsPiogewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBsaW5lLWhlaWdodDogMjVweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBwYWRkaW5nOiAwIDEwcHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzNlNGM2NjsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW8tYm9yZGVyLXJhZGl1czogM3B4Owp9CgoucnRsIC5wcm9wZXJ0eS1pdGVtIC50b3AtbGFiZWw+KiB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucHJvcGVydHktaXRlbSAudG9wLWxhYmVsPiouZmVhdHVyZWQtcHJvcGVydHkgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKfQoKLnByb3BlcnR5LWl0ZW0gLnRvcC1sYWJlbD4qOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC5wcm9wZXJ0eS1pdGVtIC50b3AtbGFiZWw+KjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucHJvcGVydHktaXRlbSAucHJvcGVydHktdGl0bGUgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWFyZ2luOiAwIDAgM3B4Owp9CgoucHJvcGVydHktaXRlbSAucHJvcGVydHktaW1hZ2UgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoucHJvcGVydHktaXRlbSAucHJvcGVydHktaW1hZ2UgaW1nIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgoucHJvcGVydHktaXRlbSAucHJvcGVydHktaW1hZ2U6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyOTNlOwogICAgb3BhY2l0eTogMC40OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTQwKTsKICAgIHotaW5kZXg6IDE7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnByb3BlcnR5LWl0ZW0gLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLnByb3BlcnR5LWl0ZW0gLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIC5wcm9wZXJ0eS1wcmljZSB7CiAgICBjb2xvcjogI2ZmZjsKfQoKLnByb3BlcnR5LWl0ZW0gLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIC50b3AtbGFiZWwgewogICAgdG9wOiAxMHB4OwogICAgbGVmdDogMTBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDI7Cn0KCi5ydGwgLnByb3BlcnR5LWl0ZW0gLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIC50b3AtbGFiZWwgewogICAgcmlnaHQ6IDEwcHg7CiAgICBsZWZ0OiBhdXRvOwp9CgoucHJvcGVydHktaXRlbSAucHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgLmJvdHRvbS1sYWJlbCB7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogMjsKfQoKLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXSB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2lkdGg6IDM1cHg7CiAgICBoZWlnaHQ6IDM1cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBsaW5lLWhlaWdodDogMzRweDsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjEsIDMxLCAwLjUpOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIG1hcmdpbi1sZWZ0OiA4cHg7Cn0KCi5ydGwgLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXSB7CiAgICBtYXJnaW4tcmlnaHQ6IDhweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgoucHJvcGVydHktaXRlbSAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdOmJlZm9yZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgY29udGVudDogJ1xmMTEwJzsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICBmb250LXdlaWdodDogOTAwOwogICAgbGluZS1oZWlnaHQ6IDM1cHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXS5sb2FkaW5nIHsKICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgoucHJvcGVydHktaXRlbSAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdLmxvYWRpbmc6YmVmb3JlIHsKICAgIGNvbG9yOiAjZmZmOwogICAgb3BhY2l0eTogMC43OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTcwKTsKICAgIGFuaW1hdGlvbjogcm90YXRlX2ljb24gMTUwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0ZV9pY29uIDE1MDBtcyBsaW5lYXIgMHMgbm9ybWFsIG5vbmUgaW5maW5pdGUgcnVubmluZzsKfQoKLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXVtjbGFzcyo9ImFkZGVkIl0sCi5wcm9wZXJ0eS1pdGVtIC5ib3R0b20tbGFiZWwgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJyZW1vdmUiXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwp9CgoucHJvcGVydHktaXRlbSAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdW2NsYXNzKj0iYWRkZWQiXTpob3ZlciBpOmJlZm9yZSwKLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXVtjbGFzcyo9InJlbW92ZSJdOmhvdmVyIGk6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGNvbnRlbnQ6ICJcZjEwMyI7CiAgICBmb250LWZhbWlseTogJ0ZsYXRpY29uJzsKfQoKLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXTpob3ZlciwKLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwp9CgoucHJvcGVydHktaXRlbSAuYm90dG9tLWxhYmVsIC5wcm9wZXJ0eS1wcmljZSB7CiAgICBmb250LXNpemU6IDIycHg7Cn0KCi5wcm9wZXJ0eS1pdGVtIC5ib3R0b20tbGFiZWwgLnByb3BlcnR5LXByaWNlIC5zdWZmaXgtdGV4dCwKLnByb3BlcnR5LWl0ZW0gLmJvdHRvbS1sYWJlbCAucHJvcGVydHktcHJpY2UgLnByZWZpeC10ZXh0IHsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLnByb3BlcnR5LWl0ZW0gLnNsaWNrLWNhcm91c2VsLWdhbGxlcnktcHJvcGVydGllcyB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMXMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlLWluLW91dCAwczsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxOwp9CgoucHJvcGVydHktaXRlbSAuc2xpY2stY2Fyb3VzZWwtZ2FsbGVyeS1wcm9wZXJ0aWVzLmFjdGl2ZSB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5wcm9wZXJ0eS1pdGVtIC5zbGljay1jYXJvdXNlbC1nYWxsZXJ5LXByb3BlcnRpZXMgLnNsaWNrLWNhcm91c2VsIC5zbGljay1hcnJvdyB7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwp9CgoucHJvcGVydHktaXRlbSAuc2xpY2stY2Fyb3VzZWwtZ2FsbGVyeS1wcm9wZXJ0aWVzIC5zbGljay1jYXJvdXNlbCAuc2xpY2stcHJldiB7CiAgICBtYXJnaW4tbGVmdDogLTIwcHg7Cn0KCi5wcm9wZXJ0eS1pdGVtIC5zbGljay1jYXJvdXNlbC1nYWxsZXJ5LXByb3BlcnRpZXMgLnNsaWNrLWNhcm91c2VsIC5zbGljay1uZXh0IHsKICAgIG1hcmdpbi1yaWdodDogLTIwcHg7Cn0KCi5wcm9wZXJ0eS1pdGVtIC5pbWFnZS10aHVtYm5haWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoucHJvcGVydHktaXRlbTpob3ZlciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKICAgIGJveC1zaGFkb3c6IDAgMCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKfQoKLnByb3BlcnR5LWl0ZW06aG92ZXIgLnByb3BlcnR5LWltYWdlOmJlZm9yZSB7CiAgICBvcGFjaXR5OiAwLjY7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjApOwp9CgoucHJvcGVydHktaXRlbTpob3ZlciAuc2xpY2stY2Fyb3VzZWwtZ2FsbGVyeS1wcm9wZXJ0aWVzIC5zbGljay1jYXJvdXNlbCAuc2xpY2stYXJyb3cgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgoucHJvcGVydHktaXRlbTpob3ZlciAuc2xpY2stY2Fyb3VzZWwtZ2FsbGVyeS1wcm9wZXJ0aWVzIC5zbGljay1jYXJvdXNlbCAuc2xpY2stYXJyb3cgewogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi5wcm9wZXJ0eS1tZXRhcz5kaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAzMHB4Owp9CgoucnRsIC5wcm9wZXJ0eS1tZXRhcz5kaXYgewogICAgbWFyZ2luLWxlZnQ6IDMwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5wcm9wZXJ0eS1tZXRhcz5kaXY6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5ydGwgLnByb3BlcnR5LW1ldGFzPmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucHJvcGVydHktbWV0YXMgLnRpdGxlLW1ldGEgewogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KCi5wcm9wZXJ0eS1ncmlkIC50b3AtaW5mbyB7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgoucHJvcGVydHktZ3JpZCAucHJvcGVydHktbWV0YXMgewogICAgcGFkZGluZy10b3A6IDhweDsKfQoKLnByb3BlcnR5LWdyaWQgLnByb3BlcnR5LWluZm9ybWF0aW9uIHsKICAgIHBhZGRpbmc6IDE1cHggMTBweCA1cHg7Cn0KCi5wcm9wZXJ0eS1ncmlkIC5wcm9wZXJ0eS1tZXRhcy1ib3R0b20gewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlYmViZWI7CiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7Cn0KCi5wcm9wZXJ0eS1ncmlkLXNsaWRlciB7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXI6IDA7CiAgICB3aWR0aDogMzgwcHg7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgoucHJvcGVydHktZ3JpZC1zbGlkZXIgLmlubmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLnByb3BlcnR5LWdyaWQtc2xpZGVyIC5ib3R0b20tbGFiZWwsCi5wcm9wZXJ0eS1ncmlkLXNsaWRlciAucHJvcGVydHktaW5mb3JtYXRpb24gewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbi10b3A6IDhweDsKfQoKLnByb3BlcnR5LWdyaWQtc2xpZGVyIC50b3AtaW5mbyB7CiAgICBwYWRkaW5nOiAyMHB4Owp9CgoucHJvcGVydHktZ3JpZC1zbGlkZXIgLnByb3BlcnR5LXByaWNlIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoucHJvcGVydHktZ3JpZC1zbGlkZXIgLmJvdHRvbS1sYWJlbCBbY2xhc3MqPSJidG4iXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogICAgY29sb3I6ICMyYzM3NGE7Cn0KCi5wcm9wZXJ0eS1ncmlkLXNsaWRlciAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdW2NsYXNzKj0iYWRkZWQiXSwKLnByb3BlcnR5LWdyaWQtc2xpZGVyIC5ib3R0b20tbGFiZWwgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJyZW1vdmUiXSwKLnByb3BlcnR5LWdyaWQtc2xpZGVyIC5ib3R0b20tbGFiZWwgW2NsYXNzKj0iYnRuIl06aG92ZXIsCi5wcm9wZXJ0eS1ncmlkLXNsaWRlciAuYm90dG9tLWxhYmVsIFtjbGFzcyo9ImJ0biJdOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKfQoKLnByb3BlcnR5LWdyaWQtdjEgewogICAgYm9yZGVyOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzA4MGYxZDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnByb3BlcnR5LWdyaWQtdjEgLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIC5ib3R0b20tbGFiZWwgewogICAgICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgIH0KICAgIC5wcm9wZXJ0eS1ncmlkLXYxIC5wcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciAudG9wLWxhYmVsIHsKICAgICAgICBtYXJnaW46IDEwcHg7CiAgICB9Cn0KCi5wcm9wZXJ0eS1ncmlkLXYxIC5wcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciAuYm90dG9tLWxhYmVsIHsKICAgIHBhZGRpbmctdG9wOiA0MHB4OwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCB0cmFuc3BhcmVudCAwJSwgIzFkMjkzZSAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsIHRyYW5zcGFyZW50IDAlLCAjMWQyOTNlIDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQgMCUsICMxZDI5M2UgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDAwMDAwMDAnLCBlbmRDb2xvcnN0cj0nI0ZGMUQyOTNFJywgR3JhZGllbnRUeXBlPTApOwp9CgoucHJvcGVydHktZ3JpZC12MSAucHJvcGVydHktaW1hZ2U6YmVmb3JlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5wcm9wZXJ0eS1ncmlkLXYxIC5wcm9wZXJ0eS1tZXRhcywKLnByb3BlcnR5LWdyaWQtdjEgLnByb3BlcnR5LXRpdGxlIGEgewogICAgY29sb3I6ICNmZmY7Cn0KCi5wcm9wZXJ0eS1ncmlkLXYxIC5wcm9wZXJ0eS10aXRsZSB7CiAgICBmb250LXNpemU6IDE3cHg7Cn0KCi5wcm9wZXJ0eS1ncmlkLXYxOmhvdmVyIC5wcm9wZXJ0eS1pbWFnZSBpbWcgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwp9CgoucHJvcGVydHktZ3JpZC12MiB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDkpOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA5KTsKfQoKLnByb3BlcnR5LWdyaWQtdjI6aG92ZXIgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7CiAgICBib3gtc2hhZG93OiAwIDAgNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7Cn0KCi5wcm9wZXJ0eS1ncmlkLXYyIC5wcm9wZXJ0eS1pbmZvcm1hdGlvbiB7CiAgICBwYWRkaW5nOiAxNXB4IDIwcHggNXB4Owp9CgoucHJvcGVydHktZ3JpZC12MiAucHJvcGVydHktbWV0YXMtYm90dG9tIHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWJlYmViOwogICAgcGFkZGluZzogMTBweCAyMHB4Owp9CgoucHJvcGVydHktZ3JpZC12MiAucHJvcGVydHktbWV0YXMgewogICAgcGFkZGluZy10b3A6IDhweDsKICAgIGNvbG9yOiAjMDA2YzcwOwp9CgoucHJvcGVydHktZ3JpZC12MiAuYm90dG9tLWxhYmVsIHsKICAgIHBhZGRpbmc6IDEwcHggMjBweDsKfQoKLnByb3BlcnR5LWdyaWQtdjIgLnRvcC1pbmZvIHsKICAgIHBhZGRpbmc6IDAgMCAxMHB4Owp9CgoucHJvcGVydHktZ3JpZC12MiAucHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgewogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKfQoKLnByb3BlcnR5LWdyaWQtdjMgewogICAgYm9yZGVyOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgoucHJvcGVydHktZ3JpZC12Mzpob3ZlciB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgoucHJvcGVydHktZ3JpZC12MyAucHJvcGVydHktbWV0YXMgewogICAgcGFkZGluZy10b3A6IDhweDsKfQoKLnByb3BlcnR5LWdyaWQtdjMgLnByb3BlcnR5LWluZm9ybWF0aW9uIHsKICAgIHBhZGRpbmc6IDE1cHggMCAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucHJvcGVydHktZ3JpZC12MyAuYm90dG9tLWxhYmVsIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICB9Cn0KCi5wcm9wZXJ0eS1ncmlkLXY0IHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXI6IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3gtc2hhZG93OiAwIDAgMCA1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwp9CgoucHJvcGVydHktZ3JpZC12NCAucHJvcGVydHktaW5mb3JtYXRpb24gewogICAgcGFkZGluZzogMTVweCAyMHB4IDVweDsKfQoKLnByb3BlcnR5LWdyaWQtdjQgLnByb3BlcnR5LW1ldGFzIHsKICAgIHBhZGRpbmctdG9wOiA4cHg7Cn0KCi5wcm9wZXJ0eS1ncmlkLXY0IC5ib3R0b20tbGFiZWwgewogICAgcGFkZGluZzogMTBweCAyMHB4Owp9CgoucHJvcGVydHktZ3JpZC12NCAudG9wLWxhYmVsIHsKICAgIG1hcmdpbjogMTBweDsKfQoKLnByb3BlcnR5LWdyaWQtdjQgLnRvcC1pbmZvIHsKICAgIHBhZGRpbmc6IDAgMCAxMHB4Owp9CgoucHJvcGVydHktZ3JpZC12NCAucHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgewogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKfQoKLnByb3BlcnR5LWdyaWQtdjQ6aG92ZXIgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCA1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpOwp9CgoucHJvcGVydHktbGlzdCB7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgoucHJvcGVydHktbGlzdCAubGVmdC1pbm5lciB7CiAgICB3aWR0aDogMTIwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLnByb3BlcnR5LWxpc3QgLmxlZnQtaW5uZXIgewogICAgICAgIHdpZHRoOiAyNjBweDsKICAgIH0KfQoKLnByb3BlcnR5LWxpc3QgLnJpZ2h0LWlubmVyIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMjBweCk7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5wcm9wZXJ0eS1saXN0IC5yaWdodC1pbm5lciB7CiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyNjBweCk7CiAgICB9Cn0KCi5wcm9wZXJ0eS1saXN0IC5pbm5lciB7CiAgICB3aWR0aDogMTAwJTsKfQoKLnByb3BlcnR5LWxpc3QgLnByb3BlcnR5LWluZm9ybWF0aW9uLXRvcCB7CiAgICBwYWRkaW5nLWJvdHRvbTogM3B4Owp9CgoucHJvcGVydHktbGlzdCAucHJvcGVydHktbWV0YXMgewogICAgcGFkZGluZy10b3A6IDVweDsKfQoKLnByb3BlcnR5LWxpc3QgLnByb3BlcnR5LW1ldGFzLWJvdHRvbSB7CiAgICBwYWRkaW5nLXRvcDogMTJweDsKfQoKLnByb3BlcnR5LWxpc3QgLnByb3BlcnR5LXByaWNlIHsKICAgIGZvbnQtc2l6ZTogMjJweDsKfQoKLnByb3BlcnR5LWxpc3QgLnByb3BlcnR5LXByaWNlIC5zdWZmaXgtdGV4dCwKLnByb3BlcnR5LWxpc3QgLnByb3BlcnR5LXByaWNlIC5wcmVmaXgtdGV4dCB7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5wcm9wZXJ0eS1saXN0LW1lbWJlciB7CiAgICBwYWRkaW5nOiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgoucHJvcGVydHktbGlzdC1tZW1iZXIgLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDA7Cn0KCi5wcm9wZXJ0eS1saXN0LXNpbXBsZSAuYnRuLWFjdGlvbi1pY29uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBvcGFjaXR5OiAwLjU7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NTApOwp9CgoucnRsIC5wcm9wZXJ0eS1saXN0LXNpbXBsZSAuYnRuLWFjdGlvbi1pY29uIHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKfQoKLnByb3BlcnR5LWxpc3Qtc2ltcGxlOmhvdmVyIC5idG4tYWN0aW9uLWljb24gewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgoucHJvcGVydHktbGlzdC1zaW1wbGUgLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiA5MHB4Owp9CgoucHJvcGVydHktbGlzdC1zaW1wbGUgLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIC5wcm9wZXJ0eS1pbWFnZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLnByb3BlcnR5LWxpc3Qtc2ltcGxlIC5wcm9wZXJ0eS1pbmZvcm1hdGlvbiB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gOTBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7Cn0KCi5ydGwgLnByb3BlcnR5LWxpc3Qtc2ltcGxlIC5wcm9wZXJ0eS1pbmZvcm1hdGlvbiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0Owp9CgoucHJvcGVydHktbGlzdC1zaW1wbGUgLnByb3BlcnR5LXByaWNlIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgbWFyZ2luLXRvcDogN3B4OwogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5wcm9wZXJ0eS1saXN0LXNpbXBsZSAucHJvcGVydHktcHJpY2UgLnByZWZpeC10ZXh0LAoucHJvcGVydHktbGlzdC1zaW1wbGUgLnByb3BlcnR5LXByaWNlIC5zdWZmaXgtdGV4dCB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KCi5wcm9wZXJ0eS1saXN0LXNpbXBsZSAucHJvcGVydHktdGl0bGUgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgbWFyZ2luOiAwOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7CiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoucHJvcGVydHktbGlzdC1zaW1wbGUgLnByb3BlcnR5LW1ldGFzIHsKICAgIG1hcmdpbi10b3A6IDdweDsKfQoKLnByb3BlcnR5LWxpc3Qtc2ltcGxlIC5wcm9wZXJ0eS1tZXRhcz5kaXYgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9CgoucnRsIC5wcm9wZXJ0eS1saXN0LXNpbXBsZSAucHJvcGVydHktbWV0YXM+ZGl2IHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucHJvcGVydHktbGlzdC1zaW1wbGUgLnByb3BlcnR5LW1ldGFzPmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnJ0bCAucHJvcGVydHktbGlzdC1zaW1wbGUgLnByb3BlcnR5LW1ldGFzPmRpdjpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoubXktcHJvcGVydGllcy1pdGVtIHsKICAgIHBhZGRpbmctYm90dG9tOiAyMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwogICAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4ICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLm15LXByb3BlcnRpZXMtaXRlbSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsKICAgIH0KfQoKLm15LXByb3BlcnRpZXMtaXRlbTpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLm15LXByb3BlcnRpZXMtaXRlbSAucHJvcGVydHktZGF0ZSB7CiAgICBvcGFjaXR5OiAwLjc7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NzApOwp9CgoubXktcHJvcGVydGllcy1pdGVtIC5wcm9wZXJ0eS1wcmljZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKLm15LXByb3BlcnRpZXMtaXRlbSAucHJvcGVydHktcHJpY2UgLnByZWZpeC10ZXh0LAoubXktcHJvcGVydGllcy1pdGVtIC5wcm9wZXJ0eS1wcmljZSAuc3VmZml4LXRleHQgewogICAgZm9udC1zaXplOiAxNHB4Owp9CgoubXktcHJvcGVydGllcy1pdGVtIC5wcm9wZXJ0eS10YWJsZS1pbmZvLWNvbnRlbnQtZXhwaXJ5IHsKICAgIGNvbG9yOiAjZTQ0MzQzOwp9CgoubXktcHJvcGVydGllcy1pdGVtIC5zdGF0dXMtcHJvcGVydHkgewogICAgZm9udC1zaXplOiAxNHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMCAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAubXktcHJvcGVydGllcy1pdGVtIC5zdGF0dXMtcHJvcGVydHkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICB9CiAgICAucnRsIC5teS1wcm9wZXJ0aWVzLWl0ZW0gLnN0YXR1cy1wcm9wZXJ0eSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9Cn0KCi5teS1wcm9wZXJ0aWVzLWl0ZW0gLnN0YXR1cy1wcm9wZXJ0eS5wdWJsaXNoIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogIzM5ZGE4YTsKfQoKLm15LXByb3BlcnRpZXMtaXRlbSAuc3RhdHVzLXByb3BlcnR5LnByZXZpZXcsCi5teS1wcm9wZXJ0aWVzLWl0ZW0gLnN0YXR1cy1wcm9wZXJ0eS5wZW5kaW5nLAoubXktcHJvcGVydGllcy1pdGVtIC5zdGF0dXMtcHJvcGVydHkucGVuZGluZ19wYXltZW50LAoubXktcHJvcGVydGllcy1pdGVtIC5zdGF0dXMtcHJvcGVydHkuZHJhZnQgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjZmY1YTVmOwp9CgoubXktcHJvcGVydGllcy1pdGVtIC5zdGF0dXMtcHJvcGVydHkuZXhwaXJlZCB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6ICNmZDM5N2E7Cn0KCi5sYXlvdXQtbXktcHJvcGVydGllcyB7CiAgICB3aWR0aDogMTAwJTsKfQoKLmxheW91dC1teS1wcm9wZXJ0aWVzLmhlYWRlci1sYXlvdXQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI0MzI0YTsKICAgIHBhZGRpbmc6IDExcHggMDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmxheW91dC1teS1wcm9wZXJ0aWVzLmhlYWRlci1sYXlvdXQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9Cn0KCi5sYXlvdXQtbXktcHJvcGVydGllcy5oZWFkZXItbGF5b3V0IC5wcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciB7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KCi5ydGwgLmxheW91dC1teS1wcm9wZXJ0aWVzLmhlYWRlci1sYXlvdXQgLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5sYXlvdXQtbXktcHJvcGVydGllcy5oZWFkZXItbGF5b3V0IC5wcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4OwogICAgfQogICAgLnJ0bCAubGF5b3V0LW15LXByb3BlcnRpZXMuaGVhZGVyLWxheW91dCAucHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0OwogICAgfQp9CgoubGF5b3V0LW15LXByb3BlcnRpZXMgLnByb3BlcnR5LXRodW1ibmFpbC13cmFwcGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmxheW91dC1teS1wcm9wZXJ0aWVzIC5wcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDE1MHB4OwogICAgfQp9CgoubGF5b3V0LW15LXByb3BlcnRpZXMgLmlubmVyLWluZm8gewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDEwMHB4KTsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKfQoKLnJ0bCAubGF5b3V0LW15LXByb3BlcnRpZXMgLmlubmVyLWluZm8gewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmxheW91dC1teS1wcm9wZXJ0aWVzIC5pbm5lci1pbmZvIHsKICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMTUwcHgpOwogICAgICAgIHBhZGRpbmctbGVmdDogMjVweDsKICAgIH0KICAgIC5ydGwgLmxheW91dC1teS1wcm9wZXJ0aWVzIC5pbm5lci1pbmZvIHsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNXB4OwogICAgICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKICAgIH0KfQoKLmxheW91dC1teS1wcm9wZXJ0aWVzIC5sYXlvdXQtbGVmdD5kaXYgewogICAgd2lkdGg6IDIwJTsKICAgIHBhZGRpbmc6IDVweDsKfQoKLmxheW91dC1teS1wcm9wZXJ0aWVzIC5sYXlvdXQtbGVmdCAuaW5uZXItaW5mby1sZWZ0IHsKICAgIHdpZHRoOiA0MCU7Cn0KCi5wcm9wZXJ0eS1pdGVtLWZhdm9yaXRlIC5wcm9wZXJ0eS10aHVtYm5haWwtd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTUwcHg7Cn0KCi5wcm9wZXJ0eS1pdGVtLWZhdm9yaXRlIC5pbm5lciB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gMTUwcHgpOwogICAgcGFkZGluZy1sZWZ0OiAxNXB4Owp9CgoucnRsIC5wcm9wZXJ0eS1pdGVtLWZhdm9yaXRlIC5pbm5lciB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucHJvcGVydHktaXRlbS1mYXZvcml0ZSAuaW5uZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogMjVweDsKICAgIH0KICAgIC5ydGwgLnByb3BlcnR5LWl0ZW0tZmF2b3JpdGUgLmlubmVyIHsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNXB4OwogICAgICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKICAgIH0KfQoKLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWFycm93IHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDA7CiAgICB0b3A6IDEwMCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWFycm93IHsKICAgICAgICB3aWR0aDogOTBweDsKICAgICAgICBoZWlnaHQ6IDkwcHg7CiAgICAgICAgZm9udC1zaXplOiAyM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiA5MHB4OwogICAgfQp9Cgoud2lkZ2V0LXByb3BlcnRpZXMtc2xpZGVyIC5zbGljay1jYXJvdXNlbCAuc2xpY2stbmV4dCB7CiAgICByaWdodDogYXV0bzsKICAgIGxlZnQ6IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiAwIDhweCAwIDA7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgOHB4IDAgMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMCA4cHggMCAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDAgOHB4IDAgMDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDAgOHB4IDAgMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLW5leHQgewogICAgICAgIGxlZnQ6IDkwcHg7CiAgICB9Cn0KCi53aWRnZXQtcHJvcGVydGllcy1zbGlkZXIgLnNsaWNrLWNhcm91c2VsIC5zbGljay1kb3RzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgYm90dG9tOiAyMHB4OwogICAgbGVmdDogMDsKICAgIHotaW5kZXg6IDE7Cn0KCi53aWRnZXQtcHJvcGVydGllcy1zbGlkZXIgLnNsaWNrLWNhcm91c2VsIC5wcm9wZXJ0aWVzLXNsaWRlci1pbm5lciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAxcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAxcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAxcyBlYXNlLWluLW91dCAwczsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyNXB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjVweCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjVweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjVweCk7Cn0KCi53aWRnZXQtcHJvcGVydGllcy1zbGlkZXIgLnNsaWNrLWNhcm91c2VsIC5zbGljay1hY3RpdmUgLnByb3BlcnRpZXMtc2xpZGVyLWlubmVyIHsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKfQoKLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuY29udGVudC13cmFwcGVyIHsKICAgIHBhZGRpbmc6IDMwcHggMDsKfQoKLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuY29udGVudC13cmFwcGVyLmhhcy1pbWFnZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKfQoKLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuYmFubmVyLWltYWdlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuYmFubmVyLWltYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxZDI5M2U7CiAgICBvcGFjaXR5OiAwLjY7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjApOwp9CgoucHJvcGVydGllcy1zbGlkZXItaW5uZXIgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5wcm9wZXJ0aWVzLXNsaWRlci1pbm5lciAudGl0bGUgewogICAgZm9udC1zaXplOiA1NXB4OwogICAgbWFyZ2luOiAwIDAgNXB4Owp9CgoucHJvcGVydGllcy1zbGlkZXItaW5uZXIgLmRlc2MgewogICAgZm9udC1zaXplOiAxOHB4Owp9CgoucHJvcGVydGllcy1zaWRlYmFyIGFydGljbGUgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnByb3BlcnRpZXMtc2lkZWJhciBhcnRpY2xlIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgoucHJvcGVydGllcy1zaWRlYmFyIGFydGljbGU6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9Cgoud2lkZ2V0LXByb3BlcnRpZXMgLmJvdHRvbS12aWV3IHsKICAgIHBhZGRpbmctdG9wOiAxMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LXByb3BlcnRpZXMuY2Fyb3VzZWwgLndpZGdldC1jb250ZW50IHsKICAgICAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIH0KICAgIC53aWRnZXQtcHJvcGVydGllcy5jYXJvdXNlbCAuc2xpY2stbGlzdCB7CiAgICAgICAgcGFkZGluZzogMzBweCAxNXB4IDA7CiAgICB9CiAgICAud2lkZ2V0LXByb3BlcnRpZXMuY2Fyb3VzZWwgLnNsaWNrLXByZXYgewogICAgICAgIGxlZnQ6IDdweDsKICAgIH0KICAgIC53aWRnZXQtcHJvcGVydGllcy5jYXJvdXNlbCAuc2xpY2stbmV4dCB7CiAgICAgICAgcmlnaHQ6IDdweDsKICAgIH0KICAgIC53aWRnZXQtcHJvcGVydGllcy5jYXJvdXNlbCAudG9wLWluZm8td2lkZ2V0IHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgfQp9Cgoud2lkZ2V0LXByb3BlcnRpZXMuY2Fyb3VzZWwgLnNsaWNrLWRvdHMgewogICAgcGFkZGluZzogMDsKfQoKLndpZGdldC1wcm9wZXJ0aWVzIC50b3AtaW5mby13aWRnZXQgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLndpZGdldC1hZ2VudHMgLnRvcC1pbmZvLXdpZGdldCB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgoudGFicy1hY2NvdW50LmVsZW1lbnRvci10YWJzLXZpZXctaG9yaXpvbnRhbCB7CiAgICBtYXgtd2lkdGg6IDQxMHB4OwogICAgbWFyZ2luOiBhdXRvOwogICAgYmFja2dyb3VuZDogI2ZmZjsKfQoKLnRhYnMtYWNjb3VudC5lbGVtZW50b3ItdGFicy12aWV3LWhvcml6b250YWwgLmVsZW1lbnRvci10YWJzLXdyYXBwZXIgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlN2VjZWE7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4Owp9CgoudGFicy1hY2NvdW50LmVsZW1lbnRvci10YWJzLXZpZXctaG9yaXpvbnRhbCAuZWxlbWVudG9yLXRhYi1kZXNrdG9wLXRpdGxlIHsKICAgIHdpZHRoOiA1MCU7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHBhZGRpbmc6IDE5cHggMjVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnRhYnMtYWNjb3VudC5lbGVtZW50b3ItdGFicy12aWV3LWhvcml6b250YWwgLmVsZW1lbnRvci10YWItZGVza3RvcC10aXRsZTpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAycHg7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgYmFja2dyb3VuZDogI2ZmNWE1ZjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZVgoMCk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlWCgwKTsKICAgIHRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKfQoKLnRhYnMtYWNjb3VudC5lbGVtZW50b3ItdGFicy12aWV3LWhvcml6b250YWwgLmVsZW1lbnRvci10YWItZGVza3RvcC10aXRsZTphZnRlciB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi50YWJzLWFjY291bnQuZWxlbWVudG9yLXRhYnMtdmlldy1ob3Jpem9udGFsIC5lbGVtZW50b3ItdGFiLWRlc2t0b3AtdGl0bGUuZWxlbWVudG9yLWFjdGl2ZSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLnRhYnMtYWNjb3VudC5lbGVtZW50b3ItdGFicy12aWV3LWhvcml6b250YWwgLmVsZW1lbnRvci10YWItZGVza3RvcC10aXRsZS5lbGVtZW50b3ItYWN0aXZlOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGVYKDEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZVgoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAycHg7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwp9CgoudGFicy1hY2NvdW50LmVsZW1lbnRvci10YWJzLXZpZXctaG9yaXpvbnRhbCAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgIGJvcmRlcjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMjVweCAzMHB4IDMwcHg7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgLnRhYnMtYWNjb3VudC5lbGVtZW50b3ItdGFicy12aWV3LWhvcml6b250YWwgLmVsZW1lbnRvci10YWJzLWNvbnRlbnQtd3JhcHBlciB7CiAgICAgICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7CiAgICB9CiAgICAudGFicy1hY2NvdW50LmVsZW1lbnRvci10YWJzLXZpZXctaG9yaXpvbnRhbCAuZWxlbWVudG9yLXRhYnMtY29udGVudC13cmFwcGVyIC5lbGVtZW50b3ItdGFiLXRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9Cn0KCi50b3AtaGVhZGVyLWRldGFpbC1wcm9wZXJ0eSB7CiAgICBwYWRkaW5nOiAyMHB4IDAgMjVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnRvcC1oZWFkZXItZGV0YWlsLXByb3BlcnR5IHsKICAgICAgICBwYWRkaW5nOiA1MHB4IDAgNTVweDsKICAgIH0KfQoKLnRvcC1oZWFkZXItZGV0YWlsLXByb3BlcnR5IC5wcm9wZXJ0eS10aXRsZSB7CiAgICBtYXJnaW46IDA7CiAgICBmb250LXNpemU6IDIycHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50b3AtaGVhZGVyLWRldGFpbC1wcm9wZXJ0eSAucHJvcGVydHktdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIH0KfQoKLnRvcC1oZWFkZXItZGV0YWlsLXByb3BlcnR5IC5wcm9wZXJ0eS1sb2NhdGlvbiB7CiAgICBtYXJnaW4tdG9wOiA1cHg7Cn0KCi50b3AtaGVhZGVyLWRldGFpbC1wcm9wZXJ0eS52MiB7CiAgICBwYWRkaW5nLXRvcDogMDsKICAgIHBhZGRpbmctYm90dG9tOiAyNXB4Owp9CgoudG9wLWhlYWRlci1kZXRhaWwtcHJvcGVydHkudjIgLnByb3BlcnR5LXByaWNlIHsKICAgIG1hcmdpbjogMDsKfQoKLnRvcC1oZWFkZXItZGV0YWlsLXByb3BlcnR5LnYzIC5wcm9wZXJ0eS1wcmljZSB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7Cn0KCi5ydGwgLnRvcC1oZWFkZXItZGV0YWlsLXByb3BlcnR5LnYzIC5wcm9wZXJ0eS1wcmljZSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAudG9wLWhlYWRlci1kZXRhaWwtcHJvcGVydHkudjMgLnByb3BlcnR5LXByaWNlIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7CiAgICB9CiAgICAucnRsIC50b3AtaGVhZGVyLWRldGFpbC1wcm9wZXJ0eS52MyAucHJvcGVydHktcHJpY2UgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0OwogICAgfQp9CgoudG9wLWhlYWRlci1kZXRhaWwtcHJvcGVydHkudjQgewogICAgcGFkZGluZzogMCAwIDI1cHg7Cn0KCi5wcm9wZXJ0eS1kYXRlIGkgewogICAgbWFyZ2luLXJpZ2h0OiAycHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5ydGwgLnByb3BlcnR5LWRhdGUgaSB7CiAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucHJvcGVydHktbG9jYXRpb24gaSB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDJweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLnJ0bCAucHJvcGVydHktbG9jYXRpb24gaSB7CiAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoubGlzdC1nYWxsZXJ5LXByb3BlcnR5LXYyIHsKICAgIG1hcmdpbjogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNmZmY7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5ydGwgLmxpc3QtZ2FsbGVyeS1wcm9wZXJ0eS12MiB7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZmZmOwogICAgYm9yZGVyLWxlZnQ6IGluaGVyaXQ7Cn0KCi5saXN0LWdhbGxlcnktcHJvcGVydHktdjI+ZGl2IHsKICAgIHBhZGRpbmc6IDA7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ZmZjsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmZmY7Cn0KCi5ydGwgLmxpc3QtZ2FsbGVyeS1wcm9wZXJ0eS12Mj5kaXYgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZmZmOwogICAgYm9yZGVyLXJpZ2h0OiBpbmhlcml0Owp9CgouY29udGVudC1wcm9wZXJ0eS1kZXRhaWwtdjIgewogICAgbWFyZ2luLXRvcDogMzBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmNvbnRlbnQtcHJvcGVydHktZGV0YWlsLXYyIHsKICAgICAgICBtYXJnaW4tdG9wOiA2MHB4OwogICAgfQp9CgouY29udGVudC1wcm9wZXJ0eS1kZXRhaWwtdjMgewogICAgbWFyZ2luLXRvcDogMzBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmNvbnRlbnQtcHJvcGVydHktZGV0YWlsLXYzIHsKICAgICAgICBtYXJnaW4tdG9wOiA2MHB4OwogICAgfQp9CgoucHJvcGVydHktc2luZ2xlLXYzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi50b3Atc2luZ2xlLXY0IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiAyMHB4IDAgMDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAudG9wLXNpbmdsZS12NCB7CiAgICAgICAgcGFkZGluZzogNTBweCAwIDMwcHg7CiAgICB9Cn0KCi5jb250ZW50LXByb3BlcnR5LWRldGFpbC12NCB7CiAgICBtYXJnaW4tdG9wOiAzMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuY29udGVudC1wcm9wZXJ0eS1kZXRhaWwtdjQgewogICAgICAgIG1hcmdpbi10b3A6IDYwcHg7CiAgICB9Cn0KCi5saXN0LWdhbGxlcnktcHJvcGVydHktdjQgLnAtcG9wdXAtaW1hZ2UgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5saXN0LWdhbGxlcnktcHJvcGVydHktdjQ+ZGl2IHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KCi5uYXYtZGV0YWlsLWNlbnRlciB7CiAgICBib3JkZXI6IDA7CiAgICBwYWRkaW5nOiAwIDEwcHg7CiAgICBtYXJnaW46IDA7CiAgICBmbG9hdDogbm9uZTsKfQoKLm5hdi1kZXRhaWwtY2VudGVyPmxpIHsKICAgIG1hcmdpbjogMDsKfQoKLm5hdi1kZXRhaWwtY2VudGVyPmxpPmEgewogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgcGFkZGluZzogMTJweCAyMHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5uYXYtZGV0YWlsLWNlbnRlcj5saT5hIHsKICAgICAgICBwYWRkaW5nOiAxNnB4IDM1cHg7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgfQp9CgoubmF2LWRldGFpbC1jZW50ZXI+bGk+YTpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDFweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAsIDEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCwgMSk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDAsIDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTsKfQoKLm5hdi1kZXRhaWwtY2VudGVyPmxpLmFjdGl2ZT5hLAoubmF2LWRldGFpbC1jZW50ZXI+bGk6aG92ZXI+YSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLm5hdi1kZXRhaWwtY2VudGVyPmxpLmFjdGl2ZT5hOmJlZm9yZSwKLm5hdi1kZXRhaWwtY2VudGVyPmxpOmhvdmVyPmE6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7Cn0KCi5oZWFkZXItdGFicy13cmFwcGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKICAgIHotaW5kZXg6IDY7Cn0KCi5idXR0b25zLWdyb3VwLWNlbnRlciB7CiAgICBwYWRkaW5nOiAxNXB4IDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5idXR0b25zLWdyb3VwLWNlbnRlciB7CiAgICAgICAgcGFkZGluZzogMzBweCAwOwogICAgfQp9CgouYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl0gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl0gaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMzVweDsKICAgIGhlaWdodDogMzVweDsKICAgIGxpbmUtaGVpZ2h0OiAzNXB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTNlMzsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5idXR0b25zLWdyb3VwLWNlbnRlciBbY2xhc3N8PSJidG4iXSBpIHsKICAgICAgICB3aWR0aDogNTBweDsKICAgICAgICBoZWlnaHQ6IDUwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7CiAgICAgICAgZm9udC1zaXplOiAyMXB4OwogICAgfQp9CgouYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl0gaTphZnRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBjb250ZW50OiAnXGYxMTAnOwogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJzsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwp9CgouYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl0+c3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi10b3A6IDhweDsKfQoKLmJ1dHRvbnMtZ3JvdXAtY2VudGVyIFtjbGFzc3w9ImJ0biJdW2NsYXNzKj0iYWRkZWQiXTpob3ZlciBpOmJlZm9yZSwKLmJ1dHRvbnMtZ3JvdXAtY2VudGVyIFtjbGFzc3w9ImJ0biJdW2NsYXNzKj0icmVtb3ZlIl06aG92ZXIgaTpiZWZvcmUgewogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGNvbnRlbnQ6ICJcZjEwMyI7CiAgICBmb250LWZhbWlseTogJ0ZsYXRpY29uJzsKfQoKLmJ1dHRvbnMtZ3JvdXAtY2VudGVyIFtjbGFzc3w9ImJ0biJdW2NsYXNzKj0iYWRkZWQiXSBpLAouYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl1bY2xhc3MqPSJyZW1vdmUiXSBpLAouYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl06aG92ZXIgaSwKLmJ1dHRvbnMtZ3JvdXAtY2VudGVyIFtjbGFzc3w9ImJ0biJdOmZvY3VzIGkgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwp9CgouYnV0dG9ucy1ncm91cC1jZW50ZXIgW2NsYXNzfD0iYnRuIl0ubG9hZGluZyBpIHsKICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpICFpbXBvcnRhbnQ7Cn0KCi5idXR0b25zLWdyb3VwLWNlbnRlciBbY2xhc3N8PSJidG4iXS5sb2FkaW5nIGk6YWZ0ZXIgewogICAgb3BhY2l0eTogMC43OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTcwKTsKICAgIGFuaW1hdGlvbjogcm90YXRlX2ljb24gMTUwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0ZV9pY29uIDE1MDBtcyBsaW5lYXIgMHMgbm9ybWFsIG5vbmUgaW5maW5pdGUgcnVubmluZzsKfQoKLmJ1dHRvbnMtZ3JvdXAtY2VudGVyPmRpdiB7CiAgICBwYWRkaW5nOiAwIDEwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5idXR0b25zLWdyb3VwLWNlbnRlcj5kaXYgewogICAgICAgIHBhZGRpbmc6IDAgMjVweDsKICAgIH0KfQoKLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1heC13aWR0aDogMTkyMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeSAuc2xpY2stY2Fyb3VzZWwgewogICAgbWFyZ2luOiAwOwp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnNsaWNrLWNhcm91c2VsIC5zbGljay1hcnJvdyB7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogNDBweDsKICAgIGxpbmUtaGVpZ2h0OiAzOHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogI2ZmZmY7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeSAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWFycm93OmhvdmVyLAoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnNsaWNrLWNhcm91c2VsIC5zbGljay1hcnJvdzphY3RpdmUgewogICAgY29sb3I6ICMwMDZhNzA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjZmZmOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnNsaWNrLWNhcm91c2VsIC5zbGljay1hcnJvdyB7CiAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgaGVpZ2h0OiA4MHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiA3OHB4OwogICAgfQp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnNsaWNrLWNhcm91c2VsIC5zbGljay1wcmV2IHsKICAgIGxlZnQ6IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeSAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLXByZXYgewogICAgICAgIGxlZnQ6IDMwcHg7CiAgICB9Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeSAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLW5leHQgewogICAgcmlnaHQ6IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeSAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLW5leHQgewogICAgICAgIHJpZ2h0OiAzMHB4OwogICAgfQp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnNsaWNrLWNhcm91c2VsIC5zbGljay1zbGlkZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIC5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeSAuc2xpY2stY2Fyb3VzZWwgLnNsaWNrLWFycm93IHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5IC5zbGljay1jYXJvdXNlbCAuc2xpY2stZG90cyB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnAtcG9wdXAtaW1hZ2UgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnAtcG9wdXAtaW1hZ2UgLnZpZXctbW9yZS1nYWxsZXJ5IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogI2ZmZjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgei1pbmRleDogMjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5IC5wLXBvcHVwLWltYWdlIC52aWV3LW1vcmUtZ2FsbGVyeSB7CiAgICAgICAgZm9udC1zaXplOiAyNnB4OwogICAgfQp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkgLnAtcG9wdXAtaW1hZ2Uudmlldy1tb3JlLWltYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgei1pbmRleDogMTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyOTNlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBvcGFjaXR5OiAwLjg7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9ODApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeSAucC1wb3B1cC1pbWFnZS52aWV3LW1vcmUtaW1hZ2U6aG92ZXI6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDAuNTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeSAucC1wb3B1cC1pbWFnZS52MTpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICB6LWluZGV4OiAxOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjkzZTsKICAgIG9wYWNpdHk6IDAuNDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT00MCk7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeS52MiAucHJvcGVydHktZGV0YWlsLWdhbGxlcnktYWN0aW9ucyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3R0b206IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeS52MiAucHJvcGVydHktZGV0YWlsLWdhbGxlcnktYWN0aW9ucyB7CiAgICAgICAgYm90dG9tOiAzMHB4OwogICAgfQp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkudjMgewogICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKfQoKLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5LnYzIC5zbGljay1zbGlkZSB7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNmZmY7Cn0KCi5ydGwgLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5LnYzIC5zbGljay1zbGlkZSB7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZmZmOwogICAgYm9yZGVyLWxlZnQ6IGluaGVyaXQ7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeS52MyAuc2xpY2stYWN0aXZlOmxhc3QtY2hpbGQgewogICAgYm9yZGVyOiBub25lOwp9CgoucHJvcGVydHktZGV0YWlsLWdhbGxlcnkudjUgLnAtcG9wdXAtaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyOTNlOwogICAgb3BhY2l0eTogMC40OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTQwKTsKfQoKLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5LnY1IC50b3AtaGVhZGVyLWRldGFpbC1wcm9wZXJ0eSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiAyOwogICAgcGFkZGluZzogMjVweCAwOwogICAgY29sb3I6ICNmZmY7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeS52NSAudG9wLWhlYWRlci1kZXRhaWwtcHJvcGVydHkgYSwKLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5LnY1IC50b3AtaGVhZGVyLWRldGFpbC1wcm9wZXJ0eSAuZmVhdHVyZWQtcHJvcGVydHksCi5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeS52NSAudG9wLWhlYWRlci1kZXRhaWwtcHJvcGVydHkgLnByb3BlcnR5LXRpdGxlIHsKICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi5zb2NpYWwtcHJvcGVydHkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Cgouc29jaWFsLXByb3BlcnR5IC5iby1zb2NpYWwtaWNvbnMgewogICAgZGlzcGxheTogZmxleDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMTAwJTsKICAgIGxlZnQ6IDUwJTsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDZweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgYm94LXNoYWRvdzogMCAycHggNnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICB6LWluZGV4OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcGFkZGluZzogMCA4cHg7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwp9Cgouc29jaWFsLXByb3BlcnR5IC5iby1zb2NpYWwtaWNvbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB6LWluZGV4OiAyOwogICAgYm9yZGVyLXdpZHRoOiA2cHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLWNvbG9yOiAjZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50Owp9Cgouc29jaWFsLXByb3BlcnR5IC5iby1zb2NpYWwtaWNvbnM6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTVweDsKICAgIGJvdHRvbTogMTAwJTsKICAgIGxlZnQ6IDA7Cn0KCi5zb2NpYWwtcHJvcGVydHkgLmJvLXNvY2lhbC1pY29ucyBhIHsKICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5zb2NpYWwtcHJvcGVydHk6aG92ZXIgLmJvLXNvY2lhbC1pY29ucyB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKfQoKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwgW2NsYXNzKj0iYnRuIl0gewogICAgbWFyZ2luOiAwIDJweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgd2lkdGg6IDM1cHg7CiAgICBoZWlnaHQ6IDM1cHg7CiAgICBsaW5lLWhlaWdodDogMzVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNmE3MDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoucHJvcGVydHktYWN0aW9uLWRldGFpbCBbY2xhc3MqPSJidG4iXTpiZWZvcmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAzNHB4OwogICAgaGVpZ2h0OiAzNHB4OwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIGNvbnRlbnQ6ICdcZjExMCc7CiAgICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnOwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIGxpbmUtaGVpZ2h0OiAzNHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsIFtjbGFzcyo9ImJ0biJdLmxvYWRpbmcgewogICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsIFtjbGFzcyo9ImJ0biJdLmxvYWRpbmc6YmVmb3JlIHsKICAgIGNvbG9yOiAjZmZmOwogICAgb3BhY2l0eTogMC43OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTcwKTsKICAgIGFuaW1hdGlvbjogcm90YXRlX2ljb24gMTUwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0ZV9pY29uIDE1MDBtcyBsaW5lYXIgMHMgbm9ybWFsIG5vbmUgaW5maW5pdGUgcnVubmluZzsKfQoKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJhZGRlZCJdLAoucHJvcGVydHktYWN0aW9uLWRldGFpbCBbY2xhc3MqPSJidG4iXVtjbGFzcyo9InJlbW92ZSJdIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7Cn0KCi5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsIFtjbGFzcyo9ImJ0biJdW2NsYXNzKj0iYWRkZWQiXTpob3ZlciBpOmJlZm9yZSwKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJyZW1vdmUiXTpob3ZlciBpOmJlZm9yZSB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBjb250ZW50OiAiXGYxMDMiOwogICAgZm9udC1mYW1pbHk6ICdGbGF0aWNvbic7Cn0KCi5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsIFtjbGFzcyo9ImJ0biJdOmhvdmVyLAoucHJvcGVydHktYWN0aW9uLWRldGFpbCBbY2xhc3MqPSJidG4iXTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwp9CgoucHJvcGVydHktYWN0aW9uLWRldGFpbCBbY2xhc3MqPSJidG4iXT5zcGFuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsPiogewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwgLnByb3BlcnR5LXByaWNlIHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLnJ0bCAucHJvcGVydHktYWN0aW9uLWRldGFpbCAucHJvcGVydHktcHJpY2UgewogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsIC5wcm9wZXJ0eS1wcmljZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzNXB4OwogICAgfQogICAgLnJ0bCAucHJvcGVydHktYWN0aW9uLWRldGFpbCAucHJvcGVydHktcHJpY2UgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KfQoKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwudjQgW2NsYXNzKj0iYnRuIl0sCi5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsLnYyIFtjbGFzcyo9ImJ0biJdIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwudjQgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJhZGRlZCJdLAoucHJvcGVydHktYWN0aW9uLWRldGFpbC52NCBbY2xhc3MqPSJidG4iXVtjbGFzcyo9InJlbW92ZSJdLAoucHJvcGVydHktYWN0aW9uLWRldGFpbC52NCBbY2xhc3MqPSJidG4iXTpob3ZlciwKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwudjQgW2NsYXNzKj0iYnRuIl06Zm9jdXMsCi5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsLnYyIFtjbGFzcyo9ImJ0biJdW2NsYXNzKj0iYWRkZWQiXSwKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwudjIgW2NsYXNzKj0iYnRuIl1bY2xhc3MqPSJyZW1vdmUiXSwKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwudjIgW2NsYXNzKj0iYnRuIl06aG92ZXIsCi5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsLnYyIFtjbGFzcyo9ImJ0biJdOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKfQoKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwudjQgW2NsYXNzKj0iYnRuIl0ubG9hZGluZywKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwudjIgW2NsYXNzKj0iYnRuIl0ubG9hZGluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoucHJvcGVydHktYWN0aW9uLWRldGFpbC52NCBbY2xhc3MqPSJidG4iXS5sb2FkaW5nOmJlZm9yZSwKLnByb3BlcnR5LWFjdGlvbi1kZXRhaWwudjIgW2NsYXNzKj0iYnRuIl0ubG9hZGluZzpiZWZvcmUgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5hdHRhY2htZW50cy1pbm5lciB7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogICAgbWFyZ2luLWJvdHRvbTogLTEwcHg7CiAgICBjbGVhcjogYm90aDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5hdHRhY2htZW50cy1pbm5lciAuYXR0YWNobWVudC1pdGVtIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgICB3aWR0aDogNTAlOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIGZsb2F0OiBsZWZ0Owp9CgoucnRsIC5hdHRhY2htZW50cy1pbm5lciAuYXR0YWNobWVudC1pdGVtIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLmF0dGFjaG1lbnRzLWlubmVyIC5hdHRhY2htZW50LWl0ZW06bnRoLWNoaWxkKDJuKzEpIHsKICAgIGNsZWFyOiBib3RoOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIC5hdHRhY2htZW50cy1pbm5lciAuYXR0YWNobWVudC1pdGVtIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmF0dGFjaG1lbnRzLWlubmVyIC5hdHRhY2htZW50LWl0ZW06bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIH0KfQoKLmF0dGFjaG1lbnQtaXRlbSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAvKiBTYWZhcmkgKi8KICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC8qIFNhZmFyaSA3LjArICovCiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmF0dGFjaG1lbnQtaXRlbSAuaWNvbl90eXBlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgbGluZS1oZWlnaHQ6IDUwcHg7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmF0dGFjaG1lbnQtaXRlbSAuaWNvbl90eXBlIHsKICAgICAgICB3aWR0aDogODBweDsKICAgICAgICBoZWlnaHQ6IDgwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDgwcHg7CiAgICAgICAgZm9udC1zaXplOiA0MHB4OwogICAgfQp9CgouYXR0YWNobWVudC1pdGVtIC5jYW5kaWRhdGUtZGV0YWlsLWF0dGFjaG1lbnQgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNTBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7Cn0KCi5ydGwgLmF0dGFjaG1lbnQtaXRlbSAuY2FuZGlkYXRlLWRldGFpbC1hdHRhY2htZW50IHsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hdHRhY2htZW50LWl0ZW0gLmNhbmRpZGF0ZS1kZXRhaWwtYXR0YWNobWVudCB7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDgwcHgpOwogICAgfQp9CgouYXR0YWNobWVudC1pdGVtIC5jYW5kaWRhdGUtZGV0YWlsLWF0dGFjaG1lbnQgaSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1hcmdpbi1yaWdodDogNXB4Owp9CgoucnRsIC5hdHRhY2htZW50LWl0ZW0gLmNhbmRpZGF0ZS1kZXRhaWwtYXR0YWNobWVudCBpIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5uYXYtdGFibGUgewogICAgYm9yZGVyOiAwOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKfQoKLm5hdi10YWJsZT5saSB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDhweDsKfQoKLnJ0bCAubmF2LXRhYmxlPmxpIHsKICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5uYXYtdGFibGU+bGk+YSB7CiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMzVweDsKICAgIGhlaWdodDogMzVweDsKICAgIGxpbmUtaGVpZ2h0OiAzNXB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzUxNWQ2ODsKICAgIGNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLm5hdi10YWJsZT5saT5hIHsKICAgICAgICB3aWR0aDogNTBweDsKICAgICAgICBoZWlnaHQ6IDUwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7CiAgICAgICAgZm9udC1zaXplOiAyMXB4OwogICAgfQp9CgoubmF2LXRhYmxlPmxpPmE6aG92ZXIsCi5uYXYtdGFibGU+bGk+YTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmY7Cn0KCi5uYXYtdGFibGU+bGkuYWN0aXZlPmE6aG92ZXIsCi5uYXYtdGFibGU+bGkuYWN0aXZlPmE6Zm9jdXMsCi5uYXYtdGFibGU+bGkuYWN0aXZlPmEgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKICAgIGNvbG9yOiAjZmZmOwp9CgoudGFicy1nYWxsZXJ5LW1hcCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi50YWJzLWdhbGxlcnktbWFwIC5uYXYtdGFibGUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMHB4OwogICAgei1pbmRleDogNDsKICAgIGxlZnQ6IDE1cHg7Cn0KCi5ydGwgLnRhYnMtZ2FsbGVyeS1tYXAgLm5hdi10YWJsZSB7CiAgICByaWdodDogMTVweDsKICAgIGxlZnQ6IGF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50YWJzLWdhbGxlcnktbWFwIC5uYXYtdGFibGUgewogICAgICAgIHRvcDogNDVweDsKICAgIH0KfQoKLnRhYnMtZ2FsbGVyeS1tYXAgI3NpbmdsZS10YWItcHJvcGVydHktc3RyZWV0LXZpZXctbWFwLAoudGFicy1nYWxsZXJ5LW1hcCAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICBoZWlnaHQ6IDMwMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAudGFicy1nYWxsZXJ5LW1hcCAjc2luZ2xlLXRhYi1wcm9wZXJ0eS1zdHJlZXQtdmlldy1tYXAsCiAgICAudGFicy1nYWxsZXJ5LW1hcCAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICAgICAgaGVpZ2h0OiA2MDBweDsKICAgIH0KfQoKLnRhYnMtZ2FsbGVyeS1tYXAgLnByb3BlcnR5LXZpcnR1YWxfdG91cj5oMyB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoucHJvcGVydHktdmlydHVhbF90b3VyIGlmcmFtZSB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IDA7Cn0KCi50YWJzLXZpZGVvLXZpcnR1YWwgewogICAgcGFkZGluZy10b3A6IDVweCAhaW1wb3J0YW50OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnRhYnMtdmlkZW8tdmlydHVhbCAucHJvcGVydHktc2VjdGlvbj5oMyB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoucHJvcGVydHktZGV0YWlsLWRldGFpbCAubGlzdCB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY2xlYXI6IGJvdGg7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZGV0YWlsIC5saXN0IGxpIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDUwJTsKICAgIG1hcmdpbjogMCAwIDE1cHg7Cn0KCi5ydGwgLnByb3BlcnR5LWRldGFpbC1kZXRhaWwgLmxpc3QgbGkgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgoucHJvcGVydHktZGV0YWlsLWRldGFpbCAubGlzdCBsaT5kaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgoucHJvcGVydHktZGV0YWlsLWRldGFpbCAubGlzdCBsaSAudGV4dCB7CiAgICBtaW4td2lkdGg6IDEyNXB4Owp9CgoucHJvcGVydHktZGV0YWlsLWRldGFpbCAubGlzdCBsaSAudmFsdWUgewogICAgZm9udC13ZWlnaHQ6IDcwMDsKfQoKLmNvbHVtbnMtZ2FwIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjbGVhcjogYm90aDsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgouY29sdW1ucy1nYXAgbGkgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogNTAlOwogICAgbWFyZ2luOiAwIDAgMTVweDsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoucnRsIC5jb2x1bW5zLWdhcCBsaSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5jb2x1bW5zLWdhcCBsaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTBhIjsKICAgIG1hcmdpbi1yaWdodDogMTJweDsKICAgIGZvbnQtZmFtaWx5OiAnRmxhdGljb24nOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgoucnRsIC5jb2x1bW5zLWdhcCBsaTpiZWZvcmUgewogICAgbWFyZ2luLWxlZnQ6IDEycHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5jb2x1bW5zLWdhcCBsaS55ZXM6YmVmb3JlIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuY29sdW1ucy1nYXAgbGkgewogICAgICAgIHdpZHRoOiAzMyU7CiAgICB9Cn0KCi5jb2x1bW5zLWdhcCBsaT5kaXYgewogICAgZGlzcGxheTogaW5saW5lOwp9CgouY2lyY2xlLWNoZWNrIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjbGVhcjogYm90aDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgcGFkZGluZzogMXB4OwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIG1hcmdpbjogMDsKfQoKLmNpcmNsZS1jaGVjayBsaSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiA1MCU7CiAgICBtYXJnaW46IDAgMCAxMHB4OwogICAgbGluZS1oZWlnaHQ6IDE7Cn0KCi5ydGwgLmNpcmNsZS1jaGVjayBsaSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5jaXJjbGUtY2hlY2sgbGkgewogICAgICAgIHdpZHRoOiAzMyU7CiAgICB9Cn0KCi5jaXJjbGUtY2hlY2sgW3R5cGU9ImNoZWNrYm94Il0gewogICAgZGlzcGxheTogbm9uZTsKfQoKLmNpcmNsZS1jaGVjayBbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkK2xhYmVsIHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgouY2lyY2xlLWNoZWNrIFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQrbGFiZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YSI7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmNpcmNsZS1jaGVjayBsYWJlbCB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNDAwOwp9CgouY2lyY2xlLWNoZWNrIGxhYmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzgiOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJzsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjb2xvcjogI2M1YzVjNTsKICAgIGZvbnQtc2l6ZTogMTdweDsKfQoKLnJ0bCAuY2lyY2xlLWNoZWNrIGxhYmVsOmJlZm9yZSB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAucGFuZWwtZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAucGFuZWwgewogICAgYm9yZGVyOiAwOwp9CgoucHJvcGVydHktZGV0YWlsLWZsb29yLXBsYW5zIC5wYW5lbD4ucGFuZWwtaGVhZGluZyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgcGFkZGluZzogMTJweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAucGFuZWw+LnBhbmVsLWhlYWRpbmcgewogICAgICAgIHBhZGRpbmc6IDEycHggMjBweDsKICAgIH0KfQoKLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAucGFuZWw+LnBhbmVsLWhlYWRpbmc+YSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgoucHJvcGVydHktZGV0YWlsLWZsb29yLXBsYW5zIC5wYW5lbD4ucGFuZWwtaGVhZGluZyBoMyB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtYXJnaW46IDA7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZmxvb3ItcGxhbnMgLnBhbmVsIC5tZXRhcyB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgoucnRsIC5wcm9wZXJ0eS1kZXRhaWwtZmxvb3ItcGxhbnMgLnBhbmVsIC5tZXRhcyB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAucGFuZWwgLm1ldGFzPiogewogICAgbWFyZ2luLWxlZnQ6IDI1cHg7Cn0KCi5ydGwgLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAucGFuZWwgLm1ldGFzPiogewogICAgbWFyZ2luLXJpZ2h0OiAyNXB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtZmxvb3ItcGxhbnMgLnBhbmVsIC5zdWJ0aXRsZSB7CiAgICBmb250LXdlaWdodDogNDAwOwp9CgoucHJvcGVydHktZGV0YWlsLWZsb29yLXBsYW5zIC5wYW5lbCAuZXhwYW5kLWljb24gewogICAgZm9udC1zaXplOiAxMHB4OwogICAgbWFyZ2luLXRvcDogM3B4Owp9CgoucHJvcGVydHktZGV0YWlsLWZsb29yLXBsYW5zIC5jb250ZW50LWl0ZW0gewogICAgcGFkZGluZzogMTJweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAuY29udGVudC1pdGVtIHsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgfQp9CgoucHJvcGVydHktZGV0YWlsLWZsb29yLXBsYW5zIC5jb250ZW50LWl0ZW0gLmNvbnRlbnQgewogICAgbWFyZ2luLXRvcDogMTVweDsKfQoKLmRldGFpbC1tZXRhcy10b3AgewogICAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQoKLmRldGFpbC1tZXRhcy10b3A+ZGl2IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogM3B4OwogICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7Cn0KCi5ydGwgLmRldGFpbC1tZXRhcy10b3A+ZGl2IHsKICAgIG1hcmdpbi1sZWZ0OiAzcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5kZXRhaWwtbWV0YXMtdG9wPmRpdiB7CiAgICAgICAgcGFkZGluZzogNXB4IDIwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICB9CiAgICAucnRsIC5kZXRhaWwtbWV0YXMtdG9wPmRpdiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9Cn0KCi5kZXRhaWwtbWV0YXMtdG9wIC50eXBlLXByb3BlcnR5IHsKICAgIGNvbG9yOiAjZmY1YTVmOwp9CgoudmlkZW8tZW1iZWQtd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7Cn0KCi52aWRlby1lbWJlZC13cmFwcGVyOmJlZm9yZSB7CiAgICBwYWRkaW5nLXRvcDogNTYuMjUlOwogICAgY29udGVudDogIiI7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnZpZGVvLWVtYmVkLXdyYXBwZXIgaWZyYW1lIHsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9CgoucHJvcGVydHktZGV0YWlsLW1haW4+ZGl2IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgcGFkZGluZzogMTVweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnByb3BlcnR5LWRldGFpbC1tYWluPmRpdiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgfQp9CgoucHJvcGVydHktZGV0YWlsLW1haW4+ZGl2PmgzLAoucHJvcGVydHktZGV0YWlsLW1haW4+ZGl2IC50aXRsZSB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5wcm9wZXJ0eS1kZXRhaWwtbWFpbj5kaXY+aDMsCiAgICAucHJvcGVydHktZGV0YWlsLW1haW4+ZGl2IC50aXRsZSB7CiAgICAgICAgbWFyZ2luOiAwIDAgMjBweDsKICAgIH0KfQoKLnByb3BlcnR5LWRldGFpbC1tYWluPmRpdi5sb2FkaW5nIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHN0cm9rZT0icmdiYSgxMDIsMTAyLDEwMiwwLjI1KSIlM0UlM0NnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIlM0UlM0NnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiIHN0cm9rZS13aWR0aD0iMiIlM0UlM0NjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9Ii41NSIgY3g9IjE4IiBjeT0iMTgiIHI9IjE4Ii8lM0UlM0NwYXRoIGQ9Ik0zNiAxOGMwLTkuOTQtOC4wNi0xOC0xOC0xOCIlM0UlM0NhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiBmcm9tPSIwIDE4IDE4IiB0bz0iMzYwIDE4IDE4IiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvJTNFJTNDL3BhdGglM0UlM0MvZyUzRSUzQy9nJTNFJTNDL3N2ZyUzRScpOwogICAgbWF4LWhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtbWFpbj5kaXYucHJvcGVydHktc3VicHJvcGVydGllcywKLnByb3BlcnR5LWRldGFpbC1tYWluPmRpdiNwcm9wZXJ0eS1zaW5nbGUtcmVsYXRlZCwKLnByb3BlcnR5LWRldGFpbC1tYWluPmRpdi5yZWxlYXRlZC1wcm9wZXJ0aWVzIHsKICAgIHBhZGRpbmc6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMDsKfQoKLnByb3BlcnR5LWRldGFpbC1tYWluPmRpdiNwcm9wZXJ0eS1zaW5nbGUtdmlkZW9fdmlydHVhbCB7CiAgICBwYWRkaW5nLXRvcDogNXB4Owp9CgoucHJvcGVydHktZGV0YWlsLW1haW4gLmNvbW1lbnRmb3JtIC5jb21tZW50LXJlc3BvbmQgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyOiAwOwp9CgoucHJvcGVydHktZGV0YWlsLW1haW4gLmNvbW1lbnQtcmVwbHktdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLnByb3BlcnR5LWRldGFpbC1tYWluICNzaW5nbGUtcHJvcGVydHktc3RyZWV0LXZpZXctbWFwLAoucHJvcGVydHktZGV0YWlsLW1haW4gLnNpbmdsZS1wcm9wZXJ0eS1tYXAgewogICAgaGVpZ2h0OiAyODBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1kZXRhaWwtbWFpbiAjc2luZ2xlLXByb3BlcnR5LXN0cmVldC12aWV3LW1hcCwKICAgIC5wcm9wZXJ0eS1kZXRhaWwtbWFpbiAuc2luZ2xlLXByb3BlcnR5LW1hcCB7CiAgICAgICAgaGVpZ2h0OiAzNjBweDsKICAgIH0KfQoKLnByb3BlcnR5LWRldGFpbC1tYWluICNzaW5nbGUtcHJvcGVydHktc3RyZWV0LXZpZXctbWFwIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtbWFpbiAuc2luZ2xlLXByb3BlcnR5LWdvb2dsZS1tYXBzLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgoucHJvcGVydHktZGV0YWlsLW1haW4gLnNpbmdsZS1wcm9wZXJ0eS1nb29nbGUtbWFwcy13cmFwcGVyIC5idG4gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAyMHB4OwogICAgcmlnaHQ6IDIwcHg7CiAgICB6LWluZGV4OiAyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLnJ0bCAucHJvcGVydHktZGV0YWlsLW1haW4gLnNpbmdsZS1wcm9wZXJ0eS1nb29nbGUtbWFwcy13cmFwcGVyIC5idG4gewogICAgbGVmdDogMjBweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoucHJvcGVydHktZGV0YWlsLW1haW4gLndpZGdldC10aXRsZS13cmFwcGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtbWFpbiAud2lkZ2V0LXRpdGxlLXdyYXBwZXIgaDMgewogICAgbWFyZ2luOiAwOwogICAgZm9udC1zaXplOiAxOHB4Owp9CgoucHJvcGVydHktZGV0YWlsLW1haW4gI2NvbW1lbnRzIHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KCi5wcm9wZXJ0eS1kZXRhaWwtbWFpbiAuY29tbWVudC1saXN0PmxpOmxhc3QtY2hpbGQgLnRoZS1jb21tZW50IHsKICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGJvcmRlcjogMDsKfQoKI3Byb3BlcnR5LXNpbmdsZS1kZXRhaWxzIHsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCiNwcm9wZXJ0eS1zaW5nbGUtZGV0YWlscz5kaXYgewogICAgcGFkZGluZy1ib3R0b206IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgojcHJvcGVydHktc2luZ2xlLWRldGFpbHM+ZGl2OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogLTMwcHg7CiAgICB3aWR0aDogY2FsYygxMDAlICsgNjBweCk7CiAgICBoZWlnaHQ6IDFweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7Cn0KCiNwcm9wZXJ0eS1zaW5nbGUtZGV0YWlscz5kaXY6bGFzdC1jaGlsZCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCiNwcm9wZXJ0eS1zaW5nbGUtZGV0YWlscz5kaXY6bGFzdC1jaGlsZDphZnRlciB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoucHJvcGVydHktZGV0YWlsLWFnZW50IHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjbGVhcjogYm90aDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnByb3BlcnR5LWRldGFpbC1hZ2VudCB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIH0KfQoKLnByb3BlcnR5LWRldGFpbC1hZ2VudD5kaXYgewogICAgd2lkdGg6IDUwJTsKICAgIGZsb2F0OiBsZWZ0Owp9CgoucnRsIC5wcm9wZXJ0eS1kZXRhaWwtYWdlbnQ+ZGl2IHsKICAgIGZsb2F0OiByaWdodDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDExOTlweCkgewogICAgLnByb3BlcnR5LWRldGFpbC1hZ2VudD5kaXYgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1kZXRhaWwtYWdlbnQ+ZGl2IHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgIH0KfQoKLnByb3BlcnR5LWRldGFpbC1hZ2VudCAudGl0bGUtaW5mbyB7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi55ZWxwLWxpc3QgLnllbHAtY2F0LXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBtYXJnaW46IDAgMCAxMHB4Owp9CgoueWVscC1saXN0IC55ZWxwLWNhdC10aXRsZSBpbWcgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiA4cHg7Cn0KCi5ydGwgLnllbHAtbGlzdCAueWVscC1jYXQtdGl0bGUgaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi55ZWxwLWxpc3QgLnllbHAtbGlzdC1zdWIgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi55ZWxwLWxpc3QgLnllbHAtbGlzdC1zdWIgbGkgewogICAgbWFyZ2luLWJvdHRvbTogN3B4Owp9CgoueWVscC1saXN0IC55ZWxwLWxpc3Qtc3ViIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLnllbHAtbGlzdCAueWVscC1saXN0LWlubmVyIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Owp9CgoueWVscC1saXN0IC55ZWxwLWxpc3QtaW5uZXIgLmlubmVyLXJpZ2h0IHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7Cn0KCi5ydGwgLnllbHAtbGlzdCAueWVscC1saXN0LWlubmVyIC5pbm5lci1yaWdodCB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLnllbHAtbGlzdCAueWVscC1saXN0LWlubmVyIC5yYXRpbmctY291bnQgewogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBtaW4td2lkdGg6IDkwcHg7Cn0KCi5ydGwgLnllbHAtbGlzdCAueWVscC1saXN0LWlubmVyIC5yYXRpbmctY291bnQgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC55ZWxwLWxpc3QgLnllbHAtbGlzdC1pbm5lciAucmF0aW5nLWNvdW50IHsKICAgICAgICBtYXJnaW4tbGVmdDogMjBweDsKICAgIH0KICAgIC5ydGwgLnllbHAtbGlzdCAueWVscC1saXN0LWlubmVyIC5yYXRpbmctY291bnQgewogICAgICAgIG1hcmdpbi1yaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgIH0KfQoKLnllbHAtbGlzdCAucmF0aW5nPmltZyB7CiAgICBkaXNwbGF5OiBub25lOwp9CgoueWVscC1saXN0IC5hdmVyYWdlLXJhdGluZyB7CiAgICB3aWR0aDogOTdweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGhlaWdodDogMjhweDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgbGV0dGVyLXNwYWNpbmc6IDRweDsKfQoKLnllbHAtbGlzdCAuYXZlcmFnZS1yYXRpbmc6YWZ0ZXIgewogICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJzsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBjb250ZW50OiAiXGYwMDVcZjAwNVxmMDA1XGYwMDVcZjAwNSI7CiAgICBjb2xvcjogI2UxZTFlMTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKfQoKLnJ0bCAueWVscC1saXN0IC5hdmVyYWdlLXJhdGluZzphZnRlciB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCi55ZWxwLWxpc3QgLmF2ZXJhZ2UtcmF0aW5nIFtjbGFzcyo9ImF2ZXJhZ2UtaW5uZXIiXSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgaGVpZ2h0OiAyOHB4OwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHotaW5kZXg6IDE7Cn0KCi5ydGwgLnllbHAtbGlzdCAuYXZlcmFnZS1yYXRpbmcgW2NsYXNzKj0iYXZlcmFnZS1pbm5lciJdIHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKfQoKLnllbHAtbGlzdCAuYXZlcmFnZS1yYXRpbmcgW2NsYXNzKj0iYXZlcmFnZS1pbm5lciJdOmFmdGVyIHsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICBmb250LXdlaWdodDogOTAwOwogICAgY29udGVudDogIlxmMDA1XGYwMDVcZjAwNVxmMDA1XGYwMDUiOwogICAgY29sb3I6ICNiY2M1MmE7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7Cn0KCi55ZWxwLWxpc3QgLmF2ZXJhZ2UtaW5uZXItMSB7CiAgICB3aWR0aDogMTAlOwp9CgoueWVscC1saXN0IC5hdmVyYWdlLWlubmVyLTIgewogICAgd2lkdGg6IDIwJTsKfQoKLnllbHAtbGlzdCAuYXZlcmFnZS1pbm5lci0zIHsKICAgIHdpZHRoOiAzMCU7Cn0KCi55ZWxwLWxpc3QgLmF2ZXJhZ2UtaW5uZXItNCB7CiAgICB3aWR0aDogNDAlOwp9CgoueWVscC1saXN0IC5hdmVyYWdlLWlubmVyLTUgewogICAgd2lkdGg6IDUwJTsKfQoKLnllbHAtbGlzdCAuYXZlcmFnZS1pbm5lci02IHsKICAgIHdpZHRoOiA2MCU7Cn0KCi55ZWxwLWxpc3QgLmF2ZXJhZ2UtaW5uZXItNyB7CiAgICB3aWR0aDogNzAlOwp9CgoueWVscC1saXN0IC5hdmVyYWdlLWlubmVyLTggewogICAgd2lkdGg6IDgwJTsKfQoKLnllbHAtbGlzdCAuYXZlcmFnZS1pbm5lci05IHsKICAgIHdpZHRoOiA5MCU7Cn0KCi55ZWxwLWxpc3QgLmF2ZXJhZ2UtaW5uZXItMTAgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5wcm9wZXJ0eS15ZWxwLXBsYWNlcyAueWVscC1saXN0IHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS15ZWxwLXBsYWNlcyAueWVscC1saXN0IHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgoucHJvcGVydHkteWVscC1wbGFjZXMgLnllbHAtbGlzdDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5wcm9wZXJ0eS15ZWxwLXBsYWNlcyAucHJvcGVydHktc2VjdGlvbi1oZWFkaW5nIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQoKLnByb3BlcnR5LXllbHAtcGxhY2VzIC5wcm9wZXJ0eS1zZWN0aW9uLWhlYWRpbmcgaDMgewogICAgbWFyZ2luOiAwOwogICAgZm9udC1zaXplOiAxOHB4Owp9CgoucHJvcGVydHkteWVscC1wbGFjZXMgLnByb3BlcnR5LXNlY3Rpb24taGVhZGluZyAueWVscC1sb2dvIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgoucnRsIC5wcm9wZXJ0eS15ZWxwLXBsYWNlcyAucHJvcGVydHktc2VjdGlvbi1oZWFkaW5nIC55ZWxwLWxvZ28gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5wcm9wZXJ0eS13YWxrLXNjb3JlIC5wcm9wZXJ0eS1zZWN0aW9uLWhlYWRpbmcgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgoucHJvcGVydHktd2Fsay1zY29yZSAucHJvcGVydHktc2VjdGlvbi1oZWFkaW5nIGgzIHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKLnByb3BlcnR5LXdhbGstc2NvcmUgLnByb3BlcnR5LXNlY3Rpb24taGVhZGluZyAud2Fsa3Njb3JlLWxvZ28gewogICAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5ydGwgLnByb3BlcnR5LXdhbGstc2NvcmUgLnByb3BlcnR5LXNlY3Rpb24taGVhZGluZyAud2Fsa3Njb3JlLWxvZ28gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5wcm9wZXJ0eS13YWxrLXNjb3JlIC5ib3R0b20td2Fsa3Njb3JlIHsKICAgIG1hcmdpbi10b3A6IDIycHg7Cn0KCi53YWxrcy1jb3JlLWxpc3QgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY2xlYXI6IGJvdGg7Cn0KCi53YWxrcy1jb3JlLWxpc3QgbGkgewogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAud2Fsa3MtY29yZS1saXN0IGxpIHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB3aWR0aDogNTAlOwogICAgfQogICAgLnJ0bCAud2Fsa3MtY29yZS1saXN0IGxpIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgLndhbGtzLWNvcmUtbGlzdCBsaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC53YWxrcy1jb3JlLWxpc3QgbGk6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIH0KfQoKLndhbGtzLWNvcmUtbGlzdCAud2Fsa3Njb3JlLXNjb3JlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBsaW5lLWhlaWdodDogNTBweDsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2Fsa3MtY29yZS1saXN0IC53YWxrc2NvcmUtc2NvcmUgewogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICAgIGhlaWdodDogODBweDsKICAgICAgICBsaW5lLWhlaWdodDogODBweDsKICAgIH0KfQoKLndhbGtzLWNvcmUtbGlzdCAubWVkaWEtbGVmdCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgoucnRsIC53YWxrcy1jb3JlLWxpc3QgLm1lZGlhLWxlZnQgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKLndhbGtzLWNvcmUtbGlzdCAubWVkaWEtYm9keSBzdHJvbmcgewogICAgZm9udC1zaXplOiAxNnB4Owp9Cgoud2Fsa3MtY29yZS1saXN0IC5tZWRpYS1ib2R5IGFkZHJlc3MgewogICAgZm9udC1zaXplOiAxNHB4OwogICAgbWFyZ2luOiAwOwp9Cgoud2Fsa3MtY29yZS1saXN0IC5tb3JlLWRldGFpbCB7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmNvbW1lbnQtZm9ybS1yYXRpbmcgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG1hcmdpbjogMCAwIDE1cHggIWltcG9ydGFudDsKfQoKLmNvbW1lbnQtZm9ybS1yYXRpbmcgLnJhdGluZy1pbm5lciB7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBoZWlnaHQ6IDI3cHg7Cn0KCi5jb21tZW50LWZvcm0tcmF0aW5nIC5yYXRpbmctaW5uZXI6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgouY29tbWVudC1mb3JtLXJhdGluZyAucmF0aW5nLWlubmVyIC5hY3RpdmUgewogICAgY29sb3I6ICNiY2M1MmE7Cn0KCi5jb21tZW50LWZvcm0tcmF0aW5nIC5yZXZpZXctbGFiZWwgaW1nIHsKICAgIG1hcmdpbi1yaWdodDogNXB4Owp9CgoucnRsIC5jb21tZW50LWZvcm0tcmF0aW5nIC5yZXZpZXctbGFiZWwgaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5jb21tZW50LWZvcm0tcmF0aW5nIC5yZXZpZXctc3RhcnMgewogICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgIGNvbG9yOiAjZTFlMWUxOwp9CgouY29tbWVudC1mb3JtLXJhdGluZyAuc3VidGl0bGUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIG1pbi13aWR0aDogODVweDsKfQoKLmNvbW1lbnQtZm9ybS1yYXRpbmcgdWwgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBoZWlnaHQ6IDE5cHg7CiAgICBsaW5lLWhlaWdodDogMTlweDsKICAgIGxpc3Qtc3R5bGU6IG91dHNpZGUgbm9uZSBub25lOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIG1hcmdpbi1yaWdodDogMzBweDsKfQoKLnJ0bCAuY29tbWVudC1mb3JtLXJhdGluZyB1bCB7CiAgICBtYXJnaW4tbGVmdDogMzBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmNvbW1lbnQtZm9ybS1yYXRpbmcgdWwgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZmxvYXQ6IG5vbmU7CiAgICBoZWlnaHQ6IDE5cHg7Cn0KCi5hcHVzLW1vcnRnYWdlLWNhbGN1bGF0b3IgLmZvcm0tZ3JvdXAgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYXB1cy1tb3J0Z2FnZS1jYWxjdWxhdG9yIC5mb3JtLWdyb3VwIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgfQp9CgouYXB1cy1tb3J0Z2FnZS1jYWxjdWxhdG9yIC5mb3JtLWdyb3VwIC51bml0IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgcmlnaHQ6IDE1cHg7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB6LWluZGV4OiAxOwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5ydGwgLmFwdXMtbW9ydGdhZ2UtY2FsY3VsYXRvciAuZm9ybS1ncm91cCAudW5pdCB7CiAgICBsZWZ0OiAxNXB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5hcHVzLW1vcnRnYWdlLWNhbGN1bGF0b3IgLmZvcm0tZ3JvdXAgLnVuaXQgewogICAgICAgIHJpZ2h0OiAyNXB4OwogICAgfQogICAgLnJ0bCAuYXB1cy1tb3J0Z2FnZS1jYWxjdWxhdG9yIC5mb3JtLWdyb3VwIC51bml0IHsKICAgICAgICBsZWZ0OiAyNXB4OwogICAgICAgIHJpZ2h0OiBhdXRvOwogICAgfQp9CgouYXB1cy1tb3J0Z2FnZS1jYWxjdWxhdG9yIC5hcHVzX21vcnRnYWdlX3Jlc3VsdHMgewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KCi5hZ2VudC1jb250ZW50LXdyYXBwZXIgLmFnZW50LXRodW1ibmFpbCB7CiAgICB3aWR0aDogNzBweDsKICAgIGhlaWdodDogNzBweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFnZW50LWNvbnRlbnQtd3JhcHBlciAuYWdlbnQtdGh1bWJuYWlsIHsKICAgICAgICB3aWR0aDogOTBweDsKICAgICAgICBoZWlnaHQ6IDkwcHg7CiAgICB9Cn0KCi5hZ2VudC1jb250ZW50LXdyYXBwZXIgLmFnZW50LWNvbnRlbnQgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDcwcHgpOwp9CgoucnRsIC5hZ2VudC1jb250ZW50LXdyYXBwZXIgLmFnZW50LWNvbnRlbnQgewogICAgcGFkZGluZy1yaWdodDogMjBweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmFnZW50LWNvbnRlbnQtd3JhcHBlciAuYWdlbnQtY29udGVudCB7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDkwcHgpOwogICAgfQp9CgouYWdlbnQtY29udGVudC13cmFwcGVyIGgzIHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KCi5hZ2VudC1jb250ZW50LXdyYXBwZXIgLnBob25lLXdyYXBwZXIgewogICAgbWFyZ2luOiAycHggMDsKfQoKLmNvbnRhY3QtZm9ybS1hZ2VudCAuYWdlbnQtY29udGVudC13cmFwcGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KCi51aS1zbGlkZXItaG9yaXpvbnRhbCB7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ViZWJlYjsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA2cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOwp9CgoudWktc2xpZGVyLWhvcml6b250YWw6YmVmb3JlIHsKICAgIHotaW5kZXg6IC0xOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICB3aWR0aDogMjBweDsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7CiAgICBsZWZ0OiAxMDAlOwp9CgoucnRsIC51aS1zbGlkZXItaG9yaXpvbnRhbDpiZWZvcmUgewogICAgcmlnaHQ6IDEwMCU7CiAgICBsZWZ0OiBhdXRvOwp9CgoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwogICAgaGVpZ2h0OiA2cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwp9CgoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1oYW5kbGUgewogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDIwcHg7CiAgICBoZWlnaHQ6IDE0cHg7CiAgICBiYWNrZ3JvdW5kOiAjMjQzMjRhOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogMTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRvcDogNTAlOwogICAgYm9yZGVyLXdpZHRoOiAwIDNweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6ICNmZmY7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7Cn0KCi51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLWhhbmRsZSsudWktc2xpZGVyLWhhbmRsZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTsKfQoKLmZpbHRlci1wcm9wZXJ0eS1mb3JtIGlucHV0W3R5cGU9InJhZGlvIl0sCi5maWx0ZXItcHJvcGVydHktZm9ybSBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgIG1hcmdpbi1yaWdodDogNXB4Owp9CgoucnRsIC5maWx0ZXItcHJvcGVydHktZm9ybSBpbnB1dFt0eXBlPSJyYWRpbyJdLAoucnRsIC5maWx0ZXItcHJvcGVydHktZm9ybSBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cD5sYWJlbC5oZWFkaW5nLWxhYmVsIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZnJvbS10ZXh0LAouZmlsdGVyLXByb3BlcnR5LWZvcm0gLnRvLXRleHQgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIH0KfQoKLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5zZWxlY3Qtd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgei1pbmRleDogMTsKfQoKLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5zZWxlY3Qtd3JhcHBlciBzZWxlY3QgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBhcHBlYXJhbmNlOiBub25lOwp9CgouZmlsdGVyLXByb3BlcnR5LWZvcm0gLnNlbGVjdC13cmFwcGVyOmJlZm9yZSB7CiAgICB6LWluZGV4OiAtMTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgY29udGVudDogIlxmMTNmIjsKICAgIGZvbnQtZmFtaWx5OiAiRmxhdGljb24iOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxcHg7CiAgICByaWdodDogMXB4OwogICAgd2lkdGg6IDI1cHg7CiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDJweCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgbGluZS1oZWlnaHQ6IDQ4cHg7CiAgICBmb250LXNpemU6IDhweDsKfQoKLnJ0bCAuZmlsdGVyLXByb3BlcnR5LWZvcm0gLnNlbGVjdC13cmFwcGVyOmJlZm9yZSB7CiAgICBsZWZ0OiAxcHg7CiAgICByaWdodDogYXV0bzsKfQoKLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5mcm9tLXRvLXdyYXBwZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7Cn0KCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZnJvbS10by13cmFwcGVyIC5pbm5lciB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKfQoKLnJ0bCAuZmlsdGVyLXByb3BlcnR5LWZvcm0gLmZyb20tdG8td3JhcHBlciAuaW5uZXIgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cC1sb3RfYXJlYSAuaW5uZXIsCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cC1ob21lX2FyZWEgLmlubmVyIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjbGVhcjogYm90aDsKfQoKLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5mb3JtLWdyb3VwLWxvdF9hcmVhIC5mb3JtLWNvbnRyb2wsCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cC1ob21lX2FyZWEgLmZvcm0tY29udHJvbCB7CiAgICB3aWR0aDogY2FsYyg1MCUgLSAxNXB4KTsKICAgIGZsb2F0OiBsZWZ0Owp9CgoucnRsIC5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cC1sb3RfYXJlYSAuZm9ybS1jb250cm9sLAoucnRsIC5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cC1ob21lX2FyZWEgLmZvcm0tY29udHJvbCB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cC1sb3RfYXJlYSAuZm9ybS1jb250cm9sKy5mb3JtLWNvbnRyb2wsCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cC1ob21lX2FyZWEgLmZvcm0tY29udHJvbCsuZm9ybS1jb250cm9sIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLnJ0bCAuZmlsdGVyLXByb3BlcnR5LWZvcm0gLmZvcm0tZ3JvdXAtbG90X2FyZWEgLmZvcm0tY29udHJvbCsuZm9ybS1jb250cm9sLAoucnRsIC5maWx0ZXItcHJvcGVydHktZm9ybSAuZm9ybS1ncm91cC1ob21lX2FyZWEgLmZvcm0tY29udHJvbCsuZm9ybS1jb250cm9sIHsKICAgIGZsb2F0OiBsZWZ0Owp9CgouZmlsdGVyLXByb3BlcnR5LWZvcm0gLmJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1YTVmOwogICAgYm9yZGVyLWNvbG9yOiAjZmY1YTVmOwogICAgY29sb3I6ICNmZmY7CiAgICB3aWR0aDogMTAwJTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIH0KfQoKLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5idXR0b246aG92ZXIsCi5maWx0ZXItcHJvcGVydHktZm9ybSAuYnV0dG9uOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDE0NjsKICAgIGJvcmRlci1jb2xvcjogI2ZmNDE0NjsKfQoKLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5maWx0ZXItYWR2YW5jZS1maWVsZHMgewogICAgZGlzcGxheTogbm9uZTsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5maWx0ZXItcHJvcGVydHktZm9ybSAubW9yZS1hZHZhbmNlZCB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgouZmlsdGVyLXByb3BlcnR5LWZvcm0gLmZpbHRlci10b2dnbGUtYWR2IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KCi5maWx0ZXItcHJvcGVydHktZm9ybSAuZmlsdGVyLXRvZ2dsZS1hZHYgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLnJ0bCAuZmlsdGVyLXByb3BlcnR5LWZvcm0gLmZpbHRlci10b2dnbGUtYWR2IGkgewogICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnNpZGViYXIgLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5jaXJjbGUtY2hlY2sgbGkgewogICAgd2lkdGg6IDUwJTsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogM3B4Owp9CgoucnRsIC5zaWRlYmFyIC5maWx0ZXItcHJvcGVydHktZm9ybSAuY2lyY2xlLWNoZWNrIGxpIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLnJ0bCAuc2lkZWJhciAuZmlsdGVyLXByb3BlcnR5LWZvcm0gLmNpcmNsZS1jaGVjayBsaSB7CiAgICBwYWRkaW5nLWxlZnQ6IDNweDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCi5zaWRlYmFyIC5maWx0ZXItcHJvcGVydHktZm9ybSAuY2lyY2xlLWNoZWNrIGxpOm50aC1jaGlsZCgybisxKSB7CiAgICBjbGVhcjogYm90aDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5zaWRlYmFyIC5maWx0ZXItcHJvcGVydHktZm9ybSAuY2lyY2xlLWNoZWNrIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLnNpZGViYXIgLmZpbHRlci1wcm9wZXJ0eS1mb3JtIC5maWx0ZXItYWR2YW5jZS1maWVsZHMgLmZvcm0tZ3JvdXA6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgoucHJvcGVydGllcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAzOwp9CgoucHJvcGVydGllcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLmhvcml6b250YWwgLmFkdmFuY2Utc2VhcmNoLXdyYXBwZXIgewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFkZGluZy1yaWdodDogMDsKfQoKLnByb3BlcnRpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXI+LndpZGdldDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5oaWdobGlnaHQgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi5sZWFmbGV0LWdlb2NvZGUtY29udGFpbmVyIGkgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tcmlnaHQ6IDNweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLnJ0bCAubGVhZmxldC1nZW9jb2RlLWNvbnRhaW5lciBpIHsKICAgIG1hcmdpbi1sZWZ0OiAzcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5hY3Rpb24tbG9jYXRpb24gLmxlYWZsZXQtZ2VvY29kZS1jb250YWluZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMDAlOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgei1pbmRleDogNDsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLmFjdGlvbi1sb2NhdGlvbiAubGVhZmxldC1nZW9jb2RlLWNvbnRhaW5lciB1bCB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBtYXJnaW46IDA7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiAwIDAgM3B4IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCAwIDNweCAzcHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAgMCAzcHggM3B4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDAgMCAzcHggM3B4OwogICAgLW8tYm9yZGVyLXJhZGl1czogMCAwIDNweCAzcHg7CiAgICBib3JkZXItY29sb3I6ICNlYmViZWI7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXdpZHRoOiAwIDFweCAxcHg7Cn0KCi5hY3Rpb24tbG9jYXRpb24gLmxlYWZsZXQtZ2VvY29kZS1jb250YWluZXIgdWwgbGkgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgbWFyZ2luLWJvdHRvbTogN3B4OwogICAgcGFkZGluZy1ib3R0b206IDdweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlZWVlOwp9CgouYWN0aW9uLWxvY2F0aW9uIC5sZWFmbGV0LWdlb2NvZGUtY29udGFpbmVyIHVsIGxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBib3JkZXI6IDA7Cn0KCi5hY3Rpb24tbG9jYXRpb24gLmxlYWZsZXQtZ2VvY29kZS1jb250YWluZXIgLmhpZ2hsaWdodCB7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZm9udC1zaXplOiAxNHB4Owp9CgouYWN0aW9uLWxvY2F0aW9uLmxvYWRpbmcgLmZpbmQtbWUgewogICAgYW5pbWF0aW9uOiByb3RhdGVfaWNvbiAxMDAwbXMgbGluZWFyIDBzIG5vcm1hbCBub25lIGluZmluaXRlIHJ1bm5pbmc7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRlX2ljb24gMTAwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwp9CgouYWN0aW9uLWxvY2F0aW9uLmxvYWRpbmcgLmZpbmQtbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExMCIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudDsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSIgIWltcG9ydGFudDsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSAudGl0bGUgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWFyZ2luOiAwIDAgMjBweDsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSAubmF2LXRhYnMgewogICAgYm9yZGVyOiAwOwogICAgbWFyZ2luOiAwOwp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtIC5uYXYtdGFicz5saSB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gLm5hdi10YWJzPmxpPmEgewogICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBwYWRkaW5nOiAxMHB4IDM1cHg7CiAgICBjb2xvcjogIzFiMjAzMjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSAubmF2LXRhYnM+bGk+YTpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiA1MCU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXdpZHRoOiA5cHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtIC5uYXYtdGFicz5saS5hY3RpdmU+YSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gLm5hdi10YWJzPmxpLmFjdGl2ZT5hOmJlZm9yZSB7CiAgICBib3JkZXItY29sb3I6ICNmZjVhNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uaG9yaXpvbnRhbCAubmF2LXRhYnMgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIGJvcmRlcjogMDsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5ob3Jpem9udGFsIC5uYXYtdGFicz5saSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIG1hcmdpbi1yaWdodDogMTJweDsKfQoKLnJ0bCAud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLmhvcml6b250YWwgLm5hdi10YWJzPmxpIHsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLmhvcml6b250YWwgLm5hdi10YWJzPmxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uaG9yaXpvbnRhbCAubmF2LXRhYnM+bGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5ob3Jpem9udGFsIC5tYWluLWlubmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLmhvcml6b250YWwgLmNvbnRlbnQtbWFpbi1pbm5lciB7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgbWFyZ2luOiAxMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uaG9yaXpvbnRhbCAuZm9ybS1ncm91cCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIH0KfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5ob3Jpem9udGFsIC5hZHZhbmNlLXNlYXJjaC13cmFwcGVyIHsKICAgIHBhZGRpbmc6IDEwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5ob3Jpem9udGFsIC5hZHZhbmNlLXNlYXJjaC13cmFwcGVyIHsKICAgICAgICBwYWRkaW5nLXRvcDogMzBweDsKICAgIH0KfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5ob3Jpem9udGFsIC5mb3JtLWdyb3VwLWxvY2F0aW9uIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIC8qIFNhZmFyaSAqLwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLyogU2FmYXJpIDcuMCsgKi8KICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgbWFyZ2luLWxlZnQ6IC0xMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAtMTBweDsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5ob3Jpem9udGFsIC5mb3JtLWdyb3VwLWxvY2F0aW9uPmRpdiB7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogICAgd2lkdGg6IDEwMCU7Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0udmVydGljYWwgLm1haW4taW5uZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0udmVydGljYWwgLmNvbnRlbnQtbWFpbi1pbm5lciB7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogICAgbWFyZ2luOiAxMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnZlcnRpY2FsIC5jb250ZW50LW1haW4taW5uZXIgewogICAgICAgIHBhZGRpbmc6IDMwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0udmVydGljYWwgLmZvcm0tZ3JvdXAgewogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0udmVydGljYWwgLmZvcm0tZ3JvdXAtYW1lbml0eSAuY2lyY2xlLWNoZWNrIGxpIHsKICAgICAgICB3aWR0aDogNTAlOwogICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICB9Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0udmVydGljYWwgLmZvcm0tZ3JvdXAtaW5uZXJ+ZGl2IHsKICAgIG1hcmdpbi10b3A6IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0udmVydGljYWwgLmZvcm0tZ3JvdXAtaW5uZXJ+ZGl2IHsKICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgfQp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnZlcnRpY2FsIC5hZHZhbmNlLXNlYXJjaC13cmFwcGVyLWZpZWxkcyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMDsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTEgLmNvbnRlbnQtbWFpbi1pbm5lciwKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTEgLm1haW4taW5uZXIsCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uc3R5bGUxIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSwKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTEgLmJ0bi1zdWJtaXQsCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uc3R5bGUxIC5mb3JtLWNvbnRyb2wsCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uc3R5bGUxIC5uYXYtdGFicz5saT5hIHsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHggIWltcG9ydGFudDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTBweCAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTBweCAhaW1wb3J0YW50OwogICAgLW8tYm9yZGVyLXJhZGl1czogNTBweCAhaW1wb3J0YW50Owp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnN0eWxlMiAuYnRuLXN1Ym1pdCB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDlweCAyMHB4Owp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnN0eWxlMiAuY29udGVudC1tYWluLWlubmVyIHsKICAgIHBhZGRpbmc6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTIgLmNvbnRlbnQtbWFpbi1pbm5lciB7CiAgICAgICAgbWFyZ2luOiAyMHB4OwogICAgfQp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnN0eWxlMyAuY29udGVudC1tYWluLWlubmVyIHsKICAgIG1hcmdpbjogMDsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTMgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlLAoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnN0eWxlMyAuZm9ybS1jb250cm9sIHsKICAgIGJvcmRlci1jb2xvcjogI2ZmZjsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTMgLmJ0bi1zdWJtaXQgewogICAgd2lkdGg6IDEwMCU7Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uc3R5bGU0IC5jb250ZW50LW1haW4taW5uZXIgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTBweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZjdmN2Y3OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTQgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlLAoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnN0eWxlNCAuZm9ybS1jb250cm9sIHsKICAgIGJvcmRlcjogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnN0eWxlNCAuZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIC8qIENocm9tZS9PcGVyYS9TYWZhcmkgKi8KICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTQgLmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAvKiBGaXJlZm94IDE5KyAqLwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9Cgoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnN0eWxlNCAuZm9ybS1jb250cm9sOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAvKiBJRSAxMCsgKi8KICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5zdHlsZTQgLmZvcm0tY29udHJvbDotbW96LXBsYWNlaG9sZGVyIHsKICAgIC8qIEZpcmVmb3ggMTgtICovCiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uc3R5bGU0IC5idG4tc3VibWl0IHsKICAgIHBhZGRpbmc6IDAgMjVweDsKICAgIGZvbnQtc2l6ZTogMjFweDsKICAgIGhlaWdodDogNTBweDsKICAgIGxpbmUtaGVpZ2h0OiA1MHB4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KCi53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uc3R5bGU0IC5idG4tc3VibWl0OmhvdmVyLAoud2lkZ2V0LXByb3BlcnR5LXNlYXJjaC1mb3JtLnN0eWxlNCAuYnRuLXN1Ym1pdDpmb2N1cyB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuaGVhZGluZy1sYWJlbCB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgY29sb3I6ICMwMDZjNzA7CiAgICBmb250LXdlaWdodDogNzAwOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5mcm9tLXRvLXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5zdWZmaXggewogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5idG4tc3VibWl0IHsKICAgIGJvcmRlci13aWR0aDogMnB4OwogICAgcGFkZGluZzogOXB4IDQwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIGZvcm0uZm9ybS1zZWFyY2ggLmJ0bi1zdWJtaXQgewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIH0KfQoKZm9ybS5mb3JtLXNlYXJjaCAuZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIC8qIEVkZ2UgKi8KICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuZm9ybS1jb250cm9sOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAvKiBJbnRlcm5ldCBFeHBsb3JlciAxMC0xMSAqLwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuZm9ybS1ncm91cC1pbm5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCmZvcm0uZm9ybS1zZWFyY2ggLmZvcm0tZ3JvdXAtaW5uZXI+aSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHJpZ2h0OiAxMnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgei1pbmRleDogMTsKICAgIG9wYWNpdHk6IDAuNzsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT03MCk7Cn0KCi5ydGwgZm9ybS5mb3JtLXNlYXJjaCAuZm9ybS1ncm91cC1pbm5lcj5pIHsKICAgIGxlZnQ6IDEycHg7CiAgICByaWdodDogYXV0bzsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuYWN0aW9uLWxvY2F0aW9uIC5jbGVhci1sb2NhdGlvbiB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAxM3B4OwogICAgd2lkdGg6IDE4cHg7CiAgICBoZWlnaHQ6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMThweDsKICAgIG1hcmdpbi10b3A6IC05cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQ0MzQzOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDlweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogMnB4Owp9CgoucnRsIGZvcm0uZm9ybS1zZWFyY2ggLmFjdGlvbi1sb2NhdGlvbiAuY2xlYXItbG9jYXRpb24gewogICAgbGVmdDogMTNweDsKICAgIHJpZ2h0OiBhdXRvOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWUgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgcmlnaHQ6IDEycHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBvcGFjaXR5OiAwLjY7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjApOwogICAgd2lkdGg6IDIwcHg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICBsaW5lLWhlaWdodDogMjBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnJ0bCBmb3JtLmZvcm0tc2VhcmNoIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWUgewogICAgbGVmdDogMTJweDsKICAgIHJpZ2h0OiBhdXRvOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWU6aG92ZXIsCmZvcm0uZm9ybS1zZWFyY2ggLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZTpmb2N1cyB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCmZvcm0uZm9ybS1zZWFyY2ggLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkyIjsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWUubG9hZGluZyB7CiAgICBhbmltYXRpb246IHJvdGF0ZSA3MDBtcyBsaW5lYXIgMHMgbm9ybWFsIG5vbmUgaW5maW5pdGUgcnVubmluZzsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiByb3RhdGUgNzAwbXMgbGluZWFyIDBzIG5vcm1hbCBub25lIGluZmluaXRlIHJ1bm5pbmc7Cn0KCmZvcm0uZm9ybS1zZWFyY2ggLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZS5sb2FkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTAiOwogICAgZm9udC13ZWlnaHQ6IDkwMDsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuYWR2YW5jZS1zZWFyY2gtYnRuIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgoucnRsIGZvcm0uZm9ybS1zZWFyY2ggLmFkdmFuY2Utc2VhcmNoLWJ0biB7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgZm9ybS5mb3JtLXNlYXJjaCAuYWR2YW5jZS1zZWFyY2gtYnRuIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDI1cHg7CiAgICB9CiAgICAucnRsIGZvcm0uZm9ybS1zZWFyY2ggLmFkdmFuY2Utc2VhcmNoLWJ0biB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDI1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5hZHZhbmNlLXNlYXJjaC1idG4gaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKfQoKLnJ0bCBmb3JtLmZvcm0tc2VhcmNoIC5hZHZhbmNlLXNlYXJjaC1idG4gaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuc2VhcmNoLWZvcm0taW5uZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5zZWFyY2gtZm9ybS1pbm5lciAuYWR2YW5jZS1zZWFyY2gtd3JhcHBlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiAzOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC5hZHZhbmNlLXNlYXJjaC13cmFwcGVyLWZpZWxkcyB7CiAgICBkaXNwbGF5OiBub25lOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgIGJveC1zaGFkb3c6IDAgMCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuYWR2YW5jZS1zZWFyY2gtd3JhcHBlci1maWVsZHMgLndyYXBwZXItYW1lbml0eSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKZm9ybS5mb3JtLXNlYXJjaCAuYWR2YW5jZS1zZWFyY2gtd3JhcHBlci1maWVsZHMgLndyYXBwZXItYW1lbml0eTpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJlYmViOwogICAgd2lkdGg6IGNhbGMoMTAwJSArIDIwcHgpOwogICAgaGVpZ2h0OiAxcHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAtMTBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgZm9ybS5mb3JtLXNlYXJjaCAuZm9ybS1ncm91cC1hbWVuaXR5IC5jaXJjbGUtY2hlY2sgbGkgewogICAgICAgIHdpZHRoOiAyMCU7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgIH0KfQoKZm9ybS5mb3JtLXNlYXJjaCAudHQtbWVudSB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyLXJhZGl1czogMCAwIDRweCA0cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICBib3gtc2hhZG93OiAwIDVweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCmZvcm0uZm9ybS1zZWFyY2ggLnR3aXR0ZXItdHlwZWFoZWFkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCmZvcm0uZm9ybS1zZWFyY2ggLnR3aXR0ZXItdHlwZWFoZWFkOmJlZm9yZSB7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIHotaW5kZXg6IDI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHJpZ2h0OiAxMnB4OwogICAgd2lkdGg6IDIycHg7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlcy9sb2FkaW5nLmdpZiIpIG5vLXJlcGVhdCBzY3JvbGwgY2VudGVyIGNlbnRlci8xOHB4IGF1dG87Cn0KCi5ydGwgZm9ybS5mb3JtLXNlYXJjaCAudHdpdHRlci10eXBlYWhlYWQ6YmVmb3JlIHsKICAgIGxlZnQ6IDEycHg7CiAgICByaWdodDogYXV0bzsKfQoKZm9ybS5mb3JtLXNlYXJjaCAudHdpdHRlci10eXBlYWhlYWQubG9hZGluZzpiZWZvcmUgewogICAgb3BhY2l0eTogMC43OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTcwKTsKfQoKZm9ybS5mb3JtLXNlYXJjaCAudHQtZGF0YXNldC1zZWFyY2g+LnR0LXNlbGVjdGFibGU6Zmlyc3QtY2hpbGQgewogICAgZGlzcGxheTogbm9uZTsKfQoKZm9ybS5mb3JtLXNlYXJjaCAudHQtZGF0YXNldC1zZWFyY2ggLnR0LXNlbGVjdGFibGUgewogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIHBhZGRpbmc6IDEycHg7CiAgICBkaXNwbGF5OiB0YWJsZTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKZm9ybS5mb3JtLXNlYXJjaCAudHQtZGF0YXNldC1zZWFyY2ggLnR0LXNlbGVjdGFibGU6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tOiAwOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC50dC1kYXRhc2V0LXNlYXJjaCAudHQtc2VsZWN0YWJsZSBpbWcgewogICAgbWF4LXdpZHRoOiA3MHB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHg7Cn0KCmZvcm0uZm9ybS1zZWFyY2ggLnR0LWRhdGFzZXQtc2VhcmNoIC50dC1zZWxlY3RhYmxlIGg0IHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgbWFyZ2luOiAwIDAgNXB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxOwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCmZvcm0uZm9ybS1zZWFyY2ggLnR0LWRhdGFzZXQtc2VhcmNoIC50dC1zZWxlY3RhYmxlIC5wcm9wZXJ0eS1wcmljZSB7CiAgICBvcGFjaXR5OiAwLjg7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9ODApOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC50dC1kYXRhc2V0LXNlYXJjaCAudHQtc2VsZWN0YWJsZSAucHJvcGVydHktcHJpY2UsCmZvcm0uZm9ybS1zZWFyY2ggLnR0LWRhdGFzZXQtc2VhcmNoIC50dC1zZWxlY3RhYmxlIC5wcm9wZXJ0eS1wcmljZSAucHJlZml4LXRleHQsCmZvcm0uZm9ybS1zZWFyY2ggLnR0LWRhdGFzZXQtc2VhcmNoIC50dC1zZWxlY3RhYmxlIC5wcm9wZXJ0eS1wcmljZSAuc3VmZml4LXRleHQgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC50dC1kYXRhc2V0LXNlYXJjaCAudHQtc2VsZWN0YWJsZSAucHJvcGVydHktcHJpY2UgaSB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgpmb3JtLmZvcm0tc2VhcmNoIC50dC1kYXRhc2V0LXNlYXJjaCAudHQtc2VsZWN0YWJsZSAucHJvcGVydHktbG9jYXRpb24gewogICAgb3BhY2l0eTogMC44OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxOwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCmZvcm0uZm9ybS1zZWFyY2ggLnR0LWRhdGFzZXQtc2VhcmNoIC50dC1zZWxlY3RhYmxlIC5wcm9wZXJ0eS1sb2NhdGlvbiBpIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKZm9ybS5mb3JtLXNlYXJjaCAudHQtZGF0YXNldC1zZWFyY2ggLnR0LXNlbGVjdGFibGU6aG92ZXIgaDQgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCi53aWRnZXQtcHJvcGVydGllcy1tYXBzIC5wcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIHsKICAgIG1pbi1oZWlnaHQ6IDI1MHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAud2lkZ2V0LXByb3BlcnRpZXMtdGFicyAuYm90dG9tLXJlbW9yZSB7CiAgICAgICAgcGFkZGluZy10b3A6IDMwcHg7CiAgICB9Cn0KCi53aWRnZXQtcHJvcGVydGllcy10YWJzIC5uYXYtdGFicyB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwp9Cgoud2lkZ2V0LXByb3BlcnRpZXMtdGFicyAubmF2LXRhYnM+bGkgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW46IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2QyZDJkMjsKfQoKLnJ0bCAud2lkZ2V0LXByb3BlcnRpZXMtdGFicyAubmF2LXRhYnM+bGkgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgoucnRsIC53aWRnZXQtcHJvcGVydGllcy10YWJzIC5uYXYtdGFicz5saSB7CiAgICBtYXJnaW4tbGVmdDogMjBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLnJ0bCAud2lkZ2V0LXByb3BlcnRpZXMtdGFicyAubmF2LXRhYnM+bGkgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKLnJ0bCAud2lkZ2V0LXByb3BlcnRpZXMtdGFicyAubmF2LXRhYnM+bGkgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZDJkMmQyOwogICAgYm9yZGVyLXJpZ2h0OiBpbmhlcml0Owp9Cgoud2lkZ2V0LXByb3BlcnRpZXMtdGFicyAubmF2LXRhYnM+bGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgYm9yZGVyLXJpZ2h0OiAwOwp9CgoucnRsIC53aWRnZXQtcHJvcGVydGllcy10YWJzIC5uYXYtdGFicz5saTpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC53aWRnZXQtcHJvcGVydGllcy10YWJzIC5uYXYtdGFicz5saTpsYXN0LWNoaWxkIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCi5ydGwgLndpZGdldC1wcm9wZXJ0aWVzLXRhYnMgLm5hdi10YWJzPmxpOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLWxlZnQ6IDA7CiAgICBib3JkZXItcmlnaHQ6IGluaGVyaXQ7Cn0KCi53aWRnZXQtcHJvcGVydGllcy10YWJzIC5uYXYtdGFicz5saT5hIHsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgcGFkZGluZzogMDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi53aWRnZXQtcHJvcGVydGllcy10YWJzIC5uYXYtdGFicz5saS5hY3RpdmU+YSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLndpZGdldC1wcm9wZXJ0aWVzLXRhYnMgLndpZGdldC10aXRsZSB7CiAgICBtYXJnaW46IDA7CiAgICBmb250LXNpemU6IDI1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtcHJvcGVydGllcy10YWJzIC53aWRnZXQtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogNDBweDsKICAgIH0KfQoKLndpZGdldC1wcm9wZXJ0aWVzLXRhYnMgLnRvcC1pbmZvIHsKICAgIG1hcmdpbi1ib3R0b206IDI1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53aWRnZXQtcHJvcGVydGllcy10YWJzIC50b3AtaW5mbyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzVweDsKICAgIH0KfQoKLnJlc3VsdHMtZmlsdGVyLXdyYXBwZXIgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLnJlc3VsdHMtZmlsdGVyLXdyYXBwZXIgLnRpdGxlIHsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDAgMCAyMHB4Owp9CgoucmVzdWx0cy1maWx0ZXItd3JhcHBlciAuaW5uZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwYWRkaW5nOiAxMHB4IDEwcHggMDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9CgoucnRsIC5yZXN1bHRzLWZpbHRlci13cmFwcGVyIC5pbm5lciB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgoucmVzdWx0cy1maWx0ZXItd3JhcHBlciAuaW5uZXI+YSB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIGNvbG9yOiAjZTQ0MzQzOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5ydGwgLnJlc3VsdHMtZmlsdGVyLXdyYXBwZXIgLmlubmVyPmEgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5yZXN1bHRzLWZpbHRlci13cmFwcGVyIC5pbm5lcj5hOmhvdmVyLAoucmVzdWx0cy1maWx0ZXItd3JhcHBlciAuaW5uZXI+YTpmb2N1cyB7CiAgICBjb2xvcjogI2UxMmQyZDsKfQoKLnJlc3VsdHMtZmlsdGVyLXdyYXBwZXIgLnJlc3VsdHMtZmlsdGVyIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjbGVhcjogYm90aDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwp9CgoucmVzdWx0cy1maWx0ZXItd3JhcHBlciAucmVzdWx0cy1maWx0ZXIgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgoucnRsIC5yZXN1bHRzLWZpbHRlci13cmFwcGVyIC5yZXN1bHRzLWZpbHRlciBsaSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5ydGwgLnJlc3VsdHMtZmlsdGVyLXdyYXBwZXIgLnJlc3VsdHMtZmlsdGVyIGxpIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucmVzdWx0cy1maWx0ZXItd3JhcHBlciAucmVzdWx0cy1maWx0ZXIgbGkgYSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBwYWRkaW5nOiAwcHggN3B4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAycHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5yZXN1bHRzLWZpbHRlci13cmFwcGVyIC5yZXN1bHRzLWZpbHRlciBsaSBhIC5jbG9zZS12YWx1ZSB7CiAgICBjb2xvcjogI2U0NDM0MzsKICAgIG1hcmdpbi1yaWdodDogNHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7Cn0KCi5ydGwgLnJlc3VsdHMtZmlsdGVyLXdyYXBwZXIgLnJlc3VsdHMtZmlsdGVyIGxpIGEgLmNsb3NlLXZhbHVlIHsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5yZXN1bHRzLWZpbHRlci13cmFwcGVyIC5yZXN1bHRzLWZpbHRlciBsaSBhOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNDQzNDM7CiAgICBjb2xvcjogI2ZmZjsKfQoKLnJlc3VsdHMtZmlsdGVyLXdyYXBwZXIgLnJlc3VsdHMtZmlsdGVyIGxpIGE6aG92ZXIgLmNsb3NlLXZhbHVlIHsKICAgIGNvbG9yOiAjZmZmOwp9CgoucC1maXgtcGFnaW5hdGlvbiB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICBib3R0b206IDA7CiAgICB6LWluZGV4OiA2OwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwp9CgoubGF5b3V0LXR5cGUtaGFsZi1tYXAgI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMgewogICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7CiAgICBsZWZ0OiAwOwp9CgoucnRsIC5sYXlvdXQtdHlwZS1oYWxmLW1hcCAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLmxheW91dC10eXBlLWhhbGYtbWFwICNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIHsKICAgICAgICB3aWR0aDogNDAlOwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcCAuZmlyc3RfY2xhc3MgewogICAgICAgIHdpZHRoOiA0MCU7CiAgICB9Cn0KCi5sYXlvdXQtdHlwZS1oYWxmLW1hcCAuc2Vjb25kX2NsYXNzIHsKICAgIHBhZGRpbmctYm90dG9tOiAyMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcCAuc2Vjb25kX2NsYXNzIHsKICAgICAgICB3aWR0aDogNjAlOwogICAgICAgIHBhZGRpbmctbGVmdDogMzBweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4OwogICAgICAgIHBhZGRpbmctYm90dG9tOiAzMHB4OwogICAgfQp9CgoubGF5b3V0LXR5cGUtaGFsZi1tYXAgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSB7CiAgICBtYXJnaW46IDE1cHggMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmxheW91dC10eXBlLWhhbGYtbWFwIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gewogICAgICAgIG1hcmdpbjogMzBweCAwOwogICAgfQp9CgoubGF5b3V0LXR5cGUtaGFsZi1tYXAgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSAubWFpbi1pbm5lciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmxheW91dC10eXBlLWhhbGYtbWFwIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gLmNvbnRlbnQtbWFpbi1pbm5lciB7CiAgICBtYXJnaW46IDA7Cn0KCi5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MiAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsKICAgIHJpZ2h0OiAwOwp9CgoucnRsIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MiAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IGF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYyICNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIHsKICAgICAgICB3aWR0aDogNDEuNjY2NjclOwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjIgI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMgewogICAgICAgIHdpZHRoOiA1OC4zMzMzMyU7CiAgICB9Cn0KCi5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MiAuc2Vjb25kX2NsYXNzIHsKICAgIHBhZGRpbmc6IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MiAuc2Vjb25kX2NsYXNzIHsKICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgfQp9CgoubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjIgLmJ0bi1zaG93LWZpbHRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiA5OTk7CiAgICB0b3A6IDIwcHg7CiAgICBsZWZ0OiAyMHB4Owp9CgoucnRsIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MiAuYnRuLXNob3ctZmlsdGVyIHsKICAgIHJpZ2h0OiAyMHB4OwogICAgbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYyIC5idG4tc2hvdy1maWx0ZXIgewogICAgICAgIHRvcDogMzBweDsKICAgICAgICBsZWZ0OiAzMHB4OwogICAgfQogICAgLnJ0bCAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjIgLmJ0bi1zaG93LWZpbHRlciB7CiAgICAgICAgcmlnaHQ6IDMwcHg7CiAgICAgICAgbGVmdDogYXV0bzsKICAgIH0KfQoKLmxheW91dC10eXBlLWhhbGYtbWFwLXYzICNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIHsKICAgIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50OwogICAgcmlnaHQ6IDA7Cn0KCi5ydGwgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzICNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIHsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMgewogICAgICAgIHdpZHRoOiA0MS42NjY2NyU7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICAgICAgd2lkdGg6IDMzLjMzMzMzJTsKICAgIH0KfQoKLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5idG4tc2hvdy1maWx0ZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogOTk5OwogICAgdG9wOiAyMHB4OwogICAgbGVmdDogMjBweDsKfQoKLnJ0bCAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLmJ0bi1zaG93LWZpbHRlciB7CiAgICByaWdodDogMjBweDsKICAgIGxlZnQ6IGF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAuYnRuLXNob3ctZmlsdGVyIHsKICAgICAgICB0b3A6IDMwcHg7CiAgICAgICAgbGVmdDogMzBweDsKICAgIH0KICAgIC5ydGwgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5idG4tc2hvdy1maWx0ZXIgewogICAgICAgIHJpZ2h0OiAzMHB4OwogICAgICAgIGxlZnQ6IGF1dG87CiAgICB9Cn0KCi5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAuc2Vjb25kX2NsYXNzIHsKICAgIHBhZGRpbmc6IDA7Cn0KCi5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAuc2Vjb25kX2NsYXNzIC5pbm5lci1sZWZ0IHsKICAgIHBhZGRpbmc6IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAuc2Vjb25kX2NsYXNzIC5pbm5lci1sZWZ0IHsKICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLnNlY29uZF9jbGFzcyB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAzNzVweDsKICAgIH0KICAgIC5ydGwgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5zZWNvbmRfY2xhc3MgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDM3NXB4OwogICAgICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5wcm9wZXJ0aWVzLWZpbHRlci1zaWRlYmFyLXdyYXBwZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTYwMHB4KSB7CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDI1MHB4OwogICAgfQogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5zZWNvbmRfY2xhc3MgewogICAgICAgIHBhZGRpbmctbGVmdDogMjUwcHg7CiAgICB9CiAgICAucnRsIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAuc2Vjb25kX2NsYXNzIHsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNTBweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7CiAgICB9CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS52ZXJ0aWNhbCAuZm9ybS1ncm91cC1hbWVuaXR5IC5jaXJjbGUtY2hlY2sgbGkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5wcm9wZXJ0aWVzLW9yZGVyaW5nLXdyYXBwZXIsCiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLmFnZW5jaWVzLW9yZGVyaW5nLXdyYXBwZXIsCiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLmFnZW50cy1vcmRlcmluZy13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyOmFmdGVyLAogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5hZ2VuY2llcy1vcmRlcmluZy13cmFwcGVyOmFmdGVyLAogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5hZ2VudHMtb3JkZXJpbmctd3JhcHBlcjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgZGlzcGxheTogdGFibGU7CiAgICAgICAgY2xlYXI6IGJvdGg7CiAgICB9CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLnByb3BlcnRpZXMtb3JkZXJpbmctd3JhcHBlcj5kaXYsCiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLmFnZW5jaWVzLW9yZGVyaW5nLXdyYXBwZXI+ZGl2LAogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5hZ2VudHMtb3JkZXJpbmctd3JhcHBlcj5kaXYgewogICAgICAgIHdpZHRoOiA1MCU7CiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICB9CiAgICAucnRsIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyPmRpdiwKICAgIC5ydGwgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5hZ2VuY2llcy1vcmRlcmluZy13cmFwcGVyPmRpdiwKICAgIC5ydGwgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5hZ2VudHMtb3JkZXJpbmctd3JhcHBlcj5kaXYgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyPmRpdjpudGgtY2hpbGQoMm4rMSksCiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLmFnZW5jaWVzLW9yZGVyaW5nLXdyYXBwZXI+ZGl2Om50aC1jaGlsZCgybisxKSwKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAuYWdlbnRzLW9yZGVyaW5nLXdyYXBwZXI+ZGl2Om50aC1jaGlsZCgybisxKSB7CiAgICAgICAgY2xlYXI6IGJvdGg7CiAgICB9CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLnByb3BlcnRpZXMtb3JkZXJpbmctd3JhcHBlcj5kaXYucHJvcGVydGllcy1vcmRlcmluZywKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyPmRpdi5yZXN1bHRzLWNvdW50LAogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5hZ2VuY2llcy1vcmRlcmluZy13cmFwcGVyPmRpdi5wcm9wZXJ0aWVzLW9yZGVyaW5nLAogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5hZ2VuY2llcy1vcmRlcmluZy13cmFwcGVyPmRpdi5yZXN1bHRzLWNvdW50LAogICAgLmxheW91dC10eXBlLWhhbGYtbWFwLXYzIC5hZ2VudHMtb3JkZXJpbmctd3JhcHBlcj5kaXYucHJvcGVydGllcy1vcmRlcmluZywKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAuYWdlbnRzLW9yZGVyaW5nLXdyYXBwZXI+ZGl2LnJlc3VsdHMtY291bnQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50OwogICAgfQp9CgoubGF5b3V0LXR5cGUtdG9wLW1hcCAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICBoZWlnaHQ6IDMwMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubGF5b3V0LXR5cGUtdG9wLW1hcCAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICAgICAgaGVpZ2h0OiA2MDBweDsKICAgIH0KfQoKLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiA4OwogICAgbWF4LXdpZHRoOiA4NSU7CiAgICB3aWR0aDogMzc1cHg7CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgbGVmdDogMDsKICAgIHRvcDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKfQoKLnJ0bCAucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKfQoKLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlci5hY3RpdmUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIHsKICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgfQp9CgoucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyKy5vdmVyLWRhcmstZmlsdGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxZDI5M2U7CiAgICBvcGFjaXR5OiAwOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiA3OwogICAgd2lkdGg6IDEwMHZ3OwogICAgaGVpZ2h0OiAxMDB2aDsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwp9CgoucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyLmFjdGl2ZSsub3Zlci1kYXJrLWZpbHRlciB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgb3BhY2l0eTogMC42OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTYwKTsKfQoKLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlciAuY2xvc2UtZmlsdGVyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIGNvbG9yOiAjZTQ0MzQzOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKfQoKLnJ0bCAucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC5jbG9zZS1maWx0ZXIgewogICAgbGVmdDogMDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC5jbG9zZS1maWx0ZXIgaSB7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCi5wcm9wZXJ0aWVzLWZpbHRlci1zaWRlYmFyLXdyYXBwZXIgLmNsb3NlLWZpbHRlcjpob3ZlciwKLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlciAuY2xvc2UtZmlsdGVyOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNDQzNDM7CiAgICBjb2xvcjogI2ZmZjsKfQoKLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlciAuaW5uZXIgewogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC5pbm5lciAucHNfX3JhaWwteCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5wcm9wZXJ0aWVzLWZpbHRlci1zaWRlYmFyLXdyYXBwZXIgLmNpcmNsZS1jaGVjayBsaSB7CiAgICB3aWR0aDogNTAlOwp9CgoucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gewogICAgaGVpZ2h0OiAxMDAlOwp9CgoucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gLmNvbnRlbnQtbWFpbi1pbm5lciB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgLW8tYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50Owp9CgoucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gLm1haW4taW5uZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5wcm9wZXJ0aWVzLWZpbHRlci1zaWRlYmFyLXdyYXBwZXIgZm9ybS5mb3JtLXNlYXJjaCAuc2VhcmNoLWZvcm0taW5uZXIgLmFkdmFuY2Utc2VhcmNoLXdyYXBwZXIgewogICAgcG9zaXRpb246IHN0YXRpYzsKfQoKLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlciBmb3JtLmZvcm0tc2VhcmNoIC5hZHZhbmNlLXNlYXJjaC13cmFwcGVyLWZpZWxkcyB7CiAgICBwYWRkaW5nOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogICAgLW8tYm9yZGVyLXJhZGl1czogMDsKfQoKLmNvbXBhcmUtdGFibGVzIHsKICAgIGJvcmRlcjogMDsKICAgIG1hcmdpbjogMDsKfQoKLmNvbXBhcmUtdGFibGVzIC50aHVtYiB7CiAgICBoZWlnaHQ6IDEyMHB4OwogICAgd2lkdGg6IDIwMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmNvbXBhcmUtdGFibGVzIC50aHVtYiB7CiAgICAgICAgaGVpZ2h0OiAxNjVweDsKICAgICAgICB3aWR0aDogMjYwcHg7CiAgICB9Cn0KCi5jb21wYXJlLXRhYmxlcyAudGh1bWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjkzZTsKICAgIG9wYWNpdHk6IDAuNDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT00MCk7Cn0KCi5jb21wYXJlLXRhYmxlcyAudGh1bWIgLmJ0bi1yZW1vdmUtcHJvcGVydHktY29tcGFyZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAxOwogICAgdG9wOiAxMHB4OwogICAgcmlnaHQ6IDEwcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwogICAgZm9udC1zaXplOiAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5ydGwgLmNvbXBhcmUtdGFibGVzIC50aHVtYiAuYnRuLXJlbW92ZS1wcm9wZXJ0eS1jb21wYXJlIHsKICAgIGxlZnQ6IDEwcHg7CiAgICByaWdodDogYXV0bzsKfQoKLmNvbXBhcmUtdGFibGVzIC50aHVtYiAuYnRuLXJlbW92ZS1wcm9wZXJ0eS1jb21wYXJlOmJlZm9yZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBsaW5lLWhlaWdodDogMzBweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIGNvbnRlbnQ6ICdcZjExMCc7CiAgICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnOwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwp9CgouY29tcGFyZS10YWJsZXMgLnRodW1iIC5idG4tcmVtb3ZlLXByb3BlcnR5LWNvbXBhcmUubG9hZGluZyB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCkgIWltcG9ydGFudDsKICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouY29tcGFyZS10YWJsZXMgLnRodW1iIC5idG4tcmVtb3ZlLXByb3BlcnR5LWNvbXBhcmUubG9hZGluZzpiZWZvcmUgewogICAgb3BhY2l0eTogMC44OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTsKICAgIGFuaW1hdGlvbjogcm90YXRlX2ljb24gMTUwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0ZV9pY29uIDE1MDBtcyBsaW5lYXIgMHMgbm9ybWFsIG5vbmUgaW5maW5pdGUgcnVubmluZzsKfQoKLmNvbXBhcmUtdGFibGVzIC50aHVtYiAuYnRuLXJlbW92ZS1wcm9wZXJ0eS1jb21wYXJlOmhvdmVyLAouY29tcGFyZS10YWJsZXMgLnRodW1iIC5idG4tcmVtb3ZlLXByb3BlcnR5LWNvbXBhcmU6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQ0MzQzOwp9CgouY29tcGFyZS10YWJsZXMgLnRodW1iIC5wcm9wZXJ0eS1wcmljZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgcGFkZGluZzogMTVweDsKICAgIHdpZHRoOiAxMDAlOwogICAgei1pbmRleDogMTsKICAgIGNvbG9yOiAjZmZmOwp9CgouY29tcGFyZS10YWJsZXMgLnRodW1iOmhvdmVyIC5idG4tcmVtb3ZlLXByb3BlcnR5LWNvbXBhcmUgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQ0MzQzOwp9CgouY29tcGFyZS10YWJsZXMgLnByb3BlcnR5LXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1hcmdpbjogMDsKfQoKLmNvbXBhcmUtdGFibGVzIC5wcm9wZXJ0eS1wcmljZSB7CiAgICBmb250LXNpemU6IDIycHg7Cn0KCi5jb21wYXJlLXRhYmxlcyAucHJvcGVydHktcHJpY2UgLnByZWZpeC10ZXh0LAouY29tcGFyZS10YWJsZXMgLnByb3BlcnR5LXByaWNlIC5zdWZmaXgtdGV4dCB7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5jb21wYXJlLXRhYmxlcyAudHlwZS1wcm9wZXJ0eSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNDAwOwp9CgouY29tcGFyZS10YWJsZXMgLnR5cGUtcHJvcGVydHkgYSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmNvbXBhcmUtdGFibGVzIC5pbmZvIHsKICAgIHdpZHRoOiAyMDBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmNvbXBhcmUtdGFibGVzIC5pbmZvIHsKICAgICAgICB3aWR0aDogMjYwcHg7CiAgICB9Cn0KCi5jb21wYXJlLXRhYmxlcyB0aGVhZCB0aCB7CiAgICBib3JkZXI6IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgZm9udC1zaXplOiAxOHB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgcGFkZGluZzogMTBweDsKICAgIHdpZHRoOiAyMjBweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmNvbXBhcmUtdGFibGVzIHRoZWFkIHRoIHsKICAgICAgICBwYWRkaW5nOiAyNXB4IDE1cHg7CiAgICAgICAgd2lkdGg6IDI5MHB4OwogICAgfQp9CgouY29tcGFyZS10YWJsZXMgdGhlYWQgdGg6Zmlyc3QtY2hpbGQgewogICAgbWF4LXdpZHRoOiAyNDBweDsKfQoKLmNvbXBhcmUtdGFibGVzIHRib2R5IHRkIHsKICAgIGJvcmRlci1sZWZ0OiAwOwogICAgYm9yZGVyLXJpZ2h0OiAwOwogICAgcGFkZGluZzogMTBweCAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuY29tcGFyZS10YWJsZXMgdGJvZHkgdGQgewogICAgICAgIHBhZGRpbmc6IDI1cHggMzBweDsKICAgIH0KfQoKLmNvbXBhcmUtdGFibGVzIHRib2R5IHRkOmZpcnN0LWNoaWxkIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCi5jb21wYXJlLXRhYmxlcyB0Ym9keSBoMyB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBtYXJnaW46IDA7Cn0KCi5jb21wYXJlLXRhYmxlcyB0Ym9keSAueWVzIFtjbGFzcyo9J3N0YXInXSB7CiAgICBjb2xvcjogI2JjYzUyYTsKfQoKLndyYXBwZXItY29tcGFyZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKLm5vdC1mb3VuZC1jb21wYXJlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogI2U0NDM0MzsKfQoKLnByb3BlcnR5LXN1Ym1pc3Npb24tZm9ybS13cmFwcGVyIC5zdWJtaXQtcHJvcGVydHktaGVhZGluZyB7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAwOwp9CgoucHJvcGVydHktc3VibWlzc2lvbi1mb3JtLXdyYXBwZXIgLnN1Ym1pdC1wcm9wZXJ0eS1oZWFkaW5nPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbjogMDsKICAgIHdpZHRoOiA1MCU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5wcm9wZXJ0eS1zdWJtaXNzaW9uLWZvcm0td3JhcHBlciAuc3VibWl0LXByb3BlcnR5LWhlYWRpbmc+bGk+YSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgcGFkZGluZzogMTNweDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1zdWJtaXNzaW9uLWZvcm0td3JhcHBlciAuc3VibWl0LXByb3BlcnR5LWhlYWRpbmc+bGk+YSB7CiAgICAgICAgcGFkZGluZzogMTNweCAyMHB4OwogICAgfQp9CgoucHJvcGVydHktc3VibWlzc2lvbi1mb3JtLXdyYXBwZXIgLnN1Ym1pdC1wcm9wZXJ0eS1oZWFkaW5nPmxpPmE6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIGNvbnRlbnQ6ICcnOwogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDJweDsKICAgIGJhY2tncm91bmQ6ICNmZjVhNWY7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnJ0bCAucHJvcGVydHktc3VibWlzc2lvbi1mb3JtLXdyYXBwZXIgLnN1Ym1pdC1wcm9wZXJ0eS1oZWFkaW5nPmxpPmE6YmVmb3JlIHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKfQoKLnByb3BlcnR5LXN1Ym1pc3Npb24tZm9ybS13cmFwcGVyIC5zdWJtaXQtcHJvcGVydHktaGVhZGluZz5saS5hY3RpdmU+YSB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLnByb3BlcnR5LXN1Ym1pc3Npb24tZm9ybS13cmFwcGVyIC5zdWJtaXQtcHJvcGVydHktaGVhZGluZz5saS5hY3RpdmU+YTpiZWZvcmUgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5wcm9wZXJ0eS1zdWJtaXNzaW9uLWZvcm0td3JhcHBlciBmb3JtLmNtYi1mb3JtPi5zdWJtaXQtYnV0dG9uLXdyYXBwZXIgewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHBhZGRpbmctdG9wOiAxNXB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlYmViZWI7CiAgICBjbGVhcjogYm90aDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnByb3BlcnR5LXN1Ym1pc3Npb24tZm9ybS13cmFwcGVyIGZvcm0uY21iLWZvcm0+LnN1Ym1pdC1idXR0b24td3JhcHBlciB7CiAgICAgICAgbWFyZ2luLXRvcDogMjVweDsKICAgICAgICBwYWRkaW5nLXRvcDogMjVweDsKICAgIH0KfQoKLnByb3BlcnR5LXN1Ym1pc3Npb24tZm9ybS13cmFwcGVyIGZvcm0uY21iLWZvcm0+LnN1Ym1pdC1idXR0b24td3JhcHBlciAuam9iLXN1Ym1pc3Npb24tcHJldmlvdXMtYnRuIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgoucnRsIC5wcm9wZXJ0eS1zdWJtaXNzaW9uLWZvcm0td3JhcHBlciBmb3JtLmNtYi1mb3JtPi5zdWJtaXQtYnV0dG9uLXdyYXBwZXIgLmpvYi1zdWJtaXNzaW9uLXByZXZpb3VzLWJ0biB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmNoYW5nZS1wYXNzd29yZC1mb3JtIGxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKfQoKLnByb3BlcnR5LXN1Ym1pc3Npb24tZm9ybS13cmFwcGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5wcm9wZXJ0eS1zdWJtaXNzaW9uLWZvcm0td3JhcHBlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICAgIH0KfQoKZGl2LmNtYjItd3JhcDphZnRlciwKZGl2LmNtYjItd3JhcDpiZWZvcmUgewogICAgY29udGVudDogIiAiOwogICAgZGlzcGxheTogdGFibGU7CiAgICBjbGVhcjogYm90aDsKfQoKZGl2LmNtYjItd3JhcCBpbnB1dC5jbWIyLXRleHQtc21hbGwsCmRpdi5jbWIyLXdyYXAgaW5wdXQuY21iMi10aW1lcGlja2VyIHsKICAgIHdpZHRoOiAxMDAlOwp9CgpkaXYuY21iMi13cmFwIC5jbWIyLWxpc3QgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYi1yb3cgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKZGl2LmNtYjItd3JhcCAuY21iMi1tZXRhYm94LWRlc2NyaXB0aW9uIHsKICAgIG1hcmdpbi10b3A6IDVweDsKfQoKZGl2LmNtYjItd3JhcCAuY21iLW11bHRpY2hlY2stdG9nZ2xlIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBjb2xvcjogI2ZmNWE1ZiAhaW1wb3J0YW50Owp9CgpkaXYuY21iMi13cmFwIHNlbGVjdCwKZGl2LmNtYjItd3JhcCBbdHlwZT0iZW1haWwiXSwKZGl2LmNtYjItd3JhcCBbdHlwZT0idGV4dCJdLApkaXYuY21iMi13cmFwIFt0eXBlPSJudW1iZXIiXSwKZGl2LmNtYjItd3JhcCBbdHlwZT0idXJsIl0sCmRpdi5jbWIyLXdyYXAgdGV4dGFyZWEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogNTBweDsKICAgIHBhZGRpbmc6IDEycHggMzBweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjc1OwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkOGQ4ZDg7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0OwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDsKfQoKZGl2LmNtYjItd3JhcCBzZWxlY3Q6Zm9jdXMsCmRpdi5jbWIyLXdyYXAgW3R5cGU9ImVtYWlsIl06Zm9jdXMsCmRpdi5jbWIyLXdyYXAgW3R5cGU9InRleHQiXTpmb2N1cywKZGl2LmNtYjItd3JhcCBbdHlwZT0ibnVtYmVyIl06Zm9jdXMsCmRpdi5jbWIyLXdyYXAgW3R5cGU9InVybCJdOmZvY3VzLApkaXYuY21iMi13cmFwIHRleHRhcmVhOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogI2JmYmZiZjsKICAgIG91dGxpbmU6IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgpkaXYuY21iMi13cmFwIHNlbGVjdDo6LW1vei1wbGFjZWhvbGRlciwKZGl2LmNtYjItd3JhcCBbdHlwZT0iZW1haWwiXTo6LW1vei1wbGFjZWhvbGRlciwKZGl2LmNtYjItd3JhcCBbdHlwZT0idGV4dCJdOjotbW96LXBsYWNlaG9sZGVyLApkaXYuY21iMi13cmFwIFt0eXBlPSJudW1iZXIiXTo6LW1vei1wbGFjZWhvbGRlciwKZGl2LmNtYjItd3JhcCBbdHlwZT0idXJsIl06Oi1tb3otcGxhY2Vob2xkZXIsCmRpdi5jbWIyLXdyYXAgdGV4dGFyZWE6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBvcGFjaXR5OiAwLjY1Owp9CgpkaXYuY21iMi13cmFwIHNlbGVjdDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsCmRpdi5jbWIyLXdyYXAgW3R5cGU9ImVtYWlsIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyLApkaXYuY21iMi13cmFwIFt0eXBlPSJ0ZXh0Il06LW1zLWlucHV0LXBsYWNlaG9sZGVyLApkaXYuY21iMi13cmFwIFt0eXBlPSJudW1iZXIiXTotbXMtaW5wdXQtcGxhY2Vob2xkZXIsCmRpdi5jbWIyLXdyYXAgW3R5cGU9InVybCJdOi1tcy1pbnB1dC1wbGFjZWhvbGRlciwKZGl2LmNtYjItd3JhcCB0ZXh0YXJlYTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICM0ODQ4NDg7Cn0KCmRpdi5jbWIyLXdyYXAgc2VsZWN0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLApkaXYuY21iMi13cmFwIFt0eXBlPSJlbWFpbCJdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLApkaXYuY21iMi13cmFwIFt0eXBlPSJ0ZXh0Il06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsCmRpdi5jbWIyLXdyYXAgW3R5cGU9Im51bWJlciJdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLApkaXYuY21iMi13cmFwIFt0eXBlPSJ1cmwiXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwKZGl2LmNtYjItd3JhcCB0ZXh0YXJlYTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKZGl2LmNtYjItd3JhcCBzZWxlY3Q6Zm9jdXMsCmRpdi5jbWIyLXdyYXAgW3R5cGU9ImVtYWlsIl06Zm9jdXMsCmRpdi5jbWIyLXdyYXAgW3R5cGU9InRleHQiXTpmb2N1cywKZGl2LmNtYjItd3JhcCBbdHlwZT0ibnVtYmVyIl06Zm9jdXMsCmRpdi5jbWIyLXdyYXAgW3R5cGU9InVybCJdOmZvY3VzLApkaXYuY21iMi13cmFwIHRleHRhcmVhOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCmRpdi5jbWIyLXdyYXAgdGV4dGFyZWEgewogICAgaGVpZ2h0OiAxNTBweDsKICAgIHJlc2l6ZTogbm9uZTsKfQoKZGl2LmNtYjItd3JhcCBbY2xhc3MqPSJ2aXJ0dWFsLXRvdXIiXSBwcmUgewogICAgYm9yZGVyOiAxcHggc29saWQgI2Q4ZDhkODsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCmRpdi5jbWIyLXdyYXAgW2NsYXNzKj0idmlydHVhbC10b3VyIl0gcHJlIHByZSB7CiAgICBib3JkZXI6IDA7CiAgICBwYWRkaW5nOiAwIDQwcHg7Cn0KCmRpdi5jbWIyLXdyYXAgW2NsYXNzKj0idmlydHVhbC10b3VyIl0gcHJlIC5Db2RlTWlycm9yIHsKICAgIGhlaWdodDogMTUwcHg7Cn0KCmRpdi5jbWIyLXdyYXAgW2NsYXNzKj0idmlydHVhbC10b3VyIl0gLkNvZGVNaXJyb3ItZ3V0dGVycyB7CiAgICBib3JkZXI6IDA7Cn0KCmRpdi5jbWIyLXdyYXAgW2NsYXNzKj0idmlydHVhbC10b3VyIl0gLkNvZGVNaXJyb3ItYWN0aXZlbGluZS1iYWNrZ3JvdW5kIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgpkaXYuY21iMi13cmFwIFtjbGFzcyo9InZpcnR1YWwtdG91ciJdIC5Db2RlTWlycm9yLWd1dHRlciB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50Owp9CgpkaXYuY21iMi13cmFwIC5jbWItdGggewogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAwOwp9CgpkaXYuY21iMi13cmFwIC5jbWItdGggbGFiZWwgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgcGFkZGluZy10b3A6IDA7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYi10aCsuY21iLXRkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMDsKfQoKZGl2LmNtYjItd3JhcCAuY21iLXRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKZGl2LmNtYjItd3JhcCAuY21iLXRkIC5jbWItYWpheC1zZWFyY2gtc3Bpbm5lciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHJpZ2h0OiAxNXB4OwogICAgbWFyZ2luOiAwOwp9CgoucnRsIGRpdi5jbWIyLXdyYXAgLmNtYi10ZCAuY21iLWFqYXgtc2VhcmNoLXNwaW5uZXIgewogICAgbGVmdDogMTVweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgpkaXYuY21iMi13cmFwIFtjbGFzcyo9InRheG9ub215LWxvY2F0aW9uLXdyYXBwZXIiXSB7CiAgICB3aWR0aDogMTAwJTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICBkaXYuY21iMi13cmFwIFtjbGFzcyo9InRheG9ub215LWxvY2F0aW9uLXdyYXBwZXIiXSB7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMTBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4OwogICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAyMHB4KTsKICAgIH0KICAgIGRpdi5jbWIyLXdyYXAgW2NsYXNzKj0idGF4b25vbXktbG9jYXRpb24td3JhcHBlciJdPmRpdiB7CiAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICB9Cn0KCmRpdi5jbWIyLXdyYXAgW2NsYXNzKj0idGF4b25vbXktbG9jYXRpb24td3JhcHBlciJdPmRpdiB7CiAgICB3aWR0aDogMTAwJTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICBkaXYuY21iMi13cmFwIFtjbGFzcyo9InRheG9ub215LWxvY2F0aW9uLXdyYXBwZXIiXT5kaXYgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICBkaXYuY21iMi13cmFwIFtjbGFzcyo9InRheG9ub215LWxvY2F0aW9uLXdyYXBwZXIiXT5kaXY6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIH0KfQoKZGl2LmNtYjItd3JhcCAucHctbWFwLXNlYXJjaC13cmFwcGVyIC5maW5kLW1lLWxvY2F0aW9uIHsKICAgIHRvcDogMThweDsKICAgIGNvbG9yOiAjNDg0ODQ4OwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9CgoucnRsIGRpdi5jbWIyLXdyYXAgLnB3LW1hcC1zZWFyY2gtd3JhcHBlciAuZmluZC1tZS1sb2NhdGlvbiB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKZGl2LmNtYjItd3JhcCAucHctbWFwLXNlYXJjaC13cmFwcGVyIC5sZWFmbGV0LWdlb2NvZGUtY29udGFpbmVyIHVsIGxpIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKZGl2LmNtYjItd3JhcCAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlci1jb2xvcjogI2ViZWJlYjsKfQoKZGl2LmNtYjItd3JhcCAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgewogICAgYm9yZGVyLWNvbG9yOiAjYmZiZmJmOwogICAgYmFja2dyb3VuZDogI2ZmZjsKfQoKZGl2LmNtYjItd3JhcCBbaWQqPSJtYXBfbG9jYXRpb24tbWFwIl0gewogICAgbWFyZ2luOiAyMHB4IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIHotaW5kZXg6IDE7Cn0KCmRpdi5jbWIyLXdyYXAgW2lkKj0ibWFwX2xvY2F0aW9uLW1hcCJdfmlucHV0IHsKICAgIHdpZHRoOiBhdXRvOwogICAgZmxvYXQ6IGxlZnQ7Cn0KCi5ydGwgZGl2LmNtYjItd3JhcCBbaWQqPSJtYXBfbG9jYXRpb24tbWFwIl1+aW5wdXQgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgpkaXYuY21iMi13cmFwIC5sYWJlbC1jYW4tZHJhZyB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW46IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogICAgcGFkZGluZzogMjBweCAzNXB4OwogICAgYm9yZGVyOiBzb2xpZCAxcHggI2ViZWJlYjsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgpkaXYuY21iMi13cmFwIC5sYWJlbC1jYW4tZHJhZzpob3ZlciB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCmRpdi5jbWIyLXdyYXAgLmxhYmVsLWNhbi1kcmFnIC5mb3JtLWdyb3VwIHsKICAgIG1hcmdpbjogMDsKfQoKZGl2LmNtYjItd3JhcCAud3AtcmVhbGVzdGF0ZS11cGxvYWRlZC1maWxlcyB7CiAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4OwogICAgbWFyZ2luLWxlZnQ6IC0xMHB4Owp9CgpkaXYuY21iMi13cmFwIC53cC1yZWFsZXN0YXRlLXVwbG9hZGVkLWZpbGVzOmJlZm9yZSwKZGl2LmNtYjItd3JhcCAud3AtcmVhbGVzdGF0ZS11cGxvYWRlZC1maWxlczphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIGRpc3BsYXk6IHRhYmxlOwogICAgY2xlYXI6IGJvdGg7Cn0KCmRpdi5jbWIyLXdyYXAgLndwLXJlYWxlc3RhdGUtdXBsb2FkZWQtZmlsZXMgLndwLXJlYWxlc3RhdGUtdXBsb2FkZWQtZmlsZSB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZy1yaWdodDogMTBweDsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgIHdpZHRoOiAyMDBweDsKICAgIGZsb2F0OiBsZWZ0Owp9CgoucnRsIGRpdi5jbWIyLXdyYXAgLndwLXJlYWxlc3RhdGUtdXBsb2FkZWQtZmlsZXMgLndwLXJlYWxlc3RhdGUtdXBsb2FkZWQtZmlsZSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCmRpdi5jbWIyLXdyYXAgLndwLXJlYWxlc3RhdGUtdXBsb2FkZWQtZmlsZXMgLndwLXJlYWxlc3RhdGUtdXBsb2FkZWQtZmlsZSAud3AtcmVhbGVzdGF0ZS1yZW1vdmUtdXBsb2FkZWQtZmlsZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDVweDsKICAgIGxlZnQ6IDE1cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMjVweDsKICAgIGhlaWdodDogMjVweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBsaW5lLWhlaWdodDogMjVweDsKICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGZvbnQtc2l6ZTogMTJweDsKfQoKLnJ0bCBkaXYuY21iMi13cmFwIC53cC1yZWFsZXN0YXRlLXVwbG9hZGVkLWZpbGVzIC53cC1yZWFsZXN0YXRlLXVwbG9hZGVkLWZpbGUgLndwLXJlYWxlc3RhdGUtcmVtb3ZlLXVwbG9hZGVkLWZpbGUgewogICAgcmlnaHQ6IDE1cHg7CiAgICBsZWZ0OiBhdXRvOwp9CgpkaXYuY21iMi13cmFwIC53cC1yZWFsZXN0YXRlLXVwbG9hZGVkLWZpbGVzIC53cC1yZWFsZXN0YXRlLXVwbG9hZGVkLWZpbGUgLndwLXJlYWxlc3RhdGUtcmVtb3ZlLXVwbG9hZGVkLWZpbGU6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiAndGhlbWlmeSc7CiAgICBjb250ZW50OiAiXGU2NDYiOwogICAgd2lkdGg6IDI1cHg7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgYmFja2dyb3VuZDogI2U0NDM0MzsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgb3BhY2l0eTogMC45OwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTkwKTsKICAgIGNvbG9yOiAjZmZmOwp9CgpkaXYuY21iMi13cmFwIC53cC1yZWFsZXN0YXRlLXVwbG9hZGVkLWZpbGVzIC53cC1yZWFsZXN0YXRlLXVwbG9hZGVkLWZpbGUgLndwLXJlYWxlc3RhdGUtcmVtb3ZlLXVwbG9hZGVkLWZpbGU6aG92ZXI6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKZGl2LmNtYjItd3JhcCAuY21iMi1jaGVja2JveC1saXN0IHsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwp9CgpkaXYuY21iMi13cmFwIC5jbWIyLWNoZWNrYm94LWxpc3QgbGkgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogNTAlOwogICAgbWFyZ2luOiAwIDAgMTBweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9CgoucnRsIGRpdi5jbWIyLXdyYXAgLmNtYjItY2hlY2tib3gtbGlzdCBsaSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIGRpdi5jbWIyLXdyYXAgLmNtYjItY2hlY2tib3gtbGlzdCBsaSB7CiAgICAgICAgd2lkdGg6IDMzJTsKICAgICAgICBtYXJnaW46IDAgMCAxMnB4OwogICAgfQp9CgpkaXYuY21iMi13cmFwIC5jbWIyLWNoZWNrYm94LWxpc3QgW3R5cGU9ImNoZWNrYm94Il0gewogICAgZGlzcGxheTogbm9uZTsKfQoKZGl2LmNtYjItd3JhcCAuY21iMi1jaGVja2JveC1saXN0IFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQrbGFiZWwgewogICAgY29sb3I6ICNmZjVhNWY7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYjItY2hlY2tib3gtbGlzdCBbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkK2xhYmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNGEiOwogICAgY29sb3I6ICNmZjVhNWY7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYjItY2hlY2tib3gtbGlzdCBsYWJlbCB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNDAwOwp9CgpkaXYuY21iMi13cmFwIC5jbWIyLWNoZWNrYm94LWxpc3QgbGFiZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjOCI7CiAgICBtYXJnaW4tcmlnaHQ6IDhweDsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgoucnRsIGRpdi5jbWIyLXdyYXAgLmNtYjItY2hlY2tib3gtbGlzdCBsYWJlbDpiZWZvcmUgewogICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKZGl2LmNtYjItd3JhcCAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiA1cHggN3B4ICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4ICFpbXBvcnRhbnQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDsKfQoKZGl2LmNtYjItd3JhcCAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlIHsKICAgIGNvbG9yOiAjZTQ0MzQzICFpbXBvcnRhbnQ7Cn0KCmRpdi5jbWIyLXdyYXAgLmJlZm9yZS1ncm91cC1yb3cgLnN1Ym1pdC1idXR0b24td3JhcHBlciB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCmRpdi5jbWIyLXdyYXAgLmJlZm9yZS1ncm91cC1yb3cgLnN1Ym1pdC1idXR0b24td3JhcHBlciAuYnRuIHsKICAgIHBhZGRpbmc6IDVweCAxNXB4Owp9CgpkaXYuY21iMi13cmFwIC5iZWZvcmUtZ3JvdXAtcm93IC5zdWJtaXQtYnV0dG9uLXdyYXBwZXIgLmpvYi1zdWJtaXNzaW9uLW5leHQtYnRuIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgoucnRsIGRpdi5jbWIyLXdyYXAgLmJlZm9yZS1ncm91cC1yb3cgLnN1Ym1pdC1idXR0b24td3JhcHBlciAuam9iLXN1Ym1pc3Npb24tbmV4dC1idG4gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCmRpdi5jbWIyLXdyYXAgLmJlZm9yZS1ncm91cC1yb3cgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGNsZWFyOiBib3RoOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICBkaXYuY21iMi13cmFwIC5iZWZvcmUtZ3JvdXAtcm93IHsKICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9Cn0KCmRpdi5jbWIyLXdyYXAgLmNvbHVtbnMtMSAuYmVmb3JlLWdyb3VwLXJvdy1pbm5lciAuY21iLXJvdzpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgZGl2LmNtYjItd3JhcCAuY29sdW1ucy0yIC5iZWZvcmUtZ3JvdXAtcm93LWlubmVyIHsKICAgICAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIH0KICAgIGRpdi5jbWIyLXdyYXAgLmNvbHVtbnMtMiAuYmVmb3JlLWdyb3VwLXJvdy1pbm5lcj5kaXYgewogICAgICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgICAgIHdpZHRoOiA1MCU7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICB9CiAgICAucnRsIGRpdi5jbWIyLXdyYXAgLmNvbHVtbnMtMiAuYmVmb3JlLWdyb3VwLXJvdy1pbm5lcj5kaXYgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KfQoKZGl2LmNtYjItd3JhcCAuY29sdW1ucy0yIC5iZWZvcmUtZ3JvdXAtcm93LWlubmVyPltkYXRhLWZpZWxkdHlwZT0idGl0bGUiXSwKZGl2LmNtYjItd3JhcCAuY29sdW1ucy0yIC5iZWZvcmUtZ3JvdXAtcm93LWlubmVyPi5zdWJtaXQtYnV0dG9uLXdyYXBwZXIgewogICAgd2lkdGg6IDEwMCU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgZGl2LmNtYjItd3JhcCAuY29sdW1ucy0zIC5iZWZvcmUtZ3JvdXAtcm93LWlubmVyIHsKICAgICAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIH0KICAgIGRpdi5jbWIyLXdyYXAgLmNvbHVtbnMtMyAuYmVmb3JlLWdyb3VwLXJvdy1pbm5lcj5kaXYgewogICAgICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgICAgIHdpZHRoOiAzMy4zMyU7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICB9CiAgICAucnRsIGRpdi5jbWIyLXdyYXAgLmNvbHVtbnMtMyAuYmVmb3JlLWdyb3VwLXJvdy1pbm5lcj5kaXYgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KfQoKZGl2LmNtYjItd3JhcCAuY29sdW1ucy0zIC5iZWZvcmUtZ3JvdXAtcm93LWlubmVyPltkYXRhLWZpZWxkdHlwZT0idGl0bGUiXSwKZGl2LmNtYjItd3JhcCAuY29sdW1ucy0zIC5iZWZvcmUtZ3JvdXAtcm93LWlubmVyPi5zdWJtaXQtYnV0dG9uLXdyYXBwZXIgewogICAgd2lkdGg6IDEwMCU7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYjItbWV0YWJveC10aXRsZSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9CgpkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuaW5zaWRlIHsKICAgIHBhZGRpbmc6IDIwcHggMTVweCAxNXB4OwogICAgbWFyZ2luLWxlZnQ6IC0xZW07CiAgICBtYXJnaW4tcmlnaHQ6IC0xZW07CiAgICB3aWR0aDogY2FsYygxMDAlICsgMmVtKTsKICAgIG1heC13aWR0aDogbm9uZTsKICAgIGJvcmRlci13aWR0aDogMCAxcHggMXB4OwogICAgYm9yZGVyLWNvbG9yOiAjZWJlYmViOwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgNnB4IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwIDAgNnB4IDZweDsKfQoKZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmluc2lkZSAuY21iLXJvdyB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgpkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuaW5zaWRlIGxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmNtYi1ncm91cC1uYW1lIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogIzQ4NDg0ODsKICAgIG1hcmdpbjogMDsKfQoKZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmNtYi1hZGQtZ3JvdXAtcm93IHsKICAgIGJhY2tncm91bmQ6ICM3OWI1MzA7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogbm9uZTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDJweDsKfQoKZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmNtYi1hZGQtZ3JvdXAtcm93OmhvdmVyLApkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLWFkZC1ncm91cC1yb3c6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kOiAjNmNhMTJiOwp9CgpkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJvdzpub3QoOmxhc3Qtb2YtdHlwZSkgewogICAgYm9yZGVyOiAwOwp9CgpkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJlcGVhdGFibGUtZ3JvdXBpbmcgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYi10eXBlLWdyb3VwIC5jbWItcmVwZWF0YWJsZS1ncm91cGluZyAuY21iLWdyb3VwLXRpdGxlIHsKICAgIHBhZGRpbmctdG9wOiAxNHB4OwogICAgcGFkZGluZy1ib3R0b206IDE0cHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgpkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJlcGVhdGFibGUtZ3JvdXBpbmc6bm90KC5jbG9zZWQpIC5jbWItZ3JvdXAtdGl0bGUgewogICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweCA2cHggMCAwOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHggNnB4IDAgMDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHggNnB4IDAgMDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweCA2cHggMCAwOwp9CgpkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJlbW92ZS1yb3cgewogICAgcGFkZGluZy10b3A6IDEwcHg7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYi10eXBlLWdyb3VwIC5jbWItcmVtb3ZlLXJvdyAubW92ZS1kb3duLApkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJlbW92ZS1yb3cgLm1vdmUtdXAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogNXB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWE1ZjsKICAgIGNvbG9yOiAjZmZmOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICBtYXJnaW46IDAgMnB4ICFpbXBvcnRhbnQ7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYi10eXBlLWdyb3VwIC5jbWItcmVtb3ZlLXJvdyAubW92ZS1kb3duIC5kYXNoaWNvbnMsCmRpdi5jbWIyLXdyYXAgLmNtYi10eXBlLWdyb3VwIC5jbWItcmVtb3ZlLXJvdyAubW92ZS11cCAuZGFzaGljb25zIHsKICAgIG1hcmdpbjogMDsKfQoKZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmFsaWducmlnaHQsCmRpdi5jbWIyLXdyYXAgLmNtYi10eXBlLWdyb3VwIC5hbGlnbmxlZnQgewogICAgbWFyZ2luOiAwOwp9CgpkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuZGFzaGljb25zLWJlZm9yZS5jbWItcmVtb3ZlLWdyb3VwLXJvdywKZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmNtYmhhbmRsZSB7CiAgICBtYXJnaW4tdG9wOiA1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmNtYi1yb3dbZGF0YS1maWVsZHR5cGU9InNlbGVjdCJdLAogICAgZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmNtYi1yb3dbZGF0YS1maWVsZHR5cGU9InRleHQiXSB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IDUwJTsKICAgIH0KICAgIC5ydGwgZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmNtYi1yb3dbZGF0YS1maWVsZHR5cGU9InNlbGVjdCJdLAogICAgLnJ0bCBkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJvd1tkYXRhLWZpZWxkdHlwZT0idGV4dCJdIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICB9Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYi10eXBlLWdyb3VwIC5jbWItcmVtb3ZlLWZpZWxkLXJvdywKZGl2LmNtYjItd3JhcCAuY21iLXR5cGUtZ3JvdXAgLmNtYi1yZXBlYXQtZ3JvdXAtZmllbGQgewogICAgcGFkZGluZzogMCAxNXB4OwogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KCmRpdi5jbWIyLXdyYXAgLmNtYi10eXBlLWdyb3VwIC5jbWItcmVtb3ZlLWdyb3VwLXJvdy1idXR0b24gewogICAgYm9yZGVyOiBub25lOwogICAgYmFja2dyb3VuZDogI2U0NDM0MzsKICAgIGNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICBwYWRkaW5nOiA4cHggMTBweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogMnB4Owp9CgpkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJlbW92ZS1ncm91cC1yb3ctYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogI2UxMmQyZDsKfQoKLmJveC1pbm5lci13aGl0ZSB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9CgouYm94LWlubmVyLXdoaXRlIC5pbm5lciB7CiAgICBwYWRkaW5nOiAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYm94LWlubmVyLXdoaXRlIC5pbm5lciB7CiAgICAgICAgcGFkZGluZzogMzBweDsKICAgIH0KfQoKLndhcnBwZXItYWN0aW9uLXByb3BlcnR5IGEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAzMHB4OwogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogI2ZlNjQ2OTsKICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KCi5ydGwgLndhcnBwZXItYWN0aW9uLXByb3BlcnR5IGEgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC53YXJwcGVyLWFjdGlvbi1wcm9wZXJ0eSBhIHsKICAgICAgICBtYXJnaW4tbGVmdDogMjBweDsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgd2lkdGg6IDQ1cHg7CiAgICAgICAgaGVpZ2h0OiA0NXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiA0NXB4OwogICAgfQogICAgLnJ0bCAud2FycHBlci1hY3Rpb24tcHJvcGVydHkgYSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgfQp9Cgoud2FycHBlci1hY3Rpb24tcHJvcGVydHkgYTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLnJ0bCAud2FycHBlci1hY3Rpb24tcHJvcGVydHkgYTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLndhcnBwZXItYWN0aW9uLXByb3BlcnR5IGE6aG92ZXIsCi53YXJwcGVyLWFjdGlvbi1wcm9wZXJ0eSBhOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogI2ZlNjQ2OTsKfQoKLnByb3BlcnR5LXN1Ym1pc3Npb24tcHJldmlldy1mb3JtLXdyYXBwZXIgLndyYXBwZXItYWN0aW9uLXByb3BlcnR5IHsKICAgIG1hcmdpbjogMzBweCAwOwp9Cgouc3VibWlzc2lvbi1mb3JtLXdyYXBwZXIgewogICAgbWFyZ2luOiAzMHB4IDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZm9udC1zaXplOiAyMnB4OwogICAgY29sb3I6ICM3OWI1MzA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5zdWJtaXNzaW9uLWZvcm0td3JhcHBlciB7CiAgICAgICAgbWFyZ2luOiA1MHB4IDA7CiAgICB9Cn0KCi5kYXNoYm9hcmQtYm94IGg0IHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KCi5kYXNoYm9hcmQtYm94IC5wcm9wZXJ0aWVzLWNvdW50IHsKICAgIGZvbnQtc2l6ZTogMzZweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBsaW5lLWhlaWdodDogMS4yOwp9CgouZGFzaGJvYXJkLWJveCAuaW5uZXItcmlnaHQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZTllYjsKICAgIGNvbG9yOiAjMWQyOTNlOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIGxpbmUtaGVpZ2h0OiA1MHB4OwogICAgZm9udC1zaXplOiAyNXB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuZGFzaGJvYXJkLWJveCAuaW5uZXItcmlnaHQgewogICAgICAgIGZvbnQtc2l6ZTogMzhweDsKICAgICAgICBsaW5lLWhlaWdodDogMTAwcHg7CiAgICAgICAgd2lkdGg6IDEwMHB4OwogICAgICAgIGhlaWdodDogMTAwcHg7CiAgICB9Cn0KCi5kYXNoYm9hcmQtYm94IC5pbm5lci1yaWdodC5iZy1mYXZvcml0ZXMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjVlYzsKICAgIGNvbG9yOiAjZmZiZDdmOwp9CgouZGFzaGJvYXJkLWJveCAuaW5uZXItcmlnaHQuYmctdmlldyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWZmMGY5OwogICAgY29sb3I6ICNhN2FiZTA7Cn0KCi5kYXNoYm9hcmQtYm94IC5pbm5lci1yaWdodC5iZy1wZW5kaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmU3ZTc7CiAgICBjb2xvcjogI2ZmNTc1ZTsKfQoKLmJveC13aGl0ZS1kYXNoYm9hcmQgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuYm94LXdoaXRlLWRhc2hib2FyZCB7CiAgICAgICAgcGFkZGluZzogMzBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgouYm94LXdoaXRlLWRhc2hib2FyZCAudGl0bGUgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgbWFyZ2luOiAwIDAgMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmJveC13aGl0ZS1kYXNoYm9hcmQgLnRpdGxlIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQp9CgouY29tbWVudC1saXN0Lmxpc3QtcmV2aWV3cz5saTpsYXN0LWNoaWxkPi50aGUtY29tbWVudCB7CiAgICBib3JkZXItYm90dG9tOiAwOwogICAgcGFkZGluZy1ib3R0b206IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgoubGlzdC1tZXNzYWdlLXNtYWxsIHsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwp9CgoubGlzdC1tZXNzYWdlLXNtYWxsPmxpIHsKICAgIHBhZGRpbmc6IDE1cHggMDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwp9CgoubGlzdC1tZXNzYWdlLXNtYWxsPmxpOmZpcnN0LWNoaWxkIHsKICAgIHBhZGRpbmctdG9wOiAwOwp9CgoubGlzdC1tZXNzYWdlLXNtYWxsPmxpOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLmxpc3QtbWVzc2FnZS1zbWFsbD5saS51bnJlYWQgLnVzZXItbmFtZSB7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgoubGlzdC1tZXNzYWdlLXNtYWxsIC5tZXNzYWdlLWl0ZW0tc21hbGwgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwp9CgoubGlzdC1tZXNzYWdlLXNtYWxsIC5hdmF0YXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5saXN0LW1lc3NhZ2Utc21hbGwgLmF2YXRhciBpbWcgewogICAgbWFyZ2luOiAwOwp9CgoubGlzdC1tZXNzYWdlLXNtYWxsIC5jb250ZW50IHsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNTBweCk7Cn0KCi5ydGwgLmxpc3QtbWVzc2FnZS1zbWFsbCAuY29udGVudCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0Owp9CgoubGlzdC1tZXNzYWdlLXNtYWxsIC51c2VyLW5hbWUgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIG1hcmdpbjogMDsKfQoKLmxpc3QtbWVzc2FnZS1zbWFsbCAubWVzc2FnZS10aXRsZSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9CgoubGlzdC1tZXNzYWdlLXNtYWxsIC5tZXNzYWdlLXRpbWUgewogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKLnRpdGxlLXByb2ZpbGUgewogICAgZm9udC1zaXplOiAyMnB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAudGl0bGUtcHJvZmlsZSB7CiAgICAgICAgZm9udC1zaXplOiAzMHB4OwogICAgfQp9CgoubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLmxpc3QtbWVzc2FnZS1pbm5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAubGlzdC1tZXNzYWdlLWlubmVyIHsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDExNnB4KTsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLm1lc3NhZ2Utc2VjdGlvbi13cmFwcGVyIC5tZXNzYWdlLWlubmVyIHsKICAgICAgICBoZWlnaHQ6IDc3MHB4OwogICAgfQp9CgoubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLmxpc3QtbWVzc2FnZS13cmFwcGVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIHBhZGRpbmc6IDIwcHg7Cn0KCi5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAubGlzdC1tZXNzYWdlLXdyYXBwZXIgLmxpc3QtbWVzc2FnZS1pbm5lciB7CiAgICBtYXJnaW4tbGVmdDogLTIwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IC0yMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLmxpc3QtbWVzc2FnZS13cmFwcGVyIHsKICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgfQogICAgLm1lc3NhZ2Utc2VjdGlvbi13cmFwcGVyIC5saXN0LW1lc3NhZ2Utd3JhcHBlciAubGlzdC1tZXNzYWdlLWlubmVyIHsKICAgICAgICBtYXJnaW4tbGVmdDogLTMwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMzBweDsKICAgIH0KfQoKLm1lc3NhZ2Utc2VjdGlvbi13cmFwcGVyIC5saXN0LW1lc3NhZ2Utd3JhcHBlciAubG9hZG1vcmUtYWN0aW9uIHsKICAgIHBhZGRpbmctdG9wOiA1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAubGlzdC1tZXNzYWdlLXdyYXBwZXIgLmxvYWRtb3JlLW1lc3NhZ2UtYnRuIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAucmVwbGllcy1jb250ZW50IHsKICAgIHdpZHRoOiAxMDAlOwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLm1lc3NhZ2Utc2VjdGlvbi13cmFwcGVyIC5yZXBsaWVzLWNvbnRlbnQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgLXdlYmtpdC1kaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC8qIFNhZmFyaSA2LjErICovCiAgICB9CiAgICAubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLnJlcGxpZXMtY29udGVudD5kaXYgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQp9CgoubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLnJlcGxpZXMtY29udGVudCAuY29udGVudC1ib3gtd2hpdGUgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogMjBweDsKICAgIGhlaWdodDogY2FsYygxMDAlIC0gODFweCk7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAucmVwbGllcy1jb250ZW50IC5jb250ZW50LWJveC13aGl0ZSB7CiAgICAgICAgcGFkZGluZzogMzBweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTIwcHg7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMDFweCk7CiAgICB9CiAgICAubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLnJlcGxpZXMtY29udGVudCAuY29udGVudC1ib3gtd2hpdGUgLnJlcGx5LW1lc3NhZ2UtZm9ybS13cmFwcGVyIHsKICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAzMHB4OwogICAgICAgIHJpZ2h0OiAzMHB4OwogICAgICAgIGJvdHRvbTogMzBweDsKICAgIH0KfQoKLm1lc3NhZ2Utc2VjdGlvbi13cmFwcGVyIC5yZXBsaWVzLWNvbnRlbnQgLnJlY2lwaWVudC1pbmZvIC5tZXNzYWdlLWl0ZW0gewogICAgbWF4LXdpZHRoOiA1NSU7Cn0KCi5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAucmVjaXBpZW50LWluZm8gewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLnJlY2lwaWVudC1pbmZvIHsKICAgICAgICBwYWRkaW5nOiAyNXB4IDMwcHg7CiAgICB9Cn0KCi5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAucmVjaXBpZW50LWluZm8gLnVzZXItbmFtZSB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtYXJnaW46IDNweCAwIDA7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgoubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLnJlY2lwaWVudC1pbmZvIC5tZXNzYWdlLXRpdGxlIHsKICAgIGNvbG9yOiAjNzc3Nzc3Owp9CgoubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLnJlY2lwaWVudC1pbmZvIC5kZWxldGUtbWVzc2FnZS1idG4gewogICAgY29sb3I6ICNlNDQzNDM7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLnJlY2lwaWVudC1pbmZvIC5kZWxldGUtbWVzc2FnZS1idG4gewogICAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICB9Cn0KCi5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAucmVjaXBpZW50LWluZm8gLmRlbGV0ZS1tZXNzYWdlLWJ0biBpIHsKICAgIGZvbnQtc2l6ZTogMTdweDsKICAgIG1hcmdpbi1yaWdodDogNXB4Owp9CgoucnRsIC5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAucmVjaXBpZW50LWluZm8gLmRlbGV0ZS1tZXNzYWdlLWJ0biBpIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAucmVjaXBpZW50LWluZm8gLmRlbGV0ZS1tZXNzYWdlLWJ0bjpob3ZlciwKLm1lc3NhZ2Utc2VjdGlvbi13cmFwcGVyIC5yZWNpcGllbnQtaW5mbyAuZGVsZXRlLW1lc3NhZ2UtYnRuOmZvY3VzIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgoubWVzc2FnZS1zZWN0aW9uLXdyYXBwZXIgLnNlYXJjaC1tZXNzYWdlLWZvcm0gewogICAgcGFkZGluZy1ib3R0b206IDE1cHg7Cn0KCi5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAuc2VhcmNoLW1lc3NhZ2UtZm9ybSAuc2VhcmNoLXdyYXBwZXItbWVzc2FnZSB7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9CgoubGlzdC1vcHRpb25zLWFjdGlvbiB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoubGlzdC1vcHRpb25zLWFjdGlvbj5saSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7Cn0KCi5ydGwgLmxpc3Qtb3B0aW9ucy1hY3Rpb24+bGkgewogICAgbWFyZ2luLWxlZnQ6IDEycHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5saXN0LW9wdGlvbnMtYWN0aW9uPmxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgoucnRsIC5saXN0LW9wdGlvbnMtYWN0aW9uPmxpOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5saXN0LW9wdGlvbnMtYWN0aW9uIGxhYmVsIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5saXN0LW9wdGlvbnMtYWN0aW9uIGxhYmVsOmhvdmVyLAoubGlzdC1vcHRpb25zLWFjdGlvbiBsYWJlbDpmb2N1cyB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmxpc3Qtb3B0aW9ucy1hY3Rpb24gW3R5cGU9InJhZGlvIl0gewogICAgZGlzcGxheTogbm9uZTsKfQoKLmxpc3Qtb3B0aW9ucy1hY3Rpb24gW3R5cGU9InJhZGlvIl06Y2hlY2tlZCtsYWJlbCB7CiAgICBjb2xvcjogI2ZmNWE1ZjsKfQoKLmxpc3QtbWVzc2FnZSB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKfQoKLmxpc3QtbWVzc2FnZSBsaSB7CiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5saXN0LW1lc3NhZ2UgbGkgewogICAgICAgIHBhZGRpbmc6IDEwcHggMzBweDsKICAgIH0KfQoKLmxpc3QtbWVzc2FnZSBsaS51bnJlYWQgLnVzZXItbmFtZSB7CiAgICBjb2xvcjogI2U0NDM0MzsKfQoKLmxpc3QtbWVzc2FnZSBsaS5hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKfQoKLm1lc3NhZ2UtaXRlbSB7CiAgICBjbGVhcjogYm90aDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5tZXNzYWdlLWl0ZW0gZGl2LmF2YXRhciB7CiAgICBsaW5lLWhlaWdodDogNTBweDsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogICAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGZsb2F0OiBsZWZ0OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwp9CgoucnRsIC5tZXNzYWdlLWl0ZW0gZGl2LmF2YXRhciB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5tZXNzYWdlLWl0ZW0gZGl2LmF2YXRhciBpbWcgewogICAgbWFyZ2luOiAwOwp9CgoubWVzc2FnZS1pdGVtIC5jb250ZW50IHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KCi5ydGwgLm1lc3NhZ2UtaXRlbSAuY29udGVudCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiBpbmhlcml0Owp9CgoubWVzc2FnZS1pdGVtIC51c2VyLW5hbWUgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIG1hcmdpbjogM3B4IDAgMDsKfQoKLm1lc3NhZ2UtaXRlbSAubWVzc2FnZS10aW1lIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLnJ0bCAubWVzc2FnZS1pdGVtIC5tZXNzYWdlLXRpbWUgewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLm1lc3NhZ2UtaXRlbSAubWVzc2FnZS10aXRsZSB7CiAgICBjb2xvcjogIzc3Nzc3NzsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5yZXBseS1tZXNzYWdlLWZvcm0td3JhcHBlciAud3JhcHBlci1mb3JtIHsKICAgIHBhZGRpbmc6IDVweCAyMHB4OwogICAgcGFkZGluZy1yaWdodDogMjAwcHg7CiAgICBiYWNrZ3JvdW5kOiAjZjdmN2Y3OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA2cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5yZXBseS1tZXNzYWdlLWZvcm0td3JhcHBlciAud3JhcHBlci1mb3JtIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDMwcHg7CiAgICB9Cn0KCi5ydGwgLnJlcGx5LW1lc3NhZ2UtZm9ybS13cmFwcGVyIC53cmFwcGVyLWZvcm0gewogICAgcGFkZGluZy1sZWZ0OiAyMDBweDsKICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7Cn0KCi5yZXBseS1tZXNzYWdlLWZvcm0td3JhcHBlciAucmVwbHktbWVzc2FnZS1mb3JtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLnJlcGx5LW1lc3NhZ2UtZm9ybS13cmFwcGVyIC5yZXBseS1tZXNzYWdlLWZvcm0gdGV4dGFyZWEgewogICAgaGVpZ2h0OiA1MHB4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICByZXNpemU6IG5vbmU7CiAgICBwYWRkaW5nOiAxMnB4IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoKLnJlcGx5LW1lc3NhZ2UtZm9ybS13cmFwcGVyIC5yZXBseS1tZXNzYWdlLWZvcm0gLnJlcGx5LW1lc3NhZ2UtYnRuIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgcmlnaHQ6IDEwcHg7Cn0KCi5ydGwgLnJlcGx5LW1lc3NhZ2UtZm9ybS13cmFwcGVyIC5yZXBseS1tZXNzYWdlLWZvcm0gLnJlcGx5LW1lc3NhZ2UtYnRuIHsKICAgIGxlZnQ6IDEwcHg7CiAgICByaWdodDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnJlcGx5LW1lc3NhZ2UtZm9ybS13cmFwcGVyIC5yZXBseS1tZXNzYWdlLWZvcm0gLnJlcGx5LW1lc3NhZ2UtYnRuIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTFweCA0MHB4OwogICAgfQp9CgoubGlzdC1yZXBsaWVzIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwp9CgoubGlzdC1yZXBsaWVzIGxpIHsKICAgIG1hcmdpbi1ib3R0b206IDI4cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY2xlYXI6IGJvdGg7Cn0KCi5saXN0LXJlcGxpZXMgbGkubGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiA1MHB4Owp9CgoubGlzdC1yZXBsaWVzIC5hdmF0YXIgewogICAgbGluZS1oZWlnaHQ6IDUwcHg7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmViZWI7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICBmbG9hdDogbGVmdDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogLW1vei1mbGV4OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoKLnJ0bCAubGlzdC1yZXBsaWVzIC5hdmF0YXIgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgoubGlzdC1yZXBsaWVzIC5hdmF0YXIgaW1nIHsKICAgIG1hcmdpbjogMDsKfQoKLmxpc3QtcmVwbGllcyAucmVwbHktY29udGVudCB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZy1sZWZ0OiA4cHg7Cn0KCi5ydGwgLmxpc3QtcmVwbGllcyAucmVwbHktY29udGVudCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7CiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7Cn0KCi5saXN0LXJlcGxpZXMgLnBvc3QtZGF0ZSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBjb2xvcjogIzc3Nzc3NzsKfQoKLmxpc3QtcmVwbGllcyAucG9zdC1jb250ZW50IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDlweCAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICBiYWNrZ3JvdW5kOiAjZWVmMWZmOwogICAgY29sb3I6ICM0ODQ4NDg7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBsaW5lLWhlaWdodDogMTMwJTsKfQoKLmxpc3QtcmVwbGllcyAudXNlci1yZXBseSAucG9zdC1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLmxpc3QtcmVwbGllcyAueW91cnNlbGYtcmVwbHkgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5ydGwgLmxpc3QtcmVwbGllcyAueW91cnNlbGYtcmVwbHkgewogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLmxpc3QtcmVwbGllcy1pbm5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KCi5saXN0LXJlcGxpZXMtaW5uZXIgLmxvYWRtb3JlLWFjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC01cHg7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiAxOwp9CgoubGlzdC1yZXBsaWVzLWlubmVyIC5sb2FkbW9yZS1yZXBsaWVkLWJ0biB7CiAgICBjb2xvcjogIzQ4NDg0ODsKfQoKLmxpc3QtcmVwbGllcy1pbm5lciAubG9hZG1vcmUtcmVwbGllZC1idG46aG92ZXIsCi5saXN0LXJlcGxpZXMtaW5uZXIgLmxvYWRtb3JlLXJlcGxpZWQtYnRuOmZvY3VzIHsKICAgIGNvbG9yOiAjNDg0ODQ4Owp9CgoudXNlci1uYW1lIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIG1hcmdpbjogMCAwIDEwcHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC51c2VyLW5hbWUgewogICAgICAgIG1hcmdpbjogMCAwIDIwcHg7CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAgIC5tZXNzYWdlLXNlY3Rpb24td3JhcHBlciAubWVzc2FnZS1pbm5lciAubGlzdC1tZXNzYWdlLXdyYXBwZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQogICAgLmxpc3QtbWVzc2FnZS1pbm5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOwogICAgfQogICAgLmxpc3QtcmVwbGllcy1pbm5lciB7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDsKICAgIH0KICAgIC50b2dnbGUtbWVzc2FnZS1idG4gewogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBjb2xvcjogIzc5YjUzMDsKICAgICAgICBtYXJnaW46IDAgMCAyMHB4OwogICAgfQogICAgLnRvZ2dsZS1tZXNzYWdlLWJ0biBpIHsKICAgICAgICBtYXJnaW4tbGVmdDogNHB4OwogICAgfQogICAgLnJ0bCAudG9nZ2xlLW1lc3NhZ2UtYnRuIGkgewogICAgICAgIG1hcmdpbi1yaWdodDogNHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgfQogICAgLmZpbHRlci1vcHRpb25zIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50b2dnbGUtbWVzc2FnZS1idG4gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9Cn0KCi5yZXBsaWVzLWNvbnRlbnQsCi5saXN0LW1lc3NhZ2Utd3JhcHBlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5yZXBsaWVzLWNvbnRlbnQ6YmVmb3JlLAoubGlzdC1tZXNzYWdlLXdyYXBwZXI6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSkgdXJsKCIuLi9pbWFnZXMvbG9hZGluZy5naWYiKSBuby1yZXBlYXQgY2VudGVyIDE4MHB4LzMwcHggYXV0bzsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHotaW5kZXg6IDE7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KCi5yZXBsaWVzLWNvbnRlbnQubG9hZGluZzpiZWZvcmUsCi5saXN0LW1lc3NhZ2Utd3JhcHBlci5sb2FkaW5nOmJlZm9yZSB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgouYWdlbnQtdGVhbSAuYWdlbnQtdGh1bWJuYWlsIHsKICAgIHdpZHRoOiA3MHB4Owp9CgouYWdlbnQtdGVhbSAuYWdlbnQtdGh1bWJuYWlsKy5yaWdodC1pbm5lciB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNzBweCk7Cn0KCi5ydGwgLmFnZW50LXRlYW0gLmFnZW50LXRodW1ibmFpbCsucmlnaHQtaW5uZXIgewogICAgcGFkZGluZy1yaWdodDogMjBweDsKICAgIHBhZGRpbmctbGVmdDogaW5oZXJpdDsKfQoKLmFnZW50LXRlYW0gLmVudHJ5LXRpdGxlIHsKICAgIG1hcmdpbjogMCAwIDNweDsKICAgIGZvbnQtc2l6ZTogMThweDsKfQoKLmFnZW50LXRlYW0gLmFnZW50LWluZm8sCi5hZ2VudC10ZWFtIC5hZ2VudC1pbmZvcm1hdGlvbiB7CiAgICB3aWR0aDogMTAwJTsKfQoKLmFnZW5jeS1hZ2VudHMtbGlzdC1pbm5lciAuYWdlbnQtdGVhbSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKfQoKLmFnZW5jeS1hZ2VudHMtbGlzdC1pbm5lciAuYWdlbnQtdGVhbTpsYXN0LWNoaWxkIHsKICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGJvcmRlci1ib3R0b206IDA7Cn0KCi5hZ2VuY3ktYWRkLWFnZW50cy1mb3JtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmFnZW5jeS1hZGQtYWdlbnRzLWZvcm06YmVmb3JlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSkgdXJsKCIuLi9pbWFnZXMvbG9hZGluZy5naWYiKSBuby1yZXBlYXQgY2VudGVyIDEwMHB4LzMwcHggYXV0bzsKICAgIG9wYWNpdHk6IDA7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHotaW5kZXg6IDE7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KCi5hZ2VuY3ktYWRkLWFnZW50cy1mb3JtLmxvYWRpbmc6YmVmb3JlIHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5hZ2VuY3ktYWRkLWFnZW50cy1mb3JtIC50ZWFtLWFnZW50LXdyYXBwZXIgewogICAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQoKLnRlYW0tYWdlbnQtaW5uZXIsCi50ZWFtLWFnZW50LWxpc3QtaW5uZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLW1vei1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLW1zLWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtby1hbGlnbi1pdGVtczogY2VudGVyOwp9CgoudGVhbS1hZ2VudC1pbm5lciAudGVhbS1hZ2VudC1pbWcsCi50ZWFtLWFnZW50LWlubmVyIC50ZWFtLWFnZW50LWxpc3QtaW1nLAoudGVhbS1hZ2VudC1saXN0LWlubmVyIC50ZWFtLWFnZW50LWltZywKLnRlYW0tYWdlbnQtbGlzdC1pbm5lciAudGVhbS1hZ2VudC1saXN0LWltZyB7CiAgICB3aWR0aDogODBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7Cn0KCi5ydGwgLnRlYW0tYWdlbnQtaW5uZXIgLnRlYW0tYWdlbnQtaW1nLAoucnRsIC50ZWFtLWFnZW50LWlubmVyIC50ZWFtLWFnZW50LWxpc3QtaW1nLAoucnRsIC50ZWFtLWFnZW50LWxpc3QtaW5uZXIgLnRlYW0tYWdlbnQtaW1nLAoucnRsIC50ZWFtLWFnZW50LWxpc3QtaW5uZXIgLnRlYW0tYWdlbnQtbGlzdC1pbWcgewogICAgcGFkZGluZy1sZWZ0OiAxMnB4OwogICAgcGFkZGluZy1yaWdodDogaW5oZXJpdDsKfQoKLnRlYW0tYWdlbnQtaW5uZXIgLnRlYW0tYWdlbnQtY29udGVudCwKLnRlYW0tYWdlbnQtaW5uZXIgLnRlYW0tYWdlbnQtbGlzdC1jb250ZW50LAoudGVhbS1hZ2VudC1saXN0LWlubmVyIC50ZWFtLWFnZW50LWNvbnRlbnQsCi50ZWFtLWFnZW50LWxpc3QtaW5uZXIgLnRlYW0tYWdlbnQtbGlzdC1jb250ZW50IHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA4MHB4KTsKfQoKLnRlYW0tYWdlbnQtaW5uZXIgLnRlYW0tYWdlbnQtcmVtb3ZlLAoudGVhbS1hZ2VudC1saXN0LWlubmVyIC50ZWFtLWFnZW50LXJlbW92ZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U0NDM0MzsKICAgIG9wYWNpdHk6IDAuOTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT05MCk7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAycHggN3B4OwogICAgZm9udC1zaXplOiAxMHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKfQoKLnJ0bCAudGVhbS1hZ2VudC1pbm5lciAudGVhbS1hZ2VudC1yZW1vdmUsCi5ydGwgLnRlYW0tYWdlbnQtbGlzdC1pbm5lciAudGVhbS1hZ2VudC1yZW1vdmUgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi50ZWFtLWFnZW50LWlubmVyIC50ZWFtLWFnZW50LXJlbW92ZTpob3ZlciwKLnRlYW0tYWdlbnQtaW5uZXIgLnRlYW0tYWdlbnQtcmVtb3ZlOmZvY3VzLAoudGVhbS1hZ2VudC1saXN0LWlubmVyIC50ZWFtLWFnZW50LXJlbW92ZTpob3ZlciwKLnRlYW0tYWdlbnQtbGlzdC1pbm5lciAudGVhbS1hZ2VudC1yZW1vdmU6Zm9jdXMgewogICAgb3BhY2l0eTogMTsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOwp9CgouY2hhbmdlLXByb2ZpbGUtZm9ybSB7CiAgICBtYXJnaW46IDVweCAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuY2hhbmdlLXByb2ZpbGUtZm9ybSAuZm9ybS1ncm91cCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIH0KfQoKLmNoYW5nZS1wcm9maWxlLWZvcm0gLmxlZnQtaW5uZXIgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoKLmNoYW5nZS1wcm9maWxlLWZvcm0gLnN1YiB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtYXJnaW46IDAgMCAxMHB4Owp9CgouY2hhbmdlLXByb2ZpbGUtZm9ybSBsYWJlbCB7CiAgICBmb250LXNpemU6IDE2cHg7Cn0KCiN3cC1wcml2YXRlLW1lc3NhZ2UtcG9wdXAtbWVzc2FnZSwKI3dwLXJlYWxlc3RhdGUtcG9wdXAtbWVzc2FnZSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiA5OTsKICAgIHRvcDogNDAlOwogICAgcmlnaHQ6IDA7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKfQoKLnJ0bCAjd3AtcHJpdmF0ZS1tZXNzYWdlLXBvcHVwLW1lc3NhZ2UsCi5ydGwgI3dwLXJlYWxlc3RhdGUtcG9wdXAtbWVzc2FnZSB7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IGF1dG87Cn0KCiN3cC1wcml2YXRlLW1lc3NhZ2UtcG9wdXAtbWVzc2FnZSAuYWxlcnQsCiN3cC1yZWFsZXN0YXRlLXBvcHVwLW1lc3NhZ2UgLmFsZXJ0IHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KCi53aWRnZXQtdXNlci1wYWNrYWdlcyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogICAgLW8tYm9yZGVyLXJhZGl1czogNnB4Owp9CgoudXNlci10cmFuc2FjdGlvbnMgewogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyOiBub25lOwp9CgoudXNlci10cmFuc2FjdGlvbnMgdGhlYWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI0MzI0YTsKICAgIGNvbG9yOiAjZmZmOwp9CgoudXNlci10cmFuc2FjdGlvbnMgdGQgewogICAgYm9yZGVyOiAwOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC51c2VyLXRyYW5zYWN0aW9ucyB0ZCB7CiAgICAgICAgcGFkZGluZzogMTVweDsKICAgIH0KfQoKLnVzZXItdHJhbnNhY3Rpb25zIHRyOmxhc3QtY2hpbGQgdGQgewogICAgYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgoudXNlci10cmFuc2FjdGlvbnMgLmRhdGUgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLnVzZXItdHJhbnNhY3Rpb25zIC50aXRsZSB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgoudXNlci10cmFuc2FjdGlvbnMgLmlkX3Byb3BlcnR5IHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KCi51c2VyLXRyYW5zYWN0aW9ucyAud29vY29tbWVyY2UtUHJpY2UtYW1vdW50IHsKICAgIGNvbG9yOiAjZmY1YTVmOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKfQoKLnVzZXItdHJhbnNhY3Rpb25zIHRoZWFkIHRkIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgoudXNlci10cmFuc2FjdGlvbnMgLmFjdGlvbiB7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgoudXNlci10cmFuc2FjdGlvbnMgLnN1Y2Nlc3MgewogICAgY29sb3I6ICM3OWI1MzA7Cn0KCi51c2VyLXRyYW5zYWN0aW9ucyAucGVuZGluZyB7CiAgICBjb2xvcjogI2YwYWQ0ZTsKfQoKLnNpZGViYXIgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSAuY29udGVudC1tYWluLWlubmVyIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7Cn0KCi5zaWRlYmFyIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gLm1haW4taW5uZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5zaWRlYmFyIGZvcm0uZm9ybS1zZWFyY2ggLnNlYXJjaC1mb3JtLWlubmVyIC5hZHZhbmNlLXNlYXJjaC13cmFwcGVyIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7Cn0KCi5zaWRlYmFyIGZvcm0uZm9ybS1zZWFyY2ggLmFkdmFuY2Utc2VhcmNoLXdyYXBwZXItZmllbGRzIHsKICAgIHBhZGRpbmc6IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAuc2lkZWJhciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5mb3JtLWdyb3VwLAogICAgLnNpZGViYXIgLmZpbHRlci1hZ2VudC1mb3JtIC5mb3JtLWdyb3VwIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgfQp9Cgouc2lkZWJhciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5mb3JtLWdyb3VwOmxhc3QtY2hpbGQsCi5zaWRlYmFyIC5maWx0ZXItYWdlbnQtZm9ybSAuZm9ybS1ncm91cDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5zaWRlYmFyIC5maWx0ZXItYWdlbmN5LWZvcm0gLnNlYXJjaF9kaXN0YW5jZV93cmFwcGVyLAouc2lkZWJhciAuZmlsdGVyLWFnZW50LWZvcm0gLnNlYXJjaF9kaXN0YW5jZV93cmFwcGVyIHsKICAgIG1hcmdpbjogMjBweCAwOwp9CgouZmlsdGVyLWFnZW5jeS1mb3JtIC5idXR0b24sCi5maWx0ZXItYWdlbnQtZm9ybSAuYnV0dG9uIHsKICAgIHdpZHRoOiAxMDAlOwp9CgouZmlsdGVyLWFnZW5jeS1mb3JtIGxhYmVsLAouZmlsdGVyLWFnZW50LWZvcm0gbGFiZWwgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmZpbHRlci1hZ2VuY3ktZm9ybSAuYWN0aW9uLWxvY2F0aW9uLAouZmlsdGVyLWFnZW50LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5maWx0ZXItYWdlbmN5LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuY2xlYXItbG9jYXRpb24sCi5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5jbGVhci1sb2NhdGlvbiB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTRweDsKICAgIHJpZ2h0OiAxNHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGNvbG9yOiAjZTQ0MzQzOwogICAgei1pbmRleDogMjsKfQoKLnJ0bCAuZmlsdGVyLWFnZW5jeS1mb3JtIC5hY3Rpb24tbG9jYXRpb24gLmNsZWFyLWxvY2F0aW9uLAoucnRsIC5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5jbGVhci1sb2NhdGlvbiB7CiAgICBsZWZ0OiAxNHB4OwogICAgcmlnaHQ6IGF1dG87Cn0KCi5maWx0ZXItYWdlbmN5LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZSwKLmZpbHRlci1hZ2VudC1mb3JtIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWUgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0IDBzOwogICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQgMHM7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEycHg7CiAgICByaWdodDogMTRweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIG9wYWNpdHk6IDAuNjsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT02MCk7Cn0KCi5ydGwgLmZpbHRlci1hZ2VuY3ktZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5maW5kLW1lLAoucnRsIC5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5maW5kLW1lIHsKICAgIGxlZnQ6IDE0cHg7CiAgICByaWdodDogYXV0bzsKfQoKLmZpbHRlci1hZ2VuY3ktZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5maW5kLW1lOmhvdmVyLAouZmlsdGVyLWFnZW5jeS1mb3JtIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWU6Zm9jdXMsCi5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5maW5kLW1lOmhvdmVyLAouZmlsdGVyLWFnZW50LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZTpmb2N1cyB7CiAgICBvcGFjaXR5OiAxOwogICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7Cn0KCi5maWx0ZXItYWdlbmN5LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZTpiZWZvcmUsCi5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5maW5kLW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTAiOwogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7Cn0KCi5maWx0ZXItYWdlbmN5LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZS5sb2FkaW5nLAouZmlsdGVyLWFnZW50LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZS5sb2FkaW5nIHsKICAgIGFuaW1hdGlvbjogcm90YXRlIDcwMG1zIGxpbmVhciAwcyBub3JtYWwgbm9uZSBpbmZpbml0ZSBydW5uaW5nOwogICAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0ZSA3MDBtcyBsaW5lYXIgMHMgbm9ybWFsIG5vbmUgaW5maW5pdGUgcnVubmluZzsKfQoKLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyLAouYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIHsKICAgIHBhZGRpbmc6IDA7Cn0KCi5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtLAouYWdlbmNpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtLAouYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0sCi5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtIHsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7Cn0KCi5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtOmFmdGVyLAouYWdlbmNpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtOmFmdGVyLAouYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm06YWZ0ZXIsCi5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwogICAgY29udGVudDogIiAiOwogICAgZGlzcGxheTogdGFibGU7Cn0KCi5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtPmRpdiwKLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybT5kaXYsCi5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybT5kaXYsCi5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtPmRpdiB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKfQoKLnJ0bCAuYWdlbmNpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybT5kaXYsCi5ydGwgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybT5kaXYsCi5ydGwgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtPmRpdiwKLnJ0bCAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybT5kaXYgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAgIC5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5mb3JtLWdyb3VwLXRpdGxlLAogICAgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuZm9ybS1ncm91cC10aXRsZSwKICAgIC5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybSAuZm9ybS1ncm91cC10aXRsZSwKICAgIC5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtIC5mb3JtLWdyb3VwLXRpdGxlIHsKICAgICAgICB3aWR0aDogMzIlOwogICAgfQogICAgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uLAogICAgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuZm9ybS1ncm91cC1jZW50ZXItbG9jYXRpb24sCiAgICAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uLAogICAgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIHsKICAgICAgICB3aWR0aDogNTAlOwogICAgfQogICAgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5mb3JtLWdyb3VwLWlubmVyLAogICAgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuZm9ybS1ncm91cC1jZW50ZXItbG9jYXRpb24gLmZvcm0tZ3JvdXAtaW5uZXIsCiAgICAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5mb3JtLWdyb3VwLWlubmVyLAogICAgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5mb3JtLWdyb3VwLWlubmVyIHsKICAgICAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIH0KICAgIC5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5mb3JtLWdyb3VwLWNlbnRlci1sb2NhdGlvbiAuc2VhcmNoX2Rpc3RhbmNlX3dyYXBwZXIsCiAgICAuYWdlbmNpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybSAuZm9ybS1ncm91cC1jZW50ZXItbG9jYXRpb24gLmFjdGlvbi1sb2NhdGlvbiwKICAgIC5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5zZWFyY2hfZGlzdGFuY2Vfd3JhcHBlciwKICAgIC5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5hY3Rpb24tbG9jYXRpb24sCiAgICAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5zZWFyY2hfZGlzdGFuY2Vfd3JhcHBlciwKICAgIC5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybSAuZm9ybS1ncm91cC1jZW50ZXItbG9jYXRpb24gLmFjdGlvbi1sb2NhdGlvbiwKICAgIC5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtIC5mb3JtLWdyb3VwLWNlbnRlci1sb2NhdGlvbiAuc2VhcmNoX2Rpc3RhbmNlX3dyYXBwZXIsCiAgICAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuZm9ybS1ncm91cC1jZW50ZXItbG9jYXRpb24gLmFjdGlvbi1sb2NhdGlvbiB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICAgICAgd2lkdGg6IDUwJTsKICAgICAgICBmbG9hdDogbGVmdDsKICAgIH0KICAgIC5ydGwgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5zZWFyY2hfZGlzdGFuY2Vfd3JhcHBlciwKICAgIC5ydGwgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5hY3Rpb24tbG9jYXRpb24sCiAgICAucnRsIC5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5zZWFyY2hfZGlzdGFuY2Vfd3JhcHBlciwKICAgIC5ydGwgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuZm9ybS1ncm91cC1jZW50ZXItbG9jYXRpb24gLmFjdGlvbi1sb2NhdGlvbiwKICAgIC5ydGwgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5mb3JtLWdyb3VwLWNlbnRlci1sb2NhdGlvbiAuc2VhcmNoX2Rpc3RhbmNlX3dyYXBwZXIsCiAgICAucnRsIC5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybSAuZm9ybS1ncm91cC1jZW50ZXItbG9jYXRpb24gLmFjdGlvbi1sb2NhdGlvbiwKICAgIC5ydGwgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5zZWFyY2hfZGlzdGFuY2Vfd3JhcHBlciwKICAgIC5ydGwgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmZvcm0tZ3JvdXAtY2VudGVyLWxvY2F0aW9uIC5hY3Rpb24tbG9jYXRpb24gewogICAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICAgIC5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5mb3JtLWdyb3VwLXN1Ym1pdCwKICAgIC5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmZvcm0tZ3JvdXAtc3VibWl0LAogICAgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5mb3JtLWdyb3VwLXN1Ym1pdCwKICAgIC5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtIC5mb3JtLWdyb3VwLXN1Ym1pdCB7CiAgICAgICAgd2lkdGg6IDE4JTsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgICAuYWdlbmNpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5jbGVhci1sb2NhdGlvbiwKICAgIC5hZ2VuY2llcy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWUsCiAgICAuYWdlbmNpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtIC5hY3Rpb24tbG9jYXRpb24gLmNsZWFyLWxvY2F0aW9uLAogICAgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5maW5kLW1lLAogICAgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5hY3Rpb24tbG9jYXRpb24gLmNsZWFyLWxvY2F0aW9uLAogICAgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWUsCiAgICAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5jbGVhci1sb2NhdGlvbiwKICAgIC5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtIC5hY3Rpb24tbG9jYXRpb24gLmZpbmQtbWUgewogICAgICAgIHJpZ2h0OiAzMHB4OwogICAgfQogICAgLnJ0bCAuYWdlbmNpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5jbGVhci1sb2NhdGlvbiwKICAgIC5ydGwgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZSwKICAgIC5ydGwgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5jbGVhci1sb2NhdGlvbiwKICAgIC5ydGwgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5maW5kLW1lLAogICAgLnJ0bCAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuY2xlYXItbG9jYXRpb24sCiAgICAucnRsIC5hZ2VudHMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VuY3ktZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5maW5kLW1lLAogICAgLnJ0bCAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuYWN0aW9uLWxvY2F0aW9uIC5jbGVhci1sb2NhdGlvbiwKICAgIC5ydGwgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLmFjdGlvbi1sb2NhdGlvbiAuZmluZC1tZSB7CiAgICAgICAgbGVmdDogMzBweDsKICAgICAgICByaWdodDogYXV0bzsKICAgIH0KfQoKLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLnVpLXNsaWRlci1ob3Jpem9udGFsLAouYWdlbmNpZXMtZmlsdGVyLXRvcC1zaWRlYmFyLXdyYXBwZXIgLmZpbHRlci1hZ2VudC1mb3JtIC51aS1zbGlkZXItaG9yaXpvbnRhbCwKLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW5jeS1mb3JtIC51aS1zbGlkZXItaG9yaXpvbnRhbCwKLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLnVpLXNsaWRlci1ob3Jpem9udGFsIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkgewogICAgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLnNlYXJjaF9kaXN0YW5jZV93cmFwcGVyLAogICAgLmFnZW5jaWVzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbnQtZm9ybSAuc2VhcmNoX2Rpc3RhbmNlX3dyYXBwZXIsCiAgICAuYWdlbnRzLWZpbHRlci10b3Atc2lkZWJhci13cmFwcGVyIC5maWx0ZXItYWdlbmN5LWZvcm0gLnNlYXJjaF9kaXN0YW5jZV93cmFwcGVyLAogICAgLmFnZW50cy1maWx0ZXItdG9wLXNpZGViYXItd3JhcHBlciAuZmlsdGVyLWFnZW50LWZvcm0gLnNlYXJjaF9kaXN0YW5jZV93cmFwcGVyIHsKICAgICAgICBtYXJnaW46IDE1cHggMCAxMHB4OwogICAgfQp9CgoudG9wLWluZm8td2lkZ2V0IC50aXRsZSB7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICBtYXJnaW46IDA7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC50b3AtaW5mby13aWRnZXQgLnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDMwcHg7CiAgICB9Cn0KCi50b3AtaW5mby13aWRnZXQgLmRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKfQoKI2NvbXBhcmUtc2lkZWJhciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIHotaW5kZXg6IDg7CiAgICB3aWR0aDogMzQwcHg7CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgbWF4LXdpZHRoOiA4NSU7CiAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiA0MHB4IDIwcHggNzBweDsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgI2ZmNWE1ZjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQgMHM7CiAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dCAwczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0IDBzOwogICAgb3BhY2l0eTogMDsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKI2NvbXBhcmUtc2lkZWJhci5hY3RpdmUgewogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKfQoKI2NvbXBhcmUtc2lkZWJhci5vcGVuIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKfQoKI2NvbXBhcmUtc2lkZWJhciAucHJvcGVydHktbGlzdC1zaW1wbGUgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKI2NvbXBhcmUtc2lkZWJhciAudGl0bGUgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgbWFyZ2luOiAwOwogICAgaGVpZ2h0OiA1MHB4Owp9CgojY29tcGFyZS1zaWRlYmFyIC5jb21wYXJlLXNpZGViYXItaW5uZXIgewogICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA1MHB4KTsKfQoKI2NvbXBhcmUtc2lkZWJhciAuY29tcGFyZS1hY3Rpb25zIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgojY29tcGFyZS1zaWRlYmFyIC5jb21wYXJlLWFjdGlvbnMgLmJ0biB7CiAgICBib3JkZXI6IDA7Cn0KCiNjb21wYXJlLXNpZGViYXIgLmNvbXBhcmUtbGlzdCB7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KCiNjb21wYXJlLXNpZGViYXIgLmNvbXBhcmUtc2lkZWJhci1idG4gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1NSU7CiAgICByaWdodDogMTAwJTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiA1cHggMTVweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDsKICAgIC1tb3otdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAwOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgNnB4IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwIDAgNnB4IDZweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgI2NvbXBhcmUtc2lkZWJhciAuY29tcGFyZS1zaWRlYmFyLWJ0biB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgfQp9Cgp1bC5tZXNzYWdlcyB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKfQoKLnZhbHVhdGlvbi1pdGVtIC5wcm9ncmVzcyB7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgICAudmFsdWF0aW9uLWl0ZW0gLnByb2dyZXNzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgfQp9CgoudmFsdWF0aW9uLWl0ZW0gLnByb2dyZXNzLWJhciB7CiAgICBsaW5lLWhlaWdodDogMTBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjVhNWY7Cn0KCi52YWx1YXRpb24taXRlbSAucGVyY2VudGFnZS12YWx1YXRpb24sCi52YWx1YXRpb24taXRlbSAudmFsdWF0aW9uLWxhYmVsIHsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCi52YWx1YXRpb24taXRlbTpsYXN0LWNoaWxkIC5wcm9ncmVzcyB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgoucHJvcGVydHktcHVibGljLWZhY2lsaXRpZXMgewogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAucHJvcGVydHktcHVibGljLWZhY2lsaXRpZXMgLnByb3BlcnR5LXB1YmxpYy1mYWNpbGl0eS13cmFwcGVyIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICAgIHdpZHRoOiA1MCU7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICB9CiAgICAucnRsIC5wcm9wZXJ0eS1wdWJsaWMtZmFjaWxpdGllcyAucHJvcGVydHktcHVibGljLWZhY2lsaXR5LXdyYXBwZXIgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICAgIC5wcm9wZXJ0eS1wdWJsaWMtZmFjaWxpdGllcz4uY2xlYXJmaXggewogICAgICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogICAgfQp9CgoucHJvcGVydHktcHVibGljLWZhY2lsaXRpZXMgLnByb3BlcnR5LXB1YmxpYy1mYWNpbGl0eS1pbmZvIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KCi5wcm9wZXJ0eS1wdWJsaWMtZmFjaWxpdHkgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWZsZXg7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7Cn0KCi5wcm9wZXJ0eS1wdWJsaWMtZmFjaWxpdHkgLnByb3BlcnR5LXB1YmxpYy1mYWNpbGl0eS10aXRsZSB7CiAgICBtaW4td2lkdGg6IDExMHB4Owp9CgouZW5lcmd5LWdyb3VwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHBhZGRpbmc6IDVweCAwOwp9CgouZW5lcmd5LWdyb3VwIC5pbmRpY2F0b3ItZW5lcmd5IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgYmFja2dyb3VuZDogaW5oZXJpdDsKICAgIGJvdHRvbTogMTAwJTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGxlZnQ6IDA7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDNweDsKfQoKLnJ0bCAuZW5lcmd5LWdyb3VwIC5pbmRpY2F0b3ItZW5lcmd5IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgoucnRsIC5lbmVyZ3ktZ3JvdXAgLmluZGljYXRvci1lbmVyZ3kgewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvOwp9CgouZW5lcmd5LWdyb3VwIC5pbmRpY2F0b3ItZW5lcmd5OmJlZm9yZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICB3aWR0aDogMTBweDsKICAgIGhlaWdodDogMTBweDsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm9yZGVyLXdpZHRoOiA1cHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjZmZmICNmZmY7CiAgICBsZWZ0OiAxMnB4OwogICAgdG9wOiAxMDAlOwp9CgoucnRsIC5lbmVyZ3ktZ3JvdXAgLmluZGljYXRvci1lbmVyZ3k6YmVmb3JlIHsKICAgIHJpZ2h0OiAxMnB4OwogICAgbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAuZW5lcmd5LWdyb3VwIC5pbmRpY2F0b3ItZW5lcmd5OmJlZm9yZSB7CiAgICAgICAgbGVmdDogMjhweDsKICAgIH0KICAgIC5ydGwgLmVuZXJneS1ncm91cCAuaW5kaWNhdG9yLWVuZXJneTpiZWZvcmUgewogICAgICAgIHJpZ2h0OiAyOHB4OwogICAgICAgIGxlZnQ6IGF1dG87CiAgICB9Cn0KCi5lbmVyZ3ktaW5uZXIgewogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmVuZXJneS1pbm5lcj5kaXYgewogICAgd2lkdGg6IDEwMCU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwp9CgoucHJvcGVydHktZGV0YWlsLWVuZXJneSAudGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogNjBweCAhaW1wb3J0YW50Owp9CgouZW5lcmd5LWFwbHVzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwZDc2NmU7Cn0KCi5lbmVyZ3ktYSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTA4ZDgzOwp9CgouZW5lcmd5LWIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzE0YjM4MDsKfQoKLmVuZXJneS1jIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM4NGM4NjY7Cn0KCi5lbmVyZ3ktZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmJjOTQ4Owp9CgouZW5lcmd5LWUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjYTc4ZjsKfQoKLmVuZXJneS1lfi5lbmVyZ3ktZ3JvdXAgLmluZGljYXRvci1lbmVyZ3kgewogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAwOwp9CgoucnRsIC5lbmVyZ3ktZX4uZW5lcmd5LWdyb3VwIC5pbmRpY2F0b3ItZW5lcmd5IHsKICAgIHJpZ2h0OiBhdXRvOwogICAgbGVmdDogYXV0bzsKfQoKLnJ0bCAuZW5lcmd5LWV+LmVuZXJneS1ncm91cCAuaW5kaWNhdG9yLWVuZXJneSB7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IGF1dG87Cn0KCi5lbmVyZ3ktZX4uZW5lcmd5LWdyb3VwIC5pbmRpY2F0b3ItZW5lcmd5OmJlZm9yZSB7CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IDEycHg7Cn0KCi5ydGwgLmVuZXJneS1lfi5lbmVyZ3ktZ3JvdXAgLmluZGljYXRvci1lbmVyZ3k6YmVmb3JlIHsKICAgIHJpZ2h0OiBhdXRvOwogICAgbGVmdDogYXV0bzsKfQoKLnJ0bCAuZW5lcmd5LWV+LmVuZXJneS1ncm91cCAuaW5kaWNhdG9yLWVuZXJneTpiZWZvcmUgewogICAgbGVmdDogMTJweDsKICAgIHJpZ2h0OiBhdXRvOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5lbmVyZ3ktZX4uZW5lcmd5LWdyb3VwIC5pbmRpY2F0b3ItZW5lcmd5OmJlZm9yZSB7CiAgICAgICAgcmlnaHQ6IDI4cHg7CiAgICB9CiAgICAucnRsIC5lbmVyZ3ktZX4uZW5lcmd5LWdyb3VwIC5pbmRpY2F0b3ItZW5lcmd5OmJlZm9yZSB7CiAgICAgICAgbGVmdDogMjhweDsKICAgICAgICByaWdodDogYXV0bzsKICAgIH0KfQoKLmVuZXJneS1mIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmOThkNTk7Cn0KCi5lbmVyZ3ktZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWI0MTY0Owp9CgouZW5lcmd5LWggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U5MmE1MTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAuZW5lcmd5LWMsCiAgICAuZW5lcmd5LWQsCiAgICAuZW5lcmd5LWUgewogICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICB9CiAgICAuZW5lcmd5LWMgLmluZGljYXRvci1lbmVyZ3ksCiAgICAuZW5lcmd5LWQgLmluZGljYXRvci1lbmVyZ3ksCiAgICAuZW5lcmd5LWUgLmluZGljYXRvci1lbmVyZ3kgewogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB9CiAgICAucnRsIC5lbmVyZ3ktYyAuaW5kaWNhdG9yLWVuZXJneSwKICAgIC5ydGwgLmVuZXJneS1kIC5pbmRpY2F0b3ItZW5lcmd5LAogICAgLnJ0bCAuZW5lcmd5LWUgLmluZGljYXRvci1lbmVyZ3kgewogICAgICAgIHJpZ2h0OiA1MCU7CiAgICAgICAgbGVmdDogYXV0bzsKICAgIH0KICAgIC5lbmVyZ3ktYyAuaW5kaWNhdG9yLWVuZXJneTpiZWZvcmUsCiAgICAuZW5lcmd5LWQgLmluZGljYXRvci1lbmVyZ3k6YmVmb3JlLAogICAgLmVuZXJneS1lIC5pbmRpY2F0b3ItZW5lcmd5OmJlZm9yZSB7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAtNXB4OwogICAgfQogICAgLnJ0bCAuZW5lcmd5LWMgLmluZGljYXRvci1lbmVyZ3k6YmVmb3JlLAogICAgLnJ0bCAuZW5lcmd5LWQgLmluZGljYXRvci1lbmVyZ3k6YmVmb3JlLAogICAgLnJ0bCAuZW5lcmd5LWUgLmluZGljYXRvci1lbmVyZ3k6YmVmb3JlIHsKICAgICAgICByaWdodDogNTAlOwogICAgICAgIGxlZnQ6IGF1dG87CiAgICB9CiAgICAucnRsIC5lbmVyZ3ktYyAuaW5kaWNhdG9yLWVuZXJneTpiZWZvcmUsCiAgICAucnRsIC5lbmVyZ3ktZCAuaW5kaWNhdG9yLWVuZXJneTpiZWZvcmUsCiAgICAucnRsIC5lbmVyZ3ktZSAuaW5kaWNhdG9yLWVuZXJneTpiZWZvcmUgewogICAgICAgIG1hcmdpbi1yaWdodDogLTVweDsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgIH0KICAgIC5lbmVyZ3ktYyAuaW5kaWNhdG9yLWVuZXJneTpiZWZvcmUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAtNDBweDsKICAgIH0KICAgIC5ydGwgLmVuZXJneS1jIC5pbmRpY2F0b3ItZW5lcmd5OmJlZm9yZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtNDBweDsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgIH0KICAgIC5lbmVyZ3ktZSAuaW5kaWNhdG9yLWVuZXJneTpiZWZvcmUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwogICAgfQogICAgLnJ0bCAuZW5lcmd5LWUgLmluZGljYXRvci1lbmVyZ3k6YmVmb3JlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDMwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9Cn0KCi5wcmludC1kZXRhaWwgewogICAgcGFkZGluZzogMTVweCAzMHB4OwogICAgbWFyZ2luOiBhdXRvOwogICAgbWF4LXdpZHRoOiAxMDAwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoucHJpbnQtZGV0YWlsIC50aXRsZS1pbm5lciwKLnByaW50LWRldGFpbCBoMyB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBtYXJnaW46IDAgMCAyMHB4Owp9CgoucHJpbnQtZGV0YWlsPmRpdiB7CiAgICBtYXJnaW4tYm90dG9tOiA0MHB4Owp9CgoucHJpbnQtZGV0YWlsIC5wcmludC1oZWFkZXItdG9wIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi5wcmludC1sb2dvIHsKICAgIG1heC13aWR0aDogMjgwcHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogYXV0bzsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnByaW50LWxvZ28gLnRhZy1saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi10b3A6IDEwcHg7Cn0KCi5wcmludC1oZWFkZXItbWlkZGxlIHsKICAgIHBhZGRpbmc6IDE1cHggMDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5wcmludC1oZWFkZXItbWlkZGxlIGgxIHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMzBweDsKfQoKLnByaW50LWhlYWRlci1taWRkbGUgLnByaW50LWhlYWRlci1taWRkbGUtcmlnaHQgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5ydGwgLnByaW50LWhlYWRlci1taWRkbGUgLnByaW50LWhlYWRlci1taWRkbGUtcmlnaHQgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5wcmludC1tYWluLWltYWdlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLnByaW50LW1haW4taW1hZ2UgLnFyLWltYWdlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAwOwogICAgei1pbmRleDogMTsKfQoKLnJ0bCAucHJpbnQtbWFpbi1pbWFnZSAucXItaW1hZ2UgewogICAgbGVmdDogMDsKICAgIHJpZ2h0OiBhdXRvOwp9CgoucHJpbnQtYmxvY2sgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIG1hcmdpbjogMDsKfQoKLnByaW50LWJsb2NrIC5hZ2VudC1tZWRpYSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otZmxleDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIHdpZHRoOiAxMDAlOwp9CgoucHJpbnQtYmxvY2sgLmFnZW50LW1lZGlhIC5tZWRpYS1pbWFnZS1sZWZ0IHsKICAgIHdpZHRoOiAxMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7Cn0KCi5ydGwgLnByaW50LWJsb2NrIC5hZ2VudC1tZWRpYSAubWVkaWEtaW1hZ2UtbGVmdCB7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0Owp9CgoucHJpbnQtYmxvY2sgLmFnZW50LW1lZGlhIC5tZWRpYS1pbWFnZS1sZWZ0IC5tZWRpYS1ib2R5LXJpZ2h0IHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMjBweCk7Cn0KCi5wcmludC1nYWxsZXJ5IC5wcmludC1nYWxsZXJ5LWltYWdlIHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KCi8qIDEyLiByZXNwb25zaXZlICovCgovKgoqICBSZXNwb25zaXZlCiovCgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5oaWRkZW4tZG90cyAuc2xpY2stZG90cyB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTQwMHB4KSB7CiAgICAuY29sLWN0LTYgewogICAgICAgIHdpZHRoOiA1MCU7CiAgICB9CiAgICAuY29sLWN0LTYubGctY2xlYXJmaXgubWQtY2xlYXJmaXggewogICAgICAgIGNsZWFyOiBub25lOwogICAgfQogICAgLmNvbC1jdC02Om50aC1jaGlsZCgybisxKSB7CiAgICAgICAgY2xlYXI6IGJvdGggIWltcG9ydGFudDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLmxnLWNsZWFyZml4IHsKICAgICAgICBjbGVhcjogYm90aDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgICAubWQtY2xlYXJmaXggewogICAgICAgIGNsZWFyOiBib3RoOwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogICAgLnNtLWNsZWFyZml4IHsKICAgICAgICBjbGVhcjogYm90aDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDFweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAueHMtY2xlYXJmaXggewogICAgICAgIGNsZWFyOiBib3RoOwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgICAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyOmFmdGVyLAogICAgLmFnZW5jaWVzLW9yZGVyaW5nLXdyYXBwZXI6YWZ0ZXIsCiAgICAuYWdlbnRzLW9yZGVyaW5nLXdyYXBwZXI6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIGRpc3BsYXk6IHRhYmxlOwogICAgICAgIGNsZWFyOiBib3RoOwogICAgfQogICAgLnByb3BlcnRpZXMtb3JkZXJpbmctd3JhcHBlcj5kaXYsCiAgICAuYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlcj5kaXYsCiAgICAuYWdlbnRzLW9yZGVyaW5nLXdyYXBwZXI+ZGl2IHsKICAgICAgICB3aWR0aDogNTAlOwogICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgfQogICAgLnJ0bCAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyPmRpdiwKICAgIC5ydGwgLmFnZW5jaWVzLW9yZGVyaW5nLXdyYXBwZXI+ZGl2LAogICAgLnJ0bCAuYWdlbnRzLW9yZGVyaW5nLXdyYXBwZXI+ZGl2IHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICB9CiAgICAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyPmRpdjpudGgtY2hpbGQoMm4rMSksCiAgICAuYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlcj5kaXY6bnRoLWNoaWxkKDJuKzEpLAogICAgLmFnZW50cy1vcmRlcmluZy13cmFwcGVyPmRpdjpudGgtY2hpbGQoMm4rMSkgewogICAgICAgIGNsZWFyOiBib3RoOwogICAgfQogICAgLmFnZW50LWRldGFpbC1hZ2VudHMgLmFnZW50LWxpc3QgewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICB9CiAgICAubGlzdC1yZXBsaWVzLWlubmVyIHsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDYwcHgpOwogICAgfQogICAgW2NsYXNzKj0ibGF5b3V0LXR5cGUtaGFsZi1tYXAiXSAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyLAogICAgW2NsYXNzKj0ibGF5b3V0LXR5cGUtaGFsZi1tYXAiXSAuYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlciwKICAgIFtjbGFzcyo9ImxheW91dC10eXBlLWhhbGYtbWFwIl0gLmFnZW50cy1vcmRlcmluZy13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICAgIFtjbGFzcyo9ImxheW91dC10eXBlLWhhbGYtbWFwIl0gLnByb3BlcnRpZXMtb3JkZXJpbmctd3JhcHBlciAuc2F2ZWQtc2VhcmNoLWZvcm0tYnRuLAogICAgW2NsYXNzKj0ibGF5b3V0LXR5cGUtaGFsZi1tYXAiXSAucHJvcGVydGllcy1vcmRlcmluZy13cmFwcGVyIC5wcm9wZXJ0aWVzLWRpc3BsYXktbW9kZS13cmFwcGVyLAogICAgW2NsYXNzKj0ibGF5b3V0LXR5cGUtaGFsZi1tYXAiXSAuYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlciAuc2F2ZWQtc2VhcmNoLWZvcm0tYnRuLAogICAgW2NsYXNzKj0ibGF5b3V0LXR5cGUtaGFsZi1tYXAiXSAuYWdlbmNpZXMtb3JkZXJpbmctd3JhcHBlciAucHJvcGVydGllcy1kaXNwbGF5LW1vZGUtd3JhcHBlciwKICAgIFtjbGFzcyo9ImxheW91dC10eXBlLWhhbGYtbWFwIl0gLmFnZW50cy1vcmRlcmluZy13cmFwcGVyIC5zYXZlZC1zZWFyY2gtZm9ybS1idG4sCiAgICBbY2xhc3MqPSJsYXlvdXQtdHlwZS1oYWxmLW1hcCJdIC5hZ2VudHMtb3JkZXJpbmctd3JhcHBlciAucHJvcGVydGllcy1kaXNwbGF5LW1vZGUtd3JhcHBlciB7CiAgICAgICAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50OwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsKICAgIC5tb2JpbGUtZ3JvdXBzLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMTVweCAwOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiA0OwogICAgfQogICAgLm1vYmlsZS1ncm91cHMtYnV0dG9uIC5idG4gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIH0KICAgIC5tb2JpbGUtZ3JvdXBzLWJ1dHRvbiAuYnRuIGkgewogICAgICAgIG1hcmdpbi1yaWdodDogM3B4OwogICAgfQogICAgLnJ0bCAubW9iaWxlLWdyb3Vwcy1idXR0b24gLmJ0biBpIHsKICAgICAgICBtYXJnaW4tbGVmdDogM3B4OwogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MiAjcHJvcGVydGllcy1nb29nbGUtbWFwcywKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcC12MyAjcHJvcGVydGllcy1nb29nbGUtbWFwcywKICAgIC5sYXlvdXQtdHlwZS1oYWxmLW1hcCAjcHJvcGVydGllcy1nb29nbGUtbWFwcyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjIgLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlciAuaW5uZXIgewogICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNjBweCk7CiAgICB9CiAgICAud29vY29tbWVyY2UgdGFibGUuc2hvcF90YWJsZSB0Ym9keSAuYWN0aW9ucyB7CiAgICAgICAgcGFkZGluZy10b3A6IDE1cHg7CiAgICB9CiAgICAud29vY29tbWVyY2UgdGFibGUuY2FydCB0ZC5hY3Rpb25zIC5jb3Vwb24gewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTVweDsKICAgIH0KICAgIC5wcm9wZXJ0aWVzLXNsaWRlci1pbm5lciAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMzVweDsKICAgIH0KICAgIC5zaWRlYmFyIC5wcm9wZXJ0eS1saXN0LXNpbXBsZSAucHJvcGVydHktbWV0YXMgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CiAgICAuaGFsZi1tYXAtdjItYWN0aW9uLWZpbHRlciB7CiAgICAgICAgcGFkZGluZy10b3A6IDE1cHg7CiAgICB9CiAgICAubGF5b3V0LXR5cGUtaGFsZi1tYXAgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgIH0KICAgIC5sYXlvdXQtdHlwZS10b3AtbWFwICNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgfQogICAgLm5hdi1kZXRhaWwtY2VudGVyIHsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICAgICAgICAtbXMtZmxleC1wYWNrOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgLnRhZy1zb2NpYWw+LmFsaS1yaWdodCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgIH0KICAgIC5uYXYtbWVtYmVyOmJlZm9yZSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICAgIC5uYXYtdGFicyB7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQogICAgLm5hdi10YWJzIGxpIHsKICAgICAgICBmbG9hdDogbm9uZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgfQogICAgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybSAubmF2LXRhYnMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsKICAgIH0KICAgIC53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0gLmZvcm0tZ3JvdXAtc2VhcmNoIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgfQogICAgLndpZGdldC10ZXN0aW1vbmlhbHMudjEgLnRlc3RpbW9uaWFscy1pdGVtIHsKICAgICAgICBwYWRkaW5nLXRvcDogMDsKICAgIH0KICAgIC53aWRnZXQtc3Vid29vIC5zdWJ3b28taW5uZXIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICB9CiAgICAucG9zdC1uYXZpZ2F0aW9uIC5uYXYtbGlua3MgLnRpdGxlLWRpcmVjdCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICAgIC5wcm9kdWN0LWJsb2NrLmdyaWQgLm5hbWUgewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIH0KICAgIC5wcm9kdWN0LWJsb2NrLmdyaWQgLmdyb3Vwcy1idXR0b24gewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICB9CiAgICAubGlzdC1wcm9kdWN0LWFyY2hpdmUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAtOHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogLThweDsKICAgIH0KICAgIC5saXN0LXByb2R1Y3QtYXJjaGl2ZT4ucHJvZHVjdCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgfQogICAgLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuYmFubmVyLWltYWdlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgei1pbmRleDogLTE7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgfQogICAgLndpZGdldC1wcm9wZXJ0aWVzLXNsaWRlciAuYmFubmVyLWltYWdlIGltZywKICAgIC53aWRnZXQtcHJvcGVydGllcy1zbGlkZXIgLmJhbm5lci1pbWFnZSBkaXYgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgIH0KICAgIC53aWRnZXQtcHJvcGVydGllcy1zbGlkZXIgLmNvbnRlbnQtd3JhcHBlciB7CiAgICAgICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50OwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApICFpbXBvcnRhbnQ7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50OwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50OwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9CiAgICAud2lkZ2V0LXByb3BlcnRpZXMtc2xpZGVyIC5sZWZ0IHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgfQogICAgLnByb3BlcnR5LWl0ZW0gLnByb3BlcnR5LXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICB9CiAgICAucHJvcGVydHktaXRlbSAudG9wLWxhYmVsPiogewogICAgICAgIGhlaWdodDogMjJweDsKICAgICAgICBwYWRkaW5nOiAwIDVweDsKICAgICAgICBtYXJnaW46IDA7CiAgICB9CiAgICAucHJvcGVydHktbGlzdCAucmlnaHQtaW5uZXIgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICB9CiAgICAucnRsIC5wcm9wZXJ0eS1saXN0IC5yaWdodC1pbm5lciB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IGluaGVyaXQ7CiAgICB9CiAgICAucHJvcGVydHktbGlzdCAucHJvcGVydHktcHJpY2UgewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgIH0KICAgIC5wcm9wZXJ0eS1saXN0IC5wcm9wZXJ0eS1tZXRhcyB7CiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7CiAgICB9CiAgICAucHJvcGVydHktbGlzdC1tZW1iZXIgLnByb3BlcnR5LW1ldGFzIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgfQogICAgLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAucGFuZWwgLm1ldGFzIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgfQogICAgLnByb3BlcnR5LWRldGFpbC1mbG9vci1wbGFucyAucGFuZWwgLm1ldGFzPio6Zmlyc3QtY2hpbGQgewogICAgICAgIG1hcmdpbjogMDsKICAgIH0KICAgIC55ZWxwLWxpc3QgLnllbHAtbGlzdC1pbm5lciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAueWVscC1saXN0IC55ZWxwLWxpc3Qtc3ViIGxpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLnllbHAtbGlzdCAueWVscC1saXN0LXN1YiBsaTpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgfQogICAgLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5LnYyIC5wcm9wZXJ0eS1hY3Rpb24tZGV0YWlsIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgfQogICAgLmJ1dHRvbnMtZ3JvdXAtY2VudGVyPmRpdiB7CiAgICAgICAgcGFkZGluZzogMCA1cHg7CiAgICB9CiAgICAud3JhcHBlci1icmVhZHMgLmFsaS1yaWdodCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgIH0KICAgIC5hZ2VudC1saXN0IC5tZW1iZXItdGh1bWJuYWlsLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxNDBweDsKICAgIH0KICAgIC5hZ2VudC1saXN0IC5hZ2VudC1pbmZvcm1hdGlvbiB7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE0MHB4KTsKICAgIH0KICAgIC5hZ2VudC1saXN0IC5hZ2VudC1pbmZvcm1hdGlvbi1ib3R0b20gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CiAgICAuY29tcGFyZS10YWJsZXMgLnByb3BlcnR5LXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICB9CiAgICAubGF5b3V0LW15LXByb3BlcnRpZXMgLmxheW91dC1sZWZ0IC5pbm5lci1pbmZvLWxlZnQgewogICAgICAgIHdpZHRoOiA2MCU7CiAgICB9CiAgICAubGF5b3V0LW15LXByb3BlcnRpZXMgLmxheW91dC1sZWZ0IC53YXJwcGVyLWFjdGlvbi1wcm9wZXJ0eSB7CiAgICAgICAgd2lkdGg6IDQwJTsKICAgIH0KICAgIC5sYXlvdXQtbXktcHJvcGVydGllcyAubGF5b3V0LWxlZnQgLndhcnBwZXItYWN0aW9uLXByb3BlcnR5IGEgewogICAgICAgIG1hcmdpbjogMDsKICAgIH0KICAgIC5zZWFyY2gtb3JkZXJieS13cmFwcGVyPi5hbGktcmlnaHQgewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICB9CiAgICBkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJlbW92ZS1maWVsZC1yb3csCiAgICBkaXYuY21iMi13cmFwIC5jbWItdHlwZS1ncm91cCAuY21iLXJlcGVhdC1ncm91cC1maWVsZCB7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KICAgIC5wcm9wZXJ0eS1kZXRhaWwtZ2FsbGVyeS52NSAudG9wLWhlYWRlci1kZXRhaWwtcHJvcGVydHkgewogICAgICAgIHBhZGRpbmc6IDAgMCA0MHB4OwogICAgfQogICAgLnByb3BlcnR5LWRldGFpbC1nYWxsZXJ5LnYxIC5zbGljay1zbGlkZSBpbWcsCiAgICAucHJvcGVydHktZGV0YWlsLWdhbGxlcnkudjUgLnNsaWNrLXNsaWRlIGltZyB7CiAgICAgICAgbWluLWhlaWdodDogMjAwcHg7CiAgICB9CiAgICAucHJvcGVydHktZGV0YWlsLWRldGFpbCAubGlzdCBsaSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogN3B4OwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNDc5cHgpIHsKICAgIC53b29jb21tZXJjZSBmb3JtIC53b29jb21tZXJjZS1iaWxsaW5nLWZpZWxkcyAud29vY29tbWVyY2UtYmlsbGluZy1maWVsZHNfX2ZpZWxkLXdyYXBwZXI+Kj4qLAogICAgLndvb2NvbW1lcmNlIGZvcm0gLndvb2NvbW1lcmNlLWJpbGxpbmctZmllbGRzIC53b29jb21tZXJjZS1iaWxsaW5nLWZpZWxkc19fZmllbGQtd3JhcHBlcj4qPi5zZWxlY3QyLWNvbnRhaW5lciwKICAgIC53b29jb21tZXJjZSBmb3JtIC53b29jb21tZXJjZS1iaWxsaW5nLWZpZWxkcyAud29vY29tbWVyY2UtYmlsbGluZy1maWVsZHNfX2ZpZWxkLXdyYXBwZXI+Kj5zZWxlY3QsCiAgICAud29vY29tbWVyY2UgZm9ybSAud29vY29tbWVyY2UtYmlsbGluZy1maWVsZHMgLndvb2NvbW1lcmNlLWJpbGxpbmctZmllbGRzX19maWVsZC13cmFwcGVyPio+aW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwIDAgNXB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuYXB1cy1maWx0ZXIgLnN1YnRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQogICAgLnNlYXJjaC1vcmRlcmJ5LXdyYXBwZXIgLnRleHQtc29ydCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICAgIGRpdi5jbWIyLXdyYXAgW2lkKj0ibWFwX2xvY2F0aW9uLW1hcCJdfmlucHV0IHsKICAgICAgICBtYXJnaW46IDAgMCA1cHggIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgIH0KICAgIC5jb21tZW50LWxpc3QgLmNvbW1lbnQtcmVwbHktbGluayAudGV4dC1yZXBseTo6YmVmb3JlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzgycHgpIHsKICAgIC5hZG1pbi1iYXIuaGVhZGVyX3RyYW5zcGFyZW50ICNhcHVzLWhlYWRlciB7CiAgICAgICAgdG9wOiA0NnB4OwogICAgfQogICAgLmFkbWluLWJhciAuaGVhZGVyLW1vYmlsZSB7CiAgICAgICAgdG9wOiA0NnB4OwogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzgzcHgpIHsKICAgIC5hZG1pbi1iYXIgLmhlYWRlci1tb2JpbGUgewogICAgICAgIHRvcDogMzJweDsKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7CiAgICAuYWRtaW4tYmFyIC5oZWFkZXItbW9iaWxlLnN0aWNreS1oZWFkZXIgewogICAgICAgIHRvcDogMDsKICAgIH0KfQoKLnZpc2libGUtc21hbGxlc3QgewogICAgZGlzcGxheTogbm9uZTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDM4MXB4KSB7CiAgICAudmlzaWJsZS1zbWFsbGVzdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIH0KICAgIC5oaWRkZW4tc21hbGxlc3QgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CiAgICAuY29tbWVudC1saXN0IC5jb21tZW50LXJlcGx5LWxpbmsgLnNwYWNlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQogICAgLmNvbW1lbnQtbGlzdCAudmlzaWJsZS1zbWFsbGVzdCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgfQogICAgI2NvbW1lbnRzIC5ib3gtY29tbWVudCB7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgIH0KfQoubGF0ZXN0LXJvdyB1bCB7Cgl3aWR0aDogMTAwJTsKCWxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKCW1hcmdpbjogMDsKCXBhZGRpbmc6IDA7Cglib3JkZXI6IDJweCBzb2xpZCAjZmZmOwoJYm9yZGVyLWJvdHRvbTogMDsKfQoubGF0ZXN0LXJvdyB1bCBsaSB7CiAgICBsaW5lLWhlaWdodDogMzVweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZmZmOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgY29sb3I6ICM0MTQzNDU7CiAgICBwYWRkaW5nOiAwIDE1cHggMCAyNXB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQoubGF0ZXN0LXJvdyB1bCBsaSBoMyB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMTAwJTsKCW1hcmdpbjogMDsKCWxpbmUtaGVpZ2h0OiAzNXB4OwoJY29sb3I6ICNmZmY7Cglmb250LXNpemU6IDE0cHg7Cgl0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwoJZm9udC13ZWlnaHQ6IDYwMDsKfQoubGF0ZXN0LXJvdyB1bCBsaSBpIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCWZsb2F0OiByaWdodDsKfQoubGF0ZXN0LXJvdyB1bCBsaSBzcGFuIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCW1hcmdpbjowcHggNSU7Cn0KCi5sYXRlc3Qtcm93IHVsIGxpIHNwYW4uc3BhbjEge3dpZHRoOjI1JTt9CgoubGF0ZXN0LXJvdyB1bCBsaTpudGgtY2hpbGQob2RkKSB7CgliYWNrZ3JvdW5kOiAjZTdlYWVlOwp9Ci5sYXRlc3Qtcm93MSB1bCBsaS50aXRsZSB7CgliYWNrZ3JvdW5kOiB1cmwoLi4vaWNvbi1kb2wucG5nKSAjMDAzMDQ5IG5vLXJlcGVhdCAxM3B4OwoJcGFkZGluZy1sZWZ0OiA1NXB4OwoJbGluZS1oZWlnaHQ6IDM3cHg7Cn0KLmxhdGVzdC1yb3czIHVsIGxpLnRpdGxlIHsKCWJhY2tncm91bmQ6IHVybCguLi9pY29uLWRvbDIucG5nKSAjMDAzMDQ5IG5vLXJlcGVhdCAxM3B4OwoJcGFkZGluZy1sZWZ0OiA1NXB4OwoJbGluZS1oZWlnaHQ6IDM3cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAgIC5pbm5lci1jYXJvdXNlbCAuaXRlbSB7CiAgICB3aWR0aDogNDklOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKfQp9Ci5pbmZvLWNpdHkgaDIgewogICAgbWFyZ2luOiAxMHB4IDA7Cn0KLnBsYW4tYnRuIHsKICAgIGNvbG9yOiAjRkZGRkZGOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMzA0OTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItd2lkdGg6IDJweCAycHggMnB4IDJweDsKICAgIGJvcmRlci1jb2xvcjogIzNFNEM2NjsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIHBhZGRpbmc6IDlweCA0MHB4OwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQ=="}},"time_used":1111,"timings":{"blocked":651,"dns":0,"connect":0,"send":0,"wait":94,"receive":366,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/select2/select2.min.css?ver=4.0.5","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.385Z","timestamp":1785145482385,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/select2/select2.min.css?ver=4.0.5 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/css\r\nContent-Length: 17551\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":17551,"size_decoded":17761,"mime_type":"text/css","magic":"ASCII text","md5":"ecb63559b775820464ddac6940e8377b","sha1":"774b9fffabd9a1032ef5797d79b36d7244f2bc8d","sha256":"e920b6b03539acfd109df3344e1e3638e71efd3398c591a3f31304a18f517f81","sha512":"4ac684fd6ec4e465680ea401b72b034153b286264ccdb10466656ade9ede423c70078c4211f9ca543d73b1d991c4be2d3a48e59676cf78336330afbd33fc18e9","ssdeep":"384:JFzKESGFzFKFTFsOF1yidykyIeUj5FTFsTFuF:JFzyGFzFKFTFsOFZykyIeq5FTFsTFI","tlshash":"9f72eca8bedf1931b07e4caf9df671406728cc4f80088baa7ee5e144efd5190165b94b","first_seen":"2025-09-30T00:15:26.660158Z","last_seen":"2026-07-27T09:45:50.848737Z","times_seen":5,"resource_available":false,"data":"LnNlbGVjdDItY29udGFpbmVyIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW46IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCn0KCi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDI4cHg7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmUKfQoKLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwCn0KCi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9Cgouc2VsZWN0Mi1jb250YWluZXJbZGlyPSJydGwiXSAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgIHBhZGRpbmctbGVmdDogMjBweAp9Cgouc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtaW4taGVpZ2h0OiAzMnB4OwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lCn0KCi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwCn0KCi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSB7CiAgICBmbG9hdDogbGVmdAp9Cgouc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUgLnNlbGVjdDItc2VhcmNoX19maWVsZCB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm9yZGVyOiBub25lOwogICAgZm9udC1zaXplOiAxMDAlOwogICAgbWFyZ2luLXRvcDogNXB4OwogICAgcGFkZGluZzogMAp9Cgouc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUgLnNlbGVjdDItc2VhcmNoX19maWVsZDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmUKfQoKLnNlbGVjdDItZHJvcGRvd24gewogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogLTEwMDAwMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICB6LWluZGV4OiAxMDUxCn0KCi5zZWxlY3QyLXJlc3VsdHMgewogICAgZGlzcGxheTogYmxvY2sKfQoKLnNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMAp9Cgouc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gewogICAgcGFkZGluZzogNnB4OwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lCn0KCi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXSB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLWRyb3Bkb3duIHsKICAgIGxlZnQ6IDAKfQoKLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLWRyb3Bkb3duLS1hYm92ZSB7CiAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiAuc2VsZWN0Mi1kcm9wZG93bi0tYmVsb3cgewogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMAp9Cgouc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogNHB4Cn0KCi5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24gLnNlbGVjdDItc2VhcmNoX19maWVsZCB7CiAgICBwYWRkaW5nOiA0cHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3gKfQoKLnNlbGVjdDItc2VhcmNoLS1kcm9wZG93biAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZQp9Cgouc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duLnNlbGVjdDItc2VhcmNoLS1oaWRlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnNlbGVjdDItY2xvc2UtbWFzayB7CiAgICBib3JkZXI6IDA7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwOwogICAgbWluLWhlaWdodDogMTAwJTsKICAgIG1pbi13aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKICAgIHdpZHRoOiBhdXRvOwogICAgb3BhY2l0eTogMDsKICAgIHotaW5kZXg6IDk5OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKQp9Cgouc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSB7CiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKICAgIGNsaXA6IHJlY3QoMCAwIDAgMCkgIWltcG9ydGFudDsKICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IC0xcHggIWltcG9ydGFudDsKICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDFweCAhaW1wb3J0YW50Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7CiAgICBjb2xvcjogIzQ0NDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiByaWdodDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiAjOTk5Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHsKICAgIGhlaWdodDogMjZweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMXB4OwogICAgcmlnaHQ6IDFweDsKICAgIHdpZHRoOiAyMHB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IGIgewogICAgYm9yZGVyLWNvbG9yOiAjODg4IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogNXB4IDRweCAwIDRweDsKICAgIGhlaWdodDogMDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtNHB4OwogICAgbWFyZ2luLXRvcDogLTJweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgd2lkdGg6IDAKfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0W2Rpcj0icnRsIl0gLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7CiAgICBmbG9hdDogbGVmdAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHRbZGlyPSJydGwiXSAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHsKICAgIGxlZnQ6IDFweDsKICAgIHJpZ2h0OiBhdXRvCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIGN1cnNvcjogZGVmYXVsdAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIgewogICAgZGlzcGxheTogbm9uZQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyBiIHsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzg4OCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci13aWR0aDogMCA0cHggNXB4IDRweAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IHRleHQKfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDAgNXB4OwogICAgd2lkdGg6IDEwMCUKfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCBsaSB7CiAgICBsaXN0LXN0eWxlOiBub25lCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICM5OTk7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBmbG9hdDogbGVmdAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiByaWdodDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbWFyZ2luLXRvcDogNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNGU0ZTQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIHBhZGRpbmc6IDAgNXB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmUgewogICAgY29sb3I6ICM5OTk7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIG1hcmdpbi1yaWdodDogMnB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmU6aG92ZXIgewogICAgY29sb3I6ICMzMzMKfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0W2Rpcj0icnRsIl0gLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSwKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0W2Rpcj0icnRsIl0gLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyLAouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHRbZGlyPSJydGwiXSAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlYXJjaC0taW5saW5lIHsKICAgIGZsb2F0OiByaWdodAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHRbZGlyPSJydGwiXSAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0W2Rpcj0icnRsIl0gLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlIHsKICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1mb2N1cyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHsKICAgIGJvcmRlcjogc29saWQgYmxhY2sgMXB4OwogICAgb3V0bGluZTogMAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIGN1cnNvcjogZGVmYXVsdAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmUgewogICAgZGlzcGxheTogbm9uZQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLW9wZW4uc2VsZWN0Mi1jb250YWluZXItLWFib3ZlIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlLAouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLW9wZW4uc2VsZWN0Mi1jb250YWluZXItLWFib3ZlIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tb3Blbi5zZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUsCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tb3Blbi5zZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAKfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24gLnNlbGVjdDItc2VhcmNoX19maWVsZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiBub25lOwogICAgb3V0bGluZTogMDsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0cz4uc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHsKICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgb3ZlcmZsb3cteTogYXV0bwp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW3JvbGU9Z3JvdXBdIHsKICAgIHBhZGRpbmc6IDAKfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLWRpc2FibGVkPXRydWVdIHsKICAgIGNvbG9yOiAjOTk5Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD10cnVlXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHsKICAgIHBhZGRpbmctbGVmdDogMWVtCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX2dyb3VwIHsKICAgIHBhZGRpbmctbGVmdDogMAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gewogICAgbWFyZ2luLWxlZnQ6IC0xZW07CiAgICBwYWRkaW5nLWxlZnQ6IDJlbQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiAtMmVtOwogICAgcGFkZGluZy1sZWZ0OiAzZW0KfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gewogICAgbWFyZ2luLWxlZnQ6IC0zZW07CiAgICBwYWRkaW5nLWxlZnQ6IDRlbQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gewogICAgbWFyZ2luLWxlZnQ6IC00ZW07CiAgICBwYWRkaW5nLWxlZnQ6IDVlbQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiAtNWVtOwogICAgcGFkZGluZy1sZWZ0OiA2ZW0KfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRbYXJpYS1zZWxlY3RlZF0gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzU4OTdmYjsKICAgIGNvbG9yOiB3aGl0ZQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fZ3JvdXAgewogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiA2cHgKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgb3V0bGluZTogMDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZiA1MCUsICNlZWUgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmIDUwJSwgI2VlZSAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmZmYgNTAlLCAjZWVlIDEwMCUpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI0ZGRkZGRkZGJywgZW5kQ29sb3JzdHI9JyNGRkVFRUVFRScsIEdyYWRpZW50VHlwZT0wKQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWNsYXNzaWMgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGU6Zm9jdXMgewogICAgYm9yZGVyOiAxcHggc29saWQgIzU4OTdmYgp9Cgouc2VsZWN0Mi1jb250YWluZXItLWNsYXNzaWMgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7CiAgICBjb2xvcjogIzQ0NDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiByaWdodDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiAjOTk5Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNhYWE7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKICAgIGhlaWdodDogMjZweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMXB4OwogICAgcmlnaHQ6IDFweDsKICAgIHdpZHRoOiAyMHB4OwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZWVlIDUwJSwgI2NjYyAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNlZWUgNTAlLCAjY2NjIDEwMCUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2VlZSA1MCUsICNjY2MgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjRkZFRUVFRUUnLCBlbmRDb2xvcnN0cj0nI0ZGQ0NDQ0NDJywgR3JhZGllbnRUeXBlPTApCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IGIgewogICAgYm9yZGVyLWNvbG9yOiAjODg4IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogNXB4IDRweCAwIDRweDsKICAgIGhlaWdodDogMDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtNHB4OwogICAgbWFyZ2luLXRvcDogLTJweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgd2lkdGg6IDAKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljW2Rpcj0icnRsIl0gLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7CiAgICBmbG9hdDogbGVmdAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWNsYXNzaWNbZGlyPSJydGwiXSAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNhYWE7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwogICAgbGVmdDogMXB4OwogICAgcmlnaHQ6IGF1dG8KfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM1ODk3ZmIKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IG5vbmUKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgYiB7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM4ODggdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItd2lkdGg6IDAgNHB4IDVweCA0cHgKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljLnNlbGVjdDItY29udGFpbmVyLS1vcGVuLnNlbGVjdDItY29udGFpbmVyLS1hYm92ZSAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmIDAlLCAjZWVlIDUwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmIDAlLCAjZWVlIDUwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZmZmIDAlLCAjZWVlIDUwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjRkZGRkZGRkYnLCBlbmRDb2xvcnN0cj0nI0ZGRUVFRUVFJywgR3JhZGllbnRUeXBlPTApCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYy5zZWxlY3QyLWNvbnRhaW5lci0tb3Blbi5zZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgewogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlZSA1MCUsICNmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZWVlIDUwJSwgI2ZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNlZWUgNTAlLCAjZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI0ZGRUVFRUVFJywgZW5kQ29sb3JzdHI9JyNGRkZGRkZGRicsIEdyYWRpZW50VHlwZT0wKQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWNsYXNzaWMgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IHRleHQ7CiAgICBvdXRsaW5lOiAwCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlOmZvY3VzIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM1ODk3ZmIKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMCA1cHgKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNGU0ZTQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIHBhZGRpbmc6IDAgNXB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmUgewogICAgY29sb3I6ICM4ODg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIG1hcmdpbi1yaWdodDogMnB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmU6aG92ZXIgewogICAgY29sb3I6ICM1NTUKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljW2Rpcj0icnRsIl0gLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSB7CiAgICBmbG9hdDogcmlnaHQKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljW2Rpcj0icnRsIl0gLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpY1tkaXI9InJ0bCJdIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZSB7CiAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYy5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM1ODk3ZmIKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljLnNlbGVjdDItY29udGFpbmVyLS1vcGVuLnNlbGVjdDItY29udGFpbmVyLS1hYm92ZSAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHsKICAgIGJvcmRlci10b3A6IG5vbmU7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljLnNlbGVjdDItY29udGFpbmVyLS1vcGVuLnNlbGVjdDItY29udGFpbmVyLS1iZWxvdyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24gLnNlbGVjdDItc2VhcmNoX19maWVsZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgb3V0bGluZTogMAp9Cgouc2VsZWN0Mi1jb250YWluZXItLWNsYXNzaWMgLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUgLnNlbGVjdDItc2VhcmNoX19maWVsZCB7CiAgICBvdXRsaW5lOiAwOwogICAgYm94LXNoYWRvdzogbm9uZQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWNsYXNzaWMgLnNlbGVjdDItZHJvcGRvd24gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1kcm9wZG93bi0tYWJvdmUgewogICAgYm9yZGVyLWJvdHRvbTogbm9uZQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWNsYXNzaWMgLnNlbGVjdDItZHJvcGRvd24tLWJlbG93IHsKICAgIGJvcmRlci10b3A6IG5vbmUKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXJlc3VsdHM+LnNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyB7CiAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgIG92ZXJmbG93LXk6IGF1dG8KfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbltyb2xlPWdyb3VwXSB7CiAgICBwYWRkaW5nOiAwCn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYyAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXSB7CiAgICBjb2xvcjogZ3JleQp9Cgouc2VsZWN0Mi1jb250YWluZXItLWNsYXNzaWMgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZFthcmlhLXNlbGVjdGVkXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzg3NWQ3OwogICAgY29sb3I6ICNmZmYKfQoKLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXJlc3VsdHNfX2dyb3VwIHsKICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogNnB4Cn0KCi5zZWxlY3QyLWNvbnRhaW5lci0tY2xhc3NpYy5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiAuc2VsZWN0Mi1kcm9wZG93biB7CiAgICBib3JkZXItY29sb3I6ICM1ODk3ZmIKfQ=="}},"time_used":808,"timings":{"blocked":711,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/bootstrap.min.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.396Z","timestamp":1785145482396,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/bootstrap.min.js?ver=20150330 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 50156\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":50156,"size_decoded":50373,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (550)","md5":"b268134716140fd15bc95145126aa692","sha1":"2ac90e83628763b67ab641ae858c57200afed58e","sha256":"0ada45837e213d979e22d39c383cd69b54855b1b3fd63ae5182adf918863591e","sha512":"79d9496b242a699939e79ce953e189a57a6616f643b7adf3bdc5872b6ecc1bc79d5185ce156bee8ed4bd9173e969ad8626f1e65d9d776ced94341178ad3021a4","ssdeep":"768:X42NROdp5aYWbrMAD/3oyAoxyJbmozEzOGpjnqw50WU7nXPISahEj/l5JlA6Zl1J:oOgdrGbrZ4nOz7nP3MXJlA+l1/2u","tlshash":"ad33840bb7f22062976bb0a58e5f45087235492fa64bdc5c3c5c92e06f2583855bbfbc","first_seen":"2023-05-15T11:46:25Z","last_seen":"2026-07-27T09:45:50.895401Z","times_seen":17,"resource_available":true,"data":"LyohCiAqIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZiAoInVuZGVmaW5lZCIgPT0gdHlwZW9mIGpRdWVyeSkgdGhyb3cgbmV3IEVycm9yKCJCb290c3RyYXAncyBKYXZhU2NyaXB0IHJlcXVpcmVzIGpRdWVyeSIpOyArIGZ1bmN0aW9uKGEpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBiID0gYS5mbi5qcXVlcnkuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpOwogICAgaWYgKGJbMF0gPCAyICYmIGJbMV0gPCA5IHx8IDEgPT0gYlswXSAmJiA5ID09IGJbMV0gJiYgYlsyXSA8IDEpIHRocm93IG5ldyBFcnJvcigiQm9vdHN0cmFwJ3MgSmF2YVNjcmlwdCByZXF1aXJlcyBqUXVlcnkgdmVyc2lvbiAxLjkuMSBvciBoaWdoZXIiKQp9KGpRdWVyeSksICsgZnVuY3Rpb24oYSkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGIoKSB7CiAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib290c3RyYXAiKSwKICAgICAgICAgICAgYiA9IHsKICAgICAgICAgICAgICAgIFdlYmtpdFRyYW5zaXRpb246ICJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwKICAgICAgICAgICAgICAgIE1velRyYW5zaXRpb246ICJ0cmFuc2l0aW9uZW5kIiwKICAgICAgICAgICAgICAgIE9UcmFuc2l0aW9uOiAib1RyYW5zaXRpb25FbmQgb3RyYW5zaXRpb25lbmQiLAogICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogInRyYW5zaXRpb25lbmQiCiAgICAgICAgICAgIH07CiAgICAgICAgZm9yICh2YXIgYyBpbiBiKQogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBhLnN0eWxlW2NdKSByZXR1cm4gewogICAgICAgICAgICAgICAgZW5kOiBiW2NdCiAgICAgICAgICAgIH07CiAgICAgICAgcmV0dXJuICExCiAgICB9CiAgICBhLmZuLmVtdWxhdGVUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24oYikgewogICAgICAgIHZhciBjID0gITEsCiAgICAgICAgICAgIGQgPSB0aGlzOwogICAgICAgIGEodGhpcykub25lKCJic1RyYW5zaXRpb25FbmQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYyA9ICEwCiAgICAgICAgfSk7CiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYyB8fCBhKGQpLnRyaWdnZXIoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKQogICAgICAgIH07CiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZSwgYiksIHRoaXMKICAgIH0sIGEoZnVuY3Rpb24oKSB7CiAgICAgICAgYS5zdXBwb3J0LnRyYW5zaXRpb24gPSBiKCksIGEuc3VwcG9ydC50cmFuc2l0aW9uICYmIChhLmV2ZW50LnNwZWNpYWwuYnNUcmFuc2l0aW9uRW5kID0gewogICAgICAgICAgICBiaW5kVHlwZTogYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLAogICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6IGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCwKICAgICAgICAgICAgaGFuZGxlOiBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYShiLnRhcmdldCkuaXModGhpcykgPyBiLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB2b2lkIDAKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9KQp9KGpRdWVyeSksICsgZnVuY3Rpb24oYSkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGIoYikgewogICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBjID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSBjLmRhdGEoImJzLmFsZXJ0Iik7CiAgICAgICAgICAgIGUgfHwgYy5kYXRhKCJicy5hbGVydCIsIGUgPSBuZXcgZCh0aGlzKSksICJzdHJpbmciID09IHR5cGVvZiBiICYmIGVbYl0uY2FsbChjKQogICAgICAgIH0pCiAgICB9CiAgICB2YXIgYyA9ICdbZGF0YS1kaXNtaXNzPSJhbGVydCJdJywKICAgICAgICBkID0gZnVuY3Rpb24oYikgewogICAgICAgICAgICBhKGIpLm9uKCJjbGljayIsIGMsIHRoaXMuY2xvc2UpCiAgICAgICAgfTsKICAgIGQuVkVSU0lPTiA9ICIzLjMuNSIsIGQuVFJBTlNJVElPTl9EVVJBVElPTiA9IDE1MCwgZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgZnVuY3Rpb24gYygpIHsKICAgICAgICAgICAgZy5kZXRhY2goKS50cmlnZ2VyKCJjbG9zZWQuYnMuYWxlcnQiKS5yZW1vdmUoKQogICAgICAgIH0KICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgIGYgPSBlLmF0dHIoImRhdGEtdGFyZ2V0Iik7CiAgICAgICAgZiB8fCAoZiA9IGUuYXR0cigiaHJlZiIpLCBmID0gZiAmJiBmLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywgIiIpKTsKICAgICAgICB2YXIgZyA9IGEoZik7CiAgICAgICAgYiAmJiBiLnByZXZlbnREZWZhdWx0KCksIGcubGVuZ3RoIHx8IChnID0gZS5jbG9zZXN0KCIuYWxlcnQiKSksIGcudHJpZ2dlcihiID0gYS5FdmVudCgiY2xvc2UuYnMuYWxlcnQiKSksIGIuaXNEZWZhdWx0UHJldmVudGVkKCkgfHwgKGcucmVtb3ZlQ2xhc3MoImluIiksIGEuc3VwcG9ydC50cmFuc2l0aW9uICYmIGcuaGFzQ2xhc3MoImZhZGUiKSA/IGcub25lKCJic1RyYW5zaXRpb25FbmQiLCBjKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pIDogYygpKQogICAgfTsKICAgIHZhciBlID0gYS5mbi5hbGVydDsKICAgIGEuZm4uYWxlcnQgPSBiLCBhLmZuLmFsZXJ0LkNvbnN0cnVjdG9yID0gZCwgYS5mbi5hbGVydC5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGEuZm4uYWxlcnQgPSBlLCB0aGlzCiAgICB9LCBhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLCBjLCBkLnByb3RvdHlwZS5jbG9zZSkKfShqUXVlcnkpLCArIGZ1bmN0aW9uKGEpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBiKGIpIHsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZCA9IGEodGhpcyksCiAgICAgICAgICAgICAgICBlID0gZC5kYXRhKCJicy5idXR0b24iKSwKICAgICAgICAgICAgICAgIGYgPSAib2JqZWN0IiA9PSB0eXBlb2YgYiAmJiBiOwogICAgICAgICAgICBlIHx8IGQuZGF0YSgiYnMuYnV0dG9uIiwgZSA9IG5ldyBjKHRoaXMsIGYpKSwgInRvZ2dsZSIgPT0gYiA/IGUudG9nZ2xlKCkgOiBiICYmIGUuc2V0U3RhdGUoYikKICAgICAgICB9KQogICAgfQogICAgdmFyIGMgPSBmdW5jdGlvbihiLCBkKSB7CiAgICAgICAgdGhpcy4kZWxlbWVudCA9IGEoYiksIHRoaXMub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBjLkRFRkFVTFRTLCBkKSwgdGhpcy5pc0xvYWRpbmcgPSAhMQogICAgfTsKICAgIGMuVkVSU0lPTiA9ICIzLjMuNSIsIGMuREVGQVVMVFMgPSB7CiAgICAgICAgbG9hZGluZ1RleHQ6ICJsb2FkaW5nLi4uIgogICAgfSwgYy5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgdmFyIGMgPSAiZGlzYWJsZWQiLAogICAgICAgICAgICBkID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgICAgZSA9IGQuaXMoImlucHV0IikgPyAidmFsIiA6ICJodG1sIiwKICAgICAgICAgICAgZiA9IGQuZGF0YSgpOwogICAgICAgIGIgKz0gIlRleHQiLCBudWxsID09IGYucmVzZXRUZXh0ICYmIGQuZGF0YSgicmVzZXRUZXh0IiwgZFtlXSgpKSwgc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBkW2VdKG51bGwgPT0gZltiXSA/IHRoaXMub3B0aW9uc1tiXSA6IGZbYl0pLCAibG9hZGluZ1RleHQiID09IGIgPyAodGhpcy5pc0xvYWRpbmcgPSAhMCwgZC5hZGRDbGFzcyhjKS5hdHRyKGMsIGMpKSA6IHRoaXMuaXNMb2FkaW5nICYmICh0aGlzLmlzTG9hZGluZyA9ICExLCBkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpCiAgICAgICAgfSwgdGhpcyksIDApCiAgICB9LCBjLnByb3RvdHlwZS50b2dnbGUgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYSA9ICEwLAogICAgICAgICAgICBiID0gdGhpcy4kZWxlbWVudC5jbG9zZXN0KCdbZGF0YS10b2dnbGU9ImJ1dHRvbnMiXScpOwogICAgICAgIGlmIChiLmxlbmd0aCkgewogICAgICAgICAgICB2YXIgYyA9IHRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsKICAgICAgICAgICAgInJhZGlvIiA9PSBjLnByb3AoInR5cGUiKSA/IChjLnByb3AoImNoZWNrZWQiKSAmJiAoYSA9ICExKSwgYi5maW5kKCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLCB0aGlzLiRlbGVtZW50LmFkZENsYXNzKCJhY3RpdmUiKSkgOiAiY2hlY2tib3giID09IGMucHJvcCgidHlwZSIpICYmIChjLnByb3AoImNoZWNrZWQiKSAhPT0gdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIikgJiYgKGEgPSAhMSksIHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSwgYy5wcm9wKCJjaGVja2VkIiwgdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIikpLCBhICYmIGMudHJpZ2dlcigiY2hhbmdlIikKICAgICAgICB9IGVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCAhdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIikpLCB0aGlzLiRlbGVtZW50LnRvZ2dsZUNsYXNzKCJhY3RpdmUiKQogICAgfTsKICAgIHZhciBkID0gYS5mbi5idXR0b247CiAgICBhLmZuLmJ1dHRvbiA9IGIsIGEuZm4uYnV0dG9uLkNvbnN0cnVjdG9yID0gYywgYS5mbi5idXR0b24ubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBhLmZuLmJ1dHRvbiA9IGQsIHRoaXMKICAgIH0sIGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5idXR0b24uZGF0YS1hcGkiLCAnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLCBmdW5jdGlvbihjKSB7CiAgICAgICAgdmFyIGQgPSBhKGMudGFyZ2V0KTsKICAgICAgICBkLmhhc0NsYXNzKCJidG4iKSB8fCAoZCA9IGQuY2xvc2VzdCgiLmJ0biIpKSwgYi5jYWxsKGQsICJ0b2dnbGUiKSwgYShjLnRhcmdldCkuaXMoJ2lucHV0W3R5cGU9InJhZGlvIl0nKSB8fCBhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpIHx8IGMucHJldmVudERlZmF1bHQoKQogICAgfSkub24oImZvY3VzLmJzLmJ1dHRvbi5kYXRhLWFwaSBibHVyLmJzLmJ1dHRvbi5kYXRhLWFwaSIsICdbZGF0YS10b2dnbGVePSJidXR0b24iXScsIGZ1bmN0aW9uKGIpIHsKICAgICAgICBhKGIudGFyZ2V0KS5jbG9zZXN0KCIuYnRuIikudG9nZ2xlQ2xhc3MoImZvY3VzIiwgL15mb2N1cyhpbik/JC8udGVzdChiLnR5cGUpKQogICAgfSkKfShqUXVlcnkpLCArIGZ1bmN0aW9uKGEpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBiKGIpIHsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZCA9IGEodGhpcyksCiAgICAgICAgICAgICAgICBlID0gZC5kYXRhKCJicy5jYXJvdXNlbCIpLAogICAgICAgICAgICAgICAgZiA9IGEuZXh0ZW5kKHt9LCBjLkRFRkFVTFRTLCBkLmRhdGEoKSwgIm9iamVjdCIgPT0gdHlwZW9mIGIgJiYgYiksCiAgICAgICAgICAgICAgICBnID0gInN0cmluZyIgPT0gdHlwZW9mIGIgPyBiIDogZi5zbGlkZTsKICAgICAgICAgICAgZSB8fCBkLmRhdGEoImJzLmNhcm91c2VsIiwgZSA9IG5ldyBjKHRoaXMsIGYpKSwgIm51bWJlciIgPT0gdHlwZW9mIGIgPyBlLnRvKGIpIDogZyA/IGVbZ10oKSA6IGYuaW50ZXJ2YWwgJiYgZS5wYXVzZSgpLmN5Y2xlKCkKICAgICAgICB9KQogICAgfQogICAgdmFyIGMgPSBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgdGhpcy4kZWxlbWVudCA9IGEoYiksIHRoaXMuJGluZGljYXRvcnMgPSB0aGlzLiRlbGVtZW50LmZpbmQoIi5jYXJvdXNlbC1pbmRpY2F0b3JzIiksIHRoaXMub3B0aW9ucyA9IGMsIHRoaXMucGF1c2VkID0gbnVsbCwgdGhpcy5zbGlkaW5nID0gbnVsbCwgdGhpcy5pbnRlcnZhbCA9IG51bGwsIHRoaXMuJGFjdGl2ZSA9IG51bGwsIHRoaXMuJGl0ZW1zID0gbnVsbCwgdGhpcy5vcHRpb25zLmtleWJvYXJkICYmIHRoaXMuJGVsZW1lbnQub24oImtleWRvd24uYnMuY2Fyb3VzZWwiLCBhLnByb3h5KHRoaXMua2V5ZG93biwgdGhpcykpLCAiaG92ZXIiID09IHRoaXMub3B0aW9ucy5wYXVzZSAmJiAhKCJvbnRvdWNoc3RhcnQiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkgJiYgdGhpcy4kZWxlbWVudC5vbigibW91c2VlbnRlci5icy5jYXJvdXNlbCIsIGEucHJveHkodGhpcy5wYXVzZSwgdGhpcykpLm9uKCJtb3VzZWxlYXZlLmJzLmNhcm91c2VsIiwgYS5wcm94eSh0aGlzLmN5Y2xlLCB0aGlzKSkKICAgIH07CiAgICBjLlZFUlNJT04gPSAiMy4zLjUiLCBjLlRSQU5TSVRJT05fRFVSQVRJT04gPSA2MDAsIGMuREVGQVVMVFMgPSB7CiAgICAgICAgaW50ZXJ2YWw6IDVlMywKICAgICAgICBwYXVzZTogImhvdmVyIiwKICAgICAgICB3cmFwOiAhMCwKICAgICAgICBrZXlib2FyZDogITAKICAgIH0sIGMucHJvdG90eXBlLmtleWRvd24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgaWYgKCEvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGEudGFyZ2V0LnRhZ05hbWUpKSB7CiAgICAgICAgICAgIHN3aXRjaCAoYS53aGljaCkgewogICAgICAgICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXYoKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9CiAgICAgICAgICAgIGEucHJldmVudERlZmF1bHQoKQogICAgICAgIH0KICAgIH0sIGMucHJvdG90eXBlLmN5Y2xlID0gZnVuY3Rpb24oYikgewogICAgICAgIHJldHVybiBiIHx8ICh0aGlzLnBhdXNlZCA9ICExKSwgdGhpcy5pbnRlcnZhbCAmJiBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLCB0aGlzLm9wdGlvbnMuaW50ZXJ2YWwgJiYgIXRoaXMucGF1c2VkICYmICh0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoYS5wcm94eSh0aGlzLm5leHQsIHRoaXMpLCB0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSwgdGhpcwogICAgfSwgYy5wcm90b3R5cGUuZ2V0SXRlbUluZGV4ID0gZnVuY3Rpb24oYSkgewogICAgICAgIHJldHVybiB0aGlzLiRpdGVtcyA9IGEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksIHRoaXMuJGl0ZW1zLmluZGV4KGEgfHwgdGhpcy4kYWN0aXZlKQogICAgfSwgYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbiA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICB2YXIgYyA9IHRoaXMuZ2V0SXRlbUluZGV4KGIpLAogICAgICAgICAgICBkID0gInByZXYiID09IGEgJiYgMCA9PT0gYyB8fCAibmV4dCIgPT0gYSAmJiBjID09IHRoaXMuJGl0ZW1zLmxlbmd0aCAtIDE7CiAgICAgICAgaWYgKGQgJiYgIXRoaXMub3B0aW9ucy53cmFwKSByZXR1cm4gYjsKICAgICAgICB2YXIgZSA9ICJwcmV2IiA9PSBhID8gLTEgOiAxLAogICAgICAgICAgICBmID0gKGMgKyBlKSAlIHRoaXMuJGl0ZW1zLmxlbmd0aDsKICAgICAgICByZXR1cm4gdGhpcy4kaXRlbXMuZXEoZikKICAgIH0sIGMucHJvdG90eXBlLnRvID0gZnVuY3Rpb24oYSkgewogICAgICAgIHZhciBiID0gdGhpcywKICAgICAgICAgICAgYyA9IHRoaXMuZ2V0SXRlbUluZGV4KHRoaXMuJGFjdGl2ZSA9IHRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpOwogICAgICAgIHJldHVybiBhID4gdGhpcy4kaXRlbXMubGVuZ3RoIC0gMSB8fCAwID4gYSA/IHZvaWQgMCA6IHRoaXMuc2xpZGluZyA/IHRoaXMuJGVsZW1lbnQub25lKCJzbGlkLmJzLmNhcm91c2VsIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGIudG8oYSkKICAgICAgICB9KSA6IGMgPT0gYSA/IHRoaXMucGF1c2UoKS5jeWNsZSgpIDogdGhpcy5zbGlkZShhID4gYyA/ICJuZXh0IiA6ICJwcmV2IiwgdGhpcy4kaXRlbXMuZXEoYSkpCiAgICB9LCBjLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICByZXR1cm4gYiB8fCAodGhpcy5wYXVzZWQgPSAhMCksIHRoaXMuJGVsZW1lbnQuZmluZCgiLm5leHQsIC5wcmV2IikubGVuZ3RoICYmIGEuc3VwcG9ydC50cmFuc2l0aW9uICYmICh0aGlzLiRlbGVtZW50LnRyaWdnZXIoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSwgdGhpcy5jeWNsZSghMCkpLCB0aGlzLmludGVydmFsID0gY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKSwgdGhpcwogICAgfSwgYy5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnNsaWRpbmcgPyB2b2lkIDAgOiB0aGlzLnNsaWRlKCJuZXh0IikKICAgIH0sIGMucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5zbGlkaW5nID8gdm9pZCAwIDogdGhpcy5zbGlkZSgicHJldiIpCiAgICB9LCBjLnByb3RvdHlwZS5zbGlkZSA9IGZ1bmN0aW9uKGIsIGQpIHsKICAgICAgICB2YXIgZSA9IHRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIiksCiAgICAgICAgICAgIGYgPSBkIHx8IHRoaXMuZ2V0SXRlbUZvckRpcmVjdGlvbihiLCBlKSwKICAgICAgICAgICAgZyA9IHRoaXMuaW50ZXJ2YWwsCiAgICAgICAgICAgIGggPSAibmV4dCIgPT0gYiA/ICJsZWZ0IiA6ICJyaWdodCIsCiAgICAgICAgICAgIGkgPSB0aGlzOwogICAgICAgIGlmIChmLmhhc0NsYXNzKCJhY3RpdmUiKSkgcmV0dXJuIHRoaXMuc2xpZGluZyA9ICExOwogICAgICAgIHZhciBqID0gZlswXSwKICAgICAgICAgICAgayA9IGEuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIiwgewogICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogaiwKICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogaAogICAgICAgICAgICB9KTsKICAgICAgICBpZiAodGhpcy4kZWxlbWVudC50cmlnZ2VyKGspLCAhay5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgewogICAgICAgICAgICBpZiAodGhpcy5zbGlkaW5nID0gITAsIGcgJiYgdGhpcy5wYXVzZSgpLCB0aGlzLiRpbmRpY2F0b3JzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgdGhpcy4kaW5kaWNhdG9ycy5maW5kKCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOwogICAgICAgICAgICAgICAgdmFyIGwgPSBhKHRoaXMuJGluZGljYXRvcnMuY2hpbGRyZW4oKVt0aGlzLmdldEl0ZW1JbmRleChmKV0pOwogICAgICAgICAgICAgICAgbCAmJiBsLmFkZENsYXNzKCJhY3RpdmUiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBtID0gYS5FdmVudCgic2xpZC5icy5jYXJvdXNlbCIsIHsKICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGosCiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGgKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBhLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJzbGlkZSIpID8gKGYuYWRkQ2xhc3MoYiksIGZbMF0ub2Zmc2V0V2lkdGgsIGUuYWRkQ2xhc3MoaCksIGYuYWRkQ2xhc3MoaCksIGUub25lKCJic1RyYW5zaXRpb25FbmQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGYucmVtb3ZlQ2xhc3MoW2IsIGhdLmpvaW4oIiAiKSkuYWRkQ2xhc3MoImFjdGl2ZSIpLCBlLnJlbW92ZUNsYXNzKFsiYWN0aXZlIiwgaF0uam9pbigiICIpKSwgaS5zbGlkaW5nID0gITEsIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaS4kZWxlbWVudC50cmlnZ2VyKG0pCiAgICAgICAgICAgICAgICB9LCAwKQogICAgICAgICAgICB9KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pKSA6IChlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSwgZi5hZGRDbGFzcygiYWN0aXZlIiksIHRoaXMuc2xpZGluZyA9ICExLCB0aGlzLiRlbGVtZW50LnRyaWdnZXIobSkpLCBnICYmIHRoaXMuY3ljbGUoKSwgdGhpcwogICAgICAgIH0KICAgIH07CiAgICB2YXIgZCA9IGEuZm4uY2Fyb3VzZWw7CiAgICBhLmZuLmNhcm91c2VsID0gYiwgYS5mbi5jYXJvdXNlbC5Db25zdHJ1Y3RvciA9IGMsIGEuZm4uY2Fyb3VzZWwubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBhLmZuLmNhcm91c2VsID0gZCwgdGhpcwogICAgfTsKICAgIHZhciBlID0gZnVuY3Rpb24oYykgewogICAgICAgIHZhciBkLCBlID0gYSh0aGlzKSwKICAgICAgICAgICAgZiA9IGEoZS5hdHRyKCJkYXRhLXRhcmdldCIpIHx8IChkID0gZS5hdHRyKCJocmVmIikpICYmIGQucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCAiIikpOwogICAgICAgIGlmIChmLmhhc0NsYXNzKCJjYXJvdXNlbCIpKSB7CiAgICAgICAgICAgIHZhciBnID0gYS5leHRlbmQoe30sIGYuZGF0YSgpLCBlLmRhdGEoKSksCiAgICAgICAgICAgICAgICBoID0gZS5hdHRyKCJkYXRhLXNsaWRlLXRvIik7CiAgICAgICAgICAgIGggJiYgKGcuaW50ZXJ2YWwgPSAhMSksIGIuY2FsbChmLCBnKSwgaCAmJiBmLmRhdGEoImJzLmNhcm91c2VsIikudG8oaCksIGMucHJldmVudERlZmF1bHQoKQogICAgICAgIH0KICAgIH07CiAgICBhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGkiLCAiW2RhdGEtc2xpZGVdIiwgZSkub24oImNsaWNrLmJzLmNhcm91c2VsLmRhdGEtYXBpIiwgIltkYXRhLXNsaWRlLXRvXSIsIGUpLCBhKHdpbmRvdykub24oImxvYWQiLCBmdW5jdGlvbigpIHsKICAgICAgICBhKCdbZGF0YS1yaWRlPSJjYXJvdXNlbCJdJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGMgPSBhKHRoaXMpOwogICAgICAgICAgICBiLmNhbGwoYywgYy5kYXRhKCkpCiAgICAgICAgfSkKICAgIH0pCn0oalF1ZXJ5KSwgKyBmdW5jdGlvbihhKSB7CiAgICAidXNlIHN0cmljdCI7CgogICAgZnVuY3Rpb24gYihiKSB7CiAgICAgICAgdmFyIGMsIGQgPSBiLmF0dHIoImRhdGEtdGFyZ2V0IikgfHwgKGMgPSBiLmF0dHIoImhyZWYiKSkgJiYgYy5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sICIiKTsKICAgICAgICByZXR1cm4gYShkKQogICAgfQoKICAgIGZ1bmN0aW9uIGMoYikgewogICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBjID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSBjLmRhdGEoImJzLmNvbGxhcHNlIiksCiAgICAgICAgICAgICAgICBmID0gYS5leHRlbmQoe30sIGQuREVGQVVMVFMsIGMuZGF0YSgpLCAib2JqZWN0IiA9PSB0eXBlb2YgYiAmJiBiKTsKICAgICAgICAgICAgIWUgJiYgZi50b2dnbGUgJiYgL3Nob3d8aGlkZS8udGVzdChiKSAmJiAoZi50b2dnbGUgPSAhMSksIGUgfHwgYy5kYXRhKCJicy5jb2xsYXBzZSIsIGUgPSBuZXcgZCh0aGlzLCBmKSksICJzdHJpbmciID09IHR5cGVvZiBiICYmIGVbYl0oKQogICAgICAgIH0pCiAgICB9CiAgICB2YXIgZCA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICB0aGlzLiRlbGVtZW50ID0gYShiKSwgdGhpcy5vcHRpb25zID0gYS5leHRlbmQoe30sIGQuREVGQVVMVFMsIGMpLCB0aGlzLiR0cmlnZ2VyID0gYSgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2hyZWY9IiMnICsgYi5pZCArICciXSxbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl1bZGF0YS10YXJnZXQ9IiMnICsgYi5pZCArICciXScpLCB0aGlzLnRyYW5zaXRpb25pbmcgPSBudWxsLCB0aGlzLm9wdGlvbnMucGFyZW50ID8gdGhpcy4kcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKSA6IHRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuJGVsZW1lbnQsIHRoaXMuJHRyaWdnZXIpLCB0aGlzLm9wdGlvbnMudG9nZ2xlICYmIHRoaXMudG9nZ2xlKCkKICAgIH07CiAgICBkLlZFUlNJT04gPSAiMy4zLjUiLCBkLlRSQU5TSVRJT05fRFVSQVRJT04gPSAzNTAsIGQuREVGQVVMVFMgPSB7CiAgICAgICAgdG9nZ2xlOiAhMAogICAgfSwgZC5wcm90b3R5cGUuZGltZW5zaW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJ3aWR0aCIpOwogICAgICAgIHJldHVybiBhID8gIndpZHRoIiA6ICJoZWlnaHQiCiAgICB9LCBkLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCF0aGlzLnRyYW5zaXRpb25pbmcgJiYgIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpIHsKICAgICAgICAgICAgdmFyIGIsIGUgPSB0aGlzLiRwYXJlbnQgJiYgdGhpcy4kcGFyZW50LmNoaWxkcmVuKCIucGFuZWwiKS5jaGlsZHJlbigiLmluLCAuY29sbGFwc2luZyIpOwogICAgICAgICAgICBpZiAoIShlICYmIGUubGVuZ3RoICYmIChiID0gZS5kYXRhKCJicy5jb2xsYXBzZSIpLCBiICYmIGIudHJhbnNpdGlvbmluZykpKSB7CiAgICAgICAgICAgICAgICB2YXIgZiA9IGEuRXZlbnQoInNob3cuYnMuY29sbGFwc2UiKTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLiRlbGVtZW50LnRyaWdnZXIoZiksICFmLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgZSAmJiBlLmxlbmd0aCAmJiAoYy5jYWxsKGUsICJoaWRlIiksIGIgfHwgZS5kYXRhKCJicy5jb2xsYXBzZSIsIG51bGwpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHRoaXMuZGltZW5zaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2UiKS5hZGRDbGFzcygiY29sbGFwc2luZyIpW2ddKDApLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAhMCksIHRoaXMuJHRyaWdnZXIucmVtb3ZlQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAhMCksIHRoaXMudHJhbnNpdGlvbmluZyA9IDE7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSBpbiIpW2ddKCIiKSwgdGhpcy50cmFuc2l0aW9uaW5nID0gMCwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJzaG93bi5icy5jb2xsYXBzZSIpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWEuc3VwcG9ydC50cmFuc2l0aW9uKSByZXR1cm4gaC5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gYS5jYW1lbENhc2UoWyJzY3JvbGwiLCBnXS5qb2luKCItIikpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLCBhLnByb3h5KGgsIHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pW2ddKHRoaXMuJGVsZW1lbnRbMF1baV0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBkLnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCF0aGlzLnRyYW5zaXRpb25pbmcgJiYgdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKSkgewogICAgICAgICAgICB2YXIgYiA9IGEuRXZlbnQoImhpZGUuYnMuY29sbGFwc2UiKTsKICAgICAgICAgICAgaWYgKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSwgIWIuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gdGhpcy5kaW1lbnNpb24oKTsKICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnRbY10odGhpcy4kZWxlbWVudFtjXSgpKVswXS5vZmZzZXRIZWlnaHQsIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3MoImNvbGxhcHNpbmciKS5yZW1vdmVDbGFzcygiY29sbGFwc2UgaW4iKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwgITEpLCB0aGlzLiR0cmlnZ2VyLmFkZENsYXNzKCJjb2xsYXBzZWQiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwgITEpLCB0aGlzLnRyYW5zaXRpb25pbmcgPSAxOwogICAgICAgICAgICAgICAgdmFyIGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSAwLCB0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJjb2xsYXBzaW5nIikuYWRkQ2xhc3MoImNvbGxhcHNlIikudHJpZ2dlcigiaGlkZGVuLmJzLmNvbGxhcHNlIikKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gYS5zdXBwb3J0LnRyYW5zaXRpb24gPyB2b2lkIHRoaXMuJGVsZW1lbnRbY10oMCkub25lKCJic1RyYW5zaXRpb25FbmQiLCBhLnByb3h5KGUsIHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pIDogZS5jYWxsKHRoaXMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBkLnByb3RvdHlwZS50b2dnbGUgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikgPyAiaGlkZSIgOiAic2hvdyJdKCkKICAgIH0sIGQucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBhKHRoaXMub3B0aW9ucy5wYXJlbnQpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXBhcmVudD0iJyArIHRoaXMub3B0aW9ucy5wYXJlbnQgKyAnIl0nKS5lYWNoKGEucHJveHkoZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICB2YXIgZSA9IGEoZCk7CiAgICAgICAgICAgIHRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKGIoZSksIGUpCiAgICAgICAgfSwgdGhpcykpLmVuZCgpCiAgICB9LCBkLnByb3RvdHlwZS5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgdmFyIGMgPSBhLmhhc0NsYXNzKCJpbiIpOwogICAgICAgIGEuYXR0cigiYXJpYS1leHBhbmRlZCIsIGMpLCBiLnRvZ2dsZUNsYXNzKCJjb2xsYXBzZWQiLCAhYykuYXR0cigiYXJpYS1leHBhbmRlZCIsIGMpCiAgICB9OwogICAgdmFyIGUgPSBhLmZuLmNvbGxhcHNlOwogICAgYS5mbi5jb2xsYXBzZSA9IGMsIGEuZm4uY29sbGFwc2UuQ29uc3RydWN0b3IgPSBkLCBhLmZuLmNvbGxhcHNlLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gYS5mbi5jb2xsYXBzZSA9IGUsIHRoaXMKICAgIH0sIGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jb2xsYXBzZS5kYXRhLWFwaSIsICdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl0nLCBmdW5jdGlvbihkKSB7CiAgICAgICAgdmFyIGUgPSBhKHRoaXMpOwogICAgICAgIGUuYXR0cigiZGF0YS10YXJnZXQiKSB8fCBkLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdmFyIGYgPSBiKGUpLAogICAgICAgICAgICBnID0gZi5kYXRhKCJicy5jb2xsYXBzZSIpLAogICAgICAgICAgICBoID0gZyA/ICJ0b2dnbGUiIDogZS5kYXRhKCk7CiAgICAgICAgYy5jYWxsKGYsIGgpCiAgICB9KQp9KGpRdWVyeSksICsgZnVuY3Rpb24oYSkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGIoYikgewogICAgICAgIHZhciBjID0gYi5hdHRyKCJkYXRhLXRhcmdldCIpOwogICAgICAgIGMgfHwgKGMgPSBiLmF0dHIoImhyZWYiKSwgYyA9IGMgJiYgLyNbQS1aYS16XS8udGVzdChjKSAmJiBjLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywgIiIpKTsKICAgICAgICB2YXIgZCA9IGMgJiYgYShjKTsKICAgICAgICByZXR1cm4gZCAmJiBkLmxlbmd0aCA/IGQgOiBiLnBhcmVudCgpCiAgICB9CgogICAgZnVuY3Rpb24gYyhjKSB7CiAgICAgICAgYyAmJiAzID09PSBjLndoaWNoIHx8IChhKGUpLnJlbW92ZSgpLCBhKGYpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBkID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSBiKGQpLAogICAgICAgICAgICAgICAgZiA9IHsKICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBlLmhhc0NsYXNzKCJvcGVuIikgJiYgKGMgJiYgImNsaWNrIiA9PSBjLnR5cGUgJiYgL2lucHV0fHRleHRhcmVhL2kudGVzdChjLnRhcmdldC50YWdOYW1lKSAmJiBhLmNvbnRhaW5zKGVbMF0sIGMudGFyZ2V0KSB8fCAoZS50cmlnZ2VyKGMgPSBhLkV2ZW50KCJoaWRlLmJzLmRyb3Bkb3duIiwgZikpLCBjLmlzRGVmYXVsdFByZXZlbnRlZCgpIHx8IChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKSwgZS5yZW1vdmVDbGFzcygib3BlbiIpLnRyaWdnZXIoImhpZGRlbi5icy5kcm9wZG93biIsIGYpKSkpCiAgICAgICAgfSkpCiAgICB9CgogICAgZnVuY3Rpb24gZChiKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGMgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgZCA9IGMuZGF0YSgiYnMuZHJvcGRvd24iKTsKICAgICAgICAgICAgZCB8fCBjLmRhdGEoImJzLmRyb3Bkb3duIiwgZCA9IG5ldyBnKHRoaXMpKSwgInN0cmluZyIgPT0gdHlwZW9mIGIgJiYgZFtiXS5jYWxsKGMpCiAgICAgICAgfSkKICAgIH0KICAgIHZhciBlID0gIi5kcm9wZG93bi1iYWNrZHJvcCIsCiAgICAgICAgZiA9ICdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLAogICAgICAgIGcgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgIGEoYikub24oImNsaWNrLmJzLmRyb3Bkb3duIiwgdGhpcy50b2dnbGUpCiAgICAgICAgfTsKICAgIGcuVkVSU0lPTiA9ICIzLjMuNSIsIGcucHJvdG90eXBlLnRvZ2dsZSA9IGZ1bmN0aW9uKGQpIHsKICAgICAgICB2YXIgZSA9IGEodGhpcyk7CiAgICAgICAgaWYgKCFlLmlzKCIuZGlzYWJsZWQsIDpkaXNhYmxlZCIpKSB7CiAgICAgICAgICAgIHZhciBmID0gYihlKSwKICAgICAgICAgICAgICAgIGcgPSBmLmhhc0NsYXNzKCJvcGVuIik7CiAgICAgICAgICAgIGlmIChjKCksICFnKSB7CiAgICAgICAgICAgICAgICAib250b3VjaHN0YXJ0IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgIWYuY2xvc2VzdCgiLm5hdmJhci1uYXYiKS5sZW5ndGggJiYgYShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuYWRkQ2xhc3MoImRyb3Bkb3duLWJhY2tkcm9wIikuaW5zZXJ0QWZ0ZXIoYSh0aGlzKSkub24oImNsaWNrIiwgYyk7CiAgICAgICAgICAgICAgICB2YXIgaCA9IHsKICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgaWYgKGYudHJpZ2dlcihkID0gYS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsIGgpKSwgZC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgZS50cmlnZ2VyKCJmb2N1cyIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAidHJ1ZSIpLCBmLnRvZ2dsZUNsYXNzKCJvcGVuIikudHJpZ2dlcigic2hvd24uYnMuZHJvcGRvd24iLCBoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0KICAgIH0sIGcucHJvdG90eXBlLmtleWRvd24gPSBmdW5jdGlvbihjKSB7CiAgICAgICAgaWYgKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGMud2hpY2gpICYmICEvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpKSB7CiAgICAgICAgICAgIHZhciBkID0gYSh0aGlzKTsKICAgICAgICAgICAgaWYgKGMucHJldmVudERlZmF1bHQoKSwgYy5zdG9wUHJvcGFnYXRpb24oKSwgIWQuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYihkKSwKICAgICAgICAgICAgICAgICAgICBnID0gZS5oYXNDbGFzcygib3BlbiIpOwogICAgICAgICAgICAgICAgaWYgKCFnICYmIDI3ICE9IGMud2hpY2ggfHwgZyAmJiAyNyA9PSBjLndoaWNoKSByZXR1cm4gMjcgPT0gYy53aGljaCAmJiBlLmZpbmQoZikudHJpZ2dlcigiZm9jdXMiKSwgZC50cmlnZ2VyKCJjbGljayIpOwogICAgICAgICAgICAgICAgdmFyIGggPSAiIGxpOm5vdCguZGlzYWJsZWQpOnZpc2libGUgYSIsCiAgICAgICAgICAgICAgICAgICAgaSA9IGUuZmluZCgiLmRyb3Bkb3duLW1lbnUiICsgaCk7CiAgICAgICAgICAgICAgICBpZiAoaS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaiA9IGkuaW5kZXgoYy50YXJnZXQpOwogICAgICAgICAgICAgICAgICAgIDM4ID09IGMud2hpY2ggJiYgaiA+IDAgJiYgai0tLCA0MCA9PSBjLndoaWNoICYmIGogPCBpLmxlbmd0aCAtIDEgJiYgaisrLCB+aiB8fCAoaiA9IDApLCBpLmVxKGopLnRyaWdnZXIoImZvY3VzIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICB2YXIgaCA9IGEuZm4uZHJvcGRvd247CiAgICBhLmZuLmRyb3Bkb3duID0gZCwgYS5mbi5kcm9wZG93bi5Db25zdHJ1Y3RvciA9IGcsIGEuZm4uZHJvcGRvd24ubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBhLmZuLmRyb3Bkb3duID0gaCwgdGhpcwogICAgfSwgYShkb2N1bWVudCkub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwgYykub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwgIi5kcm9wZG93biBmb3JtIiwgZnVuY3Rpb24oYSkgewogICAgICAgIGEuc3RvcFByb3BhZ2F0aW9uKCkKICAgIH0pLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsIGYsIGcucHJvdG90eXBlLnRvZ2dsZSkub24oImtleWRvd24uYnMuZHJvcGRvd24uZGF0YS1hcGkiLCBmLCBnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsICIuZHJvcGRvd24tbWVudSIsIGcucHJvdG90eXBlLmtleWRvd24pCn0oalF1ZXJ5KSwgKyBmdW5jdGlvbihhKSB7CiAgICAidXNlIHN0cmljdCI7CgogICAgZnVuY3Rpb24gYihiLCBkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgZiA9IGUuZGF0YSgiYnMubW9kYWwiKSwKICAgICAgICAgICAgICAgIGcgPSBhLmV4dGVuZCh7fSwgYy5ERUZBVUxUUywgZS5kYXRhKCksICJvYmplY3QiID09IHR5cGVvZiBiICYmIGIpOwogICAgICAgICAgICBmIHx8IGUuZGF0YSgiYnMubW9kYWwiLCBmID0gbmV3IGModGhpcywgZykpLCAic3RyaW5nIiA9PSB0eXBlb2YgYiA/IGZbYl0oZCkgOiBnLnNob3cgJiYgZi5zaG93KGQpCiAgICAgICAgfSkKICAgIH0KICAgIHZhciBjID0gZnVuY3Rpb24oYiwgYykgewogICAgICAgIHRoaXMub3B0aW9ucyA9IGMsIHRoaXMuJGJvZHkgPSBhKGRvY3VtZW50LmJvZHkpLCB0aGlzLiRlbGVtZW50ID0gYShiKSwgdGhpcy4kZGlhbG9nID0gdGhpcy4kZWxlbWVudC5maW5kKCIubW9kYWwtZGlhbG9nIiksIHRoaXMuJGJhY2tkcm9wID0gbnVsbCwgdGhpcy5pc1Nob3duID0gbnVsbCwgdGhpcy5vcmlnaW5hbEJvZHlQYWQgPSBudWxsLCB0aGlzLnNjcm9sbGJhcldpZHRoID0gMCwgdGhpcy5pZ25vcmVCYWNrZHJvcENsaWNrID0gITEsIHRoaXMub3B0aW9ucy5yZW1vdGUgJiYgdGhpcy4kZWxlbWVudC5maW5kKCIubW9kYWwtY29udGVudCIpLmxvYWQodGhpcy5vcHRpb25zLnJlbW90ZSwgYS5wcm94eShmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJsb2FkZWQuYnMubW9kYWwiKQogICAgICAgIH0sIHRoaXMpKQogICAgfTsKICAgIGMuVkVSU0lPTiA9ICIzLjMuNSIsIGMuVFJBTlNJVElPTl9EVVJBVElPTiA9IDMwMCwgYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OID0gMTUwLCBjLkRFRkFVTFRTID0gewogICAgICAgIGJhY2tkcm9wOiAhMCwKICAgICAgICBrZXlib2FyZDogITAsCiAgICAgICAgc2hvdzogITAKICAgIH0sIGMucHJvdG90eXBlLnRvZ2dsZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3coYSkKICAgIH0sIGMucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgdmFyIGQgPSB0aGlzLAogICAgICAgICAgICBlID0gYS5FdmVudCgic2hvdy5icy5tb2RhbCIsIHsKICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGIKICAgICAgICAgICAgfSk7CiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGUpLCB0aGlzLmlzU2hvd24gfHwgZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCAodGhpcy5pc1Nob3duID0gITAsIHRoaXMuY2hlY2tTY3JvbGxiYXIoKSwgdGhpcy5zZXRTY3JvbGxiYXIoKSwgdGhpcy4kYm9keS5hZGRDbGFzcygibW9kYWwtb3BlbiIpLCB0aGlzLmVzY2FwZSgpLCB0aGlzLnJlc2l6ZSgpLCB0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIiwgJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLCBhLnByb3h5KHRoaXMuaGlkZSwgdGhpcykpLCB0aGlzLiRkaWFsb2cub24oIm1vdXNlZG93bi5kaXNtaXNzLmJzLm1vZGFsIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGQuJGVsZW1lbnQub25lKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICBhKGIudGFyZ2V0KS5pcyhkLiRlbGVtZW50KSAmJiAoZC5pZ25vcmVCYWNrZHJvcENsaWNrID0gITApCiAgICAgICAgICAgIH0pCiAgICAgICAgfSksIHRoaXMuYmFja2Ryb3AoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gYS5zdXBwb3J0LnRyYW5zaXRpb24gJiYgZC4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpOwogICAgICAgICAgICBkLiRlbGVtZW50LnBhcmVudCgpLmxlbmd0aCB8fCBkLiRlbGVtZW50LmFwcGVuZFRvKGQuJGJvZHkpLCBkLiRlbGVtZW50LnNob3coKS5zY3JvbGxUb3AoMCksIGQuYWRqdXN0RGlhbG9nKCksIGUgJiYgZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCwgZC4kZWxlbWVudC5hZGRDbGFzcygiaW4iKSwgZC5lbmZvcmNlRm9jdXMoKTsKICAgICAgICAgICAgdmFyIGYgPSBhLkV2ZW50KCJzaG93bi5icy5tb2RhbCIsIHsKICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGIKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGUgPyBkLiRkaWFsb2cub25lKCJic1RyYW5zaXRpb25FbmQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGQuJGVsZW1lbnQudHJpZ2dlcigiZm9jdXMiKS50cmlnZ2VyKGYpCiAgICAgICAgICAgIH0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikgOiBkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKQogICAgICAgIH0pKQogICAgfSwgYy5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICBiICYmIGIucHJldmVudERlZmF1bHQoKSwgYiA9IGEuRXZlbnQoImhpZGUuYnMubW9kYWwiKSwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpLCB0aGlzLmlzU2hvd24gJiYgIWIuaXNEZWZhdWx0UHJldmVudGVkKCkgJiYgKHRoaXMuaXNTaG93biA9ICExLCB0aGlzLmVzY2FwZSgpLCB0aGlzLnJlc2l6ZSgpLCBhKGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKSwgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiaW4iKS5vZmYoImNsaWNrLmRpc21pc3MuYnMubW9kYWwiKS5vZmYoIm1vdXNldXAuZGlzbWlzcy5icy5tb2RhbCIpLCB0aGlzLiRkaWFsb2cub2ZmKCJtb3VzZWRvd24uZGlzbWlzcy5icy5tb2RhbCIpLCBhLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIikgPyB0aGlzLiRlbGVtZW50Lm9uZSgiYnNUcmFuc2l0aW9uRW5kIiwgYS5wcm94eSh0aGlzLmhpZGVNb2RhbCwgdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikgOiB0aGlzLmhpZGVNb2RhbCgpKQogICAgfSwgYy5wcm90b3R5cGUuZW5mb3JjZUZvY3VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgYShkb2N1bWVudCkub2ZmKCJmb2N1c2luLmJzLm1vZGFsIikub24oImZvY3VzaW4uYnMubW9kYWwiLCBhLnByb3h5KGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdGhpcy4kZWxlbWVudFswXSA9PT0gYS50YXJnZXQgfHwgdGhpcy4kZWxlbWVudC5oYXMoYS50YXJnZXQpLmxlbmd0aCB8fCB0aGlzLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikKICAgICAgICB9LCB0aGlzKSkKICAgIH0sIGMucHJvdG90eXBlLmVzY2FwZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuaXNTaG93biAmJiB0aGlzLm9wdGlvbnMua2V5Ym9hcmQgPyB0aGlzLiRlbGVtZW50Lm9uKCJrZXlkb3duLmRpc21pc3MuYnMubW9kYWwiLCBhLnByb3h5KGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgMjcgPT0gYS53aGljaCAmJiB0aGlzLmhpZGUoKQogICAgICAgIH0sIHRoaXMpKSA6IHRoaXMuaXNTaG93biB8fCB0aGlzLiRlbGVtZW50Lm9mZigia2V5ZG93bi5kaXNtaXNzLmJzLm1vZGFsIikKICAgIH0sIGMucHJvdG90eXBlLnJlc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuaXNTaG93biA/IGEod2luZG93KS5vbigicmVzaXplLmJzLm1vZGFsIiwgYS5wcm94eSh0aGlzLmhhbmRsZVVwZGF0ZSwgdGhpcykpIDogYSh3aW5kb3cpLm9mZigicmVzaXplLmJzLm1vZGFsIikKICAgIH0sIGMucHJvdG90eXBlLmhpZGVNb2RhbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBhID0gdGhpczsKICAgICAgICB0aGlzLiRlbGVtZW50LmhpZGUoKSwgdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgYS4kYm9keS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLCBhLnJlc2V0QWRqdXN0bWVudHMoKSwgYS5yZXNldFNjcm9sbGJhcigpLCBhLiRlbGVtZW50LnRyaWdnZXIoImhpZGRlbi5icy5tb2RhbCIpCiAgICAgICAgfSkKICAgIH0sIGMucHJvdG90eXBlLnJlbW92ZUJhY2tkcm9wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy4kYmFja2Ryb3AgJiYgdGhpcy4kYmFja2Ryb3AucmVtb3ZlKCksIHRoaXMuJGJhY2tkcm9wID0gbnVsbAogICAgfSwgYy5wcm90b3R5cGUuYmFja2Ryb3AgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgdmFyIGQgPSB0aGlzLAogICAgICAgICAgICBlID0gdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpID8gImZhZGUiIDogIiI7CiAgICAgICAgaWYgKHRoaXMuaXNTaG93biAmJiB0aGlzLm9wdGlvbnMuYmFja2Ryb3ApIHsKICAgICAgICAgICAgdmFyIGYgPSBhLnN1cHBvcnQudHJhbnNpdGlvbiAmJiBlOwogICAgICAgICAgICBpZiAodGhpcy4kYmFja2Ryb3AgPSBhKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hZGRDbGFzcygibW9kYWwtYmFja2Ryb3AgIiArIGUpLmFwcGVuZFRvKHRoaXMuJGJvZHkpLCB0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIiwgYS5wcm94eShmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaWdub3JlQmFja2Ryb3BDbGljayA/IHZvaWQodGhpcy5pZ25vcmVCYWNrZHJvcENsaWNrID0gITEpIDogdm9pZChhLnRhcmdldCA9PT0gYS5jdXJyZW50VGFyZ2V0ICYmICgic3RhdGljIiA9PSB0aGlzLm9wdGlvbnMuYmFja2Ryb3AgPyB0aGlzLiRlbGVtZW50WzBdLmZvY3VzKCkgOiB0aGlzLmhpZGUoKSkpCiAgICAgICAgICAgICAgICB9LCB0aGlzKSksIGYgJiYgdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGgsIHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCJpbiIpLCAhYikgcmV0dXJuOwogICAgICAgICAgICBmID8gdGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLCBiKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLkJBQ0tEUk9QX1RSQU5TSVRJT05fRFVSQVRJT04pIDogYigpCiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc1Nob3duICYmIHRoaXMuJGJhY2tkcm9wKSB7CiAgICAgICAgICAgIHRoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpOwogICAgICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZC5yZW1vdmVCYWNrZHJvcCgpLCBiICYmIGIoKQogICAgICAgICAgICB9OwogICAgICAgICAgICBhLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIikgPyB0aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsIGcpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTikgOiBnKCkKICAgICAgICB9IGVsc2UgYiAmJiBiKCkKICAgIH0sIGMucHJvdG90eXBlLmhhbmRsZVVwZGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuYWRqdXN0RGlhbG9nKCkKICAgIH0sIGMucHJvdG90eXBlLmFkanVzdERpYWxvZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBhID0gdGhpcy4kZWxlbWVudFswXS5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OwogICAgICAgIHRoaXMuJGVsZW1lbnQuY3NzKHsKICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICF0aGlzLmJvZHlJc092ZXJmbG93aW5nICYmIGEgPyB0aGlzLnNjcm9sbGJhcldpZHRoIDogIiIsCiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogdGhpcy5ib2R5SXNPdmVyZmxvd2luZyAmJiAhYSA/IHRoaXMuc2Nyb2xsYmFyV2lkdGggOiAiIgogICAgICAgIH0pCiAgICB9LCBjLnByb3RvdHlwZS5yZXNldEFkanVzdG1lbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy4kZWxlbWVudC5jc3MoewogICAgICAgICAgICBwYWRkaW5nTGVmdDogIiIsCiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogIiIKICAgICAgICB9KQogICAgfSwgYy5wcm90b3R5cGUuY2hlY2tTY3JvbGxiYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYSA9IHdpbmRvdy5pbm5lcldpZHRoOwogICAgICAgIGlmICghYSkgewogICAgICAgICAgICB2YXIgYiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgYSA9IGIucmlnaHQgLSBNYXRoLmFicyhiLmxlZnQpCiAgICAgICAgfQogICAgICAgIHRoaXMuYm9keUlzT3ZlcmZsb3dpbmcgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgYSwgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IHRoaXMubWVhc3VyZVNjcm9sbGJhcigpCiAgICB9LCBjLnByb3RvdHlwZS5zZXRTY3JvbGxiYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYSA9IHBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0IikgfHwgMCwgMTApOwogICAgICAgIHRoaXMub3JpZ2luYWxCb2R5UGFkID0gZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgfHwgIiIsIHRoaXMuYm9keUlzT3ZlcmZsb3dpbmcgJiYgdGhpcy4kYm9keS5jc3MoInBhZGRpbmctcmlnaHQiLCBhICsgdGhpcy5zY3JvbGxiYXJXaWR0aCkKICAgIH0sIGMucHJvdG90eXBlLnJlc2V0U2Nyb2xsYmFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy4kYm9keS5jc3MoInBhZGRpbmctcmlnaHQiLCB0aGlzLm9yaWdpbmFsQm9keVBhZCkKICAgIH0sIGMucHJvdG90eXBlLm1lYXN1cmVTY3JvbGxiYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIGEuY2xhc3NOYW1lID0gIm1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIiwgdGhpcy4kYm9keS5hcHBlbmQoYSk7CiAgICAgICAgdmFyIGIgPSBhLm9mZnNldFdpZHRoIC0gYS5jbGllbnRXaWR0aDsKICAgICAgICByZXR1cm4gdGhpcy4kYm9keVswXS5yZW1vdmVDaGlsZChhKSwgYgogICAgfTsKICAgIHZhciBkID0gYS5mbi5tb2RhbDsKICAgIGEuZm4ubW9kYWwgPSBiLCBhLmZuLm1vZGFsLkNvbnN0cnVjdG9yID0gYywgYS5mbi5tb2RhbC5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGEuZm4ubW9kYWwgPSBkLCB0aGlzCiAgICB9LCBhKGRvY3VtZW50KS5vbigiY2xpY2suYnMubW9kYWwuZGF0YS1hcGkiLCAnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJywgZnVuY3Rpb24oYykgewogICAgICAgIHZhciBkID0gYSh0aGlzKSwKICAgICAgICAgICAgZSA9IGQuYXR0cigiaHJlZiIpLAogICAgICAgICAgICBmID0gYShkLmF0dHIoImRhdGEtdGFyZ2V0IikgfHwgZSAmJiBlLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywgIiIpKSwKICAgICAgICAgICAgZyA9IGYuZGF0YSgiYnMubW9kYWwiKSA/ICJ0b2dnbGUiIDogYS5leHRlbmQoewogICAgICAgICAgICAgICAgcmVtb3RlOiAhLyMvLnRlc3QoZSkgJiYgZQogICAgICAgICAgICB9LCBmLmRhdGEoKSwgZC5kYXRhKCkpOwogICAgICAgIGQuaXMoImEiKSAmJiBjLnByZXZlbnREZWZhdWx0KCksIGYub25lKCJzaG93LmJzLm1vZGFsIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICBhLmlzRGVmYXVsdFByZXZlbnRlZCgpIHx8IGYub25lKCJoaWRkZW4uYnMubW9kYWwiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGQuaXMoIjp2aXNpYmxlIikgJiYgZC50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSksIGIuY2FsbChmLCBnLCB0aGlzKQogICAgfSkKfShqUXVlcnkpLCArIGZ1bmN0aW9uKGEpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBiKGIpIHsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZCA9IGEodGhpcyksCiAgICAgICAgICAgICAgICBlID0gZC5kYXRhKCJicy50b29sdGlwIiksCiAgICAgICAgICAgICAgICBmID0gIm9iamVjdCIgPT0gdHlwZW9mIGIgJiYgYjsKICAgICAgICAgICAgKGUgfHwgIS9kZXN0cm95fGhpZGUvLnRlc3QoYikpICYmIChlIHx8IGQuZGF0YSgiYnMudG9vbHRpcCIsIGUgPSBuZXcgYyh0aGlzLCBmKSksICJzdHJpbmciID09IHR5cGVvZiBiICYmIGVbYl0oKSkKICAgICAgICB9KQogICAgfQogICAgdmFyIGMgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgdGhpcy50eXBlID0gbnVsbCwgdGhpcy5vcHRpb25zID0gbnVsbCwgdGhpcy5lbmFibGVkID0gbnVsbCwgdGhpcy50aW1lb3V0ID0gbnVsbCwgdGhpcy5ob3ZlclN0YXRlID0gbnVsbCwgdGhpcy4kZWxlbWVudCA9IG51bGwsIHRoaXMuaW5TdGF0ZSA9IG51bGwsIHRoaXMuaW5pdCgidG9vbHRpcCIsIGEsIGIpCiAgICB9OwogICAgYy5WRVJTSU9OID0gIjMuMy41IiwgYy5UUkFOU0lUSU9OX0RVUkFUSU9OID0gMTUwLCBjLkRFRkFVTFRTID0gewogICAgICAgIGFuaW1hdGlvbjogITAsCiAgICAgICAgcGxhY2VtZW50OiAidG9wIiwKICAgICAgICBzZWxlY3RvcjogITEsCiAgICAgICAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPSJ0b29sdGlwIiByb2xlPSJ0b29sdGlwIj48ZGl2IGNsYXNzPSJ0b29sdGlwLWFycm93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0b29sdGlwLWlubmVyIj48L2Rpdj48L2Rpdj4nLAogICAgICAgIHRyaWdnZXI6ICJob3ZlciBmb2N1cyIsCiAgICAgICAgdGl0bGU6ICIiLAogICAgICAgIGRlbGF5OiAwLAogICAgICAgIGh0bWw6ICExLAogICAgICAgIGNvbnRhaW5lcjogITEsCiAgICAgICAgdmlld3BvcnQ6IHsKICAgICAgICAgICAgc2VsZWN0b3I6ICJib2R5IiwKICAgICAgICAgICAgcGFkZGluZzogMAogICAgICAgIH0KICAgIH0sIGMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihiLCBjLCBkKSB7CiAgICAgICAgaWYgKHRoaXMuZW5hYmxlZCA9ICEwLCB0aGlzLnR5cGUgPSBiLCB0aGlzLiRlbGVtZW50ID0gYShjKSwgdGhpcy5vcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKGQpLCB0aGlzLiR2aWV3cG9ydCA9IHRoaXMub3B0aW9ucy52aWV3cG9ydCAmJiBhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpID8gdGhpcy5vcHRpb25zLnZpZXdwb3J0LmNhbGwodGhpcywgdGhpcy4kZWxlbWVudCkgOiB0aGlzLm9wdGlvbnMudmlld3BvcnQuc2VsZWN0b3IgfHwgdGhpcy5vcHRpb25zLnZpZXdwb3J0KSwgdGhpcy5pblN0YXRlID0gewogICAgICAgICAgICAgICAgY2xpY2s6ICExLAogICAgICAgICAgICAgICAgaG92ZXI6ICExLAogICAgICAgICAgICAgICAgZm9jdXM6ICExCiAgICAgICAgICAgIH0sIHRoaXMuJGVsZW1lbnRbMF0gaW5zdGFuY2VvZiBkb2N1bWVudC5jb25zdHJ1Y3RvciAmJiAhdGhpcy5vcHRpb25zLnNlbGVjdG9yKSB0aHJvdyBuZXcgRXJyb3IoImBzZWxlY3RvcmAgb3B0aW9uIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gaW5pdGlhbGl6aW5nICIgKyB0aGlzLnR5cGUgKyAiIG9uIHRoZSB3aW5kb3cuZG9jdW1lbnQgb2JqZWN0ISIpOwogICAgICAgIGZvciAodmFyIGUgPSB0aGlzLm9wdGlvbnMudHJpZ2dlci5zcGxpdCgiICIpLCBmID0gZS5sZW5ndGg7IGYtLTspIHsKICAgICAgICAgICAgdmFyIGcgPSBlW2ZdOwogICAgICAgICAgICBpZiAoImNsaWNrIiA9PSBnKSB0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iICsgdGhpcy50eXBlLCB0aGlzLm9wdGlvbnMuc2VsZWN0b3IsIGEucHJveHkodGhpcy50b2dnbGUsIHRoaXMpKTsKICAgICAgICAgICAgZWxzZSBpZiAoIm1hbnVhbCIgIT0gZykgewogICAgICAgICAgICAgICAgdmFyIGggPSAiaG92ZXIiID09IGcgPyAibW91c2VlbnRlciIgOiAiZm9jdXNpbiIsCiAgICAgICAgICAgICAgICAgICAgaSA9ICJob3ZlciIgPT0gZyA/ICJtb3VzZWxlYXZlIiA6ICJmb2N1c291dCI7CiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50Lm9uKGggKyAiLiIgKyB0aGlzLnR5cGUsIHRoaXMub3B0aW9ucy5zZWxlY3RvciwgYS5wcm94eSh0aGlzLmVudGVyLCB0aGlzKSksIHRoaXMuJGVsZW1lbnQub24oaSArICIuIiArIHRoaXMudHlwZSwgdGhpcy5vcHRpb25zLnNlbGVjdG9yLCBhLnByb3h5KHRoaXMubGVhdmUsIHRoaXMpKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRoaXMub3B0aW9ucy5zZWxlY3RvciA/IHRoaXMuX29wdGlvbnMgPSBhLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCB7CiAgICAgICAgICAgIHRyaWdnZXI6ICJtYW51YWwiLAogICAgICAgICAgICBzZWxlY3RvcjogIiIKICAgICAgICB9KSA6IHRoaXMuZml4VGl0bGUoKQogICAgfSwgYy5wcm90b3R5cGUuZ2V0RGVmYXVsdHMgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gYy5ERUZBVUxUUwogICAgfSwgYy5wcm90b3R5cGUuZ2V0T3B0aW9ucyA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICByZXR1cm4gYiA9IGEuZXh0ZW5kKHt9LCB0aGlzLmdldERlZmF1bHRzKCksIHRoaXMuJGVsZW1lbnQuZGF0YSgpLCBiKSwgYi5kZWxheSAmJiAibnVtYmVyIiA9PSB0eXBlb2YgYi5kZWxheSAmJiAoYi5kZWxheSA9IHsKICAgICAgICAgICAgc2hvdzogYi5kZWxheSwKICAgICAgICAgICAgaGlkZTogYi5kZWxheQogICAgICAgIH0pLCBiCiAgICB9LCBjLnByb3RvdHlwZS5nZXREZWxlZ2F0ZU9wdGlvbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYiA9IHt9LAogICAgICAgICAgICBjID0gdGhpcy5nZXREZWZhdWx0cygpOwogICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zICYmIGEuZWFjaCh0aGlzLl9vcHRpb25zLCBmdW5jdGlvbihhLCBkKSB7CiAgICAgICAgICAgIGNbYV0gIT0gZCAmJiAoYlthXSA9IGQpCiAgICAgICAgfSksIGIKICAgIH0sIGMucHJvdG90eXBlLmVudGVyID0gZnVuY3Rpb24oYikgewogICAgICAgIHZhciBjID0gYiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IgPyBiIDogYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIgKyB0aGlzLnR5cGUpOwogICAgICAgIHJldHVybiBjIHx8IChjID0gbmV3IHRoaXMuY29uc3RydWN0b3IoYi5jdXJyZW50VGFyZ2V0LCB0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSwgYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIgKyB0aGlzLnR5cGUsIGMpKSwgYiBpbnN0YW5jZW9mIGEuRXZlbnQgJiYgKGMuaW5TdGF0ZVsiZm9jdXNpbiIgPT0gYi50eXBlID8gImZvY3VzIiA6ICJob3ZlciJdID0gITApLCBjLnRpcCgpLmhhc0NsYXNzKCJpbiIpIHx8ICJpbiIgPT0gYy5ob3ZlclN0YXRlID8gdm9pZChjLmhvdmVyU3RhdGUgPSAiaW4iKSA6IChjbGVhclRpbWVvdXQoYy50aW1lb3V0KSwgYy5ob3ZlclN0YXRlID0gImluIiwgYy5vcHRpb25zLmRlbGF5ICYmIGMub3B0aW9ucy5kZWxheS5zaG93ID8gdm9pZChjLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAiaW4iID09IGMuaG92ZXJTdGF0ZSAmJiBjLnNob3coKQogICAgICAgIH0sIGMub3B0aW9ucy5kZWxheS5zaG93KSkgOiBjLnNob3coKSkKICAgIH0sIGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWUgPSBmdW5jdGlvbigpIHsKICAgICAgICBmb3IgKHZhciBhIGluIHRoaXMuaW5TdGF0ZSkKICAgICAgICAgICAgaWYgKHRoaXMuaW5TdGF0ZVthXSkgcmV0dXJuICEwOwogICAgICAgIHJldHVybiAhMQogICAgfSwgYy5wcm90b3R5cGUubGVhdmUgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgdmFyIGMgPSBiIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3RvciA/IGIgOiBhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIiArIHRoaXMudHlwZSk7CiAgICAgICAgcmV0dXJuIGMgfHwgKGMgPSBuZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsIHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLCBhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIiArIHRoaXMudHlwZSwgYykpLCBiIGluc3RhbmNlb2YgYS5FdmVudCAmJiAoYy5pblN0YXRlWyJmb2N1c291dCIgPT0gYi50eXBlID8gImZvY3VzIiA6ICJob3ZlciJdID0gITEpLCBjLmlzSW5TdGF0ZVRydWUoKSA/IHZvaWQgMCA6IChjbGVhclRpbWVvdXQoYy50aW1lb3V0KSwgYy5ob3ZlclN0YXRlID0gIm91dCIsIGMub3B0aW9ucy5kZWxheSAmJiBjLm9wdGlvbnMuZGVsYXkuaGlkZSA/IHZvaWQoYy50aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIm91dCIgPT0gYy5ob3ZlclN0YXRlICYmIGMuaGlkZSgpCiAgICAgICAgfSwgYy5vcHRpb25zLmRlbGF5LmhpZGUpKSA6IGMuaGlkZSgpKQogICAgfSwgYy5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBiID0gYS5FdmVudCgic2hvdy5icy4iICsgdGhpcy50eXBlKTsKICAgICAgICBpZiAodGhpcy5oYXNDb250ZW50KCkgJiYgdGhpcy5lbmFibGVkKSB7CiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKTsKICAgICAgICAgICAgdmFyIGQgPSBhLmNvbnRhaW5zKHRoaXMuJGVsZW1lbnRbMF0ub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuJGVsZW1lbnRbMF0pOwogICAgICAgICAgICBpZiAoYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCAhZCkgcmV0dXJuOwogICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICBmID0gdGhpcy50aXAoKSwKICAgICAgICAgICAgICAgIGcgPSB0aGlzLmdldFVJRCh0aGlzLnR5cGUpOwogICAgICAgICAgICB0aGlzLnNldENvbnRlbnQoKSwgZi5hdHRyKCJpZCIsIGcpLCB0aGlzLiRlbGVtZW50LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLCBnKSwgdGhpcy5vcHRpb25zLmFuaW1hdGlvbiAmJiBmLmFkZENsYXNzKCJmYWRlIik7CiAgICAgICAgICAgIHZhciBoID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5vcHRpb25zLnBsYWNlbWVudCA/IHRoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLCBmWzBdLCB0aGlzLiRlbGVtZW50WzBdKSA6IHRoaXMub3B0aW9ucy5wbGFjZW1lbnQsCiAgICAgICAgICAgICAgICBpID0gL1xzP2F1dG8/XHM/L2ksCiAgICAgICAgICAgICAgICBqID0gaS50ZXN0KGgpOwogICAgICAgICAgICBqICYmIChoID0gaC5yZXBsYWNlKGksICIiKSB8fCAidG9wIiksIGYuZGV0YWNoKCkuY3NzKHsKICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgIGxlZnQ6IDAsCiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiYmxvY2siCiAgICAgICAgICAgIH0pLmFkZENsYXNzKGgpLmRhdGEoImJzLiIgKyB0aGlzLnR5cGUsIHRoaXMpLCB0aGlzLm9wdGlvbnMuY29udGFpbmVyID8gZi5hcHBlbmRUbyh0aGlzLm9wdGlvbnMuY29udGFpbmVyKSA6IGYuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCksIHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5zZXJ0ZWQuYnMuIiArIHRoaXMudHlwZSk7CiAgICAgICAgICAgIHZhciBrID0gdGhpcy5nZXRQb3NpdGlvbigpLAogICAgICAgICAgICAgICAgbCA9IGZbMF0ub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICBtID0gZlswXS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgICAgIGlmIChqKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGgsCiAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZ2V0UG9zaXRpb24odGhpcy4kdmlld3BvcnQpOwogICAgICAgICAgICAgICAgaCA9ICJib3R0b20iID09IGggJiYgay5ib3R0b20gKyBtID4gby5ib3R0b20gPyAidG9wIiA6ICJ0b3AiID09IGggJiYgay50b3AgLSBtIDwgby50b3AgPyAiYm90dG9tIiA6ICJyaWdodCIgPT0gaCAmJiBrLnJpZ2h0ICsgbCA+IG8ud2lkdGggPyAibGVmdCIgOiAibGVmdCIgPT0gaCAmJiBrLmxlZnQgLSBsIDwgby5sZWZ0ID8gInJpZ2h0IiA6IGgsIGYucmVtb3ZlQ2xhc3MobikuYWRkQ2xhc3MoaCkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcCA9IHRoaXMuZ2V0Q2FsY3VsYXRlZE9mZnNldChoLCBrLCBsLCBtKTsKICAgICAgICAgICAgdGhpcy5hcHBseVBsYWNlbWVudChwLCBoKTsKICAgICAgICAgICAgdmFyIHEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gZS5ob3ZlclN0YXRlOwogICAgICAgICAgICAgICAgZS4kZWxlbWVudC50cmlnZ2VyKCJzaG93bi5icy4iICsgZS50eXBlKSwgZS5ob3ZlclN0YXRlID0gbnVsbCwgIm91dCIgPT0gYSAmJiBlLmxlYXZlKGUpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGEuc3VwcG9ydC50cmFuc2l0aW9uICYmIHRoaXMuJHRpcC5oYXNDbGFzcygiZmFkZSIpID8gZi5vbmUoImJzVHJhbnNpdGlvbkVuZCIsIHEpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikgOiBxKCkKICAgICAgICB9CiAgICB9LCBjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudCA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICB2YXIgZCA9IHRoaXMudGlwKCksCiAgICAgICAgICAgIGUgPSBkWzBdLm9mZnNldFdpZHRoLAogICAgICAgICAgICBmID0gZFswXS5vZmZzZXRIZWlnaHQsCiAgICAgICAgICAgIGcgPSBwYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLCAxMCksCiAgICAgICAgICAgIGggPSBwYXJzZUludChkLmNzcygibWFyZ2luLWxlZnQiKSwgMTApOwogICAgICAgIGlzTmFOKGcpICYmIChnID0gMCksIGlzTmFOKGgpICYmIChoID0gMCksIGIudG9wICs9IGcsIGIubGVmdCArPSBoLCBhLm9mZnNldC5zZXRPZmZzZXQoZFswXSwgYS5leHRlbmQoewogICAgICAgICAgICB1c2luZzogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgZC5jc3MoewogICAgICAgICAgICAgICAgICAgIHRvcDogTWF0aC5yb3VuZChhLnRvcCksCiAgICAgICAgICAgICAgICAgICAgbGVmdDogTWF0aC5yb3VuZChhLmxlZnQpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwgYiksIDApLCBkLmFkZENsYXNzKCJpbiIpOwogICAgICAgIHZhciBpID0gZFswXS5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgaiA9IGRbMF0ub2Zmc2V0SGVpZ2h0OwogICAgICAgICJ0b3AiID09IGMgJiYgaiAhPSBmICYmIChiLnRvcCA9IGIudG9wICsgZiAtIGopOwogICAgICAgIHZhciBrID0gdGhpcy5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGEoYywgYiwgaSwgaik7CiAgICAgICAgay5sZWZ0ID8gYi5sZWZ0ICs9IGsubGVmdCA6IGIudG9wICs9IGsudG9wOwogICAgICAgIHZhciBsID0gL3RvcHxib3R0b20vLnRlc3QoYyksCiAgICAgICAgICAgIG0gPSBsID8gMiAqIGsubGVmdCAtIGUgKyBpIDogMiAqIGsudG9wIC0gZiArIGosCiAgICAgICAgICAgIG4gPSBsID8gIm9mZnNldFdpZHRoIiA6ICJvZmZzZXRIZWlnaHQiOwogICAgICAgIGQub2Zmc2V0KGIpLCB0aGlzLnJlcGxhY2VBcnJvdyhtLCBkWzBdW25dLCBsKQogICAgfSwgYy5wcm90b3R5cGUucmVwbGFjZUFycm93ID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgIHRoaXMuYXJyb3coKS5jc3MoYyA/ICJsZWZ0IiA6ICJ0b3AiLCA1MCAqICgxIC0gYSAvIGIpICsgIiUiKS5jc3MoYyA/ICJ0b3AiIDogImxlZnQiLCAiIikKICAgIH0sIGMucHJvdG90eXBlLnNldENvbnRlbnQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYSA9IHRoaXMudGlwKCksCiAgICAgICAgICAgIGIgPSB0aGlzLmdldFRpdGxlKCk7CiAgICAgICAgYS5maW5kKCIudG9vbHRpcC1pbm5lciIpW3RoaXMub3B0aW9ucy5odG1sID8gImh0bWwiIDogInRleHQiXShiKSwgYS5yZW1vdmVDbGFzcygiZmFkZSBpbiB0b3AgYm90dG9tIGxlZnQgcmlnaHQiKQogICAgfSwgYy5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICBmdW5jdGlvbiBkKCkgewogICAgICAgICAgICAiaW4iICE9IGUuaG92ZXJTdGF0ZSAmJiBmLmRldGFjaCgpLCBlLiRlbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKS50cmlnZ2VyKCJoaWRkZW4uYnMuIiArIGUudHlwZSksIGIgJiYgYigpCiAgICAgICAgfQogICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgZiA9IGEodGhpcy4kdGlwKSwKICAgICAgICAgICAgZyA9IGEuRXZlbnQoImhpZGUuYnMuIiArIHRoaXMudHlwZSk7CiAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSwgZy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSA/IHZvaWQgMCA6IChmLnJlbW92ZUNsYXNzKCJpbiIpLCBhLnN1cHBvcnQudHJhbnNpdGlvbiAmJiBmLmhhc0NsYXNzKCJmYWRlIikgPyBmLm9uZSgiYnNUcmFuc2l0aW9uRW5kIiwgZCkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKSA6IGQoKSwgdGhpcy5ob3ZlclN0YXRlID0gbnVsbCwgdGhpcykKICAgIH0sIGMucHJvdG90eXBlLmZpeFRpdGxlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSB0aGlzLiRlbGVtZW50OwogICAgICAgIChhLmF0dHIoInRpdGxlIikgfHwgInN0cmluZyIgIT0gdHlwZW9mIGEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpKSAmJiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiLCBhLmF0dHIoInRpdGxlIikgfHwgIiIpLmF0dHIoInRpdGxlIiwgIiIpCiAgICB9LCBjLnByb3RvdHlwZS5oYXNDb250ZW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGl0bGUoKQogICAgfSwgYy5wcm90b3R5cGUuZ2V0UG9zaXRpb24gPSBmdW5jdGlvbihiKSB7CiAgICAgICAgYiA9IGIgfHwgdGhpcy4kZWxlbWVudDsKICAgICAgICB2YXIgYyA9IGJbMF0sCiAgICAgICAgICAgIGQgPSAiQk9EWSIgPT0gYy50YWdOYW1lLAogICAgICAgICAgICBlID0gYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICBudWxsID09IGUud2lkdGggJiYgKGUgPSBhLmV4dGVuZCh7fSwgZSwgewogICAgICAgICAgICB3aWR0aDogZS5yaWdodCAtIGUubGVmdCwKICAgICAgICAgICAgaGVpZ2h0OiBlLmJvdHRvbSAtIGUudG9wCiAgICAgICAgfSkpOwogICAgICAgIHZhciBmID0gZCA/IHsKICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgIGxlZnQ6IDAKICAgICAgICAgICAgfSA6IGIub2Zmc2V0KCksCiAgICAgICAgICAgIGcgPSB7CiAgICAgICAgICAgICAgICBzY3JvbGw6IGQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIDogYi5zY3JvbGxUb3AoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBoID0gZCA/IHsKICAgICAgICAgICAgICAgIHdpZHRoOiBhKHdpbmRvdykud2lkdGgoKSwKICAgICAgICAgICAgICAgIGhlaWdodDogYSh3aW5kb3cpLmhlaWdodCgpCiAgICAgICAgICAgIH0gOiBudWxsOwogICAgICAgIHJldHVybiBhLmV4dGVuZCh7fSwgZSwgZywgaCwgZikKICAgIH0sIGMucHJvdG90eXBlLmdldENhbGN1bGF0ZWRPZmZzZXQgPSBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgcmV0dXJuICJib3R0b20iID09IGEgPyB7CiAgICAgICAgICAgIHRvcDogYi50b3AgKyBiLmhlaWdodCwKICAgICAgICAgICAgbGVmdDogYi5sZWZ0ICsgYi53aWR0aCAvIDIgLSBjIC8gMgogICAgICAgIH0gOiAidG9wIiA9PSBhID8gewogICAgICAgICAgICB0b3A6IGIudG9wIC0gZCwKICAgICAgICAgICAgbGVmdDogYi5sZWZ0ICsgYi53aWR0aCAvIDIgLSBjIC8gMgogICAgICAgIH0gOiAibGVmdCIgPT0gYSA/IHsKICAgICAgICAgICAgdG9wOiBiLnRvcCArIGIuaGVpZ2h0IC8gMiAtIGQgLyAyLAogICAgICAgICAgICBsZWZ0OiBiLmxlZnQgLSBjCiAgICAgICAgfSA6IHsKICAgICAgICAgICAgdG9wOiBiLnRvcCArIGIuaGVpZ2h0IC8gMiAtIGQgLyAyLAogICAgICAgICAgICBsZWZ0OiBiLmxlZnQgKyBiLndpZHRoCiAgICAgICAgfQogICAgfSwgYy5wcm90b3R5cGUuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhID0gZnVuY3Rpb24oYSwgYiwgYywgZCkgewogICAgICAgIHZhciBlID0gewogICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgIGxlZnQ6IDAKICAgICAgICB9OwogICAgICAgIGlmICghdGhpcy4kdmlld3BvcnQpIHJldHVybiBlOwogICAgICAgIHZhciBmID0gdGhpcy5vcHRpb25zLnZpZXdwb3J0ICYmIHRoaXMub3B0aW9ucy52aWV3cG9ydC5wYWRkaW5nIHx8IDAsCiAgICAgICAgICAgIGcgPSB0aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTsKICAgICAgICBpZiAoL3JpZ2h0fGxlZnQvLnRlc3QoYSkpIHsKICAgICAgICAgICAgdmFyIGggPSBiLnRvcCAtIGYgLSBnLnNjcm9sbCwKICAgICAgICAgICAgICAgIGkgPSBiLnRvcCArIGYgLSBnLnNjcm9sbCArIGQ7CiAgICAgICAgICAgIGggPCBnLnRvcCA/IGUudG9wID0gZy50b3AgLSBoIDogaSA+IGcudG9wICsgZy5oZWlnaHQgJiYgKGUudG9wID0gZy50b3AgKyBnLmhlaWdodCAtIGkpCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIGogPSBiLmxlZnQgLSBmLAogICAgICAgICAgICAgICAgayA9IGIubGVmdCArIGYgKyBjOwogICAgICAgICAgICBqIDwgZy5sZWZ0ID8gZS5sZWZ0ID0gZy5sZWZ0IC0gaiA6IGsgPiBnLnJpZ2h0ICYmIChlLmxlZnQgPSBnLmxlZnQgKyBnLndpZHRoIC0gaykKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGUKICAgIH0sIGMucHJvdG90eXBlLmdldFRpdGxlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEsIGIgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgICBjID0gdGhpcy5vcHRpb25zOwogICAgICAgIHJldHVybiBhID0gYi5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIikgfHwgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGMudGl0bGUgPyBjLnRpdGxlLmNhbGwoYlswXSkgOiBjLnRpdGxlKQogICAgfSwgYy5wcm90b3R5cGUuZ2V0VUlEID0gZnVuY3Rpb24oYSkgewogICAgICAgIGRvIGEgKz0gfn4oMWU2ICogTWF0aC5yYW5kb20oKSk7IHdoaWxlIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKSk7CiAgICAgICAgcmV0dXJuIGEKICAgIH0sIGMucHJvdG90eXBlLnRpcCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICghdGhpcy4kdGlwICYmICh0aGlzLiR0aXAgPSBhKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSksIDEgIT0gdGhpcy4kdGlwLmxlbmd0aCkpIHRocm93IG5ldyBFcnJvcih0aGlzLnR5cGUgKyAiIGB0ZW1wbGF0ZWAgb3B0aW9uIG11c3QgY29uc2lzdCBvZiBleGFjdGx5IDEgdG9wLWxldmVsIGVsZW1lbnQhIik7CiAgICAgICAgcmV0dXJuIHRoaXMuJHRpcAogICAgfSwgYy5wcm90b3R5cGUuYXJyb3cgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy4kYXJyb3cgPSB0aGlzLiRhcnJvdyB8fCB0aGlzLnRpcCgpLmZpbmQoIi50b29sdGlwLWFycm93IikKICAgIH0sIGMucHJvdG90eXBlLmVuYWJsZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuZW5hYmxlZCA9ICEwCiAgICB9LCBjLnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5lbmFibGVkID0gITEKICAgIH0sIGMucHJvdG90eXBlLnRvZ2dsZUVuYWJsZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLmVuYWJsZWQgPSAhdGhpcy5lbmFibGVkCiAgICB9LCBjLnByb3RvdHlwZS50b2dnbGUgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgdmFyIGMgPSB0aGlzOwogICAgICAgIGIgJiYgKGMgPSBhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIiArIHRoaXMudHlwZSksIGMgfHwgKGMgPSBuZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsIHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLCBhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIiArIHRoaXMudHlwZSwgYykpKSwgYiA/IChjLmluU3RhdGUuY2xpY2sgPSAhYy5pblN0YXRlLmNsaWNrLCBjLmlzSW5TdGF0ZVRydWUoKSA/IGMuZW50ZXIoYykgOiBjLmxlYXZlKGMpKSA6IGMudGlwKCkuaGFzQ2xhc3MoImluIikgPyBjLmxlYXZlKGMpIDogYy5lbnRlcihjKQogICAgfSwgYy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBhID0gdGhpczsKICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSwgdGhpcy5oaWRlKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBhLiRlbGVtZW50Lm9mZigiLiIgKyBhLnR5cGUpLnJlbW92ZURhdGEoImJzLiIgKyBhLnR5cGUpLCBhLiR0aXAgJiYgYS4kdGlwLmRldGFjaCgpLCBhLiR0aXAgPSBudWxsLCBhLiRhcnJvdyA9IG51bGwsIGEuJHZpZXdwb3J0ID0gbnVsbAogICAgICAgIH0pCiAgICB9OwogICAgdmFyIGQgPSBhLmZuLnRvb2x0aXA7CiAgICBhLmZuLnRvb2x0aXAgPSBiLCBhLmZuLnRvb2x0aXAuQ29uc3RydWN0b3IgPSBjLCBhLmZuLnRvb2x0aXAubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBhLmZuLnRvb2x0aXAgPSBkLCB0aGlzCiAgICB9Cn0oalF1ZXJ5KSwgKyBmdW5jdGlvbihhKSB7CiAgICAidXNlIHN0cmljdCI7CgogICAgZnVuY3Rpb24gYihiKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGQgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgZSA9IGQuZGF0YSgiYnMucG9wb3ZlciIpLAogICAgICAgICAgICAgICAgZiA9ICJvYmplY3QiID09IHR5cGVvZiBiICYmIGI7CiAgICAgICAgICAgIChlIHx8ICEvZGVzdHJveXxoaWRlLy50ZXN0KGIpKSAmJiAoZSB8fCBkLmRhdGEoImJzLnBvcG92ZXIiLCBlID0gbmV3IGModGhpcywgZikpLCAic3RyaW5nIiA9PSB0eXBlb2YgYiAmJiBlW2JdKCkpCiAgICAgICAgfSkKICAgIH0KICAgIHZhciBjID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgIHRoaXMuaW5pdCgicG9wb3ZlciIsIGEsIGIpCiAgICB9OwogICAgaWYgKCFhLmZuLnRvb2x0aXApIHRocm93IG5ldyBFcnJvcigiUG9wb3ZlciByZXF1aXJlcyB0b29sdGlwLmpzIik7CiAgICBjLlZFUlNJT04gPSAiMy4zLjUiLCBjLkRFRkFVTFRTID0gYS5leHRlbmQoe30sIGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUywgewogICAgICAgIHBsYWNlbWVudDogInJpZ2h0IiwKICAgICAgICB0cmlnZ2VyOiAiY2xpY2siLAogICAgICAgIGNvbnRlbnQ6ICIiLAogICAgICAgIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz0icG9wb3ZlciIgcm9sZT0idG9vbHRpcCI+PGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PjxoMyBjbGFzcz0icG9wb3Zlci10aXRsZSI+PC9oMz48ZGl2IGNsYXNzPSJwb3BvdmVyLWNvbnRlbnQiPjwvZGl2PjwvZGl2PicKICAgIH0pLCBjLnByb3RvdHlwZSA9IGEuZXh0ZW5kKHt9LCBhLmZuLnRvb2x0aXAuQ29uc3RydWN0b3IucHJvdG90eXBlKSwgYy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjLCBjLnByb3RvdHlwZS5nZXREZWZhdWx0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBjLkRFRkFVTFRTCiAgICB9LCBjLnByb3RvdHlwZS5zZXRDb250ZW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSB0aGlzLnRpcCgpLAogICAgICAgICAgICBiID0gdGhpcy5nZXRUaXRsZSgpLAogICAgICAgICAgICBjID0gdGhpcy5nZXRDb250ZW50KCk7CiAgICAgICAgYS5maW5kKCIucG9wb3Zlci10aXRsZSIpW3RoaXMub3B0aW9ucy5odG1sID8gImh0bWwiIDogInRleHQiXShiKSwgYS5maW5kKCIucG9wb3Zlci1jb250ZW50IikuY2hpbGRyZW4oKS5kZXRhY2goKS5lbmQoKVt0aGlzLm9wdGlvbnMuaHRtbCA/ICJzdHJpbmciID09IHR5cGVvZiBjID8gImh0bWwiIDogImFwcGVuZCIgOiAidGV4dCJdKGMpLCBhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLCBhLmZpbmQoIi5wb3BvdmVyLXRpdGxlIikuaHRtbCgpIHx8IGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCkKICAgIH0sIGMucHJvdG90eXBlLmhhc0NvbnRlbnQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5nZXRUaXRsZSgpIHx8IHRoaXMuZ2V0Q29udGVudCgpCiAgICB9LCBjLnByb3RvdHlwZS5nZXRDb250ZW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgICBiID0gdGhpcy5vcHRpb25zOwogICAgICAgIHJldHVybiBhLmF0dHIoImRhdGEtY29udGVudCIpIHx8ICgiZnVuY3Rpb24iID09IHR5cGVvZiBiLmNvbnRlbnQgPyBiLmNvbnRlbnQuY2FsbChhWzBdKSA6IGIuY29udGVudCkKICAgIH0sIGMucHJvdG90eXBlLmFycm93ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJGFycm93ID0gdGhpcy4kYXJyb3cgfHwgdGhpcy50aXAoKS5maW5kKCIuYXJyb3ciKQogICAgfTsKICAgIHZhciBkID0gYS5mbi5wb3BvdmVyOwogICAgYS5mbi5wb3BvdmVyID0gYiwgYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yID0gYywgYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gYS5mbi5wb3BvdmVyID0gZCwgdGhpcwogICAgfQp9KGpRdWVyeSksICsgZnVuY3Rpb24oYSkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGIoYywgZCkgewogICAgICAgIHRoaXMuJGJvZHkgPSBhKGRvY3VtZW50LmJvZHkpLCB0aGlzLiRzY3JvbGxFbGVtZW50ID0gYShhKGMpLmlzKGRvY3VtZW50LmJvZHkpID8gd2luZG93IDogYyksIHRoaXMub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBiLkRFRkFVTFRTLCBkKSwgdGhpcy5zZWxlY3RvciA9ICh0aGlzLm9wdGlvbnMudGFyZ2V0IHx8ICIiKSArICIgLm5hdiBsaSA+IGEiLCB0aGlzLm9mZnNldHMgPSBbXSwgdGhpcy50YXJnZXRzID0gW10sIHRoaXMuYWN0aXZlVGFyZ2V0ID0gbnVsbCwgdGhpcy5zY3JvbGxIZWlnaHQgPSAwLCB0aGlzLiRzY3JvbGxFbGVtZW50Lm9uKCJzY3JvbGwuYnMuc2Nyb2xsc3B5IiwgYS5wcm94eSh0aGlzLnByb2Nlc3MsIHRoaXMpKSwgdGhpcy5yZWZyZXNoKCksIHRoaXMucHJvY2VzcygpCiAgICB9CgogICAgZnVuY3Rpb24gYyhjKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGQgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgZSA9IGQuZGF0YSgiYnMuc2Nyb2xsc3B5IiksCiAgICAgICAgICAgICAgICBmID0gIm9iamVjdCIgPT0gdHlwZW9mIGMgJiYgYzsKICAgICAgICAgICAgZSB8fCBkLmRhdGEoImJzLnNjcm9sbHNweSIsIGUgPSBuZXcgYih0aGlzLCBmKSksICJzdHJpbmciID09IHR5cGVvZiBjICYmIGVbY10oKQogICAgICAgIH0pCiAgICB9CiAgICBiLlZFUlNJT04gPSAiMy4zLjUiLCBiLkRFRkFVTFRTID0gewogICAgICAgIG9mZnNldDogMTAKICAgIH0sIGIucHJvdG90eXBlLmdldFNjcm9sbEhlaWdodCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLiRzY3JvbGxFbGVtZW50WzBdLnNjcm9sbEhlaWdodCB8fCBNYXRoLm1heCh0aGlzLiRib2R5WzBdLnNjcm9sbEhlaWdodCwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCkKICAgIH0sIGIucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYiA9IHRoaXMsCiAgICAgICAgICAgIGMgPSAib2Zmc2V0IiwKICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgdGhpcy5vZmZzZXRzID0gW10sIHRoaXMudGFyZ2V0cyA9IFtdLCB0aGlzLnNjcm9sbEhlaWdodCA9IHRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksIGEuaXNXaW5kb3codGhpcy4kc2Nyb2xsRWxlbWVudFswXSkgfHwgKGMgPSAicG9zaXRpb24iLCBkID0gdGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSksIHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBiID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSBiLmRhdGEoInRhcmdldCIpIHx8IGIuYXR0cigiaHJlZiIpLAogICAgICAgICAgICAgICAgZiA9IC9eIy4vLnRlc3QoZSkgJiYgYShlKTsKICAgICAgICAgICAgcmV0dXJuIGYgJiYgZi5sZW5ndGggJiYgZi5pcygiOnZpc2libGUiKSAmJiBbCiAgICAgICAgICAgICAgICBbZltjXSgpLnRvcCArIGQsIGVdCiAgICAgICAgICAgIF0gfHwgbnVsbAogICAgICAgIH0pLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICByZXR1cm4gYVswXSAtIGJbMF0KICAgICAgICB9KS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBiLm9mZnNldHMucHVzaCh0aGlzWzBdKSwgYi50YXJnZXRzLnB1c2godGhpc1sxXSkKICAgICAgICB9KQogICAgfSwgYi5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBhLCBiID0gdGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSArIHRoaXMub3B0aW9ucy5vZmZzZXQsCiAgICAgICAgICAgIGMgPSB0aGlzLmdldFNjcm9sbEhlaWdodCgpLAogICAgICAgICAgICBkID0gdGhpcy5vcHRpb25zLm9mZnNldCArIGMgLSB0aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLAogICAgICAgICAgICBlID0gdGhpcy5vZmZzZXRzLAogICAgICAgICAgICBmID0gdGhpcy50YXJnZXRzLAogICAgICAgICAgICBnID0gdGhpcy5hY3RpdmVUYXJnZXQ7CiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGVpZ2h0ICE9IGMgJiYgdGhpcy5yZWZyZXNoKCksIGIgPj0gZCkgcmV0dXJuIGcgIT0gKGEgPSBmW2YubGVuZ3RoIC0gMV0pICYmIHRoaXMuYWN0aXZhdGUoYSk7CiAgICAgICAgaWYgKGcgJiYgYiA8IGVbMF0pIHJldHVybiB0aGlzLmFjdGl2ZVRhcmdldCA9IG51bGwsIHRoaXMuY2xlYXIoKTsKICAgICAgICBmb3IgKGEgPSBlLmxlbmd0aDsgYS0tOykgZyAhPSBmW2FdICYmIGIgPj0gZVthXSAmJiAodm9pZCAwID09PSBlW2EgKyAxXSB8fCBiIDwgZVthICsgMV0pICYmIHRoaXMuYWN0aXZhdGUoZlthXSkKICAgIH0sIGIucHJvdG90eXBlLmFjdGl2YXRlID0gZnVuY3Rpb24oYikgewogICAgICAgIHRoaXMuYWN0aXZlVGFyZ2V0ID0gYiwgdGhpcy5jbGVhcigpOwogICAgICAgIHZhciBjID0gdGhpcy5zZWxlY3RvciArICdbZGF0YS10YXJnZXQ9IicgKyBiICsgJyJdLCcgKyB0aGlzLnNlbGVjdG9yICsgJ1tocmVmPSInICsgYiArICciXScsCiAgICAgICAgICAgIGQgPSBhKGMpLnBhcmVudHMoImxpIikuYWRkQ2xhc3MoImFjdGl2ZSIpOwogICAgICAgIGQucGFyZW50KCIuZHJvcGRvd24tbWVudSIpLmxlbmd0aCAmJiAoZCA9IGQuY2xvc2VzdCgibGkuZHJvcGRvd24iKS5hZGRDbGFzcygiYWN0aXZlIikpLAogICAgICAgICAgICBkLnRyaWdnZXIoImFjdGl2YXRlLmJzLnNjcm9sbHNweSIpCiAgICB9LCBiLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGEodGhpcy5zZWxlY3RvcikucGFyZW50c1VudGlsKHRoaXMub3B0aW9ucy50YXJnZXQsICIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpCiAgICB9OwogICAgdmFyIGQgPSBhLmZuLnNjcm9sbHNweTsKICAgIGEuZm4uc2Nyb2xsc3B5ID0gYywgYS5mbi5zY3JvbGxzcHkuQ29uc3RydWN0b3IgPSBiLCBhLmZuLnNjcm9sbHNweS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGEuZm4uc2Nyb2xsc3B5ID0gZCwgdGhpcwogICAgfSwgYSh3aW5kb3cpLm9uKCJsb2FkLmJzLnNjcm9sbHNweS5kYXRhLWFwaSIsIGZ1bmN0aW9uKCkgewogICAgICAgIGEoJ1tkYXRhLXNweT0ic2Nyb2xsIl0nKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYiA9IGEodGhpcyk7CiAgICAgICAgICAgIGMuY2FsbChiLCBiLmRhdGEoKSkKICAgICAgICB9KQogICAgfSkKfShqUXVlcnkpLCArIGZ1bmN0aW9uKGEpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBiKGIpIHsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZCA9IGEodGhpcyksCiAgICAgICAgICAgICAgICBlID0gZC5kYXRhKCJicy50YWIiKTsKICAgICAgICAgICAgZSB8fCBkLmRhdGEoImJzLnRhYiIsIGUgPSBuZXcgYyh0aGlzKSksICJzdHJpbmciID09IHR5cGVvZiBiICYmIGVbYl0oKQogICAgICAgIH0pCiAgICB9CiAgICB2YXIgYyA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICB0aGlzLmVsZW1lbnQgPSBhKGIpCiAgICB9OwogICAgYy5WRVJTSU9OID0gIjMuMy41IiwgYy5UUkFOU0lUSU9OX0RVUkFUSU9OID0gMTUwLCBjLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGIgPSB0aGlzLmVsZW1lbnQsCiAgICAgICAgICAgIGMgPSBiLmNsb3Nlc3QoInVsOm5vdCguZHJvcGRvd24tbWVudSkiKSwKICAgICAgICAgICAgZCA9IGIuZGF0YSgidGFyZ2V0Iik7CiAgICAgICAgaWYgKGQgfHwgKGQgPSBiLmF0dHIoImhyZWYiKSwgZCA9IGQgJiYgZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sICIiKSksICFiLnBhcmVudCgibGkiKS5oYXNDbGFzcygiYWN0aXZlIikpIHsKICAgICAgICAgICAgdmFyIGUgPSBjLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksCiAgICAgICAgICAgICAgICBmID0gYS5FdmVudCgiaGlkZS5icy50YWIiLCB7CiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogYlswXQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBnID0gYS5FdmVudCgic2hvdy5icy50YWIiLCB7CiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogZVswXQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmIChlLnRyaWdnZXIoZiksIGIudHJpZ2dlcihnKSwgIWcuaXNEZWZhdWx0UHJldmVudGVkKCkgJiYgIWYuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsKICAgICAgICAgICAgICAgIHZhciBoID0gYShkKTsKICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGUoYi5jbG9zZXN0KCJsaSIpLCBjKSwgdGhpcy5hY3RpdmF0ZShoLCBoLnBhcmVudCgpLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlLnRyaWdnZXIoewogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiaGlkZGVuLmJzLnRhYiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGJbMF0KICAgICAgICAgICAgICAgICAgICB9KSwgYi50cmlnZ2VyKHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInNob3duLmJzLnRhYiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGVbMF0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGMucHJvdG90eXBlLmFjdGl2YXRlID0gZnVuY3Rpb24oYiwgZCwgZSkgewogICAgICAgIGZ1bmN0aW9uIGYoKSB7CiAgICAgICAgICAgIGcucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLmZpbmQoIj4gLmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwgITEpLCBiLmFkZENsYXNzKCJhY3RpdmUiKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsICEwKSwgaCA/IChiWzBdLm9mZnNldFdpZHRoLCBiLmFkZENsYXNzKCJpbiIpKSA6IGIucmVtb3ZlQ2xhc3MoImZhZGUiKSwgYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoICYmIGIuY2xvc2VzdCgibGkuZHJvcGRvd24iKS5hZGRDbGFzcygiYWN0aXZlIikuZW5kKCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJ0YWIiXScpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAhMCksIGUgJiYgZSgpCiAgICAgICAgfQogICAgICAgIHZhciBnID0gZC5maW5kKCI+IC5hY3RpdmUiKSwKICAgICAgICAgICAgaCA9IGUgJiYgYS5zdXBwb3J0LnRyYW5zaXRpb24gJiYgKGcubGVuZ3RoICYmIGcuaGFzQ2xhc3MoImZhZGUiKSB8fCAhIWQuZmluZCgiPiAuZmFkZSIpLmxlbmd0aCk7CiAgICAgICAgZy5sZW5ndGggJiYgaCA/IGcub25lKCJic1RyYW5zaXRpb25FbmQiLCBmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pIDogZigpLCBnLnJlbW92ZUNsYXNzKCJpbiIpCiAgICB9OwogICAgdmFyIGQgPSBhLmZuLnRhYjsKICAgIGEuZm4udGFiID0gYiwgYS5mbi50YWIuQ29uc3RydWN0b3IgPSBjLCBhLmZuLnRhYi5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGEuZm4udGFiID0gZCwgdGhpcwogICAgfTsKICAgIHZhciBlID0gZnVuY3Rpb24oYykgewogICAgICAgIGMucHJldmVudERlZmF1bHQoKSwgYi5jYWxsKGEodGhpcyksICJzaG93IikKICAgIH07CiAgICBhKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwgJ1tkYXRhLXRvZ2dsZT0idGFiIl0nLCBlKS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwgJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJywgZSkKfShqUXVlcnkpLCArIGZ1bmN0aW9uKGEpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBiKGIpIHsKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZCA9IGEodGhpcyksCiAgICAgICAgICAgICAgICBlID0gZC5kYXRhKCJicy5hZmZpeCIpLAogICAgICAgICAgICAgICAgZiA9ICJvYmplY3QiID09IHR5cGVvZiBiICYmIGI7CiAgICAgICAgICAgIGUgfHwgZC5kYXRhKCJicy5hZmZpeCIsIGUgPSBuZXcgYyh0aGlzLCBmKSksICJzdHJpbmciID09IHR5cGVvZiBiICYmIGVbYl0oKQogICAgICAgIH0pCiAgICB9CiAgICB2YXIgYyA9IGZ1bmN0aW9uKGIsIGQpIHsKICAgICAgICB0aGlzLm9wdGlvbnMgPSBhLmV4dGVuZCh7fSwgYy5ERUZBVUxUUywgZCksIHRoaXMuJHRhcmdldCA9IGEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsIGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLCB0aGlzKSkub24oImNsaWNrLmJzLmFmZml4LmRhdGEtYXBpIiwgYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLCB0aGlzKSksIHRoaXMuJGVsZW1lbnQgPSBhKGIpLCB0aGlzLmFmZml4ZWQgPSBudWxsLCB0aGlzLnVucGluID0gbnVsbCwgdGhpcy5waW5uZWRPZmZzZXQgPSBudWxsLCB0aGlzLmNoZWNrUG9zaXRpb24oKQogICAgfTsKICAgIGMuVkVSU0lPTiA9ICIzLjMuNSIsIGMuUkVTRVQgPSAiYWZmaXggYWZmaXgtdG9wIGFmZml4LWJvdHRvbSIsIGMuREVGQVVMVFMgPSB7CiAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgIHRhcmdldDogd2luZG93CiAgICB9LCBjLnByb3RvdHlwZS5nZXRTdGF0ZSA9IGZ1bmN0aW9uKGEsIGIsIGMsIGQpIHsKICAgICAgICB2YXIgZSA9IHRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSwKICAgICAgICAgICAgZiA9IHRoaXMuJGVsZW1lbnQub2Zmc2V0KCksCiAgICAgICAgICAgIGcgPSB0aGlzLiR0YXJnZXQuaGVpZ2h0KCk7CiAgICAgICAgaWYgKG51bGwgIT0gYyAmJiAidG9wIiA9PSB0aGlzLmFmZml4ZWQpIHJldHVybiBjID4gZSA/ICJ0b3AiIDogITE7CiAgICAgICAgaWYgKCJib3R0b20iID09IHRoaXMuYWZmaXhlZCkgcmV0dXJuIG51bGwgIT0gYyA/IGUgKyB0aGlzLnVucGluIDw9IGYudG9wID8gITEgOiAiYm90dG9tIiA6IGEgLSBkID49IGUgKyBnID8gITEgOiAiYm90dG9tIjsKICAgICAgICB2YXIgaCA9IG51bGwgPT0gdGhpcy5hZmZpeGVkLAogICAgICAgICAgICBpID0gaCA/IGUgOiBmLnRvcCwKICAgICAgICAgICAgaiA9IGggPyBnIDogYjsKICAgICAgICByZXR1cm4gbnVsbCAhPSBjICYmIGMgPj0gZSA/ICJ0b3AiIDogbnVsbCAhPSBkICYmIGkgKyBqID49IGEgLSBkID8gImJvdHRvbSIgOiAhMQogICAgfSwgYy5wcm90b3R5cGUuZ2V0UGlubmVkT2Zmc2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKHRoaXMucGlubmVkT2Zmc2V0KSByZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ7CiAgICAgICAgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcygiYWZmaXgiKTsKICAgICAgICB2YXIgYSA9IHRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSwKICAgICAgICAgICAgYiA9IHRoaXMuJGVsZW1lbnQub2Zmc2V0KCk7CiAgICAgICAgcmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0ID0gYi50b3AgLSBhCiAgICB9LCBjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uV2l0aEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHNldFRpbWVvdXQoYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sIHRoaXMpLCAxKQogICAgfSwgYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICh0aGlzLiRlbGVtZW50LmlzKCI6dmlzaWJsZSIpKSB7CiAgICAgICAgICAgIHZhciBiID0gdGhpcy4kZWxlbWVudC5oZWlnaHQoKSwKICAgICAgICAgICAgICAgIGQgPSB0aGlzLm9wdGlvbnMub2Zmc2V0LAogICAgICAgICAgICAgICAgZSA9IGQudG9wLAogICAgICAgICAgICAgICAgZiA9IGQuYm90dG9tLAogICAgICAgICAgICAgICAgZyA9IE1hdGgubWF4KGEoZG9jdW1lbnQpLmhlaWdodCgpLCBhKGRvY3VtZW50LmJvZHkpLmhlaWdodCgpKTsKICAgICAgICAgICAgIm9iamVjdCIgIT0gdHlwZW9mIGQgJiYgKGYgPSBlID0gZCksICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgJiYgKGUgPSBkLnRvcCh0aGlzLiRlbGVtZW50KSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIGYgJiYgKGYgPSBkLmJvdHRvbSh0aGlzLiRlbGVtZW50KSk7CiAgICAgICAgICAgIHZhciBoID0gdGhpcy5nZXRTdGF0ZShnLCBiLCBlLCBmKTsKICAgICAgICAgICAgaWYgKHRoaXMuYWZmaXhlZCAhPSBoKSB7CiAgICAgICAgICAgICAgICBudWxsICE9IHRoaXMudW5waW4gJiYgdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsICIiKTsKICAgICAgICAgICAgICAgIHZhciBpID0gImFmZml4IiArIChoID8gIi0iICsgaCA6ICIiKSwKICAgICAgICAgICAgICAgICAgICBqID0gYS5FdmVudChpICsgIi5icy5hZmZpeCIpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihqKSwgai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgdGhpcy5hZmZpeGVkID0gaCwgdGhpcy51bnBpbiA9ICJib3R0b20iID09IGggPyB0aGlzLmdldFBpbm5lZE9mZnNldCgpIDogbnVsbCwgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCAiYWZmaXhlZCIpICsgIi5icy5hZmZpeCIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgImJvdHRvbSIgPT0gaCAmJiB0aGlzLiRlbGVtZW50Lm9mZnNldCh7CiAgICAgICAgICAgICAgICB0b3A6IGcgLSBiIC0gZgogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH07CiAgICB2YXIgZCA9IGEuZm4uYWZmaXg7CiAgICBhLmZuLmFmZml4ID0gYiwgYS5mbi5hZmZpeC5Db25zdHJ1Y3RvciA9IGMsIGEuZm4uYWZmaXgubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBhLmZuLmFmZml4ID0gZCwgdGhpcwogICAgfSwgYSh3aW5kb3cpLm9uKCJsb2FkIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgYSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGMgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgZCA9IGMuZGF0YSgpOwogICAgICAgICAgICBkLm9mZnNldCA9IGQub2Zmc2V0IHx8IHt9LCBudWxsICE9IGQub2Zmc2V0Qm90dG9tICYmIChkLm9mZnNldC5ib3R0b20gPSBkLm9mZnNldEJvdHRvbSksIG51bGwgIT0gZC5vZmZzZXRUb3AgJiYgKGQub2Zmc2V0LnRvcCA9IGQub2Zmc2V0VG9wKSwgYi5jYWxsKGMsIGQpCiAgICAgICAgfSkKICAgIH0pCn0oalF1ZXJ5KTs="}},"time_used":863,"timings":{"blocked":768,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/jquery.mmenu.js?ver=0.6.12","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.427Z","timestamp":1785145482427,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/jquery.mmenu.js?ver=0.6.12 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 37461\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":37461,"size_decoded":37678,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (499)","md5":"a1167f9ea6a3549ce5d9e8466932f306","sha1":"bc2d214097a32421e67259596abc6e100c097e20","sha256":"be61657bbb6909c52d166fcc2bd1ea5e92458e7a63218720916f7fab58efa743","sha512":"6844fab3297cbe4b8cdd046e73c91541b7ce4dcd645b5fb4b6c1b27de36d51ffc61bb6cb40acf55dca2aad729ce7ce00ffb37bacef7627e074a4dec656095c18","ssdeep":"768:mZ+vzfvva201hSEk28zMZ3+n0jDQh/FI+QVx:mZkmDI820gtIjVx","tlshash":"ebf2540ebbea21a2d597b1359eaf8814b133405f250acd487d5c93e40f2913856faff9","first_seen":"2026-07-27T08:06:56.539958Z","last_seen":"2026-07-27T09:45:50.940747Z","times_seen":3,"resource_available":true,"data":"OwooZnVuY3Rpb24ocm9vdCwgZmFjdG9yeSkgewogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTsKICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7CiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoJ2pxdWVyeScpKTsKICAgIH0gZWxzZSB7CiAgICAgICAgcm9vdC5qcXVlcnlfbW1lbnVfanMgPSBmYWN0b3J5KHJvb3QualF1ZXJ5KTsKICAgIH0KfSh0aGlzLCBmdW5jdGlvbihqUXVlcnkpIHsKICAgIC8qCiAgICAgKiBqUXVlcnkgbW1lbnUgdjYuMS4wCiAgICAgKiBAcmVxdWlyZXMgalF1ZXJ5IDEuNy4wIG9yIGxhdGVyCiAgICAgKgogICAgICogbW1lbnUuZnJlYnNpdGUubmwKICAgICAqCiAgICAgKiBDb3B5cmlnaHQgKGMpIEZyZWQgSGV1c3NjaGVuCiAgICAgKiB3d3cuZnJlYnNpdGUubmwKICAgICAqCiAgICAgKiBMaWNlbnNlOiBDQy1CWS1OQy00LjAKICAgICAqIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLzQuMC8KICAgICAqLwogICAgISBmdW5jdGlvbih0KSB7CiAgICAgICAgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgdFtuXS5nbGJsIHx8IChvID0gewogICAgICAgICAgICAgICAgJHduZHc6IHQod2luZG93KSwKICAgICAgICAgICAgICAgICRkb2N1OiB0KGRvY3VtZW50KSwKICAgICAgICAgICAgICAgICRodG1sOiB0KCJodG1sIiksCiAgICAgICAgICAgICAgICAkYm9keTogdCgiYm9keSIpCiAgICAgICAgICAgIH0sIHMgPSB7fSwgYSA9IHt9LCByID0ge30sIHQuZWFjaChbcywgYSwgcl0sIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIGUuYWRkID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHQgPSB0LnNwbGl0KCIgIik7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDAsIGkgPSB0Lmxlbmd0aDsgbiA8IGk7IG4rKykgZVt0W25dXSA9IGUubW0odFtuXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIHMubW0gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIm1tLSIgKyB0CiAgICAgICAgICAgIH0sIHMuYWRkKCJ3cmFwcGVyIG1lbnUgcGFuZWxzIHBhbmVsIG5vcGFuZWwgaGlnaGVzdCBvcGVuZWQgc3Vib3BlbmVkIG5hdmJhciBoYXNuYXZiYXIgdGl0bGUgYnRuIHByZXYgbmV4dCBsaXN0dmlldyBub2xpc3R2aWV3IGluc2V0IHZlcnRpY2FsIHNlbGVjdGVkIGRpdmlkZXIgc3BhY2VyIGhpZGRlbiBmdWxsc3Vib3BlbiBub2FuaW1hdGlvbiIpLCBzLnVtbSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAibW0tIiA9PSB0LnNsaWNlKDAsIDMpICYmICh0ID0gdC5zbGljZSgzKSksIHQKICAgICAgICAgICAgfSwgYS5tbSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAibW0tIiArIHQKICAgICAgICAgICAgfSwgYS5hZGQoInBhcmVudCBjaGlsZCIpLCByLm1tID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgKyAiLm1tIgogICAgICAgICAgICB9LCByLmFkZCgidHJhbnNpdGlvbmVuZCB3ZWJraXRUcmFuc2l0aW9uRW5kIGNsaWNrIHNjcm9sbCByZXNpemUga2V5ZG93biBtb3VzZWRvd24gbW91c2V1cCB0b3VjaHN0YXJ0IHRvdWNobW92ZSB0b3VjaGVuZCBvcmllbnRhdGlvbmNoYW5nZSIpLCB0W25dLl9jID0gcywgdFtuXS5fZCA9IGEsIHRbbl0uX2UgPSByLCB0W25dLmdsYmwgPSBvKQogICAgICAgIH0KICAgICAgICB2YXIgbiA9ICJtbWVudSIsCiAgICAgICAgICAgIGkgPSAiNi4xLjAiOwogICAgICAgIGlmICghKHRbbl0gJiYgdFtuXS52ZXJzaW9uID4gaSkpIHsKICAgICAgICAgICAgdFtuXSA9IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRtZW51ID0gdCwgdGhpcy5fYXBpID0gWyJiaW5kIiwgImdldEluc3RhbmNlIiwgImluaXRQYW5lbHMiLCAib3BlblBhbmVsIiwgImNsb3NlUGFuZWwiLCAiY2xvc2VBbGxQYW5lbHMiLCAic2V0U2VsZWN0ZWQiXSwgdGhpcy5vcHRzID0gZSwgdGhpcy5jb25mID0gbiwgdGhpcy52YXJzID0ge30sIHRoaXMuY2JjayA9IHt9LCB0aGlzLm10Y2ggPSB7fSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5fX19kZXByZWNhdGVkICYmIHRoaXMuX19fZGVwcmVjYXRlZCgpLCB0aGlzLl9pbml0QWRkb25zKCksIHRoaXMuX2luaXRFeHRlbnNpb25zKCksIHRoaXMuX2luaXRNZW51KCksIHRoaXMuX2luaXRQYW5lbHMoKSwgdGhpcy5faW5pdE9wZW5lZCgpLCB0aGlzLl9pbml0QW5jaG9ycygpLCB0aGlzLl9pbml0TWF0Y2hNZWRpYSgpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLl9fX2RlYnVnICYmIHRoaXMuX19fZGVidWcoKSwgdGhpcwogICAgICAgICAgICB9LCB0W25dLnZlcnNpb24gPSBpLCB0W25dLmFkZG9ucyA9IHt9LCB0W25dLnVuaXF1ZUlkID0gMCwgdFtuXS5kZWZhdWx0cyA9IHsKICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IFtdLAogICAgICAgICAgICAgICAgaW5pdE1lbnU6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgICAgICBpbml0UGFuZWxzOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgbmF2YmFyOiB7CiAgICAgICAgICAgICAgICAgICAgYWRkOiAhMCwKICAgICAgICAgICAgICAgICAgICB0aXRsZTogIk1lbnUiLAogICAgICAgICAgICAgICAgICAgIHRpdGxlTGluazogInBhcmVudCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkNsaWNrOiB7CiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQ6ICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2xpZGluZ1N1Ym1lbnVzOiAhMAogICAgICAgICAgICB9LCB0W25dLmNvbmZpZ3VyYXRpb24gPSB7CiAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiB7CiAgICAgICAgICAgICAgICAgICAgZGl2aWRlcjogIkRpdmlkZXIiLAogICAgICAgICAgICAgICAgICAgIGluc2V0OiAiSW5zZXQiLAogICAgICAgICAgICAgICAgICAgIG5vbGlzdHZpZXc6ICJOb0xpc3R2aWV3IiwKICAgICAgICAgICAgICAgICAgICBub3BhbmVsOiAiTm9QYW5lbCIsCiAgICAgICAgICAgICAgICAgICAgcGFuZWw6ICJQYW5lbCIsCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6ICJTZWxlY3RlZCIsCiAgICAgICAgICAgICAgICAgICAgc3BhY2VyOiAiU3BhY2VyIiwKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogIlZlcnRpY2FsIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNsb25lOiAhMSwKICAgICAgICAgICAgICAgIG9wZW5pbmdJbnRlcnZhbDogMjUsCiAgICAgICAgICAgICAgICBwYW5lbE5vZGV0eXBlOiAidWwsIG9sLCBkaXYiLAogICAgICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiA0MDAKICAgICAgICAgICAgfSwgdFtuXS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbml0UGFuZWxzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdFBhbmVscyh0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9wZW5QYW5lbDogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyaWdnZXIoIm9wZW5QYW5lbDpiZWZvcmUiLCBlKSwgZSAmJiBlLmxlbmd0aCAmJiAoZS5pcygiLiIgKyBzLnBhbmVsKSB8fCAoZSA9IGUuY2xvc2VzdCgiLiIgKyBzLnBhbmVsKSksIGUuaXMoIi4iICsgcy5wYW5lbCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJib29sZWFuIiAhPSB0eXBlb2YgaSAmJiAoaSA9ICEwKSwgZS5oYXNDbGFzcyhzLnZlcnRpY2FsKSkgZS5hZGQoZS5wYXJlbnRzKCIuIiArIHMudmVydGljYWwpKS5yZW1vdmVDbGFzcyhzLmhpZGRlbikucGFyZW50KCJsaSIpLmFkZENsYXNzKHMub3BlbmVkKSwgdGhpcy5vcGVuUGFuZWwoZS5wYXJlbnRzKCIuIiArIHMucGFuZWwpLm5vdCgiLiIgKyBzLnZlcnRpY2FsKS5maXJzdCgpKSwgdGhpcy50cmlnZ2VyKCJvcGVuUGFuZWw6c3RhcnQiLCBlKSwgdGhpcy50cmlnZ2VyKCJvcGVuUGFuZWw6ZmluaXNoIiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuaGFzQ2xhc3Mocy5vcGVuZWQpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuJHBubHMuY2hpbGRyZW4oIi4iICsgcy5wYW5lbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8uZmlsdGVyKCIuIiArIHMub3BlbmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdFtuXS5zdXBwb3J0LmNzc3RyYW5zaXRpb25zKSByZXR1cm4gbC5hZGRDbGFzcyhzLmhpZGRlbikucmVtb3ZlQ2xhc3Mocy5vcGVuZWQpLCBlLnJlbW92ZUNsYXNzKHMuaGlkZGVuKS5hZGRDbGFzcyhzLm9wZW5lZCksIHRoaXMudHJpZ2dlcigib3BlblBhbmVsOnN0YXJ0IiwgZSksIHZvaWQgdGhpcy50cmlnZ2VyKCJvcGVuUGFuZWw6ZmluaXNoIiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLm5vdChlKS5yZW1vdmVDbGFzcyhzLnN1Ym9wZW5lZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gZS5kYXRhKGEucGFyZW50KTsgZDspIGQgPSBkLmNsb3Nlc3QoIi4iICsgcy5wYW5lbCksIGQuaXMoIi4iICsgcy52ZXJ0aWNhbCkgfHwgZC5hZGRDbGFzcyhzLnN1Ym9wZW5lZCksIGQgPSBkLmRhdGEoYS5wYXJlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5yZW1vdmVDbGFzcyhzLmhpZ2hlc3QpLm5vdChsKS5ub3QoZSkuYWRkQ2xhc3Mocy5oaWRkZW4pLCBlLnJlbW92ZUNsYXNzKHMuaGlkZGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwucmVtb3ZlQ2xhc3Mocy5vcGVuZWQpLCBlLmFkZENsYXNzKHMub3BlbmVkKSwgZS5oYXNDbGFzcyhzLnN1Ym9wZW5lZCkgPyAobC5hZGRDbGFzcyhzLmhpZ2hlc3QpLCBlLnJlbW92ZUNsYXNzKHMuc3Vib3BlbmVkKSkgOiAobC5hZGRDbGFzcyhzLnN1Ym9wZW5lZCksIGUuYWRkQ2xhc3Mocy5oaWdoZXN0KSksIHRoaXMudHJpZ2dlcigib3BlblBhbmVsOnN0YXJ0IiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5yZW1vdmVDbGFzcyhzLmhpZ2hlc3QpLmFkZENsYXNzKHMuaGlkZGVuKSwgZS5yZW1vdmVDbGFzcyhzLmhpZ2hlc3QpLCB0aGlzLnRyaWdnZXIoIm9wZW5QYW5lbDpmaW5pc2giLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICYmICFlLmhhc0NsYXNzKHMubm9hbmltYXRpb24pID8gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLl9fdHJhbnNpdGlvbmVuZChlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jYWxsKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgci5jb25mLnRyYW5zaXRpb25EdXJhdGlvbiksIGMuY2FsbChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5jb25mLm9wZW5pbmdJbnRlcnZhbCkgOiAoYy5jYWxsKHRoaXMpLCBoLmNhbGwodGhpcykpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCJvcGVuUGFuZWw6YWZ0ZXIiLCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbG9zZVBhbmVsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCJjbG9zZVBhbmVsOmJlZm9yZSIsIHQpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5wYXJlbnQoKTsKICAgICAgICAgICAgICAgICAgICBlLmhhc0NsYXNzKHMudmVydGljYWwpICYmIChlLnJlbW92ZUNsYXNzKHMub3BlbmVkKSwgdGhpcy50cmlnZ2VyKCJjbG9zZVBhbmVsIiwgdCkpLCB0aGlzLnRyaWdnZXIoImNsb3NlUGFuZWw6YWZ0ZXIiLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNsb3NlQWxsUGFuZWxzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoImNsb3NlQWxsUGFuZWxzOmJlZm9yZSIpLCB0aGlzLiRwbmxzLmZpbmQoIi4iICsgcy5saXN0dmlldykuY2hpbGRyZW4oKS5yZW1vdmVDbGFzcyhzLnNlbGVjdGVkKS5maWx0ZXIoIi4iICsgcy52ZXJ0aWNhbCkucmVtb3ZlQ2xhc3Mocy5vcGVuZWQpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy4kcG5scy5jaGlsZHJlbigiLiIgKyBzLnBhbmVsKSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuZmlyc3QoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRwbmxzLmNoaWxkcmVuKCIuIiArIHMucGFuZWwpLm5vdChlKS5yZW1vdmVDbGFzcyhzLnN1Ym9wZW5lZCkucmVtb3ZlQ2xhc3Mocy5vcGVuZWQpLnJlbW92ZUNsYXNzKHMuaGlnaGVzdCkuYWRkQ2xhc3Mocy5oaWRkZW4pLCB0aGlzLm9wZW5QYW5lbChlKSwgdGhpcy50cmlnZ2VyKCJjbG9zZUFsbFBhbmVsczphZnRlciIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9nZ2xlUGFuZWw6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQucGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgZS5oYXNDbGFzcyhzLnZlcnRpY2FsKSAmJiB0aGlzW2UuaGFzQ2xhc3Mocy5vcGVuZWQpID8gImNsb3NlUGFuZWwiIDogIm9wZW5QYW5lbCJdKHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoInNldFNlbGVjdGVkOmJlZm9yZSIsIHQpLCB0aGlzLiRtZW51LmZpbmQoIi4iICsgcy5saXN0dmlldykuY2hpbGRyZW4oIi4iICsgcy5zZWxlY3RlZCkucmVtb3ZlQ2xhc3Mocy5zZWxlY3RlZCksIHQuYWRkQ2xhc3Mocy5zZWxlY3RlZCksIHRoaXMudHJpZ2dlcigic2V0U2VsZWN0ZWQ6YWZ0ZXIiLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJpbmQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNiY2tbdF0gPSB0aGlzLmNiY2tbdF0gfHwgW10sIHRoaXMuY2Jja1t0XS5wdXNoKGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jYmNrW25dKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgcyA9IHRoaXMuY2Jja1tuXS5sZW5ndGg7IGkgPCBzOyBpKyspIHRoaXMuY2Jja1tuXVtpXS5hcHBseSh0LCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG1hdGNoTWVkaWE6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgeWVzOiBlLAogICAgICAgICAgICAgICAgICAgICAgICBubzogbgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5tdGNoW3RdID0gdGhpcy5tdGNoW3RdIHx8IFtdLCB0aGlzLm10Y2hbdF0ucHVzaChpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9pbml0QWRkb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoImluaXRBZGRvbnM6YmVmb3JlIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgICAgICAgICAgZm9yIChlIGluIHRbbl0uYWRkb25zKSB0W25dLmFkZG9uc1tlXS5hZGQuY2FsbCh0aGlzKSwgdFtuXS5hZGRvbnNbZV0uYWRkID0gZnVuY3Rpb24oKSB7fTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgaW4gdFtuXS5hZGRvbnMpIHRbbl0uYWRkb25zW2VdLnNldHVwLmNhbGwodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCJpbml0QWRkb25zOmFmdGVyIikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfaW5pdEV4dGVuc2lvbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigiaW5pdEV4dGVuc2lvbnM6YmVmb3JlIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0cy5leHRlbnNpb25zLmNvbnN0cnVjdG9yID09PSBBcnJheSAmJiAodGhpcy5vcHRzLmV4dGVuc2lvbnMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogdGhpcy5vcHRzLmV4dGVuc2lvbnMKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIHRoaXMub3B0cy5leHRlbnNpb25zKSB0aGlzLm9wdHMuZXh0ZW5zaW9uc1tlXSA9IHRoaXMub3B0cy5leHRlbnNpb25zW2VdLmxlbmd0aCA/ICJtbS0iICsgdGhpcy5vcHRzLmV4dGVuc2lvbnNbZV0uam9pbigiIG1tLSIpIDogIiIsIHRoaXMub3B0cy5leHRlbnNpb25zW2VdICYmICEgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0Lm1hdGNoTWVkaWEoZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRtZW51LmFkZENsYXNzKHRoaXMub3B0cy5leHRlbnNpb25zW2VdKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG1lbnUucmVtb3ZlQ2xhc3ModGhpcy5vcHRzLmV4dGVuc2lvbnNbZV0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfShlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoImluaXRFeHRlbnNpb25zOmFmdGVyIikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfaW5pdE1lbnU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigiaW5pdE1lbnU6YmVmb3JlIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25mLmNsb25lICYmICh0aGlzLiRvcmlnID0gdGhpcy4kbWVudSwgdGhpcy4kbWVudSA9IHRoaXMuJG9yaWcuY2xvbmUoKSwgdGhpcy4kbWVudS5hZGQodGhpcy4kbWVudS5maW5kKCJbaWRdIikpLmZpbHRlcigiW2lkXSIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQodGhpcykuYXR0cigiaWQiLCBzLm1tKHQodGhpcykuYXR0cigiaWQiKSkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLm9wdHMuaW5pdE1lbnUuY2FsbCh0aGlzLCB0aGlzLiRtZW51LCB0aGlzLiRvcmlnKSwgdGhpcy4kbWVudS5hdHRyKCJpZCIsIHRoaXMuJG1lbnUuYXR0cigiaWQiKSB8fCB0aGlzLl9fZ2V0VW5pcXVlSWQoKSksIHRoaXMuJHBubHMgPSB0KCc8ZGl2IGNsYXNzPSInICsgcy5wYW5lbHMgKyAnIiAvPicpLmFwcGVuZCh0aGlzLiRtZW51LmNoaWxkcmVuKHRoaXMuY29uZi5wYW5lbE5vZGV0eXBlKSkucHJlcGVuZFRvKHRoaXMuJG1lbnUpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gW3MubWVudV07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRzLnNsaWRpbmdTdWJtZW51cyB8fCBlLnB1c2gocy52ZXJ0aWNhbCksIHRoaXMuJG1lbnUuYWRkQ2xhc3MoZS5qb2luKCIgIikpLnBhcmVudCgpLmFkZENsYXNzKHMud3JhcHBlciksIHRoaXMudHJpZ2dlcigiaW5pdE1lbnU6YWZ0ZXIiKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9pbml0UGFuZWxzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCJpbml0UGFuZWxzOmJlZm9yZSIsIGUpLCBlID0gZSB8fCB0aGlzLiRwbmxzLmNoaWxkcmVuKHRoaXMuY29uZi5wYW5lbE5vZGV0eXBlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmZpbHRlcih0aGlzLmNvbmYucGFuZWxOb2RldHlwZSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGkuX2luaXRQYW5lbCh0KHRoaXMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLl9pbml0TmF2YmFyKGUpLCBpLl9pbml0TGlzdHZpZXcoZSksIG4gPSBuLmFkZChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmNoaWxkcmVuKCIuIiArIHMubGlzdHZpZXcpLmNoaWxkcmVuKCJsaSIpLmNoaWxkcmVuKGkuY29uZi5wYW5lbE5vZGVUeXBlKS5hZGQoZS5jaGlsZHJlbigiLiIgKyBpLmNvbmYuY2xhc3NOYW1lcy5wYW5lbCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmxlbmd0aCAmJiBhLmNhbGwoaSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGEuY2FsbCh0aGlzLCBlKSwgdGhpcy5vcHRzLmluaXRQYW5lbHMuY2FsbCh0aGlzLCBuKSwgdGhpcy50cmlnZ2VyKCJpbml0UGFuZWxzOmFmdGVyIiwgbikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfaW5pdFBhbmVsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCJpbml0UGFuZWw6YmVmb3JlIiwgdCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX19yZWZhY3RvckNsYXNzKHQsIHRoaXMuY29uZi5jbGFzc05hbWVzLnBhbmVsLCAicGFuZWwiKSwgdGhpcy5fX3JlZmFjdG9yQ2xhc3ModCwgdGhpcy5jb25mLmNsYXNzTmFtZXMubm9wYW5lbCwgIm5vcGFuZWwiKSwgdGhpcy5fX3JlZmFjdG9yQ2xhc3ModCwgdGhpcy5jb25mLmNsYXNzTmFtZXMudmVydGljYWwsICJ2ZXJ0aWNhbCIpLCB0aGlzLl9fcmVmYWN0b3JDbGFzcyh0LCB0aGlzLmNvbmYuY2xhc3NOYW1lcy5pbnNldCwgImluc2V0IiksIHQuZmlsdGVyKCIuIiArIHMuaW5zZXQpLmFkZENsYXNzKHMubm9wYW5lbCksIHQuaGFzQ2xhc3Mocy5ub3BhbmVsKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIGlmICh0Lmhhc0NsYXNzKHMucGFuZWwpKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuaGFzQ2xhc3Mocy52ZXJ0aWNhbCkgfHwgIXRoaXMub3B0cy5zbGlkaW5nU3VibWVudXM7CiAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmVDbGFzcyhzLnZlcnRpY2FsKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuYXR0cigiaWQiKSB8fCB0aGlzLl9fZ2V0VW5pcXVlSWQoKTsKICAgICAgICAgICAgICAgICAgICB0LnJlbW92ZUF0dHIoImlkIiksIHQuaXMoInVsLCBvbCIpICYmICh0LndyYXAoIjxkaXYgLz4iKSwgdCA9IHQucGFyZW50KCkpLCB0LmFkZENsYXNzKHMucGFuZWwgKyAiICIgKyBzLmhpZGRlbikuYXR0cigiaWQiLCBuKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQucGFyZW50KCJsaSIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID8gdC5hZGQoaSkuYWRkQ2xhc3Mocy52ZXJ0aWNhbCkgOiB0LmFwcGVuZFRvKHRoaXMuJHBubHMpLCBpLmxlbmd0aCAmJiAoaS5kYXRhKGEuY2hpbGQsIHQpLCB0LmRhdGEoYS5wYXJlbnQsIGkpKSwgdGhpcy50cmlnZ2VyKCJpbml0UGFuZWw6YWZ0ZXIiLCB0KSwgdAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9pbml0TmF2YmFyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJpZ2dlcigiaW5pdE5hdmJhcjpiZWZvcmUiLCBlKSwgIWUuY2hpbGRyZW4oIi4iICsgcy5uYXZiYXIpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuZGF0YShhLnBhcmVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdCgnPGRpdiBjbGFzcz0iJyArIHMubmF2YmFyICsgJyIgLz4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0W25dLmkxOG4odGhpcy5vcHRzLm5hdmJhci50aXRsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICYmIGkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5oYXNDbGFzcyhzLnZlcnRpY2FsKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkucGFyZW50KCkuaXMoIi4iICsgcy5saXN0dmlldykpIHZhciBkID0gaS5jaGlsZHJlbigiYSwgc3BhbiIpLm5vdCgiLiIgKyBzLm5leHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB2YXIgZCA9IGkuY2xvc2VzdCgiLiIgKyBzLnBhbmVsKS5maW5kKCdhW2hyZWY9IiMnICsgZS5hdHRyKCJpZCIpICsgJyJdJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZC5maXJzdCgpLCBpID0gZC5jbG9zZXN0KCIuIiArIHMucGFuZWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBpLmF0dHIoImlkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG8gPSBkLnRleHQoKSwgdGhpcy5vcHRzLm5hdmJhci50aXRsZUxpbmspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhbmNob3IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZC5hdHRyKCJocmVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBhcmVudCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAiIyIgKyBjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmFwcGVuZCgnPGEgY2xhc3M9IicgKyBzLmJ0biArICIgIiArIHMucHJldiArICciIGhyZWY9IiMnICsgYyArICciIC8+JykKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRzLm5hdmJhci50aXRsZSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdHMubmF2YmFyLmFkZCAmJiBlLmFkZENsYXNzKHMuaGFzbmF2YmFyKSwgci5hcHBlbmQoJzxhIGNsYXNzPSInICsgcy50aXRsZSArICciJyArIChsLmxlbmd0aCA/ICcgaHJlZj0iJyArIGwgKyAnIicgOiAiIikgKyAiPiIgKyBvICsgIjwvYT4iKS5wcmVwZW5kVG8oZSksIHRoaXMudHJpZ2dlcigiaW5pdE5hdmJhcjphZnRlciIsIGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9pbml0TGlzdHZpZXc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoImluaXRMaXN0dmlldzpiZWZvcmUiLCBlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX19jaGlsZEFkZEJhY2soZSwgInVsLCBvbCIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX19yZWZhY3RvckNsYXNzKG4sIHRoaXMuY29uZi5jbGFzc05hbWVzLm5vbGlzdHZpZXcsICJub2xpc3R2aWV3IiksIG4uZmlsdGVyKCIuIiArIHRoaXMuY29uZi5jbGFzc05hbWVzLmluc2V0KS5hZGRDbGFzcyhzLm5vbGlzdHZpZXcpOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gbi5ub3QoIi4iICsgcy5ub2xpc3R2aWV3KS5hZGRDbGFzcyhzLmxpc3R2aWV3KS5jaGlsZHJlbigpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX19yZWZhY3RvckNsYXNzKGksIHRoaXMuY29uZi5jbGFzc05hbWVzLnNlbGVjdGVkLCAic2VsZWN0ZWQiKSwgdGhpcy5fX3JlZmFjdG9yQ2xhc3MoaSwgdGhpcy5jb25mLmNsYXNzTmFtZXMuZGl2aWRlciwgImRpdmlkZXIiKSwgdGhpcy5fX3JlZmFjdG9yQ2xhc3MoaSwgdGhpcy5jb25mLmNsYXNzTmFtZXMuc3BhY2VyLCAic3BhY2VyIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmRhdGEoYS5wYXJlbnQpOwogICAgICAgICAgICAgICAgICAgIGlmIChyICYmIHIucGFyZW50KCkuaXMoIi4iICsgcy5saXN0dmlldykgJiYgIXIuY2hpbGRyZW4oIi4iICsgcy5uZXh0KS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByLmNoaWxkcmVuKCJhLCBzcGFuIikuZmlyc3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0KCc8YSBjbGFzcz0iJyArIHMubmV4dCArICciIGhyZWY9IiMnICsgZS5hdHRyKCJpZCIpICsgJyIgLz4nKS5pbnNlcnRCZWZvcmUobyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uaXMoInNwYW4iKSAmJiBsLmFkZENsYXNzKHMuZnVsbHN1Ym9wZW4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigiaW5pdExpc3R2aWV3OmFmdGVyIiwgZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfaW5pdE9wZW5lZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCJpbml0T3BlbmVkOmJlZm9yZSIpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy4kcG5scy5maW5kKCIuIiArIHMubGlzdHZpZXcpLmNoaWxkcmVuKCIuIiArIHMuc2VsZWN0ZWQpLnJlbW92ZUNsYXNzKHMuc2VsZWN0ZWQpLmxhc3QoKS5hZGRDbGFzcyhzLnNlbGVjdGVkKSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQubGVuZ3RoID8gdC5jbG9zZXN0KCIuIiArIHMucGFuZWwpIDogdGhpcy4kcG5scy5jaGlsZHJlbigiLiIgKyBzLnBhbmVsKS5maXJzdCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMub3BlblBhbmVsKGUsICExKSwgdGhpcy50cmlnZ2VyKCJpbml0T3BlbmVkOmFmdGVyIikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfaW5pdEFuY2hvcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBvLiRib2R5Lm9uKHIuY2xpY2sgKyAiLW9uY2FudmFzIiwgImFbaHJlZl0iLCBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLiRtZW51LmZpbmQoYSkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsIGluIHRbbl0uYWRkb25zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRbbl0uYWRkb25zW2xdLmNsaWNrQW5jaG9yLmNhbGwoZSwgYSwgbykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBhLmF0dHIoImhyZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyICYmIG8gJiYgZC5sZW5ndGggPiAxICYmICIjIiA9PSBkLnNsaWNlKDAsIDEpKSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0KGQsIGUuJG1lbnUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pcygiLiIgKyBzLnBhbmVsKSAmJiAociA9ICEwLCBlW2EucGFyZW50KCkuaGFzQ2xhc3Mocy52ZXJ0aWNhbCkgPyAidG9nZ2xlUGFuZWwiIDogIm9wZW5QYW5lbCJdKGMpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChoKSB7fQogICAgICAgICAgICAgICAgICAgICAgICBpZiAociAmJiBpLnByZXZlbnREZWZhdWx0KCksICFyICYmIG8gJiYgYS5pcygiLiIgKyBzLmxpc3R2aWV3ICsgIiA+IGxpID4gYSIpICYmICFhLmlzKCdbcmVsPSJleHRlcm5hbCJdJykgJiYgIWEuaXMoJ1t0YXJnZXQ9Il9ibGFuayJdJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX192YWx1ZU9yRm4oZS5vcHRzLm9uQ2xpY2suc2V0U2VsZWN0ZWQsIGEpICYmIGUuc2V0U2VsZWN0ZWQodChpLnRhcmdldCkucGFyZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBlLl9fdmFsdWVPckZuKGUub3B0cy5vbkNsaWNrLnByZXZlbnREZWZhdWx0LCBhLCAiIyIgPT0gZC5zbGljZSgwLCAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmICYmIGkucHJldmVudERlZmF1bHQoKSwgZS5fX3ZhbHVlT3JGbihlLm9wdHMub25DbGljay5jbG9zZSwgYSwgZikgJiYgZS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9pbml0TWF0Y2hNZWRpYTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpcmVNYXRjaE1lZGlhKCksIG8uJHduZHcub24oci5yZXNpemUsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5fZmlyZU1hdGNoTWVkaWEoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2ZpcmVNYXRjaE1lZGlhOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0IGluIHRoaXMubXRjaCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHQpLm1hdGNoZXMgPyAieWVzIiA6ICJubyIsIG4gPSAwOyBuIDwgdGhpcy5tdGNoW3RdLmxlbmd0aDsgbisrKSB0aGlzLm10Y2hbdF1bbl1bZV0uY2FsbCh0aGlzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9nZXRPcmlnaW5hbE1lbnVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLiRtZW51LmF0dHIoImlkIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZi5jbG9uZSAmJiB0ICYmIHQubGVuZ3RoICYmICh0ID0gcy51bW0odCkpLCB0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX19hcGk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmVhY2godGhpcy5fYXBpLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgbltpXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlW2ldLmFwcGx5KGUsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCIgPT0gdHlwZW9mIHQgPyBuIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIG4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfX3ZhbHVlT3JGbjogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0ID8gdC5jYWxsKGVbMF0pIDogInVuZGVmaW5lZCIgPT0gdHlwZW9mIHQgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG4gPyBuIDogdAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9fcmVmYWN0b3JDbGFzczogZnVuY3Rpb24odCwgZSwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmZpbHRlcigiLiIgKyBlKS5yZW1vdmVDbGFzcyhlKS5hZGRDbGFzcyhzW25dKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9fZmluZEFkZEJhY2s6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5maW5kKGUpLmFkZCh0LmZpbHRlcihlKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfX2NoaWxkQWRkQmFjazogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNoaWxkcmVuKGUpLmFkZCh0LmZpbHRlcihlKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfX2ZpbHRlckxpc3RJdGVtczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lm5vdCgiLiIgKyBzLmRpdmlkZXIpLm5vdCgiLiIgKyBzLmhpZGRlbikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfX2ZpbHRlckxpc3RJdGVtQW5jaG9yczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZmlsdGVyTGlzdEl0ZW1zKHQpLmNoaWxkcmVuKCJhIikubm90KCIuIiArIHMubmV4dCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfX3RyYW5zaXRpb25lbmQ6IGZ1bmN0aW9uKHQsIGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG4gJiYgbi50YXJnZXQgIT0gdFswXSB8fCAoaSB8fCAodC51bmJpbmQoci50cmFuc2l0aW9uZW5kKSwgdC51bmJpbmQoci53ZWJraXRUcmFuc2l0aW9uRW5kKSwgZS5jYWxsKHRbMF0pKSwgaSA9ICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHQub24oci50cmFuc2l0aW9uZW5kLCBzKSwgdC5vbihyLndlYmtpdFRyYW5zaXRpb25FbmQsIHMpLCBzZXRUaW1lb3V0KHMsIDEuMSAqIG4pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX19nZXRVbmlxdWVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMubW0odFtuXS51bmlxdWVJZCsrKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB0LmZuW25dID0gZnVuY3Rpb24oaSwgcykgewogICAgICAgICAgICAgICAgZSgpLCBpID0gdC5leHRlbmQoITAsIHt9LCB0W25dLmRlZmF1bHRzLCBpKSwgcyA9IHQuZXh0ZW5kKCEwLCB7fSwgdFtuXS5jb25maWd1cmF0aW9uLCBzKTsKICAgICAgICAgICAgICAgIHZhciBhID0gdCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmRhdGEobikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuZXcgdFtuXShlLCBpLCBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgci4kbWVudS5kYXRhKG4sIHIuX19hcGkoKSksIGEgPSBhLmFkZChyLiRtZW51KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCBhCiAgICAgICAgICAgIH0sIHRbbl0uaTE4biA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB7fTsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgbikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZXh0ZW5kKGUsIG4pLCBlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbbl0gfHwgbjsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KCksIHRbbl0uc3VwcG9ydCA9IHsKICAgICAgICAgICAgICAgIHRvdWNoOiAib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHMgfHwgITEsCiAgICAgICAgICAgICAgICBjc3N0cmFuc2l0aW9uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiID09IHR5cGVvZiBNb2Rlcm5penIgfHwgInVuZGVmaW5lZCIgPT0gdHlwZW9mIE1vZGVybml6ci5jc3N0cmFuc2l0aW9ucyB8fCBNb2Rlcm5penIuY3NzdHJhbnNpdGlvbnMKICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgIGNzc3RyYW5zZm9ybXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIiA9PSB0eXBlb2YgTW9kZXJuaXpyIHx8ICJ1bmRlZmluZWQiID09IHR5cGVvZiBNb2Rlcm5penIuY3NzdHJhbnNmb3JtcyB8fCBNb2Rlcm5penIuY3NzdHJhbnNmb3JtcwogICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgY3NzdHJhbnNmb3JtczNkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCIgPT0gdHlwZW9mIE1vZGVybml6ciB8fCAidW5kZWZpbmVkIiA9PSB0eXBlb2YgTW9kZXJuaXpyLmNzc3RyYW5zZm9ybXMzZCB8fCBNb2Rlcm5penIuY3NzdHJhbnNmb3JtczNkCiAgICAgICAgICAgICAgICB9KCkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdmFyIHMsIGEsIHIsIG8KICAgICAgICB9CiAgICB9KGpRdWVyeSksCiAgICAvKgogICAgICogalF1ZXJ5IG1tZW51IG9mZkNhbnZhcyBhZGQtb24KICAgICAqIG1tZW51LmZyZWJzaXRlLm5sCiAgICAgKgogICAgICogQ29weXJpZ2h0IChjKSBGcmVkIEhldXNzY2hlbgogICAgICovCiAgICBmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIGUgPSAibW1lbnUiLAogICAgICAgICAgICBuID0gIm9mZkNhbnZhcyI7CiAgICAgICAgdFtlXS5hZGRvbnNbbl0gPSB7CiAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdHNbbl0pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLm9wdHNbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmNvbmZbbl07CiAgICAgICAgICAgICAgICAgICAgciA9IHRbZV0uZ2xibCwgdGhpcy5fYXBpID0gdC5tZXJnZSh0aGlzLl9hcGksIFsib3BlbiIsICJjbG9zZSIsICJzZXRQYWdlIl0pLCAib2JqZWN0IiAhPSB0eXBlb2YgYSAmJiAoYSA9IHt9KSwgInRvcCIgIT0gYS5wb3NpdGlvbiAmJiAiYm90dG9tIiAhPSBhLnBvc2l0aW9uIHx8IChhLnpwb3NpdGlvbiA9ICJmcm9udCIpLCBhID0gdGhpcy5vcHRzW25dID0gdC5leHRlbmQoITAsIHt9LCB0W2VdLmRlZmF1bHRzW25dLCBhKSwgInN0cmluZyIgIT0gdHlwZW9mIG8ucGFnZVNlbGVjdG9yICYmIChvLnBhZ2VTZWxlY3RvciA9ICI+ICIgKyBvLnBhZ2VOb2RldHlwZSksIHIuJGFsbE1lbnVzID0gKHIuJGFsbE1lbnVzIHx8IHQoKSkuYWRkKHRoaXMuJG1lbnUpLCB0aGlzLnZhcnMub3BlbmVkID0gITE7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBbaS5vZmZjYW52YXNdOwogICAgICAgICAgICAgICAgICAgICJsZWZ0IiAhPSBhLnBvc2l0aW9uICYmIGwucHVzaChpLm1tKGEucG9zaXRpb24pKSwgImJhY2siICE9IGEuenBvc2l0aW9uICYmIGwucHVzaChpLm1tKGEuenBvc2l0aW9uKSksIHRbZV0uc3VwcG9ydC5jc3N0cmFuc2Zvcm1zIHx8IGwucHVzaChpWyJuby1jc3N0cmFuc2Zvcm1zIl0pLCB0W2VdLnN1cHBvcnQuY3NzdHJhbnNmb3JtczNkIHx8IGwucHVzaChpWyJuby1jc3N0cmFuc2Zvcm1zM2QiXSksIHRoaXMuYmluZCgiaW5pdE1lbnU6YWZ0ZXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRQYWdlKHIuJHBhZ2UpLCB0aGlzLl9pbml0QmxvY2tlcigpLCB0aGlzWyJfaW5pdFdpbmRvd18iICsgbl0oKSwgdGhpcy4kbWVudS5hZGRDbGFzcyhsLmpvaW4oIiAiKSkucGFyZW50KCIuIiArIGkud3JhcHBlcikucmVtb3ZlQ2xhc3MoaS53cmFwcGVyKSwgdGhpcy4kbWVudVtvLm1lbnVJbnNlcnRNZXRob2RdKG8ubWVudUluc2VydFNlbGVjdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB3aW5kb3cubG9jYXRpb24uaGFzaDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZ2V0T3JpZ2luYWxNZW51SWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZSA9PSB0LnNsaWNlKDEpICYmIHRoaXMub3BlbigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJpbml0RXh0ZW5zaW9uczphZnRlciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gW2kubW0oIndpZGVzY3JlZW4iKSwgaS5tbSgiaWNvbmJhciIpXSwgZSA9IDA7IGUgPCB0Lmxlbmd0aDsgZSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0aGlzLm9wdHMuZXh0ZW5zaW9ucykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRzLmV4dGVuc2lvbnNbbl0uaW5kZXhPZih0W2VdKSA+IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5tYXRjaE1lZGlhKGUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuJGh0bWwuYWRkQ2xhc3ModFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuJGh0bWwucmVtb3ZlQ2xhc3ModFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0obiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmJpbmQoIm9wZW46c3RhcnQ6c3ItYXJpYSIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9fc3JfYXJpYSh0aGlzLiRtZW51LCAiaGlkZGVuIiwgITEpCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuYmluZCgiY2xvc2U6ZmluaXNoOnNyLWFyaWEiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fX3NyX2FyaWEodGhpcy4kbWVudSwgImhpZGRlbiIsICEwKQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmJpbmQoImluaXRNZW51OmFmdGVyOnNyLWFyaWEiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fX3NyX2FyaWEodGhpcy4kbWVudSwgImhpZGRlbiIsICEwKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpID0gdFtlXS5fYywgcyA9IHRbZV0uX2QsIGEgPSB0W2VdLl9lLCBpLmFkZCgib2ZmY2FudmFzIHNsaWRlb3V0IGJsb2NraW5nIG1vZGFsIGJhY2tncm91bmQgb3BlbmluZyBibG9ja2VyIHBhZ2Ugbm8tY3NzdHJhbnNmb3JtczNkIiksIHMuYWRkKCJzdHlsZSIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNsaWNrQW5jaG9yOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRzW25dKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9nZXRPcmlnaW5hbE1lbnVJZCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChhICYmIHQuaXMoJ1tocmVmPSIjJyArIGEgKyAnIl0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQuY2xvc2VzdCgiLiIgKyBpLm1lbnUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gby5kYXRhKCJtbWVudSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgJiYgbC5jbG9zZSkgcmV0dXJuIGwuY2xvc2UoKSwgcy5fX3RyYW5zaXRpb25lbmQobywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5vcGVuKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHMuY29uZi50cmFuc2l0aW9uRHVyYXRpb24pLCAhMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW4oKSwgITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHIuJHBhZ2UpIHJldHVybiBhID0gci4kcGFnZS5maXJzdCgpLmF0dHIoImlkIiksIGEgJiYgdC5pcygnW2hyZWY9IiMnICsgYSArICciXScpID8gKHRoaXMuY2xvc2UoKSwgITApIDogdm9pZCAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB0W2VdLmRlZmF1bHRzW25dID0gewogICAgICAgICAgICBwb3NpdGlvbjogImxlZnQiLAogICAgICAgICAgICB6cG9zaXRpb246ICJiYWNrIiwKICAgICAgICAgICAgYmxvY2tVSTogITAsCiAgICAgICAgICAgIG1vdmVCYWNrZ3JvdW5kOiAhMAogICAgICAgIH0sIHRbZV0uY29uZmlndXJhdGlvbltuXSA9IHsKICAgICAgICAgICAgcGFnZU5vZGV0eXBlOiAiZGl2IiwKICAgICAgICAgICAgcGFnZVNlbGVjdG9yOiBudWxsLAogICAgICAgICAgICBub1BhZ2VTZWxlY3RvcjogW10sCiAgICAgICAgICAgIHdyYXBQYWdlSWZOZWVkZWQ6ICEwLAogICAgICAgICAgICBtZW51SW5zZXJ0TWV0aG9kOiAicHJlcGVuZFRvIiwKICAgICAgICAgICAgbWVudUluc2VydFNlbGVjdG9yOiAiYm9keSIKICAgICAgICB9LCB0W2VdLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnRyaWdnZXIoIm9wZW46YmVmb3JlIiksICF0aGlzLnZhcnMub3BlbmVkKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICB0aGlzLl9vcGVuU2V0dXAoKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0Ll9vcGVuRmluaXNoKCkKICAgICAgICAgICAgICAgIH0sIHRoaXMuY29uZi5vcGVuaW5nSW50ZXJ2YWwpLCB0aGlzLnRyaWdnZXIoIm9wZW46YWZ0ZXIiKQogICAgICAgICAgICB9CiAgICAgICAgfSwgdFtlXS5wcm90b3R5cGUuX29wZW5TZXR1cCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICBvID0gdGhpcy5vcHRzW25dOwogICAgICAgICAgICB0aGlzLmNsb3NlQWxsT3RoZXJzKCksIHIuJHBhZ2UuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHQodGhpcykuZGF0YShzLnN0eWxlLCB0KHRoaXMpLmF0dHIoInN0eWxlIikgfHwgIiIpCiAgICAgICAgICAgIH0pLCByLiR3bmR3LnRyaWdnZXIoYS5yZXNpemUgKyAiLSIgKyBuLCBbITBdKTsKICAgICAgICAgICAgdmFyIGwgPSBbaS5vcGVuZWRdOwogICAgICAgICAgICBvLmJsb2NrVUkgJiYgbC5wdXNoKGkuYmxvY2tpbmcpLCAibW9kYWwiID09IG8uYmxvY2tVSSAmJiBsLnB1c2goaS5tb2RhbCksIG8ubW92ZUJhY2tncm91bmQgJiYgbC5wdXNoKGkuYmFja2dyb3VuZCksICJsZWZ0IiAhPSBvLnBvc2l0aW9uICYmIGwucHVzaChpLm1tKHRoaXMub3B0c1tuXS5wb3NpdGlvbikpLCAiYmFjayIgIT0gby56cG9zaXRpb24gJiYgbC5wdXNoKGkubW0odGhpcy5vcHRzW25dLnpwb3NpdGlvbikpLCByLiRodG1sLmFkZENsYXNzKGwuam9pbigiICIpKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGUudmFycy5vcGVuZWQgPSAhMAogICAgICAgICAgICB9LCB0aGlzLmNvbmYub3BlbmluZ0ludGVydmFsKSwgdGhpcy4kbWVudS5hZGRDbGFzcyhpLm9wZW5lZCkKICAgICAgICB9LCB0W2VdLnByb3RvdHlwZS5fb3BlbkZpbmlzaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIHRoaXMuX190cmFuc2l0aW9uZW5kKHIuJHBhZ2UuZmlyc3QoKSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0LnRyaWdnZXIoIm9wZW46ZmluaXNoIikKICAgICAgICAgICAgfSwgdGhpcy5jb25mLnRyYW5zaXRpb25EdXJhdGlvbiksIHRoaXMudHJpZ2dlcigib3BlbjpzdGFydCIpLCByLiRodG1sLmFkZENsYXNzKGkub3BlbmluZykKICAgICAgICB9LCB0W2VdLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyKCJjbG9zZTpiZWZvcmUiKSwgdGhpcy52YXJzLm9wZW5lZCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgdGhpcy5fX3RyYW5zaXRpb25lbmQoci4kcGFnZS5maXJzdCgpLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlLiRtZW51LnJlbW92ZUNsYXNzKGkub3BlbmVkKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IFtpLm9wZW5lZCwgaS5ibG9ja2luZywgaS5tb2RhbCwgaS5iYWNrZ3JvdW5kLCBpLm1tKGUub3B0c1tuXS5wb3NpdGlvbiksIGkubW0oZS5vcHRzW25dLnpwb3NpdGlvbildOwogICAgICAgICAgICAgICAgICAgIHIuJGh0bWwucmVtb3ZlQ2xhc3MoYS5qb2luKCIgIikpLCByLiRwYWdlLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQodGhpcykuYXR0cigic3R5bGUiLCB0KHRoaXMpLmRhdGEocy5zdHlsZSkpCiAgICAgICAgICAgICAgICAgICAgfSksIGUudmFycy5vcGVuZWQgPSAhMSwgZS50cmlnZ2VyKCJjbG9zZTpmaW5pc2giKQogICAgICAgICAgICAgICAgfSwgdGhpcy5jb25mLnRyYW5zaXRpb25EdXJhdGlvbiksIHRoaXMudHJpZ2dlcigiY2xvc2U6c3RhcnQiKSwgci4kaHRtbC5yZW1vdmVDbGFzcyhpLm9wZW5pbmcpLCB0aGlzLnRyaWdnZXIoImNsb3NlOmFmdGVyIikKICAgICAgICAgICAgfQogICAgICAgIH0sIHRbZV0ucHJvdG90eXBlLmNsb3NlQWxsT3RoZXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHIuJGFsbE1lbnVzLm5vdCh0aGlzLiRtZW51KS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0KHRoaXMpLmRhdGEoZSk7CiAgICAgICAgICAgICAgICBuICYmIG4uY2xvc2UgJiYgbi5jbG9zZSgpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgdFtlXS5wcm90b3R5cGUuc2V0UGFnZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCJzZXRQYWdlOmJlZm9yZSIsIGUpOwogICAgICAgICAgICB2YXIgcyA9IHRoaXMsCiAgICAgICAgICAgICAgICBhID0gdGhpcy5jb25mW25dOwogICAgICAgICAgICBlICYmIGUubGVuZ3RoIHx8IChlID0gci4kYm9keS5maW5kKGEucGFnZVNlbGVjdG9yKSwgYS5ub1BhZ2VTZWxlY3Rvci5sZW5ndGggJiYgKGUgPSBlLm5vdChhLm5vUGFnZVNlbGVjdG9yLmpvaW4oIiwgIikpKSwgZS5sZW5ndGggPiAxICYmIGEud3JhcFBhZ2VJZk5lZWRlZCAmJiAoZSA9IGUud3JhcEFsbCgiPCIgKyB0aGlzLmNvbmZbbl0ucGFnZU5vZGV0eXBlICsgIiAvPiIpLnBhcmVudCgpKSksIGUuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHQodGhpcykuYXR0cigiaWQiLCB0KHRoaXMpLmF0dHIoImlkIikgfHwgcy5fX2dldFVuaXF1ZUlkKCkpCiAgICAgICAgICAgIH0pLCBlLmFkZENsYXNzKGkucGFnZSArICIgIiArIGkuc2xpZGVvdXQpLCByLiRwYWdlID0gZSwgdGhpcy50cmlnZ2VyKCJzZXRQYWdlOmFmdGVyIiwgZSkKICAgICAgICB9LCB0W2VdLnByb3RvdHlwZVsiX2luaXRXaW5kb3dfIiArIG5dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHIuJHduZHcub2ZmKGEua2V5ZG93biArICItIiArIG4pLm9uKGEua2V5ZG93biArICItIiArIG4sIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmIChyLiRodG1sLmhhc0NsYXNzKGkub3BlbmVkKSAmJiA5ID09IHQua2V5Q29kZSkgcmV0dXJuIHQucHJldmVudERlZmF1bHQoKSwgITEKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZhciB0ID0gMDsKICAgICAgICAgICAgci4kd25kdy5vZmYoYS5yZXNpemUgKyAiLSIgKyBuKS5vbihhLnJlc2l6ZSArICItIiArIG4sIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIGlmICgxID09IHIuJHBhZ2UubGVuZ3RoICYmIChuIHx8IHIuJGh0bWwuaGFzQ2xhc3MoaS5vcGVuZWQpKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gci4kd25kdy5oZWlnaHQoKTsKICAgICAgICAgICAgICAgICAgICAobiB8fCBzICE9IHQpICYmICh0ID0gcywgci4kcGFnZS5jc3MoIm1pbkhlaWdodCIsIHMpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sIHRbZV0ucHJvdG90eXBlLl9pbml0QmxvY2tlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgIHRoaXMub3B0c1tuXS5ibG9ja1VJICYmIChyLiRibGNrIHx8IChyLiRibGNrID0gdCgnPGRpdiBpZD0iJyArIGkuYmxvY2tlciArICciIGNsYXNzPSInICsgaS5zbGlkZW91dCArICciIC8+JykpLCByLiRibGNrLmFwcGVuZFRvKHIuJGJvZHkpLm9mZihhLnRvdWNoc3RhcnQgKyAiLSIgKyBuICsgIiAiICsgYS50b3VjaG1vdmUgKyAiLSIgKyBuKS5vbihhLnRvdWNoc3RhcnQgKyAiLSIgKyBuICsgIiAiICsgYS50b3VjaG1vdmUgKyAiLSIgKyBuLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCksIHQuc3RvcFByb3BhZ2F0aW9uKCksIHIuJGJsY2sudHJpZ2dlcihhLm1vdXNlZG93biArICItIiArIG4pCiAgICAgICAgICAgIH0pLm9mZihhLm1vdXNlZG93biArICItIiArIG4pLm9uKGEubW91c2Vkb3duICsgIi0iICsgbiwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpLCByLiRodG1sLmhhc0NsYXNzKGkubW9kYWwpIHx8IChlLmNsb3NlQWxsT3RoZXJzKCksIGUuY2xvc2UoKSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfTsKICAgICAgICB2YXIgaSwgcywgYSwgcgogICAgfShqUXVlcnkpLAogICAgLyoKICAgICAqIGpRdWVyeSBtbWVudSBzY3JvbGxCdWdGaXggYWRkLW9uCiAgICAgKiBtbWVudS5mcmVic2l0ZS5ubAogICAgICoKICAgICAqIENvcHlyaWdodCAoYykgRnJlZCBIZXVzc2NoZW4KICAgICAqLwogICAgZnVuY3Rpb24odCkgewogICAgICAgIHZhciBlID0gIm1tZW51IiwKICAgICAgICAgICAgbiA9ICJzY3JvbGxCdWdGaXgiOwogICAgICAgIHRbZV0uYWRkb25zW25dID0gewogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMub3B0c1tuXTsKICAgICAgICAgICAgICAgIHRoaXMuY29uZltuXTsKICAgICAgICAgICAgICAgIHIgPSB0W2VdLmdsYmwsIHRbZV0uc3VwcG9ydC50b3VjaCAmJiB0aGlzLm9wdHMub2ZmQ2FudmFzICYmIHRoaXMub3B0cy5vZmZDYW52YXMuYmxvY2tVSSAmJiAoImJvb2xlYW4iID09IHR5cGVvZiBzICYmIChzID0gewogICAgICAgICAgICAgICAgICAgIGZpeDogcwogICAgICAgICAgICAgICAgfSksICJvYmplY3QiICE9IHR5cGVvZiBzICYmIChzID0ge30pLCBzID0gdGhpcy5vcHRzW25dID0gdC5leHRlbmQoITAsIHt9LCB0W2VdLmRlZmF1bHRzW25dLCBzKSwgcy5maXggJiYgKHRoaXMuYmluZCgib3BlbjpzdGFydCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJHBubHMuY2hpbGRyZW4oIi4iICsgaS5vcGVuZWQpLnNjcm9sbFRvcCgwKQogICAgICAgICAgICAgICAgfSksIHRoaXMuYmluZCgiaW5pdE1lbnU6YWZ0ZXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzWyJfaW5pdFdpbmRvd18iICsgbl0oKQogICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaSA9IHRbZV0uX2MsIHMgPSB0W2VdLl9kLCBhID0gdFtlXS5fZQogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGlja0FuY2hvcjogZnVuY3Rpb24odCwgZSkge30KICAgICAgICB9LCB0W2VdLmRlZmF1bHRzW25dID0gewogICAgICAgICAgICBmaXg6ICEwCiAgICAgICAgfSwgdFtlXS5wcm90b3R5cGVbIl9pbml0V2luZG93XyIgKyBuXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgIHIuJGRvY3Uub2ZmKGEudG91Y2htb3ZlICsgIi0iICsgbikub24oYS50b3VjaG1vdmUgKyAiLSIgKyBuLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByLiRodG1sLmhhc0NsYXNzKGkub3BlbmVkKSAmJiB0LnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZhciBzID0gITE7CiAgICAgICAgICAgIHIuJGJvZHkub2ZmKGEudG91Y2hzdGFydCArICItIiArIG4pLm9uKGEudG91Y2hzdGFydCArICItIiArIG4sICIuIiArIGkucGFuZWxzICsgIj4gLiIgKyBpLm9wZW5lZCwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgci4kaHRtbC5oYXNDbGFzcyhpLm9wZW5lZCkgJiYgKHMgfHwgKHMgPSAhMCwgMCA9PT0gdC5jdXJyZW50VGFyZ2V0LnNjcm9sbFRvcCA/IHQuY3VycmVudFRhcmdldC5zY3JvbGxUb3AgPSAxIDogdC5jdXJyZW50VGFyZ2V0LnNjcm9sbEhlaWdodCA9PT0gdC5jdXJyZW50VGFyZ2V0LnNjcm9sbFRvcCArIHQuY3VycmVudFRhcmdldC5vZmZzZXRIZWlnaHQgJiYgKHQuY3VycmVudFRhcmdldC5zY3JvbGxUb3AgLT0gMSksIHMgPSAhMSkpCiAgICAgICAgICAgIH0pLm9mZihhLnRvdWNobW92ZSArICItIiArIG4pLm9uKGEudG91Y2htb3ZlICsgIi0iICsgbiwgIi4iICsgaS5wYW5lbHMgKyAiPiAuIiArIGkub3BlbmVkLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByLiRodG1sLmhhc0NsYXNzKGkub3BlbmVkKSAmJiB0KHRoaXMpWzBdLnNjcm9sbEhlaWdodCA+IHQodGhpcykuaW5uZXJIZWlnaHQoKSAmJiBlLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgIH0pLCByLiR3bmR3Lm9mZihhLm9yaWVudGF0aW9uY2hhbmdlICsgIi0iICsgbikub24oYS5vcmllbnRhdGlvbmNoYW5nZSArICItIiArIG4sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZS4kcG5scy5jaGlsZHJlbigiLiIgKyBpLm9wZW5lZCkuc2Nyb2xsVG9wKDApLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgIi13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIjogImF1dG8iCiAgICAgICAgICAgICAgICB9KS5jc3MoewogICAgICAgICAgICAgICAgICAgICItd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyI6ICJ0b3VjaCIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfTsKICAgICAgICB2YXIgaSwgcywgYSwgcgogICAgfShqUXVlcnkpLAogICAgLyoKICAgICAqIGpRdWVyeSBtbWVudSBzY3JlZW5SZWFkZXIgYWRkLW9uCiAgICAgKiBtbWVudS5mcmVic2l0ZS5ubAogICAgICoKICAgICAqIENvcHlyaWdodCAoYykgRnJlZCBIZXVzc2NoZW4KICAgICAqLwogICAgZnVuY3Rpb24odCkgewogICAgICAgIHZhciBlID0gIm1tZW51IiwKICAgICAgICAgICAgbiA9ICJzY3JlZW5SZWFkZXIiOwogICAgICAgIHRbZV0uYWRkb25zW25dID0gewogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMub3B0c1tuXSwKICAgICAgICAgICAgICAgICAgICBsID0gdGhpcy5jb25mW25dOwogICAgICAgICAgICAgICAgciA9IHRbZV0uZ2xibCwgImJvb2xlYW4iID09IHR5cGVvZiBvICYmIChvID0gewogICAgICAgICAgICAgICAgICAgIGFyaWE6IG8sCiAgICAgICAgICAgICAgICAgICAgdGV4dDogbwogICAgICAgICAgICAgICAgfSksICJvYmplY3QiICE9IHR5cGVvZiBvICYmIChvID0ge30pLCBvID0gdGhpcy5vcHRzW25dID0gdC5leHRlbmQoITAsIHt9LCB0W2VdLmRlZmF1bHRzW25dLCBvKSwgby5hcmlhICYmICh0aGlzLmJpbmQoImluaXRBZGRvbnM6YWZ0ZXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmQoImluaXRNZW51OmFmdGVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigiaW5pdE1lbnU6YWZ0ZXI6c3ItYXJpYSIpCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuYmluZCgiaW5pdE5hdmJhcjphZnRlciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoImluaXROYXZiYXI6YWZ0ZXI6c3ItYXJpYSIsIGFyZ3VtZW50c1swXSkKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJvcGVuUGFuZWw6c3RhcnQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCJvcGVuUGFuZWw6c3RhcnQ6c3ItYXJpYSIsIGFyZ3VtZW50c1swXSkKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJjbG9zZTpzdGFydCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoImNsb3NlOnN0YXJ0OnNyLWFyaWEiKQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmJpbmQoImNsb3NlOmZpbmlzaCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoImNsb3NlOmZpbmlzaDpzci1hcmlhIikKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJvcGVuOnN0YXJ0IiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigib3BlbjpzdGFydDpzci1hcmlhIikKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJvcGVuOmZpbmlzaCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoIm9wZW46ZmluaXNoOnNyLWFyaWEiKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJ1cGRhdGVMaXN0dmlldyIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJHBubHMuZmluZCgiLiIgKyBpLmxpc3R2aWV3KS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuX19zcl9hcmlhKHQodGhpcyksICJoaWRkZW4iLCB0KHRoaXMpLmlzKCIuIiArIGkuaGlkZGVuKSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSksIHRoaXMuYmluZCgib3BlblBhbmVsOnN0YXJ0IiwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy4kbWVudS5maW5kKCIuIiArIGkucGFuZWwpLm5vdCh0KS5ub3QodC5wYXJlbnRzKCIuIiArIGkucGFuZWwpKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuYWRkKHQuZmluZCgiLiIgKyBpLnZlcnRpY2FsICsgIi4iICsgaS5vcGVuZWQpLmNoaWxkcmVuKCIuIiArIGkucGFuZWwpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9fc3JfYXJpYShlLCAiaGlkZGVuIiwgITApLCB0aGlzLl9fc3JfYXJpYShuLCAiaGlkZGVuIiwgITEpCiAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJjbG9zZVBhbmVsIiwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX19zcl9hcmlhKHQsICJoaWRkZW4iLCAhMCkKICAgICAgICAgICAgICAgIH0pLCB0aGlzLmJpbmQoImluaXRQYW5lbHM6YWZ0ZXIiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmZpbmQoIi4iICsgaS5wcmV2ICsgIiwgLiIgKyBpLm5leHQpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuX19zcl9hcmlhKHQodGhpcyksICJvd25zIiwgdCh0aGlzKS5hdHRyKCJocmVmIikucmVwbGFjZSgiIyIsICIiKSkKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9fc3JfYXJpYShuLCAiaGFzcG9wdXAiLCAhMCkKICAgICAgICAgICAgICAgIH0pLCB0aGlzLmJpbmQoImluaXROYXZiYXI6YWZ0ZXIiLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmNoaWxkcmVuKCIuIiArIGkubmF2YmFyKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9fc3JfYXJpYShlLCAiaGlkZGVuIiwgIXQuaGFzQ2xhc3MoaS5oYXNuYXZiYXIpKQogICAgICAgICAgICAgICAgfSksIG8udGV4dCAmJiAodGhpcy5iaW5kKCJpbml0bGlzdHZpZXc6YWZ0ZXIiLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmZpbmQoIi4iICsgaS5saXN0dmlldykuZmluZCgiLiIgKyBpLmZ1bGxzdWJvcGVuKS5wYXJlbnQoKS5jaGlsZHJlbigic3BhbiIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX19zcl9hcmlhKGUsICJoaWRkZW4iLCAhMCkKICAgICAgICAgICAgICAgIH0pLCAicGFyZW50IiA9PSB0aGlzLm9wdHMubmF2YmFyLnRpdGxlTGluayAmJiB0aGlzLmJpbmQoImluaXROYXZiYXI6YWZ0ZXIiLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmNoaWxkcmVuKCIuIiArIGkubmF2YmFyKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICEhZS5jaGlsZHJlbigiLiIgKyBpLnByZXYpLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9fc3JfYXJpYShlLmNoaWxkcmVuKCIuIiArIGkudGl0bGUpLCAiaGlkZGVuIiwgbikKICAgICAgICAgICAgICAgIH0pKSksIG8udGV4dCAmJiAodGhpcy5iaW5kKCJpbml0QWRkb25zOmFmdGVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kKCJzZXRQYWdlOmFmdGVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigic2V0UGFnZTphZnRlcjpzci10ZXh0IiwgYXJndW1lbnRzWzBdKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJpbml0TmF2YmFyOmFmdGVyIiwgZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gbi5jaGlsZHJlbigiLiIgKyBpLm5hdmJhciksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzLmNoaWxkcmVuKCIuIiArIGkudGl0bGUpLnRleHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRbZV0uaTE4bihsLnRleHQuY2xvc2VTdWJtZW51KTsKICAgICAgICAgICAgICAgICAgICBhICYmIChyICs9ICIgKCIgKyBhICsgIikiKSwgcy5jaGlsZHJlbigiLiIgKyBpLnByZXYpLmh0bWwodGhpcy5fX3NyX3RleHQocikpCiAgICAgICAgICAgICAgICB9KSwgdGhpcy5iaW5kKCJpbml0TGlzdHZpZXc6YWZ0ZXIiLCBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmRhdGEocy5wYXJlbnQpOwogICAgICAgICAgICAgICAgICAgIGlmIChyICYmIHIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gci5jaGlsZHJlbigiLiIgKyBpLm5leHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG8ubmV4dEFsbCgic3BhbiwgYSIpLmZpcnN0KCkudGV4dCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRbZV0uaTE4bihsLnRleHRbby5wYXJlbnQoKS5pcygiLiIgKyBpLnZlcnRpY2FsKSA/ICJ0b2dnbGVTdWJtZW51IiA6ICJvcGVuU3VibWVudSJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZCAmJiAoYyArPSAiICgiICsgZCArICIpIiksIG8uaHRtbChhLl9fc3JfdGV4dChjKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWRkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkgPSB0W2VdLl9jLCBzID0gdFtlXS5fZCwgYSA9IHRbZV0uX2UsIGkuYWRkKCJzcm9ubHkiKQogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGlja0FuY2hvcjogZnVuY3Rpb24odCwgZSkge30KICAgICAgICB9LCB0W2VdLmRlZmF1bHRzW25dID0gewogICAgICAgICAgICBhcmlhOiAhMCwKICAgICAgICAgICAgdGV4dDogITAKICAgICAgICB9LCB0W2VdLmNvbmZpZ3VyYXRpb25bbl0gPSB7CiAgICAgICAgICAgIHRleHQ6IHsKICAgICAgICAgICAgICAgIGNsb3NlTWVudTogIkNsb3NlIG1lbnUiLAogICAgICAgICAgICAgICAgY2xvc2VTdWJtZW51OiAiQ2xvc2Ugc3VibWVudSIsCiAgICAgICAgICAgICAgICBvcGVuU3VibWVudTogIk9wZW4gc3VibWVudSIsCiAgICAgICAgICAgICAgICB0b2dnbGVTdWJtZW51OiAiVG9nZ2xlIHN1Ym1lbnUiCiAgICAgICAgICAgIH0KICAgICAgICB9LCB0W2VdLnByb3RvdHlwZS5fX3NyX2FyaWEgPSBmdW5jdGlvbih0LCBlLCBuKSB7CiAgICAgICAgICAgIHQucHJvcCgiYXJpYS0iICsgZSwgbilbbiA/ICJhdHRyIiA6ICJyZW1vdmVBdHRyIl0oImFyaWEtIiArIGUsIG4pCiAgICAgICAgfSwgdFtlXS5wcm90b3R5cGUuX19zcl90ZXh0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPSInICsgaS5zcm9ubHkgKyAnIj4nICsgdCArICI8L3NwYW4+IgogICAgICAgIH07CiAgICAgICAgdmFyIGksIHMsIGEsIHIKICAgIH0oalF1ZXJ5KTsKICAgIHJldHVybiB0cnVlOwp9KSk7"}},"time_used":977,"timings":{"blocked":882,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wpforms-lite/assets/js/integrations/elementor/frontend.min.js?ver=1.7.3","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.525Z","timestamp":1785145482525,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wpforms-lite/assets/js/integrations/elementor/frontend.min.js?ver=1.7.3 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:44 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 964\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":964,"size_decoded":1179,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (425)","md5":"7ad4f100ce18c5b9c7a0299a18626db2","sha1":"892229085829f6649fa6d2429b8c1169c6609d8e","sha256":"1d241229e0f31279cc14226cc3240230bbfa37fb536cf99c13e04af59f07034b","sha512":"e3642133b536524348f41b92d7f73fc7ff5bce105c0eaa66391070b2b73760ba029a6ef0d7d55ea30996029c48c57d40c31a03d47cc9dda3d6823773795f7d0a","ssdeep":"","tlshash":"f811c03aa4b36d902c2f7128595f06cab232c8b761059c11370c42741f36cf6e347f84","first_seen":"2026-01-03T02:16:23.720456Z","last_seen":"2026-07-27T09:45:50.893611Z","times_seen":6,"resource_available":true,"data":"InVzZSBzdHJpY3QiOwp2YXIgV1BGb3Jtc0VsZW1lbnRvckZyb250ZW5kID0gd2luZG93LldQRm9ybXNFbGVtZW50b3JGcm9udGVuZCB8fCBmdW5jdGlvbihvLCByKSB7CiAgICB2YXIgdCA9IHsKICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdC5ldmVudHMoKQogICAgICAgIH0sCiAgICAgICAgZXZlbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcihvKS5vbigiZWxlbWVudG9yL3BvcHVwL3Nob3ciLCBmdW5jdGlvbihlLCBvLCBuKSB7CiAgICAgICAgICAgICAgICBvID0gcigiI2VsZW1lbnRvci1wb3B1cC1tb2RhbC0iICsgbykuZmluZCgiLndwZm9ybXMtZm9ybSIpOwogICAgICAgICAgICAgICAgby5sZW5ndGggJiYgdC5pbml0RmllbGRzKG8pCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBpbml0RmllbGRzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHdwZm9ybXMucmVhZHkoKSwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdwZm9ybXNNb2Rlcm5GaWxlVXBsb2FkICYmIHdwZm9ybXNNb2Rlcm5GaWxlVXBsb2FkLmluaXQoKSwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdwZm9ybXNSZWNhcHRjaGFMb2FkICYmICgicmVjYXB0Y2hhIiA9PT0gd3Bmb3Jtc0VsZW1lbnRvclZhcnMuY2FwdGNoYV9wcm92aWRlciAmJiAidjMiID09PSB3cGZvcm1zRWxlbWVudG9yVmFycy5yZWNhcHRjaGFfdHlwZSA/ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBncmVjYXB0Y2hhICYmIGdyZWNhcHRjaGEucmVhZHkod3Bmb3Jtc1JlY2FwdGNoYUxvYWQpIDogd3Bmb3Jtc1JlY2FwdGNoYUxvYWQoKSksIHIobykudHJpZ2dlcigid3Bmb3Jtc19lbGVtZW50b3JfZm9ybV9maWVsZHNfaW5pdGlhbGl6ZWQiLCBbZV0pCiAgICAgICAgfQogICAgfTsKICAgIHJldHVybiB0Cn0oZG9jdW1lbnQsICh3aW5kb3csIGpRdWVyeSkpOwpXUEZvcm1zRWxlbWVudG9yRnJvbnRlbmQuaW5pdCgpOw=="}},"time_used":1367,"timings":{"blocked":1272,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd\u0026days=1","fqdn":"api.coingecko.com","domain":"coingecko.com","tld":"com"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.916Z","timestamp":1785145485916,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /api/v3/coins/bitcoin/market_chart?vs_currency=usd\u0026days=1 HTTP/1.1\r\nHost: api.coingecko.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\nReferer: https://betaroi.ltd/\r\nOrigin: https://betaroi.ltd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"c0.wp.com/c/5.9.3/wp-includes/js/jquery/ui/mouse.min.js","fqdn":"c0.wp.com","domain":"wp.com","tld":"com"},"ip":{"addr":"192.0.77.37","port":443,"asn":2635,"as":"AUTOMATTIC","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.440Z","timestamp":1785145482440,"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":"wp.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Tue, 02 Jun 2026 19:44:51 GMT","end":"Mon, 31 Aug 2026 19:44:50 GMT"},"fingerprint":{"sha1":"42:51:7D:8E:5C:5A:69:84:E1:DE:81:56:09:A0:5E:F0:DF:73:81:69","sha256":"B2:9B:2E:37:90:1C:35:4E:9E:08:7C:C5:EC:0E:FE:B8:B4:39:CE:28:20:4B:53:FF:4D:20:89:3B:86:65:6D:4D"}}},"request":{"raw":"GET /c/5.9.3/wp-includes/js/jquery/ui/mouse.min.js HTTP/1.1\r\nHost: c0.wp.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://betaroi.ltd/\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\nserver: nginx\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: application/javascript\r\nvary: Accept-Encoding\r\nlast-modified: Thu, 03 Feb 2022 00:04:02 GMT\r\ncontent-encoding: br\r\nexpires: Tue, 27 Jul 2027 09:44:42 GMT\r\ncache-control: max-age=31536000\r\nstrict-transport-security: max-age=15552000\r\nalt-svc: clear\r\nx-nc: HIT arn 28\r\nserver-timing: a8c-cdn, dc;desc=arn, cache;desc=HIT;dur=0.0\r\ntiming-allow-origin: *\r\naccess-control-allow-methods: GET, HEAD\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","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":3406,"size_decoded":1618,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (3228)","md5":"f0a6215645c0c08e11eb34b62d75fc17","sha1":"4cada97302f25735f6bd8c23cb43ca50d154ba56","sha256":"37a579a050da890dfcb8e3e018834926e61e759f35923bc961bc995514a4b000","sha512":"fd1ebed2033399743c544f7dc3dc06d5309f0815ea0fef56bc23c2ed50f856ebc536b693e8f5c60363ffc103fd6a3c62748beb674b8ccefa6ab272fcfb49830a","ssdeep":"","tlshash":"d061ab8e33145e8342931736923baf4b7d3184d96406d51dbb79acd83a2c93960b79fc","first_seen":"2023-03-07T01:24:24Z","last_seen":"2026-07-27T09:45:50.891781Z","times_seen":702,"resource_available":true,"data":"LyohCiAqIGpRdWVyeSBVSSBNb3VzZSAxLjEzLjEKICogaHR0cDovL2pxdWVyeXVpLmNvbQogKgogKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICovCiFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCIuL2NvcmUiXSxlKTplKGpRdWVyeSl9KGZ1bmN0aW9uKG8peyJ1c2Ugc3RyaWN0Ijt2YXIgbj0hMTtyZXR1cm4gbyhkb2N1bWVudCkub24oIm1vdXNldXAiLGZ1bmN0aW9uKCl7bj0hMX0pLG8ud2lkZ2V0KCJ1aS5tb3VzZSIse3ZlcnNpb246IjEuMTMuMSIsb3B0aW9uczp7Y2FuY2VsOiJpbnB1dCwgdGV4dGFyZWEsIGJ1dHRvbiwgc2VsZWN0LCBvcHRpb24iLGRpc3RhbmNlOjEsZGVsYXk6MH0sX21vdXNlSW5pdDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5lbGVtZW50Lm9uKCJtb3VzZWRvd24uIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oZSl7cmV0dXJuIHQuX21vdXNlRG93bihlKX0pLm9uKCJjbGljay4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihlKXtpZighMD09PW8uZGF0YShlLnRhcmdldCx0LndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpKXJldHVybiBvLnJlbW92ZURhdGEoZS50YXJnZXQsdC53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCExfSksdGhpcy5zdGFydGVkPSExfSxfbW91c2VEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50Lm9mZigiLiIrdGhpcy53aWRnZXROYW1lKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSYmdGhpcy5kb2N1bWVudC5vZmYoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkub2ZmKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSl9LF9tb3VzZURvd246ZnVuY3Rpb24oZSl7aWYoIW4pe3RoaXMuX21vdXNlTW92ZWQ9ITEsdGhpcy5fbW91c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKGUpLHRoaXMuX21vdXNlRG93bkV2ZW50PWU7dmFyIHQ9dGhpcyxzPTE9PT1lLndoaWNoLGk9ISgic3RyaW5nIiE9dHlwZW9mIHRoaXMub3B0aW9ucy5jYW5jZWx8fCFlLnRhcmdldC5ub2RlTmFtZSkmJm8oZS50YXJnZXQpLmNsb3Nlc3QodGhpcy5vcHRpb25zLmNhbmNlbCkubGVuZ3RoO3JldHVybiBzJiYhaSYmdGhpcy5fbW91c2VDYXB0dXJlKGUpPyh0aGlzLm1vdXNlRGVsYXlNZXQ9IXRoaXMub3B0aW9ucy5kZWxheSx0aGlzLm1vdXNlRGVsYXlNZXR8fCh0aGlzLl9tb3VzZURlbGF5VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe3QubW91c2VEZWxheU1ldD0hMH0sdGhpcy5vcHRpb25zLmRlbGF5KSksdGhpcy5fbW91c2VEaXN0YW5jZU1ldChlKSYmdGhpcy5fbW91c2VEZWxheU1ldChlKSYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSE9PXRoaXMuX21vdXNlU3RhcnQoZSksIXRoaXMuX21vdXNlU3RhcnRlZCk/KGUucHJldmVudERlZmF1bHQoKSwhMCk6KCEwPT09by5kYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IikmJm8ucmVtb3ZlRGF0YShlLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0Ll9tb3VzZU1vdmUoZSl9LHRoaXMuX21vdXNlVXBEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5fbW91c2VVcChlKX0sdGhpcy5kb2N1bWVudC5vbigibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5vbigibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLGUucHJldmVudERlZmF1bHQoKSxuPSEwKSk6ITB9fSxfbW91c2VNb3ZlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX21vdXNlTW92ZWQpe2lmKG8udWkuaWUmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU8OSkmJiFlLmJ1dHRvbilyZXR1cm4gdGhpcy5fbW91c2VVcChlKTtpZighZS53aGljaClpZihlLm9yaWdpbmFsRXZlbnQuYWx0S2V5fHxlLm9yaWdpbmFsRXZlbnQuY3RybEtleXx8ZS5vcmlnaW5hbEV2ZW50Lm1ldGFLZXl8fGUub3JpZ2luYWxFdmVudC5zaGlmdEtleSl0aGlzLmlnbm9yZU1pc3NpbmdXaGljaD0hMDtlbHNlIGlmKCF0aGlzLmlnbm9yZU1pc3NpbmdXaGljaClyZXR1cm4gdGhpcy5fbW91c2VVcChlKX1yZXR1cm4oZS53aGljaHx8ZS5idXR0b24pJiYodGhpcy5fbW91c2VNb3ZlZD0hMCksdGhpcy5fbW91c2VTdGFydGVkPyh0aGlzLl9tb3VzZURyYWcoZSksZS5wcmV2ZW50RGVmYXVsdCgpKToodGhpcy5fbW91c2VEaXN0YW5jZU1ldChlKSYmdGhpcy5fbW91c2VEZWxheU1ldChlKSYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSE9PXRoaXMuX21vdXNlU3RhcnQodGhpcy5fbW91c2VEb3duRXZlbnQsZSksdGhpcy5fbW91c2VTdGFydGVkP3RoaXMuX21vdXNlRHJhZyhlKTp0aGlzLl9tb3VzZVVwKGUpKSwhdGhpcy5fbW91c2VTdGFydGVkKX0sX21vdXNlVXA6ZnVuY3Rpb24oZSl7dGhpcy5kb2N1bWVudC5vZmYoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkub2ZmKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksdGhpcy5fbW91c2VTdGFydGVkJiYodGhpcy5fbW91c2VTdGFydGVkPSExLGUudGFyZ2V0PT09dGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0JiZvLmRhdGEoZS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiLCEwKSx0aGlzLl9tb3VzZVN0b3AoZSkpLHRoaXMuX21vdXNlRGVsYXlUaW1lciYmKGNsZWFyVGltZW91dCh0aGlzLl9tb3VzZURlbGF5VGltZXIpLGRlbGV0ZSB0aGlzLl9tb3VzZURlbGF5VGltZXIpLHRoaXMuaWdub3JlTWlzc2luZ1doaWNoPSExLG49ITEsZS5wcmV2ZW50RGVmYXVsdCgpfSxfbW91c2VEaXN0YW5jZU1ldDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVgtZS5wYWdlWCksTWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVktZS5wYWdlWSkpPj10aGlzLm9wdGlvbnMuZGlzdGFuY2V9LF9tb3VzZURlbGF5TWV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW91c2VEZWxheU1ldH0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXt9LF9tb3VzZURyYWc6ZnVuY3Rpb24oKXt9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oKXt9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KX0pOw=="}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.yandex.net/website-widget/v1/widget.js?widgetId=ytWidget\u0026pageLang=zh\u0026widgetTheme=light\u0026autoMode=true","fqdn":"translate.yandex.net","domain":"yandex.net","tld":"net"},"ip":{"addr":"213.180.204.194","port":443,"asn":13238,"as":"YANDEX LLC","country":"Russia","country_code":"RU"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.918Z","timestamp":1785145485918,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"translate.yandex.net","organization":""},"issuer":{"commonName":"GlobalSign RSA OV SSL CA 2018","organization":"GlobalSign nv-sa"},"validity":{"start":"Sat, 11 Apr 2026 21:23:26 GMT","end":"Tue, 15 Sep 2026 20:59:59 GMT"},"fingerprint":{"sha1":"87:3A:4E:3C:AB:F3:8C:5D:84:59:2F:84:92:40:7F:98:5D:1E:5D:6B","sha256":"5B:BD:7F:E4:2A:2A:A5:13:04:EC:78:2E:67:68:D7:4B:22:7A:0F:7C:ED:C4:E8:B5:68:2E:05:D0:64:40:3B:9F"}}},"request":{"raw":"GET /website-widget/v1/widget.js?widgetId=ytWidget\u0026pageLang=zh\u0026widgetTheme=light\u0026autoMode=true HTTP/1.1\r\nHost: translate.yandex.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://betaroi.ltd/\r\nCookie: bh=YIrRnNMGahfcyuH/CJLYobEDn8/14QzlyPCOA5S2Ag==; _yasc=ED0XR2+0beQv4hRjzLFoHYDb6ihDl71lhfEfi8sLzUjqM6rWLMvqwmIyNcYX96I8zhc=\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 429 \r\naccept-ch: Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model, Sec-CH-UA-Bitness\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"429","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"text/plain","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/revslider/public/assets/js/rs6.min.js?ver=6.4.11","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.323Z","timestamp":1785145482323,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/revslider/public/assets/js/rs6.min.js?ver=6.4.11 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\r\nSec-Fetch-Dest: script\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 572314\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":572314,"size_decoded":572532,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (2671)","md5":"5f8c208fbdc7995fea7c192c6fc7976a","sha1":"108388171c81d7d860597115f8cf71f1212cfffb","sha256":"e9efe6177e31b948c8a402c0209341b0a7576279358477d5f7af0af945727162","sha512":"6a6943c7d05d4bb14f57c29ab202631f922612f80cec468820f44b3024f8b19a226072a891b059ee7bcfb6cfe01c8eb762a3402fb96b8b23c94dbe0c459fdc33","ssdeep":"6144:SysGPqBS7EATtNKWiw0LbcW5e4QiPOqIhzO50ZT5vvYmrK0ZfV0u382IzEJShrhK:SQ3EATt9hzRJShrhYbZdZnh","tlshash":"b4c42c95c6f1283c8297e12b9d3ecc04737aa90b6b06ac16796d96140f8c52c17f5ffa","first_seen":"2025-10-08T10:03:20.667928Z","last_seen":"2026-07-27T09:45:50.946743Z","times_seen":7,"resource_available":true,"data":"LyohCgogIC0gU2xpZGVyIFJldm9sdXRpb24gNi40LjEwIEphdmFTY3JpcHQgUGx1Z2luIC0KCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ueFhYWFhYLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4geFhYWFhYLi54WFhYWFguLnhYWFhYWC4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi54WFhYWFguLnhYWFhYWC4ueFhYWFhYLi4uLi4uLi4uCi4uLi4uLi4uLi54WFhYWFguLnhYWFhYWC4ueFhYWFhYLi54WFhYWFguLi4uLi4uLi4KLi4uLi4uLi4uLnhYWFhYWC4ueFhYWFhYLi54WFhYWFguLnhYWFhYWC4uLi4uLi4uLgouLi4uLi4uLi4ueFhYWFhYLi54WFhYWFguLnhYWFhYWC4ueFhYWFhYLi4uLi4uLi4uCi4uLi4uLi4uLi54WFhYWFguLnhYWFhYWC4ueFhYWFhYLi54WFhYWFguLi4uLi4uLi4KLi4uLi4uLi4uLnhYWFhYWC4ueFhYWFhYLi54WFhYWFguLnhYWFhYWC4uLi4uLi4uLgouLi4uLi4uLi4seFhYWFhYLi54WFhYWFguLnhYWFhYWC4ueFhYWFhYLi4uLi4uLi4uCi4uLi4uLi4uLix4WFhYWFguLnhYWFhYWC4ueFhYWFhYLi54WFhYWFguLi4uLi4uLi4KLi4uLi4uLi4uLHhYWFhYWC4ueFhYWFhYLi54WFhYWFguLnhYWFhYWC4uLi4uLi4uLgouLi4uLi4uLi4ueFhYWFhYLi54WFhYWFguLnhYWFhYWC4ueFhYWFhYLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLnh4eHh4eHh4eHh4eHh4eHh4eHguLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4ueHh4eHh4eHh4eHh4eHh4eHh4eC4uLi4uLi4uLgouLi4uLi4uLi4uLi4uLi4uLi4uLi54eHh4eHh4eHh4eHh4eHh4eHh4Li4uLi4uLi4uCgoJCQkJVkVSU0lPTjogNi40LjEwCgkJCSAgIERBVEU6IDIwMjEtMDQtMjgKICAgIEBhdXRob3I6IEtyaXN6dGlhbiBIb3J2YXRoLCBUaGVtZVB1bmNoIE9IRy4KCgpVUERBVEVTIEFORCBET0NTIEFUOiAKaHR0cHM6Ly93d3cudGhlbWVwdW5jaC5jb20vc3VwcG9ydC1jZW50ZXIKCQkJCkdFVCBMSUNFTlNFIEFUOiAKaHR0cHM6Ly93d3cudGhlbWVwdW5jaC5jb20vbGlua3Mvc2xpZGVyX3Jldm9sdXRpb25fd29yZHByZXNzX3JlZ3VsYXJfbGljZW5zZQoKTElDRU5TRToKQ29weXJpZ2h0IChjKSAyMDA5LTIwMTksIFRoZW1lUHVuY2guIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoaXMgd29yayBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhdCBodHRwczovL3d3dy50aGVtZXB1bmNoLmNvbS9saW5rcy9zbGlkZXJfcmV2b2x1dGlvbl93b3JkcHJlc3NfcmVndWxhcl9saWNlbnNlIChSZWd1bGFyIC8gRXh0ZW5kZWQpCgoqLwohIGZ1bmN0aW9uKGUsIHQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBpOwogICAgd2luZG93LlJTQU5ZSUQgPSB3aW5kb3cuUlNBTllJRCA9PT0gdCA/IFtdIDogd2luZG93LlJTQU5ZSUQsIHdpbmRvdy5SU0FOWUlEX3NsaWRlcklEID0gd2luZG93LlJTQU5ZSURfc2xpZGVySUQgPT09IHQgPyBbXSA6IHdpbmRvdy5SU0FOWUlEX3NsaWRlcklELCBlLmZuLmV4dGVuZCh7CiAgICAgICAgcmV2b2x1dGlvbjogZnVuY3Rpb24ocykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaSA9IGUuZm4ucmV2b2x1dGlvbjsKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJycy1wLXdwLWZpeCIpOyBuWzBdOykgblswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5bMF0pOwogICAgICAgICAgICAgICAgdGhpcy5pZCAhPT0gdCA/IChpW2RdID0gewogICAgICAgICAgICAgICAgICAgIGFueWlkOiBbXQogICAgICAgICAgICAgICAgfSwgdGhpcy5pZCA9IGkucmV2Q2hlY2tJRFMoZCwgdGhpcywgITApKSA6IHRoaXMuaWQgPSAicnNfbW9kdWxlXyIgKyBNYXRoLnJvdW5kKDFlNyAqIE1hdGgucmFuZG9tKCkpOwogICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmlkLAogICAgICAgICAgICAgICAgICAgIGwgPSBpLmNsb25lKHMpOwogICAgICAgICAgICAgICAgaVtkXSA9IEcocyksIGlbZF0uaWdub3JlSGVpZ2h0Q2hhbmdlID0gYSAmJiAiZnVsbHNjcmVlbiIgPT09IGlbZF0uc2xpZGVyTGF5b3V0ICYmIGlbZF0uaWdub3JlSGVpZ2h0Q2hhbmdlLCBpW2RdLm9wdGlvbl9leHBvcnQgPSBsLCBpW2RdLmFueWlkID0gW10sIGlbZF0uX0xzaG9ydGN1dHMgPSB7fSwgaVtkXS5jb21wdXRlZFN0eWxlID0ge30sIGlbZF0uYyA9IGUodGhpcyksIGlbZF0uY3BhciA9IGlbZF0uYy5wYXJlbnQoKSwgaVtkXS5jYW52YXMgPSBpW2RdLmMuZmluZCgicnMtc2xpZGVzIiksIGlbZF0uY2FjaGVzID0gewogICAgICAgICAgICAgICAgICAgIGNhbGNSZXNwb25zaXZlTGF5ZXJzTGlzdDogW10sCiAgICAgICAgICAgICAgICAgICAgY29udFdpZHRoTWFuYWdlcjoge30KICAgICAgICAgICAgICAgIH0sIGlbZF0uc2JncyA9IHt9LCB3aW5kb3cuUlNCcm93c2VyID0gd2luZG93LlJTQnJvd3NlciA9PT0gdCA/IGkuZ2V0X2Jyb3dzZXIoKSA6IHdpbmRvdy5SU0Jyb3dzZXIsIGkuc2V0SXNJT1MoKSwgaS5zZXRJc0Nocm9tZTg4ODkoKSwgaVtkXS5ub0RldGFjaCA9IGlbZF0uQlVHX2llX2NsaXBQYXRoID0gIkVkZ2UiID09PSB3aW5kb3cuUlNCcm93c2VyIHx8ICJJRSIgPT09IHdpbmRvdy5SU0Jyb3dzZXIsIGkuZ2V0QnlUYWcgPSByKCksIGlbZF0uaW5kZXhoZWxwZXIgPSAwLCBpW2RdLmZ1bGxTY3JlZW5PZmZzZXRSZXN1bHQgPSAwLCBpW2RdLmxldmVsID0gMCwgaVtkXS5ydGwgPSBlKCJib2R5IikuaGFzQ2xhc3MoInJ0bCIpLCBpW2RdLl9MID0gaVtkXS5fTCA9PT0gdCA/IHt9IDogaVtkXS5fTCwgaVtkXS5lbXB0eU9iamVjdCA9ICJ7fSIsIGlbZF0uZGltZW5zaW9uUmVDaGVjayA9IHt9LCBpLmdsb2JhbExpc3RlbmVyID09PSB0ICYmIGkucGFnZUhhbmRsZXIoZCksIGlbZF0uc3RvcEFmdGVyTG9vcHMgIT0gdCAmJiBpW2RdLnN0b3BBZnRlckxvb3BzID4gLTEgPyBpW2RdLmxvb3B0b2dvID0gaVtkXS5zdG9wQWZ0ZXJMb29wcyA6IGlbZF0ubG9vcHRvZ28gPSAiZGlzYWJsZWQiLCB3aW5kb3cuVCA9IGlbZF0sIGlbZF0uQlVHX3NhZmFyaV9jbGlwUGF0aCA9ICJTYWZhcmkiID09PSBpLmdldF9icm93c2VyKCkgJiYgaS5nZXRfYnJvd3Nlcl92ZXJzaW9uKCkgPiAiMTIiLCBpW2RdLm1pbkhlaWdodCA9ICJmdWxsd2lkdGgiID09PSBpW2RdLnNsaWRlckxheW91dCA/IDAgOiBpW2RdLm1pbkhlaWdodCAhPSB0ICYmICIiICE9PSBpW2RdLm1pbkhlaWdodCA/IHBhcnNlSW50KGlbZF0ubWluSGVpZ2h0LCAwKSA6IDAsIGlbZF0ubWluSGVpZ2h0ID0gaVtkXS5taW5IZWlnaHQgPT09IHQgPyAwIDogaVtkXS5taW5IZWlnaHQsIGlbZF0uaXNFZGdlID0gIkVkZ2UiID09PSBpLmdldF9icm93c2VyKCksIG8oZCksIGkudXBkYXRlVmlzaWJsZUFyZWEoZCksIEQoZCksIGkubWVzdXJlZFNjcm9sbEJhckRvbmUgfHwgaS5tZXN1cmVTY3JvbGxCYXIoKSwgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bGxzY3JlZW4iID09PSBpW2RdLnNsaWRlckxheW91dCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGkuZ2V0RnVsbHNjcmVlbk9mZnNldHMoZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIDAgIT09IGUgJiYgaVtkXS5jcGFyLmhlaWdodChpLmdldFdpbkgoZCkgLSBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpW2RdLmNwYXJbMF0uc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIgogICAgICAgICAgICAgICAgfSksICJoZXJvIiA9PSBpW2RdLnNsaWRlclR5cGUgJiYgaVtkXS5jLmZpbmQoInJzLXNsaWRlIikuZWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdCA+IDAgJiYgZSh0aGlzKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgfSksIGlbZF0ubmF2aWdhdGlvbi51c2UgPSAiaGVybyIgIT09IGlbZF0uc2xpZGVyVHlwZSAmJiAoImNhcm91c2VsIiA9PSBpW2RdLnNsaWRlclR5cGUgfHwgaVtkXS5uYXZpZ2F0aW9uLmtleWJvYXJkTmF2aWdhdGlvbiB8fCAib24iID09IGlbZF0ubmF2aWdhdGlvbi5tb3VzZVNjcm9sbE5hdmlnYXRpb24gfHwgImNhcm91c2VsIiA9PSBpW2RdLm5hdmlnYXRpb24ubW91c2VTY3JvbGxOYXZpZ2F0aW9uIHx8IGlbZF0ubmF2aWdhdGlvbi50b3VjaC50b3VjaGVuYWJsZWQgfHwgaVtkXS5uYXZpZ2F0aW9uLmFycm93cy5lbmFibGUgfHwgaVtkXS5uYXZpZ2F0aW9uLmJ1bGxldHMuZW5hYmxlIHx8IGlbZF0ubmF2aWdhdGlvbi50aHVtYm5haWxzLmVuYWJsZSB8fCBpW2RdLm5hdmlnYXRpb24udGFicy5lbmFibGUpLCBpW2RdLmMuZmluZCgicnMtYmd2aWRlbyIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIlJTLUJHVklERU8iICE9PSB0aGlzLnRhZ05hbWUgfHwgdGhpcy5pZCAhPT0gdCAmJiAiIiAhPT0gdGhpcy5pZCB8fCAodGhpcy5pZCA9ICJycy1iZy12aWRlby0iICsgTWF0aC5yb3VuZCgxZTYgKiBNYXRoLnJhbmRvbSgpKSkKICAgICAgICAgICAgICAgIH0pLCB0cEdTLmZvcmNlM0QgPSAiYXV0byIsICEwID09PSBpW2RdLm1vZGFsLnVzZUFzTW9kYWwgJiYgLTEgPT09IGkuUlNfcHJpb0xpc3QuaW5kZXhPZihkKSAmJiAoaS5SU190b0luaXRbZF0gPSAhMSwgaS5SU19wcmlvTGlzdC5wdXNoKGQpKSwgaS5SU19raWxsZWRsaXN0ICE9PSB0ICYmIC0xICE9PSBpLlJTX2tpbGxlZGxpc3QuaW5kZXhPZihkKSAmJiAoaS5SU190b0luaXRbZF0gPSAhMSwgaS5SU19wcmlvTGlzdC5wdXNoKGQpKSwgITAgPT09IGkuUlNfcHJpb0xpc3RGaXJzdEluaXQgJiYgITAgIT09IGlbZF0ubW9kYWwudXNlQXNNb2RhbCAmJiAtMSA9PT0gaS5SU19wcmlvTGlzdC5pbmRleE9mKGQpICYmIChpLlJTX3RvSW5pdFtkXSA9ICExLCBpLlJTX3ByaW9MaXN0LnB1c2goZCkpLCBpLmluaXROZXh0UmV2c2xpZGVyKGQpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBnZXRSU0pBU09OT3B0aW9uczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShpW2VdLm9wdGlvbl9leHBvcnQpKQogICAgICAgIH0sCiAgICAgICAgZ2V0UlNWZXJzaW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBpLCBhID0gd2luZG93LlNsaWRlclJldm9sdXRpb25WZXJzaW9uOwogICAgICAgICAgICBpZiAoIWUpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdCA9IGkgPSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iLCB0ICs9ICIgICAgQ3VycmVudGx5IExvYWRlZCBTbGlkZXIgUmV2b2x1dGlvbiAmIFNSIE1vZHVsZXMgOlxuIiArIGksIGEpIGEuaGFzT3duUHJvcGVydHkocikgJiYgKHQgKz0gYVtyXS5hbGlhcyArICI6ICIgKyBhW3JdLnZlciArICJcbiIpOwogICAgICAgICAgICAgICAgdCArPSBpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUgPyBhIDogdAogICAgICAgIH0sCiAgICAgICAgcmV2cmVtb3Zlc2xpZGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5pZDsKICAgICAgICAgICAgICAgIGlmICghKHQgPCAwIHx8IHQgPiBpW2FdLnNsaWRlYW1vdW50KSAmJiBpW2FdICYmIGlbYV0uc2xpZGVzLmxlbmd0aCA+IDAgJiYgKHQgPiAwIHx8IHQgPD0gaVthXS5zbGlkZXMubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gaS5nQShpW2FdLnNsaWRlc1t0XSwgImtleSIpOwogICAgICAgICAgICAgICAgICAgIGlbYV0uc2xpZGVhbW91bnQgPSBpW2FdLnNsaWRlYW1vdW50IC0gMSwgaVthXS5yZWFsc2xpZGVhbW91bnQgPSBpW2FdLnJlYWxzbGlkZWFtb3VudCAtIDEsIG4oInJzLWJ1bGxldCIsIHIsIGEpLCBuKCJycy10YWIiLCByLCBhKSwgbigicnMtdGh1bWIiLCByLCBhKSwgZShpW2FdLnNsaWRlc1t0XSkucmVtb3ZlKCksIGlbYV0udGh1bWJzID0gcyhpW2FdLnRodW1icywgdCksIGkudXBkYXRlTmF2SW5kZXhlcyAmJiBpLnVwZGF0ZU5hdkluZGV4ZXMoYSksIHQgPD0gaVthXS5wcl9hY3RpdmVfa2V5ICYmIChpW2FdLnByX2FjdGl2ZV9rZXkgPSBpW2FdLnByX2FjdGl2ZV9rZXkgLSAxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgcmV2YWRkY2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbdGhpcy5pZF0gJiYgKGlbdGhpcy5pZF0uY2FsbEJhY2tBcnJheSA9PT0gdCAmJiAoaVt0aGlzLmlkXS5jYWxsQmFja0FycmF5ID0gW10pLCBpW3RoaXMuaWRdLmNhbGxCYWNrQXJyYXkucHVzaChlKSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHJldmdldHBhcmFsbGF4cHJvYzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChpW3RoaXNbMF0uaWRdKSByZXR1cm4gaVt0aGlzWzBdLmlkXS5zY3JvbGxwcm9jCiAgICAgICAgfSwKICAgICAgICByZXZkZWJ1Z21vZGU6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgcmV2c2Nyb2xsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGUodGhpcyk7CiAgICAgICAgICAgICAgICBlKCJib2R5LGh0bWwiKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IGkub2Zmc2V0KCkudG9wICsgaS5oZWlnaHQoKSAtIHQgKyAicHgiCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDQwMAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHJldnJlZHJhdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBtKHRoaXMuaWQsIHQsICEwKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgcmV2a2lsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuaWQ7CiAgICAgICAgICAgICAgICBpW2FdLmMuZGF0YSgiY29udGhvdmVyIiwgMSksIGlbYV0uYy5kYXRhKCJjb250aG92ZXJjaGFuZ2VkIiwgMSksIGlbYV0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlLm9ucGF1c2UiKSwgaVthXS50b25wYXVzZSA9ICEwLCBpW2FdLmMudHJpZ2dlcigic3RvcHRpbWVyIiksIGlbYV0uc2xpZGVyaXNydW5uaW5nID0gITE7CiAgICAgICAgICAgICAgICB2YXIgciA9ICJ1cGRhdGVDb250YWluZXJTaXplcy4iICsgaVthXS5jLmF0dHIoImlkIik7CiAgICAgICAgICAgICAgICBpLndpbmRvdy51bmJpbmQociksIHRwR1MuZ3NhcC5raWxsVHdlZW5zT2YoaVthXS5jLmZpbmQoIioiKSwgITEpLCB0cEdTLmdzYXAua2lsbFR3ZWVuc09mKGlbYV0uYywgITEpLCBpW2FdLmMudW5iaW5kKCJob3ZlciwgbW91c2VvdmVyLCBtb3VzZWVudGVyLG1vdXNlbGVhdmUsIHJlc2l6ZSIpLCBpW2FdLmMuZmluZCgiKiIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIGkudW5iaW5kKCJvbiwgaG92ZXIsIG1vdXNlZW50ZXIsbW91c2VsZWF2ZSxtb3VzZW92ZXIsIHJlc2l6ZSxyZXN0YXJ0dGltZXIsIHN0b3B0aW1lciIpLCBpLm9mZigib24sIGhvdmVyLCBtb3VzZWVudGVyLG1vdXNlbGVhdmUsbW91c2VvdmVyLCByZXNpemUiKSwgaS5kYXRhKCJteVNwbGl0VGV4dCIsIG51bGwpLCBpLmRhdGEoImN0bCIsIG51bGwpLCBpLmRhdGEoInR3ZWVuIikgIT0gdCAmJiBpLmRhdGEoInR3ZWVuIikua2lsbCgpLCBpLmRhdGEoInB6dGwiKSAhPSB0ICYmIGkuZGF0YSgicHp0bCIpLmtpbGwoKSwgaS5kYXRhKCJ0aW1lbGluZV9vdXQiKSAhPSB0ICYmIGkuZGF0YSgidGltZWxpbmVfb3V0Iikua2lsbCgpLCBpLmRhdGEoInRpbWVsaW5lIikgIT0gdCAmJiBpLmRhdGEoInRpbWVsaW5lIikua2lsbCgpLCBpLnJlbW92ZSgpLCBpLmVtcHR5KCksIGkgPSBudWxsCiAgICAgICAgICAgICAgICB9KSwgdHBHUy5nc2FwLmtpbGxUd2VlbnNPZihpW2FdLmMuZmluZCgiKiIpLCAhMSksIHRwR1MuZ3NhcC5raWxsVHdlZW5zT2YoaVthXS5jLCAhMSksIGlbYV0ucHJvZ3Jlc3NDLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBpW2FdLmMuY2xvc2VzdCgiLnJldl9zbGlkZXJfd3JhcHBlciIpLmRldGFjaCgpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBpW2FdLmMuY2xvc2VzdCgicnMtZnVsbHdpZHRoLXdyYXAiKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgaVthXS5jLmNsb3Nlc3QoInJzLW1vZHVsZS13cmFwIikucmVtb3ZlKCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlbYV0uYy5yZW1vdmUoKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIGlbYV0uY3Bhci5kZXRhY2goKSwgaVthXS5jLmh0bWwoIiIpLCBpW2FdLmMgPSBudWxsLCBkZWxldGUgaVthXSwgaS5SU19wcmlvTGlzdC5zcGxpY2UoaS5SU19wcmlvTGlzdC5pbmRleE9mKGEpLCAxKSwgaS5SU190b0luaXRbYV0gPSAhMSwgaS5SU19raWxsZWRsaXN0ID0gaS5SU19raWxsZWRsaXN0ID09PSB0ID8gW10gOiBpLlJTX2tpbGxlZGxpc3QsIC0xID09PSBpLlJTX2tpbGxlZGxpc3QuaW5kZXhPZihhKSAmJiBpLlJTX2tpbGxlZGxpc3QucHVzaChhKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgcmV2cGF1c2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBlKHRoaXMpOwogICAgICAgICAgICAgICAgYSAhPSB0ICYmIGEubGVuZ3RoID4gMCAmJiBlKCJib2R5IikuZmluZCgiIyIgKyBhLmF0dHIoImlkIikpLmxlbmd0aCA+IDAgJiYgKGEuZGF0YSgiY29udGhvdmVyIiwgMSksIGEuZGF0YSgiY29udGhvdmVyY2hhbmdlZCIsIDEpLCBhLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub25wYXVzZSIpLCBpW3RoaXMuaWRdLnRvbnBhdXNlID0gITAsIGEudHJpZ2dlcigic3RvcHRpbWVyIikpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICByZXZyZXN1bWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGlbdGhpcy5pZF0gIT09IHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgYS5kYXRhKCJjb250aG92ZXIiLCAwKSwgYS5kYXRhKCJjb250aG92ZXJjaGFuZ2VkIiwgMSksIGEudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS5vbnJlc3VtZSIpLCBpW3RoaXMuaWRdLnRvbnBhdXNlID0gITEsIGEudHJpZ2dlcigic3RhcnR0aW1lciIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICByZXZtb2RhbDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgciA9IHRoaXMgaW5zdGFuY2VvZiBlID8gdGhpc1swXSA6IHRoaXMsCiAgICAgICAgICAgICAgICBvID0gci5pZDsKICAgICAgICAgICAgaVtyLmlkXSAhPT0gdCAmJiBpLnJldk1vZGFsKG8sIGEpCiAgICAgICAgfSwKICAgICAgICByZXZzdGFydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhID0gdGhpcyBpbnN0YW5jZW9mIGUgPyB0aGlzWzBdIDogdGhpczsKICAgICAgICAgICAgcmV0dXJuIGlbYS5pZF0gPT09IHQgPyAoY29uc29sZS5sb2coIlNsaWRlciBpcyBOb3QgRXhpc3RpbmciKSwgITEpIDogaVthLmlkXS5zbGlkZXJpc3J1bm5pbmcgfHwgITAgPT09IGlbYS5pZF0uaW5pdEVuZGVkID8gKGNvbnNvbGUubG9nKCJTbGlkZXIgSXMgUnVubmluZyBBbHJlYWR5IiksICExKSA6IChpW2EuaWRdLmMgPSBlKGEpLCBpW2EuaWRdLmNhbnZhcyA9IGlbYS5pZF0uYy5maW5kKCJycy1zbGlkZXMiKSwgdShhLmlkKSwgITApCiAgICAgICAgfSwKICAgICAgICByZXZuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbdGhpcy5pZF0gIT09IHQgJiYgaS5jYWxsaW5nTmV3U2xpZGUodGhpcy5pZCwgMSwgImNhcm91c2VsIiA9PT0gaVt0aGlzLmlkXS5zbGlkZXJUeXBlKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgcmV2cHJldjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpW3RoaXMuaWRdICE9PSB0ICYmIGkuY2FsbGluZ05ld1NsaWRlKHRoaXMuaWQsIC0xLCAiY2Fyb3VzZWwiID09PSBpW3RoaXMuaWRdLnNsaWRlclR5cGUpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICByZXZtYXhzbGlkZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBlKHRoaXMpLmZpbmQoInJzLXNsaWRlIikubGVuZ3RoCiAgICAgICAgfSwKICAgICAgICByZXZjdXJyZW50c2xpZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoaVtlKHRoaXMpWzBdLmlkXSAhPT0gdCkgcmV0dXJuIHBhcnNlSW50KGlbZSh0aGlzKVswXS5pZF0ucHJfYWN0aXZlX2tleSwgMCkgKyAxCiAgICAgICAgfSwKICAgICAgICByZXZsYXN0c2xpZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZSh0aGlzKS5maW5kKCJycy1zbGlkZSIpLmxlbmd0aAogICAgICAgIH0sCiAgICAgICAgcmV2c2hvd3NsaWRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpW3RoaXMuaWRdICE9PSB0ICYmIGUgIT09IHQgJiYgaS5jYWxsaW5nTmV3U2xpZGUodGhpcy5pZCwgInRvIiArIChlIC0gMSkpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICByZXZjYWxsc2xpZGV3aXRoaWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbdGhpcy5pZF0gIT09IHQgJiYgaS5jYWxsaW5nTmV3U2xpZGUodGhpcy5pZCwgZSwgImNhcm91c2VsIiA9PT0gaVt0aGlzLmlkXS5zbGlkZXJUeXBlKQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0pLCBpID0gZS5mbi5yZXZvbHV0aW9uLCBlLmV4dGVuZCghMCwgaSwgewogICAgICAgIGlzTnVtZXJpYzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlRmxvYXQoZSkpICYmIGlzRmluaXRlKGUpCiAgICAgICAgfSwKICAgICAgICB0cmltOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlICE9PSB0ICYmIG51bGwgIT09IGUgJiYgInN0cmluZyIgPT0gdHlwZW9mIGUgPyBlLnRyaW0oKSA6IGUKICAgICAgICB9LAogICAgICAgIHNldENvb2tpZTogZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICB2YXIgYSA9IG5ldyBEYXRlOwogICAgICAgICAgICBhLnNldFRpbWUoYS5nZXRUaW1lKCkgKyA2MCAqIGkgKiA2MCAqIDFlMyk7CiAgICAgICAgICAgIHZhciByID0gImV4cGlyZXM9IiArIGEudG9VVENTdHJpbmcoKTsKICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gZSArICI9IiArIHQgKyAiOyIgKyByICsgIjtwYXRoPS8iCiAgICAgICAgfSwKICAgICAgICBnZXRDb29raWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IGUgKyAiPSIsIGkgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKSwgYSA9IDA7IGEgPCBpLmxlbmd0aDsgYSsrKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gaVthXTsKICAgICAgICAgICAgICAgICAgICAiICIgPT0gci5jaGFyQXQoMCk7KSByID0gci5zdWJzdHJpbmcoMSk7CiAgICAgICAgICAgICAgICBpZiAoMCA9PSByLmluZGV4T2YodCkpIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoci5zdWJzdHJpbmcodC5sZW5ndGgsIHIubGVuZ3RoKSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICB9LAogICAgICAgIG1lc3VyZVNjcm9sbEJhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGkubWVzdXJlZFNjcm9sbEJhckRvbmUgPSAhMCwgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgIGUuY2xhc3NOYW1lID0gIlJTc2Nyb2xsYmFyLW1lYXN1cmUiLCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpLCBpLm1lc3VyZWRTY3JvbGxiYXJXaWR0aCA9IGUub2Zmc2V0V2lkdGggLSBlLmNsaWVudFdpZHRoLCBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBwYWdlSGFuZGxlcjogZnVuY3Rpb24ocikgewogICAgICAgICAgICBpLmdsb2JhbExpc3RlbmVyID0gITAsIGkud2luZG93ID0gZSh3aW5kb3cpLCBpLmRvY3VtZW50ID0gZShkb2N1bWVudCksIGkuUlNfdG9Jbml0ID0ge30sIGkuUlNfcHJpb0xpc3QgPSBbXSwgaS5SU19zd2FwcGluZyA9IFtdLCBpLlJTX3N3YXBMaXN0ID0ge30sIHdpbmRvdy5pc1NhZmFyaTExID09PSB0ICYmICh3aW5kb3cuaXNTYWZhcmkxMSA9IGkuaXNTYWZhcmkxMSgpKSwgYSA/IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaS5nZXRXaW5kb3dEaW1lbnNpb24oITEsICEwKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpLmdldFdpbmRvd0RpbWVuc2lvbighMCwgITApCiAgICAgICAgICAgICAgICB9LCA0MDApCiAgICAgICAgICAgIH0pIDogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGkuZ2V0V2luZG93RGltZW5zaW9uKSwgaS5nZXRXaW5kb3dEaW1lbnNpb24oITEpLCBpLnN0aWNreVN1cHBvcnRlZCA9ICExLCAiSUUiICE9PSB3aW5kb3cuUlNCcm93c2VyICYmIChpLnN0aWNreVN1cHBvcnRlZCA9ICEwKSwgaS5jaGVja1BhcnJlbnRPdmVyZmxvd3Mocik7CiAgICAgICAgICAgIHZhciBvID0gaS5nZXRCeVRhZyhkb2N1bWVudCwgIlJTLU1PRFVMRSIpOwogICAgICAgICAgICBmb3IgKHZhciBzIGluIG8pIG8uaGFzT3duUHJvcGVydHkocykgJiYgKGkuUlNfdG9Jbml0W29bc10uaWRdID0gITEsIGkuUlNfcHJpb0xpc3QucHVzaChvW3NdLmlkKSk7CiAgICAgICAgICAgIGkubmV4dFNsaWRlciA9IHIsIGkuUlNfcHJpb0xpc3RGaXJzdEluaXQgPSAhMCwgaS5oYXNOYXZDbGlja0xpc3RlbmVyID09PSB0ICYmIChpLmRvY3VtZW50Lm9uKGkuaXNfbW9iaWxlKCkgPyAidG91Y2hzdGFydCIgOiAibW91c2VlbnRlciIsICIudHBhcnJvd3MsIC50cC1idWxsZXRzLCAudHAtYnVsbGV0LCAudHAtdGFiLCAudHAtdGh1bWIsIC50cC10aHVtYnMsIC50cC10YWJzLCAudHAtcmlnaHRhcnJvdywgLnRwLWxlZnRhcnJvdyIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LmFkZCgicnMtdG91Y2hob3ZlciIpCiAgICAgICAgICAgIH0pLCBpLmRvY3VtZW50Lm9uKGkuaXNfbW9iaWxlKCkgPyAidG91Y2hlbmQiIDogIm1vdXNlbGVhdmUiLCAiLnRwYXJyb3dzLCAudHAtYnVsbGV0cywgLnRwLWJ1bGxldCwgLnRwLXRhYiwgLnRwLXRodW1iLCAudHAtdGFicywgIC50cC1yaWdodGFycm93LCAudHAtbGVmdGFycm93IiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQuY2xhc3NMaXN0LnJlbW92ZSgicnMtdG91Y2hob3ZlciIpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSwgaS5oYXNOYXZDbGlja0xpc3RlbmVyID0gITApLCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCBpbiBpLlJTX3RvSW5pdCkKICAgICAgICAgICAgICAgICAgICBpZiAoaS5oYXNPd25Qcm9wZXJ0eSh0KSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhIGluIGlbdF0uc2JncykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpW3JdLnNiZ3MuaGFzT3duUHJvcGVydHkoYSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGlbcl0uc2Jnc1thXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmRlc3Ryb3lDYW52YXMoby5jYW52YXMpLCBpLmRlc3Ryb3lDYW52YXMoby5zaGFkb3dDYW52YXMpLCBvLnRocmVlICYmIGkuZGVzdHJveUNhbnZhcyhvLnRocmVlLmNhbnZhcyksIGkuZGVzdHJveUNhbnZhcyhvLnBhdHRlcm5JbWFnZUNhbnZhcyksIGkuZGVzdHJveUNhbnZhcyhvLmZtU2hhZG93KSwgaS5kZXN0cm95Q2FudmFzKG8uaGVscF9jYW52YXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGkuZGVzdHJveUNhbnZhcyhpW3RdLmNyZWF0ZVBhdHRlcm4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJjYW52YXMiKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgaW4gcykgcy5oYXNPd25Qcm9wZXJ0eSh0KSAmJiBpLmRlc3Ryb3lDYW52YXMoc1t0XSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGRlc3Ryb3lDYW52YXM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZSAmJiAoZS53aWR0aCA9IGUuaGVpZ2h0ID0gMCwgZS5yZW1vdmUoKSwgZSA9IG51bGwpCiAgICAgICAgfSwKICAgICAgICBjaGVja1BhcnJlbnRPdmVyZmxvd3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBpW2VdLmNwYXJbMF07IHQucGFyZW50Tm9kZSAmJiAhMSAhPT0gaS5zdGlja3lTdXBwb3J0ZWQ7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJSUy1NT0RVTEUtV1JBUCIgIT09IHQudGFnTmFtZSAmJiAiUlMtRlVMTFdJRFRILVdSQVAiICE9PSB0LnRhZ05hbWUgJiYgIlJTLU1PRFVMRS1XUkFQIiAhPT0gdC50YWdOYW1lICYmIC0xID09PSB0LmNsYXNzTmFtZS5pbmRleE9mKCJ3cC1ibG9jay10aGVtZXB1bmNoLXJldnNsaWRlciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuc3RpY2t5U3VwcG9ydGVkID0gImhpZGRlbiIgIT09IGEub3ZlcmZsb3cgJiYgImhpZGRlbiIgIT09IGEub3ZlcmZsb3dYICYmICJoaWRkZW4iICE9PSBhLm92ZXJmbG93WQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0ID0gdC5wYXJlbnROb2RlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBpbml0TmV4dFJldnNsaWRlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpLlJTX3ByaW9MaXN0WzBdID09PSBlICYmICExID09PSBpLlJTX3RvSW5pdFtlXSA/IChpLlJTX3RvSW5pdFtlXSA9ICJ3YWl0aW5nIiwgYyhlKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkuaW5pdE5leHRSZXZzbGlkZXIoZSkKICAgICAgICAgICAgfSwgMTkpKSA6IGkuUlNfcHJpb0xpc3RbMF0gPT09IGUgJiYgIndhaXRpbmciID09PSBpLlJTX3RvSW5pdFtlXSA/IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpLmluaXROZXh0UmV2c2xpZGVyKGUpCiAgICAgICAgICAgIH0sIDE5KSA6IGkuUlNfcHJpb0xpc3RbMF0gPT09IGUgJiYgITAgPT09IGkuUlNfdG9Jbml0W2VdID8gKGkuUlNfcHJpb0xpc3Quc2hpZnQoKSwgMCAhPT0gaS5SU19wcmlvTGlzdC5sZW5ndGggJiYgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkuaW5pdE5leHRSZXZzbGlkZXIoZSkKICAgICAgICAgICAgfSwgMTkpKSA6IGkuUlNfcHJpb0xpc3RbMF0gIT09IGUgJiYgITEgPT09IGkuUlNfdG9Jbml0W2VdID8gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkuaW5pdE5leHRSZXZzbGlkZXIoZSkKICAgICAgICAgICAgfSwgMTkpIDogMCA9PT0gaS5SU19wcmlvTGlzdC5sZW5ndGggJiYgITAgPT09IGkuUlNfdG9Jbml0W2VdICYmIGMoZSkKICAgICAgICB9LAogICAgICAgIHNjcm9sbFRpY2tlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAxICE9IGkuc2Nyb2xsVGlja2VyQWRkZWQgJiYgKGkuc2xpZGVyc1RvU2Nyb2xsID0gW10sIGkuc2Nyb2xsVGlja2VyQWRkZWQgPSAhMCwgYSA/ICh0cEdTLmdzYXAudGlja2VyLmZwcygxNTApLCB0cEdTLmdzYXAudGlja2VyLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkuZ2VuZXJhbE9ic2VydmVyKCkKICAgICAgICAgICAgfSkpIDogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaS5zY3JvbGxSYUYgPT09IHQgJiYgKGkuc2Nyb2xsUmFGID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkuZ2VuZXJhbE9ic2VydmVyLmJpbmQodGhpcywgITApKSkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgfSkpLCBpLnNsaWRlcnNUb1Njcm9sbC5wdXNoKGUpLCBpLmdlbmVyYWxPYnNlcnZlcihhKQogICAgICAgIH0sCiAgICAgICAgZ2VuZXJhbE9ic2VydmVyOiBmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgaW4gaS5zY3JvbGxSYUYgJiYgKGkuc2Nyb2xsUmFGID0gY2FuY2VsQW5pbWF0aW9uRnJhbWUoaS5zY3JvbGxSYUYpKSwgaS5sYXN0d2luZG93aGVpZ2h0ID0gaS5sYXN0d2luZG93aGVpZ2h0IHx8IGkud2luSCwgaS5zY3JvbGxZID0gd2luZG93LnNjcm9sbFksIGkuc2xpZGVyc1RvU2Nyb2xsKSBpLnNsaWRlcnNUb1Njcm9sbC5oYXNPd25Qcm9wZXJ0eShyKSAmJiBpLnNjcm9sbEhhbmRsaW5nKGkuc2xpZGVyc1RvU2Nyb2xsW3JdLCBlLCB0LCBhKQogICAgICAgIH0sCiAgICAgICAgd3JhcE9ic2VydmVyOiB7CiAgICAgICAgICAgIHRhcmdldHM6IFtdLAogICAgICAgICAgICBpbml0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IDEsCiAgICAgICAgICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICAgICAgICAgciA9IDAsCiAgICAgICAgICAgICAgICAgICAgbyA9IHMuYmluZChpLndyYXBPYnNlcnZlcik7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gcygpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocisrLCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobyksICEociAtIGEgPCAzMCAvIHQpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzIGluIGEgPSByLCBpLndyYXBPYnNlcnZlci50YXJnZXRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkud3JhcE9ic2VydmVyLnRhcmdldHMuaGFzT3duUHJvcGVydHkocykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkud3JhcE9ic2VydmVyLnRhcmdldHNbc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBuLmVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5sdyA9PT0gZC53aWR0aCAmJiBuLmxoID09PSBkLmhlaWdodCB8fCAwID09PSBkLndpZHRoIHx8IChuLmNhbGxiYWNrICYmIChuLmNhbGxiYWNrLnBhdXNlKCksIG4uY2FsbGJhY2sua2lsbCgpLCBuLmNhbGxiYWNrID0gbnVsbCksIG4uY2FsbGJhY2sgPSB0cEdTLmdzYXAudG8oe30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IC4yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBlLmJpbmQod2luZG93LCBuLmVsZW0sIG4uaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLmx3ID0gZC53aWR0aCwgbi5saCA9IGQuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb2JzZXJ2ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKCIiICE9PSAoZSA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID8gZSA6IGVbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID8gZVswXSA6ICIiKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICBpLndyYXBPYnNlcnZlci50YXJnZXRzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtOiBlLAogICAgICAgICAgICAgICAgICAgICAgICBpZDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgbHc6IGEud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGxoOiBhLmhlaWdodAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGVudGVyVmlld1BvcnQ6IGZ1bmN0aW9uKGEsIHIpIHsKICAgICAgICAgICAgITAgIT09IGlbYV0uc3RhcnRlZCA/IChpW2FdLnN0YXJ0ZWQgPSAhMCwgaVthXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUuZmlyc3RydW4iKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGsoYSksICJoZXJvIiAhPT0gaVthXS5zbGlkZXJUeXBlICYmIGkubWFuYWdlTmF2aWdhdGlvbiAmJiBpW2FdLm5hdmlnYXRpb24udXNlICYmICEwID09PSBpW2FdLm5hdmlnYXRpb24uY3JlYXRlTmF2aWdhdGlvbkRvbmUgJiYgaS5tYW5hZ2VOYXZpZ2F0aW9uKGEpLCBpW2FdLnNsaWRlYW1vdW50ID4gMSAmJiBDKGEpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlbYV0gIT09IHQgJiYgKGlbYV0ucmV2b2x1dGlvblNsaWRlT25Mb2FkZWQgPSAhMCwgaVthXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub25sb2FkZWQiKSkKICAgICAgICAgICAgICAgIH0sIDUwKQogICAgICAgICAgICB9LCBpW2FdLnN0YXJ0RGVsYXkpLCBpW2FdLnN0YXJ0RGVsYXkgPSAwLCB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaChhKQogICAgICAgICAgICB9KSkgOiAoaVthXS53YWl0Rm9yQ291bnREb3duICYmIChDKGEpLCBpW2FdLndhaXRGb3JDb3VudERvd24gPSAhMSksICJwbGF5aW5nIiAhPSBpW2FdLnNsaWRlcmxhc3RzdGF0dXMgJiYgaVthXS5zbGlkZXJsYXN0c3RhdHVzICE9IHQgfHwgaVthXS5jLnRyaWdnZXIoInN0YXJ0dGltZXIiKSwgaVthXS5sYXN0cGxheWVkdmlkZW9zICE9IHQgJiYgaVthXS5sYXN0cGxheWVkdmlkZW9zLmxlbmd0aCA+IDAgJiYgZS5lYWNoKGlbYV0ubGFzdHBsYXllZHZpZGVvcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaS5wbGF5VmlkZW8odCwgYSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBsZWF2ZVZpZXdQb3J0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGlbYV0uc2xpZGVybGFzdHN0YXR1cyA9IGlbYV0uc2xpZGVyc3RhdHVzLCBpW2FdLmMudHJpZ2dlcigic3RvcHRpbWVyIiksIGlbYV0ucGxheWluZ3ZpZGVvcyAhPSB0ICYmIGlbYV0ucGxheWluZ3ZpZGVvcy5sZW5ndGggPiAwICYmIChpW2FdLmxhc3RwbGF5ZWR2aWRlb3MgPSBlLmV4dGVuZCghMCwgW10sIGlbYV0ucGxheWluZ3ZpZGVvcyksIGlbYV0ucGxheWluZ3ZpZGVvcyAmJiBlLmVhY2goaVthXS5wbGF5aW5ndmlkZW9zLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpW2FdLmxlYXZlVmlld1BvcnRCYXNlZFN0b3AgPSAhMCwgaS5zdG9wVmlkZW8gJiYgaS5zdG9wVmlkZW8odCwgYSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBzY3JvbGxIYW5kbGluZzogZnVuY3Rpb24oZSwgYSwgciwgbykgewogICAgICAgICAgICBpZiAoaVtlXSAhPT0gdCkgewogICAgICAgICAgICAgICAgdmFyIHMgPSBpW2VdLnRvcGMgIT09IHQgPyBpW2VdLnRvcGNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgOiAwID09PSBpW2VdLmNhbnYuaGVpZ2h0ID8gaVtlXS5jcGFyWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDogaVtlXS5jWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgcy5oaGVpZ2h0ID0gMCA9PT0gcy5oZWlnaHQgPyAwID09PSBpW2VdLmNhbnYuaGVpZ2h0ID8gaVtlXS5tb2R1bGUuaGVpZ2h0IDogaVtlXS5jYW52LmhlaWdodCA6IHMuaGVpZ2h0LCBpW2VdLnNjcm9sbHByb2MgPSBzLnRvcCA8IDAgfHwgcy5oaGVpZ2h0ID4gaS5sYXN0d2luZG93aGVpZ2h0ICYmIHMudG9wIDwgaS5sYXN0d2luZG93aGVpZ2h0ID8gcy50b3AgLyBzLmhoZWlnaHQgOiBzLmJvdHRvbSA+IGkubGFzdHdpbmRvd2hlaWdodCA/IChzLmJvdHRvbSAtIGkubGFzdHdpbmRvd2hlaWdodCkgLyBzLmhoZWlnaHQgOiAwOwogICAgICAgICAgICAgICAgdmFyIG4gPSBNYXRoLm1heCgwLCAxIC0gTWF0aC5hYnMoaVtlXS5zY3JvbGxwcm9jKSk7CiAgICAgICAgICAgICAgICBpW2VdLnZpZXdQb3J0LmVuYWJsZSAmJiAoIiUiID09PSBpW2VdLnZpZXdQb3J0LnZhVHlwZVtpW2VdLmxldmVsXSAmJiAoaVtlXS52aWV3UG9ydC52aXNpYmxlX2FyZWFbaVtlXS5sZXZlbF0gPD0gbiB8fCBuID49IDAgJiYgbiA8PSAxICYmIGlbZV0uc2J0aW1lbGluZS5maXhlZCkgfHwgInB4IiA9PT0gaVtlXS52aWV3UG9ydC52YVR5cGVbaVtlXS5sZXZlbF0gJiYgKHMudG9wIDw9IDAgJiYgcy5ib3R0b20gPj0gaS5sYXN0d2luZG93aGVpZ2h0IHx8IHMudG9wID49IDAgJiYgcy5ib3R0b20gPD0gaS5sYXN0d2luZG93aGVpZ2h0IHx8IHMudG9wID49IDAgJiYgcy50b3AgPCBpLmxhc3R3aW5kb3doZWlnaHQgLSBpW2VdLnZpZXdQb3J0LnZpc2libGVfYXJlYVtpW2VdLmxldmVsXSB8fCBzLmJvdHRvbSA+PSBpW2VdLnZpZXdQb3J0LnZpc2libGVfYXJlYVtpW2VdLmxldmVsXSAmJiBzLmJvdHRvbSA8IGkubGFzdHdpbmRvd2hlaWdodCkgPyBpW2VdLmludmlld3BvcnQgfHwgKGlbZV0uaW52aWV3cG9ydCA9ICEwLCBpLmVudGVyVmlld1BvcnQoZSwgITApLCBpW2VdLmMudHJpZ2dlcigiZW50ZXJ2aWV3cG9ydCIpKSA6IGlbZV0uaW52aWV3cG9ydCAmJiAoaVtlXS5pbnZpZXdwb3J0ID0gITEsIGkubGVhdmVWaWV3UG9ydChlKSwgaVtlXS5jLnRyaWdnZXIoImxlZnR2aWV3cG9ydCIpKSksIGlbZV0uaW52aWV3cG9ydCAmJiAoaS5jYWxsQmFja0hhbmRsaW5nICYmIGkuY2FsbEJhY2tIYW5kbGluZyhlLCAicGFyYWxsYXgiLCAic3RhcnQiKSwgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICJmdWxsc2NyZWVuIiA9PT0gaVtlXS5zbGlkZXJMYXlvdXQgJiYgaS5nZXRGdWxsc2NyZWVuT2Zmc2V0cyhlKQogICAgICAgICAgICAgICAgfSksIGkucGFyYWxsYXhQcm9jZXNzZXMoZSwgcywgbywgciksIGkuY2FsbEJhY2tIYW5kbGluZyAmJiBpLmNhbGxCYWNrSGFuZGxpbmcoZSwgInBhcmFsbGF4IiwgImVuZCIpKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBjbG9uZTogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICBpZiAoaSA9PT0gdCAmJiBlID09PSB0KSByZXR1cm4ge307CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBlKGksIGEpIHsKICAgICAgICAgICAgICAgIHZhciByID0gQXJyYXkuaXNBcnJheShpKSA/IFtdIDoge307CiAgICAgICAgICAgICAgICBmb3IgKHZhciBvIGluIGkpIGkuaGFzT3duUHJvcGVydHkobykgJiYgKGlbb10gIT09IHQgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGlbb10gJiYgYSA/IHJbb10gPSBlKGlbb10sICEwKSA6IGlbb10gIT09IHQgJiYgKHJbb10gPSBpW29dKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICB9KGUsIGkpCiAgICAgICAgfSwKICAgICAgICBjbG9zZXN0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlICYmICh0KGUpID8gZSA6IGkuY2xvc2VzdChlLnBhcmVudE5vZGUsIHQpKQogICAgICAgIH0sCiAgICAgICAgY2xvc2VzdE5vZGU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGkuY2xvc2VzdChlLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5ub2RlTmFtZSA9PT0gdAogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2xvc2VzdENsYXNzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBpLmNsb3Nlc3QoZSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICgiICIgKyBlLmNsYXNzTmFtZSArICIgIikuaW5kZXhPZigiICIgKyB0ICsgIiAiKSA+PSAwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBnZXRXaW5IOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBpW2VdLmlnbm9yZUhlaWdodENoYW5nZSA/IGkubW9iaWxlV2luSCA6IGkud2luSAogICAgICAgIH0sCiAgICAgICAgZ2V0V2luZG93RGltZW5zaW9uOiBmdW5jdGlvbihlLCByKSB7CiAgICAgICAgICAgICExID09PSBlID8gKGkuckFmU2Nyb2xsYmFyID0gInNraXAiLCBpLndpbldBbGwgPSB3aW5kb3cuaW5uZXJXaWR0aCwgaS53aW5XU2JhciA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgYSA/IChpLnpvb20gPSByID8gMSA6IGkud2luV1NiYXIgLyBpLndpbldBbGwsIGkud2luVyA9IDEgIT09IGkuem9vbSA/IGkud2luV1NiYXIgKiBpLnpvb20gOiBNYXRoLm1pbihpLndpbldBbGwsIGkud2luV1NiYXIpLCBpLndpbkggPSAxICE9PSBpLnpvb20gPyB3aW5kb3cuaW5uZXJIZWlnaHQgKiBpLnpvb20gOiB3aW5kb3cuaW5uZXJIZWlnaHQsIHIgJiYgd2luZG93LnZpc3VhbFZpZXdwb3J0ICYmIChpLndpbkggKj0gd2luZG93LnZpc3VhbFZpZXdwb3J0LnNjYWxlLCBpLndpbldBbGwgKj0gd2luZG93LnZpc3VhbFZpZXdwb3J0LnNjYWxlKSwgaS5zY3JvbGxCYXJXaWR0aCA9IDApIDogKGkuaXNNb2RhbE9wZW4gJiYgaS5vcGVuTW9kYWxJZCAhPT0gdCAmJiBpW2kub3Blbk1vZGFsSWRdICE9PSB0ICYmIGlbaS5vcGVuTW9kYWxJZF0uY2Fudi5oZWlnaHQgPiBpLndpbkggPyBpLnNjcm9sbEJhcldpZHRoID0gaS5tZXN1cmVkU2Nyb2xsYmFyV2lkdGggOiBpLnNjcm9sbEJhcldpZHRoID0gaS53aW5XQWxsIC0gaS53aW5XU2JhciwgaS53aW5XID0gTWF0aC5taW4oaS53aW5XQWxsLCBpLndpbldTYmFyKSwgaS53aW5IID0gd2luZG93LmlubmVySGVpZ2h0KSwgYSAmJiBpLndpbkggPiAxMjUgJiYgKGkubGFzdHdpbmRvd2hlaWdodCAhPT0gdCAmJiBNYXRoLmFicyhpLmxhc3R3aW5kb3doZWlnaHQgLSBpLndpbkgpIDwgMTI1ID8gaS5tb2JpbGVXaW5IID0gaS5sYXN0d2luZG93aGVpZ2h0IDogaS5tb2JpbGVXaW5IID0gaS53aW5IKSkgOiBjbGVhclRpbWVvdXQoaS53aW5kb3dEaW1lbnN0aW9uRGVsYXkpLCBpLndpbmRvd0RpbWVuc3Rpb25EZWxheSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpLnJBZlNjcm9sbGJhciA9IHQsIGkud2luV0FsbCA9IHdpbmRvdy5pbm5lcldpZHRoLCBpLndpbldTYmFyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLCBhID8gKGkuem9vbSA9IHIgPyAxIDogaS53aW5XU2JhciAvIGkud2luV0FsbCwgaS5SU19weF9yYXRpbyA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IHdpbmRvdy5zY3JlZW4uYXZhaWxXaWR0aCAvIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgaS53aW5XID0gMSAhPT0gaS56b29tID8gaS53aW5XU2JhciAqIGkuem9vbSA6IE1hdGgubWluKGkud2luV0FsbCwgaS53aW5XU2JhciksIGkud2luSCA9IDEgIT09IGkuem9vbSA/IHdpbmRvdy5pbm5lckhlaWdodCAqIGkuem9vbSA6IHdpbmRvdy5pbm5lckhlaWdodCwgciAmJiB3aW5kb3cudmlzdWFsVmlld3BvcnQgJiYgKGkud2luSCAqPSB3aW5kb3cudmlzdWFsVmlld3BvcnQuc2NhbGUsIGkud2luV0FsbCAqPSB3aW5kb3cudmlzdWFsVmlld3BvcnQuc2NhbGUpLCBpLnNjcm9sbEJhcldpZHRoID0gMCwgciAmJiB0cEdTLmdzYXAuZGVsYXllZENhbGwoLjEsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGkuZ2V0V2luZG93RGltZW5zaW9uKCkKICAgICAgICAgICAgICAgIH0pKSA6IChpLmlzTW9kYWxPcGVuICYmIGkub3Blbk1vZGFsSWQgIT09IHQgJiYgaVtpLm9wZW5Nb2RhbElkXSAhPT0gdCAmJiBpW2kub3Blbk1vZGFsSWRdLmNhbnYuaGVpZ2h0ID4gaS53aW5IID8gaS5zY3JvbGxCYXJXaWR0aCA9IGkubWVzdXJlZFNjcm9sbGJhcldpZHRoIDogaS5zY3JvbGxCYXJXaWR0aCA9IGkud2luV0FsbCAtIGkud2luV1NiYXIsIGkud2luVyA9IE1hdGgubWluKGkud2luV0FsbCwgaS53aW5XU2JhciksIGkud2luSCA9IHdpbmRvdy5pbm5lckhlaWdodCksIGEgJiYgaS53aW5IID4gMTI1ICYmIChpLmxhc3R3aW5kb3doZWlnaHQgIT09IHQgJiYgTWF0aC5hYnMoaS5sYXN0d2luZG93aGVpZ2h0IC0gaS53aW5IKSA8IDEyNSA/IGkubW9iaWxlV2luSCA9IGkubGFzdHdpbmRvd2hlaWdodCA6IGkubW9iaWxlV2luSCA9IGkud2luSCksICExICE9PSBlICYmIGkuZG9jdW1lbnQudHJpZ2dlcigidXBkYXRlQ29udGFpbmVyU2l6ZXMiKQogICAgICAgICAgICB9LCAxMDApCiAgICAgICAgfSwKICAgICAgICBhQzogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICB0ICYmICh0LmNsYXNzTGlzdCAmJiB0LmNsYXNzTGlzdC5hZGQgPyB0LmNsYXNzTGlzdC5hZGQoIiIgKyBpKSA6IGUodCkuYWRkQ2xhc3MoaSkpCiAgICAgICAgfSwKICAgICAgICByQzogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICB0ICYmICh0LmNsYXNzTGlzdCAmJiB0LmNsYXNzTGlzdC5yZW1vdmUgPyB0LmNsYXNzTGlzdC5yZW1vdmUoIiIgKyBpKSA6IGUodCkucmVtb3ZlQ2xhc3MoaSkpCiAgICAgICAgfSwKICAgICAgICBzQTogZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICBlICYmIGUuc2V0QXR0cmlidXRlICYmIGUuc2V0QXR0cmlidXRlKCJkYXRhLSIgKyB0LCBpKQogICAgICAgIH0sCiAgICAgICAgZ0E6IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgPyB0IDogZS5oYXNBdHRyaWJ1dGUgJiYgZS5oYXNBdHRyaWJ1dGUoImRhdGEtIiArIGkpICYmIGUuZ2V0QXR0cmlidXRlKCJkYXRhLSIgKyBpKSAhPT0gdCAmJiBudWxsICE9PSBlLmdldEF0dHJpYnV0ZSgiZGF0YS0iICsgaSkgPyBlLmdldEF0dHJpYnV0ZSgiZGF0YS0iICsgaSkgOiBhICE9PSB0ID8gYSA6IHQKICAgICAgICB9LAogICAgICAgIHJBOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGUgJiYgZS5yZW1vdmVBdHRyaWJ1dGUgJiYgZS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtIiArIHQpCiAgICAgICAgfSwKICAgICAgICBpV0E6IGZ1bmN0aW9uKGUsIGEpIHsKICAgICAgICAgICAgcmV0dXJuIGlbZV0uanVzdGlmeUNhcm91c2VsID8gInN0YXRpYyIgPT09IGEgPyBpW2VdLmNhcm91c2VsLndyYXB3aWR0aCA6IGlbZV0uY2Fyb3VzZWwuc2xpZGVfd2lkdGhzW2EgIT09IHQgPyBhIDogaVtlXS5jYXJvdXNlbC5mb2N1c2VkXSA6IGlbZV0uZ3JpZHdpZHRoW2lbZV0ubGV2ZWxdCiAgICAgICAgfSwKICAgICAgICBpSEU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGlbZV0udXNlRnVsbFNjcmVlbkhlaWdodCA/IGlbZV0uY2Fudi5oZWlnaHQgOiBNYXRoLm1heChpW2VdLmN1cnJlbnRSb3dzSGVpZ2h0LCBpW2VdLmdyaWRoZWlnaHRbaVtlXS5sZXZlbF0pCiAgICAgICAgfSwKICAgICAgICB1cGRhdGVGaXhlZFNjcm9sbFRpbWVzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICEwID09PSBpW2VdLnNidGltZWxpbmUuc2V0ICYmICEwID09PSBpW2VdLnNidGltZWxpbmUuZml4ZWQgJiYgImF1dG8iICE9PSBpW2VdLnNsaWRlckxheW91dCAmJiAoaVtlXS5zYnRpbWVsaW5lLnJlc3QgPSBpW2VdLmR1cmF0aW9uIC0gaVtlXS5zYnRpbWVsaW5lLmZpeEVuZCwgaVtlXS5zYnRpbWVsaW5lLnRpbWUgPSBpW2VdLmR1cmF0aW9uIC0gKGlbZV0uc2J0aW1lbGluZS5maXhTdGFydCArIGlbZV0uc2J0aW1lbGluZS5yZXN0KSwgaVtlXS5zYnRpbWVsaW5lLmV4dGVuZGVkID0gaVtlXS5zYnRpbWVsaW5lLnRpbWUgLyAxMCkKICAgICAgICB9LAogICAgICAgIGFkZFNhZmFyaUZpeDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAhMCA9PT0gd2luZG93LmlzU2FmYXJpMTEgJiYgITAgIT09IGlbZV0uc2FmYXJpM2RGaXggJiYgKGlbZV0uc2FmYXJpM2RGaXggPSAhMCwgaVtlXS5jWzBdLmNsYXNzTmFtZSArPSAiIHNhZmFyaWZpeCIpCiAgICAgICAgfSwKICAgICAgICBvcGVuTW9kYWxBUEk6IGZ1bmN0aW9uKGksIGEsIHIpIHsKICAgICAgICAgICAgaWYgKHdpbmRvdy5SU182MF9NT0RBTFMgPT09IHQgfHwgLTEgPT0gZS5pbkFycmF5KGksIHdpbmRvdy5SU182MF9NT0RBTFMpKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICJyZXZzbGlkZXJfYWpheF9jYWxsX2Zyb250IiwKICAgICAgICAgICAgICAgICAgICBjbGllbnRfYWN0aW9uOiAiZ2V0X3NsaWRlcl9odG1sIiwKICAgICAgICAgICAgICAgICAgICBhbGlhczogaSwKICAgICAgICAgICAgICAgICAgICB1c2FnZTogIm1vZGFsIgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGUuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogInBvc3QiLAogICAgICAgICAgICAgICAgICAgIHVybDogciwKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IG8sCiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24odCwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAxID09IHQuc3VjY2VzcyAmJiAoZSgiYm9keSIpLmFwcGVuZCh0LmRhdGEpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5mbi5yZXZvbHV0aW9uLmRvY3VtZW50LnRyaWdnZXIoIlJTX09QRU5NT0RBTF8iICsgaSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgNDkpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIk1vZGFsIENhbiBub3QgYmUgTG9hZGVkIiksIGNvbnNvbGUubG9nKGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSBlbHNlIGUuaW5BcnJheShpLCB3aW5kb3cuUlNfNjBfTU9EQUxTKSA+PSAwICYmIGUuZm4ucmV2b2x1dGlvbi5kb2N1bWVudC50cmlnZ2VyKCJSU19PUEVOTU9EQUxfIiArIGksIGEpCiAgICAgICAgfSwKICAgICAgICBzaG93TW9kYWxDb3ZlcjogZnVuY3Rpb24oYSwgciwgbykgewogICAgICAgICAgICBzd2l0Y2ggKG8pIHsKICAgICAgICAgICAgICAgIGNhc2UgInNob3ciOgogICAgICAgICAgICAgICAgICAgIHZhciBzOwogICAgICAgICAgICAgICAgICAgIGlmIChyLnNwaW4gIT09IHQgJiYgIm9mZiIgIT09IHIuc3BpbiAmJiAocyA9IGkuYnVpbGRTcGlubmVyKGEsICJzcGlubmVyIiArIHIuc3Bpbiwgci5zcGluYywgIm1vZGFsc3Bpbm5lciIpKSwgci5iZyAhPT0gdCAmJiAhMSAhPT0gci5iZyAmJiAiZmFsc2UiICE9PSByLmJnICYmICJ0cmFuc3BhcmVudCIgIT09IHIuYmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlKCc8cnMtbW9kYWwtY292ZXIgZGF0YS1hbGlhcz0iJyArIHIuYWxpYXMgKyAnIiBkYXRhLXJpZD0iJyArIGEgKyAnIiBpZD0iJyArIGEgKyAnX21vZGFsX2JnIiBzdHlsZT0iZGlzcGxheTpub25lO29wYWNpdHk6MDtiYWNrZ3JvdW5kOicgKyByLmJnICsgJyI+PC9ycy1tb2RhbC1jb3Zlcj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgZSgiYm9keSIpLmFwcGVuZChuKSwgci5zcGVlZCA9IHBhcnNlRmxvYXQoci5zcGVlZCksIHIuc3BlZWQgPSByLnNwZWVkID4gMjAwID8gci5zcGVlZCAvIDFlMyA6IHIuc3BlZWQsIHIuc3BlZWQgPSBNYXRoLm1heChNYXRoLm1pbigzLCByLnNwZWVkKSwgLjMpLCB0cEdTLmdzYXAudG8obiwgci5zcGVlZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiAicG93ZXIzLmluT3V0IgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5pc01vZGFsT3BlbiA9ICEwLCBzICE9PSB0ICYmIG4uYXBwZW5kKHMpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHMgIT09IHQgJiYgaVthXS5jLmFwcGVuZChzKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImhpZGUiOgogICAgICAgICAgICAgICAgICAgIChuID0gZSgncnMtbW9kYWwtY292ZXJbZGF0YS1hbGlhcz0iJyArIHIuYWxpYXMgKyAnIl0gLm1vZGFsc3Bpbm5lcicpKSAhPT0gdCAmJiBuLmxlbmd0aCA+IDAgPyBuLnJlbW92ZSgpIDogYSAhPT0gdCAmJiBpW2FdLmMuZmluZCgiLm1vZGFsc3Bpbm5lciIpLnJlbW92ZSgpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJldk1vZGFsOiBmdW5jdGlvbihhLCByKSB7CiAgICAgICAgICAgIGlmIChhICE9PSB0ICYmIGlbYV0gIT09IHQgJiYgImNsaWNrZWQiICE9PSBpW2FdLm1vZGFsLmNsb3NlUHJvdGVjdGlvbikgewogICAgICAgICAgICAgICAgaWYgKCEwID09PSBpW2FdLm1vZGFsLmNsb3NlUHJvdGVjdGlvbikgcmV0dXJuIGlbYV0ubW9kYWwuY2xvc2VQcm90ZWN0aW9uLCB2b2lkIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaVthXS5tb2RhbC5jbG9zZVByb3RlY3Rpb24gPSAhMSwgaS5yZXZNb2RhbChhLCByKQogICAgICAgICAgICAgICAgfSwgNzUwKTsKICAgICAgICAgICAgICAgIHN3aXRjaCAoci5tb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAic2hvdyI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMCA9PT0gaVthXS5tb2RhbC5pc0xpdmUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEwID09PSBpLmFueU1vZGFsY2xvc2luZykgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBpW2FdLm1vZGFsLmlzTGl2ZSA9ICEwLCByLnNsaWRlID0gci5zbGlkZSA9PT0gdCA/ICJ0bzAiIDogci5zbGlkZSwgaVthXS5tb2RhbC5ib2R5Y2xhc3MgIT09IHQgJiYgaVthXS5tb2RhbC5ib2R5Y2xhc3MubGVuZ3RoID49IDAgJiYgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKGlbYV0ubW9kYWwuYm9keWNsYXNzKSwgdHBHUy5nc2FwLnRvKGlbYV0ubW9kYWwuYmcsIGlbYV0ubW9kYWwuY292ZXJTcGVlZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiAicG93ZXIzLmluT3V0IgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdHBHUy5nc2FwLnNldChpW2FdLm1vZGFsLmMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJhdXRvIiA9PT0gaVthXS5zbGlkZXJMYXlvdXQgPyAiaW5saW5lLWJsb2NrIiA6ICJibG9jayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpW2FdLmNwYXIucmVtb3ZlQ2xhc3MoImhpZGVhbGxzY3JvbGxiYXJzIiksIHRwR1MuZ3NhcC5zZXQoaVthXS5jcGFyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAiYmxvY2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGkuaXNNb2RhbE9wZW4gPSAhMCwgaVthXS5jbGVhck1vZGFsQkcgPSAhMCwgdHBHUy5nc2FwLmZyb21UbyhvLCBpW2FdLm1vZGFsLmNvdmVyU3BlZWQgLyA1LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogInBvd2VyMy5pbk91dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLm9wZW5Nb2RhbElkID0gYSwgaVthXS5zbGlkZXJpc3J1bm5pbmcgPyBpLmNhbGxpbmdOZXdTbGlkZShhLCByLnNsaWRlKSA6ICgidG8wIiAhPT0gci5zbGlkZSAmJiAoaVthXS5zdGFydFdpdGhTbGlkZUtleSA9IHIuc2xpZGUpLCB1KGEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdHBHUy5nc2FwLmZyb21UbyhbaVthXS5tb2RhbC5jXSwgLjAxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogaVthXS5tb2RhbC5jb3ZlclNwZWVkIC8gNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMuaW5PdXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7fQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgd2luZG93Lm92ZXJzY3JvbGxoaXN0b3J5ID0gZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdywgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIgogICAgICAgICAgICAgICAgICAgICAgICB9LCAyNTApLCBpLmdldFdpbmRvd0RpbWVuc2lvbigpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJjbG9zZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMCA9PT0gaS5hbnlNb2RhbGNsb3NpbmcpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaS5hbnlNb2RhbGNsb3NpbmcgPSAhMCwgaS5vcGVuTW9kYWxJZCA9IHQsIHgoYSksIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSB3aW5kb3cub3ZlcnNjcm9sbGhpc3RvcnksIGlbYV0uY3Bhci5hZGRDbGFzcygiaGlkZWFsbHNjcm9sbGJhcnMiKSwgaVthXS5tb2RhbC5ib2R5Y2xhc3MgIT09IHQgJiYgaVthXS5tb2RhbC5ib2R5Y2xhc3MubGVuZ3RoID49IDAgJiYgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKGlbYV0ubW9kYWwuYm9keWNsYXNzKSwgdHBHUy5nc2FwLnRvKGlbYV0ubW9kYWwuYmcsIGlbYV0ubW9kYWwuY292ZXJTcGVlZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMuaW5PdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0cEdTLmdzYXAudG8oaVthXS5tb2RhbC5jLCBpW2FdLm1vZGFsLmNvdmVyU3BlZWQgLyA2LjUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBpW2FdLm1vZGFsLmNvdmVyU3BlZWQgLyA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwR1MuZ3NhcC5zZXQoaVthXS5jcGFyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmRvY3VtZW50LnRyaWdnZXIoInJldm9sdXRpb24uYWxsLnJlc2l6ZSIpLCBpLmdldFdpbmRvd0RpbWVuc2lvbigpLCBpLmlzTW9kYWxPcGVuID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIGlbYV0ubW9kYWwuY2xvc2VQcm90ZWN0aW9uID0gITAsIGNsZWFyVGltZW91dChpW2FdLm1vZGFsLmNsb3NlVGltZXIpLCBpW2FdLm1vZGFsLmNsb3NlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5hbnlNb2RhbGNsb3NpbmcgPSAhMSwgaVthXS5tb2RhbC5pc0xpdmUgPSAhMSwgaVthXS5tb2RhbC5jbG9zZVByb3RlY3Rpb24gPSAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LCBNYXRoLm1heCg3NTAsIDEwMjAgKiBpW2FdLm1vZGFsLmNvdmVyU3BlZWQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5pdCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuUlNfNjBfTU9EQUxTID0gd2luZG93LlJTXzYwX01PREFMUyA9PT0gdCA/IFtdIDogd2luZG93LlJTXzYwX01PREFMUywgLTEgPT09IGUuaW5BcnJheShpW2FdLm1vZGFsLmFsaWFzLCB3aW5kb3cuUlNfNjBfTU9EQUxTKSAmJiB3aW5kb3cuUlNfNjBfTU9EQUxTLnB1c2goaVthXS5tb2RhbC5hbGlhcyksIGlbYV0ubW9kYWwubGlzdGVuZXIgPT09IHQgJiYgKGlbYV0ubW9kYWwuYyA9IGUoIiMiICsgYSArICJfbW9kYWwiKSwgITEgIT09IGlbYV0ubW9kYWwuY292ZXIgJiYgImZhbHNlIiAhPT0gaVthXS5tb2RhbC5jb3ZlciB8fCAoaVthXS5tb2RhbC5jb3ZlckNvbG9yID0gInRyYW5zcGFyZW50IiksIGlbYV0ubW9kYWwuYmcgPSBlKCdycy1tb2RhbC1jb3ZlcltkYXRhLWFsaWFzPSInICsgci5hbGlhcyArICciXScpLCBpW2FdLm1vZGFsLmJnID09PSB0IHx8IDAgPT09IGlbYV0ubW9kYWwuYmcubGVuZ3RoID8gKGlbYV0ubW9kYWwuYmcgPSBlKCc8cnMtbW9kYWwtY292ZXIgc3R5bGU9ImRpc3BsYXk6bm9uZTtvcGFjaXR5OjA7YmFja2dyb3VuZDonICsgaVthXS5tb2RhbC5jb3ZlckNvbG9yICsgJyIgZGF0YS1yaWQ9IicgKyBhICsgJyIgaWQ9IicgKyBhICsgJ19tb2RhbF9iZyI+PC9ycy1tb2RhbC1jb3Zlcj4nKSwgImF1dG8iID09PSBpW2FdLnNsaWRlckxheW91dCAmJiBpW2FdLm1vZGFsLmNvdmVyID8gZSgiYm9keSIpLmFwcGVuZChpW2FdLm1vZGFsLmJnKSA6IGlbYV0ubW9kYWwuYy5hcHBlbmQoaVthXS5tb2RhbC5iZykpIDogaVthXS5tb2RhbC5iZy5hdHRyKCJkYXRhLXJpZCIsIGEpLCBpW2FdLm1vZGFsLmNbMF0uY2xhc3NOYW1lICs9ICJycy1tb2RhbC0iICsgaVthXS5zbGlkZXJMYXlvdXQsIGlbYV0ubW9kYWwuY2FsaWJyYXRpb24gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogImF1dG8iID09PSBpW2FdLnNsaWRlckxheW91dCA/ICJjZW50ZXIiID09PSBpW2FdLm1vZGFsLmhvcml6b250YWwgPyAiNTAlIiA6ICJsZWZ0IiA9PT0gaVthXS5tb2RhbC5ob3Jpem9udGFsID8gIjBweCIgOiAiYXV0byIgOiAiMHB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogImF1dG8iID09PSBpW2FdLnNsaWRlckxheW91dCA/ICJjZW50ZXIiID09PSBpW2FdLm1vZGFsLmhvcml6b250YWwgPyAiYXV0byIgOiAibGVmdCIgPT09IGlbYV0ubW9kYWwuaG9yaXpvbnRhbCA/ICJhdXRvIiA6ICIwcHgiIDogIjBweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAiYXV0byIgPT09IGlbYV0uc2xpZGVyTGF5b3V0IHx8ICJmdWxsd2lkdGgiID09PSBpW2FdLnNsaWRlckxheW91dCA/ICJtaWRkbGUiID09PSBpW2FdLm1vZGFsLnZlcnRpY2FsID8gIjUwJSIgOiAidG9wIiA9PT0gaVthXS5tb2RhbC52ZXJ0aWNhbCA/ICIwcHgiIDogImF1dG8iIDogIjBweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAiYXV0byIgPT09IGlbYV0uc2xpZGVyTGF5b3V0IHx8ICJmdWxsd2lkdGgiID09PSBpW2FdLnNsaWRlckxheW91dCA/ICJtaWRkbGUiID09PSBpW2FdLm1vZGFsLnZlcnRpY2FsID8gImF1dG8iIDogInRvcCIgPT09IGlbYV0ubW9kYWwudmVydGljYWwgPyAiYXV0byIgOiAiMHB4IiA6ICIwcHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6ICgiYXV0byIgPT09IGlbYV0uc2xpZGVyTGF5b3V0IHx8ICJmdWxsd2lkdGgiID09PSBpW2FdLnNsaWRlckxheW91dCkgJiYgIm1pZGRsZSIgPT09IGlbYV0ubW9kYWwudmVydGljYWwgPyAiLTUwJSIgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6ICJhdXRvIiA9PT0gaVthXS5zbGlkZXJMYXlvdXQgJiYgImNlbnRlciIgPT09IGlbYV0ubW9kYWwuaG9yaXpvbnRhbCA/ICItNTAlIiA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICItNTAlIiA9PT0gaVthXS5tb2RhbC5jYWxpYnJhdGlvbi55ICYmIChpW2FdLm1vZGFsLmNhbGlicmF0aW9uLmZpbHRlciA9ICJibHVyKDBweCkiKSwgdHBHUy5nc2FwLnNldChpW2FdLm1vZGFsLmMsICJhdXRvIiA9PT0gaVthXS5zbGlkZXJMYXlvdXQgfHwgImZ1bGxzY3JlZW4iID09PSBpW2FdLnNsaWRlckxheW91dCA/IGUuZXh0ZW5kKCEwLCBpW2FdLm1vZGFsLmNhbGlicmF0aW9uLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAibm9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogIm5vbmUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgImZ1bGx3aWR0aCIgPT09IGlbYV0uc2xpZGVyTGF5b3V0ICYmIHRwR1MuZ3NhcC5zZXQoaVthXS5tb2RhbC5jLmZpbmQoInJzLW1vZHVsZS13cmFwIiksIGlbYV0ubW9kYWwuY2FsaWJyYXRpb24pLCBpLmRvY3VtZW50Lm9uKCJSU19PUEVOTU9EQUxfIiArIGlbYV0ubW9kYWwuYWxpYXMsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnJldk1vZGFsKGEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInNob3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5kb2N1bWVudC5vbigiY2xpY2siLCAicnMtbW9kYWwtY292ZXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnJldk1vZGFsKGkuZ0EodGhpcywgInJpZCIpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJjbG9zZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGlbYV0ubW9kYWwubGlzdGVuZXIgPSAhMCwgaVthXS5tb2RhbC50cmlnZ2VyICE9PSB0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMsIG4gPSBpW2FdLm1vZGFsLnRyaWdnZXIuc3BsaXQoIjsiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyBpbiBpW2FdLm1vZGFsLnRyaWdnZXIgPSB7fSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5oYXNPd25Qcm9wZXJ0eShvKSkgc3dpdGNoICgocyA9IG5bb10uc3BsaXQoIjoiKSlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpW2FdLm1vZGFsLnRyaWdnZXIudGltZSA9IHBhcnNlSW50KHNbMV0sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVthXS5tb2RhbC50cmlnZ2VyLnNjcm9sbCA9IHNbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic28iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVthXS5tb2RhbC50cmlnZ2VyLnNjcm9sbG8gPSBwYXJzZUludChzWzFdLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbYV0ubW9kYWwudHJpZ2dlci5ldmVudCA9IHNbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaGEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVthXS5tb2RhbC50cmlnZ2VyLmhhc2ggPSBzWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbYV0ubW9kYWwudHJpZ2dlci5jb29raWUgPSBzWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpW2FdLm1vZGFsLnRyaWdnZXIuY29va2llICE9PSB0ID8gZCA9ICJ0cnVlIiAhPT0gaS5nZXRDb29raWUoaVthXS5tb2RhbC5hbGlhcyArICJfbW9kYWxfb25lX3RpbWUiKSA6ICJ0cnVlIiA9PSBpLmdldENvb2tpZShpW2FdLm1vZGFsLmFsaWFzICsgIl9tb2RhbF9vbmVfdGltZSIpICYmIGkuc2V0Q29va2llKGlbYV0ubW9kYWwuYWxpYXMgKyAiX21vZGFsX29uZV90aW1lIiwgITEsIDEwKSwgZCAmJiAoaVthXS5tb2RhbC50cmlnZ2VyLnRpbWUgIT09IHQgJiYgMCAhPT0gaVthXS5tb2RhbC50cmlnZ2VyLnRpbWUgJiYgKGlbYV0ubW9kYWwudHJpZ2dlci5jb29raWUgIT09IHQgJiYgaS5zZXRDb29raWUoaVthXS5tb2RhbC5hbGlhcyArICJfbW9kYWxfb25lX3RpbWUiLCAhMCwgaVthXS5tb2RhbC50cmlnZ2VyLmNvb2tpZSksIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZG9jdW1lbnQudHJpZ2dlcigiUlNfT1BFTk1PREFMXyIgKyBpW2FdLm1vZGFsLmFsaWFzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlbYV0ubW9kYWwudHJpZ2dlci50aW1lKSksIGlbYV0ubW9kYWwudHJpZ2dlci5zY3JvbGxvICE9PSB0IHx8IGlbYV0ubW9kYWwudHJpZ2dlci5zY3JvbGwgIT09IHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVthXS5tb2RhbC50cmlnZ2VyLnNjcm9sbCAhPT0gdCAmJiBlKGlbYV0ubW9kYWwudHJpZ2dlci5zY3JvbGwpWzBdICE9PSB0ICYmIChpW2FdLm1vZGFsLnRyaWdnZXIuc2Nyb2xsID0gZShpW2FdLm1vZGFsLnRyaWdnZXIuc2Nyb2xsKVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlbYV0ubW9kYWwudHJpZ2dlci5zY3JvbGwgIT09IHQpIHZhciBlID0gaVthXS5tb2RhbC50cmlnZ2VyLnNjcm9sbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlbYV0ubW9kYWwudHJpZ2dlci5zY3JvbGwgIT09IHQgJiYgTWF0aC5hYnMoZS50b3AgKyAoZS5ib3R0b20gLSBlLnRvcCkgLyAyIC0gaS5nZXRXaW5IKGEpIC8gMikgPCA1MCB8fCBpW2FdLm1vZGFsLnRyaWdnZXIuc2Nyb2xsbyAhPT0gdCAmJiBNYXRoLmFicyhpW2FdLm1vZGFsLnRyaWdnZXIuc2Nyb2xsbyAtIChpLnNjcm9sbFkgIT09IHQgPyBpLnNjcm9sbFkgOiB3aW5kb3cuc2Nyb2xsWSkpIDwgMTAwKSAmJiAoaS5kb2N1bWVudC50cmlnZ2VyKCJSU19PUEVOTU9EQUxfIiArIGlbYV0ubW9kYWwuYWxpYXMpLCBpW2FdLm1vZGFsLnRyaWdnZXIuY29va2llICE9PSB0ICYmIGkuc2V0Q29va2llKGlbYV0ubW9kYWwuYWxpYXMgKyAiX21vZGFsX29uZV90aW1lIiwgITAsIGlbYV0ubW9kYWwudHJpZ2dlci5jb29raWUpLCBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBsKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbYV0ubW9kYWwudHJpZ2dlci5ldmVudCAhPT0gdCAmJiBpLmRvY3VtZW50Lm9uKGlbYV0ubW9kYWwudHJpZ2dlci5ldmVudCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5kb2N1bWVudC50cmlnZ2VyKCJSU19PUEVOTU9EQUxfIiArIGlbYV0ubW9kYWwuYWxpYXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgInQiID09IGlbYV0ubW9kYWwudHJpZ2dlci5oYXNoICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKSA9PSBpW2FdLm1vZGFsLmFsaWFzICYmIGkuZG9jdW1lbnQudHJpZ2dlcigiUlNfT1BFTk1PREFMXyIgKyBpW2FdLm1vZGFsLmFsaWFzKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHNtYXJ0Q29udmVydERpdnM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSAiIjsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlICYmIGUuaW5kZXhPZigiIyIpID49IDApIHsKICAgICAgICAgICAgICAgIHZhciBpID0gZS5zcGxpdCgiLCIpLAogICAgICAgICAgICAgICAgICAgIGEgPSBpLmxlbmd0aCAtIDE7CiAgICAgICAgICAgICAgICBmb3IgKHZhciByIGluIGkpIHQgPSAic3RyaW5nIiA9PSB0eXBlb2YgaVtyXSAmJiAiIyIgPT09IGlbcl1bMF0gPyB0ICsgaVtyXVsxXSAvIGlbcl1bM10gKiAxMDAgKyAiJSIgKyAociA8IGEgPyAiLCIgOiAiIikgOiB0ICsgaVtyXSArIChyIDwgYSA/ICIsIiA6ICIiKQogICAgICAgICAgICB9IGVsc2UgdCA9IGU7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSwKICAgICAgICByZXZUb1Jlc3A6IGZ1bmN0aW9uKGUsIGksIGEsIHIpIHsKICAgICAgICAgICAgaWYgKChlID0gZSA9PT0gdCA/IGEgOiBlKSAhPT0gdCkgewogICAgICAgICAgICAgICAgaWYgKHIgPSByID09PSB0ID8gIiwiIDogciwgImJvb2xlYW4iICE9IHR5cGVvZiBlICYmICgib2JqZWN0IiAhPSB0eXBlb2YgZSB8fCBBcnJheS5pc0FycmF5KGUpKSkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UoL1tbXF1dL2csICIiKS5yZXBsYWNlKC9cJy9nLCAiIikuc3BsaXQocikKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IEFycmF5LmlzQXJyYXkoZSkgPyBlIDogW2VdOyBlLmxlbmd0aCA8IGk7KSBlW2UubGVuZ3RoXSA9IGVbZS5sZW5ndGggLSAxXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbG9hZEltYWdlczogZnVuY3Rpb24oYSwgciwgbywgcykgewogICAgICAgICAgICBpZiAoYSAhPT0gdCAmJiAwICE9PSBhLmxlbmd0aCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBbXTsKICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgaW4gYSkgYS5oYXNPd25Qcm9wZXJ0eShkKSAmJiBhW2RdICE9PSB0ICYmIG4ucHVzaChhW2RdKTsKICAgICAgICAgICAgICAgIGVsc2Ugbi5wdXNoKGEpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgbCBpbiBuKQogICAgICAgICAgICAgICAgICAgIGlmIChuLmhhc093blByb3BlcnR5KGwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gbltsXS5xdWVyeVNlbGVjdG9yQWxsKCJpbWcsIHJzLXNiZywgLnJzLXN2ZyIpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkIGluIGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5oYXNPd25Qcm9wZXJ0eShkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gZyhjW2RdLCB0LCByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHAgIT09IHQgPyBwIDogaS5nQShjW2RdLCAic3ZnX3NyYyIpICE9IHQgPyBpLmdBKGNbZF0sICJzdmdfc3JjIikgOiBjW2RdLnNyYyA9PT0gdCA/IGUoY1tkXSkuZGF0YSgic3JjIikgOiBjW2RdLnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGkuZ0EoY1tkXSwgInN2Z19zcmMiKSAhPSB0ID8gInN2ZyIgOiAiaW1nIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ICE9PSB0ICYmIGlbcl0ubG9hZHF1ZXVlICE9PSB0ICYmIDAgPT0gaVtyXS5sb2FkcXVldWUuZmlsdGVyKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc3JjID09PSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoICYmIGlbcl0ubG9hZHF1ZXVlLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHRvbG9hZDogZS5ub3coKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaCB8fCAiaW1nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbzogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IGNbZF0uY29tcGxldGUgJiYgdSA9PT0gY1tkXS5zcmMgPyAibG9hZGVkIiA6ICJwcmVwYXJlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYzogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNbZF0uY29tcGxldGUgJiYgdSA9PT0gY1tkXS5zcmMgPyBjW2RdLndpZHRoIDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjW2RdLmNvbXBsZXRlICYmIHUgPT09IGNbZF0uc3JjID8gY1tkXS5oZWlnaHQgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3KHIpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHdhaXRGb3JDdXJyZW50SW1hZ2VzOiBmdW5jdGlvbihyLCBvLCBzKSB7CiAgICAgICAgICAgIGlmIChyICE9PSB0ICYmIDAgIT09IHIubGVuZ3RoICYmIGlbb10gIT09IHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gITEsCiAgICAgICAgICAgICAgICAgICAgZCA9IFtdOwogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocikpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCBpbiByKSByLmhhc093blByb3BlcnR5KGwpICYmIHJbbF0gIT09IHQgJiYgZC5wdXNoKHJbbF0pOwogICAgICAgICAgICAgICAgZWxzZSBkLnB1c2gocik7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBjIGluIGQpCiAgICAgICAgICAgICAgICAgICAgaWYgKGQuaGFzT3duUHJvcGVydHkoYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBkW2NdLnF1ZXJ5U2VsZWN0b3JBbGwoImltZywgcnMtc2JnLCAucnMtc3ZnIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCBpbiBwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuaGFzT3duUHJvcGVydHkobCkgJiYgImxlbmd0aCIgIT09IGwgJiYgIShwW2xdLmNsYXNzTmFtZS5pbmRleE9mKCJycy1wemltZyIpID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBlKHBbbF0pLmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGcocFtsXSwgdCwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBoICE9PSB0ID8gaCA6IGkuZ0EocFtsXSwgInN2Z19zcmMiKSAhPSB0ID8gaS5nQShwW2xdLCAic3ZnX3NyYyIpIDogcFtsXS5zcmMgPT09IHQgPyB1LnNyYyA6IHBbbF0uc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gaS5nZXRMb2FkT2JqKG8sIG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLnNBKHBbbF0sICJzcmMtcnMtcmVmIiwgbSksIHUubG9hZGVkID09PSB0ICYmIHYgIT09IHQgJiYgdi5wcm9ncmVzcyAmJiAibG9hZGVkIiA9PSB2LnByb2dyZXNzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwW2xdLnNyYyA9IHYuc3JjLCAiaW1nIiA9PSB2LnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1LnNsaWRlYmdpbWFnZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xID09IHYuc3JjLmluZGV4T2YoImltYWdlcy90cmFuc3BhcmVudC5wbmciKSAmJiAtMSA9PSB2LnNyYy5pbmRleE9mKCJhc3NldHMvdHJhbnNwYXJlbnQucG5nIikgfHwgdS5iZ2NvbG9yID09PSB0IHx8IHUuYmdjb2xvciAhPT0gdCAmJiAidHJhbnNwYXJlbnQiICE9PSB1LmJnY29sb3IgJiYgKHYuYmdDb2xvciA9ICEwLCB2LnVzZUJHQ29sb3IgPSAhMCksIGkuc0EoZFtjXSwgIm93aWR0aCIsIHYud2lkdGgpLCBpLnNBKGRbY10sICJvaGVpZ2h0Iiwgdi5oZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gaS5nZXRCeVRhZyhkW2NdLCAiUlMtU0JHLVdSQVAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGkuZ0EoZFtjXSwgImtleSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpW29dLnNiZ3NbeV0ubG9hZG9iaiA9IHYsIGYubGVuZ3RoID4gMCAmJiAoaS5zQShmWzBdLCAib3dpZHRoIiwgdi53aWR0aCksIGkuc0EoZlswXSwgIm9oZWlnaHQiLCB2LmhlaWdodCkpLCAiY2Fyb3VzZWwiID09PSBpW29dLnNsaWRlclR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBlKGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGkuZ2V0U2xpZGVJbmRleChvLCB5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlbb10uY2Fyb3VzZWwuanVzdGlmeSAmJiBpW29dLmNhcm91c2VsLnNsaWRlX3dpZHRocyA9PT0gdCB8fCBpW29dLmNhcm91c2VsLnNsaWRlX3dpZHRoID09PSB0KSAmJiBpLnNldENhcm91c2VsRGVmYXVsdHMobywgITApLCBiLmRhdGEoInBhbnpvb20iKSA9PT0gdCB8fCBpW29dLnBhbnpvb21UTHMgIT09IHQgJiYgaVtvXS5wYW56b29tVExzW3ddICE9PSB0IHx8IGkuc3RhcnRQYW5ab29tKGIsIG8sIDAsIHcsICJwcmVwYXJlIiwgeSksIGlbb10uc2Jnc1t5XS5pc0hUTUw1ICYmICFpW29dLnNiZ3NbeV0udmlkZW9pc3BsYXlpbmcgJiYgKGlbb10uc2Jnc1t5XS52aWRlbyA9IGlbb10uc2Jnc1t5XS5sb2Fkb2JqLmltZyksIGRbY10uZ2V0QXR0cmlidXRlKCJkYXRhLWlyYXRpbyIpICE9PSB0ICYmICFkW2NdLmdldEF0dHJpYnV0ZSgiZGF0YS1pcmF0aW8iKSAmJiB2LmltZyAmJiB2LmltZy5uYXR1cmFsV2lkdGggJiYgKGRbY10uc2V0QXR0cmlidXRlKCJkYXRhLWlyYXRpbyIsIHYuaW1nLm5hdHVyYWxXaWR0aCAvIHYuaW1nLm5hdHVyYWxIZWlnaHQpLCBpLnNldENhcm91c2VsRGVmYXVsdHMobywgInJlZHJhdyIpLCAhMCA9PT0gaVtvXS5jYXJvdXNlbC5vY2ZpcnN0dHVuICYmIGkub3JnYW5pc2VDYXJvdXNlbChvLCAicmlnaHQiLCAhMCwgITEsICExKSksIGkudXBkYXRlU2xpZGVCR3MobywgeSwgaVtvXS5zYmdzW3ldKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJzdmciID09IHYudHlwZSAmJiAibG9hZGVkIiA9PSB2LnByb2dyZXNzICYmIChwW2xdLmlubmVySFRNTCA9IHYuaW5uZXJIVE1MKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5sb2FkZWQgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICYmIHYucHJvZ3Jlc3MgJiYgdi5wcm9ncmVzcy5tYXRjaCgvaW5wcm9ncmVzc3xpbmxvYWR8cHJlcGFyZWQvZykgJiYgKCF2LmVycm9yICYmIGUubm93KCkgLSB2LnN0YXJ0dG9sb2FkIDwgMTVlMyA/IG4gPSAhMCA6ICh2LnByb2dyZXNzID0gImZhaWxlZCIsIHYucmVwb3J0ZWRfaW1nIHx8ICh2LnJlcG9ydGVkX2ltZyA9ICEwLCBjb25zb2xlLmxvZyhtICsgIiAgQ291bGQgbm90IGJlIGxvYWRlZCAhIikpKSksIDEgIT0gaVtvXS55b3V0dWJlYXBpbmVlZGVkIHx8IHdpbmRvdy5ZVCAmJiBZVC5QbGF5ZXIgIT0gdCB8fCAobiA9IFMoInlvdXR1YmUiLCBvKSksIDEgIT0gaVtvXS52aW1lb2FwaW5lZWRlZCB8fCB3aW5kb3cuVmltZW8gfHwgKG4gPSBTKCJ2aW1lbyIsIG8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0hYSAmJiBpW29dLmF1ZGlvcXVldWUgJiYgaVtvXS5hdWRpb3F1ZXVlLmxlbmd0aCA+IDAgJiYgZS5lYWNoKGlbb10uYXVkaW9xdWV1ZSwgZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgICAgIGkuc3RhdHVzICYmICJwcmVwYXJlZCIgPT09IGkuc3RhdHVzICYmIGUubm93KCkgLSBpLnN0YXJ0IDwgaS53YWl0dGltZSAmJiAobiA9ICEwKQogICAgICAgICAgICAgICAgfSksIGUuZWFjaChpW29dLmxvYWRxdWV1ZSwgZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgICAgICEwID09PSBpLnN0YXRpYyAmJiAoImxvYWRlZCIgIT0gaS5wcm9ncmVzcyAmJiAiZG9uZSIgIT09IGkucHJvZ3Jlc3MgfHwgImZhaWxlZCIgPT09IGkucHJvZ3Jlc3MpICYmICgiZmFpbGVkIiAhPSBpLnByb2dyZXNzIHx8IGkucmVwb3J0ZWQgPyAhaS5lcnJvciAmJiBlLm5vdygpIC0gaS5zdGFydHRvbG9hZCA8IDVlMyA/IG4gPSAhMCA6IGkucmVwb3J0ZWQgfHwgKGkucmVwb3J0ZWQgPSBfKGkuc3JjLCBpLmVycm9yKSkgOiBpLnJlcG9ydGVkID0gXyhpLnNyYywgaS5lcnJvcikpCiAgICAgICAgICAgICAgICB9KSwgbiA/IHRwR1MuZ3NhcC5kZWxheWVkQ2FsbCguMDIsIGkud2FpdEZvckN1cnJlbnRJbWFnZXMsIFtyLCBvLCBzXSkgOiBzICE9PSB0ICYmIHRwR1MuZ3NhcC5kZWxheWVkQ2FsbCgxZS00LCBzKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB1cGRhdGVWaXNpYmxlQXJlYTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciBhIGluIGlbZV0udmlld1BvcnQudmlzaWJsZV9hcmVhID0gaS5yZXZUb1Jlc3AoaVtlXS52aWV3UG9ydC52aXNpYmxlX2FyZWEsIGlbZV0ucmxlLCAiMHB4IiksIGlbZV0udmlld1BvcnQudmFUeXBlID0gbmV3IEFycmF5KDQpLCBpW2VdLnZpZXdQb3J0LnZpc2libGVfYXJlYSkgaVtlXS52aWV3UG9ydC52aXNpYmxlX2FyZWEuaGFzT3duUHJvcGVydHkoYSkgJiYgKGkuaXNOdW1lcmljKGlbZV0udmlld1BvcnQudmlzaWJsZV9hcmVhW2FdKSAmJiAoaVtlXS52aWV3UG9ydC52aXNpYmxlX2FyZWFbYV0gKz0gIiUiKSwgaVtlXS52aWV3UG9ydC52aXNpYmxlX2FyZWFbYV0gIT09IHQgJiYgKGlbZV0udmlld1BvcnQudmFUeXBlW2FdID0gaVtlXS52aWV3UG9ydC52aXNpYmxlX2FyZWFbYV0uaW5kZXhPZigiJSIpID49IDAgPyAiJSIgOiAicHgiKSwgaVtlXS52aWV3UG9ydC52aXNpYmxlX2FyZWFbYV0gPSBwYXJzZUludChpW2VdLnZpZXdQb3J0LnZpc2libGVfYXJlYVthXSwgMCksIGlbZV0udmlld1BvcnQudmlzaWJsZV9hcmVhW2FdID0gIiUiID09IGlbZV0udmlld1BvcnQudmFUeXBlW2FdID8gaVtlXS52aWV3UG9ydC52aXNpYmxlX2FyZWFbYV0gLyAxMDAgOiBpW2VdLnZpZXdQb3J0LnZpc2libGVfYXJlYVthXSkKICAgICAgICB9LAogICAgICAgIG9ic2VydmVGb250czogZnVuY3Rpb24oZSwgYSwgcikgewogICAgICAgICAgICByID0gciA9PT0gdCA/IDAgOiByLCBpLmZvbnRzID09PSB0ICYmIChpLmZvbnRzID0ge30sIGkubW9ub1dpZHRoID0gZCgibW9ub3NwYWNlIiksIGkuc2Fuc1dpZHRoID0gZCgic2Fucy1zZXJpZiIpLCBpLnNlcmlmV2lkdGggPSBkKCJzZXJpZiIpKSwgcisrOwogICAgICAgICAgICB2YXIgbyA9IGkuZm9udHNbZV07CiAgICAgICAgICAgICEwICE9PSBpLmZvbnRzW2VdICYmIChpLmZvbnRzW2VdID0gaS5tb25vV2lkdGggIT09IGQoZSArICIsbW9ub3NwYWNlIikgfHwgaS5zYW5zV2lkdGggIT09IGQoZSArICIsc2Fucy1zZXJpZiIpIHx8IGkuc2VyaWZXaWR0aCAhPT0gZChlICsgIixzZXJpZiIpKSwgMTAwID09PSByIHx8ICghMSA9PT0gbyB8fCBvID09PSB0KSAmJiAhMCA9PT0gaS5mb250c1tlXSA/IChkKGUgKyAiLG1vbm9zcGFjZSIsICEwKSwgZChlICsgIixzYW5zLXNlcmlmIiwgITApLCBkKGUgKyAiLHNlcmlmIiwgITApLCBhKCkpIDogc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkub2JzZXJ2ZUZvbnRzKGUsIGEsIHIpCiAgICAgICAgICAgIH0sIDE5KQogICAgICAgIH0sCiAgICAgICAgZ2V0dmVyc2lvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAiU2xpZGVyIFJldm9sdXRpb24gNi40LjkiCiAgICAgICAgfSwKICAgICAgICBjdXJyZW50U2xpZGVJbmRleDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gaVtlXS5wcl9hY3RpdmVfa2V5CiAgICAgICAgfSwKICAgICAgICBpT1NWZXJzaW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICEhKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQaG9uZS9pKSB8fCBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUG9kL2kpIHx8IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQYWQvaSkpICYmIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL09TIDRfXGQgbGlrZSBNYWMgT1MgWC9pKQogICAgICAgIH0sCiAgICAgICAgc2V0SXNJT1M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpLmlzSU9TID0gL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIXdpbmRvdy5NU1N0cmVhbSB8fCAiTWFjSW50ZWwiID09PSBuYXZpZ2F0b3IucGxhdGZvcm0gJiYgdm9pZCAwICE9PSBuYXZpZ2F0b3Iuc3RhbmRhbG9uZQogICAgICAgIH0sCiAgICAgICAgc2V0SXNDaHJvbWU4ODg5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaS5pc0Nocm9tZTg4ODkgPSBpLmlzQ2hyb21lODg4OSA9PT0gdCA/IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQ2hyb21lLzg4IikgPj0gMCB8fCBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkNocm9tZS84OSIpID49IDAgOiBpLmlzQ2hyb21lODg4OQogICAgICAgIH0sCiAgICAgICAgaXNJRTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChpLmlzSUVSZXMgPT09IHQpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gZSgnPGRpdiBzdHlsZT0iZGlzcGxheTpub25lOyIvPicpLmFwcGVuZFRvKGUoImJvZHkiKSk7CiAgICAgICAgICAgICAgICBhLmh0bWwoIlx4M2MhLS1baWYgSUUgOF0+PGE+Jm5ic3A7PC9hPjwhW2VuZGlmXS0tXHgzZSIpLCBpLmlzSUVSZXMgPSBhLmZpbmQoImEiKS5sZW5ndGgsIGEucmVtb3ZlKCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaS5pc0lFUmVzCiAgICAgICAgfSwKICAgICAgICBpc19tb2JpbGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IFsiYW5kcm9pZCIsICJ3ZWJvcyIsICJpcGhvbmUiLCAiaXBhZCIsICJibGFja2JlcnJ5IiwgIkFuZHJvaWQiLCAid2Vib3MiLCAiaVBvZCIsICJpUGhvbmUiLCAiaVBhZCIsICJCbGFja2JlcnJ5IiwgIkJsYWNrQmVycnkiXSwKICAgICAgICAgICAgICAgIGkgPSAhMTsKICAgICAgICAgICAgaWYgKHdpbmRvdy5vcmllbnRhdGlvbiAhPT0gdCkgaSA9ICEwOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKHZhciBhIGluIGUpIGUuaGFzT3duUHJvcGVydHkoYSkgJiYgKGkgPSAhIShpIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuc3BsaXQoZVthXSkubGVuZ3RoID4gMSkgfHwgaSk7CiAgICAgICAgICAgIHJldHVybiBpICYmIGRvY3VtZW50LmJvZHkgJiYgLTEgPT09IGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lLmluZGV4T2YoInJzLUlTTSIpICYmIChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArPSAiIHJzLUlTTSIpLCBpCiAgICAgICAgfSwKICAgICAgICBpc19hbmRyb2lkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBbImFuZHJvaWQiLCAiQW5kcm9pZCJdLAogICAgICAgICAgICAgICAgdCA9ICExOwogICAgICAgICAgICBmb3IgKHZhciBpIGluIGUpIGUuaGFzT3duUHJvcGVydHkoaSkgJiYgKHQgPSAhISh0IHx8IG5hdmlnYXRvci51c2VyQWdlbnQuc3BsaXQoZVtpXSkubGVuZ3RoID4gMSkgfHwgdCk7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSwKICAgICAgICBjYWxsQmFja0hhbmRsaW5nOiBmdW5jdGlvbih0LCBhLCByKSB7CiAgICAgICAgICAgIGlbdF0uY2FsbEJhY2tBcnJheSAmJiBlLmVhY2goaVt0XS5jYWxsQmFja0FycmF5LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB0ICYmIHQuaW5tb2R1bGUgJiYgdC5pbm1vZHVsZSA9PT0gYSAmJiB0LmF0cG9zaXRpb24gJiYgdC5hdHBvc2l0aW9uID09PSByICYmIHQuY2FsbGJhY2sgJiYgdC5jYWxsYmFjay5jYWxsKCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGdldF9icm93c2VyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUsIHQgPSBuYXZpZ2F0b3IudXNlckFnZW50LAogICAgICAgICAgICAgICAgaSA9IHQubWF0Y2goLyhvcGVyYXxjaHJvbWV8c2FmYXJpfGZpcmVmb3h8bXNpZXx0cmlkZW50KD89XC8pKVwvP1xzKihcZCspL2kpIHx8IFtdOwogICAgICAgICAgICByZXR1cm4gL3RyaWRlbnQvaS50ZXN0KGlbMV0pID8gKGUgPSAvXGJydlsgOl0rKFxkKykvZy5leGVjKHQpIHx8IFtdLCAiSUUiKSA6ICJDaHJvbWUiID09PSBpWzFdICYmIG51bGwgIT0gKGUgPSB0Lm1hdGNoKC9cYihPUFJ8RWRnZSlcLyhcZCspLykpID8gZVsxXS5yZXBsYWNlKCJPUFIiLCAiT3BlcmEiKSA6IChpID0gaVsyXSA/IFtpWzFdLCBpWzJdXSA6IFtuYXZpZ2F0b3IuYXBwTmFtZSwgbmF2aWdhdG9yLmFwcFZlcnNpb24sICItPyJdLCBudWxsICE9IChlID0gdC5tYXRjaCgvdmVyc2lvblwvKFxkKykvaSkpICYmIGkuc3BsaWNlKDEsIDEsIGVbMV0pLCBpWzBdKQogICAgICAgIH0sCiAgICAgICAgZ2V0X2Jyb3dzZXJfdmVyc2lvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlLCB0ID0gbmF2aWdhdG9yLmFwcE5hbWUsCiAgICAgICAgICAgICAgICBpID0gbmF2aWdhdG9yLnVzZXJBZ2VudCwKICAgICAgICAgICAgICAgIGEgPSBpLm1hdGNoKC8oZWRnZXxvcGVyYXxjaHJvbWV8c2FmYXJpfGZpcmVmb3h8bXNpZSlcLz9ccyooXC4/XGQrKFwuXGQrKSopL2kpOwogICAgICAgICAgICByZXR1cm4gYSAmJiBudWxsICE9IChlID0gaS5tYXRjaCgvdmVyc2lvblwvKFtcLlxkXSspL2kpKSAmJiAoYVsyXSA9IGVbMV0pLCAoYSA9IGEgPyBbYVsxXSwgYVsyXV0gOiBbdCwgbmF2aWdhdG9yLmFwcFZlcnNpb24sICItPyJdKVsxXQogICAgICAgIH0sCiAgICAgICAgaXNGYWNlQm9vazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBpLmlzRmFjZUJvb2tBcHAgPT0gdCAmJiAoaS5pc0ZhY2VCb29rQXBwID0gbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCBuYXZpZ2F0b3IudmVuZG9yIHx8IHdpbmRvdy5vcGVyYSwgaS5pc0ZhY2VCb29rQXBwID0gaS5pc0ZhY2VCb29rQXBwLmluZGV4T2YoIkZCQU4iKSA+IC0xIHx8IGkuaXNGYWNlQm9va0FwcC5pbmRleE9mKCJGQkFWIikgPiAtMSksIGkuaXNGYWNlQm9va0FwcAogICAgICAgIH0sCiAgICAgICAgaXNGaXJlZm94OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBpW2VdLmlzRmlyZWZveCA9IGlbZV0uaXNGaXJlZm94ID09PSB0ID8gIkZpcmVmb3giID09PSBpLmdldF9icm93c2VyKCkgOiBpW2VdLmlzRmlyZWZveCwgaVtlXS5pc0ZpcmVmb3gKICAgICAgICB9LAogICAgICAgIGlzU2FmYXJpMTE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gInNhZmFyaSIgPT09IGkudHJpbShpLmdldF9icm93c2VyKCkudG9Mb3dlckNhc2UoKSkgJiYgcGFyc2VGbG9hdChpLmdldF9icm93c2VyX3ZlcnNpb24oKSkgPj0gMTEKICAgICAgICB9LAogICAgICAgIGlzV2Via2l0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSAvKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CiAgICAgICAgICAgIHJldHVybiBlICYmIGVbMV0gJiYgIndlYmtpdCIgPT09IGVbMV0KICAgICAgICB9LAogICAgICAgIGlzSUUxMTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBpLklFMTEgPSBpLklFMTEgPT09IHQgPyAhIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1RyaWRlbnQuKnJ2XDoxMVwuLykgOiBpLklFMTEsIGkuSUUxMQogICAgICAgIH0sCiAgICAgICAgZGVlcExpbms6IGZ1bmN0aW9uKGUsIGEpIHsKICAgICAgICAgICAgaWYgKGEgIT09IHQpIHsKICAgICAgICAgICAgICAgIHZhciByID0gcGFyc2VJbnQoYS50b1N0cmluZygpLnJlcGxhY2UoL15zbGlkZS8sICIiKS5yZXBsYWNlKCItIiwgIiIpLCAxMCk7CiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocikpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiBpW2VdLnNsaWRlcykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlbZV0uc2xpZGVzLmhhc093blByb3BlcnR5KG8pICYmIGkuZ0EoaVtlXS5zbGlkZXNbb10sICJkZWVwbGluayIpID09PSBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gcGFyc2VJbnQoaS5nQShpW2VdLnNsaWRlc1tvXSwgIm9yaWdpbmFsaW5kZXgiKSwgMTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHIpIHx8IHIgPCAxIHx8IHIgPiBpW2VdLnJlYWxzbGlkZWFtb3VudCA/IHZvaWQgMCA6IHIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZ2V0SG9yaXpvbnRhbE9mZnNldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgaSA9IGwoZSwgIi5vdXRlci1sZWZ0IiksCiAgICAgICAgICAgICAgICBhID0gbChlLCAiLm91dGVyLXJpZ2h0Iik7CiAgICAgICAgICAgIHJldHVybiAibGVmdCIgPT0gdCA/IGkgOiAicmlnaHQiID09IHQgPyBhIDogImFsbCIgPT0gdCA/IHsKICAgICAgICAgICAgICAgIGxlZnQ6IGksCiAgICAgICAgICAgICAgICByaWdodDogYSwKICAgICAgICAgICAgICAgIGJvdGg6IGkgKyBhLAogICAgICAgICAgICAgICAgaW51c2U6IGkgKyBhICE9IDAKICAgICAgICAgICAgfSA6IGkgKyBhCiAgICAgICAgfSwKICAgICAgICBnZXRDb21pbmdTbGlkZTogZnVuY3Rpb24oZSwgYSkgewogICAgICAgICAgICB2YXIgciA9IGlbZV0ucHJfbmV4dF9rZXkgIT09IHQgPyBpW2VdLnByX25leHRfa2V5IDogaVtlXS5wcl9wcm9jZXNzaW5nX2tleSAhPT0gdCA/IGlbZV0ucHJfcHJvY2Vzc2luZ19rZXkgOiBpW2VdLnByX2FjdGl2ZV9rZXksCiAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgaWYgKG8gPSAwLCBpW2VdLnByX2FjdGl2ZV9zbGlkZSAhPT0gdCAmJiAidHJ1ZSIgPT0gaS5nQShpW2VdLnByX2FjdGl2ZV9zbGlkZVswXSwgIm5vdF9pbl9uYXYiKSAmJiAociA9IGlbZV0ucHJfbGFzdHNob3duX2tleSksIGEgIT09IHQgJiYgaS5pc051bWVyaWMoYSkgfHwgYSAhPT0gdCAmJiBhLm1hdGNoKC90by9nKSkgbyA9IDEgPT09IGEgfHwgLTEgPT09IGEgPyBwYXJzZUludChyLCAwKSArIGEgPCAwID8gaVtlXS5zbGlkZWFtb3VudCAtIDEgOiBwYXJzZUludChyLCAwKSArIGEgPj0gaVtlXS5zbGlkZWFtb3VudCA/IDAgOiBwYXJzZUludChyLCAwKSArIGEgOiAoYSA9IGkuaXNOdW1lcmljKGEpID8gYSA6IHBhcnNlSW50KGEuc3BsaXQoInRvIilbMV0sIDApKSA8IDAgPyAwIDogYSA+IGlbZV0uc2xpZGVhbW91bnQgLSAxID8gaVtlXS5zbGlkZWFtb3VudCAtIDEgOiBhOwogICAgICAgICAgICBlbHNlIGlmIChhKQogICAgICAgICAgICAgICAgZm9yICh2YXIgcyBpbiBpW2VdLnNsaWRlcykgaVtlXS5zbGlkZXMuaGFzT3duUHJvcGVydHkocykgJiYgKG8gPSBpW2VdLnNsaWRlcyAmJiBpW2VdLnNsaWRlc1tzXSAmJiBpLmdBKGlbZV0uc2xpZGVzW3NdLCAia2V5IikgPT09IGEgPyBzIDogbyk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBuaW5kZXg6IG8sCiAgICAgICAgICAgICAgICBhaW5kZXg6IHIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgY2FsbGluZ05ld1NsaWRlOiBmdW5jdGlvbihlLCBhLCByKSB7CiAgICAgICAgICAgIHZhciBvID0gaS5nZXRDb21pbmdTbGlkZShlLCBhKTsKICAgICAgICAgICAgaVtlXS5wcl9uZXh0X2tleSA9IG8ubmluZGV4LCBpW2VdLnNkaXIgPSBpW2VdLnByX25leHRfa2V5IDwgaVtlXS5wcl9hY3RpdmVfa2V5ID8gMSA6IDAsIHIgJiYgaVtlXS5jYXJvdXNlbCAhPT0gdCAmJiAoaVtlXS5jYXJvdXNlbC5mb2N1c2VkID0gaVtlXS5wcl9uZXh0X2tleSksIGlbZV0uY3ROYXZFbGVtZW50ID8gaVtlXS5jdE5hdkVsZW1lbnQgPSAhMSA6IGlbZV0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLm5leHRzbGlkZS53YWl0aW5nIiksIChpW2VdLnN0YXJ0ZWQgJiYgby5haW5kZXggPT09IGlbZV0ucHJfbmV4dF9rZXkgJiYgby5haW5kZXggPT09IGlbZV0ucHJfbGFzdHNob3duX2tleSB8fCBpW2VdLnByX25leHRfa2V5ICE9PSBvLmFpbmRleCAmJiAtMSAhPSBpW2VdLnByX25leHRfa2V5ICYmIGlbZV0ucHJfbGFzdHNob3duX2tleSAhPT0gdCkgJiYgayhlLCByKQogICAgICAgIH0sCiAgICAgICAgZ2V0TG9hZE9iajogZnVuY3Rpb24oZSwgYSkgewogICAgICAgICAgICB2YXIgciA9IGlbZV0ubG9hZHF1ZXVlICE9PSB0ICYmIGlbZV0ubG9hZHF1ZXVlLmZpbHRlcihmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5zcmMgPT09IGEKICAgICAgICAgICAgfSlbMF07CiAgICAgICAgICAgIHJldHVybiByID09PSB0ID8gewogICAgICAgICAgICAgICAgc3JjOiBhCiAgICAgICAgICAgIH0gOiByCiAgICAgICAgfSwKICAgICAgICBnZXRSZXNwb25zaXZlTGV2ZWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSA5OTk5LAogICAgICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICAgICByID0gMCwKICAgICAgICAgICAgICAgIG8gPSAwOwogICAgICAgICAgICBpZiAoaVtlXS5yZXNwb25zaXZlTGV2ZWxzICYmIGlbZV0ucmVzcG9uc2l2ZUxldmVscy5sZW5ndGgpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBzIGluIGlbZV0ucmVzcG9uc2l2ZUxldmVscykgaVtlXS5yZXNwb25zaXZlTGV2ZWxzLmhhc093blByb3BlcnR5KHMpICYmIChpLndpbldBbGwgPCBpW2VdLnJlc3BvbnNpdmVMZXZlbHNbc10gJiYgKDAgPT0gYSB8fCBhID4gcGFyc2VJbnQoaVtlXS5yZXNwb25zaXZlTGV2ZWxzW3NdKSkgJiYgKHQgPSBwYXJzZUludChpW2VdLnJlc3BvbnNpdmVMZXZlbHNbc10pLCBvID0gcGFyc2VJbnQocyksIGEgPSBwYXJzZUludChpW2VdLnJlc3BvbnNpdmVMZXZlbHNbc10pKSwgaS53aW5XQWxsID4gaVtlXS5yZXNwb25zaXZlTGV2ZWxzW3NdICYmIGEgPCBpW2VdLnJlc3BvbnNpdmVMZXZlbHNbc10gJiYgKGEgPSBwYXJzZUludChpW2VdLnJlc3BvbnNpdmVMZXZlbHNbc10pLCByID0gcGFyc2VJbnQocykpKTsKICAgICAgICAgICAgcmV0dXJuIGEgPCB0ID8gciA6IG8KICAgICAgICB9LAogICAgICAgIGdldFNpemVNdWx0cGlsaWNhdG9yOiBmdW5jdGlvbihlLCB0LCBhKSB7CiAgICAgICAgICAgIHZhciByID0gewogICAgICAgICAgICAgICAgaDogMCwKICAgICAgICAgICAgICAgIHc6IDAKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIGlbZV0uanVzdGlmeUNhcm91c2VsID8gci5oID0gci53ID0gMSA6IChyLncgPSBhLndpZHRoIC8gaVtlXS5ncmlkd2lkdGhbaVtlXS5sZXZlbF0sIHIuaCA9IGEuaGVpZ2h0IC8gaVtlXS5ncmlkaGVpZ2h0W2lbZV0ubGV2ZWxdLCByLncgPSBpc05hTihyLncpID8gMSA6IHIudywgci5oID0gaXNOYU4oci5oKSA/IDEgOiByLmgsIDEgPT0gaVtlXS5lbmFibGVVcHNjYWxpbmcgPyByLmggPSByLncgOiAoci5oID4gci53ID8gci5oID0gci53IDogci53ID0gci5oLCAoci5oID4gMSB8fCByLncgPiAxKSAmJiAoci53ID0gMSwgci5oID0gMSkpKSwgcgogICAgICAgIH0sCiAgICAgICAgdXBkYXRlRGltczogZnVuY3Rpb24oZSwgYSkgewogICAgICAgICAgICB2YXIgciA9IGlbZV0ucHJfcHJvY2Vzc2luZ19rZXkgfHwgaVtlXS5wcl9hY3RpdmVfa2V5IHx8IDAsCiAgICAgICAgICAgICAgICBvID0gaVtlXS5wcl9hY3RpdmVfa2V5IHx8IDAsCiAgICAgICAgICAgICAgICBzID0gaVtlXS5tb2RhbCAhPT0gdCAmJiBpW2VdLm1vZGFsLnVzZUFzTW9kYWwsCiAgICAgICAgICAgICAgICBuID0gcyA/IGkud2luV0FsbCA6IGkud2luVywKICAgICAgICAgICAgICAgIGQgPSAhMTsKICAgICAgICAgICAgaWYgKGlbZV0ubGFzdFNjcm9sbEJhcldpZHRoID0gaS5zY3JvbGxCYXJXaWR0aCwgaVtlXS5yZWRyYXcgPSBpW2VdLnJlZHJhdyA9PT0gdCA/IHt9IDogaVtlXS5yZWRyYXcsIGlbZV0ubW9kdWxlID0gaVtlXS5tb2R1bGUgPT09IHQgPyB7fSA6IGlbZV0ubW9kdWxlLCBpW2VdLmNhbnYgPSBpW2VdLmNhbnYgPT09IHQgPyB7fSA6IGlbZV0uY2FudiwgaVtlXS5jb250ZW50ID0gaVtlXS5jb250ZW50ID09PSB0ID8ge30gOiBpW2VdLmNvbnRlbnQsIGlbZV0uZHJhd1VwZGF0ZXMgPSB7CiAgICAgICAgICAgICAgICAgICAgYzoge30sCiAgICAgICAgICAgICAgICAgICAgY3Bhcjoge30sCiAgICAgICAgICAgICAgICAgICAgY2Fudjoge30KICAgICAgICAgICAgICAgIH0sICJjYXJvdXNlbCIgPT0gaVtlXS5zbGlkZXJUeXBlID8gaVtlXS5tb2R1bGUubWFyZ2lucyA9IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IHBhcnNlSW50KGlbZV0uY2Fyb3VzZWwucGFkZGluZ190b3AgfHwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBwYXJzZUludChpW2VdLmNhcm91c2VsLnBhZGRpbmdfYm90dG9tIHx8IDAsIDApCiAgICAgICAgICAgICAgICB9IDogaVtlXS5tb2R1bGUubWFyZ2lucyA9IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwCiAgICAgICAgICAgICAgICB9LCBpW2VdLm1vZHVsZS5wYWRkaW5ncyA9PT0gdCAmJiAoaVtlXS5tb2R1bGUucGFkZGluZ3MgPSB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiBwYXJzZUludChpW2VdLmNwYXIuY3NzKCJwYWRkaW5nVG9wIiksIDApIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBwYXJzZUludChpW2VdLmNwYXIuY3NzKCJwYWRkaW5nQm90dG9tIiksIDApIHx8IDAKICAgICAgICAgICAgICAgIH0pLCBpW2VdLmJsb2NrU3BhY2luZyAhPT0gdCA/IChpW2VdLmJsb2NrID0gewogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogaVtlXS5ibG9ja1NwYWNpbmcuYm90dG9tICE9PSB0ID8gcGFyc2VJbnQoaVtlXS5ibG9ja1NwYWNpbmcuYm90dG9tW2lbZV0ubGV2ZWxdLCAwKSA6IDAsCiAgICAgICAgICAgICAgICAgICAgdG9wOiBpW2VdLmJsb2NrU3BhY2luZy50b3AgIT09IHQgPyBwYXJzZUludChpW2VdLmJsb2NrU3BhY2luZy50b3BbaVtlXS5sZXZlbF0sIDApIDogMCwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBpW2VdLmJsb2NrU3BhY2luZy5sZWZ0ICE9PSB0ID8gcGFyc2VJbnQoaVtlXS5ibG9ja1NwYWNpbmcubGVmdFtpW2VdLmxldmVsXSwgMCkgOiAwLAogICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBpW2VdLmJsb2NrU3BhY2luZy5yaWdodCAhPT0gdCA/IHBhcnNlSW50KGlbZV0uYmxvY2tTcGFjaW5nLnJpZ2h0W2lbZV0ubGV2ZWxdLCAwKSA6IDAKICAgICAgICAgICAgICAgIH0sIGlbZV0uYmxvY2suaG9yID0gaVtlXS5ibG9jay5sZWZ0ICsgaVtlXS5ibG9jay5yaWdodCwgaVtlXS5ibG9jay52ZXIgPSBpW2VdLmJsb2NrLnRvcCArIGlbZV0uYmxvY2suYm90dG9tKSA6IGlbZV0uYmxvY2sgPT09IHQgJiYgKGlbZV0uYmxvY2sgPSB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsCiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDAsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwLAogICAgICAgICAgICAgICAgICAgIGhvcjogMCwKICAgICAgICAgICAgICAgICAgICB2ZXI6IDAKICAgICAgICAgICAgICAgIH0pLCBpW2VdLmJsb2NrU3BhY2luZyAhPT0gdCkgewogICAgICAgICAgICAgICAgdmFyIGwgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBpW2VdLmJsb2NrLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogaVtlXS5ibG9jay5yaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBpW2VdLmJsb2NrLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBpW2VdLmJsb2NrLmJvdHRvbQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYyA9IEpTT04uc3RyaW5naWZ5KGwpOwogICAgICAgICAgICAgICAgbCAhPT0gaVtlXS5lbXB0eU9iamVjdCAmJiBjICE9PSBpW2VdLmNhY2hlcy5zZXRzaXplQkxPQ0tPQkogJiYgKHRwR1MuZ3NhcC5zZXQoaVtlXS5ibG9ja1NwYWNpbmcuYmxvY2ssIGwpLCBpW2VdLmNhY2hlcy5zZXRzaXplQkxPQ0tPQkogPSBjLCBkID0gITApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlbZV0ubGV2ZWxGb3JjZWQgPSBpW2VdLmxldmVsID0gaS5nZXRSZXNwb25zaXZlTGV2ZWwoZSksIGlbZV0ucm93SGVpZ2h0cyA9IGkuZ2V0Um93SGVpZ2h0cyhlKSwgaVtlXS5hcmF0aW8gPSBpW2VdLmdyaWRoZWlnaHRbaVtlXS5sZXZlbF0gLyBpW2VdLmdyaWR3aWR0aFtpW2VdLmxldmVsXSwgaVtlXS5tb2R1bGUud2lkdGggPSAiYXV0byIgPT09IGlbZV0uc2xpZGVyTGF5b3V0IHx8IDEgPT0gaVtlXS5kaXNhYmxlRm9yY2VGdWxsV2lkdGggPyBpW2VdLmNwYXIud2lkdGgoKSA6IG4gLSBpW2VdLmJsb2NrLmhvciwgaVtlXS5vdXROYXZEaW1zID0gaS5nZXRPdXRlck5hdkRpbWVuc2lvbihlKSwgaVtlXS5jYW52LndpZHRoID0gaVtlXS5tb2R1bGUud2lkdGggLSBpW2VdLm91dE5hdkRpbXMuaG9yaXpvbnRhbCAtIChzID8gaS5zY3JvbGxCYXJXaWR0aCA6IDApLCBzICYmICJhdXRvIiA9PT0gaVtlXS5zbGlkZXJMYXlvdXQgJiYgKGlbZV0uY2Fudi53aWR0aCA9IE1hdGgubWluKGlbZV0uZ3JpZHdpZHRoW2lbZV0ubGV2ZWxdLCBuKSksICJmdWxsc2NyZWVuIiA9PT0gaVtlXS5zbGlkZXJMYXlvdXQgfHwgaVtlXS5pbmZ1bGxzY3JlZW5tb2RlKSB7CiAgICAgICAgICAgICAgICB2YXIgcCA9IGkuZ2V0V2luSChlKSAtIGkuZ2V0RnVsbHNjcmVlbk9mZnNldHMoZSk7CiAgICAgICAgICAgICAgICBpW2VdLmNhbnYuaGVpZ2h0ID0gTWF0aC5tYXgoaVtlXS5yb3dIZWlnaHRzLmN1ciwgTWF0aC5tYXgocCAtIGlbZV0ub3V0TmF2RGltcy52ZXJ0aWNhbCwgaVtlXS5taW5IZWlnaHQpKSwgbyAhPT0gciAmJiAoaVtlXS5jdXJyZW50U2xpZGVIZWlnaHQgPSBNYXRoLm1heChpW2VdLnJvd0hlaWdodHMubGFzdCwgTWF0aC5tYXgocCAtIGlbZV0ub3V0TmF2RGltcy52ZXJ0aWNhbCwgaVtlXS5taW5IZWlnaHQpKSwgaVtlXS5yZWRyYXcubWF4SGVpZ2h0T2xkID0gITApLCBpW2VdLmRyYXdVcGRhdGVzLmMuaGVpZ2h0ID0gIjEwMCUiCiAgICAgICAgICAgIH0gZWxzZSBpW2VdLmNhbnYuaGVpZ2h0ID0gaVtlXS5rZWVwQlBIZWlnaHQgPyBpW2VdLmdyaWRoZWlnaHRbaVtlXS5sZXZlbF0gOiBNYXRoLnJvdW5kKGlbZV0uY2Fudi53aWR0aCAqIGlbZV0uYXJhdGlvKSwgaVtlXS5jYW52LmhlaWdodCA9IGlbZV0uYXV0b0hlaWdodCA/IGlbZV0uY2Fudi5oZWlnaHQgOiBNYXRoLm1pbihpW2VdLmNhbnYuaGVpZ2h0LCBpW2VdLmdyaWRoZWlnaHRbaVtlXS5sZXZlbF0pLCBpW2VdLmNhbnYuaGVpZ2h0ID0gTWF0aC5tYXgoTWF0aC5tYXgoaVtlXS5yb3dIZWlnaHRzLmN1ciwgaVtlXS5jYW52LmhlaWdodCksIGlbZV0ubWluSGVpZ2h0KSwgaVtlXS5kcmF3VXBkYXRlcy5jLmhlaWdodCA9IGlbZV0uY2Fudi5oZWlnaHQ7CiAgICAgICAgICAgIGlbZV0ubW9kdWxlLmhlaWdodCA9IGlbZV0uY2Fudi5oZWlnaHQsICJmdWxsd2lkdGgiICE9IGlbZV0uc2xpZGVyTGF5b3V0IHx8IGlbZV0uZml4ZWRPblRvcCB8fCAoaVtlXS5kcmF3VXBkYXRlcy5jLm1heEhlaWdodCA9IDAgIT0gaVtlXS5tYXhIZWlnaHQgPyBNYXRoLm1pbihpW2VdLmNhbnYuaGVpZ2h0LCBpW2VdLm1heEhlaWdodCkgOiBpW2VdLmNhbnYuaGVpZ2h0KSwgaVtlXS5DTSA9IGkuZ2V0U2l6ZU11bHRwaWxpY2F0b3IoZSwgaVtlXS5lbmFibGVVcHNjYWxpbmcsIHsKICAgICAgICAgICAgICAgIHdpZHRoOiBpW2VdLmNhbnYud2lkdGgsCiAgICAgICAgICAgICAgICBoZWlnaHQ6IGlbZV0uY2Fudi5oZWlnaHQKICAgICAgICAgICAgfSksIGlbZV0uY29udGVudC53aWR0aCA9IGlbZV0uZ3JpZHdpZHRoW2lbZV0ubGV2ZWxdICogaVtlXS5DTS53LCBpW2VdLmNvbnRlbnQuaGVpZ2h0ID0gTWF0aC5yb3VuZChNYXRoLm1heChpW2VdLnJvd0hlaWdodHMuY3VyLCBpW2VdLmdyaWRoZWlnaHRbaVtlXS5sZXZlbF0gKiBpW2VdLkNNLmgpKTsKICAgICAgICAgICAgdmFyIGcgPSBpW2VdLm1vZHVsZS5tYXJnaW5zLnRvcCArIGlbZV0ubW9kdWxlLm1hcmdpbnMuYm90dG9tICsgKCJmdWxsc2NyZWVuIiA9PT0gaVtlXS5zbGlkZXJMYXlvdXQgPyAwIDogaVtlXS5vdXROYXZEaW1zLnZlcnRpY2FsKSArIGlbZV0uY2Fudi5oZWlnaHQgKyBpW2VdLm1vZHVsZS5wYWRkaW5ncy50b3AgKyBpW2VdLm1vZHVsZS5wYWRkaW5ncy5ib3R0b207CiAgICAgICAgICAgIGlbZV0uZHJhd1VwZGF0ZXMuY3Bhci5oZWlnaHQgPSBnLCBpW2VdLmRyYXdVcGRhdGVzLmNwYXIud2lkdGggPSAiYXV0byIgPT09IGlbZV0uc2xpZGVyTGF5b3V0ID8gImF1dG8iIDogaVtlXS5tb2R1bGUud2lkdGgsICJhdXRvIiA9PT0gaVtlXS5zbGlkZXJMYXlvdXQgfHwgImZ1bGxzY3JlZW4iID09PSBpW2VdLnNsaWRlckxheW91dCAmJiAhMCA9PT0gaVtlXS5kaXNhYmxlRm9yY2VGdWxsV2lkdGggfHwgaVtlXS5yc0Z1bGxXaWR0aFdyYXAgPT09IHQgPyAiZnVsbHNjcmVlbiIgPT0gaVtlXS5zbGlkZXJMYXlvdXQgJiYgMSA9PSBpW2VdLmRpc2FibGVGb3JjZUZ1bGxXaWR0aCAmJiAoaVtlXS5kcmF3VXBkYXRlcy5jcGFyLmxlZnQgPSAwKSA6IGlbZV0uZHJhd1VwZGF0ZXMuY3Bhci5sZWZ0ID0gMCAtIE1hdGguY2VpbChpW2VdLnJzRnVsbFdpZHRoV3JhcC5vZmZzZXQoKS5sZWZ0IC0gKGlbZV0ub3V0TmF2RGltcy5sZWZ0ICsgaVtlXS5ibG9jay5sZWZ0KSksIGlbZV0uc2J0aW1lbGluZS5zZXQgJiYgaVtlXS5zYnRpbWVsaW5lLmZpeGVkID8gKGlbZV0uc2J0aW1lbGluZS5leHRlbmRlZCA9PT0gdCAmJiBpLnVwZGF0ZUZpeGVkU2Nyb2xsVGltZXMoZSksIGlbZV0uZm9yY2VySGVpZ2h0ID0gMiAqIGcgKyBpW2VdLnNidGltZWxpbmUuZXh0ZW5kZWQpIDogaVtlXS5mb3JjZXJIZWlnaHQgPSBnLCBpW2VdLmZvcmNlckhlaWdodCAhPT0gaVtlXS5jYWNoZXMuc2V0c2l6ZUZvcmNlckhlaWdodCAmJiBpW2VdLmZvcmNlciAhPT0gdCAmJiAoaVtlXS5jYWNoZXMuc2V0c2l6ZUZvcmNlckhlaWdodCA9IGlbZV0uZm9yY2VySGVpZ2h0LCBkID0gITAsIGlbZV0ucmVkcmF3LmZvcmNlciA9ICEwKSwgaVtlXS5kcmF3VXBkYXRlcy5jLndpZHRoID0gaVtlXS5jYW52LndpZHRoLCAiYXV0byIgPT09IGlbZV0uc2xpZGVyTGF5b3V0ICYmIChpW2VdLmRyYXdVcGRhdGVzLmMubGVmdCA9IGlbZV0ub3V0TmF2RGltcy5sZWZ0KSwgaVtlXS5kcmF3VXBkYXRlcy5jICE9PSBpW2VdLmVtcHR5T2JqZWN0ICYmIEpTT04uc3RyaW5naWZ5KGlbZV0uZHJhd1VwZGF0ZXMuYykgIT09IGlbZV0uY2FjaGVzLnNldHNpemVDT0JKICYmIChpW2VdLmNhY2hlcy5zZXRzaXplQ09CSiA9IEpTT04uc3RyaW5naWZ5KGlbZV0uZHJhd1VwZGF0ZXMuYyksIGQgPSAhMCwgaVtlXS5yZWRyYXcuYyA9ICEwKSwgaVtlXS5kcmF3VXBkYXRlcy5jcGFyICE9PSBpW2VdLmVtcHR5T2JqZWN0ICYmIEpTT04uc3RyaW5naWZ5KGlbZV0uZHJhd1VwZGF0ZXMuY3BhcikgIT09IGlbZV0uY2FjaGVzLnNldHNpemVDUEFST0JKICYmIChpW2VdLmNhY2hlcy5zZXRzaXplQ1BBUk9CSiA9IEpTT04uc3RyaW5naWZ5KGlbZV0uZHJhd1VwZGF0ZXMuY3BhciksIGQgPSAhMCwgaVtlXS5yZWRyYXcuY3BhciA9ICEwKSwgcyAmJiAiYXV0byIgPT09IGlbZV0uc2xpZGVyTGF5b3V0ICYmIGlbZV0uY2FjaGVzLmNhbldpZHRoICE9PSBpW2VdLmNhbnYud2lkdGggJiYgKGlbZV0uY2FjaGVzLmNhbldpZHRoID0gaVtlXS5jYW52LndpZHRoLCBkID0gITAsIGlbZV0ucmVkcmF3Lm1vZGFsY2FudmFzID0gITApLCBpW2VdLnNsYXllcnMgJiYgaVtlXS5zbGF5ZXJzLmxlbmd0aCA+IDAgJiYgaVtlXS5vdXROYXZEaW1zLmxlZnQgIT09IGlbZV0uY2FjaGVzLm91dE5hdkRpbXNMZWZ0ICYmICJmdWxsd2lkdGgiICE9IGlbZV0uc2xpZGVyTGF5b3V0ICYmICJmdWxsc2NyZWVuIiAhPSBpW2VdLnNsaWRlckxheW91dCAmJiAoaVtlXS5jYWNoZXMub3V0TmF2RGltc0xlZnQgPSBpW2VdLm91dE5hdkRpbXMubGVmdCwgaVtlXS5yZWRyYXcuc2xheWVycyA9ICEwKSwgcyAmJiBpW2VdLm1vZGFsLmNhbGlicmF0aW9uICE9PSB0ICYmICJtaWRkbGUiID09PSBpW2VdLm1vZGFsLnZlcnRpY2FsICYmIChpW2VdLm1vZGFsLmNhbGlicmF0aW9uLnRvcCA9IGkuZ2V0V2luSChlKSA8IGcgPyAiMCUiIDogIjUwJSIsIGlbZV0ubW9kYWwuY2FsaWJyYXRpb24ueSA9IGkuZ2V0V2luSChlKSA8IGcgPyAiMHB4IiA6ICItNTAlIiwgImZ1bGx3aWR0aCIgPT09IGlbZV0uc2xpZGVyTGF5b3V0ICYmIChkID0gITAsIGlbZV0ucmVkcmF3Lm1vZHVsZXdyYXAgPSAhMCkpLCBpW2VdLmdyaWRPZmZzZXRXaWR0aCA9IChpW2VdLm1vZHVsZS53aWR0aCAtIGlbZV0uZ3JpZHdpZHRoW2lbZV0ubGV2ZWxdKSAvIDIsIGlbZV0uZ3JpZE9mZnNldEhlaWdodCA9IChpW2VdLm1vZHVsZS5oZWlnaHQgLSBpW2VdLmNvbnRlbnQuaGVpZ2h0KSAvIDIsIGlbZV0uY2FjaGVzLmN1clJvd3NIZWlnaHQgPSBpW2VdLmN1cnJlbnRSb3dzSGVpZ2h0ID0gaVtlXS5yb3dIZWlnaHRzLmN1ciwgaVtlXS5jYWNoZXMubW9kdWxlV2lkdGggPSBpW2VdLndpZHRoID0gaVtlXS5tb2R1bGUud2lkdGgsIGlbZV0uY2FjaGVzLm1vZHVsZUhlaWdodCA9IGlbZV0uaGVpZ2h0ID0gaVtlXS5tb2R1bGUuaGVpZ2h0LCBpW2VdLmNhY2hlcy5jYW5XaWR0aCA9IGlbZV0uY29udyA9IGlbZV0uY2Fudi53aWR0aCwgaVtlXS5jYWNoZXMuY2FuSGVpZ2h0ID0gaVtlXS5jb25oID0gaVtlXS5jYW52LmhlaWdodCwgaVtlXS5idyA9IGlbZV0uQ00udywgaVtlXS5iaCA9IGlbZV0uQ00uaCwgaVtlXS5jYWNoZXMub3V0TmF2RGltc0xlZnQgPSBpW2VdLm91dE5hdkRpbXMubGVmdCwgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbZV0ucmVkcmF3LmZvcmNlciAmJiB0cEdTLmdzYXAuc2V0KGlbZV0uZm9yY2VyLCB7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpW2VdLmZvcmNlckhlaWdodAogICAgICAgICAgICAgICAgfSksIGlbZV0ucmVkcmF3LmMgJiYgdHBHUy5nc2FwLnNldChpW2VdLmMsIGlbZV0uZHJhd1VwZGF0ZXMuYyksIGlbZV0ucmVkcmF3LmNwYXIgJiYgdHBHUy5nc2FwLnNldChpW2VdLmNwYXIsIGlbZV0uZHJhd1VwZGF0ZXMuY3BhciksIGlbZV0ucmVkcmF3Lm1vZGFsY2FudmFzICYmIHRwR1MuZ3NhcC5zZXQoW2lbZV0ubW9kYWwuYywgaVtlXS5jYW52YXNdLCB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGlbZV0uY2Fudi53aWR0aAogICAgICAgICAgICAgICAgfSksIGlbZV0ucmVkcmF3Lm1heEhlaWdodE9sZCAmJiAoaVtlXS5zbGlkZXNbb10uc3R5bGUubWF4SGVpZ2h0ID0gaVtlXS5jdXJyZW50U2xpZGVIZWlnaHQgIT09IGlbZV0uY2Fudi5oZWlnaHQgPyBpW2VdLmN1cnJlbnRTbGlkZUhlaWdodCArICJweCIgOiAibm9uZSIpLCBpW2VdLnJlZHJhdy5zbGF5ZXJzICYmIHRwR1MuZ3NhcC5zZXQoaVtlXS5zbGF5ZXJzLCB7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogaVtlXS5vdXROYXZEaW1zLmxlZnQKICAgICAgICAgICAgICAgIH0pLCBpW2VdLnJlZHJhdy5tb2R1bGV3cmFwICYmIHRwR1MuZ3NhcC5zZXQoaVtlXS5tb2RhbC5jLmZpbmQoInJzLW1vZHVsZS13cmFwIiksIGlbZV0ubW9kYWwuY2FsaWJyYXRpb24pLCAhMCAhPT0gaVtlXS5uYXZpZ2F0aW9uLmluaXRpYWxpc2VkICYmICJwcmVwYXJlZCIgPT09IGEgJiYgKCJoZXJvIiAhPT0gaVtlXS5zbGlkZXJUeXBlICYmIGkuY3JlYXRlTmF2aWdhdGlvbiAmJiBpW2VdLm5hdmlnYXRpb24udXNlICYmICEwICE9PSBpW2VdLm5hdmlnYXRpb24uY3JlYXRlTmF2aWdhdGlvbkRvbmUgJiYgaS5jcmVhdGVOYXZpZ2F0aW9uKGUpLCBpLnJlc2l6ZVRodW1ic1RhYnMgJiYgaS5yZXNpemVUaHVtYnNUYWJzICYmIGlbZV0ubmF2aWdhdGlvbi51c2UgJiYgaS5yZXNpemVUaHVtYnNUYWJzKGUpKSwgaVtlXS5yZWJ1aWxkUHJvZ3Jlc3NCYXIgJiYgTyhlKSwgaVtlXS5yZWRyYXcgPSB7fQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIHUgPSBpW2VdLmludmlld3BvcnQgJiYgKGlbZV0uaGVpZ2h0SW5MYXllcnMgIT09IHQgJiYgaVtlXS5tb2R1bGUuaGVpZ2h0ICE9PSBpW2VdLmhlaWdodEluTGF5ZXJzIHx8IGlbZV0ud2lkdGhJbkxheWVycyAhPT0gdCAmJiBpW2VdLm1vZHVsZS53aWR0aCAhPT0gaVtlXS53aWR0aEluTGF5ZXJzKTsKICAgICAgICAgICAgcmV0dXJuICJpZ25vcmUiICE9PSBhICYmIHUgJiYgKGlbZV0uaGVpZ2h0SW5MYXllcnMgPSB0LCBpW2VdLndpZHRoSW5MYXllcnMgPSB0LCAiY2Fyb3VzZWwiICE9PSBpW2VdLnNsaWRlclR5cGUgJiYgKGlbZV0ucHJfbmV4dF9rZXkgIT09IHQgPyBpLmFuaW1hdGVUaGVMYXllcnMoewogICAgICAgICAgICAgICAgc2xpZGU6IGlbZV0ucHJfbmV4dF9rZXksCiAgICAgICAgICAgICAgICBpZDogZSwKICAgICAgICAgICAgICAgIG1vZGU6ICJyZWJ1aWxkIiwKICAgICAgICAgICAgICAgIGNhbGxlcjogInN3YXBTbGlkZVByb2dyZXNzXzEiCiAgICAgICAgICAgIH0pIDogaVtlXS5wcl9wcm9jZXNzaW5nX2tleSAhPT0gdCA/IGkuYW5pbWF0ZVRoZUxheWVycyh7CiAgICAgICAgICAgICAgICBzbGlkZTogaVtlXS5wcl9wcm9jZXNzaW5nX2tleSwKICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgbW9kZTogInJlYnVpbGQiLAogICAgICAgICAgICAgICAgY2FsbGVyOiAic3dhcFNsaWRlUHJvZ3Jlc3NfMiIKICAgICAgICAgICAgfSkgOiBpW2VdLnByX2FjdGl2ZV9rZXkgIT09IHQgJiYgaS5hbmltYXRlVGhlTGF5ZXJzKHsKICAgICAgICAgICAgICAgIHNsaWRlOiBpW2VdLnByX2FjdGl2ZV9rZXksCiAgICAgICAgICAgICAgICBpZDogZSwKICAgICAgICAgICAgICAgIG1vZGU6ICJyZWJ1aWxkIiwKICAgICAgICAgICAgICAgIGNhbGxlcjogInN3YXBTbGlkZVByb2dyZXNzXzMiCiAgICAgICAgICAgIH0pKSwgZCA9ICEwKSwgZCAmJiAiaWdub3JlIiAhPT0gYSAmJiBpLnJlcXVlc3RMYXllclVwZGF0ZXMoZSwgImVudGVyc3RhZ2UiKSwgaVtlXS5tb2R1bGUuaGVpZ2h0ICE9PSBpW2VdLm1vZHVsZS5sYXN0SGVpZ2h0ICYmIChpW2VdLm1vZHVsZS5sYXN0SGVpZ2h0ID0gaVtlXS5tb2R1bGUuaGVpZ2h0LCB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0ICE9PSBzY3JlZW4uaGVpZ2h0ICYmIE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0ICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pICE9PSBzY3JlZW4uaGVpZ2h0ICYmIG0oZSwgdCwgITEpCiAgICAgICAgICAgIH0pKSwgdHBHUy5nc2FwLmRlbGF5ZWRDYWxsKC4xLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbZV0ubGFzdFNjcm9sbEJhcldpZHRoICE9PSBpLnNjcm9sbEJhcldpZHRoID8gKGkudXBkYXRlRGltcyhlLCAiaWdub3JlIiksIG0oZSkpIDogaS5pc01vZGFsT3BlbiB8fCBpLnNjcm9sbEJhcldpZHRoID09PSB3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBpLnJBZlNjcm9sbGJhciA9PT0gdCAmJiAoaS5yQWZTY3JvbGxiYXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaS5yQWZTY3JvbGxiYXIgPSB0LCBpLmdldFdpbmRvd0RpbWVuc2lvbihlLCAhMSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSwgZAogICAgICAgIH0sCiAgICAgICAgZ2V0U2xpZGVJbmRleDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgYSA9ICExOwogICAgICAgICAgICBmb3IgKHZhciByIGluIGlbZV0uc2xpZGVzKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlbZV0uc2xpZGVzLmhhc093blByb3BlcnR5KHIpIHx8ICExICE9PSBhKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGEgPSBpLmdBKGlbZV0uc2xpZGVzW3JdLCAia2V5IikgPT09IHQgPyByIDogYQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMSA9PT0gYSA/IDAgOiBhCiAgICAgICAgfSwKICAgICAgICBsb2FkVXBjb21pbmdDb250ZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICgic21hcnQiID09IGlbZV0ubGF6eVR5cGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gW10sCiAgICAgICAgICAgICAgICAgICAgYSA9IHBhcnNlSW50KGkuZ2V0U2xpZGVJbmRleChlLCBpLmdBKGlbZV0ucHJfbmV4dF9zbGlkZVswXSwgImtleSIpKSwgMCksCiAgICAgICAgICAgICAgICAgICAgciA9IGEgLSAxIDwgMCA/IGlbZV0ucmVhbHNsaWRlYW1vdW50IC0gMSA6IGEgLSAxLAogICAgICAgICAgICAgICAgICAgIG8gPSBhICsgMSA9PSBpW2VdLnJlYWxzbGlkZWFtb3VudCA/IDAgOiBhICsgMTsKICAgICAgICAgICAgICAgIHIgIT09IGEgJiYgdC5wdXNoKGlbZV0uc2xpZGVzW3JdKSwgbyAhPT0gYSAmJiB0LnB1c2goaVtlXS5zbGlkZXNbb10pLCB0Lmxlbmd0aCA+IDAgJiYgKGkubG9hZEltYWdlcyh0LCBlLCAyKSwgaS53YWl0Rm9yQ3VycmVudEltYWdlcyh0LCBlLCBmdW5jdGlvbigpIHt9KSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZ2V0RnVsbHNjcmVlbk9mZnNldHM6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICBpZiAoaVthXS5mdWxsU2NyZWVuT2Zmc2V0Q29udGFpbmVyICE9IHQpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gKCIiICsgaVthXS5mdWxsU2NyZWVuT2Zmc2V0Q29udGFpbmVyKS5zcGxpdCgiLCIpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgcyBpbiBvKSBvLmhhc093blByb3BlcnR5KHMpICYmIChyICs9IGUob1tzXSkub3V0ZXJIZWlnaHQoITApIHx8IDApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGlbYV0uZnVsbFNjcmVlbk9mZnNldCAhPSB0ICYmICghaS5pc051bWVyaWMoaVthXS5mdWxsU2NyZWVuT2Zmc2V0KSAmJiBpW2FdLmZ1bGxTY3JlZW5PZmZzZXQuc3BsaXQoIiUiKS5sZW5ndGggPiAxID8gciArPSBpLmdldFdpbkgoYSkgKiBwYXJzZUludChpW2FdLmZ1bGxTY3JlZW5PZmZzZXQsIDApIC8gMTAwIDogaS5pc051bWVyaWMocGFyc2VJbnQoaVthXS5mdWxsU2NyZWVuT2Zmc2V0LCAwKSkgJiYgKHIgKz0gcGFyc2VJbnQoaVthXS5mdWxsU2NyZWVuT2Zmc2V0LCAwKSB8fCAwKSksIGlbYV0uZnVsbFNjcmVlbk9mZnNldFJlc3VsdCA9IHIsIHIKICAgICAgICB9LAogICAgICAgIHVuVG9nZ2xlU3RhdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGUgIT09IHQpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZVtpXSkuY2xhc3NMaXN0LnJlbW92ZSgicnMtdGMtYWN0aXZlIikKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgfSwKICAgICAgICB0b2dnbGVTdGF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZSAhPT0gdCkKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZS5sZW5ndGg7IGkrKykgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlW2ldKS5jbGFzc0xpc3QuYWRkKCJycy10Yy1hY3RpdmUiKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICB9LAogICAgICAgIHN3YXB0b2dnbGVTdGF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZSAhPSB0ICYmIGUubGVuZ3RoID4gMCkKICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgZS5sZW5ndGg7IGErKykgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZVthXSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkuZ0EociwgInRvZ2dsZXRpbWVzdGFtcCIpICE9PSB0ICYmIChuZXcgRGF0ZSkuZ2V0VGltZSgpIC0gaS5nQShyLCAidG9nZ2xldGltZXN0YW1wIikgPCAyNTApIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpLnNBKHIsICJ0b2dnbGV0aW1lc3RhbXAiLCAobmV3IERhdGUpLmdldFRpbWUoKSksIG51bGwgIT09IHIgJiYgKHIuY2xhc3NOYW1lLmluZGV4T2YoInJzLXRjLWFjdGl2ZSIpID49IDAgPyByLmNsYXNzTGlzdC5yZW1vdmUoInJzLXRjLWFjdGl2ZSIpIDogci5jbGFzc0xpc3QuYWRkKCJycy10Yy1hY3RpdmUiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGxhc3RUb2dnbGVTdGF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgaWYgKGUgIT09IHQpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gMDsgYSA8IGUubGVuZ3RoOyBhKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVbYV0pOwogICAgICAgICAgICAgICAgICAgIGkgPSAhMCA9PT0gaSB8fCBudWxsICE9PSByICYmIHIuY2xhc3NOYW1lLmluZGV4T2YoInJzLXRjLWFjdGl2ZSIpID49IDAgfHwgaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaQogICAgICAgIH0sCiAgICAgICAgcmV2Q2hlY2tJRFM6IGZ1bmN0aW9uKGEsIHIpIHsKICAgICAgICAgICAgaWYgKGkuZ0EociwgImlkY2hlY2siKSA9PT0gdCkgewogICAgICAgICAgICAgICAgdmFyIG8gPSByLmlkLAogICAgICAgICAgICAgICAgICAgIHMgPSBlLmluQXJyYXkoci5pZCwgd2luZG93LlJTQU5ZSUQpLAogICAgICAgICAgICAgICAgICAgIG4gPSAtMTsgLSAxICE9PSBzICYmIChuID0gZS5pbkFycmF5KHIuaWQsIGlbYV0uYW55aWQpLCB3aW5kb3cuUlNBTllJRF9zbGlkZXJJRFtzXSA9PT0gYSAmJiAtMSA9PT0gbiB8fCAoci5pZCA9IHIuaWQgKyAiXyIgKyBNYXRoLnJvdW5kKDk5OTkgKiBNYXRoLnJhbmRvbSgpKSwgY29uc29sZS5sb2coIldhcm5pbmcgLSBJRDoiICsgbyArICIgZXhpc3RzIGFscmVhZHkuIE5ldyBSdW50aW1lIElEOiIgKyByLmlkKSwgcyA9IG4gPSAtMSkpLCAtMSA9PT0gbiAmJiBpW2FdLmFueWlkLnB1c2goci5pZCksIC0xID09PSBzICYmICh3aW5kb3cuUlNBTllJRC5wdXNoKHIuaWQpLCB3aW5kb3cuUlNBTllJRF9zbGlkZXJJRC5wdXNoKGEpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBpLnNBKHIsICJpZGNoZWNrIiwgITApLCByLmlkCiAgICAgICAgfSwKICAgICAgICBidWlsZFNwaW5uZXI6IGZ1bmN0aW9uKGksIGEsIHIsIG8pIHsKICAgICAgICAgICAgdmFyIHM7CiAgICAgICAgICAgIGlmICgib2ZmIiAhPT0gYSkgewogICAgICAgICAgICAgICAgbyA9IG8gPT09IHQgPyAiIiA6IG8sIHIgPSByID09PSB0ID8gIiNmZmZmZmYiIDogcjsKICAgICAgICAgICAgICAgIHZhciBuID0gcGFyc2VJbnQoYS5yZXBsYWNlKCJzcGlubmVyIiwgIiIpLCAxMCk7CiAgICAgICAgICAgICAgICBpZiAoaXNOYU4obikgfHwgbiA8IDYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9ICdzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonICsgciArICciJywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8gPT09IHQgfHwgMyAhPT0gbiAmJiA0ICE9IG4gPyAiIiA6IGQ7CiAgICAgICAgICAgICAgICAgICAgcyA9IGUoIjxycy1sb2FkZXIgIiArIChvID09PSB0IHx8IDEgIT09IG4gJiYgMiAhPSBuID8gIiIgOiBkKSArICcgY2xhc3M9IicgKyBhICsgIiAiICsgbyArICciPjxkaXYgJyArIGwgKyAnIGNsYXNzPSJkb3QxIj48L2Rpdj48ZGl2ICcgKyBsICsgJyBjbGFzcz0iZG90MiI+PC9kaXY+PGRpdiAnICsgbCArICcgY2xhc3M9ImJvdW5jZTEiPjwvZGl2PjxkaXYgJyArIGwgKyAnIGNsYXNzPSJib3VuY2UyIj48L2Rpdj48ZGl2ICcgKyBsICsgJyBjbGFzcz0iYm91bmNlMyI+PC9kaXY+PC9ycy1sb2FkZXI+JykKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMsIHAgPSAnPGRpdiBjbGFzcz0icnMtc3Bpbm5lci1pbm5lciInOwogICAgICAgICAgICAgICAgICAgIGlmICg3ID09PSBuKSAtIDEgIT09IHIuc2VhcmNoKCIjIikgPyAoYyA9IHIucmVwbGFjZSgiIyIsICIiKSwgYyA9ICJyZ2JhKCIgKyBwYXJzZUludChjLnN1YnN0cmluZygwLCAyKSwgMTYpICsgIiwgIiArIHBhcnNlSW50KGMuc3Vic3RyaW5nKDIsIDQpLCAxNikgKyAiLCAiICsgcGFyc2VJbnQoYy5zdWJzdHJpbmcoNCwgNiksIDE2KSArICIsICIpIDogLTEgIT09IHIuc2VhcmNoKCJyZ2IiKSAmJiAoYyA9IHIuc3Vic3RyaW5nKHIuaW5kZXhPZigiKCIpICsgMSwgci5sYXN0SW5kZXhPZigiKSIpKS5zcGxpdCgiLCIpKS5sZW5ndGggPiAyICYmIChjID0gInJnYmEoIiArIGNbMF0udHJpbSgpICsgIiwgIiArIGNbMV0udHJpbSgpICsgIiwgIiArIGNbMl0udHJpbSgpICsgIiwgIiksIGMgJiYgInN0cmluZyIgPT0gdHlwZW9mIGMgJiYgKHAgKz0gJyBzdHlsZT0iYm9yZGVyLXRvcC1jb2xvcjogJyArIGMgKyAiMC42NSk7IGJvcmRlci1ib3R0b20tY29sb3I6ICIgKyBjICsgIjAuMTUpOyBib3JkZXItbGVmdC1jb2xvcjogIiArIGMgKyAiMC42NSk7IGJvcmRlci1yaWdodC1jb2xvcjogIiArIGMgKyAnMC4xNSkiJyk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSAxMiA9PT0gbiAmJiAocCArPSAnIHN0eWxlPSJiYWNrZ3JvdW5kOicgKyByICsgJyInKTsKICAgICAgICAgICAgICAgICAgICBwICs9ICI+IjsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnID0gWzEwLCAwLCA0LCAyLCA1LCA5LCAwLCA0LCA0LCAyXVtuIC0gNl0sIHUgPSAwOyB1IDwgZzsgdSsrKSB1ID4gMCAmJiAocCArPSAiICIpLCBwICs9ICc8c3BhbiBzdHlsZT0iYmFja2dyb3VuZDonICsgciArICciPjwvc3Bhbj4nOwogICAgICAgICAgICAgICAgICAgIHMgPSBlKCc8cnMtbG9hZGVyIGNsYXNzPSInICsgYSArICIgIiArIG8gKyAnIj4nICsgKHAgKz0gIjwvZGl2PiIpICsgIjwvZGl2PjwvcnMtbG9hZGVyPiIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhZGRTdGF0aWNMYXllclRvOiBmdW5jdGlvbihlLCB0LCBhKSB7CiAgICAgICAgICAgIGlmIChpW2VdLnNsYXllcnMubGVuZ3RoIDwgMikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJycy1zdGF0aWMtbGF5ZXJzIik7CiAgICAgICAgICAgICAgICByLmNsYXNzTmFtZSA9ICJycy1zdGwtIiArIHQsIHIuYXBwZW5kQ2hpbGQoYVswXSksIGlbZV0uY1swXS5hcHBlbmRDaGlsZChyKSwgaVtlXS5zbGF5ZXJzLnB1c2gocikKICAgICAgICAgICAgfSBlbHNlIGlbZV0uc2xheWVyc1sxXS5hcHBlbmRDaGlsZChhWzBdKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIGEgPSBpLmlzX21vYmlsZSgpLAogICAgICAgIHIgPSAoaS5pc19hbmRyb2lkKCksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gaS5pc0lFMTEoKSA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnF1ZXJ5U2VsZWN0b3JBbGwodCkKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwKICAgICAgICBvID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpW2VdLnJlc3BvbnNpdmVMZXZlbHMgPSBpLnJldlRvUmVzcChpW2VdLnJlc3BvbnNpdmVMZXZlbHMsIGlbZV0ucmxlKSwgaVtlXS52aXNpYmlsaXR5TGV2ZWxzID0gaS5yZXZUb1Jlc3AoaVtlXS52aXNpYmlsaXR5TGV2ZWxzLCBpW2VdLnJsZSksIGlbZV0ucmVzcG9uc2l2ZUxldmVsc1swXSA9IDk5OTksIGlbZV0ucmxlID0gaVtlXS5yZXNwb25zaXZlTGV2ZWxzLmxlbmd0aCB8fCAxLCBpW2VdLmdyaWR3aWR0aCA9IGkucmV2VG9SZXNwKGlbZV0uZ3JpZHdpZHRoLCBpW2VdLnJsZSksIGlbZV0uZ3JpZGhlaWdodCA9IGkucmV2VG9SZXNwKGlbZV0uZ3JpZGhlaWdodCwgaVtlXS5ybGUpLCBpW2VdLmVkaXRvcmhlaWdodCAhPT0gdCAmJiAoaVtlXS5lZGl0b3JoZWlnaHQgPSBpLnJldlRvUmVzcChpW2VdLmVkaXRvcmhlaWdodCwgaVtlXS5ybGUpKSwgaS51cGRhdGVEaW1zKGUpCiAgICAgICAgfSwKICAgICAgICBzID0gZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICB2YXIgYSA9IFtdOwogICAgICAgICAgICByZXR1cm4gZS5lYWNoKHQsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGUgIT0gaSAmJiBhLnB1c2godCkKICAgICAgICAgICAgfSksIGEKICAgICAgICB9LAogICAgICAgIG4gPSBmdW5jdGlvbih0LCBhLCByKSB7CiAgICAgICAgICAgIGlbcl0uYy5maW5kKHQpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUodGhpcyk7CiAgICAgICAgICAgICAgICB0LmRhdGEoImtleSIpID09PSBhICYmIHQucmVtb3ZlKCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGQgPSBmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgIGlmIChpWyJyc2ZvbnRfIiArIGVdID09IHQgJiYgKGlbInJzZm9udF8iICsgZV0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIiksIGlbInJzZm9udF8iICsgZV0uaW5uZXJIVE1MID0gQXJyYXkoMTAwKS5qb2luKCJ3aSIpLCBpWyJyc2ZvbnRfIiArIGVdLnN0eWxlLmNzc1RleHQgPSBbInBvc2l0aW9uOmFic29sdXRlIiwgIndpZHRoOmF1dG8iLCAiZm9udC1zaXplOjEyOHB4IiwgImxlZnQ6LTk5OTk5cHgiXS5qb2luKCIgIWltcG9ydGFudDsiKSwgaVsicnNmb250XyIgKyBlXS5zdHlsZS5mb250RmFtaWx5ID0gZSwgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpWyJyc2ZvbnRfIiArIGVdKSksIGEgPT09IHQpIHJldHVybiBpWyJyc2ZvbnRfIiArIGVdLmNsaWVudFdpZHRoOwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlbInJzZm9udF8iICsgZV0pCiAgICAgICAgfSwKICAgICAgICBsID0gZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICB2YXIgYSA9IDA7CiAgICAgICAgICAgIHJldHVybiB0LmZpbmQoaSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZSh0aGlzKTsKICAgICAgICAgICAgICAgICF0Lmhhc0NsYXNzKCJ0cC1mb3JjZW5vdHZpc2libGUiKSAmJiBhIDwgdC5vdXRlcldpZHRoKCkgJiYgKGEgPSB0Lm91dGVyV2lkdGgoKSkKICAgICAgICAgICAgfSksIGEKICAgICAgICB9LAogICAgICAgIGMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIGlmIChyID09PSB0IHx8IGlbcl0gPT09IHQgfHwgaVtyXS5jID09PSB0KSByZXR1cm4gITE7CiAgICAgICAgICAgIGlmIChpW3JdLmNwYXIgIT09IHQgJiYgaVtyXS5jcGFyLmRhdGEoImFpbWciKSAhPSB0ICYmICgiZW5hYmxlZCIgPT0gaVtyXS5jcGFyLmRhdGEoImFpZTgiKSAmJiBpLmlzSUUoOCkgfHwgImVuYWJsZWQiID09IGlbcl0uY3Bhci5kYXRhKCJhbW9iaWxlIikgJiYgYSkpIGlbcl0uYy5odG1sKCc8aW1nIGNsYXNzPSJ0cC1zbGlkZXItYWx0ZXJuYXRpdmUtaW1hZ2UiIHNyYz0iJyArIGlbcl0uY3Bhci5kYXRhKCJhaW1nIikgKyAnIj4nKTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuX3JzX2ZpcmVmb3gxMyA9ICExLCB3aW5kb3cuX3JzX2ZpcmVmb3ggPSBpLmlzRmlyZWZveCgpLCB3aW5kb3cuX3JzX2llID0gd2luZG93Ll9yc19pZSA9PT0gdCA/ICFlLnN1cHBvcnQub3BhY2l0eSA6IHdpbmRvdy5fcnNfaWUsIHdpbmRvdy5fcnNfaWU5ID0gd2luZG93Ll9yc19pZTkgPT09IHQgPyA5ID09IGRvY3VtZW50LmRvY3VtZW50TW9kZSA6IHdpbmRvdy5fcnNfaWU5OwogICAgICAgICAgICAgICAgdmFyIG8gPSBlLmZuLmpxdWVyeS5zcGxpdCgiLiIpLAogICAgICAgICAgICAgICAgICAgIHMgPSBwYXJzZUZsb2F0KG9bMF0pLAogICAgICAgICAgICAgICAgICAgIG4gPSBwYXJzZUZsb2F0KG9bMV0pOwogICAgICAgICAgICAgICAgMSA9PSBzICYmIG4gPCA3ICYmIGlbcl0uYy5odG1sKCc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzo0MHB4IDBweDsgZm9udC1zaXplOjIwcHg7IGNvbG9yOiM5OTIyMjI7Ij4gVGhlIEN1cnJlbnQgVmVyc2lvbiBvZiBqUXVlcnk6JyArIG8gKyAiIDxicj5QbGVhc2UgdXBkYXRlIHlvdXIgalF1ZXJ5IFZlcnNpb24gdG8gbWluLiAxLjcgaW4gQ2FzZSB5b3Ugd2lzaCB0byB1c2UgdGhlIFJldm9sdXRpb24gU2xpZGVyIFBsdWdpbjwvZGl2PiIpLCBzID4gMSAmJiAod2luZG93Ll9yc19pZSA9ICExKSwgaVtyXS5yZWFsc2xpZGVhbW91bnQgPSBpW3JdLnNsaWRlYW1vdW50ID0gMDsKICAgICAgICAgICAgICAgIHZhciBkID0gaS5nZXRCeVRhZyhpW3JdLmNhbnZhc1swXSwgIlJTLVNMSURFIiksCiAgICAgICAgICAgICAgICAgICAgbCA9IFtdOwogICAgICAgICAgICAgICAgZm9yICh2YXIgYyBpbiBpW3JdLm5vdEluTmF2ID0gW10sIGlbcl0uc2xpZGVzID0gW10sIGQpIGQuaGFzT3duUHJvcGVydHkoYykgJiYgKCJvbiIgPT0gaS5nQShkW2NdLCAiaHNvbSIpICYmIGEgPyBsLnB1c2goZFtjXSkgOiAoaS5nQShkW2NdLCAiaW52aXNpYmxlIikgfHwgMSA9PSBpLmdBKGRbY10sICJpbnZpc2libGUiKSA/IGlbcl0ubm90SW5OYXYucHVzaChkW2NdKSA6IChpW3JdLnNsaWRlcy5wdXNoKGRbY10pLCBpW3JdLnNsaWRlYW1vdW50KyspLCBpW3JdLnJlYWxzbGlkZWFtb3VudCsrLCBpLnNBKGRbY10sICJvcmlnaW5hbGluZGV4IiwgaVtyXS5yZWFsc2xpZGVhbW91bnQpLCBpLnNBKGRbY10sICJvcmlnaW5kZXgiLCBpW3JdLnJlYWxzbGlkZWFtb3VudCAtIDEpKSk7CiAgICAgICAgICAgICAgICBmb3IgKGMgaW4gbCkgbC5oYXNPd25Qcm9wZXJ0eShjKSAmJiBsW2NdLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgZm9yIChjIGluIGlbcl0ubm90SW5OYXYpIGlbcl0ubm90SW5OYXYuaGFzT3duUHJvcGVydHkoYykgJiYgKGkuc0EoaVtyXS5ub3RJbk5hdltjXSwgIm5vdF9pbl9uYXYiLCAhMCksIGlbcl0uY2FudmFzWzBdLmFwcGVuZENoaWxkKGlbcl0ubm90SW5OYXZbY10pKTsKICAgICAgICAgICAgICAgIGlmIChpW3JdLmNhbnZhcy5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAidmlzaWJsZSIKICAgICAgICAgICAgICAgICAgICB9KSwgaVtyXS5zbGF5ZXJzID0gaVtyXS5jLmZpbmQoInJzLXN0YXRpYy1sYXllcnMiKSwgaVtyXS5zbGF5ZXJzLmxlbmd0aCA+IDAgJiYgaS5zQShpW3JdLnNsYXllcnNbMF0sICJrZXkiLCAic3RhdGljbGF5ZXJzIiksICEwID09PSBpW3JdLm1vZGFsLnVzZUFzTW9kYWwgJiYgKGlbcl0uY3Bhci53cmFwKCc8cnMtbW9kYWwgaWQ9IicgKyBpW3JdLmNbMF0uaWQgKyAnX21vZGFsIj48L3JzLW1vZGFsPicpLCBpW3JdLm1vZGFsLmMgPSBlKGkuY2xvc2VzdE5vZGUoaVtyXS5jcGFyWzBdLCAiUlMtTU9EQUwiKSksIGlbcl0ubW9kYWwuYy5hcHBlbmRUbyhlKCJib2R5IikpLCBpW3JdLm1vZGFsICE9PSB0ICYmIGlbcl0ubW9kYWwuYWxpYXMgIT09IHQgJiYgaS5yZXZNb2RhbChyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJpbml0IgogICAgICAgICAgICAgICAgICAgIH0pKSwgMSA9PSBpW3JdLndhaXRGb3JJbml0IHx8IDEgPT0gaVtyXS5tb2RhbC51c2VBc01vZGFsKSByZXR1cm4gaS5SU190b0luaXQgIT09IHQgJiYgKGkuUlNfdG9Jbml0W3JdID0gITApLCBpW3JdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS53YWl0aW5nZm9yaW5pdCIpLCB2b2lkKGlbcl0ud2FpdGluZ0ZvckluaXQgPSAhMCk7CiAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHUocikKICAgICAgICAgICAgICAgIH0pLCBpW3JdLmluaXRFbmRlZCA9ICEwCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZSgiYm9keSIpLmRhdGEoInJzLWZ1bGxTY3JlZW5Nb2RlIiwgIWUoImJvZHkiKS5kYXRhKCJycy1mdWxsU2NyZWVuTW9kZSIpKSwgZSgiYm9keSIpLmRhdGEoInJzLWZ1bGxTY3JlZW5Nb2RlIikgJiYgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkud2luZG93LnRyaWdnZXIoInJlc2l6ZSIpCiAgICAgICAgICAgIH0sIDIwMCkKICAgICAgICB9LAogICAgICAgIGcgPSBmdW5jdGlvbihlLCBhLCByKSB7CiAgICAgICAgICAgIHJldHVybiBpLmdBKGUsICJsYXp5bG9hZCIpICE9PSB0ID8gaS5nQShlLCAibGF6eWxvYWQiKSA6IGlbcl0ubGF6eWxvYWRkYXRhICE9PSB0ICYmIGlbcl0ubGF6eWxvYWRkYXRhLmxlbmd0aCA+IDAgJiYgaS5nQShlLCBpW3JdLmxhenlsb2FkZGF0YSkgIT09IHQgPyBpLmdBKGUsIGlbcl0ubGF6eWxvYWRkYXRhKSA6IGkuZ0EoZSwgImxhenktc3JjIikgIT09IHQgPyBpLmdBKGUsICJsYXp5LXNyYyIpIDogaS5nQShlLCAibGF6eS13cGZjLW9yaWdpbmFsLXNyYyIpICE9PSB0ID8gaS5nQShlLCAibGF6eS13cGZjLW9yaWdpbmFsLXNyYyIpIDogaS5nQShlLCAibGF6eSIpICE9PSB0ID8gaS5nQShlLCAibGF6eSIpIDogYQogICAgICAgIH0sCiAgICAgICAgdSA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgaWYgKGlbcl0gIT09IHQpIHsKICAgICAgICAgICAgICAgIGlmIChpW3JdLnNsaWRlcmlzcnVubmluZyA9ICEwLCAhMCAhPT0gaVtyXS5ub0RldGFjaCAmJiBpW3JdLmMuZGV0YWNoKCksIGlbcl0uc2h1ZmZsZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSBpW3JdLmNhbnZhcy5maW5kKCJycy1zbGlkZTpmaXJzdC1jaGlsZCIpLCBzID0gaS5nQShvWzBdLCAiZmlyc3RhbmltIiksIG4gPSAwOyBuIDwgaVtyXS5zbGlkZWFtb3VudDsgbisrKSBpW3JdLmNhbnZhcy5maW5kKCJycy1zbGlkZTplcSgiICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogaVtyXS5zbGlkZWFtb3VudCkgKyAiKSIpLnByZXBlbmRUbyhpW3JdLmNhbnZhcyk7CiAgICAgICAgICAgICAgICAgICAgaS5zQShpW3JdLmNhbnZhcy5maW5kKCJycy1zbGlkZTpmaXJzdC1jaGlsZCIpWzBdLCAiZmlyc3RhbmltIiwgcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlbcl0uc2xpZGVzID0gaS5nZXRCeVRhZyhpW3JdLmNhbnZhc1swXSwgIlJTLVNMSURFIiksIGlbcl0udGh1bWJzID0gbmV3IEFycmF5KGlbcl0uc2xpZGVzLmxlbmd0aCksIGlbcl0uc2xvdHMgPSAxLCBpW3JdLmZpcnN0c3RhcnQgPSAxLCBpW3JdLmxvYWRxdWV1ZSA9IFtdLCBpW3JdLnN5bmNsb2FkID0gMDsKICAgICAgICAgICAgICAgIHZhciBkID0gMCwKICAgICAgICAgICAgICAgICAgICBsID0gImNhcm91c2VsIiA9PT0gaVtyXS5zbGlkZXJUeXBlICYmIGlbcl0uY2Fyb3VzZWwuYm9yZGVyX3JhZGl1cyAhPT0gdCA/IHBhcnNlSW50KGlbcl0uY2Fyb3VzZWwuYm9yZGVyX3JhZGl1cywgMCkgOiAwOwogICAgICAgICAgICAgICAgZm9yICh2YXIgYyBpbiBpW3JdLnNsaWRlcykKICAgICAgICAgICAgICAgICAgICBpZiAoaVtyXS5zbGlkZXMuaGFzT3duUHJvcGVydHkoYykgJiYgImxlbmd0aCIgIT09IGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBpW3JdLnNsaWRlc1tjXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBpLmdldEJ5VGFnKHUsICJJTUciKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5nQSh1LCAia2V5IikgPT09IHQgJiYgaS5zQSh1LCAia2V5IiwgInJzLSIgKyBNYXRoLnJvdW5kKDk5OTk5OSAqIE1hdGgucmFuZG9tKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IEFycmF5KDEyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpLmdBKHUsICJrZXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogaS5nQSh1LCAidGh1bWIiKSAhPT0gdCA/IGkuZ0EodSwgInRodW1iIikgOiBnKGgsIGggIT09IHQgPyBoLnNyYyA6IHQsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGkuZ0EodSwgInRpdGxlIikgPT09IHQgJiYgaS5zQSh1LCAidGl0bGUiLCAiIiksIGkuZ0EodSwgImRlc2NyaXB0aW9uIikgPT09IHQgJiYgaS5zQSh1LCAiZGVzY3JpcHRpb24iLCAiIiksIHYucGFyYW1zWzBdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogUmVnRXhwKCJcXHtcXHt0aXRsZVxcfVxcfSIsICJnIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogaS5nQSh1LCAidGl0bGUiKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB2LnBhcmFtc1sxXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IFJlZ0V4cCgiXFx7XFx7ZGVzY3JpcHRpb25cXH1cXH0iLCAiZyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGkuZ0EodSwgImRlc2NyaXB0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSA9IDE7IHkgPD0gMTA7IHkrKykgaS5nQSh1LCAicCIgKyB5KSAhPT0gdCA/IHYucGFyYW1zW3kgKyAxXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IFJlZ0V4cCgiXFx7XFx7cGFyYW0iICsgeSArICJcXH1cXH0iLCAiZyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGkuZ0EodSwgInAiICsgeSkKICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHYucGFyYW1zW3kgKyAxXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IFJlZ0V4cCgiXFx7XFx7cGFyYW0iICsgeSArICJcXH1cXH0iLCAiZyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86ICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpW3JdLnRodW1ic1tkXSA9IGUuZXh0ZW5kKHt9LCAhMCwgdiksIGwgPiAwICYmIHRwR1MuZ3NhcC5zZXQodSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogbCArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmdBKHUsICJsaW5rIikgIT0gdCB8fCBpLmdBKHUsICJsaW5rdG9zbGlkZSIpICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGkuZ0EodSwgImxpbmsiKSAhPT0gdCA/IGkuZ0EodSwgImxpbmsiKSA6ICJzbGlkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9ICJzbGlkZSIgIT0gYiA/ICJubyIgOiBpLmdBKHUsICJsaW5rdG9zbGlkZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBpLmdBKHUsICJzZW96Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyAhPSB0ICYmICJubyIgIT0gdyAmJiAibmV4dCIgIT0gdyAmJiAicHJldiIgIT0gdykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBTIGluIGlbcl0uc2xpZGVzKSBpW3JdLnNsaWRlcy5oYXNPd25Qcm9wZXJ0eShTKSAmJiBwYXJzZUludChpLmdBKGlbcl0uc2xpZGVzW1NdLCAib3JpZ2luZGV4IiksIDApICsgMSA9PSBpLmdBKHUsICJsaW5rdG9zbGlkZSIpICYmICh3ID0gaS5nQShpW3JdLnNsaWRlc1tTXSwgImtleSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUodSkucHJlcGVuZCgnPHJzLWxheWVyIGNsYXNzPSJycy1sYXllciBzbGlkZWxpbmsiIGlkPSJyc19zbGlkZWxpbmtfJyArIE1hdGgucm91bmQoMWU1ICogTWF0aC5yYW5kb20oKSkgKyAnIiBkYXRhLXppbmRleD0iJyArICgiYmFjayIgPT09IF8gPyAwIDogImZyb250IiA9PT0gXyA/IDk1IDogXyAhPT0gdCA/IHBhcnNlSW50KF8sIDApIDogMTAwKSArICciIGRhdGF4eT0ieDpjO3k6YyIgZGF0YS1kaW09Inc6MTAwJTtoOjEwMCUiIGRhdGEtYmFzZWFsaWduPSJzbGlkZSInICsgKCJubyIgPT0gdyA/ICJzbGlkZSIgPT0gYiB8fCBhID8gIiIgOiAiICBkYXRhLWFjdGlvbnM9J286Y2xpY2s7YTpzaW1wbGVsaW5rO3RhcmdldDoiICsgKGkuZ0EodSwgInRhcmdldCIpIHx8ICJfc2VsZiIpICsgIjt1cmw6IiArIGIgKyAiOyciIDogIiAgZGF0YS1hY3Rpb25zPSciICsgKCJzY3JvbGxfdW5kZXIiID09PSB3ID8gIm86Y2xpY2s7YTpzY3JvbGxiZWxvdztvZmZzZXQ6MTAwcHg7IiA6ICJwcmV2IiA9PT0gdyA/ICJvOmNsaWNrO2E6anVtcHRvc2xpZGU7c2xpZGU6cHJldjtkOjAuMjsiIDogIm5leHQiID09PSB3ID8gIm86Y2xpY2s7YTpqdW1wdG9zbGlkZTtzbGlkZTpuZXh0O2Q6MC4yOyIgOiAibzpjbGljazthOmp1bXB0b3NsaWRlO3NsaWRlOiIgKyB3ICsgIjtkOjAuMjsiKSArICInIikgKyAiIGRhdGEtZnJhbWVfMT0nZTpwb3dlcjMuaW5PdXQ7c3Q6MTAwO3NwOjEwMCcgZGF0YS1mcmFtZV85OTk9J2U6cG93ZXIzLmluT3V0O286MDtzdDp3O3NwOjEwMCc+IiArIChhID8gIjxhICIgKyAoInNsaWRlIiAhPSBiID8gKCJfYmxhbmsiID09PSBpLmdBKHUsICJ0YXJnZXQiKSA/ICdyZWw9Im5vb3BlbmVyIiAnIDogIiIpICsgJ3RhcmdldD0iJyArIChpLmdBKHUsICJ0YXJnZXQiKSB8fCAiX3NlbGYiKSArICciIGhyZWY9IicgKyBiICsgJyInIDogIiIpICsgIj48c3Bhbj48L3NwYW4+PC9hPiIgOiAiIikgKyAiPC9ycy1sYXllcj4iKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGQrKwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpW3JdLnNpbXBsaWZ5QWxsICYmIChpLmlzSUUoOCkgfHwgaS5pT1NWZXJzaW9uKCkpICYmIChpW3JdLmMuZmluZCgiLnJzLWxheWVyIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnJlbW92ZUNsYXNzKCJjdXN0b21pbiBjdXN0b21vdXQiKS5hZGRDbGFzcygiZmFkZWluIGZhZGVvdXQiKSwgdC5kYXRhKCJzcGxpdGluIiwgIiIpLCB0LmRhdGEoInNwZWVkIiwgNDAwKQogICAgICAgICAgICAgICAgICAgIH0pLCBpW3JdLmMuZmluZCgicnMtc2xpZGUiKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZGF0YSgidHJhbnNpdGlvbiIsICJmYWRlIiksIHQuZGF0YSgibWFzdGVyc3BlZWQiLCA1MDApLCB0LmRhdGEoInNsb3RhbW91bnQiLCAxKSwgKHQuZmluZCgiLnJldi1zbGlkZWJnIikgfHwgdC5maW5kKCI+aW1nIikuZmlyc3QoKSkuZGF0YSgicGFuem9vbSIsIG51bGwpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB3aW5kb3cuX3JzX2Rlc2t0b3AgPSB3aW5kb3cuX3JzX2Rlc2t0b3AgPT09IHQgPyAhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKGlQaG9uZXxpUG9kfGlQYWR8QW5kcm9pZHxCbGFja0JlcnJ5fEJCMTB8bW9iaXx0YWJsZXR8b3BlcmEgbWluaXxuZXh1cyA3KS9pKSA6IHdpbmRvdy5fcnNfZGVza3RvcCwgaVtyXS5hdXRvSGVpZ2h0ID0gImZ1bGxzY3JlZW4iID09IGlbcl0uc2xpZGVyTGF5b3V0IHx8IGlbcl0uYXV0b0hlaWdodCwgImZ1bGx3aWR0aCIgIT0gaVtyXS5zbGlkZXJMYXlvdXQgfHwgaVtyXS5hdXRvSGVpZ2h0IHx8IGlbcl0uYy5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IGlbcl0uZ3JpZGhlaWdodFtpW3JdLmxldmVsXSArICJweCIKICAgICAgICAgICAgICAgICAgICB9KSwgImF1dG8iID09IGlbcl0uc2xpZGVyTGF5b3V0IHx8IG51bGwgIT09IGkuY2xvc2VzdE5vZGUoaVtyXS5jWzBdLCAiUlMtRlVMTFdJRFRILVdSQVAiKSB8fCAiZnVsbHNjcmVlbiIgPT09IGlbcl0uc2xpZGVyTGF5b3V0ICYmIDEgPT0gaVtyXS5kaXNhYmxlRm9yY2VGdWxsV2lkdGgpIGlbcl0udG9wYyA9IGlbcl0uY3BhcjsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciB4ID0gaVtyXS5jcGFyWzBdLnN0eWxlLm1hcmdpblRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgayA9IGlbcl0uY3BhclswXS5zdHlsZS5tYXJnaW5Cb3R0b207CiAgICAgICAgICAgICAgICAgICAgeCA9IHggPT09IHQgfHwgIiIgPT09IHggPyAiIiA6ICJtYXJnaW4tdG9wOiIgKyB4ICsgIjsiLCBrID0gayA9PT0gdCB8fCAiIiA9PT0gayA/ICIiIDogIm1hcmdpbi1ib3R0b206IiArIGsgKyAiOyIsIGlbcl0ucnNGdWxsV2lkdGhXcmFwID0gaVtyXS50b3BjID0gZSgnPHJzLWZ1bGx3aWR0aC13cmFwIGlkPSInICsgaVtyXS5jWzBdLmlkICsgJ19mb3JjZWZ1bGx3aWR0aCIgc3R5bGU9IicgKyB4ICsgayArICciPjwvcnMtZnVsbHdpZHRoLXdyYXA+JyksIGlbcl0uZm9yY2VyID0gZSgnPHJzLWZ3LWZvcmNlciBzdHlsZT0iaGVpZ2h0OicgKyAoaVtyXS5mb3JjZXJIZWlnaHQgPT09IHQgPyBpW3JdLmNwYXIuaGVpZ2h0KCkgOiBpW3JdLmZvcmNlckhlaWdodCkgKyAncHgiPjwvcnMtZnctZm9yY2VyPicpLCBpW3JdLnRvcGMuYXBwZW5kKGlbcl0uZm9yY2VyKSwgaVtyXS50b3BjLmluc2VydEJlZm9yZShpW3JdLmNwYXIpLCBpW3JdLmNwYXIuZGV0YWNoKCksIGlbcl0uY3Bhci5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6ICIwcHgiLAogICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206ICIwcHgiLAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIgogICAgICAgICAgICAgICAgICAgIH0pLCBpW3JdLmNwYXIucHJlcGVuZFRvKGlbcl0udG9wYykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpW3JdLmZvcmNlT3ZlcmZsb3cgJiYgaVtyXS50b3BjWzBdLmNsYXNzTGlzdC5hZGQoInJzLWZvcmNlb3ZlcmZsb3ciKSwgImNhcm91c2VsIiA9PT0gaVtyXS5zbGlkZXJUeXBlICYmICEwICE9PSBpW3JdLm92ZXJmbG93SGlkZGVuICYmIGlbcl0uYy5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogInZpc2libGUiCiAgICAgICAgICAgICAgICAgICAgfSksIDAgIT09IGlbcl0ubWF4SGVpZ2h0ICYmIHRwR1MuZ3NhcC5zZXQoW2lbcl0uY3BhciwgaVtyXS5jLCBpW3JdLnRvcGNdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogaVtyXS5tYXhIZWlnaHQgKyAicHgiCiAgICAgICAgICAgICAgICAgICAgfSksIGlbcl0uZml4ZWRPblRvcCAmJiB0cEdTLmdzYXAuc2V0KGlbcl0uYmxvY2tTcGFjaW5nICE9PSB0ICYmIGlbcl0uYmxvY2tTcGFjaW5nLmJsb2NrICE9PSB0ID8gaVtyXS5ibG9ja1NwYWNpbmcuYmxvY2sgOiBpW3JdLnRvcGMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJmaXhlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogIjBweCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICIwcHgiLAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogNWUzCiAgICAgICAgICAgICAgICAgICAgfSksIGlbcl0uc2hhZG93ICE9PSB0ICYmIGlbcl0uc2hhZG93ID4gMCAmJiBpW3JdLmNwYXIuYWRkQ2xhc3MoInRwLXNoYWRvdyIgKyBpW3JdLnNoYWRvdykuYXBwZW5kKCc8ZGl2IGNsYXNzPSJ0cC1zaGFkb3djb3ZlciIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6JyArIGlbcl0uY3Bhci5jc3MoImJhY2tncm91bmRDb2xvciIpICsgIjtiYWNrZ3JvdW5kLWltYWdlOiIgKyBpW3JdLmNwYXIuY3NzKCJiYWNrZ3JvdW5kSW1hZ2UiKSArICciPjwvZGl2PicpLCBpLnVwZGF0ZURpbXMociwgInByZXBhcmVkIiksIGkub2JzZXJ2ZVdyYXBzID09PSB0ICYmIChpLm9ic2VydmVXcmFwcyA9IG5ldyBpLndyYXBPYnNlcnZlci5pbml0KGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbShpLCB0LCAhMCkKICAgICAgICAgICAgICAgICAgICB9KSksICFpW3JdLmMuaGFzQ2xhc3MoInJldnNsaWRlci1pbml0aWFsaXNlZCIpKSB7CiAgICAgICAgICAgICAgICAgICAgaVtyXS5jWzBdLmNsYXNzTGlzdC5hZGQoInJldnNsaWRlci1pbml0aWFsaXNlZCIpLCBpW3JdLmNbMF0uaWQgPSBpW3JdLmNbMF0uaWQgPT09IHQgPyAicmV2c2xpZGVyLSIgKyBNYXRoLnJvdW5kKDFlMyAqIE1hdGgucmFuZG9tKCkgKyA1KSA6IGlbcl0uY1swXS5pZCwgaS5yZXZDaGVja0lEUyhyLCBpW3JdLmNbMF0pLCBpW3JdLm9yaWdjZCA9IHBhcnNlSW50KGlbcl0uZHVyYXRpb24sIDApLCBpW3JdLnNjcm9sbGVmZmVjdC5fTCA9IFtdLCBpW3JdLnNiYXMgPSBpW3JdLnNiYXMgPT09IHQgPyB7fSA6IGlbcl0uc2JhcywgaVtyXS5sYXllcnMgPSBpW3JdLmxheWVycyB8fCB7fSwgaVtyXS5zb3J0ZWRMYXllcnMgPSBpW3JdLnNvcnRlZExheWVycyB8fCB7fTsKICAgICAgICAgICAgICAgICAgICB2YXIgTCA9IGlbcl0uY1swXS5xdWVyeVNlbGVjdG9yQWxsKCJycy1sYXllciwgcnMtcm93LCBycy1jb2x1bW4sIHJzLWdyb3VwLCAgcnMtYmd2aWRlbywgLnJzLWxheWVyIik7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgUiBpbiBMKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTC5oYXNPd25Qcm9wZXJ0eShSKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8sIEksIFQgPSBlKExbUl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBULmRhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDLnN0YXJ0Y2xhc3NlcyA9IExbUl0uY2xhc3NOYW1lLCBDLnN0YXJ0Y2xhc3NlcyA9IEMuc3RhcnRjbGFzc2VzID09PSB0IHx8IG51bGwgPT09IEMuc3RhcnRjbGFzc2VzID8gIiIgOiBDLnN0YXJ0Y2xhc3NlcywgQy5hbmltYXRpb25vbnNjcm9sbCA9ICEhaVtyXS5zYnRpbWVsaW5lLnNldCAmJiBpW3JdLnNidGltZWxpbmUubGF5ZXJzLCBDLmFuaW1hdGlvbm9uc2Nyb2xsID0gITAgPT09IEMuYW5pbWF0aW9ub25zY3JvbGwgfHwgInRydWUiID09IEMuYW5pbWF0aW9ub25zY3JvbGwsIEMuZmlsdGVyb25zY3JvbGwgPSAhIWlbcl0uc2Nyb2xsZWZmZWN0LnNldCAmJiBpW3JdLnNjcm9sbGVmZmVjdC5sYXllcnMsIEMucHh1bmRlcm1hc2sgPSBDLnN0YXJ0Y2xhc3Nlcy5pbmRleE9mKCJycy1weG1hc2siKSA+PSAwICYmICJvZmYiICE9PSBpW3JdLnBhcmFsbGF4LnR5cGUgJiYgQy5zdGFydGNsYXNzZXMuaW5kZXhPZigicnMtcHhsLSIpID49IDAsIEMubm9QZXZlbnRzID0gQy5zdGFydGNsYXNzZXMuaW5kZXhPZigicnMtbm9ldmVudHMiKSA+PSAwLCBDLnNiYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5IGluIE8gPSBDLnNiYS5zcGxpdCgiOyIpKSBPLmhhc093blByb3BlcnR5KHkpICYmICgidCIgPT0gKEkgPSBPW3ldLnNwbGl0KCI6IikpWzBdICYmIChDLmFuaW1hdGlvbm9uc2Nyb2xsID0gSVsxXSwgImZhbHNlIiA9PSBJWzFdICYmIChDLmFuaW1PblNjcm9sbEZvcmNlRGlzYWJsZSA9ICEwKSksICJlIiA9PSBJWzBdICYmIChDLmZpbHRlcm9uc2Nyb2xsID0gSVsxXSksICJzbyIgPT0gSVswXSAmJiAoQy5zY3JvbGxCYXNlZE9mZnNldCA9IHBhcnNlSW50KElbMV0pIC8gMWUzKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInRydWUiICE9IEMuYW5pbWF0aW9ub25zY3JvbGwgJiYgMSAhPSBDLmFuaW1hdGlvbm9uc2Nyb2xsIHx8IChDLnN0YXJ0Y2xhc3NlcyArPSAiIHJzLXNiYSIsIFRbMF0uY2xhc3NOYW1lICs9ICIgcnMtc2JhIiksIEMuc3RhcnRjbGFzc2VzLmluZGV4T2YoInJzLWxheWVyLXN0YXRpYyIpID49IDAgJiYgaS5oYW5kbGVTdGF0aWNMYXllcnMgJiYgaS5oYW5kbGVTdGF0aWNMYXllcnMoVCwgciksICJSUy1CR1ZJREVPIiAhPT0gVFswXS50YWdOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRbMF0uY2xhc3NMaXN0LmFkZCgicnMtbGF5ZXIiKSwgImNvbHVtbiIgPT09IEMudHlwZSAmJiAoQy5jb2x1bW53aWR0aCA9ICIzMy4zMyUiLCBDLnZlcnRpY2FsYWxpZ24gPSAidG9wIiwgQy5jb2x1bW4gIT09IHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBBIGluIE8gPSBDLmNvbHVtbi5zcGxpdCgiOyIpKSBPLmhhc093blByb3BlcnR5KEEpICYmICgidyIgPT09IChJID0gT1tBXS5zcGxpdCgiOiIpKVswXSAmJiAoQy5jb2x1bW53aWR0aCA9IElbMV0pLCAiYSIgPT09IElbMF0gJiYgKEMudmVydGljYWxhbGlnbiA9IElbMV0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgTSA9IEMuc3RhcnRjbGFzc2VzLmluZGV4T2YoInNsaWRlbGluayIpID49IDAgPyAiei1pbmRleDoiICsgQy56aW5kZXggKyAiO3dpZHRoOjEwMCUgIWltcG9ydGFudDtoZWlnaHQ6MTAwJSAhaW1wb3J0YW50OyIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCA9ICJjb2x1bW4iICE9PSBDLnR5cGUgPyAiIiA6IEMudmVydGljYWxhbGlnbiA9PT0gdCA/ICIgdmVydGljYWwtYWxpZ246dG9wOyIgOiAiIHZlcnRpY2FsLWFsaWduOiIgKyBDLnZlcnRpY2FsYWxpZ24gKyAiOyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSAicm93IiA9PT0gQy50eXBlIHx8ICJjb2x1bW4iID09PSBDLnR5cGUgPyAicG9zaXRpb246cmVsYXRpdmU7IiA6ICJwb3NpdGlvbjphYnNvbHV0ZTsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4gPSAicm93IiA9PT0gQy50eXBlID8gInJzLXJvdy13cmFwIiA6ICJjb2x1bW4iID09PSBDLnR5cGUgPyAicnMtY29sdW1uLXdyYXAiIDogImdyb3VwIiA9PT0gQy50eXBlID8gInJzLWdyb3VwLXdyYXAiIDogInJzLWxheWVyLXdyYXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRiA9IChDLm5vUGV2ZW50cywgIjtwb2ludGVyLWV2ZW50czpub25lIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvdyIgPT09IEMudHlwZSB8fCAiY29sdW1uIiA9PT0gQy50eXBlIHx8ICJncm91cCIgPT09IEMudHlwZSA/IChUWzBdLmNsYXNzTGlzdC5yZW1vdmUoInRwLXJlc2l6ZW1lIiksICJjb2x1bW4iID09PSBDLnR5cGUgJiYgKEMud2lkdGggPSAiYXV0byIsIFRbMF0uZ3JvdXAgPSAicm93IiwgdHBHUy5nc2FwLnNldChULCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiYXV0byIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgQy5maWx0ZXJvbnNjcm9sbCA9ICExKSkgOiAoSCA9ICJkaXNwbGF5OiIgKyAoImlubGluZS1ibG9jayIgPT09IFRbMF0uc3R5bGUuZGlzcGxheSA/ICJpbmxpbmUtYmxvY2siIDogImJsb2NrIikgKyAiOyIsIG51bGwgIT09IGkuY2xvc2VzdE5vZGUoVFswXSwgIlJTLUNPTFVNTiIpID8gKFRbMF0uZ3JvdXAgPSAiY29sdW1uIiwgQy5maWx0ZXJvbnNjcm9sbCA9ICExKSA6IG51bGwgIT09IGkuY2xvc2VzdE5vZGUoVFswXSwgIlJTLUdST1VQLVdSQVAiKSAmJiAoVFswXS5ncm91cCA9ICJncm91cCIsIEMuZmlsdGVyb25zY3JvbGwgPSAhMSkpLCBDLndycGNscyAhPT0gdCAmJiAoRyA9IEcgKyAiICIgKyBDLndycGNscyksIEMud3JwaWQgIT09IHQgJiYgKGogPSAnaWQ9IicgKyBDLndycGlkICsgJyInKSwgVC53cmFwKCI8IiArIE4gKyAiICIgKyBqICsgJyBjbGFzcz0icnMtcGFyYWxsYXgtd3JhcCAnICsgRyArICciIHN0eWxlPSInICsgRCArICIgIiArIE0gKyB6ICsgSCArIEYgKyAnIj48cnMtbG9vcC13cmFwIHN0eWxlPSInICsgTSArIHogKyBIICsgJyI+PHJzLW1hc2std3JhcCBzdHlsZT0iJyArIE0gKyB6ICsgSCArICciPicgKyAoQy5weHVuZGVybWFzayA/ICI8cnMtcHgtbWFzaz48L3JzLXB4LW1hc2s+IiA6ICIiKSArICI8L3JzLW1hc2std3JhcD48L3JzLWxvb3Atd3JhcD48LyIgKyBOICsgIj4iKSwgITAgIT09IEMuZmlsdGVyb25zY3JvbGwgJiYgInRydWUiICE9IEMuZmlsdGVyb25zY3JvbGwgfHwgaVtyXS5zY3JvbGxlZmZlY3QuX0wucHVzaChULnBhcmVudCgpKSwgVFswXS5pZCA9IFRbMF0uaWQgPT09IHQgPyAibGF5ZXItIiArIE1hdGgucm91bmQoOTk5OTk5OTk5ICogTWF0aC5yYW5kb20oKSkgOiBUWzBdLmlkLCBpLnJldkNoZWNrSURTKHIsIFRbMF0pLCBDLnB4dW5kZXJtYXNrID8gaVtyXS5fTHNob3J0Y3V0c1tUWzBdLmlkXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDogZShUWzBdLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscDogZShUWzBdLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTogZShUWzBdLnBhcmVudE5vZGUucGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogaVtyXS5fTHNob3J0Y3V0c1tUWzBdLmlkXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDogZShUWzBdLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHA6IGUoVFswXS5wYXJlbnROb2RlLnBhcmVudE5vZGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtOiBlKFRbMF0ucGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAiY29sdW1uIiA9PT0gQy50eXBlICYmIGlbcl0uX0xzaG9ydGN1dHNbVFswXS5pZF0ucC5hcHBlbmQoJzxycy1jYmctbWFzay13cmFwPjxycy1jb2x1bW4tYmcgaWQ9IicgKyBUWzBdLmlkICsgJ19yc19jYmciPjwvcnMtY29sdW1uLWJnPjwvcnMtY2JnLW1hc2std3JhcD4nKSwgInRleHQiID09PSBDLnR5cGUgJiYgaS5nZXRCeVRhZyhUWzBdLCAiSUZSQU1FIikubGVuZ3RoID4gMCAmJiAoaVtyXS5zbGlkZUhhc0lmcmFtZSA9ICEwLCBUWzBdLmNsYXNzTGlzdC5hZGQoInJzLWlpLW8iKSksIGlbcl0uQlVHX3NhZmFyaV9jbGlwUGF0aCAmJiAidHJ1ZSIgIT0gQy5hbmltYXRpb25vbnNjcm9sbCAmJiAxICE9IEMuYW5pbWF0aW9ub25zY3JvbGwgJiYgVFswXS5jbGFzc0xpc3QuYWRkKCJycy1wZWxvY2siKSwgVFswXS5kYXRhc2V0LnN0YXRpY3ogIT09IHQgJiYgInJvdyIgIT09IEMudHlwZSAmJiAicm93IiAhPT0gVFswXS5ncm91cCAmJiAiY29sdW1uIiAhPT0gVFswXS5ncm91cCAmJiBpLmFkZFN0YXRpY0xheWVyVG8ociwgVFswXS5kYXRhc2V0LnN0YXRpY3osIGlbcl0uX0xzaG9ydGN1dHNbVFswXS5pZF0ucCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZ0EoVFswXSwgImFjdGlvbnMiKSAmJiBpLmNoZWNrQWN0aW9ucyAmJiBpLmNoZWNrQWN0aW9ucyhULCByLCBpW3JdKSwgIWkuY2hlY2tWaWRlb0FwaXMgfHwgd2luZG93LnJzX2FkZGVkdmltICYmIHdpbmRvdy5yc19hZGRlZHl0IHx8IGlbcl0ueW91dHViZWFwaW5lZWRlZCAmJiBpW3JdLnZpbWVvYXBpbmVlZGVkIHx8IGkuY2hlY2tWaWRlb0FwaXMoVCwgcikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGkuY2hlY2tBY3Rpb25zICYmIGkuY2hlY2tBY3Rpb25zKHQsIHIpLCBpW3JdLmNbMF0uYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMCAhPT0gaVtyXS5vbmNlQ2xpY2tlZCAmJiAoaVtyXS5vbmNlQ2xpY2tlZCA9ICEwLCAhMCAhPT0gaVtyXS5vbmNlVmlkZW9QbGF5ZWQgJiYgaVtyXS5hY3RpdmVSU1NsaWRlICE9PSB0ICYmIGlbcl0uc2xpZGVzICE9PSB0ICYmIGlbcl0uc2xpZGVzW2lbcl0uYWN0aXZlUlNTbGlkZV0gIT09IHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUoaVtyXS5zbGlkZXNbaVtyXS5hY3RpdmVSU1NsaWRlXSkuZmluZCgicnMtYmd2aWRlbyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAhPT0gdCAmJiBudWxsICE9PSBhICYmIGEubGVuZ3RoID4gMCAmJiBpLnBsYXlWaWRlbyhhLCByKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIGlbcl0uY1swXS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbcl0uYy50cmlnZ2VyKCJ0cC1tb3VzZWVudGVyIiksIGlbcl0ub3ZlcmNvbnRhaW5lciA9ICEwCiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgICAgICAgICAgICAgIH0pLCBpW3JdLmNbMF0uYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbcl0uYy50cmlnZ2VyKCJ0cC1tb3VzZW92ZXIiKSwgaVtyXS5vdmVyY29udGFpbmVyID0gITAKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksIGlbcl0uY1swXS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbcl0uYy50cmlnZ2VyKCJ0cC1tb3VzZWxlZnQiKSwgaVtyXS5vdmVyY29udGFpbmVyID0gITEKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksIGlbcl0uYy5maW5kKCIucnMtbGF5ZXIgdmlkZW8iKS5lYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpLnJlbW92ZUNsYXNzKCJ2aWRlby1qcyB2anMtZGVmYXVsdC1za2luIiksIGkuYXR0cigicHJlbG9hZCIsICIiKSwgaS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogIm5vbmUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSksIGlbcl0ucnNfc3RhdGljX2xheWVyID0gaS5nZXRCeVRhZyhpW3JdLmNbMF0sICJSUy1TVEFUSUMtTEFZRVJTIiksIGkucHJlTG9hZEF1ZGlvICYmIGlbcl0ucnNfc3RhdGljX2xheWVyLmxlbmd0aCA+IDAgJiYgaS5wcmVMb2FkQXVkaW8oZShpW3JdLnJzX3N0YXRpY19sYXllciksIHIsIDEpLCBpW3JdLnJzX3N0YXRpY19sYXllci5sZW5ndGggPiAwICYmIChpLmxvYWRJbWFnZXMoaVtyXS5yc19zdGF0aWNfbGF5ZXJbMF0sIHIsIDAsICEwKSwgaS53YWl0Rm9yQ3VycmVudEltYWdlcyhpW3JdLnJzX3N0YXRpY19sYXllclswXSwgciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbcl0gIT09IHQgJiYgaVtyXS5jLmZpbmQoInJzLXN0YXRpYy1sYXllcnMgaW1nIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3JjID0gaS5nZXRMb2FkT2JqKHIsIGkuZ0EodGhpcywgInNyYyIpICE9IHQgPyBpLmdBKHRoaXMsICJzcmMiKSA6IHRoaXMuc3JjKS5zcmMKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSksIGlbcl0ucm93em9uZXMgPSBbXSwgaVtyXS5yb3d6b25lc0hlaWdodHMgPSBbXSwgaVtyXS5taWRkbGVab25lcyA9IFtdOwogICAgICAgICAgICAgICAgICAgIHZhciBXID0gaS5kZWVwTGluayhyLCBCKCIjIilbMF0pOwogICAgICAgICAgICAgICAgICAgIFcgIT09IHQgJiYgKGlbcl0uc3RhcnRXaXRoU2xpZGUgPSBXLCBpW3JdLmRlZXBMaW5rTGlzdGVuZXIgPSAhMCwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEwICE9PSBpW3JdLmlnbm9yZURlZXBsaW5rQ2hhbmdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGkuZGVlcExpbmsociwgQigiIyIpWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgIT09IHQgJiYgaS5jYWxsaW5nTmV3U2xpZGUociwgZSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaVtyXS5pZ25vcmVEZWVwbGlua0NoYW5nZSA9ICExCiAgICAgICAgICAgICAgICAgICAgfSkpLCBpW3JdLmxvYWRlciA9IGkuYnVpbGRTcGlubmVyKHIsIGlbcl0uc3Bpbm5lciwgaVtyXS5zcGlubmVyY2xyKSwgaVtyXS5sb2FkZXJWaXNpYmxlID0gITAsIGlbcl0uYy5hcHBlbmQoaVtyXS5sb2FkZXIpLCBmKHIpLCAoIm9mZiIgIT09IGlbcl0ucGFyYWxsYXgudHlwZSB8fCBpW3JdLnNjcm9sbGVmZmVjdC5zZXQgfHwgaVtyXS5zYnRpbWVsaW5lLnNldCkgJiYgaS5jaGVja0ZvclBhcmFsbGF4ICYmIGkuY2hlY2tGb3JQYXJhbGxheChyKSwgaVtyXS5mYWxsYmFja3MuZGlzYWJsZUZvY3VzTGlzdGVuZXIgfHwgInRydWUiID09IGlbcl0uZmFsbGJhY2tzLmRpc2FibGVGb2N1c0xpc3RlbmVyIHx8ICEwID09PSBpW3JdLmZhbGxiYWNrcy5kaXNhYmxlRm9jdXNMaXN0ZW5lciB8fCAoaVtyXS5jLmFkZENsYXNzKCJyZXZfcmVkcmF3X29uX2JsdXJmb2N1cyIpLCBQKCkpOwogICAgICAgICAgICAgICAgICAgIHZhciBWID0gaVtyXS52aWV3UG9ydDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5IGluICJvbiIgPT09IGlbcl0ubmF2aWdhdGlvbi5tb3VzZVNjcm9sbE5hdmlnYXRpb24gJiYgKFYuZW5hYmxlID0gITApLCBpW3JdLnNsaWRlcykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlbcl0uc2xpZGVzLmhhc093blByb3BlcnR5KHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRSA9IGUoaVtyXS5zbGlkZXNbeV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaVtyXS5yb3d6b25lc1t5XSA9IFtdLCBpW3JdLnJvd3pvbmVzSGVpZ2h0c1t5XSA9IFtdLCBpW3JdLm1pZGRsZVpvbmVzW3ldID0gW10sIEUuZmluZCgicnMtem9uZSIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVtyXS5yb3d6b25lc1t5XS5wdXNoKGUodGhpcykpLCB0aGlzLmNsYXNzTmFtZS5pbmRleE9mKCJyZXZfcm93X3pvbmVfbWlkZGxlIikgPj0gMCAmJiBpW3JdLm1pZGRsZVpvbmVzW3ldLnB1c2godGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAoVi5lbmFibGUgJiYgaVtyXS5pbnZpZXdwb3J0IHx8ICFWLmVuYWJsZSkgJiYgImFsbCIgPT0gaVtyXS5sYXp5VHlwZSAmJiAoaS5sb2FkSW1hZ2VzKEVbMF0sIHIsIHkpLCBpLndhaXRGb3JDdXJyZW50SW1hZ2VzKEVbMF0sIHIsIGZ1bmN0aW9uKCkge30pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaVtyXS5zcm93em9uZXMgPSBbXSwgaVtyXS5zbWlkZGxlWm9uZXMgPSBbXSwgaVtyXS5zbGF5ZXJzICYmIGlbcl0uc2xheWVycy5maW5kKCJycy16b25lIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaVtyXS5zcm93em9uZXMucHVzaChlKHRoaXMpKSwgdGhpcy5jbGFzc05hbWUuaW5kZXhPZigicmV2X3Jvd196b25lX21pZGRsZSIpID49IDAgJiYgaVtyXS5zbWlkZGxlWm9uZXMucHVzaCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0pLCAiY2Fyb3VzZWwiID09PSBpW3JdLnNsaWRlclR5cGUgJiYgdHBHUy5nc2FwLnNldChpW3JdLmNhbnZhcywgewogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcGVyc3BlY3RpdmU6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVN0eWxlOiAiZmxhdCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgICAgICAgICB9KSwgaVtyXS5jLnByZXBlbmRUbyhpW3JdLmNwYXIpLCBlKCJib2R5IikuZGF0YSgicnMtZnVsbFNjcmVlbk1vZGUiLCAhMSksIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIiwgcCwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgICAgICAgICAgICAgIH0pLCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW96ZnVsbHNjcmVlbmNoYW5nZSIsIHAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgICAgICB9KSwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCBwLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksIGkuZG9jdW1lbnQub24oInVwZGF0ZUNvbnRhaW5lclNpemVzLiIgKyBpW3JdLmMuYXR0cigiaWQiKSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpW3JdICE9PSB0KSByZXR1cm4gaVtyXS5jICE9IHQgJiYgdm9pZChpLnVwZGF0ZURpbXMociwgImlnbm9yZSIpICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnVwZGF0ZURpbXMociwgImlnbm9yZSIpLCBpW3JdLmZ1bGxTY3JlZW5Nb2RlID0gaS5jaGVja2Z1bGxzY3JlZW5FbmFibGVkKHIpLCBpLmxhc3R3aW5kb3doZWlnaHQgPSBpLmdldFdpbkgociksIG0ocikKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSksIFYucHJlc2l6ZSAmJiAoaVtyXS5wcl9uZXh0X3NsaWRlID0gZShpW3JdLnNsaWRlc1swXSksIGkubG9hZEltYWdlcyhpW3JdLnByX25leHRfc2xpZGVbMF0sIHIsIDAsICEwKSwgaS53YWl0Rm9yQ3VycmVudEltYWdlcyhpW3JdLnByX25leHRfc2xpZGUuZmluZCgiLnRwLWxheWVycyIpLCByLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5hbmltYXRlVGhlTGF5ZXJzICYmIGkuYW5pbWF0ZVRoZUxheWVycyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogaVtyXS5wcl9uZXh0X2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInByZXNldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXI6ICJydW5TbGlkZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkpLCAoIm9mZiIgIT0gaVtyXS5wYXJhbGxheC50eXBlIHx8IGlbcl0uc2J0aW1lbGluZS5zZXQgfHwgITAgPT09IFYuZW5hYmxlKSAmJiBpLnNjcm9sbFRpY2tlcihyKSwgITAgIT09IFYuZW5hYmxlICYmIChpW3JdLmludmlld3BvcnQgPSAhMCwgaS5lbnRlclZpZXdQb3J0KHIpKSwgaS5SU190b0luaXQgIT09IHQgJiYgKGkuUlNfdG9Jbml0W3JdID0gITApLCBpW3JdLm9ic2VydmVXcmFwICYmIGkub2JzZXJ2ZVdyYXBzICYmIGkud3JhcE9ic2VydmVyLm9ic2VydmUoaVtyXS5yc0Z1bGxXaWR0aFdyYXAgIT09IHQgPyBpW3JdLnJzRnVsbFdpZHRoV3JhcFswXSA6IGlbcl0uY3BhclswXSwgcikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaCA9IGZ1bmN0aW9uKGUsIGEpIHsKICAgICAgICAgICAgaS53aW5XIDwgaVtlXS5oaWRlU2xpZGVyQXRMaW1pdCA/IChpW2VdLmMudHJpZ2dlcigic3RvcHRpbWVyIiksICEwICE9PSBpW2VdLnNsaWRlcklzSGlkZGVuICYmIChpLnNBKGlbZV0uY3BhclswXSwgImRpc3BsYXljYWNoZSIsICJub25lIiAhPSBpW2VdLmNwYXIuY3NzKCJkaXNwbGF5IikgPyBpW2VdLmNwYXIuY3NzKCJkaXNwbGF5IikgOiBpLmdBKGlbZV0uY3BhclswXSwgImRpc3BsYXljYWNoZSIpKSwgaVtlXS5jcGFyLmNzcyh7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAibm9uZSIKICAgICAgICAgICAgfSksIGlbZV0uc2xpZGVySXNIaWRkZW4gPSAhMCkpIDogKCEwID09PSBpW2VdLnNsaWRlcklzSGlkZGVuIHx8IGlbZV0uc2xpZGVySXNIaWRkZW4gPT09IHQgJiYgaVtlXS5jLmlzKCI6aGlkZGVuIikpICYmIGEgJiYgKGlbZV0uY3BhclswXS5zdHlsZS5kaXNwbGF5ID0gaS5nQShpW2VdLmNwYXJbMF0sICJkaXNwbGF5Y2FjaGUiKSAhPSB0ICYmICJub25lIiAhPSBpLmdBKGlbZV0uY3BhclswXSwgImRpc3BsYXljYWNoZSIpID8gaS5nQShpW2VdLmNwYXJbMF0sICJkaXNwbGF5Y2FjaGUiKSA6ICJibG9jayIsIGlbZV0uc2xpZGVySXNIaWRkZW4gPSAhMSwgaVtlXS5jLnRyaWdnZXIoInJlc3RhcnR0aW1lciIpLCB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbShlLCAhMCkKICAgICAgICAgICAgfSkpLCBpLmhpZGVVbkhpZGVOYXYgJiYgaVtlXS5uYXZpZ2F0aW9uLnVzZSAmJiBpLmhpZGVVbkhpZGVOYXYoZSkKICAgICAgICB9LAogICAgICAgIG0gPSBmdW5jdGlvbihlLCByLCBvKSB7CiAgICAgICAgICAgIGlmIChpW2VdLmMgPT09IHQpIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKGlbZV0uZGltZW5zaW9uUmVDaGVjayA9IHt9LCBpW2VdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS5iZWZvcmVyZWRyYXciKSwgMSA9PSBpW2VdLmluZnVsbHNjcmVlbm1vZGUgJiYgKGlbZV0ubWluSGVpZ2h0ID0gaS5nZXRXaW5IKGUpKSwgYSAmJiAoaVtlXS5sYXN0TW9iaWxlSGVpZ2h0ID0gaS5nZXRXaW5IKGUpKSwgbyAmJiBpLnVwZGF0ZURpbXMoZSksICFpLnJlc2l6ZVRodW1ic1RhYnMgfHwgITAgPT09IGkucmVzaXplVGh1bWJzVGFicyhlKSkgewogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGgoZSwgITAgIT09IHIpLCBPKGUpCiAgICAgICAgICAgICAgICAgICAgfSksIGlbZV0uc3RhcnRlZCkgewogICAgICAgICAgICAgICAgICAgIGlmICgiY2Fyb3VzZWwiID09IGlbZV0uc2xpZGVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyBpbiBpLnByZXBhcmVDYXJvdXNlbChlKSwgaVtlXS5zYmdzKSBpW2VdLnNiZ3MuaGFzT3duUHJvcGVydHkocykgJiYgaVtlXS5zYmdzW3NdLm1ESU0gIT09IHQgJiYgaS51cGRhdGVTbGlkZUJHcyhlLCBpW2VdLnNiZ3Nbc10ua2V5LCBpW2VdLnNiZ3Nbc10pOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaS51cGRhdGVTbGlkZUJHcyhlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoImNhcm91c2VsIiA9PT0gaVtlXS5zbGlkZXJUeXBlICYmIGlbZV0uY2FyQ2hlY2tjb25XICE9IGlbZV0uY2Fudi53aWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIGNsZWFyVGltZW91dChpW2VdLnBjYXJ0aW1lciksIGlbZV0uc2JncykgaVtlXS5zYmdzW25dLmxvYWRvYmogIT09IHQgJiYgaS51cGRhdGVTbGlkZUJHcyhlLCBpW2VdLnNiZ3Nbbl0ua2V5LCBpW2VdLnNiZ3Nbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICBpW2VdLnBjYXJ0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnByZXBhcmVDYXJvdXNlbChlKSwgaS5hbmltYXRlVGhlTGF5ZXJzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogImluZGl2aWR1YWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJyZWJ1aWxkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXI6ICJjb250YWluZXJSZXNpemVkXzEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaVtlXS5jYXJDaGVja2NvblcgPSBpW2VdLmNhbnYud2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKSwgaVtlXS5sYXN0Y29udyA9IGlbZV0uY2Fudi53aWR0aAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoaVtlXS5wcl9wcm9jZXNzaW5nX2tleSAhPT0gdCA/IGkuYW5pbWF0ZVRoZUxheWVycyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogaVtlXS5wcl9wcm9jZXNzaW5nX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInJlYnVpbGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVyOiAiY29udGFpbmVyUmVzaXplZF8yIgogICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGlbZV0ucHJfYWN0aXZlX2tleSAhPT0gdCAmJiBpLmFuaW1hdGVUaGVMYXllcnMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGU6IGlbZV0ucHJfYWN0aXZlX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInJlYnVpbGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVyOiAiY29udGFpbmVyUmVzaXplZF8zIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgImNhcm91c2VsIiA9PT0gaVtlXS5zbGlkZXJUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gaVtlXS5wYW56b29tVExzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlbZV0ucGFuem9vbVRMcy5oYXNPd25Qcm9wZXJ0eShuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gaS5nQShpW2VdLnBhbnpvb21CR3Nbbl1bMF0sICJrZXkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnN0YXJ0UGFuWm9vbShpW2VdLnBhbnpvb21CR3Nbbl0sIGUsIGlbZV0ucGFuem9vbVRMc1tuXS5wcm9ncmVzcygpLCBuLCBpW2VdLnBhbnpvb21UTHNbbl0uaXNBY3RpdmUoKSA/ICJwbGF5IiA6ICJyZXNldCIsIGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlbZV0ucHJfYWN0aXZlX2JnICE9PSB0ICYmIGlbZV0ucHJfYWN0aXZlX2JnWzBdICE9PSB0ICYmIHYoZSwgaVtlXS5wcl9hY3RpdmVfYmcsIGlbZV0ucHJfYWN0aXZlX2JnWzBdLmRhdGFzZXQua2V5KSwgaVtlXS5wcl9uZXh0X2JnICE9PSB0ICYmIGlbZV0ucHJfbmV4dF9iZ1swXSAhPT0gdCAmJiB2KGUsIGlbZV0ucHJfbmV4dF9iZywgaVtlXS5wcl9uZXh0X2JnWzBdLmRhdGFzZXQua2V5KTsKICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoaVtlXS5tTmF2aWdUaW1lb3V0KSwgaS5tYW5hZ2VOYXZpZ2F0aW9uICYmIChpW2VdLm1OYXZpZ1RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLm1hbmFnZU5hdmlnYXRpb24oZSkKICAgICAgICAgICAgICAgICAgICB9LCAyMCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpLnByZXBhcmVDb3ZlcmVkVmlkZW8oZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpW2VdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS5hZnRlcmRyYXciLCBbewogICAgICAgICAgICAgICAgaWQ6IGUKICAgICAgICAgICAgfV0pCiAgICAgICAgfSwKICAgICAgICB2ID0gZnVuY3Rpb24oZSwgYSwgcikgewogICAgICAgICAgICBpZiAoaVtlXS5wYW56b29tVExzICE9PSB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGkuZ2V0U2xpZGVJbmRleChlLCByKTsKICAgICAgICAgICAgICAgIGkuc3RhcnRQYW5ab29tKGEsIGUsIGlbZV0ucGFuem9vbVRMc1tvXSAhPT0gdCA/IGlbZV0ucGFuem9vbVRMc1tvXS5wcm9ncmVzcygpIDogMCwgbywgInBsYXkiLCByKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBmID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAhMCAhPT0gaVthXS5ub0RldGFjaCAmJiBpW2FdLmNhbnZhcy5kZXRhY2goKTsKICAgICAgICAgICAgdmFyIHIgPSBpLmlzRmFjZUJvb2soKSA/ICJ2aXNpYmxlIiA6ICJoaWRkZW4iOwogICAgICAgICAgICBpZiAoaVthXS5hdXRvSGVpZ2h0ICYmIHRwR1MuZ3NhcC5zZXQoW2lbYV0uYywgaVthXS5jcGFyXSwgewogICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogIm5vbmUiCiAgICAgICAgICAgICAgICB9KSwgdHBHUy5nc2FwLnNldChpW2FdLmNhbnZhcywgaVthXS5tb2RhbCAhPT0gdCAmJiBpW2FdLm1vZGFsLnVzZUFzTW9kYWwgPyB7CiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHIsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICIxMDAlIiwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICIxMDAlIgogICAgICAgICAgICAgICAgfSA6IHsKICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogciwKICAgICAgICAgICAgICAgICAgICB3aWR0aDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogaVthXS5hdXRvSGVpZ2h0ID8gIm5vbmUiIDogaVthXS5jcGFyLmNzcygibWF4SGVpZ2h0IikKICAgICAgICAgICAgICAgIH0pLCAiY2Fyb3VzZWwiID09PSBpW2FdLnNsaWRlclR5cGUpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gIm1hcmdpbi10b3A6IiArIHBhcnNlSW50KGlbYV0uY2Fyb3VzZWwucGFkZGluZ190b3AgfHwgMCwgMCkgKyAicHg7IjsKICAgICAgICAgICAgICAgIGlbYV0uY2FudmFzLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICJ2aXNpYmxlIgogICAgICAgICAgICAgICAgfSkud3JhcCgnPHJzLWNhcm91c2VsLXdyYXAgc3R5bGU9IicgKyBvICsgJyI+PC9ycy1jYXJvdXNlbC13cmFwPicpLCBpW2FdLmNwYXIucHJlcGVuZCgiPHJzLWNhcm91c2VsLXNwYWNlPjwvcnMtY2Fyb3VzZWwtc3BhY2U+IikuYXBwZW5kKCI8cnMtY2Fyb3VzZWwtc3BhY2U+PC9ycy1jYXJvdXNlbC1zcGFjZT4iKSwgaS5kZWZpbmVDYXJvdXNlbEVsZW1lbnRzKGEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaVthXS5zdGFydFdpdGhTbGlkZSA9IGlbYV0uc3RhcnRXaXRoU2xpZGUgPT09IHQgPyB0IDogTWF0aC5tYXgoMSwgKGlbYV0uc2xpZGVyVHlwZSwgcGFyc2VJbnQoaVthXS5zdGFydFdpdGhTbGlkZSkpKSwgaVthXS5jcGFyLmNzcyh7CiAgICAgICAgICAgICAgICBvdmVyZmxvdzogInZpc2libGUiCiAgICAgICAgICAgIH0pLCBpW2FdLnNjcm9sbGVmZmVjdC5iZ3MgPSBbXTsKICAgICAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCBpW2FdLnNsaWRlcy5sZW5ndGg7IHMrKykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlKGlbYV0uc2xpZGVzW3NdKSwKICAgICAgICAgICAgICAgICAgICBkID0gaS5nQShuWzBdLCAia2V5IiksCiAgICAgICAgICAgICAgICAgICAgbCA9IG4uZmluZCgiLnJldi1zbGlkZWJnIikgfHwgbi5maW5kKCI+aW1nIiksCiAgICAgICAgICAgICAgICAgICAgYyA9IGlbYV0uc2Jnc1tkXSA9IHkobC5kYXRhKCksIGEpLAogICAgICAgICAgICAgICAgICAgIHAgPSBuLmRhdGEoIm1lZGlhZmlsdGVyIik7CiAgICAgICAgICAgICAgICBpZiAoYy5za2V5aW5kZXggPSBpLmdldFNsaWRlSW5kZXgoYSwgZCksIGMuYmd2aWQgPSBuLmZpbmQoInJzLWJndmlkZW8iKSwgbC5kZXRhY2goKSwgYy5iZ3ZpZC5kZXRhY2goKSwgKGlbYV0uc3RhcnRXaXRoU2xpZGUgIT0gdCAmJiBpLmdBKGlbYV0uc2xpZGVzW3NdLCAib3JpZ2luYWxpbmRleCIpID09IGlbYV0uc3RhcnRXaXRoU2xpZGUgfHwgaVthXS5zdGFydFdpdGhTbGlkZSA9PT0gdCAmJiAwID09IHMpICYmIChpW2FdLnByX25leHRfa2V5ID0gbi5pbmRleCgpKSwgdHBHUy5nc2FwLnNldChuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogcgogICAgICAgICAgICAgICAgICAgIH0pLCBsLndyYXAoJzxycy1zYmctcHg+PHJzLXNiZy13cmFwIGRhdGEta2V5PSInICsgZCArICciPjwvcnMtc2JnLXdyYXA+PC9ycy1zYmctcHg+JyksIGMud3JhcCA9IGUoaS5jbG9zZXN0Tm9kZShsWzBdLCAiUlMtU0JHLVdSQVAiKSksIGMuc3JjID0gbFswXS5zcmMsIGMubGF6eWxvYWQgPSBjLmxhenlsb2FkID0gZyhsWzBdLCB0LCBhKSwgYy5zbGlkZWJnaW1hZ2UgPSAhMCwgYy5sb2Fkb2JqID0gYy5sb2Fkb2JqID09PSB0ID8ge30gOiBjLmxvYWRvYmosIGMubWVkaWFmaWx0ZXIgPSBwID0gIm5vbmUiID09PSBwIHx8IHAgPT09IHQgPyAiIiA6IHAsIGMuc2JnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicnMtc2JnIiksIGlbYV0ub3ZlcmxheSAhPT0gdCAmJiAibm9uZSIgIT0gaVthXS5vdmVybGF5LnR5cGUgJiYgaVthXS5vdmVybGF5LnR5cGUgIT0gdCkgewogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gaS5jcmVhdGVPdmVybGF5KGEsIGlbYV0ub3ZlcmxheS50eXBlLCBpW2FdLm92ZXJsYXkuc2l6ZSwgewogICAgICAgICAgICAgICAgICAgICAgICAwOiBpW2FdLm92ZXJsYXkuY29sb3JhLAogICAgICAgICAgICAgICAgICAgICAgICAxOiBpW2FdLm92ZXJsYXkuY29sb3JiCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgYy53cmFwLmFwcGVuZCgnPHJzLWRvdHRlZCBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTonICsgdSArICciPjwvcnMtZG90dGVkPicpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsLmRhdGEoIm1lZGlhZmlsdGVyIiwgcCksIGMuY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksIGMuc2JnLmFwcGVuZENoaWxkKGMuY2FudmFzKSwgYy5jYW52YXMuc3R5bGUud2lkdGggPSAiMTAwJSIsIGMuY2FudmFzLnN0eWxlLmhlaWdodCA9ICIxMDAlIiwgYy5jdHggPSBjLmNhbnZhcy5nZXRDb250ZXh0KCIyZCIpLCBjLmxhenlsb2FkICE9PSB0ICYmIChjLnNiZy5kYXRhc2V0Lmxhenlsb2FkID0gYy5sYXp5bG9hZCksIGMuc2JnLmNsYXNzTmFtZSA9IHAsIGMuc2JnLnNyYyA9IGMuc3JjLCBjLnNiZy5kYXRhc2V0LmJnY29sb3IgPSBjLmJnY29sb3IsIGMuc2JnLnN0eWxlLndpZHRoID0gIjEwMCUiLCBjLnNiZy5zdHlsZS5oZWlnaHQgPSAiMTAwJSIsIGMua2V5ID0gZCwgYy53cmFwWzBdLmRhdGFzZXQua2V5ID0gZCwgZShjLnNiZykuZGF0YShjKSwgYy53cmFwLmRhdGEoYyksIGMud3JhcFswXS5hcHBlbmRDaGlsZChjLnNiZyk7CiAgICAgICAgICAgICAgICB2YXIgaCA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIlJ1bnRpbWUgTW9kaWZpY2F0aW9uIC0gSW1nIHRhZyBpcyBTdGlsbCBBdmFpbGFibGUgZm9yIFNFTyBHb2FscyBpbiBTb3VyY2UgLSAiICsgbC5nZXQoMCkub3V0ZXJIVE1MKTsKICAgICAgICAgICAgICAgIGwucmVwbGFjZVdpdGgoaCksIGkuZ0EoblswXSwgInNiYSIpID09PSB0ICYmIGkuc0EoblswXSwgInNiYSIsICIiKTsKICAgICAgICAgICAgICAgIHZhciBtID0ge30sCiAgICAgICAgICAgICAgICAgICAgdiA9IGkuZ0EoblswXSwgInNiYSIpLnNwbGl0KCI7Iik7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBmIGluIHYpCiAgICAgICAgICAgICAgICAgICAgaWYgKHYuaGFzT3duUHJvcGVydHkoZikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB2W2ZdLnNwbGl0KCI6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYlswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5mID0gYlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0uYiA9IGJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmcgPSBiWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5zID0gYlsxXQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaS5zQShuWzBdLCAic2Nyb2xsLWJhc2VkIiwgISFpW2FdLnNidGltZWxpbmUuc2V0ICYmIChtLnMgIT09IHQgJiYgbS5zKSksIGMuYmd2aWQubGVuZ3RoID4gMCAmJiAoYy5iZ3ZpZGlkID0gYy5iZ3ZpZFswXS5pZCwgYy5hbmltYXRlRGlyZWN0aW9uID0gImlkbGUiLCBjLmJndmlkLmFkZENsYXNzKCJkZWZhdWx0dmlkIikuY3NzKHsKICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDMwCiAgICAgICAgICAgICAgICB9KSwgcCAhPT0gdCAmJiAiIiAhPT0gcCAmJiAibm9uZSIgIT09IHAgJiYgYy5iZ3ZpZC5hZGRDbGFzcyhwKSwgYy5iZ3ZpZC5hcHBlbmRUbyhjLndyYXApLCBjLnBhcmFsbGF4ICE9IHQgJiYgKGMuYmd2aWQuZGF0YSgicGFyYWxsYXgiLCBjLnBhcmFsbGF4KSwgYy5iZ3ZpZC5kYXRhKCJzaG93Y292ZXJvbnBhdXNlIiwgIm9uIiksIGMuYmd2aWQuZGF0YSgibWVkaWFmaWx0ZXIiLCBwKSksIGMucG9zdGVyID0gITEsIChjLnNyYyAhPT0gdCAmJiAtMSA9PSBjLnNyYy5pbmRleE9mKCJhc3NldHMvZHVtbXkucG5nIikgJiYgLTEgPT0gYy5zcmMuaW5kZXhPZigiYXNzZXRzL3RyYW5zcGFyZW50LnBuZyIpIHx8IGMubGF6eWxvYWQgIT09IHQgJiYgLTEgPT0gYy5sYXp5bG9hZC5pbmRleE9mKCJhc3NldHMvdHJhbnNwYXJlbnQucG5nIikgJiYgLTEgPT0gYy5sYXp5bG9hZC5pbmRleE9mKCJhc3NldHMvZHVtbXkucG5nIikpICYmIChjLnBvc3RlciA9ICEwKSwgYy5iZ3ZpZC5kYXRhKCJiZ3ZpZGVvIiwgMSksIGMuYmd2aWRbMF0uZGF0YXNldC5rZXkgPSBkLCAwID09IGMuYmd2aWQuZmluZCgiLnJzLWZ1bGx2aWRlby1jb3ZlciIpLmxlbmd0aCAmJiBjLmJndmlkLmFwcGVuZCgnPGRpdiBjbGFzcz0icnMtZnVsbHZpZGVvLWNvdmVyIj48L2Rpdj4nKSksIGlbYV0uc2Nyb2xsZWZmZWN0LnNldCA/IChpW2FdLnNjcm9sbGVmZmVjdC5iZ3MucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgZmFkZTogbS5mICE9PSB0ID8gbS5mIDogISFpW2FdLnNjcm9sbGVmZmVjdC5zbGlkZSAmJiBpW2FdLnNjcm9sbGVmZmVjdC5mYWRlLAogICAgICAgICAgICAgICAgICAgIGJsdXI6IG0uYiAhPT0gdCA/IG0uYiA6ICEhaVthXS5zY3JvbGxlZmZlY3Quc2xpZGUgJiYgaVthXS5zY3JvbGxlZmZlY3QuYmx1ciwKICAgICAgICAgICAgICAgICAgICBncmF5c2NhbGU6IG0uZyAhPT0gdCA/IG0uZyA6ICEhaVthXS5zY3JvbGxlZmZlY3Quc2xpZGUgJiYgaVthXS5zY3JvbGxlZmZlY3QuZ3JheXNjYWxlLAogICAgICAgICAgICAgICAgICAgIGM6IGMud3JhcC53cmFwKCI8cnMtc2JnLWVmZmVjdHdyYXA+PC9ycy1zYmctZWZmZWN0d3JhcD4iKS5wYXJlbnQoKQogICAgICAgICAgICAgICAgfSksIG4ucHJlcGVuZChjLndyYXAucGFyZW50KCkucGFyZW50KCkpKSA6IG4ucHJlcGVuZChjLndyYXAucGFyZW50KCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgImNhcm91c2VsIiA9PT0gaVthXS5zbGlkZXJUeXBlID8gKHRwR1MuZ3NhcC5zZXQoaVthXS5jYXJvdXNlbC53cmFwLCB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgIH0pLCBpW2FdLmNbMF0uYXBwZW5kQ2hpbGQoaVthXS5jYXJvdXNlbC53cmFwWzBdKSkgOiBpW2FdLmNbMF0uYXBwZW5kQ2hpbGQoaVthXS5jYW52YXNbMF0pCiAgICAgICAgfSwKICAgICAgICB5ID0gZnVuY3Rpb24ociwgbykgewogICAgICAgICAgICByLmJnID0gci5iZyA9PT0gdCA/ICIiIDogci5iZzsKICAgICAgICAgICAgdmFyIHMgPSByLmJnLnNwbGl0KCI7IiksCiAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgIGJncG9zaXRpb246ICI1MCUgNTAlIiwKICAgICAgICAgICAgICAgICAgICBiZ2ZpdDogImNvdmVyIiwKICAgICAgICAgICAgICAgICAgICBiZ3JlcGVhdDogIm5vLXJlcGVhdCIsCiAgICAgICAgICAgICAgICAgICAgYmdjb2xvcjogInRyYW5zcGFyZW50IgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yICh2YXIgZCBpbiBzKQogICAgICAgICAgICAgICAgaWYgKHMuaGFzT3duUHJvcGVydHkoZCkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHNbZF0uc3BsaXQoIjoiKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGxbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBsWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gIiI7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICJiZ3Bvc2l0aW9uIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAiYmdmaXQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICJiZ3JlcGVhdCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gImJnY29sb3IiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGcgIT09IHQgJiYgKG5bZ10gPSBwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaVtvXS5mYWxsYmFja3MucGFuWm9vbURpc2FibGVPbk1vYmlsZSAmJiBhICYmIChuLnBhbnpvb20gPSB0LCBuLmJnZml0ID0gImNvdmVyIiksIGUuZXh0ZW5kKCEwLCByLCBuKQogICAgICAgIH0sCiAgICAgICAgYiA9IGZ1bmN0aW9uKGUsIGEsIHIpIHsKICAgICAgICAgICAgaWYgKGlbYV0gIT09IHQpIHsKICAgICAgICAgICAgICAgIGlbYV0uc3luY2xvYWQtLTsKICAgICAgICAgICAgICAgIHZhciBvID0gaS5nQShlLCAicmVmZXJlbmNlIik7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBzIGluIGlbYV0ubG9hZHF1ZXVlKSBpW2FdLmxvYWRxdWV1ZS5oYXNPd25Qcm9wZXJ0eShzKSAmJiAibG9hZGVkIiAhPT0gaVthXS5sb2FkcXVldWVbc10ucHJvZ3Jlc3MgJiYgbyA9PSBpW2FdLmxvYWRxdWV1ZVtzXS5zcmMgJiYgKGlbYV0ubG9hZHF1ZXVlW3NdLmltZyA9IGUsIGlbYV0ubG9hZHF1ZXVlW3NdLnByb2dyZXNzID0gciwgaVthXS5sb2FkcXVldWVbc10ud2lkdGggPSBlLndpZHRoLCBpW2FdLmxvYWRxdWV1ZVtzXS5oZWlnaHQgPSBlLmhlaWdodCk7CiAgICAgICAgICAgICAgICB3KGEpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIDQgIT0gaVthXS5zeW5jbG9hZCAmJiBpW2FdLmxvYWRxdWV1ZSAmJiBlLmVhY2goaVthXS5sb2FkcXVldWUsIGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgIGlmICgicHJlcGFyZWQiID09IG8ucHJvZ3Jlc3MgJiYgaVthXS5zeW5jbG9hZCA8PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlbYV0uc3luY2xvYWQrKywgImltZyIgPT0gby50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gbmV3IEltYWdlOwogICAgICAgICAgICAgICAgICAgICAgICBpLnNBKHMsICJyZWZlcmVuY2UiLCBvLnNyYyksIC9eKFtcd10rXDopP1wvXC8vLnRlc3Qoby5zcmMpICYmIC0xID09PSBvLnNyYy5pbmRleE9mKGxvY2F0aW9uLmhvc3QpICYmICIiICE9PSBpW2FdLmltZ0Nyb3NzT3JpZ2luICYmIGlbYV0uaW1nQ3Jvc3NPcmlnaW4gIT09IHQgJiYgKHMuY3Jvc3NPcmlnaW4gPSBpW2FdLmltZ0Nyb3NzT3JpZ2luKSwgcy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIodGhpcywgYSwgImxvYWRlZCIpLCBvLmVycm9yID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwgcy5vbmVycm9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiKHRoaXMsIGEsICJmYWlsZWQiKSwgby5lcnJvciA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHMuc3JjID0gby5zcmMsIG8uc3RhcnR0b2xvYWQgPSBlLm5vdygpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGUuZ2V0KG8uc3JjLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uaW5uZXJIVE1MID0gKG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhlLmRvY3VtZW50RWxlbWVudCksIG8ucHJvZ3Jlc3MgPSAibG9hZGVkIiwgaVthXS5zeW5jbG9hZC0tLCB3KGEpCiAgICAgICAgICAgICAgICAgICAgfSkuZmFpbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby5wcm9ncmVzcyA9ICJmYWlsZWQiLCBpW2FdLnN5bmNsb2FkLS0sIHcoYSkKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBvLnByb2dyZXNzID0gImlubG9hZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBjb25zb2xlLmxvZygiU3RhdGljIEltYWdlICIgKyBlICsgIiAgQ291bGQgbm90IGJlIGxvYWRlZCBpbiB0aW1lLiBFcnJvciBFeGlzdHM6IiArIHQpLCAhMAogICAgICAgIH0sCiAgICAgICAgUyA9IGZ1bmN0aW9uKHQsIGEpIHsKICAgICAgICAgICAgaWYgKGUubm93KCkgLSBpW2FdW3QgKyAic3RhcnR0aW1lIl0gPiA1ZTMgJiYgMSAhPSBpW2FdW3QgKyAid2FybmluZyJdKSB7CiAgICAgICAgICAgICAgICBpW2FdW3QgKyAid2FybmluZyJdID0gITA7CiAgICAgICAgICAgICAgICB2YXIgciA9IHQgKyAiIEFwaSBDb3VsZCBub3QgYmUgbG9hZGVkICEiOwogICAgICAgICAgICAgICAgImh0dHBzOiIgPT09IGxvY2F0aW9uLnByb3RvY29sICYmIChyICs9ICIgUGxlYXNlIENoZWNrIGFuZCBSZW5ldyBTU0wgQ2VydGlmaWNhdGUgISIpLCBjb25zb2xlLmVycm9yKHIpLCBpW2FdLmMuYXBwZW5kKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3dpZHRoOjEwMCU7Y29sb3I6I2U3NGMzYzsgIGZvbnQtc2l6ZToxNnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxNXB4O2JhY2tncm91bmQ6IzAwMDsgZGlzcGxheTpibG9jazsiPjxzdHJvbmc+JyArIHIgKyAiPC9zdHJvbmc+PC9kaXY+IikKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gITAKICAgICAgICB9LAogICAgICAgIHggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGlbYV0gIT09IHQgJiYgKGlbYV0ucHJfYWN0aXZlX3NsaWRlID0gZShpW2FdLnNsaWRlc1tpW2FdLnByX2FjdGl2ZV9rZXldKSwgaVthXS5wcl9uZXh0X3NsaWRlID0gZShpW2FdLnNsaWRlc1tpW2FdLnByX3Byb2Nlc3Npbmdfa2V5XSksIGlbYV0ucHJfYWN0aXZlX2JnID0gaVthXS5wcl9hY3RpdmVfc2xpZGUuZmluZCgicnMtc2JnLXdyYXAiKSwgaVthXS5wcl9uZXh0X2JnID0gaVthXS5wcl9uZXh0X3NsaWRlLmZpbmQoInJzLXNiZy13cmFwIiksIGlbYV0ucHJfYWN0aXZlX2JnICE9PSB0ICYmIGlbYV0ucHJfYWN0aXZlX2JnLmxlbmd0aCA+IDAgJiYgdHBHUy5nc2FwLnRvKGlbYV0ucHJfYWN0aXZlX2JnLCAuNSwgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgICB9KSwgaVthXS5wcl9uZXh0X2JnICE9PSB0ICYmIGlbYV0ucHJfbmV4dF9iZy5sZW5ndGggPiAwICYmIHRwR1MuZ3NhcC50byhpW2FdLnByX25leHRfYmcsIC41LCB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgIH0pLCB0cEdTLmdzYXAuc2V0KGlbYV0ucHJfYWN0aXZlX3NsaWRlLCB7CiAgICAgICAgICAgICAgICB6SW5kZXg6IDE4CiAgICAgICAgICAgIH0pLCBpW2FdLnByX25leHRfc2xpZGUgIT09IHQgJiYgaVthXS5wcl9uZXh0X3NsaWRlLmxlbmd0aCA+IDAgJiYgdHBHUy5nc2FwLnNldChpW2FdLnByX25leHRfc2xpZGUsIHsKICAgICAgICAgICAgICAgIGF1dG9BbHBoYTogMCwKICAgICAgICAgICAgICAgIHpJbmRleDogMjAKICAgICAgICAgICAgfSksIGlbYV0udG9ucGF1c2UgPSAhMSwgaVthXS5wcl9hY3RpdmVfa2V5ICE9PSB0ICYmIGkucmVtb3ZlVGhlTGF5ZXJzKGlbYV0ucHJfYWN0aXZlX3NsaWRlLCBhLCAhMCksIGlbYV0uZmlyc3RzdGFydCA9IDEsIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgaVthXS5wcl9hY3RpdmVfa2V5LCBkZWxldGUgaVthXS5wcl9wcm9jZXNzaW5nX2tleQogICAgICAgICAgICB9LCAyMDApKQogICAgICAgIH0sCiAgICAgICAgayA9IGZ1bmN0aW9uKGEsIHIpIHsKICAgICAgICAgICAgaWYgKGlbYV0gIT09IHQpCiAgICAgICAgICAgICAgICBpZiAoY2xlYXJUaW1lb3V0KGlbYV0ud2FpdFdpdGhTd2FwU2xpZGUpLCBpW2FdLnByX3Byb2Nlc3Npbmdfa2V5ID09PSB0IHx8ICEwICE9PSBpW2FdLmZpcnN0U2xpZGVTaG93bikgewogICAgICAgICAgICAgICAgICAgIGlmIChjbGVhclRpbWVvdXQoaVthXS53YWl0V2l0aFN3YXBTbGlkZSksIGlbYV0uc3RhcnRXaXRoU2xpZGVLZXkgIT09IHQgJiYgKGlbYV0ucHJfbmV4dF9rZXkgPSBpLmdldENvbWluZ1NsaWRlKGEsIGlbYV0uc3RhcnRXaXRoU2xpZGVLZXkpLm5pbmRleCwgZGVsZXRlIGlbYV0uc3RhcnRXaXRoU2xpZGVLZXkpLCBpW2FdLnByX2FjdGl2ZV9zbGlkZSA9IGUoaVthXS5zbGlkZXNbaVthXS5wcl9hY3RpdmVfa2V5XSksIGlbYV0ucHJfbmV4dF9zbGlkZSA9IGUoaVthXS5zbGlkZXNbaVthXS5wcl9uZXh0X2tleV0pLCBpW2FdLnByX25leHRfa2V5ID09IGlbYV0ucHJfYWN0aXZlX2tleSkgcmV0dXJuIGRlbGV0ZSBpW2FdLnByX25leHRfa2V5OwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gaS5nQShpW2FdLnByX25leHRfc2xpZGVbMF0sICJrZXkiKTsKICAgICAgICAgICAgICAgICAgICBpW2FdLnNiZ3Nbb10uYmd2aWQgJiYgaVthXS5zYmdzW29dLmJndmlkLmxlbmd0aCA+IDAgJiYgKGlbYV0udmlkZW9zID09IHQgfHwgaVthXS52aWRlb3NbaVthXS5zYmdzW29dLmJndmlkWzBdLmlkXSA9PT0gdCkgJiYgaS5tYW5hZ2VWaWRlb0xheWVyKGlbYV0uc2Jnc1tvXS5iZ3ZpZCwgYSwgbyksIGlbYV0ucHJfcHJvY2Vzc2luZ19rZXkgPSBpW2FdLnByX25leHRfa2V5LCBpW2FdLnByX2NhY2hlX3ByX25leHRfa2V5ID0gaVthXS5wcl9uZXh0X2tleSwgZGVsZXRlIGlbYV0ucHJfbmV4dF9rZXksIGlbYV0ucHJfbmV4dF9zbGlkZSAhPT0gdCAmJiBpW2FdLnByX25leHRfc2xpZGVbMF0gIT09IHQgJiYgaS5nQShpW2FdLnByX25leHRfc2xpZGVbMF0sICJoYWwiKSAhPT0gdCAmJiBpLnNBKGlbYV0ucHJfbmV4dF9zbGlkZVswXSwgInNvZmFjb3VudGVyIiwgaS5nQShpW2FdLnByX25leHRfc2xpZGVbMF0sICJzb2ZhY291bnRlciIpID09PSB0ID8gMSA6IHBhcnNlSW50KGkuZ0EoaVthXS5wcl9uZXh0X3NsaWRlWzBdLCAic29mYWNvdW50ZXIiKSwgMCkgKyAxKSwgaVthXS5zdG9wTG9vcCAmJiBpW2FdLnByX3Byb2Nlc3Npbmdfa2V5ID09IGlbYV0ubGFzdHNsaWRldG9zaG93IC0gMSAmJiAoaVthXS5wcm9ncmVzc0MuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogImhpZGRlbiIKICAgICAgICAgICAgICAgICAgICB9KSwgaVthXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub25zdG9wIiksIGlbYV0ubm9sb29wYW55bW9yZSA9IDEpLCBpW2FdLnByX25leHRfc2xpZGUuaW5kZXgoKSA9PT0gaVthXS5zbGlkZWFtb3VudCAtIDEgJiYgaVthXS5sb29wdG9nbyA+IDAgJiYgImRpc2FibGVkIiAhPT0gaVthXS5sb29wdG9nbyAmJiAoaVthXS5sb29wdG9nby0tLCBpW2FdLmxvb3B0b2dvIDw9IDAgJiYgKGlbYV0uc3RvcExvb3AgPSAhMCkpLCBpW2FdLnRvbnBhdXNlID0gITAsIGlbYV0uc2xpZGVJblN3YXBUaW1lciA9ICEwLCBpW2FdLmMudHJpZ2dlcigic3RvcHRpbWVyIiksICJvZmYiID09PSBpW2FdLnNwaW5uZXIgPyBpW2FdLmxvYWRlciAhPT0gdCAmJiAhMCA9PT0gaVthXS5sb2FkZXJWaXNpYmxlICYmIChpW2FdLmxvYWRlci5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAibm9uZSIKICAgICAgICAgICAgICAgICAgICB9KSwgaVthXS5sb2FkZXJWaXNpYmxlID0gITEpIDogaVthXS5sb2FkZXJ0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbYV0ubG9hZGVyICE9PSB0ICYmICEwICE9PSBpW2FdLmxvYWRlclZpc2libGUgJiYgKGlbYV0ubG9hZGVyLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAiYmxvY2siCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpW2FdLmxvYWRlclZpc2libGUgPSAhMCkKICAgICAgICAgICAgICAgICAgICB9LCAxMDApOwogICAgICAgICAgICAgICAgICAgIHZhciBzID0gImNhcm91c2VsIiA9PT0gaVthXS5zbGlkZXJUeXBlICYmICJhbGwiICE9PSBpW2FdLmxhenlUeXBlID8gaS5sb2FkVmlzaWJsZUNhcm91c2VsSXRlbXMoYSkgOiBpW2FdLnByX25leHRfc2xpZGVbMF07CiAgICAgICAgICAgICAgICAgICAgaS5sb2FkSW1hZ2VzKHMsIGEsIDEpLCBpLnByZUxvYWRBdWRpbyAmJiBpLnByZUxvYWRBdWRpbyhpW2FdLnByX25leHRfc2xpZGUsIGEsIDEpLCBpLndhaXRGb3JDdXJyZW50SW1hZ2VzKHMsIGEsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpW2FdLmZpcnN0U2xpZGVTaG93biA9ICEwLCBpW2FdLnByX25leHRfc2xpZGUuZmluZCgicnMtYmd2aWRlbyIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnByZXBhcmVDb3ZlcmVkVmlkZW8oYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkubG9hZFVwY29taW5nQ29udGVudChhKSwgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwoaVthXS5wcl9uZXh0X3NsaWRlLmZpbmQoInJzLXNiZyIpLCBhLCByKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaVthXS53YWl0V2l0aFN3YXBTbGlkZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgayhhLCByKQogICAgICAgICAgICAgICAgfSwgMTgpCiAgICAgICAgfSwKICAgICAgICBMID0gZnVuY3Rpb24oYSwgciwgbykgewogICAgICAgICAgICBpZiAoaVtyXSAhPT0gdCkgewogICAgICAgICAgICAgICAgaWYgKE8ociksIGlbcl0ucHJfYWN0aXZlX3NsaWRlID0gZShpW3JdLnNsaWRlc1tpW3JdLnByX2FjdGl2ZV9rZXldKSwgaVtyXS5wcl9uZXh0X3NsaWRlID0gZShpW3JdLnNsaWRlc1tpW3JdLnByX3Byb2Nlc3Npbmdfa2V5XSksIGlbcl0ucHJfYWN0aXZlX2JnID0gaVtyXS5wcl9hY3RpdmVfc2xpZGUuZmluZCgicnMtc2JnLXdyYXAiKSwgaVtyXS5wcl9uZXh0X2JnID0gaVtyXS5wcl9uZXh0X3NsaWRlLmZpbmQoInJzLXNiZy13cmFwIiksIGlbcl0udG9ucGF1c2UgPSAhMSwgY2xlYXJUaW1lb3V0KGlbcl0ubG9hZGVydGltZXIpLCBpW3JdLmxvYWRlciAhPT0gdCAmJiAhMCA9PT0gaVtyXS5sb2FkZXJWaXNpYmxlICYmICh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpW3JdLmxvYWRlci5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogIm5vbmUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSksIGlbcl0ubG9hZGVyVmlzaWJsZSA9ICExKSwgaVtyXS5vbkJlZm9yZVN3YXAgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlcjogciwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVJbmRleDogcGFyc2VJbnQoaVtyXS5wcl9hY3RpdmVfa2V5LCAwKSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlTElJbmRleDogaVtyXS5wcl9hY3RpdmVfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0U2xpZGVJbmRleDogcGFyc2VJbnQoaVtyXS5wcl9wcm9jZXNzaW5nX2tleSwgMCkgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0U2xpZGVMSUluZGV4OiBpW3JdLnByX3Byb2Nlc3Npbmdfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0c2xpZGU6IGlbcl0ucHJfbmV4dF9zbGlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGU6IGlbcl0ucHJfYWN0aXZlX3NsaWRlLAogICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50c2xpZGU6IGlbcl0ucHJfYWN0aXZlX3NsaWRlLAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2c2xpZGU6IGlbcl0ucHJfbGFzdHNob3duX2tleSAhPT0gdCA/IGlbcl0uc2xpZGVzW2lbcl0ucHJfbGFzdHNob3duX2tleV0gOiAiIgogICAgICAgICAgICAgICAgICAgIH0sIGlbcl0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlLm9uYmVmb3Jlc3dhcCIsIGlbcl0ub25CZWZvcmVTd2FwKSwgaVtyXS50cmFuc2l0aW9uID0gMSwgaVtyXS5zdG9wQnlWaWRlbyA9ICExLCBpW3JdLnByX25leHRfc2xpZGVbMF0gIT09IHQgJiYgaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJkdXJhdGlvbiIpICE9IHQgJiYgIiIgIT0gaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJkdXJhdGlvbiIpID8gaVtyXS5kdXJhdGlvbiA9IHBhcnNlSW50KGkuZ0EoaVtyXS5wcl9uZXh0X3NsaWRlWzBdLCAiZHVyYXRpb24iKSwgMCkgOiBpW3JdLmR1cmF0aW9uID0gaVtyXS5vcmlnY2QsIGlbcl0ucHJfbmV4dF9zbGlkZVswXSA9PT0gdCB8fCAidHJ1ZSIgIT0gaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJzc29wIikgJiYgITAgIT09IGkuZ0EoaVtyXS5wcl9uZXh0X3NsaWRlWzBdLCAic3NvcCIpID8gaVtyXS5zc29wID0gITEgOiBpW3JdLnNzb3AgPSAhMCwgaVtyXS5zYnRpbWVsaW5lLnNldCAmJiBpW3JdLnNidGltZWxpbmUuZml4ZWQgJiYgaS51cGRhdGVGaXhlZFNjcm9sbFRpbWVzKHIpLCBpW3JdLmMudHJpZ2dlcigibnVsbHRpbWVyIiksIGlbcl0uc2RpciA9IGlbcl0ucHJfcHJvY2Vzc2luZ19rZXkgPCBpW3JdLnByX2FjdGl2ZV9rZXkgPyAxIDogMCwgImFycm93IiA9PSBpW3JdLnNjX2luZGljYXRvciAmJiAoMCA9PSBpW3JdLnByX2FjdGl2ZV9rZXkgJiYgaVtyXS5wcl9wcm9jZXNzaW5nX2tleSA9PSBpW3JdLnNsaWRlYW1vdW50IC0gMSAmJiAoaVtyXS5zZGlyID0gMSksIGlbcl0ucHJfYWN0aXZlX2tleSA9PSBpW3JdLnNsaWRlYW1vdW50IC0gMSAmJiAwID09IGlbcl0ucHJfcHJvY2Vzc2luZ19rZXkgJiYgKGlbcl0uc2RpciA9IDApKSwgaVtyXS5sc2RpciA9IGlbcl0uc2RpciwgaVtyXS5wcl9hY3RpdmVfa2V5ICE9IGlbcl0ucHJfcHJvY2Vzc2luZ19rZXkgJiYgMSAhPSBpW3JdLmZpcnN0c3RhcnQgJiYgImNhcm91c2VsIiAhPT0gaVtyXS5zbGlkZXJUeXBlICYmIGkucmVtb3ZlVGhlTGF5ZXJzICYmIGkucmVtb3ZlVGhlTGF5ZXJzKGlbcl0ucHJfYWN0aXZlX3NsaWRlLCByKSwgMSAhPT0gaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJyc3BhdXNldGltZXJvbmNlIikgJiYgMSAhPT0gaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJyc3BhdXNldGltZXJhbHdheXMiKSA/IGlbcl0uYy50cmlnZ2VyKCJyZXN0YXJ0dGltZXIiKSA6IChpW3JdLnN0b3BCeVZpZGVvID0gITAsIGkudW5Ub2dnbGVTdGF0ZShpW3JdLnNsaWRlcnRvZ2dsZWRieSkpLCBpLnNBKGlbcl0ucHJfbmV4dF9zbGlkZVswXSwgInJzcGF1c2V0aW1lcm9uY2UiLCAwKSwgaVtyXS5wcl9uZXh0X3NsaWRlWzBdICE9PSB0ICYmIGkuc0EoaVtyXS5jWzBdLCAic2xpZGVhY3RpdmUiLCBpLmdBKGlbcl0ucHJfbmV4dF9zbGlkZVswXSwgImtleSIpKSwgImNhcm91c2VsIiA9PSBpW3JdLnNsaWRlclR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaVtyXS5tdGwgPSB0cEdTLmdzYXAudGltZWxpbmUoKSwgaS5wcmVwYXJlQ2Fyb3VzZWwociksIFIociksIGkudXBkYXRlU2xpZGVCR3MociksICEwICE9PSBpW3JdLmNhcm91c2VsLmNoZWNrRlZpZGVvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJrZXkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaVtyXS5zYmdzW3NdICE9PSB0ICYmIGlbcl0uc2Jnc1tzXS5iZ3ZpZCAhPT0gdCAmJiAwICE9PSBpW3JdLnNiZ3Nbc10uYmd2aWQubGVuZ3RoICYmIGkucGxheUJHVmlkZW8ociwgcyksIGlbcl0uY2Fyb3VzZWwuY2hlY2tGVmlkZW8gPSAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpW3JdLnRyYW5zaXRpb24gPSAwCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlbcl0ucHJfbGFzdHNob3duX2tleSA9IGlbcl0ucHJfbGFzdHNob3duX2tleSA9PT0gdCA/IGlbcl0ucHJfbmV4dF9rZXkgIT09IHQgPyBpW3JdLnByX25leHRfa2V5IDogaVtyXS5wcl9wcm9jZXNzaW5nX2tleSAhPT0gdCA/IGlbcl0ucHJfcHJvY2Vzc2luZ19rZXkgOiBpW3JdLnByX2FjdGl2ZV9rZXkgIT09IHQgPyBpW3JdLnByX2FjdGl2ZV9rZXkgOiBpW3JdLnByX2xhc3RzaG93bl9rZXkgOiBpW3JdLnByX2xhc3RzaG93bl9rZXksIGlbcl0ubXRsID0gdHBHUy5nc2FwLnRpbWVsaW5lKHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF1c2VkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgaVtyXS5wcl9uZXh0X2tleSAhPT0gdCA/IGkuYW5pbWF0ZVRoZUxheWVycyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlOiBpW3JdLnByX25leHRfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICBpZDogciwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInByZXNldCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlcjogInN3YXBTbGlkZVByb2dyZXNzXzEiCiAgICAgICAgICAgICAgICAgICAgfSkgOiBpW3JdLnByX3Byb2Nlc3Npbmdfa2V5ICE9PSB0ID8gaS5hbmltYXRlVGhlTGF5ZXJzKHsKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGU6IGlbcl0ucHJfcHJvY2Vzc2luZ19rZXksCiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAicHJlc2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVyOiAic3dhcFNsaWRlUHJvZ3Jlc3NfMiIKICAgICAgICAgICAgICAgICAgICB9KSA6IGlbcl0ucHJfYWN0aXZlX2tleSAhPT0gdCAmJiBpLmFuaW1hdGVUaGVMYXllcnMoewogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogaVtyXS5wcl9hY3RpdmVfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICBpZDogciwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInByZXNldCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlcjogInN3YXBTbGlkZVByb2dyZXNzXzMiCiAgICAgICAgICAgICAgICAgICAgfSksIDEgPT0gaVtyXS5maXJzdHN0YXJ0ICYmIChpW3JdLnByX2FjdGl2ZV9zbGlkZVswXSAhPT0gdCAmJiB0cEdTLmdzYXAuc2V0KGlbcl0ucHJfYWN0aXZlX3NsaWRlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9BbHBoYTogMAogICAgICAgICAgICAgICAgICAgIH0pLCBpW3JdLmZpcnN0c3RhcnQgPSAwKSwgaVtyXS5wcl9hY3RpdmVfc2xpZGVbMF0gIT09IHQgJiYgdHBHUy5nc2FwLnNldChpW3JdLnByX2FjdGl2ZV9zbGlkZSwgewogICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDE4CiAgICAgICAgICAgICAgICAgICAgfSksIGlbcl0ucHJfbmV4dF9zbGlkZVswXSAhPT0gdCAmJiB0cEdTLmdzYXAuc2V0KGlbcl0ucHJfbmV4dF9zbGlkZSwgewogICAgICAgICAgICAgICAgICAgICAgICBhdXRvQWxwaGE6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogMjAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBzID0gaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJrZXkiKTsKICAgICAgICAgICAgICAgICAgICBpW3JdLnNiZ3Nbc10uYWx0ID09PSB0ICYmIChpW3JdLnNiZ3Nbc10uYWx0ID0gaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJhbHR0cmFucyIpIHx8ICExLCBpW3JdLnNiZ3Nbc10uYWx0ID0gITEgIT09IGlbcl0uc2Jnc1tzXS5hbHQgJiYgaVtyXS5zYmdzW3NdLmFsdC5zcGxpdCgiLCIpLCBpW3JdLnNiZ3Nbc10uYWx0SW5kZXggPSAwLCBpW3JdLnNiZ3Nbc10uYWx0TGVuID0gITEgIT09IGlbcl0uc2Jnc1tzXS5hbHQgPyBpW3JdLnNiZ3Nbc10uYWx0Lmxlbmd0aCA6IDApOwogICAgICAgICAgICAgICAgICAgIGlbcl0uZmlyc3RTbGlkZUFuaW1Eb25lID09PSB0ICYmIGlbcl0uZmFuaW0gIT09IHQgJiYgITEgIT09IGlbcl0uZmFuaW0gfHwgKGlbcl0uc2Jnc1tzXS5zbGlkZWFuaW1hdGlvbiA9PT0gdCB8fCBpW3JdLnNiZ3Nbc10uc2xpZGVhbmltYXRpb25SZWJ1aWxkIHx8IChpW3JdLnNiZ3Nbc10ucmFuZG9tICE9PSB0ICYmIGkuU0xUUiAhPT0gdCB8fCBpW3JdLnNiZ3Nbc10uYWx0TGVuID4gMCAmJiBpLlNMVFIpKTsKICAgICAgICAgICAgICAgICAgICBpW3JdLnNiZ3Nbc10uc2xpZGVhbmltYXRpb24gPSBpW3JdLmZpcnN0U2xpZGVBbmltRG9uZSA9PT0gdCAmJiBpW3JdLmZhbmltICE9PSB0ICYmICExICE9PSBpW3JdLmZhbmltID8gaS5jb252ZXJ0U2xpZGVBbmltVmFscyhlLmV4dGVuZCghMCwge30sIGkuZ2V0U2xpZGVBbmltX0VtcHR5T2JqZWN0KCksIGlbcl0uZmFuaW0pKSA6IGlbcl0uc2Jnc1tzXS5zbGlkZWFuaW1hdGlvbiA9PT0gdCB8fCBpW3JdLnNiZ3Nbc10uc2xpZGVhbmltYXRpb25SZWJ1aWxkID8gaS5nZXRTbGlkZUFuaW1hdGlvbk9iaihyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW06IGkuZ0EoaVtyXS5wcl9uZXh0X3NsaWRlWzBdLCAiYW5pbSIpLAogICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGkuZ0EoaVtyXS5wcl9uZXh0X3NsaWRlWzBdLCAiZmlsdGVyIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGluOiBpLmdBKGlbcl0ucHJfbmV4dF9zbGlkZVswXSwgImluIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG91dDogaS5nQShpW3JdLnByX25leHRfc2xpZGVbMF0sICJvdXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgZDM6IGkuZ0EoaVtyXS5wcl9uZXh0X3NsaWRlWzBdLCAiZDMiKQogICAgICAgICAgICAgICAgICAgIH0sIHMpIDogaVtyXS5zYmdzW3NdLnJhbmRvbSAhPT0gdCAmJiBpLlNMVFIgIT09IHQgPyBpLmNvbnZlcnRTbGlkZUFuaW1WYWxzKGUuZXh0ZW5kKCEwLCB7fSwgaS5nZXRTbGlkZUFuaW1fRW1wdHlPYmplY3QoKSwgaS5nZXRBbmltT2JqZWN0QnlLZXkoaS5nZXRSYW5kb21TbGlkZVRyYW5zKGlbcl0uc2Jnc1tzXS5yYW5kb20ucm5kbWFpbiwgaVtyXS5zYmdzW3NdLnJhbmRvbS5ybmRncnAsIGkuU0xUUiksIGkuU0xUUikpKSA6IGlbcl0uc2Jnc1tzXS5hbHRMZW4gPiAwICYmIGkuU0xUUiAhPT0gdCA/IGkuY29udmVydFNsaWRlQW5pbVZhbHMoZS5leHRlbmQoITAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWx0QW5pbTogaVtyXS5zYmdzW3NdLmFsdFtpW3JdLnNiZ3Nbc10uYWx0SW5kZXhdCiAgICAgICAgICAgICAgICAgICAgfSwgaS5nZXRTbGlkZUFuaW1fRW1wdHlPYmplY3QoKSwgaS5nZXRBbmltT2JqZWN0QnlLZXkoaVtyXS5zYmdzW3NdLmFsdFtpW3JdLnNiZ3Nbc10uYWx0SW5kZXhdLCBpLlNMVFIpKSkgOiBpW3JdLnNiZ3Nbc10uc2xpZGVhbmltYXRpb24sIGlbcl0uc2Jnc1tzXS5hbHRMZW4gPiAwICYmIChpW3JdLnNiZ3Nbc10uZmlyc3RTbGlkZUFuaW1Eb25lICE9PSB0ID8gKGlbcl0uc2Jnc1tzXS5hbHRJbmRleCsrLCBpW3JdLnNiZ3Nbc10uYWx0SW5kZXggPSBpW3JdLnNiZ3Nbc10uYWx0SW5kZXggPj0gaVtyXS5zYmdzW3NdLmFsdExlbiA/IDAgOiBpW3JdLnNiZ3Nbc10uYWx0SW5kZXgpIDogKGlbcl0uc2Jnc1tzXS5maXJzdFNsaWRlQW5pbURvbmUgPSAhMCwgaS5TTFRSID09PSB0ICYmIGkuU0xUUl9sb2FkaW5nID09PSB0ICYmIGkubG9hZFNsaWRlQW5pbUxpYnJhcnkocikpKSwgaVtyXS5zYmdzW3NdLmN1cnJlbnRTdGF0ZSA9ICJhbmltYXRpbmciLCBpLmFuaW1hdGVTbGlkZShyLCBpW3JdLnNiZ3Nbc10uc2xpZGVhbmltYXRpb24pLCBpW3JdLmZpcnN0U2xpZGVBbmltRG9uZSA9PT0gdCAmJiBpW3JdLmZhbmltICE9PSB0ICYmICExICE9PSBpW3JdLmZhbmltICYmIChpW3JdLnNiZ3Nbc10uc2xpZGVhbmltYXRpb25SZWJ1aWxkID0gITApLCBpW3JdLmZpcnN0U2xpZGVBbmltRG9uZSA9ICEwLCBpW3JdLnByX25leHRfYmcuZGF0YSgicGFuem9vbSIpICE9PSB0ICYmIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBpLmdBKGlbcl0ucHJfbmV4dF9zbGlkZVswXSwgImtleSIpOwogICAgICAgICAgICAgICAgICAgICAgICBpLnN0YXJ0UGFuWm9vbShpW3JdLnByX25leHRfYmcsIHIsIDAsIGkuZ2V0U2xpZGVJbmRleChyLCBlKSwgImZpcnN0IiwgZSkKICAgICAgICAgICAgICAgICAgICB9KSwgaVtyXS5tdGwucGF1c2UoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaS5hbmltYXRlVGhlTGF5ZXJzID8gImNhcm91c2VsIiA9PT0gaVtyXS5zbGlkZXJUeXBlID8gKCExICE9PSBpW3JdLmNhcm91c2VsLnNob3dMYXllcnNBbGxUaW1lICYmIChpW3JdLmNhcm91c2VsLmFsbExheWVyc1N0YXJ0ZWQgPyBpLmFuaW1hdGVUaGVMYXllcnMoewogICAgICAgICAgICAgICAgICAgIHNsaWRlOiAiaW5kaXZpZHVhbCIsCiAgICAgICAgICAgICAgICAgICAgaWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgbW9kZTogInJlYnVpbGQiLAogICAgICAgICAgICAgICAgICAgIGNhbGxlcjogInN3YXBTbGlkZVByb2dyZXNzXzUiCiAgICAgICAgICAgICAgICB9KSA6IGkuYW5pbWF0ZVRoZUxheWVycyh7CiAgICAgICAgICAgICAgICAgICAgc2xpZGU6ICJpbmRpdmlkdWFsIiwKICAgICAgICAgICAgICAgICAgICBpZDogciwKICAgICAgICAgICAgICAgICAgICBtb2RlOiAic3RhcnQiLAogICAgICAgICAgICAgICAgICAgIGNhbGxlcjogInN3YXBTbGlkZVByb2dyZXNzXzQiCiAgICAgICAgICAgICAgICB9KSwgaVtyXS5jYXJvdXNlbC5hbGxMYXllcnNTdGFydGVkID0gITApLCAwICE9PSBpW3JdLmZpcnN0c3RhcnQgPyBpLmFuaW1hdGVUaGVMYXllcnMoewogICAgICAgICAgICAgICAgICAgIHNsaWRlOiAwLAogICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgIG1vZGU6ICJzdGFydCIsCiAgICAgICAgICAgICAgICAgICAgY2FsbGVyOiAic3dhcFNsaWRlUHJvZ3Jlc3NfNiIKICAgICAgICAgICAgICAgIH0pIDogITAgIT09IG8gJiYgaS5hbmltYXRlVGhlTGF5ZXJzKHsKICAgICAgICAgICAgICAgICAgICBzbGlkZTogaVtyXS5wcl9uZXh0X2tleSAhPT0gdCA/IGlbcl0ucHJfbmV4dF9rZXkgOiBpW3JdLnByX3Byb2Nlc3Npbmdfa2V5ICE9PSB0ID8gaVtyXS5wcl9wcm9jZXNzaW5nX2tleSA6IGlbcl0ucHJfYWN0aXZlX2tleSwKICAgICAgICAgICAgICAgICAgICBpZDogciwKICAgICAgICAgICAgICAgICAgICBtb2RlOiAic3RhcnQiLAogICAgICAgICAgICAgICAgICAgIGNhbGxlcjogInN3YXBTbGlkZVByb2dyZXNzXzciCiAgICAgICAgICAgICAgICB9KSwgaVtyXS5maXJzdHN0YXJ0ID0gMCkgOiBpLmFuaW1hdGVUaGVMYXllcnMoewogICAgICAgICAgICAgICAgICAgIHNsaWRlOiBpW3JdLnByX25leHRfa2V5ICE9PSB0ID8gaVtyXS5wcl9uZXh0X2tleSA6IGlbcl0ucHJfcHJvY2Vzc2luZ19rZXkgIT09IHQgPyBpW3JdLnByX3Byb2Nlc3Npbmdfa2V5IDogaVtyXS5wcl9hY3RpdmVfa2V5LAogICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgIG1vZGU6ICJzdGFydCIsCiAgICAgICAgICAgICAgICAgICAgY2FsbGVyOiAic3dhcFNsaWRlUHJvZ3Jlc3NfOCIKICAgICAgICAgICAgICAgIH0pIDogaVtyXS5tdGwgIT0gdCAmJiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlbcl0ubXRsLnJlc3VtZSgpCiAgICAgICAgICAgICAgICB9LCAxOCksICJjYXJvdXNlbCIgIT09IGlbcl0uc2xpZGVyVHlwZSAmJiB0cEdTLmdzYXAudG8oaVtyXS5wcl9uZXh0X3NsaWRlLCAuMDAxLCB7CiAgICAgICAgICAgICAgICAgICAgYXV0b0FscGhhOiAxCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBSID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICBpZiAoaVtyXSAhPT0gdCkgewogICAgICAgICAgICAgICAgaWYgKCJkb25lIiAhPT0gaS5SU19zd2FwTGlzdFtyXSkgewogICAgICAgICAgICAgICAgICAgIGkuUlNfc3dhcExpc3Rbcl0gPSAiZG9uZSI7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLmluQXJyYXkociwgaS5SU19zd2FwcGluZyk7CiAgICAgICAgICAgICAgICAgICAgaS5SU19zd2FwcGluZy5zcGxpY2UobywgMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpW3JdLmZpcnN0U2xpZGVBdmFpbGFibGUgPT09IHQgJiYgKGlbcl0uZmlyc3RTbGlkZUF2YWlsYWJsZSA9ICEwLCB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAiaGVybyIgIT09IGlbcl0uc2xpZGVyVHlwZSAmJiBpLmNyZWF0ZU5hdmlnYXRpb24gJiYgaVtyXS5uYXZpZ2F0aW9uLnVzZSAmJiAhMCAhPT0gaVtyXS5uYXZpZ2F0aW9uLmNyZWF0ZU5hdmlnYXRpb25Eb25lICYmIGkuY3JlYXRlTmF2aWdhdGlvbihyKQogICAgICAgICAgICAgICAgICAgIH0pKSwgImNhcm91c2VsIiA9PT0gaVtyXS5zbGlkZXJUeXBlICYmIHRwR1MuZ3NhcC50byhpW3JdLmNhcm91c2VsLndyYXAsIDEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICAgICAgICAgIH0pLCBpW3JdLnByX2FjdGl2ZV9rZXkgPSBpW3JdLnByX3Byb2Nlc3Npbmdfa2V5ICE9PSB0ID8gaVtyXS5wcl9wcm9jZXNzaW5nX2tleSA6IGlbcl0ucHJfYWN0aXZlX2tleSwgZGVsZXRlIGlbcl0ucHJfcHJvY2Vzc2luZ19rZXksICJzY3JvbGwiICE9IGlbcl0ucGFyYWxsYXgudHlwZSAmJiAic2Nyb2xsK21vdXNlIiAhPSBpW3JdLnBhcmFsbGF4LnR5cGUgJiYgIm1vdXNlK3Njcm9sbCIgIT0gaVtyXS5wYXJhbGxheC50eXBlIHx8IChpW3JdLmxhc3RzY3JvbGx0b3AgPSAtOTk5LCBpLmdlbmVyYWxPYnNlcnZlcihhKSksIGlbcl0ubXRsZGlmZiA9IGlbcl0ubXRsLnRpbWUoKSwgZGVsZXRlIGlbcl0ubXRsLCBpW3JdLnByX2FjdGl2ZV9rZXkgIT09IHQpIHsKICAgICAgICAgICAgICAgICAgICBpLmdBKGlbcl0uc2xpZGVzW2lbcl0ucHJfYWN0aXZlX2tleV0sICJzbG9vcCIpICE9PSB0ICYmIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlbZV0gIT09IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbZV0uc2xvb3BzID0gaVtlXS5zbG9vcHMgPT09IHQgPyB7fSA6IGlbZV0uc2xvb3BzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBpLmdBKGlbZV0uc2xpZGVzW2lbZV0ucHJfYWN0aXZlX2tleV0sICJrZXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaVtlXS5zbG9vcHNbYV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IDI1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IDQ1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6ICJ1bmxpbWl0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGkuZ0EoaVtlXS5zbGlkZXNbaVtlXS5wcl9hY3RpdmVfa2V5XSwgInNsb29wIikuc3BsaXQoIjsiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzIGluIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG9bc10uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoblswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnMgPSBwYXJzZUludChuWzFdLCAwKSAvIDFlMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZSA9IHBhcnNlSW50KG5bMV0sIDApIC8gMWUzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yID0gblsxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yID0gInVubGltaXRlZCIgPT09IHIuciA/IC0xIDogcGFyc2VJbnQoci5yLCAwKSwgaVtlXS5zbG9vcHNbYV0gPSByLCByLmtleSA9IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuY3QgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogci5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByLnRsID0gdHBHUy5nc2FwLnRpbWVsaW5lKHt9KSwgci50aW1lciA9IHRwR1MuZ3NhcC5mcm9tVG8oci5jdCwgci5lIC0gci5zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogci5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogci5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcGVhdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gaVtlXS5sYXllcnNbci5rZXldKSBpW2VdLmxheWVyc1tyLmtleV0uaGFzT3duUHJvcGVydHkoYSkgJiYgaVtlXS5fTFthXS50aW1lbGluZS5wbGF5KHIucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gaVtlXS5wcm9ncmVzc0M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gIT09IHQgJiYgb1swXSAhPT0gdCAmJiBvWzBdLnR3ZWVuICE9PSB0ICYmIG9bMF0udHdlZW4udGltZShyLnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZTogZnVuY3Rpb24oKSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5yZXBlYXQoci5yKSwgci50bC5hZGQoci50aW1lciwgci5zKSwgci50bC50aW1lKGlbZV0ubXRsZGlmZikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0ociksIGkuc0EoaVtyXS5zbGlkZXNbaVtyXS5hY3RpdmVSU1NsaWRlXSwgImlzYWN0aXZlc2xpZGUiLCAhMSksIGlbcl0uYWN0aXZlUlNTbGlkZSA9IGlbcl0ucHJfYWN0aXZlX2tleSwgaS5zQShpW3JdLnNsaWRlc1tpW3JdLmFjdGl2ZVJTU2xpZGVdLCAiaXNhY3RpdmVzbGlkZSIsICEwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGkuZ0EoaVtyXS5zbGlkZXNbaVtyXS5wcl9hY3RpdmVfa2V5XSwgImtleSIpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5nQShpW3JdLnNsaWRlc1tpW3JdLnByX2xhc3RzaG93bl9rZXldLCAia2V5Iik7CiAgICAgICAgICAgICAgICAgICAgaS5zQShpW3JdLmNbMF0sICJzbGlkZWFjdGl2ZSIsIHMpLCBuICE9PSB0ICYmIGlbcl0ucGFuem9vbVRMcyAhPT0gdCAmJiBpW3JdLnBhbnpvb21UTHNbaS5nZXRTbGlkZUluZGV4KHIsIG4pXSAhPT0gdCAmJiAoImNhcm91c2VsIiA9PT0gaVtyXS5zbGlkZXJUeXBlID8gKGlbcl0ucGFuem9vbVRMc1tpLmdldFNsaWRlSW5kZXgociwgbildLnRpbWVTY2FsZSgzKSwgaVtyXS5wYW56b29tVExzW2kuZ2V0U2xpZGVJbmRleChyLCBuKV0ucmV2ZXJzZSgpKSA6IGlbcl0ucGFuem9vbVRMc1tpLmdldFNsaWRlSW5kZXgociwgbildLnBhdXNlKCkpLCBpW3JdLnByX25leHRfYmcuZGF0YSgicGFuem9vbSIpICE9PSB0ICYmIChpW3JdLnBhbnpvb21UTHMgIT09IHQgJiYgaVtyXS5wYW56b29tVExzW2kuZ2V0U2xpZGVJbmRleChyLCBzKV0gIT09IHQgPyAoaVtyXS5wYW56b29tVExzW2kuZ2V0U2xpZGVJbmRleChyLCBzKV0udGltZVNjYWxlKDEpLCBpW3JdLnBhbnpvb21UTHNbaS5nZXRTbGlkZUluZGV4KHIsIHMpXS5wbGF5KCkpIDogaS5zdGFydFBhblpvb20oaVtyXS5wcl9uZXh0X2JnLCByLCAwLCBpLmdldFNsaWRlSW5kZXgociwgcyksICJwbGF5IiwgcykpOwogICAgICAgICAgICAgICAgICAgIHZhciBkID0gewogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXI6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW5kZXg6IHBhcnNlSW50KGlbcl0ucHJfYWN0aXZlX2tleSwgMCkgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUxJSW5kZXg6IGlbcl0ucHJfYWN0aXZlX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGU6IGlbcl0ucHJfbmV4dF9zbGlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudHNsaWRlOiBpW3JdLnByX25leHRfc2xpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTbGlkZUluZGV4OiBpW3JdLnByX2xhc3RzaG93bl9rZXkgIT09IHQgJiYgcGFyc2VJbnQoaVtyXS5wcl9sYXN0c2hvd25fa2V5LCAwKSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTbGlkZUxJSW5kZXg6IGlbcl0ucHJfbGFzdHNob3duX2tleSAhPT0gdCAmJiBwYXJzZUludChpW3JdLnByX2xhc3RzaG93bl9rZXksIDApLAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2U2xpZGU6IGlbcl0ucHJfbGFzdHNob3duX2tleSAhPT0gdCAmJiBpW3JdLnNsaWRlc1tpW3JdLnByX2xhc3RzaG93bl9rZXldCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAoaVtyXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub25jaGFuZ2UiLCBkKSwgaVtyXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub25hZnRlcnN3YXAiLCBkKSwgaVtyXS5kZWVwTGlua0xpc3RlbmVyIHx8IGlbcl0uZW5hYmxlRGVlcGxpbmtIYXNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gaS5nQShpW3JdLnNsaWRlc1tpW3JdLnByX2FjdGl2ZV9rZXldLCAiZGVlcGxpbmsiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbCAhPT0gdCAmJiBsLmxlbmd0aCA+IDAgJiYgKGlbcl0uaWdub3JlRGVlcGxpbmtDaGFuZ2UgPSAhMCwgd2luZG93LmxvY2F0aW9uLmhhc2ggPSBpLmdBKGlbcl0uc2xpZGVzW2lbcl0ucHJfYWN0aXZlX2tleV0sICJkZWVwbGluayIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpW3JdLnByX2xhc3RzaG93bl9rZXkgPSBpW3JdLnByX2FjdGl2ZV9rZXksIGlbcl0uc3RhcnRXaXRoU2xpZGUgIT09IHQgJiYgImRvbmUiICE9PSBpW3JdLnN0YXJ0V2l0aFNsaWRlICYmICJjYXJvdXNlbCIgPT09IGlbcl0uc2xpZGVyVHlwZSAmJiAoaVtyXS5maXJzdHN0YXJ0ID0gMCksIGlbcl0uZHVyaW5nc2xpZGVjaGFuZ2UgPSAhMSwgaVtyXS5wcl9hY3RpdmVfc2xpZGUubGVuZ3RoID4gMCAmJiAwICE9IGkuZ0EoaVtyXS5wcl9hY3RpdmVfc2xpZGVbMF0sICJoYWwiKSAmJiBpLmdBKGlbcl0ucHJfYWN0aXZlX3NsaWRlWzBdLCAiaGFsIikgPD0gaS5nQShpW3JdLnByX2FjdGl2ZV9zbGlkZVswXSwgInNvZmFjb3VudGVyIikgJiYgaVtyXS5jLnJldnJlbW92ZXNsaWRlKGlbcl0ucHJfYWN0aXZlX3NsaWRlLmluZGV4KCkpOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gaVtyXS5wcl9wcm9jZXNzaW5nX2tleSB8fCBpW3JdLnByX2FjdGl2ZV9rZXkgfHwgMDsKICAgICAgICAgICAgICAgICAgICBpW3JdLnJvd3pvbmVzICE9IHQgJiYgKGMgPSBjID4gaVtyXS5yb3d6b25lcy5sZW5ndGggPyBpW3JdLnJvd3pvbmVzLmxlbmd0aCA6IGMpLCAoaVtyXS5yb3d6b25lcyAhPSB0ICYmIGlbcl0ucm93em9uZXMubGVuZ3RoID4gMCAmJiBpW3JdLnJvd3pvbmVzW2NdICE9IHQgJiYgYyA+PSAwICYmIGMgPD0gaVtyXS5yb3d6b25lcy5sZW5ndGggJiYgaVtyXS5yb3d6b25lc1tjXS5sZW5ndGggPiAwIHx8IGkud2luSCA8IGlbcl0ubW9kdWxlLmhlaWdodCkgJiYgaS51cGRhdGVEaW1zKHIpLCBkZWxldGUgaVtyXS5zY19pbmRpY2F0b3IsIGRlbGV0ZSBpW3JdLnNjX2luZGljYXRvcl9kaXIsIGlbcl0uZmlyc3RMZXRJdEZyZWUgPT09IHQgJiYgKGkuZ2VuZXJhbE9ic2VydmVyKGEpLCBpW3JdLmZpcnN0TGV0SXRGcmVlID0gITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIE8gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciByID0gaVthXS5wcm9ncmVzc0JhcjsKICAgICAgICAgICAgaWYgKGlbYV0ucHJvZ3Jlc3NDID09PSB0IHx8IDAgPT0gaVthXS5wcm9ncmVzc0MubGVuZ3RoKQogICAgICAgICAgICAgICAgaWYgKGlbYV0ucHJvZ3Jlc3NDID0gZSgnPHJzLXByb2dyZXNzIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjsiPjwvcnMtcHJvZ3Jlc3M+JyksICJob3Jpem9udGFsIiA9PT0gci5zdHlsZSB8fCAidmVydGljYWwiID09PSByLnN0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJtb2R1bGUiID09PSByLmJhc2Vkb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9ICIiLCBzID0gMDsgcyA8IGlbYV0uc2xpZGVhbW91bnQ7IHMrKykgbyArPSAiPHJzLXByb2dyZXNzLWJhcj48L3JzLXByb2dyZXNzLWJhcj4iOwogICAgICAgICAgICAgICAgICAgICAgICBvICs9ICI8cnMtcHJvZ3Jlc3MtYmdzPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyA9IDA7IHMgPCBpW2FdLnNsaWRlYW1vdW50OyBzKyspIG8gKz0gIjxycy1wcm9ncmVzcy1iZz48L3JzLXByb2dyZXNzLWJnPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvICs9ICI8L3JzLXByb2dyZXNzLWJncz4iLCAibm9nYXAiICE9PSByLmdhcHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgPSAwOyBzIDwgaVthXS5zbGlkZWFtb3VudDsgcysrKSBvICs9ICI8cnMtcHJvZ3Jlc3MtZ2FwPjwvcnMtcHJvZ3Jlc3MtZ2FwPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbYV0ucHJvZ3Jlc3NDWzBdLmlubmVySFRNTCA9IG8sICEwID09PSBpW2FdLm5vRGV0YWNoICYmIGlbYV0uYy5hcHBlbmQoaVthXS5wcm9ncmVzc0MpLCBpW2FdLnByb2dyZXNzQ0JhckJHUyA9IGkuZ2V0QnlUYWcoaVthXS5wcm9ncmVzc0NbMF0sICJSUy1QUk9HUkVTUy1CRyIpLCBpW2FdLnByb2dyZXNzQ0JhckdBUFMgPSBpLmdldEJ5VGFnKGlbYV0ucHJvZ3Jlc3NDWzBdLCAiUlMtUFJPR1JFU1MtR0FQIiksICJub2dhcCIgIT09IHIuZ2FwdHlwZSAmJiB0cEdTLmdzYXAuc2V0KGlbYV0ucHJvZ3Jlc3NDQmFyR0FQUywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiByLmdhcGNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiAiZ2FwYmciID09PSByLmdhcHR5cGUgPyAxNyA6IDI3CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0cEdTLmdzYXAuc2V0KGlbYV0ucHJvZ3Jlc3NDQmFyQkdTLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHIuYmdjb2xvcgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpW2FdLnByb2dyZXNzQ1swXS5pbm5lckhUTUwgPSAiPHJzLXByb2dyZXNzLWJhcj48L3JzLXByb2dyZXNzLWJhcj4iLCAhMCA9PT0gaVthXS5ub0RldGFjaCAmJiBpW2FdLmMuYXBwZW5kKGlbYV0ucHJvZ3Jlc3NDKTsKICAgICAgICAgICAgICAgICAgICBpW2FdLnByb2dyZXNzQ0JhcklubmVyID0gaS5nZXRCeVRhZyhpW2FdLnByb2dyZXNzQ1swXSwgIlJTLVBST0dSRVNTLUJBUiIpLCB0cEdTLmdzYXAuc2V0KGlbYV0ucHJvZ3Jlc3NDQmFySW5uZXIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogci5jb2xvcgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaVthXS5wcm9ncmVzc0NbMF0uaW5uZXJIVE1MID0gJzxjYW52YXMgd2lkdGg9IicgKyAyICogci5yYWRpdXMgKyAnIiBoZWlnaHQ9IicgKyAyICogci5yYWRpdXMgKyAnIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGUiIGNsYXNzPSJycy1wcm9ncmVzcy1iYXIiPjwvY2FudmFzPicsICEwID09PSBpW2FdLm5vRGV0YWNoICYmIGlbYV0uYy5hcHBlbmQoaVthXS5wcm9ncmVzc0MpLCBpW2FdLnByb2dyZXNzQ0JhcklubmVyID0gaVthXS5wcm9ncmVzc0NbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgicnMtcHJvZ3Jlc3MtYmFyIilbMF0sIGlbYV0ucHJvZ3Jlc3NCQ2FudmFzID0gaVthXS5wcm9ncmVzc0NCYXJJbm5lci5nZXRDb250ZXh0KCIyZCIpLCBpW2FdLnByb2dyZXNzQmFyLmRlZ3JlZSA9ICJjdyIgPT09IGlbYV0ucHJvZ3Jlc3NCYXIuc3R5bGUgPyAzNjAgOiAwLCBJKGEpOwogICAgICAgICAgICBpZiAoITAgIT09IGlbYV0ubm9EZXRhY2ggJiYgaVthXS5wcm9ncmVzc0MuZGV0YWNoKCksIGlbYV0ucHJvZ3Jlc3NCYXIudmlzaWJpbGl0eVtpW2FdLmxldmVsXSAmJiAxICE9IGlbYV0ucHJvZ3Jlc3NCYXIuZGlzYWJsZVByb2dyZXNzQmFyKQogICAgICAgICAgICAgICAgaWYgKCJob3Jpem9udGFsIiA9PT0gci5zdHlsZSB8fCAidmVydGljYWwiID09PSByLnN0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGQsIGwgPSBpW2FdLnNsaWRlYW1vdW50IC0gMTsKICAgICAgICAgICAgICAgICAgICBpZiAoImhvcml6b250YWwiID09PSByLnN0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gImdyaWQiID09PSByLmFsaWduYnkgPyBpW2FdLmdyaWR3aWR0aFtpW2FdLmxldmVsXSA6IGlbYV0ubW9kdWxlLndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5jZWlsKGMgLyBpW2FdLnNsaWRlYW1vdW50KSwgZCA9IE1hdGguY2VpbCgoYyAtIGwgKiByLmdhcHNpemUpIC8gaVthXS5zbGlkZWFtb3VudCksIHRwR1MuZ3NhcC5zZXQoaVthXS5wcm9ncmVzc0MsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICJ2aXNpYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogInRvcCIgPT09IHIudmVydGljYWwgPyByLnkgKyAoImdyaWQiID09PSByLmFsaWduYnkgJiYgaVthXS5ncmlkT2Zmc2V0SGVpZ2h0ICE9PSB0ID8gTWF0aC5tYXgoMCwgaVthXS5ncmlkT2Zmc2V0SGVpZ2h0KSA6IDApIDogImNlbnRlciIgPT09IHIudmVydGljYWwgPyAiNTAlIiA6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogInRvcCIgPT09IHIudmVydGljYWwgfHwgImNlbnRlciIgPT09IHIudmVydGljYWwgPyAiYXV0byIgOiByLnkgKyAoImdyaWQiID09PSByLmFsaWduYnkgJiYgaVthXS5ncmlkT2Zmc2V0SGVpZ2h0ICE9PSB0ID8gTWF0aC5tYXgoMCwgaVthXS5ncmlkT2Zmc2V0SGVpZ2h0KSA6IDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogImxlZnQiID09PSByLmhvcml6b250YWwgJiYgImdyaWQiID09PSByLmFsaWduYnkgJiYgaVthXS5ncmlkT2Zmc2V0V2lkdGggIT09IHQgPyBNYXRoLm1heCgwLCBpW2FdLmdyaWRPZmZzZXRXaWR0aCkgOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogInJpZ2h0IiA9PT0gci5ob3Jpem9udGFsICYmICJncmlkIiA9PT0gci5hbGlnbmJ5ICYmIGlbYV0uZ3JpZE9mZnNldFdpZHRoICE9PSB0ID8gTWF0aC5tYXgoMCwgaVthXS5ncmlkT2Zmc2V0V2lkdGgpIDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogImNlbnRlciIgPT09IHIudmVydGljYWwgPyByLnkgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByLnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICJtb2R1bGUiID09PSByLmJhc2Vkb24gPyAidHJhbnNwYXJlbnQiIDogci5iZ2NvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAiYm90dG9tIiA9PT0gci52ZXJ0aWNhbCA/IDAgOiAidG9wIiA9PT0gci52ZXJ0aWNhbCA/IDAgOiBwYXJzZUludChyLnNpemUsIDApIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiZ3JpZCIgPT09IHIuYWxpZ25ieSA/IGlbYV0uZ3JpZHdpZHRoW2lbYV0ubGV2ZWxdIDogIjEwMCUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0cEdTLmdzYXAuc2V0KGlbYV0ucHJvZ3Jlc3NDQmFySW5uZXIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6ICJtb2R1bGUiID09PSByLmJhc2Vkb24gPyByLmdhcCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCJyaWdodCIgPT09IHIuaG9yaXpvbnRhbCA/IGwgLSBlIDogZSkgKiAoZCArIHIuZ2Fwc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgicmlnaHQiID09PSByLmhvcml6b250YWwgPyBsIC0gZSA6IGUpICogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogIm1vZHVsZSIgPT09IHIuYmFzZWRvbiA/IHIuZ2FwID8gZCArICJweCIgOiAxMDAgLyBpW2FdLnNsaWRlYW1vdW50ICsgIiUiIDogIjEwMCUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAibW9kdWxlIiA9PT0gci5iYXNlZG9uICYmICh0cEdTLmdzYXAuc2V0KGlbYV0ucHJvZ3Jlc3NDQmFyQkdTLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAibW9kdWxlIiA9PT0gci5iYXNlZG9uID8gci5nYXAgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKiAoZCArIHIuZ2Fwc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAibW9kdWxlIiA9PT0gci5iYXNlZG9uID8gci5nYXAgPyBkICsgInB4IiA6IDEwMCAvIGlbYV0uc2xpZGVhbW91bnQgKyAiJSIgOiAiMTAwJSIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRwR1MuZ3NhcC5zZXQoaVthXS5wcm9ncmVzc0NCYXJHQVBTLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogci5nYXAgPyByLmdhcHNpemUgKyAicHgiIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHIuZ2FwID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSArIDEpICogZCArIHBhcnNlSW50KHIuZ2Fwc2l6ZSwgMCkgKiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogMAogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCJ2ZXJ0aWNhbCIgPT09IHIuc3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICJncmlkIiA9PT0gci5hbGlnbmJ5ID8gaVthXS5ncmlkaGVpZ2h0W2lbYV0ubGV2ZWxdIDogaVthXS5tb2R1bGUuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5jZWlsKGMgLyBpW2FdLnNsaWRlYW1vdW50KSwgZCA9IE1hdGguY2VpbCgoYyAtIGwgKiByLmdhcHNpemUpIC8gaVthXS5zbGlkZWFtb3VudCksIHRwR1MuZ3NhcC5zZXQoaVthXS5wcm9ncmVzc0MsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICJ2aXNpYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICJsZWZ0IiA9PT0gci5ob3Jpem9udGFsID8gci54ICsgKCJncmlkIiA9PT0gci5hbGlnbmJ5ICYmIGlbYV0uZ3JpZE9mZnNldFdpZHRoICE9PSB0ID8gTWF0aC5tYXgoMCwgaVthXS5ncmlkT2Zmc2V0V2lkdGgpIDogMCkgOiAiY2VudGVyIiA9PT0gci5ob3Jpem9udGFsID8gIjUwJSIgOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogImxlZnQiID09PSByLmhvcml6b250YWwgfHwgImNlbnRlciIgPT09IHIuaG9yaXpvbnRhbCA/ICJhdXRvIiA6IHIueCArICgiZ3JpZCIgPT09IHIuYWxpZ25ieSAmJiBpW2FdLmdyaWRPZmZzZXRXaWR0aCAhPT0gdCA/IE1hdGgubWF4KDAsIGlbYV0uZ3JpZE9mZnNldFdpZHRoKSA6IDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogImNlbnRlciIgPT09IHIuaG9yaXpvbnRhbCA/IHIueCA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICJ0b3AiID09PSByLnZlcnRpY2FsICYmICJncmlkIiA9PT0gci5hbGlnbmJ5ICYmIGlbYV0uZ3JpZE9mZnNldEhlaWdodCAhPT0gdCA/IE1hdGgubWF4KGlbYV0uZ3JpZE9mZnNldEhlaWdodCwgMCkgOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206ICJib3R0b20iID09PSByLnZlcnRpY2FsICYmICJncmlkIiA9PT0gci5hbGlnbmJ5ICYmIGlbYV0uZ3JpZE9mZnNldEhlaWdodCAhPT0gdCA/IE1hdGgubWF4KGlbYV0uZ3JpZE9mZnNldEhlaWdodCwgMCkgOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogci5zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogImxlZnQiID09PSByLmhvcml6b250YWwgPyAwIDogInJpZ2h0IiA9PT0gci5ob3Jpem9udGFsID8gMCA6IHBhcnNlSW50KHIuc2l6ZSwgMCkgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAibW9kdWxlIiA9PT0gci5iYXNlZG9uID8gInRyYW5zcGFyZW50IiA6IHIuYmdjb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogImdyaWQiID09PSByLmFsaWduYnkgPyBpW2FdLmdyaWRoZWlnaHRbaVthXS5sZXZlbF0gOiAiMTAwJSIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRwR1MuZ3NhcC5zZXQoaVthXS5wcm9ncmVzc0NCYXJJbm5lciwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogIm1vZHVsZSIgPT09IHIuYmFzZWRvbiA/IHIuZ2FwID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoImJvdHRvbSIgPT09IHIudmVydGljYWwgPyBsIC0gZSA6IGUpICogKGQgKyByLmdhcHNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoImJvdHRvbSIgPT09IHIudmVydGljYWwgPyBsIC0gZSA6IGUpICogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICJtb2R1bGUiID09PSByLmJhc2Vkb24gPyByLmdhcCA/IGQgKyAicHgiIDogMTAwIC8gaVthXS5zbGlkZWFtb3VudCArICIlIiA6ICIxMDAlIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgIm1vZHVsZSIgPT09IHIuYmFzZWRvbiAmJiAodHBHUy5nc2FwLnNldChpW2FdLnByb2dyZXNzQ0JhckJHUywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogIm1vZHVsZSIgPT09IHIuYmFzZWRvbiA/IHIuZ2FwID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICogKGQgKyByLmdhcHNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICJtb2R1bGUiID09PSByLmJhc2Vkb24gPyByLmdhcCA/IGQgKyAicHgiIDogMTAwIC8gaVthXS5zbGlkZWFtb3VudCArICIlIiA6ICIxMDAlIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdHBHUy5nc2FwLnNldChpW2FdLnByb2dyZXNzQ0JhckdBUFMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogci5nYXAgPyByLmdhcHNpemUgKyAicHgiIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHIuZ2FwID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSArIDEpICogZCArIHBhcnNlSW50KHIuZ2Fwc2l6ZSwgMCkgKiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogMAogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgdHBHUy5nc2FwLnNldChpW2FdLnByb2dyZXNzQywgewogICAgICAgICAgICAgICAgICAgIHRvcDogInRvcCIgPT09IHIudmVydGljYWwgPyByLnkgKyAoImdyaWQiID09PSByLmFsaWduYnkgJiYgaVthXS5ncmlkT2Zmc2V0SGVpZ2h0ICE9PSB0ID8gTWF0aC5tYXgoMCwgaVthXS5ncmlkT2Zmc2V0SGVpZ2h0KSA6IDApIDogImNlbnRlciIgPT09IHIudmVydGljYWwgPyAiNTAlIiA6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICBib3R0b206ICJ0b3AiID09PSByLnZlcnRpY2FsIHx8ICJjZW50ZXIiID09PSByLnZlcnRpY2FsID8gImF1dG8iIDogci55ICsgKCJncmlkIiA9PT0gci5hbGlnbmJ5ICYmIGlbYV0uZ3JpZE9mZnNldEhlaWdodCAhPT0gdCA/IE1hdGgubWF4KDAsIGlbYV0uZ3JpZE9mZnNldEhlaWdodCkgOiAwKSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiAibGVmdCIgPT09IHIuaG9yaXpvbnRhbCA/IHIueCArICgiZ3JpZCIgPT09IHIuYWxpZ25ieSAmJiBpW2FdLmdyaWRPZmZzZXRXaWR0aCAhPT0gdCA/IE1hdGgubWF4KDAsIGlbYV0uZ3JpZE9mZnNldFdpZHRoKSA6IDApIDogImNlbnRlciIgPT09IHIuaG9yaXpvbnRhbCA/ICI1MCUiIDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAibGVmdCIgPT09IHIuaG9yaXpvbnRhbCB8fCAiY2VudGVyIiA9PT0gci5ob3Jpem9udGFsID8gImF1dG8iIDogci54ICsgKCJncmlkIiA9PT0gci5hbGlnbmJ5ICYmIGlbYV0uZ3JpZE9mZnNldFdpZHRoICE9PSB0ID8gTWF0aC5tYXgoMCwgaVthXS5ncmlkT2Zmc2V0V2lkdGgpIDogMCksCiAgICAgICAgICAgICAgICAgICAgeTogImNlbnRlciIgPT09IHIudmVydGljYWwgPyByLnkgOiAwLAogICAgICAgICAgICAgICAgICAgIHg6ICJjZW50ZXIiID09PSByLmhvcml6b250YWwgPyByLnggOiAwLAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyICogci5yYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyICogci5yYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAiY2VudGVyIiA9PT0gci52ZXJ0aWNhbCA/IDAgLSByLnJhZGl1cyA6IDAsCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogImNlbnRlciIgPT09IHIuaG9yaXpvbnRhbCA/IDAgLSByLnJhZGl1cyA6IDAsCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICJ2aXNpYmxlIgogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGVsc2UgaVthXS5wcm9ncmVzc0NbMF0uc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgICAgICAgICAhMCAhPT0gaVthXS5ub0RldGFjaCAmJiBpW2FdLmMuYXBwZW5kKGlbYV0ucHJvZ3Jlc3NDKSwgaVthXS5ncmlkT2Zmc2V0V2lkdGggPT09IHQgJiYgImdyaWQiID09PSByLmFsaWduYnkgPyBpW2FdLnJlYnVpbGRQcm9ncmVzc0JhciA9ICEwIDogaVthXS5yZWJ1aWxkUHJvZ3Jlc3NCYXIgPSAhMQogICAgICAgIH0sCiAgICAgICAgSSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBpW2VdLnByb2dyZXNzQmFyOwogICAgICAgICAgICB0LnJhZGl1cyAtIHBhcnNlSW50KHQuc2l6ZSwgMCkgPD0gMCAmJiAodC5zaXplID0gdC5yYWRpdXMgLyA0KTsKICAgICAgICAgICAgdmFyIGEgPSBwYXJzZUludCh0LnJhZGl1cyksCiAgICAgICAgICAgICAgICByID0gcGFyc2VJbnQodC5yYWRpdXMpOwogICAgICAgICAgICBpW2VdLnByb2dyZXNzQkNhbnZhcy5saW5lQ2FwID0gInJvdW5kIiwgaVtlXS5wcm9ncmVzc0JDYW52YXMuY2xlYXJSZWN0KDAsIDAsIDIgKiB0LnJhZGl1cywgMiAqIHQucmFkaXVzKSwgaVtlXS5wcm9ncmVzc0JDYW52YXMuYmVnaW5QYXRoKCksIGlbZV0ucHJvZ3Jlc3NCQ2FudmFzLmFyYyhhLCByLCB0LnJhZGl1cyAtIHBhcnNlSW50KHQuc2l6ZSwgMCksIE1hdGguUEkgLyAxODAgKiAyNzAsIE1hdGguUEkgLyAxODAgKiA2MzApLCBpW2VdLnByb2dyZXNzQkNhbnZhcy5zdHJva2VTdHlsZSA9IHQuYmdjb2xvciwgaVtlXS5wcm9ncmVzc0JDYW52YXMubGluZVdpZHRoID0gcGFyc2VJbnQodC5zaXplLCAwKSAtIDEsIGlbZV0ucHJvZ3Jlc3NCQ2FudmFzLnN0cm9rZSgpLCBpW2VdLnByb2dyZXNzQkNhbnZhcy5iZWdpblBhdGgoKSwgaVtlXS5wcm9ncmVzc0JDYW52YXMuc3Ryb2tlU3R5bGUgPSB0LmNvbG9yLCBpW2VdLnByb2dyZXNzQkNhbnZhcy5saW5lV2lkdGggPSBwYXJzZUludCh0LnNpemUsIDApLCBpW2VdLnByb2dyZXNzQkNhbnZhcy5hcmMoYSwgciwgdC5yYWRpdXMgLSBwYXJzZUludCh0LnNpemUsIDApLCBNYXRoLlBJIC8gMTgwICogMjcwLCBNYXRoLlBJIC8gMTgwICogKDI3MCArIGlbZV0ucHJvZ3Jlc3NCYXIuZGVncmVlKSwgImN3IiAhPT0gdC5zdHlsZSksIGlbZV0ucHJvZ3Jlc3NCQ2FudmFzLnN0cm9rZSgpCiAgICAgICAgfSwKICAgICAgICBUID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGEgIT09IHQgJiYgaSAhPT0gdCAmJiBpW2FdICE9PSB0ICYmICgwID09IGUoImJvZHkiKS5maW5kKGlbYV0uYykubGVuZ3RoIHx8IG51bGwgPT09IGlbYV0gfHwgbnVsbCA9PT0gaVthXS5jIHx8IGlbYV0uYyA9PT0gdCB8fCAwID09PSBpW2FdLmxlbmd0aCA/ICghIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaVt0XS5jLmNoaWxkcmVuKCkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSh0aGlzKS5kaWUoImNsaWNrIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUodGhpcykuZGllKCJtb3VzZWVudGVyIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUodGhpcykuZGllKCJtb3VzZWxlYXZlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUodGhpcykudW5iaW5kKCJob3ZlciIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbdF0uYy5kaWUoImNsaWNrIiwgIm1vdXNlZW50ZXIiLCAibW91c2VsZWF2ZSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaVt0XS5jZGludCksIGlbdF0uYyA9IG51bGwKICAgICAgICAgICAgICAgICAgICB9KGEpLCBjbGVhckludGVydmFsKGlbYV0uY2RpbnQpKSA6IChpW2FdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS5zbGlkZWF0ZW5kIiksIDEgPT0gaVthXS5jLmRhdGEoImNvbnRob3ZlcmNoYW5nZWQiKSAmJiAoaVthXS5jb250aG92ZXIgPSBpW2FdLmMuZGF0YSgiY29udGhvdmVyIiksIGlbYV0uYy5kYXRhKCJjb250aG92ZXJjaGFuZ2VkIiwgMCkpLCBpLmNhbGxpbmdOZXdTbGlkZShhLCAxLCAhMCkpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG8gPSB0cEdTLmdzYXAudGltZWxpbmUoewogICAgICAgICAgICAgICAgICAgIHBhdXNlZDogITAKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgcyA9ICJyZXNldCIgPT09IGlbYV0ucHJvZ3Jlc3NCYXIucmVzZXQgfHwgaVthXS5wcm9ncmVzc0Jhci5ub3RuZXcgPT09IHQgPyAwIDogLjIsCiAgICAgICAgICAgICAgICBuID0gInNsaWRlIiA9PT0gaVthXS5wcm9ncmVzc0Jhci5iYXNlZG9uID8gMCA6IGlbYV0ucHJfcHJvY2Vzc2luZ19rZXkgIT09IHQgPyBpW2FdLnByX3Byb2Nlc3Npbmdfa2V5IDogaVthXS5wcl9hY3RpdmVfa2V5OwogICAgICAgICAgICBpZiAobiA9IG4gPT09IHQgPyAwIDogbiwgImhvcml6b250YWwiID09PSBpW2FdLnByb2dyZXNzQmFyLnN0eWxlKSB7CiAgICAgICAgICAgICAgICBpZiAoby5hZGQodHBHUy5nc2FwLnRvKGlbYV0ucHJvZ3Jlc3NDQmFySW5uZXJbbl0sIHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICJyaWdodCIgPT09IGlbYV0ucHJvZ3Jlc3NCYXIuaG9yaXpvbnRhbCA/ICIxMDAlIDUwJSIgOiAiMCUgNTAlIgogICAgICAgICAgICAgICAgICAgIH0pKSwgby5hZGQodHBHUy5nc2FwLnRvKGlbYV0ucHJvZ3Jlc3NDQmFySW5uZXJbbl0sIGlbYV0uZHVyYXRpb24gLyAxZTMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAicmlnaHQiID09PSBpW2FdLnByb2dyZXNzQmFyLmhvcml6b250YWwgPyAiMTAwJSA1MCUiIDogIjAlIDUwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlM0Q6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVYOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiByLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogLjUsCiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IGlbYV0ucHJvZ3Jlc3NCYXIuZWFzZQogICAgICAgICAgICAgICAgICAgIH0pKSwgIm1vZHVsZSIgPT09IGlbYV0ucHJvZ3Jlc3NCYXIuYmFzZWRvbikKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGlbYV0uc2xpZGVhbW91bnQ7IGQrKykgZCAhPT0gbiAmJiBvLmFkZCh0cEdTLmdzYXAuc2V0KGlbYV0ucHJvZ3Jlc3NDQmFySW5uZXJbZF0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVYOiBkIDwgbiA/IDEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICJyaWdodCIgPT09IGlbYV0ucHJvZ3Jlc3NCYXIuaG9yaXpvbnRhbCA/ICIxMDAlIDUwJSIgOiAiMCUgNTAlIgogICAgICAgICAgICAgICAgICAgIH0pLCAwKQogICAgICAgICAgICB9IGVsc2UgaWYgKCJ2ZXJ0aWNhbCIgPT09IGlbYV0ucHJvZ3Jlc3NCYXIuc3R5bGUpIHsKICAgICAgICAgICAgICAgIGlmIChpW2FdLnByb2dyZXNzQ0JhcklubmVyW25dICE9PSB0ICYmIG8uYWRkKHRwR1MuZ3NhcC50byhpW2FdLnByb2dyZXNzQ0JhcklubmVyW25dLCBzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAiYm90dG9tIiA9PT0gaVthXS5wcm9ncmVzc0Jhci52ZXJ0aWNhbCA/ICI1MCUgMTAwJSIgOiAiNTAlIDAlIgogICAgICAgICAgICAgICAgICAgIH0pKSwgaVthXS5wcm9ncmVzc0NCYXJJbm5lcltuXSAhPT0gdCAmJiBvLmFkZCh0cEdTLmdzYXAudG8oaVthXS5wcm9ncmVzc0NCYXJJbm5lcltuXSwgaVthXS5kdXJhdGlvbiAvIDFlMywgewogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICJib3R0b20iID09PSBpW2FdLnByb2dyZXNzQmFyLnZlcnRpY2FsID8gIjUwJSAxMDAlIiA6ICI1MCUgMCUiLAogICAgICAgICAgICAgICAgICAgICAgICBmb3JjZTNEOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZTogciwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IC41LAogICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBpW2FdLnByb2dyZXNzQmFyLmVhc2UKICAgICAgICAgICAgICAgICAgICB9KSksICJtb2R1bGUiID09PSBpW2FdLnByb2dyZXNzQmFyLmJhc2Vkb24pCiAgICAgICAgICAgICAgICAgICAgZm9yIChkID0gMDsgZCA8IGlbYV0uc2xpZGVhbW91bnQ7IGQrKykgZCAhPT0gbiAmJiBpW2FdLnByb2dyZXNzQ0JhcklubmVyW2RdICE9PSB0ICYmIG8uYWRkKHRwR1MuZ3NhcC5zZXQoaVthXS5wcm9ncmVzc0NCYXJJbm5lcltkXSwgewogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVk6IGQgPCBuID8gMSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogImJvdHRvbiIgPT09IGlbYV0ucHJvZ3Jlc3NCYXIudmVydGljYWwgPyAiNTAlIDEwMCUiIDogIjUwJSAwJSIKICAgICAgICAgICAgICAgICAgICB9KSwgMCkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBsID0gInNsaWRlIiA9PT0gaVthXS5wcm9ncmVzc0Jhci5iYXNlZG9uID8gMCA6IE1hdGgubWF4KDAsIDM2MCAvIGlbYV0uc2xpZGVhbW91bnQgKiBuKSwKICAgICAgICAgICAgICAgICAgICBjID0gInNsaWRlIiA9PT0gaVthXS5wcm9ncmVzc0Jhci5iYXNlZG9uID8gMzYwIDogMzYwIC8gaVthXS5zbGlkZWFtb3VudCAqIChuICsgMSk7CiAgICAgICAgICAgICAgICAiY2N3IiA9PT0gaVthXS5wcm9ncmVzc0Jhci5zdHlsZSAmJiAic2xpZGUiICE9PSBpW2FdLnByb2dyZXNzQmFyLmJhc2Vkb24gJiYgKGwgPSAzNjAgLSBjLCBjID0gMzYwIC0gMzYwIC8gaVthXS5zbGlkZWFtb3VudCAqIG4pLCBvLmFkZCh0cEdTLmdzYXAudG8oaVthXS5wcm9ncmVzc0JhciwgcywgewogICAgICAgICAgICAgICAgICAgIGRlZ3JlZTogImN3IiA9PT0gaVthXS5wcm9ncmVzc0Jhci5zdHlsZSA/IGwgOiBjLAogICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgSShhKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKSwgby5hZGQodHBHUy5nc2FwLnRvKGlbYV0ucHJvZ3Jlc3NCYXIsIGlbYV0uZHVyYXRpb24gLyAxZTMsIHsKICAgICAgICAgICAgICAgICAgICBkZWdyZWU6ICJjdyIgPT09IGlbYV0ucHJvZ3Jlc3NCYXIuc3R5bGUgPyBjIDogbCwKICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEkoYSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IHIsCiAgICAgICAgICAgICAgICAgICAgZGVsYXk6IC41LAogICAgICAgICAgICAgICAgICAgIGVhc2U6IGlbYV0ucHJvZ3Jlc3NCYXIuZWFzZQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGlbYV0ucHJvZ3Jlc3NCYXIubm90bmV3ID0gITAsIG8KICAgICAgICB9LAogICAgICAgIEMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlbZV0ucHJvZ3Jlc3NDID09IHQgJiYgTyhlKSwgaVtlXS5sb29wID0gMCwgaVtlXS5zdG9wQXRTbGlkZSAhPSB0ICYmIGlbZV0uc3RvcEF0U2xpZGUgPiAtMSA/IGlbZV0ubGFzdHNsaWRldG9zaG93ID0gaVtlXS5zdG9wQXRTbGlkZSA6IGlbZV0ubGFzdHNsaWRldG9zaG93ID0gOTk5LCBpW2VdLnN0b3BMb29wID0gITEsIDAgPT0gaVtlXS5sb29wdG9nbyAmJiAoaVtlXS5zdG9wTG9vcCA9ICEwKSwgaVtlXS5jLm9uKCJzdG9wdGltZXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbZV0ucHJvZ3Jlc3NDICE9IHQgJiYgKGlbZV0ucHJvZ3Jlc3NDWzBdLnR3ZWVuLnBhdXNlKCksIGlbZV0ucHJvZ3Jlc3NCYXIuZGlzYWJsZVByb2dyZXNzQmFyICYmIChpW2VdLnByb2dyZXNzQ1swXS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiIpLCBpW2VdLnNsaWRlcnN0YXR1cyA9ICJwYXVzZWQiLCBpW2VdLnNsaWRlSW5Td2FwVGltZXIgfHwgaS51blRvZ2dsZVN0YXRlKGlbZV0uc2xpZGVydG9nZ2xlZGJ5KSwgaVtlXS5zbGlkZUluU3dhcFRpbWVyID0gITEpCiAgICAgICAgICAgIH0pLCBpW2VdLmMub24oInN0YXJ0dGltZXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbZV0ucHJvZ3Jlc3NDICE9IHQgJiYgKGlbZV0uZm9yY2VwYXVzZWQgfHwgKDEgIT0gaVtlXS5jb250aG92ZXIgJiYgMSAhPSBpW2VdLnN0b3BCeVZpZGVvICYmIGlbZV0ubW9kdWxlLndpZHRoID4gaVtlXS5oaWRlU2xpZGVyQXRMaW1pdCAmJiAxICE9IGlbZV0udG9ucGF1c2UgJiYgMSAhPSBpW2VdLm92ZXJuYXYgJiYgMSAhPSBpW2VdLnNzb3AgJiYgKDEgPT09IGlbZV0ubm9sb29wYW55bW9yZSB8fCBpW2VdLnZpZXdQb3J0LmVuYWJsZSAmJiAhaVtlXS5pbnZpZXdwb3J0IHx8IChpW2VdLnByb2dyZXNzQmFyLnZpc2liaWxpdHlbaVtlXS5sZXZlbF0gfHwgKGlbZV0ucHJvZ3Jlc3NDWzBdLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSIpLCBpW2VdLnByb2dyZXNzQ1swXS50d2Vlbi5yZXN1bWUoKSwgaVtlXS5zbGlkZXJzdGF0dXMgPSAicGxheWluZyIpKSwgIWlbZV0ucHJvZ3Jlc3NCYXIuZGlzYWJsZVByb2dyZXNzQmFyICYmIGlbZV0ucHJvZ3Jlc3NCYXIudmlzaWJpbGl0eVtpW2VdLmxldmVsXSB8fCAoaVtlXS5wcm9ncmVzc0NbMF0uc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iKSwgaS50b2dnbGVTdGF0ZShpW2VdLnNsaWRlcnRvZ2dsZWRieSkpKQogICAgICAgICAgICB9KSwgaVtlXS5jLm9uKCJyZXN0YXJ0dGltZXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChpW2VdLnByb2dyZXNzQyAhPSB0ICYmICFpW2VdLmZvcmNlcGF1c2VkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlbZV0ubW91c2VvbmNvbnRhaW5lciAmJiAib24iID09IGlbZV0ubmF2aWdhdGlvbi5vbkhvdmVyU3RvcCAmJiAhYSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIDEgPT09IGlbZV0ubm9sb29wYW55bW9yZSB8fCBpW2VdLnZpZXdQb3J0LmVuYWJsZSAmJiAhaVtlXS5pbnZpZXdwb3J0IHx8IDEgPT0gaVtlXS5zc29wID8gaS51blRvZ2dsZVN0YXRlKGlbZV0uc2xpZGVydG9nZ2xlZGJ5KSA6IChpW2VdLnByb2dyZXNzQmFyLnZpc2liaWxpdHlbaVtlXS5sZXZlbF0gfHwgKGlbZV0ucHJvZ3Jlc3NDWzBdLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSIpLCBpW2VdLnByb2dyZXNzQ1swXS50d2VlbiAhPT0gdCAmJiBpW2VdLnByb2dyZXNzQ1swXS50d2Vlbi5raWxsKCksIGlbZV0ucHJvZ3Jlc3NDWzBdLnR3ZWVuID0gVChlKSwgaVtlXS5wcm9ncmVzc0NbMF0udHdlZW4ucGxheSgpLCBpW2VdLnNsaWRlcnN0YXR1cyA9ICJwbGF5aW5nIiwgaS50b2dnbGVTdGF0ZShpW2VdLnNsaWRlcnRvZ2dsZWRieSkpLCAhaVtlXS5wcm9ncmVzc0Jhci5kaXNhYmxlUHJvZ3Jlc3NCYXIgJiYgaVtlXS5wcm9ncmVzc0Jhci52aXNpYmlsaXR5W2lbZV0ubGV2ZWxdIHx8IChpW2VdLnByb2dyZXNzQ1swXS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiIpLCBpW2VdLm1vdXNlb25jb250YWluZXIgJiYgMSA9PSBpW2VdLm5hdmlnYXRpb24ub25Ib3ZlclN0b3AgJiYgIWEgJiYgKGlbZV0uYy50cmlnZ2VyKCJzdG9wdGltZXIiKSwgaVtlXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub25wYXVzZSIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgaVtlXS5jLm9uKCJudWxsdGltZXIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbZV0ucHJvZ3Jlc3NDICE9IHQgJiYgaVtlXS5wcm9ncmVzc0NbMF0gIT09IHQgJiYgKGlbZV0ucHJvZ3Jlc3NDWzBdLnR3ZWVuICE9PSB0ICYmIGlbZV0ucHJvZ3Jlc3NDWzBdLnR3ZWVuLmtpbGwoKSwgaVtlXS5wcm9ncmVzc0NbMF0udHdlZW4gPSBUKGUpLCBpW2VdLnByb2dyZXNzQ1swXS50d2Vlbi5wYXVzZSgwKSwgIWlbZV0ucHJvZ3Jlc3NCYXIuZGlzYWJsZVByb2dyZXNzQmFyICYmIGlbZV0ucHJvZ3Jlc3NCYXIudmlzaWJpbGl0eVtpW2VdLmxldmVsXSB8fCAoaVtlXS5wcm9ncmVzc0NbMF0uc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iKSwgaVtlXS5zbGlkZXJzdGF0dXMgPSAicGF1c2VkIikKICAgICAgICAgICAgfSksIGlbZV0ucHJvZ3Jlc3NDICE9PSB0ICYmIChpW2VdLnByb2dyZXNzQ1swXS50d2VlbiA9IFQoZSkpLCBpW2VdLnNsaWRlYW1vdW50ID4gMSAmJiAoMCAhPSBpW2VdLnN0b3BBZnRlckxvb3BzIHx8IDEgIT0gaVtlXS5zdG9wQXRTbGlkZSkgPyBpW2VdLmMudHJpZ2dlcigic3RhcnR0aW1lciIpIDogKGlbZV0ubm9sb29wYW55bW9yZSA9IDEsIGlbZV0uYy50cmlnZ2VyKCJudWxsdGltZXIiKSksIGlbZV0uYy5vbigidHAtbW91c2VlbnRlciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaVtlXS5tb3VzZW9uY29udGFpbmVyID0gITAsIDEgIT0gaVtlXS5uYXZpZ2F0aW9uLm9uSG92ZXJTdG9wIHx8IGEgfHwgKGlbZV0uYy50cmlnZ2VyKCJzdG9wdGltZXIiKSwgaVtlXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub25wYXVzZSIpKQogICAgICAgICAgICB9KSwgaVtlXS5jLm9uKCJ0cC1tb3VzZWxlZnQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlbZV0ubW91c2VvbmNvbnRhaW5lciA9ICExLCAxICE9IGlbZV0uYy5kYXRhKCJjb250aG92ZXIiKSAmJiAxID09IGlbZV0ubmF2aWdhdGlvbi5vbkhvdmVyU3RvcCAmJiAoMSA9PSBpW2VdLnZpZXdQb3J0LmVuYWJsZSAmJiBpW2VdLmludmlld3BvcnQgfHwgMCA9PSBpW2VdLnZpZXdQb3J0LmVuYWJsZSkgJiYgKGlbZV0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlLm9ucmVzdW1lIiksIGlbZV0uYy50cmlnZ2VyKCJzdGFydHRpbWVyIikpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGUoIi5yZXZfcmVkcmF3X29uX2JsdXJmb2N1cyIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuaWQ7CiAgICAgICAgICAgICAgICBpZiAoaVtlXSA9PSB0IHx8IGlbZV0uYyA9PSB0IHx8IDAgPT09IGlbZV0uYy5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIDEgIT0gaVtlXS53aW5kb3dmb2N1c2VkICYmIChpW2VdLndpbmRvd2ZvY3VzZWQgPSAhMCwgdHBHUy5nc2FwLmRlbGF5ZWRDYWxsKC4xLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpW2VdLmZhbGxiYWNrcy5uZXh0U2xpZGVPbldpbmRvd0ZvY3VzICYmIGlbZV0uYy5yZXZuZXh0KCksIGlbZV0uYy5yZXZyZWRyYXcoKSwgInBsYXlpbmciID09IGlbZV0ubGFzdHNsaWRlcnN0YXR1cyAmJiBpW2VdLmMucmV2cmVzdW1lKCksIGlbZV0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlLnRhYmZvY3VzZWQiKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBNID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGRvY3VtZW50Lmhhc0ZvY3VzKCkgfHwgZSgiLnJldl9yZWRyYXdfb25fYmx1cmZvY3VzIikuZWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuaWQ7CiAgICAgICAgICAgICAgICBpW3RdLndpbmRvd2ZvY3VzZWQgPSAhMSwgaVt0XS5sYXN0c2xpZGVyc3RhdHVzID0gaVt0XS5zbGlkZXJzdGF0dXMsIGlbdF0uYy5yZXZwYXVzZSgpLCBpW3RdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS50YWJibHVyZWQiKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgUCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0gdCwKICAgICAgICAgICAgICAgIGEgPSB3aW5kb3cuY2hyb21lOwogICAgICAgICAgICAxICE9PSBpLnJldnNsaWRlcl9mb2N1c19ibHVyX2xpc3RlbmVyICYmIChpLnJldnNsaWRlcl9mb2N1c19ibHVyX2xpc3RlbmVyID0gMSwgZSAmJiAhYSA/IGkud2luZG93Lm9uKCJmb2N1c2luIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAhMCAhPT0gaS53aW5kb3dJc0ZvY3VzZWQgJiYgQSgpLCBpLndpbmRvd0lzRm9jdXNlZCA9ICEwCiAgICAgICAgICAgIH0pLm9uKCJmb2N1c291dCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgITAgIT09IGkud2luZG93SXNGb2N1c2VkICYmIGkud2luZG93SXNGb2N1c2VkICE9PSB0IHx8IE0oKSwgaS53aW5kb3dJc0ZvY3VzZWQgPSAhMQogICAgICAgICAgICB9KSA6IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyID8gKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICEwICE9PSBpLndpbmRvd0lzRm9jdXNlZCAmJiBBKCksIGkud2luZG93SXNGb2N1c2VkID0gITAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgY2FwdHVyZTogITEsCiAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgICAgICB9KSwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAhMCAhPT0gaS53aW5kb3dJc0ZvY3VzZWQgJiYgaS53aW5kb3dJc0ZvY3VzZWQgIT09IHQgfHwgTSgpLCBpLndpbmRvd0lzRm9jdXNlZCA9ICExCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGNhcHR1cmU6ICExLAogICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgfSkpIDogKHdpbmRvdy5hdHRhY2hFdmVudCgiZm9jdXMiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAhMCAhPT0gaS53aW5kb3dJc0ZvY3VzZWQgJiYgQSgpLCBpLndpbmRvd0lzRm9jdXNlZCA9ICEwCiAgICAgICAgICAgIH0pLCB3aW5kb3cuYXR0YWNoRXZlbnQoImJsdXIiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAhMCAhPT0gaS53aW5kb3dJc0ZvY3VzZWQgJiYgaS53aW5kb3dJc0ZvY3VzZWQgIT09IHQgfHwgTSgpLCBpLndpbmRvd0lzRm9jdXNlZCA9ICExCiAgICAgICAgICAgIH0pKSkKICAgICAgICB9LAogICAgICAgIEIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQsIGkgPSBbXSwgYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNsaWNlKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoZSkgKyAxKS5zcGxpdCgiXyIpLCByID0gMDsgciA8IGEubGVuZ3RoOyByKyspIGFbcl0gPSBhW3JdLnJlcGxhY2UoIiUzRCIsICI9IiksIHQgPSBhW3JdLnNwbGl0KCI9IiksIGkucHVzaCh0WzBdKSwgaVt0WzBdXSA9IHRbMV07CiAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgfSwKICAgICAgICBEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICBpZiAoaVthXS5ibG9ja1NwYWNpbmcgIT09IHQpIHsKICAgICAgICAgICAgICAgIHZhciByID0gaVthXS5ibG9ja1NwYWNpbmcuc3BsaXQoIjsiKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIG8gaW4gaVthXS5ibG9ja1NwYWNpbmcgPSB7fSwgcikKICAgICAgICAgICAgICAgICAgICBpZiAoci5oYXNPd25Qcm9wZXJ0eShvKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHJbb10uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpW2FdLmJsb2NrU3BhY2luZy50b3AgPSBpLnJldlRvUmVzcChzWzFdLCA0LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbYV0uYmxvY2tTcGFjaW5nLmJvdHRvbSA9IGkucmV2VG9SZXNwKHNbMV0sIDQsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVthXS5ibG9ja1NwYWNpbmcubGVmdCA9IGkucmV2VG9SZXNwKHNbMV0sIDQsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVthXS5ibG9ja1NwYWNpbmcucmlnaHQgPSBpLnJldlRvUmVzcChzWzFdLCA0LCAwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaVthXS5ibG9ja1NwYWNpbmcuYmxvY2sgPSBlKGkuY2xvc2VzdENsYXNzKGlbYV0uY1swXSwgIndwLWJsb2NrLXRoZW1lcHVuY2gtcmV2c2xpZGVyIikpLCBpW2FdLmxldmVsICE9PSB0ICYmIGlbYV0uYmxvY2tTcGFjaW5nICE9PSB0ICYmIHRwR1MuZ3NhcC5zZXQoaVthXS5ibG9ja1NwYWNpbmcuYmxvY2ssIHsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogaVthXS5ibG9ja1NwYWNpbmcubGVmdFtpW2FdLmxldmVsXSwKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IGlbYV0uYmxvY2tTcGFjaW5nLnJpZ2h0W2lbYV0ubGV2ZWxdLAogICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogaVthXS5ibG9ja1NwYWNpbmcudG9wW2lbYV0ubGV2ZWxdLAogICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogaVthXS5ibG9ja1NwYWNpbmcuYm90dG9tW2lbYV0ubGV2ZWxdCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB6ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGUuc2xpY2UoMSkKICAgICAgICB9LAogICAgICAgIEcgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciByIGluIGUubWluSGVpZ2h0ID0gZS5taW5IZWlnaHQgIT09IHQgPyAibm9uZSIgPT09IGUubWluSGVpZ2h0IHx8ICIwIiA9PT0gZS5taW5IZWlnaHQgfHwgIjBweCIgPT09IGUubWluSGVpZ2h0IHx8ICIiID09IGUubWluSGVpZ2h0IHx8ICIgIiA9PSBlLm1pbkhlaWdodCA/IDAgOiBwYXJzZUludChlLm1pbkhlaWdodCwgMCkgOiAwLCBlLm1heEhlaWdodCA9ICJub25lIiA9PT0gZS5tYXhIZWlnaHQgfHwgIjAiID09PSBlLm1heEhlaWdodCA/IDAgOiBwYXJzZUludChlLm1heEhlaWdodCwgMCksIGUuY2Fyb3VzZWwubWF4VmlzaWJsZUl0ZW1zID0gZS5jYXJvdXNlbC5tYXhWaXNpYmxlSXRlbXMgPCAxID8gOTk5IDogZS5jYXJvdXNlbC5tYXhWaXNpYmxlSXRlbXMsIGUuY2Fyb3VzZWwudmVydGljYWxfYWxpZ24gPSAidG9wIiA9PT0gZS5jYXJvdXNlbC52ZXJ0aWNhbF9hbGlnbiA/ICIwJSIgOiAiYm90dG9tIiA9PT0gZS5jYXJvdXNlbC52ZXJ0aWNhbF9hbGlnbiA/ICIxMDAlIiA6ICI1MCUiLCBlLmNhcm91c2VsLnNwYWNlID0gcGFyc2VJbnQoZS5jYXJvdXNlbC5zcGFjZSwgMCksIGUuY2Fyb3VzZWwubWF4T3BhY2l0eSA9IHBhcnNlSW50KGUuY2Fyb3VzZWwubWF4T3BhY2l0eSwgMCksIGUuY2Fyb3VzZWwubWF4T3BhY2l0eSA9IGUuY2Fyb3VzZWwubWF4T3BhY2l0eSA+IDEgPyBlLmNhcm91c2VsLm1heE9wYWNpdHkgLyAxMDAgOiBlLmNhcm91c2VsLm1heE9wYWNpdHksIGUuY2Fyb3VzZWwuc2hvd0xheWVyc0FsbFRpbWUgPSAidHJ1ZSIgPT09IGUuY2Fyb3VzZWwuc2hvd0xheWVyc0FsbFRpbWUgfHwgITAgPT09IGUuY2Fyb3VzZWwuc2hvd0xheWVyc0FsbFRpbWUgPyAiYWxsIiA6IGUuY2Fyb3VzZWwuc2hvd0xheWVyc0FsbFRpbWUsIGUuY2Fyb3VzZWwubWF4Um90YXRpb24gPSBwYXJzZUludChlLmNhcm91c2VsLm1heFJvdGF0aW9uLCAwKSwgZS5jYXJvdXNlbC5taW5TY2FsZSA9IHBhcnNlSW50KGUuY2Fyb3VzZWwubWluU2NhbGUsIDApLCBlLmNhcm91c2VsLm1pblNjYWxlID0gZS5jYXJvdXNlbC5taW5TY2FsZSA+IC45ID8gZS5jYXJvdXNlbC5taW5TY2FsZSAvIDEwMCA6IGUuY2Fyb3VzZWwubWluU2NhbGUsIGUuY2Fyb3VzZWwuc3BlZWQgPSBwYXJzZUludChlLmNhcm91c2VsLnNwZWVkLCAwKSwgZS5uYXZpZ2F0aW9uLm1haW50eXBlcyA9IFsiYXJyb3dzIiwgInRhYnMiLCAidGh1bWJuYWlscyIsICJidWxsZXRzIl0sIGUucGVyc3BlY3RpdmUgPSBwYXJzZUludChlLnBlcnNwZWN0aXZlLCAwKSwgZS5uYXZpZ2F0aW9uLm1haW50eXBlcykgZS5uYXZpZ2F0aW9uLm1haW50eXBlcy5oYXNPd25Qcm9wZXJ0eShyKSAmJiBlLm5hdmlnYXRpb25bZS5uYXZpZ2F0aW9uLm1haW50eXBlc1tyXV0gIT09IHQgJiYgKGUubmF2aWdhdGlvbltlLm5hdmlnYXRpb24ubWFpbnR5cGVzW3JdXS5hbmltRGVsYXkgPSBlLm5hdmlnYXRpb25bZS5uYXZpZ2F0aW9uLm1haW50eXBlc1tyXV0uYW5pbURlbGF5ID09PSB0ID8gMWUzIDogZS5uYXZpZ2F0aW9uW2UubmF2aWdhdGlvbi5tYWludHlwZXNbcl1dLmFuaW1EZWxheSwgZS5uYXZpZ2F0aW9uW2UubmF2aWdhdGlvbi5tYWludHlwZXNbcl1dLmFuaW1TcGVlZCA9IGUubmF2aWdhdGlvbltlLm5hdmlnYXRpb24ubWFpbnR5cGVzW3JdXS5hbmltU3BlZWQgPT09IHQgPyAxZTMgOiBlLm5hdmlnYXRpb25bZS5uYXZpZ2F0aW9uLm1haW50eXBlc1tyXV0uYW5pbVNwZWVkLCBlLm5hdmlnYXRpb25bZS5uYXZpZ2F0aW9uLm1haW50eXBlc1tyXV0uYW5pbURlbGF5ID0gcGFyc2VJbnQoZS5uYXZpZ2F0aW9uW2UubmF2aWdhdGlvbi5tYWludHlwZXNbcl1dLmFuaW1EZWxheSwgMCkgLyAxZTMsIGUubmF2aWdhdGlvbltlLm5hdmlnYXRpb24ubWFpbnR5cGVzW3JdXS5hbmltU3BlZWQgPSBwYXJzZUludChlLm5hdmlnYXRpb25bZS5uYXZpZ2F0aW9uLm1haW50eXBlc1tyXV0uYW5pbVNwZWVkLCAwKSAvIDFlMyk7CiAgICAgICAgICAgICAgICBpZiAoaS5pc051bWVyaWMoZS5zY3JvbGxlZmZlY3QudGlsdCkgfHwgLTEgIT09IGUuc2Nyb2xsZWZmZWN0LnRpbHQuaW5kZXhPZigiJSIpICYmIChlLnNjcm9sbGVmZmVjdC50aWx0ID0gcGFyc2VJbnQoZS5zY3JvbGxlZmZlY3QudGlsdCkpLCBlLnNjcm9sbGVmZmVjdC50aWx0ID0gZS5zY3JvbGxlZmZlY3QudGlsdCAvIDEwMCwgZS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMucG9zaXRpb24gPSAib3V0ZXItaG9yaXpvbnRhbCIgPT0gZS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMucG9zaXRpb24gPyAiYm90dG9tIiA9PSBlLm5hdmlnYXRpb24udGh1bWJuYWlscy52X2FsaWduID8gIm91dGVyLWJvdHRvbSIgOiAib3V0ZXItdG9wIiA6ICJvdXRlci12ZXJ0aWNhbCIgPT0gZS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMucG9zaXRpb24gPyAibGVmdCIgPT0gZS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuaF9hbGlnbiA/ICJvdXRlci1sZWZ0IiA6ICJvdXRlci1yaWdodCIgOiBlLm5hdmlnYXRpb24udGh1bWJuYWlscy5wb3NpdGlvbiwgZS5uYXZpZ2F0aW9uLnRhYnMucG9zaXRpb24gPSAib3V0ZXItaG9yaXpvbnRhbCIgPT0gZS5uYXZpZ2F0aW9uLnRhYnMucG9zaXRpb24gPyAiYm90dG9tIiA9PSBlLm5hdmlnYXRpb24udGFicy52X2FsaWduID8gIm91dGVyLWJvdHRvbSIgOiAib3V0ZXItdG9wIiA6ICJvdXRlci12ZXJ0aWNhbCIgPT0gZS5uYXZpZ2F0aW9uLnRhYnMucG9zaXRpb24gPyAibGVmdCIgPT0gZS5uYXZpZ2F0aW9uLnRhYnMuaF9hbGlnbiA/ICJvdXRlci1sZWZ0IiA6ICJvdXRlci1yaWdodCIgOiBlLm5hdmlnYXRpb24udGFicy5wb3NpdGlvbiwgZS5zYnRpbWVsaW5lLnNwZWVkID0gcGFyc2VJbnQoZS5zYnRpbWVsaW5lLnNwZWVkLCAwKSAvIDFlMyB8fCAuNSwgITAgPT09IGUuc2J0aW1lbGluZS5zZXQgJiYgITAgPT09IGUuc2J0aW1lbGluZS5maXhlZCAmJiAiYXV0byIgIT09IGUuc2xpZGVyTGF5b3V0ID8gKGUuc2J0aW1lbGluZS5maXhTdGFydCA9IHBhcnNlSW50KGUuc2J0aW1lbGluZS5maXhTdGFydCksIGUuc2J0aW1lbGluZS5maXhFbmQgPSBwYXJzZUludChlLnNidGltZWxpbmUuZml4RW5kKSkgOiBlLnNidGltZWxpbmUuZml4ZWQgPSAhMSwgZS5wcm9ncmVzc0JhciA9PT0gdCB8fCAidHJ1ZSIgIT0gZS5wcm9ncmVzc0Jhci5kaXNhYmxlUHJvZ3Jlc3NCYXIgJiYgMSAhPSBlLnByb2dyZXNzQmFyLmRpc2FibGVQcm9ncmVzc0JhciB8fCAoZS5wcm9ncmVzc0Jhci5kaXNhYmxlUHJvZ3Jlc3NCYXIgPSAhMCksIGUuc3RhcnREZWxheSA9IHBhcnNlSW50KGUuc3RhcnREZWxheSwgMCkgfHwgMCwgZS5uYXZpZ2F0aW9uICE9PSB0ICYmIGUubmF2aWdhdGlvbi5hcnJvd3MgIT0gdCAmJiBlLm5hdmlnYXRpb24uYXJyb3dzLmhpZGVfdW5kZXIgIT0gdCAmJiAoZS5uYXZpZ2F0aW9uLmFycm93cy5oaWRlX3VuZGVyID0gcGFyc2VJbnQoZS5uYXZpZ2F0aW9uLmFycm93cy5oaWRlX3VuZGVyKSksIGUubmF2aWdhdGlvbiAhPT0gdCAmJiBlLm5hdmlnYXRpb24uYnVsbGV0cyAhPSB0ICYmIGUubmF2aWdhdGlvbi5idWxsZXRzLmhpZGVfdW5kZXIgIT0gdCAmJiAoZS5uYXZpZ2F0aW9uLmJ1bGxldHMuaGlkZV91bmRlciA9IHBhcnNlSW50KGUubmF2aWdhdGlvbi5idWxsZXRzLmhpZGVfdW5kZXIpKSwgZS5uYXZpZ2F0aW9uICE9PSB0ICYmIGUubmF2aWdhdGlvbi50aHVtYm5haWxzICE9IHQgJiYgZS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuaGlkZV91bmRlciAhPSB0ICYmIChlLm5hdmlnYXRpb24udGh1bWJuYWlscy5oaWRlX3VuZGVyID0gcGFyc2VJbnQoZS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuaGlkZV91bmRlcikpLCBlLm5hdmlnYXRpb24gIT09IHQgJiYgZS5uYXZpZ2F0aW9uLnRhYnMgIT0gdCAmJiBlLm5hdmlnYXRpb24udGFicy5oaWRlX3VuZGVyICE9IHQgJiYgKGUubmF2aWdhdGlvbi50YWJzLmhpZGVfdW5kZXIgPSBwYXJzZUludChlLm5hdmlnYXRpb24udGFicy5oaWRlX3VuZGVyKSksIGUubmF2aWdhdGlvbiAhPT0gdCAmJiBlLm5hdmlnYXRpb24uYXJyb3dzICE9IHQgJiYgZS5uYXZpZ2F0aW9uLmFycm93cy5oaWRlX292ZXIgIT0gdCAmJiAoZS5uYXZpZ2F0aW9uLmFycm93cy5oaWRlX292ZXIgPSBwYXJzZUludChlLm5hdmlnYXRpb24uYXJyb3dzLmhpZGVfb3ZlcikpLCBlLm5hdmlnYXRpb24gIT09IHQgJiYgZS5uYXZpZ2F0aW9uLmJ1bGxldHMgIT0gdCAmJiBlLm5hdmlnYXRpb24uYnVsbGV0cy5oaWRlX292ZXIgIT0gdCAmJiAoZS5uYXZpZ2F0aW9uLmJ1bGxldHMuaGlkZV9vdmVyID0gcGFyc2VJbnQoZS5uYXZpZ2F0aW9uLmJ1bGxldHMuaGlkZV9vdmVyKSksIGUubmF2aWdhdGlvbiAhPT0gdCAmJiBlLm5hdmlnYXRpb24udGh1bWJuYWlscyAhPSB0ICYmIGUubmF2aWdhdGlvbi50aHVtYm5haWxzLmhpZGVfb3ZlciAhPSB0ICYmIChlLm5hdmlnYXRpb24udGh1bWJuYWlscy5oaWRlX292ZXIgPSBwYXJzZUludChlLm5hdmlnYXRpb24udGh1bWJuYWlscy5oaWRlX292ZXIpKSwgZS5uYXZpZ2F0aW9uICE9PSB0ICYmIGUubmF2aWdhdGlvbi50YWJzICE9IHQgJiYgZS5uYXZpZ2F0aW9uLnRhYnMuaGlkZV9vdmVyICE9IHQgJiYgKGUubmF2aWdhdGlvbi50YWJzLmhpZGVfb3ZlciA9IHBhcnNlSW50KGUubmF2aWdhdGlvbi50YWJzLmhpZGVfb3ZlcikpLCBlLmxhenlsb2FkZGF0YSAhPT0gdCAmJiBlLmxhenlsb2FkZGF0YS5sZW5ndGggPiAwICYmIGUubGF6eWxvYWRkYXRhLmluZGV4T2YoIi0iKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGUubGF6eWxvYWRkYXRhLnNwbGl0KCItIik7CiAgICAgICAgICAgICAgICAgICAgZm9yIChlLmxhenlsb2FkZGF0YSA9IG9bMF0sIHIgPSAxOyByIDwgby5sZW5ndGg7IHIrKykgZS5sYXp5bG9hZGRhdGEgKz0geihvW3JdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGUuZHVyYXRpb24gPSBwYXJzZUludChlLmR1cmF0aW9uKSwgInNpbmdsZSIgPT09IGUubGF6eVR5cGUgJiYgImNhcm91c2VsIiA9PT0gZS5zbGlkZXJUeXBlICYmIChlLmxhenlUeXBlID0gInNtYXJ0IiksICJjYXJvdXNlbCIgPT09IGUuc2xpZGVyVHlwZSAmJiBlLmNhcm91c2VsLmp1c3RpZnkgJiYgKGUuanVzdGlmeUNhcm91c2VsID0gITAsIGUua2VlcEJQSGVpZ2h0ID0gITApLCBlLmVuYWJsZVVwc2NhbGluZyA9IDEgPT0gZS5lbmFibGVVcHNjYWxpbmcgJiYgImNhcm91c2VsIiAhPT0gZS5zbGlkZXJUeXBlICYmICJmdWxsd2lkdGgiID09PSBlLnNsaWRlckxheW91dCwgZS51c2VGdWxsU2NyZWVuSGVpZ2h0ID0gImNhcm91c2VsIiA9PT0gZS5zbGlkZXJUeXBlICYmICJmdWxsc2NyZWVuIiA9PT0gZS5zbGlkZXJMYXlvdXQgJiYgITAgPT09IGUudXNlRnVsbFNjcmVlbkhlaWdodCwgZS5wcm9ncmVzc0Jhci55ID0gcGFyc2VJbnQoZS5wcm9ncmVzc0Jhci55LCAwKSwgZS5wcm9ncmVzc0Jhci54ID0gcGFyc2VJbnQoZS5wcm9ncmVzc0Jhci54LCAwKSwKICAgICAgICAgICAgICAgICAgICAvKiEgQ3VzdG9tIEVhc2VzICovCiAgICAgICAgICAgICAgICAgICAgIklFIiAhPT0gd2luZG93LlJTQnJvd3NlciAmJiBlLmN1c3RvbUVhc2VzICE9PSB0ICYmICghZS5jdXN0b21FYXNlcy5TRlhCb3VuY2VMaXRlICYmICJ0cnVlIiAhPSBlLmN1c3RvbUVhc2VzLlNGWEJvdW5jZUxpdGUgfHwgdHBHUy5TRlhCb3VuY2VMaXRlICE9PSB0IHx8ICh0cEdTLlNGWEJvdW5jZUxpdGUgPSB0cEdTLkN1c3RvbUJvdW5jZS5jcmVhdGUoIlNGWEJvdW5jZUxpdGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVuZ3RoOiAuMywKICAgICAgICAgICAgICAgICAgICAgICAgc3F1YXNoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBzcXVhc2hJRDogIlNGWEJvdW5jZUxpdGUtc3F1YXNoIgogICAgICAgICAgICAgICAgICAgIH0pKSwgIWUuY3VzdG9tRWFzZXMuU0ZYQm91bmNlU29saWQgJiYgInRydWUiICE9IGUuY3VzdG9tRWFzZXMuU0ZYQm91bmNlU29saWQgfHwgdHBHUy5TRlhCb3VuY2VTb2xpZCAhPT0gdCB8fCAodHBHUy5TRlhCb3VuY2VTb2xpZCA9IHRwR1MuQ3VzdG9tQm91bmNlLmNyZWF0ZSgiU0ZYQm91bmNlU29saWQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVuZ3RoOiAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgc3F1YXNoOiAyLAogICAgICAgICAgICAgICAgICAgICAgICBzcXVhc2hJRDogIlNGWEJvdW5jZVNvbGlkLXNxdWFzaCIKICAgICAgICAgICAgICAgICAgICB9KSksICFlLmN1c3RvbUVhc2VzLlNGWEJvdW5jZVN0cm9uZyAmJiAidHJ1ZSIgIT0gZS5jdXN0b21FYXNlcy5TRlhCb3VuY2VTdHJvbmcgfHwgdHBHUy5TRlhCb3VuY2VTdHJvbmcgIT09IHQgfHwgKHRwR1MuU0ZYQm91bmNlU3Ryb25nID0gdHBHUy5DdXN0b21Cb3VuY2UuY3JlYXRlKCJTRlhCb3VuY2VTdHJvbmciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVuZ3RoOiAuNywKICAgICAgICAgICAgICAgICAgICAgICAgc3F1YXNoOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBzcXVhc2hJRDogIlNGWEJvdW5jZVN0cm9uZy1zcXVhc2giCiAgICAgICAgICAgICAgICAgICAgfSkpLCAhZS5jdXN0b21FYXNlcy5TRlhCb3VuY2VFeHRyZW0gJiYgInRydWUiICE9IGUuY3VzdG9tRWFzZXMuU0ZYQm91bmNlRXh0cmVtIHx8IHRwR1MuU0ZYQm91bmNlRXh0cmVtICE9PSB0IHx8ICh0cEdTLlNGWEJvdW5jZUV4dHJlbSA9IHRwR1MuQ3VzdG9tQm91bmNlLmNyZWF0ZSgiU0ZYQm91bmNlRXh0cmVtIiwgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJlbmd0aDogLjksCiAgICAgICAgICAgICAgICAgICAgICAgIHNxdWFzaDogNCwKICAgICAgICAgICAgICAgICAgICAgICAgc3F1YXNoSUQ6ICJTRlhCb3VuY2VFeHRyZW0tc3F1YXNoIgogICAgICAgICAgICAgICAgICAgIH0pKSwgIWUuY3VzdG9tRWFzZXMuQm91bmNlTGl0ZSAmJiAidHJ1ZSIgIT0gZS5jdXN0b21FYXNlcy5Cb3VuY2VMaXRlIHx8IHRwR1MuQm91bmNlTGl0ZSAhPT0gdCB8fCAodHBHUy5Cb3VuY2VMaXRlID0gdHBHUy5DdXN0b21Cb3VuY2UuY3JlYXRlKCJCb3VuY2VMaXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJlbmd0aDogLjMKICAgICAgICAgICAgICAgICAgICB9KSksICFlLmN1c3RvbUVhc2VzLkJvdW5jZVNvbGlkICYmICJ0cnVlIiAhPSBlLmN1c3RvbUVhc2VzLkJvdW5jZVNvbGlkIHx8IHRwR1MuQm91bmNlU29saWQgIT09IHQgfHwgKHRwR1MuQm91bmNlU29saWQgPSB0cEdTLkN1c3RvbUJvdW5jZS5jcmVhdGUoIkJvdW5jZVNvbGlkIiwgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJlbmd0aDogLjUKICAgICAgICAgICAgICAgICAgICB9KSksICFlLmN1c3RvbUVhc2VzLkJvdW5jZVN0cm9uZyAmJiAidHJ1ZSIgIT0gZS5jdXN0b21FYXNlcy5Cb3VuY2VTdHJvbmcgfHwgdHBHUy5Cb3VuY2VTdHJvbmcgIT09IHQgfHwgKHRwR1MuQm91bmNlU3Ryb25nID0gdHBHUy5DdXN0b21Cb3VuY2UuY3JlYXRlKCJCb3VuY2VTdHJvbmciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVuZ3RoOiAuNwogICAgICAgICAgICAgICAgICAgIH0pKSwgIWUuY3VzdG9tRWFzZXMuQm91bmNlRXh0cmVtICYmICJ0cnVlIiAhPSBlLmN1c3RvbUVhc2VzLkJvdW5jZUV4dHJlbSB8fCB0cEdTLkJvdW5jZUV4dHJlbSAhPT0gdCB8fCAodHBHUy5Cb3VuY2VFeHRyZW0gPSB0cEdTLkN1c3RvbUJvdW5jZS5jcmVhdGUoIkJvdW5jZUV4dHJlbSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RyZW5ndGg6IC45CiAgICAgICAgICAgICAgICAgICAgfSkpKSwgZS5tb2RhbC5jb3ZlclNwZWVkID0gcGFyc2VGbG9hdChlLm1vZGFsLmNvdmVyU3BlZWQpLCBlLm1vZGFsLmNvdmVyU3BlZWQgPSBlLm1vZGFsLmNvdmVyU3BlZWQgPiAyMDAgPyBlLm1vZGFsLmNvdmVyU3BlZWQgLyAxZTMgOiBlLm1vZGFsLmNvdmVyU3BlZWQsIGUubW9kYWwuY292ZXJTcGVlZCA9IE1hdGgubWF4KE1hdGgubWluKDMsIGUubW9kYWwuY292ZXJTcGVlZCksIC4zKSwgZS5uYXZpZ2F0aW9uLndoZWVsVmlld1BvcnQgPSBlLm5hdmlnYXRpb24ud2hlZWxWaWV3UG9ydCA9PT0gdCA/IC41IDogZS5uYXZpZ2F0aW9uLndoZWVsVmlld1BvcnQgLyAxMDAsIGUubmF2aWdhdGlvbi53aGVlbENhbGxEZWxheSA9IGUubmF2aWdhdGlvbi53aGVlbENhbGxEZWxheSA9PT0gdCA/IDFlMyA6IHBhcnNlSW50KGUubmF2aWdhdGlvbi53aGVlbENhbGxEZWxheSksIGUuYXV0b0RQUiA9ICJzdHJpbmciID09IHR5cGVvZiBlLkRQUiAmJiAtMSAhPT0gZS5EUFIuaW5kZXhPZigiYXgiKSwgZS5EUFIgPSBlLkRQUi5yZXBsYWNlKCJheCIsICIiKSwgZS5EUFIgPSBwYXJzZUludChlLkRQUi5yZXBsYWNlKCJ4IiwgIiIpKSwgZS5EUFIgPSBpc05hTihlLkRQUikgPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IGUuYXV0b0RQUiA/IE1hdGgubWluKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCBlLkRQUikgOiBlLkRQUiwgZS5EUFIgPSAxICE9IGUub25lZHByb25tb2JpbGUgJiYgInRydWUiICE9IGUub25lZHByb25tb2JpbGUgfHwgIWEgPyBlLkRQUiA6IDEsIGUKICAgICAgICAgICAgfShlLmV4dGVuZCghMCwgewogICAgICAgICAgICAgICAgRFBSOiAiZHByIiwKICAgICAgICAgICAgICAgIHNsaWRlclR5cGU6ICJzdGFuZGFyZCIsCiAgICAgICAgICAgICAgICBzbGlkZXJMYXlvdXQ6ICJhdXRvIiwKICAgICAgICAgICAgICAgIG92ZXJsYXk6IHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMSwKICAgICAgICAgICAgICAgICAgICBjb2xvcmE6ICJ0cmFuc3BhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgY29sb3JiOiAiIzAwMDAwMCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogOWUzLAogICAgICAgICAgICAgICAgaW1nQ3Jvc3NPcmlnaW46ICIiLAogICAgICAgICAgICAgICAgbW9kYWw6IHsKICAgICAgICAgICAgICAgICAgICB1c2VBc01vZGFsOiAhMSwKICAgICAgICAgICAgICAgICAgICBjb3ZlcjogITAsCiAgICAgICAgICAgICAgICAgICAgY292ZXJDb2xvcjogInJnYmEoMCwwLDAsMC41KSIsCiAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbDogImNlbnRlciIsCiAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6ICJtaWRkbGUiLAogICAgICAgICAgICAgICAgICAgIGNvdmVyU3BlZWQ6IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uOiB7CiAgICAgICAgICAgICAgICAgICAga2V5Ym9hcmROYXZpZ2F0aW9uOiAhMSwKICAgICAgICAgICAgICAgICAgICBrZXlib2FyZF9kaXJlY3Rpb246ICJob3Jpem9udGFsIiwKICAgICAgICAgICAgICAgICAgICBtb3VzZVNjcm9sbE5hdmlnYXRpb246ICJvZmYiLAogICAgICAgICAgICAgICAgICAgIHdoZWVsVmlld1BvcnQ6IDUwLAogICAgICAgICAgICAgICAgICAgIHdoZWVsQ2FsbERlbGF5OiAiMTAwMG1zIiwKICAgICAgICAgICAgICAgICAgICBvbkhvdmVyU3RvcDogITAsCiAgICAgICAgICAgICAgICAgICAgbW91c2VTY3JvbGxSZXZlcnNlOiAiZGVmYXVsdCIsCiAgICAgICAgICAgICAgICAgICAgdG91Y2g6IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hPbkRlc2t0b3A6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzd2lwZV90cmVzaG9sZDogNzUsCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlX21pbl90b3VjaGVzOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBzd2lwZV9kaXJlY3Rpb246ICJob3Jpem9udGFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ19ibG9ja192ZXJ0aWNhbDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZUNhcm91c2VsOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVza3RvcENhcm91c2VsOiAhMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXJyb3dzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZV9vbm1vYmlsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfdW5kZXI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfb25sZWF2ZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfZGVsYXk6IDIwMCwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZV9kZWxheV9tb2JpbGU6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfb3ZlcjogOTk5OSwKICAgICAgICAgICAgICAgICAgICAgICAgdG1wOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgcnRsOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaF9hbGlnbjogImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdl9hbGlnbjogImNlbnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoX29mZnNldDogMjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2X29mZnNldDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogInNsaWRlciIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhfYWxpZ246ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2X2FsaWduOiAiY2VudGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhfb2Zmc2V0OiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfb2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiAic2xpZGVyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBidWxsZXRzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfb25tb2JpbGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlX29ubGVhdmU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlX2RlbGF5OiAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfZGVsYXlfbW9iaWxlOiAxMjAwLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlX3VuZGVyOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlX292ZXI6IDk5OTksCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogImhvcml6b250YWwiLAogICAgICAgICAgICAgICAgICAgICAgICBoX2FsaWduOiAiY2VudGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgdl9hbGlnbjogImJvdHRvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlOiA1LAogICAgICAgICAgICAgICAgICAgICAgICBoX29mZnNldDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdl9vZmZzZXQ6IDIwLAogICAgICAgICAgICAgICAgICAgICAgICB0bXA6ICc8c3BhbiBjbGFzcz0idHAtYnVsbGV0LWltYWdlIj48L3NwYW4+PHNwYW4gY2xhc3M9InRwLWJ1bGxldC10aXRsZSI+PC9zcGFuPicsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogInNsaWRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiAiIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGh1bWJuYWlsczogewogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICJzbGlkZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBydGw6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogNTAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbl93aWR0aDogMTAwLAogICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyX3BhZGRpbmc6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXJfY29sb3I6ICJ0cmFuc3BhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRtcDogJzxzcGFuIGNsYXNzPSJ0cC10aHVtYi1pbWFnZSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJ0cC10aHVtYi10aXRsZSI+PC9zcGFuPicsCiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVBbW91bnQ6IDUsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfb25tb2JpbGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlX29ubGVhdmU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlX2RlbGF5OiAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfZGVsYXlfbW9iaWxlOiAxMjAwLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlX3VuZGVyOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlX292ZXI6IDk5OTksCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogImhvcml6b250YWwiLAogICAgICAgICAgICAgICAgICAgICAgICBzcGFuOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJpbm5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlOiAyLAogICAgICAgICAgICAgICAgICAgICAgICBoX2FsaWduOiAiY2VudGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgdl9hbGlnbjogImJvdHRvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhfb2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB2X29mZnNldDogMjAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1ob2ZmOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBtdm9mZjogMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGFiczogewogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICJzbGlkZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBydGw6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbl93aWR0aDogMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwLAogICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyX3BhZGRpbmc6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyX2NvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICB0bXA6ICc8c3BhbiBjbGFzcz0idHAtdGFiLWltYWdlIj48L3NwYW4+JywKICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUFtb3VudDogNSwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZV9vbm1vYmlsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfb25sZWF2ZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfZGVsYXk6IDIwMCwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZV9kZWxheV9tb2JpbGU6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfdW5kZXI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVfb3ZlcjogOTk5OSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAiaG9yaXpvbnRhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNwYW46ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzcGFjZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJpbm5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhfYWxpZ246ICJjZW50ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2X2FsaWduOiAiYm90dG9tIiwKICAgICAgICAgICAgICAgICAgICAgICAgaF9vZmZzZXQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHZfb2Zmc2V0OiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgbWhvZmY6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG12b2ZmOiAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlc3BvbnNpdmVMZXZlbHM6IDQwNjQsCiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5TGV2ZWxzOiBbMjA0OCwgMTAyNCwgNzc4LCA0ODBdLAogICAgICAgICAgICAgICAgZ3JpZHdpZHRoOiA5NjAsCiAgICAgICAgICAgICAgICBncmlkaGVpZ2h0OiA1MDAsCiAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDAsCiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDAsCiAgICAgICAgICAgICAgICBrZWVwQlBIZWlnaHQ6ICExLAogICAgICAgICAgICAgICAgdXNlRnVsbFNjcmVlbkhlaWdodDogITAsCiAgICAgICAgICAgICAgICBvdmVyZmxvd0hpZGRlbjogITEsCiAgICAgICAgICAgICAgICBmb3JjZU92ZXJmbG93OiAhMSwKICAgICAgICAgICAgICAgIGZpeGVkT25Ub3A6ICExLAogICAgICAgICAgICAgICAgYXV0b0hlaWdodDogITEsCiAgICAgICAgICAgICAgICBncmlkRVFNb2R1bGU6ICExLAogICAgICAgICAgICAgICAgZGlzYWJsZUZvcmNlRnVsbFdpZHRoOiAhMSwKICAgICAgICAgICAgICAgIGZ1bGxTY3JlZW5PZmZzZXRDb250YWluZXI6ICIiLAogICAgICAgICAgICAgICAgZnVsbFNjcmVlbk9mZnNldDogIjAiLAogICAgICAgICAgICAgICAgaGlkZUxheWVyQXRMaW1pdDogMCwKICAgICAgICAgICAgICAgIGhpZGVBbGxMYXllckF0TGltaXQ6IDAsCiAgICAgICAgICAgICAgICBoaWRlU2xpZGVyQXRMaW1pdDogMCwKICAgICAgICAgICAgICAgIHByb2dyZXNzQmFyOiB7CiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVByb2dyZXNzQmFyOiAhMSwKICAgICAgICAgICAgICAgICAgICBzdHlsZTogImhvcml6b250YWwiLAogICAgICAgICAgICAgICAgICAgIHNpemU6ICI1cHgiLAogICAgICAgICAgICAgICAgICAgIHJhZGl1czogMTAsCiAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgIGhvcml6b250YWw6ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLAogICAgICAgICAgICAgICAgICAgIGJnY29sb3I6ICJ0cmFuc3BhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgYmFzZWRvbjogInNsaWRlIiwKICAgICAgICAgICAgICAgICAgICBnYXBzaXplOiAwLAogICAgICAgICAgICAgICAgICAgIHJlc2V0OiAicmVzZXQiLAogICAgICAgICAgICAgICAgICAgIGdhcHR5cGU6ICJnYXBib3RoIiwKICAgICAgICAgICAgICAgICAgICBnYXBjb2xvcjogInJnYmEoMjU1LDI1NSwyNTUsMC41KSIsCiAgICAgICAgICAgICAgICAgICAgZWFzZTogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgMDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIDE6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAyOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgMzogITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RvcEF0U2xpZGU6IC0xLAogICAgICAgICAgICAgICAgc3RvcEFmdGVyTG9vcHM6IDAsCiAgICAgICAgICAgICAgICBzaGFkb3c6IDAsCiAgICAgICAgICAgICAgICBzdGFydERlbGF5OiAwLAogICAgICAgICAgICAgICAgbGF6eVR5cGU6ICJub25lIiwKICAgICAgICAgICAgICAgIHNwaW5uZXI6ICJvZmYiLAogICAgICAgICAgICAgICAgc2h1ZmZsZTogITEsCiAgICAgICAgICAgICAgICBwZXJzcGVjdGl2ZTogIjYwMHB4IiwKICAgICAgICAgICAgICAgIHBlcnNwZWN0aXZlVHlwZTogImxvY2FsIiwKICAgICAgICAgICAgICAgIHZpZXdQb3J0OiB7CiAgICAgICAgICAgICAgICAgICAgZW5hYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICBvdXRvZjogIndhaXQiLAogICAgICAgICAgICAgICAgICAgIHZpc2libGVfYXJlYTogIjIwMHB4IiwKICAgICAgICAgICAgICAgICAgICBwcmVzaXplOiAhMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZhbGxiYWNrczogewogICAgICAgICAgICAgICAgICAgIGlzSm9vbWxhOiAhMSwKICAgICAgICAgICAgICAgICAgICBwYW5ab29tRGlzYWJsZU9uTW9iaWxlOiAhMSwKICAgICAgICAgICAgICAgICAgICBzaW1wbGlmeUFsbDogITAsCiAgICAgICAgICAgICAgICAgICAgbmV4dFNsaWRlT25XaW5kb3dGb2N1czogITEsCiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUZvY3VzTGlzdGVuZXI6ICExLAogICAgICAgICAgICAgICAgICAgIGFsbG93SFRNTDVBdXRvUGxheU9uQW5kcm9pZDogITAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmYW5pbTogITEsCiAgICAgICAgICAgICAgICBwYXJhbGxheDogewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJvZmYiLAogICAgICAgICAgICAgICAgICAgIGxldmVsczogWzEwLCAxNSwgMjAsIDI1LCAzMCwgMzUsIDQwLCA0NSwgNTAsIDU1LCA2MCwgNjUsIDcwLCA3NSwgODAsIDg1XSwKICAgICAgICAgICAgICAgICAgICBvcmlnbzogImVudGVycG9pbnQiLAogICAgICAgICAgICAgICAgICAgIGRpc2FibGVfb25tb2JpbGU6ICExLAogICAgICAgICAgICAgICAgICAgIGRkZF9zaGFkb3c6ICExLAogICAgICAgICAgICAgICAgICAgIGRkZF9iZ2ZyZWV6ZTogITEsCiAgICAgICAgICAgICAgICAgICAgZGRkX292ZXJmbG93OiAidmlzaWJsZSIsCiAgICAgICAgICAgICAgICAgICAgZGRkX2xheWVyX292ZXJmbG93OiAidmlzaWJsZSIsCiAgICAgICAgICAgICAgICAgICAgZGRkX3pfY29ycmVjdGlvbjogNjUsCiAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IDQwMCwKICAgICAgICAgICAgICAgICAgICBzcGVlZGJnOiAwLAogICAgICAgICAgICAgICAgICAgIHNwZWVkbHM6IDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzY3JvbGxlZmZlY3Q6IHsKICAgICAgICAgICAgICAgICAgICBzZXQ6ICExLAogICAgICAgICAgICAgICAgICAgIGZhZGU6ICExLAogICAgICAgICAgICAgICAgICAgIGJsdXI6ICExLAogICAgICAgICAgICAgICAgICAgIHNjYWxlOiAhMSwKICAgICAgICAgICAgICAgICAgICBncmF5c2NhbGU6ICExLAogICAgICAgICAgICAgICAgICAgIG1heGJsdXI6IDEwLAogICAgICAgICAgICAgICAgICAgIGxheWVyczogITEsCiAgICAgICAgICAgICAgICAgICAgc2xpZGU6ICExLAogICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogImJvdGgiLAogICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0b3I6IDEuMzUsCiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRvcl9sYXllcnM6IC41LAogICAgICAgICAgICAgICAgICAgIHRpbHQ6IDMwLAogICAgICAgICAgICAgICAgICAgIGRpc2FibGVfb25tb2JpbGU6ICExCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2J0aW1lbGluZTogewogICAgICAgICAgICAgICAgICAgIHNldDogITEsCiAgICAgICAgICAgICAgICAgICAgZml4ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgIGZpeFN0YXJ0OiAwLAogICAgICAgICAgICAgICAgICAgIGZpeEVuZDogMCwKICAgICAgICAgICAgICAgICAgICBsYXllcnM6ICExLAogICAgICAgICAgICAgICAgICAgIHNsaWRlOiAhMSwKICAgICAgICAgICAgICAgICAgICBlYXNlOiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IDUwMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNhcm91c2VsOiB7CiAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiAicG93ZXIzLmluT3V0IiwKICAgICAgICAgICAgICAgICAgICBzcGVlZDogODAwLAogICAgICAgICAgICAgICAgICAgIHNob3dMYXllcnNBbGxUaW1lOiAhMSwKICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsX2FsaWduOiAiY2VudGVyIiwKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbF9hbGlnbjogImNlbnRlciIsCiAgICAgICAgICAgICAgICAgICAgaW5maW5pdHk6ICExLAogICAgICAgICAgICAgICAgICAgIHNwYWNlOiAwLAogICAgICAgICAgICAgICAgICAgIG1heFZpc2libGVJdGVtczogMywKICAgICAgICAgICAgICAgICAgICBzdHJldGNoOiAhMSwKICAgICAgICAgICAgICAgICAgICBmYWRlb3V0OiAhMCwKICAgICAgICAgICAgICAgICAgICBtYXhSb3RhdGlvbjogMCwKICAgICAgICAgICAgICAgICAgICBtYXhPcGFjaXR5OiAxMDAsCiAgICAgICAgICAgICAgICAgICAgbWluU2NhbGU6IDAsCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0U2NhbGU6ICExLAogICAgICAgICAgICAgICAgICAgIHZhcnlfZmFkZTogITEsCiAgICAgICAgICAgICAgICAgICAgdmFyeV9yb3RhdGlvbjogITEsCiAgICAgICAgICAgICAgICAgICAgdmFyeV9zY2FsZTogITEsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyX3JhZGl1czogIjBweCIsCiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ190b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ19ib3R0b206IDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvYnNlcnZlV3JhcDogITEsCiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiAiZXh0ZW5zaW9ucy8iLAogICAgICAgICAgICAgICAgZXh0ZW5zaW9uc19zdWZmaXg6ICIubWluLmpzIiwKICAgICAgICAgICAgICAgIHN0b3BMb29wOiAhMSwKICAgICAgICAgICAgICAgIHdhaXRGb3JJbml0OiAhMSwKICAgICAgICAgICAgICAgIGlnbm9yZUhlaWdodENoYW5nZTogITAsCiAgICAgICAgICAgICAgICBvbmVkcHJvbm1vYmlsZTogITEKICAgICAgICAgICAgfSwgcikpCiAgICAgICAgfQp9KGpRdWVyeSksCmZ1bmN0aW9uKCQsIHVuZGVmaW5lZCkgewogICAgInVzZSBzdHJpY3QiOwogICAgdmFyIF9SID0galF1ZXJ5LmZuLnJldm9sdXRpb24sCiAgICAgICAgX0lTTSA9IF9SLmlzX21vYmlsZSgpOwogICAgalF1ZXJ5LmV4dGVuZCghMCwgX1IsIHsKICAgICAgICBjaGVja0FjdGlvbnM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgZSA9PT0gdW5kZWZpbmVkID8gbW9kdWxlRW50ZXJMZWF2ZUFjdGlvbnModCkgOiBjaGVja0FjdGlvbnNfaW50ZXJuKGUsIHQpCiAgICAgICAgfSwKICAgICAgICBkZWxheWVyOiBmdW5jdGlvbihlLCB0LCBpKSB7CiAgICAgICAgICAgIF9SW2VdLnRpbWVTdGFtcHMgPSBfUltlXS50aW1lU3RhbXBzID09PSB1bmRlZmluZWQgPyB7fSA6IF9SW2VdLnRpbWVTdGFtcHM7CiAgICAgICAgICAgIHZhciBhID0gKG5ldyBEYXRlKS5nZXRUaW1lKCksCiAgICAgICAgICAgICAgICByID0gX1JbZV0udGltZVN0YW1wc1tpXSA9PT0gdW5kZWZpbmVkID8gcGFyc2VJbnQodCkgKyAxMDAgOiBhIC0gX1JbZV0udGltZVN0YW1wc1tpXSwKICAgICAgICAgICAgICAgIG8gPSBwYXJzZUludChyKSA+IHQ7CiAgICAgICAgICAgIHJldHVybiBvICYmIChfUltlXS50aW1lU3RhbXBzW2ldID0gYSksIG8KICAgICAgICB9LAogICAgICAgIGdldFVSTERldGFpbHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgKGUgPSBlID09PSB1bmRlZmluZWQgPyB7fSA6IGUpLnVybCA9IGUudXJsID09PSB1bmRlZmluZWQgPyB3aW5kb3cubG9jYXRpb24uaHJlZiA6IGUudXJsLCBlLnVybCA9IGUudXJsLnJlcGxhY2UoInd3dyIsICIiKSwgZS5wcm90b2NvbCA9IDAgPT09IGUudXJsLmluZGV4T2YoImh0dHA6Ly8iKSA/ICJodHRwOi8vIiA6IDAgPT09IGUudXJsLmluZGV4T2YoImh0dHBzOi8vIikgPyAiaHR0cHM6Ly8iIDogMCA9PT0gZS51cmwuaW5kZXhPZigiLy8iKSA/ICIvLyIgOiAicmVsYXRpdmUiOwogICAgICAgICAgICB2YXIgdCA9IGUudXJsLnJlcGxhY2UoImh0dHBzOi8vIiwgIiIpOwogICAgICAgICAgICB0ID0gdC5yZXBsYWNlKCJodHRwOi8vIiwgIiIpLCAicmVsYXRpdmUiID09PSBlLnByb3RvY29sICYmICh0ID0gdC5yZXBsYWNlKCIvLyIsICIiKSksIHQgPSB0LnNwbGl0KCIjIiksIGUuYW5jaG9yID0gKGUuYW5jaG9yID09PSB1bmRlZmluZWQgfHwgIiIgPT0gZS5hbmNob3IgfHwgMCA9PSBlLmFuY2hvci5sZW5ndGgpICYmIHQubGVuZ3RoID4gMSA/IHRbMV0gOiBlLmFuY2hvciA9PT0gdW5kZWZpbmVkID8gIiIgOiBlLmFuY2hvci5yZXBsYWNlKCIjIiwgIiIpLCBlLmFuY2hvciA9IGUuYW5jaG9yLnNwbGl0KCI/IiksIGUucXVlcmllcyA9IHRbMF0uc3BsaXQoIj8iKSwgZS5xdWVyaWVzID0gZS5xdWVyaWVzLmxlbmd0aCA+IDEgPyBlLnF1ZXJpZXNbMV0gOiAiIiwgZS5xdWVyaWVzID0gZS5xdWVyaWVzLmxlbmd0aCA+IDEgPyBlLnF1ZXJpZXNbMV0gOiBlLmFuY2hvci5sZW5ndGggPiAxID8gZS5hbmNob3JbMV0gOiBlLnF1ZXJpZXMsIGUuYW5jaG9yID0gZS5hbmNob3JbMF07CiAgICAgICAgICAgICh0ID0gdFswXSkuc3BsaXQoIi8iKTsKICAgICAgICAgICAgdmFyIGkgPSB0LnNwbGl0KCIvIik7CiAgICAgICAgICAgIHJldHVybiBlLmhvc3QgPSBpWzBdLCBpLnNwbGljZSgwLCAxKSwgZS5wYXRoID0gIi8iICsgaS5qb2luKCIvIiksICIvIiA9PSBlLnBhdGhbZS5wYXRoLmxlbmd0aCAtIDFdICYmIChlLnBhdGggPSBlLnBhdGguc2xpY2UoMCwgLTEpKSwgZS5vcmlnaW4gPSAicmVsYXRpdmUiICE9PSBlLnByb3RvY29sID8gZS5wcm90b2NvbCArIGUuaG9zdCA6IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4ucmVwbGFjZSgid3d3IiwgIiIpICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCBlLmhhc2ggPSAoIiIgIT09IGUucXVlcmllcyAmJiBlLnF1ZXJpZXMgIT09IHVuZGVmaW5lZCA/ICI/IiArIGUucXVlcmllcyA6ICIiKSArICgiIiAhPT0gZS5hbmNob3IgJiYgZS5hbmNob3IgIT09IHVuZGVmaW5lZCA/ICIjIiArIGUuYW5jaG9yIDogIiIpLCBlCiAgICAgICAgfSwKICAgICAgICBzY3JvbGxUb0lkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gInNjcm9sbGJlbG93IiA9PT0gZS5hY3Rpb24gPyAoZ2V0T2ZmQ29udEgoX1JbZS5pZF0uZnVsbFNjcmVlbk9mZnNldENvbnRhaW5lcikgfHwgMCkgLSAocGFyc2VJbnQoZS5vZmZzZXQsIDApIHx8IDApIHx8IDAgOiAwIC0gKHBhcnNlSW50KGUub2Zmc2V0LCAwKSB8fCAwKSwKICAgICAgICAgICAgICAgIGkgPSAic2Nyb2xsYmVsb3ciID09PSBlLmFjdGlvbiA/IF9SW2UuaWRdLmMgOiBqUXVlcnkoIiMiICsgZS5hbmNob3IpLAogICAgICAgICAgICAgICAgYSA9IGkubGVuZ3RoID4gMCA/IGkub2Zmc2V0KCkudG9wIDogMCwKICAgICAgICAgICAgICAgIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgX3k6IF9SW2UuaWRdLm1vZGFsLnVzZUFzTW9kYWwgPyBfUltlLmlkXS5jcGFyWzBdLnNjcm9sbFRvcCA6IHdpbmRvdy5wYWdlWU9mZnNldCAhPT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA/IDAgIT09IHdpbmRvdy5wYWdlWU9mZnNldCA/IHdpbmRvdy5wYWdlWU9mZnNldCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgOiB3aW5kb3cucGFnZVlPZmZzZXQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGEgKz0gInNjcm9sbGJlbG93IiA9PT0gZS5hY3Rpb24gPyBfUltlLmlkXS5zYnRpbWVsaW5lLmZpeGVkID8gX1JbZS5pZF0uY3Bhci5wYXJlbnQoKS5oZWlnaHQoKSArIF9SW2UuaWRdLmZ1bGxTY3JlZW5PZmZzZXRSZXN1bHQgOiBqUXVlcnkoX1JbZS5pZF0uc2xpZGVzWzBdKS5oZWlnaHQoKSA6IDAsIHRwR1MuZ3NhcC50byhyLCBlLnNwZWVkIC8gMWUzLCB7CiAgICAgICAgICAgICAgICBfeTogYSAtIHQsCiAgICAgICAgICAgICAgICBlYXNlOiBlLmVhc2UsCiAgICAgICAgICAgICAgICBvblVwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgX1JbZS5pZF0ubW9kYWwudXNlQXNNb2RhbCA/IF9SW2UuaWRdLmNwYXIuc2Nyb2xsVG9wKHIuX3kpIDogX1IuZG9jdW1lbnQuc2Nyb2xsVG9wKHIuX3kpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZS5oYXNoICE9PSB1bmRlZmluZWQgJiYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gZS5oYXNoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIG1vZHVsZUVudGVyTGVhdmVBY3Rpb25zID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAhX1JbZV0ubW9kdWxlQWN0aW9uc1ByZXBhcmVkICYmIF9SW2VdLmNbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgicnMtb24tc2giKS5sZW5ndGggPiAwICYmIChfUltlXS5jLm9uKCJ0cC1tb3VzZWVudGVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBfUltlXS5tb3VzZW9uY29udGFpbmVyID0gITA7CiAgICAgICAgICAgICAgICB2YXIgdCwgaSA9IF9SW2VdLnByX25leHRfa2V5ICE9PSB1bmRlZmluZWQgPyBfUltlXS5wcl9uZXh0X2tleSA6IF9SW2VdLnByX3Byb2Nlc3Npbmdfa2V5ICE9PSB1bmRlZmluZWQgPyBfUltlXS5wcl9wcm9jZXNzaW5nX2tleSA6IF9SW2VdLnByX2FjdGl2ZV9rZXkgIT09IHVuZGVmaW5lZCA/IF9SW2VdLnByX2FjdGl2ZV9rZXkgOiBfUltlXS5wcl9uZXh0X2tleTsKICAgICAgICAgICAgICAgIGlmICgibm9uZSIgIT09IGkgJiYgaSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChpID0gX1IuZ0EoX1JbZV0uc2xpZGVzW2ldLCAia2V5IikpICE9PSB1bmRlZmluZWQgJiYgX1JbZV0ubGF5ZXJzW2ldKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gX1JbZV0ubGF5ZXJzW2ldKSBfUltlXS5sYXllcnNbaV1bdF0uY2xhc3NOYW1lLmluZGV4T2YoInJzLW9uLXNoIikgPj0gMCAmJiBfUi5yZW5kZXJMYXllckFuaW1hdGlvbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcjogalF1ZXJ5KF9SW2VdLmxheWVyc1tpXVt0XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogImZyYW1lXzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInRyaWdnZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIF9SW2VdLmxheWVycy5zdGF0aWMpIF9SW2VdLmxheWVycy5zdGF0aWNbdF0uY2xhc3NOYW1lLmluZGV4T2YoInJzLW9uLXNoIikgPj0gMCAmJiBfUi5yZW5kZXJMYXllckFuaW1hdGlvbih7CiAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiBqUXVlcnkoX1JbZV0ubGF5ZXJzLnN0YXRpY1t0XSksCiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lOiAiZnJhbWVfMSIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJ0cmlnZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgX1JbZV0uYy5vbigidHAtbW91c2VsZWZ0IiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBfUltlXS5tb3VzZW9uY29udGFpbmVyID0gITA7CiAgICAgICAgICAgICAgICB2YXIgdCwgaSA9IF9SW2VdLnByX25leHRfa2V5ICE9PSB1bmRlZmluZWQgPyBfUltlXS5wcl9uZXh0X2tleSA6IF9SW2VdLnByX3Byb2Nlc3Npbmdfa2V5ICE9PSB1bmRlZmluZWQgPyBfUltlXS5wcl9wcm9jZXNzaW5nX2tleSA6IF9SW2VdLnByX2FjdGl2ZV9rZXkgIT09IHVuZGVmaW5lZCA/IF9SW2VdLnByX2FjdGl2ZV9rZXkgOiBfUltlXS5wcl9uZXh0X2tleTsKICAgICAgICAgICAgICAgIGlmICgibm9uZSIgIT09IGkgJiYgaSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChpID0gX1IuZ0EoX1JbZV0uc2xpZGVzW2ldLCAia2V5IikpICE9PSB1bmRlZmluZWQgJiYgX1JbZV0ubGF5ZXJzW2ldKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gX1JbZV0ubGF5ZXJzW2ldKSBfUltlXS5sYXllcnNbaV1bdF0uY2xhc3NOYW1lLmluZGV4T2YoInJzLW9uLXNoIikgPj0gMCAmJiBfUi5yZW5kZXJMYXllckFuaW1hdGlvbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcjogalF1ZXJ5KF9SW2VdLmxheWVyc1tpXVt0XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogImZyYW1lXzk5OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAidHJpZ2dlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gX1JbZV0ubGF5ZXJzLnN0YXRpYykgX1JbZV0ubGF5ZXJzLnN0YXRpY1t0XS5jbGFzc05hbWUuaW5kZXhPZigicnMtb24tc2giKSA+PSAwICYmIF9SLnJlbmRlckxheWVyQW5pbWF0aW9uKHsKICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6IGpRdWVyeShfUltlXS5sYXllcnMuc3RhdGljW3RdKSwKICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU6ICJmcmFtZV85OTkiLAogICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAidHJpZ2dlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpLCBfUltlXS5tb2R1bGVBY3Rpb25zUHJlcGFyZWQgPSAhMAogICAgICAgIH0sCiAgICAgICAgY2hlY2tBY3Rpb25zX2ludGVybiA9IGZ1bmN0aW9uKGxheWVyLCBpZCkgewogICAgICAgICAgICB2YXIgYWN0aW9ucyA9IF9SLmdBKGxheWVyWzBdLCAiYWN0aW9ucyIpLAogICAgICAgICAgICAgICAgX0wgPSBsYXllci5kYXRhKCk7CiAgICAgICAgICAgIGZvciAodmFyIGVpIGluIGFjdGlvbnMgPSBhY3Rpb25zLnNwbGl0KCJ8fCIpLCBsYXllci5hZGRDbGFzcygicnMtd2FjdGlvbiIpLCBfTC5ldmVudHMgPSBfTC5ldmVudHMgPT09IHVuZGVmaW5lZCA/IFtdIDogX0wuZXZlbnRzLCBfUltpZF0ubGFzdE1vdXNlRG93biA9IHt9LCBhY3Rpb25zKQogICAgICAgICAgICAgICAgaWYgKGFjdGlvbnMuaGFzT3duUHJvcGVydHkoZWkpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGV2ZW50ID0gZ2V0RXZlbnRQYXJhbXMoYWN0aW9uc1tlaV0uc3BsaXQoIjsiKSk7CiAgICAgICAgICAgICAgICAgICAgX0wuZXZlbnRzLnB1c2goZXZlbnQpLCAiY2xpY2siID09PSBldmVudC5vbiAmJiBsYXllclswXS5jbGFzc0xpc3QuYWRkKCJycy13Y2xpY2thY3Rpb24iKSwgX1JbaWRdLmZ1bGxzY3JlZW5fZXNjbGlzdGVuZXIgfHwgImV4aXRmdWxsc2NyZWVuIiAhPSBldmVudC5hY3Rpb24gJiYgInRvZ2dsZWZ1bGxzY3JlZW4iICE9IGV2ZW50LmFjdGlvbiB8fCAoX1IuZG9jdW1lbnQua2V5dXAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAyNyA9PSBlLmtleUNvZGUgJiYgalF1ZXJ5KCIjcnMtZ28tZnVsbHNjcmVlbiIpLmxlbmd0aCA+IDAgJiYgbGF5ZXIudHJpZ2dlcihldmVudC5vbikKICAgICAgICAgICAgICAgICAgICB9KSwgX1JbaWRdLmZ1bGxzY3JlZW5fZXNjbGlzdGVuZXIgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldGxheWVyID0gImJhY2tncm91bmR2aWRlbyIgPT0gZXZlbnQubGF5ZXIgPyBqUXVlcnkoInJzLWJndmlkZW8iKSA6ICJmaXJzdHZpZGVvIiA9PSBldmVudC5sYXllciA/IGpRdWVyeSgicnMtc2xpZGUiKS5maW5kKCIucnMtbGF5ZXItdmlkZW8iKSA6IGpRdWVyeSgiIyIgKyBldmVudC5sYXllcik7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgtMSAhPSBqUXVlcnkuaW5BcnJheShldmVudC5hY3Rpb24sIFsidG9nZ2xlc2xpZGVyIiwgInRvZ2dsZV9tdXRlX3ZpZGVvIiwgInRvZ2dsZV9nbG9iYWxfbXV0ZV92aWRlbyIsICJ0b2dnbGVmdWxsc2NyZWVuIl0pICYmIChfTC5fdG9nZ2xlbGlzdGVuZXJzID0gITApLCBldmVudC5hY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG9nZ2xldmlkZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2godGFyZ2V0bGF5ZXIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRvZ2dsZUJ5TGlzdChqUXVlcnkodGhpcyksICJ2aWRlb3RvZ2dsZWRieSIsIGxheWVyWzBdLmlkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG9nZ2xlbGF5ZXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2godGFyZ2V0bGF5ZXIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRvZ2dsZUJ5TGlzdChqUXVlcnkodGhpcyksICJsYXllcnRvZ2dsZWRieSIsIGxheWVyWzBdLmlkKSwgalF1ZXJ5KHRoaXMpLmRhdGEoInRyaWdnZXJlZF9zdGFydHN0YXR1cyIsIGV2ZW50LnRvZ2dsZXN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG9nZ2xlX2dsb2JhbF9tdXRlX3ZpZGVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG9nZ2xlX211dGVfdmlkZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2godGFyZ2V0bGF5ZXIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRvZ2dsZUJ5TGlzdChqUXVlcnkodGhpcyksICJ2aWRlb211dGV0b2dnbGVkYnkiLCBsYXllclswXS5pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvZ2dsZXNsaWRlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUltpZF0uc2xpZGVydG9nZ2xlZGJ5ID09IHVuZGVmaW5lZCAmJiAoX1JbaWRdLnNsaWRlcnRvZ2dsZWRieSA9IFtdKSwgX1JbaWRdLnNsaWRlcnRvZ2dsZWRieS5wdXNoKGxheWVyWzBdLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b2dnbGVmdWxsc2NyZWVuIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SW2lkXS5mdWxsc2NyZWVudG9nZ2xlZGJ5ID09IHVuZGVmaW5lZCAmJiAoX1JbaWRdLmZ1bGxzY3JlZW50b2dnbGVkYnkgPSBbXSksIF9SW2lkXS5mdWxsc2NyZWVudG9nZ2xlZGJ5LnB1c2gobGF5ZXJbMF0uaWQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBfUltpZF0uYWN0aW9uc1ByZXBhcmVkID0gITAsIGxheWVyLm9uKCJtb3VzZWRvd24iLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnRvdWNoZXMgJiYgKGUgPSBlLnRvdWNoZXNbMF0pLCBfUltpZF0ubGFzdE1vdXNlRG93bi5wYWdlWCA9IGUucGFnZVgsIF9SW2lkXS5sYXN0TW91c2VEb3duLnBhZ2VZID0gZS5wYWdlWQogICAgICAgICAgICB9KSwgbGF5ZXIub24oImNsaWNrIG1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICgiY2xpY2siID09PSBlLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZXZ0ID0gZS50b3VjaGVzID8gZS50b3VjaGVzWzBdIDogZTsKICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoZXZ0LnBhZ2VYIC0gX1JbaWRdLmxhc3RNb3VzZURvd24ucGFnZVgpID4gNSB8fCBNYXRoLmFicyhldnQucGFnZVkgLSBfUltpZF0ubGFzdE1vdXNlRG93bi5wYWdlWSkgPiA1KSByZXR1cm4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gX0wuZXZlbnRzKQogICAgICAgICAgICAgICAgICAgIGlmIChfTC5ldmVudHMuaGFzT3duUHJvcGVydHkoaSkgJiYgX0wuZXZlbnRzW2ldLm9uID09PSBlLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV2ZW50ID0gX0wuZXZlbnRzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShldmVudC5yZXBlYXQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5yZXBlYXQgPiAwKSB8fCBfUi5kZWxheWVyKGlkLCAxZTMgKiBldmVudC5yZXBlYXQsIF9MLmNbMF0uaWQgKyAiXyIgKyBldmVudC5hY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNsaWNrIiA9PT0gZXZlbnQub24gJiYgbGF5ZXIuaGFzQ2xhc3MoInRwLXRlbXBvcmFyeWRpc2FibGVkIikpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRsYXllciA9ICJiYWNrZ3JvdW5kdmlkZW8iID09IGV2ZW50LmxheWVyID8galF1ZXJ5KF9SW2lkXS5zbGlkZXNbX1JbaWRdLnByX2FjdGl2ZV9rZXldKS5maW5kKCJycy1zYmctd3JhcCBycy1iZ3ZpZGVvIikgOiAiZmlyc3R2aWRlbyIgPT0gZXZlbnQubGF5ZXIgPyBqUXVlcnkoX1JbaWRdLnNsaWRlc1tfUltpZF0ucHJfYWN0aXZlX2tleV0pLmZpbmQoIi5ycy1sYXllci12aWRlbyIpLmZpcnN0KCkgOiBqUXVlcnkoIiMiICsgZXZlbnQubGF5ZXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleCA9IHRhcmdldGxheWVyLmxlbmd0aCA+IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmFjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1lbnVsaW5rIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmt0byA9IF9SLmdldFVSTERldGFpbHMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZXZlbnQudXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcjogZXZlbnQuYW5jaG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtmcm9tID0gX1IuZ2V0VVJMRGV0YWlscygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rdG8uaG9zdCA9PSBsaW5rZnJvbS5ob3N0ICYmIGxpbmt0by5wYXRoID09IGxpbmtmcm9tLnBhdGggJiYgIl9zZWxmIiA9PT0gZXZlbnQudGFyZ2V0ID8gX1Iuc2Nyb2xsVG9JZCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGV2ZW50Lm9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogZXZlbnQuYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yOiBldmVudC5hbmNob3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiBsaW5rdG8uaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiBldmVudC5zcGVlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IGV2ZW50LmVhc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiAiX3NlbGYiID09PSBldmVudC50YXJnZXQgPyB3aW5kb3cubG9jYXRpb24gPSBsaW5rdG8udXJsICsgKGxpbmt0by5hbmNob3IgIT09IHVuZGVmaW5lZCAmJiAiIiAhPT0gbGlua3RvLmFuY2hvciA/ICIjIiArIGxpbmt0by5hbmNob3IgOiAiIikgOiB3aW5kb3cub3BlbihsaW5rdG8udXJsICsgKGxpbmt0by5hbmNob3IgIT09IHVuZGVmaW5lZCAmJiAiIiAhPT0gbGlua3RvLmFuY2hvciA/ICIjIiArIGxpbmt0by5hbmNob3IgOiAiIikpLCBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm5leHRmcmFtZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicHJldmZyYW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnb3RvZnJhbWUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvZ2dsZWxheWVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b2dnbGVmcmFtZXMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInN0YXJ0bGF5ZXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInN0b3BsYXllciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRsYXllclswXSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF8gPSBfUltpZF0uX0xbdGFyZ2V0bGF5ZXJbMF0uaWRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUgPSBldmVudC5mcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdSA9ICJ0cmlnZ2VyZGVsYXkiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNsaWNrIiA9PT0gZS50eXBlICYmIF8uY2xpY2tlZF90aW1lX3N0YW1wICE9PSB1bmRlZmluZWQgJiYgKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSBfLmNsaWNrZWRfdGltZV9zdGFtcCA8IDMwMCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm1vdXNlZW50ZXIiID09PSBlLnR5cGUgJiYgXy5tb3VzZWVudGVyZWRfdGltZV9zdGFtcCAhPT0gdW5kZWZpbmVkICYmIChuZXcgRGF0ZSkuZ2V0VGltZSgpIC0gXy5tb3VzZWVudGVyZWRfdGltZV9zdGFtcCA8IDMwMCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xlYXJUaW1lb3V0KF8udHJpZ2dlcmRlbGF5SW4pLCBjbGVhclRpbWVvdXQoXy50cmlnZ2VyZGVsYXlPdXQpLCBjbGVhclRpbWVvdXQoXy50cmlnZ2VyZGVsYXkpLCAiY2xpY2siID09PSBlLnR5cGUgJiYgKF8uY2xpY2tlZF90aW1lX3N0YW1wID0gKG5ldyBEYXRlKS5nZXRUaW1lKCkpLCAibW91c2VlbnRlciIgPT09IGUudHlwZSAmJiAoXy5tb3VzZWVudGVyZWRfdGltZV9zdGFtcCA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpKSwgIm1vdXNlbGVhdmUiID09PSBlLnR5cGUgJiYgKF8ubW91c2VlbnRlcmVkX3RpbWVfc3RhbXAgPSB1bmRlZmluZWQpLCAibmV4dGZyYW1lIiA9PT0gZXZlbnQuYWN0aW9uIHx8ICJwcmV2ZnJhbWUiID09PSBldmVudC5hY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uZm9yZGEgPSBfLmZvcmRhID09PSB1bmRlZmluZWQgPyBnZXRGb3JkV2l0aEFjdGlvbihfKSA6IF8uZm9yZGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW54ID0galF1ZXJ5LmluQXJyYXkoXy5jdXJyZW50ZnJhbWUsIF8uZm9yZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCJuZXh0ZnJhbWUiID09PSBldmVudC5hY3Rpb24gJiYgaW54KyssICJwcmV2ZnJhbWUiID09PSBldmVudC5hY3Rpb24gJiYgaW54LS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNraXAiICE9PSBfLmZvcmRhW2lueF0gJiYgaW54ID4gMCAmJiBpbnggPCBfLmZvcmRhLmxlbmd0aCAtIDE7KSAibmV4dGZyYW1lIiA9PT0gZXZlbnQuYWN0aW9uICYmIGlueCsrLCAicHJldmZyYW1lIiA9PT0gZXZlbnQuYWN0aW9uICYmIGlueC0tLCBpbnggPSBNYXRoLm1pbihNYXRoLm1heCgwLCBpbngpLCBfLmZvcmRhLmxlbmd0aCAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUgPSBfLmZvcmRbaW54XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pbkFycmF5KGV2ZW50LmFjdGlvbiwgWyJ0b2dnbGVmcmFtZXMiLCAidG9nZ2xlbGF5ZXIiLCAic3RhcnRsYXllciIsICJzdG9wbGF5ZXIiXSkgPj0gMCAmJiAoXy50cmlnZ2VyZWRzdGF0ZSA9ICJzdGFydGxheWVyIiA9PT0gZXZlbnQuYWN0aW9uIHx8ICJ0b2dnbGVsYXllciIgPT09IGV2ZW50LmFjdGlvbiAmJiAiZnJhbWVfMSIgIT09IF8uY3VycmVudGZyYW1lIHx8ICJ0b2dnbGVmcmFtZXMiID09PSBldmVudC5hY3Rpb24gJiYgXy5jdXJyZW50ZnJhbWUgIT09IGV2ZW50LmZyYW1lTiwgInRvZ2dsZWxheWVyIiA9PT0gZXZlbnQuYWN0aW9uICYmICEwID09PSBfLnRyaWdnZXJlZHN0YXRlICYmIF8uY3VycmVudGZyYW1lICE9PSB1bmRlZmluZWQgJiYgImZyYW1lXzk5OSIgIT09IF8uY3VycmVudGZyYW1lICYmIChfLnRyaWdnZXJlZHN0YXRlID0gITEpLCBmcmFtZSA9IF8udHJpZ2dlcmVkc3RhdGUgPyAidG9nZ2xlZnJhbWVzIiA9PT0gZXZlbnQuYWN0aW9uID8gZXZlbnQuZnJhbWVOIDogImZyYW1lXzEiIDogInRvZ2dsZWZyYW1lcyIgPT09IGV2ZW50LmFjdGlvbiA/IGV2ZW50LmZyYW1lTSA6ICJmcmFtZV85OTkiLCB0b3UgPSBfLnRyaWdnZXJlZHN0YXRlID8gInRyaWdnZXJkZWxheUluIiA6ICJ0cmlnZ2VyZGVsYXlPdXQiLCBfLnRyaWdnZXJlZHN0YXRlID8gX1IudG9nZ2xlU3RhdGUoXy5sYXllcnRvZ2dsZWRieSkgOiAoX1Iuc3RvcFZpZGVvICYmIF9SLnN0b3BWaWRlbyh0YXJnZXRsYXllciwgaWQpLCBfUi51blRvZ2dsZVN0YXRlKF8ubGF5ZXJ0b2dnbGVkYnkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJzID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6IHRhcmdldGxheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU6IGZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInRyaWdnZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBldmVudC5jaGlsZHJlbiAmJiAocGFycy51cGRhdGVDaGlsZHJlbiA9ICEwLCBwYXJzLmZhc3Rmb3J3YXJkID0gITApLCBfUi5yZW5kZXJMYXllckFuaW1hdGlvbiAmJiAoY2xlYXJUaW1lb3V0KF9bdG91XSksIF9bdG91XSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1IucmVuZGVyTGF5ZXJBbmltYXRpb24oZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMWUzICogZXZlbnQuZGVsYXksIHBhcnMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGxheXZpZGVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4ICYmIF9SLnBsYXlWaWRlbyh0YXJnZXRsYXllciwgaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzdG9wdmlkZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXggJiYgX1Iuc3RvcFZpZGVvICYmIF9SLnN0b3BWaWRlbyh0YXJnZXRsYXllciwgaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b2dnbGV2aWRlbyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleCAmJiAoX1IuaXNWaWRlb1BsYXlpbmcodGFyZ2V0bGF5ZXIsIGlkKSA/IF9SLnN0b3BWaWRlbyAmJiBfUi5zdG9wVmlkZW8odGFyZ2V0bGF5ZXIsIGlkKSA6IF9SLnBsYXlWaWRlbyh0YXJnZXRsYXllciwgaWQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibXV0ZXZpZGVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4ICYmIF9SLk11dGUodGFyZ2V0bGF5ZXIsIGlkLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInVubXV0ZXZpZGVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4ICYmIF9SLk11dGUgJiYgX1IuTXV0ZSh0YXJnZXRsYXllciwgaWQsICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG9nZ2xlX211dGVfdmlkZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXggJiYgKF9SLk11dGUodGFyZ2V0bGF5ZXIsIGlkKSA/IF9SLk11dGUodGFyZ2V0bGF5ZXIsIGlkLCAhMSkgOiBfUi5NdXRlICYmIF9SLk11dGUodGFyZ2V0bGF5ZXIsIGlkLCAhMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b2dnbGVfZ2xvYmFsX211dGVfdmlkZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHZsID0gX1JbaWRdLnBsYXlpbmd2aWRlb3MgIT0gdW5kZWZpbmVkICYmIF9SW2lkXS5wbGF5aW5ndmlkZW9zLmxlbmd0aCA+IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB2bCAmJiAoX1JbaWRdLmdsb2JhbG11dGUgPyBqUXVlcnkuZWFjaChfUltpZF0ucGxheWluZ3ZpZGVvcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1IuTXV0ZSAmJiBfUi5NdXRlKHQsIGlkLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBqUXVlcnkuZWFjaChfUltpZF0ucGxheWluZ3ZpZGVvcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1IuTXV0ZSAmJiBfUi5NdXRlKHQsIGlkLCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBfUltpZF0uZ2xvYmFsbXV0ZSA9ICFfUltpZF0uZ2xvYmFsbXV0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBHUy5nc2FwLmRlbGF5ZWRDYWxsKGV2ZW50LmRlbGF5LCBmdW5jdGlvbih0YXJnZXRsYXllciwgaWQsIGV2ZW50LCBsYXllcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJvcGVubW9kYWwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQubW9kYWxzbGlkZSA9IGV2ZW50Lm1vZGFsc2xpZGUgPT09IHVuZGVmaW5lZCA/IDAgOiBldmVudC5tb2RhbHNsaWRlLCB3aW5kb3cuUlNfNjBfTU9EQUxTID09PSB1bmRlZmluZWQgfHwgLTEgPT0galF1ZXJ5LmluQXJyYXkoZXZlbnQubW9kYWwsIHdpbmRvdy5SU182MF9NT0RBTFMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUi5zaG93TW9kYWxDb3ZlcihpZCwgZXZlbnQsICJzaG93Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICJyZXZzbGlkZXJfYWpheF9jYWxsX2Zyb250IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfYWN0aW9uOiAiZ2V0X3NsaWRlcl9odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhczogZXZlbnQubW9kYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U6ICJtb2RhbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInBvc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogX1JbaWRdLmFqYXhVcmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9PSBlLnN1Y2Nlc3MgPyAoalF1ZXJ5KCJib2R5IikuYXBwZW5kKGUuZGF0YSksIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUi5zaG93TW9kYWxDb3ZlcihpZCwgZXZlbnQsICJoaWRlIiksIF9SLmRvY3VtZW50LnRyaWdnZXIoIlJTX09QRU5NT0RBTF8iICsgZXZlbnQubW9kYWwsIGV2ZW50Lm1vZGFsc2xpZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDQ5KSkgOiBfUi5zaG93TW9kYWxDb3ZlcihpZCwgZXZlbnQsICJoaWRlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SLnNob3dNb2RhbENvdmVyKGlkLCBldmVudCwgImhpZGUiKSwgY29uc29sZS5sb2coIk1vZGFsIENhbiBub3QgYmUgTG9hZGVkIiksIGNvbnNvbGUubG9nKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIF9SLmRvY3VtZW50LnRyaWdnZXIoIlJTX09QRU5NT0RBTF8iICsgZXZlbnQubW9kYWwsIGV2ZW50Lm1vZGFsc2xpZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjbG9zZW1vZGFsIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1IucmV2TW9kYWwoaWQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJjbG9zZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNhbGxiYWNrIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChldmVudC5jYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNpbXBsZWxpbmsiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihldmVudC51cmwsIGV2ZW50LnRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNpbXVsYXRlY2xpY2siOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRsYXllci5sZW5ndGggPiAwICYmIHRhcmdldGxheWVyLnRyaWdnZXIoImNsaWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvZ2dsZWNsYXNzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0bGF5ZXIubGVuZ3RoID4gMCAmJiB0YXJnZXRsYXllci50b2dnbGVDbGFzcyhldmVudC5jbGFzc25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzY3JvbGxiZWxvdyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2Nyb2xsdG8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Nyb2xsYmVsb3ciID09PSBldmVudC5hY3Rpb24gJiYgbGF5ZXIuYWRkQ2xhc3MoInRwLXNjcm9sbGJlbG93c2xpZGVyIiksIF9SLnNjcm9sbFRvSWQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBldmVudC5vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IGV2ZW50LmFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcjogZXZlbnQuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZDogZXZlbnQuc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBldmVudC5lYXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJqdW1wdG9zbGlkZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQuc2xpZGUudG9Mb3dlckNhc2UoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicnMtcmFuZG9tIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIF9SW2lkXS5yZWFsc2xpZGVhbW91bnQpIC0gMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzID0gX1JbaWRdLmFjdGl2ZVJTU2xpZGUgPT0gdHMgPyB0cyA+IDAgPyB0cyAtIDEgOiB0cyArIDEgOiB0cywgX1IuY2FsbGluZ05ld1NsaWRlKGlkLCBfUltpZF0uc2xpZGVzW3RzXS5kYXRhc2V0LmtleSwgImNhcm91c2VsIiA9PT0gX1JbaWRdLnNsaWRlclR5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiKzEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibmV4dCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJycy1uZXh0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUltpZF0uc2NfaW5kaWNhdG9yID0gImFycm93IiwgX1JbaWRdLnNjX2luZGljYXRvcl9kaXIgPSAwLCBfUi5jYWxsaW5nTmV3U2xpZGUoaWQsIDEsICJjYXJvdXNlbCIgPT09IF9SW2lkXS5zbGlkZXJUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJzLXByZXZpb3VzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJzLXByZXYiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicHJldmlvdXMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicHJldiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICItMSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JbaWRdLnNjX2luZGljYXRvciA9ICJhcnJvdyIsIF9SW2lkXS5zY19pbmRpY2F0b3JfZGlyID0gMSwgX1IuY2FsbGluZ05ld1NsaWRlKGlkLCAtMSwgImNhcm91c2VsIiA9PT0gX1JbaWRdLnNsaWRlclR5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZmlyc3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicnMtZmlyc3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SW2lkXS5zY19pbmRpY2F0b3IgPSAiYXJyb3ciLCBfUltpZF0uc2NfaW5kaWNhdG9yX2RpciA9IDEsIF9SLmNhbGxpbmdOZXdTbGlkZShpZCwgMCwgImNhcm91c2VsIiA9PT0gX1JbaWRdLnNsaWRlclR5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGFzdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJycy1sYXN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUltpZF0uc2NfaW5kaWNhdG9yID0gImFycm93IiwgX1JbaWRdLnNjX2luZGljYXRvcl9kaXIgPSAwLCBfUi5jYWxsaW5nTmV3U2xpZGUoaWQsIF9SW2lkXS5zbGlkZWFtb3VudCAtIDEsICJjYXJvdXNlbCIgPT09IF9SW2lkXS5zbGlkZXJUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gX1IuaXNOdW1lcmljKGV2ZW50LnNsaWRlKSA/IHBhcnNlSW50KGV2ZW50LnNsaWRlLCAwKSA6IGV2ZW50LnNsaWRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SLmNhbGxpbmdOZXdTbGlkZShpZCwgdHMsICJjYXJvdXNlbCIgPT09IF9SW2lkXS5zbGlkZXJUeXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvZ2dsZXNsaWRlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SW2lkXS5ub2xvb3Bhbnltb3JlID0gMCwgInBsYXlpbmciID09IF9SW2lkXS5zbGlkZXJzdGF0dXMgPyAoX1JbaWRdLmMucmV2cGF1c2UoKSwgX1JbaWRdLmZvcmNlcGF1c2VkID0gITAsIF9SLnVuVG9nZ2xlU3RhdGUoX1JbaWRdLnNsaWRlcnRvZ2dsZWRieSkpIDogKF9SW2lkXS5mb3JjZXBhdXNlZCA9ICExLCBfUltpZF0uYy5yZXZyZXN1bWUoKSwgX1IudG9nZ2xlU3RhdGUoX1JbaWRdLnNsaWRlcnRvZ2dsZWRieSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwYXVzZXNsaWRlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SW2lkXS5jLnJldnBhdXNlKCksIF9SLnVuVG9nZ2xlU3RhdGUoX1JbaWRdLnNsaWRlcnRvZ2dsZWRieSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBsYXlzbGlkZXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUltpZF0ubm9sb29wYW55bW9yZSA9IDAsIF9SW2lkXS5jLnJldnJlc3VtZSgpLCBfUi50b2dnbGVTdGF0ZShfUltpZF0uc2xpZGVydG9nZ2xlZGJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZ29mdWxsc2NyZWVuIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJleGl0ZnVsbHNjcmVlbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG9nZ2xlZnVsbHNjcmVlbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCIucnMtZ28tZnVsbHNjcmVlbiIpLmxlbmd0aCA+IDAgJiYgKCJ0b2dnbGVmdWxsc2NyZWVuIiA9PSBldmVudC5hY3Rpb24gfHwgImV4aXRmdWxsc2NyZWVuIiA9PSBldmVudC5hY3Rpb24pID8gKGpRdWVyeSgiLnJzLWdvLWZ1bGxzY3JlZW4iKS5yZW1vdmVDbGFzcygicnMtZ28tZnVsbHNjcmVlbiIpLCBnZiA9IF9SW2lkXS5jLmNsb3Nlc3QoInJzLWZ1bGx3aWR0aC13cmFwIikubGVuZ3RoID4gMCA/IF9SW2lkXS5jLmNsb3Nlc3QoInJzLWZ1bGx3aWR0aC13cmFwIikgOiBfUltpZF0uYy5jbG9zZXN0KCJycy1tb2R1bGUtd3JhcCIpLCBfUltpZF0ubWluSGVpZ2h0ID0gX1JbaWRdLm9sZG1pbmhlaWdodCwgX1JbaWRdLmluZnVsbHNjcmVlbm1vZGUgPSAhMSwgX1JbaWRdLmMucmV2cmVkcmF3KCksIF9SW2lkXS5jLnJldnJlZHJhdygpLCBqUXVlcnkod2luZG93KS50cmlnZ2VyKCJyZXNpemUiKSwgX1IudW5Ub2dnbGVTdGF0ZShfUltpZF0uZnVsbHNjcmVlbnRvZ2dsZWRieSkpIDogMCAhPSBqUXVlcnkoIi5ycy1nby1mdWxsc2NyZWVuIikubGVuZ3RoIHx8ICJ0b2dnbGVmdWxsc2NyZWVuIiAhPSBldmVudC5hY3Rpb24gJiYgImdvZnVsbHNjcmVlbiIgIT0gZXZlbnQuYWN0aW9uIHx8IChnZiA9IF9SW2lkXS5jLmNsb3Nlc3QoInJzLWZ1bGx3aWR0aC13cmFwIikubGVuZ3RoID4gMCA/IF9SW2lkXS5jLmNsb3Nlc3QoInJzLWZ1bGx3aWR0aC13cmFwIikgOiBfUltpZF0uYy5jbG9zZXN0KCJycy1tb2R1bGUtd3JhcCIpLCBnZi5hZGRDbGFzcygicnMtZ28tZnVsbHNjcmVlbiIpLCBfUltpZF0ub2xkbWluaGVpZ2h0ID0gX1JbaWRdLm1pbkhlaWdodCwgX1JbaWRdLm1pbkhlaWdodCA9IF9SLmdldFdpbkgoaWQpLCBfUltpZF0uaW5mdWxsc2NyZWVubW9kZSA9ICEwLCBqUXVlcnkod2luZG93KS50cmlnZ2VyKCJyZXNpemUiKSwgX1IudG9nZ2xlU3RhdGUoX1JbaWRdLmZ1bGxzY3JlZW50b2dnbGVkYnkpLCBfUltpZF0uYy5yZXZyZWRyYXcoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SW2lkXS5jLnRyaWdnZXIoImxheWVyYWN0aW9uIiwgW2V2ZW50LmFjdGlvbiwgbGF5ZXIsIGV2ZW50XSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgW3RhcmdldGxheWVyLCBpZCwgZXZlbnQsIGxheWVyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIGdldEZvcmRXaXRoQWN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgIGZvciAodmFyIGkgaW4gZS5mb3JkKSBlLmZyYW1lc1tlLmZvcmRbaV1dLnRpbWVsaW5lLndhaXRvbmNhbGwgPyB0LnB1c2goZS5mb3JkW2ldKSA6IHQucHVzaCgic2tpcCIpOwogICAgICAgIHJldHVybiB0CiAgICB9CgogICAgZnVuY3Rpb24gdXBkYXRlVG9nZ2xlQnlMaXN0KGUsIHQsIGkpIHsKICAgICAgICB2YXIgYSA9IGUuZGF0YSh0KTsKICAgICAgICBhID09PSB1bmRlZmluZWQgJiYgKGEgPSBbXSksIGEucHVzaChpKSwgZS5kYXRhKHQsIGEpCiAgICB9CgogICAgZnVuY3Rpb24gZ2V0RXZlbnRQYXJhbXMoZSkgewogICAgICAgIHZhciB0ID0gewogICAgICAgICAgICBvbjogImNsaWNrIiwKICAgICAgICAgICAgZGVsYXk6IDAsCiAgICAgICAgICAgIGVhc2U6ICJwb3dlcjIub3V0IiwKICAgICAgICAgICAgc3BlZWQ6IDQwMAogICAgICAgIH07CiAgICAgICAgZm9yICh2YXIgaSBpbiBlKQogICAgICAgICAgICBpZiAoZS5oYXNPd25Qcm9wZXJ0eShpKSkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBlW2ldLnNwbGl0KCI6Iik7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGEubGVuZ3RoID4gMiAmJiAiY2FsbCIgPT09IGFbMF0gJiYgKGFbMV0gPSBhLmpvaW4oIjoiKS5yZXBsYWNlKGFbMF0gKyAiOiIsICIiKSksIGFbMF0pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJtb2RhbCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQubW9kYWwgPSBhWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJtcyI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQubW9kYWxzbGlkZSA9IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgICAgICAgICAgICB0LmZyYW1lTSA9IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIm4iOgogICAgICAgICAgICAgICAgICAgICAgICB0LmZyYW1lTiA9IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIm8iOgogICAgICAgICAgICAgICAgICAgICAgICB0Lm9uID0gImNsaWNrIiA9PT0gYVsxXSB8fCAiYyIgPT09IGFbMV0gPyAiY2xpY2siIDogIm1sIiA9PT0gYVsxXSB8fCAibW91c2VsZWF2ZSIgPT09IGFbMV0gPyAibW91c2VsZWF2ZSIgOiAibW91c2VlbnRlciIgPT09IGFbMV0gfHwgIm1lIiA9PT0gYVsxXSA/ICJtb3VzZWVudGVyIiA6IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgICAgICAgICAgICB0LmRlbGF5ID0gcGFyc2VJbnQoYVsxXSwgMCkgLyAxZTMsIHQuZGVsYXkgPSAiTmFOIiA9PT0gdC5kZWxheSB8fCBpc05hTih0LmRlbGF5KSA/IDAgOiB0LmRlbGF5OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJyZCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQucmVwZWF0ID0gcGFyc2VJbnQoYVsxXSwgMCkgLyAxZTMsIHQucmVwZWF0ID0gIk5hTiIgPT09IHQucmVwZWF0IHx8IGlzTmFOKHQucmVwZWF0KSA/IDAgOiB0LnJlcGVhdDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQuYWN0aW9uID0gYVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZiI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZnJhbWUgPSBhWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJzbGlkZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2xpZGUgPSBhWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJsYXllciI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQubGF5ZXIgPSBhWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJzcCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc3BlZWQgPSBwYXJzZUludChhWzFdLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZWFzZSA9IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImxzIjoKICAgICAgICAgICAgICAgICAgICAgICAgdC50b2dnbGVzdGF0ZSA9IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIm9mZnNldCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQub2Zmc2V0ID0gYVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiY2FsbCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQuY2FsbGJhY2sgPSBhWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ1cmwiOgogICAgICAgICAgICAgICAgICAgICAgICB0LnVybCA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gMTsgciA8IGEubGVuZ3RoOyByKyspIHQudXJsICs9IGFbcl0gKyAociA9PT0gYS5sZW5ndGggLSAxID8gIiIgOiAiOiIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ0YXJnZXQiOgogICAgICAgICAgICAgICAgICAgICAgICB0LnRhcmdldCA9IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImNsYXNzIjoKICAgICAgICAgICAgICAgICAgICAgICAgdC5jbGFzc25hbWUgPSBhWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJjaCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQuY2hpbGRyZW4gPSAidHJ1ZSIgPT0gYVsxXSB8fCAxID09IGFbMV0gfHwgInQiID09IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGFbMF0ubGVuZ3RoID4gMCAmJiAiIiAhPT0gYVswXSAmJiAodFthWzBdXSA9IGFbMV0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICByZXR1cm4gdAogICAgfQogICAgdmFyIGdldE9mZkNvbnRIID0gZnVuY3Rpb24oZSkgewogICAgICAgIGlmIChlID09IHVuZGVmaW5lZCkgcmV0dXJuIDA7CiAgICAgICAgaWYgKGUuc3BsaXQoIiwiKS5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5zcGxpdCgiLCIpLAogICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgIHJldHVybiB0ICYmIGpRdWVyeS5lYWNoKHQsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGpRdWVyeSh0KS5sZW5ndGggPiAwICYmIChpICs9IGpRdWVyeSh0KS5vdXRlckhlaWdodCghMCkpCiAgICAgICAgICAgIH0pLCBpCiAgICAgICAgfQogICAgICAgIHJldHVybiBqUXVlcnkoZSkuaGVpZ2h0KCkKICAgIH0KfShqUXVlcnkpLApmdW5jdGlvbihlKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgdCA9IGpRdWVyeS5mbi5yZXZvbHV0aW9uOwogICAgdC5pc19tb2JpbGUoKTsKICAgIGpRdWVyeS5leHRlbmQoITAsIHQsIHsKICAgICAgICBwcmVwYXJlQ2Fyb3VzZWw6IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gZSkgewogICAgICAgICAgICAgICAgdmFyIG8gPSB0W2VdLmNhcm91c2VsOwogICAgICAgICAgICAgICAgby5zbGlkZXBvc2l0aW9ucyA9IHZvaWQgMCA9PT0gby5zbGlkZXBvc2l0aW9ucyA/IFtdIDogby5zbGlkZXBvc2l0aW9ucywgby5zbGlkZUZha2VQb3NpdGlvbnMgPSB2b2lkIDAgPT09IG8uc2xpZGVGYWtlUG9zaXRpb25zID8gW10gOiBvLnNsaWRlRmFrZVBvc2l0aW9ucywgaSA9IG8ubGFzdGRpcmVjdGlvbiA9IHIoaSwgby5sYXN0ZGlyZWN0aW9uKSwgdC5zZXRDYXJvdXNlbERlZmF1bHRzKGUpLCB2b2lkIDAgPT09IG8uc2xpZGVwb3NpdGlvbnNbMF0gJiYgKG8uc2xpZGVBbmltcyA9IFtdLCB0Lm9yZ2FuaXNlQ2Fyb3VzZWwoZSwgInJpZ2h0IiwgITAsICExLCAhMSksIG8uZm9jdXNlZCA9IDAsIG8ua2VlcEZvY3VzZWRGaXJzdCA9ICEwKSwgby5zbGlkZV9vZmZzZXQgPSB2b2lkIDAgIT09IG8uc2xpZGVfb2Zmc2V0ICYmIHQuaXNOdW1lcmljKG8uc2xpZGVfb2Zmc2V0KSA/IG8uc2xpZGVfb2Zmc2V0IDogMCwgby5zd2lwZVRvID0gby5zbGlkZV9vZmZzZXQgKyBzKGUpLCBvLnN3aXBlVG9EaXN0YW5jZSA9IE1hdGguYWJzKG8uc2xpZGVfb2Zmc2V0KSArIE1hdGguYWJzKHMoZSkpLCB2b2lkIDAgIT09IG8uc3dpcGVUbyAmJiB0LmlzTnVtZXJpYyhvLnN3aXBlVG8pID8gdm9pZCAwICE9PSBhID8gdC5zd2lwZUFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgICAgIHRvOiBvLnN3aXBlVG8sCiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IG8uc3dpcGVUb0Rpc3RhbmNlLAogICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogaSwKICAgICAgICAgICAgICAgICAgICBmaXg6ICEwLAogICAgICAgICAgICAgICAgICAgIHNwZWVkOiBhCiAgICAgICAgICAgICAgICB9KSA6IHQuc3dpcGVBbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICBpZDogZSwKICAgICAgICAgICAgICAgICAgICB0bzogby5zd2lwZVRvLAogICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBvLnN3aXBlVG9EaXN0YW5jZSwKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGksCiAgICAgICAgICAgICAgICAgICAgZml4OiAhMAogICAgICAgICAgICAgICAgfSkgOiB0LnN3aXBlQW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgaWQ6IGUsCiAgICAgICAgICAgICAgICAgICAgdG86IDAsCiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBpLAogICAgICAgICAgICAgICAgICAgIHNwZWVkOiAwCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBjYXJvdXNlbFRvRXZhbFBvc2l0aW9uOiBmdW5jdGlvbihlLCBhLCBvKSB7CiAgICAgICAgICAgIHZhciBzID0gdFtlXS5jYXJvdXNlbDsKICAgICAgICAgICAgaWYgKHMuanVzdGlmeSkgcy5mb2N1c2VkID0gdm9pZCAwID09PSBzLmZvY3VzZWQgPyAwIDogcy5mb2N1c2VkLCBzLnNsaWRlcG9zaXRpb25zW3MuZm9jdXNlZF0gPSB2b2lkIDAgPT09IHMuc2xpZGVwb3NpdGlvbnNbcy5mb2N1c2VkXSA/IDAgOiBzLnNsaWRlcG9zaXRpb25zW3MuZm9jdXNlZF0sIHMuc2xpZGVfb2Zmc2V0X3RhcmdldCA9IGkoZSwgcy5mb2N1c2VkKTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBhID0gcy5sYXN0ZGlyZWN0aW9uID0gcihhLCBzLmxhc3RkaXJlY3Rpb24pOwogICAgICAgICAgICAgICAgdmFyIG4gPSAiY2VudGVyIiA9PT0gcy5ob3Jpem9udGFsX2FsaWduID8gKHMud3JhcHdpZHRoIC8gMiAtIHMuc2xpZGVfd2lkdGggLyAyIC0gcy5zbGlkZV9vZmZzZXQpIC8gcy5zbGlkZV93aWR0aCA6ICgwIC0gcy5zbGlkZV9vZmZzZXQpIC8gcy5zbGlkZV93aWR0aCwKICAgICAgICAgICAgICAgICAgICBkID0gbiAlIHRbZV0uc2xpZGVhbW91bnQsCiAgICAgICAgICAgICAgICAgICAgbCA9IGQgLSBNYXRoLmZsb29yKGQpLAogICAgICAgICAgICAgICAgICAgIGMgPSAtMSAqIChNYXRoLmNlaWwoZCkgLSBkKSwKICAgICAgICAgICAgICAgICAgICBwID0gLTEgKiAoTWF0aC5mbG9vcihkKSAtIGQpLAogICAgICAgICAgICAgICAgICAgIGcgPSBsICogcy5zbGlkZV93aWR0aCwKICAgICAgICAgICAgICAgICAgICB1ID0gZyA+PSAyMCAmJiAibGVmdCIgPT09IGEgPyAxIDogZyA+PSBzLnNsaWRlX3dpZHRoIC0gMjAgJiYgInJpZ2h0IiA9PT0gYSA/IDIgOiBnIDwgMjAgJiYgImxlZnQiID09PSBhID8gMyA6IGcgPCBzLnNsaWRlX3dpZHRoIC0gMjAgJiYgInJpZ2h0IiA9PT0gYSA/IDQgOiA1LAogICAgICAgICAgICAgICAgICAgIGggPSAxID09PSB1IHx8IDIgPT09IHUgPyBjIDogMyA9PT0gdSB8fCA0ID09PSB1ID8gcCA6IDA7CiAgICAgICAgICAgICAgICBzLnNsaWRlX29mZnNldF90YXJnZXQgPSAocy5pbmZpbml0eSA/IGggOiBkIDwgMCA/IGQgOiBuID4gdFtlXS5zbGlkZWFtb3VudCAtIDEgPyBuIC0gKHRbZV0uc2xpZGVhbW91bnQgLSAxKSA6IGgpICogcy5zbGlkZV93aWR0aAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzLnNsaWRlX29mZnNldF90YXJnZXQgIT09IHMuc2xpZGVfb2Zmc2V0X3RhcmdldENBQ0hFICYmICEwICE9PSBvICYmICgwICE9PSBNYXRoLmFicyhzLnNsaWRlX29mZnNldF90YXJnZXQpID8gdC5hbmltYXRlQ2Fyb3VzZWwoZSwgYSwgITApIDogdC5vcmdhbmlzZUNhcm91c2VsKGUsIGEpLCBzLnNsaWRlX29mZnNldF90YXJnZXRDQUNIRSA9IHMuc2xpZGVfb2Zmc2V0X3RhcmdldCksIHMuc2xpZGVfb2Zmc2V0X3RhcmdldAogICAgICAgIH0sCiAgICAgICAgbG9hZFZpc2libGVDYXJvdXNlbEl0ZW1zOiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIHZhciBhID0gW107CiAgICAgICAgICAgIHRbZV0uY2Fyb3VzZWwuZm9jdXNlZCA9IHBhcnNlSW50KHRbZV0uY2Fyb3VzZWwuZm9jdXNlZCwgMCksIHRbZV0uY2Fyb3VzZWwuZm9jdXNlZCA9IHQuaXNOdW1lcmljKHRbZV0uY2Fyb3VzZWwuZm9jdXNlZCkgPyB0W2VdLmNhcm91c2VsLmZvY3VzZWQgOiAwOwogICAgICAgICAgICBmb3IgKHZhciByID0gMDsgciA8IE1hdGguY2VpbCh0W2VdLmNhcm91c2VsLm1heFZpc2libGVJdGVtcyAvIDIpOyByKyspIHsKICAgICAgICAgICAgICAgIHZhciBvID0gInJpZ2h0IiA9PT0gdFtlXS5jYXJvdXNlbC5ob3Jpem9udGFsX2FsaWduID8gdFtlXS5jYXJvdXNlbC5mb2N1c2VkIC0gciA6IHRbZV0uY2Fyb3VzZWwuZm9jdXNlZCArIHIsCiAgICAgICAgICAgICAgICAgICAgcyA9ICJjZW50ZXIiID09PSB0W2VdLmNhcm91c2VsLmhvcml6b250YWxfYWxpZ24gPyB0W2VdLmNhcm91c2VsLmZvY3VzZWQgLSByIDogImxlZnQiID09PSB0W2VdLmNhcm91c2VsLmhvcml6b250YWxfYWxpZ24gPyB0W2VdLmNhcm91c2VsLm1heFZpc2libGVJdGVtcyArIG8gLSAxIDogbyAtIHRbZV0uY2Fyb3VzZWwubWF4VmlzaWJsZUl0ZW1zICsgMTsKICAgICAgICAgICAgICAgIG8gPSBvID49IHRbZV0uc2xpZGVhbW91bnQgPyBvIC0gdFtlXS5zbGlkZWFtb3VudCArIDAgOiBvLCBzID0gcyA+PSB0W2VdLnNsaWRlYW1vdW50ID8gcyAtIHRbZV0uc2xpZGVhbW91bnQgKyAwIDogcywgbyA9IG8gPCAwID8gdFtlXS5zbGlkZWFtb3VudCArIG8gOiBvLCBzID0gcyA8IDAgPyB0W2VdLnNsaWRlYW1vdW50ICsgcyA6IHMsIGEucHVzaCh0W2VdLnNsaWRlc1tvXSksIG8gIT09IHMgJiYgYS5wdXNoKHRbZV0uc2xpZGVzW3NdKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBpICYmICh0LmxvYWRJbWFnZXMoYSwgZSwgMSksIHQud2FpdEZvckN1cnJlbnRJbWFnZXMoYSwgZSkpLCBhCiAgICAgICAgfSwKICAgICAgICBvcmdhbmlzZUNhcm91c2VsOiBmdW5jdGlvbihlLCBpLCBhLCByLCBvKSB7CiAgICAgICAgICAgIE1hdGgucm91bmQoMWU1ICogTWF0aC5yYW5kb20oKSk7CiAgICAgICAgICAgIHZhciBzID0gdFtlXS5jYXJvdXNlbCwKICAgICAgICAgICAgICAgIG4gPSAiY2VudGVyIiA9PT0gcy5ob3Jpem9udGFsX2FsaWduID8gMiA6IDEsCiAgICAgICAgICAgICAgICBkID0gTWF0aC5jZWlsKHMubWF4VmlzaWJsZUl0ZW1zIC8gbiksCiAgICAgICAgICAgICAgICBsID0gImNlbnRlciIgPT09IHMuaG9yaXpvbnRhbF9hbGlnbiA/IHMud3JhcHdpZHRoIC8gMiArIHMubWF4d2lkdGggLyAyIDogcy5tYXh3aWR0aCAtIHMuc2xpZGVfd2lkdGgsCiAgICAgICAgICAgICAgICBjID0gImNlbnRlciIgPT09IHMuaG9yaXpvbnRhbF9hbGlnbiA/IHMud3JhcHdpZHRoIC8gMiAtIHMubWF4d2lkdGggLyAyIDogMCAtIHMuc2xpZGVfd2lkdGgsCiAgICAgICAgICAgICAgICBwID0gMCwKICAgICAgICAgICAgICAgIGcgPSAwLAogICAgICAgICAgICAgICAgdSA9IDA7CiAgICAgICAgICAgIGlmIChzLm9jZmlyc3R0dW4gPSAhMCwgaSA9IHMuc2xpZGVfb2Zmc2V0IDwgcy5jYWNoZWRfc2xpZGVfb2Zmc2V0ID8gImxlZnQiIDogInJpZ2h0Iiwgcy5jYWNoZWRfc2xpZGVfb2Zmc2V0ID0gcy5zbGlkZV9vZmZzZXQsICEwICE9PSBzLmp1c3RpZnkgJiYgImNlbnRlciIgPT09IHMuaG9yaXpvbnRhbF9hbGlnbikgewogICAgICAgICAgICAgICAgdmFyIGggPSAyICogKHMud2luZGhhbGYgLSBzLndyYXBvZmZzZXQpICsgcy5zbGlkZV93aWR0aDsKICAgICAgICAgICAgICAgIGggPj0gcy5tYXh3aWR0aCAmJiAoImxlZnQiID09PSBpICYmIChsID0gMiAqIHMud2luZGhhbGYsIGMgPSAwIC0gKHMuc2xpZGVfd2lkdGggLSAoaCAtIHMubWF4d2lkdGgpKSksICJyaWdodCIgPT09IGkgJiYgKGwgPSAyICogcy53aW5kaGFsZiAtIChoIC0gcy5tYXh3aWR0aCksIGMgPSAwIC0gcy5zbGlkZV93aWR0aCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICh2YXIgbSA9IDIgKiBzLndpbmRoYWxmLCB2ID0gMCwgZiA9IC0xLCB5ID0gMDsgeSA8IHMubGVuOyB5KyspICEwID09PSBzLmp1c3RpZnkgPyAocCArPSB5ID4gMCA/IHMuc2xpZGVfd2lkdGhzW3kgLSAxXSArIHMuc3BhY2UgOiBzLnNsaWRlX29mZnNldCwgcy53cmFwd2lkdGggPj0gcy5tYXh3aWR0aCAmJiAiY2VudGVyIiAhPT0gcy5ob3Jpem9udGFsX2FsaWduICYmIChzLnNsaWRlRmFrZVBvc2l0aW9uc1t5XSA9IHAgLSBzLnNsaWRlX29mZnNldCksIGMgPSAwIC0gcy5zbGlkZV93aWR0aHNbeV0sIGwgPSBzLm1heHdpZHRoIC0gcy5zbGlkZV93aWR0aHNbeV0sIHMuaW5uZXJvZmZzZXQgPSAwKSA6IChwID0geSAqIHMuc2xpZGVfd2lkdGggKyBzLnNsaWRlX29mZnNldCwgcy53cmFwd2lkdGggPj0gcy5tYXh3aWR0aCAmJiAibGVmdCIgPT09IHMuaG9yaXpvbnRhbF9hbGlnbiAmJiAocy5zbGlkZUZha2VQb3NpdGlvbnNbeV0gPSB5ICogcy5zbGlkZV93aWR0aCksIHMud3JhcHdpZHRoID49IHMubWF4d2lkdGggJiYgInJpZ2h0IiA9PT0gcy5ob3Jpem9udGFsX2FsaWduICYmIChzLnNsaWRlRmFrZVBvc2l0aW9uc1t5XSA9IHMud3JhcHdpZHRoIC0gKHkgKyAxKSAqIHMuc2xpZGVfd2lkdGgpKSwgdSA9IGcgPSBwLCBzLmluZmluaXR5ICYmIChnID0gZyA+PSBsIC0gcy5pbm5lcm9mZnNldCA/IGcgLSBzLm1heHdpZHRoIDogZyA8PSBjIC0gcy5pbm5lcm9mZnNldCA/IGcgKyBzLm1heHdpZHRoIDogZyksIG0gPiBnICYmIChtID0gZywgeSksIHYgPCBnICYmICh2ID0gZywgZiA9IHkpLCBzLnNsaWRlcG9zaXRpb25zW3ldID0gdSA+IHMubWF4d2lkdGggKyBsID8gZyAtIHMubWF4d2lkdGggOiB1IDwgYyAtIHMubWF4d2lkdGggPyBnICsgcy5tYXh3aWR0aCA6IGc7CiAgICAgICAgICAgIHMuaW5maW5pdHkgJiYgbSA+IDAgJiYgdiA+IHMud3JhcHdpZHRoICYmIChzLnNsaWRlcG9zaXRpb25zW2ZdIC09IHMubWF4d2lkdGgpOwogICAgICAgICAgICB2YXIgYiA9IDk5OSwKICAgICAgICAgICAgICAgIHcgPSAwLAogICAgICAgICAgICAgICAgXyA9ICh0W2VdLm1vZHVsZS53aWR0aCwgITEpLAogICAgICAgICAgICAgICAgUyA9ICJyaWdodCIgPT09IHMuaG9yaXpvbnRhbF9hbGlnbiA/IDAgOiBzLndyYXB3aWR0aDsKICAgICAgICAgICAgaWYgKHRbZV0uc2xpZGVzKQogICAgICAgICAgICAgICAgZm9yICh5ID0gMDsgeSA8IHRbZV0uc2xpZGVzLmxlbmd0aDsgeSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAoZyA9IHMuc2xpZGVwb3NpdGlvbnNbeV0pICsgcy5pbm5lcm9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAhMCA9PT0gcy5qdXN0aWZ5ID8gcy5zbGlkZV93aWR0aHNbeV0gOiBzLnNsaWRlX3dpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBzLnNsaWRlQW5pbXNbeV0gJiYgKHgudHJhbnNmb3JtT3JpZ2luID0gIjUwJSAiICsgcy52ZXJ0aWNhbF9hbGlnbiwgeC5zY2FsZSA9IDEsIHguZm9yY2UzRCA9ICEwLCB4LnRyYW5zZm9ybVN0eWxlID0gIjNEIiAhPSB0W2VdLnBhcmFsbGF4LnR5cGUgJiYgIjNkIiAhPSB0W2VdLnBhcmFsbGF4LnR5cGUgPyAiZmxhdCIgOiAicHJlc2VydmUtM2QiKSwgcy5qdXN0aWZ5KSB4LmF1dG9BbHBoYSA9IDEsIHMud3JhcHdpZHRoID49IHMubWF4d2lkdGggJiYgImNlbnRlciIgIT09IHMuaG9yaXpvbnRhbF9hbGlnbiB8fCAoImNlbnRlciIgPT09IHMuaG9yaXpvbnRhbF9hbGlnbiAmJiBzLnNsaWRlcG9zaXRpb25zW3ldIDwgcy53aW5kaGFsZiAmJiBzLnNsaWRlcG9zaXRpb25zW3ldICsgcy5zbGlkZV93aWR0aHNbeV0gPiBzLndpbmRoYWxmID8gcy5mb2N1c2VkID0geSA6ICJsZWZ0IiA9PT0gcy5ob3Jpem9udGFsX2FsaWduICYmIHMuc2xpZGVwb3NpdGlvbnNbeV0gPj0gLTI1ICYmIHMuc2xpZGVwb3NpdGlvbnNbeV0gPCBzLndpbmRoYWxmICYmICghXyB8fCBzLnNsaWRlcG9zaXRpb25zW3ldIDwgUykgPyAocy5mb2N1c2VkID0geSwgXyA9ICEwLCBTID0gcy5zbGlkZXBvc2l0aW9uc1t5XSkgOiAicmlnaHQiID09PSBzLmhvcml6b250YWxfYWxpZ24gJiYgcy5zbGlkZXBvc2l0aW9uc1t5XSArIHMuc2xpZGVfd2lkdGhzW3ldIDw9IHMud3JhcHdpZHRoICsgMjUgJiYgKHMuc2xpZGVfd2lkdGhzW3ldIDwgcy53aW5kaGFsZiAmJiBzLnNsaWRlcG9zaXRpb25zW3ldID4gcy53aW5kaGFsZiB8fCBzLnNsaWRlcG9zaXRpb25zW3ldID4gcy53cmFwd2lkdGggLSBzLnNsaWRlX3dpZHRoc1t5XSkgJiYgKCFfIHx8IHMuc2xpZGVwb3NpdGlvbnNbeV0gPiBTKSAmJiAocy5mb2N1c2VkID0geSwgXyA9ICEwLCBTID0gcy5zbGlkZXBvc2l0aW9uc1t5XSksIHMuZm9jdXNlZCA9IHMuZm9jdXNlZCA+PSBzLmxlbiA/IHMuaW5maW5pdHkgPyAwIDogcy5sZW4gLSAxIDogcy5mb2N1c2VkIDwgMCA/IHMuaW5maW5pdHkgPyBzLmxlbiAtIDEgOiAwIDogcy5mb2N1c2VkKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgayA9ICJjZW50ZXIiID09PSBzLmhvcml6b250YWxfYWxpZ24gPyAoTWF0aC5hYnMocy53cmFwd2lkdGggLyAyKSAtICh4LmxlZnQgKyBzLnNsaWRlX3dpZHRoIC8gMikpIC8gcy5zbGlkZV93aWR0aCA6IChzLmlubmVyb2Zmc2V0IC0geC5sZWZ0KSAvIHMuc2xpZGVfd2lkdGgsIChNYXRoLmFicyhrKSA8IGIgfHwgMCA9PT0gaykgJiYgKGIgPSBNYXRoLmFicyhrKSwgcy5mb2N1c2VkID0geSksIHZvaWQgMCAhPT0gcy5taW5TY2FsZSAmJiBzLm1pblNjYWxlID4gMCAmJiAocy52YXJ5X3NjYWxlID8geC5zY2FsZSA9IDEgLSBNYXRoLmFicygoMSAtIHMubWluU2NhbGUpIC8gZCAqIGspIDogeC5zY2FsZSA9IGsgPj0gMSB8fCBrIDw9IC0xID8gcy5taW5TY2FsZSA6IHMubWluU2NhbGUgKyAoMSAtIHMubWluU2NhbGUpICogKDEgLSBNYXRoLmFicyhrKSksIHcgPSBrICogKHgud2lkdGggLSB4LndpZHRoICogeC5zY2FsZSkgLyAyKSwgcy5mYWRlb3V0ICYmIChzLnZhcnlfZmFkZSA/IHguYXV0b0FscGhhID0gMSAtIE1hdGguYWJzKHMubWF4T3BhY2l0eSAvIGQgKiBrKSA6IHguYXV0b0FscGhhID0gayA+PSAxIHx8IGsgPD0gLTEgPyBzLm1heE9wYWNpdHkgOiBzLm1heE9wYWNpdHkgKyAoMSAtIHMubWF4T3BhY2l0eSkgKiAoMSAtIE1hdGguYWJzKGspKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBMID0gTWF0aC5jZWlsKHMubWF4VmlzaWJsZUl0ZW1zIC8gbikgLSBNYXRoLmFicyhrKTsKICAgICAgICAgICAgICAgICAgICAgICAgeC5hdXRvQWxwaGEgPSB2b2lkIDAgPT09IHguYXV0b0FscGhhID8gMSA6IHguYXV0b0FscGhhLCB4LmF1dG9BbHBoYSA9IE1hdGgubWF4KDAsIE1hdGgubWluKEwsIHguYXV0b0FscGhhKSksIHZvaWQgMCAhPT0gcy5tYXhSb3RhdGlvbiAmJiAwICE9IE1hdGguYWJzKHMubWF4Um90YXRpb24pICYmIChzLnZhcnlfcm90YXRpb24gPyAoeC5yb3RhdGlvblkgPSBNYXRoLmFicyhzLm1heFJvdGF0aW9uKSAtIE1hdGguYWJzKCgxIC0gTWF0aC5hYnMoMSAvIGQgKiBrKSkgKiBzLm1heFJvdGF0aW9uKSwgeC5hdXRvQWxwaGEgPSBNYXRoLmFicyh4LnJvdGF0aW9uWSkgPiA5MCA/IDAgOiB4LmF1dG9BbHBoYSkgOiB4LnJvdGF0aW9uWSA9IGsgPj0gMSB8fCBrIDw9IC0xID8gcy5tYXhSb3RhdGlvbiA6IE1hdGguYWJzKGspICogcy5tYXhSb3RhdGlvbiwgeC5yb3RhdGlvblkgPSBrIDwgMCA/IC0xICogeC5yb3RhdGlvblkgOiB4LnJvdGF0aW9uWSwgdC5pc1NhZmFyaTExKCkgJiYgKHgueiA9IDAgIT09IGsgPyAwIC0gTWF0aC5hYnMoeC5yb3RhdGlvblkpIDogMCkpLCB4LnggPSBNYXRoLmZsb29yKC0xICogcy5zcGFjZSAqIGsgKiAocy5vZmZzZXRTY2FsZSA/IHguc2NhbGUgOiAxKSksIHZvaWQgMCAhPT0geC5zY2FsZSAmJiAoeC54ID0geC54ICsgdykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgeC54ICs9IHMud3JhcHdpZHRoID49IHMubWF4d2lkdGggJiYgKCJsZWZ0IiA9PT0gcy5ob3Jpem9udGFsX2FsaWduIHx8ICJyaWdodCIgPT09IHMuaG9yaXpvbnRhbF9hbGlnbikgPyBzLnNsaWRlRmFrZVBvc2l0aW9uc1t5XSA6IE1hdGguZmxvb3IoeC5sZWZ0KSwgZGVsZXRlIHgubGVmdCwgeC56SW5kZXggPSBzLmp1c3RpZnkgPyA5NSA6IE1hdGgucm91bmQoMTAwIC0gTWF0aC5hYnMoNSAqIGspKSwgITAgIT09IG8gJiYgKHZvaWQgMCAhPT0gcy5zbGlkZUFuaW1zW3ldICYmICh4LndpZHRoID09PSBzLnNsaWRlQW5pbXNbeV0ud2lkdGggJiYgZGVsZXRlIHgud2lkdGgsIHgueCA9PT0gcy5zbGlkZUFuaW1zW3ldLnggJiYgZGVsZXRlIHgueCwgeC5hdXRvQWxwaGEgPT09IHMuc2xpZGVBbmltc1t5XS5hdXRvQWxwaGEgJiYgZGVsZXRlIHguYXV0b0FscGhhLCB4LnNjYWxlID09PSBzLnNsaWRlQW5pbXNbeV0uc2NhbGUgJiYgZGVsZXRlIHguc2NhbGUsIHguekluZGV4ID09PSBzLnNsaWRlQW5pbXNbeV0uekluZGV4ICYmIGRlbGV0ZSB4LnpJbmRleCwgeC5yb3RhdGlvblkgPT09IHMuc2xpZGVBbmltc1t5XS5yb3RhdGlvblkgJiYgZGVsZXRlIHgucm90YXRpb25ZKSwgdHBHUy5nc2FwLnNldCh0W2VdLnNsaWRlc1t5XSwgeCksIHMuc2xpZGVBbmltc1t5XSA9IGpRdWVyeS5leHRlbmQoITAsIHMuc2xpZGVBbmltc1t5XSwgeCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0LmxvYWRWaXNpYmxlQ2Fyb3VzZWxJdGVtcyhlLCAhMCksIHIgJiYgITAgIT09IG8pIHsKICAgICAgICAgICAgICAgIGlmIChzLmZvY3VzZWQgPSB2b2lkIDAgPT09IHMuZm9jdXNlZCA/IDAgOiBzLmZvY3VzZWQsIHMub2xkZm9jdXNlZCA9IHZvaWQgMCA9PT0gcy5vbGRmb2N1c2VkID8gMCA6IHMub2xkZm9jdXNlZCwgdFtlXS5wcl9uZXh0X2tleSA9IHMuZm9jdXNlZCwgcy5mb2N1c2VkICE9PSBzLm9sZGZvY3VzZWQpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgUiBpbiB2b2lkIDAgIT09IHMub2xkZm9jdXNlZCAmJiB0LnJlbW92ZVRoZUxheWVycyhqUXVlcnkodFtlXS5zbGlkZXNbcy5vbGRmb2N1c2VkXSksIGUpLCB0LmFuaW1hdGVUaGVMYXllcnMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGU6IHMuZm9jdXNlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogInN0YXJ0IgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5hbmltYXRlVGhlTGF5ZXJzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlOiAiaW5kaXZpZHVhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IHRbZV0uY2Fyb3VzZWwuYWxsTGF5ZXJzU3RhcnRlZCA/ICJyZWJ1aWxkIiA6ICJzdGFydCIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRbZV0uc2JncykgdFtlXS5zYmdzLmhhc093blByb3BlcnR5KFIpICYmIHZvaWQgMCAhPT0gdFtlXS5zYmdzW1JdLmJndmlkICYmIDAgIT09IHRbZV0uc2Jnc1tSXS5iZ3ZpZC5sZW5ndGggJiYgKCIiICsgdFtlXS5zYmdzW1JdLnNrZXlpbmRleCA9PSAiIiArIHMuZm9jdXNlZCA/IHQucGxheUJHVmlkZW8oZSwgdC5nQSh0W2VdLnByX25leHRfc2xpZGVbMF0sICJrZXkiKSkgOiB0LnN0b3BCR1ZpZGVvKGUsIHRbZV0uc2Jnc1tSXS5rZXkpKTsKICAgICAgICAgICAgICAgIHMub2xkZm9jdXNlZCA9IHMuZm9jdXNlZCwgdFtlXS5jLnRyaWdnZXIoInJldm9sdXRpb24ubmV4dHNsaWRlLndhaXRpbmciKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBzd2lwZUFuaW1hdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIGkgPSB0W2UuaWRdLmNhcm91c2VsLAogICAgICAgICAgICAgICAgciA9IHsKICAgICAgICAgICAgICAgICAgICBmcm9tOiBpLnNsaWRlX29mZnNldCwKICAgICAgICAgICAgICAgICAgICB0bzogZS50bwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG8gPSB2b2lkIDAgPT09IGUuc3BlZWQgPyAuNSA6IGUuc3BlZWQ7CiAgICAgICAgICAgIGlmIChpLmRpc3RhbmNlID0gdm9pZCAwICE9PSBlLmRpc3RhbmNlID8gZS5kaXN0YW5jZSA6IGUudG8sIHZvaWQgMCAhPT0gaS5wb3NpdGlvbmFuaW0gJiYgaS5wb3NpdGlvbmFuaW0ucGF1c2UoKSwgZS5maXgpIHsKICAgICAgICAgICAgICAgIGlmICghMSAhPT0gaS5zbmFwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBpLnNsaWRlX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICJlbmQiID09PSBlLnBoYXNlID8gaS5mb2N1c2VkQmVmb3JlU3dpcGUgOiBpLmZvY3VzZWQ7CiAgICAgICAgICAgICAgICAgICAgaS5zbGlkZV9vZmZzZXQgPSBlLnRvLCB0Lm9yZ2FuaXNlQ2Fyb3VzZWwoZS5pZCwgZS5kaXJlY3Rpb24sICEwLCAhMSwgITEpLCBNYXRoLmFicyhpLnN3aXBlRGlzdGFuY2UpID4gNDAgJiYgbiA9PSBpLmZvY3VzZWQgJiYgKGkuZm9jdXNlZCA9ICJyaWdodCIgPT09IGUuZGlyZWN0aW9uID8gaS5mb2N1c2VkIC0gMSA6IGkuZm9jdXNlZCArIDEsIGkuZm9jdXNlZCA9IGkuZm9jdXNlZCA+PSBpLmxlbiA/IGkuaW5maW5pdHkgPyAwIDogaS5sZW4gLSAxIDogaS5mb2N1c2VkIDwgMCA/IGkuaW5maW5pdHkgPyBpLmxlbiAtIDEgOiAwIDogaS5mb2N1c2VkKSwgci50byArPSB0LmNhcm91c2VsVG9FdmFsUG9zaXRpb24oZS5pZCwgZS5kaXJlY3Rpb24sICEwKSwgaS5zbGlkZV9vZmZzZXQgPSBzLCB0Lm9yZ2FuaXNlQ2Fyb3VzZWwoZS5pZCwgZS5kaXJlY3Rpb24sICEwLCAhMSwgITEpLCBpLmtlZXBGb2N1c2VkRmlyc3QgJiYgKGkua2VlcEZvY3VzZWRGaXJzdCA9ICExLCBpLmZvY3VzZWQgPSAwKQogICAgICAgICAgICAgICAgfSBlbHNlICEwICE9PSBpLmluZmluaXR5ID8gKHIudG8gPiAwICYmIChyLnRvID0gMCksIHIudG8gPCBpLndyYXB3aWR0aCAtIGkubWF4d2lkdGggJiYgKHIudG8gPSBpLndyYXB3aWR0aCAtIGkubWF4d2lkdGgpKSA6ICJlbmQiID09PSBlLnBoYXNlID8gaS5kcmFnTW9kZUp1c3RFbmRlZCA9ICEwIDogITAgIT09IGkuZHJhZ01vZGVKdXN0RW5kZWQgPyByLnRvICs9IHQuY2Fyb3VzZWxUb0V2YWxQb3NpdGlvbihlLmlkLCBlLmRpcmVjdGlvbiwgITApIDogaS5kcmFnTW9kZUp1c3RFbmRlZCA9ICExOwogICAgICAgICAgICAgICAgMCAhPT0gKG8gPSBpLnNwZWVkIC8gMWUzICogYShNYXRoLmFicyhNYXRoLmFicyhyLmZyb20pIC0gTWF0aC5hYnMoaS5kaXN0YW5jZSkpIC8gaS53cmFwd2lkdGgpKSAmJiBvIDwgLjEgJiYgTWF0aC5hYnMoci50bykgPiAyNSAmJiAobyA9IC4zKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGkuc3dpcGVEaXN0YW5jZSA9IDAsIG8gPSAhMCAhPT0gaS5maXJzdFN3aXBlZERvbmUgPyAwIDogbywgaS5maXJzdFN3aXBlZERvbmUgPSAhMCwgaS5wb3NpdGlvbmFuaW0gPSB0cEdTLmdzYXAudG8ociwgbywgewogICAgICAgICAgICAgICAgZnJvbTogci50bywKICAgICAgICAgICAgICAgIG9uVXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpLnNsaWRlX29mZnNldCA9IHIuZnJvbSAlIGkubWF4d2lkdGgsIHQub3JnYW5pc2VDYXJvdXNlbChlLmlkLCBlLmRpcmVjdGlvbiwgITAgIT09IGUuZml4LCAhMCAhPT0gZS5maXgpLCBpLnNsaWRlX29mZnNldCA9IHIuZnJvbQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGkuc2xpZGVfb2Zmc2V0ID0gci5mcm9tICUgaS5tYXh3aWR0aCwgImNhcm91c2VsIiAhPT0gdFtlLmlkXS5zbGlkZXJUeXBlIHx8IGkuZmFkZWluIHx8ICh0cEdTLmdzYXAudG8odFtlLmlkXS5jYW52YXMsIDEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgICAgICAgICB9KSwgaS5mYWRlaW4gPSAhMCksIGkubGFzdE5vdFNpbXBsaWZlZFNsaWRlT2Zmc2V0ID0gaS5zbGlkZV9vZmZzZXQsIGkuanVzdERyYWdnZWQgPSAhMSwgZS5maXggJiYgKGkuZm9jdXNlZEFmdGVyQW5pbWF0aW9uID0gaS5mb2N1c2VkLCBlLm5ld1NsaWRlICYmIGkuZm9jdXNlZEJlZm9yZVN3aXBlICE9PSBpLmZvY3VzZWQgJiYgdC5jYWxsaW5nTmV3U2xpZGUoZS5pZCwgalF1ZXJ5KHRbZS5pZF0uc2xpZGVzW2kuZm9jdXNlZF0pLmRhdGEoImtleSIpLCAhMCksIHQub3JnYW5pc2VDYXJvdXNlbChlLmlkLCBlLmRpcmVjdGlvbiwgITAsICEwKSwgdFtlLmlkXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUuY2Fyb3VzZWxjaGFuZ2UiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlcjogZS5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVJbmRleDogcGFyc2VJbnQodFtlLmlkXS5wcl9hY3RpdmVfa2V5LCAwKSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlTElJbmRleDogdFtlLmlkXS5wcl9hY3RpdmVfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZTogdFtlLmlkXS5wcl9uZXh0X3NsaWRlLAogICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50c2xpZGU6IHRbZS5pZF0ucHJfbmV4dF9zbGlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJldlNsaWRlSW5kZXg6IHZvaWQgMCAhPT0gdFtlLmlkXS5wcl9sYXN0c2hvd25fa2V5ICYmIHBhcnNlSW50KHRbZS5pZF0ucHJfbGFzdHNob3duX2tleSwgMCkgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2U2xpZGVMSUluZGV4OiB2b2lkIDAgIT09IHRbZS5pZF0ucHJfbGFzdHNob3duX2tleSAmJiBwYXJzZUludCh0W2UuaWRdLnByX2xhc3RzaG93bl9rZXksIDApLAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2U2xpZGU6IHZvaWQgMCAhPT0gdFtlLmlkXS5wcl9sYXN0c2hvd25fa2V5ICYmIHRbZS5pZF0uc2xpZGVzW3RbZS5pZF0ucHJfbGFzdHNob3duX2tleV0KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlOiBlLmVhc2luZyA/IGUuZWFzaW5nIDogaS5lYXNpbmcKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGRlZmluZUNhcm91c2VsRWxlbWVudHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIGkgPSB0W2VdLmNhcm91c2VsOwogICAgICAgICAgICBpLmluZmJhY2t1cCA9IGkuaW5maW5pdHksIGkubWF4VmlzaWJsZWJhY2t1cCA9IGkubWF4VmlzaWJsZUl0ZW1zLCBpLnNsaWRlX29mZnNldCA9ICJub25lIiwgaS5zbGlkZV9vZmZzZXQgPSAwLCBpLmNhY2hlZF9zbGlkZV9vZmZzZXQgPSAwLCBpLndyYXAgPSBqUXVlcnkodFtlXS5jYW52YXNbMF0ucGFyZW50Tm9kZSksIDAgIT09IGkubWF4Um90YXRpb24gJiYgKCIzRCIgIT09IHRbZV0ucGFyYWxsYXgudHlwZSAmJiAiM2QiICE9PSB0W2VdLnBhcmFsbGF4LnR5cGUgfHwgdHBHUy5nc2FwLnNldChpLndyYXAsIHsKICAgICAgICAgICAgICAgIHBlcnNwZWN0aXZlOiAiMTYwMHB4IiwKICAgICAgICAgICAgICAgIHRyYW5zZm9ybVN0eWxlOiAicHJlc2VydmUtM2QiCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgc2V0Q2Fyb3VzZWxEZWZhdWx0czogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICB2YXIgYSA9IHRbZV0uY2Fyb3VzZWw7CiAgICAgICAgICAgIGlmIChhLnNsaWRlX3dpZHRoID0gITAgIT09IGEuc3RyZXRjaCA/IHRbZV0uZ3JpZHdpZHRoW3RbZV0ubGV2ZWxdICogKDAgPT09IHRbZV0uQ00udyA/IDEgOiB0W2VdLkNNLncpIDogdFtlXS5jYW52LndpZHRoLCBhLnNsaWRlX2hlaWdodCA9ICEwICE9PSBhLnN0cmV0Y2ggPyB0W2VdLmluZnVsbHNjcmVlbm1vZGUgPyB0LmdldFdpbkgoZSkgLSB0LmdldEZ1bGxzY3JlZW5PZmZzZXRzKGUpIDogdFtlXS5ncmlkaGVpZ2h0W3RbZV0ubGV2ZWxdICogKDAgPT09IHRbZV0uQ00udyA/IDEgOiB0W2VdLkNNLncpIDogdFtlXS5jYW52LmhlaWdodCwgYS5yYXRpbyA9IGEuc2xpZGVfd2lkdGggLyBhLnNsaWRlX2hlaWdodCwgYS5sZW4gPSB0W2VdLnNsaWRlcy5sZW5ndGgsIGEubWF4d2lkdGggPSB0W2VdLnNsaWRlYW1vdW50ICogYS5zbGlkZV93aWR0aCwgMSAhPSBhLmp1c3RpZnkgJiYgYS5tYXhWaXNpYmxlYmFja3VwID4gYS5sZW4gJiYgKGEubWF4VmlzaWJsZUl0ZW1zID0gYS5sZW4gJSAyID8gYS5sZW4gOiBhLmxlbiArIDEpLCBhLndyYXB3aWR0aCA9IGEubWF4VmlzaWJsZUl0ZW1zICogYS5zbGlkZV93aWR0aCArIChhLm1heFZpc2libGVJdGVtcyAtIDEpICogYS5zcGFjZSwgYS53cmFwd2lkdGggPSAiYXV0byIgIT0gdFtlXS5zbGlkZXJMYXlvdXQgPyBhLndyYXB3aWR0aCA+IHRbZV0uY2Fudi53aWR0aCA/IHRbZV0uY2Fudi53aWR0aCA6IGEud3JhcHdpZHRoIDogYS53cmFwd2lkdGggPiB0W2VdLm1vZHVsZS53aWR0aCA/IHRbZV0ubW9kdWxlLndpZHRoIDogYS53cmFwd2lkdGgsICEwID09PSBhLmp1c3RpZnkpIHsKICAgICAgICAgICAgICAgIGEuc2xpZGVfaGVpZ2h0ID0gImZ1bGxzY3JlZW4iID09PSB0W2VdLnNsaWRlckxheW91dCA/IHRbZV0ubW9kdWxlLmhlaWdodCA6IHRbZV0uZ3JpZGhlaWdodFt0W2VdLmxldmVsXSwgYS5zbGlkZV93aWR0aHMgPSBbXSwgYS5zbGlkZV93aWR0aHNDYWNoZSA9IHZvaWQgMCA9PT0gYS5zbGlkZV93aWR0aHNDYWNoZSA/IFtdIDogYS5zbGlkZV93aWR0aHNDYWNoZSwgYS5tYXh3aWR0aCA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gMDsgciA8IGEubGVuOyByKyspCiAgICAgICAgICAgICAgICAgICAgaWYgKHRbZV0uc2xpZGVzLmhhc093blByb3BlcnR5KHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdC5nQSh0W2VdLnNsaWRlc1tyXSwgImlyYXRpbyIpOwogICAgICAgICAgICAgICAgICAgICAgICBvID0gdm9pZCAwID09PSBvIHx8IDAgPT09IG8gfHwgbnVsbCA9PT0gbyA/IGEucmF0aW8gOiBvLCBhLnNsaWRlX3dpZHRoc1tyXSA9IE1hdGgucm91bmQoYS5zbGlkZV9oZWlnaHQgKiBvKSwgITEgIT09IGEuanVzdGlmeU1heFdpZHRoICYmIChhLnNsaWRlX3dpZHRoc1tyXSA9IE1hdGgubWluKGEud3JhcHdpZHRoLCBhLnNsaWRlX3dpZHRoc1tyXSkpLCBhLnNsaWRlX3dpZHRoc1tyXSAhPT0gYS5zbGlkZV93aWR0aHNDYWNoZVtyXSAmJiAoYS5zbGlkZV93aWR0aHNDYWNoZVtyXSA9IGEuc2xpZGVfd2lkdGhzW3JdLCAhMCAhPT0gaSAmJiB0cEdTLmdzYXAuc2V0KHRbZV0uc2xpZGVzW3JdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYS5zbGlkZV93aWR0aHNbcl0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBhLm1heHdpZHRoICs9IGEuc2xpZGVfd2lkdGhzW3JdICsgYS5zcGFjZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYS5pbmZpbml0eSA9ICEoYS53cmFwd2lkdGggPj0gYS5tYXh3aWR0aCkgJiYgYS5pbmZiYWNrdXAsICEwICE9PSBhLnF1aWNrbW9kZSkgewogICAgICAgICAgICAgICAgYS53cmFwb2Zmc2V0ID0gImNlbnRlciIgPT09IGEuaG9yaXpvbnRhbF9hbGlnbiA/ICh0W2VdLmNhbnYud2lkdGggLSB0W2VdLm91dE5hdkRpbXMucmlnaHQgLSB0W2VdLm91dE5hdkRpbXMubGVmdCAtIGEud3JhcHdpZHRoKSAvIDIgOiAwLCBhLndyYXBvZmZzZXQgPSAiYXV0byIgIT0gdFtlXS5zbGlkZXJMYXlvdXQgJiYgdFtlXS5vdXRlcm5hdiA/IDAgOiBhLndyYXBvZmZzZXQgPCB0W2VdLm91dE5hdkRpbXMubGVmdCA/IHRbZV0ub3V0TmF2RGltcy5sZWZ0IDogYS53cmFwb2Zmc2V0OwogICAgICAgICAgICAgICAgdmFyIHMgPSAiM0QiID09IHRbZV0ucGFyYWxsYXgudHlwZSB8fCAiM2QiID09IHRbZV0ucGFyYWxsYXgudHlwZSA/ICJ2aXNpYmxlIiA6ICJoaWRkZW4iLAogICAgICAgICAgICAgICAgICAgIG4gPSAicmlnaHQiID09PSBhLmhvcml6b250YWxfYWxpZ24gPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGEud3JhcG9mZnNldCArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLndyYXB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHMKICAgICAgICAgICAgICAgICAgICB9IDogImxlZnQiID09PSBhLmhvcml6b250YWxfYWxpZ24gfHwgYS53cmFwd2lkdGggPCB0LndpblcgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGEud3JhcG9mZnNldCArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLndyYXB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHMKICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICByaWdodDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBzCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gYS5jYWNoZVdyYXBPYmogJiYgbi5sZWZ0ID09PSBhLmNhY2hlV3JhcE9iai5sZWZ0ICYmIG4ucmlnaHQgPT09IGEuY2FjaGVXcmFwT2JqLnJpZ2h0ICYmIG4ud2lkdGggPT09IGEuY2FjaGVXcmFwT2JqLndpZHRoIHx8ICh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRwR1MuZ3NhcC5zZXQoYS53cmFwLCBuKSwgdFtlXS5jYXJvdXNlbC53cmFwb2Zmc2V0ID4gMCAmJiB0cEdTLmdzYXAuc2V0KHRbZV0uY2FudmFzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSksIGEuY2FjaGVXcmFwT2JqID0galF1ZXJ5LmV4dGVuZCghMCwge30sIG4pKSwgYS5pbm5lcm9mZnNldCA9ICJyaWdodCIgPT09IGEuaG9yaXpvbnRhbF9hbGlnbiA/IGEud3JhcHdpZHRoIC0gYS5zbGlkZV93aWR0aCA6IDAsIGEud2luZGhhbGYgPSAiYXV0byIgPT09IHRbZV0uc2xpZGVyTGF5b3V0ID8gdFtlXS5tb2R1bGUud2lkdGggLyAyIDogdC53aW5XIC8gMgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgaSA9IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgdmFyIGEgPSB0W2VdLmNhcm91c2VsOwogICAgICAgICAgICByZXR1cm4gImNlbnRlciIgPT09IGEuaG9yaXpvbnRhbF9hbGlnbiA/IGEud2luZGhhbGYgLSBhLnNsaWRlX3dpZHRoc1tpXSAvIDIgLSBhLnNsaWRlcG9zaXRpb25zW2ldIDogImxlZnQiID09PSBhLmhvcml6b250YWxfYWxpZ24gPyAwIC0gYS5zbGlkZXBvc2l0aW9uc1tpXSA6IGEud3JhcHdpZHRoIC0gYS5zbGlkZV93aWR0aHNbaV0gLSBhLnNsaWRlcG9zaXRpb25zW2ldCiAgICAgICAgfSwKICAgICAgICBhID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZSA8IDEgPyBNYXRoLnNxcnQoMSAtIChlIC09IDEpICogZSkgOiBNYXRoLnNxcnQoZSkKICAgICAgICB9LAogICAgICAgIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBlIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KGUpID8gdCA6IHZvaWQgMCA9PT0gZSA/ICJyaWdodCIgOiBlCiAgICAgICAgfSwKICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoZSkgPiBNYXRoLmFicyh0KSA/IGUgPiAwID8gZSAtIE1hdGguYWJzKE1hdGguZmxvb3IoZSAvIHQpICogdCkgOiBlICsgTWF0aC5hYnMoTWF0aC5mbG9vcihlIC8gdCkgKiB0KSA6IGUKICAgICAgICB9LAogICAgICAgIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBpLCBhLCByLCBzLCBuLCBkID0gMCwKICAgICAgICAgICAgICAgIGwgPSB0W2VdLmNhcm91c2VsOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBsLnBvc2l0aW9uYW5pbSAmJiBsLnBvc2l0aW9uYW5pbS5wYXVzZSgpLCBsLmp1c3RpZnkpICJjZW50ZXIiID09PSBsLmhvcml6b250YWxfYWxpZ24gPyBkID0gbC53aW5kaGFsZiAtIGwuc2xpZGVfd2lkdGhzW2wuZm9jdXNlZF0gLyAyIC0gbC5zbGlkZXBvc2l0aW9uc1tsLmZvY3VzZWRdIDogImxlZnQiID09PSBsLmhvcml6b250YWxfYWxpZ24gPyBkID0gMCAtIGwuc2xpZGVwb3NpdGlvbnNbbC5mb2N1c2VkXSA6ICJyaWdodCIgPT09IGwuaG9yaXpvbnRhbF9hbGlnbiAmJiAoZCA9IGwud3JhcHdpZHRoIC0gbC5zbGlkZV93aWR0aHNbbC5mb2N1c2VkXSAtIGwuc2xpZGVwb3NpdGlvbnNbbC5mb2N1c2VkXSksIGQgPSBkID4gbC5tYXh3aWR0aCAvIDIgPyBsLm1heHdpZHRoIC0gZCA6IGQgPCAwIC0gbC5tYXh3aWR0aCAvIDIgPyBkICsgbC5tYXh3aWR0aCA6IGQ7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGMgPSB0W2VdLnByX3Byb2Nlc3Npbmdfa2V5ID49IDAgPyB0W2VdLnByX3Byb2Nlc3Npbmdfa2V5IDogdFtlXS5wcl9hY3RpdmVfa2V5ID49IDAgPyB0W2VdLnByX2FjdGl2ZV9rZXkgOiAwLAogICAgICAgICAgICAgICAgICAgIHAgPSAoImNlbnRlciIgPT09IGwuaG9yaXpvbnRhbF9hbGlnbiA/IChsLndyYXB3aWR0aCAvIDIgLSBsLnNsaWRlX3dpZHRoIC8gMiAtIGwuc2xpZGVfb2Zmc2V0KSAvIGwuc2xpZGVfd2lkdGggOiAoMCAtIGwuc2xpZGVfb2Zmc2V0KSAvIGwuc2xpZGVfd2lkdGgpICUgdFtlXS5zbGlkZWFtb3VudDsKICAgICAgICAgICAgICAgIGQgPSAobC5pbmZpbml0eSA/IChpID0gcCwgYSA9IGMsIHIgPSB0W2VdLnNsaWRlYW1vdW50LCBuID0gYSAtIHIgLSBpLCBzID0gbyhzID0gYSAtIGksIHIpLCBuID0gbyhuLCByKSwgLShNYXRoLmFicyhzKSA+IE1hdGguYWJzKG4pID8gbiA6IHMpKSA6IHAgLSBjKSAqIGwuc2xpZGVfd2lkdGgKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gITEgPT09IGwuc25hcCAmJiBsLmp1c3REcmFnZ2VkICYmIChkID0gMCksIGwuanVzdERyYWdnZWQgPSAhMSwgZAogICAgICAgIH0KfShqUXVlcnkpLApmdW5jdGlvbihlKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgdCA9IFsiY2hhcnMiLCAid29yZHMiLCAibGluZXMiXSwKICAgICAgICBpID0gWyJUb3AiLCAiUmlnaHQiLCAiQm90dG9tIiwgIkxlZnQiXSwKICAgICAgICBhID0gWyJUb3BMZWZ0IiwgIlRvcFJpZ2h0IiwgIkJvdHRvbVJpZ2h0IiwgIkJvdHRvbUxlZnQiXSwKICAgICAgICByID0gWyJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiXSwKICAgICAgICBvID0galF1ZXJ5LmZuLnJldm9sdXRpb24sCiAgICAgICAgcyA9IG8uaXNfbW9iaWxlKCk7CiAgICBvLmlzX2FuZHJvaWQoKTsKICAgIGpRdWVyeS5leHRlbmQoITAsIG8sIHsKICAgICAgICBjaGVja0xheWVyRGltZW5zaW9uczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9ICExOwogICAgICAgICAgICBmb3IgKHZhciBpIGluIG9bZS5pZF0ubGF5ZXJzW2Uuc2tleV0pCiAgICAgICAgICAgICAgICBpZiAob1tlLmlkXS5sYXllcnNbZS5za2V5XS5oYXNPd25Qcm9wZXJ0eShpKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gb1tlLmlkXS5sYXllcnNbZS5za2V5XVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG9bZS5pZF0uX0xbYS5pZF07CiAgICAgICAgICAgICAgICAgICAgci5lb3cgIT09IGEub2Zmc2V0V2lkdGggJiYgInRydWUiICE9PSBvLmdBKGEsICJ2YXJ5LWxheWVyLWRpbXMiKSAmJiAodCA9ICEwKSwgci5sYXN0a25vd253aWR0aCA9IHIuZW93LCByLmxhc3Rrbm93bmhlaWdodCA9IHIuZW9oLCByLl9zbGlkZWxpbmsgfHwgb1tlLmlkXS5jYWNoZXMuY2FsY1Jlc3BvbnNpdmVMYXllcnNMaXN0LnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBhOiBvW2UuaWRdLl9MW2EuaWRdLmMsCiAgICAgICAgICAgICAgICAgICAgICAgIGI6IGUuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGM6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGQ6IHIucnNwX2JkLAogICAgICAgICAgICAgICAgICAgICAgICBlOiBlLnNsaWRlSW5kZXgKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0sCiAgICAgICAgcmVxdWVzdExheWVyVXBkYXRlczogZnVuY3Rpb24oZSwgdCwgaSwgYSkgewogICAgICAgICAgICB2YXIgciwgcywgbiwgZDsKICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gaSkgciA9IGksIG9bZV0uX0xbcl0ucFZpc1JlcXVlc3QgIT09IG9bZV0uX0xbcl0ucFZpc1N0YXR1cyAmJiAodm9pZCAwID09PSBvW2VdLl9MW3JdLl9saWdpZCB8fCAhMCAhPT0gb1tlXS5fTFtvW2VdLl9MW3JdLl9saWdpZF0uY2hpbGRyZW5BdFN0YXJ0Tm90VmlzaWJsZSA/IChvW2VdLl9MW3JdLnBWaXNTdGF0dXMgPSBvW2VdLl9MW3JdLnBWaXNSZXF1ZXN0LCBkID0gKCJyb3ciID09PSBvW2VdLl9MW3JdLnR5cGUgfHwgImNvbHVtbiIgPT09IG9bZV0uX0xbcl0udHlwZSB8fCAiZ3JvdXAiID09PSBvW2VdLl9MW3JdLnR5cGUpICYmIHZvaWQgMCAhPT0gb1tlXS5fTFtyXS5mcmFtZXMgJiYgdm9pZCAwICE9PSBvW2VdLl9MW3JdLmZyYW1lcy5mcmFtZV85OTkgJiYgdm9pZCAwICE9PSBvW2VdLl9MW3JdLmZyYW1lcy5mcmFtZV85OTkudHJhbnNmb3JtICYmICIiICsgb1tlXS5fTFtyXS5mcmFtZXMuZnJhbWVfOTk5LnRyYW5zZm9ybS5vcGFjaXR5ICE9ICIwIiwgbiA9IDEgPT09IG9bZV0uX0xbcl0ucFZpc1JlcXVlc3QgPyAicmVtb3ZlIiA6IGQgPyBuIDogImFkZCIsIHMgPSAxID09PSBvW2VdLl9MW3JdLnBWaXNSZXF1ZXN0ID8gInJlbW92ZSIgOiBkID8gImFkZCIgOiBzKSA6IChuID0gImFkZCIsIHMgPSAicmVtb3ZlIiksIHZvaWQgMCAhPT0gcyAmJiBvW2VdLl9MW3JdLnBbMF0uY2xhc3NMaXN0W3NdKCJycy1mb3JjZXVudG91Y2hhYmxlIiksIHZvaWQgMCAhPT0gbiAmJiBvW2VdLl9MW3JdLnBbMF0uY2xhc3NMaXN0W25dKCJycy1mb3JjZWhpZGRlbiIpKSwgb1tlXS5fTFtyXS5wUG9pbnRlclN0YXR1cyAhPT0gb1tlXS5fTFtyXS5wUGV2ZW50c1JlcXVlc3QgJiYgKG9bZV0uX0xbcl0ucFBvaW50ZXJTdGF0dXMgPSBvW2VdLl9MW3JdLnBQZXZlbnRzUmVxdWVzdCwgdHBHUy5nc2FwLnNldChvW2VdLl9MW3JdLnBbMF0sIHsKICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IG9bZV0uX0xbcl0ucFBvaW50ZXJTdGF0dXMsCiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAxID09PSBvW2VdLl9MW3JdLnBWaXNTdGF0dXMgPyAidmlzaWJsZSIgOiAwID09PSBvW2VdLl9MW3JdLnBWaXNTdGF0dXMgPyAiaGlkZGVuIiA6IG9bZV0uX0xbcl0ucFZpc1N0YXR1cwogICAgICAgICAgICB9KSksIHZvaWQgMCAhPT0gYSAmJiAiaWdub3JlIiAhPT0gYSAmJiAwICE9PSBhICYmIChhKyssICJlbnRlcnN0YWdlIiA9PT0gdCB8fCAibGVhdmVzdGFnZSIgPT09IHQgfHwgImZyYW1lc3RhcnRlZCIgPT09IHQgPyBvLmlzRmlyZWZveChlKSA/IC0xID09PSBvW2VdLl9MW3JdLnBbMF0uc3R5bGUudHJhbnNmb3JtLmluZGV4T2YoInBlcnNwZWN0aXZlIikgJiYgKG9bZV0uX0xbcl0ucFswXS5zdHlsZS50cmFuc2Zvcm0gKz0gKDAgPT09IG9bZV0uX0xbcl0ucFswXS5zdHlsZS50cmFuc2Zvcm0ubGVuZ3RoID8gIiAiIDogIiIpICsgInBlcnNwZWN0aXZlKCIgKyBhICsgInB4KSIpIDogKCF3aW5kb3cuaXNTYWZhcmkxMSAmJiAhMCAhPT0gb1tlXS5fTFtyXS5tYXNrSGFzUGVyc3BlY3RpdmUgJiYgMCA9PT0gb1tlXS5fTFtyXS5wWzBdLnN0eWxlLnBlcnNwZWN0aXZlLmxlbmd0aCB8fCAibm9uZSIgPT0gb1tlXS5fTFtyXS5wWzBdLnN0eWxlLnBlcnNwZWN0aXZlKSAmJiAob1tlXS5fTFtyXS5wWzBdLnN0eWxlLnBlcnNwZWN0aXZlID0gYSArICJweCIpIDogImZyYW1lZW5kZWQiID09PSB0ICYmIChvLmlzRmlyZWZveChlKSA/IG9bZV0uX0xbcl0ucFswXS5zdHlsZS50cmFuc2Zvcm0gPSBvW2VdLl9MW3JdLnBbMF0uc3R5bGUudHJhbnNmb3JtLnJlcGxhY2UoInBlcnNwZWN0aXZlKCIgKyBhICsgInB4KSIsICIiKSA6IHdpbmRvdy5pc1NhZmFyaTExIHx8IChvW2VdLl9MW3JdLnBbMF0uc3R5bGUucGVyc3BlY3RpdmUgPSBvW2VdLl9MW3JdLnBbMF0uc3R5bGUucGVyc3BlY3RpdmUucmVwbGFjZShhIC0gMSArICJweCIsICIiKSkpKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZm9yIChyIGluIG9bZV0uX0wpIG9bZV0uX0wuaGFzT3duUHJvcGVydHkocikgJiYgKG9bZV0uX0xbcl0ucFZpc1JlcXVlc3QgIT09IG9bZV0uX0xbcl0ucFZpc1N0YXR1cyAmJiAob1tlXS5fTFtyXS5wVmlzU3RhdHVzID0gb1tlXS5fTFtyXS5wVmlzUmVxdWVzdCwgMCA9PT0gb1tlXS5fTFtyXS5wVmlzU3RhdHVzID8gb1tlXS5fTFtyXS5wWzBdLmNsYXNzTGlzdC5hZGQoInJzLWZvcmNlaGlkZGVuIikgOiBvW2VdLl9MW3JdLnBbMF0uY2xhc3NMaXN0LnJlbW92ZSgicnMtZm9yY2VoaWRkZW4iKSksIG9bZV0uX0xbcl0ucFBvaW50ZXJTdGF0dXMgIT09IG9bZV0uX0xbcl0ucFBldmVudHNSZXF1ZXN0ICYmIChvW2VdLl9MW3JdLnBQb2ludGVyU3RhdHVzID0gb1tlXS5fTFtyXS5wUGV2ZW50c1JlcXVlc3QsIHRwR1MuZ3NhcC5zZXQob1tlXS5fTFtyXS5wWzBdLCB7CiAgICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogb1tlXS5fTFtyXS5wUG9pbnRlclN0YXR1cywKICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBvW2VdLl9MW3JdLnBWaXNTdGF0dXMKICAgICAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICAgICJlbnRlcnN0YWdlIiA9PT0gdCAmJiB2b2lkIDAgIT09IGkgJiYgdm9pZCAwICE9PSBvW2VdLl9MW2ldLmVzZ2luc2lkZSAmJiBvW2VdLl9MW2ldLmVzZ2luc2lkZS5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gb1tlXS5fTFtpXS5lc2dpbnNpZGUuZXNyZWRyYXcgJiYgb1tlXS5fTFtpXS5lc2dpbnNpZGUuZXNyZWRyYXcoKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlTWlkZGxlWm9uZXNBbmRFU0c6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIGkgPSBvW2VdLnByX3Byb2Nlc3Npbmdfa2V5IHx8IG9bZV0ucHJfYWN0aXZlX2tleSB8fCAwOwogICAgICAgICAgICBpZiAob1tlXS5taWRkbGVab25lcyAmJiBvW2VdLm1pZGRsZVpvbmVzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBvW2VdLm1pZGRsZVpvbmVzW2ldKQogICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IG9bZV0ubWlkZGxlWm9uZXNbaV0ubGVuZ3RoOyB0KyspIHRwR1MuZ3NhcC5zZXQob1tlXS5taWRkbGVab25lc1tpXVt0XSwgewogICAgICAgICAgICAgICAgICAgIHk6IE1hdGgucm91bmQob1tlXS5tb2R1bGUuaGVpZ2h0IC8gMiAtIG9bZV0ubWlkZGxlWm9uZXNbaV1bdF0ub2Zmc2V0SGVpZ2h0IC8gMikgKyAicHgiCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKG9bZV0uc21pZGRsZVpvbmVzICYmIG9bZV0uc21pZGRsZVpvbmVzLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgb1tlXS5zbWlkZGxlWm9uZXMubGVuZ3RoOyB0KyspIHRwR1MuZ3NhcC5zZXQob1tlXS5zbWlkZGxlWm9uZXNbdF0sIHsKICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKG9bZV0ubW9kdWxlLmhlaWdodCAvIDIgLSBvW2VdLnNtaWRkbGVab25lc1t0XS5vZmZzZXRIZWlnaHQgLyAyKSArICJweCIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBnZXRSb3dIZWlnaHRzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gMCwKICAgICAgICAgICAgICAgIGkgPSAwLAogICAgICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICAgICByID0gb1tlXS5wcl9wcm9jZXNzaW5nX2tleSB8fCBvW2VdLnByX2FjdGl2ZV9rZXkgfHwgMCwKICAgICAgICAgICAgICAgIHMgPSBvW2VdLnByX2FjdGl2ZV9rZXkgfHwgMDsKICAgICAgICAgICAgaWYgKG9bZV0ucm93em9uZXMgJiYgb1tlXS5yb3d6b25lcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBvW2VdLnJvd3pvbmVzW3JdKQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgb1tlXS5yb3d6b25lc1tyXS5sZW5ndGg7IG4rKykgb1tlXS5yb3d6b25lc0hlaWdodHNbcl1bbl0gPSBvW2VdLnJvd3pvbmVzW3JdW25dWzBdLm9mZnNldEhlaWdodCwgdCArPSBvW2VdLnJvd3pvbmVzSGVpZ2h0c1tyXVtuXTsKICAgICAgICAgICAgICAgIGlmIChzICE9PSByKQogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBvW2VdLnJvd3pvbmVzW3NdLmxlbmd0aDsgbisrKSBvW2VdLnJvd3pvbmVzSGVpZ2h0c1tzXVtuXSA9IG9bZV0ucm93em9uZXNbc11bbl1bMF0ub2Zmc2V0SGVpZ2h0LCBpICs9IG9bZV0ucm93em9uZXNIZWlnaHRzW3NdW25dCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG9bZV0uc3Jvd3pvbmVzICYmIG9bZV0uc3Jvd3pvbmVzLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgb1tlXS5zcm93em9uZXMubGVuZ3RoOyBuKyspIGEgKz0gb1tlXS5zcm93em9uZXNbbl1bMF0ub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgY3VyOiB0ID0gdCA8IGEgPyBhIDogdCwKICAgICAgICAgICAgICAgIGxhc3Q6IGkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZ2V0R3JpZE9mZnNldDogZnVuY3Rpb24oZSwgdCwgaSwgYSkgewogICAgICAgICAgICB2YXIgciA9ICJncmlkIiA9PT0gaSA/IG9bZV0uY2Fudi53aWR0aCA6ICJjYXJvdXNlbCIgIT09IG9bZV0uc2xpZGVyVHlwZSB8fCBhID8gb1tlXS5jYW52LndpZHRoIDogb1tlXS5jYXJvdXNlbC5zbGlkZV93aWR0aCwKICAgICAgICAgICAgICAgIHMgPSBvW2VdLnVzZUZ1bGxTY3JlZW5IZWlnaHQgPyBvW2VdLm1vZHVsZS5oZWlnaHQgOiAiZ3JpZCIgPT09IGkgPyBvW2VdLmNvbnRlbnQuaGVpZ2h0IDogImNhcm91c2VsIiAhPT0gb1tlXS5zbGlkZXJUeXBlIHx8IGEgPyBvW2VdLm1vZHVsZS5oZWlnaHQgOiBvW2VdLmNhbnYuaGVpZ2h0LAogICAgICAgICAgICAgICAgbiA9ICJzbGlkZSIgPT09IGkgPyAwIDogTWF0aC5tYXgoMCwgImZ1bGxzY3JlZW4iID09IG9bZV0uc2xpZGVyTGF5b3V0ID8gb1tlXS5tb2R1bGUuaGVpZ2h0IC8gMiAtIG8uaUhFKGUpICogKG9bZV0ua2VlcEJQSGVpZ2h0ID8gMSA6IG9bZV0uQ00uaCkgLyAyIDogb1tlXS5hdXRvSGVpZ2h0IHx8IG51bGwgIT0gb1tlXS5taW5IZWlnaHQgJiYgb1tlXS5taW5IZWlnaHQgPiAwIHx8IG9bZV0ua2VlcEJQSGVpZ2h0ID8gb1tlXS5jYW52LmhlaWdodCAvIDIgLSBvLmlIRShlKSAqIG9bZV0uQ00uaCAvIDIgOiAwKSwKICAgICAgICAgICAgICAgIGQgPSAic2xpZGUiID09PSBpID8gMCA6IE1hdGgubWF4KDAsICJjYXJvdXNlbCIgPT09IG9bZV0uc2xpZGVyVHlwZSA/IDAgOiBvW2VdLmNhbnYud2lkdGggLyAyIC0gby5pV0EoZSwgdCkgKiBvW2VdLkNNLncgLyAyKTsKICAgICAgICAgICAgcmV0dXJuICJzbGlkZSIgIT09IGkgJiYgImNhcm91c2VsIiA9PT0gb1tlXS5zbGlkZXJUeXBlICYmIGEgJiYgdm9pZCAwICE9PSBvW2VdLmNhcm91c2VsICYmIHZvaWQgMCAhPT0gb1tlXS5jYXJvdXNlbC5ob3Jpem9udGFsX2FsaWduICYmIChkID0gTWF0aC5tYXgoMCwgImNlbnRlciIgPT09IG9bZV0uY2Fyb3VzZWwuaG9yaXpvbnRhbF9hbGlnbiA/IDAgKyAob1tlXS5tb2R1bGUud2lkdGggLSBvLmlXQShlLCAic3RhdGljIikgKiBvW2VdLkNNLncpIC8gMiA6ICJyaWdodCIgPT09IG9bZV0uY2Fyb3VzZWwuaG9yaXpvbnRhbF9hbGlnbiA/IG9bZV0ubW9kdWxlLndpZHRoIC0gb1tlXS5ncmlkd2lkdGhbb1tlXS5sZXZlbF0gKiBvW2VdLkNNLncgOiBkKSksIFtyLCBzLCBkLCBuXQogICAgICAgIH0sCiAgICAgICAgaW5pdExheWVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBpLCBhLCByID0gZS5pZCwKICAgICAgICAgICAgICAgIHMgPSBlLnNrZXk7CiAgICAgICAgICAgIGZvciAodmFyIG4gaW4gb1tyXS5sYXllcnNbZS5za2V5XSkKICAgICAgICAgICAgICAgIGlmIChvW3JdLmxheWVyc1tlLnNrZXldLmhhc093blByb3BlcnR5KG4pKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBvW3JdLmxheWVyc1tlLnNrZXldW25dLAogICAgICAgICAgICAgICAgICAgICAgICBsID0galF1ZXJ5KGQpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gby5nQShkLCAiaW5pdGlhbGlzZWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGMgPyBvW3JdLl9MW2QuaWRdIDogbC5kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJpbmRpdmlkdWFsIiA9PT0gZS5za2V5ICYmIChwLnNsaWRlS2V5ID0gdm9pZCAwID09PSBwLnNsaWRlS2V5ID8gby5nQShsLmNsb3Nlc3QoInJzLXNsaWRlIilbMF0sICJrZXkiKSA6IHAuc2xpZGVLZXksIHAuc2xpZGVJbmRleCA9IHZvaWQgMCA9PT0gcC5zbGlkZUluZGV4ID8gby5nZXRTbGlkZUluZGV4KHIsIHAuc2xpZGVLZXkpIDogcC5zbGlkZUluZGV4LCBlLnNsaWRlSW5kZXggPSBwLnNsaWRlSW5kZXgsIHMgPSBwLnNsaWRlS2V5KSwgdm9pZCAwID09PSBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLnJldkNoZWNrSURTKHIsIGQpLCBvW3JdLl9MW2QuaWRdID0gcCwgcC5mb3JkID0gdm9pZCAwID09PSBwLmZvcmQgPyAiZnJhbWVfMDtmcmFtZV8xO2ZyYW1lXzk5OSIgOiBwLmZvcmQsIHAuZm9yZCA9ICI7IiA9PSBwLmZvcmRbcC5mb3JkLmxlbmd0aCAtIDFdID8gcC5mb3JkLnN1YnN0cmluZygwLCBwLmZvcmQubGVuZ3RoIC0gMSkgOiBwLmZvcmQsIHAuZm9yZCA9IHAuZm9yZC5zcGxpdCgiOyIpLCB2b2lkIDAgIT09IHAuY2xpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiBwLmNsaXBQYXRoID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2U6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46ICJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInJlY3RhbmdsZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBwLmNsaXAgPSBwLmNsaXAuc3BsaXQoIjsiKSwgcC5jbGlwKSBwLmNsaXAuaGFzT3duUHJvcGVydHkodCkgJiYgKCJ1IiA9PSAoaSA9IHAuY2xpcFt0XS5zcGxpdCgiOiIpKVswXSAmJiAocC5jbGlwUGF0aC51c2UgPSAidHJ1ZSIgPT0gaVsxXSksICJvIiA9PSBpWzBdICYmIChwLmNsaXBQYXRoLm9yaWdpbiA9IGlbMV0pLCAidCIgPT0gaVswXSAmJiAocC5jbGlwUGF0aC50eXBlID0gaVsxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5mcmFtZXMgPSBMKHAsIHIpLCBwLmNhY2hlcyA9IHt9LCBwLk9CSlVQRCA9IHt9LCBwLmMgPSBsLCBwLnAgPSBvW3JdLl9Mc2hvcnRjdXRzW2QuaWRdLnAsIHAubHAgPSBvW3JdLl9Mc2hvcnRjdXRzW2QuaWRdLmxwLCBwLm0gPSBvW3JdLl9Mc2hvcnRjdXRzW2QuaWRdLm0sIHAudHJpZ2dlcmNhY2hlID0gdm9pZCAwID09PSBwLnRyaWdnZXJjYWNoZSA/ICJyZXNldCIgOiBwLnRyaWdnZXJjYWNoZSwgcC5yc3BfYmQgPSB2b2lkIDAgPT09IHAucnNwX2JkID8gImNvbHVtbiIgPT09IHAudHlwZSB8fCAicm93IiA9PT0gcC50eXBlID8gIm9mZiIgOiAib24iIDogcC5yc3BfYmQsIHAucnNwX28gPSB2b2lkIDAgPT09IHAucnNwX28gPyAib24iIDogcC5yc3BfbywgcC5iYXNlYWxpZ24gPSB2b2lkIDAgPT09IHAuYmFzZWFsaWduID8gImdyaWQiIDogcC5iYXNlYWxpZ24sIHAuZ3JvdXAgPSAiZ3JvdXAiICE9PSBwLnR5cGUgJiYgbnVsbCAhPT0gby5jbG9zZXN0Tm9kZShsWzBdLCAiUlMtR1JPVVAtV1JBUCIpID8gImdyb3VwIiA6ICJjb2x1bW4iICE9PSBwLnR5cGUgJiYgbnVsbCAhPT0gby5jbG9zZXN0Tm9kZShsWzBdLCAiUlMtQ09MVU1OIikgPyAiY29sdW1uIiA6ICJyb3ciICE9PSBwLnR5cGUgJiYgbnVsbCAhPT0gby5jbG9zZXN0Tm9kZShsWzBdLCAiUlMtUk9XIikgPyAicm93IiA6IHZvaWQgMCwgcC5fbGlnID0gImdyb3VwIiA9PT0gcC5ncm91cCA/IGpRdWVyeShvLmNsb3Nlc3ROb2RlKGxbMF0sICJSUy1HUk9VUCIpKSA6ICJjb2x1bW4iID09PSBwLmdyb3VwID8galF1ZXJ5KG8uY2xvc2VzdE5vZGUobFswXSwgIlJTLUNPTFVNTiIpKSA6ICJyb3ciID09PSBwLmdyb3VwID8galF1ZXJ5KG8uY2xvc2VzdE5vZGUobFswXSwgIlJTLVJPVyIpKSA6IHZvaWQgMCwgcC5fbGlnaWQgPSB2b2lkIDAgIT09IHAuX2xpZyA/IHAuX2xpZ1swXS5pZCA6IHZvaWQgMCwgcC5fY29sdW1uID0gIlJTLUNPTFVNTiIgPT09IGxbMF0udGFnTmFtZSA/IGpRdWVyeShvLmNsb3Nlc3ROb2RlKGxbMF0sICJSUy1DT0xVTU4tV1JBUCIpKSA6ICJub25lIiwgcC5fcm93ID0gIlJTLUNPTFVNTiIgPT09IGxbMF0udGFnTmFtZSAmJiBqUXVlcnkoby5jbG9zZXN0Tm9kZShsWzBdLCAiUlMtUk9XIikpLCBwLl9pbmdyb3VwID0gImdyb3VwIiA9PT0gcC5ncm91cCwgcC5faW5jb2x1bW4gPSAiY29sdW1uIiA9PT0gcC5ncm91cCwgcC5faW5yb3cgPSAicm93IiA9PT0gcC5ncm91cCwgKHAuX2luZ3JvdXAgfHwgcC5faW5jb2x1bW4pICYmIHAuX2xpZ1swXS5jbGFzc05hbWUuaW5kZXhPZigicnMtc2JhIikgPj0gMCAmJiAoITEgIT09IHAuYW5pbWF0aW9ub25zY3JvbGwgfHwgdm9pZCAwID09PSBwLmZyYW1lcy5sb29wKSAmJiAhMCAhPT0gcC5hbmltT25TY3JvbGxGb3JjZURpc2FibGUgJiYgKHAuYW5pbWF0aW9ub25zY3JvbGwgPSAhMCwgbFswXS5jbGFzc05hbWUgKz0gIiBycy1zYmEiLCBvW3JdLnNiYXNbc11bZC5pZF0gPSBsWzBdKSwgcC5hbmltT25TY3JvbGxSZXBlYXRzID0gMCwgcC5faXNncm91cCA9ICJSUy1HUk9VUCIgPT09IGxbMF0udGFnTmFtZSwgcC50eXBlID0gcC50eXBlIHx8ICJub25lIiwgInJvdyIgPT09IHAudHlwZSAmJiB2b2lkIDAgPT09IHAuY2JyZWFrICYmIChwLmNicmVhayA9IDIpLCBwLmVzZ2luc2lkZSA9IGpRdWVyeShsWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImVzZy1ncmlkIilbMF0pLCBwLl9pc25vdGV4dCA9IC0xICE9PSBqUXVlcnkuaW5BcnJheShwLnR5cGUsIFsidmlkZW8iLCAiaW1hZ2UiLCAiYXVkaW8iLCAic2hhcGUiLCAicm93IiwgImdyb3VwIl0pLCBwLl9tZWRpYXRhZyA9ICJodG1sNSIgPT0gcC5hdWRpbyA/ICJhdWRpbyIgOiAidmlkZW8iLCBwLmltZyA9IGwuZmluZCgiaW1nIiksIHAuZGVlcGlmcmFtZSA9IG8uZ2V0QnlUYWcobFswXSwgImlmcmFtZSIpLCBwLmRlZXBtZWRpYSA9IG8uZ2V0QnlUYWcobFswXSwgcC5fbWVkaWF0YWcpLCBwLmxheWVydHlwZSA9ICJpbWFnZSIgPT09IHAudHlwZSA/ICJpbWFnZSIgOiBsWzBdLmNsYXNzTmFtZS5pbmRleE9mKCJycy1sYXllci12aWRlbyIpID49IDAgfHwgbFswXS5jbGFzc05hbWUuaW5kZXhPZigicnMtbGF5ZXItYXVkaW8iKSA+PSAwIHx8IHAuZGVlcGlmcmFtZS5sZW5ndGggPiAwICYmIChwLmRlZXBpZnJhbWVbMF0uc3JjLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigieW91dHViZSIpID4gMCB8fCBwLmRlZXBpZnJhbWVbMF0uc3JjLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigidmltZW8iKSA+IDApIHx8IHAuZGVlcG1lZGlhLmxlbmd0aCA+IDAgPyAidmlkZW8iIDogImh0bWwiLCBwLmRlZXBpZnJhbWUubGVuZ3RoID4gMCAmJiBvLnNBKHAuZGVlcGlmcmFtZVswXSwgImxheWVydHlwZSIsIHAubGF5ZXJ0eXBlKSwgImNvbHVtbiIgPT09IHAudHlwZSAmJiAocC5jYmcgPSBqUXVlcnkoby5nZXRCeVRhZyhwLnBbMF0sICJSUy1DT0xVTU4tQkciKVswXSksIHAuY2JnbWFzayA9IGpRdWVyeShvLmdldEJ5VGFnKHAucFswXSwgIlJTLUNCRy1NQVNLLVdSQVAiKVswXSkpLCBwLl9zbGlkZWxpbmsgPSBsWzBdLmNsYXNzTmFtZS5pbmRleE9mKCJzbGlkZWxpbmsiKSA+PSAwLCBwLl9pc3N0YXRpYyA9IGxbMF0uY2xhc3NOYW1lLmluZGV4T2YoInJzLWxheWVyLXN0YXRpYyIpID49IDAsIHAuc2xpZGVrZXkgPSBwLl9pc3N0YXRpYyA/ICJzdGF0aWNsYXllcnMiIDogcywgcC5fdG9nZ2xlbGlzdGVuZXJzID0gbFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJycy10b2dnbGVkLWNvbnRlbnQiKS5sZW5ndGggPiAwLCBwLmJnY29sID0gdm9pZCAwID09PSBwLmJnY29sID8gbFswXS5zdHlsZS5iYWNrZ3JvdW5kLmluZGV4T2YoImdyYWRpZW50IikgPj0gMCA/IGxbMF0uc3R5bGUuYmFja2dyb3VuZCA6IGxbMF0uc3R5bGUuYmFja2dyb3VuZENvbG9yIDogcC5iZ2NvbCwgcC5iZ2NvbCA9ICIiID09PSBwLmJnY29sID8gInJnYmEoMCwgMCwgMCwgMCkiIDogcC5iZ2NvbCwgcC5iZ2NvbCA9IDAgPT09IHAuYmdjb2wuaW5kZXhPZigicmdiYSgwLCAwLCAwLCAwKSIpICYmIHAuYmdjb2wubGVuZ3RoID4gMTggPyBwLmJnY29sLnJlcGxhY2UoInJnYmEoMCwgMCwgMCwgMCkiLCAiIikgOiBwLmJnY29sLCBwLnppbmRleCA9IHZvaWQgMCA9PT0gcC56aW5kZXggPyBsWzBdLnN0eWxlLnpJbmRleCA6IHAuemluZGV4LCBwLl9pc2dyb3VwICYmIChwLmZyYW1lcy5mcmFtZV8xLnRpbWVsaW5lLndhaXRvbmNhbGwgJiYgKHAuY2hpbGRyZW5BdFN0YXJ0Tm90VmlzaWJsZSA9ICEwKSwgcC5wVmlzUmVxdWVzdCA9IDApLCBwLl90b2dnbGVsaXN0ZW5lcnMgJiYgbC5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnN3YXB0b2dnbGVTdGF0ZShbdGhpcy5pZF0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdm9pZCAwICE9PSBwLmJvcmRlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiBwLmJvcmRlciA9IHAuYm9yZGVyLnNwbGl0KCI7IiksIHAuYm9yZGVyY29sb3IgPSAidHJhbnNwYXJlbnQiLCBwLmJvcmRlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5ib3JkZXIuaGFzT3duUHJvcGVydHkodCkpIHN3aXRjaCAoKGkgPSBwLmJvcmRlclt0XS5zcGxpdCgiOiIpKVswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib2MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5ib3JkZXJjb2xvciA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYm93IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuYm9yZGVyd2lkdGggPSBvLnJldlRvUmVzcChpWzFdLCA0LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5ib3JkZXJzdHlsZSA9IG8ucmV2VG9SZXNwKGlbMV0sIDQsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJvcmRlcnJhZGl1cyA9IG8ucmV2VG9SZXNwKGlbMV0sIDQsIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN2ZyIgPT09IHAudHlwZSAmJiAocC5zdmcgPSBsLmZpbmQoInN2ZyIpLCBwLnN2Z0kgPSB5KHAuc3ZnaSwgciksIHAuc3ZnUGF0aCA9IHAuc3ZnLmZpbmQocC5zdmdJLnN2Z0FsbCA/ICJwYXRoLCBjaXJjbGUsIGVsbGlwc2UsIGxpbmUsIHBvbHlnb24sIHBvbHlsaW5lLCByZWN0IiA6ICJwYXRoIiksIHAuc3ZnSCA9IHZvaWQgMCAhPT0gcC5zdmdpICYmIC0xID09PSBwLnN2Z2kuaW5kZXhPZigib2M6dCIpID8geShwLnN2Z2gsIHIpIDoge30pLCB2b2lkIDAgIT09IHAuYnRyYW5zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHAuYnRyYW5zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIHAuYnRyYW5zID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByWDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgclk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJaOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZyA9IGcuc3BsaXQoIjsiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZy5oYXNPd25Qcm9wZXJ0eSh0KSkgc3dpdGNoICgoaSA9IGdbdF0uc3BsaXQoIjoiKSlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiclgiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5idHJhbnMuclggPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJZIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuYnRyYW5zLnJZID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyWiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJ0cmFucy5yWiA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJ0cmFucy5vID0gaVsxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBwLnRzaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiBwLnRzaGFkb3cgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6ICJyZ2JhKDAsMCwwLDAuMjUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHAudHNoID0gcC50c2guc3BsaXQoIjsiKSwgcC50c2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudHNoLmhhc093blByb3BlcnR5KHQpKSBzd2l0Y2ggKChpID0gcC50c2hbdF0uc3BsaXQoIjoiKSlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnRzaGFkb3cuYyA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnRzaGFkb3cuaCA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnRzaGFkb3cudiA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnRzaGFkb3cuYiA9IGlbMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHAudHN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIHAudHN0cm9rZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogInJnYmEoMCwwLDAsMC4yNSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcC50c3QgPSBwLnRzdC5zcGxpdCgiOyIpLCBwLnRzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC50c3QuaGFzT3duUHJvcGVydHkodCkpIHN3aXRjaCAoKGkgPSBwLnRzdFt0XS5zcGxpdCgiOiIpKVswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAudHN0cm9rZS5jID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ3IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAudHN0cm9rZS53ID0gaVsxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gcC5ic2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gcC5ic2hhZG93ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiAiYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6ICJyZ2JhKDAsMCwwLDAuMjUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHAuYnNoID0gcC5ic2guc3BsaXQoIjsiKSwgcC5ic2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuYnNoLmhhc093blByb3BlcnR5KHQpKSBzd2l0Y2ggKChpID0gcC5ic2hbdF0uc3BsaXQoIjoiKSlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJzaGFkb3cuYyA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJzaGFkb3cuaCA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJzaGFkb3cudiA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJzaGFkb3cuYiA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJzaGFkb3cucyA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmJzaGFkb3cuZSA9IGlbMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHAuZGltKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIHAuZGltID0gcC5kaW0uc3BsaXQoIjsiKSwgcC5kaW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZGltLmhhc093blByb3BlcnR5KHQpKSBzd2l0Y2ggKChpID0gcC5kaW1bdF0uc3BsaXQoIjoiKSlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLndpZHRoID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuaGVpZ2h0ID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtYXh3IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAubWF4d2lkdGggPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1heGgiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5tYXhoZWlnaHQgPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1pbnciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5taW53aWR0aCA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibWluaCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLm1pbmhlaWdodCA9IGlbMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHAueHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gcC54eSA9IHAueHkuc3BsaXQoIjsiKSwgcC54eSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC54eS5oYXNPd25Qcm9wZXJ0eSh0KSkgc3dpdGNoICgoaSA9IHAueHlbdF0uc3BsaXQoIjoiKSlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnggPSBpWzFdLnJlcGxhY2UoInB4IiwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC55ID0gaVsxXS5yZXBsYWNlKCJweCIsICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ4byI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmhvZmZzZXQgPSBpWzFdLnJlcGxhY2UoInB4IiwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInlvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAudm9mZnNldCA9IGlbMV0ucmVwbGFjZSgicHgiLCAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcC5faXNub3RleHQgJiYgdm9pZCAwICE9PSBwLnRleHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gcC50ZXh0ID0gcC50ZXh0LnNwbGl0KCI7IiksIHAudGV4dCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC50ZXh0Lmhhc093blByb3BlcnR5KHQpKSBzd2l0Y2ggKChpID0gcC50ZXh0W3RdLnNwbGl0KCI6IikpWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC53aGl0ZXNwYWNlID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0ZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnRleHREZWNvcmF0aW9uID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuY2xlYXIgPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImYiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5mbG9hdCA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmZvbnRzaXplID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAubGluZWhlaWdodCA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibHMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5sZXR0ZXJzcGFjaW5nID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmdyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmZvbnR3ZWlnaHQgPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC50ZXh0YWxpZ24gPSBpWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNvbHVtbiIgPT09IHAudHlwZSAmJiB2b2lkIDAgIT09IHAudGV4dERlY29yYXRpb24gJiYgZGVsZXRlIHAudGV4dERlY29yYXRpb24sIHZvaWQgMCAhPT0gcC5mbGNyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIHAuZmxjciA9IHAuZmxjci5zcGxpdCgiOyIpLCBwLmZsY3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmxjci5oYXNPd25Qcm9wZXJ0eSh0KSkgc3dpdGNoICgoaSA9IHAuZmxjclt0XS5zcGxpdCgiOiIpKVswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuY2xlYXIgPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImYiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5mbG9hdCA9IGlbMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHAucGFkZGluZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiBwLnBhZGRpbmcgPSBwLnBhZGRpbmcuc3BsaXQoIjsiKSwgcC5wYWRkaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLnBhZGRpbmcuaGFzT3duUHJvcGVydHkodCkpIHN3aXRjaCAoKGkgPSBwLnBhZGRpbmdbdF0uc3BsaXQoIjoiKSlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnBhZGRpbmd0b3AgPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5wYWRkaW5nYm90dG9tID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAucGFkZGluZ2xlZnQgPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5wYWRkaW5ncmlnaHQgPSBpWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBwLm1hcmdpbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiBwLm1hcmdpbiA9IHAubWFyZ2luLnNwbGl0KCI7IiksIHAubWFyZ2luKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLm1hcmdpbi5oYXNPd25Qcm9wZXJ0eSh0KSkgc3dpdGNoICgoaSA9IHAubWFyZ2luW3RdLnNwbGl0KCI6IikpWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5tYXJnaW50b3AgPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5tYXJnaW5ib3R0b20gPSBpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5tYXJnaW5sZWZ0ID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAubWFyZ2lucmlnaHQgPSBpWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBwLnNwaWtlICYmIChwLnNwaWtlID0gRyhwLnNwaWtlKSksIHZvaWQgMCAhPT0gcC5jb3JuZXJzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIGEgPSBwLmNvcm5lcnMuc3BsaXQoIjsiKSwgcC5jb3JuZXJzID0ge30sIGEpIGEuaGFzT3duUHJvcGVydHkodCkgJiYgYVt0XS5sZW5ndGggPiAwICYmIChwLmNvcm5lcnNbYVt0XV0gPSBqUXVlcnkoIjwiICsgYVt0XSArICI+PC8iICsgYVt0XSArICI+IiksIHAuYy5hcHBlbmQocC5jb3JuZXJzW2FbdF1dKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAudGV4dGFsaWduID0gYihwLnRleHRhbGlnbiksIHAudmJpbGl0eSA9IG8ucmV2VG9SZXNwKHAudmJpbGl0eSwgb1tyXS5ybGUsICEwKSwgcC5ob2Zmc2V0ID0gby5yZXZUb1Jlc3AocC5ob2Zmc2V0LCBvW3JdLnJsZSwgMCksIHAudm9mZnNldCA9IG8ucmV2VG9SZXNwKHAudm9mZnNldCwgb1tyXS5ybGUsIDApLCBwLnggPSBvLnJldlRvUmVzcChwLngsIG9bcl0ucmxlLCAibCIpLCBwLnkgPSBvLnJldlRvUmVzcChwLnksIG9bcl0ucmxlLCAidCIpLCBNKGwsIDAsIHIpLCBvLnNBKGQsICJpbml0aWFsaXNlZCIsICEwKSwgb1tyXS5jLnRyaWdnZXIoImxheWVyaW5pdGlhbGlzZWQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcjogbFswXS5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlcjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHAueFtvW3JdLmxldmVsXSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHAueVtvW3JdLmxldmVsXSwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG8uZ2V0R3JpZE9mZnNldChyLCBlLnNsaWRlSW5kZXgsIHAuYmFzZWFsaWduLCBwLl9pc3N0YXRpYyksCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBtWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gbVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG1bMl0sCiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBtWzNdOwogICAgICAgICAgICAgICAgICAgIGlmIChwLnNsaWRlSW5kZXggPSBlLnNsaWRlSW5kZXgsICJ1cGRhdGVwb3NpdGlvbiIgIT09IGUubW9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSBwLnZiaWxpdHlbb1tyXS5sZXZlbEZvcmNlZF0gfHwgImYiID09IHAudmJpbGl0eVtvW3JdLmxldmVsRm9yY2VkXSB8fCB2IDwgb1tyXS5oaWRlTGF5ZXJBdExpbWl0ICYmICJvbiIgPT0gcC5sYXllcm9ubGltaXQgfHwgdiA8IG9bcl0uaGlkZUFsbExheWVyQXRMaW1pdCA/ICghMCAhPT0gcC5sYXllcklzSGlkZGVuICYmIHAucFswXS5jbGFzc0xpc3QuYWRkKCJycy1sYXllci1oaWRkZW4iKSwgcC5sYXllcklzSGlkZGVuID0gITApIDogKHAubGF5ZXJJc0hpZGRlbiAmJiBwLnBbMF0uY2xhc3NMaXN0LnJlbW92ZSgicnMtbGF5ZXItaGlkZGVuIiksIHAubGF5ZXJJc0hpZGRlbiA9ICExKSwgcC5wb3N0ZXIgPSBudWxsID09IHAucG9zdGVyICYmIHZvaWQgMCAhPT0gcC50aHVtYmltYWdlID8gcC50aHVtYmltYWdlIDogcC5wb3N0ZXIsICJpbWFnZSIgPT09IHAubGF5ZXJ0eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuaW1nT0JKID0ge30sICJjb3Zlci1wcm9wb3J0aW9uYWwiID09PSBwLmltZy5kYXRhKCJjIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnNBKHAuaW1nWzBdLCAib3dpZHRoIiwgby5nQShwLmltZ1swXSwgIm93aWR0aCIsIHAuaW1nWzBdLndpZHRoKSksIG8uc0EocC5pbWdbMF0sICJvaGVpZ2h0Iiwgby5nQShwLmltZ1swXSwgIm9oZWlnaHQiLCBwLmltZ1swXS5oZWlnaHQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgUyA9IG8uZ0EocC5pbWdbMF0sICJvd2lkdGgiKSAvIG8uZ0EocC5pbWdbMF0sICJvaGVpZ2h0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSB2IC8gZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmltZ09CSiA9IFMgPiB4ICYmIFMgPD0gMSB8fCBTIDwgeCAmJiBTID4gMSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICIxMDAlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICJjIiA9PT0gdSB8fCAiY2VudGVyIiA9PT0gdSA/ICI1MCUiIDogImxlZnQiID09PSB1IHx8ICJsIiA9PT0gdSA/ICIwIiA6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICJyIiA9PT0gdSB8fCAicmlnaHQiID09PSB1ID8gIjAiIDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICJjIiA9PT0gaCB8fCAiY2VudGVyIiA9PT0gaCA/ICI1MCUiIDogInRvcCIgPT09IGggfHwgInQiID09PSBoID8gIjAiIDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206ICJiIiA9PT0gaCB8fCAiYm90dG9tIiA9PT0gaCA/ICIwIiA6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogImMiID09PSB1IHx8ICJjZW50ZXIiID09PSB1ID8gIi01MCUiIDogIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAiYyIgPT09IGggfHwgImNlbnRlciIgPT09IHUgPyAiLTUwJSIgOiAiMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICIxMDAlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogImMiID09PSB1IHx8ICJjZW50ZXIiID09PSB1ID8gIjUwJSIgOiAibGVmdCIgPT09IHUgfHwgImwiID09PSB1ID8gIjAiIDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogInIiID09PSB1IHx8ICJyaWdodCIgPT09IHUgPyAiMCIgOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogImMiID09PSBoIHx8ICJjZW50ZXIiID09PSBoID8gIjUwJSIgOiAidG9wIiA9PT0gaCB8fCAidCIgPT09IGggPyAiMCIgOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogImIiID09PSBoIHx8ICJib3R0b20iID09PSBoID8gIjAiIDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAiYyIgPT09IHUgfHwgImNlbnRlciIgPT09IHUgPyAiLTUwJSIgOiAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6ICJjIiA9PT0gaCB8fCAiY2VudGVyIiA9PT0gdSA/ICItNTAlIiA6ICIwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB2b2lkIDAgPT09IHAuZ3JvdXAgJiYgImF1dG8iID09PSBwLndpZHRoW29bcl0ubGV2ZWxdICYmICJhdXRvIiA9PT0gcC5oZWlnaHRbb1tyXS5sZXZlbF0gJiYgKHAud2lkdGhbb1tyXS5sZXZlbF0gPSBvLmdBKHAuaW1nWzBdLCAib3dpZHRoIiwgcC5pbWdbMF0ud2lkdGgpLCBwLmhlaWdodFtvW3JdLmxldmVsXSA9IG8uZ0EocC5pbWdbMF0sICJvd2lkdGgiLCBwLmltZ1swXS5oZWlnaHQpKSwgcC5pbWdPQkogPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICJhdXRvIiAhPT0gcC53aWR0aFtvW3JdLmxldmVsXSB8fCBpc05hTihwLndpZHRoW29bcl0ubGV2ZWxdKSAmJiBwLndpZHRoW29bcl0ubGV2ZWxdLmluZGV4T2YoIiUiKSA+PSAwID8gIjEwMCUiIDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogImF1dG8iICE9PSBwLmhlaWdodFtvW3JdLmxldmVsXSB8fCBpc05hTihwLmhlaWdodFtvW3JdLmxldmVsXSkgJiYgcC5oZWlnaHRbb1tyXS5sZXZlbF0uaW5kZXhPZigiJSIpID49IDAgPyAiMTAwJSIgOiAiYXV0byIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJ2aWRlbyIgPT09IHAubGF5ZXJ0eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLm1hbmFnZVZpZGVvTGF5ZXIobCwgciwgcyksICJyZWJ1aWxkIiAhPT0gZS5tb2RlICYmIG8ucmVzZXRWaWRlbyhsLCByLCBlLm1vZGUpLCBudWxsICE9IHAuYXNwZWN0cmF0aW8gJiYgcC5hc3BlY3RyYXRpby5zcGxpdCgiOiIpLmxlbmd0aCA+IDEgJiYgMSA9PSBwLmJndmlkZW8gJiYgby5wcmVwYXJlQ292ZXJlZFZpZGVvKHIsIGwpLCBwLm1lZGlhID0gdm9pZCAwID09PSBwLm1lZGlhID8gcC5kZWVwaWZyYW1lLmxlbmd0aCA+IDAgPyBqUXVlcnkocC5kZWVwaWZyYW1lWzBdKSA6IGpRdWVyeShwLmRlZXBtZWRpYVswXSkgOiBwLm1lZGlhLCBwLmh0bWw1dmlkID0gdm9pZCAwID09PSBwLmh0bWw1dmlkID8gIShwLmRlZXBpZnJhbWUubGVuZ3RoID4gMCkgOiBwLmh0bWw1dmlkLCBwLm1lZGlhT0JKID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgayA9IHAud2lkdGhbb1tyXS5sZXZlbF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IHAuaGVpZ2h0W29bcl0ubGV2ZWxdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAiYXV0byIgPT09IGsgPyBrIDogIW8uaXNOdW1lcmljKGspICYmIGsuaW5kZXhPZigiJSIpID4gMCA/IHAuX2luY29sdW1uIHx8IHAuX2luZ3JvdXAgPyAiMTAwJSIgOiAiZ3JpZCIgPT09IHAuYmFzZWFsaWduID8gby5pV0EociwgZS5zbGlkZUluZGV4KSAqIG9bcl0uQ00udyA6IHYgOiAib2ZmIiAhPT0gcC5yc3BfYmQgPyBwYXJzZUZsb2F0KGspICogb1tyXS5DTS53ICsgInB4IiA6IHBhcnNlRmxvYXQoaykgKyAicHgiLCBSID0gImF1dG8iID09PSBSID8gUiA6ICFvLmlzTnVtZXJpYyhSKSAmJiBSLmluZGV4T2YoIiUiKSA+IDAgPyAiZ3JpZCIgPT09IHAuYmFzZWFsaWduID8gby5pSEUocikgKiBvW3JdLkNNLncgOiBmIDogIm9mZiIgIT09IHAucnNwX2JkID8gcGFyc2VGbG9hdChSKSAqIG9bcl0uQ00uaCArICJweCIgOiBwYXJzZUZsb2F0KFIpICsgInB4IiwgcC52ZCA9IHZvaWQgMCA9PT0gcC52ZCA/IG9bcl0udmlkZW9zW2xbMF0uaWRdLnJhdGlvLnNwbGl0KCI6IikubGVuZ3RoID4gMSA/IG9bcl0udmlkZW9zW2xbMF0uaWRdLnJhdGlvLnNwbGl0KCI6IilbMF0gLyBvW3JdLnZpZGVvc1tsWzBdLmlkXS5yYXRpby5zcGxpdCgiOiIpWzFdIDogMSA6IHAudmQsICFwLl9pbmNvbHVtbiB8fCAiMTAwJSIgIT09IGsgJiYgImF1dG8iICE9PSBSIHx8IHZvaWQgMCA9PT0gcC55dGlkKSAtIDEgPT0gbFswXS5jbGFzc05hbWUuaW5kZXhPZigicnMtZnN2IikgPyAoUiA9ICJhdXRvIiA9PT0gUiAmJiB2b2lkIDAgIT09IHAudmQgJiYgImF1dG8iICE9PSBrID8gIjEwMCUiID09PSBrID8gbC53aWR0aCgpIC8gcC52ZCA6IGsgLyBwLnZkIDogUiwgcC52aWRPQkogPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6ICgiZ3JpZCIgIT09IHAuYmFzZWFsaWduICYmICh3ID0gMCwgXyA9IDApLCBwLnggPSBvLnJldlRvUmVzcCgwLCBvW3JdLnJsZSwgMCksIHAueSA9IG8ucmV2VG9SZXNwKDAsIG9bcl0ucmxlLCAwKSwgcC52aWRPQkogPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBvW3JdLmF1dG9IZWlnaHQgPyBvW3JdLmNhbnYuaGVpZ2h0IDogUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDAgIT0gcC5odG1sNXZpZCAmJiBsLmhhc0NsYXNzKCJycy1mc3YiKSB8fCAocC5tZWRpYU9CSiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHAuX2luZ3JvdXAgJiYgbnVsbCAhPT0gcC52aWRPQkoud2lkdGggJiYgdm9pZCAwICE9PSBwLnZpZE9CSi53aWR0aCAmJiAhby5pc051bWVyaWMocC52aWRPQkoud2lkdGgpICYmIHAudmlkT0JKLndpZHRoLmluZGV4T2YoIiUiKSA+IDAgJiYgKHAuT0JKVVBELmxwcG1PQkogPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8gPSBsLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgPSAiYXV0byIgPT09IFIgPyBPIC8gcC52ZCA6IFI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC52aWRPQkogPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogSQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHAuaGVpZ2h0U2V0QnlWaWRlbyA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcC5fc2xpZGVsaW5rIHx8IG9bcl0uY2FjaGVzLmNhbGNSZXNwb25zaXZlTGF5ZXJzTGlzdC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6IHAucnNwX2JkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogZS5zbGlkZUluZGV4CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAib24iID09PSBwLnJzcF9jaCAmJiAicm93IiAhPT0gcC50eXBlICYmICJjb2x1bW4iICE9PSBwLnR5cGUgJiYgImdyb3VwIiAhPT0gcC50eXBlICYmICJpbWFnZSIgIT09IHAudHlwZSAmJiAidmlkZW8iICE9PSBwLnR5cGUgJiYgInNoYXBlIiAhPT0gcC50eXBlICYmIGwuZmluZCgiKiIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGpRdWVyeSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cnVlIiAhPT0gby5nQSh0aGlzLCAic3R5bGVyZWNvcmRlciIpICYmICEwICE9PSBvLmdBKHRoaXMsICJzdHlsZXJlY29yZGVyIikgJiYgTSh0LCAicmVrdXJzaXZlIiwgciksIG9bcl0uY2FjaGVzLmNhbGNSZXNwb25zaXZlTGF5ZXJzTGlzdC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogInJla3Vyc2l2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDogcC5yc3BfYmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogZS5zbGlkZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTTDogbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJwcmVzZXQiICE9PSBlLm1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAub2xkZW93ID0gcC5lb3csIHAub2xkZW9oID0gcC5lb2gsIHAuZW93ID0gbC5vdXRlcldpZHRoKCEwKSwgcC5lb2ggPSBsLm91dGVySGVpZ2h0KCEwKSwgcC5pbWdJbkZpcmVmb3ggPSAiaW1hZ2UiID09IHAudHlwZSAmJiAiYXV0byIgPT0gcC53aWR0aFtvW3JdLmxldmVsXSAmJiAiMTAwJSIgPT0gcC5oZWlnaHRbb1tyXS5sZXZlbF0gJiYgby5pc0ZpcmVmb3gociksIHAuaW1nSW5GaXJlZm94KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IHAuaW1nLndpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmVvdyA9IDAgIT09IFQgPyBUIDogcC5lb3cKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5lb3cgPD0gMCAmJiB2b2lkIDAgIT09IHAubGFzdGtub3dud2lkdGggJiYgKHAuZW93ID0gcC5sYXN0a25vd253aWR0aCksIHAuZW9oIDw9IDAgJiYgdm9pZCAwICE9PSBwLmxhc3Rrbm93bmhlaWdodCAmJiAocC5lb2ggPSBwLmxhc3Rrbm93bmhlaWdodCksIHZvaWQgMCAhPT0gcC5jb3JuZXJzICYmICgidGV4dCIgPT09IHAudHlwZSB8fCAiYnV0dG9uIiA9PT0gcC50eXBlIHx8ICJzaGFwZSIgPT09IHAudHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSBpbiBwLmNvcm5lcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuY29ybmVycy5oYXNPd25Qcm9wZXJ0eShhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmNvcm5lcnNbYV0uY3NzKCJib3JkZXJXaWR0aCIsIHAuZW9oICsgInB4Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBDID0gInJzLWZjcnQiID09PSBhIHx8ICJycy1mY3IiID09PSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmNvcm5lcnNbYV0uY3NzKCJib3JkZXIiICsgKEMgPyAiUmlnaHQiIDogIkxlZnQiKSwgIjBweCBzb2xpZCB0cmFuc3BhcmVudCIpLCBwLmNvcm5lcnNbYV0uY3NzKCJib3JkZXIiICsgKCJycy1mY3J0IiA9PSBhIHx8ICJycy1iY3IiID09IGEgPyAiQm90dG9tIiA6ICJUb3AiKSArICJDb2xvciIsIHAuYmdjb2wpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5lb3cgPSBsLm91dGVyV2lkdGgoITApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgMCA9PSBwLmVvdyAmJiAwID09IHAuZW9oICYmIChwLmVvdyA9ICJncmlkIiA9PT0gcC5iYXNlYWxpZ24gPyBvW3JdLmNvbnRlbnQud2lkdGggOiBvW3JdLm1vZHVsZS53aWR0aCwgcC5lb2ggPSAiZ3JpZCIgPT09IHAuYmFzZWFsaWduID8gb1tyXS5jb250ZW50LmhlaWdodCA6IG9bcl0ubW9kdWxlLmhlaWdodCksIHAuYmFzZWFsaWduID0gb1tyXS5qdXN0aWZ5Q2Fyb3VzZWwgPyAiZ3JpZCIgOiBwLmJhc2VhbGlnbjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEEgPSAib24iID09PSBwLnJzcF9vID8gcGFyc2VJbnQocC52b2Zmc2V0W29bcl0ubGV2ZWxdLCAwKSAqIG9bcl0uQ00udyA6IHBhcnNlSW50KHAudm9mZnNldFtvW3JdLmxldmVsXSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gIm9uIiA9PT0gcC5yc3BfbyA/IHBhcnNlSW50KHAuaG9mZnNldFtvW3JdLmxldmVsXSwgMCkgKiBvW3JdLkNNLncgOiBwYXJzZUludChwLmhvZmZzZXRbb1tyXS5sZXZlbF0sIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9ICJncmlkIiA9PT0gcC5iYXNlYWxpZ24gPyBvLmlXQShyLCBlLnNsaWRlSW5kZXgpICogb1tyXS5DTS53IDogdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQgPSAiZ3JpZCIgPT09IHAuYmFzZWFsaWduID8gby5pSEUocikgKiAob1tyXS5rZWVwQlBIZWlnaHQgfHwgb1tyXS5jdXJyZW50Um93c0hlaWdodCA+IG9bcl0uZ3JpZGhlaWdodFtvW3JdLmxldmVsXSA/IDEgOiBvW3JdLkNNLmgpIDogZjsKICAgICAgICAgICAgICAgICAgICAgICAgKDEgPT0gb1tyXS5ncmlkRVFNb2R1bGUgfHwgdm9pZCAwICE9PSBwLl9saWcgJiYgInJvdyIgIT09IHAudHlwZSAmJiAiY29sdW1uIiAhPT0gcC50eXBlICYmICJncm91cCIgIT09IHAudHlwZSkgJiYgKEIgPSB2b2lkIDAgIT09IHAuX2xpZyA/IHAuX2xpZy53aWR0aCgpIDogb1tyXS5tb2R1bGUud2lkdGgsIEQgPSB2b2lkIDAgIT09IHAuX2xpZyA/IHAuX2xpZy5oZWlnaHQoKSA6IG9bcl0ubW9kdWxlLmhlaWdodCwgdyA9IDAsIF8gPSAwKSwgInZpZGVvIiA9PT0gcC50eXBlICYmIG51bGwgIT0gcC52aWRPQkogJiYgKHAudmlkT0JKLmhlaWdodCA+PSAwICYmIDAgPT09IHAuZW9oICYmIChwLmVvaCA9IHAudmlkT0JKLmhlaWdodCksIHAudmlkT0JKLndpZHRoID49IDAgJiYgMCA9PT0gcC5lb3cgJiYgKHAuZW93ID0gcC52aWRPQkoud2lkdGgpKSwgdSA9ICJjIiA9PT0gdSB8fCAibSIgPT09IHUgfHwgImNlbnRlciIgPT09IHUgfHwgIm1pZGRsZSIgPT09IHUgPyBCIC8gMiAtIHAuZW93IC8gMiArIFAgOiAibCIgPT09IHUgfHwgImxlZnQiID09PSB1ID8gUCA6ICJyIiA9PT0gdSB8fCAicmlnaHQiID09PSB1ID8gQiAtIHAuZW93IC0gUCA6ICJvZmYiICE9PSBwLnJzcF9vID8gdSAqIG9bcl0uQ00udyA6IHUsIGggPSAibSIgPT09IGggfHwgImMiID09PSBoIHx8ICJjZW50ZXIiID09PSBoIHx8ICJtaWRkbGUiID09PSBoID8gRCAvIDIgLSBwLmVvaCAvIDIgKyBBIDogInQiID09PSBoIHx8ICJ0b3AiID09IGggPyBBIDogImIiID09PSBoIHx8ICJib3R0b20iID09IGggPyBEIC0gcC5lb2ggLSBBIDogIm9mZiIgIT09IHAucnNwX28gPyBoICogb1tyXS5DTS53IDogaCwgdSA9IHAuX3NsaWRlbGluayA/IDAgOiBvW3JdLnJ0bCAmJiAtMSA9PSAoIiIgKyBwLndpZHRoW29bcl0ubGV2ZWxdKS5pbmRleE9mKCIlIikgPyBwYXJzZUludCh1KSArIHAuZW93IDogdSwgcC5jYWxjeCA9IHBhcnNlSW50KHUsIDApICsgdywgcC5jYWxjeSA9IHBhcnNlSW50KGgsIDApICsgXywgInJvdyIgIT09IHAudHlwZSAmJiAiY29sdW1uIiAhPT0gcC50eXBlID8gcC5PQkpVUEQuUE9CSiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogcC56aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHAuY2FsY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwLmNhbGN4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlOiAiYXV0byIKICAgICAgICAgICAgICAgICAgICAgICAgfSA6ICJyb3ciICE9PSBwLnR5cGUgPyBwLk9CSlVQRC5QT0JKID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiBwLnppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBwLmNvbHVtbndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ3cml0ZTogImF1dG8iCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAicm93IiA9PT0gcC50eXBlICYmIChwLk9CSlVQRC5QT0JKID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiBwLnppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiZ3JpZCIgPT09IHAuYmFzZWFsaWduID8gQiArICJweCIgOiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBvW3JdLnJ0bCA/IC0xICogdyA6IHcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGU6ICJhdXRvIgogICAgICAgICAgICAgICAgICAgICAgICB9LCBwLmNicmVhayA8PSBvW3JdLmxldmVsID8gLTEgPT09IGxbMF0uY2xhc3NOYW1lLmluZGV4T2YoInJldl9icmVha19jb2x1bW5zIikgJiYgbFswXS5jbGFzc0xpc3QuYWRkKCJyZXZfYnJlYWtfY29sdW1ucyIpIDogbFswXS5jbGFzc05hbWUuaW5kZXhPZigicmV2X2JyZWFrX2NvbHVtbnMiKSA+IDAgJiYgbFswXS5jbGFzc0xpc3QucmVtb3ZlKCJyZXZfYnJlYWtfY29sdW1ucyIpLCBwLnJvd2NhbGN4ID0gcC5PQkpVUEQuUE9CSi5sZWZ0LCBwLnBvdyA9IHAucC5vdXRlcldpZHRoKCEwKSksIHZvaWQgMCAhPT0gcC5ibGVuZG1vZGUgJiYgKHAuT0JKVVBELlBPQkoubWl4QmxlbmRNb2RlID0gcC5ibGVuZG1vZGUpLCAodm9pZCAwICE9PSBwLmZyYW1lcy5sb29wIHx8IHAuaW1nSW5GaXJlZm94KSAmJiAocC5PQkpVUEQuTFBPQkogPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogcC5lb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHAuZW9oCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBwLl9pbmdyb3VwICYmICh2b2lkIDAgIT09IHAuX2dyb3VwdyAmJiAhby5pc051bWVyaWMocC5fZ3JvdXB3KSAmJiBwLl9ncm91cHcuaW5kZXhPZigiJSIpID4gMCAmJiAocC5PQkpVUEQubHBwbU9CSi5taW5XaWR0aCA9IHAuX2dyb3VwdyksIHZvaWQgMCAhPT0gcC5fZ3JvdXBoICYmICFvLmlzTnVtZXJpYyhwLl9ncm91cGgpICYmIHAuX2dyb3VwaC5pbmRleE9mKCIlIikgPiAwICYmIChwLk9CSlVQRC5scHBtT0JKLm1pbkhlaWdodCA9IHAuX2dyb3VwaCkpLCAidXBkYXRlcG9zaXRpb24iID09PSBlLm1vZGUgJiYgKHAuY2FjaGVzLlBPQkpfTEVGVCA9PT0gcC5PQkpVUEQuUE9CSi5sZWZ0ICYmIHAuY2FjaGVzLlBPQkpfVE9QID09PSBwLk9CSlVQRC5QT0JKLnRvcCB8fCAodHBHUy5nc2FwLnNldChwLnAsIHAuT0JKVVBELlBPQkopLCBwLmNhY2hlcy5QT0JKX0xFRlQgPSBwLk9CSlVQRC5QT0JKLmxlZnQsIHAuY2FjaGVzLlBPQkpfVE9QID0gcC5PQkpVUEQuUE9CSi50b3ApKSwgZS5hbmltY29tcGxldGVkICYmIG8uYW5pbWNvbXBsZXRlZChsLCByKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhvdmVyUmV2ZXJzZURvbmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgb1tlLmlkXS5fTFtlLkxbMF0uaWRdLnRleHREZWNvcmF0aW9uICYmIHRwR1MuZ3NhcC5zZXQob1tlLmlkXS5fTFtlLkxbMF0uaWRdLmMsIHsKICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiBvW2UuaWRdLl9MW2UuTFswXS5pZF0udGV4dERlY29yYXRpb24KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGFuaW1jb21wbGV0ZWQ6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gb1t0XS52aWRlb3MpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gb1t0XS52aWRlb3NbZVswXS5pZF07CiAgICAgICAgICAgICAgICBudWxsICE9IGEgJiYgbnVsbCAhPSBhLnR5cGUgJiYgIm5vbmUiICE9IGEudHlwZSAmJiAoMSA9PSBhLmFwbGF5IHx8ICJ0cnVlIiA9PSBhLmFwbGF5IHx8ICJvbiIgPT0gYS5hcGxheSB8fCAiMXN0dGltZSIgPT0gYS5hcGxheSA/ICgoImNhcm91c2VsIiAhPT0gb1t0XS5zbGlkZXJUeXBlIHx8IGUuY2xvc2VzdCgicnMtc2xpZGUiKS5pbmRleCgpID09IG9bdF0uY2Fyb3VzZWwuZm9jdXNlZCB8fCBlLmNsb3Nlc3QoInJzLXNsaWRlIikuaW5kZXgoKSA9PSBvW3RdLmFjdGl2ZVJTU2xpZGUgJiYgb1t0XS5jYXJvdXNlbC5vbGRmb2N1c2VkID09IG9bdF0uY2Fyb3VzZWwuZm9jdXNlZCB8fCBpKSAmJiBvLnBsYXlWaWRlbyhlLCB0KSwgby50b2dnbGVTdGF0ZShlLmRhdGEoInZpZGVvdG9nZ2xlZGJ5IikpLCAoYS5hcGxheTEgfHwgIjFzdHRpbWUiID09IGEuYXBsYXkpICYmIChhLmFwbGF5MSA9ICExLCBhLmFwbGF5ID0gITEpKSA6ICgibm8xc3R0aW1lIiA9PSBhLmFwbGF5ICYmIChhLmFwbGF5ID0gITApLCBvLnVuVG9nZ2xlU3RhdGUoZS5kYXRhKCJ2aWRlb3RvZ2dsZWRieSIpKSkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhhbmRsZVN0YXRpY0xheWVyczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgaSA9IDAsCiAgICAgICAgICAgICAgICBhID0gb1t0XS5yZWFsc2xpZGVhbW91bnQgKyAxOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBvLmdBKGVbMF0sICJvbnNsaWRlcyIpKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG8uZ0EoZVswXSwgIm9uc2xpZGVzIikuc3BsaXQoIjsiKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIHMgaW4gcikKICAgICAgICAgICAgICAgICAgICBpZiAoci5oYXNPd25Qcm9wZXJ0eShzKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHJbc10uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgInMiID09PSBuWzBdICYmIChpID0gcGFyc2VJbnQoblsxXSwgMCkpLCAiZSIgPT09IG5bMF0gJiYgKGEgPSBwYXJzZUludChuWzFdLCAwKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaSA9IE1hdGgubWF4KDAsIGkpLCBhID0gTWF0aC5taW4ob1t0XS5yZWFsc2xpZGVhbW91bnQsIGEgPCAwID8gb1t0XS5yZWFsc2xpZGVhbW91bnQgOiBhKSwgYSA9IDEgIT09IGkgJiYgMCAhPT0gaSB8fCBhICE9PSBvW3RdLnJlYWxzbGlkZWFtb3VudCA/IGEgOiBvW3RdLnJlYWxzbGlkZWFtb3VudCArIDEsIGUuZGF0YSgic3RhcnRzbGlkZSIsIGkpLCBlLmRhdGEoImVuZHNsaWRlIiwgYSksIG8uc0EoZVswXSwgInN0YXJ0c2xpZGUiLCBpKSwgby5zQShlWzBdLCAiZW5kc2xpZGUiLCBhKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlTGF5ZXJzT25GdWxsU3RhZ2U6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKG9bZV0uY2FjaGVzLmNhbGNSZXNwb25zaXZlTGF5ZXJzTGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAhMCAhPT0gb1tlXS5zbGlkZUhhc0lmcmFtZSAmJiAhMCAhPT0gb1tlXS5mdWxsU2NyZWVuTW9kZSAmJiAoImNhcm91c2VsIiA9PT0gb1tlXS5zbGlkZXJUeXBlID8gb1tlXS5jYXJvdXNlbC53cmFwLmRldGFjaCgpIDogb1tlXS5jYW52YXMuZGV0YWNoKCkpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCBvW2VdLmNhY2hlcy5jYWxjUmVzcG9uc2l2ZUxheWVyc0xpc3QubGVuZ3RoOyB0KyspIHZvaWQgMCAhPT0gb1tlXS5jYWNoZXMuY2FsY1Jlc3BvbnNpdmVMYXllcnNMaXN0W3RdICYmIHoob1tlXS5jYWNoZXMuY2FsY1Jlc3BvbnNpdmVMYXllcnNMaXN0W3RdKTsKICAgICAgICAgICAgICAgICEwICE9PSBvW2VdLnNsaWRlSGFzSWZyYW1lICYmICEwICE9PSBvW2VdLmZ1bGxTY3JlZW5Nb2RlICYmICgiY2Fyb3VzZWwiID09PSBvW2VdLnNsaWRlclR5cGUgPyBvW2VdLmNbMF0uYXBwZW5kQ2hpbGQob1tlXS5jYXJvdXNlbC53cmFwWzBdKSA6IG9bZV0uY1swXS5hcHBlbmRDaGlsZChvW2VdLmNhbnZhc1swXSkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGFuaW1hdGVUaGVMYXllcnM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZS5zbGlkZSkgcmV0dXJuICExOwogICAgICAgICAgICB2YXIgdCA9IGUuaWQ7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IG9bdF0uc2xpZGVzW2Uuc2xpZGVdICYmICJpbmRpdmlkdWFsIiAhPT0gZS5zbGlkZSkgcmV0dXJuICExOwogICAgICAgICAgICBpZiAoImNhcm91c2VsIiA9PT0gb1t0XS5zbGlkZXJUeXBlKSB7CiAgICAgICAgICAgICAgICBpZiAoInN0YXJ0IiA9PT0gZS5tb2RlICYmICJzdGFydCIgPT09IG9bdF0ubGFzdEFUTG1vZGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5zbGlkZSA9PT0gb1t0XS5sYXN0QVRMc2xpZGUgJiYgKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSBvW3RdLmxhc3RBVEx0aW1lIDwgMTUwMCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIG9bdF0ubGFzdEFUTHRpbWUgPSAobmV3IERhdGUpLmdldFRpbWUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb1t0XS5sYXN0QVRMbW9kZSA9IGUubW9kZSwgb1t0XS5sYXN0QVRMc2xpZGUgPSBlLnNsaWRlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGkgPSAiaW5kaXZpZHVhbCIgIT09IGUuc2xpZGUgPyBvLmdBKG9bdF0uc2xpZGVzW2Uuc2xpZGVdLCAia2V5IikgOiAiaW5kaXZpZHVhbCIsCiAgICAgICAgICAgICAgICBhID0gb1t0XS5wcl9wcm9jZXNzaW5nX2tleSB8fCBvW3RdLnByX2FjdGl2ZV9rZXkgfHwgMDsKICAgICAgICAgICAgb1t0XS5jYWNoZXMuY2FsY1Jlc3BvbnNpdmVMYXllcnNMaXN0ID0gW10sIG9bdF0ubGF5ZXJzID0gb1t0XS5sYXllcnMgfHwge30sICJpbmRpdmlkdWFsIiA9PT0gaSA/IG9bdF0ubGF5ZXJzLmluZGl2aWR1YWwgPSB2b2lkIDAgPT09IG9bdF0ubGF5ZXJzLmluZGl2aWR1YWwgPyAiYWxsIiA9PT0gb1t0XS5jYXJvdXNlbC5zaG93TGF5ZXJzQWxsVGltZSA/IEMoalF1ZXJ5KG9bdF0uYyksICJycy1sYXllciIsICJycy1sYXllci1zdGF0aWMiKSA6IEMoalF1ZXJ5KG9bdF0uYyksICJycy1vbi1jYXIiKSA6IG9bdF0ubGF5ZXJzLmluZGl2aWR1YWwgOiAob1t0XS5sYXllcnNbaV0gPSB2b2lkIDAgPT09IG9bdF0ubGF5ZXJzW2ldID8gImFsbCIgPT09IG9bdF0uY2Fyb3VzZWwuc2hvd0xheWVyc0FsbFRpbWUgPyBbXSA6IEMoalF1ZXJ5KG9bdF0uc2xpZGVzW2Uuc2xpZGVdKSwgInJzLWxheWVyIiwgImNhcm91c2VsIiA9PT0gb1t0XS5zbGlkZXJUeXBlID8gInJzLW9uLWNhciIgOiB2b2lkIDApIDogb1t0XS5sYXllcnNbaV0sIG9bdF0ubGF5ZXJzLnN0YXRpYyA9IHZvaWQgMCA9PT0gb1t0XS5sYXllcnMuc3RhdGljID8gQyhqUXVlcnkob1t0XS5jLmZpbmQoInJzLXN0YXRpYy1sYXllcnMiKSksICJycy1sYXllciIsICJycy1vbi1jYXIiKSA6IG9bdF0ubGF5ZXJzLnN0YXRpYywgb1t0XS5zYmFzW2ldID0gdm9pZCAwID09PSBvW3RdLnNiYXNbaV0gPyBDKGpRdWVyeShvW3RdLnNsaWRlc1tlLnNsaWRlXSksICJycy1zYmEiKSA6IG9bdF0uc2Jhc1tpXSk7CiAgICAgICAgICAgIHZhciByID0gInJlYnVpbGQiID09PSBlLm1vZGUgJiYgImNhcm91c2VsIiA9PT0gb1t0XS5zbGlkZXJUeXBlICYmICJpbmRpdmlkdWFsIiA9PT0gaTsKICAgICAgICAgICAgdm9pZCAwICE9PSBpICYmIG9bdF0ubGF5ZXJzW2ldICYmIG8uaW5pdExheWVyKHsKICAgICAgICAgICAgICAgIGlkOiB0LAogICAgICAgICAgICAgICAgc2xpZGVJbmRleDogZS5zbGlkZSwKICAgICAgICAgICAgICAgIHNrZXk6IGksCiAgICAgICAgICAgICAgICBtb2RlOiBlLm1vZGUsCiAgICAgICAgICAgICAgICBhbmltY29tcGxldGVkOiByCiAgICAgICAgICAgIH0pLCBvW3RdLmxheWVycy5zdGF0aWMgJiYgby5pbml0TGF5ZXIoewogICAgICAgICAgICAgICAgaWQ6IHQsCiAgICAgICAgICAgICAgICBza2V5OiAic3RhdGljIiwKICAgICAgICAgICAgICAgIHNsaWRlSW5kZXg6ICJzdGF0aWMiLAogICAgICAgICAgICAgICAgbW9kZTogZS5tb2RlLAogICAgICAgICAgICAgICAgYW5pbWNvbXBsZXRlZDogcgogICAgICAgICAgICB9KSwgby51cGRhdGVMYXllcnNPbkZ1bGxTdGFnZSh0KSwgInByZXNldCIgIT09IGUubW9kZSB8fCB2b2lkIDAgIT09IG9bdF0uc2xpZGVQcmVzZXRzICYmIHZvaWQgMCAhPT0gb1t0XS5zbGlkZVByZXNldHNbZS5zbGlkZV0gfHwgKG9bdF0uc2xpZGVQcmVzZXRzID0gdm9pZCAwID09PSBvW3RdLnNsaWRlUHJlc2V0cyA/IHt9IDogb1t0XS5zbGlkZVByZXNldHMsIG9bdF0uc2xpZGVQcmVzZXRzW2Uuc2xpZGVdID0gITAsIG9bdF0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlcHJlcGFyZWQiLCB7CiAgICAgICAgICAgICAgICBzbGlkZTogZS5zbGlkZSwKICAgICAgICAgICAgICAgIGtleTogaQogICAgICAgICAgICB9KSksIG9bdF0uaGVpZ2h0SW5MYXllcnMgPSBvW3RdLm1vZHVsZS5oZWlnaHQsIG9bdF0ud2lkdGhJbkxheWVycyA9IG9bdF0ubW9kdWxlLndpZHRoLCBvW3RdLmxldmVsSW5MYXllcnMgPSBvW3RdLmxldmVsOwogICAgICAgICAgICB2YXIgcyA9IHsKICAgICAgICAgICAgICAgIGlkOiB0LAogICAgICAgICAgICAgICAgc2tleTogaSwKICAgICAgICAgICAgICAgIHNsaWRlOiBlLnNsaWRlLAogICAgICAgICAgICAgICAga2V5OiBpLAogICAgICAgICAgICAgICAgbW9kZTogZS5tb2RlLAogICAgICAgICAgICAgICAgaW5kZXg6IGEKICAgICAgICAgICAgfTsKICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IG9bdF0uZGltZW5zaW9uUmVDaGVja1tpXSA/IChvLnVwZGF0ZUxheWVyRGltZW5zaW9ucyhzKSwgITAgIT09IG9bdF0uZG91YmxlRGltZW5zaW9uQ2hlY2sgPyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBvLnVwZGF0ZUxheWVyRGltZW5zaW9ucyhzKSwgby51cGRhdGVSb3dab25lcyhzKQogICAgICAgICAgICAgICAgICAgIH0sIDE1MCkgOiBvLnVwZGF0ZVJvd1pvbmVzKHMpLCBvW3RdLmRvdWJsZURpbWVuc2lvbkNoZWNrID0gITAsIG9bdF0uZGltZW5zaW9uUmVDaGVja1tpXSA9ICEwKSA6IG8udXBkYXRlUm93Wm9uZXMocyksIHZvaWQgMCAhPT0gaSAmJiBvW3RdLmxheWVyc1tpXSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhIGluIG9bdF0ubGF5ZXJzW2ldKSBvW3RdLmxheWVyc1tpXS5oYXNPd25Qcm9wZXJ0eShhKSAmJiBvLnJlbmRlckxheWVyQW5pbWF0aW9uKHsKICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6IGpRdWVyeShvW3RdLmxheWVyc1tpXVthXSksCiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBlLm1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlcjogZS5jYWxsZXIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmIChvW3RdLmxheWVycy5zdGF0aWMpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSBpbiBvW3RdLmxheWVycy5zdGF0aWMpIG9bdF0ubGF5ZXJzLnN0YXRpYy5oYXNPd25Qcm9wZXJ0eShhKSAmJiBvLnJlbmRlckxheWVyQW5pbWF0aW9uKHsKICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6IGpRdWVyeShvW3RdLmxheWVycy5zdGF0aWNbYV0pLAogICAgICAgICAgICAgICAgICAgICAgICBpZDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogZS5tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXI6IGUuY2FsbGVyCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBudWxsICE9IG9bdF0ubXRsICYmIG9bdF0ubXRsLnJlc3VtZSgpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICB1cGRhdGVSb3dab25lczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAodm9pZCAwICE9PSBvW2UuaWRdLnJvd3pvbmVzICYmIG9bZS5pZF0ucm93em9uZXMubGVuZ3RoID4gMCAmJiBlLmluZGV4ID49IDAgJiYgb1tlLmlkXS5yb3d6b25lc1tNYXRoLm1pbihlLmluZGV4LCBvW2UuaWRdLnJvd3pvbmVzLmxlbmd0aCldICYmIG9bZS5pZF0ucm93em9uZXNbTWF0aC5taW4oZS5pbmRleCwgb1tlLmlkXS5yb3d6b25lcy5sZW5ndGgpXS5sZW5ndGggPiAwIHx8IHZvaWQgMCAhPT0gb1tlLmlkXS5zcm93em9uZXMgJiYgb1tlLmlkXS5zcm93em9uZXMubGVuZ3RoID4gMCB8fCB2b2lkIDAgIT09IG9bZS5pZF0uc21pZGRsZVpvbmVzICYmIG9bZS5pZF0uc21pZGRsZVpvbmVzLmxlbmd0aCA+IDApICYmIChvLnVwZGF0ZURpbXMoZS5pZCksIG8uaW5pdExheWVyKHsKICAgICAgICAgICAgICAgIGlkOiBlLmlkLAogICAgICAgICAgICAgICAgc2tleTogZS5rZXksCiAgICAgICAgICAgICAgICBzbGlkZUluZGV4OiBlLnNsaWRlLAogICAgICAgICAgICAgICAgbW9kZTogInVwZGF0ZXBvc2l0aW9uIgogICAgICAgICAgICB9KSwgby5pbml0TGF5ZXIoewogICAgICAgICAgICAgICAgaWQ6IGUuaWQsCiAgICAgICAgICAgICAgICBza2V5OiAic3RhdGljIiwKICAgICAgICAgICAgICAgIHNsaWRlSW5kZXg6ICJzdGF0aWMiLAogICAgICAgICAgICAgICAgbW9kZTogInVwZGF0ZXBvc2l0aW9uIgogICAgICAgICAgICB9KSwgInN0YXJ0IiAhPT0gZS5tb2RlICYmICJwcmVzZXQiICE9PSBlLm1vZGUgfHwgby5tYW5hZ2VOYXZpZ2F0aW9uKGUuaWQpKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlTGF5ZXJEaW1lbnNpb25zOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gITE7CiAgICAgICAgICAgIG9bZS5pZF0uY2FjaGVzLmNhbGNSZXNwb25zaXZlTGF5ZXJzTGlzdCA9IFtdLCB2b2lkIDAgPT09IGUua2V5IHx8ICJpbmRpdmlkdWFsIiAhPSBlLmtleSAmJiB2b2lkIDAgPT09IG9bZS5pZF0ubGF5ZXJzW2Uua2V5XSB8fCAhby5jaGVja0xheWVyRGltZW5zaW9ucyh7CiAgICAgICAgICAgICAgICBpZDogZS5pZCwKICAgICAgICAgICAgICAgIHNrZXk6IGUua2V5LAogICAgICAgICAgICAgICAgc2xpZGVJbmRleDogZS5zbGlkZQogICAgICAgICAgICB9KSB8fCAodCA9ICEwKSwgby5pbml0TGF5ZXIoewogICAgICAgICAgICAgICAgaWQ6IGUuaWQsCiAgICAgICAgICAgICAgICBza2V5OiBlLmtleSwKICAgICAgICAgICAgICAgIHNsaWRlSW5kZXg6IGUuc2xpZGUsCiAgICAgICAgICAgICAgICBtb2RlOiAidXBkYXRlQW5kUmVzaXplIgogICAgICAgICAgICB9KSwgb1tlLmlkXS5sYXllcnMuc3RhdGljICYmIG8uY2hlY2tMYXllckRpbWVuc2lvbnMoewogICAgICAgICAgICAgICAgaWQ6IGUuaWQsCiAgICAgICAgICAgICAgICBza2V5OiAic3RhdGljIiwKICAgICAgICAgICAgICAgIHNsaWRlSW5kZXg6ICJzdGF0aWMiCiAgICAgICAgICAgIH0pICYmICh0ID0gITAsIG8uaW5pdExheWVyKHsKICAgICAgICAgICAgICAgIGlkOiBlLmlkLAogICAgICAgICAgICAgICAgc2tleTogInN0YXRpYyIsCiAgICAgICAgICAgICAgICBzbGlkZUluZGV4OiAic3RhdGljIiwKICAgICAgICAgICAgICAgIG1vZGU6ICJ1cGRhdGVBbmRSZXNpemUiCiAgICAgICAgICAgIH0pKSwgdCAmJiBvLnVwZGF0ZUxheWVyc09uRnVsbFN0YWdlKGUuaWQpCiAgICAgICAgfSwKICAgICAgICB1cGRhdGVBbmltYXRpbmdMYXllclBvc2l0aW9uczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBvLmluaXRMYXllcih7CiAgICAgICAgICAgICAgICBpZDogZS5pZCwKICAgICAgICAgICAgICAgIHNrZXk6IGUua2V5LAogICAgICAgICAgICAgICAgc2xpZGVJbmRleDogZS5zbGlkZSwKICAgICAgICAgICAgICAgIG1vZGU6ICJ1cGRhdGVwb3NpdGlvbiIKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHJlbW92ZVRoZUxheWVyczogZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICB2YXIgYSA9IG8uZ0EoZVswXSwgImtleSIpOwogICAgICAgICAgICBmb3IgKHZhciByIGluIG9bdF0uc2xvb3BzICYmIG9bdF0uc2xvb3BzW2FdICYmIG9bdF0uc2xvb3BzW2FdLnRsICYmIG9bdF0uc2xvb3BzW2FdLnRsLnBhdXNlKCksIG9bdF0ubGF5ZXJzW2FdKSBvW3RdLmxheWVyc1thXS5oYXNPd25Qcm9wZXJ0eShyKSAmJiBvLnJlbmRlckxheWVyQW5pbWF0aW9uKHsKICAgICAgICAgICAgICAgIGxheWVyOiBqUXVlcnkob1t0XS5sYXllcnNbYV1bcl0pLAogICAgICAgICAgICAgICAgZnJhbWU6ICJmcmFtZV85OTkiLAogICAgICAgICAgICAgICAgbW9kZTogImNvbnRpbnVlIiwKICAgICAgICAgICAgICAgIHJlbW92ZTogITAsCiAgICAgICAgICAgICAgICBpZDogdCwKICAgICAgICAgICAgICAgIGFsbGZvcmNlOiBpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBmb3IgKHZhciByIGluIG9bdF0ubGF5ZXJzLnN0YXRpYykgb1t0XS5sYXllcnMuc3RhdGljLmhhc093blByb3BlcnR5KHIpICYmIG8ucmVuZGVyTGF5ZXJBbmltYXRpb24oewogICAgICAgICAgICAgICAgbGF5ZXI6IGpRdWVyeShvW3RdLmxheWVycy5zdGF0aWNbcl0pLAogICAgICAgICAgICAgICAgZnJhbWU6ICJmcmFtZV85OTkiLAogICAgICAgICAgICAgICAgbW9kZTogImNvbnRpbnVlIiwKICAgICAgICAgICAgICAgIHJlbW92ZTogITAsCiAgICAgICAgICAgICAgICBpZDogdCwKICAgICAgICAgICAgICAgIGFsbGZvcmNlOiBpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICByZW5kZXJMYXllckFuaW1hdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgaSwgYSA9IGUubGF5ZXIsCiAgICAgICAgICAgICAgICByID0gZS5pZCwKICAgICAgICAgICAgICAgIHMgPSBvW3JdLmxldmVsLAogICAgICAgICAgICAgICAgaCA9IG9bcl0uX0xbYVswXS5pZF0sCiAgICAgICAgICAgICAgICB2ID0gdm9pZCAwICE9PSBoLnRpbWVsaW5lID8gaC50aW1lbGluZS50aW1lKCkgOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBmID0gITEsCiAgICAgICAgICAgICAgICB5ID0gITEsCiAgICAgICAgICAgICAgICBiID0gIm5vbmUiOwogICAgICAgICAgICBpZiAoKCJjb250YWluZXJSZXNpemVkXzIiICE9PSBlLmNhbGxlciAmJiAic3dhcFNsaWRlUHJvZ3Jlc3NfMiIgIT09IGUuY2FsbGVyIHx8ICEwID09PSBoLmFuaW1hdGlvblJlbmRlcmVkKSAmJiAoaC5hbmltYXRpb25SZW5kZXJlZCA9ICEwLCAicHJlc2V0IiAhPT0gZS5tb2RlIHx8ICEwID09PSBoLmZyYW1lcy5mcmFtZV8xLnRpbWVsaW5lLndhaXRvbmNhbGwgfHwgdm9pZCAwICE9PSBoLnNjcm9sbEJhc2VkT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgaWYgKCJ0cmlnZ2VyIiA9PSBlLm1vZGUgJiYgKGgudHJpZ2dlcmVkRnJhbWUgPSBlLmZyYW1lKSwgaC5faXNzdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgUyA9ICJjYXJvdXNlbCIgPT09IG9bcl0uc2xpZGVyVHlwZSAmJiB2b2lkIDAgIT09IG9bcl0uY2Fyb3VzZWwub2xkZm9jdXNlZCA/IG9bcl0uY2Fyb3VzZWwub2xkZm9jdXNlZCA6IHZvaWQgMCA9PT0gb1tyXS5wcl9sYXN0c2hvd25fa2V5ID8gMSA6IHBhcnNlSW50KG9bcl0ucHJfbGFzdHNob3duX2tleSwgMCkgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICBrID0gImNhcm91c2VsIiA9PT0gb1tyXS5zbGlkZXJUeXBlID8gdm9pZCAwID09PSBvW3JdLnByX25leHRfa2V5ID8gMCA9PT0gUyA/IDEgOiBTIDogcGFyc2VJbnQob1tyXS5wcl9uZXh0X2tleSwgMCkgKyAxIDogdm9pZCAwID09PSBvW3JdLnByX3Byb2Nlc3Npbmdfa2V5ID8gUyA6IHBhcnNlSW50KG9bcl0ucHJfcHJvY2Vzc2luZ19rZXksIDApICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgTCA9IFMgPj0gaC5zdGFydHNsaWRlICYmIFMgPD0gaC5lbmRzbGlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgUiA9IGsgPj0gaC5zdGFydHNsaWRlICYmIGsgPD0gaC5lbmRzbGlkZTsKICAgICAgICAgICAgICAgICAgICBpZiAoYiA9IFMgPT09IGguZW5kc2xpZGUgJiYgImNvbnRpbnVlIiA9PT0gZS5tb2RlIHx8ICgiY29udGludWUiID09PSBlLm1vZGUgfHwgUyA9PT0gaC5lbmRzbGlkZSkgJiYgIm5vbmUiLCAhMCA9PT0gZS5hbGxmb3JjZSB8fCAhMCA9PT0gYikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNvbnRpbnVlIiA9PT0gZS5tb2RlICYmICJmcmFtZV85OTkiID09PSBlLmZyYW1lICYmIChSIHx8IHZvaWQgMCA9PT0gaC5sYXN0UmVxdWVzdGVkTWFpbkZyYW1lKSkgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJwcmVzZXQiID09PSBlLm1vZGUgJiYgKGguZWxlbWVudEhvdmVyZWQgfHwgIVIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgicmVidWlsZCIgPT09IGUubW9kZSAmJiAhTCAmJiAhUikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0YXJ0IiA9PT0gZS5tb2RlICYmIFIgJiYgImZyYW1lXzEiID09PSBoLmxhc3RSZXF1ZXN0ZWRNYWluRnJhbWUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgic3RhcnQiID09PSBlLm1vZGUgfHwgInByZXNldCIgPT09IGUubW9kZSkgJiYgImZyYW1lXzk5OSIgPT09IGgubGFzdFJlcXVlc3RlZE1haW5GcmFtZSAmJiAhMCAhPT0gaC5sZWZ0c3RhZ2UpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJjb250aW51ZSIgPT09IGUubW9kZSAmJiAiZnJhbWVfOTk5IiA9PT0gZS5mcmFtZSAmJiAoUiB8fCB2b2lkIDAgPT09IGgubGFzdFJlcXVlc3RlZE1haW5GcmFtZSkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdGFydCIgPT09IGUubW9kZSAmJiAhUikgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlICJzdGFydCIgPT09IGUubW9kZSAmJiAia2VlcCIgIT09IGgudHJpZ2dlcmNhY2hlICYmIChoLnRyaWdnZXJlZEZyYW1lID0gdm9pZCAwKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIE8gaW4gInN0YXJ0IiA9PT0gZS5tb2RlICYmICh2b2lkIDAgIT09IGgubGF5ZXJMb29wICYmIChoLmxheWVyTG9vcC5jb3VudCA9IDApLCBlLmZyYW1lID0gdm9pZCAwID09PSBoLnRyaWdnZXJlZEZyYW1lID8gMCA6IGgudHJpZ2dlcmVkRnJhbWUpLCAiY29udGludWUiID09PSBlLm1vZGUgfHwgInRyaWdnZXIiID09PSBlLm1vZGUgfHwgdm9pZCAwID09PSBoLnRpbWVsaW5lIHx8IGguX2lzc3RhdGljICYmICEwID09PSBoLmxlZnRzdGFnZSB8fCBoLnRpbWVsaW5lLnBhdXNlKDApLCAiY29udGludWUiICE9PSBlLm1vZGUgJiYgInRyaWdnZXIiICE9PSBlLm1vZGUgfHwgdm9pZCAwID09PSBoLnRpbWVsaW5lIHx8IGgudGltZWxpbmUucGF1c2UoKSwgaC50aW1lbGluZSA9IHRwR1MuZ3NhcC50aW1lbGluZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlZDogITAKICAgICAgICAgICAgICAgICAgICB9KSwgInRleHQiICE9PSBoLnR5cGUgJiYgImJ1dHRvbiIgIT09IGgudHlwZSB8fCB2b2lkIDAgIT09IGguc3BsaXRUZXh0ICYmICh2b2lkIDAgIT09IGguc3BsaXRUZXh0Rml4IHx8ICJzdGFydCIgIT09IGUubW9kZSAmJiAicHJlc2V0IiAhPT0gZS5tb2RlKSB8fCAodyh7CiAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiBhLAogICAgICAgICAgICAgICAgICAgICAgICBpZDogcgogICAgICAgICAgICAgICAgICAgIH0pLCAic3RhcnQiID09PSBlLm1vZGUgJiYgKGguc3BsaXRUZXh0Rml4ID0gITApKSwgaC5mb3JkKQogICAgICAgICAgICAgICAgICAgIGlmIChoLmZvcmQuaGFzT3duUHJvcGVydHkoTykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEkgPSBoLmZvcmRbT10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnJhbWVfMCIgIT09IEkgJiYgImZyYW1lX2hvdmVyIiAhPT0gSSAmJiAibG9vcCIgIT09IEkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnJhbWVfOTk5IiA9PT0gSSAmJiAhaC5mcmFtZXNbSV0udGltZWxpbmUud2FpdG9uY2FsbCAmJiBoLmZyYW1lc1tJXS50aW1lbGluZS5zdGFydCA+PSBvW3JdLmR1cmF0aW9uICYmICEwICE9PSBlLnJlbW92ZSAmJiAoaC5mcmFtZXNbSV0udGltZWxpbmUud2FpdG9uY2FsbCA9ICEwKSwgInN0YXJ0IiA9PT0gZS5tb2RlICYmICJrZWVwIiAhPT0gaC50cmlnZ2VyY2FjaGUgJiYgKGguZnJhbWVzW0ldLnRpbWVsaW5lLmNhbGxzdGF0ZSA9IGguZnJhbWVzW0ldLnRpbWVsaW5lLndhaXRvbmNhbGwgPyAid2FpdGluZyIgOiAiIiksICJ0cmlnZ2VyIiA9PT0gZS5tb2RlICYmIGguZnJhbWVzW0ldLnRpbWVsaW5lLndhaXRvbmNhbGwgJiYgKEkgPT09IGUuZnJhbWUgPyAoaC5mcmFtZXNbSV0udGltZWxpbmUudHJpZ2dlcmVkID0gITAsIGguZnJhbWVzW0ldLnRpbWVsaW5lLmNhbGxzdGF0ZSA9ICJjYWxsZWQiKSA6IGguZnJhbWVzW0ldLnRpbWVsaW5lLnRyaWdnZXJlZCA9ICExKSwgInJlYnVpbGQiID09PSBlLm1vZGUgfHwgaC5mcmFtZXNbSV0udGltZWxpbmUudHJpZ2dlcmVkIHx8IChoLmZyYW1lc1tJXS50aW1lbGluZS5jYWxsc3RhdGUgPSBoLmZyYW1lc1tJXS50aW1lbGluZS53YWl0b25jYWxsID8gIndhaXRpbmciIDogIiIpLCAhMSAhPT0gZS5mYXN0Zm9yd2FyZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoImNvbnRpbnVlIiA9PT0gZS5tb2RlIHx8ICJ0cmlnZ2VyIiA9PT0gZS5tb2RlKSAmJiAhMSA9PT0geSAmJiBJICE9PSBlLmZyYW1lKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCJyZWJ1aWxkIiA9PT0gZS5tb2RlIHx8ICJwcmVzZXQiID09PSBlLm1vZGUpICYmICExID09PSB5ICYmIHZvaWQgMCAhPT0gaC50cmlnZ2VyZWRGcmFtZSAmJiBJICE9PSBoLnRyaWdnZXJlZEZyYW1lKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSSA9PT0gZS5mcmFtZSB8fCAicmVidWlsZCIgPT09IGUubW9kZSAmJiBJID09PSBoLnRyaWdnZXJlZEZyYW1lKSAmJiAoeSA9ICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIEkgPT09IGUuZnJhbWUgJiYgKHkgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSSAhPT0gZS5mcmFtZSAmJiBoLmZyYW1lc1tJXS50aW1lbGluZS53YWl0b25jYWxsICYmICJjYWxsZWQiICE9PSBoLmZyYW1lc1tJXS50aW1lbGluZS5jYWxsc3RhdGUgJiYgKGYgPSAhMCksIEkgIT09IGUuZnJhbWUgJiYgeSAmJiAoZiA9ICEwID09PSBmICYmIGguZnJhbWVzW0ldLnRpbWVsaW5lLndhaXRvbmNhbGwgPyAic2tpcHJlc3QiIDogITAgIT09IGYgJiYgZiksIHZvaWQgMCA9PT0gaC5oaWRlb25maXJzdHN0YXJ0ICYmICJmcmFtZV8xIiA9PT0gSSAmJiBoLmZyYW1lc1tJXS50aW1lbGluZS53YWl0b25jYWxsICYmIChoLmhpZGVvbmZpcnN0c3RhcnQgPSAhMCksIGYgJiYgIndhaXRpbmciID09PSBoLmZyYW1lc1tJXS50aW1lbGluZS5jYWxsc3RhdGUgJiYgInByZXNldCIgPT09IGUubW9kZSAmJiAxICE9IGguZmlyc3RUaW1lUmVuZGVyZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaC5faXNzdGF0aWMgJiYgdm9pZCAwID09PSBoLmN1cnJlbnRmcmFtZSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCA9ICEwLCBoLmZpcnN0VGltZVJlbmRlcmVkID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoInNraXByZXN0IiA9PT0gZiB8fCAiY2FsbGVkIiAhPT0gaC5mcmFtZXNbSV0udGltZWxpbmUuY2FsbHN0YXRlICYmIGYgJiYgZS50b2ZyYW1lICE9PSBJKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnJhbWVfOTk5IiAhPT0gSSB8fCAhMSAhPT0gYiB8fCAiY29udGludWUiICE9PSBlLm1vZGUgJiYgInN0YXJ0IiAhPT0gZS5tb2RlICYmICJyZWJ1aWxkIiAhPT0gZS5tb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5mZmYgPSAiZnJhbWVfMSIgPT09IEkgJiYgKCJ0cmlnZ2VyIiAhPT0gZS5tb2RlIHx8ICJmcmFtZV85OTkiID09PSBoLmN1cnJlbnRmcmFtZSB8fCAiZnJhbWVfMCIgPT09IGguY3VycmVudGZyYW1lIHx8IHZvaWQgMCA9PT0gaC5jdXJyZW50ZnJhbWUpLCAidHJpZ2dlciIgPT09IGUubW9kZSAmJiAiZnJhbWVfMSIgPT09IGUuZnJhbWUgJiYgITEgPT09IGgubGVmdHN0YWdlICYmIChoLmZmZiA9ICExKSwgVCB8fCAoaC5mcmFtZXNbSV0udGltZWxpbmUuY2FsbHN0YXRlID0gImNhbGxlZCIsIGguY3VycmVudGZyYW1lID0gSSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEMgPSBoLmZyYW1lc1tJXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGguZmZmID8gaC5mcmFtZXMuZnJhbWVfMCA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IHRwR1MuZ3NhcC50aW1lbGluZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gdHBHUy5nc2FwLnRpbWVsaW5lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSBoLmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQgPSB2b2lkIDAgIT09IEMuc2Z4ICYmIF8oQy5zZnguZWZmZWN0LCBoLm0sIEMudGltZWxpbmUuZWFzZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBDLnRpbWVsaW5lLnNwZWVkIC8gMWUzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTiA9IHgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogQy50aW1lbGluZS5lYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXRBbW91bnQ6IEIubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VmaWx0ZXI6IHZvaWQgMCAhPT0gaC5mcmFtZXMuZnJhbWVfaG92ZXIgJiYgdm9pZCAwICE9PSBoLmZyYW1lcy5mcmFtZV9ob3Zlci5maWx0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSBoLmZmZiA/IHgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogQy50aW1lbGluZS5lYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXRBbW91bnQ6IEIubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAiZnJhbWVfMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSB2b2lkIDAgIT09IEMubWFzayA/IHgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBDLm1hc2sueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogQy5tYXNrLnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBOLmVhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6ICJtYXNrIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRiA9IHZvaWQgMCAhPT0gaiAmJiBoLmZmZiA/IHgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBBLm1hc2sueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogQS5tYXNrLnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBOLmVhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6ICJmcm9tbWFzayIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcgPSBOLmVhc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE4uZm9yY2UzRCA9ICEwLCAiYmxvY2siID09PSBELnR5cGUgJiYgKEQuZnRbMF0uYmFja2dyb3VuZCA9IEMuc2Z4LmZ4YywgRC5mdFswXS52aXNpYmlsaXR5ID0gInZpc2libGUiLCBELmZ0WzFdLnZpc2liaWxpdHkgPSAidmlzaWJsZSIsIE0uYWRkKHRwR1MuZ3NhcC5mcm9tVG8oRC5ibWFza19pbiwgeiAvIDIsIEQuZnRbMF0sIEQuZnRbMV0sIDApKSwgTS5hZGQodHBHUy5nc2FwLmZyb21UbyhELmJtYXNrX2luLCB6IC8gMiwgRC5mdFsxXSwgRC50LCB6IC8gMikpLCAiZnJhbWVfMCIgIT09IEkgJiYgImZyYW1lXzEiICE9PSBJIHx8IChILm9wYWNpdHkgPSAwKSksIHZvaWQgMCAhPT0gQy5jb2xvciA/IE4uY29sb3IgPSBDLmNvbG9yIDogdm9pZCAwICE9PSBoLmNvbG9yICYmICJucGMiICE9PSBoLmNvbG9yW3NdICYmIChOLmNvbG9yID0gaC5jb2xvcltzXSksIHZvaWQgMCAhPT0gQSAmJiB2b2lkIDAgIT09IEEuY29sb3IgPyBILmNvbG9yID0gQS5jb2xvciA6IHZvaWQgMCAhPT0gQSAmJiB2b2lkIDAgIT09IGguY29sb3IgJiYgIm5wYyIgIT09IGguY29sb3Jbc10gJiYgKEguY29sb3IgPSBoLmNvbG9yW3NdKSwgdm9pZCAwICE9PSBDLmJnY29sb3IgPyBDLmJnY29sb3IuaW5kZXhPZigiZ3JhZGllbnQiKSA+PSAwID8gTi5iYWNrZ3JvdW5kID0gQy5iZ2NvbG9yIDogTi5iYWNrZ3JvdW5kQ29sb3IgPSBDLmJnY29sb3IgOiAhMCA9PT0gaC5iZ2NvbGludXNlICYmIChoLmJnY29sLmluZGV4T2YoImdyYWRpZW50IikgPj0gMCA/IE4uYmFja2dyb3VuZCA9IGguYmdjb2wgOiBOLmJhY2tncm91bmRDb2xvciA9IGguYmdjb2wpLCB2b2lkIDAgIT09IEEgJiYgKHZvaWQgMCAhPT0gQS5iZ2NvbG9yID8gQS5iZ2NvbG9yLmluZGV4T2YoImdyYWRpZW50IikgPj0gMCA/IEguYmFja2dyb3VuZCA9IEEuYmdjb2xvciA6IEguYmFja2dyb3VuZENvbG9yID0gQS5iZ2NvbG9yIDogITAgPT09IGguYmdjb2xpbnVzZSAmJiAoaC5iZ2NvbC5pbmRleE9mKCJncmFkaWVudCIpID49IDAgPyBILmJhY2tncm91bmQgPSBoLmJnY29sIDogSC5iYWNrZ3JvdW5kQ29sb3IgPSBoLmJnY29sKSksIHZvaWQgMCAhPT0gaC5zcGxpdFRleHQgJiYgITEgIT09IGguc3BsaXRUZXh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBWIGluIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBDW3RbVl1dICYmICFoLnF1aWNrUmVuZGVyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEUgPSBoLnNwbGl0VGV4dFt0W1ZdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWCA9IHgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdFtWXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IFcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0QW1vdW50OiBFLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogSSArICJfIiArIHRbVl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFkgPSBoLmZmZiA/IHgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IFguZWFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdFtWXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXRBbW91bnQ6IEUubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAiZnJhbWVfMF8iICsgdFtWXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUSA9IGguZnJhbWVzW0ldLmRvc3BsaXQgPyB2b2lkIDAgPT09IENbdFtWXV0uZGVsYXkgPyAuMDUgOiBDW3RbVl1dLmRlbGF5IC8gMTAwIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmNvbG9yW3NdID09PSBOLmNvbG9yICYmICJmcmFtZV8xIiA9PT0gSSB8fCAoWC5jb2xvciA9IE4uY29sb3IpLCB2b2lkIDAgIT09IEggJiYgaC5jb2xvcltzXSAhPT0gSC5jb2xvciAmJiAoWS5jb2xvciA9IEguY29sb3IpLCB2b2lkIDAgIT09IFkgJiYgWS5jb2xvciAhPT0gTi5jb2xvciAmJiAoWC5jb2xvciA9IE4uY29sb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBKID0gby5jbG9uZShYKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IGguZmZmID8gby5jbG9uZShZKSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVSA9IENbdFtWXV0uZGlyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBKLmRpciwgSi5kYXRhID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdHRlZDogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBKLnN0YWdnZXIgPSAiY2VudGVyIiA9PT0gVSB8fCAiZWRnZSIgPT09IFUgPyBjKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFjaDogUSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBRIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogVQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoOiBRLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBVCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgSi5kdXJhdGlvbiA9IHosIHZvaWQgMCAhPT0gcSAmJiBkZWxldGUgcS5kaXIsIGguZmZmID8gTS5hZGQoUC5mcm9tVG8oRSwgcSwgSiksIDApIDogTS5hZGQoUC50byhFLCBKKSwgMCksIEcgPSBNYXRoLm1heChHLCBFLmxlbmd0aCAqIFEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHogKz0gRywgdm9pZCAwID09PSBpICYmIChpID0gImlzb21ldHJpYyIgPT09IG9bcl0ucGVyc3BlY3RpdmVUeXBlID8gMCA6ICJsb2NhbCIgPT09IG9bcl0ucGVyc3BlY3RpdmVUeXBlID8gdm9pZCAwICE9PSBOLnRyYW5zZm9ybVBlcnNwZWN0aXZlID8gTi50cmFuc2Zvcm1QZXJzcGVjdGl2ZSA6IGguZmZmICYmIHZvaWQgMCAhPT0gSC50cmFuc2Zyb21QZXJzcGVjdGl2ZSA/IEgudHJhbnNmcm9tUGVyc3BlY3RpdmUgOiBvW3JdLnBlcnNwZWN0aXZlIDogb1tyXS5wZXJzcGVjdGl2ZSksIGgua25vd1RyYW5zZm9ybVBlcnNwZWN0aXZlID0gaSwgaC5weHVuZGVybWFzayB8fCB2b2lkIDAgIT09IGogJiYgKHZvaWQgMCAhPT0gQSAmJiAiaGlkZGVuIiA9PT0gQS5tYXNrLm92ZXJmbG93IHx8ICJoaWRkZW4iID09PSBDLm1hc2sub3ZlcmZsb3cpKSBNLmFkZCh0cEdTLmdzYXAudG8oaC5tLCAuMDAxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAiaGlkZGVuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgImNvbHVtbiIgPT09IGgudHlwZSAmJiBNLmFkZCh0cEdTLmdzYXAudG8oaC5jYmdtYXNrLCAuMDAxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAiaGlkZGVuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgaC5idHJhbnMgJiYgKEYgJiYgKEYucm90YXRpb25YID0gaC5idHJhbnMuclgsIEYucm90YXRpb25ZID0gaC5idHJhbnMuclksIEYucm90YXRpb25aID0gaC5idHJhbnMuclosIEYub3BhY2l0eSA9IGguYnRyYW5zLm8pLCBqLnJvdGF0aW9uWCA9IGguYnRyYW5zLnJYLCBqLnJvdGF0aW9uWSA9IGguYnRyYW5zLnJZLCBqLnJvdGF0aW9uWiA9IGguYnRyYW5zLnJaLCBqLm9wYWNpdHkgPSBoLmJ0cmFucy5vKSwgaC5mZmYgPyBNLmFkZCh0cEdTLmdzYXAuZnJvbVRvKFtoLm0sIGguY2JnbWFza10sIHosIG8uY2xvbmUoRiksIG8uY2xvbmUoaikpLCAuMDAxKSA6IE0uYWRkKHRwR1MuZ3NhcC50byhbaC5tLCBoLmNiZ21hc2tdLCB6LCBvLmNsb25lKGopKSwgLjAwMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodm9pZCAwICE9PSBoLmJ0cmFucykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgWiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiBoLmJ0cmFucy5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25YOiBoLmJ0cmFucy5yWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uWTogaC5idHJhbnMuclksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblo6IGguYnRyYW5zLnJaLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICJ2aXNpYmxlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBoLmJ0cmFucy5yWCAmJiAwID09IGguYnRyYW5zLnJZIHx8IChoLm1hc2tIYXNQZXJzcGVjdGl2ZSA9ICEwLCBaLnRyYW5zZm9ybVBlcnNwZWN0aXZlID0gaSksIE0uYWRkKHRwR1MuZ3NhcC50byhoLm0sIC4wMDEsIFopLCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBNLmFkZCh0cEdTLmdzYXAudG8oaC5tLCAuMDAxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUHJvcHM6ICJ0cmFuc2Zvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogInZpc2libGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4uZm9yY2UzRCA9ICJhdXRvIiwgaC5mZmYgPyAoTi52aXNpYmlsaXR5ID0gInZpc2libGUiLCB2b2lkIDAgIT09IGguY2JnICYmIE0uZnJvbVRvKGguY2JnLCB6LCBILCBOLCAwKSwgb1tyXS5CVUdfc2FmYXJpX2NsaXBQYXRoICYmIChILmNsaXBQYXRoIHx8IE4uY2xpcFBhdGggfHwgaC5zcGlrZSkgJiYgKEgueiAmJiBwYXJzZUludChILnosIDEwKSB8fCAoSC56ID0gLTFlLTQpLCBOLnogJiYgcGFyc2VJbnQoTi56LCAxMCkgfHwgKE4ueiA9IDApKSwgdm9pZCAwICE9PSBoLmNiZyAmJiAiY29sdW1uIiA9PT0gaC50eXBlID8gTS5mcm9tVG8oQiwgeiwgbihIKSwgbihOKSwgMCkgOiBNLmZyb21UbyhCLCB6LCBILCBOLCAwKSwgTS5pbnZhbGlkYXRlKCkpIDogKCJmcmFtZV85OTkiICE9PSBoLmZyYW1lICYmIChOLnZpc2liaWxpdHkgPSAidmlzaWJsZSIpLCB2b2lkIDAgIT09IGguY2JnICYmIE0udG8oaC5jYmcsIHosIE4sIDApLCAhb1tyXS5CVUdfc2FmYXJpX2NsaXBQYXRoIHx8ICFOLmNsaXBQYXRoICYmICFoLnNwaWtlIHx8IE4ueiAmJiBwYXJzZUludChOLnosIDEwKSB8fCAoTi56ID0gMCAtIC4wMSAqIE1hdGgucmFuZG9tKCkpLCB2b2lkIDAgIT09IGguY2JnICYmICJjb2x1bW4iID09PSBoLnR5cGUgPyBNLnRvKEIsIHosIG4oTiksIDApIDogTS50byhCLCB6LCBOLCAwKSksIHZvaWQgMCAhPT0gVyAmJiAib2JqZWN0IiAhPSB0eXBlb2YgVyAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiBXICYmIFcuaW5kZXhPZigiU0ZYQm91bmNlIikgPj0gMCAmJiBNLnRvKEIsIHosIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVYOiAxLjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IE4uZWFzZSArICItc3F1YXNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAiYm90dG9tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDFlLTQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBLID0gInRyaWdnZXIiICE9PSBlLm1vZGUgJiYgKCEwICE9PSBmICYmICJza2lwcmVzdCIgIT09IGYgfHwgInJlYnVpbGQiICE9PSBlLm1vZGUpIHx8IGUuZnJhbWUgPT09IEkgfHwgdm9pZCAwID09PSBDLnRpbWVsaW5lLnN0YXJ0IHx8ICFvLmlzTnVtZXJpYyhDLnRpbWVsaW5lLnN0YXJ0KSA/ICIrPTAiID09PSBDLnRpbWVsaW5lLnN0YXJ0IHx8IHZvaWQgMCA9PT0gQy50aW1lbGluZS5zdGFydCA/ICIrPTAuMDUiIDogcGFyc2VJbnQoQy50aW1lbGluZS5zdGFydCwgMCkgLyAxZTMgOiAiKz0iICsgcGFyc2VJbnQoQy50aW1lbGluZS5zdGFydFJlbGF0aXZlLCAwKSAvIDFlMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLnRpbWVsaW5lLmFkZExhYmVsKEksIEspLCBoLnRpbWVsaW5lLmFkZChNLCBLKSwgaC50aW1lbGluZS5hZGRMYWJlbChJICsgIl9lbmQiLCAiKz0wLjAxIiksIE0uZXZlbnRDYWxsYmFjaygib25TdGFydCIsIHAsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFBFOiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCAidHJ1ZSIgPT0gaC5hbmltYXRpb25vbnNjcm9sbCB8fCAxID09IGguYW5pbWF0aW9ub25zY3JvbGwgPyAoTS5ldmVudENhbGxiYWNrKCJvblVwZGF0ZSIsIGcsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgTS5zbW9vdGhDaGlsZFRpbWluZyA9ICEwKSA6IE0uZXZlbnRDYWxsYmFjaygib25VcGRhdGUiLCBnLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU6IEksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIE0uZXZlbnRDYWxsYmFjaygib25Db21wbGV0ZSIsIHUsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTogSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFBFOiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBoLmZyYW1lcy5sb29wKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyICQgPSBwYXJzZUludChoLmZyYW1lcy5sb29wLnRpbWVsaW5lLnNwZWVkLCAwKSAvIDFlMywKICAgICAgICAgICAgICAgICAgICAgICAgZWUgPSBwYXJzZUludChoLmZyYW1lcy5sb29wLnRpbWVsaW5lLnN0YXJ0KSAvIDFlMyB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICB0ZSA9ICJ0cmlnZ2VyIiAhPT0gZS5tb2RlICYmICJmcmFtZV85OTkiICE9PSBlLmZyYW1lIHx8ICJmcmFtZV85OTkiICE9PSBlLmZyYW1lID8gLjIgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBpZSA9IGVlICsgdGU7CiAgICAgICAgICAgICAgICAgICAgaC5sb29wID0gewogICAgICAgICAgICAgICAgICAgICAgICByb290OiB0cEdTLmdzYXAudGltZWxpbmUoe30pLAogICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQ6IHRwR1MuZ3NhcC50aW1lbGluZSh7fSksCiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmU6IHRwR1MuZ3NhcC50aW1lbGluZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXQ6IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeW95bzogaC5mcmFtZXMubG9vcC50aW1lbGluZS55b3lvX21vdmUKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogdHBHUy5nc2FwLnRpbWVsaW5lKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdDogLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3lvOiBoLmZyYW1lcy5sb29wLnRpbWVsaW5lLnlveW9fcm90YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogdHBHUy5nc2FwLnRpbWVsaW5lKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdDogLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3lvOiBoLmZyYW1lcy5sb29wLnRpbWVsaW5lLnlveW9fc2NhbGUKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogdHBHUy5nc2FwLnRpbWVsaW5lKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdDogLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3lvOiBoLmZyYW1lcy5sb29wLnRpbWVsaW5lLnlveW9fZmlsdGVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB2YXIgYWUgPSBoLmZyYW1lcy5sb29wLmZyYW1lXzAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlID0gaC5mcmFtZXMubG9vcC5mcmFtZV85OTksCiAgICAgICAgICAgICAgICAgICAgICAgIG9lID0gImJsdXIoIiArIHBhcnNlSW50KGFlLmJsdXIgfHwgMCwgMCkgKyAicHgpIGdyYXlzY2FsZSgiICsgcGFyc2VJbnQoYWUuZ3JheXNjYWxlIHx8IDAsIDApICsgIiUpIGJyaWdodG5lc3MoIiArIHBhcnNlSW50KGFlLmJyaWdodG5lc3MgfHwgMTAwLCAwKSArICIlKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlID0gImJsdXIoIiArIChyZS5ibHVyIHx8IDApICsgInB4KSBncmF5c2NhbGUoIiArIChyZS5ncmF5c2NhbGUgfHwgMCkgKyAiJSkgYnJpZ2h0bmVzcygiICsgKHJlLmJyaWdodG5lc3MgfHwgMTAwKSArICIlKSI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGgubG9vcC5yb290LmFkZChoLmxvb3AucHJlc2V0LCAwKSwgaC5sb29wLnJvb3QuYWRkKGgubG9vcC5tb3ZlLCB0ZSksIGgubG9vcC5yb290LmFkZChoLmxvb3Aucm90YXRlLCB0ZSksIGgubG9vcC5yb290LmFkZChoLmxvb3Auc2NhbGUsIHRlKSwgaC5sb29wLnJvb3QuYWRkKGgubG9vcC5maWx0ZXIsIHRlKSwgImJsdXIoMHB4KSBncmF5c2NhbGUoMCUpIGJyaWdodG5lc3MoMTAwJSkiID09PSBvZSAmJiAiYmx1cigwcHgpIGdyYXlzY2FsZSgwJSkgYnJpZ2h0bmVzcygxMDAlKSIgPT09IHNlICYmIChvZSA9ICJub25lIiwgc2UgPSAibm9uZSIpLCByZS5vcmlnaW5YID0gYWUub3JpZ2luWCwgcmUub3JpZ2luWSA9IGFlLm9yaWdpblksIHJlLm9yaWdpblogPSBhZS5vcmlnaW5aLCB2b2lkIDAgPT09IGkgJiYgKGkgPSAiaXNvbWV0cmljIiA9PT0gb1tyXS5wZXJzcGVjdGl2ZVR5cGUgPyAwIDogImxvY2FsIiA9PT0gb1tyXS5wZXJzcGVjdGl2ZVR5cGUgJiYgdm9pZCAwICE9PSBOID8gdm9pZCAwICE9PSBOLnRyYW5zZm9ybVBlcnNwZWN0aXZlID8gTi50cmFuc2Zvcm1QZXJzcGVjdGl2ZSA6IGguZmZmICYmIHZvaWQgMCAhPT0gSC50cmFuc2Zyb21QZXJzcGVjdGl2ZSA/IEgudHJhbnNmcm9tUGVyc3BlY3RpdmUgOiBvW3JdLnBlcnNwZWN0aXZlIDogb1tyXS5wZXJzcGVjdGl2ZSksIGguZnJhbWVzLmxvb3AudGltZWxpbmUuY3VydmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZSA9IHBhcnNlSW50KGguZnJhbWVzLmxvb3AudGltZWxpbmUucmFkaXVzQW5nbGUsIDApIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZSA9IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogKGFlLnggLSBhZS54cikgKiBvW3JdLkNNLncsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6OiAoYWUueiAtIGFlLnpyKSAqIG9bcl0uQ00udwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogKGFlLnkgKyBhZS55cikgKiBvW3JdLkNNLncsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgejogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IChyZS54ICsgcmUueHIpICogb1tyXS5DTS53LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgejogKHJlLnogKyByZS56cikgKiBvW3JdLkNNLncKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IChyZS55IC0gcmUueXIpICogb1tyXS5DTS53LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInRocnUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnZpbmVzczogaC5mcmFtZXMubG9vcC50aW1lbGluZS5jdXJ2aW5lc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1JvdGF0ZTogaC5mcmFtZXMubG9vcC50aW1lbGluZS5hdXRvUm90YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjZSBpbiBkZSkgZGUuaGFzT3duUHJvcGVydHkoY2UpICYmIChsZS5wYXRoW2NlXSA9IGRlW25lXSwgbmUgPSArK25lID09IGRlLmxlbmd0aCA/IDAgOiBuZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICgidHJpZ2dlciIgIT09IGUubW9kZSAmJiAiZnJhbWVfOTk5IiAhPT0gZS5mcmFtZSB8fCAiZnJhbWVfOTk5IiAhPT0gZS5mcmFtZSkgJiYgaC5sb29wLnByZXNldC5mcm9tVG8oaC5scCwgdGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICItd2Via2l0LWZpbHRlciI6IG9lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBvZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgejogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBoLl9pbmNvbHVtbiB8fCBoLl9pbmdyb3VwID8gIjEwMCUiIDogdm9pZCAwID09PSBoLmVvdyA/IDAgOiBoLmVvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogaC5faW5jb2x1bW4gfHwgaC5faW5ncm91cCA/ICIxMDAlIiA6IHZvaWQgMCA9PT0gaC5lb2ggPyAwIDogaC5lb2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2V3WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZXdZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25YOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25ZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25aOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtUGVyc3BlY3RpdmU6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46IHJlLm9yaWdpblggKyAiICIgKyByZS5vcmlnaW5ZICsgIiAiICsgcmUub3JpZ2luWiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgICAgICAgICAgICAgfSwgbCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBsZS5wYXRoWzNdLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBsZS5wYXRoWzNdLnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6OiBsZS5wYXRoWzNdLnosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IGFlLnNjYWxlWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZXdYOiBhZS5za2V3WCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZXdZOiBhZS5za2V3WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWTogYWUuc2NhbGVZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25YOiBhZS5yb3RhdGlvblgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblk6IGFlLnJvdGF0aW9uWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uWjogYWUucm90YXRpb25aLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIi13ZWJraXQtZmlsdGVyIjogb2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IG9lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogInNpbmUuaW5PdXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogYWUub3BhY2l0eQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCksIGQobGUpICYmIGgubG9vcC5tb3ZlLnRvKGgubHAsIGguZnJhbWVzLmxvb3AudGltZWxpbmUueW95b19tb3ZlID8gJCAvIDIgOiAkLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25QYXRoOiBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IGguZnJhbWVzLmxvb3AudGltZWxpbmUuZWFzZQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSgidHJpZ2dlciIgIT09IGUubW9kZSAmJiAiZnJhbWVfOTk5IiAhPT0gZS5mcmFtZSB8fCAiZnJhbWVfOTk5IiAhPT0gZS5mcmFtZSkgJiYgaC5sb29wLnByZXNldC5mcm9tVG8oaC5scCwgdGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgIi13ZWJraXQtZmlsdGVyIjogb2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogb2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHo6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBoLl9pbmNvbHVtbiB8fCBoLl9pbmdyb3VwID8gIjEwMCUiIDogdm9pZCAwID09PSBoLmVvdyA/IDAgOiBoLmVvdywKICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiBoLl9pbmNvbHVtbiB8fCBoLl9pbmdyb3VwID8gIjEwMCUiIDogdm9pZCAwID09PSBoLmVvaCA/IDAgOiBoLmVvaCwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVYOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNrZXdYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBza2V3WTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25YOiAwLAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uWjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtUGVyc3BlY3RpdmU6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogcmUub3JpZ2luWCArICIgIiArIHJlLm9yaWdpblkgKyAiICIgKyByZS5vcmlnaW5aLAogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgICAgICAgICAgfSwgbCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGFlLnggKiBvW3JdLkNNLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGFlLnkgKiBvW3JdLkNNLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHo6IGFlLnogKiBvW3JdLkNNLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWDogYWUuc2NhbGVYLAogICAgICAgICAgICAgICAgICAgICAgICBza2V3WDogYWUuc2tld1gsCiAgICAgICAgICAgICAgICAgICAgICAgIHNrZXdZOiBhZS5za2V3WSwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiBhZS5zY2FsZVksCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uWDogYWUucm90YXRpb25YLAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblk6IGFlLnJvdGF0aW9uWSwKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25aOiBhZS5yb3RhdGlvblosCiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJzaW5lLm91dCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IGFlLm9wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICItd2Via2l0LWZpbHRlciI6IG9lLAogICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IG9lCiAgICAgICAgICAgICAgICAgICAgfSksIDApLCBoLmxvb3AubW92ZS50byhoLmxwLCBoLmZyYW1lcy5sb29wLnRpbWVsaW5lLnlveW9fbW92ZSA/ICQgLyAyIDogJCwgewogICAgICAgICAgICAgICAgICAgICAgICB4OiByZS54ICogb1tyXS5DTS53LAogICAgICAgICAgICAgICAgICAgICAgICB5OiByZS55ICogb1tyXS5DTS53LAogICAgICAgICAgICAgICAgICAgICAgICB6OiByZS56ICogb1tyXS5DTS53LAogICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBoLmZyYW1lcy5sb29wLnRpbWVsaW5lLmVhc2UKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBoLmxvb3Aucm90YXRlLnRvKGgubHAsIGguZnJhbWVzLmxvb3AudGltZWxpbmUueW95b19yb3RhdGUgPyAkIC8gMiA6ICQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25YOiByZS5yb3RhdGlvblgsCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uWTogcmUucm90YXRpb25ZLAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblo6IHJlLnJvdGF0aW9uWiwKICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogaC5mcmFtZXMubG9vcC50aW1lbGluZS5lYXNlCiAgICAgICAgICAgICAgICAgICAgfSksIGgubG9vcC5zY2FsZS50byhoLmxwLCBoLmZyYW1lcy5sb29wLnRpbWVsaW5lLnlveW9fc2NhbGUgPyAkIC8gMiA6ICQsIGwoewogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IHJlLnNjYWxlWCwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiByZS5zY2FsZVksCiAgICAgICAgICAgICAgICAgICAgICAgIHNrZXdYOiByZS5za2V3WCwKICAgICAgICAgICAgICAgICAgICAgICAgc2tld1k6IHJlLnNrZXdZLAogICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBoLmZyYW1lcy5sb29wLnRpbWVsaW5lLmVhc2UKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBlID0gewogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiByZS5vcGFjaXR5IHx8IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IGguZnJhbWVzLmxvb3AudGltZWxpbmUuZWFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIi13ZWJraXQtZmlsdGVyIjogc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogc2UKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGgubG9vcC5maWx0ZXIudG8oaC5scCwgaC5mcmFtZXMubG9vcC50aW1lbGluZS55b3lvX2ZpbHRlciA/ICQgLyAyIDogJCwgcGUpLCBoLnRpbWVsaW5lLmFkZChoLmxvb3Aucm9vdCwgaWUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBoLmZyYW1lcy5mcmFtZV9ob3ZlciAmJiAoInN0YXJ0IiA9PT0gZS5tb2RlIHx8IHZvaWQgMCA9PT0gaC5ob3ZlcmZyYW1lYWRkZWQpKSB7CiAgICAgICAgICAgICAgICAgICAgaC5ob3ZlcmZyYW1lYWRkZWQgPSAhMDsKICAgICAgICAgICAgICAgICAgICB2YXIgZ2UgPSBoLmZyYW1lcy5mcmFtZV9ob3Zlci50aW1lbGluZS5zcGVlZCAvIDFlMzsKICAgICAgICAgICAgICAgICAgICBnZSA9IDAgPT09IGdlID8gMWUtNSA6IGdlLCBoLmhvdmVybGlzdGVuZXIgfHwgKGguaG92ZXJsaXN0ZW5lciA9ICEwLCBvLmRvY3VtZW50Lm9uKCJtb3VzZWVudGVyIG1vdXNlbW92ZSIsICgiY29sdW1uIiA9PT0gaC50eXBlID8gIiMiICsgaC5jYmdbMF0uaWQgKyAiLCIgOiAiIikgKyAiIyIgKyBoLmNbMF0uaWQsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJtb3VzZW1vdmUiICE9PSBlLnR5cGUgfHwgITAgIT09IGguaWdub3JlbW91c2Vtb3ZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaC5hbmltYXRpb25vbnNjcm9sbCB8fCBoLnJlYWR5Rm9ySG92ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaC5lbGVtZW50SG92ZXJlZCA9ICEwLCBoLmhvdmVydGltZWxpbmUgfHwgKGguaG92ZXJ0aW1lbGluZSA9IHRwR1MuZ3NhcC50aW1lbGluZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXVzZWQ6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgMCA9PSBoLmhvdmVydGltZWxpbmUucHJvZ3Jlc3MoKSAmJiAodm9pZCAwID09PSBoLmxhc3RIb3ZlcmVkVGltZVN0YW1wIHx8IChuZXcgRGF0ZSkuZ2V0VGltZSgpIC0gaC5sYXN0SG92ZXJlZFRpbWVTdGFtcCA+IDE1MCkgJiYgKGguaWdub3JlbW91c2Vtb3ZlID0gITAsIGguaG92ZXJ0aW1lbGluZS50byhbaC5tLCBoLmNiZ21hc2tdLCBnZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGguZnJhbWVzLmZyYW1lX2hvdmVyLm1hc2sgPyAiaGlkZGVuIiA6ICJ2aXNpYmxlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKSwgImNvbHVtbiIgPT09IGgudHlwZSAmJiBoLmhvdmVydGltZWxpbmUudG8oaC5jYmcsIGdlLCBvLmNsb25lKG0oaC5mcmFtZXMuZnJhbWVfaG92ZXIsIGguY2JnLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZ0NvbDogaC5iZ2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJnOiBoLnN0eWxlUHJvcHMuYmFja2dyb3VuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIDApLCAidGV4dCIgIT09IGgudHlwZSAmJiAiYnV0dG9uIiAhPT0gaC50eXBlIHx8IHZvaWQgMCA9PT0gaC5zcGxpdFRleHQgfHwgITEgPT09IGguc3BsaXRUZXh0IHx8IGguaG92ZXJ0aW1lbGluZS50byhbaC5zcGxpdFRleHQubGluZXMsIGguc3BsaXRUZXh0LndvcmRzLCBoLnNwbGl0VGV4dC5jaGFyc10sIGdlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogaC5mcmFtZXMuZnJhbWVfaG92ZXIuY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBoLmZyYW1lcy5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uZWFzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKSwgImNvbHVtbiIgPT09IGgudHlwZSA/IGguaG92ZXJ0aW1lbGluZS50byhoLmMsIGdlLCBuKG8uY2xvbmUobShoLmZyYW1lcy5mcmFtZV9ob3ZlciwgaC5jLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZ0NvbDogaC5iZ2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJnOiBoLnN0eWxlUHJvcHMuYmFja2dyb3VuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpLCAwKSA6IGguaG92ZXJ0aW1lbGluZS50byhoLmMsIGdlLCBvLmNsb25lKG0oaC5mcmFtZXMuZnJhbWVfaG92ZXIsIGguYywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdDb2w6IGguYmdjb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZzogaC5zdHlsZVByb3BzLmJhY2tncm91bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAwKSwgInN2ZyIgPT09IGgudHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5zdmdIVGVtcCA9IG8uY2xvbmUoaC5zdmdIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBBcnJheS5pc0FycmF5KGguc3ZnSFRlbXAuZmlsbCkgPyBoLnN2Z0hUZW1wLmZpbGxbb1tyXS5sZXZlbF0gOiBoLnN2Z0hUZW1wLmZpbGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguc3ZnSFRlbXAuZmlsbCA9IHQsIGguaG92ZXJ0aW1lbGluZS50byhoLnN2ZywgZ2UsIGguc3ZnSFRlbXAsIDApLCBoLmhvdmVydGltZWxpbmUudG8oaC5zdmdQYXRoLCBnZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmhvdmVydGltZWxpbmUucGxheSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmxhc3RIb3ZlcmVkVGltZVN0YW1wID0gKG5ldyBEYXRlKS5nZXRUaW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCBvLmRvY3VtZW50Lm9uKCJtb3VzZWxlYXZlIiwgKCJjb2x1bW4iID09PSBoLnR5cGUgPyAiIyIgKyBoLmNiZ1swXS5pZCArICIsIiA6ICIiKSArICIjIiArIGguY1swXS5pZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGguZWxlbWVudEhvdmVyZWQgPSAhMSwgKGguYW5pbWF0aW9ub25zY3JvbGwgfHwgaC5yZWFkeUZvckhvdmVyKSAmJiB2b2lkIDAgIT09IGguaG92ZXJ0aW1lbGluZSAmJiAoaC5ob3ZlcnRpbWVsaW5lLnJldmVyc2UoKSwgaC5ob3ZlcnRpbWVsaW5lLmV2ZW50Q2FsbGJhY2soIm9uUmV2ZXJzZUNvbXBsZXRlIiwgby5ob3ZlclJldmVyc2VEb25lLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOiBhCiAgICAgICAgICAgICAgICAgICAgICAgIH1dKSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChUIHx8IChoLmxhc3RSZXF1ZXN0ZWRNYWluRnJhbWUgPSAic3RhcnQiID09PSBlLm1vZGUgPyAiZnJhbWVfMSIgOiAiY29udGludWUiID09PSBlLm1vZGUgPyB2b2lkIDAgPT09IGUuZnJhbWUgPyBoLmN1cnJlbnRmcmFtZSA6IGUuZnJhbWUgOiBoLmxhc3RSZXF1ZXN0ZWRNYWluRnJhbWUpLCB2b2lkIDAgIT09IGUudG90aW1lID8gaC50U1RBUlQgPSBlLnRvdGltZSA6IHZvaWQgMCAhPT0gdiAmJiB2b2lkIDAgPT09IGUuZnJhbWUgPyBoLnRTVEFSVCA9IHYgOiB2b2lkIDAgIT09IGUuZnJhbWUgPyBoLnRTVEFSVCA9IGUuZnJhbWUgOiBoLnRTVEFSVCA9IDAsIDAgPT09IGgudFNUQVJUICYmIHZvaWQgMCA9PT0gaC5zdGFydGVkQW5pbU9uY2UgJiYgdm9pZCAwID09PSBoLmxlZnRzdGFnZSAmJiB2b2lkIDAgPT09IGguc3RhcnRlZEFuaW1PbmNlICYmICEwID09PSBoLmhpZGVvbmZpcnN0c3RhcnQgJiYgInByZXNldCIgPT09IGUubW9kZSAmJiAob1tyXS5fTFthWzBdLmlkXS5wVmlzUmVxdWVzdCA9IDAsIGguaGlkZW9uZmlyc3RzdGFydCA9ICExKSwgImZyYW1lXzk5OSIgIT09IGgudFNUQVJUICYmICJmcmFtZV85OTkiICE9PSBoLnRyaWdnZXJlZEZyYW1lIHx8ICFoLmxlZnRzdGFnZSAmJiB2b2lkIDAgIT09IGguc3RhcnRlZEFuaW1PbmNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ0cnVlIiAhPSBoLmFuaW1hdGlvbm9uc2Nyb2xsICYmIDEgIT0gaC5hbmltYXRpb25vbnNjcm9sbCA/IGgudGltZWxpbmUucGxheShoLnRTVEFSVCkgOiBoLnRpbWVsaW5lLnRpbWUoaC50U1RBUlQpLCBqUXVlcnkuaW5BcnJheShoLnR5cGUsIFsiZ3JvdXAiLCAicm93IiwgImNvbHVtbiJdKSA+PSAwICYmIHZvaWQgMCAhPT0gZS5mcmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBoLmNoaWxkcmVuSlMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBWIGluIGguY2hpbGRyZW5KUyA9IHt9LCBvW3JdLl9MKSB2b2lkIDAgIT09IG9bcl0uX0xbVl0uX2xpZyAmJiB2b2lkIDAgIT09IG9bcl0uX0xbVl0uX2xpZ1swXSAmJiBvW3JdLl9MW1ZdLl9saWdbMF0uaWQgPT09IGFbMF0uaWQgJiYgb1tyXS5fTFtWXS5fbGlnWzBdLmlkICE9PSBvW3JdLl9MW1ZdLmNbMF0uaWQgJiYgKGguY2hpbGRyZW5KU1tvW3JdLl9MW1ZdLmNbMF0uaWRdID0gb1tyXS5fTFtWXS5jKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5mcmFtZSA9ICIwIiA9PSBlLmZyYW1lID8gImZyYW1lXzAiIDogZS5mcmFtZSwgZS5mcmFtZSA9ICIxIiA9PSBlLmZyYW1lID8gImZyYW1lXzEiIDogZS5mcmFtZSwgZS5mcmFtZSA9ICI5OTkiID09IGUuZnJhbWUgPyAiZnJhbWVfOTk5IiA6IGUuZnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ZSA9IHZvaWQgMCA9PT0gZS50b3RpbWUgPyB2b2lkIDAgIT09IGguZnJhbWVzW2UuZnJhbWVdLnRpbWVsaW5lLnN0YXJ0QWJzb2x1dGUgPyBwYXJzZUludChoLmZyYW1lc1tlLmZyYW1lXS50aW1lbGluZS5zdGFydEFic29sdXRlLCAwKSAvIDFlMyA6IHZvaWQgMCAhPT0gaC5mcmFtZXNbZS5mcmFtZV0udGltZWxpbmUuc3RhcnQgPyBvLmlzTnVtZXJpYyhoLmZyYW1lc1tlLmZyYW1lXS50aW1lbGluZS5zdGFydCkgPyBwYXJzZUludChoLmZyYW1lc1tlLmZyYW1lXS50aW1lbGluZS5zdGFydCwgMCkgLyAxZTMgOiAwIDogLjAwMSA6IGUudG90aW1lOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgPT09IGUudXBkYXRlQ2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBWIGluIGguY2hpbGRyZW5KUykgaC5jaGlsZHJlbkpTLmhhc093blByb3BlcnR5KFYpICYmIG8ucmVuZGVyTGF5ZXJBbmltYXRpb24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiBoLmNoaWxkcmVuSlNbVl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFzdGZvcndhcmQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJjb250aW51ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW46ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGltZTogdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBWIGluIGguY2hpbGRyZW5KUykgaC5jaGlsZHJlbkpTLmhhc093blByb3BlcnR5KFYpICYmIG9bcl0uX0xbVl0ucGF1c2VkVHJ1ZVBhcnJlbnQgJiYgKG8ucmVuZGVyTGF5ZXJBbmltYXRpb24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOiBoLmNoaWxkcmVuSlNbVl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFzdGZvcndhcmQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICJjb250aW51ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW46ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGltZTogdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvW3JdLl9MW1ZdLnBhdXNlZFRydWVQYXJyZW50ID0gITEpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBvLmNsb25lKGUpOwogICAgICAgICAgICByZXR1cm4gZGVsZXRlIHQuYmFja2dyb3VuZENvbG9yLCBkZWxldGUgdC5iYWNrZ3JvdW5kLCBkZWxldGUgdC5iYWNrZ3JvdW5kSW1hZ2UsIGRlbGV0ZSB0LmJvcmRlclNpemUsIGRlbGV0ZSB0LmJvcmRlclN0eWxlLCBkZWxldGUgdFsiYmFja2Ryb3AtZmlsdGVyIl0sIHQKICAgICAgICB9LAogICAgICAgIGQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGUgJiYgdm9pZCAwICE9PSBlLnBhdGggJiYgQXJyYXkuaXNBcnJheShlLnBhdGgpKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IDAsCiAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBhIGluIGUucGF0aCkgIWUucGF0aC5oYXNPd25Qcm9wZXJ0eShhKSB8fCB0ID4gMCB8fCBpID4gMCB8fCAodCArPSBlLnBhdGhbYV0ueCwgaSArPSBlLnBhdGhbYV0ueSk7CiAgICAgICAgICAgICAgICByZXR1cm4gMCAhPSB0IHx8IDAgIT0gaQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlLnNrZXdYICYmIGRlbGV0ZSBlLnNrZXdYLCB2b2lkIDAgPT09IGUuc2tld1kgJiYgZGVsZXRlIGUuc2tld1ksIGUKICAgICAgICB9LAogICAgICAgIGMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUuZnJvbSA9ICJlZGdlIiA9PT0gZS5mcm9tID8gImVkZ2VzIiA6IGUuZnJvbTsKICAgICAgICAgICAgdmFyIHQgPSB0cEdTLmdzYXAudXRpbHMuZGlzdHJpYnV0ZShlKTsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGksIGEsIHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0KGksIGEsIHIpICsgKGkgPD0gci5sZW5ndGggLyAyID8gMCA6IGUub2Zmc2V0IHx8IDApCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHAgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIG9bZS5pZF0uQlVHX3NhZmFyaV9jbGlwUGF0aCAmJiBlLkxbMF0uY2xhc3NMaXN0LnJlbW92ZSgicnMtcGVsb2NrIiksIChvW2UuaWRdLl9MW2UuTFswXS5pZF0uX2luZ3JvdXAgfHwgb1tlLmlkXS5fTFtlLkxbMF0uaWRdLl9pbmNvbHVtbiB8fCBvW2UuaWRdLl9MW2UuTFswXS5pZF0uX2lucm93KSAmJiB2b2lkIDAgIT09IG9bZS5pZF0uX0xbb1tlLmlkXS5fTFtlLkxbMF0uaWRdLl9saWdpZF0gJiYgdm9pZCAwICE9PSBvW2UuaWRdLl9MW29bZS5pZF0uX0xbZS5MWzBdLmlkXS5fbGlnaWRdLnRpbWVsaW5lICYmIChvW2UuaWRdLl9MW29bZS5pZF0uX0xbZS5MWzBdLmlkXS5fbGlnaWRdLnRpbWVsaW5lLmlzQWN0aXZlKCkgfHwgdm9pZCAwID09PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0gfHwgdm9pZCAwID09PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0uZnJhbWVzW29bZS5pZF0uX0xbZS5MWzBdLmlkXS50aW1lbGluZS5jdXJyZW50TGFiZWwoKV0gfHwgKG51bGwgPT0gb1tlLmlkXS5fTFtvW2UuaWRdLl9MW2UuTFswXS5pZF0uX2xpZ2lkXS50aW1lem9uZSB8fCBvW2UuaWRdLl9MW29bZS5pZF0uX0xbZS5MWzBdLmlkXS5fbGlnaWRdLnRpbWV6b25lLnRvIDw9IHBhcnNlSW50KG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5mcmFtZXNbb1tlLmlkXS5fTFtlLkxbMF0uaWRdLnRpbWVsaW5lLmN1cnJlbnRMYWJlbCgpXS50aW1lbGluZS5zdGFydCwgMCkpICYmICEwICE9PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0uYW5pbU9uU2Nyb2xsRm9yY2VEaXNhYmxlICYmIChvW2UuaWRdLl9MW2UuTFswXS5pZF0ucGF1c2VkVHJ1ZVBhcnJlbnQgPSAhMCwgb1tlLmlkXS5fTFtlLkxbMF0uaWRdLnRpbWVsaW5lLnBhdXNlKCkpKTsKICAgICAgICAgICAgdmFyIHQgPSBvW2UuaWRdLl9MW2UuTFswXS5pZF0sCiAgICAgICAgICAgICAgICBpID0gdC5ob3ZlcnRpbWVsaW5lOwogICAgICAgICAgICBpICYmIGkudGltZSgpID4gMCAmJiAoaS5wYXVzZSgpLCBpLnRpbWUoMCksIGkua2lsbCgpLCBkZWxldGUgdC5ob3ZlcnRpbWVsaW5lKSwgZGVsZXRlIG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5jaGlsZHJlbkF0U3RhcnROb3RWaXNpYmxlLCBvW2UuaWRdLl9MW2UuTFswXS5pZF0ucFZpc1JlcXVlc3QgPSAxOwogICAgICAgICAgICB2YXIgYSA9IHsKICAgICAgICAgICAgICAgIGxheWVyOiBlLkwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmlnbm9yZW1vdXNlbW92ZSA9ICExLCBvW2UuaWRdLl9MW2UuTFswXS5pZF0ubGVmdHN0YWdlID0gITEsIG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5yZWFkeUZvckhvdmVyID0gITEsIHZvaWQgMCAhPT0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmxheWVyTG9vcCAmJiBvW2UuaWRdLl9MW2UuTFswXS5pZF0ubGF5ZXJMb29wLmZyb20gPT09IGUuZnJhbWUgJiYgb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmxheWVyTG9vcC5jb3VudCsrLCAiZnJhbWVfMSIgPT09IGUuZnJhbWUgJiYgIlNhZmFyaSIgPT09IHdpbmRvdy5SU0Jyb3dzZXIgJiYgdm9pZCAwID09PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0uc2FmYXJpUmVuZGVySXNzdWUgJiYgKHRwR1MuZ3NhcC5zZXQoW29bZS5pZF0uX0xbZS5MWzBdLmlkXS5jXSwgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICB9KSwgb1tlLmlkXS5fTFtlLkxbMF0uaWRdLnNhZmFyaVJlbmRlcklzc3VlID0gITApLCAiZnJhbWVfOTk5IiAhPT0gZS5mcmFtZSAmJiAob1tlLmlkXS5fTFtlLkxbMF0uaWRdLnN0YXJ0ZWRBbmltT25jZSA9ICEwLCBvW2UuaWRdLl9MW2UuTFswXS5pZF0ucFBldmVudHNSZXF1ZXN0ID0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLm5vUGV2ZW50cyA/ICJub25lIiA6ICJhdXRvIiksIGEuZXZlbnR0eXBlID0gImZyYW1lXzAiID09PSBlLmZyYW1lIHx8ICJmcmFtZV8xIiA9PT0gZS5mcmFtZSA/ICJlbnRlcnN0YWdlIiA6ICJmcmFtZV85OTkiID09PSBlLmZyYW1lID8gImxlYXZlc3RhZ2UiIDogImZyYW1lc3RhcnRlZCIsIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBvW2UuaWRdLl9MW2UuTFswXS5pZF0uX2luZ3JvdXAgJiYgITAgIT09IG9bZS5pZF0uX0xbb1tlLmlkXS5fTFtlLkxbMF0uaWRdLl9saWdbMF0uaWRdLmZyYW1lcy5mcmFtZV8xLnRpbWVsaW5lLndhaXRvbmNhbGwgJiYgKG9bZS5pZF0uX0xbb1tlLmlkXS5fTFtlLkxbMF0uaWRdLl9saWdbMF0uaWRdLnBWaXNSZXF1ZXN0ID0gMSksIG8ucmVxdWVzdExheWVyVXBkYXRlcyhlLmlkLCBhLmV2ZW50dHlwZSwgZS5MWzBdLmlkLCB2b2lkIDAgIT09IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5mcmFtZXNbZS5mcmFtZV0gJiYgdm9pZCAwICE9PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0uZnJhbWVzW2UuZnJhbWVdLnRpbWVsaW5lICYmIDAgPT0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmZyYW1lc1tlLmZyYW1lXS50aW1lbGluZS51c2VQZXJzcGVjdGl2ZSA/IGUudFBFIDogImlnbm9yZSIpCiAgICAgICAgICAgIH0pLCBhLmlkID0gZS5pZCwgYS5sYXllcmlkID0gZS5MWzBdLmlkLCBhLmxheWVydHlwZSA9IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS50eXBlLCBhLmZyYW1lX2luZGV4ID0gZS5mcmFtZSwgYS5sYXllcnNldHRpbmdzID0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLCBvW2UuaWRdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5sYXllcmFjdGlvbiIsIFthXSksICJlbnRlcnN0YWdlIiA9PT0gYS5ldmVudHR5cGUgJiYgby50b2dnbGVTdGF0ZShvW2UuaWRdLl9MW2UuTFswXS5pZF0ubGF5ZXJ0b2dnbGVkYnkpLCAiZnJhbWVfMSIgPT09IGUuZnJhbWUgJiYgby5hbmltY29tcGxldGVkKGUuTCwgZS5pZCkKICAgICAgICB9LAogICAgICAgIGcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICJmcmFtZV85OTkiID09PSBlLmZyYW1lICYmIChvW2UuaWRdLl9MW2UuTFswXS5pZF0ucFZpc1JlcXVlc3QgPSAxLCBvW2UuaWRdLl9MW2UuTFswXS5pZF0ucFBldmVudHNSZXF1ZXN0ID0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLm5vUGV2ZW50cyA/ICJub25lIiA6ICJhdXRvIiwgb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmxlZnRzdGFnZSA9ICExLCB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgby5yZXF1ZXN0TGF5ZXJVcGRhdGVzKGUuaWQsICJ1cGRhdGUiLCBlLkxbMF0uaWQpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgdSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSAhMDsKICAgICAgICAgICAgaWYgKCJjb2x1bW4iID09PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0udHlwZSB8fCAicm93IiA9PT0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLnR5cGUgfHwgImdyb3VwIiA9PT0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLnR5cGUpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLnRpbWVsaW5lLmN1cnJlbnRMYWJlbCgpLAogICAgICAgICAgICAgICAgICAgIGEgPSBqUXVlcnkuaW5BcnJheShpLCBvW2UuaWRdLl9MW2UuTFswXS5pZF0uZm9yZCk7CiAgICAgICAgICAgICAgICBhKyssIGEgPSBvW2UuaWRdLl9MW2UuTFswXS5pZF0uZm9yZC5sZW5ndGggPiBhID8gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmZvcmRbYV0gOiBpLCB2b2lkIDAgIT09IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5mcmFtZXNbYV0gJiYgdm9pZCAwICE9PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0uZnJhbWVzW2ldICYmIChvW2UuaWRdLl9MW2UuTFswXS5pZF0udGltZXpvbmUgPSB7CiAgICAgICAgICAgICAgICAgICAgZnJvbTogcGFyc2VJbnQob1tlLmlkXS5fTFtlLkxbMF0uaWRdLmZyYW1lc1tpXS50aW1lbGluZS5zdGFydEFic29sdXRlLCAwKSwKICAgICAgICAgICAgICAgICAgICB0bzogcGFyc2VJbnQob1tlLmlkXS5fTFtlLkxbMF0uaWRdLmZyYW1lc1thXS50aW1lbGluZS5zdGFydEFic29sdXRlLCAwKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoImZyYW1lXzk5OSIgIT09IGUuZnJhbWUgJiYgb1tlLmlkXS5pc0VkZ2UgJiYgInNoYXBlIiA9PT0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLnR5cGUpIHsKICAgICAgICAgICAgICAgIHZhciByID0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmNbMF0uc3R5bGUub3BhY2l0eTsKICAgICAgICAgICAgICAgIG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5jWzBdLnN0eWxlLm9wYWNpdHkgPSByIC0gMWUtNCwgdHBHUy5nc2FwLnNldChvW2UuaWRdLl9MW2UuTFswXS5pZF0uY1swXSwgewogICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IHIgLSAuMDAxLAogICAgICAgICAgICAgICAgICAgIGRlbGF5OiAuMDUKICAgICAgICAgICAgICAgIH0pLCB0cEdTLmdzYXAuc2V0KG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5jWzBdLCB7CiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogciwKICAgICAgICAgICAgICAgICAgICBkZWxheTogLjEKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHMgPSB7fTsKICAgICAgICAgICAgcy5sYXllciA9IGUuTCwgcy5ldmVudHR5cGUgPSAiZnJhbWVfMCIgPT09IGUuZnJhbWUgfHwgImZyYW1lXzEiID09PSBlLmZyYW1lID8gImVudGVyZWRzdGFnZSIgOiAiZnJhbWVfOTk5IiA9PT0gZS5mcmFtZSA/ICJsZWZ0c3RhZ2UiIDogImZyYW1lZW5kZWQiLCBvW2UuaWRdLl9MW2UuTFswXS5pZF0ucmVhZHlGb3JIb3ZlciA9ICEwLCBzLmxheWVydHlwZSA9IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS50eXBlLCBzLmZyYW1lX2luZGV4ID0gZS5mcmFtZSwgcy5sYXllcnNldHRpbmdzID0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLCBvW2UuaWRdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5sYXllcmFjdGlvbiIsIFtzXSksICJmcmFtZV85OTkiID09PSBlLmZyYW1lICYmICJsZWZ0c3RhZ2UiID09PSBzLmV2ZW50dHlwZSA/IChvW2UuaWRdLl9MW2UuTFswXS5pZF0ubGVmdHN0YWdlID0gITAsIG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5wVmlzUmVxdWVzdCA9IDAsIG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5wUGV2ZW50c1JlcXVlc3QgPSAibm9uZSIsIHQgPSAhMSwgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG8ucmVxdWVzdExheWVyVXBkYXRlcyhlLmlkLCAibGVmdHN0YWdlIiwgZS5MWzBdLmlkKQogICAgICAgICAgICB9KSkgOiAoZS5MWzBdLmlkLCB2b2lkIDAgIT09IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5mcmFtZXNbZS5mcmFtZV0gJiYgdm9pZCAwICE9PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0uZnJhbWVzW2UuZnJhbWVdLnRpbWVsaW5lICYmIDAgPT0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmZyYW1lc1tlLmZyYW1lXS50aW1lbGluZS51c2VQZXJzcGVjdGl2ZSAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgby5yZXF1ZXN0TGF5ZXJVcGRhdGVzKGUuaWQsICJmcmFtZWVuZGVkIiwgZS5MWzBdLmlkLCBlLnRQRSkKICAgICAgICAgICAgfSkpLCAibGVmdHN0YWdlIiA9PT0gcy5ldmVudHR5cGUgJiYgdm9pZCAwICE9PSBvW2UuaWRdLnZpZGVvcyAmJiB2b2lkIDAgIT09IG9bZS5pZF0udmlkZW9zW2UuTFswXS5pZF0gJiYgby5zdG9wVmlkZW8gJiYgby5zdG9wVmlkZW8oZS5MLCBlLmlkKSwgImNvbHVtbiIgPT09IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS50eXBlICYmIHRwR1MuZ3NhcC50byhvW2UuaWRdLl9MW2UuTFswXS5pZF0uY2JnLCAuMDEsIHsKICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICJ2aXNpYmxlIgogICAgICAgICAgICB9KSwgImxlZnRzdGFnZSIgPT09IHMuZXZlbnR0eXBlICYmIChvLnVuVG9nZ2xlU3RhdGUoZS5sYXllcnRvZ2dsZWRieSksICJ2aWRlbyIgPT09IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS50eXBlICYmIG8ucmVzZXRWaWRlbyAmJiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgby5yZXNldFZpZGVvKGUuTCwgZS5pZCkKICAgICAgICAgICAgfSwgMTAwKSksIG9bZS5pZF0uQlVHX3NhZmFyaV9jbGlwUGF0aCAmJiAhdCAmJiBlLkxbMF0uY2xhc3NMaXN0LmFkZCgicnMtcGVsb2NrIiksIHZvaWQgMCAhPT0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmxheWVyTG9vcCAmJiBvW2UuaWRdLl9MW2UuTFswXS5pZF0ubGF5ZXJMb29wLnRvID09PSBlLmZyYW1lICYmICgtMSA9PSBvW2UuaWRdLl9MW2UuTFswXS5pZF0ubGF5ZXJMb29wLnJlcGVhdCB8fCBvW2UuaWRdLl9MW2UuTFswXS5pZF0ubGF5ZXJMb29wLnJlcGVhdCA+IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5sYXllckxvb3AuY291bnQpICYmIG8ucmVuZGVyTGF5ZXJBbmltYXRpb24oewogICAgICAgICAgICAgICAgbGF5ZXI6IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5jLAogICAgICAgICAgICAgICAgZnJhbWU6IG9bZS5pZF0uX0xbZS5MWzBdLmlkXS5sYXllckxvb3AuZnJvbSwKICAgICAgICAgICAgICAgIHVwZGF0ZUNoaWxkcmVuOiBvW2UuaWRdLl9MW2UuTFswXS5pZF0ubGF5ZXJMb29wLmNoaWxkcmVuLAogICAgICAgICAgICAgICAgbW9kZTogImNvbnRpbnVlIiwKICAgICAgICAgICAgICAgIGZhc3Rmb3J3YXJkOiAhMCA9PT0gb1tlLmlkXS5fTFtlLkxbMF0uaWRdLmxheWVyTG9vcC5rZWVwLAogICAgICAgICAgICAgICAgaWQ6IGUuaWQKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUpIHJldHVybiAiIjsKICAgICAgICAgICAgdmFyIHQgPSAiIjsKICAgICAgICAgICAgcmV0dXJuIG8uaXNDaHJvbWU4ODg5ICYmIDAgPT09IGUuYmx1ciAmJiAoZS5ibHVyID0gLjA1KSwgdCA9IHZvaWQgMCAhPT0gZS5ibHVyID8gImJsdXIoIiArIChlLmJsdXIgfHwgMCkgKyAicHgpIiA6ICIiLCB0ICs9IHZvaWQgMCAhPT0gZS5ncmF5c2NhbGUgPyAodC5sZW5ndGggPiAwID8gIiAiIDogIiIpICsgImdyYXlzY2FsZSgiICsgKGUuZ3JheXNjYWxlIHx8IDApICsgIiUpIiA6ICIiLCAiIiA9PT0gKHQgKz0gdm9pZCAwICE9PSBlLmJyaWdodG5lc3MgPyAodC5sZW5ndGggPiAwID8gIiAiIDogIiIpICsgImJyaWdodG5lc3MoIiArIChlLmJyaWdodG5lc3MgfHwgMTAwKSArICIlKSIgOiAiIikgPyAibm9uZSIgOiB0CiAgICAgICAgfSwKICAgICAgICBtID0gZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICB2YXIgYSwgciA9IG8uY2xvbmUoZS50cmFuc2Zvcm0pOwogICAgICAgICAgICBpZiAoKHIub3JpZ2luWCB8fCByLm9yaWdpblkgfHwgci5vcmlnaW5aKSAmJiAoci50cmFuc2Zvcm1PcmlnaW4gPSAodm9pZCAwID09PSByLm9yaWdpblggPyAiNTAlIiA6IHIub3JpZ2luWCkgKyAiICIgKyAodm9pZCAwID09PSByLm9yaWdpblkgPyAiNTAlIiA6IHIub3JpZ2luWSkgKyAiICIgKyAodm9pZCAwID09PSByLm9yaWdpblogPyAiNTAlIiA6IHIub3JpZ2luWiksIGRlbGV0ZSByLm9yaWdpblgsIGRlbGV0ZSByLm9yaWdpblksIGRlbGV0ZSByLm9yaWdpblopLCB2b2lkIDAgIT09IGUgJiYgdm9pZCAwICE9PSBlLmZpbHRlciAmJiAoci5maWx0ZXIgPSBoKGUuZmlsdGVyKSwgclsiLXdlYmtpdC1maWx0ZXIiXSA9IHIuZmlsdGVyKSwgci5jb2xvciA9IHZvaWQgMCA9PT0gci5jb2xvciA/ICJyZ2JhKDI1NSwyNTUsMjU1LDEpIiA6IHIuY29sb3IsIHIuZm9yY2UzRCA9ICJhdXRvIiwgdm9pZCAwICE9PSByLmJvcmRlclJhZGl1cyAmJiAoKGEgPSByLmJvcmRlclJhZGl1cy5zcGxpdCgiICIpKS5sZW5ndGgsIHIuYm9yZGVyVG9wTGVmdFJhZGl1cyA9IGFbMF0sIHIuYm9yZGVyVG9wUmlnaHRSYWRpdXMgPSBhWzFdLCByLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzID0gYVsyXSwgci5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzID0gYVszXSwgZGVsZXRlIHIuYm9yZGVyUmFkaXVzKSwgdm9pZCAwICE9PSByLmJvcmRlcldpZHRoICYmICgoYSA9IHIuYm9yZGVyV2lkdGguc3BsaXQoIiAiKSkubGVuZ3RoLCByLmJvcmRlclRvcFdpZHRoID0gYVswXSwgci5ib3JkZXJSaWdodFdpZHRoID0gYVsxXSwgci5ib3JkZXJCb3R0b21XaWR0aCA9IGFbMl0sIHIuYm9yZGVyTGVmdFdpZHRoID0gYVszXSwgZGVsZXRlIHIuYm9yZGVyV2lkdGgpLCB2b2lkIDAgPT09IGkuYmcgfHwgLTEgPT09IGkuYmcuaW5kZXhPZigidXJsIikpIHsKICAgICAgICAgICAgICAgIHZhciBzID0gLTEgIT09IGkuYmdDb2wuc2VhcmNoKCJncmFkaWVudCIpLAogICAgICAgICAgICAgICAgICAgIG4gPSByLmJhY2tncm91bmRJbWFnZSAmJiAic3RyaW5nIiA9PSB0eXBlb2Ygci5iYWNrZ3JvdW5kSW1hZ2UgJiYgLTEgIT09IHIuYmFja2dyb3VuZEltYWdlLnNlYXJjaCgiZ3JhZGllbnQiKTsKICAgICAgICAgICAgICAgIG4gJiYgcyA/ICgxODAgIT09IGYoaS5iZ0NvbCkgJiYgMTgwID09IGYoci5iYWNrZ3JvdW5kSW1hZ2UpICYmIChyLmJhY2tncm91bmRJbWFnZSA9IHYoci5iYWNrZ3JvdW5kSW1hZ2UsIDE4MCkpLCByLmJhY2tncm91bmRJbWFnZSA9IHRwR1MuZ2V0U1NHQ29sb3JzKGkuYmdDb2wsIHIuYmFja2dyb3VuZEltYWdlLCB2b2lkIDAgPT09IHIuZ3MgPyAiZmFkaW5nIiA6IHIuZ3MpLnRvKSA6IG4gJiYgIXMgPyByLmJhY2tncm91bmRJbWFnZSA9IHRwR1MuZ2V0U1NHQ29sb3JzKGkuYmdDb2wsIHIuYmFja2dyb3VuZEltYWdlLCB2b2lkIDAgPT09IHIuZ3MgPyAiZmFkaW5nIiA6IHIuZ3MpLnRvIDogIW4gJiYgcyAmJiAoci5iYWNrZ3JvdW5kSW1hZ2UgPSB0cEdTLmdldFNTR0NvbG9ycyhpLmJnQ29sLCByLmJhY2tncm91bmRDb2xvciwgdm9pZCAwID09PSByLmdzID8gImZhZGluZyIgOiByLmdzKS50bykKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZGVsZXRlIHIuZ3MsIHIKICAgICAgICB9LAogICAgICAgIHYgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBpID0gKGUgPSBlLnNwbGl0KCIoIikpWzBdOwogICAgICAgICAgICByZXR1cm4gZS5zaGlmdCgpLCBpICsgIigiICsgdCArICJkZWcsICIgKyBlLmpvaW4oIigiKQogICAgICAgIH0sCiAgICAgICAgZiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKC0xICE9PSBlLnNlYXJjaCgiZGVnLCIpKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuc3BsaXQoImRlZywiKVswXTsKICAgICAgICAgICAgICAgIGlmICgtMSAhPT0gdC5zZWFyY2goL1woLykpIHJldHVybiBwYXJzZUludCh0LnNwbGl0KCIoIilbMV0sIDEwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAxODAKICAgICAgICB9LAogICAgICAgIHkgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGUgJiYgZS5pbmRleE9mKCJvYzp0IikgPj0gMCkgcmV0dXJuIHt9OwogICAgICAgICAgICBlID0gdm9pZCAwID09PSBlID8gIiIgOiBlLnNwbGl0KCI7Iik7CiAgICAgICAgICAgIHZhciBpID0gewogICAgICAgICAgICAgICAgZmlsbDogby5yZXZUb1Jlc3AoIiNmZmZmZmYiLCBvW3RdLnJsZSksCiAgICAgICAgICAgICAgICBzdHJva2U6ICJ0cmFuc3BhcmVudCIsCiAgICAgICAgICAgICAgICAic3Ryb2tlLXdpZHRoIjogIjBweCIsCiAgICAgICAgICAgICAgICAic3Ryb2tlLWRhc2hhcnJheSI6ICIwIiwKICAgICAgICAgICAgICAgICJzdHJva2UtZGFzaG9mZnNldCI6ICIwIgogICAgICAgICAgICB9OwogICAgICAgICAgICBmb3IgKHZhciBhIGluIGUpCiAgICAgICAgICAgICAgICBpZiAoZS5oYXNPd25Qcm9wZXJ0eShhKSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gZVthXS5zcGxpdCgiOiIpOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoclswXSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZmlsbCA9IG8ucmV2VG9SZXNwKHJbMV0sIG9bdF0ucmxlLCB2b2lkIDAsICJ8fCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInN3IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbInN0cm9rZS13aWR0aCJdID0gclsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzYyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnN0cm9rZSA9IHJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic28iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaVsic3Ryb2tlLWRhc2hvZmZzZXQiXSA9IHJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2EiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaVsic3Ryb2tlLWRhc2hhcnJheSJdID0gclsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzYWxsIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuc3ZnQWxsID0gclsxXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9LAogICAgICAgIGIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiYyIgPT09IGUgPyAiY2VudGVyIiA6ICJsIiA9PT0gZSA/ICJsZWZ0IiA6ICJyIiA9PT0gZSA/ICJyaWdodCIgOiBlCiAgICAgICAgfSwKICAgICAgICB3ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IG9bZS5pZF0uX0xbZS5sYXllclswXS5pZF0sCiAgICAgICAgICAgICAgICBpID0gITE7CiAgICAgICAgICAgIGlmICh0LnNwbGl0VGV4dCAmJiAhMSAhPT0gdC5zcGxpdFRleHQgJiYgdC5zcGxpdFRleHQucmV2ZXJ0KCksICJ0ZXh0IiA9PT0gdC50eXBlIHx8ICJidXR0b24iID09PSB0LnR5cGUpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gdC5mcmFtZXMpCiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdC5mcmFtZXNbYV0uY2hhcnMgfHwgdm9pZCAwICE9PSB0LmZyYW1lc1thXS53b3JkcyB8fCB2b2lkIDAgIT09IHQuZnJhbWVzW2FdLmxpbmVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0LnNwbGl0VGV4dCA9ICEhaSAmJiBuZXcgdHBHUy5TcGxpdFRleHQodC5jLCB7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogImxpbmVzLHdvcmRzLGNoYXJzIiwKICAgICAgICAgICAgICAgICAgICB3b3Jkc0NsYXNzOiAicnNfc3BsaXR0ZWRfd29yZHMiLAogICAgICAgICAgICAgICAgICAgIGxpbmVzQ2xhc3M6ICJyc19zcGxpdHRlZF9saW5lcyIsCiAgICAgICAgICAgICAgICAgICAgY2hhcnNDbGFzczogInJzX3NwbGl0dGVkX2NoYXJzIgogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSBlbHNlIHQuc3BsaXRUZXh0ID0gITEKICAgICAgICB9LAogICAgICAgIF8gPSBmdW5jdGlvbihlLCB0LCBpKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGUgJiYgZS5pbmRleE9mKCJibG9jayIpID49IDApIHsKICAgICAgICAgICAgICAgIHZhciBhID0ge307CiAgICAgICAgICAgICAgICBzd2l0Y2ggKDAgPT09IHRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgidHAtYmxvY2ttYXNrX2luIikubGVuZ3RoICYmICh0LmFwcGVuZCgnPGRpdiBjbGFzcz0idHAtYmxvY2ttYXNrX2luIj48L2Rpdj4nKSwgdC5hcHBlbmQoJzxkaXYgY2xhc3M9InRwLWJsb2NrbWFza19vdXQiPjwvZGl2PicpKSwgaSA9IHZvaWQgMCA9PT0gaSA/ICJwb3dlcjMuaW5PdXQiIDogaSwgYS5mdCA9IFt7CiAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAxLAogICAgICAgICAgICAgICAgICAgIHNjYWxlWDogMCwKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICIwJSA1MCUiCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAxLAogICAgICAgICAgICAgICAgICAgIHNjYWxlWDogMSwKICAgICAgICAgICAgICAgICAgICBlYXNlOiBpLAogICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZVJlbmRlcjogITEKICAgICAgICAgICAgICAgIH1dLCBhLnQgPSB7CiAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAxLAogICAgICAgICAgICAgICAgICAgIHNjYWxlWDogMCwKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICIxMDAlIDUwJSIsCiAgICAgICAgICAgICAgICAgICAgZWFzZTogaSwKICAgICAgICAgICAgICAgICAgICBpbW1lZGlhdGVSZW5kZXI6ICExCiAgICAgICAgICAgICAgICB9LCBhLmJtYXNrX2luID0gdC5maW5kKCIudHAtYmxvY2ttYXNrX2luIiksIGEuYm1hc2tfb3V0ID0gdC5maW5kKCIudHAtYmxvY2ttYXNrX291dCIpLCBhLnR5cGUgPSAiYmxvY2siLCBlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYmxvY2t0b2xlZnQiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgImJsb2NrZnJvbXJpZ2h0IjoKICAgICAgICAgICAgICAgICAgICAgICAgYS5mdFswXS50cmFuc2Zvcm1PcmlnaW4gPSAiMTAwJSA1MCUiLCBhLnQudHJhbnNmb3JtT3JpZ2luID0gIjAlIDUwJSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImJsb2NrZnJvbXRvcCI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYmxvY2t0b2JvdHRvbSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGEuZnQgPSBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVYOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAiNTAlIDAlIgogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlUmVuZGVyOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9XSwgYS50ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVYOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAiNTAlIDEwMCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZVJlbmRlcjogITEKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYmxvY2t0b3RvcCI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYmxvY2tmcm9tYm90dG9tIjoKICAgICAgICAgICAgICAgICAgICAgICAgYS5mdCA9IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICI1MCUgMTAwJSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVYOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZVJlbmRlcjogITEKICAgICAgICAgICAgICAgICAgICAgICAgfV0sIGEudCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogIjUwJSAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlUmVuZGVyOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gYS5mdFsxXS5vdmVyd3JpdGUgPSAiYXV0byIsIGEudC5vdmVyd3JpdGUgPSAiYXV0byIsIGEKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gITEKICAgICAgICB9LAogICAgICAgIFMgPSBmdW5jdGlvbihlLCB0LCBpLCBhLCByKSB7CiAgICAgICAgICAgIHJldHVybiAwID09PSBvW3JdLnNkaXIgfHwgdm9pZCAwID09PSB0ID8gZSA6ICgibWFzayIgPT09IGkgPyBhID0gIngiID09PSBhID8gIm1YIiA6ICJ5IiA9PT0gYSA/ICJtWSIgOiBhIDogImNoYXJzIiA9PT0gaSA/IGEgPSAieCIgPT09IGEgPyAiY1giIDogInkiID09PSBhID8gImNZIiA6ICJkaXIiID09PSBhID8gImNEIiA6IGEgOiAid29yZHMiID09PSBpID8gYSA9ICJ4IiA9PT0gYSA/ICJ3WCIgOiAieSIgPT09IGEgPyAid1kiIDogImRpciIgPT09IGEgPyAid0QiIDogYSA6ICJsaW5lcyIgPT09IGkgJiYgKGEgPSAieCIgPT09IGEgPyAibFgiIDogInkiID09PSBhID8gImxZIiA6ICJkaXIiID09PSBhID8gImxEIiA6IGEpLCB2b2lkIDAgPT09IHRbYV0gfHwgITEgPT09IHRbYV0gPyBlIDogdm9pZCAwICE9PSB0ICYmICEwID09PSB0W2FdID8gInQiID09PSBlIHx8ICJ0b3AiID09PSBlID8gImIiIDogImIiID09PSBlIHx8ICJib3R0b20iID09PSBlID8gInQiIDogImwiID09PSBlIHx8ICJsZWZ0IiA9PT0gZSA/ICJyIiA6ICJyIiA9PT0gZSB8fCAicmlnaHQiID09PSBlID8gImwiIDogLTEgKiBlIDogdm9pZCAwKQogICAgICAgIH0sCiAgICAgICAgeCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIGkgPSBvW2UuaWRdLl9MW2UubGF5ZXJbMF0uaWRdLAogICAgICAgICAgICAgICAgYSA9IHZvaWQgMCA9PT0gZS5zb3VyY2UgPyBvLmNsb25lKGUuZnJhbWUudHJhbnNmb3JtKSA6IG8uY2xvbmUoZS5mcmFtZVtlLnNvdXJjZV0pLAogICAgICAgICAgICAgICAgciA9IHsKICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAiNTAlIiwKICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAiNTAlIiwKICAgICAgICAgICAgICAgICAgICBvcmlnaW5aOiAiMCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzID0gdm9pZCAwICE9PSBpLl9saWcgPyBvW2UuaWRdLl9MW2kuX2xpZ1swXS5pZF0uZW93IDogb1tlLmlkXS5jb253LAogICAgICAgICAgICAgICAgbiA9IHZvaWQgMCAhPT0gaS5fbGlnID8gb1tlLmlkXS5fTFtpLl9saWdbMF0uaWRdLmVvaCA6IG9bZS5pZF0uY29uaDsKICAgICAgICAgICAgZm9yICh2YXIgZCBpbiBhKQogICAgICAgICAgICAgICAgaWYgKGEuaGFzT3duUHJvcGVydHkoZCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYVtkXSA9ICJvYmplY3QiID09IHR5cGVvZiBhW2RdID8gYVtkXVtvW2UuaWRdLmxldmVsXSA6IGFbZF0sICJpbmhlcml0IiA9PT0gYVtkXSB8fCAiZGVsYXkiID09PSBkIHx8ICJkaXJlY3Rpb24iID09PSBkIHx8ICJ1c2UiID09PSBkKSBkZWxldGUgYVtkXTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgib3JpZ2luWCIgPT09IGQgfHwgIm9yaWdpblkiID09PSBkIHx8ICJvcmlnaW5aIiA9PT0gZCkgcltkXSA9IGFbZF0sIGRlbGV0ZSBhW2RdOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG8uaXNOdW1lcmljKGFbZF0sIDApKSBhW2RdID0gUyhhW2RdLCBlLmZyYW1lLnJldmVyc2UsIGUudGFyZ2V0LCBkLCBlLmlkLCBlLmlkKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgiciIgPT09IGFbZF1bMF0gJiYgImEiID09PSBhW2RdWzFdICYmICIoIiA9PT0gYVtkXVszXSkgYVtkXSA9IGFbZF0ucmVwbGFjZSgicmFuIiwgInJhbmRvbSIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFbZF0uaW5kZXhPZigiY3ljKCIpID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBhW2RdLnJlcGxhY2UoImN5YygiLCAiIikucmVwbGFjZSgiKSIsICIiKS5yZXBsYWNlKCJbIiwgIiIpLnJlcGxhY2UoIl0iLCAiIikuc3BsaXQoInwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYVtkXSA9IG5ldyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHBHUy5nc2FwLnV0aWxzLndyYXAobCwgdm9pZCAwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhW2RdLmluZGV4T2YoIiUiKSA+PSAwICYmIG8uaXNOdW1lcmljKHQgPSBwYXJzZUludChhW2RdLCAwKSkpIGFbZF0gPSAieCIgPT09IGQgPyBTKChpLmVvdyB8fCAwKSAqIHQgLyAxMDAsIGUuZnJhbWUucmV2ZXJzZSwgZS50YXJnZXQsIGQsIGUuaWQpIDogInkiID09PSBkID8gUygoaS5lb2ggfHwgMCkgKiB0IC8gMTAwLCBlLmZyYW1lLnJldmVyc2UsIGUudGFyZ2V0LCBkLCBlLmlkKSA6IGFbZF07CiAgICAgICAgICAgICAgICAgICAgZWxzZSBzd2l0Y2ggKGFbZF0gPSBhW2RdLnJlcGxhY2UoIlsiLCAiIikucmVwbGFjZSgiXSIsICIiKSwgYVtkXSA9IFMoYVtkXSwgZS5mcmFtZS5yZXZlcnNlLCBlLnRhcmdldCwgZCwgZS5pZCwgZS5pZCksIGFbZF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2RdID0gMCAtIChpLmVvaCB8fCAwKSAtICgiY29sdW1uIiA9PT0gaS50eXBlID8gMCA6IGkuY2FsY3kgfHwgMCkgLSBvLmdldExheWVyUGFyYWxsYXhPZmZzZXQoZS5pZCwgZS5sYXllclswXS5pZCwgInYiKSAtICgicm93IiA9PT0gaS50eXBlICYmIHZvaWQgMCAhPT0gaS5tYXJnaW5Ub3AgPyBpLm1hcmdpblRvcFtvW2UuaWRdLmxldmVsXSA6IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImIiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib3R0b20iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtkXSA9IG4gLSAoImNvbHVtbiIgPT09IGkudHlwZSA/IDAgOiBpLmNhbGN5IHx8IDApICsgby5nZXRMYXllclBhcmFsbGF4T2Zmc2V0KGUuaWQsIGUubGF5ZXJbMF0uaWQsICJ2Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxlZnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtkXSA9IDAgLSAoInJvdyIgPT09IGkudHlwZSA/IGkucG93IDogaS5lb3cgfHwgMCkgLSAoImNvbHVtbiIgPT09IGkudHlwZSA/IDAgOiAicm93IiA9PT0gaS50eXBlID8gaS5yb3djYWxjeCA6IGkuY2FsY3ggfHwgMCkgLSBvLmdldExheWVyUGFyYWxsYXhPZmZzZXQoZS5pZCwgZS5sYXllclswXS5pZCwgImgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmlnaHQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtkXSA9IHMgLSAoImNvbHVtbiIgPT09IGkudHlwZSA/IDAgOiAicm93IiA9PT0gaS50eXBlID8gaS5yb3djYWxjeCA6IGkuY2FsY3ggfHwgMCkgKyBvLmdldExheWVyUGFyYWxsYXhPZmZzZXQoZS5pZCwgZS5sYXllclswXS5pZCwgImgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1pZGRsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNlbnRlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2RdID0gIngiID09PSBkID8gUyhzIC8gMiAtICgiY29sdW1uIiA9PT0gaS50eXBlID8gMCA6IGkuY2FsY3ggfHwgMCkgLSAoaS5lb3cgfHwgMCkgLyAyLCBlLmZyYW1lLnJldmVyc2UsIGUudGFyZ2V0LCBkLCBlLmlkKSA6ICJ5IiA9PT0gZCA/IFMobiAvIDIgLSAoImNvbHVtbiIgPT09IGkudHlwZSA/IDAgOiBpLmNhbGN5IHx8IDApIC0gKGkuZW9oIHx8IDApIC8gMiwgZS5mcmFtZS5yZXZlcnNlLCBlLnRhcmdldCwgZCwgZS5pZCkgOiBhW2RdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICJza2V3WCIgPT09IGQgJiYgdm9pZCAwICE9PSBhW2RdICYmIChhLnNjYWxlWSA9IHZvaWQgMCA9PT0gYS5zY2FsZVkgPyAxIDogcGFyc2VGbG9hdChhLnNjYWxlWSksIGEuc2NhbGVZICo9IE1hdGguY29zKHBhcnNlRmxvYXQoYVtkXSkgKiB0cEdTLkRFRzJSQUQpKSwgInNrZXdZIiA9PT0gZCAmJiB2b2lkIDAgIT09IGFbZF0gJiYgKGEuc2NhbGVYID0gdm9pZCAwID09PSBhLnNjYWxlWCA/IDEgOiBwYXJzZUZsb2F0KGEuc2NhbGVYKSwgYS5zY2FsZVggKj0gTWF0aC5jb3MocGFyc2VGbG9hdChhW2RdKSAqIHRwR1MuREVHMlJBRCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhLnRyYW5zZm9ybU9yaWdpbiA9IHIub3JpZ2luWCArICIgIiArIHIub3JpZ2luWSArICIgIiArIHIub3JpZ2luWiwgIW9bZS5pZF0uQlVHX2llX2NsaXBQYXRoICYmIHZvaWQgMCAhPT0gYS5jbGlwICYmIHZvaWQgMCAhPT0gaS5jbGlwUGF0aCAmJiBpLmNsaXBQYXRoLnVzZSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSAicmVjdGFuZ2xlIiA9PSBpLmNsaXBQYXRoLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgcCA9IHBhcnNlSW50KGEuY2xpcCwgMCksCiAgICAgICAgICAgICAgICAgICAgZyA9IDEwMCAtIHBhcnNlSW50KGEuY2xpcEIsIDApLAogICAgICAgICAgICAgICAgICAgIHUgPSBNYXRoLnJvdW5kKHAgLyAyKTsKICAgICAgICAgICAgICAgIHN3aXRjaCAoaS5jbGlwUGF0aC5vcmlnaW4pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJpbnZoIjoKICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGlwUGF0aCA9ICJwb2x5Z29uKDAlIDAlLCAwJSAxMDAlLCAiICsgcCArICIlIDEwMCUsICIgKyBwICsgIiUgMCUsIDEwMCUgMCUsIDEwMCUgMTAwJSwgIiArIGcgKyAiJSAxMDAlLCAiICsgZyArICIlIDAlLCAwJSAwJSkiOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJpbnZ2IjoKICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGlwUGF0aCA9ICJwb2x5Z29uKDEwMCUgMCUsIDAlIDAlLCAwJSAiICsgcCArICIlLCAxMDAlICIgKyBwICsgIiUsIDEwMCUgMTAwJSwgMCUgMTAwJSwgMCUgIiArIGcgKyAiJSwgMTAwJSAiICsgZyArICIlLCAxMDAlIDAlKSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImN2IjoKICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGlwUGF0aCA9IGMgPyAicG9seWdvbigiICsgKDUwIC0gdSkgKyAiJSAwJSwgIiArICg1MCArIHUpICsgIiUgMCUsICIgKyAoNTAgKyB1KSArICIlIDEwMCUsICIgKyAoNTAgLSB1KSArICIlIDEwMCUpIiA6ICJjaXJjbGUoIiArIHAgKyAiJSBhdCA1MCUgNTAlKSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImNoIjoKICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGlwUGF0aCA9IGMgPyAicG9seWdvbigwJSAiICsgKDUwIC0gdSkgKyAiJSwgMCUgIiArICg1MCArIHUpICsgIiUsIDEwMCUgIiArICg1MCArIHUpICsgIiUsIDEwMCUgIiArICg1MCAtIHUpICsgIiUpIiA6ICJjaXJjbGUoIiArIHAgKyAiJSBhdCA1MCUgNTAlKSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImwiOgogICAgICAgICAgICAgICAgICAgICAgICBhLmNsaXBQYXRoID0gYyA/ICJwb2x5Z29uKDAlIDAlLCAiICsgcCArICIlIDAlLCAiICsgcCArICIlIDEwMCUsIDAlIDEwMCUpIiA6ICJjaXJjbGUoIiArIHAgKyAiJSBhdCAwJSA1MCUpIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiciI6CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpcFBhdGggPSBjID8gInBvbHlnb24oIiArICgxMDAgLSBwKSArICIlIDAlLCAxMDAlIDAlLCAxMDAlIDEwMCUsICIgKyAoMTAwIC0gcCkgKyAiJSAxMDAlKSIgOiAiY2lyY2xlKCIgKyBwICsgIiUgYXQgMTAwJSA1MCUpIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpcFBhdGggPSBjID8gInBvbHlnb24oMCUgMCUsIDEwMCUgMCUsIDEwMCUgIiArIHAgKyAiJSwgMCUgIiArIHAgKyAiJSkiIDogImNpcmNsZSgiICsgcCArICIlIGF0IDUwJSAwJSkiOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJiIjoKICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGlwUGF0aCA9IGMgPyAicG9seWdvbigwJSAxMDAlLCAxMDAlIDEwMCUsIDEwMCUgIiArICgxMDAgLSBwKSArICIlLCAwJSAiICsgKDEwMCAtIHApICsgIiUpIiA6ICJjaXJjbGUoIiArIHAgKyAiJSBhdCA1MCUgMTAwJSkiOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJsdCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpcFBhdGggPSBjID8gInBvbHlnb24oMCUgMCUsIiArIDIgKiBwICsgIiUgMCUsIDAlICIgKyAyICogcCArICIlKSIgOiAiY2lyY2xlKCIgKyBwICsgIiUgYXQgMCUgMCUpIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAibGIiOgogICAgICAgICAgICAgICAgICAgICAgICBhLmNsaXBQYXRoID0gYyA/ICJwb2x5Z29uKDAlICIgKyAoMTAwIC0gMiAqIHApICsgIiUsIDAlIDEwMCUsIiArIDIgKiBwICsgIiUgMTAwJSkiIDogImNpcmNsZSgiICsgcCArICIlIGF0IDAlIDEwMCUpIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAicnQiOgogICAgICAgICAgICAgICAgICAgICAgICBhLmNsaXBQYXRoID0gYyA/ICJwb2x5Z29uKCIgKyAoMTAwIC0gMiAqIHApICsgIiUgMCUsIDEwMCUgMCUsIDEwMCUgIiArIDIgKiBwICsgIiUpIiA6ICJjaXJjbGUoIiArIHAgKyAiJSBhdCAxMDAlIDAlKSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInJiIjoKICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGlwUGF0aCA9IGMgPyAicG9seWdvbigiICsgKDEwMCAtIDIgKiBwKSArICIlIDEwMCUsIDEwMCUgMTAwJSwgMTAwJSAiICsgKDEwMCAtIDIgKiBwKSArICIlKSIgOiAiY2lyY2xlKCIgKyBwICsgIiUgYXQgMTAwJSAxMDAlKSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImNsciI6CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpcFBhdGggPSBjID8gInBvbHlnb24oMCUgMCUsIDAlICIgKyBwICsgIiUsICIgKyAoMTAwIC0gcCkgKyAiJSAxMDAlLCAxMDAlIDEwMCUsIDEwMCUgIiArICgxMDAgLSBwKSArICIlLCAiICsgcCArICIlIDAlKSIgOiAiY2lyY2xlKCIgKyBwICsgIiUgYXQgNTAlIDUwJSkiOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJjcmwiOgogICAgICAgICAgICAgICAgICAgICAgICBhLmNsaXBQYXRoID0gYyA/ICJwb2x5Z29uKDAlICIgKyAoMTAwIC0gcCkgKyAiJSwgMCUgMTAwJSwgIiArIHAgKyAiJSAxMDAlLCAxMDAlICIgKyBwICsgIiUsIDEwMCUgMCUsICIgKyAoMTAwIC0gcCkgKyAiJSAwJSkiIDogImNpcmNsZSgiICsgcCArICIlIGF0IDUwJSA1MCUpIgogICAgICAgICAgICAgICAgfSEwICE9PSBvLmlzRmlyZWZveChlLmlkKSAmJiAoYVsiLXdlYmtpdC1jbGlwLXBhdGgiXSA9IGEuY2xpcFBhdGgpLCBhWyJjbGlwLXBhdGgiXSA9IGEuY2xpcFBhdGgsIGRlbGV0ZSBhLmNsaXAsIGRlbGV0ZSBhLmNsaXBCCiAgICAgICAgICAgIH0gZWxzZSBkZWxldGUgYS5jbGlwOwogICAgICAgICAgICByZXR1cm4gIm1hc2siICE9PSBlLnRhcmdldCAmJiAodm9pZCAwID09PSBlLmZyYW1lIHx8IHZvaWQgMCA9PT0gZS5mcmFtZS5maWx0ZXIgJiYgIWUuZm9yY2VmaWx0ZXIgfHwgKGEuZmlsdGVyID0gaChlLmZyYW1lLmZpbHRlciksIGFbIi13ZWJraXQtZmlsdGVyIl0gPSBhLmZpbHRlciwgYVsiYmFja2Ryb3AtZmlsdGVyIl0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBlKSByZXR1cm4gIiI7CiAgICAgICAgICAgICAgICB2YXIgdCA9ICIiOwogICAgICAgICAgICAgICAgcmV0dXJuIG8uaXNDaHJvbWU4ODg5ICYmIDAgPT09IGUuYl9ibHVyICYmIChlLmJfYmx1ciA9IC4wNSksIHQgPSB2b2lkIDAgIT09IGUuYl9ibHVyID8gImJsdXIoIiArIChlLmJfYmx1ciB8fCAwKSArICJweCkiIDogIiIsIHQgKz0gdm9pZCAwICE9PSBlLmJfZ3JheXNjYWxlID8gKHQubGVuZ3RoID4gMCA/ICIgIiA6ICIiKSArICJncmF5c2NhbGUoIiArIChlLmJfZ3JheXNjYWxlIHx8IDApICsgIiUpIiA6ICIiLCB0ICs9IHZvaWQgMCAhPT0gZS5iX3NlcGlhID8gKHQubGVuZ3RoID4gMCA/ICIgIiA6ICIiKSArICJzZXBpYSgiICsgKGUuYl9zZXBpYSB8fCAwKSArICIlKSIgOiAiIiwgdCArPSB2b2lkIDAgIT09IGUuYl9pbnZlcnQgPyAodC5sZW5ndGggPiAwID8gIiAiIDogIiIpICsgImludmVydCgiICsgKGUuYl9pbnZlcnQgfHwgMCkgKyAiJSkiIDogIiIsICIiID09ICh0ICs9IHZvaWQgMCAhPT0gZS5iX2JyaWdodG5lc3MgPyAodC5sZW5ndGggPiAwID8gIiAiIDogIiIpICsgImJyaWdodG5lc3MoIiArIChlLmJfYnJpZ2h0bmVzcyB8fCAxMDApICsgIiUpIiA6ICIiKSA/ICJub25lIiA6IHQKICAgICAgICAgICAgfShlLmZyYW1lLmZpbHRlciksIHdpbmRvdy5pc1NhZmFyaTExICYmIChhWyItd2Via2l0LWJhY2tkcm9wLWZpbHRlciJdID0gYVsiYmFja2Ryb3AtZmlsdGVyIl0pLCB3aW5kb3cuaXNTYWZhcmkxMSAmJiB2b2lkIDAgIT09IGEuZmlsdGVyICYmIHZvaWQgMCA9PT0gYS56ICYmIHZvaWQgMCAhPT0gZS5mcmFtZS5maWx0ZXIgJiYgdm9pZCAwICE9PSBlLmZyYW1lLmZpbHRlci5ibHVyICYmIChhLnogPSAxZS00KSksIGpRdWVyeS5pbkFycmF5KGUuc291cmNlLCBbImNoYXJzIiwgIndvcmRzIiwgImxpbmVzIl0pID49IDAgJiYgKHZvaWQgMCAhPT0gZS5mcmFtZVtlLnNvdXJjZV0uYmx1ciB8fCBlLmZvcmNlZmlsdGVyKSAmJiAoYS5maWx0ZXIgPSBoKGUuZnJhbWVbZS5zb3VyY2VdKSwgYVsiLXdlYmtpdC1maWx0ZXIiXSA9IGEuZmlsdGVyKSwgZGVsZXRlIGEuZ3JheXNjYWxlLCBkZWxldGUgYS5ibHVyLCBkZWxldGUgYS5icmlnaHRuZXNzKSwgYS5lYXNlID0gdm9pZCAwICE9PSBhLmVhc2UgPyBhLmVhc2UgOiB2b2lkIDAgPT09IGEuZWFzZSAmJiB2b2lkIDAgIT09IGUuZWFzZSB8fCB2b2lkIDAgIT09IGEuZWFzZSAmJiB2b2lkIDAgIT09IGUuZWFzZSAmJiAiaW5oZXJpdCIgPT09IGEuZWFzZSA/IGUuZWFzZSA6IGUuZnJhbWUudGltZWxpbmUuZWFzZSwgYS5lYXNlID0gdm9pZCAwID09PSBhLmVhc2UgfHwgImRlZmF1bHQiID09PSBhLmVhc2UgPyAicG93ZXIzLmluT3V0IiA6IGEuZWFzZSwgYQogICAgICAgIH0sCiAgICAgICAgayA9IGZ1bmN0aW9uKGUsIHQsIGksIGEsIHIpIHsKICAgICAgICAgICAgdmFyIHMsIG4sIGQgPSB7fSwKICAgICAgICAgICAgICAgIGwgPSB7fSwKICAgICAgICAgICAgICAgIGMgPSB7fTsKICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBhID0gdm9pZCAwID09PSBhID8gInRyYW5zZm9ybSIgOiBhLCAibG9vcCIgPT09IHIgPyAoYy5hdXRvUm90YXRlID0gITEsIGMueW95b19maWx0ZXIgPSAhMSwgYy55b3lvX3JvdGF0ZSA9ICExLCBjLnlveW9fbW92ZSA9ICExLCBjLnlveW9fc2NhbGUgPSAhMSwgYy5jdXJ2ZWQgPSAhMSwgYy5jdXJ2aW5lc3MgPSAyLCBjLmVhc2UgPSAibm9uZSIsIGMuc3BlZWQgPSAxZTMsIGMuc3QgPSAwLCBkLnggPSAwLCBkLnkgPSAwLCBkLnogPSAwLCBkLnhyID0gMCwgZC55ciA9IDAsIGQuenIgPSAwLCBkLnNjYWxlWCA9IDEsIGQuc2NhbGVZID0gMSwgZC5vcmlnaW5YID0gIjUwJSIsIGQub3JpZ2luWSA9ICI1MCUiLCBkLm9yaWdpblogPSAiMCIsIGQucm90YXRpb25YID0gIjBkZWciLCBkLnJvdGF0aW9uWSA9ICIwZGVnIiwgZC5yb3RhdGlvblogPSAiMGRlZyIpIDogKGMuc3BlZWQgPSAzMDAsIGkgPyBjLmVhc2UgPSAiZGVmYXVsdCIgOiBkLmVhc2UgPSAiZGVmYXVsdCIpLCAic2Z4IiA9PT0gciAmJiAoZC5meGMgPSAiI2ZmZmZmZiIpLCBlID0gZS5zcGxpdCgiOyIpKQogICAgICAgICAgICAgICAgaWYgKGUuaGFzT3duUHJvcGVydHkocCkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGVbcF0uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnVzZSA9ICJ0cnVlIiA9PT0gZ1sxXSB8fCAidCIgPT09IGdbMV0gfHwgZmFzbGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmeGMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5meGMgPSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJnYyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhdXRvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuYXV0byA9ICJ0IiA9PT0gZ1sxXSB8fCB2b2lkIDAgPT09IGdbMV0gfHwgInRydWUiID09PSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5vcGFjaXR5ID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJvWCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLm9yaWdpblggPSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9ZIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQub3JpZ2luWSA9IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib1oiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5vcmlnaW5aID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzWCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnNjYWxlWCA9IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic1kiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5zY2FsZVkgPSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNrWCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnNrZXdYID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJza1kiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5za2V3WSA9IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiclgiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5yb3RhdGlvblggPSBnWzFdLCAwICE9IGdbMV0gJiYgIjBkZWciICE9PSBnWzFdICYmIG8uYWRkU2FmYXJpRml4KHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJZIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucm90YXRpb25ZID0gZ1sxXSwgMCAhPSBnWzFdICYmICIwZGVnIiAhPT0gZ1sxXSAmJiBvLmFkZFNhZmFyaUZpeCh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyWiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnJvdGF0aW9uWiA9IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5jb2xvciA9IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5lZmZlY3QgPSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJvcyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmJvcmRlclN0eWxlID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib2MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5ib3JkZXJDb2xvciA9IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC50ZXh0RGVjb3JhdGlvbiA9IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiekkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC56SW5kZXggPSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRwIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQudHJhbnNmb3JtUGVyc3BlY3RpdmUgPSAiaXNvbWV0cmljIiA9PT0gb1t0XS5wZXJzcGVjdGl2ZVR5cGUgPyAwIDogImdsb2JhbCIgPT09IG9bdF0ucGVyc3BlY3RpdmVUeXBlID8gb1t0XS5wZXJzcGVjdGl2ZSA6IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY3AiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5jbGlwID0gcGFyc2VJbnQoZ1sxXSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY3BiIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuY2xpcEIgPSBwYXJzZUludChnWzFdLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhUiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmF1dG9Sb3RhdGUgPSAidCIgPT0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyQSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnJhZGl1c0FuZ2xlID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ5eWYiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYy55b3lvX2ZpbHRlciA9ICJ0IiA9PSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInl5bSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnlveW9fbW92ZSA9ICJ0IiA9PSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInl5ciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnlveW9fcm90YXRlID0gInQiID09IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAieXlzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMueW95b19zY2FsZSA9ICJ0IiA9PSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNyZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmN1cnZlZCA9ICJ0IiA9PSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIngiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC54ID0gInJldmVyc2UiID09PSByID8gInQiID09PSBnWzFdIHx8ICEwID09PSBnWzFdIHx8ICJ0cnVlIiA9PSBnWzFdIDogImxvb3AiID09PSByID8gcGFyc2VJbnQoZ1sxXSwgMCkgOiBvLnJldlRvUmVzcChnWzFdLCBvW3RdLnJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnkgPSAicmV2ZXJzZSIgPT09IHIgPyAidCIgPT09IGdbMV0gfHwgITAgPT09IGdbMV0gfHwgInRydWUiID09IGdbMV0gOiAibG9vcCIgPT09IHIgPyBwYXJzZUludChnWzFdLCAwKSA6IG8ucmV2VG9SZXNwKGdbMV0sIG9bdF0ucmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ6IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQueiA9ICJsb29wIiA9PT0gciA/IHBhcnNlSW50KGdbMV0sIDApIDogby5yZXZUb1Jlc3AoZ1sxXSwgb1t0XS5ybGUpLCAwICE9IGdbMV0gJiYgby5hZGRTYWZhcmlGaXgodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYm93IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuYm9yZGVyV2lkdGggPSBvLnJldlRvUmVzcChnWzFdLCA0LCAwKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgIiAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib3IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5ib3JkZXJSYWRpdXMgPSBvLnJldlRvUmVzcChnWzFdLCA0LCAwKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgIiAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQubWFzayA9ICJ0IiA9PT0gZ1sxXSB8fCAiZiIgIT09IGdbMV0gJiYgZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJpQyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmluc3RhbnRDbGljayA9ICJ0IiA9PT0gZ1sxXSB8fCAiZiIgIT09IGdbMV0gJiYgZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ4UiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnhyID0gcGFyc2VJbnQoZ1sxXSwgMCksIG8uYWRkU2FmYXJpRml4KHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInlSIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQueXIgPSBwYXJzZUludChnWzFdLCAwKSwgby5hZGRTYWZhcmlGaXgodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAielIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC56ciA9IHBhcnNlSW50KGdbMV0sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJsdSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9vcCIgPT09IHIgPyBkLmJsdXIgPSBwYXJzZUludChnWzFdLCAwKSA6IGwuYmx1ciA9IHBhcnNlSW50KGdbMV0sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImdyYSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9vcCIgPT09IHIgPyBkLmdyYXlzY2FsZSA9IHBhcnNlSW50KGdbMV0sIDApIDogbC5ncmF5c2NhbGUgPSBwYXJzZUludChnWzFdLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJicmkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvb3AiID09PSByID8gZC5icmlnaHRuZXNzID0gcGFyc2VJbnQoZ1sxXSwgMCkgOiBsLmJyaWdodG5lc3MgPSBwYXJzZUludChnWzFdLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJiQiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmJfYmx1ciA9IHBhcnNlSW50KGdbMV0sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJHIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYl9ncmF5c2NhbGUgPSBwYXJzZUludChnWzFdLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJiUiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmJfYnJpZ2h0bmVzcyA9IHBhcnNlSW50KGdbMV0sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJJIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYl9pbnZlcnQgPSBwYXJzZUludChnWzFdLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJiUyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmJfc2VwaWEgPSBwYXJzZUludChnWzFdLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnNwZWVkID0gcGFyc2VJbnQoZ1sxXSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmRlbGF5ID0gcGFyc2VJbnQoZ1sxXSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY3JucyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmN1cnZpbmVzcyA9IHBhcnNlSW50KGdbMV0sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuc3RhcnQgPSAidyIgPT09IGdbMV0gfHwgImEiID09PSBnWzFdID8gIis9MCIgOiBnWzFdLCBjLndhaXRvbmNhbGwgPSAidyIgPT09IGdbMV0gfHwgImEiID09PSBnWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNBIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuc3RhcnRBYnNvbHV0ZSA9IGdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic1IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zdGFydFJlbGF0aXZlID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPyBjLmVhc2UgPSBnWzFdIDogZC5lYXNlID0gZ1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ1swXS5sZW5ndGggPiAwICYmIChkW2dbMF1dID0gInQiID09PSBnWzFdIHx8ICJmIiAhPT0gZ1sxXSAmJiBnWzFdKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHUgPSB7CiAgICAgICAgICAgICAgICB0aW1lbGluZTogYwogICAgICAgICAgICB9OwogICAgICAgICAgICByZXR1cm4galF1ZXJ5LmlzRW1wdHlPYmplY3QobCkgfHwgKCJzcGxpdCIgPT09IHIgPyBkID0galF1ZXJ5LmV4dGVuZCghMCwgZCwgbCkgOiB1LmZpbHRlciA9IGwpLCAic3BsaXQiID09PSByICYmIChkLmRpciA9IHZvaWQgMCA9PT0gZC5kaXIgPyAic3RhcnQiIDogImJhY2t3YXJkIiA9PT0gZC5kaXIgPyAiZW5kIiA6ICJtaWRkbGV0b2VkZ2UiID09PSBkLmRpciA/ICJjZW50ZXIiIDogImVkZ2V0b21pZGRsZSIgPT09IGQuZGlyID8gImVkZ2UiIDogZC5kaXIpLCBqUXVlcnkuaXNFbXB0eU9iamVjdChzKSB8fCAodS5jb2xvciA9IHMpLCBqUXVlcnkuaXNFbXB0eU9iamVjdChuKSB8fCAodS5iZ2NvbG9yID0gbiksIHVbYV0gPSBkLCB1CiAgICAgICAgfSwKICAgICAgICBMID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgaSA9IHt9LAogICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHdpbmRvdy5yZEYwKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGsoIng6MDt5OjA7ejowO3JYOjA7clk6MDtyWjowO286MDtza1g6MDtza1k6MDtzWDowO3NZOjA7b1g6NTAlO29ZOjUwJTtvWjowO2Rpcjpmb3J3YXJkO2Q6NSIsIHQpLnRyYW5zZm9ybTsKICAgICAgICAgICAgICAgIHdpbmRvdy5yZEYwID0gd2luZG93LnJkRjEgPSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBrKCJ4OjA7eTowO3o6MDtyWDowO3JZOjA7clo6MDtvOjA7c2tYOjA7c2tZOjA7c1g6MDtzWTowO29YOjUwJTtvWTo1MCU7b1o6MDt0cDo2MDBweCIsIHQsICEwKS50cmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgbWFzazogaygieDowO3k6MCIsIHQsICEwKS50cmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgY2hhcnM6IGpRdWVyeS5leHRlbmQoITAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmx1cjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZ3JheXNjYWxlOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBicmlnaHRuZXNzOiAxMDAKICAgICAgICAgICAgICAgICAgICB9LCByKSwKICAgICAgICAgICAgICAgICAgICB3b3JkczogalF1ZXJ5LmV4dGVuZCghMCwgewogICAgICAgICAgICAgICAgICAgICAgICBibHVyOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBncmF5c2NhbGU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGJyaWdodG5lc3M6IDEwMAogICAgICAgICAgICAgICAgICAgIH0sIHIpLAogICAgICAgICAgICAgICAgICAgIGxpbmVzOiBqUXVlcnkuZXh0ZW5kKCEwLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJsdXI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGdyYXlzY2FsZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgYnJpZ2h0bmVzczogMTAwCiAgICAgICAgICAgICAgICAgICAgfSwgcikKICAgICAgICAgICAgICAgIH0sIHdpbmRvdy5yZEYxLnRyYW5zZm9ybS5vcGFjaXR5ID0gd2luZG93LnJkRjEuY2hhcnMub3BhY2l0eSA9IHdpbmRvdy5yZEYxLndvcmRzLm9wYWNpdHkgPSB3aW5kb3cucmRGMS5saW5lcy5vcGFjaXR5ID0gd2luZG93LnJkRjEudHJhbnNmb3JtLnNjYWxlWCA9IHdpbmRvdy5yZEYxLmNoYXJzLnNjYWxlWCA9IHdpbmRvdy5yZEYxLndvcmRzLnNjYWxlWCA9IHdpbmRvdy5yZEYxLmxpbmVzLnNjYWxlWCA9IHdpbmRvdy5yZEYxLnRyYW5zZm9ybS5zY2FsZVkgPSB3aW5kb3cucmRGMS5jaGFycy5zY2FsZVkgPSB3aW5kb3cucmRGMS53b3Jkcy5zY2FsZVkgPSB3aW5kb3cucmRGMS5saW5lcy5zY2FsZVkgPSAxCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICh2YXIgYSBpbiB2b2lkIDAgPT09IGUuZnJhbWVfMCAmJiAoZS5mcmFtZV8wID0gIng6MCIpLCB2b2lkIDAgPT09IGUuZnJhbWVfMSAmJiAoZS5mcmFtZV8xID0gIng6MCIpLCBlLmRkZE5lZWRlZCA9ICExLCBlLmZvcmQpCiAgICAgICAgICAgICAgICBpZiAoZS5mb3JkLmhhc093blByb3BlcnR5KGEpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmZvcmRbYV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbbl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlbbl0gPSBrKGVbbl0sIHQsICEwKSwgdm9pZCAwICE9PSBpW25dLmJnY29sb3IgJiYgKGUuYmdjb2xpbnVzZSA9ICEwKSwgb1t0XS5CVUdfaWVfY2xpcFBhdGggJiYgdm9pZCAwICE9PSBlLmNsaXBQYXRoICYmIGUuY2xpcFBhdGgudXNlICYmIHZvaWQgMCAhPT0gaVtuXS50cmFuc2Zvcm0uY2xpcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSAicmVjdGFuZ2xlIiA9PT0gZS5jbGlwUGF0aC50eXBlID8gMTAwIC0gcGFyc2VJbnQoaVtuXS50cmFuc2Zvcm0uY2xpcCkgOiAxMDAgLSBNYXRoLm1pbigxMDAsIDIgKiBwYXJzZUludChpW25dLnRyYW5zZm9ybS5jbGlwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUuY2xpcFBhdGgub3JpZ2luKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY2xyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyYiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW24gKyAiX21hc2siXSA9ICJ1OnQ7eDoiICsgZCArICIlO3k6MHB4OyIsIGlbbl0udHJhbnNmb3JtLnggPSBvLnJldlRvUmVzcCgiLSIgKyBkICsgIiUiLCBvW3RdLnJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNybCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImx0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjdiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbiArICJfbWFzayJdID0gInU6dDt4Oi0iICsgZCArICIlO3k6MHB4OyIsIGlbbl0udHJhbnNmb3JtLnggPSBvLnJldlRvUmVzcChkICsgIiUiLCBvW3RdLnJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNoIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtuICsgIl9tYXNrIl0gPSAidTp0O3k6LSIgKyBkICsgIiU7eTowcHg7IiwgaVtuXS50cmFuc2Zvcm0ueSA9IG8ucmV2VG9SZXNwKGQgKyAiJSIsIG9bdF0ucmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbiArICJfbWFzayJdID0gInU6dDt5OiIgKyBkICsgIiU7eTowcHg7IiwgaVtuXS50cmFuc2Zvcm0ueSA9IG8ucmV2VG9SZXNwKCItIiArIGQgKyAiJSIsIG9bdF0ucmxlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGlbbl0udHJhbnNmb3JtLmNsaXAsIGRlbGV0ZSBpW25dLnRyYW5zZm9ybS5jbGlwQgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbbiArICJfbWFzayJdICYmIChpW25dLm1hc2sgPSBrKGVbbiArICJfbWFzayJdLCB0KS50cmFuc2Zvcm0pLCBudWxsICE9IGlbbl0ubWFzayAmJiBpW25dLm1hc2sudXNlID8gKGlbbl0ubWFzay54ID0gdm9pZCAwID09PSBpW25dLm1hc2sueCA/IDAgOiBpW25dLm1hc2sueCwgaVtuXS5tYXNrLnkgPSB2b2lkIDAgPT09IGlbbl0ubWFzay55ID8gMCA6IGlbbl0ubWFzay55LCBkZWxldGUgaVtuXS5tYXNrLnVzZSwgaVtuXS5tYXNrLm92ZXJmbG93ID0gImhpZGRlbiIpIDogaVtuXS5tYXNrID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogImRlZmF1bHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICJ2aXNpYmxlIgogICAgICAgICAgICAgICAgICAgICAgICB9LCBlW24gKyAiX2NoYXJzIl0gJiYgKGlbbl0uY2hhcnMgPSBrKGVbbiArICJfY2hhcnMiXSwgdCwgdm9pZCAwLCB2b2lkIDAsICJzcGxpdCIpLnRyYW5zZm9ybSksIGVbbiArICJfd29yZHMiXSAmJiAoaVtuXS53b3JkcyA9IGsoZVtuICsgIl93b3JkcyJdLCB0LCB2b2lkIDAsIHZvaWQgMCwgInNwbGl0IikudHJhbnNmb3JtKSwgZVtuICsgIl9saW5lcyJdICYmIChpW25dLmxpbmVzID0gayhlW24gKyAiX2xpbmVzIl0sIHQsIHZvaWQgMCwgdm9pZCAwLCAic3BsaXQiKS50cmFuc2Zvcm0pLCAoZVtuICsgIl9jaGFycyJdIHx8IGVbbiArICJfd29yZHMiXSB8fCBlW24gKyAiX2xpbmVzIl0pICYmIChpW25dLmRvc3BsaXQgPSAhMCksIGkuZnJhbWVfMCA9IHZvaWQgMCA9PT0gaS5mcmFtZV8wID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9IDogaS5mcmFtZV8wLCBpW25dLnRyYW5zZm9ybS5hdXRvICYmIChpW25dLnRyYW5zZm9ybSA9IG8uY2xvbmUoaS5mcmFtZV8wLnRyYW5zZm9ybSksIGlbbl0udHJhbnNmb3JtLm9wYWNpdHkgPSB2b2lkIDAgPT09IGlbbl0udHJhbnNmb3JtLm9wYWNpdHkgPyAwIDogaVtuXS50cmFuc2Zvcm0ub3BhY2l0eSwgdm9pZCAwICE9PSBpLmZyYW1lXzAuZmlsdGVyICYmIChpW25dLmZpbHRlciA9IG8uY2xvbmUoaS5mcmFtZV8wLmZpbHRlcikpLCB2b2lkIDAgIT09IGkuZnJhbWVfMC5tYXNrICYmIChpW25dLm1hc2sgPSBvLmNsb25lKGkuZnJhbWVfMC5tYXNrKSksIHZvaWQgMCAhPT0gaS5mcmFtZV8wLmNoYXJzICYmIChpW25dLmNoYXJzID0gby5jbG9uZShpLmZyYW1lXzAuY2hhcnMpKSwgdm9pZCAwICE9PSBpLmZyYW1lXzAud29yZHMgJiYgKGlbbl0ud29yZHMgPSBvLmNsb25lKGkuZnJhbWVfMC53b3JkcykpLCB2b2lkIDAgIT09IGkuZnJhbWVfMC5saW5lcyAmJiAoaVtuXS5saW5lcyA9IG8uY2xvbmUoaS5mcmFtZV8wLmxpbmVzKSksIHZvaWQgMCA9PT0gaS5mcmFtZV8wLmNoYXJzICYmIHZvaWQgMCA9PT0gaS5mcmFtZV8wLndvcmRzICYmIHZvaWQgMCA9PT0gaS5mcmFtZV8wLmxpbmVzIHx8IChpW25dLmRvc3BsaXQgPSAhMCkpLCBlW24gKyAiX3NmeCJdICYmIChpW25dLnNmeCA9IGsoZVtuICsgIl9zZngiXSwgdCwgITEsIHZvaWQgMCwgInNmeCIpLnRyYW5zZm9ybSksIGVbbiArICJfcmV2ZXJzZSJdICYmIChpW25dLnJldmVyc2UgPSBrKGVbbiArICJfcmV2ZXJzZSJdLCB0LCAhMSwgdm9pZCAwLCAicmV2ZXJzZSIpLnRyYW5zZm9ybSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpLmZyYW1lXzAuZG9zcGxpdCAmJiAoaS5mcmFtZV8xLmRvc3BsaXQgPSAhMCksIHZvaWQgMCA9PT0gZS5mcmFtZV9ob3ZlciAmJiB2b2lkIDAgPT09IGUuc3ZnaCB8fCAoaS5mcmFtZV9ob3ZlciA9IGsodm9pZCAwID09PSBlLmZyYW1lX2hvdmVyID8gIiIgOiBlLmZyYW1lX2hvdmVyLCB0KSwgIXMgfHwgInRydWUiICE9IGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLmluc3RhbnRDbGljayAmJiAxICE9IGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLmluc3RhbnRDbGljayA/IChkZWxldGUgaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uaW5zdGFudENsaWNrLCBpLmZyYW1lX2hvdmVyLnRyYW5zZm9ybS5jb2xvciA9IGkuZnJhbWVfaG92ZXIuY29sb3IsIHZvaWQgMCA9PT0gaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uY29sb3IgJiYgZGVsZXRlIGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLmNvbG9yLCB2b2lkIDAgIT09IGkuZnJhbWVfaG92ZXIuYmdjb2xvciAmJiBpLmZyYW1lX2hvdmVyLmJnY29sb3IuaW5kZXhPZigiZ3JhZGllbnQiKSA+PSAwID8gaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uYmFja2dyb3VuZEltYWdlID0gaS5mcmFtZV9ob3Zlci5iZ2NvbG9yIDogdm9pZCAwICE9PSBpLmZyYW1lX2hvdmVyLmJnY29sb3IgJiYgKGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLmJhY2tncm91bmRDb2xvciA9IGkuZnJhbWVfaG92ZXIuYmdjb2xvciksIHZvaWQgMCAhPT0gaS5mcmFtZV9ob3Zlci5iZ2NvbG9yICYmIChlLmJnY29saW51c2UgPSAhMCksIGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLm9wYWNpdHkgPSB2b2lkIDAgPT09IGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLm9wYWNpdHkgPyAxIDogaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0ub3BhY2l0eSwgaS5mcmFtZV9ob3Zlci5tYXNrID0gdm9pZCAwICE9PSBpLmZyYW1lX2hvdmVyLnRyYW5zZm9ybS5tYXNrICYmIGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLm1hc2ssIGRlbGV0ZSBpLmZyYW1lX2hvdmVyLnRyYW5zZm9ybS5tYXNrLCB2b2lkIDAgIT09IGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtICYmICgoaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uYm9yZGVyV2lkdGggfHwgaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uYm9yZGVyU3R5bGUpICYmIChpLmZyYW1lX2hvdmVyLnRyYW5zZm9ybS5ib3JkZXJDb2xvciA9IHZvaWQgMCA9PT0gaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uYm9yZGVyQ29sb3IgPyAidHJhbnNwYXJlbnQiIDogaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uYm9yZGVyQ29sb3IpLCAibm9uZSIgIT09IGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLmJvcmRlclN0eWxlICYmIHZvaWQgMCA9PT0gaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uYm9yZGVyV2lkdGggJiYgKGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLmJvcmRlcldpZHRoID0gby5yZXZUb1Jlc3AoMCwgNCwgMCkudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICIgIikpLCB2b2lkIDAgPT09IGUuYm9yZGVyY29sb3IgJiYgdm9pZCAwICE9PSBpLmZyYW1lX2hvdmVyLnRyYW5zZm9ybS5ib3JkZXJDb2xvciAmJiAoZS5ib3JkZXJjb2xvciA9ICJ0cmFuc3BhcmVudCIpLCB2b2lkIDAgPT09IGUuYm9yZGVyd2lkdGggJiYgdm9pZCAwICE9PSBpLmZyYW1lX2hvdmVyLnRyYW5zZm9ybS5ib3JkZXJXaWR0aCAmJiAoZS5ib3JkZXJ3aWR0aCA9IG8ucmV2VG9SZXNwKGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLmJvcmRlcldpZHRoLCA0LCAwKSksIHZvaWQgMCA9PT0gZS5ib3JkZXJzdHlsZSAmJiB2b2lkIDAgIT09IGkuZnJhbWVfaG92ZXIudHJhbnNmb3JtLmJvcmRlclN0eWxlICYmIChlLmJvcmRlcnN0eWxlID0gby5yZXZUb1Jlc3AoaS5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uYm9yZGVyU3R5bGUsIDQsIDApKSkpIDogZGVsZXRlIGkuZnJhbWVfaG92ZXIpLCB2b2lkIDAgIT09IGUudGxvb3ApIHsKICAgICAgICAgICAgICAgIGUubGF5ZXJMb29wID0gewogICAgICAgICAgICAgICAgICAgIGZyb206ICJmcmFtZV8xIiwKICAgICAgICAgICAgICAgICAgICB0bzogImZyYW1lXzk5OSIsCiAgICAgICAgICAgICAgICAgICAgcmVwZWF0OiAtMSwKICAgICAgICAgICAgICAgICAgICBrZWVwOiAhMCwKICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogITAKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB2YXIgbCA9IGUudGxvb3Auc3BsaXQoIjsiKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gbCkKICAgICAgICAgICAgICAgICAgICBpZiAobC5oYXNPd25Qcm9wZXJ0eShhKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGxbYV0uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxheWVyTG9vcC5mcm9tID0gY1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGF5ZXJMb29wLnRvID0gY1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImsiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGF5ZXJMb29wLmtlZXAgPSBjWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5sYXllckxvb3AucmVwZWF0ID0gcGFyc2VJbnQoY1sxXSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxheWVyTG9vcC5jaGlsZHJlbiA9IGNbMV0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUubGF5ZXJMb29wLmNvdW50ID0gMAogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodmFyIGEgaW4gKGUubG9vcF8wIHx8IGUubG9vcF85OTkpICYmIChpLmxvb3AgPSBrKGUubG9vcF85OTksIHQsICEwLCAiZnJhbWVfOTk5IiwgImxvb3AiKSwgaS5sb29wLmZyYW1lXzAgPSBrKGUubG9vcF8wIHx8ICIiLCB0LCAhMSwgdm9pZCAwLCAibG9vcCIpLnRyYW5zZm9ybSksIGkuZnJhbWVfMC50cmFuc2Zvcm0ub3BhY2l0eSA9IHZvaWQgMCA9PT0gaS5mcmFtZV8wLnRyYW5zZm9ybS5vcGFjaXR5ID8gMCA6IGkuZnJhbWVfMC50cmFuc2Zvcm0ub3BhY2l0eSwgaS5mcmFtZV8xLnRyYW5zZm9ybS5vcGFjaXR5ID0gdm9pZCAwID09PSBpLmZyYW1lXzEudHJhbnNmb3JtLm9wYWNpdHkgPyAxIDogaS5mcmFtZV8xLnRyYW5zZm9ybS5vcGFjaXR5LCBpLmZyYW1lXzk5OS50cmFuc2Zvcm0ub3BhY2l0eSA9IHZvaWQgMCA9PT0gaS5mcmFtZV85OTkudHJhbnNmb3JtLm9wYWNpdHkgPyAiaW5oZXJpdCIgOiBpLmZyYW1lXzk5OS50cmFuc2Zvcm0ub3BhY2l0eSwgZS5jbGlwUGF0aCAmJiBlLmNsaXBQYXRoLnVzZSAmJiAoaS5mcmFtZV8wLnRyYW5zZm9ybS5jbGlwID0gdm9pZCAwID09PSBpLmZyYW1lXzAudHJhbnNmb3JtLmNsaXAgPyAxMDAgOiBwYXJzZUludChpLmZyYW1lXzAudHJhbnNmb3JtLmNsaXApLCBpLmZyYW1lXzEudHJhbnNmb3JtLmNsaXAgPSB2b2lkIDAgPT09IGkuZnJhbWVfMS50cmFuc2Zvcm0uY2xpcCA/IDEwMCA6IHBhcnNlSW50KGkuZnJhbWVfMS50cmFuc2Zvcm0uY2xpcCkpLCBlLnJlc2V0ZmlsdGVyID0gITEsIGUudXNlRmlsdGVyID0gewogICAgICAgICAgICAgICAgICAgIGJsdXI6ICExLAogICAgICAgICAgICAgICAgICAgIGdyYXlzY2FsZTogITEsCiAgICAgICAgICAgICAgICAgICAgYnJpZ2h0bmVzczogITEsCiAgICAgICAgICAgICAgICAgICAgYl9ibHVyOiAhMSwKICAgICAgICAgICAgICAgICAgICBiX2dyYXlzY2FsZTogITEsCiAgICAgICAgICAgICAgICAgICAgYl9icmlnaHRuZXNzOiAhMSwKICAgICAgICAgICAgICAgICAgICBiX2ludmVydDogITEsCiAgICAgICAgICAgICAgICAgICAgYl9zZXBpYTogITEKICAgICAgICAgICAgICAgIH0sIGkpIHZvaWQgMCAhPT0gaVthXS5maWx0ZXIgJiYgKGUucmVzZXRmaWx0ZXIgPSAhMCwgZS51c2VGaWx0ZXIgPSBPKGUudXNlRmlsdGVyLCBpW2FdLmZpbHRlcikpOwogICAgICAgICAgICBpZiAoITAgIT09IGUucmVzZXRGaWx0ZXIgJiYgdm9pZCAwICE9PSBpLmZyYW1lX2hvdmVyICYmIChlLnVzZUZpbHRlciA9IE8oZS51c2VGaWx0ZXIsIGkuZnJhbWVfaG92ZXIpKSwgZS5yZXNldGZpbHRlcikKICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gaS5mcmFtZV8wLmZpbHRlciA9IG8uY2xvbmUoaS5mcmFtZV8wLmZpbHRlciksIGkuZnJhbWVfMC5maWx0ZXIgPSBSKGUudXNlRmlsdGVyLCBvLmNsb25lKGkuZnJhbWVfMC5maWx0ZXIpKSwgaSkgdm9pZCAwICE9PSBpW2FdLmZpbHRlciAmJiAiZnJhbWVfMSIgIT09IGEgJiYgImZyYW1lXzAiICE9PSBhICYmIChpW2FdLmZpbHRlciA9IG8uY2xvbmUoaVthXS5maWx0ZXIpLCBpW2FdLmZpbHRlciA9IFIoZS51c2VGaWx0ZXIsIG8uY2xvbmUoaVthXS5maWx0ZXIpKSk7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IGkuZnJhbWVfMC5maWx0ZXIgJiYgKGkuZnJhbWVfMS5maWx0ZXIgPSBvLmNsb25lKGkuZnJhbWVfMS5maWx0ZXIpLCB2b2lkIDAgIT09IGkuZnJhbWVfMC5maWx0ZXIuYmx1ciAmJiAwICE9PSBpLmZyYW1lXzEuZmlsdGVyLmJsdXIgJiYgKGkuZnJhbWVfMS5maWx0ZXIuYmx1ciA9IHZvaWQgMCA9PT0gaS5mcmFtZV8xLmZpbHRlci5ibHVyID8gMCA6IGkuZnJhbWVfMS5maWx0ZXIuYmx1ciksIHZvaWQgMCAhPT0gaS5mcmFtZV8wLmZpbHRlci5icmlnaHRuZXNzICYmIDEwMCAhPT0gaS5mcmFtZV8xLmZpbHRlci5icmlnaHRuZXNzICYmIChpLmZyYW1lXzEuZmlsdGVyLmJyaWdodG5lc3MgPSB2b2lkIDAgPT09IGkuZnJhbWVfMS5maWx0ZXIuYnJpZ2h0bmVzcyA/IDEwMCA6IGkuZnJhbWVfMS5maWx0ZXIuYnJpZ2h0bmVzcyksIHZvaWQgMCAhPT0gaS5mcmFtZV8wLmZpbHRlci5ncmF5c2NhbGUgJiYgMCAhPT0gaS5mcmFtZV8xLmZpbHRlci5ncmF5c2NhbGUgJiYgKGkuZnJhbWVfMS5maWx0ZXIuZ3JheXNjYWxlID0gdm9pZCAwID09PSBpLmZyYW1lXzEuZmlsdGVyLmdyYXlzY2FsZSA/IDAgOiBpLmZyYW1lXzEuZmlsdGVyLmdyYXlzY2FsZSksIHZvaWQgMCAhPT0gaS5mcmFtZV8wLmZpbHRlci5iX2JsdXIgJiYgMCAhPT0gaS5mcmFtZV8xLmZpbHRlci5iX2JsdXIgJiYgKGkuZnJhbWVfMS5maWx0ZXIuYl9ibHVyID0gdm9pZCAwID09PSBpLmZyYW1lXzEuZmlsdGVyLmJfYmx1ciA/IDAgOiBpLmZyYW1lXzEuZmlsdGVyLmJfYmx1ciksIHZvaWQgMCAhPT0gaS5mcmFtZV8wLmZpbHRlci5iX2JyaWdodG5lc3MgJiYgMTAwICE9PSBpLmZyYW1lXzEuZmlsdGVyLmJfYnJpZ2h0bmVzcyAmJiAoaS5mcmFtZV8xLmZpbHRlci5iX2JyaWdodG5lc3MgPSB2b2lkIDAgPT09IGkuZnJhbWVfMS5maWx0ZXIuYl9icmlnaHRuZXNzID8gMTAwIDogaS5mcmFtZV8xLmZpbHRlci5iX2JyaWdodG5lc3MpLCB2b2lkIDAgIT09IGkuZnJhbWVfMC5maWx0ZXIuYl9ncmF5c2NhbGUgJiYgMCAhPT0gaS5mcmFtZV8xLmZpbHRlci5iX2dyYXlzY2FsZSAmJiAoaS5mcmFtZV8xLmZpbHRlci5iX2dyYXlzY2FsZSA9IHZvaWQgMCA9PT0gaS5mcmFtZV8xLmZpbHRlci5iX2dyYXlzY2FsZSA/IDAgOiBpLmZyYW1lXzEuZmlsdGVyLmJfZ3JheXNjYWxlKSwgdm9pZCAwICE9PSBpLmZyYW1lXzAuZmlsdGVyLmJfaW52ZXJ0ICYmIDAgIT09IGkuZnJhbWVfMS5maWx0ZXIuYl9pbnZlcnQgJiYgKGkuZnJhbWVfMS5maWx0ZXIuYl9pbnZlcnQgPSB2b2lkIDAgPT09IGkuZnJhbWVfMS5maWx0ZXIuYl9pbnZlcnQgPyAwIDogaS5mcmFtZV8xLmZpbHRlci5iX2ludmVydCksIHZvaWQgMCAhPT0gaS5mcmFtZV8wLmZpbHRlci5iX3NlcGlhICYmIDAgIT09IGkuZnJhbWVfMS5maWx0ZXIuYl9zZXBpYSAmJiAoaS5mcmFtZV8xLmZpbHRlci5iX3NlcGlhID0gdm9pZCAwID09PSBpLmZyYW1lXzEuZmlsdGVyLmJfc2VwaWEgPyAwIDogaS5mcmFtZV8xLmZpbHRlci5iX3NlcGlhKSksIFQoaSwgdCwgZSkKICAgICAgICB9LAogICAgICAgIFIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlLmJsdXIgPyB0LmJsdXIgPSB2b2lkIDAgPT09IHQuYmx1ciA/IDAgOiB0LmJsdXIgOiBkZWxldGUgdC5ibHVyLCBlLmJyaWdodG5lc3MgPyB0LmJyaWdodG5lc3MgPSB2b2lkIDAgPT09IHQuYnJpZ2h0bmVzcyA/IDEwMCA6IHQuYnJpZ2h0bmVzcyA6IGRlbGV0ZSB0LmJyaWdodG5lc3MsIGUuZ3JheXNjYWxlID8gdC5ncmF5c2NhbGUgPSB2b2lkIDAgPT09IHQuZ3JheXNjYWxlID8gMCA6IHQuZ3JheXNjYWxlIDogZGVsZXRlIHQuZ3JheXNjYWxlLCBlLmJfYmx1ciA/IHQuYl9ibHVyID0gdm9pZCAwID09PSB0LmJfYmx1ciA/IDAgOiB0LmJfYmx1ciA6IGRlbGV0ZSB0LmJfYmx1ciwgZS5iX2JyaWdodG5lc3MgPyB0LmJfYnJpZ2h0bmVzcyA9IHZvaWQgMCA9PT0gdC5iX2JyaWdodG5lc3MgPyAxMDAgOiB0LmJfYnJpZ2h0bmVzcyA6IGRlbGV0ZSB0LmJfYnJpZ2h0bmVzcywgZS5iX2dyYXlzY2FsZSA/IHQuYl9ncmF5c2NhbGUgPSB2b2lkIDAgPT09IHQuYl9ncmF5c2NhbGUgPyAwIDogdC5iX2dyYXlzY2FsZSA6IGRlbGV0ZSB0LmJfZ3JheXNjYWxlLCBlLmJfaW52ZXJ0ID8gdC5iX2ludmVydCA9IHZvaWQgMCA9PT0gdC5iX2ludmVydCA/IDAgOiB0LmJfaW52ZXJ0IDogZGVsZXRlIHQuYl9pbnZlcnQsIGUuYl9zZXBpYSA/IHQuYl9zZXBpYSA9IHZvaWQgMCA9PT0gdC5iX3NlcGlhID8gMCA6IHQuYl9zZXBpYSA6IGRlbGV0ZSB0LmJfc2VwaWEsIHQKICAgICAgICB9LAogICAgICAgIE8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlLmJsdXIgPSAhMCA9PT0gZS5ibHVyIHx8IHZvaWQgMCAhPT0gdC5ibHVyICYmIDAgIT09IHQuYmx1ciAmJiAiMHB4IiAhPT0gdC5ibHVyLCBlLmdyYXlzY2FsZSA9ICEwID09PSBlLmdyYXlzY2FsZSB8fCB2b2lkIDAgIT09IHQuZ3JheXNjYWxlICYmIDAgIT09IHQuZ3JheXNjYWxlICYmICIwJSIgIT09IHQuZ3JheXNjYWxlLCBlLmJyaWdodG5lc3MgPSAhMCA9PT0gZS5icmlnaHRuZXNzIHx8IHZvaWQgMCAhPT0gdC5icmlnaHRuZXNzICYmIDEwMCAhPT0gdC5icmlnaHRuZXNzICYmICIxMDAlIiAhPT0gdC5icmlnaHRuZXNzLCBlLmJfYmx1ciA9ICEwID09PSBlLmJfYmx1ciB8fCB2b2lkIDAgIT09IHQuYl9ibHVyICYmIDAgIT09IHQuYl9ibHVyICYmICIwcHgiICE9PSB0LmJfYmx1ciwgZS5iX2dyYXlzY2FsZSA9ICEwID09PSBlLmJfZ3JheXNjYWxlIHx8IHZvaWQgMCAhPT0gdC5iX2dyYXlzY2FsZSAmJiAwICE9PSB0LmJfZ3JheXNjYWxlICYmICIwJSIgIT09IHQuYl9ncmF5c2NhbGUsIGUuYl9icmlnaHRuZXNzID0gITAgPT09IGUuYl9icmlnaHRuZXNzIHx8IHZvaWQgMCAhPT0gdC5iX2JyaWdodG5lc3MgJiYgMTAwICE9PSB0LmJfYnJpZ2h0bmVzcyAmJiAiMTAwJSIgIT09IHQuYl9icmlnaHRuZXNzLCBlLmJfaW52ZXJ0ID0gITAgPT09IGUuYl9pbnZlcnQgfHwgdm9pZCAwICE9PSB0LmJfaW52ZXJ0ICYmIDAgIT09IHQuYl9pbnZlcnQgJiYgIjAlIiAhPT0gdC5iX2ludmVydCwgZS5iX3NlcGlhID0gITAgPT09IGUuYl9zZXBpYSB8fCB2b2lkIDAgIT09IHQuYl9zZXBpYSAmJiAwICE9PSB0LmJfc2VwaWEgJiYgIjAlIiAhPT0gdC5iX3NlcGlhLCBlCiAgICAgICAgfSwKICAgICAgICBJID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBlICYmICh2b2lkIDAgIT09IGUucm90YXRpb25ZIHx8IHZvaWQgMCAhPT0gZS5yb3RhdGlvblggfHwgdm9pZCAwICE9PSBlLnopCiAgICAgICAgfSwKICAgICAgICBUID0gZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICB2YXIgYSwgciA9IHt9LAogICAgICAgICAgICAgICAgcyA9IFsidHJhbnNmb3JtIiwgIndvcmRzIiwgImNoYXJzIiwgImxpbmVzIiwgIm1hc2siXSwKICAgICAgICAgICAgICAgIG4gPSAiZ2xvYmFsIiA9PSBvW3RdLnBlcnNwZWN0aXZlVHlwZSA/IG9bdF0ucGVyc3BlY3RpdmUgOiAwLAogICAgICAgICAgICAgICAgZCA9ICEwLAogICAgICAgICAgICAgICAgbCA9ICExOwogICAgICAgICAgICBmb3IgKHZhciBjIGluIGUpICJsb29wIiAhPT0gYyAmJiAiZnJhbWVfaG92ZXIiICE9PSBjICYmIChyID0galF1ZXJ5LmV4dGVuZCghMCwgciwgZVtjXSkpOwogICAgICAgICAgICBmb3IgKHZhciBjIGluIGUpCiAgICAgICAgICAgICAgICBpZiAoZS5oYXNPd25Qcm9wZXJ0eShjKSAmJiAodm9pZCAwICE9PSBlW2NdLnRpbWVsaW5lICYmIChlW2NdLnRpbWVsaW5lLnVzZVBlcnNwZWN0aXZlID0gITEpLCAibG9vcCIgIT09IGMgJiYgImZyYW1lX2hvdmVyIiAhPT0gYykpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGEgaW4gci50cmFuc2Zvcm0pIHIudHJhbnNmb3JtLmhhc093blByb3BlcnR5KGEpICYmIChyLnRyYW5zZm9ybVthXSA9IHZvaWQgMCA9PT0gZVtjXS50cmFuc2Zvcm1bYV0gPyAiZnJhbWVfMCIgPT09IGMgPyB3aW5kb3cucmRGMC50cmFuc2Zvcm1bYV0gOiAiZnJhbWVfMSIgPT09IGMgPyB3aW5kb3cucmRGMS50cmFuc2Zvcm1bYV0gOiByLnRyYW5zZm9ybVthXSA6IGVbY10udHJhbnNmb3JtW2FdLCBlW2NdLnRyYW5zZm9ybVthXSA9IHZvaWQgMCA9PT0gZVtjXS50cmFuc2Zvcm1bYV0gPyByLnRyYW5zZm9ybVthXSA6IGVbY10udHJhbnNmb3JtW2FdKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gMTsgcCA8PSA0OyBwKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSBpbiByW3NbcF1dKSByW3NbcF1dLmhhc093blByb3BlcnR5KGEpICYmIChlW2NdW3NbcF1dID0gdm9pZCAwID09PSBlW2NdW3NbcF1dID8ge30gOiBlW2NdW3NbcF1dLCByW3NbcF1dW2FdID0gdm9pZCAwID09PSBlW2NdW3NbcF1dW2FdID8gImZyYW1lXzAiID09PSBjID8gd2luZG93LnJkRjBbc1twXV1bYV0gOiAiZnJhbWVfMSIgPT09IGMgPyB3aW5kb3cucmRGMVtzW3BdXVthXSA6IHJbc1twXV1bYV0gOiBlW2NdW3NbcF1dW2FdLCBlW2NdW3NbcF1dW2FdID0gdm9pZCAwID09PSBlW2NdW3NbcF1dW2FdID8gcltzW3BdXVthXSA6IGVbY11bc1twXV1bYV0pOwogICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gZVtjXS50aW1lbGluZSAmJiAhMSA9PT0gZVtjXS50aW1lbGluZS51c2VQZXJzcGVjdGl2ZSAmJiB2b2lkIDAgIT09IGVbY10udHJhbnNmb3JtICYmICh2b2lkIDAgIT09IGVbY10udHJhbnNmb3JtLnJvdGF0aW9uWSB8fCB2b2lkIDAgIT09IGVbY10udHJhbnNmb3JtLnJvdGF0aW9uWCB8fCB2b2lkIDAgIT09IGVbY10udHJhbnNmb3JtLnogfHwgSShlW2NdLmNoYXJzKSB8fCBJKGVbY10ud29yZHMpIHx8IEkoZVtjXS5saW5lcykpICYmIChuID0gImxvY2FsIiA9PSBvW3RdLnBlcnNwZWN0aXZlVHlwZSA/IHZvaWQgMCA9PT0gZVtjXS50cmFuc2Zvcm0udHJhbnNmb3JtUGVyc3BlY3RpdmUgPyA2MDAgOiBlW2NdLnRyYW5zZm9ybS50cmFuc2Zvcm1QZXJzcGVjdGl2ZSA6IG4sIGVbY10udGltZWxpbmUudXNlUGVyc3BlY3RpdmUgPSAhMCwgKEkoZVtjXS5jaGFycykgfHwgSShlW2NdLndvcmRzKSB8fCBJKGVbY10ubGluZXMpKSAmJiAhby5pc0ZpcmVmb3godCkgJiYgKGwgPSAhMCksIGQgPSAhMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGwgJiYgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRwR1MuZ3NhcC5zZXQoaS5jLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVN0eWxlOiAicHJlc2VydmUtM2QiCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pLCB2b2lkIDAgIT09IGUuZnJhbWVfMC50aW1lbGluZSAmJiBlLmZyYW1lXzAudGltZWxpbmUudXNlUGVyc3BlY3RpdmUgJiYgKGUuZnJhbWVfMC50cmFuc2Zvcm0udHJhbnNmb3JtUGVyc3BlY3RpdmUgPSAibG9jYWwiID09PSBvW3RdLnBlcnNwZWN0aXZlVHlwZSA/IHZvaWQgMCA9PT0gZS5mcmFtZV8wLnRyYW5zZm9ybS50cmFuc2Zvcm1QZXJzcGVjdGl2ZSA/IG4gOiBlLmZyYW1lXzAudHJhbnNmb3JtLnRyYW5zZm9ybVBlcnNwZWN0aXZlIDogImlzb21ldHJpYyIgPT09IG9bdF0ucGVyc3BlY3RpdmVUeXBlID8gMCA6IG9bdF0ucGVyc3BlY3RpdmUpLCBkKQogICAgICAgICAgICAgICAgZm9yICh2YXIgYyBpbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmhhc093blByb3BlcnR5KGMpIHx8IHZvaWQgMCA9PT0gZVtjXS50cmFuc2Zvcm0pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlW2NdLnRyYW5zZm9ybS50cmFuc2Zvcm1QZXJzcGVjdGl2ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0sCiAgICAgICAgQyA9IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgaWYgKDAgPT09IGUubGVuZ3RoKSByZXR1cm4ge307CiAgICAgICAgICAgIGZvciAodmFyIGEgPSBlWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodCksIHIgPSB7fSwgbyA9IDA7IG8gPCBhLmxlbmd0aDsgbysrKSB2b2lkIDAgIT09IGkgJiYgLTEgIT09IGFbb10uY2xhc3NOYW1lLmluZGV4T2YoaSkgfHwgKHJbYVtvXS5pZF0gPSBhW29dKTsKICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gZVsxXSkKICAgICAgICAgICAgICAgIGZvciAoYSA9IGVbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0KSwgbyA9IDA7IG8gPCBhLmxlbmd0aDsgbysrKSB2b2lkIDAgIT09IGkgJiYgLTEgIT09IGFbb10uY2xhc3NOYW1lLmluZGV4T2YoaSkgfHwgKHJbYVtvXS5pZF0gPSBhW29dKTsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9LAogICAgICAgIEEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAidGhpbiIgPT09IChlID0gby5pc051bWVyaWMoZSkgPyBlIDogZS50b0xvd2VyQ2FzZSgpKSA/ICIwMCIgOiAiZXh0cmEgbGlnaHQiID09PSBlID8gMjAwIDogImxpZ2h0IiA9PT0gZSA/IDMwMCA6ICJub3JtYWwiID09PSBlID8gNDAwIDogIm1lZGl1bSIgPT09IGUgPyA1MDAgOiAic2VtaSBib2xkIiA9PT0gZSA/IDYwMCA6ICJib2xkIiA9PT0gZSA/IDcwMCA6ICJleHRyYSBib2xkIiA9PT0gZSA/IDgwMCA6ICJ1bHRyYSBib2xkIiA9PT0gZSA/IDkwMCA6ICJibGFjayIgPT09IGUgPyA5MDAgOiBlCiAgICAgICAgfSwKICAgICAgICBNID0gZnVuY3Rpb24oZSwgdCwgcykgewogICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgaWYgKCJCUiIgPT0gZVswXS5ub2RlTmFtZSB8fCAiYnIiID09IGVbMF0udGFnTmFtZSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgZVswXS5jbGFzc05hbWUgJiYgZVswXS5jbGFzc05hbWUuaW5kZXhPZigicnNfc3BsaXR0ZWRfIikgPj0gMCkgcmV0dXJuICExOwogICAgICAgICAgICBvLnNBKGVbMF0sICJzdHlsZXJlY29yZGVyIiwgITApLCB2b2lkIDAgPT09IGVbMF0uaWQgJiYgKGVbMF0uaWQgPSAicnMtbGF5ZXItc3ViLSIgKyBNYXRoLnJvdW5kKDFlNiAqIE1hdGgucmFuZG9tKCkpKSwgb1tzXS5jb21wdXRlZFN0eWxlW2VbMF0uaWRdID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZVswXSwgbnVsbCk7CiAgICAgICAgICAgIHZhciBkID0gdm9pZCAwICE9PSBlWzBdLmlkICYmIHZvaWQgMCAhPT0gb1tzXS5fTFtlWzBdLmlkXSA/IG9bc10uX0xbZVswXS5pZF0gOiBlLmRhdGEoKSwKICAgICAgICAgICAgICAgIGwgPSAicmVrdXJzaXZlIiA9PT0gdCA/IGpRdWVyeShvLmNsb3Nlc3RDbGFzcyhlWzBdLCAicnMtbGF5ZXIiKSkgOiB2b2lkIDA7CiAgICAgICAgICAgIHZvaWQgMCAhPT0gbCAmJiAob1tzXS5jb21wdXRlZFN0eWxlW2xbMF0uaWRdID0gdm9pZCAwID09PSBvW3NdLmNvbXB1dGVkU3R5bGVbbFswXS5pZF0gPyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShsWzBdLCBudWxsKSA6IG9bc10uY29tcHV0ZWRTdHlsZVtsWzBdLmlkXSk7CiAgICAgICAgICAgIHZhciBjID0gdm9pZCAwICE9PSBsICYmIG9bc10uY29tcHV0ZWRTdHlsZVtlWzBdLmlkXS5mb250U2l6ZSA9PSBvW3NdLmNvbXB1dGVkU3R5bGVbbFswXS5pZF0uZm9udFNpemUgJiYgQShvW3NdLmNvbXB1dGVkU3R5bGVbZVswXS5pZF0uZm9udFdlaWdodCkgPT0gQShvW3NdLmNvbXB1dGVkU3R5bGVbbFswXS5pZF0uZm9udFdlaWdodCkgJiYgb1tzXS5jb21wdXRlZFN0eWxlW2VbMF0uaWRdLmxpbmVIZWlnaHQgPT0gb1tzXS5jb21wdXRlZFN0eWxlW2xbMF0uaWRdLmxpbmVIZWlnaHQsCiAgICAgICAgICAgICAgICBwID0gYyA/IHZvaWQgMCAhPT0gbFswXS5pZCAmJiB2b2lkIDAgIT09IG9bc10uX0xbbFswXS5pZF0gPyBvW3NdLl9MW2xbMF0uaWRdIDogbC5kYXRhKCkgOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBnID0gMDsKICAgICAgICAgICAgZm9yIChkLmJhc2VhbGlnbiA9IHZvaWQgMCA9PT0gZC5iYXNlYWxpZ24gPyAiZ3JpZCIgOiBkLmJhc2VhbGlnbiwgZC5faXNub3RleHQgfHwgKGQuZm9udFNpemUgPSBvLnJldlRvUmVzcChjID8gdm9pZCAwID09PSBwLmZvbnRzaXplID8gcGFyc2VJbnQob1tzXS5jb21wdXRlZFN0eWxlW2xbMF0uaWRdLmZvbnRTaXplLCAwKSB8fCAyMCA6IHAuZm9udHNpemUgOiB2b2lkIDAgPT09IGQuZm9udHNpemUgPyAicmVrdXJzaXZlIiAhPT0gdCA/IDIwIDogImluaGVyaXQiIDogZC5mb250c2l6ZSwgb1tzXS5ybGUpLCBkLmZvbnRXZWlnaHQgPSBvLnJldlRvUmVzcChjID8gdm9pZCAwID09PSBwLmZvbnR3ZWlnaHQgPyBvW3NdLmNvbXB1dGVkU3R5bGVbbFswXS5pZF0uZm9udFdlaWdodCB8fCAiaW5oZXJpdCIgOiBwLmZvbnR3ZWlnaHQgOiB2b2lkIDAgPT09IGQuZm9udHdlaWdodCA/IG9bc10uY29tcHV0ZWRTdHlsZVtlWzBdLmlkXS5mb250V2VpZ2h0IHx8ICJpbmhlcml0IiA6IGQuZm9udHdlaWdodCwgb1tzXS5ybGUpLCBkLndoaXRlU3BhY2UgPSBvLnJldlRvUmVzcChjID8gdm9pZCAwID09PSBwLndoaXRlc3BhY2UgPyAibm93cmFwIiA6IHAud2hpdGVzcGFjZSA6IHZvaWQgMCA9PT0gZC53aGl0ZXNwYWNlID8gIm5vd3JhcCIgOiBkLndoaXRlc3BhY2UsIG9bc10ucmxlKSwgZC50ZXh0QWxpZ24gPSBvLnJldlRvUmVzcChjID8gdm9pZCAwID09PSBwLnRleHRhbGlnbiA/ICJsZWZ0IiA6IHAudGV4dGFsaWduIDogdm9pZCAwID09PSBkLnRleHRhbGlnbiA/ICJsZWZ0IiA6IGQudGV4dGFsaWduLCBvW3NdLnJsZSksIGQubGV0dGVyU3BhY2luZyA9IG8ucmV2VG9SZXNwKGMgPyB2b2lkIDAgPT09IHAubGV0dGVyc3BhY2luZyA/IHBhcnNlSW50KG9bc10uY29tcHV0ZWRTdHlsZVtsWzBdLmlkXS5sZXR0ZXJTcGFjaW5nLCAwKSB8fCAiaW5oZXJpdCIgOiBwLmxldHRlcnNwYWNpbmcgOiB2b2lkIDAgPT09IGQubGV0dGVyc3BhY2luZyA/IHBhcnNlSW50KCJub3JtYWwiID09PSBvW3NdLmNvbXB1dGVkU3R5bGVbZVswXS5pZF0ubGV0dGVyU3BhY2luZyA/IDAgOiBvW3NdLmNvbXB1dGVkU3R5bGVbZVswXS5pZF0ubGV0dGVyU3BhY2luZywgMCkgfHwgImluaGVyaXQiIDogZC5sZXR0ZXJzcGFjaW5nLCBvW3NdLnJsZSksIGQudGV4dERlY29yYXRpb24gPSBjID8gdm9pZCAwID09PSBwLnRleHREZWNvcmF0aW9uID8gIm5vbmUiIDogcC50ZXh0RGVjb3JhdGlvbiA6IHZvaWQgMCA9PT0gZC50ZXh0RGVjb3JhdGlvbiA/ICJub25lIiA6IGQudGV4dERlY29yYXRpb24sIGcgPSAyNSwgZyA9IHZvaWQgMCAhPT0gbCAmJiAiSSIgPT09IGVbMF0udGFnTmFtZSA/ICJpbmhlcml0IiA6IGcsIHZvaWQgMCAhPT0gZC50c2hhZG93ICYmIChkLnRzaGFkb3cuYiA9IG8ucmV2VG9SZXNwKGQudHNoYWRvdy5iLCBvW3NdLnJsZSksIGQudHNoYWRvdy5oID0gby5yZXZUb1Jlc3AoZC50c2hhZG93LmgsIG9bc10ucmxlKSwgZC50c2hhZG93LnYgPSBvLnJldlRvUmVzcChkLnRzaGFkb3cudiwgb1tzXS5ybGUpKSksIHZvaWQgMCAhPT0gZC5ic2hhZG93ICYmIChkLmJzaGFkb3cuYiA9IG8ucmV2VG9SZXNwKGQuYnNoYWRvdy5iLCBvW3NdLnJsZSksIGQuYnNoYWRvdy5oID0gby5yZXZUb1Jlc3AoZC5ic2hhZG93LmgsIG9bc10ucmxlKSwgZC5ic2hhZG93LnYgPSBvLnJldlRvUmVzcChkLmJzaGFkb3cudiwgb1tzXS5ybGUpLCBkLmJzaGFkb3cucyA9IG8ucmV2VG9SZXNwKGQuYnNoYWRvdy5zLCBvW3NdLnJsZSkpLCB2b2lkIDAgIT09IGQudHN0cm9rZSAmJiAoZC50c3Ryb2tlLncgPSBvLnJldlRvUmVzcChkLnRzdHJva2Uudywgb1tzXS5ybGUpKSwgZC5kaXNwbGF5ID0gYyA/IHZvaWQgMCA9PT0gcC5kaXNwbGF5ID8gb1tzXS5jb21wdXRlZFN0eWxlW2xbMF0uaWRdLmRpc3BsYXkgOiBwLmRpc3BsYXkgOiB2b2lkIDAgPT09IGQuZGlzcGxheSA/IG9bc10uY29tcHV0ZWRTdHlsZVtlWzBdLmlkXS5kaXNwbGF5IDogZC5kaXNwbGF5LCBkLmZsb2F0ID0gby5yZXZUb1Jlc3AoYyA/IHZvaWQgMCA9PT0gcC5mbG9hdCA/IG9bc10uY29tcHV0ZWRTdHlsZVtsWzBdLmlkXS5mbG9hdCB8fCAibm9uZSIgOiBwLmZsb2F0IDogdm9pZCAwID09PSBkLmZsb2F0ID8gIm5vbmUiIDogZC5mbG9hdCwgb1tzXS5ybGUpLCBkLmNsZWFyID0gby5yZXZUb1Jlc3AoYyA/IHZvaWQgMCA9PT0gcC5jbGVhciA/IG9bc10uY29tcHV0ZWRTdHlsZVtsWzBdLmlkXS5jbGVhciB8fCAibm9uZSIgOiBwLmNsZWFyIDogdm9pZCAwID09PSBkLmNsZWFyID8gIm5vbmUiIDogZC5jbGVhciwgb1tzXS5ybGUpLCBkLmxpbmVIZWlnaHQgPSBvLnJldlRvUmVzcChlLmlzKCJpbWciKSB8fCAtMSAhPSBqUXVlcnkuaW5BcnJheShkLmxheWVydHlwZSwgWyJ2aWRlbyIsICJpbWFnZSIsICJhdWRpbyJdKSA/IGcgOiBjID8gdm9pZCAwID09PSBwLmxpbmVoZWlnaHQgPyBwYXJzZUludChvW3NdLmNvbXB1dGVkU3R5bGVbbFswXS5pZF0ubGluZUhlaWdodCwgMCkgfHwgZyA6IHAubGluZWhlaWdodCA6IHZvaWQgMCA9PT0gZC5saW5laGVpZ2h0ID8gZyA6IGQubGluZWhlaWdodCwgb1tzXS5ybGUpLCBkLnpJbmRleCA9IGMgPyB2b2lkIDAgPT09IHAuemluZGV4ID8gcGFyc2VJbnQob1tzXS5jb21wdXRlZFN0eWxlW2xbMF0uaWRdLnpJbmRleCwgMCkgfHwgImluaGVyaXQiIDogcC56aW5kZXggOiB2b2lkIDAgPT09IGQuemluZGV4ID8gcGFyc2VJbnQob1tzXS5jb21wdXRlZFN0eWxlW2VbMF0uaWRdLnpJbmRleCwgMCkgfHwgImluaGVyaXQiIDogZC56aW5kZXgsIG4gPSAwOyBuIDwgNDsgbisrKSBkWyJwYWRkaW5nIiArIGlbbl1dID0gby5yZXZUb1Jlc3Aodm9pZCAwID09PSBkWyJwYWRkaW5nIiArIHJbbl1dID8gcGFyc2VJbnQob1tzXS5jb21wdXRlZFN0eWxlW2VbMF0uaWRdWyJwYWRkaW5nIiArIGlbbl1dLCAwKSB8fCAwIDogZFsicGFkZGluZyIgKyByW25dXSwgb1tzXS5ybGUpLCBkWyJtYXJnaW4iICsgaVtuXV0gPSBvLnJldlRvUmVzcCh2b2lkIDAgPT09IGRbIm1hcmdpbiIgKyByW25dXSA/IHBhcnNlSW50KG9bc10uY29tcHV0ZWRTdHlsZVtlWzBdLmlkXVsibWFyZ2luIiArIGlbbl1dLCAwKSB8fCAwIDogZFsibWFyZ2luIiArIHJbbl1dLCBvW3NdLnJsZSksIGRbImJvcmRlciIgKyBpW25dICsgIldpZHRoIl0gPSB2b2lkIDAgPT09IGQuYm9yZGVyd2lkdGggPyBwYXJzZUludChvW3NdLmNvbXB1dGVkU3R5bGVbZVswXS5pZF1bImJvcmRlciIgKyBpW25dICsgIldpZHRoIl0sIDApIHx8IDAgOiBkLmJvcmRlcndpZHRoW25dLCBkWyJib3JkZXIiICsgaVtuXSArICJDb2xvciJdID0gdm9pZCAwID09PSBkLmJvcmRlcmNvbG9yID8gb1tzXS5jb21wdXRlZFN0eWxlW2VbMF0uaWRdWyJib3JkZXItIiArIHJbbl0gKyAiLWNvbG9yIl0gOiBkLmJvcmRlcmNvbG9yLCBkWyJib3JkZXIiICsgYVtuXSArICJSYWRpdXMiXSA9IG8ucmV2VG9SZXNwKHZvaWQgMCA9PT0gZC5ib3JkZXJyYWRpdXMgPyBvW3NdLmNvbXB1dGVkU3R5bGVbZVswXS5pZF1bImJvcmRlciIgKyBhW25dICsgIlJhZGl1cyJdIHx8IDAgOiBkLmJvcmRlcnJhZGl1c1tuXSwgb1tzXS5ybGUpOwogICAgICAgICAgICBmb3IgKGQuYm9yZGVyU3R5bGUgPSBvLnJldlRvUmVzcCh2b2lkIDAgPT09IGQuYm9yZGVyc3R5bGUgPyBvW3NdLmNvbXB1dGVkU3R5bGVbZVswXS5pZF0uYm9yZGVyU3R5bGUgfHwgMCA6IGQuYm9yZGVyc3R5bGUsIG9bc10ucmxlKSwgInJla3Vyc2l2ZSIgIT09IHQgPyAoZC5jb2xvciA9IG8ucmV2VG9SZXNwKHZvaWQgMCA9PT0gZC5jb2xvciA/ICIjZmZmZmZmIiA6IGQuY29sb3IsIG9bc10ucmxlLCB2b2lkIDAsICJ8fCIpLCBkLm1pbldpZHRoID0gby5yZXZUb1Jlc3Aodm9pZCAwID09PSBkLm1pbndpZHRoID8gcGFyc2VJbnQob1tzXS5jb21wdXRlZFN0eWxlW2VbMF0uaWRdLm1pbldpZHRoLCAwKSB8fCAwIDogZC5taW53aWR0aCwgb1tzXS5ybGUpLCBkLm1pbkhlaWdodCA9IG8ucmV2VG9SZXNwKHZvaWQgMCA9PT0gZC5taW5oZWlnaHQgPyBwYXJzZUludChvW3NdLmNvbXB1dGVkU3R5bGVbZVswXS5pZF0ubWluSGVpZ2h0LCAwKSB8fCAwIDogZC5taW5oZWlnaHQsIG9bc10ucmxlKSwgZC53aWR0aCA9IG8ucmV2VG9SZXNwKHZvaWQgMCA9PT0gZC53aWR0aCA/ICJhdXRvIiA6IG8uc21hcnRDb252ZXJ0RGl2cyhkLndpZHRoKSwgb1tzXS5ybGUpLCBkLmhlaWdodCA9IG8ucmV2VG9SZXNwKHZvaWQgMCA9PT0gZC5oZWlnaHQgPyAiYXV0byIgOiBvLnNtYXJ0Q29udmVydERpdnMoZC5oZWlnaHQpLCBvW3NdLnJsZSksIGQubWF4V2lkdGggPSBvLnJldlRvUmVzcCh2b2lkIDAgPT09IGQubWF4d2lkdGggPyBwYXJzZUludChvW3NdLmNvbXB1dGVkU3R5bGVbZVswXS5pZF0ubWF4V2lkdGgsIDApIHx8ICJub25lIiA6IGQubWF4d2lkdGgsIG9bc10ucmxlKSwgZC5tYXhIZWlnaHQgPSBvLnJldlRvUmVzcCgtMSAhPT0galF1ZXJ5LmluQXJyYXkoZC50eXBlLCBbImNvbHVtbiIsICJyb3ciXSkgPyAibm9uZSIgOiB2b2lkIDAgIT09IGQubWF4aGVpZ2h0ID8gcGFyc2VJbnQob1tzXS5jb21wdXRlZFN0eWxlW2VbMF0uaWRdLm1heEhlaWdodCwgMCkgfHwgIm5vbmUiIDogZC5tYXhoZWlnaHQsIG9bc10ucmxlKSkgOiAiaHRtbCIgPT09IGQubGF5ZXJ0eXBlICYmIChkLndpZHRoID0gby5yZXZUb1Jlc3AoZVswXS53aWR0aCwgb1tzXS5ybGUpLCBkLmhlaWdodCA9IG8ucmV2VG9SZXNwKGVbMF0uaGVpZ2h0LCBvW3NdLnJsZSkpLCBkLnN0eWxlUHJvcHMgPSB7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZVswXS5zdHlsZS5iYWNrZ3JvdW5kLAogICAgICAgICAgICAgICAgICAgICJiYWNrZ3JvdW5kLWNvbG9yIjogZVswXS5zdHlsZVsiYmFja2dyb3VuZC1jb2xvciJdLAogICAgICAgICAgICAgICAgICAgIGNvbG9yOiBlWzBdLnN0eWxlLmNvbG9yLAogICAgICAgICAgICAgICAgICAgIGN1cnNvcjogZVswXS5zdHlsZS5jdXJzb3IsCiAgICAgICAgICAgICAgICAgICAgImZvbnQtc3R5bGUiOiBlWzBdLnN0eWxlWyJmb250LXN0eWxlIl0KICAgICAgICAgICAgICAgIH0sIG51bGwgPT0gZC5ic2hhZG93ICYmIChkLnN0eWxlUHJvcHMuYm94U2hhZG93ID0gZVswXS5zdHlsZS5ib3hTaGFkb3cpLCAiIiAhPT0gZC5zdHlsZVByb3BzLmJhY2tncm91bmQgJiYgdm9pZCAwICE9PSBkLnN0eWxlUHJvcHMuYmFja2dyb3VuZCAmJiBkLnN0eWxlUHJvcHMuYmFja2dyb3VuZCAhPT0gZC5zdHlsZVByb3BzWyJiYWNrZ3JvdW5kLWNvbG9yIl0gfHwgZGVsZXRlIGQuc3R5bGVQcm9wcy5iYWNrZ3JvdW5kLCAiIiA9PSBkLnN0eWxlUHJvcHMuY29sb3IgJiYgKGQuc3R5bGVQcm9wcy5jb2xvciA9IG9bc10uY29tcHV0ZWRTdHlsZVtlWzBdLmlkXS5jb2xvciksIG4gPSAwOyBuIDwgNDsgbisrKSBQKGRbInBhZGRpbmciICsgaVtuXV0sIDApICYmIGRlbGV0ZSBkWyJwYWRkaW5nIiArIGlbbl1dLCBQKGRbIm1hcmdpbiIgKyBpW25dXSwgMCkgJiYgZGVsZXRlIGRbIm1hcmdpbiIgKyBpW25dXSwgUChkWyJib3JkZXIiICsgYVtuXSArICJSYWRpdXMiXSwgIjBweCIpID8gZGVsZXRlIGRbImJvcmRlciIgKyBhW25dICsgIlJhZGl1cyJdIDogUChkWyJib3JkZXIiICsgYVtuXSArICJSYWRpdXMiXSwgIjAiKSAmJiBkZWxldGUgZFsiYm9yZGVyIiArIGFbbl0gKyAiUmFkaXVzIl07CiAgICAgICAgICAgIGlmIChQKGQuYm9yZGVyU3R5bGUsICJub25lIikpCiAgICAgICAgICAgICAgICBmb3IgKGRlbGV0ZSBkLmJvcmRlclN0eWxlLCBuID0gMDsgbiA8IDQ7IG4rKykgZGVsZXRlIGRbImJvcmRlciIgKyBpW25dICsgIldpZHRoIl0sIGRlbGV0ZSBkWyJib3JkZXIiICsgaVtuXSArICJDb2xvciJdCiAgICAgICAgfSwKICAgICAgICBQID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdCA9PT0gZVswXSAmJiB0ID09PSBlWzFdICYmIHQgPT09IGVbMl0gJiYgdCA9PT0gZVszXQogICAgICAgIH0sCiAgICAgICAgQiA9IGZ1bmN0aW9uKGUsIHQsIGksIGEsIHIpIHsKICAgICAgICAgICAgdmFyIHMgPSBvLmlzTnVtZXJpYyhlKSB8fCB2b2lkIDAgPT09IGUgPyAiIiA6IGUuaW5kZXhPZigicHgiKSA+PSAwID8gInB4IiA6IGUuaW5kZXhPZigiJSIpID49IDAgPyAiJSIgOiAiIjsKICAgICAgICAgICAgcmV0dXJuIGUgPSBvLmlzTnVtZXJpYyhwYXJzZUludChlKSkgPyBwYXJzZUludChlKSA6IGUsIGUgPSBudWxsID09IChlID0gImZ1bGwiID09PSAoZSA9IG8uaXNOdW1lcmljKGUpID8gZSAqIHQgKyBzIDogZSkgPyBhIDogImF1dG8iID09PSBlIHx8ICJub25lIiA9PT0gZSA/IGkgOiBlKSA/IHIgOiBlCiAgICAgICAgfSwKICAgICAgICBEID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmIDAgIT09IHBhcnNlSW50KGUsIDApCiAgICAgICAgfSwKICAgICAgICB6ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgcywgbiwgZCwgbCwgYywgcCwgZywgdSwgaCwgbSA9IGUuYSwKICAgICAgICAgICAgICAgIHYgPSBlLmIsCiAgICAgICAgICAgICAgICBmID0gZS5jLAogICAgICAgICAgICAgICAgeSA9IGUuZCwKICAgICAgICAgICAgICAgIGIgPSBlLmUsCiAgICAgICAgICAgICAgICB3ID0ge30sCiAgICAgICAgICAgICAgICBfID0ge30sCiAgICAgICAgICAgICAgICBTID0gb1t2XS5fTFttWzBdLmlkXSwKICAgICAgICAgICAgICAgIHggPSBtWzBdLmNsYXNzTmFtZTsKICAgICAgICAgICAgaWYgKFMgPSB2b2lkIDAgPT09IFMgPyB7fSA6IFMsICJvYmplY3QiID09IHR5cGVvZiB4ICYmICh4ID0gIiIpLCB2b2lkIDAgIT09IG0gJiYgdm9pZCAwICE9PSBtWzBdICYmICh4LmluZGV4T2YoInJzX3NwbGl0dGVkIikgPj0gMCB8fCAiQlIiID09IG1bMF0ubm9kZU5hbWUgfHwgImJyIiA9PSBtWzBdLnRhZ05hbWUgfHwgbVswXS50YWdOYW1lLmluZGV4T2YoIkZDUiIpID4gMCB8fCBtWzBdLnRhZ05hbWUuaW5kZXhPZigiQkNSIikgPiAwKSkgcmV0dXJuICExOwogICAgICAgICAgICBiID0gImluZGl2aWR1YWwiID09PSBiID8gUy5zbGlkZUluZGV4IDogYjsKICAgICAgICAgICAgZSA9IGZ1bmN0aW9uKGUsIHQsIHIpIHsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIkJSIiA9PSBlWzBdLm5vZGVOYW1lIHx8ICJiciIgPT0gZVswXS50YWdOYW1lKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMsIG4gPSBvW3RdLmxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdm9pZCAwICE9PSBlWzBdICYmIHZvaWQgMCAhPT0gZVswXS5pZCAmJiB2b2lkIDAgIT09IG9bdF0uX0xbZVswXS5pZF0gPyBvW3RdLl9MW2VbMF0uaWRdIDogZS5kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSAoZCA9IHZvaWQgMCA9PT0gZC5iYXNlYWxpZ24gPyByLmRhdGEoKSA6IGQpLl9pc25vdGV4dCAmJiAoZC5faXNub3RleHQgPSB2b2lkIDAgIT09IHIgJiYgdm9pZCAwICE9PSByWzBdICYmIHJbMF0ubGVuZ3RoID4gMCA/IG8uZ0EoclswXSwgIl9pc25vdGV4dCIpIDogZC5faXNub3RleHQpOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gewogICAgICAgICAgICAgICAgICAgICAgICBiYXNlYWxpZ246IHZvaWQgMCA9PT0gZC5iYXNlYWxpZ24gPyAiZ3JpZCIgOiBkLmJhc2VhbGlnbiwKICAgICAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogdm9pZCAwID09PSBkLmJhc2VhbGlnbiA/ICJpbmhlcml0IiA6IHBhcnNlSW50KGQubGluZUhlaWdodFtuXSksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2b2lkIDAgPT09IGQuY29sb3IgPyB2b2lkIDAgOiBkLmNvbG9yW25dLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdm9pZCAwID09PSBkLndpZHRoID8gdm9pZCAwIDogImEiID09PSBkLndpZHRoW25dID8gImF1dG8iIDogZC53aWR0aFtuXSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB2b2lkIDAgPT09IGQuaGVpZ2h0ID8gdm9pZCAwIDogImEiID09PSBkLmhlaWdodFtuXSA/ICJhdXRvIiA6IGQuaGVpZ2h0W25dLAogICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogdm9pZCAwID09PSBkLm1pbldpZHRoID8gdm9pZCAwIDogIm4iID09PSBkLm1pbldpZHRoW25dID8gIm5vbmUiIDogZC5taW5XaWR0aFtuXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiB2b2lkIDAgPT09IGQubWluSGVpZ2h0ID8gdm9pZCAwIDogIm4iID09IGQubWluSGVpZ2h0W25dID8gIm5vbmUiIDogZC5taW5IZWlnaHRbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiB2b2lkIDAgPT09IGQubWF4V2lkdGggPyB2b2lkIDAgOiAibiIgPT0gZC5tYXhXaWR0aFtuXSA/ICJub25lIiA6IGQubWF4V2lkdGhbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogdm9pZCAwID09PSBkLm1heEhlaWdodCA/IHZvaWQgMCA6ICJuIiA9PSBkLm1heEhlaWdodFtuXSA/ICJub25lIiA6IGQubWF4SGVpZ2h0W25dLAogICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogZC5mbG9hdFtuXSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI6IGQuY2xlYXJbbl0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGZvciAoZC5ib3JkZXJTdHlsZSAmJiAobC5ib3JkZXJTdHlsZSA9IGQuYm9yZGVyU3R5bGVbbl0pLCBzID0gMDsgcyA8IDQ7IHMrKykgZFsicGFkZGluZyIgKyBpW3NdXSAmJiAobFsicGFkZGluZyIgKyBpW3NdXSA9IGRbInBhZGRpbmciICsgaVtzXV1bbl0pLCBkWyJtYXJnaW4iICsgaVtzXV0gJiYgKGxbIm1hcmdpbiIgKyBpW3NdXSA9IHBhcnNlSW50KGRbIm1hcmdpbiIgKyBpW3NdXVtuXSkpLCBkWyJib3JkZXIiICsgYVtzXSArICJSYWRpdXMiXSAmJiAobFsiYm9yZGVyIiArIGFbc10gKyAiUmFkaXVzIl0gPSBkWyJib3JkZXIiICsgYVtzXSArICJSYWRpdXMiXVtuXSksIGRbImJvcmRlciIgKyBpW3NdICsgIkNvbG9yIl0gJiYgKGxbImJvcmRlciIgKyBpW3NdICsgIkNvbG9yIl0gPSBkWyJib3JkZXIiICsgaVtzXSArICJDb2xvciJdKSwgZFsiYm9yZGVyIiArIGlbc10gKyAiV2lkdGgiXSAmJiAobFsiYm9yZGVyIiArIGlbc10gKyAiV2lkdGgiXSA9IHBhcnNlSW50KGRbImJvcmRlciIgKyBpW3NdICsgIldpZHRoIl0pKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5faXNub3RleHQgfHwgKGwudGV4dERlY29yYXRpb24gPSBkLnRleHREZWNvcmF0aW9uLCBsLmZvbnRTaXplID0gcGFyc2VJbnQoZC5mb250U2l6ZVtuXSksIGwuZm9udFdlaWdodCA9IHBhcnNlSW50KGQuZm9udFdlaWdodFtuXSksIGwubGV0dGVyU3BhY2luZyA9IHBhcnNlSW50KGQubGV0dGVyU3BhY2luZ1tuXSkgfHwgMCwgbC50ZXh0QWxpZ24gPSBkLnRleHRBbGlnbltuXSwgbC53aGl0ZVNwYWNlID0gZC53aGl0ZVNwYWNlW25dLCBsLndoaXRlU3BhY2UgPSAibm9ybWFsIiA9PT0gbC53aGl0ZVNwYWNlICYmICJhdXRvIiA9PT0gbC53aWR0aCAmJiAhMCAhPT0gZC5faW5jb2x1bW4gPyAibm93cmFwIiA6IGwud2hpdGVTcGFjZSwgbC5kaXNwbGF5ID0gZC5kaXNwbGF5LCB2b2lkIDAgIT09IGQudHNoYWRvdyAmJiAobC50ZXh0U2hhZG93ID0gcGFyc2VJbnQoZC50c2hhZG93Lmhbbl0sIDApICsgInB4ICIgKyBwYXJzZUludChkLnRzaGFkb3cudltuXSwgMCkgKyAicHggIiArIGQudHNoYWRvdy5iW25dICsgIiAiICsgZC50c2hhZG93LmMpLCB2b2lkIDAgIT09IGQudHN0cm9rZSAmJiAobC50ZXh0U3Ryb2tlID0gcGFyc2VJbnQoZC50c3Ryb2tlLndbbl0sIDApICsgInB4ICIgKyBkLnRzdHJva2UuYykpLCB2b2lkIDAgIT09IGQuYnNoYWRvdyAmJiAobC5ib3hTaGFkb3cgPSBwYXJzZUludChkLmJzaGFkb3cuaFtuXSwgMCkgKyAicHggIiArIHBhcnNlSW50KGQuYnNoYWRvdy52W25dLCAwKSArICJweCAiICsgcGFyc2VJbnQoZC5ic2hhZG93LmJbbl0sIDApICsgInB4ICIgKyBwYXJzZUludChkLmJzaGFkb3cuc1tuXSwgMCkgKyAicHggIiArIGQuYnNoYWRvdy5jKSwgbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KG0sIHYsIGUuUlNMKTsKICAgICAgICAgICAgdmFyIGssIEwgPSAib2ZmIiA9PT0geSA/IDEgOiBvW3ZdLkNNLnc7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IFMuX2lzbm90ZXh0ICYmIChTLl9pc25vdGV4dCA9IHZvaWQgMCAhPT0gZS5SU0wgJiYgdm9pZCAwICE9PSBlLlJTTFswXSAmJiBlLlJTTFswXS5sZW5ndGggPiAwID8gby5nQShlLlJTTFswXSwgIl9pc25vdGV4dCIpIDogUy5faXNub3RleHQpLCBTLk9CSlVQRCA9IG51bGwgPT0gUy5PQkpVUEQgPyB7fSA6IFMuT0JKVVBELCBTLmNhY2hlcyA9IG51bGwgPT0gUy5jYWNoZXMgPyB7fSA6IFMuY2FjaGVzLCAiY29sdW1uIiA9PT0gUy50eXBlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHMgPSB7fSwgayA9IHt9LCB0ID0gMDsgdCA8IDQ7IHQrKykgdm9pZCAwICE9PSBlWyJtYXJnaW4iICsgaVt0XV0gJiYgKHNbInBhZGRpbmciICsgaVt0XV0gPSBNYXRoLnJvdW5kKGVbIm1hcmdpbiIgKyBpW3RdXSAqIEwpICsgInB4Iiwga1sibWFyZ2luIiArIGlbdF1dID0gZVsibWFyZ2luIiArIGlbdF1dLCBkZWxldGUgZVsibWFyZ2luIiArIGlbdF1dKTsKICAgICAgICAgICAgICAgIGpRdWVyeS5pc0VtcHR5T2JqZWN0KHMpIHx8IHRwR1MuZ3NhcC5zZXQoUy5fY29sdW1uLCBzKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBSID0gby5jbG9uZShTLk9CSlVQRC5QT0JKKSwKICAgICAgICAgICAgICAgIE8gPSBvLmNsb25lKFMuT0JKVVBELkxQT0JKKTsKICAgICAgICAgICAgaWYgKC0xID09PSB4LmluZGV4T2YoInJzX3NwbGl0dGVkXyIpKSB7CiAgICAgICAgICAgICAgICBmb3IgKHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ3cml0ZTogImF1dG8iCiAgICAgICAgICAgICAgICAgICAgfSwgdCA9IDA7IHQgPCA0OyB0KyspIHZvaWQgMCAhPT0gZVsiYm9yZGVyIiArIGFbdF0gKyAiUmFkaXVzIl0gJiYgKHNbImJvcmRlciIgKyBhW3RdICsgIlJhZGl1cyJdID0gZVsiYm9yZGVyIiArIGFbdF0gKyAiUmFkaXVzIl0pLCB2b2lkIDAgIT09IGVbInBhZGRpbmciICsgaVt0XV0gJiYgKHNbInBhZGRpbmciICsgaVt0XV0gPSBNYXRoLnJvdW5kKGVbInBhZGRpbmciICsgaVt0XV0gKiBMKSArICJweCIpLCB2b2lkIDAgPT09IGVbIm1hcmdpbiIgKyBpW3RdXSB8fCBTLl9pbmNvbHVtbiB8fCAoc1sibWFyZ2luIiArIGlbdF1dID0gInJvdyIgPT09IFMudHlwZSA/IDAgOiBNYXRoLnJvdW5kKGVbIm1hcmdpbiIgKyBpW3RdXSAqIEwpICsgInB4Iik7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBTLnNwaWtlICYmIChzWyJjbGlwLXBhdGgiXSA9IHNbIi13ZWJraXQtY2xpcC1wYXRoIl0gPSBTLnNwaWtlKSwgZS5ib3hTaGFkb3cgJiYgKHMuYm94U2hhZG93ID0gZS5ib3hTaGFkb3cpLCAiY29sdW1uIiAhPT0gUy50eXBlICYmICh2b2lkIDAgIT09IGUuYm9yZGVyU3R5bGUgJiYgIm5vbmUiICE9PSBlLmJvcmRlclN0eWxlICYmICgwICE9PSBlLmJvcmRlclRvcFdpZHRoIHx8IGUuYm9yZGVyQm90dG9tV2lkdGggPiAwIHx8IGUuYm9yZGVyTGVmdFdpZHRoID4gMCB8fCBlLmJvcmRlclJpZ2h0V2lkdGggPiAwKSA/IChzLmJvcmRlclRvcFdpZHRoID0gTWF0aC5yb3VuZChlLmJvcmRlclRvcFdpZHRoICogTCkgKyAicHgiLCBzLmJvcmRlckJvdHRvbVdpZHRoID0gTWF0aC5yb3VuZChlLmJvcmRlckJvdHRvbVdpZHRoICogTCkgKyAicHgiLCBzLmJvcmRlckxlZnRXaWR0aCA9IE1hdGgucm91bmQoZS5ib3JkZXJMZWZ0V2lkdGggKiBMKSArICJweCIsIHMuYm9yZGVyUmlnaHRXaWR0aCA9IE1hdGgucm91bmQoZS5ib3JkZXJSaWdodFdpZHRoICogTCkgKyAicHgiLCBzLmJvcmRlclN0eWxlID0gZS5ib3JkZXJTdHlsZSwgcy5ib3JkZXJUb3BDb2xvciA9IGUuYm9yZGVyVG9wQ29sb3IsIHMuYm9yZGVyQm90dG9tQ29sb3IgPSBlLmJvcmRlckJvdHRvbUNvbG9yLCBzLmJvcmRlckxlZnRDb2xvciA9IGUuYm9yZGVyTGVmdENvbG9yLCBzLmJvcmRlclJpZ2h0Q29sb3IgPSBlLmJvcmRlclJpZ2h0Q29sb3IpIDogKCJub25lIiA9PT0gZS5ib3JkZXJTdHlsZSAmJiAocy5ib3JkZXJTdHlsZSA9ICJub25lIiksIHMuYm9yZGVyVG9wQ29sb3IgPSBlLmJvcmRlclRvcENvbG9yLCBzLmJvcmRlckJvdHRvbUNvbG9yID0gZS5ib3JkZXJCb3R0b21Db2xvciwgcy5ib3JkZXJMZWZ0Q29sb3IgPSBlLmJvcmRlckxlZnRDb2xvciwgcy5ib3JkZXJSaWdodENvbG9yID0gZS5ib3JkZXJSaWdodENvbG9yKSksICJzaGFwZSIgIT09IFMudHlwZSAmJiAiaW1hZ2UiICE9PSBTLnR5cGUgfHwgIShEKGUuYm9yZGVyVG9wTGVmdFJhZGl1cykgfHwgRChlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKSB8fCBEKGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cykgfHwgRChlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKSkgfHwgKHMub3ZlcmZsb3cgPSAiaGlkZGVuIiksIFMuX2lzbm90ZXh0IHx8ICgiY29sdW1uIiAhPT0gUy50eXBlICYmIChzLmZvbnRTaXplID0gTWF0aC5yb3VuZChlLmZvbnRTaXplICogTCkgKyAicHgiLCBzLmZvbnRXZWlnaHQgPSBlLmZvbnRXZWlnaHQsIHMubGV0dGVyU3BhY2luZyA9IGUubGV0dGVyU3BhY2luZyAqIEwgKyAicHgiLCBlLnRleHRTaGFkb3cgJiYgKHMudGV4dFNoYWRvdyA9IGUudGV4dFNoYWRvdyksIGUudGV4dFN0cm9rZSAmJiAoc1siLXdlYmtpdC10ZXh0LXN0cm9rZSJdID0gZS50ZXh0U3Ryb2tlKSksIHMubGluZUhlaWdodCA9IE1hdGgucm91bmQoZS5saW5lSGVpZ2h0ICogTCkgKyAicHgiLCBzLnRleHRBbGlnbiA9IGUudGV4dEFsaWduKSwgImNvbHVtbiIgPT09IFMudHlwZSAmJiAodm9pZCAwID09PSBTLmNiZ19zZXQgJiYgKFMuY2JnX3NldCA9IFMuc3R5bGVQcm9wc1siYmFja2dyb3VuZC1jb2xvciJdLCBTLmNiZ19zZXQgPSAiIiA9PSBTLmNiZ19zZXQgfHwgdm9pZCAwID09PSBTLmNiZ19zZXQgfHwgMCA9PSBTLmNiZ19zZXQubGVuZ3RoID8gInRyYW5zcGFyZW50IiA6IFMuY2JnX3NldCwgUy5jYmdfaW1nID0gbS5jc3MoImJhY2tncm91bmRJbWFnZSIpLCAiIiAhPT0gUy5jYmdfaW1nICYmIHZvaWQgMCAhPT0gUy5jYmdfaW1nICYmICJub25lIiAhPT0gUy5jYmdfaW1nICYmIChTLmNiZ19pbWdfciA9IG0uY3NzKCJiYWNrZ3JvdW5kUmVwZWF0IiksIFMuY2JnX2ltZ19wID0gbS5jc3MoImJhY2tncm91bmRQb3NpdGlvbiIpLCBTLmNiZ19pbWdfcyA9IG0uY3NzKCJiYWNrZ3JvdW5kU2l6ZSIpKSwgUy5jYmdfbyA9IFMuYmdvcGFjaXR5ID8gMSA6IFMuYmdvcGFjaXR5LCB3LmJhY2tncm91bmRDb2xvciA9ICJ0cmFuc3BhcmVudCIsIHcuYmFja2dyb3VuZEltYWdlID0gIiIpLCBzLmJhY2tncm91bmRDb2xvciA9ICJ0cmFuc3BhcmVudCIsIHMuYmFja2dyb3VuZEltYWdlID0gIm5vbmUiKSwgUy5faXNzdGF0aWMgJiYgUy5lbGVtZW50SG92ZXJlZCAmJiAocCA9IG0uZGF0YSgiZnJhbWVzIikpICYmIHAuZnJhbWVfaG92ZXIgJiYgcC5mcmFtZV9ob3Zlci50cmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAgICAgZm9yIChnIGluIHMpIHMuaGFzT3duUHJvcGVydHkoZykgJiYgcC5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uaGFzT3duUHJvcGVydHkoZykgJiYgZGVsZXRlIHNbZ107CiAgICAgICAgICAgICAgICBpZiAoIklGUkFNRSIgPT0gbVswXS5ub2RlTmFtZSAmJiAiaHRtbCIgPT09IG8uZ0EobVswXSwgImxheWVydHlwZSIpICYmICh1ID0gInNsaWRlIiA9PSBlLmJhc2VhbGlnbiA/IG9bdl0ubW9kdWxlLndpZHRoIDogby5pV0EodiwgYiksIGggPSAic2xpZGUiID09IGUuYmFzZWFsaWduID8gb1t2XS5tb2R1bGUuaGVpZ2h0IDogby5pSEUodiksIHMud2lkdGggPSAhby5pc051bWVyaWMoZS53aWR0aCkgJiYgZS53aWR0aC5pbmRleE9mKCIlIikgPj0gMCA/ICFTLl9pc3N0YXRpYyB8fCBTLl9pbmNvbHVtbiB8fCBTLl9pbmdyb3VwID8gZS53aWR0aCA6IHUgKiBwYXJzZUludChlLndpZHRoLCAwKSAvIDEwMCA6IEIoZS53aWR0aCwgTCwgImF1dG8iLCB1LCAiYXV0byIpLCBzLmhlaWdodCA9ICFvLmlzTnVtZXJpYyhlLmhlaWdodCkgJiYgZS5oZWlnaHQuaW5kZXhPZigiJSIpID49IDAgPyAhUy5faXNzdGF0aWMgfHwgUy5faW5jb2x1bW4gfHwgUy5faW5ncm91cCA/IGUuaGVpZ2h0IDogaCAqIHBhcnNlSW50KGUuaGVpZ2h0LCAwKSAvIDEwMCA6IEIoZS5oZWlnaHQsIEwsICJhdXRvIiwgdSwgImF1dG8iKSksIHcgPSBqUXVlcnkuZXh0ZW5kKCEwLCB3LCBzKSwgInJla3Vyc2l2ZSIgIT0gZikgewogICAgICAgICAgICAgICAgICAgIHUgPSAic2xpZGUiID09IGUuYmFzZWFsaWduID8gb1t2XS5tb2R1bGUud2lkdGggOiBvLmlXQSh2LCBiKSwgaCA9ICJzbGlkZSIgPT0gZS5iYXNlYWxpZ24gPyBvW3ZdLm1vZHVsZS5oZWlnaHQgOiBvLmlIRSh2KTsKICAgICAgICAgICAgICAgICAgICB2YXIgSSA9ICFvLmlzTnVtZXJpYyhlLndpZHRoKSAmJiBlLndpZHRoLmluZGV4T2YoIiUiKSA+PSAwID8gIVMuX2lzc3RhdGljIHx8IFMuX2luY29sdW1uIHx8IFMuX2luZ3JvdXAgPyBlLndpZHRoIDogdSAqIHBhcnNlSW50KGUud2lkdGgsIDApIC8gMTAwIDogQihlLndpZHRoLCBMLCAiYXV0byIsIHUsICJhdXRvIiksCiAgICAgICAgICAgICAgICAgICAgICAgIFQgPSAhby5pc051bWVyaWMoZS5oZWlnaHQpICYmIGUuaGVpZ2h0LmluZGV4T2YoIiUiKSA+PSAwID8gIVMuX2lzc3RhdGljIHx8IFMuX2luY29sdW1uIHx8IFMuX2luZ3JvdXAgPyBlLmhlaWdodCA6IGggKiBwYXJzZUludChlLmhlaWdodCwgMCkgLyAxMDAgOiBCKGUuaGVpZ2h0LCBMLCAiYXV0byIsIHUsICJhdXRvIiksCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogQihlLm1heFdpZHRoLCBMLCAibm9uZSIsIHUsICJub25lIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IEIoZS5tYXhIZWlnaHQsIEwsICJub25lIiwgaCwgIm5vbmUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBCKGUubWluV2lkdGgsIEwsICIwcHgiLCB1LCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogQihlLm1pbkhlaWdodCwgTCwgIjBweCIsIGgsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IEksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGU6ICJhdXRvIgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIDEgPT0gUy5oZWlnaHRTZXRCeVZpZGVvICYmIChDLmhlaWdodCA9IFMudmlkT0JKLmhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIEEgPSAhMTsKICAgICAgICAgICAgICAgICAgICBpZiAoUy5faW5jb2x1bW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSID0galF1ZXJ5LmV4dGVuZCghMCwgUiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0OiBlLmZsb2F0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyOiBlLmNsZWFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCA9IDA7IHQgPCA0OyB0KyspIHZvaWQgMCAhPT0gZVsibWFyZ2luIiArIGlbdF1dICYmIChSWyJtYXJnaW4iICsgaVt0XV0gPSBlWyJtYXJnaW4iICsgaVt0XV0gKiBMICsgInB4Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIE8ud2lkdGggPSAiMTAwJSIsIHZvaWQgMCAhPT0gZS5kaXNwbGF5ICYmICJpbmxpbmUtYmxvY2siICE9PSBlLmRpc3BsYXkgfHwgKF8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogIjEwMCUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBDLndpZHRoID0gIW8uaXNOdW1lcmljKGUud2lkdGgpICYmIGUud2lkdGguaW5kZXhPZigiJSIpID49IDAgPyAiMTAwJSIgOiBJLCAiaW1hZ2UiID09PSBTLnR5cGUgJiYgdHBHUy5nc2FwLnNldChTLmltZywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICIxMDAlIgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAhby5pc051bWVyaWMoZS53aWR0aCkgJiYgZS53aWR0aC5pbmRleE9mKCIlIikgPj0gMCAmJiAoUi5taW5XaWR0aCA9ICJzbGlkZSIgPT09IFMuYmFzZWFsaWduIHx8ICEwID09PSBTLl9pbmdyb3VwID8gSSA6IG8uaVdBKHYsIGIpICogb1t2XS5DTS53ICogcGFyc2VJbnQoSSkgLyAxMDAgKyAicHgiLCBPLndpZHRoID0gIjEwMCUiLCBfLndpZHRoID0gIjEwMCUiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIW8uaXNOdW1lcmljKGUuaGVpZ2h0KSAmJiBlLmhlaWdodC5pbmRleE9mKCIlIikgPj0gMCAmJiAoUi5taW5IZWlnaHQgPSAic2xpZGUiID09PSBTLmJhc2VhbGlnbiB8fCAhMCA9PT0gUy5faW5ncm91cCA/IFQgOiBvLmlIRSh2KSAqIChvW3ZdLmN1cnJlbnRSb3dzSGVpZ2h0ID4gb1t2XS5ncmlkaGVpZ2h0W29bdl0ubGV2ZWxdID8gMSA6IG9bdl0uQ00udykgKiBwYXJzZUludChUKSAvIDEwMCArICJweCIsIE8uaGVpZ2h0ID0gIjEwMCUiLCBfLmhlaWdodCA9ICIxMDAlIiwgQSA9ICEwKSwgUy5faXNub3RleHQgfHwgKEMud2hpdGVTcGFjZSA9IGUud2hpdGVTcGFjZSwgQy50ZXh0QWxpZ24gPSBlLnRleHRBbGlnbiwgQy50ZXh0RGVjb3JhdGlvbiA9IGUudGV4dERlY29yYXRpb24pLCAibnBjIiAhPSBlLmNvbG9yICYmIHZvaWQgMCAhPT0gZS5jb2xvciAmJiAoQy5jb2xvciA9IGUuY29sb3IpLCBTLl9pbmdyb3VwICYmIChTLl9ncm91cHcgPSBDLm1pbldpZHRoLCBTLl9ncm91cGggPSBDLm1pbkhlaWdodCksICJyb3ciID09PSBTLnR5cGUgJiYgKG8uaXNOdW1lcmljKEMubWluSGVpZ2h0KSB8fCBDLm1pbkhlaWdodC5pbmRleE9mKCJweCIpID49IDApICYmICIwcHgiICE9PSBDLm1pbkhlaWdodCAmJiAwICE9PSBDLm1pbkhlaWdodCAmJiAiMCIgIT09IEMubWluSGVpZ2h0ICYmICJub25lIiAhPT0gQy5taW5IZWlnaHQgPyBDLmhlaWdodCA9IEMubWluSGVpZ2h0IDogInJvdyIgPT09IFMudHlwZSAmJiAoQy5oZWlnaHQgPSAiYXV0byIpLCBTLl9pc3N0YXRpYyAmJiBTLmVsZW1lbnRIb3ZlcmVkICYmIChwID0gbS5kYXRhKCJmcmFtZXMiKSkgJiYgcC5mcmFtZV9ob3ZlciAmJiBwLmZyYW1lX2hvdmVyLnRyYW5zZm9ybSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnIGluIEMpIEMuaGFzT3duUHJvcGVydHkoZykgJiYgcC5mcmFtZV9ob3Zlci50cmFuc2Zvcm0uaGFzT3duUHJvcGVydHkoZykgJiYgZGVsZXRlIENbZ107CiAgICAgICAgICAgICAgICAgICAgImdyb3VwIiAhPT0gUy50eXBlICYmICJyb3ciICE9PSBTLnR5cGUgJiYgImNvbHVtbiIgIT09IFMudHlwZSAmJiAoIW8uaXNOdW1lcmljKEMud2lkdGgpICYmIEMud2lkdGguaW5kZXhPZigiJSIpID49IDAgJiYgKEMud2lkdGggPSAiMTAwJSIpLCAhby5pc051bWVyaWMoQy5oZWlnaHQpICYmIEMuaGVpZ2h0LmluZGV4T2YoIiUiKSA+PSAwICYmIChDLmhlaWdodCA9ICIxMDAlIikpLCBTLl9pc2dyb3VwICYmICghby5pc051bWVyaWMoQy53aWR0aCkgJiYgQy53aWR0aC5pbmRleE9mKCIlIikgPj0gMCAmJiAoQy53aWR0aCA9ICIxMDAlIiksIFIuaGVpZ2h0ID0gQSA/ICIxMDAlIiA6IEMuaGVpZ2h0KSwgdyA9IGpRdWVyeS5leHRlbmQoITAsIHcsIEMpLCBudWxsICE9IFMuc3ZnX3NyYyAmJiB2b2lkIDAgIT09IFMuc3ZnSSAmJiAoInN0cmluZyIgPT0gdHlwZW9mIFMuc3ZnSS5maWxsICYmIChTLnN2Z0kuZmlsbCA9IFtTLnN2Z0kuZmlsbF0pLCBTLnN2Z1RlbXAgPSBvLmNsb25lKFMuc3ZnSSksIHZvaWQgMCAhPT0gUy5zdmdUZW1wLmZpbGwgJiYgKFMuc3ZnVGVtcC5maWxsID0gUy5zdmdUZW1wLmZpbGxbb1t2XS5sZXZlbF0sIHRwR1MuZ3NhcC5zZXQoUy5zdmdQYXRoLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IFMuc3ZnSS5maWxsW29bdl0ubGV2ZWxdCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0cEdTLmdzYXAuc2V0KFMuc3ZnLCBTLnN2Z1RlbXApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCJyb3ciID09PSBTLnR5cGUpCiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IDQ7IHQrKykgdm9pZCAwICE9PSBlWyJtYXJnaW4iICsgaVt0XV0gJiYgKFJbInBhZGRpbmciICsgaVt0XV0gPSBlWyJtYXJnaW4iICsgaVt0XV0gKiBMICsgInB4Iik7CiAgICAgICAgICAgICAgICBpZiAoImNvbHVtbiIgPT09IFMudHlwZSAmJiBTLmNiZyAmJiBTLmNiZy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2b2lkIDAgIT09IFMuY2JnX2ltZ19zICYmIChTLmNiZ1swXS5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9IFMuY2JnX2ltZ19zKSwgcyA9IHt9LCAiIiAhPT0gUy5zdHlsZVByb3BzLmN1cnNvciAmJiAocy5jdXJzb3IgPSBTLnN0eWxlUHJvcHMuY3Vyc29yKSwgIiIgIT09IFMuY2JnX3NldCAmJiAidHJhbnNwYXJlbnQiICE9PSBTLmNiZ19zZXQgJiYgKHMuYmFja2dyb3VuZENvbG9yID0gUy5jYmdfc2V0KSwgIiIgIT09IFMuY2JnX2ltZyAmJiAibm9uZSIgIT09IFMuY2JnX2ltZyAmJiAocy5iYWNrZ3JvdW5kSW1hZ2UgPSBTLmNiZ19pbWcsICIiICE9PSBTLmNiZ19pbWdfciAmJiAocy5iYWNrZ3JvdW5kUmVwZWF0ID0gUy5jYmdfaW1nX3IpLCAiIiAhPT0gUy5jYmdfaW1nX3AgJiYgKHMuYmFja2dyb3VuZFBvc2l0aW9uID0gUy5jYmdfaW1nX3ApKSwgIiIgIT09IFMuY2JnX28gJiYgdm9pZCAwICE9PSBTLmNiZ19vICYmIChzLm9wYWNpdHkgPSBTLmNiZ19vKSwgdCA9IDA7IHQgPCA0OyB0KyspIHZvaWQgMCAhPT0gZS5ib3JkZXJTdHlsZSAmJiAibm9uZSIgIT09IGUuYm9yZGVyU3R5bGUgJiYgKHZvaWQgMCAhPT0gZVsiYm9yZGVyIiArIGlbdF0gKyAiV2lkdGgiXSAmJiAoc1siYm9yZGVyIiArIGlbdF0gKyAiV2lkdGgiXSA9IE1hdGgucm91bmQocGFyc2VJbnQoZVsiYm9yZGVyIiArIGlbdF0gKyAiV2lkdGgiXSkgKiBMKSArICJweCIpLCB2b2lkIDAgIT09IGVbImJvcmRlciIgKyBpW3RdICsgIkNvbG9yIl0gJiYgKHNbImJvcmRlciIgKyBpW3RdICsgIkNvbG9yIl0gPSBlWyJib3JkZXIiICsgaVt0XSArICJDb2xvciJdKSksIGVbImJvcmRlciIgKyBhW3RdICsgIlJhZGl1cyJdICYmIChzWyJib3JkZXIiICsgYVt0XSArICJSYWRpdXMiXSA9IGVbImJvcmRlciIgKyBhW3RdICsgIlJhZGl1cyJdKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZvaWQgMCAhPT0gZS5ib3JkZXJTdHlsZSAmJiAibm9uZSIgIT09IGUuYm9yZGVyU3R5bGUgJiYgKHMuYm9yZGVyU3R5bGUgPSBlLmJvcmRlclN0eWxlKSwgKG4gPSBKU09OLnN0cmluZ2lmeShzKSkgIT09IG9bdl0uZW1wdHlPYmplY3QgJiYgbiAhPT0gUy5jYWNoZXMuY2JnUyAmJiB0cEdTLmdzYXAuc2V0KFMuY2JnLCBzKSwgUy5jYWNoZXMuY2JnUyA9IG4sIHMgPSB7fSwgdCA9IDA7IHQgPCA0OyB0KyspIGtbIm1hcmdpbiIgKyBpW3RdXSAmJiAoc1tyW3RdXSA9IGtbIm1hcmdpbiIgKyBpW3RdXSAqIEwgKyAicHgiKTsKICAgICAgICAgICAgICAgICAgICAobiA9IEpTT04uc3RyaW5naWZ5KHMpKSAhPT0gb1t2XS5lbXB0eU9iamVjdCAmJiBuICE9PSBTLmNhY2hlcy5jYmdtYXNrUyAmJiAodHBHUy5nc2FwLnNldChTLmNiZ21hc2ssIHMpLCBTLmNhY2hlcy5jYmdtYXNrUyA9IG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAiYXV0byIgPT09IFIubWF4V2lkdGggJiYgKFIubWF4V2lkdGggPSAiaW5oZXJpdCIpLCAiYXV0byIgPT09IFIubWF4SGVpZ2h0ICYmIChSLm1heEhlaWdodCA9ICJpbmhlcml0IiksICJhdXRvIiA9PT0gXy5tYXhXaWR0aCAmJiAoXy5tYXhXaWR0aCA9ICJpbmhlcml0IiksICJhdXRvIiA9PT0gXy5tYXhIZWlnaHQgJiYgKF8ubWF4SGVpZ2h0ID0gImluaGVyaXQiKSwgImF1dG8iID09PSBPLm1heFdpZHRoICYmIChPLm1heFdpZHRoID0gImluaGVyaXQiKSwgImF1dG8iID09PSBPLm1heEhlaWdodCAmJiAoTy5tYXhIZWlnaHQgPSAiaW5oZXJpdCIpLCB2b2lkIDAgIT09IFMudmlkT0JKICYmICh3LndpZHRoID0gUy52aWRPQkoud2lkdGgsIHcuaGVpZ2h0ID0gUy52aWRPQkouaGVpZ2h0KSwgdm9pZCAwICE9PSBTLk9CSlVQRC5scHBtT0JKICYmICh2b2lkIDAgIT09IFMuT0JKVVBELmxwcG1PQkoubWluV2lkdGggJiYgKE8ubWluV2lkdGggPSBTLk9CSlVQRC5scHBtT0JKLm1pbldpZHRoLCBfLm1pbldpZHRoID0gUy5PQkpVUEQubHBwbU9CSi5taW5XaWR0aCwgUi5taW5XaWR0aCA9IFMuT0JKVVBELmxwcG1PQkoubWluV2lkdGgpLCB2b2lkIDAgIT09IFMuT0JKVVBELmxwcG1PQkoubWluSGVpZ2h0ICYmIChPLm1pbkhlaWdodCA9IFMuT0JKVVBELmxwcG1PQkoubWluSGVpZ2h0LCBfLm1pbkhlaWdodCA9IFMuT0JKVVBELmxwcG1PQkoubWluSGVpZ2h0LCBSLm1pbkhlaWdodCA9IFMuT0JKVVBELmxwcG1PQkoubWluSGVpZ2h0KSksIG4gPSBKU09OLnN0cmluZ2lmeSh3KSwgZCA9IEpTT04uc3RyaW5naWZ5KE8pLCBsID0gSlNPTi5zdHJpbmdpZnkoXyksIGMgPSBKU09OLnN0cmluZ2lmeShSKSwgdm9pZCAwID09PSBTLmltZ09CSiB8fCB2b2lkIDAgIT09IFMuY2FjaGVzLmltZ09CSiAmJiBTLmNhY2hlcy5pbWdPQkoud2lkdGggPT09IFMuaW1nT0JKLndpZHRoICYmIFMuY2FjaGVzLmltZ09CSi5oZWlnaHQgPT09IFMuaW1nT0JKLmhlaWdodCAmJiBTLmNhY2hlcy5pbWdPQkoubGVmdCA9PT0gUy5pbWdPQkoubGVmdCAmJiBTLmNhY2hlcy5pbWdPQkoucmlnaHQgPT09IFMuaW1nT0JKLnJpZ2h0ICYmIFMuY2FjaGVzLmltZ09CSi50b3AgPT09IFMuaW1nT0JKLnRvcCAmJiBTLmNhY2hlcy5pbWdPQkouYm90dG9tID09PSBTLmltZ09CSi5ib3R0b20gfHwgKFMuY2FjaGVzLmltZ09CSiA9IG8uY2xvbmUoUy5pbWdPQkopLCBTLmltZ09CSi5wb3NpdGlvbiA9ICJyZWxhdGl2ZSIsIHRwR1MuZ3NhcC5zZXQoUy5pbWcsIFMuaW1nT0JKKSksIHZvaWQgMCA9PT0gUy5tZWRpYU9CSiB8fCB2b2lkIDAgIT09IFMuY2FjaGVzLm1lZGlhT0JKICYmIFMuY2FjaGVzLm1lZGlhT0JKLndpZHRoID09PSBTLm1lZGlhT0JKLndpZHRoICYmIFMuY2FjaGVzLm1lZGlhT0JKLmhlaWdodCA9PT0gUy5tZWRpYU9CSi5oZWlnaHQgJiYgUy5jYWNoZXMubWVkaWFPQkouZGlzcGxheSA9PT0gUy5tZWRpYU9CSi5kaXNwbGF5IHx8IChTLmNhY2hlcy5tZWRpYU9CSiA9IG8uY2xvbmUoUy5tZWRpYU9CSiksIFMubWVkaWEuY3NzKFMubWVkaWFPQkopKSwgbiAhPSBvW3ZdLmVtcHR5T2JqZWN0ICYmIG4gIT0gUy5jYWNoZXMuTE9CSiAmJiAodHBHUy5nc2FwLnNldChtLCB3KSwgUy5jYWNoZXMuTE9CSiA9IG4pLCBkICE9IG9bdl0uZW1wdHlPYmplY3QgJiYgZCAhPSBTLmNhY2hlcy5MUE9CSiAmJiAodHBHUy5nc2FwLnNldChTLmxwLCBPKSwgUy5jYWNoZXMuTFBPQkogPSBkKSwgbCAhPSBvW3ZdLmVtcHR5T2JqZWN0ICYmIGwgIT0gUy5jYWNoZXMuTU9CSiAmJiAodHBHUy5nc2FwLnNldChTLm0sIF8pLCBTLmNhY2hlcy5NT0JKID0gbCksIGMgIT0gb1t2XS5lbXB0eU9iamVjdCAmJiBjICE9IFMuY2FjaGVzLlBPQkogJiYgKHRwR1MuZ3NhcC5zZXQoUy5wLCBSKSwgUy5jYWNoZXMuUE9CSiA9IGMsIFMuY2FjaGVzLlBPQkpfTEVGVCA9IFIubGVmdCwgUy5jYWNoZXMuUE9CSl9UT1AgPSBSLnRvcCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgRyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICBsOiAibm9uZSIsCiAgICAgICAgICAgICAgICBsdzogMTAsCiAgICAgICAgICAgICAgICByOiAibm9uZSIsCiAgICAgICAgICAgICAgICBydzogMTAKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBlID0gZS5zcGxpdCgiOyIpKQogICAgICAgICAgICAgICAgaWYgKGUuaGFzT3duUHJvcGVydHkoaSkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGVbaV0uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmwgPSBhWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5yID0gYVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsdyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Lmx3ID0gYVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJydyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnJ3ID0gYVsxXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICJwb2x5Z29uKCIgKyBOKHQubCwgMCwgcGFyc2VGbG9hdCh0Lmx3KSkgKyAiLCIgKyBOKHQuciwgMTAwLCAxMDAgLSBwYXJzZUZsb2F0KHQucncpLCAhMCkgKyAiKSIKICAgICAgICB9LAogICAgICAgIE4gPSBmdW5jdGlvbihlLCB0LCBpLCBhKSB7CiAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgIm5vbmUiOgogICAgICAgICAgICAgICAgICAgIHIgPSB0ICsgIiUgMTAwJSwiICsgdCArICIlIDAlIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInRvcCI6CiAgICAgICAgICAgICAgICAgICAgciA9IGkgKyAiJSAxMDAlLCIgKyB0ICsgIiUgMCUiOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAibWlkZGxlIjoKICAgICAgICAgICAgICAgICAgICByID0gaSArICIlIDEwMCUsIiArIHQgKyAiJSA1MCUsIiArIGkgKyAiJSAwJSI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJib3R0b20iOgogICAgICAgICAgICAgICAgICAgIHIgPSB0ICsgIiUgMTAwJSwiICsgaSArICIlIDAlIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInR3byI6CiAgICAgICAgICAgICAgICAgICAgciA9IGkgKyAiJSAxMDAlLCIgKyB0ICsgIiUgNzUlLCIgKyBpICsgIiUgNTAlLCIgKyB0ICsgIiUgMjUlLCIgKyBpICsgIiUgMCUiOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAidGhyZWUiOgogICAgICAgICAgICAgICAgICAgIHIgPSB0ICsgIiUgMTAwJSwiICsgaSArICIlIDc1JSwiICsgdCArICIlIDUwJSwiICsgaSArICIlIDI1JSwiICsgdCArICIlIDAlIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImZvdXIiOgogICAgICAgICAgICAgICAgICAgIHIgPSB0ICsgIiUgMTAwJSwiICsgaSArICIlIDg3LjUlLCIgKyB0ICsgIiUgNzUlLCIgKyBpICsgIiUgNjIuNSUsIiArIHQgKyAiJSA1MCUsIiArIGkgKyAiJSAzNy41JSwiICsgdCArICIlIDI1JSwiICsgaSArICIlIDEyLjUlLCIgKyB0ICsgIiUgMCUiOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiZml2ZSI6CiAgICAgICAgICAgICAgICAgICAgciA9IHQgKyAiJSAxMDAlLCIgKyBpICsgIiUgOTAlLCIgKyB0ICsgIiUgODAlLCIgKyBpICsgIiUgNzAlLCIgKyB0ICsgIiUgNjAlLCIgKyBpICsgIiUgNTAlLCIgKyB0ICsgIiUgNDAlLCIgKyBpICsgIiUgMzAlLCIgKyB0ICsgIiUgMjAlLCIgKyBpICsgIiUgMTAlLCIgKyB0ICsgIiUgMCUiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gci5zcGxpdCgiLCIpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiByID0gIiIsIG8pIG8uaGFzT3duUHJvcGVydHkoaSkgJiYgKHIgKz0gb1tvLmxlbmd0aCAtIDEgLSBpXSArIChpIDwgby5sZW5ndGggLSAxID8gIiwiIDogIiIpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfQp9KGpRdWVyeSksCmZ1bmN0aW9uKGUpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciB0ID0galF1ZXJ5LmZuLnJldm9sdXRpb24sCiAgICAgICAgaSA9IHQuaXNfbW9iaWxlKCk7CgogICAgZnVuY3Rpb24gYShlLCBpKSB7CiAgICAgICAgdmFyIGEgPSBuZXcgT2JqZWN0KHsKICAgICAgICAgICAgc2luZ2xlOiAiLnRwLSIgKyBpLAogICAgICAgICAgICBjOiB0W2VdLmNwYXIuZmluZCgiLnRwLSIgKyBpICsgInMiKQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBhLm1hc2sgPSBhLmMuZmluZCgiLnRwLSIgKyBpICsgIi1tYXNrIiksIGEud3JhcCA9IGEuYy5maW5kKCIudHAtIiArIGkgKyAicy1pbm5lci13cmFwcGVyIiksIGEKICAgIH0KICAgIGpRdWVyeS5leHRlbmQoITAsIHQsIHsKICAgICAgICBoaWRlVW5IaWRlTmF2OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9ICExOwogICAgICAgICAgICAgICAgcCh0W2VdLm5hdmlnYXRpb24uYXJyb3dzKSAmJiAoaSA9IHgodFtlXS5uYXZpZ2F0aW9uLmFycm93cywgZSwgaSkpLCBwKHRbZV0ubmF2aWdhdGlvbi5idWxsZXRzKSAmJiAoaSA9IHgodFtlXS5uYXZpZ2F0aW9uLmJ1bGxldHMsIGUsIGkpKSwgcCh0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscykgJiYgKGkgPSB4KHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLCBlLCBpKSksIHAodFtlXS5uYXZpZ2F0aW9uLnRhYnMpICYmIChpID0geCh0W2VdLm5hdmlnYXRpb24udGFicywgZSwgaSkpLCBpICYmIHQubWFuYWdlTmF2aWdhdGlvbihlKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZ2V0T3V0ZXJOYXZEaW1lbnNpb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdFtlXS5uYXZpZ2F0aW9uLnNjYWxlciA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsICh0LndpblcgLSA0ODApIC8gNTAwKSk7CiAgICAgICAgICAgIHZhciBpID0gewogICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgIHJpZ2h0OiAwLAogICAgICAgICAgICAgICAgaG9yaXpvbnRhbDogMCwKICAgICAgICAgICAgICAgIHZlcnRpY2FsOiAwLAogICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgYm90dG9tOiAwCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscyAmJiB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5lbmFibGUgJiYgKHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLmlzVmlzaWJsZSA9IHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLmhpZGVfdW5kZXIgPCB0W2VdLm1vZHVsZS53aWR0aCAmJiB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5oaWRlX292ZXIgPiB0W2VdLm1vZHVsZS53aWR0aCwgdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuY3cgPSBNYXRoLm1heChNYXRoLnJvdW5kKHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLndpZHRoICogdFtlXS5uYXZpZ2F0aW9uLnNjYWxlciksIHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLm1pbl93aWR0aCksIHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLmNoID0gTWF0aC5yb3VuZCh0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5jdyAvIHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLndpZHRoICogdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuaGVpZ2h0KSwgdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuaXNWaXNpYmxlICYmICJvdXRlci1sZWZ0IiA9PT0gdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMucG9zaXRpb24gPyBpLmxlZnQgPSB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5jdyArIDIgKiB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy53cmFwcGVyX3BhZGRpbmcgOiB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5pc1Zpc2libGUgJiYgIm91dGVyLXJpZ2h0IiA9PT0gdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMucG9zaXRpb24gPyBpLnJpZ2h0ID0gdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuY3cgKyAyICogdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMud3JhcHBlcl9wYWRkaW5nIDogdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuaXNWaXNpYmxlICYmICJvdXRlci10b3AiID09PSB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5wb3NpdGlvbiA/IGkudG9wID0gdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuY2ggKyAyICogdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMud3JhcHBlcl9wYWRkaW5nIDogdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMuaXNWaXNpYmxlICYmICJvdXRlci1ib3R0b20iID09PSB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5wb3NpdGlvbiAmJiAoaS5ib3R0b20gPSB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5jaCArIDIgKiB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy53cmFwcGVyX3BhZGRpbmcpKSwgdFtlXS5uYXZpZ2F0aW9uLnRhYnMgJiYgdFtlXS5uYXZpZ2F0aW9uLnRhYnMuZW5hYmxlICYmICh0W2VdLm5hdmlnYXRpb24udGFicy5pc1Zpc2libGUgPSB0W2VdLm5hdmlnYXRpb24udGFicy5oaWRlX3VuZGVyIDwgdFtlXS5tb2R1bGUud2lkdGggJiYgdFtlXS5uYXZpZ2F0aW9uLnRhYnMuaGlkZV9vdmVyID4gdFtlXS5tb2R1bGUud2lkdGgsIHRbZV0ubmF2aWdhdGlvbi50YWJzLmN3ID0gTWF0aC5tYXgoTWF0aC5yb3VuZCh0W2VdLm5hdmlnYXRpb24udGFicy53aWR0aCAqIHRbZV0ubmF2aWdhdGlvbi5zY2FsZXIpLCB0W2VdLm5hdmlnYXRpb24udGFicy5taW5fd2lkdGgpLCB0W2VdLm5hdmlnYXRpb24udGFicy5jaCA9IE1hdGgucm91bmQodFtlXS5uYXZpZ2F0aW9uLnRhYnMuY3cgLyB0W2VdLm5hdmlnYXRpb24udGFicy53aWR0aCAqIHRbZV0ubmF2aWdhdGlvbi50YWJzLmhlaWdodCksIHRbZV0ubmF2aWdhdGlvbi50YWJzLmlzVmlzaWJsZSAmJiAib3V0ZXItbGVmdCIgPT09IHRbZV0ubmF2aWdhdGlvbi50YWJzLnBvc2l0aW9uID8gaS5sZWZ0ICs9IHRbZV0ubmF2aWdhdGlvbi50YWJzLmN3ICsgMiAqIHRbZV0ubmF2aWdhdGlvbi50YWJzLndyYXBwZXJfcGFkZGluZyA6IHRbZV0ubmF2aWdhdGlvbi50YWJzLmlzVmlzaWJsZSAmJiAib3V0ZXItcmlnaHQiID09PSB0W2VdLm5hdmlnYXRpb24udGFicy5wb3NpdGlvbiA/IGkucmlnaHQgKz0gdFtlXS5uYXZpZ2F0aW9uLnRhYnMuY3cgKyAyICogdFtlXS5uYXZpZ2F0aW9uLnRhYnMud3JhcHBlcl9wYWRkaW5nIDogdFtlXS5uYXZpZ2F0aW9uLnRhYnMuaXNWaXNpYmxlICYmICJvdXRlci10b3AiID09PSB0W2VdLm5hdmlnYXRpb24udGFicy5wb3NpdGlvbiA/IGkudG9wICs9IHRbZV0ubmF2aWdhdGlvbi50YWJzLmNoICsgMiAqIHRbZV0ubmF2aWdhdGlvbi50YWJzLndyYXBwZXJfcGFkZGluZyA6IHRbZV0ubmF2aWdhdGlvbi50YWJzLmlzVmlzaWJsZSAmJiAib3V0ZXItYm90dG9tIiA9PT0gdFtlXS5uYXZpZ2F0aW9uLnRhYnMucG9zaXRpb24gJiYgKGkuYm90dG9tICs9IHRbZV0ubmF2aWdhdGlvbi50YWJzLmNoICsgMiAqIHRbZV0ubmF2aWdhdGlvbi50YWJzLndyYXBwZXJfcGFkZGluZykpLCB7CiAgICAgICAgICAgICAgICBsZWZ0OiBpLmxlZnQsCiAgICAgICAgICAgICAgICByaWdodDogaS5yaWdodCwKICAgICAgICAgICAgICAgIGhvcml6b250YWw6IGkubGVmdCArIGkucmlnaHQsCiAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogaS50b3AgKyBpLmJvdHRvbSwKICAgICAgICAgICAgICAgIHRvcDogaS50b3AsCiAgICAgICAgICAgICAgICBib3R0b206IGkuYm90dG9tCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJlc2l6ZVRodW1ic1RhYnM6IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdFtlXSAmJiB0W2VdLm5hdmlnYXRpb24udXNlICYmICh0W2VdLm5hdmlnYXRpb24gJiYgdFtlXS5uYXZpZ2F0aW9uLmJ1bGxldHMuZW5hYmxlIHx8IHRbZV0ubmF2aWdhdGlvbiAmJiB0W2VdLm5hdmlnYXRpb24udGFicy5lbmFibGUgfHwgdFtlXS5uYXZpZ2F0aW9uICYmIHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLmVuYWJsZSkpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdHBHUy5nc2FwLnRpbWVsaW5lKCksCiAgICAgICAgICAgICAgICAgICAgciA9IHRbZV0ubmF2aWdhdGlvbi50YWJzLAogICAgICAgICAgICAgICAgICAgIHMgPSB0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscywKICAgICAgICAgICAgICAgICAgICBuID0gdFtlXS5uYXZpZ2F0aW9uLmJ1bGxldHM7CiAgICAgICAgICAgICAgICBpZiAoYS5wYXVzZSgpLCBwKHIpICYmIChpIHx8IHIud2lkdGggPiByLm1pbl93aWR0aCkgJiYgbyhlLCBhLCB0W2VdLmMsIHIsIHRbZV0uc2xpZGVhbW91bnQsICJ0YWIiKSwgcChzKSAmJiAoaSB8fCBzLndpZHRoID4gcy5taW5fd2lkdGgpICYmIG8oZSwgYSwgdFtlXS5jLCBzLCB0W2VdLnNsaWRlYW1vdW50LCAidGh1bWIiLCBlKSwgcChuKSAmJiBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0W2VdLmMuZmluZCgiLnRwLWJ1bGxldHMiKTsKICAgICAgICAgICAgICAgICAgICBkLmZpbmQoIi50cC1idWxsZXQiKS5lYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBqUXVlcnkodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5vdXRlcldpZHRoKCkgKyBwYXJzZUludCh2b2lkIDAgPT09IG4uc3BhY2UgPyAwIDogbi5zcGFjZSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdC5vdXRlckhlaWdodCgpICsgcGFyc2VJbnQodm9pZCAwID09PSBuLnNwYWNlID8gMCA6IG4uc3BhY2UsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAidmVydGljYWwiID09PSBuLmRpcmVjdGlvbiA/ICh0LmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IChpIC0gMSkgKiByICsgInB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IChpIC0gMSkgKiByICsgdC5vdXRlckhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQub3V0ZXJXaWR0aCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6ICh0LmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAoaSAtIDEpICogYSArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogKGkgLSAxKSAqIGEgKyB0Lm91dGVyV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdC5vdXRlckhlaWdodCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhLnBsYXkoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0sCiAgICAgICAgdXBkYXRlTmF2SW5kZXhlczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgaSA9IHRbZV0uYzsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSkgewogICAgICAgICAgICAgICAgaS5maW5kKGUpLmxlbmdodCA+IDAgJiYgaS5maW5kKGUpLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5kYXRhKCJsaWluZGV4IiwgZSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYSgicnMtdGFiIiksIGEoInJzLWJ1bGxldCIpLCBhKCJycy10aHVtYiIpLCB0LnJlc2l6ZVRodW1ic1RhYnMoZSwgITApLCB0Lm1hbmFnZU5hdmlnYXRpb24oZSkKICAgICAgICB9LAogICAgICAgIG1hbmFnZU5hdmlnYXRpb246IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgdFtlXS5uYXZpZ2F0aW9uLnVzZSAmJiAocCh0W2VdLm5hdmlnYXRpb24uYnVsbGV0cykgJiYgKCJmdWxsc2NyZWVuIiAhPSB0W2VdLnNsaWRlckxheW91dCAmJiAiZnVsbHdpZHRoIiAhPSB0W2VdLnNsaWRlckxheW91dCAmJiAodFtlXS5uYXZpZ2F0aW9uLmJ1bGxldHMuaF9vZmZzZXRfb2xkID0gdm9pZCAwID09PSB0W2VdLm5hdmlnYXRpb24uYnVsbGV0cy5oX29mZnNldF9vbGQgPyBwYXJzZUludCh0W2VdLm5hdmlnYXRpb24uYnVsbGV0cy5oX29mZnNldCwgMCkgOiB0W2VdLm5hdmlnYXRpb24uYnVsbGV0cy5oX29mZnNldF9vbGQsIHRbZV0ubmF2aWdhdGlvbi5idWxsZXRzLmhfb2Zmc2V0ID0gImNlbnRlciIgPT09IHRbZV0ubmF2aWdhdGlvbi5idWxsZXRzLmhfYWxpZ24gPyB0W2VdLm5hdmlnYXRpb24uYnVsbGV0cy5oX29mZnNldF9vbGQgKyB0W2VdLm91dE5hdkRpbXMubGVmdCAvIDIgLSB0W2VdLm91dE5hdkRpbXMucmlnaHQgLyAyIDogdFtlXS5uYXZpZ2F0aW9uLmJ1bGxldHMuaF9vZmZzZXRfb2xkICsgdFtlXS5vdXROYXZEaW1zLmxlZnQpLCB3KHRbZV0ubmF2aWdhdGlvbi5idWxsZXRzLmMsIHRbZV0ubmF2aWdhdGlvbi5idWxsZXRzLCBlKSksIHAodFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMpICYmIHcodFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMsIGUpLCBwKHRbZV0ubmF2aWdhdGlvbi50YWJzKSAmJiB3KHRbZV0ubmF2aWdhdGlvbi50YWJzLCBlKSwgcCh0W2VdLm5hdmlnYXRpb24uYXJyb3dzKSAmJiAoImZ1bGxzY3JlZW4iICE9IHRbZV0uc2xpZGVyTGF5b3V0ICYmICJmdWxsd2lkdGgiICE9IHRbZV0uc2xpZGVyTGF5b3V0ICYmICh0W2VdLm5hdmlnYXRpb24uYXJyb3dzLmxlZnQuaF9vZmZzZXRfb2xkID0gdm9pZCAwID09PSB0W2VdLm5hdmlnYXRpb24uYXJyb3dzLmxlZnQuaF9vZmZzZXRfb2xkID8gcGFyc2VJbnQodFtlXS5uYXZpZ2F0aW9uLmFycm93cy5sZWZ0Lmhfb2Zmc2V0LCAwKSA6IHRbZV0ubmF2aWdhdGlvbi5hcnJvd3MubGVmdC5oX29mZnNldF9vbGQsIHRbZV0ubmF2aWdhdGlvbi5hcnJvd3MubGVmdC5oX29mZnNldCA9ICh0W2VdLm5hdmlnYXRpb24uYXJyb3dzLmxlZnQuaF9hbGlnbiwgdFtlXS5uYXZpZ2F0aW9uLmFycm93cy5sZWZ0Lmhfb2Zmc2V0X29sZCksIHRbZV0ubmF2aWdhdGlvbi5hcnJvd3MucmlnaHQuaF9vZmZzZXRfb2xkID0gdm9pZCAwID09PSB0W2VdLm5hdmlnYXRpb24uYXJyb3dzLnJpZ2h0Lmhfb2Zmc2V0X29sZCA/IHBhcnNlSW50KHRbZV0ubmF2aWdhdGlvbi5hcnJvd3MucmlnaHQuaF9vZmZzZXQsIDApIDogdFtlXS5uYXZpZ2F0aW9uLmFycm93cy5yaWdodC5oX29mZnNldF9vbGQsIHRbZV0ubmF2aWdhdGlvbi5hcnJvd3MucmlnaHQuaF9vZmZzZXQgPSAodFtlXS5uYXZpZ2F0aW9uLmFycm93cy5yaWdodC5oX2FsaWduLCB0W2VdLm5hdmlnYXRpb24uYXJyb3dzLnJpZ2h0Lmhfb2Zmc2V0X29sZCkpLCB3KHRbZV0ubmF2aWdhdGlvbi5hcnJvd3MubGVmdCwgZSksIHcodFtlXS5uYXZpZ2F0aW9uLmFycm93cy5yaWdodCwgZSkpLCAhMSAhPT0gaSAmJiAocCh0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscykgJiYgcih0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscywgZSksIHAodFtlXS5uYXZpZ2F0aW9uLnRhYnMpICYmIHIodFtlXS5uYXZpZ2F0aW9uLnRhYnMsIGUpKSkKICAgICAgICB9LAogICAgICAgIHNob3dGaXJzdFRpbWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdShlKSwgdC5oaWRlVW5IaWRlTmF2KGUpCiAgICAgICAgfSwKICAgICAgICBzZWxlY3ROYXZFbGVtZW50OiBmdW5jdGlvbihlLCBpLCBhLCByKSB7CiAgICAgICAgICAgIGZvciAodmFyIG8gPSB0W2VdLmNwYXJbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKSwgcyA9IDA7IHMgPCBvLmxlbmd0aDsgcysrKSB0LmdBKG9bc10sICJrZXkiKSA9PT0gaSA/IChvW3NdLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIiksIHZvaWQgMCAhPT0gciAmJiByKCkpIDogb1tzXS5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpCiAgICAgICAgfSwKICAgICAgICB0cmFuc2ZlclBhcmFtczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0KQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0LnBhcmFtcykgZSA9IGUucmVwbGFjZSh0LnBhcmFtc1tpXS5mcm9tLCB0LnBhcmFtc1tpXS50byk7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfSwKICAgICAgICB1cGRhdGVOYXZFbGVtZW50Q29udGVudDogZnVuY3Rpb24oZSwgaSwgYSwgbywgcykgewogICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0W2VdLnByX25leHRfa2V5IHx8IHZvaWQgMCAhPT0gdFtlXS5wcl9hY3RpdmVfa2V5KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHZvaWQgMCA9PT0gdFtlXS5wcl9uZXh0X2tleSA/IHZvaWQgMCA9PT0gdFtlXS5wcl9jYWNoZV9wcl9uZXh0X2tleSA/IHRbZV0ucHJfYWN0aXZlX2tleSA6IHRbZV0ucHJfY2FjaGVfcHJfbmV4dF9rZXkgOiB0W2VdLnByX25leHRfa2V5LAogICAgICAgICAgICAgICAgICAgIGQgPSB0LmdBKHRbZV0uc2xpZGVzW25dLCAia2V5IiksCiAgICAgICAgICAgICAgICAgICAgbCA9IDAsCiAgICAgICAgICAgICAgICAgICAgYyA9ICExOwogICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBhLmVuYWJsZSAmJiB0LnNlbGVjdE5hdkVsZW1lbnQoZSwgZCwgInRwLWJ1bGxldCIpLCBvLmVuYWJsZSAmJiB0LnNlbGVjdE5hdkVsZW1lbnQoZSwgZCwgInRwLXRodW1iIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIobywgZSkKICAgICAgICAgICAgICAgICAgICB9KSwgcy5lbmFibGUgJiYgdC5zZWxlY3ROYXZFbGVtZW50KGUsIGQsICJ0cC10YWIiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcihzLCBlKQogICAgICAgICAgICAgICAgICAgIH0pLCB0W2VdLnRodW1icykgbCA9ICEwID09PSBjID8gbCA6IHAsIGMgPSB0W2VdLnRodW1ic1twXS5pZCA9PT0gZCB8fCBwID09IGQgfHwgYzsKICAgICAgICAgICAgICAgIHZhciBnID0gKGwgPSBwYXJzZUludChsLCAwKSkgPiAwID8gbCAtIDEgOiB0W2VdLnNsaWRlYW1vdW50IC0gMSwKICAgICAgICAgICAgICAgICAgICB1ID0gbCArIDEgPT0gdFtlXS5zbGlkZWFtb3VudCA/IDAgOiBsICsgMTsKICAgICAgICAgICAgICAgIGlmICghMCA9PT0gaS5lbmFibGUgJiYgaS5waSAhPT0gZyAmJiBpLm5pICE9PSB1KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkucGkgPSBnLCBpLm5pID0gdSwgaS5sZWZ0LmNbMF0uaW5uZXJIVE1MID0gdC50cmFuc2ZlclBhcmFtcyhpLnRtcCwgdFtlXS50aHVtYnNbZ10pLCB1ID4gdFtlXS5zbGlkZWFtb3VudCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGkucmlnaHQuY1swXS5pbm5lckhUTUwgPSB0LnRyYW5zZmVyUGFyYW1zKGkudG1wLCB0W2VdLnRodW1ic1t1XSksIGkucmlnaHQuaWhvbGRlciA9IGkucmlnaHQuYy5maW5kKCIudHAtYXJyLWltZ2hvbGRlciIpLCBpLmxlZnQuaWhvbGRlciA9IGkubGVmdC5jLmZpbmQoIi50cC1hcnItaW1naG9sZGVyIiksIGkucnRsID8gKHZvaWQgMCAhPT0gaS5sZWZ0Lmlob2xkZXJbMF0gJiYgdHBHUy5nc2FwLnNldChpLmxlZnQuaWhvbGRlciwgewogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICJ1cmwoIiArIHRbZV0udGh1bWJzW3VdLnNyYyArICIpIgogICAgICAgICAgICAgICAgICAgIH0pLCB2b2lkIDAgIT09IHRbZV0udGh1bWJzW2ddICYmIHZvaWQgMCAhPT0gaS5yaWdodC5paG9sZGVyWzBdICYmIHRwR1MuZ3NhcC5zZXQoaS5yaWdodC5paG9sZGVyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogInVybCgiICsgdFtlXS50aHVtYnNbZ10uc3JjICsgIikiCiAgICAgICAgICAgICAgICAgICAgfSkpIDogKHZvaWQgMCAhPT0gdFtlXS50aHVtYnNbZ10gJiYgdm9pZCAwICE9PSBpLmxlZnQuaWhvbGRlclswXSAmJiB0cEdTLmdzYXAuc2V0KGkubGVmdC5paG9sZGVyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogInVybCgiICsgdFtlXS50aHVtYnNbZ10uc3JjICsgIikiCiAgICAgICAgICAgICAgICAgICAgfSksIHZvaWQgMCAhPT0gaS5yaWdodC5paG9sZGVyWzBdICYmIHRwR1MuZ3NhcC5zZXQoaS5yaWdodC5paG9sZGVyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogInVybCgiICsgdFtlXS50aHVtYnNbdV0uc3JjICsgIikiCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNyZWF0ZU5hdmlnYXRpb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHIgPSB0W2VdLm5hdmlnYXRpb24uYXJyb3dzLAogICAgICAgICAgICAgICAgbyA9IHRbZV0ubmF2aWdhdGlvbi5idWxsZXRzLAogICAgICAgICAgICAgICAgZCA9IHRbZV0ubmF2aWdhdGlvbi50aHVtYm5haWxzLAogICAgICAgICAgICAgICAgaCA9IHRbZV0ubmF2aWdhdGlvbi50YWJzLAogICAgICAgICAgICAgICAgdiA9IHAociksCiAgICAgICAgICAgICAgICB5ID0gcChvKSwKICAgICAgICAgICAgICAgIGIgPSBwKGQpLAogICAgICAgICAgICAgICAgeCA9IHAoaCk7CiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gcyhlKSwgbihlKSwgdiAmJiAoZihyLCBlKSwgci5jID0gdFtlXS5jcGFyLmZpbmQoIi50cGFycm93cyIpKSwgdFtlXS5zbGlkZXMpCiAgICAgICAgICAgICAgICBpZiAodFtlXS5zbGlkZXMuaGFzT3duUHJvcGVydHkoaykgJiYgInRydWUiICE9IHQuZ0EodFtlXS5zbGlkZXNba10sICJub3RfaW5fbmF2IikpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgTCA9IGpRdWVyeSh0W2VdLnNsaWRlc1t0W2VdLnNsaWRlcy5sZW5ndGggLSAxIC0ga10pLAogICAgICAgICAgICAgICAgICAgICAgICBSID0galF1ZXJ5KHRbZV0uc2xpZGVzW2tdKTsKICAgICAgICAgICAgICAgICAgICB5ICYmICh0W2VdLm5hdmlnYXRpb24uYnVsbGV0cy5ydGwgPyBfKHRbZV0uYywgbywgTCwgZSkgOiBfKHRbZV0uYywgbywgUiwgZSkpLCBiICYmICh0W2VdLm5hdmlnYXRpb24udGh1bWJuYWlscy5ydGwgPyBTKHRbZV0uYywgZCwgTCwgInRwLXRodW1iIiwgZSkgOiBTKHRbZV0uYywgZCwgUiwgInRwLXRodW1iIiwgZSkpLCB4ICYmICh0W2VdLm5hdmlnYXRpb24udGFicy5ydGwgPyBTKHRbZV0uYywgaCwgTCwgInRwLXRhYiIsIGUpIDogUyh0W2VdLmMsIGgsIFIsICJ0cC10YWIiLCBlKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgeSAmJiB3KG8sIGUpLCBiICYmIHcoZCwgZSksIHggJiYgdyhoLCBlKSwgKGIgfHwgeCkgJiYgdC51cGRhdGVEaW1zKGUpLCB0W2VdLm5hdmlnYXRpb24uY3JlYXRlTmF2aWdhdGlvbkRvbmUgPSAhMCwgYiAmJiBqUXVlcnkuZXh0ZW5kKCEwLCBkLCBhKGUsICJ0aHVtYiIpKSwgeCAmJiBqUXVlcnkuZXh0ZW5kKCEwLCBoLCBhKGUsICJ0YWIiKSksIHRbZV0uYy5vbigicmV2b2x1dGlvbi5zbGlkZS5vbmFmdGVyc3dhcCByZXZvbHV0aW9uLm5leHRzbGlkZS53YWl0aW5nIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0LnVwZGF0ZU5hdkVsZW1lbnRDb250ZW50KGUsIHIsIG8sIGQsIGgpCiAgICAgICAgICAgIH0pLCBjKHIpLCBjKG8pLCBjKGQpLCBjKGgpLCB0W2VdLmNwYXIub24oIm1vdXNlZW50ZXIgbW91c2Vtb3ZlIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgdm9pZCAwICE9PSBhLnRhcmdldCAmJiB2b2lkIDAgIT09IGEudGFyZ2V0LmNsYXNzTmFtZSAmJiAic3RyaW5nIiA9PSB0eXBlb2YgYS50YXJnZXQuY2xhc3NOYW1lICYmIGEudGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCJycy13YWN0aW9uIikgPj0gMCB8fCAhMCAhPT0gdFtlXS50cE1vdXNlT3ZlciAmJiB0W2VdLmZpcnN0U2xpZGVBdmFpbGFibGUgJiYgKHRbZV0udHBNb3VzZU92ZXIgPSAhMCwgdShlKSwgaSAmJiAhMCAhPT0gdFtlXS5zb21lTmF2SXNEcmFnZ2VkICYmIChnKHRbZV0uaGlkZUFsbE5hdkVsZW1lbnRUaW1lciksIHRbZV0uaGlkZUFsbE5hdkVsZW1lbnRUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdFtlXS50cE1vdXNlT3ZlciA9ICExLCBtKGUpCiAgICAgICAgICAgICAgICB9LCAxNTApKSkKICAgICAgICAgICAgfSksIHRbZV0uY3Bhci5vbigibW91c2VsZWF2ZSAiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRbZV0udHBNb3VzZU92ZXIgPSAhMSwgbShlKQogICAgICAgICAgICB9KSwgKGIgfHwgeCB8fCAiY2Fyb3VzZWwiID09PSB0W2VdLnNsaWRlclR5cGUgfHwgdFtlXS5uYXZpZ2F0aW9uLnRvdWNoLnRvdWNoT25EZXNrdG9wIHx8IHRbZV0ubmF2aWdhdGlvbi50b3VjaC50b3VjaGVuYWJsZWQgJiYgaSkgJiYgbChlKSwgdFtlXS5uYXZpZ2F0aW9uLmluaXRpYWxpc2VkID0gITAsIHQudXBkYXRlTmF2RWxlbWVudENvbnRlbnQoZSwgciwgbywgZCwgaCksIHQuc2hvd0ZpcnN0VGltZShlKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIHIgPSBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGUgJiYgbnVsbCAhPSBlLm1hc2spIHsKICAgICAgICAgICAgICAgIHZhciBhID0gInZlcnRpY2FsIiA9PT0gZS5kaXJlY3Rpb24gPyBlLm1hc2suZmluZChlLnNpbmdsZSkuZmlyc3QoKS5vdXRlckhlaWdodCghMCkgKyBlLnNwYWNlIDogZS5tYXNrLmZpbmQoZS5zaW5nbGUpLmZpcnN0KCkub3V0ZXJXaWR0aCghMCkgKyBlLnNwYWNlLAogICAgICAgICAgICAgICAgICAgIHIgPSAidmVydGljYWwiID09PSBlLmRpcmVjdGlvbiA/IGUubWFzay5oZWlnaHQoKSA6IGUubWFzay53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgIG8gPSBlLm1hc2suZmluZChlLnNpbmdsZSArICIuc2VsZWN0ZWQiKS5kYXRhKCJsaWluZGV4Iik7CiAgICAgICAgICAgICAgICBvID0gKG8gPSB2b2lkIDAgPT09IChvID0gZS5ydGwgPyB0W2ldLnNsaWRlYW1vdW50IC0gbyA6IG8pID8gMCA6IG8pID4gMCAmJiAxID09PSB0W2ldLnNkaXIgJiYgZS52aXNpYmxlQW1vdW50ID4gMSA/IG8gLSAxIDogbzsKICAgICAgICAgICAgICAgIHZhciBzID0gciAvIGEsCiAgICAgICAgICAgICAgICAgICAgbiA9ICJ2ZXJ0aWNhbCIgPT09IGUuZGlyZWN0aW9uID8gZS5tYXNrLmhlaWdodCgpIDogZS5tYXNrLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgZCA9IDAgLSBvICogYSwKICAgICAgICAgICAgICAgICAgICBsID0gInZlcnRpY2FsIiA9PT0gZS5kaXJlY3Rpb24gPyBlLndyYXAuaGVpZ2h0KCkgOiBlLndyYXAud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBjID0gZCA8IDAgLSAobCAtIG4pID8gMCAtIChsIC0gbikgOiBkLAogICAgICAgICAgICAgICAgICAgIHAgPSB0LmdBKGUud3JhcFswXSwgIm9mZnNldCIpOwogICAgICAgICAgICAgICAgcCA9IHZvaWQgMCA9PT0gcCA/IDAgOiBwLCBzID4gMiAmJiAoYyA9IGQgLSAocCArIGEpIDw9IDAgPyBkIC0gKHAgKyBhKSA8IDAgLSBhID8gcCA6IGMgKyBhIDogYywgYyA9IGQgLSBhICsgcCArIHIgPCBhICYmIGQgKyAoTWF0aC5yb3VuZChzKSAtIDIpICogYSA8IHAgPyBkICsgKE1hdGgucm91bmQocykgLSAyKSAqIGEgOiBjKSwgYyA9ICJ2ZXJ0aWNhbCIgIT09IGUuZGlyZWN0aW9uICYmIGUubWFzay53aWR0aCgpID49IGUud3JhcC53aWR0aCgpIHx8ICJ2ZXJ0aWNhbCIgPT09IGUuZGlyZWN0aW9uICYmIGUubWFzay5oZWlnaHQoKSA+PSBlLndyYXAuaGVpZ2h0KCkgPyAwIDogYyA8IDAgLSAobCAtIG4pID8gMCAtIChsIC0gbikgOiBjID4gMCA/IDAgOiBjLCBlLmMuaGFzQ2xhc3MoImRyYWdnZWQiKSB8fCAoInZlcnRpY2FsIiA9PT0gZS5kaXJlY3Rpb24gPyBlLndyYXAuZGF0YSgidG1tb3ZlIiwgdHBHUy5nc2FwLnRvKGUud3JhcCwgLjUsIHsKICAgICAgICAgICAgICAgICAgICB0b3A6IGMgKyAicHgiLAogICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMuaW5PdXQiCiAgICAgICAgICAgICAgICB9KSkgOiBlLndyYXAuZGF0YSgidG1tb3ZlIiwgdHBHUy5nc2FwLnRvKGUud3JhcCwgLjUsIHsKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjICsgInB4IiwKICAgICAgICAgICAgICAgICAgICBlYXNlOiAicG93ZXIzLmluT3V0IgogICAgICAgICAgICAgICAgfSkpLCBlLndyYXAuZGF0YSgib2Zmc2V0IiwgYykpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG8gPSBmdW5jdGlvbihlLCBpLCBhLCByLCBvLCBzKSB7CiAgICAgICAgICAgIHZhciBuID0gYS5wYXJlbnQoKS5maW5kKCIudHAtIiArIHMgKyAicyIpLAogICAgICAgICAgICAgICAgZCA9IG4uZmluZCgiLnRwLSIgKyBzICsgInMtaW5uZXItd3JhcHBlciIpLAogICAgICAgICAgICAgICAgbCA9IG4uZmluZCgiLnRwLSIgKyBzICsgIi1tYXNrIiksCiAgICAgICAgICAgICAgICBjID0gInZlcnRpY2FsIiA9PT0gci5kaXJlY3Rpb24gPyByLmN3IDogci5jdyAqIG8gKyBwYXJzZUZsb2F0KHIuc3BhY2UpICogKG8gLSAxKSwKICAgICAgICAgICAgICAgIHAgPSAidmVydGljYWwiID09PSByLmRpcmVjdGlvbiA/IHIuY2ggKiBvICsgcGFyc2VJbnQoci5zcGFjZSkgKiAobyAtIDEpIDogci5jaCwKICAgICAgICAgICAgICAgIGcgPSAidmVydGljYWwiID09PSByLmRpcmVjdGlvbiA/IHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogci5jdyArICJweCIKICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByLmNoICsgInB4IgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKGkuYWRkKHRwR1MuZ3NhcC5zZXQobiwgZykpLCBpLmFkZCh0cEdTLmdzYXAuc2V0KGQsIHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogYyArICJweCIsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBwICsgInB4IgogICAgICAgICAgICAgICAgfSkpLCAiaG9yaXpvbnRhbCIgPT09IHIuZGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IE1hdGgubWluKGMsIHIuY3cgKiByLnZpc2libGVBbW91bnQgKyBwYXJzZUZsb2F0KHIuc3BhY2UpICogKHIudmlzaWJsZUFtb3VudCAtIDEpKTsKICAgICAgICAgICAgICAgIGkuYWRkKHRwR1MuZ3NhcC5zZXQobCwgewogICAgICAgICAgICAgICAgICAgIHdpZHRoOiB1ICsgInB4IiwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHAgKyAicHgiCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBoID0gTWF0aC5taW4ocCwgci5jaCAqIHIudmlzaWJsZUFtb3VudCArIHBhcnNlRmxvYXQoci5zcGFjZSkgKiAoci52aXNpYmxlQW1vdW50IC0gMSkpOwogICAgICAgICAgICAgICAgaS5hZGQodHBHUy5nc2FwLnNldChsLCB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGMgKyAicHgiLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogaCArICJweCIKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG51bGwgIT09IGQub3V0ZXJXaWR0aCgpICYmICh0W2VdLnRodW1iUmVzaXplZCA9ICEwKTsKICAgICAgICAgICAgdmFyIG0gPSBkLmZpbmQoIi50cC0iICsgcyk7CiAgICAgICAgICAgIHJldHVybiBtICYmIGpRdWVyeS5lYWNoKG0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICJ2ZXJ0aWNhbCIgPT09IHIuZGlyZWN0aW9uID8gaS5hZGQodHBHUy5nc2FwLnNldCh0LCB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiBlICogKHIuY2ggKyBwYXJzZUludCh2b2lkIDAgPT09IHIuc3BhY2UgPyAwIDogci5zcGFjZSwgMCkpLAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiByLmN3ICsgInB4IiwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHIuY2ggKyAicHgiCiAgICAgICAgICAgICAgICB9KSkgOiAiaG9yaXpvbnRhbCIgPT09IHIuZGlyZWN0aW9uICYmIGkuYWRkKHRwR1MuZ3NhcC5zZXQodCwgewogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGUgKiAoci5jdyArIHBhcnNlSW50KHZvaWQgMCA9PT0gci5zcGFjZSA/IDAgOiByLnNwYWNlLCAwKSksCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIuY3cgKyAicHgiLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogci5jaCArICJweCIKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSwgaQogICAgICAgIH0sCiAgICAgICAgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgITAgPT09IHRbZV0ubmF2aWdhdGlvbi5rZXlib2FyZE5hdmlnYXRpb24gJiYgdC5kb2N1bWVudC5vbigia2V5ZG93biIsIGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgIGlmICgiaG9yaXpvbnRhbCIgPT0gdFtlXS5uYXZpZ2F0aW9uLmtleWJvYXJkX2RpcmVjdGlvbiAmJiAzOSA9PSBpLmtleUNvZGUgfHwgInZlcnRpY2FsIiA9PSB0W2VdLm5hdmlnYXRpb24ua2V5Ym9hcmRfZGlyZWN0aW9uICYmIDQwID09IGkua2V5Q29kZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHRbZV0ua2V5ZG93bl90aW1lX3N0YW1wICYmIChuZXcgRGF0ZSkuZ2V0VGltZSgpIC0gdFtlXS5rZXlkb3duX3RpbWVfc3RhbXAgPCAxZTMpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0W2VdLnNjX2luZGljYXRvciA9ICJhcnJvdyIsIHRbZV0uc2NfaW5kaWNhdG9yX2RpciA9IDAsICJjYXJvdXNlbCIgPT09IHRbZV0uc2xpZGVyVHlwZSAmJiAodFtlXS5jdE5hdkVsZW1lbnQgPSAhMCksIHQuY2FsbGluZ05ld1NsaWRlKGUsIDEsICJjYXJvdXNlbCIgPT09IHRbZV0uc2xpZGVyVHlwZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgiaG9yaXpvbnRhbCIgPT0gdFtlXS5uYXZpZ2F0aW9uLmtleWJvYXJkX2RpcmVjdGlvbiAmJiAzNyA9PSBpLmtleUNvZGUgfHwgInZlcnRpY2FsIiA9PSB0W2VdLm5hdmlnYXRpb24ua2V5Ym9hcmRfZGlyZWN0aW9uICYmIDM4ID09IGkua2V5Q29kZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHRbZV0ua2V5ZG93bl90aW1lX3N0YW1wICYmIChuZXcgRGF0ZSkuZ2V0VGltZSgpIC0gdFtlXS5rZXlkb3duX3RpbWVfc3RhbXAgPCAxZTMpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0W2VdLnNjX2luZGljYXRvciA9ICJhcnJvdyIsIHRbZV0uc2NfaW5kaWNhdG9yX2RpciA9IDEsICJjYXJvdXNlbCIgPT09IHRbZV0uc2xpZGVyVHlwZSAmJiAodFtlXS5jdE5hdkVsZW1lbnQgPSAhMCksIHQuY2FsbGluZ05ld1NsaWRlKGUsIC0xLCAiY2Fyb3VzZWwiID09PSB0W2VdLnNsaWRlclR5cGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0W2VdLmtleWRvd25fdGltZV9zdGFtcCA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBuID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAhMCAhPT0gdFtlXS5uYXZpZ2F0aW9uLm1vdXNlU2Nyb2xsTmF2aWdhdGlvbiAmJiAib24iICE9PSB0W2VdLm5hdmlnYXRpb24ubW91c2VTY3JvbGxOYXZpZ2F0aW9uICYmICJjYXJvdXNlbCIgIT09IHRbZV0ubmF2aWdhdGlvbi5tb3VzZVNjcm9sbE5hdmlnYXRpb24gfHwgdFtlXS5jLm9uKCJ3aGVlbCBtb3VzZXdoZWVsIERPTU1vdXNlU2Nyb2xsIiwgZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJkZWx0YVkiIGluIGUgfHwgImRlbHRhWCIgaW4gZSA/IHQgPSAwICE9IGUuZGVsdGFZICYmIC0wICE9IGUuZGVsdGFZIHx8ICEoZS5kZWx0YVggPCAwIHx8IGUuZGVsdGFYID4gMCkgPyBlLmRlbHRhWSA6IGUuZGVsdGFYIDogKCJkZXRhaWwiIGluIGUgJiYgKHQgPSBlLmRldGFpbCksICJ3aGVlbERlbHRhIiBpbiBlICYmICh0ID0gLWUud2hlZWxEZWx0YSAvIDEyMCksICJ3aGVlbERlbHRhWSIgaW4gZSAmJiAodCA9IC1lLndoZWVsRGVsdGFZIC8gMTIwKSksICgodCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL21vemlsbGEvaSkgPyAxMCAqIHQgOiB0KSA+IDMwMCB8fCB0IDwgLTMwMCkgJiYgKHQgLz0gMTApLCB0CiAgICAgICAgICAgICAgICAgICAgfShpLm9yaWdpbmFsRXZlbnQpLAogICAgICAgICAgICAgICAgICAgIHIgPSAhMSwKICAgICAgICAgICAgICAgICAgICBvID0gMCA9PSB0W2VdLnByX2FjdGl2ZV9rZXkgfHwgMCA9PSB0W2VdLnByX3Byb2Nlc3Npbmdfa2V5LAogICAgICAgICAgICAgICAgICAgIHMgPSB0W2VdLnByX2FjdGl2ZV9rZXkgPT0gdFtlXS5zbGlkZWFtb3VudCAtIDEgfHwgdFtlXS5wcl9wcm9jZXNzaW5nX2tleSA9PSB0W2VdLnNsaWRlYW1vdW50IC0gMSwKICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwICE9PSB0W2VdLnRvcGMgPyB0W2VdLnRvcGNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgOiAwID09PSB0W2VdLmNhbnYuaGVpZ2h0ID8gdFtlXS5jcGFyWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDogdFtlXS5jWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgaWYgKChuLnRvcCA+IDAgJiYgbi5ib3R0b20gPCB0LndpbkggPyAxIDogbi50b3AgPj0gMCAmJiBuLmJvdHRvbSA+PSB0LndpbkggPyAodC53aW5IIC0gbi50b3ApIC8gbi5oZWlnaHQgOiBuLnRvcCA8PSAwICYmIG4uYm90dG9tIDw9IHQud2luSCA/IG4uYm90dG9tIC8gbi5oZWlnaHQgOiAxKSA+PSB0W2VdLm5hdmlnYXRpb24ud2hlZWxWaWV3UG9ydCkgewogICAgICAgICAgICAgICAgICAgIGlmICgicmV2ZXJzZSIgPT0gdFtlXS5uYXZpZ2F0aW9uLm1vdXNlU2Nyb2xsUmV2ZXJzZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvLCBvID0gZAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoImNhcm91c2VsIiA9PT0gdFtlXS5zbGlkZXJUeXBlICYmICExID09PSB0W2VdLmNhcm91c2VsLnNuYXApIHQuc3dpcGVBbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvOiB0W2VdLmNhcm91c2VsLnNsaWRlX29mZnNldCArIDUgKiBhLAogICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGEgPCAwID8gImxlZnQiIDogInJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiAicG93ZXIyLm91dCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBoYXNlOiAibW92ZSIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBhIDwgMCA/IC0xIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgdFtlXS5zY19pbmRpY2F0b3JfZGlyID0gInJldmVyc2UiID09PSB0W2VdLm5hdmlnYXRpb24ubW91c2VTY3JvbGxSZXZlcnNlICYmIGwgPCAwIHx8ICJyZXZlcnNlIiAhPT0gdFtlXS5uYXZpZ2F0aW9uLm1vdXNlU2Nyb2xsUmV2ZXJzZSAmJiBsID4gMCA/IDAgOiAxLCAiY2Fyb3VzZWwiID09IHRbZV0ubmF2aWdhdGlvbi5tb3VzZVNjcm9sbE5hdmlnYXRpb24gfHwgMCA9PT0gdFtlXS5zY19pbmRpY2F0b3JfZGlyICYmICFzIHx8IDEgPT09IHRbZV0uc2NfaW5kaWNhdG9yX2RpciAmJiAhbyA/IHZvaWQgMCA9PT0gdFtlXS5wcl9wcm9jZXNzaW5nX2tleSAmJiAhMCAhPT0gdFtlXS5qdXN0bW91c2VTY3JvbGxlZCA/ICh0W2VdLnNjX2luZGljYXRvciA9ICJhcnJvdyIsICJjYXJvdXNlbCIgPT09IHRbZV0uc2xpZGVyVHlwZSAmJiAodFtlXS5jdE5hdkVsZW1lbnQgPSAhMCksIHQuY2FsbGluZ05ld1NsaWRlKGUsIDAgPT09IHRbZV0uc2NfaW5kaWNhdG9yX2RpciA/IDEgOiAtMSwgImNhcm91c2VsIiA9PT0gdFtlXS5zbGlkZXJUeXBlKSwgdFtlXS5qdXN0bW91c2VTY3JvbGxlZCA9ICEwLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdFtlXS5qdXN0bW91c2VTY3JvbGxlZCA9ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbZV0ubmF2aWdhdGlvbi53aGVlbENhbGxEZWxheSkpIDogZGVsZXRlIHRbZV0uc2NfaW5kaWNhdG9yX2RpciA6ICEwICE9PSB0W2VdLmp1c3Rtb3VzZVNjcm9sbGVkICYmIChyID0gITApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXIgfHwgKGkucHJldmVudERlZmF1bHQoaSksICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIGEgPSAhMTsKICAgICAgICAgICAgZm9yICh2YXIgciBpbiAodm9pZCAwID09PSB0LnBhdGggfHwgaSkgJiYgKGEgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGUgJiYgZSAhPT0gZG9jdW1lbnQ7IGUgPSBlLnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnRhZ05hbWUgPT09IHQpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgfSh0LnRhcmdldCwgZSkpLCB0LnBhdGgpIHQucGF0aC5oYXNPd25Qcm9wZXJ0eShyKSAmJiB0LnBhdGhbcl0udGFnTmFtZSA9PT0gZSAmJiAoYSA9ICEwKTsKICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9LAogICAgICAgIGwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBhID0gdFtlXS5jYXJvdXNlbCwKICAgICAgICAgICAgICAgIHIgPSB0LmlzX2FuZHJvaWQoKTsKICAgICAgICAgICAgalF1ZXJ5KCIuYnVsbGV0LCAuYnVsbGV0cywgLnRwLWJ1bGxldHMsIC50cGFycm93cyIpLmFkZENsYXNzKCJub1N3aXBlIiksIHRbZV0ubmF2aWdhdGlvbi50b3VjaCA9IHZvaWQgMCA9PT0gdFtlXS5uYXZpZ2F0aW9uLnRvdWNoID8ge30gOiB0W2VdLm5hdmlnYXRpb24udG91Y2gsIHRbZV0ubmF2aWdhdGlvbi50b3VjaC5zd2lwZV9kaXJlY3Rpb24gPSB2b2lkIDAgPT09IHRbZV0ubmF2aWdhdGlvbi50b3VjaC5zd2lwZV9kaXJlY3Rpb24gPyAiaG9yaXpvbnRhbCIgOiB0W2VdLm5hdmlnYXRpb24udG91Y2guc3dpcGVfZGlyZWN0aW9uLCBqUXVlcnkoIi5ycy1uYXYtZWxlbWVudCIpLnJzc3dpcGUoewogICAgICAgICAgICAgICAgYWxsb3dQYWdlU2Nyb2xsOiAidmVydGljYWwiLAogICAgICAgICAgICAgICAgdHJpZ2dlck9uVG91Y2hMZWF2ZTogITAsCiAgICAgICAgICAgICAgICB0cmVzaG9sZDogdFtlXS5uYXZpZ2F0aW9uLnRvdWNoLnN3aXBlX3RyZXNob2xkLAogICAgICAgICAgICAgICAgZmluZ2VyczogdFtlXS5uYXZpZ2F0aW9uLnRvdWNoLnN3aXBlX21pbl90b3VjaGVzID4gNSA/IDEgOiB0W2VdLm5hdmlnYXRpb24udG91Y2guc3dpcGVfbWluX3RvdWNoZXMsCiAgICAgICAgICAgICAgICBleGNsdWRlZEVsZW1lbnRzOiAiYnV0dG9uLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgLm5vU3dpcGUsIC5ycy13YWN0aW9uIiwKICAgICAgICAgICAgICAgIHRhcDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQpIHZhciBpID0galF1ZXJ5KHQpLmNsb3Nlc3QoInJzLXRodW1iIik7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBpICYmIGkubGVuZ3RoID4gMCA/IGkudHJpZ2dlcigiY2xpY2siKSA6IChpID0galF1ZXJ5KHQpLmNsb3Nlc3QoInJzLXRhYiIpKS5sZW5ndGggPiAwID8gaS50cmlnZ2VyKCJjbGljayIpIDogKGkgPSBqUXVlcnkodCkuY2xvc2VzdCgicnMtYnVsbGV0IikpLmxlbmd0aCA+IDAgJiYgaS50cmlnZ2VyKCJjbGljayIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3dpcGVTdGF0dXM6IGZ1bmN0aW9uKGksIG8sIHMsIG4sIGwsIGMsIHApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoInN0YXJ0IiAhPT0gbyAmJiAibW92ZSIgIT09IG8gJiYgImVuZCIgIT09IG8gJiYgImNhbmNlbCIgIT0gbykgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gZCgiUlMtVEhVTUIiLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGQoIlJTLVRBQiIsIGkpOwogICAgICAgICAgICAgICAgICAgICExID09PSB1ICYmICExID09PSBtICYmICEwICE9PSAodSA9ICJSUy1USFVNQlMtV1JBUCIgPT09IGkudGFyZ2V0LnRhZ05hbWUgfHwgIlJTLVRIVU1CUyIgPT09IGkudGFyZ2V0LnRhZ05hbWUgfHwgaS50YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoInRwLXRodW1iLW1hc2siKSA+PSAwKSAmJiAobSA9ICJSUy1UQUJTLVdSQVAiID09PSBpLnRhcmdldC50YWdOYW1lIHx8ICJSUy1UQUJTIiA9PT0gaS50YXJnZXQudGFnTmFtZSB8fCBpLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigidHAtdGFiLW1hc2siKSA+PSAwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdiA9ICJzdGFydCIgPT09IG8gPyAwIDogciA/IHBbMF0uZW5kLnggLSBwWzBdLnN0YXJ0LnggOiBpLnBhZ2VYIC0gYS5zY3JlZW5YLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gInN0YXJ0IiA9PT0gbyA/IDAgOiByID8gcFswXS5lbmQueSAtIHBbMF0uc3RhcnQueSA6IGkucGFnZVkgLSBhLnNjcmVlblksCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB1ID8gIi50cC10aHVtYnMiIDogIi50cC10YWJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHUgPyAiLnRwLXRodW1iLW1hc2siIDogIi50cC10YWItbWFzayIsCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB1ID8gIi50cC10aHVtYnMtaW5uZXItd3JhcHBlciIgOiAiLnRwLXRhYnMtaW5uZXItd3JhcHBlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSB1ID8gIi50cC10aHVtYiIgOiAiLnRwLXRhYiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSB1ID8gdFtlXS5uYXZpZ2F0aW9uLnRodW1ibmFpbHMgOiB0W2VdLm5hdmlnYXRpb24udGFicywKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHRbZV0uY3Bhci5maW5kKGIpLAogICAgICAgICAgICAgICAgICAgICAgICBrID0geC5maW5kKHcpLAogICAgICAgICAgICAgICAgICAgICAgICBMID0gUy5kaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIFIgPSAidmVydGljYWwiID09PSBMID8gay5oZWlnaHQoKSA6IGsud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgTyA9ICJ2ZXJ0aWNhbCIgPT09IEwgPyB4LmhlaWdodCgpIDogeC53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICBJID0gInZlcnRpY2FsIiA9PT0gTCA/IHguZmluZChfKS5maXJzdCgpLm91dGVySGVpZ2h0KCEwKSArIHBhcnNlRmxvYXQoUy5zcGFjZSkgOiB4LmZpbmQoXykuZmlyc3QoKS5vdXRlcldpZHRoKCEwKSArIHBhcnNlRmxvYXQoUy5zcGFjZSksCiAgICAgICAgICAgICAgICAgICAgICAgIFQgPSB2b2lkIDAgPT09IGsuZGF0YSgib2Zmc2V0IikgPyAwIDogcGFyc2VJbnQoay5kYXRhKCJvZmZzZXQiKSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSAwOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobykgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzdGFydCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVydGljYWwiID09PSBMICYmIGkucHJldmVudERlZmF1bHQoKSwgYS5zY3JlZW5YID0gciA/IHBbMF0uZW5kLnggOiBpLnBhZ2VYLCBhLnNjcmVlblkgPSByID8gcFswXS5lbmQueSA6IGkucGFnZVksIHRbZV0uY3Bhci5maW5kKHkpLmFkZENsYXNzKCJkcmFnZ2VkIiksIFQgPSAidmVydGljYWwiID09PSBMID8gay5wb3NpdGlvbigpLnRvcCA6IGsucG9zaXRpb24oKS5sZWZ0LCBrLmRhdGEoIm9mZnNldCIsIFQpLCBrLmRhdGEoInRtbW92ZSIpICYmIGsuZGF0YSgidG1tb3ZlIikucGF1c2UoKSwgdFtlXS5zb21lTmF2SXNEcmFnZ2VkID0gITAsIGgoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW92ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUiA8PSBPKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gKEMgPSBUICsgKCJ2ZXJ0aWNhbCIgPT09IEwgPyBmIDogdikpID4gMCA/ICJob3Jpem9udGFsIiA9PT0gTCA/IEMgLSBrLndpZHRoKCkgKiAoQyAvIGsud2lkdGgoKSAqIEMgLyBrLndpZHRoKCkpIDogQyAtIGsuaGVpZ2h0KCkgKiAoQyAvIGsuaGVpZ2h0KCkgKiBDIC8gay5oZWlnaHQoKSkgOiBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEEgPSAidmVydGljYWwiID09PSBMID8gMCAtIChrLmhlaWdodCgpIC0geC5oZWlnaHQoKSkgOiAwIC0gKGsud2lkdGgoKSAtIHgud2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gQyA8IEEgPyAiaG9yaXpvbnRhbCIgPT09IEwgPyBDICsgay53aWR0aCgpICogKEMgLSBBKSAvIGsud2lkdGgoKSAqIChDIC0gQSkgLyBrLndpZHRoKCkgOiBDICsgay5oZWlnaHQoKSAqIChDIC0gQSkgLyBrLmhlaWdodCgpICogKEMgLSBBKSAvIGsuaGVpZ2h0KCkgOiBDLCAidmVydGljYWwiID09PSBMID8gdHBHUy5nc2FwLnNldChrLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBDICsgInB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiB0cEdTLmdzYXAuc2V0KGssIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBDICsgInB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGcodFtlXS5oaWRlQWxsTmF2RWxlbWVudFRpbWVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjYW5jZWwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEMgPSBUICsgKCJ2ZXJ0aWNhbCIgPT09IEwgPyBmIDogdiksIEMgPSAoQyA9ICJ2ZXJ0aWNhbCIgPT09IEwgPyBDIDwgMCAtIChrLmhlaWdodCgpIC0geC5oZWlnaHQoKSkgPyAwIC0gKGsuaGVpZ2h0KCkgLSB4LmhlaWdodCgpKSA6IEMgOiBDIDwgMCAtIChrLndpZHRoKCkgLSB4LndpZHRoKCkpID8gMCAtIChrLndpZHRoKCkgLSB4LndpZHRoKCkpIDogQykgPiAwID8gMCA6IEMsIEMgPSBNYXRoLmFicyhuKSA+IEkgLyAxMCA/IG4gPD0gMCA/IE1hdGguZmxvb3IoQyAvIEkpICogSSA6IE1hdGguY2VpbChDIC8gSSkgKiBJIDogbiA8IDAgPyBNYXRoLmNlaWwoQyAvIEkpICogSSA6IE1hdGguZmxvb3IoQyAvIEkpICogSSwgQyA9IChDID0gInZlcnRpY2FsIiA9PT0gTCA/IEMgPCAwIC0gKGsuaGVpZ2h0KCkgLSB4LmhlaWdodCgpKSA/IDAgLSAoay5oZWlnaHQoKSAtIHguaGVpZ2h0KCkpIDogQyA6IEMgPCAwIC0gKGsud2lkdGgoKSAtIHgud2lkdGgoKSkgPyAwIC0gKGsud2lkdGgoKSAtIHgud2lkdGgoKSkgOiBDKSA+IDAgPyAwIDogQywgInZlcnRpY2FsIiA9PT0gTCA/IHRwR1MuZ3NhcC50byhrLCAuNSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogQyArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogInBvd2VyMy5vdXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHRwR1MuZ3NhcC50byhrLCAuNSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IEMgKyAicHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMub3V0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIEMgPSBDIHx8ICgidmVydGljYWwiID09PSBMID8gay5wb3NpdGlvbigpLnRvcCA6IGsucG9zaXRpb24oKS5sZWZ0KSwgay5kYXRhKCJvZmZzZXQiLCBDKSwgay5kYXRhKCJkaXN0YW5jZSIsIG4pLCB0W2VdLmNwYXIuZmluZCh5KS5yZW1vdmVDbGFzcygiZHJhZ2dlZCIpLCB0W2VdLnNvbWVOYXZJc0RyYWdnZWQgPSAhMSwgITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCAoImNhcm91c2VsIiAhPT0gdFtlXS5zbGlkZXJUeXBlICYmIChpICYmIHRbZV0ubmF2aWdhdGlvbi50b3VjaC50b3VjaGVuYWJsZWQgfHwgITAgIT09IGkgJiYgdFtlXS5uYXZpZ2F0aW9uLnRvdWNoLnRvdWNoT25EZXNrdG9wKSB8fCAiY2Fyb3VzZWwiID09PSB0W2VdLnNsaWRlclR5cGUgJiYgKGkgJiYgdFtlXS5uYXZpZ2F0aW9uLnRvdWNoLm1vYmlsZUNhcm91c2VsIHx8ICEwICE9PSBpICYmIHRbZV0ubmF2aWdhdGlvbi50b3VjaC5kZXNrdG9wQ2Fyb3VzZWwpKSAmJiAodFtlXS5wcmV2ZW50Q2xpY2tzID0gITEsIHRbZV0uYy5vbigiY2xpY2siLCBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICB0W2VdLnByZXZlbnRDbGlja3MgJiYgaS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgIH0pLCB0W2VdLmMucnNzd2lwZSh7CiAgICAgICAgICAgICAgICBhbGxvd1BhZ2VTY3JvbGw6ICJ2ZXJ0aWNhbCIsCiAgICAgICAgICAgICAgICB0cmlnZ2VyT25Ub3VjaExlYXZlOiAhMCwKICAgICAgICAgICAgICAgIHRyZXNob2xkOiB0W2VdLm5hdmlnYXRpb24udG91Y2guc3dpcGVfdHJlc2hvbGQsCiAgICAgICAgICAgICAgICBmaW5nZXJzOiB0W2VdLm5hdmlnYXRpb24udG91Y2guc3dpcGVfbWluX3RvdWNoZXMgPiA1ID8gMSA6IHRbZV0ubmF2aWdhdGlvbi50b3VjaC5zd2lwZV9taW5fdG91Y2hlcywKICAgICAgICAgICAgICAgIGV4Y2x1ZGVkRWxlbWVudHM6ICJsYWJlbCwgYnV0dG9uLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgLm5vU3dpcGUsIC5ycy1uYXYtZWxlbWVudCIsCiAgICAgICAgICAgICAgICBzd2lwZVN0YXR1czogZnVuY3Rpb24obywgcywgbiwgZCwgbCwgYywgcCkgewogICAgICAgICAgICAgICAgICAgIHRbZV0ucHJldmVudENsaWNrcyA9ICEwOwogICAgICAgICAgICAgICAgICAgIHZhciBnID0gInN0YXJ0IiA9PT0gcyA/IDAgOiByID8gcFswXS5lbmQueCAtIHBbMF0uc3RhcnQueCA6IG8ucGFnZVggLSBhLnNjcmVlblgsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAic3RhcnQiID09PSBzID8gMCA6IHIgPyBwWzBdLmVuZC54IC0gcFswXS5zdGFydC55IDogby5wYWdlWSAtIGEuc2NyZWVuWTsKICAgICAgICAgICAgICAgICAgICBpZiAoISgiY2Fyb3VzZWwiID09PSB0W2VdLnNsaWRlclR5cGUgJiYgdFtlXS5jYXJvdXNlbC53cmFwd2lkdGggPiB0W2VdLmNhcm91c2VsLm1heHdpZHRoICYmICJjZW50ZXIiICE9PSB0W2VdLmNhcm91c2VsLmhvcml6b250YWxfYWxpZ24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiY2Fyb3VzZWwiICE9PSB0W2VdLnNsaWRlclR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZW5kIiA9PSBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRbZV0uc2NfaW5kaWNhdG9yID0gImFycm93IiwgImhvcml6b250YWwiID09IHRbZV0ubmF2aWdhdGlvbi50b3VjaC5zd2lwZV9kaXJlY3Rpb24gJiYgImxlZnQiID09IG4gfHwgInZlcnRpY2FsIiA9PSB0W2VdLm5hdmlnYXRpb24udG91Y2guc3dpcGVfZGlyZWN0aW9uICYmICJ1cCIgPT0gbikgcmV0dXJuIHRbZV0uc2NfaW5kaWNhdG9yX2RpciA9IDAsIHQuY2FsbGluZ05ld1NsaWRlKGUsIDEpLCAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImhvcml6b250YWwiID09IHRbZV0ubmF2aWdhdGlvbi50b3VjaC5zd2lwZV9kaXJlY3Rpb24gJiYgInJpZ2h0IiA9PSBuIHx8ICJ2ZXJ0aWNhbCIgPT0gdFtlXS5uYXZpZ2F0aW9uLnRvdWNoLnN3aXBlX2RpcmVjdGlvbiAmJiAiZG93biIgPT0gbikgcmV0dXJuIHRbZV0uc2NfaW5kaWNhdG9yX2RpciA9IDEsIHQuY2FsbGluZ05ld1NsaWRlKGUsIC0xKSwgITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoKGEucHJldmVudFN3aXBlIHx8IGkgJiYgKCJsZWZ0IiA9PT0gbiB8fCAicmlnaHQiID09PSBuKSkgJiYgby5wcmV2ZW50RGVmYXVsdCgpLCB2b2lkIDAgIT09IGEucG9zaXRpb25hbmltICYmIGEucG9zaXRpb25hbmltLnBhdXNlKCksIGEuY2Fyb3VzZWxBdXRvbWF0aWMgPSAhMSwgcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic3RhcnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChhLnN3aXBlTWFpblRpbWVyKSwgYS5iZWZvcmVTd2lwZU9mZmV0ID0gYS5zbGlkZV9vZmZzZXQsIGEuZm9jdXNlZEJlZm9yZVN3aXBlID0gYS5mb2N1c2VkLCBhLmJlZm9yZURyYWdTdGF0dXMgPSB0W2VdLnNsaWRlcnN0YXR1cywgdFtlXS5jLnRyaWdnZXIoInN0b3B0aW1lciIpLCBhLnN3aXBlU3RhcnRQb3MgPSByID8gcFswXS5zdGFydC54IDogby5wYWdlWCwgYS5zd2lwZVN0YXJ0VGltZSA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpLCBhLnNjcmVlblggPSByID8gcFswXS5lbmQueCA6IG8ucGFnZVgsIGEuc2NyZWVuWSA9IHIgPyBwWzBdLmVuZC55IDogby5wYWdlWSwgdm9pZCAwICE9PSBhLnBvc2l0aW9uYW5pbSAmJiAoYS5wb3NpdGlvbmFuaW0ucGF1c2UoKSwgYS5jYXJvdXNlbEF1dG9tYXRpYyA9ICExKSwgYS5vdmVycHVsbCA9ICJub25lIiwgYS53cmFwLmFkZENsYXNzKCJkcmFnZ2VkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtb3ZlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImxlZnQiICE9PSBuICYmICJyaWdodCIgIT09IG4gfHwgKGEucHJldmVudFN3aXBlID0gITApLCBhLmp1c3REcmFnZ2VkID0gITAsIE1hdGguYWJzKGcpID49IDEwIHx8IHRbZV0uY2Fyb3VzZWwuaXNEcmFnZ2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0W2VdLmNhcm91c2VsLmlzRHJhZ2dlZCA9ICEwLCB0W2VdLmMuZmluZCgiLnJzLXdhY3Rpb24iKS5hZGRDbGFzcygidHAtdGVtcG9yYXJ5ZGlzYWJsZWQiKSwgYS5DQUNIRV9zbGlkZV9vZmZzZXQgPSBhLmJlZm9yZVN3aXBlT2ZmZXQgKyBnLCAhYS5pbmZpbml0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSAiY2VudGVyIiA9PT0gYS5ob3Jpem9udGFsX2FsaWduID8gKGEud3JhcHdpZHRoIC8gMiAtIGEuc2xpZGVfd2lkdGggLyAyIC0gYS5DQUNIRV9zbGlkZV9vZmZzZXQpIC8gYS5zbGlkZV93aWR0aCA6ICgwIC0gYS5DQUNIRV9zbGlkZV9vZmZzZXQpIC8gYS5zbGlkZV93aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub25lIiAhPT0gYS5vdmVycHVsbCAmJiAwICE9PSBhLm92ZXJwdWxsIHx8ICEoaCA8IDAgfHwgaCA+IHRbZV0uc2xpZGVhbW91bnQgLSAxKSA/IGggPj0gMCAmJiBoIDw9IHRbZV0uc2xpZGVhbW91bnQgLSAxICYmIChoID49IDAgJiYgZyA+IGEub3ZlcnB1bGwgfHwgaCA8PSB0W2VdLnNsaWRlYW1vdW50IC0gMSAmJiBnIDwgYS5vdmVycHVsbCkgJiYgKGEub3ZlcnB1bGwgPSAwKSA6IGEub3ZlcnB1bGwgPSBnLCBhLkNBQ0hFX3NsaWRlX29mZnNldCA9IGggPCAwID8gYS5DQUNIRV9zbGlkZV9vZmZzZXQgKyAoYS5vdmVycHVsbCAtIGcpIC8gMS41ICsgTWF0aC5zcXJ0KE1hdGguYWJzKChhLm92ZXJwdWxsIC0gZykgLyAxLjUpKSA6IGggPiB0W2VdLnNsaWRlYW1vdW50IC0gMSA/IGEuQ0FDSEVfc2xpZGVfb2Zmc2V0ICsgKGEub3ZlcnB1bGwgLSBnKSAvIDEuNSAtIE1hdGguc3FydChNYXRoLmFicygoYS5vdmVycHVsbCAtIGcpIC8gMS41KSkgOiBhLkNBQ0hFX3NsaWRlX29mZnNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc3dpcGVBbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGEuQ0FDSEVfc2xpZGVfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiAicG93ZXIyLm91dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaGFzZTogIm1vdmUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNhbmNlbCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChhLnN3aXBlTWFpblRpbWVyKSwgYS5zd2lwZU1haW5UaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnByZXZlbnRTd2lwZSA9ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMCksIHRbZV0uY2Fyb3VzZWwuaXNEcmFnZ2VkID0gITEsIGEud3JhcC5yZW1vdmVDbGFzcygiZHJhZ2dlZCIpLCBhLnN3aXBlRW5kUG9zID0gciA/IHBbMF0uZW5kLnggOiBvLnBhZ2VYLCBhLnN3aXBlRW5kVGltZSA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpLCBhLnN3aXBlRHVyYXRpb24gPSBhLnN3aXBlRW5kVGltZSAtIGEuc3dpcGVTdGFydFRpbWUsIGEuc3dpcGVEaXN0YW5jZSA9IGkgPyBhLnN3aXBlRW5kUG9zIC0gYS5zd2lwZVN0YXJ0UG9zIDogKGEuc3dpcGVFbmRQb3MgLSBhLnN3aXBlU3RhcnRQb3MpIC8gMS41LCBhLnN3aXBlUG93ZXIgPSBhLnN3aXBlRGlzdGFuY2UgLyBhLnN3aXBlRHVyYXRpb24sIGEuQ0FDSEVfc2xpZGVfb2Zmc2V0ID0gYS5zbGlkZV9vZmZzZXQgKyBhLnN3aXBlRGlzdGFuY2UgKiBNYXRoLmFicyhhLnN3aXBlUG93ZXIpLCBNYXRoLmFicyhnKSA8IDUgJiYgTWF0aC5hYnModSkgPCA1KSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnN3aXBlQW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogYS5DQUNIRV9zbGlkZV9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2xpZGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICJwb3dlcjIub3V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICJlbmQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksICJwbGF5aW5nIiA9PT0gYS5iZWZvcmVEcmFnU3RhdHVzICYmIHRbZV0uYy50cmlnZ2VyKCJyZXN0YXJ0dGltZXIiKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFtlXS5jLmZpbmQoIi5ycy13YWN0aW9uIikucmVtb3ZlQ2xhc3MoInRwLXRlbXBvcmFyeWRpc2FibGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxOSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0YXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRbZV0ucHJldmVudENsaWNrcyA9ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKSwgImNhcm91c2VsIiA9PT0gdFtlXS5zbGlkZXJUeXBlICYmIChpICYmIDAgPT0gdFtlXS5uYXZpZ2F0aW9uLnRvdWNoLm1vYmlsZUNhcm91c2VsIHx8ICEwICE9PSBpICYmICExID09PSB0W2VdLm5hdmlnYXRpb24udG91Y2guZGVza3RvcENhcm91c2VsKSAmJiBhLndyYXAuYWRkQ2xhc3MoIm5vc3dpcGUiKSwgdFtlXS5uYXZpZ2F0aW9uLnRvdWNoLmRyYWdfYmxvY2tfdmVydGljYWwgJiYgdFtlXS5jLmFkZENsYXNzKCJkaXNhYmxlVmVydGljYWxTY3JvbGwiKQogICAgICAgIH0sCiAgICAgICAgYyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5oaWRlX2RlbGF5ID0gdC5pc051bWVyaWMocGFyc2VJbnQoZS5oaWRlX2RlbGF5LCAwKSkgPyBlLmhpZGVfZGVsYXkgOiAuMiwgZS5oaWRlX2RlbGF5X21vYmlsZSA9IHQuaXNOdW1lcmljKHBhcnNlSW50KGUuaGlkZV9kZWxheV9tb2JpbGUsIDApKSA/IGUuaGlkZV9kZWxheV9tb2JpbGUgOiAuMgogICAgICAgIH0sCiAgICAgICAgcCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5lbmFibGUKICAgICAgICB9LAogICAgICAgIGcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGNsZWFyVGltZW91dChlKQogICAgICAgIH0sCiAgICAgICAgdSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIGkgPSB0W2VdLm5hdmlnYXRpb24ubWFpbnR5cGVzOwogICAgICAgICAgICBmb3IgKHZhciBhIGluIGkpIGkuaGFzT3duUHJvcGVydHkoYSkgJiYgcCh0W2VdLm5hdmlnYXRpb25baVthXV0pICYmIHZvaWQgMCAhPT0gdFtlXS5uYXZpZ2F0aW9uW2lbYV1dLmMgJiYgKGcodFtlXS5uYXZpZ2F0aW9uW2lbYV1dLnNob3dDYWxsKSwgdFtlXS5uYXZpZ2F0aW9uW2lbYV1dLnNob3dDYWxsID0gc2V0VGltZW91dChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICBnKGkuaGlkZUNhbGwpLCBpLmhpZGVfb25sZWF2ZSAmJiAhMCAhPT0gdFtlXS50cE1vdXNlT3ZlciB8fCAodm9pZCAwID09PSBpLnR3ZWVuID8gaS50d2VlbiA9IHYoaSkgOiBpLnR3ZWVuLnBsYXkoKSkKICAgICAgICAgICAgfSwgdFtlXS5uYXZpZ2F0aW9uW2lbYV1dLmhpZGVfb25sZWF2ZSAmJiAhMCAhPT0gdFtlXS50cE1vdXNlT3ZlciA/IDAgOiBwYXJzZUludCh0W2VdLm5hdmlnYXRpb25baVthXV0uYW5pbURlbGF5KSwgdFtlXS5uYXZpZ2F0aW9uW2lbYV1dKSkKICAgICAgICB9LAogICAgICAgIGggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBpID0gdFtlXS5uYXZpZ2F0aW9uLm1haW50eXBlczsKICAgICAgICAgICAgZm9yICh2YXIgYSBpbiBpKSBpLmhhc093blByb3BlcnR5KGEpICYmIHZvaWQgMCAhPT0gdFtlXS5uYXZpZ2F0aW9uW2lbYV1dICYmIHRbZV0ubmF2aWdhdGlvbltpW2FdXS5oaWRlX29ubGVhdmUgJiYgcCh0W2VdLm5hdmlnYXRpb25baVthXV0pICYmIGcodFtlXS5uYXZpZ2F0aW9uW2lbYV1dLmhpZGVDYWxsKQogICAgICAgIH0sCiAgICAgICAgbSA9IGZ1bmN0aW9uKGUsIGEpIHsKICAgICAgICAgICAgdmFyIHIgPSB0W2VdLm5hdmlnYXRpb24ubWFpbnR5cGVzOwogICAgICAgICAgICBmb3IgKHZhciBvIGluIHIpIHIuaGFzT3duUHJvcGVydHkobykgJiYgdm9pZCAwICE9PSB0W2VdLm5hdmlnYXRpb25bcltvXV0gJiYgdFtlXS5uYXZpZ2F0aW9uW3Jbb11dLmhpZGVfb25sZWF2ZSAmJiBwKHRbZV0ubmF2aWdhdGlvbltyW29dXSkgJiYgKGcodFtlXS5uYXZpZ2F0aW9uW3Jbb11dLmhpZGVDYWxsKSwgdFtlXS5uYXZpZ2F0aW9uW3Jbb11dLmhpZGVDYWxsID0gc2V0VGltZW91dChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBnKGUuc2hvd0NhbGwpLCBlLnR3ZWVuICYmIGUudHdlZW4ucmV2ZXJzZSgpCiAgICAgICAgICAgIH0sIGkgPyBwYXJzZUludCh0W2VdLm5hdmlnYXRpb25bcltvXV0uaGlkZV9kZWxheV9tb2JpbGUsIDApIDogcGFyc2VJbnQodFtlXS5uYXZpZ2F0aW9uW3Jbb11dLmhpZGVfZGVsYXksIDApLCB0W2VdLm5hdmlnYXRpb25bcltvXV0pKQogICAgICAgIH0sCiAgICAgICAgdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5zcGVlZCA9IHZvaWQgMCA9PT0gZS5zcGVlZCA/IC41IDogZS5zcGVlZCwgZS5hbmltcyA9IFtdLCB2b2lkIDAgIT09IGUuYW5pbSAmJiB2b2lkIDAgPT09IGUubGVmdCAmJiBlLmFuaW1zLnB1c2goZS5hbmltKSwgdm9pZCAwICE9PSBlLmxlZnQgJiYgZS5hbmltcy5wdXNoKGUubGVmdC5hbmltKSwgdm9pZCAwICE9PSBlLnJpZ2h0ICYmIGUuYW5pbXMucHVzaChlLnJpZ2h0LmFuaW0pOwogICAgICAgICAgICB2YXIgdCA9IHRwR1MuZ3NhcC50aW1lbGluZSgpOwogICAgICAgICAgICBmb3IgKHZhciBpIGluIHQuYWRkKHRwR1MuZ3NhcC50byhlLmMsIGUuc3BlZWQsIHsKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLAogICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMuaW5PdXQiCiAgICAgICAgICAgICAgICB9KSwgMCksIGUuYW5pbXMpCiAgICAgICAgICAgICAgICBpZiAoZS5hbmltcy5oYXNPd25Qcm9wZXJ0eShpKSkgc3dpdGNoIChlLmFuaW1zW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAibGVmdCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQuYWRkKHRwR1MuZ3NhcC5mcm9tVG8oZS5jW2ldLCBlLnNwZWVkLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAtNTAKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMuaW5PdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAicmlnaHQiOgogICAgICAgICAgICAgICAgICAgICAgICB0LmFkZCh0cEdTLmdzYXAuZnJvbVRvKGUuY1tpXSwgZS5zcGVlZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogNTAKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMuaW5PdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidG9wIjoKICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGQodHBHUy5nc2FwLmZyb21UbyhlLmNbaV0sIGUuc3BlZWQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogLTUwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMuaW5PdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYm90dG9tIjoKICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGQodHBHUy5nc2FwLmZyb21UbyhlLmNbaV0sIGUuc3BlZWQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogNTAKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogInBvd2VyMy5pbk91dCIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ6b29taW4iOgogICAgICAgICAgICAgICAgICAgICAgICB0LmFkZCh0cEdTLmdzYXAuZnJvbVRvKGUuY1tpXSwgZS5zcGVlZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IC41CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogInBvd2VyMy5pbk91dCIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ6b29tb3V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGQodHBHUy5nc2FwLmZyb21UbyhlLmNbaV0sIGUuc3BlZWQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAxLjIKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiAicG93ZXIzLmluT3V0IgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHQucGxheSgpLCB0CiAgICAgICAgfSwKICAgICAgICBmID0gZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICBlLnN0eWxlID0gdm9pZCAwID09PSBlLnN0eWxlID8gIiIgOiBlLnN0eWxlLCBlLmxlZnQuc3R5bGUgPSB2b2lkIDAgPT09IGUubGVmdC5zdHlsZSA/ICIiIDogZS5sZWZ0LnN0eWxlLCBlLnJpZ2h0LnN0eWxlID0gdm9pZCAwID09PSBlLnJpZ2h0LnN0eWxlID8gIiIgOiBlLnJpZ2h0LnN0eWxlLCB2b2lkIDAgPT09IGUubGVmdC5jICYmIChlLmxlZnQuYyA9IGpRdWVyeSgnPHJzLWFycm93IHN0eWxlPSJvcGFjaXR5OjAiIGNsYXNzPSJ0cC1sZWZ0YXJyb3cgdHBhcnJvd3MgJyArIGUuc3R5bGUgKyAiICIgKyBlLmxlZnQuc3R5bGUgKyAnIj4nICsgZS50bXAgKyAiPC9ycy1hcnJvdz4iKSwgdFtpXS5jLmFwcGVuZChlLmxlZnQuYykpLCB2b2lkIDAgPT09IGUucmlnaHQuYyAmJiAoZS5yaWdodC5jID0galF1ZXJ5KCc8cnMtYXJyb3cgc3R5bGU9Im9wYWNpdHk6MCIgIGNsYXNzPSJ0cC1yaWdodGFycm93IHRwYXJyb3dzICcgKyBlLnN0eWxlICsgIiAiICsgZS5yaWdodC5zdHlsZSArICciPicgKyBlLnRtcCArICI8L3JzLWFycm93PiIpLCB0W2ldLmMuYXBwZW5kKGUucmlnaHQuYykpLCBlW2UucnRsID8gImxlZnQiIDogInJpZ2h0Il0uYy5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICJjYXJvdXNlbCIgPT09IHRbaV0uc2xpZGVyVHlwZSAmJiAodFtpXS5jdE5hdkVsZW1lbnQgPSAhMCksIHRbaV0uc2NfaW5kaWNhdG9yID0gImFycm93IiwgdFtpXS5zY19pbmRpY2F0b3JfZGlyID0gMCwgdFtpXS5jLnJldm5leHQoKQogICAgICAgICAgICB9KSwgZVtlLnJ0bCA/ICJyaWdodCIgOiAibGVmdCJdLmMub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAiY2Fyb3VzZWwiID09PSB0W2ldLnNsaWRlclR5cGUgJiYgKHRbaV0uY3ROYXZFbGVtZW50ID0gITApLCB0W2ldLnNjX2luZGljYXRvciA9ICJhcnJvdyIsIHRbaV0uc2NfaW5kaWNhdG9yX2RpciA9IDEsIHRbaV0uYy5yZXZwcmV2KCkKICAgICAgICAgICAgfSksIGUucGFkZGluZ190b3AgPSBwYXJzZUludCh0W2ldLmNhcm91c2VsLnBhZGRpbmdfdG9wIHx8IDAsIDApLCBlLnBhZGRpbmdfYm90dG9tID0gcGFyc2VJbnQodFtpXS5jYXJvdXNlbC5wYWRkaW5nX2JvdHRvbSB8fCAwLCAwKSwgdyhlLmxlZnQsIGkpLCB3KGUucmlnaHQsIGkpLCAib3V0ZXItbGVmdCIgIT0gZS5wb3NpdGlvbiAmJiAib3V0ZXItcmlnaHQiICE9IGUucG9zaXRpb24gfHwgKHRbaV0ub3V0ZXJuYXYgPSAhMCkKICAgICAgICB9LAogICAgICAgIHkgPSBmdW5jdGlvbihlLCBpLCBhLCByKSB7CiAgICAgICAgICAgIHIgPSB2b2lkIDAgPT09IHIgPyBlLm91dGVySGVpZ2h0KCEwKSA6IHI7CiAgICAgICAgICAgIHZhciBvID0gbnVsbCA9PSB0W2FdID8gMCA6IDAgPT0gdFthXS5jYW52LmhlaWdodCA/IHRbYV0ubW9kdWxlLmhlaWdodCA6IHRbYV0uY2Fudi5oZWlnaHQsCiAgICAgICAgICAgICAgICBzID0gImxheWVyZ3JpZCIgPT0gaS5jb250YWluZXIgPyAiZnVsbHNjcmVlbiIgPT0gdFthXS5zbGlkZXJMYXlvdXQgPyB0W2FdLm1vZHVsZS5oZWlnaHQgLyAyIC0gdFthXS5ncmlkaGVpZ2h0W3RbYV0ubGV2ZWxdICogdFthXS5DTS5oIC8gMiA6IHRbYV0uYXV0b0hlaWdodCB8fCBudWxsICE9IHRbYV0ubWluSGVpZ2h0ICYmIHRbYV0ubWluSGVpZ2h0ID4gMCA/IG8gLyAyIC0gdFthXS5ncmlkaGVpZ2h0W3RbYV0ubGV2ZWxdICogdFthXS5DTS5oIC8gMiA6IDAgOiAwLAogICAgICAgICAgICAgICAgbiA9ICJ0b3AiID09PSBpLnZfYWxpZ24gPyB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiAiMHB4IiwKICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKGkudl9vZmZzZXQgKyBzKSArICJweCIKICAgICAgICAgICAgICAgIH0gOiAiY2VudGVyIiA9PT0gaS52X2FsaWduID8gewogICAgICAgICAgICAgICAgICAgIHRvcDogIjUwJSIsCiAgICAgICAgICAgICAgICAgICAgeTogTWF0aC5yb3VuZCgwIC0gciAvIDIgKyBpLnZfb2Zmc2V0KSArICJweCIKICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgeTogTWF0aC5yb3VuZCgwIC0gKHIgKyBpLnZfb2Zmc2V0ICsgcykpICsgInB4IgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgZS5oYXNDbGFzcygib3V0ZXItYm90dG9tIikgfHwgdHBHUy5nc2FwLnNldChlLCBuKQogICAgICAgIH0sCiAgICAgICAgYiA9IGZ1bmN0aW9uKGUsIGksIGEsIHIpIHsKICAgICAgICAgICAgciA9IHZvaWQgMCA9PT0gciA/IGUub3V0ZXJXaWR0aCgpIDogcjsKICAgICAgICAgICAgdmFyIG8gPSAibGF5ZXJncmlkIiA9PT0gaS5jb250YWluZXIgPyB0W2FdLm1vZHVsZS53aWR0aCAvIDIgLSB0W2FdLmdyaWR3aWR0aFt0W2FdLmxldmVsXSAqIHRbYV0uQ00udyAvIDIgOiAwLAogICAgICAgICAgICAgICAgcyA9ICJsZWZ0IiA9PT0gaS5oX2FsaWduID8gewogICAgICAgICAgICAgICAgICAgIGxlZnQ6ICIwcHgiLAogICAgICAgICAgICAgICAgICAgIHg6IE1hdGgucm91bmQoaS5oX29mZnNldCArIG8pICsgInB4IgogICAgICAgICAgICAgICAgfSA6ICJjZW50ZXIiID09PSBpLmhfYWxpZ24gPyB7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogIjUwJSIsCiAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5yb3VuZCgwIC0gciAvIDIgKyBpLmhfb2Zmc2V0KSArICJweCIKICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgIHg6IE1hdGgucm91bmQoMCAtIChyICsgaS5oX29mZnNldCArIG8pKSArICJweCIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIHRwR1MuZ3NhcC5zZXQoZSwgcykKICAgICAgICB9LAogICAgICAgIHcgPSBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9IGUgJiYgdm9pZCAwICE9PSBlLmMpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gImZ1bGx3aWR0aCIgPT0gdFtpXS5zbGlkZXJMYXlvdXQgfHwgImZ1bGxzY3JlZW4iID09IHRbaV0uc2xpZGVyTGF5b3V0ID8gdFtpXS5tb2R1bGUud2lkdGggOiB0W2ldLmNhbnYud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgciA9IGUuYy5vdXRlcldpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgbyA9IGUuYy5vdXRlckhlaWdodCgpOwogICAgICAgICAgICAgICAgaWYgKCEociA8PSAwIHx8IG8gPD0gMCkgJiYgKHkoZS5jLCBlLCBpLCBvKSwgYihlLmMsIGUsIGksIHIpLCAib3V0ZXItbGVmdCIgPT09IGUucG9zaXRpb24gPyB0cEdTLmdzYXAuc2V0KGUuYywgewogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwIC0gciArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGUuaF9vZmZzZXQgKyAicHgiCiAgICAgICAgICAgICAgICAgICAgfSkgOiAib3V0ZXItcmlnaHQiID09PSBlLnBvc2l0aW9uICYmIHRwR1MuZ3NhcC5zZXQoZS5jLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwIC0gciArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGUuaF9vZmZzZXQgKyAicHgiCiAgICAgICAgICAgICAgICAgICAgfSksICJ0cC10aHVtYiIgPT09IGUudHlwZSB8fCAidHAtdGFiIiA9PT0gZS50eXBlKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gcGFyc2VJbnQoZS5wYWRkaW5nX3RvcCB8fCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHBhcnNlSW50KGUucGFkZGluZ19ib3R0b20gfHwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHt9OwogICAgICAgICAgICAgICAgICAgIGUubWF4dyA+IGEgJiYgIm91dGVyLWxlZnQiICE9PSBlLnBvc2l0aW9uICYmICJvdXRlci1yaWdodCIgIT09IGUucG9zaXRpb24gPyAoZC5sZWZ0ID0gIjBweCIsIGQueCA9IDAsIGQubWF4V2lkdGggPSBhIC0gMiAqIGUud3BhZCArICJweCIsIGwubWF4V2lkdGggPSBhIC0gMiAqIGUud3BhZCArICJweCIpIDogKGQubWF4V2lkdGggPSBlLm1heHcsIGwubWF4V2lkdGggPSBhICsgInB4IiksIGUubWF4aCArIDIgKiBlLndwYWQgPiB0W2ldLmNvbmggJiYgIm91dGVyLWJvdHRvbSIgIT09IGUucG9zaXRpb24gJiYgIm91dGVyLXRvcCIgIT09IGUucG9zaXRpb24gPyAoZC50b3AgPSAiMHB4IiwgZC55ID0gMCwgZC5tYXhIZWlnaHQgPSBzICsgbiArICh0W2ldLmNvbmggLSAyICogZS53cGFkKSArICJweCIsIGwubWF4SGVpZ2h0ID0gcyArIG4gKyAodFtpXS5jb25oIC0gMiAqIGUud3BhZCkgKyAicHgiKSA6IChkLm1heEhlaWdodCA9IGUubWF4aCArICJweCIsIGwubWF4SGVpZ2h0ID0gZS5tYXhoICsgInB4IiksIGUubWFzayA9IHZvaWQgMCA9PT0gZS5tYXNrID8gZS5jLmZpbmQoInJzLW5hdm1hc2siKSA6IGUubWFzaywgKGUubWhvZmYgPiAwIHx8IGUubXZvZmYgPiAwKSAmJiAobC5wYWRkaW5nID0gZS5tdm9mZiArICJweCAiICsgZS5taG9mZiArICJweCIpLCBlLnNwYW4gPyAoImxheWVyZ3JpZCIgPT0gZS5jb250YWluZXIgJiYgIm91dGVyLWxlZnQiICE9PSBlLnBvc2l0aW9uICYmICJvdXRlci1yaWdodCIgIT09IGUucG9zaXRpb24gJiYgKHMgPSBuID0gMCksICJ2ZXJ0aWNhbCIgPT09IGUuZGlyZWN0aW9uID8gKGQubWF4SGVpZ2h0ID0gcyArIG4gKyAodFtpXS5jb25oIC0gMiAqIGUud3BhZCkgKyAicHgiLCBkLmhlaWdodCA9IHMgKyBuICsgKHRbaV0uY29uaCAtIDIgKiBlLndwYWQpICsgInB4IiwgZC50b3AgPSAwLCBkLnkgPSAwLCBsLm1heEhlaWdodCA9IHMgKyBuICsgTWF0aC5taW4oZS5tYXhoLCB0W2ldLmNvbmggLSAyICogZS53cGFkKSArICJweCIsIHRwR1MuZ3NhcC5zZXQoZS5jLCBkKSwgdHBHUy5nc2FwLnNldChlLm1hc2ssIGwpLCB5KGUubWFzaywgZSwgaSkpIDogImhvcml6b250YWwiID09PSBlLmRpcmVjdGlvbiAmJiAoZC5tYXhXaWR0aCA9ICIxMDAlIiwgZC53aWR0aCA9IGEgLSAyICogZS53cGFkICsgInB4IiwgZC5sZWZ0ID0gMCwgZC54ID0gMCwgbC5tYXhXaWR0aCA9IGUubWF4dyA+PSBhID8gIjEwMCUiIDogTWF0aC5taW4oZS5tYXh3LCBhKSArICJweCIsIHRwR1MuZ3NhcC5zZXQoZS5jLCBkKSwgdHBHUy5nc2FwLnNldChlLm1hc2ssIGwpLCBiKGUubWFzaywgZSwgaSkpKSA6ICh0cEdTLmdzYXAuc2V0KGUuYywgZCksIHRwR1MuZ3NhcC5zZXQoZS5tYXNrLCBsKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgXyA9IGZ1bmN0aW9uKGUsIGksIGEsIHIpIHsKICAgICAgICAgICAgMCA9PT0gZS5maW5kKCIudHAtYnVsbGV0cyIpLmxlbmd0aCAmJiAoaS5zdHlsZSA9IHZvaWQgMCA9PT0gaS5zdHlsZSA/ICIiIDogaS5zdHlsZSwgaS5jID0galF1ZXJ5KCc8cnMtYnVsbGV0cyBzdHlsZT0ib3BhY2l0eTowIiAgY2xhc3M9InRwLWJ1bGxldHMgJyArIGkuc3R5bGUgKyAiICIgKyBpLmRpcmVjdGlvbiArICIgbmF2LXBvcy1ob3ItIiArIGkuaF9hbGlnbiArICIgbmF2LXBvcy12ZXItIiArIGkudl9hbGlnbiArICIgbmF2LWRpci0iICsgaS5kaXJlY3Rpb24gKyAnIj48L3JzLWJ1bGxldHM+JykpOwogICAgICAgICAgICB2YXIgbyA9IGEuZGF0YSgia2V5IiksCiAgICAgICAgICAgICAgICBzID0gaS50bXA7CiAgICAgICAgICAgIHZvaWQgMCAhPT0gdFtyXS50aHVtYnNbYS5pbmRleCgpXSAmJiBqUXVlcnkuZWFjaCh0W3JdLnRodW1ic1thLmluZGV4KCldLnBhcmFtcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSh0LmZyb20sIHQudG8pCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgbiA9IGpRdWVyeSgnPHJzLWJ1bGxldCBkYXRhLWtleT0iJyArIG8gKyAnIiBjbGFzcz0idHAtYnVsbGV0Ij4nICsgcyArICI8L3JzLWJ1bGxldD4iKTsKICAgICAgICAgICAgdm9pZCAwICE9PSB0W3JdLnRodW1ic1thLmluZGV4KCldICYmIG4uZmluZCgiLnRwLWJ1bGxldC1pbWFnZSIpLmNzcyh7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICJ1cmwoIiArIHRbcl0udGh1bWJzW2EuaW5kZXgoKV0uc3JjICsgIikiCiAgICAgICAgICAgIH0pLCBpLmMuYXBwZW5kKG4pLCBlLmFwcGVuZChpLmMpOwogICAgICAgICAgICB2YXIgZCA9IGkuYy5maW5kKCIudHAtYnVsbGV0IikubGVuZ3RoLAogICAgICAgICAgICAgICAgbCA9IG4ub3V0ZXJXaWR0aCgpLAogICAgICAgICAgICAgICAgYyA9IG4ub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgICAgICAgIHAgPSBsICsgcGFyc2VJbnQodm9pZCAwID09PSBpLnNwYWNlID8gMCA6IGkuc3BhY2UsIDApLAogICAgICAgICAgICAgICAgZyA9IGMgKyBwYXJzZUludCh2b2lkIDAgPT09IGkuc3BhY2UgPyAwIDogaS5zcGFjZSwgMCk7CiAgICAgICAgICAgICJ2ZXJ0aWNhbCIgPT09IGkuZGlyZWN0aW9uID8gKG4uY3NzKHsKICAgICAgICAgICAgICAgIHRvcDogKGQgLSAxKSAqIGcgKyAicHgiLAogICAgICAgICAgICAgICAgbGVmdDogIjBweCIKICAgICAgICAgICAgfSksIGkuYy5jc3MoewogICAgICAgICAgICAgICAgaGVpZ2h0OiAoZCAtIDEpICogZyArIGMsCiAgICAgICAgICAgICAgICB3aWR0aDogbAogICAgICAgICAgICB9KSkgOiAobi5jc3MoewogICAgICAgICAgICAgICAgbGVmdDogKGQgLSAxKSAqIHAgKyAicHgiLAogICAgICAgICAgICAgICAgdG9wOiAiMHB4IgogICAgICAgICAgICB9KSwgaS5jLmNzcyh7CiAgICAgICAgICAgICAgICB3aWR0aDogKGQgLSAxKSAqIHAgKyBsLAogICAgICAgICAgICAgICAgaGVpZ2h0OiBjCiAgICAgICAgICAgIH0pKSwgbi5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICJjYXJvdXNlbCIgPT09IHRbcl0uc2xpZGVyVHlwZSAmJiAodFtyXS5jdE5hdkVsZW1lbnQgPSAhMCksIHRbcl0uc2NfaW5kaWNhdG9yID0gImJ1bGxldCIsIGUucmV2Y2FsbHNsaWRld2l0aGlkKG8pLCBlLmZpbmQoIi50cC1idWxsZXQiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKSwgalF1ZXJ5KHRoaXMpLmFkZENsYXNzKCJzZWxlY3RlZCIpCiAgICAgICAgICAgIH0pLCBpLnBhZGRpbmdfdG9wID0gcGFyc2VJbnQodFtyXS5jYXJvdXNlbC5wYWRkaW5nX3RvcCB8fCAwLCAwKSwgaS5wYWRkaW5nX2JvdHRvbSA9IHBhcnNlSW50KHRbcl0uY2Fyb3VzZWwucGFkZGluZ19ib3R0b20gfHwgMCwgMCksICJvdXRlci1sZWZ0IiAhPSBpLnBvc2l0aW9uICYmICJvdXRlci1yaWdodCIgIT0gaS5wb3NpdGlvbiB8fCAodFtyXS5vdXRlcm5hdiA9ICEwKQogICAgICAgIH0sCiAgICAgICAgUyA9IGZ1bmN0aW9uKGUsIGksIGEsIHIsIG8pIHsKICAgICAgICAgICAgdmFyIHMgPSAidHAtdGh1bWIiID09PSByID8gIi50cC10aHVtYnMiIDogIi50cC10YWJzIiwKICAgICAgICAgICAgICAgIG4gPSAidHAtdGh1bWIiID09PSByID8gIi50cC10aHVtYi1tYXNrIiA6ICIudHAtdGFiLW1hc2siLAogICAgICAgICAgICAgICAgZCA9ICJ0cC10aHVtYiIgPT09IHIgPyAiLnRwLXRodW1icy1pbm5lci13cmFwcGVyIiA6ICIudHAtdGFicy1pbm5lci13cmFwcGVyIiwKICAgICAgICAgICAgICAgIGwgPSAidHAtdGh1bWIiID09PSByID8gIi50cC10aHVtYiIgOiAiLnRwLXRhYiIsCiAgICAgICAgICAgICAgICBjID0gInRwLXRodW1iIiA9PT0gciA/ICIudHAtdGh1bWItaW1hZ2UiIDogIi50cC10YWItaW1hZ2UiLAogICAgICAgICAgICAgICAgcCA9ICJ0cC10aHVtYiIgPT09IHIgPyAicnMtdGh1bWIiIDogInJzLXRhYiI7CiAgICAgICAgICAgIGkudHlwZSA9IHIsIGkudmlzaWJsZUFtb3VudCA9IGkudmlzaWJsZUFtb3VudCA+IHRbb10uc2xpZGVhbW91bnQgPyB0W29dLnNsaWRlYW1vdW50IDogaS52aXNpYmxlQW1vdW50LCBpLnNsaWRlckxheW91dCA9IHRbb10uc2xpZGVyTGF5b3V0LCB2b2lkIDAgPT09IGkuYyAmJiAoaS53cGFkID0gaS53cmFwcGVyX3BhZGRpbmcsIGkuYyA9IGpRdWVyeSgiPCIgKyBwICsgJ3Mgc3R5bGU9Im9wYWNpdHk6MCIgY2xhc3M9Im5hdi1kaXItJyArIGkuZGlyZWN0aW9uICsgIiBuYXYtcG9zLXZlci0iICsgaS52X2FsaWduICsgIiBuYXYtcG9zLWhvci0iICsgaS5oX2FsaWduICsgIiBycy1uYXYtZWxlbWVudCAiICsgciArICJzICIgKyAoITAgPT09IGkuc3BhbiA/ICJ0cC1zcGFuLXdyYXBwZXIiIDogIiIpICsgIiAiICsgaS5wb3NpdGlvbiArICIgIiArICh2b2lkIDAgPT09IGkuc3R5bGUgPyAiIiA6IGkuc3R5bGUpICsgJyI+PHJzLW5hdm1hc2sgY2xhc3M9IicgKyByICsgJy1tYXNrIiBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlIj48JyArIHAgKyAncy13cmFwIGNsYXNzPSInICsgciArICdzLWlubmVyLXdyYXBwZXIiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPjwvJyArIHAgKyAicy13cmFwPjwvcnMtbmF2bWFzaz48LyIgKyBwICsgInM+IiksIGkuYy5jc3MoewogICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICJ2aXNpYmxlIiwKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAib3V0ZXItdG9wIiA9PT0gaS5wb3NpdGlvbiB8fCAib3V0ZXItYm90dG9tIiA9PT0gaS5wb3NpdGlvbiA/ICJyZWxhdGl2ZSIgOiAiYWJzb2x1dGUiLAogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogaS53cmFwcGVyX2NvbG9yLAogICAgICAgICAgICAgICAgcGFkZGluZzogaS53cGFkICsgInB4IiwKICAgICAgICAgICAgICAgIGJveFNpemluZzogImNvbnRldC1ib3giCiAgICAgICAgICAgIH0pLCAib3V0ZXItdG9wIiA9PT0gaS5wb3NpdGlvbiA/IGUucGFyZW50KCkucHJlcGVuZChpLmMpIDogIm91dGVyLWJvdHRvbSIgPT09IGkucG9zaXRpb24gPyBlLmFmdGVyKGkuYykgOiBlLmFwcGVuZChpLmMpLCAib3V0ZXItbGVmdCIgIT09IGkucG9zaXRpb24gJiYgIm91dGVyLXJpZ2h0IiAhPT0gaS5wb3NpdGlvbiB8fCB0cEdTLmdzYXAuc2V0KHRbb10uYywgewogICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICJ2aXNpYmxlIgogICAgICAgICAgICB9KSwgaS5wYWRkaW5nX3RvcCA9IHBhcnNlSW50KHRbb10uY2Fyb3VzZWwucGFkZGluZ190b3AgfHwgMCwgMCksIGkucGFkZGluZ19ib3R0b20gPSBwYXJzZUludCh0W29dLmNhcm91c2VsLnBhZGRpbmdfYm90dG9tIHx8IDAsIDApLCAib3V0ZXItbGVmdCIgIT0gaS5wb3NpdGlvbiAmJiAib3V0ZXItcmlnaHQiICE9IGkucG9zaXRpb24gfHwgKHRbb10ub3V0ZXJuYXYgPSAhMCkpOwogICAgICAgICAgICB2YXIgZyA9IGEuZGF0YSgia2V5IiksCiAgICAgICAgICAgICAgICB1ID0gaS5jLmZpbmQobiksCiAgICAgICAgICAgICAgICBoID0gdS5maW5kKGQpLAogICAgICAgICAgICAgICAgbSA9IGkudG1wOwogICAgICAgICAgICBpLnNwYWNlID0gcGFyc2VGbG9hdChpLnNwYWNlKSB8fCAwLCBpLm1heHcgPSAiaG9yaXpvbnRhbCIgPT09IGkuZGlyZWN0aW9uID8gaS53aWR0aCAqIGkudmlzaWJsZUFtb3VudCArIGkuc3BhY2UgKiAoaS52aXNpYmxlQW1vdW50IC0gMSkgOiBpLndpZHRoLCBpLm1heGggPSAiaG9yaXpvbnRhbCIgPT09IGkuZGlyZWN0aW9uID8gaS5oZWlnaHQgOiBpLmhlaWdodCAqIGkudmlzaWJsZUFtb3VudCArIGkuc3BhY2UgKiAoaS52aXNpYmxlQW1vdW50IC0gMSksIGkubWF4dyArPSAyICogaS5taG9mZiwgaS5tYXhoICs9IDIgKiBpLm12b2ZmLCB2b2lkIDAgIT09IHRbb10udGh1bWJzW2EuaW5kZXgoKV0gJiYgalF1ZXJ5LmVhY2godFtvXS50aHVtYnNbYS5pbmRleCgpXS5wYXJhbXMsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIG0gPSBtLnJlcGxhY2UodC5mcm9tLCB0LnRvKQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIHYgPSBqUXVlcnkoIjwiICsgcCArICcgZGF0YS1saWluZGV4PSInICsgYS5pbmRleCgpICsgJyIgZGF0YS1rZXk9IicgKyBnICsgJyIgY2xhc3M9IicgKyByICsgJyIgc3R5bGU9IndpZHRoOicgKyBpLndpZHRoICsgInB4O2hlaWdodDoiICsgaS5oZWlnaHQgKyAncHg7Ij4nICsgbSArICI8IiArIHAgKyAiPiIpOwogICAgICAgICAgICB2b2lkIDAgIT09IHRbb10udGh1bWJzW2EuaW5kZXgoKV0gJiYgdi5maW5kKGMpLmNzcyh7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICJ1cmwoIiArIHRbb10udGh1bWJzW2EuaW5kZXgoKV0uc3JjICsgIikiCiAgICAgICAgICAgIH0pLCBoLmFwcGVuZCh2KTsKICAgICAgICAgICAgdmFyIGYgPSBpLmMuZmluZChsKS5sZW5ndGgsCiAgICAgICAgICAgICAgICB5ID0gdi5vdXRlcldpZHRoKCksCiAgICAgICAgICAgICAgICBiID0gdi5vdXRlckhlaWdodCgpLAogICAgICAgICAgICAgICAgdyA9IHkgKyBwYXJzZUludCh2b2lkIDAgPT09IGkuc3BhY2UgPyAwIDogaS5zcGFjZSwgMCksCiAgICAgICAgICAgICAgICBfID0gYiArIHBhcnNlSW50KHZvaWQgMCA9PT0gaS5zcGFjZSA/IDAgOiBpLnNwYWNlLCAwKTsKICAgICAgICAgICAgInZlcnRpY2FsIiA9PT0gaS5kaXJlY3Rpb24gPyAodi5jc3MoewogICAgICAgICAgICAgICAgdG9wOiAoZiAtIDEpICogXyArICJweCIsCiAgICAgICAgICAgICAgICBsZWZ0OiAiMHB4IgogICAgICAgICAgICB9KSwgaC5jc3MoewogICAgICAgICAgICAgICAgaGVpZ2h0OiAoZiAtIDEpICogXyArIGIsCiAgICAgICAgICAgICAgICB3aWR0aDogeQogICAgICAgICAgICB9KSkgOiAodi5jc3MoewogICAgICAgICAgICAgICAgbGVmdDogKGYgLSAxKSAqIHcgKyAicHgiLAogICAgICAgICAgICAgICAgdG9wOiAiMHB4IgogICAgICAgICAgICB9KSwgaC5jc3MoewogICAgICAgICAgICAgICAgd2lkdGg6IChmIC0gMSkgKiB3ICsgeSwKICAgICAgICAgICAgICAgIGhlaWdodDogYgogICAgICAgICAgICB9KSksIHUuY3NzKHsKICAgICAgICAgICAgICAgIG1heFdpZHRoOiBpLm1heHcgKyAicHgiLAogICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBpLm1heGggKyAicHgiCiAgICAgICAgICAgIH0pLCBpLmMuY3NzKHsKICAgICAgICAgICAgICAgIG1heFdpZHRoOiBpLm1heHcgKyAicHgiLAogICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBpLm1heGggKyAicHgiCiAgICAgICAgICAgIH0pLCB2Lm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdFtvXS5zY19pbmRpY2F0b3IgPSAiYnVsbGV0IiwgImNhcm91c2VsIiA9PT0gdFtvXS5zbGlkZXJUeXBlICYmICh0W29dLmN0TmF2RWxlbWVudCA9ICEwKTsKICAgICAgICAgICAgICAgIHZhciBpID0gZS5wYXJlbnQoKS5maW5kKGQpLmRhdGEoImRpc3RhbmNlIik7CiAgICAgICAgICAgICAgICBpID0gdm9pZCAwID09PSBpID8gMCA6IGksIE1hdGguYWJzKGkpIDwgMTAgJiYgKGUucmV2Y2FsbHNsaWRld2l0aGlkKGcpLCBlLnBhcmVudCgpLmZpbmQocykucmVtb3ZlQ2xhc3MoInNlbGVjdGVkIiksIGpRdWVyeSh0aGlzKS5hZGRDbGFzcygic2VsZWN0ZWQiKSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHggPSBmdW5jdGlvbihlLCBpLCBhKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgfHwgdm9pZCAwID09PSBlLmMgPyBhIDogKGUuaGlkZV91bmRlciA+IHRbaV0uY2Fudi53aWR0aCB8fCB0W2ldLmNhbnYud2lkdGggPiBlLmhpZGVfb3ZlciA/ICghMCAhPT0gZS50cEZvcmNlTm90VmlzaWJsZSAmJiAoZS5jLmFkZENsYXNzKCJ0cC1mb3JjZW5vdHZpc2libGUiKSwgZS5pc1Zpc2libGUgPSAhMSwgYSA9ICEwKSwgZS50cEZvcmNlTm90VmlzaWJsZSA9ICEwKSA6ICghMSAhPT0gZS50cEZvcmNlTm90VmlzaWJsZSAmJiAoZS5jLnJlbW92ZUNsYXNzKCJ0cC1mb3JjZW5vdHZpc2libGUiKSwgZS5pc1Zpc2libGUgPSAhMCwgYSA9ICEwKSwgZS50cEZvcmNlTm90VmlzaWJsZSA9ICExKSwgYSkKICAgICAgICB9Cn0oalF1ZXJ5KSwKZnVuY3Rpb24oZSkgewogICAgInVzZSBzdHJpY3QiOwogICAgd2luZG93Ll9SX2lzX0VkaXRvciA/IFJWUy5fUiA9IHZvaWQgMCA9PT0gUlZTLl9SID8ge30gOiBSVlMuX1IgOiB3aW5kb3cuX1JfaXNfRWRpdG9yID0gITE7CiAgICB2YXIgdCA9IF9SX2lzX0VkaXRvciA/IFJWUy5fUiA6IGpRdWVyeS5mbi5yZXZvbHV0aW9uOwogICAgalF1ZXJ5LmV4dGVuZCghMCwgdCwgewogICAgICAgIGJnVzogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICByZXR1cm4gX1JfaXNfRWRpdG9yID8gUlZTLlJNRC53aWR0aCA6ICJjYXJvdXNlbCIgPT09IHRbZV0uc2xpZGVyVHlwZSA/IHRbZV0uanVzdGlmeUNhcm91c2VsID8gdFtlXS5jYXJvdXNlbC5zbGlkZV93aWR0aHNbdm9pZCAwICE9PSBpID8gaSA6IHRbZV0uY2Fyb3VzZWwuZm9jdXNlZF0gOiB0W2VdLmNhcm91c2VsLnNsaWRlX3dpZHRoIDogdFtlXS5tb2R1bGUud2lkdGgKICAgICAgICB9LAogICAgICAgIGJnSDogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICByZXR1cm4gX1JfaXNfRWRpdG9yID8gUlZTLlJNRC5oZWlnaHQgOiAiY2Fyb3VzZWwiID09PSB0W2VdLnNsaWRlclR5cGUgPyB0W2VdLmNhcm91c2VsLnNsaWRlX2hlaWdodCA6IHRbZV0ubW9kdWxlLmhlaWdodAogICAgICAgIH0sCiAgICAgICAgZ2V0UFpTaWRlczogZnVuY3Rpb24oZSwgdCwgaSwgYSwgciwgbywgcykgewogICAgICAgICAgICB2YXIgbiA9IGUgKiBpLAogICAgICAgICAgICAgICAgZCA9IHQgKiBpLAogICAgICAgICAgICAgICAgbCA9IE1hdGguYWJzKGEgLSBuKSwKICAgICAgICAgICAgICAgIGMgPSBNYXRoLmFicyhyIC0gZCksCiAgICAgICAgICAgICAgICBwID0gbmV3IE9iamVjdDsKICAgICAgICAgICAgcmV0dXJuIHAubCA9ICgwIC0gbykgKiBsLCBwLnIgPSBwLmwgKyBuLCBwLnQgPSAoMCAtIHMpICogYywgcC5iID0gcC50ICsgZCwgcC5oID0gbywgcC52ID0gcywgcAogICAgICAgIH0sCiAgICAgICAgZ2V0UFpDb3JuZXJzOiBmdW5jdGlvbihlLCBpLCBhLCByKSB7CiAgICAgICAgICAgIHZhciBvID0gZS5iZ3Bvc2l0aW9uLnNwbGl0KCIgIikgfHwgImNlbnRlciBjZW50ZXIiLAogICAgICAgICAgICAgICAgcyA9ICJjZW50ZXIiID09IG9bMF0gPyAiNTAlIiA6ICJsZWZ0IiA9PSBvWzBdIHx8ICJsZWZ0IiA9PSBvWzFdID8gIjAlIiA6ICJyaWdodCIgPT0gb1swXSB8fCAicmlnaHQiID09IG9bMV0gPyAiMTAwJSIgOiBvWzBdLAogICAgICAgICAgICAgICAgbiA9ICJjZW50ZXIiID09IG9bMV0gPyAiNTAlIiA6ICJ0b3AiID09IG9bMF0gfHwgInRvcCIgPT0gb1sxXSA/ICIwJSIgOiAiYm90dG9tIiA9PSBvWzBdIHx8ICJib3R0b20iID09IG9bMV0gPyAiMTAwJSIgOiBvWzFdOwogICAgICAgICAgICBzID0gcGFyc2VJbnQocywgMCkgLyAxMDAgfHwgMCwgbiA9IHBhcnNlSW50KG4sIDApIC8gMTAwIHx8IDA7CiAgICAgICAgICAgIHZhciBkID0gbmV3IE9iamVjdDsKICAgICAgICAgICAgcmV0dXJuIGQuc3RhcnQgPSB0LmdldFBaU2lkZXMoci5zdGFydC53aWR0aCwgci5zdGFydC5oZWlnaHQsIHIuc3RhcnQuc2NhbGUsIGksIGEsIHMsIG4pLCBkLmVuZCA9IHQuZ2V0UFpTaWRlcyhyLnN0YXJ0LndpZHRoLCByLnN0YXJ0LmhlaWdodCwgci5lbmQuc2NhbGUsIGksIGEsIHMsIG4pLCBkCiAgICAgICAgfSwKICAgICAgICBnZXRQWlZhbHVlczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGUucGFuem9vbS5zcGxpdCgiOyIpLAogICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMTAsCiAgICAgICAgICAgICAgICAgICAgZWFzZTogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgIHNjYWxlc3RhcnQ6IDEsCiAgICAgICAgICAgICAgICAgICAgc2NhbGVlbmQ6IDEsCiAgICAgICAgICAgICAgICAgICAgcm90YXRlc3RhcnQ6IC4wMSwKICAgICAgICAgICAgICAgICAgICByb3RhdGVlbmQ6IDAsCiAgICAgICAgICAgICAgICAgICAgYmx1cnN0YXJ0OiAwLAogICAgICAgICAgICAgICAgICAgIGJsdXJlbmQ6IDAsCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0c3RhcnQ6ICIwLzAiLAogICAgICAgICAgICAgICAgICAgIG9mZnNldGVuZDogIjAvMCIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGZvciAodmFyIGEgaW4gdCkKICAgICAgICAgICAgICAgIGlmICh0Lmhhc093blByb3BlcnR5KGEpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W2FdLnNwbGl0KCI6IiksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gclsxXTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmR1cmF0aW9uID0gcGFyc2VJbnQocywgMCkgLyAxZTM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmVhc2UgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuc2NhbGVzdGFydCA9IHBhcnNlSW50KHMsIDApIC8gMTAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuc2NhbGVlbmQgPSBwYXJzZUludChzLCAwKSAvIDEwMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJycyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnJvdGF0ZXN0YXJ0ID0gcGFyc2VJbnQocywgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5yb3RhdGVlbmQgPSBwYXJzZUludChzLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJicyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmJsdXJzdGFydCA9IHBhcnNlSW50KHMsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuYmx1cmVuZCA9IHBhcnNlSW50KHMsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9zIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkub2Zmc2V0c3RhcnQgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkub2Zmc2V0ZW5kID0gcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGkub2Zmc2V0c3RhcnQgPSBpLm9mZnNldHN0YXJ0LnNwbGl0KCIvIikgfHwgWzAsIDBdLCBpLm9mZnNldGVuZCA9IGkub2Zmc2V0ZW5kLnNwbGl0KCIvIikgfHwgWzAsIDBdLCBpLnJvdGF0ZXN0YXJ0ID0gMCA9PT0gaS5yb3RhdGVzdGFydCA/IC4wMSA6IGkucm90YXRlc3RhcnQsIGUucGFudmFsdWVzID0gaSwgZS5iZ3Bvc2l0aW9uID0gImNlbnRlciBjZW50ZXIiID09IGUuYmdwb3NpdGlvbiA/ICI1MCUgNTAlIiA6IGUuYmdwb3NpdGlvbiwgaQogICAgICAgIH0sCiAgICAgICAgcHpDYWxjTDogZnVuY3Rpb24oZSwgaSwgYSkgewogICAgICAgICAgICB2YXIgciwgbywgcywgbiwgZCwgbCwgYyA9IHZvaWQgMCA9PT0gYS5wYW52YWx1ZXMgPyBqUXVlcnkuZXh0ZW5kKCEwLCB7fSwgdC5nZXRQWlZhbHVlcyhhKSkgOiBqUXVlcnkuZXh0ZW5kKCEwLCB7fSwgYS5wYW52YWx1ZXMpLAogICAgICAgICAgICAgICAgcCA9IGMub2Zmc2V0c3RhcnQsCiAgICAgICAgICAgICAgICBnID0gYy5vZmZzZXRlbmQsCiAgICAgICAgICAgICAgICB1ID0gewogICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBlLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IF9SX2lzX0VkaXRvciA/IGUgLyBhLmxvYWRvYmoud2lkdGggKiBhLmxvYWRvYmouaGVpZ2h0IDogZSAvIGEub3dpZHRoICogYS5vaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogYy5yb3RhdGVzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IGMuc2NhbGVzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAiMCUgMCUiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IGMucm90YXRlZW5kLAogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogYy5zY2FsZWVuZAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGMuc2NhbGVzdGFydCwgYS5vd2lkdGgsIGEub2hlaWdodCwgYy5zY2FsZWVuZCwgYS5vd2lkdGgsIGEub2hlaWdodDsKICAgICAgICAgICAgcmV0dXJuIHUuc3RhcnQuaGVpZ2h0IDwgaSAmJiAobCA9IGkgLyB1LnN0YXJ0LmhlaWdodCwgdS5zdGFydC5oZWlnaHQgPSBpLCB1LnN0YXJ0LndpZHRoID0gdS5zdGFydC53aWR0aCAqIGwpLCAuMDEgPT09IGMucm90YXRlc3RhcnQgJiYgMCA9PT0gYy5yb3RhdGVlbmQgJiYgKGRlbGV0ZSB1LnN0YXJ0LnJvdGF0aW9uLCBkZWxldGUgdS5lbmQucm90YXRpb24pLCByID0gdC5nZXRQWkNvcm5lcnMoYSwgZSwgaSwgdSksIHBbMF0gPSBwYXJzZUZsb2F0KHBbMF0pICsgci5zdGFydC5sLCBnWzBdID0gcGFyc2VGbG9hdChnWzBdKSArIHIuZW5kLmwsIHBbMV0gPSBwYXJzZUZsb2F0KHBbMV0pICsgci5zdGFydC50LCBnWzFdID0gcGFyc2VGbG9hdChnWzFdKSArIHIuZW5kLnQsIG8gPSByLnN0YXJ0LnIgLSByLnN0YXJ0LmwsIHMgPSByLnN0YXJ0LmIgLSByLnN0YXJ0LnQsIG4gPSByLmVuZC5yIC0gci5lbmQubCwgZCA9IHIuZW5kLmIgLSByLmVuZC50LCBwWzBdID0gcFswXSA+IDAgPyAwIDogbyArIHBbMF0gPCBlID8gZSAtIG8gOiBwWzBdLCBnWzBdID0gZ1swXSA+IDAgPyAwIDogbiArIGdbMF0gPCBlID8gZSAtIG4gOiBnWzBdLCBwWzFdID0gcFsxXSA+IDAgPyAwIDogcyArIHBbMV0gPCBpID8gaSAtIHMgOiBwWzFdLCBnWzFdID0gZ1sxXSA+IDAgPyAwIDogZCArIGdbMV0gPCBpID8gaSAtIGQgOiBnWzFdLCB1LnN0YXJ0LnggPSBwWzBdLCB1LnN0YXJ0LnkgPSBwWzFdLCB1LmVuZC54ID0gZ1swXSwgdS5lbmQueSA9IGdbMV0sIHUuZW5kLmVhc2UgPSBjLmVhc2UsIHUKICAgICAgICB9LAogICAgICAgIHB6RHJhd1NoYWRvdzogZnVuY3Rpb24oZSwgaSwgYSkgewogICAgICAgICAgICB2YXIgciA9IGEuc3RhcnQud2lkdGggKiBhLnN0YXJ0LnNjYWxlLAogICAgICAgICAgICAgICAgbyA9IGEuc3RhcnQuaGVpZ2h0ICogYS5zdGFydC5zY2FsZTsKICAgICAgICAgICAgaS5zaGFkb3dDVFguY2xlYXJSZWN0KDAsIDAsIGkuc2hhZG93Q2FudmFzLndpZHRoLCBpLnNoYWRvd0NhbnZhcy5oZWlnaHQpLCBpLnNoYWRvd0NUWC5zYXZlKCksIGkuc2hhZG93Q1RYLnRyYW5zbGF0ZShhLnN0YXJ0LngsIGEuc3RhcnQueSksIHZvaWQgMCAhPT0gYS5zdGFydC5yb3RhdGlvbiAmJiBpLnNoYWRvd0NUWC5yb3RhdGUoYS5zdGFydC5yb3RhdGlvbiAqIE1hdGguUEkgLyAxODApLCBpLnNoYWRvd0NUWC5kcmF3SW1hZ2UoaS5sb2Fkb2JqLmltZywgMCwgMCwgciwgbyksIGkuc2hhZG93Q1RYLnJlc3RvcmUoKSwgImFuaW1hdGluZyIgIT09IGkuY3VycmVudFN0YXRlID8gKHQudXBkYXRlU2xpZGVCR3MoZSwgYS5zbGlkZWtleSwgaSwgITApLCB2b2lkIDAgIT09IGEuc3RhcnQuYmx1ciAmJiAoaS5jYW52YXMuc3R5bGUuZmlsdGVyID0gMCA9PT0gYS5zdGFydC5ibHVyID8gIm5vbmUiIDogImJsdXIoIiArIGEuc3RhcnQuYmx1ciArICJweCkiKSkgOiB2b2lkIDAgIT09IGEuc3RhcnQuYmx1ciAmJiBpLmNhbnZhc0ZpbHRlciA/IGkuY2FudmFzRmlsdGVyQmx1ciA9IGEuc3RhcnQuYmx1ciA6IGkuY2FudmFzLnN0eWxlLmZpbHRlciA9IDAgPT09IGEuc3RhcnQuYmx1ciA/ICJub25lIiA6ICJibHVyKCIgKyBhLnN0YXJ0LmJsdXIgKyAicHgpIgogICAgICAgIH0sCiAgICAgICAgc3RhcnRQYW5ab29tOiBmdW5jdGlvbihlLCBpLCBhLCByLCBvLCBzKSB7CiAgICAgICAgICAgIHZhciBuID0gX1JfaXNfRWRpdG9yID8gZSA6IGUuZGF0YSgpOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBuLnBhbnpvb20gJiYgbnVsbCAhPT0gbi5wYW56b29tKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IF9SX2lzX0VkaXRvciA/IG4gOiB0W2ldLnNiZ3Nbc107CiAgICAgICAgICAgICAgICBfUl9pc19FZGl0b3IgfHwgImNhcm91c2VsIiAhPT0gdFtpXS5zbGlkZXJUeXBlIHx8ICh0W2ldLmNhcm91c2VsLmp1c3RpZnkgJiYgdm9pZCAwID09PSB0W2ldLmNhcm91c2VsLnNsaWRlX3dpZHRocyAmJiB0LnNldENhcm91c2VsRGVmYXVsdHMoaSwgITApLCB0W2ldLmNhcm91c2VsLmp1c3RpZnkgfHwgKHZvaWQgMCA9PT0gdFtpXS5jYXJvdXNlbC5zbGlkZV93aWR0aCAmJiAodFtpXS5jYXJvdXNlbC5zbGlkZV93aWR0aCA9ICEwICE9PSB0W2ldLmNhcm91c2VsLnN0cmV0Y2ggPyB0W2ldLmdyaWR3aWR0aFt0W2ldLmxldmVsXSAqICgwID09PSB0W2ldLkNNLncgPyAxIDogdFtpXS5DTS53KSA6IHRbaV0uY2Fudi53aWR0aCksIHZvaWQgMCA9PT0gdFtpXS5jYXJvdXNlbC5zbGlkZV9oZWlnaHQgJiYgKHRbaV0uY2Fyb3VzZWwuc2xpZGVfaGVpZ2h0ID0gITAgIT09IHRbaV0uY2Fyb3VzZWwuc3RyZXRjaCA/IHRbaV0uZ3JpZGhlaWdodFt0W2ldLmxldmVsXSAqICgwID09PSB0W2ldLkNNLncgPyAxIDogdFtpXS5DTS53KSA6IHRbaV0uY2Fudi5oZWlnaHQpKSk7CiAgICAgICAgICAgICAgICB2YXIgbCwgYyA9IHQuZ2V0bURpbShpLCByLCBkKSwKICAgICAgICAgICAgICAgICAgICBwID0gdC5wekNhbGNMKGMud2lkdGgsIGMuaGVpZ2h0LCBuKTsKICAgICAgICAgICAgICAgIF9SX2lzX0VkaXRvciB8fCAodFtpXS5wYW56b29tVExzID0gdm9pZCAwID09PSB0W2ldLnBhbnpvb21UTHMgPyB7fSA6IHRbaV0ucGFuem9vbVRMcywgdFtpXS5wYW56b29tQkdzID0gdm9pZCAwID09PSB0W2ldLnBhbnpvb21CR3MgPyB7fSA6IHRbaV0ucGFuem9vbUJHcywgdm9pZCAwID09PSB0W2ldLnBhbnpvb21CR3Nbcl0gJiYgKHRbaV0ucGFuem9vbUJHc1tyXSA9IGUpLCBsID0gdFtpXS5wYW56b29tVExzW3JdKSwgYSA9IGEgfHwgMCwgdm9pZCAwICE9PSBsICYmIChsLnBhdXNlKCksIGwua2lsbCgpLCBsID0gdm9pZCAwKSwgbCA9IHRwR1MuZ3NhcC50aW1lbGluZSh7CiAgICAgICAgICAgICAgICAgICAgcGF1c2VkOiAhMAogICAgICAgICAgICAgICAgfSksIG4ucGFudmFsdWVzLmR1cmF0aW9uID0gTmFOID09PSBuLnBhbnZhbHVlcy5kdXJhdGlvbiB8fCB2b2lkIDAgPT09IG4ucGFudmFsdWVzLmR1cmF0aW9uID8gMTAgOiBuLnBhbnZhbHVlcy5kdXJhdGlvbiwgX1JfaXNfRWRpdG9yIHx8IHZvaWQgMCA9PT0gbiB8fCB2b2lkIDAgPT09IGQgfHwgKGQucGFudmFsdWVzID0gbi5wYW52YWx1ZXMpLCB2b2lkIDAgIT09IGQgJiYgKHZvaWQgMCA9PT0gZC5zaGFkb3dDYW52YXMgJiYgKGQuc2hhZG93Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksIGQuc2hhZG93Q1RYID0gZC5zaGFkb3dDYW52YXMuZ2V0Q29udGV4dCgiMmQiKSwgZC5zaGFkb3dDYW52YXMuc3R5bGUuYmFja2dyb3VuZCA9ICJ0cmFuc3BhcmVudCIsIGQuc2hhZG93Q2FudmFzLnN0eWxlLm9wYWNpdHkgPSAxKSwgZC5zaGFkb3dDYW52YXMud2lkdGggPSBjLndpZHRoLCBkLnNoYWRvd0NhbnZhcy5oZWlnaHQgPSBjLmhlaWdodCwgcC5zbGlkZWluZGV4ID0gciwgcC5zbGlkZWtleSA9IF9SX2lzX0VkaXRvciA/IHZvaWQgMCA6IHMsIHQucHpEcmF3U2hhZG93KGksIGQsIHApLCBwLmVuZC5vblVwZGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQucHpEcmF3U2hhZG93KGksIGQsIHApCiAgICAgICAgICAgICAgICB9LCBkLnBhblN0YXJ0ID0galF1ZXJ5LmV4dGVuZCghMCwge30sIHAuc3RhcnQpLCB2b2lkIDAgPT09IG4ucGFudmFsdWVzLmJsdXJzdGFydCB8fCB2b2lkIDAgPT09IG4ucGFudmFsdWVzLmJsdXJlbmQgfHwgMCA9PT0gbi5wYW52YWx1ZXMuYmx1cnN0YXJ0ICYmIDAgPT09IG4ucGFudmFsdWVzLmJsdXJlbmQgfHwgKHAuc3RhcnQuYmx1ciA9IG4ucGFudmFsdWVzLmJsdXJzdGFydCwgcC5lbmQuYmx1ciA9IG4ucGFudmFsdWVzLmJsdXJlbmQpLCBsLmFkZCh0cEdTLmdzYXAudG8ocC5zdGFydCwgbi5wYW52YWx1ZXMuZHVyYXRpb24sIHAuZW5kKSwgMCksIGwucHJvZ3Jlc3MoYSksICJwbGF5IiAhPT0gbyAmJiAiZmlyc3QiICE9PSBvIHx8IGwucGxheSgpLCBfUl9pc19FZGl0b3IgPyBSVlMuVExbUlZTLlMuc2xpZGVJZF0ucGFuem9vbSA9IGwgOiB0W2ldLnBhbnpvb21UTHNbcl0gPSBsKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSkKfShqUXVlcnkpLApmdW5jdGlvbihlKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgdCA9IGpRdWVyeS5mbi5yZXZvbHV0aW9uLAogICAgICAgIGkgPSB0LmlzX21vYmlsZSgpOwogICAgalF1ZXJ5LmV4dGVuZCghMCwgdCwgewogICAgICAgIGNoZWNrRm9yUGFyYWxsYXg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIG8gPSB0W2VdLnBhcmFsbGF4OwogICAgICAgICAgICBpZiAoIW8uZG9uZSkgewogICAgICAgICAgICAgICAgaWYgKG8uZG9uZSA9ICEwLCBpICYmIG8uZGlzYWJsZV9vbm1vYmlsZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgaWYgKCIzRCIgPT0gby50eXBlIHx8ICIzZCIgPT0gby50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuYWRkU2FmYXJpRml4KGUpLCB0cEdTLmdzYXAuc2V0KHRbZV0uYywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IG8uZGRkX292ZXJmbG93CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0cEdTLmdzYXAuc2V0KHRbZV0uY2FudmFzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogby5kZGRfb3ZlcmZsb3cKICAgICAgICAgICAgICAgICAgICAgICAgfSksICJjYXJvdXNlbCIgIT0gdFtlXS5zbGlkZXJUeXBlICYmIG8uZGRkX3NoYWRvdykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGpRdWVyeSgnPGRpdiBjbGFzcz0iZGRkd3JhcHBlcnNoYWRvdyI+PC9kaXY+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwR1MuZ3NhcC5zZXQocywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2UzRDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtUGVyc3BlY3RpdmU6IDE2MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICI1MCUgNTAlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICIxMDAlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdFtlXS5jLnByZXBlbmQocykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0W2VdLnNsaWRlcykgdFtlXS5zbGlkZXMuaGFzT3duUHJvcGVydHkobikgJiYgYShqUXVlcnkodFtlXS5zbGlkZXNbbl0pLCBlKTsKICAgICAgICAgICAgICAgICAgICB0W2VdLmMuZmluZCgicnMtc3RhdGljLWxheWVycyIpLmxlbmd0aCA+IDAgJiYgKHRwR1MuZ3NhcC5zZXQodFtlXS5jLmZpbmQoInJzLXN0YXRpYy1sYXllcnMiKSwgewogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogIjEwMCUiCiAgICAgICAgICAgICAgICAgICAgfSksIGEodFtlXS5jLmZpbmQoInJzLXN0YXRpYy1sYXllcnMiKSwgZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvLnBjb250YWluZXJzID0ge30sIG8uYmdjb250YWluZXJzID0gW10sIG8uYmdjb250YWluZXJfZGVwdGhzID0gW10sIG8uc3BlZWQgPSB2b2lkIDAgPT09IG8uc3BlZWQgPyAwIDogcGFyc2VJbnQoby5zcGVlZCwgMCksIG8uc3BlZWRiZyA9IHZvaWQgMCA9PT0gby5zcGVlZGJnID8gMCA6IHBhcnNlSW50KG8uc3BlZWRiZywgMCksIG8uc3BlZWRscyA9IHZvaWQgMCA9PT0gby5zcGVlZGxzID8gMCA6IHBhcnNlSW50KG8uc3BlZWRscywgMCksIHRbZV0uYy5maW5kKCJycy1zbGlkZSBycy1zYmctd3JhcCwgcnMtc2xpZGUgcnMtYmd2aWRlbyIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBqUXVlcnkodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmRhdGEoInBhcmFsbGF4Iik7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmlzU2FmYXJpMTEgfHwgKHRbZV0ucGFyWiA9IDEpLCB2b2lkIDAgIT09IChhID0gIm9uIiA9PSBhIHx8ICEwID09PSBhID8gMSA6IGEpICYmICJvZmYiICE9PSBhICYmICExICE9PSBhICYmIChvLmJnY29udGFpbmVycy5wdXNoKGkuY2xvc2VzdCgicnMtc2JnLXB4IikpLCBvLmJnY29udGFpbmVyX2RlcHRocy5wdXNoKHRbZV0ucGFyYWxsYXgubGV2ZWxzW3BhcnNlSW50KGEsIDApIC0gMV0gLyAxMDApKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBmb3IgKG4gPSAxOyBuIDw9IG8ubGV2ZWxzLmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCBpbiB0W2VdLnNsaWRlcykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRbZV0uc2xpZGVzLmhhc093blByb3BlcnR5KGQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IChwID0gdFtlXS5zbGlkZXNbZF0pLmRhdGFzZXQua2V5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBvLnBjb250YWluZXJzW2xdICYmIChvLnBjb250YWluZXJzW2xdID0ge30pLCByKG4sIG8sIHAsIG8ucGNvbnRhaW5lcnNbbF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsID0gInN0YXRpYyI7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBvLnBjb250YWluZXJzW2xdICYmIChvLnBjb250YWluZXJzW2xdID0ge30pLCByKG4sIG8sIHRbZV0uc2xheWVyc1swXSwgby5wY29udGFpbmVyc1tsXSksIEpTT04uc3RyaW5naWZ5KG8ucGNvbnRhaW5lcnNbbF0pID09IEpTT04uc3RyaW5naWZ5KHt9KSAmJiBkZWxldGUgby5wY29udGFpbmVyc1tsXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCJtb3VzZSIgPT0gby50eXBlIHx8ICJtb3VzZXNjcm9sbCIgPT0gby50eXBlIHx8ICIzRCIgPT0gby50eXBlIHx8ICIzZCIgPT0gby50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAicnMtc2xpZGUgLmRkZHdyYXBwZXIsIC5kZGR3cmFwcGVyc2hhZG93LCBycy1zbGlkZSAuZGRkd3JhcHBlci1sYXllciwgcnMtc3RhdGljLWxheWVycyAuZGRkd3JhcHBlci1sYXllciI7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCBpbiAiY2Fyb3VzZWwiID09PSB0W2VdLnNsaWRlclR5cGUgJiYgKGMgPSAicnMtc2xpZGUgLmRkZHdyYXBwZXIsIHJzLXNsaWRlIC5kZGR3cmFwcGVyLWxheWVyLCBycy1zdGF0aWMtbGF5ZXJzIC5kZGR3cmFwcGVyLWxheWVyIiksIG8uc2N0b3JzID0ge30sIHRbZV0uc2xpZGVzKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFtlXS5zbGlkZXMuaGFzT3duUHJvcGVydHkoZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChwID0gdFtlXS5zbGlkZXNbZF0pLmRhdGFzZXQua2V5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5zY3RvcnNbbF0gPSBwLnF1ZXJ5U2VsZWN0b3JBbGwoYykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRbZV0uc2xheWVyc1swXSAmJiAoby5zY3RvcnMuc3RhdGljID0gdFtlXS5zbGF5ZXJzWzBdLnF1ZXJ5U2VsZWN0b3JBbGwoYykpLCBvLm1vdXNlRW50ZXJlZCA9ICExLCB0W2VdLmMub24oIm1vdXNlZW50ZXIiLCBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdFtlXS5jLm9mZnNldCgpLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0W2VdLmMub2Zmc2V0KCkubGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgby5tb3VzZUVudGVyWCA9IGkucGFnZVggLSByLCBvLm1vdXNlRW50ZXJZID0gaS5wYWdlWSAtIGEsIG8ubW91c2VFbnRlcmVkID0gITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHRoaXMudXBkYXRlUGFyYWxsYXguYmluZCh0aGlzLCBlLCBvKTsKICAgICAgICAgICAgICAgICAgICB0W2VdLmMub24oIm1vdXNlbW92ZS5ob3ZlcmRpciwgbW91c2VsZWF2ZS5ob3ZlcmRpciwgdHJpZ2dlcjNkcGF0aCIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby5ldmVudERhdGEgPSBlLCB2b2lkIDAgIT09IG8uZnJhbWUgJiYgIm1vdXNlbGVhdmUiICE9PSBlLnR5cGUgfHwgKG8uZnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGcpKQogICAgICAgICAgICAgICAgICAgIH0pLCBpICYmIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkZXZpY2VvcmllbnRhdGlvbiIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby5ldmVudERhdGEgPSBlLCB2b2lkIDAgPT09IG8uZnJhbWUgJiYgKG8uZnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGcpKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgdSA9IHRbZV0uc2Nyb2xsZWZmZWN0OwogICAgICAgICAgICAgICAgdS5zZXQgJiYgKHUubXVsdGlwbGljYXRvcl9sYXllcnMgPSBwYXJzZUZsb2F0KHUubXVsdGlwbGljYXRvcl9sYXllcnMpLCB1Lm11bHRpcGxpY2F0b3IgPSBwYXJzZUZsb2F0KHUubXVsdGlwbGljYXRvcikpLCB2b2lkIDAgIT09IHUuX0wgJiYgMCA9PT0gdS5fTC5sZW5ndGggJiYgKHUuX0wgPSAhMSksIHZvaWQgMCAhPT0gdS5iZ3MgJiYgMCA9PT0gdS5iZ3MubGVuZ3RoICYmICh1LmJncyA9ICExKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBnZXRMYXllclBhcmFsbGF4T2Zmc2V0OiBmdW5jdGlvbihlLCBpLCBhKSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHRbZV0ucGFyYWxsYXggJiYgdm9pZCAwICE9PSB0W2VdLnBhcmFsbGF4LnBjb250YWluZXJzICYmIHZvaWQgMCAhPT0gdFtlXS5wYXJhbGxheC5wY29udGFpbmVyc1t0W2VdLl9MW2ldLnNsaWRla2V5XSAmJiB2b2lkIDAgIT09IHRbZV0ucGFyYWxsYXgucGNvbnRhaW5lcnNbdFtlXS5fTFtpXS5zbGlkZWtleV1baV0gPyBNYXRoLmFicyh0W2VdLnBhcmFsbGF4LnBjb250YWluZXJzW3RbZV0uX0xbaV0uc2xpZGVrZXldW2ldWyJvZmZzIiArIGFdKSA6IDAKICAgICAgICB9LAogICAgICAgIHVwZGF0ZVBhcmFsbGF4OiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIGkuZnJhbWUgJiYgKGkuZnJhbWUgPSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaS5mcmFtZSkpOwogICAgICAgICAgICB2YXIgYSwgciwgbyA9IGkuZXZlbnREYXRhLAogICAgICAgICAgICAgICAgcyA9IHRbZV0uYy5vZmZzZXQoKS5sZWZ0LAogICAgICAgICAgICAgICAgbiA9IHRbZV0uYy5vZmZzZXQoKS50b3AsCiAgICAgICAgICAgICAgICBkID0gdFtlXS5jYW52LndpZHRoLAogICAgICAgICAgICAgICAgbCA9IHRbZV0uY2Fudi5oZWlnaHQsCiAgICAgICAgICAgICAgICBjID0gaS5zcGVlZCAvIDFlMyB8fCAzOwogICAgICAgICAgICBpZiAoImVudGVycG9pbnQiID09IGkub3JpZ28gJiYgImRldmljZW9yaWVudGF0aW9uIiAhPT0gby50eXBlID8gKCExID09PSBpLm1vdXNlRW50ZXJlZCAmJiAoaS5tb3VzZUVudGVyWCA9IG8ucGFnZVggLSBzLCBpLm1vdXNlRW50ZXJZID0gby5wYWdlWSAtIG4sIGkubW91c2VFbnRlcmVkID0gITApLCBhID0gaS5tb3VzZUVudGVyWCAtIChvLnBhZ2VYIC0gcyksIHIgPSBpLm1vdXNlRW50ZXJZIC0gKG8ucGFnZVkgLSBuKSwgYyA9IGkuc3BlZWQgLyAxZTMgfHwgLjQpIDogImRldmljZW9yaWVudGF0aW9uIiAhPT0gby50eXBlICYmIChhID0gZCAvIDIgLSAoby5wYWdlWCAtIHMpLCByID0gbCAvIDIgLSAoby5wYWdlWSAtIG4pKSwgImRldmljZW9yaWVudGF0aW9uIiA9PSBvLnR5cGUpIHsKICAgICAgICAgICAgICAgIHZhciBwLCBnLCB1OwogICAgICAgICAgICAgICAgcCA9IG8uYmV0YSAtIDYwLCBnID0gby5nYW1tYSwgdSA9IHA7CiAgICAgICAgICAgICAgICB2YXIgaCA9IE1hdGguYWJzKGkub3JpZW50YXRpb25YIC0gZykgPiAxIHx8IE1hdGguYWJzKGkub3JpZW50YXRpb25ZIC0gdSkgPiAxOwogICAgICAgICAgICAgICAgaWYgKGkub3JpZW50YXRpb25YID0gZywgaS5vcmllbnRhdGlvblkgPSB1LCAhaCkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKHQud2luVyA+IHQuZ2V0V2luSChlKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBtID0gZzsKICAgICAgICAgICAgICAgICAgICBnID0gdSwgdSA9IG0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEgPSAzNjAgLyBkICogKGcgKj0gMS41KSwgciA9IDE4MCAvIGwgKiAodSAqPSAxLjUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICh2YXIgdiBpbiBvLnR5cGUsICJtb3VzZW91dCIgPT09IG8udHlwZSAmJiAoYSA9IDAsIHIgPSAwLCBpLm1vdXNlRW50ZXJlZCA9ICExKSwgaS5wY29udGFpbmVycykKICAgICAgICAgICAgICAgIGlmIChpLnBjb250YWluZXJzLmhhc093blByb3BlcnR5KHYpICYmICh2b2lkIDAgPT09IHRbZV0uYWN0aXZlUlNTbGlkZSB8fCAic3RhdGljIiA9PT0gdiB8fCB0W2VdLnNsaWRlc1t0W2VdLmFjdGl2ZVJTU2xpZGVdLmRhdGFzZXQua2V5ID09PSB2KSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmIGluIGkucGNvbnRhaW5lcnNbdl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLnBjb250YWluZXJzW3ZdLmhhc093blByb3BlcnR5KGYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGkucGNvbnRhaW5lcnNbdl1bZl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LnBsID0gIjNEIiA9PSBpLnR5cGUgfHwgIjNkIiA9PSBpLnR5cGUgPyB5LmRlcHRoIC8gMjAwIDogeS5kZXB0aCAvIDEwMCwgeS5vZmZzaCA9IGEgKiB5LnBsLCB5Lm9mZnN2ID0gciAqIHkucGwsICJtb3VzZXNjcm9sbCIgPT0gaS50eXBlID8gdHBHUy5nc2FwLnRvKHkudHB3LCBjLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2UzRDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHkub2Zmc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogInBvd2VyMy5vdXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ3cml0ZTogImFsbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogdHBHUy5nc2FwLnRvKHkudHB3LCBjLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2UzRDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHkub2Zmc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogeS5vZmZzdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiAicG93ZXIzLm91dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlOiAiYWxsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIjNEIiA9PSBpLnR5cGUgfHwgIjNkIiA9PSBpLnR5cGUpCiAgICAgICAgICAgICAgICBmb3IgKHZhciB2IGluIGkuc2N0b3JzKQogICAgICAgICAgICAgICAgICAgIGlmIChpLnNjdG9ycy5oYXNPd25Qcm9wZXJ0eSh2KSAmJiAodm9pZCAwID09PSB0W2VdLmFjdGl2ZVJTU2xpZGUgfHwgInN0YXRpYyIgPT09IHYgfHwgdFtlXS5zbGlkZXNbdFtlXS5hY3RpdmVSU1NsaWRlXS5kYXRhc2V0LmtleSA9PT0gdikpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGYgaW4gaS5zY3RvcnNbdl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5zY3RvcnNbdl0uaGFzT3duUHJvcGVydHkoZikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0galF1ZXJ5KGkuc2N0b3JzW3ZdW2ZdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHQuaXNGaXJlZm94KCkgPyBNYXRoLm1pbigyNSwgaS5sZXZlbHNbaS5sZXZlbHMubGVuZ3RoIC0gMV0pIC8gMjAwIDogaS5sZXZlbHNbaS5sZXZlbHMubGVuZ3RoIC0gMV0gLyAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBhICogYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IHIgKiBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gMCA9PSB0W2VdLmNhbnYud2lkdGggPyAwIDogTWF0aC5yb3VuZChhIC8gdFtlXS5jYW52LndpZHRoICogYiAqIDEwMCkgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDAgPT0gdFtlXS5jYW52LmhlaWdodCA/IDAgOiBNYXRoLnJvdW5kKHIgLyB0W2VdLmNhbnYuaGVpZ2h0ICogYiAqIDEwMCkgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG4uY2xvc2VzdCgicnMtc2xpZGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlb3JpZW50YXRpb24iID09PSBvLnR5cGUgJiYgKHcgPSBhICogKGIgPSBpLmxldmVsc1tpLmxldmVscy5sZW5ndGggLSAxXSAvIDIwMCksIF8gPSByICogYiAqIDMsIFMgPSAwID09IHRbZV0uY2Fudi53aWR0aCA/IDAgOiBNYXRoLnJvdW5kKGEgLyB0W2VdLmNhbnYud2lkdGggKiBiICogNTAwKSB8fCAwLCB4ID0gMCA9PSB0W2VdLmNhbnYuaGVpZ2h0ID8gMCA6IE1hdGgucm91bmQociAvIHRbZV0uY2Fudi5oZWlnaHQgKiBiICogNzAwKSB8fCAwKSwgbi5oYXNDbGFzcygiZGRkd3JhcHBlci1sYXllciIpICYmIChMID0gaS5kZGRfel9jb3JyZWN0aW9uIHx8IDY1LCBSID0gITApLCBuLmhhc0NsYXNzKCJkZGR3cmFwcGVyLWxheWVyIikgJiYgKHcgPSAwLCBfID0gMCksIGsuaW5kZXgoKSA9PT0gdFtlXS5wcl9hY3RpdmVfa2V5IHx8ICJjYXJvdXNlbCIgIT0gdFtlXS5zbGlkZXJUeXBlID8gIWkuZGRkX2JnZnJlZXplIHx8IFIgPyB0cEdTLmdzYXAudG8obiwgYywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblg6IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uWTogLVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IF8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMub3V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlOiAiYWxsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogdHBHUy5nc2FwLnRvKG4sIC41LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlM0Q6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25ZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMub3V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlOiAiYWxsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogdHBHUy5nc2FwLnRvKG4sIC41LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlM0Q6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25ZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMub3V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlOiAiYWxsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAibW91c2VsZWF2ZSIgIT0gby50eXBlICYmICJtb3VzZW91dCIgIT09IG8udHlwZSB8fCB0cEdTLmdzYXAudG8odGhpcywgMy44LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjMub3V0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBwYXJhbGxheFByb2Nlc3NlczogZnVuY3Rpb24oZSwgYSwgciwgbykgewogICAgICAgICAgICB2YXIgcyA9IHRbZV0uZml4ZWRPblRvcCA/IE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHdpbmRvdy5zY3JvbGxZIC8gdC5sYXN0d2luZG93aGVpZ2h0KSkgOiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCAoMCAtIChhLnRvcCAtIHQubGFzdHdpbmRvd2hlaWdodCkpIC8gKGEuaGhlaWdodCArIHQubGFzdHdpbmRvd2hlaWdodCkpKSwKICAgICAgICAgICAgICAgIG4gPSAoYS50b3AgPj0gMCAmJiBhLnRvcCA8PSB0Lmxhc3R3aW5kb3doZWlnaHQgfHwgYS50b3AgPD0gMCAmJiBhLmJvdHRvbSA+PSAwIHx8IGEudG9wIDw9IDAgJiYgYS5ib3R0b20sIHRbZV0uc2xpZGVzW3ZvaWQgMCA9PT0gdFtlXS5wcl9hY3RpdmVfa2V5ID8gMCA6IHRbZV0ucHJfYWN0aXZlX2tleV0pOwogICAgICAgICAgICBpZiAodFtlXS5zY3JvbGxQcm9nID0gcywgdFtlXS5zY3JvbGxQcm9nQmFzaWNzID0gewogICAgICAgICAgICAgICAgICAgIHRvcDogYS50b3AsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhLmhoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBhLmJvdHRvbQogICAgICAgICAgICAgICAgfSwgdFtlXS5zYnRpbWVsaW5lLmZpeGVkID8gKCExID09PSB0W2VdLmZpeGVkU2Nyb2xsT25TdGF0ZSB8fCAhdC5zdGlja3lTdXBwb3J0ZWQgfHwgMCAhPSB0W2VdLmZ1bGxTY3JlZW5PZmZzZXRSZXN1bHQgJiYgbnVsbCAhPSB0W2VdLmZ1bGxTY3JlZW5PZmZzZXRSZXN1bHQgPyB0LnN0aWNreVN1cHBvcnRlZCA9ICExIDogKHRbZV0udG9wYy5hZGRDbGFzcygicnMtc3RpY2t5c2Nyb2xsb24iKSwgdFtlXS5maXhlZFNjcm9sbE9uU3RhdGUgPSAhMCksIHZvaWQgMCA9PT0gdFtlXS5zYnRpbWVsaW5lLnJlc3QgJiYgdC51cGRhdGVGaXhlZFNjcm9sbFRpbWVzKGUpLCBhLnRvcCA+PSB0W2VdLmZ1bGxTY3JlZW5PZmZzZXRSZXN1bHQgJiYgYS50b3AgPD0gdC5sYXN0d2luZG93aGVpZ2h0ID8gKHMgPSB0W2VdLnNidGltZWxpbmUuZml4U3RhcnQgKiAoMSAtIGEudG9wIC8gdC5sYXN0d2luZG93aGVpZ2h0KSAvIDFlMywgITAgIT09IHQuc3RpY2t5U3VwcG9ydGVkICYmICExICE9PSB0W2VdLmZpeGVkU2Nyb2xsT25TdGF0ZSAmJiAodFtlXS50b3BjLnJlbW92ZUNsYXNzKCJycy1maXhlZHNjcm9sbG9uIiksIHRwR1MuZ3NhcC5zZXQodFtlXS5jcGFyLCB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgICAgIH0pLCB0W2VdLmZpeGVkU2Nyb2xsT25TdGF0ZSA9ICExKSkgOiBhLnRvcCA8PSB0W2VdLmZ1bGxTY3JlZW5PZmZzZXRSZXN1bHQgJiYgYS5ib3R0b20gPj0gdFtlXS5tb2R1bGUuaGVpZ2h0ID8gKCEwICE9PSB0LnN0aWNreVN1cHBvcnRlZCAmJiAhMCAhPT0gdFtlXS5maXhlZFNjcm9sbE9uU3RhdGUgJiYgKHRbZV0uZml4ZWRTY3JvbGxPblN0YXRlID0gITAsIHRbZV0udG9wYy5hZGRDbGFzcygicnMtZml4ZWRzY3JvbGxvbiIpLCB0cEdTLmdzYXAuc2V0KHRbZV0uY3BhciwgewogICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICB5OiB0W2VdLmZ1bGxTY3JlZW5PZmZzZXRSZXN1bHQKICAgICAgICAgICAgICAgIH0pKSwgcyA9ICh0W2VdLnNidGltZWxpbmUuZml4U3RhcnQgKyB0W2VdLnNidGltZWxpbmUudGltZSAqIChNYXRoLmFicyhhLnRvcCkgLyAoYS5oaGVpZ2h0IC0gdFtlXS5tb2R1bGUuaGVpZ2h0KSkpIC8gMWUzKSA6ICghMCAhPT0gdC5zdGlja3lTdXBwb3J0ZWQgJiYgKHRwR1MuZ3NhcC5zZXQodFtlXS5jcGFyLCB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiB0W2VdLnNjcm9sbHByb2MgPj0gMCA/IDAgOiBhLmhlaWdodCAtIHRbZV0ubW9kdWxlLmhlaWdodAogICAgICAgICAgICAgICAgfSksICExICE9PSB0W2VdLmZpeGVkU2Nyb2xsT25TdGF0ZSAmJiAodFtlXS50b3BjLnJlbW92ZUNsYXNzKCJycy1maXhlZHNjcm9sbG9uIiksIHRbZV0uZml4ZWRTY3JvbGxPblN0YXRlID0gITEpKSwgcyA9IGEudG9wID4gdC5sYXN0d2luZG93aGVpZ2h0ID8gMCA6ICh0W2VdLnNidGltZWxpbmUuZml4RW5kICsgdFtlXS5zYnRpbWVsaW5lLnJlc3QgKiAoMSAtIGEuYm90dG9tIC8gdFtlXS5tb2R1bGUuaGVpZ2h0KSkgLyAxZTMpKSA6IHMgPSB0W2VdLmR1cmF0aW9uICogcyAvIDFlMywgdm9pZCAwICE9PSBuICYmIHZvaWQgMCAhPT0gdC5nQShuLCAia2V5IikgJiYgITAgIT09IHIpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGQgaW4gdFtlXS5zYmFzW3QuZ0EobiwgImtleSIpXSkKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0W2VdLl9MW2RdICYmIHZvaWQgMCAhPT0gdFtlXS5fTFtkXS50aW1lbGluZSAmJiAoMSA9PSB0W2VdLl9MW2RdLmFuaW1hdGlvbm9uc2Nyb2xsIHx8ICJ0cnVlIiA9PSB0W2VdLl9MW2RdLmFuaW1hdGlvbm9uc2Nyb2xsKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHZvaWQgMCAhPT0gdFtlXS5fTFtkXS5zY3JvbGxCYXNlZE9mZnNldCA/IHMgKyB0W2VdLl9MW2RdLnNjcm9sbEJhc2VkT2Zmc2V0IDogczsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGwgPD0gMCA/IDAgOiBsIDwgLjEgPyAuMSA6IGwsIHRbZV0uX0xbZF0uYW5pbXRlVG9UaW1lICE9PSBsICYmICh0W2VdLl9MW2RdLmFuaW10ZVRvVGltZSA9IGwsIHRwR1MuZ3NhcC50byh0W2VdLl9MW2RdLnRpbWVsaW5lLCB0W2VdLnNidGltZWxpbmUuc3BlZWQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiB0W2VdLnNidGltZWxpbmUuZWFzZQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0W2VdLmMudHJpZ2dlcigidGltZWxpbmVfc2Nyb2xsX3Byb2Nlc3NlZCIsIHsKICAgICAgICAgICAgICAgICAgICBpZDogZSwKICAgICAgICAgICAgICAgICAgICBtcHJvYzogcywKICAgICAgICAgICAgICAgICAgICBzcGVlZDogdFtlXS5zYnRpbWVsaW5lLnNwZWVkCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpICYmIHRbZV0ucGFyYWxsYXguZGlzYWJsZV9vbm1vYmlsZSkgcmV0dXJuICExOwogICAgICAgICAgICB2YXIgYyA9IHRbZV0ucGFyYWxsYXg7CiAgICAgICAgICAgIGlmICgiM2QiICE9IGMudHlwZSAmJiAiM0QiICE9IGMudHlwZSkgewogICAgICAgICAgICAgICAgaWYgKCJzY3JvbGwiID09IGMudHlwZSB8fCAibW91c2VzY3JvbGwiID09IGMudHlwZSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGMucGNvbnRhaW5lcnMpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjLnBjb250YWluZXJzLmhhc093blByb3BlcnR5KHApICYmIHZvaWQgMCA9PT0gdFtlXS5hY3RpdmVSU1NsaWRlIHx8ICJzdGF0aWMiID09PSBwIHx8IHRbZV0uc2xpZGVzW3RbZV0uYWN0aXZlUlNTbGlkZV0uZGF0YXNldC5rZXkgPT09IHApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnIGluIGMucGNvbnRhaW5lcnNbcF0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMucGNvbnRhaW5lcnNbcF0uaGFzT3duUHJvcGVydHkoZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBjLnBjb250YWluZXJzW3BdW2ddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHZvaWQgMCAhPT0gbyA/IG8gOiBjLnNwZWVkbHMgLyAxZTMgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5wbCA9IHUuZGVwdGggLyAxMDAsIHUub2Zmc3YgPSBNYXRoLnJvdW5kKHRbZV0uc2Nyb2xscHJvYyAqICgtdS5wbCAqIHRbZV0uY2Fudi5oZWlnaHQpICogMTApIC8gMTAgfHwgMCwgdHBHUy5nc2FwLnRvKHUudHB3LCBoLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGU6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlM0Q6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHUub2Zmc3YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYy5iZ2NvbnRhaW5lcnMpCiAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gMDsgZyA8IGMuYmdjb250YWluZXJzLmxlbmd0aDsgZysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gYy5iZ2NvbnRhaW5lcnNbZ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gYy5iZ2NvbnRhaW5lcl9kZXB0aHNbZ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdFtlXS5zY3JvbGxwcm9jICogKC12ICogdFtlXS5jYW52LmhlaWdodCkgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHZvaWQgMCAhPT0gbyA/IG8gOiBjLnNwZWVkYmcgLyAxZTMgfHwgLjAxNTsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHZvaWQgMCAhPT0gdFtlXS5wYXJhbGxheC5sYXN0QkdZICYmIDAgPT09IGggJiYgTWF0aC5hYnMoZiAtIHRbZV0ucGFyYWxsYXgubGFzdEJHWSkgPiA1MCA/IC4xNSA6IGgsIHRwR1MuZ3NhcC50byhtLCBoLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogIjBweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAiMHB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tmYWNlVmlzaWJpbGl0eTogImhpZGRlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZTNEOiAidHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBmICsgInB4IgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdFtlXS5wYXJhbGxheC5sYXN0QkdZID0gZgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgeSA9IHRbZV0uc2Nyb2xsZWZmZWN0OwogICAgICAgICAgICBpZiAoeS5zZXQgJiYgKCFpIHx8ICExID09PSB5LmRpc2FibGVfb25tb2JpbGUpKSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9IE1hdGguYWJzKHRbZV0uc2Nyb2xscHJvYykgLSB5LnRpbHQgLyAxMDA7CiAgICAgICAgICAgICAgICBpZiAoYiA9IGIgPCAwID8gMCA6IGIsICExICE9PSB5Ll9MKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSAxIC0gYiAqIHkubXVsdGlwbGljYXRvcl9sYXllcnMsCiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZTNEOiAidHJ1ZSIKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAoInRvcCIgPT0geS5kaXJlY3Rpb24gJiYgdFtlXS5zY3JvbGxwcm9jID49IDAgJiYgKHcgPSAxKSwgImJvdHRvbSIgPT0geS5kaXJlY3Rpb24gJiYgdFtlXS5zY3JvbGxwcm9jIDw9IDAgJiYgKHcgPSAxKSwgdyA9IHcgPiAxID8gMSA6IHcgPCAwID8gMCA6IHcsIHkuZmFkZSAmJiAoXy5vcGFjaXR5ID0gdyksIHkuc2NhbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFMgPSB3OwogICAgICAgICAgICAgICAgICAgICAgICBfLnNjYWxlID0gMSAtIFMgKyAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh5LmJsdXIpIEwgPSAoTCA9ICgxIC0gdykgKiB5Lm1heGJsdXIpIDw9IC4wMyA/IDAgOiBMLCBfWyItd2Via2l0LWZpbHRlciJdID0gImJsdXIoIiArIEwgKyAicHgpIiwgXy5maWx0ZXIgPSAiYmx1cigiICsgTCArICJweCkiOwogICAgICAgICAgICAgICAgICAgIGlmICh5LmdyYXlzY2FsZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9ICJncmF5c2NhbGUoIiArIDEwMCAqICgxIC0gdykgKyAiJSkiOwogICAgICAgICAgICAgICAgICAgICAgICBfWyItd2Via2l0LWZpbHRlciJdID0gdm9pZCAwID09PSBfWyItd2Via2l0LWZpbHRlciJdID8geCA6IF9bIi13ZWJraXQtZmlsdGVyIl0gKyAiICIgKyB4LCBfLmZpbHRlciA9IHZvaWQgMCA9PT0gXy5maWx0ZXIgPyB4IDogXy5maWx0ZXIgKyAiICIgKyB4CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRwR1MuZ3NhcC5zZXQoeS5fTCwgXykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghMSAhPT0geS5iZ3MpIHsKICAgICAgICAgICAgICAgICAgICB3ID0gMSAtIGIgKiB5Lm11bHRpcGxpY2F0b3IsIF8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tmYWNlVmlzaWJpbGl0eTogImhpZGRlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlM0Q6ICJ0cnVlIgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayBpbiAidG9wIiA9PSB5LmRpcmVjdGlvbiAmJiB0W2VdLnNjcm9sbHByb2MgPj0gMCAmJiAodyA9IDEpLCAiYm90dG9tIiA9PSB5LmRpcmVjdGlvbiAmJiB0W2VdLnNjcm9sbHByb2MgPD0gMCAmJiAodyA9IDEpLCB3ID0gdyA+IDEgPyAxIDogdyA8IDAgPyAwIDogdywgeS5iZ3MpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5LmJncy5oYXNPd25Qcm9wZXJ0eShrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkuYmdzW2tdLmZhZGUgJiYgKF8ub3BhY2l0eSA9IHcpLCB5LmJnc1trXS5ibHVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEwgPSAoMSAtIHcpICogeS5tYXhibHVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9bIi13ZWJraXQtZmlsdGVyIl0gPSAiYmx1cigiICsgTCArICJweCkiLCBfLmZpbHRlciA9ICJibHVyKCIgKyBMICsgInB4KSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5LmJnc1trXS5ncmF5c2NhbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gImdyYXlzY2FsZSgiICsgMTAwICogKDEgLSB3KSArICIlKSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1siLXdlYmtpdC1maWx0ZXIiXSA9IHZvaWQgMCA9PT0gX1siLXdlYmtpdC1maWx0ZXIiXSA/IHggOiBfWyItd2Via2l0LWZpbHRlciJdICsgIiAiICsgeCwgXy5maWx0ZXIgPSB2b2lkIDAgPT09IF8uZmlsdGVyID8geCA6IF8uZmlsdGVyICsgIiAiICsgeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBHUy5nc2FwLnNldCh5LmJnc1trXS5jLCBfKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBhID0gZnVuY3Rpb24oZSwgaSkgewogICAgICAgIHZhciBhID0gdFtpXS5wYXJhbGxheDsKICAgICAgICBlLmZpbmQoInJzLXNiZy13cmFwIikud3JhcEFsbCgnPGRpdiBjbGFzcz0iZGRkd3JhcHBlciIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjBweDtsZWZ0OjBweDtvdmVyZmxvdzpoaWRkZW4iPjwvZGl2PicpOwogICAgICAgIHZhciByID0gZVswXS5xdWVyeVNlbGVjdG9yQWxsKCIucnMtcGFyYWxsYXgtd3JhcCIpLAogICAgICAgICAgICBvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgby5jbGFzc05hbWUgPSAiZGRkd3JhcHBlci1sYXllciIsIG8uc3R5bGUud2lkdGggPSAiMTAwJSIsIG8uc3R5bGUuaGVpZ2h0ID0gIjEwMCUiLCBvLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIiwgby5zdHlsZS50b3AgPSAiMHB4Iiwgby5zdHlsZS5sZWZ0ID0gIjBweCIsIG8uc3R5bGUuekluZGV4ID0gNSwgby5zdHlsZS5vdmVyZmxvdyA9IGEuZGRkX2xheWVyX292ZXJmbG93OwogICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgci5sZW5ndGg7IHMrKykgci5oYXNPd25Qcm9wZXJ0eShzKSAmJiBudWxsID09PSB0LmNsb3Nlc3ROb2RlKHJbc10sICJSUy1HUk9VUCIpICYmIG51bGwgPT09IHQuY2xvc2VzdE5vZGUocltzXSwgIlJTLVJPVyIpICYmIG8uYXBwZW5kQ2hpbGQocltzXSk7CiAgICAgICAgZVswXS5hcHBlbmRDaGlsZChvKSwgZS5maW5kKCIucnMtcHhsLXRvYmdncm91cCIpLmNsb3Nlc3QoIi5ycy1wYXJhbGxheC13cmFwIikud3JhcEFsbCgnPGRpdiBjbGFzcz0iZGRkd3JhcHBlci1sYXllcnRvYmdncm91cCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7bGVmdDowcHg7ei1pbmRleDo1MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlIj48L2Rpdj4nKTsKICAgICAgICB2YXIgbiA9IGUuZmluZCgiLmRkZHdyYXBwZXIiKSwKICAgICAgICAgICAgZCA9IGUuZmluZCgiLmRkZHdyYXBwZXItbGF5ZXIiKTsKICAgICAgICBlLmZpbmQoIi5kZGR3cmFwcGVyLWxheWVydG9iZ2dyb3VwIikuYXBwZW5kVG8obiksICJjYXJvdXNlbCIgPT0gdFtpXS5zbGlkZXJUeXBlICYmIChhLmRkZF9zaGFkb3cgJiYgbi5hZGRDbGFzcygiZGRkd3JhcHBlcnNoYWRvdyIpLCB0cEdTLmdzYXAuc2V0KG4sIHsKICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiB0W2ldLmNhcm91c2VsLmJvcmRlcl9yYWRpdXMKICAgICAgICB9KSksIHRwR1MuZ3NhcC5zZXQoZSwgewogICAgICAgICAgICBvdmVyZmxvdzogInZpc2libGUiLAogICAgICAgICAgICB0cmFuc2Zvcm1TdHlsZTogInByZXNlcnZlLTNkIiwKICAgICAgICAgICAgcGVyc3BlY3RpdmU6IDE2MDAKICAgICAgICB9KSwgdHBHUy5nc2FwLnNldChuLCB7CiAgICAgICAgICAgIGZvcmNlM0Q6ICJhdXRvIiwKICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAiNTAlIDUwJSIsCiAgICAgICAgICAgIHRyYW5zZm9ybVN0eWxlOiAicHJlc2VydmUtM2QiLAogICAgICAgICAgICB0cmFuc2Zvcm1QZXJzcGVjdGl2ZTogMTYwMAogICAgICAgIH0pLCB0cEdTLmdzYXAuc2V0KGQsIHsKICAgICAgICAgICAgZm9yY2UzRDogImF1dG8iLAogICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICI1MCUgNTAlIiwKICAgICAgICAgICAgekluZGV4OiA1LAogICAgICAgICAgICB0cmFuc2Zvcm1TdHlsZTogImZsYXQiLAogICAgICAgICAgICB0cmFuc2Zvcm1QZXJzcGVjdGl2ZTogMTYwMAogICAgICAgIH0pLCB0cEdTLmdzYXAuc2V0KHRbaV0uY2FudmFzLCB7CiAgICAgICAgICAgIHRyYW5zZm9ybVN0eWxlOiAicHJlc2VydmUtM2QiLAogICAgICAgICAgICB0cmFuc2Zvcm1QZXJzcGVjdGl2ZTogMTYwMAogICAgICAgIH0pCiAgICB9OwoKICAgIGZ1bmN0aW9uIHIoaSwgYSwgciwgbykgewogICAgICAgIGUocikuZmluZCgiLnJzLXB4bC0iICsgaSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmNsYXNzTmFtZS5pbmRleE9mKCJycy1weG1hc2siKSA+PSAwLAogICAgICAgICAgICAgICAgciA9IGUgPyB0LmNsb3Nlc3ROb2RlKHRoaXMsICJSUy1QWC1NQVNLIikgOiB0LmNsb3Nlc3RDbGFzcyh0aGlzLCAicnMtcGFyYWxsYXgtd3JhcCIpOwogICAgICAgICAgICByICYmIChlICYmICF3aW5kb3cuaXNTYWZhcmkxMSAmJiAodHBHUy5nc2FwLnNldChyLCB7CiAgICAgICAgICAgICAgICB6OiAxCiAgICAgICAgICAgIH0pLCB0cEdTLmdzYXAuc2V0KHQuY2xvc2VzdE5vZGUociwgIlJTLUJHLUVMRU0iKSwgewogICAgICAgICAgICAgICAgejogMQogICAgICAgICAgICB9KSksIHIuZGF0YXNldC5wYXJhbGxheGxldmVsID0gYS5sZXZlbHNbaSAtIDFdLCByLmNsYXNzTGlzdC5hZGQoInRwLXBhcmFsbGF4LWNvbnRhaW5lciIpLCBvW3RoaXMuaWRdID0gewogICAgICAgICAgICAgICAgdHB3OiByLAogICAgICAgICAgICAgICAgZGVwdGg6IGEubGV2ZWxzW2kgLSAxXSwKICAgICAgICAgICAgICAgIG9mZnN2OiAwLAogICAgICAgICAgICAgICAgb2Zmc2g6IDAKICAgICAgICAgICAgfSkKICAgICAgICB9KQogICAgfQp9KGpRdWVyeSksCmZ1bmN0aW9uKGUpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHdpbmRvdy5fUl9pc19FZGl0b3IgPyBSVlMuX1IgPSB2b2lkIDAgPT09IFJWUy5fUiA/IHt9IDogUlZTLl9SIDogd2luZG93Ll9SX2lzX0VkaXRvciA9ICExOwogICAgdmFyIHQgPSBfUl9pc19FZGl0b3IgPyBSVlMuX1IgOiBqUXVlcnkuZm4ucmV2b2x1dGlvbiwKICAgICAgICBpID0gIV9SX2lzX0VkaXRvciAmJiB0LmlzX21vYmlsZSgpOwogICAgX1JfaXNfRWRpdG9yICYmIChSVlMuX1IuaXNOdW1lcmljID0gUlZTLkYuaXNOdW1lcmljKSwgalF1ZXJ5LmV4dGVuZCghMCwgdCwgewogICAgICAgIGdldFNsaWRlQW5pbWF0aW9uT2JqOiBmdW5jdGlvbihlLCBpLCBhKSB7CiAgICAgICAgICAgIHZhciByLCBvID0ge307CiAgICAgICAgICAgIGZvciAodmFyIHMgaW4gdm9pZCAwID09PSBpLmFuaW0gJiYgbnVsbCA9PSBpLmluICYmIChpLmluID0gIm86MCIpLCBpKQogICAgICAgICAgICAgICAgaWYgKGkuaGFzT3duUHJvcGVydHkocykgJiYgdm9pZCAwICE9PSBpW3NdKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBpW3NdLnNwbGl0KCI7Iik7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCBpbiBuKSBuLmhhc093blByb3BlcnR5KGQpICYmIHZvaWQgMCAhPT0gKHIgPSBuW2RdLnNwbGl0KCI6IikpWzBdICYmIHZvaWQgMCAhPT0gclsxXSAmJiAob1tzXSA9IHZvaWQgMCA9PT0gb1tzXSA/IHt9IDogb1tzXSwgb1tzXVtyWzBdXSA9ICJkMyIgPT09IHMgJiYgImMiID09PSByWzBdID8gclsxXSA6IHJbMV0uc3BsaXQoIiwiKVswXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG8uaW4gPSB2b2lkIDAgPT09IG8uaW4gPyB7fSA6IG8uaW4sIG8uYW5pbSA9IHZvaWQgMCA9PT0gby5hbmltID8gewogICAgICAgICAgICAgICAgZTogImJhc2ljIgogICAgICAgICAgICB9IDogby5hbmltLCBfUl9pc19FZGl0b3IgfHwgdm9pZCAwID09PSBvLmluIHx8IHZvaWQgMCA9PT0gby5pbi5wcnN0IHx8IHQubG9hZFNsaWRlQW5pbUxpYnJhcnkoZSwgewogICAgICAgICAgICAgICAga2V5OiBhLAogICAgICAgICAgICAgICAgcHJzdDogby5pbi5wcnN0CiAgICAgICAgICAgIH0pLCB0W2VdLnNiZ3NbYV0uc2xpZGVhbmltYXRpb25SZWJ1aWxkID0gITEsIG8KICAgICAgICB9LAogICAgICAgIGxvYWRTbGlkZUFuaW1MaWJyYXJ5OiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gdC5TTFRSICYmICEwICE9PSB0LlNMVFJfbG9hZGluZyA/ICh0LlNMVFJfbG9hZGluZyA9ICEwLCBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICB0eXBlOiAicG9zdCIsCiAgICAgICAgICAgICAgICB1cmw6IHRbZV0uYWpheFVybCwKICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCiAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAicmV2c2xpZGVyX2FqYXhfY2FsbF9mcm9udCIsCiAgICAgICAgICAgICAgICAgICAgY2xpZW50X2FjdGlvbjogImdldF90cmFuc2l0aW9ucyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihhLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgMSA9PSBhLnN1Y2Nlc3MgJiYgKHQuU0xUUiA9IGEudHJhbnNpdGlvbnMsIHZvaWQgMCAhPT0gaSAmJiB0LnNldFJhbmRvbURlZmF1bHRzKGUsIGkua2V5LCBpLnByc3QpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlRyYW5zaXRpb24gVGFibGUgY2FuIG5vdCBiZSBsb2FkZWQiKSwgY29uc29sZS5sb2coZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpIDogdm9pZCAwICE9PSBpICYmIHZvaWQgMCAhPT0gdC5TTFRSICYmIHQuc2V0UmFuZG9tRGVmYXVsdHMoZSwgaS5rZXksIGkucHJzdCkKICAgICAgICB9LAogICAgICAgIGNvbnZlcnRTbGlkZUFuaW1WYWxzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBhbmltOiB7CiAgICAgICAgICAgICAgICAgICAgZW5nOiBlLmVuZywKICAgICAgICAgICAgICAgICAgICBtczogcGFyc2VJbnQoZS5zcGVlZCwgMCksCiAgICAgICAgICAgICAgICAgICAgbzogZS5vLAogICAgICAgICAgICAgICAgICAgIGU6IGUuZSwKICAgICAgICAgICAgICAgICAgICBmOiBlLmYsCiAgICAgICAgICAgICAgICAgICAgcDogZS5wLAogICAgICAgICAgICAgICAgICAgIGQ6IHBhcnNlSW50KGUuZCwgMCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkMzogewogICAgICAgICAgICAgICAgICAgIGY6IGUuZDMuZiwKICAgICAgICAgICAgICAgICAgICBkOiBlLmQzLmQsCiAgICAgICAgICAgICAgICAgICAgejogZS5kMy56LAogICAgICAgICAgICAgICAgICAgIHQ6IGUuZDMudCwKICAgICAgICAgICAgICAgICAgICBjOiBlLmQzLmMsCiAgICAgICAgICAgICAgICAgICAgZTogZS5kMy5lLAogICAgICAgICAgICAgICAgICAgIGZkaTogZS5kMy5mZGksCiAgICAgICAgICAgICAgICAgICAgZmRvOiBlLmQzLmZkbywKICAgICAgICAgICAgICAgICAgICBmejogZS5kMy5meiwKICAgICAgICAgICAgICAgICAgICBzdTogZS5kMy5zdSwKICAgICAgICAgICAgICAgICAgICBzbWk6IGUuZDMuc21pLAogICAgICAgICAgICAgICAgICAgIHNtYTogZS5kMy5zbWEsCiAgICAgICAgICAgICAgICAgICAgc2M6IGUuZDMuc2MsCiAgICAgICAgICAgICAgICAgICAgc2w6IGUuZDMuc2wKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbjogewogICAgICAgICAgICAgICAgICAgIGVuZzogZS5pbi5lbmcsCiAgICAgICAgICAgICAgICAgICAgbzogX1JfaXNfRWRpdG9yICYmIHZvaWQgMCAhPT0gZS5wcmVzZXQgJiYgMCA9PT0gZS5wcmVzZXQuaW5kZXhPZigicm5kIikgPyAwIDogdC52YWxCZWF1KGUuaW4ubyksCiAgICAgICAgICAgICAgICAgICAgeDogdC52YWxCZWF1KGUuaW4ueCksCiAgICAgICAgICAgICAgICAgICAgeTogdC52YWxCZWF1KGUuaW4ueSksCiAgICAgICAgICAgICAgICAgICAgcjogdC52YWxCZWF1KGUuaW4uciksCiAgICAgICAgICAgICAgICAgICAgc3g6IHQudmFsQmVhdShlLmluLnN4KSwKICAgICAgICAgICAgICAgICAgICBzeTogdC52YWxCZWF1KGUuaW4uc3kpLAogICAgICAgICAgICAgICAgICAgIG06IGUuaW4ubSwKICAgICAgICAgICAgICAgICAgICBlOiBlLmluLmUsCiAgICAgICAgICAgICAgICAgICAgcm93OiBlLmluLnJvdywKICAgICAgICAgICAgICAgICAgICBjb2w6IGUuaW4uY29sLAogICAgICAgICAgICAgICAgICAgIG1vOiAiZmFsc2UiICE9PSBlLmluLm1vdSAmJiAhMSAhPT0gZS5pbi5tb3UgPyB0LnZhbEJlYXUoZS5pbi5tbykgOiAwLAogICAgICAgICAgICAgICAgICAgIG1vbzogImZhbHNlIiAhPT0gZS5pbi5tb3UgJiYgITEgIT09IGUuaW4ubW91ID8gdC52YWxCZWF1KGUuaW4ubW9vKSA6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICBtb3U6IGUuaW4ubW91CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb3V0OiB2b2lkIDAgPT09IGUub3V0LmEgfHwgInRydWUiID09IGUub3V0LmEgfHwgITAgPT09IGUub3V0LmEgPyB2b2lkIDAgOiB7CiAgICAgICAgICAgICAgICAgICAgYTogbChlLm91dC5hKSwKICAgICAgICAgICAgICAgICAgICBvOiB0LnZhbEJlYXUoZS5vdXQubyksCiAgICAgICAgICAgICAgICAgICAgeDogdC52YWxCZWF1KGUub3V0LngpLAogICAgICAgICAgICAgICAgICAgIHk6IHQudmFsQmVhdShlLm91dC55KSwKICAgICAgICAgICAgICAgICAgICByOiB0LnZhbEJlYXUoZS5vdXQuciksCiAgICAgICAgICAgICAgICAgICAgc3g6IHQudmFsQmVhdShlLm91dC5zeCksCiAgICAgICAgICAgICAgICAgICAgc3k6IHQudmFsQmVhdShlLm91dC5zeSksCiAgICAgICAgICAgICAgICAgICAgbTogZS5vdXQubSwKICAgICAgICAgICAgICAgICAgICBlOiBlLm91dC5lLAogICAgICAgICAgICAgICAgICAgIHJvdzogdC52YWxCZWF1KGUub3V0LnJvdyksCiAgICAgICAgICAgICAgICAgICAgY29sOiB0LnZhbEJlYXUoZS5vdXQuY29sKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpbHRlcjogewogICAgICAgICAgICAgICAgICAgIHU6IGUuZmlsdGVyLnUsCiAgICAgICAgICAgICAgICAgICAgZTogZS5maWx0ZXIuZSwKICAgICAgICAgICAgICAgICAgICBiOiBlLmZpbHRlci5iLAogICAgICAgICAgICAgICAgICAgIGc6IGUuZmlsdGVyLmcsCiAgICAgICAgICAgICAgICAgICAgaDogZS5maWx0ZXIuaCwKICAgICAgICAgICAgICAgICAgICBzOiBlLmZpbHRlci5zLAogICAgICAgICAgICAgICAgICAgIGM6IGUuZmlsdGVyLmMsCiAgICAgICAgICAgICAgICAgICAgaTogZS5maWx0ZXIuaQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZE9uczogZS5hZGRPbnMKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc2V0UmFuZG9tRGVmYXVsdHM6IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgdFtlXS5zYmdzW2ldLnJhbmRvbSA9IHQuZ2V0QW5pbU9iamVjdEJ5S2V5KGEsIHQuU0xUUikKICAgICAgICB9LAogICAgICAgIGdldFNsaWRlQW5pbV9BZGRvbkRlZmF1bHRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB7fTsKICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0LmVuYWJsZWRTbGlkZUFuaW1BZGRvbnMpIGUgPSBqUXVlcnkuZXh0ZW5kKCEwLCBlLCB0W3QuZW5hYmxlZFNsaWRlQW5pbUFkZG9uc1tpXV0uZGVmYXVsdHMoKSk7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfSwKICAgICAgICBnZXRTbGlkZUFuaW1fRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgc3BlZWQ6IDFlMywKICAgICAgICAgICAgICAgIG86ICJpbm91dCIsCiAgICAgICAgICAgICAgICBlOiAiYmFzaWMiLAogICAgICAgICAgICAgICAgZjogInN0YXJ0IiwKICAgICAgICAgICAgICAgIHA6ICJub25lIiwKICAgICAgICAgICAgICAgIGQ6IDE1LAogICAgICAgICAgICAgICAgZW5nOiAiYW5pbWF0ZUNvcmUiLAogICAgICAgICAgICAgICAgZDM6IHsKICAgICAgICAgICAgICAgICAgICBmOiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgZDogImhvcml6b250YWwiLAogICAgICAgICAgICAgICAgICAgIHo6IDMwMCwKICAgICAgICAgICAgICAgICAgICB0OiAwLAogICAgICAgICAgICAgICAgICAgIGM6ICIjY2NjIiwKICAgICAgICAgICAgICAgICAgICBlOiAicG93ZXIyLmluT3V0IiwKICAgICAgICAgICAgICAgICAgICBmZGk6IDEuNSwKICAgICAgICAgICAgICAgICAgICBmZG86IDIsCiAgICAgICAgICAgICAgICAgICAgZno6IDAsCiAgICAgICAgICAgICAgICAgICAgc3U6ICExLAogICAgICAgICAgICAgICAgICAgIHNtaTogMCwKICAgICAgICAgICAgICAgICAgICBzbWE6IC41LAogICAgICAgICAgICAgICAgICAgIHNjOiAiIzAwMCIsCiAgICAgICAgICAgICAgICAgICAgc2w6IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmaWx0ZXI6IHsKICAgICAgICAgICAgICAgICAgICB1OiAhMSwKICAgICAgICAgICAgICAgICAgICBlOiAiZGVmYXVsdCIsCiAgICAgICAgICAgICAgICAgICAgYjogMCwKICAgICAgICAgICAgICAgICAgICBnOiAwLAogICAgICAgICAgICAgICAgICAgIGg6IDEwMCwKICAgICAgICAgICAgICAgICAgICBzOiAwLAogICAgICAgICAgICAgICAgICAgIGM6IDEwMCwKICAgICAgICAgICAgICAgICAgICBpOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW46IHsKICAgICAgICAgICAgICAgICAgICBvOiAxLAogICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICByOiAwLAogICAgICAgICAgICAgICAgICAgIHN4OiAxLAogICAgICAgICAgICAgICAgICAgIHN5OiAxLAogICAgICAgICAgICAgICAgICAgIG06ICExLAogICAgICAgICAgICAgICAgICAgIGU6ICJwb3dlcjIuaW5PdXQiLAogICAgICAgICAgICAgICAgICAgIHJvdzogMSwKICAgICAgICAgICAgICAgICAgICBjb2w6IDEsCiAgICAgICAgICAgICAgICAgICAgbW86IDgwLAogICAgICAgICAgICAgICAgICAgIG1vdTogITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvdXQ6IHsKICAgICAgICAgICAgICAgICAgICBhOiAidHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgbzogMSwKICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgcjogMCwKICAgICAgICAgICAgICAgICAgICBzeDogMSwKICAgICAgICAgICAgICAgICAgICBzeTogMSwKICAgICAgICAgICAgICAgICAgICBtOiAhMSwKICAgICAgICAgICAgICAgICAgICBlOiAicG93ZXIyLmluT3V0IiwKICAgICAgICAgICAgICAgICAgICByb3c6IDEsCiAgICAgICAgICAgICAgICAgICAgY29sOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYWRkT25zOiB0LmdldFNsaWRlQW5pbV9BZGRvbkRlZmF1bHRzKCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZ2V0QW5pbU9iamVjdEJ5S2V5OiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIGlmICh0LmdldEFuaW1PYmplY3RDYWNoZUtleSA9PT0gZSkgcmV0dXJuIHQuZ2V0QW5pbU9iamVjdENhY2hlOwogICAgICAgICAgICB2YXIgYTsKICAgICAgICAgICAgZm9yICh2YXIgciBpbiB0LmdldEFuaW1PYmplY3RDYWNoZUtleSA9IGUsIGkpCiAgICAgICAgICAgICAgICBpZiAoaS5oYXNPd25Qcm9wZXJ0eShyKSAmJiB2b2lkIDAgPT09IGEpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiBpW3JdKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaVtyXS5oYXNPd25Qcm9wZXJ0eShvKSAmJiB2b2lkIDAgPT09IGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA9PT0gbyAmJiAwID09PSBlLmluZGV4T2YoInJuZCIpKShhID0gaVtyXVtvXSkubWFpbiA9IHIsIGEuZ3JvdXAgPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgaW4gaVtyXVtvXSkgaVtyXVtvXS5oYXNPd25Qcm9wZXJ0eShzKSAmJiB2b2lkIDAgPT09IGEgJiYgcyA9PT0gZSAmJiAoKGEgPSBpW3JdW29dW3NdKS5tYWluID0gciwgYS5ncm91cCA9IG8pOwogICAgICAgICAgICByZXR1cm4gdC5nZXRBbmltT2JqZWN0Q2FjaGUgPSBqUXVlcnkuZXh0ZW5kKCEwLCB7fSwgYSksIGEKICAgICAgICB9LAogICAgICAgIGdldFJhbmRvbVNsaWRlVHJhbnM6IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdC5yYW5kb21TbGlkZUFuaW1DYWNoZSAmJiB2b2lkIDAgIT09IHQucmFuZG9tU2xpZGVBbmltQ2FjaGVbZV0gJiYgdm9pZCAwICE9PSB0LnJhbmRvbVNsaWRlQW5pbUNhY2hlW2VdW2ldKSByZXR1cm4gdC5yYW5kb21TbGlkZUFuaW1DYWNoZVtlXVtpXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0LnJhbmRvbVNsaWRlQW5pbUNhY2hlW2VdW2ldLmxlbmd0aCldOwogICAgICAgICAgICBmb3IgKHZhciByIGluIHQucmFuZG9tU2xpZGVBbmltQ2FjaGUgPSB2b2lkIDAgPT09IHQucmFuZG9tU2xpZGVBbmltQ2FjaGUgPyB7fSA6IHQucmFuZG9tU2xpZGVBbmltQ2FjaGUsIHQucmFuZG9tU2xpZGVBbmltQ2FjaGVbZV0gPSB2b2lkIDAgPT09IHQucmFuZG9tU2xpZGVBbmltQ2FjaGVbZV0gPyB7fSA6IHQucmFuZG9tU2xpZGVBbmltQ2FjaGVbZV0sIHQucmFuZG9tU2xpZGVBbmltQ2FjaGVbZV1baV0gPSB2b2lkIDAgPT09IHQucmFuZG9tU2xpZGVBbmltQ2FjaGVbZV1baV0gPyBbXSA6IHQucmFuZG9tU2xpZGVBbmltQ2FjaGVbZV1baV0sIGEpCiAgICAgICAgICAgICAgICBpZiAoYS5oYXNPd25Qcm9wZXJ0eShyKSAmJiAicmFuZG9tIiAhPT0gciAmJiAiY3VzdG9tIiAhPT0gciAmJiAoImFsbCIgPT0gZSB8fCByID09IGUpKQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gaW4gYVtyXSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFbcl0uaGFzT3duUHJvcGVydHkobykgJiYgImljb24iICE9PSBvICYmICgiIiArIGkgPT0gInVuZGVmaW5lZCIgfHwgaS5pbmRleE9mKG8pID49IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyBpbiBhW3JdW29dKSBhW3JdW29dLmhhc093blByb3BlcnR5KHMpICYmIC0xID09IGpRdWVyeS5pbkFycmF5KGFbcl1bb11bc10udGl0bGUsIFsiKm5vcnRoKiIsICIqc291dGgqIiwgIiplYXN0KiIsICIqd2VzdCoiXSkgJiYgdC5yYW5kb21TbGlkZUFuaW1DYWNoZVtlXVtpXS5wdXNoKHMpOwogICAgICAgICAgICByZXR1cm4gdC5yYW5kb21TbGlkZUFuaW1DYWNoZVtlXVtpXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0LnJhbmRvbVNsaWRlQW5pbUNhY2hlW2VdW2ldLmxlbmd0aCldCiAgICAgICAgfSwKICAgICAgICBjYmdXOiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIHJldHVybiBfUl9pc19FZGl0b3IgPyBSVlMuUk1ELndpZHRoIDogImNhcm91c2VsIiA9PT0gdFtlXS5zbGlkZXJUeXBlID8gdFtlXS5qdXN0aWZ5Q2Fyb3VzZWwgPyB0W2VdLmNhcm91c2VsLnNsaWRlX3dpZHRoc1t2b2lkIDAgIT09IGkgPyBpIDogdFtlXS5jYXJvdXNlbC5mb2N1c2VkXSA6IHRbZV0uY2Fyb3VzZWwuc2xpZGVfd2lkdGggOiB0W2VdLmNhbnYud2lkdGgKICAgICAgICB9LAogICAgICAgIGNiZ0g6IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgcmV0dXJuIF9SX2lzX0VkaXRvciA/IFJWUy5STUQuaGVpZ2h0IDogImNhcm91c2VsIiA9PT0gdFtlXS5zbGlkZXJUeXBlID8gdFtlXS5jYXJvdXNlbC5zbGlkZV9oZWlnaHQgOiB2b2lkIDAgIT09IHRbZV0ubWF4SGVpZ2h0ICYmIHRbZV0ubWF4SGVpZ2h0ID4gMCAmJiAhdFtlXS5maXhlZE9uVG9wID8gTWF0aC5taW4odFtlXS5jYW52LmhlaWdodCwgdFtlXS5tYXhIZWlnaHQpIDogdFtlXS5jYW52LmhlaWdodAogICAgICAgIH0sCiAgICAgICAgdmFsQmVhdTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZSA9ICgiIiArIChlID0gKCIiICsgKGUgPSAoIiIgKyAoZSA9ICgiIiArIChlID0gKCIiICsgZSkuc3BsaXQoIiwiKS5qb2luKCJ8IikpKS5yZXBsYWNlKCJ7IiwgInJhbigiKSkpLnJlcGxhY2UoIn0iLCAiKSIpKSkucmVwbGFjZSgiWyIsICJjeWMoIikpKS5yZXBsYWNlKCJdIiwgIikiKQogICAgICAgIH0sCiAgICAgICAgYW5pbWF0ZVNsaWRlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBfUl9pc19FZGl0b3IgJiYgUlZTLkYucmVzZXRTbGlkZVRMKCksIHZvaWQgMCA9PT0gdHBHUy5lYXNlcy5sYXRlICYmICh0cEdTLkN1c3RvbUVhc2UuY3JlYXRlKCJsYXRlIiwgIk0wLDAsQzAsMCwwLjQ3NCwwLjA3OCwwLjcyNCwwLjI2LDAuOTY5LDAuNDM4LDEsMSwxLDEiKSwgdHBHUy5DdXN0b21FYXNlLmNyZWF0ZSgibGF0ZTIiLCAiTTAsMCBDMCwwIDAuNzM4LC0wLjA2IDAuODY4LDAuMjIgMSwwLjUwNiAxLDEgMSwxICIpLCB0cEdTLkN1c3RvbUVhc2UuY3JlYXRlKCJsYXRlMyIsICJNMCwwLEMwLDAsMC42ODIsMC4xNTcsMC44MTIsMC40MzgsMC45NDQsMC43MjQsMSwxLDEsMSIpKSwgcyhlLCB0KQogICAgICAgIH0sCiAgICAgICAgZ2V0QmFzaWM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5leHRlbmQoITAsIHsKICAgICAgICAgICAgICAgIGF0dHI6IG51bGwgPT0gZSB8fCB2b2lkIDAgPT09IGUuYXR0ciA/IFsibyIsICJyIiwgInN4IiwgInN5IiwgIngiLCAieSIsICJtIiwgImUiLCAicm93IiwgImNvbCIsICJtbyIsICJtb28iXSA6IGUuYXR0ciwKICAgICAgICAgICAgICAgIGluOiB7CiAgICAgICAgICAgICAgICAgICAgZjogInN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICBtOiAhMSwKICAgICAgICAgICAgICAgICAgICBvOiAxLAogICAgICAgICAgICAgICAgICAgIHI6IDAsCiAgICAgICAgICAgICAgICAgICAgc3g6IDEsCiAgICAgICAgICAgICAgICAgICAgc3k6IDEsCiAgICAgICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgIHJvdzogMSwKICAgICAgICAgICAgICAgICAgICBjb2w6IDEsCiAgICAgICAgICAgICAgICAgICAgZTogInBvd2VyMi5pbk91dCIsCiAgICAgICAgICAgICAgICAgICAgbXM6IDFlMywKICAgICAgICAgICAgICAgICAgICBtbzogMCwKICAgICAgICAgICAgICAgICAgICBtb286ICJub25lIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG91dDogewogICAgICAgICAgICAgICAgICAgIGY6ICJzdGFydCIsCiAgICAgICAgICAgICAgICAgICAgbTogITEsCiAgICAgICAgICAgICAgICAgICAgbzogMSwKICAgICAgICAgICAgICAgICAgICByOiAwLAogICAgICAgICAgICAgICAgICAgIHN4OiAxLAogICAgICAgICAgICAgICAgICAgIHN5OiAxLAogICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICByb3c6IDEsCiAgICAgICAgICAgICAgICAgICAgY29sOiAxLAogICAgICAgICAgICAgICAgICAgIGU6ICJwb3dlcjIuaW5PdXQiLAogICAgICAgICAgICAgICAgICAgIG1zOiAxZTMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgZSkKICAgICAgICB9LAogICAgICAgIHBsYXlCR1ZpZGVvOiBmdW5jdGlvbihlLCBpLCBhKSB7CiAgICAgICAgICAgIGlmIChfUl9pc19FZGl0b3IpIGEgPSB2b2lkIDAgPT09IGEgPyBSVlMuU0JHU1tSVlMuUy5zbGlkZUlkXS5uIDogYTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBhICYmICh2b2lkIDAgPT09IHRbZV0ucHJfbmV4dF9iZyB8fCAwID09PSB0W2VdLnByX25leHRfYmcubGVuZ3RoKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgYSA9IHZvaWQgMCA9PT0gYSA/IHRbZV0uc2Jnc1t2b2lkIDAgPT09IGkgPyB0W2VdLnByX25leHRfYmdbMF0uZGF0YXNldC5rZXkgOiBpXSA6IGEKICAgICAgICAgICAgfQogICAgICAgICAgICB2b2lkIDAgIT09IGEuYmd2aWQgJiYgYS5iZ3ZpZC5sZW5ndGggPiAwICYmIChwKGUsIHt9LCBhLCAiaW4iKSwgdC5yZXNldFZpZGVvKGEuYmd2aWQsIGUpLCB0LnBsYXlWaWRlbyhhLmJndmlkLCBlLCAhMCksIHRwR1MuZ3NhcC50byhhLmJndmlkWzBdLCAuMiwgewogICAgICAgICAgICAgICAgekluZGV4OiAzMCwKICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIsCiAgICAgICAgICAgICAgICBhdXRvQWxwaGE6IDEsCiAgICAgICAgICAgICAgICBkZWxheTogLjA3NSwKICAgICAgICAgICAgICAgIG92ZXJ3cml0ZTogImFsbCIKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBzdG9wQkdWaWRlbzogZnVuY3Rpb24oZSwgaSwgYSkgewogICAgICAgICAgICBpZiAoX1JfaXNfRWRpdG9yKSBhID0gdm9pZCAwID09PSBhID8gUlZTLlNCR1NbUlZTLlMuc2xpZGVJZF0ubiA6IGE7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYSAmJiAodm9pZCAwID09PSB0W2VdLnByX25leHRfYmcgfHwgMCA9PT0gdFtlXS5wcl9uZXh0X2JnLmxlbmd0aCkpIHJldHVybjsKICAgICAgICAgICAgICAgIGEgPSB2b2lkIDAgPT09IGEgPyB0W2VdLnNiZ3Nbdm9pZCAwID09PSBpID8gdFtlXS5wcl9uZXh0X2JnWzBdLmRhdGFzZXQua2V5IDogaV0gOiBhCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdm9pZCAwICE9PSBhLmJndmlkICYmIGEuYmd2aWQubGVuZ3RoID4gMCAmJiAoYS5kcmF3VmlkZW9DYW52YXNJbWFnZXNSZWNhbGwgPSAhMSwgdC5zdG9wVmlkZW8oYS5iZ3ZpZCwgZSksIHRwR1MuZ3NhcC50byhhLmJndmlkWzBdLCAuMiwgewogICAgICAgICAgICAgICAgYXV0b0FscGhhOiAwLAogICAgICAgICAgICAgICAgekluZGV4OiAwLAogICAgICAgICAgICAgICAgZGlzcGxheTogIm5vbmUiCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgU0FUb29sczogewogICAgICAgICAgICBnZXRPZmZzZXQ6IGZ1bmN0aW9uKGUsIGksIGEsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gKCIiICsgZSkuaW5kZXhPZigiJSIpID49IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMCA9PSAoZSA9IHQuU0FUb29scy5nZXRTcGVjaWFsVmFsdWUoZSwgciwgYSkpIHx8IHZvaWQgMCA9PT0gZSA/IDAgOiBvID8gaSAqIChwYXJzZUludChlKSAvIDEwMCkgOiBwYXJzZUludChlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRTcGVjaWFsVmFsdWU6IGZ1bmN0aW9uKGUsIGksIGEsIHIpIHsKICAgICAgICAgICAgICAgIGlmICh0LmlzTnVtZXJpYyhwYXJzZUZsb2F0KGUsIDApKSkgcmV0dXJuIHBhcnNlRmxvYXQoZSwgMCk7CiAgICAgICAgICAgICAgICB2YXIgbyA9ICgiIiArIGUpLnNwbGl0KCJyYW4oIikubGVuZ3RoID4gMSA/ICJyYW5kb20iIDogKCIiICsgZSkuc3BsaXQoImN5YygiKS5sZW5ndGggPiAxID8gIndyYXAiIDogKCIiICsgZSkuc3BsaXQoIigiKS5sZW5ndGggPiAxID8gImRpciIgOiAidW5rbm93biIsCiAgICAgICAgICAgICAgICAgICAgcyA9ICgicmFuZG9tIiA9PT0gbyA/IGUuc2xpY2UoNCwgLTEpIDogIndyYXAiID09PSBvID8gZS5zbGljZSg0LCAtMSkgOiBlLnNsaWNlKDEsIC0xKSkuc3BsaXQoInwiKTsKICAgICAgICAgICAgICAgIGlmICgicmFuZG9tIiA9PT0gbykgcmV0dXJuIHRwR1MuZ3NhcC51dGlscy5yYW5kb20ocGFyc2VGbG9hdChzWzBdKSwgcGFyc2VGbG9hdChzLmxlbmd0aCA+IDEgPyBzWzFdIDogMCAtIHNbMF0pKTsKICAgICAgICAgICAgICAgIGlmICgid3JhcCIgPT09IG8pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRwR1MuZ3NhcC51dGlscy53cmFwKHMsIGkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoIiIgKyBuKS5zcGxpdCgiKCIpLmxlbmd0aCA+IDEgPyBwYXJzZUZsb2F0KG4uc2xpY2UoMSwgLTEpKSAqIGEgKyAociA/ICIlIiA6ICIiKSA6IG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAiZGlyIiA9PT0gbyA/IHBhcnNlRmxvYXQoc1swXSkgKiBhICsgKHIgPyAiJSIgOiAiIikgOiB2b2lkIDAKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZ2V0bURpbTogZnVuY3Rpb24oZSwgaSwgYSkgewogICAgICAgICAgICB2YXIgciA9IHQuY2JnVyhlLCBpKSwKICAgICAgICAgICAgICAgIG8gPSB0LmNiZ0goZSwgaSk7CiAgICAgICAgICAgIHJldHVybiBhLkRQUiA9IF9SX2lzX0VkaXRvciA/IE1hdGgubWluKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCAyKSA6IHRbZV0uRFBSLCB0Lm1heERpbUNoZWNrKGEsIHIsIG8pCiAgICAgICAgfSwKICAgICAgICBtYXhEaW1DaGVjazogZnVuY3Rpb24oZSwgdCwgYSkgewogICAgICAgICAgICB2YXIgciwgbzsKICAgICAgICAgICAgdm9pZCAwICE9PSBlLnZpZGVvICYmICgiaW1nIiA9PT0gZS52aWRlby50YWdOYW1lIHx8IG51bGwgPT0gZS52aWRlby52aWRlb1dpZHRoIHx8IGUudmlkZW8udmlkZW9XaWR0aCk7CiAgICAgICAgICAgIGlmICgiYW5pbWF0aW5nIiAhPT0gZS5jdXJyZW50U3RhdGUgJiYgbnVsbCA9PSBlLnBhbnpvb20pCiAgICAgICAgICAgICAgICBpZiAoZS5EUFIgPiAxICYmIGkgJiYgYSA+IDEwMjQpIGUuRFBSID0gMSwgciA9IHQsIG8gPSBhOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBudWxsID09IGUudmlkZW8gfHwgZS5pc1ZpZEltZyA/IGUubG9hZG9iai53aWR0aCA6IDAgPT0gZS52aWRlby52aWRlb1dpZHRoID8gZS5sb2Fkb2JqLndpZHRoIDogZS52aWRlby52aWRlb1dpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogbnVsbCA9PSBlLnZpZGVvIHx8IGUuaXNWaWRJbWcgPyBlLmxvYWRvYmouaGVpZ2h0IDogMCA9PSBlLnZpZGVvLnZpZGVvSGVpZ2h0ID8gZS5sb2Fkb2JqLmhlaWdodCA6IGUudmlkZW8udmlkZW9IZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGEgLyBzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0IC8gcy5oLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5tYXgobiwgZCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGwgPiBlLkRQUiB8fCBuID49IDEgJiYgZCA+PSAxID8gZS5EUFIgPSAxIDogZS5EUFIgPiBsICYmIChlLkRQUiA9IE1hdGgubWluKGUuRFBSLCBlLkRQUiAvIGwpKSwgciA9IHQgKiBlLkRQUiwgbyA9IGEgKiBlLkRQUiwgZS5EUFIgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdCAvIGE7CiAgICAgICAgICAgICAgICAgICAgICAgIHMudyA+IHMuaCAmJiBzLncgPCByID8gKG8gPSAociA9IE1hdGgubWF4KHQsIHMudykpIC8gYywgZS5EUFIgPSAxKSA6IHMuaCA+IHMudyAmJiBzLmggPCBvICYmIChyID0gKG8gPSBNYXRoLm1heChhLCBzLmgpKSAqIGMsIGUuRFBSID0gMSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgZS5EUFIgPSAxLCByID0gdCwgbyA9IGE7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB3aWR0aDogTWF0aC5yb3VuZChyKSwKICAgICAgICAgICAgICAgIGhlaWdodDogTWF0aC5yb3VuZChvKSwKICAgICAgICAgICAgICAgIHc6IHQsCiAgICAgICAgICAgICAgICBoOiBhCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHVwZGF0ZVNsaWRlQkdzOiBmdW5jdGlvbihlLCBpLCBhLCByKSB7CiAgICAgICAgICAgIGlmIChfUl9pc19FZGl0b3IpIGEgPSB2b2lkIDAgPT09IGEgPyBSVlMuU0JHU1tSVlMuUy5zbGlkZUlkXS5uIDogYTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBhICYmICh2b2lkIDAgPT09IHRbZV0ucHJfbmV4dF9iZyB8fCAwID09PSB0W2VdLnByX25leHRfYmcubGVuZ3RoKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgYSA9IHZvaWQgMCA9PT0gYSA/IHRbZV0uc2Jnc1t2b2lkIDAgPT09IGkgPyB0W2VdLnByX25leHRfYmdbMF0uZGF0YXNldC5rZXkgOiBpXSA6IGEKICAgICAgICAgICAgfShyID0gdm9pZCAwICE9PSBhLm1ESU0gJiYgcikgfHwgKGEubURJTSA9IHQuZ2V0bURpbShlLCBhLnNrZXlpbmRleCwgYSkpLCB2b2lkIDAgIT09IGEudmlkZW8gPyAoIklNRyIgIT09IGEudmlkZW8udGFnTmFtZSAmJiAoYS5pc1ZpZEltZyA9ICIiKSwgYS5jRElNUyA9IHQuZ2V0QkdDYW52YXNEZXRhaWxzKGUsIGEpLCBhLmNhbnZhcy53aWR0aCA9IGEubURJTS53aWR0aCwgYS5jYW52YXMuaGVpZ2h0ID0gYS5tRElNLmhlaWdodCwgYS5jdHguY2xlYXJSZWN0KDAsIDAsIGEubURJTS53aWR0aCwgYS5tRElNLmhlaWdodCksIGEuY3R4LmRyYXdJbWFnZShhLnNoYWRvd0NhbnZhcywgMCwgMCkpIDogKGEuY0RJTVMgPSB0LmdldEJHQ2FudmFzRGV0YWlscyhlLCBhLCByKSwgYS5jYW52YXMud2lkdGggPSBhLm1ESU0ud2lkdGgsIGEuY2FudmFzLmhlaWdodCA9IGEubURJTS5oZWlnaHQsICJwYW56b29tIiA9PT0gYS5jdXJyZW50U3RhdGUgfHwgImFuaW1hdGluZyIgPT09IGEuY3VycmVudFN0YXRlIHx8IHZvaWQgMCA9PT0gYS5jdXJyZW50U3RhdGUgJiYgIV9SX2lzX0VkaXRvciAmJiAiY2Fyb3VzZWwiICE9IHRbZV0uc2xpZGVyVHlwZSB8fCAoYS5jdHguY2xlYXJSZWN0KDAsIDAsIGEubURJTS53aWR0aCwgYS5tRElNLmhlaWdodCksIGEuY3R4LmRyYXdJbWFnZShhLnNoYWRvd0NhbnZhcywgMCwgMCkpKSwgImFuaW1hdGluZyIgPT09IGEuY3VycmVudFN0YXRlICYmICJjYXJvdXNlbCIgIT09IHRbZV0uc2xpZGVyVHlwZSAmJiB0LmFuaW1hdGVkQ2FudmFzVXBkYXRlKGUsIGEpCiAgICAgICAgfSwKICAgICAgICBhZGRDYW52YXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICAgICAgICByZXR1cm4geCA9IGUuZ2V0Q29udGV4dCgiMmQiKSwgZS5zdHlsZS5iYWNrZ3JvdW5kID0gInRyYW5zcGFyZW50IiwgZS5zdHlsZS5vcGFjaXR5ID0gMSwgeAogICAgICAgIH0sCiAgICAgICAgdXBkYXRlVmlkZW9GcmFtZXM6IGZ1bmN0aW9uKGUsIGEsIHIpIHsKICAgICAgICAgICAgaWYgKGEubm93ID0gRGF0ZS5ub3coKSwgYS50aGVuID0gdm9pZCAwID09PSBhLnRoZW4gPyBhLm5vdyAtIDUwMCA6IGEudGhlbiwgYS5lbGFwc2VkID0gYS5ub3cgLSBhLnRoZW4sIGEuZnBzID0gImFuaW1hdGluZyIgPT09IGEuY3VycmVudFN0YXRlICYmIHdpbmRvdy5fcnNfZmlyZWZveCA/IDUwIDogMzMsIGEuZWxhcHNlZCA+IGEuZnBzKSB7CiAgICAgICAgICAgICAgICBhLnRoZW4gPSBhLm5vdyAtIGEuZWxhcHNlZCAlIGEuZnBzOwogICAgICAgICAgICAgICAgdmFyIG8gPSAiaW1nIiA9PT0gYS52aWRlby50YWdOYW1lIHx8IG51bGwgPT0gYS52aWRlby52aWRlb1dpZHRoIHx8IDAgPT0gYS52aWRlby52aWRlb1dpZHRoOwogICAgICAgICAgICAgICAgdm9pZCAwICE9PSBhLnZpZGVvICYmICFhLnZpZGVvLkJHcmVuZGVyZWQgJiYgdm9pZCAwICE9PSBhLmxvYWRvYmogJiYgdm9pZCAwICE9PSBhLmxvYWRvYmouaW1nIHx8IGkgJiYgdC5pc0ZpcmVmb3goZSkgPyAoYS5tRElNID0gdC5nZXRtRGltKGUsIGEuc2tleWluZGV4LCBhKSwgYS5wRElNUyA9IG4oYS5tRElNLCBhLCB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEubURJTS53aWR0aCwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEubURJTS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgIGNvbnR3OiBhLmxvYWRvYmoud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgY29udGg6IGEubG9hZG9iai5oZWlnaHQKICAgICAgICAgICAgICAgIH0pLCBhLnNoYWRvd0NhbnZhcy53aWR0aCA9IGEubURJTS53aWR0aCwgYS5zaGFkb3dDYW52YXMuaGVpZ2h0ID0gYS5tRElNLmhlaWdodCwgYS5zaGFkb3dDVFguZHJhd0ltYWdlKGEubG9hZG9iai5pbWcsIGEucERJTVMueCwgYS5wRElNUy55LCBhLnBESU1TLndpZHRoLCBhLnBESU1TLmhlaWdodCkpIDogKChyIHx8IHZvaWQgMCA9PT0gYS5zRElNUyB8fCBvICE9PSBhLmlzVmlkSW1nIHx8IDAgPT09IGEuc0RJTVMud2lkdGggfHwgMCA9PT0gYS5zRElNUy5oZWlnaHQpICYmIChhLmlzVmlkSW1nID0gbywgYS5tRElNID0gdC5nZXRtRGltKGUsIGEuc2tleWluZGV4LCBhKSwgYS5zRElNUyA9IG4oYS5tRElNLCBhLCB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEubURJTS53aWR0aCwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEubURJTS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgIGNvbnR3OiBhLmlzVmlkSW1nID8gYS5sb2Fkb2JqLndpZHRoIDogYS52aWRlby52aWRlb1dpZHRoLAogICAgICAgICAgICAgICAgICAgIGNvbnRoOiBhLmlzVmlkSW1nID8gYS5sb2Fkb2JqLmhlaWdodCA6IGEudmlkZW8udmlkZW9IZWlnaHQKICAgICAgICAgICAgICAgIH0pKSwgdm9pZCAwICE9PSBhLnNESU1TICYmIDAgIT09IGEuc0RJTVMud2lkdGggJiYgMCAhPT0gYS5zRElNUy5oZWlnaHQgJiYgKCJhbmltYXRpbmciID09PSBhLmN1cnJlbnRTdGF0ZSA/IChhLnNoYWRvd0NhbnZhcy53aWR0aCA9IGEuc0RJTVMud2lkdGgsIGEuc2hhZG93Q2FudmFzLmhlaWdodCA9IGEuc0RJTVMuaGVpZ2h0LCBhLnNoYWRvd0NUWC5kcmF3SW1hZ2UoYS52aWRlbywgYS5zRElNUy54LCBhLnNESU1TLnksIGEuc0RJTVMud2lkdGgsIGEuc0RJTVMuaGVpZ2h0KSkgOiB2b2lkIDAgPT09IGEuYW5pbWF0ZURpcmVjdGlvbiAmJiAoYS5jYW52YXMud2lkdGggPSBhLm1ESU0ud2lkdGgsIGEuY2FudmFzLmhlaWdodCA9IGEubURJTS5oZWlnaHQsIGEuY3R4LmRyYXdJbWFnZShhLnZpZGVvLCBhLnNESU1TLngsIGEuc0RJTVMueSwgYS5zRElNUy53aWR0aCwgYS5zRElNUy5oZWlnaHQpKSwgYS5zaGFkb3dDYW52YXNfRHJhd24gPSAhMCkpCiAgICAgICAgICAgIH0ociB8fCBhLmRyYXdWaWRlb0NhbnZhc0ltYWdlc1JlY2FsbCAmJiAiYW5pbWF0aW5nIiA9PT0gYS5jdXJyZW50U3RhdGUgfHwgImFuaW1hdGluZyIgPT09IGEuY3VycmVudFN0YXRlICYmIHZvaWQgMCA9PT0gYS5zaGFkb3dDYW52YXNfRHJhd24pICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0LnVwZGF0ZVZpZGVvRnJhbWVzKGUsIGEpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjcmVhdGVPdmVybGF5OiBmdW5jdGlvbihlLCBpLCBhLCByKSB7CiAgICAgICAgICAgIGlmICgibm9uZSIgPT09IGkpIHJldHVybiAibm9uZSI7CiAgICAgICAgICAgIGEgPSB2b2lkIDAgPT09IGEgPyAxIDogYTsKICAgICAgICAgICAgciA9IHZvaWQgMCA9PT0gciA/IHsKICAgICAgICAgICAgICAgIDA6ICJyZ2JhKDAsIDAsIDAsIDApIiwKICAgICAgICAgICAgICAgIDE6ICJyZ2JhKDAsIDAsIDAsIDEpIgogICAgICAgICAgICB9IDogcjsKICAgICAgICAgICAgdmFyIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgbm9uZTogWwogICAgICAgICAgICAgICAgICAgICAgICBbMF0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIDE6IFsKICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMF0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIDI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAwXQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgMzogWwogICAgICAgICAgICAgICAgICAgICAgICBbMSwgMCwgMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDAsIDBdCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICA0OiBbCiAgICAgICAgICAgICAgICAgICAgICAgIFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzBdCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICA1OiBbCiAgICAgICAgICAgICAgICAgICAgICAgIFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMF0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIDY6IFsKICAgICAgICAgICAgICAgICAgICAgICAgWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFswXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzBdCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICA3OiBbCiAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAwXQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgODogWwogICAgICAgICAgICAgICAgICAgICAgICBbMSwgMCwgMF0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIDk6IFsKICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDAsIDAsIDBdCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAxMDogWwogICAgICAgICAgICAgICAgICAgICAgICBbMSwgMCwgMCwgMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFswLCAxLCAwLCAxLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDAsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMCwgMSwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAwLCAwLCAxXQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgMTE6IFsKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDEsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMCwgMSwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAwLCAwLCAwLCAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDEsIDAsIDEsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgMSwgMCwgMF0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIDEyOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDEsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgMV0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIDEzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDEsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMSwgMCwgMF0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIDE0OiBbCiAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAwLCAwLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDEsIDAsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgMSwgMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAwLCAxLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDAsIDAsIDBdCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAxNTogWwogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgMCwgMCwgMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAwLCAxLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDEsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMCwgMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAwLCAwLCAwLCAwXQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgMTY6IFsKICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDAsIDAsIDAsIDFdLAogICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMCwgMSwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAxLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDEsIDAsIDEsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICBbMSwgMCwgMCwgMCwgMV0KICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcyA9IHZvaWQgMCA9PT0gb1tpID0gdm9pZCAwID09PSBpID8gMSA6IGldID8gb1syXSA6IG9baV07CiAgICAgICAgICAgIF9SX2lzX0VkaXRvciAmJiAodFtlXSA9IHZvaWQgMCA9PT0gdFtlXSA/IHt9IDogdFtlXSksIHRbZV0ucGF0dGVybkNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLCB0W2VdLnBhdHRlcm5DdHggPSB0W2VdLnBhdHRlcm5DYW52YXMuZ2V0Q29udGV4dCgiMmQiKSwgdFtlXS5wYXR0ZXJuQ2FudmFzLndpZHRoID0gc1swXS5sZW5ndGggKiBhLCB0W2VdLnBhdHRlcm5DYW52YXMuaGVpZ2h0ID0gcy5sZW5ndGggKiBhOwogICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHMubGVuZ3RoOyBuKyspCiAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IHNbbl0ubGVuZ3RoOyBkKyspICJ0cmFuc3BhcmVudCIgIT0gcltzW25dW2RdXSAmJiAodFtlXS5wYXR0ZXJuQ3R4LmZpbGxTdHlsZSA9IHJbc1tuXVtkXV0sIHRbZV0ucGF0dGVybkN0eC5maWxsUmVjdChkICogYSwgbiAqIGEsIGEsIGEpKTsKICAgICAgICAgICAgcmV0dXJuICJ1cmwoIiArIHRbZV0ucGF0dGVybkNhbnZhcy50b0RhdGFVUkwoKSArICIpIgogICAgICAgIH0sCiAgICAgICAgZ2V0QkdDYW52YXNEZXRhaWxzOiBmdW5jdGlvbihlLCBpLCBhKSB7CiAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICByZXR1cm4gYSB8fCAoaS5tRElNID0gdC5nZXRtRGltKGUsIGkuc2tleWluZGV4LCBpKSksIGkudXNlcGF0dGVybiA9ICgiYXV0byIgPT09IGkuYmdmaXQgfHwgaS5iZ2ZpdC5pbmRleE9mKCIlIikgPj0gMCkgJiYgKHZvaWQgMCA9PT0gaS5sb2Fkb2JqIHx8ICEwICE9PSBpLmxvYWRvYmoudXNlQkdDb2xvciksIF9SX2lzX0VkaXRvciAmJiB2b2lkIDAgPT09IGkucGFuem9vbSAmJiBkZWxldGUgaS5zaGFkb3dDYW52YXMsIHZvaWQgMCA9PT0gaS5zaGFkb3dDYW52YXMgJiYgKGkuc2hhZG93Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksIGkuc2hhZG93Q1RYID0gaS5zaGFkb3dDYW52YXMuZ2V0Q29udGV4dCgiMmQiKSwgaS5zaGFkb3dDYW52YXMuc3R5bGUuYmFja2dyb3VuZCA9ICJ0cmFuc3BhcmVudCIsIGkuc2hhZG93Q2FudmFzLnN0eWxlLm9wYWNpdHkgPSAxKSwgITAgPT09IGkucmVwbGFjZVNoYWRvd0NhbnZhcyB8fCAhMCA9PT0gaS5sb2Fkb2JqLmJnQ29sb3IgfHwgITAgPT09IGkudXNlYmdDb2xvciB8fCB2b2lkIDAgIT09IGkucGFuem9vbSB8fCBudWxsICE9IGkuaXNIVE1MNSAmJiAxICE9IGkucG9zdGVyIHx8IGkudXNlcGF0dGVybiA/IChyID0gewogICAgICAgICAgICAgICAgd2lkdGg6IGkubURJTS53aWR0aCwKICAgICAgICAgICAgICAgIGhlaWdodDogaS5tRElNLmhlaWdodCwKICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICB5OiAwCiAgICAgICAgICAgIH0sIGkudXNlcGF0dGVybiAmJiB2b2lkIDAgIT09IGkubG9hZG9iaiAmJiB2b2lkIDAgIT09IGkubG9hZG9iai5pbWcgPyB0LmdldENhbnZhc1BhdHRlcm4oZSwgaSwgewogICAgICAgICAgICAgICAgcmF0aW86IGkubG9hZG9iai5oZWlnaHQgLyBpLmxvYWRvYmoud2lkdGgKICAgICAgICAgICAgfSkgOiAoaS5sb2Fkb2JqLmJnQ29sb3IgfHwgaS51c2ViZ0NvbG9yKSAmJiAoaS5zaGFkb3dDYW52YXMud2lkdGggPSBpLm1ESU0ud2lkdGgsIGkuc2hhZG93Q2FudmFzLmhlaWdodCA9IGkubURJTS5oZWlnaHQsIHQuZ2V0Q2FudmFzR3JhZGllbnRzKGUsIGkpKSkgOiAociA9IG4oaS5tRElNLCBpLCB7CiAgICAgICAgICAgICAgICB3aWR0aDogaS5tRElNLndpZHRoLAogICAgICAgICAgICAgICAgaGVpZ2h0OiBpLm1ESU0uaGVpZ2h0LAogICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICBjb250dzogaS5sb2Fkb2JqLndpZHRoLAogICAgICAgICAgICAgICAgY29udGg6IGkubG9hZG9iai5oZWlnaHQKICAgICAgICAgICAgfSksIGkuc2hhZG93Q2FudmFzLndpZHRoID0gaS5tRElNLndpZHRoLCBpLnNoYWRvd0NhbnZhcy5oZWlnaHQgPSBpLm1ESU0uaGVpZ2h0LCB2b2lkIDAgIT09IGkubG9hZG9iaiAmJiB2b2lkIDAgIT09IGkubG9hZG9iai5pbWcgJiYgaS5zaGFkb3dDVFguZHJhd0ltYWdlKGkubG9hZG9iai5pbWcsIHIueCwgci55LCByLndpZHRoLCByLmhlaWdodCksIHIgPSB7CiAgICAgICAgICAgICAgICB3aWR0aDogaS5tRElNLndpZHRoLAogICAgICAgICAgICAgICAgaGVpZ2h0OiBpLm1ESU0uaGVpZ2h0LAogICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgfSksIHIKICAgICAgICB9LAogICAgICAgIGdldENhbnZhc1BhdHRlcm46IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBpLnBhdHRlcm5JbWFnZUNhbnZhcyAmJiAoaS5wYXR0ZXJuSW1hZ2VDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSwgaS5wYXR0ZXJuSW1hZ2VDVFggPSBpLnBhdHRlcm5JbWFnZUNhbnZhcy5nZXRDb250ZXh0KCIyZCIpKTsKICAgICAgICAgICAgdmFyIHIgPSBpLmJnZml0LnNwbGl0KCIgIik7CiAgICAgICAgICAgIDEgPT09IHIubGVuZ3RoICYmIChyWzFdID0gclswXSksIGEud2lkdGggPSAiYXV0byIgPT09IHJbMF0gPyBpLmxvYWRvYmoud2lkdGggOiBpLmxvYWRvYmoud2lkdGggKiAocGFyc2VJbnQoclswXSwgMCkgLyAxMDApLCBhLmhlaWdodCA9ICJhdXRvIiA9PT0gclsxXSA/IGkubG9hZG9iai5oZWlnaHQgOiBhLndpZHRoICogYS5yYXRpbywgaS5EUFIgPSBfUl9pc19FZGl0b3IgPyBNYXRoLm1pbih3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgMikgOiB0W2VdLkRQUiwgYS53aWR0aCA9IGEud2lkdGggKiBpLkRQUiwgYS5oZWlnaHQgPSBhLmhlaWdodCAqIGkuRFBSLCBpLnBhdHRlcm5JbWFnZUNhbnZhcy53aWR0aCA9IGEud2lkdGgsIGkucGF0dGVybkltYWdlQ2FudmFzLmhlaWdodCA9IGEuaGVpZ2h0LCBpLnBhdHRlcm5JbWFnZUNUWC5kcmF3SW1hZ2UoaS5sb2Fkb2JqLmltZywgMCwgMCwgYS53aWR0aCwgYS5oZWlnaHQpLCBpLnNoYWRvd0NhbnZhcy53aWR0aCA9IGkubURJTS53aWR0aCwgaS5zaGFkb3dDYW52YXMuaGVpZ2h0ID0gaS5tRElNLmhlaWdodCwgaS5wYXR0ZXJuID0gaS5zaGFkb3dDVFguY3JlYXRlUGF0dGVybihpLnBhdHRlcm5JbWFnZUNhbnZhcywgaS5iZ3JlcGVhdCksIGkuc2hhZG93Q1RYLmZpbGxTdHlsZSA9IGkucGF0dGVybiwgaS5zaGFkb3dTaGlmdHMgPSB7CiAgICAgICAgICAgICAgICBoOiBpLmJncG9zaXRpb24uc3BsaXQoIiAiKVswXSwKICAgICAgICAgICAgICAgIHY6IGkuYmdwb3NpdGlvbi5zcGxpdCgiICIpWzFdCiAgICAgICAgICAgIH0sIGkuc2hhZG93U2hpZnRzLmhwZXJjID0gdC5pc051bWVyaWMocGFyc2VJbnQoaS5zaGFkb3dTaGlmdHMuaCkpID8gcGFyc2VJbnQoaS5zaGFkb3dTaGlmdHMuaCkgLyAxMDAgKiBpLm1ESU0ud2lkdGggOiAwLCBpLnNoYWRvd1NoaWZ0cy52cGVyYyA9IHQuaXNOdW1lcmljKHBhcnNlSW50KGkuc2hhZG93U2hpZnRzLnYpKSA/IHBhcnNlSW50KGkuc2hhZG93U2hpZnRzLnYpIC8gMTAwICogaS5tRElNLmhlaWdodCA6IDAsIGkuc2hhZG93U2hpZnRzLnggPSAibGVmdCIgPT09IGkuc2hhZG93U2hpZnRzLmggPyAwIDogImNlbnRlciIgPT09IGkuc2hhZG93U2hpZnRzLmggfHwgIjUwJSIgPT0gaS5zaGFkb3dTaGlmdHMuaCA/ICJyZXBlYXQiID09IGkuYmdyZXBlYXQgfHwgInJlcGVhdC14IiA9PSBpLmJncmVwZWF0ID8gaS5tRElNLndpZHRoIC8gMiAtIGEud2lkdGggLyAyIC0gTWF0aC5jZWlsKGkubURJTS53aWR0aCAvIDIgLyBhLndpZHRoKSAqIGEud2lkdGggOiBpLm1ESU0ud2lkdGggLyAyIC0gYS53aWR0aCAvIDIgOiAicmlnaHQiID09PSBpLnNoYWRvd1NoaWZ0cy5oID8gInJlcGVhdCIgPT0gaS5iZ3JlcGVhdCB8fCAicmVwZWF0LXgiID09IGkuYmdyZXBlYXQgPyAtKGEud2lkdGggLSBpLm1ESU0ud2lkdGggJSBhLndpZHRoKSA6IGkubURJTS53aWR0aCAtIGEud2lkdGggOiAicmVwZWF0IiA9PSBpLmJncmVwZWF0IHx8ICJyZXBlYXQteCIgPT0gaS5iZ3JlcGVhdCA/IC0oYS53aWR0aCAtIGkuc2hhZG93U2hpZnRzLmhwZXJjICUgYS53aWR0aCkgOiBpLnNoYWRvd1NoaWZ0cy5ocGVyYywgaS5zaGFkb3dTaGlmdHMueSA9ICJ0b3AiID09PSBpLnNoYWRvd1NoaWZ0cy52ID8gMCA6ICJjZW50ZXIiID09PSBpLnNoYWRvd1NoaWZ0cy52IHx8ICI1MCUiID09IGkuc2hhZG93U2hpZnRzLnYgPyAicmVwZWF0IiA9PSBpLmJncmVwZWF0IHx8ICJyZXBlYXQteSIgPT0gaS5iZ3JlcGVhdCA/IGkubURJTS5oZWlnaHQgLyAyIC0gYS5oZWlnaHQgLyAyIC0gTWF0aC5jZWlsKGkubURJTS5oZWlnaHQgLyAyIC8gYS5oZWlnaHQpICogYS5oZWlnaHQgOiBpLm1ESU0uaGVpZ2h0IC8gMiAtIGEuaGVpZ2h0IC8gMiA6ICJib3R0b20iID09PSBpLnNoYWRvd1NoaWZ0cy52ID8gInJlcGVhdCIgPT0gaS5iZ3JlcGVhdCB8fCAicmVwZWF0LXkiID09IGkuYmdyZXBlYXQgPyAtKGEuaGVpZ2h0IC0gaS5tRElNLmhlaWdodCAlIGEuaGVpZ2h0KSA6IGkubURJTS5oZWlnaHQgLSBhLmhlaWdodCA6ICJyZXBlYXQiID09IGkuYmdyZXBlYXQgfHwgInJlcGVhdC15IiA9PSBpLmJncmVwZWF0ID8gLShhLmhlaWdodCAtIGkuc2hhZG93U2hpZnRzLnZwZXJjICUgYS5oZWlnaHQpIDogaS5zaGFkb3dTaGlmdHMudnBlcmMsIGkuc2hhZG93Q1RYLnRyYW5zbGF0ZShpLnNoYWRvd1NoaWZ0cy54LCBpLnNoYWRvd1NoaWZ0cy55KSwgaS5zaGFkb3dDVFguZmlsbFJlY3QoMCwgMCwgaS5tRElNLndpZHRoIC0gaS5zaGFkb3dTaGlmdHMueCwgaS5tRElNLmhlaWdodCAtIGkuc2hhZG93U2hpZnRzLnkpCiAgICAgICAgfSwKICAgICAgICBnZXRDYW52YXNHcmFkaWVudHM6IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgaWYgKGkuYmdjb2xvci5pbmRleE9mKCJncmFkaWVudCIpID49IDApIHsKICAgICAgICAgICAgICAgIGkuZ3JhZGllbnQgPSBudWxsID09IGkuZ3JhZGllbnQgfHwgX1JfaXNfRWRpdG9yID8gdC5nZXRHcmFkaWVudHMoaS5iZ2NvbG9yKSA6IGkuZ3JhZGllbnQsIGkuc2hhZG93R3JkID0gInJhZGlhbEdyYWRpZW50IiA9PT0gaS5ncmFkaWVudC5UeXBlID8gaS5zaGFkb3dDVFguY3JlYXRlUmFkaWFsR3JhZGllbnQoaS5tRElNLndpZHRoIC8gMiwgaS5tRElNLmhlaWdodCAvIDIsIDAsIGkubURJTS53aWR0aCAvIDIsIGkubURJTS5oZWlnaHQgLyAyLCBNYXRoLm1heChpLm1ESU0ud2lkdGggLyAyLCBpLm1ESU0uaGVpZ2h0IC8gMikpIDogdC5jYWxjTGluZWFyR3JhZGllbnQoaS5zaGFkb3dDVFgsIGkuc2hhZG93Q2FudmFzLndpZHRoLCBpLnNoYWRvd0NhbnZhcy5oZWlnaHQsIGkuZ3JhZGllbnQuZGVnKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgaS5ncmFkaWVudC5zdG9wcy5sZW5ndGg7IGEgKz0gMikgaS5zaGFkb3dHcmQuYWRkQ29sb3JTdG9wKGkuZ3JhZGllbnQuc3RvcHNbYSArIDFdLCBpLmdyYWRpZW50LnN0b3BzW2FdKTsKICAgICAgICAgICAgICAgIGkuc2hhZG93Q1RYLmNsZWFyUmVjdCgwLCAwLCBpLm1ESU0ud2lkdGgsIGkubURJTS5oZWlnaHQpLCBpLnNoYWRvd0NUWC5maWxsU3R5bGUgPSBpLnNoYWRvd0dyZCwgaS5zaGFkb3dDVFguZmlsbFJlY3QoMCwgMCwgaS5tRElNLndpZHRoLCBpLm1ESU0uaGVpZ2h0KQogICAgICAgICAgICB9IGVsc2UgaS5zaGFkb3dDVFguZmlsbFN0eWxlID0gaS5iZ2NvbG9yLCBpLnNoYWRvd0NUWC5maWxsUmVjdCgwLCAwLCBpLm1ESU0ud2lkdGgsIGkubURJTS5oZWlnaHQpCiAgICAgICAgfSwKICAgICAgICBjTlM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgIGZvciAodCBpbiBlLm4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgZS5uKSwgZS52KSBlLm4uc2V0QXR0cmlidXRlTlMobnVsbCwgdC5yZXBsYWNlKC9bQS1aXS9nLCBmdW5jdGlvbihlLCB0LCBpLCBhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIi0iICsgZS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgIH0pLCBlLnZbdF0pOwogICAgICAgICAgICBmb3IgKHQgaW4gdm9pZCAwICE9PSBlLmMgJiYgZS5uLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCBlLmMpLCB2b2lkIDAgIT09IGUuaWQgJiYgKGUubi5pZCA9IGUuaWQpLCB2b2lkIDAgIT09IGUudCAmJiAoZS5uLnRleHRDb250ZW50ID0gZS50KSwgZS5zKSBlLnMuaGFzT3duUHJvcGVydHkodCkgJiYgKGUubi5zdHlsZVt0XSA9IGUuc1t0XSk7CiAgICAgICAgICAgIHJldHVybiBlLm4KICAgICAgICB9LAogICAgICAgIHJnYlRvSGV4OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiIyIgKyBjKGVbMF0pICsgYyhlWzFdKSArIGMoZVsyXSkKICAgICAgICB9LAogICAgICAgIGdldFNWR0dyYWRpZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUpIHJldHVybiBlOwogICAgICAgICAgICBpZiAoX1JfaXNfRWRpdG9yICYmIChlID0gUlNDb2xvci5jb252ZXJ0KGUpKSwgLTEgPT0gZS5pbmRleE9mKCJncmFkaWVudCIpKSByZXR1cm4gZTsKICAgICAgICAgICAgdmFyIGkgPSB0LmdldEdyYWRpZW50cyhlKTsKICAgICAgICAgICAgdm9pZCAwID09PSB0LmdyYWRTVkcgJiYgKHQuZ3JhZFNWRyA9IHQuY05TKHsKICAgICAgICAgICAgICAgIG46ICJzdmciLAogICAgICAgICAgICAgICAgaWQ6ICJ0cF9zdmdfZ3JhZGllbnRzIiwKICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogIm5vbmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCB0LmdyYWRTVkcuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IiwgIjAgMCAxIDEiKSwgdC5ncmFkU1ZHLnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsICJub25lIiksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodC5ncmFkU1ZHKSwgdC5zdmdHcmFkaWVudHMgPSBbXSk7CiAgICAgICAgICAgIGZvciAodmFyIGEgPSAhMSwgciA9IEpTT04uc3RyaW5naWZ5KGUpLCBvID0gMDsgbyA8IHQuc3ZnR3JhZGllbnRzLmxlbmd0aDsgbysrKSBhIHx8IHQuc3ZnR3JhZGllbnRzW29dLnNyYyA9PSByICYmIChhID0gITAsIGUgPSB0LnN2Z0dyYWRpZW50c1tvXS51cmwpOwogICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgIHZhciBzLCBuLCBkLCBsID0gInJhZGlhbEdyYWRpZW50IiA9PT0gaS50eXBlID8gMCA6IGkuZGVnICogKE1hdGguUEkgLyAxODApLAogICAgICAgICAgICAgICAgICAgIGMgPSAicmFkaWFsR3JhZGllbnQiID09PSBpLnR5cGUgPyAwIDogewogICAgICAgICAgICAgICAgICAgICAgICB4MTogTWF0aC5yb3VuZCg1MCArIDUwICogTWF0aC5zaW4obCkpICsgIiUiLAogICAgICAgICAgICAgICAgICAgICAgICB5MTogTWF0aC5yb3VuZCg1MCArIDUwICogTWF0aC5jb3MobCkpICsgIiUiLAogICAgICAgICAgICAgICAgICAgICAgICB4MjogTWF0aC5yb3VuZCg1MCArIDUwICogTWF0aC5zaW4obCArIE1hdGguUEkpKSArICIlIiwKICAgICAgICAgICAgICAgICAgICAgICAgeTI6IE1hdGgucm91bmQoNTAgKyA1MCAqIE1hdGguY29zKGwgKyBNYXRoLlBJKSkgKyAiJSIKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZCA9IHQuY05TKHsKICAgICAgICAgICAgICAgICAgICBuOiBpLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgaWQ6ICJ0cF9zdmdfZ3JhZGllbnRfIiArIHQuc3ZnR3JhZGllbnRzLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICB2OiAicmFkaWFsR3JhZGllbnQiID09PSBpLnR5cGUgPyB2b2lkIDAgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50VW5pdHM6ICJ1c2VyU3BhY2VPblVzZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHgxOiBjLngxLAogICAgICAgICAgICAgICAgICAgICAgICB5MTogYy55MSwKICAgICAgICAgICAgICAgICAgICAgICAgeDI6IGMueDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBjLnkyCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8PSBpLnN0b3BzLmxlbmd0aCAvIDI7IHAgKz0gMikgbiA9IHRwR1MuZ3NhcC51dGlscy5zcGxpdENvbG9yKGkuc3RvcHNbcF0pLCBzID0gdC5jTlMoewogICAgICAgICAgICAgICAgICAgIG46ICJzdG9wIiwKICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMTAwICogaS5zdG9wc1twICsgMV0gKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BDb2xvcjogdC5yZ2JUb0hleChuKSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcE9wYWNpdHk6IG4ubGVuZ3RoID4gMyA/IG5bM10gOiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIGQuYXBwZW5kQ2hpbGQocyk7CiAgICAgICAgICAgICAgICB0LmdyYWRTVkcuYXBwZW5kQ2hpbGQoZCksIGUgPSAidXJsKCN0cF9zdmdfZ3JhZGllbnRfIiArIHQuc3ZnR3JhZGllbnRzLmxlbmd0aCArICIpIiwgdC5zdmdHcmFkaWVudHMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiBlLAogICAgICAgICAgICAgICAgICAgIHNyYzogciwKICAgICAgICAgICAgICAgICAgICBnOiBkCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfSwKICAgICAgICBnZXRHcmFkaWVudHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuaW5kZXhPZigicmFkaWFsLWdyYWRpZW50IikgPj0gMCA/IHsKICAgICAgICAgICAgICAgIHN0b3BzOiB0LmdldEdyYWRpZW50Q29sb3JTdG9wUG9pbnRzKGUuc3BsaXQoInJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGNlbnRlciwgIilbMV0pLAogICAgICAgICAgICAgICAgdHlwZTogInJhZGlhbEdyYWRpZW50IiwKICAgICAgICAgICAgICAgIGRlZzogMAogICAgICAgICAgICB9IDogLTEgIT09IGUuaW5kZXhPZigiZ3JhZGllbnQiKSA/IHQuZ2V0TGluZWFyR3JhZGllbnRTdG9wcyhlKSA6IGUKICAgICAgICB9LAogICAgICAgIGdldExpbmVhckdyYWRpZW50U3RvcHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnNwbGl0KCJsaW5lYXItZ3JhZGllbnQoIilbMV07CiAgICAgICAgICAgIF9SX2lzX0VkaXRvciAmJiAodCA9ICh0ID0gdC5zcGxpdCgiLCAiKS5qb2luKCIsIikpLnNwbGl0KCIscmdiYSIpLmpvaW4oIiwgcmdiYSIpKTsKICAgICAgICAgICAgdmFyIGkgPSB0LnNwbGl0KCJkZWcsICIpOwogICAgICAgICAgICBmb3IgKHZhciBhIGluIHQgPSAoaS5sZW5ndGggPiAxID8gaVsxXSA6IGlbMF0pLnNwbGl0KCIgIiksIGkgPSBpLmxlbmd0aCA+IDEgPyBpWzBdIDogMTgwLCB0KSB0Lmhhc093blByb3BlcnR5KGEpICYmIHRbYV0uaW5kZXhPZigiJSIpID49IDAgJiYgKHRbYV0gPSAiIiArIE1hdGgucm91bmQoMTAwICogcGFyc2VGbG9hdCh0W2FdLnNwbGl0KCIlLCIpWzBdLnNwbGl0KCIlKSIpWzBdKSkgLyAxZTQpOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgc3RvcHM6IHQsCiAgICAgICAgICAgICAgICBkZWc6IGksCiAgICAgICAgICAgICAgICB0eXBlOiAibGluZWFyR3JhZGllbnQiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGdldEdyYWRpZW50Q29sb3JTdG9wUG9pbnRzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gL3JnYihbXHNcU10qPyklL2csCiAgICAgICAgICAgICAgICBpID0gW10sCiAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIChvID0gdC5leGVjKGUpKSAmJiBpLnB1c2gob1swXSkKICAgICAgICAgICAgfSB3aGlsZSAobyk7CiAgICAgICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgewogICAgICAgICAgICAgICAgdmFyIG8gPSBpW3JdLAogICAgICAgICAgICAgICAgICAgIHMgPSAoZSA9IC9yZ2IoW1xzXFNdKj8pXCkvLmV4ZWMobyksIC9cKShbXHNcU10qPyklLy5leGVjKG8pKTsKICAgICAgICAgICAgICAgIGVbMF0gJiYgKGUgPSBlWzBdKSwgc1sxXSAmJiAocyA9IHNbMV0pLCBhLnB1c2goZSksIGEucHVzaChwYXJzZUZsb2F0KHMpIC8gMTAwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgfSwKICAgICAgICBjYWxjTGluZWFyR3JhZGllbnQ6IGZ1bmN0aW9uKGUsIHQsIGksIGEpIHsKICAgICAgICAgICAgYSA9IGEgKiBNYXRoLlBJIC8gMTgwICsgTWF0aC5QSSAvIDI7CiAgICAgICAgICAgIGZvciAodmFyIHIsIG8sIHMsIG4sIGQgPSB0IC8gMiwgbCA9IGkgLyAyLCBjID0gTWF0aC5zcXJ0KGQgKiBkICsgbCAqIGwpLCBwID0gewogICAgICAgICAgICAgICAgICAgIHgxOiBNYXRoLmNvcyhhKSAqIGMgKyBkLAogICAgICAgICAgICAgICAgICAgIHkxOiBNYXRoLnNpbihhKSAqIGMgKyBsLAogICAgICAgICAgICAgICAgICAgIHgyOiBkLAogICAgICAgICAgICAgICAgICAgIHkyOiBsCiAgICAgICAgICAgICAgICB9LCBtID0gW3UoewogICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgfSwgYSksIHUoewogICAgICAgICAgICAgICAgICAgIHg6IHQsCiAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgfSwgYSksIHUoewogICAgICAgICAgICAgICAgICAgIHg6IHQsCiAgICAgICAgICAgICAgICAgICAgeTogaQogICAgICAgICAgICAgICAgfSwgYSksIHUoewogICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgeTogaQogICAgICAgICAgICAgICAgfSwgYSldLCB2ID0gW10sIGYgPSAwOyBmIDwgbS5sZW5ndGg7IGYrKykgdi5wdXNoKGgobVtmXSwgcCkpOwogICAgICAgICAgICBpZiAoZyhkLCBsLCB2WzBdLngsIHZbMF0ueSkgPiBnKGQsIGwsIHZbMV0ueCwgdlsxXS55KSA/IChyID0gdlswXS54LCBvID0gdlswXS55KSA6IChyID0gdlsxXS54LCBvID0gdlsxXS55KSwgZyhkLCBsLCB2WzJdLngsIHZbMl0ueSkgPiBnKGQsIGwsIHZbM10ueCwgdlszXS55KSA/IChzID0gdlsyXS54LCBuID0gdlsyXS55KSA6IChzID0gdlszXS54LCBuID0gdlszXS55KSwgTWF0aC5yb3VuZCgxMDAgKiBNYXRoLmF0YW4yKGwgLSBvLCBkIC0gcikpIC8gMTAwID09PSBNYXRoLnJvdW5kKGEgJSAoMiAqIE1hdGguUEkpICogMTAwKSAvIDEwMCkgewogICAgICAgICAgICAgICAgdmFyIHkgPSByLAogICAgICAgICAgICAgICAgICAgIGIgPSBvOwogICAgICAgICAgICAgICAgciA9IHMsIG8gPSBuLCBzID0geSwgbiA9IGIKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZS5jcmVhdGVMaW5lYXJHcmFkaWVudChNYXRoLnJvdW5kKHIpLCBNYXRoLnJvdW5kKG8pLCBNYXRoLnJvdW5kKHMpLCBNYXRoLnJvdW5kKG4pKQogICAgICAgIH0sCiAgICAgICAgdHJhbnNpdGlvbnM6IHsKICAgICAgICAgICAgZmlsdGVyOiB7CiAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBlICYmIHZvaWQgMCAhPT0gZS50bCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHZvaWQgMCAhPT0gaSB8fCB2b2lkIDAgIT09IGUudGwuYmx1ciA/ICIgYmx1cigiICsgKHZvaWQgMCAhPT0gaSA/IGkgOiAwICsgZS50bC5ibHVyICE9PSB2b2lkIDAgPyBlLnRsLmJsdXIgOiAwKSArICJweCkiIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuY2FudmFzLnN0eWxlLmZpbHRlciA9IHZvaWQgMCA9PT0gZS50bC5maWx0ZXIgPyAiIiArIGEgOiBlLnRsLmZpbHRlciArIGEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXh0ZW5kVGltZUxpbmU6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdm9pZCAwICE9PSB0LmcgJiYgIjAlIiAhPT0gdC5nICYmIDAgIT09IHQuZyA/ICgiIiA9PT0gYSA/ICIiIDogIiAiKSArICJncmF5c2NhbGUoX2dfJSkiIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgKz0gdm9pZCAwICE9PSB0LmggJiYgIjEwMCUiICE9PSB0LmggJiYgMTAwICE9PSB0LmggPyAoIiIgPT09IGEgPyAiIiA6ICIgIikgKyAiYnJpZ2h0bmVzcyhfaF8lKSIgOiAiIiwgYSArPSB2b2lkIDAgIT09IHQucyAmJiAiMHB4IiAhPT0gdC5zICYmIDAgIT09IHQucyA/ICgiIiA9PT0gYSA/ICIiIDogIiAiKSArICJzZXBpYShfc18lKSIgOiAiIiwgYSArPSB2b2lkIDAgIT09IHQuYyAmJiAxMDAgIT09IHQuYyA/ICgiIiA9PT0gYSA/ICIiIDogIiAiKSArICJjb250cmFzdChfY18lKSIgOiAiIiwgIiIgIT09IChhICs9IHZvaWQgMCAhPT0gdC5pICYmIDAgIT09IHQuaSA/ICgiIiA9PT0gYSA/ICIiIDogIiAiKSArICJpbnZlcnQoX2lfJSkiIDogIiIpICYmICh0LnRsID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBhLnJlcGxhY2UoIl9nXyIsIHBhcnNlRmxvYXQodC5nKSkucmVwbGFjZSgiX2hfIiwgcGFyc2VGbG9hdCh0LmgpKS5yZXBsYWNlKCJfc18iLCBwYXJzZUZsb2F0KHQucykpLnJlcGxhY2UoIl9jXyIsIHBhcnNlRmxvYXQodC5jKSkucmVwbGFjZSgiX2lfIiwgcGFyc2VGbG9hdCh0LmkpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdm9pZCAwICE9PSB0LmIgJiYgIjBweCIgIT09IHQuYiAmJiAwICE9PSB0LmIgJiYgKHZvaWQgMCA9PT0gdC50bCA/IHQudGwgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyOiBwYXJzZUZsb2F0KHQuYikKICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHQudGwuYmx1ciA9IHBhcnNlRmxvYXQodC5iKSksIHZvaWQgMCAhPT0gdC50bCAmJiAoZS5hZGQodHBHUy5nc2FwLnRvKHQudGwsIHQubXMgLyB0LnNlYywgdm9pZCAwID09PSB0LnRsLmZpbHRlciA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdXI6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHZvaWQgMCA9PT0gdC50bC5ibHVyID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBhLnJlcGxhY2UoIl9nXyIsICIwIikucmVwbGFjZSgiX2hfIiwgIjEwMCIpLnJlcGxhY2UoIl9zXyIsICIwIikucmVwbGFjZSgiX2NfIiwgMTAwKS5yZXBsYWNlKCJfaV8iLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IHQuZQogICAgICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1cjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYS5yZXBsYWNlKCJfZ18iLCAiMCIpLnJlcGxhY2UoIl9oXyIsICIxMDAiKS5yZXBsYWNlKCJfc18iLCAiMCIpLnJlcGxhY2UoIl9jXyIsIDEwMCkucmVwbGFjZSgiX2lfIiwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiB0LmUKICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApLCBpLmNhbnZhc0ZpbHRlciA9ICEwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2xpZGluZ292ZXJsYXk6IHsKICAgICAgICAgICAgICAgIGdldEJhc2ljOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5nZXRCYXNpYyh7CiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IFsieCIsICJ5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgIGluOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3h5OiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9neHlzOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9neHllOiAtMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogInBvd2VyMS5pbk91dCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgb3V0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2VkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF94eTogLTEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogInBvd2VyMS5pbk91dCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXBkYXRlQW5pbTogZnVuY3Rpb24oZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdm9pZCAwICE9PSBpLmluLnggJiYgMCAhPT0gaS5pbi54ICYmICIwJSIgIT09IGkuaW4ueCA/ICJ4IiA6ICJ5IjsKICAgICAgICAgICAgICAgICAgICBpLmluWyJnIiArIHIgKyAicyJdID0gdC5TQVRvb2xzLmdldE9mZnNldChpLmluW3JdLCBpLmluLl9neHlzLCBhLCAxKSArICIlIiwgaS5pblsiZyIgKyByICsgImUiXSA9IHQuU0FUb29scy5nZXRPZmZzZXQoaS5pbltyXSwgaS5pbi5fZ3h5ZSwgYSwgMSkgKyAiJSIsIGkub3V0W3JdID0gdC5TQVRvb2xzLmdldE9mZnNldChpLmluW3JdLCBpLm91dC5feHksIGEsIDEpICsgIiUiLCBpLmluW3JdID0gdC5TQVRvb2xzLmdldE9mZnNldChpLmluW3JdLCBpLmluLl94eSwgYSwgMSkgKyAiJSI7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBwYXJzZUludChpLmluW3JdKSA+PSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmluLmQgPSAieCIgPT09IHIgPyBvID8gImxlZnQiIDogInJpZ2h0IiA6IG8gPyAidXAiIDogImRvd24iLCBpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmVmb3JlRHJhdzogZnVuY3Rpb24oZSwgdCwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gaS5kICYmIChpLl9keHMgPSAicmlnaHQiID09PSBpLmQgPyAwICsgaS5tdyA6ICJsZWZ0IiA9PT0gaS5kID8gMCAtIGkubXcgOiAwLCBpLl9keXMgPSAiZG93biIgPT09IGkuZCA/IDAgKyBpLm1oIDogInVwIiA9PT0gaS5kID8gMCAtIGkubWggOiAwLCBpLl94cyA9ICJsZWZ0IiA9PT0gaS5kID8gMCAtIGkubXcgOiAwLCBpLl95cyA9ICJ1cCIgPT09IGkuZCA/IDAgLSBpLm1oIDogMCwgaS5feGUgPSAicmlnaHQiID09PSBpLmQgPyBhLlNMT1QuT1cgKyBpLm13IDogImxlZnQiID09PSBpLmQgPyBhLlNMT1QuT1cgLSBpLm13IDogYS5TTE9ULk9XLCBpLl95ZSA9ICJkb3duIiA9PT0gaS5kID8gYS5TTE9ULk9IICsgaS5taCA6ICJ1cCIgPT09IGkuZCA/IGEuU0xPVC5PSCAtIGkubWggOiBhLlNMT1QuT0gsIHQuYmVnaW5QYXRoKCksIHQucmVjdCgibGVmdCIgPT09IGkuZCA/IE1hdGgubWF4KDAsIGkuX3hzKSA6ICJyaWdodCIgPT09IGkuZCA/IE1hdGgubWluKDAsIGkuX3hzKSA6IDAsICJ1cCIgPT09IGkuZCA/IE1hdGgubWF4KDAsIGkuX3lzKSA6ICJkb3duIiA9PT0gaS5kID8gTWF0aC5taW4oMCwgaS5feXMpIDogMCwgImxlZnQiID09PSBpLmQgPyBNYXRoLm1heChhLlNMT1QuT1csIGkuX3hlKSA6ICJyaWdodCIgPT09IGkuZCA/IE1hdGgubWluKGEuU0xPVC5PVywgaS5feGUpIDogaS5feGUsICJ1cCIgPT09IGkuZCA/IE1hdGgubWF4KGEuU0xPVC5PSCwgaS5feWUpIDogImRvd24iID09PSBpLmQgPyBNYXRoLm1pbihhLlNMT1QuT0gsIGkuX3llKSA6IGkuX3llKSwgdC5jbGlwKCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYWZ0ZXJEcmF3OiBmdW5jdGlvbihlLCB0LCBpLCBhLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBpLmQgJiYgKHQuc2F2ZSgpLCB0LmJlZ2luUGF0aCgpLCB0LnJlY3QoTWF0aC5tYXgoMCwgaS5fZHhzKSwgTWF0aC5tYXgoMCwgaS5fZHlzKSwgaS5feGUsIGkuX3llKSwgdC5jbGlwKCksIHQuc2F2ZSgpLCB0LnRyYW5zZm9ybShyLmNzeCwgci5zc3gsIHIuc3N5LCByLmNzeSwgLjUgKiBhLlNMT1QuT1cgKyBpLnggKyBpLnNneCwgLjUgKiBhLlNMT1QuT0ggKyBpLnkgKyBpLnNneSksIHQuZHJhd0ltYWdlKHZvaWQgMCAhPT0gYS5zaGFkb3dDYW52YXMgPyBhLnNoYWRvd0NhbnZhcyA6IGEubG9hZG9iai5pbWcsIDAsIDAsIGEuU0xPVC5PVywgYS5TTE9ULk9ILCBpLnNneCAtIGEuU0xPVC5PVyAvIDIsIGkuc2d5IC0gYS5TTE9ULk9IIC8gMiwgYS5TTE9ULk9XLCBhLlNMT1QuT0gpLCB0LnJlc3RvcmUoKSwgdC5maWxsU3R5bGUgPSAicmdiYSgwLDAsMCwwLjYpIiwgdC5maWxsUmVjdChpLmd4LCBpLmd5LCBhLlNMT1QuT1csIGEuU0xPVC5PSCksIHQucmVzdG9yZSgpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGV4dGVuZFRpbWVMaW5lOiBmdW5jdGlvbihlLCBpLCBhLCByLCBvLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgImluIiAhPT0gby5kaXJlY3Rpb24gfHwgdm9pZCAwID09PSByLmd4ZSAmJiB2b2lkIDAgPT09IHIuZ3llIHx8IChqUXVlcnkuZXh0ZW5kKCEwLCBhWzBdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQ6IHIuZCwKICAgICAgICAgICAgICAgICAgICAgICAgZ3g6IHZvaWQgMCA9PT0gci5neHMgPyAwIDogMiAqIHQuU0FUb29scy5nZXRPZmZzZXQoci5neHMsIHMud2lkdGgsIG8uc2RpciwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGd5OiB2b2lkIDAgPT09IHIuZ3lzID8gMCA6IDIgKiB0LlNBVG9vbHMuZ2V0T2Zmc2V0KHIuZ3lzLCBzLmhlaWdodCwgby5zZGlyLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2d4OiB2b2lkIDAgPT09IHIuZ3hzID8gMCA6IHQuU0FUb29scy5nZXRPZmZzZXQoci5neHMsIHMud2lkdGgsIG8uc2RpciwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgIHNneTogdm9pZCAwID09PSByLmd5cyA/IDAgOiB0LlNBVG9vbHMuZ2V0T2Zmc2V0KHIuZ3lzLCBzLmhlaWdodCwgby5zZGlyLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbXc6IDAgLSBzLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBtaDogMCAtIHMuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgfSksIGkuYWRkKHRwR1MuZ3NhcC50byhhLCByLm1zIC8gci5zZWMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ3g6IHZvaWQgMCA9PT0gci5neGUgPyAwIDogMiAqIHQuU0FUb29scy5nZXRPZmZzZXQoci5neGUsIHMud2lkdGgsIG8uc2RpciwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGd5OiB2b2lkIDAgPT09IHIuZ3llID8gMCA6IDIgKiB0LlNBVG9vbHMuZ2V0T2Zmc2V0KHIuZ3llLCBzLmhlaWdodCwgby5zZGlyLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2d4OiB2b2lkIDAgPT09IHIuZ3hlID8gMCA6IDIgKiB0LlNBVG9vbHMuZ2V0T2Zmc2V0KHIuZ3hlLCBzLndpZHRoLCBvLnNkaXIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICBzZ3k6IHZvaWQgMCA9PT0gci5neWUgPyAwIDogMiAqIHQuU0FUb29scy5nZXRPZmZzZXQoci5neWUsIHMuaGVpZ2h0LCBvLnNkaXIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICBtdzogcy53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbWg6IHMuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiByLmUKICAgICAgICAgICAgICAgICAgICB9KSwgMCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG1vdGlvbkZpbHRlcjogewogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQgJiYgcGFyc2VGbG9hdCh0KSA+IDAgPyAodCA9IHBhcnNlRmxvYXQodCksIGUuZm1FeGlzdHMgPSAhMCwgZS5mbVNoYWRvdyA9IHZvaWQgMCA9PT0gZS5mbVNoYWRvdyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpIDogZS5mbVNoYWRvdywgZS5mbUN0eCA9IGUuZm1TaGFkb3cuZ2V0Q29udGV4dCgiMmQiKSwgZS5mbVNoYWRvdy53aWR0aCA9IGUuY3R4LmNhbnZhcy53aWR0aCwgZS5mbVNoYWRvdy5oZWlnaHQgPSBlLmN0eC5jYW52YXMuaGVpZ2h0LCBlLmZtQ3R4Lmdsb2JhbEFscGhhID0gdHBHUy5nc2FwLnV0aWxzLm1hcFJhbmdlKDEwMCwgMCwgNDAsIDAsIHQpIC8gMTAwLCBlLmZtQ3R4LmNsZWFyUmVjdCgwLCAwLCBlLmN0eC5jYW52YXMud2lkdGgsIGUuY3R4LmNhbnZhcy5oZWlnaHQpKSA6IGUuZm1FeGlzdHMgPSAhMSwgdAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICJwYXJ0aWFsIiA9PT0gdCAmJiAoZS5mbUN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAic291cmNlLW92ZXIiKSwgZS5mbUN0eC5kcmF3SW1hZ2UoZS5jYW52YXMsIDAsIDAsIGUuY2FudmFzLndpZHRoLCBlLmNhbnZhcy5oZWlnaHQpLCBlLmN0eC5jbGVhclJlY3QoMCwgMCwgZS5jYW52YXMud2lkdGgsIGUuY2FudmFzLmhlaWdodCksIGUuY3R4LmRyYXdJbWFnZShlLmZtQ3R4LmNhbnZhcywgMCwgMCwgZS5jYW52YXMud2lkdGgsIGUuY2FudmFzLmhlaWdodCksICJwYXJ0aWFsIiA9PT0gdCAmJiAoZS5mbUN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAic291cmNlLWF0b3AiKSwgInBhcnRpYWwiICE9PSB0ICYmICJmdWxsIiAhPT0gdCB8fCAoZS5mbUN0eC5maWxsU3R5bGUgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIiwgZS5mbUN0eC5maWxsUmVjdCgwLCAwLCBlLmNhbnZhcy53aWR0aCwgZS5jYW52YXMuaGVpZ2h0KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbGVhckZ1bGw6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBlLmZtRXhpc3RzICYmIHZvaWQgMCAhPT0gZS5mbUN0eCAmJiAoZS5jdHguY2xlYXJSZWN0KDAsIDAsIGUuY2FudmFzLndpZHRoLCBlLmNhbnZhcy5oZWlnaHQpLCBlLmZtQ3R4LmNsZWFyUmVjdCgwLCAwLCBlLmNhbnZhcy53aWR0aCwgZS5jYW52YXMuaGVpZ2h0KSwgdm9pZCAwICE9PSB0ICYmIHQucmVuZGVyKHQudGltZSgpLCAhMCwgITApKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5mbVNoYWRvdyAmJiBlLmZtU2hhZG93LnJlbW92ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGQzOiB7CiAgICAgICAgICAgICAgICB0aWNrZXI6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBlLmhlbHBlcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuc21pICogKCJpbiIgPT09IGkgPyBlLmhlbHBlci5vbyA6IGUuaGVscGVyLm8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuc21hICogKCJpbiIgPT09IGkgPyBlLmhlbHBlci5vbyA6IGUuaGVscGVyLm8pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5ncmFkaWVudCA9ICJ2ZXJ0aWNhbCIgPT09IGUuZCA/ICJpbiIgPT09IGkgPyB0LmN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAwLCB0LmNhbnZhcy5oZWlnaHQpIDogdC5jdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgdC5jYW52YXMuaGVpZ2h0LCAwLCAwKSA6ICJpbiIgPT09IGkgPyB0LmN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB0LmNhbnZhcy53aWR0aCwgMCkgOiB0LmN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCh0LmNhbnZhcy53aWR0aCwgMCwgMCwgMCksIGUuZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsICJyZ2JhKCIgKyBlLnNjICsgIiwiICsgYSArICIpIiksIGUuZ3JhZGllbnQuYWRkQ29sb3JTdG9wKGUuc2wsICJyZ2JhKCIgKyBlLnNjICsgIiwiICsgciArICIpIiksIHQuY3R4LmZpbGxTdHlsZSA9IGUuZ3JhZGllbnQsIHQuY3R4LmZpbGxSZWN0KDAsIDAsIHQuY2FudmFzLndpZHRoLCB0LmNhbnZhcy5oZWlnaHQpLCB2b2lkIDAgIT09IHQuY3ViZSAmJiB0LmN1YmUuY3R4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHZvaWQgMCAhPT0gZS5yb29taGVscGVyICYmICExICE9PSBlLnJvb21oZWxwZXIgJiYgKDkwIC0gZS5yb29taGVscGVyLnIpIC8gOTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gITEgIT09IG8gPyBvIDogZS5zbWkgKiBlLmhlbHBlci5vLCByID0gITEgIT09IG8gPyBvIDogZS5zbWEgKiBlLmhlbHBlci5vLCB0LmN1YmUuY3R4LmNsZWFyUmVjdCgwLCAwLCB0LmN1YmUuY3R4LmNhbnZhcy53aWR0aCwgdC5jdWJlLmN0eC5jYW52YXMuaGVpZ2h0KSwgZS5ncmFkaWVudFcgPSAhMSAhPT0gbyA/ICJ2ZXJ0aWNhbCIgPT09IGUuZCA/IGUudCA8IDAgJiYgMSA9PT0gZS5zZGlyIHx8IGUudCA+IDAgJiYgLTEgPT09IGUuc2RpciA/IHQuY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIHQuY3ViZS5jdHguY2FudmFzLndpZHRoIC8gMiwgMCwgMCwgMCwgMiAqIHQuY3ViZS5jdHguY2FudmFzLndpZHRoKSA6IHQuY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KHQuY3ViZS5jdHguY2FudmFzLndpZHRoLCAwLCAwLCAwLCAwLCAyICogdC5jdWJlLmN0eC5jYW52YXMud2lkdGgpIDogZS50ID4gMCAmJiAxID09PSBlLnNkaXIgfHwgZS50IDwgMCAmJiAtMSA9PT0gZS5zZGlyID8gdC5jdHguY3JlYXRlUmFkaWFsR3JhZGllbnQodC5jdWJlLmN0eC5jYW52YXMud2lkdGggLyAyLCB0LmN1YmUuY3R4LmNhbnZhcy5oZWlnaHQsIDAsIHQuY3ViZS5jdHguY2FudmFzLndpZHRoIC8gMiwgdC5jdWJlLmN0eC5jYW52YXMuaGVpZ2h0LCB0LmN1YmUuY3R4LmNhbnZhcy53aWR0aCkgOiB0LmN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCh0LmN1YmUuY3R4LmNhbnZhcy53aWR0aCAvIDIsIC4yICogdC5jdWJlLmN0eC5jYW52YXMuaGVpZ2h0LCAwLCB0LmN1YmUuY3R4LmNhbnZhcy53aWR0aCAvIDIsIC4yICogdC5jdWJlLmN0eC5jYW52YXMuaGVpZ2h0LCB0LmN1YmUuY3R4LmNhbnZhcy53aWR0aCkgOiAidmVydGljYWwiID09PSBlLmQgPyB0LmN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAwLCB0LmN1YmUuY3R4LmNhbnZhcy5oZWlnaHQpIDogdC5jdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgdC5jdWJlLmN0eC5jYW52YXMud2lkdGgsIDApLCBlLmdyYWRpZW50Vy5hZGRDb2xvclN0b3AoMCwgInJnYmEoIiArIGUuc2MgKyAiLCIgKyAoITEgIT09IG8gPyAiYSIgPT09IGUuRElSID8gciA6IDAgOiAiYSIgPT09IGUuRElSID8gMCA6IHIpICsgIikiKSwgZS5ncmFkaWVudFcuYWRkQ29sb3JTdG9wKDEsICJyZ2JhKCIgKyBlLnNjICsgIiwiICsgKCExICE9PSBvID8gImEiID09PSBlLkRJUiA/IDAgOiByIDogImEiID09PSBlLkRJUiA/IHIgOiAwKSArICIpIiksIHQuY3ViZS5jdHguZmlsbFN0eWxlID0gZS5ncmFkaWVudFcsIHQuY3ViZS5jdHguZmlsbFJlY3QoMCwgMCwgdC5jdWJlLmN0eC5jYW52YXMud2lkdGgsIHQuY3ViZS5jdHguY2FudmFzLmhlaWdodCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRXYWxsOiBmdW5jdGlvbihlLCB0LCBpLCBhLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuVEwgPSB0cEdTLmdzYXAudGltZWxpbmUoKSwgZS5UTC5hZGQodHBHUy5nc2FwLnRvKGUuYywgLjIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIgogICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgInJvdGF0aW9uWCIgPT09IGkgPyAoZS5jdHguY2FudmFzLndpZHRoID0gYS53LCBlLmN0eC5jYW52YXMuaGVpZ2h0ID0gYS53LCBlLlRMLmFkZCh0cEdTLmdzYXAuc2V0KGUudywgewogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYS53LAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICI1MCUgNTAlIC0iICsgYS53IC8gMiArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQgPiAwID8gLShhLncgLSBhLmgpIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25YOiB0ID4gMCA/IC05MCA6IDkwLAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblk6IDAKICAgICAgICAgICAgICAgICAgICB9KSwgMCkpIDogKGUuY3R4LmNhbnZhcy53aWR0aCA9IG8gPyBhLncgOiBhLmgsIGUuY3R4LmNhbnZhcy5oZWlnaHQgPSBhLmgsIGUuVEwuYWRkKHRwR1MuZ3NhcC5zZXQoZS53LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogciwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG8gPyBhLncgOiBhLmgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYS5oLAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICI1MCUgNTAlIC0iICsgKG8gPyBhLncgOiBhLmgpIC8gMiArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQgPCAwID8gYS53IC0gYS5oIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25YOiAwLAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblk6IHQgPiAwID8gLTkwIDogOTAKICAgICAgICAgICAgICAgICAgICB9KSwgMCkpLCBlLlRMCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYnVpbGRDdWJlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5jdWJlID0gewogICAgICAgICAgICAgICAgICAgICAgICBjOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdzogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikKICAgICAgICAgICAgICAgICAgICB9LCBlLmN1YmUuY3R4ID0gZS5jdWJlLncuZ2V0Q29udGV4dCgiMmQiKSwgZS5jdWJlLmMuY2xhc3NOYW1lID0gInJzX2Zha2VfY3ViZSIsIGUuY3ViZS53LmNsYXNzTmFtZSA9ICJyc19mYWtlX2N1YmVfd2FsbCIsIHRwR1MuZ3NhcC5zZXQoZS5jdWJlLmMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUubURJTS53LAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGUubURJTS5oCiAgICAgICAgICAgICAgICAgICAgfSksIHRwR1MuZ3NhcC5zZXQoZS5jdWJlLncsIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUubURJTS53LAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGUubURJTS5oLAogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjY2NjIgogICAgICAgICAgICAgICAgICAgIH0pLCBlLmN1YmUuYy5hcHBlbmRDaGlsZChlLmN1YmUudyksIGUuc2JnLmFwcGVuZENoaWxkKGUuY3ViZS5jKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGN1YmVUTDogZnVuY3Rpb24oZSwgaSwgYSwgcikgewogICAgICAgICAgICAgICAgICAgIGlmICgibm9uZSIgIT09IGkuZiAmJiB2b2lkIDAgIT09IGkuZikgewogICAgICAgICAgICAgICAgICAgICAgICBhLnNiZy5zdHlsZS50cmFuc2Zvcm1TdHlsZSA9ICJwcmVzZXJ2ZS0zZCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdHBHUy5nc2FwLnRpbWVsaW5lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gImluY3ViZSIgPT09IGkuZiA/IDEgOiAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAiaW5jdWJlIiA9PT0gaS5mIHx8ICJjdWJlIiA9PT0gaS5mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9ICJmbHkiID09PSBpLmYgPyAtMzAgOiA5MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAidHVybiIgIT09IGkuZiAmJiAhMSAhPT0gaS50ICYmIChfUl9pc19FZGl0b3IgfHwgITAgPT09IHRbZV0uZmlyc3RTbGlkZUFuaW1Eb25lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAtMSAqIGkueiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgejogbCA/IDAgOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjEuaW5PdXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlOiBpLmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gW2EuY2FudmFzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBuID8gIjUwJSA1MCUgIiA6ICIyMCUgMjAlICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gInJvdGF0aW9uWCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gInJvdGF0aW9uWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gInkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9ICJoZWlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGkuZmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmVydGljYWwiICE9PSBpLmQgPyAodiA9ICJyb3RhdGlvblkiLCBmID0gInJvdGF0aW9uWCIsIHkgPSAieCIsIGIgPSAid2lkdGgiLCBpLkRJUiA9IDEgPT09IGkuc2RpciA/ICJiIiA6ICJhIikgOiBpLkRJUiA9IDEgPT09IGkuc2RpciA/ICJhIiA6ICJiIiwgYiA9ICJ3aWR0aCIgPT09IGIgPyAidyIgOiAiaGVpZ2h0IiA9PT0gYiA/ICJoIiA6IGIsICJ0dXJuIiA9PT0gaS5mID8gKGQgPSAidmVydGljYWwiID09PSBpLmQgPyAtMTIwIDogMTIwLCBtID0gInZlcnRpY2FsIiA9PT0gaS5kID8gMSA9PT0gaS5zZGlyID8gImluIiA9PT0gciA/ICIwJSAwJSAwJSIgOiAiMCUgMTAwJSAwJSIgOiAiaW4iID09PSByID8gIjAlIDEwMCUgMCUiIDogIjAlIDAlIDAlIiA6IDEgPT09IGkuc2RpciA/ICJpbiIgPT09IHIgPyAiMCUgMCUgMCUiIDogIjEwMCUgMCUgMCUiIDogImluIiA9PT0gciA/ICIxMDAlIDAlIDAlIiA6ICIwJSAwJSAwJSIsIGcueiA9IDAsIHUuZWFzZSA9ICJvdXQiID09PSByID8gInBvd2VyMy5vdXQiIDogdS5lYXNlLCB3ID0gIm91dCIgPT09IHIgPyB3IC8gMiA6IHcpIDogbSArPSBzICogYS5tRElNW2JdIC8gMiArICJweCIsIHVbdl0gPSAwLCB1W3ldID0gMCwgImluIiA9PT0gciA/IHBbdl0gPSBkICogaS5zZGlyIDogdVt2XSA9IC1kICogaS5zZGlyLCAiZmx5IiA9PT0gaS5mKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgXyA9IHZvaWQgMCA9PT0gaS5meiA/IDIwICogTWF0aC5yYW5kb20oKSAtIDEwIDogcGFyc2VJbnQoaS5meik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4iID09PSByID8gKHBbeV0gPSBhLm1ESU1bYl0gKiAodm9pZCAwID09PSBpLmZkaSA/IDEuNSA6IHBhcnNlRmxvYXQoaS5mZGkpKSAqIGkuc2RpciwgcC5yb3RhdGVaID0gaS5zZGlyICogXywgdS5yb3RhdGVaID0gMCkgOiAodVt5XSA9IGEubURJTVtiXSAqICh2b2lkIDAgPT09IGkuZmRvID8gMiA6IHBhcnNlRmxvYXQoaS5mZG8pKSAqIGkuc2RpciAqIC0xLCB1LnJvdGF0ZVogPSBpLnNkaXIgKiBfICogLTEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEuc2JnLnN0eWxlLnBlcnNwZWN0aXZlID0gbCA/ICIyNTAwcHgiIDogIjE1MDBweCIsIGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBTID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6OiBjICogKCJmbHkiID09PSBpLmYgPyAxLjUgOiAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogInBvd2VyMS5pbk91dCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjEuaW5PdXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNbZl0gPSAtMSAqIGkudCwgeFtmXSA9IDAsIGkucm9vbWhlbHBlciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvLmFkZCh0cEdTLmdzYXAuc2V0KF9SX2lzX0VkaXRvciA/IFJWUy5TQkdTW1JWUy5TLnNsaWRlSWRdLndyYXAgOiBhLndyYXBbMF0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzcGVjdGl2ZTogMTIwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1TdHlsZTogInByZXNlcnZlLTNkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46IG0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgby5hZGQodHBHUy5nc2FwLnRvKGEuc2JnLCAzICogaS5tZCwgUyksIDApLCBvLmFkZCh0cEdTLmdzYXAudG8oYS5zYmcsIDMgKiBpLm1kLCB4KSwgdyAtIGkubWQpLCBvLmFkZCh0cEdTLmdzYXAudG8oaS5yb29taGVscGVyLCAzICogaS5tZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6IE1hdGguYWJzKGkudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgby5hZGQodHBHUy5nc2FwLnRvKGkucm9vbWhlbHBlciwgMyAqIGkubWQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdyAtIGkubWQpLCAiaW4iID09PSByICYmIDEgIT09IHMgJiYgbiAmJiAodm9pZCAwID09PSBhLmN1YmUgJiYgdC50cmFuc2l0aW9ucy5kMy5idWlsZEN1YmUoYSksIG8uYWRkKHQudHJhbnNpdGlvbnMuZDMuc2V0V2FsbChhLmN1YmUsIFNbZl0sIGYsIGEubURJTSwgaS5jKSwgMCksIGgucHVzaChhLmN1YmUuYykpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpLnJvb21oZWxwZXIgPSAhMSwgby5hZGQodHBHUy5nc2FwLnNldChfUl9pc19FZGl0b3IgPyBSVlMuU0JHU1tSVlMuUy5zbGlkZUlkXS53cmFwIDogYS53cmFwWzBdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzcGVjdGl2ZTogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtU3R5bGU6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogIjUwJSA1MCUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgIV9SX2lzX0VkaXRvciAmJiAhMCAhPT0gdFtlXS5maXJzdFNsaWRlQW5pbURvbmUgJiYgbiAmJiAodm9pZCAwID09PSBhLmN1YmUgJiYgdC50cmFuc2l0aW9ucy5kMy5idWlsZEN1YmUoYSksIG8uYWRkKHQudHJhbnNpdGlvbnMuZDMuc2V0V2FsbChhLmN1YmUsIHBbdl0sIHYsIGEubURJTSwgaS5jLCAhMCksIDApLCBvLmFkZCh0cEdTLmdzYXAuZnJvbVRvKGEuY3ViZS53LCA0ICogaS5tZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgaC5wdXNoKGEuY3ViZS5jKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmhlbHBlciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbzogMQogICAgICAgICAgICAgICAgICAgICAgICB9LCBvLmFkZCh0cEdTLmdzYXAudG8oaS5oZWxwZXIsIHcsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbzogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6IGkuZQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5tZCArIDApLCBvLmFkZCh0cEdTLmdzYXAuc2V0KGgsIGpRdWVyeS5leHRlbmQoITAsIHt9LCBwLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZTNEOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogbQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIDApLCAidHVybiIgIT09IGkuZiAmJiBvLmFkZCh0cEdTLmdzYXAudG8oaCwgMyAqIGkubWQsIGcpLCAwKSwgby5hZGQodHBHUy5nc2FwLnRvKGgsIHcsIHUpLCBpLm1kICsgMCksICJ0dXJuIiAhPT0gaS5mICYmIG8uYWRkKHRwR1MuZ3NhcC50byhoLCAzICogaS5tZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgejogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2U6ICJwb3dlcjEuaW5PdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB3IC0gaS5tZCksICJvdXQiID09PSByICYmIDEgIT09IHMgJiYgby5hZGQodHBHUy5nc2FwLnRvKGgsIDIgKiBpLm1kLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmR1ciAtIDIgKiBpLm1kKSwgbwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgYW5pbWF0ZWRDYW52YXNVcGRhdGU6IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgaS5jRElNUyA9IHQuZ2V0QkdDYW52YXNEZXRhaWxzKGUsIGkpLCBpLmNhbnZhcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAidHJhbnNwYXJlbnQiLCBpLmNhbnZhcy5zdHlsZS5vcGFjaXR5ID0gMSwgaS5jYW52YXMud2lkdGggIT09IGkubURJTS53aWR0aCAmJiAoaS5jYW52YXMud2lkdGggPSBpLm1ESU0ud2lkdGgpLCBpLmNhbnZhcy5oZWlnaHQgIT09IGkubURJTS5oZWlnaHQgJiYgKGkuY2FudmFzLmhlaWdodCA9IGkubURJTS5oZWlnaHQpLCBfUl9pc19FZGl0b3IgfHwgITAgIT09IHRbZV0uY2xlYXJNb2RhbEJHIHx8IChpLmN0eC5jbGVhclJlY3QoMCwgMCwgaS5jYW52YXMud2lkdGgsIGkuY2FudmFzLmhlaWdodCksIHRbZV0uY2xlYXJNb2RhbEJHID0gITEsIGkuc2JnLnBhcmVudE5vZGUuc3R5bGUub3BhY2l0eSA9IDEpLCBpLmNvbCA9IGkuY29sIHx8IDEsIGkucm93ID0gaS5yb3cgfHwgMSwgaS5TTE9UID0galF1ZXJ5LmV4dGVuZCghMCwgewogICAgICAgICAgICAgICAgczoge30sCiAgICAgICAgICAgICAgICBjOiB7fQogICAgICAgICAgICB9LCByKGUsIGkuY29sLCBpLnJvdywgaS5tRElNLCAiT1ciLCAiT0giKSksIGkuU0xPVC5EWCA9IDAgLSBpLlNMT1QuT1cgLyAyLCBpLlNMT1QuRFkgPSAwIC0gaS5TTE9ULk9IIC8gMiwgaS5yb3cgPSBNYXRoLmNlaWwoaS5tRElNLmhlaWdodCAvIGkuU0xPVC5PSCkgfHwgMSwgdm9pZCAwICE9PSBpLmNhbGxGcm9tQW5pbWF0ZWRDYW52YXNVcGRhdGUgJiYgaS5jYWxsRnJvbUFuaW1hdGVkQ2FudmFzVXBkYXRlKCkKICAgICAgICB9LAogICAgICAgIHNsaWRlQW5pbUZpbmlzaGVkOiBmdW5jdGlvbihlLCBpLCBhLCByKSB7CiAgICAgICAgICAgIHZvaWQgMCAhPT0gaSAmJiAodm9pZCAwICE9PSBpLmJndmlkICYmIGkuYmd2aWQubGVuZ3RoID4gMCAmJiAib3V0IiA9PT0gYS5kaXJlY3Rpb24gJiYgKGkuZHJhd1ZpZGVvQ2FudmFzSW1hZ2VzUmVjYWxsID0gITEsIHQuc3RvcFZpZGVvKGkuYmd2aWQsIGUpLCBpLmJndmlkWzBdLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIsIGkuYmd2aWRbMF0uc3R5bGUuekluZGV4ID0gMCksICJpbiIgPT09IGEuZGlyZWN0aW9uICYmICh0LnRyYW5zaXRpb25zLm1vdGlvbkZpbHRlci5jb21wbGV0ZShpKSwgaS5jdHguY2FudmFzLnN0eWxlLmZpbHRlciA9ICJub25lIiwgdHBHUy5nc2FwLnNldChhLnNsaWRlLCB7CiAgICAgICAgICAgICAgICB6SW5kZXg6IDIwCiAgICAgICAgICAgIH0pLCBkZWxldGUgaS5hbmltYXRlRGlyZWN0aW9uLCBpLmJndmlkLmxlbmd0aCA+IDAgJiYgKGkuaXNIVE1MNSB8fCAodC5yZXNldFZpZGVvKGkuYmd2aWQsIGUpLCB0LnBsYXlWaWRlbyhpLmJndmlkLCBlLCAhMCkpLCB0cEdTLmdzYXAudG8oaS5iZ3ZpZFswXSwgLjAwMSwgewogICAgICAgICAgICAgICAgekluZGV4OiAzMCwKICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIsCiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgIH0pKSksICJvdXQiID09PSBhLmRpcmVjdGlvbiA/ICh0cEdTLmdzYXAuc2V0KGEuc2xpZGUsIHsKICAgICAgICAgICAgICAgIHpJbmRleDogMTAKICAgICAgICAgICAgfSksIHRwR1MuZ3NhcC5zZXQoaS5jYW52YXMsIHsKICAgICAgICAgICAgICAgIHJvdGF0aW9uWDogMCwKICAgICAgICAgICAgICAgIHJvdGF0aW9uWTogMCwKICAgICAgICAgICAgICAgIHJvdGF0aW9uWjogMCwKICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgejogMCwKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgfSksIGkuY3VycmVudFN0YXRlID0gdm9pZCAwKSA6IGkuY3VycmVudFN0YXRlID0gImlkbGUiLCB2b2lkIDAgIT09IGkuY3ViZSAmJiAoaS5jdWJlLmMuc3R5bGUuZGlzcGxheSA9ICJub25lIiksICJpbiIgPT09IGEuZGlyZWN0aW9uICYmICh0LnVwZGF0ZVNsaWRlQkdzKGUsIGkuc2tleWluZGV4LCBpKSwgdm9pZCAwID09PSBpLnBhbnpvb20gfHwgX1JfaXNfRWRpdG9yIHx8IHQuc3RhcnRQYW5ab29tKHRbZV0ucHJfbmV4dF9iZywgZSwgdm9pZCAwICE9PSB0W2VdLnBhbnpvb21UTHNbaS5za2V5aW5kZXhdID8gdFtlXS5wYW56b29tVExzW2kuc2tleWluZGV4XS5wcm9ncmVzcygpIDogMCwgaS5za2V5aW5kZXgsICJwbGF5IiwgaS5rZXkpLCB2b2lkIDAgIT09IGEuQkcgJiYgITAgIT09IHIgJiYgYS5CRy5jdHguY2xlYXJSZWN0KDAsIDAsIDIgKiBpLmNhbnZhcy53aWR0aCwgMiAqIGkuY2FudmFzLmhlaWdodCkpKQogICAgICAgIH0sCiAgICAgICAgYW5pbWF0ZUNvcmU6IGZ1bmN0aW9uKGUsIGksIGEsIHIpIHsKICAgICAgICAgICAgdmFyIG8sIHMsIG4sIGQsIGwgPSBpLmNhbnZhcywKICAgICAgICAgICAgICAgIGMgPSBpLmN0eCwKICAgICAgICAgICAgICAgIHAgPSAwOwogICAgICAgICAgICBpZiAoaS5jb2wgPSBhLmNvbCwgaS5yb3cgPSBhLnJvdywgX1JfaXNfRWRpdG9yICYmIGkudGhyZWUpIHsKICAgICAgICAgICAgICAgIGZvciAoaS5jYW52YXMuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7IGkudGhyZWUuc2NlbmUuY2hpbGRyZW4ubGVuZ3RoID4gMDspIGkudGhyZWUuc2NlbmUucmVtb3ZlKGkudGhyZWUuc2NlbmUuY2hpbGRyZW5bMF0pOwogICAgICAgICAgICAgICAgaS50aHJlZS5jYW52YXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpLnRocmVlLmNhbnZhcyksIGkudGhyZWUgPSB2b2lkIDAKICAgICAgICAgICAgfQogICAgICAgICAgICB0LmFuaW1hdGVkQ2FudmFzVXBkYXRlKGUsIGkpLCBhLnJvdyA9IGkucm93LCBpLmFuaW1hdGVEaXJlY3Rpb24gPSByLmRpcmVjdGlvbiwgci5kZWxheSA9IHZvaWQgMCA9PT0gci5kZWxheSA/IDAgOiByLmRlbGF5LCBuID0gYS5jb2wgKiBhLnJvdywgZCA9IEFycmF5KG4pLCB2b2lkIDAgPT09IGkuaGVscF9jYW52YXMgJiYgIm91dCIgPT09IHIuZGlyZWN0aW9uICYmIHZvaWQgMCAhPT0gci5iZ0NvbG9yICYmIChpLmhlbHBfY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksIGkuaGVscF9jdHggPSBpLmhlbHBfY2FudmFzLmdldENvbnRleHQoIjJkIikpLCAib3V0IiA9PT0gci5kaXJlY3Rpb24gJiYgdm9pZCAwICE9PSByLmJnQ29sb3IgJiYgKGkuaGVscF9jYW52YXMud2lkdGggPSBpLm1ESU0ud2lkdGgsIGkuaGVscF9jYW52YXMuaGVpZ2h0ID0gaS5tRElNLmhlaWdodCwgaS5oZWxwX2N0eC5maWxsU3R5bGUgPSByLmJnQ29sb3IsIGkuaGVscF9jdHguZmlsbFJlY3QoMCwgMCwgaS5tRElNLndpZHRoLCBpLm1ESU0uaGVpZ2h0KSksIGEubW8gPSB0LnRyYW5zaXRpb25zLm1vdGlvbkZpbHRlci5pbml0KGksIGEubW8pLCBhLmR1ciA9IGEubXMgLyBhLnNlYywgdm9pZCAwICE9PSByLmQzICYmIChyLmQzLmR1ciA9IGEuZHVyLCByLmQzLmZkID0gLjcgKiBhLmR1ciwgci5kMy5tZCA9IC4xNSAqIGEuZHVyLCByLmQzLnNkaXIgPSByLnNkaXIpLCBpLlNMT1QuYyA9IHsKICAgICAgICAgICAgICAgIHdzOiAwLAogICAgICAgICAgICAgICAgaHM6IDAsCiAgICAgICAgICAgICAgICB3ZDogMCwKICAgICAgICAgICAgICAgIGhkOiAwCiAgICAgICAgICAgIH0sIGEubW8gPiAwICYmIF9SX2lzX0VkaXRvciAmJiBjLmNsZWFyUmVjdCgwLCAwLCBsLndpZHRoLCBsLmhlaWdodCk7CiAgICAgICAgICAgIHZhciBnID0gdHBHUy5nc2FwLnRpbWVsaW5lKHsKICAgICAgICAgICAgICAgIG9uVXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocCA9IDAsIGEubW8gPiAwID8gdC50cmFuc2l0aW9ucy5tb3Rpb25GaWx0ZXIucmVuZGVyKGksIGEubW9vKSA6IGMuY2xlYXJSZWN0KDAsIDAsIGwud2lkdGgsIGwuaGVpZ2h0KSwgaS5oZWxwX2NhbnZhcyAmJiAib3V0IiA9PT0gci5kaXJlY3Rpb24gJiYgYy5kcmF3SW1hZ2UoaS5oZWxwX2NhbnZhcywgMCwgMCksIChyLmZpbHRlciAmJiByLmZpbHRlci51IHx8ICFfUl9pc19FZGl0b3IpICYmIHQudHJhbnNpdGlvbnMuZmlsdGVyLnVwZGF0ZShyLmZpbHRlciwgYywgaS5jYW52YXNGaWx0ZXJCbHVyKSwgX1JfaXNfRWRpdG9yICYmIDAgIT09IGEuekluZGV4ICYmIHZvaWQgMCAhPT0gYS56SW5kZXggJiYgdHBHUy5nc2FwLnNldChyLnNsaWRlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IGEuekluZGV4CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB2b2lkIDAgIT09IGkuc2hhZG93Q2FudmFzKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSAwOyBvIDwgYS5jb2w7IG8rKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaS5TTE9ULlNYID0gaS5TTE9ULk9XICogbywgaS5TTE9ULnR3ID0gaS5TTE9ULk9XICogKG8gKyAuNSksIGkuU0xPVC5jLndkID0gaS5tRElNLndpZHRoIC0gKGkuU0xPVC50dyArIGkuU0xPVC5EWCArIGkuU0xPVC5PVyksIGkuU0xPVC5jLndkID0gaS5TTE9ULmMud2QgPCAwID8gaS5TTE9ULmMud2QgOiAwLCBpLlNMT1QuRFcgPSBpLlNMT1QuU1cgPSBpLlNMT1QuT1cgKyBpLlNMT1QuYy53ZCwgcyA9IDA7IHMgPCBhLnJvdzsgcysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zYXZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAtTWF0aC5QSSAvIDE4MCAqIGRbcF0uciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDAgIT09IGEuciA/IE1hdGguY29zKG4pICogZFtwXS5zeCA6IGRbcF0uc3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAwICE9PSBhLnIgPyBNYXRoLmNvcyhuKSAqIGRbcF0uc3kgOiBkW3BdLnN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMCAhPT0gYS5yID8gTWF0aC5zaW4obikgKiBkW3BdLnN4IDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IDAgIT09IGEuciA/IE1hdGguc2luKG4pICogLWRbcF0uc3kgOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuU0xPVC5TWSA9IGkuU0xPVC5PSCAqIHMsIGkuU0xPVC50aCA9IGkuU0xPVC5PSCAqIChzICsgLjUpLCB0LnRyYW5zaXRpb25zW3IuZWZmZWN0XSAmJiB0LnRyYW5zaXRpb25zW3IuZWZmZWN0XS5iZWZvcmVEcmF3ICYmIHQudHJhbnNpdGlvbnNbci5lZmZlY3RdLmJlZm9yZURyYXcoZSwgYywgZFtwXSwgaSksIGEubSAmJiAoYy5iZWdpblBhdGgoKSwgYy5yZWN0KGkuU0xPVC5PVyAqIG8sIGkuU0xPVC5PSCAqIHMsIGkuU0xPVC5PVywgaS5TTE9ULk9IKSwgYy5jbGlwKCkpLCBjLnRyYW5zZm9ybShnLCBoLCBtLCB1LCBpLlNMT1QudHcgKyBkW3BdLngsIGkuU0xPVC50aCArIGRbcF0ueSksIGMuZ2xvYmFsQWxwaGEgPSBNYXRoLm1heCgwLCBkW3BdLm8pLCBpLlNMT1QuYy5oZCA9IGkubURJTS5oZWlnaHQgLSAoaS5TTE9ULnRoICsgaS5TTE9ULkRZICsgaS5TTE9ULk9IKSwgaS5TTE9ULmMuaGQgPSBpLlNMT1QuYy5oZCA8IDAgPyBpLlNMT1QuYy5oZCA6IDAsIGkuU0xPVC5ESCA9IGkuU0xPVC5TSCA9IGkuU0xPVC5PSCArIGkuU0xPVC5jLmhkLCBpLlNMT1QuU1cgPiAxICYmIGkuU0xPVC5TSCA+IDEgJiYgYy5kcmF3SW1hZ2UoaS5zaGFkb3dDYW52YXMsIGkuU0xPVC5TWCwgaS5TTE9ULlNZLCBpLlNMT1QuU1csIGkuU0xPVC5TSCwgaS5TTE9ULkRYLCBpLlNMT1QuRFksIGkuU0xPVC5EVywgaS5TTE9ULkRIKSwgYy5yZXN0b3JlKCksIHQudHJhbnNpdGlvbnNbci5lZmZlY3RdICYmIHQudHJhbnNpdGlvbnNbci5lZmZlY3RdLmFmdGVyRHJhdyAmJiB0LnRyYW5zaXRpb25zW3IuZWZmZWN0XS5hZnRlckRyYXcoZSwgYywgZFtwXSwgaSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3g6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzeTogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3N4OiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc3k6IG0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgcCsrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSByLmQzICYmIHIuZDMuc3UgJiYgdC50cmFuc2l0aW9ucy5kMy50aWNrZXIoci5kMywgaSwgci5kaXJlY3Rpb24pLCBpLmN1cnJlbnRTdGF0ZSA9ICJhbmltYXRpbmciCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdC5zbGlkZUFuaW1GaW5pc2hlZChlLCBpLCByKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKGEuY29sICogYS5yb3cgPCAyICYmIChhLmYgPSAic3RhcnQiKSwgMCAhPT0gYS56SW5kZXggJiYgdm9pZCAwICE9PSBhLnpJbmRleCAmJiBnLmFkZCh0cEdTLmdzYXAuc2V0KHIuc2xpZGUsIHsKICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IHBhcnNlSW50KGEuekluZGV4LCAwKQogICAgICAgICAgICAgICAgfSksIDApLCBhLm0gPSAiZmFsc2UiICE9IGEubSAmJiAhMSAhPT0gYS5tLCAiaW4iID09PSByLmRpcmVjdGlvbikgewogICAgICAgICAgICAgICAgZm9yIChvID0gMDsgbyA8IG47IG8rKykgZFtvXSA9IHsKICAgICAgICAgICAgICAgICAgICB4OiB0LlNBVG9vbHMuZ2V0T2Zmc2V0KGEueCwgYS5tID8gaS5TTE9ULk9XIDogaS5tRElNLndpZHRoLCByLnNkaXIsIG8pLAogICAgICAgICAgICAgICAgICAgIHk6IHQuU0FUb29scy5nZXRPZmZzZXQoYS55LCBhLm0gPyBpLlNMT1QuT0ggOiBpLm1ESU0uaGVpZ2h0LCByLnNkaXIsIG8pLAogICAgICAgICAgICAgICAgICAgIG86IHQuU0FUb29scy5nZXRTcGVjaWFsVmFsdWUoYS5vLCBvLCByLnNkaXIpLAogICAgICAgICAgICAgICAgICAgIHN4OiB0LlNBVG9vbHMuZ2V0U3BlY2lhbFZhbHVlKGEuc3gsIG8sIHIuc2RpciksCiAgICAgICAgICAgICAgICAgICAgc3k6IHQuU0FUb29scy5nZXRTcGVjaWFsVmFsdWUoYS5zeSwgbywgci5zZGlyKSwKICAgICAgICAgICAgICAgICAgICByOiAwICE9PSBhLnIgPyB0LlNBVG9vbHMuZ2V0U3BlY2lhbFZhbHVlKGEuciwgbywgci5zZGlyKSA6IDAKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBnLmFkZCh0cEdTLmdzYXAudG8oZCwgYS5kdXIsIHsKICAgICAgICAgICAgICAgICAgICBvOiAxLAogICAgICAgICAgICAgICAgICAgIHN4OiAxLAogICAgICAgICAgICAgICAgICAgIHN5OiAxLAogICAgICAgICAgICAgICAgICAgIHI6IDAsCiAgICAgICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgIGVhc2U6IGEuZSwKICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogIm5vZGVsYXkiID09PSBhLmYgPyAwIDogYS5tcyAvIGEuc3Rhc2VjLAogICAgICAgICAgICAgICAgICAgICAgICBncmlkOiBbYS5jb2wsIGEucm93XSwKICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogIm5vZGVsYXkiID09PSBhLmYgPyAic3RhcnQiIDogYS5mCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIHIuZGVsYXkpLCB2b2lkIDAgIT09IHIuZDMgJiYgZy5hZGQodC50cmFuc2l0aW9ucy5kMy5jdWJlVEwoZSwgci5kMywgaSwgImluIiksIDApLCB0LnRyYW5zaXRpb25zLmZpbHRlci5leHRlbmRUaW1lTGluZShnLCByLmZpbHRlciwgaSkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBuOyBvKyspIGRbb10gPSB7CiAgICAgICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgIG86IDEsCiAgICAgICAgICAgICAgICAgICAgc3g6IDEsCiAgICAgICAgICAgICAgICAgICAgc3k6IDEsCiAgICAgICAgICAgICAgICAgICAgcjogMAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGcuYWRkKHRwR1MuZ3NhcC50byhkLCBhLmR1ciwgewogICAgICAgICAgICAgICAgICAgIG86IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuU0FUb29scy5nZXRTcGVjaWFsVmFsdWUoYS5vLCBlLCByLnNkaXIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzeDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5TQVRvb2xzLmdldFNwZWNpYWxWYWx1ZShhLnN4LCBlLCByLnNkaXIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzeTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5TQVRvb2xzLmdldFNwZWNpYWxWYWx1ZShhLnN5LCBlLCByLnNkaXIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByOiAwICE9PSBhLnIgJiYgdm9pZCAwICE9PSBhLnIgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LlNBVG9vbHMuZ2V0U3BlY2lhbFZhbHVlKGEuciwgZSwgci5zZGlyKQogICAgICAgICAgICAgICAgICAgIH0gOiAwLAogICAgICAgICAgICAgICAgICAgIHg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuU0FUb29scy5nZXRPZmZzZXQoYS54LCBhLm0gPyBpLlNMT1QuT1cgOiBpLm1ESU0ud2lkdGgsIHIuc2RpciwgZSkgKiAoYS5yZXZlcnNlZCA/IC0xIDogMSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuU0FUb29scy5nZXRPZmZzZXQoYS55LCBhLm0gPyBpLlNMT1QuT0ggOiBpLm1ESU0uaGVpZ2h0LCByLnNkaXIsIGUpICogKGEucmV2ZXJzZWQgPyAtMSA6IDEpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlYXNlOiBhLmUsCiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcjogewogICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQ6ICJub2RlbGF5IiA9PT0gYS5mID8gMCA6IGEubXMgLyBhLnN0YXNlYywKICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZDogW2EuY29sLCBhLnJvd10sCiAgICAgICAgICAgICAgICAgICAgICAgIGZyb206ICJub2RlbGF5IiA9PT0gYS5mID8gInN0YXJ0IiA6IGEuZgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCByLmRlbGF5ICsgKHZvaWQgMCAhPT0gYS5vdXRkZWxheSA/IGEub3V0ZGVsYXkgOiAwKSksIHZvaWQgMCAhPT0gci5kMyAmJiBnLmFkZCh0LnRyYW5zaXRpb25zLmQzLmN1YmVUTChlLCByLmQzLCBpLCAib3V0IiksIDApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC50cmFuc2l0aW9uc1tyLmVmZmVjdF0gJiYgdC50cmFuc2l0aW9uc1tyLmVmZmVjdF0uZXh0ZW5kVGltZUxpbmUgJiYgdC50cmFuc2l0aW9uc1tyLmVmZmVjdF0uZXh0ZW5kVGltZUxpbmUoZSwgZywgZCwgYSwgciwgaS5tRElNKSwgX1JfaXNfRWRpdG9yID8gUlZTLlRMW1JWUy5TLnNsaWRlSWRdLnNsaWRlLmFkZChnLCAwKSA6IHRbZV0ubXRsLmFkZChnLCByLmRlbGF5KQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIGEgPSBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IGkgJiYgdC5pc051bWVyaWMoaSkgPyBwYXJzZUZsb2F0KGksIDApIDogbnVsbCA9PSBpIHx8ICJkZWZhdWx0IiA9PT0gaSB8fCAiZCIgPT09IGkgPyBlIDogaQogICAgICAgIH0sCiAgICAgICAgciA9IGZ1bmN0aW9uKGUsIHQsIGksIGEsIHIsIG8pIHsKICAgICAgICAgICAgdmFyIHMgPSB7fTsKICAgICAgICAgICAgcmV0dXJuIHNbcl0gPSBNYXRoLmNlaWwoYS53aWR0aCAvIHQpLCBzW29dID0gKF9SX2lzX0VkaXRvciwgTWF0aC5jZWlsKGEuaGVpZ2h0IC8gaSkpLCBzCiAgICAgICAgfSwKICAgICAgICBvID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlIHx8IDAgPT09IGUgfHwgTmFOID09PSBlID8gMSA6IGUKICAgICAgICB9LAogICAgICAgIHMgPSBmdW5jdGlvbihlLCByKSB7CiAgICAgICAgICAgIF9SX2lzX0VkaXRvciB8fCAodFtlXS5kdXJpbmdzbGlkZWNoYW5nZSA9ICEwKTsKICAgICAgICAgICAgdmFyIHMsIG4gPSBfUl9pc19FZGl0b3IgPyAtMSA6ICJhcnJvdyIgPT0gdFtlXS5zY19pbmRpY2F0b3IgPyB2b2lkIDAgPT09IHRbZV0uc2NfaW5kaWNhdG9yX2RpciA/IHRbZV0uc2RpciA6IHRbZV0uc2NfaW5kaWNhdG9yX2RpciA6IHRbZV0uc2RpciwKICAgICAgICAgICAgICAgIGwgPSAhIV9SX2lzX0VkaXRvciB8fCB2b2lkIDAgIT09IHRbZV0ucHJfbmV4dF9iZyAmJiB0W2VdLnByX25leHRfYmcubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IHRbZV0ucHJfbmV4dF9iZ1swXSwKICAgICAgICAgICAgICAgIGMgPSAhIV9SX2lzX0VkaXRvciB8fCB2b2lkIDAgIT09IHRbZV0ucHJfYWN0aXZlX2JnICYmIHRbZV0ucHJfYWN0aXZlX2JnLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSB0W2VdLnByX2FjdGl2ZV9iZ1swXSwKICAgICAgICAgICAgICAgIGcgPSBfUl9pc19FZGl0b3IgPyBSVlMuU0JHU1tSVlMuUy5zbGlkZUlkXS5uIDogbCA/IHRbZV0uc2Jnc1t0W2VdLnByX25leHRfYmdbMF0uZGF0YXNldC5rZXldIDogdm9pZCAwLAogICAgICAgICAgICAgICAgdSA9IF9SX2lzX0VkaXRvciA/IFJWUy5TQkdTW1JWUy5TLnNsaWRlSWRdLmMgOiBjID8gdFtlXS5zYmdzW3RbZV0ucHJfYWN0aXZlX2JnWzBdLmRhdGFzZXQua2V5XSA6IHZvaWQgMDsKICAgICAgICAgICAgbiA9IDEgPT09IG4gPyAtMSA6IDEsIHMgPSBqUXVlcnkuZXh0ZW5kKCEwLCB7fSwgZnVuY3Rpb24oZSwgaSwgcikgewogICAgICAgICAgICAgICAgdmFyIHMgPSB2b2lkIDAgIT09IHQudHJhbnNpdGlvbnNbaS5hbmltLmVdICYmIHZvaWQgMCAhPT0gdC50cmFuc2l0aW9uc1tpLmFuaW0uZV0uZ2V0QmFzaWMgPyB0LnRyYW5zaXRpb25zW2kuYW5pbS5lXS5nZXRCYXNpYygpIDogdC5nZXRCYXNpYygpLAogICAgICAgICAgICAgICAgICAgIG4gPSAiIjsKICAgICAgICAgICAgICAgIHMub3V0ID0gbnVsbCA9PSBzLm91dCA/IHt9IDogcy5vdXQsIHMub3V0LnJldmVyc2VkID0gdm9pZCAwID09PSBpLm91dCAmJiAodm9pZCAwID09PSBzLm91dC5yZXZlcnNlZCB8fCBzLm91dC5yZXZlcnNlZCk7CiAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGkuaXcgJiYgcGFyc2VJbnQoaS5pdywgMCksIHZvaWQgMCAhPT0gaS5vdyAmJiBwYXJzZUludChpLm93LCAwKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGQgaW4gcy5hdHRyKSBuID0gcy5hdHRyW2RdLCBzLmluW25dID0gYShzLmluW25dLCBpLmluW25dKSwgcy5vdXRbbl0gPSBzLm91dC5yZXZlcnNlZCA/IHMuaW5bbl0gOiB2b2lkIDAgPT09IGkub3V0ID8gcy5vdXRbbl0gOiBhKHMub3V0W25dLCBpLm91dFtuXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcy5maWx0ZXIgPSB2b2lkIDAgIT09IGkuZmlsdGVyID8galF1ZXJ5LmV4dGVuZCghMCwgaS5maWx0ZXIsIGkuZmlsdGVyKSA6IHMuZmlsdGVyLCB0LnRyYW5zaXRpb25zW2kuYW5pbS5lXSAmJiB0LnRyYW5zaXRpb25zW2kuYW5pbS5lXS51cGRhdGVBbmltICYmIChzID0gdC50cmFuc2l0aW9uc1tpLmFuaW0uZV0udXBkYXRlQW5pbShlLCBzLCByKSksIHMuZSA9IGkuYW5pbS5lLCB2b2lkIDAgIT09IHMuaW4gJiYgKHMuaW4uY29sID0gInJhbmRvbSIgPT09IHMuaW4uY29sID8gdHBHUy5nc2FwLnV0aWxzLnJhbmRvbSgxLCAxMCwgMSkgOiBvKHMuaW4uY29sKSwgcy5pbi5yb3cgPSAicmFuZG9tIiA9PT0gcy5pbi5yb3cgPyB0cEdTLmdzYXAudXRpbHMucmFuZG9tKDEsIDEwLCAxKSA6IG8ocy5pbi5yb3cpKSwgdm9pZCAwICE9PSBzLm91dCAmJiAocy5vdXQuY29sID0gInJhbmRvbSIgPT09IHMub3V0LmNvbCA/IHRwR1MuZ3NhcC51dGlscy5yYW5kb20oMSwgMTAsIDEpIDogbyhzLm91dC5jb2wpLCBzLm91dC5yb3cgPSAicmFuZG9tIiA9PT0gcy5vdXQucm93ID8gdHBHUy5nc2FwLnV0aWxzLnJhbmRvbSgxLCAxMCwgMSkgOiBvKHMub3V0LnJvdykpLCBzCiAgICAgICAgICAgIH0oZSwgciwgbikpLCB2b2lkIDAgIT09IGcucmFuZG9tICYmIHZvaWQgMCAhPT0gdC5TTFRSICYmIHZvaWQgMCAhPT0gdSAmJiAoZGVsZXRlIHUuaGVscF9jYW52YXMsIGRlbGV0ZSB1LmhlbHBfY3R4KSwgcy5tcyA9IGEodm9pZCAwLCB2b2lkIDAgPT09IHIuYW5pbS5tcyA/IDFlMyA6IHIuYW5pbS5tcyksIHMuZiA9IGEodm9pZCAwLCByLmFuaW0uZiksIHMucCA9IGEodm9pZCAwLCByLmFuaW0ucCksIHMuZCA9IGEodm9pZCAwLCByLmFuaW0uZCksIHMubyA9IHIuYW5pbS5vLCB2b2lkIDAgIT09IHIuZDMgJiYgKHIuZDMudCA9IHZvaWQgMCAhPT0gci5kMy50ICYmIDAgIT09IHIuZDMudCAmJiByLmQzLnQsIHIuZDMuc3UgPSAidHJ1ZSIgPT0gci5kMy5zdSB8fCAxID09IHIuZDMuc3UsIHIuZDMuc3UgJiYgKHIuZDMuc21pID0gdm9pZCAwID09PSByLmQzLnNtaSA/IDAgOiBwYXJzZUZsb2F0KHIuZDMuc21pKSwgci5kMy5zbCA9IHZvaWQgMCA9PT0gci5kMy5zbCA/IDEgOiBwYXJzZUZsb2F0KHIuZDMuc2wpLCByLmQzLnNtYSA9IHZvaWQgMCA9PT0gci5kMy5zbWEgPyAuNSA6IHBhcnNlRmxvYXQoci5kMy5zbWEpLCByLmQzLnNjID0gdm9pZCAwID09PSByLmQzLnNjID8gIjAsMCwwIiA6IHRwR1MuZ3NhcC51dGlscy5zcGxpdENvbG9yKHIuZDMuc2MpLmpvaW4oIiwiKSksIHMucCA9ICJub25lIiwgdm9pZCAwICE9PSBzLmluLnJvdyAmJiB2b2lkIDAgIT09IHMuaW4uY29sICYmIHMuaW4ucm93ICogcy5pbi5jb2wgPiAyMDAgJiYgKHMuZmlsdGVyID0gdm9pZCAwKSksIHMuaW4uc2VjID0gdm9pZCAwID09PSBzLmluLnNlYyA/IDFlMyA6IHMuaW4uc2VjLCBzLmluLnN0YXNlYyA9IHZvaWQgMCA9PT0gcy5pbi5zdGFzZWMgPyB2b2lkIDAgPT09IHMuZCA/IDE1MDAgOiAxMDAgKiBzLmQgOiBzLmluLnN0YXNlYywgcy5pbi5tcyA9ICJkZWZhdWx0IiA9PT0gcy5tcyB8fCAiZCIgPT09IHMubXMgPyBzLmluLm1zIDogInJhbmRvbSIgPT09IHMubXMgPyBNYXRoLnJvdW5kKDFlMyAqIE1hdGgucmFuZG9tKCkgKyAzMDApIDogbnVsbCAhPSBzLm1zID8gcGFyc2VJbnQocy5tcywgMCkgOiBzLmluLm1zLCBzLm91dC5tcyA9IHMuaW4ubXMsIHZvaWQgMCAhPT0gcy5maWx0ZXIgJiYgKHMuZmlsdGVyLm1zID0gcy5pbi5tcywgcy5maWx0ZXIuc2VjID0gcy5pbi5zZWMsIHMuZmlsdGVyLmUgPSB2b2lkIDAgPT09IHMuZmlsdGVyLmUgfHwgImRlZmF1bHQiID09PSBzLmZpbHRlci5lID8gcy5pbi5lIDogcy5maWx0ZXIuZSksIHMuaW4uZiA9IHZvaWQgMCA9PT0gcy5mIHx8ICJkZWZhdWx0IiA9PT0gcy5mIHx8ICJkIiA9PT0gcy5mID8gcy5pbi5mIDogcy5mLCBzLmluLmYgPSAic2xpZGViYXNlZCIgPT09IHMuaW4uZiA/IDEgPT0gbiA/ICJzdGFydCIgOiAiZW5kIiA6ICJvcHBzbGlkZWJhc2VkIiA9PT0gcy5pbi5mID8gMSA9PT0gbiA/ICJlbmQiIDogInN0YXJ0IiA6IHMuaW4uZiwgcy5vdXQuZiA9IHMuaW4uZiwgcy5vdXQgPSBqUXVlcnkuZXh0ZW5kKCEwLCB7fSwgcy5pbiwgcy5vdXQpLCBzLmluLmVuZyA9IHMub3V0LmVuZyA9IHIuYW5pbS5lbmcsIHZvaWQgMCAhPT0gcy5wICYmICJub25lIiAhPT0gcy5wICYmIChzLmluLmJnID0gImRhcmsiID09PSBzLnAgPyAiIzAwMCIgOiAibGlnaHQiID09PSBzLnAgPyAiI2ZmZiIgOiAidHJhbnNwYXJlbnQiLCBzLm91dC5kZWxheSA9ICJub25lIiAhPT0gcy5wID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUgLyAyLjUKICAgICAgICAgICAgfSA6IDAsIDEgPT09IHMub3V0Lm8gJiYgMCA9PT0gcy5vdXQueCAmJiAwID09PSBzLm91dC55ICYmIChzLm91dC5vID0gMCkpLCAiZm9yY2Vpbm91dCIgPT09IHMubyA/IChzLmluLnpJbmRleCA9IDIwLCBzLm91dC56SW5kZXggPSAxMCkgOiAib3V0aW4iICE9PSBzLm8gJiYgKDEgIT09IHMuaW4ubyB8fCAwICE9PSBzLmluLnggfHwgMCAhPT0gcy5pbi55IHx8IHZvaWQgMCA9PT0gci5vdXQgfHwgMSA9PT0gcy5vdXQubyAmJiAwID09PSBzLm91dC54ICYmIDAgPT09IHMub3V0LnkpIHx8IChzLmluLnpJbmRleCA9IDEwLCBzLm91dC56SW5kZXggPSAyMCksIGcuYmd2aWQubGVuZ3RoID4gMCAmJiAocy5pbiA9IHAoZSwgcy5pbiwgZywgImluIikpLCBjICYmIHZvaWQgMCAhPT0gdS5iZ3ZpZCAmJiB1LmJndmlkLmxlbmd0aCA+IDAgJiYgKHMub3V0ID0gcChlLCBzLm91dCwgdSwgIm91dCIpKSwgdm9pZCAwICE9PSBzLm91dCAmJiAocy5vdXQuc2ltcGxpZnkgfHwgcy5pbi5zaW1wbGlmeSkgJiYgKHMub3V0ID0gZChzLm91dCkpLCBzLmluLnNpbXBsaWZ5ICYmIChzLmluID0gZChzLmluKSksIF9SX2lzX0VkaXRvciB8fCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0LmdlbmVyYWxPYnNlcnZlcihpLCAhMCkKICAgICAgICAgICAgfSksIHMuaW4uZW5nID0gdm9pZCAwID09PSBzLmluLmVuZyA/ICJhbmltYXRlQ29yZSIgOiBzLmluLmVuZywgcy5vdXQuZW5nID0gdm9pZCAwID09PSBzLm91dC5lbmcgPyAiYW5pbWF0ZUNvcmUiIDogcy5vdXQuZW5nLCBjICYmICEwICE9PSBzLm91dC5za2lwICYmIHRbcy5vdXQuZW5nXShlLCB1LCBzLm91dCwgewogICAgICAgICAgICAgICAgZWZmZWN0OiBzLmUsCiAgICAgICAgICAgICAgICBzbGlkZTogX1JfaXNfRWRpdG9yID8gUlZTLlNCR1NbUlZTLlMuc2xpZGVJZF0uYy5zYmcgOiB0W2VdLnByX2FjdGl2ZV9zbGlkZSwKICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogIm91dCIsCiAgICAgICAgICAgICAgICBkZWxheTogMCwKICAgICAgICAgICAgICAgIGJnQ29sb3I6IHMuaW4uYmcsCiAgICAgICAgICAgICAgICBzZGlyOiBuLAogICAgICAgICAgICAgICAgZmlsdGVyOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBkMzogci5kMywKICAgICAgICAgICAgICAgIGFkZE9uczogX1JfaXNfRWRpdG9yID8gci5hZGRPbnMgOiB2b2lkIDAKICAgICAgICAgICAgfSksICEwICE9PSBzLmluLnNraXAgJiYgdFtzLmluLmVuZ10oZSwgZywgcy5pbiwgewogICAgICAgICAgICAgICAgZWZmZWN0OiBzLmUsCiAgICAgICAgICAgICAgICBzbGlkZTogX1JfaXNfRWRpdG9yID8gUlZTLlNCR1NbUlZTLlMuc2xpZGVJZF0ubi5zYmcgOiB0W2VdLnByX25leHRfc2xpZGUsCiAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICJpbiIsCiAgICAgICAgICAgICAgICBkZWxheTogYyA/ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHMub3V0LmRlbGF5ID8gcy5vdXQuZGVsYXkocy5pbi5tcyAvIDFlMywgcy5vdXQucm93ICogcy5vdXQuY29sKSA6IHMub3V0LmRlbGF5IDogcy5pbi5kZWxheSwKICAgICAgICAgICAgICAgIEJHOiB1LAogICAgICAgICAgICAgICAgb3V0c2xpZGU6IF9SX2lzX0VkaXRvciA/IFJWUy5TQkdTW1JWUy5TLnNsaWRlSWRdLmMuc2JnIDogdFtlXS5wcl9hY3RpdmVfc2xpZGUsCiAgICAgICAgICAgICAgICBzZGlyOiBuLAogICAgICAgICAgICAgICAgZmlsdGVyOiBzLmZpbHRlciwKICAgICAgICAgICAgICAgIGQzOiByLmQzLAogICAgICAgICAgICAgICAgYWRkT25zOiBfUl9pc19FZGl0b3IgPyByLmFkZE9ucyA6IHZvaWQgMAogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgbiA9IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgdmFyIHIgPSBlLmhlaWdodCAvIGUud2lkdGg7CiAgICAgICAgICAgIGlmIChhLnJhdGlvID0gYS5jb250aCAvIGEuY29udHcsIGEucmF0aW8gPCByICYmICJjb250YWluIiA9PT0gaS5iZ2ZpdCB8fCBhLnJhdGlvID4gciAmJiAiY292ZXIiID09PSBpLmJnZml0KSBhLmhlaWdodCA9IGUud2lkdGggKiBhLnJhdGlvOwogICAgICAgICAgICBlbHNlIGlmIChhLnJhdGlvID4gciAmJiAiY29udGFpbiIgPT09IGkuYmdmaXQgfHwgYS5yYXRpbyA8IHIgJiYgImNvdmVyIiA9PT0gaS5iZ2ZpdCkgYS53aWR0aCA9IGUud2lkdGggKiByIC8gYS5yYXRpbzsKICAgICAgICAgICAgZWxzZSBpZiAoYS5yYXRpbyAhPT0gciB8fCAiY29udGFpbiIgIT09IGkuYmdmaXQgJiYgImNvdmVyIiAhPT0gaS5iZ2ZpdCkgewogICAgICAgICAgICAgICAgdmFyIG8gPSBpLmJnZml0LnNwbGl0KCIgIik7CiAgICAgICAgICAgICAgICAxID09PSBvLmxlbmd0aCAmJiAob1sxXSA9IG9bMF0pLCBhLndpZHRoID0gImF1dG8iID09PSBvWzBdID8gYS5jb250dyA6IGUud2lkdGggKiAocGFyc2VJbnQob1swXSwgMCkgLyAxMDApLCBhLmhlaWdodCA9ICJhdXRvIiA9PT0gb1sxXSA/IGEuY29udGggOiBhLndpZHRoICogYS5yYXRpbywgaS51c2VwYXR0ZXJuID0gITAKICAgICAgICAgICAgfSBlbHNlIGEud2lkdGggPSBlLndpZHRoOwogICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiAxID09PSAoYSA9IGEuc3BsaXQoIiAiKSkubGVuZ3RoICYmIChhWzFdID0gYVswXSksIHsKICAgICAgICAgICAgICAgICAgICB4OiAiY2VudGVyIiA9PT0gYVswXSB8fCAiNTAlIiA9PT0gYVswXSA/IChlLndpZHRoIC0gaS53aWR0aCkgLyAyIDogImxlZnQiID09PSBhWzBdID8gMCA6ICJyaWdodCIgPT09IGFbMF0gPyBlLndpZHRoIC0gaS53aWR0aCA6IHQuaXNOdW1lcmljKGFbMF0pID8gMCA6IGFbMF0uaW5kZXhPZigiJSIpID49IDAgPyBwYXJzZUludChhWzBdLCAwKSAvIDEwMCAqIGUud2lkdGggLSBwYXJzZUludChhWzBdLCAwKSAvIDEwMCAqIGkud2lkdGggOiBwYXJzZUludChhWzBdLCAwKSwKICAgICAgICAgICAgICAgICAgICB5OiAiY2VudGVyIiA9PT0gYVsxXSB8fCAiNTAlIiA9PT0gYVsxXSA/IChlLmhlaWdodCAtIGkuaGVpZ2h0KSAvIDIgOiAidG9wIiA9PT0gYVsxXSA/IDAgOiAiYm90dG9tIiA9PT0gYVsxXSA/IGUuaGVpZ2h0IC0gaS5oZWlnaHQgOiB0LmlzTnVtZXJpYyhhWzFdKSA/IDAgOiBhWzFdLmluZGV4T2YoIiUiKSA+PSAwID8gcGFyc2VJbnQoYVsxXSwgMCkgLyAxMDAgKiBlLmhlaWdodCAtIHBhcnNlSW50KGFbMV0sIDApIC8gMTAwICogaS5oZWlnaHQgOiBwYXJzZUludChhWzFdLCAwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KGUsIGEsIGkuYmdwb3NpdGlvbik7CiAgICAgICAgICAgIHJldHVybiBhLnggPSBzLngsIGEueSA9IHMueSwgYQogICAgICAgIH0sCiAgICAgICAgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUubyA9IDAsIGUuciA9IDAsIGUucm93ID0gMSwgZS5jb2wgPSAxLCBlLnggPSAwLCBlLnkgPSAwLCBlLnN4ID0gMSwgZS5zeSA9IDEsIGUKICAgICAgICB9LAogICAgICAgIGwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlID0gImZhbHNlIiAhPT0gZSAmJiAhMSAhPT0gZSAmJiAib2ZmIiAhPT0gZSAmJiB2b2lkIDAgIT09IGUgJiYgMCAhPT0gZSAmJiAtMSAhPT0gZQogICAgICAgIH0sCiAgICAgICAgYyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnRvU3RyaW5nKDE2KTsKICAgICAgICAgICAgcmV0dXJuIDEgPT0gdC5sZW5ndGggPyAiMCIgKyB0IDogdAogICAgICAgIH0sCiAgICAgICAgcCA9IGZ1bmN0aW9uKGUsIGksIGEsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIGkuc2tpcCA9ICExLCAiaW4iID09PSByID8gYS5pc0hUTUw1ID8gKGEuYmd2aWRbMF0uc3R5bGUuZGlzcGxheSA9ICJub25lIiwgdC5yZXNldFZpZGVvKGEuYmd2aWQsIGUpLCBhLmFuaW1hdGVEaXJlY3Rpb24gPSAiaW4iLCBhLmN1cnJlbnRTdGF0ZSA9ICJhbmltYXRpbmciLCBhLmRyYXdWaWRlb0NhbnZhc0ltYWdlc1JlY2FsbCA9ICEwLCB0LnVwZGF0ZVZpZGVvRnJhbWVzKGUsIGEsICEwKSwgdC5wbGF5VmlkZW8oYS5iZ3ZpZCwgZSkpIDogKHRbZV0udmlkZW9zW2EuYmd2aWRbMF0uaWRdLnBhdXNlQ2FsbGVkID0gITEsIGkud2FpdFRvU2xpZGVUcmFucyA9IHRbZV0udmlkZW9zW2EuYmd2aWRbMF0uaWRdLndhaXRUb1NsaWRlVHJhbnMsICEwICE9PSBhLnBvc3RlciA/ICh0LnJlc2V0VmlkZW8oYS5iZ3ZpZCwgZSksIHRbZV0udmlkZW9zW2EuYmd2aWRbMF0uaWRdLnByZVBsYXlGb3JhV2hpbGUgPSAhMSwgITAgIT09IGkud2FpdFRvU2xpZGVUcmFucyAmJiB0LnBsYXlWaWRlbyhhLmJndmlkLCBlLCAhMCksIHRwR1MuZ3NhcC5mcm9tVG8oYS5iZ3ZpZCwgaS5tcyAvIGkuc2VjLCB7CiAgICAgICAgICAgICAgICB6SW5kZXg6IDMwLAogICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIiwKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgIHpJbmRleDogMzAsCiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiYmxvY2siCiAgICAgICAgICAgIH0pLCBhLmxvYWRvYmouYmdDb2xvciA9ICEwLCBhLmJnY29sb3IgPSAiIzAwMCIsIGkuc2ltcGxpZnkgPSAhMCkgOiAodFtlXS52aWRlb3NbYS5iZ3ZpZFswXS5pZF0ucHJlUGxheUZvcmFXaGlsZSA9ICExLCB0LnJlc2V0VmlkZW8oYS5iZ3ZpZCwgZSksIHQucGxheVZpZGVvKGEuYmd2aWQsIGUpLCBhLmJndmlkWzBdLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIsIGEuYmd2aWRbMF0uc3R5bGUuekluZGV4ID0gMCwgYS5iZ3ZpZFswXS5zdHlsZS5vcGFjaXR5ID0gMCkpIDogIm91dCIgPT09IHIgJiYgKGEuaXNIVE1MNSA/IChhLmN1cnJlbnRTdGF0ZSA9ICJhbmltYXRpbmciLCBhLmRyYXdWaWRlb0NhbnZhc0ltYWdlc1JlY2FsbCA9ICEwLCB0LnVwZGF0ZVZpZGVvRnJhbWVzKGUsIGEsICEwKSwgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRwR1MuZ3NhcC50byhhLmJndmlkLCAuMSwgewogICAgICAgICAgICAgICAgICAgIHpJbmRleDogMCwKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAibm9uZSIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pKSA6ICh0LnN0b3BWaWRlbyhhLmJndmlkLCBlLCAhMCksICEwICE9PSBhLnBvc3RlciAmJiAoYS5sb2Fkb2JqLmJnQ29sb3IgPSAhMCwgYS5iZ2NvbG9yID0gIiMwMDAiKSkpLCBpCiAgICAgICAgfSwKICAgICAgICBnID0gZnVuY3Rpb24oZSwgdCwgaSwgYSkgewogICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KGUgLSBpLCAyKSArIE1hdGgucG93KHQgLSBhLCAyKSkKICAgICAgICB9LAogICAgICAgIHUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBpID0gdCArIE1hdGguUEkgLyAyOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgeDE6IGUueCwKICAgICAgICAgICAgICAgIHkxOiBlLnksCiAgICAgICAgICAgICAgICB4MjogZS54ICsgMTAwICogTWF0aC5jb3MoaSksCiAgICAgICAgICAgICAgICB5MjogZS55ICsgMTAwICogTWF0aC5zaW4oaSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIGkgPSBlLnkyIC0gZS55MSwKICAgICAgICAgICAgICAgIGEgPSBlLngxIC0gZS54MiwKICAgICAgICAgICAgICAgIHIgPSBpICogZS54MSArIGEgKiBlLnkxLAogICAgICAgICAgICAgICAgbyA9IHQueTIgLSB0LnkxLAogICAgICAgICAgICAgICAgcyA9IHQueDEgLSB0LngyLAogICAgICAgICAgICAgICAgbiA9IG8gKiB0LngxICsgcyAqIHQueTEsCiAgICAgICAgICAgICAgICBkID0gaSAqIHMgLSBvICogYTsKICAgICAgICAgICAgcmV0dXJuIDAgIT09IGQgJiYgewogICAgICAgICAgICAgICAgeDogTWF0aC5yb3VuZCgocyAqIHIgLSBhICogbikgLyBkICogMTAwKSAvIDEwMCwKICAgICAgICAgICAgICAgIHk6IE1hdGgucm91bmQoKGkgKiBuIC0gbyAqIHIpIC8gZCAqIDEwMCkgLyAxMDAKICAgICAgICAgICAgfQogICAgICAgIH0KfShqUXVlcnkpLApmdW5jdGlvbihlKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgdCA9IGpRdWVyeS5mbi5yZXZvbHV0aW9uLAogICAgICAgIGkgPSB0LmlzX21vYmlsZSgpOwogICAgdC5pc19hbmRyb2lkKCk7CgogICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IC0xIDogdC5pc051bWVyaWMoZSkgPyBlIDogZS5zcGxpdCgiOiIpLmxlbmd0aCA+IDEgPyA2MCAqIHBhcnNlSW50KGUuc3BsaXQoIjoiKVswXSwgMCkgKyBwYXJzZUludChlLnNwbGl0KCI6IilbMV0sIDApIDogZQogICAgfQogICAgalF1ZXJ5LmV4dGVuZCghMCwgdCwgewogICAgICAgIHByZUxvYWRBdWRpbzogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICB0W2ldLnZpZGVvcyA9IHZvaWQgMCA9PT0gdFtpXS52aWRlb3MgPyB7fSA6IHRbaV0udmlkZW9zLCBlLmZpbmQoIi5ycy1sYXllci1hdWRpbyIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGpRdWVyeSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICByID0gdFtpXS52aWRlb3NbYVswXS5pZF0gPSB2b2lkIDAgPT09IHRbaV0udmlkZW9zW2FbMF0uaWRdID8geShhLmRhdGEoKSwgImF1ZGlvIiwgdC5nQShlWzBdLCAia2V5IikpIDogdFtpXS52aWRlb3NbYVswXS5pZF0sCiAgICAgICAgICAgICAgICAgICAgbyA9IHt9OwogICAgICAgICAgICAgICAgMCA9PT0gYS5maW5kKCJhdWRpbyIpLmxlbmd0aCAmJiAoby5zcmMgPSBudWxsICE9IHIubXA0ID8gci5tcDQgOiAiIiwgby5wcmUgPSByLnBsb2FkIHx8ICIiLCB0aGlzLmlkID0gdm9pZCAwID09PSB0aGlzLmlkIHx8ICIiID09PSB0aGlzLmlkID8gYS5hdHRyKCJhdWRpby1sYXllci0iICsgTWF0aC5yb3VuZCgxOTk5OTkgKiBNYXRoLnJhbmRvbSgpKSkgOiB0aGlzLmlkLCBvLmlkID0gdGhpcy5pZCwgby5zdGF0dXMgPSAicHJlcGFyZWQiLCBvLnN0YXJ0ID0galF1ZXJ5Lm5vdygpLCBvLndhaXR0aW1lID0gdm9pZCAwICE9PSByLnBsb2Fkd2FpdCA/IDFlMyAqIHIucGxvYWR3YWl0IDogNWUzLCAiYXV0byIgIT0gby5wcmUgJiYgImNhbnBsYXl0aHJvdWdoIiAhPSBvLnByZSAmJiAiY2FucGxheSIgIT0gby5wcmUgJiYgInByb2dyZXNzIiAhPSBvLnByZSB8fCAodm9pZCAwID09PSB0W2ldLmF1ZGlvcXVldWUgJiYgKHRbaV0uYXVkaW9xdWV1ZSA9IFtdKSwgdFtpXS5hdWRpb3F1ZXVlLnB1c2gobyksIHQubWFuYWdlVmlkZW9MYXllcihhLCBpLCB0LmdBKGVbMF0sICJrZXkiKSwgITApKSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHByZUxvYWRBdWRpb0RvbmU6IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgdmFyIHIgPSB0W2ldLnZpZGVvc1tlWzBdLmlkXTsKICAgICAgICAgICAgdFtpXS5hdWRpb3F1ZXVlICYmIHRbaV0uYXVkaW9xdWV1ZS5sZW5ndGggPiAwICYmIGpRdWVyeS5lYWNoKHRbaV0uYXVkaW9xdWV1ZSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgci5tcDQgIT09IHQuc3JjIHx8IHQucHJlICE9PSBhICYmICJhdXRvIiAhPT0gdC5wcmUgfHwgKHQuc3RhdHVzID0gImxvYWRlZCIpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjaGVja2Z1bGxzY3JlZW5FbmFibGVkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHdpbmRvdy5mdWxsU2NyZWVuKSByZXR1cm4gd2luZG93LmZ1bGxTY3JlZW47CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGRvY3VtZW50LmZ1bGxzY3JlZW4pIHJldHVybiBkb2N1bWVudC5mdWxsc2NyZWVuOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBkb2N1bWVudC5tb3pGdWxsU2NyZWVuKSByZXR1cm4gZG9jdW1lbnQubW96RnVsbFNjcmVlbjsKICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gZG9jdW1lbnQud2Via2l0SXNGdWxsU2NyZWVuKSByZXR1cm4gZG9jdW1lbnQud2Via2l0SXNGdWxsU2NyZWVuOwogICAgICAgICAgICB2YXIgaSA9IHQuaXNXZWJraXQoKSAmJiAvQXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2aWdhdG9yLnZlbmRvcikgPyA0MiA6IDU7CiAgICAgICAgICAgIHJldHVybiBzY3JlZW4ud2lkdGggPT0gdC53aW5XICYmIE1hdGguYWJzKHNjcmVlbi5oZWlnaHQgLSB0LmdldFdpbkgoZSkpIDwgaQogICAgICAgIH0sCiAgICAgICAgc2hvd1ZpZGVvOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRwR1MuZ3NhcC50byhlLCAuMywgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIsCiAgICAgICAgICAgICAgICBlYXNlOiAicG93ZXIzLmluT3V0IgogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgcmVzZXRWaWRlbzogZnVuY3Rpb24oZSwgYSwgcikgewogICAgICAgICAgICBpZiAoInVwZGF0ZUFuZFJlc2l6ZSIgIT09IHIpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gdFthXS52aWRlb3NbZVswXS5pZF07CiAgICAgICAgICAgICAgICBpZiAoInJlc2V0VmlkZW8iICE9PSBvLmNSUykgc3dpdGNoIChvLmNSUyA9ICJyZXNldFZpZGVvIiwgby50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAieW91dHViZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIG8ucndkICYmIG51bGwgIT0gby5wbGF5ZXIgJiYgdm9pZCAwICE9PSBvLnBsYXllci5zZWVrVG8gJiYgKG8ucGxheWVyLnNlZWtUbygtMSA9PSBvLnNzZWMgPyAwIDogby5zc2VjKSwgby5wbGF5ZXIucGF1c2VWaWRlbygpKSwgby5iZ3ZpZGVvIHx8ICJwcmVzZXQiID09PSByIHx8IDAgIT0gby5qc3Bvc3Rlci5sZW5ndGggfHwgdC5zaG93VmlkZW8oZS5maW5kKCJpZnJhbWUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInZpbWVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBvLnZpbWVvcGxheWVyICYmIG8ucndkICYmICgwICE9PSBvLnNzZWMgJiYgLTEgIT09IG8uc3NlYyB8fCBvLmJndmlkZW8gfHwgby5qc3Bvc3Rlci5sZW5ndGggPiAwKSAmJiAoby52aW1lb3BsYXllci5zZXRDdXJyZW50VGltZSgtMSA9PSBvLnNzZWMgPyAwIDogby5zc2VjKSwgby52aW1lb3BsYXllci5wYXVzZSgpKSwgMCAhPSBvLmpzcG9zdGVyLmxlbmd0aCB8fCBvLmJndmlkZW8gfHwgInByZXNldCIgPT09IHIgfHwgdC5zaG93VmlkZW8oZS5maW5kKCJpZnJhbWUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImh0bWw1IjoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgJiYgby5ub3Rvbm1vYmlsZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBvLmJndmlkZW8gfHwgdC5zaG93VmlkZW8oby5qdmlkZW8pLCBvLnJ3ZCAmJiAicGxheWluZyIgIT09IG8uY1NTICYmICFpc05hTihvLnZpZGVvLmR1cmF0aW9uKSAmJiAoby5qdXN0UmVzZXRlZCA9ICEwLCBvLnZpZGVvLmN1cnJlbnRUaW1lID0gLTEgPT0gby5zc2VjID8gMCA6IG8uc3NlYyksICgibXV0ZSIgPT0gby52b2x1bWUgfHwgdC5sYXN0VG9nZ2xlU3RhdGUoZS52aWRlb211dGV0b2dnbGVkYnkpIHx8ICEwID09PSB0W2FdLmdsb2JhbG11dGUpICYmIChvLnZpZGVvLm11dGVkID0gITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIE11dGU6IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgdmFyIHIgPSAhMSwKICAgICAgICAgICAgICAgIG8gPSB0W2ldLnZpZGVvc1tlWzBdLmlkXTsKICAgICAgICAgICAgc3dpdGNoIChvLnR5cGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgInlvdXR1YmUiOgogICAgICAgICAgICAgICAgICAgIG8ucGxheWVyICYmICghMCA9PT0gYSAmJiBvLnBsYXllci5tdXRlKCksICExID09PSBhICYmIGQobywgcGFyc2VJbnQoby52b2xjYWNoZSwgMCkpLCByID0gby5wbGF5ZXIuaXNNdXRlZCgpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInZpbWVvIjoKICAgICAgICAgICAgICAgICAgICBvLnZvbGNhY2hlY2hlY2sgfHwgKG8udm9sY2FjaGUgPSBvLnZvbGNhY2hlID4gMSA/IG8udm9sY2FjaGUgLyAxMDAgOiBvLnZvbGNhY2hlLCBvLnZvbGNhY2hlY2hlY2sgPSAhMCksIG8udm9sdW1lID0gITAgPT09IGEgPyAibXV0ZSIgOiAhMSA9PT0gYSA/IG8udm9sY2FjaGUgOiBvLnZvbHVtZSwgdm9pZCAwICE9PSBhICYmIG51bGwgIT0gby52aW1lb3BsYXllciAmJiBuKG8sICEwID09PSBhID8gMCA6IG8udm9sY2FjaGUpLCByID0gIm11dGUiID09IG8udm9sdW1lIHx8IDAgPT09IG8udm9sdW1lOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiaHRtbDUiOgogICAgICAgICAgICAgICAgICAgIG8udm9sY2FjaGVjaGVjayB8fCAoby52b2xjYWNoZSA9IG8udm9sY2FjaGUgPiAxID8gby52b2xjYWNoZSAvIDEwMCA6IG8udm9sY2FjaGUsIG8udm9sY2FjaGVjaGVjayA9ICEwKSwgby52aWRlby52b2x1bWUgPSBvLnZvbGNhY2hlLCB2b2lkIDAgIT09IGEgJiYgby52aWRlbyAmJiAoby52aWRlby5tdXRlZCA9IGEpLCByID0gdm9pZCAwICE9PSBvLnZpZGVvID8gby52aWRlby5tdXRlZCA6IHIKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodm9pZCAwID09PSBhKSByZXR1cm4gcgogICAgICAgIH0sCiAgICAgICAgc3RvcFZpZGVvOiBmdW5jdGlvbihlLCBhLCByKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHRbYV0gJiYgdm9pZCAwICE9PSB0W2FdKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IHRbYV0udmlkZW9zW2VbMF0uaWRdOwogICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gbyAmJiAoInN0b3BWaWRlbyIgIT09IG8uY1JTIHx8ICJwYXVzZWQiICE9PSBvLmNTUykpIHN3aXRjaCAoby5jUlMgPSAic3RvcFZpZGVvIiwgdFthXS5sZWF2ZVZpZXdQb3J0QmFzZWRTdG9wIHx8ICh0W2FdLmxhc3RwbGF5ZWR2aWRlb3MgPSBbXSksIHRbYV0ubGVhdmVWaWV3UG9ydEJhc2VkU3RvcCA9ICExLCBvLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ5b3V0dWJlIjoKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBvLnBsYXllciAmJiAyICE9PSBvLnBsYXllci5nZXRQbGF5ZXJTdGF0ZSgpICYmIDUgIT09IG8ucGxheWVyLmdldFBsYXllclN0YXRlKCkgJiYgKG8ucGxheWVyLnBhdXNlVmlkZW8oKSwgdm9pZCAwICE9PSByICYmIGcoYSwgbywgImhpZGUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInZpbWVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBvLnZpbWVvcGxheWVyICYmIChvLnZpbWVvcGxheWVyLnBhdXNlKCksIHZvaWQgMCAhPT0gciAmJiBnKGEsIG8sICJoaWRlIikpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJodG1sNSI6CiAgICAgICAgICAgICAgICAgICAgICAgIG8udmlkZW8gJiYgKG8udmlkZW8ucGF1c2UoKSwgaSAmJiBfKG8sIDEpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBwbGF5VmlkZW86IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgdmFyIG8gPSB0W2ldLnZpZGVvc1tlWzBdLmlkXTsKICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChvLnZpZGVvcGxheXdhaXQpLCAicGxheVZpZGVvIiAhPT0gby5jUlMgfHwgInBsYXlpbmciICE9PSBvLmNTUykgc3dpdGNoIChvLmNSUyA9ICJwbGF5VmlkZW8iLCBvLnR5cGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgInlvdXR1YmUiOgogICAgICAgICAgICAgICAgICAgIGlmICgwID09IGUuZmluZCgiaWZyYW1lIikubGVuZ3RoKSBlLmFwcGVuZChvLnZpZGVvbWFya3VwKSwgaChlLCBpLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodm9pZCAwICE9PSBvLnBsYXllciAmJiBudWxsICE9IG8ucGxheWVyLnBsYXlWaWRlbykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG8ucGxheWVyLmdldEN1cnJlbnRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ubnNlVHJpZ2dlcmVkICYmIChzID0gLTEsIG8ubnNlVHJpZ2dlcmVkID0gITEpLCAtMSAhPSBvLnNzZWMgJiYgby5zc2VjID4gcyAmJiBvLnBsYXllci5zZWVrVG8oby5zc2VjKSwgcChvKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBvLnZpZGVvcGxheXdhaXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LnBsYXlWaWRlbyhlLCBpKQogICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInZpbWVvIjoKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSBlLmZpbmQoImlmcmFtZSIpLmxlbmd0aCkgZGVsZXRlIG8udmltZW9wbGF5ZXIsIGUuYXBwZW5kKG8udmlkZW9tYXJrdXApLCBoKGUsIGksICEwKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlLmhhc0NsYXNzKCJycy1hcGlyZWFkeSIpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby52aW1lb3BsYXllciA9IG51bGwgPT0gby52aW1lb3BsYXllciA/IG5ldyBWaW1lby5QbGF5ZXIoZS5maW5kKCJpZnJhbWUiKS5hdHRyKCJpZCIpKSA6IG8udmltZW9wbGF5ZXIsIG8udmltZW9wbGF5ZXIuZ2V0UGF1c2VkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB2b2lkIDAgPT09IG8uY3VycmVudHRpbWUgPyAwIDogby5jdXJyZW50dGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubnNlVHJpZ2dlcmVkICYmIChzID0gLTEsIG8ubnNlVHJpZ2dlcmVkID0gITEpLCAtMSAhPSBvLnNzZWMgJiYgby5zc2VjID4gcyAmJiBvLnZpbWVvcGxheWVyLnNldEN1cnJlbnRUaW1lKG8uc3NlYyksICgibXV0ZSIgPT0gby52b2x1bWUgfHwgMCA9PT0gby52b2x1bWUgfHwgdC5sYXN0VG9nZ2xlU3RhdGUoZS5kYXRhKCJ2aWRlb211dGV0b2dnbGVkYnkiKSkgfHwgITAgPT09IHRbaV0uZ2xvYmFsbXV0ZSkgJiYgKG8udm9sdW1ldG9rZW4gPSAhMCwgby52aW1lb3BsYXllci5zZXRWb2x1bWUoMCkpLCBjKG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBvLnZpZGVvcGxheXdhaXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wbGF5VmlkZW8oZSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICAgICAgICAgIGVsc2Ugby52aWRlb3BsYXl3YWl0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wbGF5VmlkZW8oZSwgaSkKICAgICAgICAgICAgICAgICAgICB9LCA1MCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJodG1sNSI6CiAgICAgICAgICAgICAgICAgICAgaWYgKG8ubWV0YWxvYWRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCIiICsgby52aWRlby5kdXJhdGlvbiA9PSAiTmFOIiB8fCBvLnZpZGVvLnJlYWR5U3RhdGUgPCA0KSAmJiAhYSkgcmV0dXJuIG8ubG9hZFJlcXVlc3RlZCB8fCAoby52aWRlby5sb2FkKCksIG8ubG9hZFJlcXVlc3RlZCA9ICEwKSwgdm9pZCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wbGF5VmlkZW8oZSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gby52aWRlby5jdXJyZW50VGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgby5uc2VUcmlnZ2VyZWQgJiYgKHMgPSAtMSwgby5uc2VUcmlnZ2VyZWQgPSAhMSksIC0xICE9IG8uc3NlYyAmJiBvLnNzZWMgPiBzICYmIG8uc3NlYyA8IG8udmlkZW8uZHVyYXRpb24gJiYgKG8udmlkZW8uY3VycmVudFRpbWUgPSBvLnNzZWMpLCBsKG8pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHIoby52aWRlbywgImxvYWRlZG1ldGFkYXRhIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LnBsYXlWaWRlbyhlLCBpKQogICAgICAgICAgICAgICAgICAgIH0oZSkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGlzVmlkZW9QbGF5aW5nOiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIHZhciBhID0gITE7CiAgICAgICAgICAgIHJldHVybiBudWxsICE9IHRbaV0ucGxheWluZ3ZpZGVvcyAmJiBqUXVlcnkuZWFjaCh0W2ldLnBsYXlpbmd2aWRlb3MsIGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIGUuYXR0cigiaWQiKSA9PSBpLmF0dHIoImlkIikgJiYgKGEgPSAhMCkKICAgICAgICAgICAgfSksIGEKICAgICAgICB9LAogICAgICAgIHJlbW92ZU1lZGlhRnJvbUxpc3Q6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdyhlLCB0KQogICAgICAgIH0sCiAgICAgICAgcHJlcGFyZUNvdmVyZWRWaWRlbzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBjbGVhclRpbWVvdXQodFtlXS5yZXNpemVQcmVwYXJlQ292ZXJWaWRlb2xpc3RlbmVyKTsKICAgICAgICAgICAgdmFyIGkgPSAiY2Fyb3VzZWwiID09PSB0W2VdLnNsaWRlclR5cGUgPyB0W2VdLmNhcm91c2VsLmp1c3RpZnkgPyB2b2lkIDAgPT09IHRbZV0uY2Fyb3VzZWwuc2xpZGVfd2lkdGhzID8gdm9pZCAwIDogdFtlXS5jYXJvdXNlbC5zbGlkZV93aWR0aHNbdFtlXS5jYXJvdXNlbC5mb2N1c2VkXSA6IHRbZV0uY2Fyb3VzZWwuc2xpZGVfd2lkdGggOiB0W2VdLmNhbnYud2lkdGgsCiAgICAgICAgICAgICAgICBhID0gImNhcm91c2VsIiA9PT0gdFtlXS5zbGlkZXJUeXBlID8gdFtlXS5jYXJvdXNlbC5zbGlkZV9oZWlnaHQgOiB0W2VdLmNhbnYuaGVpZ2h0OwogICAgICAgICAgICBpZiAoMCAhPT0gaSAmJiAwICE9PSBhICYmIHZvaWQgMCAhPT0gaSAmJiB2b2lkIDAgIT09IGEpCiAgICAgICAgICAgICAgICBmb3IgKHZhciByIGluIHRbZV0udmlkZW9zKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0W2VdLnZpZGVvc1tyXTsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBvLmp2aWRlbyAmJiAoKG8uYmd2aWRlbyB8fCBvLmp2aWRlby5wYXJlbnQoKS5oYXNDbGFzcygicnMtZnN2IikgfHwgdC5jbG9zZXN0Tm9kZShvLnZpZGVvLCAiUlMtTEFZRVIiKSAmJiB0LmNsb3Nlc3ROb2RlKG8udmlkZW8sICJSUy1MQVlFUiIpLmNsYXNzTGlzdC5jb250YWlucygicnMtZnN2IikpICYmICgiaHRtbDUiID09PSBvLnR5cGUgJiYgdm9pZCAwICE9PSBvLmp2aWRlbyAmJiB0cEdTLmdzYXAuc2V0KG8uanZpZGVvLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdm9pZCAwID09PSB0W2VdLmFjdGl2ZVJTU2xpZGUgfHwgby5zbGlkZWlkID09PSB0LmdBKHRbZV0uc2xpZGVzW3RbZV0uYWN0aXZlUlNTbGlkZV0sICJrZXkiKSB8fCB2b2lkIDAgPT09IHRbZV0ucHJfbmV4dF9zbGlkZSB8fCBvLnNsaWRlaWQgPT09IHQuZ0EodFtlXS5wcl9uZXh0X3NsaWRlWzBdLCAia2V5IikpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBvLnZkID0gby5yYXRpby5zcGxpdCgiOiIpLmxlbmd0aCA+IDEgPyBvLnJhdGlvLnNwbGl0KCI6IilbMF0gLyBvLnJhdGlvLnNwbGl0KCI6IilbMV0gOiAxOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgbiA9IGkgLyBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG8udmQgKiBuICogMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8udmQgLyBuICogMTAwOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gIkVkZ2UiID09PSB0LmdldF9icm93c2VyKCkgfHwgIklFIiA9PT0gdC5nZXRfYnJvd3NlcigpID8gbiA+IG8udmQgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBkICsgIiUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogIi01MCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogIi01MCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAiNTAlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICI1MCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGwgKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAiLTUwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAiLTUwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICI1MCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogIjUwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIgogICAgICAgICAgICAgICAgICAgICAgICB9IDogbiA+IG8udmQgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IChvLmZpdENvdmVyID8gMTAwIDogZCkgKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBvLmZpdENvdmVyID8gMCA6IC0oZCAtIDEwMCkgLyAyICsgIiUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogIjBweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIgogICAgICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IChvLmZpdENvdmVyID8gMTAwIDogbCkgKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICIxMDAlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IG8uZml0Q292ZXIgPyAwIDogLShsIC0gMTAwKSAvIDIgKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICIwcHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdm9pZCAwID09PSBvLnZpbWVvaWQgJiYgdm9pZCAwID09PSBvLnl0aWQgfHwgKHMubWF4V2lkdGggPSAibm9uZSIsIHMubWF4SGVpZ2h0ID0gIm5vbmUiKSwgdHBHUy5nc2FwLnNldChvLmp2aWRlbywgcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgdFtlXS5yZXNpemVQcmVwYXJlQ292ZXJWaWRlb2xpc3RlbmVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0LnByZXBhcmVDb3ZlcmVkVmlkZW8oZSkKICAgICAgICAgICAgICAgIH0sIDEwMCkKICAgICAgICB9LAogICAgICAgIGNoZWNrVmlkZW9BcGlzOiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIGxvY2F0aW9uLnByb3RvY29sOwogICAgICAgICAgICBpZiAoIXRbaV0ueW91dHViZWFwaW5lZWRlZCAmJiAoKG51bGwgIT0gZS5kYXRhKCJ5dGlkIikgfHwgZS5maW5kKCJpZnJhbWUiKS5sZW5ndGggPiAwICYmIGUuZmluZCgiaWZyYW1lIikuYXR0cigic3JjIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ5b3V0dWJlIikgPiAwKSAmJiAodFtpXS55b3V0dWJlYXBpbmVlZGVkID0gITApLCB0W2ldLnlvdXR1YmVhcGluZWVkZWQgJiYgIXdpbmRvdy5yc19hZGRlZHl0KSkgewogICAgICAgICAgICAgICAgdFtpXS55b3V0dWJlc3RhcnR0aW1lID0galF1ZXJ5Lm5vdygpLCB3aW5kb3cucnNfYWRkZWR5dCA9ICEwOwogICAgICAgICAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSwKICAgICAgICAgICAgICAgICAgICByID0gdC5nZXRCeVRhZyhkb2N1bWVudCwgInNjcmlwdCIpWzBdLAogICAgICAgICAgICAgICAgICAgIG8gPSAhMDsKICAgICAgICAgICAgICAgIGEuc3JjID0gImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2lmcmFtZV9hcGkiLCBqUXVlcnkoImhlYWQiKS5maW5kKCIqIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSIgPT0galF1ZXJ5KHRoaXMpLmF0dHIoInNyYyIpICYmIChvID0gITEpCiAgICAgICAgICAgICAgICB9KSwgbyAmJiByLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsIHIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCF0W2ldLnZpbWVvYXBpbmVlZGVkICYmICgobnVsbCAhPSBlLmRhdGEoInZpbWVvaWQiKSB8fCBlLmZpbmQoImlmcmFtZSIpLmxlbmd0aCA+IDAgJiYgZS5maW5kKCJpZnJhbWUiKS5hdHRyKCJzcmMiKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoInZpbWVvIikgPiAwKSAmJiAodFtpXS52aW1lb2FwaW5lZWRlZCA9ICEwKSwgdFtpXS52aW1lb2FwaW5lZWRlZCAmJiAhd2luZG93LnJzX2FkZGVkdmltKSkgewogICAgICAgICAgICAgICAgdFtpXS52aW1lb3N0YXJ0dGltZSA9IGpRdWVyeS5ub3coKSwgd2luZG93LnJzX2FkZGVkdmltID0gITA7CiAgICAgICAgICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgICAgICAgICAgICAgciA9IHQuZ2V0QnlUYWcoZG9jdW1lbnQsICJzY3JpcHQiKVswXSwgbyA9ICEwOwogICAgICAgICAgICAgICAgcy5zcmMgPSAiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL2FwaS9wbGF5ZXIuanMiLCBqUXVlcnkoImhlYWQiKS5maW5kKCIqIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL2FwaS9wbGF5ZXIuanMiID09IGpRdWVyeSh0aGlzKS5hdHRyKCJzcmMiKSAmJiAobyA9ICExKQogICAgICAgICAgICAgICAgfSksIG8gJiYgci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLCByKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtYW5hZ2VWaWRlb0xheWVyOiBmdW5jdGlvbihlLCBhLCBvLCBzKSB7CiAgICAgICAgICAgIGlmICh0W2FdLnZpZGVvcyA9IHZvaWQgMCA9PT0gdFthXS52aWRlb3MgPyB7fSA6IHRbYV0udmlkZW9zLCB2b2lkIDAgPT09IHRbYV0udmlkZW9zW2VbMF0uaWRdIHx8ICEwID09PSBzKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRbYV0udmlkZW9zW2VbMF0uaWRdID0gdm9pZCAwID09PSB0W2FdLnZpZGVvc1tlWzBdLmlkXSA/IHkoZS5kYXRhKCksIHZvaWQgMCwgbykgOiB0W2FdLnZpZGVvc1tlWzBdLmlkXTsKICAgICAgICAgICAgICAgIGlmIChuLmF1ZGlvID0gdm9pZCAwICE9PSBuLmF1ZGlvICYmIG4uYXVkaW8sIGkgJiYgbi5vcG9tKSAwID09IGUuZmluZCgicnMtcG9zdGVyIikubGVuZ3RoICYmIGUuYXBwZW5kKCc8cnMtcG9zdGVyIGNsYXNzPSJub1N3aXBlIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTp1cmwoJyArIG4ucG9zdGVyICsgJyk7Ij48L3JzLXBvc3Rlcj4nKTsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG4uanNwb3N0ZXIgPSBlLmZpbmQoInJzLXBvc3RlciIpLCBuLmlkID0gZVswXS5pZCwgbi5wbG9hZCA9ICJhdXRvIiA9PT0gbi5wbG9hZCB8fCAiY2FucGxheSIgPT09IG4ucGxvYWQgfHwgImNhbnBsYXl0aHJvdWdoIiA9PT0gbi5wbG9hZCB8fCAicHJvZ3Jlc3MiID09PSBuLnBsb2FkID8gImF1dG8iIDogbi5wbG9hZCwgbi50eXBlID0gbnVsbCAhPSBuLm1wNCB8fCBudWxsICE9IG4ud2VibSA/ICJodG1sNSIgOiBudWxsICE9IG4ueXRpZCAmJiBTdHJpbmcobi55dGlkKS5sZW5ndGggPiAxID8gInlvdXR1YmUiIDogbnVsbCAhPSBuLnZpbWVvaWQgJiYgU3RyaW5nKG4udmltZW9pZCkubGVuZ3RoID4gMSA/ICJ2aW1lbyIgOiAibm9uZSIsIG4ubmV3dHlwZSA9ICJodG1sNSIgPT0gbi50eXBlICYmIDAgPT0gZS5maW5kKG4uYXVkaW8gPyAiYXVkaW8iIDogInZpZGVvIikubGVuZ3RoID8gImh0bWw1IiA6ICJ5b3V0dWJlIiA9PSBuLnR5cGUgJiYgMCA9PSBlLmZpbmQoImlmcmFtZSIpLmxlbmd0aCA/ICJ5b3V0dWJlIiA6ICJ2aW1lbyIgPT0gbi50eXBlICYmIDAgPT0gZS5maW5kKCJpZnJhbWUiKS5sZW5ndGggPyAidmltZW8iIDogIm5vbmUiLCBuLmV4dHJhcyA9ICIiLCBuLnBvc3Rlck1hcmt1cCA9IHZvaWQgMCA9PT0gbi5wb3N0ZXJNYXJrdXAgPyAiIiA6IG4ucG9zdGVyTWFya3VwLCAhbi5hdWRpbyAmJiAiMXN0dGltZSIgPT0gbi5hcGxheSAmJiBuLnBhdXNldGltZXIgJiYgbi5iZ3ZpZGVvICYmIHQuc0EoZS5jbG9zZXN0KCJycy1zbGlkZSIpWzBdLCAicnNwYXVzZXRpbWVyb25jZSIsIDEpLCBuLmF1ZGlvIHx8ICFuLmJndmlkZW8gfHwgIW4ucGF1c2V0aW1lciB8fCAxICE9IG4uYXBsYXkgJiYgInRydWUiICE9IG4uYXBsYXkgJiYgIm5vMXN0dGltZSIgIT0gbi5hcGxheSB8fCB0LnNBKGUuY2xvc2VzdCgicnMtc2xpZGUiKVswXSwgInJzcGF1c2V0aW1lcmFsd2F5cyIsIDEpLCBuLm5vSW50ICYmIGUuYWRkQ2xhc3MoInJzLW5vaW50ZXJhY3Rpb24iKSwgIShudWxsICE9IG4ucG9zdGVyICYmIG4ucG9zdGVyLmxlbmd0aCA+IDIpIHx8IGkgJiYgbi5ucG9tIHx8IDAgPT0gbi5qc3Bvc3Rlci5sZW5ndGggJiYgKG4ucG9zdGVyTWFya3VwICs9ICc8cnMtcG9zdGVyIGNsYXNzPSJub1N3aXBlIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTp1cmwoJyArIG4ucG9zdGVyICsgJyk7Ij48L3JzLXBvc3Rlcj4nKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9ICEwOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobi5jU1MgPSAiY3JlYXRlZCIsIG4uY1JTID0gImNyZWF0ZWQiLCBuLm5ld3R5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaHRtbDUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9PSB3aW5kb3cuaXNTYWZhcmkxMSAmJiAodFthXS5zbGlkZUhhc0lmcmFtZSA9ICEwKSwgbi5hdWRpbyAmJiBlLmFkZENsYXNzKCJycy1hdWRpbyIpLCBuLnRhZyA9IG4uYXVkaW8gPyAiYXVkaW8iIDogInZpZGVvIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gInZpZGVvIiA9PT0gbi50YWcgJiYgKHQuaXNfbW9iaWxlKCkgfHwgdC5pc1NhZmFyaTExKCkpID8gbi5hcGxheSB8fCAidHJ1ZSIgPT09IG4uYXBsYXkgPyAibXV0ZWQgcGxheXNpbmxpbmUgYXV0b3BsYXkiIDogbi5pbmxpbmUgPyAiIHBsYXlzaW5saW5lIiA6ICIiIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICc8ZGl2IGNsYXNzPSJodG1sNXZpZCByc19odG1sNXZpZGJhc2ljc3R5bGVzICcgKyAoITEgPT09IG4uYWZzID8gImhpZGVmdWxsc2NyZWVuIiA6ICIiKSArICciPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjICs9ICI8IiArIG4udGFnICsgIiAiICsgbCArICIgIiArIChuLmNvbnRyb2xzICYmICJub25lIiAhPT0gbi5jb250cm9scyA/ICIgY29udHJvbHMiIDogIiIpICsgKG4uYmd2aWRlbyAmJiAtMSA9PSBsLmluZGV4T2YoImF1dG9wbGF5IikgPyAiIGF1dG9wbGF5IiA6ICIiKSArIChuLmJndmlkZW8gJiYgLTEgPT0gbC5pbmRleE9mKCJtdXRlZCIpID8gIiBtdXRlZCIgOiAiIikgKyAnIHN0eWxlPSInICsgKCJFZGdlIiAhPT0gdC5nZXRfYnJvd3NlcigpID8gKG4uZml0Q292ZXIgPyAib2JqZWN0LWZpdDpjb3ZlcjtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IiA6ICIiKSArICJvcGFjaXR5OjA7d2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCUiIDogIiIpICsgJyIgY2xhc3M9IiIgJyArIChuLmxvb3AgPyAibG9vcCIgOiAiIikgKyAnIHByZWxvYWQ9IicgKyBuLnBsb2FkICsgJyI+JywgInZpZGVvIiA9PT0gbi50YWcgJiYgbnVsbCAhPSBuLndlYm0gJiYgImZpcmVmb3giID09IHQuZ2V0X2Jyb3dzZXIoKS50b0xvd2VyQ2FzZSgpICYmIChjID0gYyArICc8c291cmNlIHNyYz0iJyArIG4ud2VibSArICciIHR5cGU9InZpZGVvL3dlYm0iIC8+JyksIG51bGwgIT0gbi5tcDQgJiYgKGMgPSBjICsgJzxzb3VyY2Ugc3JjPSInICsgbi5tcDQgKyAnIiB0eXBlPSInICsgKCJ2aWRlbyIgPT09IG4udGFnID8gInZpZGVvL21wNCIgOiBuLm1wNC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm00YSIpID4gMCA/ICJhdWRpby94LW00YSIgOiAiYXVkaW8vbXBlZyIpICsgJyIgLz4nKSwgbnVsbCAhPSBuLm9ndiAmJiAoYyA9IGMgKyAnPHNvdXJjZSBzcmM9IicgKyBuLm1wNCArICciIHR5cGU9IicgKyBuLnRhZyArICcvb2dnIiAvPicpLCBjICs9ICI8LyIgKyBuLnRhZyArICI+PC9kaXY+IiwgYyArPSBuLnBvc3Rlck1hcmt1cCwgbi5jb250cm9scyAmJiAhbi5hdWRpbyAmJiB2b2lkIDAgPT09IG4ucG9zdGVyIHx8IG4uYmd2aWRlbyB8fCAoYyArPSAnPGRpdiBjbGFzcz0idHAtdmlkZW8tcGxheS1idXR0b24iPjxpIGNsYXNzPSJyZXZpY29uLXJpZ2h0LWRpciI+PC9pPjxzcGFuIGNsYXNzPSJ0cC1yZXZzdG9wIj4mbmJzcDs8L3NwYW4+PC9kaXY+JyksIG4udmlkZW9tYXJrdXAgPSBjLCBkID0gITEsIGkgJiYgbi5ub3Rvbm1vYmlsZSB8fCB0LmlzSUUoOCkgfHwgZS5hcHBlbmQoYyksIG4uanZpZGVvID0gZS5maW5kKG4udGFnKSwgbi52aWRlbyA9IG4uanZpZGVvWzBdLCBuLmh0bWw1dmlkID0gbi5qdmlkZW8ucGFyZW50KCksIHIobi52aWRlbywgImNhbnBsYXkiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdihlLCBhKSwgdC5yZXNldFZpZGVvKGUsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ5b3V0dWJlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRbYV0uc2xpZGVIYXNJZnJhbWUgPSAhMCwgbi5jb250cm9scyAmJiAibm9uZSIgIT09IG4uY29udHJvbHMgfHwgKG4udmF0ciA9IG4udmF0ci5yZXBsYWNlKCJjb250cm9scz0xIiwgImNvbnRyb2xzPTAiKSwgLTEgPT0gbi52YXRyLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiY29udHJvbHMiKSAmJiAobi52YXRyID0gbi52YXRyICsgIiZjb250cm9scz0wIikpLCAobi5pbmxpbmUgfHwgIlJTLUJHVklERU8iID09PSBlWzBdLnRhZ05hbWUpICYmIChuLnZhdHIgPSBuLnZhdHIgKyAiJnBsYXlzaW5saW5lPTEiKSwgLTEgIT0gbi5zc2VjICYmIChuLnZhdHIgKz0gIiZzdGFydD0iICsgbi5zc2VjKSwgLTEgIT0gbi5lc2VjICYmIChuLnZhdHIgKz0gIiZlbmQ9IiArIG4uZXNlYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG4udmF0ci5zcGxpdCgib3JpZ2luPWh0dHBzOi8vIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnZhdHJuZXcgPSBwLmxlbmd0aCA+IDEgPyBwWzBdICsgIm9yaWdpbj1odHRwczovLyIgKyAoc2VsZi5sb2NhdGlvbi5ocmVmLm1hdGNoKC93d3cvZ2kpICYmICFwWzFdLm1hdGNoKC93d3cvZ2kpID8gInd3dy4iICsgcFsxXSA6IHBbMV0pIDogbi52YXRyLCBuLnZpZGVvbWFya3VwID0gJzxpZnJhbWUgYWxsb3c9ImF1dG9wbGF5OyAnICsgKCEwID09PSBuLmFmcyA/ICJmdWxsc2NyZWVuIiA6ICIiKSArICciIHR5cGU9InRleHQvaHRtbCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC8nICsgbi55dGlkICsgIj8iICsgbi52YXRybmV3ICsgJyIgJyArICghMCA9PT0gbi5hZnMgPyAiYWxsb3dmdWxsc2NyZWVuIiA6ICIiKSArICcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgY2xhc3M9ImludHJpbnNpYy1pZ25vcmUiIHN0eWxlPSJvcGFjaXR5OjA7dmlzaWJpbGl0eTp2aXNpYmxlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCUiPjwvaWZyYW1lPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmltZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdFthXS5zbGlkZUhhc0lmcmFtZSA9ICEwLCBuLmNvbnRyb2xzICYmICJub25lIiAhPT0gbi5jb250cm9scyA/IChuLnZhdHIgPSBuLnZhdHIucmVwbGFjZSgiYmFja2dyb3VuZD0wIiwgImJhY2tncm91bmQ9MSIpLCAtMSA9PSBuLnZhdHIudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJiYWNrZ3JvdW5kIikgJiYgKG4udmF0ciA9IG4udmF0ciArICImYmFja2dyb3VuZD0xIikpIDogKG4udmF0ciA9IG4udmF0ci5yZXBsYWNlKCJiYWNrZ3JvdW5kPTEiLCAiYmFja2dyb3VuZD0wIiksIC0xID09IG4udmF0ci50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImJhY2tncm91bmQiKSAmJiAobi52YXRyID0gbi52YXRyICsgIiZiYWNrZ3JvdW5kPTAiKSksIG4udmF0ciA9ICJhdXRvcGxheT0iICsgKCEwID09PSBuLmFwbGF5ID8gMSA6IDApICsgIiYiICsgbi52YXRyLCBuLmJndmlkZW8gJiYgKG4ucHJlUGxheUZvcmFXaGlsZSA9ICEwKSwgaSAmJiAhMCA9PT0gbi5hcGxheSAmJiAobi52YXRyID0gIm11dGVkPTEmIiArIG4udmF0ciksIG4ubG9vcCAmJiAobi52YXRyID0gImxvb3A9MSYiICsgbi52YXRyKSwgbi52aWRlb21hcmt1cCA9ICc8aWZyYW1lICBhbGxvdz0iYXV0b3BsYXk7ICcgKyAoITAgPT09IG4uYWZzID8gImZ1bGxzY3JlZW4iIDogIiIpICsgJyIgc3JjPSJodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vJyArIG4udmltZW9pZCArICI/IiArIG4udmF0ciArICciICcgKyAoITAgPT09IG4uYWZzID8gIndlYmtpdGFsbG93ZnVsbHNjcmVlbiBtb3phbGxvd2Z1bGxzY3JlZW4gYWxsb3dmdWxsc2NyZWVuIiA6ICIiKSArICcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgY2xhc3M9ImludHJpbnNpYy1pZ25vcmUiIHN0eWxlPSJvcGFjaXR5OjA7dmlzaWJpbGl0eTp2aXNpYmxlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCUiPjwvaWZyYW1lPicKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCEobnVsbCAhPSBuLnBvc3RlciAmJiBuLnBvc3Rlci5sZW5ndGggPiAyKSB8fCBpICYmIG4ubnBvbSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAmJiBuLm5vdG9ubW9iaWxlKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIDAgIT0gZS5maW5kKCJpZnJhbWUiKS5sZW5ndGggfHwgInlvdXR1YmUiICE9IG4udHlwZSAmJiAidmltZW8iICE9IG4udHlwZSB8fCAoZGVsZXRlIG4udmltZW9wbGF5ZXIsIGUuYXBwZW5kKG4udmlkZW9tYXJrdXApLCBoKGUsIGEsICEoInZpbWVvIiAhPT0gbi5uZXd0eXBlIHx8ICFuLmJndmlkZW8pLCAhMCkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGQgJiYgMCA9PSBlLmZpbmQoInJzLXBvc3RlciIpLmxlbmd0aCAmJiBlLmFwcGVuZChuLnBvc3Rlck1hcmt1cCksIDAgPT0gZS5maW5kKCJpZnJhbWUiKS5sZW5ndGggJiYgKG4uanNwb3N0ZXIgPSBlLmZpbmQoInJzLXBvc3RlciIpLCBuLmpzcG9zdGVyLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5wbGF5VmlkZW8oZSwgYSwgITApLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5ub3Rvbm1vYmlsZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBHUy5nc2FwLnRvKG4uanNwb3N0ZXIsIC4zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAiaGlkZGVuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZTNEOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogInBvd2VyMy5pbk91dCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LnNob3dWaWRlbyhlLmZpbmQoImlmcmFtZSIpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIGlmICgibm9uZSIgIT09IG4uZG92ZXJsYXkgJiYgdm9pZCAwICE9PSBuLmRvdmVybGF5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gdC5jcmVhdGVPdmVybGF5KGEsIG4uZG92ZXJsYXksIG4uZG92ZXJsYXlzaXplLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOiBuLmRvdmVybGF5Y29sb3JhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMTogbi5kb3ZlcmxheWNvbG9yYgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5iZ3ZpZGVvICYmIDEgIT0gZS5jbG9zZXN0KCJycy1zYmctd3JhcCIpLmZpbmQoInJzLWRvdHRlZCIpLmxlbmd0aCA/IGUuY2xvc2VzdCgicnMtc2JnLXdyYXAiKS5hcHBlbmQoJzxycy1kb3R0ZWQgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6JyArIGcgKyAnIj48L3JzLWRvdHRlZD4nKSA6IG4uYmd2aWRlbyB8fCAxID09IGUuZmluZCgicnMtZG90dGVkIikubGVuZ3RoIHx8IGUuYXBwZW5kKCc8cnMtZG90dGVkIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOicgKyBnICsgJyI+PC9ycy1kb3R0ZWQ+JykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbi5iZ3ZpZGVvICYmIChlWzBdLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIsIGVbMF0uc3R5bGUuekluZGV4ID0gMCwgdHBHUy5nc2FwLnNldChlLmZpbmQoInZpZGVvLCBpZnJhbWUiKSwgewogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciByID0gZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIgPyBlLmFkZEV2ZW50TGlzdGVuZXIodCwgaSwgewogICAgICAgICAgICAgICAgY2FwdHVyZTogITEsCiAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgICAgICB9KSA6IGUuYXR0YWNoRXZlbnQodCwgaSwgewogICAgICAgICAgICAgICAgY2FwdHVyZTogITEsCiAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgbyA9IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgdmFyIGEgPSB7fTsKICAgICAgICAgICAgcmV0dXJuIGEudmlkZW8gPSBlLCBhLnR5cGUgPSB0LCBhLnNldHRpbmdzID0gaSwgYQogICAgICAgIH0sCiAgICAgICAgcyA9IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgdmFyIGEgPSB0W2VdLnZpZGVvc1tpWzBdLmlkXTsKICAgICAgICAgICAgKGEuYmd2aWRlbyB8fCBpLmhhc0NsYXNzKCJycy1mc3YiKSkgJiYgKCh2b2lkIDAgPT09IGEucmF0aW8gfHwgYS5yYXRpby5zcGxpdCgiOiIpLmxlbmd0aCA8PSAxKSAmJiAoYS5yYXRpbyA9ICIxNjo5IiksIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHQucHJlcGFyZUNvdmVyZWRWaWRlbyhlKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBhID0gZS52aW1lb3BsYXllcjsKICAgICAgICAgICAgYS5nZXRQYXVzZWQoKS50aGVuKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIGUudm9sdW1ldG9rZW4gPSAhMDsKICAgICAgICAgICAgICAgIHZhciBvID0gIXIsCiAgICAgICAgICAgICAgICAgICAgcyA9IGEuc2V0Vm9sdW1lKHQpOwogICAgICAgICAgICAgICAgdm9pZCAwICE9PSBzICYmIHMudGhlbihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgYS5nZXRQYXVzZWQoKS50aGVuKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9PT0gdCAmJiAoZS52b2x1bWUgPSAibXV0ZSIsIGUudm9sdW1ldG9rZW4gPSAhMCwgYS5zZXRWb2x1bWUoMCksIGEucGxheSgpKQogICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkdldCBQYXVzZWQgRnVuY3Rpb24gRmFpbGVkIGZvciBWaW1lbyBWb2x1bWUgQ2hhbmdlcyBJbnNpZGUgdGhlIFByb21pc2UiKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgbyAmJiAoZS52b2x1bWUgPSAibXV0ZSIsIGUudm9sdW1ldG9rZW4gPSAhMCwgYS5zZXRWb2x1bWUoMCksIGEucGxheSgpKSwgaSAmJiBfKGUsIDApCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJHZXQgUGF1c2VkIEZ1bmN0aW9uIEZhaWxlZCBmb3IgVmltZW8gVm9sdW1lIENoYW5nZXMiKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIGkgPSBlLnBsYXllci5nZXRQbGF5ZXJTdGF0ZSgpOwogICAgICAgICAgICAibXV0ZSIgPT09IHQgPyBlLnBsYXllci5tdXRlKCkgOiAoZS5wbGF5ZXIudW5NdXRlKCksIGUucGxheWVyLnNldFZvbHVtZSh0KSksIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAxID09PSBpICYmIDEgIT09IGUucGxheWVyLmdldFBsYXllclN0YXRlKCkgJiYgKGUucGxheWVyLm11dGUoKSwgZS5wbGF5ZXIucGxheVZpZGVvKCkpCiAgICAgICAgICAgIH0sIDM5KQogICAgICAgIH0sCiAgICAgICAgbCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKCJwbGF5VmlkZW8iID09PSBlLmNSUykgewogICAgICAgICAgICAgICAgdmFyIGEgPSBlLnZpZGVvLnBsYXkoKTsKICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gYSAmJiBhLnRoZW4oZnVuY3Rpb24oZSkge30pLmNhdGNoKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICBlLnZpZGVvLnBhdXNlKCksICEwICE9PSB0ICYmIGwoZSwgITApCiAgICAgICAgICAgICAgICB9KSwgaSAmJiBfKGUsIDApCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICgicGxheVZpZGVvIiA9PT0gZS5jUlMpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS52aW1lb3BsYXllci5wbGF5KCk7CiAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHQgJiYgdC50aGVuKGZ1bmN0aW9uKGUpIHt9KS5jYXRjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgZS52aW1lb3BsYXllci52b2x1bWV0b2tlbiA9ICEwLCBlLnZpbWVvcGxheWVyLnNldFZvbHVtZSgwKSwgZS52aW1lb3BsYXllci5wbGF5KCkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHAgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICJwbGF5VmlkZW8iID09PSBlLmNSUyAmJiBlLnBsYXllci5wbGF5VmlkZW8oKQogICAgICAgIH0sCiAgICAgICAgZyA9IGZ1bmN0aW9uKGUsIGksIGEsIHIpIHsKICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGkucmVwZWF0ZWRQb3N0ZXJDYWxscyksIGkucmVwZWF0ZWRQb3N0ZXJDYWxscyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAic2hvdyIgPT09IGEgfHwgInBsYXlpbmciID09PSBpLmNTUyAmJiAhMCAhPT0gaS5WaWRlb0lzVmlzaWJsZSA/ICh2b2lkIDAgIT09IGkuc2hvd2hpZGVwb3N0ZXIgJiYgaS5zaG93aGlkZXBvc3Rlci5wYXVzZSgpLCBpLnNob3doaWRlcG9zdGVyID0gdHBHUy5nc2FwLnRpbWVsaW5lKCksIGkuanNwb3N0ZXIubGVuZ3RoID4gMCAmJiBpLnNob3doaWRlcG9zdGVyLmFkZCh0cEdTLmdzYXAudG8oaS5qc3Bvc3RlciwgLjMsIHsKICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDUsCiAgICAgICAgICAgICAgICAgICAgYXV0b0FscGhhOiAwLAogICAgICAgICAgICAgICAgICAgIGZvcmNlM0Q6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICBlYXNlOiAicG93ZXIzLmluT3V0IgogICAgICAgICAgICAgICAgfSksIDApLCBpLmp2aWRlby5sZW5ndGggPiAwICYmIGkuc2hvd2hpZGVwb3N0ZXIuYWRkKHRwR1MuZ3NhcC50byhpLmp2aWRlbywgdm9pZCAwICE9PSByID8gciA6IC4wMDEsIHsKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLAogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIsCiAgICAgICAgICAgICAgICAgICAgZWFzZTogaS5qc3Bvc3Rlci5sZW5ndGggPiAwID8gInBvd2VyMy5pbk91dCIgOiAicG93ZXIzLm91dCIKICAgICAgICAgICAgICAgIH0pLCAwKSwgaS5WaWRlb0lzVmlzaWJsZSA9ICEwKSA6ICgiaGlkZSIgPT09IGEgfHwgInBhdXNlZCIgPT09IGkuY1NTICYmIDEgIT0gdC5jaGVja2Z1bGxzY3JlZW5FbmFibGVkKGUpICYmIGkuanNwb3N0ZXIubGVuZ3RoID4gMCAmJiAhMSAhPT0gaS5WaWRlb0lzVmlzaWJsZSAmJiAhMCAhPT0gaS5zZWVraW5nKSAmJiAodm9pZCAwICE9PSBpLnNob3doaWRlcG9zdGVyICYmIGkuc2hvd2hpZGVwb3N0ZXIucGF1c2UoKSwgaS5zaG93aGlkZXBvc3RlciA9IHRwR1MuZ3NhcC50aW1lbGluZSgpLCBpLmpzcG9zdGVyLmxlbmd0aCA+IDAgJiYgaS5zaG93aGlkZXBvc3Rlci5hZGQodHBHUy5nc2FwLnRvKGkuanNwb3N0ZXIsIC4zLCB7CiAgICAgICAgICAgICAgICAgICAgekluZGV4OiA1LAogICAgICAgICAgICAgICAgICAgIGF1dG9BbHBoYTogMSwKICAgICAgICAgICAgICAgICAgICBmb3JjZTNEOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgZWFzZTogInBvd2VyMy5pbk91dCIKICAgICAgICAgICAgICAgIH0pLCAwKSwgaS5qdmlkZW8ubGVuZ3RoID4gMCAmJiBpLnNob3doaWRlcG9zdGVyLmFkZCh0cEdTLmdzYXAudG8oaS5qdmlkZW8sIHZvaWQgMCAhPT0gciA/IHIgOiAuMDAxLCB7CiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgICAgICBlYXNlOiBpLmpzcG9zdGVyLmxlbmd0aCA+IDAgPyAicG93ZXIzLmluT3V0IiA6ICJwb3dlcjMub3V0IgogICAgICAgICAgICAgICAgfSksIC4zKSwgaS5iZ3ZpZGVvICYmIHZvaWQgMCAhPT0gaS5uQkcgJiYgdm9pZCAwICE9PSBpLm5CRy5sb2Fkb2JqICYmIChpLm5CRy52aWRlbyA9IGkubkJHLmxvYWRvYmouaW1nKSwgaS5WaWRlb0lzVmlzaWJsZSA9ICExKQogICAgICAgICAgICB9LCB2b2lkIDAgIT09IGEgPyAwIDogMTAwKQogICAgICAgIH0sCiAgICAgICAgdSA9IGZ1bmN0aW9uKGUsIGksIGEpIHsKICAgICAgICAgICAgZS5jU1MgPSAicGxheWluZyIsIGUudmltZW9zdGFydGVkID0gITAsIGUubmV4dHNsaWRlY2FsbGVkID0gITEsIGUuanNwb3N0ZXIgPSB2b2lkIDAgPT09IGUuanNwb3N0ZXIgfHwgMCA9PT0gZS5qc3Bvc3Rlci5sZW5ndGggPyBpLmZpbmQoInJzLXBvc3RlciIpIDogZS5qc3Bvc3RlciwgZS5qdmlkZW8gPSBpLmZpbmQoImlmcmFtZSIpLCB0W2FdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS5vbnZpZGVvcGxheSIsIG8oZS52aW1lb3BsYXllciwgInZpbWVvIiwgZSkpLCB0W2FdLnN0b3BCeVZpZGVvID0gZS5wYXVzZXRpbWVyLCBiKGksIGEpLCAibXV0ZSIgPT0gZS52b2x1bWUgfHwgMCA9PT0gZS52b2x1bWUgfHwgdC5sYXN0VG9nZ2xlU3RhdGUoaS5kYXRhKCJ2aWRlb211dGV0b2dnbGVkYnkiKSkgfHwgITAgPT09IHRbYV0uZ2xvYmFsbXV0ZSA/IChlLnZvbHVtZXRva2VuID0gITAsIGUudmltZW9wbGF5ZXIuc2V0Vm9sdW1lKDApKSA6IG4oZSwgcGFyc2VJbnQoZS52b2xjYWNoZSwgMCkgLyAxMDAgfHwgLjc1KSwgdC50b2dnbGVTdGF0ZShlLnZpZGVvdG9nZ2xlZGJ5KQogICAgICAgIH0sCiAgICAgICAgaCA9IGZ1bmN0aW9uKGUsIGEsIHIsIG4pIHsKICAgICAgICAgICAgdmFyIGwgPSB0W2FdLnZpZGVvc1tlWzBdLmlkXSwKICAgICAgICAgICAgICAgIGMgPSAiaWZyYW1lIiArIE1hdGgucm91bmQoMWU1ICogTWF0aC5yYW5kb20oKSArIDEpOwogICAgICAgICAgICBpZiAobC5qdmlkZW8gPSBlLmZpbmQoImlmcmFtZSIpLCBzKGEsIGUpLCBsLmp2aWRlby5hdHRyKCJpZCIsIGMpLCBsLnN0YXJ0dmlkZW9ub3cgPSByLCBsLnZpZGVvbGlzdGVuZXJleGlzdCkgewogICAgICAgICAgICAgICAgaWYgKHIpIHN3aXRjaCAobC50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAieW91dHViZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQucGxheVZpZGVvKGUsIGEpLCAtMSAhPSBsLnNzZWMgJiYgbC5wbGF5ZXIuc2Vla1RvKGwuc3NlYyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInZpbWVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgdC5wbGF5VmlkZW8oZSwgYSksIC0xICE9IGwuc3NlYyAmJiBsLnZpbWVvcGxheWVyLnNlZWtUbyhsLnNzZWMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBzd2l0Y2ggKGwudHlwZSkgewogICAgICAgICAgICAgICAgY2FzZSAieW91dHViZSI6CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ1bmRlZmluZWQiID09IHR5cGVvZiBZVCB8fCB2b2lkIDAgPT09IFlULlBsYXllcikgcmV0dXJuIHQuY2hlY2tWaWRlb0FwaXMoZSwgYSksIHZvaWQgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaChlLCBhLCByLCBuKQogICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgICAgICAgICBsLnBsYXllciA9IG5ldyBZVC5QbGF5ZXIoYywgewogICAgICAgICAgICAgICAgICAgICAgICBldmVudHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmRhdGEgPT0gWVQuUGxheWVyU3RhdGUuUExBWUlORyA/IChsLmNTUyA9ICJwbGF5aW5nIiwgdFthXS5vbmNlVmlkZW9QbGF5ZWQgPSAhMCwgIm11dGUiID09IGwudm9sdW1lIHx8IDAgPT09IGwudm9sdW1lIHx8IHQubGFzdFRvZ2dsZVN0YXRlKGUuZGF0YSgidmlkZW9tdXRldG9nZ2xlZGJ5IikpIHx8ICEwID09PSB0W2FdLmdsb2JhbG11dGUgPyBsLnBsYXllci5tdXRlKCkgOiBkKGwsIHBhcnNlSW50KGwudm9sY2FjaGUsIDApIHx8IDc1KSwgdFthXS5zdG9wQnlWaWRlbyA9ICEwLCBiKGUsIGEpLCBsLnBhdXNldGltZXIgPyB0W2FdLmMudHJpZ2dlcigic3RvcHRpbWVyIikgOiB0W2FdLnN0b3BCeVZpZGVvID0gITEsIHRbYV0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlLm9udmlkZW9wbGF5IiwgbyhsLnBsYXllciwgInlvdXR1YmUiLCBsKSksIHQudG9nZ2xlU3RhdGUobC52aWRlb3RvZ2dsZWRieSkpIDogKGwuY1NTID0gInBhdXNlZCIsIDAgPT0gaS5kYXRhICYmIGwubG9vcCAmJiAoLTEgIT0gbC5zc2VjICYmIGwucGxheWVyLnNlZWtUbyhsLnNzZWMpLCB0LnBsYXlWaWRlbyhlLCBhKSwgdC50b2dnbGVTdGF0ZShsLnZpZGVvdG9nZ2xlZGJ5KSksIC0xICE9IGkuZGF0YSAmJiAzICE9IGkuZGF0YSAmJiAodFthXS5zdG9wQnlWaWRlbyA9ICExLCB0W2FdLnRvbnBhdXNlID0gITEsIHcoZSwgYSksIHRbYV0uYy50cmlnZ2VyKCJzdGFydHRpbWVyIiksIHRbYV0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlLm9udmlkZW9zdG9wIiwgbyhsLnBsYXllciwgInlvdXR1YmUiLCBsKSksIG51bGwgIT0gdFthXS52aWRlb0lzUGxheWluZyAmJiB0W2FdLnZpZGVvSXNQbGF5aW5nLmF0dHIoImlkIikgIT0gZS5hdHRyKCJpZCIpIHx8IHQudW5Ub2dnbGVTdGF0ZShsLnZpZGVvdG9nZ2xlZGJ5KSksIDAgPT0gaS5kYXRhICYmIGwubnNlID8gKG0oKSwgbC5uc2VUcmlnZ2VyZWQgPSAhMCwgdFthXS5jLnJldm5leHQoKSwgdyhlLCBhKSkgOiAodyhlLCBhKSwgdFthXS5zdG9wQnlWaWRlbyA9ICExLCAzICE9PSBpLmRhdGEgJiYgKC0xICE9IGwubGFzdGV2ZW50ZGF0YSAmJiAzICE9IGwubGFzdGV2ZW50ZGF0YSAmJiB2b2lkIDAgIT09IGwubGFzdGV2ZW50ZGF0YSB8fCAtMSAhPSBpLmRhdGEgJiYgMyAhPSBpLmRhdGEpICYmIHRbYV0uYy50cmlnZ2VyKCJzdGFydHRpbWVyIiksIHRbYV0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlLm9udmlkZW9zdG9wIiwgbyhsLnBsYXllciwgInlvdXR1YmUiLCBsKSksIG51bGwgIT0gdFthXS52aWRlb0lzUGxheWluZyAmJiB0W2FdLnZpZGVvSXNQbGF5aW5nLmF0dHIoImlkIikgIT0gZS5hdHRyKCJpZCIpIHx8IHQudW5Ub2dnbGVTdGF0ZShsLnZpZGVvdG9nZ2xlZGJ5KSkpLCBjbGVhclRpbWVvdXQobC5wb3N0T3JWaWRlb1RpbWVyKSwgMyAhPT0gaS5kYXRhICYmIChsLnBvc3RPclZpZGVvVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnKGEsIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMSA9PT0gbC5sYXN0ZXZlbnRkYXRhICYmIDIgPT09IGkuZGF0YSB8fCAyID09PSBsLmxhc3RldmVudGRhdGEgJiYgMyAhPT0gaS5kYXRhID8gMWUzIDogMCksIGwubGFzdGV2ZW50ZGF0YSA9IGkuZGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlYWR5OiBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0LmlzX21vYmlsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5oYXNDbGFzcygicnMtbGF5ZXItdmlkZW8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLnJlYWR5ID0gITAsICFvICYmICghdC5pc1NhZmFyaTExKCkgfHwgbyAmJiBzKSB8fCAiUlMtQkdWSURFTyIgIT09IGVbMF0udGFnTmFtZSAmJiAoIXMgfHwgITAgIT09IGwuYXBsYXkgJiYgInRydWUiICE9PSBsLmFwbGF5KSB8fCAociA9ICEwLCBsLnBsYXllci5zZXRWb2x1bWUoMCksIGwudm9sdW1lID0gIm11dGUiLCBsLnBsYXllci5tdXRlKCksIGNsZWFyVGltZW91dChlLmRhdGEoIm1vYmlsZXZpZGVvdGltciIpKSwgMiAhPT0gbC5wbGF5ZXIuZ2V0UGxheWVyU3RhdGUoKSAmJiAtMSAhPT0gbC5wbGF5ZXIuZ2V0UGxheWVyU3RhdGUoKSB8fCBlLmRhdGEoIm1vYmlsZXZpZGVvdGltciIsIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucGxheVZpZGVvKGUsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwKSkpLCByIHx8ICJtdXRlIiAhPSBsLnZvbHVtZSB8fCAobC5wbGF5ZXIuc2V0Vm9sdW1lKDApLCBsLnBsYXllci5tdXRlKCkpLCBlLmFkZENsYXNzKCJycy1hcGlyZWFkeSIpLCBudWxsID09IGwuc3BlZWQgJiYgMSA9PT0gbC5zcGVlZCB8fCBpLnRhcmdldC5zZXRQbGF5YmFja1JhdGUocGFyc2VGbG9hdChsLnNwZWVkKSksIGwuanNwb3N0ZXIudW5iaW5kKCJjbGljayIpLCBsLmpzcG9zdGVyLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnBsYXlWaWRlbyhlLCBhLCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbC5zdGFydHZpZGVvbm93ID8gKHQucGxheVZpZGVvKGUsIGEpLCAtMSAhPSBsLnNzZWMgJiYgbC5wbGF5ZXIuc2Vla1RvKGwuc3NlYykpIDogbiAmJiBnKGEsIGwsICJzaG93IiwgLjIpLCBsLnZpZGVvbGlzdGVuZXJleGlzdCA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInZpbWVvIjoKICAgICAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgPT0gdHlwZW9mIFZpbWVvIHx8IHZvaWQgMCA9PT0gVmltZW8uUGxheWVyKSByZXR1cm4gdC5jaGVja1ZpZGVvQXBpcyhlLCBhKSwgdm9pZCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBoKGUsIGEsIHIsIG4pCiAgICAgICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAsIHYgPSBsLmp2aWRlby5hdHRyKCJzcmMiKSwgZiA9IHt9LCB5ID0gdiwgXyA9IC8oW14mPV0rKT0oW14mXSopL2c7IHAgPSBfLmV4ZWMoeSk7KSBmW2RlY29kZVVSSUNvbXBvbmVudChwWzFdKV0gPSBkZWNvZGVVUklDb21wb25lbnQocFsyXSk7CiAgICAgICAgICAgICAgICAgICAgdiA9ICh2ID0gbnVsbCAhPSBmLnBsYXllcl9pZCA/IHYucmVwbGFjZShmLnBsYXllcl9pZCwgYykgOiB2ICsgIiZwbGF5ZXJfaWQ9IiArIGMpLnJlcGxhY2UoLyZhcGk9MHwmYXBpPTEvZywgIiIpOwogICAgICAgICAgICAgICAgICAgIHZhciBTLCB4ID0gdC5pc19tb2JpbGUoKSB8fCB0LmlzU2FmYXJpMTEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgayA9ICJSUy1CR1ZJREVPIiA9PT0gZVswXS50YWdOYW1lOwogICAgICAgICAgICAgICAgICAgIGlmICh4ICYmIGsgJiYgKHYgKz0gIiZiYWNrZ3JvdW5kPTEiKSwgbC5qdmlkZW8uYXR0cigic3JjIiwgdiksIGwudmltZW9wbGF5ZXIgPSB2b2lkIDAgPT09IGwudmltZW9wbGF5ZXIgfHwgITEgPT09IGwudmltZW9wbGF5ZXIgPyBuZXcgVmltZW8uUGxheWVyKGMpIDogbC52aW1lb3BsYXllciwgeCkgayA/IFMgPSAhMCA6IChsLmFwbGF5IHx8ICJ0cnVlIiA9PT0gbC5hcGxheSkgJiYgKFMgPSAhMCksIFMgJiYgKGwudm9sdW1ldG9rZW4gPSAhMCwgbC52aW1lb3BsYXllci5zZXRWb2x1bWUoMCksIGwudm9sdW1lID0gIm11dGUiKTsKICAgICAgICAgICAgICAgICAgICBsLnZpbWVvcGxheWVyLm9uKCJwbGF5IiwgZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgICAgICB0W2FdLm9uY2VWaWRlb1BsYXllZCA9ICEwLCBsLmNTUyA9ICJwbGF5aW5nIiwgbC52aW1lb3N0YXJ0ZWQgfHwgdShsLCBlLCBhKQogICAgICAgICAgICAgICAgICAgIH0pLCBsLnZpbWVvcGxheWVyLm9uKCJsb2FkZWQiLCBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIGwudmltZW9wbGF5ZXIuZ2V0VmlkZW9XaWR0aCgpLnRoZW4oZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci53aWR0aCA9IHQsIHZvaWQgMCAhPT0gci53aWR0aCAmJiB2b2lkIDAgIT09IHIuaGVpZ2h0ICYmIChsLnJhdGlvID0gci53aWR0aCArICI6IiArIHIuaGVpZ2h0LCBsLnZpbWVvcGxheWVybG9hZGVkID0gITAsIHMoYSwgZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBsLnZpbWVvcGxheWVyLmdldFZpZGVvSGVpZ2h0KCkudGhlbihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmhlaWdodCA9IHQsIHZvaWQgMCAhPT0gci53aWR0aCAmJiB2b2lkIDAgIT09IHIuaGVpZ2h0ICYmIChsLnJhdGlvID0gci53aWR0aCArICI6IiArIHIuaGVpZ2h0LCBsLnZpbWVvcGxheWVybG9hZGVkID0gITAsIHMoYSwgZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBsLnN0YXJ0dmlkZW9ub3cgPyAoIm11dGUiID09PSBsLnZvbHVtZSAmJiAobC52b2x1bWV0b2tlbiA9ICEwLCBsLnZpbWVvcGxheWVyLnNldFZvbHVtZSgwKSksIHQucGxheVZpZGVvKGUsIGEpLCAtMSAhPSBsLnNzZWMgJiYgbC52aW1lb3BsYXllci5zZXRDdXJyZW50VGltZShsLnNzZWMpKSA6IG4gJiYgZyhhLCBsLCAic2hvdyIsIC4yKQogICAgICAgICAgICAgICAgICAgIH0pLCBlLmFkZENsYXNzKCJycy1hcGlyZWFkeSIpLCBsLnZpbWVvcGxheWVyLm9uKCJ2b2x1bWVjaGFuZ2UiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwudm9sdW1ldG9rZW4gJiYgKGwudm9sdW1lID0gZS52b2x1bWUpLCBsLnZvbHVtZXRva2VuID0gITEKICAgICAgICAgICAgICAgICAgICB9KSwgbC52aW1lb3BsYXllci5vbigidGltZXVwZGF0ZSIsIGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZyhhLCBsKSwgbC52aW1lb3N0YXJ0ZWQgfHwgMCA9PT0gaS5wZXJjZW50IHx8IHZvaWQgMCAhPT0gdFthXS5hY3RpdmVSU1NsaWRlICYmIGwuc2xpZGVpZCAhPT0gdC5nQSh0W2FdLnNsaWRlc1t0W2FdLmFjdGl2ZVJTU2xpZGVdLCAia2V5IikgfHwgdShsLCBlLCBhKSwgbC5wYXVzZXRpbWVyICYmICJwbGF5aW5nIiA9PSB0W2FdLnNsaWRlcnN0YXR1cyAmJiAodFthXS5zdG9wQnlWaWRlbyA9ICEwLCB0W2FdLmMudHJpZ2dlcigic3RvcHRpbWVyIikpLCBsLmN1cnJlbnR0aW1lID0gaS5zZWNvbmRzLCAwICE9IGwuZXNlYyAmJiAtMSAhPT0gbC5lc2VjICYmIGwuZXNlYyA8IGkuc2Vjb25kcyAmJiAhMCAhPT0gbC5uZXh0c2xpZGVjYWxsZWQgJiYgKGwubG9vcCA/ICh0LnBsYXlWaWRlbyhlLCBhKSwgbC52aW1lb3BsYXllci5zZXRDdXJyZW50VGltZSgtMSAhPT0gbC5zc2VjID8gbC5zc2VjIDogMCkpIDogKGwubnNlICYmIChsLm5zZVRyaWdnZXJlZCA9ICEwLCBsLm5leHRzbGlkZWNhbGxlZCA9ICEwLCB0W2FdLmMucmV2bmV4dCgpKSwgbC52aW1lb3BsYXllci5wYXVzZSgpKSksIGwucHJlUGxheUZvcmFXaGlsZSAmJiBsLnZpbWVvcGxheWVyLnBhdXNlKCkKICAgICAgICAgICAgICAgICAgICB9KSwgbC52aW1lb3BsYXllci5vbigiZW5kZWQiLCBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwuY1NTID0gInBhdXNlZCIsIGcoYSwgbCksIGwudmltZW9zdGFydGVkID0gITEsIHcoZSwgYSksIHRbYV0uc3RvcEJ5VmlkZW8gPSAhMSwgdFthXS5jLnRyaWdnZXIoInN0YXJ0dGltZXIiKSwgdFthXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub252aWRlb3N0b3AiLCBvKGwudmltZW9wbGF5ZXIsICJ2aW1lbyIsIGwpKSwgbC5uc2UgJiYgKGwubnNlVHJpZ2dlcmVkID0gITAsIHRbYV0uYy5yZXZuZXh0KCkpLCBudWxsICE9IHRbYV0udmlkZW9Jc1BsYXlpbmcgJiYgdFthXS52aWRlb0lzUGxheWluZy5hdHRyKCJpZCIpICE9IGUuYXR0cigiaWQiKSB8fCB0LnVuVG9nZ2xlU3RhdGUobC52aWRlb3RvZ2dsZWRieSkKICAgICAgICAgICAgICAgICAgICB9KSwgbC52aW1lb3BsYXllci5vbigicGF1c2UiLCBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwudmltZW9zdGFydGVkID0gITEsIGwuY1NTID0gInBhdXNlZCIsIGcoYSwgbCksIHRbYV0uc3RvcEJ5VmlkZW8gPSAhMSwgdFthXS50b25wYXVzZSA9ICExLCB3KGUsIGEpLCB0W2FdLmMudHJpZ2dlcigic3RhcnR0aW1lciIpLCB0W2FdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS5vbnZpZGVvc3RvcCIsIG8obC52aW1lb3BsYXllciwgInZpbWVvIiwgbCkpLCBudWxsICE9IHRbYV0udmlkZW9Jc1BsYXlpbmcgJiYgdFthXS52aWRlb0lzUGxheWluZy5hdHRyKCJpZCIpICE9IGUuYXR0cigiaWQiKSB8fCB0LnVuVG9nZ2xlU3RhdGUobC52aWRlb3RvZ2dsZWRieSkKICAgICAgICAgICAgICAgICAgICB9KSwgbC5qc3Bvc3Rlci51bmJpbmQoImNsaWNrIiksIGwuanNwb3N0ZXIub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkgcmV0dXJuIHQucGxheVZpZGVvKGUsIGEsICEwKSwgITEKICAgICAgICAgICAgICAgICAgICB9KSwgbC52aWRlb2xpc3RlbmVyZXhpc3QgPSAhMAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuICYmIGRvY3VtZW50LmZ1bGxzY3JlZW4gPyBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpIDogZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbiAmJiBkb2N1bWVudC5tb3pGdWxsU2NyZWVuID8gZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbigpIDogZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4gJiYgZG9jdW1lbnQud2Via2l0SXNGdWxsU2NyZWVuICYmIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCkKICAgICAgICB9LAogICAgICAgIHYgPSBmdW5jdGlvbihlLCBhLCBzKSB7CiAgICAgICAgICAgIHZhciBuID0gdFthXS52aWRlb3NbZVswXS5pZF07CiAgICAgICAgICAgIGlmIChpICYmIG4ubm90b25tb2JpbGUpIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKG4ubWV0YWxvYWRlZCA9ICEwLCAiaHRtbDUiID09PSBuLm5ld3R5cGUgJiYgbi5iZ3ZpZGVvICYmIChuLm5CRyA9IHRbYV0uc2Jnc1tlWzBdLmRhdGFzZXQua2V5XSwgdm9pZCAwID09PSBuLm5CRy5zaGFkb3dDYW52YXMgJiYgKG4ubkJHLnNoYWRvd0NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLCBuLm5CRy5zaGFkb3dDVFggPSBuLm5CRy5zaGFkb3dDYW52YXMuZ2V0Q29udGV4dCgiMmQiKSwgbi5uQkcuc2hhZG93Q2FudmFzLnN0eWxlLmJhY2tncm91bmQgPSAidHJhbnNwYXJlbnQiLCBuLm5CRy5zaGFkb3dDYW52YXMuc3R5bGUub3BhY2l0eSA9IDEpLCBuLm5CRy5pc0hUTUw1ID0gITAsIG4ubkJHLnZpZGVvID0gdm9pZCAwICE9PSBuLm5CRy5sb2Fkb2JqICYmIHZvaWQgMCAhPT0gbi5uQkcubG9hZG9iai5pbWcgPyBuLm5CRy5sb2Fkb2JqLmltZyA6IG4udmlkZW8sIG4ubkJHLmRyYXdWaWRlb0NhbnZhc0ltYWdlc1JlY2FsbCA9ICExKSwgIW4uY29udHJvbHMgfHwgbi5hdWRpbyB8fCB2b2lkIDAgIT09IG4ucG9zdGVyKSB7CiAgICAgICAgICAgICAgICAwICE9IGUuZmluZCgiLnRwLXZpZGVvLXBsYXktYnV0dG9uIikubGVuZ3RoIHx8IGkgfHwgZS5hcHBlbmQoJzxkaXYgY2xhc3M9InRwLXZpZGVvLXBsYXktYnV0dG9uIj48aSBjbGFzcz0icmV2aWNvbi1yaWdodC1kaXIiPjwvaT48c3BhbiBjbGFzcz0idHAtcmV2c3RvcCI+Jm5ic3A7PC9zcGFuPjwvZGl2PicpOwogICAgICAgICAgICAgICAgdmFyIGQgPSAidmlkZW8sIHJzLXBvc3RlciwgLnRwLXZpZGVvLXBsYXktYnV0dG9uIjsKICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gbi5wb3N0ZXIgJiYgbi5jb250cm9scyAmJiAoZCA9ICIudHAtdmlkZW8tcGxheS1idXR0b24iKSwgZS5maW5kKGQpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICExID09PSBuLmxvb3AgJiYgbi5lc2VjID4gMCAmJiBuLmVzZWMgPD0gbi52aWRlby5jdXJyZW50VGltZSB8fCAoZS5oYXNDbGFzcygidmlkZW9pc3BsYXlpbmciKSA/IHQuc3RvcFZpZGVvKGUsIGEpIDogdC5wbGF5VmlkZW8oZSwgYSwgITApKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfShlLmhhc0NsYXNzKCJycy1mc3YiKSB8fCBuLmJndmlkZW8pICYmIChuLmJndmlkZW8gfHwgZS5oYXNDbGFzcygicnMtZnN2IikgPyAobi5odG1sNXZpZC5hZGRDbGFzcygiZnVsbGNvdmVyZWR2aWRlbyIpLCB2b2lkIDAgIT09IG4ucmF0aW8gJiYgMSAhPSBuLnJhdGlvLnNwbGl0KCI6IikubGVuZ3RoIHx8IChuLnJhdGlvID0gIjE2OjkiKSwgdC5wcmVwYXJlQ292ZXJlZFZpZGVvKGEpKSA6IG4uaHRtbDV2aWQuYWRkQ2xhc3MoInJzLWZzdiIpKSwgcihuLnZpZGVvLCAiY2FucGxheXRocm91Z2giLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHQucHJlTG9hZEF1ZGlvRG9uZShlLCBhLCAiY2FucGxheXRocm91Z2giKQogICAgICAgICAgICB9KSwgcihuLnZpZGVvLCAiY2FucGxheSIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdC5wcmVMb2FkQXVkaW9Eb25lKGUsIGEsICJjYW5wbGF5IikKICAgICAgICAgICAgfSksIHIobi52aWRlbywgInByb2dyZXNzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0LnByZUxvYWRBdWRpb0RvbmUoZSwgYSwgInByb2dyZXNzIikKICAgICAgICAgICAgfSksIHIobi52aWRlbywgInBhdXNlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpICYmIF8obiwgMSkKICAgICAgICAgICAgfSksIHIobi52aWRlbywgInRpbWV1cGRhdGUiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0aGlzLkJHcmVuZGVyZWQgPSAhMCwgZyhhLCBuKSwgLTEgPT09IG4uZXNlYyAmJiBuLmxvb3AgJiYgMSA9PSB3aW5kb3cuaXNTYWZhcmkxMSAmJiAobi5lc2VjID0gbi52aWRlby5kdXJhdGlvbiAtIC4wNzUpLCB2b2lkIDAgIT09IG4ubGFzdEN1cnJlbnRUaW1lID8gbi5mcHMgPSBuLnZpZGVvLmN1cnJlbnRUaW1lIC0gbi5sYXN0Q3VycmVudFRpbWUgOiBuLmZwcyA9IC4xLCBuLmxhc3RDdXJyZW50VGltZSA9IG4udmlkZW8uY3VycmVudFRpbWUsIDAgIT0gbi5lc2VjICYmIC0xICE9IG4uZXNlYyAmJiBuLmVzZWMgPCBuLnZpZGVvLmN1cnJlbnRUaW1lICYmICFuLm5leHRzbGlkZWNhbGxlZCAmJiAobi5sb29wID8gKGwobiksIG4udmlkZW8uY3VycmVudFRpbWUgPSAtMSA9PT0gbi5zc2VjID8gLjUgOiBuLnNzZWMpIDogKG4ubnNlICYmIChuLm5zZVRyaWdnZXJlZCA9ICEwLCBuLm5leHRzbGlkZWNhbGxlZCA9ICEwLCB0W2FdLmpjbmFoID0gITAsIHRbYV0uYy5yZXZuZXh0KCksIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdFthXS5qY25haCA9ICExCiAgICAgICAgICAgICAgICB9LCAxZTMpKSwgbi52aWRlby5wYXVzZSgpKSkKICAgICAgICAgICAgfSksIHIobi52aWRlbywgInBsYXkiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uY1NTID0gInBsYXlpbmciLCBnKGEsIG4pLCBuLmJndmlkZW8gJiYgKG4ubkJHLmRyYXdWaWRlb0NhbnZhc0ltYWdlc1JlY2FsbCA9ICEwLCBuLm5CRy52aWRlb2lzcGxheWluZyA9ICEwLCBuLm5CRy52aWRlbyA9IG4udmlkZW8sIHQudXBkYXRlVmlkZW9GcmFtZXMoYSwgbi5uQkcpKSwgdFthXS5vbmNlVmlkZW9QbGF5ZWQgPSAhMCwgbi5uZXh0c2xpZGVjYWxsZWQgPSAhMSwgbi52b2x1bWUgPSBudWxsICE9IG4udm9sdW1lICYmICJtdXRlIiAhPSBuLnZvbHVtZSA/IHBhcnNlRmxvYXQobi52b2xjYWNoZSkgOiBuLnZvbHVtZSwgbi52b2xjYWNoZSA9IG51bGwgIT0gbi52b2xjYWNoZSAmJiAibXV0ZSIgIT0gbi52b2xjYWNoZSA/IHBhcnNlRmxvYXQobi52b2xjYWNoZSkgOiBuLnZvbGNhY2hlLCB0LmlzX21vYmlsZSgpIHx8IHQuaXNTYWZhcmkxMSgpIHx8ICghMCA9PT0gdFthXS5nbG9iYWxtdXRlID8gbi52aWRlby5tdXRlZCA9ICEwIDogbi52aWRlby5tdXRlZCA9ICJtdXRlIiA9PSBuLnZvbHVtZSwgbi52b2xjYWNoZSA9IHQuaXNOdW1lcmljKG4udm9sY2FjaGUpICYmIG4udm9sY2FjaGUgPiAxID8gbi52b2xjYWNoZSAvIDEwMCA6IG4udm9sY2FjaGUsICJtdXRlIiA9PSBuLnZvbHVtZSA/IG4udmlkZW8ubXV0ZWQgPSAhMCA6IG51bGwgIT0gbi52b2xjYWNoZSAmJiAobi52aWRlby52b2x1bWUgPSBuLnZvbGNhY2hlKSksIGUuYWRkQ2xhc3MoInZpZGVvaXNwbGF5aW5nIiksIGIoZSwgYSksIGNsZWFyVGltZW91dChuLnNob3dDb3ZlclNvb24pLCAhMCAhPT0gbi5wYXVzZXRpbWVyIHx8ICJhdWRpbyIgPT0gbi50YWcgPyAodFthXS5zdG9wQnlWaWRlbyA9ICExLCB0W2FdLmMudHJpZ2dlcigicmV2b2x1dGlvbi5zbGlkZS5vbnZpZGVvc3RvcCIsIG8obi52aWRlbywgImh0bWw1IiwgbikpKSA6ICh0W2FdLnN0b3BCeVZpZGVvID0gITAsIHRbYV0uYy50cmlnZ2VyKCJyZXZvbHV0aW9uLnNsaWRlLm9udmlkZW9wbGF5IiwgbyhuLnZpZGVvLCAiaHRtbDUiLCBuKSkpLCBuLnBhdXNldGltZXIgJiYgInBsYXlpbmciID09IHRbYV0uc2xpZGVyc3RhdHVzICYmICh0W2FdLnN0b3BCeVZpZGVvID0gITAsIHRbYV0uYy50cmlnZ2VyKCJzdG9wdGltZXIiKSksIHQudG9nZ2xlU3RhdGUobi52aWRlb3RvZ2dsZWRieSkKICAgICAgICAgICAgfSksIHIobi52aWRlbywgInNlZWtlZCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5zZWVraW5nID0gITEKICAgICAgICAgICAgfSksIHIobi52aWRlbywgInNlZWtpbmciLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uc2Vla2luZyA9ICEwCiAgICAgICAgICAgIH0pLCByKG4udmlkZW8sICJwYXVzZSIsIGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgIG4uY1NTID0gInBhdXNlZCIsIGcoYSwgbiksIGUucmVtb3ZlQ2xhc3MoInZpZGVvaXNwbGF5aW5nIiksIG4uYmd2aWRlbyAmJiAobi5uQkcuZHJhd1ZpZGVvQ2FudmFzSW1hZ2VzUmVjYWxsID0gITEsIG4ubkJHLnZpZGVvaXNwbGF5aW5nID0gITEpLCB0W2FdLnN0b3BCeVZpZGVvID0gITEsIHcoZSwgYSksICJhdWRpbyIgIT0gbi50YWcgJiYgdFthXS5jLnRyaWdnZXIoInN0YXJ0dGltZXIiKSwgdFthXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub252aWRlb3N0b3AiLCBvKG4udmlkZW8sICJodG1sNSIsIG4pKSwgbnVsbCAhPSB0W2FdLnZpZGVvSXNQbGF5aW5nICYmIHRbYV0udmlkZW9Jc1BsYXlpbmcuYXR0cigiaWQiKSAhPSBlLmF0dHIoImlkIikgfHwgdC51blRvZ2dsZVN0YXRlKG4udmlkZW90b2dnbGVkYnkpCiAgICAgICAgICAgIH0pLCByKG4udmlkZW8sICJlbmRlZCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5jU1MgPSAicGF1c2VkIiwgbSgpLCBnKGEsIG4pLCB3KGUsIGEpLCB0W2FdLnN0b3BCeVZpZGVvID0gITEsIHcoZSwgYSksICJhdWRpbyIgIT0gbi50YWcgJiYgdFthXS5jLnRyaWdnZXIoInN0YXJ0dGltZXIiKSwgdFthXS5jLnRyaWdnZXIoInJldm9sdXRpb24uc2xpZGUub252aWRlb3N0b3AiLCBvKG4udmlkZW8sICJodG1sNSIsIGUuZGF0YSgpKSksIG4ubnNlICYmIG4udmlkZW8uY3VycmVudFRpbWUgPiAwICYmICgxID09ICF0W2FdLmpjbmFoICYmIChuLm5zZVRyaWdnZXJlZCA9ICEwLCB0W2FdLmMucmV2bmV4dCgpLCB0W2FdLmpjbmFoID0gITApLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRbYV0uamNuYWggPSAhMQogICAgICAgICAgICAgICAgfSwgMTUwMCkpLCBlLnJlbW92ZUNsYXNzKCJ2aWRlb2lzcGxheWluZyIpLCBuLmJndmlkZW8gJiYgKG4ubkJHLmRyYXdWaWRlb0NhbnZhc0ltYWdlc1JlY2FsbCA9ICExLCBuLm5CRy52aWRlb2lzcGxheWluZyA9ICExKSwgITAgIT09IHRbYV0uaW52aWV3cG9ydCAmJiB2b2lkIDAgIT09IHRbYV0uaW52aWV3cG9ydCB8fCAodFthXS5sYXN0cGxheWVkdmlkZW9zID0gW10pCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBmID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gInQiID09PSBlIHx8ICEwID09PSBlIHx8ICJ0cnVlIiA9PT0gZSB8fCAiZiIgIT09IGUgJiYgITEgIT09IGUgJiYgImZhbHNlIiAhPT0gZSAmJiBlCiAgICAgICAgfSwKICAgICAgICB5ID0gZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICBlLmF1ZGlvID0gImF1ZGlvIiA9PT0gdDsKICAgICAgICAgICAgdmFyIHIgPSB2b2lkIDAgPT09IGUudmlkZW8gPyBbXSA6IGUudmlkZW8uc3BsaXQoIjsiKSwKICAgICAgICAgICAgICAgIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgdm9sdW1lOiBlLmF1ZGlvID8gMSA6ICJtdXRlIiwKICAgICAgICAgICAgICAgICAgICBwbG9hZDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgIHJhdGlvOiAiMTY6OSIsCiAgICAgICAgICAgICAgICAgICAgbG9vcDogITAsCiAgICAgICAgICAgICAgICAgICAgYXBsYXk6ICJ0cnVlIiwKICAgICAgICAgICAgICAgICAgICBmaXRDb3ZlcjogITAsCiAgICAgICAgICAgICAgICAgICAgYWZzOiAhMCwKICAgICAgICAgICAgICAgICAgICBjb250cm9sczogITEsCiAgICAgICAgICAgICAgICAgICAgbnNlOiAhMCwKICAgICAgICAgICAgICAgICAgICBucG9tOiAhMSwKICAgICAgICAgICAgICAgICAgICBvcG9tOiAhMSwKICAgICAgICAgICAgICAgICAgICBpbmxpbmU6ICEwLAogICAgICAgICAgICAgICAgICAgIG5vdG9ubW9iaWxlOiAhMSwKICAgICAgICAgICAgICAgICAgICBzdGFydDogLTEsCiAgICAgICAgICAgICAgICAgICAgZW5kOiAtMSwKICAgICAgICAgICAgICAgICAgICBkb3ZlcmxheTogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgIGRvdmVybGF5c2l6ZTogMSwKICAgICAgICAgICAgICAgICAgICBkb3ZlcmxheWNvbG9yYTogInRyYW5zcGFyZW50IiwKICAgICAgICAgICAgICAgICAgICBkb3ZlcmxheWNvbG9yYjogIiMwMDAwMDAiLAogICAgICAgICAgICAgICAgICAgIHNjb3A6ICExLAogICAgICAgICAgICAgICAgICAgIHJ3ZDogITAsCiAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IDEsCiAgICAgICAgICAgICAgICAgICAgcGxvYWR3YWl0OiA1LAogICAgICAgICAgICAgICAgICAgIHN0b3BBVjogMSAhPT0gZS5iZ3ZpZGVvLAogICAgICAgICAgICAgICAgICAgIG5vSW50OiAhMSwKICAgICAgICAgICAgICAgICAgICB2b2xjYWNoZTogNzUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGZvciAodmFyIHMgaW4gcikKICAgICAgICAgICAgICAgIGlmIChyLmhhc093blByb3BlcnR5KHMpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByW3NdLnNwbGl0KCI6Iik7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInYiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby52b2x1bWUgPSBuWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInZkIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8udm9sY2FjaGUgPSBuWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5wbG9hZCA9IG5bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5yYXRpbyA9IG5bMV0gKyAodm9pZCAwICE9PSBuWzJdID8gIjoiICsgblsyXSA6ICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmFwbGF5ID0gZihuWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ2ZmMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5maXRDb3ZlciA9IGYoblsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYWZzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uYWZzID0gZihuWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ2YyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNvbnRyb2xzID0gblsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJuc2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5uc2UgPSBmKG5bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm5wb20iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5ucG9tID0gZihuWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJvcG9tIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ub3BvbSA9IGYoblsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnZ0eXBlID0gblsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJpbmwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbmxpbmUgPSBmKG5bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm5vbW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5ub3Rvbm1vYmlsZSA9IGYoblsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic3RhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uc3RhcnQgPSBuWzFdICsgKHZvaWQgMCAhPT0gblsyXSA/ICI6IiArIG5bMl0gOiAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uZW5kID0gblsxXSArICh2b2lkIDAgIT09IG5bMl0gPyAiOiIgKyBuWzJdIDogIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uZG92ZXJsYXkgPSBuWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRvcyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmRvdmVybGF5c2l6ZSA9IG5bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZG9jYSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmRvdmVybGF5Y29sb3JhID0gblsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkb2NiIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uZG92ZXJsYXljb2xvcmIgPSBuWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNjb3AiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5zY29wID0gZihuWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyd2QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5yd2QgPSBmKG5bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNwIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uc3BlZWQgPSBuWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInZ3IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ucGxvYWR3YWl0ID0gcGFyc2VJbnQoblsxXSwgMCkgfHwgNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzYXYiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5zdG9wQVYgPSBmKG5bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm5vaW50IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubm9JbnQgPSBmKG5bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5sb29wY2FjaGUgPSBuWzFdLCBvLmxvb3AgPSAibG9vcCIgPT09IG5bMV0gfHwgImxvb3BhbmRub3NsaWRlc3RvcCIgPT09IG5bMV0gfHwgIm5vbmUiICE9PSBuWzFdICYmIGYoblsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicHRpbWVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ucGF1c2V0aW1lciA9IGYoblsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2F0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ud2FpdFRvU2xpZGVUcmFucyA9IGYoblsxXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUubXA0ICYmIG51bGwgPT0gZS53ZWJtICYmIChvLmZpdENvdmVyID0gITEpLCB2b2lkIDAgIT09IGUuYmd2aWRlbyAmJiAoby5iZ3ZpZGVvID0gZS5iZ3ZpZGVvKSwgby5ub0ludCAmJiAoby5jb250cm9scyA9ICExKSwgdm9pZCAwICE9PSBlLm1wNCAmJiAoby5tcDQgPSBlLm1wNCksIHZvaWQgMCAhPT0gZS52aWRlb21wNCAmJiAoby5tcDQgPSBlLnZpZGVvbXA0KSwgdm9pZCAwICE9PSBlLnl0aWQgJiYgKG8ueXRpZCA9IGUueXRpZCksIHZvaWQgMCAhPT0gZS5vZ3YgJiYgKG8ub2d2ID0gZS5vZ3YpLCB2b2lkIDAgIT09IGUud2VibSAmJiAoby53ZWJtID0gZS53ZWJtKSwgdm9pZCAwICE9PSBlLnZpbWVvaWQgJiYgKG8udmltZW9pZCA9IGUudmltZW9pZCksIHZvaWQgMCAhPT0gZS52YXRyICYmIChvLnZhdHIgPSBlLnZhdHIpLCB2b2lkIDAgIT09IGUudmlkZW9hdHRyaWJ1dGVzICYmIChvLnZhdHIgPSBlLnZpZGVvYXR0cmlidXRlcyksIHZvaWQgMCAhPT0gZS5wb3N0ZXIgJiYgKG8ucG9zdGVyID0gZS5wb3N0ZXIpLCBvLnNsaWRlaWQgPSBpLCBvLmFwbGF5ID0gInRydWUiID09PSBvLmFwbGF5IHx8IG8uYXBsYXksIDEgPT09IG8uYmd2aWRlbyAmJiAoby52b2x1bWUgPSAibXV0ZSIpLCBvLnNzZWMgPSBhKG8uc3RhcnQpLCBvLmVzZWMgPSBhKG8uZW5kKSwgby5wYXVzZXRpbWVyID0gdm9pZCAwID09PSBvLnBhdXNldGltZXIgPyAibG9vcGFuZG5vc2xpZGVzdG9wIiAhPT0gby5sb29wY2FjaGUgOiBvLnBhdXNldGltZXIsIG8uaW5Db2x1bW4gPSBlLl9pbmNvbHVtbiwgby5hdWRpbyA9IGUuYXVkaW8sICEwICE9PSBvLmxvb3AgJiYgInRydWUiICE9PSBvLmxvb3AgfHwgITAgIT09IG8ubnNlICYmICJ0cnVlIiAhPT0gby5uc2UgfHwgKG8ubG9vcCA9ICExKSwgbwogICAgICAgIH0sCiAgICAgICAgYiA9IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgaWYgKHRbaV0ucGxheWluZ3ZpZGVvcyA9IHZvaWQgMCA9PT0gdFtpXS5wbGF5aW5ndmlkZW9zID8gbmV3IEFycmF5IDogdFtpXS5wbGF5aW5ndmlkZW9zLCB0W2ldLnZpZGVvc1tlWzBdLmlkXS5zdG9wQVYgJiYgdm9pZCAwICE9PSB0W2ldLnBsYXlpbmd2aWRlb3MgJiYgdFtpXS5wbGF5aW5ndmlkZW9zLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgICBmb3IgKHZhciBhIGluIHRbaV0ubGFzdHBsYXllZHZpZGVvcyA9IGpRdWVyeS5leHRlbmQoITAsIFtdLCB0W2ldLnBsYXlpbmd2aWRlb3MpLCB0W2ldLnBsYXlpbmd2aWRlb3MpIHRbaV0ucGxheWluZ3ZpZGVvcy5oYXNPd25Qcm9wZXJ0eShhKSAmJiB0LnN0b3BWaWRlbyh0W2ldLnBsYXlpbmd2aWRlb3NbYV0sIGkpOwogICAgICAgICAgICB0W2ldLnBsYXlpbmd2aWRlb3MucHVzaChlKSwgdFtpXS52aWRlb0lzUGxheWluZyA9IGUKICAgICAgICB9LAogICAgICAgIHcgPSBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgIHZvaWQgMCAhPT0gdFtpXSAmJiB2b2lkIDAgIT09IHRbaV0gJiYgbnVsbCAhPSB0W2ldLnBsYXlpbmd2aWRlb3MgJiYgalF1ZXJ5LmluQXJyYXkoZSwgdFtpXS5wbGF5aW5ndmlkZW9zKSA+PSAwICYmIHRbaV0ucGxheWluZ3ZpZGVvcy5zcGxpY2UoalF1ZXJ5LmluQXJyYXkoZSwgdFtpXS5wbGF5aW5ndmlkZW9zKSwgMSkKICAgICAgICB9LAogICAgICAgIF8gPSBmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGUgJiYgKHZvaWQgMCA9PT0gYSAmJiAoYSA9IDApLCBpICYmICFlLmJndmlkZW8pKSB7CiAgICAgICAgICAgICAgICBlLnBsYXlQYXVzZUJ0blR3ZWVuICYmIGUucGxheVBhdXNlQnRuVHdlZW4ua2lsbCAmJiBlLnBsYXlQYXVzZUJ0blR3ZWVuLmtpbGwoKTsKICAgICAgICAgICAgICAgIHZhciByID0gdC5jbG9zZXN0Tm9kZShlLnZpZGVvLCAiUlMtTEFZRVIiKSwKICAgICAgICAgICAgICAgICAgICBvID0gZS5jb250cm9scyA/IDEgOiAwLAogICAgICAgICAgICAgICAgICAgIHMgPSBlLmNvbnRyb2xzID8gMCA6IC4zOwogICAgICAgICAgICAgICAgZS5jb250cm9scyAmJiBlLnBvc3RlciAmJiAwID09PSBhICYmIChzID0gMCwgbyA9IDApLCByICYmIChlLnBsYXlQYXVzZUJ0blR3ZWVuID0gdHBHUy5nc2FwLnRvKHIucXVlcnlTZWxlY3RvcigiLnRwLXZpZGVvLXBsYXktYnV0dG9uIiksIHsKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogcywKICAgICAgICAgICAgICAgICAgICBkZWxheTogbywKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiBhCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgIH0KfShqUXVlcnkpOw=="}},"time_used":1114,"timings":{"blocked":744,"dns":0,"connect":0,"send":0,"wait":95,"receive":275,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"s3.tradingview.com/external-embedding/embed-widget-forex-cross-rates.js","fqdn":"s3.tradingview.com","domain":"tradingview.com","tld":"com"},"ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.370Z","timestamp":1785145482370,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.tradingview.com","organization":""},"issuer":{"commonName":"DigiCert Global G2 TLS RSA SHA256 2020 CA1","organization":"DigiCert Inc"},"validity":{"start":"Tue, 21 Oct 2025 00:00:00 GMT","end":"Tue, 17 Nov 2026 23:59:59 GMT"},"fingerprint":{"sha1":"C4:FE:64:00:30:2A:CD:16:30:95:7E:E1:70:D1:31:3A:D6:33:3A:CC","sha256":"87:D2:67:7D:3E:02:F0:3B:58:BD:38:17:DA:FE:73:C0:CA:25:F9:58:CC:11:14:E0:3A:6E:C3:58:84:9E:BF:52"}}},"request":{"raw":"GET /external-embedding/embed-widget-forex-cross-rates.js HTTP/1.1\r\nHost: s3.tradingview.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://betaroi.ltd/\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\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\ncontent-type: text/javascript\r\nserver: BunnyCDN-NO1-830\r\ncdn-pullzone: 1837468\r\ncdn-requestcountrycode: NO\r\nvary: Accept-Encoding\r\naccess-control-allow-methods: GET\r\naccess-control-allow-origin: *\r\naccess-control-max-age: 3000\r\ncache-control: public, max-age=300\r\ncontent-encoding: zstd\r\netag: \"6ff9630986d3855842b586b326474dae\"\r\nlast-modified: Fri, 24 Jul 2026 10:29:24 GMT\r\nx-amz-id-2: gOMHE79Zn7yZ7yeqnhc2FK+gr/LdIPQnKT1/sqspzs6732OIPvuk0br9ZUw50iTxC4qxwwtAi+UBCvBVhRKB+q2k+kfN0z4K\r\nx-amz-request-id: 39DAMT3KYR5Z64HK\r\nx-amz-server-side-encryption: AES256\r\nx-amz-version-id: 9fupqI4xxEHAneKy4exkfX_7FVRNO7mI\r\ncdn-proxyver: 1.58\r\ncdn-requestpullcode: 200\r\ncdn-requestpullsuccess: True\r\ncdn-edgestorageid: 830\r\ncontent-security-policy: default-src 'none'\r\ncdn-cachedat: 07/24/2026 10:52:19\r\ncdn-status: 200\r\ncdn-requesttime: 0\r\ncdn-requestid: 41966fc0c5ffa3f981c4ff36bed22add\r\ncdn-cache: REVALIDATED\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]},{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]}],"data":{"size":12720,"size_decoded":5891,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (3458)","md5":"6ff9630986d3855842b586b326474dae","sha1":"69f83fc5e5e46f4ae60db6c9a2c7a0624f2b971d","sha256":"2eb114ab8c6de3b23037ae8feb4df46fc8d082acfe985a7086ad2744b49f2618","sha512":"7aea1b79bb1426698dcc337f9814dddffd5bcbddf75914dd5e73e107f13b378656aacca54997eb6dffbbeabb0c071c3b1a30d5e3d6eff3e117964eac45090f24","ssdeep":"384:gf6uCWoofYkFdjhUjrb26n0q6OrmaRMViZMEa:uD5Unb26nD6OrmaRkFEa","tlshash":"5b42d7aab660dcbd919945dba07a2321b61d3944b203eca4b5ace4c510fdccca531f7e","first_seen":"2026-07-16T22:06:47.112342Z","last_seen":"2026-07-27T14:14:27.118061Z","times_seen":844,"resource_available":true,"data":"KCgpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQodCxlKXtpZihudWxsPT09dCl0aHJvdyBuZXcgRXJyb3IoYCR7ZT8/IlZhbHVlIn0gaXMgbnVsbGApO3JldHVybiB0fWNvbnN0IGU9eyJjb2xvci1jb2xkLWdyYXktMzAwIjoiI0IyQjVCRSIsImNvbG9yLWJyYW5kIjoiIzI5NjJGRiIsImNvbG9yLWJyYW5kLWhvdmVyIjoiIzFFNTNFNSIsImNvbG9yLWJyYW5kLWFjdGl2ZSI6IiMxODQ4Q0MifQo7Y29uc3QgaT1KU09OLnBhcnNlKCd7ImNyeXB0by1ta3Qtc2NyZWVuZXIiOnsid2lkdGgiOjEwMDAsImhlaWdodCI6NDkwLCJkZWZhdWx0Q29sdW1uIjoib3ZlcnZpZXciLCJtYXJrZXQiOiJjcnlwdG8iLCJzY3JlZW5lcl90eXBlIjoiY3J5cHRvX21rdCIsImRpc3BsYXlDdXJyZW5jeSI6IlVTRCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwiZXZlbnRzIjp7IndpZHRoIjo1MTAsImhlaWdodCI6NjAwLCJpc1RyYW5zcGFyZW50IjpmYWxzZSwiaGlkZUltcG9ydGFuY2VJbmRpY2F0b3IiOmZhbHNlLCJhdXRvc2l6ZSI6ZmFsc2V9LCJmb3JleC1jcm9zcy1yYXRlcyI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImN1cnJlbmNpZXMiOlsiRVVSIiwiVVNEIiwiSlBZIiwiR0JQIiwiQ0hGIiwiQVVEIiwiQ0FEIiwiTlpEIl0sImZyYW1lRWxlbWVudElkIjpudWxsLCJhdXRvc2l6ZSI6ZmFsc2V9LCJmb3JleC1oZWF0LW1hcCI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImN1cnJlbmNpZXMiOlsiRVVSIiwiVVNEIiwiSlBZIiwiR0JQIiwiQ0hGIiwiQVVEIiwiQ0FEIiwiTlpEIiwiQ05ZIl0sImZyYW1lRWxlbWVudElkIjpudWxsLCJhdXRvc2l6ZSI6ZmFsc2V9LCJob3RsaXN0cyI6eyJ3aWR0aCI6NDAwLCJoZWlnaHQiOjYwMCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImRhdGVSYW5nZSI6IjEyTSIsInNob3dTeW1ib2xMb2dvIjpmYWxzZX0sIm1hcmtldC1vdmVydmlldyI6eyJ3aWR0aCI6NDAwLCJoZWlnaHQiOjY1MCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImRhdGVSYW5nZSI6IjEyTSIsInNob3dTeW1ib2xMb2dvIjp0cnVlfSwibWFya2V0LXF1b3RlcyI6eyJ3aWR0aCI6NzcwLCJoZWlnaHQiOjQ1MCwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsInNob3dTeW1ib2xMb2dvIjpmYWxzZX0sIm1pbmktc3ltYm9sLW92ZXJ2aWV3Ijp7IndpZHRoIjozNTAsImhlaWdodCI6MjIwLCJzeW1ib2wiOiJGWDpFVVJVU0QiLCJkYXRlUmFuZ2UiOiIxMk0iLCJpc1RyYW5zcGFyZW50IjpmYWxzZSwiYXV0b3NpemUiOmZhbHNlLCJsYXJnZUNoYXJ0VXJsIjoiIn0sInN5bWJvbC1vdmVydmlldyI6eyJ3aWR0aCI6MTAwMCwiaGVpZ2h0Ijo1MDAsInN5bWJvbHMiOltbIkFwcGxlIiwiQUFQTHwxRCJdLFsiR29vZ2xlIiwiR09PR0x8MUQiXSxbIk1pY3Jvc29mdCIsIk1TRlR8MUQiXV0sImF1dG9zaXplIjpmYWxzZSwiY2hhcnRPbmx5IjpmYWxzZSwiaGlkZURhdGVSYW5nZXMiOmZhbHNlLCJoaWRlTWFya2V0U3RhdHVzIjpmYWxzZSwiaGlkZVN5bWJvbExvZ28iOmZhbHNlLCJzY2FsZVBvc2l0aW9uIjoicmlnaHQiLCJzY2FsZU1vZGUiOiJOb3JtYWwiLCJmb250RmFtaWx5IjoiLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBUcmVidWNoZXQgTVMsIFJvYm90bywgVWJ1bnR1LCBzYW5zLXNlcmlmIiwiZm9udFNpemUiOiIxMCIsIm5vVGltZVNjYWxlIjpmYWxzZSwiY2hhcnRUeXBlIjoiYXJlYSIsInZhbHVlc1RyYWNraW5nIjoiMCIsImNoYW5nZU1vZGUiOiJwcmljZS1hbmQtcGVyY2VudCJ9LCJhZHZhbmNlZC1jaGFydCI6eyJib2R5SWQiOiJ3aWRnZXQtY29udGFpbmVyIiwiYm9keUNsYXNzZXMiOlsiY2hhcnQtcGFnZSIsInVuc2VsZWN0YWJsZSIsIm9uLXdpZGdldCJdfSwic2NyZWVuZXIiOnsid2lkdGgiOjExMDAsImhlaWdodCI6NTIzLCJkZWZhdWx0Q29sdW1uIjoib3ZlcnZpZXciLCJkZWZhdWx0U2NyZWVuIjoiZ2VuZXJhbCIsIm1hcmtldCI6ImZvcmV4Iiwic2hvd1Rvb2xiYXIiOnRydWUsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwic2luZ2xlLXF1b3RlIjp7IndpZHRoIjozNTAsInN5bWJvbCI6IkZYOkVVUlVTRCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlfSwic3ltYm9sLXByb2ZpbGUiOnsid2lkdGgiOjQ4MCwiaGVpZ2h0Ijo2NTAsInN5bWJvbCI6Ik5BU0RBUTpBQVBMIiwiaXNUcmFuc3BhcmVudCI6ZmFsc2V9LCJzeW1ib2wtaW5mbyI6eyJ3aWR0aCI6MTAwMCwic3ltYm9sIjoiTkFTREFROkFBUEwiLCJpc1RyYW5zcGFyZW50IjpmYWxzZX0sInRlY2huaWNhbC1hbmFseXNpcyI6eyJpbnRlcnZhbCI6IjFtIiwid2lkdGgiOjQyNSwiaXNUcmFuc3BhcmVudCI6ZmFsc2UsImhlaWdodCI6NDUwLCJzeW1ib2wiOiJOQVNEQVE6QUFQTCIsInNob3dJbnRlcnZhbFRhYnMiOnRydWUsImRpc3BsYXlNb2RlIjoic2luZ2xlIn0sInRpY2tlci10YXBlIjp7ImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6ImFkYXB0aXZlIiwic2hvd1N5bWJvbExvZ28iOmZhbHNlfSwidGlja2VycyI6eyJpc1RyYW5zcGFyZW50IjpmYWxzZSwic2hvd1N5bWJvbExvZ28iOmZhbHNlfSwiZmluYW5jaWFscyI6eyJ3aWR0aCI6NDgwLCJoZWlnaHQiOjgzMCwiYXV0b3NpemUiOmZhbHNlLCJzeW1ib2wiOiJOQVNEQVE6QUFQTCIsImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6InJlZ3VsYXIiLCJsYXJnZUNoYXJ0VXJsIjoiIn0sInRpbWVsaW5lIjp7IndpZHRoIjo0ODAsImhlaWdodCI6ODMwLCJhdXRvc2l6ZSI6ZmFsc2UsImlzVHJhbnNwYXJlbnQiOmZhbHNlLCJkaXNwbGF5TW9kZSI6InJlZ3VsYXIiLCJmZWVkTW9kZSI6ImFsbF9zeW1ib2xzIn0sInN0b2NrLWhlYXRtYXAiOnsid2lkdGgiOjUwMCwiaGVpZ2h0Ijo1MDAsImF1dG9zaXplIjp0cnVlLCJkYXRhU291cmNlIjoiU1BYNTAwIiwiZXhjaGFuZ2VzIjpbXSwiZ3JvdXBpbmciOiJzZWN0b3IiLCJibG9ja1NpemUiOiJtYXJrZXRfY2FwX2Jhc2ljIiwiYmxvY2tDb2xvciI6ImNoYW5nZSIsImhhc1RvcEJhciI6ZmFsc2UsImlzRGF0YVNldEVuYWJsZWQiOmZhbHNlLCJpc1pvb21FbmFibGVkIjp0cnVlLCJoYXNTeW1ib2xUb29sdGlwIjp0cnVlLCJzeW1ib2xVcmwiOiIiLCJpc01vbm9TaXplIjpmYWxzZX0sImNyeXB0by1jb2lucy1oZWF0bWFwIjp7IndpZHRoIjo1MDAsImhlaWdodCI6NTAwLCJhdXRvc2l6ZSI6dHJ1ZSwiZGF0YVNvdXJjZSI6IkNyeXB0byIsImJsb2NrU2l6ZSI6Im1hcmtldF9jYXBfY2FsYyIsImJsb2NrQ29sb3IiOiIyNGhfY2xvc2VfY2hhbmdlfDUiLCJoYXNUb3BCYXIiOmZhbHNlLCJpc0RhdGFTZXRFbmFibGVkIjpmYWxzZSwiaXNab29tRW5hYmxlZCI6dHJ1ZSwiaGFzU3ltYm9sVG9vbHRpcCI6dHJ1ZSwic3ltYm9sVXJsIjoiIiwiaXNNb25vU2l6ZSI6ZmFsc2V9LCJldGYtaGVhdG1hcCI6eyJ3aWR0aCI6NTAwLCJoZWlnaHQiOjUwMCwiYXV0b3NpemUiOnRydWUsImRhdGFTb3VyY2UiOiJBbGxVU0V0ZiIsImJsb2NrU2l6ZSI6InZvbHVtZSIsImJsb2NrQ29sb3IiOiJjaGFuZ2UiLCJncm91cGluZyI6ImFzc2V0X2NsYXNzIiwiaGFzVG9wQmFyIjpmYWxzZSwiaXNEYXRhU2V0RW5hYmxlZCI6ZmFsc2UsImlzWm9vbUVuYWJsZWQiOnRydWUsImhhc1N5bWJvbFRvb2x0aXAiOnRydWUsInN5bWJvbFVybCI6IiIsImlzTW9ub1NpemUiOmZhbHNlfX0nKQo7dmFyIHIsczshZnVuY3Rpb24odCl7bGV0IGU7IWZ1bmN0aW9uKHQpe3QuU2V0U3ltYm9sPSJzZXQtc3ltYm9sIix0LlNldEludGVydmFsPSJzZXQtaW50ZXJ2YWwifShlPXQuTmFtZXN8fCh0Lk5hbWVzPXt9KSl9KHJ8fChyPXt9KSksZnVuY3Rpb24odCl7bGV0IGU7IWZ1bmN0aW9uKHQpe3QuU3ltYm9sQ2xpY2s9InR2LXdpZGdldC1zeW1ib2wtY2xpY2siLHQuV2lkZ2V0TG9hZD0idHYtd2lkZ2V0LWxvYWQiLHQuV2lkZ2V0UmVhZHk9InR2LXdpZGdldC1yZWFkeSIsdC5SZXNpemVJZnJhbWU9InR2LXdpZGdldC1yZXNpemUtaWZyYW1lIix0Lk5vRGF0YT0idHYtd2lkZ2V0LW5vLWRhdGEifShlPXQuTmFtZXN8fCh0Lk5hbWVzPXt9KSl9KHN8fChzPXt9KSk7Y29uc3Qgbj0iX19GQUlMX18iLG89Il9fTkhUVFBfXyIsYT1uZXcgUmVnRXhwKCJeaHR0cChzKT86KC8vKT8iKTtmdW5jdGlvbiBsKHQ9bG9jYXRpb24uaHJlZil7Y29uc3QgZT1mdW5jdGlvbih0KXt0cnl7Y29uc3QgZT1uZXcgVVJMKHQpO3JldHVybiBhLnRlc3QoZS5wcm90b2NvbCk/bnVsbDpvfWNhdGNoKHQpe3JldHVybiBufX0odCk7cmV0dXJuIGV8fHQucmVwbGFjZShhLCIiKX1jb25zdCBjPXt3aWRnZXRIb3N0OiJodHRwczovL3d3dy50cmFkaW5ndmlldy13aWRnZXQuY29tIixlbnY6IkJBVFRMRSJ9O2NvbnN0IGg9WyJsb2NhbGUiLCJzeW1ib2wiLCJtYXJrZXQiXTtjbGFzcyBke2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NvcHlyaWdodENvbnRhaW5lcj1udWxsO2NvbnN0IGU9dD8/dGhpcy5fZ2V0U2NyaXB0SW5mbygpO2UmJnRoaXMuX3JlcGxhY2VTY3JpcHQoZSl9aGFzQ29weXJpZ2h0KCl7cmV0dXJuISF0aGlzLl9jb3B5cmlnaHRDb250YWluZXJ9Z2V0IHdpZGdldElkKCl7dGhyb3cgbmV3IEVycm9yKCJNZXRob2QgbXVzdCBiZSBvdmVycmlkZGVuIil9d2lkZ2V0VXRtTmFtZSgpe3JldHVybiB0aGlzLndpZGdldElkfWdldCBkZWZhdWx0U2V0dGluZ3MoKXtyZXR1cm4gaVt0aGlzLndpZGdldElkXX1nZXQgcHJvcGVydGllc1RvV29ya1dpdGgoKXtyZXR1cm5bXX1nZXQgdXNlUGFyYW1zRm9yQ29ubmVjdFNvY2tldCgpe3JldHVybiExfWdldCB1c2VTbm93cGxvd1BhZ2VWaWV3KCl7cmV0dXJuITF9dXNlUXVlcnlTdHJpbmdQYXJhbWV0ZXJzKHQpe3JldHVybnt9fWZpbHRlclJhd1NldHRpbmdzKHQpe2NvbnN0IGU9e30saT17Li4udCwuLi50aGlzLnVzZVF1ZXJ5U3RyaW5nUGFyYW1ldGVycyh0KX0scj1PYmplY3Qua2V5cyhpKSxzPW5ldyBTZXQodGhpcy5wcm9wZXJ0aWVzVG9Xb3JrV2l0aCk7cmV0dXJuIHIuZm9yRWFjaCgodD0+e3MuaGFzKHQpJiYoZVt0XT1pW3RdKX0pKSxlfWdldCBzaG91bGRMaXN0ZW5Ub0lmcmFtZVJlc2l6ZSgpe3JldHVybiEwfWdldCBwcm9wZXJ0aWVzVG9Ta2lwSW5IYXNoKCl7cmV0dXJuWyJjdXN0b21lciIsImxvY2FsZSJdfWdldCBwcm9wZXJ0aWVzVG9BZGRUb0dldFBhcmFtcygpe3JldHVyblsibG9jYWxlIl19c2hvdWxkQWRkQ29weXJpZ2h0U3R5bGVzKCl7cmV0dXJuITB9X2RlZmF1bHRXaWR0aCgpe31fZGVmYXVsdEhlaWdodCgpe31fZ2V0U2NyaXB0SW5mbygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3VycmVudFNjcmlwdDtpZighdHx8IXQuc3JjKXJldHVybiBjb25zb2xlLmVycm9yKCJDb3VsZCBub3Qgc2VsZi1yZXBsYWNlIHRoZSBzY3JpcHQsIHdpZGdldCBlbWJlZGRpbmcgaGFzIGJlZW4gYWJvcnRlZCIpLG51bGw7cmV0dXJue3NjcmlwdFVSTDpmdW5jdGlvbih0KXtjb25zdCBlPW5ldyBVUkwodCxkb2N1bWVudC5iYXNlVVJJKTtyZXR1cm57aG9zdDplLmhvc3QscGF0aG5hbWU6ZS5wYXRobmFtZSxocmVmOmUuaHJlZixwcm90b2NvbDplLnByb3RvY29sfX0odC5zcmMpLHNjcmlwdEVsZW1lbnQ6dCxpZDp0LmlkLHJhd1NldHRpbmdzOnRoaXMuX3NjcmlwdENvbnRlbnRUb0pTT04odCksb3ZlcnJpZGVIb3N0OnQuZ2V0QXR0cmlidXRlKCJvdmVycmlkZS1ob3N0Iil9fV9yZXBsYWNlU2NyaXB0KGkpe2NvbnN0e3NjcmlwdFVSTDpyLHNjcmlwdEVsZW1lbnQ6bixyYXdTZXR0aW5nczpvLGlkOmEsb3ZlcnJpZGVIb3N0Omx9PWksaD1sfHxmdW5jdGlvbih0LGU9Yyl7aWYoIkJBVFRMRSI9PT1lLmVudil7aWYod2luZG93LldJREdFVF9IT1NUKXJldHVybiB3aW5kb3cuV0lER0VUX0hPU1Q7aWYodC5ob3N0Lm1hdGNoKC9cLlx3c3RcdypcLlx3diQvaSkpcmV0dXJuYGh0dHBzOi8vJHsoaT10Lmhvc3Qscj0zLGkuc3BsaXQoIi4iKS5zbGljZSgtcikuam9pbigiLiIpKS5yZXBsYWNlKC9eYmV0YTAoPz1cLnhzdGFnaW5nXC50diQpL2ksImJldGEwLXhzdGFnaW5nIikucmVwbGFjZSgvXC4oXHcpdiQvaSwoKHQsZSk9PmAtd2lkZ2V0LiR7ZX12YCkpfWB9dmFyIGkscjtyZXR1cm4gZS53aWRnZXRIb3N0fShyKSxkPW4ucGFyZW50Tm9kZTtvJiYidGltZWxpbmUiPT09dGhpcy53aWRnZXRVdG1OYW1lKCkmJihvLmxvY2FsZT0iZW4iKTtjb25zdCBnPW4ubm9uY2V8fG4uZ2V0QXR0cmlidXRlKCJub25jZSIpLHU9ZnVuY3Rpb24odCl7aWYobnVsbD09PXQpcmV0dXJuIG51bGw7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoIiN0cmFkaW5ndmlldy1jb3B5cmlnaHQiKSxpPXQucXVlcnlTZWxlY3RvcigiI3RyYWRpbmd2aWV3LXF1b3RlcyIpLHI9ZXx8aTtyZXR1cm4gciYmdC5yZW1vdmVDaGlsZChyKSxyfShkKSxtPWQucXVlcnlTZWxlY3RvcigiLnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQiKTt0aGlzLl9jb3B5cmlnaHRDb250YWluZXI9dXx8bTtjb25zdCBwPWQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0cmFkaW5ndmlldy13aWRnZXQtY29udGFpbmVyIik7dGhpcy5pZnJhbWVDb250YWluZXI9ZCYmcD9kOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG8mJih0aGlzLnNldHRpbmdzPXRoaXMuZmlsdGVyUmF3U2V0dGluZ3MobykpLG8mJnRoaXMuX3ZhbGlkYXRlU2V0dGluZ3MoKXx8KGNvbnNvbGUuZXJyb3IoIkludmFsaWQgc2V0dGluZ3MgcHJvdmlkZWQsIGZhbGwgYmFjayB0byBkZWZhdWx0cyIpLHRoaXMuc2V0dGluZ3M9dGhpcy5maWx0ZXJSYXdTZXR0aW5ncyh0aGlzLmRlZmF1bHRTZXR0aW5ncykpCjtjb25zdCBmPSIzMnB4Iix7d2lkdGg6dyxoZWlnaHQ6eX09dGhpcy5zZXR0aW5ncyxiPXZvaWQgMD09PXk/dm9pZCAwOmAke3l9JHtOdW1iZXIuaXNJbnRlZ2VyKHkpPyJweCI6IiJ9YCxTPXZvaWQgMD09PXc/dm9pZCAwOmAke3d9JHtOdW1iZXIuaXNJbnRlZ2VyKHcpPyJweCI6IiJ9YDtpZih2b2lkIDAhPT1TJiYodGhpcy5pZnJhbWVDb250YWluZXIuc3R5bGUud2lkdGg9Uyksdm9pZCAwIT09YiYmKHRoaXMuaWZyYW1lQ29udGFpbmVyLnN0eWxlLmhlaWdodD1iKSx0aGlzLnNob3VsZEFkZENvcHlyaWdodFN0eWxlcygpKXtjb25zdCB0PWZ1bmN0aW9uKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0LmlubmVySFRNTD1gXG5cdC50cmFkaW5ndmlldy13aWRnZXQtY29weXJpZ2h0IHtcblx0XHRmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcblx0XHRsaW5lLWhlaWdodDogMzJweCAhaW1wb3J0YW50O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDtcblx0XHQvKiBAbWl4aW4gc2YtcHJvLWRpc3BsYXktZm9udDsgKi9cblx0XHRmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnVHJlYnVjaGV0IE1TJywgUm9ib3RvLCBVYnVudHUsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1jb2xkLWdyYXktMzAwIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQgYSB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0Y29sb3I6ICR7ZVsiY29sb3ItY29sZC1ncmF5LTMwMCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LnRyYWRpbmd2aWV3LXdpZGdldC1jb3B5cmlnaHQgYTp2aXNpdGVkIHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1jb2xkLWdyYXktMzAwIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCBhOmhvdmVyIC5ibHVlLXRleHQge1xuXHRcdGNvbG9yOiAke2VbImNvbG9yLWJyYW5kLWhvdmVyIl19ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudHJhZGluZ3ZpZXctd2lkZ2V0LWNvcHlyaWdodCBhOmFjdGl2ZSAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZC1hY3RpdmUiXX0gIWltcG9ydGFudDtcblx0fVxuXG5cdC50cmFkaW5ndmlldy13aWRnZXQtY29weXJpZ2h0IGE6dmlzaXRlZCAuYmx1ZS10ZXh0IHtcblx0XHRjb2xvcjogJHtlWyJjb2xvci1icmFuZCJdfSAhaW1wb3J0YW50O1xuXHR9XG5cdGAsdH0oKTtnJiZ0LnNldEF0dHJpYnV0ZSgibm9uY2UiLGcpLHRoaXMuaWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpfWNvbnN0IHY9dGhpcy5oYXNDb3B5cmlnaHQoKT9gY2FsYygxMDAlIC0gJHtmfSlgOiIxMDAlIixDPWxvY2F0aW9uLmhvc3RuYW1lLFQ9bT8id2lkZ2V0X25ldyI6IndpZGdldCIsXz10aGlzLndpZGdldFV0bU5hbWUoKTt0aGlzLnNldHRpbmdzLnV0bV9zb3VyY2U9Qyx0aGlzLnNldHRpbmdzLnV0bV9tZWRpdW09VCx0aGlzLnNldHRpbmdzLnV0bV9jYW1wYWlnbj1fLHRoaXMuX3VwZGF0ZUNvcHlyaWdodEhyZWZQYXJhbXMoQyxULF8pO2NvbnN0IEE9dGhpcy5zZXR0aW5ncy5pZnJhbWVUaXRsZXx8YCR7dGhpcy53aWRnZXRJZC5yZXBsYWNlKCItIiwiICIpfSBUcmFkaW5nVmlldyB3aWRnZXRgLGs9dGhpcy5zZXR0aW5ncy5pZnJhbWVMYW5nfHwiZW4iO3RoaXMuaWZyYW1lPXRoaXMuX2NyZWF0ZUlmcmFtZSh2LGgsYSxBLGspLHRoaXMuX2FkZENTUEVycm9yTGlzdGVuZXIoaCksZyYmdGhpcy5pZnJhbWUuc2V0QXR0cmlidXRlKCJub25jZSIsZyk7Y29uc3QgRT10aGlzLmlmcmFtZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIudHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lcl9fd2lkZ2V0Iik7aWYoRT8odChFLnBhcmVudEVsZW1lbnQpLnJlcGxhY2VDaGlsZCh0aGlzLmlmcmFtZSxFKSxuPy5yZW1vdmUoKSk6cD8odGhpcy5pZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLG4/LnJlbW92ZSgpKToodGhpcy5pZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLGQucmVwbGFjZUNoaWxkKHRoaXMuaWZyYW1lQ29udGFpbmVyLHQobikpKSx0aGlzLnNob3VsZExpc3RlblRvSWZyYW1lUmVzaXplJiZmdW5jdGlvbih0LGUsaSl7Y29uc3Qgcj1lLmNvbnRlbnRXaW5kb3c7aWYoIXIpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIkNhbm5vdCBsaXN0ZW4gdG8gdGhlIGV2ZW50IGZyb20gdGhlIHByb3ZpZGVkIGlmcmFtZSwgY29udGVudFdpbmRvdyBpcyBub3QgYXZhaWxhYmxlIiksKCk9Pnt9O2Z1bmN0aW9uIHMoZSl7ZS5zb3VyY2UmJmUuc291cmNlPT09ciYmZS5kYXRhJiZlLmRhdGEubmFtZSYmZS5kYXRhLm5hbWU9PT10JiZpKGUuZGF0YS5kYXRhKX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscywhMSl9KHMuTmFtZXMuUmVzaXplSWZyYW1lLHRoaXMuaWZyYW1lLCh0PT57dC53aWR0aCYmKHRoaXMuaWZyYW1lLnN0eWxlLndpZHRoPXQud2lkdGgrInB4Iix0aGlzLmlmcmFtZUNvbnRhaW5lci5zdHlsZS53aWR0aD10LndpZHRoKyJweCIpLHRoaXMuaWZyYW1lLnN0eWxlLmhlaWdodD10LmhlaWdodCsicHgiLHRoaXMuaWZyYW1lQ29udGFpbmVyLnN0eWxlLmhlaWdodD10LmhlaWdodCsodGhpcy5oYXNDb3B5cmlnaHQoKT8zMjowKSsicHgifSkpLHUpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5zdHlsZS5oZWlnaHQ9Zix0LnN0eWxlLmxpbmVIZWlnaHQ9Zix2b2lkIDAhPT1TJiYodC5zdHlsZS53aWR0aD1TKSx0LnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIix0LnN0eWxlLnZlcnRpY2FsQWxpZ249Im1pZGRsZSIsdC5pbm5lckhUTUw9dS5pbm5lckhUTUwsCnRoaXMuaWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpfX1faWZyYW1lU3JjQmFzZSh0KXtsZXQgZT1gJHt0fS9lbWJlZC13aWRnZXQvJHt0aGlzLndpZGdldElkfS9gO3JldHVybiB0aGlzLnNldHRpbmdzLmN1c3RvbWVyJiYtMSE9PXRoaXMucHJvcGVydGllc1RvU2tpcEluSGFzaC5pbmRleE9mKCJjdXN0b21lciIpJiYoZSs9YCR7dGhpcy5zZXR0aW5ncy5jdXN0b21lcn0vYCksZX1fdmFsaWRhdGVTZXR0aW5ncygpe2NvbnN0IHQ9KHQsZSk9PntpZih2b2lkIDA9PT10KXJldHVybiBlO2NvbnN0IGk9U3RyaW5nKHQpO3JldHVybi9eXGQrJC8udGVzdChpKT9wYXJzZUludChpKTovXihcZCslfGF1dG8pJC8udGVzdChpKT9pOm51bGx9LGU9dCh0aGlzLnNldHRpbmdzLndpZHRoLHRoaXMuX2RlZmF1bHRXaWR0aCgpKSxpPXQodGhpcy5zZXR0aW5ncy5oZWlnaHQsdGhpcy5fZGVmYXVsdEhlaWdodCgpKTtyZXR1cm4gbnVsbCE9PWUmJm51bGwhPT1pJiYodGhpcy5zZXR0aW5ncy53aWR0aD1lLHRoaXMuc2V0dGluZ3MuaGVpZ2h0PWksITApfV9zZXRTZXR0aW5nc1F1ZXJ5U3RyaW5nKHQpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzVG9BZGRUb0dldFBhcmFtcy5maWx0ZXIoKHQ9Pi0xIT09aC5pbmRleE9mKHQpKSksaT1mdW5jdGlvbih0LGUpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpO2Zvcihjb25zdCByIG9mIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihpW3JdPXRbcl0pO3JldHVybiBpfSh0aGlzLnNldHRpbmdzLGUpO2Zvcihjb25zdFtlLHJdb2YgT2JqZWN0LmVudHJpZXMoaSkpdC5zZWFyY2hQYXJhbXMuYXBwZW5kKGUscil9X3NldEhhc2hTdHJpbmcodCxlKXtjb25zdCBpPXt9O2UmJihpLmZyYW1lRWxlbWVudElkPWUpLE9iamVjdC5rZXlzKHRoaXMuc2V0dGluZ3MpLmZvckVhY2goKHQ9PnstMT09PXRoaXMucHJvcGVydGllc1RvU2tpcEluSGFzaC5pbmRleE9mKHQpJiYoaVt0XT10aGlzLnNldHRpbmdzW3RdKX0pKSwodGhpcy51c2VQYXJhbXNGb3JDb25uZWN0U29ja2V0fHx0aGlzLnVzZVNub3dwbG93UGFnZVZpZXcpJiYoaVsicGFnZS11cmkiXT1sKCkpO09iamVjdC5rZXlzKGkpLmxlbmd0aD4wJiYodC5oYXNoPWVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpfV9zY3JpcHRDb250ZW50VG9KU09OKHQpe2NvbnN0IGU9dC5pbm5lckhUTUwudHJpbSgpO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcihgV2lkZ2V0IHNldHRpbmdzIHBhcnNlIGVycm9yOiAke3R9YCksbnVsbH19X2NyZWF0ZUlmcmFtZSh0LGUsaSxyLHMpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7aSYmKG4uaWQ9aSksdGhpcy5zZXR0aW5ncy5lbmFibGVTY3JvbGxpbmd8fG4uc2V0QXR0cmlidXRlKCJzY3JvbGxpbmciLCJubyIpLG4uc2V0QXR0cmlidXRlKCJhbGxvd3RyYW5zcGFyZW5jeSIsInRydWUiKSxuLnNldEF0dHJpYnV0ZSgiZnJhbWVib3JkZXIiLCIwIiksbi5zdHlsZS51c2VyU2VsZWN0PSJub25lIixuLnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayIsbi5zdHlsZS5oZWlnaHQ9dCxuLnN0eWxlLndpZHRoPSIxMDAlIjtjb25zdCBvPW5ldyBVUkwodGhpcy5faWZyYW1lU3JjQmFzZShlKSk7cmV0dXJuIHRoaXMuX3NldFNldHRpbmdzUXVlcnlTdHJpbmcobyksdGhpcy5fc2V0SGFzaFN0cmluZyhvLGkpLG4uc2V0QXR0cmlidXRlKCJzcmMiLG8udG9TdHJpbmcoKSksbi50aXRsZT1yLG4ubGFuZz1zLG59X2FkZENTUEVycm9yTGlzdGVuZXIodCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLChlPT57ZS5ibG9ja2VkVVJJLmluY2x1ZGVzKHQpJiYodGhpcy5fdHJ5Rml4Q1NQSXNzdWVXaXRoRmFsbGJhY2sodCksY29uc29sZS53YXJuKCJQbGVhc2UgdXBkYXRlIHlvdXIgQ1NQIHJ1bGVzIHRvIGFsbG93IHRoZSB0cmFkaW5ndmlldy13aWRnZXQuY29tIG9yaWdpbiBmb3IgZnJhbWUtc3JjLiIpKX0pKX1fdHJ5Rml4Q1NQSXNzdWVXaXRoRmFsbGJhY2sodCl7Y29uc3QgZT10aGlzLmlmcmFtZS5nZXRBdHRyaWJ1dGUoInNyYyIpO2lmKGUpe2NvbnN0IGk9bmV3IFVSTChlLnJlcGxhY2UodCwiaHR0cHM6Ly9zLnRyYWRpbmd2aWV3LmNvbSIpKTt0aGlzLmlmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsaS5ocmVmKX19X3VwZGF0ZUNvcHlyaWdodEhyZWZQYXJhbXModCxlLGkpe2lmKHRoaXMuX2NvcHlyaWdodENvbnRhaW5lcil7Y29uc3Qgcj10aGlzLl9jb3B5cmlnaHRDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiYSIpO3ImJnIuZm9yRWFjaCgocj0+e2NvbnN0IHM9ci5nZXRBdHRyaWJ1dGUoImhyZWYiKTtpZihzKXRyeXtjb25zdCBuPW5ldyBVUkwocyk7bi5zZWFyY2hQYXJhbXMuc2V0KCJ1dG1fc291cmNlIix0KSxuLnNlYXJjaFBhcmFtcy5zZXQoInV0bV9tZWRpdW0iLGUpLG4uc2VhcmNoUGFyYW1zLnNldCgidXRtX2NhbXBhaWduIixpKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbi50b1N0cmluZygpKX1jYXRjaCh0KXtjb25zb2xlLmxvZyhgQ2Fubm90IHVwZGF0ZSBsaW5rIFVUTSBwYXJhbXMsIGhyZWY9IiR7c30iYCl9fSkpfX19bmV3IGNsYXNzIGV4dGVuZHMgZHtnZXQgd2lkZ2V0SWQoKXtyZXR1cm4iZm9yZXgtY3Jvc3MtcmF0ZXMifWdldCB1c2VQYXJhbXNGb3JDb25uZWN0U29ja2V0KCl7cmV0dXJuITB9Z2V0IHByb3BlcnRpZXNUb1dvcmtXaXRoKCl7cmV0dXJuWyJjb2xvclRoZW1lIiwiY3VycmVuY2llcyIsImN1c3RvbWVyIiwiZGlzYWJsZUNyb3NzQ2xpY2tIcmVmIiwiaGVpZ2h0IiwibGFyZ2VDaGFydFVybCIsImxvY2FsZSIsIndpZHRoIiwiYmFja2dyb3VuZENvbG9yIl19fX0pKCk7"}},"time_used":199,"timings":{"blocked":-1,"dns":26,"connect":26,"send":0,"wait":134,"receive":-1,"ssl":12},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/magnific/jquery.magnific-popup.min.js?ver=1.1.0","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.437Z","timestamp":1785145482437,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/magnific/jquery.magnific-popup.min.js?ver=1.1.0 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 32802\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":32802,"size_decoded":33019,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (562)","md5":"342841c71bf97ea45ca04fe8d6cead55","sha1":"637e10197aa7b42cae85e8423a9570cb70afb674","sha256":"cb99922e6533e36934a738ae2fa05252cc1fd22dc76015fdc5e6e639795e88c0","sha512":"a75fc7d3daaebc0daada3b71521b6582768c93a5039c8ae287a7c6745c958d9af47d061a4c2e2f53278fd5647d60c5406543abafd62d8709d71c36dd72aac9d8","ssdeep":"768:X6pkptmFVQMxhOVvr2XZ+n6HSABdhbGQZD:X62XCwhGsoSABPbGOD","tlshash":"3ae25119f6f321279757b1388e7f9c0832759047ae05dd443e4c61a8afa883895f9fac","first_seen":"2023-03-10T00:49:37Z","last_seen":"2026-07-27T13:38:47.795544Z","times_seen":116,"resource_available":true,"data":"LyohIE1hZ25pZmljIFBvcHVwIC0gdjEuMS4wIC0gMjAxNi0wMi0yMAogKiBodHRwOi8vZGltc2VtZW5vdi5jb20vcGx1Z2lucy9tYWduaWZpYy1wb3B1cC8KICogQ29weXJpZ2h0IChjKSAyMDE2IERtaXRyeSBTZW1lbm92OyAqLwohIGZ1bmN0aW9uKGEpIHsKICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsianF1ZXJ5Il0sIGEpIDogYSgib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyA/IHJlcXVpcmUoImpxdWVyeSIpIDogd2luZG93LmpRdWVyeSB8fCB3aW5kb3cuWmVwdG8pCn0oZnVuY3Rpb24oYSkgewogICAgdmFyIGIsIGMsIGQsIGUsIGYsIGcsIGggPSAiQ2xvc2UiLAogICAgICAgIGkgPSAiQmVmb3JlQ2xvc2UiLAogICAgICAgIGogPSAiQWZ0ZXJDbG9zZSIsCiAgICAgICAgayA9ICJCZWZvcmVBcHBlbmQiLAogICAgICAgIGwgPSAiTWFya3VwUGFyc2UiLAogICAgICAgIG0gPSAiT3BlbiIsCiAgICAgICAgbiA9ICJDaGFuZ2UiLAogICAgICAgIG8gPSAibWZwIiwKICAgICAgICBwID0gIi4iICsgbywKICAgICAgICBxID0gIm1mcC1yZWFkeSIsCiAgICAgICAgciA9ICJtZnAtcmVtb3ZpbmciLAogICAgICAgIHMgPSAibWZwLXByZXZlbnQtY2xvc2UiLAogICAgICAgIHQgPSBmdW5jdGlvbigpIHt9LAogICAgICAgIHUgPSAhIXdpbmRvdy5qUXVlcnksCiAgICAgICAgdiA9IGEod2luZG93KSwKICAgICAgICB3ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICBiLmV2Lm9uKG8gKyBhICsgcCwgYykKICAgICAgICB9LAogICAgICAgIHggPSBmdW5jdGlvbihiLCBjLCBkLCBlKSB7CiAgICAgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgIHJldHVybiBmLmNsYXNzTmFtZSA9ICJtZnAtIiArIGIsIGQgJiYgKGYuaW5uZXJIVE1MID0gZCksIGUgPyBjICYmIGMuYXBwZW5kQ2hpbGQoZikgOiAoZiA9IGEoZiksIGMgJiYgZi5hcHBlbmRUbyhjKSksIGYKICAgICAgICB9LAogICAgICAgIHkgPSBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgIGIuZXYudHJpZ2dlckhhbmRsZXIobyArIGMsIGQpLCBiLnN0LmNhbGxiYWNrcyAmJiAoYyA9IGMuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjLnNsaWNlKDEpLCBiLnN0LmNhbGxiYWNrc1tjXSAmJiBiLnN0LmNhbGxiYWNrc1tjXS5hcHBseShiLCBhLmlzQXJyYXkoZCkgPyBkIDogW2RdKSkKICAgICAgICB9LAogICAgICAgIHogPSBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHJldHVybiBjID09PSBnICYmIGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuIHx8IChiLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0biA9IGEoYi5zdC5jbG9zZU1hcmt1cC5yZXBsYWNlKCIldGl0bGUlIiwgYi5zdC50Q2xvc2UpKSwgZyA9IGMpLCBiLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0bgogICAgICAgIH0sCiAgICAgICAgQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBhLm1hZ25pZmljUG9wdXAuaW5zdGFuY2UgfHwgKGIgPSBuZXcgdCwgYi5pbml0KCksIGEubWFnbmlmaWNQb3B1cC5pbnN0YW5jZSA9IGIpCiAgICAgICAgfSwKICAgICAgICBCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpLnN0eWxlLAogICAgICAgICAgICAgICAgYiA9IFsibXMiLCAiTyIsICJNb3oiLCAiV2Via2l0Il07CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGEudHJhbnNpdGlvbikgcmV0dXJuICEwOwogICAgICAgICAgICBmb3IgKDsgYi5sZW5ndGg7KQogICAgICAgICAgICAgICAgaWYgKGIucG9wKCkgKyAiVHJhbnNpdGlvbiIgaW4gYSkgcmV0dXJuICEwOwogICAgICAgICAgICByZXR1cm4gITEKICAgICAgICB9OwogICAgdC5wcm90b3R5cGUgPSB7CiAgICAgICAgY29uc3RydWN0b3I6IHQsCiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBjID0gbmF2aWdhdG9yLmFwcFZlcnNpb247CiAgICAgICAgICAgIGIuaXNMb3dJRSA9IGIuaXNJRTggPSBkb2N1bWVudC5hbGwgJiYgIWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIsIGIuaXNBbmRyb2lkID0gL2FuZHJvaWQvZ2kudGVzdChjKSwgYi5pc0lPUyA9IC9pcGhvbmV8aXBhZHxpcG9kL2dpLnRlc3QoYyksIGIuc3VwcG9ydHNUcmFuc2l0aW9uID0gQigpLCBiLnByb2JhYmx5TW9iaWxlID0gYi5pc0FuZHJvaWQgfHwgYi5pc0lPUyB8fCAvKE9wZXJhIE1pbmkpfEtpbmRsZXx3ZWJPU3xCbGFja0JlcnJ5fChPcGVyYSBNb2JpKXwoV2luZG93cyBQaG9uZSl8SUVNb2JpbGUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLCBkID0gYShkb2N1bWVudCksIGIucG9wdXBzQ2FjaGUgPSB7fQogICAgICAgIH0sCiAgICAgICAgb3BlbjogZnVuY3Rpb24oYykgewogICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgaWYgKGMuaXNPYmogPT09ICExKSB7CiAgICAgICAgICAgICAgICBiLml0ZW1zID0gYy5pdGVtcy50b0FycmF5KCksIGIuaW5kZXggPSAwOwogICAgICAgICAgICAgICAgdmFyIGcsIGggPSBjLml0ZW1zOwogICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IGgubGVuZ3RoOyBlKyspCiAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBoW2VdLCBnLnBhcnNlZCAmJiAoZyA9IGcuZWxbMF0pLCBnID09PSBjLmVsWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuaW5kZXggPSBlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGIuaXRlbXMgPSBhLmlzQXJyYXkoYy5pdGVtcykgPyBjLml0ZW1zIDogW2MuaXRlbXNdLCBiLmluZGV4ID0gYy5pbmRleCB8fCAwOwogICAgICAgICAgICBpZiAoYi5pc09wZW4pIHJldHVybiB2b2lkIGIudXBkYXRlSXRlbUhUTUwoKTsKICAgICAgICAgICAgYi50eXBlcyA9IFtdLCBmID0gIiIsIGMubWFpbkVsICYmIGMubWFpbkVsLmxlbmd0aCA/IGIuZXYgPSBjLm1haW5FbC5lcSgwKSA6IGIuZXYgPSBkLCBjLmtleSA/IChiLnBvcHVwc0NhY2hlW2Mua2V5XSB8fCAoYi5wb3B1cHNDYWNoZVtjLmtleV0gPSB7fSksIGIuY3VyclRlbXBsYXRlID0gYi5wb3B1cHNDYWNoZVtjLmtleV0pIDogYi5jdXJyVGVtcGxhdGUgPSB7fSwgYi5zdCA9IGEuZXh0ZW5kKCEwLCB7fSwgYS5tYWduaWZpY1BvcHVwLmRlZmF1bHRzLCBjKSwgYi5maXhlZENvbnRlbnRQb3MgPSAiYXV0byIgPT09IGIuc3QuZml4ZWRDb250ZW50UG9zID8gIWIucHJvYmFibHlNb2JpbGUgOiBiLnN0LmZpeGVkQ29udGVudFBvcywgYi5zdC5tb2RhbCAmJiAoYi5zdC5jbG9zZU9uQ29udGVudENsaWNrID0gITEsIGIuc3QuY2xvc2VPbkJnQ2xpY2sgPSAhMSwgYi5zdC5zaG93Q2xvc2VCdG4gPSAhMSwgYi5zdC5lbmFibGVFc2NhcGVLZXkgPSAhMSksIGIuYmdPdmVybGF5IHx8IChiLmJnT3ZlcmxheSA9IHgoImJnIikub24oImNsaWNrIiArIHAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCBiLndyYXAgPSB4KCJ3cmFwIikuYXR0cigidGFiaW5kZXgiLCAtMSkub24oImNsaWNrIiArIHAsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIGIuX2NoZWNrSWZDbG9zZShhLnRhcmdldCkgJiYgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCBiLmNvbnRhaW5lciA9IHgoImNvbnRhaW5lciIsIGIud3JhcCkpLCBiLmNvbnRlbnRDb250YWluZXIgPSB4KCJjb250ZW50IiksIGIuc3QucHJlbG9hZGVyICYmIChiLnByZWxvYWRlciA9IHgoInByZWxvYWRlciIsIGIuY29udGFpbmVyLCBiLnN0LnRMb2FkaW5nKSk7CiAgICAgICAgICAgIHZhciBpID0gYS5tYWduaWZpY1BvcHVwLm1vZHVsZXM7CiAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBpLmxlbmd0aDsgZSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgaiA9IGlbZV07CiAgICAgICAgICAgICAgICBqID0gai5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGouc2xpY2UoMSksIGJbImluaXQiICsgal0uY2FsbChiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHkoIkJlZm9yZU9wZW4iKSwgYi5zdC5zaG93Q2xvc2VCdG4gJiYgKGIuc3QuY2xvc2VCdG5JbnNpZGUgPyAodyhsLCBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICBjLmNsb3NlX3JlcGxhY2VXaXRoID0geihkLnR5cGUpCiAgICAgICAgICAgIH0pLCBmICs9ICIgbWZwLWNsb3NlLWJ0bi1pbiIpIDogYi53cmFwLmFwcGVuZCh6KCkpKSwgYi5zdC5hbGlnblRvcCAmJiAoZiArPSAiIG1mcC1hbGlnbi10b3AiKSwgYi5maXhlZENvbnRlbnRQb3MgPyBiLndyYXAuY3NzKHsKICAgICAgICAgICAgICAgIG92ZXJmbG93OiBiLnN0Lm92ZXJmbG93WSwKICAgICAgICAgICAgICAgIG92ZXJmbG93WDogImhpZGRlbiIsCiAgICAgICAgICAgICAgICBvdmVyZmxvd1k6IGIuc3Qub3ZlcmZsb3dZCiAgICAgICAgICAgIH0pIDogYi53cmFwLmNzcyh7CiAgICAgICAgICAgICAgICB0b3A6IHYuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIgogICAgICAgICAgICB9KSwgKGIuc3QuZml4ZWRCZ1BvcyA9PT0gITEgfHwgImF1dG8iID09PSBiLnN0LmZpeGVkQmdQb3MgJiYgIWIuZml4ZWRDb250ZW50UG9zKSAmJiBiLmJnT3ZlcmxheS5jc3MoewogICAgICAgICAgICAgICAgaGVpZ2h0OiBkLmhlaWdodCgpLAogICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIKICAgICAgICAgICAgfSksIGIuc3QuZW5hYmxlRXNjYXBlS2V5ICYmIGQub24oImtleXVwIiArIHAsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIDI3ID09PSBhLmtleUNvZGUgJiYgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCB2Lm9uKCJyZXNpemUiICsgcCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBiLnVwZGF0ZVNpemUoKQogICAgICAgICAgICB9KSwgYi5zdC5jbG9zZU9uQ29udGVudENsaWNrIHx8IChmICs9ICIgbWZwLWF1dG8tY3Vyc29yIiksIGYgJiYgYi53cmFwLmFkZENsYXNzKGYpOwogICAgICAgICAgICB2YXIgayA9IGIud0ggPSB2LmhlaWdodCgpLAogICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICBpZiAoYi5maXhlZENvbnRlbnRQb3MgJiYgYi5faGFzU2Nyb2xsQmFyKGspKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGIuX2dldFNjcm9sbGJhclNpemUoKTsKICAgICAgICAgICAgICAgIG8gJiYgKG4ubWFyZ2luUmlnaHQgPSBvKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGIuZml4ZWRDb250ZW50UG9zICYmIChiLmlzSUU3ID8gYSgiYm9keSwgaHRtbCIpLmNzcygib3ZlcmZsb3ciLCAiaGlkZGVuIikgOiBuLm92ZXJmbG93ID0gImhpZGRlbiIpOwogICAgICAgICAgICB2YXIgciA9IGIuc3QubWFpbkNsYXNzOwogICAgICAgICAgICByZXR1cm4gYi5pc0lFNyAmJiAociArPSAiIG1mcC1pZTciKSwgciAmJiBiLl9hZGRDbGFzc1RvTUZQKHIpLCBiLnVwZGF0ZUl0ZW1IVE1MKCksIHkoIkJ1aWxkQ29udHJvbHMiKSwgYSgiaHRtbCIpLmNzcyhuKSwgYi5iZ092ZXJsYXkuYWRkKGIud3JhcCkucHJlcGVuZFRvKGIuc3QucHJlcGVuZFRvIHx8IGEoZG9jdW1lbnQuYm9keSkpLCBiLl9sYXN0Rm9jdXNlZEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuY29udGVudCA/IChiLl9hZGRDbGFzc1RvTUZQKHEpLCBiLl9zZXRGb2N1cygpKSA6IGIuYmdPdmVybGF5LmFkZENsYXNzKHEpLCBkLm9uKCJmb2N1c2luIiArIHAsIGIuX29uRm9jdXNJbikKICAgICAgICAgICAgfSwgMTYpLCBiLmlzT3BlbiA9ICEwLCBiLnVwZGF0ZVNpemUoayksIHkobSksIGMKICAgICAgICB9LAogICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYi5pc09wZW4gJiYgKHkoaSksIGIuaXNPcGVuID0gITEsIGIuc3QucmVtb3ZhbERlbGF5ICYmICFiLmlzTG93SUUgJiYgYi5zdXBwb3J0c1RyYW5zaXRpb24gPyAoYi5fYWRkQ2xhc3NUb01GUChyKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuX2Nsb3NlKCkKICAgICAgICAgICAgfSwgYi5zdC5yZW1vdmFsRGVsYXkpKSA6IGIuX2Nsb3NlKCkpCiAgICAgICAgfSwKICAgICAgICBfY2xvc2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB5KGgpOwogICAgICAgICAgICB2YXIgYyA9IHIgKyAiICIgKyBxICsgIiAiOwogICAgICAgICAgICBpZiAoYi5iZ092ZXJsYXkuZGV0YWNoKCksIGIud3JhcC5kZXRhY2goKSwgYi5jb250YWluZXIuZW1wdHkoKSwgYi5zdC5tYWluQ2xhc3MgJiYgKGMgKz0gYi5zdC5tYWluQ2xhc3MgKyAiICIpLCBiLl9yZW1vdmVDbGFzc0Zyb21NRlAoYyksIGIuZml4ZWRDb250ZW50UG9zKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogIiIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBiLmlzSUU3ID8gYSgiYm9keSwgaHRtbCIpLmNzcygib3ZlcmZsb3ciLCAiIikgOiBlLm92ZXJmbG93ID0gIiIsIGEoImh0bWwiKS5jc3MoZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBkLm9mZigia2V5dXAiICsgcCArICIgZm9jdXNpbiIgKyBwKSwgYi5ldi5vZmYocCksIGIud3JhcC5hdHRyKCJjbGFzcyIsICJtZnAtd3JhcCIpLnJlbW92ZUF0dHIoInN0eWxlIiksIGIuYmdPdmVybGF5LmF0dHIoImNsYXNzIiwgIm1mcC1iZyIpLCBiLmNvbnRhaW5lci5hdHRyKCJjbGFzcyIsICJtZnAtY29udGFpbmVyIiksICFiLnN0LnNob3dDbG9zZUJ0biB8fCBiLnN0LmNsb3NlQnRuSW5zaWRlICYmIGIuY3VyclRlbXBsYXRlW2IuY3Vyckl0ZW0udHlwZV0gIT09ICEwIHx8IGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuICYmIGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuLmRldGFjaCgpLCBiLnN0LmF1dG9Gb2N1c0xhc3QgJiYgYi5fbGFzdEZvY3VzZWRFbCAmJiBhKGIuX2xhc3RGb2N1c2VkRWwpLmZvY3VzKCksIGIuY3Vyckl0ZW0gPSBudWxsLCBiLmNvbnRlbnQgPSBudWxsLCBiLmN1cnJUZW1wbGF0ZSA9IG51bGwsIGIucHJldkhlaWdodCA9IDAsIHkoaikKICAgICAgICB9LAogICAgICAgIHVwZGF0ZVNpemU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgaWYgKGIuaXNJT1MpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gd2luZG93LmlubmVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgZCA9IHdpbmRvdy5pbm5lckhlaWdodCAqIGM7CiAgICAgICAgICAgICAgICBiLndyYXAuY3NzKCJoZWlnaHQiLCBkKSwgYi53SCA9IGQKICAgICAgICAgICAgfSBlbHNlIGIud0ggPSBhIHx8IHYuaGVpZ2h0KCk7CiAgICAgICAgICAgIGIuZml4ZWRDb250ZW50UG9zIHx8IGIud3JhcC5jc3MoImhlaWdodCIsIGIud0gpLCB5KCJSZXNpemUiKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlSXRlbUhUTUw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYyA9IGIuaXRlbXNbYi5pbmRleF07CiAgICAgICAgICAgIGIuY29udGVudENvbnRhaW5lci5kZXRhY2goKSwgYi5jb250ZW50ICYmIGIuY29udGVudC5kZXRhY2goKSwgYy5wYXJzZWQgfHwgKGMgPSBiLnBhcnNlRWwoYi5pbmRleCkpOwogICAgICAgICAgICB2YXIgZCA9IGMudHlwZTsKICAgICAgICAgICAgaWYgKHkoIkJlZm9yZUNoYW5nZSIsIFtiLmN1cnJJdGVtID8gYi5jdXJySXRlbS50eXBlIDogIiIsIGRdKSwgYi5jdXJySXRlbSA9IGMsICFiLmN1cnJUZW1wbGF0ZVtkXSkgewogICAgICAgICAgICAgICAgdmFyIGYgPSBiLnN0W2RdID8gYi5zdFtkXS5tYXJrdXAgOiAhMTsKICAgICAgICAgICAgICAgIHkoIkZpcnN0TWFya3VwUGFyc2UiLCBmKSwgZiA/IGIuY3VyclRlbXBsYXRlW2RdID0gYShmKSA6IGIuY3VyclRlbXBsYXRlW2RdID0gITAKICAgICAgICAgICAgfQogICAgICAgICAgICBlICYmIGUgIT09IGMudHlwZSAmJiBiLmNvbnRhaW5lci5yZW1vdmVDbGFzcygibWZwLSIgKyBlICsgIi1ob2xkZXIiKTsKICAgICAgICAgICAgdmFyIGcgPSBiWyJnZXQiICsgZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGQuc2xpY2UoMSldKGMsIGIuY3VyclRlbXBsYXRlW2RdKTsKICAgICAgICAgICAgYi5hcHBlbmRDb250ZW50KGcsIGQpLCBjLnByZWxvYWRlZCA9ICEwLCB5KG4sIGMpLCBlID0gYy50eXBlLCBiLmNvbnRhaW5lci5wcmVwZW5kKGIuY29udGVudENvbnRhaW5lciksIHkoIkFmdGVyQ2hhbmdlIikKICAgICAgICB9LAogICAgICAgIGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgYi5jb250ZW50ID0gYSwgYSA/IGIuc3Quc2hvd0Nsb3NlQnRuICYmIGIuc3QuY2xvc2VCdG5JbnNpZGUgJiYgYi5jdXJyVGVtcGxhdGVbY10gPT09ICEwID8gYi5jb250ZW50LmZpbmQoIi5tZnAtY2xvc2UiKS5sZW5ndGggfHwgYi5jb250ZW50LmFwcGVuZCh6KCkpIDogYi5jb250ZW50ID0gYSA6IGIuY29udGVudCA9ICIiLCB5KGspLCBiLmNvbnRhaW5lci5hZGRDbGFzcygibWZwLSIgKyBjICsgIi1ob2xkZXIiKSwgYi5jb250ZW50Q29udGFpbmVyLmFwcGVuZChiLmNvbnRlbnQpCiAgICAgICAgfSwKICAgICAgICBwYXJzZUVsOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHZhciBkLCBlID0gYi5pdGVtc1tjXTsKICAgICAgICAgICAgaWYgKGUudGFnTmFtZSA/IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgZWw6IGEoZSkKICAgICAgICAgICAgICAgIH0gOiAoZCA9IGUudHlwZSwgZSA9IHsKICAgICAgICAgICAgICAgICAgICBkYXRhOiBlLAogICAgICAgICAgICAgICAgICAgIHNyYzogZS5zcmMKICAgICAgICAgICAgICAgIH0pLCBlLmVsKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBmID0gYi50eXBlcywgZyA9IDA7IGcgPCBmLmxlbmd0aDsgZysrKQogICAgICAgICAgICAgICAgICAgIGlmIChlLmVsLmhhc0NsYXNzKCJtZnAtIiArIGZbZ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmW2ddOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUuc3JjID0gZS5lbC5hdHRyKCJkYXRhLW1mcC1zcmMiKSwgZS5zcmMgfHwgKGUuc3JjID0gZS5lbC5hdHRyKCJocmVmIikpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUudHlwZSA9IGQgfHwgYi5zdC50eXBlIHx8ICJpbmxpbmUiLCBlLmluZGV4ID0gYywgZS5wYXJzZWQgPSAhMCwgYi5pdGVtc1tjXSA9IGUsIHkoIkVsZW1lbnRQYXJzZSIsIGUpLCBiLml0ZW1zW2NdCiAgICAgICAgfSwKICAgICAgICBhZGRHcm91cDogZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIGQubWZwRWwgPSB0aGlzLCBiLl9vcGVuQ2xpY2soZCwgYSwgYykKICAgICAgICAgICAgfTsKICAgICAgICAgICAgYyB8fCAoYyA9IHt9KTsKICAgICAgICAgICAgdmFyIGUgPSAiY2xpY2subWFnbmlmaWNQb3B1cCI7CiAgICAgICAgICAgIGMubWFpbkVsID0gYSwgYy5pdGVtcyA/IChjLmlzT2JqID0gITAsIGEub2ZmKGUpLm9uKGUsIGQpKSA6IChjLmlzT2JqID0gITEsIGMuZGVsZWdhdGUgPyBhLm9mZihlKS5vbihlLCBjLmRlbGVnYXRlLCBkKSA6IChjLml0ZW1zID0gYSwgYS5vZmYoZSkub24oZSwgZCkpKQogICAgICAgIH0sCiAgICAgICAgX29wZW5DbGljazogZnVuY3Rpb24oYywgZCwgZSkgewogICAgICAgICAgICB2YXIgZiA9IHZvaWQgMCAhPT0gZS5taWRDbGljayA/IGUubWlkQ2xpY2sgOiBhLm1hZ25pZmljUG9wdXAuZGVmYXVsdHMubWlkQ2xpY2s7CiAgICAgICAgICAgIGlmIChmIHx8ICEoMiA9PT0gYy53aGljaCB8fCBjLmN0cmxLZXkgfHwgYy5tZXRhS2V5IHx8IGMuYWx0S2V5IHx8IGMuc2hpZnRLZXkpKSB7CiAgICAgICAgICAgICAgICB2YXIgZyA9IHZvaWQgMCAhPT0gZS5kaXNhYmxlT24gPyBlLmRpc2FibGVPbiA6IGEubWFnbmlmaWNQb3B1cC5kZWZhdWx0cy5kaXNhYmxlT247CiAgICAgICAgICAgICAgICBpZiAoZykKICAgICAgICAgICAgICAgICAgICBpZiAoYS5pc0Z1bmN0aW9uKGcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZy5jYWxsKGIpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHYud2lkdGgoKSA8IGcpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIGMudHlwZSAmJiAoYy5wcmV2ZW50RGVmYXVsdCgpLCBiLmlzT3BlbiAmJiBjLnN0b3BQcm9wYWdhdGlvbigpKSwgZS5lbCA9IGEoYy5tZnBFbCksIGUuZGVsZWdhdGUgJiYgKGUuaXRlbXMgPSBkLmZpbmQoZS5kZWxlZ2F0ZSkpLCBiLm9wZW4oZSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihhLCBkKSB7CiAgICAgICAgICAgIGlmIChiLnByZWxvYWRlcikgewogICAgICAgICAgICAgICAgYyAhPT0gYSAmJiBiLmNvbnRhaW5lci5yZW1vdmVDbGFzcygibWZwLXMtIiArIGMpLCBkIHx8ICJsb2FkaW5nIiAhPT0gYSB8fCAoZCA9IGIuc3QudExvYWRpbmcpOwogICAgICAgICAgICAgICAgdmFyIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBhLAogICAgICAgICAgICAgICAgICAgIHRleHQ6IGQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB5KCJVcGRhdGVTdGF0dXMiLCBlKSwgYSA9IGUuc3RhdHVzLCBkID0gZS50ZXh0LCBiLnByZWxvYWRlci5odG1sKGQpLCBiLnByZWxvYWRlci5maW5kKCJhIikub24oImNsaWNrIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkKICAgICAgICAgICAgICAgIH0pLCBiLmNvbnRhaW5lci5hZGRDbGFzcygibWZwLXMtIiArIGEpLCBjID0gYQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfY2hlY2tJZkNsb3NlOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIGlmICghYShjKS5oYXNDbGFzcyhzKSkgewogICAgICAgICAgICAgICAgdmFyIGQgPSBiLnN0LmNsb3NlT25Db250ZW50Q2xpY2ssCiAgICAgICAgICAgICAgICAgICAgZSA9IGIuc3QuY2xvc2VPbkJnQ2xpY2s7CiAgICAgICAgICAgICAgICBpZiAoZCAmJiBlKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAoIWIuY29udGVudCB8fCBhKGMpLmhhc0NsYXNzKCJtZnAtY2xvc2UiKSB8fCBiLnByZWxvYWRlciAmJiBjID09PSBiLnByZWxvYWRlclswXSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgaWYgKGMgPT09IGIuY29udGVudFswXSB8fCBhLmNvbnRhaW5zKGIuY29udGVudFswXSwgYykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZCkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUgJiYgYS5jb250YWlucyhkb2N1bWVudCwgYykpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfYWRkQ2xhc3NUb01GUDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICBiLmJnT3ZlcmxheS5hZGRDbGFzcyhhKSwgYi53cmFwLmFkZENsYXNzKGEpCiAgICAgICAgfSwKICAgICAgICBfcmVtb3ZlQ2xhc3NGcm9tTUZQOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHRoaXMuYmdPdmVybGF5LnJlbW92ZUNsYXNzKGEpLCBiLndyYXAucmVtb3ZlQ2xhc3MoYSkKICAgICAgICB9LAogICAgICAgIF9oYXNTY3JvbGxCYXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIChiLmlzSUU3ID8gZC5oZWlnaHQoKSA6IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KSA+IChhIHx8IHYuaGVpZ2h0KCkpCiAgICAgICAgfSwKICAgICAgICBfc2V0Rm9jdXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAoYi5zdC5mb2N1cyA/IGIuY29udGVudC5maW5kKGIuc3QuZm9jdXMpLmVxKDApIDogYi53cmFwKS5mb2N1cygpCiAgICAgICAgfSwKICAgICAgICBfb25Gb2N1c0luOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHJldHVybiBjLnRhcmdldCA9PT0gYi53cmFwWzBdIHx8IGEuY29udGFpbnMoYi53cmFwWzBdLCBjLnRhcmdldCkgPyB2b2lkIDAgOiAoYi5fc2V0Rm9jdXMoKSwgITEpCiAgICAgICAgfSwKICAgICAgICBfcGFyc2VNYXJrdXA6IGZ1bmN0aW9uKGIsIGMsIGQpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIGQuZGF0YSAmJiAoYyA9IGEuZXh0ZW5kKGQuZGF0YSwgYykpLCB5KGwsIFtiLCBjLCBkXSksIGEuZWFjaChjLCBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBkIHx8IGQgPT09ICExKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAoZSA9IGMuc3BsaXQoIl8iKSwgZS5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBiLmZpbmQocCArICItIiArIGVbMF0pOwogICAgICAgICAgICAgICAgICAgIGlmIChmLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBlWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZVdpdGgiID09PSBnID8gZlswXSAhPT0gZFswXSAmJiBmLnJlcGxhY2VXaXRoKGQpIDogImltZyIgPT09IGcgPyBmLmlzKCJpbWciKSA/IGYuYXR0cigic3JjIiwgZCkgOiBmLnJlcGxhY2VXaXRoKGEoIjxpbWc+IikuYXR0cigic3JjIiwgZCkuYXR0cigiY2xhc3MiLCBmLmF0dHIoImNsYXNzIikpKSA6IGYuYXR0cihlWzFdLCBkKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBiLmZpbmQocCArICItIiArIGMpLmh0bWwoZCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9nZXRTY3JvbGxiYXJTaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYi5zY3JvbGxiYXJTaXplKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgICAgYS5zdHlsZS5jc3NUZXh0ID0gIndpZHRoOiA5OXB4OyBoZWlnaHQ6IDk5cHg7IG92ZXJmbG93OiBzY3JvbGw7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtOTk5OXB4OyIsIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksIGIuc2Nyb2xsYmFyU2l6ZSA9IGEub2Zmc2V0V2lkdGggLSBhLmNsaWVudFdpZHRoLCBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGIuc2Nyb2xsYmFyU2l6ZQogICAgICAgIH0KICAgIH0sIGEubWFnbmlmaWNQb3B1cCA9IHsKICAgICAgICBpbnN0YW5jZTogbnVsbCwKICAgICAgICBwcm90bzogdC5wcm90b3R5cGUsCiAgICAgICAgbW9kdWxlczogW10sCiAgICAgICAgb3BlbjogZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICByZXR1cm4gQSgpLCBiID0gYiA/IGEuZXh0ZW5kKCEwLCB7fSwgYikgOiB7fSwgYi5pc09iaiA9ICEwLCBiLmluZGV4ID0gYyB8fCAwLCB0aGlzLmluc3RhbmNlLm9wZW4oYikKICAgICAgICB9LAogICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGEubWFnbmlmaWNQb3B1cC5pbnN0YW5jZSAmJiBhLm1hZ25pZmljUG9wdXAuaW5zdGFuY2UuY2xvc2UoKQogICAgICAgIH0sCiAgICAgICAgcmVnaXN0ZXJNb2R1bGU6IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgYy5vcHRpb25zICYmIChhLm1hZ25pZmljUG9wdXAuZGVmYXVsdHNbYl0gPSBjLm9wdGlvbnMpLCBhLmV4dGVuZCh0aGlzLnByb3RvLCBjLnByb3RvKSwgdGhpcy5tb2R1bGVzLnB1c2goYikKICAgICAgICB9LAogICAgICAgIGRlZmF1bHRzOiB7CiAgICAgICAgICAgIGRpc2FibGVPbjogMCwKICAgICAgICAgICAga2V5OiBudWxsLAogICAgICAgICAgICBtaWRDbGljazogITEsCiAgICAgICAgICAgIG1haW5DbGFzczogIiIsCiAgICAgICAgICAgIHByZWxvYWRlcjogITAsCiAgICAgICAgICAgIGZvY3VzOiAiIiwKICAgICAgICAgICAgY2xvc2VPbkNvbnRlbnRDbGljazogITEsCiAgICAgICAgICAgIGNsb3NlT25CZ0NsaWNrOiAhMCwKICAgICAgICAgICAgY2xvc2VCdG5JbnNpZGU6ICEwLAogICAgICAgICAgICBzaG93Q2xvc2VCdG46ICEwLAogICAgICAgICAgICBlbmFibGVFc2NhcGVLZXk6ICEwLAogICAgICAgICAgICBtb2RhbDogITEsCiAgICAgICAgICAgIGFsaWduVG9wOiAhMSwKICAgICAgICAgICAgcmVtb3ZhbERlbGF5OiAwLAogICAgICAgICAgICBwcmVwZW5kVG86IG51bGwsCiAgICAgICAgICAgIGZpeGVkQ29udGVudFBvczogImF1dG8iLAogICAgICAgICAgICBmaXhlZEJnUG9zOiAiYXV0byIsCiAgICAgICAgICAgIG92ZXJmbG93WTogImF1dG8iLAogICAgICAgICAgICBjbG9zZU1hcmt1cDogJzxidXR0b24gdGl0bGU9IiV0aXRsZSUiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1mcC1jbG9zZSI+JiMyMTU7PC9idXR0b24+JywKICAgICAgICAgICAgdENsb3NlOiAiQ2xvc2UgKEVzYykiLAogICAgICAgICAgICB0TG9hZGluZzogIkxvYWRpbmcuLi4iLAogICAgICAgICAgICBhdXRvRm9jdXNMYXN0OiAhMAogICAgICAgIH0KICAgIH0sIGEuZm4ubWFnbmlmaWNQb3B1cCA9IGZ1bmN0aW9uKGMpIHsKICAgICAgICBBKCk7CiAgICAgICAgdmFyIGQgPSBhKHRoaXMpOwogICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgYykKICAgICAgICAgICAgaWYgKCJvcGVuIiA9PT0gYykgewogICAgICAgICAgICAgICAgdmFyIGUsIGYgPSB1ID8gZC5kYXRhKCJtYWduaWZpY1BvcHVwIikgOiBkWzBdLm1hZ25pZmljUG9wdXAsCiAgICAgICAgICAgICAgICAgICAgZyA9IHBhcnNlSW50KGFyZ3VtZW50c1sxXSwgMTApIHx8IDA7CiAgICAgICAgICAgICAgICBmLml0ZW1zID8gZSA9IGYuaXRlbXNbZ10gOiAoZSA9IGQsIGYuZGVsZWdhdGUgJiYgKGUgPSBlLmZpbmQoZi5kZWxlZ2F0ZSkpLCBlID0gZS5lcShnKSksIGIuX29wZW5DbGljayh7CiAgICAgICAgICAgICAgICAgICAgbWZwRWw6IGUKICAgICAgICAgICAgICAgIH0sIGQsIGYpCiAgICAgICAgICAgIH0gZWxzZSBiLmlzT3BlbiAmJiBiW2NdLmFwcGx5KGIsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwogICAgICAgIGVsc2UgYyA9IGEuZXh0ZW5kKCEwLCB7fSwgYyksIHUgPyBkLmRhdGEoIm1hZ25pZmljUG9wdXAiLCBjKSA6IGRbMF0ubWFnbmlmaWNQb3B1cCA9IGMsIGIuYWRkR3JvdXAoZCwgYyk7CiAgICAgICAgcmV0dXJuIGQKICAgIH07CiAgICB2YXIgQywgRCwgRSwgRiA9ICJpbmxpbmUiLAogICAgICAgIEcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgRSAmJiAoRC5hZnRlcihFLmFkZENsYXNzKEMpKS5kZXRhY2goKSwgRSA9IG51bGwpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShGLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBoaWRkZW5DbGFzczogImhpZGUiLAogICAgICAgICAgICBtYXJrdXA6ICIiLAogICAgICAgICAgICB0Tm90Rm91bmQ6ICJDb250ZW50IG5vdCBmb3VuZCIKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRJbmxpbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi50eXBlcy5wdXNoKEYpLCB3KGggKyAiLiIgKyBGLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBHKCkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldElubGluZTogZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICAgICAgaWYgKEcoKSwgYy5zcmMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGIuc3QuaW5saW5lLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gYShjLnNyYyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZlswXS5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICBnICYmIGcudGFnTmFtZSAmJiAoRCB8fCAoQyA9IGUuaGlkZGVuQ2xhc3MsIEQgPSB4KEMpLCBDID0gIm1mcC0iICsgQyksIEUgPSBmLmFmdGVyKEQpLmRldGFjaCgpLnJlbW92ZUNsYXNzKEMpKSwgYi51cGRhdGVTdGF0dXMoInJlYWR5IikKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgZS50Tm90Rm91bmQpLCBmID0gYSgiPGRpdj4iKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5pbmxpbmVFbGVtZW50ID0gZiwgZgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpLCBiLl9wYXJzZU1hcmt1cChkLCB7fSwgYyksIGQKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEgsIEkgPSAiYWpheCIsCiAgICAgICAgSiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBIICYmIGEoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoSCkKICAgICAgICB9LAogICAgICAgIEsgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgSigpLCBiLnJlcSAmJiBiLnJlcS5hYm9ydCgpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShJLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBzZXR0aW5nczogbnVsbCwKICAgICAgICAgICAgY3Vyc29yOiAibWZwLWFqYXgtY3VyIiwKICAgICAgICAgICAgdEVycm9yOiAnPGEgaHJlZj0iJXVybCUiPlRoZSBjb250ZW50PC9hPiBjb3VsZCBub3QgYmUgbG9hZGVkLicKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRBamF4OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIudHlwZXMucHVzaChJKSwgSCA9IGIuc3QuYWpheC5jdXJzb3IsIHcoaCArICIuIiArIEksIEspLCB3KCJCZWZvcmVDaGFuZ2UuIiArIEksIEspCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEFqYXg6IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgIEggJiYgYShkb2N1bWVudC5ib2R5KS5hZGRDbGFzcyhIKSwgYi51cGRhdGVTdGF0dXMoImxvYWRpbmciKTsKICAgICAgICAgICAgICAgIHZhciBkID0gYS5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIHVybDogYy5zcmMsCiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZCwgZSwgZikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHI6IGYKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgeSgiUGFyc2VBamF4IiwgZyksIGIuYXBwZW5kQ29udGVudChhKGcuZGF0YSksIEkpLCBjLmZpbmlzaGVkID0gITAsIEooKSwgYi5fc2V0Rm9jdXMoKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIud3JhcC5hZGRDbGFzcyhxKQogICAgICAgICAgICAgICAgICAgICAgICB9LCAxNiksIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpLCB5KCJBamF4Q29udGVudEFkZGVkIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgSigpLCBjLmZpbmlzaGVkID0gYy5sb2FkRXJyb3IgPSAhMCwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgYi5zdC5hamF4LnRFcnJvci5yZXBsYWNlKCIldXJsJSIsIGMuc3JjKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBiLnN0LmFqYXguc2V0dGluZ3MpOwogICAgICAgICAgICAgICAgcmV0dXJuIGIucmVxID0gYS5hamF4KGQpLCAiIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgTCwgTSA9IGZ1bmN0aW9uKGMpIHsKICAgICAgICBpZiAoYy5kYXRhICYmIHZvaWQgMCAhPT0gYy5kYXRhLnRpdGxlKSByZXR1cm4gYy5kYXRhLnRpdGxlOwogICAgICAgIHZhciBkID0gYi5zdC5pbWFnZS50aXRsZVNyYzsKICAgICAgICBpZiAoZCkgewogICAgICAgICAgICBpZiAoYS5pc0Z1bmN0aW9uKGQpKSByZXR1cm4gZC5jYWxsKGIsIGMpOwogICAgICAgICAgICBpZiAoYy5lbCkgcmV0dXJuIGMuZWwuYXR0cihkKSB8fCAiIgogICAgICAgIH0KICAgICAgICByZXR1cm4gIiIKICAgIH07CiAgICBhLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoImltYWdlIiwgewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgbWFya3VwOiAnPGRpdiBjbGFzcz0ibWZwLWZpZ3VyZSI+PGRpdiBjbGFzcz0ibWZwLWNsb3NlIj48L2Rpdj48ZmlndXJlPjxkaXYgY2xhc3M9Im1mcC1pbWciPjwvZGl2PjxmaWdjYXB0aW9uPjxkaXYgY2xhc3M9Im1mcC1ib3R0b20tYmFyIj48ZGl2IGNsYXNzPSJtZnAtdGl0bGUiPjwvZGl2PjxkaXYgY2xhc3M9Im1mcC1jb3VudGVyIj48L2Rpdj48L2Rpdj48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PC9kaXY+JywKICAgICAgICAgICAgY3Vyc29yOiAibWZwLXpvb20tb3V0LWN1ciIsCiAgICAgICAgICAgIHRpdGxlU3JjOiAidGl0bGUiLAogICAgICAgICAgICB2ZXJ0aWNhbEZpdDogITAsCiAgICAgICAgICAgIHRFcnJvcjogJzxhIGhyZWY9IiV1cmwlIj5UaGUgaW1hZ2U8L2E+IGNvdWxkIG5vdCBiZSBsb2FkZWQuJwogICAgICAgIH0sCiAgICAgICAgcHJvdG86IHsKICAgICAgICAgICAgaW5pdEltYWdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gYi5zdC5pbWFnZSwKICAgICAgICAgICAgICAgICAgICBkID0gIi5pbWFnZSI7CiAgICAgICAgICAgICAgICBiLnR5cGVzLnB1c2goImltYWdlIiksIHcobSArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICJpbWFnZSIgPT09IGIuY3Vyckl0ZW0udHlwZSAmJiBjLmN1cnNvciAmJiBhKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKGMuY3Vyc29yKQogICAgICAgICAgICAgICAgfSksIHcoaCArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGMuY3Vyc29yICYmIGEoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoYy5jdXJzb3IpLCB2Lm9mZigicmVzaXplIiArIHApCiAgICAgICAgICAgICAgICB9KSwgdygiUmVzaXplIiArIGQsIGIucmVzaXplSW1hZ2UpLCBiLmlzTG93SUUgJiYgdygiQWZ0ZXJDaGFuZ2UiLCBiLnJlc2l6ZUltYWdlKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZXNpemVJbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGIuY3Vyckl0ZW07CiAgICAgICAgICAgICAgICBpZiAoYSAmJiBhLmltZyAmJiBiLnN0LmltYWdlLnZlcnRpY2FsRml0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAwOwogICAgICAgICAgICAgICAgICAgIGIuaXNMb3dJRSAmJiAoYyA9IHBhcnNlSW50KGEuaW1nLmNzcygicGFkZGluZy10b3AiKSwgMTApICsgcGFyc2VJbnQoYS5pbWcuY3NzKCJwYWRkaW5nLWJvdHRvbSIpLCAxMCkpLCBhLmltZy5jc3MoIm1heC1oZWlnaHQiLCBiLndIIC0gYykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uSW1hZ2VIYXNTaXplOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICBhLmltZyAmJiAoYS5oYXNTaXplID0gITAsIEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgYS5pc0NoZWNraW5nSW1nU2l6ZSA9ICExLCB5KCJJbWFnZUhhc1NpemUiLCBhKSwgYS5pbWdIaWRkZW4gJiYgKGIuY29udGVudCAmJiBiLmNvbnRlbnQucmVtb3ZlQ2xhc3MoIm1mcC1sb2FkaW5nIiksIGEuaW1nSGlkZGVuID0gITEpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBmaW5kSW1hZ2VTaXplOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgZCA9IGEuaW1nWzBdLAogICAgICAgICAgICAgICAgICAgIGUgPSBmdW5jdGlvbihmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgTCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQubmF0dXJhbFdpZHRoID4gMCA/IHZvaWQgYi5fb25JbWFnZUhhc1NpemUoYSkgOiAoYyA+IDIwMCAmJiBjbGVhckludGVydmFsKEwpLCBjKyssIHZvaWQoMyA9PT0gYyA/IGUoMTApIDogNDAgPT09IGMgPyBlKDUwKSA6IDEwMCA9PT0gYyAmJiBlKDUwMCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBmKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBlKDEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEltYWdlOiBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IDAsCiAgICAgICAgICAgICAgICAgICAgZiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjICYmIChjLmltZ1swXS5jb21wbGV0ZSA/IChjLmltZy5vZmYoIi5tZnBsb2FkZXIiKSwgYyA9PT0gYi5jdXJySXRlbSAmJiAoYi5fb25JbWFnZUhhc1NpemUoYyksIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpKSwgYy5oYXNTaXplID0gITAsIGMubG9hZGVkID0gITAsIHkoIkltYWdlTG9hZENvbXBsZXRlIikpIDogKGUrKywgMjAwID4gZSA/IHNldFRpbWVvdXQoZiwgMTAwKSA6IGcoKSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMgJiYgKGMuaW1nLm9mZigiLm1mcGxvYWRlciIpLCBjID09PSBiLmN1cnJJdGVtICYmIChiLl9vbkltYWdlSGFzU2l6ZShjKSwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgaC50RXJyb3IucmVwbGFjZSgiJXVybCUiLCBjLnNyYykpKSwgYy5oYXNTaXplID0gITAsIGMubG9hZGVkID0gITAsIGMubG9hZEVycm9yID0gITApCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoID0gYi5zdC5pbWFnZSwKICAgICAgICAgICAgICAgICAgICBpID0gZC5maW5kKCIubWZwLWltZyIpOwogICAgICAgICAgICAgICAgaWYgKGkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGogPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgICAgICAgICAgICAgICAgICBqLmNsYXNzTmFtZSA9ICJtZnAtaW1nIiwgYy5lbCAmJiBjLmVsLmZpbmQoImltZyIpLmxlbmd0aCAmJiAoai5hbHQgPSBjLmVsLmZpbmQoImltZyIpLmF0dHIoImFsdCIpKSwgYy5pbWcgPSBhKGopLm9uKCJsb2FkLm1mcGxvYWRlciIsIGYpLm9uKCJlcnJvci5tZnBsb2FkZXIiLCBnKSwgai5zcmMgPSBjLnNyYywgaS5pcygiaW1nIikgJiYgKGMuaW1nID0gYy5pbWcuY2xvbmUoKSksIGogPSBjLmltZ1swXSwgai5uYXR1cmFsV2lkdGggPiAwID8gYy5oYXNTaXplID0gITAgOiBqLndpZHRoIHx8IChjLmhhc1NpemUgPSAhMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBiLl9wYXJzZU1hcmt1cChkLCB7CiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IE0oYyksCiAgICAgICAgICAgICAgICAgICAgaW1nX3JlcGxhY2VXaXRoOiBjLmltZwogICAgICAgICAgICAgICAgfSwgYyksIGIucmVzaXplSW1hZ2UoKSwgYy5oYXNTaXplID8gKEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgYy5sb2FkRXJyb3IgPyAoZC5hZGRDbGFzcygibWZwLWxvYWRpbmciKSwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgaC50RXJyb3IucmVwbGFjZSgiJXVybCUiLCBjLnNyYykpKSA6IChkLnJlbW92ZUNsYXNzKCJtZnAtbG9hZGluZyIpLCBiLnVwZGF0ZVN0YXR1cygicmVhZHkiKSksIGQpIDogKGIudXBkYXRlU3RhdHVzKCJsb2FkaW5nIiksIGMubG9hZGluZyA9ICEwLCBjLmhhc1NpemUgfHwgKGMuaW1nSGlkZGVuID0gITAsIGQuYWRkQ2xhc3MoIm1mcC1sb2FkaW5nIiksIGIuZmluZEltYWdlU2l6ZShjKSksIGQpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBOLCBPID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gTiAmJiAoTiA9IHZvaWQgMCAhPT0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpLnN0eWxlLk1velRyYW5zZm9ybSksIE4KICAgIH07CiAgICBhLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoInpvb20iLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgZWFzaW5nOiAiZWFzZS1pbi1vdXQiLAogICAgICAgICAgICBkdXJhdGlvbjogMzAwLAogICAgICAgICAgICBvcGVuZXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLmlzKCJpbWciKSA/IGEgOiBhLmZpbmQoImltZyIpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRab29tOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhLCBjID0gYi5zdC56b29tLAogICAgICAgICAgICAgICAgICAgIGQgPSAiLnpvb20iOwogICAgICAgICAgICAgICAgaWYgKGMuZW5hYmxlZCAmJiBiLnN1cHBvcnRzVHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBmLCBnID0gYy5kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5jbG9uZSgpLnJlbW92ZUF0dHIoInN0eWxlIikucmVtb3ZlQXR0cigiY2xhc3MiKS5hZGRDbGFzcygibWZwLWFuaW1hdGVkLWltYWdlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9ICJhbGwgIiArIGMuZHVyYXRpb24gLyAxZTMgKyAicyAiICsgYy5lYXNpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJmaXhlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IjogImhpZGRlbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAidHJhbnNpdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsiLXdlYmtpdC0iICsgZl0gPSBlWyItbW96LSIgKyBmXSA9IGVbIi1vLSIgKyBmXSA9IGVbZl0gPSBkLCBiLmNzcyhlKSwgYgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmNvbnRlbnQuY3NzKCJ2aXNpYmlsaXR5IiwgInZpc2libGUiKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHcoIkJ1aWxkQ29udHJvbHMiICsgZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLl9hbGxvd1pvb20oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChlKSwgYi5jb250ZW50LmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKSwgYSA9IGIuX2dldEl0ZW1Ub1pvb20oKSwgIWEpIHJldHVybiB2b2lkIGsoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBqKGEpLCBmLmNzcyhiLl9nZXRPZmZzZXQoKSksIGIud3JhcC5hcHBlbmQoZiksIGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYuY3NzKGIuX2dldE9mZnNldCghMCkpLCBlID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaygpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5yZW1vdmUoKSwgYSA9IGYgPSBudWxsLCB5KCJab29tQW5pbWF0aW9uRW5kZWQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdyhpICsgZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLl9hbGxvd1pvb20oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChlKSwgYi5zdC5yZW1vdmFsRGVsYXkgPSBnLCAhYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYi5fZ2V0SXRlbVRvWm9vbSgpLCAhYSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBqKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmNzcyhiLl9nZXRPZmZzZXQoITApKSwgYi53cmFwLmFwcGVuZChmKSwgYi5jb250ZW50LmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmNzcyhiLl9nZXRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDE2KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIHcoaCArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBiLl9hbGxvd1pvb20oKSAmJiAoaygpLCBmICYmIGYucmVtb3ZlKCksIGEgPSBudWxsKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9hbGxvd1pvb206IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJpbWFnZSIgPT09IGIuY3Vyckl0ZW0udHlwZQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0SXRlbVRvWm9vbTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYi5jdXJySXRlbS5oYXNTaXplID8gYi5jdXJySXRlbS5pbWcgOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0T2Zmc2V0OiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICB2YXIgZDsKICAgICAgICAgICAgICAgIGQgPSBjID8gYi5jdXJySXRlbS5pbWcgOiBiLnN0Lnpvb20ub3BlbmVyKGIuY3Vyckl0ZW0uZWwgfHwgYi5jdXJySXRlbSk7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGQub2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAgZiA9IHBhcnNlSW50KGQuY3NzKCJwYWRkaW5nLXRvcCIpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgZyA9IHBhcnNlSW50KGQuY3NzKCJwYWRkaW5nLWJvdHRvbSIpLCAxMCk7CiAgICAgICAgICAgICAgICBlLnRvcCAtPSBhKHdpbmRvdykuc2Nyb2xsVG9wKCkgLSBmOwogICAgICAgICAgICAgICAgdmFyIGggPSB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGQud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICh1ID8gZC5pbm5lckhlaWdodCgpIDogZFswXS5vZmZzZXRIZWlnaHQpIC0gZyAtIGYKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gTygpID8gaFsiLW1vei10cmFuc2Zvcm0iXSA9IGgudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgZS5sZWZ0ICsgInB4LCIgKyBlLnRvcCArICJweCkiIDogKGgubGVmdCA9IGUubGVmdCwgaC50b3AgPSBlLnRvcCksIGgKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIFAgPSAiaWZyYW1lIiwKICAgICAgICBRID0gIi8vYWJvdXQ6YmxhbmsiLAogICAgICAgIFIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGlmIChiLmN1cnJUZW1wbGF0ZVtQXSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBiLmN1cnJUZW1wbGF0ZVtQXS5maW5kKCJpZnJhbWUiKTsKICAgICAgICAgICAgICAgIGMubGVuZ3RoICYmIChhIHx8IChjWzBdLnNyYyA9IFEpLCBiLmlzSUU4ICYmIGMuY3NzKCJkaXNwbGF5IiwgYSA/ICJibG9jayIgOiAibm9uZSIpKQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShQLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBtYXJrdXA6ICc8ZGl2IGNsYXNzPSJtZnAtaWZyYW1lLXNjYWxlciI+PGRpdiBjbGFzcz0ibWZwLWNsb3NlIj48L2Rpdj48aWZyYW1lIGNsYXNzPSJtZnAtaWZyYW1lIiBzcmM9Ii8vYWJvdXQ6YmxhbmsiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+PC9kaXY+JywKICAgICAgICAgICAgc3JjQWN0aW9uOiAiaWZyYW1lX3NyYyIsCiAgICAgICAgICAgIHBhdHRlcm5zOiB7CiAgICAgICAgICAgICAgICB5b3V0dWJlOiB7CiAgICAgICAgICAgICAgICAgICAgaW5kZXg6ICJ5b3V0dWJlLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgaWQ6ICJ2PSIsCiAgICAgICAgICAgICAgICAgICAgc3JjOiAiLy93d3cueW91dHViZS5jb20vZW1iZWQvJWlkJT9hdXRvcGxheT0xIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHZpbWVvOiB7CiAgICAgICAgICAgICAgICAgICAgaW5kZXg6ICJ2aW1lby5jb20vIiwKICAgICAgICAgICAgICAgICAgICBpZDogIi8iLAogICAgICAgICAgICAgICAgICAgIHNyYzogIi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8laWQlP2F1dG9wbGF5PTEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ21hcHM6IHsKICAgICAgICAgICAgICAgICAgICBpbmRleDogIi8vbWFwcy5nb29nbGUuIiwKICAgICAgICAgICAgICAgICAgICBzcmM6ICIlaWQlJm91dHB1dD1lbWJlZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcHJvdG86IHsKICAgICAgICAgICAgaW5pdElmcmFtZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBiLnR5cGVzLnB1c2goUCksIHcoIkJlZm9yZUNoYW5nZSIsIGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICBiICE9PSBjICYmIChiID09PSBQID8gUigpIDogYyA9PT0gUCAmJiBSKCEwKSkKICAgICAgICAgICAgICAgIH0pLCB3KGggKyAiLiIgKyBQLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBSKCkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldElmcmFtZTogZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBjLnNyYywKICAgICAgICAgICAgICAgICAgICBmID0gYi5zdC5pZnJhbWU7CiAgICAgICAgICAgICAgICBhLmVhY2goZi5wYXR0ZXJucywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5kZXhPZih0aGlzLmluZGV4KSA+IC0xID8gKHRoaXMuaWQgJiYgKGUgPSAic3RyaW5nIiA9PSB0eXBlb2YgdGhpcy5pZCA/IGUuc3Vic3RyKGUubGFzdEluZGV4T2YodGhpcy5pZCkgKyB0aGlzLmlkLmxlbmd0aCwgZS5sZW5ndGgpIDogdGhpcy5pZC5jYWxsKHRoaXMsIGUpKSwgZSA9IHRoaXMuc3JjLnJlcGxhY2UoIiVpZCUiLCBlKSwgITEpIDogdm9pZCAwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBnID0ge307CiAgICAgICAgICAgICAgICByZXR1cm4gZi5zcmNBY3Rpb24gJiYgKGdbZi5zcmNBY3Rpb25dID0gZSksIGIuX3BhcnNlTWFya3VwKGQsIGcsIGMpLCBiLnVwZGF0ZVN0YXR1cygicmVhZHkiKSwgZAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgUyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGMgPSBiLml0ZW1zLmxlbmd0aDsKICAgICAgICAgICAgcmV0dXJuIGEgPiBjIC0gMSA/IGEgLSBjIDogMCA+IGEgPyBjICsgYSA6IGEKICAgICAgICB9LAogICAgICAgIFQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHJldHVybiBhLnJlcGxhY2UoLyVjdXJyJS9naSwgYiArIDEpLnJlcGxhY2UoLyV0b3RhbCUvZ2ksIGMpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZSgiZ2FsbGVyeSIsIHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICBhcnJvd01hcmt1cDogJzxidXR0b24gdGl0bGU9IiV0aXRsZSUiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1mcC1hcnJvdyBtZnAtYXJyb3ctJWRpciUiPjwvYnV0dG9uPicsCiAgICAgICAgICAgIHByZWxvYWQ6IFswLCAyXSwKICAgICAgICAgICAgbmF2aWdhdGVCeUltZ0NsaWNrOiAhMCwKICAgICAgICAgICAgYXJyb3dzOiAhMCwKICAgICAgICAgICAgdFByZXY6ICJQcmV2aW91cyAoTGVmdCBhcnJvdyBrZXkpIiwKICAgICAgICAgICAgdE5leHQ6ICJOZXh0IChSaWdodCBhcnJvdyBrZXkpIiwKICAgICAgICAgICAgdENvdW50ZXI6ICIlY3VyciUgb2YgJXRvdGFsJSIKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRHYWxsZXJ5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gYi5zdC5nYWxsZXJ5LAogICAgICAgICAgICAgICAgICAgIGUgPSAiLm1mcC1nYWxsZXJ5IjsKICAgICAgICAgICAgICAgIHJldHVybiBiLmRpcmVjdGlvbiA9ICEwLCBjICYmIGMuZW5hYmxlZCA/IChmICs9ICIgbWZwLWdhbGxlcnkiLCB3KG0gKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjLm5hdmlnYXRlQnlJbWdDbGljayAmJiBiLndyYXAub24oImNsaWNrIiArIGUsICIubWZwLWltZyIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5pdGVtcy5sZW5ndGggPiAxID8gKGIubmV4dCgpLCAhMSkgOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICB9KSwgZC5vbigia2V5ZG93biIgKyBlLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIDM3ID09PSBhLmtleUNvZGUgPyBiLnByZXYoKSA6IDM5ID09PSBhLmtleUNvZGUgJiYgYi5uZXh0KCkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSksIHcoIlVwZGF0ZVN0YXR1cyIgKyBlLCBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgYy50ZXh0ICYmIChjLnRleHQgPSBUKGMudGV4dCwgYi5jdXJySXRlbS5pbmRleCwgYi5pdGVtcy5sZW5ndGgpKQogICAgICAgICAgICAgICAgfSksIHcobCArIGUsIGZ1bmN0aW9uKGEsIGQsIGUsIGYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGIuaXRlbXMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGUuY291bnRlciA9IGcgPiAxID8gVChjLnRDb3VudGVyLCBmLmluZGV4LCBnKSA6ICIiCiAgICAgICAgICAgICAgICB9KSwgdygiQnVpbGRDb250cm9scyIgKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYi5pdGVtcy5sZW5ndGggPiAxICYmIGMuYXJyb3dzICYmICFiLmFycm93TGVmdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGMuYXJyb3dNYXJrdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYi5hcnJvd0xlZnQgPSBhKGQucmVwbGFjZSgvJXRpdGxlJS9naSwgYy50UHJldikucmVwbGFjZSgvJWRpciUvZ2ksICJsZWZ0IikpLmFkZENsYXNzKHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGIuYXJyb3dSaWdodCA9IGEoZC5yZXBsYWNlKC8ldGl0bGUlL2dpLCBjLnROZXh0KS5yZXBsYWNlKC8lZGlyJS9naSwgInJpZ2h0IikpLmFkZENsYXNzKHMpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5wcmV2KCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGYuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLm5leHQoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5jb250YWluZXIuYXBwZW5kKGUuYWRkKGYpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB3KG4gKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBiLl9wcmVsb2FkVGltZW91dCAmJiBjbGVhclRpbWVvdXQoYi5fcHJlbG9hZFRpbWVvdXQpLCBiLl9wcmVsb2FkVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIucHJlbG9hZE5lYXJieUltYWdlcygpLCBiLl9wcmVsb2FkVGltZW91dCA9IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCAxNikKICAgICAgICAgICAgICAgIH0pLCB2b2lkIHcoaCArIGUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGQub2ZmKGUpLCBiLndyYXAub2ZmKCJjbGljayIgKyBlKSwgYi5hcnJvd1JpZ2h0ID0gYi5hcnJvd0xlZnQgPSBudWxsCiAgICAgICAgICAgICAgICB9KSkgOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuZGlyZWN0aW9uID0gITAsIGIuaW5kZXggPSBTKGIuaW5kZXggKyAxKSwgYi51cGRhdGVJdGVtSFRNTCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHByZXY6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi5kaXJlY3Rpb24gPSAhMSwgYi5pbmRleCA9IFMoYi5pbmRleCAtIDEpLCBiLnVwZGF0ZUl0ZW1IVE1MKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ29UbzogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgYi5kaXJlY3Rpb24gPSBhID49IGIuaW5kZXgsIGIuaW5kZXggPSBhLCBiLnVwZGF0ZUl0ZW1IVE1MKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJlbG9hZE5lYXJieUltYWdlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSwgYyA9IGIuc3QuZ2FsbGVyeS5wcmVsb2FkLAogICAgICAgICAgICAgICAgICAgIGQgPSBNYXRoLm1pbihjWzBdLCBiLml0ZW1zLmxlbmd0aCksCiAgICAgICAgICAgICAgICAgICAgZSA9IE1hdGgubWluKGNbMV0sIGIuaXRlbXMubGVuZ3RoKTsKICAgICAgICAgICAgICAgIGZvciAoYSA9IDE7IGEgPD0gKGIuZGlyZWN0aW9uID8gZSA6IGQpOyBhKyspIGIuX3ByZWxvYWRJdGVtKGIuaW5kZXggKyBhKTsKICAgICAgICAgICAgICAgIGZvciAoYSA9IDE7IGEgPD0gKGIuZGlyZWN0aW9uID8gZCA6IGUpOyBhKyspIGIuX3ByZWxvYWRJdGVtKGIuaW5kZXggLSBhKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcHJlbG9hZEl0ZW06IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgIGlmIChjID0gUyhjKSwgIWIuaXRlbXNbY10ucHJlbG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBiLml0ZW1zW2NdOwogICAgICAgICAgICAgICAgICAgIGQucGFyc2VkIHx8IChkID0gYi5wYXJzZUVsKGMpKSwgeSgiTGF6eUxvYWQiLCBkKSwgImltYWdlIiA9PT0gZC50eXBlICYmIChkLmltZyA9IGEoJzxpbWcgY2xhc3M9Im1mcC1pbWciIC8+Jykub24oImxvYWQubWZwbG9hZGVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuaGFzU2l6ZSA9ICEwCiAgICAgICAgICAgICAgICAgICAgfSkub24oImVycm9yLm1mcGxvYWRlciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBkLmhhc1NpemUgPSAhMCwgZC5sb2FkRXJyb3IgPSAhMCwgeSgiTGF6eUxvYWRFcnJvciIsIGQpCiAgICAgICAgICAgICAgICAgICAgfSkuYXR0cigic3JjIiwgZC5zcmMpKSwgZC5wcmVsb2FkZWQgPSAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgVSA9ICJyZXRpbmEiOwogICAgYS5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKFUsIHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHJlcGxhY2VTcmM6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLnNyYy5yZXBsYWNlKC9cLlx3KyQvLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJAMngiICsgYQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmF0aW86IDEKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRSZXRpbmE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID4gMSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gYi5zdC5yZXRpbmEsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhLnJhdGlvOwogICAgICAgICAgICAgICAgICAgIGMgPSBpc05hTihjKSA/IGMoKSA6IGMsIGMgPiAxICYmICh3KCJJbWFnZUhhc1NpemUuIiArIFUsIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYi5pbWcuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXgtd2lkdGgiOiBiLmltZ1swXS5uYXR1cmFsV2lkdGggLyBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICIxMDAlIgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pLCB3KCJFbGVtZW50UGFyc2UuIiArIFUsIGZ1bmN0aW9uKGIsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZC5zcmMgPSBhLnJlcGxhY2VTcmMoZCwgYykKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBBKCkKfSk7"}},"time_used":1003,"timings":{"blocked":905,"dns":0,"connect":0,"send":0,"wait":97,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-private-message/assets/js/perfect-scrollbar.jquery.min.js?ver=0.6.10","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.467Z","timestamp":1785145482467,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-private-message/assets/js/perfect-scrollbar.jquery.min.js?ver=0.6.10 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 63390\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":63390,"size_decoded":63607,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"c80b3ab299c9c19a5a17fee382c9ac46","sha1":"0846aa09d900e2985b188652dd93da222a20df8b","sha256":"7c19077efda00cbd8af46a60cc24fc7573b666535e18db4b76d8e4f29db15eb6","sha512":"627aaddb26f2ae85e78341067652908b8c6e5c5df12d9224690949dbca8412afe5e28462fbd9cbded3915dcf8cdc24c849f0721fb43bfe9883d954e91433b4c9","ssdeep":"768:ts2/5GZReXbf4tQnMouMSR6lKp5ewnLfmR9vpmUvwRpwY2XDJsRM0dI7oJo0I+md:SR8bf4+Q8+BNaLhsb2Bo0XDIC","tlshash":"3853124d66e2307951afb02edbdf420e32768053120de9807c5c9fb85fa5a741be1bad","first_seen":"2026-07-27T08:06:56.566931Z","last_seen":"2026-07-27T09:45:50.902226Z","times_seen":3,"resource_available":true,"data":"LyogcGVyZmVjdC1zY3JvbGxiYXIgdjAuNi4xMCAqLwooZnVuY3Rpb24gZSh0LCBuLCByKSB7CiAgICBmdW5jdGlvbiBzKG8sIHUpIHsKICAgICAgICBpZiAoIW5bb10pIHsKICAgICAgICAgICAgaWYgKCF0W29dKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiIgJiYgcmVxdWlyZTsKICAgICAgICAgICAgICAgIGlmICghdSAmJiBhKSByZXR1cm4gYShvLCAhMCk7CiAgICAgICAgICAgICAgICBpZiAoaSkgcmV0dXJuIGkobywgITApOwogICAgICAgICAgICAgICAgdmFyIGYgPSBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIiArIG8gKyAiJyIpOwogICAgICAgICAgICAgICAgdGhyb3cgZi5jb2RlID0gIk1PRFVMRV9OT1RfRk9VTkQiLCBmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGwgPSBuW29dID0gewogICAgICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICAgICAgfTsKICAgICAgICAgICAgdFtvXVswXS5jYWxsKGwuZXhwb3J0cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0W29dWzFdW2VdOwogICAgICAgICAgICAgICAgcmV0dXJuIHMobiA/IG4gOiBlKQogICAgICAgICAgICB9LCBsLCBsLmV4cG9ydHMsIGUsIHQsIG4sIHIpCiAgICAgICAgfQogICAgICAgIHJldHVybiBuW29dLmV4cG9ydHMKICAgIH0KICAgIHZhciBpID0gdHlwZW9mIHJlcXVpcmUgPT0gImZ1bmN0aW9uIiAmJiByZXF1aXJlOwogICAgZm9yICh2YXIgbyA9IDA7IG8gPCByLmxlbmd0aDsgbysrKSBzKHJbb10pOwogICAgcmV0dXJuIHMKfSkoewogICAgMTogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIHBzID0gcmVxdWlyZSgnLi4vbWFpbicpLAogICAgICAgICAgICBwc0luc3RhbmNlcyA9IHJlcXVpcmUoJy4uL3BsdWdpbi9pbnN0YW5jZXMnKTsKCiAgICAgICAgZnVuY3Rpb24gbW91bnRKUXVlcnkoalF1ZXJ5KSB7CiAgICAgICAgICAgIGpRdWVyeS5mbi5wZXJmZWN0U2Nyb2xsYmFyID0gZnVuY3Rpb24oc2V0dGluZ09yQ29tbWFuZCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNldHRpbmdPckNvbW1hbmQgPT09ICdvYmplY3QnIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzZXR0aW5nT3JDb21tYW5kID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIGFuIG9iamVjdCBvciBub25lLCBpbml0aWFsaXplLgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2V0dGluZ3MgPSBzZXR0aW5nT3JDb21tYW5kOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwc0luc3RhbmNlcy5nZXQodGhpcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzLmluaXRpYWxpemUodGhpcywgc2V0dGluZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5sZXNzLCBpdCBtYXkgYmUgYSBjb21tYW5kLgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29tbWFuZCA9IHNldHRpbmdPckNvbW1hbmQ7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWFuZCA9PT0gJ3VwZGF0ZScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzLnVwZGF0ZSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb21tYW5kID09PSAnZGVzdHJveScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzLmRlc3Ryb3kodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkodGhpcyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKICAgICAgICAgICAgLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLgogICAgICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgbW91bnRKUXVlcnkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBqcSA9IHdpbmRvdy5qUXVlcnkgPyB3aW5kb3cualF1ZXJ5IDogd2luZG93LiQ7CiAgICAgICAgICAgIGlmICh0eXBlb2YganEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICBtb3VudEpRdWVyeShqcSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gbW91bnRKUXVlcnk7CgogICAgfSwgewogICAgICAgICIuLi9tYWluIjogNywKICAgICAgICAiLi4vcGx1Z2luL2luc3RhbmNlcyI6IDE4CiAgICB9XSwKICAgIDI6IFtmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUsIGV4cG9ydHMpIHsKICAgICAgICAndXNlIHN0cmljdCc7CgogICAgICAgIGZ1bmN0aW9uIG9sZEFkZChlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgICAgICAgICAgdmFyIGNsYXNzZXMgPSBlbGVtZW50LmNsYXNzTmFtZS5zcGxpdCgnICcpOwogICAgICAgICAgICBpZiAoY2xhc3Nlcy5pbmRleE9mKGNsYXNzTmFtZSkgPCAwKSB7CiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goY2xhc3NOYW1lKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbignICcpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb2xkUmVtb3ZlKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgICAgICAgICB2YXIgY2xhc3NlcyA9IGVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCcgJyk7CiAgICAgICAgICAgIHZhciBpZHggPSBjbGFzc2VzLmluZGV4T2YoY2xhc3NOYW1lKTsKICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB7CiAgICAgICAgICAgICAgICBjbGFzc2VzLnNwbGljZShpZHgsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3Nlcy5qb2luKCcgJyk7CiAgICAgICAgfQoKICAgICAgICBleHBvcnRzLmFkZCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgb2xkQWRkKGVsZW1lbnQsIGNsYXNzTmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBleHBvcnRzLnJlbW92ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgb2xkUmVtb3ZlKGVsZW1lbnQsIGNsYXNzTmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBleHBvcnRzLmxpc3QgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShlbGVtZW50LmNsYXNzTGlzdCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5jbGFzc05hbWUuc3BsaXQoJyAnKTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgfSwge31dLAogICAgMzogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIERPTSA9IHt9OwoKICAgICAgICBET00uZSA9IGZ1bmN0aW9uKHRhZ05hbWUsIGNsYXNzTmFtZSkgewogICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7CiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICB9OwoKICAgICAgICBET00uYXBwZW5kVG8gPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7CiAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CiAgICAgICAgICAgIHJldHVybiBjaGlsZDsKICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBjc3NHZXQoZWxlbWVudCwgc3R5bGVOYW1lKSB7CiAgICAgICAgICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVtzdHlsZU5hbWVdOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gY3NzU2V0KGVsZW1lbnQsIHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSkgewogICAgICAgICAgICBpZiAodHlwZW9mIHN0eWxlVmFsdWUgPT09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgICBzdHlsZVZhbHVlID0gc3R5bGVWYWx1ZS50b1N0cmluZygpICsgJ3B4JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50LnN0eWxlW3N0eWxlTmFtZV0gPSBzdHlsZVZhbHVlOwogICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNzc011bHRpU2V0KGVsZW1lbnQsIG9iaikgewogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CiAgICAgICAgICAgICAgICB2YXIgdmFsID0gb2JqW2tleV07CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwudG9TdHJpbmcoKSArICdweCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlW2tleV0gPSB2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgfQoKICAgICAgICBET00uY3NzID0gZnVuY3Rpb24oZWxlbWVudCwgc3R5bGVOYW1lT3JPYmplY3QsIHN0eWxlVmFsdWUpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHlsZU5hbWVPck9iamVjdCA9PT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgICAgIC8vIG11bHRpcGxlIHNldCB3aXRoIG9iamVjdAogICAgICAgICAgICAgICAgcmV0dXJuIGNzc011bHRpU2V0KGVsZW1lbnQsIHN0eWxlTmFtZU9yT2JqZWN0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3R5bGVWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzR2V0KGVsZW1lbnQsIHN0eWxlTmFtZU9yT2JqZWN0KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1NldChlbGVtZW50LCBzdHlsZU5hbWVPck9iamVjdCwgc3R5bGVWYWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBET00ubWF0Y2hlcyA9IGZ1bmN0aW9uKGVsZW1lbnQsIHF1ZXJ5KSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudC5tYXRjaGVzICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhxdWVyeSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQubWF0Y2hlc1NlbGVjdG9yICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXNTZWxlY3RvcihxdWVyeSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LndlYmtpdE1hdGNoZXNTZWxlY3RvciAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC53ZWJraXRNYXRjaGVzU2VsZWN0b3IocXVlcnkpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudC5tb3pNYXRjaGVzU2VsZWN0b3IgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQubW96TWF0Y2hlc1NlbGVjdG9yKHF1ZXJ5KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQubXNNYXRjaGVzU2VsZWN0b3IgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQubXNNYXRjaGVzU2VsZWN0b3IocXVlcnkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgRE9NLnJlbW92ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50LnJlbW92ZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgRE9NLnF1ZXJ5Q2hpbGRyZW4gPSBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3RvcikgewogICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGVsZW1lbnQuY2hpbGROb2RlcywgZnVuY3Rpb24oY2hpbGQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBET00ubWF0Y2hlcyhjaGlsZCwgc2VsZWN0b3IpOwogICAgICAgICAgICB9KTsKICAgICAgICB9OwoKICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IERPTTsKCiAgICB9LCB7fV0sCiAgICA0OiBbZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlLCBleHBvcnRzKSB7CiAgICAgICAgJ3VzZSBzdHJpY3QnOwoKICAgICAgICB2YXIgRXZlbnRFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OwogICAgICAgICAgICB0aGlzLmV2ZW50cyA9IHt9OwogICAgICAgIH07CgogICAgICAgIEV2ZW50RWxlbWVudC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXZlbnRzW2V2ZW50TmFtZV0gPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50c1tldmVudE5hbWVdID0gW107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5ldmVudHNbZXZlbnROYW1lXS5wdXNoKGhhbmRsZXIpOwogICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIGZhbHNlKTsKICAgICAgICB9OwoKICAgICAgICBFdmVudEVsZW1lbnQucHJvdG90eXBlLnVuYmluZCA9IGZ1bmN0aW9uKGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICAgICAgICB2YXIgaXNIYW5kbGVyUHJvdmlkZWQgPSAodHlwZW9mIGhhbmRsZXIgIT09ICd1bmRlZmluZWQnKTsKICAgICAgICAgICAgdGhpcy5ldmVudHNbZXZlbnROYW1lXSA9IHRoaXMuZXZlbnRzW2V2ZW50TmFtZV0uZmlsdGVyKGZ1bmN0aW9uKGhkbHIpIHsKICAgICAgICAgICAgICAgIGlmIChpc0hhbmRsZXJQcm92aWRlZCAmJiBoZGxyICE9PSBoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhkbHIsIGZhbHNlKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSwgdGhpcyk7CiAgICAgICAgfTsKCiAgICAgICAgRXZlbnRFbGVtZW50LnByb3RvdHlwZS51bmJpbmRBbGwgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLmV2ZW50cykgewogICAgICAgICAgICAgICAgdGhpcy51bmJpbmQobmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICB2YXIgRXZlbnRNYW5hZ2VyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRFbGVtZW50cyA9IFtdOwogICAgICAgIH07CgogICAgICAgIEV2ZW50TWFuYWdlci5wcm90b3R5cGUuZXZlbnRFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB2YXIgZWUgPSB0aGlzLmV2ZW50RWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKGV2ZW50RWxlbWVudCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50RWxlbWVudC5lbGVtZW50ID09PSBlbGVtZW50OwogICAgICAgICAgICB9KVswXTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBlZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIGVlID0gbmV3IEV2ZW50RWxlbWVudChlbGVtZW50KTsKICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRFbGVtZW50cy5wdXNoKGVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZWU7CiAgICAgICAgfTsKCiAgICAgICAgRXZlbnRNYW5hZ2VyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnROYW1lLCBoYW5kbGVyKSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRFbGVtZW50KGVsZW1lbnQpLmJpbmQoZXZlbnROYW1lLCBoYW5kbGVyKTsKICAgICAgICB9OwoKICAgICAgICBFdmVudE1hbmFnZXIucHJvdG90eXBlLnVuYmluZCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICAgICAgICB0aGlzLmV2ZW50RWxlbWVudChlbGVtZW50KS51bmJpbmQoZXZlbnROYW1lLCBoYW5kbGVyKTsKICAgICAgICB9OwoKICAgICAgICBFdmVudE1hbmFnZXIucHJvdG90eXBlLnVuYmluZEFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZXZlbnRFbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5ldmVudEVsZW1lbnRzW2ldLnVuYmluZEFsbCgpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgRXZlbnRNYW5hZ2VyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnROYW1lLCBoYW5kbGVyKSB7CiAgICAgICAgICAgIHZhciBlZSA9IHRoaXMuZXZlbnRFbGVtZW50KGVsZW1lbnQpOwogICAgICAgICAgICB2YXIgb25jZUhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlZS51bmJpbmQoZXZlbnROYW1lLCBvbmNlSGFuZGxlcik7CiAgICAgICAgICAgICAgICBoYW5kbGVyKGUpOwogICAgICAgICAgICB9OwogICAgICAgICAgICBlZS5iaW5kKGV2ZW50TmFtZSwgb25jZUhhbmRsZXIpOwogICAgICAgIH07CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gRXZlbnRNYW5hZ2VyOwoKICAgIH0sIHt9XSwKICAgIDU6IFtmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUsIGV4cG9ydHMpIHsKICAgICAgICAndXNlIHN0cmljdCc7CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiBzNCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKQogICAgICAgICAgICAgICAgICAgIC50b1N0cmluZygxNikKICAgICAgICAgICAgICAgICAgICAuc3Vic3RyaW5nKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzNCgpICsgczQoKSArICctJyArIHM0KCkgKyAnLScgKyBzNCgpICsgJy0nICsKICAgICAgICAgICAgICAgICAgICBzNCgpICsgJy0nICsgczQoKSArIHM0KCkgKyBzNCgpOwogICAgICAgICAgICB9OwogICAgICAgIH0pKCk7CgogICAgfSwge31dLAogICAgNjogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIGNscyA9IHJlcXVpcmUoJy4vY2xhc3MnKSwKICAgICAgICAgICAgZCA9IHJlcXVpcmUoJy4vZG9tJyk7CgogICAgICAgIGV4cG9ydHMudG9JbnQgPSBmdW5jdGlvbih4KSB7CiAgICAgICAgICAgIHJldHVybiBwYXJzZUludCh4LCAxMCkgfHwgMDsKICAgICAgICB9OwoKICAgICAgICBleHBvcnRzLmNsb25lID0gZnVuY3Rpb24ob2JqKSB7CiAgICAgICAgICAgIGlmIChvYmogPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0ge307CiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmNsb25lKG9ialtrZXldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gb2JqOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgZXhwb3J0cy5leHRlbmQgPSBmdW5jdGlvbihvcmlnaW5hbCwgc291cmNlKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLmNsb25lKG9yaWdpbmFsKTsKICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgewogICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmNsb25lKHNvdXJjZVtrZXldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgIH07CgogICAgICAgIGV4cG9ydHMuaXNFZGl0YWJsZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgICAgIHJldHVybiBkLm1hdGNoZXMoZWwsICJpbnB1dCxbY29udGVudGVkaXRhYmxlXSIpIHx8CiAgICAgICAgICAgICAgICBkLm1hdGNoZXMoZWwsICJzZWxlY3QsW2NvbnRlbnRlZGl0YWJsZV0iKSB8fAogICAgICAgICAgICAgICAgZC5tYXRjaGVzKGVsLCAidGV4dGFyZWEsW2NvbnRlbnRlZGl0YWJsZV0iKSB8fAogICAgICAgICAgICAgICAgZC5tYXRjaGVzKGVsLCAiYnV0dG9uLFtjb250ZW50ZWRpdGFibGVdIik7CiAgICAgICAgfTsKCiAgICAgICAgZXhwb3J0cy5yZW1vdmVQc0NsYXNzZXMgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgIHZhciBjbHNMaXN0ID0gY2xzLmxpc3QoZWxlbWVudCk7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xzTGlzdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9IGNsc0xpc3RbaV07CiAgICAgICAgICAgICAgICBpZiAoY2xhc3NOYW1lLmluZGV4T2YoJ3BzLScpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgY2xzLnJlbW92ZShlbGVtZW50LCBjbGFzc05hbWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgZXhwb3J0cy5vdXRlcldpZHRoID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy50b0ludChkLmNzcyhlbGVtZW50LCAnd2lkdGgnKSkgKwogICAgICAgICAgICAgICAgdGhpcy50b0ludChkLmNzcyhlbGVtZW50LCAncGFkZGluZ0xlZnQnKSkgKwogICAgICAgICAgICAgICAgdGhpcy50b0ludChkLmNzcyhlbGVtZW50LCAncGFkZGluZ1JpZ2h0JykpICsKICAgICAgICAgICAgICAgIHRoaXMudG9JbnQoZC5jc3MoZWxlbWVudCwgJ2JvcmRlckxlZnRXaWR0aCcpKSArCiAgICAgICAgICAgICAgICB0aGlzLnRvSW50KGQuY3NzKGVsZW1lbnQsICdib3JkZXJSaWdodFdpZHRoJykpOwogICAgICAgIH07CgogICAgICAgIGV4cG9ydHMuc3RhcnRTY3JvbGxpbmcgPSBmdW5jdGlvbihlbGVtZW50LCBheGlzKSB7CiAgICAgICAgICAgIGNscy5hZGQoZWxlbWVudCwgJ3BzLWluLXNjcm9sbGluZycpOwogICAgICAgICAgICBpZiAodHlwZW9mIGF4aXMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICBjbHMuYWRkKGVsZW1lbnQsICdwcy0nICsgYXhpcyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjbHMuYWRkKGVsZW1lbnQsICdwcy14Jyk7CiAgICAgICAgICAgICAgICBjbHMuYWRkKGVsZW1lbnQsICdwcy15Jyk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBleHBvcnRzLnN0b3BTY3JvbGxpbmcgPSBmdW5jdGlvbihlbGVtZW50LCBheGlzKSB7CiAgICAgICAgICAgIGNscy5yZW1vdmUoZWxlbWVudCwgJ3BzLWluLXNjcm9sbGluZycpOwogICAgICAgICAgICBpZiAodHlwZW9mIGF4aXMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICBjbHMucmVtb3ZlKGVsZW1lbnQsICdwcy0nICsgYXhpcyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjbHMucmVtb3ZlKGVsZW1lbnQsICdwcy14Jyk7CiAgICAgICAgICAgICAgICBjbHMucmVtb3ZlKGVsZW1lbnQsICdwcy15Jyk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBleHBvcnRzLmVudiA9IHsKICAgICAgICAgICAgaXNXZWJLaXQ6ICdXZWJraXRBcHBlYXJhbmNlJyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsCiAgICAgICAgICAgIHN1cHBvcnRzVG91Y2g6ICgoJ29udG91Y2hzdGFydCcgaW4gd2luZG93KSB8fCB3aW5kb3cuRG9jdW1lbnRUb3VjaCAmJiBkb2N1bWVudCBpbnN0YW5jZW9mIHdpbmRvdy5Eb2N1bWVudFRvdWNoKSwKICAgICAgICAgICAgc3VwcG9ydHNJZVBvaW50ZXI6IHdpbmRvdy5uYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyAhPT0gbnVsbAogICAgICAgIH07CgogICAgfSwgewogICAgICAgICIuL2NsYXNzIjogMiwKICAgICAgICAiLi9kb20iOiAzCiAgICB9XSwKICAgIDc6IFtmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUsIGV4cG9ydHMpIHsKICAgICAgICAndXNlIHN0cmljdCc7CgogICAgICAgIHZhciBkZXN0cm95ID0gcmVxdWlyZSgnLi9wbHVnaW4vZGVzdHJveScpLAogICAgICAgICAgICBpbml0aWFsaXplID0gcmVxdWlyZSgnLi9wbHVnaW4vaW5pdGlhbGl6ZScpLAogICAgICAgICAgICB1cGRhdGUgPSByZXF1aXJlKCcuL3BsdWdpbi91cGRhdGUnKTsKCiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAgICAgICAgIGluaXRpYWxpemU6IGluaXRpYWxpemUsCiAgICAgICAgICAgIHVwZGF0ZTogdXBkYXRlLAogICAgICAgICAgICBkZXN0cm95OiBkZXN0cm95CiAgICAgICAgfTsKCiAgICB9LCB7CiAgICAgICAgIi4vcGx1Z2luL2Rlc3Ryb3kiOiA5LAogICAgICAgICIuL3BsdWdpbi9pbml0aWFsaXplIjogMTcsCiAgICAgICAgIi4vcGx1Z2luL3VwZGF0ZSI6IDIxCiAgICB9XSwKICAgIDg6IFtmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUsIGV4cG9ydHMpIHsKICAgICAgICAndXNlIHN0cmljdCc7CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gewogICAgICAgICAgICBtYXhTY3JvbGxiYXJMZW5ndGg6IG51bGwsCiAgICAgICAgICAgIG1pblNjcm9sbGJhckxlbmd0aDogbnVsbCwKICAgICAgICAgICAgc2Nyb2xsWE1hcmdpbk9mZnNldDogMCwKICAgICAgICAgICAgc2Nyb2xsWU1hcmdpbk9mZnNldDogMCwKICAgICAgICAgICAgc3RvcFByb3BhZ2F0aW9uT25DbGljazogdHJ1ZSwKICAgICAgICAgICAgc3VwcHJlc3NTY3JvbGxYOiBmYWxzZSwKICAgICAgICAgICAgc3VwcHJlc3NTY3JvbGxZOiBmYWxzZSwKICAgICAgICAgICAgc3dpcGVQcm9wYWdhdGlvbjogdHJ1ZSwKICAgICAgICAgICAgdXNlQm90aFdoZWVsQXhlczogZmFsc2UsCiAgICAgICAgICAgIHVzZUtleWJvYXJkOiB0cnVlLAogICAgICAgICAgICB1c2VTZWxlY3Rpb25TY3JvbGw6IGZhbHNlLAogICAgICAgICAgICB3aGVlbFByb3BhZ2F0aW9uOiBmYWxzZSwKICAgICAgICAgICAgd2hlZWxTcGVlZDogMSwKICAgICAgICAgICAgdGhlbWU6ICdkZWZhdWx0JwogICAgICAgIH07CgogICAgfSwge31dLAogICAgOTogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIGQgPSByZXF1aXJlKCcuLi9saWIvZG9tJyksCiAgICAgICAgICAgIGggPSByZXF1aXJlKCcuLi9saWIvaGVscGVyJyksCiAgICAgICAgICAgIGluc3RhbmNlcyA9IHJlcXVpcmUoJy4vaW5zdGFuY2VzJyk7CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB2YXIgaSA9IGluc3RhbmNlcy5nZXQoZWxlbWVudCk7CgogICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaS5ldmVudC51bmJpbmRBbGwoKTsKICAgICAgICAgICAgZC5yZW1vdmUoaS5zY3JvbGxiYXJYKTsKICAgICAgICAgICAgZC5yZW1vdmUoaS5zY3JvbGxiYXJZKTsKICAgICAgICAgICAgZC5yZW1vdmUoaS5zY3JvbGxiYXJYUmFpbCk7CiAgICAgICAgICAgIGQucmVtb3ZlKGkuc2Nyb2xsYmFyWVJhaWwpOwogICAgICAgICAgICBoLnJlbW92ZVBzQ2xhc3NlcyhlbGVtZW50KTsKCiAgICAgICAgICAgIGluc3RhbmNlcy5yZW1vdmUoZWxlbWVudCk7CiAgICAgICAgfTsKCiAgICB9LCB7CiAgICAgICAgIi4uL2xpYi9kb20iOiAzLAogICAgICAgICIuLi9saWIvaGVscGVyIjogNiwKICAgICAgICAiLi9pbnN0YW5jZXMiOiAxOAogICAgfV0sCiAgICAxMDogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIGggPSByZXF1aXJlKCcuLi8uLi9saWIvaGVscGVyJyksCiAgICAgICAgICAgIGluc3RhbmNlcyA9IHJlcXVpcmUoJy4uL2luc3RhbmNlcycpLAogICAgICAgICAgICB1cGRhdGVHZW9tZXRyeSA9IHJlcXVpcmUoJy4uL3VwZGF0ZS1nZW9tZXRyeScpLAogICAgICAgICAgICB1cGRhdGVTY3JvbGwgPSByZXF1aXJlKCcuLi91cGRhdGUtc2Nyb2xsJyk7CgogICAgICAgIGZ1bmN0aW9uIGJpbmRDbGlja1JhaWxIYW5kbGVyKGVsZW1lbnQsIGkpIHsKICAgICAgICAgICAgZnVuY3Rpb24gcGFnZU9mZnNldChlbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBzdG9wUHJvcGFnYXRpb24gPSB3aW5kb3cuRXZlbnQucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbi5iaW5kOwoKICAgICAgICAgICAgaWYgKGkuc2V0dGluZ3Muc3RvcFByb3BhZ2F0aW9uT25DbGljaykgewogICAgICAgICAgICAgICAgaS5ldmVudC5iaW5kKGkuc2Nyb2xsYmFyWSwgJ2NsaWNrJywgc3RvcFByb3BhZ2F0aW9uKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpLmV2ZW50LmJpbmQoaS5zY3JvbGxiYXJZUmFpbCwgJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIGhhbGZPZlNjcm9sbGJhckxlbmd0aCA9IGgudG9JbnQoaS5zY3JvbGxiYXJZSGVpZ2h0IC8gMik7CiAgICAgICAgICAgICAgICB2YXIgcG9zaXRpb25Ub3AgPSBpLnJhaWxZUmF0aW8gKiAoZS5wYWdlWSAtIHdpbmRvdy5wYWdlWU9mZnNldCAtIHBhZ2VPZmZzZXQoaS5zY3JvbGxiYXJZUmFpbCkudG9wIC0gaGFsZk9mU2Nyb2xsYmFyTGVuZ3RoKTsKICAgICAgICAgICAgICAgIHZhciBtYXhQb3NpdGlvblRvcCA9IGkucmFpbFlSYXRpbyAqIChpLnJhaWxZSGVpZ2h0IC0gaS5zY3JvbGxiYXJZSGVpZ2h0KTsKICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvblJhdGlvID0gcG9zaXRpb25Ub3AgLyBtYXhQb3NpdGlvblRvcDsKCiAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25SYXRpbyA8IDApIHsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblJhdGlvID0gMDsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocG9zaXRpb25SYXRpbyA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblJhdGlvID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGwoZWxlbWVudCwgJ3RvcCcsIChpLmNvbnRlbnRIZWlnaHQgLSBpLmNvbnRhaW5lckhlaWdodCkgKiBwb3NpdGlvblJhdGlvKTsKICAgICAgICAgICAgICAgIHVwZGF0ZUdlb21ldHJ5KGVsZW1lbnQpOwoKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKGkuc2V0dGluZ3Muc3RvcFByb3BhZ2F0aW9uT25DbGljaykgewogICAgICAgICAgICAgICAgaS5ldmVudC5iaW5kKGkuc2Nyb2xsYmFyWCwgJ2NsaWNrJywgc3RvcFByb3BhZ2F0aW9uKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpLmV2ZW50LmJpbmQoaS5zY3JvbGxiYXJYUmFpbCwgJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIGhhbGZPZlNjcm9sbGJhckxlbmd0aCA9IGgudG9JbnQoaS5zY3JvbGxiYXJYV2lkdGggLyAyKTsKICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvbkxlZnQgPSBpLnJhaWxYUmF0aW8gKiAoZS5wYWdlWCAtIHdpbmRvdy5wYWdlWE9mZnNldCAtIHBhZ2VPZmZzZXQoaS5zY3JvbGxiYXJYUmFpbCkubGVmdCAtIGhhbGZPZlNjcm9sbGJhckxlbmd0aCk7CiAgICAgICAgICAgICAgICB2YXIgbWF4UG9zaXRpb25MZWZ0ID0gaS5yYWlsWFJhdGlvICogKGkucmFpbFhXaWR0aCAtIGkuc2Nyb2xsYmFyWFdpZHRoKTsKICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvblJhdGlvID0gcG9zaXRpb25MZWZ0IC8gbWF4UG9zaXRpb25MZWZ0OwoKICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvblJhdGlvIDwgMCkgewogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uUmF0aW8gPSAwOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvblJhdGlvID4gMSkgewogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uUmF0aW8gPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbChlbGVtZW50LCAnbGVmdCcsICgoaS5jb250ZW50V2lkdGggLSBpLmNvbnRhaW5lcldpZHRoKSAqIHBvc2l0aW9uUmF0aW8pIC0gaS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQpOwogICAgICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkoZWxlbWVudCk7CgogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgICAgdmFyIGkgPSBpbnN0YW5jZXMuZ2V0KGVsZW1lbnQpOwogICAgICAgICAgICBiaW5kQ2xpY2tSYWlsSGFuZGxlcihlbGVtZW50LCBpKTsKICAgICAgICB9OwoKICAgIH0sIHsKICAgICAgICAiLi4vLi4vbGliL2hlbHBlciI6IDYsCiAgICAgICAgIi4uL2luc3RhbmNlcyI6IDE4LAogICAgICAgICIuLi91cGRhdGUtZ2VvbWV0cnkiOiAxOSwKICAgICAgICAiLi4vdXBkYXRlLXNjcm9sbCI6IDIwCiAgICB9XSwKICAgIDExOiBbZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlLCBleHBvcnRzKSB7CiAgICAgICAgJ3VzZSBzdHJpY3QnOwoKICAgICAgICB2YXIgZCA9IHJlcXVpcmUoJy4uLy4uL2xpYi9kb20nKSwKICAgICAgICAgICAgaCA9IHJlcXVpcmUoJy4uLy4uL2xpYi9oZWxwZXInKSwKICAgICAgICAgICAgaW5zdGFuY2VzID0gcmVxdWlyZSgnLi4vaW5zdGFuY2VzJyksCiAgICAgICAgICAgIHVwZGF0ZUdlb21ldHJ5ID0gcmVxdWlyZSgnLi4vdXBkYXRlLWdlb21ldHJ5JyksCiAgICAgICAgICAgIHVwZGF0ZVNjcm9sbCA9IHJlcXVpcmUoJy4uL3VwZGF0ZS1zY3JvbGwnKTsKCiAgICAgICAgZnVuY3Rpb24gYmluZE1vdXNlU2Nyb2xsWEhhbmRsZXIoZWxlbWVudCwgaSkgewogICAgICAgICAgICB2YXIgY3VycmVudExlZnQgPSBudWxsOwogICAgICAgICAgICB2YXIgY3VycmVudFBhZ2VYID0gbnVsbDsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbExlZnQoZGVsdGFYKSB7CiAgICAgICAgICAgICAgICB2YXIgbmV3TGVmdCA9IGN1cnJlbnRMZWZ0ICsgKGRlbHRhWCAqIGkucmFpbFhSYXRpbyk7CiAgICAgICAgICAgICAgICB2YXIgbWF4TGVmdCA9IE1hdGgubWF4KDAsIGkuc2Nyb2xsYmFyWFJhaWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkgKyAoaS5yYWlsWFJhdGlvICogKGkucmFpbFhXaWR0aCAtIGkuc2Nyb2xsYmFyWFdpZHRoKSk7CgogICAgICAgICAgICAgICAgaWYgKG5ld0xlZnQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaS5zY3JvbGxiYXJYTGVmdCA9IDA7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld0xlZnQgPiBtYXhMZWZ0KSB7CiAgICAgICAgICAgICAgICAgICAgaS5zY3JvbGxiYXJYTGVmdCA9IG1heExlZnQ7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGkuc2Nyb2xsYmFyWExlZnQgPSBuZXdMZWZ0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBzY3JvbGxMZWZ0ID0gaC50b0ludChpLnNjcm9sbGJhclhMZWZ0ICogKGkuY29udGVudFdpZHRoIC0gaS5jb250YWluZXJXaWR0aCkgLyAoaS5jb250YWluZXJXaWR0aCAtIChpLnJhaWxYUmF0aW8gKiBpLnNjcm9sbGJhclhXaWR0aCkpKSAtIGkubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50OwogICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICdsZWZ0Jywgc2Nyb2xsTGVmdCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBtb3VzZU1vdmVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsTGVmdChlLnBhZ2VYIC0gY3VycmVudFBhZ2VYKTsKICAgICAgICAgICAgICAgIHVwZGF0ZUdlb21ldHJ5KGVsZW1lbnQpOwogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHZhciBtb3VzZVVwSGFuZGxlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaC5zdG9wU2Nyb2xsaW5nKGVsZW1lbnQsICd4Jyk7CiAgICAgICAgICAgICAgICBpLmV2ZW50LnVuYmluZChpLm93bmVyRG9jdW1lbnQsICdtb3VzZW1vdmUnLCBtb3VzZU1vdmVIYW5kbGVyKTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGkuZXZlbnQuYmluZChpLnNjcm9sbGJhclgsICdtb3VzZWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZVggPSBlLnBhZ2VYOwogICAgICAgICAgICAgICAgY3VycmVudExlZnQgPSBoLnRvSW50KGQuY3NzKGkuc2Nyb2xsYmFyWCwgJ2xlZnQnKSkgKiBpLnJhaWxYUmF0aW87CiAgICAgICAgICAgICAgICBoLnN0YXJ0U2Nyb2xsaW5nKGVsZW1lbnQsICd4Jyk7CgogICAgICAgICAgICAgICAgaS5ldmVudC5iaW5kKGkub3duZXJEb2N1bWVudCwgJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpOwogICAgICAgICAgICAgICAgaS5ldmVudC5vbmNlKGkub3duZXJEb2N1bWVudCwgJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7CgogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBiaW5kTW91c2VTY3JvbGxZSGFuZGxlcihlbGVtZW50LCBpKSB7CiAgICAgICAgICAgIHZhciBjdXJyZW50VG9wID0gbnVsbDsKICAgICAgICAgICAgdmFyIGN1cnJlbnRQYWdlWSA9IG51bGw7CgogICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVTY3JvbGxUb3AoZGVsdGFZKSB7CiAgICAgICAgICAgICAgICB2YXIgbmV3VG9wID0gY3VycmVudFRvcCArIChkZWx0YVkgKiBpLnJhaWxZUmF0aW8pOwogICAgICAgICAgICAgICAgdmFyIG1heFRvcCA9IE1hdGgubWF4KDAsIGkuc2Nyb2xsYmFyWVJhaWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKSArIChpLnJhaWxZUmF0aW8gKiAoaS5yYWlsWUhlaWdodCAtIGkuc2Nyb2xsYmFyWUhlaWdodCkpOwoKICAgICAgICAgICAgICAgIGlmIChuZXdUb3AgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaS5zY3JvbGxiYXJZVG9wID0gMDsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3VG9wID4gbWF4VG9wKSB7CiAgICAgICAgICAgICAgICAgICAgaS5zY3JvbGxiYXJZVG9wID0gbWF4VG9wOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpLnNjcm9sbGJhcllUb3AgPSBuZXdUb3A7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHNjcm9sbFRvcCA9IGgudG9JbnQoaS5zY3JvbGxiYXJZVG9wICogKGkuY29udGVudEhlaWdodCAtIGkuY29udGFpbmVySGVpZ2h0KSAvIChpLmNvbnRhaW5lckhlaWdodCAtIChpLnJhaWxZUmF0aW8gKiBpLnNjcm9sbGJhcllIZWlnaHQpKSk7CiAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGwoZWxlbWVudCwgJ3RvcCcsIHNjcm9sbFRvcCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBtb3VzZU1vdmVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsVG9wKGUucGFnZVkgLSBjdXJyZW50UGFnZVkpOwogICAgICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkoZWxlbWVudCk7CiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgdmFyIG1vdXNlVXBIYW5kbGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBoLnN0b3BTY3JvbGxpbmcoZWxlbWVudCwgJ3knKTsKICAgICAgICAgICAgICAgIGkuZXZlbnQudW5iaW5kKGkub3duZXJEb2N1bWVudCwgJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgaS5ldmVudC5iaW5kKGkuc2Nyb2xsYmFyWSwgJ21vdXNlZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlWSA9IGUucGFnZVk7CiAgICAgICAgICAgICAgICBjdXJyZW50VG9wID0gaC50b0ludChkLmNzcyhpLnNjcm9sbGJhclksICd0b3AnKSkgKiBpLnJhaWxZUmF0aW87CiAgICAgICAgICAgICAgICBoLnN0YXJ0U2Nyb2xsaW5nKGVsZW1lbnQsICd5Jyk7CgogICAgICAgICAgICAgICAgaS5ldmVudC5iaW5kKGkub3duZXJEb2N1bWVudCwgJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpOwogICAgICAgICAgICAgICAgaS5ldmVudC5vbmNlKGkub3duZXJEb2N1bWVudCwgJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7CgogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgICAgdmFyIGkgPSBpbnN0YW5jZXMuZ2V0KGVsZW1lbnQpOwogICAgICAgICAgICBiaW5kTW91c2VTY3JvbGxYSGFuZGxlcihlbGVtZW50LCBpKTsKICAgICAgICAgICAgYmluZE1vdXNlU2Nyb2xsWUhhbmRsZXIoZWxlbWVudCwgaSk7CiAgICAgICAgfTsKCiAgICB9LCB7CiAgICAgICAgIi4uLy4uL2xpYi9kb20iOiAzLAogICAgICAgICIuLi8uLi9saWIvaGVscGVyIjogNiwKICAgICAgICAiLi4vaW5zdGFuY2VzIjogMTgsCiAgICAgICAgIi4uL3VwZGF0ZS1nZW9tZXRyeSI6IDE5LAogICAgICAgICIuLi91cGRhdGUtc2Nyb2xsIjogMjAKICAgIH1dLAogICAgMTI6IFtmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUsIGV4cG9ydHMpIHsKICAgICAgICAndXNlIHN0cmljdCc7CgogICAgICAgIHZhciBoID0gcmVxdWlyZSgnLi4vLi4vbGliL2hlbHBlcicpLAogICAgICAgICAgICBkID0gcmVxdWlyZSgnLi4vLi4vbGliL2RvbScpLAogICAgICAgICAgICBpbnN0YW5jZXMgPSByZXF1aXJlKCcuLi9pbnN0YW5jZXMnKSwKICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkgPSByZXF1aXJlKCcuLi91cGRhdGUtZ2VvbWV0cnknKSwKICAgICAgICAgICAgdXBkYXRlU2Nyb2xsID0gcmVxdWlyZSgnLi4vdXBkYXRlLXNjcm9sbCcpOwoKICAgICAgICBmdW5jdGlvbiBiaW5kS2V5Ym9hcmRIYW5kbGVyKGVsZW1lbnQsIGkpIHsKICAgICAgICAgICAgdmFyIGhvdmVyZWQgPSBmYWxzZTsKICAgICAgICAgICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICdtb3VzZWVudGVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBob3ZlcmVkID0gdHJ1ZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGkuZXZlbnQuYmluZChlbGVtZW50LCAnbW91c2VsZWF2ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaG92ZXJlZCA9IGZhbHNlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHZhciBzaG91bGRQcmV2ZW50ID0gZmFsc2U7CgogICAgICAgICAgICBmdW5jdGlvbiBzaG91bGRQcmV2ZW50RGVmYXVsdChkZWx0YVgsIGRlbHRhWSkgewogICAgICAgICAgICAgICAgdmFyIHNjcm9sbFRvcCA9IGVsZW1lbnQuc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgaWYgKGRlbHRhWCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgIGlmICghaS5zY3JvbGxiYXJZQWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChzY3JvbGxUb3AgPT09IDAgJiYgZGVsdGFZID4gMCkgfHwgKHNjcm9sbFRvcCA+PSBpLmNvbnRlbnRIZWlnaHQgLSBpLmNvbnRhaW5lckhlaWdodCAmJiBkZWx0YVkgPCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWkuc2V0dGluZ3Mud2hlZWxQcm9wYWdhdGlvbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHNjcm9sbExlZnQgPSBlbGVtZW50LnNjcm9sbExlZnQ7CiAgICAgICAgICAgICAgICBpZiAoZGVsdGFZID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpLnNjcm9sbGJhclhBY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKHNjcm9sbExlZnQgPT09IDAgJiYgZGVsdGFYIDwgMCkgfHwgKHNjcm9sbExlZnQgPj0gaS5jb250ZW50V2lkdGggLSBpLmNvbnRhaW5lcldpZHRoICYmIGRlbHRhWCA+IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhaS5zZXR0aW5ncy53aGVlbFByb3BhZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpLmV2ZW50LmJpbmQoaS5vd25lckRvY3VtZW50LCAna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCAmJiBlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBmb2N1c2VkID0gZC5tYXRjaGVzKGkuc2Nyb2xsYmFyWCwgJzpmb2N1cycpIHx8CiAgICAgICAgICAgICAgICAgICAgZC5tYXRjaGVzKGkuc2Nyb2xsYmFyWSwgJzpmb2N1cycpOwoKICAgICAgICAgICAgICAgIGlmICghaG92ZXJlZCAmJiAhZm9jdXNlZCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IDogaS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlRWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgIC8vIGdvIGRlZXBlciBpZiBlbGVtZW50IGlzIGEgd2ViY29tcG9uZW50CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdCkgewogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChoLmlzRWRpdGFibGUoYWN0aXZlRWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgZGVsdGFYID0gMDsKICAgICAgICAgICAgICAgIHZhciBkZWx0YVkgPSAwOwoKICAgICAgICAgICAgICAgIHN3aXRjaCAoZS53aGljaCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6IC8vIGxlZnQKICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gLTMwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDM4OiAvLyB1cAogICAgICAgICAgICAgICAgICAgICAgICBkZWx0YVkgPSAzMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOTogLy8gcmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gMzA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNDA6IC8vIGRvd24KICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLTMwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDMzOiAvLyBwYWdlIHVwCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IDkwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDMyOiAvLyBzcGFjZSBiYXIKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc2hpZnRLZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IDkwOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLTkwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMzQ6IC8vIHBhZ2UgZG93bgogICAgICAgICAgICAgICAgICAgICAgICBkZWx0YVkgPSAtOTA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMzU6IC8vIGVuZAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5jdHJsS2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YVkgPSAtaS5jb250ZW50SGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLWkuY29udGFpbmVySGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMzY6IC8vIGhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY3RybEtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gZWxlbWVudC5zY3JvbGxUb3A7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YVkgPSBpLmNvbnRhaW5lckhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICd0b3AnLCBlbGVtZW50LnNjcm9sbFRvcCAtIGRlbHRhWSk7CiAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGwoZWxlbWVudCwgJ2xlZnQnLCBlbGVtZW50LnNjcm9sbExlZnQgKyBkZWx0YVgpOwogICAgICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkoZWxlbWVudCk7CgogICAgICAgICAgICAgICAgc2hvdWxkUHJldmVudCA9IHNob3VsZFByZXZlbnREZWZhdWx0KGRlbHRhWCwgZGVsdGFZKTsKICAgICAgICAgICAgICAgIGlmIChzaG91bGRQcmV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB2YXIgaSA9IGluc3RhbmNlcy5nZXQoZWxlbWVudCk7CiAgICAgICAgICAgIGJpbmRLZXlib2FyZEhhbmRsZXIoZWxlbWVudCwgaSk7CiAgICAgICAgfTsKCiAgICB9LCB7CiAgICAgICAgIi4uLy4uL2xpYi9kb20iOiAzLAogICAgICAgICIuLi8uLi9saWIvaGVscGVyIjogNiwKICAgICAgICAiLi4vaW5zdGFuY2VzIjogMTgsCiAgICAgICAgIi4uL3VwZGF0ZS1nZW9tZXRyeSI6IDE5LAogICAgICAgICIuLi91cGRhdGUtc2Nyb2xsIjogMjAKICAgIH1dLAogICAgMTM6IFtmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUsIGV4cG9ydHMpIHsKICAgICAgICAndXNlIHN0cmljdCc7CgogICAgICAgIHZhciBpbnN0YW5jZXMgPSByZXF1aXJlKCcuLi9pbnN0YW5jZXMnKSwKICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkgPSByZXF1aXJlKCcuLi91cGRhdGUtZ2VvbWV0cnknKSwKICAgICAgICAgICAgdXBkYXRlU2Nyb2xsID0gcmVxdWlyZSgnLi4vdXBkYXRlLXNjcm9sbCcpOwoKICAgICAgICBmdW5jdGlvbiBiaW5kTW91c2VXaGVlbEhhbmRsZXIoZWxlbWVudCwgaSkgewogICAgICAgICAgICB2YXIgc2hvdWxkUHJldmVudCA9IGZhbHNlOwoKICAgICAgICAgICAgZnVuY3Rpb24gc2hvdWxkUHJldmVudERlZmF1bHQoZGVsdGFYLCBkZWx0YVkpIHsKICAgICAgICAgICAgICAgIHZhciBzY3JvbGxUb3AgPSBlbGVtZW50LnNjcm9sbFRvcDsKICAgICAgICAgICAgICAgIGlmIChkZWx0YVggPT09IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWkuc2Nyb2xsYmFyWUFjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgoc2Nyb2xsVG9wID09PSAwICYmIGRlbHRhWSA+IDApIHx8IChzY3JvbGxUb3AgPj0gaS5jb250ZW50SGVpZ2h0IC0gaS5jb250YWluZXJIZWlnaHQgJiYgZGVsdGFZIDwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpLnNldHRpbmdzLndoZWVsUHJvcGFnYXRpb247CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBzY3JvbGxMZWZ0ID0gZWxlbWVudC5zY3JvbGxMZWZ0OwogICAgICAgICAgICAgICAgaWYgKGRlbHRhWSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgIGlmICghaS5zY3JvbGxiYXJYQWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChzY3JvbGxMZWZ0ID09PSAwICYmIGRlbHRhWCA8IDApIHx8IChzY3JvbGxMZWZ0ID49IGkuY29udGVudFdpZHRoIC0gaS5jb250YWluZXJXaWR0aCAmJiBkZWx0YVggPiAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWkuc2V0dGluZ3Mud2hlZWxQcm9wYWdhdGlvbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZ2V0RGVsdGFGcm9tRXZlbnQoZSkgewogICAgICAgICAgICAgICAgdmFyIGRlbHRhWCA9IGUuZGVsdGFYOwogICAgICAgICAgICAgICAgdmFyIGRlbHRhWSA9IC0xICogZS5kZWx0YVk7CgogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWx0YVggPT09ICJ1bmRlZmluZWQiIHx8IHR5cGVvZiBkZWx0YVkgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gT1MgWCBTYWZhcmkKICAgICAgICAgICAgICAgICAgICBkZWx0YVggPSAtMSAqIGUud2hlZWxEZWx0YVggLyA2OwogICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IGUud2hlZWxEZWx0YVkgLyA2OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChlLmRlbHRhTW9kZSAmJiBlLmRlbHRhTW9kZSA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgIC8vIEZpcmVmb3ggaW4gZGVsdGFNb2RlIDE6IExpbmUgc2Nyb2xsaW5nCiAgICAgICAgICAgICAgICAgICAgZGVsdGFYICo9IDEwOwogICAgICAgICAgICAgICAgICAgIGRlbHRhWSAqPSAxMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZGVsdGFYICE9PSBkZWx0YVggJiYgZGVsdGFZICE9PSBkZWx0YVkgLyogTmFOIGNoZWNrcyAqLyApIHsKICAgICAgICAgICAgICAgICAgICAvLyBJRSBpbiBzb21lIG1vdXNlIGRyaXZlcnMKICAgICAgICAgICAgICAgICAgICBkZWx0YVggPSAwOwogICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IGUud2hlZWxEZWx0YTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gW2RlbHRhWCwgZGVsdGFZXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gc2hvdWxkQmVDb25zdW1lZEJ5VGV4dGFyZWEoZGVsdGFYLCBkZWx0YVkpIHsKICAgICAgICAgICAgICAgIHZhciBob3ZlcmVkVGV4dGFyZWEgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhOmhvdmVyJyk7CiAgICAgICAgICAgICAgICBpZiAoaG92ZXJlZFRleHRhcmVhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFNjcm9sbFRvcCA9IGhvdmVyZWRUZXh0YXJlYS5zY3JvbGxIZWlnaHQgLSBob3ZlcmVkVGV4dGFyZWEuY2xpZW50SGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIGlmIChtYXhTY3JvbGxUb3AgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGhvdmVyZWRUZXh0YXJlYS5zY3JvbGxUb3AgPT09IDAgJiYgZGVsdGFZID4gMCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoaG92ZXJlZFRleHRhcmVhLnNjcm9sbFRvcCA9PT0gbWF4U2Nyb2xsVG9wICYmIGRlbHRhWSA8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbWF4U2Nyb2xsTGVmdCA9IGhvdmVyZWRUZXh0YXJlYS5zY3JvbGxMZWZ0IC0gaG92ZXJlZFRleHRhcmVhLmNsaWVudFdpZHRoOwogICAgICAgICAgICAgICAgICAgIGlmIChtYXhTY3JvbGxMZWZ0ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShob3ZlcmVkVGV4dGFyZWEuc2Nyb2xsTGVmdCA9PT0gMCAmJiBkZWx0YVggPCAwKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIShob3ZlcmVkVGV4dGFyZWEuc2Nyb2xsTGVmdCA9PT0gbWF4U2Nyb2xsTGVmdCAmJiBkZWx0YVggPiAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpIHsKICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhRnJvbUV2ZW50KGUpOwoKICAgICAgICAgICAgICAgIHZhciBkZWx0YVggPSBkZWx0YVswXTsKICAgICAgICAgICAgICAgIHZhciBkZWx0YVkgPSBkZWx0YVsxXTsKCiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQmVDb25zdW1lZEJ5VGV4dGFyZWEoZGVsdGFYLCBkZWx0YVkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHNob3VsZFByZXZlbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmICghaS5zZXR0aW5ncy51c2VCb3RoV2hlZWxBeGVzKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZGVsdGFYIHdpbGwgb25seSBiZSB1c2VkIGZvciBob3Jpem9udGFsIHNjcm9sbGluZyBhbmQgZGVsdGFZIHdpbGwKICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGJlIHVzZWQgZm9yIHZlcnRpY2FsIHNjcm9sbGluZyAtIHRoaXMgaXMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGwoZWxlbWVudCwgJ3RvcCcsIGVsZW1lbnQuc2Nyb2xsVG9wIC0gKGRlbHRhWSAqIGkuc2V0dGluZ3Mud2hlZWxTcGVlZCkpOwogICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbChlbGVtZW50LCAnbGVmdCcsIGVsZW1lbnQuc2Nyb2xsTGVmdCArIChkZWx0YVggKiBpLnNldHRpbmdzLndoZWVsU3BlZWQpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaS5zY3JvbGxiYXJZQWN0aXZlICYmICFpLnNjcm9sbGJhclhBY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHZlcnRpY2FsIHNjcm9sbGJhciBpcyBhY3RpdmUgYW5kIHVzZUJvdGhXaGVlbEF4ZXMgb3B0aW9uIGlzCiAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZlLCBzbyBsZXQncyBzY3JvbGwgdmVydGljYWwgYmFyIHVzaW5nIGJvdGggbW91c2Ugd2hlZWwgYXhlcwogICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YVkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICd0b3AnLCBlbGVtZW50LnNjcm9sbFRvcCAtIChkZWx0YVkgKiBpLnNldHRpbmdzLndoZWVsU3BlZWQpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGwoZWxlbWVudCwgJ3RvcCcsIGVsZW1lbnQuc2Nyb2xsVG9wICsgKGRlbHRhWCAqIGkuc2V0dGluZ3Mud2hlZWxTcGVlZCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzaG91bGRQcmV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaS5zY3JvbGxiYXJYQWN0aXZlICYmICFpLnNjcm9sbGJhcllBY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAvLyB1c2VCb3RoV2hlZWxBeGVzIGFuZCBvbmx5IGhvcml6b250YWwgYmFyIGlzIGFjdGl2ZSwgc28gdXNlIGJvdGgKICAgICAgICAgICAgICAgICAgICAvLyB3aGVlbCBheGVzIGZvciBob3Jpem9udGFsIGJhcgogICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YVgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICdsZWZ0JywgZWxlbWVudC5zY3JvbGxMZWZ0ICsgKGRlbHRhWCAqIGkuc2V0dGluZ3Mud2hlZWxTcGVlZCkpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbChlbGVtZW50LCAnbGVmdCcsIGVsZW1lbnQuc2Nyb2xsTGVmdCAtIChkZWx0YVkgKiBpLnNldHRpbmdzLndoZWVsU3BlZWQpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc2hvdWxkUHJldmVudCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkoZWxlbWVudCk7CgogICAgICAgICAgICAgICAgc2hvdWxkUHJldmVudCA9IChzaG91bGRQcmV2ZW50IHx8IHNob3VsZFByZXZlbnREZWZhdWx0KGRlbHRhWCwgZGVsdGFZKSk7CiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUHJldmVudCkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5vbndoZWVsICE9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICAgICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICd3aGVlbCcsIG1vdXNld2hlZWxIYW5kbGVyKTsKICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93Lm9ubW91c2V3aGVlbCAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgICAgIGkuZXZlbnQuYmluZChlbGVtZW50LCAnbW91c2V3aGVlbCcsIG1vdXNld2hlZWxIYW5kbGVyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgIHZhciBpID0gaW5zdGFuY2VzLmdldChlbGVtZW50KTsKICAgICAgICAgICAgYmluZE1vdXNlV2hlZWxIYW5kbGVyKGVsZW1lbnQsIGkpOwogICAgICAgIH07CgogICAgfSwgewogICAgICAgICIuLi9pbnN0YW5jZXMiOiAxOCwKICAgICAgICAiLi4vdXBkYXRlLWdlb21ldHJ5IjogMTksCiAgICAgICAgIi4uL3VwZGF0ZS1zY3JvbGwiOiAyMAogICAgfV0sCiAgICAxNDogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIGluc3RhbmNlcyA9IHJlcXVpcmUoJy4uL2luc3RhbmNlcycpLAogICAgICAgICAgICB1cGRhdGVHZW9tZXRyeSA9IHJlcXVpcmUoJy4uL3VwZGF0ZS1nZW9tZXRyeScpOwoKICAgICAgICBmdW5jdGlvbiBiaW5kTmF0aXZlU2Nyb2xsSGFuZGxlcihlbGVtZW50LCBpKSB7CiAgICAgICAgICAgIGkuZXZlbnQuYmluZChlbGVtZW50LCAnc2Nyb2xsJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB1cGRhdGVHZW9tZXRyeShlbGVtZW50KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgICAgdmFyIGkgPSBpbnN0YW5jZXMuZ2V0KGVsZW1lbnQpOwogICAgICAgICAgICBiaW5kTmF0aXZlU2Nyb2xsSGFuZGxlcihlbGVtZW50LCBpKTsKICAgICAgICB9OwoKICAgIH0sIHsKICAgICAgICAiLi4vaW5zdGFuY2VzIjogMTgsCiAgICAgICAgIi4uL3VwZGF0ZS1nZW9tZXRyeSI6IDE5CiAgICB9XSwKICAgIDE1OiBbZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlLCBleHBvcnRzKSB7CiAgICAgICAgJ3VzZSBzdHJpY3QnOwoKICAgICAgICB2YXIgaCA9IHJlcXVpcmUoJy4uLy4uL2xpYi9oZWxwZXInKSwKICAgICAgICAgICAgaW5zdGFuY2VzID0gcmVxdWlyZSgnLi4vaW5zdGFuY2VzJyksCiAgICAgICAgICAgIHVwZGF0ZUdlb21ldHJ5ID0gcmVxdWlyZSgnLi4vdXBkYXRlLWdlb21ldHJ5JyksCiAgICAgICAgICAgIHVwZGF0ZVNjcm9sbCA9IHJlcXVpcmUoJy4uL3VwZGF0ZS1zY3JvbGwnKTsKCiAgICAgICAgZnVuY3Rpb24gYmluZFNlbGVjdGlvbkhhbmRsZXIoZWxlbWVudCwgaSkgewogICAgICAgICAgICBmdW5jdGlvbiBnZXRSYW5nZU5vZGUoKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbiA/IHdpbmRvdy5nZXRTZWxlY3Rpb24oKSA6CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0U2VsZWN0aW9uID8gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkgOiAnJzsKICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24udG9TdHJpbmcoKS5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgc2Nyb2xsaW5nTG9vcCA9IG51bGw7CiAgICAgICAgICAgIHZhciBzY3JvbGxEaWZmID0gewogICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnRTY3JvbGxpbmcoKSB7CiAgICAgICAgICAgICAgICBpZiAoIXNjcm9sbGluZ0xvb3ApIHsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdMb29wID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2VzLmdldChlbGVtZW50KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzY3JvbGxpbmdMb29wKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICd0b3AnLCBlbGVtZW50LnNjcm9sbFRvcCArIHNjcm9sbERpZmYudG9wKTsKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICdsZWZ0JywgZWxlbWVudC5zY3JvbGxMZWZ0ICsgc2Nyb2xsRGlmZi5sZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkoZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgfSwgNTApOyAvLyBldmVyeSAuMSBzZWMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gc3RvcFNjcm9sbGluZygpIHsKICAgICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdMb29wKSB7CiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzY3JvbGxpbmdMb29wKTsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdMb29wID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGguc3RvcFNjcm9sbGluZyhlbGVtZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGlzU2VsZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgICAgaS5ldmVudC5iaW5kKGkub3duZXJEb2N1bWVudCwgJ3NlbGVjdGlvbmNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29udGFpbnMoZ2V0UmFuZ2VOb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBzdG9wU2Nyb2xsaW5nKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpLmV2ZW50LmJpbmQod2luZG93LCAnbW91c2V1cCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHsKICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgc3RvcFNjcm9sbGluZygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGkuZXZlbnQuYmluZCh3aW5kb3csICdtb3VzZW1vdmUnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBtb3VzZVBvc2l0aW9uID0gewogICAgICAgICAgICAgICAgICAgICAgICB4OiBlLnBhZ2VYLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlLnBhZ2VZCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyR2VvbWV0cnkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGVsZW1lbnQub2Zmc2V0TGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZWxlbWVudC5vZmZzZXRUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIGlmIChtb3VzZVBvc2l0aW9uLnggPCBjb250YWluZXJHZW9tZXRyeS5sZWZ0ICsgMykgewogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxEaWZmLmxlZnQgPSAtNTsKICAgICAgICAgICAgICAgICAgICAgICAgaC5zdGFydFNjcm9sbGluZyhlbGVtZW50LCAneCcpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW91c2VQb3NpdGlvbi54ID4gY29udGFpbmVyR2VvbWV0cnkucmlnaHQgLSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbERpZmYubGVmdCA9IDU7CiAgICAgICAgICAgICAgICAgICAgICAgIGguc3RhcnRTY3JvbGxpbmcoZWxlbWVudCwgJ3gnKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxEaWZmLmxlZnQgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKG1vdXNlUG9zaXRpb24ueSA8IGNvbnRhaW5lckdlb21ldHJ5LnRvcCArIDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lckdlb21ldHJ5LnRvcCArIDMgLSBtb3VzZVBvc2l0aW9uLnkgPCA1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxEaWZmLnRvcCA9IC01OwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRGlmZi50b3AgPSAtMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaC5zdGFydFNjcm9sbGluZyhlbGVtZW50LCAneScpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW91c2VQb3NpdGlvbi55ID4gY29udGFpbmVyR2VvbWV0cnkuYm90dG9tIC0gMykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW91c2VQb3NpdGlvbi55IC0gY29udGFpbmVyR2VvbWV0cnkuYm90dG9tICsgMyA8IDUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbERpZmYudG9wID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbERpZmYudG9wID0gMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaC5zdGFydFNjcm9sbGluZyhlbGVtZW50LCAneScpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbERpZmYudG9wID0gMDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxEaWZmLnRvcCA9PT0gMCAmJiBzY3JvbGxEaWZmLmxlZnQgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFNjcm9sbGluZygpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U2Nyb2xsaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB2YXIgaSA9IGluc3RhbmNlcy5nZXQoZWxlbWVudCk7CiAgICAgICAgICAgIGJpbmRTZWxlY3Rpb25IYW5kbGVyKGVsZW1lbnQsIGkpOwogICAgICAgIH07CgogICAgfSwgewogICAgICAgICIuLi8uLi9saWIvaGVscGVyIjogNiwKICAgICAgICAiLi4vaW5zdGFuY2VzIjogMTgsCiAgICAgICAgIi4uL3VwZGF0ZS1nZW9tZXRyeSI6IDE5LAogICAgICAgICIuLi91cGRhdGUtc2Nyb2xsIjogMjAKICAgIH1dLAogICAgMTY6IFtmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUsIGV4cG9ydHMpIHsKICAgICAgICAndXNlIHN0cmljdCc7CgogICAgICAgIHZhciBpbnN0YW5jZXMgPSByZXF1aXJlKCcuLi9pbnN0YW5jZXMnKSwKICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkgPSByZXF1aXJlKCcuLi91cGRhdGUtZ2VvbWV0cnknKSwKICAgICAgICAgICAgdXBkYXRlU2Nyb2xsID0gcmVxdWlyZSgnLi4vdXBkYXRlLXNjcm9sbCcpOwoKICAgICAgICBmdW5jdGlvbiBiaW5kVG91Y2hIYW5kbGVyKGVsZW1lbnQsIGksIHN1cHBvcnRzVG91Y2gsIHN1cHBvcnRzSWVQb2ludGVyKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHNob3VsZFByZXZlbnREZWZhdWx0KGRlbHRhWCwgZGVsdGFZKSB7CiAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3A7CiAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsTGVmdCA9IGVsZW1lbnQuc2Nyb2xsTGVmdDsKICAgICAgICAgICAgICAgIHZhciBtYWduaXR1ZGVYID0gTWF0aC5hYnMoZGVsdGFYKTsKICAgICAgICAgICAgICAgIHZhciBtYWduaXR1ZGVZID0gTWF0aC5hYnMoZGVsdGFZKTsKCiAgICAgICAgICAgICAgICBpZiAobWFnbml0dWRlWSA+IG1hZ25pdHVkZVgpIHsKICAgICAgICAgICAgICAgICAgICAvLyB1c2VyIGlzIHBlcmhhcHMgdHJ5aW5nIHRvIHN3aXBlIHVwL2Rvd24gdGhlIHBhZ2UKCiAgICAgICAgICAgICAgICAgICAgaWYgKCgoZGVsdGFZIDwgMCkgJiYgKHNjcm9sbFRvcCA9PT0gaS5jb250ZW50SGVpZ2h0IC0gaS5jb250YWluZXJIZWlnaHQpKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAoKGRlbHRhWSA+IDApICYmIChzY3JvbGxUb3AgPT09IDApKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWkuc2V0dGluZ3Muc3dpcGVQcm9wYWdhdGlvbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hZ25pdHVkZVggPiBtYWduaXR1ZGVZKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gdXNlciBpcyBwZXJoYXBzIHRyeWluZyB0byBzd2lwZSBsZWZ0L3JpZ2h0IGFjcm9zcyB0aGUgcGFnZQoKICAgICAgICAgICAgICAgICAgICBpZiAoKChkZWx0YVggPCAwKSAmJiAoc2Nyb2xsTGVmdCA9PT0gaS5jb250ZW50V2lkdGggLSBpLmNvbnRhaW5lcldpZHRoKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgKChkZWx0YVggPiAwKSAmJiAoc2Nyb2xsTGVmdCA9PT0gMCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhaS5zZXR0aW5ncy5zd2lwZVByb3BhZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gYXBwbHlUb3VjaE1vdmUoZGlmZmVyZW5jZVgsIGRpZmZlcmVuY2VZKSB7CiAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGwoZWxlbWVudCwgJ3RvcCcsIGVsZW1lbnQuc2Nyb2xsVG9wIC0gZGlmZmVyZW5jZVkpOwogICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICdsZWZ0JywgZWxlbWVudC5zY3JvbGxMZWZ0IC0gZGlmZmVyZW5jZVgpOwoKICAgICAgICAgICAgICAgIHVwZGF0ZUdlb21ldHJ5KGVsZW1lbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgc3RhcnRPZmZzZXQgPSB7fTsKICAgICAgICAgICAgdmFyIHN0YXJ0VGltZSA9IDA7CiAgICAgICAgICAgIHZhciBzcGVlZCA9IHt9OwogICAgICAgICAgICB2YXIgZWFzaW5nTG9vcCA9IG51bGw7CiAgICAgICAgICAgIHZhciBpbkdsb2JhbFRvdWNoID0gZmFsc2U7CiAgICAgICAgICAgIHZhciBpbkxvY2FsVG91Y2ggPSBmYWxzZTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGdsb2JhbFRvdWNoU3RhcnQoKSB7CiAgICAgICAgICAgICAgICBpbkdsb2JhbFRvdWNoID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZ2xvYmFsVG91Y2hFbmQoKSB7CiAgICAgICAgICAgICAgICBpbkdsb2JhbFRvdWNoID0gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFRvdWNoKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldFRvdWNoZXMpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50YXJnZXRUb3VjaGVzWzBdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBNYXliZSBJRSBwb2ludGVyCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHNob3VsZEhhbmRsZShlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXRUb3VjaGVzICYmIGUudGFyZ2V0VG91Y2hlcy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlLnBvaW50ZXJUeXBlICYmIGUucG9pbnRlclR5cGUgIT09ICdtb3VzZScgJiYgZS5wb2ludGVyVHlwZSAhPT0gZS5NU1BPSU5URVJfVFlQRV9NT1VTRSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB0b3VjaFN0YXJ0KGUpIHsKICAgICAgICAgICAgICAgIGlmIChzaG91bGRIYW5kbGUoZSkpIHsKICAgICAgICAgICAgICAgICAgICBpbkxvY2FsVG91Y2ggPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICB2YXIgdG91Y2ggPSBnZXRUb3VjaChlKTsKCiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQucGFnZVggPSB0b3VjaC5wYWdlWDsKICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldC5wYWdlWSA9IHRvdWNoLnBhZ2VZOwoKICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoZWFzaW5nTG9vcCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGVhc2luZ0xvb3ApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdG91Y2hNb3ZlKGUpIHsKICAgICAgICAgICAgICAgIGlmICghaW5HbG9iYWxUb3VjaCAmJiBpbkxvY2FsVG91Y2ggJiYgc2hvdWxkSGFuZGxlKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRvdWNoID0gZ2V0VG91Y2goZSk7CgogICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBwYWdlWDogdG91Y2gucGFnZVgsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VZOiB0b3VjaC5wYWdlWQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIHZhciBkaWZmZXJlbmNlWCA9IGN1cnJlbnRPZmZzZXQucGFnZVggLSBzdGFydE9mZnNldC5wYWdlWDsKICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZmVyZW5jZVkgPSBjdXJyZW50T2Zmc2V0LnBhZ2VZIC0gc3RhcnRPZmZzZXQucGFnZVk7CgogICAgICAgICAgICAgICAgICAgIGFwcGx5VG91Y2hNb3ZlKGRpZmZlcmVuY2VYLCBkaWZmZXJlbmNlWSk7CiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0OwoKICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFRpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgdGltZUdhcCA9IGN1cnJlbnRUaW1lIC0gc3RhcnRUaW1lOwogICAgICAgICAgICAgICAgICAgIGlmICh0aW1lR2FwID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBzcGVlZC54ID0gZGlmZmVyZW5jZVggLyB0aW1lR2FwOwogICAgICAgICAgICAgICAgICAgICAgICBzcGVlZC55ID0gZGlmZmVyZW5jZVkgLyB0aW1lR2FwOwogICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSBjdXJyZW50VGltZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRQcmV2ZW50RGVmYXVsdChkaWZmZXJlbmNlWCwgZGlmZmVyZW5jZVkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHRvdWNoRW5kKCkgewogICAgICAgICAgICAgICAgaWYgKCFpbkdsb2JhbFRvdWNoICYmIGluTG9jYWxUb3VjaCkgewogICAgICAgICAgICAgICAgICAgIGluTG9jYWxUb3VjaCA9IGZhbHNlOwoKICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGVhc2luZ0xvb3ApOwogICAgICAgICAgICAgICAgICAgIGVhc2luZ0xvb3AgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZXMuZ2V0KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGVhc2luZ0xvb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoc3BlZWQueCkgPCAwLjAxICYmIE1hdGguYWJzKHNwZWVkLnkpIDwgMC4wMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChlYXNpbmdMb29wKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlUb3VjaE1vdmUoc3BlZWQueCAqIDMwLCBzcGVlZC55ICogMzApOwoKICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWQueCAqPSAwLjg7CiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkLnkgKj0gMC44OwogICAgICAgICAgICAgICAgICAgIH0sIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHN1cHBvcnRzVG91Y2gpIHsKICAgICAgICAgICAgICAgIGkuZXZlbnQuYmluZCh3aW5kb3csICd0b3VjaHN0YXJ0JywgZ2xvYmFsVG91Y2hTdGFydCk7CiAgICAgICAgICAgICAgICBpLmV2ZW50LmJpbmQod2luZG93LCAndG91Y2hlbmQnLCBnbG9iYWxUb3VjaEVuZCk7CiAgICAgICAgICAgICAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ3RvdWNoc3RhcnQnLCB0b3VjaFN0YXJ0KTsKICAgICAgICAgICAgICAgIGkuZXZlbnQuYmluZChlbGVtZW50LCAndG91Y2htb3ZlJywgdG91Y2hNb3ZlKTsKICAgICAgICAgICAgICAgIGkuZXZlbnQuYmluZChlbGVtZW50LCAndG91Y2hlbmQnLCB0b3VjaEVuZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzdXBwb3J0c0llUG9pbnRlcikgewogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5Qb2ludGVyRXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICBpLmV2ZW50LmJpbmQod2luZG93LCAncG9pbnRlcmRvd24nLCBnbG9iYWxUb3VjaFN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICBpLmV2ZW50LmJpbmQod2luZG93LCAncG9pbnRlcnVwJywgZ2xvYmFsVG91Y2hFbmQpOwogICAgICAgICAgICAgICAgICAgIGkuZXZlbnQuYmluZChlbGVtZW50LCAncG9pbnRlcmRvd24nLCB0b3VjaFN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ3BvaW50ZXJtb3ZlJywgdG91Y2hNb3ZlKTsKICAgICAgICAgICAgICAgICAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ3BvaW50ZXJ1cCcsIHRvdWNoRW5kKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93Lk1TUG9pbnRlckV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgaS5ldmVudC5iaW5kKHdpbmRvdywgJ01TUG9pbnRlckRvd24nLCBnbG9iYWxUb3VjaFN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICBpLmV2ZW50LmJpbmQod2luZG93LCAnTVNQb2ludGVyVXAnLCBnbG9iYWxUb3VjaEVuZCk7CiAgICAgICAgICAgICAgICAgICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICdNU1BvaW50ZXJEb3duJywgdG91Y2hTdGFydCk7CiAgICAgICAgICAgICAgICAgICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICdNU1BvaW50ZXJNb3ZlJywgdG91Y2hNb3ZlKTsKICAgICAgICAgICAgICAgICAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ01TUG9pbnRlclVwJywgdG91Y2hFbmQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGVsZW1lbnQsIHN1cHBvcnRzVG91Y2gsIHN1cHBvcnRzSWVQb2ludGVyKSB7CiAgICAgICAgICAgIHZhciBpID0gaW5zdGFuY2VzLmdldChlbGVtZW50KTsKICAgICAgICAgICAgYmluZFRvdWNoSGFuZGxlcihlbGVtZW50LCBpLCBzdXBwb3J0c1RvdWNoLCBzdXBwb3J0c0llUG9pbnRlcik7CiAgICAgICAgfTsKCiAgICB9LCB7CiAgICAgICAgIi4uL2luc3RhbmNlcyI6IDE4LAogICAgICAgICIuLi91cGRhdGUtZ2VvbWV0cnkiOiAxOSwKICAgICAgICAiLi4vdXBkYXRlLXNjcm9sbCI6IDIwCiAgICB9XSwKICAgIDE3OiBbZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlLCBleHBvcnRzKSB7CiAgICAgICAgJ3VzZSBzdHJpY3QnOwoKICAgICAgICB2YXIgY2xzID0gcmVxdWlyZSgnLi4vbGliL2NsYXNzJyksCiAgICAgICAgICAgIGggPSByZXF1aXJlKCcuLi9saWIvaGVscGVyJyksCiAgICAgICAgICAgIGluc3RhbmNlcyA9IHJlcXVpcmUoJy4vaW5zdGFuY2VzJyksCiAgICAgICAgICAgIHVwZGF0ZUdlb21ldHJ5ID0gcmVxdWlyZSgnLi91cGRhdGUtZ2VvbWV0cnknKTsKCiAgICAgICAgLy8gSGFuZGxlcnMKICAgICAgICB2YXIgY2xpY2tSYWlsSGFuZGxlciA9IHJlcXVpcmUoJy4vaGFuZGxlci9jbGljay1yYWlsJyksCiAgICAgICAgICAgIGRyYWdTY3JvbGxiYXJIYW5kbGVyID0gcmVxdWlyZSgnLi9oYW5kbGVyL2RyYWctc2Nyb2xsYmFyJyksCiAgICAgICAgICAgIGtleWJvYXJkSGFuZGxlciA9IHJlcXVpcmUoJy4vaGFuZGxlci9rZXlib2FyZCcpLAogICAgICAgICAgICBtb3VzZVdoZWVsSGFuZGxlciA9IHJlcXVpcmUoJy4vaGFuZGxlci9tb3VzZS13aGVlbCcpLAogICAgICAgICAgICBuYXRpdmVTY3JvbGxIYW5kbGVyID0gcmVxdWlyZSgnLi9oYW5kbGVyL25hdGl2ZS1zY3JvbGwnKSwKICAgICAgICAgICAgc2VsZWN0aW9uSGFuZGxlciA9IHJlcXVpcmUoJy4vaGFuZGxlci9zZWxlY3Rpb24nKSwKICAgICAgICAgICAgdG91Y2hIYW5kbGVyID0gcmVxdWlyZSgnLi9oYW5kbGVyL3RvdWNoJyk7CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZWxlbWVudCwgdXNlclNldHRpbmdzKSB7CiAgICAgICAgICAgIHVzZXJTZXR0aW5ncyA9IHR5cGVvZiB1c2VyU2V0dGluZ3MgPT09ICdvYmplY3QnID8gdXNlclNldHRpbmdzIDoge307CgogICAgICAgICAgICBjbHMuYWRkKGVsZW1lbnQsICdwcy1jb250YWluZXInKTsKCiAgICAgICAgICAgIC8vIENyZWF0ZSBhIHBsdWdpbiBpbnN0YW5jZS4KICAgICAgICAgICAgdmFyIGkgPSBpbnN0YW5jZXMuYWRkKGVsZW1lbnQpOwoKICAgICAgICAgICAgaS5zZXR0aW5ncyA9IGguZXh0ZW5kKGkuc2V0dGluZ3MsIHVzZXJTZXR0aW5ncyk7CiAgICAgICAgICAgIGNscy5hZGQoZWxlbWVudCwgJ3BzLXRoZW1lLScgKyBpLnNldHRpbmdzLnRoZW1lKTsKCiAgICAgICAgICAgIGNsaWNrUmFpbEhhbmRsZXIoZWxlbWVudCk7CiAgICAgICAgICAgIGRyYWdTY3JvbGxiYXJIYW5kbGVyKGVsZW1lbnQpOwogICAgICAgICAgICBtb3VzZVdoZWVsSGFuZGxlcihlbGVtZW50KTsKICAgICAgICAgICAgbmF0aXZlU2Nyb2xsSGFuZGxlcihlbGVtZW50KTsKCiAgICAgICAgICAgIGlmIChpLnNldHRpbmdzLnVzZVNlbGVjdGlvblNjcm9sbCkgewogICAgICAgICAgICAgICAgc2VsZWN0aW9uSGFuZGxlcihlbGVtZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGguZW52LnN1cHBvcnRzVG91Y2ggfHwgaC5lbnYuc3VwcG9ydHNJZVBvaW50ZXIpIHsKICAgICAgICAgICAgICAgIHRvdWNoSGFuZGxlcihlbGVtZW50LCBoLmVudi5zdXBwb3J0c1RvdWNoLCBoLmVudi5zdXBwb3J0c0llUG9pbnRlcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGkuc2V0dGluZ3MudXNlS2V5Ym9hcmQpIHsKICAgICAgICAgICAgICAgIGtleWJvYXJkSGFuZGxlcihlbGVtZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXBkYXRlR2VvbWV0cnkoZWxlbWVudCk7CiAgICAgICAgfTsKCiAgICB9LCB7CiAgICAgICAgIi4uL2xpYi9jbGFzcyI6IDIsCiAgICAgICAgIi4uL2xpYi9oZWxwZXIiOiA2LAogICAgICAgICIuL2hhbmRsZXIvY2xpY2stcmFpbCI6IDEwLAogICAgICAgICIuL2hhbmRsZXIvZHJhZy1zY3JvbGxiYXIiOiAxMSwKICAgICAgICAiLi9oYW5kbGVyL2tleWJvYXJkIjogMTIsCiAgICAgICAgIi4vaGFuZGxlci9tb3VzZS13aGVlbCI6IDEzLAogICAgICAgICIuL2hhbmRsZXIvbmF0aXZlLXNjcm9sbCI6IDE0LAogICAgICAgICIuL2hhbmRsZXIvc2VsZWN0aW9uIjogMTUsCiAgICAgICAgIi4vaGFuZGxlci90b3VjaCI6IDE2LAogICAgICAgICIuL2luc3RhbmNlcyI6IDE4LAogICAgICAgICIuL3VwZGF0ZS1nZW9tZXRyeSI6IDE5CiAgICB9XSwKICAgIDE4OiBbZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlLCBleHBvcnRzKSB7CiAgICAgICAgJ3VzZSBzdHJpY3QnOwoKICAgICAgICB2YXIgY2xzID0gcmVxdWlyZSgnLi4vbGliL2NsYXNzJyksCiAgICAgICAgICAgIGQgPSByZXF1aXJlKCcuLi9saWIvZG9tJyksCiAgICAgICAgICAgIGRlZmF1bHRTZXR0aW5ncyA9IHJlcXVpcmUoJy4vZGVmYXVsdC1zZXR0aW5nJyksCiAgICAgICAgICAgIEV2ZW50TWFuYWdlciA9IHJlcXVpcmUoJy4uL2xpYi9ldmVudC1tYW5hZ2VyJyksCiAgICAgICAgICAgIGd1aWQgPSByZXF1aXJlKCcuLi9saWIvZ3VpZCcpLAogICAgICAgICAgICBoID0gcmVxdWlyZSgnLi4vbGliL2hlbHBlcicpOwoKICAgICAgICB2YXIgaW5zdGFuY2VzID0ge307CgogICAgICAgIGZ1bmN0aW9uIEluc3RhbmNlKGVsZW1lbnQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwoKICAgICAgICAgICAgaS5zZXR0aW5ncyA9IGguY2xvbmUoZGVmYXVsdFNldHRpbmdzKTsKICAgICAgICAgICAgaS5jb250YWluZXJXaWR0aCA9IG51bGw7CiAgICAgICAgICAgIGkuY29udGFpbmVySGVpZ2h0ID0gbnVsbDsKICAgICAgICAgICAgaS5jb250ZW50V2lkdGggPSBudWxsOwogICAgICAgICAgICBpLmNvbnRlbnRIZWlnaHQgPSBudWxsOwoKICAgICAgICAgICAgaS5pc1J0bCA9IGQuY3NzKGVsZW1lbnQsICdkaXJlY3Rpb24nKSA9PT0gInJ0bCI7CiAgICAgICAgICAgIGkuaXNOZWdhdGl2ZVNjcm9sbCA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbFNjcm9sbExlZnQgPSBlbGVtZW50LnNjcm9sbExlZnQ7CiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IC0xOwogICAgICAgICAgICAgICAgcmVzdWx0ID0gZWxlbWVudC5zY3JvbGxMZWZ0IDwgMDsKICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IG9yaWdpbmFsU2Nyb2xsTGVmdDsKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgIH0pKCk7CiAgICAgICAgICAgIGkubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50ID0gaS5pc05lZ2F0aXZlU2Nyb2xsID8gZWxlbWVudC5zY3JvbGxXaWR0aCAtIGVsZW1lbnQuY2xpZW50V2lkdGggOiAwOwogICAgICAgICAgICBpLmV2ZW50ID0gbmV3IEV2ZW50TWFuYWdlcigpOwogICAgICAgICAgICBpLm93bmVyRG9jdW1lbnQgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7CgogICAgICAgICAgICBmdW5jdGlvbiBmb2N1cygpIHsKICAgICAgICAgICAgICAgIGNscy5hZGQoZWxlbWVudCwgJ3BzLWZvY3VzJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGJsdXIoKSB7CiAgICAgICAgICAgICAgICBjbHMucmVtb3ZlKGVsZW1lbnQsICdwcy1mb2N1cycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpLnNjcm9sbGJhclhSYWlsID0gZC5hcHBlbmRUbyhkLmUoJ2RpdicsICdwcy1zY3JvbGxiYXIteC1yYWlsJyksIGVsZW1lbnQpOwogICAgICAgICAgICBpLnNjcm9sbGJhclggPSBkLmFwcGVuZFRvKGQuZSgnZGl2JywgJ3BzLXNjcm9sbGJhci14JyksIGkuc2Nyb2xsYmFyWFJhaWwpOwogICAgICAgICAgICBpLnNjcm9sbGJhclguc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIDApOwogICAgICAgICAgICBpLmV2ZW50LmJpbmQoaS5zY3JvbGxiYXJYLCAnZm9jdXMnLCBmb2N1cyk7CiAgICAgICAgICAgIGkuZXZlbnQuYmluZChpLnNjcm9sbGJhclgsICdibHVyJywgYmx1cik7CiAgICAgICAgICAgIGkuc2Nyb2xsYmFyWEFjdGl2ZSA9IG51bGw7CiAgICAgICAgICAgIGkuc2Nyb2xsYmFyWFdpZHRoID0gbnVsbDsKICAgICAgICAgICAgaS5zY3JvbGxiYXJYTGVmdCA9IG51bGw7CiAgICAgICAgICAgIGkuc2Nyb2xsYmFyWEJvdHRvbSA9IGgudG9JbnQoZC5jc3MoaS5zY3JvbGxiYXJYUmFpbCwgJ2JvdHRvbScpKTsKICAgICAgICAgICAgaS5pc1Njcm9sbGJhclhVc2luZ0JvdHRvbSA9IGkuc2Nyb2xsYmFyWEJvdHRvbSA9PT0gaS5zY3JvbGxiYXJYQm90dG9tOyAvLyAhaXNOYU4KICAgICAgICAgICAgaS5zY3JvbGxiYXJYVG9wID0gaS5pc1Njcm9sbGJhclhVc2luZ0JvdHRvbSA/IG51bGwgOiBoLnRvSW50KGQuY3NzKGkuc2Nyb2xsYmFyWFJhaWwsICd0b3AnKSk7CiAgICAgICAgICAgIGkucmFpbEJvcmRlclhXaWR0aCA9IGgudG9JbnQoZC5jc3MoaS5zY3JvbGxiYXJYUmFpbCwgJ2JvcmRlckxlZnRXaWR0aCcpKSArIGgudG9JbnQoZC5jc3MoaS5zY3JvbGxiYXJYUmFpbCwgJ2JvcmRlclJpZ2h0V2lkdGgnKSk7CiAgICAgICAgICAgIC8vIFNldCByYWlsIHRvIGRpc3BsYXk6YmxvY2sgdG8gY2FsY3VsYXRlIG1hcmdpbnMKICAgICAgICAgICAgZC5jc3MoaS5zY3JvbGxiYXJYUmFpbCwgJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAgaS5yYWlsWE1hcmdpbldpZHRoID0gaC50b0ludChkLmNzcyhpLnNjcm9sbGJhclhSYWlsLCAnbWFyZ2luTGVmdCcpKSArIGgudG9JbnQoZC5jc3MoaS5zY3JvbGxiYXJYUmFpbCwgJ21hcmdpblJpZ2h0JykpOwogICAgICAgICAgICBkLmNzcyhpLnNjcm9sbGJhclhSYWlsLCAnZGlzcGxheScsICcnKTsKICAgICAgICAgICAgaS5yYWlsWFdpZHRoID0gbnVsbDsKICAgICAgICAgICAgaS5yYWlsWFJhdGlvID0gbnVsbDsKCiAgICAgICAgICAgIGkuc2Nyb2xsYmFyWVJhaWwgPSBkLmFwcGVuZFRvKGQuZSgnZGl2JywgJ3BzLXNjcm9sbGJhci15LXJhaWwnKSwgZWxlbWVudCk7CiAgICAgICAgICAgIGkuc2Nyb2xsYmFyWSA9IGQuYXBwZW5kVG8oZC5lKCdkaXYnLCAncHMtc2Nyb2xsYmFyLXknKSwgaS5zY3JvbGxiYXJZUmFpbCk7CiAgICAgICAgICAgIGkuc2Nyb2xsYmFyWS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgMCk7CiAgICAgICAgICAgIGkuZXZlbnQuYmluZChpLnNjcm9sbGJhclksICdmb2N1cycsIGZvY3VzKTsKICAgICAgICAgICAgaS5ldmVudC5iaW5kKGkuc2Nyb2xsYmFyWSwgJ2JsdXInLCBibHVyKTsKICAgICAgICAgICAgaS5zY3JvbGxiYXJZQWN0aXZlID0gbnVsbDsKICAgICAgICAgICAgaS5zY3JvbGxiYXJZSGVpZ2h0ID0gbnVsbDsKICAgICAgICAgICAgaS5zY3JvbGxiYXJZVG9wID0gbnVsbDsKICAgICAgICAgICAgaS5zY3JvbGxiYXJZUmlnaHQgPSBoLnRvSW50KGQuY3NzKGkuc2Nyb2xsYmFyWVJhaWwsICdyaWdodCcpKTsKICAgICAgICAgICAgaS5pc1Njcm9sbGJhcllVc2luZ1JpZ2h0ID0gaS5zY3JvbGxiYXJZUmlnaHQgPT09IGkuc2Nyb2xsYmFyWVJpZ2h0OyAvLyAhaXNOYU4KICAgICAgICAgICAgaS5zY3JvbGxiYXJZTGVmdCA9IGkuaXNTY3JvbGxiYXJZVXNpbmdSaWdodCA/IG51bGwgOiBoLnRvSW50KGQuY3NzKGkuc2Nyb2xsYmFyWVJhaWwsICdsZWZ0JykpOwogICAgICAgICAgICBpLnNjcm9sbGJhcllPdXRlcldpZHRoID0gaS5pc1J0bCA/IGgub3V0ZXJXaWR0aChpLnNjcm9sbGJhclkpIDogbnVsbDsKICAgICAgICAgICAgaS5yYWlsQm9yZGVyWVdpZHRoID0gaC50b0ludChkLmNzcyhpLnNjcm9sbGJhcllSYWlsLCAnYm9yZGVyVG9wV2lkdGgnKSkgKyBoLnRvSW50KGQuY3NzKGkuc2Nyb2xsYmFyWVJhaWwsICdib3JkZXJCb3R0b21XaWR0aCcpKTsKICAgICAgICAgICAgZC5jc3MoaS5zY3JvbGxiYXJZUmFpbCwgJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAgaS5yYWlsWU1hcmdpbkhlaWdodCA9IGgudG9JbnQoZC5jc3MoaS5zY3JvbGxiYXJZUmFpbCwgJ21hcmdpblRvcCcpKSArIGgudG9JbnQoZC5jc3MoaS5zY3JvbGxiYXJZUmFpbCwgJ21hcmdpbkJvdHRvbScpKTsKICAgICAgICAgICAgZC5jc3MoaS5zY3JvbGxiYXJZUmFpbCwgJ2Rpc3BsYXknLCAnJyk7CiAgICAgICAgICAgIGkucmFpbFlIZWlnaHQgPSBudWxsOwogICAgICAgICAgICBpLnJhaWxZUmF0aW8gPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2V0SWQoZWxlbWVudCkgewogICAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQuZGF0YXNldCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1wcy1pZCcpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZGF0YXNldC5wc0lkOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzZXRJZChlbGVtZW50LCBpZCkgewogICAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQuZGF0YXNldCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXBzLWlkJywgaWQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWxlbWVudC5kYXRhc2V0LnBzSWQgPSBpZDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlSWQoZWxlbWVudCkgewogICAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQuZGF0YXNldCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXBzLWlkJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkZWxldGUgZWxlbWVudC5kYXRhc2V0LnBzSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGV4cG9ydHMuYWRkID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB2YXIgbmV3SWQgPSBndWlkKCk7CiAgICAgICAgICAgIHNldElkKGVsZW1lbnQsIG5ld0lkKTsKICAgICAgICAgICAgaW5zdGFuY2VzW25ld0lkXSA9IG5ldyBJbnN0YW5jZShlbGVtZW50KTsKICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlc1tuZXdJZF07CiAgICAgICAgfTsKCiAgICAgICAgZXhwb3J0cy5yZW1vdmUgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgIGRlbGV0ZSBpbnN0YW5jZXNbZ2V0SWQoZWxlbWVudCldOwogICAgICAgICAgICByZW1vdmVJZChlbGVtZW50KTsKICAgICAgICB9OwoKICAgICAgICBleHBvcnRzLmdldCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlc1tnZXRJZChlbGVtZW50KV07CiAgICAgICAgfTsKCiAgICB9LCB7CiAgICAgICAgIi4uL2xpYi9jbGFzcyI6IDIsCiAgICAgICAgIi4uL2xpYi9kb20iOiAzLAogICAgICAgICIuLi9saWIvZXZlbnQtbWFuYWdlciI6IDQsCiAgICAgICAgIi4uL2xpYi9ndWlkIjogNSwKICAgICAgICAiLi4vbGliL2hlbHBlciI6IDYsCiAgICAgICAgIi4vZGVmYXVsdC1zZXR0aW5nIjogOAogICAgfV0sCiAgICAxOTogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIGNscyA9IHJlcXVpcmUoJy4uL2xpYi9jbGFzcycpLAogICAgICAgICAgICBkID0gcmVxdWlyZSgnLi4vbGliL2RvbScpLAogICAgICAgICAgICBoID0gcmVxdWlyZSgnLi4vbGliL2hlbHBlcicpLAogICAgICAgICAgICBpbnN0YW5jZXMgPSByZXF1aXJlKCcuL2luc3RhbmNlcycpLAogICAgICAgICAgICB1cGRhdGVTY3JvbGwgPSByZXF1aXJlKCcuL3VwZGF0ZS1zY3JvbGwnKTsKCiAgICAgICAgZnVuY3Rpb24gZ2V0VGh1bWJTaXplKGksIHRodW1iU2l6ZSkgewogICAgICAgICAgICBpZiAoaS5zZXR0aW5ncy5taW5TY3JvbGxiYXJMZW5ndGgpIHsKICAgICAgICAgICAgICAgIHRodW1iU2l6ZSA9IE1hdGgubWF4KHRodW1iU2l6ZSwgaS5zZXR0aW5ncy5taW5TY3JvbGxiYXJMZW5ndGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpLnNldHRpbmdzLm1heFNjcm9sbGJhckxlbmd0aCkgewogICAgICAgICAgICAgICAgdGh1bWJTaXplID0gTWF0aC5taW4odGh1bWJTaXplLCBpLnNldHRpbmdzLm1heFNjcm9sbGJhckxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRodW1iU2l6ZTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNzcyhlbGVtZW50LCBpKSB7CiAgICAgICAgICAgIHZhciB4UmFpbE9mZnNldCA9IHsKICAgICAgICAgICAgICAgIHdpZHRoOiBpLnJhaWxYV2lkdGgKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKGkuaXNSdGwpIHsKICAgICAgICAgICAgICAgIHhSYWlsT2Zmc2V0LmxlZnQgPSBpLm5lZ2F0aXZlU2Nyb2xsQWRqdXN0bWVudCArIGVsZW1lbnQuc2Nyb2xsTGVmdCArIGkuY29udGFpbmVyV2lkdGggLSBpLmNvbnRlbnRXaWR0aDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHhSYWlsT2Zmc2V0LmxlZnQgPSBlbGVtZW50LnNjcm9sbExlZnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGkuaXNTY3JvbGxiYXJYVXNpbmdCb3R0b20pIHsKICAgICAgICAgICAgICAgIHhSYWlsT2Zmc2V0LmJvdHRvbSA9IGkuc2Nyb2xsYmFyWEJvdHRvbSAtIGVsZW1lbnQuc2Nyb2xsVG9wOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgeFJhaWxPZmZzZXQudG9wID0gaS5zY3JvbGxiYXJYVG9wICsgZWxlbWVudC5zY3JvbGxUb3A7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZC5jc3MoaS5zY3JvbGxiYXJYUmFpbCwgeFJhaWxPZmZzZXQpOwoKICAgICAgICAgICAgdmFyIHlSYWlsT2Zmc2V0ID0gewogICAgICAgICAgICAgICAgdG9wOiBlbGVtZW50LnNjcm9sbFRvcCwKICAgICAgICAgICAgICAgIGhlaWdodDogaS5yYWlsWUhlaWdodAogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoaS5pc1Njcm9sbGJhcllVc2luZ1JpZ2h0KSB7CiAgICAgICAgICAgICAgICBpZiAoaS5pc1J0bCkgewogICAgICAgICAgICAgICAgICAgIHlSYWlsT2Zmc2V0LnJpZ2h0ID0gaS5jb250ZW50V2lkdGggLSAoaS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQgKyBlbGVtZW50LnNjcm9sbExlZnQpIC0gaS5zY3JvbGxiYXJZUmlnaHQgLSBpLnNjcm9sbGJhcllPdXRlcldpZHRoOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB5UmFpbE9mZnNldC5yaWdodCA9IGkuc2Nyb2xsYmFyWVJpZ2h0IC0gZWxlbWVudC5zY3JvbGxMZWZ0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGkuaXNSdGwpIHsKICAgICAgICAgICAgICAgICAgICB5UmFpbE9mZnNldC5sZWZ0ID0gaS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQgKyBlbGVtZW50LnNjcm9sbExlZnQgKyBpLmNvbnRhaW5lcldpZHRoICogMiAtIGkuY29udGVudFdpZHRoIC0gaS5zY3JvbGxiYXJZTGVmdCAtIGkuc2Nyb2xsYmFyWU91dGVyV2lkdGg7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHlSYWlsT2Zmc2V0LmxlZnQgPSBpLnNjcm9sbGJhcllMZWZ0ICsgZWxlbWVudC5zY3JvbGxMZWZ0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGQuY3NzKGkuc2Nyb2xsYmFyWVJhaWwsIHlSYWlsT2Zmc2V0KTsKCiAgICAgICAgICAgIGQuY3NzKGkuc2Nyb2xsYmFyWCwgewogICAgICAgICAgICAgICAgbGVmdDogaS5zY3JvbGxiYXJYTGVmdCwKICAgICAgICAgICAgICAgIHdpZHRoOiBpLnNjcm9sbGJhclhXaWR0aCAtIGkucmFpbEJvcmRlclhXaWR0aAogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZC5jc3MoaS5zY3JvbGxiYXJZLCB7CiAgICAgICAgICAgICAgICB0b3A6IGkuc2Nyb2xsYmFyWVRvcCwKICAgICAgICAgICAgICAgIGhlaWdodDogaS5zY3JvbGxiYXJZSGVpZ2h0IC0gaS5yYWlsQm9yZGVyWVdpZHRoCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgIHZhciBpID0gaW5zdGFuY2VzLmdldChlbGVtZW50KTsKCiAgICAgICAgICAgIGkuY29udGFpbmVyV2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoOwogICAgICAgICAgICBpLmNvbnRhaW5lckhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OwogICAgICAgICAgICBpLmNvbnRlbnRXaWR0aCA9IGVsZW1lbnQuc2Nyb2xsV2lkdGg7CiAgICAgICAgICAgIGkuY29udGVudEhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0OwoKICAgICAgICAgICAgdmFyIGV4aXN0aW5nUmFpbHM7CiAgICAgICAgICAgIGlmICghZWxlbWVudC5jb250YWlucyhpLnNjcm9sbGJhclhSYWlsKSkgewogICAgICAgICAgICAgICAgZXhpc3RpbmdSYWlscyA9IGQucXVlcnlDaGlsZHJlbihlbGVtZW50LCAnLnBzLXNjcm9sbGJhci14LXJhaWwnKTsKICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1JhaWxzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1JhaWxzLmZvckVhY2goZnVuY3Rpb24ocmFpbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkLnJlbW92ZShyYWlsKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGQuYXBwZW5kVG8oaS5zY3JvbGxiYXJYUmFpbCwgZWxlbWVudCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFlbGVtZW50LmNvbnRhaW5zKGkuc2Nyb2xsYmFyWVJhaWwpKSB7CiAgICAgICAgICAgICAgICBleGlzdGluZ1JhaWxzID0gZC5xdWVyeUNoaWxkcmVuKGVsZW1lbnQsICcucHMtc2Nyb2xsYmFyLXktcmFpbCcpOwogICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nUmFpbHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUmFpbHMuZm9yRWFjaChmdW5jdGlvbihyYWlsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQucmVtb3ZlKHJhaWwpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZC5hcHBlbmRUbyhpLnNjcm9sbGJhcllSYWlsLCBlbGVtZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpLnNldHRpbmdzLnN1cHByZXNzU2Nyb2xsWCAmJiBpLmNvbnRhaW5lcldpZHRoICsgaS5zZXR0aW5ncy5zY3JvbGxYTWFyZ2luT2Zmc2V0IDwgaS5jb250ZW50V2lkdGgpIHsKICAgICAgICAgICAgICAgIGkuc2Nyb2xsYmFyWEFjdGl2ZSA9IHRydWU7CiAgICAgICAgICAgICAgICBpLnJhaWxYV2lkdGggPSBpLmNvbnRhaW5lcldpZHRoIC0gaS5yYWlsWE1hcmdpbldpZHRoOwogICAgICAgICAgICAgICAgaS5yYWlsWFJhdGlvID0gaS5jb250YWluZXJXaWR0aCAvIGkucmFpbFhXaWR0aDsKICAgICAgICAgICAgICAgIGkuc2Nyb2xsYmFyWFdpZHRoID0gZ2V0VGh1bWJTaXplKGksIGgudG9JbnQoaS5yYWlsWFdpZHRoICogaS5jb250YWluZXJXaWR0aCAvIGkuY29udGVudFdpZHRoKSk7CiAgICAgICAgICAgICAgICBpLnNjcm9sbGJhclhMZWZ0ID0gaC50b0ludCgoaS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQgKyBlbGVtZW50LnNjcm9sbExlZnQpICogKGkucmFpbFhXaWR0aCAtIGkuc2Nyb2xsYmFyWFdpZHRoKSAvIChpLmNvbnRlbnRXaWR0aCAtIGkuY29udGFpbmVyV2lkdGgpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGkuc2Nyb2xsYmFyWEFjdGl2ZSA9IGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWkuc2V0dGluZ3Muc3VwcHJlc3NTY3JvbGxZICYmIGkuY29udGFpbmVySGVpZ2h0ICsgaS5zZXR0aW5ncy5zY3JvbGxZTWFyZ2luT2Zmc2V0IDwgaS5jb250ZW50SGVpZ2h0KSB7CiAgICAgICAgICAgICAgICBpLnNjcm9sbGJhcllBY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgaS5yYWlsWUhlaWdodCA9IGkuY29udGFpbmVySGVpZ2h0IC0gaS5yYWlsWU1hcmdpbkhlaWdodDsKICAgICAgICAgICAgICAgIGkucmFpbFlSYXRpbyA9IGkuY29udGFpbmVySGVpZ2h0IC8gaS5yYWlsWUhlaWdodDsKICAgICAgICAgICAgICAgIGkuc2Nyb2xsYmFyWUhlaWdodCA9IGdldFRodW1iU2l6ZShpLCBoLnRvSW50KGkucmFpbFlIZWlnaHQgKiBpLmNvbnRhaW5lckhlaWdodCAvIGkuY29udGVudEhlaWdodCkpOwogICAgICAgICAgICAgICAgaS5zY3JvbGxiYXJZVG9wID0gaC50b0ludChlbGVtZW50LnNjcm9sbFRvcCAqIChpLnJhaWxZSGVpZ2h0IC0gaS5zY3JvbGxiYXJZSGVpZ2h0KSAvIChpLmNvbnRlbnRIZWlnaHQgLSBpLmNvbnRhaW5lckhlaWdodCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaS5zY3JvbGxiYXJZQWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpLnNjcm9sbGJhclhMZWZ0ID49IGkucmFpbFhXaWR0aCAtIGkuc2Nyb2xsYmFyWFdpZHRoKSB7CiAgICAgICAgICAgICAgICBpLnNjcm9sbGJhclhMZWZ0ID0gaS5yYWlsWFdpZHRoIC0gaS5zY3JvbGxiYXJYV2lkdGg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGkuc2Nyb2xsYmFyWVRvcCA+PSBpLnJhaWxZSGVpZ2h0IC0gaS5zY3JvbGxiYXJZSGVpZ2h0KSB7CiAgICAgICAgICAgICAgICBpLnNjcm9sbGJhcllUb3AgPSBpLnJhaWxZSGVpZ2h0IC0gaS5zY3JvbGxiYXJZSGVpZ2h0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1cGRhdGVDc3MoZWxlbWVudCwgaSk7CgogICAgICAgICAgICBpZiAoaS5zY3JvbGxiYXJYQWN0aXZlKSB7CiAgICAgICAgICAgICAgICBjbHMuYWRkKGVsZW1lbnQsICdwcy1hY3RpdmUteCcpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY2xzLnJlbW92ZShlbGVtZW50LCAncHMtYWN0aXZlLXgnKTsKICAgICAgICAgICAgICAgIGkuc2Nyb2xsYmFyWFdpZHRoID0gMDsKICAgICAgICAgICAgICAgIGkuc2Nyb2xsYmFyWExlZnQgPSAwOwogICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICdsZWZ0JywgMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGkuc2Nyb2xsYmFyWUFjdGl2ZSkgewogICAgICAgICAgICAgICAgY2xzLmFkZChlbGVtZW50LCAncHMtYWN0aXZlLXknKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNscy5yZW1vdmUoZWxlbWVudCwgJ3BzLWFjdGl2ZS15Jyk7CiAgICAgICAgICAgICAgICBpLnNjcm9sbGJhcllIZWlnaHQgPSAwOwogICAgICAgICAgICAgICAgaS5zY3JvbGxiYXJZVG9wID0gMDsKICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbChlbGVtZW50LCAndG9wJywgMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgIH0sIHsKICAgICAgICAiLi4vbGliL2NsYXNzIjogMiwKICAgICAgICAiLi4vbGliL2RvbSI6IDMsCiAgICAgICAgIi4uL2xpYi9oZWxwZXIiOiA2LAogICAgICAgICIuL2luc3RhbmNlcyI6IDE4LAogICAgICAgICIuL3VwZGF0ZS1zY3JvbGwiOiAyMAogICAgfV0sCiAgICAyMDogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIGluc3RhbmNlcyA9IHJlcXVpcmUoJy4vaW5zdGFuY2VzJyk7CgogICAgICAgIHZhciB1cEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JyksCiAgICAgICAgICAgIGRvd25FdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpLAogICAgICAgICAgICBsZWZ0RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKSwKICAgICAgICAgICAgcmlnaHRFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpLAogICAgICAgICAgICB5RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKSwKICAgICAgICAgICAgeEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JyksCiAgICAgICAgICAgIHhTdGFydEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JyksCiAgICAgICAgICAgIHhFbmRFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpLAogICAgICAgICAgICB5U3RhcnRFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpLAogICAgICAgICAgICB5RW5kRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKSwKICAgICAgICAgICAgbGFzdFRvcCwgbGFzdExlZnQ7CgogICAgICAgIHVwRXZlbnQuaW5pdEV2ZW50KCdwcy1zY3JvbGwtdXAnLCB0cnVlLCB0cnVlKTsKICAgICAgICBkb3duRXZlbnQuaW5pdEV2ZW50KCdwcy1zY3JvbGwtZG93bicsIHRydWUsIHRydWUpOwogICAgICAgIGxlZnRFdmVudC5pbml0RXZlbnQoJ3BzLXNjcm9sbC1sZWZ0JywgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgcmlnaHRFdmVudC5pbml0RXZlbnQoJ3BzLXNjcm9sbC1yaWdodCcsIHRydWUsIHRydWUpOwogICAgICAgIHlFdmVudC5pbml0RXZlbnQoJ3BzLXNjcm9sbC15JywgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgeEV2ZW50LmluaXRFdmVudCgncHMtc2Nyb2xsLXgnLCB0cnVlLCB0cnVlKTsKICAgICAgICB4U3RhcnRFdmVudC5pbml0RXZlbnQoJ3BzLXgtcmVhY2gtc3RhcnQnLCB0cnVlLCB0cnVlKTsKICAgICAgICB4RW5kRXZlbnQuaW5pdEV2ZW50KCdwcy14LXJlYWNoLWVuZCcsIHRydWUsIHRydWUpOwogICAgICAgIHlTdGFydEV2ZW50LmluaXRFdmVudCgncHMteS1yZWFjaC1zdGFydCcsIHRydWUsIHRydWUpOwogICAgICAgIHlFbmRFdmVudC5pbml0RXZlbnQoJ3BzLXktcmVhY2gtZW5kJywgdHJ1ZSwgdHJ1ZSk7CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZWxlbWVudCwgYXhpcywgdmFsdWUpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgdGhyb3cgJ1lvdSBtdXN0IHByb3ZpZGUgYW4gZWxlbWVudCB0byB0aGUgdXBkYXRlLXNjcm9sbCBmdW5jdGlvbic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0eXBlb2YgYXhpcyA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHRocm93ICdZb3UgbXVzdCBwcm92aWRlIGFuIGF4aXMgdG8gdGhlIHVwZGF0ZS1zY3JvbGwgZnVuY3Rpb24nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgdGhyb3cgJ1lvdSBtdXN0IHByb3ZpZGUgYSB2YWx1ZSB0byB0aGUgdXBkYXRlLXNjcm9sbCBmdW5jdGlvbic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChheGlzID09PSAndG9wJyAmJiB2YWx1ZSA8PSAwKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IHZhbHVlID0gMDsgLy8gZG9uJ3QgYWxsb3cgbmVnYXRpdmUgc2Nyb2xsCiAgICAgICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoeVN0YXJ0RXZlbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoYXhpcyA9PT0gJ2xlZnQnICYmIHZhbHVlIDw9IDApIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IHZhbHVlID0gMDsgLy8gZG9uJ3QgYWxsb3cgbmVnYXRpdmUgc2Nyb2xsCiAgICAgICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoeFN0YXJ0RXZlbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgaSA9IGluc3RhbmNlcy5nZXQoZWxlbWVudCk7CgogICAgICAgICAgICBpZiAoYXhpcyA9PT0gJ3RvcCcgJiYgdmFsdWUgPj0gaS5jb250ZW50SGVpZ2h0IC0gaS5jb250YWluZXJIZWlnaHQpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gdmFsdWUgPSBpLmNvbnRlbnRIZWlnaHQgLSBpLmNvbnRhaW5lckhlaWdodDsgLy8gZG9uJ3QgYWxsb3cgc2Nyb2xsIHBhc3QgY29udGFpbmVyCiAgICAgICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoeUVuZEV2ZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGF4aXMgPT09ICdsZWZ0JyAmJiB2YWx1ZSA+PSBpLmNvbnRlbnRXaWR0aCAtIGkuY29udGFpbmVyV2lkdGgpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IHZhbHVlID0gaS5jb250ZW50V2lkdGggLSBpLmNvbnRhaW5lcldpZHRoOyAvLyBkb24ndCBhbGxvdyBzY3JvbGwgcGFzdCBjb250YWluZXIKICAgICAgICAgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudCh4RW5kRXZlbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWxhc3RUb3ApIHsKICAgICAgICAgICAgICAgIGxhc3RUb3AgPSBlbGVtZW50LnNjcm9sbFRvcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFsYXN0TGVmdCkgewogICAgICAgICAgICAgICAgbGFzdExlZnQgPSBlbGVtZW50LnNjcm9sbExlZnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChheGlzID09PSAndG9wJyAmJiB2YWx1ZSA8IGxhc3RUb3ApIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudCh1cEV2ZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGF4aXMgPT09ICd0b3AnICYmIHZhbHVlID4gbGFzdFRvcCkgewogICAgICAgICAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGRvd25FdmVudCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChheGlzID09PSAnbGVmdCcgJiYgdmFsdWUgPCBsYXN0TGVmdCkgewogICAgICAgICAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGxlZnRFdmVudCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChheGlzID09PSAnbGVmdCcgJiYgdmFsdWUgPiBsYXN0TGVmdCkgewogICAgICAgICAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KHJpZ2h0RXZlbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoYXhpcyA9PT0gJ3RvcCcpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gbGFzdFRvcCA9IHZhbHVlOwogICAgICAgICAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KHlFdmVudCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChheGlzID09PSAnbGVmdCcpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxhc3RMZWZ0ID0gdmFsdWU7CiAgICAgICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoeEV2ZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICB9OwoKICAgIH0sIHsKICAgICAgICAiLi9pbnN0YW5jZXMiOiAxOAogICAgfV0sCiAgICAyMTogW2Z1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgewogICAgICAgICd1c2Ugc3RyaWN0JzsKCiAgICAgICAgdmFyIGQgPSByZXF1aXJlKCcuLi9saWIvZG9tJyksCiAgICAgICAgICAgIGggPSByZXF1aXJlKCcuLi9saWIvaGVscGVyJyksCiAgICAgICAgICAgIGluc3RhbmNlcyA9IHJlcXVpcmUoJy4vaW5zdGFuY2VzJyksCiAgICAgICAgICAgIHVwZGF0ZUdlb21ldHJ5ID0gcmVxdWlyZSgnLi91cGRhdGUtZ2VvbWV0cnknKSwKICAgICAgICAgICAgdXBkYXRlU2Nyb2xsID0gcmVxdWlyZSgnLi91cGRhdGUtc2Nyb2xsJyk7CgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB2YXIgaSA9IGluc3RhbmNlcy5nZXQoZWxlbWVudCk7CgogICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gUmVjYWxjdWF0ZSBuZWdhdGl2ZSBzY3JvbGxMZWZ0IGFkanVzdG1lbnQKICAgICAgICAgICAgaS5uZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQgPSBpLmlzTmVnYXRpdmVTY3JvbGwgPyBlbGVtZW50LnNjcm9sbFdpZHRoIC0gZWxlbWVudC5jbGllbnRXaWR0aCA6IDA7CgogICAgICAgICAgICAvLyBSZWNhbGN1bGF0ZSByYWlsIG1hcmdpbnMKICAgICAgICAgICAgZC5jc3MoaS5zY3JvbGxiYXJYUmFpbCwgJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAgZC5jc3MoaS5zY3JvbGxiYXJZUmFpbCwgJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAgaS5yYWlsWE1hcmdpbldpZHRoID0gaC50b0ludChkLmNzcyhpLnNjcm9sbGJhclhSYWlsLCAnbWFyZ2luTGVmdCcpKSArIGgudG9JbnQoZC5jc3MoaS5zY3JvbGxiYXJYUmFpbCwgJ21hcmdpblJpZ2h0JykpOwogICAgICAgICAgICBpLnJhaWxZTWFyZ2luSGVpZ2h0ID0gaC50b0ludChkLmNzcyhpLnNjcm9sbGJhcllSYWlsLCAnbWFyZ2luVG9wJykpICsgaC50b0ludChkLmNzcyhpLnNjcm9sbGJhcllSYWlsLCAnbWFyZ2luQm90dG9tJykpOwoKICAgICAgICAgICAgLy8gSGlkZSBzY3JvbGxiYXJzIG5vdCB0byBhZmZlY3Qgc2Nyb2xsV2lkdGggYW5kIHNjcm9sbEhlaWdodAogICAgICAgICAgICBkLmNzcyhpLnNjcm9sbGJhclhSYWlsLCAnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgIGQuY3NzKGkuc2Nyb2xsYmFyWVJhaWwsICdkaXNwbGF5JywgJ25vbmUnKTsKCiAgICAgICAgICAgIHVwZGF0ZUdlb21ldHJ5KGVsZW1lbnQpOwoKICAgICAgICAgICAgLy8gVXBkYXRlIHRvcC9sZWZ0IHNjcm9sbCB0byB0cmlnZ2VyIGV2ZW50cwogICAgICAgICAgICB1cGRhdGVTY3JvbGwoZWxlbWVudCwgJ3RvcCcsIGVsZW1lbnQuc2Nyb2xsVG9wKTsKICAgICAgICAgICAgdXBkYXRlU2Nyb2xsKGVsZW1lbnQsICdsZWZ0JywgZWxlbWVudC5zY3JvbGxMZWZ0KTsKCiAgICAgICAgICAgIGQuY3NzKGkuc2Nyb2xsYmFyWFJhaWwsICdkaXNwbGF5JywgJycpOwogICAgICAgICAgICBkLmNzcyhpLnNjcm9sbGJhcllSYWlsLCAnZGlzcGxheScsICcnKTsKICAgICAgICB9OwoKICAgIH0sIHsKICAgICAgICAiLi4vbGliL2RvbSI6IDMsCiAgICAgICAgIi4uL2xpYi9oZWxwZXIiOiA2LAogICAgICAgICIuL2luc3RhbmNlcyI6IDE4LAogICAgICAgICIuL3VwZGF0ZS1nZW9tZXRyeSI6IDE5LAogICAgICAgICIuL3VwZGF0ZS1zY3JvbGwiOiAyMAogICAgfV0KfSwge30sIFsxXSk7"}},"time_used":1009,"timings":{"blocked":915,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/lib/swiper/swiper.min.js?ver=5.3.6","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.505Z","timestamp":1785145482505,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/lib/swiper/swiper.min.js?ver=5.3.6 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 228169\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":228169,"size_decoded":228387,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (1439)","md5":"7048a383abb1689fc86952334f5b28d5","sha1":"34dd83eab70f92ee45a2f6b2257acb49974d34f8","sha256":"5eec612a620507cb6c5d86d2edc60da0cc8fe7d399a1ac509e67d7c180e41ed2","sha512":"2922cfa3b9a2b6d1ec8d10ff656b4108c170494ed5c45f3d2d5a61f5305ea82836f09bc1a7e7a6172350c61a0b8e89c007a043321c9c5cc355a4857d6b75974a","ssdeep":"3072:87M+BFVS96K32h3KfzpmrpJKtmtuoMojm52YhAyooQPuj6:aM63KlpmrpJKouoMojm52YhAyo+j6","tlshash":"25245e0a63e52575a693b12b8e6ec500b37a400b6a0aec6c395c55d44f6d83c13feff9","first_seen":"2023-07-01T15:13:09Z","last_seen":"2026-07-27T10:21:19.564752Z","times_seen":37,"resource_available":true,"data":"LyoqCiAqIFN3aXBlciA1LjMuNgogKiBNb3N0IG1vZGVybiBtb2JpbGUgdG91Y2ggc2xpZGVyIGFuZCBmcmFtZXdvcmsgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRlZCB0cmFuc2l0aW9ucwogKiBodHRwOi8vc3dpcGVyanMuY29tCiAqCiAqIENvcHlyaWdodCAyMDE0LTIwMjAgVmxhZGltaXIgS2hhcmxhbXBpZGkKICoKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlCiAqCiAqIFJlbGVhc2VkIG9uOiBGZWJydWFyeSAyOSwgMjAyMAogKi8KCiEgZnVuY3Rpb24oZSwgdCkgewogICAgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IG1vZHVsZS5leHBvcnRzID0gdCgpIDogImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgPyBkZWZpbmUodCkgOiAoZSA9IGUgfHwgc2VsZikuU3dpcGVyID0gdCgpCn0odGhpcywgKGZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwogICAgdmFyIGUgPSAidW5kZWZpbmVkIiA9PSB0eXBlb2YgZG9jdW1lbnQgPyB7CiAgICAgICAgICAgIGJvZHk6IHt9LAogICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICBhY3RpdmVFbGVtZW50OiB7CiAgICAgICAgICAgICAgICBibHVyOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgbm9kZU5hbWU6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHF1ZXJ5U2VsZWN0b3I6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcXVlcnlTZWxlY3RvckFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlRXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBpbml0RXZlbnQ6IGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwKICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGVzOiBbXSwKICAgICAgICAgICAgICAgICAgICBzdHlsZToge30sCiAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgICAgIGdldEVsZW1lbnRzQnlUYWdOYW1lOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBsb2NhdGlvbjogewogICAgICAgICAgICAgICAgaGFzaDogIiIKICAgICAgICAgICAgfQogICAgICAgIH0gOiBkb2N1bWVudCwKICAgICAgICB0ID0gInVuZGVmaW5lZCIgPT0gdHlwZW9mIHdpbmRvdyA/IHsKICAgICAgICAgICAgZG9jdW1lbnQ6IGUsCiAgICAgICAgICAgIG5hdmlnYXRvcjogewogICAgICAgICAgICAgICAgdXNlckFnZW50OiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICBsb2NhdGlvbjoge30sCiAgICAgICAgICAgIGhpc3Rvcnk6IHt9LAogICAgICAgICAgICBDdXN0b21FdmVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICBnZXRDb21wdXRlZFN0eWxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgZ2V0UHJvcGVydHlWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1hZ2U6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgIERhdGU6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgIHNjcmVlbjoge30sCiAgICAgICAgICAgIHNldFRpbWVvdXQ6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgIGNsZWFyVGltZW91dDogZnVuY3Rpb24oKSB7fQogICAgICAgIH0gOiB3aW5kb3csCiAgICAgICAgaSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCBlLmxlbmd0aDsgdCArPSAxKSB0aGlzW3RdID0gZVt0XTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoID0gZS5sZW5ndGgsIHRoaXMKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIHMocywgYSkgewogICAgICAgIHZhciByID0gW10sCiAgICAgICAgICAgIG4gPSAwOwogICAgICAgIGlmIChzICYmICFhICYmIHMgaW5zdGFuY2VvZiBpKSByZXR1cm4gczsKICAgICAgICBpZiAocykKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBzKSB7CiAgICAgICAgICAgICAgICB2YXIgbywgbCwgZCA9IHMudHJpbSgpOwogICAgICAgICAgICAgICAgaWYgKGQuaW5kZXhPZigiPCIpID49IDAgJiYgZC5pbmRleE9mKCI+IikgPj0gMCkgewogICAgICAgICAgICAgICAgICAgIHZhciBoID0gImRpdiI7CiAgICAgICAgICAgICAgICAgICAgZm9yICgwID09PSBkLmluZGV4T2YoIjxsaSIpICYmIChoID0gInVsIiksIDAgPT09IGQuaW5kZXhPZigiPHRyIikgJiYgKGggPSAidGJvZHkiKSwgMCAhPT0gZC5pbmRleE9mKCI8dGQiKSAmJiAwICE9PSBkLmluZGV4T2YoIjx0aCIpIHx8IChoID0gInRyIiksIDAgPT09IGQuaW5kZXhPZigiPHRib2R5IikgJiYgKGggPSAidGFibGUiKSwgMCA9PT0gZC5pbmRleE9mKCI8b3B0aW9uIikgJiYgKGggPSAic2VsZWN0IiksIChsID0gZS5jcmVhdGVFbGVtZW50KGgpKS5pbm5lckhUTUwgPSBkLCBuID0gMDsgbiA8IGwuY2hpbGROb2Rlcy5sZW5ndGg7IG4gKz0gMSkgci5wdXNoKGwuY2hpbGROb2Rlc1tuXSkKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IGEgfHwgIiMiICE9PSBzWzBdIHx8IHMubWF0Y2goL1sgLjw+On5dLykgPyAoYSB8fCBlKS5xdWVyeVNlbGVjdG9yQWxsKHMudHJpbSgpKSA6IFtlLmdldEVsZW1lbnRCeUlkKHMudHJpbSgpLnNwbGl0KCIjIilbMV0pXSwgbiA9IDA7IG4gPCBvLmxlbmd0aDsgbiArPSAxKSBvW25dICYmIHIucHVzaChvW25dKQogICAgICAgICAgICB9IGVsc2UgaWYgKHMubm9kZVR5cGUgfHwgcyA9PT0gdCB8fCBzID09PSBlKSByLnB1c2gocyk7CiAgICAgICAgZWxzZSBpZiAocy5sZW5ndGggPiAwICYmIHNbMF0ubm9kZVR5cGUpCiAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBzLmxlbmd0aDsgbiArPSAxKSByLnB1c2goc1tuXSk7CiAgICAgICAgcmV0dXJuIG5ldyBpKHIpCiAgICB9CgogICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgZm9yICh2YXIgdCA9IFtdLCBpID0gMDsgaSA8IGUubGVuZ3RoOyBpICs9IDEpIC0gMSA9PT0gdC5pbmRleE9mKGVbaV0pICYmIHQucHVzaChlW2ldKTsKICAgICAgICByZXR1cm4gdAogICAgfQogICAgcy5mbiA9IGkucHJvdG90eXBlLCBzLkNsYXNzID0gaSwgcy5Eb203ID0gaTsKICAgIHZhciByID0gewogICAgICAgIGFkZENsYXNzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUpIHJldHVybiB0aGlzOwogICAgICAgICAgICBmb3IgKHZhciB0ID0gZS5zcGxpdCgiICIpLCBpID0gMDsgaSA8IHQubGVuZ3RoOyBpICs9IDEpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMubGVuZ3RoOyBzICs9IDEpIHZvaWQgMCAhPT0gdGhpc1tzXSAmJiB2b2lkIDAgIT09IHRoaXNbc10uY2xhc3NMaXN0ICYmIHRoaXNbc10uY2xhc3NMaXN0LmFkZCh0W2ldKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIHJlbW92ZUNsYXNzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSBlLnNwbGl0KCIgIiksIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkgKz0gMSkKICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgdGhpcy5sZW5ndGg7IHMgKz0gMSkgdm9pZCAwICE9PSB0aGlzW3NdICYmIHZvaWQgMCAhPT0gdGhpc1tzXS5jbGFzc0xpc3QgJiYgdGhpc1tzXS5jbGFzc0xpc3QucmVtb3ZlKHRbaV0pOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgaGFzQ2xhc3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICEhdGhpc1swXSAmJiB0aGlzWzBdLmNsYXNzTGlzdC5jb250YWlucyhlKQogICAgICAgIH0sCiAgICAgICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IGUuc3BsaXQoIiAiKSwgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSArPSAxKQogICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLmxlbmd0aDsgcyArPSAxKSB2b2lkIDAgIT09IHRoaXNbc10gJiYgdm9pZCAwICE9PSB0aGlzW3NdLmNsYXNzTGlzdCAmJiB0aGlzW3NdLmNsYXNzTGlzdC50b2dnbGUodFtpXSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICBhdHRyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzOwogICAgICAgICAgICBpZiAoMSA9PT0gYXJndW1lbnRzLmxlbmd0aCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgZSkgcmV0dXJuIHRoaXNbMF0gPyB0aGlzWzBdLmdldEF0dHJpYnV0ZShlKSA6IHZvaWQgMDsKICAgICAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLmxlbmd0aDsgcyArPSAxKQogICAgICAgICAgICAgICAgaWYgKDIgPT09IGkubGVuZ3RoKSB0aGlzW3NdLnNldEF0dHJpYnV0ZShlLCB0KTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhIGluIGUpIHRoaXNbc11bYV0gPSBlW2FdLCB0aGlzW3NdLnNldEF0dHJpYnV0ZShhLCBlW2FdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCB0aGlzLmxlbmd0aDsgdCArPSAxKSB0aGlzW3RdLnJlbW92ZUF0dHJpYnV0ZShlKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIGRhdGE6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgdGhpcy5sZW5ndGg7IHMgKz0gMSkoaSA9IHRoaXNbc10pLmRvbTdFbGVtZW50RGF0YVN0b3JhZ2UgfHwgKGkuZG9tN0VsZW1lbnREYXRhU3RvcmFnZSA9IHt9KSwgaS5kb203RWxlbWVudERhdGFTdG9yYWdlW2VdID0gdDsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGkgPSB0aGlzWzBdKSB7CiAgICAgICAgICAgICAgICBpZiAoaS5kb203RWxlbWVudERhdGFTdG9yYWdlICYmIGUgaW4gaS5kb203RWxlbWVudERhdGFTdG9yYWdlKSByZXR1cm4gaS5kb203RWxlbWVudERhdGFTdG9yYWdlW2VdOwogICAgICAgICAgICAgICAgdmFyIGEgPSBpLmdldEF0dHJpYnV0ZSgiZGF0YS0iICsgZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gYSB8fCB2b2lkIDAKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgdGhpcy5sZW5ndGg7IHQgKz0gMSkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzW3RdLnN0eWxlOwogICAgICAgICAgICAgICAgaS53ZWJraXRUcmFuc2Zvcm0gPSBlLCBpLnRyYW5zZm9ybSA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgdHJhbnNpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAoZSArPSAibXMiKTsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCB0aGlzLmxlbmd0aDsgdCArPSAxKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXNbdF0uc3R5bGU7CiAgICAgICAgICAgICAgICBpLndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiA9IGUsIGkudHJhbnNpdGlvbkR1cmF0aW9uID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICBvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUsIHQgPSBbXSwgaSA9IGFyZ3VtZW50cy5sZW5ndGg7IGktLTspIHRbaV0gPSBhcmd1bWVudHNbaV07CiAgICAgICAgICAgIHZhciBhID0gdFswXSwKICAgICAgICAgICAgICAgIHIgPSB0WzFdLAogICAgICAgICAgICAgICAgbiA9IHRbMl0sCiAgICAgICAgICAgICAgICBvID0gdFszXTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnRhcmdldDsKICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLnRhcmdldC5kb203RXZlbnREYXRhIHx8IFtdOwogICAgICAgICAgICAgICAgICAgIGlmIChpLmluZGV4T2YoZSkgPCAwICYmIGkudW5zaGlmdChlKSwgcyh0KS5pcyhyKSkgbi5hcHBseSh0LCBpKTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSBzKHQpLnBhcmVudHMoKSwgbyA9IDA7IG8gPCBhLmxlbmd0aDsgbyArPSAxKSBzKGFbb10pLmlzKHIpICYmIG4uYXBwbHkoYVtvXSwgaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZChlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUgJiYgZS50YXJnZXQgJiYgZS50YXJnZXQuZG9tN0V2ZW50RGF0YSB8fCBbXTsKICAgICAgICAgICAgICAgIHQuaW5kZXhPZihlKSA8IDAgJiYgdC51bnNoaWZ0KGUpLCBuLmFwcGx5KHRoaXMsIHQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdFsxXSAmJiAoYSA9IChlID0gdClbMF0sIG4gPSBlWzFdLCBvID0gZVsyXSwgciA9IHZvaWQgMCksIG8gfHwgKG8gPSAhMSk7CiAgICAgICAgICAgIGZvciAodmFyIGgsIHAgPSBhLnNwbGl0KCIgIiksIGMgPSAwOyBjIDwgdGhpcy5sZW5ndGg7IGMgKz0gMSkgewogICAgICAgICAgICAgICAgdmFyIHUgPSB0aGlzW2NdOwogICAgICAgICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gMDsgaCA8IHAubGVuZ3RoOyBoICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBwW2hdOwogICAgICAgICAgICAgICAgICAgICAgICB1LmRvbTdMaXZlTGlzdGVuZXJzIHx8ICh1LmRvbTdMaXZlTGlzdGVuZXJzID0ge30pLCB1LmRvbTdMaXZlTGlzdGVuZXJzW3ZdIHx8ICh1LmRvbTdMaXZlTGlzdGVuZXJzW3ZdID0gW10pLCB1LmRvbTdMaXZlTGlzdGVuZXJzW3ZdLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXI6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eUxpc3RlbmVyOiBsCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB1LmFkZEV2ZW50TGlzdGVuZXIodiwgbCwgbykKICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gMDsgaCA8IHAubGVuZ3RoOyBoICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gcFtoXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUuZG9tN0xpc3RlbmVycyB8fCAodS5kb203TGlzdGVuZXJzID0ge30pLCB1LmRvbTdMaXN0ZW5lcnNbZl0gfHwgKHUuZG9tN0xpc3RlbmVyc1tmXSA9IFtdKSwgdS5kb203TGlzdGVuZXJzW2ZdLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5TGlzdGVuZXI6IGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB1LmFkZEV2ZW50TGlzdGVuZXIoZiwgZCwgbykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICBvZmY6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmb3IgKHZhciBlLCB0ID0gW10sIGkgPSBhcmd1bWVudHMubGVuZ3RoOyBpLS07KSB0W2ldID0gYXJndW1lbnRzW2ldOwogICAgICAgICAgICB2YXIgcyA9IHRbMF0sCiAgICAgICAgICAgICAgICBhID0gdFsxXSwKICAgICAgICAgICAgICAgIHIgPSB0WzJdLAogICAgICAgICAgICAgICAgbiA9IHRbM107CiAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIHRbMV0gJiYgKHMgPSAoZSA9IHQpWzBdLCByID0gZVsxXSwgbiA9IGVbMl0sIGEgPSB2b2lkIDApLCBuIHx8IChuID0gITEpOwogICAgICAgICAgICBmb3IgKHZhciBvID0gcy5zcGxpdCgiICIpLCBsID0gMDsgbCA8IG8ubGVuZ3RoOyBsICs9IDEpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gb1tsXSwgaCA9IDA7IGggPCB0aGlzLmxlbmd0aDsgaCArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzW2hdLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgIGlmICghYSAmJiBwLmRvbTdMaXN0ZW5lcnMgPyBjID0gcC5kb203TGlzdGVuZXJzW2RdIDogYSAmJiBwLmRvbTdMaXZlTGlzdGVuZXJzICYmIChjID0gcC5kb203TGl2ZUxpc3RlbmVyc1tkXSksIGMgJiYgYy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHUgPSBjLmxlbmd0aCAtIDE7IHUgPj0gMDsgdSAtPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGNbdV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByICYmIHYubGlzdGVuZXIgPT09IHIgPyAocC5yZW1vdmVFdmVudExpc3RlbmVyKGQsIHYucHJveHlMaXN0ZW5lciwgbiksIGMuc3BsaWNlKHUsIDEpKSA6IHIgJiYgdi5saXN0ZW5lciAmJiB2Lmxpc3RlbmVyLmRvbTdwcm94eSAmJiB2Lmxpc3RlbmVyLmRvbTdwcm94eSA9PT0gciA/IChwLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCwgdi5wcm94eUxpc3RlbmVyLCBuKSwgYy5zcGxpY2UodSwgMSkpIDogciB8fCAocC5yZW1vdmVFdmVudExpc3RlbmVyKGQsIHYucHJveHlMaXN0ZW5lciwgbiksIGMuc3BsaWNlKHUsIDEpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IFtdLCBzID0gYXJndW1lbnRzLmxlbmd0aDsgcy0tOykgaVtzXSA9IGFyZ3VtZW50c1tzXTsKICAgICAgICAgICAgZm9yICh2YXIgYSA9IGlbMF0uc3BsaXQoIiAiKSwgciA9IGlbMV0sIG4gPSAwOyBuIDwgYS5sZW5ndGg7IG4gKz0gMSkKICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSBhW25dLCBsID0gMDsgbCA8IHRoaXMubGVuZ3RoOyBsICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXNbbF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG5ldyB0LkN1c3RvbUV2ZW50KG8sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1YmJsZXM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIChoID0gZS5jcmVhdGVFdmVudCgiRXZlbnQiKSkuaW5pdEV2ZW50KG8sICEwLCAhMCksIGguZGV0YWlsID0gcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkLmRvbTdFdmVudERhdGEgPSBpLmZpbHRlcigoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA+IDAKICAgICAgICAgICAgICAgICAgICB9KSksIGQuZGlzcGF0Y2hFdmVudChoKSwgZC5kb203RXZlbnREYXRhID0gW10sIGRlbGV0ZSBkLmRvbTdFdmVudERhdGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIHRyYW5zaXRpb25FbmQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIGkgPSBbIndlYmtpdFRyYW5zaXRpb25FbmQiLCAidHJhbnNpdGlvbmVuZCJdLAogICAgICAgICAgICAgICAgcyA9IHRoaXM7CgogICAgICAgICAgICBmdW5jdGlvbiBhKHIpIHsKICAgICAgICAgICAgICAgIGlmIChyLnRhcmdldCA9PT0gdGhpcykKICAgICAgICAgICAgICAgICAgICBmb3IgKGUuY2FsbCh0aGlzLCByKSwgdCA9IDA7IHQgPCBpLmxlbmd0aDsgdCArPSAxKSBzLm9mZihpW3RdLCBhKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlKQogICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IGkubGVuZ3RoOyB0ICs9IDEpIHMub24oaVt0XSwgYSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICBvdXRlcldpZHRoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnN0eWxlcygpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzWzBdLm9mZnNldFdpZHRoICsgcGFyc2VGbG9hdCh0LmdldFByb3BlcnR5VmFsdWUoIm1hcmdpbi1yaWdodCIpKSArIHBhcnNlRmxvYXQodC5nZXRQcm9wZXJ0eVZhbHVlKCJtYXJnaW4tbGVmdCIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbMF0ub2Zmc2V0V2lkdGgKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgIH0sCiAgICAgICAgb3V0ZXJIZWlnaHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuc3R5bGVzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbMF0ub2Zmc2V0SGVpZ2h0ICsgcGFyc2VGbG9hdCh0LmdldFByb3BlcnR5VmFsdWUoIm1hcmdpbi10b3AiKSkgKyBwYXJzZUZsb2F0KHQuZ2V0UHJvcGVydHlWYWx1ZSgibWFyZ2luLWJvdHRvbSIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbMF0ub2Zmc2V0SGVpZ2h0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9LAogICAgICAgIG9mZnNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpc1swXSwKICAgICAgICAgICAgICAgICAgICBzID0gaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICBhID0gZS5ib2R5LAogICAgICAgICAgICAgICAgICAgIHIgPSBpLmNsaWVudFRvcCB8fCBhLmNsaWVudFRvcCB8fCAwLAogICAgICAgICAgICAgICAgICAgIG4gPSBpLmNsaWVudExlZnQgfHwgYS5jbGllbnRMZWZ0IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgbyA9IGkgPT09IHQgPyB0LnNjcm9sbFkgOiBpLnNjcm9sbFRvcCwKICAgICAgICAgICAgICAgICAgICBsID0gaSA9PT0gdCA/IHQuc2Nyb2xsWCA6IGkuc2Nyb2xsTGVmdDsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiBzLnRvcCArIG8gLSByLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IHMubGVmdCArIGwgLSBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9LAogICAgICAgIGNzczogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgaWYgKDEgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAocyA9IDA7IHMgPCB0aGlzLmxlbmd0aDsgcyArPSAxKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhIGluIGUpIHRoaXNbc10uc3R5bGVbYV0gPSBlW2FdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGhpc1swXSkgcmV0dXJuIHQuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzWzBdLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDIgPT09IGFyZ3VtZW50cy5sZW5ndGggJiYgInN0cmluZyIgPT0gdHlwZW9mIGUpIHsKICAgICAgICAgICAgICAgIGZvciAocyA9IDA7IHMgPCB0aGlzLmxlbmd0aDsgcyArPSAxKSB0aGlzW3NdLnN0eWxlW2VdID0gaTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIGVhY2g6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCB0aGlzLmxlbmd0aDsgdCArPSAxKQogICAgICAgICAgICAgICAgaWYgKCExID09PSBlLmNhbGwodGhpc1t0XSwgdCwgdGhpc1t0XSkpIHJldHVybiB0aGlzOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgaHRtbDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAodm9pZCAwID09PSBlKSByZXR1cm4gdGhpc1swXSA/IHRoaXNbMF0uaW5uZXJIVE1MIDogdm9pZCAwOwogICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHRoaXMubGVuZ3RoOyB0ICs9IDEpIHRoaXNbdF0uaW5uZXJIVE1MID0gZTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIHRleHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZSkgcmV0dXJuIHRoaXNbMF0gPyB0aGlzWzBdLnRleHRDb250ZW50LnRyaW0oKSA6IG51bGw7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgdGhpcy5sZW5ndGg7IHQgKz0gMSkgdGhpc1t0XS50ZXh0Q29udGVudCA9IGU7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICBpczogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgciwgbiwgbyA9IHRoaXNbMF07CiAgICAgICAgICAgIGlmICghbyB8fCB2b2lkIDAgPT09IGEpIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBhKSB7CiAgICAgICAgICAgICAgICBpZiAoby5tYXRjaGVzKSByZXR1cm4gby5tYXRjaGVzKGEpOwogICAgICAgICAgICAgICAgaWYgKG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yKSByZXR1cm4gby53ZWJraXRNYXRjaGVzU2VsZWN0b3IoYSk7CiAgICAgICAgICAgICAgICBpZiAoby5tc01hdGNoZXNTZWxlY3RvcikgcmV0dXJuIG8ubXNNYXRjaGVzU2VsZWN0b3IoYSk7CiAgICAgICAgICAgICAgICBmb3IgKHIgPSBzKGEpLCBuID0gMDsgbiA8IHIubGVuZ3RoOyBuICs9IDEpCiAgICAgICAgICAgICAgICAgICAgaWYgKHJbbl0gPT09IG8pIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhID09PSBlKSByZXR1cm4gbyA9PT0gZTsKICAgICAgICAgICAgaWYgKGEgPT09IHQpIHJldHVybiBvID09PSB0OwogICAgICAgICAgICBpZiAoYS5ub2RlVHlwZSB8fCBhIGluc3RhbmNlb2YgaSkgewogICAgICAgICAgICAgICAgZm9yIChyID0gYS5ub2RlVHlwZSA/IFthXSA6IGEsIG4gPSAwOyBuIDwgci5sZW5ndGg7IG4gKz0gMSkKICAgICAgICAgICAgICAgICAgICBpZiAocltuXSA9PT0gbykgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfSwKICAgICAgICBpbmRleDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlLCB0ID0gdGhpc1swXTsKICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IG51bGwgIT09ICh0ID0gdC5wcmV2aW91c1NpYmxpbmcpOykgMSA9PT0gdC5ub2RlVHlwZSAmJiAoZSArPSAxKTsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGVxOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUpIHJldHVybiB0aGlzOwogICAgICAgICAgICB2YXIgdCwgcyA9IHRoaXMubGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gbmV3IGkoZSA+IHMgLSAxID8gW10gOiBlIDwgMCA/ICh0ID0gcyArIGUpIDwgMCA/IFtdIDogW3RoaXNbdF1dIDogW3RoaXNbZV1dKQogICAgICAgIH0sCiAgICAgICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCwgcyA9IFtdLCBhID0gYXJndW1lbnRzLmxlbmd0aDsgYS0tOykgc1thXSA9IGFyZ3VtZW50c1thXTsKICAgICAgICAgICAgZm9yICh2YXIgciA9IDA7IHIgPCBzLmxlbmd0aDsgciArPSAxKSB7CiAgICAgICAgICAgICAgICB0ID0gc1tyXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdGhpcy5sZW5ndGg7IG4gKz0gMSkKICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8uaW5uZXJIVE1MID0gdDsgby5maXJzdENoaWxkOykgdGhpc1tuXS5hcHBlbmRDaGlsZChvLmZpcnN0Q2hpbGQpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0IGluc3RhbmNlb2YgaSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IHQubGVuZ3RoOyBsICs9IDEpIHRoaXNbbl0uYXBwZW5kQ2hpbGQodFtsXSk7CiAgICAgICAgICAgICAgICBlbHNlIHRoaXNbbl0uYXBwZW5kQ2hpbGQodCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgcHJlcGVuZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgcywgYTsKICAgICAgICAgICAgZm9yIChzID0gMDsgcyA8IHRoaXMubGVuZ3RoOyBzICs9IDEpCiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgICAgZm9yIChyLmlubmVySFRNTCA9IHQsIGEgPSByLmNoaWxkTm9kZXMubGVuZ3RoIC0gMTsgYSA+PSAwOyBhIC09IDEpIHRoaXNbc10uaW5zZXJ0QmVmb3JlKHIuY2hpbGROb2Rlc1thXSwgdGhpc1tzXS5jaGlsZE5vZGVzWzBdKQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0IGluc3RhbmNlb2YgaSkKICAgICAgICAgICAgICAgIGZvciAoYSA9IDA7IGEgPCB0Lmxlbmd0aDsgYSArPSAxKSB0aGlzW3NdLmluc2VydEJlZm9yZSh0W2FdLCB0aGlzW3NdLmNoaWxkTm9kZXNbMF0pOwogICAgICAgICAgICBlbHNlIHRoaXNbc10uaW5zZXJ0QmVmb3JlKHQsIHRoaXNbc10uY2hpbGROb2Rlc1swXSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICBuZXh0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA+IDAgPyBlID8gdGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmcgJiYgcyh0aGlzWzBdLm5leHRFbGVtZW50U2libGluZykuaXMoZSkgPyBuZXcgaShbdGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmddKSA6IG5ldyBpKFtdKSA6IHRoaXNbMF0ubmV4dEVsZW1lbnRTaWJsaW5nID8gbmV3IGkoW3RoaXNbMF0ubmV4dEVsZW1lbnRTaWJsaW5nXSkgOiBuZXcgaShbXSkgOiBuZXcgaShbXSkKICAgICAgICB9LAogICAgICAgIG5leHRBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBbXSwKICAgICAgICAgICAgICAgIGEgPSB0aGlzWzBdOwogICAgICAgICAgICBpZiAoIWEpIHJldHVybiBuZXcgaShbXSk7CiAgICAgICAgICAgIGZvciAoOyBhLm5leHRFbGVtZW50U2libGluZzspIHsKICAgICAgICAgICAgICAgIHZhciByID0gYS5uZXh0RWxlbWVudFNpYmxpbmc7CiAgICAgICAgICAgICAgICBlID8gcyhyKS5pcyhlKSAmJiB0LnB1c2gocikgOiB0LnB1c2gociksIGEgPSByCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG5ldyBpKHQpCiAgICAgICAgfSwKICAgICAgICBwcmV2OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpc1swXTsKICAgICAgICAgICAgICAgIHJldHVybiBlID8gdC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICYmIHModC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKS5pcyhlKSA/IG5ldyBpKFt0LnByZXZpb3VzRWxlbWVudFNpYmxpbmddKSA6IG5ldyBpKFtdKSA6IHQucHJldmlvdXNFbGVtZW50U2libGluZyA/IG5ldyBpKFt0LnByZXZpb3VzRWxlbWVudFNpYmxpbmddKSA6IG5ldyBpKFtdKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuZXcgaShbXSkKICAgICAgICB9LAogICAgICAgIHByZXZBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBbXSwKICAgICAgICAgICAgICAgIGEgPSB0aGlzWzBdOwogICAgICAgICAgICBpZiAoIWEpIHJldHVybiBuZXcgaShbXSk7CiAgICAgICAgICAgIGZvciAoOyBhLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGEucHJldmlvdXNFbGVtZW50U2libGluZzsKICAgICAgICAgICAgICAgIGUgPyBzKHIpLmlzKGUpICYmIHQucHVzaChyKSA6IHQucHVzaChyKSwgYSA9IHIKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbmV3IGkodCkKICAgICAgICB9LAogICAgICAgIHBhcmVudDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gW10sIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkgbnVsbCAhPT0gdGhpc1tpXS5wYXJlbnROb2RlICYmIChlID8gcyh0aGlzW2ldLnBhcmVudE5vZGUpLmlzKGUpICYmIHQucHVzaCh0aGlzW2ldLnBhcmVudE5vZGUpIDogdC5wdXNoKHRoaXNbaV0ucGFyZW50Tm9kZSkpOwogICAgICAgICAgICByZXR1cm4gcyhhKHQpKQogICAgICAgIH0sCiAgICAgICAgcGFyZW50czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gW10sIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSB0aGlzW2ldLnBhcmVudE5vZGU7IHI7KSBlID8gcyhyKS5pcyhlKSAmJiB0LnB1c2gocikgOiB0LnB1c2gociksIHIgPSByLnBhcmVudE5vZGU7CiAgICAgICAgICAgIHJldHVybiBzKGEodCkpCiAgICAgICAgfSwKICAgICAgICBjbG9zZXN0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IG5ldyBpKFtdKSA6ICh0LmlzKGUpIHx8ICh0ID0gdC5wYXJlbnRzKGUpLmVxKDApKSwgdCkKICAgICAgICB9LAogICAgICAgIGZpbmQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IFtdLCBzID0gMDsgcyA8IHRoaXMubGVuZ3RoOyBzICs9IDEpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gdGhpc1tzXS5xdWVyeVNlbGVjdG9yQWxsKGUpLCByID0gMDsgciA8IGEubGVuZ3RoOyByICs9IDEpIHQucHVzaChhW3JdKTsKICAgICAgICAgICAgcmV0dXJuIG5ldyBpKHQpCiAgICAgICAgfSwKICAgICAgICBjaGlsZHJlbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gW10sIHIgPSAwOyByIDwgdGhpcy5sZW5ndGg7IHIgKz0gMSkKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSB0aGlzW3JdLmNoaWxkTm9kZXMsIG8gPSAwOyBvIDwgbi5sZW5ndGg7IG8gKz0gMSkgZSA/IDEgPT09IG5bb10ubm9kZVR5cGUgJiYgcyhuW29dKS5pcyhlKSAmJiB0LnB1c2gobltvXSkgOiAxID09PSBuW29dLm5vZGVUeXBlICYmIHQucHVzaChuW29dKTsKICAgICAgICAgICAgcmV0dXJuIG5ldyBpKGEodCkpCiAgICAgICAgfSwKICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IFtdLCBzID0gMDsgcyA8IHRoaXMubGVuZ3RoOyBzICs9IDEpIGUuY2FsbCh0aGlzW3NdLCBzLCB0aGlzW3NdKSAmJiB0LnB1c2godGhpc1tzXSk7CiAgICAgICAgICAgIHJldHVybiBuZXcgaSh0KQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCB0aGlzLmxlbmd0aDsgZSArPSAxKSB0aGlzW2VdLnBhcmVudE5vZGUgJiYgdGhpc1tlXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXNbZV0pOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgYWRkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IFtdLCB0ID0gYXJndW1lbnRzLmxlbmd0aDsgdC0tOykgZVt0XSA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgdmFyIGksIGE7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHMoZVtpXSk7CiAgICAgICAgICAgICAgICBmb3IgKGEgPSAwOyBhIDwgci5sZW5ndGg7IGEgKz0gMSkgdGhpc1t0aGlzLmxlbmd0aF0gPSByW2FdLCB0aGlzLmxlbmd0aCArPSAxCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIHN0eWxlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzWzBdID8gdC5nZXRDb21wdXRlZFN0eWxlKHRoaXNbMF0sIG51bGwpIDoge30KICAgICAgICB9CiAgICB9OwogICAgT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgIHMuZm5bZV0gPSBzLmZuW2VdIHx8IHJbZV0KICAgIH0pKTsKICAgIHZhciBuID0gewogICAgICAgICAgICBkZWxldGVQcm9wczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlOwogICAgICAgICAgICAgICAgT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbZV0gPSBudWxsCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdFtlXQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbmV4dFRpY2s6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgJiYgKHQgPSAwKSwgc2V0VGltZW91dChlLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBub3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIERhdGUubm93KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0VHJhbnNsYXRlOiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgcywgYSwgcjsKICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gaSAmJiAoaSA9ICJ4Iik7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHQuZ2V0Q29tcHV0ZWRTdHlsZShlLCBudWxsKTsKICAgICAgICAgICAgICAgIHJldHVybiB0LldlYktpdENTU01hdHJpeCA/ICgoYSA9IG4udHJhbnNmb3JtIHx8IG4ud2Via2l0VHJhbnNmb3JtKS5zcGxpdCgiLCIpLmxlbmd0aCA+IDYgJiYgKGEgPSBhLnNwbGl0KCIsICIpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UoIiwiLCAiLiIpCiAgICAgICAgICAgICAgICB9KSkuam9pbigiLCAiKSksIHIgPSBuZXcgdC5XZWJLaXRDU1NNYXRyaXgoIm5vbmUiID09PSBhID8gIiIgOiBhKSkgOiBzID0gKHIgPSBuLk1velRyYW5zZm9ybSB8fCBuLk9UcmFuc2Zvcm0gfHwgbi5Nc1RyYW5zZm9ybSB8fCBuLm1zVHJhbnNmb3JtIHx8IG4udHJhbnNmb3JtIHx8IG4uZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIikucmVwbGFjZSgidHJhbnNsYXRlKCIsICJtYXRyaXgoMSwgMCwgMCwgMSwiKSkudG9TdHJpbmcoKS5zcGxpdCgiLCIpLCAieCIgPT09IGkgJiYgKGEgPSB0LldlYktpdENTU01hdHJpeCA/IHIubTQxIDogMTYgPT09IHMubGVuZ3RoID8gcGFyc2VGbG9hdChzWzEyXSkgOiBwYXJzZUZsb2F0KHNbNF0pKSwgInkiID09PSBpICYmIChhID0gdC5XZWJLaXRDU1NNYXRyaXggPyByLm00MiA6IDE2ID09PSBzLmxlbmd0aCA/IHBhcnNlRmxvYXQoc1sxM10pIDogcGFyc2VGbG9hdChzWzVdKSksIGEgfHwgMAogICAgICAgICAgICB9LAogICAgICAgICAgICBwYXJzZVVybFF1ZXJ5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgcywgYSwgciwgbiA9IHt9LAogICAgICAgICAgICAgICAgICAgIG8gPSBlIHx8IHQubG9jYXRpb24uaHJlZjsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgbyAmJiBvLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAocyA9IChvID0gby5pbmRleE9mKCI/IikgPiAtMSA/IG8ucmVwbGFjZSgvXFMqXD8vLCAiIikgOiAiIikuc3BsaXQoIiYiKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIiAhPT0gZQogICAgICAgICAgICAgICAgICAgICAgICB9KSkpLmxlbmd0aCwgaSA9IDA7IGkgPCByOyBpICs9IDEpIGEgPSBzW2ldLnJlcGxhY2UoLyNcUysvZywgIiIpLnNwbGl0KCI9IiksIG5bZGVjb2RlVVJJQ29tcG9uZW50KGFbMF0pXSA9IHZvaWQgMCA9PT0gYVsxXSA/IHZvaWQgMCA6IGRlY29kZVVSSUNvbXBvbmVudChhWzFdKSB8fCAiIjsKICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlzT2JqZWN0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSAmJiBlLmNvbnN0cnVjdG9yICYmIGUuY29uc3RydWN0b3IgPT09IE9iamVjdAogICAgICAgICAgICB9LAogICAgICAgICAgICBleHRlbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IFtdLCB0ID0gYXJndW1lbnRzLmxlbmd0aDsgdC0tOykgZVt0XSA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBPYmplY3QoZVswXSksIHMgPSAxOyBzIDwgZS5sZW5ndGg7IHMgKz0gMSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZVtzXTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBhKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gT2JqZWN0LmtleXMoT2JqZWN0KGEpKSwgbyA9IDAsIGwgPSByLmxlbmd0aDsgbyA8IGw7IG8gKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSByW29dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsIGQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBoICYmIGguZW51bWVyYWJsZSAmJiAobi5pc09iamVjdChpW2RdKSAmJiBuLmlzT2JqZWN0KGFbZF0pID8gbi5leHRlbmQoaVtkXSwgYVtkXSkgOiAhbi5pc09iamVjdChpW2RdKSAmJiBuLmlzT2JqZWN0KGFbZF0pID8gKGlbZF0gPSB7fSwgbi5leHRlbmQoaVtkXSwgYVtkXSkpIDogaVtkXSA9IGFbZF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG8gPSB7CiAgICAgICAgICAgIHRvdWNoOiB0Lk1vZGVybml6ciAmJiAhMCA9PT0gdC5Nb2Rlcm5penIudG91Y2ggfHwgISEodC5uYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwIHx8ICJvbnRvdWNoc3RhcnQiIGluIHQgfHwgdC5Eb2N1bWVudFRvdWNoICYmIGUgaW5zdGFuY2VvZiB0LkRvY3VtZW50VG91Y2gpLAogICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAhIXQuUG9pbnRlckV2ZW50ICYmICJtYXhUb3VjaFBvaW50cyIgaW4gdC5uYXZpZ2F0b3IgJiYgdC5uYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwLAogICAgICAgICAgICBvYnNlcnZlcjogIk11dGF0aW9uT2JzZXJ2ZXIiIGluIHQgfHwgIldlYmtpdE11dGF0aW9uT2JzZXJ2ZXIiIGluIHQsCiAgICAgICAgICAgIHBhc3NpdmVMaXN0ZW5lcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9ICExOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgInBhc3NpdmUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcigidGVzdFBhc3NpdmVMaXN0ZW5lciIsIG51bGwsIGkpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfSgpLAogICAgICAgICAgICBnZXN0dXJlczogIm9uZ2VzdHVyZXN0YXJ0IiBpbiB0CiAgICAgICAgfSwKICAgICAgICBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSB7fSk7CiAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgdC5wYXJhbXMgPSBlLCB0LmV2ZW50c0xpc3RlbmVycyA9IHt9LCB0LnBhcmFtcyAmJiB0LnBhcmFtcy5vbiAmJiBPYmplY3Qua2V5cyh0LnBhcmFtcy5vbikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdC5vbihlLCB0LnBhcmFtcy5vbltlXSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBkID0gewogICAgICAgICAgICBjb21wb25lbnRzOiB7CiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgbC5wcm90b3R5cGUub24gPSBmdW5jdGlvbihlLCB0LCBpKSB7CiAgICAgICAgdmFyIHMgPSB0aGlzOwogICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0KSByZXR1cm4gczsKICAgICAgICB2YXIgYSA9IGkgPyAidW5zaGlmdCIgOiAicHVzaCI7CiAgICAgICAgcmV0dXJuIGUuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHMuZXZlbnRzTGlzdGVuZXJzW2VdIHx8IChzLmV2ZW50c0xpc3RlbmVyc1tlXSA9IFtdKSwgcy5ldmVudHNMaXN0ZW5lcnNbZV1bYV0odCkKICAgICAgICB9KSksIHMKICAgIH0sIGwucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbihlLCB0LCBpKSB7CiAgICAgICAgdmFyIHMgPSB0aGlzOwogICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0KSByZXR1cm4gczsKCiAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IFtdLCByID0gYXJndW1lbnRzLmxlbmd0aDsgci0tOykgaVtyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgcy5vZmYoZSwgYSksIGEuZjdwcm94eSAmJiBkZWxldGUgYS5mN3Byb3h5LCB0LmFwcGx5KHMsIGkpCiAgICAgICAgfQogICAgICAgIHJldHVybiBhLmY3cHJveHkgPSB0LCBzLm9uKGUsIGEsIGkpCiAgICB9LCBsLnByb3RvdHlwZS5vZmYgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgIHJldHVybiBpLmV2ZW50c0xpc3RlbmVycyA/IChlLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2b2lkIDAgPT09IHQgPyBpLmV2ZW50c0xpc3RlbmVyc1tlXSA9IFtdIDogaS5ldmVudHNMaXN0ZW5lcnNbZV0gJiYgaS5ldmVudHNMaXN0ZW5lcnNbZV0ubGVuZ3RoICYmIGkuZXZlbnRzTGlzdGVuZXJzW2VdLmZvckVhY2goKGZ1bmN0aW9uKHMsIGEpIHsKICAgICAgICAgICAgICAgIChzID09PSB0IHx8IHMuZjdwcm94eSAmJiBzLmY3cHJveHkgPT09IHQpICYmIGkuZXZlbnRzTGlzdGVuZXJzW2VdLnNwbGljZShhLCAxKQogICAgICAgICAgICB9KSkKICAgICAgICB9KSksIGkpIDogaQogICAgfSwgbC5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZvciAodmFyIGUgPSBbXSwgdCA9IGFyZ3VtZW50cy5sZW5ndGg7IHQtLTspIGVbdF0gPSBhcmd1bWVudHNbdF07CiAgICAgICAgdmFyIGksIHMsIGEsIHIgPSB0aGlzOwogICAgICAgIGlmICghci5ldmVudHNMaXN0ZW5lcnMpIHJldHVybiByOwogICAgICAgICJzdHJpbmciID09IHR5cGVvZiBlWzBdIHx8IEFycmF5LmlzQXJyYXkoZVswXSkgPyAoaSA9IGVbMF0sIHMgPSBlLnNsaWNlKDEsIGUubGVuZ3RoKSwgYSA9IHIpIDogKGkgPSBlWzBdLmV2ZW50cywgcyA9IGVbMF0uZGF0YSwgYSA9IGVbMF0uY29udGV4dCB8fCByKTsKICAgICAgICB2YXIgbiA9IEFycmF5LmlzQXJyYXkoaSkgPyBpIDogaS5zcGxpdCgiICIpOwogICAgICAgIHJldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKHIuZXZlbnRzTGlzdGVuZXJzICYmIHIuZXZlbnRzTGlzdGVuZXJzW2VdKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgci5ldmVudHNMaXN0ZW5lcnNbZV0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHQucHVzaChlKQogICAgICAgICAgICAgICAgfSkpLCB0LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLmFwcGx5KGEsIHMpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgIH0pKSwgcgogICAgfSwgbC5wcm90b3R5cGUudXNlTW9kdWxlc1BhcmFtcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgdC5tb2R1bGVzICYmIE9iamVjdC5rZXlzKHQubW9kdWxlcykuZm9yRWFjaCgoZnVuY3Rpb24oaSkgewogICAgICAgICAgICB2YXIgcyA9IHQubW9kdWxlc1tpXTsKICAgICAgICAgICAgcy5wYXJhbXMgJiYgbi5leHRlbmQoZSwgcy5wYXJhbXMpCiAgICAgICAgfSkpCiAgICB9LCBsLnByb3RvdHlwZS51c2VNb2R1bGVzID0gZnVuY3Rpb24oZSkgewogICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IHt9KTsKICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgdC5tb2R1bGVzICYmIE9iamVjdC5rZXlzKHQubW9kdWxlcykuZm9yRWFjaCgoZnVuY3Rpb24oaSkgewogICAgICAgICAgICB2YXIgcyA9IHQubW9kdWxlc1tpXSwKICAgICAgICAgICAgICAgIGEgPSBlW2ldIHx8IHt9OwogICAgICAgICAgICBzLmluc3RhbmNlICYmIE9iamVjdC5rZXlzKHMuaW5zdGFuY2UpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gcy5pbnN0YW5jZVtlXTsKICAgICAgICAgICAgICAgIHRbZV0gPSAiZnVuY3Rpb24iID09IHR5cGVvZiBpID8gaS5iaW5kKHQpIDogaQogICAgICAgICAgICB9KSksIHMub24gJiYgdC5vbiAmJiBPYmplY3Qua2V5cyhzLm9uKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0Lm9uKGUsIHMub25bZV0pCiAgICAgICAgICAgIH0pKSwgcy5jcmVhdGUgJiYgcy5jcmVhdGUuYmluZCh0KShhKQogICAgICAgIH0pKQogICAgfSwgZC5jb21wb25lbnRzLnNldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB0aGlzLnVzZSAmJiB0aGlzLnVzZShlKQogICAgfSwgbC5pbnN0YWxsTW9kdWxlID0gZnVuY3Rpb24oZSkgewogICAgICAgIGZvciAodmFyIHQgPSBbXSwgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpLS0gPiAwOykgdFtpXSA9IGFyZ3VtZW50c1tpICsgMV07CiAgICAgICAgdmFyIHMgPSB0aGlzOwogICAgICAgIHMucHJvdG90eXBlLm1vZHVsZXMgfHwgKHMucHJvdG90eXBlLm1vZHVsZXMgPSB7fSk7CiAgICAgICAgdmFyIGEgPSBlLm5hbWUgfHwgT2JqZWN0LmtleXMocy5wcm90b3R5cGUubW9kdWxlcykubGVuZ3RoICsgIl8iICsgbi5ub3coKTsKICAgICAgICByZXR1cm4gcy5wcm90b3R5cGUubW9kdWxlc1thXSA9IGUsIGUucHJvdG8gJiYgT2JqZWN0LmtleXMoZS5wcm90bykuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICBzLnByb3RvdHlwZVt0XSA9IGUucHJvdG9bdF0KICAgICAgICB9KSksIGUuc3RhdGljICYmIE9iamVjdC5rZXlzKGUuc3RhdGljKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHNbdF0gPSBlLnN0YXRpY1t0XQogICAgICAgIH0pKSwgZS5pbnN0YWxsICYmIGUuaW5zdGFsbC5hcHBseShzLCB0KSwgcwogICAgfSwgbC51c2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgZm9yICh2YXIgdCA9IFtdLCBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGktLSA+IDA7KSB0W2ldID0gYXJndW1lbnRzW2kgKyAxXTsKICAgICAgICB2YXIgcyA9IHRoaXM7CiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZSkgPyAoZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBzLmluc3RhbGxNb2R1bGUoZSkKICAgICAgICB9KSksIHMpIDogcy5pbnN0YWxsTW9kdWxlLmFwcGx5KHMsIFtlXS5jb25jYXQodCkpCiAgICB9LCBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLCBkKTsKICAgIHZhciBoID0gewogICAgICAgIHVwZGF0ZVNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSwgdCwgaSA9IHRoaXMuJGVsOwogICAgICAgICAgICBlID0gdm9pZCAwICE9PSB0aGlzLnBhcmFtcy53aWR0aCA/IHRoaXMucGFyYW1zLndpZHRoIDogaVswXS5jbGllbnRXaWR0aCwgdCA9IHZvaWQgMCAhPT0gdGhpcy5wYXJhbXMuaGVpZ2h0ID8gdGhpcy5wYXJhbXMuaGVpZ2h0IDogaVswXS5jbGllbnRIZWlnaHQsIDAgPT09IGUgJiYgdGhpcy5pc0hvcml6b250YWwoKSB8fCAwID09PSB0ICYmIHRoaXMuaXNWZXJ0aWNhbCgpIHx8IChlID0gZSAtIHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nLWxlZnQiKSwgMTApIC0gcGFyc2VJbnQoaS5jc3MoInBhZGRpbmctcmlnaHQiKSwgMTApLCB0ID0gdCAtIHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nLXRvcCIpLCAxMCkgLSBwYXJzZUludChpLmNzcygicGFkZGluZy1ib3R0b20iKSwgMTApLCBuLmV4dGVuZCh0aGlzLCB7CiAgICAgICAgICAgICAgICB3aWR0aDogZSwKICAgICAgICAgICAgICAgIGhlaWdodDogdCwKICAgICAgICAgICAgICAgIHNpemU6IHRoaXMuaXNIb3Jpem9udGFsKCkgPyBlIDogdAogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIHVwZGF0ZVNsaWRlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5wYXJhbXMsCiAgICAgICAgICAgICAgICBpID0gdGhpcy4kd3JhcHBlckVsLAogICAgICAgICAgICAgICAgcyA9IHRoaXMuc2l6ZSwKICAgICAgICAgICAgICAgIGEgPSB0aGlzLnJ0bFRyYW5zbGF0ZSwKICAgICAgICAgICAgICAgIHIgPSB0aGlzLndyb25nUlRMLAogICAgICAgICAgICAgICAgbyA9IHRoaXMudmlydHVhbCAmJiBlLnZpcnR1YWwuZW5hYmxlZCwKICAgICAgICAgICAgICAgIGwgPSBvID8gdGhpcy52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiB0aGlzLnNsaWRlcy5sZW5ndGgsCiAgICAgICAgICAgICAgICBkID0gaS5jaGlsZHJlbigiLiIgKyB0aGlzLnBhcmFtcy5zbGlkZUNsYXNzKSwKICAgICAgICAgICAgICAgIGggPSBvID8gdGhpcy52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiBkLmxlbmd0aCwKICAgICAgICAgICAgICAgIHAgPSBbXSwKICAgICAgICAgICAgICAgIGMgPSBbXSwKICAgICAgICAgICAgICAgIHUgPSBbXTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHYodCkgewogICAgICAgICAgICAgICAgcmV0dXJuICFlLmNzc01vZGUgfHwgdCAhPT0gZC5sZW5ndGggLSAxCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGYgPSBlLnNsaWRlc09mZnNldEJlZm9yZTsKICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZiAmJiAoZiA9IGUuc2xpZGVzT2Zmc2V0QmVmb3JlLmNhbGwodGhpcykpOwogICAgICAgICAgICB2YXIgbSA9IGUuc2xpZGVzT2Zmc2V0QWZ0ZXI7CiAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIG0gJiYgKG0gPSBlLnNsaWRlc09mZnNldEFmdGVyLmNhbGwodGhpcykpOwogICAgICAgICAgICB2YXIgZyA9IHRoaXMuc25hcEdyaWQubGVuZ3RoLAogICAgICAgICAgICAgICAgYiA9IHRoaXMuc25hcEdyaWQubGVuZ3RoLAogICAgICAgICAgICAgICAgdyA9IGUuc3BhY2VCZXR3ZWVuLAogICAgICAgICAgICAgICAgeSA9IC1mLAogICAgICAgICAgICAgICAgeCA9IDAsCiAgICAgICAgICAgICAgICBUID0gMDsKICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gcykgewogICAgICAgICAgICAgICAgdmFyIEUsIFM7CiAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgdyAmJiB3LmluZGV4T2YoIiUiKSA+PSAwICYmICh3ID0gcGFyc2VGbG9hdCh3LnJlcGxhY2UoIiUiLCAiIikpIC8gMTAwICogcyksIHRoaXMudmlydHVhbFNpemUgPSAtdywgYSA/IGQuY3NzKHsKICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAiIiwKICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6ICIiCiAgICAgICAgICAgICAgICB9KSA6IGQuY3NzKHsKICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogIiIsCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAiIgogICAgICAgICAgICAgICAgfSksIGUuc2xpZGVzUGVyQ29sdW1uID4gMSAmJiAoRSA9IE1hdGguZmxvb3IoaCAvIGUuc2xpZGVzUGVyQ29sdW1uKSA9PT0gaCAvIHRoaXMucGFyYW1zLnNsaWRlc1BlckNvbHVtbiA/IGggOiBNYXRoLmNlaWwoaCAvIGUuc2xpZGVzUGVyQ29sdW1uKSAqIGUuc2xpZGVzUGVyQ29sdW1uLCAiYXV0byIgIT09IGUuc2xpZGVzUGVyVmlldyAmJiAicm93IiA9PT0gZS5zbGlkZXNQZXJDb2x1bW5GaWxsICYmIChFID0gTWF0aC5tYXgoRSwgZS5zbGlkZXNQZXJWaWV3ICogZS5zbGlkZXNQZXJDb2x1bW4pKSk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBDLCBNID0gZS5zbGlkZXNQZXJDb2x1bW4sIFAgPSBFIC8gTSwgeiA9IE1hdGguZmxvb3IoaCAvIGUuc2xpZGVzUGVyQ29sdW1uKSwgayA9IDA7IGsgPCBoOyBrICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBTID0gMDsKICAgICAgICAgICAgICAgICAgICB2YXIgJCA9IGQuZXEoayk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuc2xpZGVzUGVyQ29sdW1uID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgTCA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInJvdyIgPT09IGUuc2xpZGVzUGVyQ29sdW1uRmlsbCAmJiBlLnNsaWRlc1Blckdyb3VwID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8gPSBNYXRoLmZsb29yKGsgLyAoZS5zbGlkZXNQZXJHcm91cCAqIGUuc2xpZGVzUGVyQ29sdW1uKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGsgLSBlLnNsaWRlc1BlckNvbHVtbiAqIGUuc2xpZGVzUGVyR3JvdXAgKiBPLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcgPSAwID09PSBPID8gZS5zbGlkZXNQZXJHcm91cCA6IE1hdGgubWluKE1hdGguY2VpbCgoaCAtIE8gKiBNICogZS5zbGlkZXNQZXJHcm91cCkgLyBNKSwgZS5zbGlkZXNQZXJHcm91cCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMID0gKEkgPSBBIC0gKEQgPSBNYXRoLmZsb29yKEEgLyBHKSkgKiBHICsgTyAqIGUuc2xpZGVzUGVyR3JvdXApICsgRCAqIEUgLyBNLCAkLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXAiOiBMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbW96LWJveC1vcmRpbmFsLWdyb3VwIjogTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW1zLWZsZXgtb3JkZXIiOiBMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItd2Via2l0LW9yZGVyIjogTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJjb2x1bW4iID09PSBlLnNsaWRlc1BlckNvbHVtbkZpbGwgPyAoRCA9IGsgLSAoSSA9IE1hdGguZmxvb3IoayAvIE0pKSAqIE0sIChJID4geiB8fCBJID09PSB6ICYmIEQgPT09IE0gLSAxKSAmJiAoRCArPSAxKSA+PSBNICYmIChEID0gMCwgSSArPSAxKSkgOiBJID0gayAtIChEID0gTWF0aC5mbG9vcihrIC8gUCkpICogUDsKICAgICAgICAgICAgICAgICAgICAgICAgJC5jc3MoIm1hcmdpbi0iICsgKHRoaXMuaXNIb3Jpem9udGFsKCkgPyAidG9wIiA6ICJsZWZ0IiksIDAgIT09IEQgJiYgZS5zcGFjZUJldHdlZW4gJiYgZS5zcGFjZUJldHdlZW4gKyAicHgiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIm5vbmUiICE9PSAkLmNzcygiZGlzcGxheSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiYXV0byIgPT09IGUuc2xpZGVzUGVyVmlldykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEggPSB0LmdldENvbXB1dGVkU3R5bGUoJFswXSwgbnVsbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9ICRbMF0uc3R5bGUudHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4gPSAkWzBdLnN0eWxlLndlYmtpdFRyYW5zZm9ybTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCICYmICgkWzBdLnN0eWxlLnRyYW5zZm9ybSA9ICJub25lIiksIE4gJiYgKCRbMF0uc3R5bGUud2Via2l0VHJhbnNmb3JtID0gIm5vbmUiKSwgZS5yb3VuZExlbmd0aHMpIFMgPSB0aGlzLmlzSG9yaXpvbnRhbCgpID8gJC5vdXRlcldpZHRoKCEwKSA6ICQub3V0ZXJIZWlnaHQoITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5pc0hvcml6b250YWwoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBYID0gcGFyc2VGbG9hdChILmdldFByb3BlcnR5VmFsdWUoIndpZHRoIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWID0gcGFyc2VGbG9hdChILmdldFByb3BlcnR5VmFsdWUoInBhZGRpbmctbGVmdCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWSA9IHBhcnNlRmxvYXQoSC5nZXRQcm9wZXJ0eVZhbHVlKCJwYWRkaW5nLXJpZ2h0IikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGID0gcGFyc2VGbG9hdChILmdldFByb3BlcnR5VmFsdWUoIm1hcmdpbi1sZWZ0IikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXID0gcGFyc2VGbG9hdChILmdldFByb3BlcnR5VmFsdWUoIm1hcmdpbi1yaWdodCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IEguZ2V0UHJvcGVydHlWYWx1ZSgiYm94LXNpemluZyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBSICYmICJib3JkZXItYm94IiA9PT0gUiA/IFggKyBGICsgVyA6IFggKyBWICsgWSArIEYgKyBXCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxID0gcGFyc2VGbG9hdChILmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHBhcnNlRmxvYXQoSC5nZXRQcm9wZXJ0eVZhbHVlKCJwYWRkaW5nLXRvcCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSyA9IHBhcnNlRmxvYXQoSC5nZXRQcm9wZXJ0eVZhbHVlKCJwYWRkaW5nLWJvdHRvbSIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVSA9IHBhcnNlRmxvYXQoSC5nZXRQcm9wZXJ0eVZhbHVlKCJtYXJnaW4tdG9wIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gcGFyc2VGbG9hdChILmdldFByb3BlcnR5VmFsdWUoIm1hcmdpbi1ib3R0b20iKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFogPSBILmdldFByb3BlcnR5VmFsdWUoImJveC1zaXppbmciKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gWiAmJiAiYm9yZGVyLWJveCIgPT09IFogPyBxICsgVSArIF8gOiBxICsgaiArIEsgKyBVICsgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQiAmJiAoJFswXS5zdHlsZS50cmFuc2Zvcm0gPSBCKSwgTiAmJiAoJFswXS5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSBOKSwgZS5yb3VuZExlbmd0aHMgJiYgKFMgPSBNYXRoLmZsb29yKFMpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgUyA9IChzIC0gKGUuc2xpZGVzUGVyVmlldyAtIDEpICogdykgLyBlLnNsaWRlc1BlclZpZXcsIGUucm91bmRMZW5ndGhzICYmIChTID0gTWF0aC5mbG9vcihTKSksIGRba10gJiYgKHRoaXMuaXNIb3Jpem9udGFsKCkgPyBkW2tdLnN0eWxlLndpZHRoID0gUyArICJweCIgOiBkW2tdLnN0eWxlLmhlaWdodCA9IFMgKyAicHgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZFtrXSAmJiAoZFtrXS5zd2lwZXJTbGlkZVNpemUgPSBTKSwgdS5wdXNoKFMpLCBlLmNlbnRlcmVkU2xpZGVzID8gKHkgPSB5ICsgUyAvIDIgKyB4IC8gMiArIHcsIDAgPT09IHggJiYgMCAhPT0gayAmJiAoeSA9IHkgLSBzIC8gMiAtIHcpLCAwID09PSBrICYmICh5ID0geSAtIHMgLyAyIC0gdyksIE1hdGguYWJzKHkpIDwgLjAwMSAmJiAoeSA9IDApLCBlLnJvdW5kTGVuZ3RocyAmJiAoeSA9IE1hdGguZmxvb3IoeSkpLCBUICUgZS5zbGlkZXNQZXJHcm91cCA9PSAwICYmIHAucHVzaCh5KSwgYy5wdXNoKHkpKSA6IChlLnJvdW5kTGVuZ3RocyAmJiAoeSA9IE1hdGguZmxvb3IoeSkpLCAoVCAtIE1hdGgubWluKHRoaXMucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgVCkpICUgdGhpcy5wYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT0gMCAmJiBwLnB1c2goeSksIGMucHVzaCh5KSwgeSA9IHkgKyBTICsgdyksIHRoaXMudmlydHVhbFNpemUgKz0gUyArIHcsIHggPSBTLCBUICs9IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2l6ZSA9IE1hdGgubWF4KHRoaXMudmlydHVhbFNpemUsIHMpICsgbSwgYSAmJiByICYmICgic2xpZGUiID09PSBlLmVmZmVjdCB8fCAiY292ZXJmbG93IiA9PT0gZS5lZmZlY3QpICYmIGkuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMudmlydHVhbFNpemUgKyBlLnNwYWNlQmV0d2VlbiArICJweCIKICAgICAgICAgICAgICAgICAgICB9KSwgZS5zZXRXcmFwcGVyU2l6ZSAmJiAodGhpcy5pc0hvcml6b250YWwoKSA/IGkuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMudmlydHVhbFNpemUgKyBlLnNwYWNlQmV0d2VlbiArICJweCIKICAgICAgICAgICAgICAgICAgICB9KSA6IGkuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnZpcnR1YWxTaXplICsgZS5zcGFjZUJldHdlZW4gKyAicHgiCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlLnNsaWRlc1BlckNvbHVtbiA+IDEgJiYgKHRoaXMudmlydHVhbFNpemUgPSAoUyArIGUuc3BhY2VCZXR3ZWVuKSAqIEUsIHRoaXMudmlydHVhbFNpemUgPSBNYXRoLmNlaWwodGhpcy52aXJ0dWFsU2l6ZSAvIGUuc2xpZGVzUGVyQ29sdW1uKSAtIGUuc3BhY2VCZXR3ZWVuLCB0aGlzLmlzSG9yaXpvbnRhbCgpID8gaS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy52aXJ0dWFsU2l6ZSArIGUuc3BhY2VCZXR3ZWVuICsgInB4IgogICAgICAgICAgICAgICAgICAgIH0pIDogaS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMudmlydHVhbFNpemUgKyBlLnNwYWNlQmV0d2VlbiArICJweCIKICAgICAgICAgICAgICAgICAgICB9KSwgZS5jZW50ZXJlZFNsaWRlcykpIHsKICAgICAgICAgICAgICAgICAgICBDID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgUSA9IDA7IFEgPCBwLmxlbmd0aDsgUSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBKID0gcFtRXTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5yb3VuZExlbmd0aHMgJiYgKEogPSBNYXRoLmZsb29yKEopKSwgcFtRXSA8IHRoaXMudmlydHVhbFNpemUgKyBwWzBdICYmIEMucHVzaChKKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwID0gQwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFlLmNlbnRlcmVkU2xpZGVzKSB7CiAgICAgICAgICAgICAgICAgICAgQyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGVlID0gMDsgZWUgPCBwLmxlbmd0aDsgZWUgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGUgPSBwW2VlXTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5yb3VuZExlbmd0aHMgJiYgKHRlID0gTWF0aC5mbG9vcih0ZSkpLCBwW2VlXSA8PSB0aGlzLnZpcnR1YWxTaXplIC0gcyAmJiBDLnB1c2godGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHAgPSBDLCBNYXRoLmZsb29yKHRoaXMudmlydHVhbFNpemUgLSBzKSAtIE1hdGguZmxvb3IocFtwLmxlbmd0aCAtIDFdKSA+IDEgJiYgcC5wdXNoKHRoaXMudmlydHVhbFNpemUgLSBzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKDAgPT09IHAubGVuZ3RoICYmIChwID0gWzBdKSwgMCAhPT0gZS5zcGFjZUJldHdlZW4gJiYgKHRoaXMuaXNIb3Jpem9udGFsKCkgPyBhID8gZC5maWx0ZXIodikuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogdyArICJweCIKICAgICAgICAgICAgICAgICAgICB9KSA6IGQuZmlsdGVyKHYpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiB3ICsgInB4IgogICAgICAgICAgICAgICAgICAgIH0pIDogZC5maWx0ZXIodikuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiB3ICsgInB4IgogICAgICAgICAgICAgICAgICAgIH0pKSwgZS5jZW50ZXJlZFNsaWRlcyAmJiBlLmNlbnRlcmVkU2xpZGVzQm91bmRzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGllID0gMDsKICAgICAgICAgICAgICAgICAgICB1LmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWUgKz0gdCArIChlLnNwYWNlQmV0d2VlbiA/IGUuc3BhY2VCZXR3ZWVuIDogMCkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNlID0gKGllIC09IGUuc3BhY2VCZXR3ZWVuKSAtIHM7CiAgICAgICAgICAgICAgICAgICAgcCA9IHAubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIDwgMCA/IC1mIDogZSA+IHNlID8gc2UgKyBtIDogZQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGUuY2VudGVySW5zdWZmaWNpZW50U2xpZGVzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFlID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAodS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZSArPSB0ICsgKGUuc3BhY2VCZXR3ZWVuID8gZS5zcGFjZUJldHdlZW4gOiAwKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIChhZSAtPSBlLnNwYWNlQmV0d2VlbikgPCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZSA9IChzIC0gYWUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgcC5mb3JFYWNoKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW3RdID0gZSAtIHJlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYy5mb3JFYWNoKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3RdID0gZSArIHJlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IGQsCiAgICAgICAgICAgICAgICAgICAgc25hcEdyaWQ6IHAsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVzR3JpZDogYywKICAgICAgICAgICAgICAgICAgICBzbGlkZXNTaXplc0dyaWQ6IHUKICAgICAgICAgICAgICAgIH0pLCBoICE9PSBsICYmIHRoaXMuZW1pdCgic2xpZGVzTGVuZ3RoQ2hhbmdlIiksIHAubGVuZ3RoICE9PSBnICYmICh0aGlzLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHRoaXMuY2hlY2tPdmVyZmxvdygpLCB0aGlzLmVtaXQoInNuYXBHcmlkTGVuZ3RoQ2hhbmdlIikpLCBjLmxlbmd0aCAhPT0gYiAmJiB0aGlzLmVtaXQoInNsaWRlc0dyaWRMZW5ndGhDaGFuZ2UiKSwgKGUud2F0Y2hTbGlkZXNQcm9ncmVzcyB8fCBlLndhdGNoU2xpZGVzVmlzaWJpbGl0eSkgJiYgdGhpcy51cGRhdGVTbGlkZXNPZmZzZXQoKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB1cGRhdGVBdXRvSGVpZ2h0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBpID0gW10sCiAgICAgICAgICAgICAgICBzID0gMDsKICAgICAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZiBlID8gdGhpcy5zZXRUcmFuc2l0aW9uKGUpIDogITAgPT09IGUgJiYgdGhpcy5zZXRUcmFuc2l0aW9uKHRoaXMucGFyYW1zLnNwZWVkKSwgImF1dG8iICE9PSB0aGlzLnBhcmFtcy5zbGlkZXNQZXJWaWV3ICYmIHRoaXMucGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxKQogICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zLmNlbnRlcmVkU2xpZGVzKSBpLnB1c2guYXBwbHkoaSwgdGhpcy52aXNpYmxlU2xpZGVzKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgTWF0aC5jZWlsKHRoaXMucGFyYW1zLnNsaWRlc1BlclZpZXcpOyB0ICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLmFjdGl2ZUluZGV4ICsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPiB0aGlzLnNsaWRlcy5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBpLnB1c2godGhpcy5zbGlkZXMuZXEoYSlbMF0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkucHVzaCh0aGlzLnNsaWRlcy5lcSh0aGlzLmFjdGl2ZUluZGV4KVswXSk7CiAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBpLmxlbmd0aDsgdCArPSAxKQogICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gaVt0XSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gaVt0XS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgcyA9IHIgPiBzID8gciA6IHMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcyAmJiB0aGlzLiR3cmFwcGVyRWwuY3NzKCJoZWlnaHQiLCBzICsgInB4IikKICAgICAgICB9LAogICAgICAgIHVwZGF0ZVNsaWRlc09mZnNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLnNsaWRlcywgdCA9IDA7IHQgPCBlLmxlbmd0aDsgdCArPSAxKSBlW3RdLnN3aXBlclNsaWRlT2Zmc2V0ID0gdGhpcy5pc0hvcml6b250YWwoKSA/IGVbdF0ub2Zmc2V0TGVmdCA6IGVbdF0ub2Zmc2V0VG9wCiAgICAgICAgfSwKICAgICAgICB1cGRhdGVTbGlkZXNQcm9ncmVzczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSB0aGlzICYmIHRoaXMudHJhbnNsYXRlIHx8IDApOwogICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICAgICAgaSA9IHRoaXMuc2xpZGVzLAogICAgICAgICAgICAgICAgYSA9IHRoaXMucnRsVHJhbnNsYXRlOwogICAgICAgICAgICBpZiAoMCAhPT0gaS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gaVswXS5zd2lwZXJTbGlkZU9mZnNldCAmJiB0aGlzLnVwZGF0ZVNsaWRlc09mZnNldCgpOwogICAgICAgICAgICAgICAgdmFyIHIgPSAtZTsKICAgICAgICAgICAgICAgIGEgJiYgKHIgPSBlKSwgaS5yZW1vdmVDbGFzcyh0LnNsaWRlVmlzaWJsZUNsYXNzKSwgdGhpcy52aXNpYmxlU2xpZGVzSW5kZXhlcyA9IFtdLCB0aGlzLnZpc2libGVTbGlkZXMgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgaS5sZW5ndGg7IG4gKz0gMSkgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gaVtuXSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChyICsgKHQuY2VudGVyZWRTbGlkZXMgPyB0aGlzLm1pblRyYW5zbGF0ZSgpIDogMCkgLSBvLnN3aXBlclNsaWRlT2Zmc2V0KSAvIChvLnN3aXBlclNsaWRlU2l6ZSArIHQuc3BhY2VCZXR3ZWVuKTsKICAgICAgICAgICAgICAgICAgICBpZiAodC53YXRjaFNsaWRlc1Zpc2liaWxpdHkgfHwgdC5jZW50ZXJlZFNsaWRlcyAmJiB0LmF1dG9IZWlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSAtKHIgLSBvLnN3aXBlclNsaWRlT2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBkICsgdGhpcy5zbGlkZXNTaXplc0dyaWRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgIChkID49IDAgJiYgZCA8IHRoaXMuc2l6ZSAtIDEgfHwgaCA+IDEgJiYgaCA8PSB0aGlzLnNpemUgfHwgZCA8PSAwICYmIGggPj0gdGhpcy5zaXplKSAmJiAodGhpcy52aXNpYmxlU2xpZGVzLnB1c2gobyksIHRoaXMudmlzaWJsZVNsaWRlc0luZGV4ZXMucHVzaChuKSwgaS5lcShuKS5hZGRDbGFzcyh0LnNsaWRlVmlzaWJsZUNsYXNzKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgby5wcm9ncmVzcyA9IGEgPyAtbCA6IGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZVNsaWRlcyA9IHModGhpcy52aXNpYmxlU2xpZGVzKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAodm9pZCAwID09PSBlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucnRsVHJhbnNsYXRlID8gLTEgOiAxOwogICAgICAgICAgICAgICAgZSA9IHRoaXMgJiYgdGhpcy50cmFuc2xhdGUgJiYgdGhpcy50cmFuc2xhdGUgKiB0IHx8IDAKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgaSA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICAgICAgcyA9IHRoaXMubWF4VHJhbnNsYXRlKCkgLSB0aGlzLm1pblRyYW5zbGF0ZSgpLAogICAgICAgICAgICAgICAgYSA9IHRoaXMucHJvZ3Jlc3MsCiAgICAgICAgICAgICAgICByID0gdGhpcy5pc0JlZ2lubmluZywKICAgICAgICAgICAgICAgIG8gPSB0aGlzLmlzRW5kLAogICAgICAgICAgICAgICAgbCA9IHIsCiAgICAgICAgICAgICAgICBkID0gbzsKICAgICAgICAgICAgMCA9PT0gcyA/IChhID0gMCwgciA9ICEwLCBvID0gITApIDogKHIgPSAoYSA9IChlIC0gdGhpcy5taW5UcmFuc2xhdGUoKSkgLyBzKSA8PSAwLCBvID0gYSA+PSAxKSwgbi5leHRlbmQodGhpcywgewogICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IGEsCiAgICAgICAgICAgICAgICBpc0JlZ2lubmluZzogciwKICAgICAgICAgICAgICAgIGlzRW5kOiBvCiAgICAgICAgICAgIH0pLCAoaS53YXRjaFNsaWRlc1Byb2dyZXNzIHx8IGkud2F0Y2hTbGlkZXNWaXNpYmlsaXR5IHx8IGkuY2VudGVyZWRTbGlkZXMgJiYgaS5hdXRvSGVpZ2h0KSAmJiB0aGlzLnVwZGF0ZVNsaWRlc1Byb2dyZXNzKGUpLCByICYmICFsICYmIHRoaXMuZW1pdCgicmVhY2hCZWdpbm5pbmcgdG9FZGdlIiksIG8gJiYgIWQgJiYgdGhpcy5lbWl0KCJyZWFjaEVuZCB0b0VkZ2UiKSwgKGwgJiYgIXIgfHwgZCAmJiAhbykgJiYgdGhpcy5lbWl0KCJmcm9tRWRnZSIpLCB0aGlzLmVtaXQoInByb2dyZXNzIiwgYSkKICAgICAgICB9LAogICAgICAgIHVwZGF0ZVNsaWRlc0NsYXNzZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSwgdCA9IHRoaXMuc2xpZGVzLAogICAgICAgICAgICAgICAgaSA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICAgICAgcyA9IHRoaXMuJHdyYXBwZXJFbCwKICAgICAgICAgICAgICAgIGEgPSB0aGlzLmFjdGl2ZUluZGV4LAogICAgICAgICAgICAgICAgciA9IHRoaXMucmVhbEluZGV4LAogICAgICAgICAgICAgICAgbiA9IHRoaXMudmlydHVhbCAmJiBpLnZpcnR1YWwuZW5hYmxlZDsKICAgICAgICAgICAgdC5yZW1vdmVDbGFzcyhpLnNsaWRlQWN0aXZlQ2xhc3MgKyAiICIgKyBpLnNsaWRlTmV4dENsYXNzICsgIiAiICsgaS5zbGlkZVByZXZDbGFzcyArICIgIiArIGkuc2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzcyArICIgIiArIGkuc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3MgKyAiICIgKyBpLnNsaWRlRHVwbGljYXRlUHJldkNsYXNzKSwgKGUgPSBuID8gdGhpcy4kd3JhcHBlckVsLmZpbmQoIi4iICsgaS5zbGlkZUNsYXNzICsgJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJyArIGEgKyAnIl0nKSA6IHQuZXEoYSkpLmFkZENsYXNzKGkuc2xpZGVBY3RpdmVDbGFzcyksIGkubG9vcCAmJiAoZS5oYXNDbGFzcyhpLnNsaWRlRHVwbGljYXRlQ2xhc3MpID8gcy5jaGlsZHJlbigiLiIgKyBpLnNsaWRlQ2xhc3MgKyAiOm5vdCguIiArIGkuc2xpZGVEdXBsaWNhdGVDbGFzcyArICcpW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgciArICciXScpLmFkZENsYXNzKGkuc2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzcykgOiBzLmNoaWxkcmVuKCIuIiArIGkuc2xpZGVDbGFzcyArICIuIiArIGkuc2xpZGVEdXBsaWNhdGVDbGFzcyArICdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicgKyByICsgJyJdJykuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzKSk7CiAgICAgICAgICAgIHZhciBvID0gZS5uZXh0QWxsKCIuIiArIGkuc2xpZGVDbGFzcykuZXEoMCkuYWRkQ2xhc3MoaS5zbGlkZU5leHRDbGFzcyk7CiAgICAgICAgICAgIGkubG9vcCAmJiAwID09PSBvLmxlbmd0aCAmJiAobyA9IHQuZXEoMCkpLmFkZENsYXNzKGkuc2xpZGVOZXh0Q2xhc3MpOwogICAgICAgICAgICB2YXIgbCA9IGUucHJldkFsbCgiLiIgKyBpLnNsaWRlQ2xhc3MpLmVxKDApLmFkZENsYXNzKGkuc2xpZGVQcmV2Q2xhc3MpOwogICAgICAgICAgICBpLmxvb3AgJiYgMCA9PT0gbC5sZW5ndGggJiYgKGwgPSB0LmVxKC0xKSkuYWRkQ2xhc3MoaS5zbGlkZVByZXZDbGFzcyksIGkubG9vcCAmJiAoby5oYXNDbGFzcyhpLnNsaWRlRHVwbGljYXRlQ2xhc3MpID8gcy5jaGlsZHJlbigiLiIgKyBpLnNsaWRlQ2xhc3MgKyAiOm5vdCguIiArIGkuc2xpZGVEdXBsaWNhdGVDbGFzcyArICcpW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgby5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpICsgJyJdJykuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZU5leHRDbGFzcykgOiBzLmNoaWxkcmVuKCIuIiArIGkuc2xpZGVDbGFzcyArICIuIiArIGkuc2xpZGVEdXBsaWNhdGVDbGFzcyArICdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicgKyBvLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikgKyAnIl0nKS5hZGRDbGFzcyhpLnNsaWRlRHVwbGljYXRlTmV4dENsYXNzKSwgbC5oYXNDbGFzcyhpLnNsaWRlRHVwbGljYXRlQ2xhc3MpID8gcy5jaGlsZHJlbigiLiIgKyBpLnNsaWRlQ2xhc3MgKyAiOm5vdCguIiArIGkuc2xpZGVEdXBsaWNhdGVDbGFzcyArICcpW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgbC5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpICsgJyJdJykuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZVByZXZDbGFzcykgOiBzLmNoaWxkcmVuKCIuIiArIGkuc2xpZGVDbGFzcyArICIuIiArIGkuc2xpZGVEdXBsaWNhdGVDbGFzcyArICdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicgKyBsLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikgKyAnIl0nKS5hZGRDbGFzcyhpLnNsaWRlRHVwbGljYXRlUHJldkNsYXNzKSkKICAgICAgICB9LAogICAgICAgIHVwZGF0ZUFjdGl2ZUluZGV4OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBpID0gdGhpcy5ydGxUcmFuc2xhdGUgPyB0aGlzLnRyYW5zbGF0ZSA6IC10aGlzLnRyYW5zbGF0ZSwKICAgICAgICAgICAgICAgIHMgPSB0aGlzLnNsaWRlc0dyaWQsCiAgICAgICAgICAgICAgICBhID0gdGhpcy5zbmFwR3JpZCwKICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgIG8gPSB0aGlzLmFjdGl2ZUluZGV4LAogICAgICAgICAgICAgICAgbCA9IHRoaXMucmVhbEluZGV4LAogICAgICAgICAgICAgICAgZCA9IHRoaXMuc25hcEluZGV4LAogICAgICAgICAgICAgICAgaCA9IGU7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGgpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgcy5sZW5ndGg7IHAgKz0gMSkgdm9pZCAwICE9PSBzW3AgKyAxXSA/IGkgPj0gc1twXSAmJiBpIDwgc1twICsgMV0gLSAoc1twICsgMV0gLSBzW3BdKSAvIDIgPyBoID0gcCA6IGkgPj0gc1twXSAmJiBpIDwgc1twICsgMV0gJiYgKGggPSBwICsgMSkgOiBpID49IHNbcF0gJiYgKGggPSBwKTsKICAgICAgICAgICAgICAgIHIubm9ybWFsaXplU2xpZGVJbmRleCAmJiAoaCA8IDAgfHwgdm9pZCAwID09PSBoKSAmJiAoaCA9IDApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGEuaW5kZXhPZihpKSA+PSAwKSB0ID0gYS5pbmRleE9mKGkpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBjID0gTWF0aC5taW4oci5zbGlkZXNQZXJHcm91cFNraXAsIGgpOwogICAgICAgICAgICAgICAgdCA9IGMgKyBNYXRoLmZsb29yKChoIC0gYykgLyByLnNsaWRlc1Blckdyb3VwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0ID49IGEubGVuZ3RoICYmICh0ID0gYS5sZW5ndGggLSAxKSwgaCAhPT0gbykgewogICAgICAgICAgICAgICAgdmFyIHUgPSBwYXJzZUludCh0aGlzLnNsaWRlcy5lcShoKS5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpIHx8IGgsIDEwKTsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBzbmFwSW5kZXg6IHQsCiAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiB1LAogICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IG8sCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGgKICAgICAgICAgICAgICAgIH0pLCB0aGlzLmVtaXQoImFjdGl2ZUluZGV4Q2hhbmdlIiksIHRoaXMuZW1pdCgic25hcEluZGV4Q2hhbmdlIiksIGwgIT09IHUgJiYgdGhpcy5lbWl0KCJyZWFsSW5kZXhDaGFuZ2UiKSwgKHRoaXMuaW5pdGlhbGl6ZWQgfHwgdGhpcy5ydW5DYWxsYmFja3NPbkluaXQpICYmIHRoaXMuZW1pdCgic2xpZGVDaGFuZ2UiKQogICAgICAgICAgICB9IGVsc2UgdCAhPT0gZCAmJiAodGhpcy5zbmFwSW5kZXggPSB0LCB0aGlzLmVtaXQoInNuYXBJbmRleENoYW5nZSIpKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlQ2xpY2tlZFNsaWRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5wYXJhbXMsCiAgICAgICAgICAgICAgICBpID0gcyhlLnRhcmdldCkuY2xvc2VzdCgiLiIgKyB0LnNsaWRlQ2xhc3MpWzBdLAogICAgICAgICAgICAgICAgYSA9ICExOwogICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgdGhpcy5zbGlkZXMubGVuZ3RoOyByICs9IDEpIHRoaXMuc2xpZGVzW3JdID09PSBpICYmIChhID0gITApOwogICAgICAgICAgICBpZiAoIWkgfHwgIWEpIHJldHVybiB0aGlzLmNsaWNrZWRTbGlkZSA9IHZvaWQgMCwgdm9pZCh0aGlzLmNsaWNrZWRJbmRleCA9IHZvaWQgMCk7CiAgICAgICAgICAgIHRoaXMuY2xpY2tlZFNsaWRlID0gaSwgdGhpcy52aXJ0dWFsICYmIHRoaXMucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCA/IHRoaXMuY2xpY2tlZEluZGV4ID0gcGFyc2VJbnQocyhpKS5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpLCAxMCkgOiB0aGlzLmNsaWNrZWRJbmRleCA9IHMoaSkuaW5kZXgoKSwgdC5zbGlkZVRvQ2xpY2tlZFNsaWRlICYmIHZvaWQgMCAhPT0gdGhpcy5jbGlja2VkSW5kZXggJiYgdGhpcy5jbGlja2VkSW5kZXggIT09IHRoaXMuYWN0aXZlSW5kZXggJiYgdGhpcy5zbGlkZVRvQ2xpY2tlZFNsaWRlKCkKICAgICAgICB9CiAgICB9OwogICAgdmFyIHAgPSB7CiAgICAgICAgZ2V0VHJhbnNsYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IHRoaXMuaXNIb3Jpem9udGFsKCkgPyAieCIgOiAieSIpOwogICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICAgICAgaSA9IHRoaXMucnRsVHJhbnNsYXRlLAogICAgICAgICAgICAgICAgcyA9IHRoaXMudHJhbnNsYXRlLAogICAgICAgICAgICAgICAgYSA9IHRoaXMuJHdyYXBwZXJFbDsKICAgICAgICAgICAgaWYgKHQudmlydHVhbFRyYW5zbGF0ZSkgcmV0dXJuIGkgPyAtcyA6IHM7CiAgICAgICAgICAgIGlmICh0LmNzc01vZGUpIHJldHVybiBzOwogICAgICAgICAgICB2YXIgciA9IG4uZ2V0VHJhbnNsYXRlKGFbMF0sIGUpOwogICAgICAgICAgICByZXR1cm4gaSAmJiAociA9IC1yKSwgciB8fCAwCiAgICAgICAgfSwKICAgICAgICBzZXRUcmFuc2xhdGU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnJ0bFRyYW5zbGF0ZSwKICAgICAgICAgICAgICAgIHMgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgIGEgPSB0aGlzLiR3cmFwcGVyRWwsCiAgICAgICAgICAgICAgICByID0gdGhpcy53cmFwcGVyRWwsCiAgICAgICAgICAgICAgICBuID0gdGhpcy5wcm9ncmVzcywKICAgICAgICAgICAgICAgIG8gPSAwLAogICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgIHRoaXMuaXNIb3Jpem9udGFsKCkgPyBvID0gaSA/IC1lIDogZSA6IGwgPSBlLCBzLnJvdW5kTGVuZ3RocyAmJiAobyA9IE1hdGguZmxvb3IobyksIGwgPSBNYXRoLmZsb29yKGwpKSwgcy5jc3NNb2RlID8gclt0aGlzLmlzSG9yaXpvbnRhbCgpID8gInNjcm9sbExlZnQiIDogInNjcm9sbFRvcCJdID0gdGhpcy5pc0hvcml6b250YWwoKSA/IC1vIDogLWwgOiBzLnZpcnR1YWxUcmFuc2xhdGUgfHwgYS50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKCIgKyBvICsgInB4LCAiICsgbCArICJweCwgMHB4KSIpLCB0aGlzLnByZXZpb3VzVHJhbnNsYXRlID0gdGhpcy50cmFuc2xhdGUsIHRoaXMudHJhbnNsYXRlID0gdGhpcy5pc0hvcml6b250YWwoKSA/IG8gOiBsOwogICAgICAgICAgICB2YXIgZCA9IHRoaXMubWF4VHJhbnNsYXRlKCkgLSB0aGlzLm1pblRyYW5zbGF0ZSgpOwogICAgICAgICAgICAoMCA9PT0gZCA/IDAgOiAoZSAtIHRoaXMubWluVHJhbnNsYXRlKCkpIC8gZCkgIT09IG4gJiYgdGhpcy51cGRhdGVQcm9ncmVzcyhlKSwgdGhpcy5lbWl0KCJzZXRUcmFuc2xhdGUiLCB0aGlzLnRyYW5zbGF0ZSwgdCkKICAgICAgICB9LAogICAgICAgIG1pblRyYW5zbGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAtdGhpcy5zbmFwR3JpZFswXQogICAgICAgIH0sCiAgICAgICAgbWF4VHJhbnNsYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIC10aGlzLnNuYXBHcmlkW3RoaXMuc25hcEdyaWQubGVuZ3RoIC0gMV0KICAgICAgICB9LAogICAgICAgIHRyYW5zbGF0ZVRvOiBmdW5jdGlvbihlLCB0LCBpLCBzLCBhKSB7CiAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAwKSwgdm9pZCAwID09PSB0ICYmICh0ID0gdGhpcy5wYXJhbXMuc3BlZWQpLCB2b2lkIDAgPT09IGkgJiYgKGkgPSAhMCksIHZvaWQgMCA9PT0gcyAmJiAocyA9ICEwKTsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgbyA9IG4ucGFyYW1zLAogICAgICAgICAgICAgICAgbCA9IG4ud3JhcHBlckVsOwogICAgICAgICAgICBpZiAobi5hbmltYXRpbmcgJiYgby5wcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb24pIHJldHVybiAhMTsKICAgICAgICAgICAgdmFyIGQsIGggPSBuLm1pblRyYW5zbGF0ZSgpLAogICAgICAgICAgICAgICAgcCA9IG4ubWF4VHJhbnNsYXRlKCk7CiAgICAgICAgICAgIGlmIChkID0gcyAmJiBlID4gaCA/IGggOiBzICYmIGUgPCBwID8gcCA6IGUsIG4udXBkYXRlUHJvZ3Jlc3MoZCksIG8uY3NzTW9kZSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBuLmlzSG9yaXpvbnRhbCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IHQgPyBsW2MgPyAic2Nyb2xsTGVmdCIgOiAic2Nyb2xsVG9wIl0gPSAtZCA6IGwuc2Nyb2xsVG8gPyBsLnNjcm9sbFRvKCgociA9IHt9KVtjID8gImxlZnQiIDogInRvcCJdID0gLWQsIHIuYmVoYXZpb3IgPSAic21vb3RoIiwgcikpIDogbFtjID8gInNjcm9sbExlZnQiIDogInNjcm9sbFRvcCJdID0gLWQsICEwCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIDAgPT09IHQgPyAobi5zZXRUcmFuc2l0aW9uKDApLCBuLnNldFRyYW5zbGF0ZShkKSwgaSAmJiAobi5lbWl0KCJiZWZvcmVUcmFuc2l0aW9uU3RhcnQiLCB0LCBhKSwgbi5lbWl0KCJ0cmFuc2l0aW9uRW5kIikpKSA6IChuLnNldFRyYW5zaXRpb24odCksIG4uc2V0VHJhbnNsYXRlKGQpLCBpICYmIChuLmVtaXQoImJlZm9yZVRyYW5zaXRpb25TdGFydCIsIHQsIGEpLCBuLmVtaXQoInRyYW5zaXRpb25TdGFydCIpKSwgbi5hbmltYXRpbmcgfHwgKG4uYW5pbWF0aW5nID0gITAsIG4ub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kIHx8IChuLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIG4gJiYgIW4uZGVzdHJveWVkICYmIGUudGFyZ2V0ID09PSB0aGlzICYmIChuLiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIG4ub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSwgbi4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCBuLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksIG4ub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gbnVsbCwgZGVsZXRlIG4ub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kLCBpICYmIG4uZW1pdCgidHJhbnNpdGlvbkVuZCIpKQogICAgICAgICAgICB9KSwgbi4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCBuLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksIG4uJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgbi5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpKSksICEwCiAgICAgICAgfQogICAgfTsKICAgIHZhciBjID0gewogICAgICAgIHNldFRyYW5zaXRpb246IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdGhpcy5wYXJhbXMuY3NzTW9kZSB8fCB0aGlzLiR3cmFwcGVyRWwudHJhbnNpdGlvbihlKSwgdGhpcy5lbWl0KCJzZXRUcmFuc2l0aW9uIiwgZSwgdCkKICAgICAgICB9LAogICAgICAgIHRyYW5zaXRpb25TdGFydDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAhMCk7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5hY3RpdmVJbmRleCwKICAgICAgICAgICAgICAgIHMgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgIGEgPSB0aGlzLnByZXZpb3VzSW5kZXg7CiAgICAgICAgICAgIGlmICghcy5jc3NNb2RlKSB7CiAgICAgICAgICAgICAgICBzLmF1dG9IZWlnaHQgJiYgdGhpcy51cGRhdGVBdXRvSGVpZ2h0KCk7CiAgICAgICAgICAgICAgICB2YXIgciA9IHQ7CiAgICAgICAgICAgICAgICBpZiAociB8fCAociA9IGkgPiBhID8gIm5leHQiIDogaSA8IGEgPyAicHJldiIgOiAicmVzZXQiKSwgdGhpcy5lbWl0KCJ0cmFuc2l0aW9uU3RhcnQiKSwgZSAmJiBpICE9PSBhKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJyZXNldCIgPT09IHIpIHJldHVybiB2b2lkIHRoaXMuZW1pdCgic2xpZGVSZXNldFRyYW5zaXRpb25TdGFydCIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgic2xpZGVDaGFuZ2VUcmFuc2l0aW9uU3RhcnQiKSwgIm5leHQiID09PSByID8gdGhpcy5lbWl0KCJzbGlkZU5leHRUcmFuc2l0aW9uU3RhcnQiKSA6IHRoaXMuZW1pdCgic2xpZGVQcmV2VHJhbnNpdGlvblN0YXJ0IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdHJhbnNpdGlvbkVuZDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAhMCk7CiAgICAgICAgICAgIHZhciBpID0gdGhpcy5hY3RpdmVJbmRleCwKICAgICAgICAgICAgICAgIHMgPSB0aGlzLnByZXZpb3VzSW5kZXgsCiAgICAgICAgICAgICAgICBhID0gdGhpcy5wYXJhbXM7CiAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGluZyA9ICExLCAhYS5jc3NNb2RlKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNldFRyYW5zaXRpb24oMCk7CiAgICAgICAgICAgICAgICB2YXIgciA9IHQ7CiAgICAgICAgICAgICAgICBpZiAociB8fCAociA9IGkgPiBzID8gIm5leHQiIDogaSA8IHMgPyAicHJldiIgOiAicmVzZXQiKSwgdGhpcy5lbWl0KCJ0cmFuc2l0aW9uRW5kIiksIGUgJiYgaSAhPT0gcykgewogICAgICAgICAgICAgICAgICAgIGlmICgicmVzZXQiID09PSByKSByZXR1cm4gdm9pZCB0aGlzLmVtaXQoInNsaWRlUmVzZXRUcmFuc2l0aW9uRW5kIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCJzbGlkZUNoYW5nZVRyYW5zaXRpb25FbmQiKSwgIm5leHQiID09PSByID8gdGhpcy5lbWl0KCJzbGlkZU5leHRUcmFuc2l0aW9uRW5kIikgOiB0aGlzLmVtaXQoInNsaWRlUHJldlRyYW5zaXRpb25FbmQiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIHZhciB1ID0gewogICAgICAgIHNsaWRlVG86IGZ1bmN0aW9uKGUsIHQsIGksIHMpIHsKICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IDApLCB2b2lkIDAgPT09IHQgJiYgKHQgPSB0aGlzLnBhcmFtcy5zcGVlZCksIHZvaWQgMCA9PT0gaSAmJiAoaSA9ICEwKTsKICAgICAgICAgICAgdmFyIHIgPSB0aGlzLAogICAgICAgICAgICAgICAgbiA9IGU7CiAgICAgICAgICAgIG4gPCAwICYmIChuID0gMCk7CiAgICAgICAgICAgIHZhciBvID0gci5wYXJhbXMsCiAgICAgICAgICAgICAgICBsID0gci5zbmFwR3JpZCwKICAgICAgICAgICAgICAgIGQgPSByLnNsaWRlc0dyaWQsCiAgICAgICAgICAgICAgICBoID0gci5wcmV2aW91c0luZGV4LAogICAgICAgICAgICAgICAgcCA9IHIuYWN0aXZlSW5kZXgsCiAgICAgICAgICAgICAgICBjID0gci5ydGxUcmFuc2xhdGUsCiAgICAgICAgICAgICAgICB1ID0gci53cmFwcGVyRWw7CiAgICAgICAgICAgIGlmIChyLmFuaW1hdGluZyAmJiBvLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikgcmV0dXJuICExOwogICAgICAgICAgICB2YXIgdiA9IE1hdGgubWluKHIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgbiksCiAgICAgICAgICAgICAgICBmID0gdiArIE1hdGguZmxvb3IoKG4gLSB2KSAvIHIucGFyYW1zLnNsaWRlc1Blckdyb3VwKTsKICAgICAgICAgICAgZiA+PSBsLmxlbmd0aCAmJiAoZiA9IGwubGVuZ3RoIC0gMSksIChwIHx8IG8uaW5pdGlhbFNsaWRlIHx8IDApID09PSAoaCB8fCAwKSAmJiBpICYmIHIuZW1pdCgiYmVmb3JlU2xpZGVDaGFuZ2VTdGFydCIpOwogICAgICAgICAgICB2YXIgbSwgZyA9IC1sW2ZdOwogICAgICAgICAgICBpZiAoci51cGRhdGVQcm9ncmVzcyhnKSwgby5ub3JtYWxpemVTbGlkZUluZGV4KQogICAgICAgICAgICAgICAgZm9yICh2YXIgYiA9IDA7IGIgPCBkLmxlbmd0aDsgYiArPSAxKSAtIE1hdGguZmxvb3IoMTAwICogZykgPj0gTWF0aC5mbG9vcigxMDAgKiBkW2JdKSAmJiAobiA9IGIpOwogICAgICAgICAgICBpZiAoci5pbml0aWFsaXplZCAmJiBuICE9PSBwKSB7CiAgICAgICAgICAgICAgICBpZiAoIXIuYWxsb3dTbGlkZU5leHQgJiYgZyA8IHIudHJhbnNsYXRlICYmIGcgPCByLm1pblRyYW5zbGF0ZSgpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICBpZiAoIXIuYWxsb3dTbGlkZVByZXYgJiYgZyA+IHIudHJhbnNsYXRlICYmIGcgPiByLm1heFRyYW5zbGF0ZSgpICYmIChwIHx8IDApICE9PSBuKSByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobSA9IG4gPiBwID8gIm5leHQiIDogbiA8IHAgPyAicHJldiIgOiAicmVzZXQiLCBjICYmIC1nID09PSByLnRyYW5zbGF0ZSB8fCAhYyAmJiBnID09PSByLnRyYW5zbGF0ZSkgcmV0dXJuIHIudXBkYXRlQWN0aXZlSW5kZXgobiksIG8uYXV0b0hlaWdodCAmJiByLnVwZGF0ZUF1dG9IZWlnaHQoKSwgci51cGRhdGVTbGlkZXNDbGFzc2VzKCksICJzbGlkZSIgIT09IG8uZWZmZWN0ICYmIHIuc2V0VHJhbnNsYXRlKGcpLCAicmVzZXQiICE9PSBtICYmIChyLnRyYW5zaXRpb25TdGFydChpLCBtKSwgci50cmFuc2l0aW9uRW5kKGksIG0pKSwgITE7CiAgICAgICAgICAgIGlmIChvLmNzc01vZGUpIHsKICAgICAgICAgICAgICAgIHZhciB3ID0gci5pc0hvcml6b250YWwoKTsKICAgICAgICAgICAgICAgIHJldHVybiAwID09PSB0ID8gdVt3ID8gInNjcm9sbExlZnQiIDogInNjcm9sbFRvcCJdID0gLWcgOiB1LnNjcm9sbFRvID8gdS5zY3JvbGxUbygoKGEgPSB7fSlbdyA/ICJsZWZ0IiA6ICJ0b3AiXSA9IC1nLCBhLmJlaGF2aW9yID0gInNtb290aCIsIGEpKSA6IHVbdyA/ICJzY3JvbGxMZWZ0IiA6ICJzY3JvbGxUb3AiXSA9IC1nLCAhMAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAwID09PSB0ID8gKHIuc2V0VHJhbnNpdGlvbigwKSwgci5zZXRUcmFuc2xhdGUoZyksIHIudXBkYXRlQWN0aXZlSW5kZXgobiksIHIudXBkYXRlU2xpZGVzQ2xhc3NlcygpLCByLmVtaXQoImJlZm9yZVRyYW5zaXRpb25TdGFydCIsIHQsIHMpLCByLnRyYW5zaXRpb25TdGFydChpLCBtKSwgci50cmFuc2l0aW9uRW5kKGksIG0pKSA6IChyLnNldFRyYW5zaXRpb24odCksIHIuc2V0VHJhbnNsYXRlKGcpLCByLnVwZGF0ZUFjdGl2ZUluZGV4KG4pLCByLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwgci5lbWl0KCJiZWZvcmVUcmFuc2l0aW9uU3RhcnQiLCB0LCBzKSwgci50cmFuc2l0aW9uU3RhcnQoaSwgbSksIHIuYW5pbWF0aW5nIHx8IChyLmFuaW1hdGluZyA9ICEwLCByLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kIHx8IChyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgciAmJiAhci5kZXN0cm95ZWQgJiYgZS50YXJnZXQgPT09IHRoaXMgJiYgKHIuJHdyYXBwZXJFbFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksIHIuJHdyYXBwZXJFbFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksIHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgPSBudWxsLCBkZWxldGUgci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCwgci50cmFuc2l0aW9uRW5kKGksIG0pKQogICAgICAgICAgICB9KSwgci4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCByLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSwgci4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSkpLCAhMAogICAgICAgIH0sCiAgICAgICAgc2xpZGVUb0xvb3A6IGZ1bmN0aW9uKGUsIHQsIGksIHMpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gMCksIHZvaWQgMCA9PT0gdCAmJiAodCA9IHRoaXMucGFyYW1zLnNwZWVkKSwgdm9pZCAwID09PSBpICYmIChpID0gITApOwogICAgICAgICAgICB2YXIgYSA9IGU7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmFtcy5sb29wICYmIChhICs9IHRoaXMubG9vcGVkU2xpZGVzKSwgdGhpcy5zbGlkZVRvKGEsIHQsIGksIHMpCiAgICAgICAgfSwKICAgICAgICBzbGlkZU5leHQ6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gdGhpcy5wYXJhbXMuc3BlZWQpLCB2b2lkIDAgPT09IHQgJiYgKHQgPSAhMCk7CiAgICAgICAgICAgIHZhciBzID0gdGhpcy5wYXJhbXMsCiAgICAgICAgICAgICAgICBhID0gdGhpcy5hbmltYXRpbmcsCiAgICAgICAgICAgICAgICByID0gdGhpcy5hY3RpdmVJbmRleCA8IHMuc2xpZGVzUGVyR3JvdXBTa2lwID8gMSA6IHMuc2xpZGVzUGVyR3JvdXA7CiAgICAgICAgICAgIGlmIChzLmxvb3ApIHsKICAgICAgICAgICAgICAgIGlmIChhKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICB0aGlzLmxvb3BGaXgoKSwgdGhpcy5fY2xpZW50TGVmdCA9IHRoaXMuJHdyYXBwZXJFbFswXS5jbGllbnRMZWZ0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVUbyh0aGlzLmFjdGl2ZUluZGV4ICsgciwgZSwgdCwgaSkKICAgICAgICB9LAogICAgICAgIHNsaWRlUHJldjogZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSB0aGlzLnBhcmFtcy5zcGVlZCksIHZvaWQgMCA9PT0gdCAmJiAodCA9ICEwKTsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgIGEgPSB0aGlzLmFuaW1hdGluZywKICAgICAgICAgICAgICAgIHIgPSB0aGlzLnNuYXBHcmlkLAogICAgICAgICAgICAgICAgbiA9IHRoaXMuc2xpZGVzR3JpZCwKICAgICAgICAgICAgICAgIG8gPSB0aGlzLnJ0bFRyYW5zbGF0ZTsKICAgICAgICAgICAgaWYgKHMubG9vcCkgewogICAgICAgICAgICAgICAgaWYgKGEpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIHRoaXMubG9vcEZpeCgpLCB0aGlzLl9jbGllbnRMZWZ0ID0gdGhpcy4kd3JhcHBlckVsWzBdLmNsaWVudExlZnQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gbChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA8IDAgPyAtTWF0aC5mbG9vcihNYXRoLmFicyhlKSkgOiBNYXRoLmZsb29yKGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGQsIGggPSBsKG8gPyB0aGlzLnRyYW5zbGF0ZSA6IC10aGlzLnRyYW5zbGF0ZSksCiAgICAgICAgICAgICAgICBwID0gci5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbChlKQogICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgYyA9IChuLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBsKGUpCiAgICAgICAgICAgICAgICB9KSksIHJbcC5pbmRleE9mKGgpXSwgcltwLmluZGV4T2YoaCkgLSAxXSk7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGMgJiYgcy5jc3NNb2RlICYmIHIuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIWMgJiYgaCA+PSBlICYmIChjID0gZSkKICAgICAgICAgICAgfSkpLCB2b2lkIDAgIT09IGMgJiYgKGQgPSBuLmluZGV4T2YoYykpIDwgMCAmJiAoZCA9IHRoaXMuYWN0aXZlSW5kZXggLSAxKSwgdGhpcy5zbGlkZVRvKGQsIGUsIHQsIGkpCiAgICAgICAgfSwKICAgICAgICBzbGlkZVJlc2V0OiBmdW5jdGlvbihlLCB0LCBpKSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSB0aGlzLnBhcmFtcy5zcGVlZCksIHZvaWQgMCA9PT0gdCAmJiAodCA9ICEwKSwgdGhpcy5zbGlkZVRvKHRoaXMuYWN0aXZlSW5kZXgsIGUsIHQsIGkpCiAgICAgICAgfSwKICAgICAgICBzbGlkZVRvQ2xvc2VzdDogZnVuY3Rpb24oZSwgdCwgaSwgcykgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSB0aGlzLnBhcmFtcy5zcGVlZCksIHZvaWQgMCA9PT0gdCAmJiAodCA9ICEwKSwgdm9pZCAwID09PSBzICYmIChzID0gLjUpOwogICAgICAgICAgICB2YXIgYSA9IHRoaXMuYWN0aXZlSW5kZXgsCiAgICAgICAgICAgICAgICByID0gTWF0aC5taW4odGhpcy5wYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLCBhKSwKICAgICAgICAgICAgICAgIG4gPSByICsgTWF0aC5mbG9vcigoYSAtIHIpIC8gdGhpcy5wYXJhbXMuc2xpZGVzUGVyR3JvdXApLAogICAgICAgICAgICAgICAgbyA9IHRoaXMucnRsVHJhbnNsYXRlID8gdGhpcy50cmFuc2xhdGUgOiAtdGhpcy50cmFuc2xhdGU7CiAgICAgICAgICAgIGlmIChvID49IHRoaXMuc25hcEdyaWRbbl0pIHsKICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy5zbmFwR3JpZFtuXTsKICAgICAgICAgICAgICAgIG8gLSBsID4gKHRoaXMuc25hcEdyaWRbbiArIDFdIC0gbCkgKiBzICYmIChhICs9IHRoaXMucGFyYW1zLnNsaWRlc1Blckdyb3VwKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLnNuYXBHcmlkW24gLSAxXTsKICAgICAgICAgICAgICAgIG8gLSBkIDw9ICh0aGlzLnNuYXBHcmlkW25dIC0gZCkgKiBzICYmIChhIC09IHRoaXMucGFyYW1zLnNsaWRlc1Blckdyb3VwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBhID0gTWF0aC5tYXgoYSwgMCksIGEgPSBNYXRoLm1pbihhLCB0aGlzLnNsaWRlc0dyaWQubGVuZ3RoIC0gMSksIHRoaXMuc2xpZGVUbyhhLCBlLCB0LCBpKQogICAgICAgIH0sCiAgICAgICAgc2xpZGVUb0NsaWNrZWRTbGlkZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlLCB0ID0gdGhpcywKICAgICAgICAgICAgICAgIGkgPSB0LnBhcmFtcywKICAgICAgICAgICAgICAgIGEgPSB0LiR3cmFwcGVyRWwsCiAgICAgICAgICAgICAgICByID0gImF1dG8iID09PSBpLnNsaWRlc1BlclZpZXcgPyB0LnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiBpLnNsaWRlc1BlclZpZXcsCiAgICAgICAgICAgICAgICBvID0gdC5jbGlja2VkSW5kZXg7CiAgICAgICAgICAgIGlmIChpLmxvb3ApIHsKICAgICAgICAgICAgICAgIGlmICh0LmFuaW1hdGluZykgcmV0dXJuOwogICAgICAgICAgICAgICAgZSA9IHBhcnNlSW50KHModC5jbGlja2VkU2xpZGUpLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IiksIDEwKSwgaS5jZW50ZXJlZFNsaWRlcyA/IG8gPCB0Lmxvb3BlZFNsaWRlcyAtIHIgLyAyIHx8IG8gPiB0LnNsaWRlcy5sZW5ndGggLSB0Lmxvb3BlZFNsaWRlcyArIHIgLyAyID8gKHQubG9vcEZpeCgpLCBvID0gYS5jaGlsZHJlbigiLiIgKyBpLnNsaWRlQ2xhc3MgKyAnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgZSArICciXTpub3QoLicgKyBpLnNsaWRlRHVwbGljYXRlQ2xhc3MgKyAiKSIpLmVxKDApLmluZGV4KCksIG4ubmV4dFRpY2soKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQuc2xpZGVUbyhvKQogICAgICAgICAgICAgICAgfSkpKSA6IHQuc2xpZGVUbyhvKSA6IG8gPiB0LnNsaWRlcy5sZW5ndGggLSByID8gKHQubG9vcEZpeCgpLCBvID0gYS5jaGlsZHJlbigiLiIgKyBpLnNsaWRlQ2xhc3MgKyAnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgZSArICciXTpub3QoLicgKyBpLnNsaWRlRHVwbGljYXRlQ2xhc3MgKyAiKSIpLmVxKDApLmluZGV4KCksIG4ubmV4dFRpY2soKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQuc2xpZGVUbyhvKQogICAgICAgICAgICAgICAgfSkpKSA6IHQuc2xpZGVUbyhvKQogICAgICAgICAgICB9IGVsc2UgdC5zbGlkZVRvKG8pCiAgICAgICAgfQogICAgfTsKICAgIHZhciB2ID0gewogICAgICAgIGxvb3BDcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBpID0gdC5wYXJhbXMsCiAgICAgICAgICAgICAgICBhID0gdC4kd3JhcHBlckVsOwogICAgICAgICAgICBhLmNoaWxkcmVuKCIuIiArIGkuc2xpZGVDbGFzcyArICIuIiArIGkuc2xpZGVEdXBsaWNhdGVDbGFzcykucmVtb3ZlKCk7CiAgICAgICAgICAgIHZhciByID0gYS5jaGlsZHJlbigiLiIgKyBpLnNsaWRlQ2xhc3MpOwogICAgICAgICAgICBpZiAoaS5sb29wRmlsbEdyb3VwV2l0aEJsYW5rKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGkuc2xpZGVzUGVyR3JvdXAgLSByLmxlbmd0aCAlIGkuc2xpZGVzUGVyR3JvdXA7CiAgICAgICAgICAgICAgICBpZiAobiAhPT0gaS5zbGlkZXNQZXJHcm91cCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAwOyBvIDwgbjsgbyArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gcyhlLmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hZGRDbGFzcyhpLnNsaWRlQ2xhc3MgKyAiICIgKyBpLnNsaWRlQmxhbmtDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuYXBwZW5kKGwpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHIgPSBhLmNoaWxkcmVuKCIuIiArIGkuc2xpZGVDbGFzcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAiYXV0byIgIT09IGkuc2xpZGVzUGVyVmlldyB8fCBpLmxvb3BlZFNsaWRlcyB8fCAoaS5sb29wZWRTbGlkZXMgPSByLmxlbmd0aCksIHQubG9vcGVkU2xpZGVzID0gTWF0aC5jZWlsKHBhcnNlRmxvYXQoaS5sb29wZWRTbGlkZXMgfHwgaS5zbGlkZXNQZXJWaWV3LCAxMCkpLCB0Lmxvb3BlZFNsaWRlcyArPSBpLmxvb3BBZGRpdGlvbmFsU2xpZGVzLCB0Lmxvb3BlZFNsaWRlcyA+IHIubGVuZ3RoICYmICh0Lmxvb3BlZFNsaWRlcyA9IHIubGVuZ3RoKTsKICAgICAgICAgICAgdmFyIGQgPSBbXSwKICAgICAgICAgICAgICAgIGggPSBbXTsKICAgICAgICAgICAgci5lYWNoKChmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IHMoaSk7CiAgICAgICAgICAgICAgICBlIDwgdC5sb29wZWRTbGlkZXMgJiYgaC5wdXNoKGkpLCBlIDwgci5sZW5ndGggJiYgZSA+PSByLmxlbmd0aCAtIHQubG9vcGVkU2xpZGVzICYmIGQucHVzaChpKSwgYS5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIsIGUpCiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBoLmxlbmd0aDsgcCArPSAxKSBhLmFwcGVuZChzKGhbcF0uY2xvbmVOb2RlKCEwKSkuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZUNsYXNzKSk7CiAgICAgICAgICAgIGZvciAodmFyIGMgPSBkLmxlbmd0aCAtIDE7IGMgPj0gMDsgYyAtPSAxKSBhLnByZXBlbmQocyhkW2NdLmNsb25lTm9kZSghMCkpLmFkZENsYXNzKGkuc2xpZGVEdXBsaWNhdGVDbGFzcykpCiAgICAgICAgfSwKICAgICAgICBsb29wRml4OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5lbWl0KCJiZWZvcmVMb29wRml4Iik7CiAgICAgICAgICAgIHZhciBlLCB0ID0gdGhpcy5hY3RpdmVJbmRleCwKICAgICAgICAgICAgICAgIGkgPSB0aGlzLnNsaWRlcywKICAgICAgICAgICAgICAgIHMgPSB0aGlzLmxvb3BlZFNsaWRlcywKICAgICAgICAgICAgICAgIGEgPSB0aGlzLmFsbG93U2xpZGVQcmV2LAogICAgICAgICAgICAgICAgciA9IHRoaXMuYWxsb3dTbGlkZU5leHQsCiAgICAgICAgICAgICAgICBuID0gdGhpcy5zbmFwR3JpZCwKICAgICAgICAgICAgICAgIG8gPSB0aGlzLnJ0bFRyYW5zbGF0ZTsKICAgICAgICAgICAgdGhpcy5hbGxvd1NsaWRlUHJldiA9ICEwLCB0aGlzLmFsbG93U2xpZGVOZXh0ID0gITA7CiAgICAgICAgICAgIHZhciBsID0gLW5bdF0gLSB0aGlzLmdldFRyYW5zbGF0ZSgpOwogICAgICAgICAgICBpZiAodCA8IHMpIGUgPSBpLmxlbmd0aCAtIDMgKiBzICsgdCwgZSArPSBzLCB0aGlzLnNsaWRlVG8oZSwgMCwgITEsICEwKSAmJiAwICE9PSBsICYmIHRoaXMuc2V0VHJhbnNsYXRlKChvID8gLXRoaXMudHJhbnNsYXRlIDogdGhpcy50cmFuc2xhdGUpIC0gbCk7CiAgICAgICAgICAgIGVsc2UgaWYgKHQgPj0gaS5sZW5ndGggLSBzKSB7CiAgICAgICAgICAgICAgICBlID0gLWkubGVuZ3RoICsgdCArIHMsIGUgKz0gcywgdGhpcy5zbGlkZVRvKGUsIDAsICExLCAhMCkgJiYgMCAhPT0gbCAmJiB0aGlzLnNldFRyYW5zbGF0ZSgobyA/IC10aGlzLnRyYW5zbGF0ZSA6IHRoaXMudHJhbnNsYXRlKSAtIGwpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5hbGxvd1NsaWRlUHJldiA9IGEsIHRoaXMuYWxsb3dTbGlkZU5leHQgPSByLCB0aGlzLmVtaXQoImxvb3BGaXgiKQogICAgICAgIH0sCiAgICAgICAgbG9vcERlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMuJHdyYXBwZXJFbCwKICAgICAgICAgICAgICAgIHQgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgIGkgPSB0aGlzLnNsaWRlczsKICAgICAgICAgICAgZS5jaGlsZHJlbigiLiIgKyB0LnNsaWRlQ2xhc3MgKyAiLiIgKyB0LnNsaWRlRHVwbGljYXRlQ2xhc3MgKyAiLC4iICsgdC5zbGlkZUNsYXNzICsgIi4iICsgdC5zbGlkZUJsYW5rQ2xhc3MpLnJlbW92ZSgpLCBpLnJlbW92ZUF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikKICAgICAgICB9CiAgICB9OwogICAgdmFyIGYgPSB7CiAgICAgICAgc2V0R3JhYkN1cnNvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIShvLnRvdWNoIHx8ICF0aGlzLnBhcmFtcy5zaW11bGF0ZVRvdWNoIHx8IHRoaXMucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgdGhpcy5pc0xvY2tlZCB8fCB0aGlzLnBhcmFtcy5jc3NNb2RlKSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmVsOwogICAgICAgICAgICAgICAgdC5zdHlsZS5jdXJzb3IgPSAibW92ZSIsIHQuc3R5bGUuY3Vyc29yID0gZSA/ICItd2Via2l0LWdyYWJiaW5nIiA6ICItd2Via2l0LWdyYWIiLCB0LnN0eWxlLmN1cnNvciA9IGUgPyAiLW1vei1ncmFiYmluIiA6ICItbW96LWdyYWIiLCB0LnN0eWxlLmN1cnNvciA9IGUgPyAiZ3JhYmJpbmciIDogImdyYWIiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHVuc2V0R3JhYkN1cnNvcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG8udG91Y2ggfHwgdGhpcy5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiB0aGlzLmlzTG9ja2VkIHx8IHRoaXMucGFyYW1zLmNzc01vZGUgfHwgKHRoaXMuZWwuc3R5bGUuY3Vyc29yID0gIiIpCiAgICAgICAgfQogICAgfTsKICAgIHZhciBtLCBnLCBiLCB3LCB5LCB4LCBULCBFLCBTLCBDLCBNLCBQLCB6LCBrLCAkLCBMID0gewogICAgICAgICAgICBhcHBlbmRTbGlkZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLiR3cmFwcGVyRWwsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMucGFyYW1zOwogICAgICAgICAgICAgICAgaWYgKGkubG9vcCAmJiB0aGlzLmxvb3BEZXN0cm95KCksICJvYmplY3QiID09IHR5cGVvZiBlICYmICJsZW5ndGgiIGluIGUpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCBlLmxlbmd0aDsgcyArPSAxKSBlW3NdICYmIHQuYXBwZW5kKGVbc10pOwogICAgICAgICAgICAgICAgZWxzZSB0LmFwcGVuZChlKTsKICAgICAgICAgICAgICAgIGkubG9vcCAmJiB0aGlzLmxvb3BDcmVhdGUoKSwgaS5vYnNlcnZlciAmJiBvLm9ic2VydmVyIHx8IHRoaXMudXBkYXRlKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJlcGVuZFNsaWRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLiR3cmFwcGVyRWwsCiAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuYWN0aXZlSW5kZXg7CiAgICAgICAgICAgICAgICB0Lmxvb3AgJiYgdGhpcy5sb29wRGVzdHJveSgpOwogICAgICAgICAgICAgICAgdmFyIGEgPSBzICsgMTsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAibGVuZ3RoIiBpbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgciArPSAxKSBlW3JdICYmIGkucHJlcGVuZChlW3JdKTsKICAgICAgICAgICAgICAgICAgICBhID0gcyArIGUubGVuZ3RoCiAgICAgICAgICAgICAgICB9IGVsc2UgaS5wcmVwZW5kKGUpOwogICAgICAgICAgICAgICAgdC5sb29wICYmIHRoaXMubG9vcENyZWF0ZSgpLCB0Lm9ic2VydmVyICYmIG8ub2JzZXJ2ZXIgfHwgdGhpcy51cGRhdGUoKSwgdGhpcy5zbGlkZVRvKGEsIDAsICExKQogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGRTbGlkZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLiR3cmFwcGVyRWwsCiAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmFjdGl2ZUluZGV4OwogICAgICAgICAgICAgICAgcy5sb29wICYmIChhIC09IHRoaXMubG9vcGVkU2xpZGVzLCB0aGlzLmxvb3BEZXN0cm95KCksIHRoaXMuc2xpZGVzID0gaS5jaGlsZHJlbigiLiIgKyBzLnNsaWRlQ2xhc3MpKTsKICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5zbGlkZXMubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKGUgPD0gMCkgdGhpcy5wcmVwZW5kU2xpZGUodCk7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChlID49IHIpIHRoaXMuYXBwZW5kU2xpZGUodCk7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gYSA+IGUgPyBhICsgMSA6IGEsIGwgPSBbXSwgZCA9IHIgLSAxOyBkID49IGU7IGQgLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHRoaXMuc2xpZGVzLmVxKGQpOwogICAgICAgICAgICAgICAgICAgICAgICBoLnJlbW92ZSgpLCBsLnVuc2hpZnQoaCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiB0ICYmICJsZW5ndGgiIGluIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCB0Lmxlbmd0aDsgcCArPSAxKSB0W3BdICYmIGkuYXBwZW5kKHRbcF0pOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gYSA+IGUgPyBhICsgdC5sZW5ndGggOiBhCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkuYXBwZW5kKHQpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgbC5sZW5ndGg7IGMgKz0gMSkgaS5hcHBlbmQobFtjXSk7CiAgICAgICAgICAgICAgICAgICAgcy5sb29wICYmIHRoaXMubG9vcENyZWF0ZSgpLCBzLm9ic2VydmVyICYmIG8ub2JzZXJ2ZXIgfHwgdGhpcy51cGRhdGUoKSwgcy5sb29wID8gdGhpcy5zbGlkZVRvKG4gKyB0aGlzLmxvb3BlZFNsaWRlcywgMCwgITEpIDogdGhpcy5zbGlkZVRvKG4sIDAsICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICByZW1vdmVTbGlkZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy4kd3JhcHBlckVsLAogICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmFjdGl2ZUluZGV4OwogICAgICAgICAgICAgICAgdC5sb29wICYmIChzIC09IHRoaXMubG9vcGVkU2xpZGVzLCB0aGlzLmxvb3BEZXN0cm95KCksIHRoaXMuc2xpZGVzID0gaS5jaGlsZHJlbigiLiIgKyB0LnNsaWRlQ2xhc3MpKTsKICAgICAgICAgICAgICAgIHZhciBhLCByID0gczsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAibGVuZ3RoIiBpbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBlLmxlbmd0aDsgbiArPSAxKSBhID0gZVtuXSwgdGhpcy5zbGlkZXNbYV0gJiYgdGhpcy5zbGlkZXMuZXEoYSkucmVtb3ZlKCksIGEgPCByICYmIChyIC09IDEpOwogICAgICAgICAgICAgICAgICAgIHIgPSBNYXRoLm1heChyLCAwKQogICAgICAgICAgICAgICAgfSBlbHNlIGEgPSBlLCB0aGlzLnNsaWRlc1thXSAmJiB0aGlzLnNsaWRlcy5lcShhKS5yZW1vdmUoKSwgYSA8IHIgJiYgKHIgLT0gMSksIHIgPSBNYXRoLm1heChyLCAwKTsKICAgICAgICAgICAgICAgIHQubG9vcCAmJiB0aGlzLmxvb3BDcmVhdGUoKSwgdC5vYnNlcnZlciAmJiBvLm9ic2VydmVyIHx8IHRoaXMudXBkYXRlKCksIHQubG9vcCA/IHRoaXMuc2xpZGVUbyhyICsgdGhpcy5sb29wZWRTbGlkZXMsIDAsICExKSA6IHRoaXMuc2xpZGVUbyhyLCAwLCAhMSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVtb3ZlQWxsU2xpZGVzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBbXSwgdCA9IDA7IHQgPCB0aGlzLnNsaWRlcy5sZW5ndGg7IHQgKz0gMSkgZS5wdXNoKHQpOwogICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVTbGlkZShlKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBJID0gKG0gPSB0Lm5hdmlnYXRvci5wbGF0Zm9ybSwgZyA9IHQubmF2aWdhdG9yLnVzZXJBZ2VudCwgYiA9IHsKICAgICAgICAgICAgaW9zOiAhMSwKICAgICAgICAgICAgYW5kcm9pZDogITEsCiAgICAgICAgICAgIGFuZHJvaWRDaHJvbWU6ICExLAogICAgICAgICAgICBkZXNrdG9wOiAhMSwKICAgICAgICAgICAgaXBob25lOiAhMSwKICAgICAgICAgICAgaXBvZDogITEsCiAgICAgICAgICAgIGlwYWQ6ICExLAogICAgICAgICAgICBlZGdlOiAhMSwKICAgICAgICAgICAgaWU6ICExLAogICAgICAgICAgICBmaXJlZm94OiAhMSwKICAgICAgICAgICAgbWFjb3M6ICExLAogICAgICAgICAgICB3aW5kb3dzOiAhMSwKICAgICAgICAgICAgY29yZG92YTogISghdC5jb3Jkb3ZhICYmICF0LnBob25lZ2FwKSwKICAgICAgICAgICAgcGhvbmVnYXA6ICEoIXQuY29yZG92YSAmJiAhdC5waG9uZWdhcCksCiAgICAgICAgICAgIGVsZWN0cm9uOiAhMQogICAgICAgIH0sIHcgPSB0LnNjcmVlbi53aWR0aCwgeSA9IHQuc2NyZWVuLmhlaWdodCwgeCA9IGcubWF0Y2goLyhBbmRyb2lkKTs/W1xzXC9dKyhbXGQuXSspPy8pLCBUID0gZy5tYXRjaCgvKGlQYWQpLipPU1xzKFtcZF9dKykvKSwgRSA9IGcubWF0Y2goLyhpUG9kKSguKk9TXHMoW1xkX10rKSk/LyksIFMgPSAhVCAmJiBnLm1hdGNoKC8oaVBob25lXHNPU3xpT1MpXHMoW1xkX10rKS8pLCBDID0gZy5pbmRleE9mKCJNU0lFICIpID49IDAgfHwgZy5pbmRleE9mKCJUcmlkZW50LyIpID49IDAsIE0gPSBnLmluZGV4T2YoIkVkZ2UvIikgPj0gMCwgUCA9IGcuaW5kZXhPZigiR2Vja28vIikgPj0gMCAmJiBnLmluZGV4T2YoIkZpcmVmb3gvIikgPj0gMCwgeiA9ICJXaW4zMiIgPT09IG0sIGsgPSBnLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiZWxlY3Ryb24iKSA+PSAwLCAkID0gIk1hY0ludGVsIiA9PT0gbSwgIVQgJiYgJCAmJiBvLnRvdWNoICYmICgxMDI0ID09PSB3ICYmIDEzNjYgPT09IHkgfHwgODM0ID09PSB3ICYmIDExOTQgPT09IHkgfHwgODM0ID09PSB3ICYmIDExMTIgPT09IHkgfHwgNzY4ID09PSB3ICYmIDEwMjQgPT09IHkpICYmIChUID0gZy5tYXRjaCgvKFZlcnNpb24pXC8oW1xkLl0rKS8pLCAkID0gITEpLCBiLmllID0gQywgYi5lZGdlID0gTSwgYi5maXJlZm94ID0gUCwgeCAmJiAheiAmJiAoYi5vcyA9ICJhbmRyb2lkIiwgYi5vc1ZlcnNpb24gPSB4WzJdLCBiLmFuZHJvaWQgPSAhMCwgYi5hbmRyb2lkQ2hyb21lID0gZy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImNocm9tZSIpID49IDApLCAoVCB8fCBTIHx8IEUpICYmIChiLm9zID0gImlvcyIsIGIuaW9zID0gITApLCBTICYmICFFICYmIChiLm9zVmVyc2lvbiA9IFNbMl0ucmVwbGFjZSgvXy9nLCAiLiIpLCBiLmlwaG9uZSA9ICEwKSwgVCAmJiAoYi5vc1ZlcnNpb24gPSBUWzJdLnJlcGxhY2UoL18vZywgIi4iKSwgYi5pcGFkID0gITApLCBFICYmIChiLm9zVmVyc2lvbiA9IEVbM10gPyBFWzNdLnJlcGxhY2UoL18vZywgIi4iKSA6IG51bGwsIGIuaXBvZCA9ICEwKSwgYi5pb3MgJiYgYi5vc1ZlcnNpb24gJiYgZy5pbmRleE9mKCJWZXJzaW9uLyIpID49IDAgJiYgIjEwIiA9PT0gYi5vc1ZlcnNpb24uc3BsaXQoIi4iKVswXSAmJiAoYi5vc1ZlcnNpb24gPSBnLnRvTG93ZXJDYXNlKCkuc3BsaXQoInZlcnNpb24vIilbMV0uc3BsaXQoIiAiKVswXSksIGIud2ViVmlldyA9ICEoIShTIHx8IFQgfHwgRSkgfHwgIWcubWF0Y2goLy4qQXBwbGVXZWJLaXQoPyEuKlNhZmFyaSkvaSkgJiYgIXQubmF2aWdhdG9yLnN0YW5kYWxvbmUpIHx8IHQubWF0Y2hNZWRpYSAmJiB0Lm1hdGNoTWVkaWEoIihkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpIikubWF0Y2hlcywgYi53ZWJ2aWV3ID0gYi53ZWJWaWV3LCBiLnN0YW5kYWxvbmUgPSBiLndlYlZpZXcsIGIuZGVza3RvcCA9ICEoYi5pb3MgfHwgYi5hbmRyb2lkKSB8fCBrLCBiLmRlc2t0b3AgJiYgKGIuZWxlY3Ryb24gPSBrLCBiLm1hY29zID0gJCwgYi53aW5kb3dzID0geiwgYi5tYWNvcyAmJiAoYi5vcyA9ICJtYWNvcyIpLCBiLndpbmRvd3MgJiYgKGIub3MgPSAid2luZG93cyIpKSwgYi5waXhlbFJhdGlvID0gdC5kZXZpY2VQaXhlbFJhdGlvIHx8IDEsIGIpOwoKICAgIGZ1bmN0aW9uIEQoaSkgewogICAgICAgIHZhciBhID0gdGhpcy50b3VjaEV2ZW50c0RhdGEsCiAgICAgICAgICAgIHIgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgbyA9IHRoaXMudG91Y2hlczsKICAgICAgICBpZiAoIXRoaXMuYW5pbWF0aW5nIHx8ICFyLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikgewogICAgICAgICAgICB2YXIgbCA9IGk7CiAgICAgICAgICAgIGwub3JpZ2luYWxFdmVudCAmJiAobCA9IGwub3JpZ2luYWxFdmVudCk7CiAgICAgICAgICAgIHZhciBkID0gcyhsLnRhcmdldCk7CiAgICAgICAgICAgIGlmICgoIndyYXBwZXIiICE9PSByLnRvdWNoRXZlbnRzVGFyZ2V0IHx8IGQuY2xvc2VzdCh0aGlzLndyYXBwZXJFbCkubGVuZ3RoKSAmJiAoYS5pc1RvdWNoRXZlbnQgPSAidG91Y2hzdGFydCIgPT09IGwudHlwZSwgKGEuaXNUb3VjaEV2ZW50IHx8ICEoIndoaWNoIiBpbiBsKSB8fCAzICE9PSBsLndoaWNoKSAmJiAhKCFhLmlzVG91Y2hFdmVudCAmJiAiYnV0dG9uIiBpbiBsICYmIGwuYnV0dG9uID4gMCB8fCBhLmlzVG91Y2hlZCAmJiBhLmlzTW92ZWQpKSkKICAgICAgICAgICAgICAgIGlmIChyLm5vU3dpcGluZyAmJiBkLmNsb3Nlc3Qoci5ub1N3aXBpbmdTZWxlY3RvciA/IHIubm9Td2lwaW5nU2VsZWN0b3IgOiAiLiIgKyByLm5vU3dpcGluZ0NsYXNzKVswXSkgdGhpcy5hbGxvd0NsaWNrID0gITA7CiAgICAgICAgICAgICAgICBlbHNlIGlmICghci5zd2lwZUhhbmRsZXIgfHwgZC5jbG9zZXN0KHIuc3dpcGVIYW5kbGVyKVswXSkgewogICAgICAgICAgICAgICAgby5jdXJyZW50WCA9ICJ0b3VjaHN0YXJ0IiA9PT0gbC50eXBlID8gbC50YXJnZXRUb3VjaGVzWzBdLnBhZ2VYIDogbC5wYWdlWCwgby5jdXJyZW50WSA9ICJ0b3VjaHN0YXJ0IiA9PT0gbC50eXBlID8gbC50YXJnZXRUb3VjaGVzWzBdLnBhZ2VZIDogbC5wYWdlWTsKICAgICAgICAgICAgICAgIHZhciBoID0gby5jdXJyZW50WCwKICAgICAgICAgICAgICAgICAgICBwID0gby5jdXJyZW50WSwKICAgICAgICAgICAgICAgICAgICBjID0gci5lZGdlU3dpcGVEZXRlY3Rpb24gfHwgci5pT1NFZGdlU3dpcGVEZXRlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgdSA9IHIuZWRnZVN3aXBlVGhyZXNob2xkIHx8IHIuaU9TRWRnZVN3aXBlVGhyZXNob2xkOwogICAgICAgICAgICAgICAgaWYgKCFjIHx8ICEoaCA8PSB1IHx8IGggPj0gdC5zY3JlZW4ud2lkdGggLSB1KSkgewogICAgICAgICAgICAgICAgICAgIGlmIChuLmV4dGVuZChhLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RvdWNoZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb3ZlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1RvdWNoQ2FsbGJhY2tzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1vdmluZzogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvLnN0YXJ0WCA9IGgsIG8uc3RhcnRZID0gcCwgYS50b3VjaFN0YXJ0VGltZSA9IG4ubm93KCksIHRoaXMuYWxsb3dDbGljayA9ICEwLCB0aGlzLnVwZGF0ZVNpemUoKSwgdGhpcy5zd2lwZURpcmVjdGlvbiA9IHZvaWQgMCwgci50aHJlc2hvbGQgPiAwICYmIChhLmFsbG93VGhyZXNob2xkTW92ZSA9ICExKSwgInRvdWNoc3RhcnQiICE9PSBsLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgZC5pcyhhLmZvcm1FbGVtZW50cykgJiYgKHYgPSAhMSksIGUuYWN0aXZlRWxlbWVudCAmJiBzKGUuYWN0aXZlRWxlbWVudCkuaXMoYS5mb3JtRWxlbWVudHMpICYmIGUuYWN0aXZlRWxlbWVudCAhPT0gZFswXSAmJiBlLmFjdGl2ZUVsZW1lbnQuYmx1cigpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IHYgJiYgdGhpcy5hbGxvd1RvdWNoTW92ZSAmJiByLnRvdWNoU3RhcnRQcmV2ZW50RGVmYXVsdDsKICAgICAgICAgICAgICAgICAgICAgICAgKHIudG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQgfHwgZikgJiYgbC5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgidG91Y2hTdGFydCIsIGwpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gTyh0KSB7CiAgICAgICAgdmFyIGkgPSB0aGlzLnRvdWNoRXZlbnRzRGF0YSwKICAgICAgICAgICAgYSA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICByID0gdGhpcy50b3VjaGVzLAogICAgICAgICAgICBvID0gdGhpcy5ydGxUcmFuc2xhdGUsCiAgICAgICAgICAgIGwgPSB0OwogICAgICAgIGlmIChsLm9yaWdpbmFsRXZlbnQgJiYgKGwgPSBsLm9yaWdpbmFsRXZlbnQpLCBpLmlzVG91Y2hlZCkgewogICAgICAgICAgICBpZiAoIWkuaXNUb3VjaEV2ZW50IHx8ICJtb3VzZW1vdmUiICE9PSBsLnR5cGUpIHsKICAgICAgICAgICAgICAgIHZhciBkID0gInRvdWNobW92ZSIgPT09IGwudHlwZSAmJiBsLnRhcmdldFRvdWNoZXMgJiYgKGwudGFyZ2V0VG91Y2hlc1swXSB8fCBsLmNoYW5nZWRUb3VjaGVzWzBdKSwKICAgICAgICAgICAgICAgICAgICBoID0gInRvdWNobW92ZSIgPT09IGwudHlwZSA/IGQucGFnZVggOiBsLnBhZ2VYLAogICAgICAgICAgICAgICAgICAgIHAgPSAidG91Y2htb3ZlIiA9PT0gbC50eXBlID8gZC5wYWdlWSA6IGwucGFnZVk7CiAgICAgICAgICAgICAgICBpZiAobC5wcmV2ZW50ZWRCeU5lc3RlZFN3aXBlcikgcmV0dXJuIHIuc3RhcnRYID0gaCwgdm9pZChyLnN0YXJ0WSA9IHApOwogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFsbG93VG91Y2hNb3ZlKSByZXR1cm4gdGhpcy5hbGxvd0NsaWNrID0gITEsIHZvaWQoaS5pc1RvdWNoZWQgJiYgKG4uZXh0ZW5kKHIsIHsKICAgICAgICAgICAgICAgICAgICBzdGFydFg6IGgsCiAgICAgICAgICAgICAgICAgICAgc3RhcnRZOiBwLAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRYOiBoLAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRZOiBwCiAgICAgICAgICAgICAgICB9KSwgaS50b3VjaFN0YXJ0VGltZSA9IG4ubm93KCkpKTsKICAgICAgICAgICAgICAgIGlmIChpLmlzVG91Y2hFdmVudCAmJiBhLnRvdWNoUmVsZWFzZU9uRWRnZXMgJiYgIWEubG9vcCkKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZlcnRpY2FsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPCByLnN0YXJ0WSAmJiB0aGlzLnRyYW5zbGF0ZSA8PSB0aGlzLm1heFRyYW5zbGF0ZSgpIHx8IHAgPiByLnN0YXJ0WSAmJiB0aGlzLnRyYW5zbGF0ZSA+PSB0aGlzLm1pblRyYW5zbGF0ZSgpKSByZXR1cm4gaS5pc1RvdWNoZWQgPSAhMSwgdm9pZChpLmlzTW92ZWQgPSAhMSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGggPCByLnN0YXJ0WCAmJiB0aGlzLnRyYW5zbGF0ZSA8PSB0aGlzLm1heFRyYW5zbGF0ZSgpIHx8IGggPiByLnN0YXJ0WCAmJiB0aGlzLnRyYW5zbGF0ZSA+PSB0aGlzLm1pblRyYW5zbGF0ZSgpKSByZXR1cm47CiAgICAgICAgICAgICAgICBpZiAoaS5pc1RvdWNoRXZlbnQgJiYgZS5hY3RpdmVFbGVtZW50ICYmIGwudGFyZ2V0ID09PSBlLmFjdGl2ZUVsZW1lbnQgJiYgcyhsLnRhcmdldCkuaXMoaS5mb3JtRWxlbWVudHMpKSByZXR1cm4gaS5pc01vdmVkID0gITAsIHZvaWQodGhpcy5hbGxvd0NsaWNrID0gITEpOwogICAgICAgICAgICAgICAgaWYgKGkuYWxsb3dUb3VjaENhbGxiYWNrcyAmJiB0aGlzLmVtaXQoInRvdWNoTW92ZSIsIGwpLCAhKGwudGFyZ2V0VG91Y2hlcyAmJiBsLnRhcmdldFRvdWNoZXMubGVuZ3RoID4gMSkpIHsKICAgICAgICAgICAgICAgICAgICByLmN1cnJlbnRYID0gaCwgci5jdXJyZW50WSA9IHA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSByLmN1cnJlbnRYIC0gci5zdGFydFgsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSByLmN1cnJlbnRZIC0gci5zdGFydFk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEodGhpcy5wYXJhbXMudGhyZXNob2xkICYmIE1hdGguc3FydChNYXRoLnBvdyhjLCAyKSArIE1hdGgucG93KHUsIDIpKSA8IHRoaXMucGFyYW1zLnRocmVzaG9sZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHY7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGkuaXNTY3JvbGxpbmcpIHRoaXMuaXNIb3Jpem9udGFsKCkgJiYgci5jdXJyZW50WSA9PT0gci5zdGFydFkgfHwgdGhpcy5pc1ZlcnRpY2FsKCkgJiYgci5jdXJyZW50WCA9PT0gci5zdGFydFggPyBpLmlzU2Nyb2xsaW5nID0gITEgOiBjICogYyArIHUgKiB1ID49IDI1ICYmICh2ID0gMTgwICogTWF0aC5hdGFuMihNYXRoLmFicyh1KSwgTWF0aC5hYnMoYykpIC8gTWF0aC5QSSwgaS5pc1Njcm9sbGluZyA9IHRoaXMuaXNIb3Jpem9udGFsKCkgPyB2ID4gYS50b3VjaEFuZ2xlIDogOTAgLSB2ID4gYS50b3VjaEFuZ2xlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuaXNTY3JvbGxpbmcgJiYgdGhpcy5lbWl0KCJ0b3VjaE1vdmVPcHBvc2l0ZSIsIGwpLCB2b2lkIDAgPT09IGkuc3RhcnRNb3ZpbmcgJiYgKHIuY3VycmVudFggPT09IHIuc3RhcnRYICYmIHIuY3VycmVudFkgPT09IHIuc3RhcnRZIHx8IChpLnN0YXJ0TW92aW5nID0gITApKSwgaS5pc1Njcm9sbGluZykgaS5pc1RvdWNoZWQgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaS5zdGFydE1vdmluZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd0NsaWNrID0gITEsIGEuY3NzTW9kZSB8fCBsLnByZXZlbnREZWZhdWx0KCksIGEudG91Y2hNb3ZlU3RvcFByb3BhZ2F0aW9uICYmICFhLm5lc3RlZCAmJiBsLnN0b3BQcm9wYWdhdGlvbigpLCBpLmlzTW92ZWQgfHwgKGEubG9vcCAmJiB0aGlzLmxvb3BGaXgoKSwgaS5zdGFydFRyYW5zbGF0ZSA9IHRoaXMuZ2V0VHJhbnNsYXRlKCksIHRoaXMuc2V0VHJhbnNpdGlvbigwKSwgdGhpcy5hbmltYXRpbmcgJiYgdGhpcy4kd3JhcHBlckVsLnRyaWdnZXIoIndlYmtpdFRyYW5zaXRpb25FbmQgdHJhbnNpdGlvbmVuZCIpLCBpLmFsbG93TW9tZW50dW1Cb3VuY2UgPSAhMSwgIWEuZ3JhYkN1cnNvciB8fCAhMCAhPT0gdGhpcy5hbGxvd1NsaWRlTmV4dCAmJiAhMCAhPT0gdGhpcy5hbGxvd1NsaWRlUHJldiB8fCB0aGlzLnNldEdyYWJDdXJzb3IoITApLCB0aGlzLmVtaXQoInNsaWRlckZpcnN0TW92ZSIsIGwpKSwgdGhpcy5lbWl0KCJzbGlkZXJNb3ZlIiwgbCksIGkuaXNNb3ZlZCA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSB0aGlzLmlzSG9yaXpvbnRhbCgpID8gYyA6IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmRpZmYgPSBmLCBmICo9IGEudG91Y2hSYXRpbywgbyAmJiAoZiA9IC1mKSwgdGhpcy5zd2lwZURpcmVjdGlvbiA9IGYgPiAwID8gInByZXYiIDogIm5leHQiLCBpLmN1cnJlbnRUcmFuc2xhdGUgPSBmICsgaS5zdGFydFRyYW5zbGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGEucmVzaXN0YW5jZVJhdGlvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudG91Y2hSZWxlYXNlT25FZGdlcyAmJiAoZyA9IDApLCBmID4gMCAmJiBpLmN1cnJlbnRUcmFuc2xhdGUgPiB0aGlzLm1pblRyYW5zbGF0ZSgpID8gKG0gPSAhMSwgYS5yZXNpc3RhbmNlICYmIChpLmN1cnJlbnRUcmFuc2xhdGUgPSB0aGlzLm1pblRyYW5zbGF0ZSgpIC0gMSArIE1hdGgucG93KC10aGlzLm1pblRyYW5zbGF0ZSgpICsgaS5zdGFydFRyYW5zbGF0ZSArIGYsIGcpKSkgOiBmIDwgMCAmJiBpLmN1cnJlbnRUcmFuc2xhdGUgPCB0aGlzLm1heFRyYW5zbGF0ZSgpICYmIChtID0gITEsIGEucmVzaXN0YW5jZSAmJiAoaS5jdXJyZW50VHJhbnNsYXRlID0gdGhpcy5tYXhUcmFuc2xhdGUoKSArIDEgLSBNYXRoLnBvdyh0aGlzLm1heFRyYW5zbGF0ZSgpIC0gaS5zdGFydFRyYW5zbGF0ZSAtIGYsIGcpKSksIG0gJiYgKGwucHJldmVudGVkQnlOZXN0ZWRTd2lwZXIgPSAhMCksICF0aGlzLmFsbG93U2xpZGVOZXh0ICYmICJuZXh0IiA9PT0gdGhpcy5zd2lwZURpcmVjdGlvbiAmJiBpLmN1cnJlbnRUcmFuc2xhdGUgPCBpLnN0YXJ0VHJhbnNsYXRlICYmIChpLmN1cnJlbnRUcmFuc2xhdGUgPSBpLnN0YXJ0VHJhbnNsYXRlKSwgIXRoaXMuYWxsb3dTbGlkZVByZXYgJiYgInByZXYiID09PSB0aGlzLnN3aXBlRGlyZWN0aW9uICYmIGkuY3VycmVudFRyYW5zbGF0ZSA+IGkuc3RhcnRUcmFuc2xhdGUgJiYgKGkuY3VycmVudFRyYW5zbGF0ZSA9IGkuc3RhcnRUcmFuc2xhdGUpLCBhLnRocmVzaG9sZCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShNYXRoLmFicyhmKSA+IGEudGhyZXNob2xkIHx8IGkuYWxsb3dUaHJlc2hvbGRNb3ZlKSkgcmV0dXJuIHZvaWQoaS5jdXJyZW50VHJhbnNsYXRlID0gaS5zdGFydFRyYW5zbGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpLmFsbG93VGhyZXNob2xkTW92ZSkgcmV0dXJuIGkuYWxsb3dUaHJlc2hvbGRNb3ZlID0gITAsIHIuc3RhcnRYID0gci5jdXJyZW50WCwgci5zdGFydFkgPSByLmN1cnJlbnRZLCBpLmN1cnJlbnRUcmFuc2xhdGUgPSBpLnN0YXJ0VHJhbnNsYXRlLCB2b2lkKHIuZGlmZiA9IHRoaXMuaXNIb3Jpem9udGFsKCkgPyByLmN1cnJlbnRYIC0gci5zdGFydFggOiByLmN1cnJlbnRZIC0gci5zdGFydFkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmZvbGxvd0ZpbmdlciAmJiAhYS5jc3NNb2RlICYmICgoYS5mcmVlTW9kZSB8fCBhLndhdGNoU2xpZGVzUHJvZ3Jlc3MgfHwgYS53YXRjaFNsaWRlc1Zpc2liaWxpdHkpICYmICh0aGlzLnVwZGF0ZUFjdGl2ZUluZGV4KCksIHRoaXMudXBkYXRlU2xpZGVzQ2xhc3NlcygpKSwgYS5mcmVlTW9kZSAmJiAoMCA9PT0gaS52ZWxvY2l0aWVzLmxlbmd0aCAmJiBpLnZlbG9jaXRpZXMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJbdGhpcy5pc0hvcml6b250YWwoKSA/ICJzdGFydFgiIDogInN0YXJ0WSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IGkudG91Y2hTdGFydFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLnZlbG9jaXRpZXMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJbdGhpcy5pc0hvcml6b250YWwoKSA/ICJjdXJyZW50WCIgOiAiY3VycmVudFkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBuLm5vdygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMudXBkYXRlUHJvZ3Jlc3MoaS5jdXJyZW50VHJhbnNsYXRlKSwgdGhpcy5zZXRUcmFuc2xhdGUoaS5jdXJyZW50VHJhbnNsYXRlKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpLnN0YXJ0TW92aW5nICYmIGkuaXNTY3JvbGxpbmcgJiYgdGhpcy5lbWl0KCJ0b3VjaE1vdmVPcHBvc2l0ZSIsIGwpCiAgICB9CgogICAgZnVuY3Rpb24gQShlKSB7CiAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICBpID0gdC50b3VjaEV2ZW50c0RhdGEsCiAgICAgICAgICAgIHMgPSB0LnBhcmFtcywKICAgICAgICAgICAgYSA9IHQudG91Y2hlcywKICAgICAgICAgICAgciA9IHQucnRsVHJhbnNsYXRlLAogICAgICAgICAgICBvID0gdC4kd3JhcHBlckVsLAogICAgICAgICAgICBsID0gdC5zbGlkZXNHcmlkLAogICAgICAgICAgICBkID0gdC5zbmFwR3JpZCwKICAgICAgICAgICAgaCA9IGU7CiAgICAgICAgaWYgKGgub3JpZ2luYWxFdmVudCAmJiAoaCA9IGgub3JpZ2luYWxFdmVudCksIGkuYWxsb3dUb3VjaENhbGxiYWNrcyAmJiB0LmVtaXQoInRvdWNoRW5kIiwgaCksIGkuYWxsb3dUb3VjaENhbGxiYWNrcyA9ICExLCAhaS5pc1RvdWNoZWQpIHJldHVybiBpLmlzTW92ZWQgJiYgcy5ncmFiQ3Vyc29yICYmIHQuc2V0R3JhYkN1cnNvcighMSksIGkuaXNNb3ZlZCA9ICExLCB2b2lkKGkuc3RhcnRNb3ZpbmcgPSAhMSk7CiAgICAgICAgcy5ncmFiQ3Vyc29yICYmIGkuaXNNb3ZlZCAmJiBpLmlzVG91Y2hlZCAmJiAoITAgPT09IHQuYWxsb3dTbGlkZU5leHQgfHwgITAgPT09IHQuYWxsb3dTbGlkZVByZXYpICYmIHQuc2V0R3JhYkN1cnNvcighMSk7CiAgICAgICAgdmFyIHAsIGMgPSBuLm5vdygpLAogICAgICAgICAgICB1ID0gYyAtIGkudG91Y2hTdGFydFRpbWU7CiAgICAgICAgaWYgKHQuYWxsb3dDbGljayAmJiAodC51cGRhdGVDbGlja2VkU2xpZGUoaCksIHQuZW1pdCgidGFwIGNsaWNrIiwgaCksIHUgPCAzMDAgJiYgYyAtIGkubGFzdENsaWNrVGltZSA8IDMwMCAmJiB0LmVtaXQoImRvdWJsZVRhcCBkb3VibGVDbGljayIsIGgpKSwgaS5sYXN0Q2xpY2tUaW1lID0gbi5ub3coKSwgbi5uZXh0VGljaygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0LmRlc3Ryb3llZCB8fCAodC5hbGxvd0NsaWNrID0gITApCiAgICAgICAgICAgIH0pKSwgIWkuaXNUb3VjaGVkIHx8ICFpLmlzTW92ZWQgfHwgIXQuc3dpcGVEaXJlY3Rpb24gfHwgMCA9PT0gYS5kaWZmIHx8IGkuY3VycmVudFRyYW5zbGF0ZSA9PT0gaS5zdGFydFRyYW5zbGF0ZSkgcmV0dXJuIGkuaXNUb3VjaGVkID0gITEsIGkuaXNNb3ZlZCA9ICExLCB2b2lkKGkuc3RhcnRNb3ZpbmcgPSAhMSk7CiAgICAgICAgaWYgKGkuaXNUb3VjaGVkID0gITEsIGkuaXNNb3ZlZCA9ICExLCBpLnN0YXJ0TW92aW5nID0gITEsIHAgPSBzLmZvbGxvd0ZpbmdlciA/IHIgPyB0LnRyYW5zbGF0ZSA6IC10LnRyYW5zbGF0ZSA6IC1pLmN1cnJlbnRUcmFuc2xhdGUsICFzLmNzc01vZGUpCiAgICAgICAgICAgIGlmIChzLmZyZWVNb2RlKSB7CiAgICAgICAgICAgICAgICBpZiAocCA8IC10Lm1pblRyYW5zbGF0ZSgpKSByZXR1cm4gdm9pZCB0LnNsaWRlVG8odC5hY3RpdmVJbmRleCk7CiAgICAgICAgICAgICAgICBpZiAocCA+IC10Lm1heFRyYW5zbGF0ZSgpKSByZXR1cm4gdm9pZCh0LnNsaWRlcy5sZW5ndGggPCBkLmxlbmd0aCA/IHQuc2xpZGVUbyhkLmxlbmd0aCAtIDEpIDogdC5zbGlkZVRvKHQuc2xpZGVzLmxlbmd0aCAtIDEpKTsKICAgICAgICAgICAgICAgIGlmIChzLmZyZWVNb2RlTW9tZW50dW0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaS52ZWxvY2l0aWVzLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBpLnZlbG9jaXRpZXMucG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaS52ZWxvY2l0aWVzLnBvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHYucG9zaXRpb24gLSBmLnBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHYudGltZSAtIGYudGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC52ZWxvY2l0eSA9IG0gLyBnLCB0LnZlbG9jaXR5IC89IDIsIE1hdGguYWJzKHQudmVsb2NpdHkpIDwgcy5mcmVlTW9kZU1pbmltdW1WZWxvY2l0eSAmJiAodC52ZWxvY2l0eSA9IDApLCAoZyA+IDE1MCB8fCBuLm5vdygpIC0gdi50aW1lID4gMzAwKSAmJiAodC52ZWxvY2l0eSA9IDApCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHQudmVsb2NpdHkgPSAwOwogICAgICAgICAgICAgICAgICAgIHQudmVsb2NpdHkgKj0gcy5mcmVlTW9kZU1vbWVudHVtVmVsb2NpdHlSYXRpbywgaS52ZWxvY2l0aWVzLmxlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSAxZTMgKiBzLmZyZWVNb2RlTW9tZW50dW1SYXRpbywKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHQudmVsb2NpdHkgKiBiLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gdC50cmFuc2xhdGUgKyB3OwogICAgICAgICAgICAgICAgICAgIHIgJiYgKHkgPSAteSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHgsIFQsIEUgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgUyA9IDIwICogTWF0aC5hYnModC52ZWxvY2l0eSkgKiBzLmZyZWVNb2RlTW9tZW50dW1Cb3VuY2VSYXRpbzsKICAgICAgICAgICAgICAgICAgICBpZiAoeSA8IHQubWF4VHJhbnNsYXRlKCkpIHMuZnJlZU1vZGVNb21lbnR1bUJvdW5jZSA/ICh5ICsgdC5tYXhUcmFuc2xhdGUoKSA8IC1TICYmICh5ID0gdC5tYXhUcmFuc2xhdGUoKSAtIFMpLCB4ID0gdC5tYXhUcmFuc2xhdGUoKSwgRSA9ICEwLCBpLmFsbG93TW9tZW50dW1Cb3VuY2UgPSAhMCkgOiB5ID0gdC5tYXhUcmFuc2xhdGUoKSwgcy5sb29wICYmIHMuY2VudGVyZWRTbGlkZXMgJiYgKFQgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeSA+IHQubWluVHJhbnNsYXRlKCkpIHMuZnJlZU1vZGVNb21lbnR1bUJvdW5jZSA/ICh5IC0gdC5taW5UcmFuc2xhdGUoKSA+IFMgJiYgKHkgPSB0Lm1pblRyYW5zbGF0ZSgpICsgUyksIHggPSB0Lm1pblRyYW5zbGF0ZSgpLCBFID0gITAsIGkuYWxsb3dNb21lbnR1bUJvdW5jZSA9ICEwKSA6IHkgPSB0Lm1pblRyYW5zbGF0ZSgpLCBzLmxvb3AgJiYgcy5jZW50ZXJlZFNsaWRlcyAmJiAoVCA9ICEwKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzLmZyZWVNb2RlU3RpY2t5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIEMsIE0gPSAwOyBNIDwgZC5sZW5ndGg7IE0gKz0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW01dID4gLXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gTTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gLSh5ID0gTWF0aC5hYnMoZFtDXSAtIHkpIDwgTWF0aC5hYnMoZFtDIC0gMV0gLSB5KSB8fCAibmV4dCIgPT09IHQuc3dpcGVEaXJlY3Rpb24gPyBkW0NdIDogZFtDIC0gMV0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChUICYmIHQub25jZSgidHJhbnNpdGlvbkVuZCIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQubG9vcEZpeCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgMCAhPT0gdC52ZWxvY2l0eSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiA9IHIgPyBNYXRoLmFicygoLXkgLSB0LnRyYW5zbGF0ZSkgLyB0LnZlbG9jaXR5KSA6IE1hdGguYWJzKCh5IC0gdC50cmFuc2xhdGUpIC8gdC52ZWxvY2l0eSksIHMuZnJlZU1vZGVTdGlja3kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBQID0gTWF0aC5hYnMoKHIgPyAteSA6IHkpIC0gdC50cmFuc2xhdGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSB0LnNsaWRlc1NpemVzR3JpZFt0LmFjdGl2ZUluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBQIDwgeiA/IHMuc3BlZWQgOiBQIDwgMiAqIHogPyAxLjUgKiBzLnNwZWVkIDogMi41ICogcy5zcGVlZAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzLmZyZWVNb2RlU3RpY2t5KSByZXR1cm4gdm9pZCB0LnNsaWRlVG9DbG9zZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgcy5mcmVlTW9kZU1vbWVudHVtQm91bmNlICYmIEUgPyAodC51cGRhdGVQcm9ncmVzcyh4KSwgdC5zZXRUcmFuc2l0aW9uKGIpLCB0LnNldFRyYW5zbGF0ZSh5KSwgdC50cmFuc2l0aW9uU3RhcnQoITAsIHQuc3dpcGVEaXJlY3Rpb24pLCB0LmFuaW1hdGluZyA9ICEwLCBvLnRyYW5zaXRpb25FbmQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0ICYmICF0LmRlc3Ryb3llZCAmJiBpLmFsbG93TW9tZW50dW1Cb3VuY2UgJiYgKHQuZW1pdCgibW9tZW50dW1Cb3VuY2UiKSwgdC5zZXRUcmFuc2l0aW9uKHMuc3BlZWQpLCB0LnNldFRyYW5zbGF0ZSh4KSwgby50cmFuc2l0aW9uRW5kKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgIXQuZGVzdHJveWVkICYmIHQudHJhbnNpdGlvbkVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgICAgICB9KSkpIDogdC52ZWxvY2l0eSA/ICh0LnVwZGF0ZVByb2dyZXNzKHkpLCB0LnNldFRyYW5zaXRpb24oYiksIHQuc2V0VHJhbnNsYXRlKHkpLCB0LnRyYW5zaXRpb25TdGFydCghMCwgdC5zd2lwZURpcmVjdGlvbiksIHQuYW5pbWF0aW5nIHx8ICh0LmFuaW1hdGluZyA9ICEwLCBvLnRyYW5zaXRpb25FbmQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0ICYmICF0LmRlc3Ryb3llZCAmJiB0LnRyYW5zaXRpb25FbmQoKQogICAgICAgICAgICAgICAgICAgIH0pKSkpIDogdC51cGRhdGVQcm9ncmVzcyh5KSwgdC51cGRhdGVBY3RpdmVJbmRleCgpLCB0LnVwZGF0ZVNsaWRlc0NsYXNzZXMoKQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzLmZyZWVNb2RlU3RpY2t5KSByZXR1cm4gdm9pZCB0LnNsaWRlVG9DbG9zZXN0KCk7CiAgICAgICAgICAgICAgICAoIXMuZnJlZU1vZGVNb21lbnR1bSB8fCB1ID49IHMubG9uZ1N3aXBlc01zKSAmJiAodC51cGRhdGVQcm9ncmVzcygpLCB0LnVwZGF0ZUFjdGl2ZUluZGV4KCksIHQudXBkYXRlU2xpZGVzQ2xhc3NlcygpKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDAsICQgPSB0LnNsaWRlc1NpemVzR3JpZFswXSwgTCA9IDA7IEwgPCBsLmxlbmd0aDsgTCArPSBMIDwgcy5zbGlkZXNQZXJHcm91cFNraXAgPyAxIDogcy5zbGlkZXNQZXJHcm91cCkgewogICAgICAgICAgICAgICAgICAgIHZhciBJID0gTCA8IHMuc2xpZGVzUGVyR3JvdXBTa2lwIC0gMSA/IDEgOiBzLnNsaWRlc1Blckdyb3VwOwogICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gbFtMICsgSV0gPyBwID49IGxbTF0gJiYgcCA8IGxbTCArIEldICYmIChrID0gTCwgJCA9IGxbTCArIEldIC0gbFtMXSkgOiBwID49IGxbTF0gJiYgKGsgPSBMLCAkID0gbFtsLmxlbmd0aCAtIDFdIC0gbFtsLmxlbmd0aCAtIDJdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIEQgPSAocCAtIGxba10pIC8gJCwKICAgICAgICAgICAgICAgICAgICBPID0gayA8IHMuc2xpZGVzUGVyR3JvdXBTa2lwIC0gMSA/IDEgOiBzLnNsaWRlc1Blckdyb3VwOwogICAgICAgICAgICAgICAgaWYgKHUgPiBzLmxvbmdTd2lwZXNNcykgewogICAgICAgICAgICAgICAgICAgIGlmICghcy5sb25nU3dpcGVzKSByZXR1cm4gdm9pZCB0LnNsaWRlVG8odC5hY3RpdmVJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIm5leHQiID09PSB0LnN3aXBlRGlyZWN0aW9uICYmIChEID49IHMubG9uZ1N3aXBlc1JhdGlvID8gdC5zbGlkZVRvKGsgKyBPKSA6IHQuc2xpZGVUbyhrKSksICJwcmV2IiA9PT0gdC5zd2lwZURpcmVjdGlvbiAmJiAoRCA+IDEgLSBzLmxvbmdTd2lwZXNSYXRpbyA/IHQuc2xpZGVUbyhrICsgTykgOiB0LnNsaWRlVG8oaykpCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICghcy5zaG9ydFN3aXBlcykgcmV0dXJuIHZvaWQgdC5zbGlkZVRvKHQuYWN0aXZlSW5kZXgpOwogICAgICAgICAgICAgICAgICAgIHQubmF2aWdhdGlvbiAmJiAoaC50YXJnZXQgPT09IHQubmF2aWdhdGlvbi5uZXh0RWwgfHwgaC50YXJnZXQgPT09IHQubmF2aWdhdGlvbi5wcmV2RWwpID8gaC50YXJnZXQgPT09IHQubmF2aWdhdGlvbi5uZXh0RWwgPyB0LnNsaWRlVG8oayArIE8pIDogdC5zbGlkZVRvKGspIDogKCJuZXh0IiA9PT0gdC5zd2lwZURpcmVjdGlvbiAmJiB0LnNsaWRlVG8oayArIE8pLCAicHJldiIgPT09IHQuc3dpcGVEaXJlY3Rpb24gJiYgdC5zbGlkZVRvKGspKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gRygpIHsKICAgICAgICB2YXIgZSA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICB0ID0gdGhpcy5lbDsKICAgICAgICBpZiAoIXQgfHwgMCAhPT0gdC5vZmZzZXRXaWR0aCkgewogICAgICAgICAgICBlLmJyZWFrcG9pbnRzICYmIHRoaXMuc2V0QnJlYWtwb2ludCgpOwogICAgICAgICAgICB2YXIgaSA9IHRoaXMuYWxsb3dTbGlkZU5leHQsCiAgICAgICAgICAgICAgICBzID0gdGhpcy5hbGxvd1NsaWRlUHJldiwKICAgICAgICAgICAgICAgIGEgPSB0aGlzLnNuYXBHcmlkOwogICAgICAgICAgICB0aGlzLmFsbG93U2xpZGVOZXh0ID0gITAsIHRoaXMuYWxsb3dTbGlkZVByZXYgPSAhMCwgdGhpcy51cGRhdGVTaXplKCksIHRoaXMudXBkYXRlU2xpZGVzKCksIHRoaXMudXBkYXRlU2xpZGVzQ2xhc3NlcygpLCAoImF1dG8iID09PSBlLnNsaWRlc1BlclZpZXcgfHwgZS5zbGlkZXNQZXJWaWV3ID4gMSkgJiYgdGhpcy5pc0VuZCAmJiAhdGhpcy5wYXJhbXMuY2VudGVyZWRTbGlkZXMgPyB0aGlzLnNsaWRlVG8odGhpcy5zbGlkZXMubGVuZ3RoIC0gMSwgMCwgITEsICEwKSA6IHRoaXMuc2xpZGVUbyh0aGlzLmFjdGl2ZUluZGV4LCAwLCAhMSwgITApLCB0aGlzLmF1dG9wbGF5ICYmIHRoaXMuYXV0b3BsYXkucnVubmluZyAmJiB0aGlzLmF1dG9wbGF5LnBhdXNlZCAmJiB0aGlzLmF1dG9wbGF5LnJ1bigpLCB0aGlzLmFsbG93U2xpZGVQcmV2ID0gcywgdGhpcy5hbGxvd1NsaWRlTmV4dCA9IGksIHRoaXMucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgYSAhPT0gdGhpcy5zbmFwR3JpZCAmJiB0aGlzLmNoZWNrT3ZlcmZsb3coKQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBIKGUpIHsKICAgICAgICB0aGlzLmFsbG93Q2xpY2sgfHwgKHRoaXMucGFyYW1zLnByZXZlbnRDbGlja3MgJiYgZS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLnBhcmFtcy5wcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb24gJiYgdGhpcy5hbmltYXRpbmcgJiYgKGUuc3RvcFByb3BhZ2F0aW9uKCksIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpKQogICAgfQoKICAgIGZ1bmN0aW9uIEIoKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzLndyYXBwZXJFbDsKICAgICAgICB0aGlzLnByZXZpb3VzVHJhbnNsYXRlID0gdGhpcy50cmFuc2xhdGUsIHRoaXMudHJhbnNsYXRlID0gdGhpcy5pc0hvcml6b250YWwoKSA/IC1lLnNjcm9sbExlZnQgOiAtZS5zY3JvbGxUb3AsIC0wID09PSB0aGlzLnRyYW5zbGF0ZSAmJiAodGhpcy50cmFuc2xhdGUgPSAwKSwgdGhpcy51cGRhdGVBY3RpdmVJbmRleCgpLCB0aGlzLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTsKICAgICAgICB2YXIgdCA9IHRoaXMubWF4VHJhbnNsYXRlKCkgLSB0aGlzLm1pblRyYW5zbGF0ZSgpOwogICAgICAgICgwID09PSB0ID8gMCA6ICh0aGlzLnRyYW5zbGF0ZSAtIHRoaXMubWluVHJhbnNsYXRlKCkpIC8gdCkgIT09IHRoaXMucHJvZ3Jlc3MgJiYgdGhpcy51cGRhdGVQcm9ncmVzcyh0aGlzLnRyYW5zbGF0ZSksIHRoaXMuZW1pdCgic2V0VHJhbnNsYXRlIiwgdGhpcy50cmFuc2xhdGUsICExKQogICAgfQogICAgdmFyIE4gPSAhMTsKCiAgICBmdW5jdGlvbiBYKCkge30KICAgIHZhciBWID0gewogICAgICAgICAgICBpbml0OiAhMCwKICAgICAgICAgICAgZGlyZWN0aW9uOiAiaG9yaXpvbnRhbCIsCiAgICAgICAgICAgIHRvdWNoRXZlbnRzVGFyZ2V0OiAiY29udGFpbmVyIiwKICAgICAgICAgICAgaW5pdGlhbFNsaWRlOiAwLAogICAgICAgICAgICBzcGVlZDogMzAwLAogICAgICAgICAgICBjc3NNb2RlOiAhMSwKICAgICAgICAgICAgdXBkYXRlT25XaW5kb3dSZXNpemU6ICEwLAogICAgICAgICAgICBwcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb246ICExLAogICAgICAgICAgICBlZGdlU3dpcGVEZXRlY3Rpb246ICExLAogICAgICAgICAgICBlZGdlU3dpcGVUaHJlc2hvbGQ6IDIwLAogICAgICAgICAgICBmcmVlTW9kZTogITEsCiAgICAgICAgICAgIGZyZWVNb2RlTW9tZW50dW06ICEwLAogICAgICAgICAgICBmcmVlTW9kZU1vbWVudHVtUmF0aW86IDEsCiAgICAgICAgICAgIGZyZWVNb2RlTW9tZW50dW1Cb3VuY2U6ICEwLAogICAgICAgICAgICBmcmVlTW9kZU1vbWVudHVtQm91bmNlUmF0aW86IDEsCiAgICAgICAgICAgIGZyZWVNb2RlTW9tZW50dW1WZWxvY2l0eVJhdGlvOiAxLAogICAgICAgICAgICBmcmVlTW9kZVN0aWNreTogITEsCiAgICAgICAgICAgIGZyZWVNb2RlTWluaW11bVZlbG9jaXR5OiAuMDIsCiAgICAgICAgICAgIGF1dG9IZWlnaHQ6ICExLAogICAgICAgICAgICBzZXRXcmFwcGVyU2l6ZTogITEsCiAgICAgICAgICAgIHZpcnR1YWxUcmFuc2xhdGU6ICExLAogICAgICAgICAgICBlZmZlY3Q6ICJzbGlkZSIsCiAgICAgICAgICAgIGJyZWFrcG9pbnRzOiB2b2lkIDAsCiAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogMCwKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMSwKICAgICAgICAgICAgc2xpZGVzUGVyQ29sdW1uOiAxLAogICAgICAgICAgICBzbGlkZXNQZXJDb2x1bW5GaWxsOiAiY29sdW1uIiwKICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsCiAgICAgICAgICAgIHNsaWRlc1Blckdyb3VwU2tpcDogMCwKICAgICAgICAgICAgY2VudGVyZWRTbGlkZXM6ICExLAogICAgICAgICAgICBjZW50ZXJlZFNsaWRlc0JvdW5kczogITEsCiAgICAgICAgICAgIHNsaWRlc09mZnNldEJlZm9yZTogMCwKICAgICAgICAgICAgc2xpZGVzT2Zmc2V0QWZ0ZXI6IDAsCiAgICAgICAgICAgIG5vcm1hbGl6ZVNsaWRlSW5kZXg6ICEwLAogICAgICAgICAgICBjZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXM6ICExLAogICAgICAgICAgICB3YXRjaE92ZXJmbG93OiAhMSwKICAgICAgICAgICAgcm91bmRMZW5ndGhzOiAhMSwKICAgICAgICAgICAgdG91Y2hSYXRpbzogMSwKICAgICAgICAgICAgdG91Y2hBbmdsZTogNDUsCiAgICAgICAgICAgIHNpbXVsYXRlVG91Y2g6ICEwLAogICAgICAgICAgICBzaG9ydFN3aXBlczogITAsCiAgICAgICAgICAgIGxvbmdTd2lwZXM6ICEwLAogICAgICAgICAgICBsb25nU3dpcGVzUmF0aW86IC41LAogICAgICAgICAgICBsb25nU3dpcGVzTXM6IDMwMCwKICAgICAgICAgICAgZm9sbG93RmluZ2VyOiAhMCwKICAgICAgICAgICAgYWxsb3dUb3VjaE1vdmU6ICEwLAogICAgICAgICAgICB0aHJlc2hvbGQ6IDAsCiAgICAgICAgICAgIHRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbjogITEsCiAgICAgICAgICAgIHRvdWNoU3RhcnRQcmV2ZW50RGVmYXVsdDogITAsCiAgICAgICAgICAgIHRvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0OiAhMSwKICAgICAgICAgICAgdG91Y2hSZWxlYXNlT25FZGdlczogITEsCiAgICAgICAgICAgIHVuaXF1ZU5hdkVsZW1lbnRzOiAhMCwKICAgICAgICAgICAgcmVzaXN0YW5jZTogITAsCiAgICAgICAgICAgIHJlc2lzdGFuY2VSYXRpbzogLjg1LAogICAgICAgICAgICB3YXRjaFNsaWRlc1Byb2dyZXNzOiAhMSwKICAgICAgICAgICAgd2F0Y2hTbGlkZXNWaXNpYmlsaXR5OiAhMSwKICAgICAgICAgICAgZ3JhYkN1cnNvcjogITEsCiAgICAgICAgICAgIHByZXZlbnRDbGlja3M6ICEwLAogICAgICAgICAgICBwcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb246ICEwLAogICAgICAgICAgICBzbGlkZVRvQ2xpY2tlZFNsaWRlOiAhMSwKICAgICAgICAgICAgcHJlbG9hZEltYWdlczogITAsCiAgICAgICAgICAgIHVwZGF0ZU9uSW1hZ2VzUmVhZHk6ICEwLAogICAgICAgICAgICBsb29wOiAhMSwKICAgICAgICAgICAgbG9vcEFkZGl0aW9uYWxTbGlkZXM6IDAsCiAgICAgICAgICAgIGxvb3BlZFNsaWRlczogbnVsbCwKICAgICAgICAgICAgbG9vcEZpbGxHcm91cFdpdGhCbGFuazogITEsCiAgICAgICAgICAgIGFsbG93U2xpZGVQcmV2OiAhMCwKICAgICAgICAgICAgYWxsb3dTbGlkZU5leHQ6ICEwLAogICAgICAgICAgICBzd2lwZUhhbmRsZXI6IG51bGwsCiAgICAgICAgICAgIG5vU3dpcGluZzogITAsCiAgICAgICAgICAgIG5vU3dpcGluZ0NsYXNzOiAic3dpcGVyLW5vLXN3aXBpbmciLAogICAgICAgICAgICBub1N3aXBpbmdTZWxlY3RvcjogbnVsbCwKICAgICAgICAgICAgcGFzc2l2ZUxpc3RlbmVyczogITAsCiAgICAgICAgICAgIGNvbnRhaW5lck1vZGlmaWVyQ2xhc3M6ICJzd2lwZXItY29udGFpbmVyLSIsCiAgICAgICAgICAgIHNsaWRlQ2xhc3M6ICJzd2lwZXItc2xpZGUiLAogICAgICAgICAgICBzbGlkZUJsYW5rQ2xhc3M6ICJzd2lwZXItc2xpZGUtaW52aXNpYmxlLWJsYW5rIiwKICAgICAgICAgICAgc2xpZGVBY3RpdmVDbGFzczogInN3aXBlci1zbGlkZS1hY3RpdmUiLAogICAgICAgICAgICBzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzOiAic3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1hY3RpdmUiLAogICAgICAgICAgICBzbGlkZVZpc2libGVDbGFzczogInN3aXBlci1zbGlkZS12aXNpYmxlIiwKICAgICAgICAgICAgc2xpZGVEdXBsaWNhdGVDbGFzczogInN3aXBlci1zbGlkZS1kdXBsaWNhdGUiLAogICAgICAgICAgICBzbGlkZU5leHRDbGFzczogInN3aXBlci1zbGlkZS1uZXh0IiwKICAgICAgICAgICAgc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3M6ICJzd2lwZXItc2xpZGUtZHVwbGljYXRlLW5leHQiLAogICAgICAgICAgICBzbGlkZVByZXZDbGFzczogInN3aXBlci1zbGlkZS1wcmV2IiwKICAgICAgICAgICAgc2xpZGVEdXBsaWNhdGVQcmV2Q2xhc3M6ICJzd2lwZXItc2xpZGUtZHVwbGljYXRlLXByZXYiLAogICAgICAgICAgICB3cmFwcGVyQ2xhc3M6ICJzd2lwZXItd3JhcHBlciIsCiAgICAgICAgICAgIHJ1bkNhbGxiYWNrc09uSW5pdDogITAKICAgICAgICB9LAogICAgICAgIFkgPSB7CiAgICAgICAgICAgIHVwZGF0ZTogaCwKICAgICAgICAgICAgdHJhbnNsYXRlOiBwLAogICAgICAgICAgICB0cmFuc2l0aW9uOiBjLAogICAgICAgICAgICBzbGlkZTogdSwKICAgICAgICAgICAgbG9vcDogdiwKICAgICAgICAgICAgZ3JhYkN1cnNvcjogZiwKICAgICAgICAgICAgbWFuaXB1bGF0aW9uOiBMLAogICAgICAgICAgICBldmVudHM6IHsKICAgICAgICAgICAgICAgIGF0dGFjaEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudG91Y2hFdmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmVsLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy53cmFwcGVyRWw7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoU3RhcnQgPSBELmJpbmQodGhpcyksIHRoaXMub25Ub3VjaE1vdmUgPSBPLmJpbmQodGhpcyksIHRoaXMub25Ub3VjaEVuZCA9IEEuYmluZCh0aGlzKSwgdC5jc3NNb2RlICYmICh0aGlzLm9uU2Nyb2xsID0gQi5iaW5kKHRoaXMpKSwgdGhpcy5vbkNsaWNrID0gSC5iaW5kKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gISF0Lm5lc3RlZDsKICAgICAgICAgICAgICAgICAgICBpZiAoIW8udG91Y2ggJiYgby5wb2ludGVyRXZlbnRzKSBzLmFkZEV2ZW50TGlzdGVuZXIoaS5zdGFydCwgdGhpcy5vblRvdWNoU3RhcnQsICExKSwgZS5hZGRFdmVudExpc3RlbmVyKGkubW92ZSwgdGhpcy5vblRvdWNoTW92ZSwgciksIGUuYWRkRXZlbnRMaXN0ZW5lcihpLmVuZCwgdGhpcy5vblRvdWNoRW5kLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLnRvdWNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICEoInRvdWNoc3RhcnQiICE9PSBpLnN0YXJ0IHx8ICFvLnBhc3NpdmVMaXN0ZW5lciB8fCAhdC5wYXNzaXZlTGlzdGVuZXJzKSAmJiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFkZEV2ZW50TGlzdGVuZXIoaS5zdGFydCwgdGhpcy5vblRvdWNoU3RhcnQsIG4pLCBzLmFkZEV2ZW50TGlzdGVuZXIoaS5tb3ZlLCB0aGlzLm9uVG91Y2hNb3ZlLCBvLnBhc3NpdmVMaXN0ZW5lciA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogciksIHMuYWRkRXZlbnRMaXN0ZW5lcihpLmVuZCwgdGhpcy5vblRvdWNoRW5kLCBuKSwgaS5jYW5jZWwgJiYgcy5hZGRFdmVudExpc3RlbmVyKGkuY2FuY2VsLCB0aGlzLm9uVG91Y2hFbmQsIG4pLCBOIHx8IChlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBYKSwgTiA9ICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9KHQuc2ltdWxhdGVUb3VjaCAmJiAhSS5pb3MgJiYgIUkuYW5kcm9pZCB8fCB0LnNpbXVsYXRlVG91Y2ggJiYgIW8udG91Y2ggJiYgSS5pb3MpICYmIChzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMub25Ub3VjaFN0YXJ0LCAhMSksIGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5vblRvdWNoTW92ZSwgciksIGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMub25Ub3VjaEVuZCwgITEpKQogICAgICAgICAgICAgICAgICAgIH0odC5wcmV2ZW50Q2xpY2tzIHx8IHQucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uKSAmJiBzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5vbkNsaWNrLCAhMCksIHQuY3NzTW9kZSAmJiBhLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMub25TY3JvbGwpLCB0LnVwZGF0ZU9uV2luZG93UmVzaXplID8gdGhpcy5vbihJLmlvcyB8fCBJLmFuZHJvaWQgPyAicmVzaXplIG9yaWVudGF0aW9uY2hhbmdlIG9ic2VydmVyVXBkYXRlIiA6ICJyZXNpemUgb2JzZXJ2ZXJVcGRhdGUiLCBHLCAhMCkgOiB0aGlzLm9uKCJvYnNlcnZlclVwZGF0ZSIsIEcsICEwKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRldGFjaEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudG91Y2hFdmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmVsLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy53cmFwcGVyRWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhIXQubmVzdGVkOwogICAgICAgICAgICAgICAgICAgIGlmICghby50b3VjaCAmJiBvLnBvaW50ZXJFdmVudHMpIHMucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLnN0YXJ0LCB0aGlzLm9uVG91Y2hTdGFydCwgITEpLCBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoaS5tb3ZlLCB0aGlzLm9uVG91Y2hNb3ZlLCByKSwgZS5yZW1vdmVFdmVudExpc3RlbmVyKGkuZW5kLCB0aGlzLm9uVG91Y2hFbmQsICExKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8udG91Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gISgib25Ub3VjaFN0YXJ0IiAhPT0gaS5zdGFydCB8fCAhby5wYXNzaXZlTGlzdGVuZXIgfHwgIXQucGFzc2l2ZUxpc3RlbmVycykgJiYgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5yZW1vdmVFdmVudExpc3RlbmVyKGkuc3RhcnQsIHRoaXMub25Ub3VjaFN0YXJ0LCBuKSwgcy5yZW1vdmVFdmVudExpc3RlbmVyKGkubW92ZSwgdGhpcy5vblRvdWNoTW92ZSwgciksIHMucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLmVuZCwgdGhpcy5vblRvdWNoRW5kLCBuKSwgaS5jYW5jZWwgJiYgcy5yZW1vdmVFdmVudExpc3RlbmVyKGkuY2FuY2VsLCB0aGlzLm9uVG91Y2hFbmQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0odC5zaW11bGF0ZVRvdWNoICYmICFJLmlvcyAmJiAhSS5hbmRyb2lkIHx8IHQuc2ltdWxhdGVUb3VjaCAmJiAhby50b3VjaCAmJiBJLmlvcykgJiYgKHMucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5vblRvdWNoU3RhcnQsICExKSwgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLm9uVG91Y2hNb3ZlLCByKSwgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5vblRvdWNoRW5kLCAhMSkpCiAgICAgICAgICAgICAgICAgICAgfSh0LnByZXZlbnRDbGlja3MgfHwgdC5wcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb24pICYmIHMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLm9uQ2xpY2ssICEwKSwgdC5jc3NNb2RlICYmIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5vblNjcm9sbCksIHRoaXMub2ZmKEkuaW9zIHx8IEkuYW5kcm9pZCA/ICJyZXNpemUgb3JpZW50YXRpb25jaGFuZ2Ugb2JzZXJ2ZXJVcGRhdGUiIDogInJlc2l6ZSBvYnNlcnZlclVwZGF0ZSIsIEcpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJyZWFrcG9pbnRzOiB7CiAgICAgICAgICAgICAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuYWN0aXZlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmluaXRpYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5sb29wZWRTbGlkZXM7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBpICYmIChpID0gMCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuJGVsLAogICAgICAgICAgICAgICAgICAgICAgICByID0gcy5icmVha3BvaW50czsKICAgICAgICAgICAgICAgICAgICBpZiAociAmJiAoIXIgfHwgMCAhPT0gT2JqZWN0LmtleXMocikubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuZ2V0QnJlYWtwb2ludChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gJiYgdGhpcy5jdXJyZW50QnJlYWtwb2ludCAhPT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBvIGluIHIgPyByW29dIDogdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCAmJiBbInNsaWRlc1BlclZpZXciLCAic3BhY2VCZXR3ZWVuIiwgInNsaWRlc1Blckdyb3VwIiwgInNsaWRlc1Blckdyb3VwU2tpcCIsICJzbGlkZXNQZXJDb2x1bW4iXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBsW2VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gdCAmJiAobFtlXSA9ICJzbGlkZXNQZXJWaWV3IiAhPT0gZSB8fCAiQVVUTyIgIT09IHQgJiYgImF1dG8iICE9PSB0ID8gInNsaWRlc1BlclZpZXciID09PSBlID8gcGFyc2VGbG9hdCh0KSA6IHBhcnNlSW50KHQsIDEwKSA6ICJhdXRvIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gbCB8fCB0aGlzLm9yaWdpbmFsUGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzLnNsaWRlc1BlckNvbHVtbiA+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGQuc2xpZGVzUGVyQ29sdW1uID4gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggJiYgIXAgPyBhLnJlbW92ZUNsYXNzKHMuY29udGFpbmVyTW9kaWZpZXJDbGFzcyArICJtdWx0aXJvdyAiICsgcy5jb250YWluZXJNb2RpZmllckNsYXNzICsgIm11bHRpcm93LWNvbHVtbiIpIDogIWggJiYgcCAmJiAoYS5hZGRDbGFzcyhzLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyAibXVsdGlyb3ciKSwgImNvbHVtbiIgPT09IGQuc2xpZGVzUGVyQ29sdW1uRmlsbCAmJiBhLmFkZENsYXNzKHMuY29udGFpbmVyTW9kaWZpZXJDbGFzcyArICJtdWx0aXJvdy1jb2x1bW4iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGQuZGlyZWN0aW9uICYmIGQuZGlyZWN0aW9uICE9PSBzLmRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gcy5sb29wICYmIChkLnNsaWRlc1BlclZpZXcgIT09IHMuc2xpZGVzUGVyVmlldyB8fCBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgJiYgdCAmJiB0aGlzLmNoYW5nZURpcmVjdGlvbigpLCBuLmV4dGVuZCh0aGlzLnBhcmFtcywgZCksIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1RvdWNoTW92ZTogdGhpcy5wYXJhbXMuYWxsb3dUb3VjaE1vdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dTbGlkZU5leHQ6IHRoaXMucGFyYW1zLmFsbG93U2xpZGVOZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93U2xpZGVQcmV2OiB0aGlzLnBhcmFtcy5hbGxvd1NsaWRlUHJldgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuY3VycmVudEJyZWFrcG9pbnQgPSBvLCB1ICYmIHQgJiYgKHRoaXMubG9vcERlc3Ryb3koKSwgdGhpcy5sb29wQ3JlYXRlKCksIHRoaXMudXBkYXRlU2xpZGVzKCksIHRoaXMuc2xpZGVUbyhlIC0gaSArIHRoaXMubG9vcGVkU2xpZGVzLCAwLCAhMSkpLCB0aGlzLmVtaXQoImJyZWFrcG9pbnQiLCBkKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE9iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiAwID09PSBlLmluZGV4T2YoIkAiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHBhcnNlRmxvYXQoZS5zdWJzdHIoMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQuaW5uZXJIZWlnaHQgKiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQ6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQ6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuc29ydCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGUudmFsdWUsIDEwKSAtIHBhcnNlSW50KHQudmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgcy5sZW5ndGg7IGEgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBzW2FdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLnBvaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgci52YWx1ZSA8PSB0LmlubmVyV2lkdGggJiYgKGkgPSBuKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpIHx8ICJtYXgiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjaGVja092ZXJmbG93OiB7CiAgICAgICAgICAgICAgICBjaGVja092ZXJmbG93OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5pc0xvY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuc2xpZGVzLmxlbmd0aCA+IDAgJiYgZS5zbGlkZXNPZmZzZXRCZWZvcmUgKyBlLnNwYWNlQmV0d2VlbiAqICh0aGlzLnNsaWRlcy5sZW5ndGggLSAxKSArIHRoaXMuc2xpZGVzWzBdLm9mZnNldFdpZHRoICogdGhpcy5zbGlkZXMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGUuc2xpZGVzT2Zmc2V0QmVmb3JlICYmIGUuc2xpZGVzT2Zmc2V0QWZ0ZXIgJiYgaSA/IHRoaXMuaXNMb2NrZWQgPSBpIDw9IHRoaXMuc2l6ZSA6IHRoaXMuaXNMb2NrZWQgPSAxID09PSB0aGlzLnNuYXBHcmlkLmxlbmd0aCwgdGhpcy5hbGxvd1NsaWRlTmV4dCA9ICF0aGlzLmlzTG9ja2VkLCB0aGlzLmFsbG93U2xpZGVQcmV2ID0gIXRoaXMuaXNMb2NrZWQsIHQgIT09IHRoaXMuaXNMb2NrZWQgJiYgdGhpcy5lbWl0KHRoaXMuaXNMb2NrZWQgPyAibG9jayIgOiAidW5sb2NrIiksIHQgJiYgdCAhPT0gdGhpcy5pc0xvY2tlZCAmJiAodGhpcy5pc0VuZCA9ICExLCB0aGlzLm5hdmlnYXRpb24udXBkYXRlKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNsYXNzZXM6IHsKICAgICAgICAgICAgICAgIGFkZENsYXNzZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5jbGFzc05hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5wYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnJ0bCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuJGVsLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgICAgICAgICAgYS5wdXNoKCJpbml0aWFsaXplZCIpLCBhLnB1c2godC5kaXJlY3Rpb24pLCB0LmZyZWVNb2RlICYmIGEucHVzaCgiZnJlZS1tb2RlIiksIHQuYXV0b0hlaWdodCAmJiBhLnB1c2goImF1dG9oZWlnaHQiKSwgaSAmJiBhLnB1c2goInJ0bCIpLCB0LnNsaWRlc1BlckNvbHVtbiA+IDEgJiYgKGEucHVzaCgibXVsdGlyb3ciKSwgImNvbHVtbiIgPT09IHQuc2xpZGVzUGVyQ29sdW1uRmlsbCAmJiBhLnB1c2goIm11bHRpcm93LWNvbHVtbiIpKSwgSS5hbmRyb2lkICYmIGEucHVzaCgiYW5kcm9pZCIpLCBJLmlvcyAmJiBhLnB1c2goImlvcyIpLCB0LmNzc01vZGUgJiYgYS5wdXNoKCJjc3MtbW9kZSIpLCBhLmZvckVhY2goKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5wdXNoKHQuY29udGFpbmVyTW9kaWZpZXJDbGFzcyArIGkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBzLmFkZENsYXNzKGUuam9pbigiICIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy4kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmNsYXNzTmFtZXM7CiAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVDbGFzcyh0LmpvaW4oIiAiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW1hZ2VzOiB7CiAgICAgICAgICAgICAgICBsb2FkSW1hZ2U6IGZ1bmN0aW9uKGUsIGksIHMsIGEsIHIsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbzsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiBuKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZS5jb21wbGV0ZSAmJiByID8gbCgpIDogaSA/ICgobyA9IG5ldyB0LkltYWdlKS5vbmxvYWQgPSBsLCBvLm9uZXJyb3IgPSBsLCBhICYmIChvLnNpemVzID0gYSksIHMgJiYgKG8uc3Jjc2V0ID0gcyksIGkgJiYgKG8uc3JjID0gaSkpIDogbCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcHJlbG9hZEltYWdlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGUgJiYgZSAmJiAhZS5kZXN0cm95ZWQgJiYgKHZvaWQgMCAhPT0gZS5pbWFnZXNMb2FkZWQgJiYgKGUuaW1hZ2VzTG9hZGVkICs9IDEpLCBlLmltYWdlc0xvYWRlZCA9PT0gZS5pbWFnZXNUb0xvYWQubGVuZ3RoICYmIChlLnBhcmFtcy51cGRhdGVPbkltYWdlc1JlYWR5ICYmIGUudXBkYXRlKCksIGUuZW1pdCgiaW1hZ2VzUmVhZHkiKSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUuaW1hZ2VzVG9Mb2FkID0gZS4kZWwuZmluZCgiaW1nIik7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlLmltYWdlc1RvTG9hZC5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGUuaW1hZ2VzVG9Mb2FkW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBlLmxvYWRJbWFnZShzLCBzLmN1cnJlbnRTcmMgfHwgcy5nZXRBdHRyaWJ1dGUoInNyYyIpLCBzLnNyY3NldCB8fCBzLmdldEF0dHJpYnV0ZSgic3Jjc2V0IiksIHMuc2l6ZXMgfHwgcy5nZXRBdHRyaWJ1dGUoInNpemVzIiksICEwLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgRiA9IHt9LAogICAgICAgIFcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpLCBhLCByLCBsID0gW10sIGQgPSBhcmd1bWVudHMubGVuZ3RoOyBkLS07KSBsW2RdID0gYXJndW1lbnRzW2RdOwogICAgICAgICAgICAgICAgMSA9PT0gbC5sZW5ndGggJiYgbFswXS5jb25zdHJ1Y3RvciAmJiBsWzBdLmNvbnN0cnVjdG9yID09PSBPYmplY3QgPyByID0gbFswXSA6IChhID0gKGkgPSBsKVswXSwgciA9IGlbMV0pLCByIHx8IChyID0ge30pLCByID0gbi5leHRlbmQoe30sIHIpLCBhICYmICFyLmVsICYmIChyLmVsID0gYSksIGUuY2FsbCh0aGlzLCByKSwgT2JqZWN0LmtleXMoWSkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKFlbZV0pLmZvckVhY2goKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wcm90b3R5cGVbaV0gfHwgKHQucHJvdG90eXBlW2ldID0gWVtlXVtpXSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHZhciBoID0gdGhpczsKICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gaC5tb2R1bGVzICYmIChoLm1vZHVsZXMgPSB7fSksIE9iamVjdC5rZXlzKGgubW9kdWxlcykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gaC5tb2R1bGVzW2VdOwogICAgICAgICAgICAgICAgICAgIGlmICh0LnBhcmFtcykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IE9iamVjdC5rZXlzKHQucGFyYW1zKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnBhcmFtc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiICE9IHR5cGVvZiBzIHx8IG51bGwgPT09IHMpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSBpbiByICYmICJlbmFibGVkIiBpbiBzKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAhMCA9PT0gcltpXSAmJiAocltpXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAib2JqZWN0IiAhPSB0eXBlb2YgcltpXSB8fCAiZW5hYmxlZCIgaW4gcltpXSB8fCAocltpXS5lbmFibGVkID0gITApLCByW2ldIHx8IChyW2ldID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICB2YXIgcCA9IG4uZXh0ZW5kKHt9LCBWKTsKICAgICAgICAgICAgICAgIGgudXNlTW9kdWxlc1BhcmFtcyhwKSwgaC5wYXJhbXMgPSBuLmV4dGVuZCh7fSwgcCwgRiwgciksIGgub3JpZ2luYWxQYXJhbXMgPSBuLmV4dGVuZCh7fSwgaC5wYXJhbXMpLCBoLnBhc3NlZFBhcmFtcyA9IG4uZXh0ZW5kKHt9LCByKSwgaC4kID0gczsKICAgICAgICAgICAgICAgIHZhciBjID0gcyhoLnBhcmFtcy5lbCk7CiAgICAgICAgICAgICAgICBpZiAoYSA9IGNbMF0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjLmVhY2goKGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gbi5leHRlbmQoe30sIHIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbDogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LnB1c2gobmV3IHQocykpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgdiwgZiwgbTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5zd2lwZXIgPSBoLCBjLmRhdGEoInN3aXBlciIsIGgpLCBhICYmIGEuc2hhZG93Um9vdCAmJiBhLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvciA/ICh2ID0gcyhhLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLiIgKyBoLnBhcmFtcy53cmFwcGVyQ2xhc3MpKSkuY2hpbGRyZW4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjLmNoaWxkcmVuKGUpCiAgICAgICAgICAgICAgICAgICAgfSA6IHYgPSBjLmNoaWxkcmVuKCIuIiArIGgucGFyYW1zLndyYXBwZXJDbGFzcyksIG4uZXh0ZW5kKGgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsOiBjLAogICAgICAgICAgICAgICAgICAgICAgICBlbDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgJHdyYXBwZXJFbDogdiwKICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlckVsOiB2WzBdLAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzOiBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc0dyaWQ6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBzbmFwR3JpZDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1NpemVzR3JpZDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9yaXpvbnRhbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImhvcml6b250YWwiID09PSBoLnBhcmFtcy5kaXJlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNWZXJ0aWNhbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInZlcnRpY2FsIiA9PT0gaC5wYXJhbXMuZGlyZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogInJ0bCIgPT09IGEuZGlyLnRvTG93ZXJDYXNlKCkgfHwgInJ0bCIgPT09IGMuY3NzKCJkaXJlY3Rpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgcnRsVHJhbnNsYXRlOiAiaG9yaXpvbnRhbCIgPT09IGgucGFyYW1zLmRpcmVjdGlvbiAmJiAoInJ0bCIgPT09IGEuZGlyLnRvTG93ZXJDYXNlKCkgfHwgInJ0bCIgPT09IGMuY3NzKCJkaXJlY3Rpb24iKSksCiAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nUlRMOiAiLXdlYmtpdC1ib3giID09PSB2LmNzcygiZGlzcGxheSIpLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICBpc0JlZ2lubmluZzogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzRW5kOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1RyYW5zbGF0ZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHZlbG9jaXR5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpbmc6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1NsaWRlTmV4dDogaC5wYXJhbXMuYWxsb3dTbGlkZU5leHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93U2xpZGVQcmV2OiBoLnBhcmFtcy5hbGxvd1NsaWRlUHJldiwKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hFdmVudHM6IChmID0gWyJ0b3VjaHN0YXJ0IiwgInRvdWNobW92ZSIsICJ0b3VjaGVuZCIsICJ0b3VjaGNhbmNlbCJdLCBtID0gWyJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNldXAiXSwgby5wb2ludGVyRXZlbnRzICYmIChtID0gWyJwb2ludGVyZG93biIsICJwb2ludGVybW92ZSIsICJwb2ludGVydXAiXSksIGgudG91Y2hFdmVudHNUb3VjaCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBmWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZTogZlsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogZlsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbDogZlszXQogICAgICAgICAgICAgICAgICAgICAgICB9LCBoLnRvdWNoRXZlbnRzRGVza3RvcCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBtWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZTogbVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbVsyXQogICAgICAgICAgICAgICAgICAgICAgICB9LCBvLnRvdWNoIHx8ICFoLnBhcmFtcy5zaW11bGF0ZVRvdWNoID8gaC50b3VjaEV2ZW50c1RvdWNoIDogaC50b3VjaEV2ZW50c0Rlc2t0b3ApLAogICAgICAgICAgICAgICAgICAgICAgICB0b3VjaEV2ZW50c0RhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVG91Y2hlZDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb3ZlZDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dUb3VjaENhbGxiYWNrczogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hTdGFydFRpbWU6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VHJhbnNsYXRlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRyYW5zbGF0ZTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dUaHJlc2hvbGRNb3ZlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudHM6ICJpbnB1dCwgc2VsZWN0LCBvcHRpb24sIHRleHRhcmVhLCBidXR0b24sIHZpZGVvLCBsYWJlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q2xpY2tUaW1lOiBuLm5vdygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lb3V0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWxvY2l0aWVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TW9tZW50dW1Cb3VuY2U6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVG91Y2hFdmVudDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNb3Zpbmc6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0NsaWNrOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dUb3VjaE1vdmU6IGgucGFyYW1zLmFsbG93VG91Y2hNb3ZlLAogICAgICAgICAgICAgICAgICAgICAgICB0b3VjaGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZjogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXNUb0xvYWQ6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXNMb2FkZWQ6IDAKICAgICAgICAgICAgICAgICAgICB9KSwgaC51c2VNb2R1bGVzKCksIGgucGFyYW1zLmluaXQgJiYgaC5pbml0KCksIGgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlICYmICh0Ll9fcHJvdG9fXyA9IGUpLCB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSksIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdDsKICAgICAgICAgICAgdmFyIGkgPSB7CiAgICAgICAgICAgICAgICBleHRlbmRlZERlZmF1bHRzOiB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlZmF1bHRzOiB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENsYXNzOiB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICQ6IHsKICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiB0LnByb3RvdHlwZS5zbGlkZXNQZXJWaWV3RHluYW1pYyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5zbGlkZXMsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuc2xpZGVzR3JpZCwKICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5zaXplLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmFjdGl2ZUluZGV4LAogICAgICAgICAgICAgICAgICAgIHIgPSAxOwogICAgICAgICAgICAgICAgaWYgKGUuY2VudGVyZWRTbGlkZXMpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuLCBvID0gdFthXS5zd2lwZXJTbGlkZVNpemUsIGwgPSBhICsgMTsgbCA8IHQubGVuZ3RoOyBsICs9IDEpIHRbbF0gJiYgIW4gJiYgKHIgKz0gMSwgKG8gKz0gdFtsXS5zd2lwZXJTbGlkZVNpemUpID4gcyAmJiAobiA9ICEwKSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IGEgLSAxOyBkID49IDA7IGQgLT0gMSkgdFtkXSAmJiAhbiAmJiAociArPSAxLCAobyArPSB0W2RdLnN3aXBlclNsaWRlU2l6ZSkgPiBzICYmIChuID0gITApKQogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaCA9IGEgKyAxOyBoIDwgdC5sZW5ndGg7IGggKz0gMSkgaVtoXSAtIGlbYV0gPCBzICYmIChyICs9IDEpOwogICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAoZSAmJiAhZS5kZXN0cm95ZWQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuc25hcEdyaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLnBhcmFtczsKICAgICAgICAgICAgICAgICAgICBpLmJyZWFrcG9pbnRzICYmIGUuc2V0QnJlYWtwb2ludCgpLCBlLnVwZGF0ZVNpemUoKSwgZS51cGRhdGVTbGlkZXMoKSwgZS51cGRhdGVQcm9ncmVzcygpLCBlLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwgZS5wYXJhbXMuZnJlZU1vZGUgPyAocygpLCBlLnBhcmFtcy5hdXRvSGVpZ2h0ICYmIGUudXBkYXRlQXV0b0hlaWdodCgpKSA6ICgoImF1dG8iID09PSBlLnBhcmFtcy5zbGlkZXNQZXJWaWV3IHx8IGUucGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxKSAmJiBlLmlzRW5kICYmICFlLnBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IGUuc2xpZGVUbyhlLnNsaWRlcy5sZW5ndGggLSAxLCAwLCAhMSwgITApIDogZS5zbGlkZVRvKGUuYWN0aXZlSW5kZXgsIDAsICExLCAhMCkpIHx8IHMoKSwgaS53YXRjaE92ZXJmbG93ICYmIHQgIT09IGUuc25hcEdyaWQgJiYgZS5jaGVja092ZXJmbG93KCksIGUuZW1pdCgidXBkYXRlIikKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5ydGxUcmFuc2xhdGUgPyAtMSAqIGUudHJhbnNsYXRlIDogZS50cmFuc2xhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBNYXRoLm1pbihNYXRoLm1heCh0LCBlLm1heFRyYW5zbGF0ZSgpKSwgZS5taW5UcmFuc2xhdGUoKSk7CiAgICAgICAgICAgICAgICAgICAgZS5zZXRUcmFuc2xhdGUoaSksIGUudXBkYXRlQWN0aXZlSW5kZXgoKSwgZS51cGRhdGVTbGlkZXNDbGFzc2VzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuY2hhbmdlRGlyZWN0aW9uID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITApOwogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnBhcmFtcy5kaXJlY3Rpb247CiAgICAgICAgICAgICAgICByZXR1cm4gZSB8fCAoZSA9ICJob3Jpem9udGFsIiA9PT0gaSA/ICJ2ZXJ0aWNhbCIgOiAiaG9yaXpvbnRhbCIpLCBlID09PSBpIHx8ICJob3Jpem9udGFsIiAhPT0gZSAmJiAidmVydGljYWwiICE9PSBlID8gdGhpcyA6ICh0aGlzLiRlbC5yZW1vdmVDbGFzcygiIiArIHRoaXMucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyBpKS5hZGRDbGFzcygiIiArIHRoaXMucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyBlKSwgdGhpcy5wYXJhbXMuZGlyZWN0aW9uID0gZSwgdGhpcy5zbGlkZXMuZWFjaCgoZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgICAgICJ2ZXJ0aWNhbCIgPT09IGUgPyBpLnN0eWxlLndpZHRoID0gIiIgOiBpLnN0eWxlLmhlaWdodCA9ICIiCiAgICAgICAgICAgICAgICB9KSksIHRoaXMuZW1pdCgiY2hhbmdlRGlyZWN0aW9uIiksIHQgJiYgdGhpcy51cGRhdGUoKSwgdGhpcykKICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCB8fCAodGhpcy5lbWl0KCJiZWZvcmVJbml0IiksIHRoaXMucGFyYW1zLmJyZWFrcG9pbnRzICYmIHRoaXMuc2V0QnJlYWtwb2ludCgpLCB0aGlzLmFkZENsYXNzZXMoKSwgdGhpcy5wYXJhbXMubG9vcCAmJiB0aGlzLmxvb3BDcmVhdGUoKSwgdGhpcy51cGRhdGVTaXplKCksIHRoaXMudXBkYXRlU2xpZGVzKCksIHRoaXMucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgdGhpcy5jaGVja092ZXJmbG93KCksIHRoaXMucGFyYW1zLmdyYWJDdXJzb3IgJiYgdGhpcy5zZXRHcmFiQ3Vyc29yKCksIHRoaXMucGFyYW1zLnByZWxvYWRJbWFnZXMgJiYgdGhpcy5wcmVsb2FkSW1hZ2VzKCksIHRoaXMucGFyYW1zLmxvb3AgPyB0aGlzLnNsaWRlVG8odGhpcy5wYXJhbXMuaW5pdGlhbFNsaWRlICsgdGhpcy5sb29wZWRTbGlkZXMsIDAsIHRoaXMucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCkgOiB0aGlzLnNsaWRlVG8odGhpcy5wYXJhbXMuaW5pdGlhbFNsaWRlLCAwLCB0aGlzLnBhcmFtcy5ydW5DYWxsYmFja3NPbkluaXQpLCB0aGlzLmF0dGFjaEV2ZW50cygpLCB0aGlzLmluaXRpYWxpemVkID0gITAsIHRoaXMuZW1pdCgiaW5pdCIpKQogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gITApLCB2b2lkIDAgPT09IHQgJiYgKHQgPSAhMCk7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgcyA9IGkucGFyYW1zLAogICAgICAgICAgICAgICAgICAgIGEgPSBpLiRlbCwKICAgICAgICAgICAgICAgICAgICByID0gaS4kd3JhcHBlckVsLAogICAgICAgICAgICAgICAgICAgIG8gPSBpLnNsaWRlczsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGkucGFyYW1zIHx8IGkuZGVzdHJveWVkID8gbnVsbCA6IChpLmVtaXQoImJlZm9yZURlc3Ryb3kiKSwgaS5pbml0aWFsaXplZCA9ICExLCBpLmRldGFjaEV2ZW50cygpLCBzLmxvb3AgJiYgaS5sb29wRGVzdHJveSgpLCB0ICYmIChpLnJlbW92ZUNsYXNzZXMoKSwgYS5yZW1vdmVBdHRyKCJzdHlsZSIpLCByLnJlbW92ZUF0dHIoInN0eWxlIiksIG8gJiYgby5sZW5ndGggJiYgby5yZW1vdmVDbGFzcyhbcy5zbGlkZVZpc2libGVDbGFzcywgcy5zbGlkZUFjdGl2ZUNsYXNzLCBzLnNsaWRlTmV4dENsYXNzLCBzLnNsaWRlUHJldkNsYXNzXS5qb2luKCIgIikpLnJlbW92ZUF0dHIoInN0eWxlIikucmVtb3ZlQXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSksIGkuZW1pdCgiZGVzdHJveSIpLCBPYmplY3Qua2V5cyhpLmV2ZW50c0xpc3RlbmVycykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGkub2ZmKGUpCiAgICAgICAgICAgICAgICB9KSksICExICE9PSBlICYmIChpLiRlbFswXS5zd2lwZXIgPSBudWxsLCBpLiRlbC5kYXRhKCJzd2lwZXIiLCBudWxsKSwgbi5kZWxldGVQcm9wcyhpKSksIGkuZGVzdHJveWVkID0gITAsIG51bGwpCiAgICAgICAgICAgIH0sIHQuZXh0ZW5kRGVmYXVsdHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBuLmV4dGVuZChGLCBlKQogICAgICAgICAgICB9LCBpLmV4dGVuZGVkRGVmYXVsdHMuZ2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gRgogICAgICAgICAgICB9LCBpLmRlZmF1bHRzLmdldCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFYKICAgICAgICAgICAgfSwgaS5DbGFzcy5nZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0sIGkuJC5nZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgICAgIH0sIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsIGkpLCB0CiAgICAgICAgfShsKSwKICAgICAgICBSID0gewogICAgICAgICAgICBuYW1lOiAiZGV2aWNlIiwKICAgICAgICAgICAgcHJvdG86IHsKICAgICAgICAgICAgICAgIGRldmljZTogSQogICAgICAgICAgICB9LAogICAgICAgICAgICBzdGF0aWM6IHsKICAgICAgICAgICAgICAgIGRldmljZTogSQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBxID0gewogICAgICAgICAgICBuYW1lOiAic3VwcG9ydCIsCiAgICAgICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgICAgICBzdXBwb3J0OiBvCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0YXRpYzogewogICAgICAgICAgICAgICAgc3VwcG9ydDogbwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBqID0gewogICAgICAgICAgICBpc0VkZ2U6ICEhdC5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9FZGdlL2cpLAogICAgICAgICAgICBpc1NhZmFyaTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHQubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5kZXhPZigic2FmYXJpIikgPj0gMCAmJiBlLmluZGV4T2YoImNocm9tZSIpIDwgMCAmJiBlLmluZGV4T2YoImFuZHJvaWQiKSA8IDAKICAgICAgICAgICAgfSgpLAogICAgICAgICAgICBpc1VpV2ViVmlldzogLyhpUGhvbmV8aVBvZHxpUGFkKS4qQXBwbGVXZWJLaXQoPyEuKlNhZmFyaSkvaS50ZXN0KHQubmF2aWdhdG9yLnVzZXJBZ2VudCkKICAgICAgICB9LAogICAgICAgIEsgPSB7CiAgICAgICAgICAgIG5hbWU6ICJicm93c2VyIiwKICAgICAgICAgICAgcHJvdG86IHsKICAgICAgICAgICAgICAgIGJyb3dzZXI6IGoKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc3RhdGljOiB7CiAgICAgICAgICAgICAgICBicm93c2VyOiBqCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIFUgPSB7CiAgICAgICAgICAgIG5hbWU6ICJyZXNpemUiLAogICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgbi5leHRlbmQoZSwgewogICAgICAgICAgICAgICAgICAgIHJlc2l6ZTogewogICAgICAgICAgICAgICAgICAgICAgICByZXNpemVIYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgIWUuZGVzdHJveWVkICYmIGUuaW5pdGlhbGl6ZWQgJiYgKGUuZW1pdCgiYmVmb3JlUmVzaXplIiksIGUuZW1pdCgicmVzaXplIikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uQ2hhbmdlSGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICYmICFlLmRlc3Ryb3llZCAmJiBlLmluaXRpYWxpemVkICYmIGUuZW1pdCgib3JpZW50YXRpb25jaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5yZXNpemUucmVzaXplSGFuZGxlciksIHQuYWRkRXZlbnRMaXN0ZW5lcigib3JpZW50YXRpb25jaGFuZ2UiLCB0aGlzLnJlc2l6ZS5vcmllbnRhdGlvbkNoYW5nZUhhbmRsZXIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLnJlc2l6ZS5yZXNpemVIYW5kbGVyKSwgdC5yZW1vdmVFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsIHRoaXMucmVzaXplLm9yaWVudGF0aW9uQ2hhbmdlSGFuZGxlcikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgXyA9IHsKICAgICAgICAgICAgZnVuYzogdC5NdXRhdGlvbk9ic2VydmVyIHx8IHQuV2Via2l0TXV0YXRpb25PYnNlcnZlciwKICAgICAgICAgICAgYXR0YWNoOiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICB2b2lkIDAgPT09IGkgJiYgKGkgPSB7fSk7CiAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgYSA9IG5ldygwLCBfLmZ1bmMpKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxICE9PSBlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmVtaXQoIm9ic2VydmVyVXBkYXRlIiwgZVswXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnJlcXVlc3RBbmltYXRpb25GcmFtZSA/IHQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkpIDogdC5zZXRUaW1lb3V0KGksIDApCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBzLmVtaXQoIm9ic2VydmVyVXBkYXRlIiwgZVswXSkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICBhLm9ic2VydmUoZSwgewogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHZvaWQgMCA9PT0gaS5hdHRyaWJ1dGVzIHx8IGkuYXR0cmlidXRlcywKICAgICAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHZvaWQgMCA9PT0gaS5jaGlsZExpc3QgfHwgaS5jaGlsZExpc3QsCiAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogdm9pZCAwID09PSBpLmNoYXJhY3RlckRhdGEgfHwgaS5jaGFyYWN0ZXJEYXRhCiAgICAgICAgICAgICAgICB9KSwgcy5vYnNlcnZlci5vYnNlcnZlcnMucHVzaChhKQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChvLm9ic2VydmVyICYmIHRoaXMucGFyYW1zLm9ic2VydmVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zLm9ic2VydmVQYXJlbnRzKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy4kZWwucGFyZW50cygpLCB0ID0gMDsgdCA8IGUubGVuZ3RoOyB0ICs9IDEpIHRoaXMub2JzZXJ2ZXIuYXR0YWNoKGVbdF0pOwogICAgICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIuYXR0YWNoKHRoaXMuJGVsWzBdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdGhpcy5wYXJhbXMub2JzZXJ2ZVNsaWRlQ2hpbGRyZW4KICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5vYnNlcnZlci5hdHRhY2godGhpcy4kd3JhcHBlckVsWzBdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6ICExCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmVycy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5kaXNjb25uZWN0KCkKICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5vYnNlcnZlci5vYnNlcnZlcnMgPSBbXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBaID0gewogICAgICAgICAgICBuYW1lOiAib2JzZXJ2ZXIiLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIG9ic2VydmVyOiAhMSwKICAgICAgICAgICAgICAgIG9ic2VydmVQYXJlbnRzOiAhMSwKICAgICAgICAgICAgICAgIG9ic2VydmVTbGlkZUNoaWxkcmVuOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5leHRlbmQodGhpcywgewogICAgICAgICAgICAgICAgICAgIG9ic2VydmVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQ6IF8uaW5pdC5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2g6IF8uYXR0YWNoLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3k6IF8uZGVzdHJveS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnM6IFtdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIuaW5pdCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5kZXN0cm95KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgUSA9IHsKICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgaSA9IHQucGFyYW1zLAogICAgICAgICAgICAgICAgICAgIHMgPSBpLnNsaWRlc1BlclZpZXcsCiAgICAgICAgICAgICAgICAgICAgYSA9IGkuc2xpZGVzUGVyR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgciA9IGkuY2VudGVyZWRTbGlkZXMsCiAgICAgICAgICAgICAgICAgICAgbyA9IHQucGFyYW1zLnZpcnR1YWwsCiAgICAgICAgICAgICAgICAgICAgbCA9IG8uYWRkU2xpZGVzQmVmb3JlLAogICAgICAgICAgICAgICAgICAgIGQgPSBvLmFkZFNsaWRlc0FmdGVyLAogICAgICAgICAgICAgICAgICAgIGggPSB0LnZpcnR1YWwsCiAgICAgICAgICAgICAgICAgICAgcCA9IGguZnJvbSwKICAgICAgICAgICAgICAgICAgICBjID0gaC50bywKICAgICAgICAgICAgICAgICAgICB1ID0gaC5zbGlkZXMsCiAgICAgICAgICAgICAgICAgICAgdiA9IGguc2xpZGVzR3JpZCwKICAgICAgICAgICAgICAgICAgICBmID0gaC5yZW5kZXJTbGlkZSwKICAgICAgICAgICAgICAgICAgICBtID0gaC5vZmZzZXQ7CiAgICAgICAgICAgICAgICB0LnVwZGF0ZUFjdGl2ZUluZGV4KCk7CiAgICAgICAgICAgICAgICB2YXIgZywgYiwgdywgeSA9IHQuYWN0aXZlSW5kZXggfHwgMDsKICAgICAgICAgICAgICAgIGcgPSB0LnJ0bFRyYW5zbGF0ZSA/ICJyaWdodCIgOiB0LmlzSG9yaXpvbnRhbCgpID8gImxlZnQiIDogInRvcCIsIHIgPyAoYiA9IE1hdGguZmxvb3IocyAvIDIpICsgYSArIGwsIHcgPSBNYXRoLmZsb29yKHMgLyAyKSArIGEgKyBkKSA6IChiID0gcyArIChhIC0gMSkgKyBsLCB3ID0gYSArIGQpOwogICAgICAgICAgICAgICAgdmFyIHggPSBNYXRoLm1heCgoeSB8fCAwKSAtIHcsIDApLAogICAgICAgICAgICAgICAgICAgIFQgPSBNYXRoLm1pbigoeSB8fCAwKSArIGIsIHUubGVuZ3RoIC0gMSksCiAgICAgICAgICAgICAgICAgICAgRSA9ICh0LnNsaWRlc0dyaWRbeF0gfHwgMCkgLSAodC5zbGlkZXNHcmlkWzBdIHx8IDApOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFMoKSB7CiAgICAgICAgICAgICAgICAgICAgdC51cGRhdGVTbGlkZXMoKSwgdC51cGRhdGVQcm9ncmVzcygpLCB0LnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwgdC5sYXp5ICYmIHQucGFyYW1zLmxhenkuZW5hYmxlZCAmJiB0LmxhenkubG9hZCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobi5leHRlbmQodC52aXJ0dWFsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IHgsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBULAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IEUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc0dyaWQ6IHQuc2xpZGVzR3JpZAogICAgICAgICAgICAgICAgICAgIH0pLCBwID09PSB4ICYmIGMgPT09IFQgJiYgIWUpIHJldHVybiB0LnNsaWRlc0dyaWQgIT09IHYgJiYgRSAhPT0gbSAmJiB0LnNsaWRlcy5jc3MoZywgRSArICJweCIpLCB2b2lkIHQudXBkYXRlUHJvZ3Jlc3MoKTsKICAgICAgICAgICAgICAgIGlmICh0LnBhcmFtcy52aXJ0dWFsLnJlbmRlckV4dGVybmFsKSByZXR1cm4gdC5wYXJhbXMudmlydHVhbC5yZW5kZXJFeHRlcm5hbC5jYWxsKHQsIHsKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IEUsCiAgICAgICAgICAgICAgICAgICAgZnJvbTogeCwKICAgICAgICAgICAgICAgICAgICB0bzogVCwKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gW10sIHQgPSB4OyB0IDw9IFQ7IHQgKz0gMSkgZS5wdXNoKHVbdF0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0oKQogICAgICAgICAgICAgICAgfSksIHZvaWQgUygpOwogICAgICAgICAgICAgICAgdmFyIEMgPSBbXSwKICAgICAgICAgICAgICAgICAgICBNID0gW107CiAgICAgICAgICAgICAgICBpZiAoZSkgdC4kd3JhcHBlckVsLmZpbmQoIi4iICsgdC5wYXJhbXMuc2xpZGVDbGFzcykucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgUCA9IHA7IFAgPD0gYzsgUCArPSAxKShQIDwgeCB8fCBQID4gVCkgJiYgdC4kd3JhcHBlckVsLmZpbmQoIi4iICsgdC5wYXJhbXMuc2xpZGVDbGFzcyArICdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicgKyBQICsgJyJdJykucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB6ID0gMDsgeiA8IHUubGVuZ3RoOyB6ICs9IDEpIHogPj0geCAmJiB6IDw9IFQgJiYgKHZvaWQgMCA9PT0gYyB8fCBlID8gTS5wdXNoKHopIDogKHogPiBjICYmIE0ucHVzaCh6KSwgeiA8IHAgJiYgQy5wdXNoKHopKSk7CiAgICAgICAgICAgICAgICBNLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0LiR3cmFwcGVyRWwuYXBwZW5kKGYodVtlXSwgZSkpCiAgICAgICAgICAgICAgICB9KSksIEMuc29ydCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0IC0gZQogICAgICAgICAgICAgICAgfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0LiR3cmFwcGVyRWwucHJlcGVuZChmKHVbZV0sIGUpKQogICAgICAgICAgICAgICAgfSkpLCB0LiR3cmFwcGVyRWwuY2hpbGRyZW4oIi5zd2lwZXItc2xpZGUiKS5jc3MoZywgRSArICJweCIpLCBTKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVuZGVyU2xpZGU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5wYXJhbXMudmlydHVhbDsKICAgICAgICAgICAgICAgIGlmIChpLmNhY2hlICYmIHRoaXMudmlydHVhbC5jYWNoZVt0XSkgcmV0dXJuIHRoaXMudmlydHVhbC5jYWNoZVt0XTsKICAgICAgICAgICAgICAgIHZhciBhID0gaS5yZW5kZXJTbGlkZSA/IHMoaS5yZW5kZXJTbGlkZS5jYWxsKHRoaXMsIGUsIHQpKSA6IHMoJzxkaXYgY2xhc3M9IicgKyB0aGlzLnBhcmFtcy5zbGlkZUNsYXNzICsgJyIgZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicgKyB0ICsgJyI+JyArIGUgKyAiPC9kaXY+Iik7CiAgICAgICAgICAgICAgICByZXR1cm4gYS5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpIHx8IGEuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiLCB0KSwgaS5jYWNoZSAmJiAodGhpcy52aXJ0dWFsLmNhY2hlW3RdID0gYSksIGEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXBwZW5kU2xpZGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAibGVuZ3RoIiBpbiBlKQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgZS5sZW5ndGg7IHQgKz0gMSkgZVt0XSAmJiB0aGlzLnZpcnR1YWwuc2xpZGVzLnB1c2goZVt0XSk7CiAgICAgICAgICAgICAgICBlbHNlIHRoaXMudmlydHVhbC5zbGlkZXMucHVzaChlKTsKICAgICAgICAgICAgICAgIHRoaXMudmlydHVhbC51cGRhdGUoITApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHByZXBlbmRTbGlkZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmFjdGl2ZUluZGV4LAogICAgICAgICAgICAgICAgICAgIGkgPSB0ICsgMSwKICAgICAgICAgICAgICAgICAgICBzID0gMTsKICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCBlLmxlbmd0aDsgYSArPSAxKSBlW2FdICYmIHRoaXMudmlydHVhbC5zbGlkZXMudW5zaGlmdChlW2FdKTsKICAgICAgICAgICAgICAgICAgICBpID0gdCArIGUubGVuZ3RoLCBzID0gZS5sZW5ndGgKICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLnZpcnR1YWwuc2xpZGVzLnVuc2hpZnQoZSk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMudmlydHVhbC5jYWNoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy52aXJ0dWFsLmNhY2hlLAogICAgICAgICAgICAgICAgICAgICAgICBuID0ge307CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHJbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpOwogICAgICAgICAgICAgICAgICAgICAgICBpICYmIHQuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiLCBwYXJzZUludChpLCAxMCkgKyAxKSwgbltwYXJzZUludChlLCAxMCkgKyBzXSA9IHQKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMudmlydHVhbC5jYWNoZSA9IG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMudmlydHVhbC51cGRhdGUoITApLCB0aGlzLnNsaWRlVG8oaSwgMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVtb3ZlU2xpZGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuYWN0aXZlSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB0aGlzLnZpcnR1YWwuc2xpZGVzLnNwbGljZShlW2ldLCAxKSwgdGhpcy5wYXJhbXMudmlydHVhbC5jYWNoZSAmJiBkZWxldGUgdGhpcy52aXJ0dWFsLmNhY2hlW2VbaV1dLCBlW2ldIDwgdCAmJiAodCAtPSAxKSwgdCA9IE1hdGgubWF4KHQsIDApOwogICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy52aXJ0dWFsLnNsaWRlcy5zcGxpY2UoZSwgMSksIHRoaXMucGFyYW1zLnZpcnR1YWwuY2FjaGUgJiYgZGVsZXRlIHRoaXMudmlydHVhbC5jYWNoZVtlXSwgZSA8IHQgJiYgKHQgLT0gMSksIHQgPSBNYXRoLm1heCh0LCAwKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWwudXBkYXRlKCEwKSwgdGhpcy5zbGlkZVRvKHQsIDApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbW92ZUFsbFNsaWRlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWwuc2xpZGVzID0gW10sIHRoaXMucGFyYW1zLnZpcnR1YWwuY2FjaGUgJiYgKHRoaXMudmlydHVhbC5jYWNoZSA9IHt9KSwgdGhpcy52aXJ0dWFsLnVwZGF0ZSghMCksIHRoaXMuc2xpZGVUbygwLCAwKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBKID0gewogICAgICAgICAgICBuYW1lOiAidmlydHVhbCIsCiAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAgdmlydHVhbDogewogICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgICAgIHNsaWRlczogW10sCiAgICAgICAgICAgICAgICAgICAgY2FjaGU6ICEwLAogICAgICAgICAgICAgICAgICAgIHJlbmRlclNsaWRlOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHJlbmRlckV4dGVybmFsOiBudWxsLAogICAgICAgICAgICAgICAgICAgIGFkZFNsaWRlc0JlZm9yZTogMCwKICAgICAgICAgICAgICAgICAgICBhZGRTbGlkZXNBZnRlcjogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5leHRlbmQodGhpcywgewogICAgICAgICAgICAgICAgICAgIHZpcnR1YWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBRLnVwZGF0ZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRTbGlkZTogUS5hcHBlbmRTbGlkZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kU2xpZGU6IFEucHJlcGVuZFNsaWRlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVNsaWRlOiBRLnJlbW92ZVNsaWRlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUFsbFNsaWRlczogUS5yZW1vdmVBbGxTbGlkZXMuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyU2xpZGU6IFEucmVuZGVyU2xpZGUuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzOiB0aGlzLnBhcmFtcy52aXJ0dWFsLnNsaWRlcywKICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGU6IHt9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgIGJlZm9yZUluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWVzLnB1c2godGhpcy5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzcyArICJ2aXJ0dWFsIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogITAKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5leHRlbmQodGhpcy5wYXJhbXMsIGUpLCBuLmV4dGVuZCh0aGlzLm9yaWdpbmFsUGFyYW1zLCBlKSwgdGhpcy5wYXJhbXMuaW5pdGlhbFNsaWRlIHx8IHRoaXMudmlydHVhbC51cGRhdGUoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiB0aGlzLnZpcnR1YWwudXBkYXRlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZWUgPSB7CiAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnJ0bFRyYW5zbGF0ZSwKICAgICAgICAgICAgICAgICAgICBhID0gaTsKICAgICAgICAgICAgICAgIGEub3JpZ2luYWxFdmVudCAmJiAoYSA9IGEub3JpZ2luYWxFdmVudCk7CiAgICAgICAgICAgICAgICB2YXIgciA9IGEua2V5Q29kZSB8fCBhLmNoYXJDb2RlOwogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFsbG93U2xpZGVOZXh0ICYmICh0aGlzLmlzSG9yaXpvbnRhbCgpICYmIDM5ID09PSByIHx8IHRoaXMuaXNWZXJ0aWNhbCgpICYmIDQwID09PSByIHx8IDM0ID09PSByKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFsbG93U2xpZGVQcmV2ICYmICh0aGlzLmlzSG9yaXpvbnRhbCgpICYmIDM3ID09PSByIHx8IHRoaXMuaXNWZXJ0aWNhbCgpICYmIDM4ID09PSByIHx8IDMzID09PSByKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgaWYgKCEoYS5zaGlmdEtleSB8fCBhLmFsdEtleSB8fCBhLmN0cmxLZXkgfHwgYS5tZXRhS2V5IHx8IGUuYWN0aXZlRWxlbWVudCAmJiBlLmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUgJiYgKCJpbnB1dCIgPT09IGUuYWN0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIHx8ICJ0ZXh0YXJlYSIgPT09IGUuYWN0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMua2V5Ym9hcmQub25seUluVmlld3BvcnQgJiYgKDMzID09PSByIHx8IDM0ID09PSByIHx8IDM3ID09PSByIHx8IDM5ID09PSByIHx8IDM4ID09PSByIHx8IDQwID09PSByKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4kZWwucGFyZW50cygiLiIgKyB0aGlzLnBhcmFtcy5zbGlkZUNsYXNzKS5sZW5ndGggPiAwICYmIDAgPT09IHRoaXMuJGVsLnBhcmVudHMoIi4iICsgdGhpcy5wYXJhbXMuc2xpZGVBY3RpdmVDbGFzcykubGVuZ3RoKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdC5pbm5lcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuaW5uZXJIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy4kZWwub2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgJiYgKGQubGVmdCAtPSB0aGlzLiRlbFswXS5zY3JvbGxMZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaCA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZC5sZWZ0LCBkLnRvcF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2QubGVmdCArIHRoaXMud2lkdGgsIGQudG9wXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZC5sZWZ0LCBkLnRvcCArIHRoaXMuaGVpZ2h0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZC5sZWZ0ICsgdGhpcy53aWR0aCwgZC50b3AgKyB0aGlzLmhlaWdodF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIHAgPSAwOyBwIDwgaC5sZW5ndGg7IHAgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBoW3BdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1swXSA+PSAwICYmIGNbMF0gPD0gbyAmJiBjWzFdID49IDAgJiYgY1sxXSA8PSBsICYmIChuID0gITApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuKSByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hvcml6b250YWwoKSA/ICgzMyAhPT0gciAmJiAzNCAhPT0gciAmJiAzNyAhPT0gciAmJiAzOSAhPT0gciB8fCAoYS5wcmV2ZW50RGVmYXVsdCA/IGEucHJldmVudERlZmF1bHQoKSA6IGEucmV0dXJuVmFsdWUgPSAhMSksICgzNCAhPT0gciAmJiAzOSAhPT0gciB8fCBzKSAmJiAoMzMgIT09IHIgJiYgMzcgIT09IHIgfHwgIXMpIHx8IHRoaXMuc2xpZGVOZXh0KCksICgzMyAhPT0gciAmJiAzNyAhPT0gciB8fCBzKSAmJiAoMzQgIT09IHIgJiYgMzkgIT09IHIgfHwgIXMpIHx8IHRoaXMuc2xpZGVQcmV2KCkpIDogKDMzICE9PSByICYmIDM0ICE9PSByICYmIDM4ICE9PSByICYmIDQwICE9PSByIHx8IChhLnByZXZlbnREZWZhdWx0ID8gYS5wcmV2ZW50RGVmYXVsdCgpIDogYS5yZXR1cm5WYWx1ZSA9ICExKSwgMzQgIT09IHIgJiYgNDAgIT09IHIgfHwgdGhpcy5zbGlkZU5leHQoKSwgMzMgIT09IHIgJiYgMzggIT09IHIgfHwgdGhpcy5zbGlkZVByZXYoKSksIHRoaXMuZW1pdCgia2V5UHJlc3MiLCByKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5rZXlib2FyZC5lbmFibGVkIHx8IChzKGUpLm9uKCJrZXlkb3duIiwgdGhpcy5rZXlib2FyZC5oYW5kbGUpLCB0aGlzLmtleWJvYXJkLmVuYWJsZWQgPSAhMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGlzYWJsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLmtleWJvYXJkLmVuYWJsZWQgJiYgKHMoZSkub2ZmKCJrZXlkb3duIiwgdGhpcy5rZXlib2FyZC5oYW5kbGUpLCB0aGlzLmtleWJvYXJkLmVuYWJsZWQgPSAhMSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdGUgPSB7CiAgICAgICAgICAgIG5hbWU6ICJrZXlib2FyZCIsCiAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAga2V5Ym9hcmQ6IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICBvbmx5SW5WaWV3cG9ydDogITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBrZXlib2FyZDogewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlOiBlZS5lbmFibGUuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZTogZWUuZGlzYWJsZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGVlLmhhbmRsZS5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLmtleWJvYXJkLmVuYWJsZWQgJiYgdGhpcy5rZXlib2FyZC5lbmFibGUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMua2V5Ym9hcmQuZW5hYmxlZCAmJiB0aGlzLmtleWJvYXJkLmRpc2FibGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIHZhciBpZSA9IHsKICAgICAgICAgICAgbGFzdFNjcm9sbFRpbWU6IG4ubm93KCksCiAgICAgICAgICAgIGxhc3RFdmVudEJlZm9yZVNuYXA6IHZvaWQgMCwKICAgICAgICAgICAgcmVjZW50V2hlZWxFdmVudHM6IFtdLAogICAgICAgICAgICBldmVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdC5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoImZpcmVmb3giKSA+IC0xID8gIkRPTU1vdXNlU2Nyb2xsIiA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gIm9ud2hlZWwiIGluIGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZS5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5zZXRBdHRyaWJ1dGUoIm9ud2hlZWwiLCAicmV0dXJuOyIpLCB0ID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgaS5vbndoZWVsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCAmJiBlLmltcGxlbWVudGF0aW9uICYmIGUuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAmJiAhMCAhPT0gZS5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCIiLCAiIikgJiYgKHQgPSBlLmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIsICIzLjAiKSksIHQKICAgICAgICAgICAgICAgIH0oKSA/ICJ3aGVlbCIgOiAibW91c2V3aGVlbCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbm9ybWFsaXplOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IDAsCiAgICAgICAgICAgICAgICAgICAgaSA9IDAsCiAgICAgICAgICAgICAgICAgICAgcyA9IDAsCiAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gImRldGFpbCIgaW4gZSAmJiAoaSA9IGUuZGV0YWlsKSwgIndoZWVsRGVsdGEiIGluIGUgJiYgKGkgPSAtZS53aGVlbERlbHRhIC8gMTIwKSwgIndoZWVsRGVsdGFZIiBpbiBlICYmIChpID0gLWUud2hlZWxEZWx0YVkgLyAxMjApLCAid2hlZWxEZWx0YVgiIGluIGUgJiYgKHQgPSAtZS53aGVlbERlbHRhWCAvIDEyMCksICJheGlzIiBpbiBlICYmIGUuYXhpcyA9PT0gZS5IT1JJWk9OVEFMX0FYSVMgJiYgKHQgPSBpLCBpID0gMCksIHMgPSAxMCAqIHQsIGEgPSAxMCAqIGksICJkZWx0YVkiIGluIGUgJiYgKGEgPSBlLmRlbHRhWSksICJkZWx0YVgiIGluIGUgJiYgKHMgPSBlLmRlbHRhWCksIGUuc2hpZnRLZXkgJiYgIXMgJiYgKHMgPSBhLCBhID0gMCksIChzIHx8IGEpICYmIGUuZGVsdGFNb2RlICYmICgxID09PSBlLmRlbHRhTW9kZSA/IChzICo9IDQwLCBhICo9IDQwKSA6IChzICo9IDgwMCwgYSAqPSA4MDApKSwgcyAmJiAhdCAmJiAodCA9IHMgPCAxID8gLTEgOiAxKSwgYSAmJiAhaSAmJiAoaSA9IGEgPCAxID8gLTEgOiAxKSwgewogICAgICAgICAgICAgICAgICAgIHNwaW5YOiB0LAogICAgICAgICAgICAgICAgICAgIHNwaW5ZOiBpLAogICAgICAgICAgICAgICAgICAgIHBpeGVsWDogcywKICAgICAgICAgICAgICAgICAgICBwaXhlbFk6IGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGFuZGxlTW91c2VFbnRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlRW50ZXJlZCA9ICEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhhbmRsZU1vdXNlTGVhdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5tb3VzZUVudGVyZWQgPSAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBoYW5kbGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZSwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBhID0gaS5wYXJhbXMubW91c2V3aGVlbDsKICAgICAgICAgICAgICAgIGkucGFyYW1zLmNzc01vZGUgJiYgdC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdmFyIHIgPSBpLiRlbDsKICAgICAgICAgICAgICAgIGlmICgiY29udGFpbmVyIiAhPT0gaS5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZWQgJiYgKHIgPSBzKGkucGFyYW1zLm1vdXNld2hlZWwuZXZlbnRzVGFyZ2VkKSksICFpLm1vdXNlRW50ZXJlZCAmJiAhclswXS5jb250YWlucyh0LnRhcmdldCkgJiYgIWEucmVsZWFzZU9uRWRnZXMpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIHQub3JpZ2luYWxFdmVudCAmJiAodCA9IHQub3JpZ2luYWxFdmVudCk7CiAgICAgICAgICAgICAgICB2YXIgbyA9IDAsCiAgICAgICAgICAgICAgICAgICAgbCA9IGkucnRsVHJhbnNsYXRlID8gLTEgOiAxLAogICAgICAgICAgICAgICAgICAgIGQgPSBpZS5ub3JtYWxpemUodCk7CiAgICAgICAgICAgICAgICBpZiAoYS5mb3JjZVRvQXhpcykKICAgICAgICAgICAgICAgICAgICBpZiAoaS5pc0hvcml6b250YWwoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShNYXRoLmFicyhkLnBpeGVsWCkgPiBNYXRoLmFicyhkLnBpeGVsWSkpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBkLnBpeGVsWCAqIGwKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShNYXRoLmFicyhkLnBpeGVsWSkgPiBNYXRoLmFicyhkLnBpeGVsWCkpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBkLnBpeGVsWQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgbyA9IE1hdGguYWJzKGQucGl4ZWxYKSA+IE1hdGguYWJzKGQucGl4ZWxZKSA/IC1kLnBpeGVsWCAqIGwgOiAtZC5waXhlbFk7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gbykgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgaWYgKGEuaW52ZXJ0ICYmIChvID0gLW8pLCBpLnBhcmFtcy5mcmVlTW9kZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBoID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogbi5ub3coKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhOiBNYXRoLmFicyhvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogTWF0aC5zaWduKG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBpLm1vdXNld2hlZWwubGFzdEV2ZW50QmVmb3JlU25hcCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHAgJiYgaC50aW1lIDwgcC50aW1lICsgNTAwICYmIGguZGVsdGEgPD0gcC5kZWx0YSAmJiBoLmRpcmVjdGlvbiA9PT0gcC5kaXJlY3Rpb247CiAgICAgICAgICAgICAgICAgICAgaWYgKCFjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkubW91c2V3aGVlbC5sYXN0RXZlbnRCZWZvcmVTbmFwID0gdm9pZCAwLCBpLnBhcmFtcy5sb29wICYmIGkubG9vcEZpeCgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGkuZ2V0VHJhbnNsYXRlKCkgKyBvICogYS5zZW5zaXRpdml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBpLmlzQmVnaW5uaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGkuaXNFbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID49IGkubWluVHJhbnNsYXRlKCkgJiYgKHUgPSBpLm1pblRyYW5zbGF0ZSgpKSwgdSA8PSBpLm1heFRyYW5zbGF0ZSgpICYmICh1ID0gaS5tYXhUcmFuc2xhdGUoKSksIGkuc2V0VHJhbnNpdGlvbigwKSwgaS5zZXRUcmFuc2xhdGUodSksIGkudXBkYXRlUHJvZ3Jlc3MoKSwgaS51cGRhdGVBY3RpdmVJbmRleCgpLCBpLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwgKCF2ICYmIGkuaXNCZWdpbm5pbmcgfHwgIWYgJiYgaS5pc0VuZCkgJiYgaS51cGRhdGVTbGlkZXNDbGFzc2VzKCksIGkucGFyYW1zLmZyZWVNb2RlU3RpY2t5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoaS5tb3VzZXdoZWVsLnRpbWVvdXQpLCBpLm1vdXNld2hlZWwudGltZW91dCA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gaS5tb3VzZXdoZWVsLnJlY2VudFdoZWVsRXZlbnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5sZW5ndGggPj0gMTUgJiYgbS5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBtLmxlbmd0aCA/IG1bbS5sZW5ndGggLSAxXSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtLnB1c2goaCksIGcgJiYgKGguZGVsdGEgPiBnLmRlbHRhIHx8IGguZGlyZWN0aW9uICE9PSBnLmRpcmVjdGlvbikpIG0uc3BsaWNlKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobS5sZW5ndGggPj0gMTUgJiYgaC50aW1lIC0gYi50aW1lIDwgNTAwICYmIGIuZGVsdGEgLSBoLmRlbHRhID49IDEgJiYgaC5kZWx0YSA8PSA2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBvID4gMCA/IC44IDogLjI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5tb3VzZXdoZWVsLmxhc3RFdmVudEJlZm9yZVNuYXAgPSBoLCBtLnNwbGljZSgwKSwgaS5tb3VzZXdoZWVsLnRpbWVvdXQgPSBuLm5leHRUaWNrKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5zbGlkZVRvQ2xvc2VzdChpLnBhcmFtcy5zcGVlZCwgITAsIHZvaWQgMCwgdykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkubW91c2V3aGVlbC50aW1lb3V0IHx8IChpLm1vdXNld2hlZWwudGltZW91dCA9IG4ubmV4dFRpY2soKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkubW91c2V3aGVlbC5sYXN0RXZlbnRCZWZvcmVTbmFwID0gaCwgbS5zcGxpY2UoMCksIGkuc2xpZGVUb0Nsb3Nlc3QoaS5wYXJhbXMuc3BlZWQsICEwLCB2b2lkIDAsIC41KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDUwMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgfHwgaS5lbWl0KCJzY3JvbGwiLCB0KSwgaS5wYXJhbXMuYXV0b3BsYXkgJiYgaS5wYXJhbXMuYXV0b3BsYXlEaXNhYmxlT25JbnRlcmFjdGlvbiAmJiBpLmF1dG9wbGF5LnN0b3AoKSwgdSA9PT0gaS5taW5UcmFuc2xhdGUoKSB8fCB1ID09PSBpLm1heFRyYW5zbGF0ZSgpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciB5ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogbi5ub3coKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhOiBNYXRoLmFicyhvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogTWF0aC5zaWduKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3OiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBpLm1vdXNld2hlZWwucmVjZW50V2hlZWxFdmVudHM7CiAgICAgICAgICAgICAgICAgICAgeC5sZW5ndGggPj0gMiAmJiB4LnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIFQgPSB4Lmxlbmd0aCA/IHhbeC5sZW5ndGggLSAxXSA6IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoeC5wdXNoKHkpLCBUID8gKHkuZGlyZWN0aW9uICE9PSBULmRpcmVjdGlvbiB8fCB5LmRlbHRhID4gVC5kZWx0YSkgJiYgaS5tb3VzZXdoZWVsLmFuaW1hdGVTbGlkZXIoeSkgOiBpLm1vdXNld2hlZWwuYW5pbWF0ZVNsaWRlcih5KSwgaS5tb3VzZXdoZWVsLnJlbGVhc2VTY3JvbGwoeSkpIHJldHVybiAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHQucHJldmVudERlZmF1bHQgPyB0LnByZXZlbnREZWZhdWx0KCkgOiB0LnJldHVyblZhbHVlID0gITEsICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFuaW1hdGVTbGlkZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmRlbHRhID49IDYgJiYgbi5ub3coKSAtIHRoaXMubW91c2V3aGVlbC5sYXN0U2Nyb2xsVGltZSA8IDYwIHx8IChlLmRpcmVjdGlvbiA8IDAgPyB0aGlzLmlzRW5kICYmICF0aGlzLnBhcmFtcy5sb29wIHx8IHRoaXMuYW5pbWF0aW5nIHx8ICh0aGlzLnNsaWRlTmV4dCgpLCB0aGlzLmVtaXQoInNjcm9sbCIsIGUucmF3KSkgOiB0aGlzLmlzQmVnaW5uaW5nICYmICF0aGlzLnBhcmFtcy5sb29wIHx8IHRoaXMuYW5pbWF0aW5nIHx8ICh0aGlzLnNsaWRlUHJldigpLCB0aGlzLmVtaXQoInNjcm9sbCIsIGUucmF3KSksIHRoaXMubW91c2V3aGVlbC5sYXN0U2Nyb2xsVGltZSA9IChuZXcgdC5EYXRlKS5nZXRUaW1lKCksICExKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZWxlYXNlU2Nyb2xsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyYW1zLm1vdXNld2hlZWw7CiAgICAgICAgICAgICAgICBpZiAoZS5kaXJlY3Rpb24gPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNFbmQgJiYgIXRoaXMucGFyYW1zLmxvb3AgJiYgdC5yZWxlYXNlT25FZGdlcykgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNCZWdpbm5pbmcgJiYgIXRoaXMucGFyYW1zLmxvb3AgJiYgdC5yZWxlYXNlT25FZGdlcykgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVuYWJsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGllLmV2ZW50KCk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMuY3NzTW9kZSkgcmV0dXJuIHRoaXMud3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSwgdGhpcy5tb3VzZXdoZWVsLmhhbmRsZSksICEwOwogICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3VzZXdoZWVsLmVuYWJsZWQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy4kZWw7CiAgICAgICAgICAgICAgICByZXR1cm4gImNvbnRhaW5lciIgIT09IHRoaXMucGFyYW1zLm1vdXNld2hlZWwuZXZlbnRzVGFyZ2VkICYmICh0ID0gcyh0aGlzLnBhcmFtcy5tb3VzZXdoZWVsLmV2ZW50c1RhcmdlZCkpLCB0Lm9uKCJtb3VzZWVudGVyIiwgdGhpcy5tb3VzZXdoZWVsLmhhbmRsZU1vdXNlRW50ZXIpLCB0Lm9uKCJtb3VzZWxlYXZlIiwgdGhpcy5tb3VzZXdoZWVsLmhhbmRsZU1vdXNlTGVhdmUpLCB0Lm9uKGUsIHRoaXMubW91c2V3aGVlbC5oYW5kbGUpLCB0aGlzLm1vdXNld2hlZWwuZW5hYmxlZCA9ICEwLCAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gaWUuZXZlbnQoKTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcy5jc3NNb2RlKSByZXR1cm4gdGhpcy53cmFwcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcihlLCB0aGlzLm1vdXNld2hlZWwuaGFuZGxlKSwgITA7CiAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5tb3VzZXdoZWVsLmVuYWJsZWQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy4kZWw7CiAgICAgICAgICAgICAgICByZXR1cm4gImNvbnRhaW5lciIgIT09IHRoaXMucGFyYW1zLm1vdXNld2hlZWwuZXZlbnRzVGFyZ2VkICYmICh0ID0gcyh0aGlzLnBhcmFtcy5tb3VzZXdoZWVsLmV2ZW50c1RhcmdlZCkpLCB0Lm9mZihlLCB0aGlzLm1vdXNld2hlZWwuaGFuZGxlKSwgdGhpcy5tb3VzZXdoZWVsLmVuYWJsZWQgPSAhMSwgITAKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc2UgPSB7CiAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucGFyYW1zLm5hdmlnYXRpb247CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFyYW1zLmxvb3ApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMubmF2aWdhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuJG5leHRFbCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuJHByZXZFbDsKICAgICAgICAgICAgICAgICAgICBzICYmIHMubGVuZ3RoID4gMCAmJiAodGhpcy5pc0JlZ2lubmluZyA/IHMuYWRkQ2xhc3MoZS5kaXNhYmxlZENsYXNzKSA6IHMucmVtb3ZlQ2xhc3MoZS5kaXNhYmxlZENsYXNzKSwgc1t0aGlzLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHRoaXMuaXNMb2NrZWQgPyAiYWRkQ2xhc3MiIDogInJlbW92ZUNsYXNzIl0oZS5sb2NrQ2xhc3MpKSwgaSAmJiBpLmxlbmd0aCA+IDAgJiYgKHRoaXMuaXNFbmQgPyBpLmFkZENsYXNzKGUuZGlzYWJsZWRDbGFzcykgOiBpLnJlbW92ZUNsYXNzKGUuZGlzYWJsZWRDbGFzcyksIGlbdGhpcy5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiB0aGlzLmlzTG9ja2VkID8gImFkZENsYXNzIiA6ICJyZW1vdmVDbGFzcyJdKGUubG9ja0NsYXNzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25QcmV2Q2xpY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgdGhpcy5pc0JlZ2lubmluZyAmJiAhdGhpcy5wYXJhbXMubG9vcCB8fCB0aGlzLnNsaWRlUHJldigpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uTmV4dENsaWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuaXNFbmQgJiYgIXRoaXMucGFyYW1zLmxvb3AgfHwgdGhpcy5zbGlkZU5leHQoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0LCBpID0gdGhpcy5wYXJhbXMubmF2aWdhdGlvbjsKICAgICAgICAgICAgICAgIChpLm5leHRFbCB8fCBpLnByZXZFbCkgJiYgKGkubmV4dEVsICYmIChlID0gcyhpLm5leHRFbCksIHRoaXMucGFyYW1zLnVuaXF1ZU5hdkVsZW1lbnRzICYmICJzdHJpbmciID09IHR5cGVvZiBpLm5leHRFbCAmJiBlLmxlbmd0aCA+IDEgJiYgMSA9PT0gdGhpcy4kZWwuZmluZChpLm5leHRFbCkubGVuZ3RoICYmIChlID0gdGhpcy4kZWwuZmluZChpLm5leHRFbCkpKSwgaS5wcmV2RWwgJiYgKHQgPSBzKGkucHJldkVsKSwgdGhpcy5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMgJiYgInN0cmluZyIgPT0gdHlwZW9mIGkucHJldkVsICYmIHQubGVuZ3RoID4gMSAmJiAxID09PSB0aGlzLiRlbC5maW5kKGkucHJldkVsKS5sZW5ndGggJiYgKHQgPSB0aGlzLiRlbC5maW5kKGkucHJldkVsKSkpLCBlICYmIGUubGVuZ3RoID4gMCAmJiBlLm9uKCJjbGljayIsIHRoaXMubmF2aWdhdGlvbi5vbk5leHRDbGljayksIHQgJiYgdC5sZW5ndGggPiAwICYmIHQub24oImNsaWNrIiwgdGhpcy5uYXZpZ2F0aW9uLm9uUHJldkNsaWNrKSwgbi5leHRlbmQodGhpcy5uYXZpZ2F0aW9uLCB7CiAgICAgICAgICAgICAgICAgICAgJG5leHRFbDogZSwKICAgICAgICAgICAgICAgICAgICBuZXh0RWw6IGUgJiYgZVswXSwKICAgICAgICAgICAgICAgICAgICAkcHJldkVsOiB0LAogICAgICAgICAgICAgICAgICAgIHByZXZFbDogdCAmJiB0WzBdCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMubmF2aWdhdGlvbiwKICAgICAgICAgICAgICAgICAgICB0ID0gZS4kbmV4dEVsLAogICAgICAgICAgICAgICAgICAgIGkgPSBlLiRwcmV2RWw7CiAgICAgICAgICAgICAgICB0ICYmIHQubGVuZ3RoICYmICh0Lm9mZigiY2xpY2siLCB0aGlzLm5hdmlnYXRpb24ub25OZXh0Q2xpY2spLCB0LnJlbW92ZUNsYXNzKHRoaXMucGFyYW1zLm5hdmlnYXRpb24uZGlzYWJsZWRDbGFzcykpLCBpICYmIGkubGVuZ3RoICYmIChpLm9mZigiY2xpY2siLCB0aGlzLm5hdmlnYXRpb24ub25QcmV2Q2xpY2spLCBpLnJlbW92ZUNsYXNzKHRoaXMucGFyYW1zLm5hdmlnYXRpb24uZGlzYWJsZWRDbGFzcykpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGFlID0gewogICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnJ0bCwKICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5wYXJhbXMucGFnaW5hdGlvbjsKICAgICAgICAgICAgICAgIGlmICh0LmVsICYmIHRoaXMucGFnaW5hdGlvbi5lbCAmJiB0aGlzLnBhZ2luYXRpb24uJGVsICYmIDAgIT09IHRoaXMucGFnaW5hdGlvbi4kZWwubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEgPSB0aGlzLnZpcnR1YWwgJiYgdGhpcy5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gdGhpcy52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiB0aGlzLnNsaWRlcy5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBhZ2luYXRpb24uJGVsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5wYXJhbXMubG9vcCA/IE1hdGguY2VpbCgoYSAtIDIgKiB0aGlzLmxvb3BlZFNsaWRlcykgLyB0aGlzLnBhcmFtcy5zbGlkZXNQZXJHcm91cCkgOiB0aGlzLnNuYXBHcmlkLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMubG9vcCA/ICgoaSA9IE1hdGguY2VpbCgodGhpcy5hY3RpdmVJbmRleCAtIHRoaXMubG9vcGVkU2xpZGVzKSAvIHRoaXMucGFyYW1zLnNsaWRlc1Blckdyb3VwKSkgPiBhIC0gMSAtIDIgKiB0aGlzLmxvb3BlZFNsaWRlcyAmJiAoaSAtPSBhIC0gMiAqIHRoaXMubG9vcGVkU2xpZGVzKSwgaSA+IG4gLSAxICYmIChpIC09IG4pLCBpIDwgMCAmJiAiYnVsbGV0cyIgIT09IHRoaXMucGFyYW1zLnBhZ2luYXRpb25UeXBlICYmIChpID0gbiArIGkpKSA6IGkgPSB2b2lkIDAgIT09IHRoaXMuc25hcEluZGV4ID8gdGhpcy5zbmFwSW5kZXggOiB0aGlzLmFjdGl2ZUluZGV4IHx8IDAsICJidWxsZXRzIiA9PT0gdC50eXBlICYmIHRoaXMucGFnaW5hdGlvbi5idWxsZXRzICYmIHRoaXMucGFnaW5hdGlvbi5idWxsZXRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGwsIGQsIGggPSB0aGlzLnBhZ2luYXRpb24uYnVsbGV0czsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuZHluYW1pY0J1bGxldHMgJiYgKHRoaXMucGFnaW5hdGlvbi5idWxsZXRTaXplID0gaC5lcSgwKVt0aGlzLmlzSG9yaXpvbnRhbCgpID8gIm91dGVyV2lkdGgiIDogIm91dGVySGVpZ2h0Il0oITApLCByLmNzcyh0aGlzLmlzSG9yaXpvbnRhbCgpID8gIndpZHRoIiA6ICJoZWlnaHQiLCB0aGlzLnBhZ2luYXRpb24uYnVsbGV0U2l6ZSAqICh0LmR5bmFtaWNNYWluQnVsbGV0cyArIDQpICsgInB4IiksIHQuZHluYW1pY01haW5CdWxsZXRzID4gMSAmJiB2b2lkIDAgIT09IHRoaXMucHJldmlvdXNJbmRleCAmJiAodGhpcy5wYWdpbmF0aW9uLmR5bmFtaWNCdWxsZXRJbmRleCArPSBpIC0gdGhpcy5wcmV2aW91c0luZGV4LCB0aGlzLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4ID4gdC5keW5hbWljTWFpbkJ1bGxldHMgLSAxID8gdGhpcy5wYWdpbmF0aW9uLmR5bmFtaWNCdWxsZXRJbmRleCA9IHQuZHluYW1pY01haW5CdWxsZXRzIC0gMSA6IHRoaXMucGFnaW5hdGlvbi5keW5hbWljQnVsbGV0SW5kZXggPCAwICYmICh0aGlzLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4ID0gMCkpLCBvID0gaSAtIHRoaXMucGFnaW5hdGlvbi5keW5hbWljQnVsbGV0SW5kZXgsIGQgPSAoKGwgPSBvICsgKE1hdGgubWluKGgubGVuZ3RoLCB0LmR5bmFtaWNNYWluQnVsbGV0cykgLSAxKSkgKyBvKSAvIDIpLCBoLnJlbW92ZUNsYXNzKHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiICIgKyB0LmJ1bGxldEFjdGl2ZUNsYXNzICsgIi1uZXh0ICIgKyB0LmJ1bGxldEFjdGl2ZUNsYXNzICsgIi1uZXh0LW5leHQgIiArIHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiLXByZXYgIiArIHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiLXByZXYtcHJldiAiICsgdC5idWxsZXRBY3RpdmVDbGFzcyArICItbWFpbiIpLCByLmxlbmd0aCA+IDEpIGguZWFjaCgoZnVuY3Rpb24oZSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBzKGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLmluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID09PSBpICYmIHIuYWRkQ2xhc3ModC5idWxsZXRBY3RpdmVDbGFzcyksIHQuZHluYW1pY0J1bGxldHMgJiYgKG4gPj0gbyAmJiBuIDw9IGwgJiYgci5hZGRDbGFzcyh0LmJ1bGxldEFjdGl2ZUNsYXNzICsgIi1tYWluIiksIG4gPT09IG8gJiYgci5wcmV2KCkuYWRkQ2xhc3ModC5idWxsZXRBY3RpdmVDbGFzcyArICItcHJldiIpLnByZXYoKS5hZGRDbGFzcyh0LmJ1bGxldEFjdGl2ZUNsYXNzICsgIi1wcmV2LXByZXYiKSwgbiA9PT0gbCAmJiByLm5leHQoKS5hZGRDbGFzcyh0LmJ1bGxldEFjdGl2ZUNsYXNzICsgIi1uZXh0IikubmV4dCgpLmFkZENsYXNzKHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiLW5leHQtbmV4dCIpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBoLmVxKGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwLmluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5hZGRDbGFzcyh0LmJ1bGxldEFjdGl2ZUNsYXNzKSwgdC5keW5hbWljQnVsbGV0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHUgPSBoLmVxKG8pLCB2ID0gaC5lcShsKSwgZiA9IG87IGYgPD0gbDsgZiArPSAxKSBoLmVxKGYpLmFkZENsYXNzKHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiLW1haW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMubG9vcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj0gaC5sZW5ndGggLSB0LmR5bmFtaWNNYWluQnVsbGV0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbSA9IHQuZHluYW1pY01haW5CdWxsZXRzOyBtID49IDA7IG0gLT0gMSkgaC5lcShoLmxlbmd0aCAtIG0pLmFkZENsYXNzKHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiLW1haW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguZXEoaC5sZW5ndGggLSB0LmR5bmFtaWNNYWluQnVsbGV0cyAtIDEpLmFkZENsYXNzKHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiLXByZXYiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdS5wcmV2KCkuYWRkQ2xhc3ModC5idWxsZXRBY3RpdmVDbGFzcyArICItcHJldiIpLnByZXYoKS5hZGRDbGFzcyh0LmJ1bGxldEFjdGl2ZUNsYXNzICsgIi1wcmV2LXByZXYiKSwgdi5uZXh0KCkuYWRkQ2xhc3ModC5idWxsZXRBY3RpdmVDbGFzcyArICItbmV4dCIpLm5leHQoKS5hZGRDbGFzcyh0LmJ1bGxldEFjdGl2ZUNsYXNzICsgIi1uZXh0LW5leHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHUucHJldigpLmFkZENsYXNzKHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiLXByZXYiKS5wcmV2KCkuYWRkQ2xhc3ModC5idWxsZXRBY3RpdmVDbGFzcyArICItcHJldi1wcmV2IiksIHYubmV4dCgpLmFkZENsYXNzKHQuYnVsbGV0QWN0aXZlQ2xhc3MgKyAiLW5leHQiKS5uZXh0KCkuYWRkQ2xhc3ModC5idWxsZXRBY3RpdmVDbGFzcyArICItbmV4dC1uZXh0IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5keW5hbWljQnVsbGV0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBNYXRoLm1pbihoLmxlbmd0aCwgdC5keW5hbWljTWFpbkJ1bGxldHMgKyA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gKHRoaXMucGFnaW5hdGlvbi5idWxsZXRTaXplICogZyAtIHRoaXMucGFnaW5hdGlvbi5idWxsZXRTaXplKSAvIDIgLSBkICogdGhpcy5wYWdpbmF0aW9uLmJ1bGxldFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGUgPyAicmlnaHQiIDogImxlZnQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jc3ModGhpcy5pc0hvcml6b250YWwoKSA/IHcgOiAidG9wIiwgYiArICJweCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmcmFjdGlvbiIgPT09IHQudHlwZSAmJiAoci5maW5kKCIuIiArIHQuY3VycmVudENsYXNzKS50ZXh0KHQuZm9ybWF0RnJhY3Rpb25DdXJyZW50KGkgKyAxKSksIHIuZmluZCgiLiIgKyB0LnRvdGFsQ2xhc3MpLnRleHQodC5mb3JtYXRGcmFjdGlvblRvdGFsKG4pKSksICJwcm9ncmVzc2JhciIgPT09IHQudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeTsKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHQucHJvZ3Jlc3NiYXJPcHBvc2l0ZSA/IHRoaXMuaXNIb3Jpem9udGFsKCkgPyAidmVydGljYWwiIDogImhvcml6b250YWwiIDogdGhpcy5pc0hvcml6b250YWwoKSA/ICJob3Jpem9udGFsIiA6ICJ2ZXJ0aWNhbCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gKGkgKyAxKSAvIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAiaG9yaXpvbnRhbCIgPT09IHkgPyBUID0geCA6IEUgPSB4LCByLmZpbmQoIi4iICsgdC5wcm9ncmVzc2JhckZpbGxDbGFzcykudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGVYKCIgKyBUICsgIikgc2NhbGVZKCIgKyBFICsgIikiKS50cmFuc2l0aW9uKHRoaXMucGFyYW1zLnNwZWVkKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIiA9PT0gdC50eXBlICYmIHQucmVuZGVyQ3VzdG9tID8gKHIuaHRtbCh0LnJlbmRlckN1c3RvbSh0aGlzLCBpICsgMSwgbikpLCB0aGlzLmVtaXQoInBhZ2luYXRpb25SZW5kZXIiLCB0aGlzLCByWzBdKSkgOiB0aGlzLmVtaXQoInBhZ2luYXRpb25VcGRhdGUiLCB0aGlzLCByWzBdKSwgclt0aGlzLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHRoaXMuaXNMb2NrZWQgPyAiYWRkQ2xhc3MiIDogInJlbW92ZUNsYXNzIl0odC5sb2NrQ2xhc3MpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucGFyYW1zLnBhZ2luYXRpb247CiAgICAgICAgICAgICAgICBpZiAoZS5lbCAmJiB0aGlzLnBhZ2luYXRpb24uZWwgJiYgdGhpcy5wYWdpbmF0aW9uLiRlbCAmJiAwICE9PSB0aGlzLnBhZ2luYXRpb24uJGVsLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy52aXJ0dWFsICYmIHRoaXMucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCA/IHRoaXMudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogdGhpcy5zbGlkZXMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5wYWdpbmF0aW9uLiRlbCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICIiOwogICAgICAgICAgICAgICAgICAgIGlmICgiYnVsbGV0cyIgPT09IGUudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gdGhpcy5wYXJhbXMubG9vcCA/IE1hdGguY2VpbCgodCAtIDIgKiB0aGlzLmxvb3BlZFNsaWRlcykgLyB0aGlzLnBhcmFtcy5zbGlkZXNQZXJHcm91cCkgOiB0aGlzLnNuYXBHcmlkLmxlbmd0aCwgciA9IDA7IHIgPCBhOyByICs9IDEpIGUucmVuZGVyQnVsbGV0ID8gcyArPSBlLnJlbmRlckJ1bGxldC5jYWxsKHRoaXMsIHIsIGUuYnVsbGV0Q2xhc3MpIDogcyArPSAiPCIgKyBlLmJ1bGxldEVsZW1lbnQgKyAnIGNsYXNzPSInICsgZS5idWxsZXRDbGFzcyArICciPjwvJyArIGUuYnVsbGV0RWxlbWVudCArICI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgaS5odG1sKHMpLCB0aGlzLnBhZ2luYXRpb24uYnVsbGV0cyA9IGkuZmluZCgiLiIgKyBlLmJ1bGxldENsYXNzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAiZnJhY3Rpb24iID09PSBlLnR5cGUgJiYgKHMgPSBlLnJlbmRlckZyYWN0aW9uID8gZS5yZW5kZXJGcmFjdGlvbi5jYWxsKHRoaXMsIGUuY3VycmVudENsYXNzLCBlLnRvdGFsQ2xhc3MpIDogJzxzcGFuIGNsYXNzPSInICsgZS5jdXJyZW50Q2xhc3MgKyAnIj48L3NwYW4+IC8gPHNwYW4gY2xhc3M9IicgKyBlLnRvdGFsQ2xhc3MgKyAnIj48L3NwYW4+JywgaS5odG1sKHMpKSwgInByb2dyZXNzYmFyIiA9PT0gZS50eXBlICYmIChzID0gZS5yZW5kZXJQcm9ncmVzc2JhciA/IGUucmVuZGVyUHJvZ3Jlc3NiYXIuY2FsbCh0aGlzLCBlLnByb2dyZXNzYmFyRmlsbENsYXNzKSA6ICc8c3BhbiBjbGFzcz0iJyArIGUucHJvZ3Jlc3NiYXJGaWxsQ2xhc3MgKyAnIj48L3NwYW4+JywgaS5odG1sKHMpKSwgImN1c3RvbSIgIT09IGUudHlwZSAmJiB0aGlzLmVtaXQoInBhZ2luYXRpb25SZW5kZXIiLCB0aGlzLnBhZ2luYXRpb24uJGVsWzBdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICB0ID0gZS5wYXJhbXMucGFnaW5hdGlvbjsKICAgICAgICAgICAgICAgIGlmICh0LmVsKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBzKHQuZWwpOwogICAgICAgICAgICAgICAgICAgIDAgIT09IGkubGVuZ3RoICYmIChlLnBhcmFtcy51bmlxdWVOYXZFbGVtZW50cyAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdC5lbCAmJiBpLmxlbmd0aCA+IDEgJiYgMSA9PT0gZS4kZWwuZmluZCh0LmVsKS5sZW5ndGggJiYgKGkgPSBlLiRlbC5maW5kKHQuZWwpKSwgImJ1bGxldHMiID09PSB0LnR5cGUgJiYgdC5jbGlja2FibGUgJiYgaS5hZGRDbGFzcyh0LmNsaWNrYWJsZUNsYXNzKSwgaS5hZGRDbGFzcyh0Lm1vZGlmaWVyQ2xhc3MgKyB0LnR5cGUpLCAiYnVsbGV0cyIgPT09IHQudHlwZSAmJiB0LmR5bmFtaWNCdWxsZXRzICYmIChpLmFkZENsYXNzKCIiICsgdC5tb2RpZmllckNsYXNzICsgdC50eXBlICsgIi1keW5hbWljIiksIGUucGFnaW5hdGlvbi5keW5hbWljQnVsbGV0SW5kZXggPSAwLCB0LmR5bmFtaWNNYWluQnVsbGV0cyA8IDEgJiYgKHQuZHluYW1pY01haW5CdWxsZXRzID0gMSkpLCAicHJvZ3Jlc3NiYXIiID09PSB0LnR5cGUgJiYgdC5wcm9ncmVzc2Jhck9wcG9zaXRlICYmIGkuYWRkQ2xhc3ModC5wcm9ncmVzc2Jhck9wcG9zaXRlQ2xhc3MpLCB0LmNsaWNrYWJsZSAmJiBpLm9uKCJjbGljayIsICIuIiArIHQuYnVsbGV0Q2xhc3MsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBzKHRoaXMpLmluZGV4KCkgKiBlLnBhcmFtcy5zbGlkZXNQZXJHcm91cDsKICAgICAgICAgICAgICAgICAgICAgICAgZS5wYXJhbXMubG9vcCAmJiAoaSArPSBlLmxvb3BlZFNsaWRlcyksIGUuc2xpZGVUbyhpKQogICAgICAgICAgICAgICAgICAgIH0pKSwgbi5leHRlbmQoZS5wYWdpbmF0aW9uLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgZWw6IGlbMF0KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucGFyYW1zLnBhZ2luYXRpb247CiAgICAgICAgICAgICAgICBpZiAoZS5lbCAmJiB0aGlzLnBhZ2luYXRpb24uZWwgJiYgdGhpcy5wYWdpbmF0aW9uLiRlbCAmJiAwICE9PSB0aGlzLnBhZ2luYXRpb24uJGVsLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5wYWdpbmF0aW9uLiRlbDsKICAgICAgICAgICAgICAgICAgICB0LnJlbW92ZUNsYXNzKGUuaGlkZGVuQ2xhc3MpLCB0LnJlbW92ZUNsYXNzKGUubW9kaWZpZXJDbGFzcyArIGUudHlwZSksIHRoaXMucGFnaW5hdGlvbi5idWxsZXRzICYmIHRoaXMucGFnaW5hdGlvbi5idWxsZXRzLnJlbW92ZUNsYXNzKGUuYnVsbGV0QWN0aXZlQ2xhc3MpLCBlLmNsaWNrYWJsZSAmJiB0Lm9mZigiY2xpY2siLCAiLiIgKyBlLmJ1bGxldENsYXNzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZSA9IHsKICAgICAgICAgICAgc2V0VHJhbnNsYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcy5zY3JvbGxiYXIuZWwgJiYgdGhpcy5zY3JvbGxiYXIuZWwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuc2Nyb2xsYmFyLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5ydGxUcmFuc2xhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnByb2dyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5kcmFnU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUudHJhY2tTaXplLAogICAgICAgICAgICAgICAgICAgICAgICByID0gZS4kZHJhZ0VsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS4kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLnBhcmFtcy5zY3JvbGxiYXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gKGEgLSBzKSAqIGk7CiAgICAgICAgICAgICAgICAgICAgdCA/IChkID0gLWQpID4gMCA/IChsID0gcyAtIGQsIGQgPSAwKSA6IC1kICsgcyA+IGEgJiYgKGwgPSBhICsgZCkgOiBkIDwgMCA/IChsID0gcyArIGQsIGQgPSAwKSA6IGQgKyBzID4gYSAmJiAobCA9IGEgLSBkKSwgdGhpcy5pc0hvcml6b250YWwoKSA/IChyLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIiArIGQgKyAicHgsIDAsIDApIiksIHJbMF0uc3R5bGUud2lkdGggPSBsICsgInB4IikgOiAoci50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDBweCwgIiArIGQgKyAicHgsIDApIiksIHJbMF0uc3R5bGUuaGVpZ2h0ID0gbCArICJweCIpLCBvLmhpZGUgJiYgKGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbGJhci50aW1lb3V0KSwgblswXS5zdHlsZS5vcGFjaXR5ID0gMSwgdGhpcy5zY3JvbGxiYXIudGltZW91dCA9IHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBuWzBdLnN0eWxlLm9wYWNpdHkgPSAwLCBuLnRyYW5zaXRpb24oNDAwKQogICAgICAgICAgICAgICAgICAgIH0pLCAxZTMpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5zY3JvbGxiYXIuZWwgJiYgdGhpcy5zY3JvbGxiYXIuZWwgJiYgdGhpcy5zY3JvbGxiYXIuJGRyYWdFbC50cmFuc2l0aW9uKGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZVNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zLnNjcm9sbGJhci5lbCAmJiB0aGlzLnNjcm9sbGJhci5lbCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5zY3JvbGxiYXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLiRkcmFnRWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLiRlbDsKICAgICAgICAgICAgICAgICAgICB0WzBdLnN0eWxlLndpZHRoID0gIiIsIHRbMF0uc3R5bGUuaGVpZ2h0ID0gIiI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMsIGEgPSB0aGlzLmlzSG9yaXpvbnRhbCgpID8gaVswXS5vZmZzZXRXaWR0aCA6IGlbMF0ub2Zmc2V0SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5zaXplIC8gdGhpcy52aXJ0dWFsU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIgKiAoYSAvIHRoaXMuc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgcyA9ICJhdXRvIiA9PT0gdGhpcy5wYXJhbXMuc2Nyb2xsYmFyLmRyYWdTaXplID8gYSAqIHIgOiBwYXJzZUludCh0aGlzLnBhcmFtcy5zY3JvbGxiYXIuZHJhZ1NpemUsIDEwKSwgdGhpcy5pc0hvcml6b250YWwoKSA/IHRbMF0uc3R5bGUud2lkdGggPSBzICsgInB4IiA6IHRbMF0uc3R5bGUuaGVpZ2h0ID0gcyArICJweCIsIGlbMF0uc3R5bGUuZGlzcGxheSA9IHIgPj0gMSA/ICJub25lIiA6ICIiLCB0aGlzLnBhcmFtcy5zY3JvbGxiYXIuaGlkZSAmJiAoaVswXS5zdHlsZS5vcGFjaXR5ID0gMCksIG4uZXh0ZW5kKGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tTaXplOiBhLAogICAgICAgICAgICAgICAgICAgICAgICBkaXZpZGVyOiByLAogICAgICAgICAgICAgICAgICAgICAgICBtb3ZlRGl2aWRlcjogbywKICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ1NpemU6IHMKICAgICAgICAgICAgICAgICAgICB9KSwgZS4kZWxbdGhpcy5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiB0aGlzLmlzTG9ja2VkID8gImFkZENsYXNzIiA6ICJyZW1vdmVDbGFzcyJdKHRoaXMucGFyYW1zLnNjcm9sbGJhci5sb2NrQ2xhc3MpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFBvaW50ZXJQb3NpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCkgPyAidG91Y2hzdGFydCIgPT09IGUudHlwZSB8fCAidG91Y2htb3ZlIiA9PT0gZS50eXBlID8gZS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFggOiBlLmNsaWVudFggOiAidG91Y2hzdGFydCIgPT09IGUudHlwZSB8fCAidG91Y2htb3ZlIiA9PT0gZS50eXBlID8gZS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFkgOiBlLmNsaWVudFkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0RHJhZ1Bvc2l0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgaSA9IHRoaXMuc2Nyb2xsYmFyLAogICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLnJ0bFRyYW5zbGF0ZSwKICAgICAgICAgICAgICAgICAgICBhID0gaS4kZWwsCiAgICAgICAgICAgICAgICAgICAgciA9IGkuZHJhZ1NpemUsCiAgICAgICAgICAgICAgICAgICAgbiA9IGkudHJhY2tTaXplLAogICAgICAgICAgICAgICAgICAgIG8gPSBpLmRyYWdTdGFydFBvczsKICAgICAgICAgICAgICAgIHQgPSAoaS5nZXRQb2ludGVyUG9zaXRpb24oZSkgLSBhLm9mZnNldCgpW3RoaXMuaXNIb3Jpem9udGFsKCkgPyAibGVmdCIgOiAidG9wIl0gLSAobnVsbCAhPT0gbyA/IG8gOiByIC8gMikpIC8gKG4gLSByKSwgdCA9IE1hdGgubWF4KE1hdGgubWluKHQsIDEpLCAwKSwgcyAmJiAodCA9IDEgLSB0KTsKICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy5taW5UcmFuc2xhdGUoKSArICh0aGlzLm1heFRyYW5zbGF0ZSgpIC0gdGhpcy5taW5UcmFuc2xhdGUoKSkgKiB0OwogICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9ncmVzcyhsKSwgdGhpcy5zZXRUcmFuc2xhdGUobCksIHRoaXMudXBkYXRlQWN0aXZlSW5kZXgoKSwgdGhpcy51cGRhdGVTbGlkZXNDbGFzc2VzKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25EcmFnU3RhcnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5wYXJhbXMuc2Nyb2xsYmFyLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnNjcm9sbGJhciwKICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy4kd3JhcHBlckVsLAogICAgICAgICAgICAgICAgICAgIGEgPSBpLiRlbCwKICAgICAgICAgICAgICAgICAgICByID0gaS4kZHJhZ0VsOwogICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxiYXIuaXNUb3VjaGVkID0gITAsIHRoaXMuc2Nyb2xsYmFyLmRyYWdTdGFydFBvcyA9IGUudGFyZ2V0ID09PSByWzBdIHx8IGUudGFyZ2V0ID09PSByID8gaS5nZXRQb2ludGVyUG9zaXRpb24oZSkgLSBlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0aGlzLmlzSG9yaXpvbnRhbCgpID8gImxlZnQiIDogInRvcCJdIDogbnVsbCwgZS5wcmV2ZW50RGVmYXVsdCgpLCBlLnN0b3BQcm9wYWdhdGlvbigpLCBzLnRyYW5zaXRpb24oMTAwKSwgci50cmFuc2l0aW9uKDEwMCksIGkuc2V0RHJhZ1Bvc2l0aW9uKGUpLCBjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxiYXIuZHJhZ1RpbWVvdXQpLCBhLnRyYW5zaXRpb24oMCksIHQuaGlkZSAmJiBhLmNzcygib3BhY2l0eSIsIDEpLCB0aGlzLnBhcmFtcy5jc3NNb2RlICYmIHRoaXMuJHdyYXBwZXJFbC5jc3MoInNjcm9sbC1zbmFwLXR5cGUiLCAibm9uZSIpLCB0aGlzLmVtaXQoInNjcm9sbGJhckRyYWdTdGFydCIsIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uRHJhZ01vdmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5zY3JvbGxiYXIsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuJHdyYXBwZXJFbCwKICAgICAgICAgICAgICAgICAgICBzID0gdC4kZWwsCiAgICAgICAgICAgICAgICAgICAgYSA9IHQuJGRyYWdFbDsKICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyLmlzVG91Y2hlZCAmJiAoZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERlZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMSwgdC5zZXREcmFnUG9zaXRpb24oZSksIGkudHJhbnNpdGlvbigwKSwgcy50cmFuc2l0aW9uKDApLCBhLnRyYW5zaXRpb24oMCksIHRoaXMuZW1pdCgic2Nyb2xsYmFyRHJhZ01vdmUiLCBlKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25EcmFnRW5kOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyYW1zLnNjcm9sbGJhciwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zY3JvbGxiYXIsCiAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuJHdyYXBwZXJFbCwKICAgICAgICAgICAgICAgICAgICBhID0gaS4kZWw7CiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGJhci5pc1RvdWNoZWQgJiYgKHRoaXMuc2Nyb2xsYmFyLmlzVG91Y2hlZCA9ICExLCB0aGlzLnBhcmFtcy5jc3NNb2RlICYmICh0aGlzLiR3cmFwcGVyRWwuY3NzKCJzY3JvbGwtc25hcC10eXBlIiwgIiIpLCBzLnRyYW5zaXRpb24oIiIpKSwgdC5oaWRlICYmIChjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxiYXIuZHJhZ1RpbWVvdXQpLCB0aGlzLnNjcm9sbGJhci5kcmFnVGltZW91dCA9IG4ubmV4dFRpY2soKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGEuY3NzKCJvcGFjaXR5IiwgMCksIGEudHJhbnNpdGlvbig0MDApCiAgICAgICAgICAgICAgICB9KSwgMWUzKSksIHRoaXMuZW1pdCgic2Nyb2xsYmFyRHJhZ0VuZCIsIGUpLCB0LnNuYXBPblJlbGVhc2UgJiYgdGhpcy5zbGlkZVRvQ2xvc2VzdCgpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBlbmFibGVEcmFnZ2FibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zLnNjcm9sbGJhci5lbCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5zY3JvbGxiYXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnRvdWNoRXZlbnRzVG91Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLnRvdWNoRXZlbnRzRGVza3RvcCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMucGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC4kZWxbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAhKCFvLnBhc3NpdmVMaXN0ZW5lciB8fCAhYS5wYXNzaXZlTGlzdGVuZXJzKSAmJiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAhKCFvLnBhc3NpdmVMaXN0ZW5lciB8fCAhYS5wYXNzaXZlTGlzdGVuZXJzKSAmJiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgby50b3VjaCA/IChyLmFkZEV2ZW50TGlzdGVuZXIoaS5zdGFydCwgdGhpcy5zY3JvbGxiYXIub25EcmFnU3RhcnQsIG4pLCByLmFkZEV2ZW50TGlzdGVuZXIoaS5tb3ZlLCB0aGlzLnNjcm9sbGJhci5vbkRyYWdNb3ZlLCBuKSwgci5hZGRFdmVudExpc3RlbmVyKGkuZW5kLCB0aGlzLnNjcm9sbGJhci5vbkRyYWdFbmQsIGwpKSA6IChyLmFkZEV2ZW50TGlzdGVuZXIocy5zdGFydCwgdGhpcy5zY3JvbGxiYXIub25EcmFnU3RhcnQsIG4pLCBlLmFkZEV2ZW50TGlzdGVuZXIocy5tb3ZlLCB0aGlzLnNjcm9sbGJhci5vbkRyYWdNb3ZlLCBuKSwgZS5hZGRFdmVudExpc3RlbmVyKHMuZW5kLCB0aGlzLnNjcm9sbGJhci5vbkRyYWdFbmQsIGwpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlRHJhZ2dhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcy5zY3JvbGxiYXIuZWwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuc2Nyb2xsYmFyLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy50b3VjaEV2ZW50c1RvdWNoLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy50b3VjaEV2ZW50c0Rlc2t0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuJGVsWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gISghby5wYXNzaXZlTGlzdGVuZXIgfHwgIWEucGFzc2l2ZUxpc3RlbmVycykgJiYgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gISghby5wYXNzaXZlTGlzdGVuZXIgfHwgIWEucGFzc2l2ZUxpc3RlbmVycykgJiYgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIG8udG91Y2ggPyAoci5yZW1vdmVFdmVudExpc3RlbmVyKGkuc3RhcnQsIHRoaXMuc2Nyb2xsYmFyLm9uRHJhZ1N0YXJ0LCBuKSwgci5yZW1vdmVFdmVudExpc3RlbmVyKGkubW92ZSwgdGhpcy5zY3JvbGxiYXIub25EcmFnTW92ZSwgbiksIHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLmVuZCwgdGhpcy5zY3JvbGxiYXIub25EcmFnRW5kLCBsKSkgOiAoci5yZW1vdmVFdmVudExpc3RlbmVyKHMuc3RhcnQsIHRoaXMuc2Nyb2xsYmFyLm9uRHJhZ1N0YXJ0LCBuKSwgZS5yZW1vdmVFdmVudExpc3RlbmVyKHMubW92ZSwgdGhpcy5zY3JvbGxiYXIub25EcmFnTW92ZSwgbiksIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLmVuZCwgdGhpcy5zY3JvbGxiYXIub25EcmFnRW5kLCBsKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMuc2Nyb2xsYmFyLmVsKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnNjcm9sbGJhciwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuJGVsLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5wYXJhbXMuc2Nyb2xsYmFyLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gcyhpLmVsKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy51bmlxdWVOYXZFbGVtZW50cyAmJiAic3RyaW5nIiA9PSB0eXBlb2YgaS5lbCAmJiBhLmxlbmd0aCA+IDEgJiYgMSA9PT0gdC5maW5kKGkuZWwpLmxlbmd0aCAmJiAoYSA9IHQuZmluZChpLmVsKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhLmZpbmQoIi4iICsgdGhpcy5wYXJhbXMuc2Nyb2xsYmFyLmRyYWdDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgMCA9PT0gci5sZW5ndGggJiYgKHIgPSBzKCc8ZGl2IGNsYXNzPSInICsgdGhpcy5wYXJhbXMuc2Nyb2xsYmFyLmRyYWdDbGFzcyArICciPjwvZGl2PicpLCBhLmFwcGVuZChyKSksIG4uZXh0ZW5kKGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsOiBhLAogICAgICAgICAgICAgICAgICAgICAgICBlbDogYVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgJGRyYWdFbDogciwKICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ0VsOiByWzBdCiAgICAgICAgICAgICAgICAgICAgfSksIGkuZHJhZ2dhYmxlICYmIGUuZW5hYmxlRHJhZ2dhYmxlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGJhci5kaXNhYmxlRHJhZ2dhYmxlKCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbmUgPSB7CiAgICAgICAgICAgIHNldFRyYW5zZm9ybTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnJ0bCwKICAgICAgICAgICAgICAgICAgICBhID0gcyhlKSwKICAgICAgICAgICAgICAgICAgICByID0gaSA/IC0xIDogMSwKICAgICAgICAgICAgICAgICAgICBuID0gYS5hdHRyKCJkYXRhLXN3aXBlci1wYXJhbGxheCIpIHx8ICIwIiwKICAgICAgICAgICAgICAgICAgICBvID0gYS5hdHRyKCJkYXRhLXN3aXBlci1wYXJhbGxheC14IiksCiAgICAgICAgICAgICAgICAgICAgbCA9IGEuYXR0cigiZGF0YS1zd2lwZXItcGFyYWxsYXgteSIpLAogICAgICAgICAgICAgICAgICAgIGQgPSBhLmF0dHIoImRhdGEtc3dpcGVyLXBhcmFsbGF4LXNjYWxlIiksCiAgICAgICAgICAgICAgICAgICAgaCA9IGEuYXR0cigiZGF0YS1zd2lwZXItcGFyYWxsYXgtb3BhY2l0eSIpOwogICAgICAgICAgICAgICAgaWYgKG8gfHwgbCA/IChvID0gbyB8fCAiMCIsIGwgPSBsIHx8ICIwIikgOiB0aGlzLmlzSG9yaXpvbnRhbCgpID8gKG8gPSBuLCBsID0gIjAiKSA6IChsID0gbiwgbyA9ICIwIiksIG8gPSBvLmluZGV4T2YoIiUiKSA+PSAwID8gcGFyc2VJbnQobywgMTApICogdCAqIHIgKyAiJSIgOiBvICogdCAqIHIgKyAicHgiLCBsID0gbC5pbmRleE9mKCIlIikgPj0gMCA/IHBhcnNlSW50KGwsIDEwKSAqIHQgKyAiJSIgOiBsICogdCArICJweCIsIG51bGwgIT0gaCkgewogICAgICAgICAgICAgICAgICAgIHZhciBwID0gaCAtIChoIC0gMSkgKiAoMSAtIE1hdGguYWJzKHQpKTsKICAgICAgICAgICAgICAgICAgICBhWzBdLnN0eWxlLm9wYWNpdHkgPSBwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBkKSBhLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIiArIG8gKyAiLCAiICsgbCArICIsIDBweCkiKTsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBjID0gZCAtIChkIC0gMSkgKiAoMSAtIE1hdGguYWJzKHQpKTsKICAgICAgICAgICAgICAgICAgICBhLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIiArIG8gKyAiLCAiICsgbCArICIsIDBweCkgc2NhbGUoIiArIGMgKyAiKSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgdCA9IGUuJGVsLAogICAgICAgICAgICAgICAgICAgIGkgPSBlLnNsaWRlcywKICAgICAgICAgICAgICAgICAgICBhID0gZS5wcm9ncmVzcywKICAgICAgICAgICAgICAgICAgICByID0gZS5zbmFwR3JpZDsKICAgICAgICAgICAgICAgIHQuY2hpbGRyZW4oIltkYXRhLXN3aXBlci1wYXJhbGxheF0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC14XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXldLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtb3BhY2l0eV0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC1zY2FsZV0iKS5lYWNoKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wYXJhbGxheC5zZXRUcmFuc2Zvcm0oaSwgYSkKICAgICAgICAgICAgICAgIH0pKSwgaS5lYWNoKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBpLnByb2dyZXNzOwogICAgICAgICAgICAgICAgICAgIGUucGFyYW1zLnNsaWRlc1Blckdyb3VwID4gMSAmJiAiYXV0byIgIT09IGUucGFyYW1zLnNsaWRlc1BlclZpZXcgJiYgKG4gKz0gTWF0aC5jZWlsKHQgLyAyKSAtIGEgKiAoci5sZW5ndGggLSAxKSksIG4gPSBNYXRoLm1pbihNYXRoLm1heChuLCAtMSksIDEpLCBzKGkpLmZpbmQoIltkYXRhLXN3aXBlci1wYXJhbGxheF0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC14XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXldLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtb3BhY2l0eV0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC1zY2FsZV0iKS5lYWNoKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFyYWxsYXguc2V0VHJhbnNmb3JtKGksIG4pCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gdGhpcy5wYXJhbXMuc3BlZWQpOwogICAgICAgICAgICAgICAgdGhpcy4kZWwuZmluZCgiW2RhdGEtc3dpcGVyLXBhcmFsbGF4XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXhdLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgteV0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC1vcGFjaXR5XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXNjYWxlXSIpLmVhY2goKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHMoaSksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludChhLmF0dHIoImRhdGEtc3dpcGVyLXBhcmFsbGF4LWR1cmF0aW9uIiksIDEwKSB8fCBlOwogICAgICAgICAgICAgICAgICAgIDAgPT09IGUgJiYgKHIgPSAwKSwgYS50cmFuc2l0aW9uKHIpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgb2UgPSB7CiAgICAgICAgICAgIGdldERpc3RhbmNlQmV0d2VlblRvdWNoZXM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldFRvdWNoZXMubGVuZ3RoIDwgMikgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCwKICAgICAgICAgICAgICAgICAgICBpID0gZS50YXJnZXRUb3VjaGVzWzBdLnBhZ2VZLAogICAgICAgICAgICAgICAgICAgIHMgPSBlLnRhcmdldFRvdWNoZXNbMV0ucGFnZVgsCiAgICAgICAgICAgICAgICAgICAgYSA9IGUudGFyZ2V0VG91Y2hlc1sxXS5wYWdlWTsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3cocyAtIHQsIDIpICsgTWF0aC5wb3coYSAtIGksIDIpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkdlc3R1cmVTdGFydDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnBhcmFtcy56b29tLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnpvb20sCiAgICAgICAgICAgICAgICAgICAgYSA9IGkuZ2VzdHVyZTsKICAgICAgICAgICAgICAgIGlmIChpLmZha2VHZXN0dXJlVG91Y2hlZCA9ICExLCBpLmZha2VHZXN0dXJlTW92ZWQgPSAhMSwgIW8uZ2VzdHVyZXMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoInRvdWNoc3RhcnQiICE9PSBlLnR5cGUgfHwgInRvdWNoc3RhcnQiID09PSBlLnR5cGUgJiYgZS50YXJnZXRUb3VjaGVzLmxlbmd0aCA8IDIpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpLmZha2VHZXN0dXJlVG91Y2hlZCA9ICEwLCBhLnNjYWxlU3RhcnQgPSBvZS5nZXREaXN0YW5jZUJldHdlZW5Ub3VjaGVzKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhLiRzbGlkZUVsICYmIGEuJHNsaWRlRWwubGVuZ3RoIHx8IChhLiRzbGlkZUVsID0gcyhlLnRhcmdldCkuY2xvc2VzdCgiLiIgKyB0aGlzLnBhcmFtcy5zbGlkZUNsYXNzKSwgMCA9PT0gYS4kc2xpZGVFbC5sZW5ndGggJiYgKGEuJHNsaWRlRWwgPSB0aGlzLnNsaWRlcy5lcSh0aGlzLmFjdGl2ZUluZGV4KSksIGEuJGltYWdlRWwgPSBhLiRzbGlkZUVsLmZpbmQoImltZywgc3ZnLCBjYW52YXMsIHBpY3R1cmUsIC5zd2lwZXItem9vbS10YXJnZXQiKSwgYS4kaW1hZ2VXcmFwRWwgPSBhLiRpbWFnZUVsLnBhcmVudCgiLiIgKyB0LmNvbnRhaW5lckNsYXNzKSwgYS5tYXhSYXRpbyA9IGEuJGltYWdlV3JhcEVsLmF0dHIoImRhdGEtc3dpcGVyLXpvb20iKSB8fCB0Lm1heFJhdGlvLCAwICE9PSBhLiRpbWFnZVdyYXBFbC5sZW5ndGgpID8gKGEuJGltYWdlRWwudHJhbnNpdGlvbigwKSwgdGhpcy56b29tLmlzU2NhbGluZyA9ICEwKSA6IGEuJGltYWdlRWwgPSB2b2lkIDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25HZXN0dXJlQ2hhbmdlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyYW1zLnpvb20sCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuem9vbSwKICAgICAgICAgICAgICAgICAgICBzID0gaS5nZXN0dXJlOwogICAgICAgICAgICAgICAgaWYgKCFvLmdlc3R1cmVzKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ0b3VjaG1vdmUiICE9PSBlLnR5cGUgfHwgInRvdWNobW92ZSIgPT09IGUudHlwZSAmJiBlLnRhcmdldFRvdWNoZXMubGVuZ3RoIDwgMikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGkuZmFrZUdlc3R1cmVNb3ZlZCA9ICEwLCBzLnNjYWxlTW92ZSA9IG9lLmdldERpc3RhbmNlQmV0d2VlblRvdWNoZXMoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHMuJGltYWdlRWwgJiYgMCAhPT0gcy4kaW1hZ2VFbC5sZW5ndGggJiYgKG8uZ2VzdHVyZXMgPyBpLnNjYWxlID0gZS5zY2FsZSAqIGkuY3VycmVudFNjYWxlIDogaS5zY2FsZSA9IHMuc2NhbGVNb3ZlIC8gcy5zY2FsZVN0YXJ0ICogaS5jdXJyZW50U2NhbGUsIGkuc2NhbGUgPiBzLm1heFJhdGlvICYmIChpLnNjYWxlID0gcy5tYXhSYXRpbyAtIDEgKyBNYXRoLnBvdyhpLnNjYWxlIC0gcy5tYXhSYXRpbyArIDEsIC41KSksIGkuc2NhbGUgPCB0Lm1pblJhdGlvICYmIChpLnNjYWxlID0gdC5taW5SYXRpbyArIDEgLSBNYXRoLnBvdyh0Lm1pblJhdGlvIC0gaS5zY2FsZSArIDEsIC41KSksIHMuJGltYWdlRWwudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoIiArIGkuc2NhbGUgKyAiKSIpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkdlc3R1cmVFbmQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5wYXJhbXMuem9vbSwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy56b29tLAogICAgICAgICAgICAgICAgICAgIHMgPSBpLmdlc3R1cmU7CiAgICAgICAgICAgICAgICBpZiAoIW8uZ2VzdHVyZXMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWkuZmFrZUdlc3R1cmVUb3VjaGVkIHx8ICFpLmZha2VHZXN0dXJlTW92ZWQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAoInRvdWNoZW5kIiAhPT0gZS50eXBlIHx8ICJ0b3VjaGVuZCIgPT09IGUudHlwZSAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA8IDIgJiYgIUkuYW5kcm9pZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGkuZmFrZUdlc3R1cmVUb3VjaGVkID0gITEsIGkuZmFrZUdlc3R1cmVNb3ZlZCA9ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzLiRpbWFnZUVsICYmIDAgIT09IHMuJGltYWdlRWwubGVuZ3RoICYmIChpLnNjYWxlID0gTWF0aC5tYXgoTWF0aC5taW4oaS5zY2FsZSwgcy5tYXhSYXRpbyksIHQubWluUmF0aW8pLCBzLiRpbWFnZUVsLnRyYW5zaXRpb24odGhpcy5wYXJhbXMuc3BlZWQpLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKCIgKyBpLnNjYWxlICsgIikiKSwgaS5jdXJyZW50U2NhbGUgPSBpLnNjYWxlLCBpLmlzU2NhbGluZyA9ICExLCAxID09PSBpLnNjYWxlICYmIChzLiRzbGlkZUVsID0gdm9pZCAwKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuem9vbSwKICAgICAgICAgICAgICAgICAgICBpID0gdC5nZXN0dXJlLAogICAgICAgICAgICAgICAgICAgIHMgPSB0LmltYWdlOwogICAgICAgICAgICAgICAgaS4kaW1hZ2VFbCAmJiAwICE9PSBpLiRpbWFnZUVsLmxlbmd0aCAmJiAocy5pc1RvdWNoZWQgfHwgKEkuYW5kcm9pZCAmJiBlLnByZXZlbnREZWZhdWx0KCksIHMuaXNUb3VjaGVkID0gITAsIHMudG91Y2hlc1N0YXJ0LnggPSAidG91Y2hzdGFydCIgPT09IGUudHlwZSA/IGUudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCA6IGUucGFnZVgsIHMudG91Y2hlc1N0YXJ0LnkgPSAidG91Y2hzdGFydCIgPT09IGUudHlwZSA/IGUudGFyZ2V0VG91Y2hlc1swXS5wYWdlWSA6IGUucGFnZVkpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBvblRvdWNoTW92ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnpvb20sCiAgICAgICAgICAgICAgICAgICAgaSA9IHQuZ2VzdHVyZSwKICAgICAgICAgICAgICAgICAgICBzID0gdC5pbWFnZSwKICAgICAgICAgICAgICAgICAgICBhID0gdC52ZWxvY2l0eTsKICAgICAgICAgICAgICAgIGlmIChpLiRpbWFnZUVsICYmIDAgIT09IGkuJGltYWdlRWwubGVuZ3RoICYmICh0aGlzLmFsbG93Q2xpY2sgPSAhMSwgcy5pc1RvdWNoZWQgJiYgaS4kc2xpZGVFbCkpIHsKICAgICAgICAgICAgICAgICAgICBzLmlzTW92ZWQgfHwgKHMud2lkdGggPSBpLiRpbWFnZUVsWzBdLm9mZnNldFdpZHRoLCBzLmhlaWdodCA9IGkuJGltYWdlRWxbMF0ub2Zmc2V0SGVpZ2h0LCBzLnN0YXJ0WCA9IG4uZ2V0VHJhbnNsYXRlKGkuJGltYWdlV3JhcEVsWzBdLCAieCIpIHx8IDAsIHMuc3RhcnRZID0gbi5nZXRUcmFuc2xhdGUoaS4kaW1hZ2VXcmFwRWxbMF0sICJ5IikgfHwgMCwgaS5zbGlkZVdpZHRoID0gaS4kc2xpZGVFbFswXS5vZmZzZXRXaWR0aCwgaS5zbGlkZUhlaWdodCA9IGkuJHNsaWRlRWxbMF0ub2Zmc2V0SGVpZ2h0LCBpLiRpbWFnZVdyYXBFbC50cmFuc2l0aW9uKDApLCB0aGlzLnJ0bCAmJiAocy5zdGFydFggPSAtcy5zdGFydFgsIHMuc3RhcnRZID0gLXMuc3RhcnRZKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBzLndpZHRoICogdC5zY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHMuaGVpZ2h0ICogdC5zY2FsZTsKICAgICAgICAgICAgICAgICAgICBpZiAoIShyIDwgaS5zbGlkZVdpZHRoICYmIG8gPCBpLnNsaWRlSGVpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5taW5YID0gTWF0aC5taW4oaS5zbGlkZVdpZHRoIC8gMiAtIHIgLyAyLCAwKSwgcy5tYXhYID0gLXMubWluWCwgcy5taW5ZID0gTWF0aC5taW4oaS5zbGlkZUhlaWdodCAvIDIgLSBvIC8gMiwgMCksIHMubWF4WSA9IC1zLm1pblksIHMudG91Y2hlc0N1cnJlbnQueCA9ICJ0b3VjaG1vdmUiID09PSBlLnR5cGUgPyBlLnRhcmdldFRvdWNoZXNbMF0ucGFnZVggOiBlLnBhZ2VYLCBzLnRvdWNoZXNDdXJyZW50LnkgPSAidG91Y2htb3ZlIiA9PT0gZS50eXBlID8gZS50YXJnZXRUb3VjaGVzWzBdLnBhZ2VZIDogZS5wYWdlWSwgIXMuaXNNb3ZlZCAmJiAhdC5pc1NjYWxpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSG9yaXpvbnRhbCgpICYmIChNYXRoLmZsb29yKHMubWluWCkgPT09IE1hdGguZmxvb3Iocy5zdGFydFgpICYmIHMudG91Y2hlc0N1cnJlbnQueCA8IHMudG91Y2hlc1N0YXJ0LnggfHwgTWF0aC5mbG9vcihzLm1heFgpID09PSBNYXRoLmZsb29yKHMuc3RhcnRYKSAmJiBzLnRvdWNoZXNDdXJyZW50LnggPiBzLnRvdWNoZXNTdGFydC54KSkgcmV0dXJuIHZvaWQocy5pc1RvdWNoZWQgPSAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNIb3Jpem9udGFsKCkgJiYgKE1hdGguZmxvb3Iocy5taW5ZKSA9PT0gTWF0aC5mbG9vcihzLnN0YXJ0WSkgJiYgcy50b3VjaGVzQ3VycmVudC55IDwgcy50b3VjaGVzU3RhcnQueSB8fCBNYXRoLmZsb29yKHMubWF4WSkgPT09IE1hdGguZmxvb3Iocy5zdGFydFkpICYmIHMudG91Y2hlc0N1cnJlbnQueSA+IHMudG91Y2hlc1N0YXJ0LnkpKSByZXR1cm4gdm9pZChzLmlzVG91Y2hlZCA9ICExKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgZS5zdG9wUHJvcGFnYXRpb24oKSwgcy5pc01vdmVkID0gITAsIHMuY3VycmVudFggPSBzLnRvdWNoZXNDdXJyZW50LnggLSBzLnRvdWNoZXNTdGFydC54ICsgcy5zdGFydFgsIHMuY3VycmVudFkgPSBzLnRvdWNoZXNDdXJyZW50LnkgLSBzLnRvdWNoZXNTdGFydC55ICsgcy5zdGFydFksIHMuY3VycmVudFggPCBzLm1pblggJiYgKHMuY3VycmVudFggPSBzLm1pblggKyAxIC0gTWF0aC5wb3cocy5taW5YIC0gcy5jdXJyZW50WCArIDEsIC44KSksIHMuY3VycmVudFggPiBzLm1heFggJiYgKHMuY3VycmVudFggPSBzLm1heFggLSAxICsgTWF0aC5wb3cocy5jdXJyZW50WCAtIHMubWF4WCArIDEsIC44KSksIHMuY3VycmVudFkgPCBzLm1pblkgJiYgKHMuY3VycmVudFkgPSBzLm1pblkgKyAxIC0gTWF0aC5wb3cocy5taW5ZIC0gcy5jdXJyZW50WSArIDEsIC44KSksIHMuY3VycmVudFkgPiBzLm1heFkgJiYgKHMuY3VycmVudFkgPSBzLm1heFkgLSAxICsgTWF0aC5wb3cocy5jdXJyZW50WSAtIHMubWF4WSArIDEsIC44KSksIGEucHJldlBvc2l0aW9uWCB8fCAoYS5wcmV2UG9zaXRpb25YID0gcy50b3VjaGVzQ3VycmVudC54KSwgYS5wcmV2UG9zaXRpb25ZIHx8IChhLnByZXZQb3NpdGlvblkgPSBzLnRvdWNoZXNDdXJyZW50LnkpLCBhLnByZXZUaW1lIHx8IChhLnByZXZUaW1lID0gRGF0ZS5ub3coKSksIGEueCA9IChzLnRvdWNoZXNDdXJyZW50LnggLSBhLnByZXZQb3NpdGlvblgpIC8gKERhdGUubm93KCkgLSBhLnByZXZUaW1lKSAvIDIsIGEueSA9IChzLnRvdWNoZXNDdXJyZW50LnkgLSBhLnByZXZQb3NpdGlvblkpIC8gKERhdGUubm93KCkgLSBhLnByZXZUaW1lKSAvIDIsIE1hdGguYWJzKHMudG91Y2hlc0N1cnJlbnQueCAtIGEucHJldlBvc2l0aW9uWCkgPCAyICYmIChhLnggPSAwKSwgTWF0aC5hYnMocy50b3VjaGVzQ3VycmVudC55IC0gYS5wcmV2UG9zaXRpb25ZKSA8IDIgJiYgKGEueSA9IDApLCBhLnByZXZQb3NpdGlvblggPSBzLnRvdWNoZXNDdXJyZW50LngsIGEucHJldlBvc2l0aW9uWSA9IHMudG91Y2hlc0N1cnJlbnQueSwgYS5wcmV2VGltZSA9IERhdGUubm93KCksIGkuJGltYWdlV3JhcEVsLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIiArIHMuY3VycmVudFggKyAicHgsICIgKyBzLmN1cnJlbnRZICsgInB4LDApIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uVG91Y2hFbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnpvb20sCiAgICAgICAgICAgICAgICAgICAgdCA9IGUuZ2VzdHVyZSwKICAgICAgICAgICAgICAgICAgICBpID0gZS5pbWFnZSwKICAgICAgICAgICAgICAgICAgICBzID0gZS52ZWxvY2l0eTsKICAgICAgICAgICAgICAgIGlmICh0LiRpbWFnZUVsICYmIDAgIT09IHQuJGltYWdlRWwubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpLmlzVG91Y2hlZCB8fCAhaS5pc01vdmVkKSByZXR1cm4gaS5pc1RvdWNoZWQgPSAhMSwgdm9pZChpLmlzTW92ZWQgPSAhMSk7CiAgICAgICAgICAgICAgICAgICAgaS5pc1RvdWNoZWQgPSAhMSwgaS5pc01vdmVkID0gITE7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAzMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAzMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzLnggKiBhLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5jdXJyZW50WCArIG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLnkgKiByLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gaS5jdXJyZW50WSArIGw7CiAgICAgICAgICAgICAgICAgICAgMCAhPT0gcy54ICYmIChhID0gTWF0aC5hYnMoKG8gLSBpLmN1cnJlbnRYKSAvIHMueCkpLCAwICE9PSBzLnkgJiYgKHIgPSBNYXRoLmFicygoZCAtIGkuY3VycmVudFkpIC8gcy55KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBNYXRoLm1heChhLCByKTsKICAgICAgICAgICAgICAgICAgICBpLmN1cnJlbnRYID0gbywgaS5jdXJyZW50WSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBpLndpZHRoICogZS5zY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGkuaGVpZ2h0ICogZS5zY2FsZTsKICAgICAgICAgICAgICAgICAgICBpLm1pblggPSBNYXRoLm1pbih0LnNsaWRlV2lkdGggLyAyIC0gcCAvIDIsIDApLCBpLm1heFggPSAtaS5taW5YLCBpLm1pblkgPSBNYXRoLm1pbih0LnNsaWRlSGVpZ2h0IC8gMiAtIGMgLyAyLCAwKSwgaS5tYXhZID0gLWkubWluWSwgaS5jdXJyZW50WCA9IE1hdGgubWF4KE1hdGgubWluKGkuY3VycmVudFgsIGkubWF4WCksIGkubWluWCksIGkuY3VycmVudFkgPSBNYXRoLm1heChNYXRoLm1pbihpLmN1cnJlbnRZLCBpLm1heFkpLCBpLm1pblkpLCB0LiRpbWFnZVdyYXBFbC50cmFuc2l0aW9uKGgpLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIiArIGkuY3VycmVudFggKyAicHgsICIgKyBpLmN1cnJlbnRZICsgInB4LDApIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25UcmFuc2l0aW9uRW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy56b29tLAogICAgICAgICAgICAgICAgICAgIHQgPSBlLmdlc3R1cmU7CiAgICAgICAgICAgICAgICB0LiRzbGlkZUVsICYmIHRoaXMucHJldmlvdXNJbmRleCAhPT0gdGhpcy5hY3RpdmVJbmRleCAmJiAodC4kaW1hZ2VFbC50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKSIpLCB0LiRpbWFnZVdyYXBFbC50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDAsMCwwKSIpLCBlLnNjYWxlID0gMSwgZS5jdXJyZW50U2NhbGUgPSAxLCB0LiRzbGlkZUVsID0gdm9pZCAwLCB0LiRpbWFnZUVsID0gdm9pZCAwLCB0LiRpbWFnZVdyYXBFbCA9IHZvaWQgMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuem9vbTsKICAgICAgICAgICAgICAgIHQuc2NhbGUgJiYgMSAhPT0gdC5zY2FsZSA/IHQub3V0KCkgOiB0LmluKGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGluOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgaSwgcywgYSwgciwgbiwgbywgbCwgZCwgaCwgcCwgYywgdSwgdiwgZiwgbSwgZyA9IHRoaXMuem9vbSwKICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5wYXJhbXMuem9vbSwKICAgICAgICAgICAgICAgICAgICB3ID0gZy5nZXN0dXJlLAogICAgICAgICAgICAgICAgICAgIHkgPSBnLmltYWdlOwogICAgICAgICAgICAgICAgKHcuJHNsaWRlRWwgfHwgKHcuJHNsaWRlRWwgPSB0aGlzLnNsaWRlcy5lcSh0aGlzLmFjdGl2ZUluZGV4KSwgdy4kaW1hZ2VFbCA9IHcuJHNsaWRlRWwuZmluZCgiaW1nLCBzdmcsIGNhbnZhcywgcGljdHVyZSwgLnN3aXBlci16b29tLXRhcmdldCIpLCB3LiRpbWFnZVdyYXBFbCA9IHcuJGltYWdlRWwucGFyZW50KCIuIiArIGIuY29udGFpbmVyQ2xhc3MpKSwgdy4kaW1hZ2VFbCAmJiAwICE9PSB3LiRpbWFnZUVsLmxlbmd0aCkgJiYgKHcuJHNsaWRlRWwuYWRkQ2xhc3MoIiIgKyBiLnpvb21lZFNsaWRlQ2xhc3MpLCB2b2lkIDAgPT09IHkudG91Y2hlc1N0YXJ0LnggJiYgZSA/ICh0ID0gInRvdWNoZW5kIiA9PT0gZS50eXBlID8gZS5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCA6IGUucGFnZVgsIGkgPSAidG91Y2hlbmQiID09PSBlLnR5cGUgPyBlLmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZIDogZS5wYWdlWSkgOiAodCA9IHkudG91Y2hlc1N0YXJ0LngsIGkgPSB5LnRvdWNoZXNTdGFydC55KSwgZy5zY2FsZSA9IHcuJGltYWdlV3JhcEVsLmF0dHIoImRhdGEtc3dpcGVyLXpvb20iKSB8fCBiLm1heFJhdGlvLCBnLmN1cnJlbnRTY2FsZSA9IHcuJGltYWdlV3JhcEVsLmF0dHIoImRhdGEtc3dpcGVyLXpvb20iKSB8fCBiLm1heFJhdGlvLCBlID8gKGYgPSB3LiRzbGlkZUVsWzBdLm9mZnNldFdpZHRoLCBtID0gdy4kc2xpZGVFbFswXS5vZmZzZXRIZWlnaHQsIHMgPSB3LiRzbGlkZUVsLm9mZnNldCgpLmxlZnQgKyBmIC8gMiAtIHQsIGEgPSB3LiRzbGlkZUVsLm9mZnNldCgpLnRvcCArIG0gLyAyIC0gaSwgbyA9IHcuJGltYWdlRWxbMF0ub2Zmc2V0V2lkdGgsIGwgPSB3LiRpbWFnZUVsWzBdLm9mZnNldEhlaWdodCwgZCA9IG8gKiBnLnNjYWxlLCBoID0gbCAqIGcuc2NhbGUsIHUgPSAtKHAgPSBNYXRoLm1pbihmIC8gMiAtIGQgLyAyLCAwKSksIHYgPSAtKGMgPSBNYXRoLm1pbihtIC8gMiAtIGggLyAyLCAwKSksIChyID0gcyAqIGcuc2NhbGUpIDwgcCAmJiAociA9IHApLCByID4gdSAmJiAociA9IHUpLCAobiA9IGEgKiBnLnNjYWxlKSA8IGMgJiYgKG4gPSBjKSwgbiA+IHYgJiYgKG4gPSB2KSkgOiAociA9IDAsIG4gPSAwKSwgdy4kaW1hZ2VXcmFwRWwudHJhbnNpdGlvbigzMDApLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIiArIHIgKyAicHgsICIgKyBuICsgInB4LDApIiksIHcuJGltYWdlRWwudHJhbnNpdGlvbigzMDApLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKCIgKyBnLnNjYWxlICsgIikiKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb3V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy56b29tLAogICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLnBhcmFtcy56b29tLAogICAgICAgICAgICAgICAgICAgIGkgPSBlLmdlc3R1cmU7CiAgICAgICAgICAgICAgICBpLiRzbGlkZUVsIHx8IChpLiRzbGlkZUVsID0gdGhpcy5zbGlkZXMuZXEodGhpcy5hY3RpdmVJbmRleCksIGkuJGltYWdlRWwgPSBpLiRzbGlkZUVsLmZpbmQoImltZywgc3ZnLCBjYW52YXMsIHBpY3R1cmUsIC5zd2lwZXItem9vbS10YXJnZXQiKSwgaS4kaW1hZ2VXcmFwRWwgPSBpLiRpbWFnZUVsLnBhcmVudCgiLiIgKyB0LmNvbnRhaW5lckNsYXNzKSksIGkuJGltYWdlRWwgJiYgMCAhPT0gaS4kaW1hZ2VFbC5sZW5ndGggJiYgKGUuc2NhbGUgPSAxLCBlLmN1cnJlbnRTY2FsZSA9IDEsIGkuJGltYWdlV3JhcEVsLnRyYW5zaXRpb24oMzAwKS50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDAsMCwwKSIpLCBpLiRpbWFnZUVsLnRyYW5zaXRpb24oMzAwKS50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKSIpLCBpLiRzbGlkZUVsLnJlbW92ZUNsYXNzKCIiICsgdC56b29tZWRTbGlkZUNsYXNzKSwgaS4kc2xpZGVFbCA9IHZvaWQgMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy56b29tOwogICAgICAgICAgICAgICAgaWYgKCFlLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBlLmVuYWJsZWQgPSAhMDsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9ICEoInRvdWNoc3RhcnQiICE9PSB0aGlzLnRvdWNoRXZlbnRzLnN0YXJ0IHx8ICFvLnBhc3NpdmVMaXN0ZW5lciB8fCAhdGhpcy5wYXJhbXMucGFzc2l2ZUxpc3RlbmVycykgJiYgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gIW8ucGFzc2l2ZUxpc3RlbmVyIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICIuIiArIHRoaXMucGFyYW1zLnNsaWRlQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgby5nZXN0dXJlcyA/ICh0aGlzLiR3cmFwcGVyRWwub24oImdlc3R1cmVzdGFydCIsIHMsIGUub25HZXN0dXJlU3RhcnQsIHQpLCB0aGlzLiR3cmFwcGVyRWwub24oImdlc3R1cmVjaGFuZ2UiLCBzLCBlLm9uR2VzdHVyZUNoYW5nZSwgdCksIHRoaXMuJHdyYXBwZXJFbC5vbigiZ2VzdHVyZWVuZCIsIHMsIGUub25HZXN0dXJlRW5kLCB0KSkgOiAidG91Y2hzdGFydCIgPT09IHRoaXMudG91Y2hFdmVudHMuc3RhcnQgJiYgKHRoaXMuJHdyYXBwZXJFbC5vbih0aGlzLnRvdWNoRXZlbnRzLnN0YXJ0LCBzLCBlLm9uR2VzdHVyZVN0YXJ0LCB0KSwgdGhpcy4kd3JhcHBlckVsLm9uKHRoaXMudG91Y2hFdmVudHMubW92ZSwgcywgZS5vbkdlc3R1cmVDaGFuZ2UsIGkpLCB0aGlzLiR3cmFwcGVyRWwub24odGhpcy50b3VjaEV2ZW50cy5lbmQsIHMsIGUub25HZXN0dXJlRW5kLCB0KSwgdGhpcy50b3VjaEV2ZW50cy5jYW5jZWwgJiYgdGhpcy4kd3JhcHBlckVsLm9uKHRoaXMudG91Y2hFdmVudHMuY2FuY2VsLCBzLCBlLm9uR2VzdHVyZUVuZCwgdCkpLCB0aGlzLiR3cmFwcGVyRWwub24odGhpcy50b3VjaEV2ZW50cy5tb3ZlLCAiLiIgKyB0aGlzLnBhcmFtcy56b29tLmNvbnRhaW5lckNsYXNzLCBlLm9uVG91Y2hNb3ZlLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy56b29tOwogICAgICAgICAgICAgICAgaWYgKGUuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuem9vbS5lbmFibGVkID0gITE7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAhKCJ0b3VjaHN0YXJ0IiAhPT0gdGhpcy50b3VjaEV2ZW50cy5zdGFydCB8fCAhby5wYXNzaXZlTGlzdGVuZXIgfHwgIXRoaXMucGFyYW1zLnBhc3NpdmVMaXN0ZW5lcnMpICYmIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICFvLnBhc3NpdmVMaXN0ZW5lciB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAiLiIgKyB0aGlzLnBhcmFtcy5zbGlkZUNsYXNzOwogICAgICAgICAgICAgICAgICAgIG8uZ2VzdHVyZXMgPyAodGhpcy4kd3JhcHBlckVsLm9mZigiZ2VzdHVyZXN0YXJ0IiwgcywgZS5vbkdlc3R1cmVTdGFydCwgdCksIHRoaXMuJHdyYXBwZXJFbC5vZmYoImdlc3R1cmVjaGFuZ2UiLCBzLCBlLm9uR2VzdHVyZUNoYW5nZSwgdCksIHRoaXMuJHdyYXBwZXJFbC5vZmYoImdlc3R1cmVlbmQiLCBzLCBlLm9uR2VzdHVyZUVuZCwgdCkpIDogInRvdWNoc3RhcnQiID09PSB0aGlzLnRvdWNoRXZlbnRzLnN0YXJ0ICYmICh0aGlzLiR3cmFwcGVyRWwub2ZmKHRoaXMudG91Y2hFdmVudHMuc3RhcnQsIHMsIGUub25HZXN0dXJlU3RhcnQsIHQpLCB0aGlzLiR3cmFwcGVyRWwub2ZmKHRoaXMudG91Y2hFdmVudHMubW92ZSwgcywgZS5vbkdlc3R1cmVDaGFuZ2UsIGkpLCB0aGlzLiR3cmFwcGVyRWwub2ZmKHRoaXMudG91Y2hFdmVudHMuZW5kLCBzLCBlLm9uR2VzdHVyZUVuZCwgdCksIHRoaXMudG91Y2hFdmVudHMuY2FuY2VsICYmIHRoaXMuJHdyYXBwZXJFbC5vZmYodGhpcy50b3VjaEV2ZW50cy5jYW5jZWwsIHMsIGUub25HZXN0dXJlRW5kLCB0KSksIHRoaXMuJHdyYXBwZXJFbC5vZmYodGhpcy50b3VjaEV2ZW50cy5tb3ZlLCAiLiIgKyB0aGlzLnBhcmFtcy56b29tLmNvbnRhaW5lckNsYXNzLCBlLm9uVG91Y2hNb3ZlLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBsZSA9IHsKICAgICAgICAgICAgbG9hZEluU2xpZGU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9ICEwKTsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBhID0gaS5wYXJhbXMubGF6eTsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGUgJiYgMCAhPT0gaS5zbGlkZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBpLnZpcnR1YWwgJiYgaS5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gaS4kd3JhcHBlckVsLmNoaWxkcmVuKCIuIiArIGkucGFyYW1zLnNsaWRlQ2xhc3MgKyAnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgZSArICciXScpIDogaS5zbGlkZXMuZXEoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLmZpbmQoIi4iICsgYS5lbGVtZW50Q2xhc3MgKyAiOm5vdCguIiArIGEubG9hZGVkQ2xhc3MgKyAiKTpub3QoLiIgKyBhLmxvYWRpbmdDbGFzcyArICIpIik7CiAgICAgICAgICAgICAgICAgICAgIXIuaGFzQ2xhc3MoYS5lbGVtZW50Q2xhc3MpIHx8IHIuaGFzQ2xhc3MoYS5sb2FkZWRDbGFzcykgfHwgci5oYXNDbGFzcyhhLmxvYWRpbmdDbGFzcykgfHwgKG4gPSBuLmFkZChyWzBdKSksIDAgIT09IG4ubGVuZ3RoICYmIG4uZWFjaCgoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHMobik7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uYWRkQ2xhc3MoYS5sb2FkaW5nQ2xhc3MpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG8uYXR0cigiZGF0YS1iYWNrZ3JvdW5kIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gby5hdHRyKCJkYXRhLXNyYyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG8uYXR0cigiZGF0YS1zcmNzZXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvLmF0dHIoImRhdGEtc2l6ZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5sb2FkSW1hZ2Uob1swXSwgZCB8fCBsLCBoLCBwLCAhMSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gaSAmJiBpICYmICghaSB8fCBpLnBhcmFtcykgJiYgIWkuZGVzdHJveWVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPyAoby5jc3MoImJhY2tncm91bmQtaW1hZ2UiLCAndXJsKCInICsgbCArICciKScpLCBvLnJlbW92ZUF0dHIoImRhdGEtYmFja2dyb3VuZCIpKSA6IChoICYmIChvLmF0dHIoInNyY3NldCIsIGgpLCBvLnJlbW92ZUF0dHIoImRhdGEtc3Jjc2V0IikpLCBwICYmIChvLmF0dHIoInNpemVzIiwgcCksIG8ucmVtb3ZlQXR0cigiZGF0YS1zaXplcyIpKSwgZCAmJiAoby5hdHRyKCJzcmMiLCBkKSwgby5yZW1vdmVBdHRyKCJkYXRhLXNyYyIpKSksIG8uYWRkQ2xhc3MoYS5sb2FkZWRDbGFzcykucmVtb3ZlQ2xhc3MoYS5sb2FkaW5nQ2xhc3MpLCByLmZpbmQoIi4iICsgYS5wcmVsb2FkZXJDbGFzcykucmVtb3ZlKCksIGkucGFyYW1zLmxvb3AgJiYgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHIuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuaGFzQ2xhc3MoaS5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gaS4kd3JhcHBlckVsLmNoaWxkcmVuKCdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicgKyBlICsgJyJdOm5vdCguJyArIGkucGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MgKyAiKSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5sYXp5LmxvYWRJblNsaWRlKHMuaW5kZXgoKSwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkuJHdyYXBwZXJFbC5jaGlsZHJlbigiLiIgKyBpLnBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzICsgJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJyArIGUgKyAnIl0nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkubGF6eS5sb2FkSW5TbGlkZShuLmluZGV4KCksICExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZW1pdCgibGF6eUltYWdlUmVhZHkiLCByWzBdLCBvWzBdKSwgaS5wYXJhbXMuYXV0b0hlaWdodCAmJiBpLnVwZGF0ZUF1dG9IZWlnaHQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGkuZW1pdCgibGF6eUltYWdlTG9hZCIsIHJbMF0sIG9bMF0pCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIHQgPSBlLiR3cmFwcGVyRWwsCiAgICAgICAgICAgICAgICAgICAgaSA9IGUucGFyYW1zLAogICAgICAgICAgICAgICAgICAgIGEgPSBlLnNsaWRlcywKICAgICAgICAgICAgICAgICAgICByID0gZS5hY3RpdmVJbmRleCwKICAgICAgICAgICAgICAgICAgICBuID0gZS52aXJ0dWFsICYmIGkudmlydHVhbC5lbmFibGVkLAogICAgICAgICAgICAgICAgICAgIG8gPSBpLmxhenksCiAgICAgICAgICAgICAgICAgICAgbCA9IGkuc2xpZGVzUGVyVmlldzsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5jaGlsZHJlbigiLiIgKyBpLnNsaWRlQ2xhc3MgKyAnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgZSArICciXScpLmxlbmd0aCkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhW2VdKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPyBzKGUpLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikgOiBzKGUpLmluZGV4KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgiYXV0byIgPT09IGwgJiYgKGwgPSAwKSwgZS5sYXp5LmluaXRpYWxJbWFnZUxvYWRlZCB8fCAoZS5sYXp5LmluaXRpYWxJbWFnZUxvYWRlZCA9ICEwKSwgZS5wYXJhbXMud2F0Y2hTbGlkZXNWaXNpYmlsaXR5KSB0LmNoaWxkcmVuKCIuIiArIGkuc2xpZGVWaXNpYmxlQ2xhc3MpLmVhY2goKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG4gPyBzKGkpLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikgOiBzKGkpLmluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgZS5sYXp5LmxvYWRJblNsaWRlKGEpCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChsID4gMSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gcjsgcCA8IHIgKyBsOyBwICs9IDEpIGQocCkgJiYgZS5sYXp5LmxvYWRJblNsaWRlKHApOwogICAgICAgICAgICAgICAgZWxzZSBlLmxhenkubG9hZEluU2xpZGUocik7CiAgICAgICAgICAgICAgICBpZiAoby5sb2FkUHJldk5leHQpCiAgICAgICAgICAgICAgICAgICAgaWYgKGwgPiAxIHx8IG8ubG9hZFByZXZOZXh0QW1vdW50ICYmIG8ubG9hZFByZXZOZXh0QW1vdW50ID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gby5sb2FkUHJldk5leHRBbW91bnQsIHUgPSBsLCB2ID0gTWF0aC5taW4ociArIHUgKyBNYXRoLm1heChjLCB1KSwgYS5sZW5ndGgpLCBmID0gTWF0aC5tYXgociAtIE1hdGgubWF4KHUsIGMpLCAwKSwgbSA9IHIgKyBsOyBtIDwgdjsgbSArPSAxKSBkKG0pICYmIGUubGF6eS5sb2FkSW5TbGlkZShtKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZyA9IGY7IGcgPCByOyBnICs9IDEpIGQoZykgJiYgZS5sYXp5LmxvYWRJblNsaWRlKGcpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0LmNoaWxkcmVuKCIuIiArIGkuc2xpZGVOZXh0Q2xhc3MpOwogICAgICAgICAgICAgICAgICAgICAgICBiLmxlbmd0aCA+IDAgJiYgZS5sYXp5LmxvYWRJblNsaWRlKGgoYikpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHQuY2hpbGRyZW4oIi4iICsgaS5zbGlkZVByZXZDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHcubGVuZ3RoID4gMCAmJiBlLmxhenkubG9hZEluU2xpZGUoaCh3KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGRlID0gewogICAgICAgICAgICBMaW5lYXJTcGxpbmU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBzLCBhLCByLCBuLCBvID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAocyA9IC0xLCBpID0gZS5sZW5ndGg7IGkgLSBzID4gMTspIGVbYSA9IGkgKyBzID4+IDFdIDw9IHQgPyBzID0gYSA6IGkgPSBhOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMueCA9IGUsIHRoaXMueSA9IHQsIHRoaXMubGFzdEluZGV4ID0gZS5sZW5ndGggLSAxLCB0aGlzLmludGVycG9sYXRlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID8gKG4gPSBvKHRoaXMueCwgZSksIHIgPSBuIC0gMSwgKGUgLSB0aGlzLnhbcl0pICogKHRoaXMueVtuXSAtIHRoaXMueVtyXSkgLyAodGhpcy54W25dIC0gdGhpcy54W3JdKSArIHRoaXMueVtyXSkgOiAwCiAgICAgICAgICAgICAgICB9LCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEludGVycG9sYXRlRnVuY3Rpb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5zcGxpbmUgfHwgKHRoaXMuY29udHJvbGxlci5zcGxpbmUgPSB0aGlzLnBhcmFtcy5sb29wID8gbmV3IGRlLkxpbmVhclNwbGluZSh0aGlzLnNsaWRlc0dyaWQsIGUuc2xpZGVzR3JpZCkgOiBuZXcgZGUuTGluZWFyU3BsaW5lKHRoaXMuc25hcEdyaWQsIGUuc25hcEdyaWQpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBzLCBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICByID0gYS5jb250cm9sbGVyLmNvbnRyb2w7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhLnJ0bFRyYW5zbGF0ZSA/IC1hLnRyYW5zbGF0ZSA6IGEudHJhbnNsYXRlOwogICAgICAgICAgICAgICAgICAgICJzbGlkZSIgPT09IGEucGFyYW1zLmNvbnRyb2xsZXIuYnkgJiYgKGEuY29udHJvbGxlci5nZXRJbnRlcnBvbGF0ZUZ1bmN0aW9uKGUpLCBzID0gLWEuY29udHJvbGxlci5zcGxpbmUuaW50ZXJwb2xhdGUoLXQpKSwgcyAmJiAiY29udGFpbmVyIiAhPT0gYS5wYXJhbXMuY29udHJvbGxlci5ieSB8fCAoaSA9IChlLm1heFRyYW5zbGF0ZSgpIC0gZS5taW5UcmFuc2xhdGUoKSkgLyAoYS5tYXhUcmFuc2xhdGUoKSAtIGEubWluVHJhbnNsYXRlKCkpLCBzID0gKHQgLSBhLm1pblRyYW5zbGF0ZSgpKSAqIGkgKyBlLm1pblRyYW5zbGF0ZSgpKSwgYS5wYXJhbXMuY29udHJvbGxlci5pbnZlcnNlICYmIChzID0gZS5tYXhUcmFuc2xhdGUoKSAtIHMpLCBlLnVwZGF0ZVByb2dyZXNzKHMpLCBlLnNldFRyYW5zbGF0ZShzLCBhKSwgZS51cGRhdGVBY3RpdmVJbmRleCgpLCBlLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocikpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCByLmxlbmd0aDsgbyArPSAxKSByW29dICE9PSB0ICYmIHJbb10gaW5zdGFuY2VvZiBXICYmIG4ocltvXSk7CiAgICAgICAgICAgICAgICBlbHNlIHIgaW5zdGFuY2VvZiBXICYmIHQgIT09IHIgJiYgbihyKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgcyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgYSA9IHMuY29udHJvbGxlci5jb250cm9sOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIodCkgewogICAgICAgICAgICAgICAgICAgIHQuc2V0VHJhbnNpdGlvbihlLCBzKSwgMCAhPT0gZSAmJiAodC50cmFuc2l0aW9uU3RhcnQoKSwgdC5wYXJhbXMuYXV0b0hlaWdodCAmJiBuLm5leHRUaWNrKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC51cGRhdGVBdXRvSGVpZ2h0KCkKICAgICAgICAgICAgICAgICAgICB9KSksIHQuJHdyYXBwZXJFbC50cmFuc2l0aW9uRW5kKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiAodC5wYXJhbXMubG9vcCAmJiAic2xpZGUiID09PSBzLnBhcmFtcy5jb250cm9sbGVyLmJ5ICYmIHQubG9vcEZpeCgpLCB0LnRyYW5zaXRpb25FbmQoKSkKICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkKICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkgKz0gMSkgYVtpXSAhPT0gdCAmJiBhW2ldIGluc3RhbmNlb2YgVyAmJiByKGFbaV0pOwogICAgICAgICAgICAgICAgZWxzZSBhIGluc3RhbmNlb2YgVyAmJiB0ICE9PSBhICYmIHIoYSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaGUgPSB7CiAgICAgICAgICAgIG1ha2VFbEZvY3VzYWJsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuYXR0cigidGFiSW5kZXgiLCAiMCIpLCBlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFkZEVsUm9sZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuYXR0cigicm9sZSIsIHQpLCBlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFkZEVsTGFiZWw6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmF0dHIoImFyaWEtbGFiZWwiLCB0KSwgZQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlRWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmF0dHIoImFyaWEtZGlzYWJsZWQiLCAhMCksIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZW5hYmxlRWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmF0dHIoImFyaWEtZGlzYWJsZWQiLCAhMSksIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25FbnRlcktleTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnBhcmFtcy5hMTF5OwogICAgICAgICAgICAgICAgaWYgKDEzID09PSBlLmtleUNvZGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHMoZS50YXJnZXQpOwogICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiAmJiB0aGlzLm5hdmlnYXRpb24uJG5leHRFbCAmJiBpLmlzKHRoaXMubmF2aWdhdGlvbi4kbmV4dEVsKSAmJiAodGhpcy5pc0VuZCAmJiAhdGhpcy5wYXJhbXMubG9vcCB8fCB0aGlzLnNsaWRlTmV4dCgpLCB0aGlzLmlzRW5kID8gdGhpcy5hMTF5Lm5vdGlmeSh0Lmxhc3RTbGlkZU1lc3NhZ2UpIDogdGhpcy5hMTF5Lm5vdGlmeSh0Lm5leHRTbGlkZU1lc3NhZ2UpKSwgdGhpcy5uYXZpZ2F0aW9uICYmIHRoaXMubmF2aWdhdGlvbi4kcHJldkVsICYmIGkuaXModGhpcy5uYXZpZ2F0aW9uLiRwcmV2RWwpICYmICh0aGlzLmlzQmVnaW5uaW5nICYmICF0aGlzLnBhcmFtcy5sb29wIHx8IHRoaXMuc2xpZGVQcmV2KCksIHRoaXMuaXNCZWdpbm5pbmcgPyB0aGlzLmExMXkubm90aWZ5KHQuZmlyc3RTbGlkZU1lc3NhZ2UpIDogdGhpcy5hMTF5Lm5vdGlmeSh0LnByZXZTbGlkZU1lc3NhZ2UpKSwgdGhpcy5wYWdpbmF0aW9uICYmIGkuaXMoIi4iICsgdGhpcy5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcykgJiYgaVswXS5jbGljaygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG5vdGlmeTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmExMXkubGl2ZVJlZ2lvbjsKICAgICAgICAgICAgICAgIDAgIT09IHQubGVuZ3RoICYmICh0Lmh0bWwoIiIpLCB0Lmh0bWwoZSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZU5hdmlnYXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBhcmFtcy5sb29wICYmIHRoaXMubmF2aWdhdGlvbikgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5uYXZpZ2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS4kbmV4dEVsLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS4kcHJldkVsOwogICAgICAgICAgICAgICAgICAgIGkgJiYgaS5sZW5ndGggPiAwICYmICh0aGlzLmlzQmVnaW5uaW5nID8gdGhpcy5hMTF5LmRpc2FibGVFbChpKSA6IHRoaXMuYTExeS5lbmFibGVFbChpKSksIHQgJiYgdC5sZW5ndGggPiAwICYmICh0aGlzLmlzRW5kID8gdGhpcy5hMTF5LmRpc2FibGVFbCh0KSA6IHRoaXMuYTExeS5lbmFibGVFbCh0KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXBkYXRlUGFnaW5hdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgdCA9IGUucGFyYW1zLmExMXk7CiAgICAgICAgICAgICAgICBlLnBhZ2luYXRpb24gJiYgZS5wYXJhbXMucGFnaW5hdGlvbi5jbGlja2FibGUgJiYgZS5wYWdpbmF0aW9uLmJ1bGxldHMgJiYgZS5wYWdpbmF0aW9uLmJ1bGxldHMubGVuZ3RoICYmIGUucGFnaW5hdGlvbi5idWxsZXRzLmVhY2goKGZ1bmN0aW9uKGksIGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHMoYSk7CiAgICAgICAgICAgICAgICAgICAgZS5hMTF5Lm1ha2VFbEZvY3VzYWJsZShyKSwgZS5hMTF5LmFkZEVsUm9sZShyLCAiYnV0dG9uIiksIGUuYTExeS5hZGRFbExhYmVsKHIsIHQucGFnaW5hdGlvbkJ1bGxldE1lc3NhZ2UucmVwbGFjZSgve3tpbmRleH19Lywgci5pbmRleCgpICsgMSkpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRlbC5hcHBlbmQodGhpcy5hMTF5LmxpdmVSZWdpb24pOwogICAgICAgICAgICAgICAgdmFyIGUsIHQsIGkgPSB0aGlzLnBhcmFtcy5hMTF5OwogICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uICYmIHRoaXMubmF2aWdhdGlvbi4kbmV4dEVsICYmIChlID0gdGhpcy5uYXZpZ2F0aW9uLiRuZXh0RWwpLCB0aGlzLm5hdmlnYXRpb24gJiYgdGhpcy5uYXZpZ2F0aW9uLiRwcmV2RWwgJiYgKHQgPSB0aGlzLm5hdmlnYXRpb24uJHByZXZFbCksIGUgJiYgKHRoaXMuYTExeS5tYWtlRWxGb2N1c2FibGUoZSksIHRoaXMuYTExeS5hZGRFbFJvbGUoZSwgImJ1dHRvbiIpLCB0aGlzLmExMXkuYWRkRWxMYWJlbChlLCBpLm5leHRTbGlkZU1lc3NhZ2UpLCBlLm9uKCJrZXlkb3duIiwgdGhpcy5hMTF5Lm9uRW50ZXJLZXkpKSwgdCAmJiAodGhpcy5hMTF5Lm1ha2VFbEZvY3VzYWJsZSh0KSwgdGhpcy5hMTF5LmFkZEVsUm9sZSh0LCAiYnV0dG9uIiksIHRoaXMuYTExeS5hZGRFbExhYmVsKHQsIGkucHJldlNsaWRlTWVzc2FnZSksIHQub24oImtleWRvd24iLCB0aGlzLmExMXkub25FbnRlcktleSkpLCB0aGlzLnBhZ2luYXRpb24gJiYgdGhpcy5wYXJhbXMucGFnaW5hdGlvbi5jbGlja2FibGUgJiYgdGhpcy5wYWdpbmF0aW9uLmJ1bGxldHMgJiYgdGhpcy5wYWdpbmF0aW9uLmJ1bGxldHMubGVuZ3RoICYmIHRoaXMucGFnaW5hdGlvbi4kZWwub24oImtleWRvd24iLCAiLiIgKyB0aGlzLnBhcmFtcy5wYWdpbmF0aW9uLmJ1bGxldENsYXNzLCB0aGlzLmExMXkub25FbnRlcktleSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdDsKICAgICAgICAgICAgICAgIHRoaXMuYTExeS5saXZlUmVnaW9uICYmIHRoaXMuYTExeS5saXZlUmVnaW9uLmxlbmd0aCA+IDAgJiYgdGhpcy5hMTF5LmxpdmVSZWdpb24ucmVtb3ZlKCksIHRoaXMubmF2aWdhdGlvbiAmJiB0aGlzLm5hdmlnYXRpb24uJG5leHRFbCAmJiAoZSA9IHRoaXMubmF2aWdhdGlvbi4kbmV4dEVsKSwgdGhpcy5uYXZpZ2F0aW9uICYmIHRoaXMubmF2aWdhdGlvbi4kcHJldkVsICYmICh0ID0gdGhpcy5uYXZpZ2F0aW9uLiRwcmV2RWwpLCBlICYmIGUub2ZmKCJrZXlkb3duIiwgdGhpcy5hMTF5Lm9uRW50ZXJLZXkpLCB0ICYmIHQub2ZmKCJrZXlkb3duIiwgdGhpcy5hMTF5Lm9uRW50ZXJLZXkpLCB0aGlzLnBhZ2luYXRpb24gJiYgdGhpcy5wYXJhbXMucGFnaW5hdGlvbi5jbGlja2FibGUgJiYgdGhpcy5wYWdpbmF0aW9uLmJ1bGxldHMgJiYgdGhpcy5wYWdpbmF0aW9uLmJ1bGxldHMubGVuZ3RoICYmIHRoaXMucGFnaW5hdGlvbi4kZWwub2ZmKCJrZXlkb3duIiwgIi4iICsgdGhpcy5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcywgdGhpcy5hMTF5Lm9uRW50ZXJLZXkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHBlID0gewogICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcy5oaXN0b3J5KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0Lmhpc3RvcnkgfHwgIXQuaGlzdG9yeS5wdXNoU3RhdGUpIHJldHVybiB0aGlzLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQgPSAhMSwgdm9pZCh0aGlzLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkID0gITApOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5oaXN0b3J5OwogICAgICAgICAgICAgICAgICAgIGUuaW5pdGlhbGl6ZWQgPSAhMCwgZS5wYXRocyA9IHBlLmdldFBhdGhWYWx1ZXMoKSwgKGUucGF0aHMua2V5IHx8IGUucGF0aHMudmFsdWUpICYmIChlLnNjcm9sbFRvU2xpZGUoMCwgZS5wYXRocy52YWx1ZSwgdGhpcy5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0KSwgdGhpcy5wYXJhbXMuaGlzdG9yeS5yZXBsYWNlU3RhdGUgfHwgdC5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsIHRoaXMuaGlzdG9yeS5zZXRIaXN0b3J5UG9wU3RhdGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLmhpc3RvcnkucmVwbGFjZVN0YXRlIHx8IHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLCB0aGlzLmhpc3Rvcnkuc2V0SGlzdG9yeVBvcFN0YXRlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRIaXN0b3J5UG9wU3RhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5LnBhdGhzID0gcGUuZ2V0UGF0aFZhbHVlcygpLCB0aGlzLmhpc3Rvcnkuc2Nyb2xsVG9TbGlkZSh0aGlzLnBhcmFtcy5zcGVlZCwgdGhpcy5oaXN0b3J5LnBhdGhzLnZhbHVlLCAhMSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0UGF0aFZhbHVlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHQubG9jYXRpb24ucGF0aG5hbWUuc2xpY2UoMSkuc3BsaXQoIi8iKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiICE9PSBlCiAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgIGkgPSBlLmxlbmd0aDsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAga2V5OiBlW2kgLSAyXSwKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZVtpIC0gMV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0SGlzdG9yeTogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuaGlzdG9yeS5pbml0aWFsaXplZCAmJiB0aGlzLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMuc2xpZGVzLmVxKGkpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gcGUuc2x1Z2lmeShzLmF0dHIoImRhdGEtaGlzdG9yeSIpKTsKICAgICAgICAgICAgICAgICAgICB0LmxvY2F0aW9uLnBhdGhuYW1lLmluY2x1ZGVzKGUpIHx8IChhID0gZSArICIvIiArIGEpOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5oaXN0b3J5LnN0YXRlOwogICAgICAgICAgICAgICAgICAgIHIgJiYgci52YWx1ZSA9PT0gYSB8fCAodGhpcy5wYXJhbXMuaGlzdG9yeS5yZXBsYWNlU3RhdGUgPyB0Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGEKICAgICAgICAgICAgICAgICAgICB9LCBudWxsLCBhKSA6IHQuaGlzdG9yeS5wdXNoU3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYQogICAgICAgICAgICAgICAgICAgIH0sIG51bGwsIGEpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzbHVnaWZ5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCAiLSIpLnJlcGxhY2UoL1teXHctXSsvZywgIiIpLnJlcGxhY2UoLy0tKy9nLCAiLSIpLnJlcGxhY2UoL14tKy8sICIiKS5yZXBsYWNlKC8tKyQvLCAiIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2Nyb2xsVG9TbGlkZTogZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDAsIGEgPSB0aGlzLnNsaWRlcy5sZW5ndGg7IHMgPCBhOyBzICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnNsaWRlcy5lcShzKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlLnNsdWdpZnkoci5hdHRyKCJkYXRhLWhpc3RvcnkiKSkgPT09IHQgJiYgIXIuaGFzQ2xhc3ModGhpcy5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gci5pbmRleCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zbGlkZVRvKG4sIGUsIGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5zbGlkZVRvKDAsIGUsIGkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNlID0gewogICAgICAgICAgICBvbkhhc2hDYW5nZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUubG9jYXRpb24uaGFzaC5yZXBsYWNlKCIjIiwgIiIpOwogICAgICAgICAgICAgICAgaWYgKHQgIT09IHRoaXMuc2xpZGVzLmVxKHRoaXMuYWN0aXZlSW5kZXgpLmF0dHIoImRhdGEtaGFzaCIpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLiR3cmFwcGVyRWwuY2hpbGRyZW4oIi4iICsgdGhpcy5wYXJhbXMuc2xpZGVDbGFzcyArICdbZGF0YS1oYXNoPSInICsgdCArICciXScpLmluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gaSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVUbyhpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRIYXNoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc2hOYXZpZ2F0aW9uLmluaXRpYWxpemVkICYmIHRoaXMucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLmVuYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLnJlcGxhY2VTdGF0ZSAmJiB0Lmhpc3RvcnkgJiYgdC5oaXN0b3J5LnJlcGxhY2VTdGF0ZSkgdC5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBudWxsLCAiIyIgKyB0aGlzLnNsaWRlcy5lcSh0aGlzLmFjdGl2ZUluZGV4KS5hdHRyKCJkYXRhLWhhc2giKSB8fCAiIik7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5zbGlkZXMuZXEodGhpcy5hY3RpdmVJbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5hdHRyKCJkYXRhLWhhc2giKSB8fCBpLmF0dHIoImRhdGEtaGlzdG9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmxvY2F0aW9uLmhhc2ggPSBzIHx8ICIiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICghKCF0aGlzLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkIHx8IHRoaXMucGFyYW1zLmhpc3RvcnkgJiYgdGhpcy5wYXJhbXMuaGlzdG9yeS5lbmFibGVkKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzaE5hdmlnYXRpb24uaW5pdGlhbGl6ZWQgPSAhMDsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUubG9jYXRpb24uaGFzaC5yZXBsYWNlKCIjIiwgIiIpOwogICAgICAgICAgICAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gMCwgciA9IHRoaXMuc2xpZGVzLmxlbmd0aDsgYSA8IHI7IGEgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnNsaWRlcy5lcShhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobi5hdHRyKCJkYXRhLWhhc2giKSB8fCBuLmF0dHIoImRhdGEtaGlzdG9yeSIpKSA9PT0gaSAmJiAhbi5oYXNDbGFzcyh0aGlzLnBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5pbmRleCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVUbyhvLCAwLCB0aGlzLnBhcmFtcy5ydW5DYWxsYmFja3NPbkluaXQsICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuaGFzaE5hdmlnYXRpb24ud2F0Y2hTdGF0ZSAmJiBzKHQpLm9uKCJoYXNoY2hhbmdlIiwgdGhpcy5oYXNoTmF2aWdhdGlvbi5vbkhhc2hDYW5nZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi53YXRjaFN0YXRlICYmIHModCkub2ZmKCJoYXNoY2hhbmdlIiwgdGhpcy5oYXNoTmF2aWdhdGlvbi5vbkhhc2hDYW5nZSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdWUgPSB7CiAgICAgICAgICAgIHJ1bjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgdCA9IGUuc2xpZGVzLmVxKGUuYWN0aXZlSW5kZXgpLAogICAgICAgICAgICAgICAgICAgIGkgPSBlLnBhcmFtcy5hdXRvcGxheS5kZWxheTsKICAgICAgICAgICAgICAgIHQuYXR0cigiZGF0YS1zd2lwZXItYXV0b3BsYXkiKSAmJiAoaSA9IHQuYXR0cigiZGF0YS1zd2lwZXItYXV0b3BsYXkiKSB8fCBlLnBhcmFtcy5hdXRvcGxheS5kZWxheSksIGNsZWFyVGltZW91dChlLmF1dG9wbGF5LnRpbWVvdXQpLCBlLmF1dG9wbGF5LnRpbWVvdXQgPSBuLm5leHRUaWNrKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlLnBhcmFtcy5hdXRvcGxheS5yZXZlcnNlRGlyZWN0aW9uID8gZS5wYXJhbXMubG9vcCA/IChlLmxvb3BGaXgoKSwgZS5zbGlkZVByZXYoZS5wYXJhbXMuc3BlZWQsICEwLCAhMCksIGUuZW1pdCgiYXV0b3BsYXkiKSkgOiBlLmlzQmVnaW5uaW5nID8gZS5wYXJhbXMuYXV0b3BsYXkuc3RvcE9uTGFzdFNsaWRlID8gZS5hdXRvcGxheS5zdG9wKCkgOiAoZS5zbGlkZVRvKGUuc2xpZGVzLmxlbmd0aCAtIDEsIGUucGFyYW1zLnNwZWVkLCAhMCwgITApLCBlLmVtaXQoImF1dG9wbGF5IikpIDogKGUuc2xpZGVQcmV2KGUucGFyYW1zLnNwZWVkLCAhMCwgITApLCBlLmVtaXQoImF1dG9wbGF5IikpIDogZS5wYXJhbXMubG9vcCA/IChlLmxvb3BGaXgoKSwgZS5zbGlkZU5leHQoZS5wYXJhbXMuc3BlZWQsICEwLCAhMCksIGUuZW1pdCgiYXV0b3BsYXkiKSkgOiBlLmlzRW5kID8gZS5wYXJhbXMuYXV0b3BsYXkuc3RvcE9uTGFzdFNsaWRlID8gZS5hdXRvcGxheS5zdG9wKCkgOiAoZS5zbGlkZVRvKDAsIGUucGFyYW1zLnNwZWVkLCAhMCwgITApLCBlLmVtaXQoImF1dG9wbGF5IikpIDogKGUuc2xpZGVOZXh0KGUucGFyYW1zLnNwZWVkLCAhMCwgITApLCBlLmVtaXQoImF1dG9wbGF5IikpLCBlLnBhcmFtcy5jc3NNb2RlICYmIGUuYXV0b3BsYXkucnVubmluZyAmJiBlLmF1dG9wbGF5LnJ1bigpCiAgICAgICAgICAgICAgICB9KSwgaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdGhpcy5hdXRvcGxheS50aW1lb3V0ICYmICghdGhpcy5hdXRvcGxheS5ydW5uaW5nICYmICh0aGlzLmF1dG9wbGF5LnJ1bm5pbmcgPSAhMCwgdGhpcy5lbWl0KCJhdXRvcGxheVN0YXJ0IiksIHRoaXMuYXV0b3BsYXkucnVuKCksICEwKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISF0aGlzLmF1dG9wbGF5LnJ1bm5pbmcgJiYgKHZvaWQgMCAhPT0gdGhpcy5hdXRvcGxheS50aW1lb3V0ICYmICh0aGlzLmF1dG9wbGF5LnRpbWVvdXQgJiYgKGNsZWFyVGltZW91dCh0aGlzLmF1dG9wbGF5LnRpbWVvdXQpLCB0aGlzLmF1dG9wbGF5LnRpbWVvdXQgPSB2b2lkIDApLCB0aGlzLmF1dG9wbGF5LnJ1bm5pbmcgPSAhMSwgdGhpcy5lbWl0KCJhdXRvcGxheVN0b3AiKSwgITApKQogICAgICAgICAgICB9LAogICAgICAgICAgICBwYXVzZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdGhpcy5hdXRvcGxheS5ydW5uaW5nICYmICh0aGlzLmF1dG9wbGF5LnBhdXNlZCB8fCAodGhpcy5hdXRvcGxheS50aW1lb3V0ICYmIGNsZWFyVGltZW91dCh0aGlzLmF1dG9wbGF5LnRpbWVvdXQpLCB0aGlzLmF1dG9wbGF5LnBhdXNlZCA9ICEwLCAwICE9PSBlICYmIHRoaXMucGFyYW1zLmF1dG9wbGF5LndhaXRGb3JUcmFuc2l0aW9uID8gKHRoaXMuJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcy5hdXRvcGxheS5vblRyYW5zaXRpb25FbmQpLCB0aGlzLiR3cmFwcGVyRWxbMF0uYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHRoaXMuYXV0b3BsYXkub25UcmFuc2l0aW9uRW5kKSkgOiAodGhpcy5hdXRvcGxheS5wYXVzZWQgPSAhMSwgdGhpcy5hdXRvcGxheS5ydW4oKSkpKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB2ZSA9IHsKICAgICAgICAgICAgc2V0VHJhbnNsYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLnNsaWRlcywgdCA9IDA7IHQgPCBlLmxlbmd0aDsgdCArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnNsaWRlcy5lcSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IC1pWzBdLnN3aXBlclNsaWRlT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLnZpcnR1YWxUcmFuc2xhdGUgfHwgKHMgLT0gdGhpcy50cmFuc2xhdGUpOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gMDsKICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG9yaXpvbnRhbCgpIHx8IChhID0gcywgcyA9IDApOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5wYXJhbXMuZmFkZUVmZmVjdC5jcm9zc0ZhZGUgPyBNYXRoLm1heCgxIC0gTWF0aC5hYnMoaVswXS5wcm9ncmVzcyksIDApIDogMSArIE1hdGgubWluKE1hdGgubWF4KGlbMF0ucHJvZ3Jlc3MsIC0xKSwgMCk7CiAgICAgICAgICAgICAgICAgICAgaS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiByCiAgICAgICAgICAgICAgICAgICAgfSkudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgiICsgcyArICJweCwgIiArIGEgKyAicHgsIDBweCkiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgaSA9IHQuc2xpZGVzLAogICAgICAgICAgICAgICAgICAgIHMgPSB0LiR3cmFwcGVyRWw7CiAgICAgICAgICAgICAgICBpZiAoaS50cmFuc2l0aW9uKGUpLCB0LnBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlICYmIDAgIT09IGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9ICExOwogICAgICAgICAgICAgICAgICAgIGkudHJhbnNpdGlvbkVuZCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSAmJiB0ICYmICF0LmRlc3Ryb3llZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICEwLCB0LmFuaW1hdGluZyA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IFsid2Via2l0VHJhbnNpdGlvbkVuZCIsICJ0cmFuc2l0aW9uZW5kIl0sIGkgPSAwOyBpIDwgZS5sZW5ndGg7IGkgKz0gMSkgcy50cmlnZ2VyKGVbaV0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZmUgPSB7CiAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IHRoaXMuJGVsLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLiR3cmFwcGVyRWwsCiAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuc2xpZGVzLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLndpZHRoLAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5ydGxUcmFuc2xhdGUsCiAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMuc2l6ZSwKICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy5wYXJhbXMuY3ViZUVmZmVjdCwKICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy5pc0hvcml6b250YWwoKSwKICAgICAgICAgICAgICAgICAgICBwID0gdGhpcy52aXJ0dWFsICYmIHRoaXMucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICBjID0gMDsKICAgICAgICAgICAgICAgIGQuc2hhZG93ICYmIChoID8gKDAgPT09IChlID0gaS5maW5kKCIuc3dpcGVyLWN1YmUtc2hhZG93IikpLmxlbmd0aCAmJiAoZSA9IHMoJzxkaXYgY2xhc3M9InN3aXBlci1jdWJlLXNoYWRvdyI+PC9kaXY+JyksIGkuYXBwZW5kKGUpKSwgZS5jc3MoewogICAgICAgICAgICAgICAgICAgIGhlaWdodDogciArICJweCIKICAgICAgICAgICAgICAgIH0pKSA6IDAgPT09IChlID0gdC5maW5kKCIuc3dpcGVyLWN1YmUtc2hhZG93IikpLmxlbmd0aCAmJiAoZSA9IHMoJzxkaXYgY2xhc3M9InN3aXBlci1jdWJlLXNoYWRvdyI+PC9kaXY+JyksIHQuYXBwZW5kKGUpKSk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IGEubGVuZ3RoOyB1ICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGEuZXEodSksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB1OwogICAgICAgICAgICAgICAgICAgIHAgJiYgKGYgPSBwYXJzZUludCh2LmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IiksIDEwKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSA5MCAqIGYsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBNYXRoLmZsb29yKG0gLyAzNjApOwogICAgICAgICAgICAgICAgICAgIG8gJiYgKG0gPSAtbSwgZyA9IE1hdGguZmxvb3IoLW0gLyAzNjApKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IE1hdGgubWF4KE1hdGgubWluKHZbMF0ucHJvZ3Jlc3MsIDEpLCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDA7CiAgICAgICAgICAgICAgICAgICAgZiAlIDQgPT0gMCA/ICh3ID0gNCAqIC1nICogbCwgeCA9IDApIDogKGYgLSAxKSAlIDQgPT0gMCA/ICh3ID0gMCwgeCA9IDQgKiAtZyAqIGwpIDogKGYgLSAyKSAlIDQgPT0gMCA/ICh3ID0gbCArIDQgKiBnICogbCwgeCA9IGwpIDogKGYgLSAzKSAlIDQgPT0gMCAmJiAodyA9IC1sLCB4ID0gMyAqIGwgKyA0ICogbCAqIGcpLCBvICYmICh3ID0gLXcpLCBoIHx8ICh5ID0gdywgdyA9IDApOwogICAgICAgICAgICAgICAgICAgIHZhciBUID0gInJvdGF0ZVgoIiArIChoID8gMCA6IC1tKSArICJkZWcpIHJvdGF0ZVkoIiArIChoID8gbSA6IDApICsgImRlZykgdHJhbnNsYXRlM2QoIiArIHcgKyAicHgsICIgKyB5ICsgInB4LCAiICsgeCArICJweCkiOwogICAgICAgICAgICAgICAgICAgIGlmIChiIDw9IDEgJiYgYiA+IC0xICYmIChjID0gOTAgKiBmICsgOTAgKiBiLCBvICYmIChjID0gOTAgKiAtZiAtIDkwICogYikpLCB2LnRyYW5zZm9ybShUKSwgZC5zbGlkZVNoYWRvd3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEUgPSBoID8gdi5maW5kKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IikgOiB2LmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IGggPyB2LmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0IikgOiB2LmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSIpOwogICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFLmxlbmd0aCAmJiAoRSA9IHMoJzxkaXYgY2xhc3M9InN3aXBlci1zbGlkZS1zaGFkb3ctJyArIChoID8gImxlZnQiIDogInRvcCIpICsgJyI+PC9kaXY+JyksIHYuYXBwZW5kKEUpKSwgMCA9PT0gUy5sZW5ndGggJiYgKFMgPSBzKCc8ZGl2IGNsYXNzPSJzd2lwZXItc2xpZGUtc2hhZG93LScgKyAoaCA/ICJyaWdodCIgOiAiYm90dG9tIikgKyAnIj48L2Rpdj4nKSwgdi5hcHBlbmQoUykpLCBFLmxlbmd0aCAmJiAoRVswXS5zdHlsZS5vcGFjaXR5ID0gTWF0aC5tYXgoLWIsIDApKSwgUy5sZW5ndGggJiYgKFNbMF0uc3R5bGUub3BhY2l0eSA9IE1hdGgubWF4KGIsIDApKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4iOiAiNTAlIDUwJSAtIiArIGwgLyAyICsgInB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgIi1tb3otdHJhbnNmb3JtLW9yaWdpbiI6ICI1MCUgNTAlIC0iICsgbCAvIDIgKyAicHgiLAogICAgICAgICAgICAgICAgICAgICAgICAiLW1zLXRyYW5zZm9ybS1vcmlnaW4iOiAiNTAlIDUwJSAtIiArIGwgLyAyICsgInB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zZm9ybS1vcmlnaW4iOiAiNTAlIDUwJSAtIiArIGwgLyAyICsgInB4IgogICAgICAgICAgICAgICAgICAgIH0pLCBkLnNoYWRvdykKICAgICAgICAgICAgICAgICAgICBpZiAoaCkgZS50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDBweCwgIiArIChyIC8gMiArIGQuc2hhZG93T2Zmc2V0KSArICJweCwgIiArIC1yIC8gMiArICJweCkgcm90YXRlWCg5MGRlZykgcm90YXRlWigwZGVnKSBzY2FsZSgiICsgZC5zaGFkb3dTY2FsZSArICIpIik7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBDID0gTWF0aC5hYnMoYykgLSA5MCAqIE1hdGguZmxvb3IoTWF0aC5hYnMoYykgLyA5MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNID0gMS41IC0gKE1hdGguc2luKDIgKiBDICogTWF0aC5QSSAvIDM2MCkgLyAyICsgTWF0aC5jb3MoMiAqIEMgKiBNYXRoLlBJIC8gMzYwKSAvIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUCA9IGQuc2hhZG93U2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ID0gZC5zaGFkb3dTY2FsZSAvIE0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gZC5zaGFkb3dPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGUudHJhbnNmb3JtKCJzY2FsZTNkKCIgKyBQICsgIiwgMSwgIiArIHogKyAiKSB0cmFuc2xhdGUzZCgwcHgsICIgKyAobiAvIDIgKyBrKSArICJweCwgIiArIC1uIC8gMiAvIHogKyAicHgpIHJvdGF0ZVgoLTkwZGVnKSIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyICQgPSBqLmlzU2FmYXJpIHx8IGouaXNVaVdlYlZpZXcgPyAtbCAvIDIgOiAwOwogICAgICAgICAgICAgICAgaS50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDBweCwwLCIgKyAkICsgInB4KSByb3RhdGVYKCIgKyAodGhpcy5pc0hvcml6b250YWwoKSA/IDAgOiBjKSArICJkZWcpIHJvdGF0ZVkoIiArICh0aGlzLmlzSG9yaXpvbnRhbCgpID8gLWMgOiAwKSArICJkZWcpIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLiRlbDsKICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVzLnRyYW5zaXRpb24oZSkuZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IikudHJhbnNpdGlvbihlKSwgdGhpcy5wYXJhbXMuY3ViZUVmZmVjdC5zaGFkb3cgJiYgIXRoaXMuaXNIb3Jpem9udGFsKCkgJiYgdC5maW5kKCIuc3dpcGVyLWN1YmUtc2hhZG93IikudHJhbnNpdGlvbihlKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtZSA9IHsKICAgICAgICAgICAgc2V0VHJhbnNsYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLnNsaWRlcywgdCA9IHRoaXMucnRsVHJhbnNsYXRlLCBpID0gMDsgaSA8IGUubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuZXEoaSksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhWzBdLnByb2dyZXNzOwogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLmZsaXBFZmZlY3QubGltaXRSb3RhdGlvbiAmJiAociA9IE1hdGgubWF4KE1hdGgubWluKGFbMF0ucHJvZ3Jlc3MsIDEpLCAtMSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gLTE4MCAqIHIsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gLWFbMF0uc3dpcGVyU2xpZGVPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSG9yaXpvbnRhbCgpID8gdCAmJiAobiA9IC1uKSA6IChkID0gbCwgbCA9IDAsIG8gPSAtbiwgbiA9IDApLCBhWzBdLnN0eWxlLnpJbmRleCA9IC1NYXRoLmFicyhNYXRoLnJvdW5kKHIpKSArIGUubGVuZ3RoLCB0aGlzLnBhcmFtcy5mbGlwRWZmZWN0LnNsaWRlU2hhZG93cykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHRoaXMuaXNIb3Jpem9udGFsKCkgPyBhLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQiKSA6IGEuZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdGhpcy5pc0hvcml6b250YWwoKSA/IGEuZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQiKSA6IGEuZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tIik7CiAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IGgubGVuZ3RoICYmIChoID0gcygnPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlLXNoYWRvdy0nICsgKHRoaXMuaXNIb3Jpem9udGFsKCkgPyAibGVmdCIgOiAidG9wIikgKyAnIj48L2Rpdj4nKSwgYS5hcHBlbmQoaCkpLCAwID09PSBwLmxlbmd0aCAmJiAocCA9IHMoJzxkaXYgY2xhc3M9InN3aXBlci1zbGlkZS1zaGFkb3ctJyArICh0aGlzLmlzSG9yaXpvbnRhbCgpID8gInJpZ2h0IiA6ICJib3R0b20iKSArICciPjwvZGl2PicpLCBhLmFwcGVuZChwKSksIGgubGVuZ3RoICYmIChoWzBdLnN0eWxlLm9wYWNpdHkgPSBNYXRoLm1heCgtciwgMCkpLCBwLmxlbmd0aCAmJiAocFswXS5zdHlsZS5vcGFjaXR5ID0gTWF0aC5tYXgociwgMCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGEudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgiICsgbCArICJweCwgIiArIGQgKyAicHgsIDBweCkgcm90YXRlWCgiICsgbyArICJkZWcpIHJvdGF0ZVkoIiArIG4gKyAiZGVnKSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldFRyYW5zaXRpb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBpID0gdC5zbGlkZXMsCiAgICAgICAgICAgICAgICAgICAgcyA9IHQuYWN0aXZlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgYSA9IHQuJHdyYXBwZXJFbDsKICAgICAgICAgICAgICAgIGlmIChpLnRyYW5zaXRpb24oZSkuZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IikudHJhbnNpdGlvbihlKSwgdC5wYXJhbXMudmlydHVhbFRyYW5zbGF0ZSAmJiAwICE9PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAhMTsKICAgICAgICAgICAgICAgICAgICBpLmVxKHMpLnRyYW5zaXRpb25FbmQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIgJiYgdCAmJiAhdC5kZXN0cm95ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMCwgdC5hbmltYXRpbmcgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBbIndlYmtpdFRyYW5zaXRpb25FbmQiLCAidHJhbnNpdGlvbmVuZCJdLCBpID0gMDsgaSA8IGUubGVuZ3RoOyBpICs9IDEpIGEudHJpZ2dlcihlW2ldKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGdlID0gewogICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHRoaXMud2lkdGgsIHQgPSB0aGlzLmhlaWdodCwgaSA9IHRoaXMuc2xpZGVzLCBhID0gdGhpcy4kd3JhcHBlckVsLCByID0gdGhpcy5zbGlkZXNTaXplc0dyaWQsIG4gPSB0aGlzLnBhcmFtcy5jb3ZlcmZsb3dFZmZlY3QsIGwgPSB0aGlzLmlzSG9yaXpvbnRhbCgpLCBkID0gdGhpcy50cmFuc2xhdGUsIGggPSBsID8gZSAvIDIgLSBkIDogdCAvIDIgLSBkLCBwID0gbCA/IG4ucm90YXRlIDogLW4ucm90YXRlLCBjID0gbi5kZXB0aCwgdSA9IDAsIHYgPSBpLmxlbmd0aDsgdSA8IHY7IHUgKz0gMSkgewogICAgICAgICAgICAgICAgICAgIHZhciBmID0gaS5lcSh1KSwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHJbdV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAoaCAtIGZbMF0uc3dpcGVyU2xpZGVPZmZzZXQgLSBtIC8gMikgLyBtICogbi5tb2RpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGwgPyBwICogZyA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBsID8gMCA6IHAgKiBnLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gLWMgKiBNYXRoLmFicyhnKSwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IG4uc3RyZXRjaDsKICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgeCAmJiAtMSAhPT0geC5pbmRleE9mKCIlIikgJiYgKHggPSBwYXJzZUZsb2F0KG4uc3RyZXRjaCkgLyAxMDAgKiBtKTsKICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IGwgPyAwIDogeCAqIGcsCiAgICAgICAgICAgICAgICAgICAgICAgIEUgPSBsID8geCAqIGcgOiAwOwogICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKEUpIDwgLjAwMSAmJiAoRSA9IDApLCBNYXRoLmFicyhUKSA8IC4wMDEgJiYgKFQgPSAwKSwgTWF0aC5hYnMoeSkgPCAuMDAxICYmICh5ID0gMCksIE1hdGguYWJzKGIpIDwgLjAwMSAmJiAoYiA9IDApLCBNYXRoLmFicyh3KSA8IC4wMDEgJiYgKHcgPSAwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgUyA9ICJ0cmFuc2xhdGUzZCgiICsgRSArICJweCwiICsgVCArICJweCwiICsgeSArICJweCkgIHJvdGF0ZVgoIiArIHcgKyAiZGVnKSByb3RhdGVZKCIgKyBiICsgImRlZykiOwogICAgICAgICAgICAgICAgICAgIGlmIChmLnRyYW5zZm9ybShTKSwgZlswXS5zdHlsZS56SW5kZXggPSAxIC0gTWF0aC5hYnMoTWF0aC5yb3VuZChnKSksIG4uc2xpZGVTaGFkb3dzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBDID0gbCA/IGYuZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCIpIDogZi5maW5kKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gPSBsID8gZi5maW5kKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCIpIDogZi5maW5kKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20iKTsKICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gQy5sZW5ndGggJiYgKEMgPSBzKCc8ZGl2IGNsYXNzPSJzd2lwZXItc2xpZGUtc2hhZG93LScgKyAobCA/ICJsZWZ0IiA6ICJ0b3AiKSArICciPjwvZGl2PicpLCBmLmFwcGVuZChDKSksIDAgPT09IE0ubGVuZ3RoICYmIChNID0gcygnPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlLXNoYWRvdy0nICsgKGwgPyAicmlnaHQiIDogImJvdHRvbSIpICsgJyI+PC9kaXY+JyksIGYuYXBwZW5kKE0pKSwgQy5sZW5ndGggJiYgKENbMF0uc3R5bGUub3BhY2l0eSA9IGcgPiAwID8gZyA6IDApLCBNLmxlbmd0aCAmJiAoTVswXS5zdHlsZS5vcGFjaXR5ID0gLWcgPiAwID8gLWcgOiAwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oby5wb2ludGVyRXZlbnRzIHx8IG8ucHJlZml4ZWRQb2ludGVyRXZlbnRzKSAmJiAoYVswXS5zdHlsZS5wZXJzcGVjdGl2ZU9yaWdpbiA9IGggKyAicHggNTAlIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdGhpcy5zbGlkZXMudHJhbnNpdGlvbihlKS5maW5kKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQiKS50cmFuc2l0aW9uKGUpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGJlID0gewogICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5wYXJhbXMudGh1bWJzLAogICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgICAgZS5zd2lwZXIgaW5zdGFuY2VvZiB0ID8gKHRoaXMudGh1bWJzLnN3aXBlciA9IGUuc3dpcGVyLCBuLmV4dGVuZCh0aGlzLnRodW1icy5zd2lwZXIub3JpZ2luYWxQYXJhbXMsIHsKICAgICAgICAgICAgICAgICAgICB3YXRjaFNsaWRlc1Byb2dyZXNzOiAhMCwKICAgICAgICAgICAgICAgICAgICBzbGlkZVRvQ2xpY2tlZFNsaWRlOiAhMQogICAgICAgICAgICAgICAgfSksIG4uZXh0ZW5kKHRoaXMudGh1bWJzLnN3aXBlci5wYXJhbXMsIHsKICAgICAgICAgICAgICAgICAgICB3YXRjaFNsaWRlc1Byb2dyZXNzOiAhMCwKICAgICAgICAgICAgICAgICAgICBzbGlkZVRvQ2xpY2tlZFNsaWRlOiAhMQogICAgICAgICAgICAgICAgfSkpIDogbi5pc09iamVjdChlLnN3aXBlcikgJiYgKHRoaXMudGh1bWJzLnN3aXBlciA9IG5ldyB0KG4uZXh0ZW5kKHt9LCBlLnN3aXBlciwgewogICAgICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzVmlzaWJpbGl0eTogITAsCiAgICAgICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogITAsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVUb0NsaWNrZWRTbGlkZTogITEKICAgICAgICAgICAgICAgIH0pKSwgdGhpcy50aHVtYnMuc3dpcGVyQ3JlYXRlZCA9ICEwKSwgdGhpcy50aHVtYnMuc3dpcGVyLiRlbC5hZGRDbGFzcyh0aGlzLnBhcmFtcy50aHVtYnMudGh1bWJzQ29udGFpbmVyQ2xhc3MpLCB0aGlzLnRodW1icy5zd2lwZXIub24oInRhcCIsIHRoaXMudGh1bWJzLm9uVGh1bWJDbGljaykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25UaHVtYkNsaWNrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy50aHVtYnMuc3dpcGVyOwogICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuY2xpY2tlZEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5jbGlja2VkU2xpZGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmJiBzKGkpLmhhc0NsYXNzKHRoaXMucGFyYW1zLnRodW1icy5zbGlkZVRodW1iQWN0aXZlQ2xhc3MpIHx8IG51bGwgPT0gdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZS5wYXJhbXMubG9vcCA/IHBhcnNlSW50KHMoZS5jbGlja2VkU2xpZGUpLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IiksIDEwKSA6IHQsIHRoaXMucGFyYW1zLmxvb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5hY3RpdmVJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVzLmVxKHIpLmhhc0NsYXNzKHRoaXMucGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MpICYmICh0aGlzLmxvb3BGaXgoKSwgdGhpcy5fY2xpZW50TGVmdCA9IHRoaXMuJHdyYXBwZXJFbFswXS5jbGllbnRMZWZ0LCByID0gdGhpcy5hY3RpdmVJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuc2xpZGVzLmVxKHIpLnByZXZBbGwoJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJyArIGEgKyAnIl0nKS5lcSgwKS5pbmRleCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLnNsaWRlcy5lcShyKS5uZXh0QWxsKCdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicgKyBhICsgJyJdJykuZXEoMCkuaW5kZXgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB2b2lkIDAgPT09IG4gPyBvIDogdm9pZCAwID09PSBvID8gbiA6IG8gLSByIDwgciAtIG4gPyBvIDogbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVUbyhhKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudGh1bWJzLnN3aXBlcjsKICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAiYXV0byIgPT09IHQucGFyYW1zLnNsaWRlc1BlclZpZXcgPyB0LnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiB0LnBhcmFtcy5zbGlkZXNQZXJWaWV3OwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWxJbmRleCAhPT0gdC5yZWFsSW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMsIGEgPSB0LmFjdGl2ZUluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5wYXJhbXMubG9vcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zbGlkZXMuZXEoYSkuaGFzQ2xhc3ModC5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykgJiYgKHQubG9vcEZpeCgpLCB0Ll9jbGllbnRMZWZ0ID0gdC4kd3JhcHBlckVsWzBdLmNsaWVudExlZnQsIGEgPSB0LmFjdGl2ZUluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5zbGlkZXMuZXEoYSkucHJldkFsbCgnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgdGhpcy5yZWFsSW5kZXggKyAnIl0nKS5lcSgwKS5pbmRleCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnNsaWRlcy5lcShhKS5uZXh0QWxsKCdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicgKyB0aGlzLnJlYWxJbmRleCArICciXScpLmVxKDApLmluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdm9pZCAwID09PSByID8gbiA6IHZvaWQgMCA9PT0gbiA/IHIgOiBuIC0gYSA9PSBhIC0gciA/IGEgOiBuIC0gYSA8IGEgLSByID8gbiA6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHMgPSB0aGlzLnJlYWxJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgdC52aXNpYmxlU2xpZGVzSW5kZXhlcyAmJiB0LnZpc2libGVTbGlkZXNJbmRleGVzLmluZGV4T2YocykgPCAwICYmICh0LnBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IHMgPSBzID4gYSA/IHMgLSBNYXRoLmZsb29yKGkgLyAyKSArIDEgOiBzICsgTWF0aC5mbG9vcihpIC8gMikgLSAxIDogcyA+IGEgJiYgKHMgPSBzIC0gaSArIDEpLCB0LnNsaWRlVG8ocywgZSA/IDAgOiB2b2lkIDApKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLnBhcmFtcy50aHVtYnMuc2xpZGVUaHVtYkFjdGl2ZUNsYXNzOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID4gMSAmJiAhdGhpcy5wYXJhbXMuY2VudGVyZWRTbGlkZXMgJiYgKG8gPSB0aGlzLnBhcmFtcy5zbGlkZXNQZXJWaWV3KSwgdGhpcy5wYXJhbXMudGh1bWJzLm11bHRpcGxlQWN0aXZlVGh1bWJzIHx8IChvID0gMSksIG8gPSBNYXRoLmZsb29yKG8pLCB0LnNsaWRlcy5yZW1vdmVDbGFzcyhsKSwgdC5wYXJhbXMubG9vcCB8fCB0LnBhcmFtcy52aXJ0dWFsICYmIHQucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBvOyBkICs9IDEpIHQuJHdyYXBwZXJFbC5jaGlsZHJlbignW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInICsgKHRoaXMucmVhbEluZGV4ICsgZCkgKyAnIl0nKS5hZGRDbGFzcyhsKTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGggPSAwOyBoIDwgbzsgaCArPSAxKSB0LnNsaWRlcy5lcSh0aGlzLnJlYWxJbmRleCArIGgpLmFkZENsYXNzKGwpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHdlID0gW1IsIHEsIEssIFUsIFosIEosIHRlLCB7CiAgICAgICAgICAgIG5hbWU6ICJtb3VzZXdoZWVsIiwKICAgICAgICAgICAgcGFyYW1zOiB7CiAgICAgICAgICAgICAgICBtb3VzZXdoZWVsOiB7CiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEsCiAgICAgICAgICAgICAgICAgICAgcmVsZWFzZU9uRWRnZXM6ICExLAogICAgICAgICAgICAgICAgICAgIGludmVydDogITEsCiAgICAgICAgICAgICAgICAgICAgZm9yY2VUb0F4aXM6ICExLAogICAgICAgICAgICAgICAgICAgIHNlbnNpdGl2aXR5OiAxLAogICAgICAgICAgICAgICAgICAgIGV2ZW50c1RhcmdlZDogImNvbnRhaW5lciIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBtb3VzZXdoZWVsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGU6IGllLmVuYWJsZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBpZS5kaXNhYmxlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaWUuaGFuZGxlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU1vdXNlRW50ZXI6IGllLmhhbmRsZU1vdXNlRW50ZXIuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlTW91c2VMZWF2ZTogaWUuaGFuZGxlTW91c2VMZWF2ZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlU2xpZGVyOiBpZS5hbmltYXRlU2xpZGVyLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VTY3JvbGw6IGllLnJlbGVhc2VTY3JvbGwuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNjcm9sbFRpbWU6IG4ubm93KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RFdmVudEJlZm9yZVNuYXA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVjZW50V2hlZWxFdmVudHM6IFtdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICF0aGlzLnBhcmFtcy5tb3VzZXdoZWVsLmVuYWJsZWQgJiYgdGhpcy5wYXJhbXMuY3NzTW9kZSAmJiB0aGlzLm1vdXNld2hlZWwuZGlzYWJsZSgpLCB0aGlzLnBhcmFtcy5tb3VzZXdoZWVsLmVuYWJsZWQgJiYgdGhpcy5tb3VzZXdoZWVsLmVuYWJsZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuY3NzTW9kZSAmJiB0aGlzLm1vdXNld2hlZWwuZW5hYmxlKCksIHRoaXMubW91c2V3aGVlbC5lbmFibGVkICYmIHRoaXMubW91c2V3aGVlbC5kaXNhYmxlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogIm5hdmlnYXRpb24iLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IHsKICAgICAgICAgICAgICAgICAgICBuZXh0RWw6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgcHJldkVsOiBudWxsLAogICAgICAgICAgICAgICAgICAgIGhpZGVPbkNsaWNrOiAhMSwKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZENsYXNzOiAic3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCIsCiAgICAgICAgICAgICAgICAgICAgaGlkZGVuQ2xhc3M6ICJzd2lwZXItYnV0dG9uLWhpZGRlbiIsCiAgICAgICAgICAgICAgICAgICAgbG9ja0NsYXNzOiAic3dpcGVyLWJ1dHRvbi1sb2NrIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5leHRlbmQodGhpcywgewogICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdDogc2UuaW5pdC5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IHNlLnVwZGF0ZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95OiBzZS5kZXN0cm95LmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIG9uTmV4dENsaWNrOiBzZS5vbk5leHRDbGljay5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBvblByZXZDbGljazogc2Uub25QcmV2Q2xpY2suYmluZCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uOiB7CiAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24uaW5pdCgpLCB0aGlzLm5hdmlnYXRpb24udXBkYXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b0VkZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi51cGRhdGUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZyb21FZGdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24udXBkYXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24uZGVzdHJveSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgaSA9IHRoaXMubmF2aWdhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuJG5leHRFbCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuJHByZXZFbDsKICAgICAgICAgICAgICAgICAgICAhdGhpcy5wYXJhbXMubmF2aWdhdGlvbi5oaWRlT25DbGljayB8fCBzKGUudGFyZ2V0KS5pcyhyKSB8fCBzKGUudGFyZ2V0KS5pcyhhKSB8fCAoYSA/IHQgPSBhLmhhc0NsYXNzKHRoaXMucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpIDogciAmJiAodCA9IHIuaGFzQ2xhc3ModGhpcy5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcykpLCAhMCA9PT0gdCA/IHRoaXMuZW1pdCgibmF2aWdhdGlvblNob3ciLCB0aGlzKSA6IHRoaXMuZW1pdCgibmF2aWdhdGlvbkhpZGUiLCB0aGlzKSwgYSAmJiBhLnRvZ2dsZUNsYXNzKHRoaXMucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpLCByICYmIHIudG9nZ2xlQ2xhc3ModGhpcy5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIG5hbWU6ICJwYWdpbmF0aW9uIiwKICAgICAgICAgICAgcGFyYW1zOiB7CiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiB7CiAgICAgICAgICAgICAgICAgICAgZWw6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgYnVsbGV0RWxlbWVudDogInNwYW4iLAogICAgICAgICAgICAgICAgICAgIGNsaWNrYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgaGlkZU9uQ2xpY2s6ICExLAogICAgICAgICAgICAgICAgICAgIHJlbmRlckJ1bGxldDogbnVsbCwKICAgICAgICAgICAgICAgICAgICByZW5kZXJQcm9ncmVzc2JhcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICByZW5kZXJGcmFjdGlvbjogbnVsbCwKICAgICAgICAgICAgICAgICAgICByZW5kZXJDdXN0b206IG51bGwsCiAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NiYXJPcHBvc2l0ZTogITEsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogImJ1bGxldHMiLAogICAgICAgICAgICAgICAgICAgIGR5bmFtaWNCdWxsZXRzOiAhMSwKICAgICAgICAgICAgICAgICAgICBkeW5hbWljTWFpbkJ1bGxldHM6IDEsCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0RnJhY3Rpb25DdXJyZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmb3JtYXRGcmFjdGlvblRvdGFsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBidWxsZXRDbGFzczogInN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCIsCiAgICAgICAgICAgICAgICAgICAgYnVsbGV0QWN0aXZlQ2xhc3M6ICJzd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICBtb2RpZmllckNsYXNzOiAic3dpcGVyLXBhZ2luYXRpb24tIiwKICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2xhc3M6ICJzd2lwZXItcGFnaW5hdGlvbi1jdXJyZW50IiwKICAgICAgICAgICAgICAgICAgICB0b3RhbENsYXNzOiAic3dpcGVyLXBhZ2luYXRpb24tdG90YWwiLAogICAgICAgICAgICAgICAgICAgIGhpZGRlbkNsYXNzOiAic3dpcGVyLXBhZ2luYXRpb24taGlkZGVuIiwKICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc2JhckZpbGxDbGFzczogInN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWZpbGwiLAogICAgICAgICAgICAgICAgICAgIHByb2dyZXNzYmFyT3Bwb3NpdGVDbGFzczogInN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlIiwKICAgICAgICAgICAgICAgICAgICBjbGlja2FibGVDbGFzczogInN3aXBlci1wYWdpbmF0aW9uLWNsaWNrYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgbG9ja0NsYXNzOiAic3dpcGVyLXBhZ2luYXRpb24tbG9jayIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQ6IGFlLmluaXQuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyOiBhZS5yZW5kZXIuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBhZS51cGRhdGUuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHJveTogYWUuZGVzdHJveS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljQnVsbGV0SW5kZXg6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLmluaXQoKSwgdGhpcy5wYWdpbmF0aW9uLnJlbmRlcigpLCB0aGlzLnBhZ2luYXRpb24udXBkYXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleENoYW5nZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMubG9vcCA/IHRoaXMucGFnaW5hdGlvbi51cGRhdGUoKSA6IHZvaWQgMCA9PT0gdGhpcy5zbmFwSW5kZXggJiYgdGhpcy5wYWdpbmF0aW9uLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc25hcEluZGV4Q2hhbmdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5sb29wIHx8IHRoaXMucGFnaW5hdGlvbi51cGRhdGUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNsaWRlc0xlbmd0aENoYW5nZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMubG9vcCAmJiAodGhpcy5wYWdpbmF0aW9uLnJlbmRlcigpLCB0aGlzLnBhZ2luYXRpb24udXBkYXRlKCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc25hcEdyaWRMZW5ndGhDaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLmxvb3AgfHwgKHRoaXMucGFnaW5hdGlvbi5yZW5kZXIoKSwgdGhpcy5wYWdpbmF0aW9uLnVwZGF0ZSgpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbi5kZXN0cm95KCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLnBhZ2luYXRpb24uZWwgJiYgdGhpcy5wYXJhbXMucGFnaW5hdGlvbi5oaWRlT25DbGljayAmJiB0aGlzLnBhZ2luYXRpb24uJGVsLmxlbmd0aCA+IDAgJiYgIXMoZS50YXJnZXQpLmhhc0NsYXNzKHRoaXMucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0Q2xhc3MpICYmICghMCA9PT0gdGhpcy5wYWdpbmF0aW9uLiRlbC5oYXNDbGFzcyh0aGlzLnBhcmFtcy5wYWdpbmF0aW9uLmhpZGRlbkNsYXNzKSA/IHRoaXMuZW1pdCgicGFnaW5hdGlvblNob3ciLCB0aGlzKSA6IHRoaXMuZW1pdCgicGFnaW5hdGlvbkhpZGUiLCB0aGlzKSwgdGhpcy5wYWdpbmF0aW9uLiRlbC50b2dnbGVDbGFzcyh0aGlzLnBhcmFtcy5wYWdpbmF0aW9uLmhpZGRlbkNsYXNzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogInNjcm9sbGJhciIsCiAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAgc2Nyb2xsYmFyOiB7CiAgICAgICAgICAgICAgICAgICAgZWw6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgZHJhZ1NpemU6ICJhdXRvIiwKICAgICAgICAgICAgICAgICAgICBoaWRlOiAhMSwKICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU6ICExLAogICAgICAgICAgICAgICAgICAgIHNuYXBPblJlbGVhc2U6ICEwLAogICAgICAgICAgICAgICAgICAgIGxvY2tDbGFzczogInN3aXBlci1zY3JvbGxiYXItbG9jayIsCiAgICAgICAgICAgICAgICAgICAgZHJhZ0NsYXNzOiAic3dpcGVyLXNjcm9sbGJhci1kcmFnIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5leHRlbmQodGhpcywgewogICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhcjogewogICAgICAgICAgICAgICAgICAgICAgICBpbml0OiByZS5pbml0LmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3k6IHJlLmRlc3Ryb3kuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2l6ZTogcmUudXBkYXRlU2l6ZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IHJlLnNldFRyYW5zbGF0ZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiByZS5zZXRUcmFuc2l0aW9uLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZURyYWdnYWJsZTogcmUuZW5hYmxlRHJhZ2dhYmxlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVEcmFnZ2FibGU6IHJlLmRpc2FibGVEcmFnZ2FibGUuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0RHJhZ1Bvc2l0aW9uOiByZS5zZXREcmFnUG9zaXRpb24uYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UG9pbnRlclBvc2l0aW9uOiByZS5nZXRQb2ludGVyUG9zaXRpb24uYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgb25EcmFnU3RhcnQ6IHJlLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIG9uRHJhZ01vdmU6IHJlLm9uRHJhZ01vdmUuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgb25EcmFnRW5kOiByZS5vbkRyYWdFbmQuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ1RpbWVvdXQ6IG51bGwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxiYXIuaW5pdCgpLCB0aGlzLnNjcm9sbGJhci51cGRhdGVTaXplKCksIHRoaXMuc2Nyb2xsYmFyLnNldFRyYW5zbGF0ZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGJhci51cGRhdGVTaXplKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZXNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyLnVwZGF0ZVNpemUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9ic2VydmVyVXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGJhci51cGRhdGVTaXplKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyLnNldFRyYW5zbGF0ZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyLnNldFRyYW5zaXRpb24oZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGJhci5kZXN0cm95KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogInBhcmFsbGF4IiwKICAgICAgICAgICAgcGFyYW1zOiB7CiAgICAgICAgICAgICAgICBwYXJhbGxheDogewogICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuLmV4dGVuZCh0aGlzLCB7CiAgICAgICAgICAgICAgICAgICAgcGFyYWxsYXg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNmb3JtOiBuZS5zZXRUcmFuc2Zvcm0uYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNsYXRlOiBuZS5zZXRUcmFuc2xhdGUuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogbmUuc2V0VHJhbnNpdGlvbi5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgIGJlZm9yZUluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLnBhcmFsbGF4LmVuYWJsZWQgJiYgKHRoaXMucGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3MgPSAhMCwgdGhpcy5vcmlnaW5hbFBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzID0gITApCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMucGFyYWxsYXguZW5hYmxlZCAmJiB0aGlzLnBhcmFsbGF4LnNldFRyYW5zbGF0ZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0VHJhbnNsYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5wYXJhbGxheC5lbmFibGVkICYmIHRoaXMucGFyYWxsYXguc2V0VHJhbnNsYXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMucGFyYWxsYXguZW5hYmxlZCAmJiB0aGlzLnBhcmFsbGF4LnNldFRyYW5zaXRpb24oZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogInpvb20iLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIHpvb206IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICBtYXhSYXRpbzogMywKICAgICAgICAgICAgICAgICAgICBtaW5SYXRpbzogMSwKICAgICAgICAgICAgICAgICAgICB0b2dnbGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckNsYXNzOiAic3dpcGVyLXpvb20tY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICB6b29tZWRTbGlkZUNsYXNzOiAic3dpcGVyLXNsaWRlLXpvb21lZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY2FsZTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNTY2FsaW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2VzdHVyZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNsaWRlRWw6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlV2lkdGg6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSGVpZ2h0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1hZ2VFbDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltYWdlV3JhcEVsOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhSYXRpbzogMwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaGVkOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01vdmVkOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50WDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblg6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFg6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0WDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRZOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3VjaGVzU3RhcnQ6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlc0N1cnJlbnQ6IHt9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHZlbG9jaXR5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2UG9zaXRpb25YOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2UG9zaXRpb25ZOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2VGltZTogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIm9uR2VzdHVyZVN0YXJ0IG9uR2VzdHVyZUNoYW5nZSBvbkdlc3R1cmVFbmQgb25Ub3VjaFN0YXJ0IG9uVG91Y2hNb3ZlIG9uVG91Y2hFbmQgb25UcmFuc2l0aW9uRW5kIHRvZ2dsZSBlbmFibGUgZGlzYWJsZSBpbiBvdXQiLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgIHRbaV0gPSBvZVtpXS5iaW5kKGUpCiAgICAgICAgICAgICAgICB9KSksIG4uZXh0ZW5kKGUsIHsKICAgICAgICAgICAgICAgICAgICB6b29tOiB0CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBpID0gMTsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnpvb20sICJzY2FsZSIsIHsKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGUuem9vbS5nZXN0dXJlLiRpbWFnZUVsID8gZS56b29tLmdlc3R1cmUuJGltYWdlRWxbMF0gOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuem9vbS5nZXN0dXJlLiRzbGlkZUVsID8gZS56b29tLmdlc3R1cmUuJHNsaWRlRWxbMF0gOiB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVtaXQoInpvb21DaGFuZ2UiLCB0LCBzLCBhKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLnpvb20uZW5hYmxlZCAmJiB0aGlzLnpvb20uZW5hYmxlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnpvb20uZGlzYWJsZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG91Y2hTdGFydDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuem9vbS5lbmFibGVkICYmIHRoaXMuem9vbS5vblRvdWNoU3RhcnQoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b3VjaEVuZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuem9vbS5lbmFibGVkICYmIHRoaXMuem9vbS5vblRvdWNoRW5kKGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZG91YmxlVGFwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuem9vbS5lbmFibGVkICYmIHRoaXMuem9vbS5lbmFibGVkICYmIHRoaXMucGFyYW1zLnpvb20udG9nZ2xlICYmIHRoaXMuem9vbS50b2dnbGUoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uRW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnpvb20uZW5hYmxlZCAmJiB0aGlzLnBhcmFtcy56b29tLmVuYWJsZWQgJiYgdGhpcy56b29tLm9uVHJhbnNpdGlvbkVuZCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2xpZGVDaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuem9vbS5lbmFibGVkICYmIHRoaXMucGFyYW1zLnpvb20uZW5hYmxlZCAmJiB0aGlzLnBhcmFtcy5jc3NNb2RlICYmIHRoaXMuem9vbS5vblRyYW5zaXRpb25FbmQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBuYW1lOiAibGF6eSIsCiAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAgbGF6eTogewogICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dDogITEsCiAgICAgICAgICAgICAgICAgICAgbG9hZFByZXZOZXh0QW1vdW50OiAxLAogICAgICAgICAgICAgICAgICAgIGxvYWRPblRyYW5zaXRpb25TdGFydDogITEsCiAgICAgICAgICAgICAgICAgICAgZWxlbWVudENsYXNzOiAic3dpcGVyLWxhenkiLAogICAgICAgICAgICAgICAgICAgIGxvYWRpbmdDbGFzczogInN3aXBlci1sYXp5LWxvYWRpbmciLAogICAgICAgICAgICAgICAgICAgIGxvYWRlZENsYXNzOiAic3dpcGVyLWxhenktbG9hZGVkIiwKICAgICAgICAgICAgICAgICAgICBwcmVsb2FkZXJDbGFzczogInN3aXBlci1sYXp5LXByZWxvYWRlciIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBsYXp5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxJbWFnZUxvYWRlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6IGxlLmxvYWQuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9hZEluU2xpZGU6IGxlLmxvYWRJblNsaWRlLmJpbmQodGhpcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICAgYmVmb3JlSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMubGF6eS5lbmFibGVkICYmIHRoaXMucGFyYW1zLnByZWxvYWRJbWFnZXMgJiYgKHRoaXMucGFyYW1zLnByZWxvYWRJbWFnZXMgPSAhMSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5sYXp5LmVuYWJsZWQgJiYgIXRoaXMucGFyYW1zLmxvb3AgJiYgMCA9PT0gdGhpcy5wYXJhbXMuaW5pdGlhbFNsaWRlICYmIHRoaXMubGF6eS5sb2FkKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzY3JvbGw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLmZyZWVNb2RlICYmICF0aGlzLnBhcmFtcy5mcmVlTW9kZVN0aWNreSAmJiB0aGlzLmxhenkubG9hZCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5sYXp5LmVuYWJsZWQgJiYgdGhpcy5sYXp5LmxvYWQoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNjcm9sbGJhckRyYWdNb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5sYXp5LmVuYWJsZWQgJiYgdGhpcy5sYXp5LmxvYWQoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRyYW5zaXRpb25TdGFydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMubGF6eS5lbmFibGVkICYmICh0aGlzLnBhcmFtcy5sYXp5LmxvYWRPblRyYW5zaXRpb25TdGFydCB8fCAhdGhpcy5wYXJhbXMubGF6eS5sb2FkT25UcmFuc2l0aW9uU3RhcnQgJiYgIXRoaXMubGF6eS5pbml0aWFsSW1hZ2VMb2FkZWQpICYmIHRoaXMubGF6eS5sb2FkKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uRW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5sYXp5LmVuYWJsZWQgJiYgIXRoaXMucGFyYW1zLmxhenkubG9hZE9uVHJhbnNpdGlvblN0YXJ0ICYmIHRoaXMubGF6eS5sb2FkKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzbGlkZUNoYW5nZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMubGF6eS5lbmFibGVkICYmIHRoaXMucGFyYW1zLmNzc01vZGUgJiYgdGhpcy5sYXp5LmxvYWQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBuYW1lOiAiY29udHJvbGxlciIsCiAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAgY29udHJvbGxlcjogewogICAgICAgICAgICAgICAgICAgIGNvbnRyb2w6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBpbnZlcnNlOiAhMSwKICAgICAgICAgICAgICAgICAgICBieTogInNsaWRlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5leHRlbmQodGhpcywgewogICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbDogdGhpcy5wYXJhbXMuY29udHJvbGxlci5jb250cm9sLAogICAgICAgICAgICAgICAgICAgICAgICBnZXRJbnRlcnBvbGF0ZUZ1bmN0aW9uOiBkZS5nZXRJbnRlcnBvbGF0ZUZ1bmN0aW9uLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogZGUuc2V0VHJhbnNsYXRlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb246IGRlLnNldFRyYW5zaXRpb24uYmluZCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uOiB7CiAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5jb250cm9sICYmIHRoaXMuY29udHJvbGxlci5zcGxpbmUgJiYgKHRoaXMuY29udHJvbGxlci5zcGxpbmUgPSB2b2lkIDAsIGRlbGV0ZSB0aGlzLmNvbnRyb2xsZXIuc3BsaW5lKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlc2l6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sbGVyLnNwbGluZSAmJiAodGhpcy5jb250cm9sbGVyLnNwbGluZSA9IHZvaWQgMCwgZGVsZXRlIHRoaXMuY29udHJvbGxlci5zcGxpbmUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2JzZXJ2ZXJVcGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5jb250cm9sICYmIHRoaXMuY29udHJvbGxlci5zcGxpbmUgJiYgKHRoaXMuY29udHJvbGxlci5zcGxpbmUgPSB2b2lkIDAsIGRlbGV0ZSB0aGlzLmNvbnRyb2xsZXIuc3BsaW5lKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5jb250cm9sICYmIHRoaXMuY29udHJvbGxlci5zZXRUcmFuc2xhdGUoZSwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sbGVyLnNldFRyYW5zaXRpb24oZSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogImExMXkiLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIGExMXk6IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25DbGFzczogInN3aXBlci1ub3RpZmljYXRpb24iLAogICAgICAgICAgICAgICAgICAgIHByZXZTbGlkZU1lc3NhZ2U6ICJQcmV2aW91cyBzbGlkZSIsCiAgICAgICAgICAgICAgICAgICAgbmV4dFNsaWRlTWVzc2FnZTogIk5leHQgc2xpZGUiLAogICAgICAgICAgICAgICAgICAgIGZpcnN0U2xpZGVNZXNzYWdlOiAiVGhpcyBpcyB0aGUgZmlyc3Qgc2xpZGUiLAogICAgICAgICAgICAgICAgICAgIGxhc3RTbGlkZU1lc3NhZ2U6ICJUaGlzIGlzIHRoZSBsYXN0IHNsaWRlIiwKICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQnVsbGV0TWVzc2FnZTogIkdvIHRvIHNsaWRlIHt7aW5kZXh9fSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKGUsIHsKICAgICAgICAgICAgICAgICAgICBhMTF5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb246IHMoJzxzcGFuIGNsYXNzPSInICsgZS5wYXJhbXMuYTExeS5ub3RpZmljYXRpb25DbGFzcyArICciIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBhcmlhLWF0b21pYz0idHJ1ZSI+PC9zcGFuPicpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIE9iamVjdC5rZXlzKGhlKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5hMTF5W3RdID0gaGVbdF0uYmluZChlKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uOiB7CiAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5hMTF5LmVuYWJsZWQgJiYgKHRoaXMuYTExeS5pbml0KCksIHRoaXMuYTExeS51cGRhdGVOYXZpZ2F0aW9uKCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9FZGdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5hMTF5LmVuYWJsZWQgJiYgdGhpcy5hMTF5LnVwZGF0ZU5hdmlnYXRpb24oKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZyb21FZGdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5hMTF5LmVuYWJsZWQgJiYgdGhpcy5hMTF5LnVwZGF0ZU5hdmlnYXRpb24oKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHBhZ2luYXRpb25VcGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLmExMXkuZW5hYmxlZCAmJiB0aGlzLmExMXkudXBkYXRlUGFnaW5hdGlvbigpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuYTExeS5lbmFibGVkICYmIHRoaXMuYTExeS5kZXN0cm95KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogImhpc3RvcnkiLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIGhpc3Rvcnk6IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICByZXBsYWNlU3RhdGU6ICExLAogICAgICAgICAgICAgICAgICAgIGtleTogInNsaWRlcyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBoaXN0b3J5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQ6IHBlLmluaXQuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGlzdG9yeTogcGUuc2V0SGlzdG9yeS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBzZXRIaXN0b3J5UG9wU3RhdGU6IHBlLnNldEhpc3RvcnlQb3BTdGF0ZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb1NsaWRlOiBwZS5zY3JvbGxUb1NsaWRlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3k6IHBlLmRlc3Ryb3kuYmluZCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uOiB7CiAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQgJiYgdGhpcy5oaXN0b3J5LmluaXQoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLmhpc3RvcnkuZW5hYmxlZCAmJiB0aGlzLmhpc3RvcnkuZGVzdHJveSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdHJhbnNpdGlvbkVuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5LmluaXRpYWxpemVkICYmIHRoaXMuaGlzdG9yeS5zZXRIaXN0b3J5KHRoaXMucGFyYW1zLmhpc3Rvcnkua2V5LCB0aGlzLmFjdGl2ZUluZGV4KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNsaWRlQ2hhbmdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnkuaW5pdGlhbGl6ZWQgJiYgdGhpcy5wYXJhbXMuY3NzTW9kZSAmJiB0aGlzLmhpc3Rvcnkuc2V0SGlzdG9yeSh0aGlzLnBhcmFtcy5oaXN0b3J5LmtleSwgdGhpcy5hY3RpdmVJbmRleCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogImhhc2gtbmF2aWdhdGlvbiIsCiAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAgaGFzaE5hdmlnYXRpb246IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICByZXBsYWNlU3RhdGU6ICExLAogICAgICAgICAgICAgICAgICAgIHdhdGNoU3RhdGU6ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuLmV4dGVuZCh0aGlzLCB7CiAgICAgICAgICAgICAgICAgICAgaGFzaE5hdmlnYXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBpbml0OiBjZS5pbml0LmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3k6IGNlLmRlc3Ryb3kuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGFzaDogY2Uuc2V0SGFzaC5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBvbkhhc2hDYW5nZTogY2Uub25IYXNoQ2FuZ2UuYmluZCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uOiB7CiAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkICYmIHRoaXMuaGFzaE5hdmlnYXRpb24uaW5pdCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuaGFzaE5hdmlnYXRpb24uZW5hYmxlZCAmJiB0aGlzLmhhc2hOYXZpZ2F0aW9uLmRlc3Ryb3koKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRyYW5zaXRpb25FbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzaE5hdmlnYXRpb24uaW5pdGlhbGl6ZWQgJiYgdGhpcy5oYXNoTmF2aWdhdGlvbi5zZXRIYXNoKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzbGlkZUNoYW5nZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNoTmF2aWdhdGlvbi5pbml0aWFsaXplZCAmJiB0aGlzLnBhcmFtcy5jc3NNb2RlICYmIHRoaXMuaGFzaE5hdmlnYXRpb24uc2V0SGFzaCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIG5hbWU6ICJhdXRvcGxheSIsCiAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAgYXV0b3BsYXk6IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICBkZWxheTogM2UzLAogICAgICAgICAgICAgICAgICAgIHdhaXRGb3JUcmFuc2l0aW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlT25JbnRlcmFjdGlvbjogITAsCiAgICAgICAgICAgICAgICAgICAgc3RvcE9uTGFzdFNsaWRlOiAhMSwKICAgICAgICAgICAgICAgICAgICByZXZlcnNlRGlyZWN0aW9uOiAhMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgbi5leHRlbmQoZSwgewogICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmc6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBwYXVzZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBydW46IHVlLnJ1bi5iaW5kKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogdWUuc3RhcnQuYmluZChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcDogdWUuc3RvcC5iaW5kKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBwYXVzZTogdWUucGF1c2UuYmluZChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWRkZW4iID09PSBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgJiYgZS5hdXRvcGxheS5ydW5uaW5nICYmIGUuYXV0b3BsYXkucGF1c2UoKSwgInZpc2libGUiID09PSBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgJiYgZS5hdXRvcGxheS5wYXVzZWQgJiYgKGUuYXV0b3BsYXkucnVuKCksIGUuYXV0b3BsYXkucGF1c2VkID0gITEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhbnNpdGlvbkVuZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiAhZS5kZXN0cm95ZWQgJiYgZS4kd3JhcHBlckVsICYmIHQudGFyZ2V0ID09PSB0aGlzICYmIChlLiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIGUuYXV0b3BsYXkub25UcmFuc2l0aW9uRW5kKSwgZS4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCBlLmF1dG9wbGF5Lm9uVHJhbnNpdGlvbkVuZCksIGUuYXV0b3BsYXkucGF1c2VkID0gITEsIGUuYXV0b3BsYXkucnVubmluZyA/IGUuYXV0b3BsYXkucnVuKCkgOiBlLmF1dG9wbGF5LnN0b3AoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uOiB7CiAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5hdXRvcGxheS5lbmFibGVkICYmICh0aGlzLmF1dG9wbGF5LnN0YXJ0KCksIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLCB0aGlzLmF1dG9wbGF5Lm9uVmlzaWJpbGl0eUNoYW5nZSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmVmb3JlVHJhbnNpdGlvblN0YXJ0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvcGxheS5ydW5uaW5nICYmICh0IHx8ICF0aGlzLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbiA/IHRoaXMuYXV0b3BsYXkucGF1c2UoZSkgOiB0aGlzLmF1dG9wbGF5LnN0b3AoKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzbGlkZXJGaXJzdE1vdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b3BsYXkucnVubmluZyAmJiAodGhpcy5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24gPyB0aGlzLmF1dG9wbGF5LnN0b3AoKSA6IHRoaXMuYXV0b3BsYXkucGF1c2UoKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b3VjaEVuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuY3NzTW9kZSAmJiB0aGlzLmF1dG9wbGF5LnBhdXNlZCAmJiAhdGhpcy5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24gJiYgdGhpcy5hdXRvcGxheS5ydW4oKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b3BsYXkucnVubmluZyAmJiB0aGlzLmF1dG9wbGF5LnN0b3AoKSwgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsIHRoaXMuYXV0b3BsYXkub25WaXNpYmlsaXR5Q2hhbmdlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBuYW1lOiAiZWZmZWN0LWZhZGUiLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIGZhZGVFZmZlY3Q6IHsKICAgICAgICAgICAgICAgICAgICBjcm9zc0ZhZGU6ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuLmV4dGVuZCh0aGlzLCB7CiAgICAgICAgICAgICAgICAgICAgZmFkZUVmZmVjdDogewogICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IHZlLnNldFRyYW5zbGF0ZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiB2ZS5zZXRUcmFuc2l0aW9uLmJpbmQodGhpcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICAgYmVmb3JlSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmYWRlIiA9PT0gdGhpcy5wYXJhbXMuZWZmZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lcy5wdXNoKHRoaXMucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyAiZmFkZSIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJDb2x1bW46IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VCZXR3ZWVuOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFRyYW5zbGF0ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5leHRlbmQodGhpcy5wYXJhbXMsIGUpLCBuLmV4dGVuZCh0aGlzLm9yaWdpbmFsUGFyYW1zLCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICJmYWRlIiA9PT0gdGhpcy5wYXJhbXMuZWZmZWN0ICYmIHRoaXMuZmFkZUVmZmVjdC5zZXRUcmFuc2xhdGUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAiZmFkZSIgPT09IHRoaXMucGFyYW1zLmVmZmVjdCAmJiB0aGlzLmZhZGVFZmZlY3Quc2V0VHJhbnNpdGlvbihlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBuYW1lOiAiZWZmZWN0LWN1YmUiLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIGN1YmVFZmZlY3Q6IHsKICAgICAgICAgICAgICAgICAgICBzbGlkZVNoYWRvd3M6ICEwLAogICAgICAgICAgICAgICAgICAgIHNoYWRvdzogITAsCiAgICAgICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiAyMCwKICAgICAgICAgICAgICAgICAgICBzaGFkb3dTY2FsZTogLjk0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuLmV4dGVuZCh0aGlzLCB7CiAgICAgICAgICAgICAgICAgICAgY3ViZUVmZmVjdDogewogICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGZlLnNldFRyYW5zbGF0ZS5iaW5kKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmZS5zZXRUcmFuc2l0aW9uLmJpbmQodGhpcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICAgYmVmb3JlSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJjdWJlIiA9PT0gdGhpcy5wYXJhbXMuZWZmZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lcy5wdXNoKHRoaXMucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyAiY3ViZSIpLCB0aGlzLmNsYXNzTmFtZXMucHVzaCh0aGlzLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzICsgIjNkIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlckNvbHVtbjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1Blckdyb3VwOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpc3RhbmNlUmF0aW86IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZUJldHdlZW46IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJlZFNsaWRlczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsVHJhbnNsYXRlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBuLmV4dGVuZCh0aGlzLnBhcmFtcywgZSksIG4uZXh0ZW5kKHRoaXMub3JpZ2luYWxQYXJhbXMsIGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgImN1YmUiID09PSB0aGlzLnBhcmFtcy5lZmZlY3QgJiYgdGhpcy5jdWJlRWZmZWN0LnNldFRyYW5zbGF0ZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICJjdWJlIiA9PT0gdGhpcy5wYXJhbXMuZWZmZWN0ICYmIHRoaXMuY3ViZUVmZmVjdC5zZXRUcmFuc2l0aW9uKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIG5hbWU6ICJlZmZlY3QtZmxpcCIsCiAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAgZmxpcEVmZmVjdDogewogICAgICAgICAgICAgICAgICAgIHNsaWRlU2hhZG93czogITAsCiAgICAgICAgICAgICAgICAgICAgbGltaXRSb3RhdGlvbjogITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBmbGlwRWZmZWN0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogbWUuc2V0VHJhbnNsYXRlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb246IG1lLnNldFRyYW5zaXRpb24uYmluZCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uOiB7CiAgICAgICAgICAgICAgICBiZWZvcmVJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoImZsaXAiID09PSB0aGlzLnBhcmFtcy5lZmZlY3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWVzLnB1c2godGhpcy5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzcyArICJmbGlwIiksIHRoaXMuY2xhc3NOYW1lcy5wdXNoKHRoaXMucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyAiM2QiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyQ29sdW1uOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaFNsaWRlc1Byb2dyZXNzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxUcmFuc2xhdGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMucGFyYW1zLCBlKSwgbi5leHRlbmQodGhpcy5vcmlnaW5hbFBhcmFtcywgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0VHJhbnNsYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAiZmxpcCIgPT09IHRoaXMucGFyYW1zLmVmZmVjdCAmJiB0aGlzLmZsaXBFZmZlY3Quc2V0VHJhbnNsYXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgImZsaXAiID09PSB0aGlzLnBhcmFtcy5lZmZlY3QgJiYgdGhpcy5mbGlwRWZmZWN0LnNldFRyYW5zaXRpb24oZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogImVmZmVjdC1jb3ZlcmZsb3ciLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIGNvdmVyZmxvd0VmZmVjdDogewogICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogNTAsCiAgICAgICAgICAgICAgICAgICAgc3RyZXRjaDogMCwKICAgICAgICAgICAgICAgICAgICBkZXB0aDogMTAwLAogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyOiAxLAogICAgICAgICAgICAgICAgICAgIHNsaWRlU2hhZG93czogITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBjb3ZlcmZsb3dFZmZlY3Q6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNsYXRlOiBnZS5zZXRUcmFuc2xhdGUuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZ2Uuc2V0VHJhbnNpdGlvbi5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgIGJlZm9yZUluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICJjb3ZlcmZsb3ciID09PSB0aGlzLnBhcmFtcy5lZmZlY3QgJiYgKHRoaXMuY2xhc3NOYW1lcy5wdXNoKHRoaXMucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyAiY292ZXJmbG93IiksIHRoaXMuY2xhc3NOYW1lcy5wdXNoKHRoaXMucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyAiM2QiKSwgdGhpcy5wYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcyA9ICEwLCB0aGlzLm9yaWdpbmFsUGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3MgPSAhMCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICJjb3ZlcmZsb3ciID09PSB0aGlzLnBhcmFtcy5lZmZlY3QgJiYgdGhpcy5jb3ZlcmZsb3dFZmZlY3Quc2V0VHJhbnNsYXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgImNvdmVyZmxvdyIgPT09IHRoaXMucGFyYW1zLmVmZmVjdCAmJiB0aGlzLmNvdmVyZmxvd0VmZmVjdC5zZXRUcmFuc2l0aW9uKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIG5hbWU6ICJ0aHVtYnMiLAogICAgICAgICAgICBwYXJhbXM6IHsKICAgICAgICAgICAgICAgIHRodW1iczogewogICAgICAgICAgICAgICAgICAgIG11bHRpcGxlQWN0aXZlVGh1bWJzOiAhMCwKICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVUaHVtYkFjdGl2ZUNsYXNzOiAic3dpcGVyLXNsaWRlLXRodW1iLWFjdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgdGh1bWJzQ29udGFpbmVyQ2xhc3M6ICJzd2lwZXItY29udGFpbmVyLXRodW1icyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZXh0ZW5kKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICB0aHVtYnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBpbml0OiBiZS5pbml0LmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTogYmUudXBkYXRlLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIG9uVGh1bWJDbGljazogYmUub25UaHVtYkNsaWNrLmJpbmQodGhpcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICAgYmVmb3JlSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnBhcmFtcy50aHVtYnM7CiAgICAgICAgICAgICAgICAgICAgZSAmJiBlLnN3aXBlciAmJiAodGhpcy50aHVtYnMuaW5pdCgpLCB0aGlzLnRodW1icy51cGRhdGUoITApKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNsaWRlQ2hhbmdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRodW1icy5zd2lwZXIgJiYgdGhpcy50aHVtYnMudXBkYXRlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudGh1bWJzLnN3aXBlciAmJiB0aGlzLnRodW1icy51cGRhdGUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlc2l6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50aHVtYnMuc3dpcGVyICYmIHRoaXMudGh1bWJzLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2JzZXJ2ZXJVcGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudGh1bWJzLnN3aXBlciAmJiB0aGlzLnRodW1icy51cGRhdGUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudGh1bWJzLnN3aXBlcjsKICAgICAgICAgICAgICAgICAgICB0ICYmIHQuc2V0VHJhbnNpdGlvbihlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy50aHVtYnMuc3dpcGVyOwogICAgICAgICAgICAgICAgICAgIGUgJiYgdGhpcy50aHVtYnMuc3dpcGVyQ3JlYXRlZCAmJiBlICYmIGUuZGVzdHJveSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9XTsKICAgIHJldHVybiB2b2lkIDAgPT09IFcudXNlICYmIChXLnVzZSA9IFcuQ2xhc3MudXNlLCBXLmluc3RhbGxNb2R1bGUgPSBXLkNsYXNzLmluc3RhbGxNb2R1bGUpLCBXLnVzZSh3ZSksIFcKfSkpOw=="}},"time_used":1306,"timings":{"blocked":1136,"dns":0,"connect":0,"send":0,"wait":159,"receive":11,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"cdn.websitepolicies.io/lib/cookieconsent/1.0.3/cookieconsent.min.js","fqdn":"cdn.websitepolicies.io","domain":"websitepolicies.io","tld":"io"},"ip":{"addr":"104.21.52.101","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.327Z","timestamp":1785145482327,"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":"websitepolicies.io","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Tue, 23 Jun 2026 05:15:03 GMT","end":"Mon, 21 Sep 2026 06:13:23 GMT"},"fingerprint":{"sha1":"E6:A5:21:81:DF:A5:27:3A:8B:EF:24:C3:33:D7:A8:7C:2E:FE:A5:13","sha256":"0B:DD:5E:61:67:C2:FF:FB:21:5A:C5:59:36:04:5B:CA:D1:B5:A8:75:BF:7F:EA:D9:89:D5:BC:81:17:56:DB:FD"}}},"request":{"raw":"GET /lib/cookieconsent/1.0.3/cookieconsent.min.js HTTP/1.1\r\nHost: cdn.websitepolicies.io\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://betaroi.ltd/\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 301 \r\ncontent-type: text/html; charset=UTF-8\r\ndate: Mon, 27 Jul 2026 09:44:42 GMT\r\nlocation: https://cdnconsents.websitepolicies.com/legacy/lib/cookieconsent/1.0.3/cookieconsent.min.js\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=X8aQp76YCEfIAni%2BZpSxEljhf0pAMrSbb2xGXUnnCYfgjGmMU13I2Y6c35Ca8efYtOprXQgaQulO6%2BMXlDONQM9bw%2FPdIN0zmvnQYnyr%2BwrjQ6To0R0B3SEhopLdQ%2FjV%2BuiCmmVw22eG\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nserver: cloudflare\r\ncf-ray: a21ab5011c504c11-OSL\r\n\r\n","headers":null,"cookies":null,"status_code":"301","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/javascript","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":92,"timings":{"blocked":-1,"dns":72,"connect":17,"send":0,"wait":3,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.6.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.509Z","timestamp":1785145482509,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.6.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 68650\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":68650,"size_decoded":68867,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (477)","md5":"3f673742c12fdc34bc5fbbe29b269f08","sha1":"1743e215dbcaaf595c3a3154fcd8754edd61ffa5","sha256":"4e4f8db065e91fd675f7803e59dc07bea16c17032e8c3cd44fae583add2d4833","sha512":"3be3bb0c5453625c90a9452539ea446d9e667ed3b624326dfce75b362761204d2a0dc295d9f198ccb6659758bbe9912ea4ece017ad58fb53b6045cae6ebd5604","ssdeep":"1536:nHLQLvde+qSdbJkAu6yI7tewf2sZonUrcCsAJLA2bz9QnczOHdd/Tr+6HRX9KFf1:qQtGh","tlshash":"7863611a7af25479820bb07b2e2b9419b335448f640abe1d3e2c51a49f64d7867f1ff0","first_seen":"2026-07-27T08:06:56.46259Z","last_seen":"2026-07-27T09:45:50.903147Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvciAtIHYzLjYuMiAtIDA0LTA0LTIwMjIgKi8KInVzZSBzdHJpY3QiOwooc2VsZi53ZWJwYWNrQ2h1bmtlbGVtZW50b3IgPSBzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvciB8fCBbXSkucHVzaChbCiAgICBbODE5XSwgewogICAgICAgIDkyMjA6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgIHZhciBpID0gbig3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBzID0gaShuKDgxMzUpKTsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uZSkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKC4uLmUpLCB0aGlzLmRvY3VtZW50cyA9IHt9LCB0aGlzLmluaXREb2N1bWVudENsYXNzZXMoKSwgdGhpcy5hdHRhY2hEb2N1bWVudHNDbGFzc2VzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50OiAiLmVsZW1lbnRvciIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRvY3VtZW50czogalF1ZXJ5KGUuZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5pdERvY3VtZW50Q2xhc3NlcygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xhc3NlcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTogcy5kZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgfSwgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuZG9BY3Rpb24oImVsZW1lbnRvci9mcm9udGVuZC9kb2N1bWVudHMtbWFuYWdlci9pbml0LWNsYXNzZXMiLCB0aGlzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRkRG9jdW1lbnRDbGFzcyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsYXNzZXNbZV0gPSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhdHRhY2hEb2N1bWVudHNDbGFzc2VzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGRvY3VtZW50cy5lYWNoKCgoZSwgdCkgPT4gdGhpcy5hdHRhY2hEb2N1bWVudENsYXNzKGpRdWVyeSh0KSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXR0YWNoRG9jdW1lbnRDbGFzcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5lbGVtZW50b3JJZCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuZWxlbWVudG9yVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZG9jdW1lbnRDbGFzc2VzW2ldIHx8IHRoaXMuZG9jdW1lbnRDbGFzc2VzLmJhc2U7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudHNbbl0gPSBuZXcgcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBpZDogbgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDk4MDQ6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgIHZhciBpID0gbig3OTE0KSwKICAgICAgICAgICAgICAgIHMgPSBpKG4oNjM5NykpLAogICAgICAgICAgICAgICAgbyA9IGkobig4NzA0KSksCiAgICAgICAgICAgICAgICByID0gaShuKDQ5ODUpKSwKICAgICAgICAgICAgICAgIGEgPSBpKG4oNzUzNykpLAogICAgICAgICAgICAgICAgbCA9IGkobigzNTUpKSwKICAgICAgICAgICAgICAgIGQgPSBpKG4oMjgwNCkpLAogICAgICAgICAgICAgICAgYyA9IGkobigzMzg0KSk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB7fTsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHNIYW5kbGVycyA9IHsKICAgICAgICAgICAgICAgICAgICAiYWNjb3JkaW9uLmRlZmF1bHQiOiAoKSA9PiBuLmUoMjA5KS50aGVuKG4uYmluZChuLCA4NDcwKSksCiAgICAgICAgICAgICAgICAgICAgImFsZXJ0LmRlZmF1bHQiOiAoKSA9PiBuLmUoNzQ1KS50aGVuKG4uYmluZChuLCA5MjY5KSksCiAgICAgICAgICAgICAgICAgICAgImNvdW50ZXIuZGVmYXVsdCI6ICgpID0+IG4uZSgxMjApLnRoZW4obi5iaW5kKG4sIDc4ODQpKSwKICAgICAgICAgICAgICAgICAgICAicHJvZ3Jlc3MuZGVmYXVsdCI6ICgpID0+IG4uZSgxOTIpLnRoZW4obi5iaW5kKG4sIDEzNTEpKSwKICAgICAgICAgICAgICAgICAgICAidGFicy5kZWZhdWx0IjogKCkgPT4gbi5lKDUyMCkudGhlbihuLmJpbmQobiwgOTQ1OSkpLAogICAgICAgICAgICAgICAgICAgICJ0b2dnbGUuZGVmYXVsdCI6ICgpID0+IG4uZSgxODEpLnRoZW4obi5iaW5kKG4sIDIpKSwKICAgICAgICAgICAgICAgICAgICAidmlkZW8uZGVmYXVsdCI6ICgpID0+IG4uZSg3OTEpLnRoZW4obi5iaW5kKG4sIDUzNjMpKSwKICAgICAgICAgICAgICAgICAgICAiaW1hZ2UtY2Fyb3VzZWwuZGVmYXVsdCI6ICgpID0+IG4uZSgyNjgpLnRoZW4obi5iaW5kKG4sIDU5MTQpKSwKICAgICAgICAgICAgICAgICAgICAidGV4dC1lZGl0b3IuZGVmYXVsdCI6ICgpID0+IG4uZSgzNTcpLnRoZW4obi5iaW5kKG4sIDEzMjcpKSwKICAgICAgICAgICAgICAgICAgICAid3Atd2lkZ2V0LW1lZGlhX2F1ZGlvLmRlZmF1bHQiOiAoKSA9PiBuLmUoNTIpLnRoZW4obi5iaW5kKG4sIDc2MDIpKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGNvbnN0IGFkZEVsZW1lbnRzSGFuZGxlcnMgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHNIYW5kbGVycy5zZWN0aW9uID0gW2QuZGVmYXVsdCwgLi4uby5kZWZhdWx0LCBsLmRlZmF1bHQsIGMuZGVmYXVsdF0sIHRoaXMuZWxlbWVudHNIYW5kbGVycy5jb250YWluZXIgPSBbLi4uby5kZWZhdWx0XSwgZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpICYmIHRoaXMuZWxlbWVudHNIYW5kbGVycy5jb250YWluZXIucHVzaCguLi5yLmRlZmF1bHQpLCB0aGlzLmVsZW1lbnRzSGFuZGxlcnMuY29sdW1uID0gYS5kZWZhdWx0LCBlLmVhY2godGhpcy5lbGVtZW50c0hhbmRsZXJzLCAoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlLnNwbGl0KCIuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gblswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBuWzFdIHx8IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaEhhbmRsZXIoZSwgdCwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpc0NsYXNzSGFuZGxlciA9IGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09ICh0ID0gZS5wcm90b3R5cGUpIHx8IHZvaWQgMCA9PT0gdCA/IHZvaWQgMCA6IHQuZ2V0VW5pcXVlSGFuZGxlcklECiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGRIYW5kbGVyV2l0aEhvb2sgPSAoZSwgdCwgbiA9ICJkZWZhdWx0IikgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBuID0gbiA/ICIuIiArIG4gOiAiIiwgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYWRkQWN0aW9uKGBmcm9udGVuZC9lbGVtZW50X3JlYWR5LyR7ZX0ke259YCwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2xhc3NIYW5kbGVyKHQpKSB0aGlzLmFkZEhhbmRsZXIodCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50OiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gaW5zdGFuY2VvZiBQcm9taXNlID8gbi50aGVuKCgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEhhbmRsZXIodCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogdGhpcy5hZGRIYW5kbGVyKG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuYWRkSGFuZGxlciA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gbi4kZWxlbWVudC5kYXRhKCJtb2RlbC1jaWQiKTsKICAgICAgICAgICAgICAgICAgICBsZXQgczsKICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5wcm90b3R5cGUuZ2V0Q29uc3RydWN0b3JJRCgpLCB0W2ldIHx8ICh0W2ldID0ge30pOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdFtpXVtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiBuLm9uRGVzdHJveSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBuZXcgZShuKTsKICAgICAgICAgICAgICAgICAgICBpICYmICh0W2ldW3NdID0gbykKICAgICAgICAgICAgICAgIH0sIHRoaXMuYXR0YWNoSGFuZGxlciA9IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh0KSB8fCAodCA9IFt0XSksIHQuZm9yRWFjaCgodCA9PiBhZGRIYW5kbGVyV2l0aEhvb2soZSwgdCwgbikpKQogICAgICAgICAgICAgICAgfSwgdGhpcy5nZXRIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmVsZW1lbnRzSGFuZGxlcnNbZV07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzQ2xhc3NIYW5kbGVyKHQpID8gdCA6IG5ldyBQcm9taXNlKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdCgpLnRoZW4oKCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCB0aGlzLmdldEhhbmRsZXJzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JDb21tb24uaGVscGVycy5zb2Z0RGVwcmVjYXRlZCgiZ2V0SGFuZGxlcnMiLCAiMy4xLjAiLCAiZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmdldEhhbmRsZXIiKSwgZSA/IHRoaXMuZ2V0SGFuZGxlcihlKSA6IHRoaXMuZWxlbWVudHNIYW5kbGVycwogICAgICAgICAgICAgICAgfSwgdGhpcy5ydW5SZWFkeVRyaWdnZXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19zdGF0aWMpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0galF1ZXJ5KHQpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5hdHRyKCJkYXRhLWVsZW1lbnRfdHlwZSIpOwogICAgICAgICAgICAgICAgICAgIGlmIChpICYmIChlbGVtZW50b3JGcm9udGVuZC5ob29rcy5kb0FjdGlvbigiZnJvbnRlbmQvZWxlbWVudF9yZWFkeS9nbG9iYWwiLCBuLCBlKSwgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuZG9BY3Rpb24oYGZyb250ZW5kL2VsZW1lbnRfcmVhZHkvJHtpfWAsIG4sIGUpLCAid2lkZ2V0IiA9PT0gaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IG4uYXR0cigiZGF0YS13aWRnZXRfdHlwZSIpOwogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5kb0FjdGlvbihgZnJvbnRlbmQvZWxlbWVudF9yZWFkeS8ke3R9YCwgbiwgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0aGlzLmluaXQgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYWRkQWN0aW9uKCJmcm9udGVuZC9lbGVtZW50X3JlYWR5L2dsb2JhbCIsIHMuZGVmYXVsdCksIGFkZEVsZW1lbnRzSGFuZGxlcnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA1NjU0OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICB2YXIgaSA9IG4oNzkxNCk7CiAgICAgICAgICAgIG4oNTkpOwogICAgICAgICAgICB2YXIgcyA9IGkobig5MjIwKSksCiAgICAgICAgICAgICAgICBvID0gaShuKDUxMDcpKSwKICAgICAgICAgICAgICAgIHIgPSBpKG4oMzMwOCkpLAogICAgICAgICAgICAgICAgYSA9IGkobigxNjA0KSksCiAgICAgICAgICAgICAgICBsID0gaShuKDE5MTEpKSwKICAgICAgICAgICAgICAgIGQgPSBpKG4oNDc3MykpLAogICAgICAgICAgICAgICAgYyA9IGkobigyMDY0KSksCiAgICAgICAgICAgICAgICB1ID0gaShuKDg2MjgpKSwKICAgICAgICAgICAgICAgIGggPSBpKG4oODY0NikpLAogICAgICAgICAgICAgICAgbSA9IGkobig2ODY2KSksCiAgICAgICAgICAgICAgICBnID0gaShuKDQzNzUpKSwKICAgICAgICAgICAgICAgIHAgPSBpKG4oNjQwNCkpLAogICAgICAgICAgICAgICAgZiA9IGkobig2MDQ2KSksCiAgICAgICAgICAgICAgICB2ID0gbig2MDI4KTsKICAgICAgICAgICAgY29uc3QgYiA9IG4oOTQ2OSksCiAgICAgICAgICAgICAgICB5ID0gbig5ODA0KSwKICAgICAgICAgICAgICAgIF8gPSBuKDMzNDYpOwogICAgICAgICAgICBjbGFzcyBGcm9udGVuZCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvciguLi5lKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoLi4uZSksIHRoaXMuY29uZmlnID0gZWxlbWVudG9yRnJvbnRlbmRDb25maWcsIHRoaXMuY29uZmlnLmxlZ2FjeU1vZGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBlbGVtZW50V3JhcHBlcnMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpICYmIGVsZW1lbnRvckNvbW1vbi5oZWxwZXJzLmhhcmREZXByZWNhdGVkKCJlbGVtZW50b3JGcm9udGVuZC5jb25maWcubGVnYWN5TW9kZS5lbGVtZW50V3JhcHBlcnMiLCAiMy4xLjAiLCAiZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmV4cGVyaW1lbnRhbEZlYXR1cmVzLmVfZG9tX29wdGltaXphdGlvbiIpLCAhZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmV4cGVyaW1lbnRhbEZlYXR1cmVzLmVfZG9tX29wdGltaXphdGlvbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5wb3B1bGF0ZUFjdGl2ZUJyZWFrcG9pbnRzQ29uZmlnKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldCBNb2R1bGUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNFZGl0TW9kZSgpICYmIHBhcmVudC5lbGVtZW50b3JDb21tb24uaGVscGVycy5oYXJkRGVwcmVjYXRlZCgiZWxlbWVudG9yRnJvbnRlbmQuTW9kdWxlIiwgIjIuNS4wIiwgImVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSIpLCBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvcjogIi5lbGVtZW50b3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5CYXI6ICIjd3BhZG1pbmJhciIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gewogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICR3aW5kb3c6IGpRdWVyeSh3aW5kb3cpLAogICAgICAgICAgICAgICAgICAgICAgICAkZG9jdW1lbnQ6IGpRdWVyeShkb2N1bWVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkOiBqUXVlcnkoZG9jdW1lbnQuaGVhZCksCiAgICAgICAgICAgICAgICAgICAgICAgICRib2R5OiBqUXVlcnkoZG9jdW1lbnQuYm9keSksCiAgICAgICAgICAgICAgICAgICAgICAgICRkZXZpY2VNb2RlOiBqUXVlcnkoIjxzcGFuPiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAiZWxlbWVudG9yLWRldmljZS1tb2RlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiZWxlbWVudG9yLXNjcmVlbi1vbmx5IgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuJGJvZHkuYXBwZW5kKGUuJGRldmljZU1vZGUpLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHdpbmRvdy5vbigicmVzaXplIiwgKCgpID0+IHRoaXMuc2V0RGV2aWNlTW9kZURhdGEoKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRFbGVtZW50cyhlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbXModGhpcy5lbGVtZW50cywgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFBhZ2VTZXR0aW5ncyhlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuaXNFZGl0TW9kZSgpID8gZWxlbWVudG9yLnNldHRpbmdzLnBhZ2UubW9kZWwuYXR0cmlidXRlcyA6IHRoaXMuY29uZmlnLnNldHRpbmdzLnBhZ2U7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbXModCwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEdlbmVyYWxTZXR0aW5ncyhlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNFZGl0TW9kZSgpICYmIHBhcmVudC5lbGVtZW50b3JDb21tb24uaGVscGVycy5zb2Z0RGVwcmVjYXRlZCgiZ2V0R2VuZXJhbFNldHRpbmdzIiwgIjMuMC4wIiwgImdldEtpdFNldHRpbmdzIGFuZCByZW1vdmUgdGhlIGBlbGVtZW50b3JfYCBwcmVmaXgiKSwgdGhpcy5nZXRLaXRTZXR0aW5ncyhgZWxlbWVudG9yXyR7ZX1gKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0S2l0U2V0dGluZ3MoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKHRoaXMuY29uZmlnLmtpdCwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEN1cnJlbnREZXZpY2VNb2RlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudHMuJGRldmljZU1vZGVbMF0sICI6YWZ0ZXIiKS5jb250ZW50LnJlcGxhY2UoLyIvZywgIiIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZXZpY2VTZXR0aW5nKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIndpZGVzY3JlZW4iID09PSBlKSByZXR1cm4gdGhpcy5nZXRXaWRlc2NyZWVuU2V0dGluZyh0LCBuKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gZWxlbWVudG9yRnJvbnRlbmQuYnJlYWtwb2ludHMuZ2V0QWN0aXZlQnJlYWtwb2ludHNMaXN0KHsKICAgICAgICAgICAgICAgICAgICAgICAgbGFyZ2VUb1NtYWxsOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERlc2t0b3A6ICEwCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBpLmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IHMgPiAwOykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdFtuICsgIl8iICsgaVtzXV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlIHx8IDAgPT09IGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICBzLS0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbbl0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFdpZGVzY3JlZW5TZXR0aW5nKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdCArICJfd2lkZXNjcmVlbiI7CiAgICAgICAgICAgICAgICAgICAgbGV0IGk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPSBlW25dID8gZVtuXSA6IGVbdF0sIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEN1cnJlbnREZXZpY2VTZXR0aW5nKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREZXZpY2VTZXR0aW5nKGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VNb2RlKCksIGUsIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0VkaXRNb2RlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5lbnZpcm9ubWVudE1vZGUuZWRpdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNXUFByZXZpZXdNb2RlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5lbnZpcm9ubWVudE1vZGUud3BQcmV2aWV3CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbml0RGlhbG9nc01hbmFnZXIoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGU7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREaWFsb2dzTWFuYWdlciA9ICgpID0+IChlIHx8IChlID0gbmV3IERpYWxvZ3NNYW5hZ2VyLkluc3RhbmNlKSwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRPblJlYWR5Q29tcG9uZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWxzID0gewogICAgICAgICAgICAgICAgICAgICAgICB5b3V0dWJlOiBuZXcgYS5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICB2aW1lbzogbmV3IGwuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVZpZGVvTG9hZGVyOiBuZXcgZC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzOiBuZXcgXywKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGxpZ2h0Ym94KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGguZGVmYXVsdC5nZXRMaWdodGJveCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVybEFjdGlvbnM6IG5ldyBjLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlcjogdS5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogci5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBhc3NldHNMb2FkZXI6IG5ldyBtLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZUhUTUw6IHYuZXNjYXBlSFRNTAogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMubW9kdWxlcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgU3RyZXRjaEVsZW1lbnQ6IGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQudG9vbHMuU3RyZXRjaEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIE1hc29ucnk6IGVsZW1lbnRvck1vZHVsZXMudXRpbHMuTWFzb25yeQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZWxlbWVudHNIYW5kbGVyLmluaXQoKSwgdGhpcy5pc0VkaXRNb2RlKCkgPyBlbGVtZW50b3Iub25jZSgiZG9jdW1lbnQ6bG9hZGVkIiwgKCgpID0+IHRoaXMub25Eb2N1bWVudExvYWRlZCgpKSkgOiB0aGlzLm9uRG9jdW1lbnRMb2FkZWQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5pdE9uUmVhZHlFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiR3cEFkbWluQmFyID0gdGhpcy5lbGVtZW50cy4kZG9jdW1lbnQuZmluZCh0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMuYWRtaW5CYXIiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFkZFVzZXJBZ2VudENsYXNzZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBbZSwgdF0gb2YgT2JqZWN0LmVudHJpZXMoci5kZWZhdWx0KSkgdCAmJiB0aGlzLmVsZW1lbnRzLiRib2R5LmFkZENsYXNzKCJlLS11YS0iICsgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldERldmljZU1vZGVEYXRhKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGJvZHkuYXR0cigiZGF0YS1lbGVtZW50b3ItZGV2aWNlLW1vZGUiLCB0aGlzLmdldEN1cnJlbnREZXZpY2VNb2RlKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGRMaXN0ZW5lck9uY2UoZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpIHx8IChpID0gdGhpcy5lbGVtZW50cy4kd2luZG93KSwgdGhpcy5pc0VkaXRNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbW92ZUxpc3RlbmVycyhlLCB0LCBpKSwgaSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHQgKyAiLiIgKyBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5vbihzLCBuKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaS5vbih0LCBuLCBlKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGkub24odCwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVycyhlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgfHwgKGkgPSB0aGlzLmVsZW1lbnRzLiR3aW5kb3cpLCBpIGluc3RhbmNlb2YgalF1ZXJ5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0ICsgIi4iICsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5vZmYocywgbikKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaS5vZmYodCwgbiwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlYm91bmNlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVyID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBudWxsLCBlLmFwcGx5KGksIHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICFuOwogICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobiksIG4gPSBzZXRUaW1lb3V0KGxhdGVyLCB0KSwgbyAmJiBlLmFwcGx5KGksIHMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2F5cG9pbnQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIG4gPSBqUXVlcnkuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPbmNlOiAhMAogICAgICAgICAgICAgICAgICAgIH0sIG4pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmVsZW1lbnRvcldheXBvaW50KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuYXBwbHkoZSwgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHJpZ2dlck9uY2UgJiYgdGhpcy5kZXN0cm95ICYmIHRoaXMuZGVzdHJveSgpLCBpCiAgICAgICAgICAgICAgICAgICAgfSksIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtdXRlTWlncmF0aW9uVHJhY2VzKCkgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5taWdyYXRlTXV0ZSA9ICEwLCBqUXVlcnkubWlncmF0ZVRyYWNlID0gITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRNb2R1bGVzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlczogZi5kZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC50cmlnZ2VyKCJlbGVtZW50b3IvbW9kdWxlcy9pbml0OmJlZm9yZSIpLCBlbGVtZW50b3JGcm9udGVuZC50cmlnZ2VyKCJlbGVtZW50b3IvbW9kdWxlcy9pbml0L2JlZm9yZSIpLCBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKCgoW2UsIHRdKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kdWxlc0hhbmRsZXJzW2VdID0gbmV3IHQKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBvcHVsYXRlQWN0aXZlQnJlYWtwb2ludHNDb25maWcoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50cyA9IHt9LCBPYmplY3QuZW50cmllcyh0aGlzLmNvbmZpZy5yZXNwb25zaXZlLmJyZWFrcG9pbnRzKS5mb3JFYWNoKCgoW2UsIHRdKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuaXNfZW5hYmxlZCAmJiAodGhpcy5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50c1tlXSA9IHQpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbml0KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaG9va3MgPSBuZXcgYiwgdGhpcy5icmVha3BvaW50cyA9IG5ldyBnLmRlZmF1bHQodGhpcy5jb25maWcucmVzcG9uc2l2ZSksIHRoaXMuc3RvcmFnZSA9IG5ldyBvLmRlZmF1bHQsIHRoaXMuZWxlbWVudHNIYW5kbGVyID0gbmV3IHkoalF1ZXJ5KSwgdGhpcy5tb2R1bGVzSGFuZGxlcnMgPSB7fSwgdGhpcy5hZGRVc2VyQWdlbnRDbGFzc2VzKCksIHRoaXMuc2V0RGV2aWNlTW9kZURhdGEoKSwgdGhpcy5pbml0RGlhbG9nc01hbmFnZXIoKSwgdGhpcy5pc0VkaXRNb2RlKCkgJiYgdGhpcy5tdXRlTWlncmF0aW9uVHJhY2VzKCksIHAuZGVmYXVsdC5kaXNwYXRjaCh0aGlzLmVsZW1lbnRzLiR3aW5kb3csICJlbGVtZW50b3IvZnJvbnRlbmQvaW5pdCIpLCB0aGlzLmluaXRNb2R1bGVzKCksIHRoaXMuaW5pdE9uUmVhZHlFbGVtZW50cygpLCB0aGlzLmluaXRPblJlYWR5Q29tcG9uZW50cygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkRvY3VtZW50TG9hZGVkKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzTWFuYWdlciA9IG5ldyBzLmRlZmF1bHQsIHRoaXMudHJpZ2dlcigiY29tcG9uZW50czppbml0IiksIG5ldyBoLmRlZmF1bHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB3aW5kb3cuZWxlbWVudG9yRnJvbnRlbmQgPSBuZXcgRnJvbnRlbmQsIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSB8fCBqUXVlcnkoKCgpID0+IGVsZW1lbnRvckZyb250ZW5kLmluaXQoKSkpCiAgICAgICAgfSwKICAgICAgICA0MDU4OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgQmFja2dyb3VuZFNsaWRlc2hvdyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuU3dpcGVyQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyQ29udGFpbmVyOiAiZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93IHN3aXBlci1jb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyV3JhcHBlcjogInN3aXBlci13cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlclNsaWRlOiAiZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93X19zbGlkZSBzd2lwZXItc2xpZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyUHJlbG9hZGVyOiAic3dpcGVyLWxhenktcHJlbG9hZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlQmFja2dyb3VuZDogImVsZW1lbnRvci1iYWNrZ3JvdW5kLXNsaWRlc2hvd19fc2xpZGVfX2ltYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlbkJ1cm5zOiAiZWxlbWVudG9yLWtlbi1idXJucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZW5CdXJuc0FjdGl2ZTogImVsZW1lbnRvci1rZW4tYnVybnMtLWFjdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZW5CdXJuc0luOiAiZWxlbWVudG9yLWtlbi1idXJucy0taW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAga2VuQnVybnNPdXQ6ICJlbGVtZW50b3Ita2VuLWJ1cm5zLS1vdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTd2lwZXJPcHRpb25zKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhYkN1cnNvcjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wOiAieWVzIiA9PT0gZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19sb29wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IGUuYmFja2dyb3VuZF9zbGlkZXNob3dfdHJhbnNpdGlvbl9kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IGUuYmFja2dyb3VuZF9zbGlkZXNob3dfc2xpZGVfZHVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcE9uTGFzdFNsaWRlOiAhZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19sb29wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRWxlbWVudG9yQnJlYWtwb2ludHM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUNoYW5nZTogKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmJhY2tncm91bmRfc2xpZGVzaG93X2tlbl9idXJucyAmJiB0aGlzLmhhbmRsZUtlbkJ1cm5zKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgieWVzIiA9PT0gZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19sb29wICYmICh0Lmxvb3BlZFNsaWRlcyA9IHRoaXMuZ2V0U2xpZGVzQ291bnQoKSksIGUuYmFja2dyb3VuZF9zbGlkZXNob3dfc2xpZGVfdHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmYWRlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZWZmZWN0ID0gImZhZGUiLCB0LmZhZGVFZmZlY3QgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NGYWRlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzbGlkZV9kb3duIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuYXV0b3BsYXkucmV2ZXJzZURpcmVjdGlvbiA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzbGlkZV91cCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmRpcmVjdGlvbiA9ICJ2ZXJ0aWNhbCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ5ZXMiID09PSBlLmJhY2tncm91bmRfc2xpZGVzaG93X2xhenlsb2FkICYmICh0LmxhenkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dEFtb3VudDogMQogICAgICAgICAgICAgICAgICAgIH0pLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBidWlsZFN3aXBlckVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gInNsaWRlX2xlZnQiID09PSB0LmJhY2tncm91bmRfc2xpZGVzaG93X3NsaWRlX3RyYW5zaXRpb24gPyAibHRyIiA6ICJydGwiLAogICAgICAgICAgICAgICAgICAgICAgICBpID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLnN3aXBlckNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcjogbgogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZS5zd2lwZXJXcmFwcGVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5iYWNrZ3JvdW5kX3NsaWRlc2hvd19rZW5fYnVybnMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAieWVzIiA9PT0gdC5iYWNrZ3JvdW5kX3NsaWRlc2hvd19sYXp5bG9hZDsKICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGUuc2xpZGVCYWNrZ3JvdW5kOwogICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgKz0gIiAiICsgZS5rZW5CdXJuczsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9ICJpbiIgPT09IHQuYmFja2dyb3VuZF9zbGlkZXNob3dfa2VuX2J1cm5zX3pvb21fZGlyZWN0aW9uID8gImtlbkJ1cm5zSW4iIDogImtlbkJ1cm5zT3V0IjsKICAgICAgICAgICAgICAgICAgICAgICAgYSArPSAiICIgKyBlW25dCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHIgJiYgKGEgKz0gIiBzd2lwZXItbGF6eSIpLCB0aGlzLmVsZW1lbnRzLiRzbGlkZXMgPSBqUXVlcnkoKSwgdC5iYWNrZ3JvdW5kX3NsaWRlc2hvd19nYWxsZXJ5LmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLnN3aXBlclNsaWRlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgaTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLnN3aXBlclByZWxvYWRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1iYWNrZ3JvdW5kIjogdC51cmwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmFwcGVuZChuKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaSA9IGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFja2dyb3VuZC1pbWFnZTogdXJsKCInICsgdC51cmwgKyAnIik7JwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5hcHBlbmQoaSksIHMuYXBwZW5kKG4pLCB0aGlzLmVsZW1lbnRzLiRzbGlkZXMgPSB0aGlzLmVsZW1lbnRzLiRzbGlkZXMuYWRkKG4pCiAgICAgICAgICAgICAgICAgICAgfSkpLCBpLmFwcGVuZChzKSwgdGhpcy4kZWxlbWVudC5wcmVwZW5kKGkpLCB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kU2xpZGVTaG93Q29udGFpbmVyID0gaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXN5bmMgaW5pdFNsaWRlcigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA+PSB0aGlzLmdldFNsaWRlc0NvdW50KCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLnN3aXBlcjsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN3aXBlciA9IGF3YWl0IG5ldyB0KHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRTbGlkZVNob3dDb250YWluZXIsIHRoaXMuZ2V0U3dpcGVyT3B0aW9ucygpKSwgdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFNsaWRlU2hvd0NvbnRhaW5lci5kYXRhKCJzd2lwZXIiLCB0aGlzLnN3aXBlciksIGUuYmFja2dyb3VuZF9zbGlkZXNob3dfa2VuX2J1cm5zICYmIHRoaXMuaGFuZGxlS2VuQnVybnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWN0aXZhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZFN3aXBlckVsZW1lbnRzKCksIHRoaXMuaW5pdFNsaWRlcigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZWFjdGl2YXRlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyICYmICh0aGlzLnN3aXBlci5kZXN0cm95KCksIHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRTbGlkZVNob3dDb250YWluZXIucmVtb3ZlKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW4oKSB7CiAgICAgICAgICAgICAgICAgICAgInNsaWRlc2hvdyIgPT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJiYWNrZ3JvdW5kX2JhY2tncm91bmQiKSA/IHRoaXMuYWN0aXZhdGUoKSA6IHRoaXMuZGVhY3RpdmF0ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCksIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJiYWNrZ3JvdW5kX3NsaWRlc2hvd19nYWxsZXJ5IikgJiYgdGhpcy5ydW4oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25EZXN0cm95KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uRGVzdHJveSgpLCB0aGlzLmRlYWN0aXZhdGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICAiYmFja2dyb3VuZF9iYWNrZ3JvdW5kIiA9PT0gZSAmJiB0aGlzLnJ1bigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gQmFja2dyb3VuZFNsaWRlc2hvdwogICAgICAgIH0sCiAgICAgICAgOTUwMTogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIEJhY2tncm91bmRWaWRlbyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kVmlkZW9Db250YWluZXI6ICIuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRWaWRlb0VtYmVkOiAiLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWVtYmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRWaWRlb0hvc3RlZDogIi5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlby1ob3N0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lcjogdGhpcy4kZWxlbWVudC5maW5kKGUuYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LiRiYWNrZ3JvdW5kVmlkZW9FbWJlZCA9IHQuJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lci5jaGlsZHJlbihlLmJhY2tncm91bmRWaWRlb0VtYmVkKSwgdC4kYmFja2dyb3VuZFZpZGVvSG9zdGVkID0gdC4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLmNoaWxkcmVuKGUuYmFja2dyb3VuZFZpZGVvSG9zdGVkKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FsY1ZpZGVvc1NpemUoZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB0ID0gIjE2OjkiOwogICAgICAgICAgICAgICAgICAgICJ2aW1lbyIgPT09IHRoaXMudmlkZW9UeXBlICYmICh0ID0gZVswXS53aWR0aCArICI6IiArIGVbMF0uaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLm91dGVyV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lci5vdXRlckhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5zcGxpdCgiOiIpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gc1swXSAvIHNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuIC8gaSA+IG87CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIgPyBuIDogaSAqIG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciA/IG4gLyBvIDogaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNoYW5nZVZpZGVvU2l6ZSgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoImhvc3RlZCIgIT09IHRoaXMudmlkZW9UeXBlICYmICF0aGlzLnBsYXllcikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGxldCBlOwogICAgICAgICAgICAgICAgICAgIGlmICgieW91dHViZSIgPT09IHRoaXMudmlkZW9UeXBlID8gZSA9IGpRdWVyeSh0aGlzLnBsYXllci5nZXRJZnJhbWUoKSkgOiAidmltZW8iID09PSB0aGlzLnZpZGVvVHlwZSA/IGUgPSBqUXVlcnkodGhpcy5wbGF5ZXIuZWxlbWVudCkgOiAiaG9zdGVkIiA9PT0gdGhpcy52aWRlb1R5cGUgJiYgKGUgPSB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQpLCAhZSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmNhbGNWaWRlb3NTaXplKGUpOwogICAgICAgICAgICAgICAgICAgIGUud2lkdGgodC53aWR0aCkuaGVpZ2h0KHQuaGVpZ2h0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhcnRWaWRlb0xvb3AoZSkgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wbGF5ZXIuZ2V0SWZyYW1lKCkuY29udGVudFdpbmRvdykgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmJhY2tncm91bmRfdmlkZW9fZW5kOwogICAgICAgICAgICAgICAgICAgIGlmICghdC5iYWNrZ3JvdW5kX3BsYXlfb25jZSB8fCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBsYXllci5zZWVrVG8obiksIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VmlkZW9Mb29wKCExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDFlMyAqIChpIC0gbiArIDEpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMucGxheWVyLnN0b3BWaWRlbygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwcmVwYXJlVmltZW9WaWRlbyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLm91dGVyV2lkdGgoKS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A6ICFuLmJhY2tncm91bmRfcGxheV9vbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRlZDogITAKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllciA9IG5ldyBlLlBsYXllcih0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Db250YWluZXIsIGkpLCB0aGlzLmhhbmRsZVZpbWVvU3RhcnRFbmRUaW1lcyhuKSwgdGhpcy5wbGF5ZXIucmVhZHkoKS50aGVuKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzLnBsYXllci5lbGVtZW50KS5hZGRDbGFzcygiZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tZW1iZWQiKSwgdGhpcy5jaGFuZ2VWaWRlb1NpemUoKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGFuZGxlVmltZW9TdGFydEVuZFRpbWVzKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLmJhY2tncm91bmRfdmlkZW9fc3RhcnQgJiYgdGhpcy5wbGF5ZXIub24oInBsYXkiLCAodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHQuc2Vjb25kcyAmJiB0aGlzLnBsYXllci5zZXRDdXJyZW50VGltZShlLmJhY2tncm91bmRfdmlkZW9fc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnBsYXllci5vbigidGltZXVwZGF0ZSIsICh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5iYWNrZ3JvdW5kX3ZpZGVvX2VuZCAmJiBlLmJhY2tncm91bmRfdmlkZW9fZW5kIDwgdC5zZWNvbmRzICYmIChlLmJhY2tncm91bmRfcGxheV9vbmNlID8gdGhpcy5wbGF5ZXIucGF1c2UoKSA6IHRoaXMucGxheWVyLnNldEN1cnJlbnRUaW1lKGUuYmFja2dyb3VuZF92aWRlb19zdGFydCkpLCB0aGlzLnBsYXllci5nZXREdXJhdGlvbigpLnRoZW4oKG4gPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0ICYmICFlLmJhY2tncm91bmRfdmlkZW9fZW5kICYmIHQuc2Vjb25kcyA+IG4gLSAuNSAmJiB0aGlzLnBsYXllci5zZXRDdXJyZW50VGltZShlLmJhY2tncm91bmRfdmlkZW9fc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHJlcGFyZVlUVmlkZW8oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Db250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgIGxldCBzID0gZS5QbGF5ZXJTdGF0ZS5QTEFZSU5HOwogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jaHJvbWUgJiYgKHMgPSBlLlBsYXllclN0YXRlLlVOU1RBUlRFRCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9JZDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlYWR5OiAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIubXV0ZSgpLCB0aGlzLmNoYW5nZVZpZGVvU2l6ZSgpLCB0aGlzLnN0YXJ0VmlkZW9Mb29wKCEwKSwgdGhpcy5wbGF5ZXIucGxheVZpZGVvKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0YXRlQ2hhbmdlOiB0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQuZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItaW52aXNpYmxlIGVsZW1lbnRvci1sb2FkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBlLlBsYXllclN0YXRlLkVOREVEOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIuc2Vla1RvKGkuYmFja2dyb3VuZF92aWRlb19zdGFydCB8fCAwKSwgaS5iYWNrZ3JvdW5kX3BsYXlfb25jZSAmJiB0aGlzLnBsYXllci5kZXN0cm95KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheXNpbmxpbmU6IDEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaS5iYWNrZ3JvdW5kX3ByaXZhY3lfbW9kZSAmJiAoby5ob3N0ID0gImh0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tIiwgby5vcmlnaW4gPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpLCBuLmFkZENsYXNzKCJlbGVtZW50b3ItbG9hZGluZyBlbGVtZW50b3ItaW52aXNpYmxlIiksIHRoaXMucGxheWVyID0gbmV3IGUuUGxheWVyKHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0VtYmVkWzBdLCBvKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWN0aXZhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGUsIHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiYmFja2dyb3VuZF92aWRlb19saW5rIik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJiYWNrZ3JvdW5kX3BsYXlfb25jZSIpOwogICAgICAgICAgICAgICAgICAgIGlmICgtMSAhPT0gdC5pbmRleE9mKCJ2aW1lby5jb20iKSA/ICh0aGlzLnZpZGVvVHlwZSA9ICJ2aW1lbyIsIHRoaXMuYXBpUHJvdmlkZXIgPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy52aW1lbykgOiB0Lm1hdGNoKC9eKD86aHR0cHM/OlwvXC8pPyg/Ond3d1wuKT8oPzptXC4pPyg/OnlvdXR1XC5iZVwvfHlvdXR1YmVcLmNvbSkvKSAmJiAodGhpcy52aWRlb1R5cGUgPSAieW91dHViZSIsIHRoaXMuYXBpUHJvdmlkZXIgPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy55b3V0dWJlKSwgdGhpcy5hcGlQcm92aWRlcikgZSA9IHRoaXMuYXBpUHJvdmlkZXIuZ2V0VmlkZW9JREZyb21VUkwodCksIHRoaXMuYXBpUHJvdmlkZXIub25BcGlSZWFkeSgobiA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ5b3V0dWJlIiA9PT0gdGhpcy52aWRlb1R5cGUgJiYgdGhpcy5wcmVwYXJlWVRWaWRlbyhuLCBlKSwgInZpbWVvIiA9PT0gdGhpcy52aWRlb1R5cGUgJiYgdGhpcy5wcmVwYXJlVmltZW9WaWRlbyhuLCB0KQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWRlb1R5cGUgPSAiaG9zdGVkIjsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJiYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImJhY2tncm91bmRfdmlkZW9fZW5kIik7CiAgICAgICAgICAgICAgICAgICAgICAgIChlIHx8IGkpICYmICh0ICs9ICIjdD0iICsgKGUgfHwgMCkgKyAoaSA/ICIsIiArIGkgOiAiIikpLCB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQuYXR0cigic3JjIiwgdCkub25lKCJjYW5wbGF5IiwgdGhpcy5jaGFuZ2VWaWRlb1NpemUuYmluZCh0aGlzKSksIG4gJiYgdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvSG9zdGVkLm9uKCJlbmRlZCIsICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9uKCJyZXNpemUiLCB0aGlzLmNoYW5nZVZpZGVvU2l6ZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlYWN0aXZhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgInlvdXR1YmUiID09PSB0aGlzLnZpZGVvVHlwZSAmJiB0aGlzLnBsYXllci5nZXRJZnJhbWUoKSB8fCAidmltZW8iID09PSB0aGlzLnZpZGVvVHlwZSA/IHRoaXMucGxheWVyLmRlc3Ryb3koKSA6IHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0hvc3RlZC5yZW1vdmVBdHRyKCJzcmMiKS5vZmYoImVuZGVkIiksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub2ZmKCJyZXNpemUiLCB0aGlzLmNoYW5nZVZpZGVvU2l6ZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJ1bigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICAoZS5iYWNrZ3JvdW5kX3BsYXlfb25fbW9iaWxlIHx8ICJtb2JpbGUiICE9PSBlbGVtZW50b3JGcm9udGVuZC5nZXRDdXJyZW50RGV2aWNlTW9kZSgpKSAmJiAoInZpZGVvIiA9PT0gZS5iYWNrZ3JvdW5kX2JhY2tncm91bmQgJiYgZS5iYWNrZ3JvdW5kX3ZpZGVvX2xpbmsgPyB0aGlzLmFjdGl2YXRlKCkgOiB0aGlzLmRlYWN0aXZhdGUoKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCguLi5lKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmUpLCB0aGlzLmNoYW5nZVZpZGVvU2l6ZSA9IHRoaXMuY2hhbmdlVmlkZW9TaXplLmJpbmQodGhpcyksIHRoaXMucnVuKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgImJhY2tncm91bmRfYmFja2dyb3VuZCIgPT09IGUgJiYgdGhpcy5ydW4oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEJhY2tncm91bmRWaWRlbwogICAgICAgIH0sCiAgICAgICAgODcwNDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgdmFyIGkgPSBuKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIHMgPSBpKG4oNDA1OCkpLAogICAgICAgICAgICAgICAgbyA9IGkobig5NTAxKSksCiAgICAgICAgICAgICAgICByID0gW3MuZGVmYXVsdCwgby5kZWZhdWx0XTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gcgogICAgICAgIH0sCiAgICAgICAgNzUzNzogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgdmFyIGkgPSBuKDc5MTQpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIHMgPSBbaShuKDQwNTgpKS5kZWZhdWx0XTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gcwogICAgICAgIH0sCiAgICAgICAgNDk4NTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gWygpID0+IG4uZSg0MTMpLnRoZW4obi5iaW5kKG4sIDI5MjkpKSwgKCkgPT4gbi5lKDQxMykudGhlbihuLmJpbmQobiwgMzQzKSldOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBpCiAgICAgICAgfSwKICAgICAgICA2Mzk3OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgR2xvYmFsSGFuZGxlciBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXRXaWRnZXRUeXBlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZ2xvYmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYW5pbWF0ZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0QW5pbWF0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJub25lIiA9PT0gdCkgcmV0dXJuIHZvaWQgZS5yZW1vdmVDbGFzcygiZWxlbWVudG9yLWludmlzaWJsZSIpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5fYW5pbWF0aW9uX2RlbGF5IHx8IG4uYW5pbWF0aW9uX2RlbGF5IHx8IDA7CiAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVDbGFzcyh0KSwgdGhpcy5jdXJyZW50QW5pbWF0aW9uICYmIGUucmVtb3ZlQ2xhc3ModGhpcy5jdXJyZW50QW5pbWF0aW9uKSwgdGhpcy5jdXJyZW50QW5pbWF0aW9uID0gdCwgc2V0VGltZW91dCgoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItaW52aXNpYmxlIikuYWRkQ2xhc3MoImFuaW1hdGVkICIgKyB0KQogICAgICAgICAgICAgICAgICAgIH0pLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKCJhbmltYXRpb24iKSB8fCB0aGlzLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKCJfYW5pbWF0aW9uIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCguLi5lKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cGVyLm9uSW5pdCguLi5lKSwgdGhpcy5nZXRBbmltYXRpb24oKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yTW9kdWxlcy51dGlscy5TY3JvbGwuc2Nyb2xsT2JzZXJ2ZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaXNJblZpZXdwb3J0ICYmICh0aGlzLmFuaW1hdGUoKSwgZS51bm9ic2VydmUodGhpcy4kZWxlbWVudFswXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBlLm9ic2VydmUodGhpcy4kZWxlbWVudFswXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgICAgIC9eXz9hbmltYXRpb24vLnRlc3QoZSkgJiYgdGhpcy5hbmltYXRlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBlID0+IHsKICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5hZGRIYW5kbGVyKEdsb2JhbEhhbmRsZXIsIHsKICAgICAgICAgICAgICAgICAgICAkZWxlbWVudDogZQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMzU1OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgSGFuZGxlc1Bvc2l0aW9uIGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlIHsKICAgICAgICAgICAgICAgIGlzQWN0aXZlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzRmlyc3RTZWN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50WzBdID09PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZWxlbWVudG9yLWVkaXQtbW9kZSAuZWxlbWVudG9yLXRvcC1zZWN0aW9uIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzT3ZlcmZsb3dIaWRkZW4oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJoaWRkZW4iID09PSB0aGlzLiRlbGVtZW50LmNzcygib3ZlcmZsb3ciKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0T2Zmc2V0KCkgewogICAgICAgICAgICAgICAgICAgIGlmICgiYm9keSIgPT09IGVsZW1lbnRvci5jb25maWcuZG9jdW1lbnQuY29udGFpbmVyKSByZXR1cm4gdGhpcy4kZWxlbWVudC5vZmZzZXQoKS50b3A7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGpRdWVyeShlbGVtZW50b3IuY29uZmlnLmRvY3VtZW50LmNvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQub2Zmc2V0KCkudG9wIC0gZS5vZmZzZXQoKS50b3AKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldEhhbmRsZXNQb3NpdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yLmRvY3VtZW50cy5nZXRDdXJyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFlLmNvbnRhaW5lci5pc0VkaXRhYmxlKCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gImVsZW1lbnRvci1zZWN0aW9uLS1oYW5kbGVzLWluc2lkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLiRlbGVtZW50LmZpbmQoIj4gLmVsZW1lbnRvci1lbGVtZW50LW92ZXJsYXkgPiAuZWxlbWVudG9yLWVkaXRvci1zZWN0aW9uLXNldHRpbmdzIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvci5zZXR0aW5ncy5wYWdlLm1vZGVsLmF0dHJpYnV0ZXMuc2Nyb2xsX3NuYXApIHJldHVybiB2b2lkIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuaXNPdmVyZmxvd0hpZGRlbigpOwogICAgICAgICAgICAgICAgICAgIGlmICghaSAmJiAhdGhpcy5pc0ZpcnN0U2VjdGlvbigpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IGkgPyAwIDogdGhpcy5nZXRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICBzIDwgMjUgPyAodGhpcy4kZWxlbWVudC5hZGRDbGFzcyh0KSwgcyA8IC01ID8gbi5jc3MoInRvcCIsIC1zKSA6IG4uY3NzKCJ0b3AiLCAiIikpIDogdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUoKSAmJiAodGhpcy5zZXRIYW5kbGVzUG9zaXRpb24oKSwgdGhpcy4kZWxlbWVudC5vbigibW91c2VlbnRlciIsIHRoaXMuc2V0SGFuZGxlc1Bvc2l0aW9uLmJpbmQodGhpcykpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEhhbmRsZXNQb3NpdGlvbgogICAgICAgIH0sCiAgICAgICAgMzM4NDogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIFNoYXBlcyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICI+IC5lbGVtZW50b3Itc2hhcGUtJXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN2Z1VSTDogZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnVybHMuYXNzZXRzICsgInNoYXBlcy8iCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLiR0b3BDb250YWluZXIgPSB0aGlzLiRlbGVtZW50LmZpbmQodC5jb250YWluZXIucmVwbGFjZSgiJXMiLCAidG9wIikpLCBlLiRib3R0b21Db250YWluZXIgPSB0aGlzLiRlbGVtZW50LmZpbmQodC5jb250YWluZXIucmVwbGFjZSgiJXMiLCAiYm90dG9tIikpLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0FjdGl2ZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdmdVUkwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGxldCBuID0gdGhpcy5nZXRTZXR0aW5ncygic3ZnVVJMIikgKyB0ICsgIi5zdmciOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3IuY29uZmlnLmFkZGl0aW9uYWxfc2hhcGVzICYmIGUgaW4gZWxlbWVudG9yLmNvbmZpZy5hZGRpdGlvbmFsX3NoYXBlcyAmJiAobiA9IGVsZW1lbnRvci5jb25maWcuYWRkaXRpb25hbF9zaGFwZXNbZV0sIC0xIDwgdC5pbmRleE9mKCItbmVnYXRpdmUiKSAmJiAobiA9IG4ucmVwbGFjZSgiLnN2ZyIsICItbmVnYXRpdmUuc3ZnIikpKSwgbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnVpbGRTVkcoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAic2hhcGVfZGl2aWRlcl8iICsgZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5lbGVtZW50c1siJCIgKyBlICsgIkNvbnRhaW5lciJdOwogICAgICAgICAgICAgICAgICAgIGlmIChpLmF0dHIoImRhdGEtc2hhcGUiLCBuKSwgIW4pIHJldHVybiB2b2lkIGkuZW1wdHkoKTsKICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IG47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3ModCArICJfbmVnYXRpdmUiKSAmJiAocyArPSAiLW5lZ2F0aXZlIik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IHRoaXMuZ2V0U3ZnVVJMKG4sIHMpOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5nZXQobywgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBpLmVtcHR5KCkuYXBwZW5kKGUuY2hpbGROb2Rlc1swXSkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuc2V0TmVnYXRpdmUoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldE5lZ2F0aXZlKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzWyIkIiArIGUgKyAiQ29udGFpbmVyIl0uYXR0cigiZGF0YS1uZWdhdGl2ZSIsICEhdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInNoYXBlX2RpdmlkZXJfIiArIGUgKyAiX25lZ2F0aXZlIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoLi4uZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUodGhpcy5nZXRTZXR0aW5ncygpKSAmJiAoc3VwZXIub25Jbml0KC4uLmUpLCBbInRvcCIsICJib3R0b20iXS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInNoYXBlX2RpdmlkZXJfIiArIGUpICYmIHRoaXMuYnVpbGRTVkcoZSkKICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlLm1hdGNoKC9ec2hhcGVfZGl2aWRlcl8odG9wfGJvdHRvbSkkLyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHJldHVybiB2b2lkIHRoaXMuYnVpbGRTVkcodFsxXSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGUubWF0Y2goL15zaGFwZV9kaXZpZGVyXyh0b3B8Ym90dG9tKV9uZWdhdGl2ZSQvKTsKICAgICAgICAgICAgICAgICAgICBuICYmICh0aGlzLmJ1aWxkU1ZHKG5bMV0pLCB0aGlzLnNldE5lZ2F0aXZlKG5bMV0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IFNoYXBlcwogICAgICAgIH0sCiAgICAgICAgMjgwNDogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIFN0cmV0Y2hlZFNlY3Rpb24gZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRVbmlxdWVIYW5kbGVySUQoKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5hZGRMaXN0ZW5lck9uY2UoZSwgInJlc2l6ZSIsIHRoaXMuc3RyZXRjaCksIGVsZW1lbnRvckZyb250ZW5kLmFkZExpc3RlbmVyT25jZShlLCAic3RpY2t5OnN0aWNrIiwgdGhpcy5zdHJldGNoLCB0aGlzLiRlbGVtZW50KSwgZWxlbWVudG9yRnJvbnRlbmQuYWRkTGlzdGVuZXJPbmNlKGUsICJzdGlja3k6dW5zdGljayIsIHRoaXMuc3RyZXRjaCwgdGhpcy4kZWxlbWVudCksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiAodGhpcy5vbktpdENoYW5nZVN0cmV0Y2hDb250YWluZXJDaGFuZ2UgPSB0aGlzLm9uS2l0Q2hhbmdlU3RyZXRjaENvbnRhaW5lckNoYW5nZS5iaW5kKHRoaXMpLCBlbGVtZW50b3IuY2hhbm5lbHMuZWRpdG9yLm9uKCJraXQ6Y2hhbmdlOnN0cmV0Y2hDb250YWluZXIiLCB0aGlzLm9uS2l0Q2hhbmdlU3RyZXRjaENvbnRhaW5lckNoYW5nZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bmJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQucmVtb3ZlTGlzdGVuZXJzKHRoaXMuZ2V0VW5pcXVlSGFuZGxlcklEKCksICJyZXNpemUiLCB0aGlzLnN0cmV0Y2gpLCBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgZWxlbWVudG9yLmNoYW5uZWxzLmVkaXRvci5vZmYoImtpdDpjaGFuZ2U6c3RyZXRjaENvbnRhaW5lciIsIHRoaXMub25LaXRDaGFuZ2VTdHJldGNoQ29udGFpbmVyQ2hhbmdlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNBY3RpdmUoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgfHwgZS4kZWxlbWVudC5oYXNDbGFzcygiZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRTdHJldGNoKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RyZXRjaCA9IHRoaXMuc3RyZXRjaC5iaW5kKHRoaXMpLCB0aGlzLnN0cmV0Y2hFbGVtZW50ID0gbmV3IGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQudG9vbHMuU3RyZXRjaEVsZW1lbnQoewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLiRlbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5nZXRTdHJldGNoQ29udGFpbmVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdHJldGNoQ29udGFpbmVyKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC5nZXRLaXRTZXR0aW5ncygic3RyZXRjaGVkX3NlY3Rpb25fY29udGFpbmVyIikgfHwgd2luZG93CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdHJldGNoKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJzdHJldGNoX3NlY3Rpb24iKSAmJiB0aGlzLnN0cmV0Y2hFbGVtZW50LnN0cmV0Y2goKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KC4uLmUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlKHRoaXMuZ2V0U2V0dGluZ3MoKSkgJiYgKHRoaXMuaW5pdFN0cmV0Y2goKSwgc3VwZXIub25Jbml0KC4uLmUpLCB0aGlzLnN0cmV0Y2goKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgInN0cmV0Y2hfc2VjdGlvbiIgPT09IGUgJiYgKHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJzdHJldGNoX3NlY3Rpb24iKSA/IHRoaXMuc3RyZXRjaCgpIDogdGhpcy5zdHJldGNoRWxlbWVudC5yZXNldCgpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25LaXRDaGFuZ2VTdHJldGNoQ29udGFpbmVyQ2hhbmdlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RyZXRjaEVsZW1lbnQuc2V0U2V0dGluZ3MoInNlbGVjdG9ycy5jb250YWluZXIiLCB0aGlzLmdldFN0cmV0Y2hDb250YWluZXIoKSksIHRoaXMuc3RyZXRjaCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gU3RyZXRjaGVkU2VjdGlvbgogICAgICAgIH0sCiAgICAgICAgMzM0NjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgdmFyIGkgPSBuKDYwMjgpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5nczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRHVyYXRpb246IDUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogJ2FbaHJlZio9IiMiXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiAiLmVsZW1lbnRvci1lbGVtZW50LCAuZWxlbWVudG9yLW1lbnUtYW5jaG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGU6ICgwLCBpLmlzU2Nyb2xsU25hcEFjdGl2ZSkoKSA/ICJib2R5IiA6ICJodG1sLCBib2R5IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNjcm9sbGFibGU6IGpRdWVyeSh0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKS5zY3JvbGxhYmxlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQub24oImNsaWNrIiwgdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmxpbmtzIiksIHRoaXMuaGFuZGxlQW5jaG9yTGlua3MpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGFuZGxlQW5jaG9yTGlua3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGUuY3VycmVudFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGxvY2F0aW9uLnBhdGhuYW1lID09PSBuLnBhdGhuYW1lOwogICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gbi5ob3N0bmFtZSAmJiBzICYmICEobi5oYXNoLmxlbmd0aCA8IDIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0galF1ZXJ5KG4uaGFzaCkuZmlsdGVyKHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycy50YXJnZXRzIikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0Lm9mZnNldCgpLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdwQWRtaW5CYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGpRdWVyeSgiLmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zdGlja3ktLWFjdGl2ZTp2aXNpYmxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmxlbmd0aCA+IDAgJiYgKG8gLT0gci5oZWlnaHQoKSksIGEubGVuZ3RoID4gMCAmJiAobyAtPSBNYXRoLm1heC5hcHBseShudWxsLCBhLm1hcCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSh0aGlzKS5vdXRlckhlaWdodCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZ2V0KCkpKSwgZS5wcmV2ZW50RGVmYXVsdCgpLCBvID0gZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYXBwbHlGaWx0ZXJzKCJmcm9udGVuZC9oYW5kbGVycy9tZW51X2FuY2hvci9zY3JvbGxfdG9wX2Rpc3RhbmNlIiwgbyksICgwLCBpLmlzU2Nyb2xsU25hcEFjdGl2ZSkoKSAmJiBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5jc3MoInNjcm9sbC1zbmFwLXR5cGUiLCAibm9uZSIpLCB0aGlzLmVsZW1lbnRzLiRzY3JvbGxhYmxlLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5nZXRTZXR0aW5ncygic2Nyb2xsRHVyYXRpb24iKSwgImxpbmVhciIsICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGkuaXNTY3JvbGxTbmFwQWN0aXZlKSgpICYmIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRib2R5LmNzcygic2Nyb2xsLXNuYXAtdHlwZSIsICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Jbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUucHJvdG90eXBlLm9uSW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICA2ODY2OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgQXNzZXRzTG9hZGVyIHsKICAgICAgICAgICAgICAgIGdldFNjcmlwdEVsZW1lbnQoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5zcmMgPSBlLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdHlsZUVsZW1lbnQoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQucmVsID0gInN0eWxlc2hlZXQiLCB0LmhyZWYgPSBlLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsb2FkKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gQXNzZXRzTG9hZGVyLmFzc2V0c1tlXVt0XTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5sb2FkZXIgfHwgKG4ubG9hZGVyID0gbmV3IFByb21pc2UoKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gInN0eWxlIiA9PT0gZSA/IHRoaXMuZ2V0U3R5bGVFbGVtZW50KG4uc3JjKSA6IHRoaXMuZ2V0U2NyaXB0RWxlbWVudChuLnNyYyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkub25sb2FkID0gKCkgPT4gdCghMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSAiaGVhZCIgPT09IG4ucGFyZW50ID8gbi5wYXJlbnQgOiAiYm9keSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50W3NdLmFwcGVuZENoaWxkKGkpCiAgICAgICAgICAgICAgICAgICAgfSkpKSwgbi5sb2FkZXIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBBc3NldHNMb2FkZXI7CiAgICAgICAgICAgIGNvbnN0IG4gPSBlbGVtZW50b3JGcm9udGVuZENvbmZpZy5lbnZpcm9ubWVudE1vZGUuaXNTY3JpcHREZWJ1ZyA/ICIiIDogIi5taW4iOwogICAgICAgICAgICBBc3NldHNMb2FkZXIuYXNzZXRzID0gewogICAgICAgICAgICAgICAgc2NyaXB0OiB7CiAgICAgICAgICAgICAgICAgICAgZGlhbG9nOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogYCR7ZWxlbWVudG9yRnJvbnRlbmRDb25maWcudXJscy5hc3NldHN9bGliL2RpYWxvZy9kaWFsb2cke259LmpzP3Zlcj00LjkuMGAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJzaGFyZS1saW5rIjogewogICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGAke2VsZW1lbnRvckZyb250ZW5kQ29uZmlnLnVybHMuYXNzZXRzfWxpYi9zaGFyZS1saW5rL3NoYXJlLWxpbmske259LmpzP3Zlcj0ke2VsZW1lbnRvckZyb250ZW5kQ29uZmlnLnZlcnNpb259YAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3dpcGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogYCR7ZWxlbWVudG9yRnJvbnRlbmRDb25maWcudXJscy5hc3NldHN9bGliL3N3aXBlci9zd2lwZXIke259LmpzP3Zlcj01LjMuNmAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3R5bGU6IHt9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDg2NDY6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBMaWdodGJveE1hbmFnZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUgewogICAgICAgICAgICAgICAgc3RhdGljIGdldExpZ2h0Ym94KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBuZXcgUHJvbWlzZSgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmUoNzIzKS50aGVuKG4udC5iaW5kKG4sIDM4OTYsIDIzKSkudGhlbigoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiBlKG5ldyB0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLmFzc2V0c0xvYWRlci5sb2FkKCJzY3JpcHQiLCAiZGlhbG9nIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy5hc3NldHNMb2FkZXIubG9hZCgic2NyaXB0IiwgInNoYXJlLWxpbmsiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2UsIHQsIGldKS50aGVuKCgoKSA9PiBlKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiAiYSwgW2RhdGEtZWxlbWVudG9yLWxpZ2h0Ym94XSIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkbGlua3M6IGpRdWVyeSh0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMubGlua3MiKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0xpZ2h0Ym94TGluayhlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJhIiA9PT0gZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgJiYgKGUuaGFzQXR0cmlidXRlKCJkb3dubG9hZCIpIHx8ICEvXlteP10rXC4ocG5nfGpwZT9nfGdpZnxzdmd8d2VicCkoXD8uKik/JC9pLnRlc3QoZS5ocmVmKSkgJiYgIWUuZGF0YXNldC5lbGVtZW50b3JMaWdodGJveFZpZGVvKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVsZW1lbnRvckZyb250ZW5kLmdldEtpdFNldHRpbmdzKCJnbG9iYWxfaW1hZ2VfbGlnaHRib3giKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuZGF0YXNldC5lbGVtZW50b3JPcGVuTGlnaHRib3g7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ5ZXMiID09PSBuIHx8IHQgJiYgIm5vIiAhPT0gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXN5bmMgb25MaW5rQ2xpY2soZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlLmN1cnJlbnRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBqUXVlcnkoZS50YXJnZXQpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaSAmJiBlbGVtZW50b3IuJHByZXZpZXdDb250ZW50cy5maW5kKCJib2R5IikuaGFzQ2xhc3MoImVsZW1lbnRvci1lZGl0b3JfX3VpLXN0YXRlX19jb2xvci1waWNrZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEhbi5jbG9zZXN0KCIuZWxlbWVudG9yLWVkaXQtYXJlYSIpLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNMaWdodGJveExpbmsodCkpIHJldHVybiB2b2lkKGkgJiYgbyAmJiBlLnByZXZlbnREZWZhdWx0KCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KCksIGkgJiYgIWVsZW1lbnRvci5nZXRQcmVmZXJlbmNlcygibGlnaHRib3hfaW5fZWRpdG9yIikpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAocykgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICh0aGlzLmlzT3B0aW1pemVkQXNzZXRzTG9hZGluZygpID8gYXdhaXQgTGlnaHRib3hNYW5hZ2VyLmdldExpZ2h0Ym94KCkgOiBlbGVtZW50b3JGcm9udGVuZC51dGlscy5saWdodGJveCkuY3JlYXRlTGlnaHRib3godCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzT3B0aW1pemVkQXNzZXRzTG9hZGluZygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmV4cGVyaW1lbnRhbEZlYXR1cmVzLmVfb3B0aW1pemVkX2Fzc2V0c19sb2FkaW5nCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRkb2N1bWVudC5vbigiY2xpY2siLCB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMubGlua3MiKSwgKGUgPT4gdGhpcy5vbkxpbmtDbGljayhlKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoLi4uZSkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5lKSwgdGhpcy5pc09wdGltaXplZEFzc2V0c0xvYWRpbmcoKSAmJiAhZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpICYmIHRoaXMuZWxlbWVudHMuJGxpbmtzLmVhY2goKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTGlnaHRib3hMaW5rKHQpKSByZXR1cm4gTGlnaHRib3hNYW5hZ2VyLmdldExpZ2h0Ym94KCksICExCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gTGlnaHRib3hNYW5hZ2VyCiAgICAgICAgfSwKICAgICAgICA4NjI4OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gY2xhc3MgU3dpcGVyIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcgPSB0LCB0aGlzLmNvbmZpZy5icmVha3BvaW50cyAmJiAodGhpcy5jb25maWcgPSB0aGlzLmFkanVzdENvbmZpZyh0KSksIGpRdWVyeShlKS5jbG9zZXN0KCIuZWxlbWVudG9yLXdpZGdldC13cmFwIikuYWRkQ2xhc3MoImUtc3dpcGVyLWNvbnRhaW5lciIpLCBqUXVlcnkoZSkuY2xvc2VzdCgiLmVsZW1lbnRvci13aWRnZXQiKS5hZGRDbGFzcygiZS13aWRnZXQtc3dpcGVyIiksIG5ldyBQcm9taXNlKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50b3JGcm9udGVuZC5jb25maWcuZXhwZXJpbWVudGFsRmVhdHVyZXMuZV9vcHRpbWl6ZWRfYXNzZXRzX2xvYWRpbmcpIHJldHVybiB0KHRoaXMuY3JlYXRlU3dpcGVySW5zdGFuY2UoZSwgdGhpcy5jb25maWcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuYXNzZXRzTG9hZGVyLmxvYWQoInNjcmlwdCIsICJzd2lwZXIiKS50aGVuKCgoKSA9PiB0KHRoaXMuY3JlYXRlU3dpcGVySW5zdGFuY2UoZSwgdGhpcy5jb25maWcpKSkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjcmVhdGVTd2lwZXJJbnN0YW5jZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHdpbmRvdy5Td2lwZXI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ucHJvdG90eXBlLmFkanVzdENvbmZpZyA9IHRoaXMuYWRqdXN0Q29uZmlnLCBuZXcgbihlLCB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRqdXN0Q29uZmlnKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWUuaGFuZGxlRWxlbWVudG9yQnJlYWtwb2ludHMpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVsZW1lbnRvckZyb250ZW5kLmJyZWFrcG9pbnRzLmdldEJyZWFrcG9pbnRWYWx1ZXMoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZS5icmVha3BvaW50cykuZm9yRWFjaCgoaSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBwYXJzZUludChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG87CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID09PSB0Lm1vYmlsZS52YWx1ZSB8fCBzICsgMSA9PT0gdC5tb2JpbGUudmFsdWUpIG8gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdC53aWRlc2NyZWVuIHx8IHMgIT09IHQud2lkZXNjcmVlbi52YWx1ZSAmJiBzICsgMSAhPT0gdC53aWRlc2NyZWVuLnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gbi5maW5kSW5kZXgoKGUgPT4gcyA9PT0gZSB8fCBzICsgMSA9PT0gZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG5bZSAtIDFdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBvID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgZS5icmVha3BvaW50c1tvXSA9IGUuYnJlYWtwb2ludHNbaV0sIGUuYnJlYWtwb2ludHNbaV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiBlLnNsaWRlc1BlclZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogZS5zbGlkZXNQZXJHcm91cCA/IGUuc2xpZGVzUGVyR3JvdXAgOiAxCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMjA2NDogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlIHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiAnYVtocmVmXj0iJTIzZWxlbWVudG9yLWFjdGlvbiJdLCBhW2hyZWZePSIjZWxlbWVudG9yLWFjdGlvbiJdJwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQub24oImNsaWNrIiwgdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmxpbmtzIiksIHRoaXMucnVuTGlua0FjdGlvbi5iaW5kKHRoaXMpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5pdEFjdGlvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zID0gewogICAgICAgICAgICAgICAgICAgICAgICBsaWdodGJveDogYXN5bmMgZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gYXdhaXQgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMubGlnaHRib3g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNsaWRlc2hvdyA/IHQub3BlblNsaWRlc2hvdyhlLnNsaWRlc2hvdywgZS51cmwpIDogKGUuaWQgJiYgKGUudHlwZSA9ICJpbWFnZSIpLCB0LnNob3dNb2RhbChlKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFkZEFjdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zW2VdID0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcnVuQWN0aW9uKGUsIC4uLnQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gKGUgPSBkZWNvZGVVUklDb21wb25lbnQoZSkpLm1hdGNoKC9hY3Rpb249KC4rPykmLyksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLm1hdGNoKC9zZXR0aW5ncz0oLispLyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuYWN0aW9uc1tuWzFdXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXMpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBsZXQgbyA9IHt9OwogICAgICAgICAgICAgICAgICAgIGkgJiYgKG8gPSBKU09OLnBhcnNlKGF0b2IoaVsxXSkpKSwgcyhvLCAuLi50KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcnVuTGlua0FjdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLnJ1bkFjdGlvbihqUXVlcnkoZS5jdXJyZW50VGFyZ2V0KS5hdHRyKCJocmVmIiksIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW5IYXNoQWN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICghbG9jYXRpb24uaGFzaCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZS1hY3Rpb24taGFzaD0iJHtsb2NhdGlvbi5oYXNofSJdLCBhW2hyZWYqPSIke2xvY2F0aW9uLmhhc2h9Il1gKTsKICAgICAgICAgICAgICAgICAgICBlICYmIHRoaXMucnVuQWN0aW9uKGUuZ2V0QXR0cmlidXRlKCJlLWFjdGlvbi1oYXNoIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjcmVhdGVBY3Rpb25IYXNoKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGAjZWxlbWVudG9yLWFjdGlvbjphY3Rpb249JHtlfSZzZXR0aW5ncz0ke2J0b2EoSlNPTi5zdHJpbmdpZnkodCkpfWApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCksIHRoaXMuaW5pdEFjdGlvbnMoKSwgZWxlbWVudG9yRnJvbnRlbmQub24oImNvbXBvbmVudHM6aW5pdCIsIHRoaXMucnVuSGFzaEFjdGlvbi5iaW5kKHRoaXMpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA2MDI4OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuaXNTY3JvbGxTbmFwQWN0aXZlID0gdC5lc2NhcGVIVE1MID0gdm9pZCAwOwogICAgICAgICAgICB0LmVzY2FwZUhUTUwgPSBlID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB7CiAgICAgICAgICAgICAgICAgICAgIiYiOiAiJmFtcDsiLAogICAgICAgICAgICAgICAgICAgICI8IjogIiZsdDsiLAogICAgICAgICAgICAgICAgICAgICI+IjogIiZndDsiLAogICAgICAgICAgICAgICAgICAgICInIjogIiYjMzk7IiwKICAgICAgICAgICAgICAgICAgICAnIic6ICImcXVvdDsiCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIGUucmVwbGFjZSgvWyY8PiciXS9nLCAoZSA9PiB0W2VdIHx8IGUpKQogICAgICAgICAgICB9OwogICAgICAgICAgICB0LmlzU2Nyb2xsU25hcEFjdGl2ZSA9ICgpID0+IHsKICAgICAgICAgICAgICAgIHZhciBlLCB0OwogICAgICAgICAgICAgICAgcmV0dXJuICJ5ZXMiID09PSAoZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpID8gbnVsbCA9PT0gKGUgPSBlbGVtZW50b3Iuc2V0dGluZ3MucGFnZS5tb2RlbC5hdHRyaWJ1dGVzKSB8fCB2b2lkIDAgPT09IGUgPyB2b2lkIDAgOiBlLnNjcm9sbF9zbmFwIDogbnVsbCA9PT0gKHQgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuc2V0dGluZ3MucGFnZSkgfHwgdm9pZCAwID09PSB0ID8gdm9pZCAwIDogdC5zY3JvbGxfc25hcCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNDc3MzogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIEJhc2VMb2FkZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzSW5zZXJ0ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0U2NyaXB0OiAic2NyaXB0OmZpcnN0IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaXJzdFNjcmlwdDogalF1ZXJ5KHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycy5maXJzdFNjcmlwdCIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluc2VydEFQSSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRmaXJzdFNjcmlwdC5iZWZvcmUoalF1ZXJ5KCI8c2NyaXB0PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEFwaVVSTCgpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnNldFNldHRpbmdzKCJpc0luc2VydGVkIiwgITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRWaWRlb0lERnJvbVVSTChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUubWF0Y2godGhpcy5nZXRVUkxSZWdleCgpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiB0WzFdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkFwaVJlYWR5KGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFNldHRpbmdzKCJpc0luc2VydGVkIikgfHwgdGhpcy5pbnNlcnRBUEkoKSwgdGhpcy5pc0FwaUxvYWRlZCgpID8gZSh0aGlzLmdldEFwaU9iamVjdCgpKSA6IHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFwaVJlYWR5KGUpCiAgICAgICAgICAgICAgICAgICAgfSksIDM1MCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEF1dG9wbGF5VVJMKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZXBsYWNlKCImYXV0b3BsYXk9MCIsICIiKSArICImYXV0b3BsYXk9MSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBCYXNlTG9hZGVyCiAgICAgICAgfSwKICAgICAgICAxOTExOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICB2YXIgaSA9IG4oNzkxNCk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgcyA9IGkobig0NzczKSk7CiAgICAgICAgICAgIGNsYXNzIFZpbWVvTG9hZGVyIGV4dGVuZHMgcy5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldEFwaVVSTCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS9hcGkvcGxheWVyLmpzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0VVJMUmVnZXgoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9eKD86aHR0cHM/OlwvXC8pPyg/Ond3d3xwbGF5ZXJcLik/KD86dmltZW9cLmNvbVwvKT8oPzp2aWRlb1wvfGV4dGVybmFsXC8pPyhcZCspKFteLj8mIyInPl0/KS8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzQXBpTG9hZGVkKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuVmltZW8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEFwaU9iamVjdCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmltZW8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEF1dG9wbGF5VVJMKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gKGUgPSBzdXBlci5nZXRBdXRvcGxheVVSTChlKSkubWF0Y2goLyN0PVteJl0qLyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucmVwbGFjZSh0WzBdLCAiIikgKyB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gVmltZW9Mb2FkZXIKICAgICAgICB9LAogICAgICAgIDE2MDQ6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgIHZhciBpID0gbig3OTE0KTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBzID0gaShuKDQ3NzMpKTsKICAgICAgICAgICAgY2xhc3MgWW91dHViZUxvYWRlciBleHRlbmRzIHMuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBnZXRBcGlVUkwoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9pZnJhbWVfYXBpIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0VVJMUmVnZXgoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9eKD86aHR0cHM/OlwvXC8pPyg/Ond3d1wuKT8oPzptXC4pPyg/OnlvdXR1XC5iZVwvfHlvdXR1YmVcLmNvbVwvKD86KD86d2F0Y2gpP1w/KD86LiomKT92aT89fCg/OmVtYmVkfHZ8dml8dXNlcilcLykpKFtePyYiJz5dKykvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0FwaUxvYWRlZCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LllUICYmIFlULmxvYWRlZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QXBpT2JqZWN0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBZVAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IFlvdXR1YmVMb2FkZXIKICAgICAgICB9LAogICAgICAgIDU5OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICBuLnAgPSBlbGVtZW50b3JGcm9udGVuZENvbmZpZy51cmxzLmFzc2V0cyArICJqcy8iCiAgICAgICAgfSwKICAgICAgICA0Mzc1OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgQnJlYWtwb2ludHMgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihlKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgdGhpcy5yZXNwb25zaXZlQ29uZmlnID0gZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QWN0aXZlQnJlYWtwb2ludHNMaXN0KGUgPSB7fSkgewogICAgICAgICAgICAgICAgICAgIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlVG9TbWFsbDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZXNrdG9wOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IE9iamVjdC5rZXlzKHRoaXMucmVzcG9uc2l2ZUNvbmZpZy5hY3RpdmVCcmVha3BvaW50cyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUud2l0aERlc2t0b3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IC0xID09PSB0LmluZGV4T2YoIndpZGVzY3JlZW4iKSA/IHQubGVuZ3RoIDogdC5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNwbGljZShlLCAwLCAiZGVza3RvcCIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmxhcmdlVG9TbWFsbCAmJiB0LnJldmVyc2UoKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QnJlYWtwb2ludFZhbHVlcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJyZWFrcG9pbnRzOiBlCiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMucmVzcG9uc2l2ZUNvbmZpZywgdCA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGUpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0LnB1c2goZS52YWx1ZSkKICAgICAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlc2t0b3BQcmV2aW91c0RldmljZUtleSgpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgZSA9ICIiOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQnJlYWtwb2ludHM6IHQKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5yZXNwb25zaXZlQ29uZmlnLCBuID0gT2JqZWN0LmtleXModCksIGkgPSBuLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9ICJtaW4iID09PSB0W25baSAtIDFdXS5kaXJlY3Rpb24gPyBuW2kgLSAyXSA6IG5baSAtIDFdLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZXNrdG9wTWluUG9pbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVCcmVha3BvaW50czogZQogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLnJlc3BvbnNpdmVDb25maWc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdGhpcy5nZXREZXNrdG9wUHJldmlvdXNEZXZpY2VLZXkoKV0udmFsdWUgKyAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZXZpY2VNaW5CcmVha3BvaW50KGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoImRlc2t0b3AiID09PSBlKSByZXR1cm4gdGhpcy5nZXREZXNrdG9wTWluUG9pbnQoKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJyZWFrcG9pbnRzOiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMucmVzcG9uc2l2ZUNvbmZpZywgbiA9IE9iamVjdC5rZXlzKHQpOwogICAgICAgICAgICAgICAgICAgIGxldCBpOwogICAgICAgICAgICAgICAgICAgIGlmIChuWzBdID09PSBlKSBpID0gMzIwOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJ3aWRlc2NyZWVuIiA9PT0gZSkgaSA9IHRbZV0gPyB0W2VdLnZhbHVlIDogdGhpcy5yZXNwb25zaXZlQ29uZmlnLmJyZWFrcG9pbnRzLndpZGVzY3JlZW47CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBuLmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0W25bcyAtIDFdXS52YWx1ZSArIDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEFjdGl2ZU1hdGNoUmVnZXgoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodGhpcy5nZXRBY3RpdmVCcmVha3BvaW50c0xpc3QoKS5tYXAoKGUgPT4gIl8iICsgZSkpLmpvaW4oInwiKSArICIkIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBCcmVha3BvaW50cwogICAgICAgIH0sCiAgICAgICAgNjQwNDogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB0LkV2ZW50cyA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgRXZlbnRzIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBkaXNwYXRjaChlLCB0LCBuID0gbnVsbCwgaSA9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBlID0gZSBpbnN0YW5jZW9mIGpRdWVyeSA/IGVbMF0gOiBlLCBpICYmIGUuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoaSwgewogICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IG4KICAgICAgICAgICAgICAgICAgICB9KSksIGUuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQodCwgewogICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IG4KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LkV2ZW50cyA9IEV2ZW50czsKICAgICAgICAgICAgdmFyIG4gPSBFdmVudHM7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IG4KICAgICAgICB9LAogICAgICAgIDk0Njk6IGUgPT4gewogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLAogICAgICAgICAgICAgICAgICAgIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7fQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gX3JlbW92ZUhvb2soZSwgdCwgaSwgcykgewogICAgICAgICAgICAgICAgICAgIHZhciBvLCByLCBhOwogICAgICAgICAgICAgICAgICAgIGlmIChuW2VdW3RdKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gbltlXVt0XSwgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBvLmxlbmd0aDsgYS0tOykociA9IG9bYV0pLmNhbGxiYWNrID09PSBpICYmIHIuY29udGV4dCA9PT0gcyAmJiBvLnNwbGljZShhLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBvLmxlbmd0aDsgYS0tOykgb1thXS5jYWxsYmFjayA9PT0gaSAmJiBvLnNwbGljZShhLCAxKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIG5bZV1bdF0gPSBbXQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9hZGRIb29rKGUsIHQsIGksIHMsIG8pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuW2VdW3RdOwogICAgICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkuZWFjaChhLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FsbGJhY2sgPT09IGkpIHJldHVybiBsID0gITAsICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGwpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgYS5wdXNoKHIpLCBhID0gZnVuY3Rpb24gX2hvb2tJbnNlcnRTb3J0KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4sIGksIHMgPSAxLCBvID0gZS5sZW5ndGg7IHMgPCBvOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW3NdLCBuID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBlW24gLSAxXSkgJiYgaS5wcmlvcml0eSA+IHQucHJpb3JpdHk7KSBlW25dID0gZVtuIC0gMV0sIC0tbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW25dID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgfShhKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBhID0gW3JdOwogICAgICAgICAgICAgICAgICAgIG5bZV1bdF0gPSBhCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gX3J1bkhvb2soZSwgdCwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzLCBvLCByID0gbltlXVt0XTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXIpIHJldHVybiAiZmlsdGVycyIgPT09IGUgJiYgaVswXTsKICAgICAgICAgICAgICAgICAgICBpZiAobyA9IHIubGVuZ3RoLCAiZmlsdGVycyIgPT09IGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyA9IDA7IHMgPCBvOyBzKyspIGlbMF0gPSByW3NdLmNhbGxiYWNrLmFwcGx5KHJbc10uY29udGV4dCwgaSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgPSAwOyBzIDwgbzsgcysrKSByW3NdLmNhbGxiYWNrLmFwcGx5KHJbc10uY29udGV4dCwgaSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmaWx0ZXJzIiAhPT0gZSB8fCBpWzBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHsKICAgICAgICAgICAgICAgICAgICByZW1vdmVGaWx0ZXI6IGZ1bmN0aW9uIHJlbW92ZUZpbHRlcih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiBfcmVtb3ZlSG9vaygiZmlsdGVycyIsIHQsIG4pLCBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhcHBseUZpbHRlcnM6IGZ1bmN0aW9uIGFwcGx5RmlsdGVycygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmNhbGwoYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgaSA/IF9ydW5Ib29rKCJmaWx0ZXJzIiwgaSwgbikgOiBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGRGaWx0ZXI6IGZ1bmN0aW9uIGFkZEZpbHRlcih0LCBuLCBpLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBuICYmIF9hZGRIb29rKCJmaWx0ZXJzIiwgdCwgbiwgaSA9IHBhcnNlSW50KGkgfHwgMTAsIDEwKSwgcyksIGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlbW92ZUFjdGlvbjogZnVuY3Rpb24gcmVtb3ZlQWN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiB0ICYmIF9yZW1vdmVIb29rKCJhY3Rpb25zIiwgdCwgbiksIGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRvQWN0aW9uOiBmdW5jdGlvbiBkb0FjdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmNhbGwoYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgaSAmJiBfcnVuSG9vaygiYWN0aW9ucyIsIGksIG4pLCBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGRBY3Rpb246IGZ1bmN0aW9uIGFkZEFjdGlvbih0LCBuLCBpLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBuICYmIF9hZGRIb29rKCJhY3Rpb25zIiwgdCwgbiwgaSA9IHBhcnNlSW50KGkgfHwgMTAsIDEwKSwgcyksIGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDMzMDg6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjb25zdCBtYXRjaFVzZXJBZ2VudCA9IGUgPT4gbi5pbmRleE9mKGUpID49IDAsCiAgICAgICAgICAgICAgICBuID0gbmF2aWdhdG9yLnVzZXJBZ2VudCwKICAgICAgICAgICAgICAgIGkgPSAhIXdpbmRvdy5vcHIgJiYgISFvcHIuYWRkb25zIHx8ICEhd2luZG93Lm9wZXJhIHx8IG1hdGNoVXNlckFnZW50KCIgT1BSLyIpLAogICAgICAgICAgICAgICAgcyA9IG1hdGNoVXNlckFnZW50KCJGaXJlZm94IiksCiAgICAgICAgICAgICAgICBvID0gL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuKSB8fCAvY29uc3RydWN0b3IvaS50ZXN0KHdpbmRvdy5IVE1MRWxlbWVudCkgfHwgIltvYmplY3QgU2FmYXJpUmVtb3RlTm90aWZpY2F0aW9uXSIgPT09ICghd2luZG93LnNhZmFyaSB8fCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygc2FmYXJpICYmIHNhZmFyaS5wdXNoTm90aWZpY2F0aW9uKS50b1N0cmluZygpLAogICAgICAgICAgICAgICAgciA9IC9UcmlkZW50fE1TSUUvLnRlc3QobikgJiYgISFkb2N1bWVudC5kb2N1bWVudE1vZGUsCiAgICAgICAgICAgICAgICBhID0gIXIgJiYgISF3aW5kb3cuU3R5bGVNZWRpYSB8fCBtYXRjaFVzZXJBZ2VudCgiRWRnIiksCiAgICAgICAgICAgICAgICBsID0gISF3aW5kb3cuY2hyb21lICYmIG1hdGNoVXNlckFnZW50KCJDaHJvbWUiKSAmJiAhKGEgfHwgaSksCiAgICAgICAgICAgICAgICBkID0gbWF0Y2hVc2VyQWdlbnQoIkNocm9tZSIpICYmICEhd2luZG93LkNTUzsKICAgICAgICAgICAgdmFyIGMgPSB7CiAgICAgICAgICAgICAgICBhcHBsZVdlYmtpdDogbWF0Y2hVc2VyQWdlbnQoIkFwcGxlV2ViS2l0IikgJiYgIWQsCiAgICAgICAgICAgICAgICBibGluazogZCwKICAgICAgICAgICAgICAgIGNocm9tZTogbCwKICAgICAgICAgICAgICAgIGVkZ2U6IGEsCiAgICAgICAgICAgICAgICBmaXJlZm94OiBzLAogICAgICAgICAgICAgICAgaWU6IHIsCiAgICAgICAgICAgICAgICBtYWM6IG1hdGNoVXNlckFnZW50KCJNYWNpbnRvc2giKSwKICAgICAgICAgICAgICAgIG9wZXJhOiBpLAogICAgICAgICAgICAgICAgc2FmYXJpOiBvLAogICAgICAgICAgICAgICAgd2Via2l0OiBtYXRjaFVzZXJBZ2VudCgiQXBwbGVXZWJLaXQiKQogICAgICAgICAgICB9OwogICAgICAgICAgICB0LmRlZmF1bHQgPSBjCiAgICAgICAgfSwKICAgICAgICA1MTA3OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBnZXQoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGxldCBuOwogICAgICAgICAgICAgICAgICAgIHQgPSB0IHx8IHt9OwogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnNlc3Npb24gPyBzZXNzaW9uU3RvcmFnZSA6IGxvY2FsU3RvcmFnZQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyB2b2lkIDAgOiB7fQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IG4uZ2V0SXRlbSgiZWxlbWVudG9yIik7CiAgICAgICAgICAgICAgICAgICAgaSA9IGkgPyBKU09OLnBhcnNlKGkpIDoge30sIGkuX19leHBpcmF0aW9uIHx8IChpLl9fZXhwaXJhdGlvbiA9IHt9KTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gaS5fX2V4cGlyYXRpb247CiAgICAgICAgICAgICAgICAgICAgbGV0IG8gPSBbXTsKICAgICAgICAgICAgICAgICAgICBlID8gc1tlXSAmJiAobyA9IFtlXSkgOiBvID0gT2JqZWN0LmtleXMocyk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSAhMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoc1tlXSkgPCBuZXcgRGF0ZSAmJiAoZGVsZXRlIGlbZV0sIGRlbGV0ZSBzW2VdLCByID0gITApCiAgICAgICAgICAgICAgICAgICAgfSkpLCByICYmIHRoaXMuc2F2ZShpLCB0LnNlc3Npb24pLCBlID8gaVtlXSA6IGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgbiA9IG4gfHwge307CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuZ2V0KG51bGwsIG4pOwogICAgICAgICAgICAgICAgICAgIGlmIChpW2VdID0gdCwgbi5saWZldGltZUluU2Vjb25kcykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gbmV3IERhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2V0VGltZSh0LmdldFRpbWUoKSArIDFlMyAqIG4ubGlmZXRpbWVJblNlY29uZHMpLCBpLl9fZXhwaXJhdGlvbltlXSA9IHQuZ2V0VGltZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZShpLCBuLnNlc3Npb24pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzYXZlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgbjsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBuID0gdCA/IHNlc3Npb25TdG9yYWdlIDogbG9jYWxTdG9yYWdlCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbi5zZXRJdGVtKCJlbGVtZW50b3IiLCBKU09OLnN0cmluZ2lmeShlKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNjA0NjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInRleHQtcGF0aCIsICgoKSA9PiBuLmUoNDgpLnRoZW4obi5iaW5kKG4sIDY0NjgpKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9CiAgICB9LAogICAgZSA9PiB7CiAgICAgICAgZS5PKDAsIFszNTRdLCAoKCkgPT4gewogICAgICAgICAgICByZXR1cm4gdCA9IDU2NTQsIGUoZS5zID0gdCk7CiAgICAgICAgICAgIHZhciB0CiAgICAgICAgfSkpOwogICAgICAgIGUuTygpCiAgICB9Cl0pOw=="}},"time_used":1294,"timings":{"blocked":1188,"dns":0,"connect":0,"send":0,"wait":105,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/uploads/2022/02/DJI_0138-Optimised.jpg","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.868Z","timestamp":1785145485868,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /wp-content/uploads/2022/02/DJI_0138-Optimised.jpg HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T14:18:36.3294Z","times_seen":17564547,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-private-message/assets/css/perfect-scrollbar.css?ver=5.9.3","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.290Z","timestamp":1785145482290,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-private-message/assets/css/perfect-scrollbar.css?ver=5.9.3 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 5271\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":5271,"size_decoded":5480,"mime_type":"text/css","magic":"ASCII text","md5":"71befd663eef9b73a7ba0498117e4041","sha1":"7f96e0bf0bae152b4afed9884f61b6fc0b29cda4","sha256":"45b10446e584a3a406b4959b80e718d29f773351509e6fffc1560e3c7236b960","sha512":"95b94868b6e1458f7183950412167eadbe109fc6ed4098bd29d0f2788dacb4eb33f4d8699766ddbf5ce133ea5e0977fbcc10fd8a9126cf47d4540ef7b43b5848","ssdeep":"96:Ussjjb0kYxS9jga9gwgwg29g29gHkYxS9Tga9gwgwg29g29gO:he0kYxS9jd9N9d9d9WkYxS9Td9N9d9d5","tlshash":"9ab12a64ce6619d432bf524ea7d55395123d80a3fe1a0e5cb2af7ef06f093bc6522844","first_seen":"2026-07-27T08:06:56.5272Z","last_seen":"2026-07-27T09:45:50.932442Z","times_seen":3,"resource_available":false,"data":"LyogcGVyZmVjdC1zY3JvbGxiYXIgdjAuNi4xMiAqLwoKLnBzLWNvbnRhaW5lciB7CiAgICAtbXMtdG91Y2gtYWN0aW9uOiBub25lOwogICAgdG91Y2gtYWN0aW9uOiBub25lOwogICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lCn0KCkBzdXBwb3J0cyAoLW1zLW92ZXJmbG93LXN0eWxlOiBub25lKSB7CiAgICAucHMtY29udGFpbmVyIHsKICAgICAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSwKKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSB7CiAgICAucHMtY29udGFpbmVyIHsKICAgICAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50CiAgICB9Cn0KCi5wcy1jb250YWluZXIucHMtYWN0aXZlLXg+LnBzLXNjcm9sbGJhci14LXJhaWwsCi5wcy1jb250YWluZXIucHMtYWN0aXZlLXk+LnBzLXNjcm9sbGJhci15LXJhaWwgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgoucHMtY29udGFpbmVyLnBzLWluLXNjcm9sbGluZyB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgoucHMtY29udGFpbmVyLnBzLWluLXNjcm9sbGluZy5wcy14Pi5wcy1zY3JvbGxiYXIteC1yYWlsIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICBvcGFjaXR5OiAuOQp9CgoucHMtY29udGFpbmVyLnBzLWluLXNjcm9sbGluZy5wcy14Pi5wcy1zY3JvbGxiYXIteC1yYWlsPi5wcy1zY3JvbGxiYXIteCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5Cn0KCi5wcy1jb250YWluZXIucHMtaW4tc2Nyb2xsaW5nLnBzLXk+LnBzLXNjcm9sbGJhci15LXJhaWwgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIG9wYWNpdHk6IC45Cn0KCi5wcy1jb250YWluZXIucHMtaW4tc2Nyb2xsaW5nLnBzLXk+LnBzLXNjcm9sbGJhci15LXJhaWw+LnBzLXNjcm9sbGJhci15IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTkKfQoKLnBzLWNvbnRhaW5lcj4ucHMtc2Nyb2xsYmFyLXgtcmFpbCB7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLCBvcGFjaXR5IC4ycyBsaW5lYXI7CiAgICAtbW96LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgb3BhY2l0eSAuMnMgbGluZWFyOwogICAgLW8tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLCBvcGFjaXR5IC4ycyBsaW5lYXI7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIG9wYWNpdHkgLjJzIGxpbmVhcjsKICAgIGJvdHRvbTogMHB4OwogICAgaGVpZ2h0OiAxNXB4Cn0KCi5wcy1jb250YWluZXI+LnBzLXNjcm9sbGJhci14LXJhaWw+LnBzLXNjcm9sbGJhci14IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWE7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIGhlaWdodCAuMnMgbGluZWFyLCB3aWR0aCAuMnMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQ7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIGhlaWdodCAuMnMgbGluZWFyLCB3aWR0aCAuMnMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQ7CiAgICAtbW96LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgaGVpZ2h0IC4ycyBsaW5lYXIsIHdpZHRoIC4ycyBlYXNlLWluLW91dCwgYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQsIC1tb3otYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQ7CiAgICAtby10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIGhlaWdodCAuMnMgbGluZWFyLCB3aWR0aCAuMnMgZWFzZS1pbi1vdXQsIGJvcmRlci1yYWRpdXMgLjJzIGVhc2UtaW4tb3V0OwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLCBoZWlnaHQgLjJzIGxpbmVhciwgd2lkdGggLjJzIGVhc2UtaW4tb3V0LCBib3JkZXItcmFkaXVzIC4ycyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgaGVpZ2h0IC4ycyBsaW5lYXIsIHdpZHRoIC4ycyBlYXNlLWluLW91dCwgYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQsIC1tb3otYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQ7CiAgICBib3R0b206IDJweDsKICAgIGhlaWdodDogNnB4Cn0KCi5wcy1jb250YWluZXI+LnBzLXNjcm9sbGJhci14LXJhaWw6aG92ZXI+LnBzLXNjcm9sbGJhci14LAoucHMtY29udGFpbmVyPi5wcy1zY3JvbGxiYXIteC1yYWlsOmFjdGl2ZT4ucHMtc2Nyb2xsYmFyLXggewogICAgaGVpZ2h0OiAxMXB4Cn0KCi5wcy1jb250YWluZXI+LnBzLXNjcm9sbGJhci15LXJhaWwgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgb3BhY2l0eSAuMnMgbGluZWFyOwogICAgLW1vei10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIG9wYWNpdHkgLjJzIGxpbmVhcjsKICAgIC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgb3BhY2l0eSAuMnMgbGluZWFyOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLCBvcGFjaXR5IC4ycyBsaW5lYXI7CiAgICByaWdodDogMDsKICAgIHdpZHRoOiAxNXB4Cn0KCi5wcy1jb250YWluZXI+LnBzLXNjcm9sbGJhci15LXJhaWw+LnBzLXNjcm9sbGJhci15IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWE7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIGhlaWdodCAuMnMgbGluZWFyLCB3aWR0aCAuMnMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQ7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIGhlaWdodCAuMnMgbGluZWFyLCB3aWR0aCAuMnMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQ7CiAgICAtbW96LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgaGVpZ2h0IC4ycyBsaW5lYXIsIHdpZHRoIC4ycyBlYXNlLWluLW91dCwgYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQsIC1tb3otYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQ7CiAgICAtby10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBsaW5lYXIsIGhlaWdodCAuMnMgbGluZWFyLCB3aWR0aCAuMnMgZWFzZS1pbi1vdXQsIGJvcmRlci1yYWRpdXMgLjJzIGVhc2UtaW4tb3V0OwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgbGluZWFyLCBoZWlnaHQgLjJzIGxpbmVhciwgd2lkdGggLjJzIGVhc2UtaW4tb3V0LCBib3JkZXItcmFkaXVzIC4ycyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGxpbmVhciwgaGVpZ2h0IC4ycyBsaW5lYXIsIHdpZHRoIC4ycyBlYXNlLWluLW91dCwgYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQsIC1tb3otYm9yZGVyLXJhZGl1cyAuMnMgZWFzZS1pbi1vdXQ7CiAgICByaWdodDogMnB4OwogICAgd2lkdGg6IDZweAp9CgoucHMtY29udGFpbmVyPi5wcy1zY3JvbGxiYXIteS1yYWlsOmhvdmVyPi5wcy1zY3JvbGxiYXIteSwKLnBzLWNvbnRhaW5lcj4ucHMtc2Nyb2xsYmFyLXktcmFpbDphY3RpdmU+LnBzLXNjcm9sbGJhci15IHsKICAgIHdpZHRoOiAxMXB4Cn0KCi5wcy1jb250YWluZXI6aG92ZXIucHMtaW4tc2Nyb2xsaW5nIHsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lCn0KCi5wcy1jb250YWluZXI6aG92ZXIucHMtaW4tc2Nyb2xsaW5nLnBzLXg+LnBzLXNjcm9sbGJhci14LXJhaWwgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIG9wYWNpdHk6IC45Cn0KCi5wcy1jb250YWluZXI6aG92ZXIucHMtaW4tc2Nyb2xsaW5nLnBzLXg+LnBzLXNjcm9sbGJhci14LXJhaWw+LnBzLXNjcm9sbGJhci14IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTkKfQoKLnBzLWNvbnRhaW5lcjpob3Zlci5wcy1pbi1zY3JvbGxpbmcucHMteT4ucHMtc2Nyb2xsYmFyLXktcmFpbCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgb3BhY2l0eTogLjkKfQoKLnBzLWNvbnRhaW5lcjpob3Zlci5wcy1pbi1zY3JvbGxpbmcucHMteT4ucHMtc2Nyb2xsYmFyLXktcmFpbD4ucHMtc2Nyb2xsYmFyLXkgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OQp9CgoucHMtY29udGFpbmVyOmhvdmVyPi5wcy1zY3JvbGxiYXIteC1yYWlsLAoucHMtY29udGFpbmVyOmhvdmVyPi5wcy1zY3JvbGxiYXIteS1yYWlsIHsKICAgIG9wYWNpdHk6IC42Cn0KCi5wcy1jb250YWluZXI6aG92ZXI+LnBzLXNjcm9sbGJhci14LXJhaWw6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIG9wYWNpdHk6IC45Cn0KCi5wcy1jb250YWluZXI6aG92ZXI+LnBzLXNjcm9sbGJhci14LXJhaWw6aG92ZXI+LnBzLXNjcm9sbGJhci14IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTkKfQoKLnBzLWNvbnRhaW5lcjpob3Zlcj4ucHMtc2Nyb2xsYmFyLXktcmFpbDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgb3BhY2l0eTogLjkKfQoKLnBzLWNvbnRhaW5lcjpob3Zlcj4ucHMtc2Nyb2xsYmFyLXktcmFpbDpob3Zlcj4ucHMtc2Nyb2xsYmFyLXkgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OQp9"}},"time_used":327,"timings":{"blocked":-1,"dns":1,"connect":92,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/wp-realestate/assets/js/leaflet/leaflet.css?ver=1.5.1","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.291Z","timestamp":1785145482291,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/wp-realestate/assets/js/leaflet/leaflet.css?ver=1.5.1 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 15124\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":15124,"size_decoded":15334,"mime_type":"text/css","magic":"ASCII text, with CRLF line terminators","md5":"8a12eb85f842dbefc2f1c1ce21572e7a","sha1":"357557438be549437a0af855731f845f0d1dd604","sha256":"981169dab0e1e06b7a61f9370aa89e5e20d352f9e82df9944efb135ddee9d331","sha512":"2b20618bd7b579a19613b64a3b173ae4c88cc3583c245618015b0abbc18c61c7c807d8343d15d9cf8a7dfa624aac1aba6aa2bb7c930169c5fd129d14d9b74eaf","ssdeep":"192:OGZpEBaLYBjkZz7aAfkUvnDM/NNr3d1bNNe2pUDJQDuWQbqQcBLuL1GQZ56Q:pUBaLY/1UvWNJ1e5jmLuLr","tlshash":"df62a05bf7363346d1366a29e7b08122fe1290638902c7b97acce7048ff946c5d52dad","first_seen":"2026-07-27T08:06:56.460501Z","last_seen":"2026-07-27T09:45:50.864671Z","times_seen":3,"resource_available":false,"data":"LyogcmVxdWlyZWQgc3R5bGVzICovDQoNCi5sZWFmbGV0LXBhbmUsDQoubGVhZmxldC10aWxlLA0KLmxlYWZsZXQtbWFya2VyLWljb24sDQoubGVhZmxldC1tYXJrZXItc2hhZG93LA0KLmxlYWZsZXQtdGlsZS1jb250YWluZXIsDQoubGVhZmxldC1wYW5lPnN2ZywNCi5sZWFmbGV0LXBhbmU+Y2FudmFzLA0KLmxlYWZsZXQtem9vbS1ib3gsDQoubGVhZmxldC1pbWFnZS1sYXllciwNCi5sZWFmbGV0LWxheWVyIHsNCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgbGVmdDogMDsNCiAgICB0b3A6IDA7DQp9DQoNCi5sZWFmbGV0LWNvbnRhaW5lciB7DQogICAgb3ZlcmZsb3c6IGhpZGRlbjsNCn0NCg0KLmxlYWZsZXQtdGlsZSwNCi5sZWFmbGV0LW1hcmtlci1pY29uLA0KLmxlYWZsZXQtbWFya2VyLXNoYWRvdyB7DQogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsNCiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOw0KICAgIHVzZXItc2VsZWN0OiBub25lOw0KICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lOw0KfQ0KDQovKiBQcmV2ZW50cyBJRTExIGZyb20gaGlnaGxpZ2h0aW5nIHRpbGVzIGluIGJsdWUgKi8NCg0KLmxlYWZsZXQtdGlsZTo6c2VsZWN0aW9uIHsNCiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCn0NCg0KLyogU2FmYXJpIHJlbmRlcnMgbm9uLXJldGluYSB0aWxlIG9uIHJldGluYSBiZXR0ZXIgd2l0aCB0aGlzLCBidXQgQ2hyb21lIGlzIHdvcnNlICovDQoNCi5sZWFmbGV0LXNhZmFyaSAubGVhZmxldC10aWxlIHsNCiAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7DQp9DQoNCi8qIGhhY2sgdGhhdCBwcmV2ZW50cyBodyBsYXllcnMgInN0cmV0Y2hpbmciIHdoZW4gbG9hZGluZyBuZXcgdGlsZXMgKi8NCg0KLmxlYWZsZXQtc2FmYXJpIC5sZWFmbGV0LXRpbGUtY29udGFpbmVyIHsNCiAgICB3aWR0aDogMTYwMHB4Ow0KICAgIGhlaWdodDogMTYwMHB4Ow0KICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAwOw0KfQ0KDQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3cgew0KICAgIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQovKiAubGVhZmxldC1jb250YWluZXIgc3ZnOiByZXNldCBzdmcgbWF4LXdpZHRoIGRlY2xlcmF0aW9uIHNoaXBwZWQgaW4gSm9vbWxhISAoam9vbWxhLm9yZykgMy54ICovDQoNCi8qIC5sZWFmbGV0LWNvbnRhaW5lciBpbWc6IG1hcCBpcyBicm9rZW4gaW4gRkYgaWYgeW91IGhhdmUgbWF4LXdpZHRoOiAxMDAlIG9uIHRpbGVzICovDQoNCi5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1vdmVybGF5LXBhbmUgc3ZnLA0KLmxlYWZsZXQtY29udGFpbmVyIC5sZWFmbGV0LW1hcmtlci1wYW5lIGltZywNCi5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1zaGFkb3ctcGFuZSBpbWcsDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtdGlsZS1wYW5lIGltZywNCi5sZWFmbGV0LWNvbnRhaW5lciBpbWcubGVhZmxldC1pbWFnZS1sYXllciwNCi5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC10aWxlIHsNCiAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsNCiAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7DQp9DQoNCi5sZWFmbGV0LWNvbnRhaW5lci5sZWFmbGV0LXRvdWNoLXpvb20gew0KICAgIC1tcy10b3VjaC1hY3Rpb246IHBhbi14IHBhbi15Ow0KICAgIHRvdWNoLWFjdGlvbjogcGFuLXggcGFuLXk7DQp9DQoNCi5sZWFmbGV0LWNvbnRhaW5lci5sZWFmbGV0LXRvdWNoLWRyYWcgew0KICAgIC1tcy10b3VjaC1hY3Rpb246IHBpbmNoLXpvb207DQogICAgLyogRmFsbGJhY2sgZm9yIEZGIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBwaW5jaC16b29tICovDQogICAgdG91Y2gtYWN0aW9uOiBub25lOw0KICAgIHRvdWNoLWFjdGlvbjogcGluY2gtem9vbTsNCn0NCg0KLmxlYWZsZXQtY29udGFpbmVyLmxlYWZsZXQtdG91Y2gtZHJhZy5sZWFmbGV0LXRvdWNoLXpvb20gew0KICAgIC1tcy10b3VjaC1hY3Rpb246IG5vbmU7DQogICAgdG91Y2gtYWN0aW9uOiBub25lOw0KfQ0KDQoubGVhZmxldC1jb250YWluZXIgew0KICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7DQp9DQoNCi5sZWFmbGV0LWNvbnRhaW5lciBhIHsNCiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoNTEsIDE4MSwgMjI5LCAwLjQpOw0KfQ0KDQoubGVhZmxldC10aWxlIHsNCiAgICBmaWx0ZXI6IGluaGVyaXQ7DQogICAgdmlzaWJpbGl0eTogaGlkZGVuOw0KfQ0KDQoubGVhZmxldC10aWxlLWxvYWRlZCB7DQogICAgdmlzaWJpbGl0eTogaW5oZXJpdDsNCn0NCg0KLmxlYWZsZXQtem9vbS1ib3ggew0KICAgIHdpZHRoOiAwOw0KICAgIGhlaWdodDogMDsNCiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7DQogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsNCiAgICB6LWluZGV4OiA4MDA7DQp9DQoNCi8qIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODMxOSAqLw0KDQoubGVhZmxldC1vdmVybGF5LXBhbmUgc3ZnIHsNCiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOw0KfQ0KDQoubGVhZmxldC1wYW5lIHsNCiAgICB6LWluZGV4OiA0MDA7DQp9DQoNCi5sZWFmbGV0LXRpbGUtcGFuZSB7DQogICAgei1pbmRleDogMjAwOw0KfQ0KDQoubGVhZmxldC1vdmVybGF5LXBhbmUgew0KICAgIHotaW5kZXg6IDQwMDsNCn0NCg0KLmxlYWZsZXQtc2hhZG93LXBhbmUgew0KICAgIHotaW5kZXg6IDUwMDsNCn0NCg0KLmxlYWZsZXQtbWFya2VyLXBhbmUgew0KICAgIHotaW5kZXg6IDYwMDsNCn0NCg0KLmxlYWZsZXQtdG9vbHRpcC1wYW5lIHsNCiAgICB6LWluZGV4OiA2NTA7DQp9DQoNCi5sZWFmbGV0LXBvcHVwLXBhbmUgew0KICAgIHotaW5kZXg6IDcwMDsNCn0NCg0KLmxlYWZsZXQtbWFwLXBhbmUgY2FudmFzIHsNCiAgICB6LWluZGV4OiAxMDA7DQp9DQoNCi5sZWFmbGV0LW1hcC1wYW5lIHN2ZyB7DQogICAgei1pbmRleDogMjAwOw0KfQ0KDQoubGVhZmxldC12bWwtc2hhcGUgew0KICAgIHdpZHRoOiAxcHg7DQogICAgaGVpZ2h0OiAxcHg7DQp9DQoNCi5sdm1sIHsNCiAgICBiZWhhdmlvcjogdXJsKCNkZWZhdWx0I1ZNTCk7DQogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCn0NCg0KLyogY29udHJvbCBwb3NpdGlvbmluZyAqLw0KDQoubGVhZmxldC1jb250cm9sIHsNCiAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgei1pbmRleDogODAwOw0KICAgIHBvaW50ZXItZXZlbnRzOiB2aXNpYmxlUGFpbnRlZDsNCiAgICAvKiBJRSA5LTEwIGRvZXNuJ3QgaGF2ZSBhdXRvICovDQogICAgcG9pbnRlci1ldmVudHM6IGF1dG87DQp9DQoNCi5sZWFmbGV0LXRvcCwNCi5sZWFmbGV0LWJvdHRvbSB7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHotaW5kZXg6IDEwMDA7DQogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQp9DQoNCi5sZWFmbGV0LXRvcCB7DQogICAgdG9wOiAwOw0KfQ0KDQoubGVhZmxldC1yaWdodCB7DQogICAgcmlnaHQ6IDA7DQp9DQoNCi5sZWFmbGV0LWJvdHRvbSB7DQogICAgYm90dG9tOiAwOw0KfQ0KDQoubGVhZmxldC1sZWZ0IHsNCiAgICBsZWZ0OiAwOw0KfQ0KDQoubGVhZmxldC1jb250cm9sIHsNCiAgICBmbG9hdDogbGVmdDsNCiAgICBjbGVhcjogYm90aDsNCn0NCg0KLmxlYWZsZXQtcmlnaHQgLmxlYWZsZXQtY29udHJvbCB7DQogICAgZmxvYXQ6IHJpZ2h0Ow0KfQ0KDQoubGVhZmxldC10b3AgLmxlYWZsZXQtY29udHJvbCB7DQogICAgbWFyZ2luLXRvcDogMTBweDsNCn0NCg0KLmxlYWZsZXQtYm90dG9tIC5sZWFmbGV0LWNvbnRyb2wgew0KICAgIG1hcmdpbi1ib3R0b206IDEwcHg7DQp9DQoNCi5sZWFmbGV0LWxlZnQgLmxlYWZsZXQtY29udHJvbCB7DQogICAgbWFyZ2luLWxlZnQ6IDEwcHg7DQp9DQoNCi5sZWFmbGV0LXJpZ2h0IC5sZWFmbGV0LWNvbnRyb2wgew0KICAgIG1hcmdpbi1yaWdodDogMTBweDsNCn0NCg0KLyogem9vbSBhbmQgZmFkZSBhbmltYXRpb25zICovDQoNCi5sZWFmbGV0LWZhZGUtYW5pbSAubGVhZmxldC10aWxlIHsNCiAgICB3aWxsLWNoYW5nZTogb3BhY2l0eTsNCn0NCg0KLmxlYWZsZXQtZmFkZS1hbmltIC5sZWFmbGV0LXBvcHVwIHsNCiAgICBvcGFjaXR5OiAwOw0KICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjsNCiAgICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBsaW5lYXI7DQogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjsNCn0NCg0KLmxlYWZsZXQtZmFkZS1hbmltIC5sZWFmbGV0LW1hcC1wYW5lIC5sZWFmbGV0LXBvcHVwIHsNCiAgICBvcGFjaXR5OiAxOw0KfQ0KDQoubGVhZmxldC16b29tLWFuaW1hdGVkIHsNCiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsNCiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogMCAwOw0KICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDsNCn0NCg0KLmxlYWZsZXQtem9vbS1hbmltIC5sZWFmbGV0LXpvb20tYW5pbWF0ZWQgew0KICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07DQp9DQoNCi5sZWFmbGV0LXpvb20tYW5pbSAubGVhZmxldC16b29tLWFuaW1hdGVkIHsNCiAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMjVzIGN1YmljLWJlemllcigwLCAwLCAwLjI1LCAxKTsNCiAgICAtbW96LXRyYW5zaXRpb246IC1tb3otdHJhbnNmb3JtIDAuMjVzIGN1YmljLWJlemllcigwLCAwLCAwLjI1LCAxKTsNCiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMjUsIDEpOw0KfQ0KDQoubGVhZmxldC16b29tLWFuaW0gLmxlYWZsZXQtdGlsZSwNCi5sZWFmbGV0LXBhbi1hbmltIC5sZWFmbGV0LXRpbGUgew0KICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsNCiAgICAtbW96LXRyYW5zaXRpb246IG5vbmU7DQogICAgdHJhbnNpdGlvbjogbm9uZTsNCn0NCg0KLmxlYWZsZXQtem9vbS1hbmltIC5sZWFmbGV0LXpvb20taGlkZSB7DQogICAgdmlzaWJpbGl0eTogaGlkZGVuOw0KfQ0KDQovKiBjdXJzb3JzICovDQoNCi5sZWFmbGV0LWludGVyYWN0aXZlIHsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQp9DQoNCi5sZWFmbGV0LWdyYWIgew0KICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiOw0KICAgIGN1cnNvcjogLW1vei1ncmFiOw0KICAgIGN1cnNvcjogZ3JhYjsNCn0NCg0KLmxlYWZsZXQtY3Jvc3NoYWlyLA0KLmxlYWZsZXQtY3Jvc3NoYWlyIC5sZWFmbGV0LWludGVyYWN0aXZlIHsNCiAgICBjdXJzb3I6IGNyb3NzaGFpcjsNCn0NCg0KLmxlYWZsZXQtcG9wdXAtcGFuZSwNCi5sZWFmbGV0LWNvbnRyb2wgew0KICAgIGN1cnNvcjogYXV0bzsNCn0NCg0KLmxlYWZsZXQtZHJhZ2dpbmcgLmxlYWZsZXQtZ3JhYiwNCi5sZWFmbGV0LWRyYWdnaW5nIC5sZWFmbGV0LWdyYWIgLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQoubGVhZmxldC1kcmFnZ2luZyAubGVhZmxldC1tYXJrZXItZHJhZ2dhYmxlIHsNCiAgICBjdXJzb3I6IG1vdmU7DQogICAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nOw0KICAgIGN1cnNvcjogLW1vei1ncmFiYmluZzsNCiAgICBjdXJzb3I6IGdyYWJiaW5nOw0KfQ0KDQovKiBtYXJrZXIgJiBvdmVybGF5cyBpbnRlcmFjdGl2aXR5ICovDQoNCi5sZWFmbGV0LW1hcmtlci1pY29uLA0KLmxlYWZsZXQtbWFya2VyLXNoYWRvdywNCi5sZWFmbGV0LWltYWdlLWxheWVyLA0KLmxlYWZsZXQtcGFuZT5zdmcgcGF0aCwNCi5sZWFmbGV0LXRpbGUtY29udGFpbmVyIHsNCiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsNCn0NCg0KLmxlYWZsZXQtbWFya2VyLWljb24ubGVhZmxldC1pbnRlcmFjdGl2ZSwNCi5sZWFmbGV0LWltYWdlLWxheWVyLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQoubGVhZmxldC1wYW5lPnN2ZyBwYXRoLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQpzdmcubGVhZmxldC1pbWFnZS1sYXllci5sZWFmbGV0LWludGVyYWN0aXZlIHBhdGggew0KICAgIHBvaW50ZXItZXZlbnRzOiB2aXNpYmxlUGFpbnRlZDsNCiAgICAvKiBJRSA5LTEwIGRvZXNuJ3QgaGF2ZSBhdXRvICovDQogICAgcG9pbnRlci1ldmVudHM6IGF1dG87DQp9DQoNCi8qIHZpc3VhbCB0d2Vha3MgKi8NCg0KLmxlYWZsZXQtY29udGFpbmVyIHsNCiAgICBiYWNrZ3JvdW5kOiAjZGRkOw0KICAgIG91dGxpbmU6IDA7DQp9DQoNCi5sZWFmbGV0LWNvbnRhaW5lciBhIHsNCiAgICBjb2xvcjogIzAwNzhBODsNCn0NCg0KLmxlYWZsZXQtY29udGFpbmVyIGEubGVhZmxldC1hY3RpdmUgew0KICAgIG91dGxpbmU6IDJweCBzb2xpZCBvcmFuZ2U7DQp9DQoNCi5sZWFmbGV0LXpvb20tYm94IHsNCiAgICBib3JkZXI6IDJweCBkb3R0ZWQgIzM4ZjsNCiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7DQp9DQoNCi8qIGdlbmVyYWwgdHlwb2dyYXBoeSAqLw0KDQoubGVhZmxldC1jb250YWluZXIgew0KICAgIGZvbnQ6IDEycHgvMS41ICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQp9DQoNCi8qIGdlbmVyYWwgdG9vbGJhciBzdHlsZXMgKi8NCg0KLmxlYWZsZXQtYmFyIHsNCiAgICBib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjY1KTsNCiAgICBib3JkZXItcmFkaXVzOiA0cHg7DQp9DQoNCi5sZWFmbGV0LWJhciBhLA0KLmxlYWZsZXQtYmFyIGE6aG92ZXIgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7DQogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7DQogICAgd2lkdGg6IDI2cHg7DQogICAgaGVpZ2h0OiAyNnB4Ow0KICAgIGxpbmUtaGVpZ2h0OiAyNnB4Ow0KICAgIGRpc3BsYXk6IGJsb2NrOw0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgY29sb3I6IGJsYWNrOw0KfQ0KDQoubGVhZmxldC1iYXIgYSwNCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXRvZ2dsZSB7DQogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICAgIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQoubGVhZmxldC1iYXIgYTpob3ZlciB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmNDsNCn0NCg0KLmxlYWZsZXQtYmFyIGE6Zmlyc3QtY2hpbGQgew0KICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsNCiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4Ow0KfQ0KDQoubGVhZmxldC1iYXIgYTpsYXN0LWNoaWxkIHsNCiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7DQogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsNCiAgICBib3JkZXItYm90dG9tOiBub25lOw0KfQ0KDQoubGVhZmxldC1iYXIgYS5sZWFmbGV0LWRpc2FibGVkIHsNCiAgICBjdXJzb3I6IGRlZmF1bHQ7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmNDsNCiAgICBjb2xvcjogI2JiYjsNCn0NCg0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIGEgew0KICAgIHdpZHRoOiAzMHB4Ow0KICAgIGhlaWdodDogMzBweDsNCiAgICBsaW5lLWhlaWdodDogMzBweDsNCn0NCg0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIGE6Zmlyc3QtY2hpbGQgew0KICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDJweDsNCiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMnB4Ow0KfQ0KDQoubGVhZmxldC10b3VjaCAubGVhZmxldC1iYXIgYTpsYXN0LWNoaWxkIHsNCiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAycHg7DQogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDsNCn0NCg0KLyogem9vbSBjb250cm9sICovDQoNCi5sZWFmbGV0LWNvbnRyb2wtem9vbS1pbiwNCi5sZWFmbGV0LWNvbnRyb2wtem9vbS1vdXQgew0KICAgIGZvbnQ6IGJvbGQgMThweCAnTHVjaWRhIENvbnNvbGUnLCBNb25hY28sIG1vbm9zcGFjZTsNCiAgICB0ZXh0LWluZGVudDogMXB4Ow0KfQ0KDQoubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLXpvb20taW4sDQoubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLXpvb20tb3V0IHsNCiAgICBmb250LXNpemU6IDIycHg7DQp9DQoNCi8qIGxheWVycyBjb250cm9sICovDQoNCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzIHsNCiAgICBib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjQpOw0KICAgIGJhY2tncm91bmQ6ICNmZmY7DQogICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KfQ0KDQoubGVhZmxldC1jb250cm9sLWxheWVycy10b2dnbGUgew0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvbGF5ZXJzLnBuZyk7DQogICAgd2lkdGg6IDM2cHg7DQogICAgaGVpZ2h0OiAzNnB4Ow0KfQ0KDQoubGVhZmxldC1yZXRpbmEgLmxlYWZsZXQtY29udHJvbC1sYXllcnMtdG9nZ2xlIHsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL2xheWVycy0yeC5wbmcpOw0KICAgIGJhY2tncm91bmQtc2l6ZTogMjZweCAyNnB4Ow0KfQ0KDQoubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLWxheWVycy10b2dnbGUgew0KICAgIHdpZHRoOiA0NHB4Ow0KICAgIGhlaWdodDogNDRweDsNCn0NCg0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMgLmxlYWZsZXQtY29udHJvbC1sYXllcnMtbGlzdCwNCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXRvZ2dsZSB7DQogICAgZGlzcGxheTogbm9uZTsNCn0NCg0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMtZXhwYW5kZWQgLmxlYWZsZXQtY29udHJvbC1sYXllcnMtbGlzdCB7DQogICAgZGlzcGxheTogYmxvY2s7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KDQoubGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZCB7DQogICAgcGFkZGluZzogNnB4IDEwcHggNnB4IDZweDsNCiAgICBjb2xvcjogIzMzMzsNCiAgICBiYWNrZ3JvdW5kOiAjZmZmOw0KfQ0KDQoubGVhZmxldC1jb250cm9sLWxheWVycy1zY3JvbGxiYXIgew0KICAgIG92ZXJmbG93LXk6IHNjcm9sbDsNCiAgICBvdmVyZmxvdy14OiBoaWRkZW47DQogICAgcGFkZGluZy1yaWdodDogNXB4Ow0KfQ0KDQoubGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvciB7DQogICAgbWFyZ2luLXRvcDogMnB4Ow0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICB0b3A6IDFweDsNCn0NCg0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMgbGFiZWwgew0KICAgIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQoubGVhZmxldC1jb250cm9sLWxheWVycy1zZXBhcmF0b3Igew0KICAgIGhlaWdodDogMDsNCiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsNCiAgICBtYXJnaW46IDVweCAtMTBweCA1cHggLTZweDsNCn0NCg0KLyogRGVmYXVsdCBpY29uIFVSTHMgKi8NCg0KLmxlYWZsZXQtZGVmYXVsdC1pY29uLXBhdGggew0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvbWFya2VyLWljb24ucG5nKTsNCn0NCg0KLyogYXR0cmlidXRpb24gYW5kIHNjYWxlIGNvbnRyb2xzICovDQoNCi5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1jb250cm9sLWF0dHJpYnV0aW9uIHsNCiAgICBiYWNrZ3JvdW5kOiAjZmZmOw0KICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsNCiAgICBtYXJnaW46IDA7DQp9DQoNCi5sZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24sDQoubGVhZmxldC1jb250cm9sLXNjYWxlLWxpbmUgew0KICAgIHBhZGRpbmc6IDAgNXB4Ow0KICAgIGNvbG9yOiAjMzMzOw0KfQ0KDQoubGVhZmxldC1jb250cm9sLWF0dHJpYnV0aW9uIGEgew0KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCn0NCg0KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiBhOmhvdmVyIHsNCiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsNCn0NCg0KLmxlYWZsZXQtY29udGFpbmVyIC5sZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24sDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtY29udHJvbC1zY2FsZSB7DQogICAgZm9udC1zaXplOiAxMXB4Ow0KfQ0KDQoubGVhZmxldC1sZWZ0IC5sZWFmbGV0LWNvbnRyb2wtc2NhbGUgew0KICAgIG1hcmdpbi1sZWZ0OiA1cHg7DQp9DQoNCi5sZWFmbGV0LWJvdHRvbSAubGVhZmxldC1jb250cm9sLXNjYWxlIHsNCiAgICBtYXJnaW4tYm90dG9tOiA1cHg7DQp9DQoNCi5sZWFmbGV0LWNvbnRyb2wtc2NhbGUtbGluZSB7DQogICAgYm9yZGVyOiAycHggc29saWQgIzc3NzsNCiAgICBib3JkZXItdG9wOiBub25lOw0KICAgIGxpbmUtaGVpZ2h0OiAxLjE7DQogICAgcGFkZGluZzogMnB4IDVweCAxcHg7DQogICAgZm9udC1zaXplOiAxMXB4Ow0KICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7DQogICAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7DQogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsNCiAgICBiYWNrZ3JvdW5kOiAjZmZmOw0KICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsNCn0NCg0KLmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lOm5vdCg6Zmlyc3QtY2hpbGQpIHsNCiAgICBib3JkZXItdG9wOiAycHggc29saWQgIzc3NzsNCiAgICBib3JkZXItYm90dG9tOiBub25lOw0KICAgIG1hcmdpbi10b3A6IC0ycHg7DQp9DQoNCi5sZWFmbGV0LWNvbnRyb2wtc2NhbGUtbGluZTpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHsNCiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzc3NzsNCn0NCg0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiwNCi5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLA0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIHsNCiAgICBib3gtc2hhZG93OiBub25lOw0KfQ0KDQoubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLWxheWVycywNCi5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWJhciB7DQogICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOw0KICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7DQp9DQoNCi8qIHBvcHVwICovDQoNCi5sZWFmbGV0LXBvcHVwIHsNCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgIG1hcmdpbi1ib3R0b206IDIwcHg7DQp9DQoNCi5sZWFmbGV0LXBvcHVwLWNvbnRlbnQtd3JhcHBlciB7DQogICAgcGFkZGluZzogMXB4Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQogICAgYm9yZGVyLXJhZGl1czogMTJweDsNCn0NCg0KLmxlYWZsZXQtcG9wdXAtY29udGVudCB7DQogICAgbWFyZ2luOiAxM3B4IDE5cHg7DQogICAgbGluZS1oZWlnaHQ6IDEuNDsNCn0NCg0KLmxlYWZsZXQtcG9wdXAtY29udGVudCBwIHsNCiAgICBtYXJnaW46IDE4cHggMDsNCn0NCg0KLmxlYWZsZXQtcG9wdXAtdGlwLWNvbnRhaW5lciB7DQogICAgd2lkdGg6IDQwcHg7DQogICAgaGVpZ2h0OiAyMHB4Ow0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICBsZWZ0OiA1MCU7DQogICAgbWFyZ2luLWxlZnQ6IC0yMHB4Ow0KICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQp9DQoNCi5sZWFmbGV0LXBvcHVwLXRpcCB7DQogICAgd2lkdGg6IDE3cHg7DQogICAgaGVpZ2h0OiAxN3B4Ow0KICAgIHBhZGRpbmc6IDFweDsNCiAgICBtYXJnaW46IC0xMHB4IGF1dG8gMDsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsNCiAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsNCiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOw0KICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsNCn0NCg0KLmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyLA0KLmxlYWZsZXQtcG9wdXAtdGlwIHsNCiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsNCiAgICBjb2xvcjogIzMzMzsNCiAgICBib3gtc2hhZG93OiAwIDNweCAxNHB4IHJnYmEoMCwgMCwgMCwgMC40KTsNCn0NCg0KLmxlYWZsZXQtY29udGFpbmVyIGEubGVhZmxldC1wb3B1cC1jbG9zZS1idXR0b24gew0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICB0b3A6IDA7DQogICAgcmlnaHQ6IDA7DQogICAgcGFkZGluZzogNHB4IDRweCAwIDA7DQogICAgYm9yZGVyOiBub25lOw0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICB3aWR0aDogMThweDsNCiAgICBoZWlnaHQ6IDE0cHg7DQogICAgZm9udDogMTZweC8xNHB4IFRhaG9tYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsNCiAgICBjb2xvcjogI2MzYzNjMzsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQp9DQoNCi5sZWFmbGV0LWNvbnRhaW5lciBhLmxlYWZsZXQtcG9wdXAtY2xvc2UtYnV0dG9uOmhvdmVyIHsNCiAgICBjb2xvcjogIzk5OTsNCn0NCg0KLmxlYWZsZXQtcG9wdXAtc2Nyb2xsZWQgew0KICAgIG92ZXJmbG93OiBhdXRvOw0KICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOw0KICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOw0KfQ0KDQoubGVhZmxldC1vbGRpZSAubGVhZmxldC1wb3B1cC1jb250ZW50LXdyYXBwZXIgew0KICAgIHpvb206IDE7DQp9DQoNCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LXBvcHVwLXRpcCB7DQogICAgd2lkdGg6IDI0cHg7DQogICAgbWFyZ2luOiAwIGF1dG87DQogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5NYXRyaXgoTTExPTAuNzA3MTA2NzgsIE0xMj0wLjcwNzEwNjc4LCBNMjE9LTAuNzA3MTA2NzgsIE0yMj0wLjcwNzEwNjc4KSI7DQogICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuTWF0cml4KE0xMT0wLjcwNzEwNjc4LCBNMTI9MC43MDcxMDY3OCwgTTIxPS0wLjcwNzEwNjc4LCBNMjI9MC43MDcxMDY3OCk7DQp9DQoNCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LXBvcHVwLXRpcC1jb250YWluZXIgew0KICAgIG1hcmdpbi10b3A6IC0xcHg7DQp9DQoNCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LWNvbnRyb2wtem9vbSwNCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLA0KLmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyLA0KLmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtcG9wdXAtdGlwIHsNCiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5Ow0KfQ0KDQovKiBkaXYgaWNvbiAqLw0KDQoubGVhZmxldC1kaXYtaWNvbiB7DQogICAgYmFja2dyb3VuZDogI2ZmZjsNCiAgICBib3JkZXI6IDFweCBzb2xpZCAjNjY2Ow0KfQ0KDQovKiBUb29sdGlwICovDQoNCi8qIEJhc2Ugc3R5bGVzIGZvciB0aGUgZWxlbWVudCB0aGF0IGhhcyBhIHRvb2x0aXAgKi8NCg0KLmxlYWZsZXQtdG9vbHRpcCB7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHBhZGRpbmc6IDZweDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7DQogICAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICAgIGNvbG9yOiAjMjIyOw0KICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7DQogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsNCiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOw0KICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsNCiAgICB1c2VyLXNlbGVjdDogbm9uZTsNCiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsNCiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOw0KfQ0KDQoubGVhZmxldC10b29sdGlwLmxlYWZsZXQtY2xpY2thYmxlIHsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgcG9pbnRlci1ldmVudHM6IGF1dG87DQp9DQoNCi5sZWFmbGV0LXRvb2x0aXAtdG9wOmJlZm9yZSwNCi5sZWFmbGV0LXRvb2x0aXAtYm90dG9tOmJlZm9yZSwNCi5sZWFmbGV0LXRvb2x0aXAtbGVmdDpiZWZvcmUsDQoubGVhZmxldC10b29sdGlwLXJpZ2h0OmJlZm9yZSB7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHBvaW50ZXItZXZlbnRzOiBub25lOw0KICAgIGJvcmRlcjogNnB4IHNvbGlkIHRyYW5zcGFyZW50Ow0KICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KICAgIGNvbnRlbnQ6ICIiOw0KfQ0KDQovKiBEaXJlY3Rpb25zICovDQoNCi5sZWFmbGV0LXRvb2x0aXAtYm90dG9tIHsNCiAgICBtYXJnaW4tdG9wOiA2cHg7DQp9DQoNCi5sZWFmbGV0LXRvb2x0aXAtdG9wIHsNCiAgICBtYXJnaW4tdG9wOiAtNnB4Ow0KfQ0KDQoubGVhZmxldC10b29sdGlwLWJvdHRvbTpiZWZvcmUsDQoubGVhZmxldC10b29sdGlwLXRvcDpiZWZvcmUgew0KICAgIGxlZnQ6IDUwJTsNCiAgICBtYXJnaW4tbGVmdDogLTZweDsNCn0NCg0KLmxlYWZsZXQtdG9vbHRpcC10b3A6YmVmb3JlIHsNCiAgICBib3R0b206IDA7DQogICAgbWFyZ2luLWJvdHRvbTogLTEycHg7DQogICAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjsNCn0NCg0KLmxlYWZsZXQtdG9vbHRpcC1ib3R0b206YmVmb3JlIHsNCiAgICB0b3A6IDA7DQogICAgbWFyZ2luLXRvcDogLTEycHg7DQogICAgbWFyZ2luLWxlZnQ6IC02cHg7DQogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsNCn0NCg0KLmxlYWZsZXQtdG9vbHRpcC1sZWZ0IHsNCiAgICBtYXJnaW4tbGVmdDogLTZweDsNCn0NCg0KLmxlYWZsZXQtdG9vbHRpcC1yaWdodCB7DQogICAgbWFyZ2luLWxlZnQ6IDZweDsNCn0NCg0KLmxlYWZsZXQtdG9vbHRpcC1sZWZ0OmJlZm9yZSwNCi5sZWFmbGV0LXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHsNCiAgICB0b3A6IDUwJTsNCiAgICBtYXJnaW4tdG9wOiAtNnB4Ow0KfQ0KDQoubGVhZmxldC10b29sdGlwLWxlZnQ6YmVmb3JlIHsNCiAgICByaWdodDogMDsNCiAgICBtYXJnaW4tcmlnaHQ6IC0xMnB4Ow0KICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmOw0KfQ0KDQoubGVhZmxldC10b29sdGlwLXJpZ2h0OmJlZm9yZSB7DQogICAgbGVmdDogMDsNCiAgICBtYXJnaW4tbGVmdDogLTEycHg7DQogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmOw0KfQ=="}},"time_used":370,"timings":{"blocked":183,"dns":0,"connect":0,"send":0,"wait":187,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/uploads/2021/10/report-parallac.jpg","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:45.875Z","timestamp":1785145485875,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/uploads/2021/10/report-parallac.jpg HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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 404 Not Found\r\nServer: nginx\r\nDate: Mon, 27 Jul 2026 09:44:45 GMT\r\nContent-Type: text/html; charset=iso-8859-1\r\nContent-Length: 355\r\nConnection: keep-alive\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"Not Found","fingerprints":[{"name":"Nginx","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":355,"size_decoded":523,"mime_type":"text/html; charset=iso-8859-1","magic":"HTML document, ASCII text","md5":"4525b2d648f7c457a689fd96421783a5","sha1":"11bfe30ce44585a15a38e86bc094224ddfe2c08e","sha256":"cc0b4e42510d49c6decd464123ecf3b14ae9b47f9b4ed2ee64893e2d6520a264","sha512":"94e3e8246cf38ff7740e51aa115c8c455b14f78e672c2686b782c0ce30b6fa2dbd91a78b29b3964d9c0414aabd4b9391fd5db326665e25b4b8e73dae60ffe979","ssdeep":"","tlshash":"71e0c04f4057b3474011a2907dc01291e505236b38a152f93ac09467500897dc4aa2dd","first_seen":"2025-12-09T03:51:58.5943Z","last_seen":"2026-07-27T14:17:34.165733Z","times_seen":47538,"resource_available":true,"data":"PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPjxoZWFkPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjwvaGVhZD48Ym9keT4KPGgxPk5vdCBGb3VuZDwvaDE+CjxwPlRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhpcyBzZXJ2ZXIuPC9wPgo8cD5BZGRpdGlvbmFsbHksIGEgNDA0IE5vdCBGb3VuZAplcnJvciB3YXMgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIHVzZSBhbiBFcnJvckRvY3VtZW50IHRvIGhhbmRsZSB0aGUgcmVxdWVzdC48L3A+CjwvYm9keT48L2h0bWw+Cg=="}},"time_used":96,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/css/jquery.mmenu.css?ver=0.6.12","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.311Z","timestamp":1785145482311,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/css/jquery.mmenu.css?ver=0.6.12 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:42 GMT\r\nContent-Type: text/css\r\nContent-Length: 8497\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":8497,"size_decoded":8706,"mime_type":"text/css","magic":"ASCII text","md5":"098ba0835634de67d5a9e12ceac167a2","sha1":"9957e460678d4c9209e8d9f67ad2ccaea49722d7","sha256":"95bf9db356a7520efbc102d8af38519b9019615e7b272ed2227f70ff2e69777c","sha512":"05173bc59a67411f7f167b3303f02d3e6d0d02eda8ee3a85fb8c2d022bc655021a9405f4a931c2c80e9cc37e57441333153e8b74a1311a8dc3f2521507f7d1db","ssdeep":"192:BsXp/Ac1FsyqC8wivsydxpNfmPW7E3FQFf7CC4p0kMr32INYj+lSXWAufr+ZWUoI:xJkFQFzTHl1A6NM","tlshash":"5402b925adb30dc8551ed3be0bda4b7c771c9143171bccbafb82624a8fc96678091e94","first_seen":"2026-07-27T08:06:56.354831Z","last_seen":"2026-07-27T09:45:50.894517Z","times_seen":3,"resource_available":false,"data":"Lm1tLWhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLm1tLXdyYXBwZXIgewogICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5tbS1tZW51IHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBiYWNrZ3JvdW5kOiBpbmhlcml0OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgei1pbmRleDogMAp9CgoubW0tcGFuZWxzLAoubW0tcGFuZWxzPi5tbS1wYW5lbCB7CiAgICBiYWNrZ3JvdW5kOiBpbmhlcml0OwogICAgYm9yZGVyLWNvbG9yOiBpbmhlcml0OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIG1hcmdpbjogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIHotaW5kZXg6IDAKfQoKLm1tLXBhbmVscyB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5tbS1wYW5lbCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjRzIGVhc2U7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdAp9CgoubW0tcGFuZWwubW0tb3BlbmVkIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKQp9CgoubW0tcGFuZWwubW0tc3Vib3BlbmVkIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCUsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMzAlLCAwLCAwKQp9CgoubW0tcGFuZWwubW0taGlnaGVzdCB7CiAgICB6LWluZGV4OiAxCn0KCi5tbS1wYW5lbC5tbS1ub2FuaW1hdGlvbiB7CiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQKfQoKLm1tLXBhbmVsLm1tLW5vYW5pbWF0aW9uLm1tLXN1Ym9wZW5lZCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkKfQoKLm1tLXBhbmVscz4ubW0tcGFuZWwgewogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgb3ZlcmZsb3c6IHNjcm9sbDsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBwYWRkaW5nOiAwIDIwcHgKfQoKLm1tLXBhbmVscz4ubW0tcGFuZWwubW0taGFzbmF2YmFyIHsKICAgIHBhZGRpbmctdG9wOiA0MHB4Cn0KCi5tbS1wYW5lbHM+Lm1tLXBhbmVsOm5vdCgubW0taGlkZGVuKSB7CiAgICBkaXNwbGF5OiBibG9jawp9CgoubW0tcGFuZWxzPi5tbS1wYW5lbDphZnRlciwKLm1tLXBhbmVscz4ubW0tcGFuZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDIwcHgKfQoKLm1tLXZlcnRpY2FsIC5tbS1wYW5lbCB7CiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudAp9CgoubW0tbGlzdHZpZXcgLm1tLXZlcnRpY2FsIC5tbS1wYW5lbCwKLm1tLXZlcnRpY2FsIC5tbS1saXN0dmlldyAubW0tcGFuZWwgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBhZGRpbmc6IDEwcHggMCAxMHB4IDEwcHgKfQoKLm1tLWxpc3R2aWV3IC5tbS12ZXJ0aWNhbCAubW0tcGFuZWwgLm1tLWxpc3R2aWV3PmxpOmxhc3QtY2hpbGQ6YWZ0ZXIsCi5tbS12ZXJ0aWNhbCAubW0tbGlzdHZpZXcgLm1tLXBhbmVsIC5tbS1saXN0dmlldz5saTpsYXN0LWNoaWxkOmFmdGVyIHsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQKfQoKLm1tLXZlcnRpY2FsIGxpLm1tLW9wZW5lZD4ubW0tcGFuZWwsCmxpLm1tLXZlcnRpY2FsLm1tLW9wZW5lZD4ubW0tcGFuZWwgewogICAgZGlzcGxheTogYmxvY2sKfQoKLm1tLWxpc3R2aWV3PmxpLm1tLXZlcnRpY2FsPi5tbS1uZXh0LAoubW0tdmVydGljYWwgLm1tLWxpc3R2aWV3PmxpPi5tbS1uZXh0IHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBib3R0b206IGF1dG8KfQoKLm1tLWxpc3R2aWV3PmxpLm1tLXZlcnRpY2FsLm1tLW9wZW5lZD4ubW0tbmV4dDphZnRlciwKLm1tLXZlcnRpY2FsIC5tbS1saXN0dmlldz5saS5tbS1vcGVuZWQ+Lm1tLW5leHQ6YWZ0ZXIgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjI1ZGVnKTsKICAgIHJpZ2h0OiAxOXB4Cn0KCi5tbS1idG4gewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIHdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgei1pbmRleDogMQp9CgoubW0tY2xlYXI6YWZ0ZXIsCi5tbS1jbGVhcjpiZWZvcmUsCi5tbS1jbG9zZTphZnRlciwKLm1tLWNsb3NlOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogNXB4OwogICAgaGVpZ2h0OiA1cHg7CiAgICBtYXJnaW46IGF1dG87CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpCn0KCi5tbS1jbGVhcjpiZWZvcmUsCi5tbS1jbG9zZTpiZWZvcmUgewogICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIHJpZ2h0OiAxOHB4Cn0KCi5tbS1jbGVhcjphZnRlciwKLm1tLWNsb3NlOmFmdGVyIHsKICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIHJpZ2h0OiAyNXB4Cn0KCi5tbS1uZXh0OmFmdGVyLAoubW0tcHJldjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBib3JkZXItdG9wOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBtYXJnaW46IGF1dG87CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDAKfQoKLm1tLXByZXY6YmVmb3JlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICBsZWZ0OiAyM3B4OwogICAgcmlnaHQ6IGF1dG8KfQoKLm1tLW5leHQ6YWZ0ZXIgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTsKICAgIHJpZ2h0OiAyM3B4OwogICAgbGVmdDogYXV0bwp9CgoubW0tbmF2YmFyIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKICAgIGJvcmRlci1jb2xvcjogaW5oZXJpdDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgcGFkZGluZzogMCA0MHB4OwogICAgbWFyZ2luOiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwCn0KCi5tbS1uYXZiYXI+KiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDEwcHggMAp9CgoubW0tbmF2YmFyIGEsCi5tbS1uYXZiYXIgYTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKLm1tLW5hdmJhciAubW0tdGl0bGUgewogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9CgoubW0tbmF2YmFyIC5tbS1idG46Zmlyc3QtY2hpbGQgewogICAgbGVmdDogMAp9CgoubW0tbmF2YmFyIC5tbS1idG46bGFzdC1jaGlsZCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIHJpZ2h0OiAwCn0KCi5tbS1wYW5lbCAubW0tbmF2YmFyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLm1tLXBhbmVsLm1tLWhhc25hdmJhciAubW0tbmF2YmFyIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5tbS1saXN0dmlldywKLm1tLWxpc3R2aWV3PmxpIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDAKfQoKLm1tLWxpc3R2aWV3IHsKICAgIGZvbnQ6IGluaGVyaXQ7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMjBweAp9CgoubW0tbGlzdHZpZXcgYSwKLm1tLWxpc3R2aWV3IGE6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lCn0KCi5tbS1saXN0dmlldz5saSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLm1tLWxpc3R2aWV3PmxpLAoubW0tbGlzdHZpZXc+bGkgLm1tLW5leHQsCi5tbS1saXN0dmlldz5saSAubW0tbmV4dDpiZWZvcmUsCi5tbS1saXN0dmlldz5saTphZnRlciB7CiAgICBib3JkZXItY29sb3I6IGluaGVyaXQKfQoKLm1tLWxpc3R2aWV3PmxpPmEsCi5tbS1saXN0dmlldz5saT5zcGFuIHsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMjBweDsKICAgIG1hcmdpbjogMAp9CgoubW0tbGlzdHZpZXc+bGk6bm90KC5tbS1kaXZpZGVyKTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDAKfQoKLm1tLWxpc3R2aWV3PmxpOm5vdCgubW0tZGl2aWRlcik6YWZ0ZXIgewogICAgbGVmdDogMjBweAp9CgoubW0tbGlzdHZpZXcgLm1tLW5leHQgewogICAgYmFja2dyb3VuZDogcmdiYSgzLCAyLCAxLCAwKTsKICAgIHdpZHRoOiA1MHB4OwogICAgcGFkZGluZzogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgei1pbmRleDogMgp9CgoubW0tbGlzdHZpZXcgLm1tLW5leHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKICAgIGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMAp9CgoubW0tbGlzdHZpZXcgLm1tLW5leHQrYSwKLm1tLWxpc3R2aWV3IC5tbS1uZXh0K3NwYW4gewogICAgbWFyZ2luLXJpZ2h0OiA1MHB4Cn0KCi5tbS1saXN0dmlldyAubW0tbmV4dC5tbS1mdWxsc3Vib3BlbiB7CiAgICB3aWR0aDogMTAwJQp9CgoubW0tbGlzdHZpZXcgLm1tLW5leHQubW0tZnVsbHN1Ym9wZW46YmVmb3JlIHsKICAgIGJvcmRlci1sZWZ0OiBub25lCn0KCi5tbS1saXN0dmlldyAubW0tbmV4dC5tbS1mdWxsc3Vib3BlbithLAoubW0tbGlzdHZpZXcgLm1tLW5leHQubW0tZnVsbHN1Ym9wZW4rc3BhbiB7CiAgICBwYWRkaW5nLXJpZ2h0OiA1MHB4OwogICAgbWFyZ2luLXJpZ2h0OiAwCn0KCi5tbS1wYW5lbHM+Lm1tLXBhbmVsPi5tbS1saXN0dmlldyB7CiAgICBtYXJnaW46IDIwcHggLTIwcHgKfQoKLm1tLXBhbmVscz4ubW0tcGFuZWw+Lm1tLWxpc3R2aWV3OmZpcnN0LWNoaWxkLAoubW0tcGFuZWxzPi5tbS1wYW5lbD4ubW0tbmF2YmFyKy5tbS1saXN0dmlldyB7CiAgICBtYXJnaW4tdG9wOiAtMjBweAp9CgoubW0tbWVudSB7CiAgICBiYWNrZ3JvdW5kOiAjZjNmM2YzOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4xKTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC43NSkKfQoKLm1tLW1lbnUgLm1tLW5hdmJhciBhLAoubW0tbWVudSAubW0tbmF2YmFyPiogewogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjMpCn0KCi5tbS1tZW51IC5tbS1idG46YWZ0ZXIsCi5tbS1tZW51IC5tbS1idG46YmVmb3JlIHsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMykKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3IHsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMSkKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpIC5tbS1uZXh0OmFmdGVyIHsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMykKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpIGE6bm90KC5tbS1uZXh0KSB7CiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjUpOwogICAgdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSkKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpLm1tLXNlbGVjdGVkPmE6bm90KC5tbS1uZXh0KSwKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpLm1tLXNlbGVjdGVkPnNwYW4gewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSkKfQoKLm1tLW1lbnUgLm1tLWxpc3R2aWV3PmxpLm1tLW9wZW5lZC5tbS12ZXJ0aWNhbD4ubW0tcGFuZWwsCi5tbS1tZW51IC5tbS1saXN0dmlldz5saS5tbS1vcGVuZWQubW0tdmVydGljYWw+YS5tbS1uZXh0LAoubW0tbWVudS5tbS12ZXJ0aWNhbCAubW0tbGlzdHZpZXc+bGkubW0tb3BlbmVkPi5tbS1wYW5lbCwKLm1tLW1lbnUubW0tdmVydGljYWwgLm1tLWxpc3R2aWV3PmxpLm1tLW9wZW5lZD5hLm1tLW5leHQgewogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDUpCn0KCi5tbS1tZW51IC5tbS1kaXZpZGVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA1KQp9CgoubW0tcGFnZSB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5tbS1zbGlkZW91dCB7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjRzIGVhc2U7CiAgICB6LWluZGV4OiAxCn0KCmh0bWwubW0tb3BlbmVkIHsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgpodG1sLm1tLWJsb2NraW5nIHsKICAgIG92ZXJmbG93OiBoaWRkZW4KfQoKaHRtbC5tbS1ibG9ja2luZyBib2R5IHsKICAgIG92ZXJmbG93OiBoaWRkZW4KfQoKaHRtbC5tbS1iYWNrZ3JvdW5kIC5tbS1wYWdlIHsKICAgIGJhY2tncm91bmQ6IGluaGVyaXQKfQoKI21tLWJsb2NrZXIgewogICAgYmFja2dyb3VuZDogcmdiYSgzLCAyLCAxLCAwKTsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAyCn0KCmh0bWwubW0tYmxvY2tpbmcgI21tLWJsb2NrZXIgewogICAgZGlzcGxheTogYmxvY2sKfQoKLm1tLW1lbnUubW0tb2ZmY2FudmFzIHsKICAgIHotaW5kZXg6IDA7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGZpeGVkCn0KCi5tbS1tZW51Lm1tLW9mZmNhbnZhcy5tbS1vcGVuZWQgewogICAgZGlzcGxheTogYmxvY2sKfQoKLm1tLW1lbnUubW0tb2ZmY2FudmFzLm1tLW5vLWNzc3RyYW5zZm9ybXMubW0tb3BlbmVkIHsKICAgIHotaW5kZXg6IDEwCn0KCi5tbS1tZW51Lm1tLW9mZmNhbnZhcyB7CiAgICB3aWR0aDogODAlOwogICAgbWluLXdpZHRoOiAxNDBweDsKICAgIG1heC13aWR0aDogNDQwcHgKfQoKaHRtbC5tbS1vcGVuaW5nIC5tbS1tZW51fi5tbS1zbGlkZW91dCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg4MCUsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg4MCUsIDAsIDApCn0KCkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MTc1cHgpIHsKICAgIGh0bWwubW0tb3BlbmluZyAubW0tbWVudX4ubW0tc2xpZGVvdXQgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE0MHB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDE0MHB4LCAwLCAwKQogICAgfQp9CgpAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjU1MHB4KSB7CiAgICBodG1sLm1tLW9wZW5pbmcgLm1tLW1lbnV+Lm1tLXNsaWRlb3V0IHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg0NDBweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg0NDBweCwgMCwgMCkKICAgIH0KfQoKQGNoYXJzZXQgIlVURi04IjsKLm1tLXNyb25seSB7CiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKICAgIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KSAhaW1wb3J0YW50OwogICAgY2xpcC1wYXRoOiBpbnNldCg1MCUpICFpbXBvcnRhbnQ7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQKfQ=="}},"time_used":668,"timings":{"blocked":572,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/themes/homeo/js/property.js?ver=20150330","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.477Z","timestamp":1785145482477,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/themes/homeo/js/property.js?ver=20150330 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 60623\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:04 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":60623,"size_decoded":60840,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (320)","md5":"e84324a6934d3c3445d2b80e66123b6d","sha1":"e51d76256c8adb6345a54ce9f17284de3ee2e588","sha256":"ce5ed08247cf2fb4223aacf4981c961d46e3bb383091e542a571431e8ed6cc63","sha512":"b6f8e22acbb06f1c180995dea682dd3bfe5ed94a7635dff59fd45e85c1403f4fa45ed52d3b00158a0b45fd41709ba39623d31a094fac1fcb913756b876890eaa","ssdeep":"384:b+dYnPPeU7wGBFupr87LrTXl83MikSGTHtlxjnA8s7a5AudzOzadwYPxjsEcU3S7:MiPeU7wuLrDlTIel3SNY0f/","tlshash":"7d437209f9f26875247b303f5bff74056a2a441b511acf20ba5c4b840fc552ce6b9bea","first_seen":"2026-07-27T08:06:56.541617Z","last_seen":"2026-07-27T09:45:50.967346Z","times_seen":3,"resource_available":true,"data":"KGZ1bmN0aW9uKCQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAkLmV4dGVuZCgkLmFwdXNUaGVtZUNvcmUsIHsKICAgICAgICAvKioKICAgICAgICAgKiAgSW5pdGlhbGl6ZSBzY3JpcHRzCiAgICAgICAgICovCiAgICAgICAgcHJvcGVydHlfaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgICAgICAgIHNlbGYuc2VsZWN0MkluaXQoKTsKCiAgICAgICAgICAgIHNlbGYuc2VhcmNoQWpheEluaXQoKTsKCiAgICAgICAgICAgIHNlbGYubW9ydGdhZ2VDYWxjdWxhdG9yKCk7CgogICAgICAgICAgICBzZWxmLnN1Ym1pdFByb3BlcnR5KCk7CgogICAgICAgICAgICBzZWxmLmxpc3RpbmdEZXRhaWwoKTsKCiAgICAgICAgICAgIHNlbGYuZmlsdGVyTGlzdGluZ0ZuYygpOwoKICAgICAgICAgICAgc2VsZi51c2VyTG9naW5SZWdpc3RlcigpOwoKICAgICAgICAgICAgc2VsZi5saXN0aW5nQnRuRmlsdGVyKCk7CgogICAgICAgICAgICBzZWxmLmNoYW5nZVBhZGRpbmdUb3BDb250ZW50KCk7CgogICAgICAgICAgICBzZWxmLmRhc2hib2FyZENoYXJ0SW5pdCgpOwoKICAgICAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VQYWRkaW5nVG9wQ29udGVudCgpOwogICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHNlbGYuYWdlbnRBZ2VuY3lMb2FkTW9yZSgpOwoKICAgICAgICAgICAgc2VsZi5wcm9wZXJ0eUNvbXBhcmUoKTsKCiAgICAgICAgICAgIGlmICgkKCcucHJvcGVydGllcy1saXN0aW5nLXdyYXBwZXIubWFpbi1pdGVtcy13cmFwcGVyLCAuYWdlbnRzLWxpc3Rpbmctd3JhcHBlci5tYWluLWl0ZW1zLXdyYXBwZXIsIC5hZ2VuY2llcy1saXN0aW5nLXdyYXBwZXIubWFpbi1pdGVtcy13cmFwcGVyJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2hhbmdlJywgJ2Zvcm0uZmlsdGVyLWxpc3RpbmctZm9ybSBpbnB1dCwgZm9ybS5maWx0ZXItbGlzdGluZy1mb3JtIHNlbGVjdCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybSA9ICQodGhpcykuY2xvc2VzdCgnZm9ybS5maWx0ZXItbGlzdGluZy1mb3JtJyk7CiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS50cmlnZ2VyKCdzdWJtaXQnKTsKICAgICAgICAgICAgICAgICAgICB9LCAyMDApOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ3N1Ym1pdCcsICdmb3JtLmZpbHRlci1saXN0aW5nLWZvcm0nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAkKHRoaXMpLmF0dHIoJ2FjdGlvbicpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybURhdGEgPSAkKHRoaXMpLmZpbmQoIjppbnB1dCIpLmZpbHRlcihmdW5jdGlvbihpbmRleCwgZWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChlbGVtZW50KS52YWwoKSAhPSAnJzsKICAgICAgICAgICAgICAgICAgICB9KS5zZXJpYWxpemUoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJyYnICsgZm9ybURhdGE7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJz8nICsgZm9ybURhdGE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3BlcnRpZXNHZXRQYWdlKHVybCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gU29ydCBBY3Rpb24KICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjaGFuZ2UnLCAnZm9ybS5wcm9wZXJ0aWVzLW9yZGVyaW5nIHNlbGVjdC5vcmRlcmJ5JywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAkKCdmb3JtLnByb3BlcnRpZXMtb3JkZXJpbmcnKS50cmlnZ2VyKCdzdWJtaXQnKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdzdWJtaXQnLCAnZm9ybS5wcm9wZXJ0aWVzLW9yZGVyaW5nJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAkKHRoaXMpLmF0dHIoJ2FjdGlvbicpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybURhdGEgPSAkKHRoaXMpLmZpbmQoIjppbnB1dCIpLmZpbHRlcihmdW5jdGlvbihpbmRleCwgZWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChlbGVtZW50KS52YWwoKSAhPSAnJzsKICAgICAgICAgICAgICAgICAgICB9KS5zZXJpYWxpemUoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJyYnICsgZm9ybURhdGE7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJz8nICsgZm9ybURhdGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHNlbGYucHJvcGVydGllc0dldFBhZ2UodXJsKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyBkaXNwbGF5IG1vZGUKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjaGFuZ2UnLCAnZm9ybS5wcm9wZXJ0aWVzLWRpc3BsYXktbW9kZSBpbnB1dCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgJCgnZm9ybS5wcm9wZXJ0aWVzLWRpc3BsYXktbW9kZScpLnRyaWdnZXIoJ3N1Ym1pdCcpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ3N1Ym1pdCcsICdmb3JtLnByb3BlcnRpZXMtZGlzcGxheS1tb2RlJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAkKHRoaXMpLmF0dHIoJ2FjdGlvbicpOwoKICAgICAgICAgICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJz8nKSAhPSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAnJicgKyAkKHRoaXMpLnNlcmlhbGl6ZSgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybCArICc/JyArICQodGhpcykuc2VyaWFsaXplKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHNlbGYucHJvcGVydGllc0dldFBhZ2UodXJsKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5hZHZhbmNlLXNlYXJjaC1idG4nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5zZWFyY2gtZm9ybS1pbm5lcicpLmZpbmQoJy5hZHZhbmNlLXNlYXJjaC13cmFwcGVyLWZpZWxkcycpLnJlbW92ZUNsYXNzKCdvdmVyZmxvdy12aXNpYmxlJykuc2xpZGVUb2dnbGUoJ2Zhc3QnLCAnc3dpbmcnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ292ZXJmbG93LXZpc2libGUnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdvdmVyZmxvdy12aXNpYmxlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvLyBhamF4IHBhZ2luYXRpb24KICAgICAgICAgICAgaWYgKCQoJy5hamF4LXBhZ2luYXRpb24nKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHNlbGYuYWpheFBhZ2luYXRpb25Mb2FkKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkKCcucGFnZS10ZW1wbGF0ZS1wYWdlLWRhc2hib2FyZCAuc2lkZWJhci13cmFwcGVyOm5vdCgub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyKSA+IC5zaWRlYmFyLXJpZ2h0LCAucGFnZS10ZW1wbGF0ZS1wYWdlLWRhc2hib2FyZCAuc2lkZWJhci13cmFwcGVyOm5vdCgub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyKSA+IC5zaWRlYmFyLWxlZnQnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHZhciBwcyA9IG5ldyBQZXJmZWN0U2Nyb2xsYmFyKCcucGFnZS10ZW1wbGF0ZS1wYWdlLWRhc2hib2FyZCAuc2lkZWJhci13cmFwcGVyOm5vdCgub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyKSA+IC5zaWRlYmFyLXJpZ2h0LCAucGFnZS10ZW1wbGF0ZS1wYWdlLWRhc2hib2FyZCAuc2lkZWJhci13cmFwcGVyOm5vdCgub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyKSA+IC5zaWRlYmFyLWxlZnQnLCB7CiAgICAgICAgICAgICAgICAgICAgd2hlZWxQcm9wYWdhdGlvbjogdHJ1ZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gZmlsdGVyIGZpeGVkCiAgICAgICAgICAgIGlmICgkKCcucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC5pbm5lcicpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgdmFyIHBzID0gbmV3IFBlcmZlY3RTY3JvbGxiYXIoJy5wcm9wZXJ0aWVzLWZpbHRlci1zaWRlYmFyLXdyYXBwZXIgLmlubmVyJywgewogICAgICAgICAgICAgICAgICAgIHdoZWVsUHJvcGFnYXRpb246IHRydWUKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbGYuZ2FsbGVyeVByb3BlcnkoKTsKCiAgICAgICAgICAgICQoJy5idG4tc2VuZC1tYWlsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJCgnZm9ybS5jb250YWN0LWZvcm0td3JhcHBlcicpOwogICAgICAgICAgICAgICAgaWYgKHRhcmdldC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkKCdodG1sLGJvZHknKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiB0YXJnZXQub2Zmc2V0KCkudG9wIC0gMTAwCiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdhZnRlcl9uZWFyYnlfeWVscF9jb250ZW50JywgZnVuY3Rpb24oZSwgJHRoaXMsIGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmICghZGF0YS5zdGF0dXMgJiYgJCgnLnByb3BlcnR5LXNpbmdsZS1sYXlvdXQnKS5oYXNDbGFzcygncHJvcGVydHktc2luZ2xlLXY1JykpIHsKICAgICAgICAgICAgICAgICAgICAkKCdhW2hyZWY9IiNwcm9wZXJ0eS1zaW5nbGUtbmVhcmJ5X3llbHAiXScpLnBhcmVudCgpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICQoJyNwcm9wZXJ0eS1zaW5nbGUtbmVhcmJ5X3llbHAnKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignYWZ0ZXJfbmVhcmJ5X2dvb2dsZV9wbGFjZV9jb250ZW50JywgZnVuY3Rpb24oZSwgJHRoaXMsIGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmICghZGF0YS5zdGF0dXMgJiYgJCgnLnByb3BlcnR5LXNpbmdsZS1sYXlvdXQnKS5oYXNDbGFzcygncHJvcGVydHktc2luZ2xlLXY1JykpIHsKICAgICAgICAgICAgICAgICAgICAkKCdhW2hyZWY9IiNwcm9wZXJ0eS1zaW5nbGUtbmVhcmJ5X2dvb2dsZV9wbGFjZXMiXScpLnBhcmVudCgpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICQoJyNwcm9wZXJ0eS1zaW5nbGUtbmVhcmJ5X2dvb2dsZV9wbGFjZXMnKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignYWZ0ZXJfd2Fsa19zY29yZV9jb250ZW50JywgZnVuY3Rpb24oZSwgJHRoaXMsIGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmICghZGF0YS5zdGF0dXMgJiYgJCgnLnByb3BlcnR5LXNpbmdsZS1sYXlvdXQnKS5oYXNDbGFzcygncHJvcGVydHktc2luZ2xlLXY1JykpIHsKICAgICAgICAgICAgICAgICAgICAkKCdhW2hyZWY9IiNwcm9wZXJ0eS1zaW5nbGUtd2Fsa19zY29yZSJdJykucGFyZW50KCkucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgJCgnI3Byb3BlcnR5LXNpbmdsZS13YWxrX3Njb3JlJykucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgc2VsZWN0MkluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyBzZWxlY3QyCiAgICAgICAgICAgIGlmICgkLmlzRnVuY3Rpb24oJC5mbi5zZWxlY3QyKSAmJiB0eXBlb2Ygd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0Ml9hcmdzID0gd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHM7CiAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ2FsbG93Q2xlYXInXSA9IHRydWU7CiAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJ10gPSAxMDsKCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdwX3JlYWxlc3RhdGVfc2VsZWN0Ml9vcHRzLmxhbmd1YWdlX3Jlc3VsdCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ2xhbmd1YWdlJ10gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vUmVzdWx0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHMubGFuZ3VhZ2VfcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBmaWx0ZXJfc2VsZWN0Ml9hcmdzID0gc2VsZWN0Ml9hcmdzOwoKCgogICAgICAgICAgICAgICAgc2VsZWN0Ml9hcmdzWydhbGxvd0NsZWFyJ10gPSBmYWxzZTsKICAgICAgICAgICAgICAgIHNlbGVjdDJfYXJnc1sndGhlbWUnXSA9ICdkZWZhdWx0JzsKCiAgICAgICAgICAgICAgICB2YXIgcmVnaXN0ZXJfc2VsZWN0Ml9hcmdzID0gc2VsZWN0Ml9hcmdzOwogICAgICAgICAgICAgICAgcmVnaXN0ZXJfc2VsZWN0Ml9hcmdzWydtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCddID0gLTE7CiAgICAgICAgICAgICAgICAvLyBmaWx0ZXIKCiAgICAgICAgICAgICAgICAkKCdzZWxlY3RbbmFtZT1lbWFpbF9mcmVxdWVuY3ldJykuc2VsZWN0MihzZWxlY3QyX2FyZ3MpOwogICAgICAgICAgICAgICAgJCgnLnJlZ2lzdGVyLWZvcm0gc2VsZWN0Jykuc2VsZWN0MihyZWdpc3Rlcl9zZWxlY3QyX2FyZ3MpOwoKICAgICAgICAgICAgICAgIC8vIGZpeCBmb3Igd2lkZ2V0IHNlYXJjaAogICAgICAgICAgICAgICAgaWYgKCQoJy53aWRnZXQtcHJvcGVydHktc2VhcmNoLWZvcm0uaG9yaXpvbnRhbCBzZWxlY3QnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfc2VsZWN0Ml9hcmdzLnRoZW1lID0gJ2RlZmF1bHQgY3VzdG9taXplci1zZWFyY2gnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkKCcubGF5b3V0LXR5cGUtaGFsZi1tYXAgLndpZGdldC1wcm9wZXJ0eS1zZWFyY2gtZm9ybS5ob3Jpem9udGFsIHNlbGVjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIGZpbHRlcl9zZWxlY3QyX2FyZ3MudGhlbWUgPSAnZGVmYXVsdCBjdXN0b21pemVyLXNlYXJjaCBjdXN0b21pemVyLXNlYXJjaC1oYWxwbWFwJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmaWx0ZXJfc2VsZWN0Ml9hcmdzWydhbGxvd0NsZWFyJ10gPSB0cnVlOwogICAgICAgICAgICAgICAgJCgnLmZpbHRlci1saXN0aW5nLWZvcm0gc2VsZWN0Jykuc2VsZWN0MihmaWx0ZXJfc2VsZWN0Ml9hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc2VhcmNoQWpheEluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoJC5pc0Z1bmN0aW9uKCQuZm4udHlwZWFoZWFkKSkgewogICAgICAgICAgICAgICAgJCgnLmFwdXMtYXV0b2NvbXBsZWF0ZS1pbnB1dCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy50eXBlYWhlYWQoewogICAgICAgICAgICAgICAgICAgICAgICAnaGludCc6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICdoaWdobGlnaHQnOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAnbWluTGVuZ3RoJzogMiwKICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbWl0JzogMTAKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IGZ1bmN0aW9uKHF1ZXJ5LCBwcm9jZXNzU3luYywgcHJvY2Vzc0FzeW5jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU3luYyhbaG9tZW9fcHJvcGVydHlfb3B0cy5lbXB0eV9tc2ddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy50d2l0dGVyLXR5cGVhaGVhZCcpLmFkZENsYXNzKCdsb2FkaW5nJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCR0aGlzLmNsb3Nlc3QoJ2Zvcm0nKS5zZXJpYWxpemVBcnJheSgpLCBmdW5jdGlvbihpLCBmaWVsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tmaWVsZC5uYW1lXSA9IGZpZWxkLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFqYXh1cmwgPSBob21lb19wcm9wZXJ0eV9vcHRzLmFqYXh1cmw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhamF4dXJsID0gd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnaG9tZW9fYXV0b2NvbXBsZXRlX3NlYXJjaF9wcm9wZXJ0aWVzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhamF4dXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdHRVQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlYXJjaCc6IHF1ZXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ2hvbWVvX2F1dG9jb21wbGV0ZV9zZWFyY2hfcHJvcGVydGllcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJzogdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGpzb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLnR3aXR0ZXItdHlwZWFoZWFkJykucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLmhhcy1zdWdnZXN0aW9uJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0FzeW5jKGpzb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5OiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImVtcHR5LW1lc3NhZ2UiPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9tZW9fcHJvcGVydHlfb3B0cy5lbXB0eV9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uam9pbignXG4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb246IEhhbmRsZWJhcnMuY29tcGlsZShob21lb19wcm9wZXJ0eV9vcHRzLnRlbXBsYXRlKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICR0aGlzLm9uKCd0eXBlYWhlYWQ6c2VsZWN0ZWQnLCBmdW5jdGlvbihlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5hcHVzLWF1dG9jb21wbGVhdGUtaW5wdXQnKS52YWwoZGF0YS50aXRsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG1vcnRnYWdlQ2FsY3VsYXRvcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoJyNidG5fbW9ydGdhZ2VfZ2V0X3Jlc3VsdHMnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5X3ByaWNlID0gJCgnI2FwdXNfbW9ydGdhZ2VfcHJvcGVydHlfcHJpY2UnKS52YWwoKTsKICAgICAgICAgICAgICAgIHZhciBkZXBvc2l0ID0gJCgnI2FwdXNfbW9ydGdhZ2VfZGVwb3NpdCcpLnZhbCgpOwogICAgICAgICAgICAgICAgdmFyIGludGVyZXN0X3JhdGUgPSBwYXJzZUZsb2F0KCQoJyNhcHVzX21vcnRnYWdlX2ludGVyZXN0X3JhdGUnKS52YWwoKSwgMTApIC8gMTAwOwogICAgICAgICAgICAgICAgdmFyIHllYXJzID0gcGFyc2VJbnQoJCgnI2FwdXNfbW9ydGdhZ2VfdGVybV95ZWFycycpLnZhbCgpLCAxMCk7CgoKICAgICAgICAgICAgICAgIHZhciBpbnRlcmVzdF9yYXRlX21vbnRoID0gaW50ZXJlc3RfcmF0ZSAvIDEyOwogICAgICAgICAgICAgICAgdmFyIG5icF9tb250aCA9IHllYXJzICogMTI7CgogICAgICAgICAgICAgICAgdmFyIGxvYW5fYW1vdW50ID0gcHJvcGVydHlfcHJpY2UgLSBkZXBvc2l0OwogICAgICAgICAgICAgICAgdmFyIG1vbnRobHlfcGF5bWVudCA9IHBhcnNlRmxvYXQoKGxvYW5fYW1vdW50ICogaW50ZXJlc3RfcmF0ZV9tb250aCkgLyAoMSAtIE1hdGgucG93KDEgKyBpbnRlcmVzdF9yYXRlX21vbnRoLCAtbmJwX21vbnRoKSkpLnRvRml4ZWQoMik7CgogICAgICAgICAgICAgICAgaWYgKG1vbnRobHlfcGF5bWVudCA9PT0gJ05hTicpIHsKICAgICAgICAgICAgICAgICAgICBtb250aGx5X3BheW1lbnQgPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICQoJy5hcHVzX21vcnRnYWdlX3Jlc3VsdHMnKS5odG1sKGhvbWVvX3Byb3BlcnR5X29wdHMubW9udGhseV90ZXh0ICsgaG9tZW9fcHJvcGVydHlfb3B0cy5jdXJyZW5jeSArIG1vbnRobHlfcGF5bWVudCk7CgogICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGRhc2hib2FyZENoYXJ0SW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgdmFyICR0aGlzID0gJCgnI2Rhc2hib2FyZF9wcm9wZXJ0eV9jaGFydF93cmFwcGVyJyk7CiAgICAgICAgICAgIGlmICgkdGhpcy5sZW5ndGggPD0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzZWxlY3QyCiAgICAgICAgICAgIGlmICgkLmlzRnVuY3Rpb24oJC5mbi5zZWxlY3QyKSAmJiB0eXBlb2Ygd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0Ml9hcmdzID0gd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHM7CiAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ2FsbG93Q2xlYXInXSA9IGZhbHNlOwogICAgICAgICAgICAgICAgc2VsZWN0Ml9hcmdzWydtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCddID0gMTA7CgogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3cF9yZWFsZXN0YXRlX3NlbGVjdDJfb3B0cy5sYW5ndWFnZV9yZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0Ml9hcmdzWydsYW5ndWFnZSddID0gewogICAgICAgICAgICAgICAgICAgICAgICBub1Jlc3VsdHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdwX3JlYWxlc3RhdGVfc2VsZWN0Ml9vcHRzLmxhbmd1YWdlX3Jlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc2VsZWN0Ml9hcmdzWyd3aWR0aCddID0gJzEwMCUnOwoKICAgICAgICAgICAgICAgICQoJy5zdGF0cy1ncmFwaC1zZWFyY2gtZm9ybSBzZWxlY3QnKS5zZWxlY3QyKHNlbGVjdDJfYXJncyk7CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICB2YXIgcHJvcGVydHlfaWQgPSAkdGhpcy5kYXRhKCdwcm9wZXJ0eV9pZCcpOwogICAgICAgICAgICB2YXIgbmJfZGF5cyA9ICR0aGlzLmRhdGEoJ25iX2RheXMnKTsKICAgICAgICAgICAgc2VsZi5kYXNoYm9hcmRDaGFydEFqYXhJbml0KCR0aGlzLCBwcm9wZXJ0eV9pZCwgbmJfZGF5cyk7CgogICAgICAgICAgICAkKCdmb3JtLnN0YXRzLWdyYXBoLXNlYXJjaC1mb3JtIHNlbGVjdFtuYW1lPSJwcm9wZXJ0eV9pZCJdJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnZm9ybS5zdGF0cy1ncmFwaC1zZWFyY2gtZm9ybScpLnRyaWdnZXIoJ3N1Ym1pdCcpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJ2Zvcm0uc3RhdHMtZ3JhcGgtc2VhcmNoLWZvcm0gc2VsZWN0W25hbWU9Im5iX2RheXMiXScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJ2Zvcm0uc3RhdHMtZ3JhcGgtc2VhcmNoLWZvcm0nKS50cmlnZ2VyKCdzdWJtaXQnKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCdmb3JtLnN0YXRzLWdyYXBoLXNlYXJjaC1mb3JtJykub24oJ3N1Ym1pdCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eV9pZCA9ICQoJ2Zvcm0uc3RhdHMtZ3JhcGgtc2VhcmNoLWZvcm0gc2VsZWN0W25hbWU9InByb3BlcnR5X2lkIl0nKS52YWwoKTsKICAgICAgICAgICAgICAgIHZhciBuYl9kYXlzID0gJCgnZm9ybS5zdGF0cy1ncmFwaC1zZWFyY2gtZm9ybSBzZWxlY3RbbmFtZT0ibmJfZGF5cyJdJykudmFsKCk7CiAgICAgICAgICAgICAgICBzZWxmLmRhc2hib2FyZENoYXJ0QWpheEluaXQoJHRoaXMsIHByb3BlcnR5X2lkLCBuYl9kYXlzKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBkYXNoYm9hcmRDaGFydEFqYXhJbml0OiBmdW5jdGlvbigkdGhpcywgcHJvcGVydHlfaWQsIG5iX2RheXMpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICBpZiAoJHRoaXMubGVuZ3RoIDw9IDApIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHRoaXMuaGFzQ2xhc3MoJ2xvYWRpbmcnKSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7CgogICAgICAgICAgICB2YXIgYWpheHVybCA9IGhvbWVvX3Byb3BlcnR5X29wdHMuYWpheHVybDsKICAgICAgICAgICAgaWYgKHR5cGVvZiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIGFqYXh1cmwgPSB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludC50b1N0cmluZygpLnJlcGxhY2UoJyUlZW5kcG9pbnQlJScsICd3cF9yZWFsZXN0YXRlX2dldF9wcm9wZXJ0eV9jaGFydCcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAgdXJsOiBhamF4dXJsLAogICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICd3cF9yZWFsZXN0YXRlX2dldF9wcm9wZXJ0eV9jaGFydCcsCiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfaWQ6IHByb3BlcnR5X2lkLAogICAgICAgICAgICAgICAgICAgIG5iX2RheXM6IG5iX2RheXMsCiAgICAgICAgICAgICAgICAgICAgbm9uY2U6ICR0aGlzLmRhdGEoJ25vbmNlJyksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ2Vycm9yJykgewogICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY3R4ID0gJHRoaXMuZ2V0KDApLmdldENvbnRleHQoIjJkIik7CgogICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gewogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHJlc3BvbnNlLnN0YXRzX2xhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldHM6IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcmVzcG9uc2Uuc3RhdHNfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcmVzcG9uc2UuYmdfY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogcmVzcG9uc2UuYm9yZGVyX2NvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiByZXNwb25zZS5zdGF0c192YWx1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgXQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gewogICAgICAgICAgICAgICAgICAgICAgICAvL0Jvb2xlYW4gLSBXaGV0aGVyIHRoZSBzY2FsZSBzaG91bGQgc3RhcnQgYXQgemVybywgb3IgYW4gb3JkZXIgb2YgbWFnbml0dWRlIGRvd24gZnJvbSB0aGUgbG93ZXN0IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlQmVnaW5BdFplcm86IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQm9vbGVhbiAtIFdoZXRoZXIgZ3JpZCBsaW5lcyBhcmUgc2hvd24gYWNyb3NzIHRoZSBjaGFydAogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVNob3dHcmlkTGluZXM6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAvL1N0cmluZyAtIENvbG91ciBvZiB0aGUgZ3JpZCBsaW5lcwogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZUdyaWRMaW5lQ29sb3I6ICJyZ2JhKDAsMCwwLC4wNSkiLAogICAgICAgICAgICAgICAgICAgICAgICAvL051bWJlciAtIFdpZHRoIG9mIHRoZSBncmlkIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlR3JpZExpbmVXaWR0aDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgLy9Cb29sZWFuIC0gV2hldGhlciB0byBzaG93IGhvcml6b250YWwgbGluZXMgKGV4Y2VwdCBYIGF4aXMpCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlU2hvd0hvcml6b250YWxMaW5lczogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgLy9Cb29sZWFuIC0gV2hldGhlciB0byBzaG93IHZlcnRpY2FsIGxpbmVzIChleGNlcHQgWSBheGlzKQogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVNob3dWZXJ0aWNhbExpbmVzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAvL0Jvb2xlYW4gLSBJZiB0aGVyZSBpcyBhIHN0cm9rZSBvbiBlYWNoIGJhcgogICAgICAgICAgICAgICAgICAgICAgICBiYXJTaG93U3Ryb2tlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgLy9OdW1iZXIgLSBQaXhlbCB3aWR0aCBvZiB0aGUgYmFyIHN0cm9rZQogICAgICAgICAgICAgICAgICAgICAgICBiYXJTdHJva2VXaWR0aDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgLy9OdW1iZXIgLSBTcGFjaW5nIGJldHdlZW4gZWFjaCBvZiB0aGUgWCB2YWx1ZSBzZXRzCiAgICAgICAgICAgICAgICAgICAgICAgIGJhclZhbHVlU3BhY2luZzogNSwKICAgICAgICAgICAgICAgICAgICAgICAgLy9OdW1iZXIgLSBTcGFjaW5nIGJldHdlZW4gZGF0YSBzZXRzIHdpdGhpbiBYIHZhbHVlcwogICAgICAgICAgICAgICAgICAgICAgICBiYXJEYXRhc2V0U3BhY2luZzogMSwKICAgICAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAneC1heGlzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcm5lclJhZGl1czogNAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWxmLm15QmFyQ2hhcnQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubXlCYXJDaGFydC5kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzZWxmLm15QmFyQ2hhcnQgPSBuZXcgQ2hhcnQoY3R4LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHJlc3BvbnNlLmNoYXJ0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgc3VibWl0UHJvcGVydHk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAndWwuc3VibWl0LXByb3BlcnR5LWhlYWRpbmcgbGkgYScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHZhciBocmVmID0gJCh0aGlzKS5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgICAgICBpZiAoJChocmVmKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkKCd1bC5zdWJtaXQtcHJvcGVydHktaGVhZGluZyBsaScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ2xpJykuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICQoJy5iZWZvcmUtZ3JvdXAtcm93JykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICQoaHJlZikuYWRkQ2xhc3MoJ2FjdGl2ZScpOwoKICAgICAgICAgICAgICAgICAgICAkKCJpbnB1dCIpLnRyaWdnZXIoInB4ZzpzaW1wbGVyZWZyZXNobWFwIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5qb2Itc3VibWlzc2lvbi1wcmV2aW91cy1idG4sIC5qb2Itc3VibWlzc2lvbi1uZXh0LWJ0bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHZhciBpbmRleCA9ICQodGhpcykuZGF0YSgnaW5kZXgnKTsKICAgICAgICAgICAgICAgIGlmICgkKCcuYmVmb3JlLWdyb3VwLXJvdy0nICsgaW5kZXgpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICQoJy5iZWZvcmUtZ3JvdXAtcm93JykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICQoJy5iZWZvcmUtZ3JvdXAtcm93LScgKyBpbmRleCkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwoKICAgICAgICAgICAgICAgICAgICAkKCcuc3VibWl0LXByb3BlcnR5LWhlYWRpbmcgbGknKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgJCgnLnN1Ym1pdC1wcm9wZXJ0eS1oZWFkaW5nLScgKyBpbmRleCkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwoKICAgICAgICAgICAgICAgICAgICAkKCJpbnB1dCIpLnRyaWdnZXIoInB4ZzpzaW1wbGVyZWZyZXNobWFwIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgY2hhbmdlUGFkZGluZ1RvcENvbnRlbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPj0gMTIwMCkgewogICAgICAgICAgICAgICAgdmFyIGhlYWRlcl9oID0gJCgnI2FwdXMtaGVhZGVyJykub3V0ZXJIZWlnaHQoKTsKICAgICAgICAgICAgICAgICQoJyNhcHVzLW1haW4tY29udGVudCcpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmctdG9wJzogMAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkKCdib2R5LnBhZ2UtdGVtcGxhdGUtcGFnZS1kYXNoYm9hcmQgI2FwdXMtbWFpbi1jb250ZW50JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAncGFkZGluZy10b3AnOiBoZWFkZXJfaAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaGVhZGVyX2ggPSAkKCcjYXB1cy1oZWFkZXItbW9iaWxlJykub3V0ZXJIZWlnaHQoKTsKICAgICAgICAgICAgICAgICQoJyNhcHVzLW1haW4tY29udGVudCcpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmctdG9wJzogaGVhZGVyX2gKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJCgnI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMnKS5pcygnLmZpeC1tYXAnKSkgewogICAgICAgICAgICAgICAgJCgnI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICd0b3AnOiBoZWFkZXJfaCwKICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJ2NhbGMoMTAwdmggLSAnICsgaGVhZGVyX2ggKyAncHgpJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAvLyBmaWx0ZXIgZm9yIGhhbGYgMwogICAgICAgICAgICAgICAgaWYgKCQod2luZG93KS53aWR0aCgpID49IDEyMDApIHsKICAgICAgICAgICAgICAgICAgICAkKCcubGF5b3V0LXR5cGUtaGFsZi1tYXAtdjMgLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlciAnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICAndG9wJzogaGVhZGVyX2gsCiAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnY2FsYygxMDB2aCAtICcgKyBoZWFkZXJfaCArICdweCknCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgJCgnI2FwdXMtbWFpbi1jb250ZW50JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmctdG9wJzogaGVhZGVyX2gKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBmaXggZm9yIGhhbGYgbWFwCiAgICAgICAgICAgICQoJy5sYXlvdXQtdHlwZS1oYWxmLW1hcCAuZmlsdGVyLXNpZGViYXInKS5jc3MoewogICAgICAgICAgICAgICAgJ3BhZGRpbmctdG9wJzogaGVhZGVyX2ggKyAzMAogICAgICAgICAgICB9KTsKICAgICAgICAgICAgLy8gJCgnLmxheW91dC10eXBlLWhhbGYtbWFwIC5maWx0ZXItc2Nyb2xsJykucGVyZmVjdFNjcm9sbGJhcigpOwogICAgICAgICAgICBpZiAoJCgnLmxheW91dC10eXBlLWhhbGYtbWFwIC5maWx0ZXItc2Nyb2xsJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB2YXIgcHMgPSBuZXcgUGVyZmVjdFNjcm9sbGJhcignLmxheW91dC10eXBlLWhhbGYtbWFwIC5maWx0ZXItc2Nyb2xsJywgewogICAgICAgICAgICAgICAgICAgIHdoZWVsUHJvcGFnYXRpb246IHRydWUKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIG9mZmNhbnZhcy1maWx0ZXItc2lkZWJhciAKICAgICAgICAgICAgJCgnLm9mZmNhbnZhcy1maWx0ZXItc2lkZWJhcicpLmNzcyh7CiAgICAgICAgICAgICAgICAncGFkZGluZy10b3AnOiBoZWFkZXJfaCArIDEwCiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgYWdlbnRBZ2VuY3lMb2FkTW9yZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYWpheC1wcm9wZXJ0aWVzLXBhZ2luYXRpb24gLmFwdXMtbG9hZG1vcmUtYnRuJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOwoKICAgICAgICAgICAgICAgIHZhciBhamF4dXJsID0gaG9tZW9fcHJvcGVydHlfb3B0cy5hamF4dXJsOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYWpheHVybCA9IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ2hvbWVvX2dldF9hamF4X3Byb3BlcnRpZXNfbG9hZF9tb3JlJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXh1cmwsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdob21lb19nZXRfYWpheF9wcm9wZXJ0aWVzX2xvYWRfbW9yZScsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VkOiAkdGhpcy5kYXRhKCdwYWdlZCcpLAogICAgICAgICAgICAgICAgICAgICAgICBwb3N0X2lkOiAkdGhpcy5kYXRhKCdwb3N0X2lkJyksCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICR0aGlzLmRhdGEoJ3R5cGUnKSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5hZ2VudC1hZ2VuY3ktZGV0YWlsLXByb3BlcnRpZXMnKS5maW5kKCcucm93JykuYXBwZW5kKGRhdGEub3V0cHV0KTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy5kYXRhKCdwYWdlZCcsIGRhdGEucGFnZWQpOwogICAgICAgICAgICAgICAgICAgIGlmICghZGF0YS5sb2FkX21vcmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLmFqYXgtcHJvcGVydGllcy1wYWdpbmF0aW9uJykuYWRkQ2xhc3MoJ2FsbC1wcm9wZXJ0aWVzLWxvYWRlZCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYWpheC1hZ2VudHMtcGFnaW5hdGlvbiAuYXB1cy1sb2FkbW9yZS1idG4nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwoKICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7CgogICAgICAgICAgICAgICAgdmFyIGFqYXh1cmwgPSBob21lb19wcm9wZXJ0eV9vcHRzLmFqYXh1cmw7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgIHZhciBhamF4dXJsID0gd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnaG9tZW9fZ2V0X2FqYXhfYWdlbnRzX2xvYWRfbW9yZScpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiBhamF4dXJsLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnaG9tZW9fZ2V0X2FqYXhfYWdlbnRzX2xvYWRfbW9yZScsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VkOiAkdGhpcy5kYXRhKCdwYWdlZCcpLAogICAgICAgICAgICAgICAgICAgICAgICBwb3N0X2lkOiAkdGhpcy5kYXRhKCdwb3N0X2lkJyksCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcuYWdlbnQtZGV0YWlsLWFnZW50cycpLmZpbmQoJy5yb3cnKS5hcHBlbmQoZGF0YS5vdXRwdXQpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLmRhdGEoJ3BhZ2VkJywgZGF0YS5wYWdlZCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhLmxvYWRfbW9yZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcuYWpheC1hZ2VudHMtcGFnaW5hdGlvbicpLmFkZENsYXNzKCdhbGwtcHJvcGVydGllcy1sb2FkZWQnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBwcm9wZXJ0eUNoYW5nZU1hcmdpblRvcEFmZml4OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGFmZml4X2hlaWdodCA9IDA7CiAgICAgICAgICAgIC8vaWYgKCQod2luZG93KS53aWR0aCgpID4gOTkxKSB7CiAgICAgICAgICAgIGlmICgkKCcucGFuZWwtYWZmaXgnKS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBhZmZpeF9oZWlnaHQgPSAkKCcucGFuZWwtYWZmaXgnKS5vdXRlckhlaWdodCgpOwogICAgICAgICAgICAgICAgJCgnLnBhbmVsLWFmZml4LXdyYXBwZXInKS5jc3MoewogICAgICAgICAgICAgICAgICAgICdoZWlnaHQnOiBhZmZpeF9oZWlnaHQKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vfQogICAgICAgICAgICByZXR1cm4gYWZmaXhfaGVpZ2h0OwogICAgICAgIH0sCiAgICAgICAgbGlzdGluZ0RldGFpbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgICAgICAgIC8vIHN0aWNreSB0YWJzCiAgICAgICAgICAgIHZhciBhZmZpeF9oZWlnaHQgPSAwOwogICAgICAgICAgICB2YXIgYWZmaXhfaGVpZ2h0X3RvcCA9IDA7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBhZmZpeF9oZWlnaHQgPSBhZmZpeF9oZWlnaHRfdG9wID0gc2VsZi5wcm9wZXJ0eUNoYW5nZU1hcmdpblRvcEFmZml4KCk7CiAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGFmZml4X2hlaWdodCA9IGFmZml4X2hlaWdodF90b3AgPSBzZWxmLnByb3BlcnR5Q2hhbmdlTWFyZ2luVG9wQWZmaXgoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSA+PSAxMjAwKSB7CiAgICAgICAgICAgICAgICAvL0Z1bmN0aW9uIGZyb20gQmx1dGhlbWVzLCBsZXRzIHlvdSBhZGQgbGkgZWxlbWFudHMgdG8gYWZmaXggb2JqZWN0IHdpdGhvdXQgaGF2aW5nIHRvIGFsdGVyIGFuZCBkYXRhIGF0dHJpYnV0ZXMgc2V0IG91dCBieSBib290c3RyYXAKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSB5b3VyIGVsZW1lbnRzIGhlcmUKICAgICAgICAgICAgICAgICAgICB2YXIgc3RpY2t5RWxlbWVudCA9ICcucGFuZWwtYWZmaXgnLCAvLyB0aGUgZWxlbWVudCB5b3Ugd2FudCB0byBtYWtlIHN0aWNreQogICAgICAgICAgICAgICAgICAgICAgICBib3R0b21FbGVtZW50ID0gJyNhcHVzLWZvb3Rlcic7IC8vIHRoZSBib3R0b20gZWxlbWVudCB3aGVyZSB5b3Ugd2FudCB0aGUgc3RpY2t5IGVsZW1lbnQgdG8gc3RvcCAodXN1YWxseSB0aGUgZm9vdGVyKSAKCiAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSBlbGVtZW50IGV4aXN0cyBvbiB0aGUgcGFnZSBiZWZvcmUgdHJ5aW5nIHRvIGluaXRhbGl6ZQogICAgICAgICAgICAgICAgICAgIGlmICgkKHN0aWNreUVsZW1lbnQpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHN0aWNreUVsZW1lbnQpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZGVyX2hlaWdodCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPj0gMTIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCcubWFpbi1zdGlja3ktaGVhZGVyJykubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfaGVpZ2h0ID0gJCgnLm1haW4tc3RpY2t5LWhlYWRlcicpLm91dGVySGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZml4X2hlaWdodF90b3AgPSBhZmZpeF9oZWlnaHQgKyBoZWFkZXJfaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2hlaWdodCA9ICQoJyNhcHVzLWhlYWRlci1tb2JpbGUnKS5vdXRlckhlaWdodCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZml4X2hlaWdodF90b3AgPSBhZmZpeF9oZWlnaHQgKyBoZWFkZXJfaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9oZWlnaHQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZmaXhfaGVpZ2h0X3RvcCA9IGFmZml4X2hlaWdodF90b3AgKyAxMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxldCdzIHNhdmUgc29tZSBtZXNzeSBjb2RlIGluIGNsZWFuIHZhcmlhYmxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBzaG91bGQgd2Ugc3RhcnQgYWZmaXhpbmc/ICh0aGUgYW1vdW50IG9mIHBpeGVscyB0byB0aGUgdG9wIGZyb20gdGhlIGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZnJvbVRvcCA9ICQodGhpcykub2Zmc2V0KCkudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIGlzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQ/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUJvdHRvbSA9ICQoZG9jdW1lbnQpLmhlaWdodCgpIC0gKCQodGhpcykub2Zmc2V0KCkudG9wICsgJCh0aGlzKS5vdXRlckhlaWdodCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSBzaG91bGQgd2Ugc3RvcD8gKHRoZSBhbW91bnQgb2YgcGl4ZWxzIGZyb20gdGhlIHRvcCB3aGVyZSB0aGUgYm90dG9tIGVsZW1lbnQgaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyBhZGQgdGhlIG91dGVyIGhlaWdodCBtaXNtYXRjaCB0byB0aGUgaGVpZ2h0IG9mIHRoZSBlbGVtZW50IHRvIGFjY291bnQgZm9yIHBhZGRpbmcgYW5kIGJvcmRlcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wT24gPSAoJCh0aGlzKS5vdXRlckhlaWdodCgpIC0gJCh0aGlzKS5oZWlnaHQoKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBuZWVkIHRvIGdldCBzdGlja3ksIHRoZW4gc2tpcCBpdCBzbyBpdCB3b24ndCBtZXNzIHVwIHlvdXIgbGF5b3V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZyb21Cb3R0b20gLSBzdG9wT24pID4gMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGV0J3MgcHV0IGEgc3RpY2t5IHdpZHRoIG9uIHRoZSBlbGVtZW50IGFuZCBhc3NpZ24gaXQgdG8gdGhlIHRvcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY3NzKCd3aWR0aCcsICQodGhpcykud2lkdGgoKSkuY3NzKCd0b3AnLCAwKS5jc3MoJ3Bvc2l0aW9uJywgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc2lnbiB0aGUgYWZmaXggdG8gdGhlIGVsZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFmZml4KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIGl0IHN0aWNrIHdoZXJlIHRoZSB0b3AgcGl4ZWwgb2YgdGhlIGVsZW1lbnQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZnJvbVRvcCAtIGhlYWRlcl9oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIGl0IHN0b3Agd2hlcmUgdGhlIHRvcCBwaXhlbCBvZiB0aGUgYm90dG9tIGVsZW1lbnQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogc3RvcE9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGUgYWZmaXggZ2V0J3MgY2FsbGVkIHRoZW4gbWFrZSBzdXJlIHRoZSBwb3NpdGlvbiBpcyB0aGUgZGVmYXVsdCAoZml4ZWQpIGFuZCBpdCdzIGF0IHRoZSB0b3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5vbignYWZmaXguYnMuYWZmaXgnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlYWRlcl9oZWlnaHQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPj0gMTIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoJy5tYWluLXN0aWNreS1oZWFkZXInKS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2hlaWdodCA9ICQoJy5tYWluLXN0aWNreS1oZWFkZXInKS5vdXRlckhlaWdodCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZml4X2hlaWdodF90b3AgPSBhZmZpeF9oZWlnaHQgKyBoZWFkZXJfaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2hlaWdodCA9ICQoJyNhcHVzLWhlYWRlci1tb2JpbGUnKS5vdXRlckhlaWdodCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZmaXhfaGVpZ2h0X3RvcCA9IGFmZml4X2hlaWdodCArIGhlYWRlcl9oZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfaGVpZ2h0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmZpeF9oZWlnaHRfdG9wID0gYWZmaXhfaGVpZ2h0X3RvcCArIDEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcygndG9wJywgaGVhZGVyX2hlaWdodCkuY3NzKCdwb3NpdGlvbicsIGhlYWRlcl9oZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciB0aGUgc2Nyb2xsIGV2ZW50IHNvIGl0IGFsd2F5cyBhY3RpdmF0ZXMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykudHJpZ2dlcignc2Nyb2xsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9PZmZzZXQgc2Nyb2xsc3B5IGhlaWdodCB0byBoaWdobGlnaHQgbGkgZWxlbWVudHMgYXQgZ29vZCB3aW5kb3cgaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLnNjcm9sbHNweSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogIi5oZWFkZXItdGFicy13cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBhZmZpeF9oZWlnaHRfdG9wICsgMjAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIC8vU21vb3RoIFNjcm9sbGluZyBGb3IgSW50ZXJuYWwgUGFnZSBMaW5rcwogICAgICAgICAgICAkKCcucGFuZWwtYWZmaXggYVtocmVmKj0iIyJdOm5vdChbaHJlZj0iIyJdKScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL15cLy8sICcnKSA9PSB0aGlzLnBhdGhuYW1lLnJlcGxhY2UoL15cLy8sICcnKSAmJiBsb2NhdGlvbi5ob3N0bmFtZSA9PSB0aGlzLmhvc3RuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9ICQodGhpcy5oYXNoKTsKICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXQubGVuZ3RoID8gdGFyZ2V0IDogJCgnW25hbWU9JyArIHRoaXMuaGFzaC5zbGljZSgxKSArICddJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnaHRtbCxib2R5JykuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IHRhcmdldC5vZmZzZXQoKS50b3AgLSBhZmZpeF9oZWlnaHRfdG9wCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCgoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5hZGQtYS1yZXZpZXcnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICB2YXIgJGlkID0gJCh0aGlzKS5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgICAgICBpZiAoJCgkaWQpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAkKCdodG1sLGJvZHknKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkKCRpZCkub2Zmc2V0KCkudG9wIC0gMTAwCiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5idG4tdmlldy1hbGwtcGhvdG9zJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcucHJvcGVydHktZGV0YWlsLWdhbGxlcnknKS5maW5kKCdhOmZpcnN0JykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcuYnRuLXByaW50LXByb3BlcnR5Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOwogICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5X2lkID0gJCh0aGlzKS5kYXRhKCdwcm9wZXJ0eV9pZCcpOwogICAgICAgICAgICAgICAgdmFyIG5vbmNlID0gJCh0aGlzKS5kYXRhKCdub25jZScpOwoKICAgICAgICAgICAgICAgIHZhciBhamF4dXJsID0gaG9tZW9fcHJvcGVydHlfb3B0cy5hamF4dXJsOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYWpheHVybCA9IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ2hvbWVvX2FqYXhfcHJpbnRfcHJvcGVydHknKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcHJpbnRXaW5kb3cgPSB3aW5kb3cub3BlbignJywgJ1ByaW50IE1lJywgJ3dpZHRoPTcwMCAsaGVpZ2h0PTg0MicpOwogICAgICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXh1cmwsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydHlfaWQnOiBwcm9wZXJ0eV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmNlJzogbm9uY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiAnaG9tZW9fYWpheF9wcmludF9wcm9wZXJ0eScsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsKCgogICAgICAgICAgICAgICAgICAgIHByaW50V2luZG93LmRvY3VtZW50LndyaXRlKGRhdGEpOwogICAgICAgICAgICAgICAgICAgIHByaW50V2luZG93LmRvY3VtZW50LmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRXaW5kb3cuZm9jdXMoKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgIC8vICAgICBwcmludFdpbmRvdy5wcmludCgpOwogICAgICAgICAgICAgICAgICAgIC8vIH0sIDIwMDApOwogICAgICAgICAgICAgICAgICAgIC8vIHByaW50V2luZG93LmNsb3NlKCk7CgogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGxpc3RpbmdCdG5GaWx0ZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCcuYnRuLXZpZXctbWFwJykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgJCgnI3Byb3BlcnRpZXMtZ29vZ2xlLW1hcHMnKS5yZW1vdmVDbGFzcygnaGlkZGVuLXNtJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbi14cycpOwogICAgICAgICAgICAgICAgJCgnLmNvbnRlbnQtbGlzdGluZyAucHJvcGVydGllcy1saXN0aW5nLXdyYXBwZXIsIC5jb250ZW50LWxpc3RpbmcgLmFnZW5jaWVzLWxpc3Rpbmctd3JhcHBlcicpLmFkZENsYXNzKCdoaWRkZW4tc20nKS5hZGRDbGFzcygnaGlkZGVuLXhzJyk7CiAgICAgICAgICAgICAgICAkKCcuYnRuLXZpZXctbGlzdGluZycpLnJlbW92ZUNsYXNzKCdoaWRkZW4tc20nKS5yZW1vdmVDbGFzcygnaGlkZGVuLXhzJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdoaWRkZW4tc20nKS5hZGRDbGFzcygnaGlkZGVuLXhzJyk7CiAgICAgICAgICAgICAgICAkKCcucHJvcGVydGllcy1wYWdpbmF0aW9uLXdyYXBwZXIsIC5hZ2VuY2llcy1wYWdpbmF0aW9uLXdyYXBwZXInKS5hZGRDbGFzcygncC1maXgtcGFnaW5hdGlvbicpOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykudHJpZ2dlcigncHhnOnJlZnJlc2htYXAnKTsKICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcuYnRuLXZpZXctbGlzdGluZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICQoJyNwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzJykuYWRkQ2xhc3MoJ2hpZGRlbi1zbScpLmFkZENsYXNzKCdoaWRkZW4teHMnKTsKICAgICAgICAgICAgICAgICQoJy5jb250ZW50LWxpc3RpbmcgLnByb3BlcnRpZXMtbGlzdGluZy13cmFwcGVyLCAuY29udGVudC1saXN0aW5nIC5hZ2VuY2llcy1saXN0aW5nLXdyYXBwZXInKS5yZW1vdmVDbGFzcygnaGlkZGVuLXNtJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbi14cycpOwogICAgICAgICAgICAgICAgJCgnLmJ0bi12aWV3LW1hcCcpLnJlbW92ZUNsYXNzKCdoaWRkZW4tc20nKS5yZW1vdmVDbGFzcygnaGlkZGVuLXhzJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdoaWRkZW4tc20nKS5hZGRDbGFzcygnaGlkZGVuLXhzJyk7CiAgICAgICAgICAgICAgICAkKCcucHJvcGVydGllcy1wYWdpbmF0aW9uLXdyYXBwZXIsIC5hZ2VuY2llcy1wYWdpbmF0aW9uLXdyYXBwZXInKS5yZW1vdmVDbGFzcygncC1maXgtcGFnaW5hdGlvbicpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJy5zaG93LWZpbHRlci1wcm9wZXJ0aWVzLCAuZmlsdGVyLWluLXNpZGViYXInKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgJCgnLmxheW91dC10eXBlLWhhbGYtbWFwIC5maWx0ZXItc2lkZWJhcicpLnRvZ2dsZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgICQoJy5maWx0ZXItc2lkZWJhciArIC5vdmVyLWRhcmsnKS50b2dnbGVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5maWx0ZXItc2lkZWJhciArIC5vdmVyLWRhcmsnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5sYXlvdXQtdHlwZS1oYWxmLW1hcCAuZmlsdGVyLXNpZGViYXInKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAkKCcuZmlsdGVyLXNpZGViYXIgKyAub3Zlci1kYXJrJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIGZpbHRlciBzaWRlYmFyIGZpeGVkCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcucHJvcGVydGllcy1maWx0ZXItc2lkZWJhci13cmFwcGVyIC5jbG9zZS1maWx0ZXIsIC5idG4tc2hvdy1maWx0ZXIsIC5wcm9wZXJ0aWVzLWZpbHRlci1zaWRlYmFyLXdyYXBwZXIgKyAub3Zlci1kYXJrLWZpbHRlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLnByb3BlcnRpZXMtZmlsdGVyLXNpZGViYXItd3JhcHBlcicpLnRvZ2dsZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICB1c2VyTG9naW5SZWdpc3RlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgLy8gbG9naW4vcmVnaXN0ZXIKICAgICAgICAgICAgJCgnLnVzZXItbG9naW4tZm9ybSwgLm11c3QtbG9nLWluJykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgaWYgKCQoJy5hcHVzLXVzZXItbG9naW4nKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcuYXB1cy11c2VyLWxvZ2luJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJy5hcHVzLXVzZXItbG9naW4sIC5hcHVzLXVzZXItcmVnaXN0ZXInKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHNlbGYubGF5enlMb2FkSW1hZ2UoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJy5hcHVzLXVzZXItbG9naW4sIC5hcHVzLXVzZXItcmVnaXN0ZXInKS5tYWduaWZpY1BvcHVwKHsKICAgICAgICAgICAgICAgIG1haW5DbGFzczogJ2FwdXMtbWZwLXpvb20taW4gbG9naW4tcG9wdXAnLAogICAgICAgICAgICAgICAgdHlwZTogJ2lubGluZScsCiAgICAgICAgICAgICAgICBtaWRDbGljazogdHJ1ZSwKICAgICAgICAgICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAgICAgICAgICAgIG9wZW46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxheXp5TG9hZEltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQod2luZG93KS50cmlnZ2VyKCdyZXNpemUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICB9LAoKICAgICAgICBmaWx0ZXJMaXN0aW5nRm5jOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJy5idG4tc2hvdy1maWx0ZXIsIC5vZmZjYW52YXMtZmlsdGVyLXNpZGViYXIgKyAub3Zlci1kYXJrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyLCAub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyICsgLm92ZXItZGFyaycpLnRvZ2dsZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIC8vICQoJy5vZmZjYW52YXMtZmlsdGVyLXNpZGViYXInKS5wZXJmZWN0U2Nyb2xsYmFyKCk7CiAgICAgICAgICAgICAgICBpZiAoJCgnLm9mZmNhbnZhcy1maWx0ZXItc2lkZWJhcicpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHZhciBwcyA9IG5ldyBQZXJmZWN0U2Nyb2xsYmFyKCcub2ZmY2FudmFzLWZpbHRlci1zaWRlYmFyJywgewogICAgICAgICAgICAgICAgICAgICAgICB3aGVlbFByb3BhZ2F0aW9uOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdhZnRlcl9hZGRfcHJvcGVydHlfZmF2b3JpdGUnLCBmdW5jdGlvbihlLCAkdGhpcywgZGF0YSkgewogICAgICAgICAgICAgICAgJHRoaXMuYXR0cignZGF0YS1vcmlnaW5hbC10aXRsZScsIGhvbWVvX3Byb3BlcnR5X29wdHMuZmF2b3JpdGVfYWRkZWRfdG9vbHRpcF90aXRsZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignYWZ0ZXJfcmVtb3ZlX3Byb3BlcnR5X2Zhdm9yaXRlJywgZnVuY3Rpb24oZXZlbnQsICR0aGlzLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdkYXRhLW9yaWdpbmFsLXRpdGxlJywgaG9tZW9fcHJvcGVydHlfb3B0cy5mYXZvcml0ZV9hZGRfdG9vbHRpcF90aXRsZSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnYm9keScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZCgnLnByaWNlLWlucHV0LXdyYXBwZXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5wcmljZS1pbnB1dC13cmFwcGVyJykuc2xpZGVVcCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmZvcm0tZ3JvdXAtcHJpY2UudGV4dCwgLmZvcm0tZ3JvdXAtcHJpY2UubGlzdCwgLmZvcm0tZ3JvdXAtaG9tZV9hcmVhLnRleHQsIC5mb3JtLWdyb3VwLWxvdF9hcmVhLnRleHQsIC5mb3JtLWdyb3VwLXllYXJfYnVpbHQudGV4dCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJy5oZWFkaW5nLWZpbHRlci1wcmljZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuZnJvbS10by13cmFwcGVyJykuZmluZCgnLnByaWNlLWlucHV0LXdyYXBwZXInKS5zbGlkZVRvZ2dsZSgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnYm9keScpLm9uKCdrZXl1cCcsICcucHJpY2UtaW5wdXQtd3JhcHBlciBpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICRmcm9tX3ZhbCA9ICQodGhpcykuY2xvc2VzdCgnLnByaWNlLWlucHV0LXdyYXBwZXInKS5maW5kKCcuZmlsdGVyLWZyb20nKS52YWwoKTsKICAgICAgICAgICAgICAgIHZhciAkdG9fdmFsID0gJCh0aGlzKS5jbG9zZXN0KCcucHJpY2UtaW5wdXQtd3JhcHBlcicpLmZpbmQoJy5maWx0ZXItdG8nKS52YWwoKTsKICAgICAgICAgICAgICAgIHZhciAkd3JhcHBlciA9ICQodGhpcykuY2xvc2VzdCgnLmZyb20tdG8tdGV4dC13cmFwcGVyJyk7CgogICAgICAgICAgICAgICAgaWYgKCR3cmFwcGVyLmhhc0NsYXNzKCdwcmljZScpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHdwX3JlYWxlc3RhdGVfb3B0cy5lbmFibGVfbXVsdGlfY3VycmVuY2llcyA9PT0gJ3llcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZyb21fdmFsID0gc2VsZi5zaG9ydGVuTnVtYmVyKCRmcm9tX3ZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b192YWwgPSBzZWxmLnNob3J0ZW5OdW1iZXIoJHRvX3ZhbCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZyb21fdmFsID0gc2VsZi5hZGRDb21tYXMoJGZyb21fdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvX3ZhbCA9IHNlbGYuYWRkQ29tbWFzKCR0b192YWwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkd3JhcHBlci5maW5kKCcuZnJvbS10ZXh0IC5wcmljZS10ZXh0JykudGV4dCgkZnJvbV92YWwpOwogICAgICAgICAgICAgICAgICAgICR3cmFwcGVyLmZpbmQoJy50by10ZXh0IC5wcmljZS10ZXh0JykudGV4dCgkdG9fdmFsKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHdyYXBwZXIuZmluZCgnLmZyb20tdGV4dCcpLnRleHQoJGZyb21fdmFsKTsKICAgICAgICAgICAgICAgICAgICAkd3JhcHBlci5maW5kKCcudG8tdGV4dCcpLnRleHQoJHRvX3ZhbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NoYW5nZScsICcucHJpY2UtaW5wdXQtd3JhcHBlciBpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICRmcm9tX3ZhbCA9ICQodGhpcykuY2xvc2VzdCgnLnByaWNlLWlucHV0LXdyYXBwZXInKS5maW5kKCcuZmlsdGVyLWZyb20nKS52YWwoKTsKICAgICAgICAgICAgICAgIHZhciAkdG9fdmFsID0gJCh0aGlzKS5jbG9zZXN0KCcucHJpY2UtaW5wdXQtd3JhcHBlcicpLmZpbmQoJy5maWx0ZXItdG8nKS52YWwoKTsKICAgICAgICAgICAgICAgIHZhciAkd3JhcHBlciA9ICQodGhpcykuY2xvc2VzdCgnLmZyb20tdG8tdGV4dC13cmFwcGVyJyk7CiAgICAgICAgICAgICAgICBpZiAoJHdyYXBwZXIuaGFzQ2xhc3MoJ3ByaWNlJykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAod3BfcmVhbGVzdGF0ZV9vcHRzLmVuYWJsZV9tdWx0aV9jdXJyZW5jaWVzID09PSAneWVzJykgewogICAgICAgICAgICAgICAgICAgICAgICAkZnJvbV92YWwgPSBzZWxmLnNob3J0ZW5OdW1iZXIoJGZyb21fdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvX3ZhbCA9IHNlbGYuc2hvcnRlbk51bWJlcigkdG9fdmFsKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkZnJvbV92YWwgPSBzZWxmLmFkZENvbW1hcygkZnJvbV92YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAkdG9fdmFsID0gc2VsZi5hZGRDb21tYXMoJHRvX3ZhbCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkd3JhcHBlci5maW5kKCcuZnJvbS10ZXh0IC5wcmljZS10ZXh0JykudGV4dCgkZnJvbV92YWwpOwogICAgICAgICAgICAgICAgICAgICR3cmFwcGVyLmZpbmQoJy50by10ZXh0IC5wcmljZS10ZXh0JykudGV4dCgkdG9fdmFsKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHdyYXBwZXIuZmluZCgnLmZyb20tdGV4dCcpLnRleHQoJGZyb21fdmFsKTsKICAgICAgICAgICAgICAgICAgICAkd3JhcHBlci5maW5kKCcudG8tdGV4dCcpLnRleHQoJHRvX3ZhbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJy5mcm9tLXRvLXdyYXBwZXIucHJpY2UtbGlzdCAucHJpY2UtZmlsdGVyIGxpJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgJHBhcmVudCA9ICQodGhpcykuY2xvc2VzdCgnLmZyb20tdG8td3JhcHBlcicpOwogICAgICAgICAgICAgICAgdmFyICRtaW4gPSAkKHRoaXMpLmRhdGEoJ21pbicpOwogICAgICAgICAgICAgICAgdmFyICRtYXggPSAkKHRoaXMpLmRhdGEoJ21heCcpOwogICAgICAgICAgICAgICAgJHBhcmVudC5maW5kKCdpbnB1dC5maWx0ZXItZnJvbScpLnZhbCgkbWluKTsKICAgICAgICAgICAgICAgICRwYXJlbnQuZmluZCgnaW5wdXQuZmlsdGVyLXRvJykudmFsKCRtYXgpOwogICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuZnJvbS10by13cmFwcGVyJykuZmluZCgnLmhlYWRpbmctZmlsdGVyLXByaWNlIC5wcmljZS10ZXh0JykuaHRtbCgkKHRoaXMpLmZpbmQoJy5wcmljZS10ZXh0JykuaHRtbCgpKTsKICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnByaWNlLWlucHV0LXdyYXBwZXInKS5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ2Zvcm0nKS50cmlnZ2VyKCdzdWJtaXQnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBwcm9wZXJ0eUNvbXBhcmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgIGlmICgkKCcuY29tcGFyZS1zaWRlYmFyLWlubmVyIC5jb21wYXJlLWxpc3QnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHZhciBwcyA9IG5ldyBQZXJmZWN0U2Nyb2xsYmFyKCcuY29tcGFyZS1zaWRlYmFyLWlubmVyIC5jb21wYXJlLWxpc3QnLCB7CiAgICAgICAgICAgICAgICAgICAgd2hlZWxQcm9wYWdhdGlvbjogdHJ1ZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdhZnRlcl9hZGRfcHJvcGVydHlfY29tcGFyZScsIGZ1bmN0aW9uKGUsICR0aGlzLCBkYXRhKSB7CiAgICAgICAgICAgICAgICB2YXIgaHRtbF9vdXRwdXQgPSAnJzsKICAgICAgICAgICAgICAgIGlmIChkYXRhLmh0bWxfb3V0cHV0KSB7CiAgICAgICAgICAgICAgICAgICAgaHRtbF9vdXRwdXQgPSBkYXRhLmh0bWxfb3V0cHV0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJCgnI2NvbXBhcmUtc2lkZWJhciAuY29tcGFyZS1zaWRlYmFyLWlubmVyJykuaHRtbChodG1sX291dHB1dCk7CiAgICAgICAgICAgICAgICAkKCcuY29tcGFyZS1zaWRlYmFyLWJ0biAuY291bnQnKS5odG1sKGRhdGEuY291bnQpOwoKICAgICAgICAgICAgICAgIGlmICgkKCcuY29tcGFyZS1zaWRlYmFyLWlubmVyIC5jb21wYXJlLWxpc3QnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcHMgPSBuZXcgUGVyZmVjdFNjcm9sbGJhcignLmNvbXBhcmUtc2lkZWJhci1pbm5lciAuY29tcGFyZS1saXN0JywgewogICAgICAgICAgICAgICAgICAgICAgICB3aGVlbFByb3BhZ2F0aW9uOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc2VsZi5sYXl6eUxvYWRJbWFnZSgpOwoKICAgICAgICAgICAgICAgIGlmICghJCgnI2NvbXBhcmUtc2lkZWJhcicpLmhhc0NsYXNzKCdhY3RpdmUnKSkgewogICAgICAgICAgICAgICAgICAgICQoJyNjb21wYXJlLXNpZGViYXInKS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoISQoJyNjb21wYXJlLXNpZGViYXInKS5oYXNDbGFzcygnb3BlbicpKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI2NvbXBhcmUtc2lkZWJhcicpLmFkZENsYXNzKCdvcGVuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdkYXRhLW9yaWdpbmFsLXRpdGxlJywgaG9tZW9fcHJvcGVydHlfb3B0cy5jb21wYXJlX2FkZGVkX3Rvb2x0aXBfdGl0bGUpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdhZnRlcl9yZW1vdmVfcHJvcGVydHlfY29tcGFyZScsIGZ1bmN0aW9uKGV2ZW50LCAkdGhpcywgZGF0YSkgewogICAgICAgICAgICAgICAgdmFyIGh0bWxfb3V0cHV0ID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5odG1sX291dHB1dCkgewogICAgICAgICAgICAgICAgICAgIGh0bWxfb3V0cHV0ID0gZGF0YS5odG1sX291dHB1dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICQoJyNjb21wYXJlLXNpZGViYXIgLmNvbXBhcmUtc2lkZWJhci1pbm5lcicpLmh0bWwoaHRtbF9vdXRwdXQpOwogICAgICAgICAgICAgICAgJCgnLmNvbXBhcmUtc2lkZWJhci1idG4gLmNvdW50JykuaHRtbChkYXRhLmNvdW50KTsKCiAgICAgICAgICAgICAgICBpZiAoJCgnLmNvbXBhcmUtc2lkZWJhci1pbm5lciAuY29tcGFyZS1saXN0JykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBzID0gbmV3IFBlcmZlY3RTY3JvbGxiYXIoJy5jb21wYXJlLXNpZGViYXItaW5uZXIgLmNvbXBhcmUtbGlzdCcsIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2hlZWxQcm9wYWdhdGlvbjogdHJ1ZQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChkYXRhLmNvdW50ID09ICcwJykgewogICAgICAgICAgICAgICAgICAgICQoJyNjb21wYXJlLXNpZGViYXInKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMuYXR0cignZGF0YS1vcmlnaW5hbC10aXRsZScsIGhvbWVvX3Byb3BlcnR5X29wdHMuY29tcGFyZV9hZGRfdG9vbHRpcF90aXRsZSk7CgogICAgICAgICAgICAgICAgc2VsZi5sYXl6eUxvYWRJbWFnZSgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJy5jb21wYXJlLXNpZGViYXItaW5uZXInKS5vbignY2xpY2snLCAnLmJ0bi1yZW1vdmUtcHJvcGVydHktY29tcGFyZS1saXN0JywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbG9hZGluZycpOwogICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5X2lkID0gJCh0aGlzKS5kYXRhKCdwcm9wZXJ0eV9pZCcpOwogICAgICAgICAgICAgICAgdmFyIG5vbmNlID0gJCh0aGlzKS5kYXRhKCdub25jZScpOwoKICAgICAgICAgICAgICAgIHZhciBhamF4dXJsID0gaG9tZW9fcHJvcGVydHlfb3B0cy5hamF4dXJsOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3cF9yZWFsZXN0YXRlX29wdHMuYWpheHVybF9lbmRwb2ludCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYWpheHVybCA9IHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50LnRvU3RyaW5nKCkucmVwbGFjZSgnJSVlbmRwb2ludCUlJywgJ3dwX3JlYWxlc3RhdGVfYWpheF9yZW1vdmVfcHJvcGVydHlfY29tcGFyZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXh1cmwsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydHlfaWQnOiBwcm9wZXJ0eV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmNlJzogbm9uY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiAnd3BfcmVhbGVzdGF0ZV9hamF4X3JlbW92ZV9wcm9wZXJ0eV9jb21wYXJlJywKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpOwogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cykgewoKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcigiYWZ0ZXJfcmVtb3ZlX3Byb3BlcnR5X2NvbXBhcmUiLCBbJHRoaXMsIGRhdGFdKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCcuYnRuLXJlbW92ZS1wcm9wZXJ0eS1jb21wYXJlLWxpc3QnKS5sZW5ndGggPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2NvbXBhcmUtc2lkZWJhcicpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNjb21wYXJlLXNpZGViYXInKS5yZW1vdmVDbGFzcygnb3BlbicpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkKCdhLmJ0bi1hZGRlZC1wcm9wZXJ0eS1jb21wYXJlJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eV9pZCA9PSAkKHRoaXMpLmRhdGEoJ3Byb3BlcnR5X2lkJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdidG4tYWRkZWQtcHJvcGVydHktY29tcGFyZScpLmFkZENsYXNzKCdidG4tYWRkLXByb3BlcnR5LWNvbXBhcmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ25vbmNlJywgZGF0YS5ub25jZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJy5jb21wYXJlLXNpZGViYXItaW5uZXInKS5vbignY2xpY2snLCAnLmJ0bi1yZW1vdmUtY29tcGFyZS1hbGwnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdsb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB2YXIgbm9uY2UgPSAkKHRoaXMpLmRhdGEoJ25vbmNlJyk7CgogICAgICAgICAgICAgICAgdmFyIGFqYXh1cmwgPSBob21lb19wcm9wZXJ0eV9vcHRzLmFqYXh1cmw7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdwX3JlYWxlc3RhdGVfb3B0cy5hamF4dXJsX2VuZHBvaW50ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgIHZhciBhamF4dXJsID0gd3BfcmVhbGVzdGF0ZV9vcHRzLmFqYXh1cmxfZW5kcG9pbnQudG9TdHJpbmcoKS5yZXBsYWNlKCclJWVuZHBvaW50JSUnLCAnd3BfcmVhbGVzdGF0ZV9hamF4X3JlbW92ZV9hbGxfcHJvcGVydHlfY29tcGFyZScpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiBhamF4dXJsLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmNlJzogbm9uY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiAnd3BfcmVhbGVzdGF0ZV9hamF4X3JlbW92ZV9hbGxfcHJvcGVydHlfY29tcGFyZScsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoImFmdGVyX3JlbW92ZV9wcm9wZXJ0eV9jb21wYXJlIiwgWyR0aGlzLCBkYXRhXSk7CgogICAgICAgICAgICAgICAgICAgICAgICAkKCdhLmJ0bi1hZGRlZC1wcm9wZXJ0eS1jb21wYXJlJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2J0bi1hZGRlZC1wcm9wZXJ0eS1jb21wYXJlJykuYWRkQ2xhc3MoJ2J0bi1hZGQtcHJvcGVydHktY29tcGFyZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRhKCdub25jZScsIGRhdGEubm9uY2UpOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJyNjb21wYXJlLXNpZGViYXIgLmNvbXBhcmUtc2lkZWJhci1idG4nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgJCgnI2NvbXBhcmUtc2lkZWJhcicpLnRvZ2dsZUNsYXNzKCdvcGVuJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoJCgnI2NvbXBhcmUtc2lkZWJhcicpLmhhc0NsYXNzKCdvcGVuJykpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjY29tcGFyZS1zaWRlYmFyJykucmVtb3ZlQ2xhc3MoJ29wZW4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJy5jb21wYXJlLXNpZGViYXItaW5uZXInKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIHByb3BlcnRpZXNHZXRQYWdlOiBmdW5jdGlvbihwYWdlVXJsLCBpc0JhY2tCdXR0b24pIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICBpZiAoc2VsZi5maWx0ZXJBamF4KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHNlbGYucHJvcGVydGllc1NldEN1cnJlbnRVcmwoKTsKCiAgICAgICAgICAgIGlmIChwYWdlVXJsKSB7CiAgICAgICAgICAgICAgICAvLyBTaG93ICdsb2FkZXInIG92ZXJsYXkKICAgICAgICAgICAgICAgIHNlbGYucHJvcGVydGllc1Nob3dMb2FkZXIoKTsKCiAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIFVSTCBoYXMgYSB0cmFpbGluZy1zbGFzaCBiZWZvcmUgcXVlcnkgYXJncyAoMzAxIHJlZGlyZWN0IGZpeCkKICAgICAgICAgICAgICAgIHBhZ2VVcmwgPSBwYWdlVXJsLnJlcGxhY2UoL1wvPyhcP3wjfCQpLywgJy8kMScpOwoKICAgICAgICAgICAgICAgIGlmICghaXNCYWNrQnV0dG9uKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRQdXNoU3RhdGUocGFnZVVybCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc2VsZi5maWx0ZXJBamF4ID0gJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICB1cmw6IHBhZ2VVcmwsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICBsb2FkX3R5cGU6ICdmdWxsJwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdodG1sJywKICAgICAgICAgICAgICAgICAgICBjYWNoZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICAgICAnY2FjaGUtY29udHJvbCc6ICduby1jYWNoZScKICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywgLy8gTm90ZTogVXNpbmcgIlBPU1QiIG1ldGhvZCBmb3IgdGhlIEFqYXggcmVxdWVzdCB0byBhdm9pZCAibG9hZF90eXBlIiBxdWVyeS1zdHJpbmcgaW4gcGFnaW5hdGlvbiBsaW5rcwoKICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oWE1MSHR0cFJlcXVlc3QsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBcHVzOiBBSkFYIGVycm9yIC0gcHJvcGVydGllc0dldFBhZ2UoKSAtICcgKyBlcnJvclRocm93bik7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWRlICdsb2FkZXInIG92ZXJsYXkgKGFmdGVyIHNjcm9sbCBhbmltYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJvcGVydGllc0hpZGVMb2FkZXIoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsdGVyQWpheCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHByb3BlcnRpZXMgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3BlcnRpZXNVcGRhdGVDb250ZW50KHJlc3BvbnNlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsdGVyQWpheCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcHJvcGVydGllc0hpZGVMb2FkZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCdib2R5JykuZmluZCgnLm1haW4taXRlbXMtd3JhcHBlcicpLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7CiAgICAgICAgfSwKICAgICAgICBwcm9wZXJ0aWVzU2hvd0xvYWRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoJ2JvZHknKS5maW5kKCcubWFpbi1pdGVtcy13cmFwcGVyJykuYWRkQ2xhc3MoJ2xvYWRpbmcnKTsKICAgICAgICB9LAogICAgICAgIHNldFB1c2hTdGF0ZTogZnVuY3Rpb24ocGFnZVVybCkgewogICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoewogICAgICAgICAgICAgICAgYXB1c1Nob3A6IHRydWUKICAgICAgICAgICAgfSwgJycsIHBhZ2VVcmwpOwogICAgICAgIH0sCiAgICAgICAgcHJvcGVydGllc1NldEN1cnJlbnRVcmw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICAgICAgICAvLyBTZXQgY3VycmVudCBwYWdlIFVSTAogICAgICAgICAgICBzZWxmLnNlYXJjaEFuZFRhZ3NSZXNldFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwogICAgICAgIH0sCiAgICAgICAgLyoqCiAgICAgICAgICogIFByb3BlcnRpZXM6IFVwZGF0ZSBwcm9wZXJ0aWVzIGNvbnRlbnQgd2l0aCBBSkFYIEhUTUwKICAgICAgICAgKi8KICAgICAgICBwcm9wZXJ0aWVzVXBkYXRlQ29udGVudDogZnVuY3Rpb24oYWpheEhUTUwpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgICAgICAgICAgJGFqYXhIVE1MID0gJCgnPGRpdj4nICsgYWpheEhUTUwgKyAnPC9kaXY+Jyk7CgogICAgICAgICAgICB2YXIgJHByb3BlcnRpZXMgPSAkYWpheEhUTUwuZmluZCgnLm1haW4taXRlbXMtd3JhcHBlcicpLAogICAgICAgICAgICAgICAgJGRpc3BsYXlfbW9kZSA9ICRhamF4SFRNTC5maW5kKCcucHJvcGVydGllcy1kaXNwbGF5LW1vZGUtd3JhcHBlci1hamF4IC5wcm9wZXJ0aWVzLWRpc3BsYXktbW9kZS13cmFwcGVyJyksCiAgICAgICAgICAgICAgICAkcGFnaW5hdGlvbiA9ICRhamF4SFRNTC5maW5kKCcubWFpbi1wYWdpbmF0aW9uLXdyYXBwZXInKTsKCiAgICAgICAgICAgIC8vIFJlcGxhY2UgcHJvcGVydGllcwogICAgICAgICAgICBpZiAoJHByb3BlcnRpZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkKCcubWFpbi1pdGVtcy13cmFwcGVyJykucmVwbGFjZVdpdGgoJHByb3BlcnRpZXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkZGlzcGxheV9tb2RlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgJCgnLnByb3BlcnRpZXMtZGlzcGxheS1tb2RlLXdyYXBwZXInKS5yZXBsYWNlV2l0aCgkZGlzcGxheV9tb2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBSZXBsYWNlIHBhZ2luYXRpb24KICAgICAgICAgICAgaWYgKCRwYWdpbmF0aW9uLmxlbmd0aCkgewogICAgICAgICAgICAgICAgJCgnLm1haW4tcGFnaW5hdGlvbi13cmFwcGVyJykucmVwbGFjZVdpdGgoJHBhZ2luYXRpb24pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBMb2FkIGltYWdlcyAoaW5pdCBVbnZlaWwpCiAgICAgICAgICAgIHNlbGYubGF5enlMb2FkSW1hZ2UoKTsKCiAgICAgICAgICAgIC8vIHBhZ2luYXRpb24KICAgICAgICAgICAgaWYgKCQoJy5hamF4LXBhZ2luYXRpb24nKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHNlbGYuaW5mbG9hZFNjcm9sbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgc2VsZi5hamF4UGFnaW5hdGlvbkxvYWQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbigkLmZuLnNlbGVjdDIpICYmIHR5cGVvZiB3cF9yZWFsZXN0YXRlX3NlbGVjdDJfb3B0cyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHZhciBzZWxlY3QyX2FyZ3MgPSB3cF9yZWFsZXN0YXRlX3NlbGVjdDJfb3B0czsKICAgICAgICAgICAgICAgIHNlbGVjdDJfYXJnc1snYWxsb3dDbGVhciddID0gZmFsc2U7CiAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJ10gPSAxMDsKICAgICAgICAgICAgICAgIHNlbGVjdDJfYXJnc1snd2lkdGgnXSA9ICdhdXRvJzsKCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdwX3JlYWxlc3RhdGVfc2VsZWN0Ml9vcHRzLmxhbmd1YWdlX3Jlc3VsdCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICBzZWxlY3QyX2FyZ3NbJ2xhbmd1YWdlJ10gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vUmVzdWx0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3BfcmVhbGVzdGF0ZV9zZWxlY3QyX29wdHMubGFuZ3VhZ2VfcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkKCdzZWxlY3Qub3JkZXJieScpLnNlbGVjdDIoc2VsZWN0Ml9hcmdzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJCgnLmJ0bi1zYXZlZC1zZWFyY2gnKS5tYWduaWZpY1BvcHVwKHsKICAgICAgICAgICAgICAgIG1haW5DbGFzczogJ3dwLXJlYWxlc3RhdGUtbWZwLWNvbnRhaW5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiAnaW5saW5lJywKICAgICAgICAgICAgICAgIG1pZENsaWNrOiB0cnVlCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgc2VsZi51cGRhdGVNYWtlckNhcmRzKCdwcm9wZXJ0aWVzLWdvb2dsZS1tYXBzJyk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAvLyBIaWRlICdsb2FkZXInCiAgICAgICAgICAgICAgICBzZWxmLnByb3BlcnRpZXNIaWRlTG9hZGVyKCk7CiAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgfSwKCiAgICAgICAgLyoqCiAgICAgICAgICogIFNob3A6IEluaXRpYWxpemUgaW5maW5pdGUgbG9hZAogICAgICAgICAqLwogICAgICAgIGFqYXhQYWdpbmF0aW9uTG9hZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKICAgICAgICAgICAgICAgICRpbmZsb2FkQ29udHJvbHMgPSAkKCdib2R5JykuZmluZCgnLmFqYXgtcGFnaW5hdGlvbicpLAogICAgICAgICAgICAgICAgbmV4dFBhZ2VVcmw7CgogICAgICAgICAgICBzZWxmLmluZmxvYWRTY3JvbGwgPSAoJGluZmxvYWRDb250cm9scy5oYXNDbGFzcygnaW5maW5pdGUtYWN0aW9uJykpID8gdHJ1ZSA6IGZhbHNlOwoKICAgICAgICAgICAgaWYgKHNlbGYuaW5mbG9hZFNjcm9sbCkgewogICAgICAgICAgICAgICAgc2VsZi5pbmZzY3JvbGxMb2NrID0gZmFsc2U7CgogICAgICAgICAgICAgICAgdmFyIHB4RnJvbVdpbmRvd0JvdHRvbVRvQm90dG9tLAogICAgICAgICAgICAgICAgICAgIHB4RnJvbU1lbnVUb0JvdHRvbSA9IE1hdGgucm91bmQoJChkb2N1bWVudCkuaGVpZ2h0KCkgLSAkaW5mbG9hZENvbnRyb2xzLm9mZnNldCgpLnRvcCk7CgogICAgICAgICAgICAgICAgLyogQmluZDogV2luZG93IHJlc2l6ZSBldmVudCB0byByZS1jYWxjdWxhdGUgdGhlICdweEZyb21NZW51VG9Cb3R0b20nIHZhbHVlIChzbyB0aGUgaXRlbXMgbG9hZCBhdCB0aGUgY29ycmVjdCBzY3JvbGwtcG9zaXRpb24pICovCiAgICAgICAgICAgICAgICB2YXIgdG8gPSBudWxsOwogICAgICAgICAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRvKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdG8gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgJGluZmxvYWRDb250cm9scyA9ICQoJy5hamF4LXBhZ2luYXRpb24nKTsgLy8gTm90ZTogRG9uJ3QgY2FjaGUsIGVsZW1lbnQgaXMgZHluYW1pYwogICAgICAgICAgICAgICAgICAgICAgICBweEZyb21NZW51VG9Cb3R0b20gPSBNYXRoLnJvdW5kKCQoZG9jdW1lbnQpLmhlaWdodCgpIC0gJGluZmxvYWRDb250cm9scy5vZmZzZXQoKS50b3ApOwogICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmluZnNjcm9sbExvY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHhGcm9tV2luZG93Qm90dG9tVG9Cb3R0b20gPSAwICsgJChkb2N1bWVudCkuaGVpZ2h0KCkgLSAoJCh3aW5kb3cpLnNjcm9sbFRvcCgpKSAtICQod2luZG93KS5oZWlnaHQoKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZGlzdGFuY2UgcmVtYWluaW5nIGluIHRoZSBzY3JvbGwgKGluY2x1ZGluZyBidWZmZXIpIGlzIGxlc3MgdGhhbiB0aGUgcGFnaW5hdGlvbiBlbGVtZW50IHRvIGJvdHRvbToKICAgICAgICAgICAgICAgICAgICBpZiAocHhGcm9tV2luZG93Qm90dG9tVG9Cb3R0b20gPCBweEZyb21NZW51VG9Cb3R0b20pIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hamF4UGFnaW5hdGlvbkdldCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyICRwcm9kdWN0c1dyYXAgPSAkKCdib2R5Jyk7CiAgICAgICAgICAgICAgICAvKiBCaW5kOiAiTG9hZCIgYnV0dG9uICovCiAgICAgICAgICAgICAgICAkcHJvZHVjdHNXcmFwLm9uKCdjbGljaycsICcubWFpbi1wYWdpbmF0aW9uLXdyYXBwZXIgLmFwdXMtbG9hZG1vcmUtYnRuJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBzZWxmLmFqYXhQYWdpbmF0aW9uR2V0KCk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzZWxmLmluZmxvYWRTY3JvbGwpIHsKICAgICAgICAgICAgICAgICQod2luZG93KS50cmlnZ2VyKCdzY3JvbGwnKTsgLy8gVHJpZ2dlciBzY3JvbGwgaW4gY2FzZSB0aGUgcGFnaW5hdGlvbiBlbGVtZW50ICgrYnVmZmVyKSBpcyBhYm92ZSB0aGUgd2luZG93IGJvdHRvbQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAvKioKICAgICAgICAgKiAgU2hvcDogQUpBWCBsb2FkIG5leHQgcGFnZQogICAgICAgICAqLwogICAgICAgIGFqYXhQYWdpbmF0aW9uR2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAgICAgaWYgKHNlbGYuZmlsdGVyQWpheCkgcmV0dXJuIGZhbHNlOwoKICAgICAgICAgICAgLy8gR2V0IGVsZW1lbnRzICh0aGVzZSBjYW4gYmUgcmVwbGFjZWQgd2l0aCBBSkFYLCBkb24ndCBwcmUtY2FjaGUpCiAgICAgICAgICAgIHZhciAkbmV4dFBhZ2VMaW5rID0gJCgnLmFwdXMtcGFnaW5hdGlvbi1uZXh0LWxpbmsnKS5maW5kKCdhJyksCiAgICAgICAgICAgICAgICAkaW5mbG9hZENvbnRyb2xzID0gJCgnLmFqYXgtcGFnaW5hdGlvbicpLAogICAgICAgICAgICAgICAgbmV4dFBhZ2VVcmwgPSAkbmV4dFBhZ2VMaW5rLmF0dHIoJ2hyZWYnKTsKCiAgICAgICAgICAgIGlmIChuZXh0UGFnZVVybCkgewogICAgICAgICAgICAgICAgLy8gU2hvdyAnbG9hZGVyJwogICAgICAgICAgICAgICAgJGluZmxvYWRDb250cm9scy5hZGRDbGFzcygnYXB1cy1sb2FkZXInKTsKCiAgICAgICAgICAgICAgICBzZWxmLnNldFB1c2hTdGF0ZShuZXh0UGFnZVVybCk7CgogICAgICAgICAgICAgICAgc2VsZi5maWx0ZXJBamF4ID0gJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICB1cmw6IG5leHRQYWdlVXJsLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbG9hZF90eXBlOiAnaXRlbXMnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2h0bWwnLAogICAgICAgICAgICAgICAgICAgIGNhY2hlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICdjYWNoZS1jb250cm9sJzogJ25vLWNhY2hlJwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJywKICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oWE1MSHR0cFJlcXVlc3QsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBUFVTOiBBSkFYIGVycm9yIC0gYWpheFBhZ2luYXRpb25HZXQoKSAtICcgKyBlcnJvclRocm93bik7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpZGUgJ2xvYWRlcicKICAgICAgICAgICAgICAgICAgICAgICAgJGluZmxvYWRDb250cm9scy5yZW1vdmVDbGFzcygnYXB1cy1sb2FkZXInKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkcmVzcG9uc2UgPSAkKCc8ZGl2PicgKyByZXNwb25zZSArICc8L2Rpdj4nKSwgLy8gV3JhcCB0aGUgcmV0dXJuZWQgSFRNTCBzdHJpbmcgaW4gYSBkdW1teSAnZGl2JyBlbGVtZW50IHdlIGNhbiBnZXQgdGhlIGVsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3JpZEl0ZW1FbGVtZW50ID0gJCgnLml0ZW1zLXdyYXBwZXInLCAkcmVzcG9uc2UpLmh0bWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHRDb3VudCA9ICQoJy5yZXN1bHRzLWNvdW50IC5sYXN0JywgJHJlc3BvbnNlKS5odG1sKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheV9tb2RlID0gJCgnLm1haW4taXRlbXMtd3JhcHBlcicpLmRhdGEoJ2Rpc3BsYXlfbW9kZScpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgbmV3IGVsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGlzcGxheV9tb2RlID09ICdncmlkJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm1haW4taXRlbXMtd3JhcHBlciAuaXRlbXMtd3JhcHBlciAucm93JykuYXBwZW5kKCRncmlkSXRlbUVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm1haW4taXRlbXMtd3JhcHBlciAuaXRlbXMtd3JhcHBlcicpLmFwcGVuZCgkZ3JpZEl0ZW1FbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHJlc3VsdHMKICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm1haW4taXRlbXMtd3JhcHBlciAucmVzdWx0cy1jb3VudCAubGFzdCcpLmh0bWwoJHJlc3VsdENvdW50KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBNYXBzCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlTWFrZXJDYXJkcygncHJvcGVydGllcy1nb29nbGUtbWFwcycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBpbWFnZXMgKGluaXQgVW52ZWlsKQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxheXp5TG9hZEltYWdlKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlICduZXh0IHBhZ2UnIFVSTAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0UGFnZVVybCA9ICRyZXNwb25zZS5maW5kKCcuYXB1cy1wYWdpbmF0aW9uLW5leHQtbGluaycpLmNoaWxkcmVuKCdhJykuYXR0cignaHJlZicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRQYWdlVXJsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV4dFBhZ2VMaW5rLmF0dHIoJ2hyZWYnLCBuZXh0UGFnZVVybCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcubWFpbi1pdGVtcy13cmFwcGVyJykuYWRkQ2xhc3MoJ2FsbC1wcm9wZXJ0aWVzLWxvYWRlZCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmluZmxvYWRTY3JvbGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluZnNjcm9sbExvY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZmxvYWRDb250cm9scy5maW5kKCcuYXB1cy1sb2FkbW9yZS1idG4nKS5hZGRDbGFzcygnaGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV4dFBhZ2VMaW5rLnJlbW92ZUF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWx0ZXJBamF4ID0gZmFsc2U7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5pbmZsb2FkU2Nyb2xsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykudHJpZ2dlcignc2Nyb2xsJyk7IC8vIFRyaWdnZXIgJ3Njcm9sbCcgaW4gY2FzZSB0aGUgcGFnaW5hdGlvbiBlbGVtZW50ICgrYnVmZmVyKSBpcyBzdGlsbCBhYm92ZSB0aGUgd2luZG93IGJvdHRvbQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoc2VsZi5pbmZsb2FkU2Nyb2xsKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmZzY3JvbGxMb2NrID0gdHJ1ZTsgLy8gIkxvY2siIHNjcm9sbCAobm8gbW9yZSBwcm9kdWN0cy9wYWdlcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc2hvcnRlbk51bWJlcjogZnVuY3Rpb24oJG51bWJlcikgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICAgICAgICB2YXIgZGl2aXNvcnMgPSB3cF9yZWFsZXN0YXRlX29wdHMuZGl2aXNvcnM7CiAgICAgICAgICAgIHZhciAka2V5X3NpZ24gPSAnJzsKICAgICAgICAgICAgJC5lYWNoKGRpdmlzb3JzLCBmdW5jdGlvbigkaW5kZXgsICR2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKCRudW1iZXIgPCAoJHZhbHVlWydkaXZpc29yJ10gKiAxMDAwKSkgewogICAgICAgICAgICAgICAgICAgICRrZXlfc2lnbiA9ICR2YWx1ZVsna2V5J107CiAgICAgICAgICAgICAgICAgICAgJG51bWJlciA9ICRudW1iZXIgLyAkdmFsdWVbJ2Rpdmlzb3InXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuYWRkQ29tbWFzKCRudW1iZXIpICsgJGtleV9zaWduOwogICAgICAgIH0sCiAgICAgICAgYWRkQ29tbWFzOiBmdW5jdGlvbihzdHIpIHsKICAgICAgICAgICAgdmFyIHBhcnRzID0gKHN0ciArICIiKS5zcGxpdCgiLiIpLAogICAgICAgICAgICAgICAgbWFpbiA9IHBhcnRzWzBdLAogICAgICAgICAgICAgICAgbGVuID0gbWFpbi5sZW5ndGgsCiAgICAgICAgICAgICAgICBvdXRwdXQgPSAiIiwKICAgICAgICAgICAgICAgIGZpcnN0ID0gbWFpbi5jaGFyQXQoMCksCiAgICAgICAgICAgICAgICBpOwoKICAgICAgICAgICAgaWYgKGZpcnN0ID09PSAnLScpIHsKICAgICAgICAgICAgICAgIG1haW4gPSBtYWluLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgbGVuID0gbWFpbi5sZW5ndGg7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmaXJzdCA9ICIiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkgPSBsZW4gLSAxOwogICAgICAgICAgICB3aGlsZSAoaSA+PSAwKSB7CiAgICAgICAgICAgICAgICBvdXRwdXQgPSBtYWluLmNoYXJBdChpKSArIG91dHB1dDsKICAgICAgICAgICAgICAgIGlmICgobGVuIC0gaSkgJSAzID09PSAwICYmIGkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gd3BfcmVhbGVzdGF0ZV9vcHRzLm1vbmV5X3Rob3VzYW5kc19zZXBhcmF0b3IgKyBvdXRwdXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAtLWk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gcHV0IHNpZ24gYmFjawogICAgICAgICAgICBvdXRwdXQgPSBmaXJzdCArIG91dHB1dDsKICAgICAgICAgICAgLy8gcHV0IGRlY2ltYWwgcGFydCBiYWNrCiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gd3BfcmVhbGVzdGF0ZV9vcHRzLm1vbmV5X2RlY19wb2ludCArIHBhcnRzWzFdOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0sCiAgICAgICAgZ2FsbGVyeVByb3Blcnk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdtb3VzZWVudGVyJywgJ2FydGljbGUucHJvcGVydHktaXRlbScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmhhc0NsYXNzKCdsb2FkZWQtZ2FsbGVyeScpICYmICQodGhpcykuZGF0YSgnaW1hZ2VzJykpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIHZhciBocmVmID0gJCh0aGlzKS5maW5kKCdhLnByb3BlcnR5LWltYWdlJykuYXR0cignaHJlZicpCiAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlcyA9ICQodGhpcykuZGF0YSgnaW1hZ2VzJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz0ic2xpY2stY2Fyb3VzZWwtZ2FsbGVyeS1wcm9wZXJ0aWVzIGhpZGRlbiIgc3R5bGU9IndpZHRoOiAnICsgJCh0aGlzKS5maW5kKCcucHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXInKS53aWR0aCgpICsgJ3B4OyI+PGRpdiBjbGFzcz0ic2xpY2stY2Fyb3VzZWwiIGRhdGEtaXRlbXM9IjEiIGRhdGEtc21hbGxtZWRpdW09IjEiIGRhdGEtZXh0cmFzbWFsbD0iMSIgZGF0YS1wYWdpbmF0aW9uPSJmYWxzZSIgZGF0YS1uYXY9InRydWUiIGRhdGEtZGlzYWJsZV9kcmFnZ2FibGU9InRydWUiPic7CiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLmZvckVhY2goZnVuY3Rpb24oaW1nX3VybCwgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iaXRlbSI+PGEgY2xhc3M9InByb3BlcnR5LWltYWdlIiBocmVmPSInICsgaHJlZiArICciPjxpbWcgc3JjPSInICsgaW1nX3VybCArICciPjwvYT48L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcucHJvcGVydHktdGh1bWJuYWlsLXdyYXBwZXIgLmltYWdlLXRodW1ibmFpbCcpLmFwcGVuZChodG1sKTsKCiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuc2xpY2stY2Fyb3VzZWwtZ2FsbGVyeS1wcm9wZXJ0aWVzJykuaW1hZ2VzTG9hZGVkKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnLnNsaWNrLWNhcm91c2VsLWdhbGxlcnktcHJvcGVydGllcycpLnJlbW92ZUNsYXNzKCJoaWRkZW4iKS5kZWxheSgyMDApLnF1ZXVlKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygiYWN0aXZlIikuZGVxdWV1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdFNsaWNrKCR0aGlzLmZpbmQoJy5zbGljay1jYXJvdXNlbCcpKTsKCiAgICAgICAgICAgICAgICAgICAgfSkucHJvZ3Jlc3MoZnVuY3Rpb24oaW5zdGFuY2UsIGltYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdpbWFnZXMtbG9hZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ2ltYWdlcy1sb2FkZWQnKS5yZW1vdmVDbGFzcygnaW1hZ2VzLWxvYWRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbG9hZGVkLWdhbGxlcnknKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSk7CgogICAgJC5hcHVzVGhlbWVFeHRlbnNpb25zLnByb3BlcnR5ID0gJC5hcHVzVGhlbWVDb3JlLnByb3BlcnR5X2luaXQ7CgoKfSkoalF1ZXJ5KTs="}},"time_used":1111,"timings":{"blocked":1014,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.6.4","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.483Z","timestamp":1785145482483,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.6.4 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 7216\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:08 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":7216,"size_decoded":7432,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (2110)","md5":"bf9bb7547be30c3b4926866f91d53f74","sha1":"7567e273fdf5b32a7efafb2637b6d7d0f583ce88","sha256":"0d3aa0ccdb98a79b0bfabd079961fc74becf8db7f3112d5e31ba973145abfe3f","sha512":"7b13868c061aeeba6b958567a924025ae3ba280a82ae9f4f65f0e3c4a7912498931f5828862aff12d23e612be6a837da1af0f65e4d4c10323dd6515b23c24030","ssdeep":"192:YGUgz0pqCCvar6tYSE0sGXHPLLRFS6YUb9+UY/EPT4N6a:/ZgpDmtS0scRLL9+hcbET","tlshash":"55e13f880ae15e2f259374b5b65a9f30263ec9133909ed91f95c8ed80fd4d2187b9ab0","first_seen":"2026-07-27T08:06:56.573373Z","last_seen":"2026-07-27T09:45:50.846838Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvci1wcm8gLSB2My42LjQgLSAxNS0wMy0yMDIyICovCigoKSA9PiB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSwgciwgXywgYSA9IHt9LAogICAgICAgIGMgPSB7fTsKCiAgICBmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKGUpIHsKICAgICAgICB2YXIgciA9IGNbZV07CiAgICAgICAgaWYgKHZvaWQgMCAhPT0gcikgcmV0dXJuIHIuZXhwb3J0czsKICAgICAgICB2YXIgXyA9IGNbZV0gPSB7CiAgICAgICAgICAgIGV4cG9ydHM6IHt9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gYVtlXShfLCBfLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pLCBfLmV4cG9ydHMKICAgIH0KICAgIF9fd2VicGFja19yZXF1aXJlX18ubSA9IGEsIGUgPSBbXSwgX193ZWJwYWNrX3JlcXVpcmVfXy5PID0gKHIsIF8sIGEsIGMpID0+IHsKICAgICAgICBpZiAoIV8pIHsKICAgICAgICAgICAgdmFyIG4gPSAxIC8gMDsKICAgICAgICAgICAgZm9yICh1ID0gMDsgdSA8IGUubGVuZ3RoOyB1KyspIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIFtfLCBhLCBjXSA9IGVbdV0sIGkgPSAhMCwgdCA9IDA7IHQgPCBfLmxlbmd0aDsgdCsrKSghMSAmIGMgfHwgbiA+PSBjKSAmJiBPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLk8pLmV2ZXJ5KChlID0+IF9fd2VicGFja19yZXF1aXJlX18uT1tlXShfW3RdKSkpID8gXy5zcGxpY2UodC0tLCAxKSA6IChpID0gITEsIGMgPCBuICYmIChuID0gYykpOwogICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICBlLnNwbGljZSh1LS0sIDEpOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gYSgpOwogICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gbyAmJiAociA9IG8pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9CiAgICAgICAgYyA9IGMgfHwgMDsKICAgICAgICBmb3IgKHZhciB1ID0gZS5sZW5ndGg7IHUgPiAwICYmIGVbdSAtIDFdWzJdID4gYzsgdS0tKSBlW3VdID0gZVt1IC0gMV07CiAgICAgICAgZVt1XSA9IFtfLCBhLCBjXQogICAgfSwgX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge30sIF9fd2VicGFja19yZXF1aXJlX18uZSA9IGUgPT4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5mKS5yZWR1Y2UoKChyLCBfKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5mW19dKGUsIHIpLCByKSksIFtdKSksIF9fd2VicGFja19yZXF1aXJlX18udSA9IGUgPT4gNzE0ID09PSBlID8gImNvZGUtaGlnaGxpZ2h0LjI4YTk3OTY2MTU2OWRkYmJmNjBkLmJ1bmRsZS5taW4uanMiIDogNzIxID09PSBlID8gInZpZGVvLXBsYXlsaXN0LmU4NTY5NWQ3YjkxNzFkODljNTY1LmJ1bmRsZS5taW4uanMiIDogMjU2ID09PSBlID8gInBheXBhbC1idXR0b24uM2QwZDVhZjdkZjg1OTYzZGYzMmMuYnVuZGxlLm1pbi5qcyIgOiAyNDEgPT09IGUgPyAicHJvZ3Jlc3MtdHJhY2tlci43YTRlNTBkMWJlMTQ1MjVkOGZmYi5idW5kbGUubWluLmpzIiA6IDI2ID09PSBlID8gImFuaW1hdGVkLWhlYWRsaW5lLjIwODQzMDdmMTA3YWI4MWJlNjllLmJ1bmRsZS5taW4uanMiIDogNTM0ID09PSBlID8gIm1lZGlhLWNhcm91c2VsLjNhMWNmYzc4YzVkMzM4M2U5MzVkLmJ1bmRsZS5taW4uanMiIDogMzY5ID09PSBlID8gImNhcm91c2VsLmZjNWU0NTA3MTZjZDExZDA1YmViLmJ1bmRsZS5taW4uanMiIDogODA0ID09PSBlID8gImNvdW50ZG93bi5iMGVmNjM5MmVjNGZmMDljYTJmMi5idW5kbGUubWluLmpzIiA6IDg4OCA9PT0gZSA/ICJob3RzcG90LjZhYjE3NTE0MDRjMzgxYmZlMzkwLmJ1bmRsZS5taW4uanMiIDogNjgwID09PSBlID8gImZvcm0uMzU4NzkzYTZiYjM3MjRhYjVmOTkuYnVuZGxlLm1pbi5qcyIgOiAxMjEgPT09IGUgPyAiZ2FsbGVyeS45YzYxYmI5OTU3ZTEwZTZkN2JkYS5idW5kbGUubWluLmpzIiA6IDI4OCA9PT0gZSA/ICJsb3R0aWUuMTQ3YmYyMGRiOTRmODZjYzQyOTUuYnVuZGxlLm1pbi5qcyIgOiA0MiA9PT0gZSA/ICJuYXYtbWVudS4zZGU0OWJhNWVmODZmOWEyMmZmNS5idW5kbGUubWluLmpzIiA6IDUwID09PSBlID8gInBvcHVwLjQ4M2I5MDZkZGFhMWFmMTdmZjE0LmJ1bmRsZS5taW4uanMiIDogOTg1ID09PSBlID8gImxvYWQtbW9yZS44MGViM2NhZWM3OWE0NDM0N2Q3NC5idW5kbGUubWluLmpzIiA6IDI4NyA9PT0gZSA/ICJwb3N0cy5mYjQ3ZmY1YjlmN2VjYjBhYmE4MC5idW5kbGUubWluLmpzIiA6IDgyNCA9PT0gZSA/ICJwb3J0Zm9saW8uMmZlMTc3ODBlMDcyMzM2NzJlM2IuYnVuZGxlLm1pbi5qcyIgOiA1OCA9PT0gZSA/ICJzaGFyZS1idXR0b25zLjBiZGQ4OGM0NTQ2MmRmYjJiMDczLmJ1bmRsZS5taW4uanMiIDogMTE0ID09PSBlID8gInNsaWRlcy5iM2MzMDEzYWFmNjAyODJjZTQ1Yi5idW5kbGUubWluLmpzIiA6IDQ0MyA9PT0gZSA/ICJzb2NpYWwuMmQyZTQ0ZTg2MDg2OTA5NDNmMjkuYnVuZGxlLm1pbi5qcyIgOiA4MzggPT09IGUgPyAidGFibGUtb2YtY29udGVudHMuNGIyYzAyN2MxYjE0YmM2ODU2YmIuYnVuZGxlLm1pbi5qcyIgOiA2ODUgPT09IGUgPyAiYXJjaGl2ZS1wb3N0cy5hODliNWRjMGViZTBhZjgxMTNjNC5idW5kbGUubWluLmpzIiA6IDg1OCA9PT0gZSA/ICJzZWFyY2gtZm9ybS5hMzk2MzcyZjQwN2QzYzE2YTBlZi5idW5kbGUubWluLmpzIiA6IDEwMiA9PT0gZSA/ICJ3b29jb21tZXJjZS1tZW51LWNhcnQuMWZkZmMxYmRiZDc0MzM2MGEwNTQuYnVuZGxlLm1pbi5qcyIgOiAxID09PSBlID8gIndvb2NvbW1lcmNlLXB1cmNoYXNlLXN1bW1hcnkuOTg2YWJjNmEyOTU2ZmJmNzU0MjkuYnVuZGxlLm1pbi5qcyIgOiAxMjQgPT09IGUgPyAid29vY29tbWVyY2UtY2hlY2tvdXQtcGFnZS5kZTIyYzgzOGJkYTE0NmNhMGE3Ny5idW5kbGUubWluLmpzIiA6IDg1OSA9PT0gZSA/ICJ3b29jb21tZXJjZS1jYXJ0LjZkMmQyNDc2ZjQ5MzA4NTk2MTg2LmJ1bmRsZS5taW4uanMiIDogOTc5ID09PSBlID8gIndvb2NvbW1lcmNlLW15LWFjY291bnQuNmM1YmNhYmE3ODZiZWJlMzEyM2IuYnVuZGxlLm1pbi5qcyIgOiA0OTcgPT09IGUgPyAid29vY29tbWVyY2Utbm90aWNlcy5kYTI3YjIyYzQ5MWY3Y2JlOTE1OC5idW5kbGUubWluLmpzIiA6IHZvaWQgMCwgX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBnbG9iYWxUaGlzKSByZXR1cm4gZ2xvYmFsVGhpczsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiB3aW5kb3cpIHJldHVybiB3aW5kb3cKICAgICAgICB9CiAgICB9KCksIF9fd2VicGFja19yZXF1aXJlX18ubyA9IChlLCByKSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgciksIHIgPSB7fSwgXyA9ICJlbGVtZW50b3ItcHJvOiIsIF9fd2VicGFja19yZXF1aXJlX18ubCA9IChlLCBhLCBjLCBuKSA9PiB7CiAgICAgICAgaWYgKHJbZV0pIHJbZV0ucHVzaChhKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIGksIHQ7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGMpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLCB1ID0gMDsgdSA8IG8ubGVuZ3RoOyB1KyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9bdV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGIuZ2V0QXR0cmlidXRlKCJzcmMiKSA9PSBlIHx8IGIuZ2V0QXR0cmlidXRlKCJkYXRhLXdlYnBhY2siKSA9PSBfICsgYykgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGkgfHwgKHQgPSAhMCwgKGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkuY2hhcnNldCA9ICJ1dGYtOCIsIGkudGltZW91dCA9IDEyMCwgX193ZWJwYWNrX3JlcXVpcmVfXy5uYyAmJiBpLnNldEF0dHJpYnV0ZSgibm9uY2UiLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSwgaS5zZXRBdHRyaWJ1dGUoImRhdGEtd2VicGFjayIsIF8gKyBjKSwgaS5zcmMgPSBlKSwgcltlXSA9IFthXTsKICAgICAgICAgICAgdmFyIG9uU2NyaXB0Q29tcGxldGUgPSAoXywgYSkgPT4gewogICAgICAgICAgICAgICAgICAgIGkub25lcnJvciA9IGkub25sb2FkID0gbnVsbCwgY2xlYXJUaW1lb3V0KGQpOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gcltlXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlIHJbZV0sIGkucGFyZW50Tm9kZSAmJiBpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSksIGMgJiYgYy5mb3JFYWNoKChlID0+IGUoYSkpKSwgXykgcmV0dXJuIF8oYSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgdm9pZCAwLCB7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogInRpbWVvdXQiLAogICAgICAgICAgICAgICAgICAgIHRhcmdldDogaQogICAgICAgICAgICAgICAgfSksIDEyZTQpOwogICAgICAgICAgICBpLm9uZXJyb3IgPSBvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgaS5vbmVycm9yKSwgaS5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgaS5vbmxvYWQpLCB0ICYmIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaSkKICAgICAgICB9CiAgICB9LCAoKCkgPT4gewogICAgICAgIHZhciBlOwogICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzICYmIChlID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgIiIpOwogICAgICAgIHZhciByID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50OwogICAgICAgIGlmICghZSAmJiByICYmIChyLmN1cnJlbnRTY3JpcHQgJiYgKGUgPSByLmN1cnJlbnRTY3JpcHQuc3JjKSwgIWUpKSB7CiAgICAgICAgICAgIHZhciBfID0gci5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7CiAgICAgICAgICAgIF8ubGVuZ3RoICYmIChlID0gX1tfLmxlbmd0aCAtIDFdLnNyYykKICAgICAgICB9CiAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgRXJyb3IoIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyIik7CiAgICAgICAgZSA9IGUucmVwbGFjZSgvIy4qJC8sICIiKS5yZXBsYWNlKC9cPy4qJC8sICIiKS5yZXBsYWNlKC9cL1teXC9dKyQvLCAiLyIpLCBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBlCiAgICB9KSgpLCAoKCkgPT4gewogICAgICAgIHZhciBlID0gewogICAgICAgICAgICAzOTY6IDAKICAgICAgICB9OwogICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uZi5qID0gKHIsIF8pID0+IHsKICAgICAgICAgICAgdmFyIGEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgcikgPyBlW3JdIDogdm9pZCAwOwogICAgICAgICAgICBpZiAoMCAhPT0gYSkKICAgICAgICAgICAgICAgIGlmIChhKSBfLnB1c2goYVsyXSk7CiAgICAgICAgICAgICAgICBlbHNlIGlmICgzOTYgIT0gcikgewogICAgICAgICAgICAgICAgdmFyIGMgPSBuZXcgUHJvbWlzZSgoKF8sIGMpID0+IGEgPSBlW3JdID0gW18sIGNdKSk7CiAgICAgICAgICAgICAgICBfLnB1c2goYVsyXSA9IGMpOwogICAgICAgICAgICAgICAgdmFyIG4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBfX3dlYnBhY2tfcmVxdWlyZV9fLnUociksCiAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyBFcnJvcjsKICAgICAgICAgICAgICAgIF9fd2VicGFja19yZXF1aXJlX18ubChuLCAoXyA9PiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKF9fd2VicGFja19yZXF1aXJlX18ubyhlLCByKSAmJiAoMCAhPT0gKGEgPSBlW3JdKSAmJiAoZVtyXSA9IHZvaWQgMCksIGEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gXyAmJiAoImxvYWQiID09PSBfLnR5cGUgPyAibWlzc2luZyIgOiBfLnR5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IF8gJiYgXy50YXJnZXQgJiYgXy50YXJnZXQuc3JjOwogICAgICAgICAgICAgICAgICAgICAgICBpLm1lc3NhZ2UgPSAiTG9hZGluZyBjaHVuayAiICsgciArICIgZmFpbGVkLlxuKCIgKyBjICsgIjogIiArIG4gKyAiKSIsIGkubmFtZSA9ICJDaHVua0xvYWRFcnJvciIsIGkudHlwZSA9IGMsIGkucmVxdWVzdCA9IG4sIGFbMV0oaSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgImNodW5rLSIgKyByLCByKQogICAgICAgICAgICB9IGVsc2UgZVtyXSA9IDAKICAgICAgICB9LCBfX3dlYnBhY2tfcmVxdWlyZV9fLk8uaiA9IHIgPT4gMCA9PT0gZVtyXTsKICAgICAgICB2YXIgd2VicGFja0pzb25wQ2FsbGJhY2sgPSAociwgXykgPT4gewogICAgICAgICAgICAgICAgdmFyIGEsIGMsIFtuLCBpLCB0XSA9IF8sCiAgICAgICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgICAgICBpZiAobi5zb21lKChyID0+IDAgIT09IGVbcl0pKSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoYSBpbiBpKSBfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaSwgYSkgJiYgKF9fd2VicGFja19yZXF1aXJlX18ubVthXSA9IGlbYV0pOwogICAgICAgICAgICAgICAgICAgIGlmICh0KSB2YXIgdSA9IHQoX193ZWJwYWNrX3JlcXVpcmVfXykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAociAmJiByKF8pOyBvIDwgbi5sZW5ndGg7IG8rKykgYyA9IG5bb10sIF9fd2VicGFja19yZXF1aXJlX18ubyhlLCBjKSAmJiBlW2NdICYmIGVbY11bMF0oKSwgZVtjXSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHIgPSBzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvcl9wcm8gPSBzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvcl9wcm8gfHwgW107CiAgICAgICAgci5mb3JFYWNoKHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgMCkpLCByLnB1c2ggPSB3ZWJwYWNrSnNvbnBDYWxsYmFjay5iaW5kKG51bGwsIHIucHVzaC5iaW5kKHIpKQogICAgfSkoKQp9KSgpOw=="}},"time_used":1205,"timings":{"blocked":1111,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"betaroi.ltd/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.6.2","fqdn":"betaroi.ltd","domain":"betaroi.ltd","tld":"ltd"},"ip":{"addr":"158.69.177.111","port":443,"asn":16276,"as":"OVH SAS","country":"Canada","country_code":"CA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://betaroi.ltd/","date":"2026-07-27T09:44:42.484Z","timestamp":1785145482484,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"betaroi.ltd","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 13:24:00 GMT","end":"Sat, 24 Oct 2026 13:23:59 GMT"},"fingerprint":{"sha1":"C1:36:EE:BD:DD:0C:A9:AD:89:14:6F:3A:EE:93:F6:D8:6D:7E:2B:09","sha256":"29:25:1E:E5:02:0C:37:A0:AE:88:A1:54:AF:14:13:68:5C:49:FA:E8:C7:84:B7:F3:4F:4E:30:E9:E3:6C:34:6C"}}},"request":{"raw":"GET /wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.6.2 HTTP/1.1\r\nHost: betaroi.ltd\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://betaroi.ltd/\r\nCookie: PHPSESSID=em3gljhdi3ebk0s3gsrk3fb5u5\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\r\nDate: Mon, 27 Jul 2026 09:44:43 GMT\r\nContent-Type: text/javascript\r\nContent-Length: 7311\r\nConnection: keep-alive\r\nLast-Modified: Sat, 09 Apr 2022 15:14:06 GMT\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx","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":7311,"size_decoded":7527,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (1023)","md5":"f270b640b60c62430214fa585aea3402","sha1":"3acbe691f67b048ef05103d7174858f312ffede0","sha256":"bac6de6e46ece9f2f8ad4367bb4aa01e671dd68a762142e106e1270d4479f3f9","sha512":"13b6259464f8e23b8f3545cbaaeca57f195c84c326dbb386885bbb5c674fb85c028b86d3689c6bc5e718c50b82b797986413cf37cd0030304ebd0e4bec9d418e","ssdeep":"192:89UgzCPkgCCYqZimk97GaYU45/KL8XRoSRo2CL1Inm/xcMexbee+a:kZePkJI4NFYf5RXRc2Yam2MetPf","tlshash":"1ce104851be27c3721a3b4e996699e34732ec413294aec41fd5c9da45fd1d3087f8ab0","first_seen":"2026-07-27T08:06:56.58023Z","last_seen":"2026-07-27T09:45:50.887004Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvciAtIHYzLjYuMiAtIDA0LTA0LTIwMjIgKi8KKCgpID0+IHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBlLCByLCBfLCB0LCBpLCBhID0ge30sCiAgICAgICAgbiA9IHt9OwoKICAgIGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18oZSkgewogICAgICAgIHZhciByID0gbltlXTsKICAgICAgICBpZiAodm9pZCAwICE9PSByKSByZXR1cm4gci5leHBvcnRzOwogICAgICAgIHZhciBfID0gbltlXSA9IHsKICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICB9OwogICAgICAgIHJldHVybiBhW2VdKF8sIF8uZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyksIF8uZXhwb3J0cwogICAgfQogICAgX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gYSwgZSA9IFtdLCBfX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAociwgXywgdCwgaSkgPT4gewogICAgICAgIGlmICghXykgewogICAgICAgICAgICB2YXIgYSA9IDEgLyAwOwogICAgICAgICAgICBmb3IgKHUgPSAwOyB1IDwgZS5sZW5ndGg7IHUrKykgewogICAgICAgICAgICAgICAgZm9yICh2YXIgW18sIHQsIGldID0gZVt1XSwgbiA9ICEwLCBjID0gMDsgYyA8IF8ubGVuZ3RoOyBjKyspKCExICYgaSB8fCBhID49IGkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGUgPT4gX193ZWJwYWNrX3JlcXVpcmVfXy5PW2VdKF9bY10pKSkgPyBfLnNwbGljZShjLS0sIDEpIDogKG4gPSAhMSwgaSA8IGEgJiYgKGEgPSBpKSk7CiAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgIGUuc3BsaWNlKHUtLSwgMSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0KCk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBvICYmIChyID0gbykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KICAgICAgICBpID0gaSB8fCAwOwogICAgICAgIGZvciAodmFyIHUgPSBlLmxlbmd0aDsgdSA+IDAgJiYgZVt1IC0gMV1bMl0gPiBpOyB1LS0pIGVbdV0gPSBlW3UgLSAxXTsKICAgICAgICBlW3VdID0gW18sIHQsIGldCiAgICB9LCBfID0gT2JqZWN0LmdldFByb3RvdHlwZU9mID8gZSA9PiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkgOiBlID0+IGUuX19wcm90b19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgaWYgKDEgJiB0ICYmIChlID0gdGhpcyhlKSksIDggJiB0KSByZXR1cm4gZTsKICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgZSkgewogICAgICAgICAgICBpZiAoNCAmIHQgJiYgZS5fX2VzTW9kdWxlKSByZXR1cm4gZTsKICAgICAgICAgICAgaWYgKDE2ICYgdCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnRoZW4pIHJldHVybiBlCiAgICAgICAgfQogICAgICAgIHZhciBpID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLnIoaSk7CiAgICAgICAgdmFyIGEgPSB7fTsKICAgICAgICByID0gciB8fCBbbnVsbCwgXyh7fSksIF8oW10pLCBfKF8pXTsKICAgICAgICBmb3IgKHZhciBuID0gMiAmIHQgJiYgZTsKICAgICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIG4gJiYgIX5yLmluZGV4T2Yobik7IG4gPSBfKG4pKSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKS5mb3JFYWNoKChyID0+IGFbcl0gPSAoKSA9PiBlW3JdKSk7CiAgICAgICAgcmV0dXJuIGEuZGVmYXVsdCA9ICgpID0+IGUsIF9fd2VicGFja19yZXF1aXJlX18uZChpLCBhKSwgaQogICAgfSwgX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGUsIHIpID0+IHsKICAgICAgICBmb3IgKHZhciBfIGluIHIpIF9fd2VicGFja19yZXF1aXJlX18ubyhyLCBfKSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsIF8pICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBfLCB7CiAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IHJbX10KICAgICAgICB9KQogICAgfSwgX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge30sIF9fd2VicGFja19yZXF1aXJlX18uZSA9IGUgPT4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5mKS5yZWR1Y2UoKChyLCBfKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5mW19dKGUsIHIpLCByKSksIFtdKSksIF9fd2VicGFja19yZXF1aXJlX18udSA9IGUgPT4gNzIzID09PSBlID8gImxpZ2h0Ym94LjJiMmMxNTVkNmVjNjA5NzRkOGM0LmJ1bmRsZS5taW4uanMiIDogNDggPT09IGUgPyAidGV4dC1wYXRoLjlmMThlYmRlYTVhYzAwZDY1M2U1LmJ1bmRsZS5taW4uanMiIDogMjA5ID09PSBlID8gImFjY29yZGlvbi4xODQwNDAzY2U4MWRlNDA4Yzc0OS5idW5kbGUubWluLmpzIiA6IDc0NSA9PT0gZSA/ICJhbGVydC5jYmMyYTBmZWU3NGVlM2VkMDQxOS5idW5kbGUubWluLmpzIiA6IDEyMCA9PT0gZSA/ICJjb3VudGVyLjAyY2VmMjljNTg5ZTc0MmQ0YzhjLmJ1bmRsZS5taW4uanMiIDogMTkyID09PSBlID8gInByb2dyZXNzLmNhNTVkMzNiYjA2Y2VlNGU2ZjAyLmJ1bmRsZS5taW4uanMiIDogNTIwID09PSBlID8gInRhYnMuMzdkNWI0ODc3Y2RiNTFlYTkxZTkuYnVuZGxlLm1pbi5qcyIgOiAxODEgPT09IGUgPyAidG9nZ2xlLjU2ZjhhY2U0YjFlODMwYzAyZmM1LmJ1bmRsZS5taW4uanMiIDogNzkxID09PSBlID8gInZpZGVvLmQ4NmJmZDA2NzYyNjQ5NDVlOTY4LmJ1bmRsZS5taW4uanMiIDogMjY4ID09PSBlID8gImltYWdlLWNhcm91c2VsLmRiMjg0YjA5YzBmOGE4ZjFjNDRkLmJ1bmRsZS5taW4uanMiIDogMzU3ID09PSBlID8gInRleHQtZWRpdG9yLjI4OWFlODBkNzZmMGM1YWJlYTQ0LmJ1bmRsZS5taW4uanMiIDogNTIgPT09IGUgPyAid3AtYXVkaW8uNzVmMGNlZDE0M2ZlYmI4Y2QzMWEuYnVuZGxlLm1pbi5qcyIgOiA0MTMgPT09IGUgPyAiY29udGFpbmVyLmUwMjZiMTZhOTlkYjhhMzk4N2M5LmJ1bmRsZS5taW4uanMiIDogdm9pZCAwLCBfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGdsb2JhbFRoaXMpIHJldHVybiBnbG9iYWxUaGlzOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpCiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdykgcmV0dXJuIHdpbmRvdwogICAgICAgIH0KICAgIH0oKSwgX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKGUsIHIpID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCByKSwgdCA9IHt9LCBpID0gImVsZW1lbnRvcjoiLCBfX3dlYnBhY2tfcmVxdWlyZV9fLmwgPSAoZSwgciwgXywgYSkgPT4gewogICAgICAgIGlmICh0W2VdKSB0W2VdLnB1c2gocik7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBuLCBjOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBfKQogICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSwgdSA9IDA7IHUgPCBvLmxlbmd0aDsgdSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBvW3VdOwogICAgICAgICAgICAgICAgICAgIGlmIChiLmdldEF0dHJpYnV0ZSgic3JjIikgPT0gZSB8fCBiLmdldEF0dHJpYnV0ZSgiZGF0YS13ZWJwYWNrIikgPT0gaSArIF8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBuIHx8IChjID0gITAsIChuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpLmNoYXJzZXQgPSAidXRmLTgiLCBuLnRpbWVvdXQgPSAxMjAsIF9fd2VicGFja19yZXF1aXJlX18ubmMgJiYgbi5zZXRBdHRyaWJ1dGUoIm5vbmNlIiwgX193ZWJwYWNrX3JlcXVpcmVfXy5uYyksIG4uc2V0QXR0cmlidXRlKCJkYXRhLXdlYnBhY2siLCBpICsgXyksIG4uc3JjID0gZSksIHRbZV0gPSBbcl07CiAgICAgICAgICAgIHZhciBvblNjcmlwdENvbXBsZXRlID0gKHIsIF8pID0+IHsKICAgICAgICAgICAgICAgICAgICBuLm9uZXJyb3IgPSBuLm9ubG9hZCA9IG51bGwsIGNsZWFyVGltZW91dChwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRbZV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGV0ZSB0W2VdLCBuLnBhcmVudE5vZGUgJiYgbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLCBpICYmIGkuZm9yRWFjaCgoZSA9PiBlKF8pKSksIHIpIHJldHVybiByKF8pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcCA9IHNldFRpbWVvdXQob25TY3JpcHRDb21wbGV0ZS5iaW5kKG51bGwsIHZvaWQgMCwgewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJ0aW1lb3V0IiwKICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IG4KICAgICAgICAgICAgICAgIH0pLCAxMmU0KTsKICAgICAgICAgICAgbi5vbmVycm9yID0gb25TY3JpcHRDb21wbGV0ZS5iaW5kKG51bGwsIG4ub25lcnJvciksIG4ub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZS5iaW5kKG51bGwsIG4ub25sb2FkKSwgYyAmJiBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG4pCiAgICAgICAgfQogICAgfSwgX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZSA9PiB7CiAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBTeW1ib2wudG9TdHJpbmdUYWcgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFN5bWJvbC50b1N0cmluZ1RhZywgewogICAgICAgICAgICB2YWx1ZTogIk1vZHVsZSIKICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KQogICAgfSwgKCgpID0+IHsKICAgICAgICB2YXIgZTsKICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cyAmJiAoZSA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArICIiKTsKICAgICAgICB2YXIgciA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDsKICAgICAgICBpZiAoIWUgJiYgciAmJiAoci5jdXJyZW50U2NyaXB0ICYmIChlID0gci5jdXJyZW50U2NyaXB0LnNyYyksICFlKSkgewogICAgICAgICAgICB2YXIgXyA9IHIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpOwogICAgICAgICAgICBfLmxlbmd0aCAmJiAoZSA9IF9bXy5sZW5ndGggLSAxXS5zcmMpCiAgICAgICAgfQogICAgICAgIGlmICghZSkgdGhyb3cgbmV3IEVycm9yKCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlciIpOwogICAgICAgIGUgPSBlLnJlcGxhY2UoLyMuKiQvLCAiIikucmVwbGFjZSgvXD8uKiQvLCAiIikucmVwbGFjZSgvXC9bXlwvXSskLywgIi8iKSwgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gZQogICAgfSkoKSwgKCgpID0+IHsKICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgMTYyOiAwCiAgICAgICAgfTsKICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmYuaiA9IChyLCBfKSA9PiB7CiAgICAgICAgICAgIHZhciB0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsIHIpID8gZVtyXSA6IHZvaWQgMDsKICAgICAgICAgICAgaWYgKDAgIT09IHQpCiAgICAgICAgICAgICAgICBpZiAodCkgXy5wdXNoKHRbMl0pOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoMTYyICE9IHIpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gbmV3IFByb21pc2UoKChfLCBpKSA9PiB0ID0gZVtyXSA9IFtfLCBpXSkpOwogICAgICAgICAgICAgICAgXy5wdXNoKHRbMl0gPSBpKTsKICAgICAgICAgICAgICAgIHZhciBhID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KHIpLAogICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgRXJyb3I7CiAgICAgICAgICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmwoYSwgKF8gPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgcikgJiYgKDAgIT09ICh0ID0gZVtyXSkgJiYgKGVbcl0gPSB2b2lkIDApLCB0KSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IF8gJiYgKCJsb2FkIiA9PT0gXy50eXBlID8gIm1pc3NpbmciIDogXy50eXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBfICYmIF8udGFyZ2V0ICYmIF8udGFyZ2V0LnNyYzsKICAgICAgICAgICAgICAgICAgICAgICAgbi5tZXNzYWdlID0gIkxvYWRpbmcgY2h1bmsgIiArIHIgKyAiIGZhaWxlZC5cbigiICsgaSArICI6ICIgKyBhICsgIikiLCBuLm5hbWUgPSAiQ2h1bmtMb2FkRXJyb3IiLCBuLnR5cGUgPSBpLCBuLnJlcXVlc3QgPSBhLCB0WzFdKG4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksICJjaHVuay0iICsgciwgcikKICAgICAgICAgICAgfSBlbHNlIGVbcl0gPSAwCiAgICAgICAgfSwgX193ZWJwYWNrX3JlcXVpcmVfXy5PLmogPSByID0+IDAgPT09IGVbcl07CiAgICAgICAgdmFyIHdlYnBhY2tKc29ucENhbGxiYWNrID0gKHIsIF8pID0+IHsKICAgICAgICAgICAgICAgIHZhciB0LCBpLCBbYSwgbiwgY10gPSBfLAogICAgICAgICAgICAgICAgICAgIG8gPSAwOwogICAgICAgICAgICAgICAgaWYgKGEuc29tZSgociA9PiAwICE9PSBlW3JdKSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gbikgX193ZWJwYWNrX3JlcXVpcmVfXy5vKG4sIHQpICYmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm1bdF0gPSBuW3RdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYykgdmFyIHUgPSBjKF9fd2VicGFja19yZXF1aXJlX18pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHIgJiYgcihfKTsgbyA8IGEubGVuZ3RoOyBvKyspIGkgPSBhW29dLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgaSkgJiYgZVtpXSAmJiBlW2ldWzBdKCksIGVbYVtvXV0gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uTyh1KQogICAgICAgICAgICB9LAogICAgICAgICAgICByID0gc2VsZi53ZWJwYWNrQ2h1bmtlbGVtZW50b3IgPSBzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvciB8fCBbXTsKICAgICAgICByLmZvckVhY2god2VicGFja0pzb25wQ2FsbGJhY2suYmluZChudWxsLCAwKSksIHIucHVzaCA9IHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgci5wdXNoLmJpbmQocikpCiAgICB9KSgpCn0pKCk7"}},"time_used":1212,"timings":{"blocked":1118,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"betaroi.ltd","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}}]}
